diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..1945afa4 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +coscli.* \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 00000000..2722552e --- /dev/null +++ b/index.html @@ -0,0 +1,26 @@ + + + + + Vant - Mobile UI Components + + + + + + + + + + + + +
+ + + diff --git a/playground/assets/editor.worker-GwjmF-eZ-90JFiUm3.js b/playground/assets/editor.worker-GwjmF-eZ-90JFiUm3.js new file mode 100644 index 00000000..4e8953e3 --- /dev/null +++ b/playground/assets/editor.worker-GwjmF-eZ-90JFiUm3.js @@ -0,0 +1,13213 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +// Avoid circular dependency on EventEmitter by implementing a subset of the interface. +class ErrorHandler { + constructor() { + this.listeners = []; + this.unexpectedErrorHandler = function (e) { + setTimeout(() => { + if (e.stack) { + if (ErrorNoTelemetry.isErrorNoTelemetry(e)) { + throw new ErrorNoTelemetry(e.message + '\n\n' + e.stack); + } + throw new Error(e.message + '\n\n' + e.stack); + } + throw e; + }, 0); + }; + } + emit(e) { + this.listeners.forEach((listener) => { + listener(e); + }); + } + onUnexpectedError(e) { + this.unexpectedErrorHandler(e); + this.emit(e); + } + // For external errors, we don't want the listeners to be called + onUnexpectedExternalError(e) { + this.unexpectedErrorHandler(e); + } +} +const errorHandler = new ErrorHandler(); +function onUnexpectedError(e) { + // ignore errors from cancelled promises + if (!isCancellationError(e)) { + errorHandler.onUnexpectedError(e); + } + return undefined; +} +function transformErrorForSerialization(error) { + if (error instanceof Error) { + const { name, message } = error; + const stack = error.stacktrace || error.stack; + return { + $isError: true, + name, + message, + stack, + noTelemetry: ErrorNoTelemetry.isErrorNoTelemetry(error) + }; + } + // return as is + return error; +} +const canceledName = 'Canceled'; +/** + * Checks if the given error is a promise in canceled state + */ +function isCancellationError(error) { + if (error instanceof CancellationError) { + return true; + } + return error instanceof Error && error.name === canceledName && error.message === canceledName; +} +// !!!IMPORTANT!!! +// Do NOT change this class because it is also used as an API-type. +class CancellationError extends Error { + constructor() { + super(canceledName); + this.name = this.message; + } +} +/** + * Error that when thrown won't be logged in telemetry as an unhandled error. + */ +class ErrorNoTelemetry extends Error { + constructor(msg) { + super(msg); + this.name = 'CodeExpectedError'; + } + static fromError(err) { + if (err instanceof ErrorNoTelemetry) { + return err; + } + const result = new ErrorNoTelemetry(); + result.message = err.message; + result.stack = err.stack; + return result; + } + static isErrorNoTelemetry(err) { + return err.name === 'CodeExpectedError'; + } +} +/** + * This error indicates a bug. + * Do not throw this for invalid user input. + * Only catch this error to recover gracefully from bugs. + */ +class BugIndicatingError extends Error { + constructor(message) { + super(message || 'An unexpected bug occurred.'); + Object.setPrototypeOf(this, BugIndicatingError.prototype); + // Because we know for sure only buggy code throws this, + // we definitely want to break here and fix the bug. + // eslint-disable-next-line no-debugger + // debugger; + } +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +/** + * Given a function, returns a function that is only calling that function once. + */ +function createSingleCallFunction(fn, fnDidRunCallback) { + const _this = this; + let didCall = false; + let result; + return function () { + if (didCall) { + return result; + } + didCall = true; + if (fnDidRunCallback) { + try { + result = fn.apply(_this, arguments); + } + finally { + fnDidRunCallback(); + } + } + else { + result = fn.apply(_this, arguments); + } + return result; + }; +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +var Iterable; +(function (Iterable) { + function is(thing) { + return thing && typeof thing === 'object' && typeof thing[Symbol.iterator] === 'function'; + } + Iterable.is = is; + const _empty = Object.freeze([]); + function empty() { + return _empty; + } + Iterable.empty = empty; + function* single(element) { + yield element; + } + Iterable.single = single; + function wrap(iterableOrElement) { + if (is(iterableOrElement)) { + return iterableOrElement; + } + else { + return single(iterableOrElement); + } + } + Iterable.wrap = wrap; + function from(iterable) { + return iterable || _empty; + } + Iterable.from = from; + function* reverse(array) { + for (let i = array.length - 1; i >= 0; i--) { + yield array[i]; + } + } + Iterable.reverse = reverse; + function isEmpty(iterable) { + return !iterable || iterable[Symbol.iterator]().next().done === true; + } + Iterable.isEmpty = isEmpty; + function first(iterable) { + return iterable[Symbol.iterator]().next().value; + } + Iterable.first = first; + function some(iterable, predicate) { + for (const element of iterable) { + if (predicate(element)) { + return true; + } + } + return false; + } + Iterable.some = some; + function find(iterable, predicate) { + for (const element of iterable) { + if (predicate(element)) { + return element; + } + } + return undefined; + } + Iterable.find = find; + function* filter(iterable, predicate) { + for (const element of iterable) { + if (predicate(element)) { + yield element; + } + } + } + Iterable.filter = filter; + function* map(iterable, fn) { + let index = 0; + for (const element of iterable) { + yield fn(element, index++); + } + } + Iterable.map = map; + function* concat(...iterables) { + for (const iterable of iterables) { + yield* iterable; + } + } + Iterable.concat = concat; + function reduce(iterable, reducer, initialValue) { + let value = initialValue; + for (const element of iterable) { + value = reducer(value, element); + } + return value; + } + Iterable.reduce = reduce; + /** + * Returns an iterable slice of the array, with the same semantics as `array.slice()`. + */ + function* slice(arr, from, to = arr.length) { + if (from < 0) { + from += arr.length; + } + if (to < 0) { + to += arr.length; + } + else if (to > arr.length) { + to = arr.length; + } + for (; from < to; from++) { + yield arr[from]; + } + } + Iterable.slice = slice; + /** + * Consumes `atMost` elements from iterable and returns the consumed elements, + * and an iterable for the rest of the elements. + */ + function consume(iterable, atMost = Number.POSITIVE_INFINITY) { + const consumed = []; + if (atMost === 0) { + return [consumed, iterable]; + } + const iterator = iterable[Symbol.iterator](); + for (let i = 0; i < atMost; i++) { + const next = iterator.next(); + if (next.done) { + return [consumed, Iterable.empty()]; + } + consumed.push(next.value); + } + return [consumed, { [Symbol.iterator]() { return iterator; } }]; + } + Iterable.consume = consume; +})(Iterable || (Iterable = {})); + +function trackDisposable(x) { + return x; +} +function setParentOfDisposable(child, parent) { +} +function dispose(arg) { + if (Iterable.is(arg)) { + const errors = []; + for (const d of arg) { + if (d) { + try { + d.dispose(); + } + catch (e) { + errors.push(e); + } + } + } + if (errors.length === 1) { + throw errors[0]; + } + else if (errors.length > 1) { + throw new AggregateError(errors, 'Encountered errors while disposing of store'); + } + return Array.isArray(arg) ? [] : arg; + } + else if (arg) { + arg.dispose(); + return arg; + } +} +/** + * Combine multiple disposable values into a single {@link IDisposable}. + */ +function combinedDisposable(...disposables) { + const parent = toDisposable(() => dispose(disposables)); + return parent; +} +/** + * Turn a function that implements dispose into an {@link IDisposable}. + * + * @param fn Clean up function, guaranteed to be called only **once**. + */ +function toDisposable(fn) { + const self = trackDisposable({ + dispose: createSingleCallFunction(() => { + fn(); + }) + }); + return self; +} +/** + * Manages a collection of disposable values. + * + * This is the preferred way to manage multiple disposables. A `DisposableStore` is safer to work with than an + * `IDisposable[]` as it considers edge cases, such as registering the same value multiple times or adding an item to a + * store that has already been disposed of. + */ +class DisposableStore { + constructor() { + this._toDispose = new Set(); + this._isDisposed = false; + } + /** + * Dispose of all registered disposables and mark this object as disposed. + * + * Any future disposables added to this object will be disposed of on `add`. + */ + dispose() { + if (this._isDisposed) { + return; + } + this._isDisposed = true; + this.clear(); + } + /** + * @return `true` if this object has been disposed of. + */ + get isDisposed() { + return this._isDisposed; + } + /** + * Dispose of all registered disposables but do not mark this object as disposed. + */ + clear() { + if (this._toDispose.size === 0) { + return; + } + try { + dispose(this._toDispose); + } + finally { + this._toDispose.clear(); + } + } + /** + * Add a new {@link IDisposable disposable} to the collection. + */ + add(o) { + if (!o) { + return o; + } + if (o === this) { + throw new Error('Cannot register a disposable on itself!'); + } + if (this._isDisposed) { + if (!DisposableStore.DISABLE_DISPOSED_WARNING) { + console.warn(new Error('Trying to add a disposable to a DisposableStore that has already been disposed of. The added object will be leaked!').stack); + } + } + else { + this._toDispose.add(o); + } + return o; + } + /** + * Deletes the value from the store, but does not dispose it. + */ + deleteAndLeak(o) { + if (!o) { + return; + } + if (this._toDispose.has(o)) { + this._toDispose.delete(o); + } + } +} +DisposableStore.DISABLE_DISPOSED_WARNING = false; +/** + * Abstract base class for a {@link IDisposable disposable} object. + * + * Subclasses can {@linkcode _register} disposables that will be automatically cleaned up when this object is disposed of. + */ +class Disposable { + constructor() { + this._store = new DisposableStore(); + setParentOfDisposable(this._store); + } + dispose() { + this._store.dispose(); + } + /** + * Adds `o` to the collection of disposables managed by this object. + */ + _register(o) { + if (o === this) { + throw new Error('Cannot register a disposable on itself!'); + } + return this._store.add(o); + } +} +/** + * A disposable that does nothing when it is disposed of. + * + * TODO: This should not be a static property. + */ +Disposable.None = Object.freeze({ dispose() { } }); + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +class Node { + constructor(element) { + this.element = element; + this.next = Node.Undefined; + this.prev = Node.Undefined; + } +} +Node.Undefined = new Node(undefined); +class LinkedList { + constructor() { + this._first = Node.Undefined; + this._last = Node.Undefined; + this._size = 0; + } + get size() { + return this._size; + } + isEmpty() { + return this._first === Node.Undefined; + } + clear() { + let node = this._first; + while (node !== Node.Undefined) { + const next = node.next; + node.prev = Node.Undefined; + node.next = Node.Undefined; + node = next; + } + this._first = Node.Undefined; + this._last = Node.Undefined; + this._size = 0; + } + unshift(element) { + return this._insert(element, false); + } + push(element) { + return this._insert(element, true); + } + _insert(element, atTheEnd) { + const newNode = new Node(element); + if (this._first === Node.Undefined) { + this._first = newNode; + this._last = newNode; + } + else if (atTheEnd) { + // push + const oldLast = this._last; + this._last = newNode; + newNode.prev = oldLast; + oldLast.next = newNode; + } + else { + // unshift + const oldFirst = this._first; + this._first = newNode; + newNode.next = oldFirst; + oldFirst.prev = newNode; + } + this._size += 1; + let didRemove = false; + return () => { + if (!didRemove) { + didRemove = true; + this._remove(newNode); + } + }; + } + shift() { + if (this._first === Node.Undefined) { + return undefined; + } + else { + const res = this._first.element; + this._remove(this._first); + return res; + } + } + pop() { + if (this._last === Node.Undefined) { + return undefined; + } + else { + const res = this._last.element; + this._remove(this._last); + return res; + } + } + _remove(node) { + if (node.prev !== Node.Undefined && node.next !== Node.Undefined) { + // middle + const anchor = node.prev; + anchor.next = node.next; + node.next.prev = anchor; + } + else if (node.prev === Node.Undefined && node.next === Node.Undefined) { + // only node + this._first = Node.Undefined; + this._last = Node.Undefined; + } + else if (node.next === Node.Undefined) { + // last + this._last = this._last.prev; + this._last.next = Node.Undefined; + } + else if (node.prev === Node.Undefined) { + // first + this._first = this._first.next; + this._first.prev = Node.Undefined; + } + // done + this._size -= 1; + } + *[Symbol.iterator]() { + let node = this._first; + while (node !== Node.Undefined) { + yield node.element; + node = node.next; + } + } +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +const hasPerformanceNow = (globalThis.performance && typeof globalThis.performance.now === 'function'); +class StopWatch { + static create(highResolution) { + return new StopWatch(highResolution); + } + constructor(highResolution) { + this._now = hasPerformanceNow && highResolution === false ? Date.now : globalThis.performance.now.bind(globalThis.performance); + this._startTime = this._now(); + this._stopTime = -1; + } + stop() { + this._stopTime = this._now(); + } + elapsed() { + if (this._stopTime !== -1) { + return this._stopTime - this._startTime; + } + return this._now() - this._startTime; + } +} + +var Event; +(function (Event) { + Event.None = () => Disposable.None; + /** + * Given an event, returns another event which debounces calls and defers the listeners to a later task via a shared + * `setTimeout`. The event is converted into a signal (`Event`) to avoid additional object creation as a + * result of merging events and to try prevent race conditions that could arise when using related deferred and + * non-deferred events. + * + * This is useful for deferring non-critical work (eg. general UI updates) to ensure it does not block critical work + * (eg. latency of keypress to text rendered). + * + * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned + * event is accessible to "third parties", e.g the event is a public property. Otherwise a leaked listener on the + * returned event causes this utility to leak a listener on the original event. + * + * @param event The event source for the new event. + * @param disposable A disposable store to add the new EventEmitter to. + */ + function defer(event, disposable) { + return debounce(event, () => void 0, 0, undefined, true, undefined, disposable); + } + Event.defer = defer; + /** + * Given an event, returns another event which only fires once. + * + * @param event The event source for the new event. + */ + function once(event) { + return (listener, thisArgs = null, disposables) => { + // we need this, in case the event fires during the listener call + let didFire = false; + let result = undefined; + result = event(e => { + if (didFire) { + return; + } + else if (result) { + result.dispose(); + } + else { + didFire = true; + } + return listener.call(thisArgs, e); + }, null, disposables); + if (didFire) { + result.dispose(); + } + return result; + }; + } + Event.once = once; + /** + * Maps an event of one type into an event of another type using a mapping function, similar to how + * `Array.prototype.map` works. + * + * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned + * event is accessible to "third parties", e.g the event is a public property. Otherwise a leaked listener on the + * returned event causes this utility to leak a listener on the original event. + * + * @param event The event source for the new event. + * @param map The mapping function. + * @param disposable A disposable store to add the new EventEmitter to. + */ + function map(event, map, disposable) { + return snapshot((listener, thisArgs = null, disposables) => event(i => listener.call(thisArgs, map(i)), null, disposables), disposable); + } + Event.map = map; + /** + * Wraps an event in another event that performs some function on the event object before firing. + * + * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned + * event is accessible to "third parties", e.g the event is a public property. Otherwise a leaked listener on the + * returned event causes this utility to leak a listener on the original event. + * + * @param event The event source for the new event. + * @param each The function to perform on the event object. + * @param disposable A disposable store to add the new EventEmitter to. + */ + function forEach(event, each, disposable) { + return snapshot((listener, thisArgs = null, disposables) => event(i => { each(i); listener.call(thisArgs, i); }, null, disposables), disposable); + } + Event.forEach = forEach; + function filter(event, filter, disposable) { + return snapshot((listener, thisArgs = null, disposables) => event(e => filter(e) && listener.call(thisArgs, e), null, disposables), disposable); + } + Event.filter = filter; + /** + * Given an event, returns the same event but typed as `Event`. + */ + function signal(event) { + return event; + } + Event.signal = signal; + function any(...events) { + return (listener, thisArgs = null, disposables) => { + const disposable = combinedDisposable(...events.map(event => event(e => listener.call(thisArgs, e)))); + return addAndReturnDisposable(disposable, disposables); + }; + } + Event.any = any; + /** + * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned + * event is accessible to "third parties", e.g the event is a public property. Otherwise a leaked listener on the + * returned event causes this utility to leak a listener on the original event. + */ + function reduce(event, merge, initial, disposable) { + let output = initial; + return map(event, e => { + output = merge(output, e); + return output; + }, disposable); + } + Event.reduce = reduce; + function snapshot(event, disposable) { + let listener; + const options = { + onWillAddFirstListener() { + listener = event(emitter.fire, emitter); + }, + onDidRemoveLastListener() { + listener === null || listener === void 0 ? void 0 : listener.dispose(); + } + }; + const emitter = new Emitter(options); + disposable === null || disposable === void 0 ? void 0 : disposable.add(emitter); + return emitter.event; + } + /** + * Adds the IDisposable to the store if it's set, and returns it. Useful to + * Event function implementation. + */ + function addAndReturnDisposable(d, store) { + if (store instanceof Array) { + store.push(d); + } + else if (store) { + store.add(d); + } + return d; + } + function debounce(event, merge, delay = 100, leading = false, flushOnListenerRemove = false, leakWarningThreshold, disposable) { + let subscription; + let output = undefined; + let handle = undefined; + let numDebouncedCalls = 0; + let doFire; + const options = { + leakWarningThreshold, + onWillAddFirstListener() { + subscription = event(cur => { + numDebouncedCalls++; + output = merge(output, cur); + if (leading && !handle) { + emitter.fire(output); + output = undefined; + } + doFire = () => { + const _output = output; + output = undefined; + handle = undefined; + if (!leading || numDebouncedCalls > 1) { + emitter.fire(_output); + } + numDebouncedCalls = 0; + }; + if (typeof delay === 'number') { + clearTimeout(handle); + handle = setTimeout(doFire, delay); + } + else { + if (handle === undefined) { + handle = 0; + queueMicrotask(doFire); + } + } + }); + }, + onWillRemoveListener() { + if (flushOnListenerRemove && numDebouncedCalls > 0) { + doFire === null || doFire === void 0 ? void 0 : doFire(); + } + }, + onDidRemoveLastListener() { + doFire = undefined; + subscription.dispose(); + } + }; + const emitter = new Emitter(options); + disposable === null || disposable === void 0 ? void 0 : disposable.add(emitter); + return emitter.event; + } + Event.debounce = debounce; + /** + * Debounces an event, firing after some delay (default=0) with an array of all event original objects. + * + * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned + * event is accessible to "third parties", e.g the event is a public property. Otherwise a leaked listener on the + * returned event causes this utility to leak a listener on the original event. + */ + function accumulate(event, delay = 0, disposable) { + return Event.debounce(event, (last, e) => { + if (!last) { + return [e]; + } + last.push(e); + return last; + }, delay, undefined, true, undefined, disposable); + } + Event.accumulate = accumulate; + /** + * Filters an event such that some condition is _not_ met more than once in a row, effectively ensuring duplicate + * event objects from different sources do not fire the same event object. + * + * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned + * event is accessible to "third parties", e.g the event is a public property. Otherwise a leaked listener on the + * returned event causes this utility to leak a listener on the original event. + * + * @param event The event source for the new event. + * @param equals The equality condition. + * @param disposable A disposable store to add the new EventEmitter to. + * + * @example + * ``` + * // Fire only one time when a single window is opened or focused + * Event.latch(Event.any(onDidOpenWindow, onDidFocusWindow)) + * ``` + */ + function latch(event, equals = (a, b) => a === b, disposable) { + let firstCall = true; + let cache; + return filter(event, value => { + const shouldEmit = firstCall || !equals(value, cache); + firstCall = false; + cache = value; + return shouldEmit; + }, disposable); + } + Event.latch = latch; + /** + * Splits an event whose parameter is a union type into 2 separate events for each type in the union. + * + * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned + * event is accessible to "third parties", e.g the event is a public property. Otherwise a leaked listener on the + * returned event causes this utility to leak a listener on the original event. + * + * @example + * ``` + * const event = new EventEmitter().event; + * const [numberEvent, undefinedEvent] = Event.split(event, isUndefined); + * ``` + * + * @param event The event source for the new event. + * @param isT A function that determines what event is of the first type. + * @param disposable A disposable store to add the new EventEmitter to. + */ + function split(event, isT, disposable) { + return [ + Event.filter(event, isT, disposable), + Event.filter(event, e => !isT(e), disposable), + ]; + } + Event.split = split; + /** + * Buffers an event until it has a listener attached. + * + * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned + * event is accessible to "third parties", e.g the event is a public property. Otherwise a leaked listener on the + * returned event causes this utility to leak a listener on the original event. + * + * @param event The event source for the new event. + * @param flushAfterTimeout Determines whether to flush the buffer after a timeout immediately or after a + * `setTimeout` when the first event listener is added. + * @param _buffer Internal: A source event array used for tests. + * + * @example + * ``` + * // Start accumulating events, when the first listener is attached, flush + * // the event after a timeout such that multiple listeners attached before + * // the timeout would receive the event + * this.onInstallExtension = Event.buffer(service.onInstallExtension, true); + * ``` + */ + function buffer(event, flushAfterTimeout = false, _buffer = [], disposable) { + let buffer = _buffer.slice(); + let listener = event(e => { + if (buffer) { + buffer.push(e); + } + else { + emitter.fire(e); + } + }); + if (disposable) { + disposable.add(listener); + } + const flush = () => { + buffer === null || buffer === void 0 ? void 0 : buffer.forEach(e => emitter.fire(e)); + buffer = null; + }; + const emitter = new Emitter({ + onWillAddFirstListener() { + if (!listener) { + listener = event(e => emitter.fire(e)); + if (disposable) { + disposable.add(listener); + } + } + }, + onDidAddFirstListener() { + if (buffer) { + if (flushAfterTimeout) { + setTimeout(flush); + } + else { + flush(); + } + } + }, + onDidRemoveLastListener() { + if (listener) { + listener.dispose(); + } + listener = null; + } + }); + if (disposable) { + disposable.add(emitter); + } + return emitter.event; + } + Event.buffer = buffer; + /** + * Wraps the event in an {@link IChainableEvent}, allowing a more functional programming style. + * + * @example + * ``` + * // Normal + * const onEnterPressNormal = Event.filter( + * Event.map(onKeyPress.event, e => new StandardKeyboardEvent(e)), + * e.keyCode === KeyCode.Enter + * ).event; + * + * // Using chain + * const onEnterPressChain = Event.chain(onKeyPress.event, $ => $ + * .map(e => new StandardKeyboardEvent(e)) + * .filter(e => e.keyCode === KeyCode.Enter) + * ); + * ``` + */ + function chain(event, sythensize) { + const fn = (listener, thisArgs, disposables) => { + const cs = sythensize(new ChainableSynthesis()); + return event(function (value) { + const result = cs.evaluate(value); + if (result !== HaltChainable) { + listener.call(thisArgs, result); + } + }, undefined, disposables); + }; + return fn; + } + Event.chain = chain; + const HaltChainable = Symbol('HaltChainable'); + class ChainableSynthesis { + constructor() { + this.steps = []; + } + map(fn) { + this.steps.push(fn); + return this; + } + forEach(fn) { + this.steps.push(v => { + fn(v); + return v; + }); + return this; + } + filter(fn) { + this.steps.push(v => fn(v) ? v : HaltChainable); + return this; + } + reduce(merge, initial) { + let last = initial; + this.steps.push(v => { + last = merge(last, v); + return last; + }); + return this; + } + latch(equals = (a, b) => a === b) { + let firstCall = true; + let cache; + this.steps.push(value => { + const shouldEmit = firstCall || !equals(value, cache); + firstCall = false; + cache = value; + return shouldEmit ? value : HaltChainable; + }); + return this; + } + evaluate(value) { + for (const step of this.steps) { + value = step(value); + if (value === HaltChainable) { + break; + } + } + return value; + } + } + /** + * Creates an {@link Event} from a node event emitter. + */ + function fromNodeEventEmitter(emitter, eventName, map = id => id) { + const fn = (...args) => result.fire(map(...args)); + const onFirstListenerAdd = () => emitter.on(eventName, fn); + const onLastListenerRemove = () => emitter.removeListener(eventName, fn); + const result = new Emitter({ onWillAddFirstListener: onFirstListenerAdd, onDidRemoveLastListener: onLastListenerRemove }); + return result.event; + } + Event.fromNodeEventEmitter = fromNodeEventEmitter; + /** + * Creates an {@link Event} from a DOM event emitter. + */ + function fromDOMEventEmitter(emitter, eventName, map = id => id) { + const fn = (...args) => result.fire(map(...args)); + const onFirstListenerAdd = () => emitter.addEventListener(eventName, fn); + const onLastListenerRemove = () => emitter.removeEventListener(eventName, fn); + const result = new Emitter({ onWillAddFirstListener: onFirstListenerAdd, onDidRemoveLastListener: onLastListenerRemove }); + return result.event; + } + Event.fromDOMEventEmitter = fromDOMEventEmitter; + /** + * Creates a promise out of an event, using the {@link Event.once} helper. + */ + function toPromise(event) { + return new Promise(resolve => once(event)(resolve)); + } + Event.toPromise = toPromise; + /** + * Creates an event out of a promise that fires once when the promise is + * resolved with the result of the promise or `undefined`. + */ + function fromPromise(promise) { + const result = new Emitter(); + promise.then(res => { + result.fire(res); + }, () => { + result.fire(undefined); + }).finally(() => { + result.dispose(); + }); + return result.event; + } + Event.fromPromise = fromPromise; + function runAndSubscribe(event, handler, initial) { + handler(initial); + return event(e => handler(e)); + } + Event.runAndSubscribe = runAndSubscribe; + /** + * Adds a listener to an event and calls the listener immediately with undefined as the event object. A new + * {@link DisposableStore} is passed to the listener which is disposed when the returned disposable is disposed. + */ + function runAndSubscribeWithStore(event, handler) { + let store = null; + function run(e) { + store === null || store === void 0 ? void 0 : store.dispose(); + store = new DisposableStore(); + handler(e, store); + } + run(undefined); + const disposable = event(e => run(e)); + return toDisposable(() => { + disposable.dispose(); + store === null || store === void 0 ? void 0 : store.dispose(); + }); + } + Event.runAndSubscribeWithStore = runAndSubscribeWithStore; + class EmitterObserver { + constructor(_observable, store) { + this._observable = _observable; + this._counter = 0; + this._hasChanged = false; + const options = { + onWillAddFirstListener: () => { + _observable.addObserver(this); + }, + onDidRemoveLastListener: () => { + _observable.removeObserver(this); + } + }; + this.emitter = new Emitter(options); + if (store) { + store.add(this.emitter); + } + } + beginUpdate(_observable) { + // assert(_observable === this.obs); + this._counter++; + } + handlePossibleChange(_observable) { + // assert(_observable === this.obs); + } + handleChange(_observable, _change) { + // assert(_observable === this.obs); + this._hasChanged = true; + } + endUpdate(_observable) { + // assert(_observable === this.obs); + this._counter--; + if (this._counter === 0) { + this._observable.reportChanges(); + if (this._hasChanged) { + this._hasChanged = false; + this.emitter.fire(this._observable.get()); + } + } + } + } + /** + * Creates an event emitter that is fired when the observable changes. + * Each listeners subscribes to the emitter. + */ + function fromObservable(obs, store) { + const observer = new EmitterObserver(obs, store); + return observer.emitter.event; + } + Event.fromObservable = fromObservable; + /** + * Each listener is attached to the observable directly. + */ + function fromObservableLight(observable) { + return (listener, thisArgs, disposables) => { + let count = 0; + let didChange = false; + const observer = { + beginUpdate() { + count++; + }, + endUpdate() { + count--; + if (count === 0) { + observable.reportChanges(); + if (didChange) { + didChange = false; + listener.call(thisArgs); + } + } + }, + handlePossibleChange() { + // noop + }, + handleChange() { + didChange = true; + } + }; + observable.addObserver(observer); + observable.reportChanges(); + const disposable = { + dispose() { + observable.removeObserver(observer); + } + }; + if (disposables instanceof DisposableStore) { + disposables.add(disposable); + } + else if (Array.isArray(disposables)) { + disposables.push(disposable); + } + return disposable; + }; + } + Event.fromObservableLight = fromObservableLight; +})(Event || (Event = {})); +class EventProfiling { + constructor(name) { + this.listenerCount = 0; + this.invocationCount = 0; + this.elapsedOverall = 0; + this.durations = []; + this.name = `${name}_${EventProfiling._idPool++}`; + EventProfiling.all.add(this); + } + start(listenerCount) { + this._stopWatch = new StopWatch(); + this.listenerCount = listenerCount; + } + stop() { + if (this._stopWatch) { + const elapsed = this._stopWatch.elapsed(); + this.durations.push(elapsed); + this.elapsedOverall += elapsed; + this.invocationCount += 1; + this._stopWatch = undefined; + } + } +} +EventProfiling.all = new Set(); +EventProfiling._idPool = 0; +let _globalLeakWarningThreshold = -1; +class LeakageMonitor { + constructor(threshold, name = Math.random().toString(18).slice(2, 5)) { + this.threshold = threshold; + this.name = name; + this._warnCountdown = 0; + } + dispose() { + var _a; + (_a = this._stacks) === null || _a === void 0 ? void 0 : _a.clear(); + } + check(stack, listenerCount) { + const threshold = this.threshold; + if (threshold <= 0 || listenerCount < threshold) { + return undefined; + } + if (!this._stacks) { + this._stacks = new Map(); + } + const count = (this._stacks.get(stack.value) || 0); + this._stacks.set(stack.value, count + 1); + this._warnCountdown -= 1; + if (this._warnCountdown <= 0) { + // only warn on first exceed and then every time the limit + // is exceeded by 50% again + this._warnCountdown = threshold * 0.5; + // find most frequent listener and print warning + let topStack; + let topCount = 0; + for (const [stack, count] of this._stacks) { + if (!topStack || topCount < count) { + topStack = stack; + topCount = count; + } + } + console.warn(`[${this.name}] potential listener LEAK detected, having ${listenerCount} listeners already. MOST frequent listener (${topCount}):`); + console.warn(topStack); + } + return () => { + const count = (this._stacks.get(stack.value) || 0); + this._stacks.set(stack.value, count - 1); + }; + } +} +class Stacktrace { + static create() { + var _a; + return new Stacktrace((_a = new Error().stack) !== null && _a !== void 0 ? _a : ''); + } + constructor(value) { + this.value = value; + } + print() { + console.warn(this.value.split('\n').slice(2).join('\n')); + } +} +class UniqueContainer { + constructor(value) { + this.value = value; + } +} +const compactionThreshold = 2; +/** + * The Emitter can be used to expose an Event to the public + * to fire it from the insides. + * Sample: + class Document { + + private readonly _onDidChange = new Emitter<(value:string)=>any>(); + + public onDidChange = this._onDidChange.event; + + // getter-style + // get onDidChange(): Event<(value:string)=>any> { + // return this._onDidChange.event; + // } + + private _doIt() { + //... + this._onDidChange.fire(value); + } + } + */ +class Emitter { + constructor(options) { + var _a, _b, _c, _d, _e; + this._size = 0; + this._options = options; + this._leakageMon = ((_a = this._options) === null || _a === void 0 ? void 0 : _a.leakWarningThreshold) ? new LeakageMonitor((_c = (_b = this._options) === null || _b === void 0 ? void 0 : _b.leakWarningThreshold) !== null && _c !== void 0 ? _c : _globalLeakWarningThreshold) : undefined; + this._perfMon = ((_d = this._options) === null || _d === void 0 ? void 0 : _d._profName) ? new EventProfiling(this._options._profName) : undefined; + this._deliveryQueue = (_e = this._options) === null || _e === void 0 ? void 0 : _e.deliveryQueue; + } + dispose() { + var _a, _b, _c, _d; + if (!this._disposed) { + this._disposed = true; + // It is bad to have listeners at the time of disposing an emitter, it is worst to have listeners keep the emitter + // alive via the reference that's embedded in their disposables. Therefore we loop over all remaining listeners and + // unset their subscriptions/disposables. Looping and blaming remaining listeners is done on next tick because the + // the following programming pattern is very popular: + // + // const someModel = this._disposables.add(new ModelObject()); // (1) create and register model + // this._disposables.add(someModel.onDidChange(() => { ... }); // (2) subscribe and register model-event listener + // ...later... + // this._disposables.dispose(); disposes (1) then (2): don't warn after (1) but after the "overall dispose" is done + if (((_a = this._deliveryQueue) === null || _a === void 0 ? void 0 : _a.current) === this) { + this._deliveryQueue.reset(); + } + if (this._listeners) { + this._listeners = undefined; + this._size = 0; + } + (_c = (_b = this._options) === null || _b === void 0 ? void 0 : _b.onDidRemoveLastListener) === null || _c === void 0 ? void 0 : _c.call(_b); + (_d = this._leakageMon) === null || _d === void 0 ? void 0 : _d.dispose(); + } + } + /** + * For the public to allow to subscribe + * to events from this Emitter + */ + get event() { + var _a; + (_a = this._event) !== null && _a !== void 0 ? _a : (this._event = (callback, thisArgs, disposables) => { + var _a, _b, _c, _d, _e; + if (this._leakageMon && this._size > this._leakageMon.threshold * 3) { + console.warn(`[${this._leakageMon.name}] REFUSES to accept new listeners because it exceeded its threshold by far`); + return Disposable.None; + } + if (this._disposed) { + // todo: should we warn if a listener is added to a disposed emitter? This happens often + return Disposable.None; + } + if (thisArgs) { + callback = callback.bind(thisArgs); + } + const contained = new UniqueContainer(callback); + let removeMonitor; + if (this._leakageMon && this._size >= Math.ceil(this._leakageMon.threshold * 0.2)) { + // check and record this emitter for potential leakage + contained.stack = Stacktrace.create(); + removeMonitor = this._leakageMon.check(contained.stack, this._size + 1); + } + if (!this._listeners) { + (_b = (_a = this._options) === null || _a === void 0 ? void 0 : _a.onWillAddFirstListener) === null || _b === void 0 ? void 0 : _b.call(_a, this); + this._listeners = contained; + (_d = (_c = this._options) === null || _c === void 0 ? void 0 : _c.onDidAddFirstListener) === null || _d === void 0 ? void 0 : _d.call(_c, this); + } + else if (this._listeners instanceof UniqueContainer) { + (_e = this._deliveryQueue) !== null && _e !== void 0 ? _e : (this._deliveryQueue = new EventDeliveryQueuePrivate()); + this._listeners = [this._listeners, contained]; + } + else { + this._listeners.push(contained); + } + this._size++; + const result = toDisposable(() => { removeMonitor === null || removeMonitor === void 0 ? void 0 : removeMonitor(); this._removeListener(contained); }); + if (disposables instanceof DisposableStore) { + disposables.add(result); + } + else if (Array.isArray(disposables)) { + disposables.push(result); + } + return result; + }); + return this._event; + } + _removeListener(listener) { + var _a, _b, _c, _d; + (_b = (_a = this._options) === null || _a === void 0 ? void 0 : _a.onWillRemoveListener) === null || _b === void 0 ? void 0 : _b.call(_a, this); + if (!this._listeners) { + return; // expected if a listener gets disposed + } + if (this._size === 1) { + this._listeners = undefined; + (_d = (_c = this._options) === null || _c === void 0 ? void 0 : _c.onDidRemoveLastListener) === null || _d === void 0 ? void 0 : _d.call(_c, this); + this._size = 0; + return; + } + // size > 1 which requires that listeners be a list: + const listeners = this._listeners; + const index = listeners.indexOf(listener); + if (index === -1) { + console.log('disposed?', this._disposed); + console.log('size?', this._size); + console.log('arr?', JSON.stringify(this._listeners)); + throw new Error('Attempted to dispose unknown listener'); + } + this._size--; + listeners[index] = undefined; + const adjustDeliveryQueue = this._deliveryQueue.current === this; + if (this._size * compactionThreshold <= listeners.length) { + let n = 0; + for (let i = 0; i < listeners.length; i++) { + if (listeners[i]) { + listeners[n++] = listeners[i]; + } + else if (adjustDeliveryQueue) { + this._deliveryQueue.end--; + if (n < this._deliveryQueue.i) { + this._deliveryQueue.i--; + } + } + } + listeners.length = n; + } + } + _deliver(listener, value) { + var _a; + if (!listener) { + return; + } + const errorHandler = ((_a = this._options) === null || _a === void 0 ? void 0 : _a.onListenerError) || onUnexpectedError; + if (!errorHandler) { + listener.value(value); + return; + } + try { + listener.value(value); + } + catch (e) { + errorHandler(e); + } + } + /** Delivers items in the queue. Assumes the queue is ready to go. */ + _deliverQueue(dq) { + const listeners = dq.current._listeners; + while (dq.i < dq.end) { + // important: dq.i is incremented before calling deliver() because it might reenter deliverQueue() + this._deliver(listeners[dq.i++], dq.value); + } + dq.reset(); + } + /** + * To be kept private to fire an event to + * subscribers + */ + fire(event) { + var _a, _b, _c, _d; + if ((_a = this._deliveryQueue) === null || _a === void 0 ? void 0 : _a.current) { + this._deliverQueue(this._deliveryQueue); + (_b = this._perfMon) === null || _b === void 0 ? void 0 : _b.stop(); // last fire() will have starting perfmon, stop it before starting the next dispatch + } + (_c = this._perfMon) === null || _c === void 0 ? void 0 : _c.start(this._size); + if (!this._listeners) ; + else if (this._listeners instanceof UniqueContainer) { + this._deliver(this._listeners, event); + } + else { + const dq = this._deliveryQueue; + dq.enqueue(this, event, this._listeners.length); + this._deliverQueue(dq); + } + (_d = this._perfMon) === null || _d === void 0 ? void 0 : _d.stop(); + } + hasListeners() { + return this._size > 0; + } +} +class EventDeliveryQueuePrivate { + constructor() { + /** + * Index in current's listener list. + */ + this.i = -1; + /** + * The last index in the listener's list to deliver. + */ + this.end = 0; + } + enqueue(emitter, value, end) { + this.i = 0; + this.end = end; + this.current = emitter; + this.value = value; + } + reset() { + this.i = this.end; // force any current emission loop to stop, mainly for during dispose + this.current = undefined; + this.value = undefined; + } +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +/** + * @returns whether the provided parameter is a JavaScript String or not. + */ +function isString(str) { + return (typeof str === 'string'); +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +function getAllPropertyNames(obj) { + let res = []; + while (Object.prototype !== obj) { + res = res.concat(Object.getOwnPropertyNames(obj)); + obj = Object.getPrototypeOf(obj); + } + return res; +} +function getAllMethodNames(obj) { + const methods = []; + for (const prop of getAllPropertyNames(obj)) { + if (typeof obj[prop] === 'function') { + methods.push(prop); + } + } + return methods; +} +function createProxyObject$1(methodNames, invoke) { + const createProxyMethod = (method) => { + return function () { + const args = Array.prototype.slice.call(arguments, 0); + return invoke(method, args); + }; + }; + const result = {}; + for (const methodName of methodNames) { + result[methodName] = createProxyMethod(methodName); + } + return result; +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +let isPseudo = (typeof document !== 'undefined' && document.location && document.location.hash.indexOf('pseudo=true') >= 0); +function _format$1(message, args) { + let result; + if (args.length === 0) { + result = message; + } + else { + result = message.replace(/\{(\d+)\}/g, (match, rest) => { + const index = rest[0]; + const arg = args[index]; + let result = match; + if (typeof arg === 'string') { + result = arg; + } + else if (typeof arg === 'number' || typeof arg === 'boolean' || arg === void 0 || arg === null) { + result = String(arg); + } + return result; + }); + } + if (isPseudo) { + // FF3B and FF3D is the Unicode zenkaku representation for [ and ] + result = '\uFF3B' + result.replace(/[aouei]/g, '$&$&') + '\uFF3D'; + } + return result; +} +/** + * @skipMangle + */ +function localize(data, message, ...args) { + return _format$1(message, args); +} +/** + * @skipMangle + */ +function getConfiguredDefaultLocale(_) { + // This returns undefined because this implementation isn't used and is overwritten by the loader + // when loaded. + return undefined; +} + +var _a$1; +const LANGUAGE_DEFAULT = 'en'; +let _isWindows = false; +let _isMacintosh = false; +let _isLinux = false; +let _locale = undefined; +let _language = LANGUAGE_DEFAULT; +let _platformLocale = LANGUAGE_DEFAULT; +let _translationsConfigFile = undefined; +let _userAgent = undefined; +const $globalThis = globalThis; +let nodeProcess = undefined; +if (typeof $globalThis.vscode !== 'undefined' && typeof $globalThis.vscode.process !== 'undefined') { + // Native environment (sandboxed) + nodeProcess = $globalThis.vscode.process; +} +else if (typeof process !== 'undefined') { + // Native environment (non-sandboxed) + nodeProcess = process; +} +const isElectronProcess = typeof ((_a$1 = nodeProcess === null || nodeProcess === void 0 ? void 0 : nodeProcess.versions) === null || _a$1 === void 0 ? void 0 : _a$1.electron) === 'string'; +const isElectronRenderer = isElectronProcess && (nodeProcess === null || nodeProcess === void 0 ? void 0 : nodeProcess.type) === 'renderer'; +// Web environment +if (typeof navigator === 'object' && !isElectronRenderer) { + _userAgent = navigator.userAgent; + _isWindows = _userAgent.indexOf('Windows') >= 0; + _isMacintosh = _userAgent.indexOf('Macintosh') >= 0; + (_userAgent.indexOf('Macintosh') >= 0 || _userAgent.indexOf('iPad') >= 0 || _userAgent.indexOf('iPhone') >= 0) && !!navigator.maxTouchPoints && navigator.maxTouchPoints > 0; + _isLinux = _userAgent.indexOf('Linux') >= 0; + (_userAgent === null || _userAgent === void 0 ? void 0 : _userAgent.indexOf('Mobi')) >= 0; + getConfiguredDefaultLocale( + // This call _must_ be done in the file that calls `nls.getConfiguredDefaultLocale` + // to ensure that the NLS AMD Loader plugin has been loaded and configured. + // This is because the loader plugin decides what the default locale is based on + // how it's able to resolve the strings. + localize({ key: 'ensureLoaderPluginIsLoaded', comment: ['{Locked}'] }, '_')); + _locale = LANGUAGE_DEFAULT; + _language = _locale; + _platformLocale = navigator.language; +} +// Native environment +else if (typeof nodeProcess === 'object') { + _isWindows = (nodeProcess.platform === 'win32'); + _isMacintosh = (nodeProcess.platform === 'darwin'); + _isLinux = (nodeProcess.platform === 'linux'); + _isLinux && !!nodeProcess.env['SNAP'] && !!nodeProcess.env['SNAP_REVISION']; + !!nodeProcess.env['CI'] || !!nodeProcess.env['BUILD_ARTIFACTSTAGINGDIRECTORY']; + _locale = LANGUAGE_DEFAULT; + _language = LANGUAGE_DEFAULT; + const rawNlsConfig = nodeProcess.env['VSCODE_NLS_CONFIG']; + if (rawNlsConfig) { + try { + const nlsConfig = JSON.parse(rawNlsConfig); + const resolved = nlsConfig.availableLanguages['*']; + _locale = nlsConfig.locale; + _platformLocale = nlsConfig.osLocale; + // VSCode's default language is 'en' + _language = resolved ? resolved : LANGUAGE_DEFAULT; + _translationsConfigFile = nlsConfig._translationsConfigFile; + } + catch (e) { + } + } +} +// Unknown environment +else { + console.error('Unable to resolve platform.'); +} +const isWindows = _isWindows; +const isMacintosh = _isMacintosh; +const userAgent = _userAgent; +const setTimeout0IsFaster = (typeof $globalThis.postMessage === 'function' && !$globalThis.importScripts); +/** + * See https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#:~:text=than%204%2C%20then-,set%20timeout%20to%204,-. + * + * Works similarly to `setTimeout(0)` but doesn't suffer from the 4ms artificial delay + * that browsers set when the nesting level is > 5. + */ +(() => { + if (setTimeout0IsFaster) { + const pending = []; + $globalThis.addEventListener('message', (e) => { + if (e.data && e.data.vscodeScheduleAsyncWork) { + for (let i = 0, len = pending.length; i < len; i++) { + const candidate = pending[i]; + if (candidate.id === e.data.vscodeScheduleAsyncWork) { + pending.splice(i, 1); + candidate.callback(); + return; + } + } + } + }); + let lastId = 0; + return (callback) => { + const myId = ++lastId; + pending.push({ + id: myId, + callback: callback + }); + $globalThis.postMessage({ vscodeScheduleAsyncWork: myId }, '*'); + }; + } + return (callback) => setTimeout(callback); +})(); +const isChrome = !!(userAgent && userAgent.indexOf('Chrome') >= 0); +!!(userAgent && userAgent.indexOf('Firefox') >= 0); +!!(!isChrome && (userAgent && userAgent.indexOf('Safari') >= 0)); +!!(userAgent && userAgent.indexOf('Edg/') >= 0); +!!(userAgent && userAgent.indexOf('Android') >= 0); + +/** + * Uses a LRU cache to make a given parametrized function cached. + * Caches just the last value. + * The key must be JSON serializable. +*/ +class LRUCachedFunction { + constructor(fn) { + this.fn = fn; + this.lastCache = undefined; + this.lastArgKey = undefined; + } + get(arg) { + const key = JSON.stringify(arg); + if (this.lastArgKey !== key) { + this.lastArgKey = key; + this.lastCache = this.fn(arg); + } + return this.lastCache; + } +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +class Lazy { + constructor(executor) { + this.executor = executor; + this._didRun = false; + } + /** + * Get the wrapped value. + * + * This will force evaluation of the lazy value if it has not been resolved yet. Lazy values are only + * resolved once. `getValue` will re-throw exceptions that are hit while resolving the value + */ + get value() { + if (!this._didRun) { + try { + this._value = this.executor(); + } + catch (err) { + this._error = err; + } + finally { + this._didRun = true; + } + } + if (this._error) { + throw this._error; + } + return this._value; + } + /** + * Get the wrapped value without forcing evaluation. + */ + get rawValue() { return this._value; } +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +var _a; +/** + * Escapes regular expression characters in a given string + */ +function escapeRegExpCharacters(value) { + return value.replace(/[\\\{\}\*\+\?\|\^\$\.\[\]\(\)]/g, '\\$&'); +} +function splitLines(str) { + return str.split(/\r\n|\r|\n/); +} +/** + * Returns first index of the string that is not whitespace. + * If string is empty or contains only whitespaces, returns -1 + */ +function firstNonWhitespaceIndex(str) { + for (let i = 0, len = str.length; i < len; i++) { + const chCode = str.charCodeAt(i); + if (chCode !== 32 /* CharCode.Space */ && chCode !== 9 /* CharCode.Tab */) { + return i; + } + } + return -1; +} +/** + * Returns last index of the string that is not whitespace. + * If string is empty or contains only whitespaces, returns -1 + */ +function lastNonWhitespaceIndex(str, startIndex = str.length - 1) { + for (let i = startIndex; i >= 0; i--) { + const chCode = str.charCodeAt(i); + if (chCode !== 32 /* CharCode.Space */ && chCode !== 9 /* CharCode.Tab */) { + return i; + } + } + return -1; +} +function isUpperAsciiLetter(code) { + return code >= 65 /* CharCode.A */ && code <= 90 /* CharCode.Z */; +} +/** + * See http://en.wikipedia.org/wiki/Surrogate_pair + */ +function isHighSurrogate(charCode) { + return (0xD800 <= charCode && charCode <= 0xDBFF); +} +/** + * See http://en.wikipedia.org/wiki/Surrogate_pair + */ +function isLowSurrogate(charCode) { + return (0xDC00 <= charCode && charCode <= 0xDFFF); +} +/** + * See http://en.wikipedia.org/wiki/Surrogate_pair + */ +function computeCodePoint(highSurrogate, lowSurrogate) { + return ((highSurrogate - 0xD800) << 10) + (lowSurrogate - 0xDC00) + 0x10000; +} +/** + * get the code point that begins at offset `offset` + */ +function getNextCodePoint(str, len, offset) { + const charCode = str.charCodeAt(offset); + if (isHighSurrogate(charCode) && offset + 1 < len) { + const nextCharCode = str.charCodeAt(offset + 1); + if (isLowSurrogate(nextCharCode)) { + return computeCodePoint(charCode, nextCharCode); + } + } + return charCode; +} +const IS_BASIC_ASCII = /^[\t\n\r\x20-\x7E]*$/; +/** + * Returns true if `str` contains only basic ASCII characters in the range 32 - 126 (including 32 and 126) or \n, \r, \t + */ +function isBasicASCII(str) { + return IS_BASIC_ASCII.test(str); +} +class AmbiguousCharacters { + static getInstance(locales) { + return _a.cache.get(Array.from(locales)); + } + static getLocales() { + return _a._locales.value; + } + constructor(confusableDictionary) { + this.confusableDictionary = confusableDictionary; + } + isAmbiguous(codePoint) { + return this.confusableDictionary.has(codePoint); + } + /** + * Returns the non basic ASCII code point that the given code point can be confused, + * or undefined if such code point does note exist. + */ + getPrimaryConfusable(codePoint) { + return this.confusableDictionary.get(codePoint); + } + getConfusableCodePoints() { + return new Set(this.confusableDictionary.keys()); + } +} +_a = AmbiguousCharacters; +AmbiguousCharacters.ambiguousCharacterData = new Lazy(() => { + // Generated using https://github.com/hediet/vscode-unicode-data + // Stored as key1, value1, key2, value2, ... + return JSON.parse('{\"_common\":[8232,32,8233,32,5760,32,8192,32,8193,32,8194,32,8195,32,8196,32,8197,32,8198,32,8200,32,8201,32,8202,32,8287,32,8199,32,8239,32,2042,95,65101,95,65102,95,65103,95,8208,45,8209,45,8210,45,65112,45,1748,45,8259,45,727,45,8722,45,10134,45,11450,45,1549,44,1643,44,8218,44,184,44,42233,44,894,59,2307,58,2691,58,1417,58,1795,58,1796,58,5868,58,65072,58,6147,58,6153,58,8282,58,1475,58,760,58,42889,58,8758,58,720,58,42237,58,451,33,11601,33,660,63,577,63,2429,63,5038,63,42731,63,119149,46,8228,46,1793,46,1794,46,42510,46,68176,46,1632,46,1776,46,42232,46,1373,96,65287,96,8219,96,8242,96,1370,96,1523,96,8175,96,65344,96,900,96,8189,96,8125,96,8127,96,8190,96,697,96,884,96,712,96,714,96,715,96,756,96,699,96,701,96,700,96,702,96,42892,96,1497,96,2036,96,2037,96,5194,96,5836,96,94033,96,94034,96,65339,91,10088,40,10098,40,12308,40,64830,40,65341,93,10089,41,10099,41,12309,41,64831,41,10100,123,119060,123,10101,125,65342,94,8270,42,1645,42,8727,42,66335,42,5941,47,8257,47,8725,47,8260,47,9585,47,10187,47,10744,47,119354,47,12755,47,12339,47,11462,47,20031,47,12035,47,65340,92,65128,92,8726,92,10189,92,10741,92,10745,92,119311,92,119355,92,12756,92,20022,92,12034,92,42872,38,708,94,710,94,5869,43,10133,43,66203,43,8249,60,10094,60,706,60,119350,60,5176,60,5810,60,5120,61,11840,61,12448,61,42239,61,8250,62,10095,62,707,62,119351,62,5171,62,94015,62,8275,126,732,126,8128,126,8764,126,65372,124,65293,45,120784,50,120794,50,120804,50,120814,50,120824,50,130034,50,42842,50,423,50,1000,50,42564,50,5311,50,42735,50,119302,51,120785,51,120795,51,120805,51,120815,51,120825,51,130035,51,42923,51,540,51,439,51,42858,51,11468,51,1248,51,94011,51,71882,51,120786,52,120796,52,120806,52,120816,52,120826,52,130036,52,5070,52,71855,52,120787,53,120797,53,120807,53,120817,53,120827,53,130037,53,444,53,71867,53,120788,54,120798,54,120808,54,120818,54,120828,54,130038,54,11474,54,5102,54,71893,54,119314,55,120789,55,120799,55,120809,55,120819,55,120829,55,130039,55,66770,55,71878,55,2819,56,2538,56,2666,56,125131,56,120790,56,120800,56,120810,56,120820,56,120830,56,130040,56,547,56,546,56,66330,56,2663,57,2920,57,2541,57,3437,57,120791,57,120801,57,120811,57,120821,57,120831,57,130041,57,42862,57,11466,57,71884,57,71852,57,71894,57,9082,97,65345,97,119834,97,119886,97,119938,97,119990,97,120042,97,120094,97,120146,97,120198,97,120250,97,120302,97,120354,97,120406,97,120458,97,593,97,945,97,120514,97,120572,97,120630,97,120688,97,120746,97,65313,65,119808,65,119860,65,119912,65,119964,65,120016,65,120068,65,120120,65,120172,65,120224,65,120276,65,120328,65,120380,65,120432,65,913,65,120488,65,120546,65,120604,65,120662,65,120720,65,5034,65,5573,65,42222,65,94016,65,66208,65,119835,98,119887,98,119939,98,119991,98,120043,98,120095,98,120147,98,120199,98,120251,98,120303,98,120355,98,120407,98,120459,98,388,98,5071,98,5234,98,5551,98,65314,66,8492,66,119809,66,119861,66,119913,66,120017,66,120069,66,120121,66,120173,66,120225,66,120277,66,120329,66,120381,66,120433,66,42932,66,914,66,120489,66,120547,66,120605,66,120663,66,120721,66,5108,66,5623,66,42192,66,66178,66,66209,66,66305,66,65347,99,8573,99,119836,99,119888,99,119940,99,119992,99,120044,99,120096,99,120148,99,120200,99,120252,99,120304,99,120356,99,120408,99,120460,99,7428,99,1010,99,11429,99,43951,99,66621,99,128844,67,71922,67,71913,67,65315,67,8557,67,8450,67,8493,67,119810,67,119862,67,119914,67,119966,67,120018,67,120174,67,120226,67,120278,67,120330,67,120382,67,120434,67,1017,67,11428,67,5087,67,42202,67,66210,67,66306,67,66581,67,66844,67,8574,100,8518,100,119837,100,119889,100,119941,100,119993,100,120045,100,120097,100,120149,100,120201,100,120253,100,120305,100,120357,100,120409,100,120461,100,1281,100,5095,100,5231,100,42194,100,8558,68,8517,68,119811,68,119863,68,119915,68,119967,68,120019,68,120071,68,120123,68,120175,68,120227,68,120279,68,120331,68,120383,68,120435,68,5024,68,5598,68,5610,68,42195,68,8494,101,65349,101,8495,101,8519,101,119838,101,119890,101,119942,101,120046,101,120098,101,120150,101,120202,101,120254,101,120306,101,120358,101,120410,101,120462,101,43826,101,1213,101,8959,69,65317,69,8496,69,119812,69,119864,69,119916,69,120020,69,120072,69,120124,69,120176,69,120228,69,120280,69,120332,69,120384,69,120436,69,917,69,120492,69,120550,69,120608,69,120666,69,120724,69,11577,69,5036,69,42224,69,71846,69,71854,69,66182,69,119839,102,119891,102,119943,102,119995,102,120047,102,120099,102,120151,102,120203,102,120255,102,120307,102,120359,102,120411,102,120463,102,43829,102,42905,102,383,102,7837,102,1412,102,119315,70,8497,70,119813,70,119865,70,119917,70,120021,70,120073,70,120125,70,120177,70,120229,70,120281,70,120333,70,120385,70,120437,70,42904,70,988,70,120778,70,5556,70,42205,70,71874,70,71842,70,66183,70,66213,70,66853,70,65351,103,8458,103,119840,103,119892,103,119944,103,120048,103,120100,103,120152,103,120204,103,120256,103,120308,103,120360,103,120412,103,120464,103,609,103,7555,103,397,103,1409,103,119814,71,119866,71,119918,71,119970,71,120022,71,120074,71,120126,71,120178,71,120230,71,120282,71,120334,71,120386,71,120438,71,1292,71,5056,71,5107,71,42198,71,65352,104,8462,104,119841,104,119945,104,119997,104,120049,104,120101,104,120153,104,120205,104,120257,104,120309,104,120361,104,120413,104,120465,104,1211,104,1392,104,5058,104,65320,72,8459,72,8460,72,8461,72,119815,72,119867,72,119919,72,120023,72,120179,72,120231,72,120283,72,120335,72,120387,72,120439,72,919,72,120494,72,120552,72,120610,72,120668,72,120726,72,11406,72,5051,72,5500,72,42215,72,66255,72,731,105,9075,105,65353,105,8560,105,8505,105,8520,105,119842,105,119894,105,119946,105,119998,105,120050,105,120102,105,120154,105,120206,105,120258,105,120310,105,120362,105,120414,105,120466,105,120484,105,618,105,617,105,953,105,8126,105,890,105,120522,105,120580,105,120638,105,120696,105,120754,105,1110,105,42567,105,1231,105,43893,105,5029,105,71875,105,65354,106,8521,106,119843,106,119895,106,119947,106,119999,106,120051,106,120103,106,120155,106,120207,106,120259,106,120311,106,120363,106,120415,106,120467,106,1011,106,1112,106,65322,74,119817,74,119869,74,119921,74,119973,74,120025,74,120077,74,120129,74,120181,74,120233,74,120285,74,120337,74,120389,74,120441,74,42930,74,895,74,1032,74,5035,74,5261,74,42201,74,119844,107,119896,107,119948,107,120000,107,120052,107,120104,107,120156,107,120208,107,120260,107,120312,107,120364,107,120416,107,120468,107,8490,75,65323,75,119818,75,119870,75,119922,75,119974,75,120026,75,120078,75,120130,75,120182,75,120234,75,120286,75,120338,75,120390,75,120442,75,922,75,120497,75,120555,75,120613,75,120671,75,120729,75,11412,75,5094,75,5845,75,42199,75,66840,75,1472,108,8739,73,9213,73,65512,73,1633,108,1777,73,66336,108,125127,108,120783,73,120793,73,120803,73,120813,73,120823,73,130033,73,65321,73,8544,73,8464,73,8465,73,119816,73,119868,73,119920,73,120024,73,120128,73,120180,73,120232,73,120284,73,120336,73,120388,73,120440,73,65356,108,8572,73,8467,108,119845,108,119897,108,119949,108,120001,108,120053,108,120105,73,120157,73,120209,73,120261,73,120313,73,120365,73,120417,73,120469,73,448,73,120496,73,120554,73,120612,73,120670,73,120728,73,11410,73,1030,73,1216,73,1493,108,1503,108,1575,108,126464,108,126592,108,65166,108,65165,108,1994,108,11599,73,5825,73,42226,73,93992,73,66186,124,66313,124,119338,76,8556,76,8466,76,119819,76,119871,76,119923,76,120027,76,120079,76,120131,76,120183,76,120235,76,120287,76,120339,76,120391,76,120443,76,11472,76,5086,76,5290,76,42209,76,93974,76,71843,76,71858,76,66587,76,66854,76,65325,77,8559,77,8499,77,119820,77,119872,77,119924,77,120028,77,120080,77,120132,77,120184,77,120236,77,120288,77,120340,77,120392,77,120444,77,924,77,120499,77,120557,77,120615,77,120673,77,120731,77,1018,77,11416,77,5047,77,5616,77,5846,77,42207,77,66224,77,66321,77,119847,110,119899,110,119951,110,120003,110,120055,110,120107,110,120159,110,120211,110,120263,110,120315,110,120367,110,120419,110,120471,110,1400,110,1404,110,65326,78,8469,78,119821,78,119873,78,119925,78,119977,78,120029,78,120081,78,120185,78,120237,78,120289,78,120341,78,120393,78,120445,78,925,78,120500,78,120558,78,120616,78,120674,78,120732,78,11418,78,42208,78,66835,78,3074,111,3202,111,3330,111,3458,111,2406,111,2662,111,2790,111,3046,111,3174,111,3302,111,3430,111,3664,111,3792,111,4160,111,1637,111,1781,111,65359,111,8500,111,119848,111,119900,111,119952,111,120056,111,120108,111,120160,111,120212,111,120264,111,120316,111,120368,111,120420,111,120472,111,7439,111,7441,111,43837,111,959,111,120528,111,120586,111,120644,111,120702,111,120760,111,963,111,120532,111,120590,111,120648,111,120706,111,120764,111,11423,111,4351,111,1413,111,1505,111,1607,111,126500,111,126564,111,126596,111,65259,111,65260,111,65258,111,65257,111,1726,111,64428,111,64429,111,64427,111,64426,111,1729,111,64424,111,64425,111,64423,111,64422,111,1749,111,3360,111,4125,111,66794,111,71880,111,71895,111,66604,111,1984,79,2534,79,2918,79,12295,79,70864,79,71904,79,120782,79,120792,79,120802,79,120812,79,120822,79,130032,79,65327,79,119822,79,119874,79,119926,79,119978,79,120030,79,120082,79,120134,79,120186,79,120238,79,120290,79,120342,79,120394,79,120446,79,927,79,120502,79,120560,79,120618,79,120676,79,120734,79,11422,79,1365,79,11604,79,4816,79,2848,79,66754,79,42227,79,71861,79,66194,79,66219,79,66564,79,66838,79,9076,112,65360,112,119849,112,119901,112,119953,112,120005,112,120057,112,120109,112,120161,112,120213,112,120265,112,120317,112,120369,112,120421,112,120473,112,961,112,120530,112,120544,112,120588,112,120602,112,120646,112,120660,112,120704,112,120718,112,120762,112,120776,112,11427,112,65328,80,8473,80,119823,80,119875,80,119927,80,119979,80,120031,80,120083,80,120187,80,120239,80,120291,80,120343,80,120395,80,120447,80,929,80,120504,80,120562,80,120620,80,120678,80,120736,80,11426,80,5090,80,5229,80,42193,80,66197,80,119850,113,119902,113,119954,113,120006,113,120058,113,120110,113,120162,113,120214,113,120266,113,120318,113,120370,113,120422,113,120474,113,1307,113,1379,113,1382,113,8474,81,119824,81,119876,81,119928,81,119980,81,120032,81,120084,81,120188,81,120240,81,120292,81,120344,81,120396,81,120448,81,11605,81,119851,114,119903,114,119955,114,120007,114,120059,114,120111,114,120163,114,120215,114,120267,114,120319,114,120371,114,120423,114,120475,114,43847,114,43848,114,7462,114,11397,114,43905,114,119318,82,8475,82,8476,82,8477,82,119825,82,119877,82,119929,82,120033,82,120189,82,120241,82,120293,82,120345,82,120397,82,120449,82,422,82,5025,82,5074,82,66740,82,5511,82,42211,82,94005,82,65363,115,119852,115,119904,115,119956,115,120008,115,120060,115,120112,115,120164,115,120216,115,120268,115,120320,115,120372,115,120424,115,120476,115,42801,115,445,115,1109,115,43946,115,71873,115,66632,115,65331,83,119826,83,119878,83,119930,83,119982,83,120034,83,120086,83,120138,83,120190,83,120242,83,120294,83,120346,83,120398,83,120450,83,1029,83,1359,83,5077,83,5082,83,42210,83,94010,83,66198,83,66592,83,119853,116,119905,116,119957,116,120009,116,120061,116,120113,116,120165,116,120217,116,120269,116,120321,116,120373,116,120425,116,120477,116,8868,84,10201,84,128872,84,65332,84,119827,84,119879,84,119931,84,119983,84,120035,84,120087,84,120139,84,120191,84,120243,84,120295,84,120347,84,120399,84,120451,84,932,84,120507,84,120565,84,120623,84,120681,84,120739,84,11430,84,5026,84,42196,84,93962,84,71868,84,66199,84,66225,84,66325,84,119854,117,119906,117,119958,117,120010,117,120062,117,120114,117,120166,117,120218,117,120270,117,120322,117,120374,117,120426,117,120478,117,42911,117,7452,117,43854,117,43858,117,651,117,965,117,120534,117,120592,117,120650,117,120708,117,120766,117,1405,117,66806,117,71896,117,8746,85,8899,85,119828,85,119880,85,119932,85,119984,85,120036,85,120088,85,120140,85,120192,85,120244,85,120296,85,120348,85,120400,85,120452,85,1357,85,4608,85,66766,85,5196,85,42228,85,94018,85,71864,85,8744,118,8897,118,65366,118,8564,118,119855,118,119907,118,119959,118,120011,118,120063,118,120115,118,120167,118,120219,118,120271,118,120323,118,120375,118,120427,118,120479,118,7456,118,957,118,120526,118,120584,118,120642,118,120700,118,120758,118,1141,118,1496,118,71430,118,43945,118,71872,118,119309,86,1639,86,1783,86,8548,86,119829,86,119881,86,119933,86,119985,86,120037,86,120089,86,120141,86,120193,86,120245,86,120297,86,120349,86,120401,86,120453,86,1140,86,11576,86,5081,86,5167,86,42719,86,42214,86,93960,86,71840,86,66845,86,623,119,119856,119,119908,119,119960,119,120012,119,120064,119,120116,119,120168,119,120220,119,120272,119,120324,119,120376,119,120428,119,120480,119,7457,119,1121,119,1309,119,1377,119,71434,119,71438,119,71439,119,43907,119,71919,87,71910,87,119830,87,119882,87,119934,87,119986,87,120038,87,120090,87,120142,87,120194,87,120246,87,120298,87,120350,87,120402,87,120454,87,1308,87,5043,87,5076,87,42218,87,5742,120,10539,120,10540,120,10799,120,65368,120,8569,120,119857,120,119909,120,119961,120,120013,120,120065,120,120117,120,120169,120,120221,120,120273,120,120325,120,120377,120,120429,120,120481,120,5441,120,5501,120,5741,88,9587,88,66338,88,71916,88,65336,88,8553,88,119831,88,119883,88,119935,88,119987,88,120039,88,120091,88,120143,88,120195,88,120247,88,120299,88,120351,88,120403,88,120455,88,42931,88,935,88,120510,88,120568,88,120626,88,120684,88,120742,88,11436,88,11613,88,5815,88,42219,88,66192,88,66228,88,66327,88,66855,88,611,121,7564,121,65369,121,119858,121,119910,121,119962,121,120014,121,120066,121,120118,121,120170,121,120222,121,120274,121,120326,121,120378,121,120430,121,120482,121,655,121,7935,121,43866,121,947,121,8509,121,120516,121,120574,121,120632,121,120690,121,120748,121,1199,121,4327,121,71900,121,65337,89,119832,89,119884,89,119936,89,119988,89,120040,89,120092,89,120144,89,120196,89,120248,89,120300,89,120352,89,120404,89,120456,89,933,89,978,89,120508,89,120566,89,120624,89,120682,89,120740,89,11432,89,1198,89,5033,89,5053,89,42220,89,94019,89,71844,89,66226,89,119859,122,119911,122,119963,122,120015,122,120067,122,120119,122,120171,122,120223,122,120275,122,120327,122,120379,122,120431,122,120483,122,7458,122,43923,122,71876,122,66293,90,71909,90,65338,90,8484,90,8488,90,119833,90,119885,90,119937,90,119989,90,120041,90,120197,90,120249,90,120301,90,120353,90,120405,90,120457,90,918,90,120493,90,120551,90,120609,90,120667,90,120725,90,5059,90,42204,90,71849,90,65282,34,65284,36,65285,37,65286,38,65290,42,65291,43,65294,46,65295,47,65296,48,65297,49,65298,50,65299,51,65300,52,65301,53,65302,54,65303,55,65304,56,65305,57,65308,60,65309,61,65310,62,65312,64,65316,68,65318,70,65319,71,65324,76,65329,81,65330,82,65333,85,65334,86,65335,87,65343,95,65346,98,65348,100,65350,102,65355,107,65357,109,65358,110,65361,113,65362,114,65364,116,65365,117,65367,119,65370,122,65371,123,65373,125,119846,109],\"_default\":[160,32,8211,45,65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"cs\":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"de\":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"es\":[8211,45,65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"fr\":[65374,126,65306,58,65281,33,8216,96,8245,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"it\":[160,32,8211,45,65374,126,65306,58,65281,33,8216,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"ja\":[8211,45,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65292,44,65307,59],\"ko\":[8211,45,65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"pl\":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"pt-BR\":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"qps-ploc\":[160,32,8211,45,65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"ru\":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,305,105,921,73,1009,112,215,120,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"tr\":[160,32,8211,45,65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"zh-hans\":[65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41],\"zh-hant\":[8211,45,65374,126,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65307,59]}'); +}); +AmbiguousCharacters.cache = new LRUCachedFunction((locales) => { + function arrayToMap(arr) { + const result = new Map(); + for (let i = 0; i < arr.length; i += 2) { + result.set(arr[i], arr[i + 1]); + } + return result; + } + function mergeMaps(map1, map2) { + const result = new Map(map1); + for (const [key, value] of map2) { + result.set(key, value); + } + return result; + } + function intersectMaps(map1, map2) { + if (!map1) { + return map2; + } + const result = new Map(); + for (const [key, value] of map1) { + if (map2.has(key)) { + result.set(key, value); + } + } + return result; + } + const data = _a.ambiguousCharacterData.value; + let filteredLocales = locales.filter((l) => !l.startsWith('_') && l in data); + if (filteredLocales.length === 0) { + filteredLocales = ['_default']; + } + let languageSpecificMap = undefined; + for (const locale of filteredLocales) { + const map = arrayToMap(data[locale]); + languageSpecificMap = intersectMaps(languageSpecificMap, map); + } + const commonMap = arrayToMap(data['_common']); + const map = mergeMaps(commonMap, languageSpecificMap); + return new _a(map); +}); +AmbiguousCharacters._locales = new Lazy(() => Object.keys(_a.ambiguousCharacterData.value).filter((k) => !k.startsWith('_'))); +class InvisibleCharacters { + static getRawData() { + // Generated using https://github.com/hediet/vscode-unicode-data + return JSON.parse('[9,10,11,12,13,32,127,160,173,847,1564,4447,4448,6068,6069,6155,6156,6157,6158,7355,7356,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8203,8204,8205,8206,8207,8234,8235,8236,8237,8238,8239,8287,8288,8289,8290,8291,8292,8293,8294,8295,8296,8297,8298,8299,8300,8301,8302,8303,10240,12288,12644,65024,65025,65026,65027,65028,65029,65030,65031,65032,65033,65034,65035,65036,65037,65038,65039,65279,65440,65520,65521,65522,65523,65524,65525,65526,65527,65528,65532,78844,119155,119156,119157,119158,119159,119160,119161,119162,917504,917505,917506,917507,917508,917509,917510,917511,917512,917513,917514,917515,917516,917517,917518,917519,917520,917521,917522,917523,917524,917525,917526,917527,917528,917529,917530,917531,917532,917533,917534,917535,917536,917537,917538,917539,917540,917541,917542,917543,917544,917545,917546,917547,917548,917549,917550,917551,917552,917553,917554,917555,917556,917557,917558,917559,917560,917561,917562,917563,917564,917565,917566,917567,917568,917569,917570,917571,917572,917573,917574,917575,917576,917577,917578,917579,917580,917581,917582,917583,917584,917585,917586,917587,917588,917589,917590,917591,917592,917593,917594,917595,917596,917597,917598,917599,917600,917601,917602,917603,917604,917605,917606,917607,917608,917609,917610,917611,917612,917613,917614,917615,917616,917617,917618,917619,917620,917621,917622,917623,917624,917625,917626,917627,917628,917629,917630,917631,917760,917761,917762,917763,917764,917765,917766,917767,917768,917769,917770,917771,917772,917773,917774,917775,917776,917777,917778,917779,917780,917781,917782,917783,917784,917785,917786,917787,917788,917789,917790,917791,917792,917793,917794,917795,917796,917797,917798,917799,917800,917801,917802,917803,917804,917805,917806,917807,917808,917809,917810,917811,917812,917813,917814,917815,917816,917817,917818,917819,917820,917821,917822,917823,917824,917825,917826,917827,917828,917829,917830,917831,917832,917833,917834,917835,917836,917837,917838,917839,917840,917841,917842,917843,917844,917845,917846,917847,917848,917849,917850,917851,917852,917853,917854,917855,917856,917857,917858,917859,917860,917861,917862,917863,917864,917865,917866,917867,917868,917869,917870,917871,917872,917873,917874,917875,917876,917877,917878,917879,917880,917881,917882,917883,917884,917885,917886,917887,917888,917889,917890,917891,917892,917893,917894,917895,917896,917897,917898,917899,917900,917901,917902,917903,917904,917905,917906,917907,917908,917909,917910,917911,917912,917913,917914,917915,917916,917917,917918,917919,917920,917921,917922,917923,917924,917925,917926,917927,917928,917929,917930,917931,917932,917933,917934,917935,917936,917937,917938,917939,917940,917941,917942,917943,917944,917945,917946,917947,917948,917949,917950,917951,917952,917953,917954,917955,917956,917957,917958,917959,917960,917961,917962,917963,917964,917965,917966,917967,917968,917969,917970,917971,917972,917973,917974,917975,917976,917977,917978,917979,917980,917981,917982,917983,917984,917985,917986,917987,917988,917989,917990,917991,917992,917993,917994,917995,917996,917997,917998,917999]'); + } + static getData() { + if (!this._data) { + this._data = new Set(InvisibleCharacters.getRawData()); + } + return this._data; + } + static isInvisibleCharacter(codePoint) { + return InvisibleCharacters.getData().has(codePoint); + } + static get codePoints() { + return InvisibleCharacters.getData(); + } +} +InvisibleCharacters._data = undefined; + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +const INITIALIZE = '$initialize'; +class RequestMessage { + constructor(vsWorker, req, method, args) { + this.vsWorker = vsWorker; + this.req = req; + this.method = method; + this.args = args; + this.type = 0 /* MessageType.Request */; + } +} +class ReplyMessage { + constructor(vsWorker, seq, res, err) { + this.vsWorker = vsWorker; + this.seq = seq; + this.res = res; + this.err = err; + this.type = 1 /* MessageType.Reply */; + } +} +class SubscribeEventMessage { + constructor(vsWorker, req, eventName, arg) { + this.vsWorker = vsWorker; + this.req = req; + this.eventName = eventName; + this.arg = arg; + this.type = 2 /* MessageType.SubscribeEvent */; + } +} +class EventMessage { + constructor(vsWorker, req, event) { + this.vsWorker = vsWorker; + this.req = req; + this.event = event; + this.type = 3 /* MessageType.Event */; + } +} +class UnsubscribeEventMessage { + constructor(vsWorker, req) { + this.vsWorker = vsWorker; + this.req = req; + this.type = 4 /* MessageType.UnsubscribeEvent */; + } +} +class SimpleWorkerProtocol { + constructor(handler) { + this._workerId = -1; + this._handler = handler; + this._lastSentReq = 0; + this._pendingReplies = Object.create(null); + this._pendingEmitters = new Map(); + this._pendingEvents = new Map(); + } + setWorkerId(workerId) { + this._workerId = workerId; + } + sendMessage(method, args) { + const req = String(++this._lastSentReq); + return new Promise((resolve, reject) => { + this._pendingReplies[req] = { + resolve: resolve, + reject: reject + }; + this._send(new RequestMessage(this._workerId, req, method, args)); + }); + } + listen(eventName, arg) { + let req = null; + const emitter = new Emitter({ + onWillAddFirstListener: () => { + req = String(++this._lastSentReq); + this._pendingEmitters.set(req, emitter); + this._send(new SubscribeEventMessage(this._workerId, req, eventName, arg)); + }, + onDidRemoveLastListener: () => { + this._pendingEmitters.delete(req); + this._send(new UnsubscribeEventMessage(this._workerId, req)); + req = null; + } + }); + return emitter.event; + } + handleMessage(message) { + if (!message || !message.vsWorker) { + return; + } + if (this._workerId !== -1 && message.vsWorker !== this._workerId) { + return; + } + this._handleMessage(message); + } + _handleMessage(msg) { + switch (msg.type) { + case 1 /* MessageType.Reply */: + return this._handleReplyMessage(msg); + case 0 /* MessageType.Request */: + return this._handleRequestMessage(msg); + case 2 /* MessageType.SubscribeEvent */: + return this._handleSubscribeEventMessage(msg); + case 3 /* MessageType.Event */: + return this._handleEventMessage(msg); + case 4 /* MessageType.UnsubscribeEvent */: + return this._handleUnsubscribeEventMessage(msg); + } + } + _handleReplyMessage(replyMessage) { + if (!this._pendingReplies[replyMessage.seq]) { + console.warn('Got reply to unknown seq'); + return; + } + const reply = this._pendingReplies[replyMessage.seq]; + delete this._pendingReplies[replyMessage.seq]; + if (replyMessage.err) { + let err = replyMessage.err; + if (replyMessage.err.$isError) { + err = new Error(); + err.name = replyMessage.err.name; + err.message = replyMessage.err.message; + err.stack = replyMessage.err.stack; + } + reply.reject(err); + return; + } + reply.resolve(replyMessage.res); + } + _handleRequestMessage(requestMessage) { + const req = requestMessage.req; + const result = this._handler.handleMessage(requestMessage.method, requestMessage.args); + result.then((r) => { + this._send(new ReplyMessage(this._workerId, req, r, undefined)); + }, (e) => { + if (e.detail instanceof Error) { + // Loading errors have a detail property that points to the actual error + e.detail = transformErrorForSerialization(e.detail); + } + this._send(new ReplyMessage(this._workerId, req, undefined, transformErrorForSerialization(e))); + }); + } + _handleSubscribeEventMessage(msg) { + const req = msg.req; + const disposable = this._handler.handleEvent(msg.eventName, msg.arg)((event) => { + this._send(new EventMessage(this._workerId, req, event)); + }); + this._pendingEvents.set(req, disposable); + } + _handleEventMessage(msg) { + if (!this._pendingEmitters.has(msg.req)) { + console.warn('Got event for unknown req'); + return; + } + this._pendingEmitters.get(msg.req).fire(msg.event); + } + _handleUnsubscribeEventMessage(msg) { + if (!this._pendingEvents.has(msg.req)) { + console.warn('Got unsubscribe for unknown req'); + return; + } + this._pendingEvents.get(msg.req).dispose(); + this._pendingEvents.delete(msg.req); + } + _send(msg) { + const transfer = []; + if (msg.type === 0 /* MessageType.Request */) { + for (let i = 0; i < msg.args.length; i++) { + if (msg.args[i] instanceof ArrayBuffer) { + transfer.push(msg.args[i]); + } + } + } + else if (msg.type === 1 /* MessageType.Reply */) { + if (msg.res instanceof ArrayBuffer) { + transfer.push(msg.res); + } + } + this._handler.sendMessage(msg, transfer); + } +} +function propertyIsEvent(name) { + // Assume a property is an event if it has a form of "onSomething" + return name[0] === 'o' && name[1] === 'n' && isUpperAsciiLetter(name.charCodeAt(2)); +} +function propertyIsDynamicEvent(name) { + // Assume a property is a dynamic event (a method that returns an event) if it has a form of "onDynamicSomething" + return /^onDynamic/.test(name) && isUpperAsciiLetter(name.charCodeAt(9)); +} +function createProxyObject(methodNames, invoke, proxyListen) { + const createProxyMethod = (method) => { + return function () { + const args = Array.prototype.slice.call(arguments, 0); + return invoke(method, args); + }; + }; + const createProxyDynamicEvent = (eventName) => { + return function (arg) { + return proxyListen(eventName, arg); + }; + }; + const result = {}; + for (const methodName of methodNames) { + if (propertyIsDynamicEvent(methodName)) { + result[methodName] = createProxyDynamicEvent(methodName); + continue; + } + if (propertyIsEvent(methodName)) { + result[methodName] = proxyListen(methodName, undefined); + continue; + } + result[methodName] = createProxyMethod(methodName); + } + return result; +} +/** + * Worker side + */ +class SimpleWorkerServer { + constructor(postMessage, requestHandlerFactory) { + this._requestHandlerFactory = requestHandlerFactory; + this._requestHandler = null; + this._protocol = new SimpleWorkerProtocol({ + sendMessage: (msg, transfer) => { + postMessage(msg, transfer); + }, + handleMessage: (method, args) => this._handleMessage(method, args), + handleEvent: (eventName, arg) => this._handleEvent(eventName, arg) + }); + } + onmessage(msg) { + this._protocol.handleMessage(msg); + } + _handleMessage(method, args) { + if (method === INITIALIZE) { + return this.initialize(args[0], args[1], args[2], args[3]); + } + if (!this._requestHandler || typeof this._requestHandler[method] !== 'function') { + return Promise.reject(new Error('Missing requestHandler or method: ' + method)); + } + try { + return Promise.resolve(this._requestHandler[method].apply(this._requestHandler, args)); + } + catch (e) { + return Promise.reject(e); + } + } + _handleEvent(eventName, arg) { + if (!this._requestHandler) { + throw new Error(`Missing requestHandler`); + } + if (propertyIsDynamicEvent(eventName)) { + const event = this._requestHandler[eventName].call(this._requestHandler, arg); + if (typeof event !== 'function') { + throw new Error(`Missing dynamic event ${eventName} on request handler.`); + } + return event; + } + if (propertyIsEvent(eventName)) { + const event = this._requestHandler[eventName]; + if (typeof event !== 'function') { + throw new Error(`Missing event ${eventName} on request handler.`); + } + return event; + } + throw new Error(`Malformed event name ${eventName}`); + } + initialize(workerId, loaderConfig, moduleId, hostMethods) { + this._protocol.setWorkerId(workerId); + const proxyMethodRequest = (method, args) => { + return this._protocol.sendMessage(method, args); + }; + const proxyListen = (eventName, arg) => { + return this._protocol.listen(eventName, arg); + }; + const hostProxy = createProxyObject(hostMethods, proxyMethodRequest, proxyListen); + if (this._requestHandlerFactory) { + // static request handler + this._requestHandler = this._requestHandlerFactory(hostProxy); + return Promise.resolve(getAllMethodNames(this._requestHandler)); + } + if (loaderConfig) { + // Remove 'baseUrl', handling it is beyond scope for now + if (typeof loaderConfig.baseUrl !== 'undefined') { + delete loaderConfig['baseUrl']; + } + if (typeof loaderConfig.paths !== 'undefined') { + if (typeof loaderConfig.paths.vs !== 'undefined') { + delete loaderConfig.paths['vs']; + } + } + if (typeof loaderConfig.trustedTypesPolicy !== undefined) { + // don't use, it has been destroyed during serialize + delete loaderConfig['trustedTypesPolicy']; + } + // Since this is in a web worker, enable catching errors + loaderConfig.catchError = true; + globalThis.require.config(loaderConfig); + } + return new Promise((resolve, reject) => { + // Use the global require to be sure to get the global config + // ESM-comment-begin + // const req = (globalThis.require || require); + // ESM-comment-end + // ESM-uncomment-begin + const req = globalThis.require; + // ESM-uncomment-end + req([moduleId], (module) => { + this._requestHandler = module.create(hostProxy); + if (!this._requestHandler) { + reject(new Error(`No RequestHandler!`)); + return; + } + resolve(getAllMethodNames(this._requestHandler)); + }, reject); + }); + } +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +/** + * Represents information about a specific difference between two sequences. + */ +class DiffChange { + /** + * Constructs a new DiffChange with the given sequence information + * and content. + */ + constructor(originalStart, originalLength, modifiedStart, modifiedLength) { + //Debug.Assert(originalLength > 0 || modifiedLength > 0, "originalLength and modifiedLength cannot both be <= 0"); + this.originalStart = originalStart; + this.originalLength = originalLength; + this.modifiedStart = modifiedStart; + this.modifiedLength = modifiedLength; + } + /** + * The end point (exclusive) of the change in the original sequence. + */ + getOriginalEnd() { + return this.originalStart + this.originalLength; + } + /** + * The end point (exclusive) of the change in the modified sequence. + */ + getModifiedEnd() { + return this.modifiedStart + this.modifiedLength; + } +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +function numberHash(val, initialHashVal) { + return (((initialHashVal << 5) - initialHashVal) + val) | 0; // hashVal * 31 + ch, keep as int32 +} +function stringHash(s, hashVal) { + hashVal = numberHash(149417, hashVal); + for (let i = 0, length = s.length; i < length; i++) { + hashVal = numberHash(s.charCodeAt(i), hashVal); + } + return hashVal; +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +class StringDiffSequence { + constructor(source) { + this.source = source; + } + getElements() { + const source = this.source; + const characters = new Int32Array(source.length); + for (let i = 0, len = source.length; i < len; i++) { + characters[i] = source.charCodeAt(i); + } + return characters; + } +} +function stringDiff(original, modified, pretty) { + return new LcsDiff(new StringDiffSequence(original), new StringDiffSequence(modified)).ComputeDiff(pretty).changes; +} +// +// The code below has been ported from a C# implementation in VS +// +class Debug { + static Assert(condition, message) { + if (!condition) { + throw new Error(message); + } + } +} +class MyArray { + /** + * Copies a range of elements from an Array starting at the specified source index and pastes + * them to another Array starting at the specified destination index. The length and the indexes + * are specified as 64-bit integers. + * sourceArray: + * The Array that contains the data to copy. + * sourceIndex: + * A 64-bit integer that represents the index in the sourceArray at which copying begins. + * destinationArray: + * The Array that receives the data. + * destinationIndex: + * A 64-bit integer that represents the index in the destinationArray at which storing begins. + * length: + * A 64-bit integer that represents the number of elements to copy. + */ + static Copy(sourceArray, sourceIndex, destinationArray, destinationIndex, length) { + for (let i = 0; i < length; i++) { + destinationArray[destinationIndex + i] = sourceArray[sourceIndex + i]; + } + } + static Copy2(sourceArray, sourceIndex, destinationArray, destinationIndex, length) { + for (let i = 0; i < length; i++) { + destinationArray[destinationIndex + i] = sourceArray[sourceIndex + i]; + } + } +} +/** + * A utility class which helps to create the set of DiffChanges from + * a difference operation. This class accepts original DiffElements and + * modified DiffElements that are involved in a particular change. The + * MarkNextChange() method can be called to mark the separation between + * distinct changes. At the end, the Changes property can be called to retrieve + * the constructed changes. + */ +class DiffChangeHelper { + /** + * Constructs a new DiffChangeHelper for the given DiffSequences. + */ + constructor() { + this.m_changes = []; + this.m_originalStart = 1073741824 /* Constants.MAX_SAFE_SMALL_INTEGER */; + this.m_modifiedStart = 1073741824 /* Constants.MAX_SAFE_SMALL_INTEGER */; + this.m_originalCount = 0; + this.m_modifiedCount = 0; + } + /** + * Marks the beginning of the next change in the set of differences. + */ + MarkNextChange() { + // Only add to the list if there is something to add + if (this.m_originalCount > 0 || this.m_modifiedCount > 0) { + // Add the new change to our list + this.m_changes.push(new DiffChange(this.m_originalStart, this.m_originalCount, this.m_modifiedStart, this.m_modifiedCount)); + } + // Reset for the next change + this.m_originalCount = 0; + this.m_modifiedCount = 0; + this.m_originalStart = 1073741824 /* Constants.MAX_SAFE_SMALL_INTEGER */; + this.m_modifiedStart = 1073741824 /* Constants.MAX_SAFE_SMALL_INTEGER */; + } + /** + * Adds the original element at the given position to the elements + * affected by the current change. The modified index gives context + * to the change position with respect to the original sequence. + * @param originalIndex The index of the original element to add. + * @param modifiedIndex The index of the modified element that provides corresponding position in the modified sequence. + */ + AddOriginalElement(originalIndex, modifiedIndex) { + // The 'true' start index is the smallest of the ones we've seen + this.m_originalStart = Math.min(this.m_originalStart, originalIndex); + this.m_modifiedStart = Math.min(this.m_modifiedStart, modifiedIndex); + this.m_originalCount++; + } + /** + * Adds the modified element at the given position to the elements + * affected by the current change. The original index gives context + * to the change position with respect to the modified sequence. + * @param originalIndex The index of the original element that provides corresponding position in the original sequence. + * @param modifiedIndex The index of the modified element to add. + */ + AddModifiedElement(originalIndex, modifiedIndex) { + // The 'true' start index is the smallest of the ones we've seen + this.m_originalStart = Math.min(this.m_originalStart, originalIndex); + this.m_modifiedStart = Math.min(this.m_modifiedStart, modifiedIndex); + this.m_modifiedCount++; + } + /** + * Retrieves all of the changes marked by the class. + */ + getChanges() { + if (this.m_originalCount > 0 || this.m_modifiedCount > 0) { + // Finish up on whatever is left + this.MarkNextChange(); + } + return this.m_changes; + } + /** + * Retrieves all of the changes marked by the class in the reverse order + */ + getReverseChanges() { + if (this.m_originalCount > 0 || this.m_modifiedCount > 0) { + // Finish up on whatever is left + this.MarkNextChange(); + } + this.m_changes.reverse(); + return this.m_changes; + } +} +/** + * An implementation of the difference algorithm described in + * "An O(ND) Difference Algorithm and its variations" by Eugene W. Myers + */ +class LcsDiff { + /** + * Constructs the DiffFinder + */ + constructor(originalSequence, modifiedSequence, continueProcessingPredicate = null) { + this.ContinueProcessingPredicate = continueProcessingPredicate; + this._originalSequence = originalSequence; + this._modifiedSequence = modifiedSequence; + const [originalStringElements, originalElementsOrHash, originalHasStrings] = LcsDiff._getElements(originalSequence); + const [modifiedStringElements, modifiedElementsOrHash, modifiedHasStrings] = LcsDiff._getElements(modifiedSequence); + this._hasStrings = (originalHasStrings && modifiedHasStrings); + this._originalStringElements = originalStringElements; + this._originalElementsOrHash = originalElementsOrHash; + this._modifiedStringElements = modifiedStringElements; + this._modifiedElementsOrHash = modifiedElementsOrHash; + this.m_forwardHistory = []; + this.m_reverseHistory = []; + } + static _isStringArray(arr) { + return (arr.length > 0 && typeof arr[0] === 'string'); + } + static _getElements(sequence) { + const elements = sequence.getElements(); + if (LcsDiff._isStringArray(elements)) { + const hashes = new Int32Array(elements.length); + for (let i = 0, len = elements.length; i < len; i++) { + hashes[i] = stringHash(elements[i], 0); + } + return [elements, hashes, true]; + } + if (elements instanceof Int32Array) { + return [[], elements, false]; + } + return [[], new Int32Array(elements), false]; + } + ElementsAreEqual(originalIndex, newIndex) { + if (this._originalElementsOrHash[originalIndex] !== this._modifiedElementsOrHash[newIndex]) { + return false; + } + return (this._hasStrings ? this._originalStringElements[originalIndex] === this._modifiedStringElements[newIndex] : true); + } + ElementsAreStrictEqual(originalIndex, newIndex) { + if (!this.ElementsAreEqual(originalIndex, newIndex)) { + return false; + } + const originalElement = LcsDiff._getStrictElement(this._originalSequence, originalIndex); + const modifiedElement = LcsDiff._getStrictElement(this._modifiedSequence, newIndex); + return (originalElement === modifiedElement); + } + static _getStrictElement(sequence, index) { + if (typeof sequence.getStrictElement === 'function') { + return sequence.getStrictElement(index); + } + return null; + } + OriginalElementsAreEqual(index1, index2) { + if (this._originalElementsOrHash[index1] !== this._originalElementsOrHash[index2]) { + return false; + } + return (this._hasStrings ? this._originalStringElements[index1] === this._originalStringElements[index2] : true); + } + ModifiedElementsAreEqual(index1, index2) { + if (this._modifiedElementsOrHash[index1] !== this._modifiedElementsOrHash[index2]) { + return false; + } + return (this._hasStrings ? this._modifiedStringElements[index1] === this._modifiedStringElements[index2] : true); + } + ComputeDiff(pretty) { + return this._ComputeDiff(0, this._originalElementsOrHash.length - 1, 0, this._modifiedElementsOrHash.length - 1, pretty); + } + /** + * Computes the differences between the original and modified input + * sequences on the bounded range. + * @returns An array of the differences between the two input sequences. + */ + _ComputeDiff(originalStart, originalEnd, modifiedStart, modifiedEnd, pretty) { + const quitEarlyArr = [false]; + let changes = this.ComputeDiffRecursive(originalStart, originalEnd, modifiedStart, modifiedEnd, quitEarlyArr); + if (pretty) { + // We have to clean up the computed diff to be more intuitive + // but it turns out this cannot be done correctly until the entire set + // of diffs have been computed + changes = this.PrettifyChanges(changes); + } + return { + quitEarly: quitEarlyArr[0], + changes: changes + }; + } + /** + * Private helper method which computes the differences on the bounded range + * recursively. + * @returns An array of the differences between the two input sequences. + */ + ComputeDiffRecursive(originalStart, originalEnd, modifiedStart, modifiedEnd, quitEarlyArr) { + quitEarlyArr[0] = false; + // Find the start of the differences + while (originalStart <= originalEnd && modifiedStart <= modifiedEnd && this.ElementsAreEqual(originalStart, modifiedStart)) { + originalStart++; + modifiedStart++; + } + // Find the end of the differences + while (originalEnd >= originalStart && modifiedEnd >= modifiedStart && this.ElementsAreEqual(originalEnd, modifiedEnd)) { + originalEnd--; + modifiedEnd--; + } + // In the special case where we either have all insertions or all deletions or the sequences are identical + if (originalStart > originalEnd || modifiedStart > modifiedEnd) { + let changes; + if (modifiedStart <= modifiedEnd) { + Debug.Assert(originalStart === originalEnd + 1, 'originalStart should only be one more than originalEnd'); + // All insertions + changes = [ + new DiffChange(originalStart, 0, modifiedStart, modifiedEnd - modifiedStart + 1) + ]; + } + else if (originalStart <= originalEnd) { + Debug.Assert(modifiedStart === modifiedEnd + 1, 'modifiedStart should only be one more than modifiedEnd'); + // All deletions + changes = [ + new DiffChange(originalStart, originalEnd - originalStart + 1, modifiedStart, 0) + ]; + } + else { + Debug.Assert(originalStart === originalEnd + 1, 'originalStart should only be one more than originalEnd'); + Debug.Assert(modifiedStart === modifiedEnd + 1, 'modifiedStart should only be one more than modifiedEnd'); + // Identical sequences - No differences + changes = []; + } + return changes; + } + // This problem can be solved using the Divide-And-Conquer technique. + const midOriginalArr = [0]; + const midModifiedArr = [0]; + const result = this.ComputeRecursionPoint(originalStart, originalEnd, modifiedStart, modifiedEnd, midOriginalArr, midModifiedArr, quitEarlyArr); + const midOriginal = midOriginalArr[0]; + const midModified = midModifiedArr[0]; + if (result !== null) { + // Result is not-null when there was enough memory to compute the changes while + // searching for the recursion point + return result; + } + else if (!quitEarlyArr[0]) { + // We can break the problem down recursively by finding the changes in the + // First Half: (originalStart, modifiedStart) to (midOriginal, midModified) + // Second Half: (midOriginal + 1, minModified + 1) to (originalEnd, modifiedEnd) + // NOTE: ComputeDiff() is inclusive, therefore the second range starts on the next point + const leftChanges = this.ComputeDiffRecursive(originalStart, midOriginal, modifiedStart, midModified, quitEarlyArr); + let rightChanges = []; + if (!quitEarlyArr[0]) { + rightChanges = this.ComputeDiffRecursive(midOriginal + 1, originalEnd, midModified + 1, modifiedEnd, quitEarlyArr); + } + else { + // We didn't have time to finish the first half, so we don't have time to compute this half. + // Consider the entire rest of the sequence different. + rightChanges = [ + new DiffChange(midOriginal + 1, originalEnd - (midOriginal + 1) + 1, midModified + 1, modifiedEnd - (midModified + 1) + 1) + ]; + } + return this.ConcatenateChanges(leftChanges, rightChanges); + } + // If we hit here, we quit early, and so can't return anything meaningful + return [ + new DiffChange(originalStart, originalEnd - originalStart + 1, modifiedStart, modifiedEnd - modifiedStart + 1) + ]; + } + WALKTRACE(diagonalForwardBase, diagonalForwardStart, diagonalForwardEnd, diagonalForwardOffset, diagonalReverseBase, diagonalReverseStart, diagonalReverseEnd, diagonalReverseOffset, forwardPoints, reversePoints, originalIndex, originalEnd, midOriginalArr, modifiedIndex, modifiedEnd, midModifiedArr, deltaIsEven, quitEarlyArr) { + let forwardChanges = null; + let reverseChanges = null; + // First, walk backward through the forward diagonals history + let changeHelper = new DiffChangeHelper(); + let diagonalMin = diagonalForwardStart; + let diagonalMax = diagonalForwardEnd; + let diagonalRelative = (midOriginalArr[0] - midModifiedArr[0]) - diagonalForwardOffset; + let lastOriginalIndex = -1073741824 /* Constants.MIN_SAFE_SMALL_INTEGER */; + let historyIndex = this.m_forwardHistory.length - 1; + do { + // Get the diagonal index from the relative diagonal number + const diagonal = diagonalRelative + diagonalForwardBase; + // Figure out where we came from + if (diagonal === diagonalMin || (diagonal < diagonalMax && forwardPoints[diagonal - 1] < forwardPoints[diagonal + 1])) { + // Vertical line (the element is an insert) + originalIndex = forwardPoints[diagonal + 1]; + modifiedIndex = originalIndex - diagonalRelative - diagonalForwardOffset; + if (originalIndex < lastOriginalIndex) { + changeHelper.MarkNextChange(); + } + lastOriginalIndex = originalIndex; + changeHelper.AddModifiedElement(originalIndex + 1, modifiedIndex); + diagonalRelative = (diagonal + 1) - diagonalForwardBase; //Setup for the next iteration + } + else { + // Horizontal line (the element is a deletion) + originalIndex = forwardPoints[diagonal - 1] + 1; + modifiedIndex = originalIndex - diagonalRelative - diagonalForwardOffset; + if (originalIndex < lastOriginalIndex) { + changeHelper.MarkNextChange(); + } + lastOriginalIndex = originalIndex - 1; + changeHelper.AddOriginalElement(originalIndex, modifiedIndex + 1); + diagonalRelative = (diagonal - 1) - diagonalForwardBase; //Setup for the next iteration + } + if (historyIndex >= 0) { + forwardPoints = this.m_forwardHistory[historyIndex]; + diagonalForwardBase = forwardPoints[0]; //We stored this in the first spot + diagonalMin = 1; + diagonalMax = forwardPoints.length - 1; + } + } while (--historyIndex >= -1); + // Ironically, we get the forward changes as the reverse of the + // order we added them since we technically added them backwards + forwardChanges = changeHelper.getReverseChanges(); + if (quitEarlyArr[0]) { + // TODO: Calculate a partial from the reverse diagonals. + // For now, just assume everything after the midOriginal/midModified point is a diff + let originalStartPoint = midOriginalArr[0] + 1; + let modifiedStartPoint = midModifiedArr[0] + 1; + if (forwardChanges !== null && forwardChanges.length > 0) { + const lastForwardChange = forwardChanges[forwardChanges.length - 1]; + originalStartPoint = Math.max(originalStartPoint, lastForwardChange.getOriginalEnd()); + modifiedStartPoint = Math.max(modifiedStartPoint, lastForwardChange.getModifiedEnd()); + } + reverseChanges = [ + new DiffChange(originalStartPoint, originalEnd - originalStartPoint + 1, modifiedStartPoint, modifiedEnd - modifiedStartPoint + 1) + ]; + } + else { + // Now walk backward through the reverse diagonals history + changeHelper = new DiffChangeHelper(); + diagonalMin = diagonalReverseStart; + diagonalMax = diagonalReverseEnd; + diagonalRelative = (midOriginalArr[0] - midModifiedArr[0]) - diagonalReverseOffset; + lastOriginalIndex = 1073741824 /* Constants.MAX_SAFE_SMALL_INTEGER */; + historyIndex = (deltaIsEven) ? this.m_reverseHistory.length - 1 : this.m_reverseHistory.length - 2; + do { + // Get the diagonal index from the relative diagonal number + const diagonal = diagonalRelative + diagonalReverseBase; + // Figure out where we came from + if (diagonal === diagonalMin || (diagonal < diagonalMax && reversePoints[diagonal - 1] >= reversePoints[diagonal + 1])) { + // Horizontal line (the element is a deletion)) + originalIndex = reversePoints[diagonal + 1] - 1; + modifiedIndex = originalIndex - diagonalRelative - diagonalReverseOffset; + if (originalIndex > lastOriginalIndex) { + changeHelper.MarkNextChange(); + } + lastOriginalIndex = originalIndex + 1; + changeHelper.AddOriginalElement(originalIndex + 1, modifiedIndex + 1); + diagonalRelative = (diagonal + 1) - diagonalReverseBase; //Setup for the next iteration + } + else { + // Vertical line (the element is an insertion) + originalIndex = reversePoints[diagonal - 1]; + modifiedIndex = originalIndex - diagonalRelative - diagonalReverseOffset; + if (originalIndex > lastOriginalIndex) { + changeHelper.MarkNextChange(); + } + lastOriginalIndex = originalIndex; + changeHelper.AddModifiedElement(originalIndex + 1, modifiedIndex + 1); + diagonalRelative = (diagonal - 1) - diagonalReverseBase; //Setup for the next iteration + } + if (historyIndex >= 0) { + reversePoints = this.m_reverseHistory[historyIndex]; + diagonalReverseBase = reversePoints[0]; //We stored this in the first spot + diagonalMin = 1; + diagonalMax = reversePoints.length - 1; + } + } while (--historyIndex >= -1); + // There are cases where the reverse history will find diffs that + // are correct, but not intuitive, so we need shift them. + reverseChanges = changeHelper.getChanges(); + } + return this.ConcatenateChanges(forwardChanges, reverseChanges); + } + /** + * Given the range to compute the diff on, this method finds the point: + * (midOriginal, midModified) + * that exists in the middle of the LCS of the two sequences and + * is the point at which the LCS problem may be broken down recursively. + * This method will try to keep the LCS trace in memory. If the LCS recursion + * point is calculated and the full trace is available in memory, then this method + * will return the change list. + * @param originalStart The start bound of the original sequence range + * @param originalEnd The end bound of the original sequence range + * @param modifiedStart The start bound of the modified sequence range + * @param modifiedEnd The end bound of the modified sequence range + * @param midOriginal The middle point of the original sequence range + * @param midModified The middle point of the modified sequence range + * @returns The diff changes, if available, otherwise null + */ + ComputeRecursionPoint(originalStart, originalEnd, modifiedStart, modifiedEnd, midOriginalArr, midModifiedArr, quitEarlyArr) { + let originalIndex = 0, modifiedIndex = 0; + let diagonalForwardStart = 0, diagonalForwardEnd = 0; + let diagonalReverseStart = 0, diagonalReverseEnd = 0; + // To traverse the edit graph and produce the proper LCS, our actual + // start position is just outside the given boundary + originalStart--; + modifiedStart--; + // We set these up to make the compiler happy, but they will + // be replaced before we return with the actual recursion point + midOriginalArr[0] = 0; + midModifiedArr[0] = 0; + // Clear out the history + this.m_forwardHistory = []; + this.m_reverseHistory = []; + // Each cell in the two arrays corresponds to a diagonal in the edit graph. + // The integer value in the cell represents the originalIndex of the furthest + // reaching point found so far that ends in that diagonal. + // The modifiedIndex can be computed mathematically from the originalIndex and the diagonal number. + const maxDifferences = (originalEnd - originalStart) + (modifiedEnd - modifiedStart); + const numDiagonals = maxDifferences + 1; + const forwardPoints = new Int32Array(numDiagonals); + const reversePoints = new Int32Array(numDiagonals); + // diagonalForwardBase: Index into forwardPoints of the diagonal which passes through (originalStart, modifiedStart) + // diagonalReverseBase: Index into reversePoints of the diagonal which passes through (originalEnd, modifiedEnd) + const diagonalForwardBase = (modifiedEnd - modifiedStart); + const diagonalReverseBase = (originalEnd - originalStart); + // diagonalForwardOffset: Geometric offset which allows modifiedIndex to be computed from originalIndex and the + // diagonal number (relative to diagonalForwardBase) + // diagonalReverseOffset: Geometric offset which allows modifiedIndex to be computed from originalIndex and the + // diagonal number (relative to diagonalReverseBase) + const diagonalForwardOffset = (originalStart - modifiedStart); + const diagonalReverseOffset = (originalEnd - modifiedEnd); + // delta: The difference between the end diagonal and the start diagonal. This is used to relate diagonal numbers + // relative to the start diagonal with diagonal numbers relative to the end diagonal. + // The Even/Oddn-ness of this delta is important for determining when we should check for overlap + const delta = diagonalReverseBase - diagonalForwardBase; + const deltaIsEven = (delta % 2 === 0); + // Here we set up the start and end points as the furthest points found so far + // in both the forward and reverse directions, respectively + forwardPoints[diagonalForwardBase] = originalStart; + reversePoints[diagonalReverseBase] = originalEnd; + // Remember if we quit early, and thus need to do a best-effort result instead of a real result. + quitEarlyArr[0] = false; + // A couple of points: + // --With this method, we iterate on the number of differences between the two sequences. + // The more differences there actually are, the longer this will take. + // --Also, as the number of differences increases, we have to search on diagonals further + // away from the reference diagonal (which is diagonalForwardBase for forward, diagonalReverseBase for reverse). + // --We extend on even diagonals (relative to the reference diagonal) only when numDifferences + // is even and odd diagonals only when numDifferences is odd. + for (let numDifferences = 1; numDifferences <= (maxDifferences / 2) + 1; numDifferences++) { + let furthestOriginalIndex = 0; + let furthestModifiedIndex = 0; + // Run the algorithm in the forward direction + diagonalForwardStart = this.ClipDiagonalBound(diagonalForwardBase - numDifferences, numDifferences, diagonalForwardBase, numDiagonals); + diagonalForwardEnd = this.ClipDiagonalBound(diagonalForwardBase + numDifferences, numDifferences, diagonalForwardBase, numDiagonals); + for (let diagonal = diagonalForwardStart; diagonal <= diagonalForwardEnd; diagonal += 2) { + // STEP 1: We extend the furthest reaching point in the present diagonal + // by looking at the diagonals above and below and picking the one whose point + // is further away from the start point (originalStart, modifiedStart) + if (diagonal === diagonalForwardStart || (diagonal < diagonalForwardEnd && forwardPoints[diagonal - 1] < forwardPoints[diagonal + 1])) { + originalIndex = forwardPoints[diagonal + 1]; + } + else { + originalIndex = forwardPoints[diagonal - 1] + 1; + } + modifiedIndex = originalIndex - (diagonal - diagonalForwardBase) - diagonalForwardOffset; + // Save the current originalIndex so we can test for false overlap in step 3 + const tempOriginalIndex = originalIndex; + // STEP 2: We can continue to extend the furthest reaching point in the present diagonal + // so long as the elements are equal. + while (originalIndex < originalEnd && modifiedIndex < modifiedEnd && this.ElementsAreEqual(originalIndex + 1, modifiedIndex + 1)) { + originalIndex++; + modifiedIndex++; + } + forwardPoints[diagonal] = originalIndex; + if (originalIndex + modifiedIndex > furthestOriginalIndex + furthestModifiedIndex) { + furthestOriginalIndex = originalIndex; + furthestModifiedIndex = modifiedIndex; + } + // STEP 3: If delta is odd (overlap first happens on forward when delta is odd) + // and diagonal is in the range of reverse diagonals computed for numDifferences-1 + // (the previous iteration; we haven't computed reverse diagonals for numDifferences yet) + // then check for overlap. + if (!deltaIsEven && Math.abs(diagonal - diagonalReverseBase) <= (numDifferences - 1)) { + if (originalIndex >= reversePoints[diagonal]) { + midOriginalArr[0] = originalIndex; + midModifiedArr[0] = modifiedIndex; + if (tempOriginalIndex <= reversePoints[diagonal] && 1447 /* LocalConstants.MaxDifferencesHistory */ > 0 && numDifferences <= (1447 /* LocalConstants.MaxDifferencesHistory */ + 1)) { + // BINGO! We overlapped, and we have the full trace in memory! + return this.WALKTRACE(diagonalForwardBase, diagonalForwardStart, diagonalForwardEnd, diagonalForwardOffset, diagonalReverseBase, diagonalReverseStart, diagonalReverseEnd, diagonalReverseOffset, forwardPoints, reversePoints, originalIndex, originalEnd, midOriginalArr, modifiedIndex, modifiedEnd, midModifiedArr, deltaIsEven, quitEarlyArr); + } + else { + // Either false overlap, or we didn't have enough memory for the full trace + // Just return the recursion point + return null; + } + } + } + } + // Check to see if we should be quitting early, before moving on to the next iteration. + const matchLengthOfLongest = ((furthestOriginalIndex - originalStart) + (furthestModifiedIndex - modifiedStart) - numDifferences) / 2; + if (this.ContinueProcessingPredicate !== null && !this.ContinueProcessingPredicate(furthestOriginalIndex, matchLengthOfLongest)) { + // We can't finish, so skip ahead to generating a result from what we have. + quitEarlyArr[0] = true; + // Use the furthest distance we got in the forward direction. + midOriginalArr[0] = furthestOriginalIndex; + midModifiedArr[0] = furthestModifiedIndex; + if (matchLengthOfLongest > 0 && 1447 /* LocalConstants.MaxDifferencesHistory */ > 0 && numDifferences <= (1447 /* LocalConstants.MaxDifferencesHistory */ + 1)) { + // Enough of the history is in memory to walk it backwards + return this.WALKTRACE(diagonalForwardBase, diagonalForwardStart, diagonalForwardEnd, diagonalForwardOffset, diagonalReverseBase, diagonalReverseStart, diagonalReverseEnd, diagonalReverseOffset, forwardPoints, reversePoints, originalIndex, originalEnd, midOriginalArr, modifiedIndex, modifiedEnd, midModifiedArr, deltaIsEven, quitEarlyArr); + } + else { + // We didn't actually remember enough of the history. + //Since we are quitting the diff early, we need to shift back the originalStart and modified start + //back into the boundary limits since we decremented their value above beyond the boundary limit. + originalStart++; + modifiedStart++; + return [ + new DiffChange(originalStart, originalEnd - originalStart + 1, modifiedStart, modifiedEnd - modifiedStart + 1) + ]; + } + } + // Run the algorithm in the reverse direction + diagonalReverseStart = this.ClipDiagonalBound(diagonalReverseBase - numDifferences, numDifferences, diagonalReverseBase, numDiagonals); + diagonalReverseEnd = this.ClipDiagonalBound(diagonalReverseBase + numDifferences, numDifferences, diagonalReverseBase, numDiagonals); + for (let diagonal = diagonalReverseStart; diagonal <= diagonalReverseEnd; diagonal += 2) { + // STEP 1: We extend the furthest reaching point in the present diagonal + // by looking at the diagonals above and below and picking the one whose point + // is further away from the start point (originalEnd, modifiedEnd) + if (diagonal === diagonalReverseStart || (diagonal < diagonalReverseEnd && reversePoints[diagonal - 1] >= reversePoints[diagonal + 1])) { + originalIndex = reversePoints[diagonal + 1] - 1; + } + else { + originalIndex = reversePoints[diagonal - 1]; + } + modifiedIndex = originalIndex - (diagonal - diagonalReverseBase) - diagonalReverseOffset; + // Save the current originalIndex so we can test for false overlap + const tempOriginalIndex = originalIndex; + // STEP 2: We can continue to extend the furthest reaching point in the present diagonal + // as long as the elements are equal. + while (originalIndex > originalStart && modifiedIndex > modifiedStart && this.ElementsAreEqual(originalIndex, modifiedIndex)) { + originalIndex--; + modifiedIndex--; + } + reversePoints[diagonal] = originalIndex; + // STEP 4: If delta is even (overlap first happens on reverse when delta is even) + // and diagonal is in the range of forward diagonals computed for numDifferences + // then check for overlap. + if (deltaIsEven && Math.abs(diagonal - diagonalForwardBase) <= numDifferences) { + if (originalIndex <= forwardPoints[diagonal]) { + midOriginalArr[0] = originalIndex; + midModifiedArr[0] = modifiedIndex; + if (tempOriginalIndex >= forwardPoints[diagonal] && 1447 /* LocalConstants.MaxDifferencesHistory */ > 0 && numDifferences <= (1447 /* LocalConstants.MaxDifferencesHistory */ + 1)) { + // BINGO! We overlapped, and we have the full trace in memory! + return this.WALKTRACE(diagonalForwardBase, diagonalForwardStart, diagonalForwardEnd, diagonalForwardOffset, diagonalReverseBase, diagonalReverseStart, diagonalReverseEnd, diagonalReverseOffset, forwardPoints, reversePoints, originalIndex, originalEnd, midOriginalArr, modifiedIndex, modifiedEnd, midModifiedArr, deltaIsEven, quitEarlyArr); + } + else { + // Either false overlap, or we didn't have enough memory for the full trace + // Just return the recursion point + return null; + } + } + } + } + // Save current vectors to history before the next iteration + if (numDifferences <= 1447 /* LocalConstants.MaxDifferencesHistory */) { + // We are allocating space for one extra int, which we fill with + // the index of the diagonal base index + let temp = new Int32Array(diagonalForwardEnd - diagonalForwardStart + 2); + temp[0] = diagonalForwardBase - diagonalForwardStart + 1; + MyArray.Copy2(forwardPoints, diagonalForwardStart, temp, 1, diagonalForwardEnd - diagonalForwardStart + 1); + this.m_forwardHistory.push(temp); + temp = new Int32Array(diagonalReverseEnd - diagonalReverseStart + 2); + temp[0] = diagonalReverseBase - diagonalReverseStart + 1; + MyArray.Copy2(reversePoints, diagonalReverseStart, temp, 1, diagonalReverseEnd - diagonalReverseStart + 1); + this.m_reverseHistory.push(temp); + } + } + // If we got here, then we have the full trace in history. We just have to convert it to a change list + // NOTE: This part is a bit messy + return this.WALKTRACE(diagonalForwardBase, diagonalForwardStart, diagonalForwardEnd, diagonalForwardOffset, diagonalReverseBase, diagonalReverseStart, diagonalReverseEnd, diagonalReverseOffset, forwardPoints, reversePoints, originalIndex, originalEnd, midOriginalArr, modifiedIndex, modifiedEnd, midModifiedArr, deltaIsEven, quitEarlyArr); + } + /** + * Shifts the given changes to provide a more intuitive diff. + * While the first element in a diff matches the first element after the diff, + * we shift the diff down. + * + * @param changes The list of changes to shift + * @returns The shifted changes + */ + PrettifyChanges(changes) { + // Shift all the changes down first + for (let i = 0; i < changes.length; i++) { + const change = changes[i]; + const originalStop = (i < changes.length - 1) ? changes[i + 1].originalStart : this._originalElementsOrHash.length; + const modifiedStop = (i < changes.length - 1) ? changes[i + 1].modifiedStart : this._modifiedElementsOrHash.length; + const checkOriginal = change.originalLength > 0; + const checkModified = change.modifiedLength > 0; + while (change.originalStart + change.originalLength < originalStop + && change.modifiedStart + change.modifiedLength < modifiedStop + && (!checkOriginal || this.OriginalElementsAreEqual(change.originalStart, change.originalStart + change.originalLength)) + && (!checkModified || this.ModifiedElementsAreEqual(change.modifiedStart, change.modifiedStart + change.modifiedLength))) { + const startStrictEqual = this.ElementsAreStrictEqual(change.originalStart, change.modifiedStart); + const endStrictEqual = this.ElementsAreStrictEqual(change.originalStart + change.originalLength, change.modifiedStart + change.modifiedLength); + if (endStrictEqual && !startStrictEqual) { + // moving the change down would create an equal change, but the elements are not strict equal + break; + } + change.originalStart++; + change.modifiedStart++; + } + const mergedChangeArr = [null]; + if (i < changes.length - 1 && this.ChangesOverlap(changes[i], changes[i + 1], mergedChangeArr)) { + changes[i] = mergedChangeArr[0]; + changes.splice(i + 1, 1); + i--; + continue; + } + } + // Shift changes back up until we hit empty or whitespace-only lines + for (let i = changes.length - 1; i >= 0; i--) { + const change = changes[i]; + let originalStop = 0; + let modifiedStop = 0; + if (i > 0) { + const prevChange = changes[i - 1]; + originalStop = prevChange.originalStart + prevChange.originalLength; + modifiedStop = prevChange.modifiedStart + prevChange.modifiedLength; + } + const checkOriginal = change.originalLength > 0; + const checkModified = change.modifiedLength > 0; + let bestDelta = 0; + let bestScore = this._boundaryScore(change.originalStart, change.originalLength, change.modifiedStart, change.modifiedLength); + for (let delta = 1;; delta++) { + const originalStart = change.originalStart - delta; + const modifiedStart = change.modifiedStart - delta; + if (originalStart < originalStop || modifiedStart < modifiedStop) { + break; + } + if (checkOriginal && !this.OriginalElementsAreEqual(originalStart, originalStart + change.originalLength)) { + break; + } + if (checkModified && !this.ModifiedElementsAreEqual(modifiedStart, modifiedStart + change.modifiedLength)) { + break; + } + const touchingPreviousChange = (originalStart === originalStop && modifiedStart === modifiedStop); + const score = ((touchingPreviousChange ? 5 : 0) + + this._boundaryScore(originalStart, change.originalLength, modifiedStart, change.modifiedLength)); + if (score > bestScore) { + bestScore = score; + bestDelta = delta; + } + } + change.originalStart -= bestDelta; + change.modifiedStart -= bestDelta; + const mergedChangeArr = [null]; + if (i > 0 && this.ChangesOverlap(changes[i - 1], changes[i], mergedChangeArr)) { + changes[i - 1] = mergedChangeArr[0]; + changes.splice(i, 1); + i++; + continue; + } + } + // There could be multiple longest common substrings. + // Give preference to the ones containing longer lines + if (this._hasStrings) { + for (let i = 1, len = changes.length; i < len; i++) { + const aChange = changes[i - 1]; + const bChange = changes[i]; + const matchedLength = bChange.originalStart - aChange.originalStart - aChange.originalLength; + const aOriginalStart = aChange.originalStart; + const bOriginalEnd = bChange.originalStart + bChange.originalLength; + const abOriginalLength = bOriginalEnd - aOriginalStart; + const aModifiedStart = aChange.modifiedStart; + const bModifiedEnd = bChange.modifiedStart + bChange.modifiedLength; + const abModifiedLength = bModifiedEnd - aModifiedStart; + // Avoid wasting a lot of time with these searches + if (matchedLength < 5 && abOriginalLength < 20 && abModifiedLength < 20) { + const t = this._findBetterContiguousSequence(aOriginalStart, abOriginalLength, aModifiedStart, abModifiedLength, matchedLength); + if (t) { + const [originalMatchStart, modifiedMatchStart] = t; + if (originalMatchStart !== aChange.originalStart + aChange.originalLength || modifiedMatchStart !== aChange.modifiedStart + aChange.modifiedLength) { + // switch to another sequence that has a better score + aChange.originalLength = originalMatchStart - aChange.originalStart; + aChange.modifiedLength = modifiedMatchStart - aChange.modifiedStart; + bChange.originalStart = originalMatchStart + matchedLength; + bChange.modifiedStart = modifiedMatchStart + matchedLength; + bChange.originalLength = bOriginalEnd - bChange.originalStart; + bChange.modifiedLength = bModifiedEnd - bChange.modifiedStart; + } + } + } + } + } + return changes; + } + _findBetterContiguousSequence(originalStart, originalLength, modifiedStart, modifiedLength, desiredLength) { + if (originalLength < desiredLength || modifiedLength < desiredLength) { + return null; + } + const originalMax = originalStart + originalLength - desiredLength + 1; + const modifiedMax = modifiedStart + modifiedLength - desiredLength + 1; + let bestScore = 0; + let bestOriginalStart = 0; + let bestModifiedStart = 0; + for (let i = originalStart; i < originalMax; i++) { + for (let j = modifiedStart; j < modifiedMax; j++) { + const score = this._contiguousSequenceScore(i, j, desiredLength); + if (score > 0 && score > bestScore) { + bestScore = score; + bestOriginalStart = i; + bestModifiedStart = j; + } + } + } + if (bestScore > 0) { + return [bestOriginalStart, bestModifiedStart]; + } + return null; + } + _contiguousSequenceScore(originalStart, modifiedStart, length) { + let score = 0; + for (let l = 0; l < length; l++) { + if (!this.ElementsAreEqual(originalStart + l, modifiedStart + l)) { + return 0; + } + score += this._originalStringElements[originalStart + l].length; + } + return score; + } + _OriginalIsBoundary(index) { + if (index <= 0 || index >= this._originalElementsOrHash.length - 1) { + return true; + } + return (this._hasStrings && /^\s*$/.test(this._originalStringElements[index])); + } + _OriginalRegionIsBoundary(originalStart, originalLength) { + if (this._OriginalIsBoundary(originalStart) || this._OriginalIsBoundary(originalStart - 1)) { + return true; + } + if (originalLength > 0) { + const originalEnd = originalStart + originalLength; + if (this._OriginalIsBoundary(originalEnd - 1) || this._OriginalIsBoundary(originalEnd)) { + return true; + } + } + return false; + } + _ModifiedIsBoundary(index) { + if (index <= 0 || index >= this._modifiedElementsOrHash.length - 1) { + return true; + } + return (this._hasStrings && /^\s*$/.test(this._modifiedStringElements[index])); + } + _ModifiedRegionIsBoundary(modifiedStart, modifiedLength) { + if (this._ModifiedIsBoundary(modifiedStart) || this._ModifiedIsBoundary(modifiedStart - 1)) { + return true; + } + if (modifiedLength > 0) { + const modifiedEnd = modifiedStart + modifiedLength; + if (this._ModifiedIsBoundary(modifiedEnd - 1) || this._ModifiedIsBoundary(modifiedEnd)) { + return true; + } + } + return false; + } + _boundaryScore(originalStart, originalLength, modifiedStart, modifiedLength) { + const originalScore = (this._OriginalRegionIsBoundary(originalStart, originalLength) ? 1 : 0); + const modifiedScore = (this._ModifiedRegionIsBoundary(modifiedStart, modifiedLength) ? 1 : 0); + return (originalScore + modifiedScore); + } + /** + * Concatenates the two input DiffChange lists and returns the resulting + * list. + * @param The left changes + * @param The right changes + * @returns The concatenated list + */ + ConcatenateChanges(left, right) { + const mergedChangeArr = []; + if (left.length === 0 || right.length === 0) { + return (right.length > 0) ? right : left; + } + else if (this.ChangesOverlap(left[left.length - 1], right[0], mergedChangeArr)) { + // Since we break the problem down recursively, it is possible that we + // might recurse in the middle of a change thereby splitting it into + // two changes. Here in the combining stage, we detect and fuse those + // changes back together + const result = new Array(left.length + right.length - 1); + MyArray.Copy(left, 0, result, 0, left.length - 1); + result[left.length - 1] = mergedChangeArr[0]; + MyArray.Copy(right, 1, result, left.length, right.length - 1); + return result; + } + else { + const result = new Array(left.length + right.length); + MyArray.Copy(left, 0, result, 0, left.length); + MyArray.Copy(right, 0, result, left.length, right.length); + return result; + } + } + /** + * Returns true if the two changes overlap and can be merged into a single + * change + * @param left The left change + * @param right The right change + * @param mergedChange The merged change if the two overlap, null otherwise + * @returns True if the two changes overlap + */ + ChangesOverlap(left, right, mergedChangeArr) { + Debug.Assert(left.originalStart <= right.originalStart, 'Left change is not less than or equal to right change'); + Debug.Assert(left.modifiedStart <= right.modifiedStart, 'Left change is not less than or equal to right change'); + if (left.originalStart + left.originalLength >= right.originalStart || left.modifiedStart + left.modifiedLength >= right.modifiedStart) { + const originalStart = left.originalStart; + let originalLength = left.originalLength; + const modifiedStart = left.modifiedStart; + let modifiedLength = left.modifiedLength; + if (left.originalStart + left.originalLength >= right.originalStart) { + originalLength = right.originalStart + right.originalLength - left.originalStart; + } + if (left.modifiedStart + left.modifiedLength >= right.modifiedStart) { + modifiedLength = right.modifiedStart + right.modifiedLength - left.modifiedStart; + } + mergedChangeArr[0] = new DiffChange(originalStart, originalLength, modifiedStart, modifiedLength); + return true; + } + else { + mergedChangeArr[0] = null; + return false; + } + } + /** + * Helper method used to clip a diagonal index to the range of valid + * diagonals. This also decides whether or not the diagonal index, + * if it exceeds the boundary, should be clipped to the boundary or clipped + * one inside the boundary depending on the Even/Odd status of the boundary + * and numDifferences. + * @param diagonal The index of the diagonal to clip. + * @param numDifferences The current number of differences being iterated upon. + * @param diagonalBaseIndex The base reference diagonal. + * @param numDiagonals The total number of diagonals. + * @returns The clipped diagonal index. + */ + ClipDiagonalBound(diagonal, numDifferences, diagonalBaseIndex, numDiagonals) { + if (diagonal >= 0 && diagonal < numDiagonals) { + // Nothing to clip, its in range + return diagonal; + } + // diagonalsBelow: The number of diagonals below the reference diagonal + // diagonalsAbove: The number of diagonals above the reference diagonal + const diagonalsBelow = diagonalBaseIndex; + const diagonalsAbove = numDiagonals - diagonalBaseIndex - 1; + const diffEven = (numDifferences % 2 === 0); + if (diagonal < 0) { + const lowerBoundEven = (diagonalsBelow % 2 === 0); + return (diffEven === lowerBoundEven) ? 0 : 1; + } + else { + const upperBoundEven = (diagonalsAbove % 2 === 0); + return (diffEven === upperBoundEven) ? numDiagonals - 1 : numDiagonals - 2; + } + } +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +let safeProcess; +// Native sandbox environment +const vscodeGlobal = globalThis.vscode; +if (typeof vscodeGlobal !== 'undefined' && typeof vscodeGlobal.process !== 'undefined') { + const sandboxProcess = vscodeGlobal.process; + safeProcess = { + get platform() { return sandboxProcess.platform; }, + get arch() { return sandboxProcess.arch; }, + get env() { return sandboxProcess.env; }, + cwd() { return sandboxProcess.cwd(); } + }; +} +// Native node.js environment +else if (typeof process !== 'undefined') { + safeProcess = { + get platform() { return process.platform; }, + get arch() { return process.arch; }, + get env() { return process.env; }, + cwd() { return process.env['VSCODE_CWD'] || process.cwd(); } + }; +} +// Web environment +else { + safeProcess = { + // Supported + get platform() { return isWindows ? 'win32' : isMacintosh ? 'darwin' : 'linux'; }, + get arch() { return undefined; /* arch is undefined in web */ }, + // Unsupported + get env() { return {}; }, + cwd() { return '/'; } + }; +} +/** + * Provides safe access to the `cwd` property in node.js, sandboxed or web + * environments. + * + * Note: in web, this property is hardcoded to be `/`. + * + * @skipMangle + */ +const cwd = safeProcess.cwd; +/** + * Provides safe access to the `env` property in node.js, sandboxed or web + * environments. + * + * Note: in web, this property is hardcoded to be `{}`. + */ +const env = safeProcess.env; +/** + * Provides safe access to the `platform` property in node.js, sandboxed or web + * environments. + */ +const platform = safeProcess.platform; + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +// NOTE: VSCode's copy of nodejs path library to be usable in common (non-node) namespace +// Copied from: https://github.com/nodejs/node/blob/v16.14.2/lib/path.js +/** + * Copyright Joyent, Inc. and other Node contributors. + * + * 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. + */ +const CHAR_UPPERCASE_A = 65; /* A */ +const CHAR_LOWERCASE_A = 97; /* a */ +const CHAR_UPPERCASE_Z = 90; /* Z */ +const CHAR_LOWERCASE_Z = 122; /* z */ +const CHAR_DOT = 46; /* . */ +const CHAR_FORWARD_SLASH = 47; /* / */ +const CHAR_BACKWARD_SLASH = 92; /* \ */ +const CHAR_COLON = 58; /* : */ +const CHAR_QUESTION_MARK = 63; /* ? */ +class ErrorInvalidArgType extends Error { + constructor(name, expected, actual) { + // determiner: 'must be' or 'must not be' + let determiner; + if (typeof expected === 'string' && expected.indexOf('not ') === 0) { + determiner = 'must not be'; + expected = expected.replace(/^not /, ''); + } + else { + determiner = 'must be'; + } + const type = name.indexOf('.') !== -1 ? 'property' : 'argument'; + let msg = `The "${name}" ${type} ${determiner} of type ${expected}`; + msg += `. Received type ${typeof actual}`; + super(msg); + this.code = 'ERR_INVALID_ARG_TYPE'; + } +} +function validateObject(pathObject, name) { + if (pathObject === null || typeof pathObject !== 'object') { + throw new ErrorInvalidArgType(name, 'Object', pathObject); + } +} +function validateString(value, name) { + if (typeof value !== 'string') { + throw new ErrorInvalidArgType(name, 'string', value); + } +} +const platformIsWin32 = (platform === 'win32'); +function isPathSeparator(code) { + return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH; +} +function isPosixPathSeparator(code) { + return code === CHAR_FORWARD_SLASH; +} +function isWindowsDeviceRoot(code) { + return (code >= CHAR_UPPERCASE_A && code <= CHAR_UPPERCASE_Z) || + (code >= CHAR_LOWERCASE_A && code <= CHAR_LOWERCASE_Z); +} +// Resolves . and .. elements in a path with directory names +function normalizeString(path, allowAboveRoot, separator, isPathSeparator) { + let res = ''; + let lastSegmentLength = 0; + let lastSlash = -1; + let dots = 0; + let code = 0; + for (let i = 0; i <= path.length; ++i) { + if (i < path.length) { + code = path.charCodeAt(i); + } + else if (isPathSeparator(code)) { + break; + } + else { + code = CHAR_FORWARD_SLASH; + } + if (isPathSeparator(code)) { + if (lastSlash === i - 1 || dots === 1) ; + else if (dots === 2) { + if (res.length < 2 || lastSegmentLength !== 2 || + res.charCodeAt(res.length - 1) !== CHAR_DOT || + res.charCodeAt(res.length - 2) !== CHAR_DOT) { + if (res.length > 2) { + const lastSlashIndex = res.lastIndexOf(separator); + if (lastSlashIndex === -1) { + res = ''; + lastSegmentLength = 0; + } + else { + res = res.slice(0, lastSlashIndex); + lastSegmentLength = res.length - 1 - res.lastIndexOf(separator); + } + lastSlash = i; + dots = 0; + continue; + } + else if (res.length !== 0) { + res = ''; + lastSegmentLength = 0; + lastSlash = i; + dots = 0; + continue; + } + } + if (allowAboveRoot) { + res += res.length > 0 ? `${separator}..` : '..'; + lastSegmentLength = 2; + } + } + else { + if (res.length > 0) { + res += `${separator}${path.slice(lastSlash + 1, i)}`; + } + else { + res = path.slice(lastSlash + 1, i); + } + lastSegmentLength = i - lastSlash - 1; + } + lastSlash = i; + dots = 0; + } + else if (code === CHAR_DOT && dots !== -1) { + ++dots; + } + else { + dots = -1; + } + } + return res; +} +function _format(sep, pathObject) { + validateObject(pathObject, 'pathObject'); + const dir = pathObject.dir || pathObject.root; + const base = pathObject.base || + `${pathObject.name || ''}${pathObject.ext || ''}`; + if (!dir) { + return base; + } + return dir === pathObject.root ? `${dir}${base}` : `${dir}${sep}${base}`; +} +const win32 = { + // path.resolve([from ...], to) + resolve(...pathSegments) { + let resolvedDevice = ''; + let resolvedTail = ''; + let resolvedAbsolute = false; + for (let i = pathSegments.length - 1; i >= -1; i--) { + let path; + if (i >= 0) { + path = pathSegments[i]; + validateString(path, 'path'); + // Skip empty entries + if (path.length === 0) { + continue; + } + } + else if (resolvedDevice.length === 0) { + path = cwd(); + } + else { + // Windows has the concept of drive-specific current working + // directories. If we've resolved a drive letter but not yet an + // absolute path, get cwd for that drive, or the process cwd if + // the drive cwd is not available. We're sure the device is not + // a UNC path at this points, because UNC paths are always absolute. + path = env[`=${resolvedDevice}`] || cwd(); + // Verify that a cwd was found and that it actually points + // to our drive. If not, default to the drive's root. + if (path === undefined || + (path.slice(0, 2).toLowerCase() !== resolvedDevice.toLowerCase() && + path.charCodeAt(2) === CHAR_BACKWARD_SLASH)) { + path = `${resolvedDevice}\\`; + } + } + const len = path.length; + let rootEnd = 0; + let device = ''; + let isAbsolute = false; + const code = path.charCodeAt(0); + // Try to match a root + if (len === 1) { + if (isPathSeparator(code)) { + // `path` contains just a path separator + rootEnd = 1; + isAbsolute = true; + } + } + else if (isPathSeparator(code)) { + // Possible UNC root + // If we started with a separator, we know we at least have an + // absolute path of some kind (UNC or otherwise) + isAbsolute = true; + if (isPathSeparator(path.charCodeAt(1))) { + // Matched double path separator at beginning + let j = 2; + let last = j; + // Match 1 or more non-path separators + while (j < len && !isPathSeparator(path.charCodeAt(j))) { + j++; + } + if (j < len && j !== last) { + const firstPart = path.slice(last, j); + // Matched! + last = j; + // Match 1 or more path separators + while (j < len && isPathSeparator(path.charCodeAt(j))) { + j++; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more non-path separators + while (j < len && !isPathSeparator(path.charCodeAt(j))) { + j++; + } + if (j === len || j !== last) { + // We matched a UNC root + device = `\\\\${firstPart}\\${path.slice(last, j)}`; + rootEnd = j; + } + } + } + } + else { + rootEnd = 1; + } + } + else if (isWindowsDeviceRoot(code) && + path.charCodeAt(1) === CHAR_COLON) { + // Possible device root + device = path.slice(0, 2); + rootEnd = 2; + if (len > 2 && isPathSeparator(path.charCodeAt(2))) { + // Treat separator following drive name as an absolute path + // indicator + isAbsolute = true; + rootEnd = 3; + } + } + if (device.length > 0) { + if (resolvedDevice.length > 0) { + if (device.toLowerCase() !== resolvedDevice.toLowerCase()) { + // This path points to another device so it is not applicable + continue; + } + } + else { + resolvedDevice = device; + } + } + if (resolvedAbsolute) { + if (resolvedDevice.length > 0) { + break; + } + } + else { + resolvedTail = `${path.slice(rootEnd)}\\${resolvedTail}`; + resolvedAbsolute = isAbsolute; + if (isAbsolute && resolvedDevice.length > 0) { + break; + } + } + } + // At this point the path should be resolved to a full absolute path, + // but handle relative paths to be safe (might happen when process.cwd() + // fails) + // Normalize the tail path + resolvedTail = normalizeString(resolvedTail, !resolvedAbsolute, '\\', isPathSeparator); + return resolvedAbsolute ? + `${resolvedDevice}\\${resolvedTail}` : + `${resolvedDevice}${resolvedTail}` || '.'; + }, + normalize(path) { + validateString(path, 'path'); + const len = path.length; + if (len === 0) { + return '.'; + } + let rootEnd = 0; + let device; + let isAbsolute = false; + const code = path.charCodeAt(0); + // Try to match a root + if (len === 1) { + // `path` contains just a single char, exit early to avoid + // unnecessary work + return isPosixPathSeparator(code) ? '\\' : path; + } + if (isPathSeparator(code)) { + // Possible UNC root + // If we started with a separator, we know we at least have an absolute + // path of some kind (UNC or otherwise) + isAbsolute = true; + if (isPathSeparator(path.charCodeAt(1))) { + // Matched double path separator at beginning + let j = 2; + let last = j; + // Match 1 or more non-path separators + while (j < len && !isPathSeparator(path.charCodeAt(j))) { + j++; + } + if (j < len && j !== last) { + const firstPart = path.slice(last, j); + // Matched! + last = j; + // Match 1 or more path separators + while (j < len && isPathSeparator(path.charCodeAt(j))) { + j++; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more non-path separators + while (j < len && !isPathSeparator(path.charCodeAt(j))) { + j++; + } + if (j === len) { + // We matched a UNC root only + // Return the normalized version of the UNC root since there + // is nothing left to process + return `\\\\${firstPart}\\${path.slice(last)}\\`; + } + if (j !== last) { + // We matched a UNC root with leftovers + device = `\\\\${firstPart}\\${path.slice(last, j)}`; + rootEnd = j; + } + } + } + } + else { + rootEnd = 1; + } + } + else if (isWindowsDeviceRoot(code) && path.charCodeAt(1) === CHAR_COLON) { + // Possible device root + device = path.slice(0, 2); + rootEnd = 2; + if (len > 2 && isPathSeparator(path.charCodeAt(2))) { + // Treat separator following drive name as an absolute path + // indicator + isAbsolute = true; + rootEnd = 3; + } + } + let tail = rootEnd < len ? + normalizeString(path.slice(rootEnd), !isAbsolute, '\\', isPathSeparator) : + ''; + if (tail.length === 0 && !isAbsolute) { + tail = '.'; + } + if (tail.length > 0 && isPathSeparator(path.charCodeAt(len - 1))) { + tail += '\\'; + } + if (device === undefined) { + return isAbsolute ? `\\${tail}` : tail; + } + return isAbsolute ? `${device}\\${tail}` : `${device}${tail}`; + }, + isAbsolute(path) { + validateString(path, 'path'); + const len = path.length; + if (len === 0) { + return false; + } + const code = path.charCodeAt(0); + return isPathSeparator(code) || + // Possible device root + (len > 2 && + isWindowsDeviceRoot(code) && + path.charCodeAt(1) === CHAR_COLON && + isPathSeparator(path.charCodeAt(2))); + }, + join(...paths) { + if (paths.length === 0) { + return '.'; + } + let joined; + let firstPart; + for (let i = 0; i < paths.length; ++i) { + const arg = paths[i]; + validateString(arg, 'path'); + if (arg.length > 0) { + if (joined === undefined) { + joined = firstPart = arg; + } + else { + joined += `\\${arg}`; + } + } + } + if (joined === undefined) { + return '.'; + } + // Make sure that the joined path doesn't start with two slashes, because + // normalize() will mistake it for a UNC path then. + // + // This step is skipped when it is very clear that the user actually + // intended to point at a UNC path. This is assumed when the first + // non-empty string arguments starts with exactly two slashes followed by + // at least one more non-slash character. + // + // Note that for normalize() to treat a path as a UNC path it needs to + // have at least 2 components, so we don't filter for that here. + // This means that the user can use join to construct UNC paths from + // a server name and a share name; for example: + // path.join('//server', 'share') -> '\\\\server\\share\\') + let needsReplace = true; + let slashCount = 0; + if (typeof firstPart === 'string' && isPathSeparator(firstPart.charCodeAt(0))) { + ++slashCount; + const firstLen = firstPart.length; + if (firstLen > 1 && isPathSeparator(firstPart.charCodeAt(1))) { + ++slashCount; + if (firstLen > 2) { + if (isPathSeparator(firstPart.charCodeAt(2))) { + ++slashCount; + } + else { + // We matched a UNC path in the first part + needsReplace = false; + } + } + } + } + if (needsReplace) { + // Find any more consecutive slashes we need to replace + while (slashCount < joined.length && + isPathSeparator(joined.charCodeAt(slashCount))) { + slashCount++; + } + // Replace the slashes if needed + if (slashCount >= 2) { + joined = `\\${joined.slice(slashCount)}`; + } + } + return win32.normalize(joined); + }, + // It will solve the relative path from `from` to `to`, for instance: + // from = 'C:\\orandea\\test\\aaa' + // to = 'C:\\orandea\\impl\\bbb' + // The output of the function should be: '..\\..\\impl\\bbb' + relative(from, to) { + validateString(from, 'from'); + validateString(to, 'to'); + if (from === to) { + return ''; + } + const fromOrig = win32.resolve(from); + const toOrig = win32.resolve(to); + if (fromOrig === toOrig) { + return ''; + } + from = fromOrig.toLowerCase(); + to = toOrig.toLowerCase(); + if (from === to) { + return ''; + } + // Trim any leading backslashes + let fromStart = 0; + while (fromStart < from.length && + from.charCodeAt(fromStart) === CHAR_BACKWARD_SLASH) { + fromStart++; + } + // Trim trailing backslashes (applicable to UNC paths only) + let fromEnd = from.length; + while (fromEnd - 1 > fromStart && + from.charCodeAt(fromEnd - 1) === CHAR_BACKWARD_SLASH) { + fromEnd--; + } + const fromLen = fromEnd - fromStart; + // Trim any leading backslashes + let toStart = 0; + while (toStart < to.length && + to.charCodeAt(toStart) === CHAR_BACKWARD_SLASH) { + toStart++; + } + // Trim trailing backslashes (applicable to UNC paths only) + let toEnd = to.length; + while (toEnd - 1 > toStart && + to.charCodeAt(toEnd - 1) === CHAR_BACKWARD_SLASH) { + toEnd--; + } + const toLen = toEnd - toStart; + // Compare paths to find the longest common path from root + const length = fromLen < toLen ? fromLen : toLen; + let lastCommonSep = -1; + let i = 0; + for (; i < length; i++) { + const fromCode = from.charCodeAt(fromStart + i); + if (fromCode !== to.charCodeAt(toStart + i)) { + break; + } + else if (fromCode === CHAR_BACKWARD_SLASH) { + lastCommonSep = i; + } + } + // We found a mismatch before the first common path separator was seen, so + // return the original `to`. + if (i !== length) { + if (lastCommonSep === -1) { + return toOrig; + } + } + else { + if (toLen > length) { + if (to.charCodeAt(toStart + i) === CHAR_BACKWARD_SLASH) { + // We get here if `from` is the exact base path for `to`. + // For example: from='C:\\foo\\bar'; to='C:\\foo\\bar\\baz' + return toOrig.slice(toStart + i + 1); + } + if (i === 2) { + // We get here if `from` is the device root. + // For example: from='C:\\'; to='C:\\foo' + return toOrig.slice(toStart + i); + } + } + if (fromLen > length) { + if (from.charCodeAt(fromStart + i) === CHAR_BACKWARD_SLASH) { + // We get here if `to` is the exact base path for `from`. + // For example: from='C:\\foo\\bar'; to='C:\\foo' + lastCommonSep = i; + } + else if (i === 2) { + // We get here if `to` is the device root. + // For example: from='C:\\foo\\bar'; to='C:\\' + lastCommonSep = 3; + } + } + if (lastCommonSep === -1) { + lastCommonSep = 0; + } + } + let out = ''; + // Generate the relative path based on the path difference between `to` and + // `from` + for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) { + if (i === fromEnd || from.charCodeAt(i) === CHAR_BACKWARD_SLASH) { + out += out.length === 0 ? '..' : '\\..'; + } + } + toStart += lastCommonSep; + // Lastly, append the rest of the destination (`to`) path that comes after + // the common path parts + if (out.length > 0) { + return `${out}${toOrig.slice(toStart, toEnd)}`; + } + if (toOrig.charCodeAt(toStart) === CHAR_BACKWARD_SLASH) { + ++toStart; + } + return toOrig.slice(toStart, toEnd); + }, + toNamespacedPath(path) { + // Note: this will *probably* throw somewhere. + if (typeof path !== 'string' || path.length === 0) { + return path; + } + const resolvedPath = win32.resolve(path); + if (resolvedPath.length <= 2) { + return path; + } + if (resolvedPath.charCodeAt(0) === CHAR_BACKWARD_SLASH) { + // Possible UNC root + if (resolvedPath.charCodeAt(1) === CHAR_BACKWARD_SLASH) { + const code = resolvedPath.charCodeAt(2); + if (code !== CHAR_QUESTION_MARK && code !== CHAR_DOT) { + // Matched non-long UNC root, convert the path to a long UNC path + return `\\\\?\\UNC\\${resolvedPath.slice(2)}`; + } + } + } + else if (isWindowsDeviceRoot(resolvedPath.charCodeAt(0)) && + resolvedPath.charCodeAt(1) === CHAR_COLON && + resolvedPath.charCodeAt(2) === CHAR_BACKWARD_SLASH) { + // Matched device root, convert the path to a long UNC path + return `\\\\?\\${resolvedPath}`; + } + return path; + }, + dirname(path) { + validateString(path, 'path'); + const len = path.length; + if (len === 0) { + return '.'; + } + let rootEnd = -1; + let offset = 0; + const code = path.charCodeAt(0); + if (len === 1) { + // `path` contains just a path separator, exit early to avoid + // unnecessary work or a dot. + return isPathSeparator(code) ? path : '.'; + } + // Try to match a root + if (isPathSeparator(code)) { + // Possible UNC root + rootEnd = offset = 1; + if (isPathSeparator(path.charCodeAt(1))) { + // Matched double path separator at beginning + let j = 2; + let last = j; + // Match 1 or more non-path separators + while (j < len && !isPathSeparator(path.charCodeAt(j))) { + j++; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more path separators + while (j < len && isPathSeparator(path.charCodeAt(j))) { + j++; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more non-path separators + while (j < len && !isPathSeparator(path.charCodeAt(j))) { + j++; + } + if (j === len) { + // We matched a UNC root only + return path; + } + if (j !== last) { + // We matched a UNC root with leftovers + // Offset by 1 to include the separator after the UNC root to + // treat it as a "normal root" on top of a (UNC) root + rootEnd = offset = j + 1; + } + } + } + } + // Possible device root + } + else if (isWindowsDeviceRoot(code) && path.charCodeAt(1) === CHAR_COLON) { + rootEnd = len > 2 && isPathSeparator(path.charCodeAt(2)) ? 3 : 2; + offset = rootEnd; + } + let end = -1; + let matchedSlash = true; + for (let i = len - 1; i >= offset; --i) { + if (isPathSeparator(path.charCodeAt(i))) { + if (!matchedSlash) { + end = i; + break; + } + } + else { + // We saw the first non-path separator + matchedSlash = false; + } + } + if (end === -1) { + if (rootEnd === -1) { + return '.'; + } + end = rootEnd; + } + return path.slice(0, end); + }, + basename(path, ext) { + if (ext !== undefined) { + validateString(ext, 'ext'); + } + validateString(path, 'path'); + let start = 0; + let end = -1; + let matchedSlash = true; + let i; + // Check for a drive letter prefix so as not to mistake the following + // path separator as an extra separator at the end of the path that can be + // disregarded + if (path.length >= 2 && + isWindowsDeviceRoot(path.charCodeAt(0)) && + path.charCodeAt(1) === CHAR_COLON) { + start = 2; + } + if (ext !== undefined && ext.length > 0 && ext.length <= path.length) { + if (ext === path) { + return ''; + } + let extIdx = ext.length - 1; + let firstNonSlashEnd = -1; + for (i = path.length - 1; i >= start; --i) { + const code = path.charCodeAt(i); + if (isPathSeparator(code)) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + start = i + 1; + break; + } + } + else { + if (firstNonSlashEnd === -1) { + // We saw the first non-path separator, remember this index in case + // we need it if the extension ends up not matching + matchedSlash = false; + firstNonSlashEnd = i + 1; + } + if (extIdx >= 0) { + // Try to match the explicit extension + if (code === ext.charCodeAt(extIdx)) { + if (--extIdx === -1) { + // We matched the extension, so mark this as the end of our path + // component + end = i; + } + } + else { + // Extension does not match, so our result is the entire path + // component + extIdx = -1; + end = firstNonSlashEnd; + } + } + } + } + if (start === end) { + end = firstNonSlashEnd; + } + else if (end === -1) { + end = path.length; + } + return path.slice(start, end); + } + for (i = path.length - 1; i >= start; --i) { + if (isPathSeparator(path.charCodeAt(i))) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + start = i + 1; + break; + } + } + else if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // path component + matchedSlash = false; + end = i + 1; + } + } + if (end === -1) { + return ''; + } + return path.slice(start, end); + }, + extname(path) { + validateString(path, 'path'); + let start = 0; + let startDot = -1; + let startPart = 0; + let end = -1; + let matchedSlash = true; + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + let preDotState = 0; + // Check for a drive letter prefix so as not to mistake the following + // path separator as an extra separator at the end of the path that can be + // disregarded + if (path.length >= 2 && + path.charCodeAt(1) === CHAR_COLON && + isWindowsDeviceRoot(path.charCodeAt(0))) { + start = startPart = 2; + } + for (let i = path.length - 1; i >= start; --i) { + const code = path.charCodeAt(i); + if (isPathSeparator(code)) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === CHAR_DOT) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) { + startDot = i; + } + else if (preDotState !== 1) { + preDotState = 1; + } + } + else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + if (startDot === -1 || + end === -1 || + // We saw a non-dot character immediately before the dot + preDotState === 0 || + // The (right-most) trimmed path component is exactly '..' + (preDotState === 1 && + startDot === end - 1 && + startDot === startPart + 1)) { + return ''; + } + return path.slice(startDot, end); + }, + format: _format.bind(null, '\\'), + parse(path) { + validateString(path, 'path'); + const ret = { root: '', dir: '', base: '', ext: '', name: '' }; + if (path.length === 0) { + return ret; + } + const len = path.length; + let rootEnd = 0; + let code = path.charCodeAt(0); + if (len === 1) { + if (isPathSeparator(code)) { + // `path` contains just a path separator, exit early to avoid + // unnecessary work + ret.root = ret.dir = path; + return ret; + } + ret.base = ret.name = path; + return ret; + } + // Try to match a root + if (isPathSeparator(code)) { + // Possible UNC root + rootEnd = 1; + if (isPathSeparator(path.charCodeAt(1))) { + // Matched double path separator at beginning + let j = 2; + let last = j; + // Match 1 or more non-path separators + while (j < len && !isPathSeparator(path.charCodeAt(j))) { + j++; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more path separators + while (j < len && isPathSeparator(path.charCodeAt(j))) { + j++; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more non-path separators + while (j < len && !isPathSeparator(path.charCodeAt(j))) { + j++; + } + if (j === len) { + // We matched a UNC root only + rootEnd = j; + } + else if (j !== last) { + // We matched a UNC root with leftovers + rootEnd = j + 1; + } + } + } + } + } + else if (isWindowsDeviceRoot(code) && path.charCodeAt(1) === CHAR_COLON) { + // Possible device root + if (len <= 2) { + // `path` contains just a drive root, exit early to avoid + // unnecessary work + ret.root = ret.dir = path; + return ret; + } + rootEnd = 2; + if (isPathSeparator(path.charCodeAt(2))) { + if (len === 3) { + // `path` contains just a drive root, exit early to avoid + // unnecessary work + ret.root = ret.dir = path; + return ret; + } + rootEnd = 3; + } + } + if (rootEnd > 0) { + ret.root = path.slice(0, rootEnd); + } + let startDot = -1; + let startPart = rootEnd; + let end = -1; + let matchedSlash = true; + let i = path.length - 1; + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + let preDotState = 0; + // Get non-dir info + for (; i >= rootEnd; --i) { + code = path.charCodeAt(i); + if (isPathSeparator(code)) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === CHAR_DOT) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) { + startDot = i; + } + else if (preDotState !== 1) { + preDotState = 1; + } + } + else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + if (end !== -1) { + if (startDot === -1 || + // We saw a non-dot character immediately before the dot + preDotState === 0 || + // The (right-most) trimmed path component is exactly '..' + (preDotState === 1 && + startDot === end - 1 && + startDot === startPart + 1)) { + ret.base = ret.name = path.slice(startPart, end); + } + else { + ret.name = path.slice(startPart, startDot); + ret.base = path.slice(startPart, end); + ret.ext = path.slice(startDot, end); + } + } + // If the directory is the root, use the entire root as the `dir` including + // the trailing slash if any (`C:\abc` -> `C:\`). Otherwise, strip out the + // trailing slash (`C:\abc\def` -> `C:\abc`). + if (startPart > 0 && startPart !== rootEnd) { + ret.dir = path.slice(0, startPart - 1); + } + else { + ret.dir = ret.root; + } + return ret; + }, + sep: '\\', + delimiter: ';', + win32: null, + posix: null +}; +const posixCwd = (() => { + if (platformIsWin32) { + // Converts Windows' backslash path separators to POSIX forward slashes + // and truncates any drive indicator + const regexp = /\\/g; + return () => { + const cwd$1 = cwd().replace(regexp, '/'); + return cwd$1.slice(cwd$1.indexOf('/')); + }; + } + // We're already on POSIX, no need for any transformations + return () => cwd(); +})(); +const posix = { + // path.resolve([from ...], to) + resolve(...pathSegments) { + let resolvedPath = ''; + let resolvedAbsolute = false; + for (let i = pathSegments.length - 1; i >= -1 && !resolvedAbsolute; i--) { + const path = i >= 0 ? pathSegments[i] : posixCwd(); + validateString(path, 'path'); + // Skip empty entries + if (path.length === 0) { + continue; + } + resolvedPath = `${path}/${resolvedPath}`; + resolvedAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH; + } + // At this point the path should be resolved to a full absolute path, but + // handle relative paths to be safe (might happen when process.cwd() fails) + // Normalize the path + resolvedPath = normalizeString(resolvedPath, !resolvedAbsolute, '/', isPosixPathSeparator); + if (resolvedAbsolute) { + return `/${resolvedPath}`; + } + return resolvedPath.length > 0 ? resolvedPath : '.'; + }, + normalize(path) { + validateString(path, 'path'); + if (path.length === 0) { + return '.'; + } + const isAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH; + const trailingSeparator = path.charCodeAt(path.length - 1) === CHAR_FORWARD_SLASH; + // Normalize the path + path = normalizeString(path, !isAbsolute, '/', isPosixPathSeparator); + if (path.length === 0) { + if (isAbsolute) { + return '/'; + } + return trailingSeparator ? './' : '.'; + } + if (trailingSeparator) { + path += '/'; + } + return isAbsolute ? `/${path}` : path; + }, + isAbsolute(path) { + validateString(path, 'path'); + return path.length > 0 && path.charCodeAt(0) === CHAR_FORWARD_SLASH; + }, + join(...paths) { + if (paths.length === 0) { + return '.'; + } + let joined; + for (let i = 0; i < paths.length; ++i) { + const arg = paths[i]; + validateString(arg, 'path'); + if (arg.length > 0) { + if (joined === undefined) { + joined = arg; + } + else { + joined += `/${arg}`; + } + } + } + if (joined === undefined) { + return '.'; + } + return posix.normalize(joined); + }, + relative(from, to) { + validateString(from, 'from'); + validateString(to, 'to'); + if (from === to) { + return ''; + } + // Trim leading forward slashes. + from = posix.resolve(from); + to = posix.resolve(to); + if (from === to) { + return ''; + } + const fromStart = 1; + const fromEnd = from.length; + const fromLen = fromEnd - fromStart; + const toStart = 1; + const toLen = to.length - toStart; + // Compare paths to find the longest common path from root + const length = (fromLen < toLen ? fromLen : toLen); + let lastCommonSep = -1; + let i = 0; + for (; i < length; i++) { + const fromCode = from.charCodeAt(fromStart + i); + if (fromCode !== to.charCodeAt(toStart + i)) { + break; + } + else if (fromCode === CHAR_FORWARD_SLASH) { + lastCommonSep = i; + } + } + if (i === length) { + if (toLen > length) { + if (to.charCodeAt(toStart + i) === CHAR_FORWARD_SLASH) { + // We get here if `from` is the exact base path for `to`. + // For example: from='/foo/bar'; to='/foo/bar/baz' + return to.slice(toStart + i + 1); + } + if (i === 0) { + // We get here if `from` is the root + // For example: from='/'; to='/foo' + return to.slice(toStart + i); + } + } + else if (fromLen > length) { + if (from.charCodeAt(fromStart + i) === CHAR_FORWARD_SLASH) { + // We get here if `to` is the exact base path for `from`. + // For example: from='/foo/bar/baz'; to='/foo/bar' + lastCommonSep = i; + } + else if (i === 0) { + // We get here if `to` is the root. + // For example: from='/foo/bar'; to='/' + lastCommonSep = 0; + } + } + } + let out = ''; + // Generate the relative path based on the path difference between `to` + // and `from`. + for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) { + if (i === fromEnd || from.charCodeAt(i) === CHAR_FORWARD_SLASH) { + out += out.length === 0 ? '..' : '/..'; + } + } + // Lastly, append the rest of the destination (`to`) path that comes after + // the common path parts. + return `${out}${to.slice(toStart + lastCommonSep)}`; + }, + toNamespacedPath(path) { + // Non-op on posix systems + return path; + }, + dirname(path) { + validateString(path, 'path'); + if (path.length === 0) { + return '.'; + } + const hasRoot = path.charCodeAt(0) === CHAR_FORWARD_SLASH; + let end = -1; + let matchedSlash = true; + for (let i = path.length - 1; i >= 1; --i) { + if (path.charCodeAt(i) === CHAR_FORWARD_SLASH) { + if (!matchedSlash) { + end = i; + break; + } + } + else { + // We saw the first non-path separator + matchedSlash = false; + } + } + if (end === -1) { + return hasRoot ? '/' : '.'; + } + if (hasRoot && end === 1) { + return '//'; + } + return path.slice(0, end); + }, + basename(path, ext) { + if (ext !== undefined) { + validateString(ext, 'ext'); + } + validateString(path, 'path'); + let start = 0; + let end = -1; + let matchedSlash = true; + let i; + if (ext !== undefined && ext.length > 0 && ext.length <= path.length) { + if (ext === path) { + return ''; + } + let extIdx = ext.length - 1; + let firstNonSlashEnd = -1; + for (i = path.length - 1; i >= 0; --i) { + const code = path.charCodeAt(i); + if (code === CHAR_FORWARD_SLASH) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + start = i + 1; + break; + } + } + else { + if (firstNonSlashEnd === -1) { + // We saw the first non-path separator, remember this index in case + // we need it if the extension ends up not matching + matchedSlash = false; + firstNonSlashEnd = i + 1; + } + if (extIdx >= 0) { + // Try to match the explicit extension + if (code === ext.charCodeAt(extIdx)) { + if (--extIdx === -1) { + // We matched the extension, so mark this as the end of our path + // component + end = i; + } + } + else { + // Extension does not match, so our result is the entire path + // component + extIdx = -1; + end = firstNonSlashEnd; + } + } + } + } + if (start === end) { + end = firstNonSlashEnd; + } + else if (end === -1) { + end = path.length; + } + return path.slice(start, end); + } + for (i = path.length - 1; i >= 0; --i) { + if (path.charCodeAt(i) === CHAR_FORWARD_SLASH) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + start = i + 1; + break; + } + } + else if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // path component + matchedSlash = false; + end = i + 1; + } + } + if (end === -1) { + return ''; + } + return path.slice(start, end); + }, + extname(path) { + validateString(path, 'path'); + let startDot = -1; + let startPart = 0; + let end = -1; + let matchedSlash = true; + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + let preDotState = 0; + for (let i = path.length - 1; i >= 0; --i) { + const code = path.charCodeAt(i); + if (code === CHAR_FORWARD_SLASH) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === CHAR_DOT) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) { + startDot = i; + } + else if (preDotState !== 1) { + preDotState = 1; + } + } + else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + if (startDot === -1 || + end === -1 || + // We saw a non-dot character immediately before the dot + preDotState === 0 || + // The (right-most) trimmed path component is exactly '..' + (preDotState === 1 && + startDot === end - 1 && + startDot === startPart + 1)) { + return ''; + } + return path.slice(startDot, end); + }, + format: _format.bind(null, '/'), + parse(path) { + validateString(path, 'path'); + const ret = { root: '', dir: '', base: '', ext: '', name: '' }; + if (path.length === 0) { + return ret; + } + const isAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH; + let start; + if (isAbsolute) { + ret.root = '/'; + start = 1; + } + else { + start = 0; + } + let startDot = -1; + let startPart = 0; + let end = -1; + let matchedSlash = true; + let i = path.length - 1; + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + let preDotState = 0; + // Get non-dir info + for (; i >= start; --i) { + const code = path.charCodeAt(i); + if (code === CHAR_FORWARD_SLASH) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === CHAR_DOT) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) { + startDot = i; + } + else if (preDotState !== 1) { + preDotState = 1; + } + } + else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + if (end !== -1) { + const start = startPart === 0 && isAbsolute ? 1 : startPart; + if (startDot === -1 || + // We saw a non-dot character immediately before the dot + preDotState === 0 || + // The (right-most) trimmed path component is exactly '..' + (preDotState === 1 && + startDot === end - 1 && + startDot === startPart + 1)) { + ret.base = ret.name = path.slice(start, end); + } + else { + ret.name = path.slice(start, startDot); + ret.base = path.slice(start, end); + ret.ext = path.slice(startDot, end); + } + } + if (startPart > 0) { + ret.dir = path.slice(0, startPart - 1); + } + else if (isAbsolute) { + ret.dir = '/'; + } + return ret; + }, + sep: '/', + delimiter: ':', + win32: null, + posix: null +}; +posix.win32 = win32.win32 = win32; +posix.posix = win32.posix = posix; +(platformIsWin32 ? win32.normalize : posix.normalize); +(platformIsWin32 ? win32.resolve : posix.resolve); +(platformIsWin32 ? win32.relative : posix.relative); +(platformIsWin32 ? win32.dirname : posix.dirname); +(platformIsWin32 ? win32.basename : posix.basename); +(platformIsWin32 ? win32.extname : posix.extname); +(platformIsWin32 ? win32.sep : posix.sep); + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +const _schemePattern = /^\w[\w\d+.-]*$/; +const _singleSlashStart = /^\//; +const _doubleSlashStart = /^\/\//; +function _validateUri(ret, _strict) { + // scheme, must be set + if (!ret.scheme && _strict) { + throw new Error(`[UriError]: Scheme is missing: {scheme: "", authority: "${ret.authority}", path: "${ret.path}", query: "${ret.query}", fragment: "${ret.fragment}"}`); + } + // scheme, https://tools.ietf.org/html/rfc3986#section-3.1 + // ALPHA *( ALPHA / DIGIT / "+" / "-" / "." ) + if (ret.scheme && !_schemePattern.test(ret.scheme)) { + throw new Error('[UriError]: Scheme contains illegal characters.'); + } + // path, http://tools.ietf.org/html/rfc3986#section-3.3 + // If a URI contains an authority component, then the path component + // must either be empty or begin with a slash ("/") character. If a URI + // does not contain an authority component, then the path cannot begin + // with two slash characters ("//"). + if (ret.path) { + if (ret.authority) { + if (!_singleSlashStart.test(ret.path)) { + throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash ("/") character'); + } + } + else { + if (_doubleSlashStart.test(ret.path)) { + throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")'); + } + } + } +} +// for a while we allowed uris *without* schemes and this is the migration +// for them, e.g. an uri without scheme and without strict-mode warns and falls +// back to the file-scheme. that should cause the least carnage and still be a +// clear warning +function _schemeFix(scheme, _strict) { + if (!scheme && !_strict) { + return 'file'; + } + return scheme; +} +// implements a bit of https://tools.ietf.org/html/rfc3986#section-5 +function _referenceResolution(scheme, path) { + // the slash-character is our 'default base' as we don't + // support constructing URIs relative to other URIs. This + // also means that we alter and potentially break paths. + // see https://tools.ietf.org/html/rfc3986#section-5.1.4 + switch (scheme) { + case 'https': + case 'http': + case 'file': + if (!path) { + path = _slash; + } + else if (path[0] !== _slash) { + path = _slash + path; + } + break; + } + return path; +} +const _empty = ''; +const _slash = '/'; +const _regexp = /^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/; +/** + * Uniform Resource Identifier (URI) http://tools.ietf.org/html/rfc3986. + * This class is a simple parser which creates the basic component parts + * (http://tools.ietf.org/html/rfc3986#section-3) with minimal validation + * and encoding. + * + * ```txt + * foo://example.com:8042/over/there?name=ferret#nose + * \_/ \______________/\_________/ \_________/ \__/ + * | | | | | + * scheme authority path query fragment + * | _____________________|__ + * / \ / \ + * urn:example:animal:ferret:nose + * ``` + */ +class URI { + static isUri(thing) { + if (thing instanceof URI) { + return true; + } + if (!thing) { + return false; + } + return typeof thing.authority === 'string' + && typeof thing.fragment === 'string' + && typeof thing.path === 'string' + && typeof thing.query === 'string' + && typeof thing.scheme === 'string' + && typeof thing.fsPath === 'string' + && typeof thing.with === 'function' + && typeof thing.toString === 'function'; + } + /** + * @internal + */ + constructor(schemeOrData, authority, path, query, fragment, _strict = false) { + if (typeof schemeOrData === 'object') { + this.scheme = schemeOrData.scheme || _empty; + this.authority = schemeOrData.authority || _empty; + this.path = schemeOrData.path || _empty; + this.query = schemeOrData.query || _empty; + this.fragment = schemeOrData.fragment || _empty; + // no validation because it's this URI + // that creates uri components. + // _validateUri(this); + } + else { + this.scheme = _schemeFix(schemeOrData, _strict); + this.authority = authority || _empty; + this.path = _referenceResolution(this.scheme, path || _empty); + this.query = query || _empty; + this.fragment = fragment || _empty; + _validateUri(this, _strict); + } + } + // ---- filesystem path ----------------------- + /** + * Returns a string representing the corresponding file system path of this URI. + * Will handle UNC paths, normalizes windows drive letters to lower-case, and uses the + * platform specific path separator. + * + * * Will *not* validate the path for invalid characters and semantics. + * * Will *not* look at the scheme of this URI. + * * The result shall *not* be used for display purposes but for accessing a file on disk. + * + * + * The *difference* to `URI#path` is the use of the platform specific separator and the handling + * of UNC paths. See the below sample of a file-uri with an authority (UNC path). + * + * ```ts + const u = URI.parse('file://server/c$/folder/file.txt') + u.authority === 'server' + u.path === '/shares/c$/file.txt' + u.fsPath === '\\server\c$\folder\file.txt' + ``` + * + * Using `URI#path` to read a file (using fs-apis) would not be enough because parts of the path, + * namely the server name, would be missing. Therefore `URI#fsPath` exists - it's sugar to ease working + * with URIs that represent files on disk (`file` scheme). + */ + get fsPath() { + // if (this.scheme !== 'file') { + // console.warn(`[UriError] calling fsPath with scheme ${this.scheme}`); + // } + return uriToFsPath(this, false); + } + // ---- modify to new ------------------------- + with(change) { + if (!change) { + return this; + } + let { scheme, authority, path, query, fragment } = change; + if (scheme === undefined) { + scheme = this.scheme; + } + else if (scheme === null) { + scheme = _empty; + } + if (authority === undefined) { + authority = this.authority; + } + else if (authority === null) { + authority = _empty; + } + if (path === undefined) { + path = this.path; + } + else if (path === null) { + path = _empty; + } + if (query === undefined) { + query = this.query; + } + else if (query === null) { + query = _empty; + } + if (fragment === undefined) { + fragment = this.fragment; + } + else if (fragment === null) { + fragment = _empty; + } + if (scheme === this.scheme + && authority === this.authority + && path === this.path + && query === this.query + && fragment === this.fragment) { + return this; + } + return new Uri(scheme, authority, path, query, fragment); + } + // ---- parse & validate ------------------------ + /** + * Creates a new URI from a string, e.g. `http://www.example.com/some/path`, + * `file:///usr/home`, or `scheme:with/path`. + * + * @param value A string which represents an URI (see `URI#toString`). + */ + static parse(value, _strict = false) { + const match = _regexp.exec(value); + if (!match) { + return new Uri(_empty, _empty, _empty, _empty, _empty); + } + return new Uri(match[2] || _empty, percentDecode(match[4] || _empty), percentDecode(match[5] || _empty), percentDecode(match[7] || _empty), percentDecode(match[9] || _empty), _strict); + } + /** + * Creates a new URI from a file system path, e.g. `c:\my\files`, + * `/usr/home`, or `\\server\share\some\path`. + * + * The *difference* between `URI#parse` and `URI#file` is that the latter treats the argument + * as path, not as stringified-uri. E.g. `URI.file(path)` is **not the same as** + * `URI.parse('file://' + path)` because the path might contain characters that are + * interpreted (# and ?). See the following sample: + * ```ts + const good = URI.file('/coding/c#/project1'); + good.scheme === 'file'; + good.path === '/coding/c#/project1'; + good.fragment === ''; + const bad = URI.parse('file://' + '/coding/c#/project1'); + bad.scheme === 'file'; + bad.path === '/coding/c'; // path is now broken + bad.fragment === '/project1'; + ``` + * + * @param path A file system path (see `URI#fsPath`) + */ + static file(path) { + let authority = _empty; + // normalize to fwd-slashes on windows, + // on other systems bwd-slashes are valid + // filename character, eg /f\oo/ba\r.txt + if (isWindows) { + path = path.replace(/\\/g, _slash); + } + // check for authority as used in UNC shares + // or use the path as given + if (path[0] === _slash && path[1] === _slash) { + const idx = path.indexOf(_slash, 2); + if (idx === -1) { + authority = path.substring(2); + path = _slash; + } + else { + authority = path.substring(2, idx); + path = path.substring(idx) || _slash; + } + } + return new Uri('file', authority, path, _empty, _empty); + } + /** + * Creates new URI from uri components. + * + * Unless `strict` is `true` the scheme is defaults to be `file`. This function performs + * validation and should be used for untrusted uri components retrieved from storage, + * user input, command arguments etc + */ + static from(components, strict) { + const result = new Uri(components.scheme, components.authority, components.path, components.query, components.fragment, strict); + return result; + } + /** + * Join a URI path with path fragments and normalizes the resulting path. + * + * @param uri The input URI. + * @param pathFragment The path fragment to add to the URI path. + * @returns The resulting URI. + */ + static joinPath(uri, ...pathFragment) { + if (!uri.path) { + throw new Error(`[UriError]: cannot call joinPath on URI without path`); + } + let newPath; + if (isWindows && uri.scheme === 'file') { + newPath = URI.file(win32.join(uriToFsPath(uri, true), ...pathFragment)).path; + } + else { + newPath = posix.join(uri.path, ...pathFragment); + } + return uri.with({ path: newPath }); + } + // ---- printing/externalize --------------------------- + /** + * Creates a string representation for this URI. It's guaranteed that calling + * `URI.parse` with the result of this function creates an URI which is equal + * to this URI. + * + * * The result shall *not* be used for display purposes but for externalization or transport. + * * The result will be encoded using the percentage encoding and encoding happens mostly + * ignore the scheme-specific encoding rules. + * + * @param skipEncoding Do not encode the result, default is `false` + */ + toString(skipEncoding = false) { + return _asFormatted(this, skipEncoding); + } + toJSON() { + return this; + } + static revive(data) { + var _a, _b; + if (!data) { + return data; + } + else if (data instanceof URI) { + return data; + } + else { + const result = new Uri(data); + result._formatted = (_a = data.external) !== null && _a !== void 0 ? _a : null; + result._fsPath = data._sep === _pathSepMarker ? (_b = data.fsPath) !== null && _b !== void 0 ? _b : null : null; + return result; + } + } +} +const _pathSepMarker = isWindows ? 1 : undefined; +// This class exists so that URI is compatible with vscode.Uri (API). +class Uri extends URI { + constructor() { + super(...arguments); + this._formatted = null; + this._fsPath = null; + } + get fsPath() { + if (!this._fsPath) { + this._fsPath = uriToFsPath(this, false); + } + return this._fsPath; + } + toString(skipEncoding = false) { + if (!skipEncoding) { + if (!this._formatted) { + this._formatted = _asFormatted(this, false); + } + return this._formatted; + } + else { + // we don't cache that + return _asFormatted(this, true); + } + } + toJSON() { + const res = { + $mid: 1 /* MarshalledId.Uri */ + }; + // cached state + if (this._fsPath) { + res.fsPath = this._fsPath; + res._sep = _pathSepMarker; + } + if (this._formatted) { + res.external = this._formatted; + } + //--- uri components + if (this.path) { + res.path = this.path; + } + // TODO + // this isn't correct and can violate the UriComponents contract but + // this is part of the vscode.Uri API and we shouldn't change how that + // works anymore + if (this.scheme) { + res.scheme = this.scheme; + } + if (this.authority) { + res.authority = this.authority; + } + if (this.query) { + res.query = this.query; + } + if (this.fragment) { + res.fragment = this.fragment; + } + return res; + } +} +// reserved characters: https://tools.ietf.org/html/rfc3986#section-2.2 +const encodeTable = { + [58 /* CharCode.Colon */]: '%3A', // gen-delims + [47 /* CharCode.Slash */]: '%2F', + [63 /* CharCode.QuestionMark */]: '%3F', + [35 /* CharCode.Hash */]: '%23', + [91 /* CharCode.OpenSquareBracket */]: '%5B', + [93 /* CharCode.CloseSquareBracket */]: '%5D', + [64 /* CharCode.AtSign */]: '%40', + [33 /* CharCode.ExclamationMark */]: '%21', // sub-delims + [36 /* CharCode.DollarSign */]: '%24', + [38 /* CharCode.Ampersand */]: '%26', + [39 /* CharCode.SingleQuote */]: '%27', + [40 /* CharCode.OpenParen */]: '%28', + [41 /* CharCode.CloseParen */]: '%29', + [42 /* CharCode.Asterisk */]: '%2A', + [43 /* CharCode.Plus */]: '%2B', + [44 /* CharCode.Comma */]: '%2C', + [59 /* CharCode.Semicolon */]: '%3B', + [61 /* CharCode.Equals */]: '%3D', + [32 /* CharCode.Space */]: '%20', +}; +function encodeURIComponentFast(uriComponent, isPath, isAuthority) { + let res = undefined; + let nativeEncodePos = -1; + for (let pos = 0; pos < uriComponent.length; pos++) { + const code = uriComponent.charCodeAt(pos); + // unreserved characters: https://tools.ietf.org/html/rfc3986#section-2.3 + if ((code >= 97 /* CharCode.a */ && code <= 122 /* CharCode.z */) + || (code >= 65 /* CharCode.A */ && code <= 90 /* CharCode.Z */) + || (code >= 48 /* CharCode.Digit0 */ && code <= 57 /* CharCode.Digit9 */) + || code === 45 /* CharCode.Dash */ + || code === 46 /* CharCode.Period */ + || code === 95 /* CharCode.Underline */ + || code === 126 /* CharCode.Tilde */ + || (isPath && code === 47 /* CharCode.Slash */) + || (isAuthority && code === 91 /* CharCode.OpenSquareBracket */) + || (isAuthority && code === 93 /* CharCode.CloseSquareBracket */) + || (isAuthority && code === 58 /* CharCode.Colon */)) { + // check if we are delaying native encode + if (nativeEncodePos !== -1) { + res += encodeURIComponent(uriComponent.substring(nativeEncodePos, pos)); + nativeEncodePos = -1; + } + // check if we write into a new string (by default we try to return the param) + if (res !== undefined) { + res += uriComponent.charAt(pos); + } + } + else { + // encoding needed, we need to allocate a new string + if (res === undefined) { + res = uriComponent.substr(0, pos); + } + // check with default table first + const escaped = encodeTable[code]; + if (escaped !== undefined) { + // check if we are delaying native encode + if (nativeEncodePos !== -1) { + res += encodeURIComponent(uriComponent.substring(nativeEncodePos, pos)); + nativeEncodePos = -1; + } + // append escaped variant to result + res += escaped; + } + else if (nativeEncodePos === -1) { + // use native encode only when needed + nativeEncodePos = pos; + } + } + } + if (nativeEncodePos !== -1) { + res += encodeURIComponent(uriComponent.substring(nativeEncodePos)); + } + return res !== undefined ? res : uriComponent; +} +function encodeURIComponentMinimal(path) { + let res = undefined; + for (let pos = 0; pos < path.length; pos++) { + const code = path.charCodeAt(pos); + if (code === 35 /* CharCode.Hash */ || code === 63 /* CharCode.QuestionMark */) { + if (res === undefined) { + res = path.substr(0, pos); + } + res += encodeTable[code]; + } + else { + if (res !== undefined) { + res += path[pos]; + } + } + } + return res !== undefined ? res : path; +} +/** + * Compute `fsPath` for the given uri + */ +function uriToFsPath(uri, keepDriveLetterCasing) { + let value; + if (uri.authority && uri.path.length > 1 && uri.scheme === 'file') { + // unc path: file://shares/c$/far/boo + value = `//${uri.authority}${uri.path}`; + } + else if (uri.path.charCodeAt(0) === 47 /* CharCode.Slash */ + && (uri.path.charCodeAt(1) >= 65 /* CharCode.A */ && uri.path.charCodeAt(1) <= 90 /* CharCode.Z */ || uri.path.charCodeAt(1) >= 97 /* CharCode.a */ && uri.path.charCodeAt(1) <= 122 /* CharCode.z */) + && uri.path.charCodeAt(2) === 58 /* CharCode.Colon */) { + if (!keepDriveLetterCasing) { + // windows drive letter: file:///c:/far/boo + value = uri.path[1].toLowerCase() + uri.path.substr(2); + } + else { + value = uri.path.substr(1); + } + } + else { + // other path + value = uri.path; + } + if (isWindows) { + value = value.replace(/\//g, '\\'); + } + return value; +} +/** + * Create the external version of a uri + */ +function _asFormatted(uri, skipEncoding) { + const encoder = !skipEncoding + ? encodeURIComponentFast + : encodeURIComponentMinimal; + let res = ''; + let { scheme, authority, path, query, fragment } = uri; + if (scheme) { + res += scheme; + res += ':'; + } + if (authority || scheme === 'file') { + res += _slash; + res += _slash; + } + if (authority) { + let idx = authority.indexOf('@'); + if (idx !== -1) { + // @ + const userinfo = authority.substr(0, idx); + authority = authority.substr(idx + 1); + idx = userinfo.lastIndexOf(':'); + if (idx === -1) { + res += encoder(userinfo, false, false); + } + else { + // :@ + res += encoder(userinfo.substr(0, idx), false, false); + res += ':'; + res += encoder(userinfo.substr(idx + 1), false, true); + } + res += '@'; + } + authority = authority.toLowerCase(); + idx = authority.lastIndexOf(':'); + if (idx === -1) { + res += encoder(authority, false, true); + } + else { + // : + res += encoder(authority.substr(0, idx), false, true); + res += authority.substr(idx); + } + } + if (path) { + // lower-case windows drive letters in /C:/fff or C:/fff + if (path.length >= 3 && path.charCodeAt(0) === 47 /* CharCode.Slash */ && path.charCodeAt(2) === 58 /* CharCode.Colon */) { + const code = path.charCodeAt(1); + if (code >= 65 /* CharCode.A */ && code <= 90 /* CharCode.Z */) { + path = `/${String.fromCharCode(code + 32)}:${path.substr(3)}`; // "/c:".length === 3 + } + } + else if (path.length >= 2 && path.charCodeAt(1) === 58 /* CharCode.Colon */) { + const code = path.charCodeAt(0); + if (code >= 65 /* CharCode.A */ && code <= 90 /* CharCode.Z */) { + path = `${String.fromCharCode(code + 32)}:${path.substr(2)}`; // "/c:".length === 3 + } + } + // encode the rest of the path + res += encoder(path, true, false); + } + if (query) { + res += '?'; + res += encoder(query, false, false); + } + if (fragment) { + res += '#'; + res += !skipEncoding ? encodeURIComponentFast(fragment, false, false) : fragment; + } + return res; +} +// --- decode +function decodeURIComponentGraceful(str) { + try { + return decodeURIComponent(str); + } + catch (_a) { + if (str.length > 3) { + return str.substr(0, 3) + decodeURIComponentGraceful(str.substr(3)); + } + else { + return str; + } + } +} +const _rEncodedAsHex = /(%[0-9A-Za-z][0-9A-Za-z])+/g; +function percentDecode(str) { + if (!str.match(_rEncodedAsHex)) { + return str; + } + return str.replace(_rEncodedAsHex, (match) => decodeURIComponentGraceful(match)); +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +/** + * A position in the editor. + */ +class Position { + constructor(lineNumber, column) { + this.lineNumber = lineNumber; + this.column = column; + } + /** + * Create a new position from this position. + * + * @param newLineNumber new line number + * @param newColumn new column + */ + with(newLineNumber = this.lineNumber, newColumn = this.column) { + if (newLineNumber === this.lineNumber && newColumn === this.column) { + return this; + } + else { + return new Position(newLineNumber, newColumn); + } + } + /** + * Derive a new position from this position. + * + * @param deltaLineNumber line number delta + * @param deltaColumn column delta + */ + delta(deltaLineNumber = 0, deltaColumn = 0) { + return this.with(this.lineNumber + deltaLineNumber, this.column + deltaColumn); + } + /** + * Test if this position equals other position + */ + equals(other) { + return Position.equals(this, other); + } + /** + * Test if position `a` equals position `b` + */ + static equals(a, b) { + if (!a && !b) { + return true; + } + return (!!a && + !!b && + a.lineNumber === b.lineNumber && + a.column === b.column); + } + /** + * Test if this position is before other position. + * If the two positions are equal, the result will be false. + */ + isBefore(other) { + return Position.isBefore(this, other); + } + /** + * Test if position `a` is before position `b`. + * If the two positions are equal, the result will be false. + */ + static isBefore(a, b) { + if (a.lineNumber < b.lineNumber) { + return true; + } + if (b.lineNumber < a.lineNumber) { + return false; + } + return a.column < b.column; + } + /** + * Test if this position is before other position. + * If the two positions are equal, the result will be true. + */ + isBeforeOrEqual(other) { + return Position.isBeforeOrEqual(this, other); + } + /** + * Test if position `a` is before position `b`. + * If the two positions are equal, the result will be true. + */ + static isBeforeOrEqual(a, b) { + if (a.lineNumber < b.lineNumber) { + return true; + } + if (b.lineNumber < a.lineNumber) { + return false; + } + return a.column <= b.column; + } + /** + * A function that compares positions, useful for sorting + */ + static compare(a, b) { + const aLineNumber = a.lineNumber | 0; + const bLineNumber = b.lineNumber | 0; + if (aLineNumber === bLineNumber) { + const aColumn = a.column | 0; + const bColumn = b.column | 0; + return aColumn - bColumn; + } + return aLineNumber - bLineNumber; + } + /** + * Clone this position. + */ + clone() { + return new Position(this.lineNumber, this.column); + } + /** + * Convert to a human-readable representation. + */ + toString() { + return '(' + this.lineNumber + ',' + this.column + ')'; + } + // --- + /** + * Create a `Position` from an `IPosition`. + */ + static lift(pos) { + return new Position(pos.lineNumber, pos.column); + } + /** + * Test if `obj` is an `IPosition`. + */ + static isIPosition(obj) { + return (obj + && (typeof obj.lineNumber === 'number') + && (typeof obj.column === 'number')); + } + toJSON() { + return { + lineNumber: this.lineNumber, + column: this.column + }; + } +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +/** + * A range in the editor. (startLineNumber,startColumn) is <= (endLineNumber,endColumn) + */ +class Range { + constructor(startLineNumber, startColumn, endLineNumber, endColumn) { + if ((startLineNumber > endLineNumber) || (startLineNumber === endLineNumber && startColumn > endColumn)) { + this.startLineNumber = endLineNumber; + this.startColumn = endColumn; + this.endLineNumber = startLineNumber; + this.endColumn = startColumn; + } + else { + this.startLineNumber = startLineNumber; + this.startColumn = startColumn; + this.endLineNumber = endLineNumber; + this.endColumn = endColumn; + } + } + /** + * Test if this range is empty. + */ + isEmpty() { + return Range.isEmpty(this); + } + /** + * Test if `range` is empty. + */ + static isEmpty(range) { + return (range.startLineNumber === range.endLineNumber && range.startColumn === range.endColumn); + } + /** + * Test if position is in this range. If the position is at the edges, will return true. + */ + containsPosition(position) { + return Range.containsPosition(this, position); + } + /** + * Test if `position` is in `range`. If the position is at the edges, will return true. + */ + static containsPosition(range, position) { + if (position.lineNumber < range.startLineNumber || position.lineNumber > range.endLineNumber) { + return false; + } + if (position.lineNumber === range.startLineNumber && position.column < range.startColumn) { + return false; + } + if (position.lineNumber === range.endLineNumber && position.column > range.endColumn) { + return false; + } + return true; + } + /** + * Test if `position` is in `range`. If the position is at the edges, will return false. + * @internal + */ + static strictContainsPosition(range, position) { + if (position.lineNumber < range.startLineNumber || position.lineNumber > range.endLineNumber) { + return false; + } + if (position.lineNumber === range.startLineNumber && position.column <= range.startColumn) { + return false; + } + if (position.lineNumber === range.endLineNumber && position.column >= range.endColumn) { + return false; + } + return true; + } + /** + * Test if range is in this range. If the range is equal to this range, will return true. + */ + containsRange(range) { + return Range.containsRange(this, range); + } + /** + * Test if `otherRange` is in `range`. If the ranges are equal, will return true. + */ + static containsRange(range, otherRange) { + if (otherRange.startLineNumber < range.startLineNumber || otherRange.endLineNumber < range.startLineNumber) { + return false; + } + if (otherRange.startLineNumber > range.endLineNumber || otherRange.endLineNumber > range.endLineNumber) { + return false; + } + if (otherRange.startLineNumber === range.startLineNumber && otherRange.startColumn < range.startColumn) { + return false; + } + if (otherRange.endLineNumber === range.endLineNumber && otherRange.endColumn > range.endColumn) { + return false; + } + return true; + } + /** + * Test if `range` is strictly in this range. `range` must start after and end before this range for the result to be true. + */ + strictContainsRange(range) { + return Range.strictContainsRange(this, range); + } + /** + * Test if `otherRange` is strictly in `range` (must start after, and end before). If the ranges are equal, will return false. + */ + static strictContainsRange(range, otherRange) { + if (otherRange.startLineNumber < range.startLineNumber || otherRange.endLineNumber < range.startLineNumber) { + return false; + } + if (otherRange.startLineNumber > range.endLineNumber || otherRange.endLineNumber > range.endLineNumber) { + return false; + } + if (otherRange.startLineNumber === range.startLineNumber && otherRange.startColumn <= range.startColumn) { + return false; + } + if (otherRange.endLineNumber === range.endLineNumber && otherRange.endColumn >= range.endColumn) { + return false; + } + return true; + } + /** + * A reunion of the two ranges. + * The smallest position will be used as the start point, and the largest one as the end point. + */ + plusRange(range) { + return Range.plusRange(this, range); + } + /** + * A reunion of the two ranges. + * The smallest position will be used as the start point, and the largest one as the end point. + */ + static plusRange(a, b) { + let startLineNumber; + let startColumn; + let endLineNumber; + let endColumn; + if (b.startLineNumber < a.startLineNumber) { + startLineNumber = b.startLineNumber; + startColumn = b.startColumn; + } + else if (b.startLineNumber === a.startLineNumber) { + startLineNumber = b.startLineNumber; + startColumn = Math.min(b.startColumn, a.startColumn); + } + else { + startLineNumber = a.startLineNumber; + startColumn = a.startColumn; + } + if (b.endLineNumber > a.endLineNumber) { + endLineNumber = b.endLineNumber; + endColumn = b.endColumn; + } + else if (b.endLineNumber === a.endLineNumber) { + endLineNumber = b.endLineNumber; + endColumn = Math.max(b.endColumn, a.endColumn); + } + else { + endLineNumber = a.endLineNumber; + endColumn = a.endColumn; + } + return new Range(startLineNumber, startColumn, endLineNumber, endColumn); + } + /** + * A intersection of the two ranges. + */ + intersectRanges(range) { + return Range.intersectRanges(this, range); + } + /** + * A intersection of the two ranges. + */ + static intersectRanges(a, b) { + let resultStartLineNumber = a.startLineNumber; + let resultStartColumn = a.startColumn; + let resultEndLineNumber = a.endLineNumber; + let resultEndColumn = a.endColumn; + const otherStartLineNumber = b.startLineNumber; + const otherStartColumn = b.startColumn; + const otherEndLineNumber = b.endLineNumber; + const otherEndColumn = b.endColumn; + if (resultStartLineNumber < otherStartLineNumber) { + resultStartLineNumber = otherStartLineNumber; + resultStartColumn = otherStartColumn; + } + else if (resultStartLineNumber === otherStartLineNumber) { + resultStartColumn = Math.max(resultStartColumn, otherStartColumn); + } + if (resultEndLineNumber > otherEndLineNumber) { + resultEndLineNumber = otherEndLineNumber; + resultEndColumn = otherEndColumn; + } + else if (resultEndLineNumber === otherEndLineNumber) { + resultEndColumn = Math.min(resultEndColumn, otherEndColumn); + } + // Check if selection is now empty + if (resultStartLineNumber > resultEndLineNumber) { + return null; + } + if (resultStartLineNumber === resultEndLineNumber && resultStartColumn > resultEndColumn) { + return null; + } + return new Range(resultStartLineNumber, resultStartColumn, resultEndLineNumber, resultEndColumn); + } + /** + * Test if this range equals other. + */ + equalsRange(other) { + return Range.equalsRange(this, other); + } + /** + * Test if range `a` equals `b`. + */ + static equalsRange(a, b) { + if (!a && !b) { + return true; + } + return (!!a && + !!b && + a.startLineNumber === b.startLineNumber && + a.startColumn === b.startColumn && + a.endLineNumber === b.endLineNumber && + a.endColumn === b.endColumn); + } + /** + * Return the end position (which will be after or equal to the start position) + */ + getEndPosition() { + return Range.getEndPosition(this); + } + /** + * Return the end position (which will be after or equal to the start position) + */ + static getEndPosition(range) { + return new Position(range.endLineNumber, range.endColumn); + } + /** + * Return the start position (which will be before or equal to the end position) + */ + getStartPosition() { + return Range.getStartPosition(this); + } + /** + * Return the start position (which will be before or equal to the end position) + */ + static getStartPosition(range) { + return new Position(range.startLineNumber, range.startColumn); + } + /** + * Transform to a user presentable string representation. + */ + toString() { + return '[' + this.startLineNumber + ',' + this.startColumn + ' -> ' + this.endLineNumber + ',' + this.endColumn + ']'; + } + /** + * Create a new range using this range's start position, and using endLineNumber and endColumn as the end position. + */ + setEndPosition(endLineNumber, endColumn) { + return new Range(this.startLineNumber, this.startColumn, endLineNumber, endColumn); + } + /** + * Create a new range using this range's end position, and using startLineNumber and startColumn as the start position. + */ + setStartPosition(startLineNumber, startColumn) { + return new Range(startLineNumber, startColumn, this.endLineNumber, this.endColumn); + } + /** + * Create a new empty range using this range's start position. + */ + collapseToStart() { + return Range.collapseToStart(this); + } + /** + * Create a new empty range using this range's start position. + */ + static collapseToStart(range) { + return new Range(range.startLineNumber, range.startColumn, range.startLineNumber, range.startColumn); + } + /** + * Create a new empty range using this range's end position. + */ + collapseToEnd() { + return Range.collapseToEnd(this); + } + /** + * Create a new empty range using this range's end position. + */ + static collapseToEnd(range) { + return new Range(range.endLineNumber, range.endColumn, range.endLineNumber, range.endColumn); + } + /** + * Moves the range by the given amount of lines. + */ + delta(lineCount) { + return new Range(this.startLineNumber + lineCount, this.startColumn, this.endLineNumber + lineCount, this.endColumn); + } + // --- + static fromPositions(start, end = start) { + return new Range(start.lineNumber, start.column, end.lineNumber, end.column); + } + static lift(range) { + if (!range) { + return null; + } + return new Range(range.startLineNumber, range.startColumn, range.endLineNumber, range.endColumn); + } + /** + * Test if `obj` is an `IRange`. + */ + static isIRange(obj) { + return (obj + && (typeof obj.startLineNumber === 'number') + && (typeof obj.startColumn === 'number') + && (typeof obj.endLineNumber === 'number') + && (typeof obj.endColumn === 'number')); + } + /** + * Test if the two ranges are touching in any way. + */ + static areIntersectingOrTouching(a, b) { + // Check if `a` is before `b` + if (a.endLineNumber < b.startLineNumber || (a.endLineNumber === b.startLineNumber && a.endColumn < b.startColumn)) { + return false; + } + // Check if `b` is before `a` + if (b.endLineNumber < a.startLineNumber || (b.endLineNumber === a.startLineNumber && b.endColumn < a.startColumn)) { + return false; + } + // These ranges must intersect + return true; + } + /** + * Test if the two ranges are intersecting. If the ranges are touching it returns true. + */ + static areIntersecting(a, b) { + // Check if `a` is before `b` + if (a.endLineNumber < b.startLineNumber || (a.endLineNumber === b.startLineNumber && a.endColumn <= b.startColumn)) { + return false; + } + // Check if `b` is before `a` + if (b.endLineNumber < a.startLineNumber || (b.endLineNumber === a.startLineNumber && b.endColumn <= a.startColumn)) { + return false; + } + // These ranges must intersect + return true; + } + /** + * A function that compares ranges, useful for sorting ranges + * It will first compare ranges on the startPosition and then on the endPosition + */ + static compareRangesUsingStarts(a, b) { + if (a && b) { + const aStartLineNumber = a.startLineNumber | 0; + const bStartLineNumber = b.startLineNumber | 0; + if (aStartLineNumber === bStartLineNumber) { + const aStartColumn = a.startColumn | 0; + const bStartColumn = b.startColumn | 0; + if (aStartColumn === bStartColumn) { + const aEndLineNumber = a.endLineNumber | 0; + const bEndLineNumber = b.endLineNumber | 0; + if (aEndLineNumber === bEndLineNumber) { + const aEndColumn = a.endColumn | 0; + const bEndColumn = b.endColumn | 0; + return aEndColumn - bEndColumn; + } + return aEndLineNumber - bEndLineNumber; + } + return aStartColumn - bStartColumn; + } + return aStartLineNumber - bStartLineNumber; + } + const aExists = (a ? 1 : 0); + const bExists = (b ? 1 : 0); + return aExists - bExists; + } + /** + * A function that compares ranges, useful for sorting ranges + * It will first compare ranges on the endPosition and then on the startPosition + */ + static compareRangesUsingEnds(a, b) { + if (a.endLineNumber === b.endLineNumber) { + if (a.endColumn === b.endColumn) { + if (a.startLineNumber === b.startLineNumber) { + return a.startColumn - b.startColumn; + } + return a.startLineNumber - b.startLineNumber; + } + return a.endColumn - b.endColumn; + } + return a.endLineNumber - b.endLineNumber; + } + /** + * Test if the range spans multiple lines. + */ + static spansMultipleLines(range) { + return range.endLineNumber > range.startLineNumber; + } + toJSON() { + return this; + } +} + +/** + * Returns the last element of an array. + * @param array The array. + * @param n Which element from the end (default is zero). + */ +function equals(one, other, itemEquals = (a, b) => a === b) { + if (one === other) { + return true; + } + if (!one || !other) { + return false; + } + if (one.length !== other.length) { + return false; + } + for (let i = 0, len = one.length; i < len; i++) { + if (!itemEquals(one[i], other[i])) { + return false; + } + } + return true; +} +/** + * Splits the given items into a list of (non-empty) groups. + * `shouldBeGrouped` is used to decide if two consecutive items should be in the same group. + * The order of the items is preserved. + */ +function* groupAdjacentBy(items, shouldBeGrouped) { + let currentGroup; + let last; + for (const item of items) { + if (last !== undefined && shouldBeGrouped(last, item)) { + currentGroup.push(item); + } + else { + if (currentGroup) { + yield currentGroup; + } + currentGroup = [item]; + } + last = item; + } + if (currentGroup) { + yield currentGroup; + } +} +function forEachAdjacent(arr, f) { + for (let i = 0; i <= arr.length; i++) { + f(i === 0 ? undefined : arr[i - 1], i === arr.length ? undefined : arr[i]); + } +} +function forEachWithNeighbors(arr, f) { + for (let i = 0; i < arr.length; i++) { + f(i === 0 ? undefined : arr[i - 1], arr[i], i + 1 === arr.length ? undefined : arr[i + 1]); + } +} +function pushMany(arr, items) { + for (const item of items) { + arr.push(item); + } +} +var CompareResult; +(function (CompareResult) { + function isLessThan(result) { + return result < 0; + } + CompareResult.isLessThan = isLessThan; + function isLessThanOrEqual(result) { + return result <= 0; + } + CompareResult.isLessThanOrEqual = isLessThanOrEqual; + function isGreaterThan(result) { + return result > 0; + } + CompareResult.isGreaterThan = isGreaterThan; + function isNeitherLessOrGreaterThan(result) { + return result === 0; + } + CompareResult.isNeitherLessOrGreaterThan = isNeitherLessOrGreaterThan; + CompareResult.greaterThan = 1; + CompareResult.lessThan = -1; + CompareResult.neitherLessOrGreaterThan = 0; +})(CompareResult || (CompareResult = {})); +function compareBy(selector, comparator) { + return (a, b) => comparator(selector(a), selector(b)); +} +/** + * The natural order on numbers. +*/ +const numberComparator = (a, b) => a - b; +function reverseOrder(comparator) { + return (a, b) => -comparator(a, b); +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +function toUint8(v) { + if (v < 0) { + return 0; + } + if (v > 255 /* Constants.MAX_UINT_8 */) { + return 255 /* Constants.MAX_UINT_8 */; + } + return v | 0; +} +function toUint32(v) { + if (v < 0) { + return 0; + } + if (v > 4294967295 /* Constants.MAX_UINT_32 */) { + return 4294967295 /* Constants.MAX_UINT_32 */; + } + return v | 0; +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +class PrefixSumComputer { + constructor(values) { + this.values = values; + this.prefixSum = new Uint32Array(values.length); + this.prefixSumValidIndex = new Int32Array(1); + this.prefixSumValidIndex[0] = -1; + } + insertValues(insertIndex, insertValues) { + insertIndex = toUint32(insertIndex); + const oldValues = this.values; + const oldPrefixSum = this.prefixSum; + const insertValuesLen = insertValues.length; + if (insertValuesLen === 0) { + return false; + } + this.values = new Uint32Array(oldValues.length + insertValuesLen); + this.values.set(oldValues.subarray(0, insertIndex), 0); + this.values.set(oldValues.subarray(insertIndex), insertIndex + insertValuesLen); + this.values.set(insertValues, insertIndex); + if (insertIndex - 1 < this.prefixSumValidIndex[0]) { + this.prefixSumValidIndex[0] = insertIndex - 1; + } + this.prefixSum = new Uint32Array(this.values.length); + if (this.prefixSumValidIndex[0] >= 0) { + this.prefixSum.set(oldPrefixSum.subarray(0, this.prefixSumValidIndex[0] + 1)); + } + return true; + } + setValue(index, value) { + index = toUint32(index); + value = toUint32(value); + if (this.values[index] === value) { + return false; + } + this.values[index] = value; + if (index - 1 < this.prefixSumValidIndex[0]) { + this.prefixSumValidIndex[0] = index - 1; + } + return true; + } + removeValues(startIndex, count) { + startIndex = toUint32(startIndex); + count = toUint32(count); + const oldValues = this.values; + const oldPrefixSum = this.prefixSum; + if (startIndex >= oldValues.length) { + return false; + } + const maxCount = oldValues.length - startIndex; + if (count >= maxCount) { + count = maxCount; + } + if (count === 0) { + return false; + } + this.values = new Uint32Array(oldValues.length - count); + this.values.set(oldValues.subarray(0, startIndex), 0); + this.values.set(oldValues.subarray(startIndex + count), startIndex); + this.prefixSum = new Uint32Array(this.values.length); + if (startIndex - 1 < this.prefixSumValidIndex[0]) { + this.prefixSumValidIndex[0] = startIndex - 1; + } + if (this.prefixSumValidIndex[0] >= 0) { + this.prefixSum.set(oldPrefixSum.subarray(0, this.prefixSumValidIndex[0] + 1)); + } + return true; + } + getTotalSum() { + if (this.values.length === 0) { + return 0; + } + return this._getPrefixSum(this.values.length - 1); + } + /** + * Returns the sum of the first `index + 1` many items. + * @returns `SUM(0 <= j <= index, values[j])`. + */ + getPrefixSum(index) { + if (index < 0) { + return 0; + } + index = toUint32(index); + return this._getPrefixSum(index); + } + _getPrefixSum(index) { + if (index <= this.prefixSumValidIndex[0]) { + return this.prefixSum[index]; + } + let startIndex = this.prefixSumValidIndex[0] + 1; + if (startIndex === 0) { + this.prefixSum[0] = this.values[0]; + startIndex++; + } + if (index >= this.values.length) { + index = this.values.length - 1; + } + for (let i = startIndex; i <= index; i++) { + this.prefixSum[i] = this.prefixSum[i - 1] + this.values[i]; + } + this.prefixSumValidIndex[0] = Math.max(this.prefixSumValidIndex[0], index); + return this.prefixSum[index]; + } + getIndexOf(sum) { + sum = Math.floor(sum); + // Compute all sums (to get a fully valid prefixSum) + this.getTotalSum(); + let low = 0; + let high = this.values.length - 1; + let mid = 0; + let midStop = 0; + let midStart = 0; + while (low <= high) { + mid = low + ((high - low) / 2) | 0; + midStop = this.prefixSum[mid]; + midStart = midStop - this.values[mid]; + if (sum < midStart) { + high = mid - 1; + } + else if (sum >= midStop) { + low = mid + 1; + } + else { + break; + } + } + return new PrefixSumIndexOfResult(mid, sum - midStart); + } +} +class PrefixSumIndexOfResult { + constructor(index, remainder) { + this.index = index; + this.remainder = remainder; + this._prefixSumIndexOfResultBrand = undefined; + this.index = index; + this.remainder = remainder; + } +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +class MirrorTextModel { + constructor(uri, lines, eol, versionId) { + this._uri = uri; + this._lines = lines; + this._eol = eol; + this._versionId = versionId; + this._lineStarts = null; + this._cachedTextValue = null; + } + dispose() { + this._lines.length = 0; + } + get version() { + return this._versionId; + } + getText() { + if (this._cachedTextValue === null) { + this._cachedTextValue = this._lines.join(this._eol); + } + return this._cachedTextValue; + } + onEvents(e) { + if (e.eol && e.eol !== this._eol) { + this._eol = e.eol; + this._lineStarts = null; + } + // Update my lines + const changes = e.changes; + for (const change of changes) { + this._acceptDeleteRange(change.range); + this._acceptInsertText(new Position(change.range.startLineNumber, change.range.startColumn), change.text); + } + this._versionId = e.versionId; + this._cachedTextValue = null; + } + _ensureLineStarts() { + if (!this._lineStarts) { + const eolLength = this._eol.length; + const linesLength = this._lines.length; + const lineStartValues = new Uint32Array(linesLength); + for (let i = 0; i < linesLength; i++) { + lineStartValues[i] = this._lines[i].length + eolLength; + } + this._lineStarts = new PrefixSumComputer(lineStartValues); + } + } + /** + * All changes to a line's text go through this method + */ + _setLineText(lineIndex, newValue) { + this._lines[lineIndex] = newValue; + if (this._lineStarts) { + // update prefix sum + this._lineStarts.setValue(lineIndex, this._lines[lineIndex].length + this._eol.length); + } + } + _acceptDeleteRange(range) { + if (range.startLineNumber === range.endLineNumber) { + if (range.startColumn === range.endColumn) { + // Nothing to delete + return; + } + // Delete text on the affected line + this._setLineText(range.startLineNumber - 1, this._lines[range.startLineNumber - 1].substring(0, range.startColumn - 1) + + this._lines[range.startLineNumber - 1].substring(range.endColumn - 1)); + return; + } + // Take remaining text on last line and append it to remaining text on first line + this._setLineText(range.startLineNumber - 1, this._lines[range.startLineNumber - 1].substring(0, range.startColumn - 1) + + this._lines[range.endLineNumber - 1].substring(range.endColumn - 1)); + // Delete middle lines + this._lines.splice(range.startLineNumber, range.endLineNumber - range.startLineNumber); + if (this._lineStarts) { + // update prefix sum + this._lineStarts.removeValues(range.startLineNumber, range.endLineNumber - range.startLineNumber); + } + } + _acceptInsertText(position, insertText) { + if (insertText.length === 0) { + // Nothing to insert + return; + } + const insertLines = splitLines(insertText); + if (insertLines.length === 1) { + // Inserting text on one line + this._setLineText(position.lineNumber - 1, this._lines[position.lineNumber - 1].substring(0, position.column - 1) + + insertLines[0] + + this._lines[position.lineNumber - 1].substring(position.column - 1)); + return; + } + // Append overflowing text from first line to the end of text to insert + insertLines[insertLines.length - 1] += this._lines[position.lineNumber - 1].substring(position.column - 1); + // Delete overflowing text from first line and insert text on first line + this._setLineText(position.lineNumber - 1, this._lines[position.lineNumber - 1].substring(0, position.column - 1) + + insertLines[0]); + // Insert new lines & store lengths + const newLengths = new Uint32Array(insertLines.length - 1); + for (let i = 1; i < insertLines.length; i++) { + this._lines.splice(position.lineNumber + i - 1, 0, insertLines[i]); + newLengths[i - 1] = insertLines[i].length + this._eol.length; + } + if (this._lineStarts) { + // update prefix sum + this._lineStarts.insertValues(position.lineNumber, newLengths); + } + } +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +const USUAL_WORD_SEPARATORS = '`~!@#$%^&*()-=+[{]}\\|;:\'",.<>/?'; +/** + * Create a word definition regular expression based on default word separators. + * Optionally provide allowed separators that should be included in words. + * + * The default would look like this: + * /(-?\d*\.\d\w*)|([^\`\~\!\@\#\$\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g + */ +function createWordRegExp(allowInWords = '') { + let source = '(-?\\d*\\.\\d\\w*)|([^'; + for (const sep of USUAL_WORD_SEPARATORS) { + if (allowInWords.indexOf(sep) >= 0) { + continue; + } + source += '\\' + sep; + } + source += '\\s]+)'; + return new RegExp(source, 'g'); +} +// catches numbers (including floating numbers) in the first group, and alphanum in the second +const DEFAULT_WORD_REGEXP = createWordRegExp(); +function ensureValidWordDefinition(wordDefinition) { + let result = DEFAULT_WORD_REGEXP; + if (wordDefinition && (wordDefinition instanceof RegExp)) { + if (!wordDefinition.global) { + let flags = 'g'; + if (wordDefinition.ignoreCase) { + flags += 'i'; + } + if (wordDefinition.multiline) { + flags += 'm'; + } + if (wordDefinition.unicode) { + flags += 'u'; + } + result = new RegExp(wordDefinition.source, flags); + } + else { + result = wordDefinition; + } + } + result.lastIndex = 0; + return result; +} +const _defaultConfig = new LinkedList(); +_defaultConfig.unshift({ + maxLen: 1000, + windowSize: 15, + timeBudget: 150 +}); +function getWordAtText(column, wordDefinition, text, textOffset, config) { + // Ensure the regex has the 'g' flag, otherwise this will loop forever + wordDefinition = ensureValidWordDefinition(wordDefinition); + if (!config) { + config = Iterable.first(_defaultConfig); + } + if (text.length > config.maxLen) { + // don't throw strings that long at the regexp + // but use a sub-string in which a word must occur + let start = column - config.maxLen / 2; + if (start < 0) { + start = 0; + } + else { + textOffset += start; + } + text = text.substring(start, column + config.maxLen / 2); + return getWordAtText(column, wordDefinition, text, textOffset, config); + } + const t1 = Date.now(); + const pos = column - 1 - textOffset; + let prevRegexIndex = -1; + let match = null; + for (let i = 1;; i++) { + // check time budget + if (Date.now() - t1 >= config.timeBudget) { + break; + } + // reset the index at which the regexp should start matching, also know where it + // should stop so that subsequent search don't repeat previous searches + const regexIndex = pos - config.windowSize * i; + wordDefinition.lastIndex = Math.max(0, regexIndex); + const thisMatch = _findRegexMatchEnclosingPosition(wordDefinition, text, pos, prevRegexIndex); + if (!thisMatch && match) { + // stop: we have something + break; + } + match = thisMatch; + // stop: searched at start + if (regexIndex <= 0) { + break; + } + prevRegexIndex = regexIndex; + } + if (match) { + const result = { + word: match[0], + startColumn: textOffset + 1 + match.index, + endColumn: textOffset + 1 + match.index + match[0].length + }; + wordDefinition.lastIndex = 0; + return result; + } + return null; +} +function _findRegexMatchEnclosingPosition(wordDefinition, text, pos, stopPos) { + let match; + while (match = wordDefinition.exec(text)) { + const matchIndex = match.index || 0; + if (matchIndex <= pos && wordDefinition.lastIndex >= pos) { + return match; + } + else if (stopPos > 0 && matchIndex > stopPos) { + return null; + } + } + return null; +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +/** + * A fast character classifier that uses a compact array for ASCII values. + */ +class CharacterClassifier { + constructor(_defaultValue) { + const defaultValue = toUint8(_defaultValue); + this._defaultValue = defaultValue; + this._asciiMap = CharacterClassifier._createAsciiMap(defaultValue); + this._map = new Map(); + } + static _createAsciiMap(defaultValue) { + const asciiMap = new Uint8Array(256); + asciiMap.fill(defaultValue); + return asciiMap; + } + set(charCode, _value) { + const value = toUint8(_value); + if (charCode >= 0 && charCode < 256) { + this._asciiMap[charCode] = value; + } + else { + this._map.set(charCode, value); + } + } + get(charCode) { + if (charCode >= 0 && charCode < 256) { + return this._asciiMap[charCode]; + } + else { + return (this._map.get(charCode) || this._defaultValue); + } + } + clear() { + this._asciiMap.fill(this._defaultValue); + this._map.clear(); + } +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +class Uint8Matrix { + constructor(rows, cols, defaultValue) { + const data = new Uint8Array(rows * cols); + for (let i = 0, len = rows * cols; i < len; i++) { + data[i] = defaultValue; + } + this._data = data; + this.rows = rows; + this.cols = cols; + } + get(row, col) { + return this._data[row * this.cols + col]; + } + set(row, col, value) { + this._data[row * this.cols + col] = value; + } +} +class StateMachine { + constructor(edges) { + let maxCharCode = 0; + let maxState = 0 /* State.Invalid */; + for (let i = 0, len = edges.length; i < len; i++) { + const [from, chCode, to] = edges[i]; + if (chCode > maxCharCode) { + maxCharCode = chCode; + } + if (from > maxState) { + maxState = from; + } + if (to > maxState) { + maxState = to; + } + } + maxCharCode++; + maxState++; + const states = new Uint8Matrix(maxState, maxCharCode, 0 /* State.Invalid */); + for (let i = 0, len = edges.length; i < len; i++) { + const [from, chCode, to] = edges[i]; + states.set(from, chCode, to); + } + this._states = states; + this._maxCharCode = maxCharCode; + } + nextState(currentState, chCode) { + if (chCode < 0 || chCode >= this._maxCharCode) { + return 0 /* State.Invalid */; + } + return this._states.get(currentState, chCode); + } +} +// State machine for http:// or https:// or file:// +let _stateMachine = null; +function getStateMachine() { + if (_stateMachine === null) { + _stateMachine = new StateMachine([ + [1 /* State.Start */, 104 /* CharCode.h */, 2 /* State.H */], + [1 /* State.Start */, 72 /* CharCode.H */, 2 /* State.H */], + [1 /* State.Start */, 102 /* CharCode.f */, 6 /* State.F */], + [1 /* State.Start */, 70 /* CharCode.F */, 6 /* State.F */], + [2 /* State.H */, 116 /* CharCode.t */, 3 /* State.HT */], + [2 /* State.H */, 84 /* CharCode.T */, 3 /* State.HT */], + [3 /* State.HT */, 116 /* CharCode.t */, 4 /* State.HTT */], + [3 /* State.HT */, 84 /* CharCode.T */, 4 /* State.HTT */], + [4 /* State.HTT */, 112 /* CharCode.p */, 5 /* State.HTTP */], + [4 /* State.HTT */, 80 /* CharCode.P */, 5 /* State.HTTP */], + [5 /* State.HTTP */, 115 /* CharCode.s */, 9 /* State.BeforeColon */], + [5 /* State.HTTP */, 83 /* CharCode.S */, 9 /* State.BeforeColon */], + [5 /* State.HTTP */, 58 /* CharCode.Colon */, 10 /* State.AfterColon */], + [6 /* State.F */, 105 /* CharCode.i */, 7 /* State.FI */], + [6 /* State.F */, 73 /* CharCode.I */, 7 /* State.FI */], + [7 /* State.FI */, 108 /* CharCode.l */, 8 /* State.FIL */], + [7 /* State.FI */, 76 /* CharCode.L */, 8 /* State.FIL */], + [8 /* State.FIL */, 101 /* CharCode.e */, 9 /* State.BeforeColon */], + [8 /* State.FIL */, 69 /* CharCode.E */, 9 /* State.BeforeColon */], + [9 /* State.BeforeColon */, 58 /* CharCode.Colon */, 10 /* State.AfterColon */], + [10 /* State.AfterColon */, 47 /* CharCode.Slash */, 11 /* State.AlmostThere */], + [11 /* State.AlmostThere */, 47 /* CharCode.Slash */, 12 /* State.End */], + ]); + } + return _stateMachine; +} +let _classifier = null; +function getClassifier() { + if (_classifier === null) { + _classifier = new CharacterClassifier(0 /* CharacterClass.None */); + // allow-any-unicode-next-line + const FORCE_TERMINATION_CHARACTERS = ' \t<>\'\"、。。、,.:;‘〈「『〔([{「」}])〕』」〉’`~…'; + for (let i = 0; i < FORCE_TERMINATION_CHARACTERS.length; i++) { + _classifier.set(FORCE_TERMINATION_CHARACTERS.charCodeAt(i), 1 /* CharacterClass.ForceTermination */); + } + const CANNOT_END_WITH_CHARACTERS = '.,;:'; + for (let i = 0; i < CANNOT_END_WITH_CHARACTERS.length; i++) { + _classifier.set(CANNOT_END_WITH_CHARACTERS.charCodeAt(i), 2 /* CharacterClass.CannotEndIn */); + } + } + return _classifier; +} +class LinkComputer { + static _createLink(classifier, line, lineNumber, linkBeginIndex, linkEndIndex) { + // Do not allow to end link in certain characters... + let lastIncludedCharIndex = linkEndIndex - 1; + do { + const chCode = line.charCodeAt(lastIncludedCharIndex); + const chClass = classifier.get(chCode); + if (chClass !== 2 /* CharacterClass.CannotEndIn */) { + break; + } + lastIncludedCharIndex--; + } while (lastIncludedCharIndex > linkBeginIndex); + // Handle links enclosed in parens, square brackets and curlys. + if (linkBeginIndex > 0) { + const charCodeBeforeLink = line.charCodeAt(linkBeginIndex - 1); + const lastCharCodeInLink = line.charCodeAt(lastIncludedCharIndex); + if ((charCodeBeforeLink === 40 /* CharCode.OpenParen */ && lastCharCodeInLink === 41 /* CharCode.CloseParen */) + || (charCodeBeforeLink === 91 /* CharCode.OpenSquareBracket */ && lastCharCodeInLink === 93 /* CharCode.CloseSquareBracket */) + || (charCodeBeforeLink === 123 /* CharCode.OpenCurlyBrace */ && lastCharCodeInLink === 125 /* CharCode.CloseCurlyBrace */)) { + // Do not end in ) if ( is before the link start + // Do not end in ] if [ is before the link start + // Do not end in } if { is before the link start + lastIncludedCharIndex--; + } + } + return { + range: { + startLineNumber: lineNumber, + startColumn: linkBeginIndex + 1, + endLineNumber: lineNumber, + endColumn: lastIncludedCharIndex + 2 + }, + url: line.substring(linkBeginIndex, lastIncludedCharIndex + 1) + }; + } + static computeLinks(model, stateMachine = getStateMachine()) { + const classifier = getClassifier(); + const result = []; + for (let i = 1, lineCount = model.getLineCount(); i <= lineCount; i++) { + const line = model.getLineContent(i); + const len = line.length; + let j = 0; + let linkBeginIndex = 0; + let linkBeginChCode = 0; + let state = 1 /* State.Start */; + let hasOpenParens = false; + let hasOpenSquareBracket = false; + let inSquareBrackets = false; + let hasOpenCurlyBracket = false; + while (j < len) { + let resetStateMachine = false; + const chCode = line.charCodeAt(j); + if (state === 13 /* State.Accept */) { + let chClass; + switch (chCode) { + case 40 /* CharCode.OpenParen */: + hasOpenParens = true; + chClass = 0 /* CharacterClass.None */; + break; + case 41 /* CharCode.CloseParen */: + chClass = (hasOpenParens ? 0 /* CharacterClass.None */ : 1 /* CharacterClass.ForceTermination */); + break; + case 91 /* CharCode.OpenSquareBracket */: + inSquareBrackets = true; + hasOpenSquareBracket = true; + chClass = 0 /* CharacterClass.None */; + break; + case 93 /* CharCode.CloseSquareBracket */: + inSquareBrackets = false; + chClass = (hasOpenSquareBracket ? 0 /* CharacterClass.None */ : 1 /* CharacterClass.ForceTermination */); + break; + case 123 /* CharCode.OpenCurlyBrace */: + hasOpenCurlyBracket = true; + chClass = 0 /* CharacterClass.None */; + break; + case 125 /* CharCode.CloseCurlyBrace */: + chClass = (hasOpenCurlyBracket ? 0 /* CharacterClass.None */ : 1 /* CharacterClass.ForceTermination */); + break; + // The following three rules make it that ' or " or ` are allowed inside links + // only if the link is wrapped by some other quote character + case 39 /* CharCode.SingleQuote */: + case 34 /* CharCode.DoubleQuote */: + case 96 /* CharCode.BackTick */: + if (linkBeginChCode === chCode) { + chClass = 1 /* CharacterClass.ForceTermination */; + } + else if (linkBeginChCode === 39 /* CharCode.SingleQuote */ || linkBeginChCode === 34 /* CharCode.DoubleQuote */ || linkBeginChCode === 96 /* CharCode.BackTick */) { + chClass = 0 /* CharacterClass.None */; + } + else { + chClass = 1 /* CharacterClass.ForceTermination */; + } + break; + case 42 /* CharCode.Asterisk */: + // `*` terminates a link if the link began with `*` + chClass = (linkBeginChCode === 42 /* CharCode.Asterisk */) ? 1 /* CharacterClass.ForceTermination */ : 0 /* CharacterClass.None */; + break; + case 124 /* CharCode.Pipe */: + // `|` terminates a link if the link began with `|` + chClass = (linkBeginChCode === 124 /* CharCode.Pipe */) ? 1 /* CharacterClass.ForceTermination */ : 0 /* CharacterClass.None */; + break; + case 32 /* CharCode.Space */: + // ` ` allow space in between [ and ] + chClass = (inSquareBrackets ? 0 /* CharacterClass.None */ : 1 /* CharacterClass.ForceTermination */); + break; + default: + chClass = classifier.get(chCode); + } + // Check if character terminates link + if (chClass === 1 /* CharacterClass.ForceTermination */) { + result.push(LinkComputer._createLink(classifier, line, i, linkBeginIndex, j)); + resetStateMachine = true; + } + } + else if (state === 12 /* State.End */) { + let chClass; + if (chCode === 91 /* CharCode.OpenSquareBracket */) { + // Allow for the authority part to contain ipv6 addresses which contain [ and ] + hasOpenSquareBracket = true; + chClass = 0 /* CharacterClass.None */; + } + else { + chClass = classifier.get(chCode); + } + // Check if character terminates link + if (chClass === 1 /* CharacterClass.ForceTermination */) { + resetStateMachine = true; + } + else { + state = 13 /* State.Accept */; + } + } + else { + state = stateMachine.nextState(state, chCode); + if (state === 0 /* State.Invalid */) { + resetStateMachine = true; + } + } + if (resetStateMachine) { + state = 1 /* State.Start */; + hasOpenParens = false; + hasOpenSquareBracket = false; + hasOpenCurlyBracket = false; + // Record where the link started + linkBeginIndex = j + 1; + linkBeginChCode = chCode; + } + j++; + } + if (state === 13 /* State.Accept */) { + result.push(LinkComputer._createLink(classifier, line, i, linkBeginIndex, len)); + } + } + return result; + } +} +/** + * Returns an array of all links contains in the provided + * document. *Note* that this operation is computational + * expensive and should not run in the UI thread. + */ +function computeLinks(model) { + if (!model || typeof model.getLineCount !== 'function' || typeof model.getLineContent !== 'function') { + // Unknown caller! + return []; + } + return LinkComputer.computeLinks(model); +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +class BasicInplaceReplace { + constructor() { + this._defaultValueSet = [ + ['true', 'false'], + ['True', 'False'], + ['Private', 'Public', 'Friend', 'ReadOnly', 'Partial', 'Protected', 'WriteOnly'], + ['public', 'protected', 'private'], + ]; + } + navigateValueSet(range1, text1, range2, text2, up) { + if (range1 && text1) { + const result = this.doNavigateValueSet(text1, up); + if (result) { + return { + range: range1, + value: result + }; + } + } + if (range2 && text2) { + const result = this.doNavigateValueSet(text2, up); + if (result) { + return { + range: range2, + value: result + }; + } + } + return null; + } + doNavigateValueSet(text, up) { + const numberResult = this.numberReplace(text, up); + if (numberResult !== null) { + return numberResult; + } + return this.textReplace(text, up); + } + numberReplace(value, up) { + const precision = Math.pow(10, value.length - (value.lastIndexOf('.') + 1)); + let n1 = Number(value); + const n2 = parseFloat(value); + if (!isNaN(n1) && !isNaN(n2) && n1 === n2) { + if (n1 === 0 && !up) { + return null; // don't do negative + // } else if(n1 === 9 && up) { + // return null; // don't insert 10 into a number + } + else { + n1 = Math.floor(n1 * precision); + n1 += up ? precision : -precision; + return String(n1 / precision); + } + } + return null; + } + textReplace(value, up) { + return this.valueSetsReplace(this._defaultValueSet, value, up); + } + valueSetsReplace(valueSets, value, up) { + let result = null; + for (let i = 0, len = valueSets.length; result === null && i < len; i++) { + result = this.valueSetReplace(valueSets[i], value, up); + } + return result; + } + valueSetReplace(valueSet, value, up) { + let idx = valueSet.indexOf(value); + if (idx >= 0) { + idx += up ? +1 : -1; + if (idx < 0) { + idx = valueSet.length - 1; + } + else { + idx %= valueSet.length; + } + return valueSet[idx]; + } + return null; + } +} +BasicInplaceReplace.INSTANCE = new BasicInplaceReplace(); + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +const shortcutEvent = Object.freeze(function (callback, context) { + const handle = setTimeout(callback.bind(context), 0); + return { dispose() { clearTimeout(handle); } }; +}); +var CancellationToken; +(function (CancellationToken) { + function isCancellationToken(thing) { + if (thing === CancellationToken.None || thing === CancellationToken.Cancelled) { + return true; + } + if (thing instanceof MutableToken) { + return true; + } + if (!thing || typeof thing !== 'object') { + return false; + } + return typeof thing.isCancellationRequested === 'boolean' + && typeof thing.onCancellationRequested === 'function'; + } + CancellationToken.isCancellationToken = isCancellationToken; + CancellationToken.None = Object.freeze({ + isCancellationRequested: false, + onCancellationRequested: Event.None + }); + CancellationToken.Cancelled = Object.freeze({ + isCancellationRequested: true, + onCancellationRequested: shortcutEvent + }); +})(CancellationToken || (CancellationToken = {})); +class MutableToken { + constructor() { + this._isCancelled = false; + this._emitter = null; + } + cancel() { + if (!this._isCancelled) { + this._isCancelled = true; + if (this._emitter) { + this._emitter.fire(undefined); + this.dispose(); + } + } + } + get isCancellationRequested() { + return this._isCancelled; + } + get onCancellationRequested() { + if (this._isCancelled) { + return shortcutEvent; + } + if (!this._emitter) { + this._emitter = new Emitter(); + } + return this._emitter.event; + } + dispose() { + if (this._emitter) { + this._emitter.dispose(); + this._emitter = null; + } + } +} +class CancellationTokenSource { + constructor(parent) { + this._token = undefined; + this._parentListener = undefined; + this._parentListener = parent && parent.onCancellationRequested(this.cancel, this); + } + get token() { + if (!this._token) { + // be lazy and create the token only when + // actually needed + this._token = new MutableToken(); + } + return this._token; + } + cancel() { + if (!this._token) { + // save an object by returning the default + // cancelled token when cancellation happens + // before someone asks for the token + this._token = CancellationToken.Cancelled; + } + else if (this._token instanceof MutableToken) { + // actually cancel + this._token.cancel(); + } + } + dispose(cancel = false) { + var _a; + if (cancel) { + this.cancel(); + } + (_a = this._parentListener) === null || _a === void 0 ? void 0 : _a.dispose(); + if (!this._token) { + // ensure to initialize with an empty token if we had none + this._token = CancellationToken.None; + } + else if (this._token instanceof MutableToken) { + // actually dispose + this._token.dispose(); + } + } +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +class KeyCodeStrMap { + constructor() { + this._keyCodeToStr = []; + this._strToKeyCode = Object.create(null); + } + define(keyCode, str) { + this._keyCodeToStr[keyCode] = str; + this._strToKeyCode[str.toLowerCase()] = keyCode; + } + keyCodeToStr(keyCode) { + return this._keyCodeToStr[keyCode]; + } + strToKeyCode(str) { + return this._strToKeyCode[str.toLowerCase()] || 0 /* KeyCode.Unknown */; + } +} +const uiMap = new KeyCodeStrMap(); +const userSettingsUSMap = new KeyCodeStrMap(); +const userSettingsGeneralMap = new KeyCodeStrMap(); +const EVENT_KEY_CODE_MAP = new Array(230); +const scanCodeStrToInt = Object.create(null); +const scanCodeLowerCaseStrToInt = Object.create(null); +(function () { + // See https://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx + // See https://github.com/microsoft/node-native-keymap/blob/88c0b0e5/deps/chromium/keyboard_codes_win.h + const empty = ''; + const mappings = [ + // immutable, scanCode, scanCodeStr, keyCode, keyCodeStr, eventKeyCode, vkey, usUserSettingsLabel, generalUserSettingsLabel + [1, 0 /* ScanCode.None */, 'None', 0 /* KeyCode.Unknown */, 'unknown', 0, 'VK_UNKNOWN', empty, empty], + [1, 1 /* ScanCode.Hyper */, 'Hyper', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 2 /* ScanCode.Super */, 'Super', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 3 /* ScanCode.Fn */, 'Fn', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 4 /* ScanCode.FnLock */, 'FnLock', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 5 /* ScanCode.Suspend */, 'Suspend', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 6 /* ScanCode.Resume */, 'Resume', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 7 /* ScanCode.Turbo */, 'Turbo', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 8 /* ScanCode.Sleep */, 'Sleep', 0 /* KeyCode.Unknown */, empty, 0, 'VK_SLEEP', empty, empty], + [1, 9 /* ScanCode.WakeUp */, 'WakeUp', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [0, 10 /* ScanCode.KeyA */, 'KeyA', 31 /* KeyCode.KeyA */, 'A', 65, 'VK_A', empty, empty], + [0, 11 /* ScanCode.KeyB */, 'KeyB', 32 /* KeyCode.KeyB */, 'B', 66, 'VK_B', empty, empty], + [0, 12 /* ScanCode.KeyC */, 'KeyC', 33 /* KeyCode.KeyC */, 'C', 67, 'VK_C', empty, empty], + [0, 13 /* ScanCode.KeyD */, 'KeyD', 34 /* KeyCode.KeyD */, 'D', 68, 'VK_D', empty, empty], + [0, 14 /* ScanCode.KeyE */, 'KeyE', 35 /* KeyCode.KeyE */, 'E', 69, 'VK_E', empty, empty], + [0, 15 /* ScanCode.KeyF */, 'KeyF', 36 /* KeyCode.KeyF */, 'F', 70, 'VK_F', empty, empty], + [0, 16 /* ScanCode.KeyG */, 'KeyG', 37 /* KeyCode.KeyG */, 'G', 71, 'VK_G', empty, empty], + [0, 17 /* ScanCode.KeyH */, 'KeyH', 38 /* KeyCode.KeyH */, 'H', 72, 'VK_H', empty, empty], + [0, 18 /* ScanCode.KeyI */, 'KeyI', 39 /* KeyCode.KeyI */, 'I', 73, 'VK_I', empty, empty], + [0, 19 /* ScanCode.KeyJ */, 'KeyJ', 40 /* KeyCode.KeyJ */, 'J', 74, 'VK_J', empty, empty], + [0, 20 /* ScanCode.KeyK */, 'KeyK', 41 /* KeyCode.KeyK */, 'K', 75, 'VK_K', empty, empty], + [0, 21 /* ScanCode.KeyL */, 'KeyL', 42 /* KeyCode.KeyL */, 'L', 76, 'VK_L', empty, empty], + [0, 22 /* ScanCode.KeyM */, 'KeyM', 43 /* KeyCode.KeyM */, 'M', 77, 'VK_M', empty, empty], + [0, 23 /* ScanCode.KeyN */, 'KeyN', 44 /* KeyCode.KeyN */, 'N', 78, 'VK_N', empty, empty], + [0, 24 /* ScanCode.KeyO */, 'KeyO', 45 /* KeyCode.KeyO */, 'O', 79, 'VK_O', empty, empty], + [0, 25 /* ScanCode.KeyP */, 'KeyP', 46 /* KeyCode.KeyP */, 'P', 80, 'VK_P', empty, empty], + [0, 26 /* ScanCode.KeyQ */, 'KeyQ', 47 /* KeyCode.KeyQ */, 'Q', 81, 'VK_Q', empty, empty], + [0, 27 /* ScanCode.KeyR */, 'KeyR', 48 /* KeyCode.KeyR */, 'R', 82, 'VK_R', empty, empty], + [0, 28 /* ScanCode.KeyS */, 'KeyS', 49 /* KeyCode.KeyS */, 'S', 83, 'VK_S', empty, empty], + [0, 29 /* ScanCode.KeyT */, 'KeyT', 50 /* KeyCode.KeyT */, 'T', 84, 'VK_T', empty, empty], + [0, 30 /* ScanCode.KeyU */, 'KeyU', 51 /* KeyCode.KeyU */, 'U', 85, 'VK_U', empty, empty], + [0, 31 /* ScanCode.KeyV */, 'KeyV', 52 /* KeyCode.KeyV */, 'V', 86, 'VK_V', empty, empty], + [0, 32 /* ScanCode.KeyW */, 'KeyW', 53 /* KeyCode.KeyW */, 'W', 87, 'VK_W', empty, empty], + [0, 33 /* ScanCode.KeyX */, 'KeyX', 54 /* KeyCode.KeyX */, 'X', 88, 'VK_X', empty, empty], + [0, 34 /* ScanCode.KeyY */, 'KeyY', 55 /* KeyCode.KeyY */, 'Y', 89, 'VK_Y', empty, empty], + [0, 35 /* ScanCode.KeyZ */, 'KeyZ', 56 /* KeyCode.KeyZ */, 'Z', 90, 'VK_Z', empty, empty], + [0, 36 /* ScanCode.Digit1 */, 'Digit1', 22 /* KeyCode.Digit1 */, '1', 49, 'VK_1', empty, empty], + [0, 37 /* ScanCode.Digit2 */, 'Digit2', 23 /* KeyCode.Digit2 */, '2', 50, 'VK_2', empty, empty], + [0, 38 /* ScanCode.Digit3 */, 'Digit3', 24 /* KeyCode.Digit3 */, '3', 51, 'VK_3', empty, empty], + [0, 39 /* ScanCode.Digit4 */, 'Digit4', 25 /* KeyCode.Digit4 */, '4', 52, 'VK_4', empty, empty], + [0, 40 /* ScanCode.Digit5 */, 'Digit5', 26 /* KeyCode.Digit5 */, '5', 53, 'VK_5', empty, empty], + [0, 41 /* ScanCode.Digit6 */, 'Digit6', 27 /* KeyCode.Digit6 */, '6', 54, 'VK_6', empty, empty], + [0, 42 /* ScanCode.Digit7 */, 'Digit7', 28 /* KeyCode.Digit7 */, '7', 55, 'VK_7', empty, empty], + [0, 43 /* ScanCode.Digit8 */, 'Digit8', 29 /* KeyCode.Digit8 */, '8', 56, 'VK_8', empty, empty], + [0, 44 /* ScanCode.Digit9 */, 'Digit9', 30 /* KeyCode.Digit9 */, '9', 57, 'VK_9', empty, empty], + [0, 45 /* ScanCode.Digit0 */, 'Digit0', 21 /* KeyCode.Digit0 */, '0', 48, 'VK_0', empty, empty], + [1, 46 /* ScanCode.Enter */, 'Enter', 3 /* KeyCode.Enter */, 'Enter', 13, 'VK_RETURN', empty, empty], + [1, 47 /* ScanCode.Escape */, 'Escape', 9 /* KeyCode.Escape */, 'Escape', 27, 'VK_ESCAPE', empty, empty], + [1, 48 /* ScanCode.Backspace */, 'Backspace', 1 /* KeyCode.Backspace */, 'Backspace', 8, 'VK_BACK', empty, empty], + [1, 49 /* ScanCode.Tab */, 'Tab', 2 /* KeyCode.Tab */, 'Tab', 9, 'VK_TAB', empty, empty], + [1, 50 /* ScanCode.Space */, 'Space', 10 /* KeyCode.Space */, 'Space', 32, 'VK_SPACE', empty, empty], + [0, 51 /* ScanCode.Minus */, 'Minus', 88 /* KeyCode.Minus */, '-', 189, 'VK_OEM_MINUS', '-', 'OEM_MINUS'], + [0, 52 /* ScanCode.Equal */, 'Equal', 86 /* KeyCode.Equal */, '=', 187, 'VK_OEM_PLUS', '=', 'OEM_PLUS'], + [0, 53 /* ScanCode.BracketLeft */, 'BracketLeft', 92 /* KeyCode.BracketLeft */, '[', 219, 'VK_OEM_4', '[', 'OEM_4'], + [0, 54 /* ScanCode.BracketRight */, 'BracketRight', 94 /* KeyCode.BracketRight */, ']', 221, 'VK_OEM_6', ']', 'OEM_6'], + [0, 55 /* ScanCode.Backslash */, 'Backslash', 93 /* KeyCode.Backslash */, '\\', 220, 'VK_OEM_5', '\\', 'OEM_5'], + [0, 56 /* ScanCode.IntlHash */, 'IntlHash', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], // has been dropped from the w3c spec + [0, 57 /* ScanCode.Semicolon */, 'Semicolon', 85 /* KeyCode.Semicolon */, ';', 186, 'VK_OEM_1', ';', 'OEM_1'], + [0, 58 /* ScanCode.Quote */, 'Quote', 95 /* KeyCode.Quote */, '\'', 222, 'VK_OEM_7', '\'', 'OEM_7'], + [0, 59 /* ScanCode.Backquote */, 'Backquote', 91 /* KeyCode.Backquote */, '`', 192, 'VK_OEM_3', '`', 'OEM_3'], + [0, 60 /* ScanCode.Comma */, 'Comma', 87 /* KeyCode.Comma */, ',', 188, 'VK_OEM_COMMA', ',', 'OEM_COMMA'], + [0, 61 /* ScanCode.Period */, 'Period', 89 /* KeyCode.Period */, '.', 190, 'VK_OEM_PERIOD', '.', 'OEM_PERIOD'], + [0, 62 /* ScanCode.Slash */, 'Slash', 90 /* KeyCode.Slash */, '/', 191, 'VK_OEM_2', '/', 'OEM_2'], + [1, 63 /* ScanCode.CapsLock */, 'CapsLock', 8 /* KeyCode.CapsLock */, 'CapsLock', 20, 'VK_CAPITAL', empty, empty], + [1, 64 /* ScanCode.F1 */, 'F1', 59 /* KeyCode.F1 */, 'F1', 112, 'VK_F1', empty, empty], + [1, 65 /* ScanCode.F2 */, 'F2', 60 /* KeyCode.F2 */, 'F2', 113, 'VK_F2', empty, empty], + [1, 66 /* ScanCode.F3 */, 'F3', 61 /* KeyCode.F3 */, 'F3', 114, 'VK_F3', empty, empty], + [1, 67 /* ScanCode.F4 */, 'F4', 62 /* KeyCode.F4 */, 'F4', 115, 'VK_F4', empty, empty], + [1, 68 /* ScanCode.F5 */, 'F5', 63 /* KeyCode.F5 */, 'F5', 116, 'VK_F5', empty, empty], + [1, 69 /* ScanCode.F6 */, 'F6', 64 /* KeyCode.F6 */, 'F6', 117, 'VK_F6', empty, empty], + [1, 70 /* ScanCode.F7 */, 'F7', 65 /* KeyCode.F7 */, 'F7', 118, 'VK_F7', empty, empty], + [1, 71 /* ScanCode.F8 */, 'F8', 66 /* KeyCode.F8 */, 'F8', 119, 'VK_F8', empty, empty], + [1, 72 /* ScanCode.F9 */, 'F9', 67 /* KeyCode.F9 */, 'F9', 120, 'VK_F9', empty, empty], + [1, 73 /* ScanCode.F10 */, 'F10', 68 /* KeyCode.F10 */, 'F10', 121, 'VK_F10', empty, empty], + [1, 74 /* ScanCode.F11 */, 'F11', 69 /* KeyCode.F11 */, 'F11', 122, 'VK_F11', empty, empty], + [1, 75 /* ScanCode.F12 */, 'F12', 70 /* KeyCode.F12 */, 'F12', 123, 'VK_F12', empty, empty], + [1, 76 /* ScanCode.PrintScreen */, 'PrintScreen', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 77 /* ScanCode.ScrollLock */, 'ScrollLock', 84 /* KeyCode.ScrollLock */, 'ScrollLock', 145, 'VK_SCROLL', empty, empty], + [1, 78 /* ScanCode.Pause */, 'Pause', 7 /* KeyCode.PauseBreak */, 'PauseBreak', 19, 'VK_PAUSE', empty, empty], + [1, 79 /* ScanCode.Insert */, 'Insert', 19 /* KeyCode.Insert */, 'Insert', 45, 'VK_INSERT', empty, empty], + [1, 80 /* ScanCode.Home */, 'Home', 14 /* KeyCode.Home */, 'Home', 36, 'VK_HOME', empty, empty], + [1, 81 /* ScanCode.PageUp */, 'PageUp', 11 /* KeyCode.PageUp */, 'PageUp', 33, 'VK_PRIOR', empty, empty], + [1, 82 /* ScanCode.Delete */, 'Delete', 20 /* KeyCode.Delete */, 'Delete', 46, 'VK_DELETE', empty, empty], + [1, 83 /* ScanCode.End */, 'End', 13 /* KeyCode.End */, 'End', 35, 'VK_END', empty, empty], + [1, 84 /* ScanCode.PageDown */, 'PageDown', 12 /* KeyCode.PageDown */, 'PageDown', 34, 'VK_NEXT', empty, empty], + [1, 85 /* ScanCode.ArrowRight */, 'ArrowRight', 17 /* KeyCode.RightArrow */, 'RightArrow', 39, 'VK_RIGHT', 'Right', empty], + [1, 86 /* ScanCode.ArrowLeft */, 'ArrowLeft', 15 /* KeyCode.LeftArrow */, 'LeftArrow', 37, 'VK_LEFT', 'Left', empty], + [1, 87 /* ScanCode.ArrowDown */, 'ArrowDown', 18 /* KeyCode.DownArrow */, 'DownArrow', 40, 'VK_DOWN', 'Down', empty], + [1, 88 /* ScanCode.ArrowUp */, 'ArrowUp', 16 /* KeyCode.UpArrow */, 'UpArrow', 38, 'VK_UP', 'Up', empty], + [1, 89 /* ScanCode.NumLock */, 'NumLock', 83 /* KeyCode.NumLock */, 'NumLock', 144, 'VK_NUMLOCK', empty, empty], + [1, 90 /* ScanCode.NumpadDivide */, 'NumpadDivide', 113 /* KeyCode.NumpadDivide */, 'NumPad_Divide', 111, 'VK_DIVIDE', empty, empty], + [1, 91 /* ScanCode.NumpadMultiply */, 'NumpadMultiply', 108 /* KeyCode.NumpadMultiply */, 'NumPad_Multiply', 106, 'VK_MULTIPLY', empty, empty], + [1, 92 /* ScanCode.NumpadSubtract */, 'NumpadSubtract', 111 /* KeyCode.NumpadSubtract */, 'NumPad_Subtract', 109, 'VK_SUBTRACT', empty, empty], + [1, 93 /* ScanCode.NumpadAdd */, 'NumpadAdd', 109 /* KeyCode.NumpadAdd */, 'NumPad_Add', 107, 'VK_ADD', empty, empty], + [1, 94 /* ScanCode.NumpadEnter */, 'NumpadEnter', 3 /* KeyCode.Enter */, empty, 0, empty, empty, empty], + [1, 95 /* ScanCode.Numpad1 */, 'Numpad1', 99 /* KeyCode.Numpad1 */, 'NumPad1', 97, 'VK_NUMPAD1', empty, empty], + [1, 96 /* ScanCode.Numpad2 */, 'Numpad2', 100 /* KeyCode.Numpad2 */, 'NumPad2', 98, 'VK_NUMPAD2', empty, empty], + [1, 97 /* ScanCode.Numpad3 */, 'Numpad3', 101 /* KeyCode.Numpad3 */, 'NumPad3', 99, 'VK_NUMPAD3', empty, empty], + [1, 98 /* ScanCode.Numpad4 */, 'Numpad4', 102 /* KeyCode.Numpad4 */, 'NumPad4', 100, 'VK_NUMPAD4', empty, empty], + [1, 99 /* ScanCode.Numpad5 */, 'Numpad5', 103 /* KeyCode.Numpad5 */, 'NumPad5', 101, 'VK_NUMPAD5', empty, empty], + [1, 100 /* ScanCode.Numpad6 */, 'Numpad6', 104 /* KeyCode.Numpad6 */, 'NumPad6', 102, 'VK_NUMPAD6', empty, empty], + [1, 101 /* ScanCode.Numpad7 */, 'Numpad7', 105 /* KeyCode.Numpad7 */, 'NumPad7', 103, 'VK_NUMPAD7', empty, empty], + [1, 102 /* ScanCode.Numpad8 */, 'Numpad8', 106 /* KeyCode.Numpad8 */, 'NumPad8', 104, 'VK_NUMPAD8', empty, empty], + [1, 103 /* ScanCode.Numpad9 */, 'Numpad9', 107 /* KeyCode.Numpad9 */, 'NumPad9', 105, 'VK_NUMPAD9', empty, empty], + [1, 104 /* ScanCode.Numpad0 */, 'Numpad0', 98 /* KeyCode.Numpad0 */, 'NumPad0', 96, 'VK_NUMPAD0', empty, empty], + [1, 105 /* ScanCode.NumpadDecimal */, 'NumpadDecimal', 112 /* KeyCode.NumpadDecimal */, 'NumPad_Decimal', 110, 'VK_DECIMAL', empty, empty], + [0, 106 /* ScanCode.IntlBackslash */, 'IntlBackslash', 97 /* KeyCode.IntlBackslash */, 'OEM_102', 226, 'VK_OEM_102', empty, empty], + [1, 107 /* ScanCode.ContextMenu */, 'ContextMenu', 58 /* KeyCode.ContextMenu */, 'ContextMenu', 93, empty, empty, empty], + [1, 108 /* ScanCode.Power */, 'Power', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 109 /* ScanCode.NumpadEqual */, 'NumpadEqual', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 110 /* ScanCode.F13 */, 'F13', 71 /* KeyCode.F13 */, 'F13', 124, 'VK_F13', empty, empty], + [1, 111 /* ScanCode.F14 */, 'F14', 72 /* KeyCode.F14 */, 'F14', 125, 'VK_F14', empty, empty], + [1, 112 /* ScanCode.F15 */, 'F15', 73 /* KeyCode.F15 */, 'F15', 126, 'VK_F15', empty, empty], + [1, 113 /* ScanCode.F16 */, 'F16', 74 /* KeyCode.F16 */, 'F16', 127, 'VK_F16', empty, empty], + [1, 114 /* ScanCode.F17 */, 'F17', 75 /* KeyCode.F17 */, 'F17', 128, 'VK_F17', empty, empty], + [1, 115 /* ScanCode.F18 */, 'F18', 76 /* KeyCode.F18 */, 'F18', 129, 'VK_F18', empty, empty], + [1, 116 /* ScanCode.F19 */, 'F19', 77 /* KeyCode.F19 */, 'F19', 130, 'VK_F19', empty, empty], + [1, 117 /* ScanCode.F20 */, 'F20', 78 /* KeyCode.F20 */, 'F20', 131, 'VK_F20', empty, empty], + [1, 118 /* ScanCode.F21 */, 'F21', 79 /* KeyCode.F21 */, 'F21', 132, 'VK_F21', empty, empty], + [1, 119 /* ScanCode.F22 */, 'F22', 80 /* KeyCode.F22 */, 'F22', 133, 'VK_F22', empty, empty], + [1, 120 /* ScanCode.F23 */, 'F23', 81 /* KeyCode.F23 */, 'F23', 134, 'VK_F23', empty, empty], + [1, 121 /* ScanCode.F24 */, 'F24', 82 /* KeyCode.F24 */, 'F24', 135, 'VK_F24', empty, empty], + [1, 122 /* ScanCode.Open */, 'Open', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 123 /* ScanCode.Help */, 'Help', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 124 /* ScanCode.Select */, 'Select', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 125 /* ScanCode.Again */, 'Again', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 126 /* ScanCode.Undo */, 'Undo', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 127 /* ScanCode.Cut */, 'Cut', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 128 /* ScanCode.Copy */, 'Copy', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 129 /* ScanCode.Paste */, 'Paste', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 130 /* ScanCode.Find */, 'Find', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 131 /* ScanCode.AudioVolumeMute */, 'AudioVolumeMute', 117 /* KeyCode.AudioVolumeMute */, 'AudioVolumeMute', 173, 'VK_VOLUME_MUTE', empty, empty], + [1, 132 /* ScanCode.AudioVolumeUp */, 'AudioVolumeUp', 118 /* KeyCode.AudioVolumeUp */, 'AudioVolumeUp', 175, 'VK_VOLUME_UP', empty, empty], + [1, 133 /* ScanCode.AudioVolumeDown */, 'AudioVolumeDown', 119 /* KeyCode.AudioVolumeDown */, 'AudioVolumeDown', 174, 'VK_VOLUME_DOWN', empty, empty], + [1, 134 /* ScanCode.NumpadComma */, 'NumpadComma', 110 /* KeyCode.NUMPAD_SEPARATOR */, 'NumPad_Separator', 108, 'VK_SEPARATOR', empty, empty], + [0, 135 /* ScanCode.IntlRo */, 'IntlRo', 115 /* KeyCode.ABNT_C1 */, 'ABNT_C1', 193, 'VK_ABNT_C1', empty, empty], + [1, 136 /* ScanCode.KanaMode */, 'KanaMode', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [0, 137 /* ScanCode.IntlYen */, 'IntlYen', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 138 /* ScanCode.Convert */, 'Convert', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 139 /* ScanCode.NonConvert */, 'NonConvert', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 140 /* ScanCode.Lang1 */, 'Lang1', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 141 /* ScanCode.Lang2 */, 'Lang2', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 142 /* ScanCode.Lang3 */, 'Lang3', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 143 /* ScanCode.Lang4 */, 'Lang4', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 144 /* ScanCode.Lang5 */, 'Lang5', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 145 /* ScanCode.Abort */, 'Abort', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 146 /* ScanCode.Props */, 'Props', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 147 /* ScanCode.NumpadParenLeft */, 'NumpadParenLeft', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 148 /* ScanCode.NumpadParenRight */, 'NumpadParenRight', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 149 /* ScanCode.NumpadBackspace */, 'NumpadBackspace', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 150 /* ScanCode.NumpadMemoryStore */, 'NumpadMemoryStore', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 151 /* ScanCode.NumpadMemoryRecall */, 'NumpadMemoryRecall', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 152 /* ScanCode.NumpadMemoryClear */, 'NumpadMemoryClear', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 153 /* ScanCode.NumpadMemoryAdd */, 'NumpadMemoryAdd', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 154 /* ScanCode.NumpadMemorySubtract */, 'NumpadMemorySubtract', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 155 /* ScanCode.NumpadClear */, 'NumpadClear', 131 /* KeyCode.Clear */, 'Clear', 12, 'VK_CLEAR', empty, empty], + [1, 156 /* ScanCode.NumpadClearEntry */, 'NumpadClearEntry', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 0 /* ScanCode.None */, empty, 5 /* KeyCode.Ctrl */, 'Ctrl', 17, 'VK_CONTROL', empty, empty], + [1, 0 /* ScanCode.None */, empty, 4 /* KeyCode.Shift */, 'Shift', 16, 'VK_SHIFT', empty, empty], + [1, 0 /* ScanCode.None */, empty, 6 /* KeyCode.Alt */, 'Alt', 18, 'VK_MENU', empty, empty], + [1, 0 /* ScanCode.None */, empty, 57 /* KeyCode.Meta */, 'Meta', 91, 'VK_COMMAND', empty, empty], + [1, 157 /* ScanCode.ControlLeft */, 'ControlLeft', 5 /* KeyCode.Ctrl */, empty, 0, 'VK_LCONTROL', empty, empty], + [1, 158 /* ScanCode.ShiftLeft */, 'ShiftLeft', 4 /* KeyCode.Shift */, empty, 0, 'VK_LSHIFT', empty, empty], + [1, 159 /* ScanCode.AltLeft */, 'AltLeft', 6 /* KeyCode.Alt */, empty, 0, 'VK_LMENU', empty, empty], + [1, 160 /* ScanCode.MetaLeft */, 'MetaLeft', 57 /* KeyCode.Meta */, empty, 0, 'VK_LWIN', empty, empty], + [1, 161 /* ScanCode.ControlRight */, 'ControlRight', 5 /* KeyCode.Ctrl */, empty, 0, 'VK_RCONTROL', empty, empty], + [1, 162 /* ScanCode.ShiftRight */, 'ShiftRight', 4 /* KeyCode.Shift */, empty, 0, 'VK_RSHIFT', empty, empty], + [1, 163 /* ScanCode.AltRight */, 'AltRight', 6 /* KeyCode.Alt */, empty, 0, 'VK_RMENU', empty, empty], + [1, 164 /* ScanCode.MetaRight */, 'MetaRight', 57 /* KeyCode.Meta */, empty, 0, 'VK_RWIN', empty, empty], + [1, 165 /* ScanCode.BrightnessUp */, 'BrightnessUp', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 166 /* ScanCode.BrightnessDown */, 'BrightnessDown', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 167 /* ScanCode.MediaPlay */, 'MediaPlay', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 168 /* ScanCode.MediaRecord */, 'MediaRecord', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 169 /* ScanCode.MediaFastForward */, 'MediaFastForward', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 170 /* ScanCode.MediaRewind */, 'MediaRewind', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 171 /* ScanCode.MediaTrackNext */, 'MediaTrackNext', 124 /* KeyCode.MediaTrackNext */, 'MediaTrackNext', 176, 'VK_MEDIA_NEXT_TRACK', empty, empty], + [1, 172 /* ScanCode.MediaTrackPrevious */, 'MediaTrackPrevious', 125 /* KeyCode.MediaTrackPrevious */, 'MediaTrackPrevious', 177, 'VK_MEDIA_PREV_TRACK', empty, empty], + [1, 173 /* ScanCode.MediaStop */, 'MediaStop', 126 /* KeyCode.MediaStop */, 'MediaStop', 178, 'VK_MEDIA_STOP', empty, empty], + [1, 174 /* ScanCode.Eject */, 'Eject', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 175 /* ScanCode.MediaPlayPause */, 'MediaPlayPause', 127 /* KeyCode.MediaPlayPause */, 'MediaPlayPause', 179, 'VK_MEDIA_PLAY_PAUSE', empty, empty], + [1, 176 /* ScanCode.MediaSelect */, 'MediaSelect', 128 /* KeyCode.LaunchMediaPlayer */, 'LaunchMediaPlayer', 181, 'VK_MEDIA_LAUNCH_MEDIA_SELECT', empty, empty], + [1, 177 /* ScanCode.LaunchMail */, 'LaunchMail', 129 /* KeyCode.LaunchMail */, 'LaunchMail', 180, 'VK_MEDIA_LAUNCH_MAIL', empty, empty], + [1, 178 /* ScanCode.LaunchApp2 */, 'LaunchApp2', 130 /* KeyCode.LaunchApp2 */, 'LaunchApp2', 183, 'VK_MEDIA_LAUNCH_APP2', empty, empty], + [1, 179 /* ScanCode.LaunchApp1 */, 'LaunchApp1', 0 /* KeyCode.Unknown */, empty, 0, 'VK_MEDIA_LAUNCH_APP1', empty, empty], + [1, 180 /* ScanCode.SelectTask */, 'SelectTask', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 181 /* ScanCode.LaunchScreenSaver */, 'LaunchScreenSaver', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 182 /* ScanCode.BrowserSearch */, 'BrowserSearch', 120 /* KeyCode.BrowserSearch */, 'BrowserSearch', 170, 'VK_BROWSER_SEARCH', empty, empty], + [1, 183 /* ScanCode.BrowserHome */, 'BrowserHome', 121 /* KeyCode.BrowserHome */, 'BrowserHome', 172, 'VK_BROWSER_HOME', empty, empty], + [1, 184 /* ScanCode.BrowserBack */, 'BrowserBack', 122 /* KeyCode.BrowserBack */, 'BrowserBack', 166, 'VK_BROWSER_BACK', empty, empty], + [1, 185 /* ScanCode.BrowserForward */, 'BrowserForward', 123 /* KeyCode.BrowserForward */, 'BrowserForward', 167, 'VK_BROWSER_FORWARD', empty, empty], + [1, 186 /* ScanCode.BrowserStop */, 'BrowserStop', 0 /* KeyCode.Unknown */, empty, 0, 'VK_BROWSER_STOP', empty, empty], + [1, 187 /* ScanCode.BrowserRefresh */, 'BrowserRefresh', 0 /* KeyCode.Unknown */, empty, 0, 'VK_BROWSER_REFRESH', empty, empty], + [1, 188 /* ScanCode.BrowserFavorites */, 'BrowserFavorites', 0 /* KeyCode.Unknown */, empty, 0, 'VK_BROWSER_FAVORITES', empty, empty], + [1, 189 /* ScanCode.ZoomToggle */, 'ZoomToggle', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 190 /* ScanCode.MailReply */, 'MailReply', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 191 /* ScanCode.MailForward */, 'MailForward', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 192 /* ScanCode.MailSend */, 'MailSend', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + // See https://lists.w3.org/Archives/Public/www-dom/2010JulSep/att-0182/keyCode-spec.html + // If an Input Method Editor is processing key input and the event is keydown, return 229. + [1, 0 /* ScanCode.None */, empty, 114 /* KeyCode.KEY_IN_COMPOSITION */, 'KeyInComposition', 229, empty, empty, empty], + [1, 0 /* ScanCode.None */, empty, 116 /* KeyCode.ABNT_C2 */, 'ABNT_C2', 194, 'VK_ABNT_C2', empty, empty], + [1, 0 /* ScanCode.None */, empty, 96 /* KeyCode.OEM_8 */, 'OEM_8', 223, 'VK_OEM_8', empty, empty], + [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_KANA', empty, empty], + [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_HANGUL', empty, empty], + [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_JUNJA', empty, empty], + [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_FINAL', empty, empty], + [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_HANJA', empty, empty], + [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_KANJI', empty, empty], + [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_CONVERT', empty, empty], + [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_NONCONVERT', empty, empty], + [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_ACCEPT', empty, empty], + [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_MODECHANGE', empty, empty], + [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_SELECT', empty, empty], + [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_PRINT', empty, empty], + [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_EXECUTE', empty, empty], + [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_SNAPSHOT', empty, empty], + [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_HELP', empty, empty], + [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_APPS', empty, empty], + [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_PROCESSKEY', empty, empty], + [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_PACKET', empty, empty], + [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_DBE_SBCSCHAR', empty, empty], + [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_DBE_DBCSCHAR', empty, empty], + [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_ATTN', empty, empty], + [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_CRSEL', empty, empty], + [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_EXSEL', empty, empty], + [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_EREOF', empty, empty], + [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_PLAY', empty, empty], + [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_ZOOM', empty, empty], + [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_NONAME', empty, empty], + [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_PA1', empty, empty], + [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_OEM_CLEAR', empty, empty], + ]; + const seenKeyCode = []; + const seenScanCode = []; + for (const mapping of mappings) { + const [immutable, scanCode, scanCodeStr, keyCode, keyCodeStr, eventKeyCode, vkey, usUserSettingsLabel, generalUserSettingsLabel] = mapping; + if (!seenScanCode[scanCode]) { + seenScanCode[scanCode] = true; + scanCodeStrToInt[scanCodeStr] = scanCode; + scanCodeLowerCaseStrToInt[scanCodeStr.toLowerCase()] = scanCode; + } + if (!seenKeyCode[keyCode]) { + seenKeyCode[keyCode] = true; + if (!keyCodeStr) { + throw new Error(`String representation missing for key code ${keyCode} around scan code ${scanCodeStr}`); + } + uiMap.define(keyCode, keyCodeStr); + userSettingsUSMap.define(keyCode, usUserSettingsLabel || keyCodeStr); + userSettingsGeneralMap.define(keyCode, generalUserSettingsLabel || usUserSettingsLabel || keyCodeStr); + } + if (eventKeyCode) { + EVENT_KEY_CODE_MAP[eventKeyCode] = keyCode; + } + } +})(); +var KeyCodeUtils; +(function (KeyCodeUtils) { + function toString(keyCode) { + return uiMap.keyCodeToStr(keyCode); + } + KeyCodeUtils.toString = toString; + function fromString(key) { + return uiMap.strToKeyCode(key); + } + KeyCodeUtils.fromString = fromString; + function toUserSettingsUS(keyCode) { + return userSettingsUSMap.keyCodeToStr(keyCode); + } + KeyCodeUtils.toUserSettingsUS = toUserSettingsUS; + function toUserSettingsGeneral(keyCode) { + return userSettingsGeneralMap.keyCodeToStr(keyCode); + } + KeyCodeUtils.toUserSettingsGeneral = toUserSettingsGeneral; + function fromUserSettings(key) { + return userSettingsUSMap.strToKeyCode(key) || userSettingsGeneralMap.strToKeyCode(key); + } + KeyCodeUtils.fromUserSettings = fromUserSettings; + function toElectronAccelerator(keyCode) { + if (keyCode >= 98 /* KeyCode.Numpad0 */ && keyCode <= 113 /* KeyCode.NumpadDivide */) { + // [Electron Accelerators] Electron is able to parse numpad keys, but unfortunately it + // renders them just as regular keys in menus. For example, num0 is rendered as "0", + // numdiv is rendered as "/", numsub is rendered as "-". + // + // This can lead to incredible confusion, as it makes numpad based keybindings indistinguishable + // from keybindings based on regular keys. + // + // We therefore need to fall back to custom rendering for numpad keys. + return null; + } + switch (keyCode) { + case 16 /* KeyCode.UpArrow */: + return 'Up'; + case 18 /* KeyCode.DownArrow */: + return 'Down'; + case 15 /* KeyCode.LeftArrow */: + return 'Left'; + case 17 /* KeyCode.RightArrow */: + return 'Right'; + } + return uiMap.keyCodeToStr(keyCode); + } + KeyCodeUtils.toElectronAccelerator = toElectronAccelerator; +})(KeyCodeUtils || (KeyCodeUtils = {})); +function KeyChord(firstPart, secondPart) { + const chordPart = ((secondPart & 0x0000FFFF) << 16) >>> 0; + return (firstPart | chordPart) >>> 0; +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +/** + * A selection in the editor. + * The selection is a range that has an orientation. + */ +class Selection extends Range { + constructor(selectionStartLineNumber, selectionStartColumn, positionLineNumber, positionColumn) { + super(selectionStartLineNumber, selectionStartColumn, positionLineNumber, positionColumn); + this.selectionStartLineNumber = selectionStartLineNumber; + this.selectionStartColumn = selectionStartColumn; + this.positionLineNumber = positionLineNumber; + this.positionColumn = positionColumn; + } + /** + * Transform to a human-readable representation. + */ + toString() { + return '[' + this.selectionStartLineNumber + ',' + this.selectionStartColumn + ' -> ' + this.positionLineNumber + ',' + this.positionColumn + ']'; + } + /** + * Test if equals other selection. + */ + equalsSelection(other) { + return (Selection.selectionsEqual(this, other)); + } + /** + * Test if the two selections are equal. + */ + static selectionsEqual(a, b) { + return (a.selectionStartLineNumber === b.selectionStartLineNumber && + a.selectionStartColumn === b.selectionStartColumn && + a.positionLineNumber === b.positionLineNumber && + a.positionColumn === b.positionColumn); + } + /** + * Get directions (LTR or RTL). + */ + getDirection() { + if (this.selectionStartLineNumber === this.startLineNumber && this.selectionStartColumn === this.startColumn) { + return 0 /* SelectionDirection.LTR */; + } + return 1 /* SelectionDirection.RTL */; + } + /** + * Create a new selection with a different `positionLineNumber` and `positionColumn`. + */ + setEndPosition(endLineNumber, endColumn) { + if (this.getDirection() === 0 /* SelectionDirection.LTR */) { + return new Selection(this.startLineNumber, this.startColumn, endLineNumber, endColumn); + } + return new Selection(endLineNumber, endColumn, this.startLineNumber, this.startColumn); + } + /** + * Get the position at `positionLineNumber` and `positionColumn`. + */ + getPosition() { + return new Position(this.positionLineNumber, this.positionColumn); + } + /** + * Get the position at the start of the selection. + */ + getSelectionStart() { + return new Position(this.selectionStartLineNumber, this.selectionStartColumn); + } + /** + * Create a new selection with a different `selectionStartLineNumber` and `selectionStartColumn`. + */ + setStartPosition(startLineNumber, startColumn) { + if (this.getDirection() === 0 /* SelectionDirection.LTR */) { + return new Selection(startLineNumber, startColumn, this.endLineNumber, this.endColumn); + } + return new Selection(this.endLineNumber, this.endColumn, startLineNumber, startColumn); + } + // ---- + /** + * Create a `Selection` from one or two positions + */ + static fromPositions(start, end = start) { + return new Selection(start.lineNumber, start.column, end.lineNumber, end.column); + } + /** + * Creates a `Selection` from a range, given a direction. + */ + static fromRange(range, direction) { + if (direction === 0 /* SelectionDirection.LTR */) { + return new Selection(range.startLineNumber, range.startColumn, range.endLineNumber, range.endColumn); + } + else { + return new Selection(range.endLineNumber, range.endColumn, range.startLineNumber, range.startColumn); + } + } + /** + * Create a `Selection` from an `ISelection`. + */ + static liftSelection(sel) { + return new Selection(sel.selectionStartLineNumber, sel.selectionStartColumn, sel.positionLineNumber, sel.positionColumn); + } + /** + * `a` equals `b`. + */ + static selectionsArrEqual(a, b) { + if (a && !b || !a && b) { + return false; + } + if (!a && !b) { + return true; + } + if (a.length !== b.length) { + return false; + } + for (let i = 0, len = a.length; i < len; i++) { + if (!this.selectionsEqual(a[i], b[i])) { + return false; + } + } + return true; + } + /** + * Test if `obj` is an `ISelection`. + */ + static isISelection(obj) { + return (obj + && (typeof obj.selectionStartLineNumber === 'number') + && (typeof obj.selectionStartColumn === 'number') + && (typeof obj.positionLineNumber === 'number') + && (typeof obj.positionColumn === 'number')); + } + /** + * Create with a direction. + */ + static createWithDirection(startLineNumber, startColumn, endLineNumber, endColumn, direction) { + if (direction === 0 /* SelectionDirection.LTR */) { + return new Selection(startLineNumber, startColumn, endLineNumber, endColumn); + } + return new Selection(endLineNumber, endColumn, startLineNumber, startColumn); + } +} + +const _codiconFontCharacters = Object.create(null); +function register(id, fontCharacter) { + if (isString(fontCharacter)) { + const val = _codiconFontCharacters[fontCharacter]; + if (val === undefined) { + throw new Error(`${id} references an unknown codicon: ${fontCharacter}`); + } + fontCharacter = val; + } + _codiconFontCharacters[id] = fontCharacter; + return { id }; +} +/** + * The Codicon library is a set of default icons that are built-in in VS Code. + * + * In the product (outside of base) Codicons should only be used as defaults. In order to have all icons in VS Code + * themeable, component should define new, UI component specific icons using `iconRegistry.registerIcon`. + * In that call a Codicon can be named as default. + */ +const Codicon = { + // built-in icons, with image name + add: register('add', 0xea60), + plus: register('plus', 0xea60), + gistNew: register('gist-new', 0xea60), + repoCreate: register('repo-create', 0xea60), + lightbulb: register('lightbulb', 0xea61), + lightBulb: register('light-bulb', 0xea61), + repo: register('repo', 0xea62), + repoDelete: register('repo-delete', 0xea62), + gistFork: register('gist-fork', 0xea63), + repoForked: register('repo-forked', 0xea63), + gitPullRequest: register('git-pull-request', 0xea64), + gitPullRequestAbandoned: register('git-pull-request-abandoned', 0xea64), + recordKeys: register('record-keys', 0xea65), + keyboard: register('keyboard', 0xea65), + tag: register('tag', 0xea66), + tagAdd: register('tag-add', 0xea66), + tagRemove: register('tag-remove', 0xea66), + gitPullRequestLabel: register('git-pull-request-label', 0xea66), + person: register('person', 0xea67), + personFollow: register('person-follow', 0xea67), + personOutline: register('person-outline', 0xea67), + personFilled: register('person-filled', 0xea67), + gitBranch: register('git-branch', 0xea68), + gitBranchCreate: register('git-branch-create', 0xea68), + gitBranchDelete: register('git-branch-delete', 0xea68), + sourceControl: register('source-control', 0xea68), + mirror: register('mirror', 0xea69), + mirrorPublic: register('mirror-public', 0xea69), + star: register('star', 0xea6a), + starAdd: register('star-add', 0xea6a), + starDelete: register('star-delete', 0xea6a), + starEmpty: register('star-empty', 0xea6a), + comment: register('comment', 0xea6b), + commentAdd: register('comment-add', 0xea6b), + alert: register('alert', 0xea6c), + warning: register('warning', 0xea6c), + search: register('search', 0xea6d), + searchSave: register('search-save', 0xea6d), + logOut: register('log-out', 0xea6e), + signOut: register('sign-out', 0xea6e), + logIn: register('log-in', 0xea6f), + signIn: register('sign-in', 0xea6f), + eye: register('eye', 0xea70), + eyeUnwatch: register('eye-unwatch', 0xea70), + eyeWatch: register('eye-watch', 0xea70), + circleFilled: register('circle-filled', 0xea71), + primitiveDot: register('primitive-dot', 0xea71), + closeDirty: register('close-dirty', 0xea71), + debugBreakpoint: register('debug-breakpoint', 0xea71), + debugBreakpointDisabled: register('debug-breakpoint-disabled', 0xea71), + debugHint: register('debug-hint', 0xea71), + primitiveSquare: register('primitive-square', 0xea72), + edit: register('edit', 0xea73), + pencil: register('pencil', 0xea73), + info: register('info', 0xea74), + issueOpened: register('issue-opened', 0xea74), + gistPrivate: register('gist-private', 0xea75), + gitForkPrivate: register('git-fork-private', 0xea75), + lock: register('lock', 0xea75), + mirrorPrivate: register('mirror-private', 0xea75), + close: register('close', 0xea76), + removeClose: register('remove-close', 0xea76), + x: register('x', 0xea76), + repoSync: register('repo-sync', 0xea77), + sync: register('sync', 0xea77), + clone: register('clone', 0xea78), + desktopDownload: register('desktop-download', 0xea78), + beaker: register('beaker', 0xea79), + microscope: register('microscope', 0xea79), + vm: register('vm', 0xea7a), + deviceDesktop: register('device-desktop', 0xea7a), + file: register('file', 0xea7b), + fileText: register('file-text', 0xea7b), + more: register('more', 0xea7c), + ellipsis: register('ellipsis', 0xea7c), + kebabHorizontal: register('kebab-horizontal', 0xea7c), + mailReply: register('mail-reply', 0xea7d), + reply: register('reply', 0xea7d), + organization: register('organization', 0xea7e), + organizationFilled: register('organization-filled', 0xea7e), + organizationOutline: register('organization-outline', 0xea7e), + newFile: register('new-file', 0xea7f), + fileAdd: register('file-add', 0xea7f), + newFolder: register('new-folder', 0xea80), + fileDirectoryCreate: register('file-directory-create', 0xea80), + trash: register('trash', 0xea81), + trashcan: register('trashcan', 0xea81), + history: register('history', 0xea82), + clock: register('clock', 0xea82), + folder: register('folder', 0xea83), + fileDirectory: register('file-directory', 0xea83), + symbolFolder: register('symbol-folder', 0xea83), + logoGithub: register('logo-github', 0xea84), + markGithub: register('mark-github', 0xea84), + github: register('github', 0xea84), + terminal: register('terminal', 0xea85), + console: register('console', 0xea85), + repl: register('repl', 0xea85), + zap: register('zap', 0xea86), + symbolEvent: register('symbol-event', 0xea86), + error: register('error', 0xea87), + stop: register('stop', 0xea87), + variable: register('variable', 0xea88), + symbolVariable: register('symbol-variable', 0xea88), + array: register('array', 0xea8a), + symbolArray: register('symbol-array', 0xea8a), + symbolModule: register('symbol-module', 0xea8b), + symbolPackage: register('symbol-package', 0xea8b), + symbolNamespace: register('symbol-namespace', 0xea8b), + symbolObject: register('symbol-object', 0xea8b), + symbolMethod: register('symbol-method', 0xea8c), + symbolFunction: register('symbol-function', 0xea8c), + symbolConstructor: register('symbol-constructor', 0xea8c), + symbolBoolean: register('symbol-boolean', 0xea8f), + symbolNull: register('symbol-null', 0xea8f), + symbolNumeric: register('symbol-numeric', 0xea90), + symbolNumber: register('symbol-number', 0xea90), + symbolStructure: register('symbol-structure', 0xea91), + symbolStruct: register('symbol-struct', 0xea91), + symbolParameter: register('symbol-parameter', 0xea92), + symbolTypeParameter: register('symbol-type-parameter', 0xea92), + symbolKey: register('symbol-key', 0xea93), + symbolText: register('symbol-text', 0xea93), + symbolReference: register('symbol-reference', 0xea94), + goToFile: register('go-to-file', 0xea94), + symbolEnum: register('symbol-enum', 0xea95), + symbolValue: register('symbol-value', 0xea95), + symbolRuler: register('symbol-ruler', 0xea96), + symbolUnit: register('symbol-unit', 0xea96), + activateBreakpoints: register('activate-breakpoints', 0xea97), + archive: register('archive', 0xea98), + arrowBoth: register('arrow-both', 0xea99), + arrowDown: register('arrow-down', 0xea9a), + arrowLeft: register('arrow-left', 0xea9b), + arrowRight: register('arrow-right', 0xea9c), + arrowSmallDown: register('arrow-small-down', 0xea9d), + arrowSmallLeft: register('arrow-small-left', 0xea9e), + arrowSmallRight: register('arrow-small-right', 0xea9f), + arrowSmallUp: register('arrow-small-up', 0xeaa0), + arrowUp: register('arrow-up', 0xeaa1), + bell: register('bell', 0xeaa2), + bold: register('bold', 0xeaa3), + book: register('book', 0xeaa4), + bookmark: register('bookmark', 0xeaa5), + debugBreakpointConditionalUnverified: register('debug-breakpoint-conditional-unverified', 0xeaa6), + debugBreakpointConditional: register('debug-breakpoint-conditional', 0xeaa7), + debugBreakpointConditionalDisabled: register('debug-breakpoint-conditional-disabled', 0xeaa7), + debugBreakpointDataUnverified: register('debug-breakpoint-data-unverified', 0xeaa8), + debugBreakpointData: register('debug-breakpoint-data', 0xeaa9), + debugBreakpointDataDisabled: register('debug-breakpoint-data-disabled', 0xeaa9), + debugBreakpointLogUnverified: register('debug-breakpoint-log-unverified', 0xeaaa), + debugBreakpointLog: register('debug-breakpoint-log', 0xeaab), + debugBreakpointLogDisabled: register('debug-breakpoint-log-disabled', 0xeaab), + briefcase: register('briefcase', 0xeaac), + broadcast: register('broadcast', 0xeaad), + browser: register('browser', 0xeaae), + bug: register('bug', 0xeaaf), + calendar: register('calendar', 0xeab0), + caseSensitive: register('case-sensitive', 0xeab1), + check: register('check', 0xeab2), + checklist: register('checklist', 0xeab3), + chevronDown: register('chevron-down', 0xeab4), + dropDownButton: register('drop-down-button', 0xeab4), + chevronLeft: register('chevron-left', 0xeab5), + chevronRight: register('chevron-right', 0xeab6), + chevronUp: register('chevron-up', 0xeab7), + chromeClose: register('chrome-close', 0xeab8), + chromeMaximize: register('chrome-maximize', 0xeab9), + chromeMinimize: register('chrome-minimize', 0xeaba), + chromeRestore: register('chrome-restore', 0xeabb), + circle: register('circle', 0xeabc), + circleOutline: register('circle-outline', 0xeabc), + debugBreakpointUnverified: register('debug-breakpoint-unverified', 0xeabc), + circleSlash: register('circle-slash', 0xeabd), + circuitBoard: register('circuit-board', 0xeabe), + clearAll: register('clear-all', 0xeabf), + clippy: register('clippy', 0xeac0), + closeAll: register('close-all', 0xeac1), + cloudDownload: register('cloud-download', 0xeac2), + cloudUpload: register('cloud-upload', 0xeac3), + code: register('code', 0xeac4), + collapseAll: register('collapse-all', 0xeac5), + colorMode: register('color-mode', 0xeac6), + commentDiscussion: register('comment-discussion', 0xeac7), + compareChanges: register('compare-changes', 0xeafd), + creditCard: register('credit-card', 0xeac9), + dash: register('dash', 0xeacc), + dashboard: register('dashboard', 0xeacd), + database: register('database', 0xeace), + debugContinue: register('debug-continue', 0xeacf), + debugDisconnect: register('debug-disconnect', 0xead0), + debugPause: register('debug-pause', 0xead1), + debugRestart: register('debug-restart', 0xead2), + debugStart: register('debug-start', 0xead3), + debugStepInto: register('debug-step-into', 0xead4), + debugStepOut: register('debug-step-out', 0xead5), + debugStepOver: register('debug-step-over', 0xead6), + debugStop: register('debug-stop', 0xead7), + debug: register('debug', 0xead8), + deviceCameraVideo: register('device-camera-video', 0xead9), + deviceCamera: register('device-camera', 0xeada), + deviceMobile: register('device-mobile', 0xeadb), + diffAdded: register('diff-added', 0xeadc), + diffIgnored: register('diff-ignored', 0xeadd), + diffModified: register('diff-modified', 0xeade), + diffRemoved: register('diff-removed', 0xeadf), + diffRenamed: register('diff-renamed', 0xeae0), + diff: register('diff', 0xeae1), + discard: register('discard', 0xeae2), + editorLayout: register('editor-layout', 0xeae3), + emptyWindow: register('empty-window', 0xeae4), + exclude: register('exclude', 0xeae5), + extensions: register('extensions', 0xeae6), + eyeClosed: register('eye-closed', 0xeae7), + fileBinary: register('file-binary', 0xeae8), + fileCode: register('file-code', 0xeae9), + fileMedia: register('file-media', 0xeaea), + filePdf: register('file-pdf', 0xeaeb), + fileSubmodule: register('file-submodule', 0xeaec), + fileSymlinkDirectory: register('file-symlink-directory', 0xeaed), + fileSymlinkFile: register('file-symlink-file', 0xeaee), + fileZip: register('file-zip', 0xeaef), + files: register('files', 0xeaf0), + filter: register('filter', 0xeaf1), + flame: register('flame', 0xeaf2), + foldDown: register('fold-down', 0xeaf3), + foldUp: register('fold-up', 0xeaf4), + fold: register('fold', 0xeaf5), + folderActive: register('folder-active', 0xeaf6), + folderOpened: register('folder-opened', 0xeaf7), + gear: register('gear', 0xeaf8), + gift: register('gift', 0xeaf9), + gistSecret: register('gist-secret', 0xeafa), + gist: register('gist', 0xeafb), + gitCommit: register('git-commit', 0xeafc), + gitCompare: register('git-compare', 0xeafd), + gitMerge: register('git-merge', 0xeafe), + githubAction: register('github-action', 0xeaff), + githubAlt: register('github-alt', 0xeb00), + globe: register('globe', 0xeb01), + grabber: register('grabber', 0xeb02), + graph: register('graph', 0xeb03), + gripper: register('gripper', 0xeb04), + heart: register('heart', 0xeb05), + home: register('home', 0xeb06), + horizontalRule: register('horizontal-rule', 0xeb07), + hubot: register('hubot', 0xeb08), + inbox: register('inbox', 0xeb09), + issueClosed: register('issue-closed', 0xeba4), + issueReopened: register('issue-reopened', 0xeb0b), + issues: register('issues', 0xeb0c), + italic: register('italic', 0xeb0d), + jersey: register('jersey', 0xeb0e), + json: register('json', 0xeb0f), + bracket: register('bracket', 0xeb0f), + kebabVertical: register('kebab-vertical', 0xeb10), + key: register('key', 0xeb11), + law: register('law', 0xeb12), + lightbulbAutofix: register('lightbulb-autofix', 0xeb13), + linkExternal: register('link-external', 0xeb14), + link: register('link', 0xeb15), + listOrdered: register('list-ordered', 0xeb16), + listUnordered: register('list-unordered', 0xeb17), + liveShare: register('live-share', 0xeb18), + loading: register('loading', 0xeb19), + location: register('location', 0xeb1a), + mailRead: register('mail-read', 0xeb1b), + mail: register('mail', 0xeb1c), + markdown: register('markdown', 0xeb1d), + megaphone: register('megaphone', 0xeb1e), + mention: register('mention', 0xeb1f), + milestone: register('milestone', 0xeb20), + gitPullRequestMilestone: register('git-pull-request-milestone', 0xeb20), + mortarBoard: register('mortar-board', 0xeb21), + move: register('move', 0xeb22), + multipleWindows: register('multiple-windows', 0xeb23), + mute: register('mute', 0xeb24), + noNewline: register('no-newline', 0xeb25), + note: register('note', 0xeb26), + octoface: register('octoface', 0xeb27), + openPreview: register('open-preview', 0xeb28), + package: register('package', 0xeb29), + paintcan: register('paintcan', 0xeb2a), + pin: register('pin', 0xeb2b), + play: register('play', 0xeb2c), + run: register('run', 0xeb2c), + plug: register('plug', 0xeb2d), + preserveCase: register('preserve-case', 0xeb2e), + preview: register('preview', 0xeb2f), + project: register('project', 0xeb30), + pulse: register('pulse', 0xeb31), + question: register('question', 0xeb32), + quote: register('quote', 0xeb33), + radioTower: register('radio-tower', 0xeb34), + reactions: register('reactions', 0xeb35), + references: register('references', 0xeb36), + refresh: register('refresh', 0xeb37), + regex: register('regex', 0xeb38), + remoteExplorer: register('remote-explorer', 0xeb39), + remote: register('remote', 0xeb3a), + remove: register('remove', 0xeb3b), + replaceAll: register('replace-all', 0xeb3c), + replace: register('replace', 0xeb3d), + repoClone: register('repo-clone', 0xeb3e), + repoForcePush: register('repo-force-push', 0xeb3f), + repoPull: register('repo-pull', 0xeb40), + repoPush: register('repo-push', 0xeb41), + report: register('report', 0xeb42), + requestChanges: register('request-changes', 0xeb43), + rocket: register('rocket', 0xeb44), + rootFolderOpened: register('root-folder-opened', 0xeb45), + rootFolder: register('root-folder', 0xeb46), + rss: register('rss', 0xeb47), + ruby: register('ruby', 0xeb48), + saveAll: register('save-all', 0xeb49), + saveAs: register('save-as', 0xeb4a), + save: register('save', 0xeb4b), + screenFull: register('screen-full', 0xeb4c), + screenNormal: register('screen-normal', 0xeb4d), + searchStop: register('search-stop', 0xeb4e), + server: register('server', 0xeb50), + settingsGear: register('settings-gear', 0xeb51), + settings: register('settings', 0xeb52), + shield: register('shield', 0xeb53), + smiley: register('smiley', 0xeb54), + sortPrecedence: register('sort-precedence', 0xeb55), + splitHorizontal: register('split-horizontal', 0xeb56), + splitVertical: register('split-vertical', 0xeb57), + squirrel: register('squirrel', 0xeb58), + starFull: register('star-full', 0xeb59), + starHalf: register('star-half', 0xeb5a), + symbolClass: register('symbol-class', 0xeb5b), + symbolColor: register('symbol-color', 0xeb5c), + symbolCustomColor: register('symbol-customcolor', 0xeb5c), + symbolConstant: register('symbol-constant', 0xeb5d), + symbolEnumMember: register('symbol-enum-member', 0xeb5e), + symbolField: register('symbol-field', 0xeb5f), + symbolFile: register('symbol-file', 0xeb60), + symbolInterface: register('symbol-interface', 0xeb61), + symbolKeyword: register('symbol-keyword', 0xeb62), + symbolMisc: register('symbol-misc', 0xeb63), + symbolOperator: register('symbol-operator', 0xeb64), + symbolProperty: register('symbol-property', 0xeb65), + wrench: register('wrench', 0xeb65), + wrenchSubaction: register('wrench-subaction', 0xeb65), + symbolSnippet: register('symbol-snippet', 0xeb66), + tasklist: register('tasklist', 0xeb67), + telescope: register('telescope', 0xeb68), + textSize: register('text-size', 0xeb69), + threeBars: register('three-bars', 0xeb6a), + thumbsdown: register('thumbsdown', 0xeb6b), + thumbsup: register('thumbsup', 0xeb6c), + tools: register('tools', 0xeb6d), + triangleDown: register('triangle-down', 0xeb6e), + triangleLeft: register('triangle-left', 0xeb6f), + triangleRight: register('triangle-right', 0xeb70), + triangleUp: register('triangle-up', 0xeb71), + twitter: register('twitter', 0xeb72), + unfold: register('unfold', 0xeb73), + unlock: register('unlock', 0xeb74), + unmute: register('unmute', 0xeb75), + unverified: register('unverified', 0xeb76), + verified: register('verified', 0xeb77), + versions: register('versions', 0xeb78), + vmActive: register('vm-active', 0xeb79), + vmOutline: register('vm-outline', 0xeb7a), + vmRunning: register('vm-running', 0xeb7b), + watch: register('watch', 0xeb7c), + whitespace: register('whitespace', 0xeb7d), + wholeWord: register('whole-word', 0xeb7e), + window: register('window', 0xeb7f), + wordWrap: register('word-wrap', 0xeb80), + zoomIn: register('zoom-in', 0xeb81), + zoomOut: register('zoom-out', 0xeb82), + listFilter: register('list-filter', 0xeb83), + listFlat: register('list-flat', 0xeb84), + listSelection: register('list-selection', 0xeb85), + selection: register('selection', 0xeb85), + listTree: register('list-tree', 0xeb86), + debugBreakpointFunctionUnverified: register('debug-breakpoint-function-unverified', 0xeb87), + debugBreakpointFunction: register('debug-breakpoint-function', 0xeb88), + debugBreakpointFunctionDisabled: register('debug-breakpoint-function-disabled', 0xeb88), + debugStackframeActive: register('debug-stackframe-active', 0xeb89), + circleSmallFilled: register('circle-small-filled', 0xeb8a), + debugStackframeDot: register('debug-stackframe-dot', 0xeb8a), + debugStackframe: register('debug-stackframe', 0xeb8b), + debugStackframeFocused: register('debug-stackframe-focused', 0xeb8b), + debugBreakpointUnsupported: register('debug-breakpoint-unsupported', 0xeb8c), + symbolString: register('symbol-string', 0xeb8d), + debugReverseContinue: register('debug-reverse-continue', 0xeb8e), + debugStepBack: register('debug-step-back', 0xeb8f), + debugRestartFrame: register('debug-restart-frame', 0xeb90), + callIncoming: register('call-incoming', 0xeb92), + callOutgoing: register('call-outgoing', 0xeb93), + menu: register('menu', 0xeb94), + expandAll: register('expand-all', 0xeb95), + feedback: register('feedback', 0xeb96), + gitPullRequestReviewer: register('git-pull-request-reviewer', 0xeb96), + groupByRefType: register('group-by-ref-type', 0xeb97), + ungroupByRefType: register('ungroup-by-ref-type', 0xeb98), + account: register('account', 0xeb99), + gitPullRequestAssignee: register('git-pull-request-assignee', 0xeb99), + bellDot: register('bell-dot', 0xeb9a), + debugConsole: register('debug-console', 0xeb9b), + library: register('library', 0xeb9c), + output: register('output', 0xeb9d), + runAll: register('run-all', 0xeb9e), + syncIgnored: register('sync-ignored', 0xeb9f), + pinned: register('pinned', 0xeba0), + githubInverted: register('github-inverted', 0xeba1), + debugAlt: register('debug-alt', 0xeb91), + serverProcess: register('server-process', 0xeba2), + serverEnvironment: register('server-environment', 0xeba3), + pass: register('pass', 0xeba4), + stopCircle: register('stop-circle', 0xeba5), + playCircle: register('play-circle', 0xeba6), + record: register('record', 0xeba7), + debugAltSmall: register('debug-alt-small', 0xeba8), + vmConnect: register('vm-connect', 0xeba9), + cloud: register('cloud', 0xebaa), + merge: register('merge', 0xebab), + exportIcon: register('export', 0xebac), + graphLeft: register('graph-left', 0xebad), + magnet: register('magnet', 0xebae), + notebook: register('notebook', 0xebaf), + redo: register('redo', 0xebb0), + checkAll: register('check-all', 0xebb1), + pinnedDirty: register('pinned-dirty', 0xebb2), + passFilled: register('pass-filled', 0xebb3), + circleLargeFilled: register('circle-large-filled', 0xebb4), + circleLarge: register('circle-large', 0xebb5), + circleLargeOutline: register('circle-large-outline', 0xebb5), + combine: register('combine', 0xebb6), + gather: register('gather', 0xebb6), + table: register('table', 0xebb7), + variableGroup: register('variable-group', 0xebb8), + typeHierarchy: register('type-hierarchy', 0xebb9), + typeHierarchySub: register('type-hierarchy-sub', 0xebba), + typeHierarchySuper: register('type-hierarchy-super', 0xebbb), + gitPullRequestCreate: register('git-pull-request-create', 0xebbc), + runAbove: register('run-above', 0xebbd), + runBelow: register('run-below', 0xebbe), + notebookTemplate: register('notebook-template', 0xebbf), + debugRerun: register('debug-rerun', 0xebc0), + workspaceTrusted: register('workspace-trusted', 0xebc1), + workspaceUntrusted: register('workspace-untrusted', 0xebc2), + workspaceUnspecified: register('workspace-unspecified', 0xebc3), + terminalCmd: register('terminal-cmd', 0xebc4), + terminalDebian: register('terminal-debian', 0xebc5), + terminalLinux: register('terminal-linux', 0xebc6), + terminalPowershell: register('terminal-powershell', 0xebc7), + terminalTmux: register('terminal-tmux', 0xebc8), + terminalUbuntu: register('terminal-ubuntu', 0xebc9), + terminalBash: register('terminal-bash', 0xebca), + arrowSwap: register('arrow-swap', 0xebcb), + copy: register('copy', 0xebcc), + personAdd: register('person-add', 0xebcd), + filterFilled: register('filter-filled', 0xebce), + wand: register('wand', 0xebcf), + debugLineByLine: register('debug-line-by-line', 0xebd0), + inspect: register('inspect', 0xebd1), + layers: register('layers', 0xebd2), + layersDot: register('layers-dot', 0xebd3), + layersActive: register('layers-active', 0xebd4), + compass: register('compass', 0xebd5), + compassDot: register('compass-dot', 0xebd6), + compassActive: register('compass-active', 0xebd7), + azure: register('azure', 0xebd8), + issueDraft: register('issue-draft', 0xebd9), + gitPullRequestClosed: register('git-pull-request-closed', 0xebda), + gitPullRequestDraft: register('git-pull-request-draft', 0xebdb), + debugAll: register('debug-all', 0xebdc), + debugCoverage: register('debug-coverage', 0xebdd), + runErrors: register('run-errors', 0xebde), + folderLibrary: register('folder-library', 0xebdf), + debugContinueSmall: register('debug-continue-small', 0xebe0), + beakerStop: register('beaker-stop', 0xebe1), + graphLine: register('graph-line', 0xebe2), + graphScatter: register('graph-scatter', 0xebe3), + pieChart: register('pie-chart', 0xebe4), + bracketDot: register('bracket-dot', 0xebe5), + bracketError: register('bracket-error', 0xebe6), + lockSmall: register('lock-small', 0xebe7), + azureDevops: register('azure-devops', 0xebe8), + verifiedFilled: register('verified-filled', 0xebe9), + newLine: register('newline', 0xebea), + layout: register('layout', 0xebeb), + layoutActivitybarLeft: register('layout-activitybar-left', 0xebec), + layoutActivitybarRight: register('layout-activitybar-right', 0xebed), + layoutPanelLeft: register('layout-panel-left', 0xebee), + layoutPanelCenter: register('layout-panel-center', 0xebef), + layoutPanelJustify: register('layout-panel-justify', 0xebf0), + layoutPanelRight: register('layout-panel-right', 0xebf1), + layoutPanel: register('layout-panel', 0xebf2), + layoutSidebarLeft: register('layout-sidebar-left', 0xebf3), + layoutSidebarRight: register('layout-sidebar-right', 0xebf4), + layoutStatusbar: register('layout-statusbar', 0xebf5), + layoutMenubar: register('layout-menubar', 0xebf6), + layoutCentered: register('layout-centered', 0xebf7), + layoutSidebarRightOff: register('layout-sidebar-right-off', 0xec00), + layoutPanelOff: register('layout-panel-off', 0xec01), + layoutSidebarLeftOff: register('layout-sidebar-left-off', 0xec02), + target: register('target', 0xebf8), + indent: register('indent', 0xebf9), + recordSmall: register('record-small', 0xebfa), + errorSmall: register('error-small', 0xebfb), + arrowCircleDown: register('arrow-circle-down', 0xebfc), + arrowCircleLeft: register('arrow-circle-left', 0xebfd), + arrowCircleRight: register('arrow-circle-right', 0xebfe), + arrowCircleUp: register('arrow-circle-up', 0xebff), + heartFilled: register('heart-filled', 0xec04), + map: register('map', 0xec05), + mapFilled: register('map-filled', 0xec06), + circleSmall: register('circle-small', 0xec07), + bellSlash: register('bell-slash', 0xec08), + bellSlashDot: register('bell-slash-dot', 0xec09), + commentUnresolved: register('comment-unresolved', 0xec0a), + gitPullRequestGoToChanges: register('git-pull-request-go-to-changes', 0xec0b), + gitPullRequestNewChanges: register('git-pull-request-new-changes', 0xec0c), + searchFuzzy: register('search-fuzzy', 0xec0d), + commentDraft: register('comment-draft', 0xec0e), + send: register('send', 0xec0f), + sparkle: register('sparkle', 0xec10), + insert: register('insert', 0xec11), + mic: register('mic', 0xec12), + thumbsDownFilled: register('thumbsdown-filled', 0xec13), + thumbsUpFilled: register('thumbsup-filled', 0xec14), + coffee: register('coffee', 0xec15), + snake: register('snake', 0xec16), + game: register('game', 0xec17), + vr: register('vr', 0xec18), + chip: register('chip', 0xec19), + piano: register('piano', 0xec1a), + music: register('music', 0xec1b), + micFilled: register('mic-filled', 0xec1c), + gitFetch: register('git-fetch', 0xec1d), + copilot: register('copilot', 0xec1e), + lightbulbSparkle: register('lightbulb-sparkle', 0xec1f), + lightbulbSparkleAutofix: register('lightbulb-sparkle-autofix', 0xec1f), + robot: register('robot', 0xec20), + sparkleFilled: register('sparkle-filled', 0xec21), + diffSingle: register('diff-single', 0xec22), + diffMultiple: register('diff-multiple', 0xec23), + // derived icons, that could become separate icons + dialogError: register('dialog-error', 'error'), + dialogWarning: register('dialog-warning', 'warning'), + dialogInfo: register('dialog-info', 'info'), + dialogClose: register('dialog-close', 'close'), + treeItemExpanded: register('tree-item-expanded', 'chevron-down'), // collapsed is done with rotation + treeFilterOnTypeOn: register('tree-filter-on-type-on', 'list-filter'), + treeFilterOnTypeOff: register('tree-filter-on-type-off', 'list-selection'), + treeFilterClear: register('tree-filter-clear', 'close'), + treeItemLoading: register('tree-item-loading', 'loading'), + menuSelection: register('menu-selection', 'check'), + menuSubmenu: register('menu-submenu', 'chevron-right'), + menuBarMore: register('menubar-more', 'more'), + scrollbarButtonLeft: register('scrollbar-button-left', 'triangle-left'), + scrollbarButtonRight: register('scrollbar-button-right', 'triangle-right'), + scrollbarButtonUp: register('scrollbar-button-up', 'triangle-up'), + scrollbarButtonDown: register('scrollbar-button-down', 'triangle-down'), + toolBarMore: register('toolbar-more', 'more'), + quickInputBack: register('quick-input-back', 'arrow-left') +}; + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +class TokenizationRegistry { + constructor() { + this._tokenizationSupports = new Map(); + this._factories = new Map(); + this._onDidChange = new Emitter(); + this.onDidChange = this._onDidChange.event; + this._colorMap = null; + } + handleChange(languageIds) { + this._onDidChange.fire({ + changedLanguages: languageIds, + changedColorMap: false + }); + } + register(languageId, support) { + this._tokenizationSupports.set(languageId, support); + this.handleChange([languageId]); + return toDisposable(() => { + if (this._tokenizationSupports.get(languageId) !== support) { + return; + } + this._tokenizationSupports.delete(languageId); + this.handleChange([languageId]); + }); + } + get(languageId) { + return this._tokenizationSupports.get(languageId) || null; + } + registerFactory(languageId, factory) { + var _a; + (_a = this._factories.get(languageId)) === null || _a === void 0 ? void 0 : _a.dispose(); + const myData = new TokenizationSupportFactoryData(this, languageId, factory); + this._factories.set(languageId, myData); + return toDisposable(() => { + const v = this._factories.get(languageId); + if (!v || v !== myData) { + return; + } + this._factories.delete(languageId); + v.dispose(); + }); + } + async getOrCreate(languageId) { + // check first if the support is already set + const tokenizationSupport = this.get(languageId); + if (tokenizationSupport) { + return tokenizationSupport; + } + const factory = this._factories.get(languageId); + if (!factory || factory.isResolved) { + // no factory or factory.resolve already finished + return null; + } + await factory.resolve(); + return this.get(languageId); + } + isResolved(languageId) { + const tokenizationSupport = this.get(languageId); + if (tokenizationSupport) { + return true; + } + const factory = this._factories.get(languageId); + if (!factory || factory.isResolved) { + return true; + } + return false; + } + setColorMap(colorMap) { + this._colorMap = colorMap; + this._onDidChange.fire({ + changedLanguages: Array.from(this._tokenizationSupports.keys()), + changedColorMap: true + }); + } + getColorMap() { + return this._colorMap; + } + getDefaultBackground() { + if (this._colorMap && this._colorMap.length > 2 /* ColorId.DefaultBackground */) { + return this._colorMap[2 /* ColorId.DefaultBackground */]; + } + return null; + } +} +class TokenizationSupportFactoryData extends Disposable { + get isResolved() { + return this._isResolved; + } + constructor(_registry, _languageId, _factory) { + super(); + this._registry = _registry; + this._languageId = _languageId; + this._factory = _factory; + this._isDisposed = false; + this._resolvePromise = null; + this._isResolved = false; + } + dispose() { + this._isDisposed = true; + super.dispose(); + } + async resolve() { + if (!this._resolvePromise) { + this._resolvePromise = this._create(); + } + return this._resolvePromise; + } + async _create() { + const value = await this._factory.tokenizationSupport; + this._isResolved = true; + if (value && !this._isDisposed) { + this._register(this._registry.register(this._languageId, value)); + } + } +} + +class Token { + constructor(offset, type, language) { + this.offset = offset; + this.type = type; + this.language = language; + this._tokenBrand = undefined; + } + toString() { + return '(' + this.offset + ', ' + this.type + ')'; + } +} +/** + * @internal + */ +var CompletionItemKinds; +(function (CompletionItemKinds) { + const byKind = new Map(); + byKind.set(0 /* CompletionItemKind.Method */, Codicon.symbolMethod); + byKind.set(1 /* CompletionItemKind.Function */, Codicon.symbolFunction); + byKind.set(2 /* CompletionItemKind.Constructor */, Codicon.symbolConstructor); + byKind.set(3 /* CompletionItemKind.Field */, Codicon.symbolField); + byKind.set(4 /* CompletionItemKind.Variable */, Codicon.symbolVariable); + byKind.set(5 /* CompletionItemKind.Class */, Codicon.symbolClass); + byKind.set(6 /* CompletionItemKind.Struct */, Codicon.symbolStruct); + byKind.set(7 /* CompletionItemKind.Interface */, Codicon.symbolInterface); + byKind.set(8 /* CompletionItemKind.Module */, Codicon.symbolModule); + byKind.set(9 /* CompletionItemKind.Property */, Codicon.symbolProperty); + byKind.set(10 /* CompletionItemKind.Event */, Codicon.symbolEvent); + byKind.set(11 /* CompletionItemKind.Operator */, Codicon.symbolOperator); + byKind.set(12 /* CompletionItemKind.Unit */, Codicon.symbolUnit); + byKind.set(13 /* CompletionItemKind.Value */, Codicon.symbolValue); + byKind.set(15 /* CompletionItemKind.Enum */, Codicon.symbolEnum); + byKind.set(14 /* CompletionItemKind.Constant */, Codicon.symbolConstant); + byKind.set(15 /* CompletionItemKind.Enum */, Codicon.symbolEnum); + byKind.set(16 /* CompletionItemKind.EnumMember */, Codicon.symbolEnumMember); + byKind.set(17 /* CompletionItemKind.Keyword */, Codicon.symbolKeyword); + byKind.set(27 /* CompletionItemKind.Snippet */, Codicon.symbolSnippet); + byKind.set(18 /* CompletionItemKind.Text */, Codicon.symbolText); + byKind.set(19 /* CompletionItemKind.Color */, Codicon.symbolColor); + byKind.set(20 /* CompletionItemKind.File */, Codicon.symbolFile); + byKind.set(21 /* CompletionItemKind.Reference */, Codicon.symbolReference); + byKind.set(22 /* CompletionItemKind.Customcolor */, Codicon.symbolCustomColor); + byKind.set(23 /* CompletionItemKind.Folder */, Codicon.symbolFolder); + byKind.set(24 /* CompletionItemKind.TypeParameter */, Codicon.symbolTypeParameter); + byKind.set(25 /* CompletionItemKind.User */, Codicon.account); + byKind.set(26 /* CompletionItemKind.Issue */, Codicon.issues); + /** + * @internal + */ + function toIcon(kind) { + let codicon = byKind.get(kind); + if (!codicon) { + console.info('No codicon found for CompletionItemKind ' + kind); + codicon = Codicon.symbolProperty; + } + return codicon; + } + CompletionItemKinds.toIcon = toIcon; + const data = new Map(); + data.set('method', 0 /* CompletionItemKind.Method */); + data.set('function', 1 /* CompletionItemKind.Function */); + data.set('constructor', 2 /* CompletionItemKind.Constructor */); + data.set('field', 3 /* CompletionItemKind.Field */); + data.set('variable', 4 /* CompletionItemKind.Variable */); + data.set('class', 5 /* CompletionItemKind.Class */); + data.set('struct', 6 /* CompletionItemKind.Struct */); + data.set('interface', 7 /* CompletionItemKind.Interface */); + data.set('module', 8 /* CompletionItemKind.Module */); + data.set('property', 9 /* CompletionItemKind.Property */); + data.set('event', 10 /* CompletionItemKind.Event */); + data.set('operator', 11 /* CompletionItemKind.Operator */); + data.set('unit', 12 /* CompletionItemKind.Unit */); + data.set('value', 13 /* CompletionItemKind.Value */); + data.set('constant', 14 /* CompletionItemKind.Constant */); + data.set('enum', 15 /* CompletionItemKind.Enum */); + data.set('enum-member', 16 /* CompletionItemKind.EnumMember */); + data.set('enumMember', 16 /* CompletionItemKind.EnumMember */); + data.set('keyword', 17 /* CompletionItemKind.Keyword */); + data.set('snippet', 27 /* CompletionItemKind.Snippet */); + data.set('text', 18 /* CompletionItemKind.Text */); + data.set('color', 19 /* CompletionItemKind.Color */); + data.set('file', 20 /* CompletionItemKind.File */); + data.set('reference', 21 /* CompletionItemKind.Reference */); + data.set('customcolor', 22 /* CompletionItemKind.Customcolor */); + data.set('folder', 23 /* CompletionItemKind.Folder */); + data.set('type-parameter', 24 /* CompletionItemKind.TypeParameter */); + data.set('typeParameter', 24 /* CompletionItemKind.TypeParameter */); + data.set('account', 25 /* CompletionItemKind.User */); + data.set('issue', 26 /* CompletionItemKind.Issue */); + /** + * @internal + */ + function fromString(value, strict) { + let res = data.get(value); + if (typeof res === 'undefined' && !strict) { + res = 9 /* CompletionItemKind.Property */; + } + return res; + } + CompletionItemKinds.fromString = fromString; +})(CompletionItemKinds || (CompletionItemKinds = {})); +/** + * How an {@link InlineCompletionsProvider inline completion provider} was triggered. + */ +var InlineCompletionTriggerKind$1; +(function (InlineCompletionTriggerKind) { + /** + * Completion was triggered automatically while editing. + * It is sufficient to return a single completion item in this case. + */ + InlineCompletionTriggerKind[InlineCompletionTriggerKind["Automatic"] = 0] = "Automatic"; + /** + * Completion was triggered explicitly by a user gesture. + * Return multiple completion items to enable cycling through them. + */ + InlineCompletionTriggerKind[InlineCompletionTriggerKind["Explicit"] = 1] = "Explicit"; +})(InlineCompletionTriggerKind$1 || (InlineCompletionTriggerKind$1 = {})); +var SignatureHelpTriggerKind$1; +(function (SignatureHelpTriggerKind) { + SignatureHelpTriggerKind[SignatureHelpTriggerKind["Invoke"] = 1] = "Invoke"; + SignatureHelpTriggerKind[SignatureHelpTriggerKind["TriggerCharacter"] = 2] = "TriggerCharacter"; + SignatureHelpTriggerKind[SignatureHelpTriggerKind["ContentChange"] = 3] = "ContentChange"; +})(SignatureHelpTriggerKind$1 || (SignatureHelpTriggerKind$1 = {})); +/** + * A document highlight kind. + */ +var DocumentHighlightKind$1; +(function (DocumentHighlightKind) { + /** + * A textual occurrence. + */ + DocumentHighlightKind[DocumentHighlightKind["Text"] = 0] = "Text"; + /** + * Read-access of a symbol, like reading a variable. + */ + DocumentHighlightKind[DocumentHighlightKind["Read"] = 1] = "Read"; + /** + * Write-access of a symbol, like writing to a variable. + */ + DocumentHighlightKind[DocumentHighlightKind["Write"] = 2] = "Write"; +})(DocumentHighlightKind$1 || (DocumentHighlightKind$1 = {})); +/** + * @internal + */ +({ + [17 /* SymbolKind.Array */]: localize('Array', "array"), + [16 /* SymbolKind.Boolean */]: localize('Boolean', "boolean"), + [4 /* SymbolKind.Class */]: localize('Class', "class"), + [13 /* SymbolKind.Constant */]: localize('Constant', "constant"), + [8 /* SymbolKind.Constructor */]: localize('Constructor', "constructor"), + [9 /* SymbolKind.Enum */]: localize('Enum', "enumeration"), + [21 /* SymbolKind.EnumMember */]: localize('EnumMember', "enumeration member"), + [23 /* SymbolKind.Event */]: localize('Event', "event"), + [7 /* SymbolKind.Field */]: localize('Field', "field"), + [0 /* SymbolKind.File */]: localize('File', "file"), + [11 /* SymbolKind.Function */]: localize('Function', "function"), + [10 /* SymbolKind.Interface */]: localize('Interface', "interface"), + [19 /* SymbolKind.Key */]: localize('Key', "key"), + [5 /* SymbolKind.Method */]: localize('Method', "method"), + [1 /* SymbolKind.Module */]: localize('Module', "module"), + [2 /* SymbolKind.Namespace */]: localize('Namespace', "namespace"), + [20 /* SymbolKind.Null */]: localize('Null', "null"), + [15 /* SymbolKind.Number */]: localize('Number', "number"), + [18 /* SymbolKind.Object */]: localize('Object', "object"), + [24 /* SymbolKind.Operator */]: localize('Operator', "operator"), + [3 /* SymbolKind.Package */]: localize('Package', "package"), + [6 /* SymbolKind.Property */]: localize('Property', "property"), + [14 /* SymbolKind.String */]: localize('String', "string"), + [22 /* SymbolKind.Struct */]: localize('Struct', "struct"), + [25 /* SymbolKind.TypeParameter */]: localize('TypeParameter', "type parameter"), + [12 /* SymbolKind.Variable */]: localize('Variable', "variable"), +}); +/** + * @internal + */ +var SymbolKinds; +(function (SymbolKinds) { + const byKind = new Map(); + byKind.set(0 /* SymbolKind.File */, Codicon.symbolFile); + byKind.set(1 /* SymbolKind.Module */, Codicon.symbolModule); + byKind.set(2 /* SymbolKind.Namespace */, Codicon.symbolNamespace); + byKind.set(3 /* SymbolKind.Package */, Codicon.symbolPackage); + byKind.set(4 /* SymbolKind.Class */, Codicon.symbolClass); + byKind.set(5 /* SymbolKind.Method */, Codicon.symbolMethod); + byKind.set(6 /* SymbolKind.Property */, Codicon.symbolProperty); + byKind.set(7 /* SymbolKind.Field */, Codicon.symbolField); + byKind.set(8 /* SymbolKind.Constructor */, Codicon.symbolConstructor); + byKind.set(9 /* SymbolKind.Enum */, Codicon.symbolEnum); + byKind.set(10 /* SymbolKind.Interface */, Codicon.symbolInterface); + byKind.set(11 /* SymbolKind.Function */, Codicon.symbolFunction); + byKind.set(12 /* SymbolKind.Variable */, Codicon.symbolVariable); + byKind.set(13 /* SymbolKind.Constant */, Codicon.symbolConstant); + byKind.set(14 /* SymbolKind.String */, Codicon.symbolString); + byKind.set(15 /* SymbolKind.Number */, Codicon.symbolNumber); + byKind.set(16 /* SymbolKind.Boolean */, Codicon.symbolBoolean); + byKind.set(17 /* SymbolKind.Array */, Codicon.symbolArray); + byKind.set(18 /* SymbolKind.Object */, Codicon.symbolObject); + byKind.set(19 /* SymbolKind.Key */, Codicon.symbolKey); + byKind.set(20 /* SymbolKind.Null */, Codicon.symbolNull); + byKind.set(21 /* SymbolKind.EnumMember */, Codicon.symbolEnumMember); + byKind.set(22 /* SymbolKind.Struct */, Codicon.symbolStruct); + byKind.set(23 /* SymbolKind.Event */, Codicon.symbolEvent); + byKind.set(24 /* SymbolKind.Operator */, Codicon.symbolOperator); + byKind.set(25 /* SymbolKind.TypeParameter */, Codicon.symbolTypeParameter); + /** + * @internal + */ + function toIcon(kind) { + let icon = byKind.get(kind); + if (!icon) { + console.info('No codicon found for SymbolKind ' + kind); + icon = Codicon.symbolProperty; + } + return icon; + } + SymbolKinds.toIcon = toIcon; +})(SymbolKinds || (SymbolKinds = {})); +/** + * @internal + */ +var Command; +(function (Command) { + /** + * @internal + */ + function is(obj) { + if (!obj || typeof obj !== 'object') { + return false; + } + return typeof obj.id === 'string' && + typeof obj.title === 'string'; + } + Command.is = is; +})(Command || (Command = {})); +var InlayHintKind$1; +(function (InlayHintKind) { + InlayHintKind[InlayHintKind["Type"] = 1] = "Type"; + InlayHintKind[InlayHintKind["Parameter"] = 2] = "Parameter"; +})(InlayHintKind$1 || (InlayHintKind$1 = {})); +/** + * @internal + */ +new TokenizationRegistry(); + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +// THIS IS A GENERATED FILE. DO NOT EDIT DIRECTLY. +var AccessibilitySupport; +(function (AccessibilitySupport) { + /** + * This should be the browser case where it is not known if a screen reader is attached or no. + */ + AccessibilitySupport[AccessibilitySupport["Unknown"] = 0] = "Unknown"; + AccessibilitySupport[AccessibilitySupport["Disabled"] = 1] = "Disabled"; + AccessibilitySupport[AccessibilitySupport["Enabled"] = 2] = "Enabled"; +})(AccessibilitySupport || (AccessibilitySupport = {})); +var CodeActionTriggerType; +(function (CodeActionTriggerType) { + CodeActionTriggerType[CodeActionTriggerType["Invoke"] = 1] = "Invoke"; + CodeActionTriggerType[CodeActionTriggerType["Auto"] = 2] = "Auto"; +})(CodeActionTriggerType || (CodeActionTriggerType = {})); +var CompletionItemInsertTextRule; +(function (CompletionItemInsertTextRule) { + CompletionItemInsertTextRule[CompletionItemInsertTextRule["None"] = 0] = "None"; + /** + * Adjust whitespace/indentation of multiline insert texts to + * match the current line indentation. + */ + CompletionItemInsertTextRule[CompletionItemInsertTextRule["KeepWhitespace"] = 1] = "KeepWhitespace"; + /** + * `insertText` is a snippet. + */ + CompletionItemInsertTextRule[CompletionItemInsertTextRule["InsertAsSnippet"] = 4] = "InsertAsSnippet"; +})(CompletionItemInsertTextRule || (CompletionItemInsertTextRule = {})); +var CompletionItemKind; +(function (CompletionItemKind) { + CompletionItemKind[CompletionItemKind["Method"] = 0] = "Method"; + CompletionItemKind[CompletionItemKind["Function"] = 1] = "Function"; + CompletionItemKind[CompletionItemKind["Constructor"] = 2] = "Constructor"; + CompletionItemKind[CompletionItemKind["Field"] = 3] = "Field"; + CompletionItemKind[CompletionItemKind["Variable"] = 4] = "Variable"; + CompletionItemKind[CompletionItemKind["Class"] = 5] = "Class"; + CompletionItemKind[CompletionItemKind["Struct"] = 6] = "Struct"; + CompletionItemKind[CompletionItemKind["Interface"] = 7] = "Interface"; + CompletionItemKind[CompletionItemKind["Module"] = 8] = "Module"; + CompletionItemKind[CompletionItemKind["Property"] = 9] = "Property"; + CompletionItemKind[CompletionItemKind["Event"] = 10] = "Event"; + CompletionItemKind[CompletionItemKind["Operator"] = 11] = "Operator"; + CompletionItemKind[CompletionItemKind["Unit"] = 12] = "Unit"; + CompletionItemKind[CompletionItemKind["Value"] = 13] = "Value"; + CompletionItemKind[CompletionItemKind["Constant"] = 14] = "Constant"; + CompletionItemKind[CompletionItemKind["Enum"] = 15] = "Enum"; + CompletionItemKind[CompletionItemKind["EnumMember"] = 16] = "EnumMember"; + CompletionItemKind[CompletionItemKind["Keyword"] = 17] = "Keyword"; + CompletionItemKind[CompletionItemKind["Text"] = 18] = "Text"; + CompletionItemKind[CompletionItemKind["Color"] = 19] = "Color"; + CompletionItemKind[CompletionItemKind["File"] = 20] = "File"; + CompletionItemKind[CompletionItemKind["Reference"] = 21] = "Reference"; + CompletionItemKind[CompletionItemKind["Customcolor"] = 22] = "Customcolor"; + CompletionItemKind[CompletionItemKind["Folder"] = 23] = "Folder"; + CompletionItemKind[CompletionItemKind["TypeParameter"] = 24] = "TypeParameter"; + CompletionItemKind[CompletionItemKind["User"] = 25] = "User"; + CompletionItemKind[CompletionItemKind["Issue"] = 26] = "Issue"; + CompletionItemKind[CompletionItemKind["Snippet"] = 27] = "Snippet"; +})(CompletionItemKind || (CompletionItemKind = {})); +var CompletionItemTag; +(function (CompletionItemTag) { + CompletionItemTag[CompletionItemTag["Deprecated"] = 1] = "Deprecated"; +})(CompletionItemTag || (CompletionItemTag = {})); +/** + * How a suggest provider was triggered. + */ +var CompletionTriggerKind; +(function (CompletionTriggerKind) { + CompletionTriggerKind[CompletionTriggerKind["Invoke"] = 0] = "Invoke"; + CompletionTriggerKind[CompletionTriggerKind["TriggerCharacter"] = 1] = "TriggerCharacter"; + CompletionTriggerKind[CompletionTriggerKind["TriggerForIncompleteCompletions"] = 2] = "TriggerForIncompleteCompletions"; +})(CompletionTriggerKind || (CompletionTriggerKind = {})); +/** + * A positioning preference for rendering content widgets. + */ +var ContentWidgetPositionPreference; +(function (ContentWidgetPositionPreference) { + /** + * Place the content widget exactly at a position + */ + ContentWidgetPositionPreference[ContentWidgetPositionPreference["EXACT"] = 0] = "EXACT"; + /** + * Place the content widget above a position + */ + ContentWidgetPositionPreference[ContentWidgetPositionPreference["ABOVE"] = 1] = "ABOVE"; + /** + * Place the content widget below a position + */ + ContentWidgetPositionPreference[ContentWidgetPositionPreference["BELOW"] = 2] = "BELOW"; +})(ContentWidgetPositionPreference || (ContentWidgetPositionPreference = {})); +/** + * Describes the reason the cursor has changed its position. + */ +var CursorChangeReason; +(function (CursorChangeReason) { + /** + * Unknown or not set. + */ + CursorChangeReason[CursorChangeReason["NotSet"] = 0] = "NotSet"; + /** + * A `model.setValue()` was called. + */ + CursorChangeReason[CursorChangeReason["ContentFlush"] = 1] = "ContentFlush"; + /** + * The `model` has been changed outside of this cursor and the cursor recovers its position from associated markers. + */ + CursorChangeReason[CursorChangeReason["RecoverFromMarkers"] = 2] = "RecoverFromMarkers"; + /** + * There was an explicit user gesture. + */ + CursorChangeReason[CursorChangeReason["Explicit"] = 3] = "Explicit"; + /** + * There was a Paste. + */ + CursorChangeReason[CursorChangeReason["Paste"] = 4] = "Paste"; + /** + * There was an Undo. + */ + CursorChangeReason[CursorChangeReason["Undo"] = 5] = "Undo"; + /** + * There was a Redo. + */ + CursorChangeReason[CursorChangeReason["Redo"] = 6] = "Redo"; +})(CursorChangeReason || (CursorChangeReason = {})); +/** + * The default end of line to use when instantiating models. + */ +var DefaultEndOfLine; +(function (DefaultEndOfLine) { + /** + * Use line feed (\n) as the end of line character. + */ + DefaultEndOfLine[DefaultEndOfLine["LF"] = 1] = "LF"; + /** + * Use carriage return and line feed (\r\n) as the end of line character. + */ + DefaultEndOfLine[DefaultEndOfLine["CRLF"] = 2] = "CRLF"; +})(DefaultEndOfLine || (DefaultEndOfLine = {})); +/** + * A document highlight kind. + */ +var DocumentHighlightKind; +(function (DocumentHighlightKind) { + /** + * A textual occurrence. + */ + DocumentHighlightKind[DocumentHighlightKind["Text"] = 0] = "Text"; + /** + * Read-access of a symbol, like reading a variable. + */ + DocumentHighlightKind[DocumentHighlightKind["Read"] = 1] = "Read"; + /** + * Write-access of a symbol, like writing to a variable. + */ + DocumentHighlightKind[DocumentHighlightKind["Write"] = 2] = "Write"; +})(DocumentHighlightKind || (DocumentHighlightKind = {})); +/** + * Configuration options for auto indentation in the editor + */ +var EditorAutoIndentStrategy; +(function (EditorAutoIndentStrategy) { + EditorAutoIndentStrategy[EditorAutoIndentStrategy["None"] = 0] = "None"; + EditorAutoIndentStrategy[EditorAutoIndentStrategy["Keep"] = 1] = "Keep"; + EditorAutoIndentStrategy[EditorAutoIndentStrategy["Brackets"] = 2] = "Brackets"; + EditorAutoIndentStrategy[EditorAutoIndentStrategy["Advanced"] = 3] = "Advanced"; + EditorAutoIndentStrategy[EditorAutoIndentStrategy["Full"] = 4] = "Full"; +})(EditorAutoIndentStrategy || (EditorAutoIndentStrategy = {})); +var EditorOption; +(function (EditorOption) { + EditorOption[EditorOption["acceptSuggestionOnCommitCharacter"] = 0] = "acceptSuggestionOnCommitCharacter"; + EditorOption[EditorOption["acceptSuggestionOnEnter"] = 1] = "acceptSuggestionOnEnter"; + EditorOption[EditorOption["accessibilitySupport"] = 2] = "accessibilitySupport"; + EditorOption[EditorOption["accessibilityPageSize"] = 3] = "accessibilityPageSize"; + EditorOption[EditorOption["ariaLabel"] = 4] = "ariaLabel"; + EditorOption[EditorOption["ariaRequired"] = 5] = "ariaRequired"; + EditorOption[EditorOption["autoClosingBrackets"] = 6] = "autoClosingBrackets"; + EditorOption[EditorOption["autoClosingComments"] = 7] = "autoClosingComments"; + EditorOption[EditorOption["screenReaderAnnounceInlineSuggestion"] = 8] = "screenReaderAnnounceInlineSuggestion"; + EditorOption[EditorOption["autoClosingDelete"] = 9] = "autoClosingDelete"; + EditorOption[EditorOption["autoClosingOvertype"] = 10] = "autoClosingOvertype"; + EditorOption[EditorOption["autoClosingQuotes"] = 11] = "autoClosingQuotes"; + EditorOption[EditorOption["autoIndent"] = 12] = "autoIndent"; + EditorOption[EditorOption["automaticLayout"] = 13] = "automaticLayout"; + EditorOption[EditorOption["autoSurround"] = 14] = "autoSurround"; + EditorOption[EditorOption["bracketPairColorization"] = 15] = "bracketPairColorization"; + EditorOption[EditorOption["guides"] = 16] = "guides"; + EditorOption[EditorOption["codeLens"] = 17] = "codeLens"; + EditorOption[EditorOption["codeLensFontFamily"] = 18] = "codeLensFontFamily"; + EditorOption[EditorOption["codeLensFontSize"] = 19] = "codeLensFontSize"; + EditorOption[EditorOption["colorDecorators"] = 20] = "colorDecorators"; + EditorOption[EditorOption["colorDecoratorsLimit"] = 21] = "colorDecoratorsLimit"; + EditorOption[EditorOption["columnSelection"] = 22] = "columnSelection"; + EditorOption[EditorOption["comments"] = 23] = "comments"; + EditorOption[EditorOption["contextmenu"] = 24] = "contextmenu"; + EditorOption[EditorOption["copyWithSyntaxHighlighting"] = 25] = "copyWithSyntaxHighlighting"; + EditorOption[EditorOption["cursorBlinking"] = 26] = "cursorBlinking"; + EditorOption[EditorOption["cursorSmoothCaretAnimation"] = 27] = "cursorSmoothCaretAnimation"; + EditorOption[EditorOption["cursorStyle"] = 28] = "cursorStyle"; + EditorOption[EditorOption["cursorSurroundingLines"] = 29] = "cursorSurroundingLines"; + EditorOption[EditorOption["cursorSurroundingLinesStyle"] = 30] = "cursorSurroundingLinesStyle"; + EditorOption[EditorOption["cursorWidth"] = 31] = "cursorWidth"; + EditorOption[EditorOption["disableLayerHinting"] = 32] = "disableLayerHinting"; + EditorOption[EditorOption["disableMonospaceOptimizations"] = 33] = "disableMonospaceOptimizations"; + EditorOption[EditorOption["domReadOnly"] = 34] = "domReadOnly"; + EditorOption[EditorOption["dragAndDrop"] = 35] = "dragAndDrop"; + EditorOption[EditorOption["dropIntoEditor"] = 36] = "dropIntoEditor"; + EditorOption[EditorOption["emptySelectionClipboard"] = 37] = "emptySelectionClipboard"; + EditorOption[EditorOption["experimentalWhitespaceRendering"] = 38] = "experimentalWhitespaceRendering"; + EditorOption[EditorOption["extraEditorClassName"] = 39] = "extraEditorClassName"; + EditorOption[EditorOption["fastScrollSensitivity"] = 40] = "fastScrollSensitivity"; + EditorOption[EditorOption["find"] = 41] = "find"; + EditorOption[EditorOption["fixedOverflowWidgets"] = 42] = "fixedOverflowWidgets"; + EditorOption[EditorOption["folding"] = 43] = "folding"; + EditorOption[EditorOption["foldingStrategy"] = 44] = "foldingStrategy"; + EditorOption[EditorOption["foldingHighlight"] = 45] = "foldingHighlight"; + EditorOption[EditorOption["foldingImportsByDefault"] = 46] = "foldingImportsByDefault"; + EditorOption[EditorOption["foldingMaximumRegions"] = 47] = "foldingMaximumRegions"; + EditorOption[EditorOption["unfoldOnClickAfterEndOfLine"] = 48] = "unfoldOnClickAfterEndOfLine"; + EditorOption[EditorOption["fontFamily"] = 49] = "fontFamily"; + EditorOption[EditorOption["fontInfo"] = 50] = "fontInfo"; + EditorOption[EditorOption["fontLigatures"] = 51] = "fontLigatures"; + EditorOption[EditorOption["fontSize"] = 52] = "fontSize"; + EditorOption[EditorOption["fontWeight"] = 53] = "fontWeight"; + EditorOption[EditorOption["fontVariations"] = 54] = "fontVariations"; + EditorOption[EditorOption["formatOnPaste"] = 55] = "formatOnPaste"; + EditorOption[EditorOption["formatOnType"] = 56] = "formatOnType"; + EditorOption[EditorOption["glyphMargin"] = 57] = "glyphMargin"; + EditorOption[EditorOption["gotoLocation"] = 58] = "gotoLocation"; + EditorOption[EditorOption["hideCursorInOverviewRuler"] = 59] = "hideCursorInOverviewRuler"; + EditorOption[EditorOption["hover"] = 60] = "hover"; + EditorOption[EditorOption["inDiffEditor"] = 61] = "inDiffEditor"; + EditorOption[EditorOption["inlineSuggest"] = 62] = "inlineSuggest"; + EditorOption[EditorOption["letterSpacing"] = 63] = "letterSpacing"; + EditorOption[EditorOption["lightbulb"] = 64] = "lightbulb"; + EditorOption[EditorOption["lineDecorationsWidth"] = 65] = "lineDecorationsWidth"; + EditorOption[EditorOption["lineHeight"] = 66] = "lineHeight"; + EditorOption[EditorOption["lineNumbers"] = 67] = "lineNumbers"; + EditorOption[EditorOption["lineNumbersMinChars"] = 68] = "lineNumbersMinChars"; + EditorOption[EditorOption["linkedEditing"] = 69] = "linkedEditing"; + EditorOption[EditorOption["links"] = 70] = "links"; + EditorOption[EditorOption["matchBrackets"] = 71] = "matchBrackets"; + EditorOption[EditorOption["minimap"] = 72] = "minimap"; + EditorOption[EditorOption["mouseStyle"] = 73] = "mouseStyle"; + EditorOption[EditorOption["mouseWheelScrollSensitivity"] = 74] = "mouseWheelScrollSensitivity"; + EditorOption[EditorOption["mouseWheelZoom"] = 75] = "mouseWheelZoom"; + EditorOption[EditorOption["multiCursorMergeOverlapping"] = 76] = "multiCursorMergeOverlapping"; + EditorOption[EditorOption["multiCursorModifier"] = 77] = "multiCursorModifier"; + EditorOption[EditorOption["multiCursorPaste"] = 78] = "multiCursorPaste"; + EditorOption[EditorOption["multiCursorLimit"] = 79] = "multiCursorLimit"; + EditorOption[EditorOption["occurrencesHighlight"] = 80] = "occurrencesHighlight"; + EditorOption[EditorOption["overviewRulerBorder"] = 81] = "overviewRulerBorder"; + EditorOption[EditorOption["overviewRulerLanes"] = 82] = "overviewRulerLanes"; + EditorOption[EditorOption["padding"] = 83] = "padding"; + EditorOption[EditorOption["pasteAs"] = 84] = "pasteAs"; + EditorOption[EditorOption["parameterHints"] = 85] = "parameterHints"; + EditorOption[EditorOption["peekWidgetDefaultFocus"] = 86] = "peekWidgetDefaultFocus"; + EditorOption[EditorOption["definitionLinkOpensInPeek"] = 87] = "definitionLinkOpensInPeek"; + EditorOption[EditorOption["quickSuggestions"] = 88] = "quickSuggestions"; + EditorOption[EditorOption["quickSuggestionsDelay"] = 89] = "quickSuggestionsDelay"; + EditorOption[EditorOption["readOnly"] = 90] = "readOnly"; + EditorOption[EditorOption["readOnlyMessage"] = 91] = "readOnlyMessage"; + EditorOption[EditorOption["renameOnType"] = 92] = "renameOnType"; + EditorOption[EditorOption["renderControlCharacters"] = 93] = "renderControlCharacters"; + EditorOption[EditorOption["renderFinalNewline"] = 94] = "renderFinalNewline"; + EditorOption[EditorOption["renderLineHighlight"] = 95] = "renderLineHighlight"; + EditorOption[EditorOption["renderLineHighlightOnlyWhenFocus"] = 96] = "renderLineHighlightOnlyWhenFocus"; + EditorOption[EditorOption["renderValidationDecorations"] = 97] = "renderValidationDecorations"; + EditorOption[EditorOption["renderWhitespace"] = 98] = "renderWhitespace"; + EditorOption[EditorOption["revealHorizontalRightPadding"] = 99] = "revealHorizontalRightPadding"; + EditorOption[EditorOption["roundedSelection"] = 100] = "roundedSelection"; + EditorOption[EditorOption["rulers"] = 101] = "rulers"; + EditorOption[EditorOption["scrollbar"] = 102] = "scrollbar"; + EditorOption[EditorOption["scrollBeyondLastColumn"] = 103] = "scrollBeyondLastColumn"; + EditorOption[EditorOption["scrollBeyondLastLine"] = 104] = "scrollBeyondLastLine"; + EditorOption[EditorOption["scrollPredominantAxis"] = 105] = "scrollPredominantAxis"; + EditorOption[EditorOption["selectionClipboard"] = 106] = "selectionClipboard"; + EditorOption[EditorOption["selectionHighlight"] = 107] = "selectionHighlight"; + EditorOption[EditorOption["selectOnLineNumbers"] = 108] = "selectOnLineNumbers"; + EditorOption[EditorOption["showFoldingControls"] = 109] = "showFoldingControls"; + EditorOption[EditorOption["showUnused"] = 110] = "showUnused"; + EditorOption[EditorOption["snippetSuggestions"] = 111] = "snippetSuggestions"; + EditorOption[EditorOption["smartSelect"] = 112] = "smartSelect"; + EditorOption[EditorOption["smoothScrolling"] = 113] = "smoothScrolling"; + EditorOption[EditorOption["stickyScroll"] = 114] = "stickyScroll"; + EditorOption[EditorOption["stickyTabStops"] = 115] = "stickyTabStops"; + EditorOption[EditorOption["stopRenderingLineAfter"] = 116] = "stopRenderingLineAfter"; + EditorOption[EditorOption["suggest"] = 117] = "suggest"; + EditorOption[EditorOption["suggestFontSize"] = 118] = "suggestFontSize"; + EditorOption[EditorOption["suggestLineHeight"] = 119] = "suggestLineHeight"; + EditorOption[EditorOption["suggestOnTriggerCharacters"] = 120] = "suggestOnTriggerCharacters"; + EditorOption[EditorOption["suggestSelection"] = 121] = "suggestSelection"; + EditorOption[EditorOption["tabCompletion"] = 122] = "tabCompletion"; + EditorOption[EditorOption["tabIndex"] = 123] = "tabIndex"; + EditorOption[EditorOption["unicodeHighlighting"] = 124] = "unicodeHighlighting"; + EditorOption[EditorOption["unusualLineTerminators"] = 125] = "unusualLineTerminators"; + EditorOption[EditorOption["useShadowDOM"] = 126] = "useShadowDOM"; + EditorOption[EditorOption["useTabStops"] = 127] = "useTabStops"; + EditorOption[EditorOption["wordBreak"] = 128] = "wordBreak"; + EditorOption[EditorOption["wordSeparators"] = 129] = "wordSeparators"; + EditorOption[EditorOption["wordWrap"] = 130] = "wordWrap"; + EditorOption[EditorOption["wordWrapBreakAfterCharacters"] = 131] = "wordWrapBreakAfterCharacters"; + EditorOption[EditorOption["wordWrapBreakBeforeCharacters"] = 132] = "wordWrapBreakBeforeCharacters"; + EditorOption[EditorOption["wordWrapColumn"] = 133] = "wordWrapColumn"; + EditorOption[EditorOption["wordWrapOverride1"] = 134] = "wordWrapOverride1"; + EditorOption[EditorOption["wordWrapOverride2"] = 135] = "wordWrapOverride2"; + EditorOption[EditorOption["wrappingIndent"] = 136] = "wrappingIndent"; + EditorOption[EditorOption["wrappingStrategy"] = 137] = "wrappingStrategy"; + EditorOption[EditorOption["showDeprecated"] = 138] = "showDeprecated"; + EditorOption[EditorOption["inlayHints"] = 139] = "inlayHints"; + EditorOption[EditorOption["editorClassName"] = 140] = "editorClassName"; + EditorOption[EditorOption["pixelRatio"] = 141] = "pixelRatio"; + EditorOption[EditorOption["tabFocusMode"] = 142] = "tabFocusMode"; + EditorOption[EditorOption["layoutInfo"] = 143] = "layoutInfo"; + EditorOption[EditorOption["wrappingInfo"] = 144] = "wrappingInfo"; + EditorOption[EditorOption["defaultColorDecorators"] = 145] = "defaultColorDecorators"; + EditorOption[EditorOption["colorDecoratorsActivatedOn"] = 146] = "colorDecoratorsActivatedOn"; + EditorOption[EditorOption["inlineCompletionsAccessibilityVerbose"] = 147] = "inlineCompletionsAccessibilityVerbose"; +})(EditorOption || (EditorOption = {})); +/** + * End of line character preference. + */ +var EndOfLinePreference; +(function (EndOfLinePreference) { + /** + * Use the end of line character identified in the text buffer. + */ + EndOfLinePreference[EndOfLinePreference["TextDefined"] = 0] = "TextDefined"; + /** + * Use line feed (\n) as the end of line character. + */ + EndOfLinePreference[EndOfLinePreference["LF"] = 1] = "LF"; + /** + * Use carriage return and line feed (\r\n) as the end of line character. + */ + EndOfLinePreference[EndOfLinePreference["CRLF"] = 2] = "CRLF"; +})(EndOfLinePreference || (EndOfLinePreference = {})); +/** + * End of line character preference. + */ +var EndOfLineSequence; +(function (EndOfLineSequence) { + /** + * Use line feed (\n) as the end of line character. + */ + EndOfLineSequence[EndOfLineSequence["LF"] = 0] = "LF"; + /** + * Use carriage return and line feed (\r\n) as the end of line character. + */ + EndOfLineSequence[EndOfLineSequence["CRLF"] = 1] = "CRLF"; +})(EndOfLineSequence || (EndOfLineSequence = {})); +/** + * Vertical Lane in the glyph margin of the editor. + */ +var GlyphMarginLane$1; +(function (GlyphMarginLane) { + GlyphMarginLane[GlyphMarginLane["Left"] = 1] = "Left"; + GlyphMarginLane[GlyphMarginLane["Right"] = 2] = "Right"; +})(GlyphMarginLane$1 || (GlyphMarginLane$1 = {})); +/** + * Describes what to do with the indentation when pressing Enter. + */ +var IndentAction; +(function (IndentAction) { + /** + * Insert new line and copy the previous line's indentation. + */ + IndentAction[IndentAction["None"] = 0] = "None"; + /** + * Insert new line and indent once (relative to the previous line's indentation). + */ + IndentAction[IndentAction["Indent"] = 1] = "Indent"; + /** + * Insert two new lines: + * - the first one indented which will hold the cursor + * - the second one at the same indentation level + */ + IndentAction[IndentAction["IndentOutdent"] = 2] = "IndentOutdent"; + /** + * Insert new line and outdent once (relative to the previous line's indentation). + */ + IndentAction[IndentAction["Outdent"] = 3] = "Outdent"; +})(IndentAction || (IndentAction = {})); +var InjectedTextCursorStops$1; +(function (InjectedTextCursorStops) { + InjectedTextCursorStops[InjectedTextCursorStops["Both"] = 0] = "Both"; + InjectedTextCursorStops[InjectedTextCursorStops["Right"] = 1] = "Right"; + InjectedTextCursorStops[InjectedTextCursorStops["Left"] = 2] = "Left"; + InjectedTextCursorStops[InjectedTextCursorStops["None"] = 3] = "None"; +})(InjectedTextCursorStops$1 || (InjectedTextCursorStops$1 = {})); +var InlayHintKind; +(function (InlayHintKind) { + InlayHintKind[InlayHintKind["Type"] = 1] = "Type"; + InlayHintKind[InlayHintKind["Parameter"] = 2] = "Parameter"; +})(InlayHintKind || (InlayHintKind = {})); +/** + * How an {@link InlineCompletionsProvider inline completion provider} was triggered. + */ +var InlineCompletionTriggerKind; +(function (InlineCompletionTriggerKind) { + /** + * Completion was triggered automatically while editing. + * It is sufficient to return a single completion item in this case. + */ + InlineCompletionTriggerKind[InlineCompletionTriggerKind["Automatic"] = 0] = "Automatic"; + /** + * Completion was triggered explicitly by a user gesture. + * Return multiple completion items to enable cycling through them. + */ + InlineCompletionTriggerKind[InlineCompletionTriggerKind["Explicit"] = 1] = "Explicit"; +})(InlineCompletionTriggerKind || (InlineCompletionTriggerKind = {})); +/** + * Virtual Key Codes, the value does not hold any inherent meaning. + * Inspired somewhat from https://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx + * But these are "more general", as they should work across browsers & OS`s. + */ +var KeyCode; +(function (KeyCode) { + KeyCode[KeyCode["DependsOnKbLayout"] = -1] = "DependsOnKbLayout"; + /** + * Placed first to cover the 0 value of the enum. + */ + KeyCode[KeyCode["Unknown"] = 0] = "Unknown"; + KeyCode[KeyCode["Backspace"] = 1] = "Backspace"; + KeyCode[KeyCode["Tab"] = 2] = "Tab"; + KeyCode[KeyCode["Enter"] = 3] = "Enter"; + KeyCode[KeyCode["Shift"] = 4] = "Shift"; + KeyCode[KeyCode["Ctrl"] = 5] = "Ctrl"; + KeyCode[KeyCode["Alt"] = 6] = "Alt"; + KeyCode[KeyCode["PauseBreak"] = 7] = "PauseBreak"; + KeyCode[KeyCode["CapsLock"] = 8] = "CapsLock"; + KeyCode[KeyCode["Escape"] = 9] = "Escape"; + KeyCode[KeyCode["Space"] = 10] = "Space"; + KeyCode[KeyCode["PageUp"] = 11] = "PageUp"; + KeyCode[KeyCode["PageDown"] = 12] = "PageDown"; + KeyCode[KeyCode["End"] = 13] = "End"; + KeyCode[KeyCode["Home"] = 14] = "Home"; + KeyCode[KeyCode["LeftArrow"] = 15] = "LeftArrow"; + KeyCode[KeyCode["UpArrow"] = 16] = "UpArrow"; + KeyCode[KeyCode["RightArrow"] = 17] = "RightArrow"; + KeyCode[KeyCode["DownArrow"] = 18] = "DownArrow"; + KeyCode[KeyCode["Insert"] = 19] = "Insert"; + KeyCode[KeyCode["Delete"] = 20] = "Delete"; + KeyCode[KeyCode["Digit0"] = 21] = "Digit0"; + KeyCode[KeyCode["Digit1"] = 22] = "Digit1"; + KeyCode[KeyCode["Digit2"] = 23] = "Digit2"; + KeyCode[KeyCode["Digit3"] = 24] = "Digit3"; + KeyCode[KeyCode["Digit4"] = 25] = "Digit4"; + KeyCode[KeyCode["Digit5"] = 26] = "Digit5"; + KeyCode[KeyCode["Digit6"] = 27] = "Digit6"; + KeyCode[KeyCode["Digit7"] = 28] = "Digit7"; + KeyCode[KeyCode["Digit8"] = 29] = "Digit8"; + KeyCode[KeyCode["Digit9"] = 30] = "Digit9"; + KeyCode[KeyCode["KeyA"] = 31] = "KeyA"; + KeyCode[KeyCode["KeyB"] = 32] = "KeyB"; + KeyCode[KeyCode["KeyC"] = 33] = "KeyC"; + KeyCode[KeyCode["KeyD"] = 34] = "KeyD"; + KeyCode[KeyCode["KeyE"] = 35] = "KeyE"; + KeyCode[KeyCode["KeyF"] = 36] = "KeyF"; + KeyCode[KeyCode["KeyG"] = 37] = "KeyG"; + KeyCode[KeyCode["KeyH"] = 38] = "KeyH"; + KeyCode[KeyCode["KeyI"] = 39] = "KeyI"; + KeyCode[KeyCode["KeyJ"] = 40] = "KeyJ"; + KeyCode[KeyCode["KeyK"] = 41] = "KeyK"; + KeyCode[KeyCode["KeyL"] = 42] = "KeyL"; + KeyCode[KeyCode["KeyM"] = 43] = "KeyM"; + KeyCode[KeyCode["KeyN"] = 44] = "KeyN"; + KeyCode[KeyCode["KeyO"] = 45] = "KeyO"; + KeyCode[KeyCode["KeyP"] = 46] = "KeyP"; + KeyCode[KeyCode["KeyQ"] = 47] = "KeyQ"; + KeyCode[KeyCode["KeyR"] = 48] = "KeyR"; + KeyCode[KeyCode["KeyS"] = 49] = "KeyS"; + KeyCode[KeyCode["KeyT"] = 50] = "KeyT"; + KeyCode[KeyCode["KeyU"] = 51] = "KeyU"; + KeyCode[KeyCode["KeyV"] = 52] = "KeyV"; + KeyCode[KeyCode["KeyW"] = 53] = "KeyW"; + KeyCode[KeyCode["KeyX"] = 54] = "KeyX"; + KeyCode[KeyCode["KeyY"] = 55] = "KeyY"; + KeyCode[KeyCode["KeyZ"] = 56] = "KeyZ"; + KeyCode[KeyCode["Meta"] = 57] = "Meta"; + KeyCode[KeyCode["ContextMenu"] = 58] = "ContextMenu"; + KeyCode[KeyCode["F1"] = 59] = "F1"; + KeyCode[KeyCode["F2"] = 60] = "F2"; + KeyCode[KeyCode["F3"] = 61] = "F3"; + KeyCode[KeyCode["F4"] = 62] = "F4"; + KeyCode[KeyCode["F5"] = 63] = "F5"; + KeyCode[KeyCode["F6"] = 64] = "F6"; + KeyCode[KeyCode["F7"] = 65] = "F7"; + KeyCode[KeyCode["F8"] = 66] = "F8"; + KeyCode[KeyCode["F9"] = 67] = "F9"; + KeyCode[KeyCode["F10"] = 68] = "F10"; + KeyCode[KeyCode["F11"] = 69] = "F11"; + KeyCode[KeyCode["F12"] = 70] = "F12"; + KeyCode[KeyCode["F13"] = 71] = "F13"; + KeyCode[KeyCode["F14"] = 72] = "F14"; + KeyCode[KeyCode["F15"] = 73] = "F15"; + KeyCode[KeyCode["F16"] = 74] = "F16"; + KeyCode[KeyCode["F17"] = 75] = "F17"; + KeyCode[KeyCode["F18"] = 76] = "F18"; + KeyCode[KeyCode["F19"] = 77] = "F19"; + KeyCode[KeyCode["F20"] = 78] = "F20"; + KeyCode[KeyCode["F21"] = 79] = "F21"; + KeyCode[KeyCode["F22"] = 80] = "F22"; + KeyCode[KeyCode["F23"] = 81] = "F23"; + KeyCode[KeyCode["F24"] = 82] = "F24"; + KeyCode[KeyCode["NumLock"] = 83] = "NumLock"; + KeyCode[KeyCode["ScrollLock"] = 84] = "ScrollLock"; + /** + * Used for miscellaneous characters; it can vary by keyboard. + * For the US standard keyboard, the ';:' key + */ + KeyCode[KeyCode["Semicolon"] = 85] = "Semicolon"; + /** + * For any country/region, the '+' key + * For the US standard keyboard, the '=+' key + */ + KeyCode[KeyCode["Equal"] = 86] = "Equal"; + /** + * For any country/region, the ',' key + * For the US standard keyboard, the ',<' key + */ + KeyCode[KeyCode["Comma"] = 87] = "Comma"; + /** + * For any country/region, the '-' key + * For the US standard keyboard, the '-_' key + */ + KeyCode[KeyCode["Minus"] = 88] = "Minus"; + /** + * For any country/region, the '.' key + * For the US standard keyboard, the '.>' key + */ + KeyCode[KeyCode["Period"] = 89] = "Period"; + /** + * Used for miscellaneous characters; it can vary by keyboard. + * For the US standard keyboard, the '/?' key + */ + KeyCode[KeyCode["Slash"] = 90] = "Slash"; + /** + * Used for miscellaneous characters; it can vary by keyboard. + * For the US standard keyboard, the '`~' key + */ + KeyCode[KeyCode["Backquote"] = 91] = "Backquote"; + /** + * Used for miscellaneous characters; it can vary by keyboard. + * For the US standard keyboard, the '[{' key + */ + KeyCode[KeyCode["BracketLeft"] = 92] = "BracketLeft"; + /** + * Used for miscellaneous characters; it can vary by keyboard. + * For the US standard keyboard, the '\|' key + */ + KeyCode[KeyCode["Backslash"] = 93] = "Backslash"; + /** + * Used for miscellaneous characters; it can vary by keyboard. + * For the US standard keyboard, the ']}' key + */ + KeyCode[KeyCode["BracketRight"] = 94] = "BracketRight"; + /** + * Used for miscellaneous characters; it can vary by keyboard. + * For the US standard keyboard, the ''"' key + */ + KeyCode[KeyCode["Quote"] = 95] = "Quote"; + /** + * Used for miscellaneous characters; it can vary by keyboard. + */ + KeyCode[KeyCode["OEM_8"] = 96] = "OEM_8"; + /** + * Either the angle bracket key or the backslash key on the RT 102-key keyboard. + */ + KeyCode[KeyCode["IntlBackslash"] = 97] = "IntlBackslash"; + KeyCode[KeyCode["Numpad0"] = 98] = "Numpad0"; + KeyCode[KeyCode["Numpad1"] = 99] = "Numpad1"; + KeyCode[KeyCode["Numpad2"] = 100] = "Numpad2"; + KeyCode[KeyCode["Numpad3"] = 101] = "Numpad3"; + KeyCode[KeyCode["Numpad4"] = 102] = "Numpad4"; + KeyCode[KeyCode["Numpad5"] = 103] = "Numpad5"; + KeyCode[KeyCode["Numpad6"] = 104] = "Numpad6"; + KeyCode[KeyCode["Numpad7"] = 105] = "Numpad7"; + KeyCode[KeyCode["Numpad8"] = 106] = "Numpad8"; + KeyCode[KeyCode["Numpad9"] = 107] = "Numpad9"; + KeyCode[KeyCode["NumpadMultiply"] = 108] = "NumpadMultiply"; + KeyCode[KeyCode["NumpadAdd"] = 109] = "NumpadAdd"; + KeyCode[KeyCode["NUMPAD_SEPARATOR"] = 110] = "NUMPAD_SEPARATOR"; + KeyCode[KeyCode["NumpadSubtract"] = 111] = "NumpadSubtract"; + KeyCode[KeyCode["NumpadDecimal"] = 112] = "NumpadDecimal"; + KeyCode[KeyCode["NumpadDivide"] = 113] = "NumpadDivide"; + /** + * Cover all key codes when IME is processing input. + */ + KeyCode[KeyCode["KEY_IN_COMPOSITION"] = 114] = "KEY_IN_COMPOSITION"; + KeyCode[KeyCode["ABNT_C1"] = 115] = "ABNT_C1"; + KeyCode[KeyCode["ABNT_C2"] = 116] = "ABNT_C2"; + KeyCode[KeyCode["AudioVolumeMute"] = 117] = "AudioVolumeMute"; + KeyCode[KeyCode["AudioVolumeUp"] = 118] = "AudioVolumeUp"; + KeyCode[KeyCode["AudioVolumeDown"] = 119] = "AudioVolumeDown"; + KeyCode[KeyCode["BrowserSearch"] = 120] = "BrowserSearch"; + KeyCode[KeyCode["BrowserHome"] = 121] = "BrowserHome"; + KeyCode[KeyCode["BrowserBack"] = 122] = "BrowserBack"; + KeyCode[KeyCode["BrowserForward"] = 123] = "BrowserForward"; + KeyCode[KeyCode["MediaTrackNext"] = 124] = "MediaTrackNext"; + KeyCode[KeyCode["MediaTrackPrevious"] = 125] = "MediaTrackPrevious"; + KeyCode[KeyCode["MediaStop"] = 126] = "MediaStop"; + KeyCode[KeyCode["MediaPlayPause"] = 127] = "MediaPlayPause"; + KeyCode[KeyCode["LaunchMediaPlayer"] = 128] = "LaunchMediaPlayer"; + KeyCode[KeyCode["LaunchMail"] = 129] = "LaunchMail"; + KeyCode[KeyCode["LaunchApp2"] = 130] = "LaunchApp2"; + /** + * VK_CLEAR, 0x0C, CLEAR key + */ + KeyCode[KeyCode["Clear"] = 131] = "Clear"; + /** + * Placed last to cover the length of the enum. + * Please do not depend on this value! + */ + KeyCode[KeyCode["MAX_VALUE"] = 132] = "MAX_VALUE"; +})(KeyCode || (KeyCode = {})); +var MarkerSeverity; +(function (MarkerSeverity) { + MarkerSeverity[MarkerSeverity["Hint"] = 1] = "Hint"; + MarkerSeverity[MarkerSeverity["Info"] = 2] = "Info"; + MarkerSeverity[MarkerSeverity["Warning"] = 4] = "Warning"; + MarkerSeverity[MarkerSeverity["Error"] = 8] = "Error"; +})(MarkerSeverity || (MarkerSeverity = {})); +var MarkerTag; +(function (MarkerTag) { + MarkerTag[MarkerTag["Unnecessary"] = 1] = "Unnecessary"; + MarkerTag[MarkerTag["Deprecated"] = 2] = "Deprecated"; +})(MarkerTag || (MarkerTag = {})); +/** + * Position in the minimap to render the decoration. + */ +var MinimapPosition$1; +(function (MinimapPosition) { + MinimapPosition[MinimapPosition["Inline"] = 1] = "Inline"; + MinimapPosition[MinimapPosition["Gutter"] = 2] = "Gutter"; +})(MinimapPosition$1 || (MinimapPosition$1 = {})); +/** + * Type of hit element with the mouse in the editor. + */ +var MouseTargetType; +(function (MouseTargetType) { + /** + * Mouse is on top of an unknown element. + */ + MouseTargetType[MouseTargetType["UNKNOWN"] = 0] = "UNKNOWN"; + /** + * Mouse is on top of the textarea used for input. + */ + MouseTargetType[MouseTargetType["TEXTAREA"] = 1] = "TEXTAREA"; + /** + * Mouse is on top of the glyph margin + */ + MouseTargetType[MouseTargetType["GUTTER_GLYPH_MARGIN"] = 2] = "GUTTER_GLYPH_MARGIN"; + /** + * Mouse is on top of the line numbers + */ + MouseTargetType[MouseTargetType["GUTTER_LINE_NUMBERS"] = 3] = "GUTTER_LINE_NUMBERS"; + /** + * Mouse is on top of the line decorations + */ + MouseTargetType[MouseTargetType["GUTTER_LINE_DECORATIONS"] = 4] = "GUTTER_LINE_DECORATIONS"; + /** + * Mouse is on top of the whitespace left in the gutter by a view zone. + */ + MouseTargetType[MouseTargetType["GUTTER_VIEW_ZONE"] = 5] = "GUTTER_VIEW_ZONE"; + /** + * Mouse is on top of text in the content. + */ + MouseTargetType[MouseTargetType["CONTENT_TEXT"] = 6] = "CONTENT_TEXT"; + /** + * Mouse is on top of empty space in the content (e.g. after line text or below last line) + */ + MouseTargetType[MouseTargetType["CONTENT_EMPTY"] = 7] = "CONTENT_EMPTY"; + /** + * Mouse is on top of a view zone in the content. + */ + MouseTargetType[MouseTargetType["CONTENT_VIEW_ZONE"] = 8] = "CONTENT_VIEW_ZONE"; + /** + * Mouse is on top of a content widget. + */ + MouseTargetType[MouseTargetType["CONTENT_WIDGET"] = 9] = "CONTENT_WIDGET"; + /** + * Mouse is on top of the decorations overview ruler. + */ + MouseTargetType[MouseTargetType["OVERVIEW_RULER"] = 10] = "OVERVIEW_RULER"; + /** + * Mouse is on top of a scrollbar. + */ + MouseTargetType[MouseTargetType["SCROLLBAR"] = 11] = "SCROLLBAR"; + /** + * Mouse is on top of an overlay widget. + */ + MouseTargetType[MouseTargetType["OVERLAY_WIDGET"] = 12] = "OVERLAY_WIDGET"; + /** + * Mouse is outside of the editor. + */ + MouseTargetType[MouseTargetType["OUTSIDE_EDITOR"] = 13] = "OUTSIDE_EDITOR"; +})(MouseTargetType || (MouseTargetType = {})); +/** + * A positioning preference for rendering overlay widgets. + */ +var OverlayWidgetPositionPreference; +(function (OverlayWidgetPositionPreference) { + /** + * Position the overlay widget in the top right corner + */ + OverlayWidgetPositionPreference[OverlayWidgetPositionPreference["TOP_RIGHT_CORNER"] = 0] = "TOP_RIGHT_CORNER"; + /** + * Position the overlay widget in the bottom right corner + */ + OverlayWidgetPositionPreference[OverlayWidgetPositionPreference["BOTTOM_RIGHT_CORNER"] = 1] = "BOTTOM_RIGHT_CORNER"; + /** + * Position the overlay widget in the top center + */ + OverlayWidgetPositionPreference[OverlayWidgetPositionPreference["TOP_CENTER"] = 2] = "TOP_CENTER"; +})(OverlayWidgetPositionPreference || (OverlayWidgetPositionPreference = {})); +/** + * Vertical Lane in the overview ruler of the editor. + */ +var OverviewRulerLane$1; +(function (OverviewRulerLane) { + OverviewRulerLane[OverviewRulerLane["Left"] = 1] = "Left"; + OverviewRulerLane[OverviewRulerLane["Center"] = 2] = "Center"; + OverviewRulerLane[OverviewRulerLane["Right"] = 4] = "Right"; + OverviewRulerLane[OverviewRulerLane["Full"] = 7] = "Full"; +})(OverviewRulerLane$1 || (OverviewRulerLane$1 = {})); +var PositionAffinity; +(function (PositionAffinity) { + /** + * Prefers the left most position. + */ + PositionAffinity[PositionAffinity["Left"] = 0] = "Left"; + /** + * Prefers the right most position. + */ + PositionAffinity[PositionAffinity["Right"] = 1] = "Right"; + /** + * No preference. + */ + PositionAffinity[PositionAffinity["None"] = 2] = "None"; + /** + * If the given position is on injected text, prefers the position left of it. + */ + PositionAffinity[PositionAffinity["LeftOfInjectedText"] = 3] = "LeftOfInjectedText"; + /** + * If the given position is on injected text, prefers the position right of it. + */ + PositionAffinity[PositionAffinity["RightOfInjectedText"] = 4] = "RightOfInjectedText"; +})(PositionAffinity || (PositionAffinity = {})); +var RenderLineNumbersType; +(function (RenderLineNumbersType) { + RenderLineNumbersType[RenderLineNumbersType["Off"] = 0] = "Off"; + RenderLineNumbersType[RenderLineNumbersType["On"] = 1] = "On"; + RenderLineNumbersType[RenderLineNumbersType["Relative"] = 2] = "Relative"; + RenderLineNumbersType[RenderLineNumbersType["Interval"] = 3] = "Interval"; + RenderLineNumbersType[RenderLineNumbersType["Custom"] = 4] = "Custom"; +})(RenderLineNumbersType || (RenderLineNumbersType = {})); +var RenderMinimap; +(function (RenderMinimap) { + RenderMinimap[RenderMinimap["None"] = 0] = "None"; + RenderMinimap[RenderMinimap["Text"] = 1] = "Text"; + RenderMinimap[RenderMinimap["Blocks"] = 2] = "Blocks"; +})(RenderMinimap || (RenderMinimap = {})); +var ScrollType; +(function (ScrollType) { + ScrollType[ScrollType["Smooth"] = 0] = "Smooth"; + ScrollType[ScrollType["Immediate"] = 1] = "Immediate"; +})(ScrollType || (ScrollType = {})); +var ScrollbarVisibility; +(function (ScrollbarVisibility) { + ScrollbarVisibility[ScrollbarVisibility["Auto"] = 1] = "Auto"; + ScrollbarVisibility[ScrollbarVisibility["Hidden"] = 2] = "Hidden"; + ScrollbarVisibility[ScrollbarVisibility["Visible"] = 3] = "Visible"; +})(ScrollbarVisibility || (ScrollbarVisibility = {})); +/** + * The direction of a selection. + */ +var SelectionDirection; +(function (SelectionDirection) { + /** + * The selection starts above where it ends. + */ + SelectionDirection[SelectionDirection["LTR"] = 0] = "LTR"; + /** + * The selection starts below where it ends. + */ + SelectionDirection[SelectionDirection["RTL"] = 1] = "RTL"; +})(SelectionDirection || (SelectionDirection = {})); +var ShowAiIconMode; +(function (ShowAiIconMode) { + ShowAiIconMode["Off"] = "off"; + ShowAiIconMode["OnCode"] = "onCode"; + ShowAiIconMode["On"] = "on"; +})(ShowAiIconMode || (ShowAiIconMode = {})); +var SignatureHelpTriggerKind; +(function (SignatureHelpTriggerKind) { + SignatureHelpTriggerKind[SignatureHelpTriggerKind["Invoke"] = 1] = "Invoke"; + SignatureHelpTriggerKind[SignatureHelpTriggerKind["TriggerCharacter"] = 2] = "TriggerCharacter"; + SignatureHelpTriggerKind[SignatureHelpTriggerKind["ContentChange"] = 3] = "ContentChange"; +})(SignatureHelpTriggerKind || (SignatureHelpTriggerKind = {})); +/** + * A symbol kind. + */ +var SymbolKind; +(function (SymbolKind) { + SymbolKind[SymbolKind["File"] = 0] = "File"; + SymbolKind[SymbolKind["Module"] = 1] = "Module"; + SymbolKind[SymbolKind["Namespace"] = 2] = "Namespace"; + SymbolKind[SymbolKind["Package"] = 3] = "Package"; + SymbolKind[SymbolKind["Class"] = 4] = "Class"; + SymbolKind[SymbolKind["Method"] = 5] = "Method"; + SymbolKind[SymbolKind["Property"] = 6] = "Property"; + SymbolKind[SymbolKind["Field"] = 7] = "Field"; + SymbolKind[SymbolKind["Constructor"] = 8] = "Constructor"; + SymbolKind[SymbolKind["Enum"] = 9] = "Enum"; + SymbolKind[SymbolKind["Interface"] = 10] = "Interface"; + SymbolKind[SymbolKind["Function"] = 11] = "Function"; + SymbolKind[SymbolKind["Variable"] = 12] = "Variable"; + SymbolKind[SymbolKind["Constant"] = 13] = "Constant"; + SymbolKind[SymbolKind["String"] = 14] = "String"; + SymbolKind[SymbolKind["Number"] = 15] = "Number"; + SymbolKind[SymbolKind["Boolean"] = 16] = "Boolean"; + SymbolKind[SymbolKind["Array"] = 17] = "Array"; + SymbolKind[SymbolKind["Object"] = 18] = "Object"; + SymbolKind[SymbolKind["Key"] = 19] = "Key"; + SymbolKind[SymbolKind["Null"] = 20] = "Null"; + SymbolKind[SymbolKind["EnumMember"] = 21] = "EnumMember"; + SymbolKind[SymbolKind["Struct"] = 22] = "Struct"; + SymbolKind[SymbolKind["Event"] = 23] = "Event"; + SymbolKind[SymbolKind["Operator"] = 24] = "Operator"; + SymbolKind[SymbolKind["TypeParameter"] = 25] = "TypeParameter"; +})(SymbolKind || (SymbolKind = {})); +var SymbolTag; +(function (SymbolTag) { + SymbolTag[SymbolTag["Deprecated"] = 1] = "Deprecated"; +})(SymbolTag || (SymbolTag = {})); +/** + * The kind of animation in which the editor's cursor should be rendered. + */ +var TextEditorCursorBlinkingStyle; +(function (TextEditorCursorBlinkingStyle) { + /** + * Hidden + */ + TextEditorCursorBlinkingStyle[TextEditorCursorBlinkingStyle["Hidden"] = 0] = "Hidden"; + /** + * Blinking + */ + TextEditorCursorBlinkingStyle[TextEditorCursorBlinkingStyle["Blink"] = 1] = "Blink"; + /** + * Blinking with smooth fading + */ + TextEditorCursorBlinkingStyle[TextEditorCursorBlinkingStyle["Smooth"] = 2] = "Smooth"; + /** + * Blinking with prolonged filled state and smooth fading + */ + TextEditorCursorBlinkingStyle[TextEditorCursorBlinkingStyle["Phase"] = 3] = "Phase"; + /** + * Expand collapse animation on the y axis + */ + TextEditorCursorBlinkingStyle[TextEditorCursorBlinkingStyle["Expand"] = 4] = "Expand"; + /** + * No-Blinking + */ + TextEditorCursorBlinkingStyle[TextEditorCursorBlinkingStyle["Solid"] = 5] = "Solid"; +})(TextEditorCursorBlinkingStyle || (TextEditorCursorBlinkingStyle = {})); +/** + * The style in which the editor's cursor should be rendered. + */ +var TextEditorCursorStyle; +(function (TextEditorCursorStyle) { + /** + * As a vertical line (sitting between two characters). + */ + TextEditorCursorStyle[TextEditorCursorStyle["Line"] = 1] = "Line"; + /** + * As a block (sitting on top of a character). + */ + TextEditorCursorStyle[TextEditorCursorStyle["Block"] = 2] = "Block"; + /** + * As a horizontal line (sitting under a character). + */ + TextEditorCursorStyle[TextEditorCursorStyle["Underline"] = 3] = "Underline"; + /** + * As a thin vertical line (sitting between two characters). + */ + TextEditorCursorStyle[TextEditorCursorStyle["LineThin"] = 4] = "LineThin"; + /** + * As an outlined block (sitting on top of a character). + */ + TextEditorCursorStyle[TextEditorCursorStyle["BlockOutline"] = 5] = "BlockOutline"; + /** + * As a thin horizontal line (sitting under a character). + */ + TextEditorCursorStyle[TextEditorCursorStyle["UnderlineThin"] = 6] = "UnderlineThin"; +})(TextEditorCursorStyle || (TextEditorCursorStyle = {})); +/** + * Describes the behavior of decorations when typing/editing near their edges. + * Note: Please do not edit the values, as they very carefully match `DecorationRangeBehavior` + */ +var TrackedRangeStickiness; +(function (TrackedRangeStickiness) { + TrackedRangeStickiness[TrackedRangeStickiness["AlwaysGrowsWhenTypingAtEdges"] = 0] = "AlwaysGrowsWhenTypingAtEdges"; + TrackedRangeStickiness[TrackedRangeStickiness["NeverGrowsWhenTypingAtEdges"] = 1] = "NeverGrowsWhenTypingAtEdges"; + TrackedRangeStickiness[TrackedRangeStickiness["GrowsOnlyWhenTypingBefore"] = 2] = "GrowsOnlyWhenTypingBefore"; + TrackedRangeStickiness[TrackedRangeStickiness["GrowsOnlyWhenTypingAfter"] = 3] = "GrowsOnlyWhenTypingAfter"; +})(TrackedRangeStickiness || (TrackedRangeStickiness = {})); +/** + * Describes how to indent wrapped lines. + */ +var WrappingIndent; +(function (WrappingIndent) { + /** + * No indentation => wrapped lines begin at column 1. + */ + WrappingIndent[WrappingIndent["None"] = 0] = "None"; + /** + * Same => wrapped lines get the same indentation as the parent. + */ + WrappingIndent[WrappingIndent["Same"] = 1] = "Same"; + /** + * Indent => wrapped lines get +1 indentation toward the parent. + */ + WrappingIndent[WrappingIndent["Indent"] = 2] = "Indent"; + /** + * DeepIndent => wrapped lines get +2 indentation toward the parent. + */ + WrappingIndent[WrappingIndent["DeepIndent"] = 3] = "DeepIndent"; +})(WrappingIndent || (WrappingIndent = {})); + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +class KeyMod { + static chord(firstPart, secondPart) { + return KeyChord(firstPart, secondPart); + } +} +KeyMod.CtrlCmd = 2048 /* ConstKeyMod.CtrlCmd */; +KeyMod.Shift = 1024 /* ConstKeyMod.Shift */; +KeyMod.Alt = 512 /* ConstKeyMod.Alt */; +KeyMod.WinCtrl = 256 /* ConstKeyMod.WinCtrl */; +function createMonacoBaseAPI() { + return { + editor: undefined, // undefined override expected here + languages: undefined, // undefined override expected here + CancellationTokenSource: CancellationTokenSource, + Emitter: Emitter, + KeyCode: KeyCode, + KeyMod: KeyMod, + Position: Position, + Range: Range, + Selection: Selection, + SelectionDirection: SelectionDirection, + MarkerSeverity: MarkerSeverity, + MarkerTag: MarkerTag, + Uri: URI, + Token: Token + }; +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +/** + * Vertical Lane in the overview ruler of the editor. + */ +var OverviewRulerLane; +(function (OverviewRulerLane) { + OverviewRulerLane[OverviewRulerLane["Left"] = 1] = "Left"; + OverviewRulerLane[OverviewRulerLane["Center"] = 2] = "Center"; + OverviewRulerLane[OverviewRulerLane["Right"] = 4] = "Right"; + OverviewRulerLane[OverviewRulerLane["Full"] = 7] = "Full"; +})(OverviewRulerLane || (OverviewRulerLane = {})); +/** + * Vertical Lane in the glyph margin of the editor. + */ +var GlyphMarginLane; +(function (GlyphMarginLane) { + GlyphMarginLane[GlyphMarginLane["Left"] = 1] = "Left"; + GlyphMarginLane[GlyphMarginLane["Right"] = 2] = "Right"; +})(GlyphMarginLane || (GlyphMarginLane = {})); +/** + * Position in the minimap to render the decoration. + */ +var MinimapPosition; +(function (MinimapPosition) { + MinimapPosition[MinimapPosition["Inline"] = 1] = "Inline"; + MinimapPosition[MinimapPosition["Gutter"] = 2] = "Gutter"; +})(MinimapPosition || (MinimapPosition = {})); +var InjectedTextCursorStops; +(function (InjectedTextCursorStops) { + InjectedTextCursorStops[InjectedTextCursorStops["Both"] = 0] = "Both"; + InjectedTextCursorStops[InjectedTextCursorStops["Right"] = 1] = "Right"; + InjectedTextCursorStops[InjectedTextCursorStops["Left"] = 2] = "Left"; + InjectedTextCursorStops[InjectedTextCursorStops["None"] = 3] = "None"; +})(InjectedTextCursorStops || (InjectedTextCursorStops = {})); + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +function leftIsWordBounday(wordSeparators, text, textLength, matchStartIndex, matchLength) { + if (matchStartIndex === 0) { + // Match starts at start of string + return true; + } + const charBefore = text.charCodeAt(matchStartIndex - 1); + if (wordSeparators.get(charBefore) !== 0 /* WordCharacterClass.Regular */) { + // The character before the match is a word separator + return true; + } + if (charBefore === 13 /* CharCode.CarriageReturn */ || charBefore === 10 /* CharCode.LineFeed */) { + // The character before the match is line break or carriage return. + return true; + } + if (matchLength > 0) { + const firstCharInMatch = text.charCodeAt(matchStartIndex); + if (wordSeparators.get(firstCharInMatch) !== 0 /* WordCharacterClass.Regular */) { + // The first character inside the match is a word separator + return true; + } + } + return false; +} +function rightIsWordBounday(wordSeparators, text, textLength, matchStartIndex, matchLength) { + if (matchStartIndex + matchLength === textLength) { + // Match ends at end of string + return true; + } + const charAfter = text.charCodeAt(matchStartIndex + matchLength); + if (wordSeparators.get(charAfter) !== 0 /* WordCharacterClass.Regular */) { + // The character after the match is a word separator + return true; + } + if (charAfter === 13 /* CharCode.CarriageReturn */ || charAfter === 10 /* CharCode.LineFeed */) { + // The character after the match is line break or carriage return. + return true; + } + if (matchLength > 0) { + const lastCharInMatch = text.charCodeAt(matchStartIndex + matchLength - 1); + if (wordSeparators.get(lastCharInMatch) !== 0 /* WordCharacterClass.Regular */) { + // The last character in the match is a word separator + return true; + } + } + return false; +} +function isValidMatch(wordSeparators, text, textLength, matchStartIndex, matchLength) { + return (leftIsWordBounday(wordSeparators, text, textLength, matchStartIndex, matchLength) + && rightIsWordBounday(wordSeparators, text, textLength, matchStartIndex, matchLength)); +} +class Searcher { + constructor(wordSeparators, searchRegex) { + this._wordSeparators = wordSeparators; + this._searchRegex = searchRegex; + this._prevMatchStartIndex = -1; + this._prevMatchLength = 0; + } + reset(lastIndex) { + this._searchRegex.lastIndex = lastIndex; + this._prevMatchStartIndex = -1; + this._prevMatchLength = 0; + } + next(text) { + const textLength = text.length; + let m; + do { + if (this._prevMatchStartIndex + this._prevMatchLength === textLength) { + // Reached the end of the line + return null; + } + m = this._searchRegex.exec(text); + if (!m) { + return null; + } + const matchStartIndex = m.index; + const matchLength = m[0].length; + if (matchStartIndex === this._prevMatchStartIndex && matchLength === this._prevMatchLength) { + if (matchLength === 0) { + // the search result is an empty string and won't advance `regex.lastIndex`, so `regex.exec` will stuck here + // we attempt to recover from that by advancing by two if surrogate pair found and by one otherwise + if (getNextCodePoint(text, textLength, this._searchRegex.lastIndex) > 0xFFFF) { + this._searchRegex.lastIndex += 2; + } + else { + this._searchRegex.lastIndex += 1; + } + continue; + } + // Exit early if the regex matches the same range twice + return null; + } + this._prevMatchStartIndex = matchStartIndex; + this._prevMatchLength = matchLength; + if (!this._wordSeparators || isValidMatch(this._wordSeparators, text, textLength, matchStartIndex, matchLength)) { + return m; + } + } while (m); + return null; + } +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +function assertNever(value, message = 'Unreachable') { + throw new Error(message); +} +/** + * condition must be side-effect free! + */ +function assertFn(condition) { + if (!condition()) { + // eslint-disable-next-line no-debugger + debugger; + // Reevaluate `condition` again to make debugging easier + condition(); + onUnexpectedError(new BugIndicatingError('Assertion Failed')); + } +} +function checkAdjacentItems(items, predicate) { + let i = 0; + while (i < items.length - 1) { + const a = items[i]; + const b = items[i + 1]; + if (!predicate(a, b)) { + return false; + } + i++; + } + return true; +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +class UnicodeTextModelHighlighter { + static computeUnicodeHighlights(model, options, range) { + const startLine = range ? range.startLineNumber : 1; + const endLine = range ? range.endLineNumber : model.getLineCount(); + const codePointHighlighter = new CodePointHighlighter(options); + const candidates = codePointHighlighter.getCandidateCodePoints(); + let regex; + if (candidates === 'allNonBasicAscii') { + regex = new RegExp('[^\\t\\n\\r\\x20-\\x7E]', 'g'); + } + else { + regex = new RegExp(`${buildRegExpCharClassExpr(Array.from(candidates))}`, 'g'); + } + const searcher = new Searcher(null, regex); + const ranges = []; + let hasMore = false; + let m; + let ambiguousCharacterCount = 0; + let invisibleCharacterCount = 0; + let nonBasicAsciiCharacterCount = 0; + forLoop: for (let lineNumber = startLine, lineCount = endLine; lineNumber <= lineCount; lineNumber++) { + const lineContent = model.getLineContent(lineNumber); + const lineLength = lineContent.length; + // Reset regex to search from the beginning + searcher.reset(0); + do { + m = searcher.next(lineContent); + if (m) { + let startIndex = m.index; + let endIndex = m.index + m[0].length; + // Extend range to entire code point + if (startIndex > 0) { + const charCodeBefore = lineContent.charCodeAt(startIndex - 1); + if (isHighSurrogate(charCodeBefore)) { + startIndex--; + } + } + if (endIndex + 1 < lineLength) { + const charCodeBefore = lineContent.charCodeAt(endIndex - 1); + if (isHighSurrogate(charCodeBefore)) { + endIndex++; + } + } + const str = lineContent.substring(startIndex, endIndex); + let word = getWordAtText(startIndex + 1, DEFAULT_WORD_REGEXP, lineContent, 0); + if (word && word.endColumn <= startIndex + 1) { + // The word does not include the problematic character, ignore the word + word = null; + } + const highlightReason = codePointHighlighter.shouldHighlightNonBasicASCII(str, word ? word.word : null); + if (highlightReason !== 0 /* SimpleHighlightReason.None */) { + if (highlightReason === 3 /* SimpleHighlightReason.Ambiguous */) { + ambiguousCharacterCount++; + } + else if (highlightReason === 2 /* SimpleHighlightReason.Invisible */) { + invisibleCharacterCount++; + } + else if (highlightReason === 1 /* SimpleHighlightReason.NonBasicASCII */) { + nonBasicAsciiCharacterCount++; + } + else { + assertNever(); + } + const MAX_RESULT_LENGTH = 1000; + if (ranges.length >= MAX_RESULT_LENGTH) { + hasMore = true; + break forLoop; + } + ranges.push(new Range(lineNumber, startIndex + 1, lineNumber, endIndex + 1)); + } + } + } while (m); + } + return { + ranges, + hasMore, + ambiguousCharacterCount, + invisibleCharacterCount, + nonBasicAsciiCharacterCount + }; + } + static computeUnicodeHighlightReason(char, options) { + const codePointHighlighter = new CodePointHighlighter(options); + const reason = codePointHighlighter.shouldHighlightNonBasicASCII(char, null); + switch (reason) { + case 0 /* SimpleHighlightReason.None */: + return null; + case 2 /* SimpleHighlightReason.Invisible */: + return { kind: 1 /* UnicodeHighlighterReasonKind.Invisible */ }; + case 3 /* SimpleHighlightReason.Ambiguous */: { + const codePoint = char.codePointAt(0); + const primaryConfusable = codePointHighlighter.ambiguousCharacters.getPrimaryConfusable(codePoint); + const notAmbiguousInLocales = AmbiguousCharacters.getLocales().filter((l) => !AmbiguousCharacters.getInstance(new Set([...options.allowedLocales, l])).isAmbiguous(codePoint)); + return { kind: 0 /* UnicodeHighlighterReasonKind.Ambiguous */, confusableWith: String.fromCodePoint(primaryConfusable), notAmbiguousInLocales }; + } + case 1 /* SimpleHighlightReason.NonBasicASCII */: + return { kind: 2 /* UnicodeHighlighterReasonKind.NonBasicAscii */ }; + } + } +} +function buildRegExpCharClassExpr(codePoints, flags) { + const src = `[${escapeRegExpCharacters(codePoints.map((i) => String.fromCodePoint(i)).join(''))}]`; + return src; +} +class CodePointHighlighter { + constructor(options) { + this.options = options; + this.allowedCodePoints = new Set(options.allowedCodePoints); + this.ambiguousCharacters = AmbiguousCharacters.getInstance(new Set(options.allowedLocales)); + } + getCandidateCodePoints() { + if (this.options.nonBasicASCII) { + return 'allNonBasicAscii'; + } + const set = new Set(); + if (this.options.invisibleCharacters) { + for (const cp of InvisibleCharacters.codePoints) { + if (!isAllowedInvisibleCharacter(String.fromCodePoint(cp))) { + set.add(cp); + } + } + } + if (this.options.ambiguousCharacters) { + for (const cp of this.ambiguousCharacters.getConfusableCodePoints()) { + set.add(cp); + } + } + for (const cp of this.allowedCodePoints) { + set.delete(cp); + } + return set; + } + shouldHighlightNonBasicASCII(character, wordContext) { + const codePoint = character.codePointAt(0); + if (this.allowedCodePoints.has(codePoint)) { + return 0 /* SimpleHighlightReason.None */; + } + if (this.options.nonBasicASCII) { + return 1 /* SimpleHighlightReason.NonBasicASCII */; + } + let hasBasicASCIICharacters = false; + let hasNonConfusableNonBasicAsciiCharacter = false; + if (wordContext) { + for (const char of wordContext) { + const codePoint = char.codePointAt(0); + const isBasicASCII$1 = isBasicASCII(char); + hasBasicASCIICharacters = hasBasicASCIICharacters || isBasicASCII$1; + if (!isBasicASCII$1 && + !this.ambiguousCharacters.isAmbiguous(codePoint) && + !InvisibleCharacters.isInvisibleCharacter(codePoint)) { + hasNonConfusableNonBasicAsciiCharacter = true; + } + } + } + if ( + /* Don't allow mixing weird looking characters with ASCII */ !hasBasicASCIICharacters && + /* Is there an obviously weird looking character? */ hasNonConfusableNonBasicAsciiCharacter) { + return 0 /* SimpleHighlightReason.None */; + } + if (this.options.invisibleCharacters) { + // TODO check for emojis + if (!isAllowedInvisibleCharacter(character) && InvisibleCharacters.isInvisibleCharacter(codePoint)) { + return 2 /* SimpleHighlightReason.Invisible */; + } + } + if (this.options.ambiguousCharacters) { + if (this.ambiguousCharacters.isAmbiguous(codePoint)) { + return 3 /* SimpleHighlightReason.Ambiguous */; + } + } + return 0 /* SimpleHighlightReason.None */; + } +} +function isAllowedInvisibleCharacter(character) { + return character === ' ' || character === '\n' || character === '\t'; +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +class LinesDiff { + constructor(changes, + /** + * Sorted by original line ranges. + * The original line ranges and the modified line ranges must be disjoint (but can be touching). + */ + moves, + /** + * Indicates if the time out was reached. + * In that case, the diffs might be an approximation and the user should be asked to rerun the diff with more time. + */ + hitTimeout) { + this.changes = changes; + this.moves = moves; + this.hitTimeout = hitTimeout; + } +} +class MovedText { + constructor(lineRangeMapping, changes) { + this.lineRangeMapping = lineRangeMapping; + this.changes = changes; + } +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +/** + * A range of offsets (0-based). +*/ +class OffsetRange { + static addRange(range, sortedRanges) { + let i = 0; + while (i < sortedRanges.length && sortedRanges[i].endExclusive < range.start) { + i++; + } + let j = i; + while (j < sortedRanges.length && sortedRanges[j].start <= range.endExclusive) { + j++; + } + if (i === j) { + sortedRanges.splice(i, 0, range); + } + else { + const start = Math.min(range.start, sortedRanges[i].start); + const end = Math.max(range.endExclusive, sortedRanges[j - 1].endExclusive); + sortedRanges.splice(i, j - i, new OffsetRange(start, end)); + } + } + static tryCreate(start, endExclusive) { + if (start > endExclusive) { + return undefined; + } + return new OffsetRange(start, endExclusive); + } + static ofLength(length) { + return new OffsetRange(0, length); + } + static ofStartAndLength(start, length) { + return new OffsetRange(start, start + length); + } + constructor(start, endExclusive) { + this.start = start; + this.endExclusive = endExclusive; + if (start > endExclusive) { + throw new BugIndicatingError(`Invalid range: ${this.toString()}`); + } + } + get isEmpty() { + return this.start === this.endExclusive; + } + delta(offset) { + return new OffsetRange(this.start + offset, this.endExclusive + offset); + } + deltaStart(offset) { + return new OffsetRange(this.start + offset, this.endExclusive); + } + deltaEnd(offset) { + return new OffsetRange(this.start, this.endExclusive + offset); + } + get length() { + return this.endExclusive - this.start; + } + toString() { + return `[${this.start}, ${this.endExclusive})`; + } + equals(other) { + return this.start === other.start && this.endExclusive === other.endExclusive; + } + containsRange(other) { + return this.start <= other.start && other.endExclusive <= this.endExclusive; + } + contains(offset) { + return this.start <= offset && offset < this.endExclusive; + } + /** + * for all numbers n: range1.contains(n) or range2.contains(n) => range1.join(range2).contains(n) + * The joined range is the smallest range that contains both ranges. + */ + join(other) { + return new OffsetRange(Math.min(this.start, other.start), Math.max(this.endExclusive, other.endExclusive)); + } + /** + * for all numbers n: range1.contains(n) and range2.contains(n) <=> range1.intersect(range2).contains(n) + * + * The resulting range is empty if the ranges do not intersect, but touch. + * If the ranges don't even touch, the result is undefined. + */ + intersect(other) { + const start = Math.max(this.start, other.start); + const end = Math.min(this.endExclusive, other.endExclusive); + if (start <= end) { + return new OffsetRange(start, end); + } + return undefined; + } + isBefore(other) { + return this.endExclusive <= other.start; + } + isAfter(other) { + return this.start >= other.endExclusive; + } + slice(arr) { + return arr.slice(this.start, this.endExclusive); + } + /** + * Returns the given value if it is contained in this instance, otherwise the closest value that is contained. + * The range must not be empty. + */ + clip(value) { + if (this.isEmpty) { + throw new BugIndicatingError(`Invalid clipping range: ${this.toString()}`); + } + return Math.max(this.start, Math.min(this.endExclusive - 1, value)); + } + /** + * Returns `r := value + k * length` such that `r` is contained in this range. + * The range must not be empty. + * + * E.g. `[5, 10).clipCyclic(10) === 5`, `[5, 10).clipCyclic(11) === 6` and `[5, 10).clipCyclic(4) === 9`. + */ + clipCyclic(value) { + if (this.isEmpty) { + throw new BugIndicatingError(`Invalid clipping range: ${this.toString()}`); + } + if (value < this.start) { + return this.endExclusive - ((this.start - value) % this.length); + } + if (value >= this.endExclusive) { + return this.start + ((value - this.start) % this.length); + } + return value; + } + forEach(f) { + for (let i = this.start; i < this.endExclusive; i++) { + f(i); + } + } +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +/** + * Finds the last item where predicate is true using binary search. + * `predicate` must be monotonous, i.e. `arr.map(predicate)` must be like `[true, ..., true, false, ..., false]`! + * + * @returns `undefined` if no item matches, otherwise the last item that matches the predicate. + */ +function findLastMonotonous(array, predicate) { + const idx = findLastIdxMonotonous(array, predicate); + return idx === -1 ? undefined : array[idx]; +} +/** + * Finds the last item where predicate is true using binary search. + * `predicate` must be monotonous, i.e. `arr.map(predicate)` must be like `[true, ..., true, false, ..., false]`! + * + * @returns `startIdx - 1` if predicate is false for all items, otherwise the index of the last item that matches the predicate. + */ +function findLastIdxMonotonous(array, predicate, startIdx = 0, endIdxEx = array.length) { + let i = startIdx; + let j = endIdxEx; + while (i < j) { + const k = Math.floor((i + j) / 2); + if (predicate(array[k])) { + i = k + 1; + } + else { + j = k; + } + } + return i - 1; +} +/** + * Finds the first item where predicate is true using binary search. + * `predicate` must be monotonous, i.e. `arr.map(predicate)` must be like `[false, ..., false, true, ..., true]`! + * + * @returns `undefined` if no item matches, otherwise the first item that matches the predicate. + */ +function findFirstMonotonous(array, predicate) { + const idx = findFirstIdxMonotonousOrArrLen(array, predicate); + return idx === array.length ? undefined : array[idx]; +} +/** + * Finds the first item where predicate is true using binary search. + * `predicate` must be monotonous, i.e. `arr.map(predicate)` must be like `[false, ..., false, true, ..., true]`! + * + * @returns `endIdxEx` if predicate is false for all items, otherwise the index of the first item that matches the predicate. + */ +function findFirstIdxMonotonousOrArrLen(array, predicate, startIdx = 0, endIdxEx = array.length) { + let i = startIdx; + let j = endIdxEx; + while (i < j) { + const k = Math.floor((i + j) / 2); + if (predicate(array[k])) { + j = k; + } + else { + i = k + 1; + } + } + return i; +} +/** + * Use this when + * * You have a sorted array + * * You query this array with a monotonous predicate to find the last item that has a certain property. + * * You query this array multiple times with monotonous predicates that get weaker and weaker. + */ +class MonotonousArray { + constructor(_array) { + this._array = _array; + this._findLastMonotonousLastIdx = 0; + } + /** + * The predicate must be monotonous, i.e. `arr.map(predicate)` must be like `[true, ..., true, false, ..., false]`! + * For subsequent calls, current predicate must be weaker than (or equal to) the previous predicate, i.e. more entries must be `true`. + */ + findLastMonotonous(predicate) { + if (MonotonousArray.assertInvariants) { + if (this._prevFindLastPredicate) { + for (const item of this._array) { + if (this._prevFindLastPredicate(item) && !predicate(item)) { + throw new Error('MonotonousArray: current predicate must be weaker than (or equal to) the previous predicate.'); + } + } + } + this._prevFindLastPredicate = predicate; + } + const idx = findLastIdxMonotonous(this._array, predicate, this._findLastMonotonousLastIdx); + this._findLastMonotonousLastIdx = idx + 1; + return idx === -1 ? undefined : this._array[idx]; + } +} +MonotonousArray.assertInvariants = false; + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +/** + * A range of lines (1-based). + */ +class LineRange { + static fromRange(range) { + return new LineRange(range.startLineNumber, range.endLineNumber); + } + static fromRangeInclusive(range) { + return new LineRange(range.startLineNumber, range.endLineNumber + 1); + } + /** + * @param lineRanges An array of sorted line ranges. + */ + static joinMany(lineRanges) { + if (lineRanges.length === 0) { + return []; + } + let result = new LineRangeSet(lineRanges[0].slice()); + for (let i = 1; i < lineRanges.length; i++) { + result = result.getUnion(new LineRangeSet(lineRanges[i].slice())); + } + return result.ranges; + } + static ofLength(startLineNumber, length) { + return new LineRange(startLineNumber, startLineNumber + length); + } + /** + * @internal + */ + static deserialize(lineRange) { + return new LineRange(lineRange[0], lineRange[1]); + } + constructor(startLineNumber, endLineNumberExclusive) { + if (startLineNumber > endLineNumberExclusive) { + throw new BugIndicatingError(`startLineNumber ${startLineNumber} cannot be after endLineNumberExclusive ${endLineNumberExclusive}`); + } + this.startLineNumber = startLineNumber; + this.endLineNumberExclusive = endLineNumberExclusive; + } + /** + * Indicates if this line range contains the given line number. + */ + contains(lineNumber) { + return this.startLineNumber <= lineNumber && lineNumber < this.endLineNumberExclusive; + } + /** + * Indicates if this line range is empty. + */ + get isEmpty() { + return this.startLineNumber === this.endLineNumberExclusive; + } + /** + * Moves this line range by the given offset of line numbers. + */ + delta(offset) { + return new LineRange(this.startLineNumber + offset, this.endLineNumberExclusive + offset); + } + deltaLength(offset) { + return new LineRange(this.startLineNumber, this.endLineNumberExclusive + offset); + } + /** + * The number of lines this line range spans. + */ + get length() { + return this.endLineNumberExclusive - this.startLineNumber; + } + /** + * Creates a line range that combines this and the given line range. + */ + join(other) { + return new LineRange(Math.min(this.startLineNumber, other.startLineNumber), Math.max(this.endLineNumberExclusive, other.endLineNumberExclusive)); + } + toString() { + return `[${this.startLineNumber},${this.endLineNumberExclusive})`; + } + /** + * The resulting range is empty if the ranges do not intersect, but touch. + * If the ranges don't even touch, the result is undefined. + */ + intersect(other) { + const startLineNumber = Math.max(this.startLineNumber, other.startLineNumber); + const endLineNumberExclusive = Math.min(this.endLineNumberExclusive, other.endLineNumberExclusive); + if (startLineNumber <= endLineNumberExclusive) { + return new LineRange(startLineNumber, endLineNumberExclusive); + } + return undefined; + } + intersectsStrict(other) { + return this.startLineNumber < other.endLineNumberExclusive && other.startLineNumber < this.endLineNumberExclusive; + } + overlapOrTouch(other) { + return this.startLineNumber <= other.endLineNumberExclusive && other.startLineNumber <= this.endLineNumberExclusive; + } + equals(b) { + return this.startLineNumber === b.startLineNumber && this.endLineNumberExclusive === b.endLineNumberExclusive; + } + toInclusiveRange() { + if (this.isEmpty) { + return null; + } + return new Range(this.startLineNumber, 1, this.endLineNumberExclusive - 1, Number.MAX_SAFE_INTEGER); + } + toExclusiveRange() { + return new Range(this.startLineNumber, 1, this.endLineNumberExclusive, 1); + } + mapToLineArray(f) { + const result = []; + for (let lineNumber = this.startLineNumber; lineNumber < this.endLineNumberExclusive; lineNumber++) { + result.push(f(lineNumber)); + } + return result; + } + forEach(f) { + for (let lineNumber = this.startLineNumber; lineNumber < this.endLineNumberExclusive; lineNumber++) { + f(lineNumber); + } + } + /** + * @internal + */ + serialize() { + return [this.startLineNumber, this.endLineNumberExclusive]; + } + includes(lineNumber) { + return this.startLineNumber <= lineNumber && lineNumber < this.endLineNumberExclusive; + } + /** + * Converts this 1-based line range to a 0-based offset range (subtracts 1!). + * @internal + */ + toOffsetRange() { + return new OffsetRange(this.startLineNumber - 1, this.endLineNumberExclusive - 1); + } +} +class LineRangeSet { + constructor( + /** + * Sorted by start line number. + * No two line ranges are touching or intersecting. + */ + _normalizedRanges = []) { + this._normalizedRanges = _normalizedRanges; + } + get ranges() { + return this._normalizedRanges; + } + addRange(range) { + if (range.length === 0) { + return; + } + // Idea: Find joinRange such that: + // replaceRange = _normalizedRanges.replaceRange(joinRange, range.joinAll(joinRange.map(idx => this._normalizedRanges[idx]))) + // idx of first element that touches range or that is after range + const joinRangeStartIdx = findFirstIdxMonotonousOrArrLen(this._normalizedRanges, r => r.endLineNumberExclusive >= range.startLineNumber); + // idx of element after { last element that touches range or that is before range } + const joinRangeEndIdxExclusive = findLastIdxMonotonous(this._normalizedRanges, r => r.startLineNumber <= range.endLineNumberExclusive) + 1; + if (joinRangeStartIdx === joinRangeEndIdxExclusive) { + // If there is no element that touches range, then joinRangeStartIdx === joinRangeEndIdxExclusive and that value is the index of the element after range + this._normalizedRanges.splice(joinRangeStartIdx, 0, range); + } + else if (joinRangeStartIdx === joinRangeEndIdxExclusive - 1) { + // Else, there is an element that touches range and in this case it is both the first and last element. Thus we can replace it + const joinRange = this._normalizedRanges[joinRangeStartIdx]; + this._normalizedRanges[joinRangeStartIdx] = joinRange.join(range); + } + else { + // First and last element are different - we need to replace the entire range + const joinRange = this._normalizedRanges[joinRangeStartIdx].join(this._normalizedRanges[joinRangeEndIdxExclusive - 1]).join(range); + this._normalizedRanges.splice(joinRangeStartIdx, joinRangeEndIdxExclusive - joinRangeStartIdx, joinRange); + } + } + contains(lineNumber) { + const rangeThatStartsBeforeEnd = findLastMonotonous(this._normalizedRanges, r => r.startLineNumber <= lineNumber); + return !!rangeThatStartsBeforeEnd && rangeThatStartsBeforeEnd.endLineNumberExclusive > lineNumber; + } + intersects(range) { + const rangeThatStartsBeforeEnd = findLastMonotonous(this._normalizedRanges, r => r.startLineNumber < range.endLineNumberExclusive); + return !!rangeThatStartsBeforeEnd && rangeThatStartsBeforeEnd.endLineNumberExclusive > range.startLineNumber; + } + getUnion(other) { + if (this._normalizedRanges.length === 0) { + return other; + } + if (other._normalizedRanges.length === 0) { + return this; + } + const result = []; + let i1 = 0; + let i2 = 0; + let current = null; + while (i1 < this._normalizedRanges.length || i2 < other._normalizedRanges.length) { + let next = null; + if (i1 < this._normalizedRanges.length && i2 < other._normalizedRanges.length) { + const lineRange1 = this._normalizedRanges[i1]; + const lineRange2 = other._normalizedRanges[i2]; + if (lineRange1.startLineNumber < lineRange2.startLineNumber) { + next = lineRange1; + i1++; + } + else { + next = lineRange2; + i2++; + } + } + else if (i1 < this._normalizedRanges.length) { + next = this._normalizedRanges[i1]; + i1++; + } + else { + next = other._normalizedRanges[i2]; + i2++; + } + if (current === null) { + current = next; + } + else { + if (current.endLineNumberExclusive >= next.startLineNumber) { + // merge + current = new LineRange(current.startLineNumber, Math.max(current.endLineNumberExclusive, next.endLineNumberExclusive)); + } + else { + // push + result.push(current); + current = next; + } + } + } + if (current !== null) { + result.push(current); + } + return new LineRangeSet(result); + } + /** + * Subtracts all ranges in this set from `range` and returns the result. + */ + subtractFrom(range) { + // idx of first element that touches range or that is after range + const joinRangeStartIdx = findFirstIdxMonotonousOrArrLen(this._normalizedRanges, r => r.endLineNumberExclusive >= range.startLineNumber); + // idx of element after { last element that touches range or that is before range } + const joinRangeEndIdxExclusive = findLastIdxMonotonous(this._normalizedRanges, r => r.startLineNumber <= range.endLineNumberExclusive) + 1; + if (joinRangeStartIdx === joinRangeEndIdxExclusive) { + return new LineRangeSet([range]); + } + const result = []; + let startLineNumber = range.startLineNumber; + for (let i = joinRangeStartIdx; i < joinRangeEndIdxExclusive; i++) { + const r = this._normalizedRanges[i]; + if (r.startLineNumber > startLineNumber) { + result.push(new LineRange(startLineNumber, r.startLineNumber)); + } + startLineNumber = r.endLineNumberExclusive; + } + if (startLineNumber < range.endLineNumberExclusive) { + result.push(new LineRange(startLineNumber, range.endLineNumberExclusive)); + } + return new LineRangeSet(result); + } + toString() { + return this._normalizedRanges.map(r => r.toString()).join(', '); + } + getIntersection(other) { + const result = []; + let i1 = 0; + let i2 = 0; + while (i1 < this._normalizedRanges.length && i2 < other._normalizedRanges.length) { + const r1 = this._normalizedRanges[i1]; + const r2 = other._normalizedRanges[i2]; + const i = r1.intersect(r2); + if (i && !i.isEmpty) { + result.push(i); + } + if (r1.endLineNumberExclusive < r2.endLineNumberExclusive) { + i1++; + } + else { + i2++; + } + } + return new LineRangeSet(result); + } + getWithDelta(value) { + return new LineRangeSet(this._normalizedRanges.map(r => r.delta(value))); + } +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +/** + * Maps a line range in the original text model to a line range in the modified text model. + */ +class LineRangeMapping { + static inverse(mapping, originalLineCount, modifiedLineCount) { + const result = []; + let lastOriginalEndLineNumber = 1; + let lastModifiedEndLineNumber = 1; + for (const m of mapping) { + const r = new DetailedLineRangeMapping(new LineRange(lastOriginalEndLineNumber, m.original.startLineNumber), new LineRange(lastModifiedEndLineNumber, m.modified.startLineNumber), undefined); + if (!r.modified.isEmpty) { + result.push(r); + } + lastOriginalEndLineNumber = m.original.endLineNumberExclusive; + lastModifiedEndLineNumber = m.modified.endLineNumberExclusive; + } + const r = new DetailedLineRangeMapping(new LineRange(lastOriginalEndLineNumber, originalLineCount + 1), new LineRange(lastModifiedEndLineNumber, modifiedLineCount + 1), undefined); + if (!r.modified.isEmpty) { + result.push(r); + } + return result; + } + constructor(originalRange, modifiedRange) { + this.original = originalRange; + this.modified = modifiedRange; + } + toString() { + return `{${this.original.toString()}->${this.modified.toString()}}`; + } + flip() { + return new LineRangeMapping(this.modified, this.original); + } + join(other) { + return new LineRangeMapping(this.original.join(other.original), this.modified.join(other.modified)); + } +} +/** + * Maps a line range in the original text model to a line range in the modified text model. + * Also contains inner range mappings. + */ +class DetailedLineRangeMapping extends LineRangeMapping { + constructor(originalRange, modifiedRange, innerChanges) { + super(originalRange, modifiedRange); + this.innerChanges = innerChanges; + } + flip() { + var _a; + return new DetailedLineRangeMapping(this.modified, this.original, (_a = this.innerChanges) === null || _a === void 0 ? void 0 : _a.map(c => c.flip())); + } +} +/** + * Maps a range in the original text model to a range in the modified text model. + */ +class RangeMapping { + constructor(originalRange, modifiedRange) { + this.originalRange = originalRange; + this.modifiedRange = modifiedRange; + } + toString() { + return `{${this.originalRange.toString()}->${this.modifiedRange.toString()}}`; + } + flip() { + return new RangeMapping(this.modifiedRange, this.originalRange); + } +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +const MINIMUM_MATCHING_CHARACTER_LENGTH = 3; +class LegacyLinesDiffComputer { + computeDiff(originalLines, modifiedLines, options) { + var _a; + const diffComputer = new DiffComputer(originalLines, modifiedLines, { + maxComputationTime: options.maxComputationTimeMs, + shouldIgnoreTrimWhitespace: options.ignoreTrimWhitespace, + shouldComputeCharChanges: true, + shouldMakePrettyDiff: true, + shouldPostProcessCharChanges: true, + }); + const result = diffComputer.computeDiff(); + const changes = []; + let lastChange = null; + for (const c of result.changes) { + let originalRange; + if (c.originalEndLineNumber === 0) { + // Insertion + originalRange = new LineRange(c.originalStartLineNumber + 1, c.originalStartLineNumber + 1); + } + else { + originalRange = new LineRange(c.originalStartLineNumber, c.originalEndLineNumber + 1); + } + let modifiedRange; + if (c.modifiedEndLineNumber === 0) { + // Deletion + modifiedRange = new LineRange(c.modifiedStartLineNumber + 1, c.modifiedStartLineNumber + 1); + } + else { + modifiedRange = new LineRange(c.modifiedStartLineNumber, c.modifiedEndLineNumber + 1); + } + let change = new DetailedLineRangeMapping(originalRange, modifiedRange, (_a = c.charChanges) === null || _a === void 0 ? void 0 : _a.map(c => new RangeMapping(new Range(c.originalStartLineNumber, c.originalStartColumn, c.originalEndLineNumber, c.originalEndColumn), new Range(c.modifiedStartLineNumber, c.modifiedStartColumn, c.modifiedEndLineNumber, c.modifiedEndColumn)))); + if (lastChange) { + if (lastChange.modified.endLineNumberExclusive === change.modified.startLineNumber + || lastChange.original.endLineNumberExclusive === change.original.startLineNumber) { + // join touching diffs. Probably moving diffs up/down in the algorithm causes touching diffs. + change = new DetailedLineRangeMapping(lastChange.original.join(change.original), lastChange.modified.join(change.modified), lastChange.innerChanges && change.innerChanges ? + lastChange.innerChanges.concat(change.innerChanges) : undefined); + changes.pop(); + } + } + changes.push(change); + lastChange = change; + } + assertFn(() => { + return checkAdjacentItems(changes, (m1, m2) => m2.original.startLineNumber - m1.original.endLineNumberExclusive === m2.modified.startLineNumber - m1.modified.endLineNumberExclusive && + // There has to be an unchanged line in between (otherwise both diffs should have been joined) + m1.original.endLineNumberExclusive < m2.original.startLineNumber && + m1.modified.endLineNumberExclusive < m2.modified.startLineNumber); + }); + return new LinesDiff(changes, [], result.quitEarly); + } +} +function computeDiff(originalSequence, modifiedSequence, continueProcessingPredicate, pretty) { + const diffAlgo = new LcsDiff(originalSequence, modifiedSequence, continueProcessingPredicate); + return diffAlgo.ComputeDiff(pretty); +} +let LineSequence$1 = class LineSequence { + constructor(lines) { + const startColumns = []; + const endColumns = []; + for (let i = 0, length = lines.length; i < length; i++) { + startColumns[i] = getFirstNonBlankColumn(lines[i], 1); + endColumns[i] = getLastNonBlankColumn(lines[i], 1); + } + this.lines = lines; + this._startColumns = startColumns; + this._endColumns = endColumns; + } + getElements() { + const elements = []; + for (let i = 0, len = this.lines.length; i < len; i++) { + elements[i] = this.lines[i].substring(this._startColumns[i] - 1, this._endColumns[i] - 1); + } + return elements; + } + getStrictElement(index) { + return this.lines[index]; + } + getStartLineNumber(i) { + return i + 1; + } + getEndLineNumber(i) { + return i + 1; + } + createCharSequence(shouldIgnoreTrimWhitespace, startIndex, endIndex) { + const charCodes = []; + const lineNumbers = []; + const columns = []; + let len = 0; + for (let index = startIndex; index <= endIndex; index++) { + const lineContent = this.lines[index]; + const startColumn = (shouldIgnoreTrimWhitespace ? this._startColumns[index] : 1); + const endColumn = (shouldIgnoreTrimWhitespace ? this._endColumns[index] : lineContent.length + 1); + for (let col = startColumn; col < endColumn; col++) { + charCodes[len] = lineContent.charCodeAt(col - 1); + lineNumbers[len] = index + 1; + columns[len] = col; + len++; + } + if (!shouldIgnoreTrimWhitespace && index < endIndex) { + // Add \n if trim whitespace is not ignored + charCodes[len] = 10 /* CharCode.LineFeed */; + lineNumbers[len] = index + 1; + columns[len] = lineContent.length + 1; + len++; + } + } + return new CharSequence(charCodes, lineNumbers, columns); + } +}; +class CharSequence { + constructor(charCodes, lineNumbers, columns) { + this._charCodes = charCodes; + this._lineNumbers = lineNumbers; + this._columns = columns; + } + toString() { + return ('[' + this._charCodes.map((s, idx) => (s === 10 /* CharCode.LineFeed */ ? '\\n' : String.fromCharCode(s)) + `-(${this._lineNumbers[idx]},${this._columns[idx]})`).join(', ') + ']'); + } + _assertIndex(index, arr) { + if (index < 0 || index >= arr.length) { + throw new Error(`Illegal index`); + } + } + getElements() { + return this._charCodes; + } + getStartLineNumber(i) { + if (i > 0 && i === this._lineNumbers.length) { + // the start line number of the element after the last element + // is the end line number of the last element + return this.getEndLineNumber(i - 1); + } + this._assertIndex(i, this._lineNumbers); + return this._lineNumbers[i]; + } + getEndLineNumber(i) { + if (i === -1) { + // the end line number of the element before the first element + // is the start line number of the first element + return this.getStartLineNumber(i + 1); + } + this._assertIndex(i, this._lineNumbers); + if (this._charCodes[i] === 10 /* CharCode.LineFeed */) { + return this._lineNumbers[i] + 1; + } + return this._lineNumbers[i]; + } + getStartColumn(i) { + if (i > 0 && i === this._columns.length) { + // the start column of the element after the last element + // is the end column of the last element + return this.getEndColumn(i - 1); + } + this._assertIndex(i, this._columns); + return this._columns[i]; + } + getEndColumn(i) { + if (i === -1) { + // the end column of the element before the first element + // is the start column of the first element + return this.getStartColumn(i + 1); + } + this._assertIndex(i, this._columns); + if (this._charCodes[i] === 10 /* CharCode.LineFeed */) { + return 1; + } + return this._columns[i] + 1; + } +} +class CharChange { + constructor(originalStartLineNumber, originalStartColumn, originalEndLineNumber, originalEndColumn, modifiedStartLineNumber, modifiedStartColumn, modifiedEndLineNumber, modifiedEndColumn) { + this.originalStartLineNumber = originalStartLineNumber; + this.originalStartColumn = originalStartColumn; + this.originalEndLineNumber = originalEndLineNumber; + this.originalEndColumn = originalEndColumn; + this.modifiedStartLineNumber = modifiedStartLineNumber; + this.modifiedStartColumn = modifiedStartColumn; + this.modifiedEndLineNumber = modifiedEndLineNumber; + this.modifiedEndColumn = modifiedEndColumn; + } + static createFromDiffChange(diffChange, originalCharSequence, modifiedCharSequence) { + const originalStartLineNumber = originalCharSequence.getStartLineNumber(diffChange.originalStart); + const originalStartColumn = originalCharSequence.getStartColumn(diffChange.originalStart); + const originalEndLineNumber = originalCharSequence.getEndLineNumber(diffChange.originalStart + diffChange.originalLength - 1); + const originalEndColumn = originalCharSequence.getEndColumn(diffChange.originalStart + diffChange.originalLength - 1); + const modifiedStartLineNumber = modifiedCharSequence.getStartLineNumber(diffChange.modifiedStart); + const modifiedStartColumn = modifiedCharSequence.getStartColumn(diffChange.modifiedStart); + const modifiedEndLineNumber = modifiedCharSequence.getEndLineNumber(diffChange.modifiedStart + diffChange.modifiedLength - 1); + const modifiedEndColumn = modifiedCharSequence.getEndColumn(diffChange.modifiedStart + diffChange.modifiedLength - 1); + return new CharChange(originalStartLineNumber, originalStartColumn, originalEndLineNumber, originalEndColumn, modifiedStartLineNumber, modifiedStartColumn, modifiedEndLineNumber, modifiedEndColumn); + } +} +function postProcessCharChanges(rawChanges) { + if (rawChanges.length <= 1) { + return rawChanges; + } + const result = [rawChanges[0]]; + let prevChange = result[0]; + for (let i = 1, len = rawChanges.length; i < len; i++) { + const currChange = rawChanges[i]; + const originalMatchingLength = currChange.originalStart - (prevChange.originalStart + prevChange.originalLength); + const modifiedMatchingLength = currChange.modifiedStart - (prevChange.modifiedStart + prevChange.modifiedLength); + // Both of the above should be equal, but the continueProcessingPredicate may prevent this from being true + const matchingLength = Math.min(originalMatchingLength, modifiedMatchingLength); + if (matchingLength < MINIMUM_MATCHING_CHARACTER_LENGTH) { + // Merge the current change into the previous one + prevChange.originalLength = (currChange.originalStart + currChange.originalLength) - prevChange.originalStart; + prevChange.modifiedLength = (currChange.modifiedStart + currChange.modifiedLength) - prevChange.modifiedStart; + } + else { + // Add the current change + result.push(currChange); + prevChange = currChange; + } + } + return result; +} +class LineChange { + constructor(originalStartLineNumber, originalEndLineNumber, modifiedStartLineNumber, modifiedEndLineNumber, charChanges) { + this.originalStartLineNumber = originalStartLineNumber; + this.originalEndLineNumber = originalEndLineNumber; + this.modifiedStartLineNumber = modifiedStartLineNumber; + this.modifiedEndLineNumber = modifiedEndLineNumber; + this.charChanges = charChanges; + } + static createFromDiffResult(shouldIgnoreTrimWhitespace, diffChange, originalLineSequence, modifiedLineSequence, continueCharDiff, shouldComputeCharChanges, shouldPostProcessCharChanges) { + let originalStartLineNumber; + let originalEndLineNumber; + let modifiedStartLineNumber; + let modifiedEndLineNumber; + let charChanges = undefined; + if (diffChange.originalLength === 0) { + originalStartLineNumber = originalLineSequence.getStartLineNumber(diffChange.originalStart) - 1; + originalEndLineNumber = 0; + } + else { + originalStartLineNumber = originalLineSequence.getStartLineNumber(diffChange.originalStart); + originalEndLineNumber = originalLineSequence.getEndLineNumber(diffChange.originalStart + diffChange.originalLength - 1); + } + if (diffChange.modifiedLength === 0) { + modifiedStartLineNumber = modifiedLineSequence.getStartLineNumber(diffChange.modifiedStart) - 1; + modifiedEndLineNumber = 0; + } + else { + modifiedStartLineNumber = modifiedLineSequence.getStartLineNumber(diffChange.modifiedStart); + modifiedEndLineNumber = modifiedLineSequence.getEndLineNumber(diffChange.modifiedStart + diffChange.modifiedLength - 1); + } + if (shouldComputeCharChanges && diffChange.originalLength > 0 && diffChange.originalLength < 20 && diffChange.modifiedLength > 0 && diffChange.modifiedLength < 20 && continueCharDiff()) { + // Compute character changes for diff chunks of at most 20 lines... + const originalCharSequence = originalLineSequence.createCharSequence(shouldIgnoreTrimWhitespace, diffChange.originalStart, diffChange.originalStart + diffChange.originalLength - 1); + const modifiedCharSequence = modifiedLineSequence.createCharSequence(shouldIgnoreTrimWhitespace, diffChange.modifiedStart, diffChange.modifiedStart + diffChange.modifiedLength - 1); + if (originalCharSequence.getElements().length > 0 && modifiedCharSequence.getElements().length > 0) { + let rawChanges = computeDiff(originalCharSequence, modifiedCharSequence, continueCharDiff, true).changes; + if (shouldPostProcessCharChanges) { + rawChanges = postProcessCharChanges(rawChanges); + } + charChanges = []; + for (let i = 0, length = rawChanges.length; i < length; i++) { + charChanges.push(CharChange.createFromDiffChange(rawChanges[i], originalCharSequence, modifiedCharSequence)); + } + } + } + return new LineChange(originalStartLineNumber, originalEndLineNumber, modifiedStartLineNumber, modifiedEndLineNumber, charChanges); + } +} +class DiffComputer { + constructor(originalLines, modifiedLines, opts) { + this.shouldComputeCharChanges = opts.shouldComputeCharChanges; + this.shouldPostProcessCharChanges = opts.shouldPostProcessCharChanges; + this.shouldIgnoreTrimWhitespace = opts.shouldIgnoreTrimWhitespace; + this.shouldMakePrettyDiff = opts.shouldMakePrettyDiff; + this.originalLines = originalLines; + this.modifiedLines = modifiedLines; + this.original = new LineSequence$1(originalLines); + this.modified = new LineSequence$1(modifiedLines); + this.continueLineDiff = createContinueProcessingPredicate(opts.maxComputationTime); + this.continueCharDiff = createContinueProcessingPredicate(opts.maxComputationTime === 0 ? 0 : Math.min(opts.maxComputationTime, 5000)); // never run after 5s for character changes... + } + computeDiff() { + if (this.original.lines.length === 1 && this.original.lines[0].length === 0) { + // empty original => fast path + if (this.modified.lines.length === 1 && this.modified.lines[0].length === 0) { + return { + quitEarly: false, + changes: [] + }; + } + return { + quitEarly: false, + changes: [{ + originalStartLineNumber: 1, + originalEndLineNumber: 1, + modifiedStartLineNumber: 1, + modifiedEndLineNumber: this.modified.lines.length, + charChanges: undefined + }] + }; + } + if (this.modified.lines.length === 1 && this.modified.lines[0].length === 0) { + // empty modified => fast path + return { + quitEarly: false, + changes: [{ + originalStartLineNumber: 1, + originalEndLineNumber: this.original.lines.length, + modifiedStartLineNumber: 1, + modifiedEndLineNumber: 1, + charChanges: undefined + }] + }; + } + const diffResult = computeDiff(this.original, this.modified, this.continueLineDiff, this.shouldMakePrettyDiff); + const rawChanges = diffResult.changes; + const quitEarly = diffResult.quitEarly; + // The diff is always computed with ignoring trim whitespace + // This ensures we get the prettiest diff + if (this.shouldIgnoreTrimWhitespace) { + const lineChanges = []; + for (let i = 0, length = rawChanges.length; i < length; i++) { + lineChanges.push(LineChange.createFromDiffResult(this.shouldIgnoreTrimWhitespace, rawChanges[i], this.original, this.modified, this.continueCharDiff, this.shouldComputeCharChanges, this.shouldPostProcessCharChanges)); + } + return { + quitEarly: quitEarly, + changes: lineChanges + }; + } + // Need to post-process and introduce changes where the trim whitespace is different + // Note that we are looping starting at -1 to also cover the lines before the first change + const result = []; + let originalLineIndex = 0; + let modifiedLineIndex = 0; + for (let i = -1 /* !!!! */, len = rawChanges.length; i < len; i++) { + const nextChange = (i + 1 < len ? rawChanges[i + 1] : null); + const originalStop = (nextChange ? nextChange.originalStart : this.originalLines.length); + const modifiedStop = (nextChange ? nextChange.modifiedStart : this.modifiedLines.length); + while (originalLineIndex < originalStop && modifiedLineIndex < modifiedStop) { + const originalLine = this.originalLines[originalLineIndex]; + const modifiedLine = this.modifiedLines[modifiedLineIndex]; + if (originalLine !== modifiedLine) { + // These lines differ only in trim whitespace + // Check the leading whitespace + { + let originalStartColumn = getFirstNonBlankColumn(originalLine, 1); + let modifiedStartColumn = getFirstNonBlankColumn(modifiedLine, 1); + while (originalStartColumn > 1 && modifiedStartColumn > 1) { + const originalChar = originalLine.charCodeAt(originalStartColumn - 2); + const modifiedChar = modifiedLine.charCodeAt(modifiedStartColumn - 2); + if (originalChar !== modifiedChar) { + break; + } + originalStartColumn--; + modifiedStartColumn--; + } + if (originalStartColumn > 1 || modifiedStartColumn > 1) { + this._pushTrimWhitespaceCharChange(result, originalLineIndex + 1, 1, originalStartColumn, modifiedLineIndex + 1, 1, modifiedStartColumn); + } + } + // Check the trailing whitespace + { + let originalEndColumn = getLastNonBlankColumn(originalLine, 1); + let modifiedEndColumn = getLastNonBlankColumn(modifiedLine, 1); + const originalMaxColumn = originalLine.length + 1; + const modifiedMaxColumn = modifiedLine.length + 1; + while (originalEndColumn < originalMaxColumn && modifiedEndColumn < modifiedMaxColumn) { + const originalChar = originalLine.charCodeAt(originalEndColumn - 1); + const modifiedChar = originalLine.charCodeAt(modifiedEndColumn - 1); + if (originalChar !== modifiedChar) { + break; + } + originalEndColumn++; + modifiedEndColumn++; + } + if (originalEndColumn < originalMaxColumn || modifiedEndColumn < modifiedMaxColumn) { + this._pushTrimWhitespaceCharChange(result, originalLineIndex + 1, originalEndColumn, originalMaxColumn, modifiedLineIndex + 1, modifiedEndColumn, modifiedMaxColumn); + } + } + } + originalLineIndex++; + modifiedLineIndex++; + } + if (nextChange) { + // Emit the actual change + result.push(LineChange.createFromDiffResult(this.shouldIgnoreTrimWhitespace, nextChange, this.original, this.modified, this.continueCharDiff, this.shouldComputeCharChanges, this.shouldPostProcessCharChanges)); + originalLineIndex += nextChange.originalLength; + modifiedLineIndex += nextChange.modifiedLength; + } + } + return { + quitEarly: quitEarly, + changes: result + }; + } + _pushTrimWhitespaceCharChange(result, originalLineNumber, originalStartColumn, originalEndColumn, modifiedLineNumber, modifiedStartColumn, modifiedEndColumn) { + if (this._mergeTrimWhitespaceCharChange(result, originalLineNumber, originalStartColumn, originalEndColumn, modifiedLineNumber, modifiedStartColumn, modifiedEndColumn)) { + // Merged into previous + return; + } + let charChanges = undefined; + if (this.shouldComputeCharChanges) { + charChanges = [new CharChange(originalLineNumber, originalStartColumn, originalLineNumber, originalEndColumn, modifiedLineNumber, modifiedStartColumn, modifiedLineNumber, modifiedEndColumn)]; + } + result.push(new LineChange(originalLineNumber, originalLineNumber, modifiedLineNumber, modifiedLineNumber, charChanges)); + } + _mergeTrimWhitespaceCharChange(result, originalLineNumber, originalStartColumn, originalEndColumn, modifiedLineNumber, modifiedStartColumn, modifiedEndColumn) { + const len = result.length; + if (len === 0) { + return false; + } + const prevChange = result[len - 1]; + if (prevChange.originalEndLineNumber === 0 || prevChange.modifiedEndLineNumber === 0) { + // Don't merge with inserts/deletes + return false; + } + if (prevChange.originalEndLineNumber === originalLineNumber && prevChange.modifiedEndLineNumber === modifiedLineNumber) { + if (this.shouldComputeCharChanges && prevChange.charChanges) { + prevChange.charChanges.push(new CharChange(originalLineNumber, originalStartColumn, originalLineNumber, originalEndColumn, modifiedLineNumber, modifiedStartColumn, modifiedLineNumber, modifiedEndColumn)); + } + return true; + } + if (prevChange.originalEndLineNumber + 1 === originalLineNumber && prevChange.modifiedEndLineNumber + 1 === modifiedLineNumber) { + prevChange.originalEndLineNumber = originalLineNumber; + prevChange.modifiedEndLineNumber = modifiedLineNumber; + if (this.shouldComputeCharChanges && prevChange.charChanges) { + prevChange.charChanges.push(new CharChange(originalLineNumber, originalStartColumn, originalLineNumber, originalEndColumn, modifiedLineNumber, modifiedStartColumn, modifiedLineNumber, modifiedEndColumn)); + } + return true; + } + return false; + } +} +function getFirstNonBlankColumn(txt, defaultValue) { + const r = firstNonWhitespaceIndex(txt); + if (r === -1) { + return defaultValue; + } + return r + 1; +} +function getLastNonBlankColumn(txt, defaultValue) { + const r = lastNonWhitespaceIndex(txt); + if (r === -1) { + return defaultValue; + } + return r + 2; +} +function createContinueProcessingPredicate(maximumRuntime) { + if (maximumRuntime === 0) { + return () => true; + } + const startTime = Date.now(); + return () => { + return Date.now() - startTime < maximumRuntime; + }; +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +class DiffAlgorithmResult { + static trivial(seq1, seq2) { + return new DiffAlgorithmResult([new SequenceDiff(OffsetRange.ofLength(seq1.length), OffsetRange.ofLength(seq2.length))], false); + } + static trivialTimedOut(seq1, seq2) { + return new DiffAlgorithmResult([new SequenceDiff(OffsetRange.ofLength(seq1.length), OffsetRange.ofLength(seq2.length))], true); + } + constructor(diffs, + /** + * Indicates if the time out was reached. + * In that case, the diffs might be an approximation and the user should be asked to rerun the diff with more time. + */ + hitTimeout) { + this.diffs = diffs; + this.hitTimeout = hitTimeout; + } +} +class SequenceDiff { + static invert(sequenceDiffs, doc1Length) { + const result = []; + forEachAdjacent(sequenceDiffs, (a, b) => { + result.push(SequenceDiff.fromOffsetPairs(a ? a.getEndExclusives() : OffsetPair.zero, b ? b.getStarts() : new OffsetPair(doc1Length, (a ? a.seq2Range.endExclusive - a.seq1Range.endExclusive : 0) + doc1Length))); + }); + return result; + } + static fromOffsetPairs(start, endExclusive) { + return new SequenceDiff(new OffsetRange(start.offset1, endExclusive.offset1), new OffsetRange(start.offset2, endExclusive.offset2)); + } + constructor(seq1Range, seq2Range) { + this.seq1Range = seq1Range; + this.seq2Range = seq2Range; + } + swap() { + return new SequenceDiff(this.seq2Range, this.seq1Range); + } + toString() { + return `${this.seq1Range} <-> ${this.seq2Range}`; + } + join(other) { + return new SequenceDiff(this.seq1Range.join(other.seq1Range), this.seq2Range.join(other.seq2Range)); + } + delta(offset) { + if (offset === 0) { + return this; + } + return new SequenceDiff(this.seq1Range.delta(offset), this.seq2Range.delta(offset)); + } + deltaStart(offset) { + if (offset === 0) { + return this; + } + return new SequenceDiff(this.seq1Range.deltaStart(offset), this.seq2Range.deltaStart(offset)); + } + deltaEnd(offset) { + if (offset === 0) { + return this; + } + return new SequenceDiff(this.seq1Range.deltaEnd(offset), this.seq2Range.deltaEnd(offset)); + } + intersect(other) { + const i1 = this.seq1Range.intersect(other.seq1Range); + const i2 = this.seq2Range.intersect(other.seq2Range); + if (!i1 || !i2) { + return undefined; + } + return new SequenceDiff(i1, i2); + } + getStarts() { + return new OffsetPair(this.seq1Range.start, this.seq2Range.start); + } + getEndExclusives() { + return new OffsetPair(this.seq1Range.endExclusive, this.seq2Range.endExclusive); + } +} +class OffsetPair { + constructor(offset1, offset2) { + this.offset1 = offset1; + this.offset2 = offset2; + } + toString() { + return `${this.offset1} <-> ${this.offset2}`; + } +} +OffsetPair.zero = new OffsetPair(0, 0); +OffsetPair.max = new OffsetPair(Number.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER); +class InfiniteTimeout { + isValid() { + return true; + } +} +InfiniteTimeout.instance = new InfiniteTimeout(); +class DateTimeout { + constructor(timeout) { + this.timeout = timeout; + this.startTime = Date.now(); + this.valid = true; + if (timeout <= 0) { + throw new BugIndicatingError('timeout must be positive'); + } + } + // Recommendation: Set a log-point `{this.disable()}` in the body + isValid() { + const valid = Date.now() - this.startTime < this.timeout; + if (!valid && this.valid) { + this.valid = false; // timeout reached + // eslint-disable-next-line no-debugger + debugger; // WARNING: Most likely debugging caused the timeout. Call `this.disable()` to continue without timing out. + } + return this.valid; + } +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +class Array2D { + constructor(width, height) { + this.width = width; + this.height = height; + this.array = []; + this.array = new Array(width * height); + } + get(x, y) { + return this.array[x + y * this.width]; + } + set(x, y, value) { + this.array[x + y * this.width] = value; + } +} +function isSpace(charCode) { + return charCode === 32 /* CharCode.Space */ || charCode === 9 /* CharCode.Tab */; +} +class LineRangeFragment { + static getKey(chr) { + let key = this.chrKeys.get(chr); + if (key === undefined) { + key = this.chrKeys.size; + this.chrKeys.set(chr, key); + } + return key; + } + constructor(range, lines, source) { + this.range = range; + this.lines = lines; + this.source = source; + this.histogram = []; + let counter = 0; + for (let i = range.startLineNumber - 1; i < range.endLineNumberExclusive - 1; i++) { + const line = lines[i]; + for (let j = 0; j < line.length; j++) { + counter++; + const chr = line[j]; + const key = LineRangeFragment.getKey(chr); + this.histogram[key] = (this.histogram[key] || 0) + 1; + } + counter++; + const key = LineRangeFragment.getKey('\n'); + this.histogram[key] = (this.histogram[key] || 0) + 1; + } + this.totalCount = counter; + } + computeSimilarity(other) { + var _a, _b; + let sumDifferences = 0; + const maxLength = Math.max(this.histogram.length, other.histogram.length); + for (let i = 0; i < maxLength; i++) { + sumDifferences += Math.abs(((_a = this.histogram[i]) !== null && _a !== void 0 ? _a : 0) - ((_b = other.histogram[i]) !== null && _b !== void 0 ? _b : 0)); + } + return 1 - (sumDifferences / (this.totalCount + other.totalCount)); + } +} +LineRangeFragment.chrKeys = new Map(); + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +/** + * A O(MN) diffing algorithm that supports a score function. + * The algorithm can be improved by processing the 2d array diagonally. +*/ +class DynamicProgrammingDiffing { + compute(sequence1, sequence2, timeout = InfiniteTimeout.instance, equalityScore) { + if (sequence1.length === 0 || sequence2.length === 0) { + return DiffAlgorithmResult.trivial(sequence1, sequence2); + } + /** + * lcsLengths.get(i, j): Length of the longest common subsequence of sequence1.substring(0, i + 1) and sequence2.substring(0, j + 1). + */ + const lcsLengths = new Array2D(sequence1.length, sequence2.length); + const directions = new Array2D(sequence1.length, sequence2.length); + const lengths = new Array2D(sequence1.length, sequence2.length); + // ==== Initializing lcsLengths ==== + for (let s1 = 0; s1 < sequence1.length; s1++) { + for (let s2 = 0; s2 < sequence2.length; s2++) { + if (!timeout.isValid()) { + return DiffAlgorithmResult.trivialTimedOut(sequence1, sequence2); + } + const horizontalLen = s1 === 0 ? 0 : lcsLengths.get(s1 - 1, s2); + const verticalLen = s2 === 0 ? 0 : lcsLengths.get(s1, s2 - 1); + let extendedSeqScore; + if (sequence1.getElement(s1) === sequence2.getElement(s2)) { + if (s1 === 0 || s2 === 0) { + extendedSeqScore = 0; + } + else { + extendedSeqScore = lcsLengths.get(s1 - 1, s2 - 1); + } + if (s1 > 0 && s2 > 0 && directions.get(s1 - 1, s2 - 1) === 3) { + // Prefer consecutive diagonals + extendedSeqScore += lengths.get(s1 - 1, s2 - 1); + } + extendedSeqScore += (equalityScore ? equalityScore(s1, s2) : 1); + } + else { + extendedSeqScore = -1; + } + const newValue = Math.max(horizontalLen, verticalLen, extendedSeqScore); + if (newValue === extendedSeqScore) { + // Prefer diagonals + const prevLen = s1 > 0 && s2 > 0 ? lengths.get(s1 - 1, s2 - 1) : 0; + lengths.set(s1, s2, prevLen + 1); + directions.set(s1, s2, 3); + } + else if (newValue === horizontalLen) { + lengths.set(s1, s2, 0); + directions.set(s1, s2, 1); + } + else if (newValue === verticalLen) { + lengths.set(s1, s2, 0); + directions.set(s1, s2, 2); + } + lcsLengths.set(s1, s2, newValue); + } + } + // ==== Backtracking ==== + const result = []; + let lastAligningPosS1 = sequence1.length; + let lastAligningPosS2 = sequence2.length; + function reportDecreasingAligningPositions(s1, s2) { + if (s1 + 1 !== lastAligningPosS1 || s2 + 1 !== lastAligningPosS2) { + result.push(new SequenceDiff(new OffsetRange(s1 + 1, lastAligningPosS1), new OffsetRange(s2 + 1, lastAligningPosS2))); + } + lastAligningPosS1 = s1; + lastAligningPosS2 = s2; + } + let s1 = sequence1.length - 1; + let s2 = sequence2.length - 1; + while (s1 >= 0 && s2 >= 0) { + if (directions.get(s1, s2) === 3) { + reportDecreasingAligningPositions(s1, s2); + s1--; + s2--; + } + else { + if (directions.get(s1, s2) === 1) { + s1--; + } + else { + s2--; + } + } + } + reportDecreasingAligningPositions(-1, -1); + result.reverse(); + return new DiffAlgorithmResult(result, false); + } +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +/** + * An O(ND) diff algorithm that has a quadratic space worst-case complexity. +*/ +class MyersDiffAlgorithm { + compute(seq1, seq2, timeout = InfiniteTimeout.instance) { + // These are common special cases. + // The early return improves performance dramatically. + if (seq1.length === 0 || seq2.length === 0) { + return DiffAlgorithmResult.trivial(seq1, seq2); + } + const seqX = seq1; // Text on the x axis + const seqY = seq2; // Text on the y axis + function getXAfterSnake(x, y) { + while (x < seqX.length && y < seqY.length && seqX.getElement(x) === seqY.getElement(y)) { + x++; + y++; + } + return x; + } + let d = 0; + // V[k]: X value of longest d-line that ends in diagonal k. + // d-line: path from (0,0) to (x,y) that uses exactly d non-diagonals. + // diagonal k: Set of points (x,y) with x-y = k. + // k=1 -> (1,0),(2,1) + const V = new FastInt32Array(); + V.set(0, getXAfterSnake(0, 0)); + const paths = new FastArrayNegativeIndices(); + paths.set(0, V.get(0) === 0 ? null : new SnakePath(null, 0, 0, V.get(0))); + let k = 0; + loop: while (true) { + d++; + if (!timeout.isValid()) { + return DiffAlgorithmResult.trivialTimedOut(seqX, seqY); + } + // The paper has `for (k = -d; k <= d; k += 2)`, but we can ignore diagonals that cannot influence the result. + const lowerBound = -Math.min(d, seqY.length + (d % 2)); + const upperBound = Math.min(d, seqX.length + (d % 2)); + for (k = lowerBound; k <= upperBound; k += 2) { + // We can use the X values of (d-1)-lines to compute X value of the longest d-lines. + const maxXofDLineTop = k === upperBound ? -1 : V.get(k + 1); // We take a vertical non-diagonal (add a symbol in seqX) + const maxXofDLineLeft = k === lowerBound ? -1 : V.get(k - 1) + 1; // We take a horizontal non-diagonal (+1 x) (delete a symbol in seqX) + const x = Math.min(Math.max(maxXofDLineTop, maxXofDLineLeft), seqX.length); + const y = x - k; + if (x > seqX.length || y > seqY.length) { + // This diagonal is irrelevant for the result. + // TODO: Don't pay the cost for this in the next iteration. + continue; + } + const newMaxX = getXAfterSnake(x, y); + V.set(k, newMaxX); + const lastPath = x === maxXofDLineTop ? paths.get(k + 1) : paths.get(k - 1); + paths.set(k, newMaxX !== x ? new SnakePath(lastPath, x, y, newMaxX - x) : lastPath); + if (V.get(k) === seqX.length && V.get(k) - k === seqY.length) { + break loop; + } + } + } + let path = paths.get(k); + const result = []; + let lastAligningPosS1 = seqX.length; + let lastAligningPosS2 = seqY.length; + while (true) { + const endX = path ? path.x + path.length : 0; + const endY = path ? path.y + path.length : 0; + if (endX !== lastAligningPosS1 || endY !== lastAligningPosS2) { + result.push(new SequenceDiff(new OffsetRange(endX, lastAligningPosS1), new OffsetRange(endY, lastAligningPosS2))); + } + if (!path) { + break; + } + lastAligningPosS1 = path.x; + lastAligningPosS2 = path.y; + path = path.prev; + } + result.reverse(); + return new DiffAlgorithmResult(result, false); + } +} +class SnakePath { + constructor(prev, x, y, length) { + this.prev = prev; + this.x = x; + this.y = y; + this.length = length; + } +} +/** + * An array that supports fast negative indices. +*/ +class FastInt32Array { + constructor() { + this.positiveArr = new Int32Array(10); + this.negativeArr = new Int32Array(10); + } + get(idx) { + if (idx < 0) { + idx = -idx - 1; + return this.negativeArr[idx]; + } + else { + return this.positiveArr[idx]; + } + } + set(idx, value) { + if (idx < 0) { + idx = -idx - 1; + if (idx >= this.negativeArr.length) { + const arr = this.negativeArr; + this.negativeArr = new Int32Array(arr.length * 2); + this.negativeArr.set(arr); + } + this.negativeArr[idx] = value; + } + else { + if (idx >= this.positiveArr.length) { + const arr = this.positiveArr; + this.positiveArr = new Int32Array(arr.length * 2); + this.positiveArr.set(arr); + } + this.positiveArr[idx] = value; + } + } +} +/** + * An array that supports fast negative indices. +*/ +class FastArrayNegativeIndices { + constructor() { + this.positiveArr = []; + this.negativeArr = []; + } + get(idx) { + if (idx < 0) { + idx = -idx - 1; + return this.negativeArr[idx]; + } + else { + return this.positiveArr[idx]; + } + } + set(idx, value) { + if (idx < 0) { + idx = -idx - 1; + this.negativeArr[idx] = value; + } + else { + this.positiveArr[idx] = value; + } + } +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +class SetMap { + constructor() { + this.map = new Map(); + } + add(key, value) { + let values = this.map.get(key); + if (!values) { + values = new Set(); + this.map.set(key, values); + } + values.add(value); + } + delete(key, value) { + const values = this.map.get(key); + if (!values) { + return; + } + values.delete(value); + if (values.size === 0) { + this.map.delete(key); + } + } + forEach(key, fn) { + const values = this.map.get(key); + if (!values) { + return; + } + values.forEach(fn); + } + get(key) { + const values = this.map.get(key); + if (!values) { + return new Set(); + } + return values; + } +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +class LinesSliceCharSequence { + constructor(lines, lineRange, considerWhitespaceChanges) { + // This slice has to have lineRange.length many \n! (otherwise diffing against an empty slice will be problematic) + // (Unless it covers the entire document, in that case the other slice also has to cover the entire document ands it's okay) + this.lines = lines; + this.considerWhitespaceChanges = considerWhitespaceChanges; + this.elements = []; + this.firstCharOffsetByLine = []; + // To account for trimming + this.additionalOffsetByLine = []; + // If the slice covers the end, but does not start at the beginning, we include just the \n of the previous line. + let trimFirstLineFully = false; + if (lineRange.start > 0 && lineRange.endExclusive >= lines.length) { + lineRange = new OffsetRange(lineRange.start - 1, lineRange.endExclusive); + trimFirstLineFully = true; + } + this.lineRange = lineRange; + this.firstCharOffsetByLine[0] = 0; + for (let i = this.lineRange.start; i < this.lineRange.endExclusive; i++) { + let line = lines[i]; + let offset = 0; + if (trimFirstLineFully) { + offset = line.length; + line = ''; + trimFirstLineFully = false; + } + else if (!considerWhitespaceChanges) { + const trimmedStartLine = line.trimStart(); + offset = line.length - trimmedStartLine.length; + line = trimmedStartLine.trimEnd(); + } + this.additionalOffsetByLine.push(offset); + for (let i = 0; i < line.length; i++) { + this.elements.push(line.charCodeAt(i)); + } + // Don't add an \n that does not exist in the document. + if (i < lines.length - 1) { + this.elements.push('\n'.charCodeAt(0)); + this.firstCharOffsetByLine[i - this.lineRange.start + 1] = this.elements.length; + } + } + // To account for the last line + this.additionalOffsetByLine.push(0); + } + toString() { + return `Slice: "${this.text}"`; + } + get text() { + return this.getText(new OffsetRange(0, this.length)); + } + getText(range) { + return this.elements.slice(range.start, range.endExclusive).map(e => String.fromCharCode(e)).join(''); + } + getElement(offset) { + return this.elements[offset]; + } + get length() { + return this.elements.length; + } + getBoundaryScore(length) { + // a b c , d e f + // 11 0 0 12 15 6 13 0 0 11 + const prevCategory = getCategory(length > 0 ? this.elements[length - 1] : -1); + const nextCategory = getCategory(length < this.elements.length ? this.elements[length] : -1); + if (prevCategory === 7 /* CharBoundaryCategory.LineBreakCR */ && nextCategory === 8 /* CharBoundaryCategory.LineBreakLF */) { + // don't break between \r and \n + return 0; + } + let score = 0; + if (prevCategory !== nextCategory) { + score += 10; + if (prevCategory === 0 /* CharBoundaryCategory.WordLower */ && nextCategory === 1 /* CharBoundaryCategory.WordUpper */) { + score += 1; + } + } + score += getCategoryBoundaryScore(prevCategory); + score += getCategoryBoundaryScore(nextCategory); + return score; + } + translateOffset(offset) { + // find smallest i, so that lineBreakOffsets[i] <= offset using binary search + if (this.lineRange.isEmpty) { + return new Position(this.lineRange.start + 1, 1); + } + const i = findLastIdxMonotonous(this.firstCharOffsetByLine, (value) => value <= offset); + return new Position(this.lineRange.start + i + 1, offset - this.firstCharOffsetByLine[i] + this.additionalOffsetByLine[i] + 1); + } + translateRange(range) { + return Range.fromPositions(this.translateOffset(range.start), this.translateOffset(range.endExclusive)); + } + /** + * Finds the word that contains the character at the given offset + */ + findWordContaining(offset) { + if (offset < 0 || offset >= this.elements.length) { + return undefined; + } + if (!isWordChar(this.elements[offset])) { + return undefined; + } + // find start + let start = offset; + while (start > 0 && isWordChar(this.elements[start - 1])) { + start--; + } + // find end + let end = offset; + while (end < this.elements.length && isWordChar(this.elements[end])) { + end++; + } + return new OffsetRange(start, end); + } + countLinesIn(range) { + return this.translateOffset(range.endExclusive).lineNumber - this.translateOffset(range.start).lineNumber; + } + isStronglyEqual(offset1, offset2) { + return this.elements[offset1] === this.elements[offset2]; + } + extendToFullLines(range) { + var _a, _b; + const start = (_a = findLastMonotonous(this.firstCharOffsetByLine, x => x <= range.start)) !== null && _a !== void 0 ? _a : 0; + const end = (_b = findFirstMonotonous(this.firstCharOffsetByLine, x => range.endExclusive <= x)) !== null && _b !== void 0 ? _b : this.elements.length; + return new OffsetRange(start, end); + } +} +function isWordChar(charCode) { + return charCode >= 97 /* CharCode.a */ && charCode <= 122 /* CharCode.z */ + || charCode >= 65 /* CharCode.A */ && charCode <= 90 /* CharCode.Z */ + || charCode >= 48 /* CharCode.Digit0 */ && charCode <= 57 /* CharCode.Digit9 */; +} +const score = { + [0 /* CharBoundaryCategory.WordLower */]: 0, + [1 /* CharBoundaryCategory.WordUpper */]: 0, + [2 /* CharBoundaryCategory.WordNumber */]: 0, + [3 /* CharBoundaryCategory.End */]: 10, + [4 /* CharBoundaryCategory.Other */]: 2, + [5 /* CharBoundaryCategory.Separator */]: 3, + [6 /* CharBoundaryCategory.Space */]: 3, + [7 /* CharBoundaryCategory.LineBreakCR */]: 10, + [8 /* CharBoundaryCategory.LineBreakLF */]: 10, +}; +function getCategoryBoundaryScore(category) { + return score[category]; +} +function getCategory(charCode) { + if (charCode === 10 /* CharCode.LineFeed */) { + return 8 /* CharBoundaryCategory.LineBreakLF */; + } + else if (charCode === 13 /* CharCode.CarriageReturn */) { + return 7 /* CharBoundaryCategory.LineBreakCR */; + } + else if (isSpace(charCode)) { + return 6 /* CharBoundaryCategory.Space */; + } + else if (charCode >= 97 /* CharCode.a */ && charCode <= 122 /* CharCode.z */) { + return 0 /* CharBoundaryCategory.WordLower */; + } + else if (charCode >= 65 /* CharCode.A */ && charCode <= 90 /* CharCode.Z */) { + return 1 /* CharBoundaryCategory.WordUpper */; + } + else if (charCode >= 48 /* CharCode.Digit0 */ && charCode <= 57 /* CharCode.Digit9 */) { + return 2 /* CharBoundaryCategory.WordNumber */; + } + else if (charCode === -1) { + return 3 /* CharBoundaryCategory.End */; + } + else if (charCode === 44 /* CharCode.Comma */ || charCode === 59 /* CharCode.Semicolon */) { + return 5 /* CharBoundaryCategory.Separator */; + } + else { + return 4 /* CharBoundaryCategory.Other */; + } +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +function computeMovedLines(changes, originalLines, modifiedLines, hashedOriginalLines, hashedModifiedLines, timeout) { + let { moves, excludedChanges } = computeMovesFromSimpleDeletionsToSimpleInsertions(changes, originalLines, modifiedLines, timeout); + if (!timeout.isValid()) { + return []; + } + const filteredChanges = changes.filter(c => !excludedChanges.has(c)); + const unchangedMoves = computeUnchangedMoves(filteredChanges, hashedOriginalLines, hashedModifiedLines, originalLines, modifiedLines, timeout); + pushMany(moves, unchangedMoves); + moves = joinCloseConsecutiveMoves(moves); + // Ignore too short moves + moves = moves.filter(current => { + const lines = current.original.toOffsetRange().slice(originalLines).map(l => l.trim()); + const originalText = lines.join('\n'); + return originalText.length >= 15 && countWhere(lines, l => l.length >= 2) >= 2; + }); + moves = removeMovesInSameDiff(changes, moves); + return moves; +} +function countWhere(arr, predicate) { + let count = 0; + for (const t of arr) { + if (predicate(t)) { + count++; + } + } + return count; +} +function computeMovesFromSimpleDeletionsToSimpleInsertions(changes, originalLines, modifiedLines, timeout) { + const moves = []; + const deletions = changes + .filter(c => c.modified.isEmpty && c.original.length >= 3) + .map(d => new LineRangeFragment(d.original, originalLines, d)); + const insertions = new Set(changes + .filter(c => c.original.isEmpty && c.modified.length >= 3) + .map(d => new LineRangeFragment(d.modified, modifiedLines, d))); + const excludedChanges = new Set(); + for (const deletion of deletions) { + let highestSimilarity = -1; + let best; + for (const insertion of insertions) { + const similarity = deletion.computeSimilarity(insertion); + if (similarity > highestSimilarity) { + highestSimilarity = similarity; + best = insertion; + } + } + if (highestSimilarity > 0.90 && best) { + insertions.delete(best); + moves.push(new LineRangeMapping(deletion.range, best.range)); + excludedChanges.add(deletion.source); + excludedChanges.add(best.source); + } + if (!timeout.isValid()) { + return { moves, excludedChanges }; + } + } + return { moves, excludedChanges }; +} +function computeUnchangedMoves(changes, hashedOriginalLines, hashedModifiedLines, originalLines, modifiedLines, timeout) { + const moves = []; + const original3LineHashes = new SetMap(); + for (const change of changes) { + for (let i = change.original.startLineNumber; i < change.original.endLineNumberExclusive - 2; i++) { + const key = `${hashedOriginalLines[i - 1]}:${hashedOriginalLines[i + 1 - 1]}:${hashedOriginalLines[i + 2 - 1]}`; + original3LineHashes.add(key, { range: new LineRange(i, i + 3) }); + } + } + const possibleMappings = []; + changes.sort(compareBy(c => c.modified.startLineNumber, numberComparator)); + for (const change of changes) { + let lastMappings = []; + for (let i = change.modified.startLineNumber; i < change.modified.endLineNumberExclusive - 2; i++) { + const key = `${hashedModifiedLines[i - 1]}:${hashedModifiedLines[i + 1 - 1]}:${hashedModifiedLines[i + 2 - 1]}`; + const currentModifiedRange = new LineRange(i, i + 3); + const nextMappings = []; + original3LineHashes.forEach(key, ({ range }) => { + for (const lastMapping of lastMappings) { + // does this match extend some last match? + if (lastMapping.originalLineRange.endLineNumberExclusive + 1 === range.endLineNumberExclusive && + lastMapping.modifiedLineRange.endLineNumberExclusive + 1 === currentModifiedRange.endLineNumberExclusive) { + lastMapping.originalLineRange = new LineRange(lastMapping.originalLineRange.startLineNumber, range.endLineNumberExclusive); + lastMapping.modifiedLineRange = new LineRange(lastMapping.modifiedLineRange.startLineNumber, currentModifiedRange.endLineNumberExclusive); + nextMappings.push(lastMapping); + return; + } + } + const mapping = { + modifiedLineRange: currentModifiedRange, + originalLineRange: range, + }; + possibleMappings.push(mapping); + nextMappings.push(mapping); + }); + lastMappings = nextMappings; + } + if (!timeout.isValid()) { + return []; + } + } + possibleMappings.sort(reverseOrder(compareBy(m => m.modifiedLineRange.length, numberComparator))); + const modifiedSet = new LineRangeSet(); + const originalSet = new LineRangeSet(); + for (const mapping of possibleMappings) { + const diffOrigToMod = mapping.modifiedLineRange.startLineNumber - mapping.originalLineRange.startLineNumber; + const modifiedSections = modifiedSet.subtractFrom(mapping.modifiedLineRange); + const originalTranslatedSections = originalSet.subtractFrom(mapping.originalLineRange).getWithDelta(diffOrigToMod); + const modifiedIntersectedSections = modifiedSections.getIntersection(originalTranslatedSections); + for (const s of modifiedIntersectedSections.ranges) { + if (s.length < 3) { + continue; + } + const modifiedLineRange = s; + const originalLineRange = s.delta(-diffOrigToMod); + moves.push(new LineRangeMapping(originalLineRange, modifiedLineRange)); + modifiedSet.addRange(modifiedLineRange); + originalSet.addRange(originalLineRange); + } + } + moves.sort(compareBy(m => m.original.startLineNumber, numberComparator)); + const monotonousChanges = new MonotonousArray(changes); + for (let i = 0; i < moves.length; i++) { + const move = moves[i]; + const firstTouchingChangeOrig = monotonousChanges.findLastMonotonous(c => c.original.startLineNumber <= move.original.startLineNumber); + const firstTouchingChangeMod = findLastMonotonous(changes, c => c.modified.startLineNumber <= move.modified.startLineNumber); + const linesAbove = Math.max(move.original.startLineNumber - firstTouchingChangeOrig.original.startLineNumber, move.modified.startLineNumber - firstTouchingChangeMod.modified.startLineNumber); + const lastTouchingChangeOrig = monotonousChanges.findLastMonotonous(c => c.original.startLineNumber < move.original.endLineNumberExclusive); + const lastTouchingChangeMod = findLastMonotonous(changes, c => c.modified.startLineNumber < move.modified.endLineNumberExclusive); + const linesBelow = Math.max(lastTouchingChangeOrig.original.endLineNumberExclusive - move.original.endLineNumberExclusive, lastTouchingChangeMod.modified.endLineNumberExclusive - move.modified.endLineNumberExclusive); + let extendToTop; + for (extendToTop = 0; extendToTop < linesAbove; extendToTop++) { + const origLine = move.original.startLineNumber - extendToTop - 1; + const modLine = move.modified.startLineNumber - extendToTop - 1; + if (origLine > originalLines.length || modLine > modifiedLines.length) { + break; + } + if (modifiedSet.contains(modLine) || originalSet.contains(origLine)) { + break; + } + if (!areLinesSimilar(originalLines[origLine - 1], modifiedLines[modLine - 1], timeout)) { + break; + } + } + if (extendToTop > 0) { + originalSet.addRange(new LineRange(move.original.startLineNumber - extendToTop, move.original.startLineNumber)); + modifiedSet.addRange(new LineRange(move.modified.startLineNumber - extendToTop, move.modified.startLineNumber)); + } + let extendToBottom; + for (extendToBottom = 0; extendToBottom < linesBelow; extendToBottom++) { + const origLine = move.original.endLineNumberExclusive + extendToBottom; + const modLine = move.modified.endLineNumberExclusive + extendToBottom; + if (origLine > originalLines.length || modLine > modifiedLines.length) { + break; + } + if (modifiedSet.contains(modLine) || originalSet.contains(origLine)) { + break; + } + if (!areLinesSimilar(originalLines[origLine - 1], modifiedLines[modLine - 1], timeout)) { + break; + } + } + if (extendToBottom > 0) { + originalSet.addRange(new LineRange(move.original.endLineNumberExclusive, move.original.endLineNumberExclusive + extendToBottom)); + modifiedSet.addRange(new LineRange(move.modified.endLineNumberExclusive, move.modified.endLineNumberExclusive + extendToBottom)); + } + if (extendToTop > 0 || extendToBottom > 0) { + moves[i] = new LineRangeMapping(new LineRange(move.original.startLineNumber - extendToTop, move.original.endLineNumberExclusive + extendToBottom), new LineRange(move.modified.startLineNumber - extendToTop, move.modified.endLineNumberExclusive + extendToBottom)); + } + } + return moves; +} +function areLinesSimilar(line1, line2, timeout) { + if (line1.trim() === line2.trim()) { + return true; + } + if (line1.length > 300 && line2.length > 300) { + return false; + } + const myersDiffingAlgorithm = new MyersDiffAlgorithm(); + const result = myersDiffingAlgorithm.compute(new LinesSliceCharSequence([line1], new OffsetRange(0, 1), false), new LinesSliceCharSequence([line2], new OffsetRange(0, 1), false), timeout); + let commonNonSpaceCharCount = 0; + const inverted = SequenceDiff.invert(result.diffs, line1.length); + for (const seq of inverted) { + seq.seq1Range.forEach(idx => { + if (!isSpace(line1.charCodeAt(idx))) { + commonNonSpaceCharCount++; + } + }); + } + function countNonWsChars(str) { + let count = 0; + for (let i = 0; i < line1.length; i++) { + if (!isSpace(str.charCodeAt(i))) { + count++; + } + } + return count; + } + const longerLineLength = countNonWsChars(line1.length > line2.length ? line1 : line2); + const r = commonNonSpaceCharCount / longerLineLength > 0.6 && longerLineLength > 10; + return r; +} +function joinCloseConsecutiveMoves(moves) { + if (moves.length === 0) { + return moves; + } + moves.sort(compareBy(m => m.original.startLineNumber, numberComparator)); + const result = [moves[0]]; + for (let i = 1; i < moves.length; i++) { + const last = result[result.length - 1]; + const current = moves[i]; + const originalDist = current.original.startLineNumber - last.original.endLineNumberExclusive; + const modifiedDist = current.modified.startLineNumber - last.modified.endLineNumberExclusive; + const currentMoveAfterLast = originalDist >= 0 && modifiedDist >= 0; + if (currentMoveAfterLast && originalDist + modifiedDist <= 2) { + result[result.length - 1] = last.join(current); + continue; + } + result.push(current); + } + return result; +} +function removeMovesInSameDiff(changes, moves) { + const changesMonotonous = new MonotonousArray(changes); + moves = moves.filter(m => { + const diffBeforeEndOfMoveOriginal = changesMonotonous.findLastMonotonous(c => c.original.startLineNumber < m.original.endLineNumberExclusive) + || new LineRangeMapping(new LineRange(1, 1), new LineRange(1, 1)); + const diffBeforeEndOfMoveModified = findLastMonotonous(changes, c => c.modified.startLineNumber < m.modified.endLineNumberExclusive); + const differentDiffs = diffBeforeEndOfMoveOriginal !== diffBeforeEndOfMoveModified; + return differentDiffs; + }); + return moves; +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +function optimizeSequenceDiffs(sequence1, sequence2, sequenceDiffs) { + let result = sequenceDiffs; + result = joinSequenceDiffsByShifting(sequence1, sequence2, result); + // Sometimes, calling this function twice improves the result. + // Uncomment the second invocation and run the tests to see the difference. + result = joinSequenceDiffsByShifting(sequence1, sequence2, result); + result = shiftSequenceDiffs(sequence1, sequence2, result); + return result; +} +/** + * This function fixes issues like this: + * ``` + * import { Baz, Bar } from "foo"; + * ``` + * <-> + * ``` + * import { Baz, Bar, Foo } from "foo"; + * ``` + * Computed diff: [ {Add "," after Bar}, {Add "Foo " after space} } + * Improved diff: [{Add ", Foo" after Bar}] + */ +function joinSequenceDiffsByShifting(sequence1, sequence2, sequenceDiffs) { + if (sequenceDiffs.length === 0) { + return sequenceDiffs; + } + const result = []; + result.push(sequenceDiffs[0]); + // First move them all to the left as much as possible and join them if possible + for (let i = 1; i < sequenceDiffs.length; i++) { + const prevResult = result[result.length - 1]; + let cur = sequenceDiffs[i]; + if (cur.seq1Range.isEmpty || cur.seq2Range.isEmpty) { + const length = cur.seq1Range.start - prevResult.seq1Range.endExclusive; + let d; + for (d = 1; d <= length; d++) { + if (sequence1.getElement(cur.seq1Range.start - d) !== sequence1.getElement(cur.seq1Range.endExclusive - d) || + sequence2.getElement(cur.seq2Range.start - d) !== sequence2.getElement(cur.seq2Range.endExclusive - d)) { + break; + } + } + d--; + if (d === length) { + // Merge previous and current diff + result[result.length - 1] = new SequenceDiff(new OffsetRange(prevResult.seq1Range.start, cur.seq1Range.endExclusive - length), new OffsetRange(prevResult.seq2Range.start, cur.seq2Range.endExclusive - length)); + continue; + } + cur = cur.delta(-d); + } + result.push(cur); + } + const result2 = []; + // Then move them all to the right and join them again if possible + for (let i = 0; i < result.length - 1; i++) { + const nextResult = result[i + 1]; + let cur = result[i]; + if (cur.seq1Range.isEmpty || cur.seq2Range.isEmpty) { + const length = nextResult.seq1Range.start - cur.seq1Range.endExclusive; + let d; + for (d = 0; d < length; d++) { + if (!sequence1.isStronglyEqual(cur.seq1Range.start + d, cur.seq1Range.endExclusive + d) || + !sequence2.isStronglyEqual(cur.seq2Range.start + d, cur.seq2Range.endExclusive + d)) { + break; + } + } + if (d === length) { + // Merge previous and current diff, write to result! + result[i + 1] = new SequenceDiff(new OffsetRange(cur.seq1Range.start + length, nextResult.seq1Range.endExclusive), new OffsetRange(cur.seq2Range.start + length, nextResult.seq2Range.endExclusive)); + continue; + } + if (d > 0) { + cur = cur.delta(d); + } + } + result2.push(cur); + } + if (result.length > 0) { + result2.push(result[result.length - 1]); + } + return result2; +} +// align character level diffs at whitespace characters +// import { IBar } from "foo"; +// import { I[Arr, I]Bar } from "foo"; +// -> +// import { [IArr, ]IBar } from "foo"; +// import { ITransaction, observableValue, transaction } from 'vs/base/common/observable'; +// import { ITransaction, observable[FromEvent, observable]Value, transaction } from 'vs/base/common/observable'; +// -> +// import { ITransaction, [observableFromEvent, ]observableValue, transaction } from 'vs/base/common/observable'; +// collectBrackets(level + 1, levelPerBracketType); +// collectBrackets(level + 1, levelPerBracket[ + 1, levelPerBracket]Type); +// -> +// collectBrackets(level + 1, [levelPerBracket + 1, ]levelPerBracketType); +function shiftSequenceDiffs(sequence1, sequence2, sequenceDiffs) { + if (!sequence1.getBoundaryScore || !sequence2.getBoundaryScore) { + return sequenceDiffs; + } + for (let i = 0; i < sequenceDiffs.length; i++) { + const prevDiff = (i > 0 ? sequenceDiffs[i - 1] : undefined); + const diff = sequenceDiffs[i]; + const nextDiff = (i + 1 < sequenceDiffs.length ? sequenceDiffs[i + 1] : undefined); + const seq1ValidRange = new OffsetRange(prevDiff ? prevDiff.seq1Range.start + 1 : 0, nextDiff ? nextDiff.seq1Range.endExclusive - 1 : sequence1.length); + const seq2ValidRange = new OffsetRange(prevDiff ? prevDiff.seq2Range.start + 1 : 0, nextDiff ? nextDiff.seq2Range.endExclusive - 1 : sequence2.length); + if (diff.seq1Range.isEmpty) { + sequenceDiffs[i] = shiftDiffToBetterPosition(diff, sequence1, sequence2, seq1ValidRange, seq2ValidRange); + } + else if (diff.seq2Range.isEmpty) { + sequenceDiffs[i] = shiftDiffToBetterPosition(diff.swap(), sequence2, sequence1, seq2ValidRange, seq1ValidRange).swap(); + } + } + return sequenceDiffs; +} +function shiftDiffToBetterPosition(diff, sequence1, sequence2, seq1ValidRange, seq2ValidRange) { + const maxShiftLimit = 100; // To prevent performance issues + // don't touch previous or next! + let deltaBefore = 1; + while (diff.seq1Range.start - deltaBefore >= seq1ValidRange.start && + diff.seq2Range.start - deltaBefore >= seq2ValidRange.start && + sequence2.isStronglyEqual(diff.seq2Range.start - deltaBefore, diff.seq2Range.endExclusive - deltaBefore) && deltaBefore < maxShiftLimit) { + deltaBefore++; + } + deltaBefore--; + let deltaAfter = 0; + while (diff.seq1Range.start + deltaAfter < seq1ValidRange.endExclusive && + diff.seq2Range.endExclusive + deltaAfter < seq2ValidRange.endExclusive && + sequence2.isStronglyEqual(diff.seq2Range.start + deltaAfter, diff.seq2Range.endExclusive + deltaAfter) && deltaAfter < maxShiftLimit) { + deltaAfter++; + } + if (deltaBefore === 0 && deltaAfter === 0) { + return diff; + } + // Visualize `[sequence1.text, diff.seq1Range.start + deltaAfter]` + // and `[sequence2.text, diff.seq2Range.start + deltaAfter, diff.seq2Range.endExclusive + deltaAfter]` + let bestDelta = 0; + let bestScore = -1; + // find best scored delta + for (let delta = -deltaBefore; delta <= deltaAfter; delta++) { + const seq2OffsetStart = diff.seq2Range.start + delta; + const seq2OffsetEndExclusive = diff.seq2Range.endExclusive + delta; + const seq1Offset = diff.seq1Range.start + delta; + const score = sequence1.getBoundaryScore(seq1Offset) + sequence2.getBoundaryScore(seq2OffsetStart) + sequence2.getBoundaryScore(seq2OffsetEndExclusive); + if (score > bestScore) { + bestScore = score; + bestDelta = delta; + } + } + return diff.delta(bestDelta); +} +function removeShortMatches(sequence1, sequence2, sequenceDiffs) { + const result = []; + for (const s of sequenceDiffs) { + const last = result[result.length - 1]; + if (!last) { + result.push(s); + continue; + } + if (s.seq1Range.start - last.seq1Range.endExclusive <= 2 || s.seq2Range.start - last.seq2Range.endExclusive <= 2) { + result[result.length - 1] = new SequenceDiff(last.seq1Range.join(s.seq1Range), last.seq2Range.join(s.seq2Range)); + } + else { + result.push(s); + } + } + return result; +} +function extendDiffsToEntireWordIfAppropriate(sequence1, sequence2, sequenceDiffs) { + const additional = []; + let lastModifiedWord = undefined; + function maybePushWordToAdditional() { + if (!lastModifiedWord) { + return; + } + const originalLength1 = lastModifiedWord.s1Range.length - lastModifiedWord.deleted; + lastModifiedWord.s2Range.length - lastModifiedWord.added; + if (Math.max(lastModifiedWord.deleted, lastModifiedWord.added) + (lastModifiedWord.count - 1) > originalLength1) { + additional.push(new SequenceDiff(lastModifiedWord.s1Range, lastModifiedWord.s2Range)); + } + lastModifiedWord = undefined; + } + for (const s of sequenceDiffs) { + function processWord(s1Range, s2Range) { + var _a, _b, _c, _d; + if (!lastModifiedWord || !lastModifiedWord.s1Range.containsRange(s1Range) || !lastModifiedWord.s2Range.containsRange(s2Range)) { + if (lastModifiedWord && !(lastModifiedWord.s1Range.endExclusive < s1Range.start && lastModifiedWord.s2Range.endExclusive < s2Range.start)) { + const s1Added = OffsetRange.tryCreate(lastModifiedWord.s1Range.endExclusive, s1Range.start); + const s2Added = OffsetRange.tryCreate(lastModifiedWord.s2Range.endExclusive, s2Range.start); + lastModifiedWord.deleted += (_a = s1Added === null || s1Added === void 0 ? void 0 : s1Added.length) !== null && _a !== void 0 ? _a : 0; + lastModifiedWord.added += (_b = s2Added === null || s2Added === void 0 ? void 0 : s2Added.length) !== null && _b !== void 0 ? _b : 0; + lastModifiedWord.s1Range = lastModifiedWord.s1Range.join(s1Range); + lastModifiedWord.s2Range = lastModifiedWord.s2Range.join(s2Range); + } + else { + maybePushWordToAdditional(); + lastModifiedWord = { added: 0, deleted: 0, count: 0, s1Range: s1Range, s2Range: s2Range }; + } + } + const changedS1 = s1Range.intersect(s.seq1Range); + const changedS2 = s2Range.intersect(s.seq2Range); + lastModifiedWord.count++; + lastModifiedWord.deleted += (_c = changedS1 === null || changedS1 === void 0 ? void 0 : changedS1.length) !== null && _c !== void 0 ? _c : 0; + lastModifiedWord.added += (_d = changedS2 === null || changedS2 === void 0 ? void 0 : changedS2.length) !== null && _d !== void 0 ? _d : 0; + } + const w1Before = sequence1.findWordContaining(s.seq1Range.start - 1); + const w2Before = sequence2.findWordContaining(s.seq2Range.start - 1); + const w1After = sequence1.findWordContaining(s.seq1Range.endExclusive); + const w2After = sequence2.findWordContaining(s.seq2Range.endExclusive); + if (w1Before && w1After && w2Before && w2After && w1Before.equals(w1After) && w2Before.equals(w2After)) { + processWord(w1Before, w2Before); + } + else { + if (w1Before && w2Before) { + processWord(w1Before, w2Before); + } + if (w1After && w2After) { + processWord(w1After, w2After); + } + } + } + maybePushWordToAdditional(); + const merged = mergeSequenceDiffs(sequenceDiffs, additional); + return merged; +} +function mergeSequenceDiffs(sequenceDiffs1, sequenceDiffs2) { + const result = []; + while (sequenceDiffs1.length > 0 || sequenceDiffs2.length > 0) { + const sd1 = sequenceDiffs1[0]; + const sd2 = sequenceDiffs2[0]; + let next; + if (sd1 && (!sd2 || sd1.seq1Range.start < sd2.seq1Range.start)) { + next = sequenceDiffs1.shift(); + } + else { + next = sequenceDiffs2.shift(); + } + if (result.length > 0 && result[result.length - 1].seq1Range.endExclusive >= next.seq1Range.start) { + result[result.length - 1] = result[result.length - 1].join(next); + } + else { + result.push(next); + } + } + return result; +} +function removeVeryShortMatchingLinesBetweenDiffs(sequence1, _sequence2, sequenceDiffs) { + let diffs = sequenceDiffs; + if (diffs.length === 0) { + return diffs; + } + let counter = 0; + let shouldRepeat; + do { + shouldRepeat = false; + const result = [ + diffs[0] + ]; + for (let i = 1; i < diffs.length; i++) { + const cur = diffs[i]; + const lastResult = result[result.length - 1]; + function shouldJoinDiffs(before, after) { + const unchangedRange = new OffsetRange(lastResult.seq1Range.endExclusive, cur.seq1Range.start); + const unchangedText = sequence1.getText(unchangedRange); + const unchangedTextWithoutWs = unchangedText.replace(/\s/g, ''); + if (unchangedTextWithoutWs.length <= 4 + && (before.seq1Range.length + before.seq2Range.length > 5 || after.seq1Range.length + after.seq2Range.length > 5)) { + return true; + } + return false; + } + const shouldJoin = shouldJoinDiffs(lastResult, cur); + if (shouldJoin) { + shouldRepeat = true; + result[result.length - 1] = result[result.length - 1].join(cur); + } + else { + result.push(cur); + } + } + diffs = result; + } while (counter++ < 10 && shouldRepeat); + return diffs; +} +function removeVeryShortMatchingTextBetweenLongDiffs(sequence1, sequence2, sequenceDiffs) { + let diffs = sequenceDiffs; + if (diffs.length === 0) { + return diffs; + } + let counter = 0; + let shouldRepeat; + do { + shouldRepeat = false; + const result = [ + diffs[0] + ]; + for (let i = 1; i < diffs.length; i++) { + const cur = diffs[i]; + const lastResult = result[result.length - 1]; + function shouldJoinDiffs(before, after) { + const unchangedRange = new OffsetRange(lastResult.seq1Range.endExclusive, cur.seq1Range.start); + const unchangedLineCount = sequence1.countLinesIn(unchangedRange); + if (unchangedLineCount > 5 || unchangedRange.length > 500) { + return false; + } + const unchangedText = sequence1.getText(unchangedRange).trim(); + if (unchangedText.length > 20 || unchangedText.split(/\r\n|\r|\n/).length > 1) { + return false; + } + const beforeLineCount1 = sequence1.countLinesIn(before.seq1Range); + const beforeSeq1Length = before.seq1Range.length; + const beforeLineCount2 = sequence2.countLinesIn(before.seq2Range); + const beforeSeq2Length = before.seq2Range.length; + const afterLineCount1 = sequence1.countLinesIn(after.seq1Range); + const afterSeq1Length = after.seq1Range.length; + const afterLineCount2 = sequence2.countLinesIn(after.seq2Range); + const afterSeq2Length = after.seq2Range.length; + // TODO: Maybe a neural net can be used to derive the result from these numbers + const max = 2 * 40 + 50; + function cap(v) { + return Math.min(v, max); + } + if (Math.pow(Math.pow(cap(beforeLineCount1 * 40 + beforeSeq1Length), 1.5) + Math.pow(cap(beforeLineCount2 * 40 + beforeSeq2Length), 1.5), 1.5) + + Math.pow(Math.pow(cap(afterLineCount1 * 40 + afterSeq1Length), 1.5) + Math.pow(cap(afterLineCount2 * 40 + afterSeq2Length), 1.5), 1.5) > ((max ** 1.5) ** 1.5) * 1.3) { + return true; + } + return false; + } + const shouldJoin = shouldJoinDiffs(lastResult, cur); + if (shouldJoin) { + shouldRepeat = true; + result[result.length - 1] = result[result.length - 1].join(cur); + } + else { + result.push(cur); + } + } + diffs = result; + } while (counter++ < 10 && shouldRepeat); + const newDiffs = []; + // Remove short suffixes/prefixes + forEachWithNeighbors(diffs, (prev, cur, next) => { + let newDiff = cur; + function shouldMarkAsChanged(text) { + return text.length > 0 && text.trim().length <= 3 && cur.seq1Range.length + cur.seq2Range.length > 100; + } + const fullRange1 = sequence1.extendToFullLines(cur.seq1Range); + const prefix = sequence1.getText(new OffsetRange(fullRange1.start, cur.seq1Range.start)); + if (shouldMarkAsChanged(prefix)) { + newDiff = newDiff.deltaStart(-prefix.length); + } + const suffix = sequence1.getText(new OffsetRange(cur.seq1Range.endExclusive, fullRange1.endExclusive)); + if (shouldMarkAsChanged(suffix)) { + newDiff = newDiff.deltaEnd(suffix.length); + } + const availableSpace = SequenceDiff.fromOffsetPairs(prev ? prev.getEndExclusives() : OffsetPair.zero, next ? next.getStarts() : OffsetPair.max); + const result = newDiff.intersect(availableSpace); + newDiffs.push(result); + }); + return newDiffs; +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +class LineSequence { + constructor(trimmedHash, lines) { + this.trimmedHash = trimmedHash; + this.lines = lines; + } + getElement(offset) { + return this.trimmedHash[offset]; + } + get length() { + return this.trimmedHash.length; + } + getBoundaryScore(length) { + const indentationBefore = length === 0 ? 0 : getIndentation(this.lines[length - 1]); + const indentationAfter = length === this.lines.length ? 0 : getIndentation(this.lines[length]); + return 1000 - (indentationBefore + indentationAfter); + } + getText(range) { + return this.lines.slice(range.start, range.endExclusive).join('\n'); + } + isStronglyEqual(offset1, offset2) { + return this.lines[offset1] === this.lines[offset2]; + } +} +function getIndentation(str) { + let i = 0; + while (i < str.length && (str.charCodeAt(i) === 32 /* CharCode.Space */ || str.charCodeAt(i) === 9 /* CharCode.Tab */)) { + i++; + } + return i; +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +class DefaultLinesDiffComputer { + constructor() { + this.dynamicProgrammingDiffing = new DynamicProgrammingDiffing(); + this.myersDiffingAlgorithm = new MyersDiffAlgorithm(); + } + computeDiff(originalLines, modifiedLines, options) { + if (originalLines.length <= 1 && equals(originalLines, modifiedLines, (a, b) => a === b)) { + return new LinesDiff([], [], false); + } + if (originalLines.length === 1 && originalLines[0].length === 0 || modifiedLines.length === 1 && modifiedLines[0].length === 0) { + return new LinesDiff([ + new DetailedLineRangeMapping(new LineRange(1, originalLines.length + 1), new LineRange(1, modifiedLines.length + 1), [ + new RangeMapping(new Range(1, 1, originalLines.length, originalLines[0].length + 1), new Range(1, 1, modifiedLines.length, modifiedLines[0].length + 1)) + ]) + ], [], false); + } + const timeout = options.maxComputationTimeMs === 0 ? InfiniteTimeout.instance : new DateTimeout(options.maxComputationTimeMs); + const considerWhitespaceChanges = !options.ignoreTrimWhitespace; + const perfectHashes = new Map(); + function getOrCreateHash(text) { + let hash = perfectHashes.get(text); + if (hash === undefined) { + hash = perfectHashes.size; + perfectHashes.set(text, hash); + } + return hash; + } + const originalLinesHashes = originalLines.map((l) => getOrCreateHash(l.trim())); + const modifiedLinesHashes = modifiedLines.map((l) => getOrCreateHash(l.trim())); + const sequence1 = new LineSequence(originalLinesHashes, originalLines); + const sequence2 = new LineSequence(modifiedLinesHashes, modifiedLines); + const lineAlignmentResult = (() => { + if (sequence1.length + sequence2.length < 1700) { + // Use the improved algorithm for small files + return this.dynamicProgrammingDiffing.compute(sequence1, sequence2, timeout, (offset1, offset2) => originalLines[offset1] === modifiedLines[offset2] + ? modifiedLines[offset2].length === 0 + ? 0.1 + : 1 + Math.log(1 + modifiedLines[offset2].length) + : 0.99); + } + return this.myersDiffingAlgorithm.compute(sequence1, sequence2); + })(); + let lineAlignments = lineAlignmentResult.diffs; + let hitTimeout = lineAlignmentResult.hitTimeout; + lineAlignments = optimizeSequenceDiffs(sequence1, sequence2, lineAlignments); + lineAlignments = removeVeryShortMatchingLinesBetweenDiffs(sequence1, sequence2, lineAlignments); + const alignments = []; + const scanForWhitespaceChanges = (equalLinesCount) => { + if (!considerWhitespaceChanges) { + return; + } + for (let i = 0; i < equalLinesCount; i++) { + const seq1Offset = seq1LastStart + i; + const seq2Offset = seq2LastStart + i; + if (originalLines[seq1Offset] !== modifiedLines[seq2Offset]) { + // This is because of whitespace changes, diff these lines + const characterDiffs = this.refineDiff(originalLines, modifiedLines, new SequenceDiff(new OffsetRange(seq1Offset, seq1Offset + 1), new OffsetRange(seq2Offset, seq2Offset + 1)), timeout, considerWhitespaceChanges); + for (const a of characterDiffs.mappings) { + alignments.push(a); + } + if (characterDiffs.hitTimeout) { + hitTimeout = true; + } + } + } + }; + let seq1LastStart = 0; + let seq2LastStart = 0; + for (const diff of lineAlignments) { + assertFn(() => diff.seq1Range.start - seq1LastStart === diff.seq2Range.start - seq2LastStart); + const equalLinesCount = diff.seq1Range.start - seq1LastStart; + scanForWhitespaceChanges(equalLinesCount); + seq1LastStart = diff.seq1Range.endExclusive; + seq2LastStart = diff.seq2Range.endExclusive; + const characterDiffs = this.refineDiff(originalLines, modifiedLines, diff, timeout, considerWhitespaceChanges); + if (characterDiffs.hitTimeout) { + hitTimeout = true; + } + for (const a of characterDiffs.mappings) { + alignments.push(a); + } + } + scanForWhitespaceChanges(originalLines.length - seq1LastStart); + const changes = lineRangeMappingFromRangeMappings(alignments, originalLines, modifiedLines); + let moves = []; + if (options.computeMoves) { + moves = this.computeMoves(changes, originalLines, modifiedLines, originalLinesHashes, modifiedLinesHashes, timeout, considerWhitespaceChanges); + } + // Make sure all ranges are valid + assertFn(() => { + function validatePosition(pos, lines) { + if (pos.lineNumber < 1 || pos.lineNumber > lines.length) { + return false; + } + const line = lines[pos.lineNumber - 1]; + if (pos.column < 1 || pos.column > line.length + 1) { + return false; + } + return true; + } + function validateRange(range, lines) { + if (range.startLineNumber < 1 || range.startLineNumber > lines.length + 1) { + return false; + } + if (range.endLineNumberExclusive < 1 || range.endLineNumberExclusive > lines.length + 1) { + return false; + } + return true; + } + for (const c of changes) { + if (!c.innerChanges) { + return false; + } + for (const ic of c.innerChanges) { + const valid = validatePosition(ic.modifiedRange.getStartPosition(), modifiedLines) && validatePosition(ic.modifiedRange.getEndPosition(), modifiedLines) && + validatePosition(ic.originalRange.getStartPosition(), originalLines) && validatePosition(ic.originalRange.getEndPosition(), originalLines); + if (!valid) { + return false; + } + } + if (!validateRange(c.modified, modifiedLines) || !validateRange(c.original, originalLines)) { + return false; + } + } + return true; + }); + return new LinesDiff(changes, moves, hitTimeout); + } + computeMoves(changes, originalLines, modifiedLines, hashedOriginalLines, hashedModifiedLines, timeout, considerWhitespaceChanges) { + const moves = computeMovedLines(changes, originalLines, modifiedLines, hashedOriginalLines, hashedModifiedLines, timeout); + const movesWithDiffs = moves.map(m => { + const moveChanges = this.refineDiff(originalLines, modifiedLines, new SequenceDiff(m.original.toOffsetRange(), m.modified.toOffsetRange()), timeout, considerWhitespaceChanges); + const mappings = lineRangeMappingFromRangeMappings(moveChanges.mappings, originalLines, modifiedLines, true); + return new MovedText(m, mappings); + }); + return movesWithDiffs; + } + refineDiff(originalLines, modifiedLines, diff, timeout, considerWhitespaceChanges) { + const slice1 = new LinesSliceCharSequence(originalLines, diff.seq1Range, considerWhitespaceChanges); + const slice2 = new LinesSliceCharSequence(modifiedLines, diff.seq2Range, considerWhitespaceChanges); + const diffResult = slice1.length + slice2.length < 500 + ? this.dynamicProgrammingDiffing.compute(slice1, slice2, timeout) + : this.myersDiffingAlgorithm.compute(slice1, slice2, timeout); + let diffs = diffResult.diffs; + diffs = optimizeSequenceDiffs(slice1, slice2, diffs); + diffs = extendDiffsToEntireWordIfAppropriate(slice1, slice2, diffs); + diffs = removeShortMatches(slice1, slice2, diffs); + diffs = removeVeryShortMatchingTextBetweenLongDiffs(slice1, slice2, diffs); + const result = diffs.map((d) => new RangeMapping(slice1.translateRange(d.seq1Range), slice2.translateRange(d.seq2Range))); + // Assert: result applied on original should be the same as diff applied to original + return { + mappings: result, + hitTimeout: diffResult.hitTimeout, + }; + } +} +function lineRangeMappingFromRangeMappings(alignments, originalLines, modifiedLines, dontAssertStartLine = false) { + const changes = []; + for (const g of groupAdjacentBy(alignments.map(a => getLineRangeMapping(a, originalLines, modifiedLines)), (a1, a2) => a1.original.overlapOrTouch(a2.original) + || a1.modified.overlapOrTouch(a2.modified))) { + const first = g[0]; + const last = g[g.length - 1]; + changes.push(new DetailedLineRangeMapping(first.original.join(last.original), first.modified.join(last.modified), g.map(a => a.innerChanges[0]))); + } + assertFn(() => { + if (!dontAssertStartLine) { + if (changes.length > 0 && changes[0].original.startLineNumber !== changes[0].modified.startLineNumber) { + return false; + } + } + return checkAdjacentItems(changes, (m1, m2) => m2.original.startLineNumber - m1.original.endLineNumberExclusive === m2.modified.startLineNumber - m1.modified.endLineNumberExclusive && + // There has to be an unchanged line in between (otherwise both diffs should have been joined) + m1.original.endLineNumberExclusive < m2.original.startLineNumber && + m1.modified.endLineNumberExclusive < m2.modified.startLineNumber); + }); + return changes; +} +function getLineRangeMapping(rangeMapping, originalLines, modifiedLines) { + let lineStartDelta = 0; + let lineEndDelta = 0; + // rangeMapping describes the edit that replaces `rangeMapping.originalRange` with `newText := getText(modifiedLines, rangeMapping.modifiedRange)`. + // original: ]xxx \n <- this line is not modified + // modified: ]xx \n + if (rangeMapping.modifiedRange.endColumn === 1 && rangeMapping.originalRange.endColumn === 1 + && rangeMapping.originalRange.startLineNumber + lineStartDelta <= rangeMapping.originalRange.endLineNumber + && rangeMapping.modifiedRange.startLineNumber + lineStartDelta <= rangeMapping.modifiedRange.endLineNumber) { + // We can only do this if the range is not empty yet + lineEndDelta = -1; + } + // original: xxx[ \n <- this line is not modified + // modified: xxx[ \n + if (rangeMapping.modifiedRange.startColumn - 1 >= modifiedLines[rangeMapping.modifiedRange.startLineNumber - 1].length + && rangeMapping.originalRange.startColumn - 1 >= originalLines[rangeMapping.originalRange.startLineNumber - 1].length + && rangeMapping.originalRange.startLineNumber <= rangeMapping.originalRange.endLineNumber + lineEndDelta + && rangeMapping.modifiedRange.startLineNumber <= rangeMapping.modifiedRange.endLineNumber + lineEndDelta) { + // We can only do this if the range is not empty yet + lineStartDelta = 1; + } + const originalLineRange = new LineRange(rangeMapping.originalRange.startLineNumber + lineStartDelta, rangeMapping.originalRange.endLineNumber + 1 + lineEndDelta); + const modifiedLineRange = new LineRange(rangeMapping.modifiedRange.startLineNumber + lineStartDelta, rangeMapping.modifiedRange.endLineNumber + 1 + lineEndDelta); + return new DetailedLineRangeMapping(originalLineRange, modifiedLineRange, [rangeMapping]); +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +const linesDiffComputers = { + getLegacy: () => new LegacyLinesDiffComputer(), + getDefault: () => new DefaultLinesDiffComputer(), +}; + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +function roundFloat(number, decimalPoints) { + const decimal = Math.pow(10, decimalPoints); + return Math.round(number * decimal) / decimal; +} +class RGBA { + constructor(r, g, b, a = 1) { + this._rgbaBrand = undefined; + this.r = Math.min(255, Math.max(0, r)) | 0; + this.g = Math.min(255, Math.max(0, g)) | 0; + this.b = Math.min(255, Math.max(0, b)) | 0; + this.a = roundFloat(Math.max(Math.min(1, a), 0), 3); + } + static equals(a, b) { + return a.r === b.r && a.g === b.g && a.b === b.b && a.a === b.a; + } +} +class HSLA { + constructor(h, s, l, a) { + this._hslaBrand = undefined; + this.h = Math.max(Math.min(360, h), 0) | 0; + this.s = roundFloat(Math.max(Math.min(1, s), 0), 3); + this.l = roundFloat(Math.max(Math.min(1, l), 0), 3); + this.a = roundFloat(Math.max(Math.min(1, a), 0), 3); + } + static equals(a, b) { + return a.h === b.h && a.s === b.s && a.l === b.l && a.a === b.a; + } + /** + * Converts an RGB color value to HSL. Conversion formula + * adapted from http://en.wikipedia.org/wiki/HSL_color_space. + * Assumes r, g, and b are contained in the set [0, 255] and + * returns h in the set [0, 360], s, and l in the set [0, 1]. + */ + static fromRGBA(rgba) { + const r = rgba.r / 255; + const g = rgba.g / 255; + const b = rgba.b / 255; + const a = rgba.a; + const max = Math.max(r, g, b); + const min = Math.min(r, g, b); + let h = 0; + let s = 0; + const l = (min + max) / 2; + const chroma = max - min; + if (chroma > 0) { + s = Math.min((l <= 0.5 ? chroma / (2 * l) : chroma / (2 - (2 * l))), 1); + switch (max) { + case r: + h = (g - b) / chroma + (g < b ? 6 : 0); + break; + case g: + h = (b - r) / chroma + 2; + break; + case b: + h = (r - g) / chroma + 4; + break; + } + h *= 60; + h = Math.round(h); + } + return new HSLA(h, s, l, a); + } + static _hue2rgb(p, q, t) { + if (t < 0) { + t += 1; + } + if (t > 1) { + t -= 1; + } + if (t < 1 / 6) { + return p + (q - p) * 6 * t; + } + if (t < 1 / 2) { + return q; + } + if (t < 2 / 3) { + return p + (q - p) * (2 / 3 - t) * 6; + } + return p; + } + /** + * Converts an HSL color value to RGB. Conversion formula + * adapted from http://en.wikipedia.org/wiki/HSL_color_space. + * Assumes h in the set [0, 360] s, and l are contained in the set [0, 1] and + * returns r, g, and b in the set [0, 255]. + */ + static toRGBA(hsla) { + const h = hsla.h / 360; + const { s, l, a } = hsla; + let r, g, b; + if (s === 0) { + r = g = b = l; // achromatic + } + else { + const q = l < 0.5 ? l * (1 + s) : l + s - l * s; + const p = 2 * l - q; + r = HSLA._hue2rgb(p, q, h + 1 / 3); + g = HSLA._hue2rgb(p, q, h); + b = HSLA._hue2rgb(p, q, h - 1 / 3); + } + return new RGBA(Math.round(r * 255), Math.round(g * 255), Math.round(b * 255), a); + } +} +class HSVA { + constructor(h, s, v, a) { + this._hsvaBrand = undefined; + this.h = Math.max(Math.min(360, h), 0) | 0; + this.s = roundFloat(Math.max(Math.min(1, s), 0), 3); + this.v = roundFloat(Math.max(Math.min(1, v), 0), 3); + this.a = roundFloat(Math.max(Math.min(1, a), 0), 3); + } + static equals(a, b) { + return a.h === b.h && a.s === b.s && a.v === b.v && a.a === b.a; + } + // from http://www.rapidtables.com/convert/color/rgb-to-hsv.htm + static fromRGBA(rgba) { + const r = rgba.r / 255; + const g = rgba.g / 255; + const b = rgba.b / 255; + const cmax = Math.max(r, g, b); + const cmin = Math.min(r, g, b); + const delta = cmax - cmin; + const s = cmax === 0 ? 0 : (delta / cmax); + let m; + if (delta === 0) { + m = 0; + } + else if (cmax === r) { + m = ((((g - b) / delta) % 6) + 6) % 6; + } + else if (cmax === g) { + m = ((b - r) / delta) + 2; + } + else { + m = ((r - g) / delta) + 4; + } + return new HSVA(Math.round(m * 60), s, cmax, rgba.a); + } + // from http://www.rapidtables.com/convert/color/hsv-to-rgb.htm + static toRGBA(hsva) { + const { h, s, v, a } = hsva; + const c = v * s; + const x = c * (1 - Math.abs((h / 60) % 2 - 1)); + const m = v - c; + let [r, g, b] = [0, 0, 0]; + if (h < 60) { + r = c; + g = x; + } + else if (h < 120) { + r = x; + g = c; + } + else if (h < 180) { + g = c; + b = x; + } + else if (h < 240) { + g = x; + b = c; + } + else if (h < 300) { + r = x; + b = c; + } + else if (h <= 360) { + r = c; + b = x; + } + r = Math.round((r + m) * 255); + g = Math.round((g + m) * 255); + b = Math.round((b + m) * 255); + return new RGBA(r, g, b, a); + } +} +class Color { + static fromHex(hex) { + return Color.Format.CSS.parseHex(hex) || Color.red; + } + static equals(a, b) { + if (!a && !b) { + return true; + } + if (!a || !b) { + return false; + } + return a.equals(b); + } + get hsla() { + if (this._hsla) { + return this._hsla; + } + else { + return HSLA.fromRGBA(this.rgba); + } + } + get hsva() { + if (this._hsva) { + return this._hsva; + } + return HSVA.fromRGBA(this.rgba); + } + constructor(arg) { + if (!arg) { + throw new Error('Color needs a value'); + } + else if (arg instanceof RGBA) { + this.rgba = arg; + } + else if (arg instanceof HSLA) { + this._hsla = arg; + this.rgba = HSLA.toRGBA(arg); + } + else if (arg instanceof HSVA) { + this._hsva = arg; + this.rgba = HSVA.toRGBA(arg); + } + else { + throw new Error('Invalid color ctor argument'); + } + } + equals(other) { + return !!other && RGBA.equals(this.rgba, other.rgba) && HSLA.equals(this.hsla, other.hsla) && HSVA.equals(this.hsva, other.hsva); + } + /** + * http://www.w3.org/TR/WCAG20/#relativeluminancedef + * Returns the number in the set [0, 1]. O => Darkest Black. 1 => Lightest white. + */ + getRelativeLuminance() { + const R = Color._relativeLuminanceForComponent(this.rgba.r); + const G = Color._relativeLuminanceForComponent(this.rgba.g); + const B = Color._relativeLuminanceForComponent(this.rgba.b); + const luminance = 0.2126 * R + 0.7152 * G + 0.0722 * B; + return roundFloat(luminance, 4); + } + static _relativeLuminanceForComponent(color) { + const c = color / 255; + return (c <= 0.03928) ? c / 12.92 : Math.pow(((c + 0.055) / 1.055), 2.4); + } + /** + * http://24ways.org/2010/calculating-color-contrast + * Return 'true' if lighter color otherwise 'false' + */ + isLighter() { + const yiq = (this.rgba.r * 299 + this.rgba.g * 587 + this.rgba.b * 114) / 1000; + return yiq >= 128; + } + isLighterThan(another) { + const lum1 = this.getRelativeLuminance(); + const lum2 = another.getRelativeLuminance(); + return lum1 > lum2; + } + isDarkerThan(another) { + const lum1 = this.getRelativeLuminance(); + const lum2 = another.getRelativeLuminance(); + return lum1 < lum2; + } + lighten(factor) { + return new Color(new HSLA(this.hsla.h, this.hsla.s, this.hsla.l + this.hsla.l * factor, this.hsla.a)); + } + darken(factor) { + return new Color(new HSLA(this.hsla.h, this.hsla.s, this.hsla.l - this.hsla.l * factor, this.hsla.a)); + } + transparent(factor) { + const { r, g, b, a } = this.rgba; + return new Color(new RGBA(r, g, b, a * factor)); + } + isTransparent() { + return this.rgba.a === 0; + } + isOpaque() { + return this.rgba.a === 1; + } + opposite() { + return new Color(new RGBA(255 - this.rgba.r, 255 - this.rgba.g, 255 - this.rgba.b, this.rgba.a)); + } + makeOpaque(opaqueBackground) { + if (this.isOpaque() || opaqueBackground.rgba.a !== 1) { + // only allow to blend onto a non-opaque color onto a opaque color + return this; + } + const { r, g, b, a } = this.rgba; + // https://stackoverflow.com/questions/12228548/finding-equivalent-color-with-opacity + return new Color(new RGBA(opaqueBackground.rgba.r - a * (opaqueBackground.rgba.r - r), opaqueBackground.rgba.g - a * (opaqueBackground.rgba.g - g), opaqueBackground.rgba.b - a * (opaqueBackground.rgba.b - b), 1)); + } + toString() { + if (!this._toString) { + this._toString = Color.Format.CSS.format(this); + } + return this._toString; + } + static getLighterColor(of, relative, factor) { + if (of.isLighterThan(relative)) { + return of; + } + factor = factor ? factor : 0.5; + const lum1 = of.getRelativeLuminance(); + const lum2 = relative.getRelativeLuminance(); + factor = factor * (lum2 - lum1) / lum2; + return of.lighten(factor); + } + static getDarkerColor(of, relative, factor) { + if (of.isDarkerThan(relative)) { + return of; + } + factor = factor ? factor : 0.5; + const lum1 = of.getRelativeLuminance(); + const lum2 = relative.getRelativeLuminance(); + factor = factor * (lum1 - lum2) / lum1; + return of.darken(factor); + } +} +Color.white = new Color(new RGBA(255, 255, 255, 1)); +Color.black = new Color(new RGBA(0, 0, 0, 1)); +Color.red = new Color(new RGBA(255, 0, 0, 1)); +Color.blue = new Color(new RGBA(0, 0, 255, 1)); +Color.green = new Color(new RGBA(0, 255, 0, 1)); +Color.cyan = new Color(new RGBA(0, 255, 255, 1)); +Color.lightgrey = new Color(new RGBA(211, 211, 211, 1)); +Color.transparent = new Color(new RGBA(0, 0, 0, 0)); +(function (Color) { + (function (Format) { + (function (CSS) { + function formatRGB(color) { + if (color.rgba.a === 1) { + return `rgb(${color.rgba.r}, ${color.rgba.g}, ${color.rgba.b})`; + } + return Color.Format.CSS.formatRGBA(color); + } + CSS.formatRGB = formatRGB; + function formatRGBA(color) { + return `rgba(${color.rgba.r}, ${color.rgba.g}, ${color.rgba.b}, ${+(color.rgba.a).toFixed(2)})`; + } + CSS.formatRGBA = formatRGBA; + function formatHSL(color) { + if (color.hsla.a === 1) { + return `hsl(${color.hsla.h}, ${(color.hsla.s * 100).toFixed(2)}%, ${(color.hsla.l * 100).toFixed(2)}%)`; + } + return Color.Format.CSS.formatHSLA(color); + } + CSS.formatHSL = formatHSL; + function formatHSLA(color) { + return `hsla(${color.hsla.h}, ${(color.hsla.s * 100).toFixed(2)}%, ${(color.hsla.l * 100).toFixed(2)}%, ${color.hsla.a.toFixed(2)})`; + } + CSS.formatHSLA = formatHSLA; + function _toTwoDigitHex(n) { + const r = n.toString(16); + return r.length !== 2 ? '0' + r : r; + } + /** + * Formats the color as #RRGGBB + */ + function formatHex(color) { + return `#${_toTwoDigitHex(color.rgba.r)}${_toTwoDigitHex(color.rgba.g)}${_toTwoDigitHex(color.rgba.b)}`; + } + CSS.formatHex = formatHex; + /** + * Formats the color as #RRGGBBAA + * If 'compact' is set, colors without transparancy will be printed as #RRGGBB + */ + function formatHexA(color, compact = false) { + if (compact && color.rgba.a === 1) { + return Color.Format.CSS.formatHex(color); + } + return `#${_toTwoDigitHex(color.rgba.r)}${_toTwoDigitHex(color.rgba.g)}${_toTwoDigitHex(color.rgba.b)}${_toTwoDigitHex(Math.round(color.rgba.a * 255))}`; + } + CSS.formatHexA = formatHexA; + /** + * The default format will use HEX if opaque and RGBA otherwise. + */ + function format(color) { + if (color.isOpaque()) { + return Color.Format.CSS.formatHex(color); + } + return Color.Format.CSS.formatRGBA(color); + } + CSS.format = format; + /** + * Converts an Hex color value to a Color. + * returns r, g, and b are contained in the set [0, 255] + * @param hex string (#RGB, #RGBA, #RRGGBB or #RRGGBBAA). + */ + function parseHex(hex) { + const length = hex.length; + if (length === 0) { + // Invalid color + return null; + } + if (hex.charCodeAt(0) !== 35 /* CharCode.Hash */) { + // Does not begin with a # + return null; + } + if (length === 7) { + // #RRGGBB format + const r = 16 * _parseHexDigit(hex.charCodeAt(1)) + _parseHexDigit(hex.charCodeAt(2)); + const g = 16 * _parseHexDigit(hex.charCodeAt(3)) + _parseHexDigit(hex.charCodeAt(4)); + const b = 16 * _parseHexDigit(hex.charCodeAt(5)) + _parseHexDigit(hex.charCodeAt(6)); + return new Color(new RGBA(r, g, b, 1)); + } + if (length === 9) { + // #RRGGBBAA format + const r = 16 * _parseHexDigit(hex.charCodeAt(1)) + _parseHexDigit(hex.charCodeAt(2)); + const g = 16 * _parseHexDigit(hex.charCodeAt(3)) + _parseHexDigit(hex.charCodeAt(4)); + const b = 16 * _parseHexDigit(hex.charCodeAt(5)) + _parseHexDigit(hex.charCodeAt(6)); + const a = 16 * _parseHexDigit(hex.charCodeAt(7)) + _parseHexDigit(hex.charCodeAt(8)); + return new Color(new RGBA(r, g, b, a / 255)); + } + if (length === 4) { + // #RGB format + const r = _parseHexDigit(hex.charCodeAt(1)); + const g = _parseHexDigit(hex.charCodeAt(2)); + const b = _parseHexDigit(hex.charCodeAt(3)); + return new Color(new RGBA(16 * r + r, 16 * g + g, 16 * b + b)); + } + if (length === 5) { + // #RGBA format + const r = _parseHexDigit(hex.charCodeAt(1)); + const g = _parseHexDigit(hex.charCodeAt(2)); + const b = _parseHexDigit(hex.charCodeAt(3)); + const a = _parseHexDigit(hex.charCodeAt(4)); + return new Color(new RGBA(16 * r + r, 16 * g + g, 16 * b + b, (16 * a + a) / 255)); + } + // Invalid color + return null; + } + CSS.parseHex = parseHex; + function _parseHexDigit(charCode) { + switch (charCode) { + case 48 /* CharCode.Digit0 */: return 0; + case 49 /* CharCode.Digit1 */: return 1; + case 50 /* CharCode.Digit2 */: return 2; + case 51 /* CharCode.Digit3 */: return 3; + case 52 /* CharCode.Digit4 */: return 4; + case 53 /* CharCode.Digit5 */: return 5; + case 54 /* CharCode.Digit6 */: return 6; + case 55 /* CharCode.Digit7 */: return 7; + case 56 /* CharCode.Digit8 */: return 8; + case 57 /* CharCode.Digit9 */: return 9; + case 97 /* CharCode.a */: return 10; + case 65 /* CharCode.A */: return 10; + case 98 /* CharCode.b */: return 11; + case 66 /* CharCode.B */: return 11; + case 99 /* CharCode.c */: return 12; + case 67 /* CharCode.C */: return 12; + case 100 /* CharCode.d */: return 13; + case 68 /* CharCode.D */: return 13; + case 101 /* CharCode.e */: return 14; + case 69 /* CharCode.E */: return 14; + case 102 /* CharCode.f */: return 15; + case 70 /* CharCode.F */: return 15; + } + return 0; + } + })(Format.CSS || (Format.CSS = {})); + })(Color.Format || (Color.Format = {})); +})(Color || (Color = {})); + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +function _parseCaptureGroups(captureGroups) { + const values = []; + for (const captureGroup of captureGroups) { + const parsedNumber = Number(captureGroup); + if (parsedNumber || parsedNumber === 0 && captureGroup.replace(/\s/g, '') !== '') { + values.push(parsedNumber); + } + } + return values; +} +function _toIColor(r, g, b, a) { + return { + red: r / 255, + blue: b / 255, + green: g / 255, + alpha: a + }; +} +function _findRange(model, match) { + const index = match.index; + const length = match[0].length; + if (!index) { + return; + } + const startPosition = model.positionAt(index); + const range = { + startLineNumber: startPosition.lineNumber, + startColumn: startPosition.column, + endLineNumber: startPosition.lineNumber, + endColumn: startPosition.column + length + }; + return range; +} +function _findHexColorInformation(range, hexValue) { + if (!range) { + return; + } + const parsedHexColor = Color.Format.CSS.parseHex(hexValue); + if (!parsedHexColor) { + return; + } + return { + range: range, + color: _toIColor(parsedHexColor.rgba.r, parsedHexColor.rgba.g, parsedHexColor.rgba.b, parsedHexColor.rgba.a) + }; +} +function _findRGBColorInformation(range, matches, isAlpha) { + if (!range || matches.length !== 1) { + return; + } + const match = matches[0]; + const captureGroups = match.values(); + const parsedRegex = _parseCaptureGroups(captureGroups); + return { + range: range, + color: _toIColor(parsedRegex[0], parsedRegex[1], parsedRegex[2], isAlpha ? parsedRegex[3] : 1) + }; +} +function _findHSLColorInformation(range, matches, isAlpha) { + if (!range || matches.length !== 1) { + return; + } + const match = matches[0]; + const captureGroups = match.values(); + const parsedRegex = _parseCaptureGroups(captureGroups); + const colorEquivalent = new Color(new HSLA(parsedRegex[0], parsedRegex[1] / 100, parsedRegex[2] / 100, isAlpha ? parsedRegex[3] : 1)); + return { + range: range, + color: _toIColor(colorEquivalent.rgba.r, colorEquivalent.rgba.g, colorEquivalent.rgba.b, colorEquivalent.rgba.a) + }; +} +function _findMatches(model, regex) { + if (typeof model === 'string') { + return [...model.matchAll(regex)]; + } + else { + return model.findMatches(regex); + } +} +function computeColors(model) { + const result = []; + // Early validation for RGB and HSL + const initialValidationRegex = /\b(rgb|rgba|hsl|hsla)(\([0-9\s,.\%]*\))|(#)([A-Fa-f0-9]{3})\b|(#)([A-Fa-f0-9]{4})\b|(#)([A-Fa-f0-9]{6})\b|(#)([A-Fa-f0-9]{8})\b/gm; + const initialValidationMatches = _findMatches(model, initialValidationRegex); + // Potential colors have been found, validate the parameters + if (initialValidationMatches.length > 0) { + for (const initialMatch of initialValidationMatches) { + const initialCaptureGroups = initialMatch.filter(captureGroup => captureGroup !== undefined); + const colorScheme = initialCaptureGroups[1]; + const colorParameters = initialCaptureGroups[2]; + if (!colorParameters) { + continue; + } + let colorInformation; + if (colorScheme === 'rgb') { + const regexParameters = /^\(\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*,\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*,\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*\)$/gm; + colorInformation = _findRGBColorInformation(_findRange(model, initialMatch), _findMatches(colorParameters, regexParameters), false); + } + else if (colorScheme === 'rgba') { + const regexParameters = /^\(\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*,\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*,\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*,\s*(0[.][0-9]+|[.][0-9]+|[01][.]|[01])\s*\)$/gm; + colorInformation = _findRGBColorInformation(_findRange(model, initialMatch), _findMatches(colorParameters, regexParameters), true); + } + else if (colorScheme === 'hsl') { + const regexParameters = /^\(\s*(36[0]|3[0-5][0-9]|[12][0-9][0-9]|[1-9]?[0-9])\s*,\s*(100|\d{1,2}[.]\d*|\d{1,2})%\s*,\s*(100|\d{1,2}[.]\d*|\d{1,2})%\s*\)$/gm; + colorInformation = _findHSLColorInformation(_findRange(model, initialMatch), _findMatches(colorParameters, regexParameters), false); + } + else if (colorScheme === 'hsla') { + const regexParameters = /^\(\s*(36[0]|3[0-5][0-9]|[12][0-9][0-9]|[1-9]?[0-9])\s*,\s*(100|\d{1,2}[.]\d*|\d{1,2})%\s*,\s*(100|\d{1,2}[.]\d*|\d{1,2})%\s*,\s*(0[.][0-9]+|[.][0-9]+|[01][.]|[01])\s*\)$/gm; + colorInformation = _findHSLColorInformation(_findRange(model, initialMatch), _findMatches(colorParameters, regexParameters), true); + } + else if (colorScheme === '#') { + colorInformation = _findHexColorInformation(_findRange(model, initialMatch), colorScheme + colorParameters); + } + if (colorInformation) { + result.push(colorInformation); + } + } + } + return result; +} +/** + * Returns an array of all default document colors in the provided document + */ +function computeDefaultDocumentColors(model) { + if (!model || typeof model.getValue !== 'function' || typeof model.positionAt !== 'function') { + // Unknown caller! + return []; + } + return computeColors(model); +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +/** + * @internal + */ +class MirrorModel extends MirrorTextModel { + get uri() { + return this._uri; + } + get eol() { + return this._eol; + } + getValue() { + return this.getText(); + } + findMatches(regex) { + const matches = []; + for (let i = 0; i < this._lines.length; i++) { + const line = this._lines[i]; + const offsetToAdd = this.offsetAt(new Position(i + 1, 1)); + const iteratorOverMatches = line.matchAll(regex); + for (const match of iteratorOverMatches) { + if (match.index || match.index === 0) { + match.index = match.index + offsetToAdd; + } + matches.push(match); + } + } + return matches; + } + getLinesContent() { + return this._lines.slice(0); + } + getLineCount() { + return this._lines.length; + } + getLineContent(lineNumber) { + return this._lines[lineNumber - 1]; + } + getWordAtPosition(position, wordDefinition) { + const wordAtText = getWordAtText(position.column, ensureValidWordDefinition(wordDefinition), this._lines[position.lineNumber - 1], 0); + if (wordAtText) { + return new Range(position.lineNumber, wordAtText.startColumn, position.lineNumber, wordAtText.endColumn); + } + return null; + } + words(wordDefinition) { + const lines = this._lines; + const wordenize = this._wordenize.bind(this); + let lineNumber = 0; + let lineText = ''; + let wordRangesIdx = 0; + let wordRanges = []; + return { + *[Symbol.iterator]() { + while (true) { + if (wordRangesIdx < wordRanges.length) { + const value = lineText.substring(wordRanges[wordRangesIdx].start, wordRanges[wordRangesIdx].end); + wordRangesIdx += 1; + yield value; + } + else { + if (lineNumber < lines.length) { + lineText = lines[lineNumber]; + wordRanges = wordenize(lineText, wordDefinition); + wordRangesIdx = 0; + lineNumber += 1; + } + else { + break; + } + } + } + } + }; + } + getLineWords(lineNumber, wordDefinition) { + const content = this._lines[lineNumber - 1]; + const ranges = this._wordenize(content, wordDefinition); + const words = []; + for (const range of ranges) { + words.push({ + word: content.substring(range.start, range.end), + startColumn: range.start + 1, + endColumn: range.end + 1 + }); + } + return words; + } + _wordenize(content, wordDefinition) { + const result = []; + let match; + wordDefinition.lastIndex = 0; // reset lastIndex just to be sure + while (match = wordDefinition.exec(content)) { + if (match[0].length === 0) { + // it did match the empty string + break; + } + result.push({ start: match.index, end: match.index + match[0].length }); + } + return result; + } + getValueInRange(range) { + range = this._validateRange(range); + if (range.startLineNumber === range.endLineNumber) { + return this._lines[range.startLineNumber - 1].substring(range.startColumn - 1, range.endColumn - 1); + } + const lineEnding = this._eol; + const startLineIndex = range.startLineNumber - 1; + const endLineIndex = range.endLineNumber - 1; + const resultLines = []; + resultLines.push(this._lines[startLineIndex].substring(range.startColumn - 1)); + for (let i = startLineIndex + 1; i < endLineIndex; i++) { + resultLines.push(this._lines[i]); + } + resultLines.push(this._lines[endLineIndex].substring(0, range.endColumn - 1)); + return resultLines.join(lineEnding); + } + offsetAt(position) { + position = this._validatePosition(position); + this._ensureLineStarts(); + return this._lineStarts.getPrefixSum(position.lineNumber - 2) + (position.column - 1); + } + positionAt(offset) { + offset = Math.floor(offset); + offset = Math.max(0, offset); + this._ensureLineStarts(); + const out = this._lineStarts.getIndexOf(offset); + const lineLength = this._lines[out.index].length; + // Ensure we return a valid position + return { + lineNumber: 1 + out.index, + column: 1 + Math.min(out.remainder, lineLength) + }; + } + _validateRange(range) { + const start = this._validatePosition({ lineNumber: range.startLineNumber, column: range.startColumn }); + const end = this._validatePosition({ lineNumber: range.endLineNumber, column: range.endColumn }); + if (start.lineNumber !== range.startLineNumber + || start.column !== range.startColumn + || end.lineNumber !== range.endLineNumber + || end.column !== range.endColumn) { + return { + startLineNumber: start.lineNumber, + startColumn: start.column, + endLineNumber: end.lineNumber, + endColumn: end.column + }; + } + return range; + } + _validatePosition(position) { + if (!Position.isIPosition(position)) { + throw new Error('bad position'); + } + let { lineNumber, column } = position; + let hasChanged = false; + if (lineNumber < 1) { + lineNumber = 1; + column = 1; + hasChanged = true; + } + else if (lineNumber > this._lines.length) { + lineNumber = this._lines.length; + column = this._lines[lineNumber - 1].length + 1; + hasChanged = true; + } + else { + const maxCharacter = this._lines[lineNumber - 1].length + 1; + if (column < 1) { + column = 1; + hasChanged = true; + } + else if (column > maxCharacter) { + column = maxCharacter; + hasChanged = true; + } + } + if (!hasChanged) { + return position; + } + else { + return { lineNumber, column }; + } + } +} +/** + * @internal + */ +class EditorSimpleWorker { + constructor(host, foreignModuleFactory) { + this._host = host; + this._models = Object.create(null); + this._foreignModuleFactory = foreignModuleFactory; + this._foreignModule = null; + } + dispose() { + this._models = Object.create(null); + } + _getModel(uri) { + return this._models[uri]; + } + _getModels() { + const all = []; + Object.keys(this._models).forEach((key) => all.push(this._models[key])); + return all; + } + acceptNewModel(data) { + this._models[data.url] = new MirrorModel(URI.parse(data.url), data.lines, data.EOL, data.versionId); + } + acceptModelChanged(strURL, e) { + if (!this._models[strURL]) { + return; + } + const model = this._models[strURL]; + model.onEvents(e); + } + acceptRemovedModel(strURL) { + if (!this._models[strURL]) { + return; + } + delete this._models[strURL]; + } + async computeUnicodeHighlights(url, options, range) { + const model = this._getModel(url); + if (!model) { + return { ranges: [], hasMore: false, ambiguousCharacterCount: 0, invisibleCharacterCount: 0, nonBasicAsciiCharacterCount: 0 }; + } + return UnicodeTextModelHighlighter.computeUnicodeHighlights(model, options, range); + } + // ---- BEGIN diff -------------------------------------------------------------------------- + async computeDiff(originalUrl, modifiedUrl, options, algorithm) { + const original = this._getModel(originalUrl); + const modified = this._getModel(modifiedUrl); + if (!original || !modified) { + return null; + } + return EditorSimpleWorker.computeDiff(original, modified, options, algorithm); + } + static computeDiff(originalTextModel, modifiedTextModel, options, algorithm) { + const diffAlgorithm = algorithm === 'advanced' ? linesDiffComputers.getDefault() : linesDiffComputers.getLegacy(); + const originalLines = originalTextModel.getLinesContent(); + const modifiedLines = modifiedTextModel.getLinesContent(); + const result = diffAlgorithm.computeDiff(originalLines, modifiedLines, options); + const identical = (result.changes.length > 0 ? false : this._modelsAreIdentical(originalTextModel, modifiedTextModel)); + function getLineChanges(changes) { + return changes.map(m => { + var _a; + return ([m.original.startLineNumber, m.original.endLineNumberExclusive, m.modified.startLineNumber, m.modified.endLineNumberExclusive, (_a = m.innerChanges) === null || _a === void 0 ? void 0 : _a.map(m => [ + m.originalRange.startLineNumber, + m.originalRange.startColumn, + m.originalRange.endLineNumber, + m.originalRange.endColumn, + m.modifiedRange.startLineNumber, + m.modifiedRange.startColumn, + m.modifiedRange.endLineNumber, + m.modifiedRange.endColumn, + ])]); + }); + } + return { + identical, + quitEarly: result.hitTimeout, + changes: getLineChanges(result.changes), + moves: result.moves.map(m => ([ + m.lineRangeMapping.original.startLineNumber, + m.lineRangeMapping.original.endLineNumberExclusive, + m.lineRangeMapping.modified.startLineNumber, + m.lineRangeMapping.modified.endLineNumberExclusive, + getLineChanges(m.changes) + ])), + }; + } + static _modelsAreIdentical(original, modified) { + const originalLineCount = original.getLineCount(); + const modifiedLineCount = modified.getLineCount(); + if (originalLineCount !== modifiedLineCount) { + return false; + } + for (let line = 1; line <= originalLineCount; line++) { + const originalLine = original.getLineContent(line); + const modifiedLine = modified.getLineContent(line); + if (originalLine !== modifiedLine) { + return false; + } + } + return true; + } + async computeMoreMinimalEdits(modelUrl, edits, pretty) { + const model = this._getModel(modelUrl); + if (!model) { + return edits; + } + const result = []; + let lastEol = undefined; + edits = edits.slice(0).sort((a, b) => { + if (a.range && b.range) { + return Range.compareRangesUsingStarts(a.range, b.range); + } + // eol only changes should go to the end + const aRng = a.range ? 0 : 1; + const bRng = b.range ? 0 : 1; + return aRng - bRng; + }); + // merge adjacent edits + let writeIndex = 0; + for (let readIndex = 1; readIndex < edits.length; readIndex++) { + if (Range.getEndPosition(edits[writeIndex].range).equals(Range.getStartPosition(edits[readIndex].range))) { + edits[writeIndex].range = Range.fromPositions(Range.getStartPosition(edits[writeIndex].range), Range.getEndPosition(edits[readIndex].range)); + edits[writeIndex].text += edits[readIndex].text; + } + else { + writeIndex++; + edits[writeIndex] = edits[readIndex]; + } + } + edits.length = writeIndex + 1; + for (let { range, text, eol } of edits) { + if (typeof eol === 'number') { + lastEol = eol; + } + if (Range.isEmpty(range) && !text) { + // empty change + continue; + } + const original = model.getValueInRange(range); + text = text.replace(/\r\n|\n|\r/g, model.eol); + if (original === text) { + // noop + continue; + } + // make sure diff won't take too long + if (Math.max(text.length, original.length) > EditorSimpleWorker._diffLimit) { + result.push({ range, text }); + continue; + } + // compute diff between original and edit.text + const changes = stringDiff(original, text, pretty); + const editOffset = model.offsetAt(Range.lift(range).getStartPosition()); + for (const change of changes) { + const start = model.positionAt(editOffset + change.originalStart); + const end = model.positionAt(editOffset + change.originalStart + change.originalLength); + const newEdit = { + text: text.substr(change.modifiedStart, change.modifiedLength), + range: { startLineNumber: start.lineNumber, startColumn: start.column, endLineNumber: end.lineNumber, endColumn: end.column } + }; + if (model.getValueInRange(newEdit.range) !== newEdit.text) { + result.push(newEdit); + } + } + } + if (typeof lastEol === 'number') { + result.push({ eol: lastEol, text: '', range: { startLineNumber: 0, startColumn: 0, endLineNumber: 0, endColumn: 0 } }); + } + return result; + } + // ---- END minimal edits --------------------------------------------------------------- + async computeLinks(modelUrl) { + const model = this._getModel(modelUrl); + if (!model) { + return null; + } + return computeLinks(model); + } + // --- BEGIN default document colors ----------------------------------------------------------- + async computeDefaultDocumentColors(modelUrl) { + const model = this._getModel(modelUrl); + if (!model) { + return null; + } + return computeDefaultDocumentColors(model); + } + async textualSuggest(modelUrls, leadingWord, wordDef, wordDefFlags) { + const sw = new StopWatch(); + const wordDefRegExp = new RegExp(wordDef, wordDefFlags); + const seen = new Set(); + outer: for (const url of modelUrls) { + const model = this._getModel(url); + if (!model) { + continue; + } + for (const word of model.words(wordDefRegExp)) { + if (word === leadingWord || !isNaN(Number(word))) { + continue; + } + seen.add(word); + if (seen.size > EditorSimpleWorker._suggestionsLimit) { + break outer; + } + } + } + return { words: Array.from(seen), duration: sw.elapsed() }; + } + // ---- END suggest -------------------------------------------------------------------------- + //#region -- word ranges -- + async computeWordRanges(modelUrl, range, wordDef, wordDefFlags) { + const model = this._getModel(modelUrl); + if (!model) { + return Object.create(null); + } + const wordDefRegExp = new RegExp(wordDef, wordDefFlags); + const result = Object.create(null); + for (let line = range.startLineNumber; line < range.endLineNumber; line++) { + const words = model.getLineWords(line, wordDefRegExp); + for (const word of words) { + if (!isNaN(Number(word.word))) { + continue; + } + let array = result[word.word]; + if (!array) { + array = []; + result[word.word] = array; + } + array.push({ + startLineNumber: line, + startColumn: word.startColumn, + endLineNumber: line, + endColumn: word.endColumn + }); + } + } + return result; + } + //#endregion + async navigateValueSet(modelUrl, range, up, wordDef, wordDefFlags) { + const model = this._getModel(modelUrl); + if (!model) { + return null; + } + const wordDefRegExp = new RegExp(wordDef, wordDefFlags); + if (range.startColumn === range.endColumn) { + range = { + startLineNumber: range.startLineNumber, + startColumn: range.startColumn, + endLineNumber: range.endLineNumber, + endColumn: range.endColumn + 1 + }; + } + const selectionText = model.getValueInRange(range); + const wordRange = model.getWordAtPosition({ lineNumber: range.startLineNumber, column: range.startColumn }, wordDefRegExp); + if (!wordRange) { + return null; + } + const word = model.getValueInRange(wordRange); + const result = BasicInplaceReplace.INSTANCE.navigateValueSet(range, selectionText, wordRange, word, up); + return result; + } + // ---- BEGIN foreign module support -------------------------------------------------------------------------- + loadForeignModule(moduleId, createData, foreignHostMethods) { + const proxyMethodRequest = (method, args) => { + return this._host.fhr(method, args); + }; + const foreignHost = createProxyObject$1(foreignHostMethods, proxyMethodRequest); + const ctx = { + host: foreignHost, + getMirrorModels: () => { + return this._getModels(); + } + }; + if (this._foreignModuleFactory) { + this._foreignModule = this._foreignModuleFactory(ctx, createData); + // static foreing module + return Promise.resolve(getAllMethodNames(this._foreignModule)); + } + // ESM-comment-begin + // return new Promise((resolve, reject) => { + // require([moduleId], (foreignModule: { create: IForeignModuleFactory }) => { + // this._foreignModule = foreignModule.create(ctx, createData); + // + // resolve(getAllMethodNames(this._foreignModule)); + // + // }, reject); + // }); + // ESM-comment-end + // ESM-uncomment-begin + return Promise.reject(new Error(`Unexpected usage`)); + // ESM-uncomment-end + } + // foreign method request + fmr(method, args) { + if (!this._foreignModule || typeof this._foreignModule[method] !== 'function') { + return Promise.reject(new Error('Missing requestHandler or method: ' + method)); + } + try { + return Promise.resolve(this._foreignModule[method].apply(this._foreignModule, args)); + } + catch (e) { + return Promise.reject(e); + } + } +} +// ---- END diff -------------------------------------------------------------------------- +// ---- BEGIN minimal edits --------------------------------------------------------------- +EditorSimpleWorker._diffLimit = 100000; +// ---- BEGIN suggest -------------------------------------------------------------------------- +EditorSimpleWorker._suggestionsLimit = 10000; +if (typeof importScripts === 'function') { + // Running in a web worker + globalThis.monaco = createMonacoBaseAPI(); +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +let initialized = false; +function initialize(foreignModule) { + if (initialized) { + return; + } + initialized = true; + const simpleWorker = new SimpleWorkerServer((msg) => { + globalThis.postMessage(msg); + }, (host) => new EditorSimpleWorker(host, foreignModule)); + globalThis.onmessage = (e) => { + simpleWorker.onmessage(e.data); + }; +} +globalThis.onmessage = (e) => { + // Ignore first message in this case and initialize if not yet initialized + if (!initialized) { + initialize(null); + } +}; diff --git a/playground/assets/highlight-tY_3qpIX-7pMUEdH0.js b/playground/assets/highlight-tY_3qpIX-7pMUEdH0.js new file mode 100644 index 00000000..0c4ca399 --- /dev/null +++ b/playground/assets/highlight-tY_3qpIX-7pMUEdH0.js @@ -0,0 +1,4182 @@ +var Kn=Object.defineProperty;var Jn=(a,e,n)=>e in a?Kn(a,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):a[e]=n;var u=(a,e,n)=>(Jn(a,typeof e!="symbol"?e+"":e,n),n);import{l as mn,C as Qn,E as et,K as nt,a as tt,M as at,b as st,P as it,R as rt,S as ot,c as ct,T as lt,U as ut,e as mt,_ as pt}from"./index-lMQbMrxt.js";const dt=Object.freeze(Object.defineProperty({__proto__:null,CancellationTokenSource:Qn,Emitter:et,KeyCode:nt,KeyMod:tt,MarkerSeverity:at,MarkerTag:st,Position:it,Range:rt,Selection:ot,SelectionDirection:ct,Token:lt,Uri:ut,editor:mt,languages:mn},Symbol.toStringTag,{value:"Module"}));var R;(function(a){a[a.NotSet=-1]="NotSet",a[a.None=0]="None",a[a.Italic=1]="Italic",a[a.Bold=2]="Bold",a[a.Underline=4]="Underline"})(R||(R={}));var W;(function(a){function e(m){return m.toString(2).padStart(32,"0")}a.toBinaryStr=e;function n(m){const p=a.getLanguageId(m),d=a.getTokenType(m),g=a.getFontStyle(m),f=a.getForeground(m),_=a.getBackground(m);console.log({languageId:p,tokenType:d,fontStyle:g,foreground:f,background:_})}a.print=n;function t(m){return(m&255)>>>0}a.getLanguageId=t;function s(m){return(m&768)>>>8}a.getTokenType=s;function i(m){return(m&1024)!==0}a.containsBalancedBrackets=i;function r(m){return(m&30720)>>>11}a.getFontStyle=r;function c(m){return(m&16744448)>>>15}a.getForeground=c;function o(m){return(m&4278190080)>>>24}a.getBackground=o;function l(m,p,d,g,f,_,$){let b=a.getLanguageId(m),y=a.getTokenType(m),w=a.containsBalancedBrackets(m)?1:0,C=a.getFontStyle(m),k=a.getForeground(m),z=a.getBackground(m);return p!==0&&(b=p),d!==8&&(y=d),g!==null&&(w=g?1:0),f!==-1&&(C=f),_!==0&&(k=_),$!==0&&(z=$),(b<<0|y<<8|w<<10|C<<11|k<<15|z<<24)>>>0}a.set=l})(W||(W={}));function me(a,e){const n=[],t=bt(a);let s=t.next();for(;s!==null;){let o=0;if(s.length===2&&s.charAt(1)===":"){switch(s.charAt(0)){case"R":o=1;break;case"L":o=-1;break;default:console.log(`Unknown priority ${s} in scope selector`)}s=t.next()}let l=r();if(n.push({matcher:l,priority:o}),s!==",")break;s=t.next()}return n;function i(){if(s==="-"){s=t.next();const o=i();return l=>!!o&&!o(l)}if(s==="("){s=t.next();const o=c();return s===")"&&(s=t.next()),o}if(De(s)){const o=[];do o.push(s),s=t.next();while(De(s));return l=>e(o,l)}return null}function r(){const o=[];let l=i();for(;l;)o.push(l),l=i();return m=>o.every(p=>p(m))}function c(){const o=[];let l=r();for(;l&&(o.push(l),s==="|"||s===",");){do s=t.next();while(s==="|"||s===",");l=r()}return m=>o.some(p=>p(m))}}function De(a){return!!a&&!!a.match(/[\w\.:]+/)}function bt(a){let e=/([LR]:|[\w\.:][\w\.:\-]*|[\,\|\-\(\)])/g,n=e.exec(a);return{next:()=>{if(!n)return null;const t=n[0];return n=e.exec(a),t}}}function pn(a){typeof a.dispose=="function"&&a.dispose()}function gt(a){return Be(a)}function Be(a){return Array.isArray(a)?ht(a):typeof a=="object"?ft(a):a}function ht(a){let e=[];for(let n=0,t=a.length;n{for(let t in n)a[t]=n[t]}),a}function bn(a){const e=~a.lastIndexOf("/")||~a.lastIndexOf("\\");return e===0?a:~e===a.length-1?bn(a.substring(0,a.length-1)):a.substr(~e+1)}let xe=/\$(\d+)|\${(\d+):\/(downcase|upcase)}/g;class re{static hasCaptures(e){return e===null?!1:(xe.lastIndex=0,xe.test(e))}static replaceCaptures(e,n,t){return e.replace(xe,(s,i,r,c)=>{let o=t[parseInt(i||r,10)];if(o){let l=n.substring(o.start,o.end);for(;l[0]===".";)l=l.substring(1);switch(c){case"downcase":return l.toLowerCase();case"upcase":return l.toUpperCase();default:return l}}else return s})}}function gn(a,e){return ae?1:0}function hn(a,e){if(a===null&&e===null)return 0;if(!a)return-1;if(!e)return 1;let n=a.length,t=e.length;if(n===t){for(let s=0;s`);return}const i=n.lookup(e);a instanceof Q?ue({baseGrammar:i,selfGrammar:s},t):Ae(a.ruleName,{baseGrammar:i,selfGrammar:s,repository:s.repository},t);const r=n.injections(a.scopeName);if(r)for(const c of r)t.add(new Q(c))}function Ae(a,e,n){if(e.repository&&e.repository[a]){const t=e.repository[a];pe([t],e,n)}}function ue(a,e){a.selfGrammar.patterns&&Array.isArray(a.selfGrammar.patterns)&&pe(a.selfGrammar.patterns,{...a,repository:a.selfGrammar.repository},e),a.selfGrammar.injections&&pe(Object.values(a.selfGrammar.injections),{...a,repository:a.selfGrammar.repository},e)}function pe(a,e,n){for(const t of a){if(n.visitedRule.has(t))continue;n.visitedRule.add(t);const s=t.repository?dn({},e.repository,t.repository):e.repository;Array.isArray(t.patterns)&&pe(t.patterns,{...e,repository:s},n);const i=t.include;if(!i)continue;const r=_n(i);switch(r.kind){case 0:ue({...e,selfGrammar:e.baseGrammar},n);break;case 1:ue(e,n);break;case 2:Ae(r.ruleName,{...e,repository:s},n);break;case 3:case 4:const c=r.scopeName===e.selfGrammar.scopeName?e.selfGrammar:r.scopeName===e.baseGrammar.scopeName?e.baseGrammar:void 0;if(c){const o={baseGrammar:e.baseGrammar,selfGrammar:c,repository:s};r.kind===4?Ae(r.ruleName,o,n):ue(o,n)}else r.kind===4?n.add(new yt(r.scopeName,r.ruleName)):n.add(new Q(r.scopeName));break}}}class wt{constructor(){u(this,"kind",0)}}class kt{constructor(){u(this,"kind",1)}}class jt{constructor(e){u(this,"ruleName");u(this,"kind",2);this.ruleName=e}}class vt{constructor(e){u(this,"scopeName");u(this,"kind",3);this.scopeName=e}}class Ct{constructor(e,n){u(this,"scopeName");u(this,"ruleName");u(this,"kind",4);this.scopeName=e,this.ruleName=n}}function _n(a){if(a==="$base")return new wt;if(a==="$self")return new kt;const e=a.indexOf("#");if(e===-1)return new vt(a);if(e===0)return new jt(a.substring(1));{const n=a.substring(0,e),t=a.substring(e+1);return new Ct(n,t)}}const Ft=/\\(\d+)/,Me=/\\(\d+)/g,At=-1,$n=-2;class se{constructor(e,n,t,s){u(this,"$location");u(this,"id");u(this,"_nameIsCapturing");u(this,"_name");u(this,"_contentNameIsCapturing");u(this,"_contentName");this.$location=e,this.id=n,this._name=t||null,this._nameIsCapturing=re.hasCaptures(this._name),this._contentName=s||null,this._contentNameIsCapturing=re.hasCaptures(this._contentName)}get debugName(){const e=this.$location?`${bn(this.$location.filename)}:${this.$location.line}`:"unknown";return`${this.constructor.name}#${this.id} @ ${e}`}getName(e,n){return!this._nameIsCapturing||this._name===null||e===null||n===null?this._name:re.replaceCaptures(this._name,e,n)}getContentName(e,n){return!this._contentNameIsCapturing||this._contentName===null?this._contentName:re.replaceCaptures(this._contentName,e,n)}}class qt extends se{constructor(n,t,s,i,r){super(n,t,s,i);u(this,"retokenizeCapturedWithRuleId");this.retokenizeCapturedWithRuleId=r}dispose(){}collectPatterns(n,t){throw new Error("Not supported!")}compile(n,t){throw new Error("Not supported!")}compileAG(n,t,s,i){throw new Error("Not supported!")}}class Et extends se{constructor(n,t,s,i,r){super(n,t,s,null);u(this,"_match");u(this,"captures");u(this,"_cachedCompiledPatterns");this._match=new D(i,this.id),this.captures=r,this._cachedCompiledPatterns=null}dispose(){this._cachedCompiledPatterns&&(this._cachedCompiledPatterns.dispose(),this._cachedCompiledPatterns=null)}get debugMatchRegExp(){return`${this._match.source}`}collectPatterns(n,t){t.push(this._match)}compile(n,t){return this._getCachedCompiledPatterns(n).compile(n)}compileAG(n,t,s,i){return this._getCachedCompiledPatterns(n).compileAG(n,s,i)}_getCachedCompiledPatterns(n){return this._cachedCompiledPatterns||(this._cachedCompiledPatterns=new ee,this.collectPatterns(n,this._cachedCompiledPatterns)),this._cachedCompiledPatterns}}class Ue extends se{constructor(n,t,s,i,r){super(n,t,s,i);u(this,"hasMissingPatterns");u(this,"patterns");u(this,"_cachedCompiledPatterns");this.patterns=r.patterns,this.hasMissingPatterns=r.hasMissingPatterns,this._cachedCompiledPatterns=null}dispose(){this._cachedCompiledPatterns&&(this._cachedCompiledPatterns.dispose(),this._cachedCompiledPatterns=null)}collectPatterns(n,t){for(const s of this.patterns)n.getRule(s).collectPatterns(n,t)}compile(n,t){return this._getCachedCompiledPatterns(n).compile(n)}compileAG(n,t,s,i){return this._getCachedCompiledPatterns(n).compileAG(n,s,i)}_getCachedCompiledPatterns(n){return this._cachedCompiledPatterns||(this._cachedCompiledPatterns=new ee,this.collectPatterns(n,this._cachedCompiledPatterns)),this._cachedCompiledPatterns}}class qe extends se{constructor(n,t,s,i,r,c,o,l,m,p){super(n,t,s,i);u(this,"_begin");u(this,"beginCaptures");u(this,"_end");u(this,"endHasBackReferences");u(this,"endCaptures");u(this,"applyEndPatternLast");u(this,"hasMissingPatterns");u(this,"patterns");u(this,"_cachedCompiledPatterns");this._begin=new D(r,this.id),this.beginCaptures=c,this._end=new D(o||"￿",-1),this.endHasBackReferences=this._end.hasBackReferences,this.endCaptures=l,this.applyEndPatternLast=m||!1,this.patterns=p.patterns,this.hasMissingPatterns=p.hasMissingPatterns,this._cachedCompiledPatterns=null}dispose(){this._cachedCompiledPatterns&&(this._cachedCompiledPatterns.dispose(),this._cachedCompiledPatterns=null)}get debugBeginRegExp(){return`${this._begin.source}`}get debugEndRegExp(){return`${this._end.source}`}getEndWithResolvedBackReferences(n,t){return this._end.resolveBackReferences(n,t)}collectPatterns(n,t){t.push(this._begin)}compile(n,t){return this._getCachedCompiledPatterns(n,t).compile(n)}compileAG(n,t,s,i){return this._getCachedCompiledPatterns(n,t).compileAG(n,s,i)}_getCachedCompiledPatterns(n,t){if(!this._cachedCompiledPatterns){this._cachedCompiledPatterns=new ee;for(const s of this.patterns)n.getRule(s).collectPatterns(n,this._cachedCompiledPatterns);this.applyEndPatternLast?this._cachedCompiledPatterns.push(this._end.hasBackReferences?this._end.clone():this._end):this._cachedCompiledPatterns.unshift(this._end.hasBackReferences?this._end.clone():this._end)}return this._end.hasBackReferences&&(this.applyEndPatternLast?this._cachedCompiledPatterns.setSource(this._cachedCompiledPatterns.length()-1,t):this._cachedCompiledPatterns.setSource(0,t)),this._cachedCompiledPatterns}}class de extends se{constructor(n,t,s,i,r,c,o,l,m){super(n,t,s,i);u(this,"_begin");u(this,"beginCaptures");u(this,"whileCaptures");u(this,"_while");u(this,"whileHasBackReferences");u(this,"hasMissingPatterns");u(this,"patterns");u(this,"_cachedCompiledPatterns");u(this,"_cachedCompiledWhilePatterns");this._begin=new D(r,this.id),this.beginCaptures=c,this.whileCaptures=l,this._while=new D(o,$n),this.whileHasBackReferences=this._while.hasBackReferences,this.patterns=m.patterns,this.hasMissingPatterns=m.hasMissingPatterns,this._cachedCompiledPatterns=null,this._cachedCompiledWhilePatterns=null}dispose(){this._cachedCompiledPatterns&&(this._cachedCompiledPatterns.dispose(),this._cachedCompiledPatterns=null),this._cachedCompiledWhilePatterns&&(this._cachedCompiledWhilePatterns.dispose(),this._cachedCompiledWhilePatterns=null)}get debugBeginRegExp(){return`${this._begin.source}`}get debugWhileRegExp(){return`${this._while.source}`}getWhileWithResolvedBackReferences(n,t){return this._while.resolveBackReferences(n,t)}collectPatterns(n,t){t.push(this._begin)}compile(n,t){return this._getCachedCompiledPatterns(n).compile(n)}compileAG(n,t,s,i){return this._getCachedCompiledPatterns(n).compileAG(n,s,i)}_getCachedCompiledPatterns(n){if(!this._cachedCompiledPatterns){this._cachedCompiledPatterns=new ee;for(const t of this.patterns)n.getRule(t).collectPatterns(n,this._cachedCompiledPatterns)}return this._cachedCompiledPatterns}compileWhile(n,t){return this._getCachedCompiledWhilePatterns(n,t).compile(n)}compileWhileAG(n,t,s,i){return this._getCachedCompiledWhilePatterns(n,t).compileAG(n,s,i)}_getCachedCompiledWhilePatterns(n,t){return this._cachedCompiledWhilePatterns||(this._cachedCompiledWhilePatterns=new ee,this._cachedCompiledWhilePatterns.push(this._while.hasBackReferences?this._while.clone():this._while)),this._while.hasBackReferences&&this._cachedCompiledWhilePatterns.setSource(0,t||"￿"),this._cachedCompiledWhilePatterns}}class A{static createCaptureRule(e,n,t,s,i){return e.registerRule(r=>new qt(n,r,t,s,i))}static getCompiledRuleId(e,n,t){return e.id||n.registerRule(s=>{if(e.id=s,e.match)return new Et(e.$vscodeTextmateLocation,e.id,e.name,e.match,A._compileCaptures(e.captures,n,t));if(typeof e.begin>"u"){e.repository&&(t=dn({},t,e.repository));let i=e.patterns;return typeof i>"u"&&e.include&&(i=[{include:e.include}]),new Ue(e.$vscodeTextmateLocation,e.id,e.name,e.contentName,A._compilePatterns(i,n,t))}return e.while?new de(e.$vscodeTextmateLocation,e.id,e.name,e.contentName,e.begin,A._compileCaptures(e.beginCaptures||e.captures,n,t),e.while,A._compileCaptures(e.whileCaptures||e.captures,n,t),A._compilePatterns(e.patterns,n,t)):new qe(e.$vscodeTextmateLocation,e.id,e.name,e.contentName,e.begin,A._compileCaptures(e.beginCaptures||e.captures,n,t),e.end,A._compileCaptures(e.endCaptures||e.captures,n,t),e.applyEndPatternLast,A._compilePatterns(e.patterns,n,t))}),e.id}static _compileCaptures(e,n,t){let s=[];if(e){let i=0;for(const r in e){if(r==="$vscodeTextmateLocation")continue;const c=parseInt(r,10);c>i&&(i=c)}for(let r=0;r<=i;r++)s[r]=null;for(const r in e){if(r==="$vscodeTextmateLocation")continue;const c=parseInt(r,10);let o=0;e[r].patterns&&(o=A.getCompiledRuleId(e[r],n,t)),s[c]=A.createCaptureRule(n,e[r].$vscodeTextmateLocation,e[r].name,e[r].contentName,o)}}return s}static _compilePatterns(e,n,t){let s=[];if(e)for(let i=0,r=e.length;ie.substring(s.start,s.end));return Me.lastIndex=0,this.source.replace(Me,(s,i)=>fn(t[parseInt(i,10)]||""))}_buildAnchorCache(){let e=[],n=[],t=[],s=[],i,r,c,o;for(i=0,r=this.source.length;it.source);this._cached=new He(e,n,this._items.map(t=>t.ruleId))}return this._cached}compileAG(e,n,t){return this._hasAnchors?n?t?(this._anchorCache.A1_G1||(this._anchorCache.A1_G1=this._resolveAnchors(e,n,t)),this._anchorCache.A1_G1):(this._anchorCache.A1_G0||(this._anchorCache.A1_G0=this._resolveAnchors(e,n,t)),this._anchorCache.A1_G0):t?(this._anchorCache.A0_G1||(this._anchorCache.A0_G1=this._resolveAnchors(e,n,t)),this._anchorCache.A0_G1):(this._anchorCache.A0_G0||(this._anchorCache.A0_G0=this._resolveAnchors(e,n,t)),this._anchorCache.A0_G0):this.compile(e)}_resolveAnchors(e,n,t){let s=this._items.map(i=>i.resolveAnchors(n,t));return new He(e,s,this._items.map(i=>i.ruleId))}}class He{constructor(e,n,t){u(this,"regExps");u(this,"rules");u(this,"scanner");this.regExps=n,this.rules=t,this.scanner=e.createOnigScanner(n)}dispose(){typeof this.scanner.dispose=="function"&&this.scanner.dispose()}toString(){const e=[];for(let n=0,t=this.rules.length;nthis._root.match(e)));this._colorMap=e,this._defaults=n,this._root=t}static createFromRawTheme(e,n){return this.createFromParsedTheme(Nt(e),n)}static createFromParsedTheme(e,n){return Bt(e,n)}getColorMap(){return this._colorMap.getColorMap()}getDefaults(){return this._defaults}match(e){if(e===null)return this._defaults;const n=e.scopeName,s=this._cachedMatchRoot.get(n).find(i=>St(e.parent,i.parentScopes));return s?new xn(s.fontStyle,s.foreground,s.background):null}}class I{constructor(e,n){u(this,"parent");u(this,"scopeName");this.parent=e,this.scopeName=n}static push(e,n){for(const t of n)e=new I(e,t);return e}static from(...e){let n=null;for(let t=0;t1&&($=f.slice(0,f.length-1),$.reverse()),n[t++]=new Gt(_,$,s,o,l,m)}}return n}class Gt{constructor(e,n,t,s,i,r){u(this,"scope");u(this,"parentScopes");u(this,"index");u(this,"fontStyle");u(this,"foreground");u(this,"background");this.scope=e,this.parentScopes=n,this.index=t,this.fontStyle=s,this.foreground=i,this.background=r}}function Bt(a,e){a.sort((o,l)=>{let m=gn(o.scope,l.scope);return m!==0||(m=hn(o.parentScopes,l.parentScopes),m!==0)?m:o.index-l.index});let n=0,t="#000000",s="#ffffff";for(;a.length>=1&&a[0].scope==="";){let o=a.shift();o.fontStyle!==-1&&(n=o.fontStyle),o.foreground!==null&&(t=o.foreground),o.background!==null&&(s=o.background)}let i=new Rt(e),r=new xn(n,i.getId(t),i.getId(s)),c=new J(new ne(0,null,-1,0,0),[]);for(let o=0,l=a.length;oe?console.log("how did this happen?"):this.scopeDepth=e,n!==-1&&(this.fontStyle=n),t!==0&&(this.foreground=t),s!==0&&(this.background=s)}}class J{constructor(e,n=[],t={}){u(this,"_mainRule");u(this,"_children");u(this,"_rulesWithParentScopes");this._mainRule=e,this._children=t,this._rulesWithParentScopes=n}static _sortBySpecificity(e){return e.length===1||e.sort(this._cmpBySpecificity),e}static _cmpBySpecificity(e,n){if(e.scopeDepth===n.scopeDepth){const t=e.parentScopes,s=n.parentScopes;let i=t===null?0:t.length,r=s===null?0:s.length;if(i===r)for(let c=0;c{const n=this._scopeToLanguage(e),t=this._toStandardTokenType(e);return new we(n,t)}));this._defaultAttributes=new we(e,8),this._embeddedLanguagesMatcher=new Tt(Object.entries(n||{}))}getDefaultAttributes(){return this._defaultAttributes}getBasicScopeAttributes(e){return e===null?M._NULL_SCOPE_METADATA:this._getBasicScopeAttributes.get(e)}_scopeToLanguage(e){return this._embeddedLanguagesMatcher.match(e)||0}_toStandardTokenType(e){const n=e.match(M.STANDARD_TOKEN_TYPE_REGEXP);if(!n)return 8;switch(n[1]){case"comment":return 1;case"string":return 2;case"regex":return 3;case"meta.embedded":return 0}throw new Error("Unexpected match for standard token type!")}};u(M,"_NULL_SCOPE_METADATA",new we(0,0)),u(M,"STANDARD_TOKEN_TYPE_REGEXP",/\b(comment|string|regex|meta\.embedded)\b/);let Se=M;class Tt{constructor(e){u(this,"values");u(this,"scopesRegExp");if(e.length===0)this.values=null,this.scopesRegExp=null;else{this.values=new Map(e);const n=e.map(([t,s])=>fn(t));n.sort(),n.reverse(),this.scopesRegExp=new RegExp(`^((${n.join(")|(")}))($|\\.)`,"")}}match(e){if(!this.scopesRegExp)return;const n=e.match(this.scopesRegExp);if(n)return this.values.get(n[1])}}class We{constructor(e,n){u(this,"stack");u(this,"stoppedEarly");this.stack=e,this.stoppedEarly=n}}function wn(a,e,n,t,s,i,r,c){const o=e.content.length;let l=!1,m=-1;if(r){const g=Pt(a,e,n,t,s,i);s=g.stack,t=g.linePos,n=g.isFirstLine,m=g.anchorPosition}const p=Date.now();for(;!l;){if(c!==0&&Date.now()-p>c)return new We(s,!0);d()}return new We(s,!1);function d(){const g=Lt(a,e,n,t,s,m);if(!g){i.produce(s,o),l=!0;return}const f=g.captureIndices,_=g.matchedRuleId,$=f&&f.length>0?f[0].end>t:!1;if(_===At){const b=s.getRule(a);i.produce(s,f[0].start),s=s.withContentNameScopesList(s.nameScopesList),K(a,e,n,s,i,b.endCaptures,f),i.produce(s,f[0].end);const y=s;if(s=s.parent,m=y.getAnchorPos(),!$&&y.getEnterPos()===t){s=y,i.produce(s,o),l=!0;return}}else{const b=a.getRule(_);i.produce(s,f[0].start);const y=s,w=b.getName(e.content,f),C=s.contentNameScopesList.pushAttributed(w,a);if(s=s.push(_,t,m,f[0].end===o,null,C,C),b instanceof qe){const k=b;K(a,e,n,s,i,k.beginCaptures,f),i.produce(s,f[0].end),m=f[0].end;const z=k.getContentName(e.content,f),L=C.pushAttributed(z,a);if(s=s.withContentNameScopesList(L),k.endHasBackReferences&&(s=s.withEndRule(k.getEndWithResolvedBackReferences(e.content,f))),!$&&y.hasSameRuleAs(s)){s=s.pop(),i.produce(s,o),l=!0;return}}else if(b instanceof de){const k=b;K(a,e,n,s,i,k.beginCaptures,f),i.produce(s,f[0].end),m=f[0].end;const z=k.getContentName(e.content,f),L=C.pushAttributed(z,a);if(s=s.withContentNameScopesList(L),k.whileHasBackReferences&&(s=s.withEndRule(k.getWhileWithResolvedBackReferences(e.content,f))),!$&&y.hasSameRuleAs(s)){s=s.pop(),i.produce(s,o),l=!0;return}}else if(K(a,e,n,s,i,b.captures,f),i.produce(s,f[0].end),s=s.pop(),!$){s=s.safePop(),i.produce(s,o),l=!0;return}}f[0].end>t&&(t=f[0].end,n=!1)}}function Pt(a,e,n,t,s,i){let r=s.beginRuleCapturedEOL?0:-1;const c=[];for(let o=s;o;o=o.pop()){const l=o.getRule(a);l instanceof de&&c.push({rule:l,stack:o})}for(let o=c.pop();o;o=c.pop()){const{ruleScanner:l,findOptions:m}=Dt(o.rule,a,o.stack.endRule,n,t===r),p=l.findNextMatchSync(e,t,m);if(p){if(p.ruleId!==$n){s=o.stack.pop();break}p.captureIndices&&p.captureIndices.length&&(i.produce(o.stack,p.captureIndices[0].start),K(a,e,n,o.stack,i,o.rule.whileCaptures,p.captureIndices),i.produce(o.stack,p.captureIndices[0].end),r=p.captureIndices[0].end,p.captureIndices[0].end>t&&(t=p.captureIndices[0].end,n=!1))}else{s=o.stack.pop();break}}return{stack:s,linePos:t,anchorPosition:r,isFirstLine:n}}function Lt(a,e,n,t,s,i){const r=Ot(a,e,n,t,s,i),c=a.getInjections();if(c.length===0)return r;const o=It(c,a,e,n,t,s,i);if(!o)return r;if(!r)return o;const l=r.captureIndices[0].start,m=o.captureIndices[0].start;return m=c)&&(c=w,o=y.captureIndices,l=y.ruleId,m=f.priority,c===s))break}return o?{priorityMatch:m===-1,captureIndices:o,matchedRuleId:l}:null}function kn(a,e,n,t,s){return{ruleScanner:a.compileAG(e,n,t,s),findOptions:0}}function Dt(a,e,n,t,s){return{ruleScanner:a.compileWhileAG(e,n,t,s),findOptions:0}}function K(a,e,n,t,s,i,r){if(i.length===0)return;const c=e.content,o=Math.min(i.length,r.length),l=[],m=r[0].end;for(let p=0;pm)break;for(;l.length>0&&l[l.length-1].endPos<=g.start;)s.produceFromScopes(l[l.length-1].scopes,l[l.length-1].endPos),l.pop();if(l.length>0?s.produceFromScopes(l[l.length-1].scopes,g.start):s.produce(t,g.start),d.retokenizeCapturedWithRuleId){const _=d.getName(c,r),$=t.contentNameScopesList.pushAttributed(_,a),b=d.getContentName(c,r),y=$.pushAttributed(b,a),w=t.push(d.retokenizeCapturedWithRuleId,g.start,-1,!1,null,$,y),C=a.createOnigString(c.substring(0,g.end));wn(a,C,n&&g.start===0,g.start,w,s,!1,0),pn(C);continue}const f=d.getName(c,r);if(f!==null){const $=(l.length>0?l[l.length-1].scopes:t.contentNameScopesList).pushAttributed(f,a);l.push(new Zt($,g.end))}}for(;l.length>0;)s.produceFromScopes(l[l.length-1].scopes,l[l.length-1].endPos),l.pop()}class Zt{constructor(e,n){u(this,"scopes");u(this,"endPos");this.scopes=e,this.endPos=n}}function Mt(a,e,n,t,s,i,r,c){return new Ht(a,e,n,t,s,i,r,c)}function Ve(a,e,n,t,s){const i=me(e,be),r=A.getCompiledRuleId(n,t,s.repository);for(const c of i)a.push({debugSelector:e,matcher:c.matcher,ruleId:r,grammar:s,priority:c.priority})}function be(a,e){if(e.length{for(let s=n;sn&&a.substr(0,n)===e&&a[n]==="."}class Ht{constructor(e,n,t,s,i,r,c,o){u(this,"_rootScopeName");u(this,"balancedBracketSelectors");u(this,"_onigLib");u(this,"_rootId");u(this,"_lastRuleId");u(this,"_ruleId2desc");u(this,"_includedGrammars");u(this,"_grammarRepository");u(this,"_grammar");u(this,"_injections");u(this,"_basicScopeAttributesProvider");u(this,"_tokenTypeMatchers");if(this._rootScopeName=e,this.balancedBracketSelectors=r,this._onigLib=o,this._basicScopeAttributesProvider=new Se(t,s),this._rootId=-1,this._lastRuleId=0,this._ruleId2desc=[null],this._includedGrammars={},this._grammarRepository=c,this._grammar=Xe(n,null),this._injections=null,this._tokenTypeMatchers=[],i)for(const l of Object.keys(i)){const m=me(l,be);for(const p of m)this._tokenTypeMatchers.push({matcher:p.matcher,type:i[l]})}}get themeProvider(){return this._grammarRepository}dispose(){for(const e of this._ruleId2desc)e&&e.dispose()}createOnigScanner(e){return this._onigLib.createOnigScanner(e)}createOnigString(e){return this._onigLib.createOnigString(e)}getMetadataForScope(e){return this._basicScopeAttributesProvider.getBasicScopeAttributes(e)}_collectInjections(){const e={lookup:i=>i===this._rootScopeName?this._grammar:this.getExternalGrammar(i),injections:i=>this._grammarRepository.injections(i)},n=[],t=this._rootScopeName,s=e.lookup(t);if(s){const i=s.injections;if(i)for(let c in i)Ve(n,c,i[c],this,s);const r=this._grammarRepository.injections(t);r&&r.forEach(c=>{const o=this.getExternalGrammar(c);if(o){const l=o.injectionSelector;l&&Ve(n,l,o,this,o)}})}return n.sort((i,r)=>i.priority-r.priority),n}getInjections(){return this._injections===null&&(this._injections=this._collectInjections()),this._injections}registerRule(e){const n=++this._lastRuleId,t=e(n);return this._ruleId2desc[n]=t,t}getRule(e){return this._ruleId2desc[e]}getExternalGrammar(e,n){if(this._includedGrammars[e])return this._includedGrammars[e];if(this._grammarRepository){const t=this._grammarRepository.lookup(e);if(t)return this._includedGrammars[e]=Xe(t,n&&n.$base),this._includedGrammars[e]}}tokenizeLine(e,n,t=0){const s=this._tokenize(e,n,!1,t);return{tokens:s.lineTokens.getResult(s.ruleStack,s.lineLength),ruleStack:s.ruleStack,stoppedEarly:s.stoppedEarly}}tokenizeLine2(e,n,t=0){const s=this._tokenize(e,n,!0,t);return{tokens:s.lineTokens.getBinaryResult(s.ruleStack,s.lineLength),ruleStack:s.ruleStack,stoppedEarly:s.stoppedEarly}}_tokenize(e,n,t,s){this._rootId===-1&&(this._rootId=A.getCompiledRuleId(this._grammar.repository.$self,this,this._grammar.repository),this.getInjections());let i;if(!n||n===te.NULL){i=!0;const m=this._basicScopeAttributesProvider.getDefaultAttributes(),p=this.themeProvider.getDefaults(),d=W.set(0,m.languageId,m.tokenType,null,p.fontStyle,p.foregroundId,p.backgroundId),g=this.getRule(this._rootId).getName(null,null);let f;g?f=S.createRootAndLookUpScopeName(g,d,this):f=S.createRoot("unknown",d),n=new te(null,this._rootId,-1,-1,!1,null,f,f)}else i=!1,n.reset();e=e+` +`;const r=this.createOnigString(e),c=r.content.length,o=new Vt(t,e,this._tokenTypeMatchers,this.balancedBracketSelectors),l=wn(this,r,i,0,n,o,!0,s);return pn(r),{lineLength:c,lineTokens:o,ruleStack:l.stack,stoppedEarly:l.stoppedEarly}}}function Xe(a,e){return a=gt(a),a.repository=a.repository||{},a.repository.$self={$vscodeTextmateLocation:a.$vscodeTextmateLocation,patterns:a.patterns,name:a.scopeName},a.repository.$base=e||a.repository.$self,a}class S{constructor(e,n,t){u(this,"parent");u(this,"scopePath");u(this,"tokenAttributes");this.parent=e,this.scopePath=n,this.tokenAttributes=t}static fromExtension(e,n){let t=e,s=(e==null?void 0:e.scopePath)??null;for(const i of n)s=I.push(s,i.scopeNames),t=new S(t,s,i.encodedTokenAttributes);return t}static createRoot(e,n){return new S(null,new I(null,e),n)}static createRootAndLookUpScopeName(e,n,t){const s=t.getMetadataForScope(e),i=new I(null,e),r=t.themeProvider.themeMatch(i),c=S.mergeAttributes(n,s,r);return new S(null,i,c)}get scopeName(){return this.scopePath.scopeName}toString(){return this.getScopeNames().join(" ")}equals(e){return S.equals(this,e)}static equals(e,n){do{if(e===n||!e&&!n)return!0;if(!e||!n||e.scopeName!==n.scopeName||e.tokenAttributes!==n.tokenAttributes)return!1;e=e.parent,n=n.parent}while(!0)}static mergeAttributes(e,n,t){let s=-1,i=0,r=0;return t!==null&&(s=t.fontStyle,i=t.foregroundId,r=t.backgroundId),W.set(e,n.languageId,n.tokenType,null,s,i,r)}pushAttributed(e,n){if(e===null)return this;if(e.indexOf(" ")===-1)return S._pushAttributed(this,e,n);const t=e.split(/ /g);let s=this;for(const i of t)s=S._pushAttributed(s,i,n);return s}static _pushAttributed(e,n,t){const s=t.getMetadataForScope(n),i=e.scopePath.push(n),r=t.themeProvider.themeMatch(i),c=S.mergeAttributes(e.tokenAttributes,s,r);return new S(e,i,c)}getScopeNames(){return this.scopePath.getSegments()}getExtensionIfDefined(e){var s;const n=[];let t=this;for(;t&&t!==e;)n.push({encodedTokenAttributes:t.tokenAttributes,scopeNames:t.scopePath.getExtensionIfDefined(((s=t.parent)==null?void 0:s.scopePath)??null)}),t=t.parent;return t===e?n.reverse():void 0}}const P=class P{constructor(e,n,t,s,i,r,c,o){u(this,"parent");u(this,"ruleId");u(this,"beginRuleCapturedEOL");u(this,"endRule");u(this,"nameScopesList");u(this,"contentNameScopesList");u(this,"_stackElementBrand");u(this,"_enterPos");u(this,"_anchorPos");u(this,"depth");this.parent=e,this.ruleId=n,this.beginRuleCapturedEOL=i,this.endRule=r,this.nameScopesList=c,this.contentNameScopesList=o,this.depth=this.parent?this.parent.depth+1:1,this._enterPos=t,this._anchorPos=s}equals(e){return e===null?!1:P._equals(this,e)}static _equals(e,n){return e===n?!0:this._structuralEquals(e,n)?S.equals(e.contentNameScopesList,n.contentNameScopesList):!1}static _structuralEquals(e,n){do{if(e===n||!e&&!n)return!0;if(!e||!n||e.depth!==n.depth||e.ruleId!==n.ruleId||e.endRule!==n.endRule)return!1;e=e.parent,n=n.parent}while(!0)}clone(){return this}static _reset(e){for(;e;)e._enterPos=-1,e._anchorPos=-1,e=e.parent}reset(){P._reset(this)}pop(){return this.parent}safePop(){return this.parent?this.parent:this}push(e,n,t,s,i,r,c){return new P(this,e,n,t,s,i,r,c)}getEnterPos(){return this._enterPos}getAnchorPos(){return this._anchorPos}getRule(e){return e.getRule(this.ruleId)}toString(){const e=[];return this._writeString(e,0),"["+e.join(",")+"]"}_writeString(e,n){var t,s;return this.parent&&(n=this.parent._writeString(e,n)),e[n++]=`(${this.ruleId}, ${(t=this.nameScopesList)==null?void 0:t.toString()}, ${(s=this.contentNameScopesList)==null?void 0:s.toString()})`,n}withContentNameScopesList(e){return this.contentNameScopesList===e?this:this.parent.push(this.ruleId,this._enterPos,this._anchorPos,this.beginRuleCapturedEOL,this.endRule,this.nameScopesList,e)}withEndRule(e){return this.endRule===e?this:new P(this.parent,this.ruleId,this._enterPos,this._anchorPos,this.beginRuleCapturedEOL,e,this.nameScopesList,this.contentNameScopesList)}hasSameRuleAs(e){let n=this;for(;n&&n._enterPos===e._enterPos;){if(n.ruleId===e.ruleId)return!0;n=n.parent}return!1}toStateStackFrame(){var e,n,t;return{ruleId:this.ruleId,beginRuleCapturedEOL:this.beginRuleCapturedEOL,endRule:this.endRule,nameScopesList:((n=this.nameScopesList)==null?void 0:n.getExtensionIfDefined(((e=this.parent)==null?void 0:e.nameScopesList)??null))??[],contentNameScopesList:((t=this.contentNameScopesList)==null?void 0:t.getExtensionIfDefined(this.nameScopesList))??[]}}static pushFrame(e,n){const t=S.fromExtension((e==null?void 0:e.nameScopesList)??null,n.nameScopesList);return new P(e,n.ruleId,n.enterPos??-1,n.anchorPos??-1,n.beginRuleCapturedEOL,n.endRule,t,S.fromExtension(t,n.contentNameScopesList))}};u(P,"NULL",new P(null,0,0,0,!1,null,null,null));let te=P;class Wt{constructor(e,n){u(this,"balancedBracketScopes");u(this,"unbalancedBracketScopes");u(this,"allowAny",!1);this.balancedBracketScopes=e.flatMap(t=>t==="*"?(this.allowAny=!0,[]):me(t,be).map(s=>s.matcher)),this.unbalancedBracketScopes=n.flatMap(t=>me(t,be).map(s=>s.matcher))}get matchesAlways(){return this.allowAny&&this.unbalancedBracketScopes.length===0}get matchesNever(){return this.balancedBracketScopes.length===0&&!this.allowAny}match(e){for(const n of this.unbalancedBracketScopes)if(n(e))return!1;for(const n of this.balancedBracketScopes)if(n(e))return!0;return this.allowAny}}class Vt{constructor(e,n,t,s){u(this,"balancedBracketSelectors");u(this,"_emitBinaryTokens");u(this,"_lineText");u(this,"_tokens");u(this,"_binaryTokens");u(this,"_lastTokenEndIndex");u(this,"_tokenTypeOverrides");this.balancedBracketSelectors=s,this._emitBinaryTokens=e,this._tokenTypeOverrides=t,this._lineText=null,this._tokens=[],this._binaryTokens=[],this._lastTokenEndIndex=0}produce(e,n){this.produceFromScopes(e.contentNameScopesList,n)}produceFromScopes(e,n){var s;if(this._lastTokenEndIndex>=n)return;if(this._emitBinaryTokens){let i=(e==null?void 0:e.tokenAttributes)??0,r=!1;if((s=this.balancedBracketSelectors)!=null&&s.matchesAlways&&(r=!0),this._tokenTypeOverrides.length>0||this.balancedBracketSelectors&&!this.balancedBracketSelectors.matchesAlways&&!this.balancedBracketSelectors.matchesNever){const c=(e==null?void 0:e.getScopeNames())??[];for(const o of this._tokenTypeOverrides)o.matcher(c)&&(i=W.set(i,0,o.type,null,-1,0,0));this.balancedBracketSelectors&&(r=this.balancedBracketSelectors.match(c))}if(r&&(i=W.set(i,0,8,r,-1,0,0)),this._binaryTokens.length>0&&this._binaryTokens[this._binaryTokens.length-1]===i){this._lastTokenEndIndex=n;return}this._binaryTokens.push(this._lastTokenEndIndex),this._binaryTokens.push(i),this._lastTokenEndIndex=n;return}const t=(e==null?void 0:e.getScopeNames())??[];this._tokens.push({startIndex:this._lastTokenEndIndex,endIndex:n,scopes:t}),this._lastTokenEndIndex=n}getResult(e,n){return this._tokens.length>0&&this._tokens[this._tokens.length-1].startIndex===n-1&&this._tokens.pop(),this._tokens.length===0&&(this._lastTokenEndIndex=-1,this.produce(e,n),this._tokens[this._tokens.length-1].startIndex=0),this._tokens}getBinaryResult(e,n){this._binaryTokens.length>0&&this._binaryTokens[this._binaryTokens.length-2]===n-1&&(this._binaryTokens.pop(),this._binaryTokens.pop()),this._binaryTokens.length===0&&(this._lastTokenEndIndex=-1,this.produce(e,n),this._binaryTokens[this._binaryTokens.length-2]=0);const t=new Uint32Array(this._binaryTokens.length);for(let s=0,i=this._binaryTokens.length;s0;)await Promise.all(r.Q.map(c=>this._loadSingleGrammar(c.scopeName))),r.processQueue();return this._grammarForScopeName(e,n,t,s,i)}async _loadSingleGrammar(e){return this._ensureGrammarCache.has(e)||this._ensureGrammarCache.set(e,this._doLoadSingleGrammar(e)),this._ensureGrammarCache.get(e)}async _doLoadSingleGrammar(e){const n=await this._options.loadGrammar(e);if(n){const t=typeof this._options.getInjections=="function"?this._options.getInjections(e):void 0;this._syncRegistry.addGrammar(n,t)}}async addGrammar(e,n=[],t=0,s=null){return this._syncRegistry.addGrammar(e,n),await this._grammarForScopeName(e.scopeName,t,s)}_grammarForScopeName(e,n=0,t=null,s=null,i=null){return this._syncRegistry.grammarForScopeName(e,n,t,s,i)}};const jn=te.NULL,E={LANGUAGEID_MASK:255,TOKEN_TYPE_MASK:768,BALANCED_BRACKETS_MASK:1024,FONT_STYLE_MASK:14336,FOREGROUND_MASK:8372224,BACKGROUND_MASK:4286578688,LANGUAGEID_OFFSET:0,TOKEN_TYPE_OFFSET:8,BALANCED_BRACKETS_OFFSET:10,FONT_STYLE_OFFSET:11,FOREGROUND_OFFSET:15,BACKGROUND_OFFSET:24};class T{static toBinaryStr(e){let n=e.toString(2);for(;n.length<32;)n=`0${n}`;return n}static getLanguageId(e){return(e&E.LANGUAGEID_MASK)>>>E.LANGUAGEID_OFFSET}static getTokenType(e){return(e&E.TOKEN_TYPE_MASK)>>>E.TOKEN_TYPE_OFFSET}static getFontStyle(e){return(e&E.FONT_STYLE_MASK)>>>E.FONT_STYLE_OFFSET}static getForeground(e){return(e&E.FOREGROUND_MASK)>>>E.FOREGROUND_OFFSET}static getBackground(e){return(e&E.BACKGROUND_MASK)>>>E.BACKGROUND_OFFSET}static containsBalancedBrackets(e){return(e&E.BALANCED_BRACKETS_MASK)!==0}static set(e,n,t,s,i,r){let c=T.getLanguageId(e),o=T.getTokenType(e),l=T.getFontStyle(e),m=T.getForeground(e),p=T.getBackground(e);const d=T.containsBalancedBrackets(e)?1:0;return n!==0&&(c=n),t!==0&&(o=t===8?0:t),s!==R.NotSet&&(l=s),i!==0&&(m=i),r!==0&&(p=r),(c<>>0}}const Kt=["area","base","basefont","bgsound","br","col","command","embed","frame","hr","image","img","input","keygen","link","meta","param","source","track","wbr"];class ie{constructor(e,n,t){this.property=e,this.normal=n,t&&(this.space=t)}}ie.prototype.property={};ie.prototype.normal={};ie.prototype.space=null;function vn(a,e){const n={},t={};let s=-1;for(;++s4&&n.slice(0,4)==="data"&&ta.test(e)){if(e.charAt(4)==="-"){const i=e.slice(5).replace(Ke,ra);t="data"+i.charAt(0).toUpperCase()+i.slice(1)}else{const i=e.slice(4);if(!Ke.test(i)){let r=i.replace(aa,ia);r.charAt(0)!=="-"&&(r="-"+r),e="data"+r}}s=Re}return new s(t,e)}function ia(a){return"-"+a.toLowerCase()}function ra(a){return a.charAt(1).toUpperCase()}const oa=vn([An,Fn,Sn,zn,ea],"html"),Nn=vn([An,Fn,Sn,zn,na],"svg"),Je={}.hasOwnProperty;function ca(a,e){const n=e||{};function t(s,...i){let r=t.invalid;const c=t.handlers;if(s&&Je.call(s,a)){const o=String(s[a]);r=Je.call(c,o)?c[o]:t.unknown}if(r)return r.call(this,s,...i)}return t.handlers=n.handlers||{},t.invalid=n.invalid,t.unknown=n.unknown,t}function la(a,e){if(a=a.replace(e.subset?ua(e.subset):/["&'<>`]/g,t),e.subset||e.escapeOnly)return a;return a.replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,n).replace(/[\x01-\t\v\f\x0E-\x1F\x7F\x81\x8D\x8F\x90\x9D\xA0-\uFFFF]/g,t);function n(s,i,r){return e.format((s.charCodeAt(0)-55296)*1024+s.charCodeAt(1)-56320+65536,r.charCodeAt(i+2),e)}function t(s,i,r){return e.format(s.charCodeAt(0),r.charCodeAt(i+1),e)}}function ua(a){const e=[];let n=-1;for(;++n",OElig:"Œ",oelig:"œ",Scaron:"Š",scaron:"š",Yuml:"Ÿ",circ:"ˆ",tilde:"˜",ensp:" ",emsp:" ",thinsp:" ",zwnj:"‌",zwj:"‍",lrm:"‎",rlm:"‏",ndash:"–",mdash:"—",lsquo:"‘",rsquo:"’",sbquo:"‚",ldquo:"“",rdquo:"”",bdquo:"„",dagger:"†",Dagger:"‡",permil:"‰",lsaquo:"‹",rsaquo:"›",euro:"€"},ba=["cent","copy","divide","gt","lt","not","para","times"],Gn={}.hasOwnProperty,Ge={};let oe;for(oe in je)Gn.call(je,oe)&&(Ge[je[oe]]=oe);function ga(a,e,n,t){const s=String.fromCharCode(a);if(Gn.call(Ge,s)){const i=Ge[s],r="&"+i;return n&&da.includes(i)&&!ba.includes(i)&&(!t||e&&e!==61&&/[^\da-z]/i.test(String.fromCharCode(e)))?r:r+";"}return""}function ha(a,e,n){let t=ma(a,e,n.omitOptionalSemicolons),s;if((n.useNamedReferences||n.useShortestReferences)&&(s=ga(a,e,n.omitOptionalSemicolons,n.attribute)),(n.useShortestReferences||!s)&&n.useShortestReferences){const i=pa(a,e,n.omitOptionalSemicolons);i.length"]}))+">":"|--!>|";function s(i){return H(i,Object.assign({},t.settings.characterReferences,{subset:["<",">"]}))}}function ya(a,e,n,t){return""}function Qe(a,e){const n=String(a);if(typeof e!="string")throw new TypeError("Expected character");let t=0,s=n.indexOf(e);for(;s!==-1;)t++,s=n.indexOf(e,s+e.length);return t}function _a(a,e){const n=e||{};return(a[a.length-1]===""?[...a,""]:a).join((n.padRight?" ":"")+","+(n.padLeft===!1?"":" ")).trim()}function $a(a){return a.join(" ").trim()}const xa=/[ \t\n\f\r]/g;function Te(a){return typeof a=="object"?a.type==="text"?en(a.value):!1:en(a)}function en(a){return a.replace(xa,"")===""}const F=Rn(1),Bn=Rn(-1),wa=[];function Rn(a){return e;function e(n,t,s){const i=n?n.children:wa;let r=(t||0)+a,c=i[r];if(!s)for(;c&&Te(c);)r+=a,c=i[r];return c}}const ka={}.hasOwnProperty;function Tn(a){return e;function e(n,t,s){return ka.call(a,n.tagName)&&a[n.tagName](n,t,s)}}const Pe=Tn({body:va,caption:ve,colgroup:ve,dd:qa,dt:Aa,head:ve,html:ja,li:Fa,optgroup:Ea,option:Sa,p:Ca,rp:nn,rt:nn,tbody:Na,td:tn,tfoot:Ga,th:tn,thead:za,tr:Ba});function ve(a,e,n){const t=F(n,e,!0);return!t||t.type!=="comment"&&!(t.type==="text"&&Te(t.value.charAt(0)))}function ja(a,e,n){const t=F(n,e);return!t||t.type!=="comment"}function va(a,e,n){const t=F(n,e);return!t||t.type!=="comment"}function Ca(a,e,n){const t=F(n,e);return t?t.type==="element"&&(t.tagName==="address"||t.tagName==="article"||t.tagName==="aside"||t.tagName==="blockquote"||t.tagName==="details"||t.tagName==="div"||t.tagName==="dl"||t.tagName==="fieldset"||t.tagName==="figcaption"||t.tagName==="figure"||t.tagName==="footer"||t.tagName==="form"||t.tagName==="h1"||t.tagName==="h2"||t.tagName==="h3"||t.tagName==="h4"||t.tagName==="h5"||t.tagName==="h6"||t.tagName==="header"||t.tagName==="hgroup"||t.tagName==="hr"||t.tagName==="main"||t.tagName==="menu"||t.tagName==="nav"||t.tagName==="ol"||t.tagName==="p"||t.tagName==="pre"||t.tagName==="section"||t.tagName==="table"||t.tagName==="ul"):!n||!(n.type==="element"&&(n.tagName==="a"||n.tagName==="audio"||n.tagName==="del"||n.tagName==="ins"||n.tagName==="map"||n.tagName==="noscript"||n.tagName==="video"))}function Fa(a,e,n){const t=F(n,e);return!t||t.type==="element"&&t.tagName==="li"}function Aa(a,e,n){const t=F(n,e);return!!(t&&t.type==="element"&&(t.tagName==="dt"||t.tagName==="dd"))}function qa(a,e,n){const t=F(n,e);return!t||t.type==="element"&&(t.tagName==="dt"||t.tagName==="dd")}function nn(a,e,n){const t=F(n,e);return!t||t.type==="element"&&(t.tagName==="rp"||t.tagName==="rt")}function Ea(a,e,n){const t=F(n,e);return!t||t.type==="element"&&t.tagName==="optgroup"}function Sa(a,e,n){const t=F(n,e);return!t||t.type==="element"&&(t.tagName==="option"||t.tagName==="optgroup")}function za(a,e,n){const t=F(n,e);return!!(t&&t.type==="element"&&(t.tagName==="tbody"||t.tagName==="tfoot"))}function Na(a,e,n){const t=F(n,e);return!t||t.type==="element"&&(t.tagName==="tbody"||t.tagName==="tfoot")}function Ga(a,e,n){return!F(n,e)}function Ba(a,e,n){const t=F(n,e);return!t||t.type==="element"&&t.tagName==="tr"}function tn(a,e,n){const t=F(n,e);return!t||t.type==="element"&&(t.tagName==="td"||t.tagName==="th")}const Ra=Tn({body:La,colgroup:Oa,head:Pa,html:Ta,tbody:Ia});function Ta(a){const e=F(a,-1);return!e||e.type!=="comment"}function Pa(a){const e=a.children,n=[];let t=-1;for(;++t0}function La(a){const e=F(a,-1,!0);return!e||e.type!=="comment"&&!(e.type==="text"&&Te(e.value.charAt(0)))&&!(e.type==="element"&&(e.tagName==="meta"||e.tagName==="link"||e.tagName==="script"||e.tagName==="style"||e.tagName==="template"))}function Oa(a,e,n){const t=Bn(n,e),s=F(a,-1,!0);return n&&t&&t.type==="element"&&t.tagName==="colgroup"&&Pe(t,n.children.indexOf(t),n)?!1:!!(s&&s.type==="element"&&s.tagName==="col")}function Ia(a,e,n){const t=Bn(n,e),s=F(a,-1);return n&&t&&t.type==="element"&&(t.tagName==="thead"||t.tagName==="tbody")&&Pe(t,n.children.indexOf(t),n)?!1:!!(s&&s.type==="element"&&s.tagName==="tr")}const ce={name:[[` +\f\r &/=>`.split(""),` +\f\r "&'/=>\``.split("")],[`\0 +\f\r "&'/<=>`.split(""),`\0 +\f\r "&'/<=>\``.split("")]],unquoted:[[` +\f\r &>`.split(""),`\0 +\f\r "&'<=>\``.split("")],[`\0 +\f\r "&'<=>\``.split(""),`\0 +\f\r "&'<=>\``.split("")]],single:[["&'".split(""),"\"&'`".split("")],["\0&'".split(""),"\0\"&'`".split("")]],double:[['"&'.split(""),"\"&'`".split("")],['\0"&'.split(""),"\0\"&'`".split("")]]};function Da(a,e,n,t){const s=t.schema,i=s.space==="svg"?!1:t.settings.omitOptionalTags;let r=s.space==="svg"?t.settings.closeEmptyElements:t.settings.voids.includes(a.tagName.toLowerCase());const c=[];let o;s.space==="html"&&a.tagName==="svg"&&(t.schema=Nn);const l=Za(t,a.properties),m=t.all(s.space==="html"&&a.tagName==="template"?a.content:a);return t.schema=s,m&&(r=!1),(l||!i||!Ra(a,e,n))&&(c.push("<",a.tagName,l?" "+l:""),r&&(s.space==="svg"||t.settings.closeSelfClosing)&&(o=l.charAt(l.length-1),(!t.settings.tightSelfClosing||o==="/"||o&&o!=='"'&&o!=="'")&&c.push(" "),c.push("/")),c.push(">")),c.push(m),!r&&(!i||!Pe(a,e,n))&&c.push(""),c.join("")}function Za(a,e){const n=[];let t=-1,s;if(e){for(s in e)if(e[s]!==null&&e[s]!==void 0){const i=Ma(a,s,e[s]);i&&n.push(i)}}for(;++tQe(n,a.alternative)&&(r=a.alternative),c=r+H(n,Object.assign({},a.settings.characterReferences,{subset:(r==="'"?ce.single:ce.double)[s][i],attribute:!0}))+r),o+(c&&"="+c))}function Pn(a,e,n,t){return n&&n.type==="element"&&(n.tagName==="script"||n.tagName==="style")?a.value:H(a.value,Object.assign({},t.settings.characterReferences,{subset:["<","&"]}))}function Ua(a,e,n,t){return t.settings.allowDangerousHtml?a.value:Pn(a,e,n,t)}function Ha(a,e,n,t){return t.all(a)}const Wa=ca("type",{invalid:Va,unknown:Xa,handlers:{comment:fa,doctype:ya,element:Da,raw:Ua,root:Ha,text:Pn}});function Va(a){throw new Error("Expected node, not `"+a+"`")}function Xa(a){const e=a;throw new Error("Cannot compile unknown node `"+e.type+"`")}const Ya={},Ka={},Ja=[];function Qa(a,e){const n=e||Ya,t=n.quote||'"',s=t==='"'?"'":'"';if(t!=='"'&&t!=="'")throw new Error("Invalid quote `"+t+"`, expected `'` or `\"`");return{one:es,all:ns,settings:{omitOptionalTags:n.omitOptionalTags||!1,allowParseErrors:n.allowParseErrors||!1,allowDangerousCharacters:n.allowDangerousCharacters||!1,quoteSmart:n.quoteSmart||!1,preferUnquoted:n.preferUnquoted||!1,tightAttributes:n.tightAttributes||!1,upperDoctype:n.upperDoctype||!1,tightDoctype:n.tightDoctype||!1,bogusComments:n.bogusComments||!1,tightCommaSeparatedLists:n.tightCommaSeparatedLists||!1,tightSelfClosing:n.tightSelfClosing||!1,collapseEmptyAttributes:n.collapseEmptyAttributes||!1,allowDangerousHtml:n.allowDangerousHtml||!1,voids:n.voids||Kt,characterReferences:n.characterReferences||Ka,closeSelfClosing:n.closeSelfClosing||!1,closeEmptyElements:n.closeEmptyElements||!1},schema:n.space==="svg"?Nn:oa,quote:t,alternative:s}.one(Array.isArray(a)?{type:"root",children:a}:a,void 0,void 0)}function es(a,e,n){return Wa(a,e,n,this)}function ns(a){const e=[],n=a&&a.children||Ja;let t=-1;for(;++tNumber.parseInt(r));i.length===3&&!i.some(r=>Number.isNaN(r))&&(s={type:"rgb",rgb:i})}else if(t==="5"){const i=Number.parseInt(a[e+n]);Number.isNaN(i)||(s={type:"table",index:Number(i)})}return[n,s]}function ss(a){const e=[];for(let n=0;n=90&&s<=97?e.push({type:"setForegroundColor",value:{type:"named",name:O[s-90+8]}}):s>=100&&s<=107&&e.push({type:"setBackgroundColor",value:{type:"named",name:O[s-100+8]}})}return e}function is(){let a=null,e=null,n=new Set;return{parse(t){const s=[];let i=0;do{const r=as(t,i),c=r.sequence?t.substring(i,r.startPosition):t.substring(i);if(c.length>0&&s.push({value:c,foreground:a,background:e,decorations:new Set(n)}),r.sequence){const o=ss(r.sequence);for(const l of o)l.type==="resetAll"?(a=null,e=null,n.clear()):l.type==="resetForegroundColor"?a=null:l.type==="resetBackgroundColor"?e=null:l.type==="resetDecoration"&&n.delete(l.value);for(const l of o)l.type==="setForegroundColor"?a=l.value:l.type==="setBackgroundColor"?e=l.value:l.type==="setDecoration"&&n.add(l.value)}i=r.position}while(iMath.max(0,Math.min(o,255)).toString(16).padStart(2,"0")).join("")}`}let t;function s(){if(t)return t;t=[];for(let l=0;l{var o;return[c,(o=a.colors)==null?void 0:o[`terminal.ansi${c[0].toUpperCase()}${c.substring(1)}`]]}))),r=is();return s.map(c=>r.parse(c).map(o=>{let l;o.decorations.has("reverse")?l=o.background?i.value(o.background):a.bg:l=o.foreground?i.value(o.foreground):a.fg,l=Ln(l,t),o.decorations.has("dim")&&(l=ls(l));let m=R.None;return o.decorations.has("bold")&&(m|=R.Bold),o.decorations.has("italic")&&(m|=R.Italic),o.decorations.has("underline")&&(m|=R.Underline),{content:o.value,color:l,fontStyle:m}}))}function ls(a){const e=a.match(/#([0-9a-f]{3})([0-9a-f]{3})?([0-9a-f]{2})?/);if(e)if(e[3]){const t=Math.round(Number.parseInt(e[3],16)/2).toString(16).padStart(2,"0");return`#${e[1]}${e[2]}${t}`}else return e[2]?`#${e[1]}${e[2]}80`:`#${Array.from(e[1]).map(t=>`${t}${t}`).join("")}80`;const n=a.match(/var\((--[\w-]+-ansi-[\w-]+)\)/);return n?`var(${n[1]}-dim)`:a}function Le(a,e,n={}){const{lang:t="text",theme:s=a.getLoadedThemes()[0]}=n;if(ts(t))return[...e.split(/\r\n|\r|\n/).map(l=>[{content:l}])];const{theme:i,colorMap:r}=a.setTheme(s);if(t==="ansi")return cs(i,e,n);const c=a.getLangGrammar(t);return us(e,c,i,r,n)}function us(a,e,n,t,s){const i={...n.colorReplacements,...s==null?void 0:s.colorReplacements},r=a.split(/\r\n|\r|\n/);let c=jn,o=[];const l=[];for(let m=0,p=r.length;m=0&&i>=0;)sn(e[s],t[i])&&(s-=1),i-=1;return s===-1}function ds(a,e,n){const t=[];let s=0;for(let i=0,r=a.settings.length;il.trim());else if(Array.isArray(c.scope))o=c.scope;else continue;for(let l=0,m=o.length;lr[1]).map(r=>({color:r[0],theme:r[1]})),s=bs(...t.map(r=>Le(a,e,{...n,theme:r.theme,includeExplanation:!1})));return s[0].map((r,c)=>r.map((o,l)=>{const m={content:o.content,variants:{}};return s.forEach((p,d)=>{const{content:g,explanation:f,..._}=p[c][l];m.variants[t[d].color]=_}),m}))}function bs(...a){const e=a.map(()=>[]),n=a.length;for(let t=0;to[t]),i=e.map(()=>[]);e.forEach((o,l)=>o.push(i[l]));const r=s.map(()=>0),c=s.map(o=>o[0]);for(;c.every(o=>o);){const o=Math.min(...c.map(l=>l.content.length));for(let l=0;lge(a,s,i)}){var m;let s=e;for(const p of n.transformers||[])s=((m=p.preprocess)==null?void 0:m.call(t,s,n))||s;let i,r,c,o,l;if("themes"in n){const{defaultColor:p="light",cssVariablePrefix:d="--shiki-"}=n,g=Object.entries(n.themes).filter(b=>b[1]).map(b=>({color:b[0],theme:b[1]})).sort((b,y)=>b.color===p?-1:y.color===p?1:0);if(g.length===0)throw new Error("[shikiji] `themes` option must not be empty");const f=On(a,s,n);if(p&&!g.find(b=>b.color===p))throw new Error(`[shikiji] \`themes\` option must contain the defaultColor key \`${p}\``);const _=g.map(b=>a.getTheme(b.theme)),$=g.map(b=>b.color);c=f.map(b=>b.map(y=>gs(y,$,d,p))),r=g.map((b,y)=>(y===0&&p?"":`${d+b.color}:`)+_[y].fg).join(";"),i=g.map((b,y)=>(y===0&&p?"":`${d+b.color}-bg:`)+_[y].bg).join(";"),o=`shiki-themes ${_.map(b=>b.name).join(" ")}`,l=p?void 0:[r,i].join(";")}else if("theme"in n){c=Le(a,s,{...n,includeExplanation:!1});const p=a.getTheme(n.theme);i=p.bg,r=p.fg,o=p.name}else throw new Error("[shikiji] Invalid options, either `theme` or `themes` must be provided");return hs(c,{...n,fg:r,bg:i,themeName:o,rootStyle:l},t)}function gs(a,e,n,t){const s={content:a.content,explanation:a.explanation},i=e.map(o=>In(a.variants[o])),r=new Set(i.flatMap(o=>Object.keys(o))),c=i.reduce((o,l,m)=>{for(const p of r){const d=l[p]||"inherit";if(m===0&&t)o[p]=d;else{const g=n+e[m]+(p==="color"?"":`-${p}`);o[p]?o[p]+=`;${g}:${d}`:o[p]=`${g}:${d}`}}return o},{});return s.htmlStyle=t?Dn(c):Object.values(c).join(";"),s}function hs(a,e,n){var d,g,f;const{mergeWhitespaces:t=!0,transformers:s=[]}=e;e.transforms&&(s.push(e.transforms),console.warn("[shikiji] `transforms` option is deprecated, use `transformers` instead")),t===!0?a=fs(a):t==="never"&&(a=ys(a));const i=[],r={type:"root",children:[]};let c={type:"element",tagName:"pre",properties:{class:`shiki ${e.themeName||""}`,style:e.rootStyle||`background-color:${e.bg};color:${e.fg}`,tabindex:"0",...Object.fromEntries(Array.from(Object.entries(e.meta||{})).filter(([_])=>!_.startsWith("_")))},children:[]},o={type:"element",tagName:"code",properties:{},children:i};const l=[],m={...n,get tokens(){return a},get options(){return e},get root(){return r},get pre(){return c},get code(){return o},get lines(){return l}};a.forEach((_,$)=>{var w,C;$&&i.push({type:"text",value:` +`});let b={type:"element",tagName:"span",properties:{class:"line"},children:[]},y=0;for(const k of _){let z={type:"element",tagName:"span",properties:{},children:[{type:"text",value:k.content}]};const L=k.htmlStyle||Dn(In(k));L&&(z.properties.style=L);for(const Y of s)z=((w=Y==null?void 0:Y.token)==null?void 0:w.call(m,z,$+1,y,b))||z;b.children.push(z),y+=k.content.length}for(const k of s)b=((C=k==null?void 0:k.line)==null?void 0:C.call(m,b,$+1))||b;l.push(b),i.push(b)});for(const _ of s)o=((d=_==null?void 0:_.code)==null?void 0:d.call(m,o))||o;c.children.push(o);for(const _ of s)c=((g=_==null?void 0:_.pre)==null?void 0:g.call(m,c))||c;r.children.push(c);let p=r;for(const _ of s)p=((f=_==null?void 0:_.root)==null?void 0:f.call(m,p))||p;return p}function In(a){const e={};return a.color&&(e.color=a.color),a.fontStyle&&(a.fontStyle&R.Italic&&(e["font-style"]="italic"),a.fontStyle&R.Bold&&(e["font-weight"]="bold"),a.fontStyle&R.Underline&&(e["text-decoration"]="underline")),e}function Dn(a){return Object.entries(a).map(([e,n])=>`${e}:${n}`).join(";")}function fs(a){return a.map(e=>{const n=[];let t="";return e.forEach((s,i)=>{const c=!(s.fontStyle&&s.fontStyle&R.Underline);c&&s.content.match(/^\s+$/)&&e[i+1]?t+=s.content:t?(c?n.push({...s,content:t+s.content}):n.push({content:t},s),t=""):n.push(s)}),n})}function ys(a){return a.map(e=>e.flatMap(n=>{if(n.content.match(/^\s+$/))return n;const t=n.content.match(/^(\s*)(.*?)(\s*)$/);if(!t)return n;const[,s,i,r]=t;if(!s&&!r)return n;const c=[{...n,content:i}];return s&&c.unshift({content:s}),r&&c.push({content:r}),c}))}function _s(a,e,n){var i;const t={meta:{},options:n,codeToHast:(r,c)=>ge(a,r,c)};let s=Qa(ge(a,e,n,t));for(const r of n.transformers||[])s=((i=r.postprocess)==null?void 0:i.call(t,s,n))||s;return s}async function $s(a){let e,n;const t={};function s(d){n=d,t.HEAPU8=new Uint8Array(d),t.HEAPU32=new Uint32Array(d)}function i(){return typeof performance<"u"?performance.now():Date.now()}function r(d,g,f){t.HEAPU8.copyWithin(d,g,g+f)}function c(){return 2147483648}function o(d){try{return e.grow(d-n.byteLength+65535>>>16),s(e.buffer),1}catch{}}function l(d){const g=t.HEAPU8.length;d=d>>>0;const f=c();if(d>f)return!1;const _=($,b)=>$+(b-$%b)%b;for(let $=1;$<=4;$*=2){let b=g*(1+.2/$);b=Math.min(b,d+100663296);const y=Math.min(f,_(Math.max(d,b),65536));if(o(y))return!0}return!1}const m={emscripten_get_now:i,emscripten_memcpy_big:r,emscripten_resize_heap:l,fd_write:()=>0};async function p(){const g=await a({env:m,wasi_snapshot_preview1:m});e=g.memory,s(e.buffer),Object.assign(t,g)}return await p(),t}let q=null,xs=!1;function ws(a){throw new Error(a.UTF8ToString(a.getLastOnigError()))}class fe{constructor(e){u(this,"utf16Length");u(this,"utf8Length");u(this,"utf16Value");u(this,"utf8Value");u(this,"utf16OffsetToUtf8");u(this,"utf8OffsetToUtf16");const n=e.length,t=fe._utf8ByteLength(e),s=t!==n,i=s?new Uint32Array(n+1):null;s&&(i[n]=t);const r=s?new Uint32Array(t+1):null;s&&(r[t]=n);const c=new Uint8Array(t);let o=0;for(let l=0;l=55296&&m<=56319&&l+1=56320&&g<=57343&&(p=(m-55296<<10)+65536|g-56320,d=!0)}s&&(i[l]=o,d&&(i[l+1]=o),p<=127?r[o+0]=l:p<=2047?(r[o+0]=l,r[o+1]=l):p<=65535?(r[o+0]=l,r[o+1]=l,r[o+2]=l):(r[o+0]=l,r[o+1]=l,r[o+2]=l,r[o+3]=l)),p<=127?c[o++]=p:p<=2047?(c[o++]=192|(p&1984)>>>6,c[o++]=128|(p&63)>>>0):p<=65535?(c[o++]=224|(p&61440)>>>12,c[o++]=128|(p&4032)>>>6,c[o++]=128|(p&63)>>>0):(c[o++]=240|(p&1835008)>>>18,c[o++]=128|(p&258048)>>>12,c[o++]=128|(p&4032)>>>6,c[o++]=128|(p&63)>>>0),d&&l++}this.utf16Length=n,this.utf8Length=t,this.utf16Value=e,this.utf8Value=c,this.utf16OffsetToUtf8=i,this.utf8OffsetToUtf16=r}static _utf8ByteLength(e){let n=0;for(let t=0,s=e.length;t=55296&&i<=56319&&t+1=56320&&o<=57343&&(r=(i-55296<<10)+65536|o-56320,c=!0)}r<=127?n+=1:r<=2047?n+=2:r<=65535?n+=3:n+=4,c&&t++}return n}createString(e){const n=e.omalloc(this.utf8Length);return e.HEAPU8.set(this.utf8Value,n),n}}const N=class N{constructor(e){u(this,"id",++N.LAST_ID);u(this,"_onigBinding");u(this,"content");u(this,"utf16Length");u(this,"utf8Length");u(this,"utf16OffsetToUtf8");u(this,"utf8OffsetToUtf16");u(this,"ptr");if(!q)throw new Error("Must invoke loadWasm first.");this._onigBinding=q,this.content=e;const n=new fe(e);this.utf16Length=n.utf16Length,this.utf8Length=n.utf8Length,this.utf16OffsetToUtf8=n.utf16OffsetToUtf8,this.utf8OffsetToUtf16=n.utf8OffsetToUtf16,this.utf8Length<1e4&&!N._sharedPtrInUse?(N._sharedPtr||(N._sharedPtr=q.omalloc(1e4)),N._sharedPtrInUse=!0,q.HEAPU8.set(n.utf8Value,N._sharedPtr),this.ptr=N._sharedPtr):this.ptr=n.createString(q)}convertUtf8OffsetToUtf16(e){return this.utf8OffsetToUtf16?e<0?0:e>this.utf8Length?this.utf16Length:this.utf8OffsetToUtf16[e]:e}convertUtf16OffsetToUtf8(e){return this.utf16OffsetToUtf8?e<0?0:e>this.utf16Length?this.utf8Length:this.utf16OffsetToUtf8[e]:e}dispose(){this.ptr===N._sharedPtr?N._sharedPtrInUse=!1:this._onigBinding.ofree(this.ptr)}};u(N,"LAST_ID",0),u(N,"_sharedPtr",0),u(N,"_sharedPtrInUse",!1);let he=N;class ks{constructor(e){u(this,"_onigBinding");u(this,"_ptr");if(!q)throw new Error("Must invoke loadWasm first.");const n=[],t=[];for(let c=0,o=e.length;c{let t=a;return typeof t=="function"&&(t=await t(n)),typeof t=="function"&&(t=await t(n)),js(t)?t=await t.instantiator(n):vs(t)?t=await t.default(n):(Cs(t)&&(t=t.data),Fs(t)?typeof WebAssembly.instantiateStreaming=="function"?t=await Ss(t)(n):t=await zs(t)(n):As(t)&&(t=await Es(t)(n))),"instance"in t&&(t=t.instance),"exports"in t&&(t=t.exports),t})}return le=e(),le}function Es(a){return e=>WebAssembly.instantiate(a,e)}function Ss(a){return e=>WebAssembly.instantiateStreaming(a,e)}function zs(a){return async e=>{const n=await a.arrayBuffer();return WebAssembly.instantiate(n,e)}}function Ns(a){return new he(a)}function Gs(a){return new ks(a)}const rn={light:"#333333",dark:"#bbbbbb"},on={light:"#fffffe",dark:"#1e1e1e"},cn="__shiki_resolved";function Zn(a){var c,o,l,m,p;if(a!=null&&a[cn])return a;const e={...a};e.tokenColors&&!e.settings&&(e.settings=e.tokenColors,delete e.tokenColors),e.type||(e.type="dark"),e.colorReplacements={...e.colorReplacements},e.settings||(e.settings=[]);let{bg:n,fg:t}=e;if(!n||!t){const d=e.settings?e.settings.find(g=>!g.name&&!g.scope):void 0;(c=d==null?void 0:d.settings)!=null&&c.foreground&&(t=d.settings.foreground),(o=d==null?void 0:d.settings)!=null&&o.background&&(n=d.settings.background),!t&&((l=e==null?void 0:e.colors)!=null&&l["editor.foreground"])&&(t=e.colors["editor.foreground"]),!n&&((m=e==null?void 0:e.colors)!=null&&m["editor.background"])&&(n=e.colors["editor.background"]),t||(t=e.type==="light"?rn.light:rn.dark),n||(n=e.type==="light"?on.light:on.dark),e.fg=t,e.bg=n}e.settings[0]&&e.settings[0].settings&&!e.settings[0].scope||e.settings.unshift({settings:{foreground:e.fg,background:e.bg}});let s=0;const i=new Map;function r(d){var f;if(i.has(d))return i.get(d);s+=1;const g=`#${s.toString(16).padStart(8,"0").toLowerCase()}`;return(f=e.colorReplacements)!=null&&f[`#${g}`]?r(d):(i.set(d,g),g)}e.settings=e.settings.map(d=>{var $,b;const g=(($=d.settings)==null?void 0:$.foreground)&&!d.settings.foreground.startsWith("#"),f=((b=d.settings)==null?void 0:b.background)&&!d.settings.background.startsWith("#");if(!g&&!f)return d;const _={...d,settings:{...d.settings}};if(g){const y=r(d.settings.foreground);e.colorReplacements[y]=d.settings.foreground,_.settings.foreground=y}if(f){const y=r(d.settings.background);e.colorReplacements[y]=d.settings.background,_.settings.background=y}return _});for(const d of Object.keys(e.colors||{}))if((d==="editor.foreground"||d==="editor.background"||d.startsWith("terminal.ansi"))&&!((p=e.colors[d])!=null&&p.startsWith("#"))){const g=r(e.colors[d]);e.colorReplacements[g]=e.colors[d],e.colors[d]=g}return Object.defineProperty(e,cn,{enumerable:!1,writable:!1,value:!0}),e}class Bs extends Yt{constructor(n,t,s){super(n);u(this,"_resolver");u(this,"_themes");u(this,"_langs");u(this,"_resolvedThemes",{});u(this,"_resolvedGrammars",{});u(this,"_langMap",{});u(this,"_langGraph",new Map);u(this,"alias",{});this._resolver=n,this._themes=t,this._langs=s,t.forEach(i=>this.loadTheme(i)),s.forEach(i=>this.loadLanguage(i))}getTheme(n){return typeof n=="string"?this._resolvedThemes[n]:this.loadTheme(n)}loadTheme(n){const t=Zn(n);return t.name&&(this._resolvedThemes[t.name]=t),t}getLoadedThemes(){return Object.keys(this._resolvedThemes)}getGrammar(n){if(this.alias[n]){const t=new Set([n]);for(;this.alias[n];){if(n=this.alias[n],t.has(n))throw new Error(`[shikiji] Circular alias \`${Array.from(t).join(" -> ")} -> ${n}\``);t.add(n)}}return this._resolvedGrammars[n]}async loadLanguage(n){var r,c,o,l;if(this.getGrammar(n.name))return;const t=new Set(Object.values(this._langMap).filter(m=>{var p;return(p=m.embeddedLangsLazy)==null?void 0:p.includes(n.name)}));this._resolver.addLanguage(n);const s={balancedBracketSelectors:n.balancedBracketSelectors||["*"],unbalancedBracketSelectors:n.unbalancedBracketSelectors||[]};this._syncRegistry._rawGrammars.set(n.scopeName,n);const i=await this.loadGrammarWithConfiguration(n.scopeName,1,s);if(this._resolvedGrammars[n.name]=i,n.aliases&&n.aliases.forEach(m=>{this.alias[m]=n.name}),t.size)for(const m of t)delete this._resolvedGrammars[m.name],(c=(r=this._syncRegistry)==null?void 0:r._injectionGrammars)==null||c.delete(m.scopeName),(l=(o=this._syncRegistry)==null?void 0:o._grammars)==null||l.delete(m.scopeName),await this.loadLanguage(this._langMap[m.name])}async init(){this._themes.map(n=>this.loadTheme(n)),await this.loadLanguages(this._langs)}async loadLanguages(n){for(const i of n)this.resolveEmbeddedLanguages(i);const t=Array.from(this._langGraph.entries()),s=t.filter(([i,r])=>!r);if(s.length){const i=t.filter(([r,c])=>{var o;return c&&((o=c.embeddedLangs)==null?void 0:o.some(l=>s.map(([m])=>m).includes(l)))}).filter(r=>!s.includes(r));throw new Error(`[shikiji] Missing languages ${s.map(([r])=>`\`${r}\``).join(", ")}, required by ${i.map(([r])=>`\`${r}\``).join(", ")}`)}for(const[i,r]of t)this._resolver.addLanguage(r);for(const[i,r]of t)await this.loadLanguage(r)}getLoadedLanguages(){return Object.keys({...this._resolvedGrammars,...this.alias})}resolveEmbeddedLanguages(n){if(this._langMap[n.name]=n,this._langGraph.set(n.name,n),n.embeddedLangs)for(const t of n.embeddedLangs)this._langGraph.set(t,this._langMap[t])}}class Rs{constructor(e,n){u(this,"_langs",new Map);u(this,"_scopeToLang",new Map);u(this,"_injections",new Map);u(this,"_onigLibPromise");this._onigLibPromise=e,n.forEach(t=>this.addLanguage(t))}get onigLib(){return this._onigLibPromise}getLangRegistration(e){return this._langs.get(e)}async loadGrammar(e){return this._scopeToLang.get(e)}addLanguage(e){this._langs.set(e.name,e),e.aliases&&e.aliases.forEach(n=>{this._langs.set(n,e)}),this._scopeToLang.set(e.scopeName,e),e.injectTo&&e.injectTo.forEach(n=>{this._injections.get(n)||this._injections.set(n,[]),this._injections.get(n).push(e.scopeName)})}getInjections(e){const n=e.split(".");let t=[];for(let s=1;s<=n.length;s++){const i=n.slice(0,s).join(".");t=[...t,...this._injections.get(i)||[]]}return t}}async function Ts(a={}){async function e(b){return Promise.resolve(typeof b=="function"?b():b).then(y=>y.default||y)}async function n(b){return Array.from(new Set((await Promise.all(b.map(async y=>await e(y).then(w=>Array.isArray(w)?w:[w])))).flat()))}const[t,s]=await Promise.all([Promise.all((a.themes||[]).map(e)).then(b=>b.map(Zn)),n(a.langs||[]),a.loadWasm?qs(a.loadWasm):void 0]),i=new Rs(Promise.resolve({createOnigScanner(b){return Gs(b)},createOnigString(b){return Ns(b)}}),s),r=new Bs(i,t,s);Object.assign(r.alias,a.langAlias),await r.init();let c;function o(b){const y=r.getGrammar(b);if(!y)throw new Error(`[shikiji] Language \`${b}\` not found, you may need to load it first`);return y}function l(b){const y=r.getTheme(b);if(!y)throw new Error(`[shikiji] Theme \`${b}\` not found, you may need to load it first`);return y}function m(b){const y=l(b);c!==b&&(r.setTheme(y),c=b);const w=r.getColorMap();return{theme:y,colorMap:w}}function p(){return r.getLoadedThemes()}function d(){return r.getLoadedLanguages()}async function g(...b){await r.loadLanguages(await n(b))}async function f(...b){await Promise.all(b.map(async y=>r.loadTheme(await e(y))))}function _(b){Object.assign(r.alias,b)}function $(){return r.alias}return{setTheme:m,getTheme:l,getLangGrammar:o,getLoadedThemes:p,getLoadedLanguages:d,getAlias:$,updateAlias:_,loadLanguage:g,loadTheme:f}}async function Ps(a={}){const e=await Ts(a);return{codeToThemedTokens:(n,t)=>Le(e,n,t),codeToTokensWithThemes:(n,t)=>On(e,n,t),codeToHast:(n,t)=>ge(e,n,t),codeToHtml:(n,t)=>_s(e,n,t),loadLanguage:e.loadLanguage,loadTheme:e.loadTheme,getTheme:e.getTheme,getLangGrammar:e.getLangGrammar,setTheme:e.setTheme,getLoadedThemes:e.getLoadedThemes,getLoadedLanguages:e.getLoadedLanguages,getInternalContext:()=>e}}let Fe=null;async function Ls(){return Fe||(Fe=pt(()=>import("./onig-4quf_T-L-mBJmD8D5.js"),__vite__mapDeps([]),import.meta.url).then(a=>({data:a.default}))),Fe}function Os(a){let e="rules"in a?a.rules:void 0;if(!e){e=[];const n=a.settings||a.tokenColors;for(const{scope:t,settings:s}of n){const i=Array.isArray(t)?t:[t];for(const r of i)s.foreground&&r&&e.push({token:r,foreground:s.foreground.replace("#","")})}}return{base:a.type==="light"?"vs":"vs-dark",inherit:!1,colors:a.colors||{},rules:e}}function Is(a,e){const n=new Map,t=a.getLoadedThemes();for(const r of t){const c=a.getTheme(r),o=Os(c);n.set(r,o),e.editor.defineTheme(r,o)}let s=t[0];const i=e.editor.setTheme.bind(e.editor);e.editor.setTheme=r=>{i(r),s=r};for(const r of a.getLoadedLanguages())e.languages.getLanguages().some(c=>c.id===r)&&e.languages.setTokensProvider(r,{getInitialState(){return new ae(jn,a)},tokenize(c,o){const l=o.highlighter.getLangGrammar(r),{colorMap:m}=o.highlighter.setTheme(s),p=n.get(s),d=l.tokenizeLine2(c,o.ruleStack),g=new Map;p.rules.forEach(b=>{var w;const y=(w=b.foreground)==null?void 0:w.replace("#","").toLowerCase();y&&!g.has(y)&&g.set(y,b.token)});function f(b){return g.get(b)}const _=d.tokens.length/2,$=[];for(let b=0;b<_;b++){const y=d.tokens[2*b],w=d.tokens[2*b+1],C=(m[T.getForeground(w)]||"").replace("#","").toLowerCase(),k=f(C)||"";$.push({startIndex:y,scopes:k})}return{endState:new ae(d.ruleStack,o.highlighter),tokens:$}}})}class ae{constructor(e,n){this._ruleStack=e,this.highlighter=n}get ruleStack(){return this._ruleStack}clone(){return new ae(this._ruleStack,this.highlighter)}equals(e){return!(!e||!(e instanceof ae)||e!==this||e._ruleStack!==this._ruleStack)}}const Ds=Object.freeze({displayName:"JavaScript",name:"javascript",patterns:[{include:"#directives"},{include:"#statements"},{include:"#shebang"}],repository:{"access-modifier":{match:"(?]|^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"}},name:"meta.objectliteral.js",patterns:[{include:"#object-member"}]},"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"}]},"array-literal":{begin:"\\s*(\\[)",beginCaptures:{1:{name:"meta.brace.square.js"}},end:"\\]",endCaptures:{0:{name:"meta.brace.square.js"}},name:"meta.array.literal.js",patterns:[{include:"#expression"},{include:"#punctuation-comma"}]},"arrow-function":{patterns:[{captures:{1:{name:"storage.modifier.async.js"},2:{name:"variable.parameter.js"}},match:"(?:(?)",name:"meta.arrow.js"},{begin:`(?x) (?: + (? is on new line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? + [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* + ( + ([)]\\s*:) | # (): + ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param: + ) +) | +( + [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends +) | +# arrow function possible to detect only with => on same line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters + \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) # parameters + (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type + \\s*=> # arrow operator +) + ) +)`,beginCaptures:{1:{name:"storage.modifier.async.js"}},end:"(?==>|\\{|(^\\s*(export|function|class|interface|let|var|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|const|import|enum|namespace|module|type|abstract|declare)\\s+))",name:"meta.arrow.js",patterns:[{include:"#comment"},{include:"#type-parameters"},{include:"#function-parameters"},{include:"#arrow-return-type"},{include:"#possibly-arrow-return-type"}]},{begin:"=>",beginCaptures:{0:{name:"storage.type.function.arrow.js"}},end:"((?<=\\}|\\S)(?)|((?!\\{)(?=\\S)))(?!\\/[\\/\\*])",name:"meta.arrow.js",patterns:[{include:"#single-line-comment-consuming-line-ending"},{include:"#decl-block"},{include:"#expression"}]}]},"arrow-return-type":{begin:"(?<=\\))\\s*(:)",beginCaptures:{1:{name:"keyword.operator.type.annotation.js"}},end:"(?==>|\\{|(^\\s*(export|function|class|interface|let|var|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|const|import|enum|namespace|module|type|abstract|declare)\\s+))",name:"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"}]},"async-modifier":{match:"(?\\s*$)",beginCaptures:{1:{name:"punctuation.definition.comment.js"}},end:"(?=$)",name:"comment.line.triple-slash.directive.js",patterns:[{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"}},name:"meta.tag.js",patterns:[{match:"path|types|no-default-lib|lib|name|resolution-mode",name:"entity.other.attribute-name.directive.js"},{match:"=",name:"keyword.operator.assignment.js"},{include:"#string"}]}]},docblock:{patterns:[{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"constant.language.access-type.jsdoc"}},match:`(?x) +((@)(?:access|api)) +\\s+ +(private|protected|public) +\\b`},{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) +((@)author) +\\s+ +( + [^@\\s<>*/] + (?:[^@<>*/]|\\*[^/])* +) +(?: + \\s* + (<) + ([^>\\s]+) + (>) +)?`},{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"}},match:`(?x) +((@)borrows) \\s+ +((?:[^@\\s*/]|\\*[^/])+) # +\\s+ (as) \\s+ # as +((?:[^@\\s*/]|\\*[^/])+) # `},{begin:"((@)example)\\s+",beginCaptures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"}},end:"(?=@|\\*/)",name:"meta.example.jsdoc",patterns:[{match:"^\\s\\*\\s+"},{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"}},contentName:"constant.other.description.jsdoc",end:"()|(?=\\*/)",endCaptures:{0:{name:"entity.name.tag.inline.jsdoc"},1:{name:"punctuation.definition.bracket.angle.begin.jsdoc"},2:{name:"punctuation.definition.bracket.angle.end.jsdoc"}}},{captures:{0:{name:"source.embedded.js"}},match:"[^\\s@*](?:[^*]|\\*[^/])*"}]},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"constant.language.symbol-type.jsdoc"}},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:"variable.other.link.underline.jsdoc"},4:{name:"entity.name.type.instance.jsdoc"}},match:`(?x) +((@)see) +\\s+ +(?: + # URL + ( + (?=https?://) + (?:[^\\s*]|\\*[^/])+ + ) + | + # JSDoc namepath + ( + (?! + # Avoid matching bare URIs (also acceptable as links) + https?:// + | + # Avoid matching {@inline tags}; we match those below + (?:\\[[^\\[\\]]*\\])? # Possible description [preceding]{@tag} + {@(?:link|linkcode|linkplain|tutorial)\\b + ) + # Matched namepath + (?:[^@\\s*/]|\\*[^/])+ + ) +)`},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"variable.other.jsdoc"}},match:`(?x) +((@)template) +\\s+ +# One or more valid identifiers +( + [A-Za-z_$] # First character: non-numeric word character + [\\w$.\\[\\]]* # Rest of identifier + (?: # Possible list of additional identifiers + \\s* , \\s* + [A-Za-z_$] + [\\w$.\\[\\]]* + )* +)`},{begin:"(?x)((@)template)\\s+(?={)",beginCaptures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"}},end:"(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",patterns:[{include:"#jsdoctype"},{match:"([A-Za-z_$][\\w$.\\[\\]]*)",name:"variable.other.jsdoc"}]},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"variable.other.jsdoc"}},match:`(?x) +( + (@) + (?:arg|argument|const|constant|member|namespace|param|var) +) +\\s+ +( + [A-Za-z_$] + [\\w$.\\[\\]]* +)`},{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"},{match:"(?:[^@\\s*/]|\\*[^/])+",name:"entity.name.type.instance.jsdoc"}]},{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"},{match:"([A-Za-z_$][\\w$.\\[\\]]*)",name:"variable.other.jsdoc"},{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"}},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/])+)?|(?=\\*/))`,name:"variable.other.jsdoc"}]},{begin:`(?x) +( + (@) + (?:define|enum|exception|export|extends|lends|implements|modifies + |namespace|private|protected|returns?|satisfies|suppress|this|throws|type + |yields?) +) +\\s+(?={)`,beginCaptures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"}},end:"(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",patterns:[{include:"#jsdoctype"}]},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"entity.name.type.instance.jsdoc"}},match:`(?x) +( + (@) + (?:alias|augments|callback|constructs|emits|event|fires|exports? + |extends|external|function|func|host|lends|listens|interface|memberof!? + |method|module|mixes|mixin|name|requires|see|this|typedef|uses) +) +\\s+ +( + (?: + [^{}@\\s*] | \\*[^/] + )+ +)`},{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"}},contentName:"variable.other.jsdoc",end:"(\\3)|(?=$|\\*/)",endCaptures:{0:{name:"variable.other.jsdoc"},1:{name:"punctuation.definition.string.end.jsdoc"}}},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"variable.other.jsdoc"}},match:"((@)(?:default(?:value)?|license|tutorial|variation|version))\\s+([^\\s*]+)"},{captures:{1:{name:"punctuation.definition.block.tag.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",name:"storage.type.class.jsdoc"},{include:"#inline-tags"},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"}},match:"((@)(?:[_$[:alpha:]][_$[:alnum:]]*))(?=\\s+)"}]},"enum-declaration":{begin:"(?) + )) | + ((async\\s*)?( + ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + # sure shot arrow functions even if => is on new line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? + [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* + ( + ([)]\\s*:) | # (): + ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param: + ) +) | +( + [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends +) | +# arrow function possible to detect only with => on same line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters + \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) # parameters + (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type + \\s*=> # arrow operator +) + )) +)) | +# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) => +(:\\s*( + (<) | + ([(]\\s*( + ([)]) | + (\\.\\.\\.) | + ([_$[:alnum:]]+\\s*( + ([:,?=])| + ([)]\\s*=>) + )) + )) +)) | +(:\\s*(?\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) | +(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*( + ((async\\s+)?( + (function\\s*[(<*]) | + (function\\s+) | + ([_$[:alpha:]][_$[:alnum:]]*\\s*=>) + )) | + ((async\\s*)?( + ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + # sure shot arrow functions even if => is on new line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? + [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* + ( + ([)]\\s*:) | # (): + ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param: + ) +) | +( + [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends +) | +# arrow function possible to detect only with => on same line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters + \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) # parameters + (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type + \\s*=> # arrow operator +) + )) +)))`},{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"}},match:"(?x)(?:(?]|\\|\\||\\&\\&|\\!\\=\\=|$|((?>=|>>>=|\\|=",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"},{captures:{1:{name:"keyword.operator.logical.js"},2:{name:"keyword.operator.assignment.compound.js"},3:{name:"keyword.operator.arithmetic.js"}},match:"(?<=[_$[:alnum:]])(\\!)\\s*(?:(/=)|(?:(/)(?![/*])))"},{match:"\\!|&&|\\|\\||\\?\\?",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"},{begin:"(?<=[_$[:alnum:])\\]])\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)+(?:(/=)|(?:(/)(?![/*]))))",end:"(?:(/=)|(?:(/)(?!\\*([^\\*]|(\\*[^\\/]))*\\*\\/)))",endCaptures:{1:{name:"keyword.operator.assignment.compound.js"},2:{name:"keyword.operator.arithmetic.js"}},patterns:[{include:"#comment"}]},{captures:{1:{name:"keyword.operator.assignment.compound.js"},2:{name:"keyword.operator.arithmetic.js"}},match:"(?<=[_$[:alnum:])\\]])\\s*(?:(/=)|(?:(/)(?![/*])))"}]},expressionPunctuations:{patterns:[{include:"#punctuation-comma"},{include:"#punctuation-accessor"}]},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"}]},"field-declaration":{begin:`(?x)(?) + )) | + ((async\\s*)?( + ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + # sure shot arrow functions even if => is on new line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? + [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* + ( + ([)]\\s*:) | # (): + ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param: + ) +) | +( + [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends +) | +# arrow function possible to detect only with => on same line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters + \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) # parameters + (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type + \\s*=> # arrow operator +) + )) +)) | +# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) => +(:\\s*( + (<) | + ([(]\\s*( + ([)]) | + (\\.\\.\\.) | + ([_$[:alnum:]]+\\s*( + ([:,?=])| + ([)]\\s*=>) + )) + )) +)) | +(:\\s*(?\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) | +(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*( + ((async\\s+)?( + (function\\s*[(<*]) | + (function\\s+) | + ([_$[:alpha:]][_$[:alnum:]]*\\s*=>) + )) | + ((async\\s*)?( + ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + # sure shot arrow functions even if => is on new line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? + [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* + ( + ([)]\\s*:) | # (): + ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param: + ) +) | +( + [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends +) | +# arrow function possible to detect only with => on same line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters + \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) # parameters + (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type + \\s*=> # arrow operator +) + )) +)))`},{match:"\\#?[_$[:alpha:]][_$[:alnum:]]*",name:"meta.definition.property.js variable.object.property.js"},{match:"\\?",name:"keyword.operator.optional.js"},{match:"\\!",name:"keyword.operator.definiteassignment.js"}]},"for-loop":{begin:"(?\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\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:[{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*)?\\())",name:"meta.function-call.js",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:[{begin:"(?=(([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))",end:"(?=(<\\s*[\\{\\[\\(]\\s*$))",name:"meta.function-call.js",patterns:[{include:"#function-call-target"}]},{include:"#comment"},{include:"#function-call-optionals"},{include:"#type-arguments"}]}]},"function-call-optionals":{patterns:[{match:"\\?\\.",name:"meta.function-call.js punctuation.accessor.optional.js"},{match:"\\!",name:"meta.function-call.js keyword.operator.definiteassignment.js"}]},"function-call-target":{patterns:[{include:"#support-function-call-identifiers"},{match:"(\\#?[_$[:alpha:]][_$[:alnum:]]*)",name:"entity.name.function.js"}]},"function-declaration":{begin:"(?) + )) | + ((async\\s*)?( + ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + # sure shot arrow functions even if => is on new line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? + [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* + ( + ([)]\\s*:) | # (): + ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param: + ) +) | +( + [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends +) | +# arrow function possible to detect only with => on same line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters + \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) # parameters + (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type + \\s*=> # arrow operator +) + )) +))`},{captures:{1:{name:"punctuation.accessor.js"},2:{name:"punctuation.accessor.optional.js"},3:{name:"variable.other.constant.property.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.property.js"}},match:"(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*)"},{match:"([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])",name:"variable.other.constant.js"},{match:"[_$[:alpha:]][_$[:alnum:]]*",name:"variable.other.readwrite.js"}]},"if-statement":{patterns:[{begin:"(?]|\\|\\||\\&\\&|\\!\\=\\=|$|(===|!==|==|!=)|(([\\&\\~\\^\\|]\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s+instanceof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|((?))",end:"(/>)|(?:())",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"}},name:"meta.tag.js",patterns:[{begin:"(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?)",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"}},contentName:"meta.jsx.children.js",end:"(?=|/\\*|//)`},"jsx-tag-attributes":{begin:"\\s+",end:"(?=[/]?>)",name:"meta.tag.attributes.js",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-attributes-illegal":{match:"\\S+",name:"invalid.illegal.attribute.js"},"jsx-tag-in-expression":{begin:`(?x) + (?:*]|&&|\\|\\||\\?|\\*\\/|^await|[^\\._$[:alnum:]]await|^return|[^\\._$[:alnum:]]return|^default|[^\\._$[:alnum:]]default|^yield|[^\\._$[:alnum:]]yield|^)\\s* + (?!<\\s*[_$[:alpha:]][_$[:alnum:]]*((\\s+extends\\s+[^=>])|,)) # look ahead is not type parameter of arrow + (?=(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?))`,end:"(?!(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?))",patterns:[{include:"#jsx-tag"}]},"jsx-tag-without-attributes":{begin:"(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?)",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"}},contentName:"meta.jsx.children.js",end:"()",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"}},name:"meta.tag.without-attributes.js",patterns:[{include:"#jsx-children"}]},"jsx-tag-without-attributes-in-expression":{begin:"(?:*]|&&|\\|\\||\\?|\\*\\/|^await|[^\\._$[:alnum:]]await|^return|[^\\._$[:alnum:]]return|^default|[^\\._$[:alnum:]]default|^yield|[^\\._$[:alnum:]]yield|^)\\s*(?=(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?))",end:"(?!(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?))",patterns:[{include:"#jsx-tag-without-attributes"}]},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"}]},{captures:{1:{name:"entity.name.label.js"},2:{name:"punctuation.separator.label.js"}},match:"([_$[:alpha:]][_$[:alnum:]]*)\\s*(:)"}]},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"}]},"method-declaration":{patterns:[{begin:"(?x)(?]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\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:"(?=\\}|;|,|$)|(?<=\\})",name:"meta.method.declaration.js",patterns:[{include:"#method-declaration-name"},{include:"#function-body"}]},{begin:`(?x)(?]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\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:"(?=\\}|;|,|$)|(?<=\\})",name:"meta.method.declaration.js",patterns:[{include:"#method-declaration-name"},{include:"#function-body"}]}]},"method-declaration-name":{begin:`(?x)(?=((\\b(?]|\\|\\||\\&\\&|\\!\\=\\=|$|((?]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])`,beginCaptures:{1:{name:"storage.modifier.async.js"},2:{name:"storage.type.property.js"},3:{name:"keyword.generator.asterisk.js"}},end:"(?=\\}|;|,)|(?<=\\})",name:"meta.method.declaration.js",patterns:[{include:"#method-declaration-name"},{include:"#function-body"},{begin:`(?x)(?]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\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"}]}]},"object-member":{patterns:[{include:"#comment"},{include:"#object-literal-method-declaration"},{begin:"(?=\\[)",end:"(?=:)|((?<=[\\]])(?=\\s*[\\(\\<]))",name:"meta.object.member.js meta.object-literal.key.js",patterns:[{include:"#comment"},{include:"#array-literal"}]},{begin:"(?=[\\'\\\"\\`])",end:"(?=:)|((?<=[\\'\\\"\\`])(?=((\\s*[\\(\\<,}])|(\\s+(as|satisifies)\\s+))))",name:"meta.object.member.js meta.object-literal.key.js",patterns:[{include:"#comment"},{include:"#string"}]},{begin:`(?x)(?=(\\b(?) + )) | + ((async\\s*)?( + ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + # sure shot arrow functions even if => is on new line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? + [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* + ( + ([)]\\s*:) | # (): + ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param: + ) +) | +( + [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends +) | +# arrow function possible to detect only with => on same line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters + \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) # parameters + (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type + \\s*=> # arrow operator +) + )) +)))`,name:"meta.object.member.js"},{captures:{0:{name:"meta.object-literal.key.js"}},match:"(?:[_$[:alpha:]][_$[:alnum:]]*)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:)",name:"meta.object.member.js"},{begin:"\\.\\.\\.",beginCaptures:{0:{name:"keyword.operator.spread.js"}},end:"(?=,|\\})",name:"meta.object.member.js",patterns:[{include:"#expression"}]},{captures:{1:{name:"variable.other.readwrite.js"}},match:"([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=,|\\}|$|\\/\\/|\\/\\*)",name:"meta.object.member.js"},{captures:{1:{name:"keyword.control.as.js"},2:{name:"storage.modifier.js"}},match:"(?]|\\|\\||\\&\\&|\\!\\=\\=|$|^|((?]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\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"},{include:"#decl-block"}]},"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"}]},"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"}]},"parameter-name":{patterns:[{captures:{1:{name:"storage.modifier.js"}},match:"(?) + )) | + ((async\\s*)?( + ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + # sure shot arrow functions even if => is on new line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? + [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* + ( + ([)]\\s*:) | # (): + ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param: + ) +) | +( + [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends +) | +# arrow function possible to detect only with => on same line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters + \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) # parameters + (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type + \\s*=> # arrow operator +) + )) +)) | +# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) => +(:\\s*( + (<) | + ([(]\\s*( + ([)]) | + (\\.\\.\\.) | + ([_$[:alnum:]]+\\s*( + ([:,?=])| + ([)]\\s*=>) + )) + )) +)) | +(:\\s*(?\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) | +(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*( + ((async\\s+)?( + (function\\s*[(<*]) | + (function\\s+) | + ([_$[:alpha:]][_$[:alnum:]]*\\s*=>) + )) | + ((async\\s*)?( + ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + # sure shot arrow functions even if => is on new line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? + [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* + ( + ([)]\\s*:) | # (): + ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param: + ) +) | +( + [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends +) | +# arrow function possible to detect only with => on same line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters + \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) # parameters + (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type + \\s*=> # arrow operator +) + )) +)))`},{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"}},match:"(?x)(?:(?])",name:"meta.type.annotation.js",patterns:[{include:"#type"}]}]},"paren-expression":{begin:"\\(",beginCaptures:{0:{name:"meta.brace.round.js"}},end:"\\)",endCaptures:{0:{name:"meta.brace.round.js"}},patterns:[{include:"#expression"}]},"paren-expression-possibly-arrow":{patterns:[{begin:"(?<=[(=,])\\s*(async)?(?=\\s*((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\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*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?\\()|(<)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\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"}]}]},"possibly-arrow-return-type":{begin:"(?<=\\)|^)\\s*(:)(?=\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*=>)",beginCaptures:{1:{name:"meta.arrow.js meta.return.type.arrow.js keyword.operator.type.annotation.js"}},contentName:"meta.arrow.js meta.return.type.arrow.js",end:"(?==>|\\{|(^\\s*(export|function|class|interface|let|var|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|const|import|enum|namespace|module|type|abstract|declare)\\s+))",patterns:[{include:"#arrow-return-type-body"}]},"property-accessor":{match:"(?|&&|\\|\\||\\*\\/)\\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"}},name:"string.regexp.js",patterns:[{include:"#regexp"}]},{begin:"((?"},{match:"[?+*]|\\{(\\d+,\\d+|\\d+,|,\\d+|\\d+)\\}\\??",name:"keyword.operator.quantifier.regexp"},{match:"\\|",name:"keyword.operator.or.regexp"},{begin:"(\\()((\\?=)|(\\?!)|(\\?<=)|(\\?))?",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"}},name:"meta.group.regexp",patterns:[{include:"#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"}},name:"constant.other.character-class.set.regexp",patterns:[{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"}},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])|(\\\\.))",name:"constant.other.character-class.range.regexp"},{include:"#regex-character-class"}]},{include:"#regex-character-class"}]},"return-type":{patterns:[{begin:"(?<=\\))\\s*(:)(?=\\s*\\S)",beginCaptures:{1:{name:"keyword.operator.type.annotation.js"}},end:"(?]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\\()) + | + (?:(EPSILON|MAX_SAFE_INTEGER|MAX_VALUE|MIN_SAFE_INTEGER|MIN_VALUE|NEGATIVE_INFINITY|POSITIVE_INFINITY)\\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"}},match:"(?\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\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"},{match:"([_$[:alpha:]][_$[:alnum:]]*)",name:"entity.name.function.tagged-template.js"}]},{include:"#type-arguments"}]},{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":{begin:"\\$\\{",beginCaptures:{0:{name:"punctuation.definition.template-expression.begin.js"}},contentName:"meta.embedded.line.js",end:"\\}",endCaptures:{0:{name:"punctuation.definition.template-expression.end.js"}},name:"meta.template.expression.js",patterns:[{include:"#expression"}]},"template-type":{patterns:[{include:"#template-call"},{begin:"([_$[:alpha:]][_$[:alnum:]]*)?(`)",beginCaptures:{1:{name:"entity.name.function.tagged-template.js"},2:{name:"string.template.js punctuation.definition.string.template.begin.js"}},contentName:"string.template.js",end:"`",endCaptures:{0:{name:"string.template.js punctuation.definition.string.template.end.js"}},patterns:[{include:"#template-type-substitution-element"},{include:"#string-character-escape"}]}]},"template-type-substitution-element":{begin:"\\$\\{",beginCaptures:{0:{name:"punctuation.definition.template-expression.begin.js"}},contentName:"meta.embedded.line.js",end:"\\}",endCaptures:{0:{name:"punctuation.definition.template-expression.end.js"}},name:"meta.template.expression.js",patterns:[{include:"#type"}]},"ternary-expression":{begin:"(?!\\?\\.\\s*[^[:digit:]])(\\?)(?!\\?)",beginCaptures:{1:{name:"keyword.operator.ternary.js"}},end:"\\s*(:)",endCaptures:{1:{name:"keyword.operator.ternary.js"}},patterns:[{include:"#expression"}]},"this-literal":{match:"(?])|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))",name:"meta.type.annotation.js",patterns:[{include:"#type"}]},{begin:"(:)",beginCaptures:{1:{name:"keyword.operator.type.annotation.js"}},end:"(?])|(?=^\\s*$)|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))",name:"meta.type.annotation.js",patterns:[{include:"#type"}]}]},"type-arguments":{begin:"\\<",beginCaptures:{0:{name:"punctuation.definition.typeparameters.begin.js"}},end:"\\>",endCaptures:{0:{name:"punctuation.definition.typeparameters.end.js"}},name:"meta.type.parameters.js",patterns:[{include:"#type-arguments-body"}]},"type-arguments-body":{patterns:[{captures:{0:{name:"keyword.operator.type.js"}},match:"(?)",patterns:[{include:"#comment"},{include:"#type-parameters"}]},{begin:"(?) + )) + ) + ) +)`,end:"(?<=\\))",name:"meta.type.function.js",patterns:[{include:"#function-parameters"}]}]},"type-function-return-type":{patterns:[{begin:"(=>)(?=\\s*\\S)",beginCaptures:{1:{name:"storage.type.function.arrow.js"}},end:"(?)(?:\\?]|//|$)",name:"meta.type.function.return.js",patterns:[{include:"#type-function-return-type-core"}]},{begin:"=>",beginCaptures:{0:{name:"storage.type.function.arrow.js"}},end:"(?)(?]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",name:"meta.type.function.return.js",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-infer":{patterns:[{captures:{1:{name:"keyword.operator.expression.infer.js"},2:{name:"entity.name.type.js"},3:{name:"keyword.operator.expression.extends.js"}},match:"(?)",endCaptures:{1:{name:"meta.type.parameters.js punctuation.definition.typeparameters.end.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"}},contentName:"meta.type.parameters.js",end:"(>)",endCaptures:{1:{name:"meta.type.parameters.js punctuation.definition.typeparameters.end.js"}},patterns:[{include:"#type-arguments-body"}]},{captures:{1:{name:"entity.name.type.module.js"},2:{name:"punctuation.accessor.js"},3:{name:"punctuation.accessor.optional.js"}},match:"([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))"},{match:"[_$[:alpha:]][_$[:alnum:]]*",name:"entity.name.type.js"}]},"type-object":{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.block.js"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.block.js"}},name:"meta.object.type.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-operators":{patterns:[{include:"#typeof-operator"},{include:"#type-infer"},{begin:"([&|])(?=\\s*\\{)",beginCaptures:{0:{name:"keyword.operator.type.js"}},end:"(?<=\\})",patterns:[{include:"#type-object"}]},{begin:"[&|]",beginCaptures:{0:{name:"keyword.operator.type.js"}},end:"(?=\\S)"},{match:"(?)",endCaptures:{1:{name:"punctuation.definition.typeparameters.end.js"}},name:"meta.type.parameters.js",patterns:[{include:"#comment"},{match:"(?)",name:"keyword.operator.assignment.js"}]},"type-paren-or-function-parameters":{begin:"\\(",beginCaptures:{0:{name:"meta.brace.round.js"}},end:"\\)",endCaptures:{0:{name:"meta.brace.round.js"}},name:"meta.type.paren.cover.js",patterns:[{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)(?:(?) + )) + )) +)) | +(:\\s*(?\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\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"}},match:"(?x)(?:(?:&|{\\?]|(extends\\s+)|$|;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))",patterns:[{include:"#type-arguments"},{include:"#expression"}]},"undefined-literal":{match:"(?) + )) | + ((async\\s*)?( + ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + # sure shot arrow functions even if => is on new line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? + [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* + ( + ([)]\\s*:) | # (): + ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param: + ) +) | +( + [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends +) | +# arrow function possible to detect only with => on same line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters + \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) # parameters + (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type + \\s*=> # arrow operator +) + )) +)) | +# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) => +(:\\s*( + (<) | + ([(]\\s*( + ([)]) | + (\\.\\.\\.) | + ([_$[:alnum:]]+\\s*( + ([:,?=])| + ([)]\\s*=>) + )) + )) +)) | +(:\\s*(?\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) | +(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*( + ((async\\s+)?( + (function\\s*[(<*]) | + (function\\s+) | + ([_$[:alpha:]][_$[:alnum:]]*\\s*=>) + )) | + ((async\\s*)?( + ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + # sure shot arrow functions even if => is on new line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? + [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* + ( + ([)]\\s*:) | # (): + ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param: + ) +) | +( + [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends +) | +# arrow function possible to detect only with => on same line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters + \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) # parameters + (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type + \\s*=> # arrow operator +) + )) +)))`,beginCaptures:{1:{name:"meta.definition.variable.js variable.other.constant.js entity.name.function.js"}},end:"(?=$|^|[;,=}]|((?) + )) | + ((async\\s*)?( + ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + # sure shot arrow functions even if => is on new line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? + [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* + ( + ([)]\\s*:) | # (): + ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param: + ) +) | +( + [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends +) | +# arrow function possible to detect only with => on same line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters + \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) # parameters + (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type + \\s*=> # arrow operator +) + )) +)) | +# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) => +(:\\s*( + (<) | + ([(]\\s*( + ([)]) | + (\\.\\.\\.) | + ([_$[:alnum:]]+\\s*( + ([:,?=])| + ([)]\\s*=>) + )) + )) +)) | +(:\\s*(?\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) | +(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*( + ((async\\s+)?( + (function\\s*[(<*]) | + (function\\s+) | + ([_$[:alpha:]][_$[:alnum:]]*\\s*=>) + )) | + ((async\\s*)?( + ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + # sure shot arrow functions even if => is on new line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? + [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* + ( + ([)]\\s*:) | # (): + ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param: + ) +) | +( + [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends +) | +# arrow function possible to detect only with => on same line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters + \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) # parameters + (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type + \\s*=> # arrow operator +) + )) +)))`,beginCaptures:{1:{name:"meta.definition.variable.js entity.name.function.js"},2:{name:"keyword.operator.definiteassignment.js"}},end:"(?=$|^|[;,=}]|((?\\s*$)",beginCaptures:{1:{name:"keyword.operator.assignment.js"}},end:"(?=$|^|[,);}\\]]|((?>>",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:"^(?<:=]|\\)|/\\*) # Terminates cleanly`},"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) +(?<=^|\\s|,|\\*/) +(?: + # Valid media types + (all|print|screen|speech) + | + # Deprecated in Media Queries 4: http://dev.w3.org/csswg/mediaqueries/#media-types + (aural|braille|embossed|handheld|projection|tty|tv) +) +(?=$|[{,\\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) (?+~|] # - Followed by another selector + | /\\* # - Followed by a block comment + ) + | + # Name contains unescaped ASCII symbol + (?: # Check for acceptable preceding characters + [-a-zA-Z_0-9]|[^\\x00-\\x7F] # - Valid selector character + | \\\\(?:[0-9a-fA-F]{1,6}|.) # - Escape sequence + )* + (?: # Invalid punctuation + [!"'%&(*;+~|] # - Another selector + | /\\* # - A block comment +)`,name:"entity.other.attribute-name.class.css"},{captures:{1:{name:"punctuation.definition.entity.css"},2:{patterns:[{include:"#escapes"}]}},match:`(?x) +(\\#) +( + -? + (?![0-9]) + (?:[-a-zA-Z0-9_]|[^\\x00-\\x7F]|\\\\(?:[0-9a-fA-F]{1,6}|.))+ +) +(?=$|[\\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) +# Qualified namespace prefix +( -?(?!\\d)(?:[\\w-]|[^\\x00-\\x7F]|\\\\(?:[0-9a-fA-F]{1,6}|.))+ +| \\* +) +# Lookahead to ensure there's a valid identifier ahead +(?= + \\| (?!\\s|=|$|\\]) + (?: -?(?!\\d) + | [\\\\\\w-] + | [^\\x00-\\x7F] + ) +)`},{captures:{1:{name:"entity.other.attribute-name.css",patterns:[{include:"#escapes"}]}},match:`(?x) +(-?(?!\\d)(?>[\\w-]|[^\\x00-\\x7F]|\\\\(?:[0-9a-fA-F]{1,6}|.))+) +\\s* +(?=[~|^\\]$*=]|/\\*)`}]},{include:"#pseudo-classes"},{include:"#pseudo-elements"},{include:"#functional-pseudo-classes"},{match:`(?x) (?\\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:"(?)",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"}},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"}},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"}},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"}},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:"",endCaptures:{0:{name:"punctuation.definition.tag.end.html"}},name:"meta.tag.metadata.cdata.html"},comment:{begin:"",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:"",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) + (&) (?=[a-zA-Z]) + ( + (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)) + | (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)?)) + | (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)) + | (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))) + | (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))) + | (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)) + | (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)) + | (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)) + | (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))?)) + | (j(s(cr|ercy)|c(y|irc)|opf|ukcy|fr|math)|J(s(cr|ercy)|c(y|irc)|opf|ukcy|fr)) + | (k(scr|hcy|c(y|edil)|opf|jcy|fr|appa(v)?|green)|K(scr|c(y|edil)|Hcy|opf|Jcy|fr|appa)) + | (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)) + | (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(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)) + | (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))) + | (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)?)?)) + | (q(scr|int|opf|u(ot|est(eq)?|at(int|ernions))|prime|fr)|Q(scr|opf|UOT|fr)) + | (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))) + | (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)) + | (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)) + | (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))) + | (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)) + | (w(scr|circ|opf|p|e(ierp|d(ge(q)?|bar))|fr|r(eath)?)|W(scr|circ|opf|edge|fr)) + | (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)) + | (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)) + | (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)) + ) + (;) + `,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)()",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)()|(/>)|(?=)\\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)()|(/>)|(?=)\\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)()|(/>)|(?=)\\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)()|(/>)|(?=)\\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)()",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)()|(/>)|(?=)\\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)()|(/>)|(?=)\\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)()|(/>)|(?=)\\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)()|(/>)|(?=)\\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)()|(/>)|(?=)\\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)()|(/>)|(?=)\\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:"(]*))(?)",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:"(?=)",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:"(?= # 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:"(?=)",endCaptures:{1:{name:"punctuation.definition.tag.end.html"}},name:"meta.tag.metadata.script.start.html",patterns:[{include:"#attribute"}]},{begin:"(?!\\G)",end:"(?=)",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)()",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)()",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)()",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)()",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)()",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)()",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)()",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)()",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:"()",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"}]}},scopeName:"text.html.basic",embeddedLangs:["javascript","css"]});var Mn=[...X,...ye,Ms];const Us=Object.freeze({displayName:"Markdown",name:"markdown",patterns:[{include:"#frontMatter"},{include:"#block"}],repository:{ampersand:{comment:"Markdown will convert this for us. We match it so that the HTML grammar will not mark it up as invalid.",match:"&(?!([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+);)",name:"meta.other.valid-ampersand.markdown"},block:{patterns:[{include:"#separator"},{include:"#heading"},{include:"#blockquote"},{include:"#lists"},{include:"#fenced_code_block"},{include:"#raw_block"},{include:"#link-def"},{include:"#html"},{include:"#table"},{include:"#paragraph"}]},blockquote:{begin:"(^|\\G)[ ]{0,3}(>) ?",captures:{2:{name:"punctuation.definition.quote.begin.markdown"}},name:"markup.quote.markdown",patterns:[{include:"#block"}],while:"(^|\\G)\\s*(>) ?"},bold:{begin:`(?x) (?(\\*\\*(?=\\w)|(?]*+> # HTML tags + | (?\`+)([^\`]|(?!(?(?!\`))\`)*+\\k + # Raw + | \\\\[\\\\\`*_{}\\[\\]()#.!+\\->]?+ # Escapes + | \\[ + ( + (? # Named group + [^\\[\\]\\\\] # Match most chars + | \\\\. # Escaped chars + | \\[ \\g*+ \\] # Nested brackets + )*+ + \\] + ( + ( # Reference Link + [ ]? # Optional space + \\[[^\\]]*+\\] # Ref name + ) + | ( # Inline Link + \\( # Opening paren + [ \\t]*+ # Optional whitespace + ? # URL + [ \\t]*+ # Optional whitespace + ( # Optional Title + (?['"]) + (.*?) + \\k<title> + )? + \\) + ) + ) + ) + | (?!(?<=\\S)\\k<open>). # Everything besides + # style closer + )++ + (?<=\\S)(?=__\\b|\\*\\*)\\k<open> # Close +) +`,captures:{1:{name:"punctuation.definition.bold.markdown"}},end:"(?<=\\S)(\\1)",name:"markup.bold.markdown",patterns:[{applyEndPatternLast:1,begin:"(?=<[^>]*?>)",end:"(?<=>)",patterns:[{include:"text.html.derivative"}]},{include:"#escape"},{include:"#ampersand"},{include:"#bracket"},{include:"#raw"},{include:"#bold"},{include:"#italic"},{include:"#image-inline"},{include:"#link-inline"},{include:"#link-inet"},{include:"#link-email"},{include:"#image-ref"},{include:"#link-ref-literal"},{include:"#link-ref"},{include:"#link-ref-shortcut"},{include:"#strikethrough"}]},bracket:{comment:"Markdown will convert this for us. We match it so that the HTML grammar will not mark it up as invalid.",match:"<(?![a-zA-Z/?\\$!])",name:"meta.other.valid-bracket.markdown"},escape:{match:"\\\\[-`*_#+.!(){}\\[\\]\\\\>]",name:"constant.character.escape.markdown"},fenced_code_block:{patterns:[{include:"#fenced_code_block_css"},{include:"#fenced_code_block_basic"},{include:"#fenced_code_block_ini"},{include:"#fenced_code_block_java"},{include:"#fenced_code_block_lua"},{include:"#fenced_code_block_makefile"},{include:"#fenced_code_block_perl"},{include:"#fenced_code_block_r"},{include:"#fenced_code_block_ruby"},{include:"#fenced_code_block_php"},{include:"#fenced_code_block_sql"},{include:"#fenced_code_block_vs_net"},{include:"#fenced_code_block_xml"},{include:"#fenced_code_block_xsl"},{include:"#fenced_code_block_yaml"},{include:"#fenced_code_block_dosbatch"},{include:"#fenced_code_block_clojure"},{include:"#fenced_code_block_coffee"},{include:"#fenced_code_block_c"},{include:"#fenced_code_block_cpp"},{include:"#fenced_code_block_diff"},{include:"#fenced_code_block_dockerfile"},{include:"#fenced_code_block_git_commit"},{include:"#fenced_code_block_git_rebase"},{include:"#fenced_code_block_go"},{include:"#fenced_code_block_groovy"},{include:"#fenced_code_block_pug"},{include:"#fenced_code_block_js"},{include:"#fenced_code_block_js_regexp"},{include:"#fenced_code_block_json"},{include:"#fenced_code_block_jsonc"},{include:"#fenced_code_block_less"},{include:"#fenced_code_block_objc"},{include:"#fenced_code_block_swift"},{include:"#fenced_code_block_scss"},{include:"#fenced_code_block_perl6"},{include:"#fenced_code_block_powershell"},{include:"#fenced_code_block_python"},{include:"#fenced_code_block_julia"},{include:"#fenced_code_block_regexp_python"},{include:"#fenced_code_block_rust"},{include:"#fenced_code_block_scala"},{include:"#fenced_code_block_shell"},{include:"#fenced_code_block_ts"},{include:"#fenced_code_block_tsx"},{include:"#fenced_code_block_csharp"},{include:"#fenced_code_block_fsharp"},{include:"#fenced_code_block_dart"},{include:"#fenced_code_block_handlebars"},{include:"#fenced_code_block_markdown"},{include:"#fenced_code_block_log"},{include:"#fenced_code_block_erlang"},{include:"#fenced_code_block_elixir"},{include:"#fenced_code_block_latex"},{include:"#fenced_code_block_bibtex"},{include:"#fenced_code_block_twig"},{include:"#fenced_code_block_unknown"}]},fenced_code_block_basic:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(html|htm|shtml|xhtml|inc|tmpl|tpl)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.html",patterns:[{include:"text.html.basic"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_bibtex:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(bibtex)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.bibtex",patterns:[{include:"text.bibtex"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_c:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(c|h)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.c",patterns:[{include:"source.c"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_clojure:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(clj|cljs|clojure)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.clojure",patterns:[{include:"source.clojure"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_coffee:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(coffee|Cakefile|coffee.erb)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.coffee",patterns:[{include:"source.coffee"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_cpp:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(cpp|c\\+\\+|cxx)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.cpp source.cpp",patterns:[{include:"source.cpp"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_csharp:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(cs|csharp|c#)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.csharp",patterns:[{include:"source.cs"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_css:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(css|css.erb)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.css",patterns:[{include:"source.css"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_dart:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(dart)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.dart",patterns:[{include:"source.dart"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_diff:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(patch|diff|rej)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.diff",patterns:[{include:"source.diff"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_dockerfile:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(dockerfile|Dockerfile)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.dockerfile",patterns:[{include:"source.dockerfile"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_dosbatch:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(bat|batch)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.dosbatch",patterns:[{include:"source.batchfile"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_elixir:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(elixir)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.elixir",patterns:[{include:"source.elixir"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_erlang:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(erlang)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.erlang",patterns:[{include:"source.erlang"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_fsharp:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(fs|fsharp|f#)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.fsharp",patterns:[{include:"source.fsharp"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_git_commit:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(COMMIT_EDITMSG|MERGE_MSG)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.git_commit",patterns:[{include:"text.git-commit"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_git_rebase:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(git-rebase-todo)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.git_rebase",patterns:[{include:"text.git-rebase"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_go:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(go|golang)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.go",patterns:[{include:"source.go"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_groovy:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(groovy|gvy)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.groovy",patterns:[{include:"source.groovy"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_handlebars:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(handlebars|hbs)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.handlebars",patterns:[{include:"text.html.handlebars"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_ini:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(ini|conf)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.ini",patterns:[{include:"source.ini"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_java:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(java|bsh)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.java",patterns:[{include:"source.java"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_js:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(js|jsx|javascript|es6|mjs|cjs|dataviewjs|\\{\\.js.+?\\})((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.javascript",patterns:[{include:"source.js"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_js_regexp:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(regexp)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.js_regexp",patterns:[{include:"source.js.regexp"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_json:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(json|json5|sublime-settings|sublime-menu|sublime-keymap|sublime-mousemap|sublime-theme|sublime-build|sublime-project|sublime-completions)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.json",patterns:[{include:"source.json"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_jsonc:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(jsonc)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.jsonc",patterns:[{include:"source.json.comments"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_julia:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(julia|\\{\\.julia.+?\\})((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.julia",patterns:[{include:"source.julia"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_latex:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(latex|tex)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.latex",patterns:[{include:"text.tex.latex"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_less:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(less)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.less",patterns:[{include:"source.css.less"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_log:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(log)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.log",patterns:[{include:"text.log"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_lua:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(lua)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.lua",patterns:[{include:"source.lua"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_makefile:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(Makefile|makefile|GNUmakefile|OCamlMakefile)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.makefile",patterns:[{include:"source.makefile"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_markdown:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(markdown|md)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.markdown",patterns:[{include:"text.html.markdown"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_objc:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(objectivec|objective-c|mm|objc|obj-c|m|h)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.objc",patterns:[{include:"source.objc"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_perl:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(perl|pl|pm|pod|t|PL|psgi|vcl)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.perl",patterns:[{include:"source.perl"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_perl6:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(perl6|p6|pl6|pm6|nqp)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.perl6",patterns:[{include:"source.perl.6"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_php:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(php|php3|php4|php5|phpt|phtml|aw|ctp)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.php",patterns:[{include:"text.html.basic"},{include:"source.php"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_powershell:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(powershell|ps1|psm1|psd1)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.powershell",patterns:[{include:"source.powershell"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_pug:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(jade|pug)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.pug",patterns:[{include:"text.pug"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_python:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(python|py|py3|rpy|pyw|cpy|SConstruct|Sconstruct|sconstruct|SConscript|gyp|gypi|\\{\\.python.+?\\})((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.python",patterns:[{include:"source.python"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_r:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(R|r|s|S|Rprofile|\\{\\.r.+?\\})((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.r",patterns:[{include:"source.r"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_regexp_python:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(re)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.regexp_python",patterns:[{include:"source.regexp.python"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_ruby:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(ruby|rb|rbx|rjs|Rakefile|rake|cgi|fcgi|gemspec|irbrc|Capfile|ru|prawn|Cheffile|Gemfile|Guardfile|Hobofile|Vagrantfile|Appraisals|Rantfile|Berksfile|Berksfile.lock|Thorfile|Puppetfile)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.ruby",patterns:[{include:"source.ruby"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_rust:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(rust|rs|\\{\\.rust.+?\\})((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.rust",patterns:[{include:"source.rust"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_scala:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(scala|sbt)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.scala",patterns:[{include:"source.scala"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_scss:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(scss)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.scss",patterns:[{include:"source.css.scss"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_shell:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(shell|sh|bash|zsh|bashrc|bash_profile|bash_login|profile|bash_logout|.textmate_init|\\{\\.bash.+?\\})((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.shellscript",patterns:[{include:"source.shell"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_sql:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(sql|ddl|dml)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.sql",patterns:[{include:"source.sql"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_swift:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(swift)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.swift",patterns:[{include:"source.swift"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_ts:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(typescript|ts)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.typescript",patterns:[{include:"source.ts"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_tsx:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(tsx)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.typescriptreact",patterns:[{include:"source.tsx"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_twig:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(twig)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.twig",patterns:[{include:"source.twig"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_unknown:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?=([^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown"},fenced_code_block_vs_net:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(vb)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.vs_net",patterns:[{include:"source.asp.vb.net"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_xml:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(xml|xsd|tld|jsp|pt|cpt|dtml|rss|opml)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.xml",patterns:[{include:"text.xml"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_xsl:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(xsl|xslt)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.xsl",patterns:[{include:"text.xml.xsl"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},fenced_code_block_yaml:{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(yaml|yml)((\\s+|:|,|\\{|\\?)[^`]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{begin:"(^|\\G)(\\s*)(.*)",contentName:"meta.embedded.block.yaml",patterns:[{include:"source.yaml"}],while:"(^|\\G)(?!\\s*([`~]{3,})\\s*$)"}]},frontMatter:{begin:"\\A-{3}\\s*$",contentName:"meta.embedded.block.frontmatter",end:"(^|\\G)-{3}|\\.{3}\\s*$",patterns:[{include:"source.yaml"}]},heading:{captures:{1:{patterns:[{captures:{1:{name:"punctuation.definition.heading.markdown"},2:{name:"entity.name.section.markdown",patterns:[{include:"#inline"},{include:"text.html.derivative"}]},3:{name:"punctuation.definition.heading.markdown"}},match:"(#{6})\\s+(.*?)(?:\\s+(#+))?\\s*$",name:"heading.6.markdown"},{captures:{1:{name:"punctuation.definition.heading.markdown"},2:{name:"entity.name.section.markdown",patterns:[{include:"#inline"},{include:"text.html.derivative"}]},3:{name:"punctuation.definition.heading.markdown"}},match:"(#{5})\\s+(.*?)(?:\\s+(#+))?\\s*$",name:"heading.5.markdown"},{captures:{1:{name:"punctuation.definition.heading.markdown"},2:{name:"entity.name.section.markdown",patterns:[{include:"#inline"},{include:"text.html.derivative"}]},3:{name:"punctuation.definition.heading.markdown"}},match:"(#{4})\\s+(.*?)(?:\\s+(#+))?\\s*$",name:"heading.4.markdown"},{captures:{1:{name:"punctuation.definition.heading.markdown"},2:{name:"entity.name.section.markdown",patterns:[{include:"#inline"},{include:"text.html.derivative"}]},3:{name:"punctuation.definition.heading.markdown"}},match:"(#{3})\\s+(.*?)(?:\\s+(#+))?\\s*$",name:"heading.3.markdown"},{captures:{1:{name:"punctuation.definition.heading.markdown"},2:{name:"entity.name.section.markdown",patterns:[{include:"#inline"},{include:"text.html.derivative"}]},3:{name:"punctuation.definition.heading.markdown"}},match:"(#{2})\\s+(.*?)(?:\\s+(#+))?\\s*$",name:"heading.2.markdown"},{captures:{1:{name:"punctuation.definition.heading.markdown"},2:{name:"entity.name.section.markdown",patterns:[{include:"#inline"},{include:"text.html.derivative"}]},3:{name:"punctuation.definition.heading.markdown"}},match:"(#{1})\\s+(.*?)(?:\\s+(#+))?\\s*$",name:"heading.1.markdown"}]}},match:"(?:^|\\G)[ ]{0,3}(#{1,6}\\s+(.*?)(\\s+#{1,6})?\\s*)$",name:"markup.heading.markdown"},"heading-setext":{patterns:[{match:"^(={3,})(?=[ \\t]*$\\n?)",name:"markup.heading.setext.1.markdown"},{match:"^(-{3,})(?=[ \\t]*$\\n?)",name:"markup.heading.setext.2.markdown"}]},html:{patterns:[{begin:"(^|\\G)\\s*(<!--)",captures:{1:{name:"punctuation.definition.comment.html"},2:{name:"punctuation.definition.comment.html"}},end:"(-->)",name:"comment.block.html"},{begin:"(?i)(^|\\G)\\s*(?=<(script|style|pre)(\\s|$|>)(?!.*?</(script|style|pre)>))",end:"(?i)(.*)((</)(script|style|pre)(>))",endCaptures:{1:{patterns:[{include:"text.html.derivative"}]},2:{name:"meta.tag.structure.$4.end.html"},3:{name:"punctuation.definition.tag.begin.html"},4:{name:"entity.name.tag.html"},5:{name:"punctuation.definition.tag.end.html"}},patterns:[{begin:"(\\s*|$)",patterns:[{include:"text.html.derivative"}],while:"(?i)^(?!.*</(script|style|pre)>)"}]},{begin:"(?i)(^|\\G)\\s*(?=</?[a-zA-Z]+[^\\s/>]*(\\s|$|/?>))",patterns:[{include:"text.html.derivative"}],while:"^(?!\\s*$)"},{begin:"(^|\\G)\\s*(?=(<[a-zA-Z0-9\\-](/?>|\\s.*?>)|</[a-zA-Z0-9\\-]>)\\s*$)",patterns:[{include:"text.html.derivative"}],while:"^(?!\\s*$)"}]},"image-inline":{captures:{1:{name:"punctuation.definition.link.description.begin.markdown"},2:{name:"string.other.link.description.markdown"},4:{name:"punctuation.definition.link.description.end.markdown"},5:{name:"punctuation.definition.metadata.markdown"},7:{name:"punctuation.definition.link.markdown"},8:{name:"markup.underline.link.image.markdown"},9:{name:"punctuation.definition.link.markdown"},10:{name:"markup.underline.link.image.markdown"},12:{name:"string.other.link.description.title.markdown"},13:{name:"punctuation.definition.string.begin.markdown"},14:{name:"punctuation.definition.string.end.markdown"},15:{name:"string.other.link.description.title.markdown"},16:{name:"punctuation.definition.string.begin.markdown"},17:{name:"punctuation.definition.string.end.markdown"},18:{name:"string.other.link.description.title.markdown"},19:{name:"punctuation.definition.string.begin.markdown"},20:{name:"punctuation.definition.string.end.markdown"},21:{name:"punctuation.definition.metadata.markdown"}},match:`(?x) + (\\!\\[)((?<square>[^\\[\\]\\\\]|\\\\.|\\[\\g<square>*+\\])*+)(\\]) + # Match the link text. + (\\() # Opening paren for url + # The url + [ \\t]* + ( + (<)((?:\\\\[<>]|[^<>\\n])*)(>) + | ((?<url>(?>[^\\s()]+)|\\(\\g<url>*\\))*) + ) + [ \\t]* + (?: + ((\\().+?(\\))) # Match title in parens… + | ((").+?(")) # or in double quotes… + | ((').+?(')) # or in single quotes. + )? # Title is optional + \\s* # Optional whitespace + (\\)) +`,name:"meta.image.inline.markdown"},"image-ref":{captures:{1:{name:"punctuation.definition.link.description.begin.markdown"},2:{name:"string.other.link.description.markdown"},4:{name:"punctuation.definition.link.description.end.markdown"},5:{name:"punctuation.definition.constant.markdown"},6:{name:"constant.other.reference.link.markdown"},7:{name:"punctuation.definition.constant.markdown"}},match:"(\\!\\[)((?<square>[^\\[\\]\\\\]|\\\\.|\\[\\g<square>*+\\])*+)(\\])[ ]?(\\[)(.*?)(\\])",name:"meta.image.reference.markdown"},inline:{patterns:[{include:"#ampersand"},{include:"#bracket"},{include:"#bold"},{include:"#italic"},{include:"#raw"},{include:"#strikethrough"},{include:"#escape"},{include:"#image-inline"},{include:"#image-ref"},{include:"#link-email"},{include:"#link-inet"},{include:"#link-inline"},{include:"#link-ref"},{include:"#link-ref-literal"},{include:"#link-ref-shortcut"}]},italic:{begin:`(?x) (?<open>(\\*(?=\\w)|(?<!\\w)\\*|(?<!\\w)\\b_))(?=\\S) # Open + (?= + ( + <[^>]*+> # HTML tags + | (?<raw>\`+)([^\`]|(?!(?<!\`)\\k<raw>(?!\`))\`)*+\\k<raw> + # Raw + | \\\\[\\\\\`*_{}\\[\\]()#.!+\\->]?+ # Escapes + | \\[ + ( + (?<square> # Named group + [^\\[\\]\\\\] # Match most chars + | \\\\. # Escaped chars + | \\[ \\g<square>*+ \\] # Nested brackets + )*+ + \\] + ( + ( # Reference Link + [ ]? # Optional space + \\[[^\\]]*+\\] # Ref name + ) + | ( # Inline Link + \\( # Opening paren + [ \\t]*+ # Optional whtiespace + <?(.*?)>? # URL + [ \\t]*+ # Optional whtiespace + ( # Optional Title + (?<title>['"]) + (.*?) + \\k<title> + )? + \\) + ) + ) + ) + | \\k<open>\\k<open> # Must be bold closer + | (?!(?<=\\S)\\k<open>). # Everything besides + # style closer + )++ + (?<=\\S)(?=_\\b|\\*)\\k<open> # Close + ) +`,captures:{1:{name:"punctuation.definition.italic.markdown"}},end:"(?<=\\S)(\\1)((?!\\1)|(?=\\1\\1))",name:"markup.italic.markdown",patterns:[{applyEndPatternLast:1,begin:"(?=<[^>]*?>)",end:"(?<=>)",patterns:[{include:"text.html.derivative"}]},{include:"#escape"},{include:"#ampersand"},{include:"#bracket"},{include:"#raw"},{include:"#bold"},{include:"#image-inline"},{include:"#link-inline"},{include:"#link-inet"},{include:"#link-email"},{include:"#image-ref"},{include:"#link-ref-literal"},{include:"#link-ref"},{include:"#link-ref-shortcut"},{include:"#strikethrough"}]},"link-def":{captures:{1:{name:"punctuation.definition.constant.markdown"},2:{name:"constant.other.reference.link.markdown"},3:{name:"punctuation.definition.constant.markdown"},4:{name:"punctuation.separator.key-value.markdown"},5:{name:"punctuation.definition.link.markdown"},6:{name:"markup.underline.link.markdown"},7:{name:"punctuation.definition.link.markdown"},8:{name:"markup.underline.link.markdown"},9:{name:"string.other.link.description.title.markdown"},10:{name:"punctuation.definition.string.begin.markdown"},11:{name:"punctuation.definition.string.end.markdown"},12:{name:"string.other.link.description.title.markdown"},13:{name:"punctuation.definition.string.begin.markdown"},14:{name:"punctuation.definition.string.end.markdown"},15:{name:"string.other.link.description.title.markdown"},16:{name:"punctuation.definition.string.begin.markdown"},17:{name:"punctuation.definition.string.end.markdown"}},match:`(?x) + \\s* # Leading whitespace + (\\[)([^]]+?)(\\])(:) # Reference name + [ \\t]* # Optional whitespace + (?:(<)((?:\\\\[<>]|[^<>\\n])*)(>)|(\\S+?)) # The url + [ \\t]* # Optional whitespace + (?: + ((\\().+?(\\))) # Match title in parens… + | ((").+?(")) # or in double quotes… + | ((').+?(')) # or in single quotes. + )? # Title is optional + \\s* # Optional whitespace + $ +`,name:"meta.link.reference.def.markdown"},"link-email":{captures:{1:{name:"punctuation.definition.link.markdown"},2:{name:"markup.underline.link.markdown"},4:{name:"punctuation.definition.link.markdown"}},match:"(<)((?:mailto:)?[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*)(>)",name:"meta.link.email.lt-gt.markdown"},"link-inet":{captures:{1:{name:"punctuation.definition.link.markdown"},2:{name:"markup.underline.link.markdown"},3:{name:"punctuation.definition.link.markdown"}},match:"(<)((?:https?|ftp)://.*?)(>)",name:"meta.link.inet.markdown"},"link-inline":{captures:{1:{name:"punctuation.definition.link.title.begin.markdown"},2:{name:"string.other.link.title.markdown",patterns:[{include:"#raw"},{include:"#bold"},{include:"#italic"},{include:"#strikethrough"},{include:"#image-inline"}]},4:{name:"punctuation.definition.link.title.end.markdown"},5:{name:"punctuation.definition.metadata.markdown"},7:{name:"punctuation.definition.link.markdown"},8:{name:"markup.underline.link.markdown"},9:{name:"punctuation.definition.link.markdown"},10:{name:"markup.underline.link.markdown"},12:{name:"string.other.link.description.title.markdown"},13:{name:"punctuation.definition.string.begin.markdown"},14:{name:"punctuation.definition.string.end.markdown"},15:{name:"string.other.link.description.title.markdown"},16:{name:"punctuation.definition.string.begin.markdown"},17:{name:"punctuation.definition.string.end.markdown"},18:{name:"string.other.link.description.title.markdown"},19:{name:"punctuation.definition.string.begin.markdown"},20:{name:"punctuation.definition.string.end.markdown"},21:{name:"punctuation.definition.metadata.markdown"}},match:`(?x) + (\\[)((?<square>[^\\[\\]\\\\]|\\\\.|\\[\\g<square>*+\\])*+)(\\]) + # Match the link text. + (\\() # Opening paren for url + # The url + [ \\t]* + ( + (<)((?:\\\\[<>]|[^<>\\n])*)(>) + | ((?<url>(?>[^\\s()]+)|\\(\\g<url>*\\))*) + ) + [ \\t]* + # The title + (?: + ((\\()[^()]*(\\))) # Match title in parens… + | ((")[^"]*(")) # or in double quotes… + | ((')[^']*(')) # or in single quotes. + )? # Title is optional + \\s* # Optional whitespace + (\\)) +`,name:"meta.link.inline.markdown"},"link-ref":{captures:{1:{name:"punctuation.definition.link.title.begin.markdown"},2:{name:"string.other.link.title.markdown",patterns:[{include:"#raw"},{include:"#bold"},{include:"#italic"},{include:"#strikethrough"},{include:"#image-inline"}]},4:{name:"punctuation.definition.link.title.end.markdown"},5:{name:"punctuation.definition.constant.begin.markdown"},6:{name:"constant.other.reference.link.markdown"},7:{name:"punctuation.definition.constant.end.markdown"}},match:"(?<![\\]\\\\])(\\[)((?<square>[^\\[\\]\\\\]|\\\\.|\\[\\g<square>*+\\])*+)(\\])(\\[)([^\\]]*+)(\\])",name:"meta.link.reference.markdown"},"link-ref-literal":{captures:{1:{name:"punctuation.definition.link.title.begin.markdown"},2:{name:"string.other.link.title.markdown"},4:{name:"punctuation.definition.link.title.end.markdown"},5:{name:"punctuation.definition.constant.begin.markdown"},6:{name:"punctuation.definition.constant.end.markdown"}},match:"(?<![\\]\\\\])(\\[)((?<square>[^\\[\\]\\\\]|\\\\.|\\[\\g<square>*+\\])*+)(\\])[ ]?(\\[)(\\])",name:"meta.link.reference.literal.markdown"},"link-ref-shortcut":{captures:{1:{name:"punctuation.definition.link.title.begin.markdown"},2:{name:"string.other.link.title.markdown"},3:{name:"punctuation.definition.link.title.end.markdown"}},match:"(?<![\\]\\\\])(\\[)((?:[^\\s\\[\\]\\\\]|\\\\[\\[\\]])+?)((?<!\\\\)\\])",name:"meta.link.reference.markdown"},list_paragraph:{begin:"(^|\\G)(?=\\S)(?![*+->]\\s|[0-9]+\\.\\s)",name:"meta.paragraph.markdown",patterns:[{include:"#inline"},{include:"text.html.derivative"},{include:"#heading-setext"}],while:"(^|\\G)(?!\\s*$|#|[ ]{0,3}([-*_>][ ]{2,}){3,}[ \\t]*$\\n?|[ ]{0,3}[*+->]|[ ]{0,3}[0-9]+\\.)"},lists:{patterns:[{begin:"(^|\\G)([ ]{0,3})([*+-])([ \\t])",beginCaptures:{3:{name:"punctuation.definition.list.begin.markdown"}},comment:"Currently does not support un-indented second lines.",name:"markup.list.unnumbered.markdown",patterns:[{include:"#block"},{include:"#list_paragraph"}],while:"((^|\\G)([ ]{2,4}|\\t))|(^[ \\t]*$)"},{begin:"(^|\\G)([ ]{0,3})([0-9]+[\\.\\)])([ \\t])",beginCaptures:{3:{name:"punctuation.definition.list.begin.markdown"}},name:"markup.list.numbered.markdown",patterns:[{include:"#block"},{include:"#list_paragraph"}],while:"((^|\\G)([ ]{2,4}|\\t))|(^[ \\t]*$)"}]},paragraph:{begin:"(^|\\G)[ ]{0,3}(?=[^ \\t\\n])",name:"meta.paragraph.markdown",patterns:[{include:"#inline"},{include:"text.html.derivative"},{include:"#heading-setext"}],while:"(^|\\G)((?=\\s*[-=]{3,}\\s*$)|[ ]{4,}(?=[^ \\t\\n]))"},raw:{captures:{1:{name:"punctuation.definition.raw.markdown"},3:{name:"punctuation.definition.raw.markdown"}},match:"(`+)((?:[^`]|(?!(?<!`)\\1(?!`))`)*+)(\\1)",name:"markup.inline.raw.string.markdown"},raw_block:{begin:"(^|\\G)([ ]{4}|\\t)",name:"markup.raw.block.markdown",while:"(^|\\G)([ ]{4}|\\t)"},separator:{match:"(^|\\G)[ ]{0,3}([\\*\\-\\_])([ ]{0,2}\\2){2,}[ \\t]*$\\n?",name:"meta.separator.markdown"},strikethrough:{captures:{1:{name:"punctuation.definition.strikethrough.markdown"},2:{patterns:[{applyEndPatternLast:1,begin:"(?=<[^>]*?>)",end:"(?<=>)",patterns:[{include:"text.html.derivative"}]},{include:"#escape"},{include:"#ampersand"},{include:"#bracket"},{include:"#raw"},{include:"#bold"},{include:"#italic"},{include:"#image-inline"},{include:"#link-inline"},{include:"#link-inet"},{include:"#link-email"},{include:"#image-ref"},{include:"#link-ref-literal"},{include:"#link-ref"},{include:"#link-ref-shortcut"}]},3:{name:"punctuation.definition.strikethrough.markdown"}},match:"(?<!\\\\)(~{2,})((?:[^~]|(?!(?<![~\\\\])\\1(?!~))~)*+)(\\1)",name:"markup.strikethrough.markdown"},table:{begin:"(^|\\G)(\\|)(?=[^|].+\\|\\s*$)",beginCaptures:{2:{name:"punctuation.definition.table.markdown"}},name:"markup.table.markdown",patterns:[{match:"\\|",name:"punctuation.definition.table.markdown"},{captures:{1:{name:"punctuation.separator.table.markdown"}},match:"(?<=\\|)\\s*(:?-+:?)\\s*(?=\\|)"},{captures:{1:{patterns:[{include:"#inline"}]}},match:"(?<=\\|)\\s*(?=\\S)((\\\\\\||[^|])+)(?<=\\S)\\s*(?=\\|)"}],while:"(^|\\G)(?=\\|)"}},scopeName:"text.html.markdown",embeddedLangs:[],aliases:["md"],embeddedLangsLazy:["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","julia","rust","scala","shellscript","typescript","tsx","csharp","fsharp","dart","handlebars","erlang","elixir","latex","bibtex"]});var Hs=[Us];const Ws=Object.freeze({displayName:"Sass",fileTypes:["sass"],foldingStartMarker:"/\\*|^#|^\\*|^\\b|*#?region|^\\.",foldingStopMarker:"\\*/|*#?endregion|^\\s*$",name:"sass",patterns:[{begin:"^(\\s*)(/\\*)",end:"(\\*/)|^(?!\\s\\1)",name:"comment.block.sass",patterns:[{include:"#comment-tag"},{include:"#comment-param"}]},{match:"^[\\t ]*/?//[\\t ]*[SRI][\\t ]*$",name:"keyword.other.sass.formatter.action"},{begin:"^[\\t ]*//[\\t ]*(import)[\\t ]*(css-variables)[\\t ]*(from)",captures:{1:{name:"keyword.control"},2:{name:"variable"},3:{name:"keyword.control"}},end:"$\\n?",name:"comment.import.css.variables",patterns:[{include:"#import-quotes"}]},{include:"#double-slash"},{include:"#double-quoted"},{include:"#single-quoted"},{include:"#interpolation"},{include:"#curly-brackets"},{include:"#placeholder-selector"},{begin:"\\$[a-zA-Z0-9_-]+(?=:)",captures:{0:{name:"variable.other.name"}},end:"$\\n?|(?=\\)\\s\\)|\\)\\n)",name:"sass.script.maps",patterns:[{include:"#double-slash"},{include:"#double-quoted"},{include:"#single-quoted"},{include:"#interpolation"},{include:"#variable"},{include:"#rgb-value"},{include:"#numeric"},{include:"#unit"},{include:"#flag"},{include:"#comma"},{include:"#function"},{include:"#function-content"},{include:"#operator"},{include:"#reserved-words"},{include:"#parent-selector"},{include:"#property-value"},{include:"#semicolon"},{include:"#dotdotdot"}]},{include:"#variable-root"},{include:"#numeric"},{include:"#unit"},{include:"#flag"},{include:"#comma"},{include:"#semicolon"},{include:"#dotdotdot"},{begin:"@include|\\+(?!\\W|\\d)",captures:{0:{name:"keyword.control.at-rule.css.sass"}},end:"(?=\\n|\\()",name:"support.function.name.sass.library"},{begin:"^(@use)",captures:{0:{name:"keyword.control.at-rule.css.sass.use"}},end:"(?=\\n)",name:"sass.use",patterns:[{match:"as|with",name:"support.type.css.sass"},{include:"#numeric"},{include:"#unit"},{include:"#variable-root"},{include:"#rgb-value"},{include:"#comma"},{include:"#parenthesis-open"},{include:"#parenthesis-close"},{include:"#colon"},{include:"#import-quotes"}]},{begin:"^@import(.*?)( as.*)?$",captures:{1:{name:"constant.character.css.sass"},2:{name:"invalid"}},end:"(?=\\n)",name:"keyword.control.at-rule.use"},{begin:"@mixin|^[\\t ]*=|@function",captures:{0:{name:"keyword.control.at-rule.css.sass"}},end:"$\\n?|(?=\\()",name:"support.function.name.sass",patterns:[{match:"[\\w-]+",name:"entity.name.function"}]},{begin:"@",end:"$\\n?|\\s(?!(all|braille|embossed|handheld|print|projection|screen|speech|tty|tv|if|only|not)(\\s|,))",name:"keyword.control.at-rule.css.sass"},{begin:"(?<!\\-|\\()\\b(a|abbr|acronym|address|applet|area|article|aside|audio|b|base|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|datalist|dd|del|details|dfn|dialog|div|dl|dt|em|embed|eventsource|fieldset|figure|figcaption|footer|form|frame|frameset|(h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|label|legend|li|link|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|picture|pre|progress|q|samp|script|section|select|small|source|span|strike|strong|style|sub|summary|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video|main|svg|rect|ruby|center|circle|ellipse|line|polyline|polygon|path|text|u|slot)\\b(?!-|\\)|:\\s)|&",end:"$\\n?|(?=\\s|,|\\(|\\)|\\.|\\#|\\[|>|-|_)",name:"entity.name.tag.css.sass.symbol",patterns:[{include:"#interpolation"},{include:"#pseudo-class"}]},{begin:"#",end:"$\\n?|(?=\\s|,|\\(|\\)|\\.|\\[|>)",name:"entity.other.attribute-name.id.css.sass",patterns:[{include:"#interpolation"},{include:"#pseudo-class"}]},{begin:"\\.|(?<=&)(-|_)",end:"$\\n?|(?=\\s|,|\\(|\\)|\\[|>)",name:"entity.other.attribute-name.class.css.sass",patterns:[{include:"#interpolation"},{include:"#pseudo-class"}]},{begin:"\\[",end:"\\]",name:"entity.other.attribute-selector.sass",patterns:[{include:"#double-quoted"},{include:"#single-quoted"},{match:"\\^|\\$|\\*|~",name:"keyword.other.regex.sass"}]},{match:`^((?<=\\]|\\)|not\\(|\\*|>|>\\s)| +*):[a-z:-]+|(::|:-)[a-z:-]+`,name:"entity.other.attribute-name.pseudo-class.css.sass"},{include:"#module"},{match:"[\\w-]*\\(",name:"entity.name.function"},{match:"\\)",name:"entity.name.function.close"},{begin:":",end:"$\\n?|(?=\\s\\(|and\\(|\\),)",name:"meta.property-list.css.sass.prop",patterns:[{match:"(?<=:)[a-z-]+\\s",name:"support.type.property-name.css.sass.prop.name"},{include:"#double-slash"},{include:"#double-quoted"},{include:"#single-quoted"},{include:"#interpolation"},{include:"#curly-brackets"},{include:"#variable"},{include:"#rgb-value"},{include:"#numeric"},{include:"#unit"},{include:"#module"},{match:"--.+?(?=\\))",name:"variable.css"},{match:"[\\w-]*\\(",name:"entity.name.function"},{match:"\\)",name:"entity.name.function.close"},{include:"#flag"},{include:"#comma"},{include:"#semicolon"},{include:"#function"},{include:"#function-content"},{include:"#operator"},{include:"#parent-selector"},{include:"#property-value"}]},{include:"#rgb-value"},{include:"#function"},{include:"#function-content"},{begin:"(?<=})(?!\\n|\\(|\\)|[a-zA-Z0-9_-]+:)",end:"\\s|(?=,|\\.|\\[|\\)|\\n)",name:"entity.name.tag.css.sass",patterns:[{include:"#interpolation"},{include:"#pseudo-class"}]},{include:"#operator"},{match:"[a-z-]+((?=:|#{))",name:"support.type.property-name.css.sass.prop.name"},{include:"#reserved-words"},{include:"#property-value"}],repository:{colon:{match:":",name:"meta.property-list.css.sass.colon"},comma:{match:"\\band\\b|\\bor\\b|,",name:"comment.punctuation.comma.sass"},"comment-param":{match:"\\@(\\w+)",name:"storage.type.class.jsdoc"},"comment-tag":{begin:"(?<={{)",end:"(?=}})",name:"comment.tag.sass"},"curly-brackets":{match:"{|}",name:"invalid"},dotdotdot:{match:"\\.\\.\\.",name:"variable.other"},"double-quoted":{begin:'"',end:'"',name:"string.quoted.double.css.sass",patterns:[{include:"#quoted-interpolation"}]},"double-slash":{begin:"//",end:"$\\n?",name:"comment.line.sass",patterns:[{include:"#comment-tag"}]},flag:{match:"!(important|default|optional|global)",name:"keyword.other.important.css.sass"},function:{match:"(?<=[\\s|\\(|,|:])(?!url|format|attr)[a-zA-Z0-9_-][\\w-]*(?=\\()",name:"support.function.name.sass"},"function-content":{begin:"(?<=url\\(|format\\(|attr\\()",end:".(?=\\))",name:"string.quoted.double.css.sass"},"import-quotes":{match:`["']?\\.{0,2}[\\w/]+["']?`,name:"constant.character.css.sass"},interpolation:{begin:"#{",end:"}",name:"support.function.interpolation.sass",patterns:[{include:"#variable"},{include:"#numeric"},{include:"#operator"},{include:"#unit"},{include:"#comma"},{include:"#double-quoted"},{include:"#single-quoted"}]},module:{captures:{1:{name:"constant.character.module.name"},2:{name:"constant.numeric.module.dot"}},match:"([\\w-]+?)(\\.)",name:"constant.character.module"},numeric:{match:"(-|\\.)?[0-9]+(\\.[0-9]+)?",name:"constant.numeric.css.sass"},operator:{match:"\\+|\\s-\\s|\\s-(?=\\$)|(?<=\\()-(?=\\$)|\\s-(?=\\()|\\*|/|%|=|!|<|>|~",name:"keyword.operator.sass"},"parent-selector":{match:"&",name:"entity.name.tag.css.sass"},"parenthesis-close":{match:"\\)",name:"entity.name.function.parenthesis.close"},"parenthesis-open":{match:"\\(",name:"entity.name.function.parenthesis.open"},"placeholder-selector":{begin:"(?<!\\d)%(?!\\d)",end:"$\\n?|\\s",name:"entity.other.inherited-class.placeholder-selector.css.sass"},"property-value":{match:"[a-zA-Z0-9_-]+",name:"meta.property-value.css.sass support.constant.property-value.css.sass"},"pseudo-class":{match:":[a-z:-]+",name:"entity.other.attribute-name.pseudo-class.css.sass"},"quoted-interpolation":{begin:"#{",end:"}",name:"support.function.interpolation.sass",patterns:[{include:"#variable"},{include:"#numeric"},{include:"#operator"},{include:"#unit"},{include:"#comma"}]},"reserved-words":{match:"\\b(false|from|in|not|null|through|to|true)\\b",name:"support.type.property-name.css.sass"},"rgb-value":{match:"(#)([0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})\\b",name:"constant.language.color.rgb-value.css.sass"},semicolon:{match:";",name:"invalid"},"single-quoted":{begin:"'",end:"'",name:"string.quoted.single.css.sass",patterns:[{include:"#quoted-interpolation"}]},unit:{match:"(?<=[\\d]|})(ch|cm|deg|dpcm|dpi|dppx|em|ex|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vw|fr|%)",name:"keyword.control.unit.css.sass"},variable:{match:"\\$[a-zA-Z0-9_-]+",name:"variable.other.value"},"variable-root":{match:"\\$[a-zA-Z0-9_-]+",name:"variable.other.root"}},scopeName:"source.sass"});var Un=[Ws];const Vs=Object.freeze({displayName:"SCSS",name:"scss",patterns:[{include:"#variable_setting"},{include:"#at_rule_forward"},{include:"#at_rule_use"},{include:"#at_rule_include"},{include:"#at_rule_import"},{include:"#general"},{include:"#flow_control"},{include:"#rules"},{include:"#property_list"},{include:"#at_rule_mixin"},{include:"#at_rule_media"},{include:"#at_rule_function"},{include:"#at_rule_charset"},{include:"#at_rule_option"},{include:"#at_rule_namespace"},{include:"#at_rule_fontface"},{include:"#at_rule_page"},{include:"#at_rule_keyframes"},{include:"#at_rule_at_root"},{include:"#at_rule_supports"},{match:";",name:"punctuation.terminator.rule.css"}],repository:{at_rule_at_root:{begin:"\\s*((@)(at-root))(\\s+|$)",beginCaptures:{1:{name:"keyword.control.at-rule.at-root.scss"},2:{name:"punctuation.definition.keyword.scss"}},end:"\\s*(?={)",name:"meta.at-rule.at-root.scss",patterns:[{include:"#function_attributes"},{include:"#functions"},{include:"#selectors"}]},at_rule_charset:{begin:"\\s*((@)charset\\b)\\s*",captures:{1:{name:"keyword.control.at-rule.charset.scss"},2:{name:"punctuation.definition.keyword.scss"}},end:"\\s*((?=;|$))",name:"meta.at-rule.charset.scss",patterns:[{include:"#variable"},{include:"#string_single"},{include:"#string_double"}]},at_rule_content:{begin:"\\s*((@)content\\b)\\s*",captures:{1:{name:"keyword.control.content.scss"}},end:"\\s*((?=;))",name:"meta.content.scss",patterns:[{include:"#variable"},{include:"#selectors"},{include:"#property_values"}]},at_rule_each:{begin:"\\s*((@)each\\b)\\s*",captures:{1:{name:"keyword.control.each.scss"},2:{name:"punctuation.definition.keyword.scss"}},end:"\\s*((?=}))",name:"meta.at-rule.each.scss",patterns:[{match:"\\b(in|,)\\b",name:"keyword.control.operator"},{include:"#variable"},{include:"#property_values"},{include:"$self"}]},at_rule_else:{begin:"\\s*((@)else(\\s*(if)?))\\s*",captures:{1:{name:"keyword.control.else.scss"},2:{name:"punctuation.definition.keyword.scss"}},end:"\\s*(?={)",name:"meta.at-rule.else.scss",patterns:[{include:"#conditional_operators"},{include:"#variable"},{include:"#property_values"}]},at_rule_extend:{begin:"\\s*((@)extend\\b)\\s*",captures:{1:{name:"keyword.control.at-rule.extend.scss"},2:{name:"punctuation.definition.keyword.scss"}},end:"\\s*(?=;)",name:"meta.at-rule.extend.scss",patterns:[{include:"#variable"},{include:"#selectors"},{include:"#property_values"}]},at_rule_fontface:{patterns:[{begin:"^\\s*((@)font-face\\b)",beginCaptures:{1:{name:"keyword.control.at-rule.fontface.scss"},2:{name:"punctuation.definition.keyword.scss"}},end:"\\s*(?={)",name:"meta.at-rule.fontface.scss",patterns:[{include:"#function_attributes"}]}]},at_rule_for:{begin:"\\s*((@)for\\b)\\s*",captures:{1:{name:"keyword.control.for.scss"},2:{name:"punctuation.definition.keyword.scss"}},end:"\\s*(?={)",name:"meta.at-rule.for.scss",patterns:[{match:"(==|!=|<=|>=|<|>|from|to|through)",name:"keyword.control.operator"},{include:"#variable"},{include:"#property_values"},{include:"$self"}]},at_rule_forward:{begin:"\\s*((@)forward\\b)\\s*",captures:{1:{name:"keyword.control.at-rule.forward.scss"},2:{name:"punctuation.definition.keyword.scss"}},end:"\\s*(?=;)",name:"meta.at-rule.forward.scss",patterns:[{match:"\\b(as|hide|show)\\b",name:"keyword.control.operator"},{captures:{1:{name:"entity.other.attribute-name.module.scss"},2:{name:"punctuation.definition.wildcard.scss"}},match:"\\b([\\w-]+)(\\*)"},{match:"\\b[\\w-]+\\b",name:"entity.name.function.scss"},{include:"#variable"},{include:"#string_single"},{include:"#string_double"},{include:"#comment_line"},{include:"#comment_block"}]},at_rule_function:{patterns:[{begin:"\\s*((@)function\\b)\\s*",captures:{1:{name:"keyword.control.at-rule.function.scss"},2:{name:"punctuation.definition.keyword.scss"},3:{name:"entity.name.function.scss"}},end:"\\s*(?={)",name:"meta.at-rule.function.scss",patterns:[{include:"#function_attributes"}]},{captures:{1:{name:"keyword.control.at-rule.function.scss"},2:{name:"punctuation.definition.keyword.scss"},3:{name:"entity.name.function.scss"}},match:"\\s*((@)function\\b)\\s*",name:"meta.at-rule.function.scss"}]},at_rule_if:{begin:"\\s*((@)if\\b)\\s*",captures:{1:{name:"keyword.control.if.scss"},2:{name:"punctuation.definition.keyword.scss"}},end:"\\s*(?={)",name:"meta.at-rule.if.scss",patterns:[{include:"#conditional_operators"},{include:"#variable"},{include:"#property_values"}]},at_rule_import:{begin:"\\s*((@)import\\b)\\s*",captures:{1:{name:"keyword.control.at-rule.import.scss"},2:{name:"punctuation.definition.keyword.scss"}},end:"\\s*((?=;)|(?=}))",name:"meta.at-rule.import.scss",patterns:[{include:"#variable"},{include:"#string_single"},{include:"#string_double"},{include:"#functions"},{include:"#comment_line"}]},at_rule_include:{patterns:[{begin:"(?<=@include)\\s+(?:([\\w-]+)\\s*(\\.))?([\\w-]+)\\s*(\\()",beginCaptures:{1:{name:"variable.scss"},2:{name:"punctuation.access.module.scss"},3:{name:"entity.name.function.scss"},4:{name:"punctuation.definition.parameters.begin.bracket.round.scss"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.parameters.end.bracket.round.scss"}},name:"meta.at-rule.include.scss",patterns:[{include:"#function_attributes"}]},{captures:{0:{name:"meta.at-rule.include.scss"},1:{name:"variable.scss"},2:{name:"punctuation.access.module.scss"},3:{name:"entity.name.function.scss"}},match:"(?<=@include)\\s+(?:([\\w-]+)\\s*(\\.))?([\\w-]+)"},{captures:{0:{name:"meta.at-rule.include.scss"},1:{name:"keyword.control.at-rule.include.scss"},2:{name:"punctuation.definition.keyword.scss"}},match:"((@)include)\\b"}]},at_rule_keyframes:{begin:"(?<=^|\\s)(@)(?:-(?:webkit|moz)-)?keyframes\\b",beginCaptures:{0:{name:"keyword.control.at-rule.keyframes.scss"},1:{name:"punctuation.definition.keyword.scss"}},end:"(?<=})",name:"meta.at-rule.keyframes.scss",patterns:[{captures:{1:{name:"entity.name.function.scss"}},match:"(?<=@keyframes)\\s+((?:[_A-Za-z][-\\w]|-[_A-Za-z])[-\\w]*)"},{begin:'(?<=@keyframes)\\s+(")',beginCaptures:{1:{name:"punctuation.definition.string.begin.scss"}},contentName:"entity.name.function.scss",end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.scss"}},name:"string.quoted.double.scss",patterns:[{match:"\\\\(\\h{1,6}|.)",name:"constant.character.escape.scss"},{include:"#interpolation"}]},{begin:"(?<=@keyframes)\\s+(')",beginCaptures:{1:{name:"punctuation.definition.string.begin.scss"}},contentName:"entity.name.function.scss",end:"'",endCaptures:{0:{name:"punctuation.definition.string.end.scss"}},name:"string.quoted.single.scss",patterns:[{match:"\\\\(\\h{1,6}|.)",name:"constant.character.escape.scss"},{include:"#interpolation"}]},{begin:"{",beginCaptures:{0:{name:"punctuation.section.keyframes.begin.scss"}},end:"}",endCaptures:{0:{name:"punctuation.section.keyframes.end.scss"}},patterns:[{match:"\\b(?:(?:100|[1-9]\\d|\\d)%|from|to)(?=\\s*{)",name:"entity.other.attribute-name.scss"},{include:"#flow_control"},{include:"#interpolation"},{include:"#property_list"},{include:"#rules"}]}]},at_rule_media:{patterns:[{begin:"^\\s*((@)media)\\b",beginCaptures:{1:{name:"keyword.control.at-rule.media.scss"},2:{name:"punctuation.definition.keyword.scss"}},end:"\\s*(?={)",name:"meta.at-rule.media.scss",patterns:[{include:"#comment_docblock"},{include:"#comment_block"},{include:"#comment_line"},{match:"\\b(only)\\b",name:"keyword.control.operator.css.scss"},{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.media-query.begin.bracket.round.scss"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.media-query.end.bracket.round.scss"}},name:"meta.property-list.media-query.scss",patterns:[{begin:"(?<![-a-z])(?=[-a-z])",end:"$|(?![-a-z])",name:"meta.property-name.media-query.scss",patterns:[{include:"source.css#media-features"},{include:"source.css#property-names"}]},{begin:"(:)\\s*(?!(\\s*{))",beginCaptures:{1:{name:"punctuation.separator.key-value.scss"}},contentName:"meta.property-value.media-query.scss",end:"\\s*(;|(?=}|\\)))",endCaptures:{1:{name:"punctuation.terminator.rule.scss"}},patterns:[{include:"#general"},{include:"#property_values"}]}]},{include:"#variable"},{include:"#conditional_operators"},{include:"source.css#media-types"}]}]},at_rule_mixin:{patterns:[{begin:"(?<=@mixin)\\s+([\\w-]+)\\s*(\\()",beginCaptures:{1:{name:"entity.name.function.scss"},2:{name:"punctuation.definition.parameters.begin.bracket.round.scss"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.parameters.end.bracket.round.scss"}},name:"meta.at-rule.mixin.scss",patterns:[{include:"#function_attributes"}]},{captures:{1:{name:"entity.name.function.scss"}},match:"(?<=@mixin)\\s+([\\w-]+)",name:"meta.at-rule.mixin.scss"},{captures:{1:{name:"keyword.control.at-rule.mixin.scss"},2:{name:"punctuation.definition.keyword.scss"}},match:"((@)mixin)\\b",name:"meta.at-rule.mixin.scss"}]},at_rule_namespace:{patterns:[{begin:"(?<=@namespace)\\s+(?=url)",end:"(?=;|$)",name:"meta.at-rule.namespace.scss",patterns:[{include:"#property_values"},{include:"#string_single"},{include:"#string_double"}]},{begin:"(?<=@namespace)\\s+([\\w-]*)",captures:{1:{name:"entity.name.namespace-prefix.scss"}},end:"(?=;|$)",name:"meta.at-rule.namespace.scss",patterns:[{include:"#variables"},{include:"#property_values"},{include:"#string_single"},{include:"#string_double"}]},{captures:{1:{name:"keyword.control.at-rule.namespace.scss"},2:{name:"punctuation.definition.keyword.scss"}},match:"((@)namespace)\\b",name:"meta.at-rule.namespace.scss"}]},at_rule_option:{captures:{1:{name:"keyword.control.at-rule.charset.scss"},2:{name:"punctuation.definition.keyword.scss"}},match:"^\\s*((@)option\\b)\\s*",name:"meta.at-rule.option.scss"},at_rule_page:{patterns:[{begin:"^\\s*((@)page)(?=:|\\s)\\s*([-:\\w]*)",captures:{1:{name:"keyword.control.at-rule.page.scss"},2:{name:"punctuation.definition.keyword.scss"},3:{name:"entity.name.function.scss"}},end:"\\s*(?={)",name:"meta.at-rule.page.scss"}]},at_rule_return:{begin:"\\s*((@)(return)\\b)",captures:{1:{name:"keyword.control.return.scss"},2:{name:"punctuation.definition.keyword.scss"}},end:"\\s*((?=;))",name:"meta.at-rule.return.scss",patterns:[{include:"#variable"},{include:"#property_values"}]},at_rule_supports:{begin:"(?<=^|\\s)(@)supports\\b",captures:{0:{name:"keyword.control.at-rule.supports.scss"},1:{name:"punctuation.definition.keyword.scss"}},end:"(?={)|$",name:"meta.at-rule.supports.scss",patterns:[{include:"#logical_operators"},{include:"#properties"},{match:"\\(",name:"punctuation.definition.condition.begin.bracket.round.scss"},{match:"\\)",name:"punctuation.definition.condition.end.bracket.round.scss"}]},at_rule_use:{begin:"\\s*((@)use\\b)\\s*",captures:{1:{name:"keyword.control.at-rule.use.scss"},2:{name:"punctuation.definition.keyword.scss"}},end:"\\s*(?=;)",name:"meta.at-rule.use.scss",patterns:[{match:"\\b(as|with)\\b",name:"keyword.control.operator"},{match:"\\b[\\w-]+\\b",name:"variable.scss"},{match:"\\*",name:"variable.language.expanded-namespace.scss"},{include:"#string_single"},{include:"#string_double"},{include:"#comment_line"},{include:"#comment_block"},{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.parameters.begin.bracket.round.scss"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.parameters.end.bracket.round.scss"}},patterns:[{include:"#function_attributes"}]}]},at_rule_warn:{begin:"\\s*((@)(warn|debug|error)\\b)\\s*",captures:{1:{name:"keyword.control.warn.scss"},2:{name:"punctuation.definition.keyword.scss"}},end:"\\s*(?=;)",name:"meta.at-rule.warn.scss",patterns:[{include:"#variable"},{include:"#string_double"},{include:"#string_single"}]},at_rule_while:{begin:"\\s*((@)while\\b)\\s*",captures:{1:{name:"keyword.control.while.scss"},2:{name:"punctuation.definition.keyword.scss"}},end:"\\s*(?=})",name:"meta.at-rule.while.scss",patterns:[{include:"#conditional_operators"},{include:"#variable"},{include:"#property_values"},{include:"$self"}]},comment_block:{begin:"/\\*",beginCaptures:{0:{name:"punctuation.definition.comment.scss"}},end:"\\*/",endCaptures:{0:{name:"punctuation.definition.comment.scss"}},name:"comment.block.scss"},comment_docblock:{begin:"///",beginCaptures:{0:{name:"punctuation.definition.comment.scss"}},end:"(?=$)",name:"comment.block.documentation.scss",patterns:[{include:"source.sassdoc"}]},comment_line:{begin:"//",beginCaptures:{0:{name:"punctuation.definition.comment.scss"}},end:"\\n",name:"comment.line.scss"},comparison_operators:{match:"==|!=|<=|>=|<|>",name:"keyword.operator.comparison.scss"},conditional_operators:{patterns:[{include:"#comparison_operators"},{include:"#logical_operators"}]},constant_default:{match:"!default",name:"keyword.other.default.scss"},constant_functions:{begin:"(?:([\\w-]+)(\\.))?([\\w-]+)(\\()",beginCaptures:{1:{name:"variable.scss"},2:{name:"punctuation.access.module.scss"},3:{name:"support.function.misc.scss"},4:{name:"punctuation.section.function.scss"}},end:"(\\))",endCaptures:{1:{name:"punctuation.section.function.scss"}},patterns:[{include:"#parameters"}]},constant_important:{match:"!important",name:"keyword.other.important.scss"},constant_mathematical_symbols:{match:"\\b(\\+|-|\\*|/)\\b",name:"support.constant.mathematical-symbols.scss"},constant_optional:{match:"!optional",name:"keyword.other.optional.scss"},constant_sass_functions:{begin:"(headings|stylesheet-url|rgba?|hsla?|ie-hex-str|red|green|blue|alpha|opacity|hue|saturation|lightness|prefixed|prefix|-moz|-svg|-css2|-pie|-webkit|-ms|font-(?:files|url)|grid-image|image-(?:width|height|url|color)|sprites?|sprite-(?:map|map-name|file|url|position)|inline-(?:font-files|image)|opposite-position|grad-point|grad-end-position|color-stops|color-stops-in-percentages|grad-color-stops|(?:radial|linear)-(?:gradient|svg-gradient)|opacify|fade-?in|transparentize|fade-?out|lighten|darken|saturate|desaturate|grayscale|adjust-(?:hue|lightness|saturation|color)|scale-(?:lightness|saturation|color)|change-color|spin|complement|invert|mix|-compass-(?:list|space-list|slice|nth|list-size)|blank|compact|nth|first-value-of|join|length|append|nest|append-selector|headers|enumerate|range|percentage|unitless|unit|if|type-of|comparable|elements-of-type|quote|unquote|escape|e|sin|cos|tan|abs|round|ceil|floor|pi|translate(?:X|Y))(\\()",beginCaptures:{1:{name:"support.function.misc.scss"},2:{name:"punctuation.section.function.scss"}},end:"(\\))",endCaptures:{1:{name:"punctuation.section.function.scss"}},patterns:[{include:"#parameters"}]},flow_control:{patterns:[{include:"#at_rule_if"},{include:"#at_rule_else"},{include:"#at_rule_warn"},{include:"#at_rule_for"},{include:"#at_rule_while"},{include:"#at_rule_each"},{include:"#at_rule_return"}]},function_attributes:{patterns:[{match:":",name:"punctuation.separator.key-value.scss"},{include:"#general"},{include:"#property_values"},{match:"[={}\\?;@]",name:"invalid.illegal.scss"}]},functions:{patterns:[{begin:"([\\w-]{1,})(\\()\\s*",beginCaptures:{1:{name:"support.function.misc.scss"},2:{name:"punctuation.section.function.scss"}},end:"(\\))",endCaptures:{1:{name:"punctuation.section.function.scss"}},patterns:[{include:"#parameters"}]},{match:"([\\w-]{1,})",name:"support.function.misc.scss"}]},general:{patterns:[{include:"#variable"},{include:"#comment_docblock"},{include:"#comment_block"},{include:"#comment_line"}]},interpolation:{begin:"#{",beginCaptures:{0:{name:"punctuation.definition.interpolation.begin.bracket.curly.scss"}},end:"}",endCaptures:{0:{name:"punctuation.definition.interpolation.end.bracket.curly.scss"}},name:"variable.interpolation.scss",patterns:[{include:"#variable"},{include:"#property_values"}]},logical_operators:{match:"\\b(not|or|and)\\b",name:"keyword.operator.logical.scss"},map:{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.map.begin.bracket.round.scss"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.map.end.bracket.round.scss"}},name:"meta.definition.variable.map.scss",patterns:[{include:"#comment_docblock"},{include:"#comment_block"},{include:"#comment_line"},{captures:{1:{name:"support.type.map.key.scss"},2:{name:"punctuation.separator.key-value.scss"}},match:"\\b([\\w-]+)\\s*(:)"},{match:",",name:"punctuation.separator.delimiter.scss"},{include:"#map"},{include:"#variable"},{include:"#property_values"}]},operators:{match:"[-+*/](?!\\s*[-+*/])",name:"keyword.operator.css"},parameters:{patterns:[{include:"#variable"},{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.begin.bracket.round.scss"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.end.bracket.round.scss"}},patterns:[{include:"#function_attributes"}]},{include:"#property_values"},{include:"#comment_block"},{match:`[^'",) \\t]+`,name:"variable.parameter.url.scss"},{match:",",name:"punctuation.separator.delimiter.scss"}]},parent_selector_suffix:{captures:{1:{name:"punctuation.definition.entity.css"},2:{patterns:[{include:"#interpolation"},{match:"\\\\([0-9a-fA-F]{1,6}|.)",name:"constant.character.escape.scss"},{match:"\\$|}",name:"invalid.illegal.identifier.scss"}]}},match:`(?x) +(?<=&) +( + (?: [-a-zA-Z_0-9]|[^\\x00-\\x7F] # Valid identifier characters + | \\\\(?:[0-9a-fA-F]{1,6}|.) # Escape sequence + | \\#\\{ # Interpolation (escaped to avoid Coffeelint errors) + | \\$ # Possible start of interpolation variable + | } # Possible end of interpolation + )+ +) # Followed by either: +(?= $ # - End of the line + | [\\s,.\\#)\\[:{>+~|] # - Another selector + | /\\* # - A block comment +)`,name:"entity.other.attribute-name.parent-selector-suffix.css"},properties:{patterns:[{begin:"(?<![-a-z])(?=[-a-z])",end:"$|(?![-a-z])",name:"meta.property-name.scss",patterns:[{include:"source.css#property-names"},{include:"#at_rule_include"}]},{begin:"(:)\\s*(?!(\\s*{))",beginCaptures:{1:{name:"punctuation.separator.key-value.scss"}},contentName:"meta.property-value.scss",end:"\\s*(;|(?=}|\\)))",endCaptures:{1:{name:"punctuation.terminator.rule.scss"}},patterns:[{include:"#general"},{include:"#property_values"}]}]},property_list:{begin:"{",beginCaptures:{0:{name:"punctuation.section.property-list.begin.bracket.curly.scss"}},end:"}",endCaptures:{0:{name:"punctuation.section.property-list.end.bracket.curly.scss"}},name:"meta.property-list.scss",patterns:[{include:"#flow_control"},{include:"#rules"},{include:"#properties"},{include:"$self"}]},property_values:{patterns:[{include:"#string_single"},{include:"#string_double"},{include:"#constant_functions"},{include:"#constant_sass_functions"},{include:"#constant_important"},{include:"#constant_default"},{include:"#constant_optional"},{include:"source.css#numeric-values"},{include:"source.css#property-keywords"},{include:"source.css#color-keywords"},{include:"source.css#property-names"},{include:"#constant_mathematical_symbols"},{include:"#operators"},{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.begin.bracket.round.scss"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.end.bracket.round.scss"}},patterns:[{include:"#general"},{include:"#property_values"}]}]},rules:{patterns:[{include:"#general"},{include:"#at_rule_extend"},{include:"#at_rule_content"},{include:"#at_rule_include"},{include:"#at_rule_media"},{include:"#selectors"}]},selector_attribute:{captures:{1:{name:"punctuation.definition.attribute-selector.begin.bracket.square.scss"},2:{name:"entity.other.attribute-name.attribute.scss",patterns:[{include:"#interpolation"},{match:"\\\\([0-9a-fA-F]{1,6}|.)",name:"constant.character.escape.scss"},{match:"\\$|}",name:"invalid.illegal.scss"}]},3:{name:"keyword.operator.scss"},4:{name:"string.unquoted.attribute-value.scss",patterns:[{include:"#interpolation"},{match:"\\\\([0-9a-fA-F]{1,6}|.)",name:"constant.character.escape.scss"},{match:"\\$|}",name:"invalid.illegal.scss"}]},5:{name:"string.quoted.double.attribute-value.scss"},6:{name:"punctuation.definition.string.begin.scss"},7:{patterns:[{include:"#interpolation"},{match:"\\\\([0-9a-fA-F]{1,6}|.)",name:"constant.character.escape.scss"},{match:"\\$|}",name:"invalid.illegal.scss"}]},8:{name:"punctuation.definition.string.end.scss"},9:{name:"string.quoted.single.attribute-value.scss"},10:{name:"punctuation.definition.string.begin.scss"},11:{patterns:[{include:"#interpolation"},{match:"\\\\([0-9a-fA-F]{1,6}|.)",name:"constant.character.escape.scss"},{match:"\\$|}",name:"invalid.illegal.scss"}]},12:{name:"punctuation.definition.string.end.scss"},13:{name:"punctuation.definition.attribute-selector.end.bracket.square.scss"}},match:`(?xi) +(\\[) +\\s* +( + (?: + [-a-zA-Z_0-9]|[^\\x00-\\x7F] # Valid identifier characters + | \\\\(?:[0-9a-fA-F]{1,6}|.) # Escape sequence + | \\#\\{ # Interpolation (escaped to avoid Coffeelint errors) + | \\.?\\$ # Possible start of interpolation variable + | } # Possible end of interpolation + )+? +) +(?: + \\s*([~|^$*]?=)\\s* + (?: + ( + (?: + [-a-zA-Z_0-9]|[^\\x00-\\x7F] # Valid identifier characters + | \\\\(?:[0-9a-fA-F]{1,6}|.) # Escape sequence + | \\#\\{ # Interpolation (escaped to avoid Coffeelint errors) + | \\.?\\$ # Possible start of interpolation variable + | } # Possible end of interpolation + )+ + ) + | + ((")(.*?)(")) + | + ((')(.*?)(')) + ) +)? +\\s* +(\\])`,name:"meta.attribute-selector.scss"},selector_class:{captures:{1:{name:"punctuation.definition.entity.css"},2:{patterns:[{include:"#interpolation"},{match:"\\\\([0-9a-fA-F]{1,6}|.)",name:"constant.character.escape.scss"},{match:"\\$|}",name:"invalid.illegal.scss"}]}},match:`(?x) +(\\.) # Valid class-name +( + (?: [-a-zA-Z_0-9]|[^\\x00-\\x7F] # Valid identifier characters + | \\\\(?:[0-9a-fA-F]{1,6}|.) # Escape sequence + | \\#\\{ # Interpolation (escaped to avoid Coffeelint errors) + | \\.?\\$ # Possible start of interpolation variable + | } # Possible end of interpolation + )+ +) # Followed by either: +(?= $ # - End of the line + | [\\s,\\#)\\[:{>+~|] # - Another selector + | \\.[^$] # - Class selector, negating module variable + | /\\* # - A block comment + | ; # - A semicolon +)`,name:"entity.other.attribute-name.class.css"},selector_custom:{match:"\\b([a-zA-Z0-9]+(-[a-zA-Z0-9]+)+)(?=\\.|\\s++[^:]|\\s*[,\\[{]|:(link|visited|hover|active|focus|target|lang|disabled|enabled|checked|indeterminate|root|nth-(child|last-child|of-type|last-of-type)|first-child|last-child|first-of-type|last-of-type|only-child|only-of-type|empty|not|valid|invalid)(\\([0-9A-Za-z]*\\))?)",name:"entity.name.tag.custom.scss"},selector_id:{captures:{1:{name:"punctuation.definition.entity.css"},2:{patterns:[{include:"#interpolation"},{match:"\\\\([0-9a-fA-F]{1,6}|.)",name:"constant.character.escape.scss"},{match:"\\$|}",name:"invalid.illegal.identifier.scss"}]}},match:`(?x) +(\\#) # Valid id-name +( + (?: [-a-zA-Z_0-9]|[^\\x00-\\x7F] # Valid identifier characters + | \\\\(?:[0-9a-fA-F]{1,6}|.) # Escape sequence + | \\#\\{ # Interpolation (escaped to avoid Coffeelint errors) + | \\.?\\$ # Possible start of interpolation variable + | } # Possible end of interpolation + )+ +) # Followed by either: +(?= $ # - End of the line + | [\\s,\\#)\\[:{>+~|] # - Another selector + | \\.[^$] # - Class selector, negating module variable + | /\\* # - A block comment +)`,name:"entity.other.attribute-name.id.css"},selector_placeholder:{captures:{1:{name:"punctuation.definition.entity.css"},2:{patterns:[{include:"#interpolation"},{match:"\\\\([0-9a-fA-F]{1,6}|.)",name:"constant.character.escape.scss"},{match:"\\$|}",name:"invalid.illegal.identifier.scss"}]}},match:`(?x) +(%) # Valid placeholder-name +( + (?: [-a-zA-Z_0-9]|[^\\x00-\\x7F] # Valid identifier characters + | \\\\(?:[0-9a-fA-F]{1,6}|.) # Escape sequence + | \\#\\{ # Interpolation (escaped to avoid Coffeelint errors) + | \\.\\$ # Possible start of interpolation module scope variable + | \\$ # Possible start of interpolation variable + | } # Possible end of interpolation + )+ +) # Followed by either: +(?= ; # - End of statement + | $ # - End of the line + | [\\s,\\#)\\[:{>+~|] # - Another selector + | \\.[^$] # - Class selector, negating module variable + | /\\* # - A block comment +)`,name:"entity.other.attribute-name.placeholder.css"},selector_pseudo_class:{patterns:[{begin:"((:)\\bnth-(?:child|last-child|of-type|last-of-type))(\\()",beginCaptures:{1:{name:"entity.other.attribute-name.pseudo-class.css"},2:{name:"punctuation.definition.entity.css"},3:{name:"punctuation.definition.pseudo-class.begin.bracket.round.css"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.pseudo-class.end.bracket.round.css"}},patterns:[{include:"#interpolation"},{match:"\\d+",name:"constant.numeric.css"},{match:"(?<=\\d)n\\b|\\b(n|even|odd)\\b",name:"constant.other.scss"},{match:"\\w+",name:"invalid.illegal.scss"}]},{include:"source.css#pseudo-classes"},{include:"source.css#pseudo-elements"},{include:"source.css#functional-pseudo-classes"}]},selectors:{patterns:[{include:"source.css#tag-names"},{include:"#selector_custom"},{include:"#selector_class"},{include:"#selector_id"},{include:"#selector_pseudo_class"},{include:"#tag_wildcard"},{include:"#tag_parent_reference"},{include:"source.css#pseudo-elements"},{include:"#selector_attribute"},{include:"#selector_placeholder"},{include:"#parent_selector_suffix"}]},string_double:{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.scss"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.scss"}},name:"string.quoted.double.scss",patterns:[{match:"\\\\(\\h{1,6}|.)",name:"constant.character.escape.scss"},{include:"#interpolation"}]},string_single:{begin:"'",beginCaptures:{0:{name:"punctuation.definition.string.begin.scss"}},end:"'",endCaptures:{0:{name:"punctuation.definition.string.end.scss"}},name:"string.quoted.single.scss",patterns:[{match:"\\\\(\\h{1,6}|.)",name:"constant.character.escape.scss"},{include:"#interpolation"}]},tag_parent_reference:{match:"&",name:"entity.name.tag.reference.scss"},tag_wildcard:{match:"\\*",name:"entity.name.tag.wildcard.scss"},variable:{patterns:[{include:"#variables"},{include:"#interpolation"}]},variable_setting:{begin:"(?=\\$[\\w-]+\\s*:)",contentName:"meta.definition.variable.scss",end:";",endCaptures:{0:{name:"punctuation.terminator.rule.scss"}},patterns:[{match:"\\$[\\w-]+(?=\\s*:)",name:"variable.scss"},{begin:":",beginCaptures:{0:{name:"punctuation.separator.key-value.scss"}},end:"(?=;)",patterns:[{include:"#comment_docblock"},{include:"#comment_block"},{include:"#comment_line"},{include:"#map"},{include:"#property_values"},{include:"#variable"},{match:",",name:"punctuation.separator.delimiter.scss"}]}]},variables:{patterns:[{captures:{1:{name:"variable.scss"},2:{name:"punctuation.access.module.scss"},3:{name:"variable.scss"}},match:"\\b([\\w-]+)(\\.)(\\$[\\w-]+)\\b"},{match:"(\\$|\\-\\-)[A-Za-z0-9_-]+\\b",name:"variable.scss"}]}},scopeName:"source.css.scss",embeddedLangs:["css"]});var Hn=[...ye,Vs];const Xs=Object.freeze({displayName:"Stylus",fileTypes:["styl","stylus","css.styl","css.stylus"],name:"stylus",patterns:[{include:"#comment"},{include:"#at_rule"},{include:"#language_keywords"},{include:"#language_constants"},{include:"#variable_declaration"},{include:"#function"},{include:"#selector"},{include:"#declaration"},{captures:{1:{name:"punctuation.section.property-list.begin.css"},2:{name:"punctuation.section.property-list.end.css"}},match:"(\\{)(\\})",name:"meta.brace.curly.css"},{match:"\\{|\\}",name:"meta.brace.curly.css"},{include:"#numeric"},{include:"#string"},{include:"#operator"}],repository:{at_rule:{patterns:[{begin:"\\s*((@)(import|require))\\b\\s*",beginCaptures:{1:{name:"keyword.control.at-rule.import.stylus"},2:{name:"punctuation.definition.keyword.stylus"}},end:"\\s*((?=;|$|\\n))",endCaptures:{1:{name:"punctuation.terminator.rule.css"}},name:"meta.at-rule.import.css",patterns:[{include:"#string"}]},{begin:"\\s*((@)(extend[s]?)\\b)\\s*",beginCaptures:{1:{name:"keyword.control.at-rule.extend.stylus"},2:{name:"punctuation.definition.keyword.stylus"}},end:"\\s*((?=;|$|\\n))",endCaptures:{1:{name:"punctuation.terminator.rule.css"}},name:"meta.at-rule.extend.css",patterns:[{include:"#selector"}]},{captures:{1:{name:"keyword.control.at-rule.fontface.stylus"},2:{name:"punctuation.definition.keyword.stylus"}},match:"^\\s*((@)font-face)\\b",name:"meta.at-rule.fontface.stylus"},{captures:{1:{name:"keyword.control.at-rule.css.stylus"},2:{name:"punctuation.definition.keyword.stylus"}},match:"^\\s*((@)css)\\b",name:"meta.at-rule.css.stylus"},{begin:"\\s*((@)charset)\\b\\s*",beginCaptures:{1:{name:"keyword.control.at-rule.charset.stylus"},2:{name:"punctuation.definition.keyword.stylus"}},end:"\\s*((?=;|$|\\n))",name:"meta.at-rule.charset.stylus",patterns:[{include:"#string"}]},{begin:"\\s*((@)keyframes)\\b\\s+([a-zA-Z_-][a-zA-Z0-9_-]*)",beginCaptures:{1:{name:"keyword.control.at-rule.keyframes.stylus"},2:{name:"punctuation.definition.keyword.stylus"},3:{name:"entity.name.function.keyframe.stylus"}},end:"\\s*((?=\\{|$|\\n))",name:"meta.at-rule.keyframes.stylus"},{begin:"(?=(\\b(\\d+%|from\\b|to\\b)))",end:"(?=(\\{|\\n))",name:"meta.at-rule.keyframes.stylus",patterns:[{match:"(\\b(\\d+%|from\\b|to\\b))",name:"entity.other.attribute-name.stylus"}]},{captures:{1:{name:"keyword.control.at-rule.media.stylus"},2:{name:"punctuation.definition.keyword.stylus"}},match:"^\\s*((@)media)\\b",name:"meta.at-rule.media.stylus"},{match:"(?:(?=\\w)(?<![\\w-]))(width|scan|resolution|orientation|monochrome|min-width|min-resolution|min-monochrome|min-height|min-device-width|min-device-height|min-device-aspect-ratio|min-color-index|min-color|min-aspect-ratio|max-width|max-resolution|max-monochrome|max-height|max-device-width|max-device-height|max-device-aspect-ratio|max-color-index|max-color|max-aspect-ratio|height|grid|device-width|device-height|device-aspect-ratio|color-index|color|aspect-ratio)(?:(?<=\\w)(?![\\w-]))",name:"support.type.property-name.media-feature.media.css"},{match:"(?:(?=\\w)(?<![\\w-]))(tv|tty|screen|projection|print|handheld|embossed|braille|aural|all)(?:(?<=\\w)(?![\\w-]))",name:"support.constant.media-type.media.css"},{match:"(?:(?=\\w)(?<![\\w-]))(portrait|landscape)(?:(?<=\\w)(?![\\w-]))",name:"support.constant.property-value.media-property.media.css"}]},char_escape:{match:"\\\\(.)",name:"constant.character.escape.stylus"},color:{patterns:[{begin:"\\b(rgb|rgba|hsl|hsla)(\\()",beginCaptures:{1:{name:"support.function.color.css"},2:{name:"punctuation.section.function.css"}},end:"(\\))",endCaptures:{1:{name:"punctuation.section.function.css"}},name:"meta.function.color.css",patterns:[{match:"\\s*(,)\\s*",name:"punctuation.separator.parameter.css"},{include:"#numeric"},{include:"#property_variable"}]},{captures:{1:{name:"punctuation.definition.constant.css"}},match:"(#)([0-9a-fA-F]{3}|[0-9a-fA-F]{6})\\b",name:"constant.other.color.rgb-value.css"},{comment:"http://www.w3.org/TR/CSS21/syndata.html#value-def-color",match:"\\b(aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow)\\b",name:"support.constant.color.w3c-standard-color-name.css"},{comment:"http://www.w3.org/TR/css3-color/#svg-color",match:"\\b(aliceblue|antiquewhite|aquamarine|azure|beige|bisque|blanchedalmond|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|gainsboro|ghostwhite|gold|goldenrod|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|limegreen|linen|magenta|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|oldlace|olivedrab|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|thistle|tomato|turquoise|violet|wheat|whitesmoke|yellowgreen)\\b",name:"support.constant.color.w3c-extended-color-name.css"}]},comment:{patterns:[{include:"#comment_block"},{include:"#comment_line"}]},comment_block:{begin:"/\\*",beginCaptures:{0:{name:"punctuation.definition.comment.begin.css"}},end:"\\*/",endCaptures:{0:{name:"punctuation.definition.comment.end.css"}},name:"comment.block.css"},comment_line:{begin:"(^[ \\t]+)?(?=//)",beginCaptures:{1:{name:"punctuation.whitespace.comment.leading.stylus"}},end:"(?!\\G)",patterns:[{begin:"//",beginCaptures:{0:{name:"punctuation.definition.comment.stylus"}},end:"(?=\\n)",name:"comment.line.double-slash.stylus"}]},declaration:{begin:"((?<=^)[^\\S\\n]+)|((?<=;)[^\\S\\n]*)|((?<=\\{)[^\\S\\n]*)",end:"(?=\\n)|(;)|(?=\\})|(\\n)",endCaptures:{2:{name:"punctuation.terminator.rule.css"}},name:"meta.property-list.css",patterns:[{match:`(?x) (?<![\\w-]) +-- +(?:[-a-zA-Z_] | [^\\x00-\\x7F]) # First letter +(?:[-a-zA-Z0-9_] | [^\\x00-\\x7F] # Remainder of identifier + |\\\\(?:[0-9a-fA-F]{1,6}|.) +)*`,name:"variable.css"},{include:"#language_keywords"},{include:"#language_constants"},{match:"(?:(?<=^)[^\\S\\n]+(\\n))"},{captures:{1:{name:"support.type.property-name.css"},2:{name:"punctuation.separator.key-value.css"},3:{name:"variable.section.css"}},match:"\\G\\s*(counter-reset|counter-increment)(?:(:)|[^\\S\\n])[^\\S\\n]*([a-zA-Z_-][a-zA-Z0-9_-]*)",name:"meta.property.counter.css"},{begin:"\\G\\s*(filter)(?:(:)|[^\\S\\n])[^\\S\\n]*",beginCaptures:{1:{name:"support.type.property-name.css"},2:{name:"punctuation.separator.key-value.css"}},end:"(?=\\n|;|\\}|$)",name:"meta.property.filter.css",patterns:[{include:"#function"},{include:"#property_values"}]},{include:"#property"},{include:"#interpolation"},{include:"$self"}]},font_name:{match:"(\\b(?i:arial|century|comic|courier|cursive|fantasy|futura|garamond|georgia|helvetica|impact|lucida|monospace|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif)\\b)",name:"support.constant.font-name.css"},function:{begin:"(?=[a-zA-Z_-][a-zA-Z0-9_-]*\\()",end:"(\\))",endCaptures:{1:{name:"punctuation.section.function.css"}},patterns:[{begin:"(format|url|local)(\\()",beginCaptures:{1:{name:"support.function.misc.css"},2:{name:"punctuation.section.function.css"}},end:"(?=\\))",name:"meta.function.misc.css",patterns:[{match:"(?<=\\()[^\\)\\s]*(?=\\))",name:"string.css"},{include:"#string"},{include:"#variable"},{include:"#operator"},{match:"\\s*"}]},{captures:{1:{name:"support.function.misc.counter.css"},2:{name:"punctuation.section.function.css"},3:{name:"variable.section.css"}},match:"(counter)(\\()([a-zA-Z_-][a-zA-Z0-9_-]*)(?=\\))",name:"meta.function.misc.counter.css"},{begin:"(counters)(\\()",beginCaptures:{1:{name:"support.function.misc.counters.css"},2:{name:"punctuation.section.function.css"}},end:"(?=\\))",name:"meta.function.misc.counters.css",patterns:[{match:"\\G[a-zA-Z_-][a-zA-Z0-9_-]*",name:"variable.section.css"},{match:"\\s*(,)\\s*",name:"punctuation.separator.parameter.css"},{include:"#string"},{include:"#interpolation"}]},{begin:"(attr)(\\()",beginCaptures:{1:{name:"support.function.misc.attr.css"},2:{name:"punctuation.section.function.css"}},end:"(?=\\))",name:"meta.function.misc.attr.css",patterns:[{match:"\\G[a-zA-Z_-][a-zA-Z0-9_-]*",name:"entity.other.attribute-name.attribute.css"},{match:"(?<=[a-zA-Z0-9_-])\\s*\\b(string|color|url|integer|number|length|em|ex|px|rem|vw|vh|vmin|vmax|mm|cm|in|pt|pc|angle|deg|grad|rad|time|s|ms|frequency|Hz|kHz|%)\\b",name:"support.type.attr.css"},{match:"\\s*(,)\\s*",name:"punctuation.separator.parameter.css"},{include:"#string"},{include:"#interpolation"}]},{begin:"(calc)(\\()",beginCaptures:{1:{name:"support.function.misc.calc.css"},2:{name:"punctuation.section.function.css"}},end:"(?=\\))",name:"meta.function.misc.calc.css",patterns:[{include:"#property_values"}]},{begin:"(cubic-bezier)(\\()",beginCaptures:{1:{name:"support.function.timing.cubic-bezier.css"},2:{name:"punctuation.section.function.css"}},end:"(?=\\))",name:"meta.function.timing.cubic-bezier.css",patterns:[{match:"\\s*(,)\\s*",name:"punctuation.separator.parameter.css"},{include:"#numeric"},{include:"#interpolation"}]},{begin:"(steps)(\\()",beginCaptures:{1:{name:"support.function.timing.steps.css"},2:{name:"punctuation.section.function.css"}},end:"(?=\\))",name:"meta.function.timing.steps.css",patterns:[{match:"\\s*(,)\\s*",name:"punctuation.separator.parameter.css"},{include:"#numeric"},{match:"\\b(start|end)\\b",name:"support.constant.timing.steps.direction.css"},{include:"#interpolation"}]},{begin:"(linear-gradient|radial-gradient|repeating-linear-gradient|repeating-radial-gradient)(\\()",beginCaptures:{1:{name:"support.function.gradient.css"},2:{name:"punctuation.section.function.css"}},end:"(?=\\))",name:"meta.function.gradient.css",patterns:[{match:"\\s*(,)\\s*",name:"punctuation.separator.parameter.css"},{include:"#numeric"},{include:"#color"},{match:"\\b(to|bottom|right|left|top|circle|ellipse|center|closest-side|closest-corner|farthest-side|farthest-corner|at)\\b",name:"support.constant.gradient.css"},{include:"#interpolation"}]},{begin:"(blur|brightness|contrast|grayscale|hue-rotate|invert|opacity|saturate|sepia)(\\()",beginCaptures:{1:{name:"support.function.filter.css"},2:{name:"punctuation.section.function.css"}},end:"(?=\\))",name:"meta.function.filter.css",patterns:[{include:"#numeric"},{include:"#property_variable"},{include:"#interpolation"}]},{begin:"(drop-shadow)(\\()",beginCaptures:{1:{name:"support.function.filter.drop-shadow.css"},2:{name:"punctuation.section.function.css"}},end:"(?=\\))",name:"meta.function.filter.drop-shadow.css",patterns:[{include:"#numeric"},{include:"#color"},{include:"#property_variable"},{include:"#interpolation"}]},{begin:"(matrix|matrix3d|perspective|rotate|rotate3d|rotate[Xx]|rotate[yY]|rotate[zZ]|scale|scale3d|scale[xX]|scale[yY]|scale[zZ]|skew|skew[xX]|skew[yY]|translate|translate3d|translate[xX]|translate[yY]|translate[zZ])(\\()",beginCaptures:{1:{name:"support.function.transform.css"},2:{name:"punctuation.section.function.css"}},end:"(?=\\))",name:"meta.function.transform.css",patterns:[{include:"#numeric"},{include:"#property_variable"},{include:"#interpolation"}]},{match:"(url|local|format|counter|counters|attr|calc)(?=\\()",name:"support.function.misc.css"},{match:"(cubic-bezier|steps)(?=\\()",name:"support.function.timing.css"},{match:"(linear-gradient|radial-gradient|repeating-linear-gradient|repeating-radial-gradient)(?=\\()",name:"support.function.gradient.css"},{match:"(blur|brightness|contrast|drop-shadow|grayscale|hue-rotate|invert|opacity|saturate|sepia)(?=\\()",name:"support.function.filter.css"},{match:"(matrix|matrix3d|perspective|rotate|rotate3d|rotate[Xx]|rotate[yY]|rotate[zZ]|scale|scale3d|scale[xX]|scale[yY]|scale[zZ]|skew|skew[xX]|skew[yY]|translate|translate3d|translate[xX]|translate[yY]|translate[zZ])(?=\\()",name:"support.function.transform.css"},{begin:"([a-zA-Z_-][a-zA-Z0-9_-]*)(\\()",beginCaptures:{1:{name:"entity.name.function.stylus"},2:{name:"punctuation.section.function.css"}},end:"(?=\\))",name:"meta.function.stylus",patterns:[{match:`(?x) +-- +(?:[-a-zA-Z_] | [^\\x00-\\x7F]) # First letter +(?:[-a-zA-Z0-9_] | [^\\x00-\\x7F] # Remainder of identifier + |\\\\(?:[0-9a-fA-F]{1,6}|.) +)*`,name:"variable.argument.stylus"},{match:"\\s*(,)\\s*",name:"punctuation.separator.parameter.css"},{include:"#interpolation"},{include:"#property_values"}]},{match:"\\(",name:"punctuation.section.function.css"}]},interpolation:{begin:"(?:(\\{)[^\\S\\n]*)(?=[^;=]*[^\\S\\n]*\\})",beginCaptures:{1:{name:"meta.brace.curly"}},end:"(?:[^\\S\\n]*(\\}))|\\n|$",endCaptures:{1:{name:"meta.brace.curly"}},name:"meta.interpolation.stylus",patterns:[{include:"#variable"},{include:"#numeric"},{include:"#string"},{include:"#operator"}]},language_constants:{match:"\\b(true|false|null)\\b",name:"constant.language.stylus"},language_keywords:{patterns:[{match:"(\\b|\\s)(return|else|for|unless|if|else)\\b",name:"keyword.control.stylus"},{match:"(\\b|\\s)(!important|in|is defined|is a)\\b",name:"keyword.other.stylus"},{match:"\\barguments\\b",name:"variable.language.stylus"}]},numeric:{patterns:[{captures:{1:{name:"keyword.other.unit.css"}},match:"(?x) (?<!\\w|-)(?:(?:-|\\+)?(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+)) ((?:px|pt|ch|cm|mm|in|r?em|ex|pc|deg|g?rad|dpi|dpcm|dppx|fr|ms|s|turn|vh|vmax|vmin|vw)\\b|%)?",name:"constant.numeric.css"}]},operator:{patterns:[{match:"((?:\\?|:|!|~|\\+|(\\s-\\s)|(?:\\*)?\\*|\\/|%|(\\.)?\\.\\.|<|>|(?:=|:|\\?|\\+|-|\\*|\\/|%|<|>)?=|!=)|\\b(?:in|is(?:nt)?|(?<!:)not|or|and)\\b)",name:"keyword.operator.stylus"},{include:"#char_escape"}]},property:{begin:`(?x:\\G\\s*(?: + (-webkit-[-A-Za-z]+|-moz-[-A-Za-z]+|-o-[-A-Za-z]+|-ms-[-A-Za-z]+|-khtml-[-A-Za-z]+|zoom|z-index|y|x|wrap|word-wrap|word-spacing|word-break|word|width|widows|white-space-collapse|white-space|white|weight|volume|voice-volume|voice-stress|voice-rate|voice-pitch-range|voice-pitch|voice-family|voice-duration|voice-balance|voice|visibility|vertical-align|variant|user-select|up|unicode-bidi|unicode-range|unicode|trim|transition-timing-function|transition-property|transition-duration|transition-delay|transition|transform|touch-action|top-width|top-style|top-right-radius|top-left-radius|top-color|top|timing-function|text-wrap|text-transform|text-shadow|text-replace|text-rendering|text-overflow|text-outline|text-justify|text-indent|text-height|text-emphasis|text-decoration|text-align-last|text-align|text|target-position|target-new|target-name|target|table-layout|tab-size|style-type|style-position|style-image|style|string-set|stretch|stress|stacking-strategy|stacking-shift|stacking-ruby|stacking|src|speed|speech-rate|speech|speak-punctuation|speak-numeral|speak-header|speak|span|spacing|space-collapse|space|sizing|size-adjust|size|shadow|respond-to|rule-width|rule-style|rule-color|rule|ruby-span|ruby-position|ruby-overhang|ruby-align|ruby|rows|rotation-point|rotation|role|right-width|right-style|right-color|right|richness|rest-before|rest-after|rest|resource|resize|reset|replace|repeat|rendering-intent|rate|radius|quotes|punctuation-trim|punctuation|property|profile|presentation-level|presentation|position|pointer-events|point|play-state|play-during|play-count|pitch-range|pitch|phonemes|pause-before|pause-after|pause|page-policy|page-break-inside|page-break-before|page-break-after|page|padding-top|padding-right|padding-left|padding-bottom|padding|pack|overhang|overflow-y|overflow-x|overflow-style|overflow|outline-width|outline-style|outline-offset|outline-color|outline|orphans|origin|orientation|orient|ordinal-group|order|opacity|offset|numeral|new|nav-up|nav-right|nav-left|nav-index|nav-down|nav|name|move-to|model|mix-blend-mode|min-width|min-height|min|max-width|max-height|max|marquee-style|marquee-speed|marquee-play-count|marquee-direction|marquee|marks|mark-before|mark-after|mark|margin-top|margin-right|margin-left|margin-bottom|margin|mask-image|list-style-type|list-style-position|list-style-image|list-style|list|lines|line-stacking-strategy|line-stacking-shift|line-stacking-ruby|line-stacking|line-height|line-break|level|letter-spacing|length|left-width|left-style|left-color|left|label|justify-content|justify|iteration-count|inline-box-align|initial-value|initial-size|initial-before-align|initial-before-adjust|initial-after-align|initial-after-adjust|index|indent|increment|image-resolution|image-orientation|image|icon|hyphens|hyphenate-resource|hyphenate-lines|hyphenate-character|hyphenate-before|hyphenate-after|hyphenate|height|header|hanging-punctuation|gap|grid|grid-area|grid-auto-columns|grid-auto-flow|grid-auto-rows|grid-column|grid-column-end|grid-column-start|grid-row|grid-row-end|grid-row-start|grid-template|grid-template-areas|grid-template-columns|grid-template-rows|row-gap|gap|font-kerning|font-language-override|font-weight|font-variant-caps|font-variant|font-style|font-synthesis|font-stretch|font-size-adjust|font-size|font-family|font|float-offset|float|flex-wrap|flex-shrink|flex-grow|flex-group|flex-flow|flex-direction|flex-basis|flex|fit-position|fit|fill|filter|family|empty-cells|emphasis|elevation|duration|drop-initial-value|drop-initial-size|drop-initial-before-align|drop-initial-before-adjust|drop-initial-after-align|drop-initial-after-adjust|drop|down|dominant-baseline|display-role|display-model|display|direction|delay|decoration-break|decoration|cursor|cue-before|cue-after|cue|crop|counter-reset|counter-increment|counter|count|content|columns|column-width|column-span|column-rule-width|column-rule-style|column-rule-color|column-rule|column-gap|column-fill|column-count|column-break-before|column-break-after|column|color-profile|color|collapse|clip|clear|character|caption-side|break-inside|break-before|break-after|break|box-sizing|box-shadow|box-pack|box-orient|box-ordinal-group|box-lines|box-flex-group|box-flex|box-direction|box-decoration-break|box-align|box|bottom-width|bottom-style|bottom-right-radius|bottom-left-radius|bottom-color|bottom|border-width|border-top-width|border-top-style|border-top-right-radius|border-top-left-radius|border-top-color|border-top|border-style|border-spacing|border-right-width|border-right-style|border-right-color|border-right|border-radius|border-length|border-left-width|border-left-style|border-left-color|border-left|border-image|border-color|border-collapse|border-bottom-width|border-bottom-style|border-bottom-right-radius|border-bottom-left-radius|border-bottom-color|border-bottom|border|bookmark-target|bookmark-level|bookmark-label|bookmark|binding|bidi|before|baseline-shift|baseline|balance|background-blend-mode|background-size|background-repeat|background-position|background-origin|background-image|background-color|background-clip|background-break|background-attachment|background|azimuth|attachment|appearance|animation-timing-function|animation-play-state|animation-name|animation-iteration-count|animation-duration|animation-direction|animation-delay|animation-fill-mode|animation|alignment-baseline|alignment-adjust|alignment|align-self|align-last|align-items|align-content|align|after|adjust|will-change)| + (writing-mode|text-anchor|stroke-width|stroke-opacity|stroke-miterlimit|stroke-linejoin|stroke-linecap|stroke-dashoffset|stroke-dasharray|stroke|stop-opacity|stop-color|shape-rendering|marker-start|marker-mid|marker-end|lighting-color|kerning|image-rendering|glyph-orientation-vertical|glyph-orientation-horizontal|flood-opacity|flood-color|fill-rule|fill-opacity|fill|enable-background|color-rendering|color-interpolation-filters|color-interpolation|clip-rule|clip-path)| + ([a-zA-Z_-][a-zA-Z0-9_-]*) +)(?!([^\\S\\n]*&)|([^\\S\\n]*\\{))(?=:|([^\\S\\n]+[^\\s])))`,beginCaptures:{1:{name:"support.type.property-name.css"},2:{name:"support.type.property-name.svg.css"},3:{name:"support.function.mixin.stylus"}},end:"(;)|(?=\\n|\\}|$)",endCaptures:{1:{name:"punctuation.terminator.rule.css"}},patterns:[{include:"#property_value"}]},property_value:{begin:"\\G(?:(:)|(\\s))(\\s*)(?!&)",beginCaptures:{1:{name:"punctuation.separator.key-value.css"},2:{name:"punctuation.separator.key-value.css"}},end:"(?=\\n|;|\\})",endCaptures:{1:{name:"punctuation.terminator.rule.css"}},name:"meta.property-value.css",patterns:[{include:"#property_values"},{match:"[^\\n]+?"}]},property_values:{patterns:[{include:"#function"},{include:"#comment"},{include:"#language_keywords"},{include:"#language_constants"},{match:"(?:(?=\\w)(?<![\\w-]))(wrap-reverse|wrap|whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|unicase|underline|ultra-expanded|ultra-condensed|transparent|transform|top|titling-caps|thin|thick|text-top|text-bottom|text|tb-rl|table-row-group|table-row|table-header-group|table-footer-group|table-column-group|table-column|table-cell|table|sw-resize|super|strict|stretch|step-start|step-end|static|square|space-between|space-around|space|solid|soft-light|small-caps|separate|semi-expanded|semi-condensed|se-resize|scroll|screen|saturation|s-resize|running|rtl|row-reverse|row-resize|row|round|right|ridge|reverse|repeat-y|repeat-x|repeat|relative|progressive|progress|pre-wrap|pre-line|pre|pointer|petite-caps|paused|pan-x|pan-left|pan-right|pan-y|pan-up|pan-down|padding-box|overline|overlay|outside|outset|optimizeSpeed|optimizeLegibility|opacity|oblique|nw-resize|nowrap|not-allowed|normal|none|no-repeat|no-drop|newspaper|ne-resize|n-resize|multiply|move|middle|medium|max-height|manipulation|main-size|luminosity|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|local|list-item|linear(?!-)|line-through|line-edge|line|lighter|lighten|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline-block|inline|inherit|infinite|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|hue|horizontal|hidden|help|hard-light|hand|groove|geometricPrecision|forwards|flex-start|flex-end|flex|fixed|extra-expanded|extra-condensed|expanded|exclusion|ellipsis|ease-out|ease-in-out|ease-in|ease|e-resize|double|dotted|distribute-space|distribute-letter|distribute-all-lines|distribute|disc|disabled|difference|default|decimal|dashed|darken|currentColor|crosshair|cover|content-box|contain|condensed|column-reverse|column|color-dodge|color-burn|color|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|border-box|bolder|bold|block|bidi-override|below|baseline|balance|backwards|auto|antialiased|always|alternate-reverse|alternate|all-small-caps|all-scroll|all-petite-caps|all|absolute)(?:(?<=\\w)(?![\\w-]))",name:"support.constant.property-value.css"},{match:"(?:(?=\\w)(?<![\\w-]))(start|sRGB|square|round|optimizeSpeed|optimizeQuality|nonzero|miter|middle|linearRGB|geometricPrecision |evenodd |end |crispEdges|butt|bevel)(?:(?<=\\w)(?![\\w-]))",name:"support.constant.property-value.svg.css"},{include:"#font_name"},{include:"#numeric"},{include:"#color"},{include:"#string"},{match:"\\!\\s*important",name:"keyword.other.important.css"},{include:"#operator"},{include:"#stylus_keywords"},{include:"#property_variable"}]},property_variable:{patterns:[{include:"#variable"},{match:"(?<!^)(\\@[a-zA-Z_-][a-zA-Z0-9_-]*)",name:"variable.property.stylus"}]},selector:{patterns:[{match:"(?:(?=\\w)(?<![\\w-]))(a|abbr|acronym|address|area|article|aside|audio|b|base|bdi|bdo|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|data|datalist|dd|del|details|dfn|dialog|div|dl|dt|em|embed|eventsource|fieldset|figure|figcaption|footer|form|frame|frameset|(h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|keygen|label|legend|li|link|main|map|mark|math|menu|menuitem|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|picture|pre|progress|q|rb|rp|rt|rtc|ruby|s|samp|script|section|select|small|source|span|strike|strong|style|sub|summary|sup|svg|table|tbody|td|template|textarea|tfoot|th|thead|time|title|tr|track|tt|u|ul|var|video|wbr)(?:(?<=\\w)(?![\\w-]))",name:"entity.name.tag.css"},{match:"(?:(?=\\w)(?<![\\w-]))(vkern|view|use|tspan|tref|title|textPath|text|symbol|switch|svg|style|stop|set|script|rect|radialGradient|polyline|polygon|pattern|path|mpath|missing-glyph|metadata|mask|marker|linearGradient|line|image|hkern|glyphRef|glyph|g|foreignObject|font-face-uri|font-face-src|font-face-name|font-face-format|font-face|font|filter|feTurbulence|feTile|feSpotLight|feSpecularLighting|fePointLight|feOffset|feMorphology|feMergeNode|feMerge|feImage|feGaussianBlur|feFuncR|feFuncG|feFuncB|feFuncA|feFlood|feDistantLight|feDisplacementMap|feDiffuseLighting|feConvolveMatrix|feComposite|feComponentTransfer|feColorMatrix|feBlend|ellipse|desc|defs|cursor|color-profile|clipPath|circle|animateTransform|animateMotion|animateColor|animate|altGlyphItem|altGlyphDef|altGlyph|a)(?:(?<=\\w)(?![\\w-]))",name:"entity.name.tag.svg.css"},{match:"\\s*(\\,)\\s*",name:"meta.selector.stylus"},{match:"\\*",name:"meta.selector.stylus"},{captures:{2:{name:"entity.other.attribute-name.parent-selector-suffix.stylus"}},match:"\\s*(\\&)([a-zA-Z0-9_-]+)\\s*",name:"meta.selector.stylus"},{match:"\\s*(\\&)\\s*",name:"meta.selector.stylus"},{captures:{1:{name:"punctuation.definition.entity.css"}},match:"(\\.)[a-zA-Z0-9_-]+",name:"entity.other.attribute-name.class.css"},{captures:{1:{name:"punctuation.definition.entity.css"}},match:"(#)[a-zA-Z][a-zA-Z0-9_-]*",name:"entity.other.attribute-name.id.css"},{captures:{1:{name:"punctuation.definition.entity.css"}},match:"(:+)(after|before|content|first-letter|first-line|host|(-(moz|webkit|ms)-)?selection)\\b",name:"entity.other.attribute-name.pseudo-element.css"},{captures:{1:{name:"punctuation.definition.entity.css"}},match:"(:)((first|last)-child|(first|last|only)-of-type|empty|root|target|first|left|right)\\b",name:"entity.other.attribute-name.pseudo-class.css"},{captures:{1:{name:"punctuation.definition.entity.css"}},match:"(:)(checked|enabled|default|disabled|indeterminate|invalid|optional|required|valid)\\b",name:"entity.other.attribute-name.pseudo-class.ui-state.css"},{begin:"((:)not)(\\()",beginCaptures:{1:{name:"entity.other.attribute-name.pseudo-class.css"},2:{name:"punctuation.definition.entity.css"},3:{name:"punctuation.section.function.css"}},end:"\\)",endCaptures:{0:{name:"punctuation.section.function.css"}},patterns:[{include:"#selector"}]},{captures:{1:{name:"entity.other.attribute-name.pseudo-class.css"},2:{name:"punctuation.definition.entity.css"},3:{name:"punctuation.section.function.css"},4:{name:"constant.numeric.css"},5:{name:"punctuation.section.function.css"}},match:"((:)nth-(?:(?:last-)?child|(?:last-)?of-type))(\\()(\\-?(?:\\d+n?|n)(?:\\+\\d+)?|even|odd)(\\))"},{captures:{1:{name:"entity.other.attribute-name.pseudo-class.css"},2:{name:"puncutation.definition.entity.css"},3:{name:"punctuation.section.function.css"},4:{name:"constant.language.css"},5:{name:"punctuation.section.function.css"}},match:"((:)dir)\\s*(?:(\\()(ltr|rtl)?(\\)))?"},{captures:{1:{name:"entity.other.attribute-name.pseudo-class.css"},2:{name:"puncutation.definition.entity.css"},3:{name:"punctuation.section.function.css"},4:{name:"constant.language.css"},6:{name:"punctuation.section.function.css"}},match:"((:)lang)\\s*(?:(\\()(\\w+(-\\w+)?)?(\\)))?"},{captures:{1:{name:"punctuation.definition.entity.css"}},match:"(:)(active|hover|link|visited|focus)\\b",name:"entity.other.attribute-name.pseudo-class.css"},{captures:{1:{name:"punctuation.definition.entity.css"}},match:"(::)(shadow)\\b",name:"entity.other.attribute-name.pseudo-class.css"},{captures:{1:{name:"punctuation.definition.entity.css"},2:{name:"entity.other.attribute-name.attribute.css"},3:{name:"punctuation.separator.operator.css"},4:{name:"string.unquoted.attribute-value.css"},5:{name:"string.quoted.double.attribute-value.css"},6:{name:"punctuation.definition.string.begin.css"},7:{name:"punctuation.definition.string.end.css"},8:{name:"punctuation.definition.entity.css"}},match:`(?i)(\\[)\\s*(-?[_a-z\\\\[[:^ascii:]]][_a-z0-9\\-\\\\[[:^ascii:]]]*)(?:\\s*([~|^$*]?=)\\s*(?:(-?[_a-z\\\\[[:^ascii:]]][_a-z0-9\\-\\\\[[:^ascii:]]]*)|((?>(['"])(?:[^\\\\]|\\\\.)*?(\\6)))))?\\s*(\\])`,name:"meta.attribute-selector.css"},{include:"#interpolation"},{include:"#variable"}]},string:{patterns:[{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.css"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.css"}},name:"string.quoted.double.css",patterns:[{match:"\\\\([a-fA-F0-9]{1,6}|.)",name:"constant.character.escape.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:[{match:"\\\\([a-fA-F0-9]{1,6}|.)",name:"constant.character.escape.css"}]}]},variable:{match:"(\\$[a-zA-Z_-][a-zA-Z0-9_-]*)",name:"variable.stylus"},variable_declaration:{begin:"^[^\\S\\n]*(\\$?[a-zA-Z_-][a-zA-Z0-9_-]*)[^\\S\\n]*(\\=|\\?\\=|\\:\\=)",beginCaptures:{1:{name:"variable.stylus"},2:{name:"keyword.operator.stylus"}},end:"(\\n)|(;)|(?=\\})",endCaptures:{2:{name:"punctuation.terminator.rule.css"}},patterns:[{include:"#property_values"}]}},scopeName:"source.stylus",aliases:["styl"]});var Wn=[Xs];const Ys=Object.freeze({displayName:"CoffeeScript",name:"coffee",patterns:[{include:"#jsx"},{captures:{1:{name:"keyword.operator.new.coffee"},2:{name:"storage.type.class.coffee"},3:{name:"entity.name.type.instance.coffee"},4:{name:"entity.name.type.instance.coffee"}},match:"(new)\\s+(?:(?:(class)\\s+(\\w+(?:\\.\\w*)*)?)|(\\w+(?:\\.\\w*)*))",name:"meta.class.instance.constructor.coffee"},{begin:"'''",beginCaptures:{0:{name:"punctuation.definition.string.begin.coffee"}},end:"'''",endCaptures:{0:{name:"punctuation.definition.string.end.coffee"}},name:"string.quoted.single.heredoc.coffee",patterns:[{captures:{1:{name:"punctuation.definition.escape.backslash.coffee"}},match:"(\\\\).",name:"constant.character.escape.backslash.coffee"}]},{begin:'"""',beginCaptures:{0:{name:"punctuation.definition.string.begin.coffee"}},end:'"""',endCaptures:{0:{name:"punctuation.definition.string.end.coffee"}},name:"string.quoted.double.heredoc.coffee",patterns:[{captures:{1:{name:"punctuation.definition.escape.backslash.coffee"}},match:"(\\\\).",name:"constant.character.escape.backslash.coffee"},{include:"#interpolated_coffee"}]},{captures:{1:{name:"punctuation.definition.string.begin.coffee"},2:{name:"source.js.embedded.coffee",patterns:[{include:"source.js"}]},3:{name:"punctuation.definition.string.end.coffee"}},match:"(`)(.*)(`)",name:"string.quoted.script.coffee"},{begin:"(?<!#)###(?!#)",beginCaptures:{0:{name:"punctuation.definition.comment.coffee"}},end:"###",endCaptures:{0:{name:"punctuation.definition.comment.coffee"}},name:"comment.block.coffee",patterns:[{match:"(?<=^|\\s)@\\w*(?=\\s)",name:"storage.type.annotation.coffee"}]},{begin:"#",beginCaptures:{0:{name:"punctuation.definition.comment.coffee"}},end:"$",name:"comment.line.number-sign.coffee"},{begin:"///",beginCaptures:{0:{name:"punctuation.definition.string.begin.coffee"}},end:"(///)[gimuy]*",endCaptures:{1:{name:"punctuation.definition.string.end.coffee"}},name:"string.regexp.multiline.coffee",patterns:[{include:"#heregexp"}]},{begin:"(?<![\\w$])(/)(?=(?![/*+?])(.+)(/)[gimuy]*(?!\\s*[\\w$/(]))",beginCaptures:{1:{name:"punctuation.definition.string.begin.coffee"}},end:"(/)[gimuy]*(?!\\s*[\\w$/(])",endCaptures:{1:{name:"punctuation.definition.string.end.coffee"}},name:"string.regexp.coffee",patterns:[{include:"source.js.regexp"}]},{match:"\\b(?<![\\.\\$])(break|by|catch|continue|else|finally|for|in|of|if|return|switch|then|throw|try|unless|when|while|until|loop|do|export|import|default|from|as|yield|async|await|(?<=for)\\s+own)(?!\\s*:)\\b",name:"keyword.control.coffee"},{match:"\\b(?<![\\.\\$])(delete|instanceof|new|typeof)(?!\\s*:)\\b",name:"keyword.operator.$1.coffee"},{match:"\\b(?<![\\.\\$])(case|function|var|void|with|const|let|enum|native|__hasProp|__extends|__slice|__bind|__indexOf|implements|interface|package|private|protected|public|static)(?!\\s*:)\\b",name:"keyword.reserved.coffee"},{begin:`(?x) +(?<=\\s|^)((@)?[a-zA-Z_$][\\w$]*) +\\s*([:=])\\s* +(?=(\\([^\\(\\)]*\\)\\s*)?[=-]>)`,beginCaptures:{1:{name:"entity.name.function.coffee"},2:{name:"variable.other.readwrite.instance.coffee"},3:{name:"keyword.operator.assignment.coffee"}},end:"[=-]>",endCaptures:{0:{name:"storage.type.function.coffee"}},name:"meta.function.coffee",patterns:[{include:"#function_params"}]},{begin:`(?x) +(?<=\\s|^)(?:((')([^']*?)('))|((")([^"]*?)("))) +\\s*([:=])\\s* +(?=(\\([^\\(\\)]*\\)\\s*)?[=-]>)`,beginCaptures:{1:{name:"string.quoted.single.coffee"},2:{name:"punctuation.definition.string.begin.coffee"},3:{name:"entity.name.function.coffee"},4:{name:"punctuation.definition.string.end.coffee"},5:{name:"string.quoted.double.coffee"},6:{name:"punctuation.definition.string.begin.coffee"},7:{name:"entity.name.function.coffee"},8:{name:"punctuation.definition.string.end.coffee"},9:{name:"keyword.operator.assignment.coffee"}},end:"[=-]>",endCaptures:{0:{name:"storage.type.function.coffee"}},name:"meta.function.coffee",patterns:[{include:"#function_params"}]},{begin:"(?=(\\([^\\(\\)]*\\)\\s*)?[=-]>)",end:"[=-]>",endCaptures:{0:{name:"storage.type.function.coffee"}},name:"meta.function.inline.coffee",patterns:[{include:"#function_params"}]},{begin:`(?<=\\s|^)({)(?=[^'"#]+?}[\\s\\]}]*=)`,beginCaptures:{1:{name:"punctuation.definition.destructuring.begin.bracket.curly.coffee"}},end:"}",endCaptures:{0:{name:"punctuation.definition.destructuring.end.bracket.curly.coffee"}},name:"meta.variable.assignment.destructured.object.coffee",patterns:[{include:"$self"},{match:"[a-zA-Z$_]\\w*",name:"variable.assignment.coffee"}]},{begin:`(?<=\\s|^)(\\[)(?=[^'"#]+?\\][\\s\\]}]*=)`,beginCaptures:{1:{name:"punctuation.definition.destructuring.begin.bracket.square.coffee"}},end:"\\]",endCaptures:{0:{name:"punctuation.definition.destructuring.end.bracket.square.coffee"}},name:"meta.variable.assignment.destructured.array.coffee",patterns:[{include:"$self"},{match:"[a-zA-Z$_]\\w*",name:"variable.assignment.coffee"}]},{match:"\\b(?<!\\.|::)(true|on|yes)(?!\\s*[:=][^=])\\b",name:"constant.language.boolean.true.coffee"},{match:"\\b(?<!\\.|::)(false|off|no)(?!\\s*[:=][^=])\\b",name:"constant.language.boolean.false.coffee"},{match:"\\b(?<!\\.|::)null(?!\\s*[:=][^=])\\b",name:"constant.language.null.coffee"},{match:"\\b(?<!\\.|::)extends(?!\\s*[:=])\\b",name:"variable.language.coffee"},{match:"(?<!\\.)\\b(?<!\\$)(super|this|arguments)(?!\\s*[:=][^=]|\\$)\\b",name:"variable.language.$1.coffee"},{captures:{1:{name:"storage.type.class.coffee"},2:{name:"keyword.control.inheritance.coffee"},3:{name:"entity.other.inherited-class.coffee"}},match:"(?<=\\s|^|\\[|\\()(class)\\s+(extends)\\s+(@?[a-zA-Z\\$\\._][\\w\\.]*)",name:"meta.class.coffee"},{captures:{1:{name:"storage.type.class.coffee"},2:{name:"entity.name.type.class.coffee"},3:{name:"keyword.control.inheritance.coffee"},4:{name:"entity.other.inherited-class.coffee"}},match:"(?<=\\s|^|\\[|\\()(class\\b)\\s+(@?[a-zA-Z\\$_][\\w\\.]*)?(?:\\s+(extends)\\s+(@?[a-zA-Z\\$\\._][\\w\\.]*))?",name:"meta.class.coffee"},{match:"\\b(debugger|\\\\)\\b",name:"keyword.other.coffee"},{match:"\\b(Array|ArrayBuffer|Blob|Boolean|Date|document|Function|Int(8|16|32|64)Array|Math|Map|Number|Object|Proxy|RegExp|Set|String|WeakMap|window|Uint(8|16|32|64)Array|XMLHttpRequest)\\b",name:"support.class.coffee"},{match:"\\b(console)\\b",name:"entity.name.type.object.coffee"},{match:"((?<=console\\.)(debug|warn|info|log|error|time|timeEnd|assert))\\b",name:"support.function.console.coffee"},{match:"((?<=\\.)(apply|call|concat|every|filter|forEach|from|hasOwnProperty|indexOf|isPrototypeOf|join|lastIndexOf|map|of|pop|propertyIsEnumerable|push|reduce(Right)?|reverse|shift|slice|some|sort|splice|to(Locale)?String|unshift|valueOf))\\b",name:"support.function.method.array.coffee"},{match:"((?<=Array\\.)(isArray))\\b",name:"support.function.static.array.coffee"},{match:"((?<=Object\\.)(create|definePropert(ies|y)|freeze|getOwnProperty(Descriptors?|Names)|getProperty(Descriptor|Names)|getPrototypeOf|is(Extensible|Frozen|Sealed)?|isnt|keys|preventExtensions|seal))\\b",name:"support.function.static.object.coffee"},{match:"((?<=Math\\.)(abs|acos|acosh|asin|asinh|atan|atan2|atanh|ceil|cos|cosh|exp|expm1|floor|hypot|log|log10|log1p|log2|max|min|pow|random|round|sign|sin|sinh|sqrt|tan|tanh|trunc))\\b",name:"support.function.static.math.coffee"},{match:"((?<=Number\\.)(is(Finite|Integer|NaN)|toInteger))\\b",name:"support.function.static.number.coffee"},{match:"(?<!\\.)\\b(module|exports|__filename|__dirname|global|process)(?!\\s*:)\\b",name:"support.variable.coffee"},{match:"\\b(Infinity|NaN|undefined)\\b",name:"constant.language.coffee"},{include:"#operators"},{include:"#method_calls"},{include:"#function_calls"},{include:"#numbers"},{include:"#objects"},{include:"#properties"},{match:"::",name:"keyword.operator.prototype.coffee"},{match:"(?<!\\$)\\b[0-9]+[\\w$]*",name:"invalid.illegal.identifier.coffee"},{match:";",name:"punctuation.terminator.statement.coffee"},{match:",",name:"punctuation.separator.delimiter.coffee"},{begin:"{",beginCaptures:{0:{name:"meta.brace.curly.coffee"}},end:"}",endCaptures:{0:{name:"meta.brace.curly.coffee"}},patterns:[{include:"$self"}]},{begin:"\\[",beginCaptures:{0:{name:"punctuation.definition.array.begin.bracket.square.coffee"}},end:"\\]",endCaptures:{0:{name:"punctuation.definition.array.end.bracket.square.coffee"}},patterns:[{match:"(?<!\\.)\\.{3}",name:"keyword.operator.slice.exclusive.coffee"},{match:"(?<!\\.)\\.{2}",name:"keyword.operator.slice.inclusive.coffee"},{include:"$self"}]},{begin:"\\(",beginCaptures:{0:{name:"meta.brace.round.coffee"}},end:"\\)",endCaptures:{0:{name:"meta.brace.round.coffee"}},patterns:[{include:"$self"}]},{include:"#instance_variable"},{include:"#single_quoted_string"},{include:"#double_quoted_string"}],repository:{arguments:{patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.arguments.begin.bracket.round.coffee"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.arguments.end.bracket.round.coffee"}},name:"meta.arguments.coffee",patterns:[{include:"$self"}]},{begin:`(?=(@|@?[\\w$]+|[=-]>|\\-\\d|\\[|{|"|'))`,end:"(?=\\s*(?<![\\w$])(of|in|then|is|isnt|and|or|for|else|when|if|unless|by|instanceof)(?![\\w$]))|(?=\\s*(}|\\]|\\)|#|$))",name:"meta.arguments.coffee",patterns:[{include:"$self"}]}]},double_quoted_string:{patterns:[{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.coffee"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.coffee"}},name:"string.quoted.double.coffee",patterns:[{captures:{1:{name:"punctuation.definition.escape.backslash.coffee"}},match:"(\\\\)(x[0-9A-Fa-f]{2}|[0-2][0-7]{0,2}|3[0-6][0-7]|37[0-7]?|[4-7][0-7]?|.)",name:"constant.character.escape.backslash.coffee"},{include:"#interpolated_coffee"}]}]},embedded_comment:{patterns:[{captures:{1:{name:"punctuation.definition.comment.coffee"}},match:"(?<!\\\\)(#).*$\\n?",name:"comment.line.number-sign.coffee"}]},function_calls:{patterns:[{begin:"(@)?([\\w$]+)(?=\\()",beginCaptures:{1:{name:"variable.other.readwrite.instance.coffee"},2:{patterns:[{include:"#function_names"}]}},end:"(?<=\\))",name:"meta.function-call.coffee",patterns:[{include:"#arguments"}]},{begin:`(?x) +(@)?([\\w$]+) +\\s* +(?=\\s+(?!(?<![\\w$])(of|in|then|is|isnt|and|or|for|else|when|if|unless|by|instanceof)(?![\\w$]))(?=(@?[\\w$]+|[=-]>|\\-\\d|\\[|{|"|')))`,beginCaptures:{1:{name:"variable.other.readwrite.instance.coffee"},2:{patterns:[{include:"#function_names"}]}},end:"(?=\\s*(?<![\\w$])(of|in|then|is|isnt|and|or|for|else|when|if|unless|by|instanceof)(?![\\w$]))|(?=\\s*(}|\\]|\\)|#|$))",name:"meta.function-call.coffee",patterns:[{include:"#arguments"}]}]},function_names:{patterns:[{match:`(?x) +\\b(isNaN|isFinite|eval|uneval|parseInt|parseFloat|decodeURI| +decodeURIComponent|encodeURI|encodeURIComponent|escape|unescape| +require|set(Interval|Timeout)|clear(Interval|Timeout))\\b`,name:"support.function.coffee"},{match:"[a-zA-Z_$][\\w$]*",name:"entity.name.function.coffee"},{match:"\\d[\\w$]*",name:"invalid.illegal.identifier.coffee"}]},function_params:{patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.parameters.begin.bracket.round.coffee"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.parameters.end.bracket.round.coffee"}},name:"meta.parameters.coffee",patterns:[{captures:{1:{name:"variable.parameter.function.coffee"},2:{name:"keyword.operator.splat.coffee"}},match:"([a-zA-Z_$][\\w$]*)(\\.\\.\\.)?"},{captures:{1:{name:"variable.parameter.function.readwrite.instance.coffee"},2:{name:"keyword.operator.splat.coffee"}},match:"(@(?:[a-zA-Z_$][\\w$]*)?)(\\.\\.\\.)?"},{include:"$self"}]}]},heregexp:{patterns:[{match:"\\\\[bB]|\\^|\\$",name:"keyword.control.anchor.regexp"},{match:"\\\\[1-9]\\d*",name:"keyword.other.back-reference.regexp"},{match:"[?+*]|\\{(\\d+,\\d+|\\d+,|,\\d+|\\d+)\\}\\??",name:"keyword.operator.quantifier.regexp"},{match:"\\|",name:"keyword.operator.or.regexp"},{begin:"(\\()((\\?=)|(\\?!))",beginCaptures:{1:{name:"punctuation.definition.group.regexp"},3:{name:"meta.assertion.look-ahead.regexp"},4:{name:"meta.assertion.negative-look-ahead.regexp"}},end:"(\\))",endCaptures:{1:{name:"punctuation.definition.group.regexp"}},name:"meta.group.assertion.regexp",patterns:[{include:"#heregexp"}]},{begin:"\\((\\?:)?",beginCaptures:{0:{name:"punctuation.definition.group.regexp"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.regexp"}},name:"meta.group.regexp",patterns:[{include:"#heregexp"}]},{begin:"(\\[)(\\^)?",beginCaptures:{1:{name:"punctuation.definition.character-class.regexp"},2:{name:"keyword.operator.negation.regexp"}},end:"(\\])",endCaptures:{1:{name:"punctuation.definition.character-class.regexp"}},name:"constant.other.character-class.set.regexp",patterns:[{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"}},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])|(\\\\.))",name:"constant.other.character-class.range.regexp"},{include:"#regex-character-class"}]},{include:"#regex-character-class"},{include:"#interpolated_coffee"},{include:"#embedded_comment"}]},instance_variable:{patterns:[{match:"(@)([a-zA-Z_\\$]\\w*)?",name:"variable.other.readwrite.instance.coffee"}]},interpolated_coffee:{patterns:[{begin:"\\#\\{",captures:{0:{name:"punctuation.section.embedded.coffee"}},end:"\\}",name:"source.coffee.embedded.source",patterns:[{include:"$self"}]}]},jsx:{patterns:[{include:"#jsx-tag"},{include:"#jsx-end-tag"}]},"jsx-attribute":{patterns:[{captures:{1:{name:"entity.other.attribute-name.coffee"},2:{name:"keyword.operator.assignment.coffee"}},match:"(?:^|\\s+)([-\\w.]+)\\s*(=)"},{include:"#double_quoted_string"},{include:"#single_quoted_string"},{include:"#jsx-expression"}]},"jsx-end-tag":{patterns:[{begin:"(</)([-\\w\\.]+)",beginCaptures:{1:{name:"punctuation.definition.tag.coffee"},2:{name:"entity.name.tag.coffee"}},end:"(/?>)",name:"meta.tag.coffee"}]},"jsx-expression":{begin:"{",beginCaptures:{0:{name:"meta.brace.curly.coffee"}},end:"}",endCaptures:{0:{name:"meta.brace.curly.coffee"}},patterns:[{include:"#double_quoted_string"},{include:"$self"}]},"jsx-tag":{patterns:[{begin:"(<)([-\\w\\.]+)",beginCaptures:{1:{name:"punctuation.definition.tag.coffee"},2:{name:"entity.name.tag.coffee"}},end:"(/?>)",name:"meta.tag.coffee",patterns:[{include:"#jsx-attribute"}]}]},method_calls:{patterns:[{begin:"(?:(\\.)|(::))\\s*([\\w$]+)\\s*(?=\\()",beginCaptures:{1:{name:"punctuation.separator.method.period.coffee"},2:{name:"keyword.operator.prototype.coffee"},3:{patterns:[{include:"#method_names"}]}},end:"(?<=\\))",name:"meta.method-call.coffee",patterns:[{include:"#arguments"}]},{begin:`(?:(\\.)|(::))\\s*([\\w$]+)\\s*(?=\\s+(?!(?<![\\w$])(of|in|then|is|isnt|and|or|for|else|when|if|unless|by|instanceof)(?![\\w$]))(?=(@|@?[\\w$]+|[=-]>|\\-\\d|\\[|{|"|')))`,beginCaptures:{1:{name:"punctuation.separator.method.period.coffee"},2:{name:"keyword.operator.prototype.coffee"},3:{patterns:[{include:"#method_names"}]}},end:"(?=\\s*(?<![\\w$])(of|in|then|is|isnt|and|or|for|else|when|if|unless|by|instanceof)(?![\\w$]))|(?=\\s*(}|\\]|\\)|#|$))",name:"meta.method-call.coffee",patterns:[{include:"#arguments"}]}]},method_names:{patterns:[{match:`(?x) +\\bon(Rowsinserted|Rowsdelete|Rowenter|Rowexit|Resize|Resizestart|Resizeend|Reset| +Readystatechange|Mouseout|Mouseover|Mousedown|Mouseup|Mousemove| +Before(cut|deactivate|unload|update|paste|print|editfocus|activate)| +Blur|Scrolltop|Submit|Select|Selectstart|Selectionchange|Hover|Help| +Change|Contextmenu|Controlselect|Cut|Cellchange|Clock|Close|Deactivate| +Datasetchanged|Datasetcomplete|Dataavailable|Drop|Drag|Dragstart|Dragover| +Dragdrop|Dragenter|Dragend|Dragleave|Dblclick|Unload|Paste|Propertychange|Error| +Errorupdate|Keydown|Keyup|Keypress|Focus|Load|Activate|Afterupdate|Afterprint|Abort)\\b`,name:"support.function.event-handler.coffee"},{match:`(?x) +\\b(shift|showModelessDialog|showModalDialog|showHelp|scroll|scrollX|scrollByPages| +scrollByLines|scrollY|scrollTo|stop|strike|sizeToContent|sidebar|signText|sort| +sup|sub|substr|substring|splice|split|send|set(Milliseconds|Seconds|Minutes|Hours| +Month|Year|FullYear|Date|UTC(Milliseconds|Seconds|Minutes|Hours|Month|FullYear|Date)| +Time|Hotkeys|Cursor|ZOptions|Active|Resizable|RequestHeader)|search|slice| +savePreferences|small|home|handleEvent|navigate|char|charCodeAt|charAt|concat| +contextual|confirm|compile|clear|captureEvents|call|createStyleSheet|createPopup| +createEventObject|to(GMTString|UTCString|String|Source|UpperCase|LowerCase|LocaleString)| +test|taint|taintEnabled|indexOf|italics|disableExternalCapture|dump|detachEvent|unshift| +untaint|unwatch|updateCommands|join|javaEnabled|pop|push|plugins.refresh|paddings|parse| +print|prompt|preference|enableExternalCapture|exec|execScript|valueOf|UTC|find|file| +fileModifiedDate|fileSize|fileCreatedDate|fileUpdatedDate|fixed|fontsize|fontcolor| +forward|fromCharCode|watch|link|load|lastIndexOf|anchor|attachEvent|atob|apply|alert| +abort|routeEvents|resize|resizeBy|resizeTo|recalc|returnValue|replace|reverse|reload| +releaseCapture|releaseEvents|go|get(Milliseconds|Seconds|Minutes|Hours|Month|Day|Year|FullYear| +Time|Date|TimezoneOffset|UTC(Milliseconds|Seconds|Minutes|Hours|Day|Month|FullYear|Date)| +Attention|Selection|ResponseHeader|AllResponseHeaders)|moveBy|moveBelow|moveTo| +moveToAbsolute|moveAbove|mergeAttributes|match|margins|btoa|big|bold|borderWidths|blink|back)\\b`,name:"support.function.coffee"},{match:`(?x) +\\b(acceptNode|add|addEventListener|addTextTrack|adoptNode|after|animate|append| +appendChild|appendData|before|blur|canPlayType|captureStream| +caretPositionFromPoint|caretRangeFromPoint|checkValidity|clear|click| +cloneContents|cloneNode|cloneRange|close|closest|collapse| +compareBoundaryPoints|compareDocumentPosition|comparePoint|contains| +convertPointFromNode|convertQuadFromNode|convertRectFromNode|createAttribute| +createAttributeNS|createCaption|createCDATASection|createComment| +createContextualFragment|createDocument|createDocumentFragment| +createDocumentType|createElement|createElementNS|createEntityReference| +createEvent|createExpression|createHTMLDocument|createNodeIterator| +createNSResolver|createProcessingInstruction|createRange|createShadowRoot| +createTBody|createTextNode|createTFoot|createTHead|createTreeWalker|delete| +deleteCaption|deleteCell|deleteContents|deleteData|deleteRow|deleteTFoot| +deleteTHead|detach|disconnect|dispatchEvent|elementFromPoint|elementsFromPoint| +enableStyleSheetsForSet|entries|evaluate|execCommand|exitFullscreen| +exitPointerLock|expand|extractContents|fastSeek|firstChild|focus|forEach|get| +getAll|getAnimations|getAttribute|getAttributeNames|getAttributeNode| +getAttributeNodeNS|getAttributeNS|getBoundingClientRect|getBoxQuads| +getClientRects|getContext|getDestinationInsertionPoints|getElementById| +getElementsByClassName|getElementsByName|getElementsByTagName| +getElementsByTagNameNS|getItem|getNamedItem|getSelection|getStartDate| +getVideoPlaybackQuality|has|hasAttribute|hasAttributeNS|hasAttributes| +hasChildNodes|hasFeature|hasFocus|importNode|initEvent|insertAdjacentElement| +insertAdjacentHTML|insertAdjacentText|insertBefore|insertCell|insertData| +insertNode|insertRow|intersectsNode|isDefaultNamespace|isEqualNode| +isPointInRange|isSameNode|item|key|keys|lastChild|load|lookupNamespaceURI| +lookupPrefix|matches|move|moveAttribute|moveAttributeNode|moveChild| +moveNamedItem|namedItem|nextNode|nextSibling|normalize|observe|open| +parentNode|pause|play|postMessage|prepend|preventDefault|previousNode| +previousSibling|probablySupportsContext|queryCommandEnabled| +queryCommandIndeterm|queryCommandState|queryCommandSupported|queryCommandValue| +querySelector|querySelectorAll|registerContentHandler|registerElement| +registerProtocolHandler|releaseCapture|releaseEvents|remove|removeAttribute| +removeAttributeNode|removeAttributeNS|removeChild|removeEventListener| +removeItem|replace|replaceChild|replaceData|replaceWith|reportValidity| +requestFullscreen|requestPointerLock|reset|scroll|scrollBy|scrollIntoView| +scrollTo|seekToNextFrame|select|selectNode|selectNodeContents|set|setAttribute| +setAttributeNode|setAttributeNodeNS|setAttributeNS|setCapture| +setCustomValidity|setEnd|setEndAfter|setEndBefore|setItem|setNamedItem| +setRangeText|setSelectionRange|setSinkId|setStart|setStartAfter|setStartBefore| +slice|splitText|stepDown|stepUp|stopImmediatePropagation|stopPropagation| +submit|substringData|supports|surroundContents|takeRecords|terminate|toBlob| +toDataURL|toggle|toString|values|write|writeln)\\b`,name:"support.function.dom.coffee"},{match:"[a-zA-Z_$][\\w$]*",name:"entity.name.function.coffee"},{match:"\\d[\\w$]*",name:"invalid.illegal.identifier.coffee"}]},numbers:{patterns:[{match:"\\b(?<!\\$)0(x|X)[0-9a-fA-F]+\\b(?!\\$)",name:"constant.numeric.hex.coffee"},{match:"\\b(?<!\\$)0(b|B)[01]+\\b(?!\\$)",name:"constant.numeric.binary.coffee"},{match:"\\b(?<!\\$)0(o|O)?[0-7]+\\b(?!\\$)",name:"constant.numeric.octal.coffee"},{captures:{0:{name:"constant.numeric.decimal.coffee"},1:{name:"punctuation.separator.decimal.period.coffee"},2:{name:"punctuation.separator.decimal.period.coffee"},3:{name:"punctuation.separator.decimal.period.coffee"},4:{name:"punctuation.separator.decimal.period.coffee"},5:{name:"punctuation.separator.decimal.period.coffee"},6:{name:"punctuation.separator.decimal.period.coffee"}},match:`(?x) +(?<!\\$)(?: + (?:\\b[0-9]+(\\.)[0-9]+[eE][+-]?[0-9]+\\b)| # 1.1E+3 + (?:\\b[0-9]+(\\.)[eE][+-]?[0-9]+\\b)| # 1.E+3 + (?:\\B(\\.)[0-9]+[eE][+-]?[0-9]+\\b)| # .1E+3 + (?:\\b[0-9]+[eE][+-]?[0-9]+\\b)| # 1E+3 + (?:\\b[0-9]+(\\.)[0-9]+\\b)| # 1.1 + (?:\\b[0-9]+(?=\\.{2,3}))| # 1 followed by a slice + (?:\\b[0-9]+(\\.)\\B)| # 1. + (?:\\B(\\.)[0-9]+\\b)| # .1 + (?:\\b[0-9]+\\b(?!\\.)) # 1 +)(?!\\$)`}]},objects:{patterns:[{match:"[A-Z][A-Z0-9_$]*(?=\\s*\\??(\\.\\s*[a-zA-Z_$]\\w*|::))",name:"constant.other.object.coffee"},{match:"[a-zA-Z_$][\\w$]*(?=\\s*\\??(\\.\\s*[a-zA-Z_$]\\w*|::))",name:"variable.other.object.coffee"}]},operators:{patterns:[{captures:{1:{name:"variable.assignment.coffee"},2:{name:"keyword.operator.assignment.compound.coffee"}},match:"(?:([a-zA-Z$_][\\w$]*)?\\s+|(?<![\\w$]))(and=|or=)"},{captures:{1:{name:"variable.assignment.coffee"},2:{name:"keyword.operator.assignment.compound.coffee"}},match:"([a-zA-Z$_][\\w$]*)?\\s*(%=|\\+=|-=|\\*=|&&=|\\|\\|=|\\?=|(?<!\\()/=)"},{captures:{1:{name:"variable.assignment.coffee"},2:{name:"keyword.operator.assignment.compound.bitwise.coffee"}},match:"([a-zA-Z$_][\\w$]*)?\\s*(&=|\\^=|<<=|>>=|>>>=|\\|=)"},{match:"<<|>>>|>>",name:"keyword.operator.bitwise.shift.coffee"},{match:"!=|<=|>=|==|<|>",name:"keyword.operator.comparison.coffee"},{match:"&&|!|\\|\\|",name:"keyword.operator.logical.coffee"},{match:"&|\\||\\^|~",name:"keyword.operator.bitwise.coffee"},{captures:{1:{name:"variable.assignment.coffee"},2:{name:"keyword.operator.assignment.coffee"}},match:"([a-zA-Z$_][\\w$]*)?\\s*(=|:(?!:))(?![>=])"},{match:"--",name:"keyword.operator.decrement.coffee"},{match:"\\+\\+",name:"keyword.operator.increment.coffee"},{match:"\\.\\.\\.",name:"keyword.operator.splat.coffee"},{match:"\\?",name:"keyword.operator.existential.coffee"},{match:"%|\\*|/|-|\\+",name:"keyword.operator.coffee"},{captures:{1:{name:"keyword.operator.logical.coffee"},2:{name:"keyword.operator.comparison.coffee"}},match:`(?x) +\\b(?<![\\.\\$]) +(?: + (and|or|not) # logical + | + (is|isnt) # comparison +) +(?!\\s*:)\\b`}]},properties:{patterns:[{captures:{1:{name:"punctuation.separator.property.period.coffee"},2:{name:"keyword.operator.prototype.coffee"},3:{name:"constant.other.object.property.coffee"}},match:"(?:(\\.)|(::))\\s*([A-Z][A-Z0-9_$]*\\b\\$*)(?=\\s*\\??(\\.\\s*[a-zA-Z_$]\\w*|::))"},{captures:{1:{name:"punctuation.separator.property.period.coffee"},2:{name:"keyword.operator.prototype.coffee"},3:{name:"variable.other.object.property.coffee"}},match:"(?:(\\.)|(::))\\s*(\\$*[a-zA-Z_$][\\w$]*)(?=\\s*\\??(\\.\\s*[a-zA-Z_$]\\w*|::))"},{captures:{1:{name:"punctuation.separator.property.period.coffee"},2:{name:"keyword.operator.prototype.coffee"},3:{name:"constant.other.property.coffee"}},match:"(?:(\\.)|(::))\\s*([A-Z][A-Z0-9_$]*\\b\\$*)"},{captures:{1:{name:"punctuation.separator.property.period.coffee"},2:{name:"keyword.operator.prototype.coffee"},3:{name:"variable.other.property.coffee"}},match:"(?:(\\.)|(::))\\s*(\\$*[a-zA-Z_$][\\w$]*)"},{captures:{1:{name:"punctuation.separator.property.period.coffee"},2:{name:"keyword.operator.prototype.coffee"},3:{name:"invalid.illegal.identifier.coffee"}},match:"(?:(\\.)|(::))\\s*([0-9][\\w$]*)"}]},"regex-character-class":{patterns:[{match:"\\\\[wWsSdD]|\\.",name:"constant.character.character-class.regexp"},{match:"\\\\([0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4})",name:"constant.character.numeric.regexp"},{match:"\\\\c[A-Z]",name:"constant.character.control.regexp"},{match:"\\\\.",name:"constant.character.escape.backslash.regexp"}]},single_quoted_string:{patterns:[{begin:"'",beginCaptures:{0:{name:"punctuation.definition.string.begin.coffee"}},end:"'",endCaptures:{0:{name:"punctuation.definition.string.end.coffee"}},name:"string.quoted.single.coffee",patterns:[{captures:{1:{name:"punctuation.definition.escape.backslash.coffee"}},match:"(\\\\)(x[0-9A-Fa-f]{2}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)",name:"constant.character.escape.backslash.coffee"}]}]}},scopeName:"source.coffee",embeddedLangs:["javascript"],aliases:["coffeescript"]});var Ks=[...X,Ys];const Js=Object.freeze({displayName:"Pug",name:"pug",patterns:[{comment:"Doctype declaration.",match:"^(!!!|doctype)(\\s*[a-zA-Z0-9-_]+)?",name:"meta.tag.sgml.doctype.html"},{begin:"^(\\s*)//-",comment:"Unbuffered (pug-only) comments.",end:"^(?!(\\1\\s)|\\s*$)",name:"comment.unbuffered.block.pug"},{begin:"^(\\s*)//",comment:"Buffered (html) comments.",end:"^(?!(\\1\\s)|\\s*$)",name:"string.comment.buffered.block.pug",patterns:[{captures:{1:{name:"invalid.illegal.comment.comment.block.pug"}},comment:"Buffered comments inside buffered comments will generate invalid html.",match:"^\\s*(//)(?!-)",name:"string.comment.buffered.block.pug"}]},{begin:"<!--",end:"--\\s*>",name:"comment.unbuffered.block.pug",patterns:[{match:"--",name:"invalid.illegal.comment.comment.block.pug"}]},{begin:"^(\\s*)-$",comment:"Unbuffered code block.",end:"^(?!(\\1\\s)|\\s*$)",name:"source.js",patterns:[{include:"source.js"}]},{begin:"^(\\s*)(script)((\\.$)|(?=[^\\n]*((text|application)/javascript|module).*\\.$))",beginCaptures:{2:{name:"entity.name.tag.pug"}},comment:"Script tag with JavaScript code.",end:"^(?!(\\1\\s)|\\s*$)",name:"meta.tag.other",patterns:[{begin:"\\G(?=\\()",end:"$",patterns:[{include:"#tag_attributes"}]},{begin:"\\G(?=[.#])",end:"$",patterns:[{include:"#complete_tag"}]},{include:"source.js"}]},{begin:"^(\\s*)(style)((\\.$)|(?=[.#(].*\\.$))",beginCaptures:{2:{name:"entity.name.tag.pug"}},comment:"Style tag with CSS code.",end:"^(?!(\\1\\s)|\\s*$)",name:"meta.tag.other",patterns:[{begin:"\\G(?=\\()",end:"$",patterns:[{include:"#tag_attributes"}]},{begin:"\\G(?=[.#])",end:"$",patterns:[{include:"#complete_tag"}]},{include:"source.css"}]},{begin:"^(\\s*):(sass)(?=\\(|$)",beginCaptures:{2:{name:"constant.language.name.sass.filter.pug"}},end:"^(?!(\\1\\s)|\\s*$)",name:"source.sass.filter.pug",patterns:[{include:"#tag_attributes"},{include:"source.sass"}]},{begin:"^(\\s*):(scss)(?=\\(|$)",beginCaptures:{2:{name:"constant.language.name.scss.filter.pug"}},end:"^(?!(\\1\\s)|\\s*$)",name:"source.css.scss.filter.pug",patterns:[{include:"#tag_attributes"},{include:"source.css.scss"}]},{begin:"^(\\s*):(less)(?=\\(|$)",beginCaptures:{2:{name:"constant.language.name.less.filter.pug"}},end:"^(?!(\\1\\s)|\\s*$)",name:"source.less.filter.pug",patterns:[{include:"#tag_attributes"},{include:"source.less"}]},{begin:"^(\\s*):(stylus)(?=\\(|$)",beginCaptures:{2:{name:"constant.language.name.stylus.filter.pug"}},end:"^(?!(\\1\\s)|\\s*$)",patterns:[{include:"#tag_attributes"},{include:"source.stylus"}]},{begin:"^(\\s*):(coffee(-?script)?)(?=\\(|$)",beginCaptures:{2:{name:"constant.language.name.coffeescript.filter.pug"}},end:"^(?!(\\1\\s)|\\s*$)",name:"source.coffeescript.filter.pug",patterns:[{include:"#tag_attributes"},{include:"source.coffee"}]},{begin:"^(\\s*):(uglify-js)(?=\\(|$)",beginCaptures:{2:{name:"constant.language.name.js.filter.pug"}},end:"^(?!(\\1\\s)|\\s*$)",name:"source.js.filter.pug",patterns:[{include:"#tag_attributes"},{include:"source.js"}]},{begin:"^(\\s*)((:(?=.))|(:$))",beginCaptures:{4:{name:"invalid.illegal.empty.generic.filter.pug"}},comment:"Generic Pug filter.",end:"^(?!(\\1\\s)|\\s*$)",patterns:[{begin:"\\G(?<=:)(?=.)",end:"$",name:"name.generic.filter.pug",patterns:[{match:"\\G\\(",name:"invalid.illegal.name.generic.filter.pug"},{match:"[\\w-]",name:"constant.language.name.generic.filter.pug"},{include:"#tag_attributes"},{match:"\\W",name:"invalid.illegal.name.generic.filter.pug"}]}]},{begin:`^(\\s*)(?:(?=\\.$)|(?:(?=[\\w.#].*?\\.$)(?=(?:(?:(?:(?:(?:#[\\w-]+)|(?:\\.[\\w-]+))|(?:(?:[#!]\\{[^}]*\\})|(?:\\w(?:(?:[\\w:-]+[\\w-])|(?:[\\w-]*)))))(?:(?:#[\\w-]+)|(?:\\.[\\w-]+)|(?:\\((?:[^()\\'\\"]*(?:(?:\\'(?:[^\\']|(?:(?<!\\\\)\\\\\\'))*\\')|(?:\\"(?:[^\\"]|(?:(?<!\\\\)\\\\\\"))*\\")))*[^()]*\\))*)*)(?:(?:(?::\\s+)|(?<=\\)))(?:(?:(?:(?:#[\\w-]+)|(?:\\.[\\w-]+))|(?:(?:[#!]\\{[^}]*\\})|(?:\\w(?:(?:[\\w:-]+[\\w-])|(?:[\\w-]*)))))(?:(?:#[\\w-]+)|(?:\\.[\\w-]+)|(?:\\((?:[^()\\'\\"]*(?:(?:\\'(?:[^\\']|(?:(?<!\\\\)\\\\\\'))*\\')|(?:\\"(?:[^\\"]|(?:(?<!\\\\)\\\\\\"))*\\")))*[^()]*\\))*)*))*)\\.$)(?:(?:(#[\\w-]+)|(\\.[\\w-]+))|((?:[#!]\\{[^}]*\\})|(?:\\w(?:(?:[\\w:-]+[\\w-])|(?:[\\w-]*)))))))`,beginCaptures:{2:{name:"meta.selector.css entity.other.attribute-name.id.css.pug"},3:{name:"meta.selector.css entity.other.attribute-name.class.css.pug"},4:{name:"meta.tag.other entity.name.tag.pug"}},comment:"Generated from dot_block_tag.py",end:"^(?!(\\1\\s)|\\s*$)",patterns:[{match:"\\.$",name:"storage.type.function.pug.dot-block-dot"},{include:"#tag_attributes"},{include:"#complete_tag"},{begin:"^(?=.)",end:"$",name:"text.block.pug",patterns:[{include:"#inline_pug"},{include:"#embedded_html"},{include:"#html_entity"},{include:"#interpolated_value"},{include:"#interpolated_error"}]}]},{begin:"^\\s*",comment:"All constructs that generally span a single line starting with any number of white-spaces.",end:"$",patterns:[{include:"#inline_pug"},{include:"#blocks_and_includes"},{include:"#unbuffered_code"},{include:"#mixin_definition"},{include:"#mixin_call"},{include:"#flow_control"},{include:"#flow_control_each"},{include:"#case_conds"},{begin:"\\|",comment:"Tag pipe text line.",end:"$",name:"text.block.pipe.pug",patterns:[{include:"#inline_pug"},{include:"#embedded_html"},{include:"#html_entity"},{include:"#interpolated_value"},{include:"#interpolated_error"}]},{include:"#printed_expression"},{begin:"\\G(?=(#[^\\{\\w-])|[^\\w.#])",comment:"Line starting with characters incompatible with tag name/id/class is standalone text.",end:"$",patterns:[{begin:"</?(?=[!#])",end:">|$",patterns:[{include:"#inline_pug"},{include:"#interpolated_value"},{include:"#interpolated_error"}]},{include:"#inline_pug"},{include:"#embedded_html"},{include:"#html_entity"},{include:"#interpolated_value"},{include:"#interpolated_error"}]},{include:"#complete_tag"}]}],repository:{babel_parens:{begin:"\\(",end:"\\)|(({\\s*)?$)",patterns:[{include:"#babel_parens"},{include:"source.js"}]},blocks_and_includes:{captures:{1:{name:"storage.type.import.include.pug"},4:{name:"variable.control.import.include.pug"}},comment:"Template blocks and includes.",match:"(extends|include|yield|append|prepend|block( (append|prepend))?)\\s+(.*)$",name:"meta.first-class.pug"},case_conds:{begin:"(default|when)((\\s+|(?=:))|$)",captures:{1:{name:"storage.type.function.pug"}},comment:"Pug case conditionals.",end:"$",name:"meta.control.flow.pug",patterns:[{begin:"\\G(?!:)",end:"(?=:\\s+)|$",name:"js.embedded.control.flow.pug",patterns:[{include:"#case_when_paren"},{include:"source.js"}]},{begin:":\\s+",end:"$",name:"tag.case.control.flow.pug",patterns:[{include:"#complete_tag"}]}]},case_when_paren:{begin:"\\(",end:"\\)",name:"js.when.control.flow.pug",patterns:[{include:"#case_when_paren"},{match:":",name:"invalid.illegal.name.tag.pug"},{include:"source.js"}]},complete_tag:{begin:"(?=[\\w.#])|(:\\s*)",end:"(\\.?$)|(?=:.)",endCaptures:{1:{name:"storage.type.function.pug.dot-block-dot"}},patterns:[{include:"#blocks_and_includes"},{include:"#unbuffered_code"},{include:"#mixin_call"},{include:"#flow_control"},{include:"#flow_control_each"},{match:"(?<=:)\\w.*$",name:"invalid.illegal.name.tag.pug"},{include:"#tag_name"},{include:"#tag_id"},{include:"#tag_classes"},{include:"#tag_attributes"},{include:"#tag_mixin_attributes"},{captures:{2:{name:"invalid.illegal.end.tag.pug"},4:{name:"invalid.illegal.end.tag.pug"}},match:"((\\.)\\s+$)|((:)\\s*$)"},{include:"#printed_expression"},{include:"#tag_text"}]},embedded_html:{begin:"(?=<[^>]*>)",end:"$|(?=>)",name:"html",patterns:[{include:"text.html.basic"},{include:"#interpolated_value"},{include:"#interpolated_error"}]},flow_control:{begin:"(for|if|else if|else|until|while|unless|case)(\\s+|$)",captures:{1:{name:"storage.type.function.pug"}},comment:"Pug control flow.",end:"$",name:"meta.control.flow.pug",patterns:[{begin:"",end:"$",name:"js.embedded.control.flow.pug",patterns:[{include:"source.js"}]}]},flow_control_each:{begin:"(each)(\\s+|$)",captures:{1:{name:"storage.type.function.pug"}},end:"$",name:"meta.control.flow.pug.each",patterns:[{match:"([\\w$_]+)(?:\\s*,\\s*([\\w$_]+))?",name:"variable.other.pug.each-var"},{begin:"",end:"$",name:"js.embedded.control.flow.pug",patterns:[{include:"source.js"}]}]},html_entity:{patterns:[{match:"(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)",name:"constant.character.entity.html.text.pug"},{match:"[<>&]",name:"invalid.illegal.html_entity.text.pug"}]},inline_pug:{begin:"(?<!\\\\)(#\\[)",captures:{1:{name:"entity.name.function.pug"},2:{name:"entity.name.function.pug"}},end:"(\\])",name:"inline.pug",patterns:[{include:"#inline_pug"},{include:"#mixin_call"},{begin:"(?<!\\])(?=[\\w.#])|(:\\s*)",end:"(?=\\]|(:.)|=|\\s)",name:"tag.inline.pug",patterns:[{include:"#tag_name"},{include:"#tag_id"},{include:"#tag_classes"},{include:"#tag_attributes"},{include:"#tag_mixin_attributes"},{include:"#inline_pug"},{match:"\\[",name:"invalid.illegal.tag.pug"}]},{include:"#unbuffered_code"},{include:"#printed_expression"},{match:"\\[",name:"invalid.illegal.tag.pug"},{include:"#inline_pug_text"}]},inline_pug_text:{begin:"",end:"(?=\\])",patterns:[{begin:"\\[",end:"\\]",patterns:[{include:"#inline_pug_text"}]},{include:"#inline_pug"},{include:"#embedded_html"},{include:"#html_entity"},{include:"#interpolated_value"},{include:"#interpolated_error"}]},interpolated_error:{match:"(?<!\\\\)[#!]\\{(?=[^}]*$)",name:"invalid.illegal.tag.pug"},interpolated_value:{begin:"(?<!\\\\)[#!]\\{(?=.*?\\})",end:"\\}",name:"string.interpolated.pug",patterns:[{match:"{",name:"invalid.illegal.tag.pug"},{include:"source.js"}]},js_braces:{begin:"\\{",end:"\\}",patterns:[{include:"#js_braces"},{include:"source.js"}]},js_brackets:{begin:"\\[",end:"\\]",patterns:[{include:"#js_brackets"},{include:"source.js"}]},js_parens:{begin:"\\(",end:"\\)",patterns:[{include:"#js_parens"},{include:"source.js"}]},mixin_call:{begin:"((?:mixin\\s+)|\\+)([\\w-]+)",beginCaptures:{1:{name:"storage.type.function.pug"},2:{name:"meta.tag.other entity.name.function.pug"}},end:"(?!\\()|$",patterns:[{begin:"(?<!\\))\\(",end:"\\)",name:"args.mixin.pug",patterns:[{include:"#js_parens"},{captures:{1:{name:"meta.tag.other entity.other.attribute-name.tag.pug"}},match:"([^\\s(),=/]+)\\s*=\\s*"},{include:"source.js"}]},{include:"#tag_attributes"}]},mixin_definition:{captures:{1:{name:"storage.type.function.pug"},2:{name:"meta.tag.other entity.name.function.pug"},3:{name:"punctuation.definition.parameters.begin.js"},4:{name:"variable.parameter.function.js"},5:{name:"punctuation.definition.parameters.begin.js"}},match:"(mixin\\s+)([\\w-]+)(?:(\\()\\s*((?:[a-zA-Z_]\\w*\\s*)(?:,\\s*[a-zA-Z_]\\w*\\s*)*)(\\)))?$"},printed_expression:{begin:"(!?\\=)\\s*",captures:{1:{name:"constant"}},end:"(?=\\])|$",name:"source.js",patterns:[{include:"#js_brackets"},{include:"source.js"}]},tag_attribute_name:{captures:{1:{name:"entity.other.attribute-name.tag.pug"}},match:"([^\\s(),=/!]+)\\s*"},tag_attribute_name_paren:{begin:"\\(\\s*",end:"\\)",name:"entity.other.attribute-name.tag.pug",patterns:[{include:"#tag_attribute_name_paren"},{include:"#tag_attribute_name"}]},tag_attributes:{begin:"(\\(\\s*)",captures:{1:{name:"constant.name.attribute.tag.pug"}},end:"(\\))",name:"meta.tag.other",patterns:[{include:"#tag_attribute_name_paren"},{include:"#tag_attribute_name"},{match:"!(?!=)",name:"invalid.illegal.tag.pug"},{begin:"=\\s*",end:"$|(?=,|(?:\\s+[^!%&*\\-+~|<>?/])|\\))",name:"attribute_value",patterns:[{include:"#js_parens"},{include:"#js_brackets"},{include:"#js_braces"},{include:"source.js"}]},{begin:"(?<=[%&*\\-+~|<>:?/])\\s+",end:"$|(?=,|(?:\\s+[^!%&*\\-+~|<>?/])|\\))",name:"attribute_value2",patterns:[{include:"#js_parens"},{include:"#js_brackets"},{include:"#js_braces"},{include:"source.js"}]}]},tag_classes:{captures:{1:{name:"invalid.illegal.tag.pug"}},match:"\\.([^\\w-])?[\\w-]*",name:"meta.selector.css entity.other.attribute-name.class.css.pug"},tag_id:{match:"#[\\w-]+",name:"meta.selector.css entity.other.attribute-name.id.css.pug"},tag_mixin_attributes:{begin:"(&attributes\\()",captures:{1:{name:"entity.name.function.pug"}},end:"(\\))",name:"meta.tag.other",patterns:[{match:"attributes(?=\\))",name:"storage.type.keyword.pug"},{include:"source.js"}]},tag_name:{begin:"([#!]\\{(?=.*?\\}))|(\\w(([\\w:-]+[\\w-])|([\\w-]*)))",end:"(\\G(?<!\\5[^\\w-]))|\\}|$",name:"meta.tag.other entity.name.tag.pug",patterns:[{begin:"\\G(?<=\\{)",end:"(?=\\})",name:"meta.tag.other entity.name.tag.pug",patterns:[{match:"{",name:"invalid.illegal.tag.pug"},{include:"source.js"}]}]},tag_text:{begin:"(?=.)",end:"$",patterns:[{include:"#inline_pug"},{include:"#embedded_html"},{include:"#html_entity"},{include:"#interpolated_value"},{include:"#interpolated_error"}]},unbuffered_code:{begin:"(-|(([a-zA-Z0-9_]+)\\s+=))",beginCaptures:{3:{name:"variable.parameter.javascript.embedded.pug"}},comment:"name = function() {}",end:"(?=\\])|(({\\s*)?$)",name:"source.js",patterns:[{include:"#js_brackets"},{include:"#babel_parens"},{include:"source.js"}]}},scopeName:"text.pug",embeddedLangs:["javascript","css","sass","scss","stylus","coffee","html"],aliases:["jade"]});var Qs=[...X,...ye,...Un,...Hn,...Wn,...Ks,...Mn,Js];const ei=Object.freeze({displayName:"Less",name:"less",patterns:[{include:"#comment-block"},{include:"#less-namespace-accessors"},{include:"#less-extend"},{include:"#at-rules"},{include:"#less-variable-assignment"},{include:"#property-list"},{include:"#selector"}],repository:{"angle-type":{captures:{1:{name:"keyword.other.unit.less"}},match:"(?i:[-+]?(?:(?:\\d*\\.\\d+(?:[eE](?:[-+]?\\d+))*)|(?:[-+]?\\d+))(deg|grad|rad|turn))\\b",name:"constant.numeric.less"},"at-charset":{begin:"\\s*((@)charset\\b)\\s*",captures:{1:{name:"keyword.control.at-rule.charset.less"},2:{name:"punctuation.definition.keyword.less"}},end:"\\s*((?=;|$))",name:"meta.at-rule.charset.less",patterns:[{include:"#literal-string"}]},"at-counter-style":{begin:"\\s*((@)counter-style\\b)\\s+(?:(?i:\\b(decimal|none)\\b)|(-?(?:[[_a-zA-Z][^\\x{00}-\\x{7F}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))(?:[[-\\w][^\\x{00}-\\x{7F}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))*))\\s*(?=\\{|$)",captures:{1:{name:"keyword.control.at-rule.counter-style.less"},2:{name:"punctuation.definition.keyword.less"},3:{name:"invalid.illegal.counter-style-name.less"},4:{name:"entity.other.counter-style-name.css"}},end:"\\s*(\\})",endCaptures:{1:{name:"punctuation.definition.block.begin.less"}},name:"meta.at-rule.counter-style.less",patterns:[{include:"#comment-block"},{include:"#rule-list"}]},"at-custom-media":{begin:"(?=\\s*@custom-media\\b)",end:"\\s*(?=;)",name:"meta.at-rule.custom-media.less",patterns:[{captures:{0:{name:"punctuation.section.property-list.less"}},match:"\\s*;"},{captures:{1:{name:"keyword.control.at-rule.custom-media.less"},2:{name:"punctuation.definition.keyword.less"},3:{name:"support.constant.custom-media.less"}},match:"\\s*((@)custom-media)(?=.*?)"},{include:"#media-query-list"}]},"at-font-face":{begin:"\\s*((@)font-face)\\s*(?=\\{|$)",captures:{1:{name:"keyword.control.at-rule.font-face.less"},2:{name:"punctuation.definition.keyword.less"}},end:"\\s*(\\})",endCaptures:{1:{name:"punctuation.definition.block.end.less"}},name:"meta.at-rule.font-face.less",patterns:[{include:"#comment-block"},{include:"#rule-list"}]},"at-import":{begin:"\\s*((@)import\\b)\\s*",beginCaptures:{1:{name:"keyword.control.at-rule.import.less"},2:{name:"punctuation.definition.keyword.less"}},end:"\\;",endCaptures:{0:{name:"punctuation.terminator.rule.less"}},name:"meta.at-rule.import.less",patterns:[{include:"#url-function"},{include:"#less-variables"},{begin:`(?<=(["'])|(["']\\)))\\s*`,end:"\\s*(?=\\;)",patterns:[{include:"#media-query"}]},{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.group.less",patterns:[{match:"reference|inline|less|css|once|multiple|optional",name:"constant.language.import-directive.less"},{include:"#comma-delimiter"}]},{include:"#literal-string"}]},"at-keyframes":{begin:"\\s*((@)(-webkit-|-moz-|-o-)?keyframes)(?=.*?\\{)",beginCaptures:{1:{name:"keyword.control.at-rule.keyframe.less"},2:{name:"punctuation.definition.keyword.less"},3:{name:"support.type.property-vendor.less"},4:{name:"support.constant.keyframe.less"}},end:"\\s*(\\})",endCaptures:{1:{name:"punctuation.definition.block.end.less"}},patterns:[{begin:"\\s*(\\{)",beginCaptures:{1:{name:"punctuation.definition.block.begin.less"}},end:"(?=\\})",patterns:[{captures:{1:{name:"keyword.other.keyframe-selector.less"},2:{name:"constant.numeric.less"},3:{name:"keyword.other.unit.less"}},match:"\\s*(?:(from|to)|((?:\\.[0-9]+|[0-9]+(?:\\.[0-9]*)?)(%)))\\s*,?\\s*"},{include:"$self"}]},{begin:"\\s*(?=[^{;])",end:"\\s*(?=\\{)",name:"meta.at-rule.keyframe.less",patterns:[{include:"#keyframe-name"}]}]},"at-media":{begin:"(?=\\s*@media\\b)",end:"\\s*(\\})",endCaptures:{1:{name:"punctuation.definition.block.end.less"}},patterns:[{begin:"\\s*((@)media)",beginCaptures:{1:{name:"keyword.control.at-rule.media.less"},2:{name:"punctuation.definition.keyword.less"},3:{name:"support.constant.media.less"}},end:"\\s*(?=\\{)",name:"meta.at-rule.media.less",patterns:[{include:"#media-query-list"}]},{begin:"\\s*(\\{)",beginCaptures:{1:{name:"punctuation.definition.block.begin.less"}},end:"(?=\\})",patterns:[{include:"#rule-list-body"},{include:"$self"}]}]},"at-namespace":{begin:"\\s*((@)namespace)\\s+",beginCaptures:{1:{name:"keyword.control.at-rule.namespace.less"},2:{name:"punctuation.definition.keyword.less"}},end:"\\;",endCaptures:{0:{name:"punctuation.terminator.rule.less"}},name:"meta.at-rule.namespace.less",patterns:[{include:"#url-function"},{include:"#literal-string"},{match:"(-?(?:[[_a-zA-Z][^\\x{00}-\\x{7F}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))(?:[[-\\w][^\\x{00}-\\x{7F}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))*)",name:"entity.name.constant.namespace-prefix.less"}]},"at-page":{captures:{1:{name:"keyword.control.at-rule.page.less"},2:{name:"punctuation.definition.keyword.less"},3:{name:"punctuation.definition.entity.less"},4:{name:"entity.other.attribute-name.pseudo-class.less"}},match:"\\s*((@)page)\\s*(?:(:)(first|left|right))?\\s*(?=\\{|$)",name:"meta.at-rule.page.less",patterns:[{include:"#comment-block"},{include:"#rule-list"}]},"at-rules":{patterns:[{include:"#at-charset"},{include:"#at-counter-style"},{include:"#at-custom-media"},{include:"#at-font-face"},{include:"#at-media"},{include:"#at-import"},{include:"#at-keyframes"},{include:"#at-namespace"},{include:"#at-page"},{include:"#at-supports"},{include:"#at-viewport"}]},"at-supports":{begin:"(?=\\s*@supports\\b)",end:"(?=\\s*)(\\})",endCaptures:{1:{name:"punctuation.definition.block.end.less"}},patterns:[{begin:"\\s*((@)supports)",beginCaptures:{1:{name:"keyword.control.at-rule.supports.less"},2:{name:"punctuation.definition.keyword.less"},3:{name:"support.constant.supports.less"}},end:"\\s*(?=\\{)",name:"meta.at-rule.supports.less",patterns:[{include:"#at-supports-operators"},{include:"#at-supports-parens"}]},{begin:"\\s*(\\{)",beginCaptures:{1:{name:"punctuation.section.property-list.begin.less"}},end:"(?=\\})",patterns:[{include:"#rule-list-body"},{include:"$self"}]}]},"at-supports-operators":{match:"\\b(?:and|or|not)\\b",name:"keyword.operator.logic.less"},"at-supports-parens":{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.group.less",patterns:[{include:"#at-supports-operators"},{include:"#at-supports-parens"},{include:"#rule-list-body"}]},"at-viewport":{begin:"((@(-ms-)?)viewport)",beginCaptures:{1:{name:"keyword.control.at-rule.viewport.less"},2:{name:"punctuation.definition.keyword.less"},3:{name:"support.type.vendor-prefix.less"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.block.end.less"}},name:"meta.at-rule.viewport.less",patterns:[{begin:"\\{",captures:{0:{name:"punctuation.definition.block.begin.less"}},end:"(?=\\})",name:"meta.block.less",patterns:[{include:"#rule-list-body"}]}]},"attr-function":{begin:"\\b(attr)(?=\\()",beginCaptures:{1:{name:"support.function.filter.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#qualified-name"},{include:"#literal-string"},{begin:"(-?(?:[[_a-zA-Z][^\\x{00}-\\x{7F}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))(?:[[-\\w][^\\x{00}-\\x{7F}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))*)",end:"(?=\\))",name:"entity.other.attribute-name.less",patterns:[{match:"(?x)\\b((?i:em|ex|ch|rem)|(?i:vw|vh|vmin|vmax)|(?i:cm|mm|q|in|pt|pc|px|fr)|(?i:deg|grad|rad|turn)|(?i:s|ms)|(?i:Hz|kHz)|(?i:dpi|dpcm|dppx))\\b",name:"keyword.other.unit.less"},{include:"#comma-delimiter"},{include:"#property-value-constants"},{include:"#numeric-values"}]},{include:"#color-values"}]}]},"builtin-functions":{patterns:[{include:"#attr-function"},{include:"#calc-function"},{include:"#color-functions"},{include:"#counter-functions"},{include:"#cross-fade-function"},{include:"#cubic-bezier-function"},{include:"#filter-function"},{include:"#format-function"},{include:"#gradient-functions"},{include:"#grid-repeat-function"},{include:"#image-function"},{include:"#less-functions"},{include:"#local-function"},{include:"#minmax-function"},{include:"#regexp-function"},{include:"#shape-functions"},{include:"#steps-function"},{include:"#symbols-function"},{include:"#transform-functions"},{include:"#url-function"},{include:"#var-function"}]},"calc-function":{begin:"\\b(calc)(?=\\()",beginCaptures:{1:{name:"support.function.calc.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#less-strings"},{include:"#var-function"},{include:"#calc-function"},{include:"#attr-function"},{include:"#less-math"}]}]},"color-adjuster-operators":{match:"[\\-\\+*](?=\\s+)",name:"keyword.operator.less"},"color-functions":{patterns:[{begin:"\\b(rgba?)(?=\\()",beginCaptures:{1:{name:"support.function.color.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#less-strings"},{include:"#less-variables"},{include:"#comma-delimiter"},{include:"#percentage-type"},{include:"#number-type"}]}]},{begin:"\\b(hs(l|v)a?|hwb)(?=\\()",beginCaptures:{1:{name:"support.function.color.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#less-strings"},{include:"#less-variables"},{include:"#comma-delimiter"},{include:"#angle-type"},{include:"#percentage-type"},{include:"#number-type"}]}]},{include:"#less-color-functions"}]},"color-values":{patterns:[{include:"#color-functions"},{include:"#less-functions"},{include:"#less-variables"},{match:"\\b(aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow)\\b",name:"support.constant.color.w3c-standard-color-name.less"},{match:"\\b(aliceblue|antiquewhite|aquamarine|azure|beige|bisque|blanchedalmond|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|gainsboro|ghostwhite|gold|goldenrod|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|limegreen|linen|magenta|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|oldlace|olivedrab|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|rebeccapurple|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|thistle|tomato|turquoise|violet|wheat|whitesmoke|yellowgreen)\\b",name:"support.constant.color.w3c-extended-color-keywords.less"},{match:"\\b((?i)currentColor|transparent)\\b",name:"support.constant.color.w3c-special-color-keyword.less"},{captures:{1:{name:"punctuation.definition.constant.less"}},match:"(#)(\\h{3}|\\h{4}|\\h{6}|\\h{8})\\b",name:"constant.other.color.rgb-value.less"}]},"comma-delimiter":{captures:{1:{name:"punctuation.separator.less"}},match:"\\s*(,)\\s*"},"comment-block":{patterns:[{begin:"/\\*",captures:{0:{name:"punctuation.definition.comment.less"}},end:"\\*/",name:"comment.block.less"},{include:"#comment-line"}]},"comment-line":{captures:{1:{name:"punctuation.definition.comment.less"}},match:"(//).*$\\n?",name:"comment.line.double-slash.less"},"counter-functions":{patterns:[{begin:"\\b(counter)(?=\\()",beginCaptures:{1:{name:"support.function.filter.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#less-strings"},{include:"#less-variables"},{match:"(?:--(?:[[-\\w][^\\x{00}-\\x{7F}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))+|-?(?:[[_a-zA-Z][^\\x{00}-\\x{7F}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))(?:[[-\\w][^\\x{00}-\\x{7F}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))*)",name:"entity.other.counter-name.less"},{begin:"(?=,)",end:"(?=\\))",patterns:[{include:"#comma-delimiter"},{match:"\\b((?xi:arabic-indic|armenian|bengali|cambodian|circle|cjk-decimal|cjk-earthly-branch|cjk-heavenly-stem|decimal-leading-zero|decimal|devanagari|disclosure-closed|disclosure-open|disc|ethiopic-numeric|georgian|gujarati|gurmukhi|hebrew|hiragana-iroha|hiragana|japanese-formal|japanese-informal|kannada|katakana-iroha|katakana|khmer|korean-hangul-formal|korean-hanja-formal|korean-hanja-informal|lao|lower-alpha|lower-armenian|lower-greek|lower-latin|lower-roman|malayalam|mongolian|myanmar|oriya|persian|simp-chinese-formal|simp-chinese-informal|square|tamil|telugu|thai|tibetan|trad-chinese-formal|trad-chinese-informal|upper-alpha|upper-armenian|upper-latin|upper-roman)|none)\\b",name:"support.constant.property-value.counter-style.less"}]}]}]},{begin:"\\b(counters)(?=\\()",beginCaptures:{1:{name:"support.function.filter.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{match:"(-?(?:[[_a-zA-Z][^\\x{00}-\\x{7F}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))(?:[[-\\w][^\\x{00}-\\x{7F}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))*)",name:"entity.other.counter-name.less string.unquoted.less"},{begin:"(?=,)",end:"(?=\\))",patterns:[{include:"#less-strings"},{include:"#less-variables"},{include:"#literal-string"},{include:"#comma-delimiter"},{match:"\\b((?xi:arabic-indic|armenian|bengali|cambodian|circle|cjk-decimal|cjk-earthly-branch|cjk-heavenly-stem|decimal-leading-zero|decimal|devanagari|disclosure-closed|disclosure-open|disc|ethiopic-numeric|georgian|gujarati|gurmukhi|hebrew|hiragana-iroha|hiragana|japanese-formal|japanese-informal|kannada|katakana-iroha|katakana|khmer|korean-hangul-formal|korean-hanja-formal|korean-hanja-informal|lao|lower-alpha|lower-armenian|lower-greek|lower-latin|lower-roman|malayalam|mongolian|myanmar|oriya|persian|simp-chinese-formal|simp-chinese-informal|square|tamil|telugu|thai|tibetan|trad-chinese-formal|trad-chinese-informal|upper-alpha|upper-armenian|upper-latin|upper-roman)|none)\\b",name:"support.constant.property-value.counter-style.less"}]}]}]}]},"cross-fade-function":{patterns:[{begin:"\\b(cross-fade)(?=\\()",beginCaptures:{1:{name:"support.function.image.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#comma-delimiter"},{include:"#percentage-type"},{include:"#color-values"},{include:"#image-type"},{include:"#literal-string"},{include:"#unquoted-string"}]}]}]},"cubic-bezier-function":{begin:"\\b(cubic-bezier)(?=\\()",beginCaptures:{0:{name:"support.function.timing.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#comma-delimiter"},{include:"#number-type"}]}]},"custom-property-name":{captures:{1:{name:"punctuation.definition.custom-property.less"},2:{name:"support.type.custom-property.name.less"}},match:"\\s*(--)((?:[[-\\w][^\\x{00}-\\x{7F}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))+)",name:"support.type.custom-property.less"},dimensions:{patterns:[{include:"#angle-type"},{include:"#frequency-type"},{include:"#length-type"},{include:"#resolution-type"},{include:"#time-type"}]},"filter-function":{begin:"\\b(filter)(?=\\()",beginCaptures:{1:{name:"support.function.filter.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",name:"meta.group.less",patterns:[{include:"#comma-delimiter"},{include:"#image-type"},{include:"#literal-string"},{include:"#filter-functions"}]}]},"filter-functions":{patterns:[{include:"#less-functions"},{begin:"\\b(blur)(?=\\()",beginCaptures:{1:{name:"support.function.filter.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#length-type"}]}]},{begin:"\\b(brightness|contrast|grayscale|invert|opacity|saturate|sepia)(?=\\()",beginCaptures:{1:{name:"support.function.filter.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#percentage-type"},{include:"#number-type"},{include:"#less-functions"}]}]},{begin:"\\b(drop-shadow)(?=\\()",beginCaptures:{1:{name:"support.function.filter.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#length-type"},{include:"#color-values"}]}]},{begin:"\\b(hue-rotate)(?=\\()",beginCaptures:{1:{name:"support.function.filter.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#angle-type"}]}]}]},"format-function":{patterns:[{begin:"\\b(format)(?=\\()",beginCaptures:{0:{name:"support.function.format.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#literal-string"}]}]}]},"frequency-type":{captures:{1:{name:"keyword.other.unit.less"}},match:"(?i:[-+]?(?:(?:\\d*\\.\\d+(?:[eE](?:[-+]?\\d+))*)|(?:[-+]?\\d+))(Hz|kHz))\\b",name:"constant.numeric.less"},"gradient-functions":{patterns:[{begin:"\\b((?:repeating-)?linear-gradient)(?=\\()",beginCaptures:{1:{name:"support.function.gradient.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#less-variables"},{include:"#angle-type"},{include:"#color-values"},{include:"#percentage-type"},{include:"#length-type"},{include:"#comma-delimiter"},{match:"\\bto\\b",name:"keyword.other.less"},{match:"\\b(top|right|bottom|left)\\b",name:"support.constant.property-value.less"}]}]},{begin:"\\b((?:repeating-)?radial-gradient)(?=\\()",beginCaptures:{1:{name:"support.function.gradient.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#less-variables"},{include:"#color-values"},{include:"#percentage-type"},{include:"#length-type"},{include:"#comma-delimiter"},{match:"\\b(at|circle|ellipse)\\b",name:"keyword.other.less"},{match:"\\b(top|right|bottom|left|center|(farthest|closest)-(corner|side))\\b",name:"support.constant.property-value.less"}]}]}]},"grid-repeat-function":{begin:"\\b(repeat)(?=\\()",beginCaptures:{1:{name:"support.function.grid.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#comma-delimiter"},{include:"#var-function"},{include:"#length-type"},{include:"#percentage-type"},{include:"#minmax-function"},{include:"#integer-type"},{match:"\\b(auto-(fill|fit))\\b",name:"support.keyword.repetitions.less"},{match:"\\b(((max|min)-content)|auto)\\b",name:"support.constant.property-value.less"}]}]},"image-function":{begin:"\\b(image)(?=\\()",beginCaptures:{1:{name:"support.function.image.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#image-type"},{include:"#literal-string"},{include:"#color-values"},{include:"#comma-delimiter"},{include:"#unquoted-string"}]}]},"image-type":{patterns:[{include:"#cross-fade-function"},{include:"#gradient-functions"},{include:"#image-function"},{include:"#url-function"}]},"integer-type":{match:"(?:[-+]?\\d+)",name:"constant.numeric.less"},"keyframe-name":{begin:"\\s*(-?(?:[_a-z]|[^\\x{00}-\\x{7F}]|(?:(:?\\\\[0-9a-f]{1,6}(\\r\\n|[\\s\\t\\r\\n\\f])?)|\\\\[^\\r\\n\\f0-9a-f]))(?:[_a-z0-9-]|[^\\x{00}-\\x{7F}]|(?:(:?\\\\[0-9a-f]{1,6}(\\r\\n|[\\t\\r\\n\\f])?)|\\\\[^\\r\\n\\f0-9a-f]))*)?",beginCaptures:{1:{name:"variable.other.constant.animation-name.less"}},end:"\\s*(?:(,)|(?=[{;]))",endCaptures:{1:{name:"punctuation.definition.arbitrary-repetition.less"}}},"length-type":{captures:{1:{name:"keyword.other.unit.less"}},match:"0|(?i:[-+]?(?:(?:\\d*\\.\\d+(?:[eE](?:[-+]?\\d+))*)|(?:[-+]?\\d+))(em|ex|ch|rem|vw|vh|vmin|vmax|(c|m)?m|q|in|pt|pc|px|fr))\\b",name:"constant.numeric.less"},"less-boolean-function":{begin:"\\b(boolean)(?=\\()",beginCaptures:{1:{name:"support.function.boolean.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#less-logical-comparisons"}]}]},"less-color-blend-functions":{patterns:[{begin:"\\b(multiply|screen|overlay|(soft|hard)light|difference|exclusion|negation|average)(?=\\()",beginCaptures:{1:{name:"support.function.color-blend.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#less-variables"},{include:"#comma-delimiter"},{include:"#color-values"}]}]}]},"less-color-channel-functions":{patterns:[{begin:"\\b(hue|saturation|lightness|hsv(hue|saturation|value)|red|green|blue|alpha|luma|luminance)(?=\\()",beginCaptures:{1:{name:"support.function.color-definition.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#color-values"}]}]}]},"less-color-definition-functions":{patterns:[{begin:"\\b(argb)(?=\\()",beginCaptures:{1:{name:"support.function.color-definition.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#less-variables"},{include:"#color-values"}]}]}]},"less-color-functions":{patterns:[{include:"#less-color-blend-functions"},{include:"#less-color-channel-functions"},{include:"#less-color-definition-functions"},{include:"#less-color-operation-functions"}]},"less-color-operation-functions":{patterns:[{begin:"\\b(fade|shade|tint)(?=\\()",beginCaptures:{1:{name:"support.function.color-operation.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#color-values"},{include:"#comma-delimiter"},{include:"#percentage-type"}]}]},{begin:"\\b(spin)(?=\\()",beginCaptures:{1:{name:"support.function.color-operation.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#color-values"},{include:"#comma-delimiter"},{include:"#number-type"}]}]},{begin:"\\b(((de)?saturate)|((light|dark)en)|(fade(in|out)))(?=\\()",beginCaptures:{1:{name:"support.function.color-operation.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#color-values"},{include:"#comma-delimiter"},{include:"#percentage-type"},{match:"\\brelative\\b",name:"constant.language.relative.less"}]}]},{begin:"\\b(contrast)(?=\\()",beginCaptures:{1:{name:"support.function.color-operation.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#color-values"},{include:"#comma-delimiter"},{include:"#percentage-type"}]}]},{begin:"\\b(greyscale)(?=\\()",beginCaptures:{1:{name:"support.function.color-operation.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#color-values"}]}]},{begin:"\\b(mix)(?=\\()",beginCaptures:{1:{name:"support.function.color-operation.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#color-values"},{include:"#comma-delimiter"},{include:"#less-math"},{include:"#percentage-type"}]}]}]},"less-extend":{begin:"(:)(extend)(?=\\()",beginCaptures:{1:{name:"punctuation.definition.entity.less"},2:{name:"entity.other.attribute-name.pseudo-class.extend.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{match:"\\ball\\b",name:"constant.language.all.less"},{include:"#selectors"}]}]},"less-functions":{patterns:[{include:"#less-boolean-function"},{include:"#less-color-functions"},{include:"#less-if-function"},{include:"#less-list-functions"},{include:"#less-math-functions"},{include:"#less-misc-functions"},{include:"#less-string-functions"},{include:"#less-type-functions"}]},"less-if-function":{begin:"\\b(if)(?=\\()",beginCaptures:{1:{name:"support.function.if.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#less-mixin-guards"},{include:"#comma-delimiter"},{include:"#property-values"}]}]},"less-list-functions":{patterns:[{begin:"\\b(length)(?=\\()\\b",beginCaptures:{1:{name:"support.function.length.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#property-values"},{include:"#comma-delimiter"}]}]},{begin:"\\b(extract)(?=\\()\\b",beginCaptures:{1:{name:"support.function.extract.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#property-values"},{include:"#comma-delimiter"},{include:"#integer-type"}]}]},{begin:"\\b(range)(?=\\()\\b",beginCaptures:{1:{name:"support.function.range.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#property-values"},{include:"#comma-delimiter"},{include:"#integer-type"}]}]}]},"less-logical-comparisons":{patterns:[{captures:{1:{name:"keyword.operator.logical.less"}},match:"\\s*(=|((<|>)=?))\\s*"},{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.group.less",patterns:[{include:"#less-logical-comparisons"}]},{match:"\\btrue|false\\b",name:"constant.language.less"},{match:",",name:"punctuation.separator.less"},{include:"#property-values"},{include:"#selectors"},{include:"#unquoted-string"}]},"less-math":{patterns:[{match:"[-\\+\\*\\/]",name:"keyword.operator.arithmetic.less"},{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.group.less",patterns:[{include:"#less-math"}]},{include:"#numeric-values"},{include:"#less-variables"}]},"less-math-functions":{patterns:[{begin:"\\b(ceil|floor|percentage|round|sqrt|abs|a?(sin|cos|tan))(?=\\()",beginCaptures:{1:{name:"support.function.math.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#less-variables"},{include:"#numeric-values"}]}]},{captures:{2:{name:"support.function.math.less"},3:{name:"punctuation.definition.group.begin.less"},4:{name:"punctuation.definition.group.end.less"}},match:"((pi)(\\()(\\)))",name:"meta.function-call.less"},{begin:"\\b(pow|m(od|in|ax))(?=\\()",beginCaptures:{1:{name:"support.function.math.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#less-variables"},{include:"#numeric-values"},{include:"#comma-delimiter"}]}]}]},"less-misc-functions":{patterns:[{begin:"\\b(color)(?=\\()",beginCaptures:{1:{name:"support.function.color.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#literal-string"}]}]},{begin:"\\b(image-(size|width|height))(?=\\()",beginCaptures:{1:{name:"support.function.image.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#literal-string"},{include:"#unquoted-string"}]}]},{begin:"\\b(convert|unit)(?=\\()",beginCaptures:{1:{name:"support.function.convert.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#less-variables"},{include:"#dimensions"},{include:"#numeric-values"},{include:"#literal-string"},{include:"#comma-delimiter"},{match:"((c|m)?m|in|p(t|c|x)|m?s|g?rad|deg|turn|%|r?em|ex|ch)",name:"keyword.other.unit.less"}]}]},{begin:"\\b(data-uri)(?=\\()",beginCaptures:{1:{name:"support.function.data-uri.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#less-variables"},{include:"#literal-string"},{captures:{1:{name:"punctuation.separator.less"}},match:"\\s*(?:(,))"}]}]},{captures:{2:{name:"punctuation.definition.group.begin.less"},3:{name:"punctuation.definition.group.end.less"}},match:"\\b(default(\\()(\\)))\\b",name:"support.function.default.less"},{begin:"\\b(get-unit)(?=\\()",beginCaptures:{1:{name:"support.function.get-unit.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#dimensions"}]}]},{begin:"\\b(svg-gradient)(?=\\()",beginCaptures:{1:{name:"support.function.svg-gradient.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#angle-type"},{include:"#comma-delimiter"},{include:"#color-values"},{include:"#percentage-type"},{include:"#length-type"},{match:"\\bto\\b",name:"keyword.other.less"},{match:"\\b(top|right|bottom|left|center)\\b",name:"support.constant.property-value.less"},{match:"\\b(at|circle|ellipse)\\b",name:"keyword.other.less"}]}]}]},"less-mixin-guards":{patterns:[{begin:"\\s*(and|not|or)?\\s*(?=\\()",beginCaptures:{1:{name:"keyword.operator.logical.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",name:"meta.group.less",patterns:[{include:"#less-variable-comparison"},{captures:{1:{name:"meta.group.less"},2:{name:"punctuation.definition.group.begin.less"},3:{name:"punctuation.definition.group.end.less"}},match:"default((\\()(\\)))",name:"support.function.default.less"},{include:"#property-values"},{include:"#less-logical-comparisons"},{include:"$self"}]}]}]},"less-namespace-accessors":{patterns:[{begin:"(?=\\s*when\\b)",end:"\\s*(?:(,)|(?=[{;]))",endCaptures:{1:{name:"punctuation.definition.block.end.less"}},name:"meta.conditional.guarded-namespace.less",patterns:[{captures:{1:{name:"keyword.control.conditional.less"},2:{name:"punctuation.definition.keyword.less"}},match:"\\s*(when)(?=.*?)"},{include:"#less-mixin-guards"},{include:"#comma-delimiter"},{begin:"\\s*(\\{)",beginCaptures:{1:{name:"punctuation.section.property-list.begin.less"}},end:"(?=\\})",name:"meta.block.less",patterns:[{include:"#rule-list-body"}]},{include:"#selectors"}]},{begin:"(\\()",beginCaptures:{1:{name:"punctuation.definition.group.begin.less"}},end:"(\\))",endCaptures:{1:{name:"punctuation.definition.group.end.less"},2:{name:"punctuation.terminator.rule.less"}},name:"meta.group.less",patterns:[{include:"#less-variable-assignment"},{include:"#comma-delimiter"},{captures:{1:{name:"punctuation.terminator.rule.less"}},match:"\\s*(;)|(?=[})])"},{include:"#property-values"},{include:"#rule-list-body"}]}]},"less-number-units":{patterns:[{match:"\\b((c|m)?m|in|p(t|c)|m?s|g?rad|deg|turn)\\b",name:"keyword.other.unit.less"},{match:"\\b(r?em|ex|ch|vw|vh|vmin|vmax|cm|mm|q|in|pt|pc|px|fr|s|ms|Hz|kHz|dpi|dpcm|dppx|deg|grad|rad|turn)\\b"}]},"less-string-functions":{patterns:[{begin:"\\b(e(scape)?)(?=\\()\\b",beginCaptures:{1:{name:"support.function.escape.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#less-variables"},{include:"#comma-delimiter"},{include:"#literal-string"},{include:"#unquoted-string"}]}]},{begin:"\\s*(%)(?=\\()\\s*",beginCaptures:{1:{name:"support.function.format.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#less-variables"},{include:"#comma-delimiter"},{include:"#literal-string"},{include:"#property-values"}]}]},{begin:"\\b(replace)(?=\\()\\b",beginCaptures:{1:{name:"support.function.replace.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#less-variables"},{include:"#comma-delimiter"},{include:"#literal-string"},{include:"#property-values"}]}]}]},"less-strings":{patterns:[{begin:`(~)('|")`,beginCaptures:{1:{name:"constant.character.escape.less"},2:{name:"punctuation.definition.string.begin.less"}},contentName:"markup.raw.inline.less",end:`('|")|(\\n)`,endCaptures:{1:{name:"punctuation.definition.string.end.less"},2:{name:"invalid.illegal.newline.less"}},name:"string.quoted.other.less",patterns:[{include:"#string-content"}]}]},"less-type-functions":{patterns:[{begin:"\\b(is(number|string|color|keyword|url|pixel|em|percentage|ruleset))(?=\\()",beginCaptures:{1:{name:"support.function.type.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#property-values"}]}]},{begin:"\\b(isunit)(?=\\()",beginCaptures:{1:{name:"support.function.type.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#property-values"},{include:"#comma-delimiter"},{match:"(?x)\\b((?i:em|ex|ch|rem)|(?i:vw|vh|vmin|vmax)|(?i:cm|mm|q|in|pt|pc|px|fr)|(?i:deg|grad|rad|turn)|(?i:s|ms)|(?i:Hz|kHz)|(?i:dpi|dpcm|dppx))\\b",name:"keyword.other.unit.less"}]}]},{begin:"\\b(isdefined)(?=\\()",beginCaptures:{1:{name:"support.function.type.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#less-variables"}]}]}]},"less-variable-assignment":{patterns:[{begin:"(@)(-?(?:[[-\\w][^\\x{00}-\\x{7F}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))(?:[[-\\w][^\\x{00}-\\x{7F}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))*)",beginCaptures:{0:{name:"variable.other.readwrite.less"},1:{name:"punctuation.definition.variable.less"},2:{name:"support.other.variable.less"}},end:"\\s*(;|(\\.{3})|(?=\\)))",endCaptures:{1:{name:"punctuation.terminator.rule.less"},2:{name:"keyword.operator.spread.less"}},name:"meta.property-value.less",patterns:[{captures:{1:{name:"punctuation.separator.key-value.less"},4:{name:"meta.property-value.less"}},match:"(((\\+_?)?):)([\\s\\t]*)"},{include:"#property-values"},{include:"#comma-delimiter"},{include:"#property-list"},{include:"#unquoted-string"}]}]},"less-variable-comparison":{patterns:[{begin:"(@{1,2})([-]?([_a-z]|[^\\x{00}-\\x{7F}]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))(?:[[-\\w][^\\x{00}-\\x{7F}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))*)",beginCaptures:{0:{name:"variable.other.readwrite.less"},1:{name:"punctuation.definition.variable.less"},2:{name:"support.other.variable.less"}},end:"\\s*(?=\\))",endCaptures:{1:{name:"punctuation.terminator.rule.less"}},patterns:[{captures:{1:{name:"keyword.operator.logical.less"}},match:"\\s*(=|((<|>)=?))\\s*"},{match:"\\btrue\\b",name:"constant.language.less"},{include:"#property-values"},{include:"#selectors"},{include:"#unquoted-string"},{match:",",name:"punctuation.separator.less"}]}]},"less-variable-interpolation":{captures:{1:{name:"punctuation.definition.variable.less"},2:{name:"punctuation.definition.expression.less"},3:{name:"support.other.variable.less"},4:{name:"punctuation.definition.expression.less"}},match:"(@)(\\{)([-\\w]+)(\\})",name:"variable.other.readwrite.less"},"less-variables":{captures:{1:{name:"punctuation.definition.variable.less"},2:{name:"support.other.variable.less"}},match:"\\s*(@@?)([-\\w]+)",name:"variable.other.readwrite.less"},"literal-string":{patterns:[{begin:"'",beginCaptures:{0:{name:"punctuation.definition.string.begin.less"}},end:"(')|(\\n)",endCaptures:{1:{name:"punctuation.definition.string.end.less"},2:{name:"invalid.illegal.newline.less"}},name:"string.quoted.single.less",patterns:[{include:"#string-content"}]},{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.less"}},end:'(")|(\\n)',endCaptures:{1:{name:"punctuation.definition.string.end.less"},2:{name:"invalid.illegal.newline.less"}},name:"string.quoted.double.less",patterns:[{include:"#string-content"}]},{include:"#less-strings"}]},"local-function":{begin:"\\b(local)(?=\\()",beginCaptures:{0:{name:"support.function.font-face.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#unquoted-string"}]}]},"media-query":{begin:"\\s*(only|not)?\\s*(all|aural|braille|embossed|handheld|print|projection|screen|tty|tv)?",beginCaptures:{1:{name:"keyword.operator.logic.media.less"},2:{name:"support.constant.media.less"}},end:"\\s*(?:(,)|(?=[{;]))",endCaptures:{1:{name:"punctuation.definition.arbitrary-repetition.less"}},patterns:[{include:"#less-variables"},{include:"#custom-property-name"},{begin:"\\s*(and)?\\s*(\\()\\s*",beginCaptures:{1:{name:"keyword.operator.logic.media.less"},2:{name:"punctuation.definition.group.begin.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.group.less",patterns:[{begin:"((-webkit-|-o-)?((min|max)-)?(-moz-)?(((device-)?(height|width|aspect-ratio|pixel-ratio))|(color(-index)?)|monochrome|resolution))|grid|scan|orientation\\s*(?=[:)])",beginCaptures:{0:{name:"support.type.property-name.media.less"},2:{name:"support.type.vendor-prefix.less"},5:{name:"support.type.vendor-prefix.less"}},end:"(((\\+_?)?):)|(?=\\))",endCaptures:{1:{name:"punctuation.separator.key-value.less"}}},{match:"\\b(portrait|landscape|progressive|interlace)",name:"support.constant.property-value.less"},{captures:{1:{name:"constant.numeric.less"},2:{name:"keyword.operator.arithmetic.less"},3:{name:"constant.numeric.less"}},match:"\\s*(\\d+)(/)(\\d+)"},{include:"#less-math"}]}]},"media-query-list":{begin:"\\s*(?=[^{;])",end:"\\s*(?=[{;])",patterns:[{include:"#media-query"}]},"minmax-function":{begin:"\\b(minmax)(?=\\()",beginCaptures:{1:{name:"support.function.grid.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#less-variables"},{include:"#length-type"},{include:"#comma-delimiter"},{match:"\\b(max-content|min-content)\\b",name:"support.constant.property-value.less"}]}]},"number-type":{match:"[-+]?(?:(?:\\d*\\.\\d+(?:[eE](?:[-+]?\\d+))*)|(?:[-+]?\\d+))",name:"constant.numeric.less"},"numeric-values":{patterns:[{include:"#dimensions"},{include:"#percentage-type"},{include:"#number-type"}]},"percentage-type":{captures:{1:{name:"keyword.other.unit.less"}},match:"[-+]?(?:(?:\\d*\\.\\d+(?:[eE](?:[-+]?\\d+))*)|(?:[-+]?\\d+))(%)",name:"constant.numeric.less"},"property-list":{patterns:[{begin:"(?=(?=[^;]*)\\{)",end:"\\}",endCaptures:{0:{name:"punctuation.definition.block.end.less"}},patterns:[{include:"#rule-list"}]}]},"property-value-constants":{patterns:[{match:`(?x)\\b( + absolute|active|add + |all(-(petite|small)-caps|-scroll)? + |alpha(betic)? + |alternate(-reverse)? + |always|annotation|antialiased|at + |auto(hiding-scrollbar)? + |avoid(-column|-page|-region)? + |background(-color|-image|-position|-size)? + |backwards|balance|baseline|below|bevel|bicubic|bidi-override|blink + |block(-line-height)? + |blur + |bold(er)? + |border(-bottom|-left|-right|-top)?-(color|radius|width|style) + |border-(bottom|top)-(left|right)-radius + |border-image(-outset|-repeat|-slice|-source|-width)? + |border(-bottom|-left|-right|-top|-collapse|-spacing|-box)? + |both|bottom + |box(-shadow)? + |break-(all|word) + |brightness + |butt(on)? + |capitalize + |cent(er|ral) + |char(acter-variant)? + |cjk-ideographic|clip|clone|close-quote + |closest-(corner|side) + |col-resize|collapse + |color(-stop|-burn|-dodge)? + |column((-count|-gap|-reverse|-rule(-color|-width)?|-width)|s)? + |common-ligatures|condensed|consider-shifts|contain + |content(-box|s)? + |contextual|contrast|cover + |crisp(-e|E)dges + |crop + |cross(hair)? + |da(rken|shed) + |default|dense|diagonal-fractions|difference|disabled + |discretionary-ligatures|disregard-shifts + |distribute(-all-lines|-letter|-space)? + |dotted|double|drop-shadow + |(nwse|nesw|ns|ew|sw|se|nw|ne|w|s|e|n)-resize + |ease(-in-out|-in|-out)? + |element|ellipsis|embed|end|EndColorStr|evenodd + |exclu(de(-ruby)?|sion) + |expanded + |(extra|semi|ultra)-(condensed|expanded) + |farthest-(corner|side)? + |fill(-box|-opacity)? + |filter|fixed|flat + |flex((-basis|-end|-grow|-shrink|-start)|box)? + |flip|flood-color + |font(-size(-adjust)?|-stretch|-weight)? + |forwards + |from(-image)? + |full-width|geometricPrecision|glyphs|gradient|grayscale + |grid(-height)? + |groove|hand|hanging|hard-light|height|help|hidden|hide + |historical-(forms|ligatures) + |horizontal(-tb)? + |hue + |ideograph(-alpha|-numeric|-parenthesis|-space|ic) + |inactive|include-ruby|infinite|inherit|initial + |inline(-block|-box|-flex(box)?|-line-height|-table)? + |inset|inside + |inter(-ideograph|-word|sect) + |invert|isolat(e|ion)|italic + |jis(04|78|83|90) + |justify(-all)? + |keep-all + |large[r]? + |last|layout|left|letter-spacing + |light(e[nr]|ing-color) + |line(-edge|-height|-through)? + |linear(-gradient|RGB)? + |lining-nums|list-item|local|loose|lowercase|lr-tb|ltr + |lumin(osity|ance)|manual + |manipulation + |margin(-bottom|-box|-left|-right|-top)? + |marker(-offset|s)? + |mathematical + |max-(content|height|lines|size|width) + |medium|middle + |min-(content|height|width) + |miter|mixed|move|multiply|newspaper + |no-(change|clip|(close|open)-quote|(common|discretionary|historical)-ligatures|contextual|drop|repeat) + |none|nonzero|normal|not-allowed|nowrap|oblique + |offset(-after|-before|-end|-start)? + |oldstyle-nums|opacity|open-quote + |optimize(Legibility|Precision|Quality|Speed) + |order|ordinal|ornaments + |outline(-color|-offset|-width)? + |outset|outside|over(line|-edge|lay) + |padding(-bottom|-box|-left|-right|-top|-box)? + |page|painted|paused + |pan-(x|left|right|y|up|down) + |perspective-origin + |petite-caps|pixelated|pointer + |pinch-zoom + |pre(-line|-wrap)? + |preserve-3d + |progid:DXImageTransform.Microsoft.(Alpha|Blur|dropshadow|gradient|Shadow) + |progress + |proportional-(nums|width) + |radial-gradient|recto|region|relative + |repeat(-[xy])? + |repeating-(linear|radial)-gradient + |replaced|reset-size|reverse|ridge|right + |round + |row(-resize|-reverse)? + |rtl|ruby|running|saturat(e|ion)|screen + |scroll(-position|bar)? + |separate|sepia + |scale-down + |shape-(image-threshold|margin|outside) + |show + |sideways(-lr|-rl)? + |simplified + |size + |slashed-zero|slice + |small(-caps|er)? + |smooth|snap|solid|soft-light + |space(-around|-between)? + |span|sRGB + |stack(ed-fractions)? + |start(ColorStr)? + |static + |step-(end|start) + |sticky + |stop-(color|opacity) + |stretch|strict + |stroke(-box|-dash(array|offset)|-miterlimit|-opacity|-width)? + |style(set)? + |stylistic + |sub(grid|pixel-antialiased|tract)? + |super|swash + |table(-caption|-cell|(-column|-footer|-header|-row)-group|-column|-row)? + |tabular-nums|tb-rl + |text((-bottom|-(decoration|emphasis)-color|-indent|-(over|under)-edge|-shadow|-size(-adjust)?|-top)|field)? + |thi(ck|n) + |titling-ca(ps|se) + |to[p]? + |touch|traditional + |transform(-origin)? + |under(-edge|line)? + |unicase|unset|uppercase|upright + |use-(glyph-orientation|script) + |verso + |vertical(-align|-ideographic|-lr|-rl|-text)? + |view-box + |viewport-fill(-opacity)? + |visibility + |visible(Fill|Painted|Stroke)? + |wait|wavy|weight|whitespace|(device-)?width|word-spacing + |wrap(-reverse)? + |x{1,2}-(large|small) + |z-index|zero + |zoom(-in|-out)? + |((?xi:arabic-indic|armenian|bengali|cambodian|circle|cjk-decimal|cjk-earthly-branch|cjk-heavenly-stem|decimal-leading-zero|decimal|devanagari|disclosure-closed|disclosure-open|disc|ethiopic-numeric|georgian|gujarati|gurmukhi|hebrew|hiragana-iroha|hiragana|japanese-formal|japanese-informal|kannada|katakana-iroha|katakana|khmer|korean-hangul-formal|korean-hanja-formal|korean-hanja-informal|lao|lower-alpha|lower-armenian|lower-greek|lower-latin|lower-roman|malayalam|mongolian|myanmar|oriya|persian|simp-chinese-formal|simp-chinese-informal|square|tamil|telugu|thai|tibetan|trad-chinese-formal|trad-chinese-informal|upper-alpha|upper-armenian|upper-latin|upper-roman)))\\b`,name:"support.constant.property-value.less"},{match:"\\b(?i:sans-serif|serif|monospace|fantasy|cursive)\\b(?=\\s*[;,\\n}])",name:"support.constant.font-name.less"}]},"property-values":{patterns:[{include:"#comment-block"},{include:"#vendor-prefix"},{include:"#builtin-functions"},{include:"#color-functions"},{include:"#less-math"},{include:"#less-functions"},{include:"#less-variables"},{include:"#unicode-range"},{include:"#numeric-values"},{include:"#color-values"},{include:"#property-value-constants"},{include:"#literal-string"},{captures:{1:{name:"punctuation.separator.less"}},match:"(\\!)\\s*important",name:"keyword.other.important.less"}]},"pseudo-classes":{patterns:[{begin:"(:)(dir|lang)(?=\\()",captures:{1:{name:"punctuation.definition.entity.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"entity.other.attribute-name.pseudo-class.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#unquoted-string"}]}]},{begin:"(:)(not)(?=\\()",captures:{1:{name:"punctuation.definition.entity.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"entity.other.attribute-name.pseudo-class.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#selectors"}]}]},{begin:"(:)(nth(-last)?-(child|of-type))(?=\\()",captures:{1:{name:"punctuation.definition.entity.less"},2:{name:"entity.other.attribute-name.pseudo-class.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",name:"meta.group.less",patterns:[{match:"\\b(even|odd)\\b",name:"keyword.other.pseudo-class.less"},{captures:{1:{name:"keyword.other.unit.less"}},match:"(?:[-+]?(?:\\d+)?(n)(\\s*[-+]\\s*\\d+)?|[-+]?\\s*\\d+)",name:"constant.numeric.less"},{include:"#less-math"},{include:"#less-strings"},{include:"#less-variable-interpolation"}]}]},{begin:"(:)(host-context)(?=\\()",captures:{1:{name:"punctuation.definition.entity.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"entity.other.attribute-name.pseudo-class.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#selectors"}]}]},{captures:{1:{name:"punctuation.definition.entity.less"},2:{name:"entity.other.attribute-name.pseudo-class.less"}},match:"(:)(active|any|checked|default|disabled|empty|enabled|first(-(child|of-type))?|fullscreen|focus|host|hover|indeterminate|in-range|invalid|last-(child|of-type)|left|link|only-(child|of-type)|optional|out-of-range|read-(only|write)|required|right|root|scope|target|valid|visited)",name:"meta.function-call.less"}]},"pseudo-elements":{patterns:[{begin:"(::)(slotted)(?=\\()",captures:{1:{name:"punctuation.definition.entity.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"entity.other.attribute-name.pseudo-class.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#selectors"}]}]},{captures:{1:{name:"punctuation.definition.entity.less"},2:{name:"punctuation.definition.entity.less"},3:{name:"support.type.vendor-prefix.less"}},match:"(?:(:{1,2})(?:before|after|first-line|first-letter)|(::)(-(?:moz|ms|webkit)-)?(?:(-?(?:[[-\\w][^\\x{00}-\\x{7F}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))(?:[[-\\w][^\\x{00}-\\x{7F}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))*)))\\b",name:"entity.other.attribute-name.pseudo-element.less"}]},"qualified-name":{captures:{1:{name:"entity.name.constant.less"},2:{name:"entity.name.namespace.wildcard.less"},3:{name:"punctuation.separator.namespace.less"}},match:"(?:(-?(?:[[-\\w][^\\x{00}-\\x{7F}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))(?:[[_a-zA-Z][^\\x{00}-\\x{7F}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))*)|(\\*))?([|])(?!=)"},"regexp-function":{begin:"\\b(regexp)(?=\\()",end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"support.function.regexp.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",name:"meta.function-call.less",patterns:[{include:"#literal-string"}]}]},"resolution-type":{captures:{1:{name:"keyword.other.unit.less"}},match:"(?i:[-+]?(?:(?:\\d*\\.\\d+(?:[eE](?:[-+]?\\d+))*)|(?:[-+]?\\d+))(dpi|dpcm|dppx))\\b",name:"constant.numeric.less"},"rule-list":{patterns:[{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.block.begin.less"}},end:"(?=\\s*\\})",name:"meta.property-list.less",patterns:[{captures:{1:{name:"punctuation.terminator.rule.less"}},match:"\\s*(;)|(?=[})])"},{include:"#rule-list-body"},{include:"#less-extend"}]}]},"rule-list-body":{patterns:[{include:"#comment-block"},{include:"#comment-line"},{include:"#at-rules"},{include:"#less-variable-assignment"},{include:"#less-variable-interpolation"},{begin:"(?=[-a-z])",end:"$|(?![-a-z])",patterns:[{include:"#vendor-prefix"},{include:"#custom-property-name"},{include:"#filter-function"},{captures:{1:{name:"keyword.other.custom-property.prefix.less"},2:{name:"support.type.custom-property.name.less"}},match:"\\b(var-)(-?(?:[[-\\w][^\\x{00}-\\x{9f}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))(?:[[_a-zA-Z][^\\x{00}-\\x{9f}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))*)(?=\\s)",name:"invalid.deprecated.custom-property.less"},{begin:"\\bfont(-family)?(?!-)\\b",beginCaptures:{0:{name:"support.type.property-name.less"}},end:"\\s*(;)|(?=[})])",endCaptures:{1:{name:"punctuation.terminator.rule.less"}},name:"meta.property-name.less",patterns:[{captures:{1:{name:"punctuation.separator.key-value.less"},4:{name:"meta.property-value.less"}},match:"(((\\+_?)?):)([\\s\\t]*)"},{include:"#property-values"},{match:"-?(?:[[_a-zA-Z][^\\x{00}-\\x{9f}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))(?:[[-\\w][^\\x{00}-\\x{9f}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))*(\\s+-?(?:[[_a-zA-Z][^\\x{00}-\\x{9f}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))(?:[[-\\w][^\\x{00}-\\x{9f}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))*)*",name:"string.unquoted.less"},{match:",",name:"punctuation.separator.less"}]},{begin:"\\banimation(-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function))?\\b",beginCaptures:{0:{name:"support.type.property-name.less"}},end:"\\s*(;)|(?=[})])",endCaptures:{1:{name:"punctuation.terminator.rule.less"}},patterns:[{begin:"(((\\+_?)?):)(?=[\\s\\t]*)",beginCaptures:{1:{name:"punctuation.separator.key-value.less"}},captures:{1:{name:"punctuation.definition.arbitrary-repetition.less"}},contentName:"meta.property-value.less",end:"(?=\\s*(;)|(?=[})]))",patterns:[{match:"\\b(linear|ease(-in)?(-out)?|step-(start|end)|none|forwards|backwards|both|normal|alternate(-reverse)?|reverse|running|paused)\\b",name:"support.constant.property-value.less"},{include:"#cubic-bezier-function"},{include:"#steps-function"},{include:"#time-type"},{include:"#number-type"},{match:"-?(?:[_a-zA-Z]|[^\\x{00}-\\x{7F}]|(?:(:?\\\\[0-9a-f]{1,6}(\\r\\n|[\\s\\t\\r\\n\\f])?)|\\\\[^\\r\\n\\f0-9a-f]))(?:[-_a-zA-Z0-9]|[^\\x{00}-\\x{7F}]|(?:(:?\\\\[0-9a-f]{1,6}(\\r\\n|[\\t\\r\\n\\f])?)|\\\\[^\\r\\n\\f0-9a-f]))*",name:"variable.other.constant.animation-name.less"},{include:"#literal-string"},{include:"#property-values"},{match:"\\s*(?:(,))"}]}]},{begin:"\\b(transition(-(property|duration|delay|timing-function))?)\\b",beginCaptures:{0:{name:"meta.property-name.less"},1:{name:"support.type.property-name.less"}},end:"\\s*(;)|(?=[})])",endCaptures:{1:{name:"punctuation.terminator.rule.less"}},patterns:[{captures:{1:{name:"punctuation.separator.key-value.less"},4:{name:"meta.property-value.less"}},match:"(((\\+_?)?):)([\\s\\t]*)"},{include:"#time-type"},{include:"#property-values"},{include:"#cubic-bezier-function"},{include:"#steps-function"},{captures:{1:{name:"punctuation.definition.arbitrary-repetition.less"}},match:"\\s*(?:(,))"}]},{begin:"\\bfilter\\b",beginCaptures:{0:{name:"support.type.property-name.less"}},end:"\\s*(;)|(?=[})])",endCaptures:{1:{name:"punctuation.terminator.rule.less"}},name:"meta.property-name.less",patterns:[{captures:{1:{name:"punctuation.separator.key-value.less"},4:{name:"meta.property-value.less"}},match:"(((\\+_?)?):)([\\s\\t]*)"},{match:"\\b(inherit|initial|unset|none)\\b",name:"meta.property-value.less"},{include:"#filter-functions"}]},{begin:"\\bwill-change\\b",beginCaptures:{0:{name:"support.type.property-name.less"}},end:"\\s*(;)|(?=[})])",endCaptures:{1:{name:"punctuation.terminator.rule.less"}},name:"meta.property-name.less",patterns:[{captures:{1:{name:"punctuation.separator.key-value.less"},4:{name:"meta.property-value.less"}},match:"(((\\+_?)?):)([\\s\\t]*)"},{match:"unset|initial|inherit|will-change|auto|scroll-position|contents",name:"invalid.illegal.property-value.less"},{match:"-?(?:[[-\\w][^\\x{00}-\\x{9f}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))(?:[[_a-zA-Z][^\\x{00}-\\x{9f}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))*",name:"support.constant.property-value.less"},{captures:{1:{name:"punctuation.definition.arbitrary-repetition.less"}},match:"\\s*(?:(,))"}]},{begin:"\\bcounter-(increment|(re)?set)\\b",beginCaptures:{0:{name:"support.type.property-name.less"}},end:"\\s*(;)|(?=[})])",endCaptures:{1:{name:"punctuation.terminator.rule.less"}},name:"meta.property-name.less",patterns:[{captures:{1:{name:"punctuation.separator.key-value.less"},4:{name:"meta.property-value.less"}},match:"(((\\+_?)?):)([\\s\\t]*)"},{match:"-?(?:[[-\\w][^\\x{00}-\\x{9f}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))(?:[[_a-zA-Z][^\\x{00}-\\x{9f}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))*",name:"entity.name.constant.counter-name.less"},{include:"#integer-type"},{match:"unset|initial|inherit|auto",name:"invalid.illegal.property-value.less"}]},{match:"(?x)\\b( accent-height | align-content | align-items | align-self | alignment-baseline | all | animation-timing-function | animation-play-state | animation-name | animation-iteration-count | animation-fill-mode | animation-duration | animation-direction | animation-delay | animation | appearance | ascent | azimuth | backface-visibility | background-size | background-repeat-y | background-repeat-x | background-repeat | background-position-y | background-position-x | background-position | background-origin | background-image | background-color | background-clip | background-blend-mode | background-attachment | background | baseline-shift | begin | bias | blend-mode | border-((top|right|bottom|left)-)?(width|style|color) | border-(top|bottom)-(right|left)-radius | border-image-(width|source|slice|repeat|outset) | border-(top|right|bottom|left|collapse|image|radius|spacing) | border | bottom | box-(align|decoration-break|direction|flex|ordinal-group|orient|pack|shadow|sizing) | break-(after|before|inside) | caption-side | clear | clip-path | clip-rule | clip | color(-(interpolation(-filters)?|profile|rendering))? | columns | column-(break-before|count|fill|gap|(rule(-(color|style|width))?)|span|width) | contain | content | counter-(increment|reset) | cursor | (c|d|f)(x|y) | direction | display | divisor | dominant-baseline | dur | elevation | empty-cells | enable-background | end | fallback | fill(-(opacity|rule))? | filter | flex(-(align|basis|direction|flow|grow|item-align|line-pack|negative|order|pack|positive|preferred-size|shrink|wrap))? | float | flood-(color|opacity) | font-display | font-family | font-feature-settings | font-kerning | font-language-override | font-size(-adjust)? | font-smoothing | font-stretch | font-style | font-synthesis | font-variant(-(alternates|caps|east-asian|ligatures|numeric|position))? | font-weight | font | fr | glyph-orientation-(horizontal|vertical) | grid-(area|gap) | grid-auto-(columns|flow|rows) | grid-(column|row)(-(end|gap|start))? | grid-template(-(areas|columns|rows))? | height | hyphens | image-(orientation|rendering|resolution) | isolation | justify-content | kerning | left | letter-spacing | lighting-color | line-(box-contain|break|clamp|height) | list-style(-(image|position|type))? | margin(-(bottom|left|right|top))? | marker(-(end|mid|start))? | mask(-(clip||composite|image|origin|position|repeat|size|type))? | (max|min)-(height|width) | mix-blend-mode | nbsp-mode | negative | object-(fit|position) | opacity | operator | order | orphans | outline(-(color|offset|style|width))? | overflow(-(scrolling|wrap|x|y))? | pad(ding(-(bottom|left|right|top))?)? | page(-break-(after|before|inside))? | paint-order | pause(-(after|before))? | perspective(-origin(-(x|y))?)? | pitch(-range)? | pointer-events | position | prefix | quotes | range | resize | right | rotate | scale | scroll-behavior | shape-(image-threshold|margin|outside|rendering) | size | speak(-as)? | src | stop-(color|opacity) | stroke(-(dash(array|offset)|line(cap|join)|miterlimit|opacity|width))? | suffix | symbols | system | tab-size | table-layout | tap-highlight-color | text-align(-last)? | text-decoration(-(color|line|style))? | text-emphasis(-(color|position|style))? | text-(anchor|fill-color|height|indent|justify|orientation|overflow|rendering|shadow|transform|underline-position) | top | touch-action | transform(-origin(-(x|y))?) | transform(-style)? | transition(-(delay|duration|property|timing-function))? | translate | unicode-(bidi|range) | user-(drag|select) | vertical-align | visibility | white-space | widows | width | will-change | word-(break|spacing|wrap) | writing-mode | z-index | zoom )\\b",name:"support.type.property-name.less"},{include:"$self"}]},{begin:"\\b(((\\+_?)?):)([\\s\\t]*)",captures:{1:{name:"punctuation.separator.key-value.less"},4:{name:"meta.property-value.less"}},contentName:"meta.property-value.less",end:"\\s*(;)|(?=[})])",endCaptures:{1:{name:"punctuation.terminator.rule.less"}},patterns:[{include:"#property-values"}]},{include:"$self"}]},selector:{patterns:[{begin:"(?=[>~+/\\.*#a-zA-Z\\[&]|(\\:{1,2}[^\\s])|@\\{)",contentName:"meta.selector.less",end:"(?=@(?!\\{)|[{;])",patterns:[{include:"#comment-line"},{include:"#selectors"},{include:"#less-namespace-accessors"},{include:"#less-variable-interpolation"},{captures:{1:{name:"punctuation.separator.less"}},match:"(\\!)\\s*important",name:"keyword.other.important.less"}]}]},selectors:{patterns:[{match:"\\b([a-z](?:(?:[-_a-z0-9\\x{00B7}]|\\\\\\.|[[\\x{00C0}-\\x{00D6}][\\x{00D8}-\\x{00F6}][\\x{00F8}-\\x{02FF}][\\x{0300}-\\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}]]))*-(?:(?:[-_a-z0-9\\x{00B7}]|\\\\\\.|[[\\x{00C0}-\\x{00D6}][\\x{00D8}-\\x{00F6}][\\x{00F8}-\\x{02FF}][\\x{0300}-\\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}]]))*)\\b",name:"entity.name.tag.custom.less"},{match:"(?x)\\b( a | abbr | acronym | address | applet | area | article | aside | audio | b | base | basefont | bdi | bdo | big | blockquote | body | br | button | canvas | caption | circle | cite | clipPath | code | col | colgroup | content | data | dataList | dd | defs | del | details | dfn | dialog | dir | div | dl | dt | element | ellipse | em | embed | eventsource | fieldset | figcaption | figure | filter | footer | foreignObject | form | frame | frameset | g | glyph | glyphRef | h1 | h2 | h3 | h4 | h5 | h6 | head | header | hgroup | hr | html | i | iframe | image | img | input | ins | isindex | kbd | keygen | label | legend | li | line | linearGradient | link | main | map | mark | marker | mask | menu | meta | meter | nav | noframes | noscript | object | ol | optgroup | option | output | p | param | path | pattern | picture | polygon | polyline | pre | progress | q | radialGradient | rect | rp | ruby | rt | rtc | s | samp | script | section | select | shadow | small | source | span | stop | strike | strong | style | sub | summary | sup | svg | switch | symbol | table | tbody | td | template | textarea | textPath | tfoot | th | thead | time | title | tr | track | tref | tspan | tt | u | ul | use | var | video | wbr | xmp )\\b",name:"entity.name.tag.less"},{begin:"(\\.)",beginCaptures:{1:{name:"punctuation.definition.entity.less"}},end:"(?![-\\w]|[^\\x{00}-\\x{9f}]|\\\\([A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9])|(\\@(?=\\{)))",name:"entity.other.attribute-name.class.less",patterns:[{include:"#less-variable-interpolation"}]},{begin:"(#)",beginCaptures:{1:{name:"punctuation.definition.entity.less"}},end:"(?![-\\w]|[^\\x{00}-\\x{9f}]|\\\\([A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9])|(\\@(?=\\{)))",name:"entity.other.attribute-name.id.less",patterns:[{include:"#less-variable-interpolation"}]},{begin:"(&)",beginCaptures:{1:{name:"punctuation.definition.entity.less"}},contentName:"entity.other.attribute-name.parent.less",end:"(?![-\\w]|[^\\x{00}-\\x{9f}]|\\\\([A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9])|(\\@(?=\\{)))",name:"entity.other.attribute-name.parent.less",patterns:[{include:"#less-variable-interpolation"},{include:"#selectors"}]},{include:"#pseudo-elements"},{include:"#pseudo-classes"},{include:"#less-extend"},{match:"(?!\\+_?:)(?:>{1,3}|[~+])(?![>~+;}])",name:"punctuation.separator.combinator.less"},{match:"((?:>{1,3}|[~+])){2,}",name:"invalid.illegal.combinator.less"},{match:"\\/deep\\/",name:"invalid.illegal.combinator.less"},{begin:"\\[",captures:{0:{name:"punctuation.definition.entity.less"}},end:"\\]",name:"meta.attribute-selector.less",patterns:[{include:"#less-variable-interpolation"},{include:"#qualified-name"},{match:"(-?(?:[[_a-zA-Z][^\\x{00}-\\x{7F}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))(?:[[-\\w][^\\x{00}-\\x{7F}]]|(?:\\\\\\h{1,6}[\\s\\t\\n\\f]?|\\\\[^\\n\\f\\h]))*)",name:"entity.other.attribute-name.less"},{begin:"\\s*([~*|^$]?=)\\s*",captures:{1:{name:"keyword.operator.attribute-selector.less"}},end:"(?=(\\s|\\]))",patterns:[{include:"#less-variable-interpolation"},{match:`[^\\s\\]\\['"]`,name:"string.unquoted.less"},{include:"#literal-string"},{captures:{1:{name:"keyword.other.less"}},match:"(?:\\s+([iI]))?"},{match:"\\]",name:"punctuation.definition.entity.less"}]}]},{captures:{1:{name:"punctuation.definition.arbitrary-repetition.less"}},match:"\\s*(?:(,))"},{match:"\\*",name:"entity.name.tag.wildcard.less"}]},"shape-functions":{patterns:[{begin:"\\b(rect)(?=\\()",beginCaptures:{0:{name:"support.function.shape.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{match:"\\bauto\\b",name:"support.constant.property-value.less"},{include:"#length-type"},{include:"#comma-delimiter"}]}]},{begin:"\\b(inset)(?=\\()",beginCaptures:{0:{name:"support.function.shape.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{match:"\\bround\\b",name:"keyword.other.less"},{include:"#length-type"},{include:"#percentage-type"}]}]},{begin:"\\b(circle|ellipse)(?=\\()",beginCaptures:{0:{name:"support.function.shape.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{match:"\\bat\\b",name:"keyword.other.less"},{match:"\\b(top|right|bottom|left|center|closest-side|farthest-side)\\b",name:"support.constant.property-value.less"},{include:"#length-type"},{include:"#percentage-type"}]}]},{begin:"\\b(polygon)(?=\\()",beginCaptures:{0:{name:"support.function.shape.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{match:"\\b(nonzero|evenodd)\\b",name:"support.constant.property-value.less"},{include:"#length-type"},{include:"#percentage-type"}]}]}]},"steps-function":{begin:"\\b(steps)(?=\\()",beginCaptures:{0:{name:"support.function.timing.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#comma-delimiter"},{include:"#integer-type"},{match:"(end|middle|start)",name:"support.keyword.timing-direction.less"}]}]},"string-content":{patterns:[{include:"#less-variable-interpolation"},{match:"\\\\\\s*\\n",name:"constant.character.escape.newline.less"},{match:"\\\\(\\h{1,6}|.)",name:"constant.character.escape.less"}]},"symbols-function":{begin:"\\b(symbols)(?=\\()",beginCaptures:{1:{name:"support.function.counter.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{match:"\\b(cyclic|numeric|alphabetic|symbolic|fixed)\\b",name:"support.constant.symbol-type.less"},{include:"#comma-delimiter"},{include:"#literal-string"},{include:"#image-type"}]}]},"time-type":{captures:{1:{name:"keyword.other.unit.less"}},match:"(?i:[-+]?(?:(?:\\d*\\.\\d+(?:[eE](?:[-+]?\\d+))*)|(?:[-+]?\\d+))(s|ms))\\b",name:"constant.numeric.less"},"transform-functions":{patterns:[{begin:"\\b(matrix3d|scale3d|matrix|scale)(?=\\()",beginCaptures:{0:{name:"support.function.transform.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#comma-delimiter"},{include:"#number-type"},{include:"#less-variables"},{include:"#var-function"}]}]},{begin:"\\b(translate(3d)?)(?=\\()",beginCaptures:{0:{name:"support.function.transform.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#comma-delimiter"},{include:"#percentage-type"},{include:"#length-type"},{include:"#number-type"},{include:"#less-variables"},{include:"#var-function"}]}]},{begin:"\\b(translate[XY])(?=\\()",beginCaptures:{0:{name:"support.function.transform.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#percentage-type"},{include:"#length-type"},{include:"#number-type"},{include:"#less-variables"},{include:"#var-function"}]}]},{begin:"\\b(rotate[XYZ]?|skew[XY])(?=\\()",beginCaptures:{0:{name:"support.function.transform.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#angle-type"},{include:"#less-variables"},{include:"#calc-function"},{include:"#var-function"}]}]},{begin:"\\b(skew)(?=\\()",beginCaptures:{0:{name:"support.function.transform.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#comma-delimiter"},{include:"#angle-type"},{include:"#less-variables"},{include:"#calc-function"},{include:"#var-function"}]}]},{begin:"\\b(translateZ|perspective)(?=\\()",beginCaptures:{0:{name:"support.function.transform.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#length-type"},{include:"#less-variables"},{include:"#calc-function"},{include:"#var-function"}]}]},{begin:"\\b(rotate3d)(?=\\()",beginCaptures:{0:{name:"support.function.transform.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#comma-delimiter"},{include:"#angle-type"},{include:"#number-type"},{include:"#less-variables"},{include:"#calc-function"},{include:"#var-function"}]}]},{begin:"\\b(scale[XYZ])(?=\\()",beginCaptures:{0:{name:"support.function.transform.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#comma-delimiter"},{include:"#number-type"},{include:"#less-variables"},{include:"#calc-function"},{include:"#var-function"}]}]}]},"unicode-range":{captures:{1:{name:"support.constant.unicode-range.prefix.less"},2:{name:"constant.codepoint-range.less"},3:{name:"punctuation.section.range.less"}},match:"(?i)(u\\+)([0-9a-f?]{1,6}(?:(-)[0-9a-f]{1,6})?)",name:"support.unicode-range.less"},"unquoted-string":{match:`[^\\s'"]`,name:"string.unquoted.less"},"url-function":{begin:"\\b(url)(?=\\()",beginCaptures:{1:{name:"support.function.url.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#less-variables"},{include:"#literal-string"},{include:"#unquoted-string"},{include:"#var-function"}]}]},"var-function":{patterns:[{begin:"\\b(var)(?=\\()",beginCaptures:{1:{name:"support.function.var.less"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.group.end.less"}},name:"meta.function-call.less",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.group.begin.less"}},end:"(?=\\))",patterns:[{include:"#comma-delimiter"},{include:"#custom-property-name"},{include:"#less-variables"}]}]}]},"vendor-prefix":{match:"-(?:webkit|moz(-osx)?|ms|o)-",name:"support.type.vendor-prefix.less"}},scopeName:"source.css.less"});var ni=[ei];const ti=Object.freeze({displayName:"TypeScript",name:"typescript",patterns:[{include:"#directives"},{include:"#statements"},{include:"#shebang"}],repository:{"access-modifier":{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(abstract|declare|override|public|protected|private|readonly|static)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"storage.modifier.ts"},"after-operator-block-as-object-literal":{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"}},name:"meta.objectliteral.ts",patterns:[{include:"#object-member"}]},"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"}]},"array-literal":{begin:"\\s*(\\[)",beginCaptures:{1:{name:"meta.brace.square.ts"}},end:"\\]",endCaptures:{0:{name:"meta.brace.square.ts"}},name:"meta.array.literal.ts",patterns:[{include:"#expression"},{include:"#punctuation-comma"}]},"arrow-function":{patterns:[{captures:{1:{name:"storage.modifier.async.ts"},2:{name:"variable.parameter.ts"}},match:"(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(\\basync)\\s+)?([_$[:alpha:]][_$[:alnum:]]*)\\s*(?==>)",name:"meta.arrow.ts"},{begin:`(?x) (?: + (?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(\\basync) +)? ((?<![})!\\]])\\s* + (?= + # sure shot arrow functions even if => is on new line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? + [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* + ( + ([)]\\s*:) | # (): + ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param: + ) +) | + +# arrow function possible to detect only with => on same line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters + \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) # parameters + (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type + \\s*=> # arrow operator +) + ) +)`,beginCaptures:{1:{name:"storage.modifier.async.ts"}},end:"(?==>|\\{|(^\\s*(export|function|class|interface|let|var|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|const|import|enum|namespace|module|type|abstract|declare)\\s+))",name:"meta.arrow.ts",patterns:[{include:"#comment"},{include:"#type-parameters"},{include:"#function-parameters"},{include:"#arrow-return-type"},{include:"#possibly-arrow-return-type"}]},{begin:"=>",beginCaptures:{0:{name:"storage.type.function.arrow.ts"}},end:"((?<=\\}|\\S)(?<!=>)|((?!\\{)(?=\\S)))(?!\\/[\\/\\*])",name:"meta.arrow.ts",patterns:[{include:"#single-line-comment-consuming-line-ending"},{include:"#decl-block"},{include:"#expression"}]}]},"arrow-return-type":{begin:"(?<=\\))\\s*(:)",beginCaptures:{1:{name:"keyword.operator.type.annotation.ts"}},end:"(?==>|\\{|(^\\s*(export|function|class|interface|let|var|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|const|import|enum|namespace|module|type|abstract|declare)\\s+))",name:"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"}]},"async-modifier":{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(async)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"storage.modifier.async.ts"},"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"}]},"boolean-literal":{patterns:[{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))true(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"constant.language.boolean.true.ts"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))false(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"constant.language.boolean.false.ts"}]},brackets:{patterns:[{begin:"{",end:"}|(?=\\*/)",patterns:[{include:"#brackets"}]},{begin:"\\[",end:"\\]|(?=\\*/)",patterns:[{include:"#brackets"}]}]},cast:{patterns:[{captures:{1:{name:"meta.brace.angle.ts"},2:{name:"storage.modifier.ts"},3:{name:"meta.brace.angle.ts"}},match:"\\s*(<)\\s*(const)\\s*(>)",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"}},name:"cast.expr.ts",patterns:[{include:"#type"}]},{begin:"(?:(?<=^))\\s*(<)(?=[_$[:alpha:]][_$[:alnum:]]*\\s*>)",beginCaptures:{1:{name:"meta.brace.angle.ts"}},end:"(\\>)",endCaptures:{1:{name:"meta.brace.angle.ts"}},name:"cast.expr.ts",patterns:[{include:"#type"}]}]},"class-declaration":{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:"(?<=\\})",name:"meta.class.ts",patterns:[{include:"#class-declaration-or-expression-patterns"}]},"class-declaration-or-expression-patterns":{patterns:[{include:"#comment"},{include:"#class-or-interface-heritage"},{captures:{0:{name:"entity.name.type.class.ts"}},match:"[_$[:alpha:]][_$[:alnum:]]*"},{include:"#type-parameters"},{include:"#class-or-interface-body"}]},"class-expression":{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(class)\\b(?=\\s+|[<{]|\\/[\\/*])",beginCaptures:{1:{name:"storage.modifier.ts"},2:{name:"storage.type.class.ts"}},end:"(?<=\\})",name:"meta.class.ts",patterns:[{include:"#class-declaration-or-expression-patterns"}]},"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|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\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"}]},"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"},{captures:{1:{name:"entity.name.type.module.ts"},2:{name:"punctuation.accessor.ts"},3:{name:"punctuation.accessor.optional.ts"}},match:"([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))(?=\\s*[_$[:alpha:]][_$[:alnum:]]*(\\s*\\??\\.\\s*[_$[:alpha:]][_$[:alnum:]]*)*\\s*)"},{captures:{1:{name:"entity.other.inherited-class.ts"}},match:"([_$[:alpha:]][_$[:alnum:]]*)"},{include:"#expressionPunctuations"}]},comment:{patterns:[{begin:"/\\*\\*(?!/)",beginCaptures:{0:{name:"punctuation.definition.comment.ts"}},end:"\\*/",endCaptures:{0:{name:"punctuation.definition.comment.ts"}},name:"comment.block.documentation.ts",patterns:[{include:"#docblock"}]},{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"}},name:"comment.block.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"}},contentName:"comment.line.double-slash.ts",end:"(?=$)"}]},"control-statement":{patterns:[{include:"#switch-statement"},{include:"#for-loop"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(catch|finally|throw|try)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.control.trycatch.ts"},{captures:{1:{name:"keyword.control.loop.ts"},2:{name:"entity.name.label.ts"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(break|continue|goto)\\s+([_$[:alpha:]][_$[:alnum:]]*)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(break|continue|do|goto|while)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.control.loop.ts"},{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(return)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",beginCaptures:{0:{name:"keyword.control.flow.ts"}},end:"(?=[;}]|$|;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))",patterns:[{include:"#expression"}]},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(case|default|switch)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.control.switch.ts"},{include:"#if-statement"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(else|if)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.control.conditional.ts"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(with)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.control.with.ts"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(package)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.control.ts"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(debugger)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.other.debugger.ts"}]},"decl-block":{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.block.ts"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.block.ts"}},name:"meta.block.ts",patterns:[{include:"#statements"}]},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"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(declare|export)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"storage.modifier.ts"}]},decorator:{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))\\@",beginCaptures:{0:{name:"punctuation.decorator.ts"}},end:"(?=\\s)",name:"meta.decorator.ts",patterns:[{include:"#expression"}]},"destructuring-const":{patterns:[{begin:"(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\{)",end:"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",name:"meta.object-binding-pattern-variable.ts",patterns:[{include:"#object-binding-pattern-const"},{include:"#type-annotation"},{include:"#comment"}]},{begin:"(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\[)",end:"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",name:"meta.array-binding-pattern-variable.ts",patterns:[{include:"#array-binding-pattern-const"},{include:"#type-annotation"},{include:"#comment"}]}]},"destructuring-parameter":{patterns:[{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"}},name:"meta.parameter.object-binding-pattern.ts",patterns:[{include:"#parameter-object-binding-element"}]},{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"}},name:"meta.paramter.array-binding-pattern.ts",patterns:[{include:"#parameter-binding-element"},{include:"#punctuation-comma"}]}]},"destructuring-parameter-rest":{captures:{1:{name:"keyword.operator.rest.ts"},2:{name:"variable.parameter.ts"}},match:"(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)"},"destructuring-variable":{patterns:[{begin:"(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\{)",end:"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",name:"meta.object-binding-pattern-variable.ts",patterns:[{include:"#object-binding-pattern"},{include:"#type-annotation"},{include:"#comment"}]},{begin:"(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\[)",end:"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",name:"meta.array-binding-pattern-variable.ts",patterns:[{include:"#array-binding-pattern"},{include:"#type-annotation"},{include:"#comment"}]}]},"destructuring-variable-rest":{captures:{1:{name:"keyword.operator.rest.ts"},2:{name:"meta.definition.variable.ts variable.other.readwrite.ts"}},match:"(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)"},"destructuring-variable-rest-const":{captures:{1:{name:"keyword.operator.rest.ts"},2:{name:"meta.definition.variable.ts variable.other.constant.ts"}},match:"(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)"},directives:{begin:"^(///)\\s*(?=<(reference|amd-dependency|amd-module)(\\s+(path|types|no-default-lib|lib|name|resolution-mode)\\s*=\\s*((\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)))+\\s*/>\\s*$)",beginCaptures:{1:{name:"punctuation.definition.comment.ts"}},end:"(?=$)",name:"comment.line.triple-slash.directive.ts",patterns:[{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"}},name:"meta.tag.ts",patterns:[{match:"path|types|no-default-lib|lib|name|resolution-mode",name:"entity.other.attribute-name.directive.ts"},{match:"=",name:"keyword.operator.assignment.ts"},{include:"#string"}]}]},docblock:{patterns:[{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"constant.language.access-type.jsdoc"}},match:`(?x) +((@)(?:access|api)) +\\s+ +(private|protected|public) +\\b`},{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) +((@)author) +\\s+ +( + [^@\\s<>*/] + (?:[^@<>*/]|\\*[^/])* +) +(?: + \\s* + (<) + ([^>\\s]+) + (>) +)?`},{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"}},match:`(?x) +((@)borrows) \\s+ +((?:[^@\\s*/]|\\*[^/])+) # <that namepath> +\\s+ (as) \\s+ # as +((?:[^@\\s*/]|\\*[^/])+) # <this namepath>`},{begin:"((@)example)\\s+",beginCaptures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"}},end:"(?=@|\\*/)",name:"meta.example.jsdoc",patterns:[{match:"^\\s\\*\\s+"},{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"}},contentName:"constant.other.description.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"}}},{captures:{0:{name:"source.embedded.ts"}},match:"[^\\s@*](?:[^*]|\\*[^/])*"}]},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"constant.language.symbol-type.jsdoc"}},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:"variable.other.link.underline.jsdoc"},4:{name:"entity.name.type.instance.jsdoc"}},match:`(?x) +((@)see) +\\s+ +(?: + # URL + ( + (?=https?://) + (?:[^\\s*]|\\*[^/])+ + ) + | + # JSDoc namepath + ( + (?! + # Avoid matching bare URIs (also acceptable as links) + https?:// + | + # Avoid matching {@inline tags}; we match those below + (?:\\[[^\\[\\]]*\\])? # Possible description [preceding]{@tag} + {@(?:link|linkcode|linkplain|tutorial)\\b + ) + # Matched namepath + (?:[^@\\s*/]|\\*[^/])+ + ) +)`},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"variable.other.jsdoc"}},match:`(?x) +((@)template) +\\s+ +# One or more valid identifiers +( + [A-Za-z_$] # First character: non-numeric word character + [\\w$.\\[\\]]* # Rest of identifier + (?: # Possible list of additional identifiers + \\s* , \\s* + [A-Za-z_$] + [\\w$.\\[\\]]* + )* +)`},{begin:"(?x)((@)template)\\s+(?={)",beginCaptures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"}},end:"(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",patterns:[{include:"#jsdoctype"},{match:"([A-Za-z_$][\\w$.\\[\\]]*)",name:"variable.other.jsdoc"}]},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"variable.other.jsdoc"}},match:`(?x) +( + (@) + (?:arg|argument|const|constant|member|namespace|param|var) +) +\\s+ +( + [A-Za-z_$] + [\\w$.\\[\\]]* +)`},{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"},{match:"(?:[^@\\s*/]|\\*[^/])+",name:"entity.name.type.instance.jsdoc"}]},{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"},{match:"([A-Za-z_$][\\w$.\\[\\]]*)",name:"variable.other.jsdoc"},{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"}},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/])+)?|(?=\\*/))`,name:"variable.other.jsdoc"}]},{begin:`(?x) +( + (@) + (?:define|enum|exception|export|extends|lends|implements|modifies + |namespace|private|protected|returns?|satisfies|suppress|this|throws|type + |yields?) +) +\\s+(?={)`,beginCaptures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"}},end:"(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",patterns:[{include:"#jsdoctype"}]},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"entity.name.type.instance.jsdoc"}},match:`(?x) +( + (@) + (?:alias|augments|callback|constructs|emits|event|fires|exports? + |extends|external|function|func|host|lends|listens|interface|memberof!? + |method|module|mixes|mixin|name|requires|see|this|typedef|uses) +) +\\s+ +( + (?: + [^{}@\\s*] | \\*[^/] + )+ +)`},{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"}},contentName:"variable.other.jsdoc",end:"(\\3)|(?=$|\\*/)",endCaptures:{0:{name:"variable.other.jsdoc"},1:{name:"punctuation.definition.string.end.jsdoc"}}},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"variable.other.jsdoc"}},match:"((@)(?:default(?:value)?|license|tutorial|variation|version))\\s+([^\\s*]+)"},{captures:{1:{name:"punctuation.definition.block.tag.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",name:"storage.type.class.jsdoc"},{include:"#inline-tags"},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"}},match:"((@)(?:[_$[:alpha:]][_$[:alnum:]]*))(?=\\s+)"}]},"enum-declaration":{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:"(?<=\\})",name:"meta.enum.declaration.ts",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"}]}]},"export-declaration":{patterns:[{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"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(export)\\s+(as)\\s+(namespace)\\s+([_$[:alpha:]][_$[:alnum:]]*)"},{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|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))",name:"meta.export.default.ts",patterns:[{include:"#interface-declaration"},{include:"#expression"}]},{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(export)(?:\\s+(type))?\\b(?!(\\$)|(\\s*:))((?=\\s*[\\{*])|((?=\\s*[_$[:alpha:]][_$[:alnum:]]*(\\s|,))(?!\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b)))",beginCaptures:{1:{name:"keyword.control.export.ts"},2:{name:"keyword.control.type.ts"}},end:"(?=$|;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))",name:"meta.export.ts",patterns:[{include:"#import-export-declaration"}]}]},expression:{patterns:[{include:"#expressionWithoutIdentifiers"},{include:"#identifiers"},{include:"#expressionPunctuations"}]},"expression-inside-possibly-arrow-parens":{patterns:[{include:"#expressionWithoutIdentifiers"},{include:"#comment"},{include:"#string"},{include:"#decorator"},{include:"#destructuring-parameter"},{captures:{1:{name:"storage.modifier.ts"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|protected|private|readonly)\\s+(?=(override|public|protected|private|readonly)\\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:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)(?=\\s* +# function assignment | +(=\\s*( + ((async\\s+)?( + (function\\s*[(<*]) | + (function\\s+) | + ([_$[:alpha:]][_$[:alnum:]]*\\s*=>) + )) | + ((async\\s*)?( + ((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + # sure shot arrow functions even if => is on new line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? + [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* + ( + ([)]\\s*:) | # (): + ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param: + ) +) | + +# arrow function possible to detect only with => on same line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters + \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) # parameters + (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type + \\s*=> # arrow operator +) + )) +)) | +# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) => +(:\\s*( + (<) | + ([(]\\s*( + ([)]) | + (\\.\\.\\.) | + ([_$[:alnum:]]+\\s*( + ([:,?=])| + ([)]\\s*=>) + )) + )) +)) | +(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) | +(:\\s*((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) | +(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*( + ((async\\s+)?( + (function\\s*[(<*]) | + (function\\s+) | + ([_$[:alpha:]][_$[:alnum:]]*\\s*=>) + )) | + ((async\\s*)?( + ((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + # sure shot arrow functions even if => is on new line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? + [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* + ( + ([)]\\s*:) | # (): + ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param: + ) +) | + +# arrow function possible to detect only with => on same line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters + \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) # parameters + (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type + \\s*=> # arrow operator +) + )) +)))`},{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"}},match:"(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)(?=\\s*[:,]|$)"},{include:"#type-annotation"},{include:"#variable-initializer"},{match:",",name:"punctuation.separator.parameter.ts"},{include:"#identifiers"},{include:"#expressionPunctuations"}]},"expression-operators":{patterns:[{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(await)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.control.flow.ts"},{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(yield)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?=\\s*\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*\\*)",beginCaptures:{1:{name:"keyword.control.flow.ts"}},end:"\\*",endCaptures:{0:{name:"keyword.generator.asterisk.ts"}},patterns:[{include:"#comment"}]},{captures:{1:{name:"keyword.control.flow.ts"},2:{name:"keyword.generator.asterisk.ts"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(yield)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?:\\s*(\\*))?"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))delete(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.operator.expression.delete.ts"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))in(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?!\\()",name:"keyword.operator.expression.in.ts"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))of(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?!\\()",name:"keyword.operator.expression.of.ts"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))instanceof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.operator.expression.instanceof.ts"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))new(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.operator.new.ts"},{include:"#typeof-operator"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))void(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.operator.expression.void.ts"},{captures:{1:{name:"keyword.control.as.ts"},2:{name:"storage.modifier.ts"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+(const)(?=\\s*($|[;,:})\\]]))"},{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(as)|(satisfies))\\s+",beginCaptures:{1:{name:"keyword.control.as.ts"},2:{name:"keyword.control.satisfies.ts"}},end:"(?=^|[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as|satisfies)\\s+)|(\\s+\\<))",patterns:[{include:"#type"}]},{match:"\\.\\.\\.",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"},{captures:{1:{name:"keyword.operator.logical.ts"},2:{name:"keyword.operator.assignment.compound.ts"},3:{name:"keyword.operator.arithmetic.ts"}},match:"(?<=[_$[:alnum:]])(\\!)\\s*(?:(/=)|(?:(/)(?![/*])))"},{match:"\\!|&&|\\|\\||\\?\\?",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"},{begin:"(?<=[_$[:alnum:])\\]])\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)+(?:(/=)|(?:(/)(?![/*]))))",end:"(?:(/=)|(?:(/)(?!\\*([^\\*]|(\\*[^\\/]))*\\*\\/)))",endCaptures:{1:{name:"keyword.operator.assignment.compound.ts"},2:{name:"keyword.operator.arithmetic.ts"}},patterns:[{include:"#comment"}]},{captures:{1:{name:"keyword.operator.assignment.compound.ts"},2:{name:"keyword.operator.arithmetic.ts"}},match:"(?<=[_$[:alnum:])\\]])\\s*(?:(/=)|(?:(/)(?![/*])))"}]},expressionPunctuations:{patterns:[{include:"#punctuation-comma"},{include:"#punctuation-accessor"}]},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"}]},"field-declaration":{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(?!\\$))|((?<!\\$)(?: + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3 + (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3 + (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3 + (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3 + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1 + (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1. + (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1 + (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1 +)(?!\\$))|(\\#?[_$[: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(?!\\$))|((?<!\\$)(?: + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3 + (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3 + (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3 + (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3 + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1 + (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1. + (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1 + (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1 +)(?!\\$))|(\\#?[_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(?:(?:(\\?)|(\\!))\\s*)?(=|:|;|,|$))))|(?<=\\})`,name:"meta.field.declaration.ts",patterns:[{include:"#variable-initializer"},{include:"#type-annotation"},{include:"#string"},{include:"#array-literal"},{include:"#numeric-literal"},{include:"#comment"},{captures:{1:{name:"meta.definition.property.ts entity.name.function.ts"},2:{name:"keyword.operator.optional.ts"},3:{name:"keyword.operator.definiteassignment.ts"}},match:`(?x)(\\#?[_$[:alpha:]][_$[:alnum:]]*)(?:(\\?)|(\\!))?(?=\\s*\\s* +# function assignment | +(=\\s*( + ((async\\s+)?( + (function\\s*[(<*]) | + (function\\s+) | + ([_$[:alpha:]][_$[:alnum:]]*\\s*=>) + )) | + ((async\\s*)?( + ((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + # sure shot arrow functions even if => is on new line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? + [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* + ( + ([)]\\s*:) | # (): + ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param: + ) +) | + +# arrow function possible to detect only with => on same line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters + \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) # parameters + (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type + \\s*=> # arrow operator +) + )) +)) | +# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) => +(:\\s*( + (<) | + ([(]\\s*( + ([)]) | + (\\.\\.\\.) | + ([_$[:alnum:]]+\\s*( + ([:,?=])| + ([)]\\s*=>) + )) + )) +)) | +(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) | +(:\\s*((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) | +(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*( + ((async\\s+)?( + (function\\s*[(<*]) | + (function\\s+) | + ([_$[:alpha:]][_$[:alnum:]]*\\s*=>) + )) | + ((async\\s*)?( + ((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + # sure shot arrow functions even if => is on new line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? + [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* + ( + ([)]\\s*:) | # (): + ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param: + ) +) | + +# arrow function possible to detect only with => on same line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters + \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) # parameters + (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type + \\s*=> # arrow operator +) + )) +)))`},{match:"\\#?[_$[:alpha:]][_$[:alnum:]]*",name:"meta.definition.property.ts variable.object.property.ts"},{match:"\\?",name:"keyword.operator.optional.ts"},{match:"\\!",name:"keyword.operator.definiteassignment.ts"}]},"for-loop":{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))for(?=((\\s+|(\\s*\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*))await)?\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)?(\\())",beginCaptures:{0:{name:"keyword.control.loop.ts"}},end:"(?<=\\))",patterns:[{include:"#comment"},{match:"await",name:"keyword.control.loop.ts"},{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"}]}]},"function-body":{patterns:[{include:"#comment"},{include:"#type-parameters"},{include:"#function-parameters"},{include:"#return-type"},{include:"#type-function-return-type"},{include:"#decl-block"},{match:"\\*",name:"keyword.generator.asterisk.ts"}]},"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:[{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*)?\\())",name:"meta.function-call.ts",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:[{begin:"(?=(([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))",end:"(?=(<\\s*[\\{\\[\\(]\\s*$))",name:"meta.function-call.ts",patterns:[{include:"#function-call-target"}]},{include:"#comment"},{include:"#function-call-optionals"},{include:"#type-arguments"}]}]},"function-call-optionals":{patterns:[{match:"\\?\\.",name:"meta.function-call.ts punctuation.accessor.optional.ts"},{match:"\\!",name:"meta.function-call.ts keyword.operator.definiteassignment.ts"}]},"function-call-target":{patterns:[{include:"#support-function-call-identifiers"},{match:"(\\#?[_$[:alpha:]][_$[:alnum:]]*)",name:"entity.name.function.ts"}]},"function-declaration":{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|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))|(?<=\\})",name:"meta.function.ts",patterns:[{include:"#function-name"},{include:"#function-body"}]},"function-expression":{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:"(?=;)|(?<=\\})",name:"meta.function.expression.ts",patterns:[{include:"#function-name"},{include:"#single-line-comment-consuming-line-ending"},{include:"#function-body"}]},"function-name":{match:"[_$[:alpha:]][_$[:alnum:]]*",name:"meta.definition.function.ts entity.name.function.ts"},"function-parameters":{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.parameters.begin.ts"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.parameters.end.ts"}},name:"meta.parameters.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"},{match:",",name:"punctuation.separator.parameter.ts"}]},identifiers:{patterns:[{include:"#object-identifiers"},{captures:{1:{name:"punctuation.accessor.ts"},2:{name:"punctuation.accessor.optional.ts"},3:{name:"entity.name.function.ts"}},match:`(?x)(?:(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*)?([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*=\\s*( + ((async\\s+)?( + (function\\s*[(<*]) | + (function\\s+) | + ([_$[:alpha:]][_$[:alnum:]]*\\s*=>) + )) | + ((async\\s*)?( + ((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + # sure shot arrow functions even if => is on new line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? + [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* + ( + ([)]\\s*:) | # (): + ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param: + ) +) | + +# arrow function possible to detect only with => on same line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters + \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) # parameters + (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type + \\s*=> # arrow operator +) + )) +))`},{captures:{1:{name:"punctuation.accessor.ts"},2:{name:"punctuation.accessor.optional.ts"},3:{name:"variable.other.constant.property.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.property.ts"}},match:"(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*)"},{match:"([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])",name:"variable.other.constant.ts"},{match:"[_$[:alpha:]][_$[:alnum:]]*",name:"variable.other.readwrite.ts"}]},"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"}]},{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"}},name:"string.regexp.ts",patterns:[{include:"#regexp"}]},{include:"#statements"}]}]},"import-declaration":{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)(?=;|$|^)",name:"meta.import.ts",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"}]},"import-equals-declaration":{patterns:[{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"}},name:"meta.import-equals.external.ts",patterns:[{include:"#comment"},{include:"#string"}]},{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:"(?=;|$|^)",name:"meta.import-equals.internal.ts",patterns:[{include:"#single-line-comment-consuming-line-ending"},{include:"#comment"},{captures:{1:{name:"entity.name.type.module.ts"},2:{name:"punctuation.accessor.ts"},3:{name:"punctuation.accessor.optional.ts"}},match:"([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))"},{match:"([_$[:alpha:]][_$[:alnum:]]*)",name:"variable.other.readwrite.ts"}]}]},"import-export-assert-clause":{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(assert)\\s*(\\{)",beginCaptures:{1:{name:"keyword.control.assert.ts"},2:{name:"punctuation.definition.block.ts"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.block.ts"}},patterns:[{include:"#comment"},{include:"#string"},{match:"(?:[_$[:alpha:]][_$[:alnum:]]*)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:)",name:"meta.object-literal.key.ts"},{match:":",name:"punctuation.separator.key-value.ts"}]},"import-export-block":{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.block.ts"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.block.ts"}},name:"meta.block.ts",patterns:[{include:"#import-export-clause"}]},"import-export-clause":{patterns:[{include:"#comment"},{captures:{1:{name:"keyword.control.type.ts"},2:{name:"keyword.control.default.ts"},3:{name:"constant.language.import-export-all.ts"},4:{name:"variable.other.readwrite.ts"},5:{name:"keyword.control.as.ts"},6:{name:"keyword.control.default.ts"},7:{name:"variable.other.readwrite.alias.ts"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(?:(\\btype)\\s+)?(?:(\\bdefault)|(\\*)|(\\b[_$[:alpha:]][_$[:alnum:]]*)))\\s+(as)\\s+(?:(default(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|([_$[:alpha:]][_$[:alnum:]]*))"},{include:"#punctuation-comma"},{match:"\\*",name:"constant.language.import-export-all.ts"},{match:"\\b(default)\\b",name:"keyword.control.default.ts"},{captures:{1:{name:"keyword.control.type.ts"},2:{name:"variable.other.readwrite.alias.ts"}},match:"(?:(\\btype)\\s+)?([_$[:alpha:]][_$[:alnum:]]*)"}]},"import-export-declaration":{patterns:[{include:"#comment"},{include:"#string"},{include:"#import-export-block"},{match:"\\bfrom\\b",name:"keyword.control.from.ts"},{include:"#import-export-assert-clause"},{include:"#import-export-clause"}]},"indexer-declaration":{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"}},name:"meta.indexer.declaration.ts",patterns:[{include:"#type-annotation"}]},"indexer-mapped-type-declaration":{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"}},name:"meta.indexer.mappedtype.declaration.ts",patterns:[{captures:{1:{name:"keyword.control.as.ts"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+"},{include:"#type"}]},"inline-tags":{patterns:[{captures:{1:{name:"punctuation.definition.bracket.square.begin.jsdoc"},2:{name:"punctuation.definition.bracket.square.end.jsdoc"}},match:"(\\[)[^\\]]+(\\])(?={@(?:link|linkcode|linkplain|tutorial))",name:"constant.other.description.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"}},name:"entity.name.type.instance.jsdoc",patterns:[{captures:{1:{name:"variable.other.link.underline.jsdoc"},2:{name:"punctuation.separator.pipe.jsdoc"}},match:"\\G((?=https?://)(?:[^|}\\s*]|\\*[/])+)(\\|)?"},{captures:{1:{name:"variable.other.description.jsdoc"},2:{name:"punctuation.separator.pipe.jsdoc"}},match:"\\G((?:[^{}@\\s|*]|\\*[^/])+)(\\|)?"}]}]},"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"}]},"interface-declaration":{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:"(?<=\\})",name:"meta.interface.ts",patterns:[{include:"#comment"},{include:"#class-or-interface-heritage"},{captures:{0:{name:"entity.name.type.interface.ts"}},match:"[_$[:alpha:]][_$[:alnum:]]*"},{include:"#type-parameters"},{include:"#class-or-interface-body"}]},jsdoctype:{patterns:[{begin:"\\G({)",beginCaptures:{0:{name:"entity.name.type.instance.jsdoc"},1:{name:"punctuation.definition.bracket.curly.begin.jsdoc"}},contentName:"entity.name.type.instance.jsdoc",end:"((}))\\s*|(?=\\*/)",endCaptures:{1:{name:"entity.name.type.instance.jsdoc"},2:{name:"punctuation.definition.bracket.curly.end.jsdoc"}},patterns:[{include:"#brackets"}]}]},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"}]},{captures:{1:{name:"entity.name.label.ts"},2:{name:"punctuation.separator.label.ts"}},match:"([_$[:alpha:]][_$[:alnum:]]*)\\s*(:)"}]},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"}]},"method-declaration":{patterns:[{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:"(?=\\}|;|,|$)|(?<=\\})",name:"meta.method.declaration.ts",patterns:[{include:"#method-declaration-name"},{include:"#function-body"}]},{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*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\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:"(?=\\}|;|,|$)|(?<=\\})",name:"meta.method.declaration.ts",patterns:[{include:"#method-declaration-name"},{include:"#function-body"}]},{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(?!\\$))|((?<!\\$)(?: + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3 + (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3 + (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3 + (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3 + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1 + (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1. + (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1 + (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1 +)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\s*((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\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:"(?=\\}|;|,|$)|(?<=\\})",name:"meta.method.declaration.ts",patterns:[{include:"#method-declaration-name"},{include:"#function-body"}]}]},"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(?!\\$))|((?<!\\$)(?: + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3 + (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3 + (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3 + (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3 + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1 + (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1. + (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1 + (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1 +)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??)\\s*[\\(\\<])`,end:"(?=\\(|\\<)",patterns:[{include:"#string"},{include:"#array-literal"},{include:"#numeric-literal"},{match:"[_$[:alpha:]][_$[:alnum:]]*",name:"meta.definition.method.ts entity.name.function.ts"},{match:"\\?",name:"keyword.operator.optional.ts"}]},"namespace-declaration":{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|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))",name:"meta.namespace.declaration.ts",patterns:[{include:"#comment"},{include:"#string"},{match:"([_$[:alpha:]][_$[:alnum:]]*)",name:"entity.name.type.module.ts"},{include:"#punctuation-accessor"},{include:"#decl-block"}]},"new-expr":{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(new)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",beginCaptures:{1:{name:"keyword.operator.new.ts"}},end:"(?<=\\))|(?=[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))new(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))function((\\s+[_$[:alpha:]][_$[:alnum:]]*)|(\\s*[\\(]))))",name:"new.expr.ts",patterns:[{include:"#expression"}]},"null-literal":{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))null(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"constant.language.null.ts"},"numeric-literal":{patterns:[{captures:{1:{name:"storage.type.numeric.bigint.ts"}},match:"\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$)",name:"constant.numeric.hex.ts"},{captures:{1:{name:"storage.type.numeric.bigint.ts"}},match:"\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$)",name:"constant.numeric.binary.ts"},{captures:{1:{name:"storage.type.numeric.bigint.ts"}},match:"\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$)",name:"constant.numeric.octal.ts"},{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"}},match:`(?x) +(?<!\\$)(?: + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3 + (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3 + (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3 + (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3 + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1 + (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1. + (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1 + (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1 +)(?!\\$)`}]},"numericConstant-literal":{patterns:[{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))NaN(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"constant.language.nan.ts"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Infinity(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"constant.language.infinity.ts"}]},"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(?!\\$))|((?<!\\$)(?: + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3 + (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3 + (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3 + (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3 + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1 + (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1. + (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1 + (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1 +)(?!\\$))|([_$[: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(?!\\$))|((?<!\\$)(?: + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3 + (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3 + (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3 + (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3 + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1 + (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1. + (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1 + (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1 +)(?!\\$))|([_$[: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(?!\\$))|((?<!\\$)(?: + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3 + (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3 + (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3 + (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3 + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1 + (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1. + (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1 + (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1 +)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))`,end:"(:)",endCaptures:{0:{name:"punctuation.destructuring.ts"}},patterns:[{include:"#string"},{include:"#array-literal"},{include:"#numeric-literal"},{match:"([_$[:alpha:]][_$[:alnum:]]*)",name:"variable.object.property.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"}]},"object-identifiers":{patterns:[{match:"([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*\\??\\.\\s*prototype\\b(?!\\$))",name:"support.class.ts"},{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)(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(?: + (\\#?[[:upper:]][_$[:digit:][:upper:]]*) | + (\\#?[_$[:alpha:]][_$[:alnum:]]*) +)(?=\\s*\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*)`},{captures:{1:{name:"variable.other.constant.object.ts"},2:{name:"variable.other.object.ts"}},match:`(?x)(?: + ([[:upper:]][_$[:digit:][:upper:]]*) | + ([_$[:alpha:]][_$[:alnum:]]*) +)(?=\\s*\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*)`}]},"object-literal":{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.block.ts"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.block.ts"}},name:"meta.objectliteral.ts",patterns:[{include:"#object-member"}]},"object-literal-method-declaration":{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(?!\\$))|((?<!\\$)(?: + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3 + (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3 + (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3 + (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3 + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1 + (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1. + (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1 + (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1 +)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\s*((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])`,beginCaptures:{1:{name:"storage.modifier.async.ts"},2:{name:"storage.type.property.ts"},3:{name:"keyword.generator.asterisk.ts"}},end:"(?=\\}|;|,)|(?<=\\})",name:"meta.method.declaration.ts",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(?!\\$))|((?<!\\$)(?: + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3 + (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3 + (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3 + (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3 + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1 + (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1. + (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1 + (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1 +)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\s*((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\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"}]}]},"object-member":{patterns:[{include:"#comment"},{include:"#object-literal-method-declaration"},{begin:"(?=\\[)",end:"(?=:)|((?<=[\\]])(?=\\s*[\\(\\<]))",name:"meta.object.member.ts meta.object-literal.key.ts",patterns:[{include:"#comment"},{include:"#array-literal"}]},{begin:"(?=[\\'\\\"\\`])",end:"(?=:)|((?<=[\\'\\\"\\`])(?=((\\s*[\\(\\<,}])|(\\s+(as|satisifies)\\s+))))",name:"meta.object.member.ts meta.object-literal.key.ts",patterns:[{include:"#comment"},{include:"#string"}]},{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(?!\\$))|((?<!\\$)(?: + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3 + (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3 + (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3 + (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3 + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1 + (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1. + (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1 + (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1 +)(?!\\$)))`,end:"(?=:)|(?=\\s*([\\(\\<,}])|(\\s+as|satisifies\\s+))",name:"meta.object.member.ts meta.object-literal.key.ts",patterns:[{include:"#comment"},{include:"#numeric-literal"}]},{begin:"(?<=[\\]\\'\\\"\\`])(?=\\s*[\\(\\<])",end:"(?=\\}|;|,)|(?<=\\})",name:"meta.method.declaration.ts",patterns:[{include:"#function-body"}]},{captures:{0:{name:"meta.object-literal.key.ts"},1:{name:"constant.numeric.decimal.ts"}},match:"(?![_$[:alpha:]])([[:digit:]]+)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:)",name:"meta.object.member.ts"},{captures:{0:{name:"meta.object-literal.key.ts"},1:{name:"entity.name.function.ts"}},match:`(?x)(?:([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:(\\s*\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/)*\\s*( + ((async\\s+)?( + (function\\s*[(<*]) | + (function\\s+) | + ([_$[:alpha:]][_$[:alnum:]]*\\s*=>) + )) | + ((async\\s*)?( + ((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + # sure shot arrow functions even if => is on new line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? + [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* + ( + ([)]\\s*:) | # (): + ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param: + ) +) | + +# arrow function possible to detect only with => on same line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters + \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) # parameters + (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type + \\s*=> # arrow operator +) + )) +)))`,name:"meta.object.member.ts"},{captures:{0:{name:"meta.object-literal.key.ts"}},match:"(?:[_$[:alpha:]][_$[:alnum:]]*)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:)",name:"meta.object.member.ts"},{begin:"\\.\\.\\.",beginCaptures:{0:{name:"keyword.operator.spread.ts"}},end:"(?=,|\\})",name:"meta.object.member.ts",patterns:[{include:"#expression"}]},{captures:{1:{name:"variable.other.readwrite.ts"}},match:"([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=,|\\}|$|\\/\\/|\\/\\*)",name:"meta.object.member.ts"},{captures:{1:{name:"keyword.control.as.ts"},2:{name:"storage.modifier.ts"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+(const)(?=\\s*([,}]|$))",name:"meta.object.member.ts"},{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(as)|(satisfies))\\s+",beginCaptures:{1:{name:"keyword.control.as.ts"},2:{name:"keyword.control.satisfies.ts"}},end:"(?=[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|^|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as|satisifies)\\s+))",name:"meta.object.member.ts",patterns:[{include:"#type"}]},{begin:"(?=[_$[:alpha:]][_$[:alnum:]]*\\s*=)",end:"(?=,|\\}|$|\\/\\/|\\/\\*)",name:"meta.object.member.ts",patterns:[{include:"#expression"}]},{begin:":",beginCaptures:{0:{name:"meta.object-literal.key.ts punctuation.separator.key-value.ts"}},end:"(?=,|\\})",name:"meta.object.member.ts",patterns:[{begin:"(?<=:)\\s*(async)?(?=\\s*(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\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"},{include:"#decl-block"}]},"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"}]},"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"}]},"parameter-name":{patterns:[{captures:{1:{name:"storage.modifier.ts"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|protected|private|readonly)\\s+(?=(override|public|protected|private|readonly)\\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:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)(?=\\s* +# function assignment | +(=\\s*( + ((async\\s+)?( + (function\\s*[(<*]) | + (function\\s+) | + ([_$[:alpha:]][_$[:alnum:]]*\\s*=>) + )) | + ((async\\s*)?( + ((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + # sure shot arrow functions even if => is on new line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? + [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* + ( + ([)]\\s*:) | # (): + ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param: + ) +) | + +# arrow function possible to detect only with => on same line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters + \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) # parameters + (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type + \\s*=> # arrow operator +) + )) +)) | +# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) => +(:\\s*( + (<) | + ([(]\\s*( + ([)]) | + (\\.\\.\\.) | + ([_$[:alnum:]]+\\s*( + ([:,?=])| + ([)]\\s*=>) + )) + )) +)) | +(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) | +(:\\s*((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) | +(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*( + ((async\\s+)?( + (function\\s*[(<*]) | + (function\\s+) | + ([_$[:alpha:]][_$[:alnum:]]*\\s*=>) + )) | + ((async\\s*)?( + ((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + # sure shot arrow functions even if => is on new line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? + [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* + ( + ([)]\\s*:) | # (): + ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param: + ) +) | + +# arrow function possible to detect only with => on same line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters + \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) # parameters + (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type + \\s*=> # arrow operator +) + )) +)))`},{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"}},match:"(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)"}]},"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(?!\\$))|((?<!\\$)(?: + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3 + (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3 + (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3 + (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3 + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1 + (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1. + (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1 + (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1 +)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))`,end:"(?=,|\\})",patterns:[{include:"#object-binding-element-propertyName"},{include:"#parameter-binding-element"},{include:"#paren-expression"}]},{include:"#parameter-object-binding-pattern"},{include:"#destructuring-parameter-rest"},{include:"#variable-initializer"},{include:"#punctuation-comma"}]},"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-type-annotation":{patterns:[{begin:"(:)",beginCaptures:{1:{name:"keyword.operator.type.annotation.ts"}},end:"(?=[,)])|(?==[^>])",name:"meta.type.annotation.ts",patterns:[{include:"#type"}]}]},"paren-expression":{begin:"\\(",beginCaptures:{0:{name:"meta.brace.round.ts"}},end:"\\)",endCaptures:{0:{name:"meta.brace.round.ts"}},patterns:[{include:"#expression"}]},"paren-expression-possibly-arrow":{patterns:[{begin:"(?<=[(=,])\\s*(async)?(?=\\s*((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\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*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?\\()|(<)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\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"}]}]},"possibly-arrow-return-type":{begin:"(?<=\\)|^)\\s*(:)(?=\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*=>)",beginCaptures:{1:{name:"meta.arrow.ts meta.return.type.arrow.ts keyword.operator.type.annotation.ts"}},contentName:"meta.arrow.ts meta.return.type.arrow.ts",end:"(?==>|\\{|(^\\s*(export|function|class|interface|let|var|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|const|import|enum|namespace|module|type|abstract|declare)\\s+))",patterns:[{include:"#arrow-return-type-body"}]},"property-accessor":{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(accessor|get|set)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"storage.type.property.ts"},"punctuation-accessor":{captures:{1:{name:"punctuation.accessor.ts"},2:{name:"punctuation.accessor.optional.ts"}},match:"(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))"},"punctuation-comma":{match:",",name:"punctuation.separator.comma.ts"},"punctuation-semicolon":{match:";",name:"punctuation.terminator.statement.ts"},"qstring-double":{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"}},name:"string.quoted.double.ts",patterns:[{include:"#string-character-escape"}]},"qstring-single":{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"}},name:"string.quoted.single.ts",patterns:[{include:"#string-character-escape"}]},regex:{patterns:[{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"}},name:"string.regexp.ts",patterns:[{include:"#regexp"}]},{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"}},name:"string.regexp.ts",patterns:[{include:"#regexp"}]}]},"regex-character-class":{patterns:[{match:"\\\\[wWsSdDtrnvf]|\\.",name:"constant.other.character-class.regexp"},{match:"\\\\([0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4})",name:"constant.character.numeric.regexp"},{match:"\\\\c[A-Z]",name:"constant.character.control.regexp"},{match:"\\\\.",name:"constant.character.escape.backslash.regexp"}]},regexp:{patterns:[{match:"\\\\[bB]|\\^|\\$",name:"keyword.control.anchor.regexp"},{captures:{0:{name:"keyword.other.back-reference.regexp"},1:{name:"variable.other.regexp"}},match:"\\\\[1-9]\\d*|\\\\k<([a-zA-Z_$][\\w$]*)>"},{match:"[?+*]|\\{(\\d+,\\d+|\\d+,|,\\d+|\\d+)\\}\\??",name:"keyword.operator.quantifier.regexp"},{match:"\\|",name:"keyword.operator.or.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"}},name:"meta.group.assertion.regexp",patterns:[{include:"#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"}},name:"meta.group.regexp",patterns:[{include:"#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"}},name:"constant.other.character-class.set.regexp",patterns:[{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"}},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])|(\\\\.))",name:"constant.other.character-class.range.regexp"},{include:"#regex-character-class"}]},{include:"#regex-character-class"}]},"return-type":{patterns:[{begin:"(?<=\\))\\s*(:)(?=\\s*\\S)",beginCaptures:{1:{name:"keyword.operator.type.annotation.ts"}},end:"(?<![:|&])(?=$|^|[{};,]|//)",name:"meta.return.type.ts",patterns:[{include:"#return-type-core"}]},{begin:"(?<=\\))\\s*(:)",beginCaptures:{1:{name:"keyword.operator.type.annotation.ts"}},end:"(?<![:|&])((?=[{};,]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",name:"meta.return.type.ts",patterns:[{include:"#return-type-core"}]}]},"return-type-core":{patterns:[{include:"#comment"},{begin:"(?<=[:|&])(?=\\s*\\{)",end:"(?<=\\})",patterns:[{include:"#type-object"}]},{include:"#type-predicate-operator"},{include:"#type"}]},shebang:{captures:{1:{name:"punctuation.definition.comment.ts"}},match:"\\A(#!).*(?=$)",name:"comment.line.shebang.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"}},contentName:"comment.line.double-slash.ts",end:"(?=^)"},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"}]},string:{patterns:[{include:"#qstring-single"},{include:"#qstring-double"},{include:"#template"}]},"string-character-escape":{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]?|.|$)",name:"constant.character.escape.ts"},"super-literal":{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))super\\b(?!\\$)",name:"variable.language.super.ts"},"support-function-call-identifiers":{patterns:[{include:"#literal"},{include:"#support-objects"},{include:"#object-identifiers"},{include:"#punctuation-accessor"},{match:"(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))import(?=\\s*[\\(]\\s*[\\\"\\'\\`]))",name:"keyword.operator.expression.import.ts"}]},"support-objects":{patterns:[{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(arguments)\\b(?!\\$)",name:"variable.language.arguments.ts"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(Promise)\\b(?!\\$)",name:"support.class.promise.ts"},{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:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(import)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(meta)\\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:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(new)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(target)\\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:`(?x) (?:(\\.)|(\\?\\.(?!\\s*[[:digit:]]))) \\s* (?: + (?:(constructor|length|prototype|__proto__)\\b(?!\\$|\\s*(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\\()) + | + (?:(EPSILON|MAX_SAFE_INTEGER|MAX_VALUE|MIN_SAFE_INTEGER|MIN_VALUE|NEGATIVE_INFINITY|POSITIVE_INFINITY)\\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"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(exports)|(module)(?:(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))(exports|id|filename|loaded|parent|children))?)\\b(?!\\$)"}]},"switch-statement":{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?=\\bswitch\\s*\\()",end:"\\}",endCaptures:{0:{name:"punctuation.definition.block.ts"}},name:"switch-statement.expr.ts",patterns:[{include:"#comment"},{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"}},name:"switch-expression.expr.ts",patterns:[{include:"#expression"}]},{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.block.ts"}},end:"(?=\\})",name:"switch-block.expr.ts",patterns:[{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(case|default(?=:))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",beginCaptures:{1:{name:"keyword.control.switch.ts"}},end:"(?=:)",name:"case-clause.expr.ts",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"}},contentName:"meta.block.ts",end:"\\}",endCaptures:{0:{name:"meta.block.ts punctuation.definition.block.ts"}},patterns:[{include:"#statements"}]},{captures:{0:{name:"case-clause.expr.ts punctuation.definition.section.case-statement.ts"}},match:"(:)"},{include:"#statements"}]}]},template:{patterns:[{include:"#template-call"},{begin:"([_$[:alpha:]][_$[:alnum:]]*)?(`)",beginCaptures:{1:{name:"entity.name.function.tagged-template.ts"},2:{name:"string.template.ts punctuation.definition.string.template.begin.ts"}},contentName:"string.template.ts",end:"`",endCaptures:{0:{name:"string.template.ts punctuation.definition.string.template.end.ts"}},patterns:[{include:"#template-substitution-element"},{include:"#string-character-escape"}]}]},"template-call":{patterns:[{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"},{match:"([_$[:alpha:]][_$[:alnum:]]*)",name:"entity.name.function.tagged-template.ts"}]},{include:"#type-arguments"}]},{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":{begin:"\\$\\{",beginCaptures:{0:{name:"punctuation.definition.template-expression.begin.ts"}},contentName:"meta.embedded.line.ts",end:"\\}",endCaptures:{0:{name:"punctuation.definition.template-expression.end.ts"}},name:"meta.template.expression.ts",patterns:[{include:"#expression"}]},"template-type":{patterns:[{include:"#template-call"},{begin:"([_$[:alpha:]][_$[:alnum:]]*)?(`)",beginCaptures:{1:{name:"entity.name.function.tagged-template.ts"},2:{name:"string.template.ts punctuation.definition.string.template.begin.ts"}},contentName:"string.template.ts",end:"`",endCaptures:{0:{name:"string.template.ts punctuation.definition.string.template.end.ts"}},patterns:[{include:"#template-type-substitution-element"},{include:"#string-character-escape"}]}]},"template-type-substitution-element":{begin:"\\$\\{",beginCaptures:{0:{name:"punctuation.definition.template-expression.begin.ts"}},contentName:"meta.embedded.line.ts",end:"\\}",endCaptures:{0:{name:"punctuation.definition.template-expression.end.ts"}},name:"meta.template.expression.ts",patterns:[{include:"#type"}]},"ternary-expression":{begin:"(?!\\?\\.\\s*[^[:digit:]])(\\?)(?!\\?)",beginCaptures:{1:{name:"keyword.operator.ternary.ts"}},end:"\\s*(:)",endCaptures:{1:{name:"keyword.operator.ternary.ts"}},patterns:[{include:"#expression"}]},"this-literal":{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))this\\b(?!\\$)",name:"variable.language.this.ts"},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-operators"},{include:"#type-conditional"},{include:"#type-fn-type-parameters"},{include:"#type-paren-or-function-parameters"},{include:"#type-function-return-type"},{captures:{1:{name:"storage.modifier.ts"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*"},{include:"#type-name"}]},"type-alias-declaration":{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|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))",name:"meta.type.declaration.ts",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|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))",patterns:[{include:"#type"}]},{begin:"(=)\\s*",beginCaptures:{1:{name:"keyword.operator.assignment.ts"}},end:"(?=\\}|;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))",patterns:[{include:"#type"}]}]},"type-annotation":{patterns:[{begin:"(:)(?=\\s*\\S)",beginCaptures:{1:{name:"keyword.operator.type.annotation.ts"}},end:"(?<![:|&])(?!\\s*[|&]\\s+)((?=^|[,);\\}\\]]|//)|(?==[^>])|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))",name:"meta.type.annotation.ts",patterns:[{include:"#type"}]},{begin:"(:)",beginCaptures:{1:{name:"keyword.operator.type.annotation.ts"}},end:"(?<![:|&])((?=[,);\\}\\]]|\\/\\/)|(?==[^>])|(?=^\\s*$)|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))",name:"meta.type.annotation.ts",patterns:[{include:"#type"}]}]},"type-arguments":{begin:"\\<",beginCaptures:{0:{name:"punctuation.definition.typeparameters.begin.ts"}},end:"\\>",endCaptures:{0:{name:"punctuation.definition.typeparameters.end.ts"}},name:"meta.type.parameters.ts",patterns:[{include:"#type-arguments-body"}]},"type-arguments-body":{patterns:[{captures:{0:{name:"keyword.operator.type.ts"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(_)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"},{include:"#type"},{include:"#punctuation-comma"}]},"type-builtin-literals":{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(this|true|false|undefined|null|object)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"support.type.builtin.ts"},"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-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"}]},{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b\\s*(?=\\()",beginCaptures:{1:{name:"storage.modifier.ts"},2:{name:"keyword.control.new.ts"}},end:"(?<=\\))",name:"meta.type.constructor.ts",patterns:[{include:"#function-parameters"}]},{begin:`(?x)( + (?= + [(]\\s*( + ([)]) | + (\\.\\.\\.) | + ([_$[:alnum:]]+\\s*( + ([:,?=])| + ([)]\\s*=>) + )) + ) + ) +)`,end:"(?<=\\))",name:"meta.type.function.ts",patterns:[{include:"#function-parameters"}]}]},"type-function-return-type":{patterns:[{begin:"(=>)(?=\\s*\\S)",beginCaptures:{1:{name:"storage.type.function.arrow.ts"}},end:"(?<!=>)(?<![|&])(?=[,\\]\\)\\{\\}=;>:\\?]|//|$)",name:"meta.type.function.return.ts",patterns:[{include:"#type-function-return-type-core"}]},{begin:"=>",beginCaptures:{0:{name:"storage.type.function.arrow.ts"}},end:"(?<!=>)(?<![|&])((?=[,\\]\\)\\{\\}=;:\\?>]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",name:"meta.type.function.return.ts",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-infer":{patterns:[{captures:{1:{name:"keyword.operator.expression.infer.ts"},2:{name:"entity.name.type.ts"},3:{name:"keyword.operator.expression.extends.ts"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(infer)\\s+([_$[:alpha:]][_$[:alnum:]]*)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?:\\s+(extends)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))?",name:"meta.type.infer.ts"}]},"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"}},contentName:"meta.type.parameters.ts",end:"(>)",endCaptures:{1:{name:"meta.type.parameters.ts punctuation.definition.typeparameters.end.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"}},contentName:"meta.type.parameters.ts",end:"(>)",endCaptures:{1:{name:"meta.type.parameters.ts punctuation.definition.typeparameters.end.ts"}},patterns:[{include:"#type-arguments-body"}]},{captures:{1:{name:"entity.name.type.module.ts"},2:{name:"punctuation.accessor.ts"},3:{name:"punctuation.accessor.optional.ts"}},match:"([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))"},{match:"[_$[:alpha:]][_$[:alnum:]]*",name:"entity.name.type.ts"}]},"type-object":{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.block.ts"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.block.ts"}},name:"meta.object.type.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-operators":{patterns:[{include:"#typeof-operator"},{include:"#type-infer"},{begin:"([&|])(?=\\s*\\{)",beginCaptures:{0:{name:"keyword.operator.type.ts"}},end:"(?<=\\})",patterns:[{include:"#type-object"}]},{begin:"[&|]",beginCaptures:{0:{name:"keyword.operator.type.ts"}},end:"(?=\\S)"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))keyof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.operator.expression.keyof.ts"},{match:"(\\?|\\:)",name:"keyword.operator.ternary.ts"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))import(?=\\s*\\()",name:"keyword.operator.expression.import.ts"}]},"type-parameters":{begin:"(<)",beginCaptures:{1:{name:"punctuation.definition.typeparameters.begin.ts"}},end:"(>)",endCaptures:{1:{name:"punctuation.definition.typeparameters.end.ts"}},name:"meta.type.parameters.ts",patterns:[{include:"#comment"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(extends|in|out|const)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"storage.modifier.ts"},{include:"#type"},{include:"#punctuation-comma"},{match:"(=)(?!>)",name:"keyword.operator.assignment.ts"}]},"type-paren-or-function-parameters":{begin:"\\(",beginCaptures:{0:{name:"meta.brace.round.ts"}},end:"\\)",endCaptures:{0:{name:"meta.brace.round.ts"}},name:"meta.type.paren.cover.ts",patterns:[{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*(\\??)(?=\\s*(:\\s*( + (<) | + ([(]\\s*( + ([)]) | + (\\.\\.\\.) | + ([_$[:alnum:]]+\\s*( + ([:,?=])| + ([)]\\s*=>) + )) + )) +)) | +(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) | +(:\\s*((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\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:"variable.parameter.ts variable.language.this.ts"},4:{name:"variable.parameter.ts"},5:{name:"keyword.operator.optional.ts"}},match:"(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=:)"},{include:"#type-annotation"},{match:",",name:"punctuation.separator.parameter.ts"},{include:"#type"}]},"type-predicate-operator":{patterns:[{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+)?(?!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"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(asserts)\\s+(?!is)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))asserts(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.operator.type.asserts.ts"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))is(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.operator.expression.is.ts"}]},"type-primitive":{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(string|number|bigint|boolean|symbol|any|void|never|unknown)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"support.type.primitive.ts"},"type-string":{patterns:[{include:"#qstring-single"},{include:"#qstring-double"},{include:"#template-type"}]},"type-tuple":{begin:"\\[",beginCaptures:{0:{name:"meta.brace.square.ts"}},end:"\\]",endCaptures:{0:{name:"meta.brace.square.ts"}},name:"meta.type.tuple.ts",patterns:[{match:"\\.\\.\\.",name:"keyword.operator.rest.ts"},{captures:{1:{name:"entity.name.label.ts"},2:{name:"keyword.operator.optional.ts"},3:{name:"punctuation.separator.label.ts"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?)?\\s*(:)"},{include:"#type"},{include:"#punctuation-comma"}]},"typeof-operator":{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))typeof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",beginCaptures:{0:{name:"keyword.operator.expression.typeof.ts"}},end:"(?=[,);}\\]=>:&|{\\?]|(extends\\s+)|$|;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))",patterns:[{include:"#type-arguments"},{include:"#expression"}]},"undefined-literal":{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))undefined(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"constant.language.undefined.ts"},"var-expr":{patterns:[{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|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))|((?<!^let|[^\\._$[:alnum:]]let|^var|[^\\._$[:alnum:]]var)(?=\\s*$)))",name:"meta.var.expr.ts",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*(?=$|\\/\\/)",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"}]},{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|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))|((?<!^const|[^\\._$[:alnum:]]const)(?=\\s*$)))",name:"meta.var.expr.ts",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*(?=$|\\/\\/)",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"}]},{begin:"(?=(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b((?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\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((?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))((?=;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))|((?<!^using|[^\\._$[:alnum:]]using|^await\\s+using|[^\\._$[:alnum:]]await\\s+using)(?=\\s*$)))",name:"meta.var.expr.ts",patterns:[{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b((?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",beginCaptures:{1:{name:"keyword.control.export.ts"},2:{name:"storage.modifier.ts"},3:{name:"storage.type.ts"}},end:"(?=\\S)"},{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:"#var-single-const"},{include:"#punctuation-comma"}]},{include:"#punctuation-comma"}]}]},"var-single-const":{patterns:[{begin:`(?x)([_$[:alpha:]][_$[:alnum:]]*)(?=\\s* +# function assignment | +(=\\s*( + ((async\\s+)?( + (function\\s*[(<*]) | + (function\\s+) | + ([_$[:alpha:]][_$[:alnum:]]*\\s*=>) + )) | + ((async\\s*)?( + ((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + # sure shot arrow functions even if => is on new line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? + [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* + ( + ([)]\\s*:) | # (): + ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param: + ) +) | + +# arrow function possible to detect only with => on same line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters + \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) # parameters + (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type + \\s*=> # arrow operator +) + )) +)) | +# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) => +(:\\s*( + (<) | + ([(]\\s*( + ([)]) | + (\\.\\.\\.) | + ([_$[:alnum:]]+\\s*( + ([:,?=])| + ([)]\\s*=>) + )) + )) +)) | +(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) | +(:\\s*((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) | +(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*( + ((async\\s+)?( + (function\\s*[(<*]) | + (function\\s+) | + ([_$[:alpha:]][_$[:alnum:]]*\\s*=>) + )) | + ((async\\s*)?( + ((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + # sure shot arrow functions even if => is on new line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? + [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* + ( + ([)]\\s*:) | # (): + ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param: + ) +) | + +# arrow function possible to detect only with => on same line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters + \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) # parameters + (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type + \\s*=> # arrow operator +) + )) +)))`,beginCaptures:{1:{name:"meta.definition.variable.ts variable.other.constant.ts entity.name.function.ts"}},end:"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|(;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b)))",name:"meta.var-single-variable.expr.ts",patterns:[{include:"#var-single-variable-type-annotation"}]},{begin:"([_$[:alpha:]][_$[:alnum:]]*)",beginCaptures:{1:{name:"meta.definition.variable.ts variable.other.constant.ts"}},end:"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|(;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b)))",name:"meta.var-single-variable.expr.ts",patterns:[{include:"#var-single-variable-type-annotation"}]}]},"var-single-variable":{patterns:[{begin:`(?x)([_$[:alpha:]][_$[:alnum:]]*)(\\!)?(?=\\s* +# function assignment | +(=\\s*( + ((async\\s+)?( + (function\\s*[(<*]) | + (function\\s+) | + ([_$[:alpha:]][_$[:alnum:]]*\\s*=>) + )) | + ((async\\s*)?( + ((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + # sure shot arrow functions even if => is on new line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? + [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* + ( + ([)]\\s*:) | # (): + ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param: + ) +) | + +# arrow function possible to detect only with => on same line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters + \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) # parameters + (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type + \\s*=> # arrow operator +) + )) +)) | +# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) => +(:\\s*( + (<) | + ([(]\\s*( + ([)]) | + (\\.\\.\\.) | + ([_$[:alnum:]]+\\s*( + ([:,?=])| + ([)]\\s*=>) + )) + )) +)) | +(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) | +(:\\s*((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) | +(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*( + ((async\\s+)?( + (function\\s*[(<*]) | + (function\\s+) | + ([_$[:alpha:]][_$[:alnum:]]*\\s*=>) + )) | + ((async\\s*)?( + ((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + # sure shot arrow functions even if => is on new line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? + [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* + ( + ([)]\\s*:) | # (): + ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param: + ) +) | + +# arrow function possible to detect only with => on same line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters + \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) # parameters + (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type + \\s*=> # arrow operator +) + )) +)))`,beginCaptures:{1:{name:"meta.definition.variable.ts entity.name.function.ts"},2:{name:"keyword.operator.definiteassignment.ts"}},end:"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|(;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b)))",name:"meta.var-single-variable.expr.ts",patterns:[{include:"#var-single-variable-type-annotation"}]},{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+)|(;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b)))",name:"meta.var-single-variable.expr.ts",patterns:[{include:"#var-single-variable-type-annotation"}]},{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+)|(;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b)))",name:"meta.var-single-variable.expr.ts",patterns:[{include:"#var-single-variable-type-annotation"}]}]},"var-single-variable-type-annotation":{patterns:[{include:"#type-annotation"},{include:"#string"},{include:"#comment"}]},"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"}]}]}},scopeName:"source.ts",aliases:["ts"]});var Vn=[ti];const ai=Object.freeze({displayName:"JSX",name:"jsx",patterns:[{include:"#directives"},{include:"#statements"},{include:"#shebang"}],repository:{"access-modifier":{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(abstract|declare|override|public|protected|private|readonly|static)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"storage.modifier.js.jsx"},"after-operator-block-as-object-literal":{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"}},name:"meta.objectliteral.js.jsx",patterns:[{include:"#object-member"}]},"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"}]},"array-literal":{begin:"\\s*(\\[)",beginCaptures:{1:{name:"meta.brace.square.js.jsx"}},end:"\\]",endCaptures:{0:{name:"meta.brace.square.js.jsx"}},name:"meta.array.literal.js.jsx",patterns:[{include:"#expression"},{include:"#punctuation-comma"}]},"arrow-function":{patterns:[{captures:{1:{name:"storage.modifier.async.js.jsx"},2:{name:"variable.parameter.js.jsx"}},match:"(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(\\basync)\\s+)?([_$[:alpha:]][_$[:alnum:]]*)\\s*(?==>)",name:"meta.arrow.js.jsx"},{begin:`(?x) (?: + (?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(\\basync) +)? ((?<![})!\\]])\\s* + (?= + # sure shot arrow functions even if => is on new line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? + [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* + ( + ([)]\\s*:) | # (): + ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param: + ) +) | +( + [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends +) | +# arrow function possible to detect only with => on same line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters + \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) # parameters + (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type + \\s*=> # arrow operator +) + ) +)`,beginCaptures:{1:{name:"storage.modifier.async.js.jsx"}},end:"(?==>|\\{|(^\\s*(export|function|class|interface|let|var|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|const|import|enum|namespace|module|type|abstract|declare)\\s+))",name:"meta.arrow.js.jsx",patterns:[{include:"#comment"},{include:"#type-parameters"},{include:"#function-parameters"},{include:"#arrow-return-type"},{include:"#possibly-arrow-return-type"}]},{begin:"=>",beginCaptures:{0:{name:"storage.type.function.arrow.js.jsx"}},end:"((?<=\\}|\\S)(?<!=>)|((?!\\{)(?=\\S)))(?!\\/[\\/\\*])",name:"meta.arrow.js.jsx",patterns:[{include:"#single-line-comment-consuming-line-ending"},{include:"#decl-block"},{include:"#expression"}]}]},"arrow-return-type":{begin:"(?<=\\))\\s*(:)",beginCaptures:{1:{name:"keyword.operator.type.annotation.js.jsx"}},end:"(?==>|\\{|(^\\s*(export|function|class|interface|let|var|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|const|import|enum|namespace|module|type|abstract|declare)\\s+))",name:"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"}]},"async-modifier":{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(async)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"storage.modifier.async.js.jsx"},"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"}]},"boolean-literal":{patterns:[{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))true(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"constant.language.boolean.true.js.jsx"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))false(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"constant.language.boolean.false.js.jsx"}]},brackets:{patterns:[{begin:"{",end:"}|(?=\\*/)",patterns:[{include:"#brackets"}]},{begin:"\\[",end:"\\]|(?=\\*/)",patterns:[{include:"#brackets"}]}]},cast:{patterns:[{include:"#jsx"}]},"class-declaration":{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:"(?<=\\})",name:"meta.class.js.jsx",patterns:[{include:"#class-declaration-or-expression-patterns"}]},"class-declaration-or-expression-patterns":{patterns:[{include:"#comment"},{include:"#class-or-interface-heritage"},{captures:{0:{name:"entity.name.type.class.js.jsx"}},match:"[_$[:alpha:]][_$[:alnum:]]*"},{include:"#type-parameters"},{include:"#class-or-interface-body"}]},"class-expression":{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(class)\\b(?=\\s+|[<{]|\\/[\\/*])",beginCaptures:{1:{name:"storage.modifier.js.jsx"},2:{name:"storage.type.class.js.jsx"}},end:"(?<=\\})",name:"meta.class.js.jsx",patterns:[{include:"#class-declaration-or-expression-patterns"}]},"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|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\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"}]},"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"},{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:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))(?=\\s*[_$[:alpha:]][_$[:alnum:]]*(\\s*\\??\\.\\s*[_$[:alpha:]][_$[:alnum:]]*)*\\s*)"},{captures:{1:{name:"entity.other.inherited-class.js.jsx"}},match:"([_$[:alpha:]][_$[:alnum:]]*)"},{include:"#expressionPunctuations"}]},comment:{patterns:[{begin:"/\\*\\*(?!/)",beginCaptures:{0:{name:"punctuation.definition.comment.js.jsx"}},end:"\\*/",endCaptures:{0:{name:"punctuation.definition.comment.js.jsx"}},name:"comment.block.documentation.js.jsx",patterns:[{include:"#docblock"}]},{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"}},name:"comment.block.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"}},contentName:"comment.line.double-slash.js.jsx",end:"(?=$)"}]},"control-statement":{patterns:[{include:"#switch-statement"},{include:"#for-loop"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(catch|finally|throw|try)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.control.trycatch.js.jsx"},{captures:{1:{name:"keyword.control.loop.js.jsx"},2:{name:"entity.name.label.js.jsx"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(break|continue|goto)\\s+([_$[:alpha:]][_$[:alnum:]]*)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(break|continue|do|goto|while)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.control.loop.js.jsx"},{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(return)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",beginCaptures:{0:{name:"keyword.control.flow.js.jsx"}},end:"(?=[;}]|$|;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))",patterns:[{include:"#expression"}]},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(case|default|switch)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.control.switch.js.jsx"},{include:"#if-statement"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(else|if)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.control.conditional.js.jsx"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(with)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.control.with.js.jsx"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(package)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.control.js.jsx"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(debugger)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.other.debugger.js.jsx"}]},"decl-block":{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.block.js.jsx"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.block.js.jsx"}},name:"meta.block.js.jsx",patterns:[{include:"#statements"}]},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"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(declare|export)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"storage.modifier.js.jsx"}]},decorator:{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))\\@",beginCaptures:{0:{name:"punctuation.decorator.js.jsx"}},end:"(?=\\s)",name:"meta.decorator.js.jsx",patterns:[{include:"#expression"}]},"destructuring-const":{patterns:[{begin:"(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\{)",end:"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",name:"meta.object-binding-pattern-variable.js.jsx",patterns:[{include:"#object-binding-pattern-const"},{include:"#type-annotation"},{include:"#comment"}]},{begin:"(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\[)",end:"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",name:"meta.array-binding-pattern-variable.js.jsx",patterns:[{include:"#array-binding-pattern-const"},{include:"#type-annotation"},{include:"#comment"}]}]},"destructuring-parameter":{patterns:[{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"}},name:"meta.parameter.object-binding-pattern.js.jsx",patterns:[{include:"#parameter-object-binding-element"}]},{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"}},name:"meta.paramter.array-binding-pattern.js.jsx",patterns:[{include:"#parameter-binding-element"},{include:"#punctuation-comma"}]}]},"destructuring-parameter-rest":{captures:{1:{name:"keyword.operator.rest.js.jsx"},2:{name:"variable.parameter.js.jsx"}},match:"(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)"},"destructuring-variable":{patterns:[{begin:"(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\{)",end:"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",name:"meta.object-binding-pattern-variable.js.jsx",patterns:[{include:"#object-binding-pattern"},{include:"#type-annotation"},{include:"#comment"}]},{begin:"(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\[)",end:"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",name:"meta.array-binding-pattern-variable.js.jsx",patterns:[{include:"#array-binding-pattern"},{include:"#type-annotation"},{include:"#comment"}]}]},"destructuring-variable-rest":{captures:{1:{name:"keyword.operator.rest.js.jsx"},2:{name:"meta.definition.variable.js.jsx variable.other.readwrite.js.jsx"}},match:"(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)"},"destructuring-variable-rest-const":{captures:{1:{name:"keyword.operator.rest.js.jsx"},2:{name:"meta.definition.variable.js.jsx variable.other.constant.js.jsx"}},match:"(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)"},directives:{begin:"^(///)\\s*(?=<(reference|amd-dependency|amd-module)(\\s+(path|types|no-default-lib|lib|name|resolution-mode)\\s*=\\s*((\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)))+\\s*/>\\s*$)",beginCaptures:{1:{name:"punctuation.definition.comment.js.jsx"}},end:"(?=$)",name:"comment.line.triple-slash.directive.js.jsx",patterns:[{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"}},name:"meta.tag.js.jsx",patterns:[{match:"path|types|no-default-lib|lib|name|resolution-mode",name:"entity.other.attribute-name.directive.js.jsx"},{match:"=",name:"keyword.operator.assignment.js.jsx"},{include:"#string"}]}]},docblock:{patterns:[{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"constant.language.access-type.jsdoc"}},match:`(?x) +((@)(?:access|api)) +\\s+ +(private|protected|public) +\\b`},{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) +((@)author) +\\s+ +( + [^@\\s<>*/] + (?:[^@<>*/]|\\*[^/])* +) +(?: + \\s* + (<) + ([^>\\s]+) + (>) +)?`},{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"}},match:`(?x) +((@)borrows) \\s+ +((?:[^@\\s*/]|\\*[^/])+) # <that namepath> +\\s+ (as) \\s+ # as +((?:[^@\\s*/]|\\*[^/])+) # <this namepath>`},{begin:"((@)example)\\s+",beginCaptures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"}},end:"(?=@|\\*/)",name:"meta.example.jsdoc",patterns:[{match:"^\\s\\*\\s+"},{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"}},contentName:"constant.other.description.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"}}},{captures:{0:{name:"source.embedded.js.jsx"}},match:"[^\\s@*](?:[^*]|\\*[^/])*"}]},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"constant.language.symbol-type.jsdoc"}},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:"variable.other.link.underline.jsdoc"},4:{name:"entity.name.type.instance.jsdoc"}},match:`(?x) +((@)see) +\\s+ +(?: + # URL + ( + (?=https?://) + (?:[^\\s*]|\\*[^/])+ + ) + | + # JSDoc namepath + ( + (?! + # Avoid matching bare URIs (also acceptable as links) + https?:// + | + # Avoid matching {@inline tags}; we match those below + (?:\\[[^\\[\\]]*\\])? # Possible description [preceding]{@tag} + {@(?:link|linkcode|linkplain|tutorial)\\b + ) + # Matched namepath + (?:[^@\\s*/]|\\*[^/])+ + ) +)`},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"variable.other.jsdoc"}},match:`(?x) +((@)template) +\\s+ +# One or more valid identifiers +( + [A-Za-z_$] # First character: non-numeric word character + [\\w$.\\[\\]]* # Rest of identifier + (?: # Possible list of additional identifiers + \\s* , \\s* + [A-Za-z_$] + [\\w$.\\[\\]]* + )* +)`},{begin:"(?x)((@)template)\\s+(?={)",beginCaptures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"}},end:"(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",patterns:[{include:"#jsdoctype"},{match:"([A-Za-z_$][\\w$.\\[\\]]*)",name:"variable.other.jsdoc"}]},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"variable.other.jsdoc"}},match:`(?x) +( + (@) + (?:arg|argument|const|constant|member|namespace|param|var) +) +\\s+ +( + [A-Za-z_$] + [\\w$.\\[\\]]* +)`},{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"},{match:"(?:[^@\\s*/]|\\*[^/])+",name:"entity.name.type.instance.jsdoc"}]},{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"},{match:"([A-Za-z_$][\\w$.\\[\\]]*)",name:"variable.other.jsdoc"},{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"}},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/])+)?|(?=\\*/))`,name:"variable.other.jsdoc"}]},{begin:`(?x) +( + (@) + (?:define|enum|exception|export|extends|lends|implements|modifies + |namespace|private|protected|returns?|satisfies|suppress|this|throws|type + |yields?) +) +\\s+(?={)`,beginCaptures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"}},end:"(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",patterns:[{include:"#jsdoctype"}]},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"entity.name.type.instance.jsdoc"}},match:`(?x) +( + (@) + (?:alias|augments|callback|constructs|emits|event|fires|exports? + |extends|external|function|func|host|lends|listens|interface|memberof!? + |method|module|mixes|mixin|name|requires|see|this|typedef|uses) +) +\\s+ +( + (?: + [^{}@\\s*] | \\*[^/] + )+ +)`},{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"}},contentName:"variable.other.jsdoc",end:"(\\3)|(?=$|\\*/)",endCaptures:{0:{name:"variable.other.jsdoc"},1:{name:"punctuation.definition.string.end.jsdoc"}}},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"variable.other.jsdoc"}},match:"((@)(?:default(?:value)?|license|tutorial|variation|version))\\s+([^\\s*]+)"},{captures:{1:{name:"punctuation.definition.block.tag.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",name:"storage.type.class.jsdoc"},{include:"#inline-tags"},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"}},match:"((@)(?:[_$[:alpha:]][_$[:alnum:]]*))(?=\\s+)"}]},"enum-declaration":{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:"(?<=\\})",name:"meta.enum.declaration.js.jsx",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"}]}]},"export-declaration":{patterns:[{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"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(export)\\s+(as)\\s+(namespace)\\s+([_$[:alpha:]][_$[:alnum:]]*)"},{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|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))",name:"meta.export.default.js.jsx",patterns:[{include:"#interface-declaration"},{include:"#expression"}]},{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(export)(?:\\s+(type))?\\b(?!(\\$)|(\\s*:))((?=\\s*[\\{*])|((?=\\s*[_$[:alpha:]][_$[:alnum:]]*(\\s|,))(?!\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b)))",beginCaptures:{1:{name:"keyword.control.export.js.jsx"},2:{name:"keyword.control.type.js.jsx"}},end:"(?=$|;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))",name:"meta.export.js.jsx",patterns:[{include:"#import-export-declaration"}]}]},expression:{patterns:[{include:"#expressionWithoutIdentifiers"},{include:"#identifiers"},{include:"#expressionPunctuations"}]},"expression-inside-possibly-arrow-parens":{patterns:[{include:"#expressionWithoutIdentifiers"},{include:"#comment"},{include:"#string"},{include:"#decorator"},{include:"#destructuring-parameter"},{captures:{1:{name:"storage.modifier.js.jsx"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|protected|private|readonly)\\s+(?=(override|public|protected|private|readonly)\\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:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)(?=\\s* +# function assignment | +(=\\s*( + ((async\\s+)?( + (function\\s*[(<*]) | + (function\\s+) | + ([_$[:alpha:]][_$[:alnum:]]*\\s*=>) + )) | + ((async\\s*)?( + ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + # sure shot arrow functions even if => is on new line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? + [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* + ( + ([)]\\s*:) | # (): + ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param: + ) +) | +( + [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends +) | +# arrow function possible to detect only with => on same line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters + \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) # parameters + (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type + \\s*=> # arrow operator +) + )) +)) | +# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) => +(:\\s*( + (<) | + ([(]\\s*( + ([)]) | + (\\.\\.\\.) | + ([_$[:alnum:]]+\\s*( + ([:,?=])| + ([)]\\s*=>) + )) + )) +)) | +(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) | +(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) | +(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*( + ((async\\s+)?( + (function\\s*[(<*]) | + (function\\s+) | + ([_$[:alpha:]][_$[:alnum:]]*\\s*=>) + )) | + ((async\\s*)?( + ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + # sure shot arrow functions even if => is on new line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? + [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* + ( + ([)]\\s*:) | # (): + ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param: + ) +) | +( + [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends +) | +# arrow function possible to detect only with => on same line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters + \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) # parameters + (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type + \\s*=> # arrow operator +) + )) +)))`},{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"}},match:"(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)(?=\\s*[:,]|$)"},{include:"#type-annotation"},{include:"#variable-initializer"},{match:",",name:"punctuation.separator.parameter.js.jsx"},{include:"#identifiers"},{include:"#expressionPunctuations"}]},"expression-operators":{patterns:[{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(await)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.control.flow.js.jsx"},{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"}]},{captures:{1:{name:"keyword.control.flow.js.jsx"},2:{name:"keyword.generator.asterisk.js.jsx"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(yield)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?:\\s*(\\*))?"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))delete(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.operator.expression.delete.js.jsx"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))in(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?!\\()",name:"keyword.operator.expression.in.js.jsx"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))of(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?!\\()",name:"keyword.operator.expression.of.js.jsx"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))instanceof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.operator.expression.instanceof.js.jsx"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))new(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.operator.new.js.jsx"},{include:"#typeof-operator"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))void(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.operator.expression.void.js.jsx"},{captures:{1:{name:"keyword.control.as.js.jsx"},2:{name:"storage.modifier.js.jsx"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+(const)(?=\\s*($|[;,:})\\]]))"},{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(as)|(satisfies))\\s+",beginCaptures:{1:{name:"keyword.control.as.js.jsx"},2:{name:"keyword.control.satisfies.js.jsx"}},end:"(?=^|[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as|satisfies)\\s+)|(\\s+\\<))",patterns:[{include:"#type"}]},{match:"\\.\\.\\.",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"},{captures:{1:{name:"keyword.operator.logical.js.jsx"},2:{name:"keyword.operator.assignment.compound.js.jsx"},3:{name:"keyword.operator.arithmetic.js.jsx"}},match:"(?<=[_$[:alnum:]])(\\!)\\s*(?:(/=)|(?:(/)(?![/*])))"},{match:"\\!|&&|\\|\\||\\?\\?",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"},{begin:"(?<=[_$[:alnum:])\\]])\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)+(?:(/=)|(?:(/)(?![/*]))))",end:"(?:(/=)|(?:(/)(?!\\*([^\\*]|(\\*[^\\/]))*\\*\\/)))",endCaptures:{1:{name:"keyword.operator.assignment.compound.js.jsx"},2:{name:"keyword.operator.arithmetic.js.jsx"}},patterns:[{include:"#comment"}]},{captures:{1:{name:"keyword.operator.assignment.compound.js.jsx"},2:{name:"keyword.operator.arithmetic.js.jsx"}},match:"(?<=[_$[:alnum:])\\]])\\s*(?:(/=)|(?:(/)(?![/*])))"}]},expressionPunctuations:{patterns:[{include:"#punctuation-comma"},{include:"#punctuation-accessor"}]},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"}]},"field-declaration":{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(?!\\$))|((?<!\\$)(?: + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3 + (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3 + (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3 + (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3 + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1 + (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1. + (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1 + (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1 +)(?!\\$))|(\\#?[_$[: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(?!\\$))|((?<!\\$)(?: + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3 + (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3 + (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3 + (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3 + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1 + (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1. + (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1 + (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1 +)(?!\\$))|(\\#?[_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(?:(?:(\\?)|(\\!))\\s*)?(=|:|;|,|$))))|(?<=\\})`,name:"meta.field.declaration.js.jsx",patterns:[{include:"#variable-initializer"},{include:"#type-annotation"},{include:"#string"},{include:"#array-literal"},{include:"#numeric-literal"},{include:"#comment"},{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"}},match:`(?x)(\\#?[_$[:alpha:]][_$[:alnum:]]*)(?:(\\?)|(\\!))?(?=\\s*\\s* +# function assignment | +(=\\s*( + ((async\\s+)?( + (function\\s*[(<*]) | + (function\\s+) | + ([_$[:alpha:]][_$[:alnum:]]*\\s*=>) + )) | + ((async\\s*)?( + ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + # sure shot arrow functions even if => is on new line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? + [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* + ( + ([)]\\s*:) | # (): + ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param: + ) +) | +( + [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends +) | +# arrow function possible to detect only with => on same line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters + \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) # parameters + (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type + \\s*=> # arrow operator +) + )) +)) | +# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) => +(:\\s*( + (<) | + ([(]\\s*( + ([)]) | + (\\.\\.\\.) | + ([_$[:alnum:]]+\\s*( + ([:,?=])| + ([)]\\s*=>) + )) + )) +)) | +(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) | +(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) | +(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*( + ((async\\s+)?( + (function\\s*[(<*]) | + (function\\s+) | + ([_$[:alpha:]][_$[:alnum:]]*\\s*=>) + )) | + ((async\\s*)?( + ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + # sure shot arrow functions even if => is on new line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? + [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* + ( + ([)]\\s*:) | # (): + ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param: + ) +) | +( + [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends +) | +# arrow function possible to detect only with => on same line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters + \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) # parameters + (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type + \\s*=> # arrow operator +) + )) +)))`},{match:"\\#?[_$[:alpha:]][_$[:alnum:]]*",name:"meta.definition.property.js.jsx variable.object.property.js.jsx"},{match:"\\?",name:"keyword.operator.optional.js.jsx"},{match:"\\!",name:"keyword.operator.definiteassignment.js.jsx"}]},"for-loop":{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))for(?=((\\s+|(\\s*\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*))await)?\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)?(\\())",beginCaptures:{0:{name:"keyword.control.loop.js.jsx"}},end:"(?<=\\))",patterns:[{include:"#comment"},{match:"await",name:"keyword.control.loop.js.jsx"},{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"}]}]},"function-body":{patterns:[{include:"#comment"},{include:"#type-parameters"},{include:"#function-parameters"},{include:"#return-type"},{include:"#type-function-return-type"},{include:"#decl-block"},{match:"\\*",name:"keyword.generator.asterisk.js.jsx"}]},"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:[{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*)?\\())",name:"meta.function-call.js.jsx",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:[{begin:"(?=(([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))",end:"(?=(<\\s*[\\{\\[\\(]\\s*$))",name:"meta.function-call.js.jsx",patterns:[{include:"#function-call-target"}]},{include:"#comment"},{include:"#function-call-optionals"},{include:"#type-arguments"}]}]},"function-call-optionals":{patterns:[{match:"\\?\\.",name:"meta.function-call.js.jsx punctuation.accessor.optional.js.jsx"},{match:"\\!",name:"meta.function-call.js.jsx keyword.operator.definiteassignment.js.jsx"}]},"function-call-target":{patterns:[{include:"#support-function-call-identifiers"},{match:"(\\#?[_$[:alpha:]][_$[:alnum:]]*)",name:"entity.name.function.js.jsx"}]},"function-declaration":{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|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))|(?<=\\})",name:"meta.function.js.jsx",patterns:[{include:"#function-name"},{include:"#function-body"}]},"function-expression":{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:"(?=;)|(?<=\\})",name:"meta.function.expression.js.jsx",patterns:[{include:"#function-name"},{include:"#single-line-comment-consuming-line-ending"},{include:"#function-body"}]},"function-name":{match:"[_$[:alpha:]][_$[:alnum:]]*",name:"meta.definition.function.js.jsx entity.name.function.js.jsx"},"function-parameters":{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.parameters.begin.js.jsx"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.parameters.end.js.jsx"}},name:"meta.parameters.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"},{match:",",name:"punctuation.separator.parameter.js.jsx"}]},identifiers:{patterns:[{include:"#object-identifiers"},{captures:{1:{name:"punctuation.accessor.js.jsx"},2:{name:"punctuation.accessor.optional.js.jsx"},3:{name:"entity.name.function.js.jsx"}},match:`(?x)(?:(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*)?([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*=\\s*( + ((async\\s+)?( + (function\\s*[(<*]) | + (function\\s+) | + ([_$[:alpha:]][_$[:alnum:]]*\\s*=>) + )) | + ((async\\s*)?( + ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + # sure shot arrow functions even if => is on new line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? + [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* + ( + ([)]\\s*:) | # (): + ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param: + ) +) | +( + [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends +) | +# arrow function possible to detect only with => on same line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters + \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) # parameters + (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type + \\s*=> # arrow operator +) + )) +))`},{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*(\\#?[[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])"},{captures:{1:{name:"punctuation.accessor.js.jsx"},2:{name:"punctuation.accessor.optional.js.jsx"},3:{name:"variable.other.property.js.jsx"}},match:"(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*)"},{match:"([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])",name:"variable.other.constant.js.jsx"},{match:"[_$[:alpha:]][_$[:alnum:]]*",name:"variable.other.readwrite.js.jsx"}]},"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"}]},{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"}},name:"string.regexp.js.jsx",patterns:[{include:"#regexp"}]},{include:"#statements"}]}]},"import-declaration":{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)(?=;|$|^)",name:"meta.import.js.jsx",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"}]},"import-equals-declaration":{patterns:[{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"}},name:"meta.import-equals.external.js.jsx",patterns:[{include:"#comment"},{include:"#string"}]},{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:"(?=;|$|^)",name:"meta.import-equals.internal.js.jsx",patterns:[{include:"#single-line-comment-consuming-line-ending"},{include:"#comment"},{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:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))"},{match:"([_$[:alpha:]][_$[:alnum:]]*)",name:"variable.other.readwrite.js.jsx"}]}]},"import-export-assert-clause":{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(assert)\\s*(\\{)",beginCaptures:{1:{name:"keyword.control.assert.js.jsx"},2:{name:"punctuation.definition.block.js.jsx"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.block.js.jsx"}},patterns:[{include:"#comment"},{include:"#string"},{match:"(?:[_$[:alpha:]][_$[:alnum:]]*)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:)",name:"meta.object-literal.key.js.jsx"},{match:":",name:"punctuation.separator.key-value.js.jsx"}]},"import-export-block":{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.block.js.jsx"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.block.js.jsx"}},name:"meta.block.js.jsx",patterns:[{include:"#import-export-clause"}]},"import-export-clause":{patterns:[{include:"#comment"},{captures:{1:{name:"keyword.control.type.js.jsx"},2:{name:"keyword.control.default.js.jsx"},3:{name:"constant.language.import-export-all.js.jsx"},4:{name:"variable.other.readwrite.js.jsx"},5:{name:"keyword.control.as.js.jsx"},6:{name:"keyword.control.default.js.jsx"},7:{name:"variable.other.readwrite.alias.js.jsx"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(?:(\\btype)\\s+)?(?:(\\bdefault)|(\\*)|(\\b[_$[:alpha:]][_$[:alnum:]]*)))\\s+(as)\\s+(?:(default(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|([_$[:alpha:]][_$[:alnum:]]*))"},{include:"#punctuation-comma"},{match:"\\*",name:"constant.language.import-export-all.js.jsx"},{match:"\\b(default)\\b",name:"keyword.control.default.js.jsx"},{captures:{1:{name:"keyword.control.type.js.jsx"},2:{name:"variable.other.readwrite.alias.js.jsx"}},match:"(?:(\\btype)\\s+)?([_$[:alpha:]][_$[:alnum:]]*)"}]},"import-export-declaration":{patterns:[{include:"#comment"},{include:"#string"},{include:"#import-export-block"},{match:"\\bfrom\\b",name:"keyword.control.from.js.jsx"},{include:"#import-export-assert-clause"},{include:"#import-export-clause"}]},"indexer-declaration":{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"}},name:"meta.indexer.declaration.js.jsx",patterns:[{include:"#type-annotation"}]},"indexer-mapped-type-declaration":{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"}},name:"meta.indexer.mappedtype.declaration.js.jsx",patterns:[{captures:{1:{name:"keyword.control.as.js.jsx"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+"},{include:"#type"}]},"inline-tags":{patterns:[{captures:{1:{name:"punctuation.definition.bracket.square.begin.jsdoc"},2:{name:"punctuation.definition.bracket.square.end.jsdoc"}},match:"(\\[)[^\\]]+(\\])(?={@(?:link|linkcode|linkplain|tutorial))",name:"constant.other.description.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"}},name:"entity.name.type.instance.jsdoc",patterns:[{captures:{1:{name:"variable.other.link.underline.jsdoc"},2:{name:"punctuation.separator.pipe.jsdoc"}},match:"\\G((?=https?://)(?:[^|}\\s*]|\\*[/])+)(\\|)?"},{captures:{1:{name:"variable.other.description.jsdoc"},2:{name:"punctuation.separator.pipe.jsdoc"}},match:"\\G((?:[^{}@\\s|*]|\\*[^/])+)(\\|)?"}]}]},"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"}]},"interface-declaration":{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:"(?<=\\})",name:"meta.interface.js.jsx",patterns:[{include:"#comment"},{include:"#class-or-interface-heritage"},{captures:{0:{name:"entity.name.type.interface.js.jsx"}},match:"[_$[:alpha:]][_$[:alnum:]]*"},{include:"#type-parameters"},{include:"#class-or-interface-body"}]},jsdoctype:{patterns:[{begin:"\\G({)",beginCaptures:{0:{name:"entity.name.type.instance.jsdoc"},1:{name:"punctuation.definition.bracket.curly.begin.jsdoc"}},contentName:"entity.name.type.instance.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-children":{patterns:[{include:"#jsx-tag-without-attributes"},{include:"#jsx-tag"},{include:"#jsx-evaluated-code"},{include:"#jsx-entities"}]},"jsx-entities":{patterns:[{captures:{1:{name:"punctuation.definition.entity.js.jsx"},3:{name:"punctuation.definition.entity.js.jsx"}},match:"(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)",name:"constant.character.entity.js.jsx"}]},"jsx-evaluated-code":{begin:"\\{",beginCaptures:{0:{name:"punctuation.section.embedded.begin.js.jsx"}},contentName:"meta.embedded.expression.js.jsx",end:"\\}",endCaptures:{0:{name:"punctuation.section.embedded.end.js.jsx"}},patterns:[{include:"#expression"}]},"jsx-string-double-quoted":{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.js.jsx"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.js.jsx"}},name:"string.quoted.double.js.jsx",patterns:[{include:"#jsx-entities"}]},"jsx-string-single-quoted":{begin:"'",beginCaptures:{0:{name:"punctuation.definition.string.begin.js.jsx"}},end:"'",endCaptures:{0:{name:"punctuation.definition.string.end.js.jsx"}},name:"string.quoted.single.js.jsx",patterns:[{include:"#jsx-entities"}]},"jsx-tag":{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"}},name:"meta.tag.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"}},contentName:"meta.jsx.children.js.jsx",end:"(?=</)",patterns:[{include:"#jsx-children"}]}]},"jsx-tag-attribute-assignment":{match:`=(?=\\s*(?:'|"|{|/\\*|//|\\n))`,name:"keyword.operator.assignment.js.jsx"},"jsx-tag-attribute-name":{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"}},match:`(?x) + \\s* + (?:([_$[:alpha:]][-_$[:alnum:].]*)(:))? + ([_$[:alpha:]][-_$[:alnum:]]*) + (?=\\s|=|/?>|/\\*|//)`},"jsx-tag-attributes":{begin:"\\s+",end:"(?=[/]?>)",name:"meta.tag.attributes.js.jsx",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-attributes-illegal":{match:"\\S+",name:"invalid.illegal.attribute.js.jsx"},"jsx-tag-in-expression":{begin:`(?x) + (?<!\\+\\+|--)(?<=[({\\[,?=>:*]|&&|\\|\\||\\?|\\*\\/|^await|[^\\._$[:alnum:]]await|^return|[^\\._$[:alnum:]]return|^default|[^\\._$[:alnum:]]default|^yield|[^\\._$[:alnum:]]yield|^)\\s* + (?!<\\s*[_$[:alpha:]][_$[:alnum:]]*((\\s+extends\\s+[^=>])|,)) # look ahead is not type parameter of arrow + (?=(<)\\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-without-attributes":{begin:"(<)\\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"}},contentName:"meta.jsx.children.js.jsx",end:"(</)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>)",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"}},name:"meta.tag.without-attributes.js.jsx",patterns:[{include:"#jsx-children"}]},"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"}]},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"}]},{captures:{1:{name:"entity.name.label.js.jsx"},2:{name:"punctuation.separator.label.js.jsx"}},match:"([_$[:alpha:]][_$[:alnum:]]*)\\s*(:)"}]},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"}]},"method-declaration":{patterns:[{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:"(?=\\}|;|,|$)|(?<=\\})",name:"meta.method.declaration.js.jsx",patterns:[{include:"#method-declaration-name"},{include:"#function-body"}]},{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*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\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:"(?=\\}|;|,|$)|(?<=\\})",name:"meta.method.declaration.js.jsx",patterns:[{include:"#method-declaration-name"},{include:"#function-body"}]},{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(?!\\$))|((?<!\\$)(?: + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3 + (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3 + (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3 + (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3 + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1 + (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1. + (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1 + (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1 +)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\s*((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\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:"(?=\\}|;|,|$)|(?<=\\})",name:"meta.method.declaration.js.jsx",patterns:[{include:"#method-declaration-name"},{include:"#function-body"}]}]},"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(?!\\$))|((?<!\\$)(?: + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3 + (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3 + (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3 + (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3 + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1 + (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1. + (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1 + (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1 +)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??)\\s*[\\(\\<])`,end:"(?=\\(|\\<)",patterns:[{include:"#string"},{include:"#array-literal"},{include:"#numeric-literal"},{match:"[_$[:alpha:]][_$[:alnum:]]*",name:"meta.definition.method.js.jsx entity.name.function.js.jsx"},{match:"\\?",name:"keyword.operator.optional.js.jsx"}]},"namespace-declaration":{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|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))",name:"meta.namespace.declaration.js.jsx",patterns:[{include:"#comment"},{include:"#string"},{match:"([_$[:alpha:]][_$[:alnum:]]*)",name:"entity.name.type.module.js.jsx"},{include:"#punctuation-accessor"},{include:"#decl-block"}]},"new-expr":{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(new)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",beginCaptures:{1:{name:"keyword.operator.new.js.jsx"}},end:"(?<=\\))|(?=[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))new(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))function((\\s+[_$[:alpha:]][_$[:alnum:]]*)|(\\s*[\\(]))))",name:"new.expr.js.jsx",patterns:[{include:"#expression"}]},"null-literal":{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))null(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"constant.language.null.js.jsx"},"numeric-literal":{patterns:[{captures:{1:{name:"storage.type.numeric.bigint.js.jsx"}},match:"\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$)",name:"constant.numeric.hex.js.jsx"},{captures:{1:{name:"storage.type.numeric.bigint.js.jsx"}},match:"\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$)",name:"constant.numeric.binary.js.jsx"},{captures:{1:{name:"storage.type.numeric.bigint.js.jsx"}},match:"\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$)",name:"constant.numeric.octal.js.jsx"},{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"}},match:`(?x) +(?<!\\$)(?: + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3 + (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3 + (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3 + (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3 + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1 + (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1. + (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1 + (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1 +)(?!\\$)`}]},"numericConstant-literal":{patterns:[{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))NaN(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"constant.language.nan.js.jsx"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Infinity(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"constant.language.infinity.js.jsx"}]},"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(?!\\$))|((?<!\\$)(?: + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3 + (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3 + (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3 + (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3 + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1 + (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1. + (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1 + (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1 +)(?!\\$))|([_$[: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(?!\\$))|((?<!\\$)(?: + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3 + (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3 + (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3 + (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3 + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1 + (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1. + (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1 + (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1 +)(?!\\$))|([_$[: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(?!\\$))|((?<!\\$)(?: + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3 + (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3 + (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3 + (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3 + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1 + (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1. + (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1 + (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1 +)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))`,end:"(:)",endCaptures:{0:{name:"punctuation.destructuring.js.jsx"}},patterns:[{include:"#string"},{include:"#array-literal"},{include:"#numeric-literal"},{match:"([_$[:alpha:]][_$[:alnum:]]*)",name:"variable.object.property.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"}]},"object-identifiers":{patterns:[{match:"([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*\\??\\.\\s*prototype\\b(?!\\$))",name:"support.class.js.jsx"},{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)(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(?: + (\\#?[[:upper:]][_$[:digit:][:upper:]]*) | + (\\#?[_$[:alpha:]][_$[:alnum:]]*) +)(?=\\s*\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*)`},{captures:{1:{name:"variable.other.constant.object.js.jsx"},2:{name:"variable.other.object.js.jsx"}},match:`(?x)(?: + ([[:upper:]][_$[:digit:][:upper:]]*) | + ([_$[:alpha:]][_$[:alnum:]]*) +)(?=\\s*\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*)`}]},"object-literal":{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.block.js.jsx"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.block.js.jsx"}},name:"meta.objectliteral.js.jsx",patterns:[{include:"#object-member"}]},"object-literal-method-declaration":{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(?!\\$))|((?<!\\$)(?: + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3 + (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3 + (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3 + (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3 + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1 + (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1. + (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1 + (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1 +)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\s*((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\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:"(?=\\}|;|,)|(?<=\\})",name:"meta.method.declaration.js.jsx",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(?!\\$))|((?<!\\$)(?: + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3 + (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3 + (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3 + (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3 + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1 + (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1. + (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1 + (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1 +)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\s*((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\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"}]}]},"object-member":{patterns:[{include:"#comment"},{include:"#object-literal-method-declaration"},{begin:"(?=\\[)",end:"(?=:)|((?<=[\\]])(?=\\s*[\\(\\<]))",name:"meta.object.member.js.jsx meta.object-literal.key.js.jsx",patterns:[{include:"#comment"},{include:"#array-literal"}]},{begin:"(?=[\\'\\\"\\`])",end:"(?=:)|((?<=[\\'\\\"\\`])(?=((\\s*[\\(\\<,}])|(\\s+(as|satisifies)\\s+))))",name:"meta.object.member.js.jsx meta.object-literal.key.js.jsx",patterns:[{include:"#comment"},{include:"#string"}]},{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(?!\\$))|((?<!\\$)(?: + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3 + (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3 + (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3 + (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3 + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1 + (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1. + (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1 + (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1 +)(?!\\$)))`,end:"(?=:)|(?=\\s*([\\(\\<,}])|(\\s+as|satisifies\\s+))",name:"meta.object.member.js.jsx meta.object-literal.key.js.jsx",patterns:[{include:"#comment"},{include:"#numeric-literal"}]},{begin:"(?<=[\\]\\'\\\"\\`])(?=\\s*[\\(\\<])",end:"(?=\\}|;|,)|(?<=\\})",name:"meta.method.declaration.js.jsx",patterns:[{include:"#function-body"}]},{captures:{0:{name:"meta.object-literal.key.js.jsx"},1:{name:"constant.numeric.decimal.js.jsx"}},match:"(?![_$[:alpha:]])([[:digit:]]+)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:)",name:"meta.object.member.js.jsx"},{captures:{0:{name:"meta.object-literal.key.js.jsx"},1:{name:"entity.name.function.js.jsx"}},match:`(?x)(?:([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:(\\s*\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/)*\\s*( + ((async\\s+)?( + (function\\s*[(<*]) | + (function\\s+) | + ([_$[:alpha:]][_$[:alnum:]]*\\s*=>) + )) | + ((async\\s*)?( + ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + # sure shot arrow functions even if => is on new line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? + [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* + ( + ([)]\\s*:) | # (): + ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param: + ) +) | +( + [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends +) | +# arrow function possible to detect only with => on same line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters + \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) # parameters + (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type + \\s*=> # arrow operator +) + )) +)))`,name:"meta.object.member.js.jsx"},{captures:{0:{name:"meta.object-literal.key.js.jsx"}},match:"(?:[_$[:alpha:]][_$[:alnum:]]*)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:)",name:"meta.object.member.js.jsx"},{begin:"\\.\\.\\.",beginCaptures:{0:{name:"keyword.operator.spread.js.jsx"}},end:"(?=,|\\})",name:"meta.object.member.js.jsx",patterns:[{include:"#expression"}]},{captures:{1:{name:"variable.other.readwrite.js.jsx"}},match:"([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=,|\\}|$|\\/\\/|\\/\\*)",name:"meta.object.member.js.jsx"},{captures:{1:{name:"keyword.control.as.js.jsx"},2:{name:"storage.modifier.js.jsx"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+(const)(?=\\s*([,}]|$))",name:"meta.object.member.js.jsx"},{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(as)|(satisfies))\\s+",beginCaptures:{1:{name:"keyword.control.as.js.jsx"},2:{name:"keyword.control.satisfies.js.jsx"}},end:"(?=[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|^|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as|satisifies)\\s+))",name:"meta.object.member.js.jsx",patterns:[{include:"#type"}]},{begin:"(?=[_$[:alpha:]][_$[:alnum:]]*\\s*=)",end:"(?=,|\\}|$|\\/\\/|\\/\\*)",name:"meta.object.member.js.jsx",patterns:[{include:"#expression"}]},{begin:":",beginCaptures:{0:{name:"meta.object-literal.key.js.jsx punctuation.separator.key-value.js.jsx"}},end:"(?=,|\\})",name:"meta.object.member.js.jsx",patterns:[{begin:"(?<=:)\\s*(async)?(?=\\s*(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\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"},{include:"#decl-block"}]},"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"}]},"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"}]},"parameter-name":{patterns:[{captures:{1:{name:"storage.modifier.js.jsx"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|protected|private|readonly)\\s+(?=(override|public|protected|private|readonly)\\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:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)(?=\\s* +# function assignment | +(=\\s*( + ((async\\s+)?( + (function\\s*[(<*]) | + (function\\s+) | + ([_$[:alpha:]][_$[:alnum:]]*\\s*=>) + )) | + ((async\\s*)?( + ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + # sure shot arrow functions even if => is on new line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? + [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* + ( + ([)]\\s*:) | # (): + ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param: + ) +) | +( + [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends +) | +# arrow function possible to detect only with => on same line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters + \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) # parameters + (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type + \\s*=> # arrow operator +) + )) +)) | +# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) => +(:\\s*( + (<) | + ([(]\\s*( + ([)]) | + (\\.\\.\\.) | + ([_$[:alnum:]]+\\s*( + ([:,?=])| + ([)]\\s*=>) + )) + )) +)) | +(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) | +(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) | +(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*( + ((async\\s+)?( + (function\\s*[(<*]) | + (function\\s+) | + ([_$[:alpha:]][_$[:alnum:]]*\\s*=>) + )) | + ((async\\s*)?( + ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + # sure shot arrow functions even if => is on new line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? + [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* + ( + ([)]\\s*:) | # (): + ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param: + ) +) | +( + [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends +) | +# arrow function possible to detect only with => on same line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters + \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) # parameters + (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type + \\s*=> # arrow operator +) + )) +)))`},{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"}},match:"(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)"}]},"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(?!\\$))|((?<!\\$)(?: + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3 + (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3 + (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3 + (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3 + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1 + (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1. + (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1 + (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1 +)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))`,end:"(?=,|\\})",patterns:[{include:"#object-binding-element-propertyName"},{include:"#parameter-binding-element"},{include:"#paren-expression"}]},{include:"#parameter-object-binding-pattern"},{include:"#destructuring-parameter-rest"},{include:"#variable-initializer"},{include:"#punctuation-comma"}]},"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-type-annotation":{patterns:[{begin:"(:)",beginCaptures:{1:{name:"keyword.operator.type.annotation.js.jsx"}},end:"(?=[,)])|(?==[^>])",name:"meta.type.annotation.js.jsx",patterns:[{include:"#type"}]}]},"paren-expression":{begin:"\\(",beginCaptures:{0:{name:"meta.brace.round.js.jsx"}},end:"\\)",endCaptures:{0:{name:"meta.brace.round.js.jsx"}},patterns:[{include:"#expression"}]},"paren-expression-possibly-arrow":{patterns:[{begin:"(?<=[(=,])\\s*(async)?(?=\\s*((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\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*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?\\()|(<)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\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"}]}]},"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"}},contentName:"meta.arrow.js.jsx meta.return.type.arrow.js.jsx",end:"(?==>|\\{|(^\\s*(export|function|class|interface|let|var|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|const|import|enum|namespace|module|type|abstract|declare)\\s+))",patterns:[{include:"#arrow-return-type-body"}]},"property-accessor":{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(accessor|get|set)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"storage.type.property.js.jsx"},"punctuation-accessor":{captures:{1:{name:"punctuation.accessor.js.jsx"},2:{name:"punctuation.accessor.optional.js.jsx"}},match:"(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))"},"punctuation-comma":{match:",",name:"punctuation.separator.comma.js.jsx"},"punctuation-semicolon":{match:";",name:"punctuation.terminator.statement.js.jsx"},"qstring-double":{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"}},name:"string.quoted.double.js.jsx",patterns:[{include:"#string-character-escape"}]},"qstring-single":{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"}},name:"string.quoted.single.js.jsx",patterns:[{include:"#string-character-escape"}]},regex:{patterns:[{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"}},name:"string.regexp.js.jsx",patterns:[{include:"#regexp"}]},{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"}},name:"string.regexp.js.jsx",patterns:[{include:"#regexp"}]}]},"regex-character-class":{patterns:[{match:"\\\\[wWsSdDtrnvf]|\\.",name:"constant.other.character-class.regexp"},{match:"\\\\([0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4})",name:"constant.character.numeric.regexp"},{match:"\\\\c[A-Z]",name:"constant.character.control.regexp"},{match:"\\\\.",name:"constant.character.escape.backslash.regexp"}]},regexp:{patterns:[{match:"\\\\[bB]|\\^|\\$",name:"keyword.control.anchor.regexp"},{captures:{0:{name:"keyword.other.back-reference.regexp"},1:{name:"variable.other.regexp"}},match:"\\\\[1-9]\\d*|\\\\k<([a-zA-Z_$][\\w$]*)>"},{match:"[?+*]|\\{(\\d+,\\d+|\\d+,|,\\d+|\\d+)\\}\\??",name:"keyword.operator.quantifier.regexp"},{match:"\\|",name:"keyword.operator.or.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"}},name:"meta.group.assertion.regexp",patterns:[{include:"#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"}},name:"meta.group.regexp",patterns:[{include:"#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"}},name:"constant.other.character-class.set.regexp",patterns:[{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"}},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])|(\\\\.))",name:"constant.other.character-class.range.regexp"},{include:"#regex-character-class"}]},{include:"#regex-character-class"}]},"return-type":{patterns:[{begin:"(?<=\\))\\s*(:)(?=\\s*\\S)",beginCaptures:{1:{name:"keyword.operator.type.annotation.js.jsx"}},end:"(?<![:|&])(?=$|^|[{};,]|//)",name:"meta.return.type.js.jsx",patterns:[{include:"#return-type-core"}]},{begin:"(?<=\\))\\s*(:)",beginCaptures:{1:{name:"keyword.operator.type.annotation.js.jsx"}},end:"(?<![:|&])((?=[{};,]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",name:"meta.return.type.js.jsx",patterns:[{include:"#return-type-core"}]}]},"return-type-core":{patterns:[{include:"#comment"},{begin:"(?<=[:|&])(?=\\s*\\{)",end:"(?<=\\})",patterns:[{include:"#type-object"}]},{include:"#type-predicate-operator"},{include:"#type"}]},shebang:{captures:{1:{name:"punctuation.definition.comment.js.jsx"}},match:"\\A(#!).*(?=$)",name:"comment.line.shebang.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"}},contentName:"comment.line.double-slash.js.jsx",end:"(?=^)"},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"}]},string:{patterns:[{include:"#qstring-single"},{include:"#qstring-double"},{include:"#template"}]},"string-character-escape":{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]?|.|$)",name:"constant.character.escape.js.jsx"},"super-literal":{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))super\\b(?!\\$)",name:"variable.language.super.js.jsx"},"support-function-call-identifiers":{patterns:[{include:"#literal"},{include:"#support-objects"},{include:"#object-identifiers"},{include:"#punctuation-accessor"},{match:"(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))import(?=\\s*[\\(]\\s*[\\\"\\'\\`]))",name:"keyword.operator.expression.import.js.jsx"}]},"support-objects":{patterns:[{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(arguments)\\b(?!\\$)",name:"variable.language.arguments.js.jsx"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(Promise)\\b(?!\\$)",name:"support.class.promise.js.jsx"},{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:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(import)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(meta)\\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:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(new)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(target)\\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:`(?x) (?:(\\.)|(\\?\\.(?!\\s*[[:digit:]]))) \\s* (?: + (?:(constructor|length|prototype|__proto__)\\b(?!\\$|\\s*(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\\()) + | + (?:(EPSILON|MAX_SAFE_INTEGER|MAX_VALUE|MIN_SAFE_INTEGER|MIN_VALUE|NEGATIVE_INFINITY|POSITIVE_INFINITY)\\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"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(exports)|(module)(?:(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))(exports|id|filename|loaded|parent|children))?)\\b(?!\\$)"}]},"switch-statement":{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?=\\bswitch\\s*\\()",end:"\\}",endCaptures:{0:{name:"punctuation.definition.block.js.jsx"}},name:"switch-statement.expr.js.jsx",patterns:[{include:"#comment"},{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"}},name:"switch-expression.expr.js.jsx",patterns:[{include:"#expression"}]},{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.block.js.jsx"}},end:"(?=\\})",name:"switch-block.expr.js.jsx",patterns:[{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(case|default(?=:))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",beginCaptures:{1:{name:"keyword.control.switch.js.jsx"}},end:"(?=:)",name:"case-clause.expr.js.jsx",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"}},contentName:"meta.block.js.jsx",end:"\\}",endCaptures:{0:{name:"meta.block.js.jsx punctuation.definition.block.js.jsx"}},patterns:[{include:"#statements"}]},{captures:{0:{name:"case-clause.expr.js.jsx punctuation.definition.section.case-statement.js.jsx"}},match:"(:)"},{include:"#statements"}]}]},template:{patterns:[{include:"#template-call"},{begin:"([_$[:alpha:]][_$[:alnum:]]*)?(`)",beginCaptures:{1:{name:"entity.name.function.tagged-template.js.jsx"},2:{name:"string.template.js.jsx punctuation.definition.string.template.begin.js.jsx"}},contentName:"string.template.js.jsx",end:"`",endCaptures:{0:{name:"string.template.js.jsx punctuation.definition.string.template.end.js.jsx"}},patterns:[{include:"#template-substitution-element"},{include:"#string-character-escape"}]}]},"template-call":{patterns:[{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"},{match:"([_$[:alpha:]][_$[:alnum:]]*)",name:"entity.name.function.tagged-template.js.jsx"}]},{include:"#type-arguments"}]},{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":{begin:"\\$\\{",beginCaptures:{0:{name:"punctuation.definition.template-expression.begin.js.jsx"}},contentName:"meta.embedded.line.js.jsx",end:"\\}",endCaptures:{0:{name:"punctuation.definition.template-expression.end.js.jsx"}},name:"meta.template.expression.js.jsx",patterns:[{include:"#expression"}]},"template-type":{patterns:[{include:"#template-call"},{begin:"([_$[:alpha:]][_$[:alnum:]]*)?(`)",beginCaptures:{1:{name:"entity.name.function.tagged-template.js.jsx"},2:{name:"string.template.js.jsx punctuation.definition.string.template.begin.js.jsx"}},contentName:"string.template.js.jsx",end:"`",endCaptures:{0:{name:"string.template.js.jsx punctuation.definition.string.template.end.js.jsx"}},patterns:[{include:"#template-type-substitution-element"},{include:"#string-character-escape"}]}]},"template-type-substitution-element":{begin:"\\$\\{",beginCaptures:{0:{name:"punctuation.definition.template-expression.begin.js.jsx"}},contentName:"meta.embedded.line.js.jsx",end:"\\}",endCaptures:{0:{name:"punctuation.definition.template-expression.end.js.jsx"}},name:"meta.template.expression.js.jsx",patterns:[{include:"#type"}]},"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"}]},"this-literal":{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))this\\b(?!\\$)",name:"variable.language.this.js.jsx"},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-operators"},{include:"#type-conditional"},{include:"#type-fn-type-parameters"},{include:"#type-paren-or-function-parameters"},{include:"#type-function-return-type"},{captures:{1:{name:"storage.modifier.js.jsx"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*"},{include:"#type-name"}]},"type-alias-declaration":{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|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))",name:"meta.type.declaration.js.jsx",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|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))",patterns:[{include:"#type"}]},{begin:"(=)\\s*",beginCaptures:{1:{name:"keyword.operator.assignment.js.jsx"}},end:"(?=\\}|;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))",patterns:[{include:"#type"}]}]},"type-annotation":{patterns:[{begin:"(:)(?=\\s*\\S)",beginCaptures:{1:{name:"keyword.operator.type.annotation.js.jsx"}},end:"(?<![:|&])(?!\\s*[|&]\\s+)((?=^|[,);\\}\\]]|//)|(?==[^>])|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))",name:"meta.type.annotation.js.jsx",patterns:[{include:"#type"}]},{begin:"(:)",beginCaptures:{1:{name:"keyword.operator.type.annotation.js.jsx"}},end:"(?<![:|&])((?=[,);\\}\\]]|\\/\\/)|(?==[^>])|(?=^\\s*$)|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))",name:"meta.type.annotation.js.jsx",patterns:[{include:"#type"}]}]},"type-arguments":{begin:"\\<",beginCaptures:{0:{name:"punctuation.definition.typeparameters.begin.js.jsx"}},end:"\\>",endCaptures:{0:{name:"punctuation.definition.typeparameters.end.js.jsx"}},name:"meta.type.parameters.js.jsx",patterns:[{include:"#type-arguments-body"}]},"type-arguments-body":{patterns:[{captures:{0:{name:"keyword.operator.type.js.jsx"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(_)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"},{include:"#type"},{include:"#punctuation-comma"}]},"type-builtin-literals":{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(this|true|false|undefined|null|object)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"support.type.builtin.js.jsx"},"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-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"}]},{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b\\s*(?=\\()",beginCaptures:{1:{name:"storage.modifier.js.jsx"},2:{name:"keyword.control.new.js.jsx"}},end:"(?<=\\))",name:"meta.type.constructor.js.jsx",patterns:[{include:"#function-parameters"}]},{begin:`(?x)( + (?= + [(]\\s*( + ([)]) | + (\\.\\.\\.) | + ([_$[:alnum:]]+\\s*( + ([:,?=])| + ([)]\\s*=>) + )) + ) + ) +)`,end:"(?<=\\))",name:"meta.type.function.js.jsx",patterns:[{include:"#function-parameters"}]}]},"type-function-return-type":{patterns:[{begin:"(=>)(?=\\s*\\S)",beginCaptures:{1:{name:"storage.type.function.arrow.js.jsx"}},end:"(?<!=>)(?<![|&])(?=[,\\]\\)\\{\\}=;>:\\?]|//|$)",name:"meta.type.function.return.js.jsx",patterns:[{include:"#type-function-return-type-core"}]},{begin:"=>",beginCaptures:{0:{name:"storage.type.function.arrow.js.jsx"}},end:"(?<!=>)(?<![|&])((?=[,\\]\\)\\{\\}=;:\\?>]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",name:"meta.type.function.return.js.jsx",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-infer":{patterns:[{captures:{1:{name:"keyword.operator.expression.infer.js.jsx"},2:{name:"entity.name.type.js.jsx"},3:{name:"keyword.operator.expression.extends.js.jsx"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(infer)\\s+([_$[:alpha:]][_$[:alnum:]]*)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?:\\s+(extends)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))?",name:"meta.type.infer.js.jsx"}]},"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"}},contentName:"meta.type.parameters.js.jsx",end:"(>)",endCaptures:{1:{name:"meta.type.parameters.js.jsx punctuation.definition.typeparameters.end.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"}},contentName:"meta.type.parameters.js.jsx",end:"(>)",endCaptures:{1:{name:"meta.type.parameters.js.jsx punctuation.definition.typeparameters.end.js.jsx"}},patterns:[{include:"#type-arguments-body"}]},{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:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))"},{match:"[_$[:alpha:]][_$[:alnum:]]*",name:"entity.name.type.js.jsx"}]},"type-object":{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.block.js.jsx"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.block.js.jsx"}},name:"meta.object.type.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-operators":{patterns:[{include:"#typeof-operator"},{include:"#type-infer"},{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)"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))keyof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.operator.expression.keyof.js.jsx"},{match:"(\\?|\\:)",name:"keyword.operator.ternary.js.jsx"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))import(?=\\s*\\()",name:"keyword.operator.expression.import.js.jsx"}]},"type-parameters":{begin:"(<)",beginCaptures:{1:{name:"punctuation.definition.typeparameters.begin.js.jsx"}},end:"(>)",endCaptures:{1:{name:"punctuation.definition.typeparameters.end.js.jsx"}},name:"meta.type.parameters.js.jsx",patterns:[{include:"#comment"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(extends|in|out|const)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"storage.modifier.js.jsx"},{include:"#type"},{include:"#punctuation-comma"},{match:"(=)(?!>)",name:"keyword.operator.assignment.js.jsx"}]},"type-paren-or-function-parameters":{begin:"\\(",beginCaptures:{0:{name:"meta.brace.round.js.jsx"}},end:"\\)",endCaptures:{0:{name:"meta.brace.round.js.jsx"}},name:"meta.type.paren.cover.js.jsx",patterns:[{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*(\\??)(?=\\s*(:\\s*( + (<) | + ([(]\\s*( + ([)]) | + (\\.\\.\\.) | + ([_$[:alnum:]]+\\s*( + ([:,?=])| + ([)]\\s*=>) + )) + )) +)) | +(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) | +(:\\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:"variable.parameter.js.jsx variable.language.this.js.jsx"},4:{name:"variable.parameter.js.jsx"},5:{name:"keyword.operator.optional.js.jsx"}},match:"(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=:)"},{include:"#type-annotation"},{match:",",name:"punctuation.separator.parameter.js.jsx"},{include:"#type"}]},"type-predicate-operator":{patterns:[{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+)?(?!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"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(asserts)\\s+(?!is)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))asserts(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.operator.type.asserts.js.jsx"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))is(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.operator.expression.is.js.jsx"}]},"type-primitive":{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(string|number|bigint|boolean|symbol|any|void|never|unknown)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"support.type.primitive.js.jsx"},"type-string":{patterns:[{include:"#qstring-single"},{include:"#qstring-double"},{include:"#template-type"}]},"type-tuple":{begin:"\\[",beginCaptures:{0:{name:"meta.brace.square.js.jsx"}},end:"\\]",endCaptures:{0:{name:"meta.brace.square.js.jsx"}},name:"meta.type.tuple.js.jsx",patterns:[{match:"\\.\\.\\.",name:"keyword.operator.rest.js.jsx"},{captures:{1:{name:"entity.name.label.js.jsx"},2:{name:"keyword.operator.optional.js.jsx"},3:{name:"punctuation.separator.label.js.jsx"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?)?\\s*(:)"},{include:"#type"},{include:"#punctuation-comma"}]},"typeof-operator":{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))typeof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",beginCaptures:{0:{name:"keyword.operator.expression.typeof.js.jsx"}},end:"(?=[,);}\\]=>:&|{\\?]|(extends\\s+)|$|;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))",patterns:[{include:"#type-arguments"},{include:"#expression"}]},"undefined-literal":{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))undefined(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"constant.language.undefined.js.jsx"},"var-expr":{patterns:[{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|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))|((?<!^let|[^\\._$[:alnum:]]let|^var|[^\\._$[:alnum:]]var)(?=\\s*$)))",name:"meta.var.expr.js.jsx",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*(?=$|\\/\\/)",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"}]},{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|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))|((?<!^const|[^\\._$[:alnum:]]const)(?=\\s*$)))",name:"meta.var.expr.js.jsx",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*(?=$|\\/\\/)",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"}]},{begin:"(?=(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b((?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\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((?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))((?=;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))|((?<!^using|[^\\._$[:alnum:]]using|^await\\s+using|[^\\._$[:alnum:]]await\\s+using)(?=\\s*$)))",name:"meta.var.expr.js.jsx",patterns:[{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b((?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\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:"#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:"#var-single-const"},{include:"#punctuation-comma"}]},{include:"#punctuation-comma"}]}]},"var-single-const":{patterns:[{begin:`(?x)([_$[:alpha:]][_$[:alnum:]]*)(?=\\s* +# function assignment | +(=\\s*( + ((async\\s+)?( + (function\\s*[(<*]) | + (function\\s+) | + ([_$[:alpha:]][_$[:alnum:]]*\\s*=>) + )) | + ((async\\s*)?( + ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + # sure shot arrow functions even if => is on new line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? + [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* + ( + ([)]\\s*:) | # (): + ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param: + ) +) | +( + [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends +) | +# arrow function possible to detect only with => on same line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters + \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) # parameters + (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type + \\s*=> # arrow operator +) + )) +)) | +# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) => +(:\\s*( + (<) | + ([(]\\s*( + ([)]) | + (\\.\\.\\.) | + ([_$[:alnum:]]+\\s*( + ([:,?=])| + ([)]\\s*=>) + )) + )) +)) | +(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) | +(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) | +(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*( + ((async\\s+)?( + (function\\s*[(<*]) | + (function\\s+) | + ([_$[:alpha:]][_$[:alnum:]]*\\s*=>) + )) | + ((async\\s*)?( + ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + # sure shot arrow functions even if => is on new line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? + [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* + ( + ([)]\\s*:) | # (): + ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param: + ) +) | +( + [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends +) | +# arrow function possible to detect only with => on same line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters + \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) # parameters + (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type + \\s*=> # arrow operator +) + )) +)))`,beginCaptures:{1:{name:"meta.definition.variable.js.jsx variable.other.constant.js.jsx entity.name.function.js.jsx"}},end:"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|(;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b)))",name:"meta.var-single-variable.expr.js.jsx",patterns:[{include:"#var-single-variable-type-annotation"}]},{begin:"([_$[:alpha:]][_$[:alnum:]]*)",beginCaptures:{1:{name:"meta.definition.variable.js.jsx variable.other.constant.js.jsx"}},end:"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|(;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b)))",name:"meta.var-single-variable.expr.js.jsx",patterns:[{include:"#var-single-variable-type-annotation"}]}]},"var-single-variable":{patterns:[{begin:`(?x)([_$[:alpha:]][_$[:alnum:]]*)(\\!)?(?=\\s* +# function assignment | +(=\\s*( + ((async\\s+)?( + (function\\s*[(<*]) | + (function\\s+) | + ([_$[:alpha:]][_$[:alnum:]]*\\s*=>) + )) | + ((async\\s*)?( + ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + # sure shot arrow functions even if => is on new line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? + [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* + ( + ([)]\\s*:) | # (): + ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param: + ) +) | +( + [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends +) | +# arrow function possible to detect only with => on same line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters + \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) # parameters + (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type + \\s*=> # arrow operator +) + )) +)) | +# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) => +(:\\s*( + (<) | + ([(]\\s*( + ([)]) | + (\\.\\.\\.) | + ([_$[:alnum:]]+\\s*( + ([:,?=])| + ([)]\\s*=>) + )) + )) +)) | +(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) | +(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) | +(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*( + ((async\\s+)?( + (function\\s*[(<*]) | + (function\\s+) | + ([_$[:alpha:]][_$[:alnum:]]*\\s*=>) + )) | + ((async\\s*)?( + ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + # sure shot arrow functions even if => is on new line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? + [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* + ( + ([)]\\s*:) | # (): + ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param: + ) +) | +( + [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends +) | +# arrow function possible to detect only with => on same line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters + \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) # parameters + (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type + \\s*=> # arrow operator +) + )) +)))`,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+)|(;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b)))",name:"meta.var-single-variable.expr.js.jsx",patterns:[{include:"#var-single-variable-type-annotation"}]},{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+)|(;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b)))",name:"meta.var-single-variable.expr.js.jsx",patterns:[{include:"#var-single-variable-type-annotation"}]},{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+)|(;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b)))",name:"meta.var-single-variable.expr.js.jsx",patterns:[{include:"#var-single-variable-type-annotation"}]}]},"var-single-variable-type-annotation":{patterns:[{include:"#type-annotation"},{include:"#string"},{include:"#comment"}]},"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"}]}]}},scopeName:"source.js.jsx"});var Xn=[ai];const si=Object.freeze({displayName:"TSX",name:"tsx",patterns:[{include:"#directives"},{include:"#statements"},{include:"#shebang"}],repository:{"access-modifier":{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(abstract|declare|override|public|protected|private|readonly|static)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"storage.modifier.tsx"},"after-operator-block-as-object-literal":{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"}},name:"meta.objectliteral.tsx",patterns:[{include:"#object-member"}]},"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"}]},"array-literal":{begin:"\\s*(\\[)",beginCaptures:{1:{name:"meta.brace.square.tsx"}},end:"\\]",endCaptures:{0:{name:"meta.brace.square.tsx"}},name:"meta.array.literal.tsx",patterns:[{include:"#expression"},{include:"#punctuation-comma"}]},"arrow-function":{patterns:[{captures:{1:{name:"storage.modifier.async.tsx"},2:{name:"variable.parameter.tsx"}},match:"(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(\\basync)\\s+)?([_$[:alpha:]][_$[:alnum:]]*)\\s*(?==>)",name:"meta.arrow.tsx"},{begin:`(?x) (?: + (?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(\\basync) +)? ((?<![})!\\]])\\s* + (?= + # sure shot arrow functions even if => is on new line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? + [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* + ( + ([)]\\s*:) | # (): + ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param: + ) +) | +( + [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends +) | +# arrow function possible to detect only with => on same line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters + \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) # parameters + (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type + \\s*=> # arrow operator +) + ) +)`,beginCaptures:{1:{name:"storage.modifier.async.tsx"}},end:"(?==>|\\{|(^\\s*(export|function|class|interface|let|var|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|const|import|enum|namespace|module|type|abstract|declare)\\s+))",name:"meta.arrow.tsx",patterns:[{include:"#comment"},{include:"#type-parameters"},{include:"#function-parameters"},{include:"#arrow-return-type"},{include:"#possibly-arrow-return-type"}]},{begin:"=>",beginCaptures:{0:{name:"storage.type.function.arrow.tsx"}},end:"((?<=\\}|\\S)(?<!=>)|((?!\\{)(?=\\S)))(?!\\/[\\/\\*])",name:"meta.arrow.tsx",patterns:[{include:"#single-line-comment-consuming-line-ending"},{include:"#decl-block"},{include:"#expression"}]}]},"arrow-return-type":{begin:"(?<=\\))\\s*(:)",beginCaptures:{1:{name:"keyword.operator.type.annotation.tsx"}},end:"(?==>|\\{|(^\\s*(export|function|class|interface|let|var|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|const|import|enum|namespace|module|type|abstract|declare)\\s+))",name:"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"}]},"async-modifier":{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(async)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"storage.modifier.async.tsx"},"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"}]},"boolean-literal":{patterns:[{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))true(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"constant.language.boolean.true.tsx"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))false(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"constant.language.boolean.false.tsx"}]},brackets:{patterns:[{begin:"{",end:"}|(?=\\*/)",patterns:[{include:"#brackets"}]},{begin:"\\[",end:"\\]|(?=\\*/)",patterns:[{include:"#brackets"}]}]},cast:{patterns:[{include:"#jsx"}]},"class-declaration":{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:"(?<=\\})",name:"meta.class.tsx",patterns:[{include:"#class-declaration-or-expression-patterns"}]},"class-declaration-or-expression-patterns":{patterns:[{include:"#comment"},{include:"#class-or-interface-heritage"},{captures:{0:{name:"entity.name.type.class.tsx"}},match:"[_$[:alpha:]][_$[:alnum:]]*"},{include:"#type-parameters"},{include:"#class-or-interface-body"}]},"class-expression":{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(class)\\b(?=\\s+|[<{]|\\/[\\/*])",beginCaptures:{1:{name:"storage.modifier.tsx"},2:{name:"storage.type.class.tsx"}},end:"(?<=\\})",name:"meta.class.tsx",patterns:[{include:"#class-declaration-or-expression-patterns"}]},"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|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\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"}]},"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"},{captures:{1:{name:"entity.name.type.module.tsx"},2:{name:"punctuation.accessor.tsx"},3:{name:"punctuation.accessor.optional.tsx"}},match:"([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))(?=\\s*[_$[:alpha:]][_$[:alnum:]]*(\\s*\\??\\.\\s*[_$[:alpha:]][_$[:alnum:]]*)*\\s*)"},{captures:{1:{name:"entity.other.inherited-class.tsx"}},match:"([_$[:alpha:]][_$[:alnum:]]*)"},{include:"#expressionPunctuations"}]},comment:{patterns:[{begin:"/\\*\\*(?!/)",beginCaptures:{0:{name:"punctuation.definition.comment.tsx"}},end:"\\*/",endCaptures:{0:{name:"punctuation.definition.comment.tsx"}},name:"comment.block.documentation.tsx",patterns:[{include:"#docblock"}]},{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"}},name:"comment.block.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"}},contentName:"comment.line.double-slash.tsx",end:"(?=$)"}]},"control-statement":{patterns:[{include:"#switch-statement"},{include:"#for-loop"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(catch|finally|throw|try)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.control.trycatch.tsx"},{captures:{1:{name:"keyword.control.loop.tsx"},2:{name:"entity.name.label.tsx"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(break|continue|goto)\\s+([_$[:alpha:]][_$[:alnum:]]*)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(break|continue|do|goto|while)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.control.loop.tsx"},{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(return)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",beginCaptures:{0:{name:"keyword.control.flow.tsx"}},end:"(?=[;}]|$|;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))",patterns:[{include:"#expression"}]},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(case|default|switch)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.control.switch.tsx"},{include:"#if-statement"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(else|if)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.control.conditional.tsx"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(with)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.control.with.tsx"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(package)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.control.tsx"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(debugger)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.other.debugger.tsx"}]},"decl-block":{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.block.tsx"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.block.tsx"}},name:"meta.block.tsx",patterns:[{include:"#statements"}]},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"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(declare|export)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"storage.modifier.tsx"}]},decorator:{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))\\@",beginCaptures:{0:{name:"punctuation.decorator.tsx"}},end:"(?=\\s)",name:"meta.decorator.tsx",patterns:[{include:"#expression"}]},"destructuring-const":{patterns:[{begin:"(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\{)",end:"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",name:"meta.object-binding-pattern-variable.tsx",patterns:[{include:"#object-binding-pattern-const"},{include:"#type-annotation"},{include:"#comment"}]},{begin:"(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\[)",end:"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",name:"meta.array-binding-pattern-variable.tsx",patterns:[{include:"#array-binding-pattern-const"},{include:"#type-annotation"},{include:"#comment"}]}]},"destructuring-parameter":{patterns:[{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"}},name:"meta.parameter.object-binding-pattern.tsx",patterns:[{include:"#parameter-object-binding-element"}]},{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"}},name:"meta.paramter.array-binding-pattern.tsx",patterns:[{include:"#parameter-binding-element"},{include:"#punctuation-comma"}]}]},"destructuring-parameter-rest":{captures:{1:{name:"keyword.operator.rest.tsx"},2:{name:"variable.parameter.tsx"}},match:"(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)"},"destructuring-variable":{patterns:[{begin:"(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\{)",end:"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",name:"meta.object-binding-pattern-variable.tsx",patterns:[{include:"#object-binding-pattern"},{include:"#type-annotation"},{include:"#comment"}]},{begin:"(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\[)",end:"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",name:"meta.array-binding-pattern-variable.tsx",patterns:[{include:"#array-binding-pattern"},{include:"#type-annotation"},{include:"#comment"}]}]},"destructuring-variable-rest":{captures:{1:{name:"keyword.operator.rest.tsx"},2:{name:"meta.definition.variable.tsx variable.other.readwrite.tsx"}},match:"(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)"},"destructuring-variable-rest-const":{captures:{1:{name:"keyword.operator.rest.tsx"},2:{name:"meta.definition.variable.tsx variable.other.constant.tsx"}},match:"(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)"},directives:{begin:"^(///)\\s*(?=<(reference|amd-dependency|amd-module)(\\s+(path|types|no-default-lib|lib|name|resolution-mode)\\s*=\\s*((\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)))+\\s*/>\\s*$)",beginCaptures:{1:{name:"punctuation.definition.comment.tsx"}},end:"(?=$)",name:"comment.line.triple-slash.directive.tsx",patterns:[{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"}},name:"meta.tag.tsx",patterns:[{match:"path|types|no-default-lib|lib|name|resolution-mode",name:"entity.other.attribute-name.directive.tsx"},{match:"=",name:"keyword.operator.assignment.tsx"},{include:"#string"}]}]},docblock:{patterns:[{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"constant.language.access-type.jsdoc"}},match:`(?x) +((@)(?:access|api)) +\\s+ +(private|protected|public) +\\b`},{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) +((@)author) +\\s+ +( + [^@\\s<>*/] + (?:[^@<>*/]|\\*[^/])* +) +(?: + \\s* + (<) + ([^>\\s]+) + (>) +)?`},{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"}},match:`(?x) +((@)borrows) \\s+ +((?:[^@\\s*/]|\\*[^/])+) # <that namepath> +\\s+ (as) \\s+ # as +((?:[^@\\s*/]|\\*[^/])+) # <this namepath>`},{begin:"((@)example)\\s+",beginCaptures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"}},end:"(?=@|\\*/)",name:"meta.example.jsdoc",patterns:[{match:"^\\s\\*\\s+"},{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"}},contentName:"constant.other.description.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"}}},{captures:{0:{name:"source.embedded.tsx"}},match:"[^\\s@*](?:[^*]|\\*[^/])*"}]},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"constant.language.symbol-type.jsdoc"}},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:"variable.other.link.underline.jsdoc"},4:{name:"entity.name.type.instance.jsdoc"}},match:`(?x) +((@)see) +\\s+ +(?: + # URL + ( + (?=https?://) + (?:[^\\s*]|\\*[^/])+ + ) + | + # JSDoc namepath + ( + (?! + # Avoid matching bare URIs (also acceptable as links) + https?:// + | + # Avoid matching {@inline tags}; we match those below + (?:\\[[^\\[\\]]*\\])? # Possible description [preceding]{@tag} + {@(?:link|linkcode|linkplain|tutorial)\\b + ) + # Matched namepath + (?:[^@\\s*/]|\\*[^/])+ + ) +)`},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"variable.other.jsdoc"}},match:`(?x) +((@)template) +\\s+ +# One or more valid identifiers +( + [A-Za-z_$] # First character: non-numeric word character + [\\w$.\\[\\]]* # Rest of identifier + (?: # Possible list of additional identifiers + \\s* , \\s* + [A-Za-z_$] + [\\w$.\\[\\]]* + )* +)`},{begin:"(?x)((@)template)\\s+(?={)",beginCaptures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"}},end:"(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",patterns:[{include:"#jsdoctype"},{match:"([A-Za-z_$][\\w$.\\[\\]]*)",name:"variable.other.jsdoc"}]},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"variable.other.jsdoc"}},match:`(?x) +( + (@) + (?:arg|argument|const|constant|member|namespace|param|var) +) +\\s+ +( + [A-Za-z_$] + [\\w$.\\[\\]]* +)`},{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"},{match:"(?:[^@\\s*/]|\\*[^/])+",name:"entity.name.type.instance.jsdoc"}]},{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"},{match:"([A-Za-z_$][\\w$.\\[\\]]*)",name:"variable.other.jsdoc"},{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"}},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/])+)?|(?=\\*/))`,name:"variable.other.jsdoc"}]},{begin:`(?x) +( + (@) + (?:define|enum|exception|export|extends|lends|implements|modifies + |namespace|private|protected|returns?|satisfies|suppress|this|throws|type + |yields?) +) +\\s+(?={)`,beginCaptures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"}},end:"(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",patterns:[{include:"#jsdoctype"}]},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"entity.name.type.instance.jsdoc"}},match:`(?x) +( + (@) + (?:alias|augments|callback|constructs|emits|event|fires|exports? + |extends|external|function|func|host|lends|listens|interface|memberof!? + |method|module|mixes|mixin|name|requires|see|this|typedef|uses) +) +\\s+ +( + (?: + [^{}@\\s*] | \\*[^/] + )+ +)`},{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"}},contentName:"variable.other.jsdoc",end:"(\\3)|(?=$|\\*/)",endCaptures:{0:{name:"variable.other.jsdoc"},1:{name:"punctuation.definition.string.end.jsdoc"}}},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"},3:{name:"variable.other.jsdoc"}},match:"((@)(?:default(?:value)?|license|tutorial|variation|version))\\s+([^\\s*]+)"},{captures:{1:{name:"punctuation.definition.block.tag.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",name:"storage.type.class.jsdoc"},{include:"#inline-tags"},{captures:{1:{name:"storage.type.class.jsdoc"},2:{name:"punctuation.definition.block.tag.jsdoc"}},match:"((@)(?:[_$[:alpha:]][_$[:alnum:]]*))(?=\\s+)"}]},"enum-declaration":{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:"(?<=\\})",name:"meta.enum.declaration.tsx",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"}]}]},"export-declaration":{patterns:[{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"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(export)\\s+(as)\\s+(namespace)\\s+([_$[:alpha:]][_$[:alnum:]]*)"},{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|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))",name:"meta.export.default.tsx",patterns:[{include:"#interface-declaration"},{include:"#expression"}]},{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(export)(?:\\s+(type))?\\b(?!(\\$)|(\\s*:))((?=\\s*[\\{*])|((?=\\s*[_$[:alpha:]][_$[:alnum:]]*(\\s|,))(?!\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b)))",beginCaptures:{1:{name:"keyword.control.export.tsx"},2:{name:"keyword.control.type.tsx"}},end:"(?=$|;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))",name:"meta.export.tsx",patterns:[{include:"#import-export-declaration"}]}]},expression:{patterns:[{include:"#expressionWithoutIdentifiers"},{include:"#identifiers"},{include:"#expressionPunctuations"}]},"expression-inside-possibly-arrow-parens":{patterns:[{include:"#expressionWithoutIdentifiers"},{include:"#comment"},{include:"#string"},{include:"#decorator"},{include:"#destructuring-parameter"},{captures:{1:{name:"storage.modifier.tsx"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|protected|private|readonly)\\s+(?=(override|public|protected|private|readonly)\\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:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)(?=\\s* +# function assignment | +(=\\s*( + ((async\\s+)?( + (function\\s*[(<*]) | + (function\\s+) | + ([_$[:alpha:]][_$[:alnum:]]*\\s*=>) + )) | + ((async\\s*)?( + ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + # sure shot arrow functions even if => is on new line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? + [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* + ( + ([)]\\s*:) | # (): + ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param: + ) +) | +( + [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends +) | +# arrow function possible to detect only with => on same line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters + \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) # parameters + (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type + \\s*=> # arrow operator +) + )) +)) | +# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) => +(:\\s*( + (<) | + ([(]\\s*( + ([)]) | + (\\.\\.\\.) | + ([_$[:alnum:]]+\\s*( + ([:,?=])| + ([)]\\s*=>) + )) + )) +)) | +(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) | +(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) | +(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*( + ((async\\s+)?( + (function\\s*[(<*]) | + (function\\s+) | + ([_$[:alpha:]][_$[:alnum:]]*\\s*=>) + )) | + ((async\\s*)?( + ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + # sure shot arrow functions even if => is on new line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? + [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* + ( + ([)]\\s*:) | # (): + ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param: + ) +) | +( + [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends +) | +# arrow function possible to detect only with => on same line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters + \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) # parameters + (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type + \\s*=> # arrow operator +) + )) +)))`},{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"}},match:"(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)(?=\\s*[:,]|$)"},{include:"#type-annotation"},{include:"#variable-initializer"},{match:",",name:"punctuation.separator.parameter.tsx"},{include:"#identifiers"},{include:"#expressionPunctuations"}]},"expression-operators":{patterns:[{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(await)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.control.flow.tsx"},{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(yield)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?=\\s*\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*\\*)",beginCaptures:{1:{name:"keyword.control.flow.tsx"}},end:"\\*",endCaptures:{0:{name:"keyword.generator.asterisk.tsx"}},patterns:[{include:"#comment"}]},{captures:{1:{name:"keyword.control.flow.tsx"},2:{name:"keyword.generator.asterisk.tsx"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(yield)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?:\\s*(\\*))?"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))delete(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.operator.expression.delete.tsx"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))in(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?!\\()",name:"keyword.operator.expression.in.tsx"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))of(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?!\\()",name:"keyword.operator.expression.of.tsx"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))instanceof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.operator.expression.instanceof.tsx"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))new(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.operator.new.tsx"},{include:"#typeof-operator"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))void(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.operator.expression.void.tsx"},{captures:{1:{name:"keyword.control.as.tsx"},2:{name:"storage.modifier.tsx"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+(const)(?=\\s*($|[;,:})\\]]))"},{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(as)|(satisfies))\\s+",beginCaptures:{1:{name:"keyword.control.as.tsx"},2:{name:"keyword.control.satisfies.tsx"}},end:"(?=^|[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as|satisfies)\\s+)|(\\s+\\<))",patterns:[{include:"#type"}]},{match:"\\.\\.\\.",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"},{captures:{1:{name:"keyword.operator.logical.tsx"},2:{name:"keyword.operator.assignment.compound.tsx"},3:{name:"keyword.operator.arithmetic.tsx"}},match:"(?<=[_$[:alnum:]])(\\!)\\s*(?:(/=)|(?:(/)(?![/*])))"},{match:"\\!|&&|\\|\\||\\?\\?",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"},{begin:"(?<=[_$[:alnum:])\\]])\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)+(?:(/=)|(?:(/)(?![/*]))))",end:"(?:(/=)|(?:(/)(?!\\*([^\\*]|(\\*[^\\/]))*\\*\\/)))",endCaptures:{1:{name:"keyword.operator.assignment.compound.tsx"},2:{name:"keyword.operator.arithmetic.tsx"}},patterns:[{include:"#comment"}]},{captures:{1:{name:"keyword.operator.assignment.compound.tsx"},2:{name:"keyword.operator.arithmetic.tsx"}},match:"(?<=[_$[:alnum:])\\]])\\s*(?:(/=)|(?:(/)(?![/*])))"}]},expressionPunctuations:{patterns:[{include:"#punctuation-comma"},{include:"#punctuation-accessor"}]},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"}]},"field-declaration":{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(?!\\$))|((?<!\\$)(?: + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3 + (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3 + (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3 + (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3 + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1 + (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1. + (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1 + (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1 +)(?!\\$))|(\\#?[_$[: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(?!\\$))|((?<!\\$)(?: + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3 + (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3 + (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3 + (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3 + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1 + (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1. + (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1 + (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1 +)(?!\\$))|(\\#?[_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(?:(?:(\\?)|(\\!))\\s*)?(=|:|;|,|$))))|(?<=\\})`,name:"meta.field.declaration.tsx",patterns:[{include:"#variable-initializer"},{include:"#type-annotation"},{include:"#string"},{include:"#array-literal"},{include:"#numeric-literal"},{include:"#comment"},{captures:{1:{name:"meta.definition.property.tsx entity.name.function.tsx"},2:{name:"keyword.operator.optional.tsx"},3:{name:"keyword.operator.definiteassignment.tsx"}},match:`(?x)(\\#?[_$[:alpha:]][_$[:alnum:]]*)(?:(\\?)|(\\!))?(?=\\s*\\s* +# function assignment | +(=\\s*( + ((async\\s+)?( + (function\\s*[(<*]) | + (function\\s+) | + ([_$[:alpha:]][_$[:alnum:]]*\\s*=>) + )) | + ((async\\s*)?( + ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + # sure shot arrow functions even if => is on new line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? + [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* + ( + ([)]\\s*:) | # (): + ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param: + ) +) | +( + [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends +) | +# arrow function possible to detect only with => on same line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters + \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) # parameters + (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type + \\s*=> # arrow operator +) + )) +)) | +# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) => +(:\\s*( + (<) | + ([(]\\s*( + ([)]) | + (\\.\\.\\.) | + ([_$[:alnum:]]+\\s*( + ([:,?=])| + ([)]\\s*=>) + )) + )) +)) | +(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) | +(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) | +(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*( + ((async\\s+)?( + (function\\s*[(<*]) | + (function\\s+) | + ([_$[:alpha:]][_$[:alnum:]]*\\s*=>) + )) | + ((async\\s*)?( + ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + # sure shot arrow functions even if => is on new line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? + [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* + ( + ([)]\\s*:) | # (): + ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param: + ) +) | +( + [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends +) | +# arrow function possible to detect only with => on same line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters + \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) # parameters + (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type + \\s*=> # arrow operator +) + )) +)))`},{match:"\\#?[_$[:alpha:]][_$[:alnum:]]*",name:"meta.definition.property.tsx variable.object.property.tsx"},{match:"\\?",name:"keyword.operator.optional.tsx"},{match:"\\!",name:"keyword.operator.definiteassignment.tsx"}]},"for-loop":{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))for(?=((\\s+|(\\s*\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*))await)?\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)?(\\())",beginCaptures:{0:{name:"keyword.control.loop.tsx"}},end:"(?<=\\))",patterns:[{include:"#comment"},{match:"await",name:"keyword.control.loop.tsx"},{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"}]}]},"function-body":{patterns:[{include:"#comment"},{include:"#type-parameters"},{include:"#function-parameters"},{include:"#return-type"},{include:"#type-function-return-type"},{include:"#decl-block"},{match:"\\*",name:"keyword.generator.asterisk.tsx"}]},"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:[{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*)?\\())",name:"meta.function-call.tsx",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:[{begin:"(?=(([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))",end:"(?=(<\\s*[\\{\\[\\(]\\s*$))",name:"meta.function-call.tsx",patterns:[{include:"#function-call-target"}]},{include:"#comment"},{include:"#function-call-optionals"},{include:"#type-arguments"}]}]},"function-call-optionals":{patterns:[{match:"\\?\\.",name:"meta.function-call.tsx punctuation.accessor.optional.tsx"},{match:"\\!",name:"meta.function-call.tsx keyword.operator.definiteassignment.tsx"}]},"function-call-target":{patterns:[{include:"#support-function-call-identifiers"},{match:"(\\#?[_$[:alpha:]][_$[:alnum:]]*)",name:"entity.name.function.tsx"}]},"function-declaration":{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|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))|(?<=\\})",name:"meta.function.tsx",patterns:[{include:"#function-name"},{include:"#function-body"}]},"function-expression":{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:"(?=;)|(?<=\\})",name:"meta.function.expression.tsx",patterns:[{include:"#function-name"},{include:"#single-line-comment-consuming-line-ending"},{include:"#function-body"}]},"function-name":{match:"[_$[:alpha:]][_$[:alnum:]]*",name:"meta.definition.function.tsx entity.name.function.tsx"},"function-parameters":{begin:"\\(",beginCaptures:{0:{name:"punctuation.definition.parameters.begin.tsx"}},end:"\\)",endCaptures:{0:{name:"punctuation.definition.parameters.end.tsx"}},name:"meta.parameters.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"},{match:",",name:"punctuation.separator.parameter.tsx"}]},identifiers:{patterns:[{include:"#object-identifiers"},{captures:{1:{name:"punctuation.accessor.tsx"},2:{name:"punctuation.accessor.optional.tsx"},3:{name:"entity.name.function.tsx"}},match:`(?x)(?:(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*)?([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*=\\s*( + ((async\\s+)?( + (function\\s*[(<*]) | + (function\\s+) | + ([_$[:alpha:]][_$[:alnum:]]*\\s*=>) + )) | + ((async\\s*)?( + ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + # sure shot arrow functions even if => is on new line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? + [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* + ( + ([)]\\s*:) | # (): + ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param: + ) +) | +( + [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends +) | +# arrow function possible to detect only with => on same line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters + \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) # parameters + (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type + \\s*=> # arrow operator +) + )) +))`},{captures:{1:{name:"punctuation.accessor.tsx"},2:{name:"punctuation.accessor.optional.tsx"},3:{name:"variable.other.constant.property.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.property.tsx"}},match:"(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*)"},{match:"([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])",name:"variable.other.constant.tsx"},{match:"[_$[:alpha:]][_$[:alnum:]]*",name:"variable.other.readwrite.tsx"}]},"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"}]},{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"}},name:"string.regexp.tsx",patterns:[{include:"#regexp"}]},{include:"#statements"}]}]},"import-declaration":{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)(?=;|$|^)",name:"meta.import.tsx",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"}]},"import-equals-declaration":{patterns:[{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"}},name:"meta.import-equals.external.tsx",patterns:[{include:"#comment"},{include:"#string"}]},{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:"(?=;|$|^)",name:"meta.import-equals.internal.tsx",patterns:[{include:"#single-line-comment-consuming-line-ending"},{include:"#comment"},{captures:{1:{name:"entity.name.type.module.tsx"},2:{name:"punctuation.accessor.tsx"},3:{name:"punctuation.accessor.optional.tsx"}},match:"([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))"},{match:"([_$[:alpha:]][_$[:alnum:]]*)",name:"variable.other.readwrite.tsx"}]}]},"import-export-assert-clause":{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(assert)\\s*(\\{)",beginCaptures:{1:{name:"keyword.control.assert.tsx"},2:{name:"punctuation.definition.block.tsx"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.block.tsx"}},patterns:[{include:"#comment"},{include:"#string"},{match:"(?:[_$[:alpha:]][_$[:alnum:]]*)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:)",name:"meta.object-literal.key.tsx"},{match:":",name:"punctuation.separator.key-value.tsx"}]},"import-export-block":{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.block.tsx"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.block.tsx"}},name:"meta.block.tsx",patterns:[{include:"#import-export-clause"}]},"import-export-clause":{patterns:[{include:"#comment"},{captures:{1:{name:"keyword.control.type.tsx"},2:{name:"keyword.control.default.tsx"},3:{name:"constant.language.import-export-all.tsx"},4:{name:"variable.other.readwrite.tsx"},5:{name:"keyword.control.as.tsx"},6:{name:"keyword.control.default.tsx"},7:{name:"variable.other.readwrite.alias.tsx"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(?:(\\btype)\\s+)?(?:(\\bdefault)|(\\*)|(\\b[_$[:alpha:]][_$[:alnum:]]*)))\\s+(as)\\s+(?:(default(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|([_$[:alpha:]][_$[:alnum:]]*))"},{include:"#punctuation-comma"},{match:"\\*",name:"constant.language.import-export-all.tsx"},{match:"\\b(default)\\b",name:"keyword.control.default.tsx"},{captures:{1:{name:"keyword.control.type.tsx"},2:{name:"variable.other.readwrite.alias.tsx"}},match:"(?:(\\btype)\\s+)?([_$[:alpha:]][_$[:alnum:]]*)"}]},"import-export-declaration":{patterns:[{include:"#comment"},{include:"#string"},{include:"#import-export-block"},{match:"\\bfrom\\b",name:"keyword.control.from.tsx"},{include:"#import-export-assert-clause"},{include:"#import-export-clause"}]},"indexer-declaration":{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"}},name:"meta.indexer.declaration.tsx",patterns:[{include:"#type-annotation"}]},"indexer-mapped-type-declaration":{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"}},name:"meta.indexer.mappedtype.declaration.tsx",patterns:[{captures:{1:{name:"keyword.control.as.tsx"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+"},{include:"#type"}]},"inline-tags":{patterns:[{captures:{1:{name:"punctuation.definition.bracket.square.begin.jsdoc"},2:{name:"punctuation.definition.bracket.square.end.jsdoc"}},match:"(\\[)[^\\]]+(\\])(?={@(?:link|linkcode|linkplain|tutorial))",name:"constant.other.description.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"}},name:"entity.name.type.instance.jsdoc",patterns:[{captures:{1:{name:"variable.other.link.underline.jsdoc"},2:{name:"punctuation.separator.pipe.jsdoc"}},match:"\\G((?=https?://)(?:[^|}\\s*]|\\*[/])+)(\\|)?"},{captures:{1:{name:"variable.other.description.jsdoc"},2:{name:"punctuation.separator.pipe.jsdoc"}},match:"\\G((?:[^{}@\\s|*]|\\*[^/])+)(\\|)?"}]}]},"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"}]},"interface-declaration":{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:"(?<=\\})",name:"meta.interface.tsx",patterns:[{include:"#comment"},{include:"#class-or-interface-heritage"},{captures:{0:{name:"entity.name.type.interface.tsx"}},match:"[_$[:alpha:]][_$[:alnum:]]*"},{include:"#type-parameters"},{include:"#class-or-interface-body"}]},jsdoctype:{patterns:[{begin:"\\G({)",beginCaptures:{0:{name:"entity.name.type.instance.jsdoc"},1:{name:"punctuation.definition.bracket.curly.begin.jsdoc"}},contentName:"entity.name.type.instance.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-children":{patterns:[{include:"#jsx-tag-without-attributes"},{include:"#jsx-tag"},{include:"#jsx-evaluated-code"},{include:"#jsx-entities"}]},"jsx-entities":{patterns:[{captures:{1:{name:"punctuation.definition.entity.tsx"},3:{name:"punctuation.definition.entity.tsx"}},match:"(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)",name:"constant.character.entity.tsx"}]},"jsx-evaluated-code":{begin:"\\{",beginCaptures:{0:{name:"punctuation.section.embedded.begin.tsx"}},contentName:"meta.embedded.expression.tsx",end:"\\}",endCaptures:{0:{name:"punctuation.section.embedded.end.tsx"}},patterns:[{include:"#expression"}]},"jsx-string-double-quoted":{begin:'"',beginCaptures:{0:{name:"punctuation.definition.string.begin.tsx"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.tsx"}},name:"string.quoted.double.tsx",patterns:[{include:"#jsx-entities"}]},"jsx-string-single-quoted":{begin:"'",beginCaptures:{0:{name:"punctuation.definition.string.begin.tsx"}},end:"'",endCaptures:{0:{name:"punctuation.definition.string.end.tsx"}},name:"string.quoted.single.tsx",patterns:[{include:"#jsx-entities"}]},"jsx-tag":{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"}},name:"meta.tag.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"}},contentName:"meta.jsx.children.tsx",end:"(?=</)",patterns:[{include:"#jsx-children"}]}]},"jsx-tag-attribute-assignment":{match:`=(?=\\s*(?:'|"|{|/\\*|//|\\n))`,name:"keyword.operator.assignment.tsx"},"jsx-tag-attribute-name":{captures:{1:{name:"entity.other.attribute-name.namespace.tsx"},2:{name:"punctuation.separator.namespace.tsx"},3:{name:"entity.other.attribute-name.tsx"}},match:`(?x) + \\s* + (?:([_$[:alpha:]][-_$[:alnum:].]*)(:))? + ([_$[:alpha:]][-_$[:alnum:]]*) + (?=\\s|=|/?>|/\\*|//)`},"jsx-tag-attributes":{begin:"\\s+",end:"(?=[/]?>)",name:"meta.tag.attributes.tsx",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-attributes-illegal":{match:"\\S+",name:"invalid.illegal.attribute.tsx"},"jsx-tag-in-expression":{begin:`(?x) + (?<!\\+\\+|--)(?<=[({\\[,?=>:*]|&&|\\|\\||\\?|\\*\\/|^await|[^\\._$[:alnum:]]await|^return|[^\\._$[:alnum:]]return|^default|[^\\._$[:alnum:]]default|^yield|[^\\._$[:alnum:]]yield|^)\\s* + (?!<\\s*[_$[:alpha:]][_$[:alnum:]]*((\\s+extends\\s+[^=>])|,)) # look ahead is not type parameter of arrow + (?=(<)\\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-without-attributes":{begin:"(<)\\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"}},contentName:"meta.jsx.children.tsx",end:"(</)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>)",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"}},name:"meta.tag.without-attributes.tsx",patterns:[{include:"#jsx-children"}]},"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"}]},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"}]},{captures:{1:{name:"entity.name.label.tsx"},2:{name:"punctuation.separator.label.tsx"}},match:"([_$[:alpha:]][_$[:alnum:]]*)\\s*(:)"}]},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"}]},"method-declaration":{patterns:[{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:"(?=\\}|;|,|$)|(?<=\\})",name:"meta.method.declaration.tsx",patterns:[{include:"#method-declaration-name"},{include:"#function-body"}]},{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*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\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:"(?=\\}|;|,|$)|(?<=\\})",name:"meta.method.declaration.tsx",patterns:[{include:"#method-declaration-name"},{include:"#function-body"}]},{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(?!\\$))|((?<!\\$)(?: + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3 + (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3 + (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3 + (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3 + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1 + (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1. + (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1 + (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1 +)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\s*((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\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:"(?=\\}|;|,|$)|(?<=\\})",name:"meta.method.declaration.tsx",patterns:[{include:"#method-declaration-name"},{include:"#function-body"}]}]},"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(?!\\$))|((?<!\\$)(?: + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3 + (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3 + (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3 + (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3 + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1 + (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1. + (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1 + (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1 +)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??)\\s*[\\(\\<])`,end:"(?=\\(|\\<)",patterns:[{include:"#string"},{include:"#array-literal"},{include:"#numeric-literal"},{match:"[_$[:alpha:]][_$[:alnum:]]*",name:"meta.definition.method.tsx entity.name.function.tsx"},{match:"\\?",name:"keyword.operator.optional.tsx"}]},"namespace-declaration":{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|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))",name:"meta.namespace.declaration.tsx",patterns:[{include:"#comment"},{include:"#string"},{match:"([_$[:alpha:]][_$[:alnum:]]*)",name:"entity.name.type.module.tsx"},{include:"#punctuation-accessor"},{include:"#decl-block"}]},"new-expr":{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(new)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",beginCaptures:{1:{name:"keyword.operator.new.tsx"}},end:"(?<=\\))|(?=[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))new(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))function((\\s+[_$[:alpha:]][_$[:alnum:]]*)|(\\s*[\\(]))))",name:"new.expr.tsx",patterns:[{include:"#expression"}]},"null-literal":{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))null(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"constant.language.null.tsx"},"numeric-literal":{patterns:[{captures:{1:{name:"storage.type.numeric.bigint.tsx"}},match:"\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$)",name:"constant.numeric.hex.tsx"},{captures:{1:{name:"storage.type.numeric.bigint.tsx"}},match:"\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$)",name:"constant.numeric.binary.tsx"},{captures:{1:{name:"storage.type.numeric.bigint.tsx"}},match:"\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$)",name:"constant.numeric.octal.tsx"},{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"}},match:`(?x) +(?<!\\$)(?: + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3 + (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3 + (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3 + (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3 + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1 + (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1. + (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1 + (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1 +)(?!\\$)`}]},"numericConstant-literal":{patterns:[{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))NaN(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"constant.language.nan.tsx"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Infinity(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"constant.language.infinity.tsx"}]},"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(?!\\$))|((?<!\\$)(?: + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3 + (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3 + (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3 + (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3 + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1 + (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1. + (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1 + (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1 +)(?!\\$))|([_$[: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(?!\\$))|((?<!\\$)(?: + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3 + (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3 + (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3 + (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3 + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1 + (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1. + (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1 + (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1 +)(?!\\$))|([_$[: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(?!\\$))|((?<!\\$)(?: + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3 + (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3 + (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3 + (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3 + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1 + (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1. + (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1 + (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1 +)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))`,end:"(:)",endCaptures:{0:{name:"punctuation.destructuring.tsx"}},patterns:[{include:"#string"},{include:"#array-literal"},{include:"#numeric-literal"},{match:"([_$[:alpha:]][_$[:alnum:]]*)",name:"variable.object.property.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"}]},"object-identifiers":{patterns:[{match:"([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*\\??\\.\\s*prototype\\b(?!\\$))",name:"support.class.tsx"},{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)(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(?: + (\\#?[[:upper:]][_$[:digit:][:upper:]]*) | + (\\#?[_$[:alpha:]][_$[:alnum:]]*) +)(?=\\s*\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*)`},{captures:{1:{name:"variable.other.constant.object.tsx"},2:{name:"variable.other.object.tsx"}},match:`(?x)(?: + ([[:upper:]][_$[:digit:][:upper:]]*) | + ([_$[:alpha:]][_$[:alnum:]]*) +)(?=\\s*\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*)`}]},"object-literal":{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.block.tsx"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.block.tsx"}},name:"meta.objectliteral.tsx",patterns:[{include:"#object-member"}]},"object-literal-method-declaration":{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(?!\\$))|((?<!\\$)(?: + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3 + (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3 + (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3 + (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3 + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1 + (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1. + (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1 + (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1 +)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\s*((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])`,beginCaptures:{1:{name:"storage.modifier.async.tsx"},2:{name:"storage.type.property.tsx"},3:{name:"keyword.generator.asterisk.tsx"}},end:"(?=\\}|;|,)|(?<=\\})",name:"meta.method.declaration.tsx",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(?!\\$))|((?<!\\$)(?: + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3 + (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3 + (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3 + (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3 + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1 + (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1. + (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1 + (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1 +)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\s*((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\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"}]}]},"object-member":{patterns:[{include:"#comment"},{include:"#object-literal-method-declaration"},{begin:"(?=\\[)",end:"(?=:)|((?<=[\\]])(?=\\s*[\\(\\<]))",name:"meta.object.member.tsx meta.object-literal.key.tsx",patterns:[{include:"#comment"},{include:"#array-literal"}]},{begin:"(?=[\\'\\\"\\`])",end:"(?=:)|((?<=[\\'\\\"\\`])(?=((\\s*[\\(\\<,}])|(\\s+(as|satisifies)\\s+))))",name:"meta.object.member.tsx meta.object-literal.key.tsx",patterns:[{include:"#comment"},{include:"#string"}]},{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(?!\\$))|((?<!\\$)(?: + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3 + (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3 + (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3 + (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3 + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1 + (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1. + (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1 + (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1 +)(?!\\$)))`,end:"(?=:)|(?=\\s*([\\(\\<,}])|(\\s+as|satisifies\\s+))",name:"meta.object.member.tsx meta.object-literal.key.tsx",patterns:[{include:"#comment"},{include:"#numeric-literal"}]},{begin:"(?<=[\\]\\'\\\"\\`])(?=\\s*[\\(\\<])",end:"(?=\\}|;|,)|(?<=\\})",name:"meta.method.declaration.tsx",patterns:[{include:"#function-body"}]},{captures:{0:{name:"meta.object-literal.key.tsx"},1:{name:"constant.numeric.decimal.tsx"}},match:"(?![_$[:alpha:]])([[:digit:]]+)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:)",name:"meta.object.member.tsx"},{captures:{0:{name:"meta.object-literal.key.tsx"},1:{name:"entity.name.function.tsx"}},match:`(?x)(?:([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:(\\s*\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/)*\\s*( + ((async\\s+)?( + (function\\s*[(<*]) | + (function\\s+) | + ([_$[:alpha:]][_$[:alnum:]]*\\s*=>) + )) | + ((async\\s*)?( + ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + # sure shot arrow functions even if => is on new line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? + [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* + ( + ([)]\\s*:) | # (): + ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param: + ) +) | +( + [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends +) | +# arrow function possible to detect only with => on same line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters + \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) # parameters + (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type + \\s*=> # arrow operator +) + )) +)))`,name:"meta.object.member.tsx"},{captures:{0:{name:"meta.object-literal.key.tsx"}},match:"(?:[_$[:alpha:]][_$[:alnum:]]*)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:)",name:"meta.object.member.tsx"},{begin:"\\.\\.\\.",beginCaptures:{0:{name:"keyword.operator.spread.tsx"}},end:"(?=,|\\})",name:"meta.object.member.tsx",patterns:[{include:"#expression"}]},{captures:{1:{name:"variable.other.readwrite.tsx"}},match:"([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=,|\\}|$|\\/\\/|\\/\\*)",name:"meta.object.member.tsx"},{captures:{1:{name:"keyword.control.as.tsx"},2:{name:"storage.modifier.tsx"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+(const)(?=\\s*([,}]|$))",name:"meta.object.member.tsx"},{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(as)|(satisfies))\\s+",beginCaptures:{1:{name:"keyword.control.as.tsx"},2:{name:"keyword.control.satisfies.tsx"}},end:"(?=[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|^|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as|satisifies)\\s+))",name:"meta.object.member.tsx",patterns:[{include:"#type"}]},{begin:"(?=[_$[:alpha:]][_$[:alnum:]]*\\s*=)",end:"(?=,|\\}|$|\\/\\/|\\/\\*)",name:"meta.object.member.tsx",patterns:[{include:"#expression"}]},{begin:":",beginCaptures:{0:{name:"meta.object-literal.key.tsx punctuation.separator.key-value.tsx"}},end:"(?=,|\\})",name:"meta.object.member.tsx",patterns:[{begin:"(?<=:)\\s*(async)?(?=\\s*(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\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"},{include:"#decl-block"}]},"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"}]},"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"}]},"parameter-name":{patterns:[{captures:{1:{name:"storage.modifier.tsx"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|protected|private|readonly)\\s+(?=(override|public|protected|private|readonly)\\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:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)(?=\\s* +# function assignment | +(=\\s*( + ((async\\s+)?( + (function\\s*[(<*]) | + (function\\s+) | + ([_$[:alpha:]][_$[:alnum:]]*\\s*=>) + )) | + ((async\\s*)?( + ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + # sure shot arrow functions even if => is on new line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? + [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* + ( + ([)]\\s*:) | # (): + ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param: + ) +) | +( + [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends +) | +# arrow function possible to detect only with => on same line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters + \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) # parameters + (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type + \\s*=> # arrow operator +) + )) +)) | +# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) => +(:\\s*( + (<) | + ([(]\\s*( + ([)]) | + (\\.\\.\\.) | + ([_$[:alnum:]]+\\s*( + ([:,?=])| + ([)]\\s*=>) + )) + )) +)) | +(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) | +(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) | +(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*( + ((async\\s+)?( + (function\\s*[(<*]) | + (function\\s+) | + ([_$[:alpha:]][_$[:alnum:]]*\\s*=>) + )) | + ((async\\s*)?( + ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + # sure shot arrow functions even if => is on new line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? + [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* + ( + ([)]\\s*:) | # (): + ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param: + ) +) | +( + [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends +) | +# arrow function possible to detect only with => on same line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters + \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) # parameters + (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type + \\s*=> # arrow operator +) + )) +)))`},{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"}},match:"(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)"}]},"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(?!\\$))|((?<!\\$)(?: + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3 + (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3 + (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3 + (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3 + (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1 + (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1. + (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1 + (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1 +)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))`,end:"(?=,|\\})",patterns:[{include:"#object-binding-element-propertyName"},{include:"#parameter-binding-element"},{include:"#paren-expression"}]},{include:"#parameter-object-binding-pattern"},{include:"#destructuring-parameter-rest"},{include:"#variable-initializer"},{include:"#punctuation-comma"}]},"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-type-annotation":{patterns:[{begin:"(:)",beginCaptures:{1:{name:"keyword.operator.type.annotation.tsx"}},end:"(?=[,)])|(?==[^>])",name:"meta.type.annotation.tsx",patterns:[{include:"#type"}]}]},"paren-expression":{begin:"\\(",beginCaptures:{0:{name:"meta.brace.round.tsx"}},end:"\\)",endCaptures:{0:{name:"meta.brace.round.tsx"}},patterns:[{include:"#expression"}]},"paren-expression-possibly-arrow":{patterns:[{begin:"(?<=[(=,])\\s*(async)?(?=\\s*((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\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*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?\\()|(<)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\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"}]}]},"possibly-arrow-return-type":{begin:"(?<=\\)|^)\\s*(:)(?=\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*=>)",beginCaptures:{1:{name:"meta.arrow.tsx meta.return.type.arrow.tsx keyword.operator.type.annotation.tsx"}},contentName:"meta.arrow.tsx meta.return.type.arrow.tsx",end:"(?==>|\\{|(^\\s*(export|function|class|interface|let|var|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|const|import|enum|namespace|module|type|abstract|declare)\\s+))",patterns:[{include:"#arrow-return-type-body"}]},"property-accessor":{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(accessor|get|set)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"storage.type.property.tsx"},"punctuation-accessor":{captures:{1:{name:"punctuation.accessor.tsx"},2:{name:"punctuation.accessor.optional.tsx"}},match:"(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))"},"punctuation-comma":{match:",",name:"punctuation.separator.comma.tsx"},"punctuation-semicolon":{match:";",name:"punctuation.terminator.statement.tsx"},"qstring-double":{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"}},name:"string.quoted.double.tsx",patterns:[{include:"#string-character-escape"}]},"qstring-single":{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"}},name:"string.quoted.single.tsx",patterns:[{include:"#string-character-escape"}]},regex:{patterns:[{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"}},name:"string.regexp.tsx",patterns:[{include:"#regexp"}]},{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"}},name:"string.regexp.tsx",patterns:[{include:"#regexp"}]}]},"regex-character-class":{patterns:[{match:"\\\\[wWsSdDtrnvf]|\\.",name:"constant.other.character-class.regexp"},{match:"\\\\([0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4})",name:"constant.character.numeric.regexp"},{match:"\\\\c[A-Z]",name:"constant.character.control.regexp"},{match:"\\\\.",name:"constant.character.escape.backslash.regexp"}]},regexp:{patterns:[{match:"\\\\[bB]|\\^|\\$",name:"keyword.control.anchor.regexp"},{captures:{0:{name:"keyword.other.back-reference.regexp"},1:{name:"variable.other.regexp"}},match:"\\\\[1-9]\\d*|\\\\k<([a-zA-Z_$][\\w$]*)>"},{match:"[?+*]|\\{(\\d+,\\d+|\\d+,|,\\d+|\\d+)\\}\\??",name:"keyword.operator.quantifier.regexp"},{match:"\\|",name:"keyword.operator.or.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"}},name:"meta.group.assertion.regexp",patterns:[{include:"#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"}},name:"meta.group.regexp",patterns:[{include:"#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"}},name:"constant.other.character-class.set.regexp",patterns:[{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"}},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])|(\\\\.))",name:"constant.other.character-class.range.regexp"},{include:"#regex-character-class"}]},{include:"#regex-character-class"}]},"return-type":{patterns:[{begin:"(?<=\\))\\s*(:)(?=\\s*\\S)",beginCaptures:{1:{name:"keyword.operator.type.annotation.tsx"}},end:"(?<![:|&])(?=$|^|[{};,]|//)",name:"meta.return.type.tsx",patterns:[{include:"#return-type-core"}]},{begin:"(?<=\\))\\s*(:)",beginCaptures:{1:{name:"keyword.operator.type.annotation.tsx"}},end:"(?<![:|&])((?=[{};,]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",name:"meta.return.type.tsx",patterns:[{include:"#return-type-core"}]}]},"return-type-core":{patterns:[{include:"#comment"},{begin:"(?<=[:|&])(?=\\s*\\{)",end:"(?<=\\})",patterns:[{include:"#type-object"}]},{include:"#type-predicate-operator"},{include:"#type"}]},shebang:{captures:{1:{name:"punctuation.definition.comment.tsx"}},match:"\\A(#!).*(?=$)",name:"comment.line.shebang.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"}},contentName:"comment.line.double-slash.tsx",end:"(?=^)"},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"}]},string:{patterns:[{include:"#qstring-single"},{include:"#qstring-double"},{include:"#template"}]},"string-character-escape":{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]?|.|$)",name:"constant.character.escape.tsx"},"super-literal":{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))super\\b(?!\\$)",name:"variable.language.super.tsx"},"support-function-call-identifiers":{patterns:[{include:"#literal"},{include:"#support-objects"},{include:"#object-identifiers"},{include:"#punctuation-accessor"},{match:"(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))import(?=\\s*[\\(]\\s*[\\\"\\'\\`]))",name:"keyword.operator.expression.import.tsx"}]},"support-objects":{patterns:[{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(arguments)\\b(?!\\$)",name:"variable.language.arguments.tsx"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(Promise)\\b(?!\\$)",name:"support.class.promise.tsx"},{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:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(import)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(meta)\\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:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(new)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(target)\\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:`(?x) (?:(\\.)|(\\?\\.(?!\\s*[[:digit:]]))) \\s* (?: + (?:(constructor|length|prototype|__proto__)\\b(?!\\$|\\s*(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\\()) + | + (?:(EPSILON|MAX_SAFE_INTEGER|MAX_VALUE|MIN_SAFE_INTEGER|MIN_VALUE|NEGATIVE_INFINITY|POSITIVE_INFINITY)\\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"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(exports)|(module)(?:(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))(exports|id|filename|loaded|parent|children))?)\\b(?!\\$)"}]},"switch-statement":{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?=\\bswitch\\s*\\()",end:"\\}",endCaptures:{0:{name:"punctuation.definition.block.tsx"}},name:"switch-statement.expr.tsx",patterns:[{include:"#comment"},{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"}},name:"switch-expression.expr.tsx",patterns:[{include:"#expression"}]},{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.block.tsx"}},end:"(?=\\})",name:"switch-block.expr.tsx",patterns:[{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(case|default(?=:))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",beginCaptures:{1:{name:"keyword.control.switch.tsx"}},end:"(?=:)",name:"case-clause.expr.tsx",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"}},contentName:"meta.block.tsx",end:"\\}",endCaptures:{0:{name:"meta.block.tsx punctuation.definition.block.tsx"}},patterns:[{include:"#statements"}]},{captures:{0:{name:"case-clause.expr.tsx punctuation.definition.section.case-statement.tsx"}},match:"(:)"},{include:"#statements"}]}]},template:{patterns:[{include:"#template-call"},{begin:"([_$[:alpha:]][_$[:alnum:]]*)?(`)",beginCaptures:{1:{name:"entity.name.function.tagged-template.tsx"},2:{name:"string.template.tsx punctuation.definition.string.template.begin.tsx"}},contentName:"string.template.tsx",end:"`",endCaptures:{0:{name:"string.template.tsx punctuation.definition.string.template.end.tsx"}},patterns:[{include:"#template-substitution-element"},{include:"#string-character-escape"}]}]},"template-call":{patterns:[{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"},{match:"([_$[:alpha:]][_$[:alnum:]]*)",name:"entity.name.function.tagged-template.tsx"}]},{include:"#type-arguments"}]},{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":{begin:"\\$\\{",beginCaptures:{0:{name:"punctuation.definition.template-expression.begin.tsx"}},contentName:"meta.embedded.line.tsx",end:"\\}",endCaptures:{0:{name:"punctuation.definition.template-expression.end.tsx"}},name:"meta.template.expression.tsx",patterns:[{include:"#expression"}]},"template-type":{patterns:[{include:"#template-call"},{begin:"([_$[:alpha:]][_$[:alnum:]]*)?(`)",beginCaptures:{1:{name:"entity.name.function.tagged-template.tsx"},2:{name:"string.template.tsx punctuation.definition.string.template.begin.tsx"}},contentName:"string.template.tsx",end:"`",endCaptures:{0:{name:"string.template.tsx punctuation.definition.string.template.end.tsx"}},patterns:[{include:"#template-type-substitution-element"},{include:"#string-character-escape"}]}]},"template-type-substitution-element":{begin:"\\$\\{",beginCaptures:{0:{name:"punctuation.definition.template-expression.begin.tsx"}},contentName:"meta.embedded.line.tsx",end:"\\}",endCaptures:{0:{name:"punctuation.definition.template-expression.end.tsx"}},name:"meta.template.expression.tsx",patterns:[{include:"#type"}]},"ternary-expression":{begin:"(?!\\?\\.\\s*[^[:digit:]])(\\?)(?!\\?)",beginCaptures:{1:{name:"keyword.operator.ternary.tsx"}},end:"\\s*(:)",endCaptures:{1:{name:"keyword.operator.ternary.tsx"}},patterns:[{include:"#expression"}]},"this-literal":{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))this\\b(?!\\$)",name:"variable.language.this.tsx"},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-operators"},{include:"#type-conditional"},{include:"#type-fn-type-parameters"},{include:"#type-paren-or-function-parameters"},{include:"#type-function-return-type"},{captures:{1:{name:"storage.modifier.tsx"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*"},{include:"#type-name"}]},"type-alias-declaration":{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|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))",name:"meta.type.declaration.tsx",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|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))",patterns:[{include:"#type"}]},{begin:"(=)\\s*",beginCaptures:{1:{name:"keyword.operator.assignment.tsx"}},end:"(?=\\}|;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))",patterns:[{include:"#type"}]}]},"type-annotation":{patterns:[{begin:"(:)(?=\\s*\\S)",beginCaptures:{1:{name:"keyword.operator.type.annotation.tsx"}},end:"(?<![:|&])(?!\\s*[|&]\\s+)((?=^|[,);\\}\\]]|//)|(?==[^>])|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))",name:"meta.type.annotation.tsx",patterns:[{include:"#type"}]},{begin:"(:)",beginCaptures:{1:{name:"keyword.operator.type.annotation.tsx"}},end:"(?<![:|&])((?=[,);\\}\\]]|\\/\\/)|(?==[^>])|(?=^\\s*$)|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))",name:"meta.type.annotation.tsx",patterns:[{include:"#type"}]}]},"type-arguments":{begin:"\\<",beginCaptures:{0:{name:"punctuation.definition.typeparameters.begin.tsx"}},end:"\\>",endCaptures:{0:{name:"punctuation.definition.typeparameters.end.tsx"}},name:"meta.type.parameters.tsx",patterns:[{include:"#type-arguments-body"}]},"type-arguments-body":{patterns:[{captures:{0:{name:"keyword.operator.type.tsx"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(_)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"},{include:"#type"},{include:"#punctuation-comma"}]},"type-builtin-literals":{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(this|true|false|undefined|null|object)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"support.type.builtin.tsx"},"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-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"}]},{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b\\s*(?=\\()",beginCaptures:{1:{name:"storage.modifier.tsx"},2:{name:"keyword.control.new.tsx"}},end:"(?<=\\))",name:"meta.type.constructor.tsx",patterns:[{include:"#function-parameters"}]},{begin:`(?x)( + (?= + [(]\\s*( + ([)]) | + (\\.\\.\\.) | + ([_$[:alnum:]]+\\s*( + ([:,?=])| + ([)]\\s*=>) + )) + ) + ) +)`,end:"(?<=\\))",name:"meta.type.function.tsx",patterns:[{include:"#function-parameters"}]}]},"type-function-return-type":{patterns:[{begin:"(=>)(?=\\s*\\S)",beginCaptures:{1:{name:"storage.type.function.arrow.tsx"}},end:"(?<!=>)(?<![|&])(?=[,\\]\\)\\{\\}=;>:\\?]|//|$)",name:"meta.type.function.return.tsx",patterns:[{include:"#type-function-return-type-core"}]},{begin:"=>",beginCaptures:{0:{name:"storage.type.function.arrow.tsx"}},end:"(?<!=>)(?<![|&])((?=[,\\]\\)\\{\\}=;:\\?>]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",name:"meta.type.function.return.tsx",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-infer":{patterns:[{captures:{1:{name:"keyword.operator.expression.infer.tsx"},2:{name:"entity.name.type.tsx"},3:{name:"keyword.operator.expression.extends.tsx"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(infer)\\s+([_$[:alpha:]][_$[:alnum:]]*)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?:\\s+(extends)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))?",name:"meta.type.infer.tsx"}]},"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"}},contentName:"meta.type.parameters.tsx",end:"(>)",endCaptures:{1:{name:"meta.type.parameters.tsx punctuation.definition.typeparameters.end.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"}},contentName:"meta.type.parameters.tsx",end:"(>)",endCaptures:{1:{name:"meta.type.parameters.tsx punctuation.definition.typeparameters.end.tsx"}},patterns:[{include:"#type-arguments-body"}]},{captures:{1:{name:"entity.name.type.module.tsx"},2:{name:"punctuation.accessor.tsx"},3:{name:"punctuation.accessor.optional.tsx"}},match:"([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))"},{match:"[_$[:alpha:]][_$[:alnum:]]*",name:"entity.name.type.tsx"}]},"type-object":{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.block.tsx"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.block.tsx"}},name:"meta.object.type.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-operators":{patterns:[{include:"#typeof-operator"},{include:"#type-infer"},{begin:"([&|])(?=\\s*\\{)",beginCaptures:{0:{name:"keyword.operator.type.tsx"}},end:"(?<=\\})",patterns:[{include:"#type-object"}]},{begin:"[&|]",beginCaptures:{0:{name:"keyword.operator.type.tsx"}},end:"(?=\\S)"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))keyof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.operator.expression.keyof.tsx"},{match:"(\\?|\\:)",name:"keyword.operator.ternary.tsx"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))import(?=\\s*\\()",name:"keyword.operator.expression.import.tsx"}]},"type-parameters":{begin:"(<)",beginCaptures:{1:{name:"punctuation.definition.typeparameters.begin.tsx"}},end:"(>)",endCaptures:{1:{name:"punctuation.definition.typeparameters.end.tsx"}},name:"meta.type.parameters.tsx",patterns:[{include:"#comment"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(extends|in|out|const)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"storage.modifier.tsx"},{include:"#type"},{include:"#punctuation-comma"},{match:"(=)(?!>)",name:"keyword.operator.assignment.tsx"}]},"type-paren-or-function-parameters":{begin:"\\(",beginCaptures:{0:{name:"meta.brace.round.tsx"}},end:"\\)",endCaptures:{0:{name:"meta.brace.round.tsx"}},name:"meta.type.paren.cover.tsx",patterns:[{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*(\\??)(?=\\s*(:\\s*( + (<) | + ([(]\\s*( + ([)]) | + (\\.\\.\\.) | + ([_$[:alnum:]]+\\s*( + ([:,?=])| + ([)]\\s*=>) + )) + )) +)) | +(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) | +(:\\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:"variable.parameter.tsx variable.language.this.tsx"},4:{name:"variable.parameter.tsx"},5:{name:"keyword.operator.optional.tsx"}},match:"(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=:)"},{include:"#type-annotation"},{match:",",name:"punctuation.separator.parameter.tsx"},{include:"#type"}]},"type-predicate-operator":{patterns:[{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+)?(?!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"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(asserts)\\s+(?!is)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))asserts(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.operator.type.asserts.tsx"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))is(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"keyword.operator.expression.is.tsx"}]},"type-primitive":{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(string|number|bigint|boolean|symbol|any|void|never|unknown)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"support.type.primitive.tsx"},"type-string":{patterns:[{include:"#qstring-single"},{include:"#qstring-double"},{include:"#template-type"}]},"type-tuple":{begin:"\\[",beginCaptures:{0:{name:"meta.brace.square.tsx"}},end:"\\]",endCaptures:{0:{name:"meta.brace.square.tsx"}},name:"meta.type.tuple.tsx",patterns:[{match:"\\.\\.\\.",name:"keyword.operator.rest.tsx"},{captures:{1:{name:"entity.name.label.tsx"},2:{name:"keyword.operator.optional.tsx"},3:{name:"punctuation.separator.label.tsx"}},match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?)?\\s*(:)"},{include:"#type"},{include:"#punctuation-comma"}]},"typeof-operator":{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))typeof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",beginCaptures:{0:{name:"keyword.operator.expression.typeof.tsx"}},end:"(?=[,);}\\]=>:&|{\\?]|(extends\\s+)|$|;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))",patterns:[{include:"#type-arguments"},{include:"#expression"}]},"undefined-literal":{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))undefined(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"constant.language.undefined.tsx"},"var-expr":{patterns:[{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|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))|((?<!^let|[^\\._$[:alnum:]]let|^var|[^\\._$[:alnum:]]var)(?=\\s*$)))",name:"meta.var.expr.tsx",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*(?=$|\\/\\/)",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"}]},{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|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))|((?<!^const|[^\\._$[:alnum:]]const)(?=\\s*$)))",name:"meta.var.expr.tsx",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*(?=$|\\/\\/)",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"}]},{begin:"(?=(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b((?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\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((?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))((?=;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b))|((?<!^using|[^\\._$[:alnum:]]using|^await\\s+using|[^\\._$[:alnum:]]await\\s+using)(?=\\s*$)))",name:"meta.var.expr.tsx",patterns:[{begin:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b((?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",beginCaptures:{1:{name:"keyword.control.export.tsx"},2:{name:"storage.modifier.tsx"},3:{name:"storage.type.tsx"}},end:"(?=\\S)"},{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:"#var-single-const"},{include:"#punctuation-comma"}]},{include:"#punctuation-comma"}]}]},"var-single-const":{patterns:[{begin:`(?x)([_$[:alpha:]][_$[:alnum:]]*)(?=\\s* +# function assignment | +(=\\s*( + ((async\\s+)?( + (function\\s*[(<*]) | + (function\\s+) | + ([_$[:alpha:]][_$[:alnum:]]*\\s*=>) + )) | + ((async\\s*)?( + ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + # sure shot arrow functions even if => is on new line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? + [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* + ( + ([)]\\s*:) | # (): + ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param: + ) +) | +( + [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends +) | +# arrow function possible to detect only with => on same line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters + \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) # parameters + (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type + \\s*=> # arrow operator +) + )) +)) | +# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) => +(:\\s*( + (<) | + ([(]\\s*( + ([)]) | + (\\.\\.\\.) | + ([_$[:alnum:]]+\\s*( + ([:,?=])| + ([)]\\s*=>) + )) + )) +)) | +(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) | +(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) | +(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*( + ((async\\s+)?( + (function\\s*[(<*]) | + (function\\s+) | + ([_$[:alpha:]][_$[:alnum:]]*\\s*=>) + )) | + ((async\\s*)?( + ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + # sure shot arrow functions even if => is on new line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? + [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* + ( + ([)]\\s*:) | # (): + ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param: + ) +) | +( + [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends +) | +# arrow function possible to detect only with => on same line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters + \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) # parameters + (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type + \\s*=> # arrow operator +) + )) +)))`,beginCaptures:{1:{name:"meta.definition.variable.tsx variable.other.constant.tsx entity.name.function.tsx"}},end:"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|(;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b)))",name:"meta.var-single-variable.expr.tsx",patterns:[{include:"#var-single-variable-type-annotation"}]},{begin:"([_$[:alpha:]][_$[:alnum:]]*)",beginCaptures:{1:{name:"meta.definition.variable.tsx variable.other.constant.tsx"}},end:"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|(;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b)))",name:"meta.var-single-variable.expr.tsx",patterns:[{include:"#var-single-variable-type-annotation"}]}]},"var-single-variable":{patterns:[{begin:`(?x)([_$[:alpha:]][_$[:alnum:]]*)(\\!)?(?=\\s* +# function assignment | +(=\\s*( + ((async\\s+)?( + (function\\s*[(<*]) | + (function\\s+) | + ([_$[:alpha:]][_$[:alnum:]]*\\s*=>) + )) | + ((async\\s*)?( + ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + # sure shot arrow functions even if => is on new line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? + [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* + ( + ([)]\\s*:) | # (): + ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param: + ) +) | +( + [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends +) | +# arrow function possible to detect only with => on same line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters + \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) # parameters + (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type + \\s*=> # arrow operator +) + )) +)) | +# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) => +(:\\s*( + (<) | + ([(]\\s*( + ([)]) | + (\\.\\.\\.) | + ([_$[:alnum:]]+\\s*( + ([:,?=])| + ([)]\\s*=>) + )) + )) +)) | +(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) | +(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) | +(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*( + ((async\\s+)?( + (function\\s*[(<*]) | + (function\\s+) | + ([_$[:alpha:]][_$[:alnum:]]*\\s*=>) + )) | + ((async\\s*)?( + ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) | + # sure shot arrow functions even if => is on new line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? + [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)* + ( + ([)]\\s*:) | # (): + ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param: + ) +) | +( + [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends +) | +# arrow function possible to detect only with => on same line +( + (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters + \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\"\\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\"([^\\"\\\\]|\\\\.)*\\")|(\\\`([^\\\`\\\\]|\\\\.)*\\\`))*)?\\) # parameters + (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type + \\s*=> # arrow operator +) + )) +)))`,beginCaptures:{1:{name:"meta.definition.variable.tsx entity.name.function.tsx"},2:{name:"keyword.operator.definiteassignment.tsx"}},end:"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|(;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b)))",name:"meta.var-single-variable.expr.tsx",patterns:[{include:"#var-single-variable-type-annotation"}]},{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+)|(;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b)))",name:"meta.var-single-variable.expr.tsx",patterns:[{include:"#var-single-variable-type-annotation"}]},{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+)|(;|^\\s*$|(?:^\\s*(?:abstract|async|(?:\\bawait\\s+(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\busing(?=\\s+(?!in\\b|of\\b(?!\\s*(?:of\\b|=)))[_$[:alpha:]])\\b)|var|while)\\b)))",name:"meta.var-single-variable.expr.tsx",patterns:[{include:"#var-single-variable-type-annotation"}]}]},"var-single-variable-type-annotation":{patterns:[{include:"#type-annotation"},{include:"#string"},{include:"#comment"}]},"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"}]}]}},scopeName:"source.tsx"});var Yn=[si];const ii=Object.freeze({displayName:"JSON",name:"json",patterns:[{include:"#value"}],repository:{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 + -? # an optional minus + (?: + 0 # a zero + | # ...or... + [1-9] # a 1-9 character + \\d* # followed by zero or more digits + ) + (?: + (?: + \\. # a period + \\d+ # followed by one or more digits + )? + (?: + [eE] # an e character + [+-]? # followed by an option +/- + \\d+ # followed by one or more digits + )? # make exponent optional + )? # 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"}]},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"}]},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"}]},stringcontent:{patterns:[{match:`(?x) # turn on extended mode + \\\\ # a literal backslash + (?: # ...followed by... + ["\\\\/bfnrt] # one of these characters + | # ...or... + u # a u + [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"}]}},scopeName:"source.json"});var ri=[ii];const oi=Object.freeze({displayName:"JSON with Comments",name:"jsonc",patterns:[{include:"#value"}],repository:{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 + -? # an optional minus + (?: + 0 # a zero + | # ...or... + [1-9] # a 1-9 character + \\d* # followed by zero or more digits + ) + (?: + (?: + \\. # a period + \\d+ # followed by one or more digits + )? + (?: + [eE] # an e character + [+-]? # followed by an option +/- + \\d+ # followed by one or more digits + )? # make exponent optional + )? # 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"}]},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"}]},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"}]},stringcontent:{patterns:[{match:`(?x) # turn on extended mode + \\\\ # a literal backslash + (?: # ...followed by... + ["\\\\/bfnrt] # one of these characters + | # ...or... + u # a u + [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"}]}},scopeName:"source.json.comments"});var ci=[oi];const li=Object.freeze({displayName:"JSON5",fileTypes:["json5"],name:"json5",patterns:[{include:"#comments"},{include:"#value"}],repository:{array:{begin:"\\[",beginCaptures:{0:{name:"punctuation.definition.array.begin.json5"}},end:"\\]",endCaptures:{0:{name:"punctuation.definition.array.end.json5"}},name:"meta.structure.array.json5",patterns:[{include:"#comments"},{include:"#value"},{match:",",name:"punctuation.separator.array.json5"},{match:"[^\\s\\]]",name:"invalid.illegal.expected-array-separator.json5"}]},comments:{patterns:[{match:"/{2}.*",name:"comment.single.json5"},{begin:"/\\*\\*(?!/)",captures:{0:{name:"punctuation.definition.comment.json5"}},end:"\\*/",name:"comment.block.documentation.json5"},{begin:"/\\*",captures:{0:{name:"punctuation.definition.comment.json5"}},end:"\\*/",name:"comment.block.json5"}]},constant:{match:"\\b(?:true|false|null|Infinity|NaN)\\b",name:"constant.language.json5"},infinity:{match:"(-)*\\b(?:Infinity|NaN)\\b",name:"constant.language.json5"},key:{name:"string.key.json5",patterns:[{include:"#stringSingle"},{include:"#stringDouble"},{match:"[a-zA-Z0-9_-]",name:"string.key.json5"}]},number:{patterns:[{comment:"handles hexadecimal numbers",match:"(0x)[0-9a-fA-f]*",name:"constant.hex.numeric.json5"},{comment:"handles integer and decimal numbers",match:"[+-.]?(?=[1-9]|0(?!\\d))\\d+(\\.\\d+)?([eE][+-]?\\d+)?",name:"constant.dec.numeric.json5"}]},object:{begin:"\\{",beginCaptures:{0:{name:"punctuation.definition.dictionary.begin.json5"}},comment:"a json5 object",end:"\\}",endCaptures:{0:{name:"punctuation.definition.dictionary.end.json5"}},name:"meta.structure.dictionary.json5",patterns:[{include:"#comments"},{comment:"the json5 object key",include:"#key"},{begin:":",beginCaptures:{0:{name:"punctuation.separator.dictionary.key-value.json5"}},end:"(,)|(?=\\})",endCaptures:{1:{name:"punctuation.separator.dictionary.pair.json5"}},name:"meta.structure.dictionary.value.json5",patterns:[{comment:"the json5 object value",include:"#value"},{match:"[^\\s,]",name:"invalid.illegal.expected-dictionary-separator.json5"}]},{match:"[^\\s\\}]",name:"invalid.illegal.expected-dictionary-separator.json5"}]},stringDouble:{begin:'["]',beginCaptures:{0:{name:"punctuation.definition.string.begin.json5"}},end:'["]',endCaptures:{0:{name:"punctuation.definition.string.end.json5"}},name:"string.quoted.json5",patterns:[{match:`(?x: # turn on extended mode + \\\\ # a literal backslash + (?: # ...followed by... + ["\\\\/bfnrt] # one of these characters + | # ...or... + u # a u + [0-9a-fA-F]{4} # and four hex digits + ) + )`,name:"constant.character.escape.json5"},{match:"\\\\.",name:"invalid.illegal.unrecognized-string-escape.json5"}]},stringSingle:{begin:"[']",beginCaptures:{0:{name:"punctuation.definition.string.begin.json5"}},end:"[']",endCaptures:{0:{name:"punctuation.definition.string.end.json5"}},name:"string.quoted.json5",patterns:[{match:`(?x: # turn on extended mode + \\\\ # a literal backslash + (?: # ...followed by... + ["\\\\/bfnrt] # one of these characters + | # ...or... + u # a u + [0-9a-fA-F]{4} # and four hex digits + ) + )`,name:"constant.character.escape.json5"},{match:"\\\\.",name:"invalid.illegal.unrecognized-string-escape.json5"}]},value:{comment:"the 'value' diagram at http://json.org",patterns:[{include:"#constant"},{include:"#infinity"},{include:"#number"},{include:"#stringSingle"},{include:"#stringDouble"},{include:"#array"},{include:"#object"}]}},scopeName:"source.json5"});var ui=[li];const mi=Object.freeze({displayName:"YAML",name:"yaml",patterns:[{include:"#comment"},{include:"#property"},{include:"#directive"},{match:"^---",name:"entity.other.document.begin.yaml"},{match:"^\\.{3}",name:"entity.other.document.end.yaml"},{include:"#node"}],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) + (?= + (?x: + [^\\s[-?:,\\[\\]{}#&*!|>'"%@\`]] + | [?:-] \\S + ) + ( + [^\\s:] + | : \\S + | \\s+ (?![#\\s]) + )* + \\s* + : + (\\s|$) + ) + `,end:`(?x) + (?= + \\s* $ + | \\s+ \\# + | \\s* : (\\s|$) + ) + `,patterns:[{include:"#flow-scalar-plain-out-implicit-type"},{begin:`(?x) + [^\\s[-?:,\\[\\]{}#&*!|>'"%@\`]] + | [?:-] \\S + `,beginCaptures:{0:{name:"entity.name.tag.yaml"}},contentName:"entity.name.tag.yaml",end:`(?x) + (?= + \\s* $ + | \\s+ \\# + | \\s* : (\\s|$) + ) + `,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) + \\G + (TAG) + (?:[ \\t]+ + ((?:!(?:[0-9A-Za-z\\-]*!)?)) + (?:[ \\t]+ ( + ! (?x: %[0-9A-Fa-f]{2} | [0-9A-Za-z\\-#;/?:@&=+$,_.!~*'()\\[\\]] )* + | (?![,!\\[\\]{}]) (?x: %[0-9A-Fa-f]{2} | [0-9A-Za-z\\-#;/?:@&=+$,_.!~*'()\\[\\]] )+ + ) + )? + )? + `},{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) + (?= + (?: + [^\\s[-?:,\\[\\]{}#&*!|>'"%@\`]] + | [?:-] [^\\s[\\[\\]{},]] + ) + ( + [^\\s:[\\[\\]{},]] + | : [^\\s[\\[\\]{},]] + | \\s+ (?![#\\s]) + )* + \\s* + : + (\\s|$) + ) + `,end:`(?x) + (?= + \\s* $ + | \\s+ \\# + | \\s* : (\\s|$) + | \\s* : [\\[\\]{},] + | \\s* [\\[\\]{},] + ) + `,name:"meta.flow-pair.key.yaml",patterns:[{include:"#flow-scalar-plain-in-implicit-type"},{begin:`(?x) + [^\\s[-?:,\\[\\]{}#&*!|>'"%@\`]] + | [?:-] [^\\s[\\[\\]{},]] + `,beginCaptures:{0:{name:"entity.name.tag.yaml"}},contentName:"entity.name.tag.yaml",end:`(?x) + (?= + \\s* $ + | \\s+ \\# + | \\s* : (\\s|$) + | \\s* : [\\[\\]{},] + | \\s* [\\[\\]{},] + ) + `,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) + [^\\s[-?:,\\[\\]{}#&*!|>'"%@\`]] + | [?:-] [^\\s[\\[\\]{},]] + `,end:`(?x) + (?= + \\s* $ + | \\s+ \\# + | \\s* : (\\s|$) + | \\s* : [\\[\\]{},] + | \\s* [\\[\\]{},] + ) + `,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) + (?x: + (null|Null|NULL|~) + | (y|Y|yes|Yes|YES|n|N|no|No|NO|true|True|TRUE|false|False|FALSE|on|On|ON|off|Off|OFF) + | ( + (?: + [-+]? 0b [0-1_]+ # (base 2) + | [-+]? 0 [0-7_]+ # (base 8) + | [-+]? (?: 0|[1-9][0-9_]*) # (base 10) + | [-+]? 0x [0-9a-fA-F_]+ # (base 16) + | [-+]? [1-9] [0-9_]* (?: :[0-5]?[0-9])+ # (base 60) + ) + ) + | ( + (?x: + [-+]? (?: [0-9] [0-9_]*)? \\. [0-9.]* (?: [eE] [-+] [0-9]+)? # (base 10) + | [-+]? [0-9] [0-9_]* (?: :[0-5]?[0-9])+ \\. [0-9_]* # (base 60) + | [-+]? \\. (?: inf|Inf|INF) # (infinity) + | \\. (?: nan|NaN|NAN) # (not a number) + ) + ) + | ( + (?x: + \\d{4} - \\d{2} - \\d{2} # (y-m-d) + | \\d{4} # (year) + - \\d{1,2} # (month) + - \\d{1,2} # (day) + (?: [Tt] | [ \\t]+) \\d{1,2} # (hour) + : \\d{2} # (minute) + : \\d{2} # (second) + (?: \\.\\d*)? # (fraction) + (?: + (?:[ \\t]*) Z + | [-+] \\d{1,2} (?: :\\d{1,2})? + )? # (time zone) + ) + ) + | (=) + | (<<) + ) + (?: + (?= + \\s* $ + | \\s+ \\# + | \\s* : (\\s|$) + | \\s* : [\\[\\]{},] + | \\s* [\\[\\]{},] + ) + ) + `}]},"flow-scalar-plain-out":{patterns:[{include:"#flow-scalar-plain-out-implicit-type"},{begin:`(?x) + [^\\s[-?:,\\[\\]{}#&*!|>'"%@\`]] + | [?:-] \\S + `,end:`(?x) + (?= + \\s* $ + | \\s+ \\# + | \\s* : (\\s|$) + ) + `,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) + (?x: + (null|Null|NULL|~) + | (y|Y|yes|Yes|YES|n|N|no|No|NO|true|True|TRUE|false|False|FALSE|on|On|ON|off|Off|OFF) + | ( + (?: + [-+]? 0b [0-1_]+ # (base 2) + | [-+]? 0 [0-7_]+ # (base 8) + | [-+]? (?: 0|[1-9][0-9_]*) # (base 10) + | [-+]? 0x [0-9a-fA-F_]+ # (base 16) + | [-+]? [1-9] [0-9_]* (?: :[0-5]?[0-9])+ # (base 60) + ) + ) + | ( + (?x: + [-+]? (?: [0-9] [0-9_]*)? \\. [0-9.]* (?: [eE] [-+] [0-9]+)? # (base 10) + | [-+]? [0-9] [0-9_]* (?: :[0-5]?[0-9])+ \\. [0-9_]* # (base 60) + | [-+]? \\. (?: inf|Inf|INF) # (infinity) + | \\. (?: nan|NaN|NAN) # (not a number) + ) + ) + | ( + (?x: + \\d{4} - \\d{2} - \\d{2} # (y-m-d) + | \\d{4} # (year) + - \\d{1,2} # (month) + - \\d{1,2} # (day) + (?: [Tt] | [ \\t]+) \\d{1,2} # (hour) + : \\d{2} # (minute) + : \\d{2} # (second) + (?: \\.\\d*)? # (fraction) + (?: + (?:[ \\t]*) Z + | [-+] \\d{1,2} (?: :\\d{1,2})? + )? # (time zone) + ) + ) + | (=) + | (<<) + ) + (?x: + (?= + \\s* $ + | \\s+ \\# + | \\s* : (\\s|$) + ) + ) + `}]},"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) + \\G + (?: + ! < (?: %[0-9A-Fa-f]{2} | [0-9A-Za-z\\-#;/?:@&=+$,_.!~*'()\\[\\]] )+ > + | (?:!(?:[0-9A-Za-z\\-]*!)?) (?: %[0-9A-Fa-f]{2} | [0-9A-Za-z\\-#;/?:@&=+$_.~*'()] )+ + | ! + ) + (?=\\ |\\t|$) + `,name:"storage.type.tag-handle.yaml"},{match:"\\S+",name:"invalid.illegal.tag-handle.yaml"}]},prototype:{patterns:[{include:"#comment"},{include:"#property"}]}},scopeName:"source.yaml",aliases:["yml"]});var pi=[mi];const di=Object.freeze({displayName:"TOML",fileTypes:["toml"],name:"toml",patterns:[{include:"#comments"},{include:"#groups"},{include:"#key_pair"},{include:"#invalid"}],repository:{comments:{begin:"(^[ \\t]+)?(?=#)",beginCaptures:{1:{name:"punctuation.whitespace.comment.leading.toml"}},end:"(?!\\G)",patterns:[{begin:"#",beginCaptures:{0:{name:"punctuation.definition.comment.toml"}},end:"\\n",name:"comment.line.number-sign.toml"}]},groups:{patterns:[{captures:{1:{name:"punctuation.definition.section.begin.toml"},2:{patterns:[{match:"[^\\s.]+",name:"entity.name.section.toml"}]},3:{name:"punctuation.definition.section.begin.toml"}},match:"^\\s*(\\[)([^\\[\\]]*)(\\])",name:"meta.group.toml"},{captures:{1:{name:"punctuation.definition.section.begin.toml"},2:{patterns:[{match:"[^\\s.]+",name:"entity.name.section.toml"}]},3:{name:"punctuation.definition.section.begin.toml"}},match:"^\\s*(\\[\\[)([^\\[\\]]*)(\\]\\])",name:"meta.group.double.toml"}]},invalid:{match:"\\S+(\\s*(?=\\S))?",name:"invalid.illegal.not-allowed-here.toml"},key_pair:{patterns:[{begin:"([A-Za-z0-9_-]+)\\s*(=)\\s*",captures:{1:{name:"variable.other.key.toml"},2:{name:"punctuation.separator.key-value.toml"}},end:"(?<=\\S)(?<!=)|$",patterns:[{include:"#primatives"}]},{begin:'((")(.*?)("))\\s*(=)\\s*',captures:{1:{name:"variable.other.key.toml"},2:{name:"punctuation.definition.variable.begin.toml"},3:{patterns:[{match:'\\\\([btnfr"\\\\]|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})',name:"constant.character.escape.toml"},{match:'\\\\[^btnfr"\\\\]',name:"invalid.illegal.escape.toml"},{match:'"',name:"invalid.illegal.not-allowed-here.toml"}]},4:{name:"punctuation.definition.variable.end.toml"},5:{name:"punctuation.separator.key-value.toml"}},end:"(?<=\\S)(?<!=)|$",patterns:[{include:"#primatives"}]},{begin:"((')([^']*)('))\\s*(=)\\s*",captures:{1:{name:"variable.other.key.toml"},2:{name:"punctuation.definition.variable.begin.toml"},4:{name:"punctuation.definition.variable.end.toml"},5:{name:"punctuation.separator.key-value.toml"}},end:"(?<=\\S)(?<!=)|$",patterns:[{include:"#primatives"}]},{begin:`(?x) + ( + ( + (?: + [A-Za-z0-9_-]+ # Bare key + | " (?:[^"\\\\]|\\\\.)* " # Double quoted key + | ' [^']* ' # Sindle quoted key + ) + (?: + \\s* \\. \\s* # Dot + | (?= \\s* =) # or look-ahead for equals + ) + ){2,} # Ensure at least one dot + ) + \\s*(=)\\s* + `,captures:{1:{name:"variable.other.key.toml",patterns:[{match:"\\.",name:"punctuation.separator.variable.toml"},{captures:{1:{name:"punctuation.definition.variable.begin.toml"},2:{patterns:[{match:'\\\\([btnfr"\\\\]|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})',name:"constant.character.escape.toml"},{match:'\\\\[^btnfr"\\\\]',name:"invalid.illegal.escape.toml"}]},3:{name:"punctuation.definition.variable.end.toml"}},match:'(")((?:[^"\\\\]|\\\\.)*)(")'},{captures:{1:{name:"punctuation.definition.variable.begin.toml"},2:{name:"punctuation.definition.variable.end.toml"}},match:"(')[^']*(')"}]},3:{name:"punctuation.separator.key-value.toml"}},comment:"Dotted key",end:"(?<=\\S)(?<!=)|$",patterns:[{include:"#primatives"}]}]},primatives:{patterns:[{begin:'\\G"""',beginCaptures:{0:{name:"punctuation.definition.string.begin.toml"}},end:'"{3,5}',endCaptures:{0:{name:"punctuation.definition.string.end.toml"}},name:"string.quoted.triple.double.toml",patterns:[{match:'\\\\([btnfr"\\\\]|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})',name:"constant.character.escape.toml"},{match:'\\\\[^btnfr"\\\\\\n]',name:"invalid.illegal.escape.toml"}]},{begin:'\\G"',beginCaptures:{0:{name:"punctuation.definition.string.begin.toml"}},end:'"',endCaptures:{0:{name:"punctuation.definition.string.end.toml"}},name:"string.quoted.double.toml",patterns:[{match:'\\\\([btnfr"\\\\]|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})',name:"constant.character.escape.toml"},{match:'\\\\[^btnfr"\\\\]',name:"invalid.illegal.escape.toml"}]},{begin:"\\G'''",beginCaptures:{0:{name:"punctuation.definition.string.begin.toml"}},end:"'{3,5}",endCaptures:{0:{name:"punctuation.definition.string.end.toml"}},name:"string.quoted.triple.single.toml"},{begin:"\\G'",beginCaptures:{0:{name:"punctuation.definition.string.begin.toml"}},end:"'",endCaptures:{0:{name:"punctuation.definition.string.end.toml"}},name:"string.quoted.single.toml"},{match:`\\G(?x) + [0-9]{4} + - + (0[1-9]|1[012]) + - + (?!00|3[2-9])[0-3][0-9] + ( + [Tt ] + (?!2[5-9])[0-2][0-9] + : + [0-5][0-9] + : + (?!6[1-9])[0-6][0-9] + (\\.[0-9]+)? + ( + Z + | [+-](?!2[5-9])[0-2][0-9]:[0-5][0-9] + )? + )? + `,name:"constant.other.date.toml"},{match:`\\G(?x) + (?!2[5-9])[0-2][0-9] + : + [0-5][0-9] + : + (?!6[1-9])[0-6][0-9] + (\\.[0-9]+)? + `,name:"constant.other.time.toml"},{match:"\\G(true|false)",name:"constant.language.boolean.toml"},{match:"\\G0x\\h(\\h|_\\h)*",name:"constant.numeric.hex.toml"},{match:"\\G0o[0-7]([0-7]|_[0-7])*",name:"constant.numeric.octal.toml"},{match:"\\G0b[01]([01]|_[01])*",name:"constant.numeric.binary.toml"},{match:"\\G[+-]?(inf|nan)",name:"constant.numeric.toml"},{match:`(?x) + \\G + ( + [+-]? + ( + 0 + | ([1-9](([0-9]|_[0-9])+)?) + ) + ) + (?=[.eE]) + ( + \\. + ([0-9](([0-9]|_[0-9])+)?) + )? + ( + [eE] + ([+-]?[0-9](([0-9]|_[0-9])+)?) + )? + `,name:"constant.numeric.float.toml"},{match:`(?x) + \\G + ( + [+-]? + ( + 0 + | ([1-9](([0-9]|_[0-9])+)?) + ) + ) + `,name:"constant.numeric.integer.toml"},{begin:"\\G\\[",beginCaptures:{0:{name:"punctuation.definition.array.begin.toml"}},end:"\\]",endCaptures:{0:{name:"punctuation.definition.array.end.toml"}},name:"meta.array.toml",patterns:[{begin:`(?=["'']|[+-]?[0-9]|[+-]?(inf|nan)|true|false|\\[|\\{)`,end:",|(?=])",endCaptures:{0:{name:"punctuation.separator.array.toml"}},patterns:[{include:"#primatives"},{include:"#comments"},{include:"#invalid"}]},{include:"#comments"},{include:"#invalid"}]},{begin:"\\G\\{",beginCaptures:{0:{name:"punctuation.definition.inline-table.begin.toml"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.inline-table.end.toml"}},name:"meta.inline-table.toml",patterns:[{begin:"(?=\\S)",end:",|(?=})",endCaptures:{0:{name:"punctuation.separator.inline-table.toml"}},patterns:[{include:"#key_pair"}]},{include:"#comments"}]}]}},scopeName:"source.toml"});var bi=[di];const gi=Object.freeze({displayName:"GraphQL",fileTypes:["graphql","graphqls","gql","graphcool"],name:"graphql",patterns:[{include:"#graphql"}],repository:{graphql:{patterns:[{include:"#graphql-comment"},{include:"#graphql-description-docstring"},{include:"#graphql-description-singleline"},{include:"#graphql-fragment-definition"},{include:"#graphql-directive-definition"},{include:"#graphql-type-interface"},{include:"#graphql-enum"},{include:"#graphql-scalar"},{include:"#graphql-union"},{include:"#graphql-schema"},{include:"#graphql-operation-def"},{include:"#literal-quasi-embedded"}]},"graphql-ampersand":{captures:{1:{name:"keyword.operator.logical.graphql"}},match:"\\s*(&)"},"graphql-arguments":{begin:"\\s*(\\()",beginCaptures:{1:{name:"meta.brace.round.directive.graphql"}},end:"\\s*(\\))",endCaptures:{1:{name:"meta.brace.round.directive.graphql"}},name:"meta.arguments.graphql",patterns:[{include:"#graphql-comment"},{include:"#graphql-description-docstring"},{include:"#graphql-description-singleline"},{begin:"\\s*([_A-Za-z][_0-9A-Za-z]*)(?:\\s*(:))",beginCaptures:{1:{name:"variable.parameter.graphql"},2:{name:"punctuation.colon.graphql"}},end:"(?=\\s*(?:(?:([_A-Za-z][_0-9A-Za-z]*)\\s*(:))|\\)))|\\s*(,)",endCaptures:{3:{name:"punctuation.comma.graphql"}},patterns:[{include:"#graphql-comment"},{include:"#graphql-description-docstring"},{include:"#graphql-description-singleline"},{include:"#graphql-directive"},{include:"#graphql-value"},{include:"#graphql-skip-newlines"}]},{include:"#literal-quasi-embedded"}]},"graphql-boolean-value":{captures:{1:{name:"constant.language.boolean.graphql"}},match:"\\s*\\b(true|false)\\b"},"graphql-colon":{captures:{1:{name:"punctuation.colon.graphql"}},match:"\\s*(:)"},"graphql-comma":{captures:{1:{name:"punctuation.comma.graphql"}},match:"\\s*(,)"},"graphql-comment":{patterns:[{captures:{1:{name:"punctuation.whitespace.comment.leading.graphql"}},comment:"need to prefix comment space with a scope else Atom's reflow cmd doesn't work",match:"(\\s*)(#).*",name:"comment.line.graphql.js"},{begin:'(""")',beginCaptures:{1:{name:"punctuation.whitespace.comment.leading.graphql"}},end:'(""")',name:"comment.line.graphql.js"},{begin:'(")',beginCaptures:{1:{name:"punctuation.whitespace.comment.leading.graphql"}},end:'(")',name:"comment.line.graphql.js"}]},"graphql-description-docstring":{begin:'"""',end:'"""',name:"comment.block.graphql"},"graphql-description-singleline":{match:'#(?=([^"]*"[^"]*")*[^"]*$).*$',name:"comment.line.number-sign.graphql"},"graphql-directive":{applyEndPatternLast:1,begin:"\\s*((@)\\s*([_A-Za-z][_0-9A-Za-z]*))",beginCaptures:{1:{name:"entity.name.function.directive.graphql"}},end:"(?=.)",patterns:[{include:"#graphql-comment"},{include:"#graphql-description-docstring"},{include:"#graphql-description-singleline"},{include:"#graphql-arguments"},{include:"#literal-quasi-embedded"},{include:"#graphql-skip-newlines"}]},"graphql-directive-definition":{applyEndPatternLast:1,begin:"\\s*(\\bdirective\\b)\\s*(@[_A-Za-z][_0-9A-Za-z]*)",beginCaptures:{1:{name:"keyword.directive.graphql"},2:{name:"entity.name.function.directive.graphql"},3:{name:"keyword.on.graphql"},4:{name:"support.type.graphql"}},end:"(?=.)",patterns:[{include:"#graphql-variable-definitions"},{applyEndPatternLast:1,begin:"\\s*(\\bon\\b)\\s*([_A-Za-z]*)",beginCaptures:{1:{name:"keyword.on.graphql"},2:{name:"support.type.location.graphql"}},end:"(?=.)",patterns:[{include:"#graphql-skip-newlines"},{include:"#graphql-comment"},{include:"#literal-quasi-embedded"},{captures:{2:{name:"support.type.location.graphql"}},match:"\\s*(\\|)\\s*([_A-Za-z]*)"}]},{include:"#graphql-skip-newlines"},{include:"#graphql-comment"},{include:"#literal-quasi-embedded"}]},"graphql-enum":{begin:"\\s*+\\b(enum)\\b\\s*([_A-Za-z][_0-9A-Za-z]*)",beginCaptures:{1:{name:"keyword.enum.graphql"},2:{name:"support.type.enum.graphql"}},end:"(?<=})",name:"meta.enum.graphql",patterns:[{begin:"\\s*({)",beginCaptures:{1:{name:"punctuation.operation.graphql"}},end:"\\s*(})",endCaptures:{1:{name:"punctuation.operation.graphql"}},name:"meta.type.object.graphql",patterns:[{include:"#graphql-object-type"},{include:"#graphql-comment"},{include:"#graphql-description-docstring"},{include:"#graphql-description-singleline"},{include:"#graphql-directive"},{include:"#graphql-enum-value"},{include:"#literal-quasi-embedded"}]},{include:"#graphql-comment"},{include:"#graphql-description-docstring"},{include:"#graphql-description-singleline"},{include:"#graphql-directive"}]},"graphql-enum-value":{match:"\\s*(?!=\\b(true|false|null)\\b)([_A-Za-z][_0-9A-Za-z]*)",name:"constant.character.enum.graphql"},"graphql-field":{patterns:[{captures:{1:{name:"string.unquoted.alias.graphql"},2:{name:"punctuation.colon.graphql"}},match:"\\s*([_A-Za-z][_0-9A-Za-z]*)\\s*(:)"},{captures:{1:{name:"variable.graphql"}},match:"\\s*([_A-Za-z][_0-9A-Za-z]*)"},{include:"#graphql-arguments"},{include:"#graphql-directive"},{include:"#graphql-selection-set"},{include:"#literal-quasi-embedded"},{include:"#graphql-skip-newlines"}]},"graphql-float-value":{captures:{1:{name:"constant.numeric.float.graphql"}},match:"\\s*(-?(0|[1-9][0-9]*)(\\.[0-9]+)?((e|E)(\\+|-)?[0-9]+)?)"},"graphql-fragment-definition":{begin:"\\s*(?:(\\bfragment\\b)\\s*([_A-Za-z][_0-9A-Za-z]*)?\\s*(?:(\\bon\\b)\\s*([_A-Za-z][_0-9A-Za-z]*)))",captures:{1:{name:"keyword.fragment.graphql"},2:{name:"entity.name.fragment.graphql"},3:{name:"keyword.on.graphql"},4:{name:"support.type.graphql"}},end:"(?<=})",name:"meta.fragment.graphql",patterns:[{include:"#graphql-comment"},{include:"#graphql-description-docstring"},{include:"#graphql-description-singleline"},{include:"#graphql-selection-set"},{include:"#graphql-directive"},{include:"#graphql-skip-newlines"},{include:"#literal-quasi-embedded"}]},"graphql-fragment-spread":{applyEndPatternLast:1,begin:"\\s*(\\.\\.\\.)\\s*(?!\\bon\\b)([_A-Za-z][_0-9A-Za-z]*)",captures:{1:{name:"keyword.operator.spread.graphql"},2:{name:"variable.fragment.graphql"}},end:"(?=.)",patterns:[{include:"#graphql-comment"},{include:"#graphql-description-docstring"},{include:"#graphql-description-singleline"},{include:"#graphql-selection-set"},{include:"#graphql-directive"},{include:"#literal-quasi-embedded"},{include:"#graphql-skip-newlines"}]},"graphql-ignore-spaces":{match:"\\s*"},"graphql-inline-fragment":{applyEndPatternLast:1,begin:"\\s*(\\.\\.\\.)\\s*(?:(\\bon\\b)\\s*([_A-Za-z][_0-9A-Za-z]*))?",captures:{1:{name:"keyword.operator.spread.graphql"},2:{name:"keyword.on.graphql"},3:{name:"support.type.graphql"}},end:"(?=.)",patterns:[{include:"#graphql-comment"},{include:"#graphql-description-docstring"},{include:"#graphql-description-singleline"},{include:"#graphql-selection-set"},{include:"#graphql-directive"},{include:"#graphql-skip-newlines"},{include:"#literal-quasi-embedded"}]},"graphql-input-types":{patterns:[{include:"#graphql-scalar-type"},{captures:{1:{name:"support.type.graphql"},2:{name:"keyword.operator.nulltype.graphql"}},match:"\\s*([_A-Za-z][_0-9A-Za-z]*)(?:\\s*(!))?"},{begin:"\\s*(\\[)",captures:{1:{name:"meta.brace.square.graphql"},2:{name:"keyword.operator.nulltype.graphql"}},end:"\\s*(\\])(?:\\s*(!))?",name:"meta.type.list.graphql",patterns:[{include:"#graphql-comment"},{include:"#graphql-description-docstring"},{include:"#graphql-description-singleline"},{include:"#graphql-input-types"},{include:"#graphql-comma"},{include:"#literal-quasi-embedded"}]}]},"graphql-list-value":{patterns:[{begin:"\\s*+(\\[)",beginCaptures:{1:{name:"meta.brace.square.graphql"}},end:"\\s*(\\])",endCaptures:{1:{name:"meta.brace.square.graphql"}},name:"meta.listvalues.graphql",patterns:[{include:"#graphql-value"}]}]},"graphql-name":{captures:{1:{name:"entity.name.function.graphql"}},match:"\\s*([_A-Za-z][_0-9A-Za-z]*)"},"graphql-null-value":{captures:{1:{name:"constant.language.null.graphql"}},match:"\\s*\\b(null)\\b"},"graphql-object-field":{captures:{1:{name:"constant.object.key.graphql"},2:{name:"string.unquoted.graphql"},3:{name:"punctuation.graphql"}},match:"\\s*(([_A-Za-z][_0-9A-Za-z]*))\\s*(:)"},"graphql-object-value":{patterns:[{begin:"\\s*+({)",beginCaptures:{1:{name:"meta.brace.curly.graphql"}},end:"\\s*(})",endCaptures:{1:{name:"meta.brace.curly.graphql"}},name:"meta.objectvalues.graphql",patterns:[{include:"#graphql-object-field"},{include:"#graphql-value"}]}]},"graphql-operation-def":{patterns:[{include:"#graphql-query-mutation"},{include:"#graphql-name"},{include:"#graphql-variable-definitions"},{include:"#graphql-directive"},{include:"#graphql-selection-set"}]},"graphql-query-mutation":{captures:{1:{name:"keyword.operation.graphql"}},match:"\\s*\\b(query|mutation)\\b"},"graphql-scalar":{captures:{1:{name:"keyword.scalar.graphql"},2:{name:"entity.scalar.graphql"}},match:"\\s*\\b(scalar)\\b\\s*([_A-Za-z][_0-9A-Za-z]*)"},"graphql-scalar-type":{captures:{1:{name:"support.type.builtin.graphql"},2:{name:"keyword.operator.nulltype.graphql"}},match:"\\s*\\b(Int|Float|String|Boolean|ID)\\b(?:\\s*(!))?"},"graphql-schema":{begin:"\\s*\\b(schema)\\b",beginCaptures:{1:{name:"keyword.schema.graphql"}},end:"(?<=})",patterns:[{begin:"\\s*({)",beginCaptures:{1:{name:"punctuation.operation.graphql"}},end:"\\s*(})",endCaptures:{1:{name:"punctuation.operation.graphql"}},patterns:[{begin:"\\s*([_A-Za-z][_0-9A-Za-z]*)(?=\\s*\\(|:)",beginCaptures:{1:{name:"variable.arguments.graphql"}},end:"(?=\\s*(([_A-Za-z][_0-9A-Za-z]*)\\s*(\\(|:)|(})))|\\s*(,)",endCaptures:{5:{name:"punctuation.comma.graphql"}},patterns:[{captures:{1:{name:"support.type.graphql"}},match:"\\s*([_A-Za-z][_0-9A-Za-z]*)"},{include:"#graphql-comment"},{include:"#graphql-description-docstring"},{include:"#graphql-description-singleline"},{include:"#graphql-colon"},{include:"#graphql-skip-newlines"}]},{include:"#graphql-comment"},{include:"#graphql-description-docstring"},{include:"#graphql-description-singleline"},{include:"#graphql-skip-newlines"}]},{include:"#graphql-comment"},{include:"#graphql-description-docstring"},{include:"#graphql-description-singleline"},{include:"#graphql-directive"},{include:"#graphql-skip-newlines"}]},"graphql-selection-set":{begin:"\\s*({)",beginCaptures:{1:{name:"punctuation.operation.graphql"}},end:"\\s*(})",endCaptures:{1:{name:"punctuation.operation.graphql"}},name:"meta.selectionset.graphql",patterns:[{include:"#graphql-comment"},{include:"#graphql-description-docstring"},{include:"#graphql-description-singleline"},{include:"#graphql-field"},{include:"#graphql-fragment-spread"},{include:"#graphql-inline-fragment"},{include:"#graphql-comma"},{include:"#native-interpolation"},{include:"#literal-quasi-embedded"}]},"graphql-skip-newlines":{match:`\\s* +`},"graphql-string-content":{patterns:[{match:`\\\\[/'"\\\\nrtbf]`,name:"constant.character.escape.graphql"},{match:"\\\\u([0-9a-fA-F]{4})",name:"constant.character.escape.graphql"}]},"graphql-string-value":{begin:'\\s*+(("))',beginCaptures:{1:{name:"string.quoted.double.graphql"},2:{name:"punctuation.definition.string.begin.graphql"}},contentName:"string.quoted.double.graphql",end:`\\s*+(?:(("))|( +))`,endCaptures:{1:{name:"string.quoted.double.graphql"},2:{name:"punctuation.definition.string.end.graphql"},3:{name:"invalid.illegal.newline.graphql"}},patterns:[{include:"#graphql-string-content"},{include:"#literal-quasi-embedded"}]},"graphql-type-definition":{begin:"\\s*([_A-Za-z][_0-9A-Za-z]*)(?=\\s*\\(|:)",beginCaptures:{1:{name:"variable.graphql"}},comment:"key (optionalArgs): Type",end:"(?=\\s*(([_A-Za-z][_0-9A-Za-z]*)\\s*(\\(|:)|(})))|\\s*(,)",endCaptures:{5:{name:"punctuation.comma.graphql"}},patterns:[{include:"#graphql-comment"},{include:"#graphql-description-docstring"},{include:"#graphql-description-singleline"},{include:"#graphql-directive"},{include:"#graphql-variable-definitions"},{include:"#graphql-type-object"},{include:"#graphql-colon"},{include:"#graphql-input-types"},{include:"#literal-quasi-embedded"}]},"graphql-type-interface":{applyEndPatternLast:1,begin:"\\s*\\b(?:(extends?)?\\b\\s*\\b(type)|(interface)|(input))\\b\\s*([_A-Za-z][_0-9A-Za-z]*)?",captures:{1:{name:"keyword.type.graphql"},2:{name:"keyword.type.graphql"},3:{name:"keyword.interface.graphql"},4:{name:"keyword.input.graphql"},5:{name:"support.type.graphql"}},end:"(?=.)",name:"meta.type.interface.graphql",patterns:[{begin:"\\s*\\b(implements)\\b\\s*",beginCaptures:{1:{name:"keyword.implements.graphql"}},end:"\\s*(?={)",patterns:[{captures:{1:{name:"support.type.graphql"}},match:"\\s*([_A-Za-z][_0-9A-Za-z]*)"},{include:"#graphql-comment"},{include:"#graphql-description-docstring"},{include:"#graphql-description-singleline"},{include:"#graphql-directive"},{include:"#graphql-ampersand"},{include:"#graphql-comma"}]},{include:"#graphql-comment"},{include:"#graphql-description-docstring"},{include:"#graphql-description-singleline"},{include:"#graphql-directive"},{include:"#graphql-type-object"},{include:"#literal-quasi-embedded"},{include:"#graphql-ignore-spaces"}]},"graphql-type-object":{begin:"\\s*({)",beginCaptures:{1:{name:"punctuation.operation.graphql"}},end:"\\s*(})",endCaptures:{1:{name:"punctuation.operation.graphql"}},name:"meta.type.object.graphql",patterns:[{include:"#graphql-comment"},{include:"#graphql-description-docstring"},{include:"#graphql-description-singleline"},{include:"#graphql-object-type"},{include:"#graphql-type-definition"},{include:"#literal-quasi-embedded"}]},"graphql-union":{applyEndPatternLast:1,begin:"\\s*\\b(union)\\b\\s*([_A-Za-z][_0-9A-Za-z]*)",captures:{1:{name:"keyword.union.graphql"},2:{name:"support.type.graphql"}},end:"(?=.)",patterns:[{applyEndPatternLast:1,begin:"\\s*(=)\\s*([_A-Za-z][_0-9A-Za-z]*)",captures:{1:{name:"punctuation.assignment.graphql"},2:{name:"support.type.graphql"}},end:"(?=.)",patterns:[{include:"#graphql-comment"},{include:"#graphql-description-docstring"},{include:"#graphql-description-singleline"},{include:"#graphql-skip-newlines"},{include:"#literal-quasi-embedded"},{captures:{1:{name:"punctuation.or.graphql"},2:{name:"support.type.graphql"}},match:"\\s*(\\|)\\s*([_A-Za-z][_0-9A-Za-z]*)"}]},{include:"#graphql-comment"},{include:"#graphql-description-docstring"},{include:"#graphql-description-singleline"},{include:"#graphql-skip-newlines"},{include:"#literal-quasi-embedded"}]},"graphql-union-mark":{captures:{1:{name:"punctuation.union.graphql"}},match:"\\s*(\\|)"},"graphql-value":{patterns:[{include:"#graphql-comment"},{include:"#graphql-description-docstring"},{include:"#graphql-variable-name"},{include:"#graphql-float-value"},{include:"#graphql-string-value"},{include:"#graphql-boolean-value"},{include:"#graphql-null-value"},{include:"#graphql-enum-value"},{include:"#graphql-list-value"},{include:"#graphql-object-value"},{include:"#literal-quasi-embedded"}]},"graphql-variable-assignment":{applyEndPatternLast:1,begin:"\\s(=)",beginCaptures:{1:{name:"punctuation.assignment.graphql"}},end:`(?=[ +,)])`,patterns:[{include:"#graphql-value"}]},"graphql-variable-definition":{begin:"\\s*(\\$?[_A-Za-z][_0-9A-Za-z]*)(?=\\s*\\(|:)",beginCaptures:{1:{name:"variable.parameter.graphql"}},comment:"variable: type = value,.... which may be a list",end:"(?=\\s*((\\$?[_A-Za-z][_0-9A-Za-z]*)\\s*(\\(|:)|(}|\\))))|\\s*(,)",endCaptures:{5:{name:"punctuation.comma.graphql"}},name:"meta.variables.graphql",patterns:[{include:"#graphql-comment"},{include:"#graphql-description-docstring"},{include:"#graphql-description-singleline"},{include:"#graphql-directive"},{include:"#graphql-colon"},{include:"#graphql-input-types"},{include:"#graphql-variable-assignment"},{include:"#literal-quasi-embedded"},{include:"#graphql-skip-newlines"}]},"graphql-variable-definitions":{begin:"\\s*(\\()",captures:{1:{name:"meta.brace.round.graphql"}},end:"\\s*(\\))",patterns:[{include:"#graphql-comment"},{include:"#graphql-description-docstring"},{include:"#graphql-description-singleline"},{include:"#graphql-variable-definition"},{include:"#literal-quasi-embedded"}]},"graphql-variable-name":{captures:{1:{name:"variable.graphql"}},match:"\\s*(\\$[_A-Za-z][_0-9A-Za-z]*)"},"native-interpolation":{begin:"\\s*(\\${)",beginCaptures:{1:{name:"keyword.other.substitution.begin"}},end:"(})",endCaptures:{1:{name:"keyword.other.substitution.end"}},name:"native.interpolation",patterns:[{include:"source.js"},{include:"source.ts"},{include:"source.js.jsx"},{include:"source.tsx"}]}},scopeName:"source.graphql",embeddedLangs:["javascript","typescript","jsx","tsx"],aliases:["gql"]});var hi=[...X,...Vn,...Xn,...Yn,gi];const fi=Object.freeze({fileTypes:[],injectTo:["text.html.markdown"],injectionSelector:"L:text.html.markdown",name:"markdown-vue",patterns:[{include:"#vue-code-block"}],repository:{"vue-code-block":{begin:"(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(vue)((\\s+|:|,|\\{|\\?)[^`~]*)?$)",beginCaptures:{3:{name:"punctuation.definition.markdown"},4:{name:"fenced_code.block.language.markdown"},5:{name:"fenced_code.block.language.attributes.markdown"}},end:"(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",endCaptures:{3:{name:"punctuation.definition.markdown"}},name:"markup.fenced_code.block.markdown",patterns:[{include:"source.vue"}]}},scopeName:"markdown.vue.codeblock"});var yi=[fi];const _i=Object.freeze({fileTypes:[],injectTo:["source.vue","text.html.markdown","text.html.derivative","text.pug"],injectionSelector:"L:meta.tag -meta.attribute -entity.name.tag.pug -attribute_value -source.tsx -source.js.jsx, L:meta.element -meta.attribute",name:"vue-directives",patterns:[{include:"source.vue#vue-directives"}],scopeName:"vue.directives"});var $i=[_i];const xi=Object.freeze({fileTypes:[],injectTo:["source.vue","text.html.markdown","text.html.derivative","text.pug"],injectionSelector:"L:text.pug -comment -string.comment, L:text.html.derivative -comment.block, L:text.html.markdown -comment.block",name:"vue-interpolations",patterns:[{include:"source.vue#vue-interpolations"}],scopeName:"vue.interpolations"});var wi=[xi];const ki=Object.freeze({fileTypes:[],injectTo:["source.vue"],injectionSelector:"L:source.css -comment, L:source.postcss -comment, L:source.sass -comment, L:source.stylus -comment",name:"vue-sfc-style-variable-injection",patterns:[{include:"#vue-sfc-style-variable-injection"}],repository:{"vue-sfc-style-variable-injection":{begin:"\\b(v-bind)\\s*\\(",beginCaptures:{1:{name:"entity.name.function"}},end:"\\)",name:"vue.sfc.style.variable.injection.v-bind",patterns:[{begin:`('|")`,beginCaptures:{1:{name:"punctuation.definition.tag.begin.html"}},end:"(\\1)",endCaptures:{1:{name:"punctuation.definition.tag.end.html"}},name:"source.ts.embedded.html.vue",patterns:[{include:"source.js"}]},{include:"source.js"}]}},scopeName:"vue.sfc.style.variable.injection",embeddedLangs:["javascript"]});var ji=[...X,ki];const vi=Object.freeze({displayName:"Vue",name:"vue",patterns:[{include:"text.html.basic#comment"},{include:"#self-closing-tag"},{begin:"(<)",beginCaptures:{1:{name:"punctuation.definition.tag.begin.html.vue"}},end:"(>)",endCaptures:{1:{name:"punctuation.definition.tag.end.html.vue"}},patterns:[{begin:`([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['"]?)md\\b\\2)`,beginCaptures:{1:{name:"entity.name.tag.$1.html.vue"}},end:"(</)(\\1)\\s*(?=>)",endCaptures:{1:{name:"punctuation.definition.tag.begin.html.vue"},2:{name:"entity.name.tag.$2.html.vue"}},patterns:[{include:"#tag-stuff"},{begin:"(?<=>)",end:"(?=<\\/)",name:"text.html.markdown",patterns:[{include:"text.html.markdown"}]}]},{begin:`([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['"]?)html\\b\\2)`,beginCaptures:{1:{name:"entity.name.tag.$1.html.vue"}},end:"(</)(\\1)\\s*(?=>)",endCaptures:{1:{name:"punctuation.definition.tag.begin.html.vue"},2:{name:"entity.name.tag.$2.html.vue"}},patterns:[{include:"#tag-stuff"},{begin:"(?<=>)",end:"(?=<\\/)",name:"text.html.derivative",patterns:[{include:"#html-stuff"}]}]},{begin:`([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['"]?)pug\\b\\2)`,beginCaptures:{1:{name:"entity.name.tag.$1.html.vue"}},end:"(</)(\\1)\\s*(?=>)",endCaptures:{1:{name:"punctuation.definition.tag.begin.html.vue"},2:{name:"entity.name.tag.$2.html.vue"}},patterns:[{include:"#tag-stuff"},{begin:"(?<=>)",end:"(?=<\\/)",name:"text.pug",patterns:[{include:"text.pug"}]}]},{begin:`([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['"]?)stylus\\b\\2)`,beginCaptures:{1:{name:"entity.name.tag.$1.html.vue"}},end:"(</)(\\1)\\s*(?=>)",endCaptures:{1:{name:"punctuation.definition.tag.begin.html.vue"},2:{name:"entity.name.tag.$2.html.vue"}},patterns:[{include:"#tag-stuff"},{begin:"(?<=>)",end:"(?=<\\/)",name:"source.stylus",patterns:[{include:"source.stylus"}]}]},{begin:`([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['"]?)postcss\\b\\2)`,beginCaptures:{1:{name:"entity.name.tag.$1.html.vue"}},end:"(</)(\\1)\\s*(?=>)",endCaptures:{1:{name:"punctuation.definition.tag.begin.html.vue"},2:{name:"entity.name.tag.$2.html.vue"}},patterns:[{include:"#tag-stuff"},{begin:"(?<=>)",end:"(?=<\\/)",name:"source.postcss",patterns:[{include:"source.postcss"}]}]},{begin:`([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['"]?)sass\\b\\2)`,beginCaptures:{1:{name:"entity.name.tag.$1.html.vue"}},end:"(</)(\\1)\\s*(?=>)",endCaptures:{1:{name:"punctuation.definition.tag.begin.html.vue"},2:{name:"entity.name.tag.$2.html.vue"}},patterns:[{include:"#tag-stuff"},{begin:"(?<=>)",end:"(?=<\\/)",name:"source.sass",patterns:[{include:"source.sass"}]}]},{begin:`([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['"]?)css\\b\\2)`,beginCaptures:{1:{name:"entity.name.tag.$1.html.vue"}},end:"(</)(\\1)\\s*(?=>)",endCaptures:{1:{name:"punctuation.definition.tag.begin.html.vue"},2:{name:"entity.name.tag.$2.html.vue"}},patterns:[{include:"#tag-stuff"},{begin:"(?<=>)",end:"(?=<\\/)",name:"source.css",patterns:[{include:"source.css"}]}]},{begin:`([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['"]?)scss\\b\\2)`,beginCaptures:{1:{name:"entity.name.tag.$1.html.vue"}},end:"(</)(\\1)\\s*(?=>)",endCaptures:{1:{name:"punctuation.definition.tag.begin.html.vue"},2:{name:"entity.name.tag.$2.html.vue"}},patterns:[{include:"#tag-stuff"},{begin:"(?<=>)",end:"(?=<\\/)",name:"source.css.scss",patterns:[{include:"source.css.scss"}]}]},{begin:`([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['"]?)less\\b\\2)`,beginCaptures:{1:{name:"entity.name.tag.$1.html.vue"}},end:"(</)(\\1)\\s*(?=>)",endCaptures:{1:{name:"punctuation.definition.tag.begin.html.vue"},2:{name:"entity.name.tag.$2.html.vue"}},patterns:[{include:"#tag-stuff"},{begin:"(?<=>)",end:"(?=<\\/)",name:"source.css.less",patterns:[{include:"source.css.less"}]}]},{begin:`([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['"]?)js\\b\\2)`,beginCaptures:{1:{name:"entity.name.tag.$1.html.vue"}},end:"(</)(\\1)\\s*(?=>)",endCaptures:{1:{name:"punctuation.definition.tag.begin.html.vue"},2:{name:"entity.name.tag.$2.html.vue"}},patterns:[{include:"#tag-stuff"},{begin:"(?<=>)",end:"(?=<\\/)",name:"source.js",patterns:[{include:"source.js"}]}]},{begin:`([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['"]?)ts\\b\\2)`,beginCaptures:{1:{name:"entity.name.tag.$1.html.vue"}},end:"(</)(\\1)\\s*(?=>)",endCaptures:{1:{name:"punctuation.definition.tag.begin.html.vue"},2:{name:"entity.name.tag.$2.html.vue"}},patterns:[{include:"#tag-stuff"},{begin:"(?<=>)",end:"(?=<\\/)",name:"source.ts",patterns:[{include:"source.ts"}]}]},{begin:`([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['"]?)jsx\\b\\2)`,beginCaptures:{1:{name:"entity.name.tag.$1.html.vue"}},end:"(</)(\\1)\\s*(?=>)",endCaptures:{1:{name:"punctuation.definition.tag.begin.html.vue"},2:{name:"entity.name.tag.$2.html.vue"}},patterns:[{include:"#tag-stuff"},{begin:"(?<=>)",end:"(?=<\\/)",name:"source.js.jsx",patterns:[{include:"source.js.jsx"}]}]},{begin:`([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['"]?)tsx\\b\\2)`,beginCaptures:{1:{name:"entity.name.tag.$1.html.vue"}},end:"(</)(\\1)\\s*(?=>)",endCaptures:{1:{name:"punctuation.definition.tag.begin.html.vue"},2:{name:"entity.name.tag.$2.html.vue"}},patterns:[{include:"#tag-stuff"},{begin:"(?<=>)",end:"(?=<\\/)",name:"source.tsx",patterns:[{include:"source.tsx"}]}]},{begin:`([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['"]?)json\\b\\2)`,beginCaptures:{1:{name:"entity.name.tag.$1.html.vue"}},end:"(</)(\\1)\\s*(?=>)",endCaptures:{1:{name:"punctuation.definition.tag.begin.html.vue"},2:{name:"entity.name.tag.$2.html.vue"}},patterns:[{include:"#tag-stuff"},{begin:"(?<=>)",end:"(?=<\\/)",name:"source.json",patterns:[{include:"source.json"}]}]},{begin:`([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['"]?)jsonc\\b\\2)`,beginCaptures:{1:{name:"entity.name.tag.$1.html.vue"}},end:"(</)(\\1)\\s*(?=>)",endCaptures:{1:{name:"punctuation.definition.tag.begin.html.vue"},2:{name:"entity.name.tag.$2.html.vue"}},patterns:[{include:"#tag-stuff"},{begin:"(?<=>)",end:"(?=<\\/)",name:"source.json.comments",patterns:[{include:"source.json.comments"}]}]},{begin:`([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['"]?)json5\\b\\2)`,beginCaptures:{1:{name:"entity.name.tag.$1.html.vue"}},end:"(</)(\\1)\\s*(?=>)",endCaptures:{1:{name:"punctuation.definition.tag.begin.html.vue"},2:{name:"entity.name.tag.$2.html.vue"}},patterns:[{include:"#tag-stuff"},{begin:"(?<=>)",end:"(?=<\\/)",name:"source.json5",patterns:[{include:"source.json5"}]}]},{begin:`([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['"]?)yaml\\b\\2)`,beginCaptures:{1:{name:"entity.name.tag.$1.html.vue"}},end:"(</)(\\1)\\s*(?=>)",endCaptures:{1:{name:"punctuation.definition.tag.begin.html.vue"},2:{name:"entity.name.tag.$2.html.vue"}},patterns:[{include:"#tag-stuff"},{begin:"(?<=>)",end:"(?=<\\/)",name:"source.yaml",patterns:[{include:"source.yaml"}]}]},{begin:`([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['"]?)toml\\b\\2)`,beginCaptures:{1:{name:"entity.name.tag.$1.html.vue"}},end:"(</)(\\1)\\s*(?=>)",endCaptures:{1:{name:"punctuation.definition.tag.begin.html.vue"},2:{name:"entity.name.tag.$2.html.vue"}},patterns:[{include:"#tag-stuff"},{begin:"(?<=>)",end:"(?=<\\/)",name:"source.toml",patterns:[{include:"source.toml"}]}]},{begin:`([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['"]?)(gql|graphql)\\b\\2)`,beginCaptures:{1:{name:"entity.name.tag.$1.html.vue"}},end:"(</)(\\1)\\s*(?=>)",endCaptures:{1:{name:"punctuation.definition.tag.begin.html.vue"},2:{name:"entity.name.tag.$2.html.vue"}},patterns:[{include:"#tag-stuff"},{begin:"(?<=>)",end:"(?=<\\/)",name:"source.graphql",patterns:[{include:"source.graphql"}]}]},{begin:`([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['"]?)vue\\b\\2)`,beginCaptures:{1:{name:"entity.name.tag.$1.html.vue"}},end:"(</)(\\1)\\s*(?=>)",endCaptures:{1:{name:"punctuation.definition.tag.begin.html.vue"},2:{name:"entity.name.tag.$2.html.vue"}},patterns:[{include:"#tag-stuff"},{begin:"(?<=>)",end:"(?=<\\/)",name:"source.vue",patterns:[{include:"source.vue"}]}]},{begin:"(template)\\b",beginCaptures:{1:{name:"entity.name.tag.$1.html.vue"}},end:"(</)(\\1)\\s*(?=>)",endCaptures:{1:{name:"punctuation.definition.tag.begin.html.vue"},2:{name:"entity.name.tag.$2.html.vue"}},patterns:[{include:"#tag-stuff"},{begin:"(?<=>)",end:"(?=<\\/template\\b)",name:"text.html.derivative",patterns:[{include:"#html-stuff"}]}]},{begin:"(script)\\b",beginCaptures:{1:{name:"entity.name.tag.$1.html.vue"}},end:"(</)(\\1)\\s*(?=>)",endCaptures:{1:{name:"punctuation.definition.tag.begin.html.vue"},2:{name:"entity.name.tag.$2.html.vue"}},patterns:[{include:"#tag-stuff"},{begin:"(?<=>)",end:"(?=<\\/script\\b)",name:"source.js",patterns:[{include:"source.js"}]}]},{begin:"(style)\\b",beginCaptures:{1:{name:"entity.name.tag.$1.html.vue"}},end:"(</)(\\1)\\s*(?=>)",endCaptures:{1:{name:"punctuation.definition.tag.begin.html.vue"},2:{name:"entity.name.tag.$2.html.vue"}},patterns:[{include:"#tag-stuff"},{begin:"(?<=>)",end:"(?=<\\/style\\b)",name:"source.css",patterns:[{include:"source.css"}]}]},{begin:"([a-zA-Z0-9:-]+)",beginCaptures:{1:{name:"entity.name.tag.$1.html.vue"}},end:"(</)(\\1)\\s*(?=>)",endCaptures:{1:{name:"punctuation.definition.tag.begin.html.vue"},2:{name:"entity.name.tag.$2.html.vue"}},patterns:[{include:"#tag-stuff"},{begin:"(?<=>)",end:"(?=<\\/)",name:"text"}]}]}],repository:{"html-stuff":{patterns:[{include:"#template-tag"},{include:"text.html.derivative"},{include:"text.html.basic"}]},"self-closing-tag":{begin:"(<)([a-zA-Z0-9:-]+)(?=([^>]+/>))",beginCaptures:{1:{name:"punctuation.definition.tag.begin.html.vue"},2:{name:"entity.name.tag.$2.html.vue"}},end:"(/>)",endCaptures:{1:{name:"punctuation.definition.tag.end.html.vue"}},name:"self-closing-tag",patterns:[{include:"#tag-stuff"}]},"tag-stuff":{begin:"\\G",end:"(?=/>)|(>)",endCaptures:{1:{name:"punctuation.definition.tag.end.html.vue"}},name:"meta.tag-stuff",patterns:[{include:"#vue-directives"},{include:"text.html.basic#attribute"}]},"template-tag":{patterns:[{include:"#template-tag-1"},{include:"#template-tag-2"}]},"template-tag-1":{begin:"(<)(template)\\b(>)",beginCaptures:{1:{name:"punctuation.definition.tag.begin.html.vue"},2:{name:"entity.name.tag.$2.html.vue"},3:{name:"punctuation.definition.tag.end.html.vue"}},end:"(/?>)",endCaptures:{1:{name:"punctuation.definition.tag.end.html.vue"}},name:"meta.template-tag.start",patterns:[{begin:"\\G",end:"(?=/>)|((</)(template)\\b)",endCaptures:{2:{name:"punctuation.definition.tag.begin.html.vue"},3:{name:"entity.name.tag.$3.html.vue"}},name:"meta.template-tag.end",patterns:[{include:"#html-stuff"}]}]},"template-tag-2":{begin:"(<)(template)\\b",beginCaptures:{1:{name:"punctuation.definition.tag.begin.html.vue"},2:{name:"entity.name.tag.$2.html.vue"}},end:"(/?>)",endCaptures:{1:{name:"punctuation.definition.tag.end.html.vue"}},name:"meta.template-tag.start",patterns:[{begin:"\\G",end:"(?=/>)|((</)(template)\\b)",endCaptures:{2:{name:"punctuation.definition.tag.begin.html.vue"},3:{name:"entity.name.tag.$3.html.vue"}},name:"meta.template-tag.end",patterns:[{include:"#tag-stuff"},{include:"#html-stuff"}]}]},"vue-directives":{patterns:[{include:"#vue-directives-control"},{include:"#vue-directives-style-attr"},{include:"#vue-directives-original"},{include:"#vue-directives-generic-attr"}]},"vue-directives-control":{begin:"(v-for)|(v-if|v-else-if|v-else)",captures:{1:{name:"keyword.control.loop.vue"},2:{name:"keyword.control.conditional.vue"}},end:"(?=\\s*+[^=\\s])",name:"meta.attribute.directive.control.vue",patterns:[{include:"#vue-directives-expression"}]},"vue-directives-expression":{patterns:[{begin:"(=)\\s*('|\"|`)",beginCaptures:{1:{name:"punctuation.separator.key-value.html.vue"},2:{name:"punctuation.definition.string.begin.html.vue"}},end:"(\\2)",endCaptures:{1:{name:"punctuation.definition.string.end.html.vue"}},patterns:[{begin:"(?<=('|\"|`))",end:"(?=\\1)",name:"source.ts.embedded.html.vue",patterns:[{include:"source.ts"}]}]},{begin:"(=)\\s*(?=[^'\"`])",beginCaptures:{1:{name:"punctuation.separator.key-value.html.vue"}},end:"(?=(\\s|>|\\/>))",patterns:[{begin:"(?=[^'\"`])",end:"(?=(\\s|>|\\/>))",name:"source.ts.embedded.html.vue",patterns:[{include:"source.ts"}]}]}]},"vue-directives-generic-attr":{begin:"\\b(generic)\\s*(=)",captures:{1:{name:"entity.other.attribute-name.html.vue"},2:{name:"punctuation.separator.key-value.html.vue"}},end:`(?<='|")`,name:"meta.attribute.generic.vue",patterns:[{begin:`('|")`,beginCaptures:{1:{name:"punctuation.definition.string.begin.html.vue"}},comment:"https://github.com/microsoft/vscode/blob/fd4346210f59135fad81a8b8c4cea7bf5a9ca6b4/extensions/typescript-basics/syntaxes/TypeScript.tmLanguage.json#L4002-L4020",end:"(\\1)",endCaptures:{1:{name:"punctuation.definition.string.end.html.vue"}},name:"meta.type.parameters.vue",patterns:[{include:"source.ts#comment"},{match:"(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(extends|in|out)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",name:"storage.modifier.ts"},{include:"source.ts#type"},{include:"source.ts#punctuation-comma"},{match:"(=)(?!>)",name:"keyword.operator.assignment.ts"}]}]},"vue-directives-original":{begin:"(?:\\b(v-)|([:\\.])|(@)|(#))(\\[?)([\\w\\-]*)(\\]?)(?:\\.([\\w\\-]*))*",beginCaptures:{1:{name:"entity.other.attribute-name.html.vue"},2:{name:"punctuation.attribute-shorthand.bind.html.vue"},3:{name:"punctuation.attribute-shorthand.event.html.vue"},4:{name:"punctuation.attribute-shorthand.slot.html.vue"},5:{name:"punctuation.separator.key-value.html.vue"},6:{name:"entity.other.attribute-name.html.vue"},7:{name:"punctuation.separator.key-value.html.vue"},8:{name:"entity.other.attribute-name.html.vue"},9:{name:"punctuation.separator.key-value.html.vue"}},end:"(?=\\s*+[^=\\s])",endCaptures:{1:{name:"punctuation.definition.string.end.html.vue"}},name:"meta.attribute.directive.vue",patterns:[{include:"#vue-directives-expression"}]},"vue-directives-style-attr":{begin:"\\b(style)\\s*(=)",captures:{1:{name:"entity.other.attribute-name.html.vue"},2:{name:"punctuation.separator.key-value.html.vue"}},end:`(?<='|")`,name:"meta.attribute.style.vue",patterns:[{begin:`('|")`,beginCaptures:{1:{name:"punctuation.definition.string.begin.html.vue"}},comment:"Copy from source.css#rule-list-innards",end:"(\\1)",endCaptures:{1:{name:"punctuation.definition.string.end.html.vue"}},name:"source.css.embedded.html.vue",patterns:[{include:"source.css#comment-block"},{include:"source.css#escapes"},{include:"source.css#font-features"},{match:`(?x) (?<![\\w-]) +-- +(?:[-a-zA-Z_] | [^\\x00-\\x7F]) # First letter +(?:[-a-zA-Z0-9_] | [^\\x00-\\x7F] # Remainder of identifier + |\\\\(?:[0-9a-fA-F]{1,6}|.) +)*`,name:"variable.css"},{begin:"(?<![-a-zA-Z])(?=[-a-zA-Z])",end:"$|(?![-a-zA-Z])",name:"meta.property-name.css",patterns:[{include:"source.css#property-names"}]},{begin:"(:)\\s*",beginCaptures:{1:{name:"punctuation.separator.key-value.css"}},comment:"Modify end to fix #199. TODO: handle ' character.",contentName:"meta.property-value.css",end:`\\s*(;)|\\s*(?='|")`,endCaptures:{1:{name:"punctuation.terminator.rule.css"}},patterns:[{include:"source.css#comment-block"},{include:"source.css#property-values"}]},{match:";",name:"punctuation.terminator.rule.css"}]}]},"vue-interpolations":{patterns:[{begin:"(\\{\\{)",beginCaptures:{1:{name:"punctuation.definition.interpolation.begin.html.vue"}},end:"(\\}\\})",endCaptures:{1:{name:"punctuation.definition.interpolation.end.html.vue"}},name:"expression.embedded.vue",patterns:[{begin:"\\G",end:"(?=\\}\\})",name:"source.ts.embedded.html.vue",patterns:[{include:"source.ts"}]}]}]}},scopeName:"source.vue",embeddedLangs:["html","markdown","pug","stylus","sass","css","scss","less","javascript","typescript","jsx","tsx","json","jsonc","json5","yaml","toml","graphql","markdown-vue","vue-directives","vue-interpolations","vue-sfc-style-variable-injection"]});var Ci=[...Mn,...Hs,...Qs,...Wn,...Un,...ye,...Hn,...ni,...X,...Vn,...Xn,...Yn,...ri,...ci,...ui,...pi,...bi,...hi,...yi,...$i,...wi,...ji,vi],ln=Object.freeze({colors:{"actionBar.toggledBackground":"#383a49","activityBarBadge.background":"#007ACC","checkbox.border":"#6B6B6B","editor.background":"#1E1E1E","editor.foreground":"#D4D4D4","editor.inactiveSelectionBackground":"#3A3D41","editor.selectionHighlightBackground":"#ADD6FF26","editorIndentGuide.activeBackground":"#707070","editorIndentGuide.background":"#404040","input.placeholderForeground":"#A6A6A6","list.activeSelectionIconForeground":"#FFF","list.dropBackground":"#383B3D","menu.background":"#252526","menu.border":"#454545","menu.foreground":"#CCCCCC","menu.separatorBackground":"#454545","ports.iconRunningProcessForeground":"#369432","sideBarSectionHeader.background":"#0000","sideBarSectionHeader.border":"#ccc3","sideBarTitle.foreground":"#BBBBBB","statusBarItem.remoteBackground":"#16825D","statusBarItem.remoteForeground":"#FFF","tab.lastPinnedBorder":"#ccc3","terminal.inactiveSelectionBackground":"#3A3D41","widget.border":"#303031"},displayName:"Dark Plus",name:"dark-plus",semanticHighlighting:!0,semanticTokenColors:{customLiteral:"#DCDCAA",newOperator:"#C586C0",numberLiteral:"#b5cea8",stringLiteral:"#ce9178"},tokenColors:[{scope:["meta.embedded","source.groovy.embedded","string meta.image.inline.markdown","variable.legacy.builtin.python"],settings:{foreground:"#D4D4D4"}},{scope:"emphasis",settings:{fontStyle:"italic"}},{scope:"strong",settings:{fontStyle:"bold"}},{scope:"header",settings:{foreground:"#000080"}},{scope:"comment",settings:{foreground:"#6A9955"}},{scope:"constant.language",settings:{foreground:"#569cd6"}},{scope:["constant.numeric","variable.other.enummember","keyword.operator.plus.exponent","keyword.operator.minus.exponent"],settings:{foreground:"#b5cea8"}},{scope:"constant.regexp",settings:{foreground:"#646695"}},{scope:"entity.name.tag",settings:{foreground:"#569cd6"}},{scope:"entity.name.tag.css",settings:{foreground:"#d7ba7d"}},{scope:"entity.other.attribute-name",settings:{foreground:"#9cdcfe"}},{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:"#d7ba7d"}},{scope:"invalid",settings:{foreground:"#f44747"}},{scope:"markup.underline",settings:{fontStyle:"underline"}},{scope:"markup.bold",settings:{fontStyle:"bold",foreground:"#569cd6"}},{scope:"markup.heading",settings:{fontStyle:"bold",foreground:"#569cd6"}},{scope:"markup.italic",settings:{fontStyle:"italic"}},{scope:"markup.strikethrough",settings:{fontStyle:"strikethrough"}},{scope:"markup.inserted",settings:{foreground:"#b5cea8"}},{scope:"markup.deleted",settings:{foreground:"#ce9178"}},{scope:"markup.changed",settings:{foreground:"#569cd6"}},{scope:"punctuation.definition.quote.begin.markdown",settings:{foreground:"#6A9955"}},{scope:"punctuation.definition.list.begin.markdown",settings:{foreground:"#6796e6"}},{scope:"markup.inline.raw",settings:{foreground:"#ce9178"}},{scope:"punctuation.definition.tag",settings:{foreground:"#808080"}},{scope:["meta.preprocessor","entity.name.function.preprocessor"],settings:{foreground:"#569cd6"}},{scope:"meta.preprocessor.string",settings:{foreground:"#ce9178"}},{scope:"meta.preprocessor.numeric",settings:{foreground:"#b5cea8"}},{scope:"meta.structure.dictionary.key.python",settings:{foreground:"#9cdcfe"}},{scope:"meta.diff.header",settings:{foreground:"#569cd6"}},{scope:"storage",settings:{foreground:"#569cd6"}},{scope:"storage.type",settings:{foreground:"#569cd6"}},{scope:["storage.modifier","keyword.operator.noexcept"],settings:{foreground:"#569cd6"}},{scope:["string","meta.embedded.assembly"],settings:{foreground:"#ce9178"}},{scope:"string.tag",settings:{foreground:"#ce9178"}},{scope:"string.value",settings:{foreground:"#ce9178"}},{scope:"string.regexp",settings:{foreground:"#d16969"}},{scope:["punctuation.definition.template-expression.begin","punctuation.definition.template-expression.end","punctuation.section.embedded"],settings:{foreground:"#569cd6"}},{scope:["meta.template.expression"],settings:{foreground:"#d4d4d4"}},{scope:["support.type.vendored.property-name","support.type.property-name","variable.css","variable.scss","variable.other.less","source.coffee.embedded"],settings:{foreground:"#9cdcfe"}},{scope:"keyword",settings:{foreground:"#569cd6"}},{scope:"keyword.control",settings:{foreground:"#569cd6"}},{scope:"keyword.operator",settings:{foreground:"#d4d4d4"}},{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:"#569cd6"}},{scope:"keyword.other.unit",settings:{foreground:"#b5cea8"}},{scope:["punctuation.section.embedded.begin.php","punctuation.section.embedded.end.php"],settings:{foreground:"#569cd6"}},{scope:"support.function.git-rebase",settings:{foreground:"#9cdcfe"}},{scope:"constant.sha.git-rebase",settings:{foreground:"#b5cea8"}},{scope:["storage.modifier.import.java","variable.language.wildcard.java","storage.modifier.package.java"],settings:{foreground:"#d4d4d4"}},{scope:"variable.language",settings:{foreground:"#569cd6"}},{scope:["entity.name.function","support.function","support.constant.handlebars","source.powershell variable.other.member","entity.name.operator.custom-literal"],settings:{foreground:"#DCDCAA"}},{scope:["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:"#4EC9B0"}},{scope:["meta.type.cast.expr","meta.type.new.expr","support.constant.math","support.constant.dom","support.constant.json","entity.other.inherited-class"],settings:{foreground:"#4EC9B0"}},{scope:["keyword.control","source.cpp keyword.operator.new","keyword.operator.delete","keyword.other.using","keyword.other.directive.using","keyword.other.operator","entity.name.operator"],settings:{foreground:"#C586C0"}},{scope:["variable","meta.definition.variable.name","support.variable","entity.name.variable","constant.other.placeholder"],settings:{foreground:"#9CDCFE"}},{scope:["variable.other.constant","variable.other.enummember"],settings:{foreground:"#4FC1FF"}},{scope:["meta.object-literal.key"],settings:{foreground:"#9CDCFE"}},{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:"#CE9178"}},{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:"#CE9178"}},{scope:["constant.character.character-class.regexp","constant.other.character-class.set.regexp","constant.other.character-class.regexp","constant.character.set.regexp"],settings:{foreground:"#d16969"}},{scope:["keyword.operator.or.regexp","keyword.control.anchor.regexp"],settings:{foreground:"#DCDCAA"}},{scope:"keyword.operator.quantifier.regexp",settings:{foreground:"#d7ba7d"}},{scope:["constant.character","constant.other.option"],settings:{foreground:"#569cd6"}},{scope:"constant.character.escape",settings:{foreground:"#d7ba7d"}},{scope:"entity.name.label",settings:{foreground:"#C8C8C8"}}],type:"dark"}),un=Object.freeze({colors:{"actionBar.toggledBackground":"#dddddd","activityBarBadge.background":"#007ACC","checkbox.border":"#919191","editor.background":"#FFFFFF","editor.foreground":"#000000","editor.inactiveSelectionBackground":"#E5EBF1","editor.selectionHighlightBackground":"#ADD6FF80","editorIndentGuide.activeBackground":"#939393","editorIndentGuide.background":"#D3D3D3","editorSuggestWidget.background":"#F3F3F3","input.placeholderForeground":"#767676","list.activeSelectionIconForeground":"#FFF","list.focusAndSelectionOutline":"#90C2F9","list.hoverBackground":"#E8E8E8","menu.border":"#D4D4D4","notebook.cellBorderColor":"#E8E8E8","notebook.selectedCellBackground":"#c8ddf150","ports.iconRunningProcessForeground":"#369432","searchEditor.textInputBorder":"#CECECE","settings.numberInputBorder":"#CECECE","settings.textInputBorder":"#CECECE","sideBarSectionHeader.background":"#0000","sideBarSectionHeader.border":"#61616130","sideBarTitle.foreground":"#6F6F6F","statusBarItem.errorBackground":"#c72e0f","statusBarItem.remoteBackground":"#16825D","statusBarItem.remoteForeground":"#FFF","tab.lastPinnedBorder":"#61616130","terminal.inactiveSelectionBackground":"#E5EBF1","widget.border":"#d4d4d4"},displayName:"Light Plus",name:"light-plus",semanticHighlighting:!0,semanticTokenColors:{customLiteral:"#795E26",newOperator:"#AF00DB",numberLiteral:"#098658",stringLiteral:"#a31515"},tokenColors:[{scope:["meta.embedded","source.groovy.embedded","string meta.image.inline.markdown","variable.legacy.builtin.python"],settings:{foreground:"#000000ff"}},{scope:"emphasis",settings:{fontStyle:"italic"}},{scope:"strong",settings:{fontStyle:"bold"}},{scope:"meta.diff.header",settings:{foreground:"#000080"}},{scope:"comment",settings:{foreground:"#008000"}},{scope:"constant.language",settings:{foreground:"#0000ff"}},{scope:["constant.numeric","variable.other.enummember","keyword.operator.plus.exponent","keyword.operator.minus.exponent"],settings:{foreground:"#098658"}},{scope:"constant.regexp",settings:{foreground:"#811f3f"}},{scope:"entity.name.tag",settings:{foreground:"#800000"}},{scope:"entity.name.selector",settings:{foreground:"#800000"}},{scope:"entity.other.attribute-name",settings:{foreground:"#e50000"}},{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:"#800000"}},{scope:"invalid",settings:{foreground:"#cd3131"}},{scope:"markup.underline",settings:{fontStyle:"underline"}},{scope:"markup.bold",settings:{fontStyle:"bold",foreground:"#000080"}},{scope:"markup.heading",settings:{fontStyle:"bold",foreground:"#800000"}},{scope:"markup.italic",settings:{fontStyle:"italic"}},{scope:"markup.strikethrough",settings:{fontStyle:"strikethrough"}},{scope:"markup.inserted",settings:{foreground:"#098658"}},{scope:"markup.deleted",settings:{foreground:"#a31515"}},{scope:"markup.changed",settings:{foreground:"#0451a5"}},{scope:["punctuation.definition.quote.begin.markdown","punctuation.definition.list.begin.markdown"],settings:{foreground:"#0451a5"}},{scope:"markup.inline.raw",settings:{foreground:"#800000"}},{scope:"punctuation.definition.tag",settings:{foreground:"#800000"}},{scope:["meta.preprocessor","entity.name.function.preprocessor"],settings:{foreground:"#0000ff"}},{scope:"meta.preprocessor.string",settings:{foreground:"#a31515"}},{scope:"meta.preprocessor.numeric",settings:{foreground:"#098658"}},{scope:"meta.structure.dictionary.key.python",settings:{foreground:"#0451a5"}},{scope:"storage",settings:{foreground:"#0000ff"}},{scope:"storage.type",settings:{foreground:"#0000ff"}},{scope:["storage.modifier","keyword.operator.noexcept"],settings:{foreground:"#0000ff"}},{scope:["string","meta.embedded.assembly"],settings:{foreground:"#a31515"}},{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:"#0000ff"}},{scope:"string.regexp",settings:{foreground:"#811f3f"}},{scope:["punctuation.definition.template-expression.begin","punctuation.definition.template-expression.end","punctuation.section.embedded"],settings:{foreground:"#0000ff"}},{scope:["meta.template.expression"],settings:{foreground:"#000000"}},{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:"#0451a5"}},{scope:["support.type.vendored.property-name","support.type.property-name","variable.css","variable.scss","variable.other.less","source.coffee.embedded"],settings:{foreground:"#e50000"}},{scope:["support.type.property-name.json"],settings:{foreground:"#0451a5"}},{scope:"keyword",settings:{foreground:"#0000ff"}},{scope:"keyword.control",settings:{foreground:"#0000ff"}},{scope:"keyword.operator",settings:{foreground:"#000000"}},{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:"#0000ff"}},{scope:"keyword.other.unit",settings:{foreground:"#098658"}},{scope:["punctuation.section.embedded.begin.php","punctuation.section.embedded.end.php"],settings:{foreground:"#800000"}},{scope:"support.function.git-rebase",settings:{foreground:"#0451a5"}},{scope:"constant.sha.git-rebase",settings:{foreground:"#098658"}},{scope:["storage.modifier.import.java","variable.language.wildcard.java","storage.modifier.package.java"],settings:{foreground:"#000000"}},{scope:"variable.language",settings:{foreground:"#0000ff"}},{scope:["entity.name.function","support.function","support.constant.handlebars","source.powershell variable.other.member","entity.name.operator.custom-literal"],settings:{foreground:"#795E26"}},{scope:["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:"#267f99"}},{scope:["meta.type.cast.expr","meta.type.new.expr","support.constant.math","support.constant.dom","support.constant.json","entity.other.inherited-class"],settings:{foreground:"#267f99"}},{scope:["keyword.control","source.cpp keyword.operator.new","source.cpp keyword.operator.delete","keyword.other.using","keyword.other.directive.using","keyword.other.operator","entity.name.operator"],settings:{foreground:"#AF00DB"}},{scope:["variable","meta.definition.variable.name","support.variable","entity.name.variable","constant.other.placeholder"],settings:{foreground:"#001080"}},{scope:["variable.other.constant","variable.other.enummember"],settings:{foreground:"#0070C1"}},{scope:["meta.object-literal.key"],settings:{foreground:"#001080"}},{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:"#0451a5"}},{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:"#d16969"}},{scope:["constant.character.character-class.regexp","constant.other.character-class.set.regexp","constant.other.character-class.regexp","constant.character.set.regexp"],settings:{foreground:"#811f3f"}},{scope:"keyword.operator.quantifier.regexp",settings:{foreground:"#000000"}},{scope:["keyword.operator.or.regexp","keyword.control.anchor.regexp"],settings:{foreground:"#EE0000"}},{scope:["constant.character","constant.other.option"],settings:{foreground:"#0000ff"}},{scope:"constant.character.escape",settings:{foreground:"#EE0000"}},{scope:"entity.name.label",settings:{foreground:"#000000"}}],type:"light"});async function Ei(){const a=await Ps({themes:[ln,un],langs:[Ci],loadWasm:Ls});return mn.register({id:"vue"}),Is(a,dt),{light:un.name,dark:ln.name}}export{Ei as registerHighlighter}; +function __vite__mapDeps(indexes) { + if (!__vite__mapDeps.viteFileDeps) { + __vite__mapDeps.viteFileDeps = [] + } + return indexes.map((i) => __vite__mapDeps.viteFileDeps[i]) +} \ No newline at end of file diff --git a/playground/assets/index-lMQbMrxt.js b/playground/assets/index-lMQbMrxt.js new file mode 100644 index 00000000..909fe0a4 --- /dev/null +++ b/playground/assets/index-lMQbMrxt.js @@ -0,0 +1,1570 @@ +var Vye=Object.defineProperty;var Hye=(n,e,t)=>e in n?Vye(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var gg=(n,e,t)=>(Hye(n,typeof e!="symbol"?e+"":e,t),t);(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))i(s);new MutationObserver(s=>{for(const r of s)if(r.type==="childList")for(const o of r.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&i(o)}).observe(document,{childList:!0,subtree:!0});function t(s){const r={};return s.integrity&&(r.integrity=s.integrity),s.referrerPolicy&&(r.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?r.credentials="include":s.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function i(s){if(s.ep)return;s.ep=!0;const r=t(s);fetch(s.href,r)}})();function h$(n,e){const t=Object.create(null),i=n.split(",");for(let s=0;s<i.length;s++)t[i[s]]=!0;return e?s=>!!t[s.toLowerCase()]:s=>!!t[s]}const fs={},rb=[],zh=()=>{},$ye=()=>!1,FR=n=>n.charCodeAt(0)===111&&n.charCodeAt(1)===110&&(n.charCodeAt(2)>122||n.charCodeAt(2)<97),d$=n=>n.startsWith("onUpdate:"),Tr=Object.assign,f$=(n,e)=>{const t=n.indexOf(e);t>-1&&n.splice(t,1)},zye=Object.prototype.hasOwnProperty,Qi=(n,e)=>zye.call(n,e),Jt=Array.isArray,ob=n=>BR(n)==="[object Map]",boe=n=>BR(n)==="[object Set]",bi=n=>typeof n=="function",nr=n=>typeof n=="string",tC=n=>typeof n=="symbol",as=n=>n!==null&&typeof n=="object",yoe=n=>(as(n)||bi(n))&&bi(n.then)&&bi(n.catch),Coe=Object.prototype.toString,BR=n=>Coe.call(n),Uye=n=>BR(n).slice(8,-1),woe=n=>BR(n)==="[object Object]",g$=n=>nr(n)&&n!=="NaN"&&n[0]!=="-"&&""+parseInt(n,10)===n,wT=h$(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),WR=n=>{const e=Object.create(null);return t=>e[t]||(e[t]=n(t))},jye=/-(\w)/g,ad=WR(n=>n.replace(jye,(e,t)=>t?t.toUpperCase():"")),qye=/\B([A-Z])/g,hv=WR(n=>n.replace(qye,"-$1").toLowerCase()),VR=WR(n=>n.charAt(0).toUpperCase()+n.slice(1)),g4=WR(n=>n?`on${VR(n)}`:""),m_=(n,e)=>!Object.is(n,e),ST=(n,e)=>{for(let t=0;t<n.length;t++)n[t](e)},RN=(n,e,t)=>{Object.defineProperty(n,e,{configurable:!0,enumerable:!1,value:t})},O6=n=>{const e=parseFloat(n);return isNaN(e)?n:e},Kye=n=>{const e=nr(n)?Number(n):NaN;return isNaN(e)?n:e};let _Y;const F6=()=>_Y||(_Y=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function $b(n){if(Jt(n)){const e={};for(let t=0;t<n.length;t++){const i=n[t],s=nr(i)?Xye(i):$b(i);if(s)for(const r in s)e[r]=s[r]}return e}else if(nr(n)||as(n))return n}const Gye=/;(?![^(]*\))/g,Yye=/:([^]+)/,Zye=/\/\*[^]*?\*\//g;function Xye(n){const e={};return n.replace(Zye,"").split(Gye).forEach(t=>{if(t){const i=t.split(Yye);i.length>1&&(e[i[0].trim()]=i[1].trim())}}),e}function sc(n){let e="";if(nr(n))e=n;else if(Jt(n))for(let t=0;t<n.length;t++){const i=sc(n[t]);i&&(e+=i+" ")}else if(as(n))for(const t in n)n[t]&&(e+=t+" ");return e.trim()}const Qye="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",Jye=h$(Qye);function Soe(n){return!!n||n===""}const vl=n=>nr(n)?n:n==null?"":Jt(n)||as(n)&&(n.toString===Coe||!bi(n.toString))?JSON.stringify(n,koe,2):String(n),koe=(n,e)=>e&&e.__v_isRef?koe(n,e.value):ob(e)?{[`Map(${e.size})`]:[...e.entries()].reduce((t,[i,s],r)=>(t[p4(i,r)+" =>"]=s,t),{})}:boe(e)?{[`Set(${e.size})`]:[...e.values()].map(t=>p4(t))}:tC(e)?p4(e):as(e)&&!Jt(e)&&!woe(e)?String(e):e,p4=(n,e="")=>{var t;return tC(n)?`Symbol(${(t=n.description)!=null?t:e})`:n};let cl;class eCe{constructor(e=!1){this.detached=e,this._active=!0,this.effects=[],this.cleanups=[],this.parent=cl,!e&&cl&&(this.index=(cl.scopes||(cl.scopes=[])).push(this)-1)}get active(){return this._active}run(e){if(this._active){const t=cl;try{return cl=this,e()}finally{cl=t}}}on(){cl=this}off(){cl=this.parent}stop(e){if(this._active){let t,i;for(t=0,i=this.effects.length;t<i;t++)this.effects[t].stop();for(t=0,i=this.cleanups.length;t<i;t++)this.cleanups[t]();if(this.scopes)for(t=0,i=this.scopes.length;t<i;t++)this.scopes[t].stop(!0);if(!this.detached&&this.parent&&!e){const s=this.parent.scopes.pop();s&&s!==this&&(this.parent.scopes[this.index]=s,s.index=this.index)}this.parent=void 0,this._active=!1}}}function tCe(n,e=cl){e&&e.active&&e.effects.push(n)}function Loe(){return cl}function iCe(n){cl&&cl.cleanups.push(n)}const p$=n=>{const e=new Set(n);return e.w=0,e.n=0,e},xoe=n=>(n.w&Fp)>0,Eoe=n=>(n.n&Fp)>0,nCe=({deps:n})=>{if(n.length)for(let e=0;e<n.length;e++)n[e].w|=Fp},sCe=n=>{const{deps:e}=n;if(e.length){let t=0;for(let i=0;i<e.length;i++){const s=e[i];xoe(s)&&!Eoe(s)?s.delete(n):e[t++]=s,s.w&=~Fp,s.n&=~Fp}e.length=t}},MN=new WeakMap;let iS=0,Fp=1;const B6=30;let au;const G1=Symbol(""),W6=Symbol("");class m${constructor(e,t=null,i){this.fn=e,this.scheduler=t,this.active=!0,this.deps=[],this.parent=void 0,tCe(this,i)}run(){if(!this.active)return this.fn();let e=au,t=dp;for(;e;){if(e===this)return;e=e.parent}try{return this.parent=au,au=this,dp=!0,Fp=1<<++iS,iS<=B6?nCe(this):vY(this),this.fn()}finally{iS<=B6&&sCe(this),Fp=1<<--iS,au=this.parent,dp=t,this.parent=void 0,this.deferStop&&this.stop()}}stop(){au===this?this.deferStop=!0:this.active&&(vY(this),this.onStop&&this.onStop(),this.active=!1)}}function vY(n){const{deps:e}=n;if(e.length){for(let t=0;t<e.length;t++)e[t].delete(n);e.length=0}}let dp=!0;const Doe=[];function iC(){Doe.push(dp),dp=!1}function nC(){const n=Doe.pop();dp=n===void 0?!0:n}function Xa(n,e,t){if(dp&&au){let i=MN.get(n);i||MN.set(n,i=new Map);let s=i.get(t);s||i.set(t,s=p$()),Ioe(s)}}function Ioe(n,e){let t=!1;iS<=B6?Eoe(n)||(n.n|=Fp,t=!xoe(n)):t=!n.has(au),t&&(n.add(au),au.deps.push(n))}function Df(n,e,t,i,s,r){const o=MN.get(n);if(!o)return;let a=[];if(e==="clear")a=[...o.values()];else if(t==="length"&&Jt(n)){const l=Number(i);o.forEach((c,u)=>{(u==="length"||!tC(u)&&u>=l)&&a.push(c)})}else switch(t!==void 0&&a.push(o.get(t)),e){case"add":Jt(n)?g$(t)&&a.push(o.get("length")):(a.push(o.get(G1)),ob(n)&&a.push(o.get(W6)));break;case"delete":Jt(n)||(a.push(o.get(G1)),ob(n)&&a.push(o.get(W6)));break;case"set":ob(n)&&a.push(o.get(G1));break}if(a.length===1)a[0]&&V6(a[0]);else{const l=[];for(const c of a)c&&l.push(...c);V6(p$(l))}}function V6(n,e){const t=Jt(n)?n:[...n];for(const i of t)i.computed&&bY(i);for(const i of t)i.computed||bY(i)}function bY(n,e){(n!==au||n.allowRecurse)&&(n.scheduler?n.scheduler():n.run())}function rCe(n,e){var t;return(t=MN.get(n))==null?void 0:t.get(e)}const oCe=h$("__proto__,__v_isRef,__isVue"),Toe=new Set(Object.getOwnPropertyNames(Symbol).filter(n=>n!=="arguments"&&n!=="caller").map(n=>Symbol[n]).filter(tC)),yY=aCe();function aCe(){const n={};return["includes","indexOf","lastIndexOf"].forEach(e=>{n[e]=function(...t){const i=tn(this);for(let r=0,o=this.length;r<o;r++)Xa(i,"get",r+"");const s=i[e](...t);return s===-1||s===!1?i[e](...t.map(tn)):s}}),["push","pop","shift","unshift","splice"].forEach(e=>{n[e]=function(...t){iC();const i=tn(this)[e].apply(this,t);return nC(),i}}),n}function lCe(n){const e=tn(this);return Xa(e,"has",n),e.hasOwnProperty(n)}class Noe{constructor(e=!1,t=!1){this._isReadonly=e,this._shallow=t}get(e,t,i){const s=this._isReadonly,r=this._shallow;if(t==="__v_isReactive")return!s;if(t==="__v_isReadonly")return s;if(t==="__v_isShallow")return r;if(t==="__v_raw")return i===(s?r?CCe:Moe:r?Roe:Poe).get(e)||Object.getPrototypeOf(e)===Object.getPrototypeOf(i)?e:void 0;const o=Jt(e);if(!s){if(o&&Qi(yY,t))return Reflect.get(yY,t,i);if(t==="hasOwnProperty")return lCe}const a=Reflect.get(e,t,i);return(tC(t)?Toe.has(t):oCe(t))||(s||Xa(e,"get",t),r)?a:$s(a)?o&&g$(t)?a:a.value:as(a)?s?qx(a):wm(a):a}}class Aoe extends Noe{constructor(e=!1){super(!1,e)}set(e,t,i,s){let r=e[t];if(zb(r)&&$s(r)&&!$s(i))return!1;if(!this._shallow&&(!ON(i)&&!zb(i)&&(r=tn(r),i=tn(i)),!Jt(e)&&$s(r)&&!$s(i)))return r.value=i,!0;const o=Jt(e)&&g$(t)?Number(t)<e.length:Qi(e,t),a=Reflect.set(e,t,i,s);return e===tn(s)&&(o?m_(i,r)&&Df(e,"set",t,i):Df(e,"add",t,i)),a}deleteProperty(e,t){const i=Qi(e,t);e[t];const s=Reflect.deleteProperty(e,t);return s&&i&&Df(e,"delete",t,void 0),s}has(e,t){const i=Reflect.has(e,t);return(!tC(t)||!Toe.has(t))&&Xa(e,"has",t),i}ownKeys(e){return Xa(e,"iterate",Jt(e)?"length":G1),Reflect.ownKeys(e)}}class cCe extends Noe{constructor(e=!1){super(!0,e)}set(e,t){return!0}deleteProperty(e,t){return!0}}const uCe=new Aoe,hCe=new cCe,dCe=new Aoe(!0),_$=n=>n,HR=n=>Reflect.getPrototypeOf(n);function fD(n,e,t=!1,i=!1){n=n.__v_raw;const s=tn(n),r=tn(e);t||(m_(e,r)&&Xa(s,"get",e),Xa(s,"get",r));const{has:o}=HR(s),a=i?_$:t?y$:Nk;if(o.call(s,e))return a(n.get(e));if(o.call(s,r))return a(n.get(r));n!==s&&n.get(e)}function gD(n,e=!1){const t=this.__v_raw,i=tn(t),s=tn(n);return e||(m_(n,s)&&Xa(i,"has",n),Xa(i,"has",s)),n===s?t.has(n):t.has(n)||t.has(s)}function pD(n,e=!1){return n=n.__v_raw,!e&&Xa(tn(n),"iterate",G1),Reflect.get(n,"size",n)}function CY(n){n=tn(n);const e=tn(this);return HR(e).has.call(e,n)||(e.add(n),Df(e,"add",n,n)),this}function wY(n,e){e=tn(e);const t=tn(this),{has:i,get:s}=HR(t);let r=i.call(t,n);r||(n=tn(n),r=i.call(t,n));const o=s.call(t,n);return t.set(n,e),r?m_(e,o)&&Df(t,"set",n,e):Df(t,"add",n,e),this}function SY(n){const e=tn(this),{has:t,get:i}=HR(e);let s=t.call(e,n);s||(n=tn(n),s=t.call(e,n)),i&&i.call(e,n);const r=e.delete(n);return s&&Df(e,"delete",n,void 0),r}function kY(){const n=tn(this),e=n.size!==0,t=n.clear();return e&&Df(n,"clear",void 0,void 0),t}function mD(n,e){return function(i,s){const r=this,o=r.__v_raw,a=tn(o),l=e?_$:n?y$:Nk;return!n&&Xa(a,"iterate",G1),o.forEach((c,u)=>i.call(s,l(c),l(u),r))}}function _D(n,e,t){return function(...i){const s=this.__v_raw,r=tn(s),o=ob(r),a=n==="entries"||n===Symbol.iterator&&o,l=n==="keys"&&o,c=s[n](...i),u=t?_$:e?y$:Nk;return!e&&Xa(r,"iterate",l?W6:G1),{next(){const{value:h,done:d}=c.next();return d?{value:h,done:d}:{value:a?[u(h[0]),u(h[1])]:u(h),done:d}},[Symbol.iterator](){return this}}}}function pg(n){return function(...e){return n==="delete"?!1:n==="clear"?void 0:this}}function fCe(){const n={get(r){return fD(this,r)},get size(){return pD(this)},has:gD,add:CY,set:wY,delete:SY,clear:kY,forEach:mD(!1,!1)},e={get(r){return fD(this,r,!1,!0)},get size(){return pD(this)},has:gD,add:CY,set:wY,delete:SY,clear:kY,forEach:mD(!1,!0)},t={get(r){return fD(this,r,!0)},get size(){return pD(this,!0)},has(r){return gD.call(this,r,!0)},add:pg("add"),set:pg("set"),delete:pg("delete"),clear:pg("clear"),forEach:mD(!0,!1)},i={get(r){return fD(this,r,!0,!0)},get size(){return pD(this,!0)},has(r){return gD.call(this,r,!0)},add:pg("add"),set:pg("set"),delete:pg("delete"),clear:pg("clear"),forEach:mD(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(r=>{n[r]=_D(r,!1,!1),t[r]=_D(r,!0,!1),e[r]=_D(r,!1,!0),i[r]=_D(r,!0,!0)}),[n,t,e,i]}const[gCe,pCe,mCe,_Ce]=fCe();function v$(n,e){const t=e?n?_Ce:mCe:n?pCe:gCe;return(i,s,r)=>s==="__v_isReactive"?!n:s==="__v_isReadonly"?n:s==="__v_raw"?i:Reflect.get(Qi(t,s)&&s in i?t:i,s,r)}const vCe={get:v$(!1,!1)},bCe={get:v$(!1,!0)},yCe={get:v$(!0,!1)},Poe=new WeakMap,Roe=new WeakMap,Moe=new WeakMap,CCe=new WeakMap;function wCe(n){switch(n){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function SCe(n){return n.__v_skip||!Object.isExtensible(n)?0:wCe(Uye(n))}function wm(n){return zb(n)?n:b$(n,!1,uCe,vCe,Poe)}function kCe(n){return b$(n,!1,dCe,bCe,Roe)}function qx(n){return b$(n,!0,hCe,yCe,Moe)}function b$(n,e,t,i,s){if(!as(n)||n.__v_raw&&!(e&&n.__v_isReactive))return n;const r=s.get(n);if(r)return r;const o=SCe(n);if(o===0)return n;const a=new Proxy(n,o===2?i:t);return s.set(n,a),a}function ab(n){return zb(n)?ab(n.__v_raw):!!(n&&n.__v_isReactive)}function zb(n){return!!(n&&n.__v_isReadonly)}function ON(n){return!!(n&&n.__v_isShallow)}function Ooe(n){return ab(n)||zb(n)}function tn(n){const e=n&&n.__v_raw;return e?tn(e):n}function Foe(n){return RN(n,"__v_skip",!0),n}const Nk=n=>as(n)?wm(n):n,y$=n=>as(n)?qx(n):n;function C$(n){dp&&au&&(n=tn(n),Ioe(n.dep||(n.dep=p$())))}function w$(n,e){n=tn(n);const t=n.dep;t&&V6(t)}function $s(n){return!!(n&&n.__v_isRef===!0)}function Qt(n){return Boe(n,!1)}function AS(n){return Boe(n,!0)}function Boe(n,e){return $s(n)?n:new LCe(n,e)}class LCe{constructor(e,t){this.__v_isShallow=t,this.dep=void 0,this.__v_isRef=!0,this._rawValue=t?e:tn(e),this._value=t?e:Nk(e)}get value(){return C$(this),this._value}set value(e){const t=this.__v_isShallow||ON(e)||zb(e);e=t?e:tn(e),m_(e,this._rawValue)&&(this._rawValue=e,this._value=t?e:Nk(e),w$(this))}}function Ti(n){return $s(n)?n.value:n}const xCe={get:(n,e,t)=>Ti(Reflect.get(n,e,t)),set:(n,e,t,i)=>{const s=n[e];return $s(s)&&!$s(t)?(s.value=t,!0):Reflect.set(n,e,t,i)}};function Woe(n){return ab(n)?n:new Proxy(n,xCe)}class ECe{constructor(e){this.dep=void 0,this.__v_isRef=!0;const{get:t,set:i}=e(()=>C$(this),()=>w$(this));this._get=t,this._set=i}get value(){return this._get()}set value(e){this._set(e)}}function DCe(n){return new ECe(n)}class ICe{constructor(e,t,i){this._object=e,this._key=t,this._defaultValue=i,this.__v_isRef=!0}get value(){const e=this._object[this._key];return e===void 0?this._defaultValue:e}set value(e){this._object[this._key]=e}get dep(){return rCe(tn(this._object),this._key)}}class TCe{constructor(e){this._getter=e,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function nS(n,e,t){return $s(n)?n:bi(n)?new TCe(n):as(n)&&arguments.length>1?NCe(n,e,t):Qt(n)}function NCe(n,e,t){const i=n[e];return $s(i)?i:new ICe(n,e,t)}class ACe{constructor(e,t,i,s){this._setter=t,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this._dirty=!0,this.effect=new m$(e,()=>{this._dirty||(this._dirty=!0,w$(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!s,this.__v_isReadonly=i}get value(){const e=tn(this);return C$(e),(e._dirty||!e._cacheable)&&(e._dirty=!1,e._value=e.effect.run()),e._value}set value(e){this._setter(e)}}function PCe(n,e,t=!1){let i,s;const r=bi(n);return r?(i=n,s=zh):(i=n.get,s=n.set),new ACe(i,s,r||!s,t)}function fp(n,e,t,i){let s;try{s=i?n(...i):n()}catch(r){$R(r,e,t)}return s}function gc(n,e,t,i){if(bi(n)){const r=fp(n,e,t,i);return r&&yoe(r)&&r.catch(o=>{$R(o,e,t)}),r}const s=[];for(let r=0;r<n.length;r++)s.push(gc(n[r],e,t,i));return s}function $R(n,e,t,i=!0){const s=e?e.vnode:null;if(e){let r=e.parent;const o=e.proxy,a=t;for(;r;){const c=r.ec;if(c){for(let u=0;u<c.length;u++)if(c[u](n,o,a)===!1)return}r=r.parent}const l=e.appContext.config.errorHandler;if(l){fp(l,null,10,[n,o,a]);return}}RCe(n,t,s,i)}function RCe(n,e,t,i=!0){console.error(n)}let Ak=!1,H6=!1;const Io=[];let ph=0;const lb=[];let qd=null,g1=0;const Voe=Promise.resolve();let S$=null;function sC(n){const e=S$||Voe;return n?e.then(this?n.bind(this):n):e}function MCe(n){let e=ph+1,t=Io.length;for(;e<t;){const i=e+t>>>1,s=Io[i],r=Pk(s);r<n||r===n&&s.pre?e=i+1:t=i}return e}function k$(n){(!Io.length||!Io.includes(n,Ak&&n.allowRecurse?ph+1:ph))&&(n.id==null?Io.push(n):Io.splice(MCe(n.id),0,n),Hoe())}function Hoe(){!Ak&&!H6&&(H6=!0,S$=Voe.then(zoe))}function OCe(n){const e=Io.indexOf(n);e>ph&&Io.splice(e,1)}function FCe(n){Jt(n)?lb.push(...n):(!qd||!qd.includes(n,n.allowRecurse?g1+1:g1))&&lb.push(n),Hoe()}function LY(n,e,t=Ak?ph+1:0){for(;t<Io.length;t++){const i=Io[t];if(i&&i.pre){if(n&&i.id!==n.uid)continue;Io.splice(t,1),t--,i()}}}function $oe(n){if(lb.length){const e=[...new Set(lb)];if(lb.length=0,qd){qd.push(...e);return}for(qd=e,qd.sort((t,i)=>Pk(t)-Pk(i)),g1=0;g1<qd.length;g1++)qd[g1]();qd=null,g1=0}}const Pk=n=>n.id==null?1/0:n.id,BCe=(n,e)=>{const t=Pk(n)-Pk(e);if(t===0){if(n.pre&&!e.pre)return-1;if(e.pre&&!n.pre)return 1}return t};function zoe(n){H6=!1,Ak=!0,Io.sort(BCe);try{for(ph=0;ph<Io.length;ph++){const e=Io[ph];e&&e.active!==!1&&fp(e,null,14)}}finally{ph=0,Io.length=0,$oe(),Ak=!1,S$=null,(Io.length||lb.length)&&zoe()}}function WCe(n,e,...t){if(n.isUnmounted)return;const i=n.vnode.props||fs;let s=t;const r=e.startsWith("update:"),o=r&&e.slice(7);if(o&&o in i){const u=`${o==="modelValue"?"model":o}Modifiers`,{number:h,trim:d}=i[u]||fs;d&&(s=t.map(f=>nr(f)?f.trim():f)),h&&(s=t.map(O6))}let a,l=i[a=g4(e)]||i[a=g4(ad(e))];!l&&r&&(l=i[a=g4(hv(e))]),l&&gc(l,n,6,s);const c=i[a+"Once"];if(c){if(!n.emitted)n.emitted={};else if(n.emitted[a])return;n.emitted[a]=!0,gc(c,n,6,s)}}function Uoe(n,e,t=!1){const i=e.emitsCache,s=i.get(n);if(s!==void 0)return s;const r=n.emits;let o={},a=!1;if(!bi(n)){const l=c=>{const u=Uoe(c,e,!0);u&&(a=!0,Tr(o,u))};!t&&e.mixins.length&&e.mixins.forEach(l),n.extends&&l(n.extends),n.mixins&&n.mixins.forEach(l)}return!r&&!a?(as(n)&&i.set(n,null),null):(Jt(r)?r.forEach(l=>o[l]=null):Tr(o,r),as(n)&&i.set(n,o),o)}function zR(n,e){return!n||!FR(e)?!1:(e=e.slice(2).replace(/Once$/,""),Qi(n,e[0].toLowerCase()+e.slice(1))||Qi(n,hv(e))||Qi(n,e))}let no=null,UR=null;function FN(n){const e=no;return no=n,UR=n&&n.type.__scopeId||null,e}function joe(n){UR=n}function qoe(){UR=null}function xh(n,e=no,t){if(!e||n._n)return n;const i=(...s)=>{i._d&&BY(-1);const r=FN(e);let o;try{o=n(...s)}finally{FN(r),i._d&&BY(1)}return o};return i._n=!0,i._c=!0,i._d=!0,i}function m4(n){const{type:e,vnode:t,proxy:i,withProxy:s,props:r,propsOptions:[o],slots:a,attrs:l,emit:c,render:u,renderCache:h,data:d,setupState:f,ctx:g,inheritAttrs:p}=n;let m,_;const b=FN(n);try{if(t.shapeFlag&4){const w=s||i,S=w;m=lh(u.call(S,w,h,r,f,d,g)),_=l}else{const w=e;m=lh(w.length>1?w(r,{attrs:l,slots:a,emit:c}):w(r,null)),_=e.props?l:VCe(l)}}catch(w){OS.length=0,$R(w,n,1),m=At(pc)}let y=m;if(_&&p!==!1){const w=Object.keys(_),{shapeFlag:S}=y;w.length&&S&7&&(o&&w.some(d$)&&(_=HCe(_,o)),y=Bp(y,_))}return t.dirs&&(y=Bp(y),y.dirs=y.dirs?y.dirs.concat(t.dirs):t.dirs),t.transition&&(y.transition=t.transition),m=y,FN(b),m}const VCe=n=>{let e;for(const t in n)(t==="class"||t==="style"||FR(t))&&((e||(e={}))[t]=n[t]);return e},HCe=(n,e)=>{const t={};for(const i in n)(!d$(i)||!(i.slice(9)in e))&&(t[i]=n[i]);return t};function $Ce(n,e,t){const{props:i,children:s,component:r}=n,{props:o,children:a,patchFlag:l}=e,c=r.emitsOptions;if(e.dirs||e.transition)return!0;if(t&&l>=0){if(l&1024)return!0;if(l&16)return i?xY(i,o,c):!!o;if(l&8){const u=e.dynamicProps;for(let h=0;h<u.length;h++){const d=u[h];if(o[d]!==i[d]&&!zR(c,d))return!0}}}else return(s||a)&&(!a||!a.$stable)?!0:i===o?!1:i?o?xY(i,o,c):!0:!!o;return!1}function xY(n,e,t){const i=Object.keys(e);if(i.length!==Object.keys(n).length)return!0;for(let s=0;s<i.length;s++){const r=i[s];if(e[r]!==n[r]&&!zR(t,r))return!0}return!1}function zCe({vnode:n,parent:e},t){for(;e&&e.subTree===n;)(n=e.vnode).el=t,e=e.parent}const Koe="components";function UCe(n,e){return qCe(Koe,n,!0,e)||n}const jCe=Symbol.for("v-ndc");function qCe(n,e,t=!0,i=!1){const s=no||Hr;if(s){const r=s.type;if(n===Koe){const a=Wwe(r,!1);if(a&&(a===e||a===ad(e)||a===VR(ad(e))))return r}const o=EY(s[n]||r[n],e)||EY(s.appContext[n],e);return!o&&i?r:o}}function EY(n,e){return n&&(n[e]||n[ad(e)]||n[VR(ad(e))])}const KCe=n=>n.__isSuspense;function GCe(n,e){e&&e.pendingBranch?Jt(n)?e.effects.push(...n):e.effects.push(n):FCe(n)}function Kx(n,e){return L$(n,null,e)}const vD={};function Kn(n,e,t){return L$(n,e,t)}function L$(n,e,{immediate:t,deep:i,flush:s,onTrack:r,onTrigger:o}=fs){var a;const l=Loe()===((a=Hr)==null?void 0:a.scope)?Hr:null;let c,u=!1,h=!1;if($s(n)?(c=()=>n.value,u=ON(n)):ab(n)?(c=()=>n,i=!0):Jt(n)?(h=!0,u=n.some(w=>ab(w)||ON(w)),c=()=>n.map(w=>{if($s(w))return w.value;if(ab(w))return T1(w);if(bi(w))return fp(w,l,2)})):bi(n)?e?c=()=>fp(n,l,2):c=()=>{if(!(l&&l.isUnmounted))return d&&d(),gc(n,l,3,[f])}:c=zh,e&&i){const w=c;c=()=>T1(w())}let d,f=w=>{d=b.onStop=()=>{fp(w,l,4),d=b.onStop=void 0}},g;if(Mk)if(f=zh,e?t&&gc(e,l,3,[c(),h?[]:void 0,f]):c(),s==="sync"){const w=$we();g=w.__watcherHandles||(w.__watcherHandles=[])}else return zh;let p=h?new Array(n.length).fill(vD):vD;const m=()=>{if(b.active)if(e){const w=b.run();(i||u||(h?w.some((S,E)=>m_(S,p[E])):m_(w,p)))&&(d&&d(),gc(e,l,3,[w,p===vD?void 0:h&&p[0]===vD?[]:p,f]),p=w)}else b.run()};m.allowRecurse=!!e;let _;s==="sync"?_=m:s==="post"?_=()=>xa(m,l&&l.suspense):(m.pre=!0,l&&(m.id=l.uid),_=()=>k$(m));const b=new m$(c,_);e?t?m():p=b.run():s==="post"?xa(b.run.bind(b),l&&l.suspense):b.run();const y=()=>{b.stop(),l&&l.scope&&f$(l.scope.effects,b)};return g&&g.push(y),y}function YCe(n,e,t){const i=this.proxy,s=nr(n)?n.includes(".")?Goe(i,n):()=>i[n]:n.bind(i,i);let r;bi(e)?r=e:(r=e.handler,t=e);const o=Hr;qb(this);const a=L$(s,r.bind(i),t);return o?qb(o):Y1(),a}function Goe(n,e){const t=e.split(".");return()=>{let i=n;for(let s=0;s<t.length&&i;s++)i=i[t[s]];return i}}function T1(n,e){if(!as(n)||n.__v_skip||(e=e||new Set,e.has(n)))return n;if(e.add(n),$s(n))T1(n.value,e);else if(Jt(n))for(let t=0;t<n.length;t++)T1(n[t],e);else if(boe(n)||ob(n))n.forEach(t=>{T1(t,e)});else if(woe(n))for(const t in n)T1(n[t],e);return n}function __(n,e){const t=no;if(t===null)return n;const i=XR(t)||t.proxy,s=n.dirs||(n.dirs=[]);for(let r=0;r<e.length;r++){let[o,a,l,c=fs]=e[r];o&&(bi(o)&&(o={mounted:o,updated:o}),o.deep&&T1(a),s.push({dir:o,instance:i,value:a,oldValue:void 0,arg:l,modifiers:c}))}return n}function $m(n,e,t,i){const s=n.dirs,r=e&&e.dirs;for(let o=0;o<s.length;o++){const a=s[o];r&&(a.oldValue=r[o].value);let l=a.dir[i];l&&(iC(),gc(l,t,8,[n.el,a,n,e]),nC())}}const Vg=Symbol("_leaveCb"),bD=Symbol("_enterCb");function ZCe(){const n={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return tg(()=>{n.isMounted=!0}),GR(()=>{n.isUnmounting=!0}),n}const Gl=[Function,Array],Yoe={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Gl,onEnter:Gl,onAfterEnter:Gl,onEnterCancelled:Gl,onBeforeLeave:Gl,onLeave:Gl,onAfterLeave:Gl,onLeaveCancelled:Gl,onBeforeAppear:Gl,onAppear:Gl,onAfterAppear:Gl,onAppearCancelled:Gl},XCe={name:"BaseTransition",props:Yoe,setup(n,{slots:e}){const t=fv(),i=ZCe();let s;return()=>{const r=e.default&&Xoe(e.default(),!0);if(!r||!r.length)return;let o=r[0];if(r.length>1){for(const p of r)if(p.type!==pc){o=p;break}}const a=tn(n),{mode:l}=a;if(i.isLeaving)return _4(o);const c=DY(o);if(!c)return _4(o);const u=$6(c,a,i,t);z6(c,u);const h=t.subTree,d=h&&DY(h);let f=!1;const{getTransitionKey:g}=c.type;if(g){const p=g();s===void 0?s=p:p!==s&&(s=p,f=!0)}if(d&&d.type!==pc&&(!p1(c,d)||f)){const p=$6(d,a,i,t);if(z6(d,p),l==="out-in")return i.isLeaving=!0,p.afterLeave=()=>{i.isLeaving=!1,t.update.active!==!1&&t.update()},_4(o);l==="in-out"&&c.type!==pc&&(p.delayLeave=(m,_,b)=>{const y=Zoe(i,d);y[String(d.key)]=d,m[Vg]=()=>{_(),m[Vg]=void 0,delete u.delayedLeave},u.delayedLeave=b})}return o}}},QCe=XCe;function Zoe(n,e){const{leavingVNodes:t}=n;let i=t.get(e.type);return i||(i=Object.create(null),t.set(e.type,i)),i}function $6(n,e,t,i){const{appear:s,mode:r,persisted:o=!1,onBeforeEnter:a,onEnter:l,onAfterEnter:c,onEnterCancelled:u,onBeforeLeave:h,onLeave:d,onAfterLeave:f,onLeaveCancelled:g,onBeforeAppear:p,onAppear:m,onAfterAppear:_,onAppearCancelled:b}=e,y=String(n.key),w=Zoe(t,n),S=(k,x)=>{k&&gc(k,i,9,x)},E=(k,x)=>{const I=x[1];S(k,x),Jt(k)?k.every(N=>N.length<=1)&&I():k.length<=1&&I()},L={mode:r,persisted:o,beforeEnter(k){let x=a;if(!t.isMounted)if(s)x=p||a;else return;k[Vg]&&k[Vg](!0);const I=w[y];I&&p1(n,I)&&I.el[Vg]&&I.el[Vg](),S(x,[k])},enter(k){let x=l,I=c,N=u;if(!t.isMounted)if(s)x=m||l,I=_||c,N=b||u;else return;let T=!1;const P=k[bD]=R=>{T||(T=!0,R?S(N,[k]):S(I,[k]),L.delayedLeave&&L.delayedLeave(),k[bD]=void 0)};x?E(x,[k,P]):P()},leave(k,x){const I=String(n.key);if(k[bD]&&k[bD](!0),t.isUnmounting)return x();S(h,[k]);let N=!1;const T=k[Vg]=P=>{N||(N=!0,x(),P?S(g,[k]):S(f,[k]),k[Vg]=void 0,w[I]===n&&delete w[I])};w[I]=n,d?E(d,[k,T]):T()},clone(k){return $6(k,e,t,i)}};return L}function _4(n){if(jR(n))return n=Bp(n),n.children=null,n}function DY(n){return jR(n)?n.children?n.children[0]:void 0:n}function z6(n,e){n.shapeFlag&6&&n.component?z6(n.component.subTree,e):n.shapeFlag&128?(n.ssContent.transition=e.clone(n.ssContent),n.ssFallback.transition=e.clone(n.ssFallback)):n.transition=e}function Xoe(n,e=!1,t){let i=[],s=0;for(let r=0;r<n.length;r++){let o=n[r];const a=t==null?o.key:String(t)+String(o.key!=null?o.key:r);o.type===Es?(o.patchFlag&128&&s++,i=i.concat(Xoe(o.children,e,a))):(e||o.type!==pc)&&i.push(a!=null?Bp(o,{key:a}):o)}if(s>1)for(let r=0;r<i.length;r++)i[r].patchFlag=-2;return i}/*! #__NO_SIDE_EFFECTS__ */function rr(n,e){return bi(n)?Tr({name:n.name},e,{setup:n}):n}const PS=n=>!!n.type.__asyncLoader,jR=n=>n.type.__isKeepAlive;function x$(n,e){Qoe(n,"a",e)}function qR(n,e){Qoe(n,"da",e)}function Qoe(n,e,t=Hr){const i=n.__wdc||(n.__wdc=()=>{let s=t;for(;s;){if(s.isDeactivated)return;s=s.parent}return n()});if(KR(e,i,t),t){let s=t.parent;for(;s&&s.parent;)jR(s.parent.vnode)&&JCe(i,e,t,s),s=s.parent}}function JCe(n,e,t,i){const s=KR(e,n,i,!0);Gx(()=>{f$(i[e],s)},t)}function KR(n,e,t=Hr,i=!1){if(t){const s=t[n]||(t[n]=[]),r=e.__weh||(e.__weh=(...o)=>{if(t.isUnmounted)return;iC(),qb(t);const a=gc(e,t,n,o);return Y1(),nC(),a});return i?s.unshift(r):s.push(r),r}}const eg=n=>(e,t=Hr)=>(!Mk||n==="sp")&&KR(n,(...i)=>e(...i),t),ewe=eg("bm"),tg=eg("m"),twe=eg("bu"),iwe=eg("u"),GR=eg("bum"),Gx=eg("um"),nwe=eg("sp"),swe=eg("rtg"),rwe=eg("rtc");function owe(n,e=Hr){KR("ec",n,e)}function Ub(n,e,t,i){let s;const r=t&&t[i];if(Jt(n)||nr(n)){s=new Array(n.length);for(let o=0,a=n.length;o<a;o++)s[o]=e(n[o],o,void 0,r&&r[o])}else if(typeof n=="number"){s=new Array(n);for(let o=0;o<n;o++)s[o]=e(o+1,o,void 0,r&&r[o])}else if(as(n))if(n[Symbol.iterator])s=Array.from(n,(o,a)=>e(o,a,void 0,r&&r[a]));else{const o=Object.keys(n);s=new Array(o.length);for(let a=0,l=o.length;a<l;a++){const c=o[a];s[a]=e(n[c],c,a,r&&r[a])}}else s=[];return t&&(t[i]=s),s}function U6(n,e,t={},i,s){if(no.isCE||no.parent&&PS(no.parent)&&no.parent.isCE)return e!=="default"&&(t.name=e),At("slot",t,i&&i());let r=n[e];r&&r._c&&(r._d=!1),vi();const o=r&&Joe(r(t)),a=dv(Es,{key:t.key||o&&o.key||`_${e}`},o||(i?i():[]),o&&n._===1?64:-2);return!s&&a.scopeId&&(a.slotScopeIds=[a.scopeId+"-s"]),r&&r._c&&(r._d=!0),a}function Joe(n){return n.some(e=>VN(e)?!(e.type===pc||e.type===Es&&!Joe(e.children)):!0)?n:null}const j6=n=>n?hae(n)?XR(n)||n.proxy:j6(n.parent):null,RS=Tr(Object.create(null),{$:n=>n,$el:n=>n.vnode.el,$data:n=>n.data,$props:n=>n.props,$attrs:n=>n.attrs,$slots:n=>n.slots,$refs:n=>n.refs,$parent:n=>j6(n.parent),$root:n=>j6(n.root),$emit:n=>n.emit,$options:n=>E$(n),$forceUpdate:n=>n.f||(n.f=()=>k$(n.update)),$nextTick:n=>n.n||(n.n=sC.bind(n.proxy)),$watch:n=>YCe.bind(n)}),v4=(n,e)=>n!==fs&&!n.__isScriptSetup&&Qi(n,e),awe={get({_:n},e){const{ctx:t,setupState:i,data:s,props:r,accessCache:o,type:a,appContext:l}=n;let c;if(e[0]!=="$"){const f=o[e];if(f!==void 0)switch(f){case 1:return i[e];case 2:return s[e];case 4:return t[e];case 3:return r[e]}else{if(v4(i,e))return o[e]=1,i[e];if(s!==fs&&Qi(s,e))return o[e]=2,s[e];if((c=n.propsOptions[0])&&Qi(c,e))return o[e]=3,r[e];if(t!==fs&&Qi(t,e))return o[e]=4,t[e];q6&&(o[e]=0)}}const u=RS[e];let h,d;if(u)return e==="$attrs"&&Xa(n,"get",e),u(n);if((h=a.__cssModules)&&(h=h[e]))return h;if(t!==fs&&Qi(t,e))return o[e]=4,t[e];if(d=l.config.globalProperties,Qi(d,e))return d[e]},set({_:n},e,t){const{data:i,setupState:s,ctx:r}=n;return v4(s,e)?(s[e]=t,!0):i!==fs&&Qi(i,e)?(i[e]=t,!0):Qi(n.props,e)||e[0]==="$"&&e.slice(1)in n?!1:(r[e]=t,!0)},has({_:{data:n,setupState:e,accessCache:t,ctx:i,appContext:s,propsOptions:r}},o){let a;return!!t[o]||n!==fs&&Qi(n,o)||v4(e,o)||(a=r[0])&&Qi(a,o)||Qi(i,o)||Qi(RS,o)||Qi(s.config.globalProperties,o)},defineProperty(n,e,t){return t.get!=null?n._.accessCache[e]=0:Qi(t,"value")&&this.set(n,e,t.value,null),Reflect.defineProperty(n,e,t)}};function lwe(n,e,t){const i=fv();if(t&&t.local){const s=Qt(n[e]);return Kn(()=>n[e],r=>s.value=r),Kn(s,r=>{r!==n[e]&&i.emit(`update:${e}`,r)}),s}else return{__v_isRef:!0,get value(){return n[e]},set value(s){i.emit(`update:${e}`,s)}}}function IY(n){return Jt(n)?n.reduce((e,t)=>(e[t]=null,e),{}):n}let q6=!0;function cwe(n){const e=E$(n),t=n.proxy,i=n.ctx;q6=!1,e.beforeCreate&&TY(e.beforeCreate,n,"bc");const{data:s,computed:r,methods:o,watch:a,provide:l,inject:c,created:u,beforeMount:h,mounted:d,beforeUpdate:f,updated:g,activated:p,deactivated:m,beforeDestroy:_,beforeUnmount:b,destroyed:y,unmounted:w,render:S,renderTracked:E,renderTriggered:L,errorCaptured:k,serverPrefetch:x,expose:I,inheritAttrs:N,components:T,directives:P,filters:R}=e;if(c&&uwe(c,i,null),o)for(const K in o){const Z=o[K];bi(Z)&&(i[K]=Z.bind(t))}if(s){const K=s.call(t,t);as(K)&&(n.data=wm(K))}if(q6=!0,r)for(const K in r){const Z=r[K],q=bi(Z)?Z.bind(t,t):bi(Z.get)?Z.get.bind(t,t):zh,re=!bi(Z)&&bi(Z.set)?Z.set.bind(t):zh,G=Qn({get:q,set:re});Object.defineProperty(i,K,{enumerable:!0,configurable:!0,get:()=>G.value,set:W=>G.value=W})}if(a)for(const K in a)eae(a[K],i,t,K);if(l){const K=bi(l)?l.call(t):l;Reflect.ownKeys(K).forEach(Z=>{ic(Z,K[Z])})}u&&TY(u,n,"c");function j(K,Z){Jt(Z)?Z.forEach(q=>K(q.bind(t))):Z&&K(Z.bind(t))}if(j(ewe,h),j(tg,d),j(twe,f),j(iwe,g),j(x$,p),j(qR,m),j(owe,k),j(rwe,E),j(swe,L),j(GR,b),j(Gx,w),j(nwe,x),Jt(I))if(I.length){const K=n.exposed||(n.exposed={});I.forEach(Z=>{Object.defineProperty(K,Z,{get:()=>t[Z],set:q=>t[Z]=q})})}else n.exposed||(n.exposed={});S&&n.render===zh&&(n.render=S),N!=null&&(n.inheritAttrs=N),T&&(n.components=T),P&&(n.directives=P)}function uwe(n,e,t=zh){Jt(n)&&(n=K6(n));for(const i in n){const s=n[i];let r;as(s)?"default"in s?r=$r(s.from||i,s.default,!0):r=$r(s.from||i):r=$r(s),$s(r)?Object.defineProperty(e,i,{enumerable:!0,configurable:!0,get:()=>r.value,set:o=>r.value=o}):e[i]=r}}function TY(n,e,t){gc(Jt(n)?n.map(i=>i.bind(e.proxy)):n.bind(e.proxy),e,t)}function eae(n,e,t,i){const s=i.includes(".")?Goe(t,i):()=>t[i];if(nr(n)){const r=e[n];bi(r)&&Kn(s,r)}else if(bi(n))Kn(s,n.bind(t));else if(as(n))if(Jt(n))n.forEach(r=>eae(r,e,t,i));else{const r=bi(n.handler)?n.handler.bind(t):e[n.handler];bi(r)&&Kn(s,r,n)}}function E$(n){const e=n.type,{mixins:t,extends:i}=e,{mixins:s,optionsCache:r,config:{optionMergeStrategies:o}}=n.appContext,a=r.get(e);let l;return a?l=a:!s.length&&!t&&!i?l=e:(l={},s.length&&s.forEach(c=>BN(l,c,o,!0)),BN(l,e,o)),as(e)&&r.set(e,l),l}function BN(n,e,t,i=!1){const{mixins:s,extends:r}=e;r&&BN(n,r,t,!0),s&&s.forEach(o=>BN(n,o,t,!0));for(const o in e)if(!(i&&o==="expose")){const a=hwe[o]||t&&t[o];n[o]=a?a(n[o],e[o]):e[o]}return n}const hwe={data:NY,props:AY,emits:AY,methods:sS,computed:sS,beforeCreate:Uo,created:Uo,beforeMount:Uo,mounted:Uo,beforeUpdate:Uo,updated:Uo,beforeDestroy:Uo,beforeUnmount:Uo,destroyed:Uo,unmounted:Uo,activated:Uo,deactivated:Uo,errorCaptured:Uo,serverPrefetch:Uo,components:sS,directives:sS,watch:fwe,provide:NY,inject:dwe};function NY(n,e){return e?n?function(){return Tr(bi(n)?n.call(this,this):n,bi(e)?e.call(this,this):e)}:e:n}function dwe(n,e){return sS(K6(n),K6(e))}function K6(n){if(Jt(n)){const e={};for(let t=0;t<n.length;t++)e[n[t]]=n[t];return e}return n}function Uo(n,e){return n?[...new Set([].concat(n,e))]:e}function sS(n,e){return n?Tr(Object.create(null),n,e):e}function AY(n,e){return n?Jt(n)&&Jt(e)?[...new Set([...n,...e])]:Tr(Object.create(null),IY(n),IY(e??{})):e}function fwe(n,e){if(!n)return e;if(!e)return n;const t=Tr(Object.create(null),n);for(const i in e)t[i]=Uo(n[i],e[i]);return t}function tae(){return{app:null,config:{isNativeTag:$ye,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let gwe=0;function pwe(n,e){return function(i,s=null){bi(i)||(i=Tr({},i)),s!=null&&!as(s)&&(s=null);const r=tae(),o=new WeakSet;let a=!1;const l=r.app={_uid:gwe++,_component:i,_props:s,_container:null,_context:r,_instance:null,version:LT,get config(){return r.config},set config(c){},use(c,...u){return o.has(c)||(c&&bi(c.install)?(o.add(c),c.install(l,...u)):bi(c)&&(o.add(c),c(l,...u))),l},mixin(c){return r.mixins.includes(c)||r.mixins.push(c),l},component(c,u){return u?(r.components[c]=u,l):r.components[c]},directive(c,u){return u?(r.directives[c]=u,l):r.directives[c]},mount(c,u,h){if(!a){const d=At(i,s);return d.appContext=r,u&&e?e(d,c):n(d,c,h),a=!0,l._container=c,c.__vue_app__=l,XR(d.component)||d.component.proxy}},unmount(){a&&(n(null,l._container),delete l._container.__vue_app__)},provide(c,u){return r.provides[c]=u,l},runWithContext(c){WN=l;try{return c()}finally{WN=null}}};return l}}let WN=null;function ic(n,e){if(Hr){let t=Hr.provides;const i=Hr.parent&&Hr.parent.provides;i===t&&(t=Hr.provides=Object.create(i)),t[n]=e}}function $r(n,e,t=!1){const i=Hr||no;if(i||WN){const s=i?i.parent==null?i.vnode.appContext&&i.vnode.appContext.provides:i.parent.provides:WN._context.provides;if(s&&n in s)return s[n];if(arguments.length>1)return t&&bi(e)?e.call(i&&i.proxy):e}}function mwe(n,e,t,i=!1){const s={},r={};RN(r,ZR,1),n.propsDefaults=Object.create(null),iae(n,e,s,r);for(const o in n.propsOptions[0])o in s||(s[o]=void 0);t?n.props=i?s:kCe(s):n.type.props?n.props=s:n.props=r,n.attrs=r}function _we(n,e,t,i){const{props:s,attrs:r,vnode:{patchFlag:o}}=n,a=tn(s),[l]=n.propsOptions;let c=!1;if((i||o>0)&&!(o&16)){if(o&8){const u=n.vnode.dynamicProps;for(let h=0;h<u.length;h++){let d=u[h];if(zR(n.emitsOptions,d))continue;const f=e[d];if(l)if(Qi(r,d))f!==r[d]&&(r[d]=f,c=!0);else{const g=ad(d);s[g]=G6(l,a,g,f,n,!1)}else f!==r[d]&&(r[d]=f,c=!0)}}}else{iae(n,e,s,r)&&(c=!0);let u;for(const h in a)(!e||!Qi(e,h)&&((u=hv(h))===h||!Qi(e,u)))&&(l?t&&(t[h]!==void 0||t[u]!==void 0)&&(s[h]=G6(l,a,h,void 0,n,!0)):delete s[h]);if(r!==a)for(const h in r)(!e||!Qi(e,h))&&(delete r[h],c=!0)}c&&Df(n,"set","$attrs")}function iae(n,e,t,i){const[s,r]=n.propsOptions;let o=!1,a;if(e)for(let l in e){if(wT(l))continue;const c=e[l];let u;s&&Qi(s,u=ad(l))?!r||!r.includes(u)?t[u]=c:(a||(a={}))[u]=c:zR(n.emitsOptions,l)||(!(l in i)||c!==i[l])&&(i[l]=c,o=!0)}if(r){const l=tn(t),c=a||fs;for(let u=0;u<r.length;u++){const h=r[u];t[h]=G6(s,l,h,c[h],n,!Qi(c,h))}}return o}function G6(n,e,t,i,s,r){const o=n[t];if(o!=null){const a=Qi(o,"default");if(a&&i===void 0){const l=o.default;if(o.type!==Function&&!o.skipFactory&&bi(l)){const{propsDefaults:c}=s;t in c?i=c[t]:(qb(s),i=c[t]=l.call(null,e),Y1())}else i=l}o[0]&&(r&&!a?i=!1:o[1]&&(i===""||i===hv(t))&&(i=!0))}return i}function nae(n,e,t=!1){const i=e.propsCache,s=i.get(n);if(s)return s;const r=n.props,o={},a=[];let l=!1;if(!bi(n)){const u=h=>{l=!0;const[d,f]=nae(h,e,!0);Tr(o,d),f&&a.push(...f)};!t&&e.mixins.length&&e.mixins.forEach(u),n.extends&&u(n.extends),n.mixins&&n.mixins.forEach(u)}if(!r&&!l)return as(n)&&i.set(n,rb),rb;if(Jt(r))for(let u=0;u<r.length;u++){const h=ad(r[u]);PY(h)&&(o[h]=fs)}else if(r)for(const u in r){const h=ad(u);if(PY(h)){const d=r[u],f=o[h]=Jt(d)||bi(d)?{type:d}:Tr({},d);if(f){const g=OY(Boolean,f.type),p=OY(String,f.type);f[0]=g>-1,f[1]=p<0||g<p,(g>-1||Qi(f,"default"))&&a.push(h)}}}const c=[o,a];return as(n)&&i.set(n,c),c}function PY(n){return n[0]!=="$"}function RY(n){const e=n&&n.toString().match(/^\s*(function|class) (\w+)/);return e?e[2]:n===null?"null":""}function MY(n,e){return RY(n)===RY(e)}function OY(n,e){return Jt(e)?e.findIndex(t=>MY(t,n)):bi(e)&&MY(e,n)?0:-1}const sae=n=>n[0]==="_"||n==="$stable",D$=n=>Jt(n)?n.map(lh):[lh(n)],vwe=(n,e,t)=>{if(e._n)return e;const i=xh((...s)=>D$(e(...s)),t);return i._c=!1,i},rae=(n,e,t)=>{const i=n._ctx;for(const s in n){if(sae(s))continue;const r=n[s];if(bi(r))e[s]=vwe(s,r,i);else if(r!=null){const o=D$(r);e[s]=()=>o}}},oae=(n,e)=>{const t=D$(e);n.slots.default=()=>t},bwe=(n,e)=>{if(n.vnode.shapeFlag&32){const t=e._;t?(n.slots=tn(e),RN(e,"_",t)):rae(e,n.slots={})}else n.slots={},e&&oae(n,e);RN(n.slots,ZR,1)},ywe=(n,e,t)=>{const{vnode:i,slots:s}=n;let r=!0,o=fs;if(i.shapeFlag&32){const a=e._;a?t&&a===1?r=!1:(Tr(s,e),!t&&a===1&&delete s._):(r=!e.$stable,rae(e,s)),o=e}else e&&(oae(n,e),o={default:1});if(r)for(const a in s)!sae(a)&&o[a]==null&&delete s[a]};function Y6(n,e,t,i,s=!1){if(Jt(n)){n.forEach((d,f)=>Y6(d,e&&(Jt(e)?e[f]:e),t,i,s));return}if(PS(i)&&!s)return;const r=i.shapeFlag&4?XR(i.component)||i.component.proxy:i.el,o=s?null:r,{i:a,r:l}=n,c=e&&e.r,u=a.refs===fs?a.refs={}:a.refs,h=a.setupState;if(c!=null&&c!==l&&(nr(c)?(u[c]=null,Qi(h,c)&&(h[c]=null)):$s(c)&&(c.value=null)),bi(l))fp(l,a,12,[o,u]);else{const d=nr(l),f=$s(l);if(d||f){const g=()=>{if(n.f){const p=d?Qi(h,l)?h[l]:u[l]:l.value;s?Jt(p)&&f$(p,r):Jt(p)?p.includes(r)||p.push(r):d?(u[l]=[r],Qi(h,l)&&(h[l]=u[l])):(l.value=[r],n.k&&(u[n.k]=l.value))}else d?(u[l]=o,Qi(h,l)&&(h[l]=o)):f&&(l.value=o,n.k&&(u[n.k]=o))};o?(g.id=-1,xa(g,t)):g()}}}const xa=GCe;function Cwe(n){return wwe(n)}function wwe(n,e){const t=F6();t.__VUE__=!0;const{insert:i,remove:s,patchProp:r,createElement:o,createText:a,createComment:l,setText:c,setElementText:u,parentNode:h,nextSibling:d,setScopeId:f=zh,insertStaticContent:g}=n,p=(H,te,ce,ve=null,Ee=null,De=null,Fe=!1,Oe=null,oe=!!te.dynamicChildren)=>{if(H===te)return;H&&!p1(H,te)&&(ve=J(H),W(H,Ee,De,!0),H=null),te.patchFlag===-2&&(oe=!1,te.dynamicChildren=null);const{type:ee,ref:ae,shapeFlag:O}=te;switch(ee){case YR:m(H,te,ce,ve);break;case pc:_(H,te,ce,ve);break;case b4:H==null&&b(te,ce,ve,Fe);break;case Es:T(H,te,ce,ve,Ee,De,Fe,Oe,oe);break;default:O&1?S(H,te,ce,ve,Ee,De,Fe,Oe,oe):O&6?P(H,te,ce,ve,Ee,De,Fe,Oe,oe):(O&64||O&128)&&ee.process(H,te,ce,ve,Ee,De,Fe,Oe,oe,fe)}ae!=null&&Ee&&Y6(ae,H&&H.ref,De,te||H,!te)},m=(H,te,ce,ve)=>{if(H==null)i(te.el=a(te.children),ce,ve);else{const Ee=te.el=H.el;te.children!==H.children&&c(Ee,te.children)}},_=(H,te,ce,ve)=>{H==null?i(te.el=l(te.children||""),ce,ve):te.el=H.el},b=(H,te,ce,ve)=>{[H.el,H.anchor]=g(H.children,te,ce,ve,H.el,H.anchor)},y=({el:H,anchor:te},ce,ve)=>{let Ee;for(;H&&H!==te;)Ee=d(H),i(H,ce,ve),H=Ee;i(te,ce,ve)},w=({el:H,anchor:te})=>{let ce;for(;H&&H!==te;)ce=d(H),s(H),H=ce;s(te)},S=(H,te,ce,ve,Ee,De,Fe,Oe,oe)=>{Fe=Fe||te.type==="svg",H==null?E(te,ce,ve,Ee,De,Fe,Oe,oe):x(H,te,Ee,De,Fe,Oe,oe)},E=(H,te,ce,ve,Ee,De,Fe,Oe)=>{let oe,ee;const{type:ae,props:O,shapeFlag:V,transition:ne,dirs:ie}=H;if(oe=H.el=o(H.type,De,O&&O.is,O),V&8?u(oe,H.children):V&16&&k(H.children,oe,null,ve,Ee,De&&ae!=="foreignObject",Fe,Oe),ie&&$m(H,null,ve,"created"),L(oe,H,H.scopeId,Fe,ve),O){for(const Ie in O)Ie!=="value"&&!wT(Ie)&&r(oe,Ie,null,O[Ie],De,H.children,ve,Ee,le);"value"in O&&r(oe,"value",null,O.value),(ee=O.onVnodeBeforeMount)&&Yu(ee,ve,H)}ie&&$m(H,null,ve,"beforeMount");const we=Swe(Ee,ne);we&&ne.beforeEnter(oe),i(oe,te,ce),((ee=O&&O.onVnodeMounted)||we||ie)&&xa(()=>{ee&&Yu(ee,ve,H),we&&ne.enter(oe),ie&&$m(H,null,ve,"mounted")},Ee)},L=(H,te,ce,ve,Ee)=>{if(ce&&f(H,ce),ve)for(let De=0;De<ve.length;De++)f(H,ve[De]);if(Ee){let De=Ee.subTree;if(te===De){const Fe=Ee.vnode;L(H,Fe,Fe.scopeId,Fe.slotScopeIds,Ee.parent)}}},k=(H,te,ce,ve,Ee,De,Fe,Oe,oe=0)=>{for(let ee=oe;ee<H.length;ee++){const ae=H[ee]=Oe?Hg(H[ee]):lh(H[ee]);p(null,ae,te,ce,ve,Ee,De,Fe,Oe)}},x=(H,te,ce,ve,Ee,De,Fe)=>{const Oe=te.el=H.el;let{patchFlag:oe,dynamicChildren:ee,dirs:ae}=te;oe|=H.patchFlag&16;const O=H.props||fs,V=te.props||fs;let ne;ce&&zm(ce,!1),(ne=V.onVnodeBeforeUpdate)&&Yu(ne,ce,te,H),ae&&$m(te,H,ce,"beforeUpdate"),ce&&zm(ce,!0);const ie=Ee&&te.type!=="foreignObject";if(ee?I(H.dynamicChildren,ee,Oe,ce,ve,ie,De):Fe||Z(H,te,Oe,null,ce,ve,ie,De,!1),oe>0){if(oe&16)N(Oe,te,O,V,ce,ve,Ee);else if(oe&2&&O.class!==V.class&&r(Oe,"class",null,V.class,Ee),oe&4&&r(Oe,"style",O.style,V.style,Ee),oe&8){const we=te.dynamicProps;for(let Ie=0;Ie<we.length;Ie++){const je=we[Ie],Ye=O[je],rt=V[je];(rt!==Ye||je==="value")&&r(Oe,je,Ye,rt,Ee,H.children,ce,ve,le)}}oe&1&&H.children!==te.children&&u(Oe,te.children)}else!Fe&&ee==null&&N(Oe,te,O,V,ce,ve,Ee);((ne=V.onVnodeUpdated)||ae)&&xa(()=>{ne&&Yu(ne,ce,te,H),ae&&$m(te,H,ce,"updated")},ve)},I=(H,te,ce,ve,Ee,De,Fe)=>{for(let Oe=0;Oe<te.length;Oe++){const oe=H[Oe],ee=te[Oe],ae=oe.el&&(oe.type===Es||!p1(oe,ee)||oe.shapeFlag&70)?h(oe.el):ce;p(oe,ee,ae,null,ve,Ee,De,Fe,!0)}},N=(H,te,ce,ve,Ee,De,Fe)=>{if(ce!==ve){if(ce!==fs)for(const Oe in ce)!wT(Oe)&&!(Oe in ve)&&r(H,Oe,ce[Oe],null,Fe,te.children,Ee,De,le);for(const Oe in ve){if(wT(Oe))continue;const oe=ve[Oe],ee=ce[Oe];oe!==ee&&Oe!=="value"&&r(H,Oe,ee,oe,Fe,te.children,Ee,De,le)}"value"in ve&&r(H,"value",ce.value,ve.value)}},T=(H,te,ce,ve,Ee,De,Fe,Oe,oe)=>{const ee=te.el=H?H.el:a(""),ae=te.anchor=H?H.anchor:a("");let{patchFlag:O,dynamicChildren:V,slotScopeIds:ne}=te;ne&&(Oe=Oe?Oe.concat(ne):ne),H==null?(i(ee,ce,ve),i(ae,ce,ve),k(te.children,ce,ae,Ee,De,Fe,Oe,oe)):O>0&&O&64&&V&&H.dynamicChildren?(I(H.dynamicChildren,V,ce,Ee,De,Fe,Oe),(te.key!=null||Ee&&te===Ee.subTree)&&I$(H,te,!0)):Z(H,te,ce,ae,Ee,De,Fe,Oe,oe)},P=(H,te,ce,ve,Ee,De,Fe,Oe,oe)=>{te.slotScopeIds=Oe,H==null?te.shapeFlag&512?Ee.ctx.activate(te,ce,ve,Fe,oe):R(te,ce,ve,Ee,De,Fe,oe):F(H,te,oe)},R=(H,te,ce,ve,Ee,De,Fe)=>{const Oe=H.component=Rwe(H,ve,Ee);if(jR(H)&&(Oe.ctx.renderer=fe),Mwe(Oe),Oe.asyncDep){if(Ee&&Ee.registerDep(Oe,j),!H.el){const oe=Oe.subTree=At(pc);_(null,oe,te,ce)}return}j(Oe,H,te,ce,Ee,De,Fe)},F=(H,te,ce)=>{const ve=te.component=H.component;if($Ce(H,te,ce))if(ve.asyncDep&&!ve.asyncResolved){K(ve,te,ce);return}else ve.next=te,OCe(ve.update),ve.update();else te.el=H.el,ve.vnode=te},j=(H,te,ce,ve,Ee,De,Fe)=>{const Oe=()=>{if(H.isMounted){let{next:ae,bu:O,u:V,parent:ne,vnode:ie}=H,we=ae,Ie;zm(H,!1),ae?(ae.el=ie.el,K(H,ae,Fe)):ae=ie,O&&ST(O),(Ie=ae.props&&ae.props.onVnodeBeforeUpdate)&&Yu(Ie,ne,ae,ie),zm(H,!0);const je=m4(H),Ye=H.subTree;H.subTree=je,p(Ye,je,h(Ye.el),J(Ye),H,Ee,De),ae.el=je.el,we===null&&zCe(H,je.el),V&&xa(V,Ee),(Ie=ae.props&&ae.props.onVnodeUpdated)&&xa(()=>Yu(Ie,ne,ae,ie),Ee)}else{let ae;const{el:O,props:V}=te,{bm:ne,m:ie,parent:we}=H,Ie=PS(te);if(zm(H,!1),ne&&ST(ne),!Ie&&(ae=V&&V.onVnodeBeforeMount)&&Yu(ae,we,te),zm(H,!0),O&&se){const je=()=>{H.subTree=m4(H),se(O,H.subTree,H,Ee,null)};Ie?te.type.__asyncLoader().then(()=>!H.isUnmounted&&je()):je()}else{const je=H.subTree=m4(H);p(null,je,ce,ve,H,Ee,De),te.el=je.el}if(ie&&xa(ie,Ee),!Ie&&(ae=V&&V.onVnodeMounted)){const je=te;xa(()=>Yu(ae,we,je),Ee)}(te.shapeFlag&256||we&&PS(we.vnode)&&we.vnode.shapeFlag&256)&&H.a&&xa(H.a,Ee),H.isMounted=!0,te=ce=ve=null}},oe=H.effect=new m$(Oe,()=>k$(ee),H.scope),ee=H.update=()=>oe.run();ee.id=H.uid,zm(H,!0),ee()},K=(H,te,ce)=>{te.component=H;const ve=H.vnode.props;H.vnode=te,H.next=null,_we(H,te.props,ve,ce),ywe(H,te.children,ce),iC(),LY(H),nC()},Z=(H,te,ce,ve,Ee,De,Fe,Oe,oe=!1)=>{const ee=H&&H.children,ae=H?H.shapeFlag:0,O=te.children,{patchFlag:V,shapeFlag:ne}=te;if(V>0){if(V&128){re(ee,O,ce,ve,Ee,De,Fe,Oe,oe);return}else if(V&256){q(ee,O,ce,ve,Ee,De,Fe,Oe,oe);return}}ne&8?(ae&16&&le(ee,Ee,De),O!==ee&&u(ce,O)):ae&16?ne&16?re(ee,O,ce,ve,Ee,De,Fe,Oe,oe):le(ee,Ee,De,!0):(ae&8&&u(ce,""),ne&16&&k(O,ce,ve,Ee,De,Fe,Oe,oe))},q=(H,te,ce,ve,Ee,De,Fe,Oe,oe)=>{H=H||rb,te=te||rb;const ee=H.length,ae=te.length,O=Math.min(ee,ae);let V;for(V=0;V<O;V++){const ne=te[V]=oe?Hg(te[V]):lh(te[V]);p(H[V],ne,ce,null,Ee,De,Fe,Oe,oe)}ee>ae?le(H,Ee,De,!0,!1,O):k(te,ce,ve,Ee,De,Fe,Oe,oe,O)},re=(H,te,ce,ve,Ee,De,Fe,Oe,oe)=>{let ee=0;const ae=te.length;let O=H.length-1,V=ae-1;for(;ee<=O&&ee<=V;){const ne=H[ee],ie=te[ee]=oe?Hg(te[ee]):lh(te[ee]);if(p1(ne,ie))p(ne,ie,ce,null,Ee,De,Fe,Oe,oe);else break;ee++}for(;ee<=O&&ee<=V;){const ne=H[O],ie=te[V]=oe?Hg(te[V]):lh(te[V]);if(p1(ne,ie))p(ne,ie,ce,null,Ee,De,Fe,Oe,oe);else break;O--,V--}if(ee>O){if(ee<=V){const ne=V+1,ie=ne<ae?te[ne].el:ve;for(;ee<=V;)p(null,te[ee]=oe?Hg(te[ee]):lh(te[ee]),ce,ie,Ee,De,Fe,Oe,oe),ee++}}else if(ee>V)for(;ee<=O;)W(H[ee],Ee,De,!0),ee++;else{const ne=ee,ie=ee,we=new Map;for(ee=ie;ee<=V;ee++){const et=te[ee]=oe?Hg(te[ee]):lh(te[ee]);et.key!=null&&we.set(et.key,ee)}let Ie,je=0;const Ye=V-ie+1;let rt=!1,gt=0;const ei=new Array(Ye);for(ee=0;ee<Ye;ee++)ei[ee]=0;for(ee=ne;ee<=O;ee++){const et=H[ee];if(je>=Ye){W(et,Ee,De,!0);continue}let mi;if(et.key!=null)mi=we.get(et.key);else for(Ie=ie;Ie<=V;Ie++)if(ei[Ie-ie]===0&&p1(et,te[Ie])){mi=Ie;break}mi===void 0?W(et,Ee,De,!0):(ei[mi-ie]=ee+1,mi>=gt?gt=mi:rt=!0,p(et,te[mi],ce,null,Ee,De,Fe,Oe,oe),je++)}const ii=rt?kwe(ei):rb;for(Ie=ii.length-1,ee=Ye-1;ee>=0;ee--){const et=ie+ee,mi=te[et],Wi=et+1<ae?te[et+1].el:ve;ei[ee]===0?p(null,mi,ce,Wi,Ee,De,Fe,Oe,oe):rt&&(Ie<0||ee!==ii[Ie]?G(mi,ce,Wi,2):Ie--)}}},G=(H,te,ce,ve,Ee=null)=>{const{el:De,type:Fe,transition:Oe,children:oe,shapeFlag:ee}=H;if(ee&6){G(H.component.subTree,te,ce,ve);return}if(ee&128){H.suspense.move(te,ce,ve);return}if(ee&64){Fe.move(H,te,ce,fe);return}if(Fe===Es){i(De,te,ce);for(let O=0;O<oe.length;O++)G(oe[O],te,ce,ve);i(H.anchor,te,ce);return}if(Fe===b4){y(H,te,ce);return}if(ve!==2&&ee&1&&Oe)if(ve===0)Oe.beforeEnter(De),i(De,te,ce),xa(()=>Oe.enter(De),Ee);else{const{leave:O,delayLeave:V,afterLeave:ne}=Oe,ie=()=>i(De,te,ce),we=()=>{O(De,()=>{ie(),ne&&ne()})};V?V(De,ie,we):we()}else i(De,te,ce)},W=(H,te,ce,ve=!1,Ee=!1)=>{const{type:De,props:Fe,ref:Oe,children:oe,dynamicChildren:ee,shapeFlag:ae,patchFlag:O,dirs:V}=H;if(Oe!=null&&Y6(Oe,null,ce,H,!0),ae&256){te.ctx.deactivate(H);return}const ne=ae&1&&V,ie=!PS(H);let we;if(ie&&(we=Fe&&Fe.onVnodeBeforeUnmount)&&Yu(we,te,H),ae&6)z(H.component,ce,ve);else{if(ae&128){H.suspense.unmount(ce,ve);return}ne&&$m(H,null,te,"beforeUnmount"),ae&64?H.type.remove(H,te,ce,Ee,fe,ve):ee&&(De!==Es||O>0&&O&64)?le(ee,te,ce,!1,!0):(De===Es&&O&384||!Ee&&ae&16)&&le(oe,te,ce),ve&&Y(H)}(ie&&(we=Fe&&Fe.onVnodeUnmounted)||ne)&&xa(()=>{we&&Yu(we,te,H),ne&&$m(H,null,te,"unmounted")},ce)},Y=H=>{const{type:te,el:ce,anchor:ve,transition:Ee}=H;if(te===Es){X(ce,ve);return}if(te===b4){w(H);return}const De=()=>{s(ce),Ee&&!Ee.persisted&&Ee.afterLeave&&Ee.afterLeave()};if(H.shapeFlag&1&&Ee&&!Ee.persisted){const{leave:Fe,delayLeave:Oe}=Ee,oe=()=>Fe(ce,De);Oe?Oe(H.el,De,oe):oe()}else De()},X=(H,te)=>{let ce;for(;H!==te;)ce=d(H),s(H),H=ce;s(te)},z=(H,te,ce)=>{const{bum:ve,scope:Ee,update:De,subTree:Fe,um:Oe}=H;ve&&ST(ve),Ee.stop(),De&&(De.active=!1,W(Fe,H,te,ce)),Oe&&xa(Oe,te),xa(()=>{H.isUnmounted=!0},te),te&&te.pendingBranch&&!te.isUnmounted&&H.asyncDep&&!H.asyncResolved&&H.suspenseId===te.pendingId&&(te.deps--,te.deps===0&&te.resolve())},le=(H,te,ce,ve=!1,Ee=!1,De=0)=>{for(let Fe=De;Fe<H.length;Fe++)W(H[Fe],te,ce,ve,Ee)},J=H=>H.shapeFlag&6?J(H.component.subTree):H.shapeFlag&128?H.suspense.next():d(H.anchor||H.el),be=(H,te,ce)=>{H==null?te._vnode&&W(te._vnode,null,null,!0):p(te._vnode||null,H,te,null,null,null,ce),LY(),$oe(),te._vnode=H},fe={p,um:W,m:G,r:Y,mt:R,mc:k,pc:Z,pbc:I,n:J,o:n};let ge,se;return e&&([ge,se]=e(fe)),{render:be,hydrate:ge,createApp:pwe(be,ge)}}function zm({effect:n,update:e},t){n.allowRecurse=e.allowRecurse=t}function Swe(n,e){return(!n||n&&!n.pendingBranch)&&e&&!e.persisted}function I$(n,e,t=!1){const i=n.children,s=e.children;if(Jt(i)&&Jt(s))for(let r=0;r<i.length;r++){const o=i[r];let a=s[r];a.shapeFlag&1&&!a.dynamicChildren&&((a.patchFlag<=0||a.patchFlag===32)&&(a=s[r]=Hg(s[r]),a.el=o.el),t||I$(o,a)),a.type===YR&&(a.el=o.el)}}function kwe(n){const e=n.slice(),t=[0];let i,s,r,o,a;const l=n.length;for(i=0;i<l;i++){const c=n[i];if(c!==0){if(s=t[t.length-1],n[s]<c){e[i]=s,t.push(i);continue}for(r=0,o=t.length-1;r<o;)a=r+o>>1,n[t[a]]<c?r=a+1:o=a;c<n[t[r]]&&(r>0&&(e[i]=t[r-1]),t[r]=i)}}for(r=t.length,o=t[r-1];r-- >0;)t[r]=o,o=e[o];return t}const Lwe=n=>n.__isTeleport,MS=n=>n&&(n.disabled||n.disabled===""),FY=n=>typeof SVGElement<"u"&&n instanceof SVGElement,Z6=(n,e)=>{const t=n&&n.to;return nr(t)?e?e(t):null:t},xwe={name:"Teleport",__isTeleport:!0,process(n,e,t,i,s,r,o,a,l,c){const{mc:u,pc:h,pbc:d,o:{insert:f,querySelector:g,createText:p,createComment:m}}=c,_=MS(e.props);let{shapeFlag:b,children:y,dynamicChildren:w}=e;if(n==null){const S=e.el=p(""),E=e.anchor=p("");f(S,t,i),f(E,t,i);const L=e.target=Z6(e.props,g),k=e.targetAnchor=p("");L&&(f(k,L),o=o||FY(L));const x=(I,N)=>{b&16&&u(y,I,N,s,r,o,a,l)};_?x(t,E):L&&x(L,k)}else{e.el=n.el;const S=e.anchor=n.anchor,E=e.target=n.target,L=e.targetAnchor=n.targetAnchor,k=MS(n.props),x=k?t:E,I=k?S:L;if(o=o||FY(E),w?(d(n.dynamicChildren,w,x,s,r,o,a),I$(n,e,!0)):l||h(n,e,x,I,s,r,o,a,!1),_)k?e.props&&n.props&&e.props.to!==n.props.to&&(e.props.to=n.props.to):yD(e,t,S,c,1);else if((e.props&&e.props.to)!==(n.props&&n.props.to)){const N=e.target=Z6(e.props,g);N&&yD(e,N,null,c,0)}else k&&yD(e,E,L,c,1)}aae(e)},remove(n,e,t,i,{um:s,o:{remove:r}},o){const{shapeFlag:a,children:l,anchor:c,targetAnchor:u,target:h,props:d}=n;if(h&&r(u),o&&r(c),a&16){const f=o||!MS(d);for(let g=0;g<l.length;g++){const p=l[g];s(p,e,t,f,!!p.dynamicChildren)}}},move:yD,hydrate:Ewe};function yD(n,e,t,{o:{insert:i},m:s},r=2){r===0&&i(n.targetAnchor,e,t);const{el:o,anchor:a,shapeFlag:l,children:c,props:u}=n,h=r===2;if(h&&i(o,e,t),(!h||MS(u))&&l&16)for(let d=0;d<c.length;d++)s(c[d],e,t,2);h&&i(a,e,t)}function Ewe(n,e,t,i,s,r,{o:{nextSibling:o,parentNode:a,querySelector:l}},c){const u=e.target=Z6(e.props,l);if(u){const h=u._lpa||u.firstChild;if(e.shapeFlag&16)if(MS(e.props))e.anchor=c(o(n),e,a(n),t,i,s,r),e.targetAnchor=h;else{e.anchor=o(n);let d=h;for(;d;)if(d=o(d),d&&d.nodeType===8&&d.data==="teleport anchor"){e.targetAnchor=d,u._lpa=e.targetAnchor&&o(e.targetAnchor);break}c(h,e,u,t,i,s,r)}aae(e)}return e.anchor&&o(e.anchor)}const Dwe=xwe;function aae(n){const e=n.ctx;if(e&&e.ut){let t=n.children[0].el;for(;t&&t!==n.targetAnchor;)t.nodeType===1&&t.setAttribute("data-v-owner",e.uid),t=t.nextSibling;e.ut()}}const Es=Symbol.for("v-fgt"),YR=Symbol.for("v-txt"),pc=Symbol.for("v-cmt"),b4=Symbol.for("v-stc"),OS=[];let du=null;function vi(n=!1){OS.push(du=n?null:[])}function Iwe(){OS.pop(),du=OS[OS.length-1]||null}let Rk=1;function BY(n){Rk+=n}function lae(n){return n.dynamicChildren=Rk>0?du||rb:null,Iwe(),Rk>0&&du&&du.push(n),n}function Mi(n,e,t,i,s,r){return lae(hi(n,e,t,i,s,r,!0))}function dv(n,e,t,i,s){return lae(At(n,e,t,i,s,!0))}function VN(n){return n?n.__v_isVNode===!0:!1}function p1(n,e){return n.type===e.type&&n.key===e.key}const ZR="__vInternal",cae=({key:n})=>n??null,kT=({ref:n,ref_key:e,ref_for:t})=>(typeof n=="number"&&(n=""+n),n!=null?nr(n)||$s(n)||bi(n)?{i:no,r:n,k:e,f:!!t}:n:null);function hi(n,e=null,t=null,i=0,s=null,r=n===Es?0:1,o=!1,a=!1){const l={__v_isVNode:!0,__v_skip:!0,type:n,props:e,key:e&&cae(e),ref:e&&kT(e),scopeId:UR,slotScopeIds:null,children:t,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:r,patchFlag:i,dynamicProps:s,dynamicChildren:null,appContext:null,ctx:no};return a?(T$(l,t),r&128&&n.normalize(l)):t&&(l.shapeFlag|=nr(t)?8:16),Rk>0&&!o&&du&&(l.patchFlag>0||r&6)&&l.patchFlag!==32&&du.push(l),l}const At=Twe;function Twe(n,e=null,t=null,i=0,s=null,r=!1){if((!n||n===jCe)&&(n=pc),VN(n)){const a=Bp(n,e,!0);return t&&T$(a,t),Rk>0&&!r&&du&&(a.shapeFlag&6?du[du.indexOf(n)]=a:du.push(a)),a.patchFlag|=-2,a}if(Vwe(n)&&(n=n.__vccOpts),e){e=Nwe(e);let{class:a,style:l}=e;a&&!nr(a)&&(e.class=sc(a)),as(l)&&(Ooe(l)&&!Jt(l)&&(l=Tr({},l)),e.style=$b(l))}const o=nr(n)?1:KCe(n)?128:Lwe(n)?64:as(n)?4:bi(n)?2:0;return hi(n,e,t,i,s,o,r,!0)}function Nwe(n){return n?Ooe(n)||ZR in n?Tr({},n):n:null}function Bp(n,e,t=!1){const{props:i,ref:s,patchFlag:r,children:o}=n,a=e?jb(i||{},e):i;return{__v_isVNode:!0,__v_skip:!0,type:n.type,props:a,key:a&&cae(a),ref:e&&e.ref?t&&s?Jt(s)?s.concat(kT(e)):[s,kT(e)]:kT(e):s,scopeId:n.scopeId,slotScopeIds:n.slotScopeIds,children:o,target:n.target,targetAnchor:n.targetAnchor,staticCount:n.staticCount,shapeFlag:n.shapeFlag,patchFlag:e&&n.type!==Es?r===-1?16:r|16:r,dynamicProps:n.dynamicProps,dynamicChildren:n.dynamicChildren,appContext:n.appContext,dirs:n.dirs,transition:n.transition,component:n.component,suspense:n.suspense,ssContent:n.ssContent&&Bp(n.ssContent),ssFallback:n.ssFallback&&Bp(n.ssFallback),el:n.el,anchor:n.anchor,ctx:n.ctx,ce:n.ce}}function uae(n=" ",e=0){return At(YR,null,n,e)}function rc(n="",e=!1){return e?(vi(),dv(pc,null,n)):At(pc,null,n)}function lh(n){return n==null||typeof n=="boolean"?At(pc):Jt(n)?At(Es,null,n.slice()):typeof n=="object"?Hg(n):At(YR,null,String(n))}function Hg(n){return n.el===null&&n.patchFlag!==-1||n.memo?n:Bp(n)}function T$(n,e){let t=0;const{shapeFlag:i}=n;if(e==null)e=null;else if(Jt(e))t=16;else if(typeof e=="object")if(i&65){const s=e.default;s&&(s._c&&(s._d=!1),T$(n,s()),s._c&&(s._d=!0));return}else{t=32;const s=e._;!s&&!(ZR in e)?e._ctx=no:s===3&&no&&(no.slots._===1?e._=1:(e._=2,n.patchFlag|=1024))}else bi(e)?(e={default:e,_ctx:no},t=32):(e=String(e),i&64?(t=16,e=[uae(e)]):t=8);n.children=e,n.shapeFlag|=t}function jb(...n){const e={};for(let t=0;t<n.length;t++){const i=n[t];for(const s in i)if(s==="class")e.class!==i.class&&(e.class=sc([e.class,i.class]));else if(s==="style")e.style=$b([e.style,i.style]);else if(FR(s)){const r=e[s],o=i[s];o&&r!==o&&!(Jt(r)&&r.includes(o))&&(e[s]=r?[].concat(r,o):o)}else s!==""&&(e[s]=i[s])}return e}function Yu(n,e,t,i=null){gc(n,e,7,[t,i])}const Awe=tae();let Pwe=0;function Rwe(n,e,t){const i=n.type,s=(e?e.appContext:n.appContext)||Awe,r={uid:Pwe++,vnode:n,type:i,parent:e,appContext:s,root:null,next:null,subTree:null,effect:null,update:null,scope:new eCe(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:e?e.provides:Object.create(s.provides),accessCache:null,renderCache:[],components:null,directives:null,propsOptions:nae(i,s),emitsOptions:Uoe(i,s),emit:null,emitted:null,propsDefaults:fs,inheritAttrs:i.inheritAttrs,ctx:fs,data:fs,props:fs,attrs:fs,slots:fs,refs:fs,setupState:fs,setupContext:null,attrsProxy:null,slotsProxy:null,suspense:t,suspenseId:t?t.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,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};return r.ctx={_:r},r.root=e?e.root:r,r.emit=WCe.bind(null,r),n.ce&&n.ce(r),r}let Hr=null;const fv=()=>Hr||no;let N$,qv,WY="__VUE_INSTANCE_SETTERS__";(qv=F6()[WY])||(qv=F6()[WY]=[]),qv.push(n=>Hr=n),N$=n=>{qv.length>1?qv.forEach(e=>e(n)):qv[0](n)};const qb=n=>{N$(n),n.scope.on()},Y1=()=>{Hr&&Hr.scope.off(),N$(null)};function hae(n){return n.vnode.shapeFlag&4}let Mk=!1;function Mwe(n,e=!1){Mk=e;const{props:t,children:i}=n.vnode,s=hae(n);mwe(n,t,s,e),bwe(n,i);const r=s?Owe(n,e):void 0;return Mk=!1,r}function Owe(n,e){const t=n.type;n.accessCache=Object.create(null),n.proxy=Foe(new Proxy(n.ctx,awe));const{setup:i}=t;if(i){const s=n.setupContext=i.length>1?Bwe(n):null;qb(n),iC();const r=fp(i,n,0,[n.props,s]);if(nC(),Y1(),yoe(r)){if(r.then(Y1,Y1),e)return r.then(o=>{VY(n,o,e)}).catch(o=>{$R(o,n,0)});n.asyncDep=r}else VY(n,r,e)}else dae(n,e)}function VY(n,e,t){bi(e)?n.type.__ssrInlineRender?n.ssrRender=e:n.render=e:as(e)&&(n.setupState=Woe(e)),dae(n,t)}let HY;function dae(n,e,t){const i=n.type;if(!n.render){if(!e&&HY&&!i.render){const s=i.template||E$(n).template;if(s){const{isCustomElement:r,compilerOptions:o}=n.appContext.config,{delimiters:a,compilerOptions:l}=i,c=Tr(Tr({isCustomElement:r,delimiters:a},o),l);i.render=HY(s,c)}}n.render=i.render||zh}{qb(n),iC();try{cwe(n)}finally{nC(),Y1()}}}function Fwe(n){return n.attrsProxy||(n.attrsProxy=new Proxy(n.attrs,{get(e,t){return Xa(n,"get","$attrs"),e[t]}}))}function Bwe(n){const e=t=>{n.exposed=t||{}};return{get attrs(){return Fwe(n)},slots:n.slots,emit:n.emit,expose:e}}function XR(n){if(n.exposed)return n.exposeProxy||(n.exposeProxy=new Proxy(Woe(Foe(n.exposed)),{get(e,t){if(t in e)return e[t];if(t in RS)return RS[t](n)},has(e,t){return t in e||t in RS}}))}function Wwe(n,e=!0){return bi(n)?n.displayName||n.name:n.name||e&&n.__name}function Vwe(n){return bi(n)&&"__vccOpts"in n}const Qn=(n,e)=>PCe(n,e,Mk);function fae(n,e,t){const i=arguments.length;return i===2?as(e)&&!Jt(e)?VN(e)?At(n,null,[e]):At(n,e):At(n,null,e):(i>3?t=Array.prototype.slice.call(arguments,2):i===3&&VN(t)&&(t=[t]),At(n,e,t))}const Hwe=Symbol.for("v-scx"),$we=()=>$r(Hwe),LT="3.3.11",zwe="http://www.w3.org/2000/svg",m1=typeof document<"u"?document:null,$Y=m1&&m1.createElement("template"),Uwe={insert:(n,e,t)=>{e.insertBefore(n,t||null)},remove:n=>{const e=n.parentNode;e&&e.removeChild(n)},createElement:(n,e,t,i)=>{const s=e?m1.createElementNS(zwe,n):m1.createElement(n,t?{is:t}:void 0);return n==="select"&&i&&i.multiple!=null&&s.setAttribute("multiple",i.multiple),s},createText:n=>m1.createTextNode(n),createComment:n=>m1.createComment(n),setText:(n,e)=>{n.nodeValue=e},setElementText:(n,e)=>{n.textContent=e},parentNode:n=>n.parentNode,nextSibling:n=>n.nextSibling,querySelector:n=>m1.querySelector(n),setScopeId(n,e){n.setAttribute(e,"")},insertStaticContent(n,e,t,i,s,r){const o=t?t.previousSibling:e.lastChild;if(s&&(s===r||s.nextSibling))for(;e.insertBefore(s.cloneNode(!0),t),!(s===r||!(s=s.nextSibling)););else{$Y.innerHTML=i?`<svg>${n}</svg>`:n;const a=$Y.content;if(i){const l=a.firstChild;for(;l.firstChild;)a.appendChild(l.firstChild);a.removeChild(l)}e.insertBefore(a,t)}return[o?o.nextSibling:e.firstChild,t?t.previousSibling:e.lastChild]}},mg="transition",ew="animation",Ok=Symbol("_vtc"),rC=(n,{slots:e})=>fae(QCe,jwe(n),e);rC.displayName="Transition";const gae={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String};rC.props=Tr({},Yoe,gae);const Um=(n,e=[])=>{Jt(n)?n.forEach(t=>t(...e)):n&&n(...e)},zY=n=>n?Jt(n)?n.some(e=>e.length>1):n.length>1:!1;function jwe(n){const e={};for(const T in n)T in gae||(e[T]=n[T]);if(n.css===!1)return e;const{name:t="v",type:i,duration:s,enterFromClass:r=`${t}-enter-from`,enterActiveClass:o=`${t}-enter-active`,enterToClass:a=`${t}-enter-to`,appearFromClass:l=r,appearActiveClass:c=o,appearToClass:u=a,leaveFromClass:h=`${t}-leave-from`,leaveActiveClass:d=`${t}-leave-active`,leaveToClass:f=`${t}-leave-to`}=n,g=qwe(s),p=g&&g[0],m=g&&g[1],{onBeforeEnter:_,onEnter:b,onEnterCancelled:y,onLeave:w,onLeaveCancelled:S,onBeforeAppear:E=_,onAppear:L=b,onAppearCancelled:k=y}=e,x=(T,P,R)=>{jm(T,P?u:a),jm(T,P?c:o),R&&R()},I=(T,P)=>{T._isLeaving=!1,jm(T,h),jm(T,f),jm(T,d),P&&P()},N=T=>(P,R)=>{const F=T?L:b,j=()=>x(P,T,R);Um(F,[P,j]),UY(()=>{jm(P,T?l:r),_g(P,T?u:a),zY(F)||jY(P,i,p,j)})};return Tr(e,{onBeforeEnter(T){Um(_,[T]),_g(T,r),_g(T,o)},onBeforeAppear(T){Um(E,[T]),_g(T,l),_g(T,c)},onEnter:N(!1),onAppear:N(!0),onLeave(T,P){T._isLeaving=!0;const R=()=>I(T,P);_g(T,h),Ywe(),_g(T,d),UY(()=>{T._isLeaving&&(jm(T,h),_g(T,f),zY(w)||jY(T,i,m,R))}),Um(w,[T,R])},onEnterCancelled(T){x(T,!1),Um(y,[T])},onAppearCancelled(T){x(T,!0),Um(k,[T])},onLeaveCancelled(T){I(T),Um(S,[T])}})}function qwe(n){if(n==null)return null;if(as(n))return[y4(n.enter),y4(n.leave)];{const e=y4(n);return[e,e]}}function y4(n){return Kye(n)}function _g(n,e){e.split(/\s+/).forEach(t=>t&&n.classList.add(t)),(n[Ok]||(n[Ok]=new Set)).add(e)}function jm(n,e){e.split(/\s+/).forEach(i=>i&&n.classList.remove(i));const t=n[Ok];t&&(t.delete(e),t.size||(n[Ok]=void 0))}function UY(n){requestAnimationFrame(()=>{requestAnimationFrame(n)})}let Kwe=0;function jY(n,e,t,i){const s=n._endId=++Kwe,r=()=>{s===n._endId&&i()};if(t)return setTimeout(r,t);const{type:o,timeout:a,propCount:l}=Gwe(n,e);if(!o)return i();const c=o+"end";let u=0;const h=()=>{n.removeEventListener(c,d),r()},d=f=>{f.target===n&&++u>=l&&h()};setTimeout(()=>{u<l&&h()},a+1),n.addEventListener(c,d)}function Gwe(n,e){const t=window.getComputedStyle(n),i=g=>(t[g]||"").split(", "),s=i(`${mg}Delay`),r=i(`${mg}Duration`),o=qY(s,r),a=i(`${ew}Delay`),l=i(`${ew}Duration`),c=qY(a,l);let u=null,h=0,d=0;e===mg?o>0&&(u=mg,h=o,d=r.length):e===ew?c>0&&(u=ew,h=c,d=l.length):(h=Math.max(o,c),u=h>0?o>c?mg:ew:null,d=u?u===mg?r.length:l.length:0);const f=u===mg&&/\b(transform|all)(,|$)/.test(i(`${mg}Property`).toString());return{type:u,timeout:h,propCount:d,hasTransform:f}}function qY(n,e){for(;n.length<e.length;)n=n.concat(n);return Math.max(...e.map((t,i)=>KY(t)+KY(n[i])))}function KY(n){return n==="auto"?0:Number(n.slice(0,-1).replace(",","."))*1e3}function Ywe(){return document.body.offsetHeight}function Zwe(n,e,t){const i=n[Ok];i&&(e=(e?[e,...i]:[...i]).join(" ")),e==null?n.removeAttribute("class"):t?n.setAttribute("class",e):n.className=e}const A$=Symbol("_vod"),Kb={beforeMount(n,{value:e},{transition:t}){n[A$]=n.style.display==="none"?"":n.style.display,t&&e?t.beforeEnter(n):tw(n,e)},mounted(n,{value:e},{transition:t}){t&&e&&t.enter(n)},updated(n,{value:e,oldValue:t},{transition:i}){!e!=!t&&(i?e?(i.beforeEnter(n),tw(n,!0),i.enter(n)):i.leave(n,()=>{tw(n,!1)}):tw(n,e))},beforeUnmount(n,{value:e}){tw(n,e)}};function tw(n,e){n.style.display=e?n[A$]:"none"}function Xwe(n,e,t){const i=n.style,s=nr(t);if(t&&!s){if(e&&!nr(e))for(const r in e)t[r]==null&&X6(i,r,"");for(const r in t)X6(i,r,t[r])}else{const r=i.display;s?e!==t&&(i.cssText=t):e&&n.removeAttribute("style"),A$ in n&&(i.display=r)}}const GY=/\s*!important$/;function X6(n,e,t){if(Jt(t))t.forEach(i=>X6(n,e,i));else if(t==null&&(t=""),e.startsWith("--"))n.setProperty(e,t);else{const i=Qwe(n,e);GY.test(t)?n.setProperty(hv(i),t.replace(GY,""),"important"):n[i]=t}}const YY=["Webkit","Moz","ms"],C4={};function Qwe(n,e){const t=C4[e];if(t)return t;let i=ad(e);if(i!=="filter"&&i in n)return C4[e]=i;i=VR(i);for(let s=0;s<YY.length;s++){const r=YY[s]+i;if(r in n)return C4[e]=r}return e}const ZY="http://www.w3.org/1999/xlink";function Jwe(n,e,t,i,s){if(i&&e.startsWith("xlink:"))t==null?n.removeAttributeNS(ZY,e.slice(6,e.length)):n.setAttributeNS(ZY,e,t);else{const r=Jye(e);t==null||r&&!Soe(t)?n.removeAttribute(e):n.setAttribute(e,r?"":t)}}function eSe(n,e,t,i,s,r,o){if(e==="innerHTML"||e==="textContent"){i&&o(i,s,r),n[e]=t??"";return}const a=n.tagName;if(e==="value"&&a!=="PROGRESS"&&!a.includes("-")){n._value=t;const c=a==="OPTION"?n.getAttribute("value"):n.value,u=t??"";c!==u&&(n.value=u),t==null&&n.removeAttribute(e);return}let l=!1;if(t===""||t==null){const c=typeof n[e];c==="boolean"?t=Soe(t):t==null&&c==="string"?(t="",l=!0):c==="number"&&(t=0,l=!0)}try{n[e]=t}catch{}l&&n.removeAttribute(e)}function C0(n,e,t,i){n.addEventListener(e,t,i)}function tSe(n,e,t,i){n.removeEventListener(e,t,i)}const XY=Symbol("_vei");function iSe(n,e,t,i,s=null){const r=n[XY]||(n[XY]={}),o=r[e];if(i&&o)o.value=i;else{const[a,l]=nSe(e);if(i){const c=r[e]=oSe(i,s);C0(n,a,c,l)}else o&&(tSe(n,a,o,l),r[e]=void 0)}}const QY=/(?:Once|Passive|Capture)$/;function nSe(n){let e;if(QY.test(n)){e={};let i;for(;i=n.match(QY);)n=n.slice(0,n.length-i[0].length),e[i[0].toLowerCase()]=!0}return[n[2]===":"?n.slice(3):hv(n.slice(2)),e]}let w4=0;const sSe=Promise.resolve(),rSe=()=>w4||(sSe.then(()=>w4=0),w4=Date.now());function oSe(n,e){const t=i=>{if(!i._vts)i._vts=Date.now();else if(i._vts<=t.attached)return;gc(aSe(i,t.value),e,5,[i])};return t.value=n,t.attached=rSe(),t}function aSe(n,e){if(Jt(e)){const t=n.stopImmediatePropagation;return n.stopImmediatePropagation=()=>{t.call(n),n._stopped=!0},e.map(i=>s=>!s._stopped&&i&&i(s))}else return e}const JY=n=>n.charCodeAt(0)===111&&n.charCodeAt(1)===110&&n.charCodeAt(2)>96&&n.charCodeAt(2)<123,lSe=(n,e,t,i,s=!1,r,o,a,l)=>{e==="class"?Zwe(n,i,s):e==="style"?Xwe(n,t,i):FR(e)?d$(e)||iSe(n,e,t,i,o):(e[0]==="."?(e=e.slice(1),!0):e[0]==="^"?(e=e.slice(1),!1):cSe(n,e,i,s))?eSe(n,e,i,r,o,a,l):(e==="true-value"?n._trueValue=i:e==="false-value"&&(n._falseValue=i),Jwe(n,e,i,s))};function cSe(n,e,t,i){if(i)return!!(e==="innerHTML"||e==="textContent"||e in n&&JY(e)&&bi(t));if(e==="spellcheck"||e==="draggable"||e==="translate"||e==="form"||e==="list"&&n.tagName==="INPUT"||e==="type"&&n.tagName==="TEXTAREA")return!1;if(e==="width"||e==="height"){const s=n.tagName;if(s==="IMG"||s==="VIDEO"||s==="CANVAS"||s==="SOURCE")return!1}return JY(e)&&nr(t)?!1:e in n}const eZ=n=>{const e=n.props["onUpdate:modelValue"]||!1;return Jt(e)?t=>ST(e,t):e};function uSe(n){n.target.composing=!0}function tZ(n){const e=n.target;e.composing&&(e.composing=!1,e.dispatchEvent(new Event("input")))}const S4=Symbol("_assign"),hSe={created(n,{modifiers:{lazy:e,trim:t,number:i}},s){n[S4]=eZ(s);const r=i||s.props&&s.props.type==="number";C0(n,e?"change":"input",o=>{if(o.target.composing)return;let a=n.value;t&&(a=a.trim()),r&&(a=O6(a)),n[S4](a)}),t&&C0(n,"change",()=>{n.value=n.value.trim()}),e||(C0(n,"compositionstart",uSe),C0(n,"compositionend",tZ),C0(n,"change",tZ))},mounted(n,{value:e}){n.value=e??""},beforeUpdate(n,{value:e,modifiers:{lazy:t,trim:i,number:s}},r){if(n[S4]=eZ(r),n.composing)return;const o=s||n.type==="number"?O6(n.value):n.value,a=e??"";o!==a&&(document.activeElement===n&&n.type!=="range"&&(t||i&&n.value.trim()===a)||(n.value=a))}},dSe=["ctrl","shift","alt","meta"],fSe={stop:n=>n.stopPropagation(),prevent:n=>n.preventDefault(),self:n=>n.target!==n.currentTarget,ctrl:n=>!n.ctrlKey,shift:n=>!n.shiftKey,alt:n=>!n.altKey,meta:n=>!n.metaKey,left:n=>"button"in n&&n.button!==0,middle:n=>"button"in n&&n.button!==1,right:n=>"button"in n&&n.button!==2,exact:(n,e)=>dSe.some(t=>n[`${t}Key`]&&!e.includes(t))},pae=(n,e)=>n._withMods||(n._withMods=(t,...i)=>{for(let s=0;s<e.length;s++){const r=fSe[e[s]];if(r&&r(t,e))return}return n(t,...i)}),gSe={esc:"escape",space:" ",up:"arrow-up",left:"arrow-left",right:"arrow-right",down:"arrow-down",delete:"backspace"},iZ=(n,e)=>n._withKeys||(n._withKeys=t=>{if(!("key"in t))return;const i=hv(t.key);if(e.some(s=>s===i||gSe[s]===i))return n(t)}),pSe=Tr({patchProp:lSe},Uwe);let nZ;function mSe(){return nZ||(nZ=Cwe(pSe))}const mae=(...n)=>{const e=mSe().createApp(...n),{mount:t}=e;return e.mount=i=>{const s=_Se(i);if(!s)return;const r=e._component;!bi(r)&&!r.render&&!r.template&&(r.template=s.innerHTML),s.innerHTML="";const o=t(s,!1,s instanceof SVGElement);return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),o},e};function _Se(n){return nr(n)?document.querySelector(n):n}const vSe="modulepreload",bSe=function(n,e){return new URL(n,e).href},sZ={},_ae=function(e,t,i){let s=Promise.resolve();if(t&&t.length>0){const r=document.getElementsByTagName("link");s=Promise.all(t.map(o=>{if(o=bSe(o,i),o in sZ)return;sZ[o]=!0;const a=o.endsWith(".css"),l=a?'[rel="stylesheet"]':"";if(!!i)for(let h=r.length-1;h>=0;h--){const d=r[h];if(d.href===o&&(!a||d.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${o}"]${l}`))return;const u=document.createElement("link");if(u.rel=a?"stylesheet":vSe,a||(u.as="script",u.crossOrigin=""),u.href=o,document.head.appendChild(u),a)return new Promise((h,d)=>{u.addEventListener("load",h),u.addEventListener("error",()=>d(new Error(`Unable to preload CSS for ${o}`)))})}))}return s.then(()=>e()).catch(r=>{const o=new Event("vite:preloadError",{cancelable:!0});if(o.payload=r,window.dispatchEvent(o),!o.defaultPrevented)throw r})};function _o(n,e){const t=Object.create(null),i=n.split(",");for(let s=0;s<i.length;s++)t[i[s]]=!0;return e?s=>!!t[s.toLowerCase()]:s=>!!t[s]}const ySe=Object.freeze({}),rZ=()=>{},xT=()=>!1,vae=n=>n.charCodeAt(0)===111&&n.charCodeAt(1)===110&&(n.charCodeAt(2)>122||n.charCodeAt(2)<97),If=Object.assign,CSe=Object.prototype.hasOwnProperty,QR=(n,e)=>CSe.call(n,e),aa=Array.isArray,wSe=n=>P$(n)==="[object Map]",SSe=n=>P$(n)==="[object Set]",bae=n=>typeof n=="function",Ui=n=>typeof n=="string",Sm=n=>typeof n=="symbol",ig=n=>n!==null&&typeof n=="object",yae=Object.prototype.toString,P$=n=>yae.call(n),kSe=n=>P$(n)==="[object Object]",oZ=_o(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),R$=_o("bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo"),JR=n=>{const e=Object.create(null);return t=>e[t]||(e[t]=n(t))},LSe=/-(\w)/g,yu=JR(n=>n.replace(LSe,(e,t)=>t?t.toUpperCase():"")),xSe=/\B([A-Z])/g,Cae=JR(n=>n.replace(xSe,"-$1").toLowerCase()),Wp=JR(n=>n.charAt(0).toUpperCase()+n.slice(1)),ESe=JR(n=>n?`on${Wp(n)}`:""),DSe=/^[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*$/;function Gb(n){return DSe.test(n)?`__props.${n}`:`__props[${JSON.stringify(n)}]`}const Uh={1:"TEXT",2:"CLASS",4:"STYLE",8:"PROPS",16:"FULL_PROPS",32:"NEED_HYDRATION",64:"STABLE_FRAGMENT",128:"KEYED_FRAGMENT",256:"UNKEYED_FRAGMENT",512:"NEED_PATCH",1024:"DYNAMIC_SLOTS",2048:"DEV_ROOT_FRAGMENT",[-1]:"HOISTED",[-2]:"BAIL"},ISe={1:"STABLE",2:"DYNAMIC",3:"FORWARDED"},TSe="Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console",wae=_o(TSe),aZ=2;function Yb(n,e=0,t=n.length){let i=n.split(/(\r?\n)/);const s=i.filter((a,l)=>l%2===1);i=i.filter((a,l)=>l%2===0);let r=0;const o=[];for(let a=0;a<i.length;a++)if(r+=i[a].length+(s[a]&&s[a].length||0),r>=e){for(let l=a-aZ;l<=a+aZ||t>r;l++){if(l<0||l>=i.length)continue;const c=l+1;o.push(`${c}${" ".repeat(Math.max(3-String(c).length,0))}| ${i[l]}`);const u=i[l].length,h=s[l]&&s[l].length||0;if(l===a){const d=e-(r-(u+h)),f=Math.max(1,t>r?u-d:t-e);o.push(" | "+" ".repeat(d)+"^".repeat(f))}else if(l>a){if(t>r){const d=Math.max(Math.min(t-r,u),1);o.push(" | "+"^".repeat(d))}r+=u+h}}break}return o.join(` +`)}function Sae(n){if(aa(n)){const e={};for(let t=0;t<n.length;t++){const i=n[t],s=Ui(i)?kae(i):Sae(i);if(s)for(const r in s)e[r]=s[r]}return e}else if(Ui(n)||ig(n))return n}const NSe=/;(?![^(]*\))/g,ASe=/:([^]+)/,PSe=/\/\*[^]*?\*\//g;function kae(n){const e={};return n.replace(PSe,"").split(NSe).forEach(t=>{if(t){const i=t.split(ASe);i.length>1&&(e[i[0].trim()]=i[1].trim())}}),e}function RSe(n){let e="";if(!n||Ui(n))return e;for(const t in n){const i=n[t],s=t.startsWith("--")?t:Cae(t);(Ui(i)||typeof i=="number")&&(e+=`${s}:${i};`)}return e}function Lae(n){let e="";if(Ui(n))e=n;else if(aa(n))for(let t=0;t<n.length;t++){const i=Lae(n[t]);i&&(e+=i+" ")}else if(ig(n))for(const t in n)n[t]&&(e+=t+" ");return e.trim()}const MSe="html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot",OSe="svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view",FSe="area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr",BSe=_o(MSe),WSe=_o(OSe),xae=_o(FSe),VSe="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",Eae=_o(VSe+",async,autofocus,autoplay,controls,default,defer,disabled,hidden,inert,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected"),HSe=/[>/="'\u0009\u000a\u000c\u0020]/,k4={};function $Se(n){if(k4.hasOwnProperty(n))return k4[n];const e=HSe.test(n);return e&&console.error(`unsafe attribute name: ${n}`),k4[n]=!e}const zSe={acceptCharset:"accept-charset",className:"class",htmlFor:"for",httpEquiv:"http-equiv"},USe=_o("accept,accept-charset,accesskey,action,align,allow,alt,async,autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,border,buffered,capture,challenge,charset,checked,cite,class,code,codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,formaction,formenctype,formmethod,formnovalidate,formtarget,headers,height,hidden,high,href,hreflang,http-equiv,icon,id,importance,inert,integrity,ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,target,title,translate,type,usemap,value,width,wrap"),jSe=_o("xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,color-interpolation-filters,color-profile,color-rendering,contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,font-family,font-size,font-size-adjust,font-stretch,font-style,font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,overflow,overline-position,overline-thickness,panose-1,paint-order,path,pathLength,patternContentUnits,patternTransform,patternUnits,ping,pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,specularConstant,specularExponent,speed,spreadMethod,startOffset,stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,string,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,text-decoration,text-rendering,textLength,to,transform,transform-origin,type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xml:base,xml:lang,xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan"),qSe=/["'&<>]/;function Eh(n){const e=""+n,t=qSe.exec(e);if(!t)return e;let i="",s,r,o=0;for(r=t.index;r<e.length;r++){switch(e.charCodeAt(r)){case 34:s=""";break;case 38:s="&";break;case 39:s="'";break;case 60:s="<";break;case 62:s=">";break;default:continue}o!==r&&(i+=e.slice(o,r)),o=r+1,i+=s}return o!==r?i+e.slice(o,r):i}const M$=n=>Ui(n)?n:n==null?"":aa(n)||ig(n)&&(n.toString===yae||!bae(n.toString))?JSON.stringify(n,Dae,2):String(n),Dae=(n,e)=>e&&e.__v_isRef?Dae(n,e.value):wSe(e)?{[`Map(${e.size})`]:[...e.entries()].reduce((t,[i,s],r)=>(t[L4(i,r)+" =>"]=s,t),{})}:SSe(e)?{[`Set(${e.size})`]:[...e.values()].map(t=>L4(t))}:Sm(e)?L4(e):ig(e)&&!aa(e)&&!kSe(e)?String(e):e,L4=(n,e="")=>{var t;return Sm(n)?`Symbol(${(t=n.description)!=null?t:e})`:n};function O$(n){throw n}function Iae(n){console.warn(`[Vue warn] ${n.message}`)}function hn(n,e,t,i){const s=(t||KSe)[n]+(i||""),r=new SyntaxError(String(s));return r.code=n,r.loc=e,r}const KSe={0:"Illegal comment.",1:"CDATA section is allowed only in XML context.",2:"Duplicate attribute.",3:"End tag cannot have attributes.",4:"Illegal '/' in tags.",5:"Unexpected EOF in tag.",6:"Unexpected EOF in CDATA section.",7:"Unexpected EOF in comment.",8:"Unexpected EOF in script.",9:"Unexpected EOF in tag.",10:"Incorrectly closed comment.",11:"Incorrectly opened comment.",12:"Illegal tag name. Use '<' to print '<'.",13:"Attribute value was expected.",14:"End tag name was expected.",15:"Whitespace was expected.",16:"Unexpected '<!--' in comment.",17:`Attribute name cannot contain U+0022 ("), U+0027 ('), and U+003C (<).`,18:"Unquoted attribute value cannot contain U+0022 (\"), U+0027 ('), U+003C (<), U+003D (=), and U+0060 (`).",19:"Attribute name cannot start with '='.",21:"'<?' is allowed only in XML context.",20:"Unexpected null character.",22:"Illegal '/' in tags.",23:"Invalid end tag.",24:"Element is missing end tag.",25:"Interpolation end sign was not found.",27:"End bracket for dynamic directive argument was not found. Note that dynamic directive argument cannot contain spaces.",26:"Legal directive name was expected.",28:"v-if/v-else-if is missing expression.",29:"v-if/else branches must use unique keys.",30:"v-else/v-else-if has no adjacent v-if or v-else-if.",31:"v-for is missing expression.",32:"v-for has invalid expression.",33:"<template v-for> key should be placed on the <template> tag.",34:"v-bind is missing expression.",35:"v-on is missing expression.",36:"Unexpected custom directive on <slot> outlet.",37:"Mixed v-slot usage on both the component and nested <template>. When there are multiple named slots, all slots should use <template> syntax to avoid scope ambiguity.",38:"Duplicate slot names found. ",39:"Extraneous children found when component already has explicitly named default slot. These children will be ignored.",40:"v-slot can only be used on components or <template> tags.",41:"v-model is missing expression.",42:"v-model value must be a valid JavaScript member expression.",43:"v-model cannot be used on v-for or v-slot scope variables because they are not writable.",44:`v-model cannot be used on a prop, because local prop bindings are not writable. +Use a v-bind binding combined with a v-on listener that emits update:x event instead.`,45:"Error parsing JavaScript expression: ",46:"<KeepAlive> expects exactly one child component.",47:'"prefixIdentifiers" option is not supported in this build of compiler.',48:"ES module mode is not supported in this build of compiler.",49:'"cacheHandlers" option is only supported when the "prefixIdentifiers" option is enabled.',50:'"scopeId" option is only supported in module mode.',51:"@vnode-* hooks in templates are deprecated. Use the vue: prefix instead. For example, @vnode-mounted should be changed to @vue:mounted. @vnode-* hooks support will be removed in 3.4.",52:'v-is="component-name" has been deprecated. Use is="vue:component-name" instead. v-is support will be removed in 3.4.',53:""},Zb=Symbol("Fragment"),Z1=Symbol("Teleport"),oC=Symbol("Suspense"),Fk=Symbol("KeepAlive"),F$=Symbol("BaseTransition"),Vp=Symbol("openBlock"),B$=Symbol("createBlock"),W$=Symbol("createElementBlock"),Yx=Symbol("createVNode"),eM=Symbol("createElementVNode"),aC=Symbol("createCommentVNode"),tM=Symbol("createTextVNode"),iM=Symbol("createStaticVNode"),Bk=Symbol("resolveComponent"),Xb=Symbol("resolveDynamicComponent"),nM=Symbol("resolveDirective"),Tae=Symbol("resolveFilter"),sM=Symbol("withDirectives"),rM=Symbol("renderList"),V$=Symbol("renderSlot"),H$=Symbol("createSlots"),Zx=Symbol("toDisplayString"),v_=Symbol("mergeProps"),oM=Symbol("normalizeClass"),aM=Symbol("normalizeStyle"),Qb=Symbol("normalizeProps"),lC=Symbol("guardReactiveProps"),lM=Symbol("toHandlers"),HN=Symbol("camelize"),Nae=Symbol("capitalize"),$N=Symbol("toHandlerKey"),Wk=Symbol("setBlockTracking"),cM=Symbol("pushScopeId"),uM=Symbol("popScopeId"),hM=Symbol("withCtx"),b_=Symbol("unref"),Vk=Symbol("isRef"),dM=Symbol("withMemo"),$$=Symbol("isMemoSame"),Pa={[Zb]:"Fragment",[Z1]:"Teleport",[oC]:"Suspense",[Fk]:"KeepAlive",[F$]:"BaseTransition",[Vp]:"openBlock",[B$]:"createBlock",[W$]:"createElementBlock",[Yx]:"createVNode",[eM]:"createElementVNode",[aC]:"createCommentVNode",[tM]:"createTextVNode",[iM]:"createStaticVNode",[Bk]:"resolveComponent",[Xb]:"resolveDynamicComponent",[nM]:"resolveDirective",[Tae]:"resolveFilter",[sM]:"withDirectives",[rM]:"renderList",[V$]:"renderSlot",[H$]:"createSlots",[Zx]:"toDisplayString",[v_]:"mergeProps",[oM]:"normalizeClass",[aM]:"normalizeStyle",[Qb]:"normalizeProps",[lC]:"guardReactiveProps",[lM]:"toHandlers",[HN]:"camelize",[Nae]:"capitalize",[$N]:"toHandlerKey",[Wk]:"setBlockTracking",[cM]:"pushScopeId",[uM]:"popScopeId",[hM]:"withCtx",[b_]:"unref",[Vk]:"isRef",[dM]:"withMemo",[$$]:"isMemoSame"};function z$(n){Object.getOwnPropertySymbols(n).forEach(e=>{Pa[e]=n[e]})}const Cs={source:"",start:{line:1,column:1,offset:0},end:{line:1,column:1,offset:0}};function cC(n,e=Cs){return{type:0,children:n,helpers:new Set,components:[],directives:[],hoists:[],imports:[],cached:0,temps:0,codegenNode:void 0,loc:e}}function Jb(n,e,t,i,s,r,o,a=!1,l=!1,c=!1,u=Cs){return n&&(a?(n.helper(Vp),n.helper(C_(n.inSSR,c))):n.helper(y_(n.inSSR,c)),o&&n.helper(sM)),{type:13,tag:e,props:t,children:i,patchFlag:s,dynamicProps:r,directives:o,isBlock:a,disableTracking:l,isComponent:c,loc:u}}function gv(n,e=Cs){return{type:17,loc:e,elements:n}}function Va(n,e=Cs){return{type:15,loc:e,properties:n}}function En(n,e){return{type:16,loc:Cs,key:Ui(n)?ct(n,!0):n,value:e}}function ct(n,e=!1,t=Cs,i=0){return{type:4,loc:t,content:n,isStatic:e,constType:e?3:i}}function zN(n,e){return{type:5,loc:e,content:Ui(n)?ct(n,!1,e):n}}function io(n,e=Cs){return{type:8,loc:e,children:n}}function $t(n,e=[],t=Cs){return{type:14,loc:t,callee:n,arguments:e}}function Rl(n,e=void 0,t=!1,i=!1,s=Cs){return{type:18,params:n,returns:e,newline:t,isSlot:i,loc:s}}function jh(n,e,t,i=!0){return{type:19,test:n,consequent:e,alternate:t,newline:i,loc:Cs}}function Aae(n,e,t=!1){return{type:20,index:n,value:e,isVNode:t,loc:Cs}}function Xx(n){return{type:21,body:n,loc:Cs}}function U$(n){return{type:22,elements:n,loc:Cs}}function UN(n,e,t){return{type:23,test:n,consequent:e,alternate:t,loc:Cs}}function Q6(n,e){return{type:24,left:n,right:e,loc:Cs}}function Pae(n){return{type:25,expressions:n,loc:Cs}}function Rae(n){return{type:26,returns:n,loc:Cs}}function y_(n,e){return n||e?Yx:eM}function C_(n,e){return n||e?B$:W$}function fM(n,{helper:e,removeHelper:t,inSSR:i}){n.isBlock||(n.isBlock=!0,t(y_(i,n.isComponent)),e(Vp),e(C_(i,n.isComponent)))}function gM(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}function Qx(n){if(n.__esModule)return n;var e=n.default;if(typeof e=="function"){var t=function i(){return this instanceof i?Reflect.construct(e,arguments,this.constructor):e.apply(this,arguments)};t.prototype=e.prototype}else t={};return Object.defineProperty(t,"__esModule",{value:!0}),Object.keys(n).forEach(function(i){var s=Object.getOwnPropertyDescriptor(n,i);Object.defineProperty(t,i,s.get?s:{enumerable:!0,get:function(){return n[i]}})}),t}var pM={};Object.defineProperty(pM,"__esModule",{value:!0});function jN(n,e){if(n==null)return{};var t={},i=Object.keys(n),s,r;for(r=0;r<i.length;r++)s=i[r],!(e.indexOf(s)>=0)&&(t[s]=n[s]);return t}class gp{constructor(e,t,i){this.line=void 0,this.column=void 0,this.index=void 0,this.line=e,this.column=t,this.index=i}}class qN{constructor(e,t){this.start=void 0,this.end=void 0,this.filename=void 0,this.identifierName=void 0,this.start=e,this.end=t}}function Yo(n,e){const{line:t,column:i,index:s}=n;return new gp(t,i+e,s+e)}const lZ="BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED";var GSe={ImportMetaOutsideModule:{message:`import.meta may appear only with 'sourceType: "module"'`,code:lZ},ImportOutsideModule:{message:`'import' and 'export' may appear only with 'sourceType: "module"'`,code:lZ}};const cZ={ArrayPattern:"array destructuring pattern",AssignmentExpression:"assignment expression",AssignmentPattern:"assignment expression",ArrowFunctionExpression:"arrow function expression",ConditionalExpression:"conditional expression",CatchClause:"catch clause",ForOfStatement:"for-of statement",ForInStatement:"for-in statement",ForStatement:"for-loop",FormalParameters:"function parameter list",Identifier:"identifier",ImportSpecifier:"import specifier",ImportDefaultSpecifier:"import default specifier",ImportNamespaceSpecifier:"import namespace specifier",ObjectPattern:"object destructuring pattern",ParenthesizedExpression:"parenthesized expression",RestElement:"rest element",UpdateExpression:{true:"prefix operation",false:"postfix operation"},VariableDeclarator:"variable declaration",YieldExpression:"yield expression"},ET=({type:n,prefix:e})=>n==="UpdateExpression"?cZ.UpdateExpression[String(e)]:cZ[n];var YSe={AccessorIsGenerator:({kind:n})=>`A ${n}ter cannot be a generator.`,ArgumentsInClass:"'arguments' is only allowed in functions and class methods.",AsyncFunctionInSingleStatementContext:"Async functions can only be declared at the top level or inside a block.",AwaitBindingIdentifier:"Can not use 'await' as identifier inside an async function.",AwaitBindingIdentifierInStaticBlock:"Can not use 'await' as identifier inside a static block.",AwaitExpressionFormalParameter:"'await' is not allowed in async function parameters.",AwaitUsingNotInAsyncContext:"'await using' is only allowed within async functions and at the top levels of modules.",AwaitNotInAsyncContext:"'await' is only allowed within async functions and at the top levels of modules.",AwaitNotInAsyncFunction:"'await' is only allowed within async functions.",BadGetterArity:"A 'get' accessor must not have any formal parameters.",BadSetterArity:"A 'set' accessor must have exactly one formal parameter.",BadSetterRestParameter:"A 'set' accessor function argument must not be a rest parameter.",ConstructorClassField:"Classes may not have a field named 'constructor'.",ConstructorClassPrivateField:"Classes may not have a private field named '#constructor'.",ConstructorIsAccessor:"Class constructor may not be an accessor.",ConstructorIsAsync:"Constructor can't be an async function.",ConstructorIsGenerator:"Constructor can't be a generator.",DeclarationMissingInitializer:({kind:n})=>`Missing initializer in ${n} declaration.`,DecoratorArgumentsOutsideParentheses:"Decorator arguments must be moved inside parentheses: use '@(decorator(args))' instead of '@(decorator)(args)'.",DecoratorBeforeExport:"Decorators must be placed *before* the 'export' keyword. Remove the 'decoratorsBeforeExport: true' option to use the 'export @decorator class {}' syntax.",DecoratorsBeforeAfterExport:"Decorators can be placed *either* before or after the 'export' keyword, but not in both locations at the same time.",DecoratorConstructor:"Decorators can't be used with a constructor. Did you mean '@dec class { ... }'?",DecoratorExportClass:"Decorators must be placed *after* the 'export' keyword. Remove the 'decoratorsBeforeExport: false' option to use the '@decorator export class {}' syntax.",DecoratorSemicolon:"Decorators must not be followed by a semicolon.",DecoratorStaticBlock:"Decorators can't be used with a static block.",DeferImportRequiresNamespace:'Only `import defer * as x from "./module"` is valid.',DeletePrivateField:"Deleting a private field is not allowed.",DestructureNamedImport:"ES2015 named imports do not destructure. Use another statement for destructuring after the import.",DuplicateConstructor:"Duplicate constructor in the same class.",DuplicateDefaultExport:"Only one default export allowed per module.",DuplicateExport:({exportName:n})=>`\`${n}\` has already been exported. Exported identifiers must be unique.`,DuplicateProto:"Redefinition of __proto__ property.",DuplicateRegExpFlags:"Duplicate regular expression flag.",DynamicImportPhaseRequiresImportExpressions:({phase:n})=>`'import.${n}(...)' can only be parsed when using the 'createImportExpressions' option.`,ElementAfterRest:"Rest element must be last element.",EscapedCharNotAnIdentifier:"Invalid Unicode escape.",ExportBindingIsString:({localName:n,exportName:e})=>`A string literal cannot be used as an exported binding without \`from\`. +- Did you mean \`export { '${n}' as '${e}' } from 'some-module'\`?`,ExportDefaultFromAsIdentifier:"'from' is not allowed as an identifier after 'export default'.",ForInOfLoopInitializer:({type:n})=>`'${n==="ForInStatement"?"for-in":"for-of"}' loop variable declaration may not have an initializer.`,ForInUsing:"For-in loop may not start with 'using' declaration.",ForOfAsync:"The left-hand side of a for-of loop may not be 'async'.",ForOfLet:"The left-hand side of a for-of loop may not start with 'let'.",GeneratorInSingleStatementContext:"Generators can only be declared at the top level or inside a block.",IllegalBreakContinue:({type:n})=>`Unsyntactic ${n==="BreakStatement"?"break":"continue"}.`,IllegalLanguageModeDirective:"Illegal 'use strict' directive in function with non-simple parameter list.",IllegalReturn:"'return' outside of function.",ImportAttributesUseAssert:"The `assert` keyword in import attributes is deprecated and it has been replaced by the `with` keyword. You can enable the `deprecatedAssertSyntax: true` option in the import attributes plugin to suppress this error.",ImportBindingIsString:({importName:n})=>`A string literal cannot be used as an imported binding. +- Did you mean \`import { "${n}" as foo }\`?`,ImportCallArgumentTrailingComma:"Trailing comma is disallowed inside import(...) arguments.",ImportCallArity:({maxArgumentCount:n})=>`\`import()\` requires exactly ${n===1?"one argument":"one or two arguments"}.`,ImportCallNotNewExpression:"Cannot use new with import(...).",ImportCallSpreadArgument:"`...` is not allowed in `import()`.",ImportJSONBindingNotDefault:"A JSON module can only be imported with `default`.",ImportReflectionHasAssertion:"`import module x` cannot have assertions.",ImportReflectionNotBinding:'Only `import module x from "./module"` is valid.',IncompatibleRegExpUVFlags:"The 'u' and 'v' regular expression flags cannot be enabled at the same time.",InvalidBigIntLiteral:"Invalid BigIntLiteral.",InvalidCodePoint:"Code point out of bounds.",InvalidCoverInitializedName:"Invalid shorthand property initializer.",InvalidDecimal:"Invalid decimal.",InvalidDigit:({radix:n})=>`Expected number in radix ${n}.`,InvalidEscapeSequence:"Bad character escape sequence.",InvalidEscapeSequenceTemplate:"Invalid escape sequence in template.",InvalidEscapedReservedWord:({reservedWord:n})=>`Escape sequence in keyword ${n}.`,InvalidIdentifier:({identifierName:n})=>`Invalid identifier ${n}.`,InvalidLhs:({ancestor:n})=>`Invalid left-hand side in ${ET(n)}.`,InvalidLhsBinding:({ancestor:n})=>`Binding invalid left-hand side in ${ET(n)}.`,InvalidLhsOptionalChaining:({ancestor:n})=>`Invalid optional chaining in the left-hand side of ${ET(n)}.`,InvalidNumber:"Invalid number.",InvalidOrMissingExponent:"Floating-point numbers require a valid exponent after the 'e'.",InvalidOrUnexpectedToken:({unexpected:n})=>`Unexpected character '${n}'.`,InvalidParenthesizedAssignment:"Invalid parenthesized assignment pattern.",InvalidPrivateFieldResolution:({identifierName:n})=>`Private name #${n} is not defined.`,InvalidPropertyBindingPattern:"Binding member expression.",InvalidRecordProperty:"Only properties and spread elements are allowed in record definitions.",InvalidRestAssignmentPattern:"Invalid rest operator's argument.",LabelRedeclaration:({labelName:n})=>`Label '${n}' is already declared.`,LetInLexicalBinding:"'let' is disallowed as a lexically bound name.",LineTerminatorBeforeArrow:"No line break is allowed before '=>'.",MalformedRegExpFlags:"Invalid regular expression flag.",MissingClassName:"A class name is required.",MissingEqInAssignment:"Only '=' operator can be used for specifying default value.",MissingSemicolon:"Missing semicolon.",MissingPlugin:({missingPlugin:n})=>`This experimental syntax requires enabling the parser plugin: ${n.map(e=>JSON.stringify(e)).join(", ")}.`,MissingOneOfPlugins:({missingPlugin:n})=>`This experimental syntax requires enabling one of the following parser plugin(s): ${n.map(e=>JSON.stringify(e)).join(", ")}.`,MissingUnicodeEscape:"Expecting Unicode escape sequence \\uXXXX.",MixingCoalesceWithLogical:"Nullish coalescing operator(??) requires parens when mixing with logical operators.",ModuleAttributeDifferentFromType:"The only accepted module attribute is `type`.",ModuleAttributeInvalidValue:"Only string literals are allowed as module attribute values.",ModuleAttributesWithDuplicateKeys:({key:n})=>`Duplicate key "${n}" is not allowed in module attributes.`,ModuleExportNameHasLoneSurrogate:({surrogateCharCode:n})=>`An export name cannot include a lone surrogate, found '\\u${n.toString(16)}'.`,ModuleExportUndefined:({localName:n})=>`Export '${n}' is not defined.`,MultipleDefaultsInSwitch:"Multiple default clauses.",NewlineAfterThrow:"Illegal newline after throw.",NoCatchOrFinally:"Missing catch or finally clause.",NumberIdentifier:"Identifier directly after number.",NumericSeparatorInEscapeSequence:"Numeric separators are not allowed inside unicode escape sequences or hex escape sequences.",ObsoleteAwaitStar:"'await*' has been removed from the async functions proposal. Use Promise.all() instead.",OptionalChainingNoNew:"Constructors in/after an Optional Chain are not allowed.",OptionalChainingNoTemplate:"Tagged Template Literals are not allowed in optionalChain.",OverrideOnConstructor:"'override' modifier cannot appear on a constructor declaration.",ParamDupe:"Argument name clash.",PatternHasAccessor:"Object pattern can't contain getter or setter.",PatternHasMethod:"Object pattern can't contain methods.",PrivateInExpectedIn:({identifierName:n})=>`Private names are only allowed in property accesses (\`obj.#${n}\`) or in \`in\` expressions (\`#${n} in obj\`).`,PrivateNameRedeclaration:({identifierName:n})=>`Duplicate private name #${n}.`,RecordExpressionBarIncorrectEndSyntaxType:"Record expressions ending with '|}' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.",RecordExpressionBarIncorrectStartSyntaxType:"Record expressions starting with '{|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.",RecordExpressionHashIncorrectStartSyntaxType:"Record expressions starting with '#{' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'.",RecordNoProto:"'__proto__' is not allowed in Record expressions.",RestTrailingComma:"Unexpected trailing comma after rest element.",SloppyFunction:"In non-strict mode code, functions can only be declared at top level or inside a block.",SloppyFunctionAnnexB:"In non-strict mode code, functions can only be declared at top level, inside a block, or as the body of an if statement.",SourcePhaseImportRequiresDefault:'Only `import source x from "./module"` is valid.',StaticPrototype:"Classes may not have static property named prototype.",SuperNotAllowed:"`super()` is only valid inside a class constructor of a subclass. Maybe a typo in the method name ('constructor') or not extending another class?",SuperPrivateField:"Private fields can't be accessed on super.",TrailingDecorator:"Decorators must be attached to a class element.",TupleExpressionBarIncorrectEndSyntaxType:"Tuple expressions ending with '|]' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.",TupleExpressionBarIncorrectStartSyntaxType:"Tuple expressions starting with '[|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.",TupleExpressionHashIncorrectStartSyntaxType:"Tuple expressions starting with '#[' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'.",UnexpectedArgumentPlaceholder:"Unexpected argument placeholder.",UnexpectedAwaitAfterPipelineBody:'Unexpected "await" after pipeline body; await must have parentheses in minimal proposal.',UnexpectedDigitAfterHash:"Unexpected digit after hash token.",UnexpectedImportExport:"'import' and 'export' may only appear at the top level.",UnexpectedKeyword:({keyword:n})=>`Unexpected keyword '${n}'.`,UnexpectedLeadingDecorator:"Leading decorators must be attached to a class declaration.",UnexpectedLexicalDeclaration:"Lexical declaration cannot appear in a single-statement context.",UnexpectedNewTarget:"`new.target` can only be used in functions or class properties.",UnexpectedNumericSeparator:"A numeric separator is only allowed between two digits.",UnexpectedPrivateField:"Unexpected private name.",UnexpectedReservedWord:({reservedWord:n})=>`Unexpected reserved word '${n}'.`,UnexpectedSuper:"'super' is only allowed in object methods and classes.",UnexpectedToken:({expected:n,unexpected:e})=>`Unexpected token${e?` '${e}'.`:""}${n?`, expected "${n}"`:""}`,UnexpectedTokenUnaryExponentiation:"Illegal expression. Wrap left hand side or entire exponentiation in parentheses.",UnexpectedUsingDeclaration:"Using declaration cannot appear in the top level when source type is `script`.",UnsupportedBind:"Binding should be performed on object property.",UnsupportedDecoratorExport:"A decorated export must export a class declaration.",UnsupportedDefaultExport:"Only expressions, functions or classes are allowed as the `default` export.",UnsupportedImport:"`import` can only be used in `import()` or `import.meta`.",UnsupportedMetaProperty:({target:n,onlyValidPropertyName:e})=>`The only valid meta property for ${n} is ${n}.${e}.`,UnsupportedParameterDecorator:"Decorators cannot be used to decorate parameters.",UnsupportedPropertyDecorator:"Decorators cannot be used to decorate object literal properties.",UnsupportedSuper:"'super' can only be used with function calls (i.e. super()) or in property accesses (i.e. super.prop or super[prop]).",UnterminatedComment:"Unterminated comment.",UnterminatedRegExp:"Unterminated regular expression.",UnterminatedString:"Unterminated string constant.",UnterminatedTemplate:"Unterminated template.",UsingDeclarationHasBindingPattern:"Using declaration cannot have destructuring patterns.",VarRedeclaration:({identifierName:n})=>`Identifier '${n}' has already been declared.`,YieldBindingIdentifier:"Can not use 'yield' as identifier inside a generator.",YieldInParameter:"Yield expression is not allowed in formal parameters.",ZeroDigitNumericSeparator:"Numeric separator can not be used after leading 0."},ZSe={StrictDelete:"Deleting local variable in strict mode.",StrictEvalArguments:({referenceName:n})=>`Assigning to '${n}' in strict mode.`,StrictEvalArgumentsBinding:({bindingName:n})=>`Binding '${n}' in strict mode.`,StrictFunction:"In strict mode code, functions can only be declared at top level or inside a block.",StrictNumericEscape:"The only valid numeric escape in strict mode is '\\0'.",StrictOctalLiteral:"Legacy octal literals are not allowed in strict mode.",StrictWith:"'with' in strict mode."};const XSe=new Set(["ArrowFunctionExpression","AssignmentExpression","ConditionalExpression","YieldExpression"]);var QSe={PipeBodyIsTighter:"Unexpected yield after pipeline body; any yield expression acting as Hack-style pipe body must be parenthesized due to its loose operator precedence.",PipeTopicRequiresHackPipes:'Topic reference is used, but the pipelineOperator plugin was not passed a "proposal": "hack" or "smart" option.',PipeTopicUnbound:"Topic reference is unbound; it must be inside a pipe body.",PipeTopicUnconfiguredToken:({token:n})=>`Invalid topic token ${n}. In order to use ${n} as a topic reference, the pipelineOperator plugin must be configured with { "proposal": "hack", "topicToken": "${n}" }.`,PipeTopicUnused:"Hack-style pipe body does not contain a topic reference; Hack-style pipes must use topic at least once.",PipeUnparenthesizedBody:({type:n})=>`Hack-style pipe body cannot be an unparenthesized ${ET({type:n})}; please wrap it in parentheses.`,PipelineBodyNoArrow:'Unexpected arrow "=>" after pipeline body; arrow function in pipeline body must be parenthesized.',PipelineBodySequenceExpression:"Pipeline body may not be a comma-separated sequence expression.",PipelineHeadSequenceExpression:"Pipeline head should not be a comma-separated sequence expression.",PipelineTopicUnused:"Pipeline is in topic style but does not use topic reference.",PrimaryTopicNotAllowed:"Topic reference was used in a lexical context without topic binding.",PrimaryTopicRequiresSmartPipeline:'Topic reference is used, but the pipelineOperator plugin was not passed a "proposal": "hack" or "smart" option.'};const JSe=["toMessage"],eke=["message"];function uZ(n,e,t){Object.defineProperty(n,e,{enumerable:!1,configurable:!0,value:t})}function tke(n){let{toMessage:e}=n,t=jN(n,JSe);return function i({loc:s,details:r}){const o=new SyntaxError;return Object.assign(o,t,{loc:s,pos:s.index}),"missingPlugin"in r&&Object.assign(o,{missingPlugin:r.missingPlugin}),uZ(o,"clone",function(l={}){var c;const{line:u,column:h,index:d}=(c=l.loc)!=null?c:s;return i({loc:new gp(u,h,d),details:Object.assign({},r,l.details)})}),uZ(o,"details",r),Object.defineProperty(o,"message",{configurable:!0,get(){const a=`${e(r)} (${s.line}:${s.column})`;return this.message=a,a},set(a){Object.defineProperty(this,"message",{value:a,writable:!0})}}),o}}function pf(n,e){if(Array.isArray(n))return i=>pf(i,n[0]);const t={};for(const i of Object.keys(n)){const s=n[i],r=typeof s=="string"?{message:()=>s}:typeof s=="function"?{message:s}:s,{message:o}=r,a=jN(r,eke),l=typeof o=="string"?()=>o:o;t[i]=tke(Object.assign({code:"BABEL_PARSER_SYNTAX_ERROR",reasonCode:i,toMessage:l},e?{syntaxPlugin:e}:{},a))}return t}const _e=Object.assign({},pf(GSe),pf(YSe),pf(ZSe),pf`pipelineOperator`(QSe)),{defineProperty:ike}=Object,hZ=(n,e)=>ike(n,e,{enumerable:!1,value:n[e]});function iw(n){return n.loc.start&&hZ(n.loc.start,"index"),n.loc.end&&hZ(n.loc.end,"index"),n}var nke=n=>class extends n{parse(){const t=iw(super.parse());return this.options.tokens&&(t.tokens=t.tokens.map(iw)),t}parseRegExpLiteral({pattern:t,flags:i}){let s=null;try{s=new RegExp(t,i)}catch{}const r=this.estreeParseLiteral(s);return r.regex={pattern:t,flags:i},r}parseBigIntLiteral(t){let i;try{i=BigInt(t)}catch{i=null}const s=this.estreeParseLiteral(i);return s.bigint=String(s.value||t),s}parseDecimalLiteral(t){const s=this.estreeParseLiteral(null);return s.decimal=String(s.value||t),s}estreeParseLiteral(t){return this.parseLiteral(t,"Literal")}parseStringLiteral(t){return this.estreeParseLiteral(t)}parseNumericLiteral(t){return this.estreeParseLiteral(t)}parseNullLiteral(){return this.estreeParseLiteral(null)}parseBooleanLiteral(t){return this.estreeParseLiteral(t)}directiveToStmt(t){const i=t.value;delete t.value,i.type="Literal",i.raw=i.extra.raw,i.value=i.extra.expressionValue;const s=t;return s.type="ExpressionStatement",s.expression=i,s.directive=i.extra.rawValue,delete i.extra,s}initFunction(t,i){super.initFunction(t,i),t.expression=!1}checkDeclaration(t){t!=null&&this.isObjectProperty(t)?this.checkDeclaration(t.value):super.checkDeclaration(t)}getObjectOrClassMethodParams(t){return t.value.params}isValidDirective(t){var i;return t.type==="ExpressionStatement"&&t.expression.type==="Literal"&&typeof t.expression.value=="string"&&!((i=t.expression.extra)!=null&&i.parenthesized)}parseBlockBody(t,i,s,r,o){super.parseBlockBody(t,i,s,r,o);const a=t.directives.map(l=>this.directiveToStmt(l));t.body=a.concat(t.body),delete t.directives}pushClassMethod(t,i,s,r,o,a){this.parseMethod(i,s,r,o,a,"ClassMethod",!0),i.typeParameters&&(i.value.typeParameters=i.typeParameters,delete i.typeParameters),t.body.push(i)}parsePrivateName(){const t=super.parsePrivateName();return this.getPluginOption("estree","classFeatures")?this.convertPrivateNameToPrivateIdentifier(t):t}convertPrivateNameToPrivateIdentifier(t){const i=super.getPrivateNameSV(t);return t=t,delete t.id,t.name=i,t.type="PrivateIdentifier",t}isPrivateName(t){return this.getPluginOption("estree","classFeatures")?t.type==="PrivateIdentifier":super.isPrivateName(t)}getPrivateNameSV(t){return this.getPluginOption("estree","classFeatures")?t.name:super.getPrivateNameSV(t)}parseLiteral(t,i){const s=super.parseLiteral(t,i);return s.raw=s.extra.raw,delete s.extra,s}parseFunctionBody(t,i,s=!1){super.parseFunctionBody(t,i,s),t.expression=t.body.type!=="BlockStatement"}parseMethod(t,i,s,r,o,a,l=!1){let c=this.startNode();return c.kind=t.kind,c=super.parseMethod(c,i,s,r,o,a,l),c.type="FunctionExpression",delete c.kind,t.value=c,a==="ClassPrivateMethod"&&(t.computed=!1),this.finishNode(t,"MethodDefinition")}parseClassProperty(...t){const i=super.parseClassProperty(...t);return this.getPluginOption("estree","classFeatures")&&(i.type="PropertyDefinition"),i}parseClassPrivateProperty(...t){const i=super.parseClassPrivateProperty(...t);return this.getPluginOption("estree","classFeatures")&&(i.type="PropertyDefinition",i.computed=!1),i}parseObjectMethod(t,i,s,r,o){const a=super.parseObjectMethod(t,i,s,r,o);return a&&(a.type="Property",a.kind==="method"&&(a.kind="init"),a.shorthand=!1),a}parseObjectProperty(t,i,s,r){const o=super.parseObjectProperty(t,i,s,r);return o&&(o.kind="init",o.type="Property"),o}isValidLVal(t,i,s){return t==="Property"?"value":super.isValidLVal(t,i,s)}isAssignable(t,i){return t!=null&&this.isObjectProperty(t)?this.isAssignable(t.value,i):super.isAssignable(t,i)}toAssignable(t,i=!1){if(t!=null&&this.isObjectProperty(t)){const{key:s,value:r}=t;this.isPrivateName(s)&&this.classScope.usePrivateName(this.getPrivateNameSV(s),s.loc.start),this.toAssignable(r,i)}else super.toAssignable(t,i)}toAssignableObjectExpressionProp(t,i,s){t.kind==="get"||t.kind==="set"?this.raise(_e.PatternHasAccessor,{at:t.key}):t.method?this.raise(_e.PatternHasMethod,{at:t.key}):super.toAssignableObjectExpressionProp(t,i,s)}finishCallExpression(t,i){const s=super.finishCallExpression(t,i);if(s.callee.type==="Import"){if(s.type="ImportExpression",s.source=s.arguments[0],this.hasPlugin("importAttributes")||this.hasPlugin("importAssertions")){var r,o;s.options=(r=s.arguments[1])!=null?r:null,s.attributes=(o=s.arguments[1])!=null?o:null}delete s.arguments,delete s.callee}return s}toReferencedArguments(t){t.type!=="ImportExpression"&&super.toReferencedArguments(t)}parseExport(t,i){const s=this.state.lastTokStartLoc,r=super.parseExport(t,i);switch(r.type){case"ExportAllDeclaration":r.exported=null;break;case"ExportNamedDeclaration":r.specifiers.length===1&&r.specifiers[0].type==="ExportNamespaceSpecifier"&&(r.type="ExportAllDeclaration",r.exported=r.specifiers[0].exported,delete r.specifiers);case"ExportDefaultDeclaration":{var o;const{declaration:a}=r;(a==null?void 0:a.type)==="ClassDeclaration"&&((o=a.decorators)==null?void 0:o.length)>0&&a.start===r.start&&this.resetStartLocation(r,s)}break}return r}parseSubscript(t,i,s,r){const o=super.parseSubscript(t,i,s,r);if(r.optionalChainMember){if((o.type==="OptionalMemberExpression"||o.type==="OptionalCallExpression")&&(o.type=o.type.substring(8)),r.stop){const a=this.startNodeAtNode(o);return a.expression=o,this.finishNode(a,"ChainExpression")}}else(o.type==="MemberExpression"||o.type==="CallExpression")&&(o.optional=!1);return o}isOptionalMemberExpression(t){return t.type==="ChainExpression"?t.expression.type==="MemberExpression":super.isOptionalMemberExpression(t)}hasPropertyAsPrivateName(t){return t.type==="ChainExpression"&&(t=t.expression),super.hasPropertyAsPrivateName(t)}isObjectProperty(t){return t.type==="Property"&&t.kind==="init"&&!t.method}isObjectMethod(t){return t.method||t.kind==="get"||t.kind==="set"}finishNodeAt(t,i,s){return iw(super.finishNodeAt(t,i,s))}resetStartLocation(t,i){super.resetStartLocation(t,i),iw(t)}resetEndLocation(t,i=this.state.lastTokEndLoc){super.resetEndLocation(t,i),iw(t)}};class rS{constructor(e,t){this.token=void 0,this.preserveSpace=void 0,this.token=e,this.preserveSpace=!!t}}const Nn={brace:new rS("{"),j_oTag:new rS("<tag"),j_cTag:new rS("</tag"),j_expr:new rS("<tag>...</tag>",!0)};Nn.template=new rS("`",!0);const xi=!0,ot=!0,x4=!0,nw=!0,vg=!0,ske=!0;class Mae{constructor(e,t={}){this.label=void 0,this.keyword=void 0,this.beforeExpr=void 0,this.startsExpr=void 0,this.rightAssociative=void 0,this.isLoop=void 0,this.isAssign=void 0,this.prefix=void 0,this.postfix=void 0,this.binop=void 0,this.label=e,this.keyword=t.keyword,this.beforeExpr=!!t.beforeExpr,this.startsExpr=!!t.startsExpr,this.rightAssociative=!!t.rightAssociative,this.isLoop=!!t.isLoop,this.isAssign=!!t.isAssign,this.prefix=!!t.prefix,this.postfix=!!t.postfix,this.binop=t.binop!=null?t.binop:null,this.updateContext=null}}const j$=new Map;function Vi(n,e={}){e.keyword=n;const t=Rt(n,e);return j$.set(n,t),t}function Vo(n,e){return Rt(n,{beforeExpr:xi,binop:e})}let FS=-1;const Jd=[],q$=[],K$=[],G$=[],Y$=[],Z$=[];function Rt(n,e={}){var t,i,s,r;return++FS,q$.push(n),K$.push((t=e.binop)!=null?t:-1),G$.push((i=e.beforeExpr)!=null?i:!1),Y$.push((s=e.startsExpr)!=null?s:!1),Z$.push((r=e.prefix)!=null?r:!1),Jd.push(new Mae(n,e)),FS}function Li(n,e={}){var t,i,s,r;return++FS,j$.set(n,FS),q$.push(n),K$.push((t=e.binop)!=null?t:-1),G$.push((i=e.beforeExpr)!=null?i:!1),Y$.push((s=e.startsExpr)!=null?s:!1),Z$.push((r=e.prefix)!=null?r:!1),Jd.push(new Mae("name",e)),FS}const rke={bracketL:Rt("[",{beforeExpr:xi,startsExpr:ot}),bracketHashL:Rt("#[",{beforeExpr:xi,startsExpr:ot}),bracketBarL:Rt("[|",{beforeExpr:xi,startsExpr:ot}),bracketR:Rt("]"),bracketBarR:Rt("|]"),braceL:Rt("{",{beforeExpr:xi,startsExpr:ot}),braceBarL:Rt("{|",{beforeExpr:xi,startsExpr:ot}),braceHashL:Rt("#{",{beforeExpr:xi,startsExpr:ot}),braceR:Rt("}"),braceBarR:Rt("|}"),parenL:Rt("(",{beforeExpr:xi,startsExpr:ot}),parenR:Rt(")"),comma:Rt(",",{beforeExpr:xi}),semi:Rt(";",{beforeExpr:xi}),colon:Rt(":",{beforeExpr:xi}),doubleColon:Rt("::",{beforeExpr:xi}),dot:Rt("."),question:Rt("?",{beforeExpr:xi}),questionDot:Rt("?."),arrow:Rt("=>",{beforeExpr:xi}),template:Rt("template"),ellipsis:Rt("...",{beforeExpr:xi}),backQuote:Rt("`",{startsExpr:ot}),dollarBraceL:Rt("${",{beforeExpr:xi,startsExpr:ot}),templateTail:Rt("...`",{startsExpr:ot}),templateNonTail:Rt("...${",{beforeExpr:xi,startsExpr:ot}),at:Rt("@"),hash:Rt("#",{startsExpr:ot}),interpreterDirective:Rt("#!..."),eq:Rt("=",{beforeExpr:xi,isAssign:nw}),assign:Rt("_=",{beforeExpr:xi,isAssign:nw}),slashAssign:Rt("_=",{beforeExpr:xi,isAssign:nw}),xorAssign:Rt("_=",{beforeExpr:xi,isAssign:nw}),moduloAssign:Rt("_=",{beforeExpr:xi,isAssign:nw}),incDec:Rt("++/--",{prefix:vg,postfix:ske,startsExpr:ot}),bang:Rt("!",{beforeExpr:xi,prefix:vg,startsExpr:ot}),tilde:Rt("~",{beforeExpr:xi,prefix:vg,startsExpr:ot}),doubleCaret:Rt("^^",{startsExpr:ot}),doubleAt:Rt("@@",{startsExpr:ot}),pipeline:Vo("|>",0),nullishCoalescing:Vo("??",1),logicalOR:Vo("||",1),logicalAND:Vo("&&",2),bitwiseOR:Vo("|",3),bitwiseXOR:Vo("^",4),bitwiseAND:Vo("&",5),equality:Vo("==/!=/===/!==",6),lt:Vo("</>/<=/>=",7),gt:Vo("</>/<=/>=",7),relational:Vo("</>/<=/>=",7),bitShift:Vo("<</>>/>>>",8),bitShiftL:Vo("<</>>/>>>",8),bitShiftR:Vo("<</>>/>>>",8),plusMin:Rt("+/-",{beforeExpr:xi,binop:9,prefix:vg,startsExpr:ot}),modulo:Rt("%",{binop:10,startsExpr:ot}),star:Rt("*",{binop:10}),slash:Vo("/",10),exponent:Rt("**",{beforeExpr:xi,binop:11,rightAssociative:!0}),_in:Vi("in",{beforeExpr:xi,binop:7}),_instanceof:Vi("instanceof",{beforeExpr:xi,binop:7}),_break:Vi("break"),_case:Vi("case",{beforeExpr:xi}),_catch:Vi("catch"),_continue:Vi("continue"),_debugger:Vi("debugger"),_default:Vi("default",{beforeExpr:xi}),_else:Vi("else",{beforeExpr:xi}),_finally:Vi("finally"),_function:Vi("function",{startsExpr:ot}),_if:Vi("if"),_return:Vi("return",{beforeExpr:xi}),_switch:Vi("switch"),_throw:Vi("throw",{beforeExpr:xi,prefix:vg,startsExpr:ot}),_try:Vi("try"),_var:Vi("var"),_const:Vi("const"),_with:Vi("with"),_new:Vi("new",{beforeExpr:xi,startsExpr:ot}),_this:Vi("this",{startsExpr:ot}),_super:Vi("super",{startsExpr:ot}),_class:Vi("class",{startsExpr:ot}),_extends:Vi("extends",{beforeExpr:xi}),_export:Vi("export"),_import:Vi("import",{startsExpr:ot}),_null:Vi("null",{startsExpr:ot}),_true:Vi("true",{startsExpr:ot}),_false:Vi("false",{startsExpr:ot}),_typeof:Vi("typeof",{beforeExpr:xi,prefix:vg,startsExpr:ot}),_void:Vi("void",{beforeExpr:xi,prefix:vg,startsExpr:ot}),_delete:Vi("delete",{beforeExpr:xi,prefix:vg,startsExpr:ot}),_do:Vi("do",{isLoop:x4,beforeExpr:xi}),_for:Vi("for",{isLoop:x4}),_while:Vi("while",{isLoop:x4}),_as:Li("as",{startsExpr:ot}),_assert:Li("assert",{startsExpr:ot}),_async:Li("async",{startsExpr:ot}),_await:Li("await",{startsExpr:ot}),_defer:Li("defer",{startsExpr:ot}),_from:Li("from",{startsExpr:ot}),_get:Li("get",{startsExpr:ot}),_let:Li("let",{startsExpr:ot}),_meta:Li("meta",{startsExpr:ot}),_of:Li("of",{startsExpr:ot}),_sent:Li("sent",{startsExpr:ot}),_set:Li("set",{startsExpr:ot}),_source:Li("source",{startsExpr:ot}),_static:Li("static",{startsExpr:ot}),_using:Li("using",{startsExpr:ot}),_yield:Li("yield",{startsExpr:ot}),_asserts:Li("asserts",{startsExpr:ot}),_checks:Li("checks",{startsExpr:ot}),_exports:Li("exports",{startsExpr:ot}),_global:Li("global",{startsExpr:ot}),_implements:Li("implements",{startsExpr:ot}),_intrinsic:Li("intrinsic",{startsExpr:ot}),_infer:Li("infer",{startsExpr:ot}),_is:Li("is",{startsExpr:ot}),_mixins:Li("mixins",{startsExpr:ot}),_proto:Li("proto",{startsExpr:ot}),_require:Li("require",{startsExpr:ot}),_satisfies:Li("satisfies",{startsExpr:ot}),_keyof:Li("keyof",{startsExpr:ot}),_readonly:Li("readonly",{startsExpr:ot}),_unique:Li("unique",{startsExpr:ot}),_abstract:Li("abstract",{startsExpr:ot}),_declare:Li("declare",{startsExpr:ot}),_enum:Li("enum",{startsExpr:ot}),_module:Li("module",{startsExpr:ot}),_namespace:Li("namespace",{startsExpr:ot}),_interface:Li("interface",{startsExpr:ot}),_type:Li("type",{startsExpr:ot}),_opaque:Li("opaque",{startsExpr:ot}),name:Rt("name",{startsExpr:ot}),string:Rt("string",{startsExpr:ot}),num:Rt("num",{startsExpr:ot}),bigint:Rt("bigint",{startsExpr:ot}),decimal:Rt("decimal",{startsExpr:ot}),regexp:Rt("regexp",{startsExpr:ot}),privateName:Rt("#name",{startsExpr:ot}),eof:Rt("eof"),jsxName:Rt("jsxName"),jsxText:Rt("jsxText",{beforeExpr:!0}),jsxTagStart:Rt("jsxTagStart",{startsExpr:!0}),jsxTagEnd:Rt("jsxTagEnd"),placeholder:Rt("%%",{startsExpr:!0})};function on(n){return n>=93&&n<=132}function oke(n){return n<=92}function fu(n){return n>=58&&n<=132}function Oae(n){return n>=58&&n<=136}function ake(n){return G$[n]}function J6(n){return Y$[n]}function lke(n){return n>=29&&n<=33}function dZ(n){return n>=129&&n<=131}function cke(n){return n>=90&&n<=92}function X$(n){return n>=58&&n<=92}function uke(n){return n>=39&&n<=59}function hke(n){return n===34}function dke(n){return Z$[n]}function fke(n){return n>=121&&n<=123}function gke(n){return n>=124&&n<=130}function pp(n){return q$[n]}function DT(n){return K$[n]}function pke(n){return n===57}function KN(n){return n>=24&&n<=25}function Ud(n){return Jd[n]}Jd[8].updateContext=n=>{n.pop()},Jd[5].updateContext=Jd[7].updateContext=Jd[23].updateContext=n=>{n.push(Nn.brace)},Jd[22].updateContext=n=>{n[n.length-1]===Nn.template?n.pop():n.push(Nn.template)},Jd[142].updateContext=n=>{n.push(Nn.j_expr,Nn.j_oTag)};let Q$="ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԯԱ-Ֆՙՠ-ֈא-תׯ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࡠ-ࡪࡰ-ࢇࢉ-ࢎࢠ-ࣉऄ-हऽॐक़-ॡॱ-ঀঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱৼਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡૹଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-హఽౘ-ౚౝౠౡಀಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೝೞೠೡೱೲഄ-ഌഎ-ഐഒ-ഺഽൎൔ-ൖൟ-ൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄຆ-ຊຌ-ຣລວ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏽᏸ-ᏽᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛸᜀ-ᜑᜟ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡸᢀ-ᢨᢪᢰ-ᣵᤀ-ᤞᥐ-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭌᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᲀ-ᲈᲐ-ᲺᲽ-Ჿᳩ-ᳬᳮ-ᳳᳵᳶᳺᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕ℘-ℝℤΩℨK-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞ々-〇〡-〩〱-〵〸-〼ぁ-ゖ゛-ゟァ-ヺー-ヿㄅ-ㄯㄱ-ㆎㆠ-ㆿㇰ-ㇿ㐀-䶿一-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚝꚠ-ꛯꜗ-ꜟꜢ-ꞈꞋ-ꟊꟐꟑꟓꟕ-ꟙꟲ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꣽꣾꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꧠ-ꧤꧦ-ꧯꧺ-ꧾꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꩾ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꬰ-ꭚꭜ-ꭩꭰ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ",Fae="‌‍·̀-ͯ·҃-֑҇-ׇֽֿׁׂׅׄؐ-ًؚ-٩ٰۖ-ۜ۟-۪ۤۧۨ-ۭ۰-۹ܑܰ-݊ަ-ް߀-߉߫-߽߳ࠖ-࠙ࠛ-ࠣࠥ-ࠧࠩ-࡙࠭-࡛࢘-࢟࣊-ࣣ࣡-ःऺ-़ा-ॏ॑-ॗॢॣ०-९ঁ-ঃ়া-ৄেৈো-্ৗৢৣ০-৯৾ਁ-ਃ਼ਾ-ੂੇੈੋ-੍ੑ੦-ੱੵઁ-ઃ઼ા-ૅે-ૉો-્ૢૣ૦-૯ૺ-૿ଁ-ଃ଼ା-ୄେୈୋ-୍୕-ୗୢୣ୦-୯ஂா-ூெ-ைொ-்ௗ௦-௯ఀ-ఄ఼ా-ౄె-ైొ-్ౕౖౢౣ౦-౯ಁ-ಃ಼ಾ-ೄೆ-ೈೊ-್ೕೖೢೣ೦-೯ೳഀ-ഃ഻഼ാ-ൄെ-ൈൊ-്ൗൢൣ൦-൯ඁ-ඃ්ා-ුූෘ-ෟ෦-෯ෲෳัิ-ฺ็-๎๐-๙ັິ-ຼ່-໎໐-໙༘༙༠-༩༹༵༷༾༿ཱ-྄྆྇ྍ-ྗྙ-ྼ࿆ါ-ှ၀-၉ၖ-ၙၞ-ၠၢ-ၤၧ-ၭၱ-ၴႂ-ႍႏ-ႝ፝-፟፩-፱ᜒ-᜕ᜲ-᜴ᝒᝓᝲᝳ឴-៓៝០-៩᠋-᠍᠏-᠙ᢩᤠ-ᤫᤰ-᤻᥆-᥏᧐-᧚ᨗ-ᨛᩕ-ᩞ᩠-᩿᩼-᪉᪐-᪙᪰-᪽ᪿ-ᫎᬀ-ᬄ᬴-᭄᭐-᭙᭫-᭳ᮀ-ᮂᮡ-ᮭ᮰-᮹᯦-᯳ᰤ-᰷᱀-᱉᱐-᱙᳐-᳔᳒-᳨᳭᳴᳷-᳹᷀-᷿‌‍‿⁀⁔⃐-⃥⃜⃡-⃰⳯-⵿⳱ⷠ-〪ⷿ-゙゚〯・꘠-꘩꙯ꙴ-꙽ꚞꚟ꛰꛱ꠂ꠆ꠋꠣ-ꠧ꠬ꢀꢁꢴ-ꣅ꣐-꣙꣠-꣱ꣿ-꤉ꤦ-꤭ꥇ-꥓ꦀ-ꦃ꦳-꧀꧐-꧙ꧥ꧰-꧹ꨩ-ꨶꩃꩌꩍ꩐-꩙ꩻ-ꩽꪰꪲ-ꪴꪷꪸꪾ꪿꫁ꫫ-ꫯꫵ꫶ꯣ-ꯪ꯬꯭꯰-꯹ﬞ︀-️︠-︯︳︴﹍-﹏0-9_・";const mke=new RegExp("["+Q$+"]"),_ke=new RegExp("["+Q$+Fae+"]");Q$=Fae=null;const Bae=[0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,14,29,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,13,10,2,14,2,6,2,1,2,10,2,14,2,6,2,1,68,310,10,21,11,7,25,5,2,41,2,8,70,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,71,55,7,1,65,0,16,3,2,2,2,28,43,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,14,35,349,41,7,1,79,28,11,0,9,21,43,17,47,20,28,22,13,52,58,1,3,0,14,44,33,24,27,35,30,0,3,0,9,34,4,0,13,47,15,3,22,0,2,0,36,17,2,24,20,1,64,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,19,0,13,4,159,52,19,3,21,2,31,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,14,0,72,26,38,6,186,43,117,63,32,7,3,0,3,7,2,1,2,23,16,0,2,0,95,7,3,38,17,0,2,0,29,0,11,39,8,0,22,0,12,45,20,0,19,72,264,8,2,36,18,0,50,29,113,6,2,1,2,37,22,0,26,5,2,1,2,31,15,0,328,18,16,0,2,12,2,33,125,0,80,921,103,110,18,195,2637,96,16,1071,18,5,4026,582,8634,568,8,30,18,78,18,29,19,47,17,3,32,20,6,18,689,63,129,74,6,0,67,12,65,1,2,0,29,6135,9,1237,43,8,8936,3,2,6,2,1,2,290,16,0,30,2,3,0,15,3,9,395,2309,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,1845,30,7,5,262,61,147,44,11,6,17,0,322,29,19,43,485,27,757,6,2,3,2,1,2,14,2,196,60,67,8,0,1205,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42719,33,4153,7,221,3,5761,15,7472,16,621,2467,541,1507,4938,6,4191],vke=[509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,574,3,9,9,370,1,81,2,71,10,50,3,123,2,54,14,32,10,3,1,11,3,46,10,8,0,46,9,7,2,37,13,2,9,6,1,45,0,13,2,49,13,9,3,2,11,83,11,7,0,3,0,158,11,6,9,7,3,56,1,2,6,3,1,3,2,10,0,11,1,3,6,4,4,193,17,10,9,5,0,82,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,84,14,5,9,243,14,166,9,71,5,2,1,3,3,2,0,2,1,13,9,120,6,3,6,4,0,29,9,41,6,2,3,9,0,10,10,47,15,406,7,2,7,17,9,57,21,2,13,123,5,4,0,2,1,2,6,2,0,9,9,49,4,2,1,2,4,9,9,330,3,10,1,2,0,49,6,4,4,14,9,5351,0,7,14,13835,9,87,9,39,4,60,6,26,9,1014,0,2,54,8,3,82,0,12,1,19628,1,4706,45,3,22,543,4,4,5,9,7,3,6,31,3,149,2,1418,49,513,54,5,49,9,0,15,0,23,4,2,14,1361,6,2,16,3,6,2,1,2,4,101,0,161,6,10,9,357,0,62,13,499,13,983,6,110,6,6,9,4759,9,787719,239];function eB(n,e){let t=65536;for(let i=0,s=e.length;i<s;i+=2){if(t+=e[i],t>n)return!1;if(t+=e[i+1],t>=n)return!0}return!1}function af(n){return n<65?n===36:n<=90?!0:n<97?n===95:n<=122?!0:n<=65535?n>=170&&mke.test(String.fromCharCode(n)):eB(n,Bae)}function cb(n){return n<48?n===36:n<58?!0:n<65?!1:n<=90?!0:n<97?n===95:n<=122?!0:n<=65535?n>=170&&_ke.test(String.fromCharCode(n)):eB(n,Bae)||eB(n,vke)}const J$={keyword:["break","case","catch","continue","debugger","default","do","else","finally","for","function","if","return","switch","throw","try","var","const","while","with","new","this","super","class","extends","export","import","null","true","false","in","instanceof","typeof","void","delete"],strict:["implements","interface","let","package","private","protected","public","static","yield"],strictBind:["eval","arguments"]},bke=new Set(J$.keyword),yke=new Set(J$.strict),Cke=new Set(J$.strictBind);function Wae(n,e){return e&&n==="await"||n==="enum"}function Vae(n,e){return Wae(n,e)||yke.has(n)}function Hae(n){return Cke.has(n)}function $ae(n,e){return Vae(n,e)||Hae(n)}function wke(n){return bke.has(n)}function Ske(n,e,t){return n===64&&e===64&&af(t)}const kke=new Set(["break","case","catch","continue","debugger","default","do","else","finally","for","function","if","return","switch","throw","try","var","const","while","with","new","this","super","class","extends","export","import","null","true","false","in","instanceof","typeof","void","delete","implements","interface","let","package","private","protected","public","static","yield","eval","arguments","enum","await"]);function Lke(n){return kke.has(n)}let ez=class{constructor(e){this.var=new Set,this.lexical=new Set,this.functions=new Set,this.flags=e}};class tz{constructor(e,t){this.parser=void 0,this.scopeStack=[],this.inModule=void 0,this.undefinedExports=new Map,this.parser=e,this.inModule=t}get inTopLevel(){return(this.currentScope().flags&1)>0}get inFunction(){return(this.currentVarScopeFlags()&2)>0}get allowSuper(){return(this.currentThisScopeFlags()&16)>0}get allowDirectSuper(){return(this.currentThisScopeFlags()&32)>0}get inClass(){return(this.currentThisScopeFlags()&64)>0}get inClassAndNotInNonArrowFunction(){const e=this.currentThisScopeFlags();return(e&64)>0&&(e&2)===0}get inStaticBlock(){for(let e=this.scopeStack.length-1;;e--){const{flags:t}=this.scopeStack[e];if(t&128)return!0;if(t&451)return!1}}get inNonArrowFunction(){return(this.currentThisScopeFlags()&2)>0}get treatFunctionsAsVar(){return this.treatFunctionsAsVarInScope(this.currentScope())}createScope(e){return new ez(e)}enter(e){this.scopeStack.push(this.createScope(e))}exit(){return this.scopeStack.pop().flags}treatFunctionsAsVarInScope(e){return!!(e.flags&130||!this.parser.inModule&&e.flags&1)}declareName(e,t,i){let s=this.currentScope();if(t&8||t&16)this.checkRedeclarationInScope(s,e,t,i),t&16?s.functions.add(e):s.lexical.add(e),t&8&&this.maybeExportDefined(s,e);else if(t&4)for(let r=this.scopeStack.length-1;r>=0&&(s=this.scopeStack[r],this.checkRedeclarationInScope(s,e,t,i),s.var.add(e),this.maybeExportDefined(s,e),!(s.flags&387));--r);this.parser.inModule&&s.flags&1&&this.undefinedExports.delete(e)}maybeExportDefined(e,t){this.parser.inModule&&e.flags&1&&this.undefinedExports.delete(t)}checkRedeclarationInScope(e,t,i,s){this.isRedeclaredInScope(e,t,i)&&this.parser.raise(_e.VarRedeclaration,{at:s,identifierName:t})}isRedeclaredInScope(e,t,i){return i&1?i&8?e.lexical.has(t)||e.functions.has(t)||e.var.has(t):i&16?e.lexical.has(t)||!this.treatFunctionsAsVarInScope(e)&&e.var.has(t):e.lexical.has(t)&&!(e.flags&8&&e.lexical.values().next().value===t)||!this.treatFunctionsAsVarInScope(e)&&e.functions.has(t):!1}checkLocalExport(e){const{name:t}=e,i=this.scopeStack[0];!i.lexical.has(t)&&!i.var.has(t)&&!i.functions.has(t)&&this.undefinedExports.set(t,e.loc.start)}currentScope(){return this.scopeStack[this.scopeStack.length-1]}currentVarScopeFlags(){for(let e=this.scopeStack.length-1;;e--){const{flags:t}=this.scopeStack[e];if(t&387)return t}}currentThisScopeFlags(){for(let e=this.scopeStack.length-1;;e--){const{flags:t}=this.scopeStack[e];if(t&451&&!(t&4))return t}}}class xke extends ez{constructor(...e){super(...e),this.declareFunctions=new Set}}class Eke extends tz{createScope(e){return new xke(e)}declareName(e,t,i){const s=this.currentScope();if(t&2048){this.checkRedeclarationInScope(s,e,t,i),this.maybeExportDefined(s,e),s.declareFunctions.add(e);return}super.declareName(e,t,i)}isRedeclaredInScope(e,t,i){return super.isRedeclaredInScope(e,t,i)?!0:i&2048?!e.declareFunctions.has(t)&&(e.lexical.has(t)||e.functions.has(t)):!1}checkLocalExport(e){this.scopeStack[0].declareFunctions.has(e.name)||super.checkLocalExport(e)}}class Dke{constructor(){this.sawUnambiguousESM=!1,this.ambiguousScriptDifferentAst=!1}hasPlugin(e){if(typeof e=="string")return this.plugins.has(e);{const[t,i]=e;if(!this.hasPlugin(t))return!1;const s=this.plugins.get(t);for(const r of Object.keys(i))if((s==null?void 0:s[r])!==i[r])return!1;return!0}}getPluginOption(e,t){var i;return(i=this.plugins.get(e))==null?void 0:i[t]}}function zae(n,e){n.trailingComments===void 0?n.trailingComments=e:n.trailingComments.unshift(...e)}function Ike(n,e){n.leadingComments===void 0?n.leadingComments=e:n.leadingComments.unshift(...e)}function Hk(n,e){n.innerComments===void 0?n.innerComments=e:n.innerComments.unshift(...e)}function sw(n,e,t){let i=null,s=e.length;for(;i===null&&s>0;)i=e[--s];i===null||i.start>t.start?Hk(n,t.comments):zae(i,t.comments)}class Tke extends Dke{addComment(e){this.filename&&(e.loc.filename=this.filename),this.state.comments.push(e)}processComment(e){const{commentStack:t}=this.state,i=t.length;if(i===0)return;let s=i-1;const r=t[s];r.start===e.end&&(r.leadingNode=e,s--);const{start:o}=e;for(;s>=0;s--){const a=t[s],l=a.end;if(l>o)a.containingNode=e,this.finalizeComment(a),t.splice(s,1);else{l===o&&(a.trailingNode=e);break}}}finalizeComment(e){const{comments:t}=e;if(e.leadingNode!==null||e.trailingNode!==null)e.leadingNode!==null&&zae(e.leadingNode,t),e.trailingNode!==null&&Ike(e.trailingNode,t);else{const{containingNode:i,start:s}=e;if(this.input.charCodeAt(s-1)===44)switch(i.type){case"ObjectExpression":case"ObjectPattern":case"RecordExpression":sw(i,i.properties,e);break;case"CallExpression":case"OptionalCallExpression":sw(i,i.arguments,e);break;case"FunctionDeclaration":case"FunctionExpression":case"ArrowFunctionExpression":case"ObjectMethod":case"ClassMethod":case"ClassPrivateMethod":sw(i,i.params,e);break;case"ArrayExpression":case"ArrayPattern":case"TupleExpression":sw(i,i.elements,e);break;case"ExportNamedDeclaration":case"ImportDeclaration":sw(i,i.specifiers,e);break;default:Hk(i,t)}else Hk(i,t)}}finalizeRemainingComments(){const{commentStack:e}=this.state;for(let t=e.length-1;t>=0;t--)this.finalizeComment(e[t]);this.state.commentStack=[]}resetPreviousNodeTrailingComments(e){const{commentStack:t}=this.state,{length:i}=t;if(i===0)return;const s=t[i-1];s.leadingNode===e&&(s.leadingNode=null)}resetPreviousIdentifierLeadingComments(e){const{commentStack:t}=this.state,{length:i}=t;i!==0&&(t[i-1].trailingNode===e?t[i-1].trailingNode=null:i>=2&&t[i-2].trailingNode===e&&(t[i-2].trailingNode=null))}takeSurroundingComments(e,t,i){const{commentStack:s}=this.state,r=s.length;if(r===0)return;let o=r-1;for(;o>=0;o--){const a=s[o],l=a.end;if(a.start===i)a.leadingNode=e;else if(l===t)a.trailingNode=e;else if(l<t)break}}}const Uae=/\r\n?|[\n\u2028\u2029]/,CD=new RegExp(Uae.source,"g");function BS(n){switch(n){case 10:case 13:case 8232:case 8233:return!0;default:return!1}}const E4=/(?:\s|\/\/.*|\/\*[^]*?\*\/)*/g,IT=/(?:[^\S\n\r\u2028\u2029]|\/\/.*|\/\*.*?\*\/)*/g,fZ=new RegExp("(?=("+IT.source+"))\\1"+/(?=[\n\r\u2028\u2029]|\/\*(?!.*?\*\/)|$)/.source,"y");function Nke(n){switch(n){case 9:case 11:case 12:case 32:case 160:case 5760:case 8192:case 8193:case 8194:case 8195:case 8196:case 8197:case 8198:case 8199:case 8200:case 8201:case 8202:case 8239:case 8287:case 12288:case 65279:return!0;default:return!1}}let Ake=class jae{constructor(){this.strict=void 0,this.curLine=void 0,this.lineStart=void 0,this.startLoc=void 0,this.endLoc=void 0,this.errors=[],this.potentialArrowAt=-1,this.noArrowAt=[],this.noArrowParamsConversionAt=[],this.maybeInArrowParameters=!1,this.inType=!1,this.noAnonFunctionType=!1,this.hasFlowComment=!1,this.isAmbientContext=!1,this.inAbstractClass=!1,this.inDisallowConditionalTypesContext=!1,this.topicContext={maxNumOfResolvableTopics:0,maxTopicIndex:null},this.soloAwait=!1,this.inFSharpPipelineDirectBody=!1,this.labels=[],this.comments=[],this.commentStack=[],this.pos=0,this.type=139,this.value=null,this.start=0,this.end=0,this.lastTokEndLoc=null,this.lastTokStartLoc=null,this.lastTokStart=0,this.context=[Nn.brace],this.canStartJSXElement=!0,this.containsEsc=!1,this.firstInvalidTemplateEscapePos=null,this.strictErrors=new Map,this.tokensLength=0}init({strictMode:e,sourceType:t,startLine:i,startColumn:s}){this.strict=e===!1?!1:e===!0?!0:t==="module",this.curLine=i,this.lineStart=-s,this.startLoc=this.endLoc=new gp(i,s,0)}curPosition(){return new gp(this.curLine,this.pos-this.lineStart,this.pos)}clone(e){const t=new jae,i=Object.keys(this);for(let s=0,r=i.length;s<r;s++){const o=i[s];let a=this[o];!e&&Array.isArray(a)&&(a=a.slice()),t[o]=a}return t}};var Pke=function(e){return e>=48&&e<=57};const gZ={decBinOct:new Set([46,66,69,79,95,98,101,111]),hex:new Set([46,88,95,120])},wD={bin:n=>n===48||n===49,oct:n=>n>=48&&n<=55,dec:n=>n>=48&&n<=57,hex:n=>n>=48&&n<=57||n>=65&&n<=70||n>=97&&n<=102};function pZ(n,e,t,i,s,r){const o=t,a=i,l=s;let c="",u=null,h=t;const{length:d}=e;for(;;){if(t>=d){r.unterminated(o,a,l),c+=e.slice(h,t);break}const f=e.charCodeAt(t);if(Rke(n,f,e,t)){c+=e.slice(h,t);break}if(f===92){c+=e.slice(h,t);const g=Mke(e,t,i,s,n==="template",r);g.ch===null&&!u?u={pos:t,lineStart:i,curLine:s}:c+=g.ch,{pos:t,lineStart:i,curLine:s}=g,h=t}else f===8232||f===8233?(++t,++s,i=t):f===10||f===13?n==="template"?(c+=e.slice(h,t)+` +`,++t,f===13&&e.charCodeAt(t)===10&&++t,++s,h=i=t):r.unterminated(o,a,l):++t}return{pos:t,str:c,firstInvalidLoc:u,lineStart:i,curLine:s,containsInvalid:!!u}}function Rke(n,e,t,i){return n==="template"?e===96||e===36&&t.charCodeAt(i+1)===123:e===(n==="double"?34:39)}function Mke(n,e,t,i,s,r){const o=!s;e++;const a=c=>({pos:e,ch:c,lineStart:t,curLine:i}),l=n.charCodeAt(e++);switch(l){case 110:return a(` +`);case 114:return a("\r");case 120:{let c;return{code:c,pos:e}=tB(n,e,t,i,2,!1,o,r),a(c===null?null:String.fromCharCode(c))}case 117:{let c;return{code:c,pos:e}=Kae(n,e,t,i,o,r),a(c===null?null:String.fromCodePoint(c))}case 116:return a(" ");case 98:return a("\b");case 118:return a("\v");case 102:return a("\f");case 13:n.charCodeAt(e)===10&&++e;case 10:t=e,++i;case 8232:case 8233:return a("");case 56:case 57:if(s)return a(null);r.strictNumericEscape(e-1,t,i);default:if(l>=48&&l<=55){const c=e-1;let h=n.slice(c,e+2).match(/^[0-7]+/)[0],d=parseInt(h,8);d>255&&(h=h.slice(0,-1),d=parseInt(h,8)),e+=h.length-1;const f=n.charCodeAt(e);if(h!=="0"||f===56||f===57){if(s)return a(null);r.strictNumericEscape(c,t,i)}return a(String.fromCharCode(d))}return a(String.fromCharCode(l))}}function tB(n,e,t,i,s,r,o,a){const l=e;let c;return{n:c,pos:e}=qae(n,e,t,i,16,s,r,!1,a,!o),c===null&&(o?a.invalidEscapeSequence(l,t,i):e=l-1),{code:c,pos:e}}function qae(n,e,t,i,s,r,o,a,l,c){const u=e,h=s===16?gZ.hex:gZ.decBinOct,d=s===16?wD.hex:s===10?wD.dec:s===8?wD.oct:wD.bin;let f=!1,g=0;for(let p=0,m=r??1/0;p<m;++p){const _=n.charCodeAt(e);let b;if(_===95&&a!=="bail"){const y=n.charCodeAt(e-1),w=n.charCodeAt(e+1);if(a){if(Number.isNaN(w)||!d(w)||h.has(y)||h.has(w)){if(c)return{n:null,pos:e};l.unexpectedNumericSeparator(e,t,i)}}else{if(c)return{n:null,pos:e};l.numericSeparatorInEscapeSequence(e,t,i)}++e;continue}if(_>=97?b=_-97+10:_>=65?b=_-65+10:Pke(_)?b=_-48:b=1/0,b>=s){if(b<=9&&c)return{n:null,pos:e};if(b<=9&&l.invalidDigit(e,t,i,s))b=0;else if(o)b=0,f=!0;else break}++e,g=g*s+b}return e===u||r!=null&&e-u!==r||f?{n:null,pos:e}:{n:g,pos:e}}function Kae(n,e,t,i,s,r){const o=n.charCodeAt(e);let a;if(o===123){if(++e,{code:a,pos:e}=tB(n,e,t,i,n.indexOf("}",e)-e,!0,s,r),++e,a!==null&&a>1114111)if(s)r.invalidCodePoint(e,t,i);else return{code:null,pos:e}}else({code:a,pos:e}=tB(n,e,t,i,4,!1,s,r));return{code:a,pos:e}}const Oke=["at"],Fke=["at"];function rw(n,e,t){return new gp(t,n-e,n)}const Bke=new Set([103,109,115,105,121,117,100,118]);let Ig=class{constructor(e){this.type=e.type,this.value=e.value,this.start=e.start,this.end=e.end,this.loc=new qN(e.startLoc,e.endLoc)}};class Wke extends Tke{constructor(e,t){super(),this.isLookahead=void 0,this.tokens=[],this.errorHandlers_readInt={invalidDigit:(i,s,r,o)=>this.options.errorRecovery?(this.raise(_e.InvalidDigit,{at:rw(i,s,r),radix:o}),!0):!1,numericSeparatorInEscapeSequence:this.errorBuilder(_e.NumericSeparatorInEscapeSequence),unexpectedNumericSeparator:this.errorBuilder(_e.UnexpectedNumericSeparator)},this.errorHandlers_readCodePoint=Object.assign({},this.errorHandlers_readInt,{invalidEscapeSequence:this.errorBuilder(_e.InvalidEscapeSequence),invalidCodePoint:this.errorBuilder(_e.InvalidCodePoint)}),this.errorHandlers_readStringContents_string=Object.assign({},this.errorHandlers_readCodePoint,{strictNumericEscape:(i,s,r)=>{this.recordStrictModeErrors(_e.StrictNumericEscape,{at:rw(i,s,r)})},unterminated:(i,s,r)=>{throw this.raise(_e.UnterminatedString,{at:rw(i-1,s,r)})}}),this.errorHandlers_readStringContents_template=Object.assign({},this.errorHandlers_readCodePoint,{strictNumericEscape:this.errorBuilder(_e.StrictNumericEscape),unterminated:(i,s,r)=>{throw this.raise(_e.UnterminatedTemplate,{at:rw(i,s,r)})}}),this.state=new Ake,this.state.init(e),this.input=t,this.length=t.length,this.isLookahead=!1}pushToken(e){this.tokens.length=this.state.tokensLength,this.tokens.push(e),++this.state.tokensLength}next(){this.checkKeywordEscapes(),this.options.tokens&&this.pushToken(new Ig(this.state)),this.state.lastTokStart=this.state.start,this.state.lastTokEndLoc=this.state.endLoc,this.state.lastTokStartLoc=this.state.startLoc,this.nextToken()}eat(e){return this.match(e)?(this.next(),!0):!1}match(e){return this.state.type===e}createLookaheadState(e){return{pos:e.pos,value:null,type:e.type,start:e.start,end:e.end,context:[this.curContext()],inType:e.inType,startLoc:e.startLoc,lastTokEndLoc:e.lastTokEndLoc,curLine:e.curLine,lineStart:e.lineStart,curPosition:e.curPosition}}lookahead(){const e=this.state;this.state=this.createLookaheadState(e),this.isLookahead=!0,this.nextToken(),this.isLookahead=!1;const t=this.state;return this.state=e,t}nextTokenStart(){return this.nextTokenStartSince(this.state.pos)}nextTokenStartSince(e){return E4.lastIndex=e,E4.test(this.input)?E4.lastIndex:e}lookaheadCharCode(){return this.input.charCodeAt(this.nextTokenStart())}nextTokenInLineStart(){return this.nextTokenInLineStartSince(this.state.pos)}nextTokenInLineStartSince(e){return IT.lastIndex=e,IT.test(this.input)?IT.lastIndex:e}lookaheadInLineCharCode(){return this.input.charCodeAt(this.nextTokenInLineStart())}codePointAtPos(e){let t=this.input.charCodeAt(e);if((t&64512)===55296&&++e<this.input.length){const i=this.input.charCodeAt(e);(i&64512)===56320&&(t=65536+((t&1023)<<10)+(i&1023))}return t}setStrict(e){this.state.strict=e,e&&(this.state.strictErrors.forEach(([t,i])=>this.raise(t,{at:i})),this.state.strictErrors.clear())}curContext(){return this.state.context[this.state.context.length-1]}nextToken(){if(this.skipSpace(),this.state.start=this.state.pos,this.isLookahead||(this.state.startLoc=this.state.curPosition()),this.state.pos>=this.length){this.finishToken(139);return}this.getTokenFromCode(this.codePointAtPos(this.state.pos))}skipBlockComment(e){let t;this.isLookahead||(t=this.state.curPosition());const i=this.state.pos,s=this.input.indexOf(e,i+2);if(s===-1)throw this.raise(_e.UnterminatedComment,{at:this.state.curPosition()});for(this.state.pos=s+e.length,CD.lastIndex=i+2;CD.test(this.input)&&CD.lastIndex<=s;)++this.state.curLine,this.state.lineStart=CD.lastIndex;if(this.isLookahead)return;const r={type:"CommentBlock",value:this.input.slice(i+2,s),start:i,end:s+e.length,loc:new qN(t,this.state.curPosition())};return this.options.tokens&&this.pushToken(r),r}skipLineComment(e){const t=this.state.pos;let i;this.isLookahead||(i=this.state.curPosition());let s=this.input.charCodeAt(this.state.pos+=e);if(this.state.pos<this.length)for(;!BS(s)&&++this.state.pos<this.length;)s=this.input.charCodeAt(this.state.pos);if(this.isLookahead)return;const r=this.state.pos,a={type:"CommentLine",value:this.input.slice(t+e,r),start:t,end:r,loc:new qN(i,this.state.curPosition())};return this.options.tokens&&this.pushToken(a),a}skipSpace(){const e=this.state.pos,t=[];e:for(;this.state.pos<this.length;){const i=this.input.charCodeAt(this.state.pos);switch(i){case 32:case 160:case 9:++this.state.pos;break;case 13:this.input.charCodeAt(this.state.pos+1)===10&&++this.state.pos;case 10:case 8232:case 8233:++this.state.pos,++this.state.curLine,this.state.lineStart=this.state.pos;break;case 47:switch(this.input.charCodeAt(this.state.pos+1)){case 42:{const s=this.skipBlockComment("*/");s!==void 0&&(this.addComment(s),this.options.attachComment&&t.push(s));break}case 47:{const s=this.skipLineComment(2);s!==void 0&&(this.addComment(s),this.options.attachComment&&t.push(s));break}default:break e}break;default:if(Nke(i))++this.state.pos;else if(i===45&&!this.inModule&&this.options.annexB){const s=this.state.pos;if(this.input.charCodeAt(s+1)===45&&this.input.charCodeAt(s+2)===62&&(e===0||this.state.lineStart>e)){const r=this.skipLineComment(3);r!==void 0&&(this.addComment(r),this.options.attachComment&&t.push(r))}else break e}else if(i===60&&!this.inModule&&this.options.annexB){const s=this.state.pos;if(this.input.charCodeAt(s+1)===33&&this.input.charCodeAt(s+2)===45&&this.input.charCodeAt(s+3)===45){const r=this.skipLineComment(4);r!==void 0&&(this.addComment(r),this.options.attachComment&&t.push(r))}else break e}else break e}}if(t.length>0){const i=this.state.pos,s={start:e,end:i,comments:t,leadingNode:null,trailingNode:null,containingNode:null};this.state.commentStack.push(s)}}finishToken(e,t){this.state.end=this.state.pos,this.state.endLoc=this.state.curPosition();const i=this.state.type;this.state.type=e,this.state.value=t,this.isLookahead||this.updateContext(i)}replaceToken(e){this.state.type=e,this.updateContext()}readToken_numberSign(){if(this.state.pos===0&&this.readToken_interpreter())return;const e=this.state.pos+1,t=this.codePointAtPos(e);if(t>=48&&t<=57)throw this.raise(_e.UnexpectedDigitAfterHash,{at:this.state.curPosition()});if(t===123||t===91&&this.hasPlugin("recordAndTuple")){if(this.expectPlugin("recordAndTuple"),this.getPluginOption("recordAndTuple","syntaxType")==="bar")throw this.raise(t===123?_e.RecordExpressionHashIncorrectStartSyntaxType:_e.TupleExpressionHashIncorrectStartSyntaxType,{at:this.state.curPosition()});this.state.pos+=2,t===123?this.finishToken(7):this.finishToken(1)}else af(t)?(++this.state.pos,this.finishToken(138,this.readWord1(t))):t===92?(++this.state.pos,this.finishToken(138,this.readWord1())):this.finishOp(27,1)}readToken_dot(){const e=this.input.charCodeAt(this.state.pos+1);if(e>=48&&e<=57){this.readNumber(!0);return}e===46&&this.input.charCodeAt(this.state.pos+2)===46?(this.state.pos+=3,this.finishToken(21)):(++this.state.pos,this.finishToken(16))}readToken_slash(){this.input.charCodeAt(this.state.pos+1)===61?this.finishOp(31,2):this.finishOp(56,1)}readToken_interpreter(){if(this.state.pos!==0||this.length<2)return!1;let e=this.input.charCodeAt(this.state.pos+1);if(e!==33)return!1;const t=this.state.pos;for(this.state.pos+=1;!BS(e)&&++this.state.pos<this.length;)e=this.input.charCodeAt(this.state.pos);const i=this.input.slice(t+2,this.state.pos);return this.finishToken(28,i),!0}readToken_mult_modulo(e){let t=e===42?55:54,i=1,s=this.input.charCodeAt(this.state.pos+1);e===42&&s===42&&(i++,s=this.input.charCodeAt(this.state.pos+2),t=57),s===61&&!this.state.inType&&(i++,t=e===37?33:30),this.finishOp(t,i)}readToken_pipe_amp(e){const t=this.input.charCodeAt(this.state.pos+1);if(t===e){this.input.charCodeAt(this.state.pos+2)===61?this.finishOp(30,3):this.finishOp(e===124?41:42,2);return}if(e===124){if(t===62){this.finishOp(39,2);return}if(this.hasPlugin("recordAndTuple")&&t===125){if(this.getPluginOption("recordAndTuple","syntaxType")!=="bar")throw this.raise(_e.RecordExpressionBarIncorrectEndSyntaxType,{at:this.state.curPosition()});this.state.pos+=2,this.finishToken(9);return}if(this.hasPlugin("recordAndTuple")&&t===93){if(this.getPluginOption("recordAndTuple","syntaxType")!=="bar")throw this.raise(_e.TupleExpressionBarIncorrectEndSyntaxType,{at:this.state.curPosition()});this.state.pos+=2,this.finishToken(4);return}}if(t===61){this.finishOp(30,2);return}this.finishOp(e===124?43:45,1)}readToken_caret(){const e=this.input.charCodeAt(this.state.pos+1);e===61&&!this.state.inType?this.finishOp(32,2):e===94&&this.hasPlugin(["pipelineOperator",{proposal:"hack",topicToken:"^^"}])?(this.finishOp(37,2),this.input.codePointAt(this.state.pos)===94&&this.unexpected()):this.finishOp(44,1)}readToken_atSign(){this.input.charCodeAt(this.state.pos+1)===64&&this.hasPlugin(["pipelineOperator",{proposal:"hack",topicToken:"@@"}])?this.finishOp(38,2):this.finishOp(26,1)}readToken_plus_min(e){const t=this.input.charCodeAt(this.state.pos+1);if(t===e){this.finishOp(34,2);return}t===61?this.finishOp(30,2):this.finishOp(53,1)}readToken_lt(){const{pos:e}=this.state,t=this.input.charCodeAt(e+1);if(t===60){if(this.input.charCodeAt(e+2)===61){this.finishOp(30,3);return}this.finishOp(51,2);return}if(t===61){this.finishOp(49,2);return}this.finishOp(47,1)}readToken_gt(){const{pos:e}=this.state,t=this.input.charCodeAt(e+1);if(t===62){const i=this.input.charCodeAt(e+2)===62?3:2;if(this.input.charCodeAt(e+i)===61){this.finishOp(30,i+1);return}this.finishOp(52,i);return}if(t===61){this.finishOp(49,2);return}this.finishOp(48,1)}readToken_eq_excl(e){const t=this.input.charCodeAt(this.state.pos+1);if(t===61){this.finishOp(46,this.input.charCodeAt(this.state.pos+2)===61?3:2);return}if(e===61&&t===62){this.state.pos+=2,this.finishToken(19);return}this.finishOp(e===61?29:35,1)}readToken_question(){const e=this.input.charCodeAt(this.state.pos+1),t=this.input.charCodeAt(this.state.pos+2);e===63?t===61?this.finishOp(30,3):this.finishOp(40,2):e===46&&!(t>=48&&t<=57)?(this.state.pos+=2,this.finishToken(18)):(++this.state.pos,this.finishToken(17))}getTokenFromCode(e){switch(e){case 46:this.readToken_dot();return;case 40:++this.state.pos,this.finishToken(10);return;case 41:++this.state.pos,this.finishToken(11);return;case 59:++this.state.pos,this.finishToken(13);return;case 44:++this.state.pos,this.finishToken(12);return;case 91:if(this.hasPlugin("recordAndTuple")&&this.input.charCodeAt(this.state.pos+1)===124){if(this.getPluginOption("recordAndTuple","syntaxType")!=="bar")throw this.raise(_e.TupleExpressionBarIncorrectStartSyntaxType,{at:this.state.curPosition()});this.state.pos+=2,this.finishToken(2)}else++this.state.pos,this.finishToken(0);return;case 93:++this.state.pos,this.finishToken(3);return;case 123:if(this.hasPlugin("recordAndTuple")&&this.input.charCodeAt(this.state.pos+1)===124){if(this.getPluginOption("recordAndTuple","syntaxType")!=="bar")throw this.raise(_e.RecordExpressionBarIncorrectStartSyntaxType,{at:this.state.curPosition()});this.state.pos+=2,this.finishToken(6)}else++this.state.pos,this.finishToken(5);return;case 125:++this.state.pos,this.finishToken(8);return;case 58:this.hasPlugin("functionBind")&&this.input.charCodeAt(this.state.pos+1)===58?this.finishOp(15,2):(++this.state.pos,this.finishToken(14));return;case 63:this.readToken_question();return;case 96:this.readTemplateToken();return;case 48:{const t=this.input.charCodeAt(this.state.pos+1);if(t===120||t===88){this.readRadixNumber(16);return}if(t===111||t===79){this.readRadixNumber(8);return}if(t===98||t===66){this.readRadixNumber(2);return}}case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:this.readNumber(!1);return;case 34:case 39:this.readString(e);return;case 47:this.readToken_slash();return;case 37:case 42:this.readToken_mult_modulo(e);return;case 124:case 38:this.readToken_pipe_amp(e);return;case 94:this.readToken_caret();return;case 43:case 45:this.readToken_plus_min(e);return;case 60:this.readToken_lt();return;case 62:this.readToken_gt();return;case 61:case 33:this.readToken_eq_excl(e);return;case 126:this.finishOp(36,1);return;case 64:this.readToken_atSign();return;case 35:this.readToken_numberSign();return;case 92:this.readWord();return;default:if(af(e)){this.readWord(e);return}}throw this.raise(_e.InvalidOrUnexpectedToken,{at:this.state.curPosition(),unexpected:String.fromCodePoint(e)})}finishOp(e,t){const i=this.input.slice(this.state.pos,this.state.pos+t);this.state.pos+=t,this.finishToken(e,i)}readRegexp(){const e=this.state.startLoc,t=this.state.start+1;let i,s,{pos:r}=this.state;for(;;++r){if(r>=this.length)throw this.raise(_e.UnterminatedRegExp,{at:Yo(e,1)});const c=this.input.charCodeAt(r);if(BS(c))throw this.raise(_e.UnterminatedRegExp,{at:Yo(e,1)});if(i)i=!1;else{if(c===91)s=!0;else if(c===93&&s)s=!1;else if(c===47&&!s)break;i=c===92}}const o=this.input.slice(t,r);++r;let a="";const l=()=>Yo(e,r+2-t);for(;r<this.length;){const c=this.codePointAtPos(r),u=String.fromCharCode(c);if(Bke.has(c))c===118?a.includes("u")&&this.raise(_e.IncompatibleRegExpUVFlags,{at:l()}):c===117&&a.includes("v")&&this.raise(_e.IncompatibleRegExpUVFlags,{at:l()}),a.includes(u)&&this.raise(_e.DuplicateRegExpFlags,{at:l()});else if(cb(c)||c===92)this.raise(_e.MalformedRegExpFlags,{at:l()});else break;++r,a+=u}this.state.pos=r,this.finishToken(137,{pattern:o,flags:a})}readInt(e,t,i=!1,s=!0){const{n:r,pos:o}=qae(this.input,this.state.pos,this.state.lineStart,this.state.curLine,e,t,i,s,this.errorHandlers_readInt,!1);return this.state.pos=o,r}readRadixNumber(e){const t=this.state.curPosition();let i=!1;this.state.pos+=2;const s=this.readInt(e);s==null&&this.raise(_e.InvalidDigit,{at:Yo(t,2),radix:e});const r=this.input.charCodeAt(this.state.pos);if(r===110)++this.state.pos,i=!0;else if(r===109)throw this.raise(_e.InvalidDecimal,{at:t});if(af(this.codePointAtPos(this.state.pos)))throw this.raise(_e.NumberIdentifier,{at:this.state.curPosition()});if(i){const o=this.input.slice(t.index,this.state.pos).replace(/[_n]/g,"");this.finishToken(135,o);return}this.finishToken(134,s)}readNumber(e){const t=this.state.pos,i=this.state.curPosition();let s=!1,r=!1,o=!1,a=!1,l=!1;!e&&this.readInt(10)===null&&this.raise(_e.InvalidNumber,{at:this.state.curPosition()});const c=this.state.pos-t>=2&&this.input.charCodeAt(t)===48;if(c){const f=this.input.slice(t,this.state.pos);if(this.recordStrictModeErrors(_e.StrictOctalLiteral,{at:i}),!this.state.strict){const g=f.indexOf("_");g>0&&this.raise(_e.ZeroDigitNumericSeparator,{at:Yo(i,g)})}l=c&&!/[89]/.test(f)}let u=this.input.charCodeAt(this.state.pos);if(u===46&&!l&&(++this.state.pos,this.readInt(10),s=!0,u=this.input.charCodeAt(this.state.pos)),(u===69||u===101)&&!l&&(u=this.input.charCodeAt(++this.state.pos),(u===43||u===45)&&++this.state.pos,this.readInt(10)===null&&this.raise(_e.InvalidOrMissingExponent,{at:i}),s=!0,a=!0,u=this.input.charCodeAt(this.state.pos)),u===110&&((s||c)&&this.raise(_e.InvalidBigIntLiteral,{at:i}),++this.state.pos,r=!0),u===109&&(this.expectPlugin("decimal",this.state.curPosition()),(a||c)&&this.raise(_e.InvalidDecimal,{at:i}),++this.state.pos,o=!0),af(this.codePointAtPos(this.state.pos)))throw this.raise(_e.NumberIdentifier,{at:this.state.curPosition()});const h=this.input.slice(t,this.state.pos).replace(/[_mn]/g,"");if(r){this.finishToken(135,h);return}if(o){this.finishToken(136,h);return}const d=l?parseInt(h,8):parseFloat(h);this.finishToken(134,d)}readCodePoint(e){const{code:t,pos:i}=Kae(this.input,this.state.pos,this.state.lineStart,this.state.curLine,e,this.errorHandlers_readCodePoint);return this.state.pos=i,t}readString(e){const{str:t,pos:i,curLine:s,lineStart:r}=pZ(e===34?"double":"single",this.input,this.state.pos+1,this.state.lineStart,this.state.curLine,this.errorHandlers_readStringContents_string);this.state.pos=i+1,this.state.lineStart=r,this.state.curLine=s,this.finishToken(133,t)}readTemplateContinuation(){this.match(8)||this.unexpected(null,8),this.state.pos--,this.readTemplateToken()}readTemplateToken(){const e=this.input[this.state.pos],{str:t,firstInvalidLoc:i,pos:s,curLine:r,lineStart:o}=pZ("template",this.input,this.state.pos+1,this.state.lineStart,this.state.curLine,this.errorHandlers_readStringContents_template);this.state.pos=s+1,this.state.lineStart=o,this.state.curLine=r,i&&(this.state.firstInvalidTemplateEscapePos=new gp(i.curLine,i.pos-i.lineStart,i.pos)),this.input.codePointAt(s)===96?this.finishToken(24,i?null:e+t+"`"):(this.state.pos++,this.finishToken(25,i?null:e+t+"${"))}recordStrictModeErrors(e,{at:t}){const i=t.index;this.state.strict&&!this.state.strictErrors.has(i)?this.raise(e,{at:t}):this.state.strictErrors.set(i,[e,t])}readWord1(e){this.state.containsEsc=!1;let t="";const i=this.state.pos;let s=this.state.pos;for(e!==void 0&&(this.state.pos+=e<=65535?1:2);this.state.pos<this.length;){const r=this.codePointAtPos(this.state.pos);if(cb(r))this.state.pos+=r<=65535?1:2;else if(r===92){this.state.containsEsc=!0,t+=this.input.slice(s,this.state.pos);const o=this.state.curPosition(),a=this.state.pos===i?af:cb;if(this.input.charCodeAt(++this.state.pos)!==117){this.raise(_e.MissingUnicodeEscape,{at:this.state.curPosition()}),s=this.state.pos-1;continue}++this.state.pos;const l=this.readCodePoint(!0);l!==null&&(a(l)||this.raise(_e.EscapedCharNotAnIdentifier,{at:o}),t+=String.fromCodePoint(l)),s=this.state.pos}else break}return t+this.input.slice(s,this.state.pos)}readWord(e){const t=this.readWord1(e),i=j$.get(t);i!==void 0?this.finishToken(i,pp(i)):this.finishToken(132,t)}checkKeywordEscapes(){const{type:e}=this.state;X$(e)&&this.state.containsEsc&&this.raise(_e.InvalidEscapedReservedWord,{at:this.state.startLoc,reservedWord:pp(e)})}raise(e,t){const{at:i}=t,s=jN(t,Oke),r=i instanceof gp?i:i.loc.start,o=e({loc:r,details:s});if(!this.options.errorRecovery)throw o;return this.isLookahead||this.state.errors.push(o),o}raiseOverwrite(e,t){const{at:i}=t,s=jN(t,Fke),r=i instanceof gp?i:i.loc.start,o=r.index,a=this.state.errors;for(let l=a.length-1;l>=0;l--){const c=a[l];if(c.loc.index===o)return a[l]=e({loc:r,details:s});if(c.loc.index<o)break}return this.raise(e,t)}updateContext(e){}unexpected(e,t){throw this.raise(_e.UnexpectedToken,{expected:t?pp(t):null,at:e??this.state.startLoc})}expectPlugin(e,t){if(this.hasPlugin(e))return!0;throw this.raise(_e.MissingPlugin,{at:t??this.state.startLoc,missingPlugin:[e]})}expectOnePlugin(e){if(!e.some(t=>this.hasPlugin(t)))throw this.raise(_e.MissingOneOfPlugins,{at:this.state.startLoc,missingPlugin:e})}errorBuilder(e){return(t,i,s)=>{this.raise(e,{at:rw(t,i,s)})}}}class Vke{constructor(){this.privateNames=new Set,this.loneAccessors=new Map,this.undefinedPrivateNames=new Map}}class Hke{constructor(e){this.parser=void 0,this.stack=[],this.undefinedPrivateNames=new Map,this.parser=e}current(){return this.stack[this.stack.length-1]}enter(){this.stack.push(new Vke)}exit(){const e=this.stack.pop(),t=this.current();for(const[i,s]of Array.from(e.undefinedPrivateNames))t?t.undefinedPrivateNames.has(i)||t.undefinedPrivateNames.set(i,s):this.parser.raise(_e.InvalidPrivateFieldResolution,{at:s,identifierName:i})}declarePrivateName(e,t,i){const{privateNames:s,loneAccessors:r,undefinedPrivateNames:o}=this.current();let a=s.has(e);if(t&3){const l=a&&r.get(e);if(l){const c=l&4,u=t&4,h=l&3,d=t&3;a=h===d||c!==u,a||r.delete(e)}else a||r.set(e,t)}a&&this.parser.raise(_e.PrivateNameRedeclaration,{at:i,identifierName:e}),s.add(e),o.delete(e)}usePrivateName(e,t){let i;for(i of this.stack)if(i.privateNames.has(e))return;i?i.undefinedPrivateNames.set(e,t):this.parser.raise(_e.InvalidPrivateFieldResolution,{at:t,identifierName:e})}}class mM{constructor(e=0){this.type=e}canBeArrowParameterDeclaration(){return this.type===2||this.type===1}isCertainlyParameterDeclaration(){return this.type===3}}class Gae extends mM{constructor(e){super(e),this.declarationErrors=new Map}recordDeclarationError(e,{at:t}){const i=t.index;this.declarationErrors.set(i,[e,t])}clearDeclarationError(e){this.declarationErrors.delete(e)}iterateErrors(e){this.declarationErrors.forEach(e)}}class $ke{constructor(e){this.parser=void 0,this.stack=[new mM],this.parser=e}enter(e){this.stack.push(e)}exit(){this.stack.pop()}recordParameterInitializerError(e,{at:t}){const i={at:t.loc.start},{stack:s}=this;let r=s.length-1,o=s[r];for(;!o.isCertainlyParameterDeclaration();){if(o.canBeArrowParameterDeclaration())o.recordDeclarationError(e,i);else return;o=s[--r]}this.parser.raise(e,i)}recordArrowParameterBindingError(e,{at:t}){const{stack:i}=this,s=i[i.length-1],r={at:t.loc.start};if(s.isCertainlyParameterDeclaration())this.parser.raise(e,r);else if(s.canBeArrowParameterDeclaration())s.recordDeclarationError(e,r);else return}recordAsyncArrowParametersError({at:e}){const{stack:t}=this;let i=t.length-1,s=t[i];for(;s.canBeArrowParameterDeclaration();)s.type===2&&s.recordDeclarationError(_e.AwaitBindingIdentifier,{at:e}),s=t[--i]}validateAsPattern(){const{stack:e}=this,t=e[e.length-1];t.canBeArrowParameterDeclaration()&&t.iterateErrors(([i,s])=>{this.parser.raise(i,{at:s});let r=e.length-2,o=e[r];for(;o.canBeArrowParameterDeclaration();)o.clearDeclarationError(s.index),o=e[--r]})}}function zke(){return new mM(3)}function Uke(){return new Gae(1)}function jke(){return new Gae(2)}function Yae(){return new mM}class qke{constructor(){this.stacks=[]}enter(e){this.stacks.push(e)}exit(){this.stacks.pop()}currentFlags(){return this.stacks[this.stacks.length-1]}get hasAwait(){return(this.currentFlags()&2)>0}get hasYield(){return(this.currentFlags()&1)>0}get hasReturn(){return(this.currentFlags()&4)>0}get hasIn(){return(this.currentFlags()&8)>0}}function TT(n,e){return(n?2:0)|(e?1:0)}class Kke extends Wke{addExtra(e,t,i,s=!0){if(!e)return;const r=e.extra=e.extra||{};s?r[t]=i:Object.defineProperty(r,t,{enumerable:s,value:i})}isContextual(e){return this.state.type===e&&!this.state.containsEsc}isUnparsedContextual(e,t){const i=e+t.length;if(this.input.slice(e,i)===t){const s=this.input.charCodeAt(i);return!(cb(s)||(s&64512)===55296)}return!1}isLookaheadContextual(e){const t=this.nextTokenStart();return this.isUnparsedContextual(t,e)}eatContextual(e){return this.isContextual(e)?(this.next(),!0):!1}expectContextual(e,t){if(!this.eatContextual(e)){if(t!=null)throw this.raise(t,{at:this.state.startLoc});this.unexpected(null,e)}}canInsertSemicolon(){return this.match(139)||this.match(8)||this.hasPrecedingLineBreak()}hasPrecedingLineBreak(){return Uae.test(this.input.slice(this.state.lastTokEndLoc.index,this.state.start))}hasFollowingLineBreak(){return fZ.lastIndex=this.state.end,fZ.test(this.input)}isLineTerminator(){return this.eat(13)||this.canInsertSemicolon()}semicolon(e=!0){(e?this.isLineTerminator():this.eat(13))||this.raise(_e.MissingSemicolon,{at:this.state.lastTokEndLoc})}expect(e,t){this.eat(e)||this.unexpected(t,e)}tryParse(e,t=this.state.clone()){const i={node:null};try{const s=e((r=null)=>{throw i.node=r,i});if(this.state.errors.length>t.errors.length){const r=this.state;return this.state=t,this.state.tokensLength=r.tokensLength,{node:s,error:r.errors[t.errors.length],thrown:!1,aborted:!1,failState:r}}return{node:s,error:null,thrown:!1,aborted:!1,failState:null}}catch(s){const r=this.state;if(this.state=t,s instanceof SyntaxError)return{node:null,error:s,thrown:!0,aborted:!1,failState:r};if(s===i)return{node:i.node,error:null,thrown:!1,aborted:!0,failState:r};throw s}}checkExpressionErrors(e,t){if(!e)return!1;const{shorthandAssignLoc:i,doubleProtoLoc:s,privateKeyLoc:r,optionalParametersLoc:o}=e,a=!!i||!!s||!!o||!!r;if(!t)return a;i!=null&&this.raise(_e.InvalidCoverInitializedName,{at:i}),s!=null&&this.raise(_e.DuplicateProto,{at:s}),r!=null&&this.raise(_e.UnexpectedPrivateField,{at:r}),o!=null&&this.unexpected(o)}isLiteralPropertyName(){return Oae(this.state.type)}isPrivateName(e){return e.type==="PrivateName"}getPrivateNameSV(e){return e.id.name}hasPropertyAsPrivateName(e){return(e.type==="MemberExpression"||e.type==="OptionalMemberExpression")&&this.isPrivateName(e.property)}isObjectProperty(e){return e.type==="ObjectProperty"}isObjectMethod(e){return e.type==="ObjectMethod"}initializeScopes(e=this.options.sourceType==="module"){const t=this.state.labels;this.state.labels=[];const i=this.exportedIdentifiers;this.exportedIdentifiers=new Set;const s=this.inModule;this.inModule=e;const r=this.scope,o=this.getScopeHandler();this.scope=new o(this,e);const a=this.prodParam;this.prodParam=new qke;const l=this.classScope;this.classScope=new Hke(this);const c=this.expressionScope;return this.expressionScope=new $ke(this),()=>{this.state.labels=t,this.exportedIdentifiers=i,this.inModule=s,this.scope=r,this.prodParam=a,this.classScope=l,this.expressionScope=c}}enterInitialScopes(){let e=0;this.inModule&&(e|=2),this.scope.enter(1),this.prodParam.enter(e)}checkDestructuringPrivate(e){const{privateKeyLoc:t}=e;t!==null&&this.expectPlugin("destructuringPrivate",t)}}class NT{constructor(){this.shorthandAssignLoc=null,this.doubleProtoLoc=null,this.privateKeyLoc=null,this.optionalParametersLoc=null}}let GN=class{constructor(e,t,i){this.type="",this.start=t,this.end=0,this.loc=new qN(i),e!=null&&e.options.ranges&&(this.range=[t,0]),e!=null&&e.filename&&(this.loc.filename=e.filename)}};const iz=GN.prototype;iz.__clone=function(){const n=new GN(void 0,this.start,this.loc.start),e=Object.keys(this);for(let t=0,i=e.length;t<i;t++){const s=e[t];s!=="leadingComments"&&s!=="trailingComments"&&s!=="innerComments"&&(n[s]=this[s])}return n};function Gke(n){return Tf(n)}function Tf(n){const{type:e,start:t,end:i,loc:s,range:r,extra:o,name:a}=n,l=Object.create(iz);return l.type=e,l.start=t,l.end=i,l.loc=s,l.range=r,l.extra=o,l.name=a,e==="Placeholder"&&(l.expectedNode=n.expectedNode),l}function Yke(n){const{type:e,start:t,end:i,loc:s,range:r,extra:o}=n;if(e==="Placeholder")return Gke(n);const a=Object.create(iz);return a.type=e,a.start=t,a.end=i,a.loc=s,a.range=r,n.raw!==void 0?a.raw=n.raw:a.extra=o,a.value=n.value,a}class Zke extends Kke{startNode(){return new GN(this,this.state.start,this.state.startLoc)}startNodeAt(e){return new GN(this,e.index,e)}startNodeAtNode(e){return this.startNodeAt(e.loc.start)}finishNode(e,t){return this.finishNodeAt(e,t,this.state.lastTokEndLoc)}finishNodeAt(e,t,i){return e.type=t,e.end=i.index,e.loc.end=i,this.options.ranges&&(e.range[1]=i.index),this.options.attachComment&&this.processComment(e),e}resetStartLocation(e,t){e.start=t.index,e.loc.start=t,this.options.ranges&&(e.range[0]=t.index)}resetEndLocation(e,t=this.state.lastTokEndLoc){e.end=t.index,e.loc.end=t,this.options.ranges&&(e.range[1]=t.index)}resetStartLocationFromNode(e,t){this.resetStartLocation(e,t.loc.start)}}const Xke=new Set(["_","any","bool","boolean","empty","extends","false","interface","mixed","null","number","static","string","true","typeof","void"]),Wt=pf`flow`({AmbiguousConditionalArrow:"Ambiguous expression: wrap the arrow functions in parentheses to disambiguate.",AmbiguousDeclareModuleKind:"Found both `declare module.exports` and `declare export` in the same module. Modules can only have 1 since they are either an ES module or they are a CommonJS module.",AssignReservedType:({reservedType:n})=>`Cannot overwrite reserved type ${n}.`,DeclareClassElement:"The `declare` modifier can only appear on class fields.",DeclareClassFieldInitializer:"Initializers are not allowed in fields with the `declare` modifier.",DuplicateDeclareModuleExports:"Duplicate `declare module.exports` statement.",EnumBooleanMemberNotInitialized:({memberName:n,enumName:e})=>`Boolean enum members need to be initialized. Use either \`${n} = true,\` or \`${n} = false,\` in enum \`${e}\`.`,EnumDuplicateMemberName:({memberName:n,enumName:e})=>`Enum member names need to be unique, but the name \`${n}\` has already been used before in enum \`${e}\`.`,EnumInconsistentMemberValues:({enumName:n})=>`Enum \`${n}\` has inconsistent member initializers. Either use no initializers, or consistently use literals (either booleans, numbers, or strings) for all member initializers.`,EnumInvalidExplicitType:({invalidEnumType:n,enumName:e})=>`Enum type \`${n}\` is not valid. Use one of \`boolean\`, \`number\`, \`string\`, or \`symbol\` in enum \`${e}\`.`,EnumInvalidExplicitTypeUnknownSupplied:({enumName:n})=>`Supplied enum type is not valid. Use one of \`boolean\`, \`number\`, \`string\`, or \`symbol\` in enum \`${n}\`.`,EnumInvalidMemberInitializerPrimaryType:({enumName:n,memberName:e,explicitType:t})=>`Enum \`${n}\` has type \`${t}\`, so the initializer of \`${e}\` needs to be a ${t} literal.`,EnumInvalidMemberInitializerSymbolType:({enumName:n,memberName:e})=>`Symbol enum members cannot be initialized. Use \`${e},\` in enum \`${n}\`.`,EnumInvalidMemberInitializerUnknownType:({enumName:n,memberName:e})=>`The enum member initializer for \`${e}\` needs to be a literal (either a boolean, number, or string) in enum \`${n}\`.`,EnumInvalidMemberName:({enumName:n,memberName:e,suggestion:t})=>`Enum member names cannot start with lowercase 'a' through 'z'. Instead of using \`${e}\`, consider using \`${t}\`, in enum \`${n}\`.`,EnumNumberMemberNotInitialized:({enumName:n,memberName:e})=>`Number enum members need to be initialized, e.g. \`${e} = 1\` in enum \`${n}\`.`,EnumStringMemberInconsistentlyInitialized:({enumName:n})=>`String enum members need to consistently either all use initializers, or use no initializers, in enum \`${n}\`.`,GetterMayNotHaveThisParam:"A getter cannot have a `this` parameter.",ImportReflectionHasImportType:"An `import module` declaration can not use `type` or `typeof` keyword.",ImportTypeShorthandOnlyInPureImport:"The `type` and `typeof` keywords on named imports can only be used on regular `import` statements. It cannot be used with `import type` or `import typeof` statements.",InexactInsideExact:"Explicit inexact syntax cannot appear inside an explicit exact object type.",InexactInsideNonObject:"Explicit inexact syntax cannot appear in class or interface definitions.",InexactVariance:"Explicit inexact syntax cannot have variance.",InvalidNonTypeImportInDeclareModule:"Imports within a `declare module` body must always be `import type` or `import typeof`.",MissingTypeParamDefault:"Type parameter declaration needs a default, since a preceding type parameter declaration has a default.",NestedDeclareModule:"`declare module` cannot be used inside another `declare module`.",NestedFlowComment:"Cannot have a flow comment inside another flow comment.",PatternIsOptional:Object.assign({message:"A binding pattern parameter cannot be optional in an implementation signature."},{reasonCode:"OptionalBindingPattern"}),SetterMayNotHaveThisParam:"A setter cannot have a `this` parameter.",SpreadVariance:"Spread properties cannot have variance.",ThisParamAnnotationRequired:"A type annotation is required for the `this` parameter.",ThisParamBannedInConstructor:"Constructors cannot have a `this` parameter; constructors don't bind `this` like other functions.",ThisParamMayNotBeOptional:"The `this` parameter cannot be optional.",ThisParamMustBeFirst:"The `this` parameter must be the first function parameter.",ThisParamNoDefault:"The `this` parameter may not have a default value.",TypeBeforeInitializer:"Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`.",TypeCastInPattern:"The type cast expression is expected to be wrapped with parenthesis.",UnexpectedExplicitInexactInObject:"Explicit inexact syntax must appear at the end of an inexact object.",UnexpectedReservedType:({reservedType:n})=>`Unexpected reserved type ${n}.`,UnexpectedReservedUnderscore:"`_` is only allowed as a type argument to call or new.",UnexpectedSpaceBetweenModuloChecks:"Spaces between `%` and `checks` are not allowed here.",UnexpectedSpreadType:"Spread operator cannot appear in class or interface definitions.",UnexpectedSubtractionOperand:'Unexpected token, expected "number" or "bigint".',UnexpectedTokenAfterTypeParameter:"Expected an arrow function after this type parameter declaration.",UnexpectedTypeParameterBeforeAsyncArrowFunction:"Type parameters must come after the async keyword, e.g. instead of `<T> async () => {}`, use `async <T>() => {}`.",UnsupportedDeclareExportKind:({unsupportedExportKind:n,suggestion:e})=>`\`declare export ${n}\` is not supported. Use \`${e}\` instead.`,UnsupportedStatementInDeclareModule:"Only declares and type imports are allowed inside declare module.",UnterminatedFlowComment:"Unterminated flow-comment."});function Qke(n){return n.type==="DeclareExportAllDeclaration"||n.type==="DeclareExportDeclaration"&&(!n.declaration||n.declaration.type!=="TypeAlias"&&n.declaration.type!=="InterfaceDeclaration")}function mZ(n){return n.importKind==="type"||n.importKind==="typeof"}const Jke={const:"declare export var",let:"declare export var",type:"export type",interface:"export interface"};function eLe(n,e){const t=[],i=[];for(let s=0;s<n.length;s++)(e(n[s],s,n)?t:i).push(n[s]);return[t,i]}const tLe=/\*?\s*@((?:no)?flow)\b/;var iLe=n=>class extends n{constructor(...t){super(...t),this.flowPragma=void 0}getScopeHandler(){return Eke}shouldParseTypes(){return this.getPluginOption("flow","all")||this.flowPragma==="flow"}shouldParseEnums(){return!!this.getPluginOption("flow","enums")}finishToken(t,i){t!==133&&t!==13&&t!==28&&this.flowPragma===void 0&&(this.flowPragma=null),super.finishToken(t,i)}addComment(t){if(this.flowPragma===void 0){const i=tLe.exec(t.value);if(i)if(i[1]==="flow")this.flowPragma="flow";else if(i[1]==="noflow")this.flowPragma="noflow";else throw new Error("Unexpected flow pragma")}super.addComment(t)}flowParseTypeInitialiser(t){const i=this.state.inType;this.state.inType=!0,this.expect(t||14);const s=this.flowParseType();return this.state.inType=i,s}flowParsePredicate(){const t=this.startNode(),i=this.state.startLoc;return this.next(),this.expectContextual(110),this.state.lastTokStart>i.index+1&&this.raise(Wt.UnexpectedSpaceBetweenModuloChecks,{at:i}),this.eat(10)?(t.value=super.parseExpression(),this.expect(11),this.finishNode(t,"DeclaredPredicate")):this.finishNode(t,"InferredPredicate")}flowParseTypeAndPredicateInitialiser(){const t=this.state.inType;this.state.inType=!0,this.expect(14);let i=null,s=null;return this.match(54)?(this.state.inType=t,s=this.flowParsePredicate()):(i=this.flowParseType(),this.state.inType=t,this.match(54)&&(s=this.flowParsePredicate())),[i,s]}flowParseDeclareClass(t){return this.next(),this.flowParseInterfaceish(t,!0),this.finishNode(t,"DeclareClass")}flowParseDeclareFunction(t){this.next();const i=t.id=this.parseIdentifier(),s=this.startNode(),r=this.startNode();this.match(47)?s.typeParameters=this.flowParseTypeParameterDeclaration():s.typeParameters=null,this.expect(10);const o=this.flowParseFunctionTypeParams();return s.params=o.params,s.rest=o.rest,s.this=o._this,this.expect(11),[s.returnType,t.predicate]=this.flowParseTypeAndPredicateInitialiser(),r.typeAnnotation=this.finishNode(s,"FunctionTypeAnnotation"),i.typeAnnotation=this.finishNode(r,"TypeAnnotation"),this.resetEndLocation(i),this.semicolon(),this.scope.declareName(t.id.name,2048,t.id.loc.start),this.finishNode(t,"DeclareFunction")}flowParseDeclare(t,i){if(this.match(80))return this.flowParseDeclareClass(t);if(this.match(68))return this.flowParseDeclareFunction(t);if(this.match(74))return this.flowParseDeclareVariable(t);if(this.eatContextual(127))return this.match(16)?this.flowParseDeclareModuleExports(t):(i&&this.raise(Wt.NestedDeclareModule,{at:this.state.lastTokStartLoc}),this.flowParseDeclareModule(t));if(this.isContextual(130))return this.flowParseDeclareTypeAlias(t);if(this.isContextual(131))return this.flowParseDeclareOpaqueType(t);if(this.isContextual(129))return this.flowParseDeclareInterface(t);if(this.match(82))return this.flowParseDeclareExportDeclaration(t,i);this.unexpected()}flowParseDeclareVariable(t){return this.next(),t.id=this.flowParseTypeAnnotatableIdentifier(!0),this.scope.declareName(t.id.name,5,t.id.loc.start),this.semicolon(),this.finishNode(t,"DeclareVariable")}flowParseDeclareModule(t){this.scope.enter(0),this.match(133)?t.id=super.parseExprAtom():t.id=this.parseIdentifier();const i=t.body=this.startNode(),s=i.body=[];for(this.expect(5);!this.match(8);){let a=this.startNode();this.match(83)?(this.next(),!this.isContextual(130)&&!this.match(87)&&this.raise(Wt.InvalidNonTypeImportInDeclareModule,{at:this.state.lastTokStartLoc}),super.parseImport(a)):(this.expectContextual(125,Wt.UnsupportedStatementInDeclareModule),a=this.flowParseDeclare(a,!0)),s.push(a)}this.scope.exit(),this.expect(8),this.finishNode(i,"BlockStatement");let r=null,o=!1;return s.forEach(a=>{Qke(a)?(r==="CommonJS"&&this.raise(Wt.AmbiguousDeclareModuleKind,{at:a}),r="ES"):a.type==="DeclareModuleExports"&&(o&&this.raise(Wt.DuplicateDeclareModuleExports,{at:a}),r==="ES"&&this.raise(Wt.AmbiguousDeclareModuleKind,{at:a}),r="CommonJS",o=!0)}),t.kind=r||"CommonJS",this.finishNode(t,"DeclareModule")}flowParseDeclareExportDeclaration(t,i){if(this.expect(82),this.eat(65))return this.match(68)||this.match(80)?t.declaration=this.flowParseDeclare(this.startNode()):(t.declaration=this.flowParseType(),this.semicolon()),t.default=!0,this.finishNode(t,"DeclareExportDeclaration");if(this.match(75)||this.isLet()||(this.isContextual(130)||this.isContextual(129))&&!i){const s=this.state.value;throw this.raise(Wt.UnsupportedDeclareExportKind,{at:this.state.startLoc,unsupportedExportKind:s,suggestion:Jke[s]})}if(this.match(74)||this.match(68)||this.match(80)||this.isContextual(131))return t.declaration=this.flowParseDeclare(this.startNode()),t.default=!1,this.finishNode(t,"DeclareExportDeclaration");if(this.match(55)||this.match(5)||this.isContextual(129)||this.isContextual(130)||this.isContextual(131))return t=this.parseExport(t,null),t.type==="ExportNamedDeclaration"&&(t.type="ExportDeclaration",t.default=!1,delete t.exportKind),t.type="Declare"+t.type,t;this.unexpected()}flowParseDeclareModuleExports(t){return this.next(),this.expectContextual(111),t.typeAnnotation=this.flowParseTypeAnnotation(),this.semicolon(),this.finishNode(t,"DeclareModuleExports")}flowParseDeclareTypeAlias(t){this.next();const i=this.flowParseTypeAlias(t);return i.type="DeclareTypeAlias",i}flowParseDeclareOpaqueType(t){this.next();const i=this.flowParseOpaqueType(t,!0);return i.type="DeclareOpaqueType",i}flowParseDeclareInterface(t){return this.next(),this.flowParseInterfaceish(t,!1),this.finishNode(t,"DeclareInterface")}flowParseInterfaceish(t,i){if(t.id=this.flowParseRestrictedIdentifier(!i,!0),this.scope.declareName(t.id.name,i?17:8201,t.id.loc.start),this.match(47)?t.typeParameters=this.flowParseTypeParameterDeclaration():t.typeParameters=null,t.extends=[],this.eat(81))do t.extends.push(this.flowParseInterfaceExtends());while(!i&&this.eat(12));if(i){if(t.implements=[],t.mixins=[],this.eatContextual(117))do t.mixins.push(this.flowParseInterfaceExtends());while(this.eat(12));if(this.eatContextual(113))do t.implements.push(this.flowParseInterfaceExtends());while(this.eat(12))}t.body=this.flowParseObjectType({allowStatic:i,allowExact:!1,allowSpread:!1,allowProto:i,allowInexact:!1})}flowParseInterfaceExtends(){const t=this.startNode();return t.id=this.flowParseQualifiedTypeIdentifier(),this.match(47)?t.typeParameters=this.flowParseTypeParameterInstantiation():t.typeParameters=null,this.finishNode(t,"InterfaceExtends")}flowParseInterface(t){return this.flowParseInterfaceish(t,!1),this.finishNode(t,"InterfaceDeclaration")}checkNotUnderscore(t){t==="_"&&this.raise(Wt.UnexpectedReservedUnderscore,{at:this.state.startLoc})}checkReservedType(t,i,s){Xke.has(t)&&this.raise(s?Wt.AssignReservedType:Wt.UnexpectedReservedType,{at:i,reservedType:t})}flowParseRestrictedIdentifier(t,i){return this.checkReservedType(this.state.value,this.state.startLoc,i),this.parseIdentifier(t)}flowParseTypeAlias(t){return t.id=this.flowParseRestrictedIdentifier(!1,!0),this.scope.declareName(t.id.name,8201,t.id.loc.start),this.match(47)?t.typeParameters=this.flowParseTypeParameterDeclaration():t.typeParameters=null,t.right=this.flowParseTypeInitialiser(29),this.semicolon(),this.finishNode(t,"TypeAlias")}flowParseOpaqueType(t,i){return this.expectContextual(130),t.id=this.flowParseRestrictedIdentifier(!0,!0),this.scope.declareName(t.id.name,8201,t.id.loc.start),this.match(47)?t.typeParameters=this.flowParseTypeParameterDeclaration():t.typeParameters=null,t.supertype=null,this.match(14)&&(t.supertype=this.flowParseTypeInitialiser(14)),t.impltype=null,i||(t.impltype=this.flowParseTypeInitialiser(29)),this.semicolon(),this.finishNode(t,"OpaqueType")}flowParseTypeParameter(t=!1){const i=this.state.startLoc,s=this.startNode(),r=this.flowParseVariance(),o=this.flowParseTypeAnnotatableIdentifier();return s.name=o.name,s.variance=r,s.bound=o.typeAnnotation,this.match(29)?(this.eat(29),s.default=this.flowParseType()):t&&this.raise(Wt.MissingTypeParamDefault,{at:i}),this.finishNode(s,"TypeParameter")}flowParseTypeParameterDeclaration(){const t=this.state.inType,i=this.startNode();i.params=[],this.state.inType=!0,this.match(47)||this.match(142)?this.next():this.unexpected();let s=!1;do{const r=this.flowParseTypeParameter(s);i.params.push(r),r.default&&(s=!0),this.match(48)||this.expect(12)}while(!this.match(48));return this.expect(48),this.state.inType=t,this.finishNode(i,"TypeParameterDeclaration")}flowParseTypeParameterInstantiation(){const t=this.startNode(),i=this.state.inType;t.params=[],this.state.inType=!0,this.expect(47);const s=this.state.noAnonFunctionType;for(this.state.noAnonFunctionType=!1;!this.match(48);)t.params.push(this.flowParseType()),this.match(48)||this.expect(12);return this.state.noAnonFunctionType=s,this.expect(48),this.state.inType=i,this.finishNode(t,"TypeParameterInstantiation")}flowParseTypeParameterInstantiationCallOrNew(){const t=this.startNode(),i=this.state.inType;for(t.params=[],this.state.inType=!0,this.expect(47);!this.match(48);)t.params.push(this.flowParseTypeOrImplicitInstantiation()),this.match(48)||this.expect(12);return this.expect(48),this.state.inType=i,this.finishNode(t,"TypeParameterInstantiation")}flowParseInterfaceType(){const t=this.startNode();if(this.expectContextual(129),t.extends=[],this.eat(81))do t.extends.push(this.flowParseInterfaceExtends());while(this.eat(12));return t.body=this.flowParseObjectType({allowStatic:!1,allowExact:!1,allowSpread:!1,allowProto:!1,allowInexact:!1}),this.finishNode(t,"InterfaceTypeAnnotation")}flowParseObjectPropertyKey(){return this.match(134)||this.match(133)?super.parseExprAtom():this.parseIdentifier(!0)}flowParseObjectTypeIndexer(t,i,s){return t.static=i,this.lookahead().type===14?(t.id=this.flowParseObjectPropertyKey(),t.key=this.flowParseTypeInitialiser()):(t.id=null,t.key=this.flowParseType()),this.expect(3),t.value=this.flowParseTypeInitialiser(),t.variance=s,this.finishNode(t,"ObjectTypeIndexer")}flowParseObjectTypeInternalSlot(t,i){return t.static=i,t.id=this.flowParseObjectPropertyKey(),this.expect(3),this.expect(3),this.match(47)||this.match(10)?(t.method=!0,t.optional=!1,t.value=this.flowParseObjectTypeMethodish(this.startNodeAt(t.loc.start))):(t.method=!1,this.eat(17)&&(t.optional=!0),t.value=this.flowParseTypeInitialiser()),this.finishNode(t,"ObjectTypeInternalSlot")}flowParseObjectTypeMethodish(t){for(t.params=[],t.rest=null,t.typeParameters=null,t.this=null,this.match(47)&&(t.typeParameters=this.flowParseTypeParameterDeclaration()),this.expect(10),this.match(78)&&(t.this=this.flowParseFunctionTypeParam(!0),t.this.name=null,this.match(11)||this.expect(12));!this.match(11)&&!this.match(21);)t.params.push(this.flowParseFunctionTypeParam(!1)),this.match(11)||this.expect(12);return this.eat(21)&&(t.rest=this.flowParseFunctionTypeParam(!1)),this.expect(11),t.returnType=this.flowParseTypeInitialiser(),this.finishNode(t,"FunctionTypeAnnotation")}flowParseObjectTypeCallProperty(t,i){const s=this.startNode();return t.static=i,t.value=this.flowParseObjectTypeMethodish(s),this.finishNode(t,"ObjectTypeCallProperty")}flowParseObjectType({allowStatic:t,allowExact:i,allowSpread:s,allowProto:r,allowInexact:o}){const a=this.state.inType;this.state.inType=!0;const l=this.startNode();l.callProperties=[],l.properties=[],l.indexers=[],l.internalSlots=[];let c,u,h=!1;for(i&&this.match(6)?(this.expect(6),c=9,u=!0):(this.expect(5),c=8,u=!1),l.exact=u;!this.match(c);){let f=!1,g=null,p=null;const m=this.startNode();if(r&&this.isContextual(118)){const b=this.lookahead();b.type!==14&&b.type!==17&&(this.next(),g=this.state.startLoc,t=!1)}if(t&&this.isContextual(106)){const b=this.lookahead();b.type!==14&&b.type!==17&&(this.next(),f=!0)}const _=this.flowParseVariance();if(this.eat(0))g!=null&&this.unexpected(g),this.eat(0)?(_&&this.unexpected(_.loc.start),l.internalSlots.push(this.flowParseObjectTypeInternalSlot(m,f))):l.indexers.push(this.flowParseObjectTypeIndexer(m,f,_));else if(this.match(10)||this.match(47))g!=null&&this.unexpected(g),_&&this.unexpected(_.loc.start),l.callProperties.push(this.flowParseObjectTypeCallProperty(m,f));else{let b="init";if(this.isContextual(99)||this.isContextual(104)){const w=this.lookahead();Oae(w.type)&&(b=this.state.value,this.next())}const y=this.flowParseObjectTypeProperty(m,f,g,_,b,s,o??!u);y===null?(h=!0,p=this.state.lastTokStartLoc):l.properties.push(y)}this.flowObjectTypeSemicolon(),p&&!this.match(8)&&!this.match(9)&&this.raise(Wt.UnexpectedExplicitInexactInObject,{at:p})}this.expect(c),s&&(l.inexact=h);const d=this.finishNode(l,"ObjectTypeAnnotation");return this.state.inType=a,d}flowParseObjectTypeProperty(t,i,s,r,o,a,l){if(this.eat(21))return this.match(12)||this.match(13)||this.match(8)||this.match(9)?(a?l||this.raise(Wt.InexactInsideExact,{at:this.state.lastTokStartLoc}):this.raise(Wt.InexactInsideNonObject,{at:this.state.lastTokStartLoc}),r&&this.raise(Wt.InexactVariance,{at:r}),null):(a||this.raise(Wt.UnexpectedSpreadType,{at:this.state.lastTokStartLoc}),s!=null&&this.unexpected(s),r&&this.raise(Wt.SpreadVariance,{at:r}),t.argument=this.flowParseType(),this.finishNode(t,"ObjectTypeSpreadProperty"));{t.key=this.flowParseObjectPropertyKey(),t.static=i,t.proto=s!=null,t.kind=o;let c=!1;return this.match(47)||this.match(10)?(t.method=!0,s!=null&&this.unexpected(s),r&&this.unexpected(r.loc.start),t.value=this.flowParseObjectTypeMethodish(this.startNodeAt(t.loc.start)),(o==="get"||o==="set")&&this.flowCheckGetterSetterParams(t),!a&&t.key.name==="constructor"&&t.value.this&&this.raise(Wt.ThisParamBannedInConstructor,{at:t.value.this})):(o!=="init"&&this.unexpected(),t.method=!1,this.eat(17)&&(c=!0),t.value=this.flowParseTypeInitialiser(),t.variance=r),t.optional=c,this.finishNode(t,"ObjectTypeProperty")}}flowCheckGetterSetterParams(t){const i=t.kind==="get"?0:1,s=t.value.params.length+(t.value.rest?1:0);t.value.this&&this.raise(t.kind==="get"?Wt.GetterMayNotHaveThisParam:Wt.SetterMayNotHaveThisParam,{at:t.value.this}),s!==i&&this.raise(t.kind==="get"?_e.BadGetterArity:_e.BadSetterArity,{at:t}),t.kind==="set"&&t.value.rest&&this.raise(_e.BadSetterRestParameter,{at:t})}flowObjectTypeSemicolon(){!this.eat(13)&&!this.eat(12)&&!this.match(8)&&!this.match(9)&&this.unexpected()}flowParseQualifiedTypeIdentifier(t,i){var s;(s=t)!=null||(t=this.state.startLoc);let r=i||this.flowParseRestrictedIdentifier(!0);for(;this.eat(16);){const o=this.startNodeAt(t);o.qualification=r,o.id=this.flowParseRestrictedIdentifier(!0),r=this.finishNode(o,"QualifiedTypeIdentifier")}return r}flowParseGenericType(t,i){const s=this.startNodeAt(t);return s.typeParameters=null,s.id=this.flowParseQualifiedTypeIdentifier(t,i),this.match(47)&&(s.typeParameters=this.flowParseTypeParameterInstantiation()),this.finishNode(s,"GenericTypeAnnotation")}flowParseTypeofType(){const t=this.startNode();return this.expect(87),t.argument=this.flowParsePrimaryType(),this.finishNode(t,"TypeofTypeAnnotation")}flowParseTupleType(){const t=this.startNode();for(t.types=[],this.expect(0);this.state.pos<this.length&&!this.match(3)&&(t.types.push(this.flowParseType()),!this.match(3));)this.expect(12);return this.expect(3),this.finishNode(t,"TupleTypeAnnotation")}flowParseFunctionTypeParam(t){let i=null,s=!1,r=null;const o=this.startNode(),a=this.lookahead(),l=this.state.type===78;return a.type===14||a.type===17?(l&&!t&&this.raise(Wt.ThisParamMustBeFirst,{at:o}),i=this.parseIdentifier(l),this.eat(17)&&(s=!0,l&&this.raise(Wt.ThisParamMayNotBeOptional,{at:o})),r=this.flowParseTypeInitialiser()):r=this.flowParseType(),o.name=i,o.optional=s,o.typeAnnotation=r,this.finishNode(o,"FunctionTypeParam")}reinterpretTypeAsFunctionTypeParam(t){const i=this.startNodeAt(t.loc.start);return i.name=null,i.optional=!1,i.typeAnnotation=t,this.finishNode(i,"FunctionTypeParam")}flowParseFunctionTypeParams(t=[]){let i=null,s=null;for(this.match(78)&&(s=this.flowParseFunctionTypeParam(!0),s.name=null,this.match(11)||this.expect(12));!this.match(11)&&!this.match(21);)t.push(this.flowParseFunctionTypeParam(!1)),this.match(11)||this.expect(12);return this.eat(21)&&(i=this.flowParseFunctionTypeParam(!1)),{params:t,rest:i,_this:s}}flowIdentToTypeAnnotation(t,i,s){switch(s.name){case"any":return this.finishNode(i,"AnyTypeAnnotation");case"bool":case"boolean":return this.finishNode(i,"BooleanTypeAnnotation");case"mixed":return this.finishNode(i,"MixedTypeAnnotation");case"empty":return this.finishNode(i,"EmptyTypeAnnotation");case"number":return this.finishNode(i,"NumberTypeAnnotation");case"string":return this.finishNode(i,"StringTypeAnnotation");case"symbol":return this.finishNode(i,"SymbolTypeAnnotation");default:return this.checkNotUnderscore(s.name),this.flowParseGenericType(t,s)}}flowParsePrimaryType(){const t=this.state.startLoc,i=this.startNode();let s,r,o=!1;const a=this.state.noAnonFunctionType;switch(this.state.type){case 5:return this.flowParseObjectType({allowStatic:!1,allowExact:!1,allowSpread:!0,allowProto:!1,allowInexact:!0});case 6:return this.flowParseObjectType({allowStatic:!1,allowExact:!0,allowSpread:!0,allowProto:!1,allowInexact:!1});case 0:return this.state.noAnonFunctionType=!1,r=this.flowParseTupleType(),this.state.noAnonFunctionType=a,r;case 47:return i.typeParameters=this.flowParseTypeParameterDeclaration(),this.expect(10),s=this.flowParseFunctionTypeParams(),i.params=s.params,i.rest=s.rest,i.this=s._this,this.expect(11),this.expect(19),i.returnType=this.flowParseType(),this.finishNode(i,"FunctionTypeAnnotation");case 10:if(this.next(),!this.match(11)&&!this.match(21))if(on(this.state.type)||this.match(78)){const l=this.lookahead().type;o=l!==17&&l!==14}else o=!0;if(o){if(this.state.noAnonFunctionType=!1,r=this.flowParseType(),this.state.noAnonFunctionType=a,this.state.noAnonFunctionType||!(this.match(12)||this.match(11)&&this.lookahead().type===19))return this.expect(11),r;this.eat(12)}return r?s=this.flowParseFunctionTypeParams([this.reinterpretTypeAsFunctionTypeParam(r)]):s=this.flowParseFunctionTypeParams(),i.params=s.params,i.rest=s.rest,i.this=s._this,this.expect(11),this.expect(19),i.returnType=this.flowParseType(),i.typeParameters=null,this.finishNode(i,"FunctionTypeAnnotation");case 133:return this.parseLiteral(this.state.value,"StringLiteralTypeAnnotation");case 85:case 86:return i.value=this.match(85),this.next(),this.finishNode(i,"BooleanLiteralTypeAnnotation");case 53:if(this.state.value==="-"){if(this.next(),this.match(134))return this.parseLiteralAtNode(-this.state.value,"NumberLiteralTypeAnnotation",i);if(this.match(135))return this.parseLiteralAtNode(-this.state.value,"BigIntLiteralTypeAnnotation",i);throw this.raise(Wt.UnexpectedSubtractionOperand,{at:this.state.startLoc})}this.unexpected();return;case 134:return this.parseLiteral(this.state.value,"NumberLiteralTypeAnnotation");case 135:return this.parseLiteral(this.state.value,"BigIntLiteralTypeAnnotation");case 88:return this.next(),this.finishNode(i,"VoidTypeAnnotation");case 84:return this.next(),this.finishNode(i,"NullLiteralTypeAnnotation");case 78:return this.next(),this.finishNode(i,"ThisTypeAnnotation");case 55:return this.next(),this.finishNode(i,"ExistsTypeAnnotation");case 87:return this.flowParseTypeofType();default:if(X$(this.state.type)){const l=pp(this.state.type);return this.next(),super.createIdentifier(i,l)}else if(on(this.state.type))return this.isContextual(129)?this.flowParseInterfaceType():this.flowIdentToTypeAnnotation(t,i,this.parseIdentifier())}this.unexpected()}flowParsePostfixType(){const t=this.state.startLoc;let i=this.flowParsePrimaryType(),s=!1;for(;(this.match(0)||this.match(18))&&!this.canInsertSemicolon();){const r=this.startNodeAt(t),o=this.eat(18);s=s||o,this.expect(0),!o&&this.match(3)?(r.elementType=i,this.next(),i=this.finishNode(r,"ArrayTypeAnnotation")):(r.objectType=i,r.indexType=this.flowParseType(),this.expect(3),s?(r.optional=o,i=this.finishNode(r,"OptionalIndexedAccessType")):i=this.finishNode(r,"IndexedAccessType"))}return i}flowParsePrefixType(){const t=this.startNode();return this.eat(17)?(t.typeAnnotation=this.flowParsePrefixType(),this.finishNode(t,"NullableTypeAnnotation")):this.flowParsePostfixType()}flowParseAnonFunctionWithoutParens(){const t=this.flowParsePrefixType();if(!this.state.noAnonFunctionType&&this.eat(19)){const i=this.startNodeAt(t.loc.start);return i.params=[this.reinterpretTypeAsFunctionTypeParam(t)],i.rest=null,i.this=null,i.returnType=this.flowParseType(),i.typeParameters=null,this.finishNode(i,"FunctionTypeAnnotation")}return t}flowParseIntersectionType(){const t=this.startNode();this.eat(45);const i=this.flowParseAnonFunctionWithoutParens();for(t.types=[i];this.eat(45);)t.types.push(this.flowParseAnonFunctionWithoutParens());return t.types.length===1?i:this.finishNode(t,"IntersectionTypeAnnotation")}flowParseUnionType(){const t=this.startNode();this.eat(43);const i=this.flowParseIntersectionType();for(t.types=[i];this.eat(43);)t.types.push(this.flowParseIntersectionType());return t.types.length===1?i:this.finishNode(t,"UnionTypeAnnotation")}flowParseType(){const t=this.state.inType;this.state.inType=!0;const i=this.flowParseUnionType();return this.state.inType=t,i}flowParseTypeOrImplicitInstantiation(){if(this.state.type===132&&this.state.value==="_"){const t=this.state.startLoc,i=this.parseIdentifier();return this.flowParseGenericType(t,i)}else return this.flowParseType()}flowParseTypeAnnotation(){const t=this.startNode();return t.typeAnnotation=this.flowParseTypeInitialiser(),this.finishNode(t,"TypeAnnotation")}flowParseTypeAnnotatableIdentifier(t){const i=t?this.parseIdentifier():this.flowParseRestrictedIdentifier();return this.match(14)&&(i.typeAnnotation=this.flowParseTypeAnnotation(),this.resetEndLocation(i)),i}typeCastToParameter(t){return t.expression.typeAnnotation=t.typeAnnotation,this.resetEndLocation(t.expression,t.typeAnnotation.loc.end),t.expression}flowParseVariance(){let t=null;return this.match(53)?(t=this.startNode(),this.state.value==="+"?t.kind="plus":t.kind="minus",this.next(),this.finishNode(t,"Variance")):t}parseFunctionBody(t,i,s=!1){if(i){this.forwardNoArrowParamsConversionAt(t,()=>super.parseFunctionBody(t,!0,s));return}super.parseFunctionBody(t,!1,s)}parseFunctionBodyAndFinish(t,i,s=!1){if(this.match(14)){const r=this.startNode();[r.typeAnnotation,t.predicate]=this.flowParseTypeAndPredicateInitialiser(),t.returnType=r.typeAnnotation?this.finishNode(r,"TypeAnnotation"):null}return super.parseFunctionBodyAndFinish(t,i,s)}parseStatementLike(t){if(this.state.strict&&this.isContextual(129)){const s=this.lookahead();if(fu(s.type)){const r=this.startNode();return this.next(),this.flowParseInterface(r)}}else if(this.shouldParseEnums()&&this.isContextual(126)){const s=this.startNode();return this.next(),this.flowParseEnumDeclaration(s)}const i=super.parseStatementLike(t);return this.flowPragma===void 0&&!this.isValidDirective(i)&&(this.flowPragma=null),i}parseExpressionStatement(t,i,s){if(i.type==="Identifier"){if(i.name==="declare"){if(this.match(80)||on(this.state.type)||this.match(68)||this.match(74)||this.match(82))return this.flowParseDeclare(t)}else if(on(this.state.type)){if(i.name==="interface")return this.flowParseInterface(t);if(i.name==="type")return this.flowParseTypeAlias(t);if(i.name==="opaque")return this.flowParseOpaqueType(t,!1)}}return super.parseExpressionStatement(t,i,s)}shouldParseExportDeclaration(){const{type:t}=this.state;return dZ(t)||this.shouldParseEnums()&&t===126?!this.state.containsEsc:super.shouldParseExportDeclaration()}isExportDefaultSpecifier(){const{type:t}=this.state;return dZ(t)||this.shouldParseEnums()&&t===126?this.state.containsEsc:super.isExportDefaultSpecifier()}parseExportDefaultExpression(){if(this.shouldParseEnums()&&this.isContextual(126)){const t=this.startNode();return this.next(),this.flowParseEnumDeclaration(t)}return super.parseExportDefaultExpression()}parseConditional(t,i,s){if(!this.match(17))return t;if(this.state.maybeInArrowParameters){const d=this.lookaheadCharCode();if(d===44||d===61||d===58||d===41)return this.setOptionalParametersError(s),t}this.expect(17);const r=this.state.clone(),o=this.state.noArrowAt,a=this.startNodeAt(i);let{consequent:l,failed:c}=this.tryParseConditionalConsequent(),[u,h]=this.getArrowLikeExpressions(l);if(c||h.length>0){const d=[...o];if(h.length>0){this.state=r,this.state.noArrowAt=d;for(let f=0;f<h.length;f++)d.push(h[f].start);({consequent:l,failed:c}=this.tryParseConditionalConsequent()),[u,h]=this.getArrowLikeExpressions(l)}c&&u.length>1&&this.raise(Wt.AmbiguousConditionalArrow,{at:r.startLoc}),c&&u.length===1&&(this.state=r,d.push(u[0].start),this.state.noArrowAt=d,{consequent:l,failed:c}=this.tryParseConditionalConsequent())}return this.getArrowLikeExpressions(l,!0),this.state.noArrowAt=o,this.expect(14),a.test=t,a.consequent=l,a.alternate=this.forwardNoArrowParamsConversionAt(a,()=>this.parseMaybeAssign(void 0,void 0)),this.finishNode(a,"ConditionalExpression")}tryParseConditionalConsequent(){this.state.noArrowParamsConversionAt.push(this.state.start);const t=this.parseMaybeAssignAllowIn(),i=!this.match(14);return this.state.noArrowParamsConversionAt.pop(),{consequent:t,failed:i}}getArrowLikeExpressions(t,i){const s=[t],r=[];for(;s.length!==0;){const o=s.pop();o.type==="ArrowFunctionExpression"?(o.typeParameters||!o.returnType?this.finishArrowValidation(o):r.push(o),s.push(o.body)):o.type==="ConditionalExpression"&&(s.push(o.consequent),s.push(o.alternate))}return i?(r.forEach(o=>this.finishArrowValidation(o)),[r,[]]):eLe(r,o=>o.params.every(a=>this.isAssignable(a,!0)))}finishArrowValidation(t){var i;this.toAssignableList(t.params,(i=t.extra)==null?void 0:i.trailingCommaLoc,!1),this.scope.enter(6),super.checkParams(t,!1,!0),this.scope.exit()}forwardNoArrowParamsConversionAt(t,i){let s;return this.state.noArrowParamsConversionAt.indexOf(t.start)!==-1?(this.state.noArrowParamsConversionAt.push(this.state.start),s=i(),this.state.noArrowParamsConversionAt.pop()):s=i(),s}parseParenItem(t,i){if(t=super.parseParenItem(t,i),this.eat(17)&&(t.optional=!0,this.resetEndLocation(t)),this.match(14)){const s=this.startNodeAt(i);return s.expression=t,s.typeAnnotation=this.flowParseTypeAnnotation(),this.finishNode(s,"TypeCastExpression")}return t}assertModuleNodeAllowed(t){t.type==="ImportDeclaration"&&(t.importKind==="type"||t.importKind==="typeof")||t.type==="ExportNamedDeclaration"&&t.exportKind==="type"||t.type==="ExportAllDeclaration"&&t.exportKind==="type"||super.assertModuleNodeAllowed(t)}parseExportDeclaration(t){if(this.isContextual(130)){t.exportKind="type";const i=this.startNode();return this.next(),this.match(5)?(t.specifiers=this.parseExportSpecifiers(!0),super.parseExportFrom(t),null):this.flowParseTypeAlias(i)}else if(this.isContextual(131)){t.exportKind="type";const i=this.startNode();return this.next(),this.flowParseOpaqueType(i,!1)}else if(this.isContextual(129)){t.exportKind="type";const i=this.startNode();return this.next(),this.flowParseInterface(i)}else if(this.shouldParseEnums()&&this.isContextual(126)){t.exportKind="value";const i=this.startNode();return this.next(),this.flowParseEnumDeclaration(i)}else return super.parseExportDeclaration(t)}eatExportStar(t){return super.eatExportStar(t)?!0:this.isContextual(130)&&this.lookahead().type===55?(t.exportKind="type",this.next(),this.next(),!0):!1}maybeParseExportNamespaceSpecifier(t){const{startLoc:i}=this.state,s=super.maybeParseExportNamespaceSpecifier(t);return s&&t.exportKind==="type"&&this.unexpected(i),s}parseClassId(t,i,s){super.parseClassId(t,i,s),this.match(47)&&(t.typeParameters=this.flowParseTypeParameterDeclaration())}parseClassMember(t,i,s){const{startLoc:r}=this.state;if(this.isContextual(125)){if(super.parseClassMemberFromModifier(t,i))return;i.declare=!0}super.parseClassMember(t,i,s),i.declare&&(i.type!=="ClassProperty"&&i.type!=="ClassPrivateProperty"&&i.type!=="PropertyDefinition"?this.raise(Wt.DeclareClassElement,{at:r}):i.value&&this.raise(Wt.DeclareClassFieldInitializer,{at:i.value}))}isIterator(t){return t==="iterator"||t==="asyncIterator"}readIterator(){const t=super.readWord1(),i="@@"+t;(!this.isIterator(t)||!this.state.inType)&&this.raise(_e.InvalidIdentifier,{at:this.state.curPosition(),identifierName:i}),this.finishToken(132,i)}getTokenFromCode(t){const i=this.input.charCodeAt(this.state.pos+1);t===123&&i===124?this.finishOp(6,2):this.state.inType&&(t===62||t===60)?this.finishOp(t===62?48:47,1):this.state.inType&&t===63?i===46?this.finishOp(18,2):this.finishOp(17,1):Ske(t,i,this.input.charCodeAt(this.state.pos+2))?(this.state.pos+=2,this.readIterator()):super.getTokenFromCode(t)}isAssignable(t,i){return t.type==="TypeCastExpression"?this.isAssignable(t.expression,i):super.isAssignable(t,i)}toAssignable(t,i=!1){!i&&t.type==="AssignmentExpression"&&t.left.type==="TypeCastExpression"&&(t.left=this.typeCastToParameter(t.left)),super.toAssignable(t,i)}toAssignableList(t,i,s){for(let r=0;r<t.length;r++){const o=t[r];(o==null?void 0:o.type)==="TypeCastExpression"&&(t[r]=this.typeCastToParameter(o))}super.toAssignableList(t,i,s)}toReferencedList(t,i){for(let r=0;r<t.length;r++){var s;const o=t[r];o&&o.type==="TypeCastExpression"&&!((s=o.extra)!=null&&s.parenthesized)&&(t.length>1||!i)&&this.raise(Wt.TypeCastInPattern,{at:o.typeAnnotation})}return t}parseArrayLike(t,i,s,r){const o=super.parseArrayLike(t,i,s,r);return i&&!this.state.maybeInArrowParameters&&this.toReferencedList(o.elements),o}isValidLVal(t,i,s){return t==="TypeCastExpression"||super.isValidLVal(t,i,s)}parseClassProperty(t){return this.match(14)&&(t.typeAnnotation=this.flowParseTypeAnnotation()),super.parseClassProperty(t)}parseClassPrivateProperty(t){return this.match(14)&&(t.typeAnnotation=this.flowParseTypeAnnotation()),super.parseClassPrivateProperty(t)}isClassMethod(){return this.match(47)||super.isClassMethod()}isClassProperty(){return this.match(14)||super.isClassProperty()}isNonstaticConstructor(t){return!this.match(14)&&super.isNonstaticConstructor(t)}pushClassMethod(t,i,s,r,o,a){if(i.variance&&this.unexpected(i.variance.loc.start),delete i.variance,this.match(47)&&(i.typeParameters=this.flowParseTypeParameterDeclaration()),super.pushClassMethod(t,i,s,r,o,a),i.params&&o){const l=i.params;l.length>0&&this.isThisParam(l[0])&&this.raise(Wt.ThisParamBannedInConstructor,{at:i})}else if(i.type==="MethodDefinition"&&o&&i.value.params){const l=i.value.params;l.length>0&&this.isThisParam(l[0])&&this.raise(Wt.ThisParamBannedInConstructor,{at:i})}}pushClassPrivateMethod(t,i,s,r){i.variance&&this.unexpected(i.variance.loc.start),delete i.variance,this.match(47)&&(i.typeParameters=this.flowParseTypeParameterDeclaration()),super.pushClassPrivateMethod(t,i,s,r)}parseClassSuper(t){if(super.parseClassSuper(t),t.superClass&&this.match(47)&&(t.superTypeParameters=this.flowParseTypeParameterInstantiation()),this.isContextual(113)){this.next();const i=t.implements=[];do{const s=this.startNode();s.id=this.flowParseRestrictedIdentifier(!0),this.match(47)?s.typeParameters=this.flowParseTypeParameterInstantiation():s.typeParameters=null,i.push(this.finishNode(s,"ClassImplements"))}while(this.eat(12))}}checkGetterSetterParams(t){super.checkGetterSetterParams(t);const i=this.getObjectOrClassMethodParams(t);if(i.length>0){const s=i[0];this.isThisParam(s)&&t.kind==="get"?this.raise(Wt.GetterMayNotHaveThisParam,{at:s}):this.isThisParam(s)&&this.raise(Wt.SetterMayNotHaveThisParam,{at:s})}}parsePropertyNamePrefixOperator(t){t.variance=this.flowParseVariance()}parseObjPropValue(t,i,s,r,o,a,l){t.variance&&this.unexpected(t.variance.loc.start),delete t.variance;let c;this.match(47)&&!a&&(c=this.flowParseTypeParameterDeclaration(),this.match(10)||this.unexpected());const u=super.parseObjPropValue(t,i,s,r,o,a,l);return c&&((u.value||u).typeParameters=c),u}parseAssignableListItemTypes(t){return this.eat(17)&&(t.type!=="Identifier"&&this.raise(Wt.PatternIsOptional,{at:t}),this.isThisParam(t)&&this.raise(Wt.ThisParamMayNotBeOptional,{at:t}),t.optional=!0),this.match(14)?t.typeAnnotation=this.flowParseTypeAnnotation():this.isThisParam(t)&&this.raise(Wt.ThisParamAnnotationRequired,{at:t}),this.match(29)&&this.isThisParam(t)&&this.raise(Wt.ThisParamNoDefault,{at:t}),this.resetEndLocation(t),t}parseMaybeDefault(t,i){const s=super.parseMaybeDefault(t,i);return s.type==="AssignmentPattern"&&s.typeAnnotation&&s.right.start<s.typeAnnotation.start&&this.raise(Wt.TypeBeforeInitializer,{at:s.typeAnnotation}),s}checkImportReflection(t){super.checkImportReflection(t),t.module&&t.importKind!=="value"&&this.raise(Wt.ImportReflectionHasImportType,{at:t.specifiers[0].loc.start})}parseImportSpecifierLocal(t,i,s){i.local=mZ(t)?this.flowParseRestrictedIdentifier(!0,!0):this.parseIdentifier(),t.specifiers.push(this.finishImportSpecifier(i,s))}isPotentialImportPhase(t){if(super.isPotentialImportPhase(t))return!0;if(this.isContextual(130)){if(!t)return!0;const i=this.lookaheadCharCode();return i===123||i===42}return!t&&this.isContextual(87)}applyImportPhase(t,i,s,r){if(super.applyImportPhase(t,i,s,r),i){if(!s&&this.match(65))return;t.exportKind=s==="type"?s:"value"}else s==="type"&&this.match(55)&&this.unexpected(),t.importKind=s==="type"||s==="typeof"?s:"value"}parseImportSpecifier(t,i,s,r,o){const a=t.imported;let l=null;a.type==="Identifier"&&(a.name==="type"?l="type":a.name==="typeof"&&(l="typeof"));let c=!1;if(this.isContextual(93)&&!this.isLookaheadContextual("as")){const h=this.parseIdentifier(!0);l!==null&&!fu(this.state.type)?(t.imported=h,t.importKind=l,t.local=Tf(h)):(t.imported=a,t.importKind=null,t.local=this.parseIdentifier())}else{if(l!==null&&fu(this.state.type))t.imported=this.parseIdentifier(!0),t.importKind=l;else{if(i)throw this.raise(_e.ImportBindingIsString,{at:t,importName:a.value});t.imported=a,t.importKind=null}this.eatContextual(93)?t.local=this.parseIdentifier():(c=!0,t.local=Tf(t.imported))}const u=mZ(t);return s&&u&&this.raise(Wt.ImportTypeShorthandOnlyInPureImport,{at:t}),(s||u)&&this.checkReservedType(t.local.name,t.local.loc.start,!0),c&&!s&&!u&&this.checkReservedWord(t.local.name,t.loc.start,!0,!0),this.finishImportSpecifier(t,"ImportSpecifier")}parseBindingAtom(){switch(this.state.type){case 78:return this.parseIdentifier(!0);default:return super.parseBindingAtom()}}parseFunctionParams(t,i){const s=t.kind;s!=="get"&&s!=="set"&&this.match(47)&&(t.typeParameters=this.flowParseTypeParameterDeclaration()),super.parseFunctionParams(t,i)}parseVarId(t,i){super.parseVarId(t,i),this.match(14)&&(t.id.typeAnnotation=this.flowParseTypeAnnotation(),this.resetEndLocation(t.id))}parseAsyncArrowFromCallExpression(t,i){if(this.match(14)){const s=this.state.noAnonFunctionType;this.state.noAnonFunctionType=!0,t.returnType=this.flowParseTypeAnnotation(),this.state.noAnonFunctionType=s}return super.parseAsyncArrowFromCallExpression(t,i)}shouldParseAsyncArrow(){return this.match(14)||super.shouldParseAsyncArrow()}parseMaybeAssign(t,i){var s;let r=null,o;if(this.hasPlugin("jsx")&&(this.match(142)||this.match(47))){if(r=this.state.clone(),o=this.tryParse(()=>super.parseMaybeAssign(t,i),r),!o.error)return o.node;const{context:c}=this.state,u=c[c.length-1];(u===Nn.j_oTag||u===Nn.j_expr)&&c.pop()}if((s=o)!=null&&s.error||this.match(47)){var a,l;r=r||this.state.clone();let c;const u=this.tryParse(d=>{var f;c=this.flowParseTypeParameterDeclaration();const g=this.forwardNoArrowParamsConversionAt(c,()=>{const m=super.parseMaybeAssign(t,i);return this.resetStartLocationFromNode(m,c),m});(f=g.extra)!=null&&f.parenthesized&&d();const p=this.maybeUnwrapTypeCastExpression(g);return p.type!=="ArrowFunctionExpression"&&d(),p.typeParameters=c,this.resetStartLocationFromNode(p,c),g},r);let h=null;if(u.node&&this.maybeUnwrapTypeCastExpression(u.node).type==="ArrowFunctionExpression"){if(!u.error&&!u.aborted)return u.node.async&&this.raise(Wt.UnexpectedTypeParameterBeforeAsyncArrowFunction,{at:c}),u.node;h=u.node}if((a=o)!=null&&a.node)return this.state=o.failState,o.node;if(h)return this.state=u.failState,h;throw(l=o)!=null&&l.thrown?o.error:u.thrown?u.error:this.raise(Wt.UnexpectedTokenAfterTypeParameter,{at:c})}return super.parseMaybeAssign(t,i)}parseArrow(t){if(this.match(14)){const i=this.tryParse(()=>{const s=this.state.noAnonFunctionType;this.state.noAnonFunctionType=!0;const r=this.startNode();return[r.typeAnnotation,t.predicate]=this.flowParseTypeAndPredicateInitialiser(),this.state.noAnonFunctionType=s,this.canInsertSemicolon()&&this.unexpected(),this.match(19)||this.unexpected(),r});if(i.thrown)return null;i.error&&(this.state=i.failState),t.returnType=i.node.typeAnnotation?this.finishNode(i.node,"TypeAnnotation"):null}return super.parseArrow(t)}shouldParseArrow(t){return this.match(14)||super.shouldParseArrow(t)}setArrowFunctionParameters(t,i){this.state.noArrowParamsConversionAt.indexOf(t.start)!==-1?t.params=i:super.setArrowFunctionParameters(t,i)}checkParams(t,i,s,r=!0){if(!(s&&this.state.noArrowParamsConversionAt.indexOf(t.start)!==-1)){for(let o=0;o<t.params.length;o++)this.isThisParam(t.params[o])&&o>0&&this.raise(Wt.ThisParamMustBeFirst,{at:t.params[o]});super.checkParams(t,i,s,r)}}parseParenAndDistinguishExpression(t){return super.parseParenAndDistinguishExpression(t&&this.state.noArrowAt.indexOf(this.state.start)===-1)}parseSubscripts(t,i,s){if(t.type==="Identifier"&&t.name==="async"&&this.state.noArrowAt.indexOf(i.index)!==-1){this.next();const r=this.startNodeAt(i);r.callee=t,r.arguments=super.parseCallExpressionArguments(11,!1),t=this.finishNode(r,"CallExpression")}else if(t.type==="Identifier"&&t.name==="async"&&this.match(47)){const r=this.state.clone(),o=this.tryParse(l=>this.parseAsyncArrowWithTypeParameters(i)||l(),r);if(!o.error&&!o.aborted)return o.node;const a=this.tryParse(()=>super.parseSubscripts(t,i,s),r);if(a.node&&!a.error)return a.node;if(o.node)return this.state=o.failState,o.node;if(a.node)return this.state=a.failState,a.node;throw o.error||a.error}return super.parseSubscripts(t,i,s)}parseSubscript(t,i,s,r){if(this.match(18)&&this.isLookaheadToken_lt()){if(r.optionalChainMember=!0,s)return r.stop=!0,t;this.next();const o=this.startNodeAt(i);return o.callee=t,o.typeArguments=this.flowParseTypeParameterInstantiation(),this.expect(10),o.arguments=this.parseCallExpressionArguments(11,!1),o.optional=!0,this.finishCallExpression(o,!0)}else if(!s&&this.shouldParseTypes()&&this.match(47)){const o=this.startNodeAt(i);o.callee=t;const a=this.tryParse(()=>(o.typeArguments=this.flowParseTypeParameterInstantiationCallOrNew(),this.expect(10),o.arguments=super.parseCallExpressionArguments(11,!1),r.optionalChainMember&&(o.optional=!1),this.finishCallExpression(o,r.optionalChainMember)));if(a.node)return a.error&&(this.state=a.failState),a.node}return super.parseSubscript(t,i,s,r)}parseNewCallee(t){super.parseNewCallee(t);let i=null;this.shouldParseTypes()&&this.match(47)&&(i=this.tryParse(()=>this.flowParseTypeParameterInstantiationCallOrNew()).node),t.typeArguments=i}parseAsyncArrowWithTypeParameters(t){const i=this.startNodeAt(t);if(this.parseFunctionParams(i,!1),!!this.parseArrow(i))return super.parseArrowExpression(i,void 0,!0)}readToken_mult_modulo(t){const i=this.input.charCodeAt(this.state.pos+1);if(t===42&&i===47&&this.state.hasFlowComment){this.state.hasFlowComment=!1,this.state.pos+=2,this.nextToken();return}super.readToken_mult_modulo(t)}readToken_pipe_amp(t){const i=this.input.charCodeAt(this.state.pos+1);if(t===124&&i===125){this.finishOp(9,2);return}super.readToken_pipe_amp(t)}parseTopLevel(t,i){const s=super.parseTopLevel(t,i);return this.state.hasFlowComment&&this.raise(Wt.UnterminatedFlowComment,{at:this.state.curPosition()}),s}skipBlockComment(){if(this.hasPlugin("flowComments")&&this.skipFlowComment()){if(this.state.hasFlowComment)throw this.raise(Wt.NestedFlowComment,{at:this.state.startLoc});this.hasFlowCommentCompletion();const t=this.skipFlowComment();t&&(this.state.pos+=t,this.state.hasFlowComment=!0);return}return super.skipBlockComment(this.state.hasFlowComment?"*-/":"*/")}skipFlowComment(){const{pos:t}=this.state;let i=2;for(;[32,9].includes(this.input.charCodeAt(t+i));)i++;const s=this.input.charCodeAt(i+t),r=this.input.charCodeAt(i+t+1);return s===58&&r===58?i+2:this.input.slice(i+t,i+t+12)==="flow-include"?i+12:s===58&&r!==58?i:!1}hasFlowCommentCompletion(){if(this.input.indexOf("*/",this.state.pos)===-1)throw this.raise(_e.UnterminatedComment,{at:this.state.curPosition()})}flowEnumErrorBooleanMemberNotInitialized(t,{enumName:i,memberName:s}){this.raise(Wt.EnumBooleanMemberNotInitialized,{at:t,memberName:s,enumName:i})}flowEnumErrorInvalidMemberInitializer(t,i){return this.raise(i.explicitType?i.explicitType==="symbol"?Wt.EnumInvalidMemberInitializerSymbolType:Wt.EnumInvalidMemberInitializerPrimaryType:Wt.EnumInvalidMemberInitializerUnknownType,Object.assign({at:t},i))}flowEnumErrorNumberMemberNotInitialized(t,{enumName:i,memberName:s}){this.raise(Wt.EnumNumberMemberNotInitialized,{at:t,enumName:i,memberName:s})}flowEnumErrorStringMemberInconsistentlyInitialized(t,{enumName:i}){this.raise(Wt.EnumStringMemberInconsistentlyInitialized,{at:t,enumName:i})}flowEnumMemberInit(){const t=this.state.startLoc,i=()=>this.match(12)||this.match(8);switch(this.state.type){case 134:{const s=this.parseNumericLiteral(this.state.value);return i()?{type:"number",loc:s.loc.start,value:s}:{type:"invalid",loc:t}}case 133:{const s=this.parseStringLiteral(this.state.value);return i()?{type:"string",loc:s.loc.start,value:s}:{type:"invalid",loc:t}}case 85:case 86:{const s=this.parseBooleanLiteral(this.match(85));return i()?{type:"boolean",loc:s.loc.start,value:s}:{type:"invalid",loc:t}}default:return{type:"invalid",loc:t}}}flowEnumMemberRaw(){const t=this.state.startLoc,i=this.parseIdentifier(!0),s=this.eat(29)?this.flowEnumMemberInit():{type:"none",loc:t};return{id:i,init:s}}flowEnumCheckExplicitTypeMismatch(t,i,s){const{explicitType:r}=i;r!==null&&r!==s&&this.flowEnumErrorInvalidMemberInitializer(t,i)}flowEnumMembers({enumName:t,explicitType:i}){const s=new Set,r={booleanMembers:[],numberMembers:[],stringMembers:[],defaultedMembers:[]};let o=!1;for(;!this.match(8);){if(this.eat(21)){o=!0;break}const a=this.startNode(),{id:l,init:c}=this.flowEnumMemberRaw(),u=l.name;if(u==="")continue;/^[a-z]/.test(u)&&this.raise(Wt.EnumInvalidMemberName,{at:l,memberName:u,suggestion:u[0].toUpperCase()+u.slice(1),enumName:t}),s.has(u)&&this.raise(Wt.EnumDuplicateMemberName,{at:l,memberName:u,enumName:t}),s.add(u);const h={enumName:t,explicitType:i,memberName:u};switch(a.id=l,c.type){case"boolean":{this.flowEnumCheckExplicitTypeMismatch(c.loc,h,"boolean"),a.init=c.value,r.booleanMembers.push(this.finishNode(a,"EnumBooleanMember"));break}case"number":{this.flowEnumCheckExplicitTypeMismatch(c.loc,h,"number"),a.init=c.value,r.numberMembers.push(this.finishNode(a,"EnumNumberMember"));break}case"string":{this.flowEnumCheckExplicitTypeMismatch(c.loc,h,"string"),a.init=c.value,r.stringMembers.push(this.finishNode(a,"EnumStringMember"));break}case"invalid":throw this.flowEnumErrorInvalidMemberInitializer(c.loc,h);case"none":switch(i){case"boolean":this.flowEnumErrorBooleanMemberNotInitialized(c.loc,h);break;case"number":this.flowEnumErrorNumberMemberNotInitialized(c.loc,h);break;default:r.defaultedMembers.push(this.finishNode(a,"EnumDefaultedMember"))}}this.match(8)||this.expect(12)}return{members:r,hasUnknownMembers:o}}flowEnumStringMembers(t,i,{enumName:s}){if(t.length===0)return i;if(i.length===0)return t;if(i.length>t.length){for(const r of t)this.flowEnumErrorStringMemberInconsistentlyInitialized(r,{enumName:s});return i}else{for(const r of i)this.flowEnumErrorStringMemberInconsistentlyInitialized(r,{enumName:s});return t}}flowEnumParseExplicitType({enumName:t}){if(!this.eatContextual(102))return null;if(!on(this.state.type))throw this.raise(Wt.EnumInvalidExplicitTypeUnknownSupplied,{at:this.state.startLoc,enumName:t});const{value:i}=this.state;return this.next(),i!=="boolean"&&i!=="number"&&i!=="string"&&i!=="symbol"&&this.raise(Wt.EnumInvalidExplicitType,{at:this.state.startLoc,enumName:t,invalidEnumType:i}),i}flowEnumBody(t,i){const s=i.name,r=i.loc.start,o=this.flowEnumParseExplicitType({enumName:s});this.expect(5);const{members:a,hasUnknownMembers:l}=this.flowEnumMembers({enumName:s,explicitType:o});switch(t.hasUnknownMembers=l,o){case"boolean":return t.explicitType=!0,t.members=a.booleanMembers,this.expect(8),this.finishNode(t,"EnumBooleanBody");case"number":return t.explicitType=!0,t.members=a.numberMembers,this.expect(8),this.finishNode(t,"EnumNumberBody");case"string":return t.explicitType=!0,t.members=this.flowEnumStringMembers(a.stringMembers,a.defaultedMembers,{enumName:s}),this.expect(8),this.finishNode(t,"EnumStringBody");case"symbol":return t.members=a.defaultedMembers,this.expect(8),this.finishNode(t,"EnumSymbolBody");default:{const c=()=>(t.members=[],this.expect(8),this.finishNode(t,"EnumStringBody"));t.explicitType=!1;const u=a.booleanMembers.length,h=a.numberMembers.length,d=a.stringMembers.length,f=a.defaultedMembers.length;if(!u&&!h&&!d&&!f)return c();if(!u&&!h)return t.members=this.flowEnumStringMembers(a.stringMembers,a.defaultedMembers,{enumName:s}),this.expect(8),this.finishNode(t,"EnumStringBody");if(!h&&!d&&u>=f){for(const g of a.defaultedMembers)this.flowEnumErrorBooleanMemberNotInitialized(g.loc.start,{enumName:s,memberName:g.id.name});return t.members=a.booleanMembers,this.expect(8),this.finishNode(t,"EnumBooleanBody")}else if(!u&&!d&&h>=f){for(const g of a.defaultedMembers)this.flowEnumErrorNumberMemberNotInitialized(g.loc.start,{enumName:s,memberName:g.id.name});return t.members=a.numberMembers,this.expect(8),this.finishNode(t,"EnumNumberBody")}else return this.raise(Wt.EnumInconsistentMemberValues,{at:r,enumName:s}),c()}}}flowParseEnumDeclaration(t){const i=this.parseIdentifier();return t.id=i,t.body=this.flowEnumBody(this.startNode(),i),this.finishNode(t,"EnumDeclaration")}isLookaheadToken_lt(){const t=this.nextTokenStart();if(this.input.charCodeAt(t)===60){const i=this.input.charCodeAt(t+1);return i!==60&&i!==61}return!1}maybeUnwrapTypeCastExpression(t){return t.type==="TypeCastExpression"?t.expression:t}};const nLe={__proto__:null,quot:'"',amp:"&",apos:"'",lt:"<",gt:">",nbsp:" ",iexcl:"¡",cent:"¢",pound:"£",curren:"¤",yen:"¥",brvbar:"¦",sect:"§",uml:"¨",copy:"©",ordf:"ª",laquo:"«",not:"¬",shy:"­",reg:"®",macr:"¯",deg:"°",plusmn:"±",sup2:"²",sup3:"³",acute:"´",micro:"µ",para:"¶",middot:"·",cedil:"¸",sup1:"¹",ordm:"º",raquo:"»",frac14:"¼",frac12:"½",frac34:"¾",iquest:"¿",Agrave:"À",Aacute:"Á",Acirc:"Â",Atilde:"Ã",Auml:"Ä",Aring:"Å",AElig:"Æ",Ccedil:"Ç",Egrave:"È",Eacute:"É",Ecirc:"Ê",Euml:"Ë",Igrave:"Ì",Iacute:"Í",Icirc:"Î",Iuml:"Ï",ETH:"Ð",Ntilde:"Ñ",Ograve:"Ò",Oacute:"Ó",Ocirc:"Ô",Otilde:"Õ",Ouml:"Ö",times:"×",Oslash:"Ø",Ugrave:"Ù",Uacute:"Ú",Ucirc:"Û",Uuml:"Ü",Yacute:"Ý",THORN:"Þ",szlig:"ß",agrave:"à",aacute:"á",acirc:"â",atilde:"ã",auml:"ä",aring:"å",aelig:"æ",ccedil:"ç",egrave:"è",eacute:"é",ecirc:"ê",euml:"ë",igrave:"ì",iacute:"í",icirc:"î",iuml:"ï",eth:"ð",ntilde:"ñ",ograve:"ò",oacute:"ó",ocirc:"ô",otilde:"õ",ouml:"ö",divide:"÷",oslash:"ø",ugrave:"ù",uacute:"ú",ucirc:"û",uuml:"ü",yacute:"ý",thorn:"þ",yuml:"ÿ",OElig:"Œ",oelig:"œ",Scaron:"Š",scaron:"š",Yuml:"Ÿ",fnof:"ƒ",circ:"ˆ",tilde:"˜",Alpha:"Α",Beta:"Β",Gamma:"Γ",Delta:"Δ",Epsilon:"Ε",Zeta:"Ζ",Eta:"Η",Theta:"Θ",Iota:"Ι",Kappa:"Κ",Lambda:"Λ",Mu:"Μ",Nu:"Ν",Xi:"Ξ",Omicron:"Ο",Pi:"Π",Rho:"Ρ",Sigma:"Σ",Tau:"Τ",Upsilon:"Υ",Phi:"Φ",Chi:"Χ",Psi:"Ψ",Omega:"Ω",alpha:"α",beta:"β",gamma:"γ",delta:"δ",epsilon:"ε",zeta:"ζ",eta:"η",theta:"θ",iota:"ι",kappa:"κ",lambda:"λ",mu:"μ",nu:"ν",xi:"ξ",omicron:"ο",pi:"π",rho:"ρ",sigmaf:"ς",sigma:"σ",tau:"τ",upsilon:"υ",phi:"φ",chi:"χ",psi:"ψ",omega:"ω",thetasym:"ϑ",upsih:"ϒ",piv:"ϖ",ensp:" ",emsp:" ",thinsp:" ",zwnj:"‌",zwj:"‍",lrm:"‎",rlm:"‏",ndash:"–",mdash:"—",lsquo:"‘",rsquo:"’",sbquo:"‚",ldquo:"“",rdquo:"”",bdquo:"„",dagger:"†",Dagger:"‡",bull:"•",hellip:"…",permil:"‰",prime:"′",Prime:"″",lsaquo:"‹",rsaquo:"›",oline:"‾",frasl:"⁄",euro:"€",image:"ℑ",weierp:"℘",real:"ℜ",trade:"™",alefsym:"ℵ",larr:"←",uarr:"↑",rarr:"→",darr:"↓",harr:"↔",crarr:"↵",lArr:"⇐",uArr:"⇑",rArr:"⇒",dArr:"⇓",hArr:"⇔",forall:"∀",part:"∂",exist:"∃",empty:"∅",nabla:"∇",isin:"∈",notin:"∉",ni:"∋",prod:"∏",sum:"∑",minus:"−",lowast:"∗",radic:"√",prop:"∝",infin:"∞",ang:"∠",and:"∧",or:"∨",cap:"∩",cup:"∪",int:"∫",there4:"∴",sim:"∼",cong:"≅",asymp:"≈",ne:"≠",equiv:"≡",le:"≤",ge:"≥",sub:"⊂",sup:"⊃",nsub:"⊄",sube:"⊆",supe:"⊇",oplus:"⊕",otimes:"⊗",perp:"⊥",sdot:"⋅",lceil:"⌈",rceil:"⌉",lfloor:"⌊",rfloor:"⌋",lang:"〈",rang:"〉",loz:"◊",spades:"♠",clubs:"♣",hearts:"♥",diams:"♦"},qm=pf`jsx`({AttributeIsEmpty:"JSX attributes must only be assigned a non-empty expression.",MissingClosingTagElement:({openingTagName:n})=>`Expected corresponding JSX closing tag for <${n}>.`,MissingClosingTagFragment:"Expected corresponding JSX closing tag for <>.",UnexpectedSequenceExpression:"Sequence expressions cannot be directly nested inside JSX. Did you mean to wrap it in parentheses (...)?",UnexpectedToken:({unexpected:n,HTMLEntity:e})=>`Unexpected token \`${n}\`. Did you mean \`${e}\` or \`{'${n}'}\`?`,UnsupportedJsxValue:"JSX value should be either an expression or a quoted JSX text.",UnterminatedJsxContent:"Unterminated JSX contents.",UnwrappedAdjacentJSXElements:"Adjacent JSX elements must be wrapped in an enclosing tag. Did you want a JSX fragment <>...</>?"});function bg(n){return n?n.type==="JSXOpeningFragment"||n.type==="JSXClosingFragment":!1}function N0(n){if(n.type==="JSXIdentifier")return n.name;if(n.type==="JSXNamespacedName")return n.namespace.name+":"+n.name.name;if(n.type==="JSXMemberExpression")return N0(n.object)+"."+N0(n.property);throw new Error("Node had unexpected type: "+n.type)}var sLe=n=>class extends n{jsxReadToken(){let t="",i=this.state.pos;for(;;){if(this.state.pos>=this.length)throw this.raise(qm.UnterminatedJsxContent,{at:this.state.startLoc});const s=this.input.charCodeAt(this.state.pos);switch(s){case 60:case 123:if(this.state.pos===this.state.start){s===60&&this.state.canStartJSXElement?(++this.state.pos,this.finishToken(142)):super.getTokenFromCode(s);return}t+=this.input.slice(i,this.state.pos),this.finishToken(141,t);return;case 38:t+=this.input.slice(i,this.state.pos),t+=this.jsxReadEntity(),i=this.state.pos;break;case 62:case 125:default:BS(s)?(t+=this.input.slice(i,this.state.pos),t+=this.jsxReadNewLine(!0),i=this.state.pos):++this.state.pos}}}jsxReadNewLine(t){const i=this.input.charCodeAt(this.state.pos);let s;return++this.state.pos,i===13&&this.input.charCodeAt(this.state.pos)===10?(++this.state.pos,s=t?` +`:`\r +`):s=String.fromCharCode(i),++this.state.curLine,this.state.lineStart=this.state.pos,s}jsxReadString(t){let i="",s=++this.state.pos;for(;;){if(this.state.pos>=this.length)throw this.raise(_e.UnterminatedString,{at:this.state.startLoc});const r=this.input.charCodeAt(this.state.pos);if(r===t)break;r===38?(i+=this.input.slice(s,this.state.pos),i+=this.jsxReadEntity(),s=this.state.pos):BS(r)?(i+=this.input.slice(s,this.state.pos),i+=this.jsxReadNewLine(!1),s=this.state.pos):++this.state.pos}i+=this.input.slice(s,this.state.pos++),this.finishToken(133,i)}jsxReadEntity(){const t=++this.state.pos;if(this.codePointAtPos(this.state.pos)===35){++this.state.pos;let i=10;this.codePointAtPos(this.state.pos)===120&&(i=16,++this.state.pos);const s=this.readInt(i,void 0,!1,"bail");if(s!==null&&this.codePointAtPos(this.state.pos)===59)return++this.state.pos,String.fromCodePoint(s)}else{let i=0,s=!1;for(;i++<10&&this.state.pos<this.length&&!(s=this.codePointAtPos(this.state.pos)==59);)++this.state.pos;if(s){const r=this.input.slice(t,this.state.pos),o=nLe[r];if(++this.state.pos,o)return o}}return this.state.pos=t,"&"}jsxReadWord(){let t;const i=this.state.pos;do t=this.input.charCodeAt(++this.state.pos);while(cb(t)||t===45);this.finishToken(140,this.input.slice(i,this.state.pos))}jsxParseIdentifier(){const t=this.startNode();return this.match(140)?t.name=this.state.value:X$(this.state.type)?t.name=pp(this.state.type):this.unexpected(),this.next(),this.finishNode(t,"JSXIdentifier")}jsxParseNamespacedName(){const t=this.state.startLoc,i=this.jsxParseIdentifier();if(!this.eat(14))return i;const s=this.startNodeAt(t);return s.namespace=i,s.name=this.jsxParseIdentifier(),this.finishNode(s,"JSXNamespacedName")}jsxParseElementName(){const t=this.state.startLoc;let i=this.jsxParseNamespacedName();if(i.type==="JSXNamespacedName")return i;for(;this.eat(16);){const s=this.startNodeAt(t);s.object=i,s.property=this.jsxParseIdentifier(),i=this.finishNode(s,"JSXMemberExpression")}return i}jsxParseAttributeValue(){let t;switch(this.state.type){case 5:return t=this.startNode(),this.setContext(Nn.brace),this.next(),t=this.jsxParseExpressionContainer(t,Nn.j_oTag),t.expression.type==="JSXEmptyExpression"&&this.raise(qm.AttributeIsEmpty,{at:t}),t;case 142:case 133:return this.parseExprAtom();default:throw this.raise(qm.UnsupportedJsxValue,{at:this.state.startLoc})}}jsxParseEmptyExpression(){const t=this.startNodeAt(this.state.lastTokEndLoc);return this.finishNodeAt(t,"JSXEmptyExpression",this.state.startLoc)}jsxParseSpreadChild(t){return this.next(),t.expression=this.parseExpression(),this.setContext(Nn.j_expr),this.state.canStartJSXElement=!0,this.expect(8),this.finishNode(t,"JSXSpreadChild")}jsxParseExpressionContainer(t,i){if(this.match(8))t.expression=this.jsxParseEmptyExpression();else{const s=this.parseExpression();t.expression=s}return this.setContext(i),this.state.canStartJSXElement=!0,this.expect(8),this.finishNode(t,"JSXExpressionContainer")}jsxParseAttribute(){const t=this.startNode();return this.match(5)?(this.setContext(Nn.brace),this.next(),this.expect(21),t.argument=this.parseMaybeAssignAllowIn(),this.setContext(Nn.j_oTag),this.state.canStartJSXElement=!0,this.expect(8),this.finishNode(t,"JSXSpreadAttribute")):(t.name=this.jsxParseNamespacedName(),t.value=this.eat(29)?this.jsxParseAttributeValue():null,this.finishNode(t,"JSXAttribute"))}jsxParseOpeningElementAt(t){const i=this.startNodeAt(t);return this.eat(143)?this.finishNode(i,"JSXOpeningFragment"):(i.name=this.jsxParseElementName(),this.jsxParseOpeningElementAfterName(i))}jsxParseOpeningElementAfterName(t){const i=[];for(;!this.match(56)&&!this.match(143);)i.push(this.jsxParseAttribute());return t.attributes=i,t.selfClosing=this.eat(56),this.expect(143),this.finishNode(t,"JSXOpeningElement")}jsxParseClosingElementAt(t){const i=this.startNodeAt(t);return this.eat(143)?this.finishNode(i,"JSXClosingFragment"):(i.name=this.jsxParseElementName(),this.expect(143),this.finishNode(i,"JSXClosingElement"))}jsxParseElementAt(t){const i=this.startNodeAt(t),s=[],r=this.jsxParseOpeningElementAt(t);let o=null;if(!r.selfClosing){e:for(;;)switch(this.state.type){case 142:if(t=this.state.startLoc,this.next(),this.eat(56)){o=this.jsxParseClosingElementAt(t);break e}s.push(this.jsxParseElementAt(t));break;case 141:s.push(this.parseExprAtom());break;case 5:{const a=this.startNode();this.setContext(Nn.brace),this.next(),this.match(21)?s.push(this.jsxParseSpreadChild(a)):s.push(this.jsxParseExpressionContainer(a,Nn.j_expr));break}default:this.unexpected()}bg(r)&&!bg(o)&&o!==null?this.raise(qm.MissingClosingTagFragment,{at:o}):!bg(r)&&bg(o)?this.raise(qm.MissingClosingTagElement,{at:o,openingTagName:N0(r.name)}):!bg(r)&&!bg(o)&&N0(o.name)!==N0(r.name)&&this.raise(qm.MissingClosingTagElement,{at:o,openingTagName:N0(r.name)})}if(bg(r)?(i.openingFragment=r,i.closingFragment=o):(i.openingElement=r,i.closingElement=o),i.children=s,this.match(47))throw this.raise(qm.UnwrappedAdjacentJSXElements,{at:this.state.startLoc});return bg(r)?this.finishNode(i,"JSXFragment"):this.finishNode(i,"JSXElement")}jsxParseElement(){const t=this.state.startLoc;return this.next(),this.jsxParseElementAt(t)}setContext(t){const{context:i}=this.state;i[i.length-1]=t}parseExprAtom(t){return this.match(141)?this.parseLiteral(this.state.value,"JSXText"):this.match(142)?this.jsxParseElement():this.match(47)&&this.input.charCodeAt(this.state.pos)!==33?(this.replaceToken(142),this.jsxParseElement()):super.parseExprAtom(t)}skipSpace(){this.curContext().preserveSpace||super.skipSpace()}getTokenFromCode(t){const i=this.curContext();if(i===Nn.j_expr){this.jsxReadToken();return}if(i===Nn.j_oTag||i===Nn.j_cTag){if(af(t)){this.jsxReadWord();return}if(t===62){++this.state.pos,this.finishToken(143);return}if((t===34||t===39)&&i===Nn.j_oTag){this.jsxReadString(t);return}}if(t===60&&this.state.canStartJSXElement&&this.input.charCodeAt(this.state.pos+1)!==33){++this.state.pos,this.finishToken(142);return}super.getTokenFromCode(t)}updateContext(t){const{context:i,type:s}=this.state;if(s===56&&t===142)i.splice(-2,2,Nn.j_cTag),this.state.canStartJSXElement=!1;else if(s===142)i.push(Nn.j_oTag);else if(s===143){const r=i[i.length-1];r===Nn.j_oTag&&t===56||r===Nn.j_cTag?(i.pop(),this.state.canStartJSXElement=i[i.length-1]===Nn.j_expr):(this.setContext(Nn.j_expr),this.state.canStartJSXElement=!0)}else this.state.canStartJSXElement=ake(s)}};class rLe extends ez{constructor(...e){super(...e),this.types=new Set,this.enums=new Set,this.constEnums=new Set,this.classes=new Set,this.exportOnlyBindings=new Set}}class oLe extends tz{constructor(...e){super(...e),this.importsStack=[]}createScope(e){return this.importsStack.push(new Set),new rLe(e)}enter(e){e==256&&this.importsStack.push(new Set),super.enter(e)}exit(){const e=super.exit();return e==256&&this.importsStack.pop(),e}hasImport(e,t){const i=this.importsStack.length;if(this.importsStack[i-1].has(e))return!0;if(!t&&i>1){for(let s=0;s<i-1;s++)if(this.importsStack[s].has(e))return!0}return!1}declareName(e,t,i){if(t&4096){this.hasImport(e,!0)&&this.parser.raise(_e.VarRedeclaration,{at:i,identifierName:e}),this.importsStack[this.importsStack.length-1].add(e);return}const s=this.currentScope();if(t&1024){this.maybeExportDefined(s,e),s.exportOnlyBindings.add(e);return}super.declareName(e,t,i),t&2&&(t&1||(this.checkRedeclarationInScope(s,e,t,i),this.maybeExportDefined(s,e)),s.types.add(e)),t&256&&s.enums.add(e),t&512&&s.constEnums.add(e),t&128&&s.classes.add(e)}isRedeclaredInScope(e,t,i){if(e.enums.has(t)){if(i&256){const s=!!(i&512),r=e.constEnums.has(t);return s!==r}return!0}return i&128&&e.classes.has(t)?e.lexical.has(t)?!!(i&1):!1:i&2&&e.types.has(t)?!0:super.isRedeclaredInScope(e,t,i)}checkLocalExport(e){const{name:t}=e;if(this.hasImport(t))return;const i=this.scopeStack.length;for(let s=i-1;s>=0;s--){const r=this.scopeStack[s];if(r.types.has(t)||r.exportOnlyBindings.has(t))return}super.checkLocalExport(e)}}const aLe=(n,e)=>Object.hasOwnProperty.call(n,e)&&n[e],Zae=n=>n.type==="ParenthesizedExpression"?Zae(n.expression):n;class lLe extends Zke{toAssignable(e,t=!1){var i,s;let r;switch((e.type==="ParenthesizedExpression"||(i=e.extra)!=null&&i.parenthesized)&&(r=Zae(e),t?r.type==="Identifier"?this.expressionScope.recordArrowParameterBindingError(_e.InvalidParenthesizedAssignment,{at:e}):r.type!=="MemberExpression"&&!this.isOptionalMemberExpression(r)&&this.raise(_e.InvalidParenthesizedAssignment,{at:e}):this.raise(_e.InvalidParenthesizedAssignment,{at:e})),e.type){case"Identifier":case"ObjectPattern":case"ArrayPattern":case"AssignmentPattern":case"RestElement":break;case"ObjectExpression":e.type="ObjectPattern";for(let a=0,l=e.properties.length,c=l-1;a<l;a++){var o;const u=e.properties[a],h=a===c;this.toAssignableObjectExpressionProp(u,h,t),h&&u.type==="RestElement"&&(o=e.extra)!=null&&o.trailingCommaLoc&&this.raise(_e.RestTrailingComma,{at:e.extra.trailingCommaLoc})}break;case"ObjectProperty":{const{key:a,value:l}=e;this.isPrivateName(a)&&this.classScope.usePrivateName(this.getPrivateNameSV(a),a.loc.start),this.toAssignable(l,t);break}case"SpreadElement":throw new Error("Internal @babel/parser error (this is a bug, please report it). SpreadElement should be converted by .toAssignable's caller.");case"ArrayExpression":e.type="ArrayPattern",this.toAssignableList(e.elements,(s=e.extra)==null?void 0:s.trailingCommaLoc,t);break;case"AssignmentExpression":e.operator!=="="&&this.raise(_e.MissingEqInAssignment,{at:e.left.loc.end}),e.type="AssignmentPattern",delete e.operator,this.toAssignable(e.left,t);break;case"ParenthesizedExpression":this.toAssignable(r,t);break}}toAssignableObjectExpressionProp(e,t,i){if(e.type==="ObjectMethod")this.raise(e.kind==="get"||e.kind==="set"?_e.PatternHasAccessor:_e.PatternHasMethod,{at:e.key});else if(e.type==="SpreadElement"){e.type="RestElement";const s=e.argument;this.checkToRestConversion(s,!1),this.toAssignable(s,i),t||this.raise(_e.RestTrailingComma,{at:e})}else this.toAssignable(e,i)}toAssignableList(e,t,i){const s=e.length-1;for(let r=0;r<=s;r++){const o=e[r];if(o){if(o.type==="SpreadElement"){o.type="RestElement";const a=o.argument;this.checkToRestConversion(a,!0),this.toAssignable(a,i)}else this.toAssignable(o,i);o.type==="RestElement"&&(r<s?this.raise(_e.RestTrailingComma,{at:o}):t&&this.raise(_e.RestTrailingComma,{at:t}))}}}isAssignable(e,t){switch(e.type){case"Identifier":case"ObjectPattern":case"ArrayPattern":case"AssignmentPattern":case"RestElement":return!0;case"ObjectExpression":{const i=e.properties.length-1;return e.properties.every((s,r)=>s.type!=="ObjectMethod"&&(r===i||s.type!=="SpreadElement")&&this.isAssignable(s))}case"ObjectProperty":return this.isAssignable(e.value);case"SpreadElement":return this.isAssignable(e.argument);case"ArrayExpression":return e.elements.every(i=>i===null||this.isAssignable(i));case"AssignmentExpression":return e.operator==="=";case"ParenthesizedExpression":return this.isAssignable(e.expression);case"MemberExpression":case"OptionalMemberExpression":return!t;default:return!1}}toReferencedList(e,t){return e}toReferencedListDeep(e,t){this.toReferencedList(e,t);for(const i of e)(i==null?void 0:i.type)==="ArrayExpression"&&this.toReferencedListDeep(i.elements)}parseSpread(e){const t=this.startNode();return this.next(),t.argument=this.parseMaybeAssignAllowIn(e,void 0),this.finishNode(t,"SpreadElement")}parseRestBinding(){const e=this.startNode();return this.next(),e.argument=this.parseBindingAtom(),this.finishNode(e,"RestElement")}parseBindingAtom(){switch(this.state.type){case 0:{const e=this.startNode();return this.next(),e.elements=this.parseBindingList(3,93,1),this.finishNode(e,"ArrayPattern")}case 5:return this.parseObjectLike(8,!0)}return this.parseIdentifier()}parseBindingList(e,t,i){const s=i&1,r=[];let o=!0;for(;!this.eat(e);)if(o?o=!1:this.expect(12),s&&this.match(12))r.push(null);else{if(this.eat(e))break;if(this.match(21)){if(r.push(this.parseAssignableListItemTypes(this.parseRestBinding(),i)),!this.checkCommaAfterRest(t)){this.expect(e);break}}else{const a=[];for(this.match(26)&&this.hasPlugin("decorators")&&this.raise(_e.UnsupportedParameterDecorator,{at:this.state.startLoc});this.match(26);)a.push(this.parseDecorator());r.push(this.parseAssignableListItem(i,a))}}return r}parseBindingRestProperty(e){return this.next(),e.argument=this.parseIdentifier(),this.checkCommaAfterRest(125),this.finishNode(e,"RestElement")}parseBindingProperty(){const e=this.startNode(),{type:t,startLoc:i}=this.state;return t===21?this.parseBindingRestProperty(e):(t===138?(this.expectPlugin("destructuringPrivate",i),this.classScope.usePrivateName(this.state.value,i),e.key=this.parsePrivateName()):this.parsePropertyName(e),e.method=!1,this.parseObjPropValue(e,i,!1,!1,!0,!1))}parseAssignableListItem(e,t){const i=this.parseMaybeDefault();this.parseAssignableListItemTypes(i,e);const s=this.parseMaybeDefault(i.loc.start,i);return t.length&&(i.decorators=t),s}parseAssignableListItemTypes(e,t){return e}parseMaybeDefault(e,t){var i,s;if((i=e)!=null||(e=this.state.startLoc),t=(s=t)!=null?s:this.parseBindingAtom(),!this.eat(29))return t;const r=this.startNodeAt(e);return r.left=t,r.right=this.parseMaybeAssignAllowIn(),this.finishNode(r,"AssignmentPattern")}isValidLVal(e,t,i){return aLe({AssignmentPattern:"left",RestElement:"argument",ObjectProperty:"value",ParenthesizedExpression:"expression",ArrayPattern:"elements",ObjectPattern:"properties"},e)}isOptionalMemberExpression(e){return e.type==="OptionalMemberExpression"}checkLVal(e,{in:t,binding:i=64,checkClashes:s=!1,strictModeChanged:r=!1,hasParenthesizedAncestor:o=!1}){var a;const l=e.type;if(this.isObjectMethod(e))return;const c=this.isOptionalMemberExpression(e);if(c||l==="MemberExpression"){c&&(this.expectPlugin("optionalChainingAssign",e.loc.start),t.type!=="AssignmentExpression"&&this.raise(_e.InvalidLhsOptionalChaining,{at:e,ancestor:t})),i!==64&&this.raise(_e.InvalidPropertyBindingPattern,{at:e});return}if(l==="Identifier"){this.checkIdentifier(e,i,r);const{name:g}=e;s&&(s.has(g)?this.raise(_e.ParamDupe,{at:e}):s.add(g));return}const u=this.isValidLVal(l,!(o||(a=e.extra)!=null&&a.parenthesized)&&t.type==="AssignmentExpression",i);if(u===!0)return;if(u===!1){const g=i===64?_e.InvalidLhs:_e.InvalidLhsBinding;this.raise(g,{at:e,ancestor:t});return}const[h,d]=Array.isArray(u)?u:[u,l==="ParenthesizedExpression"],f=l==="ArrayPattern"||l==="ObjectPattern"?{type:l}:t;for(const g of[].concat(e[h]))g&&this.checkLVal(g,{in:f,binding:i,checkClashes:s,strictModeChanged:r,hasParenthesizedAncestor:d})}checkIdentifier(e,t,i=!1){this.state.strict&&(i?$ae(e.name,this.inModule):Hae(e.name))&&(t===64?this.raise(_e.StrictEvalArguments,{at:e,referenceName:e.name}):this.raise(_e.StrictEvalArgumentsBinding,{at:e,bindingName:e.name})),t&8192&&e.name==="let"&&this.raise(_e.LetInLexicalBinding,{at:e}),t&64||this.declareNameFromIdentifier(e,t)}declareNameFromIdentifier(e,t){this.scope.declareName(e.name,t,e.loc.start)}checkToRestConversion(e,t){switch(e.type){case"ParenthesizedExpression":this.checkToRestConversion(e.expression,t);break;case"Identifier":case"MemberExpression":break;case"ArrayExpression":case"ObjectExpression":if(t)break;default:this.raise(_e.InvalidRestAssignmentPattern,{at:e})}}checkCommaAfterRest(e){return this.match(12)?(this.raise(this.lookaheadCharCode()===e?_e.RestTrailingComma:_e.ElementAfterRest,{at:this.state.startLoc}),!0):!1}}const cLe=(n,e)=>Object.hasOwnProperty.call(n,e)&&n[e];function uLe(n){if(n==null)throw new Error(`Unexpected ${n} value.`);return n}function _Z(n){if(!n)throw new Error("Assert fail")}const Ct=pf`typescript`({AbstractMethodHasImplementation:({methodName:n})=>`Method '${n}' cannot have an implementation because it is marked abstract.`,AbstractPropertyHasInitializer:({propertyName:n})=>`Property '${n}' cannot have an initializer because it is marked abstract.`,AccesorCannotDeclareThisParameter:"'get' and 'set' accessors cannot declare 'this' parameters.",AccesorCannotHaveTypeParameters:"An accessor cannot have type parameters.",AccessorCannotBeOptional:"An 'accessor' property cannot be declared optional.",ClassMethodHasDeclare:"Class methods cannot have the 'declare' modifier.",ClassMethodHasReadonly:"Class methods cannot have the 'readonly' modifier.",ConstInitiailizerMustBeStringOrNumericLiteralOrLiteralEnumReference:"A 'const' initializer in an ambient context must be a string or numeric literal or literal enum reference.",ConstructorHasTypeParameters:"Type parameters cannot appear on a constructor declaration.",DeclareAccessor:({kind:n})=>`'declare' is not allowed in ${n}ters.`,DeclareClassFieldHasInitializer:"Initializers are not allowed in ambient contexts.",DeclareFunctionHasImplementation:"An implementation cannot be declared in ambient contexts.",DuplicateAccessibilityModifier:({modifier:n})=>"Accessibility modifier already seen.",DuplicateModifier:({modifier:n})=>`Duplicate modifier: '${n}'.`,EmptyHeritageClauseType:({token:n})=>`'${n}' list cannot be empty.`,EmptyTypeArguments:"Type argument list cannot be empty.",EmptyTypeParameters:"Type parameter list cannot be empty.",ExpectedAmbientAfterExportDeclare:"'export declare' must be followed by an ambient declaration.",ImportAliasHasImportType:"An import alias can not use 'import type'.",ImportReflectionHasImportType:"An `import module` declaration can not use `type` modifier",IncompatibleModifiers:({modifiers:n})=>`'${n[0]}' modifier cannot be used with '${n[1]}' modifier.`,IndexSignatureHasAbstract:"Index signatures cannot have the 'abstract' modifier.",IndexSignatureHasAccessibility:({modifier:n})=>`Index signatures cannot have an accessibility modifier ('${n}').`,IndexSignatureHasDeclare:"Index signatures cannot have the 'declare' modifier.",IndexSignatureHasOverride:"'override' modifier cannot appear on an index signature.",IndexSignatureHasStatic:"Index signatures cannot have the 'static' modifier.",InitializerNotAllowedInAmbientContext:"Initializers are not allowed in ambient contexts.",InvalidModifierOnTypeMember:({modifier:n})=>`'${n}' modifier cannot appear on a type member.`,InvalidModifierOnTypeParameter:({modifier:n})=>`'${n}' modifier cannot appear on a type parameter.`,InvalidModifierOnTypeParameterPositions:({modifier:n})=>`'${n}' modifier can only appear on a type parameter of a class, interface or type alias.`,InvalidModifiersOrder:({orderedModifiers:n})=>`'${n[0]}' modifier must precede '${n[1]}' modifier.`,InvalidPropertyAccessAfterInstantiationExpression:"Invalid property access after an instantiation expression. You can either wrap the instantiation expression in parentheses, or delete the type arguments.",InvalidTupleMemberLabel:"Tuple members must be labeled with a simple identifier.",MissingInterfaceName:"'interface' declarations must be followed by an identifier.",NonAbstractClassHasAbstractMethod:"Abstract methods can only appear within an abstract class.",NonClassMethodPropertyHasAbstractModifer:"'abstract' modifier can only appear on a class, method, or property declaration.",OptionalTypeBeforeRequired:"A required element cannot follow an optional element.",OverrideNotInSubClass:"This member cannot have an 'override' modifier because its containing class does not extend another class.",PatternIsOptional:"A binding pattern parameter cannot be optional in an implementation signature.",PrivateElementHasAbstract:"Private elements cannot have the 'abstract' modifier.",PrivateElementHasAccessibility:({modifier:n})=>`Private elements cannot have an accessibility modifier ('${n}').`,ReadonlyForMethodSignature:"'readonly' modifier can only appear on a property declaration or index signature.",ReservedArrowTypeParam:"This syntax is reserved in files with the .mts or .cts extension. Add a trailing comma, as in `<T,>() => ...`.",ReservedTypeAssertion:"This syntax is reserved in files with the .mts or .cts extension. Use an `as` expression instead.",SetAccesorCannotHaveOptionalParameter:"A 'set' accessor cannot have an optional parameter.",SetAccesorCannotHaveRestParameter:"A 'set' accessor cannot have rest parameter.",SetAccesorCannotHaveReturnType:"A 'set' accessor cannot have a return type annotation.",SingleTypeParameterWithoutTrailingComma:({typeParameterName:n})=>`Single type parameter ${n} should have a trailing comma. Example usage: <${n},>.`,StaticBlockCannotHaveModifier:"Static class blocks cannot have any modifier.",TupleOptionalAfterType:"A labeled tuple optional element must be declared using a question mark after the name and before the colon (`name?: type`), rather than after the type (`name: type?`).",TypeAnnotationAfterAssign:"Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`.",TypeImportCannotSpecifyDefaultAndNamed:"A type-only import can specify a default import or named bindings, but not both.",TypeModifierIsUsedInTypeExports:"The 'type' modifier cannot be used on a named export when 'export type' is used on its export statement.",TypeModifierIsUsedInTypeImports:"The 'type' modifier cannot be used on a named import when 'import type' is used on its import statement.",UnexpectedParameterModifier:"A parameter property is only allowed in a constructor implementation.",UnexpectedReadonly:"'readonly' type modifier is only permitted on array and tuple literal types.",UnexpectedTypeAnnotation:"Did not expect a type annotation here.",UnexpectedTypeCastInParameter:"Unexpected type cast in parameter position.",UnsupportedImportTypeArgument:"Argument in a type import must be a string literal.",UnsupportedParameterPropertyKind:"A parameter property may not be declared using a binding pattern.",UnsupportedSignatureParameterKind:({type:n})=>`Name in a signature must be an Identifier, ObjectPattern or ArrayPattern, instead got ${n}.`});function hLe(n){switch(n){case"any":return"TSAnyKeyword";case"boolean":return"TSBooleanKeyword";case"bigint":return"TSBigIntKeyword";case"never":return"TSNeverKeyword";case"number":return"TSNumberKeyword";case"object":return"TSObjectKeyword";case"string":return"TSStringKeyword";case"symbol":return"TSSymbolKeyword";case"undefined":return"TSUndefinedKeyword";case"unknown":return"TSUnknownKeyword";default:return}}function vZ(n){return n==="private"||n==="public"||n==="protected"}function dLe(n){return n==="in"||n==="out"}var fLe=n=>class extends n{constructor(...t){super(...t),this.tsParseInOutModifiers=this.tsParseModifiers.bind(this,{allowedModifiers:["in","out"],disallowedModifiers:["const","public","private","protected","readonly","declare","abstract","override"],errorTemplate:Ct.InvalidModifierOnTypeParameter}),this.tsParseConstModifier=this.tsParseModifiers.bind(this,{allowedModifiers:["const"],disallowedModifiers:["in","out"],errorTemplate:Ct.InvalidModifierOnTypeParameterPositions}),this.tsParseInOutConstModifiers=this.tsParseModifiers.bind(this,{allowedModifiers:["in","out","const"],disallowedModifiers:["public","private","protected","readonly","declare","abstract","override"],errorTemplate:Ct.InvalidModifierOnTypeParameter})}getScopeHandler(){return oLe}tsIsIdentifier(){return on(this.state.type)}tsTokenCanFollowModifier(){return(this.match(0)||this.match(5)||this.match(55)||this.match(21)||this.match(138)||this.isLiteralPropertyName())&&!this.hasPrecedingLineBreak()}tsNextTokenCanFollowModifier(){return this.next(),this.tsTokenCanFollowModifier()}tsParseModifier(t,i){if(!on(this.state.type)&&this.state.type!==58&&this.state.type!==75)return;const s=this.state.value;if(t.indexOf(s)!==-1){if(i&&this.tsIsStartOfStaticBlocks())return;if(this.tsTryParse(this.tsNextTokenCanFollowModifier.bind(this)))return s}}tsParseModifiers({allowedModifiers:t,disallowedModifiers:i,stopOnStartOfClassStaticBlock:s,errorTemplate:r=Ct.InvalidModifierOnTypeMember},o){const a=(c,u,h,d)=>{u===h&&o[d]&&this.raise(Ct.InvalidModifiersOrder,{at:c,orderedModifiers:[h,d]})},l=(c,u,h,d)=>{(o[h]&&u===d||o[d]&&u===h)&&this.raise(Ct.IncompatibleModifiers,{at:c,modifiers:[h,d]})};for(;;){const{startLoc:c}=this.state,u=this.tsParseModifier(t.concat(i??[]),s);if(!u)break;vZ(u)?o.accessibility?this.raise(Ct.DuplicateAccessibilityModifier,{at:c,modifier:u}):(a(c,u,u,"override"),a(c,u,u,"static"),a(c,u,u,"readonly"),o.accessibility=u):dLe(u)?(o[u]&&this.raise(Ct.DuplicateModifier,{at:c,modifier:u}),o[u]=!0,a(c,u,"in","out")):(Object.hasOwnProperty.call(o,u)?this.raise(Ct.DuplicateModifier,{at:c,modifier:u}):(a(c,u,"static","readonly"),a(c,u,"static","override"),a(c,u,"override","readonly"),a(c,u,"abstract","override"),l(c,u,"declare","override"),l(c,u,"static","abstract")),o[u]=!0),i!=null&&i.includes(u)&&this.raise(r,{at:c,modifier:u})}}tsIsListTerminator(t){switch(t){case"EnumMembers":case"TypeMembers":return this.match(8);case"HeritageClauseElement":return this.match(5);case"TupleElementTypes":return this.match(3);case"TypeParametersOrArguments":return this.match(48)}}tsParseList(t,i){const s=[];for(;!this.tsIsListTerminator(t);)s.push(i());return s}tsParseDelimitedList(t,i,s){return uLe(this.tsParseDelimitedListWorker(t,i,!0,s))}tsParseDelimitedListWorker(t,i,s,r){const o=[];let a=-1;for(;!this.tsIsListTerminator(t);){a=-1;const l=i();if(l==null)return;if(o.push(l),this.eat(12)){a=this.state.lastTokStart;continue}if(this.tsIsListTerminator(t))break;s&&this.expect(12);return}return r&&(r.value=a),o}tsParseBracketedList(t,i,s,r,o){r||(s?this.expect(0):this.expect(47));const a=this.tsParseDelimitedList(t,i,o);return s?this.expect(3):this.expect(48),a}tsParseImportType(){const t=this.startNode();return this.expect(83),this.expect(10),this.match(133)||this.raise(Ct.UnsupportedImportTypeArgument,{at:this.state.startLoc}),t.argument=super.parseExprAtom(),this.expect(11),this.eat(16)&&(t.qualifier=this.tsParseEntityName()),this.match(47)&&(t.typeParameters=this.tsParseTypeArguments()),this.finishNode(t,"TSImportType")}tsParseEntityName(t=!0){let i=this.parseIdentifier(t);for(;this.eat(16);){const s=this.startNodeAtNode(i);s.left=i,s.right=this.parseIdentifier(t),i=this.finishNode(s,"TSQualifiedName")}return i}tsParseTypeReference(){const t=this.startNode();return t.typeName=this.tsParseEntityName(),!this.hasPrecedingLineBreak()&&this.match(47)&&(t.typeParameters=this.tsParseTypeArguments()),this.finishNode(t,"TSTypeReference")}tsParseThisTypePredicate(t){this.next();const i=this.startNodeAtNode(t);return i.parameterName=t,i.typeAnnotation=this.tsParseTypeAnnotation(!1),i.asserts=!1,this.finishNode(i,"TSTypePredicate")}tsParseThisTypeNode(){const t=this.startNode();return this.next(),this.finishNode(t,"TSThisType")}tsParseTypeQuery(){const t=this.startNode();return this.expect(87),this.match(83)?t.exprName=this.tsParseImportType():t.exprName=this.tsParseEntityName(),!this.hasPrecedingLineBreak()&&this.match(47)&&(t.typeParameters=this.tsParseTypeArguments()),this.finishNode(t,"TSTypeQuery")}tsParseTypeParameter(t){const i=this.startNode();return t(i),i.name=this.tsParseTypeParameterName(),i.constraint=this.tsEatThenParseType(81),i.default=this.tsEatThenParseType(29),this.finishNode(i,"TSTypeParameter")}tsTryParseTypeParameters(t){if(this.match(47))return this.tsParseTypeParameters(t)}tsParseTypeParameters(t){const i=this.startNode();this.match(47)||this.match(142)?this.next():this.unexpected();const s={value:-1};return i.params=this.tsParseBracketedList("TypeParametersOrArguments",this.tsParseTypeParameter.bind(this,t),!1,!0,s),i.params.length===0&&this.raise(Ct.EmptyTypeParameters,{at:i}),s.value!==-1&&this.addExtra(i,"trailingComma",s.value),this.finishNode(i,"TSTypeParameterDeclaration")}tsFillSignature(t,i){const s=t===19,r="parameters",o="typeAnnotation";i.typeParameters=this.tsTryParseTypeParameters(this.tsParseConstModifier),this.expect(10),i[r]=this.tsParseBindingListForSignature(),s?i[o]=this.tsParseTypeOrTypePredicateAnnotation(t):this.match(t)&&(i[o]=this.tsParseTypeOrTypePredicateAnnotation(t))}tsParseBindingListForSignature(){const t=super.parseBindingList(11,41,2);for(const i of t){const{type:s}=i;(s==="AssignmentPattern"||s==="TSParameterProperty")&&this.raise(Ct.UnsupportedSignatureParameterKind,{at:i,type:s})}return t}tsParseTypeMemberSemicolon(){!this.eat(12)&&!this.isLineTerminator()&&this.expect(13)}tsParseSignatureMember(t,i){return this.tsFillSignature(14,i),this.tsParseTypeMemberSemicolon(),this.finishNode(i,t)}tsIsUnambiguouslyIndexSignature(){return this.next(),on(this.state.type)?(this.next(),this.match(14)):!1}tsTryParseIndexSignature(t){if(!(this.match(0)&&this.tsLookAhead(this.tsIsUnambiguouslyIndexSignature.bind(this))))return;this.expect(0);const i=this.parseIdentifier();i.typeAnnotation=this.tsParseTypeAnnotation(),this.resetEndLocation(i),this.expect(3),t.parameters=[i];const s=this.tsTryParseTypeAnnotation();return s&&(t.typeAnnotation=s),this.tsParseTypeMemberSemicolon(),this.finishNode(t,"TSIndexSignature")}tsParsePropertyOrMethodSignature(t,i){this.eat(17)&&(t.optional=!0);const s=t;if(this.match(10)||this.match(47)){i&&this.raise(Ct.ReadonlyForMethodSignature,{at:t});const r=s;r.kind&&this.match(47)&&this.raise(Ct.AccesorCannotHaveTypeParameters,{at:this.state.curPosition()}),this.tsFillSignature(14,r),this.tsParseTypeMemberSemicolon();const o="parameters",a="typeAnnotation";if(r.kind==="get")r[o].length>0&&(this.raise(_e.BadGetterArity,{at:this.state.curPosition()}),this.isThisParam(r[o][0])&&this.raise(Ct.AccesorCannotDeclareThisParameter,{at:this.state.curPosition()}));else if(r.kind==="set"){if(r[o].length!==1)this.raise(_e.BadSetterArity,{at:this.state.curPosition()});else{const l=r[o][0];this.isThisParam(l)&&this.raise(Ct.AccesorCannotDeclareThisParameter,{at:this.state.curPosition()}),l.type==="Identifier"&&l.optional&&this.raise(Ct.SetAccesorCannotHaveOptionalParameter,{at:this.state.curPosition()}),l.type==="RestElement"&&this.raise(Ct.SetAccesorCannotHaveRestParameter,{at:this.state.curPosition()})}r[a]&&this.raise(Ct.SetAccesorCannotHaveReturnType,{at:r[a]})}else r.kind="method";return this.finishNode(r,"TSMethodSignature")}else{const r=s;i&&(r.readonly=!0);const o=this.tsTryParseTypeAnnotation();return o&&(r.typeAnnotation=o),this.tsParseTypeMemberSemicolon(),this.finishNode(r,"TSPropertySignature")}}tsParseTypeMember(){const t=this.startNode();if(this.match(10)||this.match(47))return this.tsParseSignatureMember("TSCallSignatureDeclaration",t);if(this.match(77)){const s=this.startNode();return this.next(),this.match(10)||this.match(47)?this.tsParseSignatureMember("TSConstructSignatureDeclaration",t):(t.key=this.createIdentifier(s,"new"),this.tsParsePropertyOrMethodSignature(t,!1))}this.tsParseModifiers({allowedModifiers:["readonly"],disallowedModifiers:["declare","abstract","private","protected","public","static","override"]},t);const i=this.tsTryParseIndexSignature(t);return i||(super.parsePropertyName(t),!t.computed&&t.key.type==="Identifier"&&(t.key.name==="get"||t.key.name==="set")&&this.tsTokenCanFollowModifier()&&(t.kind=t.key.name,super.parsePropertyName(t)),this.tsParsePropertyOrMethodSignature(t,!!t.readonly))}tsParseTypeLiteral(){const t=this.startNode();return t.members=this.tsParseObjectTypeMembers(),this.finishNode(t,"TSTypeLiteral")}tsParseObjectTypeMembers(){this.expect(5);const t=this.tsParseList("TypeMembers",this.tsParseTypeMember.bind(this));return this.expect(8),t}tsIsStartOfMappedType(){return this.next(),this.eat(53)?this.isContextual(122):(this.isContextual(122)&&this.next(),!this.match(0)||(this.next(),!this.tsIsIdentifier())?!1:(this.next(),this.match(58)))}tsParseMappedTypeParameter(){const t=this.startNode();return t.name=this.tsParseTypeParameterName(),t.constraint=this.tsExpectThenParseType(58),this.finishNode(t,"TSTypeParameter")}tsParseMappedType(){const t=this.startNode();return this.expect(5),this.match(53)?(t.readonly=this.state.value,this.next(),this.expectContextual(122)):this.eatContextual(122)&&(t.readonly=!0),this.expect(0),t.typeParameter=this.tsParseMappedTypeParameter(),t.nameType=this.eatContextual(93)?this.tsParseType():null,this.expect(3),this.match(53)?(t.optional=this.state.value,this.next(),this.expect(17)):this.eat(17)&&(t.optional=!0),t.typeAnnotation=this.tsTryParseType(),this.semicolon(),this.expect(8),this.finishNode(t,"TSMappedType")}tsParseTupleType(){const t=this.startNode();t.elementTypes=this.tsParseBracketedList("TupleElementTypes",this.tsParseTupleElementType.bind(this),!0,!1);let i=!1;return t.elementTypes.forEach(s=>{const{type:r}=s;i&&r!=="TSRestType"&&r!=="TSOptionalType"&&!(r==="TSNamedTupleMember"&&s.optional)&&this.raise(Ct.OptionalTypeBeforeRequired,{at:s}),i||(i=r==="TSNamedTupleMember"&&s.optional||r==="TSOptionalType")}),this.finishNode(t,"TSTupleType")}tsParseTupleElementType(){const{startLoc:t}=this.state,i=this.eat(21);let s,r,o,a;const c=fu(this.state.type)?this.lookaheadCharCode():null;if(c===58)s=!0,o=!1,r=this.parseIdentifier(!0),this.expect(14),a=this.tsParseType();else if(c===63){o=!0;const u=this.state.startLoc,h=this.state.value,d=this.tsParseNonArrayType();this.lookaheadCharCode()===58?(s=!0,r=this.createIdentifier(this.startNodeAt(u),h),this.expect(17),this.expect(14),a=this.tsParseType()):(s=!1,a=d,this.expect(17))}else a=this.tsParseType(),o=this.eat(17),s=this.eat(14);if(s){let u;r?(u=this.startNodeAtNode(r),u.optional=o,u.label=r,u.elementType=a,this.eat(17)&&(u.optional=!0,this.raise(Ct.TupleOptionalAfterType,{at:this.state.lastTokStartLoc}))):(u=this.startNodeAtNode(a),u.optional=o,this.raise(Ct.InvalidTupleMemberLabel,{at:a}),u.label=a,u.elementType=this.tsParseType()),a=this.finishNode(u,"TSNamedTupleMember")}else if(o){const u=this.startNodeAtNode(a);u.typeAnnotation=a,a=this.finishNode(u,"TSOptionalType")}if(i){const u=this.startNodeAt(t);u.typeAnnotation=a,a=this.finishNode(u,"TSRestType")}return a}tsParseParenthesizedType(){const t=this.startNode();return this.expect(10),t.typeAnnotation=this.tsParseType(),this.expect(11),this.finishNode(t,"TSParenthesizedType")}tsParseFunctionOrConstructorType(t,i){const s=this.startNode();return t==="TSConstructorType"&&(s.abstract=!!i,i&&this.next(),this.next()),this.tsInAllowConditionalTypesContext(()=>this.tsFillSignature(19,s)),this.finishNode(s,t)}tsParseLiteralTypeNode(){const t=this.startNode();switch(this.state.type){case 134:case 135:case 133:case 85:case 86:t.literal=super.parseExprAtom();break;default:this.unexpected()}return this.finishNode(t,"TSLiteralType")}tsParseTemplateLiteralType(){const t=this.startNode();return t.literal=super.parseTemplate(!1),this.finishNode(t,"TSLiteralType")}parseTemplateSubstitution(){return this.state.inType?this.tsParseType():super.parseTemplateSubstitution()}tsParseThisTypeOrThisTypePredicate(){const t=this.tsParseThisTypeNode();return this.isContextual(116)&&!this.hasPrecedingLineBreak()?this.tsParseThisTypePredicate(t):t}tsParseNonArrayType(){switch(this.state.type){case 133:case 134:case 135:case 85:case 86:return this.tsParseLiteralTypeNode();case 53:if(this.state.value==="-"){const t=this.startNode(),i=this.lookahead();return i.type!==134&&i.type!==135&&this.unexpected(),t.literal=this.parseMaybeUnary(),this.finishNode(t,"TSLiteralType")}break;case 78:return this.tsParseThisTypeOrThisTypePredicate();case 87:return this.tsParseTypeQuery();case 83:return this.tsParseImportType();case 5:return this.tsLookAhead(this.tsIsStartOfMappedType.bind(this))?this.tsParseMappedType():this.tsParseTypeLiteral();case 0:return this.tsParseTupleType();case 10:return this.tsParseParenthesizedType();case 25:case 24:return this.tsParseTemplateLiteralType();default:{const{type:t}=this.state;if(on(t)||t===88||t===84){const i=t===88?"TSVoidKeyword":t===84?"TSNullKeyword":hLe(this.state.value);if(i!==void 0&&this.lookaheadCharCode()!==46){const s=this.startNode();return this.next(),this.finishNode(s,i)}return this.tsParseTypeReference()}}}this.unexpected()}tsParseArrayTypeOrHigher(){let t=this.tsParseNonArrayType();for(;!this.hasPrecedingLineBreak()&&this.eat(0);)if(this.match(3)){const i=this.startNodeAtNode(t);i.elementType=t,this.expect(3),t=this.finishNode(i,"TSArrayType")}else{const i=this.startNodeAtNode(t);i.objectType=t,i.indexType=this.tsParseType(),this.expect(3),t=this.finishNode(i,"TSIndexedAccessType")}return t}tsParseTypeOperator(){const t=this.startNode(),i=this.state.value;return this.next(),t.operator=i,t.typeAnnotation=this.tsParseTypeOperatorOrHigher(),i==="readonly"&&this.tsCheckTypeAnnotationForReadOnly(t),this.finishNode(t,"TSTypeOperator")}tsCheckTypeAnnotationForReadOnly(t){switch(t.typeAnnotation.type){case"TSTupleType":case"TSArrayType":return;default:this.raise(Ct.UnexpectedReadonly,{at:t})}}tsParseInferType(){const t=this.startNode();this.expectContextual(115);const i=this.startNode();return i.name=this.tsParseTypeParameterName(),i.constraint=this.tsTryParse(()=>this.tsParseConstraintForInferType()),t.typeParameter=this.finishNode(i,"TSTypeParameter"),this.finishNode(t,"TSInferType")}tsParseConstraintForInferType(){if(this.eat(81)){const t=this.tsInDisallowConditionalTypesContext(()=>this.tsParseType());if(this.state.inDisallowConditionalTypesContext||!this.match(17))return t}}tsParseTypeOperatorOrHigher(){return fke(this.state.type)&&!this.state.containsEsc?this.tsParseTypeOperator():this.isContextual(115)?this.tsParseInferType():this.tsInAllowConditionalTypesContext(()=>this.tsParseArrayTypeOrHigher())}tsParseUnionOrIntersectionType(t,i,s){const r=this.startNode(),o=this.eat(s),a=[];do a.push(i());while(this.eat(s));return a.length===1&&!o?a[0]:(r.types=a,this.finishNode(r,t))}tsParseIntersectionTypeOrHigher(){return this.tsParseUnionOrIntersectionType("TSIntersectionType",this.tsParseTypeOperatorOrHigher.bind(this),45)}tsParseUnionTypeOrHigher(){return this.tsParseUnionOrIntersectionType("TSUnionType",this.tsParseIntersectionTypeOrHigher.bind(this),43)}tsIsStartOfFunctionType(){return this.match(47)?!0:this.match(10)&&this.tsLookAhead(this.tsIsUnambiguouslyStartOfFunctionType.bind(this))}tsSkipParameterStart(){if(on(this.state.type)||this.match(78))return this.next(),!0;if(this.match(5)){const{errors:t}=this.state,i=t.length;try{return this.parseObjectLike(8,!0),t.length===i}catch{return!1}}if(this.match(0)){this.next();const{errors:t}=this.state,i=t.length;try{return super.parseBindingList(3,93,1),t.length===i}catch{return!1}}return!1}tsIsUnambiguouslyStartOfFunctionType(){return this.next(),!!(this.match(11)||this.match(21)||this.tsSkipParameterStart()&&(this.match(14)||this.match(12)||this.match(17)||this.match(29)||this.match(11)&&(this.next(),this.match(19))))}tsParseTypeOrTypePredicateAnnotation(t){return this.tsInType(()=>{const i=this.startNode();this.expect(t);const s=this.startNode(),r=!!this.tsTryParse(this.tsParseTypePredicateAsserts.bind(this));if(r&&this.match(78)){let l=this.tsParseThisTypeOrThisTypePredicate();return l.type==="TSThisType"?(s.parameterName=l,s.asserts=!0,s.typeAnnotation=null,l=this.finishNode(s,"TSTypePredicate")):(this.resetStartLocationFromNode(l,s),l.asserts=!0),i.typeAnnotation=l,this.finishNode(i,"TSTypeAnnotation")}const o=this.tsIsIdentifier()&&this.tsTryParse(this.tsParseTypePredicatePrefix.bind(this));if(!o)return r?(s.parameterName=this.parseIdentifier(),s.asserts=r,s.typeAnnotation=null,i.typeAnnotation=this.finishNode(s,"TSTypePredicate"),this.finishNode(i,"TSTypeAnnotation")):this.tsParseTypeAnnotation(!1,i);const a=this.tsParseTypeAnnotation(!1);return s.parameterName=o,s.typeAnnotation=a,s.asserts=r,i.typeAnnotation=this.finishNode(s,"TSTypePredicate"),this.finishNode(i,"TSTypeAnnotation")})}tsTryParseTypeOrTypePredicateAnnotation(){if(this.match(14))return this.tsParseTypeOrTypePredicateAnnotation(14)}tsTryParseTypeAnnotation(){if(this.match(14))return this.tsParseTypeAnnotation()}tsTryParseType(){return this.tsEatThenParseType(14)}tsParseTypePredicatePrefix(){const t=this.parseIdentifier();if(this.isContextual(116)&&!this.hasPrecedingLineBreak())return this.next(),t}tsParseTypePredicateAsserts(){if(this.state.type!==109)return!1;const t=this.state.containsEsc;return this.next(),!on(this.state.type)&&!this.match(78)?!1:(t&&this.raise(_e.InvalidEscapedReservedWord,{at:this.state.lastTokStartLoc,reservedWord:"asserts"}),!0)}tsParseTypeAnnotation(t=!0,i=this.startNode()){return this.tsInType(()=>{t&&this.expect(14),i.typeAnnotation=this.tsParseType()}),this.finishNode(i,"TSTypeAnnotation")}tsParseType(){_Z(this.state.inType);const t=this.tsParseNonConditionalType();if(this.state.inDisallowConditionalTypesContext||this.hasPrecedingLineBreak()||!this.eat(81))return t;const i=this.startNodeAtNode(t);return i.checkType=t,i.extendsType=this.tsInDisallowConditionalTypesContext(()=>this.tsParseNonConditionalType()),this.expect(17),i.trueType=this.tsInAllowConditionalTypesContext(()=>this.tsParseType()),this.expect(14),i.falseType=this.tsInAllowConditionalTypesContext(()=>this.tsParseType()),this.finishNode(i,"TSConditionalType")}isAbstractConstructorSignature(){return this.isContextual(124)&&this.lookahead().type===77}tsParseNonConditionalType(){return this.tsIsStartOfFunctionType()?this.tsParseFunctionOrConstructorType("TSFunctionType"):this.match(77)?this.tsParseFunctionOrConstructorType("TSConstructorType"):this.isAbstractConstructorSignature()?this.tsParseFunctionOrConstructorType("TSConstructorType",!0):this.tsParseUnionTypeOrHigher()}tsParseTypeAssertion(){this.getPluginOption("typescript","disallowAmbiguousJSXLike")&&this.raise(Ct.ReservedTypeAssertion,{at:this.state.startLoc});const t=this.startNode();return t.typeAnnotation=this.tsInType(()=>(this.next(),this.match(75)?this.tsParseTypeReference():this.tsParseType())),this.expect(48),t.expression=this.parseMaybeUnary(),this.finishNode(t,"TSTypeAssertion")}tsParseHeritageClause(t){const i=this.state.startLoc,s=this.tsParseDelimitedList("HeritageClauseElement",()=>{const r=this.startNode();return r.expression=this.tsParseEntityName(),this.match(47)&&(r.typeParameters=this.tsParseTypeArguments()),this.finishNode(r,"TSExpressionWithTypeArguments")});return s.length||this.raise(Ct.EmptyHeritageClauseType,{at:i,token:t}),s}tsParseInterfaceDeclaration(t,i={}){if(this.hasFollowingLineBreak())return null;this.expectContextual(129),i.declare&&(t.declare=!0),on(this.state.type)?(t.id=this.parseIdentifier(),this.checkIdentifier(t.id,130)):(t.id=null,this.raise(Ct.MissingInterfaceName,{at:this.state.startLoc})),t.typeParameters=this.tsTryParseTypeParameters(this.tsParseInOutConstModifiers),this.eat(81)&&(t.extends=this.tsParseHeritageClause("extends"));const s=this.startNode();return s.body=this.tsInType(this.tsParseObjectTypeMembers.bind(this)),t.body=this.finishNode(s,"TSInterfaceBody"),this.finishNode(t,"TSInterfaceDeclaration")}tsParseTypeAliasDeclaration(t){return t.id=this.parseIdentifier(),this.checkIdentifier(t.id,2),t.typeAnnotation=this.tsInType(()=>{if(t.typeParameters=this.tsTryParseTypeParameters(this.tsParseInOutModifiers),this.expect(29),this.isContextual(114)&&this.lookahead().type!==16){const i=this.startNode();return this.next(),this.finishNode(i,"TSIntrinsicKeyword")}return this.tsParseType()}),this.semicolon(),this.finishNode(t,"TSTypeAliasDeclaration")}tsInNoContext(t){const i=this.state.context;this.state.context=[i[0]];try{return t()}finally{this.state.context=i}}tsInType(t){const i=this.state.inType;this.state.inType=!0;try{return t()}finally{this.state.inType=i}}tsInDisallowConditionalTypesContext(t){const i=this.state.inDisallowConditionalTypesContext;this.state.inDisallowConditionalTypesContext=!0;try{return t()}finally{this.state.inDisallowConditionalTypesContext=i}}tsInAllowConditionalTypesContext(t){const i=this.state.inDisallowConditionalTypesContext;this.state.inDisallowConditionalTypesContext=!1;try{return t()}finally{this.state.inDisallowConditionalTypesContext=i}}tsEatThenParseType(t){if(this.match(t))return this.tsNextThenParseType()}tsExpectThenParseType(t){return this.tsInType(()=>(this.expect(t),this.tsParseType()))}tsNextThenParseType(){return this.tsInType(()=>(this.next(),this.tsParseType()))}tsParseEnumMember(){const t=this.startNode();return t.id=this.match(133)?super.parseStringLiteral(this.state.value):this.parseIdentifier(!0),this.eat(29)&&(t.initializer=super.parseMaybeAssignAllowIn()),this.finishNode(t,"TSEnumMember")}tsParseEnumDeclaration(t,i={}){return i.const&&(t.const=!0),i.declare&&(t.declare=!0),this.expectContextual(126),t.id=this.parseIdentifier(),this.checkIdentifier(t.id,t.const?8971:8459),this.expect(5),t.members=this.tsParseDelimitedList("EnumMembers",this.tsParseEnumMember.bind(this)),this.expect(8),this.finishNode(t,"TSEnumDeclaration")}tsParseModuleBlock(){const t=this.startNode();return this.scope.enter(0),this.expect(5),super.parseBlockOrModuleBlockBody(t.body=[],void 0,!0,8),this.scope.exit(),this.finishNode(t,"TSModuleBlock")}tsParseModuleOrNamespaceDeclaration(t,i=!1){if(t.id=this.parseIdentifier(),i||this.checkIdentifier(t.id,1024),this.eat(16)){const s=this.startNode();this.tsParseModuleOrNamespaceDeclaration(s,!0),t.body=s}else this.scope.enter(256),this.prodParam.enter(0),t.body=this.tsParseModuleBlock(),this.prodParam.exit(),this.scope.exit();return this.finishNode(t,"TSModuleDeclaration")}tsParseAmbientExternalModuleDeclaration(t){return this.isContextual(112)?(t.global=!0,t.id=this.parseIdentifier()):this.match(133)?t.id=super.parseStringLiteral(this.state.value):this.unexpected(),this.match(5)?(this.scope.enter(256),this.prodParam.enter(0),t.body=this.tsParseModuleBlock(),this.prodParam.exit(),this.scope.exit()):this.semicolon(),this.finishNode(t,"TSModuleDeclaration")}tsParseImportEqualsDeclaration(t,i,s){t.isExport=s||!1,t.id=i||this.parseIdentifier(),this.checkIdentifier(t.id,4096),this.expect(29);const r=this.tsParseModuleReference();return t.importKind==="type"&&r.type!=="TSExternalModuleReference"&&this.raise(Ct.ImportAliasHasImportType,{at:r}),t.moduleReference=r,this.semicolon(),this.finishNode(t,"TSImportEqualsDeclaration")}tsIsExternalModuleReference(){return this.isContextual(119)&&this.lookaheadCharCode()===40}tsParseModuleReference(){return this.tsIsExternalModuleReference()?this.tsParseExternalModuleReference():this.tsParseEntityName(!1)}tsParseExternalModuleReference(){const t=this.startNode();return this.expectContextual(119),this.expect(10),this.match(133)||this.unexpected(),t.expression=super.parseExprAtom(),this.expect(11),this.sawUnambiguousESM=!0,this.finishNode(t,"TSExternalModuleReference")}tsLookAhead(t){const i=this.state.clone(),s=t();return this.state=i,s}tsTryParseAndCatch(t){const i=this.tryParse(s=>t()||s());if(!(i.aborted||!i.node))return i.error&&(this.state=i.failState),i.node}tsTryParse(t){const i=this.state.clone(),s=t();if(s!==void 0&&s!==!1)return s;this.state=i}tsTryParseDeclare(t){if(this.isLineTerminator())return;let i=this.state.type,s;return this.isContextual(100)&&(i=74,s="let"),this.tsInAmbientContext(()=>{switch(i){case 68:return t.declare=!0,super.parseFunctionStatement(t,!1,!1);case 80:return t.declare=!0,this.parseClass(t,!0,!1);case 126:return this.tsParseEnumDeclaration(t,{declare:!0});case 112:return this.tsParseAmbientExternalModuleDeclaration(t);case 75:case 74:return!this.match(75)||!this.isLookaheadContextual("enum")?(t.declare=!0,this.parseVarStatement(t,s||this.state.value,!0)):(this.expect(75),this.tsParseEnumDeclaration(t,{const:!0,declare:!0}));case 129:{const r=this.tsParseInterfaceDeclaration(t,{declare:!0});if(r)return r}default:if(on(i))return this.tsParseDeclaration(t,this.state.value,!0,null)}})}tsTryParseExportDeclaration(){return this.tsParseDeclaration(this.startNode(),this.state.value,!0,null)}tsParseExpressionStatement(t,i,s){switch(i.name){case"declare":{const r=this.tsTryParseDeclare(t);return r&&(r.declare=!0),r}case"global":if(this.match(5)){this.scope.enter(256),this.prodParam.enter(0);const r=t;return r.global=!0,r.id=i,r.body=this.tsParseModuleBlock(),this.scope.exit(),this.prodParam.exit(),this.finishNode(r,"TSModuleDeclaration")}break;default:return this.tsParseDeclaration(t,i.name,!1,s)}}tsParseDeclaration(t,i,s,r){switch(i){case"abstract":if(this.tsCheckLineTerminator(s)&&(this.match(80)||on(this.state.type)))return this.tsParseAbstractDeclaration(t,r);break;case"module":if(this.tsCheckLineTerminator(s)){if(this.match(133))return this.tsParseAmbientExternalModuleDeclaration(t);if(on(this.state.type))return this.tsParseModuleOrNamespaceDeclaration(t)}break;case"namespace":if(this.tsCheckLineTerminator(s)&&on(this.state.type))return this.tsParseModuleOrNamespaceDeclaration(t);break;case"type":if(this.tsCheckLineTerminator(s)&&on(this.state.type))return this.tsParseTypeAliasDeclaration(t);break}}tsCheckLineTerminator(t){return t?this.hasFollowingLineBreak()?!1:(this.next(),!0):!this.isLineTerminator()}tsTryParseGenericAsyncArrowFunction(t){if(!this.match(47))return;const i=this.state.maybeInArrowParameters;this.state.maybeInArrowParameters=!0;const s=this.tsTryParseAndCatch(()=>{const r=this.startNodeAt(t);return r.typeParameters=this.tsParseTypeParameters(this.tsParseConstModifier),super.parseFunctionParams(r),r.returnType=this.tsTryParseTypeOrTypePredicateAnnotation(),this.expect(19),r});if(this.state.maybeInArrowParameters=i,!!s)return super.parseArrowExpression(s,null,!0)}tsParseTypeArgumentsInExpression(){if(this.reScan_lt()===47)return this.tsParseTypeArguments()}tsParseTypeArguments(){const t=this.startNode();return t.params=this.tsInType(()=>this.tsInNoContext(()=>(this.expect(47),this.tsParseDelimitedList("TypeParametersOrArguments",this.tsParseType.bind(this))))),t.params.length===0?this.raise(Ct.EmptyTypeArguments,{at:t}):!this.state.inType&&this.curContext()===Nn.brace&&this.reScan_lt_gt(),this.expect(48),this.finishNode(t,"TSTypeParameterInstantiation")}tsIsDeclarationStart(){return gke(this.state.type)}isExportDefaultSpecifier(){return this.tsIsDeclarationStart()?!1:super.isExportDefaultSpecifier()}parseAssignableListItem(t,i){const s=this.state.startLoc,r={};this.tsParseModifiers({allowedModifiers:["public","private","protected","override","readonly"]},r);const o=r.accessibility,a=r.override,l=r.readonly;!(t&4)&&(o||l||a)&&this.raise(Ct.UnexpectedParameterModifier,{at:s});const c=this.parseMaybeDefault();this.parseAssignableListItemTypes(c,t);const u=this.parseMaybeDefault(c.loc.start,c);if(o||l||a){const h=this.startNodeAt(s);return i.length&&(h.decorators=i),o&&(h.accessibility=o),l&&(h.readonly=l),a&&(h.override=a),u.type!=="Identifier"&&u.type!=="AssignmentPattern"&&this.raise(Ct.UnsupportedParameterPropertyKind,{at:h}),h.parameter=u,this.finishNode(h,"TSParameterProperty")}return i.length&&(c.decorators=i),u}isSimpleParameter(t){return t.type==="TSParameterProperty"&&super.isSimpleParameter(t.parameter)||super.isSimpleParameter(t)}tsDisallowOptionalPattern(t){for(const i of t.params)i.type!=="Identifier"&&i.optional&&!this.state.isAmbientContext&&this.raise(Ct.PatternIsOptional,{at:i})}setArrowFunctionParameters(t,i,s){super.setArrowFunctionParameters(t,i,s),this.tsDisallowOptionalPattern(t)}parseFunctionBodyAndFinish(t,i,s=!1){this.match(14)&&(t.returnType=this.tsParseTypeOrTypePredicateAnnotation(14));const r=i==="FunctionDeclaration"?"TSDeclareFunction":i==="ClassMethod"||i==="ClassPrivateMethod"?"TSDeclareMethod":void 0;return r&&!this.match(5)&&this.isLineTerminator()?this.finishNode(t,r):r==="TSDeclareFunction"&&this.state.isAmbientContext&&(this.raise(Ct.DeclareFunctionHasImplementation,{at:t}),t.declare)?super.parseFunctionBodyAndFinish(t,r,s):(this.tsDisallowOptionalPattern(t),super.parseFunctionBodyAndFinish(t,i,s))}registerFunctionStatementId(t){!t.body&&t.id?this.checkIdentifier(t.id,1024):super.registerFunctionStatementId(t)}tsCheckForInvalidTypeCasts(t){t.forEach(i=>{(i==null?void 0:i.type)==="TSTypeCastExpression"&&this.raise(Ct.UnexpectedTypeAnnotation,{at:i.typeAnnotation})})}toReferencedList(t,i){return this.tsCheckForInvalidTypeCasts(t),t}parseArrayLike(t,i,s,r){const o=super.parseArrayLike(t,i,s,r);return o.type==="ArrayExpression"&&this.tsCheckForInvalidTypeCasts(o.elements),o}parseSubscript(t,i,s,r){if(!this.hasPrecedingLineBreak()&&this.match(35)){this.state.canStartJSXElement=!1,this.next();const a=this.startNodeAt(i);return a.expression=t,this.finishNode(a,"TSNonNullExpression")}let o=!1;if(this.match(18)&&this.lookaheadCharCode()===60){if(s)return r.stop=!0,t;r.optionalChainMember=o=!0,this.next()}if(this.match(47)||this.match(51)){let a;const l=this.tsTryParseAndCatch(()=>{if(!s&&this.atPossibleAsyncArrow(t)){const d=this.tsTryParseGenericAsyncArrowFunction(i);if(d)return d}const c=this.tsParseTypeArgumentsInExpression();if(!c)return;if(o&&!this.match(10)){a=this.state.curPosition();return}if(KN(this.state.type)){const d=super.parseTaggedTemplateExpression(t,i,r);return d.typeParameters=c,d}if(!s&&this.eat(10)){const d=this.startNodeAt(i);return d.callee=t,d.arguments=this.parseCallExpressionArguments(11,!1),this.tsCheckForInvalidTypeCasts(d.arguments),d.typeParameters=c,r.optionalChainMember&&(d.optional=o),this.finishCallExpression(d,r.optionalChainMember)}const u=this.state.type;if(u===48||u===52||u!==10&&J6(u)&&!this.hasPrecedingLineBreak())return;const h=this.startNodeAt(i);return h.expression=t,h.typeParameters=c,this.finishNode(h,"TSInstantiationExpression")});if(a&&this.unexpected(a,10),l)return l.type==="TSInstantiationExpression"&&(this.match(16)||this.match(18)&&this.lookaheadCharCode()!==40)&&this.raise(Ct.InvalidPropertyAccessAfterInstantiationExpression,{at:this.state.startLoc}),l}return super.parseSubscript(t,i,s,r)}parseNewCallee(t){var i;super.parseNewCallee(t);const{callee:s}=t;s.type==="TSInstantiationExpression"&&!((i=s.extra)!=null&&i.parenthesized)&&(t.typeParameters=s.typeParameters,t.callee=s.expression)}parseExprOp(t,i,s){let r;if(DT(58)>s&&!this.hasPrecedingLineBreak()&&(this.isContextual(93)||(r=this.isContextual(120)))){const o=this.startNodeAt(i);return o.expression=t,o.typeAnnotation=this.tsInType(()=>(this.next(),this.match(75)?(r&&this.raise(_e.UnexpectedKeyword,{at:this.state.startLoc,keyword:"const"}),this.tsParseTypeReference()):this.tsParseType())),this.finishNode(o,r?"TSSatisfiesExpression":"TSAsExpression"),this.reScan_lt_gt(),this.parseExprOp(o,i,s)}return super.parseExprOp(t,i,s)}checkReservedWord(t,i,s,r){this.state.isAmbientContext||super.checkReservedWord(t,i,s,r)}checkImportReflection(t){super.checkImportReflection(t),t.module&&t.importKind!=="value"&&this.raise(Ct.ImportReflectionHasImportType,{at:t.specifiers[0].loc.start})}checkDuplicateExports(){}isPotentialImportPhase(t){if(super.isPotentialImportPhase(t))return!0;if(this.isContextual(130)){const i=this.lookaheadCharCode();return t?i===123||i===42:i!==61}return!t&&this.isContextual(87)}applyImportPhase(t,i,s,r){super.applyImportPhase(t,i,s,r),i?t.exportKind=s==="type"?"type":"value":t.importKind=s==="type"||s==="typeof"?s:"value"}parseImport(t){if(this.match(133))return t.importKind="value",super.parseImport(t);let i;if(on(this.state.type)&&this.lookaheadCharCode()===61)return t.importKind="value",this.tsParseImportEqualsDeclaration(t);if(this.isContextual(130)){const s=this.parseMaybeImportPhase(t,!1);if(this.lookaheadCharCode()===61)return this.tsParseImportEqualsDeclaration(t,s);i=super.parseImportSpecifiersAndAfter(t,s)}else i=super.parseImport(t);return i.importKind==="type"&&i.specifiers.length>1&&i.specifiers[0].type==="ImportDefaultSpecifier"&&this.raise(Ct.TypeImportCannotSpecifyDefaultAndNamed,{at:i}),i}parseExport(t,i){if(this.match(83)){this.next();let s=null;return this.isContextual(130)&&this.isPotentialImportPhase(!1)?s=this.parseMaybeImportPhase(t,!1):t.importKind="value",this.tsParseImportEqualsDeclaration(t,s,!0)}else if(this.eat(29)){const s=t;return s.expression=super.parseExpression(),this.semicolon(),this.sawUnambiguousESM=!0,this.finishNode(s,"TSExportAssignment")}else if(this.eatContextual(93)){const s=t;return this.expectContextual(128),s.id=this.parseIdentifier(),this.semicolon(),this.finishNode(s,"TSNamespaceExportDeclaration")}else return super.parseExport(t,i)}isAbstractClass(){return this.isContextual(124)&&this.lookahead().type===80}parseExportDefaultExpression(){if(this.isAbstractClass()){const t=this.startNode();return this.next(),t.abstract=!0,this.parseClass(t,!0,!0)}if(this.match(129)){const t=this.tsParseInterfaceDeclaration(this.startNode());if(t)return t}return super.parseExportDefaultExpression()}parseVarStatement(t,i,s=!1){const{isAmbientContext:r}=this.state,o=super.parseVarStatement(t,i,s||r);if(!r)return o;for(const{id:a,init:l}of o.declarations)l&&(i!=="const"||a.typeAnnotation?this.raise(Ct.InitializerNotAllowedInAmbientContext,{at:l}):pLe(l,this.hasPlugin("estree"))||this.raise(Ct.ConstInitiailizerMustBeStringOrNumericLiteralOrLiteralEnumReference,{at:l}));return o}parseStatementContent(t,i){if(this.match(75)&&this.isLookaheadContextual("enum")){const s=this.startNode();return this.expect(75),this.tsParseEnumDeclaration(s,{const:!0})}if(this.isContextual(126))return this.tsParseEnumDeclaration(this.startNode());if(this.isContextual(129)){const s=this.tsParseInterfaceDeclaration(this.startNode());if(s)return s}return super.parseStatementContent(t,i)}parseAccessModifier(){return this.tsParseModifier(["public","protected","private"])}tsHasSomeModifiers(t,i){return i.some(s=>vZ(s)?t.accessibility===s:!!t[s])}tsIsStartOfStaticBlocks(){return this.isContextual(106)&&this.lookaheadCharCode()===123}parseClassMember(t,i,s){const r=["declare","private","public","protected","override","abstract","readonly","static"];this.tsParseModifiers({allowedModifiers:r,disallowedModifiers:["in","out"],stopOnStartOfClassStaticBlock:!0,errorTemplate:Ct.InvalidModifierOnTypeParameterPositions},i);const o=()=>{this.tsIsStartOfStaticBlocks()?(this.next(),this.next(),this.tsHasSomeModifiers(i,r)&&this.raise(Ct.StaticBlockCannotHaveModifier,{at:this.state.curPosition()}),super.parseClassStaticBlock(t,i)):this.parseClassMemberWithIsStatic(t,i,s,!!i.static)};i.declare?this.tsInAmbientContext(o):o()}parseClassMemberWithIsStatic(t,i,s,r){const o=this.tsTryParseIndexSignature(i);if(o){t.body.push(o),i.abstract&&this.raise(Ct.IndexSignatureHasAbstract,{at:i}),i.accessibility&&this.raise(Ct.IndexSignatureHasAccessibility,{at:i,modifier:i.accessibility}),i.declare&&this.raise(Ct.IndexSignatureHasDeclare,{at:i}),i.override&&this.raise(Ct.IndexSignatureHasOverride,{at:i});return}!this.state.inAbstractClass&&i.abstract&&this.raise(Ct.NonAbstractClassHasAbstractMethod,{at:i}),i.override&&(s.hadSuperClass||this.raise(Ct.OverrideNotInSubClass,{at:i})),super.parseClassMemberWithIsStatic(t,i,s,r)}parsePostMemberNameModifiers(t){this.eat(17)&&(t.optional=!0),t.readonly&&this.match(10)&&this.raise(Ct.ClassMethodHasReadonly,{at:t}),t.declare&&this.match(10)&&this.raise(Ct.ClassMethodHasDeclare,{at:t})}parseExpressionStatement(t,i,s){return(i.type==="Identifier"?this.tsParseExpressionStatement(t,i,s):void 0)||super.parseExpressionStatement(t,i,s)}shouldParseExportDeclaration(){return this.tsIsDeclarationStart()?!0:super.shouldParseExportDeclaration()}parseConditional(t,i,s){if(!this.state.maybeInArrowParameters||!this.match(17))return super.parseConditional(t,i,s);const r=this.tryParse(()=>super.parseConditional(t,i));return r.node?(r.error&&(this.state=r.failState),r.node):(r.error&&super.setOptionalParametersError(s,r.error),t)}parseParenItem(t,i){if(t=super.parseParenItem(t,i),this.eat(17)&&(t.optional=!0,this.resetEndLocation(t)),this.match(14)){const s=this.startNodeAt(i);return s.expression=t,s.typeAnnotation=this.tsParseTypeAnnotation(),this.finishNode(s,"TSTypeCastExpression")}return t}parseExportDeclaration(t){if(!this.state.isAmbientContext&&this.isContextual(125))return this.tsInAmbientContext(()=>this.parseExportDeclaration(t));const i=this.state.startLoc,s=this.eatContextual(125);if(s&&(this.isContextual(125)||!this.shouldParseExportDeclaration()))throw this.raise(Ct.ExpectedAmbientAfterExportDeclare,{at:this.state.startLoc});const o=on(this.state.type)&&this.tsTryParseExportDeclaration()||super.parseExportDeclaration(t);return o?((o.type==="TSInterfaceDeclaration"||o.type==="TSTypeAliasDeclaration"||s)&&(t.exportKind="type"),s&&(this.resetStartLocation(o,i),o.declare=!0),o):null}parseClassId(t,i,s,r){if((!i||s)&&this.isContextual(113))return;super.parseClassId(t,i,s,t.declare?1024:8331);const o=this.tsTryParseTypeParameters(this.tsParseInOutConstModifiers);o&&(t.typeParameters=o)}parseClassPropertyAnnotation(t){t.optional||(this.eat(35)?t.definite=!0:this.eat(17)&&(t.optional=!0));const i=this.tsTryParseTypeAnnotation();i&&(t.typeAnnotation=i)}parseClassProperty(t){if(this.parseClassPropertyAnnotation(t),this.state.isAmbientContext&&!(t.readonly&&!t.typeAnnotation)&&this.match(29)&&this.raise(Ct.DeclareClassFieldHasInitializer,{at:this.state.startLoc}),t.abstract&&this.match(29)){const{key:i}=t;this.raise(Ct.AbstractPropertyHasInitializer,{at:this.state.startLoc,propertyName:i.type==="Identifier"&&!t.computed?i.name:`[${this.input.slice(i.start,i.end)}]`})}return super.parseClassProperty(t)}parseClassPrivateProperty(t){return t.abstract&&this.raise(Ct.PrivateElementHasAbstract,{at:t}),t.accessibility&&this.raise(Ct.PrivateElementHasAccessibility,{at:t,modifier:t.accessibility}),this.parseClassPropertyAnnotation(t),super.parseClassPrivateProperty(t)}parseClassAccessorProperty(t){return this.parseClassPropertyAnnotation(t),t.optional&&this.raise(Ct.AccessorCannotBeOptional,{at:t}),super.parseClassAccessorProperty(t)}pushClassMethod(t,i,s,r,o,a){const l=this.tsTryParseTypeParameters(this.tsParseConstModifier);l&&o&&this.raise(Ct.ConstructorHasTypeParameters,{at:l});const{declare:c=!1,kind:u}=i;c&&(u==="get"||u==="set")&&this.raise(Ct.DeclareAccessor,{at:i,kind:u}),l&&(i.typeParameters=l),super.pushClassMethod(t,i,s,r,o,a)}pushClassPrivateMethod(t,i,s,r){const o=this.tsTryParseTypeParameters(this.tsParseConstModifier);o&&(i.typeParameters=o),super.pushClassPrivateMethod(t,i,s,r)}declareClassPrivateMethodInScope(t,i){t.type!=="TSDeclareMethod"&&(t.type==="MethodDefinition"&&!t.value.body||super.declareClassPrivateMethodInScope(t,i))}parseClassSuper(t){super.parseClassSuper(t),t.superClass&&(this.match(47)||this.match(51))&&(t.superTypeParameters=this.tsParseTypeArgumentsInExpression()),this.eatContextual(113)&&(t.implements=this.tsParseHeritageClause("implements"))}parseObjPropValue(t,i,s,r,o,a,l){const c=this.tsTryParseTypeParameters(this.tsParseConstModifier);return c&&(t.typeParameters=c),super.parseObjPropValue(t,i,s,r,o,a,l)}parseFunctionParams(t,i){const s=this.tsTryParseTypeParameters(this.tsParseConstModifier);s&&(t.typeParameters=s),super.parseFunctionParams(t,i)}parseVarId(t,i){super.parseVarId(t,i),t.id.type==="Identifier"&&!this.hasPrecedingLineBreak()&&this.eat(35)&&(t.definite=!0);const s=this.tsTryParseTypeAnnotation();s&&(t.id.typeAnnotation=s,this.resetEndLocation(t.id))}parseAsyncArrowFromCallExpression(t,i){return this.match(14)&&(t.returnType=this.tsParseTypeAnnotation()),super.parseAsyncArrowFromCallExpression(t,i)}parseMaybeAssign(t,i){var s,r,o,a,l;let c,u,h;if(this.hasPlugin("jsx")&&(this.match(142)||this.match(47))){if(c=this.state.clone(),u=this.tryParse(()=>super.parseMaybeAssign(t,i),c),!u.error)return u.node;const{context:g}=this.state,p=g[g.length-1];(p===Nn.j_oTag||p===Nn.j_expr)&&g.pop()}if(!((s=u)!=null&&s.error)&&!this.match(47))return super.parseMaybeAssign(t,i);(!c||c===this.state)&&(c=this.state.clone());let d;const f=this.tryParse(g=>{var p,m;d=this.tsParseTypeParameters(this.tsParseConstModifier);const _=super.parseMaybeAssign(t,i);return(_.type!=="ArrowFunctionExpression"||(p=_.extra)!=null&&p.parenthesized)&&g(),((m=d)==null?void 0:m.params.length)!==0&&this.resetStartLocationFromNode(_,d),_.typeParameters=d,_},c);if(!f.error&&!f.aborted)return d&&this.reportReservedArrowTypeParam(d),f.node;if(!u&&(_Z(!this.hasPlugin("jsx")),h=this.tryParse(()=>super.parseMaybeAssign(t,i),c),!h.error))return h.node;if((r=u)!=null&&r.node)return this.state=u.failState,u.node;if(f.node)return this.state=f.failState,d&&this.reportReservedArrowTypeParam(d),f.node;if((o=h)!=null&&o.node)return this.state=h.failState,h.node;throw((a=u)==null?void 0:a.error)||f.error||((l=h)==null?void 0:l.error)}reportReservedArrowTypeParam(t){var i;t.params.length===1&&!t.params[0].constraint&&!((i=t.extra)!=null&&i.trailingComma)&&this.getPluginOption("typescript","disallowAmbiguousJSXLike")&&this.raise(Ct.ReservedArrowTypeParam,{at:t})}parseMaybeUnary(t,i){return!this.hasPlugin("jsx")&&this.match(47)?this.tsParseTypeAssertion():super.parseMaybeUnary(t,i)}parseArrow(t){if(this.match(14)){const i=this.tryParse(s=>{const r=this.tsParseTypeOrTypePredicateAnnotation(14);return(this.canInsertSemicolon()||!this.match(19))&&s(),r});if(i.aborted)return;i.thrown||(i.error&&(this.state=i.failState),t.returnType=i.node)}return super.parseArrow(t)}parseAssignableListItemTypes(t,i){if(!(i&2))return t;this.eat(17)&&(t.optional=!0);const s=this.tsTryParseTypeAnnotation();return s&&(t.typeAnnotation=s),this.resetEndLocation(t),t}isAssignable(t,i){switch(t.type){case"TSTypeCastExpression":return this.isAssignable(t.expression,i);case"TSParameterProperty":return!0;default:return super.isAssignable(t,i)}}toAssignable(t,i=!1){switch(t.type){case"ParenthesizedExpression":this.toAssignableParenthesizedExpression(t,i);break;case"TSAsExpression":case"TSSatisfiesExpression":case"TSNonNullExpression":case"TSTypeAssertion":i?this.expressionScope.recordArrowParameterBindingError(Ct.UnexpectedTypeCastInParameter,{at:t}):this.raise(Ct.UnexpectedTypeCastInParameter,{at:t}),this.toAssignable(t.expression,i);break;case"AssignmentExpression":!i&&t.left.type==="TSTypeCastExpression"&&(t.left=this.typeCastToParameter(t.left));default:super.toAssignable(t,i)}}toAssignableParenthesizedExpression(t,i){switch(t.expression.type){case"TSAsExpression":case"TSSatisfiesExpression":case"TSNonNullExpression":case"TSTypeAssertion":case"ParenthesizedExpression":this.toAssignable(t.expression,i);break;default:super.toAssignable(t,i)}}checkToRestConversion(t,i){switch(t.type){case"TSAsExpression":case"TSSatisfiesExpression":case"TSTypeAssertion":case"TSNonNullExpression":this.checkToRestConversion(t.expression,!1);break;default:super.checkToRestConversion(t,i)}}isValidLVal(t,i,s){return cLe({TSTypeCastExpression:!0,TSParameterProperty:"parameter",TSNonNullExpression:"expression",TSAsExpression:(s!==64||!i)&&["expression",!0],TSSatisfiesExpression:(s!==64||!i)&&["expression",!0],TSTypeAssertion:(s!==64||!i)&&["expression",!0]},t)||super.isValidLVal(t,i,s)}parseBindingAtom(){return this.state.type===78?this.parseIdentifier(!0):super.parseBindingAtom()}parseMaybeDecoratorArguments(t){if(this.match(47)||this.match(51)){const i=this.tsParseTypeArgumentsInExpression();if(this.match(10)){const s=super.parseMaybeDecoratorArguments(t);return s.typeParameters=i,s}this.unexpected(null,10)}return super.parseMaybeDecoratorArguments(t)}checkCommaAfterRest(t){return this.state.isAmbientContext&&this.match(12)&&this.lookaheadCharCode()===t?(this.next(),!1):super.checkCommaAfterRest(t)}isClassMethod(){return this.match(47)||super.isClassMethod()}isClassProperty(){return this.match(35)||this.match(14)||super.isClassProperty()}parseMaybeDefault(t,i){const s=super.parseMaybeDefault(t,i);return s.type==="AssignmentPattern"&&s.typeAnnotation&&s.right.start<s.typeAnnotation.start&&this.raise(Ct.TypeAnnotationAfterAssign,{at:s.typeAnnotation}),s}getTokenFromCode(t){if(this.state.inType){if(t===62){this.finishOp(48,1);return}if(t===60){this.finishOp(47,1);return}}super.getTokenFromCode(t)}reScan_lt_gt(){const{type:t}=this.state;t===47?(this.state.pos-=1,this.readToken_lt()):t===48&&(this.state.pos-=1,this.readToken_gt())}reScan_lt(){const{type:t}=this.state;return t===51?(this.state.pos-=2,this.finishOp(47,1),47):t}toAssignableList(t,i,s){for(let r=0;r<t.length;r++){const o=t[r];(o==null?void 0:o.type)==="TSTypeCastExpression"&&(t[r]=this.typeCastToParameter(o))}super.toAssignableList(t,i,s)}typeCastToParameter(t){return t.expression.typeAnnotation=t.typeAnnotation,this.resetEndLocation(t.expression,t.typeAnnotation.loc.end),t.expression}shouldParseArrow(t){return this.match(14)?t.every(i=>this.isAssignable(i,!0)):super.shouldParseArrow(t)}shouldParseAsyncArrow(){return this.match(14)||super.shouldParseAsyncArrow()}canHaveLeadingDecorator(){return super.canHaveLeadingDecorator()||this.isAbstractClass()}jsxParseOpeningElementAfterName(t){if(this.match(47)||this.match(51)){const i=this.tsTryParseAndCatch(()=>this.tsParseTypeArgumentsInExpression());i&&(t.typeParameters=i)}return super.jsxParseOpeningElementAfterName(t)}getGetterSetterExpectedParamCount(t){const i=super.getGetterSetterExpectedParamCount(t),r=this.getObjectOrClassMethodParams(t)[0];return r&&this.isThisParam(r)?i+1:i}parseCatchClauseParam(){const t=super.parseCatchClauseParam(),i=this.tsTryParseTypeAnnotation();return i&&(t.typeAnnotation=i,this.resetEndLocation(t)),t}tsInAmbientContext(t){const i=this.state.isAmbientContext;this.state.isAmbientContext=!0;try{return t()}finally{this.state.isAmbientContext=i}}parseClass(t,i,s){const r=this.state.inAbstractClass;this.state.inAbstractClass=!!t.abstract;try{return super.parseClass(t,i,s)}finally{this.state.inAbstractClass=r}}tsParseAbstractDeclaration(t,i){if(this.match(80))return t.abstract=!0,this.maybeTakeDecorators(i,this.parseClass(t,!0,!1));if(this.isContextual(129)){if(!this.hasFollowingLineBreak())return t.abstract=!0,this.raise(Ct.NonClassMethodPropertyHasAbstractModifer,{at:t}),this.tsParseInterfaceDeclaration(t)}else this.unexpected(null,80)}parseMethod(t,i,s,r,o,a,l){const c=super.parseMethod(t,i,s,r,o,a,l);if(c.abstract&&(this.hasPlugin("estree")?!!c.value.body:!!c.body)){const{key:h}=c;this.raise(Ct.AbstractMethodHasImplementation,{at:c,methodName:h.type==="Identifier"&&!c.computed?h.name:`[${this.input.slice(h.start,h.end)}]`})}return c}tsParseTypeParameterName(){return this.parseIdentifier().name}shouldParseAsAmbientContext(){return!!this.getPluginOption("typescript","dts")}parse(){return this.shouldParseAsAmbientContext()&&(this.state.isAmbientContext=!0),super.parse()}getExpression(){return this.shouldParseAsAmbientContext()&&(this.state.isAmbientContext=!0),super.getExpression()}parseExportSpecifier(t,i,s,r){return!i&&r?(this.parseTypeOnlyImportExportSpecifier(t,!1,s),this.finishNode(t,"ExportSpecifier")):(t.exportKind="value",super.parseExportSpecifier(t,i,s,r))}parseImportSpecifier(t,i,s,r,o){return!i&&r?(this.parseTypeOnlyImportExportSpecifier(t,!0,s),this.finishNode(t,"ImportSpecifier")):(t.importKind="value",super.parseImportSpecifier(t,i,s,r,s?4098:4096))}parseTypeOnlyImportExportSpecifier(t,i,s){const r=i?"imported":"local",o=i?"local":"exported";let a=t[r],l,c=!1,u=!0;const h=a.loc.start;if(this.isContextual(93)){const f=this.parseIdentifier();if(this.isContextual(93)){const g=this.parseIdentifier();fu(this.state.type)?(c=!0,a=f,l=i?this.parseIdentifier():this.parseModuleExportName(),u=!1):(l=g,u=!1)}else fu(this.state.type)?(u=!1,l=i?this.parseIdentifier():this.parseModuleExportName()):(c=!0,a=f)}else fu(this.state.type)&&(c=!0,i?(a=this.parseIdentifier(!0),this.isContextual(93)||this.checkReservedWord(a.name,a.loc.start,!0,!0)):a=this.parseModuleExportName());c&&s&&this.raise(i?Ct.TypeModifierIsUsedInTypeImports:Ct.TypeModifierIsUsedInTypeExports,{at:h}),t[r]=a,t[o]=l;const d=i?"importKind":"exportKind";t[d]=c?"type":"value",u&&this.eatContextual(93)&&(t[o]=i?this.parseIdentifier():this.parseModuleExportName()),t[o]||(t[o]=Tf(t[r])),i&&this.checkIdentifier(t[o],c?4098:4096)}};function gLe(n){if(n.type!=="MemberExpression")return!1;const{computed:e,property:t}=n;return e&&t.type!=="StringLiteral"&&(t.type!=="TemplateLiteral"||t.expressions.length>0)?!1:Qae(n.object)}function pLe(n,e){var t;const{type:i}=n;if((t=n.extra)!=null&&t.parenthesized)return!1;if(e){if(i==="Literal"){const{value:s}=n;if(typeof s=="string"||typeof s=="boolean")return!0}}else if(i==="StringLiteral"||i==="BooleanLiteral")return!0;return!!(Xae(n,e)||mLe(n,e)||i==="TemplateLiteral"&&n.expressions.length===0||gLe(n))}function Xae(n,e){return e?n.type==="Literal"&&(typeof n.value=="number"||"bigint"in n):n.type==="NumericLiteral"||n.type==="BigIntLiteral"}function mLe(n,e){if(n.type==="UnaryExpression"){const{operator:t,argument:i}=n;if(t==="-"&&Xae(i,e))return!0}return!1}function Qae(n){return n.type==="Identifier"?!0:n.type!=="MemberExpression"||n.computed?!1:Qae(n.object)}const bZ=pf`placeholders`({ClassNameIsRequired:"A class name is required.",UnexpectedSpace:"Unexpected space in placeholder."});var _Le=n=>class extends n{parsePlaceholder(t){if(this.match(144)){const i=this.startNode();return this.next(),this.assertNoSpace(),i.name=super.parseIdentifier(!0),this.assertNoSpace(),this.expect(144),this.finishPlaceholder(i,t)}}finishPlaceholder(t,i){const s=!!(t.expectedNode&&t.type==="Placeholder");return t.expectedNode=i,s?t:this.finishNode(t,"Placeholder")}getTokenFromCode(t){t===37&&this.input.charCodeAt(this.state.pos+1)===37?this.finishOp(144,2):super.getTokenFromCode(t)}parseExprAtom(t){return this.parsePlaceholder("Expression")||super.parseExprAtom(t)}parseIdentifier(t){return this.parsePlaceholder("Identifier")||super.parseIdentifier(t)}checkReservedWord(t,i,s,r){t!==void 0&&super.checkReservedWord(t,i,s,r)}parseBindingAtom(){return this.parsePlaceholder("Pattern")||super.parseBindingAtom()}isValidLVal(t,i,s){return t==="Placeholder"||super.isValidLVal(t,i,s)}toAssignable(t,i){t&&t.type==="Placeholder"&&t.expectedNode==="Expression"?t.expectedNode="Pattern":super.toAssignable(t,i)}chStartsBindingIdentifier(t,i){return!!(super.chStartsBindingIdentifier(t,i)||this.lookahead().type===144)}verifyBreakContinue(t,i){t.label&&t.label.type==="Placeholder"||super.verifyBreakContinue(t,i)}parseExpressionStatement(t,i){var s;if(i.type!=="Placeholder"||(s=i.extra)!=null&&s.parenthesized)return super.parseExpressionStatement(t,i);if(this.match(14)){const r=t;return r.label=this.finishPlaceholder(i,"Identifier"),this.next(),r.body=super.parseStatementOrSloppyAnnexBFunctionDeclaration(),this.finishNode(r,"LabeledStatement")}return this.semicolon(),t.name=i.name,this.finishPlaceholder(t,"Statement")}parseBlock(t,i,s){return this.parsePlaceholder("BlockStatement")||super.parseBlock(t,i,s)}parseFunctionId(t){return this.parsePlaceholder("Identifier")||super.parseFunctionId(t)}parseClass(t,i,s){const r=i?"ClassDeclaration":"ClassExpression";this.next();const o=this.state.strict,a=this.parsePlaceholder("Identifier");if(a)if(this.match(81)||this.match(144)||this.match(5))t.id=a;else{if(s||!i)return t.id=null,t.body=this.finishPlaceholder(a,"ClassBody"),this.finishNode(t,r);throw this.raise(bZ.ClassNameIsRequired,{at:this.state.startLoc})}else this.parseClassId(t,i,s);return super.parseClassSuper(t),t.body=this.parsePlaceholder("ClassBody")||super.parseClassBody(!!t.superClass,o),this.finishNode(t,r)}parseExport(t,i){const s=this.parsePlaceholder("Identifier");if(!s)return super.parseExport(t,i);if(!this.isContextual(98)&&!this.match(12))return t.specifiers=[],t.source=null,t.declaration=this.finishPlaceholder(s,"Declaration"),this.finishNode(t,"ExportNamedDeclaration");this.expectPlugin("exportDefaultFrom");const r=this.startNode();return r.exported=s,t.specifiers=[this.finishNode(r,"ExportDefaultSpecifier")],super.parseExport(t,i)}isExportDefaultSpecifier(){if(this.match(65)){const t=this.nextTokenStart();if(this.isUnparsedContextual(t,"from")&&this.input.startsWith(pp(144),this.nextTokenStartSince(t+4)))return!0}return super.isExportDefaultSpecifier()}maybeParseExportDefaultSpecifier(t,i){var s;return(s=t.specifiers)!=null&&s.length?!0:super.maybeParseExportDefaultSpecifier(t,i)}checkExport(t){const{specifiers:i}=t;i!=null&&i.length&&(t.specifiers=i.filter(s=>s.exported.type==="Placeholder")),super.checkExport(t),t.specifiers=i}parseImport(t){const i=this.parsePlaceholder("Identifier");if(!i)return super.parseImport(t);if(t.specifiers=[],!this.isContextual(98)&&!this.match(12))return t.source=this.finishPlaceholder(i,"StringLiteral"),this.semicolon(),this.finishNode(t,"ImportDeclaration");const s=this.startNodeAtNode(i);return s.local=i,t.specifiers.push(this.finishNode(s,"ImportDefaultSpecifier")),this.eat(12)&&(this.maybeParseStarImportSpecifier(t)||this.parseNamedImportSpecifiers(t)),this.expectContextual(98),t.source=this.parseImportSource(),this.semicolon(),this.finishNode(t,"ImportDeclaration")}parseImportSource(){return this.parsePlaceholder("StringLiteral")||super.parseImportSource()}assertNoSpace(){this.state.start>this.state.lastTokEndLoc.index&&this.raise(bZ.UnexpectedSpace,{at:this.state.lastTokEndLoc})}},vLe=n=>class extends n{parseV8Intrinsic(){if(this.match(54)){const t=this.state.startLoc,i=this.startNode();if(this.next(),on(this.state.type)){const s=this.parseIdentifierName(),r=this.createIdentifier(i,s);if(r.type="V8IntrinsicIdentifier",this.match(10))return r}this.unexpected(t)}}parseExprAtom(t){return this.parseV8Intrinsic()||super.parseExprAtom(t)}};function or(n,e){const[t,i]=typeof e=="string"?[e,{}]:e,s=Object.keys(i),r=s.length===0;return n.some(o=>{if(typeof o=="string")return r&&o===t;{const[a,l]=o;if(a!==t)return!1;for(const c of s)if(l[c]!==i[c])return!1;return!0}})}function yg(n,e,t){const i=n.find(s=>Array.isArray(s)?s[0]===e:s===e);return i&&Array.isArray(i)&&i.length>1?i[1][t]:null}const yZ=["minimal","fsharp","hack","smart"],CZ=["^^","@@","^","%","#"],wZ=["hash","bar"];function bLe(n){if(or(n,"decorators")){if(or(n,"decorators-legacy"))throw new Error("Cannot use the decorators and decorators-legacy plugin together");const e=yg(n,"decorators","decoratorsBeforeExport");if(e!=null&&typeof e!="boolean")throw new Error("'decoratorsBeforeExport' must be a boolean, if specified.");const t=yg(n,"decorators","allowCallParenthesized");if(t!=null&&typeof t!="boolean")throw new Error("'allowCallParenthesized' must be a boolean.")}if(or(n,"flow")&&or(n,"typescript"))throw new Error("Cannot combine flow and typescript plugins.");if(or(n,"placeholders")&&or(n,"v8intrinsic"))throw new Error("Cannot combine placeholders and v8intrinsic plugins.");if(or(n,"pipelineOperator")){const e=yg(n,"pipelineOperator","proposal");if(!yZ.includes(e)){const i=yZ.map(s=>`"${s}"`).join(", ");throw new Error(`"pipelineOperator" requires "proposal" option whose value must be one of: ${i}.`)}const t=or(n,["recordAndTuple",{syntaxType:"hash"}]);if(e==="hack"){if(or(n,"placeholders"))throw new Error("Cannot combine placeholders plugin and Hack-style pipes.");if(or(n,"v8intrinsic"))throw new Error("Cannot combine v8intrinsic plugin and Hack-style pipes.");const i=yg(n,"pipelineOperator","topicToken");if(!CZ.includes(i)){const s=CZ.map(r=>`"${r}"`).join(", ");throw new Error(`"pipelineOperator" in "proposal": "hack" mode also requires a "topicToken" option whose value must be one of: ${s}.`)}if(i==="#"&&t)throw new Error('Plugin conflict between `["pipelineOperator", { proposal: "hack", topicToken: "#" }]` and `["recordAndtuple", { syntaxType: "hash"}]`.')}else if(e==="smart"&&t)throw new Error('Plugin conflict between `["pipelineOperator", { proposal: "smart" }]` and `["recordAndtuple", { syntaxType: "hash"}]`.')}if(or(n,"moduleAttributes")){if(or(n,"importAssertions")||or(n,"importAttributes"))throw new Error("Cannot combine importAssertions, importAttributes and moduleAttributes plugins.");if(yg(n,"moduleAttributes","version")!=="may-2020")throw new Error("The 'moduleAttributes' plugin requires a 'version' option, representing the last proposal update. Currently, the only supported value is 'may-2020'.")}if(or(n,"importAssertions")&&or(n,"importAttributes"))throw new Error("Cannot combine importAssertions and importAttributes plugins.");if(or(n,"recordAndTuple")&&yg(n,"recordAndTuple","syntaxType")!=null&&!wZ.includes(yg(n,"recordAndTuple","syntaxType")))throw new Error("The 'syntaxType' option of the 'recordAndTuple' plugin must be one of: "+wZ.map(e=>`'${e}'`).join(", "));if(or(n,"asyncDoExpressions")&&!or(n,"doExpressions")){const e=new Error("'asyncDoExpressions' requires 'doExpressions', please add 'doExpressions' to parser plugins.");throw e.missingPlugins="doExpressions",e}if(or(n,"optionalChainingAssign")&&yg(n,"optionalChainingAssign","version")!=="2023-07")throw new Error("The 'optionalChainingAssign' plugin requires a 'version' option, representing the last proposal update. Currently, the only supported value is '2023-07'.")}const Jae={estree:nke,jsx:sLe,flow:iLe,typescript:fLe,v8intrinsic:vLe,placeholders:_Le},yLe=Object.keys(Jae),D4={sourceType:"script",sourceFilename:void 0,startColumn:0,startLine:1,allowAwaitOutsideFunction:!1,allowReturnOutsideFunction:!1,allowNewTargetOutsideFunction:!1,allowImportExportEverywhere:!1,allowSuperOutsideMethod:!1,allowUndeclaredExports:!1,plugins:[],strictMode:null,ranges:!1,tokens:!1,createImportExpressions:!1,createParenthesizedExpressions:!1,errorRecovery:!1,attachComment:!0,annexB:!0};function CLe(n){if(n==null)return Object.assign({},D4);if(n.annexB!=null&&n.annexB!==!1)throw new Error("The `annexB` option can only be set to `false`.");const e={};for(const i of Object.keys(D4)){var t;e[i]=(t=n[i])!=null?t:D4[i]}return e}class wLe extends lLe{checkProto(e,t,i,s){if(e.type==="SpreadElement"||this.isObjectMethod(e)||e.computed||e.shorthand)return;const r=e.key;if((r.type==="Identifier"?r.name:r.value)==="__proto__"){if(t){this.raise(_e.RecordNoProto,{at:r});return}i.used&&(s?s.doubleProtoLoc===null&&(s.doubleProtoLoc=r.loc.start):this.raise(_e.DuplicateProto,{at:r})),i.used=!0}}shouldExitDescending(e,t){return e.type==="ArrowFunctionExpression"&&e.start===t}getExpression(){this.enterInitialScopes(),this.nextToken();const e=this.parseExpression();return this.match(139)||this.unexpected(),this.finalizeRemainingComments(),e.comments=this.state.comments,e.errors=this.state.errors,this.options.tokens&&(e.tokens=this.tokens),e}parseExpression(e,t){return e?this.disallowInAnd(()=>this.parseExpressionBase(t)):this.allowInAnd(()=>this.parseExpressionBase(t))}parseExpressionBase(e){const t=this.state.startLoc,i=this.parseMaybeAssign(e);if(this.match(12)){const s=this.startNodeAt(t);for(s.expressions=[i];this.eat(12);)s.expressions.push(this.parseMaybeAssign(e));return this.toReferencedList(s.expressions),this.finishNode(s,"SequenceExpression")}return i}parseMaybeAssignDisallowIn(e,t){return this.disallowInAnd(()=>this.parseMaybeAssign(e,t))}parseMaybeAssignAllowIn(e,t){return this.allowInAnd(()=>this.parseMaybeAssign(e,t))}setOptionalParametersError(e,t){var i;e.optionalParametersLoc=(i=t==null?void 0:t.loc)!=null?i:this.state.startLoc}parseMaybeAssign(e,t){const i=this.state.startLoc;if(this.isContextual(108)&&this.prodParam.hasYield){let a=this.parseYield();return t&&(a=t.call(this,a,i)),a}let s;e?s=!1:(e=new NT,s=!0);const{type:r}=this.state;(r===10||on(r))&&(this.state.potentialArrowAt=this.state.start);let o=this.parseMaybeConditional(e);if(t&&(o=t.call(this,o,i)),lke(this.state.type)){const a=this.startNodeAt(i),l=this.state.value;if(a.operator=l,this.match(29)){this.toAssignable(o,!0),a.left=o;const c=i.index;e.doubleProtoLoc!=null&&e.doubleProtoLoc.index>=c&&(e.doubleProtoLoc=null),e.shorthandAssignLoc!=null&&e.shorthandAssignLoc.index>=c&&(e.shorthandAssignLoc=null),e.privateKeyLoc!=null&&e.privateKeyLoc.index>=c&&(this.checkDestructuringPrivate(e),e.privateKeyLoc=null)}else a.left=o;return this.next(),a.right=this.parseMaybeAssign(),this.checkLVal(o,{in:this.finishNode(a,"AssignmentExpression")}),a}else s&&this.checkExpressionErrors(e,!0);return o}parseMaybeConditional(e){const t=this.state.startLoc,i=this.state.potentialArrowAt,s=this.parseExprOps(e);return this.shouldExitDescending(s,i)?s:this.parseConditional(s,t,e)}parseConditional(e,t,i){if(this.eat(17)){const s=this.startNodeAt(t);return s.test=e,s.consequent=this.parseMaybeAssignAllowIn(),this.expect(14),s.alternate=this.parseMaybeAssign(),this.finishNode(s,"ConditionalExpression")}return e}parseMaybeUnaryOrPrivate(e){return this.match(138)?this.parsePrivateName():this.parseMaybeUnary(e)}parseExprOps(e){const t=this.state.startLoc,i=this.state.potentialArrowAt,s=this.parseMaybeUnaryOrPrivate(e);return this.shouldExitDescending(s,i)?s:this.parseExprOp(s,t,-1)}parseExprOp(e,t,i){if(this.isPrivateName(e)){const r=this.getPrivateNameSV(e);(i>=DT(58)||!this.prodParam.hasIn||!this.match(58))&&this.raise(_e.PrivateInExpectedIn,{at:e,identifierName:r}),this.classScope.usePrivateName(r,e.loc.start)}const s=this.state.type;if(uke(s)&&(this.prodParam.hasIn||!this.match(58))){let r=DT(s);if(r>i){if(s===39){if(this.expectPlugin("pipelineOperator"),this.state.inFSharpPipelineDirectBody)return e;this.checkPipelineAtInfixOperator(e,t)}const o=this.startNodeAt(t);o.left=e,o.operator=this.state.value;const a=s===41||s===42,l=s===40;if(l&&(r=DT(42)),this.next(),s===39&&this.hasPlugin(["pipelineOperator",{proposal:"minimal"}])&&this.state.type===96&&this.prodParam.hasAwait)throw this.raise(_e.UnexpectedAwaitAfterPipelineBody,{at:this.state.startLoc});o.right=this.parseExprOpRightExpr(s,r);const c=this.finishNode(o,a||l?"LogicalExpression":"BinaryExpression"),u=this.state.type;if(l&&(u===41||u===42)||a&&u===40)throw this.raise(_e.MixingCoalesceWithLogical,{at:this.state.startLoc});return this.parseExprOp(c,t,i)}}return e}parseExprOpRightExpr(e,t){const i=this.state.startLoc;switch(e){case 39:switch(this.getPluginOption("pipelineOperator","proposal")){case"hack":return this.withTopicBindingContext(()=>this.parseHackPipeBody());case"smart":return this.withTopicBindingContext(()=>{if(this.prodParam.hasYield&&this.isContextual(108))throw this.raise(_e.PipeBodyIsTighter,{at:this.state.startLoc});return this.parseSmartPipelineBodyInStyle(this.parseExprOpBaseRightExpr(e,t),i)});case"fsharp":return this.withSoloAwaitPermittingContext(()=>this.parseFSharpPipelineBody(t))}default:return this.parseExprOpBaseRightExpr(e,t)}}parseExprOpBaseRightExpr(e,t){const i=this.state.startLoc;return this.parseExprOp(this.parseMaybeUnaryOrPrivate(),i,pke(e)?t-1:t)}parseHackPipeBody(){var e;const{startLoc:t}=this.state,i=this.parseMaybeAssign();return XSe.has(i.type)&&!((e=i.extra)!=null&&e.parenthesized)&&this.raise(_e.PipeUnparenthesizedBody,{at:t,type:i.type}),this.topicReferenceWasUsedInCurrentContext()||this.raise(_e.PipeTopicUnused,{at:t}),i}checkExponentialAfterUnary(e){this.match(57)&&this.raise(_e.UnexpectedTokenUnaryExponentiation,{at:e.argument})}parseMaybeUnary(e,t){const i=this.state.startLoc,s=this.isContextual(96);if(s&&this.isAwaitAllowed()){this.next();const l=this.parseAwait(i);return t||this.checkExponentialAfterUnary(l),l}const r=this.match(34),o=this.startNode();if(dke(this.state.type)){o.operator=this.state.value,o.prefix=!0,this.match(72)&&this.expectPlugin("throwExpressions");const l=this.match(89);if(this.next(),o.argument=this.parseMaybeUnary(null,!0),this.checkExpressionErrors(e,!0),this.state.strict&&l){const c=o.argument;c.type==="Identifier"?this.raise(_e.StrictDelete,{at:o}):this.hasPropertyAsPrivateName(c)&&this.raise(_e.DeletePrivateField,{at:o})}if(!r)return t||this.checkExponentialAfterUnary(o),this.finishNode(o,"UnaryExpression")}const a=this.parseUpdate(o,r,e);if(s){const{type:l}=this.state;if((this.hasPlugin("v8intrinsic")?J6(l):J6(l)&&!this.match(54))&&!this.isAmbiguousAwait())return this.raiseOverwrite(_e.AwaitNotInAsyncContext,{at:i}),this.parseAwait(i)}return a}parseUpdate(e,t,i){if(t){const o=e;return this.checkLVal(o.argument,{in:this.finishNode(o,"UpdateExpression")}),e}const s=this.state.startLoc;let r=this.parseExprSubscripts(i);if(this.checkExpressionErrors(i,!1))return r;for(;hke(this.state.type)&&!this.canInsertSemicolon();){const o=this.startNodeAt(s);o.operator=this.state.value,o.prefix=!1,o.argument=r,this.next(),this.checkLVal(r,{in:r=this.finishNode(o,"UpdateExpression")})}return r}parseExprSubscripts(e){const t=this.state.startLoc,i=this.state.potentialArrowAt,s=this.parseExprAtom(e);return this.shouldExitDescending(s,i)?s:this.parseSubscripts(s,t)}parseSubscripts(e,t,i){const s={optionalChainMember:!1,maybeAsyncArrow:this.atPossibleAsyncArrow(e),stop:!1};do e=this.parseSubscript(e,t,i,s),s.maybeAsyncArrow=!1;while(!s.stop);return e}parseSubscript(e,t,i,s){const{type:r}=this.state;if(!i&&r===15)return this.parseBind(e,t,i,s);if(KN(r))return this.parseTaggedTemplateExpression(e,t,s);let o=!1;if(r===18){if(i&&(this.raise(_e.OptionalChainingNoNew,{at:this.state.startLoc}),this.lookaheadCharCode()===40))return s.stop=!0,e;s.optionalChainMember=o=!0,this.next()}if(!i&&this.match(10))return this.parseCoverCallAndAsyncArrowHead(e,t,s,o);{const a=this.eat(0);return a||o||this.eat(16)?this.parseMember(e,t,s,a,o):(s.stop=!0,e)}}parseMember(e,t,i,s,r){const o=this.startNodeAt(t);return o.object=e,o.computed=s,s?(o.property=this.parseExpression(),this.expect(3)):this.match(138)?(e.type==="Super"&&this.raise(_e.SuperPrivateField,{at:t}),this.classScope.usePrivateName(this.state.value,this.state.startLoc),o.property=this.parsePrivateName()):o.property=this.parseIdentifier(!0),i.optionalChainMember?(o.optional=r,this.finishNode(o,"OptionalMemberExpression")):this.finishNode(o,"MemberExpression")}parseBind(e,t,i,s){const r=this.startNodeAt(t);return r.object=e,this.next(),r.callee=this.parseNoCallExpr(),s.stop=!0,this.parseSubscripts(this.finishNode(r,"BindExpression"),t,i)}parseCoverCallAndAsyncArrowHead(e,t,i,s){const r=this.state.maybeInArrowParameters;let o=null;this.state.maybeInArrowParameters=!0,this.next();const a=this.startNodeAt(t);a.callee=e;const{maybeAsyncArrow:l,optionalChainMember:c}=i;l&&(this.expressionScope.enter(jke()),o=new NT),c&&(a.optional=s),s?a.arguments=this.parseCallExpressionArguments(11):a.arguments=this.parseCallExpressionArguments(11,e.type==="Import",e.type!=="Super",a,o);let u=this.finishCallExpression(a,c);return l&&this.shouldParseAsyncArrow()&&!s?(i.stop=!0,this.checkDestructuringPrivate(o),this.expressionScope.validateAsPattern(),this.expressionScope.exit(),u=this.parseAsyncArrowFromCallExpression(this.startNodeAt(t),u)):(l&&(this.checkExpressionErrors(o,!0),this.expressionScope.exit()),this.toReferencedArguments(u)),this.state.maybeInArrowParameters=r,u}toReferencedArguments(e,t){this.toReferencedListDeep(e.arguments,t)}parseTaggedTemplateExpression(e,t,i){const s=this.startNodeAt(t);return s.tag=e,s.quasi=this.parseTemplate(!0),i.optionalChainMember&&this.raise(_e.OptionalChainingNoTemplate,{at:t}),this.finishNode(s,"TaggedTemplateExpression")}atPossibleAsyncArrow(e){return e.type==="Identifier"&&e.name==="async"&&this.state.lastTokEndLoc.index===e.end&&!this.canInsertSemicolon()&&e.end-e.start===5&&e.start===this.state.potentialArrowAt}expectImportAttributesPlugin(){this.hasPlugin("importAssertions")||this.expectPlugin("importAttributes")}finishCallExpression(e,t){if(e.callee.type==="Import")if(e.arguments.length===2&&(this.hasPlugin("moduleAttributes")||this.expectImportAttributesPlugin()),e.arguments.length===0||e.arguments.length>2)this.raise(_e.ImportCallArity,{at:e,maxArgumentCount:this.hasPlugin("importAttributes")||this.hasPlugin("importAssertions")||this.hasPlugin("moduleAttributes")?2:1});else for(const i of e.arguments)i.type==="SpreadElement"&&this.raise(_e.ImportCallSpreadArgument,{at:i});return this.finishNode(e,t?"OptionalCallExpression":"CallExpression")}parseCallExpressionArguments(e,t,i,s,r){const o=[];let a=!0;const l=this.state.inFSharpPipelineDirectBody;for(this.state.inFSharpPipelineDirectBody=!1;!this.eat(e);){if(a)a=!1;else if(this.expect(12),this.match(e)){t&&!this.hasPlugin("importAttributes")&&!this.hasPlugin("importAssertions")&&!this.hasPlugin("moduleAttributes")&&this.raise(_e.ImportCallArgumentTrailingComma,{at:this.state.lastTokStartLoc}),s&&this.addTrailingCommaExtraToNode(s),this.next();break}o.push(this.parseExprListItem(!1,r,i))}return this.state.inFSharpPipelineDirectBody=l,o}shouldParseAsyncArrow(){return this.match(19)&&!this.canInsertSemicolon()}parseAsyncArrowFromCallExpression(e,t){var i;return this.resetPreviousNodeTrailingComments(t),this.expect(19),this.parseArrowExpression(e,t.arguments,!0,(i=t.extra)==null?void 0:i.trailingCommaLoc),t.innerComments&&Hk(e,t.innerComments),t.callee.trailingComments&&Hk(e,t.callee.trailingComments),e}parseNoCallExpr(){const e=this.state.startLoc;return this.parseSubscripts(this.parseExprAtom(),e,!0)}parseExprAtom(e){let t,i=null;const{type:s}=this.state;switch(s){case 79:return this.parseSuper();case 83:return t=this.startNode(),this.next(),this.match(16)?this.parseImportMetaProperty(t):this.match(10)?this.options.createImportExpressions?this.parseImportCall(t):this.finishNode(t,"Import"):(this.raise(_e.UnsupportedImport,{at:this.state.lastTokStartLoc}),this.finishNode(t,"Import"));case 78:return t=this.startNode(),this.next(),this.finishNode(t,"ThisExpression");case 90:return this.parseDo(this.startNode(),!1);case 56:case 31:return this.readRegexp(),this.parseRegExpLiteral(this.state.value);case 134:return this.parseNumericLiteral(this.state.value);case 135:return this.parseBigIntLiteral(this.state.value);case 136:return this.parseDecimalLiteral(this.state.value);case 133:return this.parseStringLiteral(this.state.value);case 84:return this.parseNullLiteral();case 85:return this.parseBooleanLiteral(!0);case 86:return this.parseBooleanLiteral(!1);case 10:{const r=this.state.potentialArrowAt===this.state.start;return this.parseParenAndDistinguishExpression(r)}case 2:case 1:return this.parseArrayLike(this.state.type===2?4:3,!1,!0);case 0:return this.parseArrayLike(3,!0,!1,e);case 6:case 7:return this.parseObjectLike(this.state.type===6?9:8,!1,!0);case 5:return this.parseObjectLike(8,!1,!1,e);case 68:return this.parseFunctionOrFunctionSent();case 26:i=this.parseDecorators();case 80:return this.parseClass(this.maybeTakeDecorators(i,this.startNode()),!1);case 77:return this.parseNewOrNewTarget();case 25:case 24:return this.parseTemplate(!1);case 15:{t=this.startNode(),this.next(),t.object=null;const r=t.callee=this.parseNoCallExpr();if(r.type==="MemberExpression")return this.finishNode(t,"BindExpression");throw this.raise(_e.UnsupportedBind,{at:r})}case 138:return this.raise(_e.PrivateInExpectedIn,{at:this.state.startLoc,identifierName:this.state.value}),this.parsePrivateName();case 33:return this.parseTopicReferenceThenEqualsSign(54,"%");case 32:return this.parseTopicReferenceThenEqualsSign(44,"^");case 37:case 38:return this.parseTopicReference("hack");case 44:case 54:case 27:{const r=this.getPluginOption("pipelineOperator","proposal");if(r)return this.parseTopicReference(r);this.unexpected();break}case 47:{const r=this.input.codePointAt(this.nextTokenStart());af(r)||r===62?this.expectOnePlugin(["jsx","flow","typescript"]):this.unexpected();break}default:if(on(s)){if(this.isContextual(127)&&this.lookaheadInLineCharCode()===123)return this.parseModuleExpression();const r=this.state.potentialArrowAt===this.state.start,o=this.state.containsEsc,a=this.parseIdentifier();if(!o&&a.name==="async"&&!this.canInsertSemicolon()){const{type:l}=this.state;if(l===68)return this.resetPreviousNodeTrailingComments(a),this.next(),this.parseAsyncFunctionExpression(this.startNodeAtNode(a));if(on(l))return this.lookaheadCharCode()===61?this.parseAsyncArrowUnaryFunction(this.startNodeAtNode(a)):a;if(l===90)return this.resetPreviousNodeTrailingComments(a),this.parseDo(this.startNodeAtNode(a),!0)}return r&&this.match(19)&&!this.canInsertSemicolon()?(this.next(),this.parseArrowExpression(this.startNodeAtNode(a),[a],!1)):a}else this.unexpected()}}parseTopicReferenceThenEqualsSign(e,t){const i=this.getPluginOption("pipelineOperator","proposal");if(i)return this.state.type=e,this.state.value=t,this.state.pos--,this.state.end--,this.state.endLoc=Yo(this.state.endLoc,-1),this.parseTopicReference(i);this.unexpected()}parseTopicReference(e){const t=this.startNode(),i=this.state.startLoc,s=this.state.type;return this.next(),this.finishTopicReference(t,i,e,s)}finishTopicReference(e,t,i,s){if(this.testTopicReferenceConfiguration(i,t,s)){const r=i==="smart"?"PipelinePrimaryTopicReference":"TopicReference";return this.topicReferenceIsAllowedInCurrentContext()||this.raise(i==="smart"?_e.PrimaryTopicNotAllowed:_e.PipeTopicUnbound,{at:t}),this.registerTopicReference(),this.finishNode(e,r)}else throw this.raise(_e.PipeTopicUnconfiguredToken,{at:t,token:pp(s)})}testTopicReferenceConfiguration(e,t,i){switch(e){case"hack":return this.hasPlugin(["pipelineOperator",{topicToken:pp(i)}]);case"smart":return i===27;default:throw this.raise(_e.PipeTopicRequiresHackPipes,{at:t})}}parseAsyncArrowUnaryFunction(e){this.prodParam.enter(TT(!0,this.prodParam.hasYield));const t=[this.parseIdentifier()];return this.prodParam.exit(),this.hasPrecedingLineBreak()&&this.raise(_e.LineTerminatorBeforeArrow,{at:this.state.curPosition()}),this.expect(19),this.parseArrowExpression(e,t,!0)}parseDo(e,t){this.expectPlugin("doExpressions"),t&&this.expectPlugin("asyncDoExpressions"),e.async=t,this.next();const i=this.state.labels;return this.state.labels=[],t?(this.prodParam.enter(2),e.body=this.parseBlock(),this.prodParam.exit()):e.body=this.parseBlock(),this.state.labels=i,this.finishNode(e,"DoExpression")}parseSuper(){const e=this.startNode();return this.next(),this.match(10)&&!this.scope.allowDirectSuper&&!this.options.allowSuperOutsideMethod?this.raise(_e.SuperNotAllowed,{at:e}):!this.scope.allowSuper&&!this.options.allowSuperOutsideMethod&&this.raise(_e.UnexpectedSuper,{at:e}),!this.match(10)&&!this.match(0)&&!this.match(16)&&this.raise(_e.UnsupportedSuper,{at:e}),this.finishNode(e,"Super")}parsePrivateName(){const e=this.startNode(),t=this.startNodeAt(Yo(this.state.startLoc,1)),i=this.state.value;return this.next(),e.id=this.createIdentifier(t,i),this.finishNode(e,"PrivateName")}parseFunctionOrFunctionSent(){const e=this.startNode();if(this.next(),this.prodParam.hasYield&&this.match(16)){const t=this.createIdentifier(this.startNodeAtNode(e),"function");return this.next(),this.match(103)?this.expectPlugin("functionSent"):this.hasPlugin("functionSent")||this.unexpected(),this.parseMetaProperty(e,t,"sent")}return this.parseFunction(e)}parseMetaProperty(e,t,i){e.meta=t;const s=this.state.containsEsc;return e.property=this.parseIdentifier(!0),(e.property.name!==i||s)&&this.raise(_e.UnsupportedMetaProperty,{at:e.property,target:t.name,onlyValidPropertyName:i}),this.finishNode(e,"MetaProperty")}parseImportMetaProperty(e){const t=this.createIdentifier(this.startNodeAtNode(e),"import");if(this.next(),this.isContextual(101))this.inModule||this.raise(_e.ImportMetaOutsideModule,{at:t}),this.sawUnambiguousESM=!0;else if(this.isContextual(105)||this.isContextual(97)){const i=this.isContextual(105);if(i||this.unexpected(),this.expectPlugin(i?"sourcePhaseImports":"deferredImportEvaluation"),!this.options.createImportExpressions)throw this.raise(_e.DynamicImportPhaseRequiresImportExpressions,{at:this.state.startLoc,phase:this.state.value});return this.next(),e.phase=i?"source":"defer",this.parseImportCall(e)}return this.parseMetaProperty(e,t,"meta")}parseLiteralAtNode(e,t,i){return this.addExtra(i,"rawValue",e),this.addExtra(i,"raw",this.input.slice(i.start,this.state.end)),i.value=e,this.next(),this.finishNode(i,t)}parseLiteral(e,t){const i=this.startNode();return this.parseLiteralAtNode(e,t,i)}parseStringLiteral(e){return this.parseLiteral(e,"StringLiteral")}parseNumericLiteral(e){return this.parseLiteral(e,"NumericLiteral")}parseBigIntLiteral(e){return this.parseLiteral(e,"BigIntLiteral")}parseDecimalLiteral(e){return this.parseLiteral(e,"DecimalLiteral")}parseRegExpLiteral(e){const t=this.parseLiteral(e.value,"RegExpLiteral");return t.pattern=e.pattern,t.flags=e.flags,t}parseBooleanLiteral(e){const t=this.startNode();return t.value=e,this.next(),this.finishNode(t,"BooleanLiteral")}parseNullLiteral(){const e=this.startNode();return this.next(),this.finishNode(e,"NullLiteral")}parseParenAndDistinguishExpression(e){const t=this.state.startLoc;let i;this.next(),this.expressionScope.enter(Uke());const s=this.state.maybeInArrowParameters,r=this.state.inFSharpPipelineDirectBody;this.state.maybeInArrowParameters=!0,this.state.inFSharpPipelineDirectBody=!1;const o=this.state.startLoc,a=[],l=new NT;let c=!0,u,h;for(;!this.match(11);){if(c)c=!1;else if(this.expect(12,l.optionalParametersLoc===null?null:l.optionalParametersLoc),this.match(11)){h=this.state.startLoc;break}if(this.match(21)){const g=this.state.startLoc;if(u=this.state.startLoc,a.push(this.parseParenItem(this.parseRestBinding(),g)),!this.checkCommaAfterRest(41))break}else a.push(this.parseMaybeAssignAllowIn(l,this.parseParenItem))}const d=this.state.lastTokEndLoc;this.expect(11),this.state.maybeInArrowParameters=s,this.state.inFSharpPipelineDirectBody=r;let f=this.startNodeAt(t);return e&&this.shouldParseArrow(a)&&(f=this.parseArrow(f))?(this.checkDestructuringPrivate(l),this.expressionScope.validateAsPattern(),this.expressionScope.exit(),this.parseArrowExpression(f,a,!1),f):(this.expressionScope.exit(),a.length||this.unexpected(this.state.lastTokStartLoc),h&&this.unexpected(h),u&&this.unexpected(u),this.checkExpressionErrors(l,!0),this.toReferencedListDeep(a,!0),a.length>1?(i=this.startNodeAt(o),i.expressions=a,this.finishNode(i,"SequenceExpression"),this.resetEndLocation(i,d)):i=a[0],this.wrapParenthesis(t,i))}wrapParenthesis(e,t){if(!this.options.createParenthesizedExpressions)return this.addExtra(t,"parenthesized",!0),this.addExtra(t,"parenStart",e.index),this.takeSurroundingComments(t,e.index,this.state.lastTokEndLoc.index),t;const i=this.startNodeAt(e);return i.expression=t,this.finishNode(i,"ParenthesizedExpression")}shouldParseArrow(e){return!this.canInsertSemicolon()}parseArrow(e){if(this.eat(19))return e}parseParenItem(e,t){return e}parseNewOrNewTarget(){const e=this.startNode();if(this.next(),this.match(16)){const t=this.createIdentifier(this.startNodeAtNode(e),"new");this.next();const i=this.parseMetaProperty(e,t,"target");return!this.scope.inNonArrowFunction&&!this.scope.inClass&&!this.options.allowNewTargetOutsideFunction&&this.raise(_e.UnexpectedNewTarget,{at:i}),i}return this.parseNew(e)}parseNew(e){if(this.parseNewCallee(e),this.eat(10)){const t=this.parseExprList(11);this.toReferencedList(t),e.arguments=t}else e.arguments=[];return this.finishNode(e,"NewExpression")}parseNewCallee(e){const t=this.match(83),i=this.parseNoCallExpr();e.callee=i,t&&(i.type==="Import"||i.type==="ImportExpression")&&this.raise(_e.ImportCallNotNewExpression,{at:i})}parseTemplateElement(e){const{start:t,startLoc:i,end:s,value:r}=this.state,o=t+1,a=this.startNodeAt(Yo(i,1));r===null&&(e||this.raise(_e.InvalidEscapeSequenceTemplate,{at:Yo(this.state.firstInvalidTemplateEscapePos,1)}));const l=this.match(24),c=l?-1:-2,u=s+c;a.value={raw:this.input.slice(o,u).replace(/\r\n?/g,` +`),cooked:r===null?null:r.slice(1,c)},a.tail=l,this.next();const h=this.finishNode(a,"TemplateElement");return this.resetEndLocation(h,Yo(this.state.lastTokEndLoc,c)),h}parseTemplate(e){const t=this.startNode();t.expressions=[];let i=this.parseTemplateElement(e);for(t.quasis=[i];!i.tail;)t.expressions.push(this.parseTemplateSubstitution()),this.readTemplateContinuation(),t.quasis.push(i=this.parseTemplateElement(e));return this.finishNode(t,"TemplateLiteral")}parseTemplateSubstitution(){return this.parseExpression()}parseObjectLike(e,t,i,s){i&&this.expectPlugin("recordAndTuple");const r=this.state.inFSharpPipelineDirectBody;this.state.inFSharpPipelineDirectBody=!1;const o=Object.create(null);let a=!0;const l=this.startNode();for(l.properties=[],this.next();!this.match(e);){if(a)a=!1;else if(this.expect(12),this.match(e)){this.addTrailingCommaExtraToNode(l);break}let u;t?u=this.parseBindingProperty():(u=this.parsePropertyDefinition(s),this.checkProto(u,i,o,s)),i&&!this.isObjectProperty(u)&&u.type!=="SpreadElement"&&this.raise(_e.InvalidRecordProperty,{at:u}),u.shorthand&&this.addExtra(u,"shorthand",!0),l.properties.push(u)}this.next(),this.state.inFSharpPipelineDirectBody=r;let c="ObjectExpression";return t?c="ObjectPattern":i&&(c="RecordExpression"),this.finishNode(l,c)}addTrailingCommaExtraToNode(e){this.addExtra(e,"trailingComma",this.state.lastTokStart),this.addExtra(e,"trailingCommaLoc",this.state.lastTokStartLoc,!1)}maybeAsyncOrAccessorProp(e){return!e.computed&&e.key.type==="Identifier"&&(this.isLiteralPropertyName()||this.match(0)||this.match(55))}parsePropertyDefinition(e){let t=[];if(this.match(26))for(this.hasPlugin("decorators")&&this.raise(_e.UnsupportedPropertyDecorator,{at:this.state.startLoc});this.match(26);)t.push(this.parseDecorator());const i=this.startNode();let s=!1,r=!1,o;if(this.match(21))return t.length&&this.unexpected(),this.parseSpread();t.length&&(i.decorators=t,t=[]),i.method=!1,e&&(o=this.state.startLoc);let a=this.eat(55);this.parsePropertyNamePrefixOperator(i);const l=this.state.containsEsc,c=this.parsePropertyName(i,e);if(!a&&!l&&this.maybeAsyncOrAccessorProp(i)){const u=c.name;u==="async"&&!this.hasPrecedingLineBreak()&&(s=!0,this.resetPreviousNodeTrailingComments(c),a=this.eat(55),this.parsePropertyName(i)),(u==="get"||u==="set")&&(r=!0,this.resetPreviousNodeTrailingComments(c),i.kind=u,this.match(55)&&(a=!0,this.raise(_e.AccessorIsGenerator,{at:this.state.curPosition(),kind:u}),this.next()),this.parsePropertyName(i))}return this.parseObjPropValue(i,o,a,s,!1,r,e)}getGetterSetterExpectedParamCount(e){return e.kind==="get"?0:1}getObjectOrClassMethodParams(e){return e.params}checkGetterSetterParams(e){var t;const i=this.getGetterSetterExpectedParamCount(e),s=this.getObjectOrClassMethodParams(e);s.length!==i&&this.raise(e.kind==="get"?_e.BadGetterArity:_e.BadSetterArity,{at:e}),e.kind==="set"&&((t=s[s.length-1])==null?void 0:t.type)==="RestElement"&&this.raise(_e.BadSetterRestParameter,{at:e})}parseObjectMethod(e,t,i,s,r){if(r){const o=this.parseMethod(e,t,!1,!1,!1,"ObjectMethod");return this.checkGetterSetterParams(o),o}if(i||t||this.match(10))return s&&this.unexpected(),e.kind="method",e.method=!0,this.parseMethod(e,t,i,!1,!1,"ObjectMethod")}parseObjectProperty(e,t,i,s){if(e.shorthand=!1,this.eat(14))return e.value=i?this.parseMaybeDefault(this.state.startLoc):this.parseMaybeAssignAllowIn(s),this.finishNode(e,"ObjectProperty");if(!e.computed&&e.key.type==="Identifier"){if(this.checkReservedWord(e.key.name,e.key.loc.start,!0,!1),i)e.value=this.parseMaybeDefault(t,Tf(e.key));else if(this.match(29)){const r=this.state.startLoc;s!=null?s.shorthandAssignLoc===null&&(s.shorthandAssignLoc=r):this.raise(_e.InvalidCoverInitializedName,{at:r}),e.value=this.parseMaybeDefault(t,Tf(e.key))}else e.value=Tf(e.key);return e.shorthand=!0,this.finishNode(e,"ObjectProperty")}}parseObjPropValue(e,t,i,s,r,o,a){const l=this.parseObjectMethod(e,i,s,r,o)||this.parseObjectProperty(e,t,r,a);return l||this.unexpected(),l}parsePropertyName(e,t){if(this.eat(0))e.computed=!0,e.key=this.parseMaybeAssignAllowIn(),this.expect(3);else{const{type:i,value:s}=this.state;let r;if(fu(i))r=this.parseIdentifier(!0);else switch(i){case 134:r=this.parseNumericLiteral(s);break;case 133:r=this.parseStringLiteral(s);break;case 135:r=this.parseBigIntLiteral(s);break;case 136:r=this.parseDecimalLiteral(s);break;case 138:{const o=this.state.startLoc;t!=null?t.privateKeyLoc===null&&(t.privateKeyLoc=o):this.raise(_e.UnexpectedPrivateField,{at:o}),r=this.parsePrivateName();break}default:this.unexpected()}e.key=r,i!==138&&(e.computed=!1)}return e.key}initFunction(e,t){e.id=null,e.generator=!1,e.async=t}parseMethod(e,t,i,s,r,o,a=!1){this.initFunction(e,i),e.generator=t,this.scope.enter(18|(a?64:0)|(r?32:0)),this.prodParam.enter(TT(i,e.generator)),this.parseFunctionParams(e,s);const l=this.parseFunctionBodyAndFinish(e,o,!0);return this.prodParam.exit(),this.scope.exit(),l}parseArrayLike(e,t,i,s){i&&this.expectPlugin("recordAndTuple");const r=this.state.inFSharpPipelineDirectBody;this.state.inFSharpPipelineDirectBody=!1;const o=this.startNode();return this.next(),o.elements=this.parseExprList(e,!i,s,o),this.state.inFSharpPipelineDirectBody=r,this.finishNode(o,i?"TupleExpression":"ArrayExpression")}parseArrowExpression(e,t,i,s){this.scope.enter(6);let r=TT(i,!1);!this.match(5)&&this.prodParam.hasIn&&(r|=8),this.prodParam.enter(r),this.initFunction(e,i);const o=this.state.maybeInArrowParameters;return t&&(this.state.maybeInArrowParameters=!0,this.setArrowFunctionParameters(e,t,s)),this.state.maybeInArrowParameters=!1,this.parseFunctionBody(e,!0),this.prodParam.exit(),this.scope.exit(),this.state.maybeInArrowParameters=o,this.finishNode(e,"ArrowFunctionExpression")}setArrowFunctionParameters(e,t,i){this.toAssignableList(t,i,!1),e.params=t}parseFunctionBodyAndFinish(e,t,i=!1){return this.parseFunctionBody(e,!1,i),this.finishNode(e,t)}parseFunctionBody(e,t,i=!1){const s=t&&!this.match(5);if(this.expressionScope.enter(Yae()),s)e.body=this.parseMaybeAssign(),this.checkParams(e,!1,t,!1);else{const r=this.state.strict,o=this.state.labels;this.state.labels=[],this.prodParam.enter(this.prodParam.currentFlags()|4),e.body=this.parseBlock(!0,!1,a=>{const l=!this.isSimpleParamList(e.params);a&&l&&this.raise(_e.IllegalLanguageModeDirective,{at:(e.kind==="method"||e.kind==="constructor")&&e.key?e.key.loc.end:e});const c=!r&&this.state.strict;this.checkParams(e,!this.state.strict&&!t&&!i&&!l,t,c),this.state.strict&&e.id&&this.checkIdentifier(e.id,65,c)}),this.prodParam.exit(),this.state.labels=o}this.expressionScope.exit()}isSimpleParameter(e){return e.type==="Identifier"}isSimpleParamList(e){for(let t=0,i=e.length;t<i;t++)if(!this.isSimpleParameter(e[t]))return!1;return!0}checkParams(e,t,i,s=!0){const r=!t&&new Set,o={type:"FormalParameters"};for(const a of e.params)this.checkLVal(a,{in:o,binding:5,checkClashes:r,strictModeChanged:s})}parseExprList(e,t,i,s){const r=[];let o=!0;for(;!this.eat(e);){if(o)o=!1;else if(this.expect(12),this.match(e)){s&&this.addTrailingCommaExtraToNode(s),this.next();break}r.push(this.parseExprListItem(t,i))}return r}parseExprListItem(e,t,i){let s;if(this.match(12))e||this.raise(_e.UnexpectedToken,{at:this.state.curPosition(),unexpected:","}),s=null;else if(this.match(21)){const r=this.state.startLoc;s=this.parseParenItem(this.parseSpread(t),r)}else if(this.match(17)){this.expectPlugin("partialApplication"),i||this.raise(_e.UnexpectedArgumentPlaceholder,{at:this.state.startLoc});const r=this.startNode();this.next(),s=this.finishNode(r,"ArgumentPlaceholder")}else s=this.parseMaybeAssignAllowIn(t,this.parseParenItem);return s}parseIdentifier(e){const t=this.startNode(),i=this.parseIdentifierName(e);return this.createIdentifier(t,i)}createIdentifier(e,t){return e.name=t,e.loc.identifierName=t,this.finishNode(e,"Identifier")}parseIdentifierName(e){let t;const{startLoc:i,type:s}=this.state;fu(s)?t=this.state.value:this.unexpected();const r=oke(s);return e?r&&this.replaceToken(132):this.checkReservedWord(t,i,r,!1),this.next(),t}checkReservedWord(e,t,i,s){if(e.length>10||!Lke(e))return;if(i&&wke(e)){this.raise(_e.UnexpectedKeyword,{at:t,keyword:e});return}if((this.state.strict?s?$ae:Vae:Wae)(e,this.inModule)){this.raise(_e.UnexpectedReservedWord,{at:t,reservedWord:e});return}else if(e==="yield"){if(this.prodParam.hasYield){this.raise(_e.YieldBindingIdentifier,{at:t});return}}else if(e==="await"){if(this.prodParam.hasAwait){this.raise(_e.AwaitBindingIdentifier,{at:t});return}if(this.scope.inStaticBlock){this.raise(_e.AwaitBindingIdentifierInStaticBlock,{at:t});return}this.expressionScope.recordAsyncArrowParametersError({at:t})}else if(e==="arguments"&&this.scope.inClassAndNotInNonArrowFunction){this.raise(_e.ArgumentsInClass,{at:t});return}}isAwaitAllowed(){return!!(this.prodParam.hasAwait||this.options.allowAwaitOutsideFunction&&!this.scope.inFunction)}parseAwait(e){const t=this.startNodeAt(e);return this.expressionScope.recordParameterInitializerError(_e.AwaitExpressionFormalParameter,{at:t}),this.eat(55)&&this.raise(_e.ObsoleteAwaitStar,{at:t}),!this.scope.inFunction&&!this.options.allowAwaitOutsideFunction&&(this.isAmbiguousAwait()?this.ambiguousScriptDifferentAst=!0:this.sawUnambiguousESM=!0),this.state.soloAwait||(t.argument=this.parseMaybeUnary(null,!0)),this.finishNode(t,"AwaitExpression")}isAmbiguousAwait(){if(this.hasPrecedingLineBreak())return!0;const{type:e}=this.state;return e===53||e===10||e===0||KN(e)||e===102&&!this.state.containsEsc||e===137||e===56||this.hasPlugin("v8intrinsic")&&e===54}parseYield(){const e=this.startNode();this.expressionScope.recordParameterInitializerError(_e.YieldInParameter,{at:e}),this.next();let t=!1,i=null;if(!this.hasPrecedingLineBreak())switch(t=this.eat(55),this.state.type){case 13:case 139:case 8:case 11:case 3:case 9:case 14:case 12:if(!t)break;default:i=this.parseMaybeAssign()}return e.delegate=t,e.argument=i,this.finishNode(e,"YieldExpression")}parseImportCall(e){return this.next(),e.source=this.parseMaybeAssignAllowIn(),(this.hasPlugin("importAttributes")||this.hasPlugin("importAssertions"))&&(e.options=null),this.eat(12)&&(this.expectImportAttributesPlugin(),this.match(11)||(e.options=this.parseMaybeAssignAllowIn(),this.eat(12))),this.expect(11),this.finishNode(e,"ImportExpression")}checkPipelineAtInfixOperator(e,t){this.hasPlugin(["pipelineOperator",{proposal:"smart"}])&&e.type==="SequenceExpression"&&this.raise(_e.PipelineHeadSequenceExpression,{at:t})}parseSmartPipelineBodyInStyle(e,t){if(this.isSimpleReference(e)){const i=this.startNodeAt(t);return i.callee=e,this.finishNode(i,"PipelineBareFunction")}else{const i=this.startNodeAt(t);return this.checkSmartPipeTopicBodyEarlyErrors(t),i.expression=e,this.finishNode(i,"PipelineTopicExpression")}}isSimpleReference(e){switch(e.type){case"MemberExpression":return!e.computed&&this.isSimpleReference(e.object);case"Identifier":return!0;default:return!1}}checkSmartPipeTopicBodyEarlyErrors(e){if(this.match(19))throw this.raise(_e.PipelineBodyNoArrow,{at:this.state.startLoc});this.topicReferenceWasUsedInCurrentContext()||this.raise(_e.PipelineTopicUnused,{at:e})}withTopicBindingContext(e){const t=this.state.topicContext;this.state.topicContext={maxNumOfResolvableTopics:1,maxTopicIndex:null};try{return e()}finally{this.state.topicContext=t}}withSmartMixTopicForbiddingContext(e){if(this.hasPlugin(["pipelineOperator",{proposal:"smart"}])){const t=this.state.topicContext;this.state.topicContext={maxNumOfResolvableTopics:0,maxTopicIndex:null};try{return e()}finally{this.state.topicContext=t}}else return e()}withSoloAwaitPermittingContext(e){const t=this.state.soloAwait;this.state.soloAwait=!0;try{return e()}finally{this.state.soloAwait=t}}allowInAnd(e){const t=this.prodParam.currentFlags();if(8&~t){this.prodParam.enter(t|8);try{return e()}finally{this.prodParam.exit()}}return e()}disallowInAnd(e){const t=this.prodParam.currentFlags();if(8&t){this.prodParam.enter(t&-9);try{return e()}finally{this.prodParam.exit()}}return e()}registerTopicReference(){this.state.topicContext.maxTopicIndex=0}topicReferenceIsAllowedInCurrentContext(){return this.state.topicContext.maxNumOfResolvableTopics>=1}topicReferenceWasUsedInCurrentContext(){return this.state.topicContext.maxTopicIndex!=null&&this.state.topicContext.maxTopicIndex>=0}parseFSharpPipelineBody(e){const t=this.state.startLoc;this.state.potentialArrowAt=this.state.start;const i=this.state.inFSharpPipelineDirectBody;this.state.inFSharpPipelineDirectBody=!0;const s=this.parseExprOp(this.parseMaybeUnaryOrPrivate(),t,e);return this.state.inFSharpPipelineDirectBody=i,s}parseModuleExpression(){this.expectPlugin("moduleBlocks");const e=this.startNode();this.next(),this.match(5)||this.unexpected(null,5);const t=this.startNodeAt(this.state.endLoc);this.next();const i=this.initializeScopes(!0);this.enterInitialScopes();try{e.body=this.parseProgram(t,8,"module")}finally{i()}return this.finishNode(e,"ModuleExpression")}parsePropertyNamePrefixOperator(e){}}const I4={kind:"loop"},SLe={kind:"switch"},kLe=/[\uD800-\uDFFF]/u,T4=/in(?:stanceof)?/y;function LLe(n,e){for(let t=0;t<n.length;t++){const i=n[t],{type:s}=i;if(typeof s=="number"){{if(s===138){const{loc:r,start:o,value:a,end:l}=i,c=o+1,u=Yo(r.start,1);n.splice(t,1,new Ig({type:Ud(27),value:"#",start:o,end:c,startLoc:r.start,endLoc:u}),new Ig({type:Ud(132),value:a,start:c,end:l,startLoc:u,endLoc:r.end})),t++;continue}if(KN(s)){const{loc:r,start:o,value:a,end:l}=i,c=o+1,u=Yo(r.start,1);let h;e.charCodeAt(o)===96?h=new Ig({type:Ud(22),value:"`",start:o,end:c,startLoc:r.start,endLoc:u}):h=new Ig({type:Ud(8),value:"}",start:o,end:c,startLoc:r.start,endLoc:u});let d,f,g,p;s===24?(f=l-1,g=Yo(r.end,-1),d=a===null?null:a.slice(1,-1),p=new Ig({type:Ud(22),value:"`",start:f,end:l,startLoc:g,endLoc:r.end})):(f=l-2,g=Yo(r.end,-2),d=a===null?null:a.slice(1,-2),p=new Ig({type:Ud(23),value:"${",start:f,end:l,startLoc:g,endLoc:r.end})),n.splice(t,1,h,new Ig({type:Ud(20),value:d,start:c,end:f,startLoc:u,endLoc:g}),p),t+=2;continue}}i.type=Ud(s)}}return n}class xLe extends wLe{parseTopLevel(e,t){return e.program=this.parseProgram(t),e.comments=this.state.comments,this.options.tokens&&(e.tokens=LLe(this.tokens,this.input)),this.finishNode(e,"File")}parseProgram(e,t=139,i=this.options.sourceType){if(e.sourceType=i,e.interpreter=this.parseInterpreterDirective(),this.parseBlockBody(e,!0,!0,t),this.inModule&&!this.options.allowUndeclaredExports&&this.scope.undefinedExports.size>0)for(const[r,o]of Array.from(this.scope.undefinedExports))this.raise(_e.ModuleExportUndefined,{at:o,localName:r});let s;return t===139?s=this.finishNode(e,"Program"):s=this.finishNodeAt(e,"Program",Yo(this.state.startLoc,-1)),s}stmtToDirective(e){const t=e;t.type="Directive",t.value=t.expression,delete t.expression;const i=t.value,s=i.value,r=this.input.slice(i.start,i.end),o=i.value=r.slice(1,-1);return this.addExtra(i,"raw",r),this.addExtra(i,"rawValue",o),this.addExtra(i,"expressionValue",s),i.type="DirectiveLiteral",t}parseInterpreterDirective(){if(!this.match(28))return null;const e=this.startNode();return e.value=this.state.value,this.next(),this.finishNode(e,"InterpreterDirective")}isLet(){return this.isContextual(100)?this.hasFollowingBindingAtom():!1}chStartsBindingIdentifier(e,t){if(af(e)){if(T4.lastIndex=t,T4.test(this.input)){const i=this.codePointAtPos(T4.lastIndex);if(!cb(i)&&i!==92)return!1}return!0}else return e===92}chStartsBindingPattern(e){return e===91||e===123}hasFollowingBindingAtom(){const e=this.nextTokenStart(),t=this.codePointAtPos(e);return this.chStartsBindingPattern(t)||this.chStartsBindingIdentifier(t,e)}hasInLineFollowingBindingIdentifier(){const e=this.nextTokenInLineStart(),t=this.codePointAtPos(e);return this.chStartsBindingIdentifier(t,e)}startsUsingForOf(){const{type:e,containsEsc:t}=this.lookahead();if(e===102&&!t)return!1;if(on(e)&&!this.hasFollowingLineBreak())return this.expectPlugin("explicitResourceManagement"),!0}startsAwaitUsing(){let e=this.nextTokenInLineStart();if(this.isUnparsedContextual(e,"using")){e=this.nextTokenInLineStartSince(e+5);const t=this.codePointAtPos(e);if(this.chStartsBindingIdentifier(t,e))return this.expectPlugin("explicitResourceManagement"),!0}return!1}parseModuleItem(){return this.parseStatementLike(15)}parseStatementListItem(){return this.parseStatementLike(6|(!this.options.annexB||this.state.strict?0:8))}parseStatementOrSloppyAnnexBFunctionDeclaration(e=!1){let t=0;return this.options.annexB&&!this.state.strict&&(t|=4,e&&(t|=8)),this.parseStatementLike(t)}parseStatement(){return this.parseStatementLike(0)}parseStatementLike(e){let t=null;return this.match(26)&&(t=this.parseDecorators(!0)),this.parseStatementContent(e,t)}parseStatementContent(e,t){const i=this.state.type,s=this.startNode(),r=!!(e&2),o=!!(e&4),a=e&1;switch(i){case 60:return this.parseBreakContinueStatement(s,!0);case 63:return this.parseBreakContinueStatement(s,!1);case 64:return this.parseDebuggerStatement(s);case 90:return this.parseDoWhileStatement(s);case 91:return this.parseForStatement(s);case 68:if(this.lookaheadCharCode()===46)break;return o||this.raise(this.state.strict?_e.StrictFunction:this.options.annexB?_e.SloppyFunctionAnnexB:_e.SloppyFunction,{at:this.state.startLoc}),this.parseFunctionStatement(s,!1,!r&&o);case 80:return r||this.unexpected(),this.parseClass(this.maybeTakeDecorators(t,s),!0);case 69:return this.parseIfStatement(s);case 70:return this.parseReturnStatement(s);case 71:return this.parseSwitchStatement(s);case 72:return this.parseThrowStatement(s);case 73:return this.parseTryStatement(s);case 96:if(!this.state.containsEsc&&this.startsAwaitUsing())return this.isAwaitAllowed()?r||this.raise(_e.UnexpectedLexicalDeclaration,{at:s}):this.raise(_e.AwaitUsingNotInAsyncContext,{at:s}),this.next(),this.parseVarStatement(s,"await using");break;case 107:if(this.state.containsEsc||!this.hasInLineFollowingBindingIdentifier())break;return this.expectPlugin("explicitResourceManagement"),!this.scope.inModule&&this.scope.inTopLevel?this.raise(_e.UnexpectedUsingDeclaration,{at:this.state.startLoc}):r||this.raise(_e.UnexpectedLexicalDeclaration,{at:this.state.startLoc}),this.parseVarStatement(s,"using");case 100:{if(this.state.containsEsc)break;const u=this.nextTokenStart(),h=this.codePointAtPos(u);if(h!==91&&(!r&&this.hasFollowingLineBreak()||!this.chStartsBindingIdentifier(h,u)&&h!==123))break}case 75:r||this.raise(_e.UnexpectedLexicalDeclaration,{at:this.state.startLoc});case 74:{const u=this.state.value;return this.parseVarStatement(s,u)}case 92:return this.parseWhileStatement(s);case 76:return this.parseWithStatement(s);case 5:return this.parseBlock();case 13:return this.parseEmptyStatement(s);case 83:{const u=this.lookaheadCharCode();if(u===40||u===46)break}case 82:{!this.options.allowImportExportEverywhere&&!a&&this.raise(_e.UnexpectedImportExport,{at:this.state.startLoc}),this.next();let u;return i===83?(u=this.parseImport(s),u.type==="ImportDeclaration"&&(!u.importKind||u.importKind==="value")&&(this.sawUnambiguousESM=!0)):(u=this.parseExport(s,t),(u.type==="ExportNamedDeclaration"&&(!u.exportKind||u.exportKind==="value")||u.type==="ExportAllDeclaration"&&(!u.exportKind||u.exportKind==="value")||u.type==="ExportDefaultDeclaration")&&(this.sawUnambiguousESM=!0)),this.assertModuleNodeAllowed(u),u}default:if(this.isAsyncFunction())return r||this.raise(_e.AsyncFunctionInSingleStatementContext,{at:this.state.startLoc}),this.next(),this.parseFunctionStatement(s,!0,!r&&o)}const l=this.state.value,c=this.parseExpression();return on(i)&&c.type==="Identifier"&&this.eat(14)?this.parseLabeledStatement(s,l,c,e):this.parseExpressionStatement(s,c,t)}assertModuleNodeAllowed(e){!this.options.allowImportExportEverywhere&&!this.inModule&&this.raise(_e.ImportOutsideModule,{at:e})}decoratorsEnabledBeforeExport(){return this.hasPlugin("decorators-legacy")?!0:this.hasPlugin("decorators")&&this.getPluginOption("decorators","decoratorsBeforeExport")!==!1}maybeTakeDecorators(e,t,i){return e&&(t.decorators&&t.decorators.length>0?(typeof this.getPluginOption("decorators","decoratorsBeforeExport")!="boolean"&&this.raise(_e.DecoratorsBeforeAfterExport,{at:t.decorators[0]}),t.decorators.unshift(...e)):t.decorators=e,this.resetStartLocationFromNode(t,e[0]),i&&this.resetStartLocationFromNode(i,t)),t}canHaveLeadingDecorator(){return this.match(80)}parseDecorators(e){const t=[];do t.push(this.parseDecorator());while(this.match(26));if(this.match(82))e||this.unexpected(),this.decoratorsEnabledBeforeExport()||this.raise(_e.DecoratorExportClass,{at:this.state.startLoc});else if(!this.canHaveLeadingDecorator())throw this.raise(_e.UnexpectedLeadingDecorator,{at:this.state.startLoc});return t}parseDecorator(){this.expectOnePlugin(["decorators","decorators-legacy"]);const e=this.startNode();if(this.next(),this.hasPlugin("decorators")){const t=this.state.startLoc;let i;if(this.match(10)){const s=this.state.startLoc;this.next(),i=this.parseExpression(),this.expect(11),i=this.wrapParenthesis(s,i);const r=this.state.startLoc;e.expression=this.parseMaybeDecoratorArguments(i),this.getPluginOption("decorators","allowCallParenthesized")===!1&&e.expression!==i&&this.raise(_e.DecoratorArgumentsOutsideParentheses,{at:r})}else{for(i=this.parseIdentifier(!1);this.eat(16);){const s=this.startNodeAt(t);s.object=i,this.match(138)?(this.classScope.usePrivateName(this.state.value,this.state.startLoc),s.property=this.parsePrivateName()):s.property=this.parseIdentifier(!0),s.computed=!1,i=this.finishNode(s,"MemberExpression")}e.expression=this.parseMaybeDecoratorArguments(i)}}else e.expression=this.parseExprSubscripts();return this.finishNode(e,"Decorator")}parseMaybeDecoratorArguments(e){if(this.eat(10)){const t=this.startNodeAtNode(e);return t.callee=e,t.arguments=this.parseCallExpressionArguments(11,!1),this.toReferencedList(t.arguments),this.finishNode(t,"CallExpression")}return e}parseBreakContinueStatement(e,t){return this.next(),this.isLineTerminator()?e.label=null:(e.label=this.parseIdentifier(),this.semicolon()),this.verifyBreakContinue(e,t),this.finishNode(e,t?"BreakStatement":"ContinueStatement")}verifyBreakContinue(e,t){let i;for(i=0;i<this.state.labels.length;++i){const s=this.state.labels[i];if((e.label==null||s.name===e.label.name)&&(s.kind!=null&&(t||s.kind==="loop")||e.label&&t))break}if(i===this.state.labels.length){const s=t?"BreakStatement":"ContinueStatement";this.raise(_e.IllegalBreakContinue,{at:e,type:s})}}parseDebuggerStatement(e){return this.next(),this.semicolon(),this.finishNode(e,"DebuggerStatement")}parseHeaderExpression(){this.expect(10);const e=this.parseExpression();return this.expect(11),e}parseDoWhileStatement(e){return this.next(),this.state.labels.push(I4),e.body=this.withSmartMixTopicForbiddingContext(()=>this.parseStatement()),this.state.labels.pop(),this.expect(92),e.test=this.parseHeaderExpression(),this.eat(13),this.finishNode(e,"DoWhileStatement")}parseForStatement(e){this.next(),this.state.labels.push(I4);let t=null;if(this.isAwaitAllowed()&&this.eatContextual(96)&&(t=this.state.lastTokStartLoc),this.scope.enter(0),this.expect(10),this.match(13))return t!==null&&this.unexpected(t),this.parseFor(e,null);const i=this.isContextual(100);{const l=this.isContextual(96)&&this.startsAwaitUsing(),c=l||this.isContextual(107)&&this.startsUsingForOf(),u=i&&this.hasFollowingBindingAtom()||c;if(this.match(74)||this.match(75)||u){const h=this.startNode();let d;l?(d="await using",this.isAwaitAllowed()||this.raise(_e.AwaitUsingNotInAsyncContext,{at:this.state.startLoc}),this.next()):d=this.state.value,this.next(),this.parseVar(h,!0,d);const f=this.finishNode(h,"VariableDeclaration"),g=this.match(58);return g&&c&&this.raise(_e.ForInUsing,{at:f}),(g||this.isContextual(102))&&f.declarations.length===1?this.parseForIn(e,f,t):(t!==null&&this.unexpected(t),this.parseFor(e,f))}}const s=this.isContextual(95),r=new NT,o=this.parseExpression(!0,r),a=this.isContextual(102);if(a&&(i&&this.raise(_e.ForOfLet,{at:o}),t===null&&s&&o.type==="Identifier"&&this.raise(_e.ForOfAsync,{at:o})),a||this.match(58)){this.checkDestructuringPrivate(r),this.toAssignable(o,!0);const l=a?"ForOfStatement":"ForInStatement";return this.checkLVal(o,{in:{type:l}}),this.parseForIn(e,o,t)}else this.checkExpressionErrors(r,!0);return t!==null&&this.unexpected(t),this.parseFor(e,o)}parseFunctionStatement(e,t,i){return this.next(),this.parseFunction(e,1|(i?2:0)|(t?8:0))}parseIfStatement(e){return this.next(),e.test=this.parseHeaderExpression(),e.consequent=this.parseStatementOrSloppyAnnexBFunctionDeclaration(),e.alternate=this.eat(66)?this.parseStatementOrSloppyAnnexBFunctionDeclaration():null,this.finishNode(e,"IfStatement")}parseReturnStatement(e){return!this.prodParam.hasReturn&&!this.options.allowReturnOutsideFunction&&this.raise(_e.IllegalReturn,{at:this.state.startLoc}),this.next(),this.isLineTerminator()?e.argument=null:(e.argument=this.parseExpression(),this.semicolon()),this.finishNode(e,"ReturnStatement")}parseSwitchStatement(e){this.next(),e.discriminant=this.parseHeaderExpression();const t=e.cases=[];this.expect(5),this.state.labels.push(SLe),this.scope.enter(0);let i;for(let s;!this.match(8);)if(this.match(61)||this.match(65)){const r=this.match(61);i&&this.finishNode(i,"SwitchCase"),t.push(i=this.startNode()),i.consequent=[],this.next(),r?i.test=this.parseExpression():(s&&this.raise(_e.MultipleDefaultsInSwitch,{at:this.state.lastTokStartLoc}),s=!0,i.test=null),this.expect(14)}else i?i.consequent.push(this.parseStatementListItem()):this.unexpected();return this.scope.exit(),i&&this.finishNode(i,"SwitchCase"),this.next(),this.state.labels.pop(),this.finishNode(e,"SwitchStatement")}parseThrowStatement(e){return this.next(),this.hasPrecedingLineBreak()&&this.raise(_e.NewlineAfterThrow,{at:this.state.lastTokEndLoc}),e.argument=this.parseExpression(),this.semicolon(),this.finishNode(e,"ThrowStatement")}parseCatchClauseParam(){const e=this.parseBindingAtom();return this.scope.enter(this.options.annexB&&e.type==="Identifier"?8:0),this.checkLVal(e,{in:{type:"CatchClause"},binding:9}),e}parseTryStatement(e){if(this.next(),e.block=this.parseBlock(),e.handler=null,this.match(62)){const t=this.startNode();this.next(),this.match(10)?(this.expect(10),t.param=this.parseCatchClauseParam(),this.expect(11)):(t.param=null,this.scope.enter(0)),t.body=this.withSmartMixTopicForbiddingContext(()=>this.parseBlock(!1,!1)),this.scope.exit(),e.handler=this.finishNode(t,"CatchClause")}return e.finalizer=this.eat(67)?this.parseBlock():null,!e.handler&&!e.finalizer&&this.raise(_e.NoCatchOrFinally,{at:e}),this.finishNode(e,"TryStatement")}parseVarStatement(e,t,i=!1){return this.next(),this.parseVar(e,!1,t,i),this.semicolon(),this.finishNode(e,"VariableDeclaration")}parseWhileStatement(e){return this.next(),e.test=this.parseHeaderExpression(),this.state.labels.push(I4),e.body=this.withSmartMixTopicForbiddingContext(()=>this.parseStatement()),this.state.labels.pop(),this.finishNode(e,"WhileStatement")}parseWithStatement(e){return this.state.strict&&this.raise(_e.StrictWith,{at:this.state.startLoc}),this.next(),e.object=this.parseHeaderExpression(),e.body=this.withSmartMixTopicForbiddingContext(()=>this.parseStatement()),this.finishNode(e,"WithStatement")}parseEmptyStatement(e){return this.next(),this.finishNode(e,"EmptyStatement")}parseLabeledStatement(e,t,i,s){for(const o of this.state.labels)o.name===t&&this.raise(_e.LabelRedeclaration,{at:i,labelName:t});const r=cke(this.state.type)?"loop":this.match(71)?"switch":null;for(let o=this.state.labels.length-1;o>=0;o--){const a=this.state.labels[o];if(a.statementStart===e.start)a.statementStart=this.state.start,a.kind=r;else break}return this.state.labels.push({name:t,kind:r,statementStart:this.state.start}),e.body=s&8?this.parseStatementOrSloppyAnnexBFunctionDeclaration(!0):this.parseStatement(),this.state.labels.pop(),e.label=i,this.finishNode(e,"LabeledStatement")}parseExpressionStatement(e,t,i){return e.expression=t,this.semicolon(),this.finishNode(e,"ExpressionStatement")}parseBlock(e=!1,t=!0,i){const s=this.startNode();return e&&this.state.strictErrors.clear(),this.expect(5),t&&this.scope.enter(0),this.parseBlockBody(s,e,!1,8,i),t&&this.scope.exit(),this.finishNode(s,"BlockStatement")}isValidDirective(e){return e.type==="ExpressionStatement"&&e.expression.type==="StringLiteral"&&!e.expression.extra.parenthesized}parseBlockBody(e,t,i,s,r){const o=e.body=[],a=e.directives=[];this.parseBlockOrModuleBlockBody(o,t?a:void 0,i,s,r)}parseBlockOrModuleBlockBody(e,t,i,s,r){const o=this.state.strict;let a=!1,l=!1;for(;!this.match(s);){const c=i?this.parseModuleItem():this.parseStatementListItem();if(t&&!l){if(this.isValidDirective(c)){const u=this.stmtToDirective(c);t.push(u),!a&&u.value.value==="use strict"&&(a=!0,this.setStrict(!0));continue}l=!0,this.state.strictErrors.clear()}e.push(c)}r==null||r.call(this,a),o||this.setStrict(!1),this.next()}parseFor(e,t){return e.init=t,this.semicolon(!1),e.test=this.match(13)?null:this.parseExpression(),this.semicolon(!1),e.update=this.match(11)?null:this.parseExpression(),this.expect(11),e.body=this.withSmartMixTopicForbiddingContext(()=>this.parseStatement()),this.scope.exit(),this.state.labels.pop(),this.finishNode(e,"ForStatement")}parseForIn(e,t,i){const s=this.match(58);return this.next(),s?i!==null&&this.unexpected(i):e.await=i!==null,t.type==="VariableDeclaration"&&t.declarations[0].init!=null&&(!s||!this.options.annexB||this.state.strict||t.kind!=="var"||t.declarations[0].id.type!=="Identifier")&&this.raise(_e.ForInOfLoopInitializer,{at:t,type:s?"ForInStatement":"ForOfStatement"}),t.type==="AssignmentPattern"&&this.raise(_e.InvalidLhs,{at:t,ancestor:{type:"ForStatement"}}),e.left=t,e.right=s?this.parseExpression():this.parseMaybeAssignAllowIn(),this.expect(11),e.body=this.withSmartMixTopicForbiddingContext(()=>this.parseStatement()),this.scope.exit(),this.state.labels.pop(),this.finishNode(e,s?"ForInStatement":"ForOfStatement")}parseVar(e,t,i,s=!1){const r=e.declarations=[];for(e.kind=i;;){const o=this.startNode();if(this.parseVarId(o,i),o.init=this.eat(29)?t?this.parseMaybeAssignDisallowIn():this.parseMaybeAssignAllowIn():null,o.init===null&&!s&&(o.id.type!=="Identifier"&&!(t&&(this.match(58)||this.isContextual(102)))?this.raise(_e.DeclarationMissingInitializer,{at:this.state.lastTokEndLoc,kind:"destructuring"}):i==="const"&&!(this.match(58)||this.isContextual(102))&&this.raise(_e.DeclarationMissingInitializer,{at:this.state.lastTokEndLoc,kind:"const"})),r.push(this.finishNode(o,"VariableDeclarator")),!this.eat(12))break}return e}parseVarId(e,t){const i=this.parseBindingAtom();this.checkLVal(i,{in:{type:"VariableDeclarator"},binding:t==="var"?5:8201}),e.id=i}parseAsyncFunctionExpression(e){return this.parseFunction(e,8)}parseFunction(e,t=0){const i=t&2,s=!!(t&1),r=s&&!(t&4),o=!!(t&8);this.initFunction(e,o),this.match(55)&&(i&&this.raise(_e.GeneratorInSingleStatementContext,{at:this.state.startLoc}),this.next(),e.generator=!0),s&&(e.id=this.parseFunctionId(r));const a=this.state.maybeInArrowParameters;return this.state.maybeInArrowParameters=!1,this.scope.enter(2),this.prodParam.enter(TT(o,e.generator)),s||(e.id=this.parseFunctionId()),this.parseFunctionParams(e,!1),this.withSmartMixTopicForbiddingContext(()=>{this.parseFunctionBodyAndFinish(e,s?"FunctionDeclaration":"FunctionExpression")}),this.prodParam.exit(),this.scope.exit(),s&&!i&&this.registerFunctionStatementId(e),this.state.maybeInArrowParameters=a,e}parseFunctionId(e){return e||on(this.state.type)?this.parseIdentifier():null}parseFunctionParams(e,t){this.expect(10),this.expressionScope.enter(zke()),e.params=this.parseBindingList(11,41,2|(t?4:0)),this.expressionScope.exit()}registerFunctionStatementId(e){e.id&&this.scope.declareName(e.id.name,!this.options.annexB||this.state.strict||e.generator||e.async?this.scope.treatFunctionsAsVar?5:8201:17,e.id.loc.start)}parseClass(e,t,i){this.next();const s=this.state.strict;return this.state.strict=!0,this.parseClassId(e,t,i),this.parseClassSuper(e),e.body=this.parseClassBody(!!e.superClass,s),this.finishNode(e,t?"ClassDeclaration":"ClassExpression")}isClassProperty(){return this.match(29)||this.match(13)||this.match(8)}isClassMethod(){return this.match(10)}isNonstaticConstructor(e){return!e.computed&&!e.static&&(e.key.name==="constructor"||e.key.value==="constructor")}parseClassBody(e,t){this.classScope.enter();const i={hadConstructor:!1,hadSuperClass:e};let s=[];const r=this.startNode();if(r.body=[],this.expect(5),this.withSmartMixTopicForbiddingContext(()=>{for(;!this.match(8);){if(this.eat(13)){if(s.length>0)throw this.raise(_e.DecoratorSemicolon,{at:this.state.lastTokEndLoc});continue}if(this.match(26)){s.push(this.parseDecorator());continue}const o=this.startNode();s.length&&(o.decorators=s,this.resetStartLocationFromNode(o,s[0]),s=[]),this.parseClassMember(r,o,i),o.kind==="constructor"&&o.decorators&&o.decorators.length>0&&this.raise(_e.DecoratorConstructor,{at:o})}}),this.state.strict=t,this.next(),s.length)throw this.raise(_e.TrailingDecorator,{at:this.state.startLoc});return this.classScope.exit(),this.finishNode(r,"ClassBody")}parseClassMemberFromModifier(e,t){const i=this.parseIdentifier(!0);if(this.isClassMethod()){const s=t;return s.kind="method",s.computed=!1,s.key=i,s.static=!1,this.pushClassMethod(e,s,!1,!1,!1,!1),!0}else if(this.isClassProperty()){const s=t;return s.computed=!1,s.key=i,s.static=!1,e.body.push(this.parseClassProperty(s)),!0}return this.resetPreviousNodeTrailingComments(i),!1}parseClassMember(e,t,i){const s=this.isContextual(106);if(s){if(this.parseClassMemberFromModifier(e,t))return;if(this.eat(5)){this.parseClassStaticBlock(e,t);return}}this.parseClassMemberWithIsStatic(e,t,i,s)}parseClassMemberWithIsStatic(e,t,i,s){const r=t,o=t,a=t,l=t,c=t,u=r,h=r;if(t.static=s,this.parsePropertyNamePrefixOperator(t),this.eat(55)){u.kind="method";const m=this.match(138);if(this.parseClassElementName(u),m){this.pushClassPrivateMethod(e,o,!0,!1);return}this.isNonstaticConstructor(r)&&this.raise(_e.ConstructorIsGenerator,{at:r.key}),this.pushClassMethod(e,r,!0,!1,!1,!1);return}const d=on(this.state.type)&&!this.state.containsEsc,f=this.match(138),g=this.parseClassElementName(t),p=this.state.startLoc;if(this.parsePostMemberNameModifiers(h),this.isClassMethod()){if(u.kind="method",f){this.pushClassPrivateMethod(e,o,!1,!1);return}const m=this.isNonstaticConstructor(r);let _=!1;m&&(r.kind="constructor",i.hadConstructor&&!this.hasPlugin("typescript")&&this.raise(_e.DuplicateConstructor,{at:g}),m&&this.hasPlugin("typescript")&&t.override&&this.raise(_e.OverrideOnConstructor,{at:g}),i.hadConstructor=!0,_=i.hadSuperClass),this.pushClassMethod(e,r,!1,!1,m,_)}else if(this.isClassProperty())f?this.pushClassPrivateProperty(e,l):this.pushClassProperty(e,a);else if(d&&g.name==="async"&&!this.isLineTerminator()){this.resetPreviousNodeTrailingComments(g);const m=this.eat(55);h.optional&&this.unexpected(p),u.kind="method";const _=this.match(138);this.parseClassElementName(u),this.parsePostMemberNameModifiers(h),_?this.pushClassPrivateMethod(e,o,m,!0):(this.isNonstaticConstructor(r)&&this.raise(_e.ConstructorIsAsync,{at:r.key}),this.pushClassMethod(e,r,m,!0,!1,!1))}else if(d&&(g.name==="get"||g.name==="set")&&!(this.match(55)&&this.isLineTerminator())){this.resetPreviousNodeTrailingComments(g),u.kind=g.name;const m=this.match(138);this.parseClassElementName(r),m?this.pushClassPrivateMethod(e,o,!1,!1):(this.isNonstaticConstructor(r)&&this.raise(_e.ConstructorIsAccessor,{at:r.key}),this.pushClassMethod(e,r,!1,!1,!1,!1)),this.checkGetterSetterParams(r)}else if(d&&g.name==="accessor"&&!this.isLineTerminator()){this.expectPlugin("decoratorAutoAccessors"),this.resetPreviousNodeTrailingComments(g);const m=this.match(138);this.parseClassElementName(a),this.pushClassAccessorProperty(e,c,m)}else this.isLineTerminator()?f?this.pushClassPrivateProperty(e,l):this.pushClassProperty(e,a):this.unexpected()}parseClassElementName(e){const{type:t,value:i}=this.state;if((t===132||t===133)&&e.static&&i==="prototype"&&this.raise(_e.StaticPrototype,{at:this.state.startLoc}),t===138){i==="constructor"&&this.raise(_e.ConstructorClassPrivateField,{at:this.state.startLoc});const s=this.parsePrivateName();return e.key=s,s}return this.parsePropertyName(e)}parseClassStaticBlock(e,t){var i;this.scope.enter(208);const s=this.state.labels;this.state.labels=[],this.prodParam.enter(0);const r=t.body=[];this.parseBlockOrModuleBlockBody(r,void 0,!1,8),this.prodParam.exit(),this.scope.exit(),this.state.labels=s,e.body.push(this.finishNode(t,"StaticBlock")),(i=t.decorators)!=null&&i.length&&this.raise(_e.DecoratorStaticBlock,{at:t})}pushClassProperty(e,t){!t.computed&&(t.key.name==="constructor"||t.key.value==="constructor")&&this.raise(_e.ConstructorClassField,{at:t.key}),e.body.push(this.parseClassProperty(t))}pushClassPrivateProperty(e,t){const i=this.parseClassPrivateProperty(t);e.body.push(i),this.classScope.declarePrivateName(this.getPrivateNameSV(i.key),0,i.key.loc.start)}pushClassAccessorProperty(e,t,i){if(!i&&!t.computed){const r=t.key;(r.name==="constructor"||r.value==="constructor")&&this.raise(_e.ConstructorClassField,{at:r})}const s=this.parseClassAccessorProperty(t);e.body.push(s),i&&this.classScope.declarePrivateName(this.getPrivateNameSV(s.key),0,s.key.loc.start)}pushClassMethod(e,t,i,s,r,o){e.body.push(this.parseMethod(t,i,s,r,o,"ClassMethod",!0))}pushClassPrivateMethod(e,t,i,s){const r=this.parseMethod(t,i,s,!1,!1,"ClassPrivateMethod",!0);e.body.push(r);const o=r.kind==="get"?r.static?6:2:r.kind==="set"?r.static?5:1:0;this.declareClassPrivateMethodInScope(r,o)}declareClassPrivateMethodInScope(e,t){this.classScope.declarePrivateName(this.getPrivateNameSV(e.key),t,e.key.loc.start)}parsePostMemberNameModifiers(e){}parseClassPrivateProperty(e){return this.parseInitializer(e),this.semicolon(),this.finishNode(e,"ClassPrivateProperty")}parseClassProperty(e){return this.parseInitializer(e),this.semicolon(),this.finishNode(e,"ClassProperty")}parseClassAccessorProperty(e){return this.parseInitializer(e),this.semicolon(),this.finishNode(e,"ClassAccessorProperty")}parseInitializer(e){this.scope.enter(80),this.expressionScope.enter(Yae()),this.prodParam.enter(0),e.value=this.eat(29)?this.parseMaybeAssignAllowIn():null,this.expressionScope.exit(),this.prodParam.exit(),this.scope.exit()}parseClassId(e,t,i,s=8331){if(on(this.state.type))e.id=this.parseIdentifier(),t&&this.declareNameFromIdentifier(e.id,s);else if(i||!t)e.id=null;else throw this.raise(_e.MissingClassName,{at:this.state.startLoc})}parseClassSuper(e){e.superClass=this.eat(81)?this.parseExprSubscripts():null}parseExport(e,t){const i=this.parseMaybeImportPhase(e,!0),s=this.maybeParseExportDefaultSpecifier(e,i),r=!s||this.eat(12),o=r&&this.eatExportStar(e),a=o&&this.maybeParseExportNamespaceSpecifier(e),l=r&&(!a||this.eat(12)),c=s||o;if(o&&!a){if(s&&this.unexpected(),t)throw this.raise(_e.UnsupportedDecoratorExport,{at:e});return this.parseExportFrom(e,!0),this.finishNode(e,"ExportAllDeclaration")}const u=this.maybeParseExportNamedSpecifiers(e);s&&r&&!o&&!u&&this.unexpected(null,5),a&&l&&this.unexpected(null,98);let h;if(c||u){if(h=!1,t)throw this.raise(_e.UnsupportedDecoratorExport,{at:e});this.parseExportFrom(e,c)}else h=this.maybeParseExportDeclaration(e);if(c||u||h){var d;const f=e;if(this.checkExport(f,!0,!1,!!f.source),((d=f.declaration)==null?void 0:d.type)==="ClassDeclaration")this.maybeTakeDecorators(t,f.declaration,f);else if(t)throw this.raise(_e.UnsupportedDecoratorExport,{at:e});return this.finishNode(f,"ExportNamedDeclaration")}if(this.eat(65)){const f=e,g=this.parseExportDefaultExpression();if(f.declaration=g,g.type==="ClassDeclaration")this.maybeTakeDecorators(t,g,f);else if(t)throw this.raise(_e.UnsupportedDecoratorExport,{at:e});return this.checkExport(f,!0,!0),this.finishNode(f,"ExportDefaultDeclaration")}this.unexpected(null,5)}eatExportStar(e){return this.eat(55)}maybeParseExportDefaultSpecifier(e,t){if(t||this.isExportDefaultSpecifier()){this.expectPlugin("exportDefaultFrom",t==null?void 0:t.loc.start);const i=t||this.parseIdentifier(!0),s=this.startNodeAtNode(i);return s.exported=i,e.specifiers=[this.finishNode(s,"ExportDefaultSpecifier")],!0}return!1}maybeParseExportNamespaceSpecifier(e){if(this.isContextual(93)){e.specifiers||(e.specifiers=[]);const t=this.startNodeAt(this.state.lastTokStartLoc);return this.next(),t.exported=this.parseModuleExportName(),e.specifiers.push(this.finishNode(t,"ExportNamespaceSpecifier")),!0}return!1}maybeParseExportNamedSpecifiers(e){if(this.match(5)){e.specifiers||(e.specifiers=[]);const t=e.exportKind==="type";return e.specifiers.push(...this.parseExportSpecifiers(t)),e.source=null,e.declaration=null,this.hasPlugin("importAssertions")&&(e.assertions=[]),!0}return!1}maybeParseExportDeclaration(e){return this.shouldParseExportDeclaration()?(e.specifiers=[],e.source=null,this.hasPlugin("importAssertions")&&(e.assertions=[]),e.declaration=this.parseExportDeclaration(e),!0):!1}isAsyncFunction(){if(!this.isContextual(95))return!1;const e=this.nextTokenInLineStart();return this.isUnparsedContextual(e,"function")}parseExportDefaultExpression(){const e=this.startNode();if(this.match(68))return this.next(),this.parseFunction(e,5);if(this.isAsyncFunction())return this.next(),this.next(),this.parseFunction(e,13);if(this.match(80))return this.parseClass(e,!0,!0);if(this.match(26))return this.hasPlugin("decorators")&&this.getPluginOption("decorators","decoratorsBeforeExport")===!0&&this.raise(_e.DecoratorBeforeExport,{at:this.state.startLoc}),this.parseClass(this.maybeTakeDecorators(this.parseDecorators(!1),this.startNode()),!0,!0);if(this.match(75)||this.match(74)||this.isLet())throw this.raise(_e.UnsupportedDefaultExport,{at:this.state.startLoc});const t=this.parseMaybeAssignAllowIn();return this.semicolon(),t}parseExportDeclaration(e){return this.match(80)?this.parseClass(this.startNode(),!0,!1):this.parseStatementListItem()}isExportDefaultSpecifier(){const{type:e}=this.state;if(on(e)){if(e===95&&!this.state.containsEsc||e===100)return!1;if((e===130||e===129)&&!this.state.containsEsc){const{type:s}=this.lookahead();if(on(s)&&s!==98||s===5)return this.expectOnePlugin(["flow","typescript"]),!1}}else if(!this.match(65))return!1;const t=this.nextTokenStart(),i=this.isUnparsedContextual(t,"from");if(this.input.charCodeAt(t)===44||on(this.state.type)&&i)return!0;if(this.match(65)&&i){const s=this.input.charCodeAt(this.nextTokenStartSince(t+4));return s===34||s===39}return!1}parseExportFrom(e,t){this.eatContextual(98)?(e.source=this.parseImportSource(),this.checkExport(e),this.maybeParseImportAttributes(e),this.checkJSONModuleImport(e)):t&&this.unexpected(),this.semicolon()}shouldParseExportDeclaration(){const{type:e}=this.state;return e===26&&(this.expectOnePlugin(["decorators","decorators-legacy"]),this.hasPlugin("decorators"))?(this.getPluginOption("decorators","decoratorsBeforeExport")===!0&&this.raise(_e.DecoratorBeforeExport,{at:this.state.startLoc}),!0):e===74||e===75||e===68||e===80||this.isLet()||this.isAsyncFunction()}checkExport(e,t,i,s){if(t){var r;if(i){if(this.checkDuplicateExports(e,"default"),this.hasPlugin("exportDefaultFrom")){var o;const a=e.declaration;a.type==="Identifier"&&a.name==="from"&&a.end-a.start===4&&!((o=a.extra)!=null&&o.parenthesized)&&this.raise(_e.ExportDefaultFromAsIdentifier,{at:a})}}else if((r=e.specifiers)!=null&&r.length)for(const a of e.specifiers){const{exported:l}=a,c=l.type==="Identifier"?l.name:l.value;if(this.checkDuplicateExports(a,c),!s&&a.local){const{local:u}=a;u.type!=="Identifier"?this.raise(_e.ExportBindingIsString,{at:a,localName:u.value,exportName:c}):(this.checkReservedWord(u.name,u.loc.start,!0,!1),this.scope.checkLocalExport(u))}}else if(e.declaration){if(e.declaration.type==="FunctionDeclaration"||e.declaration.type==="ClassDeclaration"){const a=e.declaration.id;if(!a)throw new Error("Assertion failure");this.checkDuplicateExports(e,a.name)}else if(e.declaration.type==="VariableDeclaration")for(const a of e.declaration.declarations)this.checkDeclaration(a.id)}}}checkDeclaration(e){if(e.type==="Identifier")this.checkDuplicateExports(e,e.name);else if(e.type==="ObjectPattern")for(const t of e.properties)this.checkDeclaration(t);else if(e.type==="ArrayPattern")for(const t of e.elements)t&&this.checkDeclaration(t);else e.type==="ObjectProperty"?this.checkDeclaration(e.value):e.type==="RestElement"?this.checkDeclaration(e.argument):e.type==="AssignmentPattern"&&this.checkDeclaration(e.left)}checkDuplicateExports(e,t){this.exportedIdentifiers.has(t)&&(t==="default"?this.raise(_e.DuplicateDefaultExport,{at:e}):this.raise(_e.DuplicateExport,{at:e,exportName:t})),this.exportedIdentifiers.add(t)}parseExportSpecifiers(e){const t=[];let i=!0;for(this.expect(5);!this.eat(8);){if(i)i=!1;else if(this.expect(12),this.eat(8))break;const s=this.isContextual(130),r=this.match(133),o=this.startNode();o.local=this.parseModuleExportName(),t.push(this.parseExportSpecifier(o,r,e,s))}return t}parseExportSpecifier(e,t,i,s){return this.eatContextual(93)?e.exported=this.parseModuleExportName():t?e.exported=Yke(e.local):e.exported||(e.exported=Tf(e.local)),this.finishNode(e,"ExportSpecifier")}parseModuleExportName(){if(this.match(133)){const e=this.parseStringLiteral(this.state.value),t=e.value.match(kLe);return t&&this.raise(_e.ModuleExportNameHasLoneSurrogate,{at:e,surrogateCharCode:t[0].charCodeAt(0)}),e}return this.parseIdentifier(!0)}isJSONModuleImport(e){return e.assertions!=null?e.assertions.some(({key:t,value:i})=>i.value==="json"&&(t.type==="Identifier"?t.name==="type":t.value==="type")):!1}checkImportReflection(e){const{specifiers:t}=e,i=t.length===1?t[0].type:null;if(e.phase==="source")i!=="ImportDefaultSpecifier"&&this.raise(_e.SourcePhaseImportRequiresDefault,{at:t[0].loc.start});else if(e.phase==="defer")i!=="ImportNamespaceSpecifier"&&this.raise(_e.DeferImportRequiresNamespace,{at:t[0].loc.start});else if(e.module){var s;i!=="ImportDefaultSpecifier"&&this.raise(_e.ImportReflectionNotBinding,{at:t[0].loc.start}),((s=e.assertions)==null?void 0:s.length)>0&&this.raise(_e.ImportReflectionHasAssertion,{at:e.specifiers[0].loc.start})}}checkJSONModuleImport(e){if(this.isJSONModuleImport(e)&&e.type!=="ExportAllDeclaration"){const{specifiers:t}=e;if(t!=null){const i=t.find(s=>{let r;if(s.type==="ExportSpecifier"?r=s.local:s.type==="ImportSpecifier"&&(r=s.imported),r!==void 0)return r.type==="Identifier"?r.name!=="default":r.value!=="default"});i!==void 0&&this.raise(_e.ImportJSONBindingNotDefault,{at:i.loc.start})}}}isPotentialImportPhase(e){return e?!1:this.isContextual(105)||this.isContextual(97)||this.isContextual(127)}applyImportPhase(e,t,i,s){t||(i==="module"?(this.expectPlugin("importReflection",s),e.module=!0):this.hasPlugin("importReflection")&&(e.module=!1),i==="source"?(this.expectPlugin("sourcePhaseImports",s),e.phase="source"):i==="defer"?(this.expectPlugin("deferredImportEvaluation",s),e.phase="defer"):this.hasPlugin("sourcePhaseImports")&&(e.phase=null))}parseMaybeImportPhase(e,t){if(!this.isPotentialImportPhase(t))return this.applyImportPhase(e,t,null),null;const i=this.parseIdentifier(!0),{type:s}=this.state;return(fu(s)?s!==98||this.lookaheadCharCode()===102:s!==12)?(this.resetPreviousIdentifierLeadingComments(i),this.applyImportPhase(e,t,i.name,i.loc.start),null):(this.applyImportPhase(e,t,null),i)}isPrecedingIdImportPhase(e){const{type:t}=this.state;return on(t)?t!==98||this.lookaheadCharCode()===102:t!==12}parseImport(e){return this.match(133)?this.parseImportSourceAndAttributes(e):this.parseImportSpecifiersAndAfter(e,this.parseMaybeImportPhase(e,!1))}parseImportSpecifiersAndAfter(e,t){e.specifiers=[];const s=!this.maybeParseDefaultImportSpecifier(e,t)||this.eat(12),r=s&&this.maybeParseStarImportSpecifier(e);return s&&!r&&this.parseNamedImportSpecifiers(e),this.expectContextual(98),this.parseImportSourceAndAttributes(e)}parseImportSourceAndAttributes(e){var t;return(t=e.specifiers)!=null||(e.specifiers=[]),e.source=this.parseImportSource(),this.maybeParseImportAttributes(e),this.checkImportReflection(e),this.checkJSONModuleImport(e),this.semicolon(),this.finishNode(e,"ImportDeclaration")}parseImportSource(){return this.match(133)||this.unexpected(),this.parseExprAtom()}parseImportSpecifierLocal(e,t,i){t.local=this.parseIdentifier(),e.specifiers.push(this.finishImportSpecifier(t,i))}finishImportSpecifier(e,t,i=8201){return this.checkLVal(e.local,{in:{type:t},binding:i}),this.finishNode(e,t)}parseImportAttributes(){this.expect(5);const e=[],t=new Set;do{if(this.match(8))break;const i=this.startNode(),s=this.state.value;if(t.has(s)&&this.raise(_e.ModuleAttributesWithDuplicateKeys,{at:this.state.startLoc,key:s}),t.add(s),this.match(133)?i.key=this.parseStringLiteral(s):i.key=this.parseIdentifier(!0),this.expect(14),!this.match(133))throw this.raise(_e.ModuleAttributeInvalidValue,{at:this.state.startLoc});i.value=this.parseStringLiteral(this.state.value),e.push(this.finishNode(i,"ImportAttribute"))}while(this.eat(12));return this.expect(8),e}parseModuleAttributes(){const e=[],t=new Set;do{const i=this.startNode();if(i.key=this.parseIdentifier(!0),i.key.name!=="type"&&this.raise(_e.ModuleAttributeDifferentFromType,{at:i.key}),t.has(i.key.name)&&this.raise(_e.ModuleAttributesWithDuplicateKeys,{at:i.key,key:i.key.name}),t.add(i.key.name),this.expect(14),!this.match(133))throw this.raise(_e.ModuleAttributeInvalidValue,{at:this.state.startLoc});i.value=this.parseStringLiteral(this.state.value),e.push(this.finishNode(i,"ImportAttribute"))}while(this.eat(12));return e}maybeParseImportAttributes(e){let t,i=!1;if(this.match(76)){if(this.hasPrecedingLineBreak()&&this.lookaheadCharCode()===40)return;this.next(),this.hasPlugin("moduleAttributes")?t=this.parseModuleAttributes():(this.expectImportAttributesPlugin(),t=this.parseImportAttributes()),i=!0}else if(this.isContextual(94)&&!this.hasPrecedingLineBreak())this.hasPlugin("importAttributes")?(this.getPluginOption("importAttributes","deprecatedAssertSyntax")!==!0&&this.raise(_e.ImportAttributesUseAssert,{at:this.state.startLoc}),this.addExtra(e,"deprecatedAssertSyntax",!0)):this.expectOnePlugin(["importAttributes","importAssertions"]),this.next(),t=this.parseImportAttributes();else if(this.hasPlugin("importAttributes")||this.hasPlugin("importAssertions"))t=[];else if(this.hasPlugin("moduleAttributes"))t=[];else return;!i&&this.hasPlugin("importAssertions")?e.assertions=t:e.attributes=t}maybeParseDefaultImportSpecifier(e,t){if(t){const i=this.startNodeAtNode(t);return i.local=t,e.specifiers.push(this.finishImportSpecifier(i,"ImportDefaultSpecifier")),!0}else if(fu(this.state.type))return this.parseImportSpecifierLocal(e,this.startNode(),"ImportDefaultSpecifier"),!0;return!1}maybeParseStarImportSpecifier(e){if(this.match(55)){const t=this.startNode();return this.next(),this.expectContextual(93),this.parseImportSpecifierLocal(e,t,"ImportNamespaceSpecifier"),!0}return!1}parseNamedImportSpecifiers(e){let t=!0;for(this.expect(5);!this.eat(8);){if(t)t=!1;else{if(this.eat(14))throw this.raise(_e.DestructureNamedImport,{at:this.state.startLoc});if(this.expect(12),this.eat(8))break}const i=this.startNode(),s=this.match(133),r=this.isContextual(130);i.imported=this.parseModuleExportName();const o=this.parseImportSpecifier(i,s,e.importKind==="type"||e.importKind==="typeof",r,void 0);e.specifiers.push(o)}}parseImportSpecifier(e,t,i,s,r){if(this.eatContextual(93))e.local=this.parseIdentifier();else{const{imported:o}=e;if(t)throw this.raise(_e.ImportBindingIsString,{at:e,importName:o.value});this.checkReservedWord(o.name,e.loc.start,!0,!0),e.local||(e.local=Tf(o))}return this.finishImportSpecifier(e,"ImportSpecifier",r)}isThisParam(e){return e.type==="Identifier"&&e.name==="this"}}let ele=class extends xLe{constructor(e,t){e=CLe(e),super(e,t),this.options=e,this.initializeScopes(),this.plugins=ELe(this.options.plugins),this.filename=e.sourceFilename}getScopeHandler(){return tz}parse(){this.enterInitialScopes();const e=this.startNode(),t=this.startNode();return this.nextToken(),e.errors=null,this.parseTopLevel(e,t),e.errors=this.state.errors,e}};function ELe(n){const e=new Map;for(const t of n){const[i,s]=Array.isArray(t)?t:[t,{}];e.has(i)||e.set(i,s||{})}return e}function DLe(n,e){var t;if(((t=e)==null?void 0:t.sourceType)==="unambiguous"){e=Object.assign({},e);try{e.sourceType="module";const i=oS(e,n),s=i.parse();if(i.sawUnambiguousESM)return s;if(i.ambiguousScriptDifferentAst)try{return e.sourceType="script",oS(e,n).parse()}catch{}else s.program.sourceType="script";return s}catch(i){try{return e.sourceType="script",oS(e,n).parse()}catch{}throw i}}else return oS(e,n).parse()}function ILe(n,e){const t=oS(e,n);return t.options.strictMode&&(t.state.strict=!0),t.getExpression()}function TLe(n){const e={};for(const t of Object.keys(n))e[t]=Ud(n[t]);return e}const NLe=TLe(rke);function oS(n,e){let t=ele;return n!=null&&n.plugins&&(bLe(n.plugins),t=ALe(n.plugins)),new t(n,e)}const SZ={};function ALe(n){const e=yLe.filter(s=>or(n,s)),t=e.join("/");let i=SZ[t];if(!i){i=ele;for(const s of e)i=Jae[s](i);SZ[t]=i}return i}var Hp=pM.parse=DLe,tle=pM.parseExpression=ILe;pM.tokTypes=NLe;const so=n=>n.type===4&&n.isStatic,gu=(n,e)=>n===e||n===Cae(e);function nz(n){if(gu(n,"Teleport"))return Z1;if(gu(n,"Suspense"))return oC;if(gu(n,"KeepAlive"))return Fk;if(gu(n,"BaseTransition"))return F$}const PLe=/^\d|[^\$\w]/,$p=n=>!PLe.test(n),RLe=/[A-Za-z_$\xA0-\uFFFF]/,MLe=/[\.\?\w$\xA0-\uFFFF]/,OLe=/\s+[.[]\s*|\s*[.[]\s+/g,FLe=n=>{n=n.trim().replace(OLe,o=>o.trim());let e=0,t=[],i=0,s=0,r=null;for(let o=0;o<n.length;o++){const a=n.charAt(o);switch(e){case 0:if(a==="[")t.push(e),e=1,i++;else if(a==="(")t.push(e),e=2,s++;else if(!(o===0?RLe:MLe).test(a))return!1;break;case 1:a==="'"||a==='"'||a==="`"?(t.push(e),e=3,r=a):a==="["?i++:a==="]"&&(--i||(e=t.pop()));break;case 2:if(a==="'"||a==='"'||a==="`")t.push(e),e=3,r=a;else if(a==="(")s++;else if(a===")"){if(o===n.length-1)return!1;--s||(e=t.pop())}break;case 3:a===r&&(e=t.pop(),r=null);break}}return!i&&!s},ile=(n,e)=>{try{let t=tle(n,{plugins:e.expressionPlugins});return(t.type==="TSAsExpression"||t.type==="TSTypeAssertion")&&(t=t.expression),t.type==="MemberExpression"||t.type==="OptionalMemberExpression"||t.type==="Identifier"}catch{return!1}},sz=ile;function rz(n,e,t){const s={source:n.source.slice(e,e+t),start:w_(n.start,n.source,e),end:n.end};return t!=null&&(s.end=w_(n.start,n.source,e+t)),s}function w_(n,e,t=e.length){return ey(If({},n),e,t)}function ey(n,e,t=e.length){let i=0,s=-1;for(let r=0;r<t;r++)e.charCodeAt(r)===10&&(i++,s=r);return n.offset+=t,n.line+=i,n.column=s===-1?n.column+t:t-s,n}function iB(n,e){if(!n)throw new Error(e||"unexpected compiler condition")}function kr(n,e,t=!1){for(let i=0;i<n.props.length;i++){const s=n.props[i];if(s.type===7&&(t||s.exp)&&(Ui(e)?s.name===e:e.test(s.name)))return s}}function ja(n,e,t=!1,i=!1){for(let s=0;s<n.props.length;s++){const r=n.props[s];if(r.type===6){if(t)continue;if(r.name===e&&(r.value||i))return r}else if(r.name==="bind"&&(r.exp||i)&&Dh(r.arg,e))return r}}function Dh(n,e){return!!(n&&so(n)&&n.content===e)}function _M(n){return n.props.some(e=>e.type===7&&e.name==="bind"&&(!e.arg||e.arg.type!==4||!e.arg.isStatic))}function WS(n){return n.type===5||n.type===2}function oz(n){return n.type===7&&n.name==="slot"}function ty(n){return n.type===1&&n.tagType===3}function iy(n){return n.type===1&&n.tagType===2}const BLe=new Set([Qb,lC]);function nle(n,e=[]){if(n&&!Ui(n)&&n.type===14){const t=n.callee;if(!Ui(t)&&BLe.has(t))return nle(n.arguments[0],e.concat(n))}return[n,e]}function $k(n,e,t){let i,s=n.type===13?n.props:n.arguments[2],r=[],o;if(s&&!Ui(s)&&s.type===14){const a=nle(s);s=a[0],r=a[1],o=r[r.length-1]}if(s==null||Ui(s))i=Va([e]);else if(s.type===14){const a=s.arguments[0];!Ui(a)&&a.type===15?kZ(e,a)||a.properties.unshift(e):s.callee===lM?i=$t(t.helper(v_),[Va([e]),s]):s.arguments.unshift(Va([e])),!i&&(i=s)}else s.type===15?(kZ(e,s)||s.properties.unshift(e),i=s):(i=$t(t.helper(v_),[Va([e]),s]),o&&o.callee===lC&&(o=r[r.length-2]));n.type===13?o?o.arguments[0]=i:n.props=i:o?o.arguments[0]=i:n.arguments[2]=i}function kZ(n,e){let t=!1;if(n.key.type===4){const i=n.key.content;t=e.properties.some(s=>s.key.type===4&&s.key.content===i)}return t}function zk(n,e){return`_${e}_${n.replace(/[^\w]/g,(t,i)=>t==="-"?"_":n.charCodeAt(i).toString())}`}function Ia(n,e){if(!n||Object.keys(e).length===0)return!1;switch(n.type){case 1:for(let t=0;t<n.props.length;t++){const i=n.props[t];if(i.type===7&&(Ia(i.arg,e)||Ia(i.exp,e)))return!0}return n.children.some(t=>Ia(t,e));case 11:return Ia(n.source,e)?!0:n.children.some(t=>Ia(t,e));case 9:return n.branches.some(t=>Ia(t,e));case 10:return Ia(n.condition,e)?!0:n.children.some(t=>Ia(t,e));case 4:return!n.isStatic&&$p(n.content)&&!!e[n.content];case 8:return n.children.some(t=>ig(t)&&Ia(t,e));case 5:case 12:return Ia(n.content,e);case 2:case 3:return!1;default:return!1}}function sle(n){return n.type===14&&n.callee===dM?n.arguments[1].returns:n}const az=/([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/,WLe={COMPILER_IS_ON_ELEMENT:{message:'Platform-native elements with "is" prop will no longer be treated as components in Vue 3 unless the "is" value is explicitly prefixed with "vue:".',link:"https://v3-migration.vuejs.org/breaking-changes/custom-elements-interop.html"},COMPILER_V_BIND_SYNC:{message:n=>`.sync modifier for v-bind has been removed. Use v-model with argument instead. \`v-bind:${n}.sync\` should be changed to \`v-model:${n}\`.`,link:"https://v3-migration.vuejs.org/breaking-changes/v-model.html"},COMPILER_V_BIND_PROP:{message:".prop modifier for v-bind has been removed and no longer necessary. Vue 3 will automatically set a binding as DOM property when appropriate."},COMPILER_V_BIND_OBJECT_ORDER:{message:'v-bind="obj" usage is now order sensitive and behaves like JavaScript object spread: it will now overwrite an existing non-mergeable attribute that appears before v-bind in the case of conflict. To retain 2.x behavior, move v-bind to make it the first attribute. You can also suppress this warning if the usage is intended.',link:"https://v3-migration.vuejs.org/breaking-changes/v-bind.html"},COMPILER_V_ON_NATIVE:{message:".native modifier for v-on has been removed as is no longer necessary.",link:"https://v3-migration.vuejs.org/breaking-changes/v-on-native-modifier-removed.html"},COMPILER_V_IF_V_FOR_PRECEDENCE:{message:"v-if / v-for precedence when used on the same element has changed in Vue 3: v-if now takes higher precedence and will no longer have access to v-for scope variables. It is best to avoid the ambiguity with <template> tags or use a computed property that filters v-for data source.",link:"https://v3-migration.vuejs.org/breaking-changes/v-if-v-for.html"},COMPILER_NATIVE_TEMPLATE:{message:"<template> with no special directives will render as a native template element instead of its inner content in Vue 3."},COMPILER_INLINE_TEMPLATE:{message:'"inline-template" has been removed in Vue 3.',link:"https://v3-migration.vuejs.org/breaking-changes/inline-template-attribute.html"},COMPILER_FILTER:{message:'filters have been removed in Vue 3. The "|" symbol will be treated as native JavaScript bitwise OR operator. Use method calls or computed properties instead.',link:"https://v3-migration.vuejs.org/breaking-changes/filters.html"}};function nB(n,e){const t=e.options?e.options.compatConfig:e.compatConfig,i=t&&t[n];return n==="MODE"?i||3:i}function VLe(n,e){const t=nB("MODE",e),i=nB(n,e);return t===3?i===!0:i!==!1}function HLe(n,e,t,...i){const s=VLe(n,e);return s&&rle(n,e,t,...i),s}function rle(n,e,t,...i){if(nB(n,e)==="suppress-warning")return;const{message:r,link:o}=WLe[n],a=`(deprecation ${n}) ${typeof r=="function"?r(...i):r}${o?` + Details: ${o}`:""}`,l=new SyntaxError(a);l.code=n,t&&(l.loc=t),e.onWarn(l)}const $Le=/&(gt|lt|amp|apos|quot);/g,zLe={gt:">",lt:"<",amp:"&",apos:"'",quot:'"'},LZ={delimiters:["{{","}}"],getNamespace:()=>0,getTextMode:()=>0,isVoidTag:xT,isPreTag:xT,isCustomElement:xT,decodeEntities:n=>n.replace($Le,(e,t)=>zLe[t]),onError:O$,onWarn:Iae,comments:!0};function vM(n,e={}){const t=ULe(n,e),i=xl(t);return cC(lz(t,0,[]),xu(t,i))}function ULe(n,e){const t=If({},LZ);let i;for(i in e)t[i]=e[i]===void 0?LZ[i]:e[i];return{options:t,column:1,line:1,offset:0,originalSource:n,source:n,inPre:!1,inVPre:!1,onWarn:t.onWarn}}function lz(n,e,t){const i=bM(t),s=i?i.ns:0,r=[];for(;!exe(n,e,t);){const a=n.source;let l;if(e===0||e===1){if(!n.inVPre&&To(a,n.options.delimiters[0]))l=QLe(n,e);else if(e===0&&a[0]==="<")if(a.length===1)An(n,5,1);else if(a[1]==="!")To(a,"<!--")?l=qLe(n):To(a,"<!DOCTYPE")?l=ow(n):To(a,"<![CDATA[")?s!==0?l=jLe(n,t):(An(n,1),l=ow(n)):(An(n,11),l=ow(n));else if(a[1]==="/")if(a.length===2)An(n,5,2);else if(a[2]===">"){An(n,14,2),Dr(n,3);continue}else if(/[a-z]/i.test(a[2])){An(n,23),sB(n,1,i);continue}else An(n,12,2),l=ow(n);else/[a-z]/i.test(a[1])?l=KLe(n,t):a[1]==="?"?(An(n,21,1),l=ow(n)):An(n,12,1)}if(l||(l=JLe(n,e)),aa(l))for(let c=0;c<l.length;c++)xZ(r,l[c]);else xZ(r,l)}let o=!1;if(e!==2&&e!==1){const a=n.options.whitespace!=="preserve";for(let l=0;l<r.length;l++){const c=r[l];if(c.type===2)if(n.inPre)c.content=c.content.replace(/\r\n/g,` +`);else if(/[^\t\r\n\f ]/.test(c.content))a&&(c.content=c.content.replace(/[\t\r\n\f ]+/g," "));else{const u=r[l-1],h=r[l+1];!u||!h||a&&(u.type===3&&h.type===3||u.type===3&&h.type===1||u.type===1&&h.type===3||u.type===1&&h.type===1&&/[\r\n]/.test(c.content))?(o=!0,r[l]=null):c.content=" "}else c.type===3&&!n.options.comments&&(o=!0,r[l]=null)}if(n.inPre&&i&&n.options.isPreTag(i.tag)){const l=r[0];l&&l.type===2&&(l.content=l.content.replace(/^\r?\n/,""))}}return o?r.filter(Boolean):r}function xZ(n,e){if(e.type===2){const t=bM(n);if(t&&t.type===2&&t.loc.end.offset===e.loc.start.offset){t.content+=e.content,t.loc.end=e.loc.end,t.loc.source+=e.loc.source;return}}n.push(e)}function jLe(n,e){Dr(n,9);const t=lz(n,3,e);return n.source.length===0?An(n,6):Dr(n,3),t}function qLe(n){const e=xl(n);let t;const i=/--(\!)?>/.exec(n.source);if(!i)t=n.source.slice(4),Dr(n,n.source.length),An(n,7);else{i.index<=3&&An(n,0),i[1]&&An(n,10),t=n.source.slice(4,i.index);const s=n.source.slice(0,i.index);let r=1,o=0;for(;(o=s.indexOf("<!--",r))!==-1;)Dr(n,o-r+1),o+4<s.length&&An(n,16),r=o+1;Dr(n,i.index+i[0].length-r+1)}return{type:3,content:t,loc:xu(n,e)}}function ow(n){const e=xl(n),t=n.source[1]==="?"?1:2;let i;const s=n.source.indexOf(">");return s===-1?(i=n.source.slice(t),Dr(n,n.source.length)):(i=n.source.slice(t,s),Dr(n,s+1)),{type:3,content:i,loc:xu(n,e)}}function KLe(n,e){const t=n.inPre,i=n.inVPre,s=bM(e),r=sB(n,0,s),o=n.inPre&&!t,a=n.inVPre&&!i;if(r.isSelfClosing||n.options.isVoidTag(r.tag))return o&&(n.inPre=!1),a&&(n.inVPre=!1),r;e.push(r);const l=n.options.getTextMode(r,s),c=lz(n,l,e);if(e.pop(),r.children=c,rB(n.source,r.tag))sB(n,1,s);else if(An(n,24,0,r.loc.start),n.source.length===0&&r.tag.toLowerCase()==="script"){const u=c[0];u&&To(u.loc.source,"<!--")&&An(n,8)}return r.loc=xu(n,r.loc.start),o&&(n.inPre=!1),a&&(n.inVPre=!1),r}const GLe=_o("if,else,else-if,for,slot");function sB(n,e,t){const i=xl(n),s=/^<\/?([a-z][^\t\r\n\f />]*)/i.exec(n.source),r=s[1],o=n.options.getNamespace(r,t);Dr(n,s[0].length),Uk(n);const a=xl(n),l=n.source;n.options.isPreTag(r)&&(n.inPre=!0);let c=EZ(n,e);e===0&&!n.inVPre&&c.some(d=>d.type===7&&d.name==="pre")&&(n.inVPre=!0,If(n,a),n.source=l,c=EZ(n,e).filter(d=>d.name!=="v-pre"));let u=!1;if(n.source.length===0?An(n,9):(u=To(n.source,"/>"),e===1&&u&&An(n,4),Dr(n,u?2:1)),e===1)return;let h=0;return n.inVPre||(r==="slot"?h=2:r==="template"?c.some(d=>d.type===7&&GLe(d.name))&&(h=3):YLe(r,c,n)&&(h=1)),{type:1,ns:o,tag:r,tagType:h,props:c,isSelfClosing:u,children:[],loc:xu(n,i),codegenNode:void 0}}function YLe(n,e,t){const i=t.options;if(i.isCustomElement(n))return!1;if(n==="component"||/^[A-Z]/.test(n)||nz(n)||i.isBuiltInComponent&&i.isBuiltInComponent(n)||i.isNativeTag&&!i.isNativeTag(n))return!0;for(let s=0;s<e.length;s++){const r=e[s];if(r.type===6){if(r.name==="is"&&r.value&&r.value.content.startsWith("vue:"))return!0}else{if(r.name==="is")return!0;r.name==="bind"&&Dh(r.arg,"is")}}}function EZ(n,e){const t=[],i=new Set;for(;n.source.length>0&&!To(n.source,">")&&!To(n.source,"/>");){if(To(n.source,"/")){An(n,22),Dr(n,1),Uk(n);continue}e===1&&An(n,3);const s=ZLe(n,i);s.type===6&&s.value&&s.name==="class"&&(s.value.content=s.value.content.replace(/\s+/g," ").trim()),e===0&&t.push(s),/^[^\t\r\n\f />]/.test(n.source)&&An(n,15),Uk(n)}return t}function ZLe(n,e){var t;const i=xl(n),r=/^[^\t\r\n\f />][^\t\r\n\f />=]*/.exec(n.source)[0];e.has(r)&&An(n,2),e.add(r),r[0]==="="&&An(n,19);{const l=/["'<]/g;let c;for(;c=l.exec(r);)An(n,17,c.index)}Dr(n,r.length);let o;/^[\t\r\n\f ]*=/.test(n.source)&&(Uk(n),Dr(n,1),Uk(n),o=XLe(n),o||An(n,13));const a=xu(n,i);if(!n.inVPre&&/^(v-[A-Za-z0-9-]|:|\.|@|#)/.test(r)){const l=/(?:^v-([a-z0-9-]+))?(?:(?::|^\.|^@|^#)(\[[^\]]+\]|[^\.]+))?(.+)?$/i.exec(r);let c=To(r,"."),u=l[1]||(c||To(r,":")?"bind":To(r,"@")?"on":"slot"),h;if(l[2]){const f=u==="slot",g=r.lastIndexOf(l[2],r.length-(((t=l[3])==null?void 0:t.length)||0)),p=xu(n,DZ(n,i,g),DZ(n,i,g+l[2].length+(f&&l[3]||"").length));let m=l[2],_=!0;m.startsWith("[")?(_=!1,m.endsWith("]")?m=m.slice(1,m.length-1):(An(n,27),m=m.slice(1))):f&&(m+=l[3]||""),h={type:4,content:m,isStatic:_,constType:_?3:0,loc:p}}if(o&&o.isQuoted){const f=o.loc;f.start.offset++,f.start.column++,f.end=w_(f.start,o.content),f.source=f.source.slice(1,-1)}const d=l[3]?l[3].slice(1).split("."):[];return c&&d.push("prop"),{type:7,name:u,exp:o&&{type:4,content:o.content,isStatic:!1,constType:0,loc:o.loc},arg:h,modifiers:d,loc:a}}return!n.inVPre&&To(r,"v-")&&An(n,26),{type:6,name:r,value:o&&{type:2,content:o.content,loc:o.loc},loc:a}}function XLe(n){const e=xl(n);let t;const i=n.source[0],s=i==='"'||i==="'";if(s){Dr(n,1);const r=n.source.indexOf(i);r===-1?t=VS(n,n.source.length,4):(t=VS(n,r,4),Dr(n,1))}else{const r=/^[^\t\r\n\f >]+/.exec(n.source);if(!r)return;const o=/["'<=`]/g;let a;for(;a=o.exec(r[0]);)An(n,18,a.index);t=VS(n,r[0].length,4)}return{content:t,isQuoted:s,loc:xu(n,e)}}function QLe(n,e){const[t,i]=n.options.delimiters,s=n.source.indexOf(i,t.length);if(s===-1){An(n,25);return}const r=xl(n);Dr(n,t.length);const o=xl(n),a=xl(n),l=s-t.length,c=n.source.slice(0,l),u=VS(n,l,e),h=u.trim(),d=u.indexOf(h);d>0&&ey(o,c,d);const f=l-(u.length-h.length-d);return ey(a,c,f),Dr(n,i.length),{type:5,content:{type:4,isStatic:!1,constType:0,content:h,loc:xu(n,o,a)},loc:xu(n,r)}}function JLe(n,e){const t=e===3?["]]>"]:["<",n.options.delimiters[0]];let i=n.source.length;for(let o=0;o<t.length;o++){const a=n.source.indexOf(t[o],1);a!==-1&&i>a&&(i=a)}const s=xl(n);return{type:2,content:VS(n,i,e),loc:xu(n,s)}}function VS(n,e,t){const i=n.source.slice(0,e);return Dr(n,e),t===2||t===3||!i.includes("&")?i:n.options.decodeEntities(i,t===4)}function xl(n){const{column:e,line:t,offset:i}=n;return{column:e,line:t,offset:i}}function xu(n,e,t){return t=t||xl(n),{start:e,end:t,source:n.originalSource.slice(e.offset,t.offset)}}function bM(n){return n[n.length-1]}function To(n,e){return n.startsWith(e)}function Dr(n,e){const{source:t}=n;ey(n,t,e),n.source=t.slice(e)}function Uk(n){const e=/^[\t\r\n\f ]+/.exec(n.source);e&&Dr(n,e[0].length)}function DZ(n,e,t){return w_(e,n.originalSource.slice(e.offset,t),t)}function An(n,e,t,i=xl(n)){t&&(i.offset+=t,i.column+=t),n.options.onError(hn(e,{start:i,end:i,source:""}))}function exe(n,e,t){const i=n.source;switch(e){case 0:if(To(i,"</")){for(let s=t.length-1;s>=0;--s)if(rB(i,t[s].tag))return!0}break;case 1:case 2:{const s=bM(t);if(s&&rB(i,s.tag))return!0;break}case 3:if(To(i,"]]>"))return!0;break}return!i}function rB(n,e){return To(n,"</")&&n.slice(2,2+e.length).toLowerCase()===e.toLowerCase()&&/[\t\r\n\f />]/.test(n[2+e.length]||">")}function txe(n,e){AT(n,e,ole(n,n.children[0]))}function ole(n,e){const{children:t}=n;return t.length===1&&e.type===1&&!iy(e)}function AT(n,e,t=!1){const{children:i}=n,s=i.length;let r=0;for(let o=0;o<i.length;o++){const a=i[o];if(a.type===1&&a.tagType===0){const l=t?0:bl(a,e);if(l>0){if(l>=2){a.codegenNode.patchFlag="-1 /* HOISTED */",a.codegenNode=e.hoist(a.codegenNode),r++;continue}}else{const c=a.codegenNode;if(c.type===13){const u=ule(c);if((!u||u===512||u===1)&&lle(a,e)>=2){const h=cle(a);h&&(c.props=e.hoist(h))}c.dynamicProps&&(c.dynamicProps=e.hoist(c.dynamicProps))}}}if(a.type===1){const l=a.tagType===1;l&&e.scopes.vSlot++,AT(a,e),l&&e.scopes.vSlot--}else if(a.type===11)AT(a,e,a.children.length===1);else if(a.type===9)for(let l=0;l<a.branches.length;l++)AT(a.branches[l],e,a.branches[l].children.length===1)}if(r&&e.transformHoist&&e.transformHoist(i,e,n),r&&r===s&&n.type===1&&n.tagType===0&&n.codegenNode&&n.codegenNode.type===13&&aa(n.codegenNode.children)){const o=e.hoist(gv(n.codegenNode.children));e.hmr&&(o.content=`[...${o.content}]`),n.codegenNode.children=o}}function bl(n,e){const{constantCache:t}=e;switch(n.type){case 1:if(n.tagType!==0)return 0;const i=t.get(n);if(i!==void 0)return i;const s=n.codegenNode;if(s.type!==13||s.isBlock&&n.tag!=="svg"&&n.tag!=="foreignObject")return 0;if(ule(s))return t.set(n,0),0;{let a=3;const l=lle(n,e);if(l===0)return t.set(n,0),0;l<a&&(a=l);for(let c=0;c<n.children.length;c++){const u=bl(n.children[c],e);if(u===0)return t.set(n,0),0;u<a&&(a=u)}if(a>1)for(let c=0;c<n.props.length;c++){const u=n.props[c];if(u.type===7&&u.name==="bind"&&u.exp){const h=bl(u.exp,e);if(h===0)return t.set(n,0),0;h<a&&(a=h)}}if(s.isBlock){for(let c=0;c<n.props.length;c++)if(n.props[c].type===7)return t.set(n,0),0;e.removeHelper(Vp),e.removeHelper(C_(e.inSSR,s.isComponent)),s.isBlock=!1,e.helper(y_(e.inSSR,s.isComponent))}return t.set(n,a),a}case 2:case 3:return 3;case 9:case 11:case 10:return 0;case 5:case 12:return bl(n.content,e);case 4:return n.constType;case 8:let o=3;for(let a=0;a<n.children.length;a++){const l=n.children[a];if(Ui(l)||Sm(l))continue;const c=bl(l,e);if(c===0)return 0;c<o&&(o=c)}return o;default:return 0}}const ixe=new Set([oM,aM,Qb,lC]);function ale(n,e){if(n.type===14&&!Ui(n.callee)&&ixe.has(n.callee)){const t=n.arguments[0];if(t.type===4)return bl(t,e);if(t.type===14)return ale(t,e)}return 0}function lle(n,e){let t=3;const i=cle(n);if(i&&i.type===15){const{properties:s}=i;for(let r=0;r<s.length;r++){const{key:o,value:a}=s[r],l=bl(o,e);if(l===0)return l;l<t&&(t=l);let c;if(a.type===4?c=bl(a,e):a.type===14?c=ale(a,e):c=0,c===0)return c;c<t&&(t=c)}}return t}function cle(n){const e=n.codegenNode;if(e.type===13)return e.props}function ule(n){const e=n.patchFlag;return e?parseInt(e,10):void 0}function Jx(n,{filename:e="",prefixIdentifiers:t=!1,hoistStatic:i=!1,hmr:s=!1,cacheHandlers:r=!1,nodeTransforms:o=[],directiveTransforms:a={},transformHoist:l=null,isBuiltInComponent:c=rZ,isCustomElement:u=rZ,expressionPlugins:h=[],scopeId:d=null,slotted:f=!0,ssr:g=!1,inSSR:p=!1,ssrCssVars:m="",bindingMetadata:_=ySe,inline:b=!1,isTS:y=!1,onError:w=O$,onWarn:S=Iae,compatConfig:E}){const L=e.replace(/\?.*$/,"").match(/([^/\\]+)\.\w+$/),k={selfName:L&&Wp(yu(L[1])),prefixIdentifiers:t,hoistStatic:i,hmr:s,cacheHandlers:r,nodeTransforms:o,directiveTransforms:a,transformHoist:l,isBuiltInComponent:c,isCustomElement:u,expressionPlugins:h,scopeId:d,slotted:f,ssr:g,inSSR:p,ssrCssVars:m,bindingMetadata:_,inline:b,isTS:y,onError:w,onWarn:S,compatConfig:E,root:n,helpers:new Map,components:new Set,directives:new Set,hoists:[],imports:[],constantCache:new WeakMap,temps:0,cached:0,identifiers:Object.create(null),scopes:{vFor:0,vSlot:0,vPre:0,vOnce:0},parent:null,currentNode:n,childIndex:0,inVOnce:!1,helper(N){const T=k.helpers.get(N)||0;return k.helpers.set(N,T+1),N},removeHelper(N){const T=k.helpers.get(N);if(T){const P=T-1;P?k.helpers.set(N,P):k.helpers.delete(N)}},helperString(N){return`_${Pa[k.helper(N)]}`},replaceNode(N){{if(!k.currentNode)throw new Error("Node being replaced is already removed.");if(!k.parent)throw new Error("Cannot replace root node.")}k.parent.children[k.childIndex]=k.currentNode=N},removeNode(N){if(!k.parent)throw new Error("Cannot remove root node.");const T=k.parent.children,P=N?T.indexOf(N):k.currentNode?k.childIndex:-1;if(P<0)throw new Error("node being removed is not a child of current parent");!N||N===k.currentNode?(k.currentNode=null,k.onNodeRemoved()):k.childIndex>P&&(k.childIndex--,k.onNodeRemoved()),k.parent.children.splice(P,1)},onNodeRemoved:()=>{},addIdentifiers(N){Ui(N)?x(N):N.identifiers?N.identifiers.forEach(x):N.type===4&&x(N.content)},removeIdentifiers(N){Ui(N)?I(N):N.identifiers?N.identifiers.forEach(I):N.type===4&&I(N.content)},hoist(N){Ui(N)&&(N=ct(N)),k.hoists.push(N);const T=ct(`_hoisted_${k.hoists.length}`,!1,N.loc,2);return T.hoisted=N,T},cache(N,T=!1){return Aae(k.cached++,N,T)}};function x(N){const{identifiers:T}=k;T[N]===void 0&&(T[N]=0),T[N]++}function I(N){k.identifiers[N]--}return k}function yM(n,e){const t=Jx(n,e);uC(n,t),e.hoistStatic&&txe(n,t),e.ssr||nxe(n,t),n.helpers=new Set([...t.helpers.keys()]),n.components=[...t.components],n.directives=[...t.directives],n.imports=t.imports,n.hoists=t.hoists,n.temps=t.temps,n.cached=t.cached}function nxe(n,e){const{helper:t}=e,{children:i}=n;if(i.length===1){const s=i[0];if(ole(n,s)&&s.codegenNode){const r=s.codegenNode;r.type===13&&fM(r,e),n.codegenNode=r}else n.codegenNode=s}else if(i.length>1){let s=64,r=Uh[64];i.filter(o=>o.type!==3).length===1&&(s|=2048,r+=`, ${Uh[2048]}`),n.codegenNode=Jb(e,t(Zb),void 0,n.children,s+` /* ${r} */`,void 0,void 0,!0,void 0,!1)}}function sxe(n,e){let t=0;const i=()=>{t--};for(;t<n.children.length;t++){const s=n.children[t];Ui(s)||(e.parent=n,e.childIndex=t,e.onNodeRemoved=i,uC(s,e))}}function uC(n,e){e.currentNode=n;const{nodeTransforms:t}=e,i=[];for(let r=0;r<t.length;r++){const o=t[r](n,e);if(o&&(aa(o)?i.push(...o):i.push(o)),e.currentNode)n=e.currentNode;else return}switch(n.type){case 3:e.ssr||e.helper(aC);break;case 5:e.ssr||e.helper(Zx);break;case 9:for(let r=0;r<n.branches.length;r++)uC(n.branches[r],e);break;case 10:case 11:case 1:case 0:sxe(n,e);break}e.currentNode=n;let s=i.length;for(;s--;)i[s]()}function eE(n,e){const t=Ui(n)?i=>i===n:i=>n.test(i);return(i,s)=>{if(i.type===1){const{props:r}=i;if(i.tagType===3&&r.some(oz))return;const o=[];for(let a=0;a<r.length;a++){const l=r[a];if(l.type===7&&t(l.name)){r.splice(a,1),a--;const c=e(i,l,s);c&&o.push(c)}}return o}}}var hC={},cz={},CM={},uz={},IZ="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("");uz.encode=function(n){if(0<=n&&n<IZ.length)return IZ[n];throw new TypeError("Must be between 0 and 63: "+n)};uz.decode=function(n){var e=65,t=90,i=97,s=122,r=48,o=57,a=43,l=47,c=26,u=52;return e<=n&&n<=t?n-e:i<=n&&n<=s?n-i+c:r<=n&&n<=o?n-r+u:n==a?62:n==l?63:-1};var hle=uz,hz=5,dle=1<<hz,fle=dle-1,gle=dle;function rxe(n){return n<0?(-n<<1)+1:(n<<1)+0}function oxe(n){var e=(n&1)===1,t=n>>1;return e?-t:t}CM.encode=function(e){var t="",i,s=rxe(e);do i=s&fle,s>>>=hz,s>0&&(i|=gle),t+=hle.encode(i);while(s>0);return t};CM.decode=function(e,t,i){var s=e.length,r=0,o=0,a,l;do{if(t>=s)throw new Error("Expected more digits in base 64 VLQ value.");if(l=hle.decode(e.charCodeAt(t++)),l===-1)throw new Error("Invalid base64 digit: "+e.charAt(t-1));a=!!(l&gle),l&=fle,r=r+(l<<o),o+=hz}while(a);i.value=oxe(r),i.rest=t};var dC={};(function(n){function e(k,x,I){if(x in k)return k[x];if(arguments.length===3)return I;throw new Error('"'+x+'" is a required argument.')}n.getArg=e;var t=/^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/,i=/^data:.+\,.+$/;function s(k){var x=k.match(t);return x?{scheme:x[1],auth:x[2],host:x[3],port:x[4],path:x[5]}:null}n.urlParse=s;function r(k){var x="";return k.scheme&&(x+=k.scheme+":"),x+="//",k.auth&&(x+=k.auth+"@"),k.host&&(x+=k.host),k.port&&(x+=":"+k.port),k.path&&(x+=k.path),x}n.urlGenerate=r;var o=32;function a(k){var x=[];return function(I){for(var N=0;N<x.length;N++)if(x[N].input===I){var T=x[0];return x[0]=x[N],x[N]=T,x[0].result}var P=k(I);return x.unshift({input:I,result:P}),x.length>o&&x.pop(),P}}var l=a(function(x){var I=x,N=s(x);if(N){if(!N.path)return x;I=N.path}for(var T=n.isAbsolute(I),P=[],R=0,F=0;;)if(R=F,F=I.indexOf("/",R),F===-1){P.push(I.slice(R));break}else for(P.push(I.slice(R,F));F<I.length&&I[F]==="/";)F++;for(var j,K=0,F=P.length-1;F>=0;F--)j=P[F],j==="."?P.splice(F,1):j===".."?K++:K>0&&(j===""?(P.splice(F+1,K),K=0):(P.splice(F,2),K--));return I=P.join("/"),I===""&&(I=T?"/":"."),N?(N.path=I,r(N)):I});n.normalize=l;function c(k,x){k===""&&(k="."),x===""&&(x=".");var I=s(x),N=s(k);if(N&&(k=N.path||"/"),I&&!I.scheme)return N&&(I.scheme=N.scheme),r(I);if(I||x.match(i))return x;if(N&&!N.host&&!N.path)return N.host=x,r(N);var T=x.charAt(0)==="/"?x:l(k.replace(/\/+$/,"")+"/"+x);return N?(N.path=T,r(N)):T}n.join=c,n.isAbsolute=function(k){return k.charAt(0)==="/"||t.test(k)};function u(k,x){k===""&&(k="."),k=k.replace(/\/$/,"");for(var I=0;x.indexOf(k+"/")!==0;){var N=k.lastIndexOf("/");if(N<0||(k=k.slice(0,N),k.match(/^([^\/]+:\/)?\/*$/)))return x;++I}return Array(I+1).join("../")+x.substr(k.length+1)}n.relative=u;var h=function(){var k=Object.create(null);return!("__proto__"in k)}();function d(k){return k}function f(k){return p(k)?"$"+k:k}n.toSetString=h?d:f;function g(k){return p(k)?k.slice(1):k}n.fromSetString=h?d:g;function p(k){if(!k)return!1;var x=k.length;if(x<9||k.charCodeAt(x-1)!==95||k.charCodeAt(x-2)!==95||k.charCodeAt(x-3)!==111||k.charCodeAt(x-4)!==116||k.charCodeAt(x-5)!==111||k.charCodeAt(x-6)!==114||k.charCodeAt(x-7)!==112||k.charCodeAt(x-8)!==95||k.charCodeAt(x-9)!==95)return!1;for(var I=x-10;I>=0;I--)if(k.charCodeAt(I)!==36)return!1;return!0}function m(k,x,I){var N=w(k.source,x.source);return N!==0||(N=k.originalLine-x.originalLine,N!==0)||(N=k.originalColumn-x.originalColumn,N!==0||I)||(N=k.generatedColumn-x.generatedColumn,N!==0)||(N=k.generatedLine-x.generatedLine,N!==0)?N:w(k.name,x.name)}n.compareByOriginalPositions=m;function _(k,x,I){var N;return N=k.originalLine-x.originalLine,N!==0||(N=k.originalColumn-x.originalColumn,N!==0||I)||(N=k.generatedColumn-x.generatedColumn,N!==0)||(N=k.generatedLine-x.generatedLine,N!==0)?N:w(k.name,x.name)}n.compareByOriginalPositionsNoSource=_;function b(k,x,I){var N=k.generatedLine-x.generatedLine;return N!==0||(N=k.generatedColumn-x.generatedColumn,N!==0||I)||(N=w(k.source,x.source),N!==0)||(N=k.originalLine-x.originalLine,N!==0)||(N=k.originalColumn-x.originalColumn,N!==0)?N:w(k.name,x.name)}n.compareByGeneratedPositionsDeflated=b;function y(k,x,I){var N=k.generatedColumn-x.generatedColumn;return N!==0||I||(N=w(k.source,x.source),N!==0)||(N=k.originalLine-x.originalLine,N!==0)||(N=k.originalColumn-x.originalColumn,N!==0)?N:w(k.name,x.name)}n.compareByGeneratedPositionsDeflatedNoLine=y;function w(k,x){return k===x?0:k===null?1:x===null?-1:k>x?1:-1}function S(k,x){var I=k.generatedLine-x.generatedLine;return I!==0||(I=k.generatedColumn-x.generatedColumn,I!==0)||(I=w(k.source,x.source),I!==0)||(I=k.originalLine-x.originalLine,I!==0)||(I=k.originalColumn-x.originalColumn,I!==0)?I:w(k.name,x.name)}n.compareByGeneratedPositionsInflated=S;function E(k){return JSON.parse(k.replace(/^\)]}'[^\n]*\n/,""))}n.parseSourceMapInput=E;function L(k,x,I){if(x=x||"",k&&(k[k.length-1]!=="/"&&x[0]!=="/"&&(k+="/"),x=k+x),I){var N=s(I);if(!N)throw new Error("sourceMapURL could not be parsed");if(N.path){var T=N.path.lastIndexOf("/");T>=0&&(N.path=N.path.substring(0,T+1))}x=c(r(N),x)}return l(x)}n.computeSourceURL=L})(dC);var dz={},fz=dC,gz=Object.prototype.hasOwnProperty,X1=typeof Map<"u";function $f(){this._array=[],this._set=X1?new Map:Object.create(null)}$f.fromArray=function(e,t){for(var i=new $f,s=0,r=e.length;s<r;s++)i.add(e[s],t);return i};$f.prototype.size=function(){return X1?this._set.size:Object.getOwnPropertyNames(this._set).length};$f.prototype.add=function(e,t){var i=X1?e:fz.toSetString(e),s=X1?this.has(e):gz.call(this._set,i),r=this._array.length;(!s||t)&&this._array.push(e),s||(X1?this._set.set(e,r):this._set[i]=r)};$f.prototype.has=function(e){if(X1)return this._set.has(e);var t=fz.toSetString(e);return gz.call(this._set,t)};$f.prototype.indexOf=function(e){if(X1){var t=this._set.get(e);if(t>=0)return t}else{var i=fz.toSetString(e);if(gz.call(this._set,i))return this._set[i]}throw new Error('"'+e+'" is not in the set.')};$f.prototype.at=function(e){if(e>=0&&e<this._array.length)return this._array[e];throw new Error("No element indexed by "+e)};$f.prototype.toArray=function(){return this._array.slice()};dz.ArraySet=$f;var ple={},mle=dC;function axe(n,e){var t=n.generatedLine,i=e.generatedLine,s=n.generatedColumn,r=e.generatedColumn;return i>t||i==t&&r>=s||mle.compareByGeneratedPositionsInflated(n,e)<=0}function wM(){this._array=[],this._sorted=!0,this._last={generatedLine:-1,generatedColumn:0}}wM.prototype.unsortedForEach=function(e,t){this._array.forEach(e,t)};wM.prototype.add=function(e){axe(this._last,e)?(this._last=e,this._array.push(e)):(this._sorted=!1,this._array.push(e))};wM.prototype.toArray=function(){return this._sorted||(this._array.sort(mle.compareByGeneratedPositionsInflated),this._sorted=!0),this._array};ple.MappingList=wM;var aw=CM,fr=dC,YN=dz.ArraySet,lxe=ple.MappingList;function Cc(n){n||(n={}),this._file=fr.getArg(n,"file",null),this._sourceRoot=fr.getArg(n,"sourceRoot",null),this._skipValidation=fr.getArg(n,"skipValidation",!1),this._sources=new YN,this._names=new YN,this._mappings=new lxe,this._sourcesContents=null}Cc.prototype._version=3;Cc.fromSourceMap=function(e){var t=e.sourceRoot,i=new Cc({file:e.file,sourceRoot:t});return e.eachMapping(function(s){var r={generated:{line:s.generatedLine,column:s.generatedColumn}};s.source!=null&&(r.source=s.source,t!=null&&(r.source=fr.relative(t,r.source)),r.original={line:s.originalLine,column:s.originalColumn},s.name!=null&&(r.name=s.name)),i.addMapping(r)}),e.sources.forEach(function(s){var r=s;t!==null&&(r=fr.relative(t,s)),i._sources.has(r)||i._sources.add(r);var o=e.sourceContentFor(s);o!=null&&i.setSourceContent(s,o)}),i};Cc.prototype.addMapping=function(e){var t=fr.getArg(e,"generated"),i=fr.getArg(e,"original",null),s=fr.getArg(e,"source",null),r=fr.getArg(e,"name",null);this._skipValidation||this._validateMapping(t,i,s,r),s!=null&&(s=String(s),this._sources.has(s)||this._sources.add(s)),r!=null&&(r=String(r),this._names.has(r)||this._names.add(r)),this._mappings.add({generatedLine:t.line,generatedColumn:t.column,originalLine:i!=null&&i.line,originalColumn:i!=null&&i.column,source:s,name:r})};Cc.prototype.setSourceContent=function(e,t){var i=e;this._sourceRoot!=null&&(i=fr.relative(this._sourceRoot,i)),t!=null?(this._sourcesContents||(this._sourcesContents=Object.create(null)),this._sourcesContents[fr.toSetString(i)]=t):this._sourcesContents&&(delete this._sourcesContents[fr.toSetString(i)],Object.keys(this._sourcesContents).length===0&&(this._sourcesContents=null))};Cc.prototype.applySourceMap=function(e,t,i){var s=t;if(t==null){if(e.file==null)throw new Error(`SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, or the source map's "file" property. Both were omitted.`);s=e.file}var r=this._sourceRoot;r!=null&&(s=fr.relative(r,s));var o=new YN,a=new YN;this._mappings.unsortedForEach(function(l){if(l.source===s&&l.originalLine!=null){var c=e.originalPositionFor({line:l.originalLine,column:l.originalColumn});c.source!=null&&(l.source=c.source,i!=null&&(l.source=fr.join(i,l.source)),r!=null&&(l.source=fr.relative(r,l.source)),l.originalLine=c.line,l.originalColumn=c.column,c.name!=null&&(l.name=c.name))}var u=l.source;u!=null&&!o.has(u)&&o.add(u);var h=l.name;h!=null&&!a.has(h)&&a.add(h)},this),this._sources=o,this._names=a,e.sources.forEach(function(l){var c=e.sourceContentFor(l);c!=null&&(i!=null&&(l=fr.join(i,l)),r!=null&&(l=fr.relative(r,l)),this.setSourceContent(l,c))},this)};Cc.prototype._validateMapping=function(e,t,i,s){if(t&&typeof t.line!="number"&&typeof t.column!="number")throw new Error("original.line and original.column are not numbers -- you probably meant to omit the original mapping entirely and only map the generated position. If so, pass null for the original mapping instead of an object with empty or null values.");if(!(e&&"line"in e&&"column"in e&&e.line>0&&e.column>=0&&!t&&!i&&!s)){if(e&&"line"in e&&"column"in e&&t&&"line"in t&&"column"in t&&e.line>0&&e.column>=0&&t.line>0&&t.column>=0&&i)return;throw new Error("Invalid mapping: "+JSON.stringify({generated:e,source:i,original:t,name:s}))}};Cc.prototype._serializeMappings=function(){for(var e=0,t=1,i=0,s=0,r=0,o=0,a="",l,c,u,h,d=this._mappings.toArray(),f=0,g=d.length;f<g;f++){if(c=d[f],l="",c.generatedLine!==t)for(e=0;c.generatedLine!==t;)l+=";",t++;else if(f>0){if(!fr.compareByGeneratedPositionsInflated(c,d[f-1]))continue;l+=","}l+=aw.encode(c.generatedColumn-e),e=c.generatedColumn,c.source!=null&&(h=this._sources.indexOf(c.source),l+=aw.encode(h-o),o=h,l+=aw.encode(c.originalLine-1-s),s=c.originalLine-1,l+=aw.encode(c.originalColumn-i),i=c.originalColumn,c.name!=null&&(u=this._names.indexOf(c.name),l+=aw.encode(u-r),r=u)),a+=l}return a};Cc.prototype._generateSourcesContent=function(e,t){return e.map(function(i){if(!this._sourcesContents)return null;t!=null&&(i=fr.relative(t,i));var s=fr.toSetString(i);return Object.prototype.hasOwnProperty.call(this._sourcesContents,s)?this._sourcesContents[s]:null},this)};Cc.prototype.toJSON=function(){var e={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};return this._file!=null&&(e.file=this._file),this._sourceRoot!=null&&(e.sourceRoot=this._sourceRoot),this._sourcesContents&&(e.sourcesContent=this._generateSourcesContent(e.sources,e.sourceRoot)),e};Cc.prototype.toString=function(){return JSON.stringify(this.toJSON())};cz.SourceMapGenerator=Cc;var SM={},_le={};(function(n){n.GREATEST_LOWER_BOUND=1,n.LEAST_UPPER_BOUND=2;function e(t,i,s,r,o,a){var l=Math.floor((i-t)/2)+t,c=o(s,r[l],!0);return c===0?l:c>0?i-l>1?e(l,i,s,r,o,a):a==n.LEAST_UPPER_BOUND?i<r.length?i:-1:l:l-t>1?e(t,l,s,r,o,a):a==n.LEAST_UPPER_BOUND?l:t<0?-1:t}n.search=function(i,s,r,o){if(s.length===0)return-1;var a=e(-1,s.length,i,s,r,o||n.GREATEST_LOWER_BOUND);if(a<0)return-1;for(;a-1>=0&&r(s[a],s[a-1],!0)===0;)--a;return a}})(_le);var vle={};function cxe(n){function e(s,r,o){var a=s[r];s[r]=s[o],s[o]=a}function t(s,r){return Math.round(s+Math.random()*(r-s))}function i(s,r,o,a){if(o<a){var l=t(o,a),c=o-1;e(s,l,a);for(var u=s[a],h=o;h<a;h++)r(s[h],u,!1)<=0&&(c+=1,e(s,c,h));e(s,c+1,h);var d=c+1;i(s,r,o,d-1),i(s,r,d+1,a)}}return i}function uxe(n){let e=cxe.toString();return new Function(`return ${e}`)()(n)}let TZ=new WeakMap;vle.quickSort=function(n,e,t=0){let i=TZ.get(e);i===void 0&&(i=uxe(e),TZ.set(e,i)),i(n,e,t,n.length-1)};var kt=dC,pz=_le,ny=dz.ArraySet,hxe=CM,jk=vle.quickSort;function vs(n,e){var t=n;return typeof n=="string"&&(t=kt.parseSourceMapInput(n)),t.sections!=null?new Mu(t,e):new fo(t,e)}vs.fromSourceMap=function(n,e){return fo.fromSourceMap(n,e)};vs.prototype._version=3;vs.prototype.__generatedMappings=null;Object.defineProperty(vs.prototype,"_generatedMappings",{configurable:!0,enumerable:!0,get:function(){return this.__generatedMappings||this._parseMappings(this._mappings,this.sourceRoot),this.__generatedMappings}});vs.prototype.__originalMappings=null;Object.defineProperty(vs.prototype,"_originalMappings",{configurable:!0,enumerable:!0,get:function(){return this.__originalMappings||this._parseMappings(this._mappings,this.sourceRoot),this.__originalMappings}});vs.prototype._charIsMappingSeparator=function(e,t){var i=e.charAt(t);return i===";"||i===","};vs.prototype._parseMappings=function(e,t){throw new Error("Subclasses must implement _parseMappings")};vs.GENERATED_ORDER=1;vs.ORIGINAL_ORDER=2;vs.GREATEST_LOWER_BOUND=1;vs.LEAST_UPPER_BOUND=2;vs.prototype.eachMapping=function(e,t,i){var s=t||null,r=i||vs.GENERATED_ORDER,o;switch(r){case vs.GENERATED_ORDER:o=this._generatedMappings;break;case vs.ORIGINAL_ORDER:o=this._originalMappings;break;default:throw new Error("Unknown order of iteration.")}for(var a=this.sourceRoot,l=e.bind(s),c=this._names,u=this._sources,h=this._sourceMapURL,d=0,f=o.length;d<f;d++){var g=o[d],p=g.source===null?null:u.at(g.source);p=kt.computeSourceURL(a,p,h),l({source:p,generatedLine:g.generatedLine,generatedColumn:g.generatedColumn,originalLine:g.originalLine,originalColumn:g.originalColumn,name:g.name===null?null:c.at(g.name)})}};vs.prototype.allGeneratedPositionsFor=function(e){var t=kt.getArg(e,"line"),i={source:kt.getArg(e,"source"),originalLine:t,originalColumn:kt.getArg(e,"column",0)};if(i.source=this._findSourceIndex(i.source),i.source<0)return[];var s=[],r=this._findMapping(i,this._originalMappings,"originalLine","originalColumn",kt.compareByOriginalPositions,pz.LEAST_UPPER_BOUND);if(r>=0){var o=this._originalMappings[r];if(e.column===void 0)for(var a=o.originalLine;o&&o.originalLine===a;)s.push({line:kt.getArg(o,"generatedLine",null),column:kt.getArg(o,"generatedColumn",null),lastColumn:kt.getArg(o,"lastGeneratedColumn",null)}),o=this._originalMappings[++r];else for(var l=o.originalColumn;o&&o.originalLine===t&&o.originalColumn==l;)s.push({line:kt.getArg(o,"generatedLine",null),column:kt.getArg(o,"generatedColumn",null),lastColumn:kt.getArg(o,"lastGeneratedColumn",null)}),o=this._originalMappings[++r]}return s};SM.SourceMapConsumer=vs;function fo(n,e){var t=n;typeof n=="string"&&(t=kt.parseSourceMapInput(n));var i=kt.getArg(t,"version"),s=kt.getArg(t,"sources"),r=kt.getArg(t,"names",[]),o=kt.getArg(t,"sourceRoot",null),a=kt.getArg(t,"sourcesContent",null),l=kt.getArg(t,"mappings"),c=kt.getArg(t,"file",null);if(i!=this._version)throw new Error("Unsupported version: "+i);o&&(o=kt.normalize(o)),s=s.map(String).map(kt.normalize).map(function(u){return o&&kt.isAbsolute(o)&&kt.isAbsolute(u)?kt.relative(o,u):u}),this._names=ny.fromArray(r.map(String),!0),this._sources=ny.fromArray(s,!0),this._absoluteSources=this._sources.toArray().map(function(u){return kt.computeSourceURL(o,u,e)}),this.sourceRoot=o,this.sourcesContent=a,this._mappings=l,this._sourceMapURL=e,this.file=c}fo.prototype=Object.create(vs.prototype);fo.prototype.consumer=vs;fo.prototype._findSourceIndex=function(n){var e=n;if(this.sourceRoot!=null&&(e=kt.relative(this.sourceRoot,e)),this._sources.has(e))return this._sources.indexOf(e);var t;for(t=0;t<this._absoluteSources.length;++t)if(this._absoluteSources[t]==n)return t;return-1};fo.fromSourceMap=function(e,t){var i=Object.create(fo.prototype),s=i._names=ny.fromArray(e._names.toArray(),!0),r=i._sources=ny.fromArray(e._sources.toArray(),!0);i.sourceRoot=e._sourceRoot,i.sourcesContent=e._generateSourcesContent(i._sources.toArray(),i.sourceRoot),i.file=e._file,i._sourceMapURL=t,i._absoluteSources=i._sources.toArray().map(function(f){return kt.computeSourceURL(i.sourceRoot,f,t)});for(var o=e._mappings.toArray().slice(),a=i.__generatedMappings=[],l=i.__originalMappings=[],c=0,u=o.length;c<u;c++){var h=o[c],d=new ble;d.generatedLine=h.generatedLine,d.generatedColumn=h.generatedColumn,h.source&&(d.source=r.indexOf(h.source),d.originalLine=h.originalLine,d.originalColumn=h.originalColumn,h.name&&(d.name=s.indexOf(h.name)),l.push(d)),a.push(d)}return jk(i.__originalMappings,kt.compareByOriginalPositions),i};fo.prototype._version=3;Object.defineProperty(fo.prototype,"sources",{get:function(){return this._absoluteSources.slice()}});function ble(){this.generatedLine=0,this.generatedColumn=0,this.source=null,this.originalLine=null,this.originalColumn=null,this.name=null}const N4=kt.compareByGeneratedPositionsDeflatedNoLine;function NZ(n,e){let t=n.length,i=n.length-e;if(!(i<=1))if(i==2){let s=n[e],r=n[e+1];N4(s,r)>0&&(n[e]=r,n[e+1]=s)}else if(i<20)for(let s=e;s<t;s++)for(let r=s;r>e;r--){let o=n[r-1],a=n[r];if(N4(o,a)<=0)break;n[r-1]=a,n[r]=o}else jk(n,N4,e)}fo.prototype._parseMappings=function(e,t){var i=1,s=0,r=0,o=0,a=0,l=0,c=e.length,u=0,h={},d=[],f=[],g,p,m,_;let b=0;for(;u<c;)if(e.charAt(u)===";")i++,u++,s=0,NZ(f,b),b=f.length;else if(e.charAt(u)===",")u++;else{for(g=new ble,g.generatedLine=i,m=u;m<c&&!this._charIsMappingSeparator(e,m);m++);for(e.slice(u,m),p=[];u<m;)hxe.decode(e,u,h),_=h.value,u=h.rest,p.push(_);if(p.length===2)throw new Error("Found a source, but no line and column");if(p.length===3)throw new Error("Found a source and line, but no column");if(g.generatedColumn=s+p[0],s=g.generatedColumn,p.length>1&&(g.source=a+p[1],a+=p[1],g.originalLine=r+p[2],r=g.originalLine,g.originalLine+=1,g.originalColumn=o+p[3],o=g.originalColumn,p.length>4&&(g.name=l+p[4],l+=p[4])),f.push(g),typeof g.originalLine=="number"){let w=g.source;for(;d.length<=w;)d.push(null);d[w]===null&&(d[w]=[]),d[w].push(g)}}NZ(f,b),this.__generatedMappings=f;for(var y=0;y<d.length;y++)d[y]!=null&&jk(d[y],kt.compareByOriginalPositionsNoSource);this.__originalMappings=[].concat(...d)};fo.prototype._findMapping=function(e,t,i,s,r,o){if(e[i]<=0)throw new TypeError("Line must be greater than or equal to 1, got "+e[i]);if(e[s]<0)throw new TypeError("Column must be greater than or equal to 0, got "+e[s]);return pz.search(e,t,r,o)};fo.prototype.computeColumnSpans=function(){for(var e=0;e<this._generatedMappings.length;++e){var t=this._generatedMappings[e];if(e+1<this._generatedMappings.length){var i=this._generatedMappings[e+1];if(t.generatedLine===i.generatedLine){t.lastGeneratedColumn=i.generatedColumn-1;continue}}t.lastGeneratedColumn=1/0}};fo.prototype.originalPositionFor=function(e){var t={generatedLine:kt.getArg(e,"line"),generatedColumn:kt.getArg(e,"column")},i=this._findMapping(t,this._generatedMappings,"generatedLine","generatedColumn",kt.compareByGeneratedPositionsDeflated,kt.getArg(e,"bias",vs.GREATEST_LOWER_BOUND));if(i>=0){var s=this._generatedMappings[i];if(s.generatedLine===t.generatedLine){var r=kt.getArg(s,"source",null);r!==null&&(r=this._sources.at(r),r=kt.computeSourceURL(this.sourceRoot,r,this._sourceMapURL));var o=kt.getArg(s,"name",null);return o!==null&&(o=this._names.at(o)),{source:r,line:kt.getArg(s,"originalLine",null),column:kt.getArg(s,"originalColumn",null),name:o}}}return{source:null,line:null,column:null,name:null}};fo.prototype.hasContentsOfAllSources=function(){return this.sourcesContent?this.sourcesContent.length>=this._sources.size()&&!this.sourcesContent.some(function(e){return e==null}):!1};fo.prototype.sourceContentFor=function(e,t){if(!this.sourcesContent)return null;var i=this._findSourceIndex(e);if(i>=0)return this.sourcesContent[i];var s=e;this.sourceRoot!=null&&(s=kt.relative(this.sourceRoot,s));var r;if(this.sourceRoot!=null&&(r=kt.urlParse(this.sourceRoot))){var o=s.replace(/^file:\/\//,"");if(r.scheme=="file"&&this._sources.has(o))return this.sourcesContent[this._sources.indexOf(o)];if((!r.path||r.path=="/")&&this._sources.has("/"+s))return this.sourcesContent[this._sources.indexOf("/"+s)]}if(t)return null;throw new Error('"'+s+'" is not in the SourceMap.')};fo.prototype.generatedPositionFor=function(e){var t=kt.getArg(e,"source");if(t=this._findSourceIndex(t),t<0)return{line:null,column:null,lastColumn:null};var i={source:t,originalLine:kt.getArg(e,"line"),originalColumn:kt.getArg(e,"column")},s=this._findMapping(i,this._originalMappings,"originalLine","originalColumn",kt.compareByOriginalPositions,kt.getArg(e,"bias",vs.GREATEST_LOWER_BOUND));if(s>=0){var r=this._originalMappings[s];if(r.source===i.source)return{line:kt.getArg(r,"generatedLine",null),column:kt.getArg(r,"generatedColumn",null),lastColumn:kt.getArg(r,"lastGeneratedColumn",null)}}return{line:null,column:null,lastColumn:null}};SM.BasicSourceMapConsumer=fo;function Mu(n,e){var t=n;typeof n=="string"&&(t=kt.parseSourceMapInput(n));var i=kt.getArg(t,"version"),s=kt.getArg(t,"sections");if(i!=this._version)throw new Error("Unsupported version: "+i);this._sources=new ny,this._names=new ny;var r={line:-1,column:0};this._sections=s.map(function(o){if(o.url)throw new Error("Support for url field in sections not implemented.");var a=kt.getArg(o,"offset"),l=kt.getArg(a,"line"),c=kt.getArg(a,"column");if(l<r.line||l===r.line&&c<r.column)throw new Error("Section offsets must be ordered and non-overlapping.");return r=a,{generatedOffset:{generatedLine:l+1,generatedColumn:c+1},consumer:new vs(kt.getArg(o,"map"),e)}})}Mu.prototype=Object.create(vs.prototype);Mu.prototype.constructor=vs;Mu.prototype._version=3;Object.defineProperty(Mu.prototype,"sources",{get:function(){for(var n=[],e=0;e<this._sections.length;e++)for(var t=0;t<this._sections[e].consumer.sources.length;t++)n.push(this._sections[e].consumer.sources[t]);return n}});Mu.prototype.originalPositionFor=function(e){var t={generatedLine:kt.getArg(e,"line"),generatedColumn:kt.getArg(e,"column")},i=pz.search(t,this._sections,function(r,o){var a=r.generatedLine-o.generatedOffset.generatedLine;return a||r.generatedColumn-o.generatedOffset.generatedColumn}),s=this._sections[i];return s?s.consumer.originalPositionFor({line:t.generatedLine-(s.generatedOffset.generatedLine-1),column:t.generatedColumn-(s.generatedOffset.generatedLine===t.generatedLine?s.generatedOffset.generatedColumn-1:0),bias:e.bias}):{source:null,line:null,column:null,name:null}};Mu.prototype.hasContentsOfAllSources=function(){return this._sections.every(function(e){return e.consumer.hasContentsOfAllSources()})};Mu.prototype.sourceContentFor=function(e,t){for(var i=0;i<this._sections.length;i++){var s=this._sections[i],r=s.consumer.sourceContentFor(e,!0);if(r)return r}if(t)return null;throw new Error('"'+e+'" is not in the SourceMap.')};Mu.prototype.generatedPositionFor=function(e){for(var t=0;t<this._sections.length;t++){var i=this._sections[t];if(i.consumer._findSourceIndex(kt.getArg(e,"source"))!==-1){var s=i.consumer.generatedPositionFor(e);if(s){var r={line:s.line+(i.generatedOffset.generatedLine-1),column:s.column+(i.generatedOffset.generatedLine===s.line?i.generatedOffset.generatedColumn-1:0)};return r}}}return{line:null,column:null}};Mu.prototype._parseMappings=function(e,t){this.__generatedMappings=[],this.__originalMappings=[];for(var i=0;i<this._sections.length;i++)for(var s=this._sections[i],r=s.consumer._generatedMappings,o=0;o<r.length;o++){var a=r[o],l=s.consumer._sources.at(a.source);l=kt.computeSourceURL(s.consumer.sourceRoot,l,this._sourceMapURL),this._sources.add(l),l=this._sources.indexOf(l);var c=null;a.name&&(c=s.consumer._names.at(a.name),this._names.add(c),c=this._names.indexOf(c));var u={source:l,generatedLine:a.generatedLine+(s.generatedOffset.generatedLine-1),generatedColumn:a.generatedColumn+(s.generatedOffset.generatedLine===a.generatedLine?s.generatedOffset.generatedColumn-1:0),originalLine:a.originalLine,originalColumn:a.originalColumn,name:c};this.__generatedMappings.push(u),typeof u.originalLine=="number"&&this.__originalMappings.push(u)}jk(this.__generatedMappings,kt.compareByGeneratedPositionsDeflated),jk(this.__originalMappings,kt.compareByOriginalPositions)};SM.IndexedSourceMapConsumer=Mu;var yle={},dxe=cz.SourceMapGenerator,ZN=dC,fxe=/(\r?\n)/,gxe=10,fC="$$$isSourceNode$$$";function El(n,e,t,i,s){this.children=[],this.sourceContents={},this.line=n??null,this.column=e??null,this.source=t??null,this.name=s??null,this[fC]=!0,i!=null&&this.add(i)}El.fromStringWithSourceMap=function(e,t,i){var s=new El,r=e.split(fxe),o=0,a=function(){var d=g(),f=g()||"";return d+f;function g(){return o<r.length?r[o++]:void 0}},l=1,c=0,u=null;return t.eachMapping(function(d){if(u!==null)if(l<d.generatedLine)h(u,a()),l++,c=0;else{var f=r[o]||"",g=f.substr(0,d.generatedColumn-c);r[o]=f.substr(d.generatedColumn-c),c=d.generatedColumn,h(u,g),u=d;return}for(;l<d.generatedLine;)s.add(a()),l++;if(c<d.generatedColumn){var f=r[o]||"";s.add(f.substr(0,d.generatedColumn)),r[o]=f.substr(d.generatedColumn),c=d.generatedColumn}u=d},this),o<r.length&&(u&&h(u,a()),s.add(r.splice(o).join(""))),t.sources.forEach(function(d){var f=t.sourceContentFor(d);f!=null&&(i!=null&&(d=ZN.join(i,d)),s.setSourceContent(d,f))}),s;function h(d,f){if(d===null||d.source===void 0)s.add(f);else{var g=i?ZN.join(i,d.source):d.source;s.add(new El(d.originalLine,d.originalColumn,g,f,d.name))}}};El.prototype.add=function(e){if(Array.isArray(e))e.forEach(function(t){this.add(t)},this);else if(e[fC]||typeof e=="string")e&&this.children.push(e);else throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+e);return this};El.prototype.prepend=function(e){if(Array.isArray(e))for(var t=e.length-1;t>=0;t--)this.prepend(e[t]);else if(e[fC]||typeof e=="string")this.children.unshift(e);else throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+e);return this};El.prototype.walk=function(e){for(var t,i=0,s=this.children.length;i<s;i++)t=this.children[i],t[fC]?t.walk(e):t!==""&&e(t,{source:this.source,line:this.line,column:this.column,name:this.name})};El.prototype.join=function(e){var t,i,s=this.children.length;if(s>0){for(t=[],i=0;i<s-1;i++)t.push(this.children[i]),t.push(e);t.push(this.children[i]),this.children=t}return this};El.prototype.replaceRight=function(e,t){var i=this.children[this.children.length-1];return i[fC]?i.replaceRight(e,t):typeof i=="string"?this.children[this.children.length-1]=i.replace(e,t):this.children.push("".replace(e,t)),this};El.prototype.setSourceContent=function(e,t){this.sourceContents[ZN.toSetString(e)]=t};El.prototype.walkSourceContents=function(e){for(var t=0,i=this.children.length;t<i;t++)this.children[t][fC]&&this.children[t].walkSourceContents(e);for(var s=Object.keys(this.sourceContents),t=0,i=s.length;t<i;t++)e(ZN.fromSetString(s[t]),this.sourceContents[s[t]])};El.prototype.toString=function(){var e="";return this.walk(function(t){e+=t}),e};El.prototype.toStringWithSourceMap=function(e){var t={code:"",line:1,column:0},i=new dxe(e),s=!1,r=null,o=null,a=null,l=null;return this.walk(function(c,u){t.code+=c,u.source!==null&&u.line!==null&&u.column!==null?((r!==u.source||o!==u.line||a!==u.column||l!==u.name)&&i.addMapping({source:u.source,original:{line:u.line,column:u.column},generated:{line:t.line,column:t.column},name:u.name}),r=u.source,o=u.line,a=u.column,l=u.name,s=!0):s&&(i.addMapping({generated:{line:t.line,column:t.column}}),r=null,s=!1);for(var h=0,d=c.length;h<d;h++)c.charCodeAt(h)===gxe?(t.line++,t.column=0,h+1===d?(r=null,s=!1):s&&i.addMapping({source:u.source,original:{line:u.line,column:u.column},generated:{line:t.line,column:t.column},name:u.name})):t.column++}),this.walkSourceContents(function(c,u){i.setSourceContent(c,u)}),{code:t.code,map:i}};yle.SourceNode=El;var mz=hC.SourceMapGenerator=cz.SourceMapGenerator,AZ=hC.SourceMapConsumer=SM.SourceMapConsumer;hC.SourceNode=yle.SourceNode;const tE="/*#__PURE__*/",PT=n=>`${Pa[n]}: _${Pa[n]}`;function PZ(n,{mode:e="function",prefixIdentifiers:t=e==="module",sourceMap:i=!1,filename:s="template.vue.html",scopeId:r=null,optimizeImports:o=!1,runtimeGlobalName:a="Vue",runtimeModuleName:l="vue",ssrRuntimeModuleName:c="vue/server-renderer",ssr:u=!1,isTS:h=!1,inSSR:d=!1}){const f={mode:e,prefixIdentifiers:t,sourceMap:i,filename:s,scopeId:r,optimizeImports:o,runtimeGlobalName:a,runtimeModuleName:l,ssrRuntimeModuleName:c,ssr:u,isTS:h,inSSR:d,source:n.loc.source,code:"",column:1,line:1,offset:0,indentLevel:0,pure:!1,map:void 0,helper(m){return`_${Pa[m]}`},push(m,_){if(f.code+=m,f.map){if(_){let b;if(_.type===4&&!_.isStatic){const y=_.content.replace(/^_ctx\./,"");y!==_.content&&$p(y)&&(b=y)}p(_.loc.start,b)}ey(f,m),_&&_.loc!==Cs&&p(_.loc.end)}},indent(){g(++f.indentLevel)},deindent(m=!1){m?--f.indentLevel:g(--f.indentLevel)},newline(){g(f.indentLevel)}};function g(m){f.push(` +`+" ".repeat(m))}function p(m,_){f.map.addMapping({name:_,source:f.filename,original:{line:m.line,column:m.column-1},generated:{line:f.line,column:f.column-1}})}return i&&(f.map=new mz,f.map.setSourceContent(s,f.source)),f}function _z(n,e={}){const t=PZ(n,e);e.onContextCreated&&e.onContextCreated(t);const{mode:i,push:s,prefixIdentifiers:r,indent:o,deindent:a,newline:l,scopeId:c,ssr:u}=t,h=Array.from(n.helpers),d=h.length>0,f=!r&&i!=="module",g=c!=null&&i==="module",p=!!e.inline,m=p?PZ(n,e):t;i==="module"?mxe(n,m,g,p):pxe(n,m);const _=u?"ssrRender":"render",b=u?["_ctx","_push","_parent","_attrs"]:["_ctx","_cache"];e.bindingMetadata&&!e.inline&&b.push("$props","$setup","$data","$options");const y=e.isTS?b.map(w=>`${w}: any`).join(","):b.join(", ");if(s(p?`(${y}) => {`:`function ${_}(${y}) {`),o(),f&&(s("with (_ctx) {"),o(),d&&(s(`const { ${h.map(PT).join(", ")} } = _Vue`),s(` +`),l())),n.components.length&&(RZ(n.components,"component",t),(n.directives.length||n.temps>0)&&l()),n.directives.length&&(RZ(n.directives,"directive",t),n.temps>0&&l()),n.temps>0){s("let ");for(let w=0;w<n.temps;w++)s(`${w>0?", ":""}_temp${w}`)}return(n.components.length||n.directives.length||n.temps)&&(s(` +`),l()),u||s("return "),n.codegenNode?Ds(n.codegenNode,t):s("null"),f&&(a(),s("}")),a(),s("}"),{ast:n,code:t.code,preamble:p?m.code:"",map:t.map?t.map.toJSON():void 0}}function pxe(n,e){const{ssr:t,prefixIdentifiers:i,push:s,newline:r,runtimeModuleName:o,runtimeGlobalName:a,ssrRuntimeModuleName:l}=e,c=t?`require(${JSON.stringify(o)})`:a,u=Array.from(n.helpers);if(u.length>0){if(i)s(`const { ${u.map(PT).join(", ")} } = ${c} +`);else if(s(`const _Vue = ${c} +`),n.hoists.length){const h=[Yx,eM,aC,tM,iM].filter(d=>u.includes(d)).map(PT).join(", ");s(`const { ${h} } = _Vue +`)}}n.ssrHelpers&&n.ssrHelpers.length&&s(`const { ${n.ssrHelpers.map(PT).join(", ")} } = require("${l}") +`),Cle(n.hoists,e),r(),s("return ")}function mxe(n,e,t,i){const{push:s,newline:r,optimizeImports:o,runtimeModuleName:a,ssrRuntimeModuleName:l}=e;if(t&&n.hoists.length&&(n.helpers.add(cM),n.helpers.add(uM)),n.helpers.size){const c=Array.from(n.helpers);o?(s(`import { ${c.map(u=>Pa[u]).join(", ")} } from ${JSON.stringify(a)} +`),s(` +// Binding optimization for webpack code-split +const ${c.map(u=>`_${Pa[u]} = ${Pa[u]}`).join(", ")} +`)):s(`import { ${c.map(u=>`${Pa[u]} as _${Pa[u]}`).join(", ")} } from ${JSON.stringify(a)} +`)}n.ssrHelpers&&n.ssrHelpers.length&&s(`import { ${n.ssrHelpers.map(c=>`${Pa[c]} as _${Pa[c]}`).join(", ")} } from "${l}" +`),n.imports.length&&(_xe(n.imports,e),r()),Cle(n.hoists,e),r(),i||s("export ")}function RZ(n,e,{helper:t,push:i,newline:s,isTS:r}){const o=t(e==="component"?Bk:nM);for(let a=0;a<n.length;a++){let l=n[a];const c=l.endsWith("__self");c&&(l=l.slice(0,-6)),i(`const ${zk(l,e)} = ${o}(${JSON.stringify(l)}${c?", true":""})${r?"!":""}`),a<n.length-1&&s()}}function Cle(n,e){if(!n.length)return;e.pure=!0;const{push:t,newline:i,helper:s,scopeId:r,mode:o}=e,a=r!=null&&o!=="function";i(),a&&(t(`const _withScopeId = n => (${s(cM)}("${r}"),n=n(),${s(uM)}(),n)`),i());for(let l=0;l<n.length;l++){const c=n[l];if(c){const u=a&&c.type===13;t(`const _hoisted_${l+1} = ${u?`${tE} _withScopeId(() => `:""}`),Ds(c,e),u&&t(")"),i()}}e.pure=!1}function _xe(n,e){n.length&&n.forEach(t=>{e.push("import "),Ds(t.exp,e),e.push(` from '${t.path}'`),e.newline()})}function vxe(n){return Ui(n)||n.type===4||n.type===2||n.type===5||n.type===8}function kM(n,e){const t=n.length>3||n.some(i=>aa(i)||!vxe(i));e.push("["),t&&e.indent(),gC(n,e,t),t&&e.deindent(),e.push("]")}function gC(n,e,t=!1,i=!0){const{push:s,newline:r}=e;for(let o=0;o<n.length;o++){const a=n[o];Ui(a)?s(a):aa(a)?kM(a,e):Ds(a,e),o<n.length-1&&(t?(i&&s(","),r()):i&&s(", "))}}function Ds(n,e){if(Ui(n)){e.push(n);return}if(Sm(n)){e.push(e.helper(n));return}switch(n.type){case 1:case 9:case 11:iB(n.codegenNode!=null,"Codegen node is missing for element/if/for node. Apply appropriate transforms first."),Ds(n.codegenNode,e);break;case 2:bxe(n,e);break;case 4:wle(n,e);break;case 5:yxe(n,e);break;case 12:Ds(n.codegenNode,e);break;case 8:Sle(n,e);break;case 3:wxe(n,e);break;case 13:Sxe(n,e);break;case 14:Lxe(n,e);break;case 15:xxe(n,e);break;case 17:Exe(n,e);break;case 18:Dxe(n,e);break;case 19:Ixe(n,e);break;case 20:Txe(n,e);break;case 21:gC(n.body,e,!0,!1);break;case 22:Nxe(n,e);break;case 23:kle(n,e);break;case 24:Axe(n,e);break;case 25:Pxe(n,e);break;case 26:Rxe(n,e);break;case 10:break;default:return iB(!1,`unhandled codegen node type: ${n.type}`),n}}function bxe(n,e){e.push(JSON.stringify(n.content),n)}function wle(n,e){const{content:t,isStatic:i}=n;e.push(i?JSON.stringify(t):t,n)}function yxe(n,e){const{push:t,helper:i,pure:s}=e;s&&t(tE),t(`${i(Zx)}(`),Ds(n.content,e),t(")")}function Sle(n,e){for(let t=0;t<n.children.length;t++){const i=n.children[t];Ui(i)?e.push(i):Ds(i,e)}}function Cxe(n,e){const{push:t}=e;if(n.type===8)t("["),Sle(n,e),t("]");else if(n.isStatic){const i=$p(n.content)?n.content:JSON.stringify(n.content);t(i,n)}else t(`[${n.content}]`,n)}function wxe(n,e){const{push:t,helper:i,pure:s}=e;s&&t(tE),t(`${i(aC)}(${JSON.stringify(n.content)})`,n)}function Sxe(n,e){const{push:t,helper:i,pure:s}=e,{tag:r,props:o,children:a,patchFlag:l,dynamicProps:c,directives:u,isBlock:h,disableTracking:d,isComponent:f}=n;u&&t(i(sM)+"("),h&&t(`(${i(Vp)}(${d?"true":""}), `),s&&t(tE);const g=h?C_(e.inSSR,f):y_(e.inSSR,f);t(i(g)+"(",n),gC(kxe([r,o,a,l,c]),e),t(")"),h&&t(")"),u&&(t(", "),Ds(u,e),t(")"))}function kxe(n){let e=n.length;for(;e--&&n[e]==null;);return n.slice(0,e+1).map(t=>t||"null")}function Lxe(n,e){const{push:t,helper:i,pure:s}=e,r=Ui(n.callee)?n.callee:i(n.callee);s&&t(tE),t(r+"(",n),gC(n.arguments,e),t(")")}function xxe(n,e){const{push:t,indent:i,deindent:s,newline:r}=e,{properties:o}=n;if(!o.length){t("{}",n);return}const a=o.length>1||o.some(l=>l.value.type!==4);t(a?"{":"{ "),a&&i();for(let l=0;l<o.length;l++){const{key:c,value:u}=o[l];Cxe(c,e),t(": "),Ds(u,e),l<o.length-1&&(t(","),r())}a&&s(),t(a?"}":" }")}function Exe(n,e){kM(n.elements,e)}function Dxe(n,e){const{push:t,indent:i,deindent:s}=e,{params:r,returns:o,body:a,newline:l,isSlot:c}=n;c&&t(`_${Pa[hM]}(`),t("(",n),aa(r)?gC(r,e):r&&Ds(r,e),t(") => "),(l||a)&&(t("{"),i()),o?(l&&t("return "),aa(o)?kM(o,e):Ds(o,e)):a&&Ds(a,e),(l||a)&&(s(),t("}")),c&&t(")")}function Ixe(n,e){const{test:t,consequent:i,alternate:s,newline:r}=n,{push:o,indent:a,deindent:l,newline:c}=e;if(t.type===4){const h=!$p(t.content);h&&o("("),wle(t,e),h&&o(")")}else o("("),Ds(t,e),o(")");r&&a(),e.indentLevel++,r||o(" "),o("? "),Ds(i,e),e.indentLevel--,r&&c(),r||o(" "),o(": ");const u=s.type===19;u||e.indentLevel++,Ds(s,e),u||e.indentLevel--,r&&l(!0)}function Txe(n,e){const{push:t,helper:i,indent:s,deindent:r,newline:o}=e;t(`_cache[${n.index}] || (`),n.isVNode&&(s(),t(`${i(Wk)}(-1),`),o()),t(`_cache[${n.index}] = `),Ds(n.value,e),n.isVNode&&(t(","),o(),t(`${i(Wk)}(1),`),o(),t(`_cache[${n.index}]`),r()),t(")")}function Nxe(n,e){const{push:t,indent:i,deindent:s}=e;t("`");const r=n.elements.length,o=r>3;for(let a=0;a<r;a++){const l=n.elements[a];Ui(l)?t(l.replace(/(`|\$|\\)/g,"\\$1")):(t("${"),o&&i(),Ds(l,e),o&&s(),t("}"))}t("`")}function kle(n,e){const{push:t,indent:i,deindent:s}=e,{test:r,consequent:o,alternate:a}=n;t("if ("),Ds(r,e),t(") {"),i(),Ds(o,e),s(),t("}"),a&&(t(" else "),a.type===23?kle(a,e):(t("{"),i(),Ds(a,e),s(),t("}")))}function Axe(n,e){Ds(n.left,e),e.push(" = "),Ds(n.right,e)}function Pxe(n,e){e.push("("),gC(n.expressions,e),e.push(")")}function Rxe({returns:n},e){e.push("return "),aa(n)?kM(n,e):Ds(n,e)}class Mxe{constructor(){this.should_skip=!1,this.should_remove=!1,this.replacement=null,this.context={skip:()=>this.should_skip=!0,remove:()=>this.should_remove=!0,replace:e=>this.replacement=e}}replace(e,t,i,s){e&&(i!==null?e[t][i]=s:e[t]=s)}remove(e,t,i){e&&(i!==null?e[t].splice(i,1):delete e[t])}}class Oxe extends Mxe{constructor(e,t){super(),this.enter=e,this.leave=t}visit(e,t,i,s){if(e){if(this.enter){const r=this.should_skip,o=this.should_remove,a=this.replacement;this.should_skip=!1,this.should_remove=!1,this.replacement=null,this.enter.call(this.context,e,t,i,s),this.replacement&&(e=this.replacement,this.replace(t,i,s,e)),this.should_remove&&this.remove(t,i,s);const l=this.should_skip,c=this.should_remove;if(this.should_skip=r,this.should_remove=o,this.replacement=a,l)return e;if(c)return null}for(const r in e){const o=e[r];if(typeof o=="object")if(Array.isArray(o))for(let a=0;a<o.length;a+=1)o[a]!==null&&typeof o[a].type=="string"&&(this.visit(o[a],e,r,a)||a--);else o!==null&&typeof o.type=="string"&&this.visit(o,e,r,null)}if(this.leave){const r=this.replacement,o=this.should_remove;this.replacement=null,this.should_remove=!1,this.leave.call(this.context,e,t,i,s),this.replacement&&(e=this.replacement,this.replace(t,i,s,e)),this.should_remove&&this.remove(t,i,s);const a=this.should_remove;if(this.replacement=r,this.should_remove=o,a)return null}}return e}}function iE(n,{enter:e,leave:t}){return new Oxe(e,t).visit(n,null)}function pC(n,e,t=!1,i=[],s=Object.create(null)){const r=n.type==="Program"&&n.body[0].type==="ExpressionStatement"&&n.body[0].expression;iE(n,{enter(o,a){if(a&&i.push(a),a&&a.type.startsWith("TS")&&!vz.includes(a.type))return this.skip();if(o.type==="Identifier"){const l=!!s[o.name],c=LM(o,a,i);(t||c&&!l)&&e(o,a,i,c,l)}else o.type==="ObjectProperty"&&a.type==="ObjectPattern"?o.inPattern=!0:oc(o)?xM(o,l=>MZ(o,l,s)):o.type==="BlockStatement"&&Lle(o,l=>MZ(o,l,s))},leave(o,a){if(a&&i.pop(),o!==r&&o.scopeIds)for(const l of o.scopeIds)s[l]--,s[l]===0&&delete s[l]}})}function LM(n,e,t){if(!e)return!0;if(n.name==="arguments")return!1;if(Fxe(n,e))return!0;switch(e.type){case"AssignmentExpression":case"AssignmentPattern":return!0;case"ObjectPattern":case"ArrayPattern":return pv(e,t)}return!1}function pv(n,e){if(n&&(n.type==="ObjectProperty"||n.type==="ArrayPattern")){let t=e.length;for(;t--;){const i=e[t];if(i.type==="AssignmentExpression")return!0;if(i.type!=="ObjectProperty"&&!i.type.endsWith("Pattern"))break}}return!1}function xM(n,e){for(const t of n.params)for(const i of gl(t))e(i)}function Lle(n,e){for(const t of n.body)if(t.type==="VariableDeclaration"){if(t.declare)continue;for(const i of t.declarations)for(const s of gl(i.id))e(s)}else if(t.type==="FunctionDeclaration"||t.type==="ClassDeclaration"){if(t.declare||!t.id)continue;e(t.id)}else if(t.type==="ForOfStatement"||t.type==="ForInStatement"||t.type==="ForStatement"){const i=t.type==="ForStatement"?t.init:t.left;if(i&&i.type==="VariableDeclaration")for(const s of i.declarations)for(const r of gl(s.id))e(r)}}function gl(n,e=[]){switch(n.type){case"Identifier":e.push(n);break;case"MemberExpression":let t=n;for(;t.type==="MemberExpression";)t=t.object;e.push(t);break;case"ObjectPattern":for(const i of n.properties)i.type==="RestElement"?gl(i.argument,e):gl(i.value,e);break;case"ArrayPattern":n.elements.forEach(i=>{i&&gl(i,e)});break;case"RestElement":gl(n.argument,e);break;case"AssignmentPattern":gl(n.left,e);break}return e}function MZ(n,e,t){const{name:i}=e;n.scopeIds&&n.scopeIds.has(i)||(i in t?t[i]++:t[i]=1,(n.scopeIds||(n.scopeIds=new Set)).add(i))}const oc=n=>/Function(?:Expression|Declaration)$|Method$/.test(n.type),mv=n=>n&&(n.type==="ObjectProperty"||n.type==="ObjectMethod")&&!n.computed,xle=(n,e)=>mv(e)&&e.key===n;function Fxe(n,e,t){switch(e.type){case"MemberExpression":case"OptionalMemberExpression":return e.property===n?!!e.computed:e.object===n;case"JSXMemberExpression":return e.object===n;case"VariableDeclarator":return e.init===n;case"ArrowFunctionExpression":return e.body===n;case"PrivateName":return!1;case"ClassMethod":case"ClassPrivateMethod":case"ObjectMethod":return e.key===n?!!e.computed:!1;case"ObjectProperty":return e.key===n?!!e.computed:!t||t.type!=="ObjectPattern";case"ClassProperty":return e.key===n?!!e.computed:!0;case"ClassPrivateProperty":return e.key!==n;case"ClassDeclaration":case"ClassExpression":return e.superClass===n;case"AssignmentExpression":return e.right===n;case"AssignmentPattern":return e.right===n;case"LabeledStatement":return!1;case"CatchClause":return!1;case"RestElement":return!1;case"BreakStatement":case"ContinueStatement":return!1;case"FunctionDeclaration":case"FunctionExpression":return!1;case"ExportNamespaceSpecifier":case"ExportDefaultSpecifier":return!1;case"ExportSpecifier":return t!=null&&t.source?!1:e.local===n;case"ImportDefaultSpecifier":case"ImportNamespaceSpecifier":case"ImportSpecifier":return!1;case"ImportAttribute":return!1;case"JSXAttribute":return!1;case"ObjectPattern":case"ArrayPattern":return!1;case"MetaProperty":return!1;case"ObjectTypeProperty":return e.key!==n;case"TSEnumMember":return e.id!==n;case"TSPropertySignature":return e.key===n?!!e.computed:!0}return!0}const vz=["TSAsExpression","TSTypeAssertion","TSNonNullExpression","TSInstantiationExpression","TSSatisfiesExpression"],Bxe=_o("true,false,null,this"),Wxe=/\w\s*\(|\.[^\d]/,bz=(n,e)=>{if(n.type===5)n.content=Jo(n.content,e);else if(n.type===1)for(let t=0;t<n.props.length;t++){const i=n.props[t];if(i.type===7&&i.name!=="for"){const s=i.exp,r=i.arg;s&&s.type===4&&!(i.name==="on"&&r)&&(i.exp=Jo(s,e,i.name==="slot")),r&&r.type===4&&!r.isStatic&&(i.arg=Jo(r,e))}}};function Jo(n,e,t=!1,i=!1,s=Object.create(e.identifiers)){if(!e.prefixIdentifiers||!n.content.trim())return n;const{inline:r,bindingMetadata:o}=e,a=(_,b,y)=>{const w=QR(o,_)&&o[_];if(r){const S=b&&b.type==="AssignmentExpression"&&b.left===y,E=b&&b.type==="UpdateExpression"&&b.argument===y,L=b&&pv(b,f);if(OZ(w)||w==="setup-reactive-const"||s[_])return _;if(w==="setup-ref")return`${_}.value`;if(w==="setup-maybe-ref")return S||E||L?`${_}.value`:`${e.helperString(b_)}(${_})`;if(w==="setup-let")if(S){const{right:k,operator:x}=b,I=l.slice(k.start-1,k.end-1),N=EM(Jo(ct(I,!1),e,!1,!1,g));return`${e.helperString(Vk)}(${_})${e.isTS?` //@ts-ignore +`:""} ? ${_}.value ${x} ${N} : ${_}`}else if(E){y.start=b.start,y.end=b.end;const{prefix:k,operator:x}=b,I=k?x:"",N=k?"":x;return`${e.helperString(Vk)}(${_})${e.isTS?` //@ts-ignore +`:""} ? ${I}${_}.value${N} : ${I}${_}${N}`}else return L?_:`${e.helperString(b_)}(${_})`;else{if(w==="props")return Gb(_);if(w==="props-aliased")return Gb(o.__propsAliases[_])}}else{if(w&&w.startsWith("setup")||w==="literal-const")return`$setup.${_}`;if(w==="props-aliased")return`$props['${o.__propsAliases[_]}']`;if(w)return`$${w}.${_}`}return`_ctx.${_}`},l=n.content,c=Wxe.test(l);if($p(l)){const _=e.identifiers[l],b=wae(l),y=Bxe(l);return!t&&!_&&!y&&(!b||o[l])?(OZ(o[l])&&(n.constType=1),n.content=a(l)):_||(y?n.constType=3:n.constType=2),n}let u;const h=i?` ${l} `:`(${l})${t?"=>{}":""}`;try{u=Hp(h,{plugins:e.expressionPlugins}).program}catch(_){return e.onError(hn(45,n.loc,void 0,_.message)),n}const d=[],f=[],g=Object.create(e.identifiers);pC(u,(_,b,y,w,S)=>{if(xle(_,b))return;const E=w&&Vxe(_);E&&!S?(mv(b)&&b.shorthand&&(_.prefix=`${_.name}: `),_.name=a(_.name,b,_),d.push(_)):(!(E&&S)&&!c&&(_.isConstant=!0),d.push(_))},!0,f,g);const p=[];d.sort((_,b)=>_.start-b.start),d.forEach((_,b)=>{const y=_.start-1,w=_.end-1,S=d[b-1],E=l.slice(S?S.end-1:0,y);(E.length||_.prefix)&&p.push(E+(_.prefix||""));const L=l.slice(y,w);p.push(ct(_.name,!1,{source:L,start:w_(n.loc.start,L,y),end:w_(n.loc.start,L,w)},_.isConstant?3:0)),b===d.length-1&&w<l.length&&p.push(l.slice(w))});let m;return p.length?m=io(p,n.loc):(m=n,m.constType=c?0:3),m.identifiers=Object.keys(g),m}function Vxe(n){return!(wae(n.name)||n.name==="require")}function EM(n){return Ui(n)?n:n.type===4?n.content:n.children.map(EM).join("")}function OZ(n){return n==="setup-const"||n==="literal-const"}const Hxe=eE(/^(if|else|else-if)$/,(n,e,t)=>yz(n,e,t,(i,s,r)=>{const o=t.parent.children;let a=o.indexOf(i),l=0;for(;a-->=0;){const c=o[a];c&&c.type===9&&(l+=c.branches.length)}return()=>{if(r)i.codegenNode=BZ(s,l,t);else{const c=zxe(i.codegenNode);c.alternate=BZ(s,l+i.branches.length-1,t)}}}));function yz(n,e,t,i){if(e.name!=="else"&&(!e.exp||!e.exp.content.trim())){const s=e.exp?e.exp.loc:n.loc;t.onError(hn(28,e.loc)),e.exp=ct("true",!1,s)}if(t.prefixIdentifiers&&e.exp&&(e.exp=Jo(e.exp,t)),e.name==="if"){const s=FZ(n,e),r={type:9,loc:n.loc,branches:[s]};if(t.replaceNode(r),i)return i(r,s,!0)}else{const s=t.parent.children,r=[];let o=s.indexOf(n);for(;o-->=-1;){const a=s[o];if(a&&a.type===3){t.removeNode(a),r.unshift(a);continue}if(a&&a.type===2&&!a.content.trim().length){t.removeNode(a);continue}if(a&&a.type===9){e.name==="else-if"&&a.branches[a.branches.length-1].condition===void 0&&t.onError(hn(30,n.loc)),t.removeNode();const l=FZ(n,e);r.length&&!(t.parent&&t.parent.type===1&&gu(t.parent.tag,"transition"))&&(l.children=[...r,...l.children]);{const u=l.userKey;u&&a.branches.forEach(({userKey:h})=>{$xe(h,u)&&t.onError(hn(29,l.userKey.loc))})}a.branches.push(l);const c=i&&i(a,l,!1);uC(l,t),c&&c(),t.currentNode=null}else t.onError(hn(30,n.loc));break}}}function FZ(n,e){const t=n.tagType===3;return{type:10,loc:n.loc,condition:e.name==="else"?void 0:e.exp,children:t&&!kr(n,"for")?n.children:[n],userKey:ja(n,"key"),isTemplateIf:t}}function BZ(n,e,t){return n.condition?jh(n.condition,WZ(n,e,t),$t(t.helper(aC),['"v-if"',"true"])):WZ(n,e,t)}function WZ(n,e,t){const{helper:i}=t,s=En("key",ct(`${e}`,!1,Cs,2)),{children:r}=n,o=r[0];if(r.length!==1||o.type!==1)if(r.length===1&&o.type===11){const l=o.codegenNode;return $k(l,s,t),l}else{let l=64,c=Uh[64];return!n.isTemplateIf&&r.filter(u=>u.type!==3).length===1&&(l|=2048,c+=`, ${Uh[2048]}`),Jb(t,i(Zb),Va([s]),r,l+` /* ${c} */`,void 0,void 0,!0,!1,!1,n.loc)}else{const l=o.codegenNode,c=sle(l);return c.type===13&&fM(c,t),$k(c,s,t),l}}function $xe(n,e){if(!n||n.type!==e.type)return!1;if(n.type===6){if(n.value.content!==e.value.content)return!1}else{const t=n.exp,i=e.exp;if(t.type!==i.type||t.type!==4||t.isStatic!==i.isStatic||t.content!==i.content)return!1}return!0}function zxe(n){for(;;)if(n.type===19)if(n.alternate.type===19)n=n.alternate;else return n;else n.type===20&&(n=n.value)}const Uxe=eE("for",(n,e,t)=>{const{helper:i,removeHelper:s}=t;return Cz(n,e,t,r=>{const o=$t(i(rM),[r.source]),a=ty(n),l=kr(n,"memo"),c=ja(n,"key"),u=c&&(c.type===6?ct(c.value.content,!0):c.exp),h=c?En("key",u):null;a&&(l&&(l.exp=Jo(l.exp,t)),h&&c.type!==6&&(h.value=Jo(h.value,t)));const d=r.source.type===4&&r.source.constType>0,f=d?64:c?128:256;return r.codegenNode=Jb(t,i(Zb),void 0,o,f+` /* ${Uh[f]} */`,void 0,void 0,!0,!d,!1,n.loc),()=>{let g;const{children:p}=r;a&&n.children.some(b=>{if(b.type===1){const y=ja(b,"key");if(y)return t.onError(hn(33,y.loc)),!0}});const m=p.length!==1||p[0].type!==1,_=iy(n)?n:a&&n.children.length===1&&iy(n.children[0])?n.children[0]:null;if(_?(g=_.codegenNode,a&&h&&$k(g,h,t)):m?g=Jb(t,i(Zb),h?Va([h]):void 0,n.children,`64 /* ${Uh[64]} */`,void 0,void 0,!0,void 0,!1):(g=p[0].codegenNode,a&&h&&$k(g,h,t),g.isBlock!==!d&&(g.isBlock?(s(Vp),s(C_(t.inSSR,g.isComponent))):s(y_(t.inSSR,g.isComponent))),g.isBlock=!d,g.isBlock?(i(Vp),i(C_(t.inSSR,g.isComponent))):i(y_(t.inSSR,g.isComponent))),l){const b=Rl(qk(r.parseResult,[ct("_cached")]));b.body=Xx([io(["const _memo = (",l.exp,")"]),io(["if (_cached",...u?[" && _cached.key === ",u]:[],` && ${t.helperString($$)}(_cached, _memo)) return _cached`]),io(["const _item = ",g]),ct("_item.memo = _memo"),ct("return _item")]),o.arguments.push(b,ct("_cache"),ct(String(t.cached++)))}else o.arguments.push(Rl(qk(r.parseResult),g,!0))}})});function Cz(n,e,t,i){if(!e.exp){t.onError(hn(31,e.loc));return}const s=wz(e.exp,t);if(!s){t.onError(hn(32,e.loc));return}const{addIdentifiers:r,removeIdentifiers:o,scopes:a}=t,{source:l,value:c,key:u,index:h}=s,d={type:11,loc:e.loc,source:l,valueAlias:c,keyAlias:u,objectIndexAlias:h,parseResult:s,children:ty(n)?n.children:[n]};t.replaceNode(d),a.vFor++,t.prefixIdentifiers&&(c&&r(c),u&&r(u),h&&r(h));const f=i&&i(d);return()=>{a.vFor--,t.prefixIdentifiers&&(c&&o(c),u&&o(u),h&&o(h)),f&&f()}}const VZ=/,([^,\}\]]*)(?:,([^,\}\]]*))?$/,jxe=/^\(|\)$/g;function wz(n,e){const t=n.loc,i=n.content,s=i.match(az);if(!s)return;const[,r,o]=s,a={source:SD(t,o.trim(),i.indexOf(o,r.length)),value:void 0,key:void 0,index:void 0};e.prefixIdentifiers&&(a.source=Jo(a.source,e));let l=r.trim().replace(jxe,"").trim();const c=r.indexOf(l),u=l.match(VZ);if(u){l=l.replace(VZ,"").trim();const h=u[1].trim();let d;if(h&&(d=i.indexOf(h,c+l.length),a.key=SD(t,h,d),e.prefixIdentifiers&&(a.key=Jo(a.key,e,!0))),u[2]){const f=u[2].trim();f&&(a.index=SD(t,f,i.indexOf(f,a.key?d+h.length:c+l.length)),e.prefixIdentifiers&&(a.index=Jo(a.index,e,!0)))}}return l&&(a.value=SD(t,l,c),e.prefixIdentifiers&&(a.value=Jo(a.value,e,!0))),a}function SD(n,e,t){return ct(e,!1,rz(n,t,e.length))}function qk({value:n,key:e,index:t},i=[]){return qxe([n,e,t,...i])}function qxe(n){let e=n.length;for(;e--&&!n[e];);return n.slice(0,e+1).map((t,i)=>t||ct("_".repeat(i+1),!1))}const HZ=ct("undefined",!1),Sz=(n,e)=>{if(n.type===1&&(n.tagType===1||n.tagType===3)){const t=kr(n,"slot");if(t){const i=t.exp;return e.prefixIdentifiers&&i&&e.addIdentifiers(i),e.scopes.vSlot++,()=>{e.prefixIdentifiers&&i&&e.removeIdentifiers(i),e.scopes.vSlot--}}}},kz=(n,e)=>{let t;if(ty(n)&&n.props.some(oz)&&(t=kr(n,"for"))){const i=t.parseResult=wz(t.exp,e);if(i){const{value:s,key:r,index:o}=i,{addIdentifiers:a,removeIdentifiers:l}=e;return s&&a(s),r&&a(r),o&&a(o),()=>{s&&l(s),r&&l(r),o&&l(o)}}}},Kxe=(n,e,t,i)=>Rl(n,t,!1,!0,t.length?t[0].loc:i);function Kk(n,e,t=Kxe){e.helper(hM);const{children:i,loc:s}=n,r=[],o=[];let a=e.scopes.vSlot>0||e.scopes.vFor>0;!e.ssr&&e.prefixIdentifiers&&(a=Ia(n,e.identifiers));const l=kr(n,"slot",!0);if(l){const{arg:m,exp:_}=l;m&&!so(m)&&(a=!0),r.push(En(m||ct("default",!0),t(_,void 0,i,s)))}let c=!1,u=!1;const h=[],d=new Set;let f=0;for(let m=0;m<i.length;m++){const _=i[m];let b;if(!ty(_)||!(b=kr(_,"slot",!0))){_.type!==3&&h.push(_);continue}if(l){e.onError(hn(37,b.loc));break}c=!0;const{children:y,loc:w}=_,{arg:S=ct("default",!0),exp:E,loc:L}=b;let k;so(S)?k=S?S.content:"default":a=!0;const x=kr(_,"for"),I=t(E,x==null?void 0:x.exp,y,w);let N,T;if(N=kr(_,"if"))a=!0,o.push(jh(N.exp,kD(S,I,f++),HZ));else if(T=kr(_,/^else(-if)?$/,!0)){let P=m,R;for(;P--&&(R=i[P],R.type===3););if(R&&ty(R)&&kr(R,"if")){i.splice(m,1),m--;let F=o[o.length-1];for(;F.alternate.type===19;)F=F.alternate;F.alternate=T.exp?jh(T.exp,kD(S,I,f++),HZ):kD(S,I,f++)}else e.onError(hn(30,T.loc))}else if(x){a=!0;const P=x.parseResult||wz(x.exp,e);P?o.push($t(e.helper(rM),[P.source,Rl(qk(P),kD(S,I),!0)])):e.onError(hn(32,x.loc))}else{if(k){if(d.has(k)){e.onError(hn(38,L));continue}d.add(k),k==="default"&&(u=!0)}r.push(En(S,I))}}if(!l){const m=(_,b)=>{const y=t(_,void 0,b,s);return En("default",y)};c?h.length&&h.some(_=>Ele(_))&&(u?e.onError(hn(39,h[0].loc)):r.push(m(void 0,h))):r.push(m(void 0,i))}const g=a?2:RT(n.children)?3:1;let p=Va(r.concat(En("_",ct(g+` /* ${ISe[g]} */`,!1))),s);return o.length&&(p=$t(e.helper(H$),[p,gv(o)])),{slots:p,hasDynamicSlots:a}}function kD(n,e,t){const i=[En("name",n),En("fn",e)];return t!=null&&i.push(En("key",ct(String(t),!0))),Va(i)}function RT(n){for(let e=0;e<n.length;e++){const t=n[e];switch(t.type){case 1:if(t.tagType===2||RT(t.children))return!0;break;case 9:if(RT(t.branches))return!0;break;case 10:case 11:if(RT(t.children))return!0;break}}return!1}function Ele(n){return n.type!==2&&n.type!==12?!0:n.type===2?!!n.content.trim():Ele(n.content)}const Dle=new WeakMap,Ile=(n,e)=>function(){if(n=e.currentNode,!(n.type===1&&(n.tagType===0||n.tagType===1)))return;const{tag:i,props:s}=n,r=n.tagType===1;let o=r?DM(n,e):`"${i}"`;const a=ig(o)&&o.callee===Xb;let l,c,u,h=0,d,f,g,p=a||o===Z1||o===oC||!r&&(i==="svg"||i==="foreignObject");if(s.length>0){const m=mC(n,e,void 0,r,a);l=m.props,h=m.patchFlag,f=m.dynamicPropNames;const _=m.directives;g=_&&_.length?gv(_.map(b=>Lz(b,e))):void 0,m.shouldUseBlock&&(p=!0)}if(n.children.length>0)if(o===Fk&&(p=!0,h|=1024,n.children.length>1&&e.onError(hn(46,{start:n.children[0].loc.start,end:n.children[n.children.length-1].loc.end,source:""}))),r&&o!==Z1&&o!==Fk){const{slots:_,hasDynamicSlots:b}=Kk(n,e);c=_,b&&(h|=1024)}else if(n.children.length===1&&o!==Z1){const _=n.children[0],b=_.type,y=b===5||b===8;y&&bl(_,e)===0&&(h|=1),y||b===2?c=_:c=n.children}else c=n.children;if(h!==0){if(h<0)u=h+` /* ${Uh[h]} */`;else{const m=Object.keys(Uh).map(Number).filter(_=>_>0&&h&_).map(_=>Uh[_]).join(", ");u=h+` /* ${m} */`}f&&f.length&&(d=Yxe(f))}n.codegenNode=Jb(e,o,l,c,u,d,g,!!p,!1,r,n.loc)};function DM(n,e,t=!1){let{tag:i}=n;const s=aB(i),r=ja(n,"is");if(r)if(s){const l=r.type===6?r.value&&ct(r.value.content,!0):r.exp;if(l)return $t(e.helper(Xb),[l])}else r.type===6&&r.value.content.startsWith("vue:")&&(i=r.value.content.slice(4));const o=!s&&kr(n,"is");if(o&&o.exp)return e.onWarn(hn(52,o.loc)),$t(e.helper(Xb),[o.exp]);const a=nz(i)||e.isBuiltInComponent(i);if(a)return t||e.helper(a),a;{const l=oB(i,e);if(l)return l;const c=i.indexOf(".");if(c>0){const u=oB(i.slice(0,c),e);if(u)return u+i.slice(c)}}return e.selfName&&Wp(yu(i))===e.selfName?(e.helper(Bk),e.components.add(i+"__self"),zk(i,"component")):(e.helper(Bk),e.components.add(i),zk(i,"component"))}function oB(n,e){const t=e.bindingMetadata;if(!t||t.__isScriptSetup===!1)return;const i=yu(n),s=Wp(i),r=c=>{if(t[n]===c)return n;if(t[i]===c)return i;if(t[s]===c)return s},o=r("setup-const")||r("setup-reactive-const")||r("literal-const");if(o)return e.inline?o:`$setup[${JSON.stringify(o)}]`;const a=r("setup-let")||r("setup-ref")||r("setup-maybe-ref");if(a)return e.inline?`${e.helperString(b_)}(${a})`:`$setup[${JSON.stringify(a)}]`;const l=r("props");if(l)return`${e.helperString(b_)}(${e.inline?"__props":"$props"}[${JSON.stringify(l)}])`}function mC(n,e,t=n.props,i,s,r=!1){const{tag:o,loc:a,children:l}=n;let c=[];const u=[],h=[],d=l.length>0;let f=!1,g=0,p=!1,m=!1,_=!1,b=!1,y=!1,w=!1;const S=[],E=x=>{c.length&&(u.push(Va($Z(c),a)),c=[]),x&&u.push(x)},L=({key:x,value:I})=>{if(so(x)){const N=x.content,T=vae(N);if(T&&(!i||s)&&N.toLowerCase()!=="onclick"&&N!=="onUpdate:modelValue"&&!oZ(N)&&(b=!0),T&&oZ(N)&&(w=!0),T&&I.type===14&&(I=I.arguments[0]),I.type===20||(I.type===4||I.type===8)&&bl(I,e)>0)return;N==="ref"?p=!0:N==="class"?m=!0:N==="style"?_=!0:N!=="key"&&!S.includes(N)&&S.push(N),i&&(N==="class"||N==="style")&&!S.includes(N)&&S.push(N)}else y=!0};for(let x=0;x<t.length;x++){const I=t[x];if(I.type===6){const{loc:N,name:T,value:P}=I;let R=!0;if(T==="ref"&&(p=!0,e.scopes.vFor>0&&c.push(En(ct("ref_for",!0),ct("true"))),P&&e.inline)){const F=e.bindingMetadata[P.content];(F==="setup-let"||F==="setup-ref"||F==="setup-maybe-ref")&&(R=!1,c.push(En(ct("ref_key",!0),ct(P.content,!0,P.loc))))}if(T==="is"&&(aB(o)||P&&P.content.startsWith("vue:")))continue;c.push(En(ct(T,!0,rz(N,0,T.length)),ct(P?P.content:"",R,P?P.loc:N)))}else{const{name:N,arg:T,exp:P,loc:R,modifiers:F}=I,j=N==="bind",K=N==="on";if(N==="slot"){i||e.onError(hn(40,R));continue}if(N==="once"||N==="memo"||N==="is"||j&&Dh(T,"is")&&aB(o)||K&&r)continue;if((j&&Dh(T,"key")||K&&d&&Dh(T,"vue:before-update"))&&(f=!0),j&&Dh(T,"ref")&&e.scopes.vFor>0&&c.push(En(ct("ref_for",!0),ct("true"))),!T&&(j||K)){y=!0,P?j?(E(),u.push(P)):E({type:14,loc:R,callee:e.helper(lM),arguments:i?[P]:[P,"true"]}):e.onError(hn(j?34:35,R));continue}j&&F.includes("prop")&&(g|=32);const Z=e.directiveTransforms[N];if(Z){const{props:q,needRuntime:re}=Z(I,n,e);!r&&q.forEach(L),K&&T&&!so(T)?E(Va(q,a)):c.push(...q),re&&(h.push(I),Sm(re)&&Dle.set(I,re))}else R$(N)||(h.push(I),d&&(f=!0))}}let k;if(u.length?(E(),u.length>1?k=$t(e.helper(v_),u,a):k=u[0]):c.length&&(k=Va($Z(c),a)),y?g|=16:(m&&!i&&(g|=2),_&&!i&&(g|=4),S.length&&(g|=8),b&&(g|=32)),!f&&(g===0||g===32)&&(p||w||h.length>0)&&(g|=512),!e.inSSR&&k)switch(k.type){case 15:let x=-1,I=-1,N=!1;for(let R=0;R<k.properties.length;R++){const F=k.properties[R].key;so(F)?F.content==="class"?x=R:F.content==="style"&&(I=R):F.isHandlerKey||(N=!0)}const T=k.properties[x],P=k.properties[I];N?k=$t(e.helper(Qb),[k]):(T&&!so(T.value)&&(T.value=$t(e.helper(oM),[T.value])),P&&(_||P.value.type===4&&P.value.content.trim()[0]==="["||P.value.type===17)&&(P.value=$t(e.helper(aM),[P.value])));break;case 14:break;default:k=$t(e.helper(Qb),[$t(e.helper(lC),[k])]);break}return{props:k,directives:h,patchFlag:g,dynamicPropNames:S,shouldUseBlock:f}}function $Z(n){const e=new Map,t=[];for(let i=0;i<n.length;i++){const s=n[i];if(s.key.type===8||!s.key.isStatic){t.push(s);continue}const r=s.key.content,o=e.get(r);o?(r==="style"||r==="class"||vae(r))&&Gxe(o,s):(e.set(r,s),t.push(s))}return t}function Gxe(n,e){n.value.type===17?n.value.elements.push(e.value):n.value=gv([n.value,e.value],n.loc)}function Lz(n,e){const t=[],i=Dle.get(n);if(i)t.push(e.helperString(i));else{const r=oB("v-"+n.name,e);r?t.push(r):(e.helper(nM),e.directives.add(n.name),t.push(zk(n.name,"directive")))}const{loc:s}=n;if(n.exp&&t.push(n.exp),n.arg&&(n.exp||t.push("void 0"),t.push(n.arg)),Object.keys(n.modifiers).length){n.arg||(n.exp||t.push("void 0"),t.push("void 0"));const r=ct("true",!1,s);t.push(Va(n.modifiers.map(o=>En(o,r)),s))}return gv(t,n.loc)}function Yxe(n){let e="[";for(let t=0,i=n.length;t<i;t++)e+=JSON.stringify(n[t]),t<i-1&&(e+=", ");return e+"]"}function aB(n){return n==="component"||n==="Component"}const Zxe=(n,e)=>{if(iy(n)){const{children:t,loc:i}=n,{slotName:s,slotProps:r}=xz(n,e),o=[e.prefixIdentifiers?"_ctx.$slots":"$slots",s,"{}","undefined","true"];let a=2;r&&(o[2]=r,a=3),t.length&&(o[3]=Rl([],t,!1,!1,i),a=4),e.scopeId&&!e.slotted&&(a=5),o.splice(a),n.codegenNode=$t(e.helper(V$),o,i)}};function xz(n,e){let t='"default"',i;const s=[];for(let r=0;r<n.props.length;r++){const o=n.props[r];o.type===6?o.value&&(o.name==="name"?t=JSON.stringify(o.value.content):(o.name=yu(o.name),s.push(o))):o.name==="bind"&&Dh(o.arg,"name")?o.exp&&(t=o.exp):(o.name==="bind"&&o.arg&&so(o.arg)&&(o.arg.content=yu(o.arg.content)),s.push(o))}if(s.length>0){const{props:r,directives:o}=mC(n,e,s,!1,!1);i=r,o.length&&e.onError(hn(36,o[0].loc))}return{slotName:t,slotProps:i}}const Xxe=/^\s*([\w$_]+|(async\s*)?\([^)]*?\))\s*(:[^=]+)?=>|^\s*(async\s+)?function(?:\s+[\w$]+)?\s*\(/,IM=(n,e,t,i)=>{const{loc:s,modifiers:r,arg:o}=n;!n.exp&&!r.length&&t.onError(hn(35,s));let a;if(o.type===4)if(o.isStatic){let h=o.content;h.startsWith("vnode")&&t.onWarn(hn(51,o.loc)),h.startsWith("vue:")&&(h=`vnode-${h.slice(4)}`);const d=e.tagType!==0||h.startsWith("vnode")||!/[A-Z]/.test(h)?ESe(yu(h)):`on:${h}`;a=ct(d,!0,o.loc)}else a=io([`${t.helperString($N)}(`,o,")"]);else a=o,a.children.unshift(`${t.helperString($N)}(`),a.children.push(")");let l=n.exp;l&&!l.content.trim()&&(l=void 0);let c=t.cacheHandlers&&!l&&!t.inVOnce;if(l){const h=sz(l.content,t),d=!(h||Xxe.test(l.content)),f=l.content.includes(";");t.prefixIdentifiers&&(d&&t.addIdentifiers("$event"),l=n.exp=Jo(l,t,!1,f),d&&t.removeIdentifiers("$event"),c=t.cacheHandlers&&!t.inVOnce&&!(l.type===4&&l.constType>0)&&!(h&&e.tagType===1)&&!Ia(l,t.identifiers),c&&h&&(l.type===4?l.content=`${l.content} && ${l.content}(...args)`:l.children=[...l.children," && ",...l.children,"(...args)"])),(d||c&&h)&&(l=io([`${d?t.isTS?"($event: any)":"$event":`${t.isTS?` +//@ts-ignore +`:""}(...args)`} => ${f?"{":"("}`,l,f?"}":")"]))}let u={props:[En(a,l||ct("() => {}",!1,s))]};return i&&(u=i(u)),c&&(u.props[0].value=t.cache(u.props[0].value)),u.props.forEach(h=>h.key.isHandlerKey=!0),u},Ez=(n,e,t)=>{const{exp:i,modifiers:s,loc:r}=n,o=n.arg;return o.type!==4?(o.children.unshift("("),o.children.push(') || ""')):o.isStatic||(o.content=`${o.content} || ""`),s.includes("camel")&&(o.type===4?o.isStatic?o.content=yu(o.content):o.content=`${t.helperString(HN)}(${o.content})`:(o.children.unshift(`${t.helperString(HN)}(`),o.children.push(")"))),t.inSSR||(s.includes("prop")&&zZ(o,"."),s.includes("attr")&&zZ(o,"^")),!i||i.type===4&&!i.content.trim()?(t.onError(hn(34,r)),{props:[En(o,ct("",!0,r))]}):{props:[En(o,i)]}},zZ=(n,e)=>{n.type===4?n.isStatic?n.content=e+n.content:n.content=`\`${e}\${${n.content}}\``:(n.children.unshift(`'${e}' + (`),n.children.push(")"))},Qxe=(n,e)=>{if(n.type===0||n.type===1||n.type===11||n.type===10)return()=>{const t=n.children;let i,s=!1;for(let r=0;r<t.length;r++){const o=t[r];if(WS(o)){s=!0;for(let a=r+1;a<t.length;a++){const l=t[a];if(WS(l))i||(i=t[r]=io([o],o.loc)),i.children.push(" + ",l),t.splice(a,1),a--;else{i=void 0;break}}}}if(!(!s||t.length===1&&(n.type===0||n.type===1&&n.tagType===0&&!n.props.find(r=>r.type===7&&!e.directiveTransforms[r.name]))))for(let r=0;r<t.length;r++){const o=t[r];if(WS(o)||o.type===8){const a=[];(o.type!==2||o.content!==" ")&&a.push(o),!e.ssr&&bl(o,e)===0&&a.push(`1 /* ${Uh[1]} */`),t[r]={type:12,content:o,loc:o.loc,codegenNode:$t(e.helper(tM),a)}}}}},UZ=new WeakSet,Jxe=(n,e)=>{if(n.type===1&&kr(n,"once",!0))return UZ.has(n)||e.inVOnce||e.inSSR?void 0:(UZ.add(n),e.inVOnce=!0,e.helper(Wk),()=>{e.inVOnce=!1;const t=e.currentNode;t.codegenNode&&(t.codegenNode=e.cache(t.codegenNode,!0))})},TM=(n,e,t)=>{const{exp:i,arg:s}=n;if(!i)return t.onError(hn(41,n.loc)),lw();const r=i.loc.source,o=i.type===4?i.content:r,a=t.bindingMetadata[r];if(a==="props"||a==="props-aliased")return t.onError(hn(44,i.loc)),lw();const l=t.inline&&(a==="setup-let"||a==="setup-ref"||a==="setup-maybe-ref");if(!o.trim()||!sz(o,t)&&!l)return t.onError(hn(42,i.loc)),lw();if(t.prefixIdentifiers&&$p(o)&&t.identifiers[o])return t.onError(hn(43,i.loc)),lw();const c=s||ct("modelValue",!0),u=s?so(s)?`onUpdate:${yu(s.content)}`:io(['"onUpdate:" + ',s]):"onUpdate:modelValue";let h;const d=t.isTS?"($event: any)":"$event";if(l)if(a==="setup-ref")h=io([`${d} => ((`,ct(r,!1,i.loc),").value = $event)"]);else{const g=a==="setup-let"?`${r} = $event`:"null";h=io([`${d} => (${t.helperString(Vk)}(${r}) ? (`,ct(r,!1,i.loc),`).value = $event : ${g})`])}else h=io([`${d} => ((`,i,") = $event)"]);const f=[En(c,n.exp),En(u,h)];if(t.prefixIdentifiers&&!t.inVOnce&&t.cacheHandlers&&!Ia(i,t.identifiers)&&(f[1].value=t.cache(f[1].value)),n.modifiers.length&&e.tagType===1){const g=n.modifiers.map(m=>($p(m)?m:JSON.stringify(m))+": true").join(", "),p=s?so(s)?`${s.content}Modifiers`:io([s,' + "Modifiers"']):"modelModifiers";f.push(En(p,ct(`{ ${g} }`,!1,n.loc,2)))}return lw(f)};function lw(n=[]){return{props:n}}const jZ=new WeakSet,eEe=(n,e)=>{if(n.type===1){const t=kr(n,"memo");return!t||jZ.has(n)?void 0:(jZ.add(n),()=>{const i=n.codegenNode||e.currentNode.codegenNode;i&&i.type===13&&(n.tagType!==1&&fM(i,e),n.codegenNode=$t(e.helper(dM),[t.exp,Rl(void 0,i),"_cache",String(e.cached++)]))})}};function Dz(n){return[[Jxe,Hxe,eEe,Uxe,...n?[kz,bz]:[],Zxe,Ile,Sz,Qxe],{on:IM,bind:Ez,model:TM}]}function Tle(n,e={}){const t=e.onError||O$,i=e.mode==="module",s=e.prefixIdentifiers===!0||i;!s&&e.cacheHandlers&&t(hn(49)),e.scopeId&&!i&&t(hn(50));const r=Ui(n)?vM(n,e):n,[o,a]=Dz(s);if(e.isTS){const{expressionPlugins:l}=e;(!l||!l.includes("typescript"))&&(e.expressionPlugins=[...l||[],"typescript"])}return yM(r,If({},e,{prefixIdentifiers:s,nodeTransforms:[...o,...e.nodeTransforms||[]],directiveTransforms:If({},a,e.directiveTransforms||{})})),_z(r,If({},e,{prefixIdentifiers:s}))}const HS=()=>({props:[]}),Iz=Symbol("vModelRadio"),Tz=Symbol("vModelCheckbox"),Nz=Symbol("vModelText"),Az=Symbol("vModelSelect"),XN=Symbol("vModelDynamic"),Pz=Symbol("vOnModifiersGuard"),Rz=Symbol("vOnKeysGuard"),Mz=Symbol("vShow"),_v=Symbol("Transition"),nE=Symbol("TransitionGroup");z$({[Iz]:"vModelRadio",[Tz]:"vModelCheckbox",[Nz]:"vModelText",[Az]:"vModelSelect",[XN]:"vModelDynamic",[Pz]:"withModifiers",[Rz]:"withKeys",[Mz]:"vShow",[_v]:"Transition",[nE]:"TransitionGroup"});var qZ={GT:">",gt:">",LT:"<",lt:"<","ac;":"∾","af;":"⁡",AMP:"&",amp:"&","ap;":"≈","DD;":"ⅅ","dd;":"ⅆ",deg:"°","ee;":"ⅇ","eg;":"⪚","el;":"⪙",ETH:"Ð",eth:"ð","gE;":"≧","ge;":"≥","Gg;":"⋙","gg;":"≫","gl;":"≷","GT;":">","Gt;":"≫","gt;":">","ic;":"⁣","ii;":"ⅈ","Im;":"ℑ","in;":"∈","it;":"⁢","lE;":"≦","le;":"≤","lg;":"≶","Ll;":"⋘","ll;":"≪","LT;":"<","Lt;":"≪","lt;":"<","mp;":"∓","Mu;":"Μ","mu;":"μ","ne;":"≠","ni;":"∋",not:"¬","Nu;":"Ν","nu;":"ν","Or;":"⩔","or;":"∨","oS;":"Ⓢ","Pi;":"Π","pi;":"π","pm;":"±","Pr;":"⪻","pr;":"≺","Re;":"ℜ",REG:"®",reg:"®","rx;":"℞","Sc;":"⪼","sc;":"≻",shy:"­",uml:"¨","wp;":"℘","wr;":"≀","Xi;":"Ξ","xi;":"ξ",yen:"¥","acd;":"∿","acE;":"∾̳","Acy;":"А","acy;":"а","Afr;":"𝔄","afr;":"𝔞","AMP;":"&","amp;":"&","And;":"⩓","and;":"∧","ang;":"∠","apE;":"⩰","ape;":"≊","ast;":"*",Auml:"Ä",auml:"ä","Bcy;":"Б","bcy;":"б","Bfr;":"𝔅","bfr;":"𝔟","bne;":"=⃥","bot;":"⊥","Cap;":"⋒","cap;":"∩",cent:"¢","Cfr;":"ℭ","cfr;":"𝔠","Chi;":"Χ","chi;":"χ","cir;":"○",COPY:"©",copy:"©","Cup;":"⋓","cup;":"∪","Dcy;":"Д","dcy;":"д","deg;":"°","Del;":"∇","Dfr;":"𝔇","dfr;":"𝔡","die;":"¨","div;":"÷","Dot;":"¨","dot;":"˙","Ecy;":"Э","ecy;":"э","Efr;":"𝔈","efr;":"𝔢","egs;":"⪖","ell;":"ℓ","els;":"⪕","ENG;":"Ŋ","eng;":"ŋ","Eta;":"Η","eta;":"η","ETH;":"Ð","eth;":"ð",Euml:"Ë",euml:"ë","Fcy;":"Ф","fcy;":"ф","Ffr;":"𝔉","ffr;":"𝔣","gap;":"⪆","Gcy;":"Г","gcy;":"г","gEl;":"⪌","gel;":"⋛","geq;":"≥","ges;":"⩾","Gfr;":"𝔊","gfr;":"𝔤","ggg;":"⋙","gla;":"⪥","glE;":"⪒","glj;":"⪤","gnE;":"≩","gne;":"⪈","Hat;":"^","Hfr;":"ℌ","hfr;":"𝔥","Icy;":"И","icy;":"и","iff;":"⇔","Ifr;":"ℑ","ifr;":"𝔦","Int;":"∬","int;":"∫",Iuml:"Ï",iuml:"ï","Jcy;":"Й","jcy;":"й","Jfr;":"𝔍","jfr;":"𝔧","Kcy;":"К","kcy;":"к","Kfr;":"𝔎","kfr;":"𝔨","lap;":"⪅","lat;":"⪫","Lcy;":"Л","lcy;":"л","lEg;":"⪋","leg;":"⋚","leq;":"≤","les;":"⩽","Lfr;":"𝔏","lfr;":"𝔩","lgE;":"⪑","lnE;":"≨","lne;":"⪇","loz;":"◊","lrm;":"‎","Lsh;":"↰","lsh;":"↰",macr:"¯","Map;":"⤅","map;":"↦","Mcy;":"М","mcy;":"м","Mfr;":"𝔐","mfr;":"𝔪","mho;":"℧","mid;":"∣","nap;":"≉",nbsp:" ","Ncy;":"Н","ncy;":"н","Nfr;":"𝔑","nfr;":"𝔫","ngE;":"≧̸","nge;":"≱","nGg;":"⋙̸","nGt;":"≫⃒","ngt;":"≯","nis;":"⋼","niv;":"∋","nlE;":"≦̸","nle;":"≰","nLl;":"⋘̸","nLt;":"≪⃒","nlt;":"≮","Not;":"⫬","not;":"¬","npr;":"⊀","nsc;":"⊁","num;":"#","Ocy;":"О","ocy;":"о","Ofr;":"𝔒","ofr;":"𝔬","ogt;":"⧁","ohm;":"Ω","olt;":"⧀","ord;":"⩝",ordf:"ª",ordm:"º","orv;":"⩛",Ouml:"Ö",ouml:"ö","par;":"∥",para:"¶","Pcy;":"П","pcy;":"п","Pfr;":"𝔓","pfr;":"𝔭","Phi;":"Φ","phi;":"φ","piv;":"ϖ","prE;":"⪳","pre;":"⪯","Psi;":"Ψ","psi;":"ψ","Qfr;":"𝔔","qfr;":"𝔮",QUOT:'"',quot:'"',"Rcy;":"Р","rcy;":"р","REG;":"®","reg;":"®","Rfr;":"ℜ","rfr;":"𝔯","Rho;":"Ρ","rho;":"ρ","rlm;":"‏","Rsh;":"↱","rsh;":"↱","scE;":"⪴","sce;":"⪰","Scy;":"С","scy;":"с",sect:"§","Sfr;":"𝔖","sfr;":"𝔰","shy;":"­","sim;":"∼","smt;":"⪪","sol;":"/","squ;":"□","Sub;":"⋐","sub;":"⊂","Sum;":"∑","sum;":"∑","Sup;":"⋑","sup;":"⊃",sup1:"¹",sup2:"²",sup3:"³","Tab;":" ","Tau;":"Τ","tau;":"τ","Tcy;":"Т","tcy;":"т","Tfr;":"𝔗","tfr;":"𝔱","top;":"⊤","Ucy;":"У","ucy;":"у","Ufr;":"𝔘","ufr;":"𝔲","uml;":"¨",Uuml:"Ü",uuml:"ü","Vcy;":"В","vcy;":"в","Vee;":"⋁","vee;":"∨","Vfr;":"𝔙","vfr;":"𝔳","Wfr;":"𝔚","wfr;":"𝔴","Xfr;":"𝔛","xfr;":"𝔵","Ycy;":"Ы","ycy;":"ы","yen;":"¥","Yfr;":"𝔜","yfr;":"𝔶",yuml:"ÿ","Zcy;":"З","zcy;":"з","Zfr;":"ℨ","zfr;":"𝔷","zwj;":"‍",Acirc:"Â",acirc:"â",acute:"´",AElig:"Æ",aelig:"æ","andd;":"⩜","andv;":"⩚","ange;":"⦤","Aopf;":"𝔸","aopf;":"𝕒","apid;":"≋","apos;":"'",Aring:"Å",aring:"å","Ascr;":"𝒜","ascr;":"𝒶","Auml;":"Ä","auml;":"ä","Barv;":"⫧","bbrk;":"⎵","Beta;":"Β","beta;":"β","beth;":"ℶ","bNot;":"⫭","bnot;":"⌐","Bopf;":"𝔹","bopf;":"𝕓","boxH;":"═","boxh;":"─","boxV;":"║","boxv;":"│","Bscr;":"ℬ","bscr;":"𝒷","bsim;":"∽","bsol;":"\\","bull;":"•","bump;":"≎","caps;":"∩︀","Cdot;":"Ċ","cdot;":"ċ",cedil:"¸","cent;":"¢","CHcy;":"Ч","chcy;":"ч","circ;":"ˆ","cirE;":"⧃","cire;":"≗","comp;":"∁","cong;":"≅","Copf;":"ℂ","copf;":"𝕔","COPY;":"©","copy;":"©","Cscr;":"𝒞","cscr;":"𝒸","csub;":"⫏","csup;":"⫐","cups;":"∪︀","Darr;":"↡","dArr;":"⇓","darr;":"↓","dash;":"‐","dHar;":"⥥","diam;":"⋄","DJcy;":"Ђ","djcy;":"ђ","Dopf;":"𝔻","dopf;":"𝕕","Dscr;":"𝒟","dscr;":"𝒹","DScy;":"Ѕ","dscy;":"ѕ","dsol;":"⧶","dtri;":"▿","DZcy;":"Џ","dzcy;":"џ","ecir;":"≖",Ecirc:"Ê",ecirc:"ê","Edot;":"Ė","eDot;":"≑","edot;":"ė","emsp;":" ","ensp;":" ","Eopf;":"𝔼","eopf;":"𝕖","epar;":"⋕","epsi;":"ε","Escr;":"ℰ","escr;":"ℯ","Esim;":"⩳","esim;":"≂","Euml;":"Ë","euml;":"ë","euro;":"€","excl;":"!","flat;":"♭","fnof;":"ƒ","Fopf;":"𝔽","fopf;":"𝕗","fork;":"⋔","Fscr;":"ℱ","fscr;":"𝒻","Gdot;":"Ġ","gdot;":"ġ","geqq;":"≧","gesl;":"⋛︀","GJcy;":"Ѓ","gjcy;":"ѓ","gnap;":"⪊","gneq;":"⪈","Gopf;":"𝔾","gopf;":"𝕘","Gscr;":"𝒢","gscr;":"ℊ","gsim;":"≳","gtcc;":"⪧","gvnE;":"≩︀","half;":"½","hArr;":"⇔","harr;":"↔","hbar;":"ℏ","Hopf;":"ℍ","hopf;":"𝕙","Hscr;":"ℋ","hscr;":"𝒽",Icirc:"Î",icirc:"î","Idot;":"İ","IEcy;":"Е","iecy;":"е",iexcl:"¡","imof;":"⊷","IOcy;":"Ё","iocy;":"ё","Iopf;":"𝕀","iopf;":"𝕚","Iota;":"Ι","iota;":"ι","Iscr;":"ℐ","iscr;":"𝒾","isin;":"∈","Iuml;":"Ï","iuml;":"ï","Jopf;":"𝕁","jopf;":"𝕛","Jscr;":"𝒥","jscr;":"𝒿","KHcy;":"Х","khcy;":"х","KJcy;":"Ќ","kjcy;":"ќ","Kopf;":"𝕂","kopf;":"𝕜","Kscr;":"𝒦","kscr;":"𝓀","Lang;":"⟪","lang;":"⟨",laquo:"«","Larr;":"↞","lArr;":"⇐","larr;":"←","late;":"⪭","lcub;":"{","ldca;":"⤶","ldsh;":"↲","leqq;":"≦","lesg;":"⋚︀","lHar;":"⥢","LJcy;":"Љ","ljcy;":"љ","lnap;":"⪉","lneq;":"⪇","Lopf;":"𝕃","lopf;":"𝕝","lozf;":"⧫","lpar;":"(","Lscr;":"ℒ","lscr;":"𝓁","lsim;":"≲","lsqb;":"[","ltcc;":"⪦","ltri;":"◃","lvnE;":"≨︀","macr;":"¯","male;":"♂","malt;":"✠",micro:"µ","mlcp;":"⫛","mldr;":"…","Mopf;":"𝕄","mopf;":"𝕞","Mscr;":"ℳ","mscr;":"𝓂","nang;":"∠⃒","napE;":"⩰̸","nbsp;":" ","ncap;":"⩃","ncup;":"⩂","ngeq;":"≱","nges;":"⩾̸","ngtr;":"≯","nGtv;":"≫̸","nisd;":"⋺","NJcy;":"Њ","njcy;":"њ","nldr;":"‥","nleq;":"≰","nles;":"⩽̸","nLtv;":"≪̸","nmid;":"∤","Nopf;":"ℕ","nopf;":"𝕟","npar;":"∦","npre;":"⪯̸","nsce;":"⪰̸","Nscr;":"𝒩","nscr;":"𝓃","nsim;":"≁","nsub;":"⊄","nsup;":"⊅","ntgl;":"≹","ntlg;":"≸","nvap;":"≍⃒","nvge;":"≥⃒","nvgt;":">⃒","nvle;":"≤⃒","nvlt;":"<⃒","oast;":"⊛","ocir;":"⊚",Ocirc:"Ô",ocirc:"ô","odiv;":"⨸","odot;":"⊙","ogon;":"˛","oint;":"∮","omid;":"⦶","Oopf;":"𝕆","oopf;":"𝕠","opar;":"⦷","ordf;":"ª","ordm;":"º","oror;":"⩖","Oscr;":"𝒪","oscr;":"ℴ","osol;":"⊘","Ouml;":"Ö","ouml;":"ö","para;":"¶","part;":"∂","perp;":"⊥","phiv;":"ϕ","plus;":"+","Popf;":"ℙ","popf;":"𝕡",pound:"£","prap;":"⪷","prec;":"≺","prnE;":"⪵","prod;":"∏","prop;":"∝","Pscr;":"𝒫","pscr;":"𝓅","qint;":"⨌","Qopf;":"ℚ","qopf;":"𝕢","Qscr;":"𝒬","qscr;":"𝓆","QUOT;":'"',"quot;":'"',"race;":"∽̱","Rang;":"⟫","rang;":"⟩",raquo:"»","Rarr;":"↠","rArr;":"⇒","rarr;":"→","rcub;":"}","rdca;":"⤷","rdsh;":"↳","real;":"ℜ","rect;":"▭","rHar;":"⥤","rhov;":"ϱ","ring;":"˚","Ropf;":"ℝ","ropf;":"𝕣","rpar;":")","Rscr;":"ℛ","rscr;":"𝓇","rsqb;":"]","rtri;":"▹","scap;":"⪸","scnE;":"⪶","sdot;":"⋅","sect;":"§","semi;":";","sext;":"✶","SHcy;":"Ш","shcy;":"ш","sime;":"≃","simg;":"⪞","siml;":"⪝","smid;":"∣","smte;":"⪬","solb;":"⧄","Sopf;":"𝕊","sopf;":"𝕤","spar;":"∥","Sqrt;":"√","squf;":"▪","Sscr;":"𝒮","sscr;":"𝓈","Star;":"⋆","star;":"☆","subE;":"⫅","sube;":"⊆","succ;":"≻","sung;":"♪","sup1;":"¹","sup2;":"²","sup3;":"³","supE;":"⫆","supe;":"⊇",szlig:"ß","tbrk;":"⎴","tdot;":"⃛",THORN:"Þ",thorn:"þ",times:"×","tint;":"∭","toea;":"⤨","Topf;":"𝕋","topf;":"𝕥","tosa;":"⤩","trie;":"≜","Tscr;":"𝒯","tscr;":"𝓉","TScy;":"Ц","tscy;":"ц","Uarr;":"↟","uArr;":"⇑","uarr;":"↑",Ucirc:"Û",ucirc:"û","uHar;":"⥣","Uopf;":"𝕌","uopf;":"𝕦","Upsi;":"ϒ","upsi;":"υ","Uscr;":"𝒰","uscr;":"𝓊","utri;":"▵","Uuml;":"Ü","uuml;":"ü","vArr;":"⇕","varr;":"↕","Vbar;":"⫫","vBar;":"⫨","Vert;":"‖","vert;":"|","Vopf;":"𝕍","vopf;":"𝕧","Vscr;":"𝒱","vscr;":"𝓋","Wopf;":"𝕎","wopf;":"𝕨","Wscr;":"𝒲","wscr;":"𝓌","xcap;":"⋂","xcup;":"⋃","xmap;":"⟼","xnis;":"⋻","Xopf;":"𝕏","xopf;":"𝕩","Xscr;":"𝒳","xscr;":"𝓍","xvee;":"⋁","YAcy;":"Я","yacy;":"я","YIcy;":"Ї","yicy;":"ї","Yopf;":"𝕐","yopf;":"𝕪","Yscr;":"𝒴","yscr;":"𝓎","YUcy;":"Ю","yucy;":"ю","Yuml;":"Ÿ","yuml;":"ÿ","Zdot;":"Ż","zdot;":"ż","Zeta;":"Ζ","zeta;":"ζ","ZHcy;":"Ж","zhcy;":"ж","Zopf;":"ℤ","zopf;":"𝕫","Zscr;":"𝒵","zscr;":"𝓏","zwnj;":"‌",Aacute:"Á",aacute:"á","Acirc;":"Â","acirc;":"â","acute;":"´","AElig;":"Æ","aelig;":"æ",Agrave:"À",agrave:"à","aleph;":"ℵ","Alpha;":"Α","alpha;":"α","Amacr;":"Ā","amacr;":"ā","amalg;":"⨿","angle;":"∠","angrt;":"∟","angst;":"Å","Aogon;":"Ą","aogon;":"ą","Aring;":"Å","aring;":"å","asymp;":"≈",Atilde:"Ã",atilde:"ã","awint;":"⨑","bcong;":"≌","bdquo;":"„","bepsi;":"϶","blank;":"␣","blk12;":"▒","blk14;":"░","blk34;":"▓","block;":"█","boxDL;":"╗","boxDl;":"╖","boxdL;":"╕","boxdl;":"┐","boxDR;":"╔","boxDr;":"╓","boxdR;":"╒","boxdr;":"┌","boxHD;":"╦","boxHd;":"╤","boxhD;":"╥","boxhd;":"┬","boxHU;":"╩","boxHu;":"╧","boxhU;":"╨","boxhu;":"┴","boxUL;":"╝","boxUl;":"╜","boxuL;":"╛","boxul;":"┘","boxUR;":"╚","boxUr;":"╙","boxuR;":"╘","boxur;":"└","boxVH;":"╬","boxVh;":"╫","boxvH;":"╪","boxvh;":"┼","boxVL;":"╣","boxVl;":"╢","boxvL;":"╡","boxvl;":"┤","boxVR;":"╠","boxVr;":"╟","boxvR;":"╞","boxvr;":"├","Breve;":"˘","breve;":"˘",brvbar:"¦","bsemi;":"⁏","bsime;":"⋍","bsolb;":"⧅","bumpE;":"⪮","bumpe;":"≏","caret;":"⁁","caron;":"ˇ","ccaps;":"⩍",Ccedil:"Ç",ccedil:"ç","Ccirc;":"Ĉ","ccirc;":"ĉ","ccups;":"⩌","cedil;":"¸","check;":"✓","clubs;":"♣","Colon;":"∷","colon;":":","comma;":",","crarr;":"↵","Cross;":"⨯","cross;":"✗","csube;":"⫑","csupe;":"⫒","ctdot;":"⋯","cuepr;":"⋞","cuesc;":"⋟","cupor;":"⩅",curren:"¤","cuvee;":"⋎","cuwed;":"⋏","cwint;":"∱","Dashv;":"⫤","dashv;":"⊣","dblac;":"˝","ddarr;":"⇊","Delta;":"Δ","delta;":"δ","dharl;":"⇃","dharr;":"⇂","diams;":"♦","disin;":"⋲",divide:"÷","doteq;":"≐","dtdot;":"⋱","dtrif;":"▾","duarr;":"⇵","duhar;":"⥯",Eacute:"É",eacute:"é","Ecirc;":"Ê","ecirc;":"ê","eDDot;":"⩷","efDot;":"≒",Egrave:"È",egrave:"è","Emacr;":"Ē","emacr;":"ē","empty;":"∅","Eogon;":"Ę","eogon;":"ę","eplus;":"⩱","epsiv;":"ϵ","eqsim;":"≂","Equal;":"⩵","equiv;":"≡","erarr;":"⥱","erDot;":"≓","esdot;":"≐","exist;":"∃","fflig;":"ff","filig;":"fi","fjlig;":"fj","fllig;":"fl","fltns;":"▱","forkv;":"⫙",frac12:"½",frac14:"¼",frac34:"¾","frasl;":"⁄","frown;":"⌢","Gamma;":"Γ","gamma;":"γ","Gcirc;":"Ĝ","gcirc;":"ĝ","gescc;":"⪩","gimel;":"ℷ","gneqq;":"≩","gnsim;":"⋧","grave;":"`","gsime;":"⪎","gsiml;":"⪐","gtcir;":"⩺","gtdot;":"⋗","Hacek;":"ˇ","harrw;":"↭","Hcirc;":"Ĥ","hcirc;":"ĥ","hoarr;":"⇿",Iacute:"Í",iacute:"í","Icirc;":"Î","icirc;":"î","iexcl;":"¡",Igrave:"Ì",igrave:"ì","iiint;":"∭","iiota;":"℩","IJlig;":"IJ","ijlig;":"ij","Imacr;":"Ī","imacr;":"ī","image;":"ℑ","imath;":"ı","imped;":"Ƶ","infin;":"∞","Iogon;":"Į","iogon;":"į","iprod;":"⨼",iquest:"¿","isinE;":"⋹","isins;":"⋴","isinv;":"∈","Iukcy;":"І","iukcy;":"і","Jcirc;":"Ĵ","jcirc;":"ĵ","jmath;":"ȷ","Jukcy;":"Є","jukcy;":"є","Kappa;":"Κ","kappa;":"κ","lAarr;":"⇚","langd;":"⦑","laquo;":"«","larrb;":"⇤","lates;":"⪭︀","lBarr;":"⤎","lbarr;":"⤌","lbbrk;":"❲","lbrke;":"⦋","lceil;":"⌈","ldquo;":"“","lescc;":"⪨","lhard;":"↽","lharu;":"↼","lhblk;":"▄","llarr;":"⇇","lltri;":"◺","lneqq;":"≨","lnsim;":"⋦","loang;":"⟬","loarr;":"⇽","lobrk;":"⟦","lopar;":"⦅","lrarr;":"⇆","lrhar;":"⇋","lrtri;":"⊿","lsime;":"⪍","lsimg;":"⪏","lsquo;":"‘","ltcir;":"⩹","ltdot;":"⋖","ltrie;":"⊴","ltrif;":"◂","mdash;":"—","mDDot;":"∺","micro;":"µ",middot:"·","minus;":"−","mumap;":"⊸","nabla;":"∇","napid;":"≋̸","napos;":"ʼn","natur;":"♮","nbump;":"≎̸","ncong;":"≇","ndash;":"–","neArr;":"⇗","nearr;":"↗","nedot;":"≐̸","nesim;":"≂̸","ngeqq;":"≧̸","ngsim;":"≵","nhArr;":"⇎","nharr;":"↮","nhpar;":"⫲","nlArr;":"⇍","nlarr;":"↚","nleqq;":"≦̸","nless;":"≮","nlsim;":"≴","nltri;":"⋪","notin;":"∉","notni;":"∌","npart;":"∂̸","nprec;":"⊀","nrArr;":"⇏","nrarr;":"↛","nrtri;":"⋫","nsime;":"≄","nsmid;":"∤","nspar;":"∦","nsubE;":"⫅̸","nsube;":"⊈","nsucc;":"⊁","nsupE;":"⫆̸","nsupe;":"⊉",Ntilde:"Ñ",ntilde:"ñ","numsp;":" ","nvsim;":"∼⃒","nwArr;":"⇖","nwarr;":"↖",Oacute:"Ó",oacute:"ó","Ocirc;":"Ô","ocirc;":"ô","odash;":"⊝","OElig;":"Œ","oelig;":"œ","ofcir;":"⦿",Ograve:"Ò",ograve:"ò","ohbar;":"⦵","olarr;":"↺","olcir;":"⦾","oline;":"‾","Omacr;":"Ō","omacr;":"ō","Omega;":"Ω","omega;":"ω","operp;":"⦹","oplus;":"⊕","orarr;":"↻","order;":"ℴ",Oslash:"Ø",oslash:"ø",Otilde:"Õ",otilde:"õ","ovbar;":"⌽","parsl;":"⫽","phone;":"☎","plusb;":"⊞","pluse;":"⩲",plusmn:"±","pound;":"£","prcue;":"≼","Prime;":"″","prime;":"′","prnap;":"⪹","prsim;":"≾","quest;":"?","rAarr;":"⇛","radic;":"√","rangd;":"⦒","range;":"⦥","raquo;":"»","rarrb;":"⇥","rarrc;":"⤳","rarrw;":"↝","ratio;":"∶","RBarr;":"⤐","rBarr;":"⤏","rbarr;":"⤍","rbbrk;":"❳","rbrke;":"⦌","rceil;":"⌉","rdquo;":"”","reals;":"ℝ","rhard;":"⇁","rharu;":"⇀","rlarr;":"⇄","rlhar;":"⇌","rnmid;":"⫮","roang;":"⟭","roarr;":"⇾","robrk;":"⟧","ropar;":"⦆","rrarr;":"⇉","rsquo;":"’","rtrie;":"⊵","rtrif;":"▸","sbquo;":"‚","sccue;":"≽","Scirc;":"Ŝ","scirc;":"ŝ","scnap;":"⪺","scsim;":"≿","sdotb;":"⊡","sdote;":"⩦","seArr;":"⇘","searr;":"↘","setmn;":"∖","sharp;":"♯","Sigma;":"Σ","sigma;":"σ","simeq;":"≃","simgE;":"⪠","simlE;":"⪟","simne;":"≆","slarr;":"←","smile;":"⌣","smtes;":"⪬︀","sqcap;":"⊓","sqcup;":"⊔","sqsub;":"⊏","sqsup;":"⊐","srarr;":"→","starf;":"★","strns;":"¯","subnE;":"⫋","subne;":"⊊","supnE;":"⫌","supne;":"⊋","swArr;":"⇙","swarr;":"↙","szlig;":"ß","Theta;":"Θ","theta;":"θ","thkap;":"≈","THORN;":"Þ","thorn;":"þ","Tilde;":"∼","tilde;":"˜","times;":"×","TRADE;":"™","trade;":"™","trisb;":"⧍","TSHcy;":"Ћ","tshcy;":"ћ","twixt;":"≬",Uacute:"Ú",uacute:"ú","Ubrcy;":"Ў","ubrcy;":"ў","Ucirc;":"Û","ucirc;":"û","udarr;":"⇅","udhar;":"⥮",Ugrave:"Ù",ugrave:"ù","uharl;":"↿","uharr;":"↾","uhblk;":"▀","ultri;":"◸","Umacr;":"Ū","umacr;":"ū","Union;":"⋃","Uogon;":"Ų","uogon;":"ų","uplus;":"⊎","upsih;":"ϒ","UpTee;":"⊥","Uring;":"Ů","uring;":"ů","urtri;":"◹","utdot;":"⋰","utrif;":"▴","uuarr;":"⇈","varpi;":"ϖ","vBarv;":"⫩","VDash;":"⊫","Vdash;":"⊩","vDash;":"⊨","vdash;":"⊢","veeeq;":"≚","vltri;":"⊲","vnsub;":"⊂⃒","vnsup;":"⊃⃒","vprop;":"∝","vrtri;":"⊳","Wcirc;":"Ŵ","wcirc;":"ŵ","Wedge;":"⋀","wedge;":"∧","xcirc;":"◯","xdtri;":"▽","xhArr;":"⟺","xharr;":"⟷","xlArr;":"⟸","xlarr;":"⟵","xodot;":"⨀","xrArr;":"⟹","xrarr;":"⟶","xutri;":"△",Yacute:"Ý",yacute:"ý","Ycirc;":"Ŷ","ycirc;":"ŷ","Aacute;":"Á","aacute;":"á","Abreve;":"Ă","abreve;":"ă","Agrave;":"À","agrave;":"à","andand;":"⩕","angmsd;":"∡","angsph;":"∢","apacir;":"⩯","approx;":"≈","Assign;":"≔","Atilde;":"Ã","atilde;":"ã","barvee;":"⊽","Barwed;":"⌆","barwed;":"⌅","becaus;":"∵","bernou;":"ℬ","bigcap;":"⋂","bigcup;":"⋃","bigvee;":"⋁","bkarow;":"⤍","bottom;":"⊥","bowtie;":"⋈","boxbox;":"⧉","bprime;":"‵","brvbar;":"¦","bullet;":"•","Bumpeq;":"≎","bumpeq;":"≏","Cacute;":"Ć","cacute;":"ć","capand;":"⩄","capcap;":"⩋","capcup;":"⩇","capdot;":"⩀","Ccaron;":"Č","ccaron;":"č","Ccedil;":"Ç","ccedil;":"ç","circeq;":"≗","cirmid;":"⫯","Colone;":"⩴","colone;":"≔","commat;":"@","compfn;":"∘","Conint;":"∯","conint;":"∮","coprod;":"∐","copysr;":"℗","cularr;":"↶","CupCap;":"≍","cupcap;":"⩆","cupcup;":"⩊","cupdot;":"⊍","curarr;":"↷","curren;":"¤","cylcty;":"⌭","Dagger;":"‡","dagger;":"†","daleth;":"ℸ","Dcaron;":"Ď","dcaron;":"ď","dfisht;":"⥿","divide;":"÷","divonx;":"⋇","dlcorn;":"⌞","dlcrop;":"⌍","dollar;":"$","DotDot;":"⃜","drcorn;":"⌟","drcrop;":"⌌","Dstrok;":"Đ","dstrok;":"đ","Eacute;":"É","eacute;":"é","easter;":"⩮","Ecaron;":"Ě","ecaron;":"ě","ecolon;":"≕","Egrave;":"È","egrave;":"è","egsdot;":"⪘","elsdot;":"⪗","emptyv;":"∅","emsp13;":" ","emsp14;":" ","eparsl;":"⧣","eqcirc;":"≖","equals;":"=","equest;":"≟","Exists;":"∃","female;":"♀","ffilig;":"ffi","ffllig;":"ffl","ForAll;":"∀","forall;":"∀","frac12;":"½","frac13;":"⅓","frac14;":"¼","frac15;":"⅕","frac16;":"⅙","frac18;":"⅛","frac23;":"⅔","frac25;":"⅖","frac34;":"¾","frac35;":"⅗","frac38;":"⅜","frac45;":"⅘","frac56;":"⅚","frac58;":"⅝","frac78;":"⅞","gacute;":"ǵ","Gammad;":"Ϝ","gammad;":"ϝ","Gbreve;":"Ğ","gbreve;":"ğ","Gcedil;":"Ģ","gesdot;":"⪀","gesles;":"⪔","gtlPar;":"⦕","gtrarr;":"⥸","gtrdot;":"⋗","gtrsim;":"≳","hairsp;":" ","hamilt;":"ℋ","HARDcy;":"Ъ","hardcy;":"ъ","hearts;":"♥","hellip;":"…","hercon;":"⊹","homtht;":"∻","horbar;":"―","hslash;":"ℏ","Hstrok;":"Ħ","hstrok;":"ħ","hybull;":"⁃","hyphen;":"‐","Iacute;":"Í","iacute;":"í","Igrave;":"Ì","igrave;":"ì","iiiint;":"⨌","iinfin;":"⧜","incare;":"℅","inodot;":"ı","intcal;":"⊺","iquest;":"¿","isinsv;":"⋳","Itilde;":"Ĩ","itilde;":"ĩ","Jsercy;":"Ј","jsercy;":"ј","kappav;":"ϰ","Kcedil;":"Ķ","kcedil;":"ķ","kgreen;":"ĸ","Lacute;":"Ĺ","lacute;":"ĺ","lagran;":"ℒ","Lambda;":"Λ","lambda;":"λ","langle;":"⟨","larrfs;":"⤝","larrhk;":"↩","larrlp;":"↫","larrpl;":"⤹","larrtl;":"↢","lAtail;":"⤛","latail;":"⤙","lbrace;":"{","lbrack;":"[","Lcaron;":"Ľ","lcaron;":"ľ","Lcedil;":"Ļ","lcedil;":"ļ","ldquor;":"„","lesdot;":"⩿","lesges;":"⪓","lfisht;":"⥼","lfloor;":"⌊","lharul;":"⥪","llhard;":"⥫","Lmidot;":"Ŀ","lmidot;":"ŀ","lmoust;":"⎰","loplus;":"⨭","lowast;":"∗","lowbar;":"_","lparlt;":"⦓","lrhard;":"⥭","lsaquo;":"‹","lsquor;":"‚","Lstrok;":"Ł","lstrok;":"ł","lthree;":"⋋","ltimes;":"⋉","ltlarr;":"⥶","ltrPar;":"⦖","mapsto;":"↦","marker;":"▮","mcomma;":"⨩","midast;":"*","midcir;":"⫰","middot;":"·","minusb;":"⊟","minusd;":"∸","mnplus;":"∓","models;":"⊧","mstpos;":"∾","Nacute;":"Ń","nacute;":"ń","nbumpe;":"≏̸","Ncaron;":"Ň","ncaron;":"ň","Ncedil;":"Ņ","ncedil;":"ņ","nearhk;":"⤤","nequiv;":"≢","nesear;":"⤨","nexist;":"∄","nltrie;":"⋬","notinE;":"⋹̸","nparsl;":"⫽⃥","nprcue;":"⋠","nrarrc;":"⤳̸","nrarrw;":"↝̸","nrtrie;":"⋭","nsccue;":"⋡","nsimeq;":"≄","Ntilde;":"Ñ","ntilde;":"ñ","numero;":"№","nVDash;":"⊯","nVdash;":"⊮","nvDash;":"⊭","nvdash;":"⊬","nvHarr;":"⤄","nvlArr;":"⤂","nvrArr;":"⤃","nwarhk;":"⤣","nwnear;":"⤧","Oacute;":"Ó","oacute;":"ó","Odblac;":"Ő","odblac;":"ő","odsold;":"⦼","Ograve;":"Ò","ograve;":"ò","ominus;":"⊖","origof;":"⊶","Oslash;":"Ø","oslash;":"ø","Otilde;":"Õ","otilde;":"õ","Otimes;":"⨷","otimes;":"⊗","parsim;":"⫳","percnt;":"%","period;":".","permil;":"‰","phmmat;":"ℳ","planck;":"ℏ","plankv;":"ℏ","plusdo;":"∔","plusdu;":"⨥","plusmn;":"±","preceq;":"⪯","primes;":"ℙ","prnsim;":"⋨","propto;":"∝","prurel;":"⊰","puncsp;":" ","qprime;":"⁗","Racute;":"Ŕ","racute;":"ŕ","rangle;":"⟩","rarrap;":"⥵","rarrfs;":"⤞","rarrhk;":"↪","rarrlp;":"↬","rarrpl;":"⥅","Rarrtl;":"⤖","rarrtl;":"↣","rAtail;":"⤜","ratail;":"⤚","rbrace;":"}","rbrack;":"]","Rcaron;":"Ř","rcaron;":"ř","Rcedil;":"Ŗ","rcedil;":"ŗ","rdquor;":"”","rfisht;":"⥽","rfloor;":"⌋","rharul;":"⥬","rmoust;":"⎱","roplus;":"⨮","rpargt;":"⦔","rsaquo;":"›","rsquor;":"’","rthree;":"⋌","rtimes;":"⋊","Sacute;":"Ś","sacute;":"ś","Scaron;":"Š","scaron;":"š","Scedil;":"Ş","scedil;":"ş","scnsim;":"⋩","searhk;":"⤥","seswar;":"⤩","sfrown;":"⌢","SHCHcy;":"Щ","shchcy;":"щ","sigmaf;":"ς","sigmav;":"ς","simdot;":"⩪","smashp;":"⨳","SOFTcy;":"Ь","softcy;":"ь","solbar;":"⌿","spades;":"♠","sqcaps;":"⊓︀","sqcups;":"⊔︀","sqsube;":"⊑","sqsupe;":"⊒","Square;":"□","square;":"□","squarf;":"▪","ssetmn;":"∖","ssmile;":"⌣","sstarf;":"⋆","subdot;":"⪽","Subset;":"⋐","subset;":"⊂","subsim;":"⫇","subsub;":"⫕","subsup;":"⫓","succeq;":"⪰","supdot;":"⪾","Supset;":"⋑","supset;":"⊃","supsim;":"⫈","supsub;":"⫔","supsup;":"⫖","swarhk;":"⤦","swnwar;":"⤪","target;":"⌖","Tcaron;":"Ť","tcaron;":"ť","Tcedil;":"Ţ","tcedil;":"ţ","telrec;":"⌕","there4;":"∴","thetav;":"ϑ","thinsp;":" ","thksim;":"∼","timesb;":"⊠","timesd;":"⨰","topbot;":"⌶","topcir;":"⫱","tprime;":"‴","tridot;":"◬","Tstrok;":"Ŧ","tstrok;":"ŧ","Uacute;":"Ú","uacute;":"ú","Ubreve;":"Ŭ","ubreve;":"ŭ","Udblac;":"Ű","udblac;":"ű","ufisht;":"⥾","Ugrave;":"Ù","ugrave;":"ù","ulcorn;":"⌜","ulcrop;":"⌏","urcorn;":"⌝","urcrop;":"⌎","Utilde;":"Ũ","utilde;":"ũ","vangrt;":"⦜","varphi;":"ϕ","varrho;":"ϱ","Vdashl;":"⫦","veebar;":"⊻","vellip;":"⋮","Verbar;":"‖","verbar;":"|","vsubnE;":"⫋︀","vsubne;":"⊊︀","vsupnE;":"⫌︀","vsupne;":"⊋︀","Vvdash;":"⊪","wedbar;":"⩟","wedgeq;":"≙","weierp;":"℘","wreath;":"≀","xoplus;":"⨁","xotime;":"⨂","xsqcup;":"⨆","xuplus;":"⨄","xwedge;":"⋀","Yacute;":"Ý","yacute;":"ý","Zacute;":"Ź","zacute;":"ź","Zcaron;":"Ž","zcaron;":"ž","zeetrf;":"ℨ","alefsym;":"ℵ","angrtvb;":"⊾","angzarr;":"⍼","asympeq;":"≍","backsim;":"∽","Because;":"∵","because;":"∵","bemptyv;":"⦰","between;":"≬","bigcirc;":"◯","bigodot;":"⨀","bigstar;":"★","bnequiv;":"≡⃥","boxplus;":"⊞","Cayleys;":"ℭ","Cconint;":"∰","ccupssm;":"⩐","Cedilla;":"¸","cemptyv;":"⦲","cirscir;":"⧂","coloneq;":"≔","congdot;":"⩭","cudarrl;":"⤸","cudarrr;":"⤵","cularrp;":"⤽","curarrm;":"⤼","dbkarow;":"⤏","ddagger;":"‡","ddotseq;":"⩷","demptyv;":"⦱","Diamond;":"⋄","diamond;":"⋄","digamma;":"ϝ","dotplus;":"∔","DownTee;":"⊤","dwangle;":"⦦","Element;":"∈","Epsilon;":"Ε","epsilon;":"ε","eqcolon;":"≕","equivDD;":"⩸","gesdoto;":"⪂","gtquest;":"⩼","gtrless;":"≷","harrcir;":"⥈","Implies;":"⇒","intprod;":"⨼","isindot;":"⋵","larrbfs;":"⤟","larrsim;":"⥳","lbrksld;":"⦏","lbrkslu;":"⦍","ldrdhar;":"⥧","LeftTee;":"⊣","lesdoto;":"⪁","lessdot;":"⋖","lessgtr;":"≶","lesssim;":"≲","lotimes;":"⨴","lozenge;":"◊","ltquest;":"⩻","luruhar;":"⥦","maltese;":"✠","minusdu;":"⨪","napprox;":"≉","natural;":"♮","nearrow;":"↗","NewLine;":` +`,"nexists;":"∄","NoBreak;":"⁠","notinva;":"∉","notinvb;":"⋷","notinvc;":"⋶","NotLess;":"≮","notniva;":"∌","notnivb;":"⋾","notnivc;":"⋽","npolint;":"⨔","npreceq;":"⪯̸","nsqsube;":"⋢","nsqsupe;":"⋣","nsubset;":"⊂⃒","nsucceq;":"⪰̸","nsupset;":"⊃⃒","nvinfin;":"⧞","nvltrie;":"⊴⃒","nvrtrie;":"⊵⃒","nwarrow;":"↖","olcross;":"⦻","Omicron;":"Ο","omicron;":"ο","orderof;":"ℴ","orslope;":"⩗","OverBar;":"‾","pertenk;":"‱","planckh;":"ℎ","pluscir;":"⨢","plussim;":"⨦","plustwo;":"⨧","precsim;":"≾","Product;":"∏","quatint;":"⨖","questeq;":"≟","rarrbfs;":"⤠","rarrsim;":"⥴","rbrksld;":"⦎","rbrkslu;":"⦐","rdldhar;":"⥩","realine;":"ℛ","rotimes;":"⨵","ruluhar;":"⥨","searrow;":"↘","simplus;":"⨤","simrarr;":"⥲","subedot;":"⫃","submult;":"⫁","subplus;":"⪿","subrarr;":"⥹","succsim;":"≿","supdsub;":"⫘","supedot;":"⫄","suphsol;":"⟉","suphsub;":"⫗","suplarr;":"⥻","supmult;":"⫂","supplus;":"⫀","swarrow;":"↙","topfork;":"⫚","triplus;":"⨹","tritime;":"⨻","UpArrow;":"↑","Uparrow;":"⇑","uparrow;":"↑","Upsilon;":"Υ","upsilon;":"υ","uwangle;":"⦧","vzigzag;":"⦚","zigrarr;":"⇝","andslope;":"⩘","angmsdaa;":"⦨","angmsdab;":"⦩","angmsdac;":"⦪","angmsdad;":"⦫","angmsdae;":"⦬","angmsdaf;":"⦭","angmsdag;":"⦮","angmsdah;":"⦯","angrtvbd;":"⦝","approxeq;":"≊","awconint;":"∳","backcong;":"≌","barwedge;":"⌅","bbrktbrk;":"⎶","bigoplus;":"⨁","bigsqcup;":"⨆","biguplus;":"⨄","bigwedge;":"⋀","boxminus;":"⊟","boxtimes;":"⊠","bsolhsub;":"⟈","capbrcup;":"⩉","circledR;":"®","circledS;":"Ⓢ","cirfnint;":"⨐","clubsuit;":"♣","cupbrcap;":"⩈","curlyvee;":"⋎","cwconint;":"∲","DDotrahd;":"⤑","doteqdot;":"≑","DotEqual;":"≐","dotminus;":"∸","drbkarow;":"⤐","dzigrarr;":"⟿","elinters;":"⏧","emptyset;":"∅","eqvparsl;":"⧥","fpartint;":"⨍","geqslant;":"⩾","gesdotol;":"⪄","gnapprox;":"⪊","hksearow;":"⤥","hkswarow;":"⤦","imagline;":"ℐ","imagpart;":"ℑ","infintie;":"⧝","integers;":"ℤ","Integral;":"∫","intercal;":"⊺","intlarhk;":"⨗","laemptyv;":"⦴","ldrushar;":"⥋","leqslant;":"⩽","lesdotor;":"⪃","LessLess;":"⪡","llcorner;":"⌞","lnapprox;":"⪉","lrcorner;":"⌟","lurdshar;":"⥊","mapstoup;":"↥","multimap;":"⊸","naturals;":"ℕ","ncongdot;":"⩭̸","NotEqual;":"≠","notindot;":"⋵̸","NotTilde;":"≁","otimesas;":"⨶","parallel;":"∥","PartialD;":"∂","plusacir;":"⨣","pointint;":"⨕","Precedes;":"≺","precneqq;":"⪵","precnsim;":"⋨","profalar;":"⌮","profline;":"⌒","profsurf;":"⌓","raemptyv;":"⦳","realpart;":"ℜ","RightTee;":"⊢","rppolint;":"⨒","rtriltri;":"⧎","scpolint;":"⨓","setminus;":"∖","shortmid;":"∣","smeparsl;":"⧤","sqsubset;":"⊏","sqsupset;":"⊐","subseteq;":"⊆","Succeeds;":"≻","succneqq;":"⪶","succnsim;":"⋩","SuchThat;":"∋","Superset;":"⊃","supseteq;":"⊇","thetasym;":"ϑ","thicksim;":"∼","timesbar;":"⨱","triangle;":"▵","triminus;":"⨺","trpezium;":"⏢","Uarrocir;":"⥉","ulcorner;":"⌜","UnderBar;":"_","urcorner;":"⌝","varkappa;":"ϰ","varsigma;":"ς","vartheta;":"ϑ","backprime;":"‵","backsimeq;":"⋍","Backslash;":"∖","bigotimes;":"⨂","CenterDot;":"·","centerdot;":"·","checkmark;":"✓","CircleDot;":"⊙","complexes;":"ℂ","Congruent;":"≡","Coproduct;":"∐","dotsquare;":"⊡","DoubleDot;":"¨","DownArrow;":"↓","Downarrow;":"⇓","downarrow;":"↓","DownBreve;":"̑","gtrapprox;":"⪆","gtreqless;":"⋛","gvertneqq;":"≩︀","heartsuit;":"♥","HumpEqual;":"≏","LeftArrow;":"←","Leftarrow;":"⇐","leftarrow;":"←","LeftFloor;":"⌊","lesseqgtr;":"⋚","LessTilde;":"≲","lvertneqq;":"≨︀","Mellintrf;":"ℳ","MinusPlus;":"∓","ngeqslant;":"⩾̸","nleqslant;":"⩽̸","NotCupCap;":"≭","NotExists;":"∄","NotSubset;":"⊂⃒","nparallel;":"∦","nshortmid;":"∤","nsubseteq;":"⊈","nsupseteq;":"⊉","OverBrace;":"⏞","pitchfork;":"⋔","PlusMinus;":"±","rationals;":"ℚ","spadesuit;":"♠","subseteqq;":"⫅","subsetneq;":"⊊","supseteqq;":"⫆","supsetneq;":"⊋","Therefore;":"∴","therefore;":"∴","ThinSpace;":" ","triangleq;":"≜","TripleDot;":"⃛","UnionPlus;":"⊎","varpropto;":"∝","Bernoullis;":"ℬ","circledast;":"⊛","CirclePlus;":"⊕","complement;":"∁","curlywedge;":"⋏","eqslantgtr;":"⪖","EqualTilde;":"≂","Fouriertrf;":"ℱ","gtreqqless;":"⪌","ImaginaryI;":"ⅈ","Laplacetrf;":"ℒ","LeftVector;":"↼","lessapprox;":"⪅","lesseqqgtr;":"⪋","Lleftarrow;":"⇚","lmoustache;":"⎰","longmapsto;":"⟼","mapstodown;":"↧","mapstoleft;":"↤","nLeftarrow;":"⇍","nleftarrow;":"↚","NotElement;":"∉","NotGreater;":"≯","nsubseteqq;":"⫅̸","nsupseteqq;":"⫆̸","precapprox;":"⪷","Proportion;":"∷","RightArrow;":"→","Rightarrow;":"⇒","rightarrow;":"→","RightFloor;":"⌋","rmoustache;":"⎱","sqsubseteq;":"⊑","sqsupseteq;":"⊒","subsetneqq;":"⫋","succapprox;":"⪸","supsetneqq;":"⫌","ThickSpace;":"  ","TildeEqual;":"≃","TildeTilde;":"≈","UnderBrace;":"⏟","UpArrowBar;":"⤒","UpTeeArrow;":"↥","upuparrows;":"⇈","varepsilon;":"ϵ","varnothing;":"∅","backepsilon;":"϶","blacksquare;":"▪","circledcirc;":"⊚","circleddash;":"⊝","CircleMinus;":"⊖","CircleTimes;":"⊗","curlyeqprec;":"⋞","curlyeqsucc;":"⋟","diamondsuit;":"♦","eqslantless;":"⪕","Equilibrium;":"⇌","expectation;":"ℰ","GreaterLess;":"≷","LeftCeiling;":"⌈","LessGreater;":"≶","MediumSpace;":" ","NotLessLess;":"≪̸","NotPrecedes;":"⊀","NotSucceeds;":"⊁","NotSuperset;":"⊃⃒","nRightarrow;":"⇏","nrightarrow;":"↛","OverBracket;":"⎴","preccurlyeq;":"≼","precnapprox;":"⪹","quaternions;":"ℍ","RightVector;":"⇀","Rrightarrow;":"⇛","RuleDelayed;":"⧴","SmallCircle;":"∘","SquareUnion;":"⊔","straightphi;":"ϕ","SubsetEqual;":"⊆","succcurlyeq;":"≽","succnapprox;":"⪺","thickapprox;":"≈","UpDownArrow;":"↕","Updownarrow;":"⇕","updownarrow;":"↕","VerticalBar;":"∣","blacklozenge;":"⧫","DownArrowBar;":"⤓","DownTeeArrow;":"↧","ExponentialE;":"ⅇ","exponentiale;":"ⅇ","GreaterEqual;":"≥","GreaterTilde;":"≳","HilbertSpace;":"ℋ","HumpDownHump;":"≎","Intersection;":"⋂","LeftArrowBar;":"⇤","LeftTeeArrow;":"↤","LeftTriangle;":"⊲","LeftUpVector;":"↿","NotCongruent;":"≢","NotHumpEqual;":"≏̸","NotLessEqual;":"≰","NotLessTilde;":"≴","Proportional;":"∝","RightCeiling;":"⌉","risingdotseq;":"≓","RoundImplies;":"⥰","ShortUpArrow;":"↑","SquareSubset;":"⊏","triangledown;":"▿","triangleleft;":"◃","UnderBracket;":"⎵","varsubsetneq;":"⊊︀","varsupsetneq;":"⊋︀","VerticalLine;":"|","ApplyFunction;":"⁡","bigtriangleup;":"△","blacktriangle;":"▴","DifferentialD;":"ⅆ","divideontimes;":"⋇","DoubleLeftTee;":"⫤","DoubleUpArrow;":"⇑","fallingdotseq;":"≒","hookleftarrow;":"↩","leftarrowtail;":"↢","leftharpoonup;":"↼","LeftTeeVector;":"⥚","LeftVectorBar;":"⥒","LessFullEqual;":"≦","LongLeftArrow;":"⟵","Longleftarrow;":"⟸","longleftarrow;":"⟵","looparrowleft;":"↫","measuredangle;":"∡","NotEqualTilde;":"≂̸","NotTildeEqual;":"≄","NotTildeTilde;":"≉","ntriangleleft;":"⋪","Poincareplane;":"ℌ","PrecedesEqual;":"⪯","PrecedesTilde;":"≾","RightArrowBar;":"⇥","RightTeeArrow;":"↦","RightTriangle;":"⊳","RightUpVector;":"↾","shortparallel;":"∥","smallsetminus;":"∖","SucceedsEqual;":"⪰","SucceedsTilde;":"≿","SupersetEqual;":"⊇","triangleright;":"▹","UpEquilibrium;":"⥮","upharpoonleft;":"↿","varsubsetneqq;":"⫋︀","varsupsetneqq;":"⫌︀","VerticalTilde;":"≀","VeryThinSpace;":" ","curvearrowleft;":"↶","DiacriticalDot;":"˙","doublebarwedge;":"⌆","DoubleRightTee;":"⊨","downdownarrows;":"⇊","DownLeftVector;":"↽","GreaterGreater;":"⪢","hookrightarrow;":"↪","HorizontalLine;":"─","InvisibleComma;":"⁣","InvisibleTimes;":"⁢","LeftDownVector;":"⇃","leftleftarrows;":"⇇","LeftRightArrow;":"↔","Leftrightarrow;":"⇔","leftrightarrow;":"↔","leftthreetimes;":"⋋","LessSlantEqual;":"⩽","LongRightArrow;":"⟶","Longrightarrow;":"⟹","longrightarrow;":"⟶","looparrowright;":"↬","LowerLeftArrow;":"↙","NestedLessLess;":"≪","NotGreaterLess;":"≹","NotLessGreater;":"≸","NotSubsetEqual;":"⊈","NotVerticalBar;":"∤","nshortparallel;":"∦","ntriangleright;":"⋫","OpenCurlyQuote;":"‘","ReverseElement;":"∋","rightarrowtail;":"↣","rightharpoonup;":"⇀","RightTeeVector;":"⥛","RightVectorBar;":"⥓","ShortDownArrow;":"↓","ShortLeftArrow;":"←","SquareSuperset;":"⊐","TildeFullEqual;":"≅","trianglelefteq;":"⊴","upharpoonright;":"↾","UpperLeftArrow;":"↖","ZeroWidthSpace;":"​","bigtriangledown;":"▽","circlearrowleft;":"↺","CloseCurlyQuote;":"’","ContourIntegral;":"∮","curvearrowright;":"↷","DoubleDownArrow;":"⇓","DoubleLeftArrow;":"⇐","downharpoonleft;":"⇃","DownRightVector;":"⇁","leftharpoondown;":"↽","leftrightarrows;":"⇆","LeftRightVector;":"⥎","LeftTriangleBar;":"⧏","LeftUpTeeVector;":"⥠","LeftUpVectorBar;":"⥘","LowerRightArrow;":"↘","nLeftrightarrow;":"⇎","nleftrightarrow;":"↮","NotGreaterEqual;":"≱","NotGreaterTilde;":"≵","NotHumpDownHump;":"≎̸","NotLeftTriangle;":"⋪","NotSquareSubset;":"⊏̸","ntrianglelefteq;":"⋬","OverParenthesis;":"⏜","RightDownVector;":"⇂","rightleftarrows;":"⇄","rightsquigarrow;":"↝","rightthreetimes;":"⋌","ShortRightArrow;":"→","straightepsilon;":"ϵ","trianglerighteq;":"⊵","UpperRightArrow;":"↗","vartriangleleft;":"⊲","circlearrowright;":"↻","DiacriticalAcute;":"´","DiacriticalGrave;":"`","DiacriticalTilde;":"˜","DoubleRightArrow;":"⇒","DownArrowUpArrow;":"⇵","downharpoonright;":"⇂","EmptySmallSquare;":"◻","GreaterEqualLess;":"⋛","GreaterFullEqual;":"≧","LeftAngleBracket;":"⟨","LeftUpDownVector;":"⥑","LessEqualGreater;":"⋚","NonBreakingSpace;":" ","NotPrecedesEqual;":"⪯̸","NotRightTriangle;":"⋫","NotSucceedsEqual;":"⪰̸","NotSucceedsTilde;":"≿̸","NotSupersetEqual;":"⊉","ntrianglerighteq;":"⋭","rightharpoondown;":"⇁","rightrightarrows;":"⇉","RightTriangleBar;":"⧐","RightUpTeeVector;":"⥜","RightUpVectorBar;":"⥔","twoheadleftarrow;":"↞","UnderParenthesis;":"⏝","UpArrowDownArrow;":"⇅","vartriangleright;":"⊳","blacktriangledown;":"▾","blacktriangleleft;":"◂","DoubleUpDownArrow;":"⇕","DoubleVerticalBar;":"∥","DownLeftTeeVector;":"⥞","DownLeftVectorBar;":"⥖","FilledSmallSquare;":"◼","GreaterSlantEqual;":"⩾","LeftDoubleBracket;":"⟦","LeftDownTeeVector;":"⥡","LeftDownVectorBar;":"⥙","leftrightharpoons;":"⇋","LeftTriangleEqual;":"⊴","NegativeThinSpace;":"​","NotGreaterGreater;":"≫̸","NotLessSlantEqual;":"⩽̸","NotNestedLessLess;":"⪡̸","NotReverseElement;":"∌","NotSquareSuperset;":"⊐̸","NotTildeFullEqual;":"≇","RightAngleBracket;":"⟩","rightleftharpoons;":"⇌","RightUpDownVector;":"⥏","SquareSubsetEqual;":"⊑","twoheadrightarrow;":"↠","VerticalSeparator;":"❘","blacktriangleright;":"▸","DownRightTeeVector;":"⥟","DownRightVectorBar;":"⥗","LongLeftRightArrow;":"⟷","Longleftrightarrow;":"⟺","longleftrightarrow;":"⟷","NegativeThickSpace;":"​","NotLeftTriangleBar;":"⧏̸","PrecedesSlantEqual;":"≼","ReverseEquilibrium;":"⇋","RightDoubleBracket;":"⟧","RightDownTeeVector;":"⥝","RightDownVectorBar;":"⥕","RightTriangleEqual;":"⊵","SquareIntersection;":"⊓","SucceedsSlantEqual;":"≽","DoubleLongLeftArrow;":"⟸","DownLeftRightVector;":"⥐","LeftArrowRightArrow;":"⇆","leftrightsquigarrow;":"↭","NegativeMediumSpace;":"​","NotGreaterFullEqual;":"≧̸","NotRightTriangleBar;":"⧐̸","RightArrowLeftArrow;":"⇄","SquareSupersetEqual;":"⊒","CapitalDifferentialD;":"ⅅ","DoubleLeftRightArrow;":"⇔","DoubleLongRightArrow;":"⟹","EmptyVerySmallSquare;":"▫","NestedGreaterGreater;":"≫","NotDoubleVerticalBar;":"∦","NotGreaterSlantEqual;":"⩾̸","NotLeftTriangleEqual;":"⋬","NotSquareSubsetEqual;":"⋢","OpenCurlyDoubleQuote;":"“","ReverseUpEquilibrium;":"⥯","CloseCurlyDoubleQuote;":"”","DoubleContourIntegral;":"∯","FilledVerySmallSquare;":"▪","NegativeVeryThinSpace;":"​","NotPrecedesSlantEqual;":"⋠","NotRightTriangleEqual;":"⋭","NotSucceedsSlantEqual;":"⋡","DiacriticalDoubleAcute;":"˝","NotSquareSupersetEqual;":"⋣","NotNestedGreaterGreater;":"⪢̸","ClockwiseContourIntegral;":"∲","DoubleLongLeftRightArrow;":"⟺","CounterClockwiseContourIntegral;":"∳"};let A4;const tEe=(n,e)=>{let t=0;const i=n.length;let s="";function r(o){t+=o,n=n.slice(o)}for(;t<i;){const o=/&(?:#x?)?/i.exec(n);if(!o||t+o.index>=i){const a=i-t;s+=n.slice(0,a),r(a);break}if(s+=n.slice(0,o.index),r(o.index),o[0]==="&"){let a="",l;if(/[0-9a-z]/i.test(n[1])){A4||(A4=Object.keys(qZ).reduce((c,u)=>Math.max(c,u.length),0));for(let c=A4;!l&&c>0;--c)a=n.slice(1,1+c),l=qZ[a];if(l){const c=a.endsWith(";");e&&!c&&/[=a-z0-9]/i.test(n[a.length+1]||"")?(s+="&"+a,r(1+a.length)):(s+=l,r(1+a.length))}else s+="&"+a,r(1+a.length)}else s+="&",r(1)}else{const a=o[0]==="&#x",c=(a?/^&#x([0-9a-f]+);?/i:/^&#([0-9]+);?/).exec(n);if(!c)s+=o[0],r(o[0].length);else{let u=Number.parseInt(c[1],a?16:10);u===0||u>1114111||u>=55296&&u<=57343?u=65533:u>=64976&&u<=65007||(u&65534)===65534||(u>=1&&u<=8||u===11||u>=13&&u<=31||u>=127&&u<=159)&&(u=iEe[u]||u),s+=String.fromCodePoint(u),r(c[0].length)}}}return s},iEe={128:8364,130:8218,131:402,132:8222,133:8230,134:8224,135:8225,136:710,137:8240,138:352,139:8249,140:338,142:381,145:8216,146:8217,147:8220,148:8221,149:8226,150:8211,151:8212,152:732,153:8482,154:353,155:8250,156:339,158:382,159:376},nEe=_o("style,iframe,script,noscript",!0),sy={isVoidTag:xae,isNativeTag:n=>BSe(n)||WSe(n),isPreTag:n=>n==="pre",decodeEntities:tEe,isBuiltInComponent:n=>{if(gu(n,"Transition"))return _v;if(gu(n,"TransitionGroup"))return nE},getNamespace(n,e){let t=e?e.ns:0;if(e&&t===2)if(e.tag==="annotation-xml"){if(n==="svg")return 1;e.props.some(i=>i.type===6&&i.name==="encoding"&&i.value!=null&&(i.value.content==="text/html"||i.value.content==="application/xhtml+xml"))&&(t=0)}else/^m(?:[ions]|text)$/.test(e.tag)&&n!=="mglyph"&&n!=="malignmark"&&(t=0);else e&&t===1&&(e.tag==="foreignObject"||e.tag==="desc"||e.tag==="title")&&(t=0);if(t===0){if(n==="svg")return 1;if(n==="math")return 2}return t},getTextMode({tag:n,ns:e}){if(e===0){if(n==="textarea"||n==="title")return 1;if(nEe(n))return 2}return 0}},Oz=n=>{n.type===1&&n.props.forEach((e,t)=>{e.type===6&&e.name==="style"&&e.value&&(n.props[t]={type:7,name:"bind",arg:ct("style",!0,e.loc),exp:sEe(e.value.content,e.loc),modifiers:[],loc:e.loc})})},sEe=(n,e)=>{const t=kae(n);return ct(JSON.stringify(t),!1,e,3)};function No(n,e){return hn(n,e,rEe)}const rEe={53:"v-html is missing expression.",54:"v-html will override element children.",55:"v-text is missing expression.",56:"v-text will override element children.",57:"v-model can only be used on <input>, <textarea> and <select> elements.",58:"v-model argument is not supported on plain elements.",59:"v-model cannot be used on file inputs since they are read-only. Use a v-on:change listener instead.",60:"Unnecessary value binding used alongside v-model. It will interfere with v-model's behavior.",61:"v-show is missing expression.",62:"<Transition> expects exactly one child element or component.",63:"Tags with side effect (<script> and <style>) are ignored in client component templates."},oEe=(n,e,t)=>{const{exp:i,loc:s}=n;return i||t.onError(No(53,s)),e.children.length&&(t.onError(No(54,s)),e.children.length=0),{props:[En(ct("innerHTML",!0,s),i||ct("",!0))]}},aEe=(n,e,t)=>{const{exp:i,loc:s}=n;return i||t.onError(No(55,s)),e.children.length&&(t.onError(No(56,s)),e.children.length=0),{props:[En(ct("textContent",!0),i?bl(i,t)>0?i:$t(t.helperString(Zx),[i],s):ct("",!0))]}},lEe=(n,e,t)=>{const i=TM(n,e,t);if(!i.props.length||e.tagType===1)return i;n.arg&&t.onError(No(58,n.arg.loc));function s(){const a=kr(e,"bind");a&&Dh(a.arg,"value")&&t.onError(No(60,a.loc))}const{tag:r}=e,o=t.isCustomElement(r);if(r==="input"||r==="textarea"||r==="select"||o){let a=Nz,l=!1;if(r==="input"||o){const c=ja(e,"type");if(c){if(c.type===7)a=XN;else if(c.value)switch(c.value.content){case"radio":a=Iz;break;case"checkbox":a=Tz;break;case"file":l=!0,t.onError(No(59,n.loc));break;default:s();break}}else _M(e)?a=XN:s()}else r==="select"?a=Az:s();l||(i.needRuntime=t.helper(a))}else t.onError(No(57,n.loc));return i.props=i.props.filter(a=>!(a.key.type===4&&a.key.content==="modelValue")),i},cEe=_o("passive,once,capture"),uEe=_o("stop,prevent,self,ctrl,shift,alt,meta,exact,middle"),hEe=_o("left,right"),Nle=_o("onkeyup,onkeydown,onkeypress",!0),dEe=(n,e,t,i)=>{const s=[],r=[],o=[];for(let a=0;a<e.length;a++){const l=e[a];cEe(l)?o.push(l):hEe(l)?so(n)?Nle(n.content)?s.push(l):r.push(l):(s.push(l),r.push(l)):uEe(l)?r.push(l):s.push(l)}return{keyModifiers:s,nonKeyModifiers:r,eventOptionModifiers:o}},KZ=(n,e)=>so(n)&&n.content.toLowerCase()==="onclick"?ct(e,!0):n.type!==4?io(["(",n,`) === "onClick" ? "${e}" : (`,n,")"]):n,fEe=(n,e,t)=>IM(n,e,t,i=>{const{modifiers:s}=n;if(!s.length)return i;let{key:r,value:o}=i.props[0];const{keyModifiers:a,nonKeyModifiers:l,eventOptionModifiers:c}=dEe(r,s,t,n.loc);if(l.includes("right")&&(r=KZ(r,"onContextmenu")),l.includes("middle")&&(r=KZ(r,"onMouseup")),l.length&&(o=$t(t.helper(Pz),[o,JSON.stringify(l)])),a.length&&(!so(r)||Nle(r.content))&&(o=$t(t.helper(Rz),[o,JSON.stringify(a)])),c.length){const u=c.map(Wp).join("");r=so(r)?ct(`${r.content}${u}`,!0):io(["(",r,`) + "${u}"`])}return{props:[En(r,o)]}}),gEe=(n,e,t)=>{const{exp:i,loc:s}=n;return i||t.onError(No(61,s)),{props:[],needRuntime:t.helper(Mz)}},pEe=(n,e)=>{if(n.type===1&&n.tagType===1&&e.isBuiltInComponent(n.tag)===_v)return()=>{if(!n.children.length)return;Ale(n)&&e.onError(No(62,{start:n.children[0].loc.start,end:n.children[n.children.length-1].loc.end,source:""}));const i=n.children[0];if(i.type===1)for(const s of i.props)s.type===7&&s.name==="show"&&n.props.push({type:6,name:"persisted",value:void 0,loc:n.loc})}};function Ale(n){const e=n.children=n.children.filter(i=>i.type!==3&&!(i.type===2&&!i.content.trim())),t=e[0];return e.length!==1||t.type===11||t.type===9&&t.branches.some(Ale)}const mEe=/__VUE_EXP_START__(.*?)__VUE_EXP_END__/g,_Ee=(n,e,t)=>{if(e.scopes.vSlot>0)return;let i=0,s=0;const r=[],o=l=>{if(i>=20||s>=5){const c=$t(e.helper(iM),[JSON.stringify(r.map(u=>Fz(u,e)).join("")).replace(mEe,'" + $1 + "'),String(r.length)]);if(YZ(r[0],c,e),r.length>1){for(let h=1;h<r.length;h++)YZ(r[h],null,e);const u=r.length-1;return n.splice(l-r.length+1,u),u}}return 0};let a=0;for(;a<n.length;a++){const l=n[a];if(vEe(l)){const u=l,h=CEe(u);if(h){i+=h[0],s+=h[1],r.push(u);continue}}a-=o(a),i=0,s=0,r.length=0}o(a)},vEe=n=>(n.type===1&&n.tagType===0||n.type==12)&&n.codegenNode&&n.codegenNode.type===4&&n.codegenNode.hoisted,bEe=/^(data|aria)-/,GZ=(n,e)=>(e===0?USe(n):e===1?jSe(n):!1)||bEe.test(n),YZ=(n,e,t)=>{const i=n.codegenNode.hoisted;t.hoists[t.hoists.indexOf(i)]=e},yEe=_o("caption,thead,tr,th,tbody,td,tfoot,colgroup,col");function CEe(n){if(n.type===1&&yEe(n.tag))return!1;if(n.type===12)return[1,0];let e=1,t=n.props.length>0?1:0,i=!1;const s=()=>(i=!0,!1);function r(o){for(let a=0;a<o.props.length;a++){const l=o.props[a];if(l.type===6&&!GZ(l.name,o.ns)||l.type===7&&l.name==="bind"&&(l.arg&&(l.arg.type===8||l.arg.isStatic&&!GZ(l.arg.content,o.ns))||l.exp&&(l.exp.type===8||l.exp.constType<3)))return s()}for(let a=0;a<o.children.length;a++){e++;const l=o.children[a];if(l.type===1&&(l.props.length>0&&t++,r(l),i))return!1}return!0}return r(n)?[e,t]:!1}function Fz(n,e){if(Ui(n))return n;if(Sm(n))return"";switch(n.type){case 1:return wEe(n,e);case 2:return Eh(n.content);case 3:return`<!--${Eh(n.content)}-->`;case 5:return Eh(M$(Q1(n.content)));case 8:return Eh(Q1(n));case 12:return Fz(n.content,e);default:return""}}function wEe(n,e){let t=`<${n.tag}`,i="";for(let s=0;s<n.props.length;s++){const r=n.props[s];if(r.type===6)t+=` ${r.name}`,r.value&&(t+=`="${Eh(r.value.content)}"`);else if(r.type===7)if(r.name==="bind"){const o=r.exp;if(o.content[0]==="_"){t+=` ${r.arg.content}="__VUE_EXP_START__${o.content}__VUE_EXP_END__"`;continue}if(Eae(r.arg.content)&&o.content==="false")continue;let a=Q1(o);if(a!=null){const l=r.arg&&r.arg.content;l==="class"?a=Lae(a):l==="style"&&(a=RSe(Sae(a))),t+=` ${r.arg.content}="${Eh(a)}"`}}else r.name==="html"?i=Q1(r.exp):r.name==="text"&&(i=Eh(M$(Q1(r.exp))))}if(e.scopeId&&(t+=` ${e.scopeId}`),t+=">",i)t+=i;else for(let s=0;s<n.children.length;s++)t+=Fz(n.children[s],e);return xae(n.tag)||(t+=`</${n.tag}>`),t}function Q1(n){if(n.type===4)return new Function(`return (${n.content})`)();{let e="";return n.children.forEach(t=>{Ui(t)||Sm(t)||(t.type===2?e+=t.content:t.type===5?e+=M$(Q1(t.content)):e+=Q1(t))}),e}}const SEe=(n,e)=>{n.type===1&&n.tagType===0&&(n.tag==="script"||n.tag==="style")&&(e.onError(No(63,n.loc)),e.removeNode())},Bz=[Oz,pEe],Wz={cloak:HS,html:oEe,text:aEe,model:lEe,on:fEe,show:gEe};function kEe(n,e={}){return Tle(n,If({},sy,e,{nodeTransforms:[SEe,...Bz,...e.nodeTransforms||[]],directiveTransforms:If({},Wz,e.directiveTransforms||{}),transformHoist:_Ee}))}function LEe(n,e={}){return vM(n,If({},sy,e))}var Ple=Object.freeze({__proto__:null,BASE_TRANSITION:F$,CAMELIZE:HN,CAPITALIZE:Nae,CREATE_BLOCK:B$,CREATE_COMMENT:aC,CREATE_ELEMENT_BLOCK:W$,CREATE_ELEMENT_VNODE:eM,CREATE_SLOTS:H$,CREATE_STATIC:iM,CREATE_TEXT:tM,CREATE_VNODE:Yx,DOMDirectiveTransforms:Wz,DOMNodeTransforms:Bz,FRAGMENT:Zb,GUARD_REACTIVE_PROPS:lC,IS_MEMO_SAME:$$,IS_REF:Vk,KEEP_ALIVE:Fk,MERGE_PROPS:v_,NORMALIZE_CLASS:oM,NORMALIZE_PROPS:Qb,NORMALIZE_STYLE:aM,OPEN_BLOCK:Vp,POP_SCOPE_ID:uM,PUSH_SCOPE_ID:cM,RENDER_LIST:rM,RENDER_SLOT:V$,RESOLVE_COMPONENT:Bk,RESOLVE_DIRECTIVE:nM,RESOLVE_DYNAMIC_COMPONENT:Xb,RESOLVE_FILTER:Tae,SET_BLOCK_TRACKING:Wk,SUSPENSE:oC,TELEPORT:Z1,TO_DISPLAY_STRING:Zx,TO_HANDLERS:lM,TO_HANDLER_KEY:$N,TRANSITION:_v,TRANSITION_GROUP:nE,TS_NODE_TYPES:vz,UNREF:b_,V_MODEL_CHECKBOX:Tz,V_MODEL_DYNAMIC:XN,V_MODEL_RADIO:Iz,V_MODEL_SELECT:Az,V_MODEL_TEXT:Nz,V_ON_WITH_KEYS:Rz,V_ON_WITH_MODIFIERS:Pz,V_SHOW:Mz,WITH_CTX:hM,WITH_DIRECTIVES:sM,WITH_MEMO:dM,advancePositionWithClone:w_,advancePositionWithMutation:ey,assert:iB,baseCompile:Tle,baseParse:vM,buildDirectiveArgs:Lz,buildProps:mC,buildSlots:Kk,checkCompatEnabled:HLe,compile:kEe,convertToBlock:fM,createArrayExpression:gv,createAssignmentExpression:Q6,createBlockStatement:Xx,createCacheExpression:Aae,createCallExpression:$t,createCompilerError:hn,createCompoundExpression:io,createConditionalExpression:jh,createDOMCompilerError:No,createForLoopParams:qk,createFunctionExpression:Rl,createIfStatement:UN,createInterpolation:zN,createObjectExpression:Va,createObjectProperty:En,createReturnStatement:Rae,createRoot:cC,createSequenceExpression:Pae,createSimpleExpression:ct,createStructuralDirectiveTransform:eE,createTemplateLiteral:U$,createTransformContext:Jx,createVNodeCall:Jb,extractIdentifiers:gl,findDir:kr,findProp:ja,forAliasRE:az,generate:_z,generateCodeFrame:Yb,getBaseTransformPreset:Dz,getConstantType:bl,getInnerRange:rz,getMemoedVNodeCall:sle,getVNodeBlockHelper:C_,getVNodeHelper:y_,hasDynamicKeyVBind:_M,hasScopeRef:Ia,helperNameMap:Pa,injectProp:$k,isBuiltInType:gu,isCoreComponent:nz,isFunctionType:oc,isInDestructureAssignment:pv,isMemberExpression:sz,isMemberExpressionBrowser:FLe,isMemberExpressionNode:ile,isReferencedIdentifier:LM,isSimpleIdentifier:$p,isSlotOutlet:iy,isStaticArgOf:Dh,isStaticExp:so,isStaticProperty:mv,isStaticPropertyKey:xle,isTemplateNode:ty,isText:WS,isVSlot:oz,locStub:Cs,noopDirectiveTransform:HS,parse:LEe,parserOptions:sy,processExpression:Jo,processFor:Cz,processIf:yz,processSlotOutlet:xz,registerRuntimeHelpers:z$,resolveComponentType:DM,stringifyExpression:EM,toValidAssetId:zk,trackSlotScopes:Sz,trackVForSlotScopes:kz,transform:yM,transformBind:Ez,transformElement:Ile,transformExpression:bz,transformModel:TM,transformOn:IM,transformStyle:Oz,traverseNode:uC,walkBlockDeclarations:Lle,walkFunctionParams:xM,walkIdentifiers:pC,warnDeprecation:rle});function Rle(n,e){for(var t=0,i=n.length-1;i>=0;i--){var s=n[i];s==="."?n.splice(i,1):s===".."?(n.splice(i,1),t++):t&&(n.splice(i,1),t--)}if(e)for(;t--;t)n.unshift("..");return n}var xEe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/,Vz=function(n){return xEe.exec(n).slice(1)};function QN(){for(var n="",e=!1,t=arguments.length-1;t>=-1&&!e;t--){var i=t>=0?arguments[t]:"/";if(typeof i!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!i)continue;n=i+"/"+n,e=i.charAt(0)==="/"}return n=Rle(Uz(n.split("/"),function(s){return!!s}),!e).join("/"),(e?"/":"")+n||"."}function Hz(n){var e=$z(n),t=EEe(n,-1)==="/";return n=Rle(Uz(n.split("/"),function(i){return!!i}),!e).join("/"),!n&&!e&&(n="."),n&&t&&(n+="/"),(e?"/":"")+n}function $z(n){return n.charAt(0)==="/"}function Mle(){var n=Array.prototype.slice.call(arguments,0);return Hz(Uz(n,function(e,t){if(typeof e!="string")throw new TypeError("Arguments to path.join must be strings");return e}).join("/"))}function Ole(n,e){n=QN(n).substr(1),e=QN(e).substr(1);function t(c){for(var u=0;u<c.length&&c[u]==="";u++);for(var h=c.length-1;h>=0&&c[h]==="";h--);return u>h?[]:c.slice(u,h-u+1)}for(var i=t(n.split("/")),s=t(e.split("/")),r=Math.min(i.length,s.length),o=r,a=0;a<r;a++)if(i[a]!==s[a]){o=a;break}for(var l=[],a=o;a<i.length;a++)l.push("..");return l=l.concat(s.slice(o)),l.join("/")}var Fle="/",Ble=":";function JN(n){var e=Vz(n),t=e[0],i=e[1];return!t&&!i?".":(i&&(i=i.substr(0,i.length-1)),t+i)}function Wle(n,e){var t=Vz(n)[2];return e&&t.substr(-1*e.length)===e&&(t=t.substr(0,t.length-e.length)),t}function zz(n){return Vz(n)[3]}var zf={extname:zz,basename:Wle,dirname:JN,sep:Fle,delimiter:Ble,relative:Ole,join:Mle,isAbsolute:$z,normalize:Hz,resolve:QN};function Uz(n,e){if(n.filter)return n.filter(e);for(var t=[],i=0;i<n.length;i++)e(n[i],i,n)&&t.push(n[i]);return t}var EEe="ab".substr(-1)==="b"?function(n,e,t){return n.substr(e,t)}:function(n,e,t){return e<0&&(e=n.length+e),n.substr(e,t)},DEe=Object.freeze({__proto__:null,basename:Wle,default:zf,delimiter:Ble,dirname:JN,extname:zz,isAbsolute:$z,join:Mle,normalize:Hz,relative:Ole,resolve:QN,sep:Fle});const J1="Unknown";function jz(n,e){switch(n.type){case"StringLiteral":case"NumericLiteral":return String(n.value);case"Identifier":if(!e)return n.name}}function lB(n){return n.filter(e=>!!e).join(", ")}function Vle(n){return n.type.endsWith("Literal")}function ld(n){return vz.includes(n.type)?ld(n.expression):n}function Zo(n,e){return!!(n&&e&&n.type==="CallExpression"&&n.callee.type==="Identifier"&&(typeof e=="string"?n.callee.name===e:e(n.callee.name)))}function aS(n){return n.length>1?`[${n.join(", ")}]`:n[0]}function cB(n){return n.type==="ImportSpecifier"?n.imported.type==="Identifier"?n.imported.name:n.imported.value:n.type==="ImportNamespaceSpecifier"?"*":"default"}function S_(n){return n.type==="Identifier"?n.name:n.type==="StringLiteral"?n.value:null}const IEe=(zf.posix||zf).normalize,TEe=/\\/g;function qz(n){return IEe(n.replace(TEe,"/"))}const eA=(zf.posix||zf).join,NEe=/[ !"#$%&'()*+,./:;<=>?@[\\\]^`{|}~\-]/;function Hle(n){return NEe.test(n)?JSON.stringify(n):n}const AEe=/[ !"#$%&'()*+,./:;<=>?@[\\\]^`{|}~]/g;function PEe(n,e){return n.replace(AEe,t=>e?`\\\\${t}`:`\\${t}`)}function REe(n,e){for(;n.length<e;)n="0"+n;return n}function Pd(n,e){var t,i,s;if(e.length===0)return n;for(t=0,s=e.length;t<s;t++)i=e.charCodeAt(t),n=(n<<5)-n+i,n|=0;return n<0?n*-2:n}function MEe(n,e,t){return Object.keys(e).sort().reduce(i,n);function i(s,r){return $le(s,e[r],r,t)}}function $le(n,e,t,i){var s=Pd(Pd(Pd(n,t),OEe(e)),typeof e);if(e===null)return Pd(s,"null");if(e===void 0)return Pd(s,"undefined");if(typeof e=="object"||typeof e=="function"){if(i.indexOf(e)!==-1)return Pd(s,"[Circular]"+t);i.push(e);var r=MEe(s,e,i);if(!("valueOf"in e)||typeof e.valueOf!="function")return r;try{return Pd(r,String(e.valueOf()))}catch(o){return Pd(r,"[valueOf exception]"+(o.stack||o.message))}}return Pd(s,e.toString())}function OEe(n){return Object.prototype.toString.call(n)}function FEe(n){return REe($le(0,n,"",[]).toString(16),8)}var BEe=FEe,WEe=gM(BEe);const tA="useCssVars";function zle(n,e,t,i=!1){return`{ + ${n.map(s=>`"${i?"--":""}${Ule(e,s,t,i)}": (${s})`).join(`, + `)} +}`}function Ule(n,e,t,i=!1){return t?WEe(n+e):`${n}-${PEe(e,i)}`}function jle(n){return n=n.trim(),n[0]==="'"&&n[n.length-1]==="'"||n[0]==='"'&&n[n.length-1]==='"'?n.slice(1,-1):n}const MT=/v-bind\s*\(/g;function VEe(n){const e=[];return n.styles.forEach(t=>{let i;const s=t.content.replace(/\/\*([\s\S]*?)\*\/|\/\/.*/g,"");for(;i=MT.exec(s);){const r=i.index+i[0].length,o=qle(s,r);if(o!==null){const a=jle(s.slice(r,o));e.includes(a)||e.push(a)}}}),e}function qle(n,e){let t=0,i=0;for(let s=e;s<n.length;s++){const r=n.charAt(s);switch(t){case 0:if(r==="'")t=1;else if(r==='"')t=2;else if(r==="(")i++;else if(r===")")if(i>0)i--;else return s;break;case 1:r==="'"&&(t=0);break;case 2:r==='"'&&(t=0);break}}return null}const Kle=n=>{const{id:e,isProd:t}=n;return{postcssPlugin:"vue-sfc-vars",Declaration(i){const s=i.value;if(MT.test(s)){MT.lastIndex=0;let r="",o=0,a;for(;a=MT.exec(s);){const l=a.index+a[0].length,c=qle(s,l);if(c!==null){const u=jle(s.slice(l,c));r+=s.slice(o,a.index)+`var(--${Ule(e,u,t)})`,o=c+1}}i.value=r+s.slice(o)}}}};Kle.postcss=!0;function Gle(n,e,t,i){const s=zle(n,t,i),r=ct(s,!1),o=Jx(cC([]),{prefixIdentifiers:!0,inline:!0,bindingMetadata:e.__isScriptSetup===!1?void 0:e}),a=Jo(r,o),l=a.type===4?a.content:a.children.map(c=>typeof c=="string"?c:c.content).join("");return`_${tA}(_ctx => (${l}))`}function HEe(n,e,t,i,s){return` +import { ${tA} as _${tA} } from 'vue' +const __injectCSSVars__ = () => { +${Gle(n,e,t,i)}} +const __setup__ = ${s}.setup +${s}.setup = __setup__ + ? (props, ctx) => { __injectCSSVars__();return __setup__(props, ctx) } + : __injectCSSVars__ +`}var zp=typeof global<"u"?global:typeof self<"u"?self:typeof window<"u"?window:{};function Yle(){throw new Error("setTimeout has not been defined")}function Zle(){throw new Error("clearTimeout has not been defined")}var Tg=Yle,Ng=Zle;typeof zp.setTimeout=="function"&&(Tg=setTimeout);typeof zp.clearTimeout=="function"&&(Ng=clearTimeout);function Xle(n){if(Tg===setTimeout)return setTimeout(n,0);if((Tg===Yle||!Tg)&&setTimeout)return Tg=setTimeout,setTimeout(n,0);try{return Tg(n,0)}catch{try{return Tg.call(null,n,0)}catch{return Tg.call(this,n,0)}}}function $Ee(n){if(Ng===clearTimeout)return clearTimeout(n);if((Ng===Zle||!Ng)&&clearTimeout)return Ng=clearTimeout,clearTimeout(n);try{return Ng(n)}catch{try{return Ng.call(null,n)}catch{return Ng.call(this,n)}}}var mf=[],ub=!1,N1,OT=-1;function zEe(){!ub||!N1||(ub=!1,N1.length?mf=N1.concat(mf):OT=-1,mf.length&&Qle())}function Qle(){if(!ub){var n=Xle(zEe);ub=!0;for(var e=mf.length;e;){for(N1=mf,mf=[];++OT<e;)N1&&N1[OT].run();OT=-1,e=mf.length}N1=null,ub=!1,$Ee(n)}}function UEe(n){var e=new Array(arguments.length-1);if(arguments.length>1)for(var t=1;t<arguments.length;t++)e[t-1]=arguments[t];mf.push(new Jle(n,e)),mf.length===1&&!ub&&Xle(Qle)}function Jle(n,e){this.fun=n,this.array=e}Jle.prototype.run=function(){this.fun.apply(null,this.array)};var jEe="browser",qEe="browser",KEe=!0,GEe={},YEe=[],ZEe="",XEe={},QEe={},JEe={};function vv(){}var eDe=vv,tDe=vv,iDe=vv,nDe=vv,sDe=vv,rDe=vv,oDe=vv;function aDe(n){throw new Error("process.binding is not supported")}function lDe(){return"/"}function cDe(n){throw new Error("process.chdir is not supported")}function uDe(){return 0}var w0=zp.performance||{},hDe=w0.now||w0.mozNow||w0.msNow||w0.oNow||w0.webkitNow||function(){return new Date().getTime()};function dDe(n){var e=hDe.call(w0)*.001,t=Math.floor(e),i=Math.floor(e%1*1e9);return n&&(t=t-n[0],i=i-n[1],i<0&&(t--,i+=1e9)),[t,i]}var fDe=new Date;function gDe(){var n=new Date,e=n-fDe;return e/1e3}var Po={nextTick:UEe,title:jEe,browser:KEe,env:GEe,argv:YEe,version:ZEe,versions:XEe,on:eDe,addListener:tDe,once:iDe,off:nDe,removeListener:sDe,removeAllListeners:rDe,emit:oDe,binding:aDe,cwd:lDe,chdir:cDe,umask:uDe,hrtime:dDe,platform:qEe,release:QEe,config:JEe,uptime:gDe};function NM(n=500){return new Map}function ece(n,e){return new RegExp(`[^\\w$_]${n.replace(/\$/g,"\\$")}[^\\w$_]`).test(pDe(e))}const ZZ=NM();function pDe(n){const{content:e,ast:t}=n.template,i=ZZ.get(e);if(i)return i;let s="";return yM(cC([t]),{nodeTransforms:[r=>{var o;if(r.type===1){!sy.isNativeTag(r.tag)&&!sy.isBuiltInComponent(r.tag)&&(s+=`,${yu(r.tag)},${Wp(yu(r.tag))}`);for(let a=0;a<r.props.length;a++){const l=r.props[a];l.type===7&&(R$(l.name)||(s+=`,v${Wp(yu(l.name))}`),l.arg&&!l.arg.isStatic&&(s+=`,${tce(l.arg.content)}`),l.exp&&(s+=`,${iA(l.exp.content,l.name)}`)),l.type===6&&l.name==="ref"&&((o=l.value)!=null&&o.content)&&(s+=`,${l.value.content}`)}}else r.type===5&&(s+=`,${iA(r.content.content)}`)}]}),s+=";",ZZ.set(e,s),s}function iA(n,e){if(/ as\s+\w|<.*>|:/.test(n)){if(e==="slot")n=`(${n})=>{}`;else if(e==="on")n=`()=>{return ${n}}`;else if(e==="for"){const s=n.match(az);if(s){let[,r,o]=s;return r=r.trim().replace(/^\(|\)$/g,""),iA(`(${r})=>{}`)+iA(o)}}let t="";const i=tle(n,{plugins:["typescript"]});return pC(i,s=>{t+=","+s.name}),t}return tce(n)}function tce(n){return n.replace(/'[^']*'|"[^"]*"/g,"").replace(/`[^`]+`/g,mDe)}function mDe(n){const e=n.match(/\${[^}]+}/g);return e?e.map(t=>t.slice(2,-1)).join(","):""}var _De=Object.defineProperty,XZ=Object.getOwnPropertySymbols,vDe=Object.prototype.hasOwnProperty,bDe=Object.prototype.propertyIsEnumerable,QZ=(n,e,t)=>e in n?_De(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,yDe=(n,e)=>{for(var t in e||(e={}))vDe.call(e,t)&&QZ(n,t,e[t]);if(XZ)for(var t of XZ(e))bDe.call(e,t)&&QZ(n,t,e[t]);return n};const ice="anonymous.vue",uB=NM();function nce(n,{sourceMap:e=!0,filename:t=ice,sourceRoot:i="",pad:s=!1,ignoreEmpty:r=!0,compiler:o=Ple}={}){const a=n+e+t+i+s+o.parse,l=uB.get(a);if(l)return l;const c={filename:t,source:n,template:null,script:null,scriptSetup:null,styles:[],customBlocks:[],cssVars:[],slotted:!1,shouldForceReload:p=>EDe(p,c)},u=[];o.parse(n,{isNativeTag:()=>!0,isPreTag:()=>!0,getTextMode:({tag:p,props:m},_)=>!_&&p!=="template"||p==="template"&&m.some(b=>b.type===6&&b.name==="lang"&&b.value&&b.value.content&&b.value.content!=="html")?2:0,onError:p=>{u.push(p)}}).children.forEach(p=>{if(p.type===1&&!(r&&p.tag!=="template"&&xDe(p)&&!LDe(p)))switch(p.tag){case"template":if(c.template)u.push(JZ(p));else{const y=c.template=LD(p,n,!1);if(y.ast=p,y.attrs.functional){const w=new SyntaxError("<template functional> is no longer supported in Vue 3, since functional components no longer have significant performance difference from stateful ones. Just use a normal <template> instead.");w.loc=p.props.find(S=>S.name==="functional").loc,u.push(w)}}break;case"script":const m=LD(p,n,s),_=!!m.attrs.setup;if(_&&!c.scriptSetup){c.scriptSetup=m;break}if(!_&&!c.script){c.script=m;break}u.push(JZ(p,_));break;case"style":const b=LD(p,n,s);b.attrs.vars&&u.push(new SyntaxError("<style vars> has been replaced by a new proposal: https://github.com/vuejs/rfcs/pull/231")),c.styles.push(b);break;default:c.customBlocks.push(LD(p,n,s));break}}),!c.template&&!c.script&&!c.scriptSetup&&u.push(new SyntaxError("At least one <template> or <script> is required in a single file component.")),c.scriptSetup&&(c.scriptSetup.src&&(u.push(new SyntaxError('<script setup> cannot use the "src" attribute because its syntax will be ambiguous outside of the component.')),c.scriptSetup=null),c.script&&c.script.src&&(u.push(new SyntaxError('<script> cannot use the "src" attribute when <script setup> is also present because they must be processed together.')),c.script=null));let d=0;if(c.template&&(c.template.lang==="pug"||c.template.lang==="jade")&&([c.template.content,d]=DDe(c.template.content)),e){const p=(m,_=0)=>{m&&!m.src&&(m.map=SDe(t,n,m.content,i,!s||m.type==="template"?m.loc.start.line-1:0,_))};p(c.template,d),p(c.script),c.styles.forEach(m=>p(m)),c.customBlocks.forEach(m=>p(m))}c.cssVars=VEe(c);const f=/(?:::v-|:)slotted\(/;c.slotted=c.styles.some(p=>p.scoped&&f.test(p.content));const g={descriptor:c,errors:u};return uB.set(a,g),g}function JZ(n,e=!1){const t=new SyntaxError(`Single file component can contain only one <${n.tag}${e?" setup":""}> element`);return t.loc=n.loc,t}function LD(n,e,t){const i=n.tag;let{start:s,end:r}=n.loc,o="";if(n.children.length)s=n.children[0].loc.start,r=n.children[n.children.length-1].loc.end,o=e.slice(s.offset,r.offset);else{const u=n.loc.source.indexOf("</");u>-1&&(s={line:s.line,column:s.column+u,offset:s.offset+u}),r=yDe({},s)}const a={source:o,start:s,end:r},l={},c={type:i,content:o,loc:a,attrs:l};return t&&(c.content=kDe(e,c,t)+c.content),n.props.forEach(u=>{u.type===6&&(l[u.name]=u.value&&u.value.content||!0,u.name==="lang"?c.lang=u.value&&u.value.content:u.name==="src"?c.src=u.value&&u.value.content:i==="style"?u.name==="scoped"?c.scoped=!0:u.name==="module"&&(c.module=l[u.name]):i==="script"&&u.name==="setup"&&(c.setup=l.setup))}),c}const sce=/\r?\n/g,CDe=/^(?:\/\/)?\s*$/,wDe=/./g;function SDe(n,e,t,i,s,r){const o=new mz({file:n.replace(/\\/g,"/"),sourceRoot:i.replace(/\\/g,"/")});return o.setSourceContent(n,e),t.split(sce).forEach((a,l)=>{if(!CDe.test(a)){const c=l+1+s,u=l+1;for(let h=0;h<a.length;h++)/\s/.test(a[h])||o.addMapping({source:n,original:{line:c,column:h+r},generated:{line:u,column:h}})}}),JSON.parse(o.toString())}function kDe(n,e,t){if(n=n.slice(0,e.loc.start.offset),t==="space")return n.replace(wDe," ");{const i=n.split(sce).length,s=e.type==="script"&&!e.lang?`// +`:` +`;return Array(i).join(s)}}function LDe(n){return n.props.some(e=>e.type!==6?!1:e.name==="src")}function xDe(n){for(let e=0;e<n.children.length;e++){const t=n.children[e];if(t.type!==2||t.content.trim()!=="")return!1}return!0}function EDe(n,e){if(!e.scriptSetup||e.scriptSetup.lang!=="ts"&&e.scriptSetup.lang!=="tsx")return!1;for(const t in n)if(!n[t].isUsedInTemplate&&ece(t,e))return!0;return!1}function DDe(n){const e=n.split(` +`),t=e.reduce(function(i,s){var r,o;if(s.trim()==="")return i;const a=((o=(r=s.match(/^\s*/))==null?void 0:r[0])==null?void 0:o.length)||0;return Math.min(a,i)},1/0);return t===0?[n,t]:[e.map(function(i){return i.slice(t)}).join(` +`),t]}/*! https://mths.be/punycode v1.4.1 by @mathias */var P4=2147483647,$S=36,rce=1,hB=26,IDe=38,TDe=700,NDe=72,ADe=128,PDe="-",RDe=/[^\x20-\x7E]/,MDe=/[\x2E\u3002\uFF0E\uFF61]/g,ODe={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},R4=$S-rce,A0=Math.floor,M4=String.fromCharCode;function eX(n){throw new RangeError(ODe[n])}function FDe(n,e){for(var t=n.length,i=[];t--;)i[t]=e(n[t]);return i}function BDe(n,e){var t=n.split("@"),i="";t.length>1&&(i=t[0]+"@",n=t[1]),n=n.replace(MDe,".");var s=n.split("."),r=FDe(s,e).join(".");return i+r}function WDe(n){for(var e=[],t=0,i=n.length,s,r;t<i;)s=n.charCodeAt(t++),s>=55296&&s<=56319&&t<i?(r=n.charCodeAt(t++),(r&64512)==56320?e.push(((s&1023)<<10)+(r&1023)+65536):(e.push(s),t--)):e.push(s);return e}function tX(n,e){return n+22+75*(n<26)-((e!=0)<<5)}function VDe(n,e,t){var i=0;for(n=t?A0(n/TDe):n>>1,n+=A0(n/e);n>R4*hB>>1;i+=$S)n=A0(n/R4);return A0(i+(R4+1)*n/(n+IDe))}function HDe(n){var e,t,i,s,r,o,a,l,c,u,h,d=[],f,g,p,m;for(n=WDe(n),f=n.length,e=ADe,t=0,r=NDe,o=0;o<f;++o)h=n[o],h<128&&d.push(M4(h));for(i=s=d.length,s&&d.push(PDe);i<f;){for(a=P4,o=0;o<f;++o)h=n[o],h>=e&&h<a&&(a=h);for(g=i+1,a-e>A0((P4-t)/g)&&eX("overflow"),t+=(a-e)*g,e=a,o=0;o<f;++o)if(h=n[o],h<e&&++t>P4&&eX("overflow"),h==e){for(l=t,c=$S;u=c<=r?rce:c>=r+hB?hB:c-r,!(l<u);c+=$S)m=l-u,p=$S-u,d.push(M4(tX(u+m%p,0))),l=A0(m/p);d.push(M4(tX(l,0))),r=VDe(t,g,i==s),t=0,++i}++t,++e}return d.join("")}function $De(n){return BDe(n,function(e){return RDe.test(e)?"xn--"+HDe(e):e})}var mh=[],Jl=[],zDe=typeof Uint8Array<"u"?Uint8Array:Array,Kz=!1;function oce(){Kz=!0;for(var n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",e=0,t=n.length;e<t;++e)mh[e]=n[e],Jl[n.charCodeAt(e)]=e;Jl[45]=62,Jl[95]=63}function UDe(n){Kz||oce();var e,t,i,s,r,o,a=n.length;if(a%4>0)throw new Error("Invalid string. Length must be a multiple of 4");r=n[a-2]==="="?2:n[a-1]==="="?1:0,o=new zDe(a*3/4-r),i=r>0?a-4:a;var l=0;for(e=0,t=0;e<i;e+=4,t+=3)s=Jl[n.charCodeAt(e)]<<18|Jl[n.charCodeAt(e+1)]<<12|Jl[n.charCodeAt(e+2)]<<6|Jl[n.charCodeAt(e+3)],o[l++]=s>>16&255,o[l++]=s>>8&255,o[l++]=s&255;return r===2?(s=Jl[n.charCodeAt(e)]<<2|Jl[n.charCodeAt(e+1)]>>4,o[l++]=s&255):r===1&&(s=Jl[n.charCodeAt(e)]<<10|Jl[n.charCodeAt(e+1)]<<4|Jl[n.charCodeAt(e+2)]>>2,o[l++]=s>>8&255,o[l++]=s&255),o}function jDe(n){return mh[n>>18&63]+mh[n>>12&63]+mh[n>>6&63]+mh[n&63]}function qDe(n,e,t){for(var i,s=[],r=e;r<t;r+=3)i=(n[r]<<16)+(n[r+1]<<8)+n[r+2],s.push(jDe(i));return s.join("")}function iX(n){Kz||oce();for(var e,t=n.length,i=t%3,s="",r=[],o=16383,a=0,l=t-i;a<l;a+=o)r.push(qDe(n,a,a+o>l?l:a+o));return i===1?(e=n[t-1],s+=mh[e>>2],s+=mh[e<<4&63],s+="=="):i===2&&(e=(n[t-2]<<8)+n[t-1],s+=mh[e>>10],s+=mh[e>>4&63],s+=mh[e<<2&63],s+="="),r.push(s),r.join("")}function AM(n,e,t,i,s){var r,o,a=s*8-i-1,l=(1<<a)-1,c=l>>1,u=-7,h=t?s-1:0,d=t?-1:1,f=n[e+h];for(h+=d,r=f&(1<<-u)-1,f>>=-u,u+=a;u>0;r=r*256+n[e+h],h+=d,u-=8);for(o=r&(1<<-u)-1,r>>=-u,u+=i;u>0;o=o*256+n[e+h],h+=d,u-=8);if(r===0)r=1-c;else{if(r===l)return o?NaN:(f?-1:1)*(1/0);o=o+Math.pow(2,i),r=r-c}return(f?-1:1)*o*Math.pow(2,r-i)}function ace(n,e,t,i,s,r){var o,a,l,c=r*8-s-1,u=(1<<c)-1,h=u>>1,d=s===23?Math.pow(2,-24)-Math.pow(2,-77):0,f=i?0:r-1,g=i?1:-1,p=e<0||e===0&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(a=isNaN(e)?1:0,o=u):(o=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-o))<1&&(o--,l*=2),o+h>=1?e+=d/l:e+=d*Math.pow(2,1-h),e*l>=2&&(o++,l/=2),o+h>=u?(a=0,o=u):o+h>=1?(a=(e*l-1)*Math.pow(2,s),o=o+h):(a=e*Math.pow(2,h-1)*Math.pow(2,s),o=0));s>=8;n[t+f]=a&255,f+=g,a/=256,s-=8);for(o=o<<s|a,c+=s;c>0;n[t+f]=o&255,f+=g,o/=256,c-=8);n[t+f-g]|=p*128}var KDe={}.toString,lce=Array.isArray||function(n){return KDe.call(n)=="[object Array]"};/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org> + * @license MIT + */var GDe=50;Ke.TYPED_ARRAY_SUPPORT=zp.TYPED_ARRAY_SUPPORT!==void 0?zp.TYPED_ARRAY_SUPPORT:!0;nA();function nA(){return Ke.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function _f(n,e){if(nA()<e)throw new RangeError("Invalid typed array length");return Ke.TYPED_ARRAY_SUPPORT?(n=new Uint8Array(e),n.__proto__=Ke.prototype):(n===null&&(n=new Ke(e)),n.length=e),n}function Ke(n,e,t){if(!Ke.TYPED_ARRAY_SUPPORT&&!(this instanceof Ke))return new Ke(n,e,t);if(typeof n=="number"){if(typeof e=="string")throw new Error("If encoding is specified then the first argument must be a string");return Gz(this,n)}return cce(this,n,e,t)}Ke.poolSize=8192;Ke._augment=function(n){return n.__proto__=Ke.prototype,n};function cce(n,e,t,i){if(typeof e=="number")throw new TypeError('"value" argument must not be a number');return typeof ArrayBuffer<"u"&&e instanceof ArrayBuffer?XDe(n,e,t,i):typeof e=="string"?ZDe(n,e,t):QDe(n,e)}Ke.from=function(n,e,t){return cce(null,n,e,t)};Ke.TYPED_ARRAY_SUPPORT&&(Ke.prototype.__proto__=Uint8Array.prototype,Ke.__proto__=Uint8Array,typeof Symbol<"u"&&Symbol.species&&Ke[Symbol.species]);function uce(n){if(typeof n!="number")throw new TypeError('"size" argument must be a number');if(n<0)throw new RangeError('"size" argument must not be negative')}function YDe(n,e,t,i){return uce(e),e<=0?_f(n,e):t!==void 0?typeof i=="string"?_f(n,e).fill(t,i):_f(n,e).fill(t):_f(n,e)}Ke.alloc=function(n,e,t){return YDe(null,n,e,t)};function Gz(n,e){if(uce(e),n=_f(n,e<0?0:Yz(e)|0),!Ke.TYPED_ARRAY_SUPPORT)for(var t=0;t<e;++t)n[t]=0;return n}Ke.allocUnsafe=function(n){return Gz(null,n)};Ke.allocUnsafeSlow=function(n){return Gz(null,n)};function ZDe(n,e,t){if((typeof t!="string"||t==="")&&(t="utf8"),!Ke.isEncoding(t))throw new TypeError('"encoding" must be a valid string encoding');var i=hce(e,t)|0;n=_f(n,i);var s=n.write(e,t);return s!==i&&(n=n.slice(0,s)),n}function dB(n,e){var t=e.length<0?0:Yz(e.length)|0;n=_f(n,t);for(var i=0;i<t;i+=1)n[i]=e[i]&255;return n}function XDe(n,e,t,i){if(e.byteLength,t<0||e.byteLength<t)throw new RangeError("'offset' is out of bounds");if(e.byteLength<t+(i||0))throw new RangeError("'length' is out of bounds");return t===void 0&&i===void 0?e=new Uint8Array(e):i===void 0?e=new Uint8Array(e,t):e=new Uint8Array(e,t,i),Ke.TYPED_ARRAY_SUPPORT?(n=e,n.__proto__=Ke.prototype):n=dB(n,e),n}function QDe(n,e){if(cd(e)){var t=Yz(e.length)|0;return n=_f(n,t),n.length===0||e.copy(n,0,0,t),n}if(e){if(typeof ArrayBuffer<"u"&&e.buffer instanceof ArrayBuffer||"length"in e)return typeof e.length!="number"||_Ie(e.length)?_f(n,0):dB(n,e);if(e.type==="Buffer"&&lce(e.data))return dB(n,e.data)}throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}function Yz(n){if(n>=nA())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+nA().toString(16)+" bytes");return n|0}Ke.isBuffer=vIe;function cd(n){return!!(n!=null&&n._isBuffer)}Ke.compare=function(e,t){if(!cd(e)||!cd(t))throw new TypeError("Arguments must be Buffers");if(e===t)return 0;for(var i=e.length,s=t.length,r=0,o=Math.min(i,s);r<o;++r)if(e[r]!==t[r]){i=e[r],s=t[r];break}return i<s?-1:s<i?1:0};Ke.isEncoding=function(e){switch(String(e).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}};Ke.concat=function(e,t){if(!lce(e))throw new TypeError('"list" argument must be an Array of Buffers');if(e.length===0)return Ke.alloc(0);var i;if(t===void 0)for(t=0,i=0;i<e.length;++i)t+=e[i].length;var s=Ke.allocUnsafe(t),r=0;for(i=0;i<e.length;++i){var o=e[i];if(!cd(o))throw new TypeError('"list" argument must be an Array of Buffers');o.copy(s,r),r+=o.length}return s};function hce(n,e){if(cd(n))return n.length;if(typeof ArrayBuffer<"u"&&typeof ArrayBuffer.isView=="function"&&(ArrayBuffer.isView(n)||n instanceof ArrayBuffer))return n.byteLength;typeof n!="string"&&(n=""+n);var t=n.length;if(t===0)return 0;for(var i=!1;;)switch(e){case"ascii":case"latin1":case"binary":return t;case"utf8":case"utf-8":case void 0:return sA(n).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return t*2;case"hex":return t>>>1;case"base64":return vce(n).length;default:if(i)return sA(n).length;e=(""+e).toLowerCase(),i=!0}}Ke.byteLength=hce;function JDe(n,e,t){var i=!1;if((e===void 0||e<0)&&(e=0),e>this.length||((t===void 0||t>this.length)&&(t=this.length),t<=0)||(t>>>=0,e>>>=0,t<=e))return"";for(n||(n="utf8");;)switch(n){case"hex":return cIe(this,e,t);case"utf8":case"utf-8":return gce(this,e,t);case"ascii":return aIe(this,e,t);case"latin1":case"binary":return lIe(this,e,t);case"base64":return rIe(this,e,t);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return uIe(this,e,t);default:if(i)throw new TypeError("Unknown encoding: "+n);n=(n+"").toLowerCase(),i=!0}}Ke.prototype._isBuffer=!0;function A1(n,e,t){var i=n[e];n[e]=n[t],n[t]=i}Ke.prototype.swap16=function(){var e=this.length;if(e%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var t=0;t<e;t+=2)A1(this,t,t+1);return this};Ke.prototype.swap32=function(){var e=this.length;if(e%4!==0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var t=0;t<e;t+=4)A1(this,t,t+3),A1(this,t+1,t+2);return this};Ke.prototype.swap64=function(){var e=this.length;if(e%8!==0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var t=0;t<e;t+=8)A1(this,t,t+7),A1(this,t+1,t+6),A1(this,t+2,t+5),A1(this,t+3,t+4);return this};Ke.prototype.toString=function(){var e=this.length|0;return e===0?"":arguments.length===0?gce(this,0,e):JDe.apply(this,arguments)};Ke.prototype.equals=function(e){if(!cd(e))throw new TypeError("Argument must be a Buffer");return this===e?!0:Ke.compare(this,e)===0};Ke.prototype.inspect=function(){var e="",t=GDe;return this.length>0&&(e=this.toString("hex",0,t).match(/.{2}/g).join(" "),this.length>t&&(e+=" ... ")),"<Buffer "+e+">"};Ke.prototype.compare=function(e,t,i,s,r){if(!cd(e))throw new TypeError("Argument must be a Buffer");if(t===void 0&&(t=0),i===void 0&&(i=e?e.length:0),s===void 0&&(s=0),r===void 0&&(r=this.length),t<0||i>e.length||s<0||r>this.length)throw new RangeError("out of range index");if(s>=r&&t>=i)return 0;if(s>=r)return-1;if(t>=i)return 1;if(t>>>=0,i>>>=0,s>>>=0,r>>>=0,this===e)return 0;for(var o=r-s,a=i-t,l=Math.min(o,a),c=this.slice(s,r),u=e.slice(t,i),h=0;h<l;++h)if(c[h]!==u[h]){o=c[h],a=u[h];break}return o<a?-1:a<o?1:0};function dce(n,e,t,i,s){if(n.length===0)return-1;if(typeof t=="string"?(i=t,t=0):t>2147483647?t=2147483647:t<-2147483648&&(t=-2147483648),t=+t,isNaN(t)&&(t=s?0:n.length-1),t<0&&(t=n.length+t),t>=n.length){if(s)return-1;t=n.length-1}else if(t<0)if(s)t=0;else return-1;if(typeof e=="string"&&(e=Ke.from(e,i)),cd(e))return e.length===0?-1:nX(n,e,t,i,s);if(typeof e=="number")return e=e&255,Ke.TYPED_ARRAY_SUPPORT&&typeof Uint8Array.prototype.indexOf=="function"?s?Uint8Array.prototype.indexOf.call(n,e,t):Uint8Array.prototype.lastIndexOf.call(n,e,t):nX(n,[e],t,i,s);throw new TypeError("val must be string, number or Buffer")}function nX(n,e,t,i,s){var r=1,o=n.length,a=e.length;if(i!==void 0&&(i=String(i).toLowerCase(),i==="ucs2"||i==="ucs-2"||i==="utf16le"||i==="utf-16le")){if(n.length<2||e.length<2)return-1;r=2,o/=2,a/=2,t/=2}function l(f,g){return r===1?f[g]:f.readUInt16BE(g*r)}var c;if(s){var u=-1;for(c=t;c<o;c++)if(l(n,c)===l(e,u===-1?0:c-u)){if(u===-1&&(u=c),c-u+1===a)return u*r}else u!==-1&&(c-=c-u),u=-1}else for(t+a>o&&(t=o-a),c=t;c>=0;c--){for(var h=!0,d=0;d<a;d++)if(l(n,c+d)!==l(e,d)){h=!1;break}if(h)return c}return-1}Ke.prototype.includes=function(e,t,i){return this.indexOf(e,t,i)!==-1};Ke.prototype.indexOf=function(e,t,i){return dce(this,e,t,i,!0)};Ke.prototype.lastIndexOf=function(e,t,i){return dce(this,e,t,i,!1)};function eIe(n,e,t,i){t=Number(t)||0;var s=n.length-t;i?(i=Number(i),i>s&&(i=s)):i=s;var r=e.length;if(r%2!==0)throw new TypeError("Invalid hex string");i>r/2&&(i=r/2);for(var o=0;o<i;++o){var a=parseInt(e.substr(o*2,2),16);if(isNaN(a))return o;n[t+o]=a}return o}function tIe(n,e,t,i){return MM(sA(e,n.length-t),n,t,i)}function fce(n,e,t,i){return MM(pIe(e),n,t,i)}function iIe(n,e,t,i){return fce(n,e,t,i)}function nIe(n,e,t,i){return MM(vce(e),n,t,i)}function sIe(n,e,t,i){return MM(mIe(e,n.length-t),n,t,i)}Ke.prototype.write=function(e,t,i,s){if(t===void 0)s="utf8",i=this.length,t=0;else if(i===void 0&&typeof t=="string")s=t,i=this.length,t=0;else if(isFinite(t))t=t|0,isFinite(i)?(i=i|0,s===void 0&&(s="utf8")):(s=i,i=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");var r=this.length-t;if((i===void 0||i>r)&&(i=r),e.length>0&&(i<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");s||(s="utf8");for(var o=!1;;)switch(s){case"hex":return eIe(this,e,t,i);case"utf8":case"utf-8":return tIe(this,e,t,i);case"ascii":return fce(this,e,t,i);case"latin1":case"binary":return iIe(this,e,t,i);case"base64":return nIe(this,e,t,i);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return sIe(this,e,t,i);default:if(o)throw new TypeError("Unknown encoding: "+s);s=(""+s).toLowerCase(),o=!0}};Ke.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function rIe(n,e,t){return e===0&&t===n.length?iX(n):iX(n.slice(e,t))}function gce(n,e,t){t=Math.min(n.length,t);for(var i=[],s=e;s<t;){var r=n[s],o=null,a=r>239?4:r>223?3:r>191?2:1;if(s+a<=t){var l,c,u,h;switch(a){case 1:r<128&&(o=r);break;case 2:l=n[s+1],(l&192)===128&&(h=(r&31)<<6|l&63,h>127&&(o=h));break;case 3:l=n[s+1],c=n[s+2],(l&192)===128&&(c&192)===128&&(h=(r&15)<<12|(l&63)<<6|c&63,h>2047&&(h<55296||h>57343)&&(o=h));break;case 4:l=n[s+1],c=n[s+2],u=n[s+3],(l&192)===128&&(c&192)===128&&(u&192)===128&&(h=(r&15)<<18|(l&63)<<12|(c&63)<<6|u&63,h>65535&&h<1114112&&(o=h))}}o===null?(o=65533,a=1):o>65535&&(o-=65536,i.push(o>>>10&1023|55296),o=56320|o&1023),i.push(o),s+=a}return oIe(i)}var sX=4096;function oIe(n){var e=n.length;if(e<=sX)return String.fromCharCode.apply(String,n);for(var t="",i=0;i<e;)t+=String.fromCharCode.apply(String,n.slice(i,i+=sX));return t}function aIe(n,e,t){var i="";t=Math.min(n.length,t);for(var s=e;s<t;++s)i+=String.fromCharCode(n[s]&127);return i}function lIe(n,e,t){var i="";t=Math.min(n.length,t);for(var s=e;s<t;++s)i+=String.fromCharCode(n[s]);return i}function cIe(n,e,t){var i=n.length;(!e||e<0)&&(e=0),(!t||t<0||t>i)&&(t=i);for(var s="",r=e;r<t;++r)s+=gIe(n[r]);return s}function uIe(n,e,t){for(var i=n.slice(e,t),s="",r=0;r<i.length;r+=2)s+=String.fromCharCode(i[r]+i[r+1]*256);return s}Ke.prototype.slice=function(e,t){var i=this.length;e=~~e,t=t===void 0?i:~~t,e<0?(e+=i,e<0&&(e=0)):e>i&&(e=i),t<0?(t+=i,t<0&&(t=0)):t>i&&(t=i),t<e&&(t=e);var s;if(Ke.TYPED_ARRAY_SUPPORT)s=this.subarray(e,t),s.__proto__=Ke.prototype;else{var r=t-e;s=new Ke(r,void 0);for(var o=0;o<r;++o)s[o]=this[o+e]}return s};function Gr(n,e,t){if(n%1!==0||n<0)throw new RangeError("offset is not uint");if(n+e>t)throw new RangeError("Trying to access beyond buffer length")}Ke.prototype.readUIntLE=function(e,t,i){e=e|0,t=t|0,i||Gr(e,t,this.length);for(var s=this[e],r=1,o=0;++o<t&&(r*=256);)s+=this[e+o]*r;return s};Ke.prototype.readUIntBE=function(e,t,i){e=e|0,t=t|0,i||Gr(e,t,this.length);for(var s=this[e+--t],r=1;t>0&&(r*=256);)s+=this[e+--t]*r;return s};Ke.prototype.readUInt8=function(e,t){return t||Gr(e,1,this.length),this[e]};Ke.prototype.readUInt16LE=function(e,t){return t||Gr(e,2,this.length),this[e]|this[e+1]<<8};Ke.prototype.readUInt16BE=function(e,t){return t||Gr(e,2,this.length),this[e]<<8|this[e+1]};Ke.prototype.readUInt32LE=function(e,t){return t||Gr(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+this[e+3]*16777216};Ke.prototype.readUInt32BE=function(e,t){return t||Gr(e,4,this.length),this[e]*16777216+(this[e+1]<<16|this[e+2]<<8|this[e+3])};Ke.prototype.readIntLE=function(e,t,i){e=e|0,t=t|0,i||Gr(e,t,this.length);for(var s=this[e],r=1,o=0;++o<t&&(r*=256);)s+=this[e+o]*r;return r*=128,s>=r&&(s-=Math.pow(2,8*t)),s};Ke.prototype.readIntBE=function(e,t,i){e=e|0,t=t|0,i||Gr(e,t,this.length);for(var s=t,r=1,o=this[e+--s];s>0&&(r*=256);)o+=this[e+--s]*r;return r*=128,o>=r&&(o-=Math.pow(2,8*t)),o};Ke.prototype.readInt8=function(e,t){return t||Gr(e,1,this.length),this[e]&128?(255-this[e]+1)*-1:this[e]};Ke.prototype.readInt16LE=function(e,t){t||Gr(e,2,this.length);var i=this[e]|this[e+1]<<8;return i&32768?i|4294901760:i};Ke.prototype.readInt16BE=function(e,t){t||Gr(e,2,this.length);var i=this[e+1]|this[e]<<8;return i&32768?i|4294901760:i};Ke.prototype.readInt32LE=function(e,t){return t||Gr(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24};Ke.prototype.readInt32BE=function(e,t){return t||Gr(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]};Ke.prototype.readFloatLE=function(e,t){return t||Gr(e,4,this.length),AM(this,e,!0,23,4)};Ke.prototype.readFloatBE=function(e,t){return t||Gr(e,4,this.length),AM(this,e,!1,23,4)};Ke.prototype.readDoubleLE=function(e,t){return t||Gr(e,8,this.length),AM(this,e,!0,52,8)};Ke.prototype.readDoubleBE=function(e,t){return t||Gr(e,8,this.length),AM(this,e,!1,52,8)};function nl(n,e,t,i,s,r){if(!cd(n))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>s||e<r)throw new RangeError('"value" argument is out of bounds');if(t+i>n.length)throw new RangeError("Index out of range")}Ke.prototype.writeUIntLE=function(e,t,i,s){if(e=+e,t=t|0,i=i|0,!s){var r=Math.pow(2,8*i)-1;nl(this,e,t,i,r,0)}var o=1,a=0;for(this[t]=e&255;++a<i&&(o*=256);)this[t+a]=e/o&255;return t+i};Ke.prototype.writeUIntBE=function(e,t,i,s){if(e=+e,t=t|0,i=i|0,!s){var r=Math.pow(2,8*i)-1;nl(this,e,t,i,r,0)}var o=i-1,a=1;for(this[t+o]=e&255;--o>=0&&(a*=256);)this[t+o]=e/a&255;return t+i};Ke.prototype.writeUInt8=function(e,t,i){return e=+e,t=t|0,i||nl(this,e,t,1,255,0),Ke.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=e&255,t+1};function PM(n,e,t,i){e<0&&(e=65535+e+1);for(var s=0,r=Math.min(n.length-t,2);s<r;++s)n[t+s]=(e&255<<8*(i?s:1-s))>>>(i?s:1-s)*8}Ke.prototype.writeUInt16LE=function(e,t,i){return e=+e,t=t|0,i||nl(this,e,t,2,65535,0),Ke.TYPED_ARRAY_SUPPORT?(this[t]=e&255,this[t+1]=e>>>8):PM(this,e,t,!0),t+2};Ke.prototype.writeUInt16BE=function(e,t,i){return e=+e,t=t|0,i||nl(this,e,t,2,65535,0),Ke.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=e&255):PM(this,e,t,!1),t+2};function RM(n,e,t,i){e<0&&(e=4294967295+e+1);for(var s=0,r=Math.min(n.length-t,4);s<r;++s)n[t+s]=e>>>(i?s:3-s)*8&255}Ke.prototype.writeUInt32LE=function(e,t,i){return e=+e,t=t|0,i||nl(this,e,t,4,4294967295,0),Ke.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=e&255):RM(this,e,t,!0),t+4};Ke.prototype.writeUInt32BE=function(e,t,i){return e=+e,t=t|0,i||nl(this,e,t,4,4294967295,0),Ke.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=e&255):RM(this,e,t,!1),t+4};Ke.prototype.writeIntLE=function(e,t,i,s){if(e=+e,t=t|0,!s){var r=Math.pow(2,8*i-1);nl(this,e,t,i,r-1,-r)}var o=0,a=1,l=0;for(this[t]=e&255;++o<i&&(a*=256);)e<0&&l===0&&this[t+o-1]!==0&&(l=1),this[t+o]=(e/a>>0)-l&255;return t+i};Ke.prototype.writeIntBE=function(e,t,i,s){if(e=+e,t=t|0,!s){var r=Math.pow(2,8*i-1);nl(this,e,t,i,r-1,-r)}var o=i-1,a=1,l=0;for(this[t+o]=e&255;--o>=0&&(a*=256);)e<0&&l===0&&this[t+o+1]!==0&&(l=1),this[t+o]=(e/a>>0)-l&255;return t+i};Ke.prototype.writeInt8=function(e,t,i){return e=+e,t=t|0,i||nl(this,e,t,1,127,-128),Ke.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=e&255,t+1};Ke.prototype.writeInt16LE=function(e,t,i){return e=+e,t=t|0,i||nl(this,e,t,2,32767,-32768),Ke.TYPED_ARRAY_SUPPORT?(this[t]=e&255,this[t+1]=e>>>8):PM(this,e,t,!0),t+2};Ke.prototype.writeInt16BE=function(e,t,i){return e=+e,t=t|0,i||nl(this,e,t,2,32767,-32768),Ke.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=e&255):PM(this,e,t,!1),t+2};Ke.prototype.writeInt32LE=function(e,t,i){return e=+e,t=t|0,i||nl(this,e,t,4,2147483647,-2147483648),Ke.TYPED_ARRAY_SUPPORT?(this[t]=e&255,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):RM(this,e,t,!0),t+4};Ke.prototype.writeInt32BE=function(e,t,i){return e=+e,t=t|0,i||nl(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),Ke.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=e&255):RM(this,e,t,!1),t+4};function pce(n,e,t,i,s,r){if(t+i>n.length)throw new RangeError("Index out of range");if(t<0)throw new RangeError("Index out of range")}function mce(n,e,t,i,s){return s||pce(n,e,t,4),ace(n,e,t,i,23,4),t+4}Ke.prototype.writeFloatLE=function(e,t,i){return mce(this,e,t,!0,i)};Ke.prototype.writeFloatBE=function(e,t,i){return mce(this,e,t,!1,i)};function _ce(n,e,t,i,s){return s||pce(n,e,t,8),ace(n,e,t,i,52,8),t+8}Ke.prototype.writeDoubleLE=function(e,t,i){return _ce(this,e,t,!0,i)};Ke.prototype.writeDoubleBE=function(e,t,i){return _ce(this,e,t,!1,i)};Ke.prototype.copy=function(e,t,i,s){if(i||(i=0),!s&&s!==0&&(s=this.length),t>=e.length&&(t=e.length),t||(t=0),s>0&&s<i&&(s=i),s===i||e.length===0||this.length===0)return 0;if(t<0)throw new RangeError("targetStart out of bounds");if(i<0||i>=this.length)throw new RangeError("sourceStart out of bounds");if(s<0)throw new RangeError("sourceEnd out of bounds");s>this.length&&(s=this.length),e.length-t<s-i&&(s=e.length-t+i);var r=s-i,o;if(this===e&&i<t&&t<s)for(o=r-1;o>=0;--o)e[o+t]=this[o+i];else if(r<1e3||!Ke.TYPED_ARRAY_SUPPORT)for(o=0;o<r;++o)e[o+t]=this[o+i];else Uint8Array.prototype.set.call(e,this.subarray(i,i+r),t);return r};Ke.prototype.fill=function(e,t,i,s){if(typeof e=="string"){if(typeof t=="string"?(s=t,t=0,i=this.length):typeof i=="string"&&(s=i,i=this.length),e.length===1){var r=e.charCodeAt(0);r<256&&(e=r)}if(s!==void 0&&typeof s!="string")throw new TypeError("encoding must be a string");if(typeof s=="string"&&!Ke.isEncoding(s))throw new TypeError("Unknown encoding: "+s)}else typeof e=="number"&&(e=e&255);if(t<0||this.length<t||this.length<i)throw new RangeError("Out of range index");if(i<=t)return this;t=t>>>0,i=i===void 0?this.length:i>>>0,e||(e=0);var o;if(typeof e=="number")for(o=t;o<i;++o)this[o]=e;else{var a=cd(e)?e:sA(new Ke(e,s).toString()),l=a.length;for(o=0;o<i-t;++o)this[o+t]=a[o%l]}return this};var hIe=/[^+\/0-9A-Za-z-_]/g;function dIe(n){if(n=fIe(n).replace(hIe,""),n.length<2)return"";for(;n.length%4!==0;)n=n+"=";return n}function fIe(n){return n.trim?n.trim():n.replace(/^\s+|\s+$/g,"")}function gIe(n){return n<16?"0"+n.toString(16):n.toString(16)}function sA(n,e){e=e||1/0;for(var t,i=n.length,s=null,r=[],o=0;o<i;++o){if(t=n.charCodeAt(o),t>55295&&t<57344){if(!s){if(t>56319){(e-=3)>-1&&r.push(239,191,189);continue}else if(o+1===i){(e-=3)>-1&&r.push(239,191,189);continue}s=t;continue}if(t<56320){(e-=3)>-1&&r.push(239,191,189),s=t;continue}t=(s-55296<<10|t-56320)+65536}else s&&(e-=3)>-1&&r.push(239,191,189);if(s=null,t<128){if((e-=1)<0)break;r.push(t)}else if(t<2048){if((e-=2)<0)break;r.push(t>>6|192,t&63|128)}else if(t<65536){if((e-=3)<0)break;r.push(t>>12|224,t>>6&63|128,t&63|128)}else if(t<1114112){if((e-=4)<0)break;r.push(t>>18|240,t>>12&63|128,t>>6&63|128,t&63|128)}else throw new Error("Invalid code point")}return r}function pIe(n){for(var e=[],t=0;t<n.length;++t)e.push(n.charCodeAt(t)&255);return e}function mIe(n,e){for(var t,i,s,r=[],o=0;o<n.length&&!((e-=2)<0);++o)t=n.charCodeAt(o),i=t>>8,s=t%256,r.push(s),r.push(i);return r}function vce(n){return UDe(dIe(n))}function MM(n,e,t,i){for(var s=0;s<i&&!(s+t>=e.length||s>=n.length);++s)e[s+t]=n[s];return s}function _Ie(n){return n!==n}function vIe(n){return n!=null&&(!!n._isBuffer||bce(n)||bIe(n))}function bce(n){return!!n.constructor&&typeof n.constructor.isBuffer=="function"&&n.constructor.isBuffer(n)}function bIe(n){return typeof n.readFloatLE=="function"&&typeof n.slice=="function"&&bce(n.slice(0,0))}var fB;typeof Object.create=="function"?fB=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}:fB=function(e,t){e.super_=t;var i=function(){};i.prototype=t.prototype,e.prototype=new i,e.prototype.constructor=e};var yce=fB,Cce=Object.getOwnPropertyDescriptors||function(e){for(var t=Object.keys(e),i={},s=0;s<t.length;s++)i[t[s]]=Object.getOwnPropertyDescriptor(e,t[s]);return i},yIe=/%[sdj%]/g;function OM(n){if(!km(n)){for(var e=[],t=0;t<arguments.length;t++)e.push(qh(arguments[t]));return e.join(" ")}for(var t=1,i=arguments,s=i.length,r=String(n).replace(yIe,function(a){if(a==="%%")return"%";if(t>=s)return a;switch(a){case"%s":return String(i[t++]);case"%d":return Number(i[t++]);case"%j":try{return JSON.stringify(i[t++])}catch{return"[Circular]"}default:return a}}),o=i[t];t<s;o=i[++t])vf(o)||!ng(o)?r+=" "+o:r+=" "+qh(o);return r}function Zz(n,e){if(Ih(zp.process))return function(){return Zz(n,e).apply(this,arguments)};if(Po.noDeprecation===!0)return n;var t=!1;function i(){if(!t){if(Po.throwDeprecation)throw new Error(e);Po.traceDeprecation?console.trace(e):console.error(e),t=!0}return n.apply(this,arguments)}return i}var xD={},O4;function wce(n){if(Ih(O4)&&(O4=Po.env.NODE_DEBUG||""),n=n.toUpperCase(),!xD[n])if(new RegExp("\\b"+n+"\\b","i").test(O4)){var e=0;xD[n]=function(){var t=OM.apply(null,arguments);console.error("%s %d: %s",n,e,t)}}else xD[n]=function(){};return xD[n]}function qh(n,e){var t={seen:[],stylize:wIe};return arguments.length>=3&&(t.depth=arguments[2]),arguments.length>=4&&(t.colors=arguments[3]),FM(e)?t.showHidden=e:e&&tU(t,e),Ih(t.showHidden)&&(t.showHidden=!1),Ih(t.depth)&&(t.depth=2),Ih(t.colors)&&(t.colors=!1),Ih(t.customInspect)&&(t.customInspect=!0),t.colors&&(t.stylize=CIe),rA(t,n,t.depth)}qh.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]};qh.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"};function CIe(n,e){var t=qh.styles[e];return t?"\x1B["+qh.colors[t][0]+"m"+n+"\x1B["+qh.colors[t][1]+"m":n}function wIe(n,e){return n}function SIe(n){var e={};return n.forEach(function(t,i){e[t]=!0}),e}function rA(n,e,t){if(n.customInspect&&e&&jS(e.inspect)&&e.inspect!==qh&&!(e.constructor&&e.constructor.prototype===e)){var i=e.inspect(t,n);return km(i)||(i=rA(n,i,t)),i}var s=kIe(n,e);if(s)return s;var r=Object.keys(e),o=SIe(r);if(n.showHidden&&(r=Object.getOwnPropertyNames(e)),US(e)&&(r.indexOf("message")>=0||r.indexOf("description")>=0))return F4(e);if(r.length===0){if(jS(e)){var a=e.name?": "+e.name:"";return n.stylize("[Function"+a+"]","special")}if(zS(e))return n.stylize(RegExp.prototype.toString.call(e),"regexp");if(oA(e))return n.stylize(Date.prototype.toString.call(e),"date");if(US(e))return F4(e)}var l="",c=!1,u=["{","}"];if(Xz(e)&&(c=!0,u=["[","]"]),jS(e)){var h=e.name?": "+e.name:"";l=" [Function"+h+"]"}if(zS(e)&&(l=" "+RegExp.prototype.toString.call(e)),oA(e)&&(l=" "+Date.prototype.toUTCString.call(e)),US(e)&&(l=" "+F4(e)),r.length===0&&(!c||e.length==0))return u[0]+l+u[1];if(t<0)return zS(e)?n.stylize(RegExp.prototype.toString.call(e),"regexp"):n.stylize("[Object]","special");n.seen.push(e);var d;return c?d=LIe(n,e,t,o,r):d=r.map(function(f){return gB(n,e,t,o,f,c)}),n.seen.pop(),xIe(d,l,u)}function kIe(n,e){if(Ih(e))return n.stylize("undefined","undefined");if(km(e)){var t="'"+JSON.stringify(e).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return n.stylize(t,"string")}if(Jz(e))return n.stylize(""+e,"number");if(FM(e))return n.stylize(""+e,"boolean");if(vf(e))return n.stylize("null","null")}function F4(n){return"["+Error.prototype.toString.call(n)+"]"}function LIe(n,e,t,i,s){for(var r=[],o=0,a=e.length;o<a;++o)Ece(e,String(o))?r.push(gB(n,e,t,i,String(o),!0)):r.push("");return s.forEach(function(l){l.match(/^\d+$/)||r.push(gB(n,e,t,i,l,!0))}),r}function gB(n,e,t,i,s,r){var o,a,l;if(l=Object.getOwnPropertyDescriptor(e,s)||{value:e[s]},l.get?l.set?a=n.stylize("[Getter/Setter]","special"):a=n.stylize("[Getter]","special"):l.set&&(a=n.stylize("[Setter]","special")),Ece(i,s)||(o="["+s+"]"),a||(n.seen.indexOf(l.value)<0?(vf(t)?a=rA(n,l.value,null):a=rA(n,l.value,t-1),a.indexOf(` +`)>-1&&(r?a=a.split(` +`).map(function(c){return" "+c}).join(` +`).substr(2):a=` +`+a.split(` +`).map(function(c){return" "+c}).join(` +`))):a=n.stylize("[Circular]","special")),Ih(o)){if(r&&s.match(/^\d+$/))return a;o=JSON.stringify(""+s),o.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(o=o.substr(1,o.length-2),o=n.stylize(o,"name")):(o=o.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),o=n.stylize(o,"string"))}return o+": "+a}function xIe(n,e,t){var i=n.reduce(function(s,r){return r.indexOf(` +`)>=0,s+r.replace(/\u001b\[\d\d?m/g,"").length+1},0);return i>60?t[0]+(e===""?"":e+` + `)+" "+n.join(`, + `)+" "+t[1]:t[0]+e+" "+n.join(", ")+" "+t[1]}function Xz(n){return Array.isArray(n)}function FM(n){return typeof n=="boolean"}function vf(n){return n===null}function Qz(n){return n==null}function Jz(n){return typeof n=="number"}function km(n){return typeof n=="string"}function Sce(n){return typeof n=="symbol"}function Ih(n){return n===void 0}function zS(n){return ng(n)&&eU(n)==="[object RegExp]"}function ng(n){return typeof n=="object"&&n!==null}function oA(n){return ng(n)&&eU(n)==="[object Date]"}function US(n){return ng(n)&&(eU(n)==="[object Error]"||n instanceof Error)}function jS(n){return typeof n=="function"}function kce(n){return n===null||typeof n=="boolean"||typeof n=="number"||typeof n=="string"||typeof n=="symbol"||typeof n>"u"}function Lce(n){return Ke.isBuffer(n)}function eU(n){return Object.prototype.toString.call(n)}function B4(n){return n<10?"0"+n.toString(10):n.toString(10)}var EIe=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function DIe(){var n=new Date,e=[B4(n.getHours()),B4(n.getMinutes()),B4(n.getSeconds())].join(":");return[n.getDate(),EIe[n.getMonth()],e].join(" ")}function xce(){console.log("%s - %s",DIe(),OM.apply(null,arguments))}function tU(n,e){if(!e||!ng(e))return n;for(var t=Object.keys(e),i=t.length;i--;)n[t[i]]=e[t[i]];return n}function Ece(n,e){return Object.prototype.hasOwnProperty.call(n,e)}var s1=typeof Symbol<"u"?Symbol("util.promisify.custom"):void 0;function iU(n){if(typeof n!="function")throw new TypeError('The "original" argument must be of type Function');if(s1&&n[s1]){var e=n[s1];if(typeof e!="function")throw new TypeError('The "util.promisify.custom" argument must be of type Function');return Object.defineProperty(e,s1,{value:e,enumerable:!1,writable:!1,configurable:!0}),e}function e(){for(var t,i,s=new Promise(function(a,l){t=a,i=l}),r=[],o=0;o<arguments.length;o++)r.push(arguments[o]);r.push(function(a,l){a?i(a):t(l)});try{n.apply(this,r)}catch(a){i(a)}return s}return Object.setPrototypeOf(e,Object.getPrototypeOf(n)),s1&&Object.defineProperty(e,s1,{value:e,enumerable:!1,writable:!1,configurable:!0}),Object.defineProperties(e,Cce(n))}iU.custom=s1;function IIe(n,e){if(!n){var t=new Error("Promise was rejected with a falsy value");t.reason=n,n=t}return e(n)}function Dce(n){if(typeof n!="function")throw new TypeError('The "original" argument must be of type Function');function e(){for(var t=[],i=0;i<arguments.length;i++)t.push(arguments[i]);var s=t.pop();if(typeof s!="function")throw new TypeError("The last argument must be of type Function");var r=this,o=function(){return s.apply(r,arguments)};n.apply(this,t).then(function(a){Po.nextTick(o.bind(null,null,a))},function(a){Po.nextTick(IIe.bind(null,a,o))})}return Object.setPrototypeOf(e,Object.getPrototypeOf(n)),Object.defineProperties(e,Cce(n)),e}var TIe={inherits:yce,_extend:tU,log:xce,isBuffer:Lce,isPrimitive:kce,isFunction:jS,isError:US,isDate:oA,isObject:ng,isRegExp:zS,isUndefined:Ih,isSymbol:Sce,isString:km,isNumber:Jz,isNullOrUndefined:Qz,isNull:vf,isBoolean:FM,isArray:Xz,inspect:qh,deprecate:Zz,format:OM,debuglog:wce,promisify:iU,callbackify:Dce},NIe=Object.freeze({__proto__:null,_extend:tU,callbackify:Dce,debuglog:wce,default:TIe,deprecate:Zz,format:OM,inherits:yce,inspect:qh,isArray:Xz,isBoolean:FM,isBuffer:Lce,isDate:oA,isError:US,isFunction:jS,isNull:vf,isNullOrUndefined:Qz,isNumber:Jz,isObject:ng,isPrimitive:kce,isRegExp:zS,isString:km,isSymbol:Sce,isUndefined:Ih,log:xce,promisify:iU});function AIe(n,e){return Object.prototype.hasOwnProperty.call(n,e)}var Ice=Array.isArray||function(n){return Object.prototype.toString.call(n)==="[object Array]"};function cw(n){switch(typeof n){case"string":return n;case"boolean":return n?"true":"false";case"number":return isFinite(n)?n:"";default:return""}}function PIe(n,e,t,i){return e=e||"&",t=t||"=",n===null&&(n=void 0),typeof n=="object"?rX(RIe(n),function(s){var r=encodeURIComponent(cw(s))+t;return Ice(n[s])?rX(n[s],function(o){return r+encodeURIComponent(cw(o))}).join(e):r+encodeURIComponent(cw(n[s]))}).join(e):i?encodeURIComponent(cw(i))+t+encodeURIComponent(cw(n)):""}function rX(n,e){if(n.map)return n.map(e);for(var t=[],i=0;i<n.length;i++)t.push(e(n[i],i));return t}var RIe=Object.keys||function(n){var e=[];for(var t in n)Object.prototype.hasOwnProperty.call(n,t)&&e.push(t);return e};function oX(n,e,t,i){e=e||"&",t=t||"=";var s={};if(typeof n!="string"||n.length===0)return s;var r=/\+/g;n=n.split(e);var o=1e3;i&&typeof i.maxKeys=="number"&&(o=i.maxKeys);var a=n.length;o>0&&a>o&&(a=o);for(var l=0;l<a;++l){var c=n[l].replace(r,"%20"),u=c.indexOf(t),h,d,f,g;u>=0?(h=c.substr(0,u),d=c.substr(u+1)):(h=c,d=""),f=decodeURIComponent(h),g=decodeURIComponent(d),AIe(s,f)?Ice(s[f])?s[f].push(g):s[f]=[s[f],g]:s[f]=g}return s}const Tce=zp.URL,Nce=zp.URLSearchParams;var MIe={parse:_C,resolve:Mce,resolveObject:Oce,fileURLToPath:Pce,format:Rce,Url:Dl,URL:Tce,URLSearchParams:Nce};function Dl(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}var OIe=/^([a-z0-9.+-]+:)/i,FIe=/:[0-9]*$/,BIe=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,WIe=["<",">",'"',"`"," ","\r",` +`," "],VIe=["{","}","|","\\","^","`"].concat(WIe),pB=["'"].concat(VIe),aX=["%","/","?",";","#"].concat(pB),lX=["/","?","#"],HIe=255,cX=/^[+a-z0-9A-Z_-]{0,63}$/,$Ie=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,zIe={javascript:!0,"javascript:":!0},mB={javascript:!0,"javascript:":!0},hb={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0};function _C(n,e,t){if(n&&ng(n)&&n instanceof Dl)return n;var i=new Dl;return i.parse(n,e,t),i}Dl.prototype.parse=function(n,e,t){return Ace(this,n,e,t)};function Ace(n,e,t,i){if(!km(e))throw new TypeError("Parameter 'url' must be a string, not "+typeof e);var s=e.indexOf("?"),r=s!==-1&&s<e.indexOf("#")?"?":"#",o=e.split(r),a=/\\/g;o[0]=o[0].replace(a,"/"),e=o.join(r);var l=e;if(l=l.trim(),!i&&e.split("#").length===1){var c=BIe.exec(l);if(c)return n.path=l,n.href=l,n.pathname=c[1],c[2]?(n.search=c[2],t?n.query=oX(n.search.substr(1)):n.query=n.search.substr(1)):t&&(n.search="",n.query={}),n}var u=OIe.exec(l);if(u){u=u[0];var h=u.toLowerCase();n.protocol=h,l=l.substr(u.length)}if(i||u||l.match(/^\/\/[^@\/]+@[^@\/]+/)){var d=l.substr(0,2)==="//";d&&!(u&&mB[u])&&(l=l.substr(2),n.slashes=!0)}var f,g,p,m;if(!mB[u]&&(d||u&&!hb[u])){var _=-1;for(f=0;f<lX.length;f++)g=l.indexOf(lX[f]),g!==-1&&(_===-1||g<_)&&(_=g);var b,y;for(_===-1?y=l.lastIndexOf("@"):y=l.lastIndexOf("@",_),y!==-1&&(b=l.slice(0,y),l=l.slice(y+1),n.auth=decodeURIComponent(b)),_=-1,f=0;f<aX.length;f++)g=l.indexOf(aX[f]),g!==-1&&(_===-1||g<_)&&(_=g);_===-1&&(_=l.length),n.host=l.slice(0,_),l=l.slice(_),Fce(n),n.hostname=n.hostname||"";var w=n.hostname[0]==="["&&n.hostname[n.hostname.length-1]==="]";if(!w){var S=n.hostname.split(/\./);for(f=0,p=S.length;f<p;f++){var E=S[f];if(E&&!E.match(cX)){for(var L="",k=0,x=E.length;k<x;k++)E.charCodeAt(k)>127?L+="x":L+=E[k];if(!L.match(cX)){var I=S.slice(0,f),N=S.slice(f+1),T=E.match($Ie);T&&(I.push(T[1]),N.unshift(T[2])),N.length&&(l="/"+N.join(".")+l),n.hostname=I.join(".");break}}}}n.hostname.length>HIe?n.hostname="":n.hostname=n.hostname.toLowerCase(),w||(n.hostname=$De(n.hostname)),m=n.port?":"+n.port:"";var P=n.hostname||"";n.host=P+m,n.href+=n.host,w&&(n.hostname=n.hostname.substr(1,n.hostname.length-2),l[0]!=="/"&&(l="/"+l))}if(!zIe[h])for(f=0,p=pB.length;f<p;f++){var R=pB[f];if(l.indexOf(R)!==-1){var F=encodeURIComponent(R);F===R&&(F=escape(R)),l=l.split(R).join(F)}}var j=l.indexOf("#");j!==-1&&(n.hash=l.substr(j),l=l.slice(0,j));var K=l.indexOf("?");if(K!==-1?(n.search=l.substr(K),n.query=l.substr(K+1),t&&(n.query=oX(n.query)),l=l.slice(0,K)):t&&(n.search="",n.query={}),l&&(n.pathname=l),hb[h]&&n.hostname&&!n.pathname&&(n.pathname="/"),n.pathname||n.search){m=n.pathname||"";var Z=n.search||"";n.path=m+Z}return n.href=nU(n),n}function Pce(n){if(typeof n=="string")n=new Dl().parse(n);else if(!(n instanceof Dl))throw new TypeError('The "path" argument must be of type string or an instance of URL. Received type '+typeof n+String(n));if(n.protocol!=="file:")throw new TypeError("The URL must be of scheme file");return UIe(n)}function UIe(n){const e=n.pathname;for(let t=0;t<e.length;t++)if(e[t]==="%"){const i=e.codePointAt(t+2)|32;if(e[t+1]==="2"&&i===102)throw new TypeError("must not include encoded / characters")}return decodeURIComponent(e)}function Rce(n){return km(n)&&(n=Ace({},n)),nU(n)}function nU(n){var e=n.auth||"";e&&(e=encodeURIComponent(e),e=e.replace(/%3A/i,":"),e+="@");var t=n.protocol||"",i=n.pathname||"",s=n.hash||"",r=!1,o="";n.host?r=e+n.host:n.hostname&&(r=e+(n.hostname.indexOf(":")===-1?n.hostname:"["+this.hostname+"]"),n.port&&(r+=":"+n.port)),n.query&&ng(n.query)&&Object.keys(n.query).length&&(o=PIe(n.query));var a=n.search||o&&"?"+o||"";return t&&t.substr(-1)!==":"&&(t+=":"),n.slashes||(!t||hb[t])&&r!==!1?(r="//"+(r||""),i&&i.charAt(0)!=="/"&&(i="/"+i)):r||(r=""),s&&s.charAt(0)!=="#"&&(s="#"+s),a&&a.charAt(0)!=="?"&&(a="?"+a),i=i.replace(/[?#]/g,function(l){return encodeURIComponent(l)}),a=a.replace("#","%23"),t+r+i+a+s}Dl.prototype.format=function(){return nU(this)};function Mce(n,e){return _C(n,!1,!0).resolve(e)}Dl.prototype.resolve=function(n){return this.resolveObject(_C(n,!1,!0)).format()};function Oce(n,e){return n?_C(n,!1,!0).resolveObject(e):e}Dl.prototype.resolveObject=function(n){if(km(n)){var e=new Dl;e.parse(n,!1,!0),n=e}for(var t=new Dl,i=Object.keys(this),s=0;s<i.length;s++){var r=i[s];t[r]=this[r]}if(t.hash=n.hash,n.href==="")return t.href=t.format(),t;if(n.slashes&&!n.protocol){for(var o=Object.keys(n),a=0;a<o.length;a++){var l=o[a];l!=="protocol"&&(t[l]=n[l])}return hb[t.protocol]&&t.hostname&&!t.pathname&&(t.path=t.pathname="/"),t.href=t.format(),t}var c;if(n.protocol&&n.protocol!==t.protocol){if(!hb[n.protocol]){for(var u=Object.keys(n),h=0;h<u.length;h++){var d=u[h];t[d]=n[d]}return t.href=t.format(),t}if(t.protocol=n.protocol,!n.host&&!mB[n.protocol]){for(c=(n.pathname||"").split("/");c.length&&!(n.host=c.shift()););n.host||(n.host=""),n.hostname||(n.hostname=""),c[0]!==""&&c.unshift(""),c.length<2&&c.unshift(""),t.pathname=c.join("/")}else t.pathname=n.pathname;if(t.search=n.search,t.query=n.query,t.host=n.host||"",t.auth=n.auth,t.hostname=n.hostname||n.host,t.port=n.port,t.pathname||t.search){var f=t.pathname||"",g=t.search||"";t.path=f+g}return t.slashes=t.slashes||n.slashes,t.href=t.format(),t}var p=t.pathname&&t.pathname.charAt(0)==="/",m=n.host||n.pathname&&n.pathname.charAt(0)==="/",_=m||p||t.host&&n.pathname,b=_,y=t.pathname&&t.pathname.split("/")||[],w=t.protocol&&!hb[t.protocol];c=n.pathname&&n.pathname.split("/")||[],w&&(t.hostname="",t.port=null,t.host&&(y[0]===""?y[0]=t.host:y.unshift(t.host)),t.host="",n.protocol&&(n.hostname=null,n.port=null,n.host&&(c[0]===""?c[0]=n.host:c.unshift(n.host)),n.host=null),_=_&&(c[0]===""||y[0]===""));var S;if(m)t.host=n.host||n.host===""?n.host:t.host,t.hostname=n.hostname||n.hostname===""?n.hostname:t.hostname,t.search=n.search,t.query=n.query,y=c;else if(c.length)y||(y=[]),y.pop(),y=y.concat(c),t.search=n.search,t.query=n.query;else if(!Qz(n.search))return w&&(t.hostname=t.host=y.shift(),S=t.host&&t.host.indexOf("@")>0?t.host.split("@"):!1,S&&(t.auth=S.shift(),t.host=t.hostname=S.shift())),t.search=n.search,t.query=n.query,(!vf(t.pathname)||!vf(t.search))&&(t.path=(t.pathname?t.pathname:"")+(t.search?t.search:"")),t.href=t.format(),t;if(!y.length)return t.pathname=null,t.search?t.path="/"+t.search:t.path=null,t.href=t.format(),t;for(var E=y.slice(-1)[0],L=(t.host||n.host||y.length>1)&&(E==="."||E==="..")||E==="",k=0,x=y.length;x>=0;x--)E=y[x],E==="."?y.splice(x,1):E===".."?(y.splice(x,1),k++):k&&(y.splice(x,1),k--);if(!_&&!b)for(;k--;k)y.unshift("..");_&&y[0]!==""&&(!y[0]||y[0].charAt(0)!=="/")&&y.unshift(""),L&&y.join("/").substr(-1)!=="/"&&y.push("");var I=y[0]===""||y[0]&&y[0].charAt(0)==="/";return w&&(t.hostname=t.host=I?"":y.length?y.shift():"",S=t.host&&t.host.indexOf("@")>0?t.host.split("@"):!1,S&&(t.auth=S.shift(),t.host=t.hostname=S.shift())),_=_||t.host&&y.length,_&&!I&&y.unshift(""),y.length?t.pathname=y.join("/"):(t.pathname=null,t.path=null),(!vf(t.pathname)||!vf(t.search))&&(t.path=(t.pathname?t.pathname:"")+(t.search?t.search:"")),t.auth=n.auth||t.auth,t.slashes=t.slashes||n.slashes,t.href=t.format(),t};Dl.prototype.parseHost=function(){return Fce(this)};function Fce(n){var e=n.host,t=FIe.exec(e);t&&(t=t[0],t!==":"&&(n.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(n.hostname=e)}var jIe=Object.freeze({__proto__:null,URL:Tce,URLSearchParams:Nce,Url:Dl,default:MIe,fileURLToPath:Pce,format:Rce,parse:_C,resolve:Mce,resolveObject:Oce});function Bce(n){const e=n.charAt(0);return e==="."||e==="~"||e==="@"}const qIe=/^(https?:)?\/\//;function Wce(n){return qIe.test(n)}const KIe=/^\s*data:/i;function _B(n){return KIe.test(n)}function vB(n){if(n.charAt(0)==="~"){const t=n.charAt(1);n=n.slice(t==="/"?2:1)}return GIe(n)}function GIe(n){return _C(Ui(n)?n:"",!1,!0)}var YIe=Object.defineProperty,ZIe=Object.defineProperties,XIe=Object.getOwnPropertyDescriptors,uX=Object.getOwnPropertySymbols,QIe=Object.prototype.hasOwnProperty,JIe=Object.prototype.propertyIsEnumerable,hX=(n,e,t)=>e in n?YIe(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,W4=(n,e)=>{for(var t in e||(e={}))QIe.call(e,t)&&hX(n,t,e[t]);if(uX)for(var t of uX(e))JIe.call(e,t)&&hX(n,t,e[t]);return n},eTe=(n,e)=>ZIe(n,XIe(e));const Gk={base:null,includeAbsolute:!1,tags:{video:["src","poster"],source:["src"],img:["src"],image:["xlink:href","href"],use:["xlink:href","href"]}},tTe=n=>Object.keys(n).some(e=>aa(n[e]))?eTe(W4({},Gk),{tags:n}):W4(W4({},Gk),n),iTe=n=>(e,t)=>Vce(e,t,n),Vce=(n,e,t=Gk)=>{if(n.type===1){if(!n.props.length)return;const i=t.tags||Gk.tags,s=i[n.tag],r=i["*"];if(!s&&!r)return;const o=(s||[]).concat(r||[]);n.props.forEach((a,l)=>{if(a.type!==6||!o.includes(a.name)||!a.value||Wce(a.value.content)||_B(a.value.content)||a.value.content[0]==="#"||!t.includeAbsolute&&!Bce(a.value.content))return;const c=vB(a.value.content);if(t.base&&a.value.content[0]==="."){const h=vB(t.base),d=h.protocol||"",f=h.host?d+"//"+h.host:"",g=h.path||"/";a.value.content=f+(zf.posix||zf).join(g,c.path+(c.hash||""));return}const u=nTe(c.path,c.hash,a.loc,e);n.props[l]={type:7,name:"bind",arg:ct(a.name,!0,a.loc),exp:u,modifiers:[],loc:a.loc}})}};function nTe(n,e,t,i){if(n){let s,r;const o=i.imports.findIndex(u=>u.path===n);if(o>-1?(s=`_imports_${o}`,r=i.imports[o].exp):(s=`_imports_${i.imports.length}`,r=ct(s,!1,t,3),i.imports.push({exp:r,path:decodeURIComponent(n)})),!e)return r;const a=`${s} + '${e}'`,l=ct(a,!1,t,3);if(!i.hoistStatic)return l;const c=i.hoists.findIndex(u=>u&&u.type===4&&!u.isStatic&&u.content===a);return c>-1?ct(`_hoisted_${c+1}`,!1,t,3):i.hoist(l)}else return ct("''",!1,t,3)}const sTe=["img","source"],rTe=/( |\\t|\\n|\\f|\\r)+/g,oTe=n=>(e,t)=>Hce(e,t,n),Hce=(n,e,t=Gk)=>{n.type===1&&sTe.includes(n.tag)&&n.props.length&&n.props.forEach((i,s)=>{if(i.name==="srcset"&&i.type===6){if(!i.value)return;const r=i.value.content;if(!r)return;const o=r.split(",").map(u=>{const[h,d]=u.replace(rTe," ").trim().split(" ",2);return{url:h,descriptor:d}});for(let u=0;u<o.length;u++){const{url:h}=o[u];_B(h)&&(o[u+1].url=h+","+o[u+1].url,o.splice(u,1))}const a=u=>!Wce(u)&&!_B(u)&&(t.includeAbsolute||Bce(u));if(!o.some(({url:u})=>a(u)))return;if(t.base){const u=t.base,h=[];let d=!1;if(o.forEach(f=>{let{url:g,descriptor:p}=f;p=p?` ${p}`:"",g[0]==="."?(f.url=(zf.posix||zf).join(u,g),h.push(f.url+p)):a(g)?d=!0:h.push(g+p)}),!d){i.value.content=h.join(", ");return}}const l=io([],i.loc);o.forEach(({url:u,descriptor:h},d)=>{if(a(u)){const{path:g}=vB(u);let p;if(g){const m=e.imports.findIndex(_=>_.path===g);m>-1?p=ct(`_imports_${m}`,!1,i.loc,3):(p=ct(`_imports_${e.imports.length}`,!1,i.loc,3),e.imports.push({exp:p,path:g})),l.children.push(p)}}else{const g=ct(`"${u}"`,!1,i.loc,3);l.children.push(g)}const f=o.length-1>d;h&&f?l.children.push(` + ' ${h}, ' + `):h?l.children.push(` + ' ${h}'`):f&&l.children.push(" + ', ' + ")});let c=l;e.hoistStatic&&(c=e.hoist(l),c.constType=3),n.props[s]={type:7,name:"bind",arg:ct("srcset",!0,i.loc),exp:c,modifiers:[],loc:i.loc}}})},sU=Symbol("ssrInterpolate"),$ce=Symbol("ssrRenderVNode"),zce=Symbol("ssrRenderComponent"),Uce=Symbol("ssrRenderSlot"),jce=Symbol("ssrRenderSlotInner"),qce=Symbol("ssrRenderClass"),Kce=Symbol("ssrRenderStyle"),rU=Symbol("ssrRenderAttrs"),Gce=Symbol("ssrRenderAttr"),Yce=Symbol("ssrRenderDynamicAttr"),Zce=Symbol("ssrRenderList"),oU=Symbol("ssrIncludeBooleanAttr"),FT=Symbol("ssrLooseEqual"),bB=Symbol("ssrLooseContain"),Xce=Symbol("ssrRenderDynamicModel"),Qce=Symbol("ssrGetDynamicModelProps"),Jce=Symbol("ssrRenderTeleport"),eue=Symbol("ssrRenderSuspense"),tue=Symbol("ssrGetDirectiveProps"),yB={[sU]:"ssrInterpolate",[$ce]:"ssrRenderVNode",[zce]:"ssrRenderComponent",[Uce]:"ssrRenderSlot",[jce]:"ssrRenderSlotInner",[qce]:"ssrRenderClass",[Kce]:"ssrRenderStyle",[rU]:"ssrRenderAttrs",[Gce]:"ssrRenderAttr",[Yce]:"ssrRenderDynamicAttr",[Zce]:"ssrRenderList",[oU]:"ssrIncludeBooleanAttr",[FT]:"ssrLooseEqual",[bB]:"ssrLooseContain",[Xce]:"ssrRenderDynamicModel",[Qce]:"ssrGetDynamicModelProps",[Jce]:"ssrRenderTeleport",[eue]:"ssrRenderSuspense",[tue]:"ssrGetDirectiveProps"};z$(yB);const aTe=eE(/^(if|else|else-if)$/,yz);function lTe(n,e,t=!1){const[i]=n.branches,s=UN(i.condition,dX(i,e,t));e.pushStatement(s);let r=s;for(let o=1;o<n.branches.length;o++){const a=n.branches[o],l=dX(a,e,t);a.condition?r=r.alternate=UN(a.condition,l):r.alternate=l}r.alternate||(r.alternate=Xx([$t("_push",["`<!---->`"])]))}function dX(n,e,t=!1){const{children:i}=n,s=!t&&(i.length!==1||i[0].type!==1)&&!(i.length===1&&i[0].type===11);return vC(n,e,s)}const cTe=eE("for",Cz);function uTe(n,e,t=!1){const i=!t&&(n.children.length!==1||n.children[0].type!==1),s=Rl(qk(n.parseResult));s.body=vC(n,e,i),t||e.pushStringPart("<!--[-->"),e.pushStatement($t(e.helper(Zce),[n.source,s])),t||e.pushStringPart("<!--]-->")}const hTe=(n,e)=>{if(iy(n)){const{slotName:t,slotProps:i}=xz(n,e),s=["_ctx.$slots",t,i||"{}","null","_push","_parent"];e.scopeId&&e.slotted!==!1&&s.push(`"${e.scopeId}-s"`);let r=Uce;const o=e.parent;o&&o.type===1&&o.tagType===1&&DM(o,e,!0)===_v&&o.children.filter(a=>a.type===1).length===1&&(r=jce,e.scopeId&&e.slotted!==!1||s.push("null"),s.push("true")),n.ssrCodegenNode=$t(e.helper(r),s)}};function dTe(n,e){const t=n.ssrCodegenNode;if(n.children.length){const i=Rl([]);i.body=vC(n,e),t.arguments[3]=i}if(e.withSlotScopeId){const i=t.arguments[6];t.arguments[6]=i?`${i} + _scopeId`:"_scopeId"}e.pushStatement(n.ssrCodegenNode)}function Yk(n,e){return hn(n,e,fTe)}const fTe={65:"Unsafe attribute name for SSR.",66:"Missing the 'to' prop on teleport element.",67:"Invalid AST node during SSR transform."};function gTe(n,e){const t=ja(n,"to");if(!t){e.onError(Yk(66,n.loc));return}let i;if(t.type===6?i=t.value&&ct(t.value.content,!0):i=t.exp,!i){e.onError(Yk(66,t.loc));return}const s=ja(n,"disabled",!1,!0),r=s?s.type===6?"true":s.exp||"false":"false",o=Rl(["_push"],void 0,!0,!1,n.loc);o.body=vC(n,e),e.pushStatement($t(e.helper(Jce),["_push",o,i,r,"_parent"]))}const iue=new WeakMap;function pTe(n,e){return()=>{if(n.children.length){const t={slotsExp:null,wipSlots:[]};iue.set(n,t),t.slotsExp=Kk(n,e,(i,s,r,o)=>{const a=Rl([],void 0,!0,!1,o);return t.wipSlots.push({fn:a,children:r}),a}).slots}}}function mTe(n,e){const t=iue.get(n);if(!t)return;const{slotsExp:i,wipSlots:s}=t;for(let r=0;r<s.length;r++){const o=s[r];o.fn.body=vC(o,e)}e.pushStatement($t(e.helper(eue),["_push",i]))}const BT=new WeakMap,_Te=(n,e)=>{if(!(n.type!==1||n.tagType!==0))return function(){const i=[`<${n.tag}`],s=n.tag==="textarea"||n.tag.indexOf("-")>0,r=_M(n),o=n.props.some(h=>h.type===7&&!R$(h.name)),a=r||o;if(a){const{props:h,directives:d}=mC(n,e,n.props,!1,!1,!0);if(h||d.length){const f=aU(h,d,e),g=$t(e.helper(rU),[f]);if(n.tag==="textarea"){const p=n.children[0];if(!p||p.type!==5){const m=`_temp${e.temps++}`;g.arguments=[Q6(ct(m,!1),f)],BT.set(n,$t(e.helper(sU),[jh(ct(`"value" in ${m}`,!1),ct(`${m}.value`,!1),ct(p?p.content:"",!0),!1)]))}}else if(n.tag==="input"){const p=CTe(n);if(p){const m=`_temp${e.temps++}`,_=ct(m,!1);g.arguments=[Pae([Q6(_,f),$t(e.helper(v_),[_,$t(e.helper(Qce),[_,p.exp])])])]}}s&&g.arguments.push(`"${n.tag}"`),i.push(g)}}let l,c,u;for(let h=0;h<n.props.length;h++){const d=n.props[h];if(!(n.tag==="input"&&vTe(d))){if(d.type===7){if(d.name==="html"&&d.exp)BT.set(n,d.exp);else if(d.name==="text"&&d.exp)n.children=[zN(d.exp,d.loc)];else if(d.name==="slot")e.onError(hn(40,d.loc));else if(bTe(n,d)&&d.exp)a||(n.children=[zN(d.exp,d.loc)]);else if(!a&&d.name!=="on"){const f=e.directiveTransforms[d.name];if(f){const{props:g,ssrTagParts:p}=f(d,n,e);p&&i.push(...p);for(let m=0;m<g.length;m++){const{key:_,value:b}=g[m];if(so(_)){let y=_.content;if(y==="key"||y==="ref")continue;y==="class"?i.push(' class="',l=$t(e.helper(qce),[b]),'"'):y==="style"?u?fX(u,b):i.push(' style="',u=$t(e.helper(Kce),[b]),'"'):(y=n.tag.indexOf("-")>0?y:zSe[y]||y.toLowerCase(),Eae(y)?i.push(jh($t(e.helper(oU),[b]),ct(" "+y,!0),ct("",!0),!1)):$Se(y)?i.push($t(e.helper(Gce),[_,b])):e.onError(Yk(65,_.loc)))}else{const y=[_,b];s&&y.push(`"${n.tag}"`),i.push($t(e.helper(Yce),y))}}}}}else if(n.tag==="textarea"&&d.name==="value"&&d.value)BT.set(n,Eh(d.value.content));else if(!a){if(d.name==="key"||d.name==="ref")continue;d.name==="class"&&d.value&&(c=JSON.stringify(d.value.content)),i.push(` ${d.name}`+(d.value?`="${Eh(d.value.content)}"`:""))}}}l&&c&&(fX(l,c),yTe(i,"class")),e.scopeId&&i.push(` ${e.scopeId}`),n.ssrCodegenNode=U$(i)}};function aU(n,e,t){let i=[];if(n&&(n.type===14?i=n.arguments:i.push(n)),e.length)for(const s of e)i.push($t(t.helper(tue),["_ctx",...Lz(s,t).elements]));return i.length>1?$t(t.helper(v_),i):i[0]}function vTe(n){return n.type===7?n.name==="bind"&&n.arg&&so(n.arg)&&(n.arg.content==="true-value"||n.arg.content==="false-value"):n.name==="true-value"||n.name==="false-value"}function bTe(n,e){return!!(n.tag==="textarea"&&e.name==="bind"&&Dh(e.arg,"value"))}function fX(n,e){const t=n.arguments[0];t.type===17?t.elements.push(e):n.arguments[0]=gv([t,e])}function yTe(n,e){const t=new RegExp(`^ ${e}=".+"$`),i=n.findIndex(s=>typeof s=="string"&&t.test(s));i>-1&&n.splice(i,1)}function CTe(n){return n.props.find(e=>e.type===7&&e.name==="model"&&e.exp)}function wTe(n,e){const t=e.options.isVoidTag||xT,i=n.ssrCodegenNode.elements;for(let r=0;r<i.length;r++)e.pushStringPart(i[r]);e.withSlotScopeId&&e.pushStringPart(ct("_scopeId",!1)),e.pushStringPart(">");const s=BT.get(n);s?e.pushStringPart(s):n.children.length&&Nf(n,e),t(n.tag)||e.pushStringPart(`</${n.tag}>`)}const nue=new WeakMap;function STe(n,e){return()=>{const t=ja(n,"tag");if(t){const i=n.props.filter(a=>a!==t),{props:s,directives:r}=mC(n,e,i,!0,!1,!0);let o=null;(s||r.length)&&(o=$t(e.helper(rU),[aU(s,r,e)])),nue.set(n,{tag:t,propsExp:o,scopeId:e.scopeId||null})}}}function kTe(n,e){const t=nue.get(n);if(t){const{tag:i,propsExp:s,scopeId:r}=t;i.type===7?(e.pushStringPart("<"),e.pushStringPart(i.exp),s&&e.pushStringPart(s),r&&e.pushStringPart(` ${r}`),e.pushStringPart(">"),Nf(n,e,!1,!0),e.pushStringPart("</"),e.pushStringPart(i.exp),e.pushStringPart(">")):(e.pushStringPart(`<${i.value.content}`),s&&e.pushStringPart(s),r&&e.pushStringPart(` ${r}`),e.pushStringPart(">"),Nf(n,e,!1,!0),e.pushStringPart(`</${i.value.content}>`))}else Nf(n,e,!0,!0)}const sue=new WeakMap;function LTe(n,e){return()=>{const t=ja(n,"appear",!1,!0);sue.set(n,!!t)}}function xTe(n,e){n.children=n.children.filter(i=>i.type!==3),sue.get(n)?(e.pushStringPart("<template>"),Nf(n,e,!1,!0),e.pushStringPart("</template>")):Nf(n,e,!1,!0)}var ETe=Object.defineProperty,DTe=Object.defineProperties,ITe=Object.getOwnPropertyDescriptors,gX=Object.getOwnPropertySymbols,TTe=Object.prototype.hasOwnProperty,NTe=Object.prototype.propertyIsEnumerable,pX=(n,e,t)=>e in n?ETe(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,e_=(n,e)=>{for(var t in e||(e={}))TTe.call(e,t)&&pX(n,t,e[t]);if(gX)for(var t of gX(e))NTe.call(e,t)&&pX(n,t,e[t]);return n},ATe=(n,e)=>DTe(n,ITe(e));const rue=new WeakMap,oue=Symbol(),aue=new WeakMap,PTe=(n,e)=>{if(n.type!==1||n.tagType!==1)return;const t=DM(n,e,!0),i=ig(t)&&t.callee===Xb;if(aue.set(n,t),Sm(t))return t===oC?pTe(n,e):t===nE?STe(n,e):t===_v?LTe(n):void 0;const s=[],r=CB(n);return function(){r.children.length&&Kk(r,e,(h,d,f)=>(s.push(WTe(h,d,f,e)),Rl(void 0)));let a="null";if(n.props.length){const{props:h,directives:d}=mC(n,e,void 0,!0,i);(h||d.length)&&(a=aU(h,d,e))}const l=[];rue.set(n,l);const c=(h,d,f,g)=>{const p=h&&EM(h)||"_",m=Rl([p,"_push","_parent","_scopeId"],void 0,!0,!0,g);return l.push({type:oue,fn:m,children:f,vnodeBranch:s[l.length]}),m},u=n.children.length?Kk(n,e,c).slots:"null";typeof t!="string"?n.ssrCodegenNode=$t(e.helper($ce),["_push",$t(e.helper(Yx),[t,a,u]),"_parent"]):n.ssrCodegenNode=$t(e.helper(zce),[t,a,u,"_parent"])}};function RTe(n,e,t){const i=aue.get(n);if(n.ssrCodegenNode){const s=rue.get(n)||[];for(let r=0;r<s.length;r++){const{fn:o,vnodeBranch:a}=s[r];o.body=UN(ct("_push",!1),vC(s[r],e,!1,!0),a)}e.withSlotScopeId&&n.ssrCodegenNode.arguments.push("_scopeId"),typeof i=="string"?e.pushStatement($t("_push",[n.ssrCodegenNode])):e.pushStatement(n.ssrCodegenNode)}else{if(i===Z1)return gTe(n,e);if(i===oC)return mTe(n,e);if(i===nE)return kTe(n,e);if(t.type===oue&&e.pushStringPart(""),i===_v)return xTe(n,e);Nf(n,e)}}const lue=new WeakMap,[MTe,OTe]=Dz(!0),FTe=[...MTe,...Bz],BTe=e_(e_({},OTe),Wz);function WTe(n,e,t,i){const s=lue.get(i.root),r=ATe(e_({},s),{nodeTransforms:[...FTe,...s.nodeTransforms||[]],directiveTransforms:e_(e_({},BTe),s.directiveTransforms||{})});return VTe({type:1,ns:0,tag:"template",tagType:3,isSelfClosing:!1,props:[{type:7,name:"slot",exp:n,arg:void 0,modifiers:[],loc:Cs},{type:7,name:"for",exp:e,arg:void 0,modifiers:[],loc:Cs}],children:t,loc:Cs,codegenNode:void 0},r,i),Rae(t)}function VTe(n,e,t){const i=cC([n]),s=Jx(i,e);s.ssr=!1,s.scopes=e_({},t.scopes),s.identifiers=e_({},t.identifiers),s.imports=t.imports,uC(i,s),["helpers","components","directives"].forEach(r=>{s[r].forEach((o,a)=>{if(r==="helpers"){const l=t.helpers.get(a);l===void 0?t.helpers.set(a,o):t.helpers.set(a,o+l)}else t[r].add(o)})})}function CB(n){if(aa(n))return n.map(CB);if(ig(n)){const e={};for(const t in n)e[t]=CB(n[t]);return e}else return n}function HTe(n,e){const t=cue(n,e);if(e.ssrCssVars){const s=Jx(cC([]),e),r=Jo(ct(e.ssrCssVars,!1),s);t.body.push(io(["const _cssVars = { style: ",r,"}"])),Array.from(s.helpers.keys()).forEach(o=>{n.helpers.add(o)})}const i=n.children.length>1&&n.children.some(s=>!WS(s));Nf(n,t,i),n.codegenNode=Xx(t.body),n.ssrHelpers=Array.from(new Set([...Array.from(n.helpers).filter(s=>s in yB),...t.helpers])),n.helpers=new Set(Array.from(n.helpers).filter(s=>!(s in yB)))}function cue(n,e,t=new Set,i=!1){const s=[];let r=null;return{root:n,options:e,body:s,helpers:t,withSlotScopeId:i,onError:e.onError||(o=>{throw o}),helper(o){return t.add(o),o},pushStringPart(o){if(!r){const c=$t("_push");s.push(c),r=U$([]),c.arguments.push(r)}const a=r.elements,l=a[a.length-1];Ui(o)&&Ui(l)?a[a.length-1]+=o:a.push(o)},pushStatement(o){r=null,s.push(o)}}}function $Te(n,e=n.withSlotScopeId){return cue(n.root,n.options,n.helpers,e)}function Nf(n,e,t=!1,i=!1){t&&e.pushStringPart("<!--[-->");const{children:s}=n;for(let r=0;r<s.length;r++){const o=s[r];switch(o.type){case 1:switch(o.tagType){case 0:wTe(o,e);break;case 1:RTe(o,e,n);break;case 2:dTe(o,e);break;case 3:break;default:return e.onError(Yk(67,o.loc)),o}break;case 2:e.pushStringPart(Eh(o.content));break;case 3:e.pushStringPart(`<!--${o.content}-->`);break;case 5:e.pushStringPart($t(e.helper(sU),[o.content]));break;case 9:lTe(o,e,i);break;case 11:uTe(o,e,i);break;case 10:break;case 12:case 8:break;default:return e.onError(Yk(67,o.loc)),o}}t&&e.pushStringPart("<!--]-->")}function vC(n,e,t=!1,i=e.withSlotScopeId){const s=$Te(e,i);return Nf(n,s,t),Xx(s.body)}const zTe=(n,e,t)=>{const i=n.exp;function s(){const o=ja(e,"value");o&&t.onError(No(60,o.loc))}function r(o){if(o.tag==="option"){if(o.props.findIndex(a=>a.name==="selected")===-1){const a=mX(o);o.ssrCodegenNode.elements.push(jh($t(t.helper(oU),[jh($t("Array.isArray",[i]),$t(t.helper(bB),[i,a]),$t(t.helper(FT),[i,a]))]),ct(" selected",!0),ct("",!0),!1))}}else o.tag==="optgroup"&&o.children.forEach(a=>r(a))}if(e.tagType===0){const o={props:[]},a=[En("value",i)];if(e.tag==="input"){const l=ja(e,"type");if(l){const c=mX(e);if(l.type===7)o.ssrTagParts=[$t(t.helper(Xce),[l.exp,i,c])];else if(l.value)switch(l.value.content){case"radio":o.props=[En("checked",$t(t.helper(FT),[i,c]))];break;case"checkbox":const u=ja(e,"true-value");if(u){const h=u.type===6?JSON.stringify(u.value.content):u.exp;o.props=[En("checked",$t(t.helper(FT),[i,h]))]}else o.props=[En("checked",jh($t("Array.isArray",[i]),$t(t.helper(bB),[i,c]),i))];break;case"file":t.onError(No(59,n.loc));break;default:s(),o.props=a;break}}else _M(e)||(s(),o.props=a)}else e.tag==="textarea"?(s(),e.children=[zN(i,i.loc)]):e.tag==="select"?e.children.forEach(l=>{l.type===1&&r(l)}):t.onError(No(57,n.loc));return o}else return TM(n,e,t)};function mX(n){const e=ja(n,"value");return e?e.type===7?e.exp:ct(e.value.content,!0):ct("null",!1)}const UTe=(n,e,t)=>(n.exp||t.onError(No(61)),{props:[En("style",jh(n.exp,ct("null",!1),Va([En("display",ct("none",!0))]),!1))]}),wB=n=>n.children.filter(e=>e.type!==3),V4=n=>wB(n).length===1,jTe=(n,e)=>{if(n.type===0&&(e.identifiers._attrs=1),n.type===1&&n.tagType===1&&(gu(n.tag,"Transition")||gu(n.tag,"KeepAlive"))){const i=wB(e.root);if(i.length===1&&i[0]===n){V4(n)&&H4(n.children[0]);return}}const t=e.parent;if(!(!t||t.type!==0))if(n.type===10&&V4(n)){let i=!1;for(const s of wB(t))if(s.type===9||s.type===1&&kr(s,"if")){if(i)return;i=!0}else if(!i||!(s.type===1&&kr(s,/else/,!0)))return;H4(n.children[0])}else V4(t)&&H4(n)};function H4(n){n.type===1&&(n.tagType===0||n.tagType===1)&&!kr(n,"for")&&n.props.push({type:7,name:"bind",arg:void 0,exp:ct("_attrs",!1),modifiers:[],loc:Cs})}const qTe=(n,e)=>{if(!e.ssrCssVars)return;n.type===0&&(e.identifiers._cssVars=1);const t=e.parent;if(!(!t||t.type!==0))if(n.type===10)for(const i of n.children)aA(i);else aA(n)};function aA(n){if(n.type===1&&(n.tagType===0||n.tagType===1)&&!kr(n,"for"))if(gu(n.tag,"Suspense"))for(const e of n.children)e.type===1&&e.tagType===3?e.children.forEach(aA):aA(e);else n.props.push({type:7,name:"bind",arg:void 0,exp:ct("_cssVars",!1),modifiers:[],loc:Cs})}var KTe=Object.defineProperty,GTe=Object.defineProperties,YTe=Object.getOwnPropertyDescriptors,_X=Object.getOwnPropertySymbols,ZTe=Object.prototype.hasOwnProperty,XTe=Object.prototype.propertyIsEnumerable,vX=(n,e,t)=>e in n?KTe(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,ED=(n,e)=>{for(var t in e||(e={}))ZTe.call(e,t)&&vX(n,t,e[t]);if(_X)for(var t of _X(e))XTe.call(e,t)&&vX(n,t,e[t]);return n},bX=(n,e)=>GTe(n,YTe(e));function QTe(n,e={}){e=bX(ED(ED({},e),sy),{ssr:!0,inSSR:!0,scopeId:e.mode==="function"?null:e.scopeId,prefixIdentifiers:!0,cacheHandlers:!1,hoistStatic:!1});const t=vM(n,e);return lue.set(t,e),yM(t,bX(ED({},e),{hoistStatic:!1,nodeTransforms:[aTe,cTe,kz,bz,hTe,jTe,qTe,_Te,PTe,Sz,Oz,...e.nodeTransforms||[]],directiveTransforms:ED({bind:Ez,on:IM,model:zTe,show:UTe,cloak:HS,once:HS,memo:HS},e.directiveTransforms||{})})),HTe(t,e),_z(t,e)}var JTe=Object.freeze({__proto__:null,compile:QTe}),eNe={},tNe=Object.freeze({__proto__:null,default:eNe}),iNe=Qx(tNe),lU=Qx(DEe),nNe=Qx(NIe);const yX={};function mp(n){!(typeof process<"u"&&!0)&&!yX[n]&&(yX[n]=!0,SB(n))}function SB(n){console.warn(`\x1B[1m\x1B[33m[@vue/compiler-sfc]\x1B[0m\x1B[33m ${n}\x1B[0m +`)}var sNe=Object.defineProperty,rNe=Object.defineProperties,oNe=Object.getOwnPropertyDescriptors,CX=Object.getOwnPropertySymbols,aNe=Object.prototype.hasOwnProperty,lNe=Object.prototype.propertyIsEnumerable,wX=(n,e,t)=>e in n?sNe(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,cU=(n,e)=>{for(var t in e||(e={}))aNe.call(e,t)&&wX(n,t,e[t]);if(CX)for(var t of CX(e))lNe.call(e,t)&&wX(n,t,e[t]);return n},uue=(n,e)=>rNe(n,oNe(e));function cNe({source:n,filename:e,preprocessOptions:t},i){let s="",r=null;if(i.render(n,cU({filename:e},t),(o,a)=>{o&&(r=o),s=a}),r)throw r;return s}function hue(n){const{preprocessLang:e,preprocessCustomRequire:t}=n;if(e&&!t)throw new Error("[@vue/compiler-sfc] Template preprocessing in the browser build must provide the `preprocessCustomRequire` option to return the in-browser version of the preprocessor in the shape of { render(): string }.");const i=e?t?t(e):void 0:!1;if(i)try{return SX(uue(cU({},n),{source:cNe(n,i)}))}catch(s){return{code:"export default function render() {}",source:n.source,tips:[],errors:[s]}}else return e?{code:"export default function render() {}",source:n.source,tips:[`Component ${n.filename} uses lang ${e} for template. Please install the language preprocessor.`],errors:[`Component ${n.filename} uses lang ${e} for template, however it is not installed.`]}:SX(n)}function SX({filename:n,id:e,scoped:t,slotted:i,inMap:s,source:r,ssr:o=!1,ssrCssVars:a,isProd:l=!1,compiler:c=o?JTe:Ple,compilerOptions:u={},transformAssetUrls:h}){const d=[],f=[];let g=[];if(ig(h)){const E=tTe(h);g=[iTe(E),oTe(E)]}else h!==!1&&(g=[Vce,Hce]);o&&!a&&mp("compileTemplate is called with `ssr: true` but no corresponding `cssVars` option.`."),e||(mp("compileTemplate now requires the `id` option.`."),e="");const p=e.replace(/^data-v-/,""),m=`data-v-${p}`;let{code:_,ast:b,preamble:y,map:w}=c.compile(r,uue(cU({mode:"module",prefixIdentifiers:!0,hoistStatic:!0,cacheHandlers:!0,ssrCssVars:o&&a&&a.length?zle(a,p,l,!0):"",scopeId:t?m:void 0,slotted:i,sourceMap:!0},u),{hmr:!l,nodeTransforms:g.concat(u.nodeTransforms||[]),filename:n,onError:E=>d.push(E),onWarn:E=>f.push(E)}));s&&(w&&(w=uNe(s,w)),d.length&&hNe(d,r,s));const S=f.map(E=>{let L=E.message;return E.loc&&(L+=` +${Yb(r,E.loc.start.offset,E.loc.end.offset)}`),L});return{code:_,ast:b,preamble:y,source:r,errors:d,tips:S,map:w}}function uNe(n,e){if(!n)return e;if(!e)return n;const t=new AZ(n),i=new AZ(e),s=new mz;i.eachMapping(o=>{if(o.originalLine==null)return;const a=t.originalPositionFor({line:o.originalLine,column:o.originalColumn});a.source!=null&&s.addMapping({generated:{line:o.generatedLine,column:o.generatedColumn},original:{line:a.line,column:o.originalColumn},source:a.source,name:a.name})});const r=s;return t.sources.forEach(o=>{r._sources.add(o);const a=t.sourceContentFor(o);a!=null&&s.setSourceContent(o,a)}),r._sourceRoot=n.sourceRoot,r._file=n.file,r.toJSON()}function hNe(n,e,t){const i=t.sourcesContent[0],s=i.indexOf(e),r=i.slice(0,s).split(/\r?\n/).length-1;n.forEach(o=>{o.loc&&(o.loc.start.line+=r,o.loc.start.offset+=s,o.loc.end!==o.loc.start&&(o.loc.end.line+=r,o.loc.end.offset+=s))})}var uU={exports:{}};function due(){return!1}function fue(){throw new Error("tty.ReadStream is not implemented")}function gue(){throw new Error("tty.ReadStream is not implemented")}var dNe={isatty:due,ReadStream:fue,WriteStream:gue},fNe=Object.freeze({__proto__:null,ReadStream:fue,WriteStream:gue,default:dNe,isatty:due}),gNe=Qx(fNe);let pNe=gNe,mNe=!("NO_COLOR"in{}||Po.argv.includes("--no-color"))&&("FORCE_COLOR"in{}||Po.argv.includes("--color")||!1||pNe.isatty(1)&&Po.env.TERM!=="dumb"||"CI"in{}),ks=(n,e,t=n)=>i=>{let s=""+i,r=s.indexOf(e,n.length);return~r?n+pue(s,e,t,r)+e:n+s+e},pue=(n,e,t,i)=>{let s=n.substring(0,i)+t,r=n.substring(i+e.length),o=r.indexOf(e);return~o?s+pue(r,e,t,o):s+r},mue=(n=mNe)=>({isColorSupported:n,reset:n?e=>`\x1B[0m${e}\x1B[0m`:String,bold:n?ks("\x1B[1m","\x1B[22m","\x1B[22m\x1B[1m"):String,dim:n?ks("\x1B[2m","\x1B[22m","\x1B[22m\x1B[2m"):String,italic:n?ks("\x1B[3m","\x1B[23m"):String,underline:n?ks("\x1B[4m","\x1B[24m"):String,inverse:n?ks("\x1B[7m","\x1B[27m"):String,hidden:n?ks("\x1B[8m","\x1B[28m"):String,strikethrough:n?ks("\x1B[9m","\x1B[29m"):String,black:n?ks("\x1B[30m","\x1B[39m"):String,red:n?ks("\x1B[31m","\x1B[39m"):String,green:n?ks("\x1B[32m","\x1B[39m"):String,yellow:n?ks("\x1B[33m","\x1B[39m"):String,blue:n?ks("\x1B[34m","\x1B[39m"):String,magenta:n?ks("\x1B[35m","\x1B[39m"):String,cyan:n?ks("\x1B[36m","\x1B[39m"):String,white:n?ks("\x1B[37m","\x1B[39m"):String,gray:n?ks("\x1B[90m","\x1B[39m"):String,bgBlack:n?ks("\x1B[40m","\x1B[49m"):String,bgRed:n?ks("\x1B[41m","\x1B[49m"):String,bgGreen:n?ks("\x1B[42m","\x1B[49m"):String,bgYellow:n?ks("\x1B[43m","\x1B[49m"):String,bgBlue:n?ks("\x1B[44m","\x1B[49m"):String,bgMagenta:n?ks("\x1B[45m","\x1B[49m"):String,bgCyan:n?ks("\x1B[46m","\x1B[49m"):String,bgWhite:n?ks("\x1B[47m","\x1B[49m"):String});uU.exports=mue();uU.exports.createColors=mue;var _ue=uU.exports;const $4=39,kX=34,DD=92,LX=47,ID=10,uw=32,TD=12,ND=9,AD=13,_Ne=91,vNe=93,bNe=40,yNe=41,CNe=123,wNe=125,SNe=59,kNe=42,LNe=58,xNe=64,PD=/[\t\n\f\r "#'()/;[\\\]{}]/g,RD=/[\t\n\f\r !"#'():;@[\\\]{}]|\/(?=\*)/g,ENe=/.[\r\n"'(/\\]/,xX=/[\da-f]/i;var vue=function(e,t={}){let i=e.css.valueOf(),s=t.ignoreErrors,r,o,a,l,c,u,h,d,f,g,p=i.length,m=0,_=[],b=[];function y(){return m}function w(k){throw e.error("Unclosed "+k,m)}function S(){return b.length===0&&m>=p}function E(k){if(b.length)return b.pop();if(m>=p)return;let x=k?k.ignoreUnclosed:!1;switch(r=i.charCodeAt(m),r){case ID:case uw:case ND:case AD:case TD:{o=m;do o+=1,r=i.charCodeAt(o);while(r===uw||r===ID||r===ND||r===AD||r===TD);g=["space",i.slice(m,o)],m=o-1;break}case _Ne:case vNe:case CNe:case wNe:case LNe:case SNe:case yNe:{let I=String.fromCharCode(r);g=[I,I,m];break}case bNe:{if(d=_.length?_.pop()[1]:"",f=i.charCodeAt(m+1),d==="url"&&f!==$4&&f!==kX&&f!==uw&&f!==ID&&f!==ND&&f!==TD&&f!==AD){o=m;do{if(u=!1,o=i.indexOf(")",o+1),o===-1)if(s||x){o=m;break}else w("bracket");for(h=o;i.charCodeAt(h-1)===DD;)h-=1,u=!u}while(u);g=["brackets",i.slice(m,o+1),m,o],m=o}else o=i.indexOf(")",m+1),l=i.slice(m,o+1),o===-1||ENe.test(l)?g=["(","(",m]:(g=["brackets",l,m,o],m=o);break}case $4:case kX:{a=r===$4?"'":'"',o=m;do{if(u=!1,o=i.indexOf(a,o+1),o===-1)if(s||x){o=m+1;break}else w("string");for(h=o;i.charCodeAt(h-1)===DD;)h-=1,u=!u}while(u);g=["string",i.slice(m,o+1),m,o],m=o;break}case xNe:{PD.lastIndex=m+1,PD.test(i),PD.lastIndex===0?o=i.length-1:o=PD.lastIndex-2,g=["at-word",i.slice(m,o+1),m,o],m=o;break}case DD:{for(o=m,c=!0;i.charCodeAt(o+1)===DD;)o+=1,c=!c;if(r=i.charCodeAt(o+1),c&&r!==LX&&r!==uw&&r!==ID&&r!==ND&&r!==AD&&r!==TD&&(o+=1,xX.test(i.charAt(o)))){for(;xX.test(i.charAt(o+1));)o+=1;i.charCodeAt(o+1)===uw&&(o+=1)}g=["word",i.slice(m,o+1),m,o],m=o;break}default:{r===LX&&i.charCodeAt(m+1)===kNe?(o=i.indexOf("*/",m+2)+1,o===0&&(s||x?o=i.length:w("comment")),g=["comment",i.slice(m,o+1),m,o],m=o):(RD.lastIndex=m+1,RD.test(i),RD.lastIndex===0?o=i.length-1:o=RD.lastIndex-2,g=["word",i.slice(m,o+1),m,o],_.push(g),m=o);break}}return m++,g}function L(k){b.push(k)}return{back:L,endOfFile:S,nextToken:E,position:y}};let Ho=_ue,DNe=vue,bue;function INe(n){bue=n}const TNe={";":Ho.yellow,":":Ho.yellow,"(":Ho.cyan,")":Ho.cyan,"[":Ho.yellow,"]":Ho.yellow,"{":Ho.yellow,"}":Ho.yellow,"at-word":Ho.cyan,brackets:Ho.cyan,call:Ho.cyan,class:Ho.yellow,comment:Ho.gray,hash:Ho.magenta,string:Ho.green};function NNe([n,e],t){if(n==="word"){if(e[0]===".")return"class";if(e[0]==="#")return"hash"}if(!t.endOfFile()){let i=t.nextToken();if(t.back(i),i[0]==="brackets"||i[0]==="(")return"call"}return n}function yue(n){let e=DNe(new bue(n),{ignoreErrors:!0}),t="";for(;!e.endOfFile();){let i=e.nextToken(),s=TNe[NNe(i,e)];s?t+=i[1].split(/\r?\n/).map(r=>s(r)).join(` +`):t+=i[1]}return t}yue.registerInput=INe;var Cue=yue;let EX=_ue,DX=Cue,kB=class wue extends Error{constructor(e,t,i,s,r,o){super(e),this.name="CssSyntaxError",this.reason=e,r&&(this.file=r),s&&(this.source=s),o&&(this.plugin=o),typeof t<"u"&&typeof i<"u"&&(typeof t=="number"?(this.line=t,this.column=i):(this.line=t.line,this.column=t.column,this.endLine=i.line,this.endColumn=i.column)),this.setMessage(),Error.captureStackTrace&&Error.captureStackTrace(this,wue)}setMessage(){this.message=this.plugin?this.plugin+": ":"",this.message+=this.file?this.file:"<css input>",typeof this.line<"u"&&(this.message+=":"+this.line+":"+this.column),this.message+=": "+this.reason}showSourceCode(e){if(!this.source)return"";let t=this.source;e==null&&(e=EX.isColorSupported),DX&&e&&(t=DX(t));let i=t.split(/\r?\n/),s=Math.max(this.line-3,0),r=Math.min(this.line+2,i.length),o=String(r).length,a,l;if(e){let{bold:c,gray:u,red:h}=EX.createColors(!0);a=d=>c(h(d)),l=d=>u(d)}else a=l=c=>c;return i.slice(s,r).map((c,u)=>{let h=s+1+u,d=" "+(" "+h).slice(-o)+" | ";if(h===this.line){let f=l(d.replace(/\d/g," "))+c.slice(0,this.column-1).replace(/[^\t]/g," ");return a(">")+l(d)+c+` + `+f+a("^")}return" "+l(d)+c}).join(` +`)}toString(){let e=this.showSourceCode();return e&&(e=` + +`+e+` +`),this.name+": "+this.message+e}};var hU=kB;kB.default=kB;var sE={};sE.isClean=Symbol("isClean");sE.my=Symbol("my");const IX={after:` +`,beforeClose:` +`,beforeComment:` +`,beforeDecl:` +`,beforeOpen:" ",beforeRule:` +`,colon:": ",commentLeft:" ",commentRight:" ",emptyBody:"",indent:" ",semicolon:!1};function ANe(n){return n[0].toUpperCase()+n.slice(1)}let LB=class{constructor(e){this.builder=e}atrule(e,t){let i="@"+e.name,s=e.params?this.rawValue(e,"params"):"";if(typeof e.raws.afterName<"u"?i+=e.raws.afterName:s&&(i+=" "),e.nodes)this.block(e,i+s);else{let r=(e.raws.between||"")+(t?";":"");this.builder(i+s+r,e)}}beforeAfter(e,t){let i;e.type==="decl"?i=this.raw(e,null,"beforeDecl"):e.type==="comment"?i=this.raw(e,null,"beforeComment"):t==="before"?i=this.raw(e,null,"beforeRule"):i=this.raw(e,null,"beforeClose");let s=e.parent,r=0;for(;s&&s.type!=="root";)r+=1,s=s.parent;if(i.includes(` +`)){let o=this.raw(e,null,"indent");if(o.length)for(let a=0;a<r;a++)i+=o}return i}block(e,t){let i=this.raw(e,"between","beforeOpen");this.builder(t+i+"{",e,"start");let s;e.nodes&&e.nodes.length?(this.body(e),s=this.raw(e,"after")):s=this.raw(e,"after","emptyBody"),s&&this.builder(s),this.builder("}",e,"end")}body(e){let t=e.nodes.length-1;for(;t>0&&e.nodes[t].type==="comment";)t-=1;let i=this.raw(e,"semicolon");for(let s=0;s<e.nodes.length;s++){let r=e.nodes[s],o=this.raw(r,"before");o&&this.builder(o),this.stringify(r,t!==s||i)}}comment(e){let t=this.raw(e,"left","commentLeft"),i=this.raw(e,"right","commentRight");this.builder("/*"+t+e.text+i+"*/",e)}decl(e,t){let i=this.raw(e,"between","colon"),s=e.prop+i+this.rawValue(e,"value");e.important&&(s+=e.raws.important||" !important"),t&&(s+=";"),this.builder(s,e)}document(e){this.body(e)}raw(e,t,i){let s;if(i||(i=t),t&&(s=e.raws[t],typeof s<"u"))return s;let r=e.parent;if(i==="before"&&(!r||r.type==="root"&&r.first===e||r&&r.type==="document"))return"";if(!r)return IX[i];let o=e.root();if(o.rawCache||(o.rawCache={}),typeof o.rawCache[i]<"u")return o.rawCache[i];if(i==="before"||i==="after")return this.beforeAfter(e,i);{let a="raw"+ANe(i);this[a]?s=this[a](o,e):o.walk(l=>{if(s=l.raws[t],typeof s<"u")return!1})}return typeof s>"u"&&(s=IX[i]),o.rawCache[i]=s,s}rawBeforeClose(e){let t;return e.walk(i=>{if(i.nodes&&i.nodes.length>0&&typeof i.raws.after<"u")return t=i.raws.after,t.includes(` +`)&&(t=t.replace(/[^\n]+$/,"")),!1}),t&&(t=t.replace(/\S/g,"")),t}rawBeforeComment(e,t){let i;return e.walkComments(s=>{if(typeof s.raws.before<"u")return i=s.raws.before,i.includes(` +`)&&(i=i.replace(/[^\n]+$/,"")),!1}),typeof i>"u"?i=this.raw(t,null,"beforeDecl"):i&&(i=i.replace(/\S/g,"")),i}rawBeforeDecl(e,t){let i;return e.walkDecls(s=>{if(typeof s.raws.before<"u")return i=s.raws.before,i.includes(` +`)&&(i=i.replace(/[^\n]+$/,"")),!1}),typeof i>"u"?i=this.raw(t,null,"beforeRule"):i&&(i=i.replace(/\S/g,"")),i}rawBeforeOpen(e){let t;return e.walk(i=>{if(i.type!=="decl"&&(t=i.raws.between,typeof t<"u"))return!1}),t}rawBeforeRule(e){let t;return e.walk(i=>{if(i.nodes&&(i.parent!==e||e.first!==i)&&typeof i.raws.before<"u")return t=i.raws.before,t.includes(` +`)&&(t=t.replace(/[^\n]+$/,"")),!1}),t&&(t=t.replace(/\S/g,"")),t}rawColon(e){let t;return e.walkDecls(i=>{if(typeof i.raws.between<"u")return t=i.raws.between.replace(/[^\s:]/g,""),!1}),t}rawEmptyBody(e){let t;return e.walk(i=>{if(i.nodes&&i.nodes.length===0&&(t=i.raws.after,typeof t<"u"))return!1}),t}rawIndent(e){if(e.raws.indent)return e.raws.indent;let t;return e.walk(i=>{let s=i.parent;if(s&&s!==e&&s.parent&&s.parent===e&&typeof i.raws.before<"u"){let r=i.raws.before.split(` +`);return t=r[r.length-1],t=t.replace(/\S/g,""),!1}}),t}rawSemicolon(e){let t;return e.walk(i=>{if(i.nodes&&i.nodes.length&&i.last.type==="decl"&&(t=i.raws.semicolon,typeof t<"u"))return!1}),t}rawValue(e,t){let i=e[t],s=e.raws[t];return s&&s.value===i?s.raw:i}root(e){this.body(e),e.raws.after&&this.builder(e.raws.after)}rule(e){this.block(e,this.rawValue(e,"selector")),e.raws.ownSemicolon&&this.builder(e.raws.ownSemicolon,e,"end")}stringify(e,t){if(!this[e.type])throw new Error("Unknown AST node type "+e.type+". Maybe you need to change PostCSS stringifier.");this[e.type](e,t)}};var Sue=LB;LB.default=LB;let PNe=Sue;function xB(n,e){new PNe(e).stringify(n)}var BM=xB;xB.default=xB;let{isClean:MD,my:RNe}=sE,MNe=hU,ONe=Sue,FNe=BM;function EB(n,e){let t=new n.constructor;for(let i in n){if(!Object.prototype.hasOwnProperty.call(n,i)||i==="proxyCache")continue;let s=n[i],r=typeof s;i==="parent"&&r==="object"?e&&(t[i]=e):i==="source"?t[i]=s:Array.isArray(s)?t[i]=s.map(o=>EB(o,t)):(r==="object"&&s!==null&&(s=EB(s)),t[i]=s)}return t}let DB=class{constructor(e={}){this.raws={},this[MD]=!1,this[RNe]=!0;for(let t in e)if(t==="nodes"){this.nodes=[];for(let i of e[t])typeof i.clone=="function"?this.append(i.clone()):this.append(i)}else this[t]=e[t]}addToError(e){if(e.postcssNode=this,e.stack&&this.source&&/\n\s{4}at /.test(e.stack)){let t=this.source;e.stack=e.stack.replace(/\n\s{4}at /,`$&${t.input.from}:${t.start.line}:${t.start.column}$&`)}return e}after(e){return this.parent.insertAfter(this,e),this}assign(e={}){for(let t in e)this[t]=e[t];return this}before(e){return this.parent.insertBefore(this,e),this}cleanRaws(e){delete this.raws.before,delete this.raws.after,e||delete this.raws.between}clone(e={}){let t=EB(this);for(let i in e)t[i]=e[i];return t}cloneAfter(e={}){let t=this.clone(e);return this.parent.insertAfter(this,t),t}cloneBefore(e={}){let t=this.clone(e);return this.parent.insertBefore(this,t),t}error(e,t={}){if(this.source){let{end:i,start:s}=this.rangeBy(t);return this.source.input.error(e,{column:s.column,line:s.line},{column:i.column,line:i.line},t)}return new MNe(e)}getProxyProcessor(){return{get(e,t){return t==="proxyOf"?e:t==="root"?()=>e.root().toProxy():e[t]},set(e,t,i){return e[t]===i||(e[t]=i,(t==="prop"||t==="value"||t==="name"||t==="params"||t==="important"||t==="text")&&e.markDirty()),!0}}}markDirty(){if(this[MD]){this[MD]=!1;let e=this;for(;e=e.parent;)e[MD]=!1}}next(){if(!this.parent)return;let e=this.parent.index(this);return this.parent.nodes[e+1]}positionBy(e,t){let i=this.source.start;if(e.index)i=this.positionInside(e.index,t);else if(e.word){t=this.toString();let s=t.indexOf(e.word);s!==-1&&(i=this.positionInside(s,t))}return i}positionInside(e,t){let i=t||this.toString(),s=this.source.start.column,r=this.source.start.line;for(let o=0;o<e;o++)i[o]===` +`?(s=1,r+=1):s+=1;return{column:s,line:r}}prev(){if(!this.parent)return;let e=this.parent.index(this);return this.parent.nodes[e-1]}rangeBy(e){let t={column:this.source.start.column,line:this.source.start.line},i=this.source.end?{column:this.source.end.column+1,line:this.source.end.line}:{column:t.column+1,line:t.line};if(e.word){let s=this.toString(),r=s.indexOf(e.word);r!==-1&&(t=this.positionInside(r,s),i=this.positionInside(r+e.word.length,s))}else e.start?t={column:e.start.column,line:e.start.line}:e.index&&(t=this.positionInside(e.index)),e.end?i={column:e.end.column,line:e.end.line}:e.endIndex?i=this.positionInside(e.endIndex):e.index&&(i=this.positionInside(e.index+1));return(i.line<t.line||i.line===t.line&&i.column<=t.column)&&(i={column:t.column+1,line:t.line}),{end:i,start:t}}raw(e,t){return new ONe().raw(this,e,t)}remove(){return this.parent&&this.parent.removeChild(this),this.parent=void 0,this}replaceWith(...e){if(this.parent){let t=this,i=!1;for(let s of e)s===this?i=!0:i?(this.parent.insertAfter(t,s),t=s):this.parent.insertBefore(t,s);i||this.remove()}return this}root(){let e=this;for(;e.parent&&e.parent.type!=="document";)e=e.parent;return e}toJSON(e,t){let i={},s=t==null;t=t||new Map;let r=0;for(let o in this){if(!Object.prototype.hasOwnProperty.call(this,o)||o==="parent"||o==="proxyCache")continue;let a=this[o];if(Array.isArray(a))i[o]=a.map(l=>typeof l=="object"&&l.toJSON?l.toJSON(null,t):l);else if(typeof a=="object"&&a.toJSON)i[o]=a.toJSON(null,t);else if(o==="source"){let l=t.get(a.input);l==null&&(l=r,t.set(a.input,r),r++),i[o]={end:a.end,inputId:l,start:a.start}}else i[o]=a}return s&&(i.inputs=[...t.keys()].map(o=>o.toJSON())),i}toProxy(){return this.proxyCache||(this.proxyCache=new Proxy(this,this.getProxyProcessor())),this.proxyCache}toString(e=FNe){e.stringify&&(e=e.stringify);let t="";return e(this,i=>{t+=i}),t}warn(e,t,i){let s={node:this};for(let r in i)s[r]=i[r];return e.warn(t,s)}get proxyOf(){return this}};var WM=DB;DB.default=DB;let BNe=WM,IB=class extends BNe{constructor(e){e&&typeof e.value<"u"&&typeof e.value!="string"&&(e={...e,value:String(e.value)}),super(e),this.type="decl"}get variable(){return this.prop.startsWith("--")||this.prop[0]==="$"}};var VM=IB;IB.default=IB;var kue=Qx(jIe);let WNe="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict",VNe=(n,e=21)=>(t=e)=>{let i="",s=t;for(;s--;)i+=n[Math.random()*n.length|0];return i},HNe=(n=21)=>{let e="",t=n;for(;t--;)e+=WNe[Math.random()*64|0];return e};var $Ne={nanoid:HNe,customAlphabet:VNe};let{SourceMapConsumer:TX,SourceMapGenerator:NX}=hC,{existsSync:zNe,readFileSync:UNe}=iNe,{dirname:z4,join:jNe}=lU;function qNe(n){return Ke?Ke.from(n,"base64").toString():window.atob(n)}let TB=class{constructor(e,t){if(t.map===!1)return;this.loadAnnotation(e),this.inline=this.startWith(this.annotation,"data:");let i=t.map?t.map.prev:void 0,s=this.loadMap(t.from,i);!this.mapFile&&t.from&&(this.mapFile=t.from),this.mapFile&&(this.root=z4(this.mapFile)),s&&(this.text=s)}consumer(){return this.consumerCache||(this.consumerCache=new TX(this.text)),this.consumerCache}decodeInline(e){let t=/^data:application\/json;charset=utf-?8;base64,/,i=/^data:application\/json;base64,/,s=/^data:application\/json;charset=utf-?8,/,r=/^data:application\/json,/;if(s.test(e)||r.test(e))return decodeURIComponent(e.substr(RegExp.lastMatch.length));if(t.test(e)||i.test(e))return qNe(e.substr(RegExp.lastMatch.length));let o=e.match(/data:application\/json;([^,]+),/)[1];throw new Error("Unsupported source map encoding "+o)}getAnnotationURL(e){return e.replace(/^\/\*\s*# sourceMappingURL=/,"").trim()}isMap(e){return typeof e!="object"?!1:typeof e.mappings=="string"||typeof e._mappings=="string"||Array.isArray(e.sections)}loadAnnotation(e){let t=e.match(/\/\*\s*# sourceMappingURL=/gm);if(!t)return;let i=e.lastIndexOf(t.pop()),s=e.indexOf("*/",i);i>-1&&s>-1&&(this.annotation=this.getAnnotationURL(e.substring(i,s)))}loadFile(e){if(this.root=z4(e),zNe(e))return this.mapFile=e,UNe(e,"utf-8").toString().trim()}loadMap(e,t){if(t===!1)return!1;if(t){if(typeof t=="string")return t;if(typeof t=="function"){let i=t(e);if(i){let s=this.loadFile(i);if(!s)throw new Error("Unable to load previous source map: "+i.toString());return s}}else{if(t instanceof TX)return NX.fromSourceMap(t).toString();if(t instanceof NX)return t.toString();if(this.isMap(t))return JSON.stringify(t);throw new Error("Unsupported previous source map format: "+t.toString())}}else{if(this.inline)return this.decodeInline(this.annotation);if(this.annotation){let i=this.annotation;return e&&(i=jNe(z4(e),i)),this.loadFile(i)}}}startWith(e,t){return e?e.substr(0,t.length)===t:!1}withContent(){return!!(this.consumer().sourcesContent&&this.consumer().sourcesContent.length>0)}};var Lue=TB;TB.default=TB;let{SourceMapConsumer:KNe,SourceMapGenerator:GNe}=hC,{fileURLToPath:AX,pathToFileURL:OD}=kue,{isAbsolute:NB,resolve:AB}=lU,{nanoid:YNe}=$Ne,U4=Cue,PX=hU,ZNe=Lue,j4=Symbol("fromOffsetCache"),XNe=!!(KNe&&GNe),RX=!!(AB&&NB),lA=class{constructor(e,t={}){if(e===null||typeof e>"u"||typeof e=="object"&&!e.toString)throw new Error(`PostCSS received ${e} instead of CSS string`);if(this.css=e.toString(),this.css[0]==="\uFEFF"||this.css[0]==="￾"?(this.hasBOM=!0,this.css=this.css.slice(1)):this.hasBOM=!1,t.from&&(!RX||/^\w+:\/\//.test(t.from)||NB(t.from)?this.file=t.from:this.file=AB(t.from)),RX&&XNe){let i=new ZNe(this.css,t);if(i.text){this.map=i;let s=i.consumer().file;!this.file&&s&&(this.file=this.mapResolve(s))}}this.file||(this.id="<input css "+YNe(6)+">"),this.map&&(this.map.file=this.from)}error(e,t,i,s={}){let r,o,a;if(t&&typeof t=="object"){let c=t,u=i;if(typeof c.offset=="number"){let h=this.fromOffset(c.offset);t=h.line,i=h.col}else t=c.line,i=c.column;if(typeof u.offset=="number"){let h=this.fromOffset(u.offset);o=h.line,a=h.col}else o=u.line,a=u.column}else if(!i){let c=this.fromOffset(t);t=c.line,i=c.col}let l=this.origin(t,i,o,a);return l?r=new PX(e,l.endLine===void 0?l.line:{column:l.column,line:l.line},l.endLine===void 0?l.column:{column:l.endColumn,line:l.endLine},l.source,l.file,s.plugin):r=new PX(e,o===void 0?t:{column:i,line:t},o===void 0?i:{column:a,line:o},this.css,this.file,s.plugin),r.input={column:i,endColumn:a,endLine:o,line:t,source:this.css},this.file&&(OD&&(r.input.url=OD(this.file).toString()),r.input.file=this.file),r}fromOffset(e){let t,i;if(this[j4])i=this[j4];else{let r=this.css.split(` +`);i=new Array(r.length);let o=0;for(let a=0,l=r.length;a<l;a++)i[a]=o,o+=r[a].length+1;this[j4]=i}t=i[i.length-1];let s=0;if(e>=t)s=i.length-1;else{let r=i.length-2,o;for(;s<r;)if(o=s+(r-s>>1),e<i[o])r=o-1;else if(e>=i[o+1])s=o+1;else{s=o;break}}return{col:e-i[s]+1,line:s+1}}mapResolve(e){return/^\w+:\/\//.test(e)?e:AB(this.map.consumer().sourceRoot||this.map.root||".",e)}origin(e,t,i,s){if(!this.map)return!1;let r=this.map.consumer(),o=r.originalPositionFor({column:t,line:e});if(!o.source)return!1;let a;typeof i=="number"&&(a=r.originalPositionFor({column:s,line:i}));let l;NB(o.source)?l=OD(o.source):l=new URL(o.source,this.map.consumer().sourceRoot||OD(this.map.mapFile));let c={column:o.column,endColumn:a&&a.column,endLine:a&&a.line,line:o.line,url:l.toString()};if(l.protocol==="file:")if(AX)c.file=AX(l);else throw new Error("file: protocol is not available in this PostCSS build");let u=r.sourceContentFor(o.source);return u&&(c.source=u),c}toJSON(){let e={};for(let t of["hasBOM","css","file","id"])this[t]!=null&&(e[t]=this[t]);return this.map&&(e.map={...this.map},e.map.consumerCache&&(e.map.consumerCache=void 0)),e}get from(){return this.file||this.id}};var HM=lA;lA.default=lA;U4&&U4.registerInput&&U4.registerInput(lA);let{SourceMapConsumer:xue,SourceMapGenerator:WT}=hC,{dirname:VT,relative:Eue,resolve:Due,sep:Iue}=lU,{pathToFileURL:MX}=kue,QNe=HM,JNe=!!(xue&&WT),eAe=!!(VT&&Due&&Eue&&Iue),tAe=class{constructor(e,t,i,s){this.stringify=e,this.mapOpts=i.map||{},this.root=t,this.opts=i,this.css=s,this.usesFileUrls=!this.mapOpts.from&&this.mapOpts.absolute,this.memoizedFileURLs=new Map,this.memoizedPaths=new Map,this.memoizedURLs=new Map}addAnnotation(){let e;this.isInline()?e="data:application/json;base64,"+this.toBase64(this.map.toString()):typeof this.mapOpts.annotation=="string"?e=this.mapOpts.annotation:typeof this.mapOpts.annotation=="function"?e=this.mapOpts.annotation(this.opts.to,this.root):e=this.outputFile()+".map";let t=` +`;this.css.includes(`\r +`)&&(t=`\r +`),this.css+=t+"/*# sourceMappingURL="+e+" */"}applyPrevMaps(){for(let e of this.previous()){let t=this.toUrl(this.path(e.file)),i=e.root||VT(e.file),s;this.mapOpts.sourcesContent===!1?(s=new xue(e.text),s.sourcesContent&&(s.sourcesContent=s.sourcesContent.map(()=>null))):s=e.consumer(),this.map.applySourceMap(s,t,this.toUrl(this.path(i)))}}clearAnnotation(){if(this.mapOpts.annotation!==!1)if(this.root){let e;for(let t=this.root.nodes.length-1;t>=0;t--)e=this.root.nodes[t],e.type==="comment"&&e.text.indexOf("# sourceMappingURL=")===0&&this.root.removeChild(t)}else this.css&&(this.css=this.css.replace(/(\n)?\/\*#[\S\s]*?\*\/$/gm,""))}generate(){if(this.clearAnnotation(),eAe&&JNe&&this.isMap())return this.generateMap();{let e="";return this.stringify(this.root,t=>{e+=t}),[e]}}generateMap(){if(this.root)this.generateString();else if(this.previous().length===1){let e=this.previous()[0].consumer();e.file=this.outputFile(),this.map=WT.fromSourceMap(e)}else this.map=new WT({file:this.outputFile()}),this.map.addMapping({generated:{column:0,line:1},original:{column:0,line:1},source:this.opts.from?this.toUrl(this.path(this.opts.from)):"<no source>"});return this.isSourcesContent()&&this.setSourcesContent(),this.root&&this.previous().length>0&&this.applyPrevMaps(),this.isAnnotation()&&this.addAnnotation(),this.isInline()?[this.css]:[this.css,this.map]}generateString(){this.css="",this.map=new WT({file:this.outputFile()});let e=1,t=1,i="<no source>",s={generated:{column:0,line:0},original:{column:0,line:0},source:""},r,o;this.stringify(this.root,(a,l,c)=>{if(this.css+=a,l&&c!=="end"&&(s.generated.line=e,s.generated.column=t-1,l.source&&l.source.start?(s.source=this.sourcePath(l),s.original.line=l.source.start.line,s.original.column=l.source.start.column-1,this.map.addMapping(s)):(s.source=i,s.original.line=1,s.original.column=0,this.map.addMapping(s))),r=a.match(/\n/g),r?(e+=r.length,o=a.lastIndexOf(` +`),t=a.length-o):t+=a.length,l&&c!=="start"){let u=l.parent||{raws:{}};(!(l.type==="decl"||l.type==="atrule"&&!l.nodes)||l!==u.last||u.raws.semicolon)&&(l.source&&l.source.end?(s.source=this.sourcePath(l),s.original.line=l.source.end.line,s.original.column=l.source.end.column-1,s.generated.line=e,s.generated.column=t-2,this.map.addMapping(s)):(s.source=i,s.original.line=1,s.original.column=0,s.generated.line=e,s.generated.column=t-1,this.map.addMapping(s)))}})}isAnnotation(){return this.isInline()?!0:typeof this.mapOpts.annotation<"u"?this.mapOpts.annotation:this.previous().length?this.previous().some(e=>e.annotation):!0}isInline(){if(typeof this.mapOpts.inline<"u")return this.mapOpts.inline;let e=this.mapOpts.annotation;return typeof e<"u"&&e!==!0?!1:this.previous().length?this.previous().some(t=>t.inline):!0}isMap(){return typeof this.opts.map<"u"?!!this.opts.map:this.previous().length>0}isSourcesContent(){return typeof this.mapOpts.sourcesContent<"u"?this.mapOpts.sourcesContent:this.previous().length?this.previous().some(e=>e.withContent()):!0}outputFile(){return this.opts.to?this.path(this.opts.to):this.opts.from?this.path(this.opts.from):"to.css"}path(e){if(this.mapOpts.absolute||e.charCodeAt(0)===60||/^\w+:\/\//.test(e))return e;let t=this.memoizedPaths.get(e);if(t)return t;let i=this.opts.to?VT(this.opts.to):".";typeof this.mapOpts.annotation=="string"&&(i=VT(Due(i,this.mapOpts.annotation)));let s=Eue(i,e);return this.memoizedPaths.set(e,s),s}previous(){if(!this.previousMaps)if(this.previousMaps=[],this.root)this.root.walk(e=>{if(e.source&&e.source.input.map){let t=e.source.input.map;this.previousMaps.includes(t)||this.previousMaps.push(t)}});else{let e=new QNe(this.css,this.opts);e.map&&this.previousMaps.push(e.map)}return this.previousMaps}setSourcesContent(){let e={};if(this.root)this.root.walk(t=>{if(t.source){let i=t.source.input.from;if(i&&!e[i]){e[i]=!0;let s=this.usesFileUrls?this.toFileUrl(i):this.toUrl(this.path(i));this.map.setSourceContent(s,t.source.input.css)}}});else if(this.css){let t=this.opts.from?this.toUrl(this.path(this.opts.from)):"<no source>";this.map.setSourceContent(t,this.css)}}sourcePath(e){return this.mapOpts.from?this.toUrl(this.mapOpts.from):this.usesFileUrls?this.toFileUrl(e.source.input.from):this.toUrl(this.path(e.source.input.from))}toBase64(e){return Ke?Ke.from(e).toString("base64"):window.btoa(unescape(encodeURIComponent(e)))}toFileUrl(e){let t=this.memoizedFileURLs.get(e);if(t)return t;if(MX){let i=MX(e).toString();return this.memoizedFileURLs.set(e,i),i}else throw new Error("`map.absolute` option is not available in this PostCSS build")}toUrl(e){let t=this.memoizedURLs.get(e);if(t)return t;Iue==="\\"&&(e=e.replace(/\\/g,"/"));let i=encodeURI(e).replace(/[#?]/g,encodeURIComponent);return this.memoizedURLs.set(e,i),i}};var Tue=tAe;let iAe=WM,PB=class extends iAe{constructor(e){super(e),this.type="comment"}};var $M=PB;PB.default=PB;let{isClean:Nue,my:Aue}=sE,Pue=VM,Rue=$M,nAe=WM,Mue,dU,fU,Oue;function Fue(n){return n.map(e=>(e.nodes&&(e.nodes=Fue(e.nodes)),delete e.source,e))}function Bue(n){if(n[Nue]=!1,n.proxyOf.nodes)for(let e of n.proxyOf.nodes)Bue(e)}let Uf=class Wue extends nAe{append(...e){for(let t of e){let i=this.normalize(t,this.last);for(let s of i)this.proxyOf.nodes.push(s)}return this.markDirty(),this}cleanRaws(e){if(super.cleanRaws(e),this.nodes)for(let t of this.nodes)t.cleanRaws(e)}each(e){if(!this.proxyOf.nodes)return;let t=this.getIterator(),i,s;for(;this.indexes[t]<this.proxyOf.nodes.length&&(i=this.indexes[t],s=e(this.proxyOf.nodes[i],i),s!==!1);)this.indexes[t]+=1;return delete this.indexes[t],s}every(e){return this.nodes.every(e)}getIterator(){this.lastEach||(this.lastEach=0),this.indexes||(this.indexes={}),this.lastEach+=1;let e=this.lastEach;return this.indexes[e]=0,e}getProxyProcessor(){return{get(e,t){return t==="proxyOf"?e:e[t]?t==="each"||typeof t=="string"&&t.startsWith("walk")?(...i)=>e[t](...i.map(s=>typeof s=="function"?(r,o)=>s(r.toProxy(),o):s)):t==="every"||t==="some"?i=>e[t]((s,...r)=>i(s.toProxy(),...r)):t==="root"?()=>e.root().toProxy():t==="nodes"?e.nodes.map(i=>i.toProxy()):t==="first"||t==="last"?e[t].toProxy():e[t]:e[t]},set(e,t,i){return e[t]===i||(e[t]=i,(t==="name"||t==="params"||t==="selector")&&e.markDirty()),!0}}}index(e){return typeof e=="number"?e:(e.proxyOf&&(e=e.proxyOf),this.proxyOf.nodes.indexOf(e))}insertAfter(e,t){let i=this.index(e),s=this.normalize(t,this.proxyOf.nodes[i]).reverse();i=this.index(e);for(let o of s)this.proxyOf.nodes.splice(i+1,0,o);let r;for(let o in this.indexes)r=this.indexes[o],i<r&&(this.indexes[o]=r+s.length);return this.markDirty(),this}insertBefore(e,t){let i=this.index(e),s=i===0?"prepend":!1,r=this.normalize(t,this.proxyOf.nodes[i],s).reverse();i=this.index(e);for(let a of r)this.proxyOf.nodes.splice(i,0,a);let o;for(let a in this.indexes)o=this.indexes[a],i<=o&&(this.indexes[a]=o+r.length);return this.markDirty(),this}normalize(e,t){if(typeof e=="string")e=Fue(Mue(e).nodes);else if(Array.isArray(e)){e=e.slice(0);for(let s of e)s.parent&&s.parent.removeChild(s,"ignore")}else if(e.type==="root"&&this.type!=="document"){e=e.nodes.slice(0);for(let s of e)s.parent&&s.parent.removeChild(s,"ignore")}else if(e.type)e=[e];else if(e.prop){if(typeof e.value>"u")throw new Error("Value field is missed in node creation");typeof e.value!="string"&&(e.value=String(e.value)),e=[new Pue(e)]}else if(e.selector)e=[new dU(e)];else if(e.name)e=[new fU(e)];else if(e.text)e=[new Rue(e)];else throw new Error("Unknown node type in node creation");return e.map(s=>(s[Aue]||Wue.rebuild(s),s=s.proxyOf,s.parent&&s.parent.removeChild(s),s[Nue]&&Bue(s),typeof s.raws.before>"u"&&t&&typeof t.raws.before<"u"&&(s.raws.before=t.raws.before.replace(/\S/g,"")),s.parent=this.proxyOf,s))}prepend(...e){e=e.reverse();for(let t of e){let i=this.normalize(t,this.first,"prepend").reverse();for(let s of i)this.proxyOf.nodes.unshift(s);for(let s in this.indexes)this.indexes[s]=this.indexes[s]+i.length}return this.markDirty(),this}push(e){return e.parent=this,this.proxyOf.nodes.push(e),this}removeAll(){for(let e of this.proxyOf.nodes)e.parent=void 0;return this.proxyOf.nodes=[],this.markDirty(),this}removeChild(e){e=this.index(e),this.proxyOf.nodes[e].parent=void 0,this.proxyOf.nodes.splice(e,1);let t;for(let i in this.indexes)t=this.indexes[i],t>=e&&(this.indexes[i]=t-1);return this.markDirty(),this}replaceValues(e,t,i){return i||(i=t,t={}),this.walkDecls(s=>{t.props&&!t.props.includes(s.prop)||t.fast&&!s.value.includes(t.fast)||(s.value=s.value.replace(e,i))}),this.markDirty(),this}some(e){return this.nodes.some(e)}walk(e){return this.each((t,i)=>{let s;try{s=e(t,i)}catch(r){throw t.addToError(r)}return s!==!1&&t.walk&&(s=t.walk(e)),s})}walkAtRules(e,t){return t?e instanceof RegExp?this.walk((i,s)=>{if(i.type==="atrule"&&e.test(i.name))return t(i,s)}):this.walk((i,s)=>{if(i.type==="atrule"&&i.name===e)return t(i,s)}):(t=e,this.walk((i,s)=>{if(i.type==="atrule")return t(i,s)}))}walkComments(e){return this.walk((t,i)=>{if(t.type==="comment")return e(t,i)})}walkDecls(e,t){return t?e instanceof RegExp?this.walk((i,s)=>{if(i.type==="decl"&&e.test(i.prop))return t(i,s)}):this.walk((i,s)=>{if(i.type==="decl"&&i.prop===e)return t(i,s)}):(t=e,this.walk((i,s)=>{if(i.type==="decl")return t(i,s)}))}walkRules(e,t){return t?e instanceof RegExp?this.walk((i,s)=>{if(i.type==="rule"&&e.test(i.selector))return t(i,s)}):this.walk((i,s)=>{if(i.type==="rule"&&i.selector===e)return t(i,s)}):(t=e,this.walk((i,s)=>{if(i.type==="rule")return t(i,s)}))}get first(){if(this.proxyOf.nodes)return this.proxyOf.nodes[0]}get last(){if(this.proxyOf.nodes)return this.proxyOf.nodes[this.proxyOf.nodes.length-1]}};Uf.registerParse=n=>{Mue=n};Uf.registerRule=n=>{dU=n};Uf.registerAtRule=n=>{fU=n};Uf.registerRoot=n=>{Oue=n};var bv=Uf;Uf.default=Uf;Uf.rebuild=n=>{n.type==="atrule"?Object.setPrototypeOf(n,fU.prototype):n.type==="rule"?Object.setPrototypeOf(n,dU.prototype):n.type==="decl"?Object.setPrototypeOf(n,Pue.prototype):n.type==="comment"?Object.setPrototypeOf(n,Rue.prototype):n.type==="root"&&Object.setPrototypeOf(n,Oue.prototype),n[Aue]=!0,n.nodes&&n.nodes.forEach(e=>{Uf.rebuild(e)})};let sAe=bv,Vue,Hue,Zk=class extends sAe{constructor(e){super({type:"document",...e}),this.nodes||(this.nodes=[])}toResult(e={}){return new Vue(new Hue,this,e).stringify()}};Zk.registerLazyResult=n=>{Vue=n};Zk.registerProcessor=n=>{Hue=n};var gU=Zk;Zk.default=Zk;let OX={};var $ue=function(e){OX[e]||(OX[e]=!0,typeof console<"u"&&console.warn&&console.warn(e))};let RB=class{constructor(e,t={}){if(this.type="warning",this.text=e,t.node&&t.node.source){let i=t.node.rangeBy(t);this.line=i.start.line,this.column=i.start.column,this.endLine=i.end.line,this.endColumn=i.end.column}for(let i in t)this[i]=t[i]}toString(){return this.node?this.node.error(this.text,{index:this.index,plugin:this.plugin,word:this.word}).message:this.plugin?this.plugin+": "+this.text:this.text}};var zue=RB;RB.default=RB;let rAe=zue,MB=class{constructor(e,t,i){this.processor=e,this.messages=[],this.root=t,this.opts=i,this.css=void 0,this.map=void 0}toString(){return this.css}warn(e,t={}){t.plugin||this.lastPlugin&&this.lastPlugin.postcssPlugin&&(t.plugin=this.lastPlugin.postcssPlugin);let i=new rAe(e,t);return this.messages.push(i),i}warnings(){return this.messages.filter(e=>e.type==="warning")}get content(){return this.css}};var pU=MB;MB.default=MB;let Uue=bv,cA=class extends Uue{constructor(e){super(e),this.type="atrule"}append(...e){return this.proxyOf.nodes||(this.nodes=[]),super.append(...e)}prepend(...e){return this.proxyOf.nodes||(this.nodes=[]),super.prepend(...e)}};var mU=cA;cA.default=cA;Uue.registerAtRule(cA);let jue=bv,que,Kue,ry=class extends jue{constructor(e){super(e),this.type="root",this.nodes||(this.nodes=[])}normalize(e,t,i){let s=super.normalize(e);if(t){if(i==="prepend")this.nodes.length>1?t.raws.before=this.nodes[1].raws.before:delete t.raws.before;else if(this.first!==t)for(let r of s)r.raws.before=t.raws.before}return s}removeChild(e,t){let i=this.index(e);return!t&&i===0&&this.nodes.length>1&&(this.nodes[1].raws.before=this.nodes[i].raws.before),super.removeChild(e)}toResult(e={}){return new que(new Kue,this,e).stringify()}};ry.registerLazyResult=n=>{que=n};ry.registerProcessor=n=>{Kue=n};var rE=ry;ry.default=ry;jue.registerRoot(ry);let Xk={comma(n){return Xk.split(n,[","],!0)},space(n){let e=[" ",` +`," "];return Xk.split(n,e)},split(n,e,t){let i=[],s="",r=!1,o=0,a=!1,l="",c=!1;for(let u of n)c?c=!1:u==="\\"?c=!0:a?u===l&&(a=!1):u==='"'||u==="'"?(a=!0,l=u):u==="("?o+=1:u===")"?o>0&&(o-=1):o===0&&e.includes(u)&&(r=!0),r?(s!==""&&i.push(s.trim()),s="",r=!1):s+=u;return(t||s!=="")&&i.push(s.trim()),i}};var Gue=Xk;Xk.default=Xk;let Yue=bv,oAe=Gue,uA=class extends Yue{constructor(e){super(e),this.type="rule",this.nodes||(this.nodes=[])}get selectors(){return oAe.comma(this.selector)}set selectors(e){let t=this.selector?this.selector.match(/,\s*/):null,i=t?t[0]:","+this.raw("between","beforeOpen");this.selector=e.join(i)}};var _U=uA;uA.default=uA;Yue.registerRule(uA);let aAe=VM,lAe=vue,cAe=$M,uAe=mU,hAe=rE,FX=_U;const BX={empty:!0,space:!0};function dAe(n){for(let e=n.length-1;e>=0;e--){let t=n[e],i=t[3]||t[2];if(i)return i}}let fAe=class{constructor(e){this.input=e,this.root=new hAe,this.current=this.root,this.spaces="",this.semicolon=!1,this.customProperty=!1,this.createTokenizer(),this.root.source={input:e,start:{column:1,line:1,offset:0}}}atrule(e){let t=new uAe;t.name=e[1].slice(1),t.name===""&&this.unnamedAtrule(t,e),this.init(t,e[2]);let i,s,r,o=!1,a=!1,l=[],c=[];for(;!this.tokenizer.endOfFile();){if(e=this.tokenizer.nextToken(),i=e[0],i==="("||i==="["?c.push(i==="("?")":"]"):i==="{"&&c.length>0?c.push("}"):i===c[c.length-1]&&c.pop(),c.length===0)if(i===";"){t.source.end=this.getPosition(e[2]),t.source.end.offset++,this.semicolon=!0;break}else if(i==="{"){a=!0;break}else if(i==="}"){if(l.length>0){for(r=l.length-1,s=l[r];s&&s[0]==="space";)s=l[--r];s&&(t.source.end=this.getPosition(s[3]||s[2]),t.source.end.offset++)}this.end(e);break}else l.push(e);else l.push(e);if(this.tokenizer.endOfFile()){o=!0;break}}t.raws.between=this.spacesAndCommentsFromEnd(l),l.length?(t.raws.afterName=this.spacesAndCommentsFromStart(l),this.raw(t,"params",l),o&&(e=l[l.length-1],t.source.end=this.getPosition(e[3]||e[2]),t.source.end.offset++,this.spaces=t.raws.between,t.raws.between="")):(t.raws.afterName="",t.params=""),a&&(t.nodes=[],this.current=t)}checkMissedSemicolon(e){let t=this.colon(e);if(t===!1)return;let i=0,s;for(let r=t-1;r>=0&&(s=e[r],!(s[0]!=="space"&&(i+=1,i===2)));r--);throw this.input.error("Missed semicolon",s[0]==="word"?s[3]+1:s[2])}colon(e){let t=0,i,s,r;for(let[o,a]of e.entries()){if(i=a,s=i[0],s==="("&&(t+=1),s===")"&&(t-=1),t===0&&s===":")if(!r)this.doubleColon(i);else{if(r[0]==="word"&&r[1]==="progid")continue;return o}r=i}return!1}comment(e){let t=new cAe;this.init(t,e[2]),t.source.end=this.getPosition(e[3]||e[2]),t.source.end.offset++;let i=e[1].slice(2,-2);if(/^\s*$/.test(i))t.text="",t.raws.left=i,t.raws.right="";else{let s=i.match(/^(\s*)([^]*\S)(\s*)$/);t.text=s[2],t.raws.left=s[1],t.raws.right=s[3]}}createTokenizer(){this.tokenizer=lAe(this.input)}decl(e,t){let i=new aAe;this.init(i,e[0][2]);let s=e[e.length-1];for(s[0]===";"&&(this.semicolon=!0,e.pop()),i.source.end=this.getPosition(s[3]||s[2]||dAe(e)),i.source.end.offset++;e[0][0]!=="word";)e.length===1&&this.unknownWord(e),i.raws.before+=e.shift()[1];for(i.source.start=this.getPosition(e[0][2]),i.prop="";e.length;){let c=e[0][0];if(c===":"||c==="space"||c==="comment")break;i.prop+=e.shift()[1]}i.raws.between="";let r;for(;e.length;)if(r=e.shift(),r[0]===":"){i.raws.between+=r[1];break}else r[0]==="word"&&/\w/.test(r[1])&&this.unknownWord([r]),i.raws.between+=r[1];(i.prop[0]==="_"||i.prop[0]==="*")&&(i.raws.before+=i.prop[0],i.prop=i.prop.slice(1));let o=[],a;for(;e.length&&(a=e[0][0],!(a!=="space"&&a!=="comment"));)o.push(e.shift());this.precheckMissedSemicolon(e);for(let c=e.length-1;c>=0;c--){if(r=e[c],r[1].toLowerCase()==="!important"){i.important=!0;let u=this.stringFrom(e,c);u=this.spacesFromEnd(e)+u,u!==" !important"&&(i.raws.important=u);break}else if(r[1].toLowerCase()==="important"){let u=e.slice(0),h="";for(let d=c;d>0;d--){let f=u[d][0];if(h.trim().indexOf("!")===0&&f!=="space")break;h=u.pop()[1]+h}h.trim().indexOf("!")===0&&(i.important=!0,i.raws.important=h,e=u)}if(r[0]!=="space"&&r[0]!=="comment")break}e.some(c=>c[0]!=="space"&&c[0]!=="comment")&&(i.raws.between+=o.map(c=>c[1]).join(""),o=[]),this.raw(i,"value",o.concat(e),t),i.value.includes(":")&&!t&&this.checkMissedSemicolon(e)}doubleColon(e){throw this.input.error("Double colon",{offset:e[2]},{offset:e[2]+e[1].length})}emptyRule(e){let t=new FX;this.init(t,e[2]),t.selector="",t.raws.between="",this.current=t}end(e){this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.semicolon=!1,this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.spaces="",this.current.parent?(this.current.source.end=this.getPosition(e[2]),this.current.source.end.offset++,this.current=this.current.parent):this.unexpectedClose(e)}endFile(){this.current.parent&&this.unclosedBlock(),this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.root.source.end=this.getPosition(this.tokenizer.position())}freeSemicolon(e){if(this.spaces+=e[1],this.current.nodes){let t=this.current.nodes[this.current.nodes.length-1];t&&t.type==="rule"&&!t.raws.ownSemicolon&&(t.raws.ownSemicolon=this.spaces,this.spaces="")}}getPosition(e){let t=this.input.fromOffset(e);return{column:t.col,line:t.line,offset:e}}init(e,t){this.current.push(e),e.source={input:this.input,start:this.getPosition(t)},e.raws.before=this.spaces,this.spaces="",e.type!=="comment"&&(this.semicolon=!1)}other(e){let t=!1,i=null,s=!1,r=null,o=[],a=e[1].startsWith("--"),l=[],c=e;for(;c;){if(i=c[0],l.push(c),i==="("||i==="[")r||(r=c),o.push(i==="("?")":"]");else if(a&&s&&i==="{")r||(r=c),o.push("}");else if(o.length===0)if(i===";")if(s){this.decl(l,a);return}else break;else if(i==="{"){this.rule(l);return}else if(i==="}"){this.tokenizer.back(l.pop()),t=!0;break}else i===":"&&(s=!0);else i===o[o.length-1]&&(o.pop(),o.length===0&&(r=null));c=this.tokenizer.nextToken()}if(this.tokenizer.endOfFile()&&(t=!0),o.length>0&&this.unclosedBracket(r),t&&s){if(!a)for(;l.length&&(c=l[l.length-1][0],!(c!=="space"&&c!=="comment"));)this.tokenizer.back(l.pop());this.decl(l,a)}else this.unknownWord(l)}parse(){let e;for(;!this.tokenizer.endOfFile();)switch(e=this.tokenizer.nextToken(),e[0]){case"space":this.spaces+=e[1];break;case";":this.freeSemicolon(e);break;case"}":this.end(e);break;case"comment":this.comment(e);break;case"at-word":this.atrule(e);break;case"{":this.emptyRule(e);break;default:this.other(e);break}this.endFile()}precheckMissedSemicolon(){}raw(e,t,i,s){let r,o,a=i.length,l="",c=!0,u,h;for(let d=0;d<a;d+=1)r=i[d],o=r[0],o==="space"&&d===a-1&&!s?c=!1:o==="comment"?(h=i[d-1]?i[d-1][0]:"empty",u=i[d+1]?i[d+1][0]:"empty",!BX[h]&&!BX[u]?l.slice(-1)===","?c=!1:l+=r[1]:c=!1):l+=r[1];if(!c){let d=i.reduce((f,g)=>f+g[1],"");e.raws[t]={raw:d,value:l}}e[t]=l}rule(e){e.pop();let t=new FX;this.init(t,e[0][2]),t.raws.between=this.spacesAndCommentsFromEnd(e),this.raw(t,"selector",e),this.current=t}spacesAndCommentsFromEnd(e){let t,i="";for(;e.length&&(t=e[e.length-1][0],!(t!=="space"&&t!=="comment"));)i=e.pop()[1]+i;return i}spacesAndCommentsFromStart(e){let t,i="";for(;e.length&&(t=e[0][0],!(t!=="space"&&t!=="comment"));)i+=e.shift()[1];return i}spacesFromEnd(e){let t,i="";for(;e.length&&(t=e[e.length-1][0],t==="space");)i=e.pop()[1]+i;return i}stringFrom(e,t){let i="";for(let s=t;s<e.length;s++)i+=e[s][1];return e.splice(t,e.length-t),i}unclosedBlock(){let e=this.current.source.start;throw this.input.error("Unclosed block",e.line,e.column)}unclosedBracket(e){throw this.input.error("Unclosed bracket",{offset:e[2]},{offset:e[2]+1})}unexpectedClose(e){throw this.input.error("Unexpected }",{offset:e[2]},{offset:e[2]+1})}unknownWord(e){throw this.input.error("Unknown word",{offset:e[0][2]},{offset:e[0][2]+e[0][1].length})}unnamedAtrule(e,t){throw this.input.error("At-rule without name",{offset:t[2]},{offset:t[2]+t[1].length})}};var gAe=fAe;let pAe=bv,mAe=gAe,_Ae=HM;function hA(n,e){let t=new _Ae(n,e),i=new mAe(t);try{i.parse()}catch(s){throw Po.env.NODE_ENV!=="production"&&s.name==="CssSyntaxError"&&e&&e.from&&(/\.scss$/i.test(e.from)?s.message+=` +You tried to parse SCSS with the standard CSS parser; try again with the postcss-scss parser`:/\.sass/i.test(e.from)?s.message+=` +You tried to parse Sass with the standard CSS parser; try again with the postcss-sass parser`:/\.less$/i.test(e.from)&&(s.message+=` +You tried to parse Less with the standard CSS parser; try again with the postcss-less parser`)),s}return i.root}var vU=hA;hA.default=hA;pAe.registerParse(hA);let{isClean:th,my:vAe}=sE,bAe=Tue,yAe=BM,CAe=bv,wAe=gU,SAe=$ue,WX=pU,kAe=vU,LAe=rE;const xAe={atrule:"AtRule",comment:"Comment",decl:"Declaration",document:"Document",root:"Root",rule:"Rule"},EAe={AtRule:!0,AtRuleExit:!0,Comment:!0,CommentExit:!0,Declaration:!0,DeclarationExit:!0,Document:!0,DocumentExit:!0,Once:!0,OnceExit:!0,postcssPlugin:!0,prepare:!0,Root:!0,RootExit:!0,Rule:!0,RuleExit:!0},DAe={Once:!0,postcssPlugin:!0,prepare:!0},oy=0;function hw(n){return typeof n=="object"&&typeof n.then=="function"}function Zue(n){let e=!1,t=xAe[n.type];return n.type==="decl"?e=n.prop.toLowerCase():n.type==="atrule"&&(e=n.name.toLowerCase()),e&&n.append?[t,t+"-"+e,oy,t+"Exit",t+"Exit-"+e]:e?[t,t+"-"+e,t+"Exit",t+"Exit-"+e]:n.append?[t,oy,t+"Exit"]:[t,t+"Exit"]}function VX(n){let e;return n.type==="document"?e=["Document",oy,"DocumentExit"]:n.type==="root"?e=["Root",oy,"RootExit"]:e=Zue(n),{eventIndex:0,events:e,iterator:0,node:n,visitorIndex:0,visitors:[]}}function OB(n){return n[th]=!1,n.nodes&&n.nodes.forEach(e=>OB(e)),n}let FB={},ay=class Xue{constructor(e,t,i){this.stringified=!1,this.processed=!1;let s;if(typeof t=="object"&&t!==null&&(t.type==="root"||t.type==="document"))s=OB(t);else if(t instanceof Xue||t instanceof WX)s=OB(t.root),t.map&&(typeof i.map>"u"&&(i.map={}),i.map.inline||(i.map.inline=!1),i.map.prev=t.map);else{let r=kAe;i.syntax&&(r=i.syntax.parse),i.parser&&(r=i.parser),r.parse&&(r=r.parse);try{s=r(t,i)}catch(o){this.processed=!0,this.error=o}s&&!s[vAe]&&CAe.rebuild(s)}this.result=new WX(e,s,i),this.helpers={...FB,postcss:FB,result:this.result},this.plugins=this.processor.plugins.map(r=>typeof r=="object"&&r.prepare?{...r,...r.prepare(this.result)}:r)}async(){return this.error?Promise.reject(this.error):this.processed?Promise.resolve(this.result):(this.processing||(this.processing=this.runAsync()),this.processing)}catch(e){return this.async().catch(e)}finally(e){return this.async().then(e,e)}getAsyncError(){throw new Error("Use process(css).then(cb) to work with async plugins")}handleError(e,t){let i=this.result.lastPlugin;try{if(t&&t.addToError(e),this.error=e,e.name==="CssSyntaxError"&&!e.plugin)e.plugin=i.postcssPlugin,e.setMessage();else if(i.postcssVersion&&Po.env.NODE_ENV!=="production"){let s=i.postcssPlugin,r=i.postcssVersion,o=this.result.processor.version,a=r.split("."),l=o.split(".");(a[0]!==l[0]||parseInt(a[1])>parseInt(l[1]))&&console.error("Unknown error from PostCSS plugin. Your current PostCSS version is "+o+", but "+s+" uses "+r+". Perhaps this is the source of the error below.")}}catch(s){console&&console.error&&console.error(s)}return e}prepareVisitors(){this.listeners={};let e=(t,i,s)=>{this.listeners[i]||(this.listeners[i]=[]),this.listeners[i].push([t,s])};for(let t of this.plugins)if(typeof t=="object")for(let i in t){if(!EAe[i]&&/^[A-Z]/.test(i))throw new Error(`Unknown event ${i} in ${t.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`);if(!DAe[i])if(typeof t[i]=="object")for(let s in t[i])s==="*"?e(t,i,t[i][s]):e(t,i+"-"+s.toLowerCase(),t[i][s]);else typeof t[i]=="function"&&e(t,i,t[i])}this.hasListener=Object.keys(this.listeners).length>0}async runAsync(){this.plugin=0;for(let e=0;e<this.plugins.length;e++){let t=this.plugins[e],i=this.runOnRoot(t);if(hw(i))try{await i}catch(s){throw this.handleError(s)}}if(this.prepareVisitors(),this.hasListener){let e=this.result.root;for(;!e[th];){e[th]=!0;let t=[VX(e)];for(;t.length>0;){let i=this.visitTick(t);if(hw(i))try{await i}catch(s){let r=t[t.length-1].node;throw this.handleError(s,r)}}}if(this.listeners.OnceExit)for(let[t,i]of this.listeners.OnceExit){this.result.lastPlugin=t;try{if(e.type==="document"){let s=e.nodes.map(r=>i(r,this.helpers));await Promise.all(s)}else await i(e,this.helpers)}catch(s){throw this.handleError(s)}}}return this.processed=!0,this.stringify()}runOnRoot(e){this.result.lastPlugin=e;try{if(typeof e=="object"&&e.Once){if(this.result.root.type==="document"){let t=this.result.root.nodes.map(i=>e.Once(i,this.helpers));return hw(t[0])?Promise.all(t):t}return e.Once(this.result.root,this.helpers)}else if(typeof e=="function")return e(this.result.root,this.result)}catch(t){throw this.handleError(t)}}stringify(){if(this.error)throw this.error;if(this.stringified)return this.result;this.stringified=!0,this.sync();let e=this.result.opts,t=yAe;e.syntax&&(t=e.syntax.stringify),e.stringifier&&(t=e.stringifier),t.stringify&&(t=t.stringify);let s=new bAe(t,this.result.root,this.result.opts).generate();return this.result.css=s[0],this.result.map=s[1],this.result}sync(){if(this.error)throw this.error;if(this.processed)return this.result;if(this.processed=!0,this.processing)throw this.getAsyncError();for(let e of this.plugins){let t=this.runOnRoot(e);if(hw(t))throw this.getAsyncError()}if(this.prepareVisitors(),this.hasListener){let e=this.result.root;for(;!e[th];)e[th]=!0,this.walkSync(e);if(this.listeners.OnceExit)if(e.type==="document")for(let t of e.nodes)this.visitSync(this.listeners.OnceExit,t);else this.visitSync(this.listeners.OnceExit,e)}return this.result}then(e,t){return Po.env.NODE_ENV!=="production"&&("from"in this.opts||SAe("Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.")),this.async().then(e,t)}toString(){return this.css}visitSync(e,t){for(let[i,s]of e){this.result.lastPlugin=i;let r;try{r=s(t,this.helpers)}catch(o){throw this.handleError(o,t.proxyOf)}if(t.type!=="root"&&t.type!=="document"&&!t.parent)return!0;if(hw(r))throw this.getAsyncError()}}visitTick(e){let t=e[e.length-1],{node:i,visitors:s}=t;if(i.type!=="root"&&i.type!=="document"&&!i.parent){e.pop();return}if(s.length>0&&t.visitorIndex<s.length){let[o,a]=s[t.visitorIndex];t.visitorIndex+=1,t.visitorIndex===s.length&&(t.visitors=[],t.visitorIndex=0),this.result.lastPlugin=o;try{return a(i.toProxy(),this.helpers)}catch(l){throw this.handleError(l,i)}}if(t.iterator!==0){let o=t.iterator,a;for(;a=i.nodes[i.indexes[o]];)if(i.indexes[o]+=1,!a[th]){a[th]=!0,e.push(VX(a));return}t.iterator=0,delete i.indexes[o]}let r=t.events;for(;t.eventIndex<r.length;){let o=r[t.eventIndex];if(t.eventIndex+=1,o===oy){i.nodes&&i.nodes.length&&(i[th]=!0,t.iterator=i.getIterator());return}else if(this.listeners[o]){t.visitors=this.listeners[o];return}}e.pop()}walkSync(e){e[th]=!0;let t=Zue(e);for(let i of t)if(i===oy)e.nodes&&e.each(s=>{s[th]||this.walkSync(s)});else{let s=this.listeners[i];if(s&&this.visitSync(s,e.toProxy()))return}}warnings(){return this.sync().warnings()}get content(){return this.stringify().content}get css(){return this.stringify().css}get map(){return this.stringify().map}get messages(){return this.sync().messages}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){return this.sync().root}get[Symbol.toStringTag](){return"LazyResult"}};ay.registerPostcss=n=>{FB=n};var Que=ay;ay.default=ay;LAe.registerLazyResult(ay);wAe.registerLazyResult(ay);let IAe=Tue,TAe=BM,NAe=$ue,AAe=vU;const PAe=pU;let BB=class{constructor(e,t,i){t=t.toString(),this.stringified=!1,this._processor=e,this._css=t,this._opts=i,this._map=void 0;let s,r=TAe;this.result=new PAe(this._processor,s,this._opts),this.result.css=t;let o=this;Object.defineProperty(this.result,"root",{get(){return o.root}});let a=new IAe(r,s,this._opts,t);if(a.isMap()){let[l,c]=a.generate();l&&(this.result.css=l),c&&(this.result.map=c)}}async(){return this.error?Promise.reject(this.error):Promise.resolve(this.result)}catch(e){return this.async().catch(e)}finally(e){return this.async().then(e,e)}sync(){if(this.error)throw this.error;return this.result}then(e,t){return Po.env.NODE_ENV!=="production"&&("from"in this._opts||NAe("Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.")),this.async().then(e,t)}toString(){return this._css}warnings(){return[]}get content(){return this.result.css}get css(){return this.result.css}get map(){return this.result.map}get messages(){return[]}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){if(this._root)return this._root;let e,t=AAe;try{e=t(this._css,this._opts)}catch(i){this.error=i}if(this.error)throw this.error;return this._root=e,e}get[Symbol.toStringTag](){return"NoWorkResult"}};var RAe=BB;BB.default=BB;let MAe=RAe,OAe=Que,FAe=gU,BAe=rE,Qk=class{constructor(e=[]){this.version="8.4.32",this.plugins=this.normalize(e)}normalize(e){let t=[];for(let i of e)if(i.postcss===!0?i=i():i.postcss&&(i=i.postcss),typeof i=="object"&&Array.isArray(i.plugins))t=t.concat(i.plugins);else if(typeof i=="object"&&i.postcssPlugin)t.push(i);else if(typeof i=="function")t.push(i);else if(typeof i=="object"&&(i.parse||i.stringify)){if(Po.env.NODE_ENV!=="production")throw new Error("PostCSS syntaxes cannot be used as plugins. Instead, please use one of the syntax/parser/stringifier options as outlined in your PostCSS runner documentation.")}else throw new Error(i+" is not a PostCSS plugin");return t}process(e,t={}){return this.plugins.length===0&&typeof t.parser>"u"&&typeof t.stringifier>"u"&&typeof t.syntax>"u"?new MAe(this,e,t):new OAe(this,e,t)}use(e){return this.plugins=this.plugins.concat(this.normalize([e])),this}};var WAe=Qk;Qk.default=Qk;BAe.registerProcessor(Qk);FAe.registerProcessor(Qk);let VAe=VM,HAe=Lue,$Ae=$M,zAe=mU,UAe=HM,jAe=rE,qAe=_U;function Jk(n,e){if(Array.isArray(n))return n.map(s=>Jk(s));let{inputs:t,...i}=n;if(t){e=[];for(let s of t){let r={...s,__proto__:UAe.prototype};r.map&&(r.map={...r.map,__proto__:HAe.prototype}),e.push(r)}}if(i.nodes&&(i.nodes=n.nodes.map(s=>Jk(s,e))),i.source){let{inputId:s,...r}=i.source;i.source=r,s!=null&&(i.source.input=e[s])}if(i.type==="root")return new jAe(i);if(i.type==="decl")return new VAe(i);if(i.type==="rule")return new qAe(i);if(i.type==="comment")return new $Ae(i);if(i.type==="atrule")return new zAe(i);throw new Error("Unknown node type: "+n.type)}var KAe=Jk;Jk.default=Jk;let GAe=hU,Jue=VM,YAe=Que,ZAe=bv,bU=WAe,XAe=BM,QAe=KAe,ehe=gU,JAe=zue,the=$M,ihe=mU,ePe=pU,tPe=HM,iPe=vU,nPe=Gue,nhe=_U,she=rE,sPe=WM;function Fn(...n){return n.length===1&&Array.isArray(n[0])&&(n=n[0]),new bU(n)}Fn.plugin=function(e,t){let i=!1;function s(...o){console&&console.warn&&!i&&(i=!0,console.warn(e+`: postcss.plugin was deprecated. Migration guide: +https://evilmartians.com/chronicles/postcss-8-plugin-migration`),Po.env.LANG&&Po.env.LANG.startsWith("cn")&&console.warn(e+`: 里面 postcss.plugin 被弃用. 迁移指南: +https://www.w3ctech.com/topic/2226`));let a=t(...o);return a.postcssPlugin=e,a.postcssVersion=new bU().version,a}let r;return Object.defineProperty(s,"postcss",{get(){return r||(r=s()),r}}),s.process=function(o,a,l){return Fn([s(l)]).process(o,a)},s};Fn.stringify=XAe;Fn.parse=iPe;Fn.fromJSON=QAe;Fn.list=nPe;Fn.comment=n=>new the(n);Fn.atRule=n=>new ihe(n);Fn.decl=n=>new Jue(n);Fn.rule=n=>new nhe(n);Fn.root=n=>new she(n);Fn.document=n=>new ehe(n);Fn.CssSyntaxError=GAe;Fn.Declaration=Jue;Fn.Container=ZAe;Fn.Processor=bU;Fn.Document=ehe;Fn.Comment=the;Fn.Warning=JAe;Fn.AtRule=ihe;Fn.Result=ePe;Fn.Input=tPe;Fn.Rule=nhe;Fn.Root=she;Fn.Node=sPe;YAe.registerPostcss(Fn);var rPe=Fn;Fn.default=Fn;var Ss=gM(rPe);Ss.stringify;Ss.fromJSON;Ss.plugin;Ss.parse;Ss.list;Ss.document;Ss.comment;Ss.atRule;Ss.rule;Ss.decl;Ss.root;Ss.CssSyntaxError;Ss.Declaration;Ss.Container;Ss.Processor;Ss.Document;Ss.Comment;Ss.Warning;Ss.AtRule;Ss.Result;Ss.Input;Ss.Rule;Ss.Root;Ss.Node;const rhe=()=>({postcssPlugin:"vue-sfc-trim",Once(n){n.walk(({type:e,raws:t})=>{(e==="rule"||e==="atrule")&&(t.before&&(t.before=` +`),"after"in t&&t.after&&(t.after=` +`))})}});rhe.postcss=!0;var oPe=rhe,WB={exports:{}},VB={exports:{}},HB={exports:{}},$B={exports:{}},zB={exports:{}},UB={exports:{}},yl={},jB={exports:{}};(function(n,e){e.__esModule=!0,e.default=s;function t(r){for(var o=r.toLowerCase(),a="",l=!1,c=0;c<6&&o[c]!==void 0;c++){var u=o.charCodeAt(c),h=u>=97&&u<=102||u>=48&&u<=57;if(l=u===32,!h)break;a+=o[c]}if(a.length!==0){var d=parseInt(a,16),f=d>=55296&&d<=57343;return f||d===0||d>1114111?["�",a.length+(l?1:0)]:[String.fromCodePoint(d),a.length+(l?1:0)]}}var i=/\\/;function s(r){var o=i.test(r);if(!o)return r;for(var a="",l=0;l<r.length;l++){if(r[l]==="\\"){var c=t(r.slice(l+1,l+7));if(c!==void 0){a+=c[0],l+=c[1];continue}if(r[l+1]==="\\"){a+="\\",l++;continue}r.length===l+1&&(a+=r[l]);continue}a+=r[l]}return a}n.exports=e.default})(jB,jB.exports);var ohe=jB.exports,qB={exports:{}};(function(n,e){e.__esModule=!0,e.default=t;function t(i){for(var s=arguments.length,r=new Array(s>1?s-1:0),o=1;o<s;o++)r[o-1]=arguments[o];for(;r.length>0;){var a=r.shift();if(!i[a])return;i=i[a]}return i}n.exports=e.default})(qB,qB.exports);var aPe=qB.exports,KB={exports:{}};(function(n,e){e.__esModule=!0,e.default=t;function t(i){for(var s=arguments.length,r=new Array(s>1?s-1:0),o=1;o<s;o++)r[o-1]=arguments[o];for(;r.length>0;){var a=r.shift();i[a]||(i[a]={}),i=i[a]}}n.exports=e.default})(KB,KB.exports);var lPe=KB.exports,GB={exports:{}};(function(n,e){e.__esModule=!0,e.default=t;function t(i){for(var s="",r=i.indexOf("/*"),o=0;r>=0;){s=s+i.slice(o,r);var a=i.indexOf("*/",r+2);if(a<0)return s;o=a+2,r=i.indexOf("/*",o)}return s=s+i.slice(o),s}n.exports=e.default})(GB,GB.exports);var cPe=GB.exports;yl.__esModule=!0;yl.unesc=yl.stripComments=yl.getProp=yl.ensureObject=void 0;var uPe=zM(ohe);yl.unesc=uPe.default;var hPe=zM(aPe);yl.getProp=hPe.default;var dPe=zM(lPe);yl.ensureObject=dPe.default;var fPe=zM(cPe);yl.stripComments=fPe.default;function zM(n){return n&&n.__esModule?n:{default:n}}(function(n,e){e.__esModule=!0,e.default=void 0;var t=yl;function i(a,l){for(var c=0;c<l.length;c++){var u=l[c];u.enumerable=u.enumerable||!1,u.configurable=!0,"value"in u&&(u.writable=!0),Object.defineProperty(a,u.key,u)}}function s(a,l,c){return l&&i(a.prototype,l),c&&i(a,c),Object.defineProperty(a,"prototype",{writable:!1}),a}var r=function a(l,c){if(typeof l!="object"||l===null)return l;var u=new l.constructor;for(var h in l)if(l.hasOwnProperty(h)){var d=l[h],f=typeof d;h==="parent"&&f==="object"?c&&(u[h]=c):d instanceof Array?u[h]=d.map(function(g){return a(g,u)}):u[h]=a(d,u)}return u},o=function(){function a(c){c===void 0&&(c={}),Object.assign(this,c),this.spaces=this.spaces||{},this.spaces.before=this.spaces.before||"",this.spaces.after=this.spaces.after||""}var l=a.prototype;return l.remove=function(){return this.parent&&this.parent.removeChild(this),this.parent=void 0,this},l.replaceWith=function(){if(this.parent){for(var u in arguments)this.parent.insertBefore(this,arguments[u]);this.remove()}return this},l.next=function(){return this.parent.at(this.parent.index(this)+1)},l.prev=function(){return this.parent.at(this.parent.index(this)-1)},l.clone=function(u){u===void 0&&(u={});var h=r(this);for(var d in u)h[d]=u[d];return h},l.appendToPropertyAndEscape=function(u,h,d){this.raws||(this.raws={});var f=this[u],g=this.raws[u];this[u]=f+h,g||d!==h?this.raws[u]=(g||f)+d:delete this.raws[u]},l.setPropertyAndEscape=function(u,h,d){this.raws||(this.raws={}),this[u]=h,this.raws[u]=d},l.setPropertyWithoutEscape=function(u,h){this[u]=h,this.raws&&delete this.raws[u]},l.isAtPosition=function(u,h){if(this.source&&this.source.start&&this.source.end)return!(this.source.start.line>u||this.source.end.line<u||this.source.start.line===u&&this.source.start.column>h||this.source.end.line===u&&this.source.end.column<h)},l.stringifyProperty=function(u){return this.raws&&this.raws[u]||this[u]},l.valueToString=function(){return String(this.stringifyProperty("value"))},l.toString=function(){return[this.rawSpaceBefore,this.valueToString(),this.rawSpaceAfter].join("")},s(a,[{key:"rawSpaceBefore",get:function(){var u=this.raws&&this.raws.spaces&&this.raws.spaces.before;return u===void 0&&(u=this.spaces&&this.spaces.before),u||""},set:function(u){(0,t.ensureObject)(this,"raws","spaces"),this.raws.spaces.before=u}},{key:"rawSpaceAfter",get:function(){var u=this.raws&&this.raws.spaces&&this.raws.spaces.after;return u===void 0&&(u=this.spaces.after),u||""},set:function(u){(0,t.ensureObject)(this,"raws","spaces"),this.raws.spaces.after=u}}]),a}();e.default=o,n.exports=e.default})(UB,UB.exports);var Lm=UB.exports,wi={};wi.__esModule=!0;wi.UNIVERSAL=wi.TAG=wi.STRING=wi.SELECTOR=wi.ROOT=wi.PSEUDO=wi.NESTING=wi.ID=wi.COMMENT=wi.COMBINATOR=wi.CLASS=wi.ATTRIBUTE=void 0;var gPe="tag";wi.TAG=gPe;var pPe="string";wi.STRING=pPe;var mPe="selector";wi.SELECTOR=mPe;var _Pe="root";wi.ROOT=_Pe;var vPe="pseudo";wi.PSEUDO=vPe;var bPe="nesting";wi.NESTING=bPe;var yPe="id";wi.ID=yPe;var CPe="comment";wi.COMMENT=CPe;var wPe="combinator";wi.COMBINATOR=wPe;var SPe="class";wi.CLASS=SPe;var kPe="attribute";wi.ATTRIBUTE=kPe;var LPe="universal";wi.UNIVERSAL=LPe;(function(n,e){e.__esModule=!0,e.default=void 0;var t=o(Lm),i=r(wi);function s(p){if(typeof WeakMap!="function")return null;var m=new WeakMap,_=new WeakMap;return(s=function(y){return y?_:m})(p)}function r(p,m){if(!m&&p&&p.__esModule)return p;if(p===null||typeof p!="object"&&typeof p!="function")return{default:p};var _=s(m);if(_&&_.has(p))return _.get(p);var b={},y=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var w in p)if(w!=="default"&&Object.prototype.hasOwnProperty.call(p,w)){var S=y?Object.getOwnPropertyDescriptor(p,w):null;S&&(S.get||S.set)?Object.defineProperty(b,w,S):b[w]=p[w]}return b.default=p,_&&_.set(p,b),b}function o(p){return p&&p.__esModule?p:{default:p}}function a(p,m){var _=typeof Symbol<"u"&&p[Symbol.iterator]||p["@@iterator"];if(_)return(_=_.call(p)).next.bind(_);if(Array.isArray(p)||(_=l(p))||m&&p&&typeof p.length=="number"){_&&(p=_);var b=0;return function(){return b>=p.length?{done:!0}:{done:!1,value:p[b++]}}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function l(p,m){if(p){if(typeof p=="string")return c(p,m);var _=Object.prototype.toString.call(p).slice(8,-1);if(_==="Object"&&p.constructor&&(_=p.constructor.name),_==="Map"||_==="Set")return Array.from(p);if(_==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(_))return c(p,m)}}function c(p,m){(m==null||m>p.length)&&(m=p.length);for(var _=0,b=new Array(m);_<m;_++)b[_]=p[_];return b}function u(p,m){for(var _=0;_<m.length;_++){var b=m[_];b.enumerable=b.enumerable||!1,b.configurable=!0,"value"in b&&(b.writable=!0),Object.defineProperty(p,b.key,b)}}function h(p,m,_){return m&&u(p.prototype,m),_&&u(p,_),Object.defineProperty(p,"prototype",{writable:!1}),p}function d(p,m){p.prototype=Object.create(m.prototype),p.prototype.constructor=p,f(p,m)}function f(p,m){return f=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(b,y){return b.__proto__=y,b},f(p,m)}var g=function(p){d(m,p);function m(b){var y;return y=p.call(this,b)||this,y.nodes||(y.nodes=[]),y}var _=m.prototype;return _.append=function(y){return y.parent=this,this.nodes.push(y),this},_.prepend=function(y){return y.parent=this,this.nodes.unshift(y),this},_.at=function(y){return this.nodes[y]},_.index=function(y){return typeof y=="number"?y:this.nodes.indexOf(y)},_.removeChild=function(y){y=this.index(y),this.at(y).parent=void 0,this.nodes.splice(y,1);var w;for(var S in this.indexes)w=this.indexes[S],w>=y&&(this.indexes[S]=w-1);return this},_.removeAll=function(){for(var y=a(this.nodes),w;!(w=y()).done;){var S=w.value;S.parent=void 0}return this.nodes=[],this},_.empty=function(){return this.removeAll()},_.insertAfter=function(y,w){w.parent=this;var S=this.index(y);this.nodes.splice(S+1,0,w),w.parent=this;var E;for(var L in this.indexes)E=this.indexes[L],S<=E&&(this.indexes[L]=E+1);return this},_.insertBefore=function(y,w){w.parent=this;var S=this.index(y);this.nodes.splice(S,0,w),w.parent=this;var E;for(var L in this.indexes)E=this.indexes[L],E<=S&&(this.indexes[L]=E+1);return this},_._findChildAtPosition=function(y,w){var S=void 0;return this.each(function(E){if(E.atPosition){var L=E.atPosition(y,w);if(L)return S=L,!1}else if(E.isAtPosition(y,w))return S=E,!1}),S},_.atPosition=function(y,w){if(this.isAtPosition(y,w))return this._findChildAtPosition(y,w)||this},_._inferEndPosition=function(){this.last&&this.last.source&&this.last.source.end&&(this.source=this.source||{},this.source.end=this.source.end||{},Object.assign(this.source.end,this.last.source.end))},_.each=function(y){this.lastEach||(this.lastEach=0),this.indexes||(this.indexes={}),this.lastEach++;var w=this.lastEach;if(this.indexes[w]=0,!!this.length){for(var S,E;this.indexes[w]<this.length&&(S=this.indexes[w],E=y(this.at(S),S),E!==!1);)this.indexes[w]+=1;if(delete this.indexes[w],E===!1)return!1}},_.walk=function(y){return this.each(function(w,S){var E=y(w,S);if(E!==!1&&w.length&&(E=w.walk(y)),E===!1)return!1})},_.walkAttributes=function(y){var w=this;return this.walk(function(S){if(S.type===i.ATTRIBUTE)return y.call(w,S)})},_.walkClasses=function(y){var w=this;return this.walk(function(S){if(S.type===i.CLASS)return y.call(w,S)})},_.walkCombinators=function(y){var w=this;return this.walk(function(S){if(S.type===i.COMBINATOR)return y.call(w,S)})},_.walkComments=function(y){var w=this;return this.walk(function(S){if(S.type===i.COMMENT)return y.call(w,S)})},_.walkIds=function(y){var w=this;return this.walk(function(S){if(S.type===i.ID)return y.call(w,S)})},_.walkNesting=function(y){var w=this;return this.walk(function(S){if(S.type===i.NESTING)return y.call(w,S)})},_.walkPseudos=function(y){var w=this;return this.walk(function(S){if(S.type===i.PSEUDO)return y.call(w,S)})},_.walkTags=function(y){var w=this;return this.walk(function(S){if(S.type===i.TAG)return y.call(w,S)})},_.walkUniversals=function(y){var w=this;return this.walk(function(S){if(S.type===i.UNIVERSAL)return y.call(w,S)})},_.split=function(y){var w=this,S=[];return this.reduce(function(E,L,k){var x=y.call(w,L);return S.push(L),x?(E.push(S),S=[]):k===w.length-1&&E.push(S),E},[])},_.map=function(y){return this.nodes.map(y)},_.reduce=function(y,w){return this.nodes.reduce(y,w)},_.every=function(y){return this.nodes.every(y)},_.some=function(y){return this.nodes.some(y)},_.filter=function(y){return this.nodes.filter(y)},_.sort=function(y){return this.nodes.sort(y)},_.toString=function(){return this.map(String).join("")},h(m,[{key:"first",get:function(){return this.at(0)}},{key:"last",get:function(){return this.at(this.length-1)}},{key:"length",get:function(){return this.nodes.length}}]),m}(t.default);e.default=g,n.exports=e.default})(zB,zB.exports);var yU=zB.exports;(function(n,e){e.__esModule=!0,e.default=void 0;var t=s(yU),i=wi;function s(u){return u&&u.__esModule?u:{default:u}}function r(u,h){for(var d=0;d<h.length;d++){var f=h[d];f.enumerable=f.enumerable||!1,f.configurable=!0,"value"in f&&(f.writable=!0),Object.defineProperty(u,f.key,f)}}function o(u,h,d){return h&&r(u.prototype,h),d&&r(u,d),Object.defineProperty(u,"prototype",{writable:!1}),u}function a(u,h){u.prototype=Object.create(h.prototype),u.prototype.constructor=u,l(u,h)}function l(u,h){return l=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(f,g){return f.__proto__=g,f},l(u,h)}var c=function(u){a(h,u);function h(f){var g;return g=u.call(this,f)||this,g.type=i.ROOT,g}var d=h.prototype;return d.toString=function(){var g=this.reduce(function(p,m){return p.push(String(m)),p},[]).join(",");return this.trailingComma?g+",":g},d.error=function(g,p){return this._error?this._error(g,p):new Error(g)},o(h,[{key:"errorGenerator",set:function(g){this._error=g}}]),h}(t.default);e.default=c,n.exports=e.default})($B,$B.exports);var ahe=$B.exports,YB={exports:{}};(function(n,e){e.__esModule=!0,e.default=void 0;var t=s(yU),i=wi;function s(l){return l&&l.__esModule?l:{default:l}}function r(l,c){l.prototype=Object.create(c.prototype),l.prototype.constructor=l,o(l,c)}function o(l,c){return o=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(h,d){return h.__proto__=d,h},o(l,c)}var a=function(l){r(c,l);function c(u){var h;return h=l.call(this,u)||this,h.type=i.SELECTOR,h}return c}(t.default);e.default=a,n.exports=e.default})(YB,YB.exports);var lhe=YB.exports,ZB={exports:{}};/*! https://mths.be/cssesc v3.0.0 by @mathias */var xPe={},EPe=xPe.hasOwnProperty,DPe=function(e,t){if(!e)return t;var i={};for(var s in t)i[s]=EPe.call(e,s)?e[s]:t[s];return i},IPe=/[ -,\.\/:-@\[-\^`\{-~]/,TPe=/[ -,\.\/:-@\[\]\^`\{-~]/,NPe=/(^|\\+)?(\\[A-F0-9]{1,6})\x20(?![a-fA-F0-9\x20])/g,CU=function n(e,t){t=DPe(t,n.options),t.quotes!="single"&&t.quotes!="double"&&(t.quotes="single");for(var i=t.quotes=="double"?'"':"'",s=t.isIdentifier,r=e.charAt(0),o="",a=0,l=e.length;a<l;){var c=e.charAt(a++),u=c.charCodeAt(),h=void 0;if(u<32||u>126){if(u>=55296&&u<=56319&&a<l){var d=e.charCodeAt(a++);(d&64512)==56320?u=((u&1023)<<10)+(d&1023)+65536:a--}h="\\"+u.toString(16).toUpperCase()+" "}else t.escapeEverything?IPe.test(c)?h="\\"+c:h="\\"+u.toString(16).toUpperCase()+" ":/[\t\n\f\r\x0B]/.test(c)?h="\\"+u.toString(16).toUpperCase()+" ":c=="\\"||!s&&(c=='"'&&i==c||c=="'"&&i==c)||s&&TPe.test(c)?h="\\"+c:h=c;o+=h}return s&&(/^-[-\d]/.test(o)?o="\\-"+o.slice(1):/\d/.test(r)&&(o="\\3"+r+" "+o.slice(1))),o=o.replace(NPe,function(f,g,p){return g&&g.length%2?f:(g||"")+p}),!s&&t.wrap?i+o+i:o};CU.options={escapeEverything:!1,isIdentifier:!1,quotes:"single",wrap:!1};CU.version="3.0.0";var wU=CU;(function(n,e){e.__esModule=!0,e.default=void 0;var t=o(wU),i=yl,s=o(Lm),r=wi;function o(d){return d&&d.__esModule?d:{default:d}}function a(d,f){for(var g=0;g<f.length;g++){var p=f[g];p.enumerable=p.enumerable||!1,p.configurable=!0,"value"in p&&(p.writable=!0),Object.defineProperty(d,p.key,p)}}function l(d,f,g){return f&&a(d.prototype,f),g&&a(d,g),Object.defineProperty(d,"prototype",{writable:!1}),d}function c(d,f){d.prototype=Object.create(f.prototype),d.prototype.constructor=d,u(d,f)}function u(d,f){return u=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(p,m){return p.__proto__=m,p},u(d,f)}var h=function(d){c(f,d);function f(p){var m;return m=d.call(this,p)||this,m.type=r.CLASS,m._constructed=!0,m}var g=f.prototype;return g.valueToString=function(){return"."+d.prototype.valueToString.call(this)},l(f,[{key:"value",get:function(){return this._value},set:function(m){if(this._constructed){var _=(0,t.default)(m,{isIdentifier:!0});_!==m?((0,i.ensureObject)(this,"raws"),this.raws.value=_):this.raws&&delete this.raws.value}this._value=m}}]),f}(s.default);e.default=h,n.exports=e.default})(ZB,ZB.exports);var che=ZB.exports,XB={exports:{}};(function(n,e){e.__esModule=!0,e.default=void 0;var t=s(Lm),i=wi;function s(l){return l&&l.__esModule?l:{default:l}}function r(l,c){l.prototype=Object.create(c.prototype),l.prototype.constructor=l,o(l,c)}function o(l,c){return o=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(h,d){return h.__proto__=d,h},o(l,c)}var a=function(l){r(c,l);function c(u){var h;return h=l.call(this,u)||this,h.type=i.COMMENT,h}return c}(t.default);e.default=a,n.exports=e.default})(XB,XB.exports);var uhe=XB.exports,QB={exports:{}};(function(n,e){e.__esModule=!0,e.default=void 0;var t=s(Lm),i=wi;function s(l){return l&&l.__esModule?l:{default:l}}function r(l,c){l.prototype=Object.create(c.prototype),l.prototype.constructor=l,o(l,c)}function o(l,c){return o=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(h,d){return h.__proto__=d,h},o(l,c)}var a=function(l){r(c,l);function c(h){var d;return d=l.call(this,h)||this,d.type=i.ID,d}var u=c.prototype;return u.valueToString=function(){return"#"+l.prototype.valueToString.call(this)},c}(t.default);e.default=a,n.exports=e.default})(QB,QB.exports);var hhe=QB.exports,JB={exports:{}},e8={exports:{}};(function(n,e){e.__esModule=!0,e.default=void 0;var t=r(wU),i=yl,s=r(Lm);function r(h){return h&&h.__esModule?h:{default:h}}function o(h,d){for(var f=0;f<d.length;f++){var g=d[f];g.enumerable=g.enumerable||!1,g.configurable=!0,"value"in g&&(g.writable=!0),Object.defineProperty(h,g.key,g)}}function a(h,d,f){return d&&o(h.prototype,d),f&&o(h,f),Object.defineProperty(h,"prototype",{writable:!1}),h}function l(h,d){h.prototype=Object.create(d.prototype),h.prototype.constructor=h,c(h,d)}function c(h,d){return c=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(g,p){return g.__proto__=p,g},c(h,d)}var u=function(h){l(d,h);function d(){return h.apply(this,arguments)||this}var f=d.prototype;return f.qualifiedName=function(p){return this.namespace?this.namespaceString+"|"+p:p},f.valueToString=function(){return this.qualifiedName(h.prototype.valueToString.call(this))},a(d,[{key:"namespace",get:function(){return this._namespace},set:function(p){if(p===!0||p==="*"||p==="&"){this._namespace=p,this.raws&&delete this.raws.namespace;return}var m=(0,t.default)(p,{isIdentifier:!0});this._namespace=p,m!==p?((0,i.ensureObject)(this,"raws"),this.raws.namespace=m):this.raws&&delete this.raws.namespace}},{key:"ns",get:function(){return this._namespace},set:function(p){this.namespace=p}},{key:"namespaceString",get:function(){if(this.namespace){var p=this.stringifyProperty("namespace");return p===!0?"":p}else return""}}]),d}(s.default);e.default=u,n.exports=e.default})(e8,e8.exports);var SU=e8.exports;(function(n,e){e.__esModule=!0,e.default=void 0;var t=s(SU),i=wi;function s(l){return l&&l.__esModule?l:{default:l}}function r(l,c){l.prototype=Object.create(c.prototype),l.prototype.constructor=l,o(l,c)}function o(l,c){return o=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(h,d){return h.__proto__=d,h},o(l,c)}var a=function(l){r(c,l);function c(u){var h;return h=l.call(this,u)||this,h.type=i.TAG,h}return c}(t.default);e.default=a,n.exports=e.default})(JB,JB.exports);var dhe=JB.exports,t8={exports:{}};(function(n,e){e.__esModule=!0,e.default=void 0;var t=s(Lm),i=wi;function s(l){return l&&l.__esModule?l:{default:l}}function r(l,c){l.prototype=Object.create(c.prototype),l.prototype.constructor=l,o(l,c)}function o(l,c){return o=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(h,d){return h.__proto__=d,h},o(l,c)}var a=function(l){r(c,l);function c(u){var h;return h=l.call(this,u)||this,h.type=i.STRING,h}return c}(t.default);e.default=a,n.exports=e.default})(t8,t8.exports);var fhe=t8.exports,i8={exports:{}};(function(n,e){e.__esModule=!0,e.default=void 0;var t=s(yU),i=wi;function s(l){return l&&l.__esModule?l:{default:l}}function r(l,c){l.prototype=Object.create(c.prototype),l.prototype.constructor=l,o(l,c)}function o(l,c){return o=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(h,d){return h.__proto__=d,h},o(l,c)}var a=function(l){r(c,l);function c(h){var d;return d=l.call(this,h)||this,d.type=i.PSEUDO,d}var u=c.prototype;return u.toString=function(){var d=this.length?"("+this.map(String).join(",")+")":"";return[this.rawSpaceBefore,this.stringifyProperty("value"),d,this.rawSpaceAfter].join("")},c}(t.default);e.default=a,n.exports=e.default})(i8,i8.exports);var ghe=i8.exports,kU={},APe=nNe.deprecate;(function(n){n.__esModule=!0,n.default=void 0,n.unescapeValue=m;var e=o(wU),t=o(ohe),i=o(SU),s=wi,r;function o(S){return S&&S.__esModule?S:{default:S}}function a(S,E){for(var L=0;L<E.length;L++){var k=E[L];k.enumerable=k.enumerable||!1,k.configurable=!0,"value"in k&&(k.writable=!0),Object.defineProperty(S,k.key,k)}}function l(S,E,L){return E&&a(S.prototype,E),L&&a(S,L),Object.defineProperty(S,"prototype",{writable:!1}),S}function c(S,E){S.prototype=Object.create(E.prototype),S.prototype.constructor=S,u(S,E)}function u(S,E){return u=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(k,x){return k.__proto__=x,k},u(S,E)}var h=APe,d=/^('|")([^]*)\1$/,f=h(function(){},"Assigning an attribute a value containing characters that might need to be escaped is deprecated. Call attribute.setValue() instead."),g=h(function(){},"Assigning attr.quoted is deprecated and has no effect. Assign to attr.quoteMark instead."),p=h(function(){},"Constructing an Attribute selector with a value without specifying quoteMark is deprecated. Note: The value should be unescaped now.");function m(S){var E=!1,L=null,k=S,x=k.match(d);return x&&(L=x[1],k=x[2]),k=(0,t.default)(k),k!==S&&(E=!0),{deprecatedUsage:E,unescaped:k,quoteMark:L}}function _(S){if(S.quoteMark!==void 0||S.value===void 0)return S;p();var E=m(S.value),L=E.quoteMark,k=E.unescaped;return S.raws||(S.raws={}),S.raws.value===void 0&&(S.raws.value=S.value),S.value=k,S.quoteMark=L,S}var b=function(S){c(E,S);function E(k){var x;return k===void 0&&(k={}),x=S.call(this,_(k))||this,x.type=s.ATTRIBUTE,x.raws=x.raws||{},Object.defineProperty(x.raws,"unquoted",{get:h(function(){return x.value},"attr.raws.unquoted is deprecated. Call attr.value instead."),set:h(function(){return x.value},"Setting attr.raws.unquoted is deprecated and has no effect. attr.value is unescaped by default now.")}),x._constructed=!0,x}var L=E.prototype;return L.getQuotedValue=function(x){x===void 0&&(x={});var I=this._determineQuoteMark(x),N=y[I],T=(0,e.default)(this._value,N);return T},L._determineQuoteMark=function(x){return x.smart?this.smartQuoteMark(x):this.preferredQuoteMark(x)},L.setValue=function(x,I){I===void 0&&(I={}),this._value=x,this._quoteMark=this._determineQuoteMark(I),this._syncRawValue()},L.smartQuoteMark=function(x){var I=this.value,N=I.replace(/[^']/g,"").length,T=I.replace(/[^"]/g,"").length;if(N+T===0){var P=(0,e.default)(I,{isIdentifier:!0});if(P===I)return E.NO_QUOTE;var R=this.preferredQuoteMark(x);if(R===E.NO_QUOTE){var F=this.quoteMark||x.quoteMark||E.DOUBLE_QUOTE,j=y[F],K=(0,e.default)(I,j);if(K.length<P.length)return F}return R}else return T===N?this.preferredQuoteMark(x):T<N?E.DOUBLE_QUOTE:E.SINGLE_QUOTE},L.preferredQuoteMark=function(x){var I=x.preferCurrentQuoteMark?this.quoteMark:x.quoteMark;return I===void 0&&(I=x.preferCurrentQuoteMark?x.quoteMark:this.quoteMark),I===void 0&&(I=E.DOUBLE_QUOTE),I},L._syncRawValue=function(){var x=(0,e.default)(this._value,y[this.quoteMark]);x===this._value?this.raws&&delete this.raws.value:this.raws.value=x},L._handleEscapes=function(x,I){if(this._constructed){var N=(0,e.default)(I,{isIdentifier:!0});N!==I?this.raws[x]=N:delete this.raws[x]}},L._spacesFor=function(x){var I={before:"",after:""},N=this.spaces[x]||{},T=this.raws.spaces&&this.raws.spaces[x]||{};return Object.assign(I,N,T)},L._stringFor=function(x,I,N){I===void 0&&(I=x),N===void 0&&(N=w);var T=this._spacesFor(I);return N(this.stringifyProperty(x),T)},L.offsetOf=function(x){var I=1,N=this._spacesFor("attribute");if(I+=N.before.length,x==="namespace"||x==="ns")return this.namespace?I:-1;if(x==="attributeNS"||(I+=this.namespaceString.length,this.namespace&&(I+=1),x==="attribute"))return I;I+=this.stringifyProperty("attribute").length,I+=N.after.length;var T=this._spacesFor("operator");I+=T.before.length;var P=this.stringifyProperty("operator");if(x==="operator")return P?I:-1;I+=P.length,I+=T.after.length;var R=this._spacesFor("value");I+=R.before.length;var F=this.stringifyProperty("value");if(x==="value")return F?I:-1;I+=F.length,I+=R.after.length;var j=this._spacesFor("insensitive");return I+=j.before.length,x==="insensitive"&&this.insensitive?I:-1},L.toString=function(){var x=this,I=[this.rawSpaceBefore,"["];return I.push(this._stringFor("qualifiedAttribute","attribute")),this.operator&&(this.value||this.value==="")&&(I.push(this._stringFor("operator")),I.push(this._stringFor("value")),I.push(this._stringFor("insensitiveFlag","insensitive",function(N,T){return N.length>0&&!x.quoted&&T.before.length===0&&!(x.spaces.value&&x.spaces.value.after)&&(T.before=" "),w(N,T)}))),I.push("]"),I.push(this.rawSpaceAfter),I.join("")},l(E,[{key:"quoted",get:function(){var x=this.quoteMark;return x==="'"||x==='"'},set:function(x){g()}},{key:"quoteMark",get:function(){return this._quoteMark},set:function(x){if(!this._constructed){this._quoteMark=x;return}this._quoteMark!==x&&(this._quoteMark=x,this._syncRawValue())}},{key:"qualifiedAttribute",get:function(){return this.qualifiedName(this.raws.attribute||this.attribute)}},{key:"insensitiveFlag",get:function(){return this.insensitive?"i":""}},{key:"value",get:function(){return this._value},set:function(x){if(this._constructed){var I=m(x),N=I.deprecatedUsage,T=I.unescaped,P=I.quoteMark;if(N&&f(),T===this._value&&P===this._quoteMark)return;this._value=T,this._quoteMark=P,this._syncRawValue()}else this._value=x}},{key:"insensitive",get:function(){return this._insensitive},set:function(x){x||(this._insensitive=!1,this.raws&&(this.raws.insensitiveFlag==="I"||this.raws.insensitiveFlag==="i")&&(this.raws.insensitiveFlag=void 0)),this._insensitive=x}},{key:"attribute",get:function(){return this._attribute},set:function(x){this._handleEscapes("attribute",x),this._attribute=x}}]),E}(i.default);n.default=b,b.NO_QUOTE=null,b.SINGLE_QUOTE="'",b.DOUBLE_QUOTE='"';var y=(r={"'":{quotes:"single",wrap:!0},'"':{quotes:"double",wrap:!0}},r[null]={isIdentifier:!0},r);function w(S,E){return""+E.before+S+E.after}})(kU);var n8={exports:{}};(function(n,e){e.__esModule=!0,e.default=void 0;var t=s(SU),i=wi;function s(l){return l&&l.__esModule?l:{default:l}}function r(l,c){l.prototype=Object.create(c.prototype),l.prototype.constructor=l,o(l,c)}function o(l,c){return o=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(h,d){return h.__proto__=d,h},o(l,c)}var a=function(l){r(c,l);function c(u){var h;return h=l.call(this,u)||this,h.type=i.UNIVERSAL,h.value="*",h}return c}(t.default);e.default=a,n.exports=e.default})(n8,n8.exports);var phe=n8.exports,s8={exports:{}};(function(n,e){e.__esModule=!0,e.default=void 0;var t=s(Lm),i=wi;function s(l){return l&&l.__esModule?l:{default:l}}function r(l,c){l.prototype=Object.create(c.prototype),l.prototype.constructor=l,o(l,c)}function o(l,c){return o=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(h,d){return h.__proto__=d,h},o(l,c)}var a=function(l){r(c,l);function c(u){var h;return h=l.call(this,u)||this,h.type=i.COMBINATOR,h}return c}(t.default);e.default=a,n.exports=e.default})(s8,s8.exports);var mhe=s8.exports,r8={exports:{}};(function(n,e){e.__esModule=!0,e.default=void 0;var t=s(Lm),i=wi;function s(l){return l&&l.__esModule?l:{default:l}}function r(l,c){l.prototype=Object.create(c.prototype),l.prototype.constructor=l,o(l,c)}function o(l,c){return o=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(h,d){return h.__proto__=d,h},o(l,c)}var a=function(l){r(c,l);function c(u){var h;return h=l.call(this,u)||this,h.type=i.NESTING,h.value="&",h}return c}(t.default);e.default=a,n.exports=e.default})(r8,r8.exports);var _he=r8.exports,o8={exports:{}};(function(n,e){e.__esModule=!0,e.default=t;function t(i){return i.sort(function(s,r){return s-r})}n.exports=e.default})(o8,o8.exports);var PPe=o8.exports,vhe={},bt={};bt.__esModule=!0;bt.word=bt.tilde=bt.tab=bt.str=bt.space=bt.slash=bt.singleQuote=bt.semicolon=bt.plus=bt.pipe=bt.openSquare=bt.openParenthesis=bt.newline=bt.greaterThan=bt.feed=bt.equals=bt.doubleQuote=bt.dollar=bt.cr=bt.comment=bt.comma=bt.combinator=bt.colon=bt.closeSquare=bt.closeParenthesis=bt.caret=bt.bang=bt.backslash=bt.at=bt.asterisk=bt.ampersand=void 0;var RPe=38;bt.ampersand=RPe;var MPe=42;bt.asterisk=MPe;var OPe=64;bt.at=OPe;var FPe=44;bt.comma=FPe;var BPe=58;bt.colon=BPe;var WPe=59;bt.semicolon=WPe;var VPe=40;bt.openParenthesis=VPe;var HPe=41;bt.closeParenthesis=HPe;var $Pe=91;bt.openSquare=$Pe;var zPe=93;bt.closeSquare=zPe;var UPe=36;bt.dollar=UPe;var jPe=126;bt.tilde=jPe;var qPe=94;bt.caret=qPe;var KPe=43;bt.plus=KPe;var GPe=61;bt.equals=GPe;var YPe=124;bt.pipe=YPe;var ZPe=62;bt.greaterThan=ZPe;var XPe=32;bt.space=XPe;var bhe=39;bt.singleQuote=bhe;var QPe=34;bt.doubleQuote=QPe;var JPe=47;bt.slash=JPe;var eRe=33;bt.bang=eRe;var tRe=92;bt.backslash=tRe;var iRe=13;bt.cr=iRe;var nRe=12;bt.feed=nRe;var sRe=10;bt.newline=sRe;var rRe=9;bt.tab=rRe;var oRe=bhe;bt.str=oRe;var aRe=-1;bt.comment=aRe;var lRe=-2;bt.word=lRe;var cRe=-3;bt.combinator=cRe;(function(n){n.__esModule=!0,n.FIELDS=void 0,n.default=g;var e=r(bt),t,i;function s(p){if(typeof WeakMap!="function")return null;var m=new WeakMap,_=new WeakMap;return(s=function(y){return y?_:m})(p)}function r(p,m){if(!m&&p&&p.__esModule)return p;if(p===null||typeof p!="object"&&typeof p!="function")return{default:p};var _=s(m);if(_&&_.has(p))return _.get(p);var b={},y=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var w in p)if(w!=="default"&&Object.prototype.hasOwnProperty.call(p,w)){var S=y?Object.getOwnPropertyDescriptor(p,w):null;S&&(S.get||S.set)?Object.defineProperty(b,w,S):b[w]=p[w]}return b.default=p,_&&_.set(p,b),b}for(var o=(t={},t[e.tab]=!0,t[e.newline]=!0,t[e.cr]=!0,t[e.feed]=!0,t),a=(i={},i[e.space]=!0,i[e.tab]=!0,i[e.newline]=!0,i[e.cr]=!0,i[e.feed]=!0,i[e.ampersand]=!0,i[e.asterisk]=!0,i[e.bang]=!0,i[e.comma]=!0,i[e.colon]=!0,i[e.semicolon]=!0,i[e.openParenthesis]=!0,i[e.closeParenthesis]=!0,i[e.openSquare]=!0,i[e.closeSquare]=!0,i[e.singleQuote]=!0,i[e.doubleQuote]=!0,i[e.plus]=!0,i[e.pipe]=!0,i[e.tilde]=!0,i[e.greaterThan]=!0,i[e.equals]=!0,i[e.dollar]=!0,i[e.caret]=!0,i[e.slash]=!0,i),l={},c="0123456789abcdefABCDEF",u=0;u<c.length;u++)l[c.charCodeAt(u)]=!0;function h(p,m){var _=m,b;do{if(b=p.charCodeAt(_),a[b])return _-1;b===e.backslash?_=d(p,_)+1:_++}while(_<p.length);return _-1}function d(p,m){var _=m,b=p.charCodeAt(_+1);if(!o[b])if(l[b]){var y=0;do _++,y++,b=p.charCodeAt(_+1);while(l[b]&&y<6);y<6&&b===e.space&&_++}else _++;return _}var f={TYPE:0,START_LINE:1,START_COL:2,END_LINE:3,END_COL:4,START_POS:5,END_POS:6};n.FIELDS=f;function g(p){var m=[],_=p.css.valueOf(),b=_,y=b.length,w=-1,S=1,E=0,L=0,k,x,I,N,T,P,R,F,j,K,Z,q,re;function G(W,Y){if(p.safe)_+=Y,j=_.length-1;else throw p.error("Unclosed "+W,S,E-w,E)}for(;E<y;){switch(k=_.charCodeAt(E),k===e.newline&&(w=E,S+=1),k){case e.space:case e.tab:case e.newline:case e.cr:case e.feed:j=E;do j+=1,k=_.charCodeAt(j),k===e.newline&&(w=j,S+=1);while(k===e.space||k===e.newline||k===e.tab||k===e.cr||k===e.feed);re=e.space,N=S,I=j-w-1,L=j;break;case e.plus:case e.greaterThan:case e.tilde:case e.pipe:j=E;do j+=1,k=_.charCodeAt(j);while(k===e.plus||k===e.greaterThan||k===e.tilde||k===e.pipe);re=e.combinator,N=S,I=E-w,L=j;break;case e.asterisk:case e.ampersand:case e.bang:case e.comma:case e.equals:case e.dollar:case e.caret:case e.openSquare:case e.closeSquare:case e.colon:case e.semicolon:case e.openParenthesis:case e.closeParenthesis:j=E,re=k,N=S,I=E-w,L=j+1;break;case e.singleQuote:case e.doubleQuote:q=k===e.singleQuote?"'":'"',j=E;do for(T=!1,j=_.indexOf(q,j+1),j===-1&&G("quote",q),P=j;_.charCodeAt(P-1)===e.backslash;)P-=1,T=!T;while(T);re=e.str,N=S,I=E-w,L=j+1;break;default:k===e.slash&&_.charCodeAt(E+1)===e.asterisk?(j=_.indexOf("*/",E+2)+1,j===0&&G("comment","*/"),x=_.slice(E,j+1),F=x.split(` +`),R=F.length-1,R>0?(K=S+R,Z=j-F[R].length):(K=S,Z=w),re=e.comment,S=K,N=K,I=j-Z):k===e.slash?(j=E,re=k,N=S,I=E-w,L=j+1):(j=h(_,E),re=e.word,N=S,I=j-w),L=j+1;break}m.push([re,S,E-w,N,I,E,L]),Z&&(w=Z,Z=null),E=L}return m}})(vhe);(function(n,e){e.__esModule=!0,e.default=void 0;var t=L(ahe),i=L(lhe),s=L(che),r=L(uhe),o=L(hhe),a=L(dhe),l=L(fhe),c=L(ghe),u=E(kU),h=L(phe),d=L(mhe),f=L(_he),g=L(PPe),p=E(vhe),m=E(bt),_=E(wi),b=yl,y,w;function S(G){if(typeof WeakMap!="function")return null;var W=new WeakMap,Y=new WeakMap;return(S=function(z){return z?Y:W})(G)}function E(G,W){if(!W&&G&&G.__esModule)return G;if(G===null||typeof G!="object"&&typeof G!="function")return{default:G};var Y=S(W);if(Y&&Y.has(G))return Y.get(G);var X={},z=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var le in G)if(le!=="default"&&Object.prototype.hasOwnProperty.call(G,le)){var J=z?Object.getOwnPropertyDescriptor(G,le):null;J&&(J.get||J.set)?Object.defineProperty(X,le,J):X[le]=G[le]}return X.default=G,Y&&Y.set(G,X),X}function L(G){return G&&G.__esModule?G:{default:G}}function k(G,W){for(var Y=0;Y<W.length;Y++){var X=W[Y];X.enumerable=X.enumerable||!1,X.configurable=!0,"value"in X&&(X.writable=!0),Object.defineProperty(G,X.key,X)}}function x(G,W,Y){return W&&k(G.prototype,W),Y&&k(G,Y),Object.defineProperty(G,"prototype",{writable:!1}),G}var I=(y={},y[m.space]=!0,y[m.cr]=!0,y[m.feed]=!0,y[m.newline]=!0,y[m.tab]=!0,y),N=Object.assign({},I,(w={},w[m.comment]=!0,w));function T(G){return{line:G[p.FIELDS.START_LINE],column:G[p.FIELDS.START_COL]}}function P(G){return{line:G[p.FIELDS.END_LINE],column:G[p.FIELDS.END_COL]}}function R(G,W,Y,X){return{start:{line:G,column:W},end:{line:Y,column:X}}}function F(G){return R(G[p.FIELDS.START_LINE],G[p.FIELDS.START_COL],G[p.FIELDS.END_LINE],G[p.FIELDS.END_COL])}function j(G,W){if(G)return R(G[p.FIELDS.START_LINE],G[p.FIELDS.START_COL],W[p.FIELDS.END_LINE],W[p.FIELDS.END_COL])}function K(G,W){var Y=G[W];if(typeof Y=="string")return Y.indexOf("\\")!==-1&&((0,b.ensureObject)(G,"raws"),G[W]=(0,b.unesc)(Y),G.raws[W]===void 0&&(G.raws[W]=Y)),G}function Z(G,W){for(var Y=-1,X=[];(Y=G.indexOf(W,Y+1))!==-1;)X.push(Y);return X}function q(){var G=Array.prototype.concat.apply([],arguments);return G.filter(function(W,Y){return Y===G.indexOf(W)})}var re=function(){function G(Y,X){X===void 0&&(X={}),this.rule=Y,this.options=Object.assign({lossy:!1,safe:!1},X),this.position=0,this.css=typeof this.rule=="string"?this.rule:this.rule.selector,this.tokens=(0,p.default)({css:this.css,error:this._errorGenerator(),safe:this.options.safe});var z=j(this.tokens[0],this.tokens[this.tokens.length-1]);this.root=new t.default({source:z}),this.root.errorGenerator=this._errorGenerator();var le=new i.default({source:{start:{line:1,column:1}}});this.root.append(le),this.current=le,this.loop()}var W=G.prototype;return W._errorGenerator=function(){var X=this;return function(z,le){return typeof X.rule=="string"?new Error(z):X.rule.error(z,le)}},W.attribute=function(){var X=[],z=this.currToken;for(this.position++;this.position<this.tokens.length&&this.currToken[p.FIELDS.TYPE]!==m.closeSquare;)X.push(this.currToken),this.position++;if(this.currToken[p.FIELDS.TYPE]!==m.closeSquare)return this.expected("closing square bracket",this.currToken[p.FIELDS.START_POS]);var le=X.length,J={source:R(z[1],z[2],this.currToken[3],this.currToken[4]),sourceIndex:z[p.FIELDS.START_POS]};if(le===1&&!~[m.word].indexOf(X[0][p.FIELDS.TYPE]))return this.expected("attribute",X[0][p.FIELDS.START_POS]);for(var be=0,fe="",ge="",se=null,H=!1;be<le;){var te=X[be],ce=this.content(te),ve=X[be+1];switch(te[p.FIELDS.TYPE]){case m.space:if(H=!0,this.options.lossy)break;if(se){(0,b.ensureObject)(J,"spaces",se);var Ee=J.spaces[se].after||"";J.spaces[se].after=Ee+ce;var De=(0,b.getProp)(J,"raws","spaces",se,"after")||null;De&&(J.raws.spaces[se].after=De+ce)}else fe=fe+ce,ge=ge+ce;break;case m.asterisk:if(ve[p.FIELDS.TYPE]===m.equals)J.operator=ce,se="operator";else if((!J.namespace||se==="namespace"&&!H)&&ve){fe&&((0,b.ensureObject)(J,"spaces","attribute"),J.spaces.attribute.before=fe,fe=""),ge&&((0,b.ensureObject)(J,"raws","spaces","attribute"),J.raws.spaces.attribute.before=fe,ge=""),J.namespace=(J.namespace||"")+ce;var Fe=(0,b.getProp)(J,"raws","namespace")||null;Fe&&(J.raws.namespace+=ce),se="namespace"}H=!1;break;case m.dollar:if(se==="value"){var Oe=(0,b.getProp)(J,"raws","value");J.value+="$",Oe&&(J.raws.value=Oe+"$");break}case m.caret:ve[p.FIELDS.TYPE]===m.equals&&(J.operator=ce,se="operator"),H=!1;break;case m.combinator:if(ce==="~"&&ve[p.FIELDS.TYPE]===m.equals&&(J.operator=ce,se="operator"),ce!=="|"){H=!1;break}ve[p.FIELDS.TYPE]===m.equals?(J.operator=ce,se="operator"):!J.namespace&&!J.attribute&&(J.namespace=!0),H=!1;break;case m.word:if(ve&&this.content(ve)==="|"&&X[be+2]&&X[be+2][p.FIELDS.TYPE]!==m.equals&&!J.operator&&!J.namespace)J.namespace=ce,se="namespace";else if(!J.attribute||se==="attribute"&&!H){fe&&((0,b.ensureObject)(J,"spaces","attribute"),J.spaces.attribute.before=fe,fe=""),ge&&((0,b.ensureObject)(J,"raws","spaces","attribute"),J.raws.spaces.attribute.before=ge,ge=""),J.attribute=(J.attribute||"")+ce;var oe=(0,b.getProp)(J,"raws","attribute")||null;oe&&(J.raws.attribute+=ce),se="attribute"}else if(!J.value&&J.value!==""||se==="value"&&!(H||J.quoteMark)){var ee=(0,b.unesc)(ce),ae=(0,b.getProp)(J,"raws","value")||"",O=J.value||"";J.value=O+ee,J.quoteMark=null,(ee!==ce||ae)&&((0,b.ensureObject)(J,"raws"),J.raws.value=(ae||O)+ce),se="value"}else{var V=ce==="i"||ce==="I";(J.value||J.value==="")&&(J.quoteMark||H)?(J.insensitive=V,(!V||ce==="I")&&((0,b.ensureObject)(J,"raws"),J.raws.insensitiveFlag=ce),se="insensitive",fe&&((0,b.ensureObject)(J,"spaces","insensitive"),J.spaces.insensitive.before=fe,fe=""),ge&&((0,b.ensureObject)(J,"raws","spaces","insensitive"),J.raws.spaces.insensitive.before=ge,ge="")):(J.value||J.value==="")&&(se="value",J.value+=ce,J.raws.value&&(J.raws.value+=ce))}H=!1;break;case m.str:if(!J.attribute||!J.operator)return this.error("Expected an attribute followed by an operator preceding the string.",{index:te[p.FIELDS.START_POS]});var ne=(0,u.unescapeValue)(ce),ie=ne.unescaped,we=ne.quoteMark;J.value=ie,J.quoteMark=we,se="value",(0,b.ensureObject)(J,"raws"),J.raws.value=ce,H=!1;break;case m.equals:if(!J.attribute)return this.expected("attribute",te[p.FIELDS.START_POS],ce);if(J.value)return this.error('Unexpected "=" found; an operator was already defined.',{index:te[p.FIELDS.START_POS]});J.operator=J.operator?J.operator+ce:ce,se="operator",H=!1;break;case m.comment:if(se)if(H||ve&&ve[p.FIELDS.TYPE]===m.space||se==="insensitive"){var Ie=(0,b.getProp)(J,"spaces",se,"after")||"",je=(0,b.getProp)(J,"raws","spaces",se,"after")||Ie;(0,b.ensureObject)(J,"raws","spaces",se),J.raws.spaces[se].after=je+ce}else{var Ye=J[se]||"",rt=(0,b.getProp)(J,"raws",se)||Ye;(0,b.ensureObject)(J,"raws"),J.raws[se]=rt+ce}else ge=ge+ce;break;default:return this.error('Unexpected "'+ce+'" found.',{index:te[p.FIELDS.START_POS]})}be++}K(J,"attribute"),K(J,"namespace"),this.newNode(new u.default(J)),this.position++},W.parseWhitespaceEquivalentTokens=function(X){X<0&&(X=this.tokens.length);var z=this.position,le=[],J="",be=void 0;do if(I[this.currToken[p.FIELDS.TYPE]])this.options.lossy||(J+=this.content());else if(this.currToken[p.FIELDS.TYPE]===m.comment){var fe={};J&&(fe.before=J,J=""),be=new r.default({value:this.content(),source:F(this.currToken),sourceIndex:this.currToken[p.FIELDS.START_POS],spaces:fe}),le.push(be)}while(++this.position<X);if(J){if(be)be.spaces.after=J;else if(!this.options.lossy){var ge=this.tokens[z],se=this.tokens[this.position-1];le.push(new l.default({value:"",source:R(ge[p.FIELDS.START_LINE],ge[p.FIELDS.START_COL],se[p.FIELDS.END_LINE],se[p.FIELDS.END_COL]),sourceIndex:ge[p.FIELDS.START_POS],spaces:{before:J,after:""}}))}}return le},W.convertWhitespaceNodesToSpace=function(X,z){var le=this;z===void 0&&(z=!1);var J="",be="";X.forEach(function(ge){var se=le.lossySpace(ge.spaces.before,z),H=le.lossySpace(ge.rawSpaceBefore,z);J+=se+le.lossySpace(ge.spaces.after,z&&se.length===0),be+=se+ge.value+le.lossySpace(ge.rawSpaceAfter,z&&H.length===0)}),be===J&&(be=void 0);var fe={space:J,rawSpace:be};return fe},W.isNamedCombinator=function(X){return X===void 0&&(X=this.position),this.tokens[X+0]&&this.tokens[X+0][p.FIELDS.TYPE]===m.slash&&this.tokens[X+1]&&this.tokens[X+1][p.FIELDS.TYPE]===m.word&&this.tokens[X+2]&&this.tokens[X+2][p.FIELDS.TYPE]===m.slash},W.namedCombinator=function(){if(this.isNamedCombinator()){var X=this.content(this.tokens[this.position+1]),z=(0,b.unesc)(X).toLowerCase(),le={};z!==X&&(le.value="/"+X+"/");var J=new d.default({value:"/"+z+"/",source:R(this.currToken[p.FIELDS.START_LINE],this.currToken[p.FIELDS.START_COL],this.tokens[this.position+2][p.FIELDS.END_LINE],this.tokens[this.position+2][p.FIELDS.END_COL]),sourceIndex:this.currToken[p.FIELDS.START_POS],raws:le});return this.position=this.position+3,J}else this.unexpected()},W.combinator=function(){var X=this;if(this.content()==="|")return this.namespace();var z=this.locateNextMeaningfulToken(this.position);if(z<0||this.tokens[z][p.FIELDS.TYPE]===m.comma){var le=this.parseWhitespaceEquivalentTokens(z);if(le.length>0){var J=this.current.last;if(J){var be=this.convertWhitespaceNodesToSpace(le),fe=be.space,ge=be.rawSpace;ge!==void 0&&(J.rawSpaceAfter+=ge),J.spaces.after+=fe}else le.forEach(function(ae){return X.newNode(ae)})}return}var se=this.currToken,H=void 0;z>this.position&&(H=this.parseWhitespaceEquivalentTokens(z));var te;if(this.isNamedCombinator()?te=this.namedCombinator():this.currToken[p.FIELDS.TYPE]===m.combinator?(te=new d.default({value:this.content(),source:F(this.currToken),sourceIndex:this.currToken[p.FIELDS.START_POS]}),this.position++):I[this.currToken[p.FIELDS.TYPE]]||H||this.unexpected(),te){if(H){var ce=this.convertWhitespaceNodesToSpace(H),ve=ce.space,Ee=ce.rawSpace;te.spaces.before=ve,te.rawSpaceBefore=Ee}}else{var De=this.convertWhitespaceNodesToSpace(H,!0),Fe=De.space,Oe=De.rawSpace;Oe||(Oe=Fe);var oe={},ee={spaces:{}};Fe.endsWith(" ")&&Oe.endsWith(" ")?(oe.before=Fe.slice(0,Fe.length-1),ee.spaces.before=Oe.slice(0,Oe.length-1)):Fe.startsWith(" ")&&Oe.startsWith(" ")?(oe.after=Fe.slice(1),ee.spaces.after=Oe.slice(1)):ee.value=Oe,te=new d.default({value:" ",source:j(se,this.tokens[this.position-1]),sourceIndex:se[p.FIELDS.START_POS],spaces:oe,raws:ee})}return this.currToken&&this.currToken[p.FIELDS.TYPE]===m.space&&(te.spaces.after=this.optionalSpace(this.content()),this.position++),this.newNode(te)},W.comma=function(){if(this.position===this.tokens.length-1){this.root.trailingComma=!0,this.position++;return}this.current._inferEndPosition();var X=new i.default({source:{start:T(this.tokens[this.position+1])}});this.current.parent.append(X),this.current=X,this.position++},W.comment=function(){var X=this.currToken;this.newNode(new r.default({value:this.content(),source:F(X),sourceIndex:X[p.FIELDS.START_POS]})),this.position++},W.error=function(X,z){throw this.root.error(X,z)},W.missingBackslash=function(){return this.error("Expected a backslash preceding the semicolon.",{index:this.currToken[p.FIELDS.START_POS]})},W.missingParenthesis=function(){return this.expected("opening parenthesis",this.currToken[p.FIELDS.START_POS])},W.missingSquareBracket=function(){return this.expected("opening square bracket",this.currToken[p.FIELDS.START_POS])},W.unexpected=function(){return this.error("Unexpected '"+this.content()+"'. Escaping special characters with \\ may help.",this.currToken[p.FIELDS.START_POS])},W.unexpectedPipe=function(){return this.error("Unexpected '|'.",this.currToken[p.FIELDS.START_POS])},W.namespace=function(){var X=this.prevToken&&this.content(this.prevToken)||!0;if(this.nextToken[p.FIELDS.TYPE]===m.word)return this.position++,this.word(X);if(this.nextToken[p.FIELDS.TYPE]===m.asterisk)return this.position++,this.universal(X);this.unexpectedPipe()},W.nesting=function(){if(this.nextToken){var X=this.content(this.nextToken);if(X==="|"){this.position++;return}}var z=this.currToken;this.newNode(new f.default({value:this.content(),source:F(z),sourceIndex:z[p.FIELDS.START_POS]})),this.position++},W.parentheses=function(){var X=this.current.last,z=1;if(this.position++,X&&X.type===_.PSEUDO){var le=new i.default({source:{start:T(this.tokens[this.position-1])}}),J=this.current;for(X.append(le),this.current=le;this.position<this.tokens.length&&z;)this.currToken[p.FIELDS.TYPE]===m.openParenthesis&&z++,this.currToken[p.FIELDS.TYPE]===m.closeParenthesis&&z--,z?this.parse():(this.current.source.end=P(this.currToken),this.current.parent.source.end=P(this.currToken),this.position++);this.current=J}else{for(var be=this.currToken,fe="(",ge;this.position<this.tokens.length&&z;)this.currToken[p.FIELDS.TYPE]===m.openParenthesis&&z++,this.currToken[p.FIELDS.TYPE]===m.closeParenthesis&&z--,ge=this.currToken,fe+=this.parseParenthesisToken(this.currToken),this.position++;X?X.appendToPropertyAndEscape("value",fe,fe):this.newNode(new l.default({value:fe,source:R(be[p.FIELDS.START_LINE],be[p.FIELDS.START_COL],ge[p.FIELDS.END_LINE],ge[p.FIELDS.END_COL]),sourceIndex:be[p.FIELDS.START_POS]}))}if(z)return this.expected("closing parenthesis",this.currToken[p.FIELDS.START_POS])},W.pseudo=function(){for(var X=this,z="",le=this.currToken;this.currToken&&this.currToken[p.FIELDS.TYPE]===m.colon;)z+=this.content(),this.position++;if(!this.currToken)return this.expected(["pseudo-class","pseudo-element"],this.position-1);if(this.currToken[p.FIELDS.TYPE]===m.word)this.splitWord(!1,function(J,be){z+=J,X.newNode(new c.default({value:z,source:j(le,X.currToken),sourceIndex:le[p.FIELDS.START_POS]})),be>1&&X.nextToken&&X.nextToken[p.FIELDS.TYPE]===m.openParenthesis&&X.error("Misplaced parenthesis.",{index:X.nextToken[p.FIELDS.START_POS]})});else return this.expected(["pseudo-class","pseudo-element"],this.currToken[p.FIELDS.START_POS])},W.space=function(){var X=this.content();this.position===0||this.prevToken[p.FIELDS.TYPE]===m.comma||this.prevToken[p.FIELDS.TYPE]===m.openParenthesis||this.current.nodes.every(function(z){return z.type==="comment"})?(this.spaces=this.optionalSpace(X),this.position++):this.position===this.tokens.length-1||this.nextToken[p.FIELDS.TYPE]===m.comma||this.nextToken[p.FIELDS.TYPE]===m.closeParenthesis?(this.current.last.spaces.after=this.optionalSpace(X),this.position++):this.combinator()},W.string=function(){var X=this.currToken;this.newNode(new l.default({value:this.content(),source:F(X),sourceIndex:X[p.FIELDS.START_POS]})),this.position++},W.universal=function(X){var z=this.nextToken;if(z&&this.content(z)==="|")return this.position++,this.namespace();var le=this.currToken;this.newNode(new h.default({value:this.content(),source:F(le),sourceIndex:le[p.FIELDS.START_POS]}),X),this.position++},W.splitWord=function(X,z){for(var le=this,J=this.nextToken,be=this.content();J&&~[m.dollar,m.caret,m.equals,m.word].indexOf(J[p.FIELDS.TYPE]);){this.position++;var fe=this.content();if(be+=fe,fe.lastIndexOf("\\")===fe.length-1){var ge=this.nextToken;ge&&ge[p.FIELDS.TYPE]===m.space&&(be+=this.requiredSpace(this.content(ge)),this.position++)}J=this.nextToken}var se=Z(be,".").filter(function(ve){var Ee=be[ve-1]==="\\",De=/^\d+\.\d+%$/.test(be);return!Ee&&!De}),H=Z(be,"#").filter(function(ve){return be[ve-1]!=="\\"}),te=Z(be,"#{");te.length&&(H=H.filter(function(ve){return!~te.indexOf(ve)}));var ce=(0,g.default)(q([0].concat(se,H)));ce.forEach(function(ve,Ee){var De=ce[Ee+1]||be.length,Fe=be.slice(ve,De);if(Ee===0&&z)return z.call(le,Fe,ce.length);var Oe,oe=le.currToken,ee=oe[p.FIELDS.START_POS]+ce[Ee],ae=R(oe[1],oe[2]+ve,oe[3],oe[2]+(De-1));if(~se.indexOf(ve)){var O={value:Fe.slice(1),source:ae,sourceIndex:ee};Oe=new s.default(K(O,"value"))}else if(~H.indexOf(ve)){var V={value:Fe.slice(1),source:ae,sourceIndex:ee};Oe=new o.default(K(V,"value"))}else{var ne={value:Fe,source:ae,sourceIndex:ee};K(ne,"value"),Oe=new a.default(ne)}le.newNode(Oe,X),X=null}),this.position++},W.word=function(X){var z=this.nextToken;return z&&this.content(z)==="|"?(this.position++,this.namespace()):this.splitWord(X)},W.loop=function(){for(;this.position<this.tokens.length;)this.parse(!0);return this.current._inferEndPosition(),this.root},W.parse=function(X){switch(this.currToken[p.FIELDS.TYPE]){case m.space:this.space();break;case m.comment:this.comment();break;case m.openParenthesis:this.parentheses();break;case m.closeParenthesis:X&&this.missingParenthesis();break;case m.openSquare:this.attribute();break;case m.dollar:case m.caret:case m.equals:case m.word:this.word();break;case m.colon:this.pseudo();break;case m.comma:this.comma();break;case m.asterisk:this.universal();break;case m.ampersand:this.nesting();break;case m.slash:case m.combinator:this.combinator();break;case m.str:this.string();break;case m.closeSquare:this.missingSquareBracket();case m.semicolon:this.missingBackslash();default:this.unexpected()}},W.expected=function(X,z,le){if(Array.isArray(X)){var J=X.pop();X=X.join(", ")+" or "+J}var be=/^[aeiou]/.test(X[0])?"an":"a";return le?this.error("Expected "+be+" "+X+', found "'+le+'" instead.',{index:z}):this.error("Expected "+be+" "+X+".",{index:z})},W.requiredSpace=function(X){return this.options.lossy?" ":X},W.optionalSpace=function(X){return this.options.lossy?"":X},W.lossySpace=function(X,z){return this.options.lossy?z?" ":"":X},W.parseParenthesisToken=function(X){var z=this.content(X);return X[p.FIELDS.TYPE]===m.space?this.requiredSpace(z):z},W.newNode=function(X,z){return z&&(/^ +$/.test(z)&&(this.options.lossy||(this.spaces=(this.spaces||"")+z),z=!0),X.namespace=z,K(X,"namespace")),this.spaces&&(X.spaces.before=this.spaces,this.spaces=""),this.current.append(X)},W.content=function(X){return X===void 0&&(X=this.currToken),this.css.slice(X[p.FIELDS.START_POS],X[p.FIELDS.END_POS])},W.locateNextMeaningfulToken=function(X){X===void 0&&(X=this.position+1);for(var z=X;z<this.tokens.length;)if(N[this.tokens[z][p.FIELDS.TYPE]]){z++;continue}else return z;return-1},x(G,[{key:"currToken",get:function(){return this.tokens[this.position]}},{key:"nextToken",get:function(){return this.tokens[this.position+1]}},{key:"prevToken",get:function(){return this.tokens[this.position-1]}}]),G}();e.default=re,n.exports=e.default})(HB,HB.exports);var uRe=HB.exports;(function(n,e){e.__esModule=!0,e.default=void 0;var t=i(uRe);function i(r){return r&&r.__esModule?r:{default:r}}var s=function(){function r(a,l){this.func=a||function(){},this.funcRes=null,this.options=l}var o=r.prototype;return o._shouldUpdateSelector=function(l,c){c===void 0&&(c={});var u=Object.assign({},this.options,c);return u.updateSelector===!1?!1:typeof l!="string"},o._isLossy=function(l){l===void 0&&(l={});var c=Object.assign({},this.options,l);return c.lossless===!1},o._root=function(l,c){c===void 0&&(c={});var u=new t.default(l,this._parseOptions(c));return u.root},o._parseOptions=function(l){return{lossy:this._isLossy(l)}},o._run=function(l,c){var u=this;return c===void 0&&(c={}),new Promise(function(h,d){try{var f=u._root(l,c);Promise.resolve(u.func(f)).then(function(g){var p=void 0;return u._shouldUpdateSelector(l,c)&&(p=f.toString(),l.selector=p),{transform:g,root:f,string:p}}).then(h,d)}catch(g){d(g);return}})},o._runSync=function(l,c){c===void 0&&(c={});var u=this._root(l,c),h=this.func(u);if(h&&typeof h.then=="function")throw new Error("Selector processor returned a promise to a synchronous call.");var d=void 0;return c.updateSelector&&typeof l!="string"&&(d=u.toString(),l.selector=d),{transform:h,root:u,string:d}},o.ast=function(l,c){return this._run(l,c).then(function(u){return u.root})},o.astSync=function(l,c){return this._runSync(l,c).root},o.transform=function(l,c){return this._run(l,c).then(function(u){return u.transform})},o.transformSync=function(l,c){return this._runSync(l,c).transform},o.process=function(l,c){return this._run(l,c).then(function(u){return u.string||u.root.toString()})},o.processSync=function(l,c){var u=this._runSync(l,c);return u.string||u.root.toString()},r}();e.default=s,n.exports=e.default})(VB,VB.exports);var hRe=VB.exports,yhe={},ns={};ns.__esModule=!0;ns.universal=ns.tag=ns.string=ns.selector=ns.root=ns.pseudo=ns.nesting=ns.id=ns.comment=ns.combinator=ns.className=ns.attribute=void 0;var dRe=Ec(kU),fRe=Ec(che),gRe=Ec(mhe),pRe=Ec(uhe),mRe=Ec(hhe),_Re=Ec(_he),vRe=Ec(ghe),bRe=Ec(ahe),yRe=Ec(lhe),CRe=Ec(fhe),wRe=Ec(dhe),SRe=Ec(phe);function Ec(n){return n&&n.__esModule?n:{default:n}}var kRe=function(e){return new dRe.default(e)};ns.attribute=kRe;var LRe=function(e){return new fRe.default(e)};ns.className=LRe;var xRe=function(e){return new gRe.default(e)};ns.combinator=xRe;var ERe=function(e){return new pRe.default(e)};ns.comment=ERe;var DRe=function(e){return new mRe.default(e)};ns.id=DRe;var IRe=function(e){return new _Re.default(e)};ns.nesting=IRe;var TRe=function(e){return new vRe.default(e)};ns.pseudo=TRe;var NRe=function(e){return new bRe.default(e)};ns.root=NRe;var ARe=function(e){return new yRe.default(e)};ns.selector=ARe;var PRe=function(e){return new CRe.default(e)};ns.string=PRe;var RRe=function(e){return new wRe.default(e)};ns.tag=RRe;var MRe=function(e){return new SRe.default(e)};ns.universal=MRe;var pn={};pn.__esModule=!0;pn.isComment=pn.isCombinator=pn.isClassName=pn.isAttribute=void 0;pn.isContainer=KRe;pn.isIdentifier=void 0;pn.isNamespace=GRe;pn.isNesting=void 0;pn.isNode=LU;pn.isPseudo=void 0;pn.isPseudoClass=qRe;pn.isPseudoElement=She;pn.isUniversal=pn.isTag=pn.isString=pn.isSelector=pn.isRoot=void 0;var Ls=wi,ya,ORe=(ya={},ya[Ls.ATTRIBUTE]=!0,ya[Ls.CLASS]=!0,ya[Ls.COMBINATOR]=!0,ya[Ls.COMMENT]=!0,ya[Ls.ID]=!0,ya[Ls.NESTING]=!0,ya[Ls.PSEUDO]=!0,ya[Ls.ROOT]=!0,ya[Ls.SELECTOR]=!0,ya[Ls.STRING]=!0,ya[Ls.TAG]=!0,ya[Ls.UNIVERSAL]=!0,ya);function LU(n){return typeof n=="object"&&ORe[n.type]}function Dc(n,e){return LU(e)&&e.type===n}var Che=Dc.bind(null,Ls.ATTRIBUTE);pn.isAttribute=Che;var FRe=Dc.bind(null,Ls.CLASS);pn.isClassName=FRe;var BRe=Dc.bind(null,Ls.COMBINATOR);pn.isCombinator=BRe;var WRe=Dc.bind(null,Ls.COMMENT);pn.isComment=WRe;var VRe=Dc.bind(null,Ls.ID);pn.isIdentifier=VRe;var HRe=Dc.bind(null,Ls.NESTING);pn.isNesting=HRe;var xU=Dc.bind(null,Ls.PSEUDO);pn.isPseudo=xU;var $Re=Dc.bind(null,Ls.ROOT);pn.isRoot=$Re;var zRe=Dc.bind(null,Ls.SELECTOR);pn.isSelector=zRe;var URe=Dc.bind(null,Ls.STRING);pn.isString=URe;var whe=Dc.bind(null,Ls.TAG);pn.isTag=whe;var jRe=Dc.bind(null,Ls.UNIVERSAL);pn.isUniversal=jRe;function She(n){return xU(n)&&n.value&&(n.value.startsWith("::")||n.value.toLowerCase()===":before"||n.value.toLowerCase()===":after"||n.value.toLowerCase()===":first-letter"||n.value.toLowerCase()===":first-line")}function qRe(n){return xU(n)&&!She(n)}function KRe(n){return!!(LU(n)&&n.walk)}function GRe(n){return Che(n)||whe(n)}(function(n){n.__esModule=!0;var e=wi;Object.keys(e).forEach(function(s){s==="default"||s==="__esModule"||s in n&&n[s]===e[s]||(n[s]=e[s])});var t=ns;Object.keys(t).forEach(function(s){s==="default"||s==="__esModule"||s in n&&n[s]===t[s]||(n[s]=t[s])});var i=pn;Object.keys(i).forEach(function(s){s==="default"||s==="__esModule"||s in n&&n[s]===i[s]||(n[s]=i[s])})})(yhe);(function(n,e){e.__esModule=!0,e.default=void 0;var t=o(hRe),i=r(yhe);function s(c){if(typeof WeakMap!="function")return null;var u=new WeakMap,h=new WeakMap;return(s=function(f){return f?h:u})(c)}function r(c,u){if(!u&&c&&c.__esModule)return c;if(c===null||typeof c!="object"&&typeof c!="function")return{default:c};var h=s(u);if(h&&h.has(c))return h.get(c);var d={},f=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var g in c)if(g!=="default"&&Object.prototype.hasOwnProperty.call(c,g)){var p=f?Object.getOwnPropertyDescriptor(c,g):null;p&&(p.get||p.set)?Object.defineProperty(d,g,p):d[g]=c[g]}return d.default=c,h&&h.set(c,d),d}function o(c){return c&&c.__esModule?c:{default:c}}var a=function(u){return new t.default(u)};Object.assign(a,i),delete a.__esModule;var l=a;e.default=l,n.exports=e.default})(WB,WB.exports);var YRe=WB.exports,a8=gM(YRe);const ZRe=/^(-\w+-)?animation-name$/,XRe=/^(-\w+-)?animation$/,khe=(n="")=>{const e=Object.create(null),t=n.replace(/^data-v-/,"");return{postcssPlugin:"vue-sfc-scoped",Rule(i){QRe(n,i)},AtRule(i){/-?keyframes$/.test(i.name)&&!i.params.endsWith(`-${t}`)&&(e[i.params]=i.params=i.params+"-"+t)},OnceExit(i){Object.keys(e).length&&i.walkDecls(s=>{ZRe.test(s.prop)&&(s.value=s.value.split(",").map(r=>e[r.trim()]||r.trim()).join(",")),XRe.test(s.prop)&&(s.value=s.value.split(",").map(r=>{const o=r.trim().split(/\s+/),a=o.findIndex(l=>e[l]);return a!==-1?(o.splice(a,1,e[o[a]]),o.join(" ")):r}).join(","))})}}},HX=new WeakSet;function QRe(n,e){HX.has(e)||e.parent&&e.parent.type==="atrule"&&/-?keyframes$/.test(e.parent.name)||(HX.add(e),e.selector=a8(t=>{t.each(i=>{l8(n,i,t)})}).processSync(e.selector))}function l8(n,e,t,i=!1){let s=null,r=!0;if(e.each(o=>{if(o.type==="combinator"&&(o.value===">>>"||o.value==="/deep/"))return o.value=" ",o.spaces.before=o.spaces.after="",SB("the >>> and /deep/ combinators have been deprecated. Use :deep() instead."),!1;if(o.type==="pseudo"){const{value:a}=o;if(a===":deep"||a==="::v-deep"){if(o.nodes.length){let l=o;o.nodes[0].each(u=>{e.insertAfter(l,u),l=u});const c=e.at(e.index(o)-1);(!c||!$X(c))&&e.insertAfter(o,a8.combinator({value:" "})),e.removeChild(o)}else{SB(`${a} usage as a combinator has been deprecated. Use :deep(<inner-selector>) instead of ${a} <inner-selector>.`);const l=e.at(e.index(o)-1);l&&$X(l)&&e.removeChild(l),e.removeChild(o)}return!1}if(a===":slotted"||a==="::v-slotted"){l8(n,o.nodes[0],t,!0);let l=o;return o.nodes[0].each(c=>{e.insertAfter(l,c),l=c}),e.removeChild(o),r=!1,!1}if(a===":global"||a==="::v-global")return t.insertAfter(e,o.nodes[0]),t.removeChild(e),!1}(o.type!=="pseudo"&&o.type!=="combinator"||o.type==="pseudo"&&(o.value===":is"||o.value===":where"))&&(s=o)}),s){const{type:o,value:a}=s;o==="pseudo"&&(a===":is"||a===":where")&&(s.nodes.forEach(l=>l8(n,l,t,i)),r=!1)}if(s?s.spaces.after="":e.first.spaces.before="",r){const o=i?n+"-s":n;e.insertAfter(s,a8.attribute({attribute:o,value:o,raws:{},quoteMark:'"'}))}}function $X(n){return n.type==="combinator"&&/^\s+$/.test(n.value)}khe.postcss=!0;var JRe=khe,UM={},EU={},jM={},DU={},zX="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("");DU.encode=function(n){if(0<=n&&n<zX.length)return zX[n];throw new TypeError("Must be between 0 and 63: "+n)};DU.decode=function(n){var e=65,t=90,i=97,s=122,r=48,o=57,a=43,l=47,c=26,u=52;return e<=n&&n<=t?n-e:i<=n&&n<=s?n-i+c:r<=n&&n<=o?n-r+u:n==a?62:n==l?63:-1};var Lhe=DU,IU=5,xhe=1<<IU,Ehe=xhe-1,Dhe=xhe;function eMe(n){return n<0?(-n<<1)+1:(n<<1)+0}function tMe(n){var e=(n&1)===1,t=n>>1;return e?-t:t}jM.encode=function(e){var t="",i,s=eMe(e);do i=s&Ehe,s>>>=IU,s>0&&(i|=Dhe),t+=Lhe.encode(i);while(s>0);return t};jM.decode=function(e,t,i){var s=e.length,r=0,o=0,a,l;do{if(t>=s)throw new Error("Expected more digits in base 64 VLQ value.");if(l=Lhe.decode(e.charCodeAt(t++)),l===-1)throw new Error("Invalid base64 digit: "+e.charAt(t-1));a=!!(l&Dhe),l&=Ehe,r=r+(l<<o),o+=IU}while(a);i.value=tMe(r),i.rest=t};var bC={};(function(n){function e(w,S,E){if(S in w)return w[S];if(arguments.length===3)return E;throw new Error('"'+S+'" is a required argument.')}n.getArg=e;var t=/^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/,i=/^data:.+\,.+$/;function s(w){var S=w.match(t);return S?{scheme:S[1],auth:S[2],host:S[3],port:S[4],path:S[5]}:null}n.urlParse=s;function r(w){var S="";return w.scheme&&(S+=w.scheme+":"),S+="//",w.auth&&(S+=w.auth+"@"),w.host&&(S+=w.host),w.port&&(S+=":"+w.port),w.path&&(S+=w.path),S}n.urlGenerate=r;function o(w){var S=w,E=s(w);if(E){if(!E.path)return w;S=E.path}for(var L=n.isAbsolute(S),k=S.split(/\/+/),x,I=0,N=k.length-1;N>=0;N--)x=k[N],x==="."?k.splice(N,1):x===".."?I++:I>0&&(x===""?(k.splice(N+1,I),I=0):(k.splice(N,2),I--));return S=k.join("/"),S===""&&(S=L?"/":"."),E?(E.path=S,r(E)):S}n.normalize=o;function a(w,S){w===""&&(w="."),S===""&&(S=".");var E=s(S),L=s(w);if(L&&(w=L.path||"/"),E&&!E.scheme)return L&&(E.scheme=L.scheme),r(E);if(E||S.match(i))return S;if(L&&!L.host&&!L.path)return L.host=S,r(L);var k=S.charAt(0)==="/"?S:o(w.replace(/\/+$/,"")+"/"+S);return L?(L.path=k,r(L)):k}n.join=a,n.isAbsolute=function(w){return w.charAt(0)==="/"||t.test(w)};function l(w,S){w===""&&(w="."),w=w.replace(/\/$/,"");for(var E=0;S.indexOf(w+"/")!==0;){var L=w.lastIndexOf("/");if(L<0||(w=w.slice(0,L),w.match(/^([^\/]+:\/)?\/*$/)))return S;++E}return Array(E+1).join("../")+S.substr(w.length+1)}n.relative=l;var c=function(){var w=Object.create(null);return!("__proto__"in w)}();function u(w){return w}function h(w){return f(w)?"$"+w:w}n.toSetString=c?u:h;function d(w){return f(w)?w.slice(1):w}n.fromSetString=c?u:d;function f(w){if(!w)return!1;var S=w.length;if(S<9||w.charCodeAt(S-1)!==95||w.charCodeAt(S-2)!==95||w.charCodeAt(S-3)!==111||w.charCodeAt(S-4)!==116||w.charCodeAt(S-5)!==111||w.charCodeAt(S-6)!==114||w.charCodeAt(S-7)!==112||w.charCodeAt(S-8)!==95||w.charCodeAt(S-9)!==95)return!1;for(var E=S-10;E>=0;E--)if(w.charCodeAt(E)!==36)return!1;return!0}function g(w,S,E){var L=m(w.source,S.source);return L!==0||(L=w.originalLine-S.originalLine,L!==0)||(L=w.originalColumn-S.originalColumn,L!==0||E)||(L=w.generatedColumn-S.generatedColumn,L!==0)||(L=w.generatedLine-S.generatedLine,L!==0)?L:m(w.name,S.name)}n.compareByOriginalPositions=g;function p(w,S,E){var L=w.generatedLine-S.generatedLine;return L!==0||(L=w.generatedColumn-S.generatedColumn,L!==0||E)||(L=m(w.source,S.source),L!==0)||(L=w.originalLine-S.originalLine,L!==0)||(L=w.originalColumn-S.originalColumn,L!==0)?L:m(w.name,S.name)}n.compareByGeneratedPositionsDeflated=p;function m(w,S){return w===S?0:w===null?1:S===null?-1:w>S?1:-1}function _(w,S){var E=w.generatedLine-S.generatedLine;return E!==0||(E=w.generatedColumn-S.generatedColumn,E!==0)||(E=m(w.source,S.source),E!==0)||(E=w.originalLine-S.originalLine,E!==0)||(E=w.originalColumn-S.originalColumn,E!==0)?E:m(w.name,S.name)}n.compareByGeneratedPositionsInflated=_;function b(w){return JSON.parse(w.replace(/^\)]}'[^\n]*\n/,""))}n.parseSourceMapInput=b;function y(w,S,E){if(S=S||"",w&&(w[w.length-1]!=="/"&&S[0]!=="/"&&(w+="/"),S=w+S),E){var L=s(E);if(!L)throw new Error("sourceMapURL could not be parsed");if(L.path){var k=L.path.lastIndexOf("/");k>=0&&(L.path=L.path.substring(0,k+1))}S=a(r(L),S)}return o(S)}n.computeSourceURL=y})(bC);var TU={},NU=bC,AU=Object.prototype.hasOwnProperty,t_=typeof Map<"u";function jf(){this._array=[],this._set=t_?new Map:Object.create(null)}jf.fromArray=function(e,t){for(var i=new jf,s=0,r=e.length;s<r;s++)i.add(e[s],t);return i};jf.prototype.size=function(){return t_?this._set.size:Object.getOwnPropertyNames(this._set).length};jf.prototype.add=function(e,t){var i=t_?e:NU.toSetString(e),s=t_?this.has(e):AU.call(this._set,i),r=this._array.length;(!s||t)&&this._array.push(e),s||(t_?this._set.set(e,r):this._set[i]=r)};jf.prototype.has=function(e){if(t_)return this._set.has(e);var t=NU.toSetString(e);return AU.call(this._set,t)};jf.prototype.indexOf=function(e){if(t_){var t=this._set.get(e);if(t>=0)return t}else{var i=NU.toSetString(e);if(AU.call(this._set,i))return this._set[i]}throw new Error('"'+e+'" is not in the set.')};jf.prototype.at=function(e){if(e>=0&&e<this._array.length)return this._array[e];throw new Error("No element indexed by "+e)};jf.prototype.toArray=function(){return this._array.slice()};TU.ArraySet=jf;var Ihe={},The=bC;function iMe(n,e){var t=n.generatedLine,i=e.generatedLine,s=n.generatedColumn,r=e.generatedColumn;return i>t||i==t&&r>=s||The.compareByGeneratedPositionsInflated(n,e)<=0}function qM(){this._array=[],this._sorted=!0,this._last={generatedLine:-1,generatedColumn:0}}qM.prototype.unsortedForEach=function(e,t){this._array.forEach(e,t)};qM.prototype.add=function(e){iMe(this._last,e)?(this._last=e,this._array.push(e)):(this._sorted=!1,this._array.push(e))};qM.prototype.toArray=function(){return this._sorted||(this._array.sort(The.compareByGeneratedPositionsInflated),this._sorted=!0),this._array};Ihe.MappingList=qM;var dw=jM,gr=bC,dA=TU.ArraySet,nMe=Ihe.MappingList;function wc(n){n||(n={}),this._file=gr.getArg(n,"file",null),this._sourceRoot=gr.getArg(n,"sourceRoot",null),this._skipValidation=gr.getArg(n,"skipValidation",!1),this._sources=new dA,this._names=new dA,this._mappings=new nMe,this._sourcesContents=null}wc.prototype._version=3;wc.fromSourceMap=function(e){var t=e.sourceRoot,i=new wc({file:e.file,sourceRoot:t});return e.eachMapping(function(s){var r={generated:{line:s.generatedLine,column:s.generatedColumn}};s.source!=null&&(r.source=s.source,t!=null&&(r.source=gr.relative(t,r.source)),r.original={line:s.originalLine,column:s.originalColumn},s.name!=null&&(r.name=s.name)),i.addMapping(r)}),e.sources.forEach(function(s){var r=s;t!==null&&(r=gr.relative(t,s)),i._sources.has(r)||i._sources.add(r);var o=e.sourceContentFor(s);o!=null&&i.setSourceContent(s,o)}),i};wc.prototype.addMapping=function(e){var t=gr.getArg(e,"generated"),i=gr.getArg(e,"original",null),s=gr.getArg(e,"source",null),r=gr.getArg(e,"name",null);this._skipValidation||this._validateMapping(t,i,s,r),s!=null&&(s=String(s),this._sources.has(s)||this._sources.add(s)),r!=null&&(r=String(r),this._names.has(r)||this._names.add(r)),this._mappings.add({generatedLine:t.line,generatedColumn:t.column,originalLine:i!=null&&i.line,originalColumn:i!=null&&i.column,source:s,name:r})};wc.prototype.setSourceContent=function(e,t){var i=e;this._sourceRoot!=null&&(i=gr.relative(this._sourceRoot,i)),t!=null?(this._sourcesContents||(this._sourcesContents=Object.create(null)),this._sourcesContents[gr.toSetString(i)]=t):this._sourcesContents&&(delete this._sourcesContents[gr.toSetString(i)],Object.keys(this._sourcesContents).length===0&&(this._sourcesContents=null))};wc.prototype.applySourceMap=function(e,t,i){var s=t;if(t==null){if(e.file==null)throw new Error(`SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, or the source map's "file" property. Both were omitted.`);s=e.file}var r=this._sourceRoot;r!=null&&(s=gr.relative(r,s));var o=new dA,a=new dA;this._mappings.unsortedForEach(function(l){if(l.source===s&&l.originalLine!=null){var c=e.originalPositionFor({line:l.originalLine,column:l.originalColumn});c.source!=null&&(l.source=c.source,i!=null&&(l.source=gr.join(i,l.source)),r!=null&&(l.source=gr.relative(r,l.source)),l.originalLine=c.line,l.originalColumn=c.column,c.name!=null&&(l.name=c.name))}var u=l.source;u!=null&&!o.has(u)&&o.add(u);var h=l.name;h!=null&&!a.has(h)&&a.add(h)},this),this._sources=o,this._names=a,e.sources.forEach(function(l){var c=e.sourceContentFor(l);c!=null&&(i!=null&&(l=gr.join(i,l)),r!=null&&(l=gr.relative(r,l)),this.setSourceContent(l,c))},this)};wc.prototype._validateMapping=function(e,t,i,s){if(t&&typeof t.line!="number"&&typeof t.column!="number")throw new Error("original.line and original.column are not numbers -- you probably meant to omit the original mapping entirely and only map the generated position. If so, pass null for the original mapping instead of an object with empty or null values.");if(!(e&&"line"in e&&"column"in e&&e.line>0&&e.column>=0&&!t&&!i&&!s)){if(e&&"line"in e&&"column"in e&&t&&"line"in t&&"column"in t&&e.line>0&&e.column>=0&&t.line>0&&t.column>=0&&i)return;throw new Error("Invalid mapping: "+JSON.stringify({generated:e,source:i,original:t,name:s}))}};wc.prototype._serializeMappings=function(){for(var e=0,t=1,i=0,s=0,r=0,o=0,a="",l,c,u,h,d=this._mappings.toArray(),f=0,g=d.length;f<g;f++){if(c=d[f],l="",c.generatedLine!==t)for(e=0;c.generatedLine!==t;)l+=";",t++;else if(f>0){if(!gr.compareByGeneratedPositionsInflated(c,d[f-1]))continue;l+=","}l+=dw.encode(c.generatedColumn-e),e=c.generatedColumn,c.source!=null&&(h=this._sources.indexOf(c.source),l+=dw.encode(h-o),o=h,l+=dw.encode(c.originalLine-1-s),s=c.originalLine-1,l+=dw.encode(c.originalColumn-i),i=c.originalColumn,c.name!=null&&(u=this._names.indexOf(c.name),l+=dw.encode(u-r),r=u)),a+=l}return a};wc.prototype._generateSourcesContent=function(e,t){return e.map(function(i){if(!this._sourcesContents)return null;t!=null&&(i=gr.relative(t,i));var s=gr.toSetString(i);return Object.prototype.hasOwnProperty.call(this._sourcesContents,s)?this._sourcesContents[s]:null},this)};wc.prototype.toJSON=function(){var e={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};return this._file!=null&&(e.file=this._file),this._sourceRoot!=null&&(e.sourceRoot=this._sourceRoot),this._sourcesContents&&(e.sourcesContent=this._generateSourcesContent(e.sources,e.sourceRoot)),e};wc.prototype.toString=function(){return JSON.stringify(this.toJSON())};EU.SourceMapGenerator=wc;var KM={},Nhe={};(function(n){n.GREATEST_LOWER_BOUND=1,n.LEAST_UPPER_BOUND=2;function e(t,i,s,r,o,a){var l=Math.floor((i-t)/2)+t,c=o(s,r[l],!0);return c===0?l:c>0?i-l>1?e(l,i,s,r,o,a):a==n.LEAST_UPPER_BOUND?i<r.length?i:-1:l:l-t>1?e(t,l,s,r,o,a):a==n.LEAST_UPPER_BOUND?l:t<0?-1:t}n.search=function(i,s,r,o){if(s.length===0)return-1;var a=e(-1,s.length,i,s,r,o||n.GREATEST_LOWER_BOUND);if(a<0)return-1;for(;a-1>=0&&r(s[a],s[a-1],!0)===0;)--a;return a}})(Nhe);var Ahe={};function q4(n,e,t){var i=n[e];n[e]=n[t],n[t]=i}function sMe(n,e){return Math.round(n+Math.random()*(e-n))}function c8(n,e,t,i){if(t<i){var s=sMe(t,i),r=t-1;q4(n,s,i);for(var o=n[i],a=t;a<i;a++)e(n[a],o)<=0&&(r+=1,q4(n,r,a));q4(n,r+1,a);var l=r+1;c8(n,e,t,l-1),c8(n,e,l+1,i)}}Ahe.quickSort=function(n,e){c8(n,e,0,n.length-1)};var Lt=bC,PU=Nhe,ly=TU.ArraySet,rMe=jM,eL=Ahe.quickSort;function bs(n,e){var t=n;return typeof n=="string"&&(t=Lt.parseSourceMapInput(n)),t.sections!=null?new Ou(t,e):new go(t,e)}bs.fromSourceMap=function(n,e){return go.fromSourceMap(n,e)};bs.prototype._version=3;bs.prototype.__generatedMappings=null;Object.defineProperty(bs.prototype,"_generatedMappings",{configurable:!0,enumerable:!0,get:function(){return this.__generatedMappings||this._parseMappings(this._mappings,this.sourceRoot),this.__generatedMappings}});bs.prototype.__originalMappings=null;Object.defineProperty(bs.prototype,"_originalMappings",{configurable:!0,enumerable:!0,get:function(){return this.__originalMappings||this._parseMappings(this._mappings,this.sourceRoot),this.__originalMappings}});bs.prototype._charIsMappingSeparator=function(e,t){var i=e.charAt(t);return i===";"||i===","};bs.prototype._parseMappings=function(e,t){throw new Error("Subclasses must implement _parseMappings")};bs.GENERATED_ORDER=1;bs.ORIGINAL_ORDER=2;bs.GREATEST_LOWER_BOUND=1;bs.LEAST_UPPER_BOUND=2;bs.prototype.eachMapping=function(e,t,i){var s=t||null,r=i||bs.GENERATED_ORDER,o;switch(r){case bs.GENERATED_ORDER:o=this._generatedMappings;break;case bs.ORIGINAL_ORDER:o=this._originalMappings;break;default:throw new Error("Unknown order of iteration.")}var a=this.sourceRoot;o.map(function(l){var c=l.source===null?null:this._sources.at(l.source);return c=Lt.computeSourceURL(a,c,this._sourceMapURL),{source:c,generatedLine:l.generatedLine,generatedColumn:l.generatedColumn,originalLine:l.originalLine,originalColumn:l.originalColumn,name:l.name===null?null:this._names.at(l.name)}},this).forEach(e,s)};bs.prototype.allGeneratedPositionsFor=function(e){var t=Lt.getArg(e,"line"),i={source:Lt.getArg(e,"source"),originalLine:t,originalColumn:Lt.getArg(e,"column",0)};if(i.source=this._findSourceIndex(i.source),i.source<0)return[];var s=[],r=this._findMapping(i,this._originalMappings,"originalLine","originalColumn",Lt.compareByOriginalPositions,PU.LEAST_UPPER_BOUND);if(r>=0){var o=this._originalMappings[r];if(e.column===void 0)for(var a=o.originalLine;o&&o.originalLine===a;)s.push({line:Lt.getArg(o,"generatedLine",null),column:Lt.getArg(o,"generatedColumn",null),lastColumn:Lt.getArg(o,"lastGeneratedColumn",null)}),o=this._originalMappings[++r];else for(var l=o.originalColumn;o&&o.originalLine===t&&o.originalColumn==l;)s.push({line:Lt.getArg(o,"generatedLine",null),column:Lt.getArg(o,"generatedColumn",null),lastColumn:Lt.getArg(o,"lastGeneratedColumn",null)}),o=this._originalMappings[++r]}return s};KM.SourceMapConsumer=bs;function go(n,e){var t=n;typeof n=="string"&&(t=Lt.parseSourceMapInput(n));var i=Lt.getArg(t,"version"),s=Lt.getArg(t,"sources"),r=Lt.getArg(t,"names",[]),o=Lt.getArg(t,"sourceRoot",null),a=Lt.getArg(t,"sourcesContent",null),l=Lt.getArg(t,"mappings"),c=Lt.getArg(t,"file",null);if(i!=this._version)throw new Error("Unsupported version: "+i);o&&(o=Lt.normalize(o)),s=s.map(String).map(Lt.normalize).map(function(u){return o&&Lt.isAbsolute(o)&&Lt.isAbsolute(u)?Lt.relative(o,u):u}),this._names=ly.fromArray(r.map(String),!0),this._sources=ly.fromArray(s,!0),this._absoluteSources=this._sources.toArray().map(function(u){return Lt.computeSourceURL(o,u,e)}),this.sourceRoot=o,this.sourcesContent=a,this._mappings=l,this._sourceMapURL=e,this.file=c}go.prototype=Object.create(bs.prototype);go.prototype.consumer=bs;go.prototype._findSourceIndex=function(n){var e=n;if(this.sourceRoot!=null&&(e=Lt.relative(this.sourceRoot,e)),this._sources.has(e))return this._sources.indexOf(e);var t;for(t=0;t<this._absoluteSources.length;++t)if(this._absoluteSources[t]==n)return t;return-1};go.fromSourceMap=function(e,t){var i=Object.create(go.prototype),s=i._names=ly.fromArray(e._names.toArray(),!0),r=i._sources=ly.fromArray(e._sources.toArray(),!0);i.sourceRoot=e._sourceRoot,i.sourcesContent=e._generateSourcesContent(i._sources.toArray(),i.sourceRoot),i.file=e._file,i._sourceMapURL=t,i._absoluteSources=i._sources.toArray().map(function(f){return Lt.computeSourceURL(i.sourceRoot,f,t)});for(var o=e._mappings.toArray().slice(),a=i.__generatedMappings=[],l=i.__originalMappings=[],c=0,u=o.length;c<u;c++){var h=o[c],d=new Phe;d.generatedLine=h.generatedLine,d.generatedColumn=h.generatedColumn,h.source&&(d.source=r.indexOf(h.source),d.originalLine=h.originalLine,d.originalColumn=h.originalColumn,h.name&&(d.name=s.indexOf(h.name)),l.push(d)),a.push(d)}return eL(i.__originalMappings,Lt.compareByOriginalPositions),i};go.prototype._version=3;Object.defineProperty(go.prototype,"sources",{get:function(){return this._absoluteSources.slice()}});function Phe(){this.generatedLine=0,this.generatedColumn=0,this.source=null,this.originalLine=null,this.originalColumn=null,this.name=null}go.prototype._parseMappings=function(e,t){for(var i=1,s=0,r=0,o=0,a=0,l=0,c=e.length,u=0,h={},d={},f=[],g=[],p,m,_,b,y;u<c;)if(e.charAt(u)===";")i++,u++,s=0;else if(e.charAt(u)===",")u++;else{for(p=new Phe,p.generatedLine=i,b=u;b<c&&!this._charIsMappingSeparator(e,b);b++);if(m=e.slice(u,b),_=h[m],_)u+=m.length;else{for(_=[];u<b;)rMe.decode(e,u,d),y=d.value,u=d.rest,_.push(y);if(_.length===2)throw new Error("Found a source, but no line and column");if(_.length===3)throw new Error("Found a source and line, but no column");h[m]=_}p.generatedColumn=s+_[0],s=p.generatedColumn,_.length>1&&(p.source=a+_[1],a+=_[1],p.originalLine=r+_[2],r=p.originalLine,p.originalLine+=1,p.originalColumn=o+_[3],o=p.originalColumn,_.length>4&&(p.name=l+_[4],l+=_[4])),g.push(p),typeof p.originalLine=="number"&&f.push(p)}eL(g,Lt.compareByGeneratedPositionsDeflated),this.__generatedMappings=g,eL(f,Lt.compareByOriginalPositions),this.__originalMappings=f};go.prototype._findMapping=function(e,t,i,s,r,o){if(e[i]<=0)throw new TypeError("Line must be greater than or equal to 1, got "+e[i]);if(e[s]<0)throw new TypeError("Column must be greater than or equal to 0, got "+e[s]);return PU.search(e,t,r,o)};go.prototype.computeColumnSpans=function(){for(var e=0;e<this._generatedMappings.length;++e){var t=this._generatedMappings[e];if(e+1<this._generatedMappings.length){var i=this._generatedMappings[e+1];if(t.generatedLine===i.generatedLine){t.lastGeneratedColumn=i.generatedColumn-1;continue}}t.lastGeneratedColumn=1/0}};go.prototype.originalPositionFor=function(e){var t={generatedLine:Lt.getArg(e,"line"),generatedColumn:Lt.getArg(e,"column")},i=this._findMapping(t,this._generatedMappings,"generatedLine","generatedColumn",Lt.compareByGeneratedPositionsDeflated,Lt.getArg(e,"bias",bs.GREATEST_LOWER_BOUND));if(i>=0){var s=this._generatedMappings[i];if(s.generatedLine===t.generatedLine){var r=Lt.getArg(s,"source",null);r!==null&&(r=this._sources.at(r),r=Lt.computeSourceURL(this.sourceRoot,r,this._sourceMapURL));var o=Lt.getArg(s,"name",null);return o!==null&&(o=this._names.at(o)),{source:r,line:Lt.getArg(s,"originalLine",null),column:Lt.getArg(s,"originalColumn",null),name:o}}}return{source:null,line:null,column:null,name:null}};go.prototype.hasContentsOfAllSources=function(){return this.sourcesContent?this.sourcesContent.length>=this._sources.size()&&!this.sourcesContent.some(function(e){return e==null}):!1};go.prototype.sourceContentFor=function(e,t){if(!this.sourcesContent)return null;var i=this._findSourceIndex(e);if(i>=0)return this.sourcesContent[i];var s=e;this.sourceRoot!=null&&(s=Lt.relative(this.sourceRoot,s));var r;if(this.sourceRoot!=null&&(r=Lt.urlParse(this.sourceRoot))){var o=s.replace(/^file:\/\//,"");if(r.scheme=="file"&&this._sources.has(o))return this.sourcesContent[this._sources.indexOf(o)];if((!r.path||r.path=="/")&&this._sources.has("/"+s))return this.sourcesContent[this._sources.indexOf("/"+s)]}if(t)return null;throw new Error('"'+s+'" is not in the SourceMap.')};go.prototype.generatedPositionFor=function(e){var t=Lt.getArg(e,"source");if(t=this._findSourceIndex(t),t<0)return{line:null,column:null,lastColumn:null};var i={source:t,originalLine:Lt.getArg(e,"line"),originalColumn:Lt.getArg(e,"column")},s=this._findMapping(i,this._originalMappings,"originalLine","originalColumn",Lt.compareByOriginalPositions,Lt.getArg(e,"bias",bs.GREATEST_LOWER_BOUND));if(s>=0){var r=this._originalMappings[s];if(r.source===i.source)return{line:Lt.getArg(r,"generatedLine",null),column:Lt.getArg(r,"generatedColumn",null),lastColumn:Lt.getArg(r,"lastGeneratedColumn",null)}}return{line:null,column:null,lastColumn:null}};KM.BasicSourceMapConsumer=go;function Ou(n,e){var t=n;typeof n=="string"&&(t=Lt.parseSourceMapInput(n));var i=Lt.getArg(t,"version"),s=Lt.getArg(t,"sections");if(i!=this._version)throw new Error("Unsupported version: "+i);this._sources=new ly,this._names=new ly;var r={line:-1,column:0};this._sections=s.map(function(o){if(o.url)throw new Error("Support for url field in sections not implemented.");var a=Lt.getArg(o,"offset"),l=Lt.getArg(a,"line"),c=Lt.getArg(a,"column");if(l<r.line||l===r.line&&c<r.column)throw new Error("Section offsets must be ordered and non-overlapping.");return r=a,{generatedOffset:{generatedLine:l+1,generatedColumn:c+1},consumer:new bs(Lt.getArg(o,"map"),e)}})}Ou.prototype=Object.create(bs.prototype);Ou.prototype.constructor=bs;Ou.prototype._version=3;Object.defineProperty(Ou.prototype,"sources",{get:function(){for(var n=[],e=0;e<this._sections.length;e++)for(var t=0;t<this._sections[e].consumer.sources.length;t++)n.push(this._sections[e].consumer.sources[t]);return n}});Ou.prototype.originalPositionFor=function(e){var t={generatedLine:Lt.getArg(e,"line"),generatedColumn:Lt.getArg(e,"column")},i=PU.search(t,this._sections,function(r,o){var a=r.generatedLine-o.generatedOffset.generatedLine;return a||r.generatedColumn-o.generatedOffset.generatedColumn}),s=this._sections[i];return s?s.consumer.originalPositionFor({line:t.generatedLine-(s.generatedOffset.generatedLine-1),column:t.generatedColumn-(s.generatedOffset.generatedLine===t.generatedLine?s.generatedOffset.generatedColumn-1:0),bias:e.bias}):{source:null,line:null,column:null,name:null}};Ou.prototype.hasContentsOfAllSources=function(){return this._sections.every(function(e){return e.consumer.hasContentsOfAllSources()})};Ou.prototype.sourceContentFor=function(e,t){for(var i=0;i<this._sections.length;i++){var s=this._sections[i],r=s.consumer.sourceContentFor(e,!0);if(r)return r}if(t)return null;throw new Error('"'+e+'" is not in the SourceMap.')};Ou.prototype.generatedPositionFor=function(e){for(var t=0;t<this._sections.length;t++){var i=this._sections[t];if(i.consumer._findSourceIndex(Lt.getArg(e,"source"))!==-1){var s=i.consumer.generatedPositionFor(e);if(s){var r={line:s.line+(i.generatedOffset.generatedLine-1),column:s.column+(i.generatedOffset.generatedLine===s.line?i.generatedOffset.generatedColumn-1:0)};return r}}}return{line:null,column:null}};Ou.prototype._parseMappings=function(e,t){this.__generatedMappings=[],this.__originalMappings=[];for(var i=0;i<this._sections.length;i++)for(var s=this._sections[i],r=s.consumer._generatedMappings,o=0;o<r.length;o++){var a=r[o],l=s.consumer._sources.at(a.source);l=Lt.computeSourceURL(s.consumer.sourceRoot,l,this._sourceMapURL),this._sources.add(l),l=this._sources.indexOf(l);var c=null;a.name&&(c=s.consumer._names.at(a.name),this._names.add(c),c=this._names.indexOf(c));var u={source:l,generatedLine:a.generatedLine+(s.generatedOffset.generatedLine-1),generatedColumn:a.generatedColumn+(s.generatedOffset.generatedLine===a.generatedLine?s.generatedOffset.generatedColumn-1:0),originalLine:a.originalLine,originalColumn:a.originalColumn,name:c};this.__generatedMappings.push(u),typeof u.originalLine=="number"&&this.__originalMappings.push(u)}eL(this.__generatedMappings,Lt.compareByGeneratedPositionsDeflated),eL(this.__originalMappings,Lt.compareByOriginalPositions)};KM.IndexedSourceMapConsumer=Ou;var Rhe={},oMe=EU.SourceMapGenerator,fA=bC,aMe=/(\r?\n)/,lMe=10,yC="$$$isSourceNode$$$";function Il(n,e,t,i,s){this.children=[],this.sourceContents={},this.line=n??null,this.column=e??null,this.source=t??null,this.name=s??null,this[yC]=!0,i!=null&&this.add(i)}Il.fromStringWithSourceMap=function(e,t,i){var s=new Il,r=e.split(aMe),o=0,a=function(){var d=g(),f=g()||"";return d+f;function g(){return o<r.length?r[o++]:void 0}},l=1,c=0,u=null;return t.eachMapping(function(d){if(u!==null)if(l<d.generatedLine)h(u,a()),l++,c=0;else{var f=r[o]||"",g=f.substr(0,d.generatedColumn-c);r[o]=f.substr(d.generatedColumn-c),c=d.generatedColumn,h(u,g),u=d;return}for(;l<d.generatedLine;)s.add(a()),l++;if(c<d.generatedColumn){var f=r[o]||"";s.add(f.substr(0,d.generatedColumn)),r[o]=f.substr(d.generatedColumn),c=d.generatedColumn}u=d},this),o<r.length&&(u&&h(u,a()),s.add(r.splice(o).join(""))),t.sources.forEach(function(d){var f=t.sourceContentFor(d);f!=null&&(i!=null&&(d=fA.join(i,d)),s.setSourceContent(d,f))}),s;function h(d,f){if(d===null||d.source===void 0)s.add(f);else{var g=i?fA.join(i,d.source):d.source;s.add(new Il(d.originalLine,d.originalColumn,g,f,d.name))}}};Il.prototype.add=function(e){if(Array.isArray(e))e.forEach(function(t){this.add(t)},this);else if(e[yC]||typeof e=="string")e&&this.children.push(e);else throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+e);return this};Il.prototype.prepend=function(e){if(Array.isArray(e))for(var t=e.length-1;t>=0;t--)this.prepend(e[t]);else if(e[yC]||typeof e=="string")this.children.unshift(e);else throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+e);return this};Il.prototype.walk=function(e){for(var t,i=0,s=this.children.length;i<s;i++)t=this.children[i],t[yC]?t.walk(e):t!==""&&e(t,{source:this.source,line:this.line,column:this.column,name:this.name})};Il.prototype.join=function(e){var t,i,s=this.children.length;if(s>0){for(t=[],i=0;i<s-1;i++)t.push(this.children[i]),t.push(e);t.push(this.children[i]),this.children=t}return this};Il.prototype.replaceRight=function(e,t){var i=this.children[this.children.length-1];return i[yC]?i.replaceRight(e,t):typeof i=="string"?this.children[this.children.length-1]=i.replace(e,t):this.children.push("".replace(e,t)),this};Il.prototype.setSourceContent=function(e,t){this.sourceContents[fA.toSetString(e)]=t};Il.prototype.walkSourceContents=function(e){for(var t=0,i=this.children.length;t<i;t++)this.children[t][yC]&&this.children[t].walkSourceContents(e);for(var s=Object.keys(this.sourceContents),t=0,i=s.length;t<i;t++)e(fA.fromSetString(s[t]),this.sourceContents[s[t]])};Il.prototype.toString=function(){var e="";return this.walk(function(t){e+=t}),e};Il.prototype.toStringWithSourceMap=function(e){var t={code:"",line:1,column:0},i=new oMe(e),s=!1,r=null,o=null,a=null,l=null;return this.walk(function(c,u){t.code+=c,u.source!==null&&u.line!==null&&u.column!==null?((r!==u.source||o!==u.line||a!==u.column||l!==u.name)&&i.addMapping({source:u.source,original:{line:u.line,column:u.column},generated:{line:t.line,column:t.column},name:u.name}),r=u.source,o=u.line,a=u.column,l=u.name,s=!0):s&&(i.addMapping({generated:{line:t.line,column:t.column}}),r=null,s=!1);for(var h=0,d=c.length;h<d;h++)c.charCodeAt(h)===lMe?(t.line++,t.column=0,h+1===d?(r=null,s=!1):s&&i.addMapping({source:u.source,original:{line:u.line,column:u.column},generated:{line:t.line,column:t.column},name:u.name})):t.column++}),this.walkSourceContents(function(c,u){i.setSourceContent(c,u)}),{code:t.code,map:i}};Rhe.SourceNode=Il;UM.SourceMapGenerator=EU.SourceMapGenerator;UM.SourceMapConsumer=KM.SourceMapConsumer;UM.SourceNode=Rhe.SourceNode;var Mhe=UM,UX=Mhe.SourceMapConsumer,cMe=Mhe.SourceMapGenerator,uMe=hMe;function hMe(n,e){if(!n)return e;if(!e)return n;var t=new UX(n),i=new UX(e),s=new cMe;i.eachMapping(function(o){if(o.originalLine!=null){var a=t.originalPositionFor({line:o.originalLine,column:o.originalColumn});a.source!=null&&s.addMapping({original:{line:a.line,column:a.column},generated:{line:o.generatedLine,column:o.generatedColumn},source:a.source,name:a.name})}});var r=[t,i];return r.forEach(function(o){o.sources.forEach(function(a){s._sources.add(a);var l=o.sourceContentFor(a);l!=null&&s.setSourceContent(a,l)})}),s._sourceRoot=n.sourceRoot,s._file=n.file,JSON.parse(s.toString())}var RU=gM(uMe),dMe=Object.defineProperty,fMe=Object.defineProperties,gMe=Object.getOwnPropertyDescriptors,jX=Object.getOwnPropertySymbols,pMe=Object.prototype.hasOwnProperty,mMe=Object.prototype.propertyIsEnumerable,qX=(n,e,t)=>e in n?dMe(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,MU=(n,e)=>{for(var t in e||(e={}))pMe.call(e,t)&&qX(n,t,e[t]);if(jX)for(var t of jX(e))mMe.call(e,t)&&qX(n,t,e[t]);return n},OU=(n,e)=>fMe(n,gMe(e));const Ohe=(n,e,t,i=require)=>{const s=i("sass"),r=OU(MU({},t),{data:Fhe(n,t.filename,t.additionalData),file:t.filename,outFile:t.filename,sourceMap:!!e});try{const o=s.renderSync(r),a=o.stats.includedFiles;return e?{code:o.css.toString(),map:RU(e,JSON.parse(o.map.toString())),errors:[],dependencies:a}:{code:o.css.toString(),errors:[],dependencies:a}}catch(o){return{code:"",errors:[o],dependencies:[]}}},_Me=(n,e,t,i)=>Ohe(n,e,OU(MU({},t),{indentedSyntax:!0}),i),vMe=(n,e,t,i=require)=>{const s=i("less");let r,o=null;if(s.render(Fhe(n,t.filename,t.additionalData),OU(MU({},t),{syncImport:!0}),(l,c)=>{o=l,r=c}),o)return{code:"",errors:[o],dependencies:[]};const a=r.imports;return e?{code:r.css.toString(),map:RU(e,r.map),errors:[],dependencies:a}:{code:r.css.toString(),errors:[],dependencies:a}},KX=(n,e,t,i=require)=>{const s=i("stylus");try{const r=s(n,t);e&&r.set("sourcemap",{inline:!1,comment:!1});const o=r.render(),a=r.deps();return e?{code:o,map:RU(e,r.sourcemap),errors:[],dependencies:a}:{code:o,errors:[],dependencies:a}}catch(r){return{code:"",errors:[r],dependencies:[]}}};function Fhe(n,e,t){return t?bae(t)?t(n,e):t+n:n}const bMe={less:vMe,sass:_Me,scss:Ohe,styl:KX,stylus:KX};var yMe=Object.defineProperty,CMe=Object.defineProperties,wMe=Object.getOwnPropertyDescriptors,GX=Object.getOwnPropertySymbols,SMe=Object.prototype.hasOwnProperty,kMe=Object.prototype.propertyIsEnumerable,YX=(n,e,t)=>e in n?yMe(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,GM=(n,e)=>{for(var t in e||(e={}))SMe.call(e,t)&&YX(n,t,e[t]);if(GX)for(var t of GX(e))kMe.call(e,t)&&YX(n,t,e[t]);return n},FU=(n,e)=>CMe(n,wMe(e));function LMe(n){return Bhe(FU(GM({},n),{isAsync:!1}))}function xMe(n){return Bhe(FU(GM({},n),{isAsync:!0}))}function Bhe(n){const{filename:e,id:t,scoped:i=!1,trim:s=!0,isProd:r=!1,modules:o=!1,modulesOptions:a={},preprocessLang:l,postcssOptions:c,postcssPlugins:u}=n,h=l&&bMe[l],d=h&&EMe(n,h),f=d?d.map:n.inMap||n.map,g=d?d.code:n.source,p=t.replace(/^data-v-/,""),m=`data-v-${p}`,_=(u||[]).slice();_.unshift(Kle({id:p,isProd:r})),s&&_.push(oPe()),i&&_.push(JRe(m));let b;if(o)throw new Error("[@vue/compiler-sfc] `modules` option is not supported in the browser build.");const y=FU(GM({},c),{to:e,from:e});f&&(y.map={inline:!1,annotation:!1,prev:f});let w,S,E;const L=new Set(d?d.dependencies:[]);L.delete(e);const k=[];d&&d.errors.length&&k.push(...d.errors);const x=I=>(I.forEach(N=>{N.type==="dependency"&&L.add(N.file)}),L);try{if(w=Ss(_).process(g,y),n.isAsync)return w.then(I=>({code:I.css||"",map:I.map&&I.map.toJSON(),errors:k,modules:b,rawResult:I,dependencies:x(I.messages)})).catch(I=>({code:"",map:void 0,errors:[...k,I],rawResult:void 0,dependencies:L}));x(w.messages),S=w.css,E=w.map}catch(I){k.push(I)}return{code:S||"",map:E&&E.toJSON(),errors:k,rawResult:w,dependencies:L}}function EMe(n,e){if(!n.preprocessCustomRequire)throw new Error("[@vue/compiler-sfc] Style preprocessing in the browser build must provide the `preprocessCustomRequire` option to return the in-browser version of the preprocessor.");return e(n.source,n.inMap||n.map,GM({filename:n.filename},n.preprocessOptions),n.preprocessCustomRequire)}const DMe=44,IMe=59,ZX="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Whe=new Uint8Array(64),TMe=new Uint8Array(128);for(let n=0;n<ZX.length;n++){const e=ZX.charCodeAt(n);Whe[n]=e,TMe[e]=n}const K4=typeof TextDecoder<"u"?new TextDecoder:typeof Buffer<"u"?{decode(n){return Buffer.from(n.buffer,n.byteOffset,n.byteLength).toString()}}:{decode(n){let e="";for(let t=0;t<n.length;t++)e+=String.fromCharCode(n[t]);return e}};function NMe(n){const e=new Int32Array(5),t=1024*16,i=t-36,s=new Uint8Array(t),r=s.subarray(0,i);let o=0,a="";for(let l=0;l<n.length;l++){const c=n[l];if(l>0&&(o===t&&(a+=K4.decode(s),o=0),s[o++]=IMe),c.length!==0){e[0]=0;for(let u=0;u<c.length;u++){const h=c[u];o>i&&(a+=K4.decode(r),s.copyWithin(0,i,o),o-=i),u>0&&(s[o++]=DMe),o=fw(s,o,e,h,0),h.length!==1&&(o=fw(s,o,e,h,1),o=fw(s,o,e,h,2),o=fw(s,o,e,h,3),h.length!==4&&(o=fw(s,o,e,h,4)))}}}return a+K4.decode(s.subarray(0,o))}function fw(n,e,t,i,s){const r=i[s];let o=r-t[s];t[s]=r,o=o<0?-o<<1|1:o<<1;do{let a=o&31;o>>>=5,o>0&&(a|=32),n[e++]=Whe[a]}while(o>0);return e}class gA{constructor(e){this.bits=e instanceof gA?e.bits.slice():[]}add(e){this.bits[e>>5]|=1<<(e&31)}has(e){return!!(this.bits[e>>5]&1<<(e&31))}}class tL{constructor(e,t,i){this.start=e,this.end=t,this.original=i,this.intro="",this.outro="",this.content=i,this.storeName=!1,this.edited=!1,this.previous=null,this.next=null}appendLeft(e){this.outro+=e}appendRight(e){this.intro=this.intro+e}clone(){const e=new tL(this.start,this.end,this.original);return e.intro=this.intro,e.outro=this.outro,e.content=this.content,e.storeName=this.storeName,e.edited=this.edited,e}contains(e){return this.start<e&&e<this.end}eachNext(e){let t=this;for(;t;)e(t),t=t.next}eachPrevious(e){let t=this;for(;t;)e(t),t=t.previous}edit(e,t,i){return this.content=e,i||(this.intro="",this.outro=""),this.storeName=t,this.edited=!0,this}prependLeft(e){this.outro=e+this.outro}prependRight(e){this.intro=e+this.intro}split(e){const t=e-this.start,i=this.original.slice(0,t),s=this.original.slice(t);this.original=i;const r=new tL(e,this.end,s);return r.outro=this.outro,this.outro="",this.end=e,this.edited?(r.edit("",!1),this.content=""):this.content=i,r.next=this.next,r.next&&(r.next.previous=r),r.previous=this,this.next=r,r}toString(){return this.intro+this.content+this.outro}trimEnd(e){if(this.outro=this.outro.replace(e,""),this.outro.length)return!0;const t=this.content.replace(e,"");if(t.length)return t!==this.content&&(this.split(this.start+t.length).edit("",void 0,!0),this.edited&&this.edit(t,this.storeName,!0)),!0;if(this.edit("",void 0,!0),this.intro=this.intro.replace(e,""),this.intro.length)return!0}trimStart(e){if(this.intro=this.intro.replace(e,""),this.intro.length)return!0;const t=this.content.replace(e,"");if(t.length){if(t!==this.content){const i=this.split(this.end-t.length);this.edited&&i.edit(t,this.storeName,!0),this.edit("",void 0,!0)}return!0}else if(this.edit("",void 0,!0),this.outro=this.outro.replace(e,""),this.outro.length)return!0}}function AMe(){return typeof window<"u"&&typeof window.btoa=="function"?n=>window.btoa(unescape(encodeURIComponent(n))):typeof Buffer=="function"?n=>Buffer.from(n,"utf-8").toString("base64"):()=>{throw new Error("Unsupported environment: `window.btoa` or `Buffer` should be supported.")}}const PMe=AMe();class RMe{constructor(e){this.version=3,this.file=e.file,this.sources=e.sources,this.sourcesContent=e.sourcesContent,this.names=e.names,this.mappings=NMe(e.mappings),typeof e.x_google_ignoreList<"u"&&(this.x_google_ignoreList=e.x_google_ignoreList)}toString(){return JSON.stringify(this)}toUrl(){return"data:application/json;charset=utf-8;base64,"+PMe(this.toString())}}function MMe(n){const e=n.split(` +`),t=e.filter(r=>/^\t+/.test(r)),i=e.filter(r=>/^ {2,}/.test(r));if(t.length===0&&i.length===0)return null;if(t.length>=i.length)return" ";const s=i.reduce((r,o)=>{const a=/^ +/.exec(o)[0].length;return Math.min(a,r)},1/0);return new Array(s+1).join(" ")}function OMe(n,e){const t=n.split(/[/\\]/),i=e.split(/[/\\]/);for(t.pop();t[0]===i[0];)t.shift(),i.shift();if(t.length){let s=t.length;for(;s--;)t[s]=".."}return t.concat(i).join("/")}const FMe=Object.prototype.toString;function BMe(n){return FMe.call(n)==="[object Object]"}function XX(n){const e=n.split(` +`),t=[];for(let i=0,s=0;i<e.length;i++)t.push(s),s+=e[i].length+1;return function(s){let r=0,o=t.length;for(;r<o;){const c=r+o>>1;s<t[c]?o=c:r=c+1}const a=r-1,l=s-t[a];return{line:a,column:l}}}const WMe=/\w/;class VMe{constructor(e){this.hires=e,this.generatedCodeLine=0,this.generatedCodeColumn=0,this.raw=[],this.rawSegments=this.raw[this.generatedCodeLine]=[],this.pending=null}addEdit(e,t,i,s){if(t.length){let r=t.indexOf(` +`,0),o=-1;for(;r>=0;){const l=[this.generatedCodeColumn,e,i.line,i.column];s>=0&&l.push(s),this.rawSegments.push(l),this.generatedCodeLine+=1,this.raw[this.generatedCodeLine]=this.rawSegments=[],this.generatedCodeColumn=0,o=r,r=t.indexOf(` +`,r+1)}const a=[this.generatedCodeColumn,e,i.line,i.column];s>=0&&a.push(s),this.rawSegments.push(a),this.advance(t.slice(o+1))}else this.pending&&(this.rawSegments.push(this.pending),this.advance(t));this.pending=null}addUneditedChunk(e,t,i,s,r){let o=t.start,a=!0,l=!1;for(;o<t.end;){if(this.hires||a||r.has(o)){const c=[this.generatedCodeColumn,e,s.line,s.column];this.hires==="boundary"?WMe.test(i[o])?l||(this.rawSegments.push(c),l=!0):(this.rawSegments.push(c),l=!1):this.rawSegments.push(c)}i[o]===` +`?(s.line+=1,s.column=0,this.generatedCodeLine+=1,this.raw[this.generatedCodeLine]=this.rawSegments=[],this.generatedCodeColumn=0,a=!0):(s.column+=1,this.generatedCodeColumn+=1,a=!1),o+=1}this.pending=null}advance(e){if(!e)return;const t=e.split(` +`);if(t.length>1){for(let i=0;i<t.length-1;i++)this.generatedCodeLine++,this.raw[this.generatedCodeLine]=this.rawSegments=[];this.generatedCodeColumn=0}this.generatedCodeColumn+=t[t.length-1].length}}const gw=` +`,Kv={insertLeft:!1,insertRight:!1,storeName:!1};class qf{constructor(e,t={}){const i=new tL(0,e.length,e);Object.defineProperties(this,{original:{writable:!0,value:e},outro:{writable:!0,value:""},intro:{writable:!0,value:""},firstChunk:{writable:!0,value:i},lastChunk:{writable:!0,value:i},lastSearchedChunk:{writable:!0,value:i},byStart:{writable:!0,value:{}},byEnd:{writable:!0,value:{}},filename:{writable:!0,value:t.filename},indentExclusionRanges:{writable:!0,value:t.indentExclusionRanges},sourcemapLocations:{writable:!0,value:new gA},storedNames:{writable:!0,value:{}},indentStr:{writable:!0,value:void 0},ignoreList:{writable:!0,value:t.ignoreList}}),this.byStart[0]=i,this.byEnd[e.length]=i}addSourcemapLocation(e){this.sourcemapLocations.add(e)}append(e){if(typeof e!="string")throw new TypeError("outro content must be a string");return this.outro+=e,this}appendLeft(e,t){if(typeof t!="string")throw new TypeError("inserted content must be a string");this._split(e);const i=this.byEnd[e];return i?i.appendLeft(t):this.intro+=t,this}appendRight(e,t){if(typeof t!="string")throw new TypeError("inserted content must be a string");this._split(e);const i=this.byStart[e];return i?i.appendRight(t):this.outro+=t,this}clone(){const e=new qf(this.original,{filename:this.filename});let t=this.firstChunk,i=e.firstChunk=e.lastSearchedChunk=t.clone();for(;t;){e.byStart[i.start]=i,e.byEnd[i.end]=i;const s=t.next,r=s&&s.clone();r&&(i.next=r,r.previous=i,i=r),t=s}return e.lastChunk=i,this.indentExclusionRanges&&(e.indentExclusionRanges=this.indentExclusionRanges.slice()),e.sourcemapLocations=new gA(this.sourcemapLocations),e.intro=this.intro,e.outro=this.outro,e}generateDecodedMap(e){e=e||{};const t=0,i=Object.keys(this.storedNames),s=new VMe(e.hires),r=XX(this.original);return this.intro&&s.advance(this.intro),this.firstChunk.eachNext(o=>{const a=r(o.start);o.intro.length&&s.advance(o.intro),o.edited?s.addEdit(t,o.content,a,o.storeName?i.indexOf(o.original):-1):s.addUneditedChunk(t,o,this.original,a,this.sourcemapLocations),o.outro.length&&s.advance(o.outro)}),{file:e.file?e.file.split(/[/\\]/).pop():void 0,sources:[e.source?OMe(e.file||"",e.source):e.file||""],sourcesContent:e.includeContent?[this.original]:void 0,names:i,mappings:s.raw,x_google_ignoreList:this.ignoreList?[t]:void 0}}generateMap(e){return new RMe(this.generateDecodedMap(e))}_ensureindentStr(){this.indentStr===void 0&&(this.indentStr=MMe(this.original))}_getRawIndentString(){return this._ensureindentStr(),this.indentStr}getIndentString(){return this._ensureindentStr(),this.indentStr===null?" ":this.indentStr}indent(e,t){const i=/^[^\r\n]/gm;if(BMe(e)&&(t=e,e=void 0),e===void 0&&(this._ensureindentStr(),e=this.indentStr||" "),e==="")return this;t=t||{};const s={};t.exclude&&(typeof t.exclude[0]=="number"?[t.exclude]:t.exclude).forEach(u=>{for(let h=u[0];h<u[1];h+=1)s[h]=!0});let r=t.indentStart!==!1;const o=c=>r?`${e}${c}`:(r=!0,c);this.intro=this.intro.replace(i,o);let a=0,l=this.firstChunk;for(;l;){const c=l.end;if(l.edited)s[a]||(l.content=l.content.replace(i,o),l.content.length&&(r=l.content[l.content.length-1]===` +`));else for(a=l.start;a<c;){if(!s[a]){const u=this.original[a];u===` +`?r=!0:u!=="\r"&&r&&(r=!1,a===l.start||(this._splitChunk(l,a),l=l.next),l.prependRight(e))}a+=1}a=l.end,l=l.next}return this.outro=this.outro.replace(i,o),this}insert(){throw new Error("magicString.insert(...) is deprecated. Use prependRight(...) or appendLeft(...)")}insertLeft(e,t){return Kv.insertLeft||(console.warn("magicString.insertLeft(...) is deprecated. Use magicString.appendLeft(...) instead"),Kv.insertLeft=!0),this.appendLeft(e,t)}insertRight(e,t){return Kv.insertRight||(console.warn("magicString.insertRight(...) is deprecated. Use magicString.prependRight(...) instead"),Kv.insertRight=!0),this.prependRight(e,t)}move(e,t,i){if(i>=e&&i<=t)throw new Error("Cannot move a selection inside itself");this._split(e),this._split(t),this._split(i);const s=this.byStart[e],r=this.byEnd[t],o=s.previous,a=r.next,l=this.byStart[i];if(!l&&r===this.lastChunk)return this;const c=l?l.previous:this.lastChunk;return o&&(o.next=a),a&&(a.previous=o),c&&(c.next=s),l&&(l.previous=r),s.previous||(this.firstChunk=r.next),r.next||(this.lastChunk=s.previous,this.lastChunk.next=null),s.previous=c,r.next=l||null,c||(this.firstChunk=s),l||(this.lastChunk=r),this}overwrite(e,t,i,s){return s=s||{},this.update(e,t,i,{...s,overwrite:!s.contentOnly})}update(e,t,i,s){if(typeof i!="string")throw new TypeError("replacement content must be a string");for(;e<0;)e+=this.original.length;for(;t<0;)t+=this.original.length;if(t>this.original.length)throw new Error("end is out of bounds");if(e===t)throw new Error("Cannot overwrite a zero-length range – use appendLeft or prependRight instead");this._split(e),this._split(t),s===!0&&(Kv.storeName||(console.warn("The final argument to magicString.overwrite(...) should be an options object. See https://github.com/rich-harris/magic-string"),Kv.storeName=!0),s={storeName:!0});const r=s!==void 0?s.storeName:!1,o=s!==void 0?s.overwrite:!1;if(r){const c=this.original.slice(e,t);Object.defineProperty(this.storedNames,c,{writable:!0,value:!0,enumerable:!0})}const a=this.byStart[e],l=this.byEnd[t];if(a){let c=a;for(;c!==l;){if(c.next!==this.byStart[c.end])throw new Error("Cannot overwrite across a split point");c=c.next,c.edit("",!1)}a.edit(i,r,!o)}else{const c=new tL(e,t,"").edit(i,r);l.next=c,c.previous=l}return this}prepend(e){if(typeof e!="string")throw new TypeError("outro content must be a string");return this.intro=e+this.intro,this}prependLeft(e,t){if(typeof t!="string")throw new TypeError("inserted content must be a string");this._split(e);const i=this.byEnd[e];return i?i.prependLeft(t):this.intro=t+this.intro,this}prependRight(e,t){if(typeof t!="string")throw new TypeError("inserted content must be a string");this._split(e);const i=this.byStart[e];return i?i.prependRight(t):this.outro=t+this.outro,this}remove(e,t){for(;e<0;)e+=this.original.length;for(;t<0;)t+=this.original.length;if(e===t)return this;if(e<0||t>this.original.length)throw new Error("Character is out of bounds");if(e>t)throw new Error("end must be greater than start");this._split(e),this._split(t);let i=this.byStart[e];for(;i;)i.intro="",i.outro="",i.edit(""),i=t>i.end?this.byStart[i.end]:null;return this}lastChar(){if(this.outro.length)return this.outro[this.outro.length-1];let e=this.lastChunk;do{if(e.outro.length)return e.outro[e.outro.length-1];if(e.content.length)return e.content[e.content.length-1];if(e.intro.length)return e.intro[e.intro.length-1]}while(e=e.previous);return this.intro.length?this.intro[this.intro.length-1]:""}lastLine(){let e=this.outro.lastIndexOf(gw);if(e!==-1)return this.outro.substr(e+1);let t=this.outro,i=this.lastChunk;do{if(i.outro.length>0){if(e=i.outro.lastIndexOf(gw),e!==-1)return i.outro.substr(e+1)+t;t=i.outro+t}if(i.content.length>0){if(e=i.content.lastIndexOf(gw),e!==-1)return i.content.substr(e+1)+t;t=i.content+t}if(i.intro.length>0){if(e=i.intro.lastIndexOf(gw),e!==-1)return i.intro.substr(e+1)+t;t=i.intro+t}}while(i=i.previous);return e=this.intro.lastIndexOf(gw),e!==-1?this.intro.substr(e+1)+t:this.intro+t}slice(e=0,t=this.original.length){for(;e<0;)e+=this.original.length;for(;t<0;)t+=this.original.length;let i="",s=this.firstChunk;for(;s&&(s.start>e||s.end<=e);){if(s.start<t&&s.end>=t)return i;s=s.next}if(s&&s.edited&&s.start!==e)throw new Error(`Cannot use replaced character ${e} as slice start anchor.`);const r=s;for(;s;){s.intro&&(r!==s||s.start===e)&&(i+=s.intro);const o=s.start<t&&s.end>=t;if(o&&s.edited&&s.end!==t)throw new Error(`Cannot use replaced character ${t} as slice end anchor.`);const a=r===s?e-s.start:0,l=o?s.content.length+t-s.end:s.content.length;if(i+=s.content.slice(a,l),s.outro&&(!o||s.end===t)&&(i+=s.outro),o)break;s=s.next}return i}snip(e,t){const i=this.clone();return i.remove(0,e),i.remove(t,i.original.length),i}_split(e){if(this.byStart[e]||this.byEnd[e])return;let t=this.lastSearchedChunk;const i=e>t.end;for(;t;){if(t.contains(e))return this._splitChunk(t,e);t=i?this.byStart[t.end]:this.byEnd[t.start]}}_splitChunk(e,t){if(e.edited&&e.content.length){const s=XX(this.original)(t);throw new Error(`Cannot split a chunk that has already been edited (${s.line}:${s.column} – "${e.original}")`)}const i=e.split(t);return this.byEnd[t]=e,this.byStart[t]=i,this.byEnd[i.end]=i,e===this.lastChunk&&(this.lastChunk=i),this.lastSearchedChunk=e,!0}toString(){let e=this.intro,t=this.firstChunk;for(;t;)e+=t.toString(),t=t.next;return e+this.outro}isEmpty(){let e=this.firstChunk;do if(e.intro.length&&e.intro.trim()||e.content.length&&e.content.trim()||e.outro.length&&e.outro.trim())return!1;while(e=e.next);return!0}length(){let e=this.firstChunk,t=0;do t+=e.intro.length+e.content.length+e.outro.length;while(e=e.next);return t}trimLines(){return this.trim("[\\r\\n]")}trim(e){return this.trimStart(e).trimEnd(e)}trimEndAborted(e){const t=new RegExp((e||"\\s")+"+$");if(this.outro=this.outro.replace(t,""),this.outro.length)return!0;let i=this.lastChunk;do{const s=i.end,r=i.trimEnd(t);if(i.end!==s&&(this.lastChunk===i&&(this.lastChunk=i.next),this.byEnd[i.end]=i,this.byStart[i.next.start]=i.next,this.byEnd[i.next.end]=i.next),r)return!0;i=i.previous}while(i);return!1}trimEnd(e){return this.trimEndAborted(e),this}trimStartAborted(e){const t=new RegExp("^"+(e||"\\s")+"+");if(this.intro=this.intro.replace(t,""),this.intro.length)return!0;let i=this.firstChunk;do{const s=i.end,r=i.trimStart(t);if(i.end!==s&&(i===this.lastChunk&&(this.lastChunk=i.next),this.byEnd[i.end]=i,this.byStart[i.next.start]=i.next,this.byEnd[i.next.end]=i.next),r)return!0;i=i.next}while(i);return!1}trimStart(e){return this.trimStartAborted(e),this}hasChanged(){return this.original!==this.toString()}_replaceRegexp(e,t){function i(r,o){return typeof t=="string"?t.replace(/\$(\$|&|\d+)/g,(a,l)=>l==="$"?"$":l==="&"?r[0]:+l<r.length?r[+l]:`$${l}`):t(...r,r.index,o,r.groups)}function s(r,o){let a;const l=[];for(;a=r.exec(o);)l.push(a);return l}if(e.global)s(e,this.original).forEach(o=>{o.index!=null&&this.overwrite(o.index,o.index+o[0].length,i(o,this.original))});else{const r=this.original.match(e);r&&r.index!=null&&this.overwrite(r.index,r.index+r[0].length,i(r,this.original))}return this}_replaceString(e,t){const{original:i}=this,s=i.indexOf(e);return s!==-1&&this.overwrite(s,s+e.length,t),this}replace(e,t){return typeof e=="string"?this._replaceString(e,t):this._replaceRegexp(e,t)}_replaceAllString(e,t){const{original:i}=this,s=e.length;for(let r=i.indexOf(e);r!==-1;r=i.indexOf(e,r+s))this.overwrite(r,r+s,t);return this}replaceAll(e,t){if(typeof e=="string")return this._replaceAllString(e,t);if(!e.global)throw new TypeError("MagicString.prototype.replaceAll called with a non-global RegExp argument");return this._replaceRegexp(e,t)}}var HMe=Object.defineProperty,$Me=Object.defineProperties,zMe=Object.getOwnPropertyDescriptors,QX=Object.getOwnPropertySymbols,UMe=Object.prototype.hasOwnProperty,jMe=Object.prototype.propertyIsEnumerable,JX=(n,e,t)=>e in n?HMe(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,qMe=(n,e)=>{for(var t in e||(e={}))UMe.call(e,t)&&JX(n,t,e[t]);if(QX)for(var t of QX(e))jMe.call(e,t)&&JX(n,t,e[t]);return n},KMe=(n,e)=>$Me(n,zMe(e));const G4="$",Y4="$$",eQ="vue/macros",GMe=["ref","computed","shallowRef","toRef","customRef"],YMe=/[^\w]\$(?:\$|ref|computed|shallowRef)?\s*(\(|\<)/;function pA(n){return YMe.test(n)}function ZMe(n,{filename:e,sourceMap:t,parserPlugins:i,importHelpersFrom:s="vue"}={}){const r=i||[];e&&(/\.tsx?$/.test(e)&&r.push("typescript"),e.endsWith("x")&&r.push("jsx"));const o=Hp(n,{sourceType:"module",plugins:r}),a=new qf(n),l=iL(o.program,a,0);return l.importedHelpers.length&&a.prepend(`import { ${l.importedHelpers.map(c=>`${c} as _${c}`).join(", ")} } from '${s}' +`),KMe(qMe({},l),{code:a.toString(),map:t?a.generateMap({source:e,hires:!0,includeContent:!0}):null})}function iL(n,e,t=0,i,s){XMe();const r=Object.create(null);for(const q of n.body)q.type==="ImportDeclaration"&&m(q);let o,a;for(const{local:q,imported:re,source:G,specifier:W}of Object.values(r))G===eQ&&(re===Y4?a=q:re===G4?o=q:re!==q&&b("macro imports for ref-creating methods do not support aliasing.",W));!o&&!r[G4]&&(o=G4),!a&&!r[Y4]&&(a=Y4);const l=new Set,c={},u=[c];let h=c,d;const f=new WeakSet,g=[],p=Object.create(null);if(i)for(const q of i)c[q]={};if(s)for(const q in s){const{local:re,isConst:G}=s[q];c[re]={isProp:!0,isConst:!!G},p[re]=q}function m(q){const re=q.source.value;re===eQ&&e.remove(q.start+t,q.end+t);for(const G of q.specifiers){const W=G.local.name,Y=G.type==="ImportSpecifier"&&G.imported.type==="Identifier"&&G.imported.name||"default";r[W]={source:re,local:W,imported:Y,specifier:G}}}function _(q){return!o||h[o]!==void 0?!1:q===o?o:q[0]==="$"&&GMe.includes(q.slice(1))?q:!1}function b(q,re){const G=new Error(q);throw G.node=re,G}function y(q){return l.add(q),`_${q}`}function w(q,re){f.add(q),h?h[q.name]=re||!1:b("registerBinding called without active scope, something is wrong.",q)}const S=(q,re=!1)=>w(q,{isConst:re});let E=0;function L(){return`__$temp_${++E}`}function k(q){return e.original.slice(q.start+t,q.end+t)}function x(q,re=!1){for(const G of q.body)if(G.type==="VariableDeclaration")I(G,re);else if(G.type==="FunctionDeclaration"||G.type==="ClassDeclaration"){if(G.declare||!G.id)continue;w(G.id)}else(G.type==="ForOfStatement"||G.type==="ForInStatement")&&G.left.type==="VariableDeclaration"?I(G.left):G.type==="ExportNamedDeclaration"&&G.declaration&&G.declaration.type==="VariableDeclaration"?I(G.declaration,re):G.type==="LabeledStatement"&&G.body.type==="VariableDeclaration"&&I(G.body,re)}function I(q,re=!1){if(!q.declare)for(const G of q.declarations){let W;const Y=G.init&&G.init.type==="CallExpression"&&G.init.callee.type==="Identifier";if(Y&&(W=_(G.init.callee.name)))N(W,G.id,G.init,q.kind==="const");else{const X=re&&Y&&G.init.callee.name==="defineProps";for(const z of gl(G.id))X?f.add(z):w(z)}}}function N(q,re,G,W){f.add(G.callee),q===o?(e.remove(G.callee.start+t,G.callee.end+t),re.type==="Identifier"?S(re,W):re.type==="ObjectPattern"?T(re,G,W):re.type==="ArrayPattern"&&P(re,G,W)):re.type==="Identifier"?(S(re,W),e.overwrite(G.start+t,G.start+q.length+t,y(q.slice(1)))):b(`${q}() cannot be used with destructure patterns.`,G)}function T(q,re,G,W,Y=[]){W||(W=L(),e.overwrite(q.start+t,q.end+t,W));let X;for(const z of q.properties){let le,J;if(z.type==="ObjectProperty"?z.key.start===z.value.start?(X=z.key,z.value.type==="Identifier"?f.add(z.value):z.value.type==="AssignmentPattern"&&z.value.left.type==="Identifier"&&(f.add(z.value.left),J=z.value.right)):(le=z.computed?z.key:z.key.name,z.value.type==="Identifier"?X=z.value:z.value.type==="ObjectPattern"?T(z.value,re,G,W,[...Y,le]):z.value.type==="ArrayPattern"?P(z.value,re,G,W,[...Y,le]):z.value.type==="AssignmentPattern"&&(z.value.left.type==="Identifier"?(X=z.value.left,J=z.value.right):z.value.left.type==="ObjectPattern"?T(z.value.left,re,G,W,[...Y,[le,z.value.right]]):z.value.left.type==="ArrayPattern"&&P(z.value.left,re,G,W,[...Y,[le,z.value.right]]))):b("reactivity destructure does not support rest elements.",z),X){S(X,G);const be=R(W,Y),fe=Ui(le)?`'${le}'`:le?k(le):`'${X.name}'`,ge=J?`, ${k(J)}`:"";e.appendLeft(re.end+t,`, + ${X.name} = ${y("toRef")}(${be}, ${fe}${ge})`)}}X&&e.appendLeft(re.end+t,";")}function P(q,re,G,W,Y=[]){W||(W=L(),e.overwrite(q.start+t,q.end+t,W));let X;for(let z=0;z<q.elements.length;z++){const le=q.elements[z];if(!le)continue;let J;if(le.type==="Identifier"?X=le:le.type==="AssignmentPattern"?(X=le.left,J=le.right):le.type==="RestElement"?b("reactivity destructure does not support rest elements.",le):le.type==="ObjectPattern"?T(le,re,G,W,[...Y,z]):le.type==="ArrayPattern"&&P(le,re,G,W,[...Y,z]),X){S(X,G);const be=R(W,Y),fe=J?`, ${k(J)}`:"";e.appendLeft(re.end+t,`, + ${X.name} = ${y("toRef")}(${be}, ${z}${fe})`)}}X&&e.appendLeft(re.end+t,";")}function R(q,re){if(re.length)for(const G of re)aa(G)?q=`(${q}${F(G[0])} || ${k(G[1])})`:q+=F(G);return q}function F(q){return typeof q=="number"?`[${q}]`:typeof q=="string"?`.${q}`:k(q)}function j(q,re,G,W){if(QR(q,re.name)){const Y=q[re.name];if(Y){Y.isConst&&(G.type==="AssignmentExpression"&&re===G.left||G.type==="UpdateExpression")&&b("Assignment to constant variable.",re);const{isProp:X}=Y;mv(G)&&G.shorthand?(!G.inPattern||pv(G,W))&&(X?d?(Z(re),e.appendLeft(re.end+t,`: __props_${p[re.name]}`)):e.appendLeft(re.end+t,`: ${Gb(p[re.name])}`):e.appendLeft(re.end+t,`: ${re.name}.value`)):X?d?(Z(re),e.overwrite(re.start+t,re.end+t,`__props_${p[re.name]}`)):e.overwrite(re.start+t,re.end+t,Gb(p[re.name])):e.appendLeft(re.end+t,".value")}return!0}return!1}const K={};function Z(q){if(!K.hasOwnProperty(q.name)){K[q.name]=!0;const re=p[q.name];e.prependRight(t,`const __props_${re} = ${y("toRef")}(__props, '${re}'); +`)}}return x(n,!0),iE(n,{enter(q,re){if(re&&g.push(re),oc(q)){u.push(h={}),xM(q,w),q.body.type==="BlockStatement"&&x(q.body);return}if(q.type==="CatchClause"){u.push(h={}),q.param&&q.param.type==="Identifier"&&w(q.param),x(q.body);return}if(q.type==="BlockStatement"&&!oc(re)){u.push(h={}),x(q);return}if(re&&re.type.startsWith("TS")&&re.type!=="TSAsExpression"&&re.type!=="TSNonNullExpression"&&re.type!=="TSTypeAssertion")return this.skip();if(q.type==="Identifier"){const G=c[q.name];if(!(d&&(!G||!G.isProp))&&LM(q,re,g)&&!f.has(q)){let W=u.length;for(;W--;)if(j(u[W],q,re,g))return}}if(q.type==="CallExpression"&&q.callee.type==="Identifier"){const G=q.callee.name,W=_(G);if(W&&(!re||re.type!=="VariableDeclarator"))return b(`${W} can only be used as the initializer of a variable declaration.`,q);if(a&&h[a]===void 0&&G===a&&(d=q,e.remove(q.callee.start+t,q.callee.end+t),(re==null?void 0:re.type)==="ExpressionStatement")){let Y=(q.leadingComments?q.leadingComments[0].start:q.start)+t;for(;Y--;){const X=e.original.charAt(Y);if(X===` +`){e.prependRight(q.start+t,";");break}else if(!/\s/.test(X))break}}}},leave(q,re){re&&g.pop(),(q.type==="BlockStatement"&&!oc(re)||oc(q))&&(u.pop(),h=u[u.length-1]||null),q===d&&(d=void 0)}}),{rootRefs:Object.keys(c).filter(q=>{const re=c[q];return re&&!re.isProp}),importedHelpers:[...l]}}const tQ={};function XMe(){typeof window<"u"||QMe(`Reactivity Transform was an experimental feature and has now been deprecated. It will be removed from Vue core in 3.4. If you intend to continue using it, switch to https://vue-macros.sxzz.moe/features/reactivity-transform.html. +See reason for deprecation here: https://github.com/vuejs/rfcs/discussions/369#discussioncomment-5059028`)}function QMe(n){!(typeof process<"u"&&!0)&&!tQ[n]&&(tQ[n]=!0,JMe(n))}function JMe(n){console.warn(`\x1B[1m\x1B[33m[@vue/reactivity-transform]\x1B[0m\x1B[33m ${n}\x1B[0m +`)}function Vhe(n){for(const e of n)if(e.type==="ExportDefaultDeclaration"&&e.declaration.type==="ObjectExpression")return eOe(e.declaration);return{}}function eOe(n){const e={};Object.defineProperty(e,"__isScriptSetup",{enumerable:!1,value:!1});for(const t of n.properties)if(t.type==="ObjectProperty"&&!t.computed&&t.key.type==="Identifier"){if(t.key.name==="props")for(const i of h8(t.value))e[i]="props";else if(t.key.name==="inject")for(const i of h8(t.value))e[i]="options";else if(t.value.type==="ObjectExpression"&&(t.key.name==="computed"||t.key.name==="methods"))for(const i of u8(t.value))e[i]="options"}else if(t.type==="ObjectMethod"&&t.key.type==="Identifier"&&(t.key.name==="setup"||t.key.name==="data")){for(const i of t.body.body)if(i.type==="ReturnStatement"&&i.argument&&i.argument.type==="ObjectExpression")for(const s of u8(i.argument))e[s]=t.key.name==="setup"?"setup-maybe-ref":"data"}return e}function u8(n){const e=[];for(const t of n.properties){if(t.type==="SpreadElement")continue;const i=jz(t.key,t.computed);i&&e.push(String(i))}return e}function tOe(n){const e=[];for(const t of n.elements)t&&t.type==="StringLiteral"&&e.push(t.value);return e}function h8(n){return n.type==="ArrayExpression"?tOe(n):n.type==="ObjectExpression"?u8(n):[]}function iOe(n,e,t){const i=Hp(n,{sourceType:"module",plugins:t}).program.body,s=new qf(n);return BU(i,s,e),s.toString()}function BU(n,e,t){if(!nOe(n)){e.append(` +const ${t} = {}`);return}n.forEach(i=>{if(i.type==="ExportDefaultDeclaration")if(i.declaration.type==="ClassDeclaration"&&i.declaration.id){let s=i.declaration.decorators&&i.declaration.decorators.length>0?i.declaration.decorators[i.declaration.decorators.length-1].end:i.start;e.overwrite(s,i.declaration.id.start," class "),e.append(` +const ${t} = ${i.declaration.id.name}`)}else e.overwrite(i.start,i.declaration.start,`const ${t} = `);else if(i.type==="ExportNamedDeclaration"){for(const s of i.specifiers)if(s.type==="ExportSpecifier"&&s.exported.type==="Identifier"&&s.exported.name==="default"){if(i.source)if(s.local.name==="default"){e.prepend(`import { default as __VUE_DEFAULT__ } from '${i.source.value}' +`);const o=Z4(e,s.local.end,i.end);e.remove(s.start,o),e.append(` +const ${t} = __VUE_DEFAULT__`);continue}else{e.prepend(`import { ${e.slice(s.local.start,s.local.end)} as __VUE_DEFAULT__ } from '${i.source.value}' +`);const o=Z4(e,s.exported.end,i.end);e.remove(s.start,o),e.append(` +const ${t} = __VUE_DEFAULT__`);continue}const r=Z4(e,s.end,i.end);e.remove(s.start,r),e.append(` +const ${t} = ${s.local.name}`)}}})}function nOe(n){for(const e of n){if(e.type==="ExportDefaultDeclaration")return!0;if(e.type==="ExportNamedDeclaration"&&e.specifiers.some(t=>t.exported.name==="default"))return!0}return!1}function Z4(n,e,t){let i=!1,s=e;for(;e<t;)if(/\s/.test(n.slice(e,e+1)))e++;else if(n.slice(e,e+1)===","){e++,i=!0;break}else if(n.slice(e,e+1)==="}")break;return i?e:s}var sOe=Object.defineProperty,rOe=Object.defineProperties,oOe=Object.getOwnPropertyDescriptors,iQ=Object.getOwnPropertySymbols,aOe=Object.prototype.hasOwnProperty,lOe=Object.prototype.propertyIsEnumerable,nQ=(n,e,t)=>e in n?sOe(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,cOe=(n,e)=>{for(var t in e||(e={}))aOe.call(e,t)&&nQ(n,t,e[t]);if(iQ)for(var t of iQ(e))lOe.call(e,t)&&nQ(n,t,e[t]);return n},uOe=(n,e)=>rOe(n,oOe(e));const S0="__default__";function hOe(n,e){var t;const i=n.descriptor.script;if(i.lang&&!n.isJS&&!n.isTS)return i;try{let s=i.content,r=i.map;const o=n.scriptAst,a=Vhe(o.body),{source:l,filename:c,cssVars:u}=n.descriptor,{sourceMap:h,genDefaultAs:d,isProd:f}=n.options;if(n.options.reactivityTransform&&pA(s)){const g=new qf(l),p=i.loc.start.offset,m=i.loc.end.offset,{importedHelpers:_}=iL(o,g,p);_.length&&g.prepend(`import { ${_.map(b=>`${b} as _${b}`).join(", ")} } from 'vue' +`),g.remove(0,p),g.remove(m,l.length),s=g.toString(),h!==!1&&(r=g.generateMap({source:c,hires:!0,includeContent:!0}))}if(u.length||d){const g=d||S0,p=new qf(s);BU(o.body,p,g),s=p.toString(),u.length&&!((t=n.options.templateOptions)!=null&&t.ssr)&&(s+=HEe(u,a,e,!!f,g)),d||(s+=` +export default ${g}`)}return uOe(cOe({},i),{content:s,map:r,bindings:a,scriptAst:o.body})}catch{return i}}var sQ,rQ;class dOe{constructor(e,t){this.descriptor=e,this.options=t,this.isCE=!1,this.source=this.descriptor.source,this.filename=this.descriptor.filename,this.s=new qf(this.source),this.startOffset=(sQ=this.descriptor.scriptSetup)==null?void 0:sQ.loc.start.offset,this.endOffset=(rQ=this.descriptor.scriptSetup)==null?void 0:rQ.loc.end.offset,this.userImports=Object.create(null),this.hasDefinePropsCall=!1,this.hasDefineEmitCall=!1,this.hasDefineExposeCall=!1,this.hasDefaultExportName=!1,this.hasDefaultExportRender=!1,this.hasDefineOptionsCall=!1,this.hasDefineSlotsCall=!1,this.hasDefineModelCall=!1,this.propsDestructuredBindings=Object.create(null),this.modelDecls=Object.create(null),this.bindingMetadata={},this.helperImports=new Set;const{script:i,scriptSetup:s}=e,r=i&&i.lang,o=s&&s.lang;this.isJS=r==="js"||r==="jsx"||o==="js"||o==="jsx",this.isTS=r==="ts"||r==="tsx"||o==="ts"||o==="tsx";const a=t.customElement,l=this.descriptor.filename;a&&(this.isCE=typeof a=="boolean"?a:a(l));const c=d8(r||o,t.babelParserPlugins);function u(h,d){try{return Hp(h,{plugins:c,sourceType:"module"}).program}catch(f){throw f.message=`[vue/compiler-sfc] ${f.message} + +${e.filename} +${Yb(e.source,f.pos+d,f.pos+d+1)}`,f}}this.scriptAst=e.script&&u(e.script.content,e.script.loc.start.offset),this.scriptSetupAst=e.scriptSetup&&u(e.scriptSetup.content,this.startOffset)}helper(e){return this.helperImports.add(e),`_${e}`}getString(e,t=!0){return(t?this.descriptor.scriptSetup:this.descriptor.script).content.slice(e.start,e.end)}error(e,t,i){const s=i?i.offset:this.startOffset;throw new Error(`[@vue/compiler-sfc] ${e} + +${(i||this.descriptor).filename} +${Yb((i||this.descriptor).source,t.start+s,t.end+s)}`)}}function d8(n,e,t=!1){const i=[];return n==="jsx"||n==="tsx"?i.push("jsx"):e&&(e=e.filter(s=>s!=="jsx")),(n==="ts"||n==="tsx")&&(i.push(["typescript",{dts:t}]),(!e||!e.includes("decorators"))&&i.push("decorators-legacy")),e&&i.push(...e),i}var fOe=Object.defineProperty,gOe=Object.defineProperties,pOe=Object.getOwnPropertyDescriptors,oQ=Object.getOwnPropertySymbols,mOe=Object.prototype.hasOwnProperty,_Oe=Object.prototype.propertyIsEnumerable,aQ=(n,e,t)=>e in n?fOe(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,f8=(n,e)=>{for(var t in e||(e={}))mOe.call(e,t)&&aQ(n,t,e[t]);if(oQ)for(var t of oQ(e))_Oe.call(e,t)&&aQ(n,t,e[t]);return n},g8=(n,e)=>gOe(n,pOe(e));class WU{constructor(e,t,i=0,s=Object.create(null),r=Object.create(null),o=Object.create(null)){this.filename=e,this.source=t,this.offset=i,this.imports=s,this.types=r,this.declares=o,this.resolvedImportSources=Object.create(null),this.exportedTypes=Object.create(null),this.exportedDeclares=Object.create(null)}}function Xr(n,e,t,i){return e._resolvedElements?e._resolvedElements:e._resolvedElements=vOe(n,e,e._ownerScope||t||ZM(n),i)}function vOe(n,e,t,i){var s,r;switch(e.type){case"TSTypeLiteral":return Hhe(n,e.members,t,i);case"TSInterfaceDeclaration":return bOe(n,e,t,i);case"TSTypeAliasDeclaration":case"TSParenthesizedType":return Xr(n,e.typeAnnotation,t,i);case"TSFunctionType":return{props:{},calls:[e]};case"TSUnionType":case"TSIntersectionType":return lQ(e.types.map(o=>Xr(n,o,t,i)),e.type);case"TSMappedType":return yOe(n,e,t);case"TSIndexedAccessType":{const o=$he(n,e,t);return lQ(o.map(a=>Xr(n,a,a._ownerScope)),"TSUnionType")}case"TSExpressionWithTypeArguments":case"TSTypeReference":{const o=HU(e);if((o==="ExtractPropTypes"||o==="ExtractPublicPropTypes")&&e.typeParameters&&((s=t.imports[o])==null?void 0:s.source)==="vue")return dQ(Xr(n,e.typeParameters.params[0],t,i),t);const a=Kh(n,e,t);if(a){const l=Object.create(null);return(a.type==="TSTypeAliasDeclaration"||a.type==="TSInterfaceDeclaration")&&a.typeParameters&&e.typeParameters&&a.typeParameters.params.forEach((c,u)=>{let h=i&&i[c.name];h||(h=e.typeParameters.params[u]),l[c.name]=h}),Xr(n,a,a._ownerScope,l)}else{if(typeof o=="string"){if(i&&i[o])return Xr(n,i[o],t,i);if(COe.has(o))return wOe(n,e,o,t,i);if(o==="ReturnType"&&e.typeParameters){const l=ROe(n,e.typeParameters.params[0],t);if(l)return Xr(n,l,t)}}return n.error("Unresolvable type reference or unsupported built-in utility type",e,t)}}case"TSImportType":{if(S_(e.argument)==="vue"&&((r=e.qualifier)==null?void 0:r.type)==="Identifier"&&e.qualifier.name==="ExtractPropTypes"&&e.typeParameters)return dQ(Xr(n,e.typeParameters.params[0],t),t);const o=YM(n,e.argument,t,e.argument.value),a=Kh(n,e,o);if(a)return Xr(n,a,a._ownerScope);break}case"TSTypeQuery":{const o=Kh(n,e,t);if(o)return Xr(n,o,o._ownerScope)}break}return n.error(`Unresolvable type: ${e.type}`,e,t)}function Hhe(n,e,t=ZM(n),i){const s={props:{}};for(const r of e)if(r.type==="TSPropertySignature"||r.type==="TSMethodSignature"){i&&(t=qhe(t),Object.assign(t.types,i)),r._ownerScope=t;const o=S_(r.key);if(o&&!r.computed)s.props[o]=r;else if(r.key.type==="TemplateLiteral")for(const a of VU(n,r.key,t))s.props[a]=r;else n.error("Unsupported computed key in type referenced by a macro",r.key,t)}else r.type==="TSCallSignatureDeclaration"&&(s.calls||(s.calls=[])).push(r);return s}function lQ(n,e){if(n.length===1)return n[0];const t={props:{}},{props:i}=t;for(const{props:s,calls:r}of n){for(const o in s)QR(i,o)?i[o]=qS(i[o].key,{type:e,types:[i[o],s[o]]},i[o]._ownerScope,i[o].optional||s[o].optional):i[o]=s[o];r&&(t.calls||(t.calls=[])).push(...r)}return t}function qS(n,e,t,i){return{type:"TSPropertySignature",key:n,kind:"get",optional:i,typeAnnotation:{type:"TSTypeAnnotation",typeAnnotation:e},_ownerScope:t}}function bOe(n,e,t,i){const s=Hhe(n,e.body.body,e._ownerScope,i);if(e.extends){for(const r of e.extends)if(!(r.leadingComments&&r.leadingComments.some(o=>o.value.includes("@vue-ignore"))))try{const{props:o,calls:a}=Xr(n,r,t);for(const l in o)QR(s.props,l)||(s.props[l]=o[l]);a&&(s.calls||(s.calls=[])).push(...a)}catch{n.error(`Failed to resolve extends base type. +If this previously worked in 3.2, you can instruct the compiler to ignore this extend by adding /* @vue-ignore */ before it, for example: + +interface Props extends /* @vue-ignore */ Base {} + +Note: both in 3.2 or with the ignore, the properties in the base type are treated as fallthrough attrs at runtime.`,r)}}return s}function yOe(n,e,t){const i={props:{}},s=bf(n,e.typeParameter.constraint,t);for(const r of s)i.props[r]=qS({type:"Identifier",name:r},e.typeAnnotation,t,!!e.optional);return i}function $he(n,e,t){var i,s;if(e.indexType.type==="TSNumberKeyword")return zhe(n,e.objectType,t);const{indexType:r,objectType:o}=e,a=[];let l,c;r.type==="TSStringKeyword"?(c=Xr(n,o,t),l=Object.keys(c.props)):(l=bf(n,r,t),c=Xr(n,o,t));for(const u of l){const h=(s=(i=c.props[u])==null?void 0:i.typeAnnotation)==null?void 0:s.typeAnnotation;h&&(h._ownerScope=c.props[u]._ownerScope,a.push(h))}return a}function zhe(n,e,t){if(e.type==="TSArrayType")return[e.elementType];if(e.type==="TSTupleType")return e.elementTypes.map(i=>i.type==="TSNamedTupleMember"?i.elementType:i);if(e.type==="TSTypeReference"){if(HU(e)==="Array"&&e.typeParameters)return e.typeParameters.params;{const i=Kh(n,e,t);if(i)return zhe(n,i,t)}}return n.error("Failed to resolve element type from target type",e,t)}function bf(n,e,t){switch(e.type){case"StringLiteral":return[e.value];case"TSLiteralType":return bf(n,e.literal,t);case"TSUnionType":return e.types.map(i=>bf(n,i,t)).flat();case"TemplateLiteral":return VU(n,e,t);case"TSTypeReference":{const i=Kh(n,e,t);if(i)return bf(n,i,t);if(e.typeName.type==="Identifier"){const s=(r=0)=>bf(n,e.typeParameters.params[r],t);switch(e.typeName.name){case"Extract":return s(1);case"Exclude":{const r=s(1);return s().filter(o=>!r.includes(o))}case"Uppercase":return s().map(r=>r.toUpperCase());case"Lowercase":return s().map(r=>r.toLowerCase());case"Capitalize":return s().map(Wp);case"Uncapitalize":return s().map(r=>r[0].toLowerCase()+r.slice(1));default:n.error("Unsupported type when resolving index type",e.typeName,t)}}}}return n.error("Failed to resolve index type into finite keys",e,t)}function VU(n,e,t){if(!e.expressions.length)return[e.quasis[0].value.raw];const i=[],s=e.expressions[0],r=e.quasis[0],o=r?r.value.raw:"",a=bf(n,s,t),l=VU(n,g8(f8({},e),{expressions:e.expressions.slice(1),quasis:r?e.quasis.slice(1):e.quasis}),t);for(const c of a)for(const u of l)i.push(o+c+u);return i}const COe=new Set(["Partial","Required","Readonly","Pick","Omit"]);function wOe(n,e,t,i,s){const r=Xr(n,e.typeParameters.params[0],i,s);switch(t){case"Partial":{const l={props:{},calls:r.calls};return Object.keys(r.props).forEach(c=>{l.props[c]=g8(f8({},r.props[c]),{optional:!0})}),l}case"Required":{const l={props:{},calls:r.calls};return Object.keys(r.props).forEach(c=>{l.props[c]=g8(f8({},r.props[c]),{optional:!1})}),l}case"Readonly":return r;case"Pick":{const l=bf(n,e.typeParameters.params[1],i),c={props:{},calls:r.calls};for(const u of l)c.props[u]=r.props[u];return c}case"Omit":const o=bf(n,e.typeParameters.params[1],i),a={props:{},calls:r.calls};for(const l in r.props)o.includes(l)||(a.props[l]=r.props[l]);return a}}function Kh(n,e,t,i,s=!1){return e._resolvedReference?e._resolvedReference:e._resolvedReference=p8(n,t||ZM(n),i||HU(e),e,s)}function p8(n,e,t,i,s){if(typeof t=="string"){if(e.imports[t])return LOe(n,i,t,e);{const r=i.type==="TSTypeQuery"?s?e.exportedDeclares:e.declares:s?e.exportedTypes:e.types;if(r[t])return r[t];{const o=SOe(n);if(o)for(const a of o){const l=i.type==="TSTypeQuery"?a.declares:a.types;if(l[t])return(n.deps||(n.deps=new Set)).add(a.filename),l[t]}}}}else{let r=p8(n,e,t[0],i,s);if(r&&(r.type!=="TSModuleDeclaration"&&(r=r._ns),r)){const o=IOe(n,r,r._ownerScope||e);return p8(n,o,t.length>2?t.slice(1):t[t.length-1],i,!r.declare)}}}function HU(n){const e=n.type==="TSTypeReference"?n.typeName:n.type==="TSExpressionWithTypeArguments"?n.expression:n.type==="TSImportType"?n.qualifier:n.exprName;return(e==null?void 0:e.type)==="Identifier"?e.name:(e==null?void 0:e.type)==="TSQualifiedName"?Uhe(e):"default"}function Uhe(n){return n.type==="Identifier"?[n.name]:[...Uhe(n.left),n.right.name]}function SOe(n){if(n.options.globalTypeFiles){if(!$U(n))throw new Error("[vue/compiler-sfc] globalTypeFiles requires fs access.");return n.options.globalTypeFiles.map(t=>jhe(n,qz(t),!0))}}let FD,m8;function kOe(n){m8=()=>{try{return n()}catch(e){throw typeof e.message=="string"&&e.message.includes("Cannot find module")?new Error('Failed to load TypeScript, which is required for resolving imported types. Please make sure "typescript" is installed as a project dependency.'):new Error("Failed to load TypeScript for resolving imported types.")}}}function $U(n){if(n.fs)return n.fs;!FD&&m8&&(FD=m8());const e=n.options.fs||(FD==null?void 0:FD.sys);if(e)return n.fs={fileExists(t){return t.endsWith(".vue.ts")&&(t=t.replace(/\.ts$/,"")),e.fileExists(t)},readFile(t){return t.endsWith(".vue.ts")&&(t=t.replace(/\.ts$/,"")),e.readFile(t)}}}function LOe(n,e,t,i){const{source:s,imported:r}=i.imports[t],o=YM(n,e,i,s);return Kh(n,e,o,r,!0)}function YM(n,e,t,i){let s;try{s=$U(n)}catch(o){return n.error(o.message,e,t)}if(!s)return n.error("No fs option provided to `compileScript` in non-Node environment. File system access is required for resolving imported types.",e,t);let r=t.resolvedImportSources[i];if(!r){if(i.startsWith("..")){const a=eA(JN(t.filename),i);r=cQ(a,s)}else if(i.startsWith(".")){const o=eA(JN(t.filename),i);r=cQ(o,s)}else return n.error("Type import from non-relative sources is not supported in the browser build.",e,t);r&&(r=t.resolvedImportSources[i]=qz(r))}return r?((n.deps||(n.deps=new Set)).add(r),jhe(n,r)):n.error(`Failed to resolve import source ${JSON.stringify(i)}.`,e,t)}function cQ(n,e){n=n.replace(/\.js$/,"");const t=i=>{if(e.fileExists(i))return i};return t(n)||t(n+".ts")||t(n+".d.ts")||t(eA(n,"index.ts"))||t(eA(n,"index.d.ts"))}const uQ=NM(),xOe=new Map,_8=NM();function EOe(n){n=qz(n),_8.delete(n),uQ.delete(n);const e=xOe.get(n);e&&uQ.delete(e)}function jhe(n,e,t=!1){const i=_8.get(e);if(i)return i;const r=$U(n).readFile(e)||"",o=DOe(e,r,n.options.babelParserPlugins),a=new WU(e,r,0,Khe(o));return zU(n,o,a,t),_8.set(e,a),a}function DOe(n,e,t){const i=zz(n);if(i===".ts"||i===".tsx")return Hp(e,{plugins:d8(i.slice(1),t,n.endsWith(".d.ts")),sourceType:"module"}).program.body;if(i===".vue"){const{descriptor:{script:s,scriptSetup:r}}=nce(e);if(!s&&!r)return[];const o=s?s.loc.start.offset:1/0,a=r?r.loc.start.offset:1/0,l=o<a?s:r,c=o<a?r:s;let u=" ".repeat(Math.min(o,a))+l.content;c&&(u+=" ".repeat(c.loc.start.offset-s.loc.end.offset)+c.content);const h=(s==null?void 0:s.lang)||(r==null?void 0:r.lang);return Hp(u,{plugins:d8(h,t),sourceType:"module"}).program.body}return[]}function ZM(n){if(n.scope)return n.scope;const e="ast"in n?n.ast:n.scriptAst?[...n.scriptAst.body,...n.scriptSetupAst.body]:n.scriptSetupAst.body,t=new WU(n.filename,n.source,"startOffset"in n?n.startOffset:0,"userImports"in n?Object.create(n.userImports):Khe(e));return zU(n,e,t),n.scope=t}function IOe(n,e,t){if(e._resolvedChildScope)return e._resolvedChildScope;const i=qhe(t);if(e.body.type==="TSModuleDeclaration"){const s=e.body;s._ownerScope=i;const r=S_(s.id);i.types[r]=i.exportedTypes[r]=s}else zU(n,e.body.body,i);return e._resolvedChildScope=i}function qhe(n){return new WU(n.filename,n.source,n.offset,Object.create(n.imports),Object.create(n.types),Object.create(n.declares))}const TOe=/^Import|^Export/;function zU(n,e,t,i=!1){const{types:s,declares:r,exportedTypes:o,exportedDeclares:a,imports:l}=t,c=i?!e.some(u=>TOe.test(u.type)):!1;for(const u of e)if(i){if(c)u.declare&&Km(u,s,r);else if(u.type==="TSModuleDeclaration"&&u.global)for(const h of u.body.body)Km(h,s,r)}else Km(u,s,r);if(!i)for(const u of e)if(u.type==="ExportNamedDeclaration"){if(u.declaration)Km(u.declaration,s,r),Km(u.declaration,o,a);else for(const h of u.specifiers)if(h.type==="ExportSpecifier"){const d=h.local.name,f=S_(h.exported);u.source?(l[f]={source:u.source.value,imported:d},o[f]={type:"TSTypeReference",typeName:{type:"Identifier",name:d},_ownerScope:t}):s[d]&&(o[f]=s[d])}}else if(u.type==="ExportAllDeclaration"){const h=YM(n,u.source,t,u.source.value);Object.assign(t.exportedTypes,h.exportedTypes)}else u.type==="ExportDefaultDeclaration"&&u.declaration&&(u.declaration.type!=="Identifier"?(Km(u.declaration,s,r,"default"),Km(u.declaration,o,a,"default")):s[u.declaration.name]&&(o.default=s[u.declaration.name]));for(const u of Object.keys(s)){const h=s[u];h._ownerScope=t,h._ns&&(h._ns._ownerScope=t)}for(const u of Object.keys(r))r[u]._ownerScope=t}function Km(n,e,t,i){switch(n.type){case"TSInterfaceDeclaration":case"TSEnumDeclaration":case"TSModuleDeclaration":{const s=i||S_(n.id);let r=e[s];if(r){if(n.type==="TSModuleDeclaration"){r.type==="TSModuleDeclaration"?UU(r,n):hQ(r,n);break}if(r.type==="TSModuleDeclaration"){e[s]=n,hQ(n,r);break}if(r.type!==n.type)break;n.type==="TSInterfaceDeclaration"?r.body.body.push(...n.body.body):r.members.push(...n.members)}else e[s]=n;break}case"ClassDeclaration":(i||n.id)&&(e[i||S_(n.id)]=n);break;case"TSTypeAliasDeclaration":e[n.id.name]=n.typeParameters?n:n.typeAnnotation;break;case"TSDeclareFunction":n.id&&(t[n.id.name]=n);break;case"VariableDeclaration":{if(n.declare)for(const s of n.declarations)s.id.type==="Identifier"&&s.id.typeAnnotation&&(t[s.id.name]=s.id.typeAnnotation.typeAnnotation);break}}}function UU(n,e){const t=n.body,i=e.body;t.type==="TSModuleDeclaration"?i.type==="TSModuleDeclaration"?UU(t,i):i.body.push({type:"ExportNamedDeclaration",declaration:t,exportKind:"type",specifiers:[]}):i.type==="TSModuleDeclaration"?t.body.push({type:"ExportNamedDeclaration",declaration:i,exportKind:"type",specifiers:[]}):t.body.push(...i.body)}function hQ(n,e){n._ns?UU(n._ns,e):n._ns=e}function Khe(n){const e=Object.create(null);for(const t of n)NOe(t,e);return e}function NOe(n,e){if(n.type==="ImportDeclaration")for(const t of n.specifiers)e[t.local.name]={imported:cB(t),source:n.source.value}}function dl(n,e,t=e._ownerScope||ZM(n)){try{switch(e.type){case"TSStringKeyword":return["String"];case"TSNumberKeyword":return["Number"];case"TSBooleanKeyword":return["Boolean"];case"TSObjectKeyword":return["Object"];case"TSNullKeyword":return["null"];case"TSTypeLiteral":case"TSInterfaceDeclaration":{const i=new Set,s=e.type==="TSTypeLiteral"?e.members:e.body.body;for(const r of s)r.type==="TSCallSignatureDeclaration"||r.type==="TSConstructSignatureDeclaration"?i.add("Function"):i.add("Object");return i.size?Array.from(i):["Object"]}case"TSPropertySignature":if(e.typeAnnotation)return dl(n,e.typeAnnotation.typeAnnotation,t);case"TSMethodSignature":case"TSFunctionType":return["Function"];case"TSArrayType":case"TSTupleType":return["Array"];case"TSLiteralType":switch(e.literal.type){case"StringLiteral":return["String"];case"BooleanLiteral":return["Boolean"];case"NumericLiteral":case"BigIntLiteral":return["Number"];default:return[J1]}case"TSTypeReference":{const i=Kh(n,e,t);if(i)return dl(n,i,i._ownerScope);if(e.typeName.type==="Identifier")switch(e.typeName.name){case"Array":case"Function":case"Object":case"Set":case"Map":case"WeakSet":case"WeakMap":case"Date":case"Promise":case"Error":return[e.typeName.name];case"Partial":case"Required":case"Readonly":case"Record":case"Pick":case"Omit":case"InstanceType":return["Object"];case"Uppercase":case"Lowercase":case"Capitalize":case"Uncapitalize":return["String"];case"Parameters":case"ConstructorParameters":return["Array"];case"NonNullable":if(e.typeParameters&&e.typeParameters.params[0])return dl(n,e.typeParameters.params[0],t).filter(s=>s!=="null");break;case"Extract":if(e.typeParameters&&e.typeParameters.params[1])return dl(n,e.typeParameters.params[1],t);break;case"Exclude":case"OmitThisParameter":if(e.typeParameters&&e.typeParameters.params[0])return dl(n,e.typeParameters.params[0],t);break}break}case"TSParenthesizedType":return dl(n,e.typeAnnotation,t);case"TSUnionType":return X4(n,e.types,t);case"TSIntersectionType":return X4(n,e.types,t).filter(i=>i!==J1);case"TSEnumDeclaration":return AOe(e);case"TSSymbolKeyword":return["Symbol"];case"TSIndexedAccessType":{const i=$he(n,e,t);return X4(n,i,t)}case"ClassDeclaration":return["Object"];case"TSImportType":{const i=YM(n,e.argument,t,e.argument.value),s=Kh(n,e,i);if(s)return dl(n,s,s._ownerScope);break}case"TSTypeQuery":{const i=e.exprName;if(i.type==="Identifier"){const s=t.declares[i.name];if(s)return dl(n,s,s._ownerScope)}break}}}catch{}return[J1]}function X4(n,e,t){return e.length===1?dl(n,e[0],t):[...new Set([].concat(...e.map(i=>dl(n,i,t))))]}function AOe(n){const e=new Set;for(const t of n.members)if(t.initializer)switch(t.initializer.type){case"StringLiteral":e.add("String");break;case"NumericLiteral":e.add("Number");break}return e.size?[...e]:["Number"]}function dQ({props:n},e){const t={props:{}};for(const i in n){const s=n[i];t.props[i]=v8(s.key,s.typeAnnotation.typeAnnotation,e)}return t}function v8(n,e,t,i=!0,s=!0){if(s&&e.type==="TSTypeLiteral"){const r=fQ(e,"type");if(r){const o=fQ(e,"required"),a=o&&o.type==="TSLiteralType"&&o.literal.type==="BooleanLiteral"?!o.literal.value:!0;return v8(n,r,t,a,!1)}}else if(e.type==="TSTypeReference"&&e.typeName.type==="Identifier"){if(e.typeName.name.endsWith("Constructor"))return qS(n,POe(e.typeName.name),t,i);if(e.typeName.name==="PropType"&&e.typeParameters)return qS(n,e.typeParameters.params[0],t,i)}if((e.type==="TSTypeReference"||e.type==="TSImportType")&&e.typeParameters)for(const r of e.typeParameters.params){const o=v8(n,r,t,i);if(o)return o}return qS(n,{type:"TSNullKeyword"},t,i)}function POe(n){const e=n.slice(0,-11);switch(e){case"String":case"Number":case"Boolean":return{type:`TS${e}Keyword`};case"Array":case"Function":case"Object":case"Set":case"Map":case"WeakSet":case"WeakMap":case"Date":case"Promise":return{type:"TSTypeReference",typeName:{type:"Identifier",name:e}}}return{type:"TSNullKeyword"}}function fQ(n,e){const t=n.members.find(i=>i.type==="TSPropertySignature"&&!i.computed&&S_(i.key)===e&&i.typeAnnotation);return t&&t.typeAnnotation.typeAnnotation}function ROe(n,e,t){var i;let s=e;if((e.type==="TSTypeReference"||e.type==="TSTypeQuery"||e.type==="TSImportType")&&(s=Kh(n,e,t)),!!s){if(s.type==="TSFunctionType")return(i=s.typeAnnotation)==null?void 0:i.typeAnnotation;if(s.type==="TSDeclareFunction")return s.returnType}}function Ghe(n,e,t){if(e.type==="TSTypeReference"){const s=Kh(n,e,t);s&&(e=s)}let i;return e.type==="TSUnionType"?i=e.types.flatMap(s=>Ghe(n,s,t)):i=[e],i}const Yhe="defineModel";function gQ(n,e,t){if(!Zo(e,Yhe))return!1;if(!n.options.defineModel)return mp(`defineModel() is an experimental feature and disabled by default. +To enable it, follow the RFC at https://github.com/vuejs/rfcs/discussions/503.`),!1;mp(`This project is using defineModel(), which is an experimental feature. It may receive breaking changes or be removed in the future, so use at your own risk. +To stay updated, follow the RFC at https://github.com/vuejs/rfcs/discussions/503.`),n.hasDefineModelCall=!0;const i=e.typeParameters&&e.typeParameters.params[0]||void 0;let s,r;const o=e.arguments[0]&&ld(e.arguments[0]);o&&o.type==="StringLiteral"?(s=o.value,r=e.arguments[1]):(s="modelValue",r=o),n.modelDecls[s]&&n.error(`duplicate model name ${JSON.stringify(s)}`,e);const a=r&&n.getString(r);n.modelDecls[s]={type:i,options:a,identifier:t&&t.type==="Identifier"?t.name:void 0},n.bindingMetadata[s]="props";let l="";if(r)if(r.type==="ObjectExpression"){const c=r.properties.find(u=>u.type==="ObjectProperty"&&(u.key.type==="Identifier"&&u.key.name==="local"||u.key.type==="StringLiteral"&&u.key.value==="local"));if(c)l=`{ ${n.getString(c)} }`;else for(const u of r.properties)if(u.type==="SpreadElement"||u.computed){l=a;break}}else l=a;return n.s.overwrite(n.startOffset+e.start,n.startOffset+e.end,`${n.helper("useModel")}(__props, ${JSON.stringify(s)}${l?`, ${l}`:""})`),!0}function MOe(n){if(!n.hasDefineModelCall)return;const e=!!n.options.isProd;let t="";for(const[i,{type:s,options:r}]of Object.entries(n.modelDecls)){let o=!1,a=s&&dl(n,s);if(a){const h=a.includes(J1);a=a.filter(d=>d===J1?!1:e?d==="Boolean"||d==="Function"&&r:!0),o=!e&&h&&a.length>0}let l=a&&a.length>0&&aS(a)||void 0;const c=lB([l&&`type: ${l}`,o&&"skipCheck: true"]);let u;l&&r?u=n.isTS?`{ ${c}, ...${r} }`:`Object.assign({ ${c} }, ${r})`:u=r||(l?`{ ${c} }`:"{}"),t+=` + ${JSON.stringify(i)}: ${u},`}return`{${t} + }`}const ro="defineProps",k0="withDefaults";function b8(n,e,t){if(!Zo(e,ro))return OOe(n,e,t);if(n.hasDefinePropsCall&&n.error(`duplicate ${ro}() call`,e),n.hasDefinePropsCall=!0,n.propsRuntimeDecl=e.arguments[0],n.propsRuntimeDecl)for(const i of h8(n.propsRuntimeDecl))i in n.bindingMetadata||(n.bindingMetadata[i]="props");return e.typeParameters&&(n.propsRuntimeDecl&&n.error(`${ro}() cannot accept both type and non-type arguments at the same time. Use one or the other.`,e),n.propsTypeDecl=e.typeParameters.params[0]),t&&t.type==="ObjectPattern"&&zOe(n,t),n.propsCall=e,n.propsDecl=t,!0}function OOe(n,e,t){return Zo(e,k0)?(b8(n,e.arguments[0],t)||n.error(`${k0}' first argument must be a ${ro} call.`,e.arguments[0]||e),n.propsRuntimeDecl&&n.error(`${k0} can only be used with type-based ${ro} declaration.`,e),n.propsDestructureDecl&&n.error(`${k0}() is unnecessary when using destructure with ${ro}(). +Prefer using destructure default values, e.g. const { foo = 1 } = defineProps(...).`,e.callee),n.propsRuntimeDefaults=e.arguments[1],n.propsRuntimeDefaults||n.error(`The 2nd argument of ${k0} is required.`,e),n.propsCall=e,!0):!1}function FOe(n){let e;if(n.propsRuntimeDecl){if(e=n.getString(n.propsRuntimeDecl).trim(),n.propsDestructureDecl){const i=[];for(const s in n.propsDestructuredBindings){const r=Zhe(n,s),o=Hle(s);r&&i.push(`${o}: ${r.valueString}${r.needSkipFactory?`, __skip_${o}: true`:""}`)}i.length&&(e=`/*#__PURE__*/${n.helper("mergeDefaults")}(${e}, { + ${i.join(`, + `)} +})`)}}else n.propsTypeDecl&&(e=BOe(n));const t=MOe(n);return e&&t?`/*#__PURE__*/${n.helper("mergeModels")}(${e}, ${t})`:t||e}function BOe(n){const e=WOe(n,n.propsTypeDecl);if(!e.length)return;const t=[],i=HOe(n);for(const r of e)t.push(VOe(n,r,i)),r.key in n.bindingMetadata||(n.bindingMetadata[r.key]="props");let s=`{ + ${t.join(`, + `)} + }`;return n.propsRuntimeDefaults&&!i&&(s=`/*#__PURE__*/${n.helper("mergeDefaults")}(${s}, ${n.getString(n.propsRuntimeDefaults)})`),s}function WOe(n,e){const t=[],i=Xr(n,e);for(const s in i.props){const r=i.props[s];let o=dl(n,r),a=!1;o.includes(J1)&&(o.includes("Boolean")||o.includes("Function")?(o=o.filter(l=>l!==J1),a=!0):o=["null"]),t.push({key:s,required:!r.optional,type:o||["null"],skipCheck:a})}return t}function VOe(n,{key:e,required:t,type:i,skipCheck:s},r){let o;const a=Zhe(n,e,i);if(a)o=`default: ${a.valueString}${a.needSkipFactory?", skipFactory: true":""}`;else if(r){const c=n.propsRuntimeDefaults.properties.find(u=>u.type==="SpreadElement"?!1:jz(u.key,u.computed)===e);c&&(c.type==="ObjectProperty"?o=`default: ${n.getString(c.value)}`:o=`${c.async?"async ":""}${c.kind!=="method"?`${c.kind} `:""}default() ${n.getString(c.body)}`)}const l=Hle(e);return n.options.isProd?i.some(c=>c==="Boolean"||(!r||o)&&c==="Function")?`${l}: { ${lB([`type: ${aS(i)}`,o])} }`:n.isCE?o?`${l}: ${`{ ${o}, type: ${aS(i)} }`}`:`${l}: {type: ${aS(i)}}`:`${l}: ${o?`{ ${o} }`:"{}"}`:`${l}: { ${lB([`type: ${aS(i)}`,`required: ${t}`,s&&"skipCheck: true",o])} }`}function HOe(n){return!!(n.propsRuntimeDefaults&&n.propsRuntimeDefaults.type==="ObjectExpression"&&n.propsRuntimeDefaults.properties.every(e=>e.type!=="SpreadElement"&&(!e.computed||e.key.type.endsWith("Literal"))))}function Zhe(n,e,t){const i=n.propsDestructuredBindings[e],s=i&&i.default;if(s){const r=n.getString(s),o=ld(s);if(t&&t.length&&!t.includes("null")){const c=$Oe(o);c&&!t.includes(c)&&n.error(`Default value of prop "${e}" does not match declared type.`,o)}const a=!t&&(oc(o)||o.type==="Identifier");return{valueString:!a&&!Vle(o)&&!(t!=null&&t.includes("Function"))?`() => (${r})`:r,needSkipFactory:a}}}function $Oe(n){switch(n.type){case"StringLiteral":return"String";case"NumericLiteral":return"Number";case"BooleanLiteral":return"Boolean";case"ObjectExpression":return"Object";case"ArrayExpression":return"Array";case"FunctionExpression":case"ArrowFunctionExpression":return"Function"}}function zOe(n,e){if(!n.options.propsDestructure&&!n.options.reactivityTransform)return;mp(`This project is using reactive props destructure, which is an experimental feature. It may receive breaking changes or be removed in the future, so use at your own risk. +To stay updated, follow the RFC at https://github.com/vuejs/rfcs/discussions/502.`),n.propsDestructureDecl=e;const t=(i,s,r)=>{n.propsDestructuredBindings[i]={local:s,default:r},s!==i&&(n.bindingMetadata[s]="props-aliased",(n.bindingMetadata.__propsAliases||(n.bindingMetadata.__propsAliases={}))[s]=i)};for(const i of e.properties)if(i.type==="ObjectProperty"){const s=jz(i.key,i.computed);if(s||n.error(`${ro}() destructure cannot use computed key.`,i.key),i.value.type==="AssignmentPattern"){const{left:r,right:o}=i.value;r.type!=="Identifier"&&n.error(`${ro}() destructure does not support nested patterns.`,r),t(s,r.name,o)}else i.value.type==="Identifier"?t(s,i.value.name):n.error(`${ro}() destructure does not support nested patterns.`,i.value)}else n.propsDestructureRestId=i.argument.name,n.bindingMetadata[n.propsDestructureRestId]="setup-reactive-const"}function UOe(n,e){if(!n.options.propsDestructure&&!n.options.reactivityTransform)return;const t={},i=[t];let s=t;const r=new WeakSet,o=[],a=Object.create(null);for(const m in n.propsDestructuredBindings){const{local:_}=n.propsDestructuredBindings[m];t[_]=!0,a[_]=m}function l(){i.push(s=Object.create(s))}function c(){i.pop(),s=i[i.length-1]||null}function u(m){r.add(m),s?s[m.name]=!1:n.error("registerBinding called without active scope, something is wrong.",m)}function h(m,_=!1){for(const b of m.body)if(b.type==="VariableDeclaration")d(b,_);else if(b.type==="FunctionDeclaration"||b.type==="ClassDeclaration"){if(b.declare||!b.id)continue;u(b.id)}else(b.type==="ForOfStatement"||b.type==="ForInStatement")&&b.left.type==="VariableDeclaration"?d(b.left):b.type==="ExportNamedDeclaration"&&b.declaration&&b.declaration.type==="VariableDeclaration"?d(b.declaration,_):b.type==="LabeledStatement"&&b.body.type==="VariableDeclaration"&&d(b.body,_)}function d(m,_=!1){if(!m.declare)for(const b of m.declarations){const y=_&&b.init&&Zo(ld(b.init),"defineProps");for(const w of gl(b.id))y?r.add(w):u(w)}}function f(m,_,b){(_.type==="AssignmentExpression"&&m===_.left||_.type==="UpdateExpression")&&n.error("Cannot assign to destructured props as they are readonly.",m),mv(_)&&_.shorthand?(!_.inPattern||pv(_,b))&&n.s.appendLeft(m.end+n.startOffset,`: ${Gb(a[m.name])}`):n.s.overwrite(m.start+n.startOffset,m.end+n.startOffset,Gb(a[m.name]))}function g(m,_,b=_){if(Zo(m,b)){const y=ld(m.arguments[0]);y.type==="Identifier"&&s[y.name]&&n.error(`"${y.name}" is a destructured prop and should not be passed directly to ${_}(). Pass a getter () => ${y.name} instead.`,y)}}const p=n.scriptSetupAst;h(p,!0),iE(p,{enter(m,_){if(_&&o.push(_),_&&_.type.startsWith("TS")&&_.type!=="TSAsExpression"&&_.type!=="TSNonNullExpression"&&_.type!=="TSTypeAssertion")return this.skip();if(g(m,"watch",e.watch),g(m,"toRef",e.toRef),oc(m)){l(),xM(m,u),m.body.type==="BlockStatement"&&h(m.body);return}if(m.type==="CatchClause"){l(),m.param&&m.param.type==="Identifier"&&u(m.param),h(m.body);return}if(m.type==="BlockStatement"&&!oc(_)){l(),h(m);return}m.type==="Identifier"&&LM(m,_,o)&&!r.has(m)&&s[m.name]&&f(m,_,o)},leave(m,_){_&&o.pop(),(m.type==="BlockStatement"&&!oc(_)||oc(m))&&c()}})}const i_="defineEmits";function pQ(n,e,t){return Zo(e,i_)?(n.hasDefineEmitCall&&n.error(`duplicate ${i_}() call`,e),n.hasDefineEmitCall=!0,n.emitsRuntimeDecl=e.arguments[0],e.typeParameters&&(n.emitsRuntimeDecl&&n.error(`${i_}() cannot accept both type and non-type arguments at the same time. Use one or the other.`,e),n.emitsTypeDecl=e.typeParameters.params[0]),n.emitDecl=t,!0):!1}function jOe(n){let e="";if(n.emitsRuntimeDecl)e=n.getString(n.emitsRuntimeDecl).trim();else if(n.emitsTypeDecl){const t=qOe(n);e=t.size?`[${Array.from(t).map(i=>JSON.stringify(i)).join(", ")}]`:""}if(n.hasDefineModelCall){let t=`[${Object.keys(n.modelDecls).map(i=>JSON.stringify(`update:${i}`)).join(", ")}]`;e=e?`/*#__PURE__*/${n.helper("mergeModels")}(${e}, ${t})`:t}return e}function qOe(n){const e=new Set,t=n.emitsTypeDecl;if(t.type==="TSFunctionType")return mQ(n,t.parameters[0],e),e;const{props:i,calls:s}=Xr(n,t);let r=!1;for(const o in i)e.add(o),r=!0;if(s){r&&n.error("defineEmits() type cannot mixed call signature and property syntax.",t);for(const o of s)mQ(n,o.parameters[0],e)}return e}function mQ(n,e,t){if(e.type==="Identifier"&&e.typeAnnotation&&e.typeAnnotation.type==="TSTypeAnnotation"){const i=Ghe(n,e.typeAnnotation.typeAnnotation);for(const s of i)s.type==="TSLiteralType"&&s.literal.type!=="UnaryExpression"&&s.literal.type!=="TemplateLiteral"&&t.add(String(s.literal.value))}}const mA="defineExpose";function KOe(n,e){return Zo(e,mA)?(n.hasDefineExposeCall&&n.error(`duplicate ${mA}() call`,e),n.hasDefineExposeCall=!0,!0):!1}const HT="defineSlots";function _Q(n,e,t){return Zo(e,HT)?(n.hasDefineSlotsCall&&n.error(`duplicate ${HT}() call`,e),n.hasDefineSlotsCall=!0,e.arguments.length>0&&n.error(`${HT}() cannot accept arguments`,e),t&&n.s.overwrite(n.startOffset+e.start,n.startOffset+e.end,`${n.helper("useSlots")}()`),!0):!1}const Kd="defineOptions";function vQ(n,e){if(!Zo(e,Kd))return!1;if(n.hasDefineOptionsCall&&n.error(`duplicate ${Kd}() call`,e),e.typeParameters&&n.error(`${Kd}() cannot accept type arguments`,e),!e.arguments[0])return!0;n.hasDefineOptionsCall=!0,n.optionsRuntimeDecl=ld(e.arguments[0]);let t,i,s,r;if(n.optionsRuntimeDecl.type==="ObjectExpression")for(const o of n.optionsRuntimeDecl.properties)(o.type==="ObjectProperty"||o.type==="ObjectMethod")&&o.key.type==="Identifier"&&(o.key.name==="props"&&(t=o),o.key.name==="emits"&&(i=o),o.key.name==="expose"&&(s=o),o.key.name==="slots"&&(r=o));return t&&n.error(`${Kd}() cannot be used to declare props. Use ${ro}() instead.`,t),i&&n.error(`${Kd}() cannot be used to declare emits. Use ${i_}() instead.`,i),s&&n.error(`${Kd}() cannot be used to declare expose. Use ${mA}() instead.`,s),r&&n.error(`${Kd}() cannot be used to declare slots. Use ${HT}() instead.`,r),!0}function GOe(n,e,t,i){const s=e.argument.extra&&e.argument.extra.parenthesized?e.argument.extra.parenStart:e.argument.start,r=n.startOffset,o=n.descriptor.source.slice(s+r,e.argument.end+r),a=/\bawait\b/.test(o);n.s.overwrite(e.start+r,s+r,`${t?";":""}( + ([__temp,__restore] = ${n.helper("withAsyncContext")}(${a?"async ":""}() => `),n.s.appendLeft(e.end+r,`)), + ${i?"":"__temp = "}await __temp, + __restore()${i?"":`, + __temp`} +)`)}var YOe=Object.defineProperty,ZOe=Object.defineProperties,XOe=Object.getOwnPropertyDescriptors,bQ=Object.getOwnPropertySymbols,QOe=Object.prototype.hasOwnProperty,JOe=Object.prototype.propertyIsEnumerable,yQ=(n,e,t)=>e in n?YOe(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,pw=(n,e)=>{for(var t in e||(e={}))QOe.call(e,t)&&yQ(n,t,e[t]);if(bQ)for(var t of bQ(e))JOe.call(e,t)&&yQ(n,t,e[t]);return n},Q4=(n,e)=>ZOe(n,XOe(e));function e2e(n,e){var t;e.id||mp("compileScript now requires passing the `id` option.\nUpgrade your vite or vue-loader version for compatibility with the latest experimental proposals.");const i=new dOe(n,e),{script:s,scriptSetup:r,source:o,filename:a}=n,l=e.hoistStatic!==!1&&!s,c=e.id?e.id.replace(/^data-v-/,""):"",u=s&&s.lang,h=r&&r.lang,d=!!e.reactivityTransform;let f;if(!r){if(!s)throw new Error("[@vue/compiler-sfc] SFC contains no <script> tags.");return hOe(i,c)}if(s&&u!==h)throw new Error("[@vue/compiler-sfc] <script> and <script setup> must have the same language type.");if(h&&!i.isJS&&!i.isTS)return r;const g=Object.create(null),p=Object.create(null);let m,_=!1,b=!1;const y=i.startOffset,w=i.endOffset,S=s&&s.loc.start.offset,E=s&&s.loc.end.offset;function L(W){const Y=W.start+y;let X=W.end+y;for(W.trailingComments&&W.trailingComments.length>0&&(X=W.trailingComments[W.trailingComments.length-1].end+y);X<=o.length&&/\s/.test(o.charAt(X));)X++;i.s.move(Y,X,0)}function k(W,Y,X,z,le,J){let be=J;J&&i.isTS&&n.template&&!n.template.src&&!n.template.lang&&(be=ece(Y,n)),i.userImports[Y]={isType:z,imported:X,local:Y,source:W,isFromSetup:le,isUsedInTemplate:be}}function x(W,Y){W&&pC(W,X=>{const z=p[X.name];z&&z!=="literal-const"&&i.error(`\`${Y}()\` in <script setup> cannot reference locally declared variables because it will be hoisted outside of the setup() function. If your component options require initialization in the module scope, use a separate normal <script> to export the options instead.`,X)})}const I=i.scriptAst,N=i.scriptSetupAst;if(I){for(const W of I.body)if(W.type==="ImportDeclaration")for(const Y of W.specifiers){const X=cB(Y);k(W.source.value,Y.local.name,X,W.importKind==="type"||Y.type==="ImportSpecifier"&&Y.importKind==="type",!1,!e.inlineTemplate)}}for(const W of N.body)if(W.type==="ImportDeclaration"){L(W);let Y=0;const X=z=>{const le=z>Y;Y++;const J=W.specifiers[z],be=W.specifiers[z+1];i.s.remove(le?W.specifiers[z-1].end+y:J.start+y,be&&!le?be.start+y:J.end+y)};for(let z=0;z<W.specifiers.length;z++){const le=W.specifiers[z],J=le.local.name,be=cB(le),fe=W.source.value,ge=i.userImports[J];fe==="vue"&&(be===ro||be===i_||be===mA)?(mp(`\`${be}\` is a compiler macro and no longer needs to be imported.`),X(z)):ge?ge.source===fe&&ge.imported===be?X(z):i.error("different imports aliased to same local name.",le):k(fe,J,be,W.importKind==="type"||le.type==="ImportSpecifier"&&le.importKind==="type",!0,!e.inlineTemplate)}W.specifiers.length&&Y===W.specifiers.length&&i.s.remove(W.start+y,W.end+y)}const T={};for(const W in i.userImports){const{source:Y,imported:X,local:z}=i.userImports[W];Y==="vue"&&(T[X]=z)}if(s&&I){for(const W of I.body)if(W.type==="ExportDefaultDeclaration"){m=W;let Y;if(m.declaration.type==="ObjectExpression"?Y=m.declaration.properties:m.declaration.type==="CallExpression"&&m.declaration.arguments[0]&&m.declaration.arguments[0].type==="ObjectExpression"&&(Y=m.declaration.arguments[0].properties),Y)for(const le of Y)le.type==="ObjectProperty"&&le.key.type==="Identifier"&&le.key.name==="name"&&(i.hasDefaultExportName=!0),(le.type==="ObjectMethod"||le.type==="ObjectProperty")&&le.key.type==="Identifier"&&le.key.name==="render"&&(i.hasDefaultExportRender=!0);const X=W.start+S,z=W.declaration.start+S;i.s.overwrite(X,z,`const ${S0} = `)}else if(W.type==="ExportNamedDeclaration"){const Y=W.specifiers.find(X=>X.exported.type==="Identifier"&&X.exported.name==="default");Y&&(m=W,W.specifiers.length>1?i.s.remove(Y.start+S,Y.end+S):i.s.remove(W.start+S,W.end+S),W.source?i.s.prepend(`import { ${Y.local.name} as ${S0} } from '${W.source.value}' +`):i.s.appendLeft(E,` +const ${S0} = ${Y.local.name} +`)),W.declaration&&J4("script",W.declaration,g,T,l)}else(W.type==="VariableDeclaration"||W.type==="FunctionDeclaration"||W.type==="ClassDeclaration"||W.type==="TSEnumDeclaration")&&!W.declare&&J4("script",W,g,T,l);if(d&&pA(s.content)){const{rootRefs:W,importedHelpers:Y}=iL(I,i.s,S);f=W;for(const X of Y)i.helperImports.add(X)}S>y&&(/\n$/.test(s.content.trim())||i.s.appendLeft(E,` +`),i.s.move(S,E,0))}for(const W of N.body){if(W.type==="ExpressionStatement"){const X=ld(W.expression);if(b8(i,X)||pQ(i,X)||vQ(i,X)||_Q(i,X))i.s.remove(W.start+y,W.end+y);else if(KOe(i,X)){const z=X.callee;i.s.overwrite(z.start+y,z.end+y,"__expose")}else gQ(i,X)}if(W.type==="VariableDeclaration"&&!W.declare){const X=W.declarations.length;let z=X,le;for(let J=0;J<X;J++){const be=W.declarations[J],fe=be.init&&ld(be.init);if(fe){vQ(i,fe)&&i.error(`${Kd}() has no returning value, it cannot be assigned.`,W);const ge=b8(i,fe,be.id),se=!ge&&pQ(i,fe,be.id);if(!se&&(_Q(i,fe,be.id)||gQ(i,fe,be.id)),ge&&!i.propsDestructureRestId&&i.propsDestructureDecl)if(z===1)i.s.remove(W.start+y,W.end+y);else{let H=be.start+y,te=be.end+y;J===X-1?H=W.declarations[le].end+y:te=W.declarations[J+1].start+y,i.s.remove(H,te),z--}else se?i.s.overwrite(y+fe.start,y+fe.end,"__emit"):le=J}}}let Y=!1;if((W.type==="VariableDeclaration"||W.type==="FunctionDeclaration"||W.type==="ClassDeclaration"||W.type==="TSEnumDeclaration")&&!W.declare&&(Y=J4("scriptSetup",W,p,T,l)),l&&Y&&L(W),W.type==="VariableDeclaration"&&!W.declare||W.type.endsWith("Statement")){const X=[N.body];iE(W,{enter(z,le){if(oc(z)&&this.skip(),z.type==="BlockStatement"&&X.push(z.body),z.type==="AwaitExpression"){_=!0;const be=X[X.length-1].some((fe,ge)=>(X.length===1||ge>0)&&fe.type==="ExpressionStatement"&&fe.start===z.start);GOe(i,z,be,le.type==="ExpressionStatement")}},exit(z){z.type==="BlockStatement"&&X.pop()}})}(W.type==="ExportNamedDeclaration"&&W.exportKind!=="type"||W.type==="ExportAllDeclaration"||W.type==="ExportDefaultDeclaration")&&i.error("<script setup> cannot contain ES module exports. If you are using a previous version of <script setup>, please consult the updated RFC at https://github.com/vuejs/rfcs/pull/227.",W),i.isTS&&(W.type.startsWith("TS")||W.type==="ExportNamedDeclaration"&&W.exportKind==="type"||W.type==="VariableDeclaration"&&W.declare)&&W.type!=="TSEnumDeclaration"&&L(W)}if(i.propsDestructureDecl&&UOe(i,T),d&&(f||pA(r.content))){const{rootRefs:W,importedHelpers:Y}=iL(N,i.s,y,f);f=f?[...f,...W]:W;for(const X of Y)i.helperImports.add(X)}x(i.propsRuntimeDecl,ro),x(i.propsRuntimeDefaults,ro),x(i.propsDestructureDecl,ro),x(i.emitsRuntimeDecl,i_),x(i.optionsRuntimeDecl,Kd),s?y<S?(i.s.remove(0,y),i.s.remove(w,S),i.s.remove(E,o.length)):(i.s.remove(0,S),i.s.remove(E,y),i.s.remove(w,o.length)):(i.s.remove(0,y),i.s.remove(w,o.length)),I&&Object.assign(i.bindingMetadata,Vhe(I.body));for(const[W,{isType:Y,imported:X,source:z}]of Object.entries(i.userImports))Y||(i.bindingMetadata[W]=X==="*"||X==="default"&&z.endsWith(".vue")||z==="vue"?"setup-const":"setup-maybe-ref");for(const W in g)i.bindingMetadata[W]=g[W];for(const W in p)i.bindingMetadata[W]=p[W];if(f)for(const W of f)i.bindingMetadata[W]="setup-ref";n.cssVars.length&&!((t=e.templateOptions)!=null&&t.ssr)&&(i.helperImports.add(tA),i.helperImports.add("unref"),i.s.prependLeft(y,` +${Gle(n.cssVars,i.bindingMetadata,c,!!e.isProd)} +`));let P="__props";if(i.propsTypeDecl&&(P+=": any"),i.propsDecl&&(i.propsDestructureRestId?(i.s.overwrite(y+i.propsCall.start,y+i.propsCall.end,`${i.helper("createPropsRestProxy")}(__props, ${JSON.stringify(Object.keys(i.propsDestructuredBindings))})`),i.s.overwrite(y+i.propsDestructureDecl.start,y+i.propsDestructureDecl.end,i.propsDestructureRestId)):i.propsDestructureDecl||i.s.overwrite(y+i.propsCall.start,y+i.propsCall.end,"__props")),_){const W=i.isTS?": any":"";i.s.prependLeft(y,` +let __temp${W}, __restore${W} +`)}const R=i.hasDefineExposeCall||!e.inlineTemplate?["expose: __expose"]:[];i.emitDecl&&R.push("emit: __emit"),R.length&&(P+=`, { ${R.join(", ")} }`);let F;if(!e.inlineTemplate||!n.template&&i.hasDefaultExportRender){const W=pw(pw({},g),p);for(const Y in i.userImports)!i.userImports[Y].isType&&i.userImports[Y].isUsedInTemplate&&(W[Y]=!0);F="{ ";for(const Y in W)if(W[Y]===!0&&i.userImports[Y].source!=="vue"&&!i.userImports[Y].source.endsWith(".vue"))F+=`get ${Y}() { return ${Y} }, `;else if(i.bindingMetadata[Y]==="setup-let"){const X=Y==="v"?"_v":"v";F+=`get ${Y}() { return ${Y} }, set ${Y}(${X}) { ${Y} = ${X} }, `}else F+=`${Y}, `;F=F.replace(/, $/,"")+" }"}else if(n.template&&!n.template.src){e.templateOptions&&e.templateOptions.ssr&&(b=!0);const{code:W,ast:Y,preamble:X,tips:z,errors:le}=hue(Q4(pw({filename:a,source:n.template.content,inMap:n.template.map},e.templateOptions),{id:c,scoped:n.styles.some(be=>be.scoped),isProd:e.isProd,ssrCssVars:n.cssVars,compilerOptions:Q4(pw({},e.templateOptions&&e.templateOptions.compilerOptions),{inline:!0,isTS:i.isTS,bindingMetadata:i.bindingMetadata})}));z.length&&z.forEach(mp);const J=le[0];if(typeof J=="string")throw new Error(J);if(J)throw J.loc&&(J.message+=` + +`+n.filename+` +`+Yb(o,J.loc.start.offset,J.loc.end.offset)+` +`),J;X&&i.s.prepend(X),Y&&Y.helpers.has(b_)&&i.helperImports.delete("unref"),F=W}else F="() => {}";e.inlineTemplate?i.s.appendRight(w,` +return ${F} +} + +`):i.s.appendRight(w,` +const __returned__ = ${F} +Object.defineProperty(__returned__, '__isScriptSetup', { enumerable: false, value: true }) +return __returned__ +} + +`);const j=e.genDefaultAs?`const ${e.genDefaultAs} =`:"export default";let K="";if(!i.hasDefaultExportName&&a&&a!==ice){const W=a.match(/([^/\\]+)\.\w+$/);W&&(K+=` + __name: '${W[1]}',`)}b&&(K+=` + __ssrInlineRender: true,`);const Z=FOe(i);Z&&(K+=` + props: ${Z},`);const q=jOe(i);q&&(K+=` + emits: ${q},`);let re="";i.optionsRuntimeDecl&&(re=r.content.slice(i.optionsRuntimeDecl.start,i.optionsRuntimeDecl.end).trim());const G=i.hasDefineExposeCall||e.inlineTemplate?"":` __expose(); +`;if(i.isTS){const W=(m?` + ...${S0},`:"")+(re?` + ...${re},`:"");i.s.prependLeft(y,` +${j} /*#__PURE__*/${i.helper("defineComponent")}({${W}${K} + ${_?"async ":""}setup(${P}) { +${G}`),i.s.appendRight(w,"})")}else m||re?(i.s.prependLeft(y,` +${j} /*#__PURE__*/Object.assign(${m?`${S0}, `:""}${re?`${re}, `:""}{${K} + ${_?"async ":""}setup(${P}) { +${G}`),i.s.appendRight(w,"})")):(i.s.prependLeft(y,` +${j} {${K} + ${_?"async ":""}setup(${P}) { +${G}`),i.s.appendRight(w,"}"));return i.helperImports.size>0&&i.s.prepend(`import { ${[...i.helperImports].map(W=>`${W} as _${W}`).join(", ")} } from 'vue' +`),i.s.trim(),Q4(pw({},r),{bindings:i.bindingMetadata,imports:i.userImports,content:i.s.toString(),map:e.sourceMap!==!1?i.s.generateMap({source:a,hires:!0,includeContent:!0}):void 0,scriptAst:I==null?void 0:I.body,scriptSetupAst:N==null?void 0:N.body,deps:i.deps?[...i.deps]:void 0})}function db(n,e,t){n[e.name]=t}function J4(n,e,t,i,s){let r=!1;if(e.type==="VariableDeclaration"){const o=e.kind==="const";r=o&&e.declarations.every(a=>a.id.type==="Identifier"&&Yc(a.init));for(const{id:a,init:l}of e.declarations){const c=l&&ld(l),u=!!(o&&Zo(c,h=>h===ro||h===i_||h===k0));if(a.type==="Identifier"){let h;const d=i.reactive;(s||n==="script")&&(r||o&&Yc(c))?h="literal-const":Zo(c,d)?h=o?"setup-reactive-const":"setup-let":u||o&&Jhe(c,d)?h=Zo(c,ro)?"setup-reactive-const":"setup-const":o?Zo(c,f=>f===i.ref||f===i.computed||f===i.shallowRef||f===i.customRef||f===i.toRef||f===Yhe)?h="setup-ref":h="setup-maybe-ref":h="setup-let",db(t,a,h)}else{if(Zo(c,ro))continue;a.type==="ObjectPattern"?Xhe(a,t,o,u):a.type==="ArrayPattern"&&Qhe(a,t,o,u)}}}else e.type==="TSEnumDeclaration"?(r=e.members.every(o=>!o.initializer||Yc(o.initializer)),t[e.id.name]=r?"literal-const":"setup-const"):(e.type==="FunctionDeclaration"||e.type==="ClassDeclaration")&&(t[e.id.name]="setup-const");return r}function Xhe(n,e,t,i=!1){for(const s of n.properties)if(s.type==="ObjectProperty")if(s.key.type==="Identifier"&&s.key===s.value){const r=i?"setup-const":t?"setup-maybe-ref":"setup-let";db(e,s.key,r)}else jU(s.value,e,t,i);else{const r=t?"setup-const":"setup-let";db(e,s.argument,r)}}function Qhe(n,e,t,i=!1){for(const s of n.elements)s&&jU(s,e,t,i)}function jU(n,e,t,i=!1){if(n.type==="Identifier")db(e,n,i?"setup-const":t?"setup-maybe-ref":"setup-let");else if(n.type==="RestElement"){const s=t?"setup-const":"setup-let";db(e,n.argument,s)}else if(n.type==="ObjectPattern")Xhe(n,e,t);else if(n.type==="ArrayPattern")Qhe(n,e,t);else if(n.type==="AssignmentPattern")if(n.left.type==="Identifier"){const s=i?"setup-const":t?"setup-maybe-ref":"setup-let";db(e,n.left,s)}else jU(n.left,e,t)}function Jhe(n,e){if(Zo(n,e))return!0;switch(n.type){case"UnaryExpression":case"BinaryExpression":case"ArrayExpression":case"ObjectExpression":case"FunctionExpression":case"ArrowFunctionExpression":case"UpdateExpression":case"ClassExpression":case"TaggedTemplateExpression":return!0;case"SequenceExpression":return Jhe(n.expressions[n.expressions.length-1],e);default:return!!Vle(n)}}function Yc(n){switch(n=ld(n),n.type){case"UnaryExpression":return Yc(n.argument);case"LogicalExpression":case"BinaryExpression":return Yc(n.left)&&Yc(n.right);case"ConditionalExpression":return Yc(n.test)&&Yc(n.consequent)&&Yc(n.alternate);case"SequenceExpression":case"TemplateLiteral":return n.expressions.every(e=>Yc(e));case"ParenthesizedExpression":return Yc(n.expression);case"StringLiteral":case"NumericLiteral":case"BooleanLiteral":case"NullLiteral":case"BigIntLiteral":return!0}return!1}const t2e="3.3.11",i2e=uB,ede=iE,CQ=Object.freeze(Object.defineProperty({__proto__:null,MagicString:qf,babelParse:Hp,compileScript:e2e,compileStyle:LMe,compileStyleAsync:xMe,compileTemplate:hue,extractIdentifiers:gl,generateCodeFrame:Yb,inferRuntimeType:dl,invalidateTypeCache:EOe,isInDestructureAssignment:pv,isStaticProperty:mv,parse:nce,parseCache:i2e,registerTS:kOe,resolveTypeElements:Xr,rewriteDefault:iOe,rewriteDefaultAST:BU,shouldTransformRef:pA,transformRef:ZMe,transformRefAST:iL,version:t2e,walk:ede,walkIdentifiers:pC},Symbol.toStringTag,{value:"Module"}));var Fi=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function n2e(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}function s2e(n){if(n.__esModule)return n;var e=n.default;if(typeof e=="function"){var t=function i(){return this instanceof i?Reflect.construct(e,arguments,this.constructor):e.apply(this,arguments)};t.prototype=e.prototype}else t={};return Object.defineProperty(t,"__esModule",{value:!0}),Object.keys(n).forEach(function(i){var s=Object.getOwnPropertyDescriptor(n,i);Object.defineProperty(t,i,s.get?s:{enumerable:!0,get:function(){return n[i]}})}),t}var Er=Uint8Array,Cl=Uint16Array,qU=Int32Array,XM=new Er([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),QM=new Er([0,0,0,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,13,13,0,0]),y8=new Er([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),tde=function(n,e){for(var t=new Cl(31),i=0;i<31;++i)t[i]=e+=1<<n[i-1];for(var s=new qU(t[30]),i=1;i<30;++i)for(var r=t[i];r<t[i+1];++r)s[r]=r-t[i]<<5|i;return{b:t,r:s}},ide=tde(XM,2),nde=ide.b,C8=ide.r;nde[28]=258,C8[258]=28;var sde=tde(QM,0),r2e=sde.b,wQ=sde.r,w8=new Cl(32768);for(var ms=0;ms<32768;++ms){var Cg=(ms&43690)>>1|(ms&21845)<<1;Cg=(Cg&52428)>>2|(Cg&13107)<<2,Cg=(Cg&61680)>>4|(Cg&3855)<<4,w8[ms]=((Cg&65280)>>8|(Cg&255)<<8)>>1}var Gh=function(n,e,t){for(var i=n.length,s=0,r=new Cl(e);s<i;++s)n[s]&&++r[n[s]-1];var o=new Cl(e);for(s=1;s<e;++s)o[s]=o[s-1]+r[s-1]<<1;var a;if(t){a=new Cl(1<<e);var l=15-e;for(s=0;s<i;++s)if(n[s])for(var c=s<<4|n[s],u=e-n[s],h=o[n[s]-1]++<<u,d=h|(1<<u)-1;h<=d;++h)a[w8[h]>>l]=c}else for(a=new Cl(i),s=0;s<i;++s)n[s]&&(a[s]=w8[o[n[s]-1]++]>>15-n[s]);return a},Up=new Er(288);for(var ms=0;ms<144;++ms)Up[ms]=8;for(var ms=144;ms<256;++ms)Up[ms]=9;for(var ms=256;ms<280;++ms)Up[ms]=7;for(var ms=280;ms<288;++ms)Up[ms]=8;var nL=new Er(32);for(var ms=0;ms<32;++ms)nL[ms]=5;var o2e=Gh(Up,9,0),a2e=Gh(Up,9,1),l2e=Gh(nL,5,0),c2e=Gh(nL,5,1),e5=function(n){for(var e=n[0],t=1;t<n.length;++t)n[t]>e&&(e=n[t]);return e},Vc=function(n,e,t){var i=e/8|0;return(n[i]|n[i+1]<<8)>>(e&7)&t},t5=function(n,e){var t=e/8|0;return(n[t]|n[t+1]<<8|n[t+2]<<16)>>(e&7)},KU=function(n){return(n+7)/8|0},JM=function(n,e,t){return(e==null||e<0)&&(e=0),(t==null||t>n.length)&&(t=n.length),new Er(n.subarray(e,t))},u2e=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],tc=function(n,e,t){var i=new Error(e||u2e[n]);if(i.code=n,Error.captureStackTrace&&Error.captureStackTrace(i,tc),!t)throw i;return i},h2e=function(n,e,t,i){var s=n.length,r=i?i.length:0;if(!s||e.f&&!e.l)return t||new Er(0);var o=!t,a=o||e.i!=2,l=e.i;o&&(t=new Er(s*3));var c=function(se){var H=t.length;if(se>H){var te=new Er(Math.max(H*2,se));te.set(t),t=te}},u=e.f||0,h=e.p||0,d=e.b||0,f=e.l,g=e.d,p=e.m,m=e.n,_=s*8;do{if(!f){u=Vc(n,h,1);var b=Vc(n,h+1,3);if(h+=3,b)if(b==1)f=a2e,g=c2e,p=9,m=5;else if(b==2){var E=Vc(n,h,31)+257,L=Vc(n,h+10,15)+4,k=E+Vc(n,h+5,31)+1;h+=14;for(var x=new Er(k),I=new Er(19),N=0;N<L;++N)I[y8[N]]=Vc(n,h+N*3,7);h+=L*3;for(var T=e5(I),P=(1<<T)-1,R=Gh(I,T,1),N=0;N<k;){var F=R[Vc(n,h,P)];h+=F&15;var y=F>>4;if(y<16)x[N++]=y;else{var j=0,K=0;for(y==16?(K=3+Vc(n,h,3),h+=2,j=x[N-1]):y==17?(K=3+Vc(n,h,7),h+=3):y==18&&(K=11+Vc(n,h,127),h+=7);K--;)x[N++]=j}}var Z=x.subarray(0,E),q=x.subarray(E);p=e5(Z),m=e5(q),f=Gh(Z,p,1),g=Gh(q,m,1)}else tc(1);else{var y=KU(h)+4,w=n[y-4]|n[y-3]<<8,S=y+w;if(S>s){l&&tc(0);break}a&&c(d+w),t.set(n.subarray(y,S),d),e.b=d+=w,e.p=h=S*8,e.f=u;continue}if(h>_){l&&tc(0);break}}a&&c(d+131072);for(var re=(1<<p)-1,G=(1<<m)-1,W=h;;W=h){var j=f[t5(n,h)&re],Y=j>>4;if(h+=j&15,h>_){l&&tc(0);break}if(j||tc(2),Y<256)t[d++]=Y;else if(Y==256){W=h,f=null;break}else{var X=Y-254;if(Y>264){var N=Y-257,z=XM[N];X=Vc(n,h,(1<<z)-1)+nde[N],h+=z}var le=g[t5(n,h)&G],J=le>>4;le||tc(3),h+=le&15;var q=r2e[J];if(J>3){var z=QM[J];q+=t5(n,h)&(1<<z)-1,h+=z}if(h>_){l&&tc(0);break}a&&c(d+131072);var be=d+X;if(d<q){var fe=r-q,ge=Math.min(q,be);for(fe+d<0&&tc(3);d<ge;++d)t[d]=i[fe+d]}for(;d<be;++d)t[d]=t[d-q]}}e.l=f,e.p=W,e.b=d,e.f=u,f&&(u=1,e.m=p,e.d=g,e.n=m)}while(!u);return d!=t.length&&o?JM(t,0,d):t.subarray(0,d)},Rd=function(n,e,t){t<<=e&7;var i=e/8|0;n[i]|=t,n[i+1]|=t>>8},mw=function(n,e,t){t<<=e&7;var i=e/8|0;n[i]|=t,n[i+1]|=t>>8,n[i+2]|=t>>16},i5=function(n,e){for(var t=[],i=0;i<n.length;++i)n[i]&&t.push({s:i,f:n[i]});var s=t.length,r=t.slice();if(!s)return{t:ode,l:0};if(s==1){var o=new Er(t[0].s+1);return o[t[0].s]=1,{t:o,l:1}}t.sort(function(S,E){return S.f-E.f}),t.push({s:-1,f:25001});var a=t[0],l=t[1],c=0,u=1,h=2;for(t[0]={s:-1,f:a.f+l.f,l:a,r:l};u!=s-1;)a=t[t[c].f<t[h].f?c++:h++],l=t[c!=u&&t[c].f<t[h].f?c++:h++],t[u++]={s:-1,f:a.f+l.f,l:a,r:l};for(var d=r[0].s,i=1;i<s;++i)r[i].s>d&&(d=r[i].s);var f=new Cl(d+1),g=S8(t[u-1],f,0);if(g>e){var i=0,p=0,m=g-e,_=1<<m;for(r.sort(function(E,L){return f[L.s]-f[E.s]||E.f-L.f});i<s;++i){var b=r[i].s;if(f[b]>e)p+=_-(1<<g-f[b]),f[b]=e;else break}for(p>>=m;p>0;){var y=r[i].s;f[y]<e?p-=1<<e-f[y]++-1:++i}for(;i>=0&&p;--i){var w=r[i].s;f[w]==e&&(--f[w],++p)}g=e}return{t:new Er(f),l:g}},S8=function(n,e,t){return n.s==-1?Math.max(S8(n.l,e,t+1),S8(n.r,e,t+1)):e[n.s]=t},SQ=function(n){for(var e=n.length;e&&!n[--e];);for(var t=new Cl(++e),i=0,s=n[0],r=1,o=function(l){t[i++]=l},a=1;a<=e;++a)if(n[a]==s&&a!=e)++r;else{if(!s&&r>2){for(;r>138;r-=138)o(32754);r>2&&(o(r>10?r-11<<5|28690:r-3<<5|12305),r=0)}else if(r>3){for(o(s),--r;r>6;r-=6)o(8304);r>2&&(o(r-3<<5|8208),r=0)}for(;r--;)o(s);r=1,s=n[a]}return{c:t.subarray(0,i),n:e}},_w=function(n,e){for(var t=0,i=0;i<e.length;++i)t+=n[i]*e[i];return t},rde=function(n,e,t){var i=t.length,s=KU(e+2);n[s]=i&255,n[s+1]=i>>8,n[s+2]=n[s]^255,n[s+3]=n[s+1]^255;for(var r=0;r<i;++r)n[s+r+4]=t[r];return(s+4+i)*8},kQ=function(n,e,t,i,s,r,o,a,l,c,u){Rd(e,u++,t),++s[256];for(var h=i5(s,15),d=h.t,f=h.l,g=i5(r,15),p=g.t,m=g.l,_=SQ(d),b=_.c,y=_.n,w=SQ(p),S=w.c,E=w.n,L=new Cl(19),k=0;k<b.length;++k)++L[b[k]&31];for(var k=0;k<S.length;++k)++L[S[k]&31];for(var x=i5(L,7),I=x.t,N=x.l,T=19;T>4&&!I[y8[T-1]];--T);var P=c+5<<3,R=_w(s,Up)+_w(r,nL)+o,F=_w(s,d)+_w(r,p)+o+14+3*T+_w(L,I)+2*L[16]+3*L[17]+7*L[18];if(l>=0&&P<=R&&P<=F)return rde(e,u,n.subarray(l,l+c));var j,K,Z,q;if(Rd(e,u,1+(F<R)),u+=2,F<R){j=Gh(d,f,0),K=d,Z=Gh(p,m,0),q=p;var re=Gh(I,N,0);Rd(e,u,y-257),Rd(e,u+5,E-1),Rd(e,u+10,T-4),u+=14;for(var k=0;k<T;++k)Rd(e,u+3*k,I[y8[k]]);u+=3*T;for(var G=[b,S],W=0;W<2;++W)for(var Y=G[W],k=0;k<Y.length;++k){var X=Y[k]&31;Rd(e,u,re[X]),u+=I[X],X>15&&(Rd(e,u,Y[k]>>5&127),u+=Y[k]>>12)}}else j=o2e,K=Up,Z=l2e,q=nL;for(var k=0;k<a;++k){var z=i[k];if(z>255){var X=z>>18&31;mw(e,u,j[X+257]),u+=K[X+257],X>7&&(Rd(e,u,z>>23&31),u+=XM[X]);var le=z&31;mw(e,u,Z[le]),u+=q[le],le>3&&(mw(e,u,z>>5&8191),u+=QM[le])}else mw(e,u,j[z]),u+=K[z]}return mw(e,u,j[256]),u+K[256]},d2e=new qU([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),ode=new Er(0),f2e=function(n,e,t,i,s,r){var o=r.z||n.length,a=new Er(i+o+5*(1+Math.ceil(o/7e3))+s),l=a.subarray(i,a.length-s),c=r.l,u=(r.r||0)&7;if(e){u&&(l[0]=r.r>>3);for(var h=d2e[e-1],d=h>>13,f=h&8191,g=(1<<t)-1,p=r.p||new Cl(32768),m=r.h||new Cl(g+1),_=Math.ceil(t/3),b=2*_,y=function(ce){return(n[ce]^n[ce+1]<<_^n[ce+2]<<b)&g},w=new qU(25e3),S=new Cl(288),E=new Cl(32),L=0,k=0,x=r.i||0,I=0,N=r.w||0,T=0;x+2<o;++x){var P=y(x),R=x&32767,F=m[P];if(p[R]=F,m[P]=R,N<=x){var j=o-x;if((L>7e3||I>24576)&&(j>423||!c)){u=kQ(n,l,0,w,S,E,k,I,T,x-T,u),I=L=k=0,T=x;for(var K=0;K<286;++K)S[K]=0;for(var K=0;K<30;++K)E[K]=0}var Z=2,q=0,re=f,G=R-F&32767;if(j>2&&P==y(x-G))for(var W=Math.min(d,j)-1,Y=Math.min(32767,x),X=Math.min(258,j);G<=Y&&--re&&R!=F;){if(n[x+Z]==n[x+Z-G]){for(var z=0;z<X&&n[x+z]==n[x+z-G];++z);if(z>Z){if(Z=z,q=G,z>W)break;for(var le=Math.min(G,z-2),J=0,K=0;K<le;++K){var be=x-G+K&32767,fe=p[be],ge=be-fe&32767;ge>J&&(J=ge,F=be)}}}R=F,F=p[R],G+=R-F&32767}if(q){w[I++]=268435456|C8[Z]<<18|wQ[q];var se=C8[Z]&31,H=wQ[q]&31;k+=XM[se]+QM[H],++S[257+se],++E[H],N=x+Z,++L}else w[I++]=n[x],++S[n[x]]}}for(x=Math.max(x,N);x<o;++x)w[I++]=n[x],++S[n[x]];u=kQ(n,l,c,w,S,E,k,I,T,x-T,u),c||(r.r=u&7|l[u/8|0]<<3,u-=7,r.h=m,r.p=p,r.i=x,r.w=N)}else{for(var x=r.w||0;x<o+c;x+=65535){var te=x+65535;te>=o&&(l[u/8|0]=c,te=o),u=rde(l,u+1,n.subarray(x,te))}r.i=o}return JM(a,0,i+KU(u)+s)},ade=function(){var n=1,e=0;return{p:function(t){for(var i=n,s=e,r=t.length|0,o=0;o!=r;){for(var a=Math.min(o+2655,r);o<a;++o)s+=i+=t[o];i=(i&65535)+15*(i>>16),s=(s&65535)+15*(s>>16)}n=i,e=s},d:function(){return n%=65521,e%=65521,(n&255)<<24|(n&65280)<<8|(e&255)<<8|e>>8}}},g2e=function(n,e,t,i,s){if(!s&&(s={l:1},e.dictionary)){var r=e.dictionary.subarray(-32768),o=new Er(r.length+n.length);o.set(r),o.set(n,r.length),n=o,s.w=r.length}return f2e(n,e.level==null?6:e.level,e.mem==null?Math.ceil(Math.max(8,Math.min(13,Math.log(n.length)))*1.5):12+e.mem,t,i,s)},lde=function(n,e,t){for(;t;++e)n[e]=t,t>>>=8},p2e=function(n,e){var t=e.level,i=t==0?0:t<6?1:t==9?3:2;if(n[0]=120,n[1]=i<<6|(e.dictionary&&32),n[1]|=31-(n[0]<<8|n[1])%31,e.dictionary){var s=ade();s.p(e.dictionary),lde(n,2,s.d())}},m2e=function(n,e){return((n[0]&15)!=8||n[0]>>4>7||(n[0]<<8|n[1])%31)&&tc(6,"invalid zlib data"),(n[1]>>5&1)==+!e&&tc(6,"invalid zlib data: "+(n[1]&32?"need":"unexpected")+" dictionary"),(n[1]>>3&4)+2};function _2e(n,e){e||(e={});var t=ade();t.p(n);var i=g2e(n,e,e.dictionary?6:2,4);return p2e(i,e),lde(i,i.length-4,t.d()),i}function v2e(n,e){return h2e(n.subarray(m2e(n,e&&e.dictionary),-4),{i:2},e&&e.out,e&&e.dictionary)}var LQ=typeof TextEncoder<"u"&&new TextEncoder,k8=typeof TextDecoder<"u"&&new TextDecoder,b2e=0;try{k8.decode(ode,{stream:!0}),b2e=1}catch{}var y2e=function(n){for(var e="",t=0;;){var i=n[t++],s=(i>127)+(i>223)+(i>239);if(t+s>n.length)return{s:e,r:JM(n,t-1)};s?s==3?(i=((i&15)<<18|(n[t++]&63)<<12|(n[t++]&63)<<6|n[t++]&63)-65536,e+=String.fromCharCode(55296|i>>10,56320|i&1023)):s&1?e+=String.fromCharCode((i&31)<<6|n[t++]&63):e+=String.fromCharCode((i&15)<<12|(n[t++]&63)<<6|n[t++]&63):e+=String.fromCharCode(i)}};function cde(n,e){if(e){for(var t=new Er(n.length),i=0;i<n.length;++i)t[i]=n.charCodeAt(i);return t}if(LQ)return LQ.encode(n);for(var s=n.length,r=new Er(n.length+(n.length>>1)),o=0,a=function(u){r[o++]=u},i=0;i<s;++i){if(o+5>r.length){var l=new Er(o+8+(s-i<<1));l.set(r),r=l}var c=n.charCodeAt(i);c<128||e?a(c):c<2048?(a(192|c>>6),a(128|c&63)):c>55295&&c<57344?(c=65536+(c&1047552)|n.charCodeAt(++i)&1023,a(240|c>>18),a(128|c>>12&63),a(128|c>>6&63),a(128|c&63)):(a(224|c>>12),a(128|c>>6&63),a(128|c&63))}return JM(r,0,o)}function ude(n,e){if(e){for(var t="",i=0;i<n.length;i+=16384)t+=String.fromCharCode.apply(null,n.subarray(i,i+16384));return t}else{if(k8)return k8.decode(n);var s=y2e(n),r=s.s,t=s.r;return t.length&&tc(8),r}}function C2e(n,e=100){let t;return(...i)=>{t&&clearTimeout(t),t=setTimeout(()=>{n(...i)},e)}}function w2e(n){const e=cde(n),t=_2e(e,{level:9}),i=ude(t,!0);return btoa(i)}function S2e(n){const e=atob(n);if(e.startsWith("xÚ")){const t=cde(e,!0),i=v2e(t);return ude(i)}return decodeURIComponent(escape(e))}const k2e=rr({__name:"SplitPane",props:{layout:{}},setup(n){const e=n,t=Qn(()=>e.layout==="vertical"),i=Qt(),s=$r("store"),r=Qt(s.initialShowOutput),o=wm({dragging:!1,split:50}),a=Qn(()=>{const{split:f}=o;return f<20?20:f>80?80:f});let l=0,c=0;function u(f){o.dragging=!0,l=t.value?f.pageY:f.pageX,c=a.value}function h(f){if(o.dragging){const g=t.value?f.pageY:f.pageX,p=t.value?i.value.offsetHeight:i.value.offsetWidth,m=g-l;o.split=c+~~(m/p*100)}}function d(){o.dragging=!1}return(f,g)=>(vi(),Mi("div",{ref_key:"container",ref:i,class:sc(["split-pane",{dragging:o.dragging,"show-output":r.value,vertical:t.value}]),onMousemove:h,onMouseup:d,onMouseleave:d},[hi("div",{class:"left",style:$b({[t.value?"height":"width"]:a.value+"%"})},[U6(f.$slots,"left",{},void 0,!0),hi("div",{class:"dragger",onMousedown:pae(u,["prevent"])},null,32)],4),hi("div",{class:"right",style:$b({[t.value?"height":"width"]:100-a.value+"%"})},[U6(f.$slots,"right",{},void 0,!0)],4),hi("button",{class:"toggler",onClick:g[0]||(g[0]=p=>r.value=!r.value)},vl(r.value?"< Code":"Output >"),1)],34))}}),yv=(n,e)=>{const t=n.__vccOpts||n;for(const[i,s]of e)t[i]=s;return t},L2e=yv(k2e,[["__scopeId","data-v-efd91069"]]),x2e=rr({__name:"Message",props:["err","warn"],setup(n){const e=n,t=Qt(!1);Kn(()=>[e.err,e.warn],()=>{t.value=!1});function i(s){if(typeof s=="string")return s;{let r=s.message;const o=s.loc;return o&&o.start&&(r=`(${o.start.line}:${o.start.column}) `+r),r}}return(s,r)=>(vi(),dv(rC,{name:"fade"},{default:xh(()=>[!t.value&&(n.err||n.warn)?(vi(),Mi("div",{key:0,class:sc(["msg",n.err?"err":"warn"])},[hi("pre",null,vl(i(n.err||n.warn)),1),hi("button",{class:"dismiss",onClick:r[0]||(r[0]=o=>t.value=!0)},"✕")],2)):rc("",!0)]),_:1}))}}),L8=yv(x2e,[["__scopeId","data-v-1a475595"]]),E2e=`<!doctype html> +<html> + <head> + <style> + body { + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, + Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; + } + </style> + <!-- PREVIEW-OPTIONS-HEAD-HTML --> + <script> + ;(() => { + let scriptEls = [] + + window.process = { env: {} } + window.__modules__ = {} + + window.__export__ = (mod, key, get) => { + Object.defineProperty(mod, key, { + enumerable: true, + configurable: true, + get, + }) + } + + window.__dynamic_import__ = (key) => { + return Promise.resolve(window.__modules__[key]) + } + + async function handle_message(ev) { + let { action, cmd_id } = ev.data + const send_message = (payload) => + parent.postMessage({ ...payload }, ev.origin) + const send_reply = (payload) => send_message({ ...payload, cmd_id }) + const send_ok = () => send_reply({ action: 'cmd_ok' }) + const send_error = (message, stack) => + send_reply({ action: 'cmd_error', message, stack }) + + if (action === 'eval') { + try { + if (scriptEls.length) { + scriptEls.forEach((el) => { + document.head.removeChild(el) + }) + scriptEls.length = 0 + } + + let { script: scripts } = ev.data.args + if (typeof scripts === 'string') scripts = [scripts] + + for (const script of scripts) { + const scriptEl = document.createElement('script') + scriptEl.setAttribute('type', 'module') + // send ok in the module script to ensure sequential evaluation + // of multiple proxy.eval() calls + const done = new Promise((resolve) => { + window.__next__ = resolve + }) + scriptEl.innerHTML = script + \`\\nwindow.__next__()\` + document.head.appendChild(scriptEl) + scriptEl.onerror = (err) => send_error(err.message, err.stack) + scriptEls.push(scriptEl) + await done + } + send_ok() + } catch (e) { + send_error(e.message, e.stack) + } + } + + if (action === 'catch_clicks') { + try { + const top_origin = ev.origin + document.body.addEventListener('click', (event) => { + if (event.which !== 1) return + if (event.metaKey || event.ctrlKey || event.shiftKey) return + if (event.defaultPrevented) return + + // ensure target is a link + let el = event.target + while (el && el.nodeName !== 'A') el = el.parentNode + if (!el || el.nodeName !== 'A') return + + if ( + el.hasAttribute('download') || + el.getAttribute('rel') === 'external' || + el.target || + el.href.startsWith('javascript:') + ) + return + + event.preventDefault() + + if (el.href.startsWith(top_origin)) { + const url = new URL(el.href) + if (url.hash[0] === '#') { + window.location.hash = url.hash + return + } + } + + window.open(el.href, '_blank') + }) + send_ok() + } catch (e) { + send_error(e.message, e.stack) + } + } + } + + window.addEventListener('message', handle_message, false) + + window.onerror = function (msg, url, lineNo, columnNo, error) { + // ignore errors from import map polyfill - these are necessary for + // it to detect browser support + if (msg.includes('module specifier “vue”')) { + // firefox only error, ignore + return false + } + if (msg.includes("Module specifier, 'vue")) { + // Safari only + return false + } + try { + parent.postMessage({ action: 'error', value: error }, '*') + } catch (e) { + parent.postMessage({ action: 'error', value: msg }, '*') + } + } + + window.addEventListener('unhandledrejection', (event) => { + if ( + event.reason.message && + event.reason.message.includes('Cross-origin') + ) { + event.preventDefault() + return + } + try { + parent.postMessage( + { action: 'unhandledrejection', value: event.reason }, + '*' + ) + } catch (e) { + parent.postMessage( + { action: 'unhandledrejection', value: event.reason.message }, + '*' + ) + } + }) + + let previous = { level: null, args: null } + + ;['clear', 'log', 'info', 'dir', 'warn', 'error', 'table'].forEach( + (level) => { + const original = console[level] + console[level] = (...args) => { + const msg = args[0] + if (typeof msg === 'string') { + if ( + msg.includes('You are running a development build of Vue') || + msg.includes('You are running the esm-bundler build of Vue') + ) { + return + } + } + + original(...args) + + const stringifiedArgs = stringify(args) + if ( + previous.level === level && + previous.args && + previous.args === stringifiedArgs + ) { + parent.postMessage( + { action: 'console', level, duplicate: true }, + '*' + ) + } else { + previous = { level, args: stringifiedArgs } + + try { + parent.postMessage({ action: 'console', level, args }, '*') + } catch (err) { + parent.postMessage( + { action: 'console', level, args: args.map(toString) }, + '*' + ) + } + } + } + } + ) + ;[ + { method: 'group', action: 'console_group' }, + { method: 'groupEnd', action: 'console_group_end' }, + { method: 'groupCollapsed', action: 'console_group_collapsed' }, + ].forEach((group_action) => { + const original = console[group_action.method] + console[group_action.method] = (label) => { + parent.postMessage({ action: group_action.action, label }, '*') + + original(label) + } + }) + + const timers = new Map() + const original_time = console.time + const original_timelog = console.timeLog + const original_timeend = console.timeEnd + + console.time = (label = 'default') => { + original_time(label) + timers.set(label, performance.now()) + } + console.timeLog = (label = 'default') => { + original_timelog(label) + const now = performance.now() + if (timers.has(label)) { + parent.postMessage( + { + action: 'console', + level: 'system-log', + args: [\`\${label}: \${now - timers.get(label)}ms\`], + }, + '*' + ) + } else { + parent.postMessage( + { + action: 'console', + level: 'system-warn', + args: [\`Timer '\${label}' does not exist\`], + }, + '*' + ) + } + } + console.timeEnd = (label = 'default') => { + original_timeend(label) + const now = performance.now() + if (timers.has(label)) { + parent.postMessage( + { + action: 'console', + level: 'system-log', + args: [\`\${label}: \${now - timers.get(label)}ms\`], + }, + '*' + ) + } else { + parent.postMessage( + { + action: 'console', + level: 'system-warn', + args: [\`Timer '\${label}' does not exist\`], + }, + '*' + ) + } + timers.delete(label) + } + + const original_assert = console.assert + console.assert = (condition, ...args) => { + if (condition) { + const stack = new Error().stack + parent.postMessage( + { action: 'console', level: 'assert', args, stack }, + '*' + ) + } + original_assert(condition, ...args) + } + + const counter = new Map() + const original_count = console.count + const original_countreset = console.countReset + + console.count = (label = 'default') => { + counter.set(label, (counter.get(label) || 0) + 1) + parent.postMessage( + { + action: 'console', + level: 'system-log', + args: \`\${label}: \${counter.get(label)}\`, + }, + '*' + ) + original_count(label) + } + + console.countReset = (label = 'default') => { + if (counter.has(label)) { + counter.set(label, 0) + } else { + parent.postMessage( + { + action: 'console', + level: 'system-warn', + args: \`Count for '\${label}' does not exist\`, + }, + '*' + ) + } + original_countreset(label) + } + + const original_trace = console.trace + + console.trace = (...args) => { + const stack = new Error().stack + parent.postMessage( + { action: 'console', level: 'trace', args, stack }, + '*' + ) + original_trace(...args) + } + + function toString(value) { + if (value instanceof Error) { + return value.message + } + for (const fn of [ + String, + (v) => Object.prototype.toString.call(v), + (v) => typeof v, + ]) { + try { + return fn(value) + } catch (err) {} + } + } + + function isComponentProxy(value) { + return ( + value && + typeof value === 'object' && + value.__v_skip === true && + typeof value.$nextTick === 'function' && + value.$ && + value._ + ) + } + + function stringify(args) { + try { + return JSON.stringify(args, (key, value) => { + return isComponentProxy(value) ? '{component proxy}' : value + }) + } catch (error) { + return null + } + } + })() + <\/script> + + <!-- ES Module Shims: Import maps polyfill for modules browsers without import maps support (all except Chrome 89+) --> + <script + async + src="https://cdn.jsdelivr.net/npm/es-module-shims@1.5.18/dist/es-module-shims.wasm.js" + ><\/script> + <script type="importmap"> + <!--IMPORT_MAP--> + <\/script> + </head> + <body> + <!--PREVIEW-OPTIONS-PLACEHOLDER-HTML--> + </body> +</html> +`;let D2e=1;class I2e{constructor(e,t){this.iframe=e,this.handlers=t,this.pending_cmds=new Map,this.handle_event=i=>this.handle_repl_message(i),window.addEventListener("message",this.handle_event,!1)}destroy(){window.removeEventListener("message",this.handle_event)}iframe_command(e,t){return new Promise((i,s)=>{const r=D2e++;this.pending_cmds.set(r,{resolve:i,reject:s}),this.iframe.contentWindow.postMessage({action:e,cmd_id:r,args:t},"*")})}handle_command_message(e){let t=e.action,i=e.cmd_id,s=this.pending_cmds.get(i);if(s){if(this.pending_cmds.delete(i),t==="cmd_error"){let{message:r,stack:o}=e,a=new Error(r);a.stack=o,s.reject(a)}t==="cmd_ok"&&s.resolve(e.args)}else t!=="cmd_error"&&t!=="cmd_ok"&&console.error("command not found",i,e,[...this.pending_cmds.keys()])}handle_repl_message(e){if(e.source!==this.iframe.contentWindow)return;const{action:t,args:i}=e.data;switch(t){case"cmd_error":case"cmd_ok":return this.handle_command_message(e.data);case"fetch_progress":return this.handlers.on_fetch_progress(i.remaining);case"error":return this.handlers.on_error(e.data);case"unhandledrejection":return this.handlers.on_unhandled_rejection(e.data);case"console":return this.handlers.on_console(e.data);case"console_group":return this.handlers.on_console_group(e.data);case"console_group_collapsed":return this.handlers.on_console_group_collapsed(e.data);case"console_group_end":return this.handlers.on_console_group_end(e.data)}}eval(e){return this.iframe_command("eval",{script:e})}handle_links(){return this.iframe_command("catch_clicks",{})}}function xQ(n,e=!1){const t=new Set,i=[];if(x8(n,n.state.files[n.state.mainFile],i,t,e),!e){for(const s in n.state.files)if(s.endsWith(".css")){const r=n.state.files[s];t.has(r)||i.push(` +window.__css__.push(${JSON.stringify(r.compiled.css)})`)}}return i}const EQ="__modules__",n5="__export__",T2e="__dynamic_import__",vw="__module__";function x8(n,e,t,i,s){if(i.has(e))return[];if(i.add(e),!s&&e.filename.endsWith(".html"))return P2e(n,e.code,e.filename,t,i);let{code:r,importedFiles:o,hasDynamicImport:a}=dde(n,s?e.compiled.ssr:e.compiled.js,e.filename);hde(n,o,a,t,i,s),e.compiled.css&&!s&&(r+=` +window.__css__.push(${JSON.stringify(e.compiled.css)})`),t.push(r)}function hde(n,e,t,i,s,r){if(t)for(const o of Object.values(n.state.files))s.has(o)||x8(n,o,i,s,r);else if(e.size>0)for(const o of e)x8(n,n.state.files[o],i,s,r)}function dde(n,e,t){const i=new qf(e),s=Hp(e,{sourceFilename:t,sourceType:"module"}).program.body,r=new Map,o=new Set,a=new Set,l=new Map;function c(f){const g=n.state.files;let p=f;return g[p]||g[p=f+".ts"]||g[p=f+".js"]?p:void 0}function u(f,g){const p=c(g.replace(/^\.\/+/,"src/"));if(!p)throw new Error(`File "${g}" does not exist.`);if(a.has(p))return l.get(p);a.add(p);const m=`__import_${a.size}__`;return l.set(p,m),i.appendLeft(f.start,`const ${m} = ${EQ}[${JSON.stringify(p)}] +`),m}function h(f,g=f){i.append(` +${n5}(${vw}, "${f}", () => ${g})`)}i.prepend(`const ${vw} = ${EQ}[${JSON.stringify(t)}] = { [Symbol.toStringTag]: "Module" } + +`);for(const f of s)if(f.type==="ImportDeclaration"&&f.source.value.startsWith("./")){const p=u(f,f.source.value);for(const m of f.specifiers)m.type==="ImportSpecifier"?r.set(m.local.name,`${p}.${m.imported.name}`):m.type==="ImportDefaultSpecifier"?r.set(m.local.name,`${p}.default`):r.set(m.local.name,p);i.remove(f.start,f.end)}for(const f of s){if(f.type==="ExportNamedDeclaration")if(f.declaration){if(f.declaration.type==="FunctionDeclaration"||f.declaration.type==="ClassDeclaration")h(f.declaration.id.name);else if(f.declaration.type==="VariableDeclaration")for(const g of f.declaration.declarations)for(const p of gl(g.id))h(p.name);i.remove(f.start,f.declaration.start)}else if(f.source){const g=u(f,f.source.value);for(const p of f.specifiers)h(p.exported.name,`${g}.${p.local.name}`);i.remove(f.start,f.end)}else{for(const g of f.specifiers){const p=g.local.name,m=r.get(p);h(g.exported.name,m||p)}i.remove(f.start,f.end)}if(f.type==="ExportDefaultDeclaration")if("id"in f.declaration&&f.declaration.id){const{name:g}=f.declaration.id;i.remove(f.start,f.start+15),i.append(` +${n5}(${vw}, "default", () => ${g})`)}else i.overwrite(f.start,f.start+14,`${vw}.default =`);if(f.type==="ExportAllDeclaration"){const g=u(f,f.source.value);i.remove(f.start,f.end),i.append(` +for (const key in ${g}) { + if (key !== 'default') { + ${n5}(${vw}, key, () => ${g}[key]) + } + }`)}}for(const f of s)f.type!=="ImportDeclaration"&&pC(f,(g,p,m)=>{const _=r.get(g.name);if(_)if(mv(p)&&p.shorthand)(!p.inPattern||pv(p,m))&&i.appendLeft(g.end,`: ${_}`);else if(p.type==="ClassDeclaration"&&g===p.superClass){if(!o.has(g.name)){o.add(g.name);const b=m[1];i.prependRight(b.start,`const ${g.name} = ${_}; +`)}}else i.overwrite(g.start,g.end,_)});let d=!1;return ede(s,{enter(f,g){if(f.type==="Import"&&g.type==="CallExpression"){const p=g.arguments[0];p.type==="StringLiteral"&&p.value.startsWith("./")&&(d=!0,i.overwrite(f.start,f.start+6,T2e),i.overwrite(p.start,p.end,JSON.stringify(p.value.replace(/^\.\/+/,""))))}}}),{code:i.toString(),importedFiles:a,hasDynamicImport:d}}const N2e=/<script\b(?:\s[^>]*>|>)([^]*?)<\/script>/gi,A2e=/<script\b[^>]*type\s*=\s*(?:"module"|'module')[^>]*>([^]*?)<\/script>/gi;function P2e(n,e,t,i,s){const r=[];let o="";const a=e.replace(A2e,(l,c)=>{const{code:u,importedFiles:h,hasDynamicImport:d}=dde(n,c,t);return hde(n,h,d,r,s,!1),o+=` +`+u,""}).replace(N2e,(l,c)=>(o+=` +`+c,""));i.push(`document.body.innerHTML = ${JSON.stringify(a)}`),i.push(...r),i.push(o)}const R2e=rr({__name:"Preview",props:{show:{type:Boolean},ssr:{type:Boolean}},setup(n,{expose:e}){const t=n,i=$r("store"),s=$r("clear-console"),r=$r("preview-options"),o=Qt(),a=Qt(),l=Qt();let c,u,h;tg(d),Kn(()=>i.getImportMap(),()=>{try{d()}catch(p){i.state.errors=[p];return}}),Kn(()=>i.state.resetFlip,d),Gx(()=>{u.destroy(),h&&h()});function d(){c&&(u.destroy(),h&&h(),o.value.removeChild(c)),c=document.createElement("iframe"),c.setAttribute("sandbox",["allow-forms","allow-modals","allow-pointer-lock","allow-popups","allow-same-origin","allow-scripts","allow-top-navigation-by-user-activation"].join(" "));const p=i.getImportMap();p.imports||(p.imports={}),p.imports.vue||(p.imports.vue=i.state.vueRuntimeURL);const m=E2e.replace(/<!--IMPORT_MAP-->/,JSON.stringify(p)).replace(/<!-- PREVIEW-OPTIONS-HEAD-HTML -->/,(r==null?void 0:r.headHTML)||"").replace(/<!--PREVIEW-OPTIONS-PLACEHOLDER-HTML-->/,(r==null?void 0:r.placeholderHTML)||"");c.srcdoc=m,o.value.appendChild(c),u=new I2e(c,{on_fetch_progress:_=>{},on_error:_=>{const b=_.value instanceof Error?_.value.message:_.value;b.includes("Failed to resolve module specifier")||b.includes("Error resolving module specifier")?a.value=b.replace(/\. Relative references must.*$/,"")+`. +Tip: edit the "Import Map" tab to specify import paths for dependencies.`:a.value=_.value},on_unhandled_rejection:_=>{let b=_.value;typeof b=="string"&&(b={message:b}),a.value="Uncaught (in promise): "+b.message},on_console:_=>{_.duplicate||(_.level==="error"?_.args[0]instanceof Error?a.value=_.args[0].message:a.value=_.args[0]:_.level==="warn"&&_.args[0].toString().includes("[Vue warn]")&&(l.value=_.args.join("").replace(/\[Vue warn\]:/,"").trim()))},on_console_group:_=>{},on_console_group_end:()=>{},on_console_group_collapsed:_=>{}}),c.addEventListener("load",()=>{u.handle_links(),h=Kx(f)})}async function f(){var m,_;s.value&&console.clear(),a.value=null,l.value=null;let p=t.ssr;if(i.vueVersion){const[b,y,w]=i.vueVersion.split(".").map(S=>parseInt(S,10));b===3&&(y<2||y===2&&w<27)&&(alert(`The selected version of Vue (${i.vueVersion}) does not support in-browser SSR. Rendering in client mode instead.`),p=!1)}try{const b=i.state.mainFile;if(p&&b.endsWith(".vue")){const S=xQ(i,!0);console.log(`[@vue/repl] successfully compiled ${S.length} modules for SSR.`),await u.eval(["const __modules__ = {};",...S,`import { renderToString as _renderToString } from 'vue/server-renderer' + import { createSSRApp as _createApp } from 'vue' + const AppComponent = __modules__["${b}"].default + AppComponent.name = 'Repl' + const app = _createApp(AppComponent) + if (!app.config.hasOwnProperty('unwrapInjectedRef')) { + app.config.unwrapInjectedRef = true + } + app.config.warnHandler = () => {} + window.__ssr_promise__ = _renderToString(app).then(html => { + document.body.innerHTML = '<div id="app">' + html + '</div>' + \`${(r==null?void 0:r.bodyHTML)||""}\` + }).catch(err => { + console.error("SSR Error", err) + }) + `])}const y=xQ(i);console.log(`[@vue/repl] successfully compiled ${y.length} module${y.length>1?"s":""}.`);const w=["window.__modules__ = {};window.__css__ = [];if (window.__app__) window.__app__.unmount();"+(p?"":`document.body.innerHTML = '<div id="app"></div>' + \`${(r==null?void 0:r.bodyHTML)||""}\``),...y,"document.querySelectorAll('style[css]').forEach(el => el.remove())\n document.head.insertAdjacentHTML('beforeend', window.__css__.map(s => `<style css>${s}</style>`).join('\\n'))"];b.endsWith(".vue")&&w.push(`import { ${p?"createSSRApp":"createApp"} as _createApp } from "vue" + ${((m=r==null?void 0:r.customCode)==null?void 0:m.importCode)||""} + const _mount = () => { + const AppComponent = __modules__["${b}"].default + AppComponent.name = 'Repl' + const app = window.__app__ = _createApp(AppComponent) + if (!app.config.hasOwnProperty('unwrapInjectedRef')) { + app.config.unwrapInjectedRef = true + } + app.config.errorHandler = e => console.error(e) + ${((_=r==null?void 0:r.customCode)==null?void 0:_.useCode)||""} + app.mount('#app') + } + if (window.__ssr_promise__) { + window.__ssr_promise__.then(_mount) + } else { + _mount() + }`),await u.eval(w)}catch(b){console.error(b),a.value=b.message}}function g(){var p;(p=c.contentWindow)==null||p.location.reload()}return e({reload:g}),(p,m)=>(vi(),Mi(Es,null,[__(hi("div",{class:"iframe-container",ref_key:"container",ref:o},null,512),[[Kb,p.show]]),At(L8,{err:a.value},null,8,["err"]),a.value?rc("",!0):(vi(),dv(L8,{key:0,warn:l.value},null,8,["warn"]))],64))}}),fde=yv(R2e,[["__scopeId","data-v-9d26c2ca"]]),M2e={class:"tab-buttons"},O2e=["onClick"],F2e={class:"output-container"},B2e=rr({__name:"Output",props:{editorComponent:{},showCompileOutput:{type:Boolean},ssr:{type:Boolean}},setup(n,{expose:e}){const t=n,i=$r("store"),s=Qt(),r=Qn(()=>t.showCompileOutput?["preview","js","css","ssr"]:["preview"]),o=Qt(r.value.includes(i.initialOutputMode)?i.initialOutputMode:"preview");function a(){var l;(l=s.value)==null||l.reload()}return e({reload:a}),(l,c)=>(vi(),Mi(Es,null,[hi("div",M2e,[(vi(!0),Mi(Es,null,Ub(r.value,u=>(vi(),Mi("button",{class:sc({active:o.value===u}),onClick:h=>o.value=u},[hi("span",null,vl(u),1)],10,O2e))),256))]),hi("div",F2e,[At(fde,{ref_key:"previewRef",ref:s,show:o.value==="preview",ssr:l.ssr},null,8,["show","ssr"]),o.value!=="preview"?(vi(),dv(t.editorComponent,{key:0,readonly:"",filename:Ti(i).state.activeFile.filename,value:Ti(i).state.activeFile.compiled[o.value],mode:o.value},null,8,["filename","value","mode"])):rc("",!0)])],64))}}),W2e=yv(B2e,[["__scopeId","data-v-f221f6e0"]]);var de;(function(n){n[n.NONE=0]="NONE";const t=1;n[n._abstract=t]="_abstract";const i=t+1;n[n._accessor=i]="_accessor";const s=i+1;n[n._as=s]="_as";const r=s+1;n[n._assert=r]="_assert";const o=r+1;n[n._asserts=o]="_asserts";const a=o+1;n[n._async=a]="_async";const l=a+1;n[n._await=l]="_await";const c=l+1;n[n._checks=c]="_checks";const u=c+1;n[n._constructor=u]="_constructor";const h=u+1;n[n._declare=h]="_declare";const d=h+1;n[n._enum=d]="_enum";const f=d+1;n[n._exports=f]="_exports";const g=f+1;n[n._from=g]="_from";const p=g+1;n[n._get=p]="_get";const m=p+1;n[n._global=m]="_global";const _=m+1;n[n._implements=_]="_implements";const b=_+1;n[n._infer=b]="_infer";const y=b+1;n[n._interface=y]="_interface";const w=y+1;n[n._is=w]="_is";const S=w+1;n[n._keyof=S]="_keyof";const E=S+1;n[n._mixins=E]="_mixins";const L=E+1;n[n._module=L]="_module";const k=L+1;n[n._namespace=k]="_namespace";const x=k+1;n[n._of=x]="_of";const I=x+1;n[n._opaque=I]="_opaque";const N=I+1;n[n._out=N]="_out";const T=N+1;n[n._override=T]="_override";const P=T+1;n[n._private=P]="_private";const R=P+1;n[n._protected=R]="_protected";const F=R+1;n[n._proto=F]="_proto";const j=F+1;n[n._public=j]="_public";const K=j+1;n[n._readonly=K]="_readonly";const Z=K+1;n[n._require=Z]="_require";const q=Z+1;n[n._satisfies=q]="_satisfies";const re=q+1;n[n._set=re]="_set";const G=re+1;n[n._static=G]="_static";const W=G+1;n[n._symbol=W]="_symbol";const Y=W+1;n[n._type=Y]="_type";const X=Y+1;n[n._unique=X]="_unique";const z=X+1;n[n._using=z]="_using"})(de||(de={}));var C;(function(n){n[n.PRECEDENCE_MASK=15]="PRECEDENCE_MASK";const t=16;n[n.IS_KEYWORD=t]="IS_KEYWORD";const i=32;n[n.IS_ASSIGN=i]="IS_ASSIGN";const s=64;n[n.IS_RIGHT_ASSOCIATIVE=s]="IS_RIGHT_ASSOCIATIVE";const r=128;n[n.IS_PREFIX=r]="IS_PREFIX";const o=256;n[n.IS_POSTFIX=o]="IS_POSTFIX";const a=512;n[n.IS_EXPRESSION_START=a]="IS_EXPRESSION_START";const l=512;n[n.num=l]="num";const c=1536;n[n.bigint=c]="bigint";const u=2560;n[n.decimal=u]="decimal";const h=3584;n[n.regexp=h]="regexp";const d=4608;n[n.string=d]="string";const f=5632;n[n.name=f]="name";const g=6144;n[n.eof=g]="eof";const p=7680;n[n.bracketL=p]="bracketL";const m=8192;n[n.bracketR=m]="bracketR";const _=9728;n[n.braceL=_]="braceL";const b=10752;n[n.braceBarL=b]="braceBarL";const y=11264;n[n.braceR=y]="braceR";const w=12288;n[n.braceBarR=w]="braceBarR";const S=13824;n[n.parenL=S]="parenL";const E=14336;n[n.parenR=E]="parenR";const L=15360;n[n.comma=L]="comma";const k=16384;n[n.semi=k]="semi";const x=17408;n[n.colon=x]="colon";const I=18432;n[n.doubleColon=I]="doubleColon";const N=19456;n[n.dot=N]="dot";const T=20480;n[n.question=T]="question";const P=21504;n[n.questionDot=P]="questionDot";const R=22528;n[n.arrow=R]="arrow";const F=23552;n[n.template=F]="template";const j=24576;n[n.ellipsis=j]="ellipsis";const K=25600;n[n.backQuote=K]="backQuote";const Z=27136;n[n.dollarBraceL=Z]="dollarBraceL";const q=27648;n[n.at=q]="at";const re=29184;n[n.hash=re]="hash";const G=29728;n[n.eq=G]="eq";const W=30752;n[n.assign=W]="assign";const Y=32640;n[n.preIncDec=Y]="preIncDec";const X=33664;n[n.postIncDec=X]="postIncDec";const z=34432;n[n.bang=z]="bang";const le=35456;n[n.tilde=le]="tilde";const J=35841;n[n.pipeline=J]="pipeline";const be=36866;n[n.nullishCoalescing=be]="nullishCoalescing";const fe=37890;n[n.logicalOR=fe]="logicalOR";const ge=38915;n[n.logicalAND=ge]="logicalAND";const se=39940;n[n.bitwiseOR=se]="bitwiseOR";const H=40965;n[n.bitwiseXOR=H]="bitwiseXOR";const te=41990;n[n.bitwiseAND=te]="bitwiseAND";const ce=43015;n[n.equality=ce]="equality";const ve=44040;n[n.lessThan=ve]="lessThan";const Ee=45064;n[n.greaterThan=Ee]="greaterThan";const De=46088;n[n.relationalOrEqual=De]="relationalOrEqual";const Fe=47113;n[n.bitShiftL=Fe]="bitShiftL";const Oe=48137;n[n.bitShiftR=Oe]="bitShiftR";const oe=49802;n[n.plus=oe]="plus";const ee=50826;n[n.minus=ee]="minus";const ae=51723;n[n.modulo=ae]="modulo";const O=52235;n[n.star=O]="star";const V=53259;n[n.slash=V]="slash";const ne=54348;n[n.exponent=ne]="exponent";const ie=55296;n[n.jsxName=ie]="jsxName";const we=56320;n[n.jsxText=we]="jsxText";const Ie=57344;n[n.jsxEmptyText=Ie]="jsxEmptyText";const je=58880;n[n.jsxTagStart=je]="jsxTagStart";const Ye=59392;n[n.jsxTagEnd=Ye]="jsxTagEnd";const rt=60928;n[n.typeParameterStart=rt]="typeParameterStart";const gt=61440;n[n.nonNullAssertion=gt]="nonNullAssertion";const ei=62480;n[n._break=ei]="_break";const ii=63504;n[n._case=ii]="_case";const et=64528;n[n._catch=et]="_catch";const mi=65552;n[n._continue=mi]="_continue";const Wi=66576;n[n._debugger=Wi]="_debugger";const Co=67600;n[n._default=Co]="_default";const oi=68624;n[n._do=oi]="_do";const Bn=69648;n[n._else=Bn]="_else";const Mc=70672;n[n._finally=Mc]="_finally";const Oc=71696;n[n._for=Oc]="_for";const Wo=73232;n[n._function=Wo]="_function";const ql=73744;n[n._if=ql]="_if";const Fc=74768;n[n._return=Fc]="_return";const Bc=75792;n[n._switch=Bc]="_switch";const Gu=77456;n[n._throw=Gu]="_throw";const Wc=77840;n[n._try=Wc]="_try";const Hm=78864;n[n._var=Hm]="_var";const ba=79888;n[n._let=ba]="_let";const Nd=80912;n[n._const=Nd]="_const";const Ad=81936;n[n._while=Ad]="_while";const dg=82960;n[n._with=dg]="_with";const XC=84496;n[n._new=XC]="_new";const fg=85520;n[n._this=fg]="_this";const ol=86544;n[n._super=ol]="_super";const $v=87568;n[n._class=$v]="_class";const zv=88080;n[n._extends=zv]="_extends";const Uv=89104;n[n._export=Uv]="_export";const jv=90640;n[n._import=jv]="_import";const QC=91664;n[n._yield=QC]="_yield";const It=92688;n[n._null=It]="_null";const Se=93712;n[n._true=Se]="_true";const Xe=94736;n[n._false=Xe]="_false";const ht=95256;n[n._in=ht]="_in";const rn=96280;n[n._instanceof=rn]="_instanceof";const Os=97936;n[n._typeof=Os]="_typeof";const wo=98960;n[n._void=wo]="_void";const cs=99984;n[n._delete=cs]="_delete";const Kl=100880;n[n._async=Kl]="_async";const JC=101904;n[n._get=JC]="_get";const dD=102928;n[n._set=dD]="_set";const mY=103952;n[n._declare=mY]="_declare";const Iye=104976;n[n._readonly=Iye]="_readonly";const Tye=106e3;n[n._abstract=Tye]="_abstract";const Nye=107024;n[n._static=Nye]="_static";const Aye=107536;n[n._public=Aye]="_public";const Pye=108560;n[n._private=Pye]="_private";const Rye=109584;n[n._protected=Rye]="_protected";const Mye=110608;n[n._override=Mye]="_override";const Oye=112144;n[n._as=Oye]="_as";const Fye=113168;n[n._enum=Fye]="_enum";const Bye=114192;n[n._type=Bye]="_type";const Wye=115216;n[n._implements=Wye]="_implements"})(C||(C={}));function V2e(n){switch(n){case C.num:return"num";case C.bigint:return"bigint";case C.decimal:return"decimal";case C.regexp:return"regexp";case C.string:return"string";case C.name:return"name";case C.eof:return"eof";case C.bracketL:return"[";case C.bracketR:return"]";case C.braceL:return"{";case C.braceBarL:return"{|";case C.braceR:return"}";case C.braceBarR:return"|}";case C.parenL:return"(";case C.parenR:return")";case C.comma:return",";case C.semi:return";";case C.colon:return":";case C.doubleColon:return"::";case C.dot:return".";case C.question:return"?";case C.questionDot:return"?.";case C.arrow:return"=>";case C.template:return"template";case C.ellipsis:return"...";case C.backQuote:return"`";case C.dollarBraceL:return"${";case C.at:return"@";case C.hash:return"#";case C.eq:return"=";case C.assign:return"_=";case C.preIncDec:return"++/--";case C.postIncDec:return"++/--";case C.bang:return"!";case C.tilde:return"~";case C.pipeline:return"|>";case C.nullishCoalescing:return"??";case C.logicalOR:return"||";case C.logicalAND:return"&&";case C.bitwiseOR:return"|";case C.bitwiseXOR:return"^";case C.bitwiseAND:return"&";case C.equality:return"==/!=";case C.lessThan:return"<";case C.greaterThan:return">";case C.relationalOrEqual:return"<=/>=";case C.bitShiftL:return"<<";case C.bitShiftR:return">>/>>>";case C.plus:return"+";case C.minus:return"-";case C.modulo:return"%";case C.star:return"*";case C.slash:return"/";case C.exponent:return"**";case C.jsxName:return"jsxName";case C.jsxText:return"jsxText";case C.jsxEmptyText:return"jsxEmptyText";case C.jsxTagStart:return"jsxTagStart";case C.jsxTagEnd:return"jsxTagEnd";case C.typeParameterStart:return"typeParameterStart";case C.nonNullAssertion:return"nonNullAssertion";case C._break:return"break";case C._case:return"case";case C._catch:return"catch";case C._continue:return"continue";case C._debugger:return"debugger";case C._default:return"default";case C._do:return"do";case C._else:return"else";case C._finally:return"finally";case C._for:return"for";case C._function:return"function";case C._if:return"if";case C._return:return"return";case C._switch:return"switch";case C._throw:return"throw";case C._try:return"try";case C._var:return"var";case C._let:return"let";case C._const:return"const";case C._while:return"while";case C._with:return"with";case C._new:return"new";case C._this:return"this";case C._super:return"super";case C._class:return"class";case C._extends:return"extends";case C._export:return"export";case C._import:return"import";case C._yield:return"yield";case C._null:return"null";case C._true:return"true";case C._false:return"false";case C._in:return"in";case C._instanceof:return"instanceof";case C._typeof:return"typeof";case C._void:return"void";case C._delete:return"delete";case C._async:return"async";case C._get:return"get";case C._set:return"set";case C._declare:return"declare";case C._readonly:return"readonly";case C._abstract:return"abstract";case C._static:return"static";case C._public:return"public";case C._private:return"private";case C._protected:return"protected";case C._override:return"override";case C._as:return"as";case C._enum:return"enum";case C._type:return"type";case C._implements:return"implements";default:return""}}class ud{constructor(e,t,i){this.startTokenIndex=e,this.endTokenIndex=t,this.isFunctionScope=i}}class H2e{constructor(e,t,i,s,r,o,a,l,c,u,h,d,f){this.potentialArrowAt=e,this.noAnonFunctionType=t,this.inDisallowConditionalTypesContext=i,this.tokensLength=s,this.scopesLength=r,this.pos=o,this.type=a,this.contextualKeyword=l,this.start=c,this.end=u,this.isType=h,this.scopeDepth=d,this.error=f}}let $2e=class Sa{constructor(){Sa.prototype.__init.call(this),Sa.prototype.__init2.call(this),Sa.prototype.__init3.call(this),Sa.prototype.__init4.call(this),Sa.prototype.__init5.call(this),Sa.prototype.__init6.call(this),Sa.prototype.__init7.call(this),Sa.prototype.__init8.call(this),Sa.prototype.__init9.call(this),Sa.prototype.__init10.call(this),Sa.prototype.__init11.call(this),Sa.prototype.__init12.call(this),Sa.prototype.__init13.call(this)}__init(){this.potentialArrowAt=-1}__init2(){this.noAnonFunctionType=!1}__init3(){this.inDisallowConditionalTypesContext=!1}__init4(){this.tokens=[]}__init5(){this.scopes=[]}__init6(){this.pos=0}__init7(){this.type=C.eof}__init8(){this.contextualKeyword=de.NONE}__init9(){this.start=0}__init10(){this.end=0}__init11(){this.isType=!1}__init12(){this.scopeDepth=0}__init13(){this.error=null}snapshot(){return new H2e(this.potentialArrowAt,this.noAnonFunctionType,this.inDisallowConditionalTypesContext,this.tokens.length,this.scopes.length,this.pos,this.type,this.contextualKeyword,this.start,this.end,this.isType,this.scopeDepth,this.error)}restoreFromSnapshot(e){this.potentialArrowAt=e.potentialArrowAt,this.noAnonFunctionType=e.noAnonFunctionType,this.inDisallowConditionalTypesContext=e.inDisallowConditionalTypesContext,this.tokens.length=e.tokensLength,this.scopes.length=e.scopesLength,this.pos=e.pos,this.type=e.type,this.contextualKeyword=e.contextualKeyword,this.start=e.start,this.end=e.end,this.isType=e.isType,this.scopeDepth=e.scopeDepth,this.error=e.error}};var ye;(function(n){n[n.backSpace=8]="backSpace";const t=10;n[n.lineFeed=t]="lineFeed";const i=9;n[n.tab=i]="tab";const s=13;n[n.carriageReturn=s]="carriageReturn";const r=14;n[n.shiftOut=r]="shiftOut";const o=32;n[n.space=o]="space";const a=33;n[n.exclamationMark=a]="exclamationMark";const l=34;n[n.quotationMark=l]="quotationMark";const c=35;n[n.numberSign=c]="numberSign";const u=36;n[n.dollarSign=u]="dollarSign";const h=37;n[n.percentSign=h]="percentSign";const d=38;n[n.ampersand=d]="ampersand";const f=39;n[n.apostrophe=f]="apostrophe";const g=40;n[n.leftParenthesis=g]="leftParenthesis";const p=41;n[n.rightParenthesis=p]="rightParenthesis";const m=42;n[n.asterisk=m]="asterisk";const _=43;n[n.plusSign=_]="plusSign";const b=44;n[n.comma=b]="comma";const y=45;n[n.dash=y]="dash";const w=46;n[n.dot=w]="dot";const S=47;n[n.slash=S]="slash";const E=48;n[n.digit0=E]="digit0";const L=49;n[n.digit1=L]="digit1";const k=50;n[n.digit2=k]="digit2";const x=51;n[n.digit3=x]="digit3";const I=52;n[n.digit4=I]="digit4";const N=53;n[n.digit5=N]="digit5";const T=54;n[n.digit6=T]="digit6";const P=55;n[n.digit7=P]="digit7";const R=56;n[n.digit8=R]="digit8";const F=57;n[n.digit9=F]="digit9";const j=58;n[n.colon=j]="colon";const K=59;n[n.semicolon=K]="semicolon";const Z=60;n[n.lessThan=Z]="lessThan";const q=61;n[n.equalsTo=q]="equalsTo";const re=62;n[n.greaterThan=re]="greaterThan";const G=63;n[n.questionMark=G]="questionMark";const W=64;n[n.atSign=W]="atSign";const Y=65;n[n.uppercaseA=Y]="uppercaseA";const X=66;n[n.uppercaseB=X]="uppercaseB";const z=67;n[n.uppercaseC=z]="uppercaseC";const le=68;n[n.uppercaseD=le]="uppercaseD";const J=69;n[n.uppercaseE=J]="uppercaseE";const be=70;n[n.uppercaseF=be]="uppercaseF";const fe=71;n[n.uppercaseG=fe]="uppercaseG";const ge=72;n[n.uppercaseH=ge]="uppercaseH";const se=73;n[n.uppercaseI=se]="uppercaseI";const H=74;n[n.uppercaseJ=H]="uppercaseJ";const te=75;n[n.uppercaseK=te]="uppercaseK";const ce=76;n[n.uppercaseL=ce]="uppercaseL";const ve=77;n[n.uppercaseM=ve]="uppercaseM";const Ee=78;n[n.uppercaseN=Ee]="uppercaseN";const De=79;n[n.uppercaseO=De]="uppercaseO";const Fe=80;n[n.uppercaseP=Fe]="uppercaseP";const Oe=81;n[n.uppercaseQ=Oe]="uppercaseQ";const oe=82;n[n.uppercaseR=oe]="uppercaseR";const ee=83;n[n.uppercaseS=ee]="uppercaseS";const ae=84;n[n.uppercaseT=ae]="uppercaseT";const O=85;n[n.uppercaseU=O]="uppercaseU";const V=86;n[n.uppercaseV=V]="uppercaseV";const ne=87;n[n.uppercaseW=ne]="uppercaseW";const ie=88;n[n.uppercaseX=ie]="uppercaseX";const we=89;n[n.uppercaseY=we]="uppercaseY";const Ie=90;n[n.uppercaseZ=Ie]="uppercaseZ";const je=91;n[n.leftSquareBracket=je]="leftSquareBracket";const Ye=92;n[n.backslash=Ye]="backslash";const rt=93;n[n.rightSquareBracket=rt]="rightSquareBracket";const gt=94;n[n.caret=gt]="caret";const ei=95;n[n.underscore=ei]="underscore";const ii=96;n[n.graveAccent=ii]="graveAccent";const et=97;n[n.lowercaseA=et]="lowercaseA";const mi=98;n[n.lowercaseB=mi]="lowercaseB";const Wi=99;n[n.lowercaseC=Wi]="lowercaseC";const Co=100;n[n.lowercaseD=Co]="lowercaseD";const oi=101;n[n.lowercaseE=oi]="lowercaseE";const Bn=102;n[n.lowercaseF=Bn]="lowercaseF";const Mc=103;n[n.lowercaseG=Mc]="lowercaseG";const Oc=104;n[n.lowercaseH=Oc]="lowercaseH";const Wo=105;n[n.lowercaseI=Wo]="lowercaseI";const ql=106;n[n.lowercaseJ=ql]="lowercaseJ";const Fc=107;n[n.lowercaseK=Fc]="lowercaseK";const Bc=108;n[n.lowercaseL=Bc]="lowercaseL";const Gu=109;n[n.lowercaseM=Gu]="lowercaseM";const Wc=110;n[n.lowercaseN=Wc]="lowercaseN";const Hm=111;n[n.lowercaseO=Hm]="lowercaseO";const ba=112;n[n.lowercaseP=ba]="lowercaseP";const Nd=113;n[n.lowercaseQ=Nd]="lowercaseQ";const Ad=114;n[n.lowercaseR=Ad]="lowercaseR";const dg=115;n[n.lowercaseS=dg]="lowercaseS";const XC=116;n[n.lowercaseT=XC]="lowercaseT";const fg=117;n[n.lowercaseU=fg]="lowercaseU";const ol=118;n[n.lowercaseV=ol]="lowercaseV";const $v=119;n[n.lowercaseW=$v]="lowercaseW";const zv=120;n[n.lowercaseX=zv]="lowercaseX";const Uv=121;n[n.lowercaseY=Uv]="lowercaseY";const jv=122;n[n.lowercaseZ=jv]="lowercaseZ";const QC=123;n[n.leftCurlyBrace=QC]="leftCurlyBrace";const It=124;n[n.verticalBar=It]="verticalBar";const Se=125;n[n.rightCurlyBrace=Se]="rightCurlyBrace";const Xe=126;n[n.tilde=Xe]="tilde";const ht=160;n[n.nonBreakingSpace=ht]="nonBreakingSpace";const rn=5760;n[n.oghamSpaceMark=rn]="oghamSpaceMark";const Os=8232;n[n.lineSeparator=Os]="lineSeparator";const wo=8233;n[n.paragraphSeparator=wo]="paragraphSeparator"})(ye||(ye={}));let eO,Pi,nn,D,tt,gde;function sL(){return gde++}function z2e(n){if("pos"in n){const e=j2e(n.pos);n.message+=` (${e.line}:${e.column})`,n.loc=e}return n}class U2e{constructor(e,t){this.line=e,this.column=t}}function j2e(n){let e=1,t=1;for(let i=0;i<n;i++)tt.charCodeAt(i)===ye.lineFeed?(e++,t=1):t++;return new U2e(e,t)}function q2e(n,e,t,i){tt=n,D=new $2e,gde=1,eO=e,Pi=t,nn=i}function Dt(n){return D.contextualKeyword===n}function GU(n){const e=aE();return e.type===C.name&&e.contextualKeyword===n}function br(n){return D.contextualKeyword===n&&Me(C.name)}function Us(n){br(n)||ci()}function wl(){return Q(C.eof)||Q(C.braceR)||la()}function la(){const n=D.tokens[D.tokens.length-1],e=n?n.end:0;for(let t=e;t<D.start;t++){const i=tt.charCodeAt(t);if(i===ye.lineFeed||i===ye.carriageReturn||i===8232||i===8233)return!0}return!1}function pde(){const n=YU();for(let e=D.end;e<n;e++){const t=tt.charCodeAt(e);if(t===ye.lineFeed||t===ye.carriageReturn||t===8232||t===8233)return!0}return!1}function Th(){return Me(C.semi)||wl()}function ls(){Th()||ci('Unexpected token, expected ";"')}function He(n){Me(n)||ci(`Unexpected token, expected "${V2e(n)}"`)}function ci(n="Unexpected token",e=D.start){if(D.error)return;const t=new SyntaxError(n);t.pos=e,D.error=t,D.pos=tt.length,li(C.eof)}const mde=[9,11,12,ye.space,ye.nonBreakingSpace,ye.oghamSpaceMark,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279],DQ=/(?:\s|\/\/.*|\/\*[^]*?\*\/)*/g,_de=new Uint8Array(65536);for(const n of mde)_de[n]=1;function K2e(n){if(n<48)return n===36;if(n<58)return!0;if(n<65)return!1;if(n<91)return!0;if(n<97)return n===95;if(n<123)return!0;if(n<128)return!1;throw new Error("Should not be called with non-ASCII char code.")}const Eu=new Uint8Array(65536);for(let n=0;n<128;n++)Eu[n]=K2e(n)?1:0;for(let n=128;n<65536;n++)Eu[n]=1;for(const n of mde)Eu[n]=0;Eu[8232]=0;Eu[8233]=0;const oE=Eu.slice();for(let n=ye.digit0;n<=ye.digit9;n++)oE[n]=0;const IQ=new Int32Array([-1,27,783,918,1755,2376,2862,3483,-1,3699,-1,4617,4752,4833,5130,5508,5940,-1,6480,6939,7749,8181,8451,8613,-1,8829,-1,-1,-1,54,243,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,432,-1,-1,-1,675,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,81,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,108,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,135,-1,-1,-1,-1,-1,-1,-1,-1,-1,162,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,189,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,216,-1,-1,-1,-1,-1,-1,de._abstract<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,270,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,297,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,324,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,351,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,378,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,405,-1,-1,-1,-1,-1,-1,-1,-1,de._accessor<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,de._as<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,459,-1,-1,-1,-1,-1,594,-1,-1,-1,-1,-1,-1,486,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,513,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,540,-1,-1,-1,-1,-1,-1,de._assert<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,567,-1,-1,-1,-1,-1,-1,-1,de._asserts<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,621,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,648,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,de._async<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,702,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,729,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,756,-1,-1,-1,-1,-1,-1,de._await<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,810,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,837,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,864,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,891,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,(C._break<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,945,-1,-1,-1,-1,-1,-1,1107,-1,-1,-1,1242,-1,-1,1350,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,972,1026,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,999,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,(C._case<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1053,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1080,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,(C._catch<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1134,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1161,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1188,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1215,-1,-1,-1,-1,-1,-1,-1,de._checks<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1269,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1296,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1323,-1,-1,-1,-1,-1,-1,-1,(C._class<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1377,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1404,1620,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1431,-1,-1,-1,-1,-1,-1,(C._const<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1458,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1485,-1,-1,-1,-1,-1,-1,-1,-1,1512,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1539,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1566,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1593,-1,-1,-1,-1,-1,-1,-1,-1,de._constructor<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1647,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1674,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1701,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1728,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,(C._continue<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1782,-1,-1,-1,-1,-1,-1,-1,-1,-1,2349,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1809,1971,-1,-1,2106,-1,-1,-1,-1,-1,2241,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1836,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1863,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1890,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1917,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1944,-1,-1,-1,-1,-1,-1,-1,-1,(C._debugger<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1998,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2025,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2052,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2079,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,de._declare<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2133,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2160,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2187,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2214,-1,-1,-1,-1,-1,-1,(C._default<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2268,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2295,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2322,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,(C._delete<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,(C._do<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2403,-1,2484,-1,-1,-1,-1,-1,-1,-1,-1,-1,2565,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2430,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2457,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,(C._else<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2511,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2538,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,de._enum<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2592,-1,-1,-1,2727,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2619,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2646,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2673,-1,-1,-1,-1,-1,-1,(C._export<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2700,-1,-1,-1,-1,-1,-1,-1,de._exports<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2754,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2781,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2808,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2835,-1,-1,-1,-1,-1,-1,-1,(C._extends<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2889,-1,-1,-1,-1,-1,-1,-1,2997,-1,-1,-1,-1,-1,3159,-1,-1,3213,-1,-1,3294,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2916,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2943,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2970,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,(C._false<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3024,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3051,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3078,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3105,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3132,-1,(C._finally<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3186,-1,-1,-1,-1,-1,-1,-1,-1,(C._for<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3240,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3267,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,de._from<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3321,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3348,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3375,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3402,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3429,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3456,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,(C._function<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3510,-1,-1,-1,-1,-1,-1,3564,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3537,-1,-1,-1,-1,-1,-1,de._get<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3591,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3618,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3645,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3672,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,de._global<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3726,-1,-1,-1,-1,-1,-1,3753,4077,-1,-1,-1,-1,4590,-1,-1,-1,-1,-1,-1,-1,(C._if<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3780,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3807,-1,-1,3996,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3834,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3861,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3888,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3915,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3942,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3969,-1,-1,-1,-1,-1,-1,-1,de._implements<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4023,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4050,-1,-1,-1,-1,-1,-1,(C._import<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,(C._in<<1)+1,-1,-1,-1,-1,-1,4104,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4185,4401,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4131,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4158,-1,-1,-1,-1,-1,-1,-1,-1,de._infer<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4212,-1,-1,-1,-1,-1,-1,-1,4239,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4266,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4293,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4320,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4347,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4374,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,(C._instanceof<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4428,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4455,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4482,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4509,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4536,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4563,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,de._interface<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,de._is<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4644,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4671,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4698,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4725,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,de._keyof<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4779,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4806,-1,-1,-1,-1,-1,-1,(C._let<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4860,-1,-1,-1,-1,-1,4995,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4887,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4914,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4941,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4968,-1,-1,-1,-1,-1,-1,-1,de._mixins<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5022,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5049,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5076,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5103,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,de._module<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5157,-1,-1,-1,5373,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5427,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5184,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5211,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5238,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5265,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5292,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5319,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5346,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,de._namespace<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5400,-1,-1,-1,(C._new<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5454,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5481,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,(C._null<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5535,-1,-1,-1,-1,-1,-1,-1,-1,-1,5562,-1,-1,-1,-1,5697,5751,-1,-1,-1,-1,de._of<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5589,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5616,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5643,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5670,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,de._opaque<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5724,-1,-1,-1,-1,-1,-1,de._out<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5778,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5805,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5832,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5859,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5886,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5913,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,de._override<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5967,-1,-1,6345,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5994,-1,-1,-1,-1,-1,6129,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6021,-1,-1,-1,-1,-1,6048,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6075,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6102,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,de._private<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6156,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6183,-1,-1,-1,-1,-1,-1,-1,-1,-1,6318,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6210,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6237,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6264,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6291,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,de._protected<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,de._proto<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6372,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6399,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6426,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6453,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,de._public<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6507,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6534,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6696,-1,-1,6831,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6561,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6588,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6615,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6642,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6669,-1,de._readonly<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6723,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6750,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6777,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6804,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,de._require<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6858,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6885,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6912,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,(C._return<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6966,-1,-1,-1,7182,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7236,7371,-1,7479,-1,7614,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6993,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7020,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7047,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7074,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7101,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7128,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7155,-1,-1,-1,-1,-1,-1,-1,de._satisfies<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7209,-1,-1,-1,-1,-1,-1,de._set<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7263,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7290,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7317,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7344,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,de._static<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7398,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7425,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7452,-1,-1,-1,-1,-1,-1,-1,-1,(C._super<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7506,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7533,-1,-1,-1,-1,-1,-1,-1,-1,-1,7560,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7587,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,(C._switch<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7641,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7668,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7695,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7722,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,de._symbol<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7776,-1,-1,-1,-1,-1,-1,-1,-1,-1,7938,-1,-1,-1,-1,-1,-1,8046,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7803,-1,-1,-1,-1,-1,-1,-1,-1,7857,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7830,-1,-1,-1,-1,-1,-1,-1,(C._this<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7884,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7911,-1,-1,-1,(C._throw<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7965,-1,-1,-1,8019,-1,-1,-1,-1,-1,-1,7992,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,(C._true<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,(C._try<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8073,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8100,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,de._type<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8127,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8154,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,(C._typeof<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8208,-1,-1,-1,-1,8343,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8235,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8262,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8289,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8316,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,de._unique<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8370,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8397,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8424,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,de._using<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8478,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8532,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8505,-1,-1,-1,-1,-1,-1,-1,-1,(C._var<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8559,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8586,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,(C._void<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8640,8748,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8667,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8694,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8721,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,(C._while<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8775,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8802,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,(C._with<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8856,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8883,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8910,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8937,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,(C._yield<<1)+1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]);function G2e(){let n=0,e=0,t=D.pos;for(;t<tt.length&&(e=tt.charCodeAt(t),!(e<ye.lowercaseA||e>ye.lowercaseZ));){const s=IQ[n+(e-ye.lowercaseA)+1];if(s===-1)break;n=s,t++}const i=IQ[n];if(i>-1&&!Eu[e]){D.pos=t,i&1?li(i>>>1):li(C.name,i>>>1);return}for(;t<tt.length;){const s=tt.charCodeAt(t);if(Eu[s])t++;else if(s===ye.backslash){if(t+=2,tt.charCodeAt(t)===ye.leftCurlyBrace){for(;t<tt.length&&tt.charCodeAt(t)!==ye.rightCurlyBrace;)t++;t++}}else if(s===ye.atSign&&tt.charCodeAt(t+1)===ye.atSign)t+=2;else break}D.pos=t,li(C.name)}var Mt;(function(n){n[n.Access=0]="Access";const t=1;n[n.ExportAccess=t]="ExportAccess";const i=t+1;n[n.TopLevelDeclaration=i]="TopLevelDeclaration";const s=i+1;n[n.FunctionScopedDeclaration=s]="FunctionScopedDeclaration";const r=s+1;n[n.BlockScopedDeclaration=r]="BlockScopedDeclaration";const o=r+1;n[n.ObjectShorthandTopLevelDeclaration=o]="ObjectShorthandTopLevelDeclaration";const a=o+1;n[n.ObjectShorthandFunctionScopedDeclaration=a]="ObjectShorthandFunctionScopedDeclaration";const l=a+1;n[n.ObjectShorthandBlockScopedDeclaration=l]="ObjectShorthandBlockScopedDeclaration";const c=l+1;n[n.ObjectShorthand=c]="ObjectShorthand";const u=c+1;n[n.ImportDeclaration=u]="ImportDeclaration";const h=u+1;n[n.ObjectKey=h]="ObjectKey";const d=h+1;n[n.ImportAccess=d]="ImportAccess"})(Mt||(Mt={}));var pu;(function(n){n[n.NoChildren=0]="NoChildren";const t=1;n[n.OneChild=t]="OneChild";const i=t+1;n[n.StaticChildren=i]="StaticChildren";const s=i+1;n[n.KeyAfterPropSpread=s]="KeyAfterPropSpread"})(pu||(pu={}));function vde(n){const e=n.identifierRole;return e===Mt.TopLevelDeclaration||e===Mt.FunctionScopedDeclaration||e===Mt.BlockScopedDeclaration||e===Mt.ObjectShorthandTopLevelDeclaration||e===Mt.ObjectShorthandFunctionScopedDeclaration||e===Mt.ObjectShorthandBlockScopedDeclaration}function Y2e(n){const e=n.identifierRole;return e===Mt.FunctionScopedDeclaration||e===Mt.BlockScopedDeclaration||e===Mt.ObjectShorthandFunctionScopedDeclaration||e===Mt.ObjectShorthandBlockScopedDeclaration}function bde(n){const e=n.identifierRole;return e===Mt.TopLevelDeclaration||e===Mt.ObjectShorthandTopLevelDeclaration||e===Mt.ImportDeclaration}function Z2e(n){const e=n.identifierRole;return e===Mt.TopLevelDeclaration||e===Mt.BlockScopedDeclaration||e===Mt.ObjectShorthandTopLevelDeclaration||e===Mt.ObjectShorthandBlockScopedDeclaration}function X2e(n){const e=n.identifierRole;return e===Mt.FunctionScopedDeclaration||e===Mt.ObjectShorthandFunctionScopedDeclaration}function Q2e(n){return n.identifierRole===Mt.ObjectShorthandTopLevelDeclaration||n.identifierRole===Mt.ObjectShorthandBlockScopedDeclaration||n.identifierRole===Mt.ObjectShorthandFunctionScopedDeclaration}class tO{constructor(){this.type=D.type,this.contextualKeyword=D.contextualKeyword,this.start=D.start,this.end=D.end,this.scopeDepth=D.scopeDepth,this.isType=D.isType,this.identifierRole=null,this.jsxRole=null,this.shadowsGlobal=!1,this.isAsyncOperation=!1,this.contextId=null,this.rhsEndIndex=null,this.isExpression=!1,this.numNullishCoalesceStarts=0,this.numNullishCoalesceEnds=0,this.isOptionalChainStart=!1,this.isOptionalChainEnd=!1,this.subscriptStartIndex=null,this.nullishStartIndex=null}}function $e(){D.tokens.push(new tO),Sde()}function Zg(){D.tokens.push(new tO),D.start=D.pos,pFe()}function J2e(){D.type===C.assign&&--D.pos,dFe()}function gi(n){for(let t=D.tokens.length-n;t<D.tokens.length;t++)D.tokens[t].isType=!0;const e=D.isType;return D.isType=!0,e}function di(n){D.isType=n}function Me(n){return Q(n)?($e(),!0):!1}function yde(n){const e=D.isType;D.isType=!0,Me(n),D.isType=e}function Q(n){return D.type===n}function Is(){const n=D.snapshot();$e();const e=D.type;return D.restoreFromSnapshot(n),e}class eFe{constructor(e,t){this.type=e,this.contextualKeyword=t}}function aE(){const n=D.snapshot();$e();const e=D.type,t=D.contextualKeyword;return D.restoreFromSnapshot(n),new eFe(e,t)}function YU(){return Cde(D.pos)}function Cde(n){DQ.lastIndex=n;const e=DQ.exec(tt);return n+e[0].length}function wde(){return tt.charCodeAt(YU())}function Sde(){if(Lde(),D.start=D.pos,D.pos>=tt.length){const n=D.tokens;n.length>=2&&n[n.length-1].start>=tt.length&&n[n.length-2].start>=tt.length&&ci("Unexpectedly reached the end of input."),li(C.eof);return}tFe(tt.charCodeAt(D.pos))}function tFe(n){oE[n]||n===ye.backslash||n===ye.atSign&&tt.charCodeAt(D.pos+1)===ye.atSign?G2e():Dde(n)}function iFe(){for(;tt.charCodeAt(D.pos)!==ye.asterisk||tt.charCodeAt(D.pos+1)!==ye.slash;)if(D.pos++,D.pos>tt.length){ci("Unterminated comment",D.pos-2);return}D.pos+=2}function kde(n){let e=tt.charCodeAt(D.pos+=n);if(D.pos<tt.length)for(;e!==ye.lineFeed&&e!==ye.carriageReturn&&e!==ye.lineSeparator&&e!==ye.paragraphSeparator&&++D.pos<tt.length;)e=tt.charCodeAt(D.pos)}function Lde(){for(;D.pos<tt.length;){const n=tt.charCodeAt(D.pos);switch(n){case ye.carriageReturn:tt.charCodeAt(D.pos+1)===ye.lineFeed&&++D.pos;case ye.lineFeed:case ye.lineSeparator:case ye.paragraphSeparator:++D.pos;break;case ye.slash:switch(tt.charCodeAt(D.pos+1)){case ye.asterisk:D.pos+=2,iFe();break;case ye.slash:kde(2);break;default:return}break;default:if(_de[n])++D.pos;else return}}}function li(n,e=de.NONE){D.end=D.pos,D.type=n,D.contextualKeyword=e}function nFe(){const n=tt.charCodeAt(D.pos+1);if(n>=ye.digit0&&n<=ye.digit9){Ide(!0);return}n===ye.dot&&tt.charCodeAt(D.pos+2)===ye.dot?(D.pos+=3,li(C.ellipsis)):(++D.pos,li(C.dot))}function sFe(){tt.charCodeAt(D.pos+1)===ye.equalsTo?cn(C.assign,2):cn(C.slash,1)}function rFe(n){let e=n===ye.asterisk?C.star:C.modulo,t=1,i=tt.charCodeAt(D.pos+1);n===ye.asterisk&&i===ye.asterisk&&(t++,i=tt.charCodeAt(D.pos+2),e=C.exponent),i===ye.equalsTo&&tt.charCodeAt(D.pos+2)!==ye.greaterThan&&(t++,e=C.assign),cn(e,t)}function oFe(n){const e=tt.charCodeAt(D.pos+1);if(e===n){tt.charCodeAt(D.pos+2)===ye.equalsTo?cn(C.assign,3):cn(n===ye.verticalBar?C.logicalOR:C.logicalAND,2);return}if(n===ye.verticalBar){if(e===ye.greaterThan){cn(C.pipeline,2);return}else if(e===ye.rightCurlyBrace&&nn){cn(C.braceBarR,2);return}}if(e===ye.equalsTo){cn(C.assign,2);return}cn(n===ye.verticalBar?C.bitwiseOR:C.bitwiseAND,1)}function aFe(){tt.charCodeAt(D.pos+1)===ye.equalsTo?cn(C.assign,2):cn(C.bitwiseXOR,1)}function lFe(n){const e=tt.charCodeAt(D.pos+1);if(e===n){cn(C.preIncDec,2);return}e===ye.equalsTo?cn(C.assign,2):n===ye.plusSign?cn(C.plus,1):cn(C.minus,1)}function cFe(){const n=tt.charCodeAt(D.pos+1);if(n===ye.lessThan){if(tt.charCodeAt(D.pos+2)===ye.equalsTo){cn(C.assign,3);return}D.isType?cn(C.lessThan,1):cn(C.bitShiftL,2);return}n===ye.equalsTo?cn(C.relationalOrEqual,2):cn(C.lessThan,1)}function xde(){if(D.isType){cn(C.greaterThan,1);return}const n=tt.charCodeAt(D.pos+1);if(n===ye.greaterThan){const e=tt.charCodeAt(D.pos+2)===ye.greaterThan?3:2;if(tt.charCodeAt(D.pos+e)===ye.equalsTo){cn(C.assign,e+1);return}cn(C.bitShiftR,e);return}n===ye.equalsTo?cn(C.relationalOrEqual,2):cn(C.greaterThan,1)}function Ede(){D.type===C.greaterThan&&(D.pos-=1,xde())}function uFe(n){const e=tt.charCodeAt(D.pos+1);if(e===ye.equalsTo){cn(C.equality,tt.charCodeAt(D.pos+2)===ye.equalsTo?3:2);return}if(n===ye.equalsTo&&e===ye.greaterThan){D.pos+=2,li(C.arrow);return}cn(n===ye.equalsTo?C.eq:C.bang,1)}function hFe(){const n=tt.charCodeAt(D.pos+1),e=tt.charCodeAt(D.pos+2);n===ye.questionMark&&!(nn&&D.isType)?e===ye.equalsTo?cn(C.assign,3):cn(C.nullishCoalescing,2):n===ye.dot&&!(e>=ye.digit0&&e<=ye.digit9)?(D.pos+=2,li(C.questionDot)):(++D.pos,li(C.question))}function Dde(n){switch(n){case ye.numberSign:++D.pos,li(C.hash);return;case ye.dot:nFe();return;case ye.leftParenthesis:++D.pos,li(C.parenL);return;case ye.rightParenthesis:++D.pos,li(C.parenR);return;case ye.semicolon:++D.pos,li(C.semi);return;case ye.comma:++D.pos,li(C.comma);return;case ye.leftSquareBracket:++D.pos,li(C.bracketL);return;case ye.rightSquareBracket:++D.pos,li(C.bracketR);return;case ye.leftCurlyBrace:nn&&tt.charCodeAt(D.pos+1)===ye.verticalBar?cn(C.braceBarL,2):(++D.pos,li(C.braceL));return;case ye.rightCurlyBrace:++D.pos,li(C.braceR);return;case ye.colon:tt.charCodeAt(D.pos+1)===ye.colon?cn(C.doubleColon,2):(++D.pos,li(C.colon));return;case ye.questionMark:hFe();return;case ye.atSign:++D.pos,li(C.at);return;case ye.graveAccent:++D.pos,li(C.backQuote);return;case ye.digit0:{const e=tt.charCodeAt(D.pos+1);if(e===ye.lowercaseX||e===ye.uppercaseX||e===ye.lowercaseO||e===ye.uppercaseO||e===ye.lowercaseB||e===ye.uppercaseB){fFe();return}}case ye.digit1:case ye.digit2:case ye.digit3:case ye.digit4:case ye.digit5:case ye.digit6:case ye.digit7:case ye.digit8:case ye.digit9:Ide(!1);return;case ye.quotationMark:case ye.apostrophe:gFe(n);return;case ye.slash:sFe();return;case ye.percentSign:case ye.asterisk:rFe(n);return;case ye.verticalBar:case ye.ampersand:oFe(n);return;case ye.caret:aFe();return;case ye.plusSign:case ye.dash:lFe(n);return;case ye.lessThan:cFe();return;case ye.greaterThan:xde();return;case ye.equalsTo:case ye.exclamationMark:uFe(n);return;case ye.tilde:cn(C.tilde,1);return}ci(`Unexpected character '${String.fromCharCode(n)}'`,D.pos)}function cn(n,e){D.pos+=e,li(n)}function dFe(){const n=D.pos;let e=!1,t=!1;for(;;){if(D.pos>=tt.length){ci("Unterminated regular expression",n);return}const i=tt.charCodeAt(D.pos);if(e)e=!1;else{if(i===ye.leftSquareBracket)t=!0;else if(i===ye.rightSquareBracket&&t)t=!1;else if(i===ye.slash&&!t)break;e=i===ye.backslash}++D.pos}++D.pos,mFe(),li(C.regexp)}function s5(){for(;;){const n=tt.charCodeAt(D.pos);if(n>=ye.digit0&&n<=ye.digit9||n===ye.underscore)D.pos++;else break}}function fFe(){for(D.pos+=2;;){const e=tt.charCodeAt(D.pos);if(e>=ye.digit0&&e<=ye.digit9||e>=ye.lowercaseA&&e<=ye.lowercaseF||e>=ye.uppercaseA&&e<=ye.uppercaseF||e===ye.underscore)D.pos++;else break}tt.charCodeAt(D.pos)===ye.lowercaseN?(++D.pos,li(C.bigint)):li(C.num)}function Ide(n){let e=!1,t=!1;n||s5();let i=tt.charCodeAt(D.pos);if(i===ye.dot&&(++D.pos,s5(),i=tt.charCodeAt(D.pos)),(i===ye.uppercaseE||i===ye.lowercaseE)&&(i=tt.charCodeAt(++D.pos),(i===ye.plusSign||i===ye.dash)&&++D.pos,s5(),i=tt.charCodeAt(D.pos)),i===ye.lowercaseN?(++D.pos,e=!0):i===ye.lowercaseM&&(++D.pos,t=!0),e){li(C.bigint);return}if(t){li(C.decimal);return}li(C.num)}function gFe(n){for(D.pos++;;){if(D.pos>=tt.length){ci("Unterminated string constant");return}const e=tt.charCodeAt(D.pos);if(e===ye.backslash)D.pos++;else if(e===n)break;D.pos++}D.pos++,li(C.string)}function pFe(){for(;;){if(D.pos>=tt.length){ci("Unterminated template");return}const n=tt.charCodeAt(D.pos);if(n===ye.graveAccent||n===ye.dollarSign&&tt.charCodeAt(D.pos+1)===ye.leftCurlyBrace){if(D.pos===D.start&&Q(C.template))if(n===ye.dollarSign){D.pos+=2,li(C.dollarBraceL);return}else{++D.pos,li(C.backQuote);return}li(C.template);return}n===ye.backslash&&D.pos++,D.pos++}}function mFe(){for(;D.pos<tt.length;){const n=tt.charCodeAt(D.pos);if(Eu[n])D.pos++;else if(n===ye.backslash){if(D.pos+=2,tt.charCodeAt(D.pos)===ye.leftCurlyBrace){for(;D.pos<tt.length&&tt.charCodeAt(D.pos)!==ye.rightCurlyBrace;)D.pos++;D.pos++}}else break}}function rL(n,e=n.currentIndex()){let t=e+1;if(BD(n,t)){const i=n.identifierNameAtIndex(e);return{isType:!1,leftName:i,rightName:i,endIndex:t}}if(t++,BD(n,t))return{isType:!0,leftName:null,rightName:null,endIndex:t};if(t++,BD(n,t))return{isType:!1,leftName:n.identifierNameAtIndex(e),rightName:n.identifierNameAtIndex(e+2),endIndex:t};if(t++,BD(n,t))return{isType:!0,leftName:null,rightName:null,endIndex:t};throw new Error(`Unexpected import/export specifier at ${e}`)}function BD(n,e){const t=n.tokens[e];return t.type===C.braceR||t.type===C.comma}const _Fe=new Map([["quot",'"'],["amp","&"],["apos","'"],["lt","<"],["gt",">"],["nbsp"," "],["iexcl","¡"],["cent","¢"],["pound","£"],["curren","¤"],["yen","¥"],["brvbar","¦"],["sect","§"],["uml","¨"],["copy","©"],["ordf","ª"],["laquo","«"],["not","¬"],["shy","­"],["reg","®"],["macr","¯"],["deg","°"],["plusmn","±"],["sup2","²"],["sup3","³"],["acute","´"],["micro","µ"],["para","¶"],["middot","·"],["cedil","¸"],["sup1","¹"],["ordm","º"],["raquo","»"],["frac14","¼"],["frac12","½"],["frac34","¾"],["iquest","¿"],["Agrave","À"],["Aacute","Á"],["Acirc","Â"],["Atilde","Ã"],["Auml","Ä"],["Aring","Å"],["AElig","Æ"],["Ccedil","Ç"],["Egrave","È"],["Eacute","É"],["Ecirc","Ê"],["Euml","Ë"],["Igrave","Ì"],["Iacute","Í"],["Icirc","Î"],["Iuml","Ï"],["ETH","Ð"],["Ntilde","Ñ"],["Ograve","Ò"],["Oacute","Ó"],["Ocirc","Ô"],["Otilde","Õ"],["Ouml","Ö"],["times","×"],["Oslash","Ø"],["Ugrave","Ù"],["Uacute","Ú"],["Ucirc","Û"],["Uuml","Ü"],["Yacute","Ý"],["THORN","Þ"],["szlig","ß"],["agrave","à"],["aacute","á"],["acirc","â"],["atilde","ã"],["auml","ä"],["aring","å"],["aelig","æ"],["ccedil","ç"],["egrave","è"],["eacute","é"],["ecirc","ê"],["euml","ë"],["igrave","ì"],["iacute","í"],["icirc","î"],["iuml","ï"],["eth","ð"],["ntilde","ñ"],["ograve","ò"],["oacute","ó"],["ocirc","ô"],["otilde","õ"],["ouml","ö"],["divide","÷"],["oslash","ø"],["ugrave","ù"],["uacute","ú"],["ucirc","û"],["uuml","ü"],["yacute","ý"],["thorn","þ"],["yuml","ÿ"],["OElig","Œ"],["oelig","œ"],["Scaron","Š"],["scaron","š"],["Yuml","Ÿ"],["fnof","ƒ"],["circ","ˆ"],["tilde","˜"],["Alpha","Α"],["Beta","Β"],["Gamma","Γ"],["Delta","Δ"],["Epsilon","Ε"],["Zeta","Ζ"],["Eta","Η"],["Theta","Θ"],["Iota","Ι"],["Kappa","Κ"],["Lambda","Λ"],["Mu","Μ"],["Nu","Ν"],["Xi","Ξ"],["Omicron","Ο"],["Pi","Π"],["Rho","Ρ"],["Sigma","Σ"],["Tau","Τ"],["Upsilon","Υ"],["Phi","Φ"],["Chi","Χ"],["Psi","Ψ"],["Omega","Ω"],["alpha","α"],["beta","β"],["gamma","γ"],["delta","δ"],["epsilon","ε"],["zeta","ζ"],["eta","η"],["theta","θ"],["iota","ι"],["kappa","κ"],["lambda","λ"],["mu","μ"],["nu","ν"],["xi","ξ"],["omicron","ο"],["pi","π"],["rho","ρ"],["sigmaf","ς"],["sigma","σ"],["tau","τ"],["upsilon","υ"],["phi","φ"],["chi","χ"],["psi","ψ"],["omega","ω"],["thetasym","ϑ"],["upsih","ϒ"],["piv","ϖ"],["ensp"," "],["emsp"," "],["thinsp"," "],["zwnj","‌"],["zwj","‍"],["lrm","‎"],["rlm","‏"],["ndash","–"],["mdash","—"],["lsquo","‘"],["rsquo","’"],["sbquo","‚"],["ldquo","“"],["rdquo","”"],["bdquo","„"],["dagger","†"],["Dagger","‡"],["bull","•"],["hellip","…"],["permil","‰"],["prime","′"],["Prime","″"],["lsaquo","‹"],["rsaquo","›"],["oline","‾"],["frasl","⁄"],["euro","€"],["image","ℑ"],["weierp","℘"],["real","ℜ"],["trade","™"],["alefsym","ℵ"],["larr","←"],["uarr","↑"],["rarr","→"],["darr","↓"],["harr","↔"],["crarr","↵"],["lArr","⇐"],["uArr","⇑"],["rArr","⇒"],["dArr","⇓"],["hArr","⇔"],["forall","∀"],["part","∂"],["exist","∃"],["empty","∅"],["nabla","∇"],["isin","∈"],["notin","∉"],["ni","∋"],["prod","∏"],["sum","∑"],["minus","−"],["lowast","∗"],["radic","√"],["prop","∝"],["infin","∞"],["ang","∠"],["and","∧"],["or","∨"],["cap","∩"],["cup","∪"],["int","∫"],["there4","∴"],["sim","∼"],["cong","≅"],["asymp","≈"],["ne","≠"],["equiv","≡"],["le","≤"],["ge","≥"],["sub","⊂"],["sup","⊃"],["nsub","⊄"],["sube","⊆"],["supe","⊇"],["oplus","⊕"],["otimes","⊗"],["perp","⊥"],["sdot","⋅"],["lceil","⌈"],["rceil","⌉"],["lfloor","⌊"],["rfloor","⌋"],["lang","〈"],["rang","〉"],["loz","◊"],["spades","♠"],["clubs","♣"],["hearts","♥"],["diams","♦"]]);function Tde(n){const[e,t]=TQ(n.jsxPragma||"React.createElement"),[i,s]=TQ(n.jsxFragmentPragma||"React.Fragment");return{base:e,suffix:t,fragmentBase:i,fragmentSuffix:s}}function TQ(n){let e=n.indexOf(".");return e===-1&&(e=n.length),[n.slice(0,e),n.slice(e)]}class Fu{getPrefixCode(){return""}getHoistedCode(){return""}getSuffixCode(){return""}}class _1 extends Fu{__init(){this.lastLineNumber=1}__init2(){this.lastIndex=0}__init3(){this.filenameVarName=null}__init4(){this.esmAutomaticImportNameResolutions={}}__init5(){this.cjsAutomaticModuleNameResolutions={}}constructor(e,t,i,s,r){super(),this.rootTransformer=e,this.tokens=t,this.importProcessor=i,this.nameManager=s,this.options=r,_1.prototype.__init.call(this),_1.prototype.__init2.call(this),_1.prototype.__init3.call(this),_1.prototype.__init4.call(this),_1.prototype.__init5.call(this),this.jsxPragmaInfo=Tde(r),this.isAutomaticRuntime=r.jsxRuntime==="automatic",this.jsxImportSource=r.jsxImportSource||"react"}process(){return this.tokens.matches1(C.jsxTagStart)?(this.processJSXTag(),!0):!1}getPrefixCode(){let e="";if(this.filenameVarName&&(e+=`const ${this.filenameVarName} = ${JSON.stringify(this.options.filePath||"")};`),this.isAutomaticRuntime)if(this.importProcessor)for(const[t,i]of Object.entries(this.cjsAutomaticModuleNameResolutions))e+=`var ${i} = require("${t}");`;else{const{createElement:t,...i}=this.esmAutomaticImportNameResolutions;t&&(e+=`import {createElement as ${t}} from "${this.jsxImportSource}";`);const s=Object.entries(i).map(([r,o])=>`${r} as ${o}`).join(", ");if(s){const r=this.jsxImportSource+(this.options.production?"/jsx-runtime":"/jsx-dev-runtime");e+=`import {${s}} from "${r}";`}}return e}processJSXTag(){const{jsxRole:e,start:t}=this.tokens.currentToken(),i=this.options.production?null:this.getElementLocationCode(t);this.isAutomaticRuntime&&e!==pu.KeyAfterPropSpread?this.transformTagToJSXFunc(i,e):this.transformTagToCreateElement(i)}getElementLocationCode(e){return`lineNumber: ${this.getLineNumberForIndex(e)}`}getLineNumberForIndex(e){const t=this.tokens.code;for(;this.lastIndex<e&&this.lastIndex<t.length;)t[this.lastIndex]===` +`&&this.lastLineNumber++,this.lastIndex++;return this.lastLineNumber}transformTagToJSXFunc(e,t){const i=t===pu.StaticChildren;this.tokens.replaceToken(this.getJSXFuncInvocationCode(i));let s=null;if(this.tokens.matches1(C.jsxTagEnd))this.tokens.replaceToken(`${this.getFragmentCode()}, {`),this.processAutomaticChildrenAndEndProps(t);else{if(this.processTagIntro(),this.tokens.appendCode(", {"),s=this.processProps(!0),this.tokens.matches2(C.slash,C.jsxTagEnd))this.tokens.appendCode("}");else if(this.tokens.matches1(C.jsxTagEnd))this.tokens.removeToken(),this.processAutomaticChildrenAndEndProps(t);else throw new Error("Expected either /> or > at the end of the tag.");s&&this.tokens.appendCode(`, ${s}`)}for(this.options.production||(s===null&&this.tokens.appendCode(", void 0"),this.tokens.appendCode(`, ${i}, ${this.getDevSource(e)}, this`)),this.tokens.removeInitialToken();!this.tokens.matches1(C.jsxTagEnd);)this.tokens.removeToken();this.tokens.replaceToken(")")}transformTagToCreateElement(e){if(this.tokens.replaceToken(this.getCreateElementInvocationCode()),this.tokens.matches1(C.jsxTagEnd))this.tokens.replaceToken(`${this.getFragmentCode()}, null`),this.processChildren(!0);else if(this.processTagIntro(),this.processPropsObjectWithDevInfo(e),!this.tokens.matches2(C.slash,C.jsxTagEnd))if(this.tokens.matches1(C.jsxTagEnd))this.tokens.removeToken(),this.processChildren(!0);else throw new Error("Expected either /> or > at the end of the tag.");for(this.tokens.removeInitialToken();!this.tokens.matches1(C.jsxTagEnd);)this.tokens.removeToken();this.tokens.replaceToken(")")}getJSXFuncInvocationCode(e){return this.options.production?e?this.claimAutoImportedFuncInvocation("jsxs","/jsx-runtime"):this.claimAutoImportedFuncInvocation("jsx","/jsx-runtime"):this.claimAutoImportedFuncInvocation("jsxDEV","/jsx-dev-runtime")}getCreateElementInvocationCode(){if(this.isAutomaticRuntime)return this.claimAutoImportedFuncInvocation("createElement","");{const{jsxPragmaInfo:e}=this;return`${this.importProcessor&&this.importProcessor.getIdentifierReplacement(e.base)||e.base}${e.suffix}(`}}getFragmentCode(){if(this.isAutomaticRuntime)return this.claimAutoImportedName("Fragment",this.options.production?"/jsx-runtime":"/jsx-dev-runtime");{const{jsxPragmaInfo:e}=this;return(this.importProcessor&&this.importProcessor.getIdentifierReplacement(e.fragmentBase)||e.fragmentBase)+e.fragmentSuffix}}claimAutoImportedFuncInvocation(e,t){const i=this.claimAutoImportedName(e,t);return this.importProcessor?`${i}.call(void 0, `:`${i}(`}claimAutoImportedName(e,t){if(this.importProcessor){const i=this.jsxImportSource+t;return this.cjsAutomaticModuleNameResolutions[i]||(this.cjsAutomaticModuleNameResolutions[i]=this.importProcessor.getFreeIdentifierForPath(i)),`${this.cjsAutomaticModuleNameResolutions[i]}.${e}`}else return this.esmAutomaticImportNameResolutions[e]||(this.esmAutomaticImportNameResolutions[e]=this.nameManager.claimFreeName(`_${e}`)),this.esmAutomaticImportNameResolutions[e]}processTagIntro(){let e=this.tokens.currentIndex()+1;for(;this.tokens.tokens[e].isType||!this.tokens.matches2AtIndex(e-1,C.jsxName,C.jsxName)&&!this.tokens.matches2AtIndex(e-1,C.greaterThan,C.jsxName)&&!this.tokens.matches1AtIndex(e,C.braceL)&&!this.tokens.matches1AtIndex(e,C.jsxTagEnd)&&!this.tokens.matches2AtIndex(e,C.slash,C.jsxTagEnd);)e++;if(e===this.tokens.currentIndex()+1){const t=this.tokens.identifierName();Nde(t)&&this.tokens.replaceToken(`'${t}'`)}for(;this.tokens.currentIndex()<e;)this.rootTransformer.processToken()}processPropsObjectWithDevInfo(e){const t=this.options.production?"":`__self: this, __source: ${this.getDevSource(e)}`;if(!this.tokens.matches1(C.jsxName)&&!this.tokens.matches1(C.braceL)){t?this.tokens.appendCode(`, {${t}}`):this.tokens.appendCode(", null");return}this.tokens.appendCode(", {"),this.processProps(!1),t?this.tokens.appendCode(` ${t}}`):this.tokens.appendCode("}")}processProps(e){let t=null;for(;;){if(this.tokens.matches2(C.jsxName,C.eq)){const i=this.tokens.identifierName();if(e&&i==="key"){t!==null&&this.tokens.appendCode(t.replace(/[^\n]/g,"")),this.tokens.removeToken(),this.tokens.removeToken();const s=this.tokens.snapshot();this.processPropValue(),t=this.tokens.dangerouslyGetAndRemoveCodeSinceSnapshot(s);continue}else this.processPropName(i),this.tokens.replaceToken(": "),this.processPropValue()}else if(this.tokens.matches1(C.jsxName)){const i=this.tokens.identifierName();this.processPropName(i),this.tokens.appendCode(": true")}else if(this.tokens.matches1(C.braceL))this.tokens.replaceToken(""),this.rootTransformer.processBalancedCode(),this.tokens.replaceToken("");else break;this.tokens.appendCode(",")}return t}processPropName(e){e.includes("-")?this.tokens.replaceToken(`'${e}'`):this.tokens.copyToken()}processPropValue(){this.tokens.matches1(C.braceL)?(this.tokens.replaceToken(""),this.rootTransformer.processBalancedCode(),this.tokens.replaceToken("")):this.tokens.matches1(C.jsxTagStart)?this.processJSXTag():this.processStringPropValue()}processStringPropValue(){const e=this.tokens.currentToken(),t=this.tokens.code.slice(e.start+1,e.end-1),i=NQ(t),s=bFe(t);this.tokens.replaceToken(s+i)}processAutomaticChildrenAndEndProps(e){e===pu.StaticChildren?(this.tokens.appendCode(" children: ["),this.processChildren(!1),this.tokens.appendCode("]}")):(e===pu.OneChild&&this.tokens.appendCode(" children: "),this.processChildren(!1),this.tokens.appendCode("}"))}processChildren(e){let t=e;for(;;){if(this.tokens.matches2(C.jsxTagStart,C.slash))return;let i=!1;if(this.tokens.matches1(C.braceL))this.tokens.matches2(C.braceL,C.braceR)?(this.tokens.replaceToken(""),this.tokens.replaceToken("")):(this.tokens.replaceToken(t?", ":""),this.rootTransformer.processBalancedCode(),this.tokens.replaceToken(""),i=!0);else if(this.tokens.matches1(C.jsxTagStart))this.tokens.appendCode(t?", ":""),this.processJSXTag(),i=!0;else if(this.tokens.matches1(C.jsxText)||this.tokens.matches1(C.jsxEmptyText))i=this.processChildTextElement(t);else throw new Error("Unexpected token when processing JSX children.");i&&(t=!0)}}processChildTextElement(e){const t=this.tokens.currentToken(),i=this.tokens.code.slice(t.start,t.end),s=NQ(i),r=vFe(i);return r==='""'?(this.tokens.replaceToken(s),!1):(this.tokens.replaceToken(`${e?", ":""}${r}${s}`),!0)}getDevSource(e){return`{fileName: ${this.getFilenameVarName()}, ${e}}`}getFilenameVarName(){return this.filenameVarName||(this.filenameVarName=this.nameManager.claimFreeName("_jsxFileName")),this.filenameVarName}}function Nde(n){const e=n.charCodeAt(0);return e>=ye.lowercaseA&&e<=ye.lowercaseZ}function vFe(n){let e="",t="",i=!1,s=!1;for(let r=0;r<n.length;r++){const o=n[r];if(o===" "||o===" "||o==="\r")i||(t+=o);else if(o===` +`)t="",i=!0;else{if(s&&i&&(e+=" "),e+=t,t="",o==="&"){const{entity:a,newI:l}=Ade(n,r+1);r=l-1,e+=a}else e+=o;s=!0,i=!1}}return i||(e+=t),JSON.stringify(e)}function NQ(n){let e=0,t=0;for(const i of n)i===` +`?(e++,t=0):i===" "&&t++;return` +`.repeat(e)+" ".repeat(t)}function bFe(n){let e="";for(let t=0;t<n.length;t++){const i=n[t];if(i===` +`)if(/\s/.test(n[t+1]))for(e+=" ";t<n.length&&/\s/.test(n[t+1]);)t++;else e+=` +`;else if(i==="&"){const{entity:s,newI:r}=Ade(n,t+1);e+=s,t=r-1}else e+=i}return JSON.stringify(e)}function Ade(n,e){let t="",i=0,s,r=e;if(n[r]==="#"){let o=10;r++;let a;if(n[r]==="x")for(o=16,r++,a=r;r<n.length&&CFe(n.charCodeAt(r));)r++;else for(a=r;r<n.length&&yFe(n.charCodeAt(r));)r++;if(n[r]===";"){const l=n.slice(a,r);l&&(r++,s=String.fromCodePoint(parseInt(l,o)))}}else for(;r<n.length&&i++<10;){const o=n[r];if(r++,o===";"){s=_Fe.get(t);break}t+=o}return s?{entity:s,newI:r}:{entity:"&",newI:e}}function yFe(n){return n>=ye.digit0&&n<=ye.digit9}function CFe(n){return n>=ye.digit0&&n<=ye.digit9||n>=ye.lowercaseA&&n<=ye.lowercaseF||n>=ye.uppercaseA&&n<=ye.uppercaseF}function Pde(n,e){const t=Tde(e),i=new Set;for(let s=0;s<n.tokens.length;s++){const r=n.tokens[s];if(r.type===C.name&&!r.isType&&(r.identifierRole===Mt.Access||r.identifierRole===Mt.ObjectShorthand||r.identifierRole===Mt.ExportAccess)&&!r.shadowsGlobal&&i.add(n.identifierNameForToken(r)),r.type===C.jsxTagStart&&i.add(t.base),r.type===C.jsxTagStart&&s+1<n.tokens.length&&n.tokens[s+1].type===C.jsxTagEnd&&(i.add(t.base),i.add(t.fragmentBase)),r.type===C.jsxName&&r.identifierRole===Mt.Access){const o=n.identifierNameForToken(r);(!Nde(o)||n.tokens[s+1].type===C.dot)&&i.add(n.identifierNameForToken(r))}}return i}class v1{__init(){this.nonTypeIdentifiers=new Set}__init2(){this.importInfoByPath=new Map}__init3(){this.importsToReplace=new Map}__init4(){this.identifierReplacements=new Map}__init5(){this.exportBindingsByLocalName=new Map}constructor(e,t,i,s,r,o,a){this.nameManager=e,this.tokens=t,this.enableLegacyTypeScriptModuleInterop=i,this.options=s,this.isTypeScriptTransformEnabled=r,this.keepUnusedImports=o,this.helperManager=a,v1.prototype.__init.call(this),v1.prototype.__init2.call(this),v1.prototype.__init3.call(this),v1.prototype.__init4.call(this),v1.prototype.__init5.call(this)}preprocessTokens(){for(let e=0;e<this.tokens.tokens.length;e++)this.tokens.matches1AtIndex(e,C._import)&&!this.tokens.matches3AtIndex(e,C._import,C.name,C.eq)&&this.preprocessImportAtIndex(e),this.tokens.matches1AtIndex(e,C._export)&&!this.tokens.matches2AtIndex(e,C._export,C.eq)&&this.preprocessExportAtIndex(e);this.generateImportReplacements()}pruneTypeOnlyImports(){this.nonTypeIdentifiers=Pde(this.tokens,this.options);for(const[e,t]of this.importInfoByPath.entries()){if(t.hasBareImport||t.hasStarExport||t.exportStarNames.length>0||t.namedExports.length>0)continue;[...t.defaultNames,...t.wildcardNames,...t.namedImports.map(({localName:s})=>s)].every(s=>this.shouldAutomaticallyElideImportedName(s))&&this.importsToReplace.set(e,"")}}shouldAutomaticallyElideImportedName(e){return this.isTypeScriptTransformEnabled&&!this.keepUnusedImports&&!this.nonTypeIdentifiers.has(e)}generateImportReplacements(){for(const[e,t]of this.importInfoByPath.entries()){const{defaultNames:i,wildcardNames:s,namedImports:r,namedExports:o,exportStarNames:a,hasStarExport:l}=t;if(i.length===0&&s.length===0&&r.length===0&&o.length===0&&a.length===0&&!l){this.importsToReplace.set(e,`require('${e}');`);continue}const c=this.getFreeIdentifierForPath(e);let u;this.enableLegacyTypeScriptModuleInterop?u=c:u=s.length>0?s[0]:this.getFreeIdentifierForPath(e);let h=`var ${c} = require('${e}');`;if(s.length>0)for(const d of s){const f=this.enableLegacyTypeScriptModuleInterop?c:`${this.helperManager.getHelperName("interopRequireWildcard")}(${c})`;h+=` var ${d} = ${f};`}else a.length>0&&u!==c?h+=` var ${u} = ${this.helperManager.getHelperName("interopRequireWildcard")}(${c});`:i.length>0&&u!==c&&(h+=` var ${u} = ${this.helperManager.getHelperName("interopRequireDefault")}(${c});`);for(const{importedName:d,localName:f}of o)h+=` ${this.helperManager.getHelperName("createNamedExportFrom")}(${c}, '${f}', '${d}');`;for(const d of a)h+=` exports.${d} = ${u};`;l&&(h+=` ${this.helperManager.getHelperName("createStarExport")}(${c});`),this.importsToReplace.set(e,h);for(const d of i)this.identifierReplacements.set(d,`${u}.default`);for(const{importedName:d,localName:f}of r)this.identifierReplacements.set(f,`${c}.${d}`)}}getFreeIdentifierForPath(e){const t=e.split("/"),s=t[t.length-1].replace(/\W/g,"");return this.nameManager.claimFreeName(`_${s}`)}preprocessImportAtIndex(e){const t=[],i=[],s=[];if(e++,(this.tokens.matchesContextualAtIndex(e,de._type)||this.tokens.matches1AtIndex(e,C._typeof))&&!this.tokens.matches1AtIndex(e+1,C.comma)&&!this.tokens.matchesContextualAtIndex(e+1,de._from)||this.tokens.matches1AtIndex(e,C.parenL))return;if(this.tokens.matches1AtIndex(e,C.name)&&(t.push(this.tokens.identifierNameAtIndex(e)),e++,this.tokens.matches1AtIndex(e,C.comma)&&e++),this.tokens.matches1AtIndex(e,C.star)&&(e+=2,i.push(this.tokens.identifierNameAtIndex(e)),e++),this.tokens.matches1AtIndex(e,C.braceL)){const a=this.getNamedImports(e+1);e=a.newIndex;for(const l of a.namedImports)l.importedName==="default"?t.push(l.localName):s.push(l)}if(this.tokens.matchesContextualAtIndex(e,de._from)&&e++,!this.tokens.matches1AtIndex(e,C.string))throw new Error("Expected string token at the end of import statement.");const r=this.tokens.stringValueAtIndex(e),o=this.getImportInfo(r);o.defaultNames.push(...t),o.wildcardNames.push(...i),o.namedImports.push(...s),t.length===0&&i.length===0&&s.length===0&&(o.hasBareImport=!0)}preprocessExportAtIndex(e){if(this.tokens.matches2AtIndex(e,C._export,C._var)||this.tokens.matches2AtIndex(e,C._export,C._let)||this.tokens.matches2AtIndex(e,C._export,C._const))this.preprocessVarExportAtIndex(e);else if(this.tokens.matches2AtIndex(e,C._export,C._function)||this.tokens.matches2AtIndex(e,C._export,C._class)){const t=this.tokens.identifierNameAtIndex(e+2);this.addExportBinding(t,t)}else if(this.tokens.matches3AtIndex(e,C._export,C.name,C._function)){const t=this.tokens.identifierNameAtIndex(e+3);this.addExportBinding(t,t)}else this.tokens.matches2AtIndex(e,C._export,C.braceL)?this.preprocessNamedExportAtIndex(e):this.tokens.matches2AtIndex(e,C._export,C.star)&&this.preprocessExportStarAtIndex(e)}preprocessVarExportAtIndex(e){let t=0;for(let i=e+2;;i++)if(this.tokens.matches1AtIndex(i,C.braceL)||this.tokens.matches1AtIndex(i,C.dollarBraceL)||this.tokens.matches1AtIndex(i,C.bracketL))t++;else if(this.tokens.matches1AtIndex(i,C.braceR)||this.tokens.matches1AtIndex(i,C.bracketR))t--;else{if(t===0&&!this.tokens.matches1AtIndex(i,C.name))break;if(this.tokens.matches1AtIndex(1,C.eq)){const s=this.tokens.currentToken().rhsEndIndex;if(s==null)throw new Error("Expected = token with an end index.");i=s-1}else{const s=this.tokens.tokens[i];if(vde(s)){const r=this.tokens.identifierNameAtIndex(i);this.identifierReplacements.set(r,`exports.${r}`)}}}}preprocessNamedExportAtIndex(e){e+=2;const{newIndex:t,namedImports:i}=this.getNamedImports(e);if(e=t,this.tokens.matchesContextualAtIndex(e,de._from))e++;else{for(const{importedName:o,localName:a}of i)this.addExportBinding(o,a);return}if(!this.tokens.matches1AtIndex(e,C.string))throw new Error("Expected string token at the end of import statement.");const s=this.tokens.stringValueAtIndex(e);this.getImportInfo(s).namedExports.push(...i)}preprocessExportStarAtIndex(e){let t=null;if(this.tokens.matches3AtIndex(e,C._export,C.star,C._as)?(e+=3,t=this.tokens.identifierNameAtIndex(e),e+=2):e+=3,!this.tokens.matches1AtIndex(e,C.string))throw new Error("Expected string token at the end of star export statement.");const i=this.tokens.stringValueAtIndex(e),s=this.getImportInfo(i);t!==null?s.exportStarNames.push(t):s.hasStarExport=!0}getNamedImports(e){const t=[];for(;;){if(this.tokens.matches1AtIndex(e,C.braceR)){e++;break}const i=rL(this.tokens,e);if(e=i.endIndex,i.isType||t.push({importedName:i.leftName,localName:i.rightName}),this.tokens.matches2AtIndex(e,C.comma,C.braceR)){e+=2;break}else if(this.tokens.matches1AtIndex(e,C.braceR)){e++;break}else if(this.tokens.matches1AtIndex(e,C.comma))e++;else throw new Error(`Unexpected token: ${JSON.stringify(this.tokens.tokens[e])}`)}return{newIndex:e,namedImports:t}}getImportInfo(e){const t=this.importInfoByPath.get(e);if(t)return t;const i={defaultNames:[],wildcardNames:[],namedImports:[],namedExports:[],hasBareImport:!1,exportStarNames:[],hasStarExport:!1};return this.importInfoByPath.set(e,i),i}addExportBinding(e,t){this.exportBindingsByLocalName.has(e)||this.exportBindingsByLocalName.set(e,[]),this.exportBindingsByLocalName.get(e).push(t)}claimImportCode(e){const t=this.importsToReplace.get(e);return this.importsToReplace.set(e,""),t||""}getIdentifierReplacement(e){return this.identifierReplacements.get(e)||null}resolveExportBinding(e){const t=this.exportBindingsByLocalName.get(e);return!t||t.length===0?null:t.map(i=>`exports.${i}`).join(" = ")}getGlobalNames(){return new Set([...this.identifierReplacements.keys(),...this.exportBindingsByLocalName.keys()])}}var E8={exports:{}},WD={exports:{}},AQ;function wFe(){return AQ||(AQ=1,function(n,e){(function(t,i){i(e)})(Fi,function(t){t.get=void 0,t.put=void 0,t.pop=void 0;class i{constructor(){this._indexes={__proto__:null},this.array=[]}}t.get=(s,r)=>s._indexes[r],t.put=(s,r)=>{const o=t.get(s,r);if(o!==void 0)return o;const{array:a,_indexes:l}=s;return l[r]=a.push(r)-1},t.pop=s=>{const{array:r,_indexes:o}=s;if(r.length===0)return;const a=r.pop();o[a]=void 0},t.SetArray=i,Object.defineProperty(t,"__esModule",{value:!0})})}(WD,WD.exports)),WD.exports}var VD={exports:{}},PQ;function Rde(){return PQ||(PQ=1,function(n,e){(function(t,i){i(e)})(Fi,function(t){const r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",o=new Uint8Array(64),a=new Uint8Array(128);for(let _=0;_<r.length;_++){const b=r.charCodeAt(_);o[_]=b,a[b]=_}const l=typeof TextDecoder<"u"?new TextDecoder:typeof Buffer<"u"?{decode(_){return Buffer.from(_.buffer,_.byteOffset,_.byteLength).toString()}}:{decode(_){let b="";for(let y=0;y<_.length;y++)b+=String.fromCharCode(_[y]);return b}};function c(_){const b=new Int32Array(5),y=[];let w=0;do{const S=u(_,w),E=[];let L=!0,k=0;b[0]=0;for(let x=w;x<S;x++){let I;x=h(_,x,b,0);const N=b[0];N<k&&(L=!1),k=N,d(_,x,S)?(x=h(_,x,b,1),x=h(_,x,b,2),x=h(_,x,b,3),d(_,x,S)?(x=h(_,x,b,4),I=[N,b[1],b[2],b[3],b[4]]):I=[N,b[1],b[2],b[3]]):I=[N],E.push(I)}L||f(E),y.push(E),w=S+1}while(w<=_.length);return y}function u(_,b){const y=_.indexOf(";",b);return y===-1?_.length:y}function h(_,b,y,w){let S=0,E=0,L=0;do{const x=_.charCodeAt(b++);L=a[x],S|=(L&31)<<E,E+=5}while(L&32);const k=S&1;return S>>>=1,k&&(S=-2147483648|-S),y[w]+=S,b}function d(_,b,y){return b>=y?!1:_.charCodeAt(b)!==44}function f(_){_.sort(g)}function g(_,b){return _[0]-b[0]}function p(_){const b=new Int32Array(5),y=1024*16,w=y-36,S=new Uint8Array(y),E=S.subarray(0,w);let L=0,k="";for(let x=0;x<_.length;x++){const I=_[x];if(x>0&&(L===y&&(k+=l.decode(S),L=0),S[L++]=59),I.length!==0){b[0]=0;for(let N=0;N<I.length;N++){const T=I[N];L>w&&(k+=l.decode(E),S.copyWithin(0,w,L),L-=w),N>0&&(S[L++]=44),L=m(S,L,b,T,0),T.length!==1&&(L=m(S,L,b,T,1),L=m(S,L,b,T,2),L=m(S,L,b,T,3),T.length!==4&&(L=m(S,L,b,T,4)))}}}return k+l.decode(S.subarray(0,L))}function m(_,b,y,w,S){const E=w[S];let L=E-y[S];y[S]=E,L=L<0?-L<<1|1:L<<1;do{let k=L&31;L>>>=5,L>0&&(k|=32),_[b++]=o[k]}while(L>0);return b}t.decode=c,t.encode=p,Object.defineProperty(t,"__esModule",{value:!0})})}(VD,VD.exports)),VD.exports}var HD={exports:{}},r5={exports:{}},RQ;function SFe(){return RQ||(RQ=1,function(n,e){(function(t,i){n.exports=i()})(Fi,function(){const t=/^[\w+.-]+:\/\//,i=/^([\w+.-]+:)\/\/([^@/#?]*@)?([^:/#?]*)(:\d+)?(\/[^#?]*)?(\?[^#]*)?(#.*)?/,s=/^file:(?:\/\/((?![a-z]:)[^/#?]*)?)?(\/?[^#?]*)(\?[^#]*)?(#.*)?/i;var r;(function(y){y[y.Empty=1]="Empty",y[y.Hash=2]="Hash",y[y.Query=3]="Query",y[y.RelativePath=4]="RelativePath",y[y.AbsolutePath=5]="AbsolutePath",y[y.SchemeRelative=6]="SchemeRelative",y[y.Absolute=7]="Absolute"})(r||(r={}));function o(y){return t.test(y)}function a(y){return y.startsWith("//")}function l(y){return y.startsWith("/")}function c(y){return y.startsWith("file:")}function u(y){return/^[.?#]/.test(y)}function h(y){const w=i.exec(y);return f(w[1],w[2]||"",w[3],w[4]||"",w[5]||"/",w[6]||"",w[7]||"")}function d(y){const w=s.exec(y),S=w[2];return f("file:","",w[1]||"","",l(S)?S:"/"+S,w[3]||"",w[4]||"")}function f(y,w,S,E,L,k,x){return{scheme:y,user:w,host:S,port:E,path:L,query:k,hash:x,type:r.Absolute}}function g(y){if(a(y)){const S=h("http:"+y);return S.scheme="",S.type=r.SchemeRelative,S}if(l(y)){const S=h("http://foo.com"+y);return S.scheme="",S.host="",S.type=r.AbsolutePath,S}if(c(y))return d(y);if(o(y))return h(y);const w=h("http://foo.com/"+y);return w.scheme="",w.host="",w.type=y?y.startsWith("?")?r.Query:y.startsWith("#")?r.Hash:r.RelativePath:r.Empty,w}function p(y){if(y.endsWith("/.."))return y;const w=y.lastIndexOf("/");return y.slice(0,w+1)}function m(y,w){_(w,w.type),y.path==="/"?y.path=w.path:y.path=p(w.path)+y.path}function _(y,w){const S=w<=r.RelativePath,E=y.path.split("/");let L=1,k=0,x=!1;for(let N=1;N<E.length;N++){const T=E[N];if(!T){x=!0;continue}if(x=!1,T!=="."){if(T===".."){k?(x=!0,k--,L--):S&&(E[L++]=T);continue}E[L++]=T,k++}}let I="";for(let N=1;N<L;N++)I+="/"+E[N];(!I||x&&!I.endsWith("/.."))&&(I+="/"),y.path=I}function b(y,w){if(!y&&!w)return"";const S=g(y);let E=S.type;if(w&&E!==r.Absolute){const k=g(w),x=k.type;switch(E){case r.Empty:S.hash=k.hash;case r.Hash:S.query=k.query;case r.Query:case r.RelativePath:m(S,k);case r.AbsolutePath:S.user=k.user,S.host=k.host,S.port=k.port;case r.SchemeRelative:S.scheme=k.scheme}x>E&&(E=x)}_(S,E);const L=S.query+S.hash;switch(E){case r.Hash:case r.Query:return L;case r.RelativePath:{const k=S.path.slice(1);return k?u(w||y)&&!u(k)?"./"+k+L:k+L:L||"."}case r.AbsolutePath:return S.path+L;default:return S.scheme+"//"+S.user+S.host+S.port+S.path+L}}return b})}(r5)),r5.exports}var MQ;function kFe(){return MQ||(MQ=1,function(n,e){(function(t,i){i(e,Rde(),SFe())})(Fi,function(t,i,s){function r(fe){return fe&&typeof fe=="object"&&"default"in fe?fe:{default:fe}}var o=r(s);function a(fe,ge){return ge&&!ge.endsWith("/")&&(ge+="/"),o.default(fe,ge)}function l(fe){if(!fe)return"";const ge=fe.lastIndexOf("/");return fe.slice(0,ge+1)}const c=0,u=1,h=2,d=3,f=4,g=1,p=2;function m(fe,ge){const se=_(fe,0);if(se===fe.length)return fe;ge||(fe=fe.slice());for(let H=se;H<fe.length;H=_(fe,H+1))fe[H]=y(fe[H],ge);return fe}function _(fe,ge){for(let se=ge;se<fe.length;se++)if(!b(fe[se]))return se;return fe.length}function b(fe){for(let ge=1;ge<fe.length;ge++)if(fe[ge][c]<fe[ge-1][c])return!1;return!0}function y(fe,ge){return ge||(fe=fe.slice()),fe.sort(w)}function w(fe,ge){return fe[c]-ge[c]}let S=!1;function E(fe,ge,se,H){for(;se<=H;){const te=se+(H-se>>1),ce=fe[te][c]-ge;if(ce===0)return S=!0,te;ce<0?se=te+1:H=te-1}return S=!1,se-1}function L(fe,ge,se){for(let H=se+1;H<fe.length&&fe[H][c]===ge;se=H++);return se}function k(fe,ge,se){for(let H=se-1;H>=0&&fe[H][c]===ge;se=H--);return se}function x(){return{lastKey:-1,lastNeedle:-1,lastIndex:-1}}function I(fe,ge,se,H){const{lastKey:te,lastNeedle:ce,lastIndex:ve}=se;let Ee=0,De=fe.length-1;if(H===te){if(ge===ce)return S=ve!==-1&&fe[ve][c]===ge,ve;ge>=ce?Ee=ve===-1?0:ve:De=ve}return se.lastKey=H,se.lastNeedle=ge,se.lastIndex=E(fe,ge,Ee,De)}function N(fe,ge){const se=ge.map(P);for(let H=0;H<fe.length;H++){const te=fe[H];for(let ce=0;ce<te.length;ce++){const ve=te[ce];if(ve.length===1)continue;const Ee=ve[u],De=ve[h],Fe=ve[d],Oe=se[Ee],oe=Oe[De]||(Oe[De]=[]),ee=ge[Ee],ae=L(oe,Fe,I(oe,Fe,ee,De));T(oe,ee.lastIndex=ae+1,[Fe,H,ve[c]])}}return se}function T(fe,ge,se){for(let H=fe.length;H>ge;H--)fe[H]=fe[H-1];fe[ge]=se}function P(){return{__proto__:null}}const R=function(fe,ge){const se=typeof fe=="string"?JSON.parse(fe):fe;if(!("sections"in se))return new Y(se,ge);const H=[],te=[],ce=[],ve=[];F(se,ge,H,te,ce,ve,0,0,1/0,1/0);const Ee={version:3,file:se.file,names:ve,sources:te,sourcesContent:ce,mappings:H};return t.presortedDecodedMap(Ee)};function F(fe,ge,se,H,te,ce,ve,Ee,De,Fe){const{sections:Oe}=fe;for(let oe=0;oe<Oe.length;oe++){const{map:ee,offset:ae}=Oe[oe];let O=De,V=Fe;if(oe+1<Oe.length){const ne=Oe[oe+1].offset;O=Math.min(De,ve+ne.line),O===De?V=Math.min(Fe,Ee+ne.column):O<De&&(V=Ee+ne.column)}j(ee,ge,se,H,te,ce,ve+ae.line,Ee+ae.column,O,V)}}function j(fe,ge,se,H,te,ce,ve,Ee,De,Fe){if("sections"in fe)return F(...arguments);const Oe=new Y(fe,ge),oe=H.length,ee=ce.length,ae=t.decodedMappings(Oe),{resolvedSources:O,sourcesContent:V}=Oe;if(K(H,O),K(ce,Oe.names),V)K(te,V);else for(let ne=0;ne<O.length;ne++)te.push(null);for(let ne=0;ne<ae.length;ne++){const ie=ve+ne;if(ie>De)return;const we=Z(se,ie),Ie=ne===0?Ee:0,je=ae[ne];for(let Ye=0;Ye<je.length;Ye++){const rt=je[Ye],gt=Ie+rt[c];if(ie===De&>>=Fe)return;if(rt.length===1){we.push([gt]);continue}const ei=oe+rt[u],ii=rt[h],et=rt[d];we.push(rt.length===4?[gt,ei,ii,et]:[gt,ei,ii,et,ee+rt[f]])}}}function K(fe,ge){for(let se=0;se<ge.length;se++)fe.push(ge[se])}function Z(fe,ge){for(let se=fe.length;se<=ge;se++)fe[se]=[];return fe[ge]}const q="`line` must be greater than 0 (lines start at line 1)",re="`column` must be greater than or equal to 0 (columns start at column 0)",G=-1,W=1;t.encodedMappings=void 0,t.decodedMappings=void 0,t.traceSegment=void 0,t.originalPositionFor=void 0,t.generatedPositionFor=void 0,t.allGeneratedPositionsFor=void 0,t.eachMapping=void 0,t.sourceContentFor=void 0,t.presortedDecodedMap=void 0,t.decodedMap=void 0,t.encodedMap=void 0;class Y{constructor(ge,se){const H=typeof ge=="string";if(!H&&ge._decodedMemo)return ge;const te=H?JSON.parse(ge):ge,{version:ce,file:ve,names:Ee,sourceRoot:De,sources:Fe,sourcesContent:Oe}=te;this.version=ce,this.file=ve,this.names=Ee||[],this.sourceRoot=De,this.sources=Fe,this.sourcesContent=Oe;const oe=a(De||"",l(se));this.resolvedSources=Fe.map(ae=>a(ae||"",oe));const{mappings:ee}=te;typeof ee=="string"?(this._encoded=ee,this._decoded=void 0):(this._encoded=void 0,this._decoded=m(ee,H)),this._decodedMemo=x(),this._bySources=void 0,this._bySourceMemos=void 0}}(()=>{t.encodedMappings=ge=>{var se;return(se=ge._encoded)!==null&&se!==void 0?se:ge._encoded=i.encode(ge._decoded)},t.decodedMappings=ge=>ge._decoded||(ge._decoded=i.decode(ge._encoded)),t.traceSegment=(ge,se,H)=>{const te=t.decodedMappings(ge);if(se>=te.length)return null;const ce=te[se],ve=J(ce,ge._decodedMemo,se,H,W);return ve===-1?null:ce[ve]},t.originalPositionFor=(ge,{line:se,column:H,bias:te})=>{if(se--,se<0)throw new Error(q);if(H<0)throw new Error(re);const ce=t.decodedMappings(ge);if(se>=ce.length)return z(null,null,null,null);const ve=ce[se],Ee=J(ve,ge._decodedMemo,se,H,te||W);if(Ee===-1)return z(null,null,null,null);const De=ve[Ee];if(De.length===1)return z(null,null,null,null);const{names:Fe,resolvedSources:Oe}=ge;return z(Oe[De[u]],De[h]+1,De[d],De.length===5?Fe[De[f]]:null)},t.allGeneratedPositionsFor=(ge,{source:se,line:H,column:te,bias:ce})=>fe(ge,se,H,te,ce||G,!0),t.generatedPositionFor=(ge,{source:se,line:H,column:te,bias:ce})=>fe(ge,se,H,te,ce||W,!1),t.eachMapping=(ge,se)=>{const H=t.decodedMappings(ge),{names:te,resolvedSources:ce}=ge;for(let ve=0;ve<H.length;ve++){const Ee=H[ve];for(let De=0;De<Ee.length;De++){const Fe=Ee[De],Oe=ve+1,oe=Fe[0];let ee=null,ae=null,O=null,V=null;Fe.length!==1&&(ee=ce[Fe[1]],ae=Fe[2]+1,O=Fe[3]),Fe.length===5&&(V=te[Fe[4]]),se({generatedLine:Oe,generatedColumn:oe,source:ee,originalLine:ae,originalColumn:O,name:V})}}},t.sourceContentFor=(ge,se)=>{const{sources:H,resolvedSources:te,sourcesContent:ce}=ge;if(ce==null)return null;let ve=H.indexOf(se);return ve===-1&&(ve=te.indexOf(se)),ve===-1?null:ce[ve]},t.presortedDecodedMap=(ge,se)=>{const H=new Y(X(ge,[]),se);return H._decoded=ge.mappings,H},t.decodedMap=ge=>X(ge,t.decodedMappings(ge)),t.encodedMap=ge=>X(ge,t.encodedMappings(ge));function fe(ge,se,H,te,ce,ve){if(H--,H<0)throw new Error(q);if(te<0)throw new Error(re);const{sources:Ee,resolvedSources:De}=ge;let Fe=Ee.indexOf(se);if(Fe===-1&&(Fe=De.indexOf(se)),Fe===-1)return ve?[]:le(null,null);const oe=(ge._bySources||(ge._bySources=N(t.decodedMappings(ge),ge._bySourceMemos=Ee.map(x))))[Fe][H];if(oe==null)return ve?[]:le(null,null);const ee=ge._bySourceMemos[Fe];if(ve)return be(oe,ee,H,te,ce);const ae=J(oe,ee,H,te,ce);if(ae===-1)return le(null,null);const O=oe[ae];return le(O[g]+1,O[p])}})();function X(fe,ge){return{version:fe.version,file:fe.file,names:fe.names,sourceRoot:fe.sourceRoot,sources:fe.sources,sourcesContent:fe.sourcesContent,mappings:ge}}function z(fe,ge,se,H){return{source:fe,line:ge,column:se,name:H}}function le(fe,ge){return{line:fe,column:ge}}function J(fe,ge,se,H,te){let ce=I(fe,H,ge,se);return S?ce=(te===G?L:k)(fe,H,ce):te===G&&ce++,ce===-1||ce===fe.length?-1:ce}function be(fe,ge,se,H,te){let ce=J(fe,ge,se,H,W);if(!S&&te===G&&ce++,ce===-1||ce===fe.length)return[];const ve=S?H:fe[ce][c];S||(ce=k(fe,ve,ce));const Ee=L(fe,ve,ce),De=[];for(;ce<=Ee;ce++){const Fe=fe[ce];De.push(le(Fe[g]+1,Fe[p]))}return De}t.AnyMap=R,t.GREATEST_LOWER_BOUND=W,t.LEAST_UPPER_BOUND=G,t.TraceMap=Y,Object.defineProperty(t,"__esModule",{value:!0})})}(HD,HD.exports)),HD.exports}(function(n,e){(function(t,i){i(e,wFe(),Rde(),kFe())})(Fi,function(t,i,s,r){t.addSegment=void 0,t.addMapping=void 0,t.maybeAddSegment=void 0,t.maybeAddMapping=void 0,t.setSourceContent=void 0,t.toDecodedMap=void 0,t.toEncodedMap=void 0,t.fromMap=void 0,t.allMappings=void 0;let d;class f{constructor({file:L,sourceRoot:k}={}){this._names=new i.SetArray,this._sources=new i.SetArray,this._sourcesContent=[],this._mappings=[],this.file=L,this.sourceRoot=k}}t.addSegment=(E,L,k,x,I,N,T,P)=>d(!1,E,L,k,x,I,N,T,P),t.maybeAddSegment=(E,L,k,x,I,N,T,P)=>d(!0,E,L,k,x,I,N,T,P),t.addMapping=(E,L)=>S(!1,E,L),t.maybeAddMapping=(E,L)=>S(!0,E,L),t.setSourceContent=(E,L,k)=>{const{_sources:x,_sourcesContent:I}=E;I[i.put(x,L)]=k},t.toDecodedMap=E=>{const{file:L,sourceRoot:k,_mappings:x,_sources:I,_sourcesContent:N,_names:T}=E;return _(x),{version:3,file:L||void 0,names:T.array,sourceRoot:k||void 0,sources:I.array,sourcesContent:N,mappings:x}},t.toEncodedMap=E=>{const L=t.toDecodedMap(E);return Object.assign(Object.assign({},L),{mappings:s.encode(L.mappings)})},t.allMappings=E=>{const L=[],{_mappings:k,_sources:x,_names:I}=E;for(let N=0;N<k.length;N++){const T=k[N];for(let P=0;P<T.length;P++){const R=T[P],F={line:N+1,column:R[0]};let j,K,Z;R.length!==1&&(j=x.array[R[1]],K={line:R[2]+1,column:R[3]},R.length===5&&(Z=I.array[R[4]])),L.push({generated:F,source:j,original:K,name:Z})}}return L},t.fromMap=E=>{const L=new r.TraceMap(E),k=new f({file:L.file,sourceRoot:L.sourceRoot});return b(k._names,L.names),b(k._sources,L.sources),k._sourcesContent=L.sourcesContent||L.sources.map(()=>null),k._mappings=r.decodedMappings(L),k},d=(E,L,k,x,I,N,T,P,R)=>{const{_mappings:F,_sources:j,_sourcesContent:K,_names:Z}=L,q=g(F,k),re=p(q,x);if(!I)return E&&y(q,re)?void 0:m(q,re,[x]);const G=i.put(j,I),W=P?i.put(Z,P):-1;if(G===K.length&&(K[G]=R??null),!(E&&w(q,re,G,N,T,W)))return m(q,re,P?[x,G,N,T,W]:[x,G,N,T])};function g(E,L){for(let k=E.length;k<=L;k++)E[k]=[];return E[L]}function p(E,L){let k=E.length;for(let x=k-1;x>=0;k=x--){const I=E[x];if(L>=I[0])break}return k}function m(E,L,k){for(let x=E.length;x>L;x--)E[x]=E[x-1];E[L]=k}function _(E){const{length:L}=E;let k=L;for(let x=k-1;x>=0&&!(E[x].length>0);k=x,x--);k<L&&(E.length=k)}function b(E,L){for(let k=0;k<L.length;k++)i.put(E,L[k])}function y(E,L){return L===0?!0:E[L-1].length===1}function w(E,L,k,x,I,N){if(L===0)return!1;const T=E[L-1];return T.length===1?!1:k===T[1]&&x===T[2]&&I===T[3]&&N===(T.length===5?T[4]:-1)}function S(E,L,k){const{generated:x,source:I,original:N,name:T,content:P}=k;if(!I)return d(E,L,x.line-1,x.column,null,null,null,null,null);const R=I;return d(E,L,x.line-1,x.column,R,N.line-1,N.column,T,P)}t.GenMapping=f,Object.defineProperty(t,"__esModule",{value:!0})})})(E8,E8.exports);var bw=E8.exports;function LFe({code:n,mappings:e},t,i,s,r){const o=xFe(s,r),a=new bw.GenMapping({file:i.compiledFilename});let l=0,c=e[0];for(;c===void 0&&l<e.length-1;)l++,c=e[l];let u=0,h=0;c!==h&&bw.maybeAddSegment(a,u,0,t,u,0);for(let p=0;p<n.length;p++){if(p===c){const m=c-h,_=o[l];for(bw.maybeAddSegment(a,u,m,t,u,_);(c===p||c===void 0)&&l<e.length-1;)l++,c=e[l]}n.charCodeAt(p)===ye.lineFeed&&(u++,h=p+1,c!==h&&bw.maybeAddSegment(a,u,0,t,u,0))}const{sourceRoot:d,sourcesContent:f,...g}=bw.toEncodedMap(a);return g}function xFe(n,e){const t=new Array(e.length);let i=0,s=e[i].start,r=0;for(let o=0;o<n.length;o++)o===s&&(t[i]=s-r,i++,s=e[i].start),n.charCodeAt(o)===ye.lineFeed&&(r=o+1);return t}const EFe={require:` + import {createRequire as CREATE_REQUIRE_NAME} from "module"; + const require = CREATE_REQUIRE_NAME(import.meta.url); + `,interopRequireWildcard:` + function interopRequireWildcard(obj) { + if (obj && obj.__esModule) { + return obj; + } else { + var newObj = {}; + if (obj != null) { + for (var key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key)) { + newObj[key] = obj[key]; + } + } + } + newObj.default = obj; + return newObj; + } + } + `,interopRequireDefault:` + function interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + `,createNamedExportFrom:` + function createNamedExportFrom(obj, localName, importedName) { + Object.defineProperty(exports, localName, {enumerable: true, configurable: true, get: () => obj[importedName]}); + } + `,createStarExport:` + function createStarExport(obj) { + Object.keys(obj) + .filter((key) => key !== "default" && key !== "__esModule") + .forEach((key) => { + if (exports.hasOwnProperty(key)) { + return; + } + Object.defineProperty(exports, key, {enumerable: true, configurable: true, get: () => obj[key]}); + }); + } + `,nullishCoalesce:` + function nullishCoalesce(lhs, rhsFn) { + if (lhs != null) { + return lhs; + } else { + return rhsFn(); + } + } + `,asyncNullishCoalesce:` + async function asyncNullishCoalesce(lhs, rhsFn) { + if (lhs != null) { + return lhs; + } else { + return await rhsFn(); + } + } + `,optionalChain:` + function optionalChain(ops) { + let lastAccessLHS = undefined; + let value = ops[0]; + let i = 1; + while (i < ops.length) { + const op = ops[i]; + const fn = ops[i + 1]; + i += 2; + if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { + return undefined; + } + if (op === 'access' || op === 'optionalAccess') { + lastAccessLHS = value; + value = fn(value); + } else if (op === 'call' || op === 'optionalCall') { + value = fn((...args) => value.call(lastAccessLHS, ...args)); + lastAccessLHS = undefined; + } + } + return value; + } + `,asyncOptionalChain:` + async function asyncOptionalChain(ops) { + let lastAccessLHS = undefined; + let value = ops[0]; + let i = 1; + while (i < ops.length) { + const op = ops[i]; + const fn = ops[i + 1]; + i += 2; + if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { + return undefined; + } + if (op === 'access' || op === 'optionalAccess') { + lastAccessLHS = value; + value = await fn(value); + } else if (op === 'call' || op === 'optionalCall') { + value = await fn((...args) => value.call(lastAccessLHS, ...args)); + lastAccessLHS = undefined; + } + } + return value; + } + `,optionalChainDelete:` + function optionalChainDelete(ops) { + const result = OPTIONAL_CHAIN_NAME(ops); + return result == null ? true : result; + } + `,asyncOptionalChainDelete:` + async function asyncOptionalChainDelete(ops) { + const result = await ASYNC_OPTIONAL_CHAIN_NAME(ops); + return result == null ? true : result; + } + `};class _A{__init(){this.helperNames={}}__init2(){this.createRequireName=null}constructor(e){this.nameManager=e,_A.prototype.__init.call(this),_A.prototype.__init2.call(this)}getHelperName(e){let t=this.helperNames[e];return t||(t=this.nameManager.claimFreeName(`_${e}`),this.helperNames[e]=t,t)}emitHelpers(){let e="";this.helperNames.optionalChainDelete&&this.getHelperName("optionalChain"),this.helperNames.asyncOptionalChainDelete&&this.getHelperName("asyncOptionalChain");for(const[t,i]of Object.entries(EFe)){const s=this.helperNames[t];let r=i;t==="optionalChainDelete"?r=r.replace("OPTIONAL_CHAIN_NAME",this.helperNames.optionalChain):t==="asyncOptionalChainDelete"?r=r.replace("ASYNC_OPTIONAL_CHAIN_NAME",this.helperNames.asyncOptionalChain):t==="require"&&(this.createRequireName===null&&(this.createRequireName=this.nameManager.claimFreeName("_createRequire")),r=r.replace(/CREATE_REQUIRE_NAME/g,this.createRequireName)),s&&(e+=" ",e+=r.replace(t,s).replace(/\s+/g," ").trim())}return e}}function OQ(n,e,t){DFe(n,t)&&IFe(n,e,t)}function DFe(n,e){for(const t of n.tokens)if(t.type===C.name&&!t.isType&&Y2e(t)&&e.has(n.identifierNameForToken(t)))return!0;return!1}function IFe(n,e,t){const i=[];let s=e.length-1;for(let r=n.tokens.length-1;;r--){for(;i.length>0&&i[i.length-1].startTokenIndex===r+1;)i.pop();for(;s>=0&&e[s].endTokenIndex===r+1;)i.push(e[s]),s--;if(r<0)break;const o=n.tokens[r],a=n.identifierNameForToken(o);if(i.length>1&&!o.isType&&o.type===C.name&&t.has(a)){if(Z2e(o))FQ(i[i.length-1],n,a);else if(X2e(o)){let l=i.length-1;for(;l>0&&!i[l].isFunctionScope;)l--;if(l<0)throw new Error("Did not find parent function scope.");FQ(i[l],n,a)}}}if(i.length>0)throw new Error("Expected empty scope stack after processing file.")}function FQ(n,e,t){for(let i=n.startTokenIndex;i<n.endTokenIndex;i++){const s=e.tokens[i];(s.type===C.name||s.type===C.jsxName)&&e.identifierNameForToken(s)===t&&(s.shadowsGlobal=!0)}}function TFe(n,e){const t=[];for(const i of e)i.type===C.name&&t.push(n.slice(i.start,i.end));return t}class ZU{__init(){this.usedNames=new Set}constructor(e,t){ZU.prototype.__init.call(this),this.usedNames=new Set(TFe(e,t))}claimFreeName(e){const t=this.findFreeName(e);return this.usedNames.add(t),t}findFreeName(e){if(!this.usedNames.has(e))return e;let t=2;for(;this.usedNames.has(e+String(t));)t++;return e+String(t)}}var Tn={},D8={},Yh={},NFe=Fi&&Fi.__extends||function(){var n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,s){i.__proto__=s}||function(i,s){for(var r in s)s.hasOwnProperty(r)&&(i[r]=s[r])},n(e,t)};return function(e,t){n(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(Yh,"__esModule",{value:!0});Yh.DetailContext=Yh.NoopContext=Yh.VError=void 0;var Mde=function(n){NFe(e,n);function e(t,i){var s=n.call(this,i)||this;return s.path=t,Object.setPrototypeOf(s,e.prototype),s}return e}(Error);Yh.VError=Mde;var AFe=function(){function n(){}return n.prototype.fail=function(e,t,i){return!1},n.prototype.unionResolver=function(){return this},n.prototype.createContext=function(){return this},n.prototype.resolveUnion=function(e){},n}();Yh.NoopContext=AFe;var Ode=function(){function n(){this._propNames=[""],this._messages=[null],this._score=0}return n.prototype.fail=function(e,t,i){return this._propNames.push(e),this._messages.push(t),this._score+=i,!1},n.prototype.unionResolver=function(){return new PFe},n.prototype.resolveUnion=function(e){for(var t,i,s=e,r=null,o=0,a=s.contexts;o<a.length;o++){var l=a[o];(!r||l._score>=r._score)&&(r=l)}r&&r._score>0&&((t=this._propNames).push.apply(t,r._propNames),(i=this._messages).push.apply(i,r._messages))},n.prototype.getError=function(e){for(var t=[],i=this._propNames.length-1;i>=0;i--){var s=this._propNames[i];e+=typeof s=="number"?"["+s+"]":s?"."+s:"";var r=this._messages[i];r&&t.push(e+" "+r)}return new Mde(e,t.join("; "))},n.prototype.getErrorDetail=function(e){for(var t=[],i=this._propNames.length-1;i>=0;i--){var s=this._propNames[i];e+=typeof s=="number"?"["+s+"]":s?"."+s:"";var r=this._messages[i];r&&t.push({path:e,message:r})}for(var o=null,i=t.length-1;i>=0;i--)o&&(t[i].nested=[o]),o=t[i];return o},n}();Yh.DetailContext=Ode;var PFe=function(){function n(){this.contexts=[]}return n.prototype.createContext=function(){var e=new Ode;return this.contexts.push(e),e},n}();(function(n){var e=Fi&&Fi.__extends||function(){var z=function(le,J){return z=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(be,fe){be.__proto__=fe}||function(be,fe){for(var ge in fe)fe.hasOwnProperty(ge)&&(be[ge]=fe[ge])},z(le,J)};return function(le,J){z(le,J);function be(){this.constructor=le}le.prototype=J===null?Object.create(J):(be.prototype=J.prototype,new be)}}();Object.defineProperty(n,"__esModule",{value:!0}),n.basicTypes=n.BasicType=n.TParamList=n.TParam=n.param=n.TFunc=n.func=n.TProp=n.TOptional=n.opt=n.TIface=n.iface=n.TEnumLiteral=n.enumlit=n.TEnumType=n.enumtype=n.TIntersection=n.intersection=n.TUnion=n.union=n.TTuple=n.tuple=n.TArray=n.array=n.TLiteral=n.lit=n.TName=n.name=n.TType=void 0;var t=Yh,i=function(){function z(){}return z}();n.TType=i;function s(z){return typeof z=="string"?o(z):z}function r(z,le){var J=z[le];if(!J)throw new Error("Unknown type "+le);return J}function o(z){return new a(z)}n.name=o;var a=function(z){e(le,z);function le(J){var be=z.call(this)||this;return be.name=J,be._failMsg="is not a "+J,be}return le.prototype.getChecker=function(J,be,fe){var ge=this,se=r(J,this.name),H=se.getChecker(J,be,fe);return se instanceof Z||se instanceof le?H:function(te,ce){return H(te,ce)?!0:ce.fail(null,ge._failMsg,0)}},le}(i);n.TName=a;function l(z){return new c(z)}n.lit=l;var c=function(z){e(le,z);function le(J){var be=z.call(this)||this;return be.value=J,be.name=JSON.stringify(J),be._failMsg="is not "+be.name,be}return le.prototype.getChecker=function(J,be){var fe=this;return function(ge,se){return ge===fe.value?!0:se.fail(null,fe._failMsg,-1)}},le}(i);n.TLiteral=c;function u(z){return new h(s(z))}n.array=u;var h=function(z){e(le,z);function le(J){var be=z.call(this)||this;return be.ttype=J,be}return le.prototype.getChecker=function(J,be){var fe=this.ttype.getChecker(J,be);return function(ge,se){if(!Array.isArray(ge))return se.fail(null,"is not an array",0);for(var H=0;H<ge.length;H++){var te=fe(ge[H],se);if(!te)return se.fail(H,null,1)}return!0}},le}(i);n.TArray=h;function d(){for(var z=[],le=0;le<arguments.length;le++)z[le]=arguments[le];return new f(z.map(function(J){return s(J)}))}n.tuple=d;var f=function(z){e(le,z);function le(J){var be=z.call(this)||this;return be.ttypes=J,be}return le.prototype.getChecker=function(J,be){var fe=this.ttypes.map(function(se){return se.getChecker(J,be)}),ge=function(se,H){if(!Array.isArray(se))return H.fail(null,"is not an array",0);for(var te=0;te<fe.length;te++){var ce=fe[te](se[te],H);if(!ce)return H.fail(te,null,1)}return!0};return be?function(se,H){return ge(se,H)?se.length<=fe.length?!0:H.fail(fe.length,"is extraneous",2):!1}:ge},le}(i);n.TTuple=f;function g(){for(var z=[],le=0;le<arguments.length;le++)z[le]=arguments[le];return new p(z.map(function(J){return s(J)}))}n.union=g;var p=function(z){e(le,z);function le(J){var be=z.call(this)||this;be.ttypes=J;var fe=J.map(function(se){return se instanceof a||se instanceof c?se.name:null}).filter(function(se){return se}),ge=J.length-fe.length;return fe.length?(ge>0&&fe.push(ge+" more"),be._failMsg="is none of "+fe.join(", ")):be._failMsg="is none of "+ge+" types",be}return le.prototype.getChecker=function(J,be){var fe=this,ge=this.ttypes.map(function(se){return se.getChecker(J,be)});return function(se,H){for(var te=H.unionResolver(),ce=0;ce<ge.length;ce++){var ve=ge[ce](se,te.createContext());if(ve)return!0}return H.resolveUnion(te),H.fail(null,fe._failMsg,0)}},le}(i);n.TUnion=p;function m(){for(var z=[],le=0;le<arguments.length;le++)z[le]=arguments[le];return new _(z.map(function(J){return s(J)}))}n.intersection=m;var _=function(z){e(le,z);function le(J){var be=z.call(this)||this;return be.ttypes=J,be}return le.prototype.getChecker=function(J,be){var fe=new Set,ge=this.ttypes.map(function(se){return se.getChecker(J,be,fe)});return function(se,H){var te=ge.every(function(ce){return ce(se,H)});return te?!0:H.fail(null,null,0)}},le}(i);n.TIntersection=_;function b(z){return new y(z)}n.enumtype=b;var y=function(z){e(le,z);function le(J){var be=z.call(this)||this;return be.members=J,be.validValues=new Set,be._failMsg="is not a valid enum value",be.validValues=new Set(Object.keys(J).map(function(fe){return J[fe]})),be}return le.prototype.getChecker=function(J,be){var fe=this;return function(ge,se){return fe.validValues.has(ge)?!0:se.fail(null,fe._failMsg,0)}},le}(i);n.TEnumType=y;function w(z,le){return new S(z,le)}n.enumlit=w;var S=function(z){e(le,z);function le(J,be){var fe=z.call(this)||this;return fe.enumName=J,fe.prop=be,fe._failMsg="is not "+J+"."+be,fe}return le.prototype.getChecker=function(J,be){var fe=this,ge=r(J,this.enumName);if(!(ge instanceof y))throw new Error("Type "+this.enumName+" used in enumlit is not an enum type");var se=ge.members[this.prop];if(!ge.members.hasOwnProperty(this.prop))throw new Error("Unknown value "+this.enumName+"."+this.prop+" used in enumlit");return function(H,te){return H===se?!0:te.fail(null,fe._failMsg,-1)}},le}(i);n.TEnumLiteral=S;function E(z){return Object.keys(z).map(function(le){return L(le,z[le])})}function L(z,le){return le instanceof N?new T(z,le.ttype,!0):new T(z,s(le),!1)}function k(z,le){return new x(z,E(le))}n.iface=k;var x=function(z){e(le,z);function le(J,be){var fe=z.call(this)||this;return fe.bases=J,fe.props=be,fe.propSet=new Set(be.map(function(ge){return ge.name})),fe}return le.prototype.getChecker=function(J,be,fe){var ge=this,se=this.bases.map(function(De){return r(J,De).getChecker(J,be)}),H=this.props.map(function(De){return De.ttype.getChecker(J,be)}),te=new t.NoopContext,ce=this.props.map(function(De,Fe){return!De.isOpt&&!H[Fe](void 0,te)}),ve=function(De,Fe){if(typeof De!="object"||De===null)return Fe.fail(null,"is not an object",0);for(var Oe=0;Oe<se.length;Oe++)if(!se[Oe](De,Fe))return!1;for(var Oe=0;Oe<H.length;Oe++){var oe=ge.props[Oe].name,ee=De[oe];if(ee===void 0){if(ce[Oe])return Fe.fail(oe,"is missing",1)}else{var ae=H[Oe](ee,Fe);if(!ae)return Fe.fail(oe,null,1)}}return!0};if(!be)return ve;var Ee=this.propSet;return fe&&(this.propSet.forEach(function(De){return fe.add(De)}),Ee=fe),function(De,Fe){if(!ve(De,Fe))return!1;for(var Oe in De)if(!Ee.has(Oe))return Fe.fail(Oe,"is extraneous",2);return!0}},le}(i);n.TIface=x;function I(z){return new N(s(z))}n.opt=I;var N=function(z){e(le,z);function le(J){var be=z.call(this)||this;return be.ttype=J,be}return le.prototype.getChecker=function(J,be){var fe=this.ttype.getChecker(J,be);return function(ge,se){return ge===void 0||fe(ge,se)}},le}(i);n.TOptional=N;var T=function(){function z(le,J,be){this.name=le,this.ttype=J,this.isOpt=be}return z}();n.TProp=T;function P(z){for(var le=[],J=1;J<arguments.length;J++)le[J-1]=arguments[J];return new R(new K(le),s(z))}n.func=P;var R=function(z){e(le,z);function le(J,be){var fe=z.call(this)||this;return fe.paramList=J,fe.result=be,fe}return le.prototype.getChecker=function(J,be){return function(fe,ge){return typeof fe=="function"?!0:ge.fail(null,"is not a function",0)}},le}(i);n.TFunc=R;function F(z,le,J){return new j(z,s(le),!!J)}n.param=F;var j=function(){function z(le,J,be){this.name=le,this.ttype=J,this.isOpt=be}return z}();n.TParam=j;var K=function(z){e(le,z);function le(J){var be=z.call(this)||this;return be.params=J,be}return le.prototype.getChecker=function(J,be){var fe=this,ge=this.params.map(function(ce){return ce.ttype.getChecker(J,be)}),se=new t.NoopContext,H=this.params.map(function(ce,ve){return!ce.isOpt&&!ge[ve](void 0,se)}),te=function(ce,ve){if(!Array.isArray(ce))return ve.fail(null,"is not an array",0);for(var Ee=0;Ee<ge.length;Ee++){var De=fe.params[Ee];if(ce[Ee]===void 0){if(H[Ee])return ve.fail(De.name,"is missing",1)}else{var Fe=ge[Ee](ce[Ee],ve);if(!Fe)return ve.fail(De.name,null,1)}}return!0};return be?function(ce,ve){return te(ce,ve)?ce.length<=ge.length?!0:ve.fail(ge.length,"is extraneous",2):!1}:te},le}(i);n.TParamList=K;var Z=function(z){e(le,z);function le(J,be){var fe=z.call(this)||this;return fe.validator=J,fe.message=be,fe}return le.prototype.getChecker=function(J,be){var fe=this;return function(ge,se){return fe.validator(ge)?!0:se.fail(null,fe.message,0)}},le}(i);n.BasicType=Z,n.basicTypes={any:new Z(function(z){return!0},"is invalid"),number:new Z(function(z){return typeof z=="number"},"is not a number"),object:new Z(function(z){return typeof z=="object"&&z},"is not an object"),boolean:new Z(function(z){return typeof z=="boolean"},"is not a boolean"),string:new Z(function(z){return typeof z=="string"},"is not a string"),symbol:new Z(function(z){return typeof z=="symbol"},"is not a symbol"),void:new Z(function(z){return z==null},"is not void"),undefined:new Z(function(z){return z===void 0},"is not undefined"),null:new Z(function(z){return z===null},"is not null"),never:new Z(function(z){return!1},"is unexpected"),Date:new Z(re("[object Date]"),"is not a Date"),RegExp:new Z(re("[object RegExp]"),"is not a RegExp")};var q=Object.prototype.toString;function re(z){return function(le){return typeof le=="object"&&le&&q.call(le)===z}}typeof Buffer<"u"&&(n.basicTypes.Buffer=new Z(function(z){return Buffer.isBuffer(z)},"is not a Buffer"));for(var G=function(z){n.basicTypes[z.name]=new Z(function(le){return le instanceof z},"is not a "+z.name)},W=0,Y=[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,ArrayBuffer];W<Y.length;W++){var X=Y[W];G(X)}})(D8);(function(n){var e=Fi&&Fi.__spreadArrays||function(){for(var l=0,c=0,u=arguments.length;c<u;c++)l+=arguments[c].length;for(var h=Array(l),d=0,c=0;c<u;c++)for(var f=arguments[c],g=0,p=f.length;g<p;g++,d++)h[d]=f[g];return h};Object.defineProperty(n,"__esModule",{value:!0}),n.Checker=n.createCheckers=void 0;var t=D8,i=Yh,s=D8;Object.defineProperty(n,"TArray",{enumerable:!0,get:function(){return s.TArray}}),Object.defineProperty(n,"TEnumType",{enumerable:!0,get:function(){return s.TEnumType}}),Object.defineProperty(n,"TEnumLiteral",{enumerable:!0,get:function(){return s.TEnumLiteral}}),Object.defineProperty(n,"TFunc",{enumerable:!0,get:function(){return s.TFunc}}),Object.defineProperty(n,"TIface",{enumerable:!0,get:function(){return s.TIface}}),Object.defineProperty(n,"TLiteral",{enumerable:!0,get:function(){return s.TLiteral}}),Object.defineProperty(n,"TName",{enumerable:!0,get:function(){return s.TName}}),Object.defineProperty(n,"TOptional",{enumerable:!0,get:function(){return s.TOptional}}),Object.defineProperty(n,"TParam",{enumerable:!0,get:function(){return s.TParam}}),Object.defineProperty(n,"TParamList",{enumerable:!0,get:function(){return s.TParamList}}),Object.defineProperty(n,"TProp",{enumerable:!0,get:function(){return s.TProp}}),Object.defineProperty(n,"TTuple",{enumerable:!0,get:function(){return s.TTuple}}),Object.defineProperty(n,"TType",{enumerable:!0,get:function(){return s.TType}}),Object.defineProperty(n,"TUnion",{enumerable:!0,get:function(){return s.TUnion}}),Object.defineProperty(n,"TIntersection",{enumerable:!0,get:function(){return s.TIntersection}}),Object.defineProperty(n,"array",{enumerable:!0,get:function(){return s.array}}),Object.defineProperty(n,"enumlit",{enumerable:!0,get:function(){return s.enumlit}}),Object.defineProperty(n,"enumtype",{enumerable:!0,get:function(){return s.enumtype}}),Object.defineProperty(n,"func",{enumerable:!0,get:function(){return s.func}}),Object.defineProperty(n,"iface",{enumerable:!0,get:function(){return s.iface}}),Object.defineProperty(n,"lit",{enumerable:!0,get:function(){return s.lit}}),Object.defineProperty(n,"name",{enumerable:!0,get:function(){return s.name}}),Object.defineProperty(n,"opt",{enumerable:!0,get:function(){return s.opt}}),Object.defineProperty(n,"param",{enumerable:!0,get:function(){return s.param}}),Object.defineProperty(n,"tuple",{enumerable:!0,get:function(){return s.tuple}}),Object.defineProperty(n,"union",{enumerable:!0,get:function(){return s.union}}),Object.defineProperty(n,"intersection",{enumerable:!0,get:function(){return s.intersection}}),Object.defineProperty(n,"BasicType",{enumerable:!0,get:function(){return s.BasicType}});var r=Yh;Object.defineProperty(n,"VError",{enumerable:!0,get:function(){return r.VError}});function o(){for(var l=[],c=0;c<arguments.length;c++)l[c]=arguments[c];for(var u=Object.assign.apply(Object,e([{},t.basicTypes],l)),h={},d=0,f=l;d<f.length;d++)for(var g=f[d],p=0,m=Object.keys(g);p<m.length;p++){var _=m[p];h[_]=new a(u,g[_])}return h}n.createCheckers=o;var a=function(){function l(c,u,h){if(h===void 0&&(h="value"),this.suite=c,this.ttype=u,this._path=h,this.props=new Map,u instanceof t.TIface)for(var d=0,f=u.props;d<f.length;d++){var g=f[d];this.props.set(g.name,g.ttype)}this.checkerPlain=this.ttype.getChecker(c,!1),this.checkerStrict=this.ttype.getChecker(c,!0)}return l.prototype.setReportedPath=function(c){this._path=c},l.prototype.check=function(c){return this._doCheck(this.checkerPlain,c)},l.prototype.test=function(c){return this.checkerPlain(c,new i.NoopContext)},l.prototype.validate=function(c){return this._doValidate(this.checkerPlain,c)},l.prototype.strictCheck=function(c){return this._doCheck(this.checkerStrict,c)},l.prototype.strictTest=function(c){return this.checkerStrict(c,new i.NoopContext)},l.prototype.strictValidate=function(c){return this._doValidate(this.checkerStrict,c)},l.prototype.getProp=function(c){var u=this.props.get(c);if(!u)throw new Error("Type has no property "+c);return new l(this.suite,u,this._path+"."+c)},l.prototype.methodArgs=function(c){var u=this._getMethod(c);return new l(this.suite,u.paramList)},l.prototype.methodResult=function(c){var u=this._getMethod(c);return new l(this.suite,u.result)},l.prototype.getArgs=function(){if(!(this.ttype instanceof t.TFunc))throw new Error("getArgs() applied to non-function");return new l(this.suite,this.ttype.paramList)},l.prototype.getResult=function(){if(!(this.ttype instanceof t.TFunc))throw new Error("getResult() applied to non-function");return new l(this.suite,this.ttype.result)},l.prototype.getType=function(){return this.ttype},l.prototype._doCheck=function(c,u){var h=new i.NoopContext;if(!c(u,h)){var d=new i.DetailContext;throw c(u,d),d.getError(this._path)}},l.prototype._doValidate=function(c,u){var h=new i.NoopContext;if(c(u,h))return null;var d=new i.DetailContext;return c(u,d),d.getErrorDetail(this._path)},l.prototype._getMethod=function(c){var u=this.props.get(c);if(!u)throw new Error("Type has no property "+c);if(!(u instanceof t.TFunc))throw new Error("Property "+c+" is not a method");return u},l}();n.Checker=a})(Tn);const RFe=Tn.union(Tn.lit("jsx"),Tn.lit("typescript"),Tn.lit("flow"),Tn.lit("imports"),Tn.lit("react-hot-loader"),Tn.lit("jest")),MFe=Tn.iface([],{compiledFilename:"string"}),OFe=Tn.iface([],{transforms:Tn.array("Transform"),disableESTransforms:Tn.opt("boolean"),jsxRuntime:Tn.opt(Tn.union(Tn.lit("classic"),Tn.lit("automatic"),Tn.lit("preserve"))),production:Tn.opt("boolean"),jsxImportSource:Tn.opt("string"),jsxPragma:Tn.opt("string"),jsxFragmentPragma:Tn.opt("string"),keepUnusedImports:Tn.opt("boolean"),preserveDynamicImport:Tn.opt("boolean"),injectCreateRequireForImportRequire:Tn.opt("boolean"),enableLegacyTypeScriptModuleInterop:Tn.opt("boolean"),enableLegacyBabel5ModuleInterop:Tn.opt("boolean"),sourceMapOptions:Tn.opt("SourceMapOptions"),filePath:Tn.opt("string")}),FFe={Transform:RFe,SourceMapOptions:MFe,Options:OFe},{Options:BFe}=Tn.createCheckers(FFe);function WFe(n){BFe.strictCheck(n)}function Fde(){$e(),qr(!1)}function Bde(n){$e(),iO(n)}function xm(n){qt(),XU(n)}function vA(){qt(),D.tokens[D.tokens.length-1].identifierRole=Mt.ImportDeclaration}function XU(n){let e;D.scopeDepth===0?e=Mt.TopLevelDeclaration:n?e=Mt.BlockScopedDeclaration:e=Mt.FunctionScopedDeclaration,D.tokens[D.tokens.length-1].identifierRole=e}function iO(n){switch(D.type){case C._this:{const e=gi(0);$e(),di(e);return}case C._yield:case C.name:{D.type=C.name,xm(n);return}case C.bracketL:{$e(),QU(C.bracketR,n,!0);return}case C.braceL:cj(!0,n);return;default:ci()}}function QU(n,e,t=!1,i=!1,s=0){let r=!0,o=!1;const a=D.tokens.length;for(;!Me(n)&&!D.error;)if(r?r=!1:(He(C.comma),D.tokens[D.tokens.length-1].contextId=s,!o&&D.tokens[a].isType&&(D.tokens[D.tokens.length-1].isType=!0,o=!0)),!(t&&Q(C.comma))){if(Me(n))break;if(Q(C.ellipsis)){Bde(e),Wde(),Me(C.comma),He(n);break}else VFe(i,e)}}function VFe(n,e){n&&JU([de._public,de._protected,de._private,de._readonly,de._override]),bA(e),Wde(),bA(e,!0)}function Wde(){nn?s3e():Pi&&G4e()}function bA(n,e=!1){if(e||iO(n),!Me(C.eq))return;const t=D.tokens.length-1;qr(),D.tokens[t].rhsEndIndex=D.tokens.length}function I8(){return Q(C.name)}function HFe(){return Q(C.name)||!!(D.type&C.IS_KEYWORD)||Q(C.string)||Q(C.num)||Q(C.bigint)||Q(C.decimal)}function Vde(){const n=D.snapshot();return $e(),(Q(C.bracketL)||Q(C.braceL)||Q(C.star)||Q(C.ellipsis)||Q(C.hash)||HFe())&&!la()?!0:(D.restoreFromSnapshot(n),!1)}function JU(n){for(;Hde(n)!==null;);}function Hde(n){if(!Q(C.name))return null;const e=D.contextualKeyword;if(n.indexOf(e)!==-1&&Vde()){switch(e){case de._readonly:D.tokens[D.tokens.length-1].type=C._readonly;break;case de._abstract:D.tokens[D.tokens.length-1].type=C._abstract;break;case de._static:D.tokens[D.tokens.length-1].type=C._static;break;case de._public:D.tokens[D.tokens.length-1].type=C._public;break;case de._private:D.tokens[D.tokens.length-1].type=C._private;break;case de._protected:D.tokens[D.tokens.length-1].type=C._protected;break;case de._override:D.tokens[D.tokens.length-1].type=C._override;break;case de._declare:D.tokens[D.tokens.length-1].type=C._declare;break}return e}return null}function lE(){for(qt();Me(C.dot);)qt()}function $Fe(){lE(),!la()&&Q(C.lessThan)&&wC()}function zFe(){$e(),cE()}function UFe(){$e()}function jFe(){He(C._typeof),Q(C._import)?$de():lE(),!la()&&Q(C.lessThan)&&wC()}function $de(){He(C._import),He(C.parenL),He(C.string),He(C.parenR),Me(C.dot)&&lE(),Q(C.lessThan)&&wC()}function qFe(){Me(C._const);const n=Me(C._in),e=br(de._out);Me(C._const),(n||e)&&!Q(C.name)?D.tokens[D.tokens.length-1].type=C.name:qt(),Me(C._extends)&&Ts(),Me(C.eq)&&Ts()}function Cv(){Q(C.lessThan)&&nO()}function nO(){const n=gi(0);for(Q(C.lessThan)||Q(C.typeParameterStart)?$e():ci();!Me(C.greaterThan)&&!D.error;)qFe(),Me(C.comma);di(n)}function ej(n){const e=n===C.arrow;Cv(),He(C.parenL),D.scopeDepth++,KFe(!1),D.scopeDepth--,(e||Q(n))&&oL(n)}function KFe(n){QU(C.parenR,n)}function yA(){Me(C.comma)||ls()}function BQ(){ej(C.colon),yA()}function GFe(){const n=D.snapshot();$e();const e=Me(C.name)&&Q(C.colon);return D.restoreFromSnapshot(n),e}function zde(){if(!(Q(C.bracketL)&&GFe()))return!1;const n=gi(0);return He(C.bracketL),qt(),cE(),He(C.bracketR),CC(),yA(),di(n),!0}function WQ(n){Me(C.question),!n&&(Q(C.parenL)||Q(C.lessThan))?(ej(C.colon),yA()):(CC(),yA())}function YFe(){if(Q(C.parenL)||Q(C.lessThan)){BQ();return}if(Q(C._new)){$e(),Q(C.parenL)||Q(C.lessThan)?BQ():WQ(!1);return}const n=!!Hde([de._readonly]);zde()||((Dt(de._get)||Dt(de._set))&&Vde(),aL(-1),WQ(n))}function ZFe(){Ude()}function Ude(){for(He(C.braceL);!Me(C.braceR)&&!D.error;)YFe()}function XFe(){const n=D.snapshot(),e=QFe();return D.restoreFromSnapshot(n),e}function QFe(){return $e(),Me(C.plus)||Me(C.minus)?Dt(de._readonly):(Dt(de._readonly)&&$e(),!Q(C.bracketL)||($e(),!I8())?!1:($e(),Q(C._in)))}function JFe(){qt(),He(C._in),Ts()}function e4e(){He(C.braceL),Q(C.plus)||Q(C.minus)?($e(),Us(de._readonly)):br(de._readonly),He(C.bracketL),JFe(),br(de._as)&&Ts(),He(C.bracketR),Q(C.plus)||Q(C.minus)?($e(),He(C.question)):Me(C.question),g4e(),ls(),He(C.braceR)}function t4e(){for(He(C.bracketL);!Me(C.bracketR)&&!D.error;)i4e(),Me(C.comma)}function i4e(){Me(C.ellipsis)?Ts():(Ts(),Me(C.question)),Me(C.colon)&&Ts()}function n4e(){He(C.parenL),Ts(),He(C.parenR)}function s4e(){for(Zg(),Zg();!Q(C.backQuote)&&!D.error;)He(C.dollarBraceL),Ts(),Zg(),Zg();$e()}var _p;(function(n){n[n.TSFunctionType=0]="TSFunctionType";const t=1;n[n.TSConstructorType=t]="TSConstructorType";const i=t+1;n[n.TSAbstractConstructorType=i]="TSAbstractConstructorType"})(_p||(_p={}));function o5(n){n===_p.TSAbstractConstructorType&&Us(de._abstract),(n===_p.TSConstructorType||n===_p.TSAbstractConstructorType)&&He(C._new);const e=D.inDisallowConditionalTypesContext;D.inDisallowConditionalTypesContext=!1,ej(C.arrow),D.inDisallowConditionalTypesContext=e}function r4e(){switch(D.type){case C.name:$Fe();return;case C._void:case C._null:$e();return;case C.string:case C.num:case C.bigint:case C.decimal:case C._true:case C._false:cy();return;case C.minus:$e(),cy();return;case C._this:{UFe(),Dt(de._is)&&!la()&&zFe();return}case C._typeof:jFe();return;case C._import:$de();return;case C.braceL:XFe()?e4e():ZFe();return;case C.bracketL:t4e();return;case C.parenL:n4e();return;case C.backQuote:s4e();return;default:if(D.type&C.IS_KEYWORD){$e(),D.tokens[D.tokens.length-1].type=C.name;return}break}ci()}function o4e(){for(r4e();!la()&&Me(C.bracketL);)Me(C.bracketR)||(Ts(),He(C.bracketR))}function a4e(){if(Us(de._infer),qt(),Q(C._extends)){const n=D.snapshot();He(C._extends);const e=D.inDisallowConditionalTypesContext;D.inDisallowConditionalTypesContext=!0,Ts(),D.inDisallowConditionalTypesContext=e,(D.error||!D.inDisallowConditionalTypesContext&&Q(C.question))&&D.restoreFromSnapshot(n)}}function T8(){if(Dt(de._keyof)||Dt(de._unique)||Dt(de._readonly))$e(),T8();else if(Dt(de._infer))a4e();else{const n=D.inDisallowConditionalTypesContext;D.inDisallowConditionalTypesContext=!1,o4e(),D.inDisallowConditionalTypesContext=n}}function VQ(){if(Me(C.bitwiseAND),T8(),Q(C.bitwiseAND))for(;Me(C.bitwiseAND);)T8()}function l4e(){if(Me(C.bitwiseOR),VQ(),Q(C.bitwiseOR))for(;Me(C.bitwiseOR);)VQ()}function c4e(){return Q(C.lessThan)?!0:Q(C.parenL)&&h4e()}function u4e(){if(Q(C.name)||Q(C._this))return $e(),!0;if(Q(C.braceL)||Q(C.bracketL)){let n=1;for($e();n>0&&!D.error;)Q(C.braceL)||Q(C.bracketL)?n++:(Q(C.braceR)||Q(C.bracketR))&&n--,$e();return!0}return!1}function h4e(){const n=D.snapshot(),e=d4e();return D.restoreFromSnapshot(n),e}function d4e(){return $e(),!!(Q(C.parenR)||Q(C.ellipsis)||u4e()&&(Q(C.colon)||Q(C.comma)||Q(C.question)||Q(C.eq)||Q(C.parenR)&&($e(),Q(C.arrow))))}function oL(n){const e=gi(0);He(n),p4e()||Ts(),di(e)}function f4e(){Q(C.colon)&&oL(C.colon)}function CC(){Q(C.colon)&&cE()}function g4e(){Me(C.colon)&&Ts()}function p4e(){const n=D.snapshot();return Dt(de._asserts)?($e(),br(de._is)?(Ts(),!0):I8()||Q(C._this)?($e(),br(de._is)&&Ts(),!0):(D.restoreFromSnapshot(n),!1)):I8()||Q(C._this)?($e(),Dt(de._is)&&!la()?($e(),Ts(),!0):(D.restoreFromSnapshot(n),!1)):!1}function cE(){const n=gi(0);He(C.colon),Ts(),di(n)}function Ts(){if(HQ(),D.inDisallowConditionalTypesContext||la()||!Me(C._extends))return;const n=D.inDisallowConditionalTypesContext;D.inDisallowConditionalTypesContext=!0,HQ(),D.inDisallowConditionalTypesContext=n,He(C.question),Ts(),He(C.colon),Ts()}function m4e(){return Dt(de._abstract)&&Is()===C._new}function HQ(){if(c4e()){o5(_p.TSFunctionType);return}if(Q(C._new)){o5(_p.TSConstructorType);return}else if(m4e()){o5(_p.TSAbstractConstructorType);return}l4e()}function _4e(){const n=gi(1);Ts(),He(C.greaterThan),di(n),uE()}function v4e(){if(Me(C.jsxTagStart)){D.tokens[D.tokens.length-1].type=C.typeParameterStart;const n=gi(1);for(;!Q(C.greaterThan)&&!D.error;)Ts(),Me(C.comma);mc(),di(n)}}function jde(){for(;!Q(C.braceL)&&!D.error;)b4e(),Me(C.comma)}function b4e(){lE(),Q(C.lessThan)&&wC()}function y4e(){xm(!1),Cv(),Me(C._extends)&&jde(),Ude()}function C4e(){xm(!1),Cv(),He(C.eq),Ts(),ls()}function w4e(){if(Q(C.string)?cy():qt(),Me(C.eq)){const n=D.tokens.length-1;qr(),D.tokens[n].rhsEndIndex=D.tokens.length}}function tj(){for(xm(!1),He(C.braceL);!Me(C.braceR)&&!D.error;)w4e(),Me(C.comma)}function ij(){He(C.braceL),aO(C.braceR)}function N8(){xm(!1),Me(C.dot)?N8():ij()}function qde(){Dt(de._global)?qt():Q(C.string)?Kf():ci(),Q(C.braceL)?ij():ls()}function A8(){vA(),He(C.eq),k4e(),ls()}function S4e(){return Dt(de._require)&&Is()===C.parenL}function k4e(){S4e()?L4e():lE()}function L4e(){Us(de._require),He(C.parenL),Q(C.string)||ci(),cy(),He(C.parenR)}function x4e(){if(Th())return!1;switch(D.type){case C._function:{const n=gi(1);$e();const e=D.start;return L_(e,!0),di(n),!0}case C._class:{const n=gi(1);return x_(!0,!1),di(n),!0}case C._const:if(Q(C._const)&&GU(de._enum)){const n=gi(1);return He(C._const),Us(de._enum),D.tokens[D.tokens.length-1].type=C._enum,tj(),di(n),!0}case C._var:case C._let:{const n=gi(1);return UT(D.type!==C._var),di(n),!0}case C.name:{const n=gi(1),e=D.contextualKeyword;let t=!1;return e===de._global?(qde(),t=!0):t=sO(e,!0),di(n),t}default:return!1}}function $Q(){return sO(D.contextualKeyword,!0)}function E4e(n){switch(n){case de._declare:{const e=D.tokens.length-1;if(x4e())return D.tokens[e].type=C._declare,!0;break}case de._global:if(Q(C.braceL))return ij(),!0;break;default:return sO(n,!1)}return!1}function sO(n,e){switch(n){case de._abstract:if(Gv(e)&&Q(C._class))return D.tokens[D.tokens.length-1].type=C._abstract,x_(!0,!1),!0;break;case de._enum:if(Gv(e)&&Q(C.name))return D.tokens[D.tokens.length-1].type=C._enum,tj(),!0;break;case de._interface:if(Gv(e)&&Q(C.name)){const t=gi(e?2:1);return y4e(),di(t),!0}break;case de._module:if(Gv(e)){if(Q(C.string)){const t=gi(e?2:1);return qde(),di(t),!0}else if(Q(C.name)){const t=gi(e?2:1);return N8(),di(t),!0}}break;case de._namespace:if(Gv(e)&&Q(C.name)){const t=gi(e?2:1);return N8(),di(t),!0}break;case de._type:if(Gv(e)&&Q(C.name)){const t=gi(e?2:1);return C4e(),di(t),!0}break}return!1}function Gv(n){return n?($e(),!0):!Th()}function D4e(){const n=D.snapshot();return nO(),SC(),f4e(),He(C.arrow),D.error?(D.restoreFromSnapshot(n),!1):(hE(!0),!0)}function nj(){D.type===C.bitShiftL&&(D.pos-=1,li(C.lessThan)),wC()}function wC(){const n=gi(0);for(He(C.lessThan);!Q(C.greaterThan)&&!D.error;)Ts(),Me(C.comma);n?(He(C.greaterThan),di(n)):(di(n),Ede(),He(C.greaterThan),D.tokens[D.tokens.length-1].isType=!0)}function Kde(){if(Q(C.name))switch(D.contextualKeyword){case de._abstract:case de._declare:case de._enum:case de._interface:case de._module:case de._namespace:case de._type:return!0}return!1}function I4e(n,e){if(Q(C.colon)&&oL(C.colon),!Q(C.braceL)&&Th()){let t=D.tokens.length-1;for(;t>=0&&(D.tokens[t].start>=n||D.tokens[t].type===C._default||D.tokens[t].type===C._export);)D.tokens[t].isType=!0,t--;return}hE(!1,e)}function T4e(n,e,t){if(!la()&&Me(C.bang)){D.tokens[D.tokens.length-1].type=C.nonNullAssertion;return}if(Q(C.lessThan)||Q(C.bitShiftL)){const i=D.snapshot();if(!e&&tfe()&&D4e())return;if(nj(),!e&&Me(C.parenL)?(D.tokens[D.tokens.length-1].subscriptStartIndex=n,vp()):Q(C.backQuote)?lj():(D.type===C.greaterThan||D.type!==C.parenL&&D.type&C.IS_EXPRESSION_START&&!la())&&ci(),D.error)D.restoreFromSnapshot(i);else return}else!e&&Q(C.questionDot)&&Is()===C.lessThan&&($e(),D.tokens[n].isOptionalChainStart=!0,D.tokens[D.tokens.length-1].subscriptStartIndex=n,wC(),He(C.parenL),vp());rj(n,e,t)}function N4e(){if(Me(C._import))return Dt(de._type)&&Is()!==C.eq&&Us(de._type),A8(),!0;if(Me(C.eq))return jr(),ls(),!0;if(br(de._as))return Us(de._namespace),qt(),ls(),!0;if(Dt(de._type)){const n=Is();(n===C.braceL||n===C.star)&&$e()}return!1}function A4e(){if(qt(),Q(C.comma)||Q(C.braceR)){D.tokens[D.tokens.length-1].identifierRole=Mt.ImportDeclaration;return}if(qt(),Q(C.comma)||Q(C.braceR)){D.tokens[D.tokens.length-1].identifierRole=Mt.ImportDeclaration,D.tokens[D.tokens.length-2].isType=!0,D.tokens[D.tokens.length-1].isType=!0;return}if(qt(),Q(C.comma)||Q(C.braceR)){D.tokens[D.tokens.length-3].identifierRole=Mt.ImportAccess,D.tokens[D.tokens.length-1].identifierRole=Mt.ImportDeclaration;return}qt(),D.tokens[D.tokens.length-3].identifierRole=Mt.ImportAccess,D.tokens[D.tokens.length-1].identifierRole=Mt.ImportDeclaration,D.tokens[D.tokens.length-4].isType=!0,D.tokens[D.tokens.length-3].isType=!0,D.tokens[D.tokens.length-2].isType=!0,D.tokens[D.tokens.length-1].isType=!0}function P4e(){if(qt(),Q(C.comma)||Q(C.braceR)){D.tokens[D.tokens.length-1].identifierRole=Mt.ExportAccess;return}if(qt(),Q(C.comma)||Q(C.braceR)){D.tokens[D.tokens.length-1].identifierRole=Mt.ExportAccess,D.tokens[D.tokens.length-2].isType=!0,D.tokens[D.tokens.length-1].isType=!0;return}if(qt(),Q(C.comma)||Q(C.braceR)){D.tokens[D.tokens.length-3].identifierRole=Mt.ExportAccess;return}qt(),D.tokens[D.tokens.length-3].identifierRole=Mt.ExportAccess,D.tokens[D.tokens.length-4].isType=!0,D.tokens[D.tokens.length-3].isType=!0,D.tokens[D.tokens.length-2].isType=!0,D.tokens[D.tokens.length-1].isType=!0}function R4e(){if(Dt(de._abstract)&&Is()===C._class)return D.type=C._abstract,$e(),x_(!0,!0),!0;if(Dt(de._interface)){const n=gi(2);return sO(de._interface,!0),di(n),!0}return!1}function M4e(){if(D.type===C._const){const n=aE();if(n.type===C.name&&n.contextualKeyword===de._enum)return He(C._const),Us(de._enum),D.tokens[D.tokens.length-1].type=C._enum,tj(),!0}return!1}function O4e(n){const e=D.tokens.length;JU([de._abstract,de._readonly,de._declare,de._static,de._override]);const t=D.tokens.length;if(zde()){const s=n?e-1:e;for(let r=s;r<t;r++)D.tokens[r].isType=!0;return!0}return!1}function F4e(n){E4e(n)||ls()}function B4e(){const n=br(de._declare);n&&(D.tokens[D.tokens.length-1].type=C._declare);let e=!1;if(Q(C.name))if(n){const t=gi(2);e=$Q(),di(t)}else e=$Q();if(!e)if(n){const t=gi(2);Ml(!0),di(t)}else Ml(!0)}function W4e(n){if(n&&(Q(C.lessThan)||Q(C.bitShiftL))&&nj(),br(de._implements)){D.tokens[D.tokens.length-1].type=C._implements;const e=gi(1);jde(),di(e)}}function V4e(){Cv()}function H4e(){Cv()}function $4e(){const n=gi(0);la()||Me(C.bang),CC(),di(n)}function z4e(){Q(C.colon)&&cE()}function U4e(n,e){return eO?j4e(n,e):q4e(n,e)}function j4e(n,e){if(!Q(C.lessThan))return Zh(n,e);const t=D.snapshot();let i=Zh(n,e);if(D.error)D.restoreFromSnapshot(t);else return i;return D.type=C.typeParameterStart,nO(),i=Zh(n,e),i||ci(),i}function q4e(n,e){if(!Q(C.lessThan))return Zh(n,e);const t=D.snapshot();nO();const i=Zh(n,e);if(i||ci(),D.error)D.restoreFromSnapshot(t);else return i;return Zh(n,e)}function K4e(){if(Q(C.colon)){const n=D.snapshot();oL(C.colon),wl()&&ci(),Q(C.arrow)||ci(),D.error&&D.restoreFromSnapshot(n)}return Me(C.arrow)}function G4e(){const n=gi(0);Me(C.question),CC(),di(n)}function Y4e(){(Q(C.lessThan)||Q(C.bitShiftL))&&nj(),ffe()}function Z4e(){let n=!1,e=!1;for(;;){if(D.pos>=tt.length){ci("Unterminated JSX contents");return}const t=tt.charCodeAt(D.pos);if(t===ye.lessThan||t===ye.leftCurlyBrace){if(D.pos===D.start){if(t===ye.lessThan){D.pos++,li(C.jsxTagStart);return}Dde(t);return}li(n&&!e?C.jsxEmptyText:C.jsxText);return}t===ye.lineFeed?n=!0:t!==ye.space&&t!==ye.carriageReturn&&t!==ye.tab&&(e=!0),D.pos++}}function X4e(n){for(D.pos++;;){if(D.pos>=tt.length){ci("Unterminated string constant");return}if(tt.charCodeAt(D.pos)===n){D.pos++;break}D.pos++}li(C.string)}function Q4e(){let n;do{if(D.pos>tt.length){ci("Unexpectedly reached the end of input.");return}n=tt.charCodeAt(++D.pos)}while(Eu[n]||n===ye.dash);li(C.jsxName)}function P8(){mc()}function Gde(n){if(P8(),!Me(C.colon)){D.tokens[D.tokens.length-1].identifierRole=n;return}P8()}function Yde(){const n=D.tokens.length;Gde(Mt.Access);let e=!1;for(;Q(C.dot);)e=!0,mc(),P8();if(!e){const t=D.tokens[n],i=tt.charCodeAt(t.start);i>=ye.lowercaseA&&i<=ye.lowercaseZ&&(t.identifierRole=null)}}function J4e(){switch(D.type){case C.braceL:$e(),jr(),mc();return;case C.jsxTagStart:Xde(),mc();return;case C.string:mc();return;default:ci("JSX value should be either an expression or a quoted JSX text")}}function e5e(){He(C.ellipsis),jr()}function t5e(n){if(Q(C.jsxTagEnd))return!1;Yde(),Pi&&v4e();let e=!1;for(;!Q(C.slash)&&!Q(C.jsxTagEnd)&&!D.error;){if(Me(C.braceL)){e=!0,He(C.ellipsis),qr(),mc();continue}e&&D.end-D.start===3&&tt.charCodeAt(D.start)===ye.lowercaseK&&tt.charCodeAt(D.start+1)===ye.lowercaseE&&tt.charCodeAt(D.start+2)===ye.lowercaseY&&(D.tokens[n].jsxRole=pu.KeyAfterPropSpread),Gde(Mt.ObjectKey),Q(C.eq)&&(mc(),J4e())}const t=Q(C.slash);return t&&mc(),t}function i5e(){Q(C.jsxTagEnd)||Yde()}function Zde(){const n=D.tokens.length-1;D.tokens[n].jsxRole=pu.NoChildren;let e=0;if(!t5e(n))for(Yv();;)switch(D.type){case C.jsxTagStart:if(mc(),Q(C.slash)){mc(),i5e(),D.tokens[n].jsxRole!==pu.KeyAfterPropSpread&&(e===1?D.tokens[n].jsxRole=pu.OneChild:e>1&&(D.tokens[n].jsxRole=pu.StaticChildren));return}e++,Zde(),Yv();break;case C.jsxText:e++,Yv();break;case C.jsxEmptyText:Yv();break;case C.braceL:$e(),Q(C.ellipsis)?(e5e(),Yv(),e+=2):(Q(C.braceR)||(e++,jr()),Yv());break;default:ci();return}}function Xde(){mc(),Zde()}function mc(){D.tokens.push(new tO),Lde(),D.start=D.pos;const n=tt.charCodeAt(D.pos);if(oE[n])Q4e();else if(n===ye.quotationMark||n===ye.apostrophe)X4e(n);else switch(++D.pos,n){case ye.greaterThan:li(C.jsxTagEnd);break;case ye.lessThan:li(C.jsxTagStart);break;case ye.slash:li(C.slash);break;case ye.equalsTo:li(C.eq);break;case ye.leftCurlyBrace:li(C.braceL);break;case ye.dot:li(C.dot);break;case ye.colon:li(C.colon);break;default:ci()}}function Yv(){D.tokens.push(new tO),D.start=D.pos,Z4e()}function n5e(n){if(Q(C.question)){const e=Is();if(e===C.colon||e===C.comma||e===C.parenR)return}Qde(n)}function s5e(){yde(C.question),Q(C.colon)&&(Pi?cE():nn&&wv())}class r5e{constructor(e){this.stop=e}}function jr(n=!1){if(qr(n),Q(C.comma))for(;Me(C.comma);)qr(n)}function qr(n=!1,e=!1){return Pi?U4e(n,e):nn?u3e(n,e):Zh(n,e)}function Zh(n,e){if(Q(C._yield))return C5e(),!1;(Q(C.parenL)||Q(C.name)||Q(C._yield))&&(D.potentialArrowAt=D.start);const t=o5e(n);return e&&aj(),D.type&C.IS_ASSIGN?($e(),qr(n),!1):t}function o5e(n){return l5e(n)?!0:(a5e(n),!1)}function a5e(n){Pi||nn?n5e(n):Qde(n)}function Qde(n){Me(C.question)&&(qr(),He(C.colon),qr(n))}function l5e(n){const e=D.tokens.length;return uE()?!0:($T(e,-1,n),!1)}function $T(n,e,t){if(Pi&&(C._in&C.PRECEDENCE_MASK)>e&&!la()&&(br(de._as)||br(de._satisfies))){const s=gi(1);Ts(),di(s),Ede(),$T(n,e,t);return}const i=D.type&C.PRECEDENCE_MASK;if(i>0&&(!t||!Q(C._in))&&i>e){const s=D.type;$e(),s===C.nullishCoalescing&&(D.tokens[D.tokens.length-1].nullishStartIndex=n);const r=D.tokens.length;uE(),$T(r,s&C.IS_RIGHT_ASSOCIATIVE?i-1:i,t),s===C.nullishCoalescing&&(D.tokens[n].numNullishCoalesceStarts++,D.tokens[D.tokens.length-1].numNullishCoalesceEnds++),$T(n,e,t)}}function uE(){if(Pi&&!eO&&Me(C.lessThan))return _4e(),!1;if(Dt(de._module)&&wde()===ye.leftCurlyBrace&&!pde())return w5e(),!1;if(D.type&C.IS_PREFIX)return $e(),uE(),!1;if(Jde())return!0;for(;D.type&C.IS_POSTFIX&&!wl();)D.type===C.preIncDec&&(D.type=C.postIncDec),$e();return!1}function Jde(){const n=D.tokens.length;return Kf()?!0:(sj(n),D.tokens.length>n&&D.tokens[n].isOptionalChainStart&&(D.tokens[D.tokens.length-1].isOptionalChainEnd=!0),!1)}function sj(n,e=!1){nn?d3e(n,e):efe(n,e)}function efe(n,e=!1){const t=new r5e(!1);do c5e(n,e,t);while(!t.stop&&!D.error)}function c5e(n,e,t){Pi?T4e(n,e,t):nn?q5e(n,e,t):rj(n,e,t)}function rj(n,e,t){if(!e&&Me(C.doubleColon))oj(),t.stop=!0,sj(n,e);else if(Q(C.questionDot)){if(D.tokens[n].isOptionalChainStart=!0,e&&Is()===C.parenL){t.stop=!0;return}$e(),D.tokens[D.tokens.length-1].subscriptStartIndex=n,Me(C.bracketL)?(jr(),He(C.bracketR)):Me(C.parenL)?vp():CA()}else if(Me(C.dot))D.tokens[D.tokens.length-1].subscriptStartIndex=n,CA();else if(Me(C.bracketL))D.tokens[D.tokens.length-1].subscriptStartIndex=n,jr(),He(C.bracketR);else if(!e&&Q(C.parenL))if(tfe()){const i=D.snapshot(),s=D.tokens.length;$e(),D.tokens[D.tokens.length-1].subscriptStartIndex=n;const r=sL();D.tokens[D.tokens.length-1].contextId=r,vp(),D.tokens[D.tokens.length-1].contextId=r,u5e()&&(D.restoreFromSnapshot(i),t.stop=!0,D.scopeDepth++,SC(),h5e(s))}else{$e(),D.tokens[D.tokens.length-1].subscriptStartIndex=n;const i=sL();D.tokens[D.tokens.length-1].contextId=i,vp(),D.tokens[D.tokens.length-1].contextId=i}else Q(C.backQuote)?lj():t.stop=!0}function tfe(){return D.tokens[D.tokens.length-1].contextualKeyword===de._async&&!wl()}function vp(){let n=!0;for(;!Me(C.parenR)&&!D.error;){if(n)n=!1;else if(He(C.comma),Me(C.parenR))break;rfe(!1)}}function u5e(){return Q(C.colon)||Q(C.arrow)}function h5e(n){Pi?z4e():nn&&c3e(),He(C.arrow),lL(n)}function oj(){const n=D.tokens.length;Kf(),sj(n,!0)}function Kf(){if(Me(C.modulo))return qt(),!1;if(Q(C.jsxText)||Q(C.jsxEmptyText))return cy(),!1;if(Q(C.lessThan)&&eO)return D.type=C.jsxTagStart,Xde(),$e(),!1;const n=D.potentialArrowAt===D.start;switch(D.type){case C.slash:case C.assign:J2e();case C._super:case C._this:case C.regexp:case C.num:case C.bigint:case C.decimal:case C.string:case C._null:case C._true:case C._false:return $e(),!1;case C._import:return $e(),Q(C.dot)&&(D.tokens[D.tokens.length-1].type=C.name,$e(),qt()),!1;case C.name:{const e=D.tokens.length,t=D.start,i=D.contextualKeyword;return qt(),i===de._await?(y5e(),!1):i===de._async&&Q(C._function)&&!wl()?($e(),L_(t,!1),!1):n&&i===de._async&&!wl()&&Q(C.name)?(D.scopeDepth++,xm(!1),He(C.arrow),lL(e),!0):Q(C._do)&&!wl()?($e(),bp(),!1):n&&!wl()&&Q(C.arrow)?(D.scopeDepth++,XU(!1),He(C.arrow),lL(e),!0):(D.tokens[D.tokens.length-1].identifierRole=Mt.Access,!1)}case C._do:return $e(),bp(),!1;case C.parenL:return ife(n);case C.bracketL:return $e(),sfe(C.bracketR,!0),!1;case C.braceL:return cj(!1,!1),!1;case C._function:return d5e(),!1;case C.at:vj();case C._class:return x_(!1),!1;case C._new:return g5e(),!1;case C.backQuote:return lj(),!1;case C.doubleColon:return $e(),oj(),!1;case C.hash:{const e=wde();return oE[e]||e===ye.backslash?CA():$e(),!1}default:return ci(),!1}}function CA(){Me(C.hash),qt()}function d5e(){const n=D.start;qt(),Me(C.dot)&&qt(),L_(n,!1)}function cy(){$e()}function rO(){He(C.parenL),jr(),He(C.parenR)}function ife(n){const e=D.snapshot(),t=D.tokens.length;He(C.parenL);let i=!0;for(;!Q(C.parenR)&&!D.error;){if(i)i=!1;else if(He(C.comma),Q(C.parenR))break;if(Q(C.ellipsis)){Bde(!1),aj();break}else qr(!1,!0)}return He(C.parenR),n&&f5e()&&R8()?(D.restoreFromSnapshot(e),D.scopeDepth++,SC(),R8(),lL(t),D.error?(D.restoreFromSnapshot(e),ife(!1),!1):!0):!1}function f5e(){return Q(C.colon)||!wl()}function R8(){return Pi?K4e():nn?h3e():Me(C.arrow)}function aj(){(Pi||nn)&&s5e()}function g5e(){if(He(C._new),Me(C.dot)){qt();return}p5e(),nn&&K5e(),Me(C.parenL)&&sfe(C.parenR)}function p5e(){oj(),Me(C.questionDot)}function lj(){for(Zg(),Zg();!Q(C.backQuote)&&!D.error;)He(C.dollarBraceL),jr(),Zg(),Zg();$e()}function cj(n,e){const t=sL();let i=!0;for($e(),D.tokens[D.tokens.length-1].contextId=t;!Me(C.braceR)&&!D.error;){if(i)i=!1;else if(He(C.comma),Me(C.braceR))break;let s=!1;if(Q(C.ellipsis)){const r=D.tokens.length;if(Fde(),n&&(D.tokens.length===r+2&&XU(e),Me(C.braceR)))break;continue}n||(s=Me(C.star)),!n&&Dt(de._async)?(s&&ci(),qt(),Q(C.colon)||Q(C.parenL)||Q(C.braceR)||Q(C.eq)||Q(C.comma)||(Q(C.star)&&($e(),s=!0),aL(t))):aL(t),b5e(n,e,t)}D.tokens[D.tokens.length-1].contextId=t}function m5e(n){return!n&&(Q(C.string)||Q(C.num)||Q(C.bracketL)||Q(C.name)||!!(D.type&C.IS_KEYWORD))}function _5e(n,e){const t=D.start;return Q(C.parenL)?(n&&ci(),M8(t,!1),!0):m5e(n)?(aL(e),M8(t,!1),!0):!1}function v5e(n,e){if(Me(C.colon)){n?bA(e):qr(!1);return}let t;n?D.scopeDepth===0?t=Mt.ObjectShorthandTopLevelDeclaration:e?t=Mt.ObjectShorthandBlockScopedDeclaration:t=Mt.ObjectShorthandFunctionScopedDeclaration:t=Mt.ObjectShorthand,D.tokens[D.tokens.length-1].identifierRole=t,bA(e,!0)}function b5e(n,e,t){Pi?V4e():nn&&n3e(),_5e(n,t)||v5e(n,e)}function aL(n){nn&&_j(),Me(C.bracketL)?(D.tokens[D.tokens.length-1].contextId=n,qr(),He(C.bracketR),D.tokens[D.tokens.length-1].contextId=n):(Q(C.num)||Q(C.string)||Q(C.bigint)||Q(C.decimal)?Kf():CA(),D.tokens[D.tokens.length-1].identifierRole=Mt.ObjectKey,D.tokens[D.tokens.length-1].contextId=n)}function M8(n,e){const t=sL();D.scopeDepth++;const i=D.tokens.length;SC(e,t),nfe(n,t);const r=D.tokens.length;D.scopes.push(new ud(i,r,!0)),D.scopeDepth--}function lL(n){hE(!0);const e=D.tokens.length;D.scopes.push(new ud(n,e,!0)),D.scopeDepth--}function nfe(n,e=0){Pi?I4e(n,e):nn?j5e(e):hE(!1,e)}function hE(n,e=0){n&&!Q(C.braceL)?qr():bp(!0,e)}function sfe(n,e=!1){let t=!0;for(;!Me(n)&&!D.error;){if(t)t=!1;else if(He(C.comma),Me(n))break;rfe(e)}}function rfe(n){n&&Q(C.comma)||(Q(C.ellipsis)?(Fde(),aj()):Q(C.question)?$e():qr(!1,!0))}function qt(){$e(),D.tokens[D.tokens.length-1].type=C.name}function y5e(){uE()}function C5e(){$e(),!Q(C.semi)&&!wl()&&(Me(C.star),qr())}function w5e(){Us(de._module),He(C.braceL),aO(C.braceR)}function S5e(n){return(n.type===C.name||!!(n.type&C.IS_KEYWORD))&&n.contextualKeyword!==de._from}function hd(n){const e=gi(0);He(n||C.colon),qa(),di(e)}function zQ(){He(C.modulo),Us(de._checks),Me(C.parenL)&&(jr(),He(C.parenR))}function uj(){const n=gi(0);He(C.colon),Q(C.modulo)?zQ():(qa(),Q(C.modulo)&&zQ()),di(n)}function k5e(){$e(),hj(!0)}function L5e(){$e(),qt(),Q(C.lessThan)&&Bu(),He(C.parenL),F8(),He(C.parenR),uj(),ls()}function O8(){Q(C._class)?k5e():Q(C._function)?L5e():Q(C._var)?x5e():br(de._module)?Me(C.dot)?I5e():E5e():Dt(de._type)?T5e():Dt(de._opaque)?N5e():Dt(de._interface)?A5e():Q(C._export)?D5e():ci()}function x5e(){$e(),cfe(),ls()}function E5e(){for(Q(C.string)?Kf():qt(),He(C.braceL);!Q(C.braceR)&&!D.error;)Q(C._import)?($e(),bfe()):ci();He(C.braceR)}function D5e(){He(C._export),Me(C._default)?Q(C._function)||Q(C._class)?O8():(qa(),ls()):Q(C._var)||Q(C._function)||Q(C._class)||Dt(de._opaque)?O8():Q(C.star)||Q(C.braceL)||Dt(de._interface)||Dt(de._type)||Dt(de._opaque)?_fe():ci()}function I5e(){Us(de._exports),wv(),ls()}function T5e(){$e(),fj()}function N5e(){$e(),gj(!0)}function A5e(){$e(),hj()}function hj(n=!1){if(oO(),Q(C.lessThan)&&Bu(),Me(C._extends))do zT();while(!n&&Me(C.comma));if(Dt(de._mixins)){$e();do zT();while(Me(C.comma))}if(Dt(de._implements)){$e();do zT();while(Me(C.comma))}wA(n,!1,n)}function zT(){ofe(!1),Q(C.lessThan)&&k_()}function dj(){hj()}function oO(){qt()}function fj(){oO(),Q(C.lessThan)&&Bu(),hd(C.eq),ls()}function gj(n){Us(de._type),oO(),Q(C.lessThan)&&Bu(),Q(C.colon)&&hd(C.colon),n||hd(C.eq),ls()}function P5e(){_j(),cfe(),Me(C.eq)&&qa()}function Bu(){const n=gi(0);Q(C.lessThan)||Q(C.typeParameterStart)?$e():ci();do P5e(),Q(C.greaterThan)||He(C.comma);while(!Q(C.greaterThan)&&!D.error);He(C.greaterThan),di(n)}function k_(){const n=gi(0);for(He(C.lessThan);!Q(C.greaterThan)&&!D.error;)qa(),Q(C.greaterThan)||He(C.comma);He(C.greaterThan),di(n)}function R5e(){if(Us(de._interface),Me(C._extends))do zT();while(Me(C.comma));wA(!1,!1,!1)}function pj(){Q(C.num)||Q(C.string)?Kf():qt()}function M5e(){Is()===C.colon?(pj(),hd()):qa(),He(C.bracketR),hd()}function O5e(){pj(),He(C.bracketR),He(C.bracketR),Q(C.lessThan)||Q(C.parenL)?mj():(Me(C.question),hd())}function mj(){for(Q(C.lessThan)&&Bu(),He(C.parenL);!Q(C.parenR)&&!Q(C.ellipsis)&&!D.error;)SA(),Q(C.parenR)||He(C.comma);Me(C.ellipsis)&&SA(),He(C.parenR),hd()}function F5e(){mj()}function wA(n,e,t){let i;for(e&&Q(C.braceBarL)?(He(C.braceBarL),i=C.braceBarR):(He(C.braceL),i=C.braceR);!Q(i)&&!D.error;){if(t&&Dt(de._proto)){const s=Is();s!==C.colon&&s!==C.question&&($e(),n=!1)}if(n&&Dt(de._static)){const s=Is();s!==C.colon&&s!==C.question&&$e()}if(_j(),Me(C.bracketL))Me(C.bracketL)?O5e():M5e();else if(Q(C.parenL)||Q(C.lessThan))F5e();else{if(Dt(de._get)||Dt(de._set)){const s=Is();(s===C.name||s===C.string||s===C.num)&&$e()}B5e()}W5e()}He(i)}function B5e(){if(Q(C.ellipsis)){if(He(C.ellipsis),Me(C.comma)||Me(C.semi),Q(C.braceR))return;qa()}else pj(),Q(C.lessThan)||Q(C.parenL)?mj():(Me(C.question),hd())}function W5e(){!Me(C.semi)&&!Me(C.comma)&&!Q(C.braceR)&&!Q(C.braceBarR)&&ci()}function ofe(n){for(n||qt();Me(C.dot);)qt()}function V5e(){ofe(!0),Q(C.lessThan)&&k_()}function H5e(){He(C._typeof),afe()}function $5e(){for(He(C.bracketL);D.pos<tt.length&&!Q(C.bracketR)&&(qa(),!Q(C.bracketR));)He(C.comma);He(C.bracketR)}function SA(){const n=Is();n===C.colon||n===C.question?(qt(),Me(C.question),hd()):qa()}function F8(){for(;!Q(C.parenR)&&!Q(C.ellipsis)&&!D.error;)SA(),Q(C.parenR)||He(C.comma);Me(C.ellipsis)&&SA()}function afe(){let n=!1;const e=D.noAnonFunctionType;switch(D.type){case C.name:{if(Dt(de._interface)){R5e();return}qt(),V5e();return}case C.braceL:wA(!1,!1,!1);return;case C.braceBarL:wA(!1,!0,!1);return;case C.bracketL:$5e();return;case C.lessThan:Bu(),He(C.parenL),F8(),He(C.parenR),He(C.arrow),qa();return;case C.parenL:if($e(),!Q(C.parenR)&&!Q(C.ellipsis))if(Q(C.name)){const t=Is();n=t!==C.question&&t!==C.colon}else n=!0;if(n)if(D.noAnonFunctionType=!1,qa(),D.noAnonFunctionType=e,D.noAnonFunctionType||!(Q(C.comma)||Q(C.parenR)&&Is()===C.arrow)){He(C.parenR);return}else Me(C.comma);F8(),He(C.parenR),He(C.arrow),qa();return;case C.minus:$e(),cy();return;case C.string:case C.num:case C._true:case C._false:case C._null:case C._this:case C._void:case C.star:$e();return;default:if(D.type===C._typeof){H5e();return}else if(D.type&C.IS_KEYWORD){$e(),D.tokens[D.tokens.length-1].type=C.name;return}}ci()}function z5e(){for(afe();!wl()&&(Q(C.bracketL)||Q(C.questionDot));)Me(C.questionDot),He(C.bracketL),Me(C.bracketR)||(qa(),He(C.bracketR))}function lfe(){Me(C.question)?lfe():z5e()}function UQ(){lfe(),!D.noAnonFunctionType&&Me(C.arrow)&&qa()}function jQ(){for(Me(C.bitwiseAND),UQ();Me(C.bitwiseAND);)UQ()}function U5e(){for(Me(C.bitwiseOR),jQ();Me(C.bitwiseOR);)jQ()}function qa(){U5e()}function wv(){hd()}function cfe(){qt(),Q(C.colon)&&wv()}function _j(){(Q(C.plus)||Q(C.minus))&&($e(),D.tokens[D.tokens.length-1].isType=!0)}function j5e(n){Q(C.colon)&&uj(),hE(!1,n)}function q5e(n,e,t){if(Q(C.questionDot)&&Is()===C.lessThan){if(e){t.stop=!0;return}$e(),k_(),He(C.parenL),vp();return}else if(!e&&Q(C.lessThan)){const i=D.snapshot();if(k_(),He(C.parenL),vp(),D.error)D.restoreFromSnapshot(i);else return}rj(n,e,t)}function K5e(){if(Q(C.lessThan)){const n=D.snapshot();k_(),D.error&&D.restoreFromSnapshot(n)}}function G5e(){if(Q(C.name)&&D.contextualKeyword===de._interface){const n=gi(0);return $e(),dj(),di(n),!0}else if(Dt(de._enum))return ufe(),!0;return!1}function Y5e(){return Dt(de._enum)?(ufe(),!0):!1}function Z5e(n){if(n===de._declare){if(Q(C._class)||Q(C.name)||Q(C._function)||Q(C._var)||Q(C._export)){const e=gi(1);O8(),di(e)}}else if(Q(C.name)){if(n===de._interface){const e=gi(1);dj(),di(e)}else if(n===de._type){const e=gi(1);fj(),di(e)}else if(n===de._opaque){const e=gi(1);gj(!1),di(e)}}ls()}function X5e(){return Dt(de._type)||Dt(de._interface)||Dt(de._opaque)||Dt(de._enum)}function Q5e(){return Q(C.name)&&(D.contextualKeyword===de._type||D.contextualKeyword===de._interface||D.contextualKeyword===de._opaque||D.contextualKeyword===de._enum)}function J5e(){if(Dt(de._type)){const n=gi(1);$e(),Q(C.braceL)?(bj(),cL()):fj(),di(n)}else if(Dt(de._opaque)){const n=gi(1);$e(),gj(!1),di(n)}else if(Dt(de._interface)){const n=gi(1);$e(),dj(),di(n)}else Ml(!0)}function e3e(){return Q(C.star)||Dt(de._type)&&Is()===C.star}function t3e(){if(br(de._type)){const n=gi(2);B8(),di(n)}else B8()}function i3e(n){if(n&&Q(C.lessThan)&&k_(),Dt(de._implements)){const e=gi(0);$e(),D.tokens[D.tokens.length-1].type=C._implements;do oO(),Q(C.lessThan)&&k_();while(Me(C.comma));di(e)}}function n3e(){Q(C.lessThan)&&(Bu(),Q(C.parenL)||ci())}function s3e(){const n=gi(0);Me(C.question),Q(C.colon)&&wv(),di(n)}function r3e(){if(Q(C._typeof)||Dt(de._type)){const n=aE();(S5e(n)||n.type===C.braceL||n.type===C.star)&&$e()}}function o3e(){const n=D.contextualKeyword===de._type||D.type===C._typeof;n?$e():qt(),Dt(de._as)&&!GU(de._as)?(qt(),n&&!Q(C.name)&&!(D.type&C.IS_KEYWORD)||qt()):(n&&(Q(C.name)||D.type&C.IS_KEYWORD)&&qt(),br(de._as)&&qt())}function a3e(){if(Q(C.lessThan)){const n=gi(0);Bu(),di(n)}}function l3e(){Q(C.colon)&&wv()}function c3e(){if(Q(C.colon)){const n=D.noAnonFunctionType;D.noAnonFunctionType=!0,wv(),D.noAnonFunctionType=n}}function u3e(n,e){if(Q(C.lessThan)){const t=D.snapshot();let i=Zh(n,e);if(D.error)D.restoreFromSnapshot(t),D.type=C.typeParameterStart;else return i;const s=gi(0);if(Bu(),di(s),i=Zh(n,e),i)return!0;ci()}return Zh(n,e)}function h3e(){if(Q(C.colon)){const n=gi(0),e=D.snapshot(),t=D.noAnonFunctionType;D.noAnonFunctionType=!0,uj(),D.noAnonFunctionType=t,wl()&&ci(),Q(C.arrow)||ci(),D.error&&D.restoreFromSnapshot(e),di(n)}return Me(C.arrow)}function d3e(n,e=!1){if(D.tokens[D.tokens.length-1].contextualKeyword===de._async&&Q(C.lessThan)){const t=D.snapshot();if(f3e()&&!D.error)return;D.restoreFromSnapshot(t)}efe(n,e)}function f3e(){D.scopeDepth++;const n=D.tokens.length;return SC(),R8()?(lL(n),!0):!1}function ufe(){Us(de._enum),D.tokens[D.tokens.length-1].type=C._enum,qt(),g3e()}function g3e(){br(de._of)&&$e(),He(C.braceL),p3e(),He(C.braceR)}function p3e(){for(;!Q(C.braceR)&&!D.error&&!Me(C.ellipsis);)m3e(),Q(C.braceR)||He(C.comma)}function m3e(){qt(),Me(C.eq)&&$e()}function _3e(){if(aO(C.eof),D.scopes.push(new ud(0,D.tokens.length,!0)),D.scopeDepth!==0)throw new Error(`Invalid scope depth at end of file: ${D.scopeDepth}`);return new n6e(D.tokens,D.scopes)}function Ml(n){nn&&G5e()||(Q(C.at)&&vj(),v3e(n))}function v3e(n){if(Pi&&M4e())return;const e=D.type;switch(e){case C._break:case C._continue:y3e();return;case C._debugger:C3e();return;case C._do:w3e();return;case C._for:S3e();return;case C._function:if(Is()===C.dot)break;n||ci(),x3e();return;case C._class:n||ci(),x_(!0);return;case C._if:E3e();return;case C._return:D3e();return;case C._switch:I3e();return;case C._throw:T3e();return;case C._try:A3e();return;case C._let:case C._const:n||ci();case C._var:UT(e!==C._var);return;case C._while:P3e();return;case C.braceL:bp();return;case C.semi:R3e();return;case C._export:case C._import:{const s=Is();if(s===C.parenL||s===C.dot)break;$e(),e===C._import?bfe():_fe();return}case C.name:if(D.contextualKeyword===de._async){const s=D.start,r=D.snapshot();if($e(),Q(C._function)&&!wl()){He(C._function),L_(s,!0);return}else D.restoreFromSnapshot(r)}else if(D.contextualKeyword===de._using&&!pde()&&Is()===C.name){UT(!0);return}else if(hfe()){Us(de._await),UT(!0);return}}const t=D.tokens.length;jr();let i=null;if(D.tokens.length===t+1){const s=D.tokens[D.tokens.length-1];s.type===C.name&&(i=s.contextualKeyword)}if(i==null){ls();return}Me(C.colon)?M3e():O3e(i)}function hfe(){if(!Dt(de._await))return!1;const n=D.snapshot();return $e(),!Dt(de._using)||la()||($e(),!Q(C.name)||la())?(D.restoreFromSnapshot(n),!1):(D.restoreFromSnapshot(n),!0)}function vj(){for(;Q(C.at);)dfe()}function dfe(){if($e(),Me(C.parenL))jr(),He(C.parenR);else{for(qt();Me(C.dot);)qt();b3e()}}function b3e(){Pi?Y4e():ffe()}function ffe(){Me(C.parenL)&&vp()}function y3e(){$e(),Th()||(qt(),ls())}function C3e(){$e(),ls()}function w3e(){$e(),Ml(!1),He(C._while),rO(),Me(C.semi)}function S3e(){D.scopeDepth++;const n=D.tokens.length;L3e();const e=D.tokens.length;D.scopes.push(new ud(n,e,!1)),D.scopeDepth--}function k3e(){return!(!Dt(de._using)||GU(de._of))}function L3e(){$e();let n=!1;if(Dt(de._await)&&(n=!0,$e()),He(C.parenL),Q(C.semi)){n&&ci(),a5();return}const e=hfe();if(e||Q(C._var)||Q(C._let)||Q(C._const)||k3e()){if(e&&Us(de._await),$e(),gfe(!0,D.type!==C._var),Q(C._in)||Dt(de._of)){qQ(n);return}a5();return}if(jr(!0),Q(C._in)||Dt(de._of)){qQ(n);return}n&&ci(),a5()}function x3e(){const n=D.start;$e(),L_(n,!0)}function E3e(){$e(),rO(),Ml(!1),Me(C._else)&&Ml(!1)}function D3e(){$e(),Th()||(jr(),ls())}function I3e(){$e(),rO(),D.scopeDepth++;const n=D.tokens.length;for(He(C.braceL);!Q(C.braceR)&&!D.error;)if(Q(C._case)||Q(C._default)){const t=Q(C._case);$e(),t&&jr(),He(C.colon)}else Ml(!0);$e();const e=D.tokens.length;D.scopes.push(new ud(n,e,!1)),D.scopeDepth--}function T3e(){$e(),jr(),ls()}function N3e(){iO(!0),Pi&&CC()}function A3e(){if($e(),bp(),Q(C._catch)){$e();let n=null;if(Q(C.parenL)&&(D.scopeDepth++,n=D.tokens.length,He(C.parenL),N3e(),He(C.parenR)),bp(),n!=null){const e=D.tokens.length;D.scopes.push(new ud(n,e,!1)),D.scopeDepth--}}Me(C._finally)&&bp()}function UT(n){$e(),gfe(!1,n),ls()}function P3e(){$e(),rO(),Ml(!1)}function R3e(){$e()}function M3e(){Ml(!0)}function O3e(n){Pi?F4e(n):nn?Z5e(n):ls()}function bp(n=!1,e=0){const t=D.tokens.length;D.scopeDepth++,He(C.braceL),e&&(D.tokens[D.tokens.length-1].contextId=e),aO(C.braceR),e&&(D.tokens[D.tokens.length-1].contextId=e);const i=D.tokens.length;D.scopes.push(new ud(t,i,n)),D.scopeDepth--}function aO(n){for(;!Me(n)&&!D.error;)Ml(!0)}function a5(){He(C.semi),Q(C.semi)||jr(),He(C.semi),Q(C.parenR)||jr(),He(C.parenR),Ml(!1)}function qQ(n){n?br(de._of):$e(),jr(),He(C.parenR),Ml(!1)}function gfe(n,e){for(;;){if(F3e(e),Me(C.eq)){const t=D.tokens.length-1;qr(n),D.tokens[t].rhsEndIndex=D.tokens.length}if(!Me(C.comma))break}}function F3e(n){iO(n),Pi?$4e():nn&&l3e()}function L_(n,e,t=!1){Q(C.star)&&$e(),e&&!t&&!Q(C.name)&&!Q(C._yield)&&ci();let i=null;Q(C.name)&&(e||(i=D.tokens.length,D.scopeDepth++),xm(!1));const s=D.tokens.length;D.scopeDepth++,SC(),nfe(n);const r=D.tokens.length;D.scopes.push(new ud(s,r,!0)),D.scopeDepth--,i!==null&&(D.scopes.push(new ud(i,r,!0)),D.scopeDepth--)}function SC(n=!1,e=0){Pi?H4e():nn&&a3e(),He(C.parenL),e&&(D.tokens[D.tokens.length-1].contextId=e),QU(C.parenR,!1,!1,n,e),e&&(D.tokens[D.tokens.length-1].contextId=e)}function x_(n,e=!1){const t=sL();$e(),D.tokens[D.tokens.length-1].contextId=t,D.tokens[D.tokens.length-1].isExpression=!n;let i=null;n||(i=D.tokens.length,D.scopeDepth++),H3e(n,e),$3e();const s=D.tokens.length;if(B3e(t),!D.error&&(D.tokens[s].contextId=t,D.tokens[D.tokens.length-1].contextId=t,i!==null)){const r=D.tokens.length;D.scopes.push(new ud(i,r,!1)),D.scopeDepth--}}function pfe(){return Q(C.eq)||Q(C.semi)||Q(C.braceR)||Q(C.bang)||Q(C.colon)}function mfe(){return Q(C.parenL)||Q(C.lessThan)}function B3e(n){for(He(C.braceL);!Me(C.braceR)&&!D.error;){if(Me(C.semi))continue;if(Q(C.at)){dfe();continue}const e=D.start;W3e(e,n)}}function W3e(n,e){Pi&&JU([de._declare,de._public,de._protected,de._private,de._override]);let t=!1;if(Q(C.name)&&D.contextualKeyword===de._static){if(qt(),mfe()){lS(n,!1);return}else if(pfe()){jT();return}if(D.tokens[D.tokens.length-1].type=C._static,t=!0,Q(C.braceL)){D.tokens[D.tokens.length-1].contextId=e,bp();return}}V3e(n,t,e)}function V3e(n,e,t){if(Pi&&O4e(e))return;if(Me(C.star)){yw(t),lS(n,!1);return}yw(t);let i=!1;const s=D.tokens[D.tokens.length-1];s.contextualKeyword===de._constructor&&(i=!0),KQ(),mfe()?lS(n,i):pfe()?jT():s.contextualKeyword===de._async&&!Th()?(D.tokens[D.tokens.length-1].type=C._async,Q(C.star)&&$e(),yw(t),KQ(),lS(n,!1)):(s.contextualKeyword===de._get||s.contextualKeyword===de._set)&&!(Th()&&Q(C.star))?(s.contextualKeyword===de._get?D.tokens[D.tokens.length-1].type=C._get:D.tokens[D.tokens.length-1].type=C._set,yw(t),lS(n,!1)):s.contextualKeyword===de._accessor&&!Th()?(yw(t),jT()):Th()?jT():ci()}function lS(n,e){Pi?Cv():nn&&Q(C.lessThan)&&Bu(),M8(n,e)}function yw(n){aL(n)}function KQ(){if(Pi){const n=gi(0);Me(C.question),di(n)}}function jT(){if(Pi?(yde(C.bang),CC()):nn&&Q(C.colon)&&wv(),Q(C.eq)){const n=D.tokens.length;$e(),qr(),D.tokens[n].rhsEndIndex=D.tokens.length}ls()}function H3e(n,e=!1){Pi&&(!n||e)&&Dt(de._implements)||(Q(C.name)&&xm(!0),Pi?Cv():nn&&Q(C.lessThan)&&Bu())}function $3e(){let n=!1;Me(C._extends)?(Jde(),n=!0):n=!1,Pi?W4e(n):nn&&i3e(n)}function _fe(){const n=D.tokens.length-1;Pi&&N4e()||(q3e()?K3e():j3e()?(qt(),Q(C.comma)&&Is()===C.star?(He(C.comma),He(C.star),Us(de._as),qt()):vfe(),cL()):Me(C._default)?z3e():Y3e()?U3e():(bj(),cL()),D.tokens[n].rhsEndIndex=D.tokens.length)}function z3e(){if(Pi&&R4e()||nn&&Y5e())return;const n=D.start;Me(C._function)?L_(n,!0,!0):Dt(de._async)&&Is()===C._function?(br(de._async),Me(C._function),L_(n,!0,!0)):Q(C._class)?x_(!0,!0):Q(C.at)?(vj(),x_(!0,!0)):(qr(),ls())}function U3e(){Pi?B4e():nn?J5e():Ml(!0)}function j3e(){if(Pi&&Kde())return!1;if(nn&&Q5e())return!1;if(Q(C.name))return D.contextualKeyword!==de._async;if(!Q(C._default))return!1;const n=YU(),e=aE(),t=e.type===C.name&&e.contextualKeyword===de._from;if(e.type===C.comma)return!0;if(t){const i=tt.charCodeAt(Cde(n+4));return i===ye.quotationMark||i===ye.apostrophe}return!1}function vfe(){Me(C.comma)&&bj()}function cL(){br(de._from)&&(Kf(),yfe()),ls()}function q3e(){return nn?e3e():Q(C.star)}function K3e(){nn?t3e():B8()}function B8(){He(C.star),Dt(de._as)?G3e():cL()}function G3e(){$e(),D.tokens[D.tokens.length-1].type=C._as,qt(),vfe(),cL()}function Y3e(){return Pi&&Kde()||nn&&X5e()||D.type===C._var||D.type===C._const||D.type===C._let||D.type===C._function||D.type===C._class||Dt(de._async)||Q(C.at)}function bj(){let n=!0;for(He(C.braceL);!Me(C.braceR)&&!D.error;){if(n)n=!1;else if(He(C.comma),Me(C.braceR))break;Z3e()}}function Z3e(){if(Pi){P4e();return}qt(),D.tokens[D.tokens.length-1].identifierRole=Mt.ExportAccess,br(de._as)&&qt()}function X3e(){const n=D.snapshot();return Us(de._module),br(de._from)?Dt(de._from)?(D.restoreFromSnapshot(n),!0):(D.restoreFromSnapshot(n),!1):Q(C.comma)?(D.restoreFromSnapshot(n),!1):(D.restoreFromSnapshot(n),!0)}function Q3e(){Dt(de._module)&&X3e()&&$e()}function bfe(){if(Pi&&Q(C.name)&&Is()===C.eq){A8();return}if(Pi&&Dt(de._type)){const n=aE();if(n.type===C.name&&n.contextualKeyword!==de._from){if(Us(de._type),Is()===C.eq){A8();return}}else(n.type===C.star||n.type===C.braceL)&&Us(de._type)}Q(C.string)||(Q3e(),e6e(),Us(de._from)),Kf(),yfe(),ls()}function J3e(){return Q(C.name)}function GQ(){vA()}function e6e(){nn&&r3e();let n=!0;if(!(J3e()&&(GQ(),!Me(C.comma)))){if(Q(C.star)){$e(),Us(de._as),GQ();return}for(He(C.braceL);!Me(C.braceR)&&!D.error;){if(n)n=!1;else if(Me(C.colon)&&ci("ES2015 named imports do not destructure. Use another statement for destructuring after the import."),He(C.comma),Me(C.braceR))break;t6e()}}}function t6e(){if(Pi){A4e();return}if(nn){o3e();return}vA(),Dt(de._as)&&(D.tokens[D.tokens.length-1].identifierRole=Mt.ImportAccess,$e(),vA())}function yfe(){(Q(C._with)||Dt(de._assert)&&!la())&&($e(),cj(!1,!1))}function i6e(){return D.pos===0&&tt.charCodeAt(0)===ye.numberSign&&tt.charCodeAt(1)===ye.exclamationMark&&kde(2),Sde(),_3e()}let n6e=class{constructor(e,t){this.tokens=e,this.scopes=t}};function s6e(n,e,t,i){if(i&&t)throw new Error("Cannot combine flow and typescript plugins.");q2e(n,e,t,i);const s=i6e();if(D.error)throw z2e(D.error);return s}function r6e(n){let e=n.currentIndex(),t=0;const i=n.currentToken();do{const s=n.tokens[e];if(s.isOptionalChainStart&&t++,s.isOptionalChainEnd&&t--,t+=s.numNullishCoalesceStarts,t-=s.numNullishCoalesceEnds,s.contextualKeyword===de._await&&s.identifierRole==null&&s.scopeDepth===i.scopeDepth)return!0;e+=1}while(t>0&&e<n.tokens.length);return!1}class KS{__init(){this.resultCode=""}__init2(){this.resultMappings=new Array(this.tokens.length)}__init3(){this.tokenIndex=0}constructor(e,t,i,s,r){this.code=e,this.tokens=t,this.isFlowEnabled=i,this.disableESTransforms=s,this.helperManager=r,KS.prototype.__init.call(this),KS.prototype.__init2.call(this),KS.prototype.__init3.call(this)}snapshot(){return{resultCode:this.resultCode,tokenIndex:this.tokenIndex}}restoreToSnapshot(e){this.resultCode=e.resultCode,this.tokenIndex=e.tokenIndex}dangerouslyGetAndRemoveCodeSinceSnapshot(e){const t=this.resultCode.slice(e.resultCode.length);return this.resultCode=e.resultCode,t}reset(){this.resultCode="",this.resultMappings=new Array(this.tokens.length),this.tokenIndex=0}matchesContextualAtIndex(e,t){return this.matches1AtIndex(e,C.name)&&this.tokens[e].contextualKeyword===t}identifierNameAtIndex(e){return this.identifierNameForToken(this.tokens[e])}identifierNameAtRelativeIndex(e){return this.identifierNameForToken(this.tokenAtRelativeIndex(e))}identifierName(){return this.identifierNameForToken(this.currentToken())}identifierNameForToken(e){return this.code.slice(e.start,e.end)}rawCodeForToken(e){return this.code.slice(e.start,e.end)}stringValueAtIndex(e){return this.stringValueForToken(this.tokens[e])}stringValue(){return this.stringValueForToken(this.currentToken())}stringValueForToken(e){return this.code.slice(e.start+1,e.end-1)}matches1AtIndex(e,t){return this.tokens[e].type===t}matches2AtIndex(e,t,i){return this.tokens[e].type===t&&this.tokens[e+1].type===i}matches3AtIndex(e,t,i,s){return this.tokens[e].type===t&&this.tokens[e+1].type===i&&this.tokens[e+2].type===s}matches1(e){return this.tokens[this.tokenIndex].type===e}matches2(e,t){return this.tokens[this.tokenIndex].type===e&&this.tokens[this.tokenIndex+1].type===t}matches3(e,t,i){return this.tokens[this.tokenIndex].type===e&&this.tokens[this.tokenIndex+1].type===t&&this.tokens[this.tokenIndex+2].type===i}matches4(e,t,i,s){return this.tokens[this.tokenIndex].type===e&&this.tokens[this.tokenIndex+1].type===t&&this.tokens[this.tokenIndex+2].type===i&&this.tokens[this.tokenIndex+3].type===s}matches5(e,t,i,s,r){return this.tokens[this.tokenIndex].type===e&&this.tokens[this.tokenIndex+1].type===t&&this.tokens[this.tokenIndex+2].type===i&&this.tokens[this.tokenIndex+3].type===s&&this.tokens[this.tokenIndex+4].type===r}matchesContextual(e){return this.matchesContextualAtIndex(this.tokenIndex,e)}matchesContextIdAndLabel(e,t){return this.matches1(e)&&this.currentToken().contextId===t}previousWhitespaceAndComments(){let e=this.code.slice(this.tokenIndex>0?this.tokens[this.tokenIndex-1].end:0,this.tokenIndex<this.tokens.length?this.tokens[this.tokenIndex].start:this.code.length);return this.isFlowEnabled&&(e=e.replace(/@flow/g,"")),e}replaceToken(e){this.resultCode+=this.previousWhitespaceAndComments(),this.appendTokenPrefix(),this.resultMappings[this.tokenIndex]=this.resultCode.length,this.resultCode+=e,this.appendTokenSuffix(),this.tokenIndex++}replaceTokenTrimmingLeftWhitespace(e){this.resultCode+=this.previousWhitespaceAndComments().replace(/[^\r\n]/g,""),this.appendTokenPrefix(),this.resultMappings[this.tokenIndex]=this.resultCode.length,this.resultCode+=e,this.appendTokenSuffix(),this.tokenIndex++}removeInitialToken(){this.replaceToken("")}removeToken(){this.replaceTokenTrimmingLeftWhitespace("")}removeBalancedCode(){let e=0;for(;!this.isAtEnd();){if(this.matches1(C.braceL))e++;else if(this.matches1(C.braceR)){if(e===0)return;e--}this.removeToken()}}copyExpectedToken(e){if(this.tokens[this.tokenIndex].type!==e)throw new Error(`Expected token ${e}`);this.copyToken()}copyToken(){this.resultCode+=this.previousWhitespaceAndComments(),this.appendTokenPrefix(),this.resultMappings[this.tokenIndex]=this.resultCode.length,this.resultCode+=this.code.slice(this.tokens[this.tokenIndex].start,this.tokens[this.tokenIndex].end),this.appendTokenSuffix(),this.tokenIndex++}copyTokenWithPrefix(e){this.resultCode+=this.previousWhitespaceAndComments(),this.appendTokenPrefix(),this.resultCode+=e,this.resultMappings[this.tokenIndex]=this.resultCode.length,this.resultCode+=this.code.slice(this.tokens[this.tokenIndex].start,this.tokens[this.tokenIndex].end),this.appendTokenSuffix(),this.tokenIndex++}appendTokenPrefix(){const e=this.currentToken();if((e.numNullishCoalesceStarts||e.isOptionalChainStart)&&(e.isAsyncOperation=r6e(this)),!this.disableESTransforms){if(e.numNullishCoalesceStarts)for(let t=0;t<e.numNullishCoalesceStarts;t++)e.isAsyncOperation?(this.resultCode+="await ",this.resultCode+=this.helperManager.getHelperName("asyncNullishCoalesce")):this.resultCode+=this.helperManager.getHelperName("nullishCoalesce"),this.resultCode+="(";e.isOptionalChainStart&&(e.isAsyncOperation&&(this.resultCode+="await "),this.tokenIndex>0&&this.tokenAtRelativeIndex(-1).type===C._delete?e.isAsyncOperation?this.resultCode+=this.helperManager.getHelperName("asyncOptionalChainDelete"):this.resultCode+=this.helperManager.getHelperName("optionalChainDelete"):e.isAsyncOperation?this.resultCode+=this.helperManager.getHelperName("asyncOptionalChain"):this.resultCode+=this.helperManager.getHelperName("optionalChain"),this.resultCode+="([")}}appendTokenSuffix(){const e=this.currentToken();if(e.isOptionalChainEnd&&!this.disableESTransforms&&(this.resultCode+="])"),e.numNullishCoalesceEnds&&!this.disableESTransforms)for(let t=0;t<e.numNullishCoalesceEnds;t++)this.resultCode+="))"}appendCode(e){this.resultCode+=e}currentToken(){return this.tokens[this.tokenIndex]}currentTokenCode(){const e=this.currentToken();return this.code.slice(e.start,e.end)}tokenAtRelativeIndex(e){return this.tokens[this.tokenIndex+e]}currentIndex(){return this.tokenIndex}nextToken(){if(this.tokenIndex===this.tokens.length)throw new Error("Unexpectedly reached end of input.");this.tokenIndex++}previousToken(){this.tokenIndex--}finish(){if(this.tokenIndex!==this.tokens.length)throw new Error("Tried to finish processing tokens before reaching the end.");return this.resultCode+=this.previousWhitespaceAndComments(),{code:this.resultCode,mappings:this.resultMappings}}isAtEnd(){return this.tokenIndex===this.tokens.length}}function o6e(n,e,t,i){const s=e.snapshot(),r=a6e(e);let o=[];const a=[],l=[];let c=null;const u=[],h=[],d=e.currentToken().contextId;if(d==null)throw new Error("Expected non-null class context ID on class open-brace.");for(e.nextToken();!e.matchesContextIdAndLabel(C.braceR,d);)if(e.matchesContextual(de._constructor)&&!e.currentToken().isType)({constructorInitializerStatements:o,constructorInsertPos:c}=YQ(e));else if(e.matches1(C.semi))i||h.push({start:e.currentIndex(),end:e.currentIndex()+1}),e.nextToken();else if(e.currentToken().isType)e.nextToken();else{const f=e.currentIndex();let g=!1,p=!1,m=!1;for(;kA(e.currentToken());)e.matches1(C._static)&&(g=!0),e.matches1(C.hash)&&(p=!0),(e.matches1(C._declare)||e.matches1(C._abstract))&&(m=!0),e.nextToken();if(g&&e.matches1(C.braceL)){l5(e,d);continue}if(p){l5(e,d);continue}if(e.matchesContextual(de._constructor)&&!e.currentToken().isType){({constructorInitializerStatements:o,constructorInsertPos:c}=YQ(e));continue}const _=e.currentIndex();if(l6e(e),e.matches1(C.lessThan)||e.matches1(C.parenL)){l5(e,d);continue}for(;e.currentToken().isType;)e.nextToken();if(e.matches1(C.eq)){const b=e.currentIndex(),y=e.currentToken().rhsEndIndex;if(y==null)throw new Error("Expected rhsEndIndex on class field assignment.");for(e.nextToken();e.currentIndex()<y;)n.processToken();let w;g?(w=t.claimFreeName("__initStatic"),l.push(w)):(w=t.claimFreeName("__init"),a.push(w)),u.push({initializerName:w,equalsIndex:b,start:_,end:e.currentIndex()})}else(!i||m)&&h.push({start:f,end:e.currentIndex()})}return e.restoreToSnapshot(s),i?{headerInfo:r,constructorInitializerStatements:o,instanceInitializerNames:[],staticInitializerNames:[],constructorInsertPos:c,fields:[],rangesToRemove:h}:{headerInfo:r,constructorInitializerStatements:o,instanceInitializerNames:a,staticInitializerNames:l,constructorInsertPos:c,fields:u,rangesToRemove:h}}function l5(n,e){for(n.nextToken();n.currentToken().contextId!==e;)n.nextToken();for(;kA(n.tokenAtRelativeIndex(-1));)n.previousToken()}function a6e(n){const e=n.currentToken(),t=e.contextId;if(t==null)throw new Error("Expected context ID on class token.");const i=e.isExpression;if(i==null)throw new Error("Expected isExpression on class token.");let s=null,r=!1;for(n.nextToken(),n.matches1(C.name)&&(s=n.identifierName());!n.matchesContextIdAndLabel(C.braceL,t);)n.matches1(C._extends)&&!n.currentToken().isType&&(r=!0),n.nextToken();return{isExpression:i,className:s,hasSuperclass:r}}function YQ(n){const e=[];n.nextToken();const t=n.currentToken().contextId;if(t==null)throw new Error("Expected context ID on open-paren starting constructor params.");for(;!n.matchesContextIdAndLabel(C.parenR,t);)if(n.currentToken().contextId===t){if(n.nextToken(),kA(n.currentToken())){for(n.nextToken();kA(n.currentToken());)n.nextToken();const r=n.currentToken();if(r.type!==C.name)throw new Error("Expected identifier after access modifiers in constructor arg.");const o=n.identifierNameForToken(r);e.push(`this.${o} = ${o}`)}}else n.nextToken();for(n.nextToken();n.currentToken().isType;)n.nextToken();let i=n.currentIndex(),s=!1;for(;!n.matchesContextIdAndLabel(C.braceR,t);){if(!s&&n.matches2(C._super,C.parenL)){n.nextToken();const r=n.currentToken().contextId;if(r==null)throw new Error("Expected a context ID on the super call");for(;!n.matchesContextIdAndLabel(C.parenR,r);)n.nextToken();i=n.currentIndex(),s=!0}n.nextToken()}return n.nextToken(),{constructorInitializerStatements:e,constructorInsertPos:i}}function kA(n){return[C._async,C._get,C._set,C.plus,C.minus,C._readonly,C._static,C._public,C._private,C._protected,C._override,C._abstract,C.star,C._declare,C.hash].includes(n.type)}function l6e(n){if(n.matches1(C.bracketL)){const t=n.currentToken().contextId;if(t==null)throw new Error("Expected class context ID on computed name open bracket.");for(;!n.matchesContextIdAndLabel(C.bracketR,t);)n.nextToken();n.nextToken()}else n.nextToken()}function Cfe(n){if(n.removeInitialToken(),n.removeToken(),n.removeToken(),n.removeToken(),n.matches1(C.parenL))n.removeToken(),n.removeToken(),n.removeToken();else for(;n.matches1(C.dot);)n.removeToken(),n.removeToken()}const wfe={typeDeclarations:new Set,valueDeclarations:new Set};function Sfe(n){const e=new Set,t=new Set;for(let i=0;i<n.tokens.length;i++){const s=n.tokens[i];s.type===C.name&&bde(s)&&(s.isType?e.add(n.identifierNameForToken(s)):t.add(n.identifierNameForToken(s)))}return{typeDeclarations:e,valueDeclarations:t}}function kfe(n){let e=n.currentIndex();for(;!n.matches1AtIndex(e,C.braceR);)e++;return n.matchesContextualAtIndex(e+1,de._from)&&n.matches1AtIndex(e+2,C.string)}function P1(n){(n.matches2(C._with,C.braceL)||n.matches2(C.name,C.braceL)&&n.matchesContextual(de._assert))&&(n.removeToken(),n.removeToken(),n.removeBalancedCode(),n.removeToken())}function Lfe(n,e,t,i){if(!n||e)return!1;const s=t.currentToken();if(s.rhsEndIndex==null)throw new Error("Expected non-null rhsEndIndex on export token.");const r=s.rhsEndIndex-t.currentIndex();if(r!==3&&!(r===4&&t.matches1AtIndex(s.rhsEndIndex-1,C.semi)))return!1;const o=t.tokenAtRelativeIndex(2);if(o.type!==C.name)return!1;const a=t.identifierNameForToken(o);return i.typeDeclarations.has(a)&&!i.valueDeclarations.has(a)}class GS extends Fu{__init(){this.hadExport=!1}__init2(){this.hadNamedExport=!1}__init3(){this.hadDefaultExport=!1}constructor(e,t,i,s,r,o,a,l,c,u,h,d){super(),this.rootTransformer=e,this.tokens=t,this.importProcessor=i,this.nameManager=s,this.helperManager=r,this.reactHotLoaderTransformer=o,this.enableLegacyBabel5ModuleInterop=a,this.enableLegacyTypeScriptModuleInterop=l,this.isTypeScriptTransformEnabled=c,this.isFlowTransformEnabled=u,this.preserveDynamicImport=h,this.keepUnusedImports=d,GS.prototype.__init.call(this),GS.prototype.__init2.call(this),GS.prototype.__init3.call(this),this.declarationInfo=c?Sfe(t):wfe}getPrefixCode(){let e="";return this.hadExport&&(e+='Object.defineProperty(exports, "__esModule", {value: true});'),e}getSuffixCode(){return this.enableLegacyBabel5ModuleInterop&&this.hadDefaultExport&&!this.hadNamedExport?` +module.exports = exports.default; +`:""}process(){return this.tokens.matches3(C._import,C.name,C.eq)?this.processImportEquals():this.tokens.matches1(C._import)?(this.processImport(),!0):this.tokens.matches2(C._export,C.eq)?(this.tokens.replaceToken("module.exports"),!0):this.tokens.matches1(C._export)&&!this.tokens.currentToken().isType?(this.hadExport=!0,this.processExport()):this.tokens.matches2(C.name,C.postIncDec)&&this.processPostIncDec()?!0:this.tokens.matches1(C.name)||this.tokens.matches1(C.jsxName)?this.processIdentifier():this.tokens.matches1(C.eq)?this.processAssignment():this.tokens.matches1(C.assign)?this.processComplexAssignment():this.tokens.matches1(C.preIncDec)?this.processPreIncDec():!1}processImportEquals(){const e=this.tokens.identifierNameAtIndex(this.tokens.currentIndex()+1);return this.importProcessor.shouldAutomaticallyElideImportedName(e)?Cfe(this.tokens):this.tokens.replaceToken("const"),!0}processImport(){if(this.tokens.matches2(C._import,C.parenL)){if(this.preserveDynamicImport){this.tokens.copyToken();return}const t=this.enableLegacyTypeScriptModuleInterop?"":`${this.helperManager.getHelperName("interopRequireWildcard")}(`;this.tokens.replaceToken(`Promise.resolve().then(() => ${t}require`);const i=this.tokens.currentToken().contextId;if(i==null)throw new Error("Expected context ID on dynamic import invocation.");for(this.tokens.copyToken();!this.tokens.matchesContextIdAndLabel(C.parenR,i);)this.rootTransformer.processToken();this.tokens.replaceToken(t?")))":"))");return}if(this.removeImportAndDetectIfShouldElide())this.tokens.removeToken();else{const t=this.tokens.stringValue();this.tokens.replaceTokenTrimmingLeftWhitespace(this.importProcessor.claimImportCode(t)),this.tokens.appendCode(this.importProcessor.claimImportCode(t))}P1(this.tokens),this.tokens.matches1(C.semi)&&this.tokens.removeToken()}removeImportAndDetectIfShouldElide(){if(this.tokens.removeInitialToken(),this.tokens.matchesContextual(de._type)&&!this.tokens.matches1AtIndex(this.tokens.currentIndex()+1,C.comma)&&!this.tokens.matchesContextualAtIndex(this.tokens.currentIndex()+1,de._from))return this.removeRemainingImport(),!0;if(this.tokens.matches1(C.name)||this.tokens.matches1(C.star))return this.removeRemainingImport(),!1;if(this.tokens.matches1(C.string))return!1;let e=!1,t=!1;for(;!this.tokens.matches1(C.string);)(!e&&this.tokens.matches1(C.braceL)||this.tokens.matches1(C.comma))&&(this.tokens.removeToken(),this.tokens.matches1(C.braceR)||(t=!0),(this.tokens.matches2(C.name,C.comma)||this.tokens.matches2(C.name,C.braceR)||this.tokens.matches4(C.name,C.name,C.name,C.comma)||this.tokens.matches4(C.name,C.name,C.name,C.braceR))&&(e=!0)),this.tokens.removeToken();return this.keepUnusedImports?!1:this.isTypeScriptTransformEnabled?!e:this.isFlowTransformEnabled?t&&!e:!1}removeRemainingImport(){for(;!this.tokens.matches1(C.string);)this.tokens.removeToken()}processIdentifier(){const e=this.tokens.currentToken();if(e.shadowsGlobal)return!1;if(e.identifierRole===Mt.ObjectShorthand)return this.processObjectShorthand();if(e.identifierRole!==Mt.Access)return!1;const t=this.importProcessor.getIdentifierReplacement(this.tokens.identifierNameForToken(e));if(!t)return!1;let i=this.tokens.currentIndex()+1;for(;i<this.tokens.tokens.length&&this.tokens.tokens[i].type===C.parenR;)i++;return this.tokens.tokens[i].type===C.parenL?this.tokens.tokenAtRelativeIndex(1).type===C.parenL&&this.tokens.tokenAtRelativeIndex(-1).type!==C._new?(this.tokens.replaceToken(`${t}.call(void 0, `),this.tokens.removeToken(),this.rootTransformer.processBalancedCode(),this.tokens.copyExpectedToken(C.parenR)):this.tokens.replaceToken(`(0, ${t})`):this.tokens.replaceToken(t),!0}processObjectShorthand(){const e=this.tokens.identifierName(),t=this.importProcessor.getIdentifierReplacement(e);return t?(this.tokens.replaceToken(`${e}: ${t}`),!0):!1}processExport(){if(this.tokens.matches2(C._export,C._enum)||this.tokens.matches3(C._export,C._const,C._enum))return this.hadNamedExport=!0,!1;if(this.tokens.matches2(C._export,C._default))return this.tokens.matches3(C._export,C._default,C._enum)?(this.hadDefaultExport=!0,!1):(this.processExportDefault(),!0);if(this.tokens.matches2(C._export,C.braceL))return this.processExportBindings(),!0;if(this.tokens.matches2(C._export,C.name)&&this.tokens.matchesContextualAtIndex(this.tokens.currentIndex()+1,de._type)){if(this.tokens.removeInitialToken(),this.tokens.removeToken(),this.tokens.matches1(C.braceL)){for(;!this.tokens.matches1(C.braceR);)this.tokens.removeToken();this.tokens.removeToken()}else this.tokens.removeToken(),this.tokens.matches1(C._as)&&(this.tokens.removeToken(),this.tokens.removeToken());return this.tokens.matchesContextual(de._from)&&this.tokens.matches1AtIndex(this.tokens.currentIndex()+1,C.string)&&(this.tokens.removeToken(),this.tokens.removeToken(),P1(this.tokens)),!0}if(this.hadNamedExport=!0,this.tokens.matches2(C._export,C._var)||this.tokens.matches2(C._export,C._let)||this.tokens.matches2(C._export,C._const))return this.processExportVar(),!0;if(this.tokens.matches2(C._export,C._function)||this.tokens.matches3(C._export,C.name,C._function))return this.processExportFunction(),!0;if(this.tokens.matches2(C._export,C._class)||this.tokens.matches3(C._export,C._abstract,C._class)||this.tokens.matches2(C._export,C.at))return this.processExportClass(),!0;if(this.tokens.matches2(C._export,C.star))return this.processExportStar(),!0;throw new Error("Unrecognized export syntax.")}processAssignment(){const e=this.tokens.currentIndex(),t=this.tokens.tokens[e-1];if(t.isType||t.type!==C.name||t.shadowsGlobal||e>=2&&this.tokens.matches1AtIndex(e-2,C.dot)||e>=2&&[C._var,C._let,C._const].includes(this.tokens.tokens[e-2].type))return!1;const i=this.importProcessor.resolveExportBinding(this.tokens.identifierNameForToken(t));return i?(this.tokens.copyToken(),this.tokens.appendCode(` ${i} =`),!0):!1}processComplexAssignment(){const e=this.tokens.currentIndex(),t=this.tokens.tokens[e-1];if(t.type!==C.name||t.shadowsGlobal||e>=2&&this.tokens.matches1AtIndex(e-2,C.dot))return!1;const i=this.importProcessor.resolveExportBinding(this.tokens.identifierNameForToken(t));return i?(this.tokens.appendCode(` = ${i}`),this.tokens.copyToken(),!0):!1}processPreIncDec(){const e=this.tokens.currentIndex(),t=this.tokens.tokens[e+1];if(t.type!==C.name||t.shadowsGlobal||e+2<this.tokens.tokens.length&&(this.tokens.matches1AtIndex(e+2,C.dot)||this.tokens.matches1AtIndex(e+2,C.bracketL)||this.tokens.matches1AtIndex(e+2,C.parenL)))return!1;const i=this.tokens.identifierNameForToken(t),s=this.importProcessor.resolveExportBinding(i);return s?(this.tokens.appendCode(`${s} = `),this.tokens.copyToken(),!0):!1}processPostIncDec(){const e=this.tokens.currentIndex(),t=this.tokens.tokens[e],i=this.tokens.tokens[e+1];if(t.type!==C.name||t.shadowsGlobal||e>=1&&this.tokens.matches1AtIndex(e-1,C.dot))return!1;const s=this.tokens.identifierNameForToken(t),r=this.importProcessor.resolveExportBinding(s);if(!r)return!1;const o=this.tokens.rawCodeForToken(i),a=this.importProcessor.getIdentifierReplacement(s)||s;if(o==="++")this.tokens.replaceToken(`(${a} = ${r} = ${a} + 1, ${a} - 1)`);else if(o==="--")this.tokens.replaceToken(`(${a} = ${r} = ${a} - 1, ${a} + 1)`);else throw new Error(`Unexpected operator: ${o}`);return this.tokens.removeToken(),!0}processExportDefault(){let e=!0;if(this.tokens.matches4(C._export,C._default,C._function,C.name)||this.tokens.matches5(C._export,C._default,C.name,C._function,C.name)&&this.tokens.matchesContextualAtIndex(this.tokens.currentIndex()+2,de._async)){this.tokens.removeInitialToken(),this.tokens.removeToken();const t=this.processNamedFunction();this.tokens.appendCode(` exports.default = ${t};`)}else if(this.tokens.matches4(C._export,C._default,C._class,C.name)||this.tokens.matches5(C._export,C._default,C._abstract,C._class,C.name)||this.tokens.matches3(C._export,C._default,C.at)){this.tokens.removeInitialToken(),this.tokens.removeToken(),this.copyDecorators(),this.tokens.matches1(C._abstract)&&this.tokens.removeToken();const t=this.rootTransformer.processNamedClass();this.tokens.appendCode(` exports.default = ${t};`)}else if(Lfe(this.isTypeScriptTransformEnabled,this.keepUnusedImports,this.tokens,this.declarationInfo))e=!1,this.tokens.removeInitialToken(),this.tokens.removeToken(),this.tokens.removeToken();else if(this.reactHotLoaderTransformer){const t=this.nameManager.claimFreeName("_default");this.tokens.replaceToken(`let ${t}; exports.`),this.tokens.copyToken(),this.tokens.appendCode(` = ${t} =`),this.reactHotLoaderTransformer.setExtractedDefaultExportName(t)}else this.tokens.replaceToken("exports."),this.tokens.copyToken(),this.tokens.appendCode(" =");e&&(this.hadDefaultExport=!0)}copyDecorators(){for(;this.tokens.matches1(C.at);)if(this.tokens.copyToken(),this.tokens.matches1(C.parenL))this.tokens.copyExpectedToken(C.parenL),this.rootTransformer.processBalancedCode(),this.tokens.copyExpectedToken(C.parenR);else{for(this.tokens.copyExpectedToken(C.name);this.tokens.matches1(C.dot);)this.tokens.copyExpectedToken(C.dot),this.tokens.copyExpectedToken(C.name);this.tokens.matches1(C.parenL)&&(this.tokens.copyExpectedToken(C.parenL),this.rootTransformer.processBalancedCode(),this.tokens.copyExpectedToken(C.parenR))}}processExportVar(){this.isSimpleExportVar()?this.processSimpleExportVar():this.processComplexExportVar()}isSimpleExportVar(){let e=this.tokens.currentIndex();if(e++,e++,!this.tokens.matches1AtIndex(e,C.name))return!1;for(e++;e<this.tokens.tokens.length&&this.tokens.tokens[e].isType;)e++;return!!this.tokens.matches1AtIndex(e,C.eq)}processSimpleExportVar(){this.tokens.removeInitialToken(),this.tokens.copyToken();const e=this.tokens.identifierName();for(;!this.tokens.matches1(C.eq);)this.rootTransformer.processToken();const t=this.tokens.currentToken().rhsEndIndex;if(t==null)throw new Error("Expected = token with an end index.");for(;this.tokens.currentIndex()<t;)this.rootTransformer.processToken();this.tokens.appendCode(`; exports.${e} = ${e}`)}processComplexExportVar(){this.tokens.removeInitialToken(),this.tokens.removeToken();const e=this.tokens.matches1(C.braceL);e&&this.tokens.appendCode("(");let t=0;for(;;)if(this.tokens.matches1(C.braceL)||this.tokens.matches1(C.dollarBraceL)||this.tokens.matches1(C.bracketL))t++,this.tokens.copyToken();else if(this.tokens.matches1(C.braceR)||this.tokens.matches1(C.bracketR))t--,this.tokens.copyToken();else{if(t===0&&!this.tokens.matches1(C.name)&&!this.tokens.currentToken().isType)break;if(this.tokens.matches1(C.eq)){const i=this.tokens.currentToken().rhsEndIndex;if(i==null)throw new Error("Expected = token with an end index.");for(;this.tokens.currentIndex()<i;)this.rootTransformer.processToken()}else{const i=this.tokens.currentToken();if(vde(i)){const s=this.tokens.identifierName();let r=this.importProcessor.getIdentifierReplacement(s);if(r===null)throw new Error(`Expected a replacement for ${s} in \`export var\` syntax.`);Q2e(i)&&(r=`${s}: ${r}`),this.tokens.replaceToken(r)}else this.rootTransformer.processToken()}}if(e){const i=this.tokens.currentToken().rhsEndIndex;if(i==null)throw new Error("Expected = token with an end index.");for(;this.tokens.currentIndex()<i;)this.rootTransformer.processToken();this.tokens.appendCode(")")}}processExportFunction(){this.tokens.replaceToken("");const e=this.processNamedFunction();this.tokens.appendCode(` exports.${e} = ${e};`)}processNamedFunction(){if(this.tokens.matches1(C._function))this.tokens.copyToken();else if(this.tokens.matches2(C.name,C._function)){if(!this.tokens.matchesContextual(de._async))throw new Error("Expected async keyword in function export.");this.tokens.copyToken(),this.tokens.copyToken()}if(this.tokens.matches1(C.star)&&this.tokens.copyToken(),!this.tokens.matches1(C.name))throw new Error("Expected identifier for exported function name.");const e=this.tokens.identifierName();if(this.tokens.copyToken(),this.tokens.currentToken().isType)for(this.tokens.removeInitialToken();this.tokens.currentToken().isType;)this.tokens.removeToken();return this.tokens.copyExpectedToken(C.parenL),this.rootTransformer.processBalancedCode(),this.tokens.copyExpectedToken(C.parenR),this.rootTransformer.processPossibleTypeRange(),this.tokens.copyExpectedToken(C.braceL),this.rootTransformer.processBalancedCode(),this.tokens.copyExpectedToken(C.braceR),e}processExportClass(){this.tokens.removeInitialToken(),this.copyDecorators(),this.tokens.matches1(C._abstract)&&this.tokens.removeToken();const e=this.rootTransformer.processNamedClass();this.tokens.appendCode(` exports.${e} = ${e};`)}processExportBindings(){this.tokens.removeInitialToken(),this.tokens.removeToken();const e=kfe(this.tokens),t=[];for(;;){if(this.tokens.matches1(C.braceR)){this.tokens.removeToken();break}const i=rL(this.tokens);for(;this.tokens.currentIndex()<i.endIndex;)this.tokens.removeToken();if(!(i.isType||!e&&this.shouldElideExportedIdentifier(i.leftName))){const r=i.rightName;r==="default"?this.hadDefaultExport=!0:this.hadNamedExport=!0;const o=i.leftName,a=this.importProcessor.getIdentifierReplacement(o);t.push(`exports.${r} = ${a||o};`)}if(this.tokens.matches1(C.braceR)){this.tokens.removeToken();break}if(this.tokens.matches2(C.comma,C.braceR)){this.tokens.removeToken(),this.tokens.removeToken();break}else if(this.tokens.matches1(C.comma))this.tokens.removeToken();else throw new Error(`Unexpected token: ${JSON.stringify(this.tokens.currentToken())}`)}if(this.tokens.matchesContextual(de._from)){this.tokens.removeToken();const i=this.tokens.stringValue();this.tokens.replaceTokenTrimmingLeftWhitespace(this.importProcessor.claimImportCode(i)),P1(this.tokens)}else this.tokens.appendCode(t.join(" "));this.tokens.matches1(C.semi)&&this.tokens.removeToken()}processExportStar(){for(this.tokens.removeInitialToken();!this.tokens.matches1(C.string);)this.tokens.removeToken();const e=this.tokens.stringValue();this.tokens.replaceTokenTrimmingLeftWhitespace(this.importProcessor.claimImportCode(e)),P1(this.tokens),this.tokens.matches1(C.semi)&&this.tokens.removeToken()}shouldElideExportedIdentifier(e){return this.isTypeScriptTransformEnabled&&!this.keepUnusedImports&&!this.declarationInfo.valueDeclarations.has(e)}}class c6e extends Fu{constructor(e,t,i,s,r,o,a,l){super(),this.tokens=e,this.nameManager=t,this.helperManager=i,this.reactHotLoaderTransformer=s,this.isTypeScriptTransformEnabled=r,this.isFlowTransformEnabled=o,this.keepUnusedImports=a,this.nonTypeIdentifiers=r&&!a?Pde(e,l):new Set,this.declarationInfo=r&&!a?Sfe(e):wfe,this.injectCreateRequireForImportRequire=!!l.injectCreateRequireForImportRequire}process(){if(this.tokens.matches3(C._import,C.name,C.eq))return this.processImportEquals();if(this.tokens.matches4(C._import,C.name,C.name,C.eq)&&this.tokens.matchesContextualAtIndex(this.tokens.currentIndex()+1,de._type)){this.tokens.removeInitialToken();for(let e=0;e<7;e++)this.tokens.removeToken();return!0}if(this.tokens.matches2(C._export,C.eq))return this.tokens.replaceToken("module.exports"),!0;if(this.tokens.matches5(C._export,C._import,C.name,C.name,C.eq)&&this.tokens.matchesContextualAtIndex(this.tokens.currentIndex()+2,de._type)){this.tokens.removeInitialToken();for(let e=0;e<8;e++)this.tokens.removeToken();return!0}if(this.tokens.matches1(C._import))return this.processImport();if(this.tokens.matches2(C._export,C._default))return this.processExportDefault();if(this.tokens.matches2(C._export,C.braceL))return this.processNamedExports();if(this.tokens.matches2(C._export,C.name)&&this.tokens.matchesContextualAtIndex(this.tokens.currentIndex()+1,de._type)){if(this.tokens.removeInitialToken(),this.tokens.removeToken(),this.tokens.matches1(C.braceL)){for(;!this.tokens.matches1(C.braceR);)this.tokens.removeToken();this.tokens.removeToken()}else this.tokens.removeToken(),this.tokens.matches1(C._as)&&(this.tokens.removeToken(),this.tokens.removeToken());return this.tokens.matchesContextual(de._from)&&this.tokens.matches1AtIndex(this.tokens.currentIndex()+1,C.string)&&(this.tokens.removeToken(),this.tokens.removeToken(),P1(this.tokens)),!0}return!1}processImportEquals(){const e=this.tokens.identifierNameAtIndex(this.tokens.currentIndex()+1);return this.shouldAutomaticallyElideImportedName(e)?Cfe(this.tokens):this.injectCreateRequireForImportRequire?(this.tokens.replaceToken("const"),this.tokens.copyToken(),this.tokens.copyToken(),this.tokens.replaceToken(this.helperManager.getHelperName("require"))):this.tokens.replaceToken("const"),!0}processImport(){if(this.tokens.matches2(C._import,C.parenL))return!1;const e=this.tokens.snapshot();if(this.removeImportTypeBindings()){for(this.tokens.restoreToSnapshot(e);!this.tokens.matches1(C.string);)this.tokens.removeToken();this.tokens.removeToken(),P1(this.tokens),this.tokens.matches1(C.semi)&&this.tokens.removeToken()}return!0}removeImportTypeBindings(){if(this.tokens.copyExpectedToken(C._import),this.tokens.matchesContextual(de._type)&&!this.tokens.matches1AtIndex(this.tokens.currentIndex()+1,C.comma)&&!this.tokens.matchesContextualAtIndex(this.tokens.currentIndex()+1,de._from))return!0;if(this.tokens.matches1(C.string))return this.tokens.copyToken(),!1;this.tokens.matchesContextual(de._module)&&this.tokens.matchesContextualAtIndex(this.tokens.currentIndex()+2,de._from)&&this.tokens.copyToken();let e=!1,t=!1,i=!1;if(this.tokens.matches1(C.name)&&(this.shouldAutomaticallyElideImportedName(this.tokens.identifierName())?(this.tokens.removeToken(),this.tokens.matches1(C.comma)&&this.tokens.removeToken()):(e=!0,this.tokens.copyToken(),this.tokens.matches1(C.comma)&&(i=!0,this.tokens.removeToken()))),this.tokens.matches1(C.star))this.shouldAutomaticallyElideImportedName(this.tokens.identifierNameAtRelativeIndex(2))?(this.tokens.removeToken(),this.tokens.removeToken(),this.tokens.removeToken()):(i&&this.tokens.appendCode(","),e=!0,this.tokens.copyExpectedToken(C.star),this.tokens.copyExpectedToken(C.name),this.tokens.copyExpectedToken(C.name));else if(this.tokens.matches1(C.braceL)){for(i&&this.tokens.appendCode(","),this.tokens.copyToken();!this.tokens.matches1(C.braceR);){t=!0;const s=rL(this.tokens);if(s.isType||this.shouldAutomaticallyElideImportedName(s.rightName)){for(;this.tokens.currentIndex()<s.endIndex;)this.tokens.removeToken();this.tokens.matches1(C.comma)&&this.tokens.removeToken()}else{for(e=!0;this.tokens.currentIndex()<s.endIndex;)this.tokens.copyToken();this.tokens.matches1(C.comma)&&this.tokens.copyToken()}}this.tokens.copyExpectedToken(C.braceR)}return this.keepUnusedImports?!1:this.isTypeScriptTransformEnabled?!e:this.isFlowTransformEnabled?t&&!e:!1}shouldAutomaticallyElideImportedName(e){return this.isTypeScriptTransformEnabled&&!this.keepUnusedImports&&!this.nonTypeIdentifiers.has(e)}processExportDefault(){if(Lfe(this.isTypeScriptTransformEnabled,this.keepUnusedImports,this.tokens,this.declarationInfo))return this.tokens.removeInitialToken(),this.tokens.removeToken(),this.tokens.removeToken(),!0;if(!(this.tokens.matches4(C._export,C._default,C._function,C.name)||this.tokens.matches5(C._export,C._default,C.name,C._function,C.name)&&this.tokens.matchesContextualAtIndex(this.tokens.currentIndex()+2,de._async)||this.tokens.matches4(C._export,C._default,C._class,C.name)||this.tokens.matches5(C._export,C._default,C._abstract,C._class,C.name))&&this.reactHotLoaderTransformer){const t=this.nameManager.claimFreeName("_default");return this.tokens.replaceToken(`let ${t}; export`),this.tokens.copyToken(),this.tokens.appendCode(` ${t} =`),this.reactHotLoaderTransformer.setExtractedDefaultExportName(t),!0}return!1}processNamedExports(){if(!this.isTypeScriptTransformEnabled)return!1;this.tokens.copyExpectedToken(C._export),this.tokens.copyExpectedToken(C.braceL);const e=kfe(this.tokens);let t=!1;for(;!this.tokens.matches1(C.braceR);){const i=rL(this.tokens);if(i.isType||!e&&this.shouldElideExportedName(i.leftName)){for(;this.tokens.currentIndex()<i.endIndex;)this.tokens.removeToken();this.tokens.matches1(C.comma)&&this.tokens.removeToken()}else{for(t=!0;this.tokens.currentIndex()<i.endIndex;)this.tokens.copyToken();this.tokens.matches1(C.comma)&&this.tokens.copyToken()}}return this.tokens.copyExpectedToken(C.braceR),!this.keepUnusedImports&&e&&!t&&(this.tokens.removeToken(),this.tokens.removeToken(),P1(this.tokens)),!0}shouldElideExportedName(e){return this.isTypeScriptTransformEnabled&&!this.keepUnusedImports&&this.declarationInfo.typeDeclarations.has(e)&&!this.declarationInfo.valueDeclarations.has(e)}}class u6e extends Fu{constructor(e,t,i){super(),this.rootTransformer=e,this.tokens=t,this.isImportsTransformEnabled=i}process(){return this.rootTransformer.processPossibleArrowParamEnd()||this.rootTransformer.processPossibleAsyncArrowWithTypeParams()||this.rootTransformer.processPossibleTypeRange()?!0:this.tokens.matches1(C._enum)?(this.processEnum(),!0):this.tokens.matches2(C._export,C._enum)?(this.processNamedExportEnum(),!0):this.tokens.matches3(C._export,C._default,C._enum)?(this.processDefaultExportEnum(),!0):!1}processNamedExportEnum(){if(this.isImportsTransformEnabled){this.tokens.removeInitialToken();const e=this.tokens.identifierNameAtRelativeIndex(1);this.processEnum(),this.tokens.appendCode(` exports.${e} = ${e};`)}else this.tokens.copyToken(),this.processEnum()}processDefaultExportEnum(){this.tokens.removeInitialToken(),this.tokens.removeToken();const e=this.tokens.identifierNameAtRelativeIndex(1);this.processEnum(),this.isImportsTransformEnabled?this.tokens.appendCode(` exports.default = ${e};`):this.tokens.appendCode(` export default ${e};`)}processEnum(){this.tokens.replaceToken("const"),this.tokens.copyExpectedToken(C.name);let e=!1;this.tokens.matchesContextual(de._of)&&(this.tokens.removeToken(),e=this.tokens.matchesContextual(de._symbol),this.tokens.removeToken());const t=this.tokens.matches3(C.braceL,C.name,C.eq);this.tokens.appendCode(' = require("flow-enums-runtime")');const i=!e&&!t;for(this.tokens.replaceTokenTrimmingLeftWhitespace(i?".Mirrored([":"({");!this.tokens.matches1(C.braceR);){if(this.tokens.matches1(C.ellipsis)){this.tokens.removeToken();break}this.processEnumElement(e,t),this.tokens.matches1(C.comma)&&this.tokens.copyToken()}this.tokens.replaceToken(i?"]);":"});")}processEnumElement(e,t){if(e){const i=this.tokens.identifierName();this.tokens.copyToken(),this.tokens.appendCode(`: Symbol("${i}")`)}else t?(this.tokens.copyToken(),this.tokens.replaceTokenTrimmingLeftWhitespace(":"),this.tokens.copyToken()):this.tokens.replaceToken(`"${this.tokens.identifierName()}"`)}}function h6e(n){let e,t=n[0],i=1;for(;i<n.length;){const s=n[i],r=n[i+1];if(i+=2,(s==="optionalAccess"||s==="optionalCall")&&t==null)return;s==="access"||s==="optionalAccess"?(e=t,t=r(t)):(s==="call"||s==="optionalCall")&&(t=r((...o)=>t.call(e,...o)),e=void 0)}return t}const $D="jest",d6e=["mock","unmock","enableAutomock","disableAutomock"];class yj extends Fu{__init(){this.hoistedFunctionNames=[]}constructor(e,t,i,s){super(),this.rootTransformer=e,this.tokens=t,this.nameManager=i,this.importProcessor=s,yj.prototype.__init.call(this)}process(){return this.tokens.currentToken().scopeDepth===0&&this.tokens.matches4(C.name,C.dot,C.name,C.parenL)&&this.tokens.identifierName()===$D?h6e([this,"access",e=>e.importProcessor,"optionalAccess",e=>e.getGlobalNames,"call",e=>e(),"optionalAccess",e=>e.has,"call",e=>e($D)])?!1:this.extractHoistedCalls():!1}getHoistedCode(){return this.hoistedFunctionNames.length>0?this.hoistedFunctionNames.map(e=>`${e}();`).join(""):""}extractHoistedCalls(){this.tokens.removeToken();let e=!1;for(;this.tokens.matches3(C.dot,C.name,C.parenL);){const t=this.tokens.identifierNameAtIndex(this.tokens.currentIndex()+1);if(d6e.includes(t)){const s=this.nameManager.claimFreeName("__jestHoist");this.hoistedFunctionNames.push(s),this.tokens.replaceToken(`function ${s}(){${$D}.`),this.tokens.copyToken(),this.tokens.copyToken(),this.rootTransformer.processBalancedCode(),this.tokens.copyExpectedToken(C.parenR),this.tokens.appendCode(";}"),e=!1}else e?this.tokens.copyToken():this.tokens.replaceToken(`${$D}.`),this.tokens.copyToken(),this.tokens.copyToken(),this.rootTransformer.processBalancedCode(),this.tokens.copyExpectedToken(C.parenR),e=!0}return!0}}class f6e extends Fu{constructor(e){super(),this.tokens=e}process(){if(this.tokens.matches1(C.num)){const e=this.tokens.currentTokenCode();if(e.includes("_"))return this.tokens.replaceToken(e.replace(/_/g,"")),!0}return!1}}class g6e extends Fu{constructor(e,t){super(),this.tokens=e,this.nameManager=t}process(){return this.tokens.matches2(C._catch,C.braceL)?(this.tokens.copyToken(),this.tokens.appendCode(` (${this.nameManager.claimFreeName("e")})`),!0):!1}}class p6e extends Fu{constructor(e,t){super(),this.tokens=e,this.nameManager=t}process(){if(this.tokens.matches1(C.nullishCoalescing)){const i=this.tokens.currentToken();return this.tokens.tokens[i.nullishStartIndex].isAsyncOperation?this.tokens.replaceTokenTrimmingLeftWhitespace(", async () => ("):this.tokens.replaceTokenTrimmingLeftWhitespace(", () => ("),!0}if(this.tokens.matches1(C._delete)&&this.tokens.tokenAtRelativeIndex(1).isOptionalChainStart)return this.tokens.removeInitialToken(),!0;const t=this.tokens.currentToken().subscriptStartIndex;if(t!=null&&this.tokens.tokens[t].isOptionalChainStart&&this.tokens.tokenAtRelativeIndex(-1).type!==C._super){const i=this.nameManager.claimFreeName("_");let s;if(t>0&&this.tokens.matches1AtIndex(t-1,C._delete)&&this.isLastSubscriptInChain()?s=`${i} => delete ${i}`:s=`${i} => ${i}`,this.tokens.tokens[t].isAsyncOperation&&(s=`async ${s}`),this.tokens.matches2(C.questionDot,C.parenL)||this.tokens.matches2(C.questionDot,C.lessThan))this.justSkippedSuper()&&this.tokens.appendCode(".bind(this)"),this.tokens.replaceTokenTrimmingLeftWhitespace(`, 'optionalCall', ${s}`);else if(this.tokens.matches2(C.questionDot,C.bracketL))this.tokens.replaceTokenTrimmingLeftWhitespace(`, 'optionalAccess', ${s}`);else if(this.tokens.matches1(C.questionDot))this.tokens.replaceTokenTrimmingLeftWhitespace(`, 'optionalAccess', ${s}.`);else if(this.tokens.matches1(C.dot))this.tokens.replaceTokenTrimmingLeftWhitespace(`, 'access', ${s}.`);else if(this.tokens.matches1(C.bracketL))this.tokens.replaceTokenTrimmingLeftWhitespace(`, 'access', ${s}[`);else if(this.tokens.matches1(C.parenL))this.justSkippedSuper()&&this.tokens.appendCode(".bind(this)"),this.tokens.replaceTokenTrimmingLeftWhitespace(`, 'call', ${s}(`);else throw new Error("Unexpected subscript operator in optional chain.");return!0}return!1}isLastSubscriptInChain(){let e=0;for(let t=this.tokens.currentIndex()+1;;t++){if(t>=this.tokens.tokens.length)throw new Error("Reached the end of the code while finding the end of the access chain.");if(this.tokens.tokens[t].isOptionalChainStart?e++:this.tokens.tokens[t].isOptionalChainEnd&&e--,e<0)return!0;if(e===0&&this.tokens.tokens[t].subscriptStartIndex!=null)return!1}}justSkippedSuper(){let e=0,t=this.tokens.currentIndex()-1;for(;;){if(t<0)throw new Error("Reached the start of the code while finding the start of the access chain.");if(this.tokens.tokens[t].isOptionalChainStart?e--:this.tokens.tokens[t].isOptionalChainEnd&&e++,e<0)return!1;if(e===0&&this.tokens.tokens[t].subscriptStartIndex!=null)return this.tokens.tokens[t-1].type===C._super;t--}}}class m6e extends Fu{constructor(e,t,i,s){super(),this.rootTransformer=e,this.tokens=t,this.importProcessor=i,this.options=s}process(){const e=this.tokens.currentIndex();if(this.tokens.identifierName()==="createReactClass"){const t=this.importProcessor&&this.importProcessor.getIdentifierReplacement("createReactClass");return t?this.tokens.replaceToken(`(0, ${t})`):this.tokens.copyToken(),this.tryProcessCreateClassCall(e),!0}if(this.tokens.matches3(C.name,C.dot,C.name)&&this.tokens.identifierName()==="React"&&this.tokens.identifierNameAtIndex(this.tokens.currentIndex()+2)==="createClass"){const t=this.importProcessor&&this.importProcessor.getIdentifierReplacement("React")||"React";return t?(this.tokens.replaceToken(t),this.tokens.copyToken(),this.tokens.copyToken()):(this.tokens.copyToken(),this.tokens.copyToken(),this.tokens.copyToken()),this.tryProcessCreateClassCall(e),!0}return!1}tryProcessCreateClassCall(e){const t=this.findDisplayName(e);t&&this.classNeedsDisplayName()&&(this.tokens.copyExpectedToken(C.parenL),this.tokens.copyExpectedToken(C.braceL),this.tokens.appendCode(`displayName: '${t}',`),this.rootTransformer.processBalancedCode(),this.tokens.copyExpectedToken(C.braceR),this.tokens.copyExpectedToken(C.parenR))}findDisplayName(e){return e<2?null:this.tokens.matches2AtIndex(e-2,C.name,C.eq)?this.tokens.identifierNameAtIndex(e-2):e>=2&&this.tokens.tokens[e-2].identifierRole===Mt.ObjectKey?this.tokens.identifierNameAtIndex(e-2):this.tokens.matches2AtIndex(e-2,C._export,C._default)?this.getDisplayNameFromFilename():null}getDisplayNameFromFilename(){const t=(this.options.filePath||"unknown").split("/"),i=t[t.length-1],s=i.lastIndexOf("."),r=s===-1?i:i.slice(0,s);return r==="index"&&t[t.length-2]?t[t.length-2]:r}classNeedsDisplayName(){let e=this.tokens.currentIndex();if(!this.tokens.matches2(C.parenL,C.braceL))return!1;const t=e+1,i=this.tokens.tokens[t].contextId;if(i==null)throw new Error("Expected non-null context ID on object open-brace.");for(;e<this.tokens.tokens.length;e++){const s=this.tokens.tokens[e];if(s.type===C.braceR&&s.contextId===i){e++;break}if(this.tokens.identifierNameAtIndex(e)==="displayName"&&this.tokens.tokens[e].identifierRole===Mt.ObjectKey&&s.contextId===i)return!1}if(e===this.tokens.tokens.length)throw new Error("Unexpected end of input when processing React class.");return this.tokens.matches1AtIndex(e,C.parenR)||this.tokens.matches2AtIndex(e,C.comma,C.parenR)}}class Cj extends Fu{__init(){this.extractedDefaultExportName=null}constructor(e,t){super(),this.tokens=e,this.filePath=t,Cj.prototype.__init.call(this)}setExtractedDefaultExportName(e){this.extractedDefaultExportName=e}getPrefixCode(){return` + (function () { + var enterModule = require('react-hot-loader').enterModule; + enterModule && enterModule(module); + })();`.replace(/\s+/g," ").trim()}getSuffixCode(){const e=new Set;for(const i of this.tokens.tokens)!i.isType&&bde(i)&&i.identifierRole!==Mt.ImportDeclaration&&e.add(this.tokens.identifierNameForToken(i));const t=Array.from(e).map(i=>({variableName:i,uniqueLocalName:i}));return this.extractedDefaultExportName&&t.push({variableName:this.extractedDefaultExportName,uniqueLocalName:"default"}),` +;(function () { + var reactHotLoader = require('react-hot-loader').default; + var leaveModule = require('react-hot-loader').leaveModule; + if (!reactHotLoader) { + return; + } +${t.map(({variableName:i,uniqueLocalName:s})=>` reactHotLoader.register(${i}, "${s}", ${JSON.stringify(this.filePath||"")});`).join(` +`)} + leaveModule(module); +})();`}process(){return!1}}const _6e=new Set(["break","case","catch","class","const","continue","debugger","default","delete","do","else","export","extends","finally","for","function","if","import","in","instanceof","new","return","super","switch","this","throw","try","typeof","var","void","while","with","yield","enum","implements","interface","let","package","private","protected","public","static","await","false","null","true"]);function ZQ(n){if(n.length===0||!oE[n.charCodeAt(0)])return!1;for(let e=1;e<n.length;e++)if(!Eu[n.charCodeAt(e)])return!1;return!_6e.has(n)}class v6e extends Fu{constructor(e,t,i){super(),this.rootTransformer=e,this.tokens=t,this.isImportsTransformEnabled=i}process(){return this.rootTransformer.processPossibleArrowParamEnd()||this.rootTransformer.processPossibleAsyncArrowWithTypeParams()||this.rootTransformer.processPossibleTypeRange()?!0:this.tokens.matches1(C._public)||this.tokens.matches1(C._protected)||this.tokens.matches1(C._private)||this.tokens.matches1(C._abstract)||this.tokens.matches1(C._readonly)||this.tokens.matches1(C._override)||this.tokens.matches1(C.nonNullAssertion)?(this.tokens.removeInitialToken(),!0):this.tokens.matches1(C._enum)||this.tokens.matches2(C._const,C._enum)?(this.processEnum(),!0):this.tokens.matches2(C._export,C._enum)||this.tokens.matches3(C._export,C._const,C._enum)?(this.processEnum(!0),!0):!1}processEnum(e=!1){for(this.tokens.removeInitialToken();this.tokens.matches1(C._const)||this.tokens.matches1(C._enum);)this.tokens.removeToken();const t=this.tokens.identifierName();this.tokens.removeToken(),e&&!this.isImportsTransformEnabled&&this.tokens.appendCode("export "),this.tokens.appendCode(`var ${t}; (function (${t})`),this.tokens.copyExpectedToken(C.braceL),this.processEnumBody(t),this.tokens.copyExpectedToken(C.braceR),e&&this.isImportsTransformEnabled?this.tokens.appendCode(`)(${t} || (exports.${t} = ${t} = {}));`):this.tokens.appendCode(`)(${t} || (${t} = {}));`)}processEnumBody(e){let t=null;for(;!this.tokens.matches1(C.braceR);){const{nameStringCode:i,variableName:s}=this.extractEnumKeyInfo(this.tokens.currentToken());this.tokens.removeInitialToken(),this.tokens.matches3(C.eq,C.string,C.comma)||this.tokens.matches3(C.eq,C.string,C.braceR)?this.processStringLiteralEnumMember(e,i,s):this.tokens.matches1(C.eq)?this.processExplicitValueEnumMember(e,i,s):this.processImplicitValueEnumMember(e,i,s,t),this.tokens.matches1(C.comma)&&this.tokens.removeToken(),s!=null?t=s:t=`${e}[${i}]`}}extractEnumKeyInfo(e){if(e.type===C.name){const t=this.tokens.identifierNameForToken(e);return{nameStringCode:`"${t}"`,variableName:ZQ(t)?t:null}}else if(e.type===C.string){const t=this.tokens.stringValueForToken(e);return{nameStringCode:this.tokens.code.slice(e.start,e.end),variableName:ZQ(t)?t:null}}else throw new Error("Expected name or string at beginning of enum element.")}processStringLiteralEnumMember(e,t,i){i!=null?(this.tokens.appendCode(`const ${i}`),this.tokens.copyToken(),this.tokens.copyToken(),this.tokens.appendCode(`; ${e}[${t}] = ${i};`)):(this.tokens.appendCode(`${e}[${t}]`),this.tokens.copyToken(),this.tokens.copyToken(),this.tokens.appendCode(";"))}processExplicitValueEnumMember(e,t,i){const s=this.tokens.currentToken().rhsEndIndex;if(s==null)throw new Error("Expected rhsEndIndex on enum assign.");if(i!=null){for(this.tokens.appendCode(`const ${i}`),this.tokens.copyToken();this.tokens.currentIndex()<s;)this.rootTransformer.processToken();this.tokens.appendCode(`; ${e}[${e}[${t}] = ${i}] = ${t};`)}else{for(this.tokens.appendCode(`${e}[${e}[${t}]`),this.tokens.copyToken();this.tokens.currentIndex()<s;)this.rootTransformer.processToken();this.tokens.appendCode(`] = ${t};`)}}processImplicitValueEnumMember(e,t,i,s){let r=s!=null?`${s} + 1`:"0";i!=null&&(this.tokens.appendCode(`const ${i} = ${r}; `),r=i),this.tokens.appendCode(`${e}[${e}[${t}] = ${r}] = ${t};`)}}class LA{__init(){this.transformers=[]}__init2(){this.generatedVariables=[]}constructor(e,t,i,s){LA.prototype.__init.call(this),LA.prototype.__init2.call(this),this.nameManager=e.nameManager,this.helperManager=e.helperManager;const{tokenProcessor:r,importProcessor:o}=e;this.tokens=r,this.isImportsTransformEnabled=t.includes("imports"),this.isReactHotLoaderTransformEnabled=t.includes("react-hot-loader"),this.disableESTransforms=!!s.disableESTransforms,s.disableESTransforms||(this.transformers.push(new p6e(r,this.nameManager)),this.transformers.push(new f6e(r)),this.transformers.push(new g6e(r,this.nameManager))),t.includes("jsx")&&(s.jsxRuntime!=="preserve"&&this.transformers.push(new _1(this,r,o,this.nameManager,s)),this.transformers.push(new m6e(this,r,o,s)));let a=null;if(t.includes("react-hot-loader")){if(!s.filePath)throw new Error("filePath is required when using the react-hot-loader transform.");a=new Cj(r,s.filePath),this.transformers.push(a)}if(t.includes("imports")){if(o===null)throw new Error("Expected non-null importProcessor with imports transform enabled.");this.transformers.push(new GS(this,r,o,this.nameManager,this.helperManager,a,i,!!s.enableLegacyTypeScriptModuleInterop,t.includes("typescript"),t.includes("flow"),!!s.preserveDynamicImport,!!s.keepUnusedImports))}else this.transformers.push(new c6e(r,this.nameManager,this.helperManager,a,t.includes("typescript"),t.includes("flow"),!!s.keepUnusedImports,s));t.includes("flow")&&this.transformers.push(new u6e(this,r,t.includes("imports"))),t.includes("typescript")&&this.transformers.push(new v6e(this,r,t.includes("imports"))),t.includes("jest")&&this.transformers.push(new yj(this,r,this.nameManager,o))}transform(){this.tokens.reset(),this.processBalancedCode();let t=this.isImportsTransformEnabled?'"use strict";':"";for(const o of this.transformers)t+=o.getPrefixCode();t+=this.helperManager.emitHelpers(),t+=this.generatedVariables.map(o=>` var ${o};`).join("");for(const o of this.transformers)t+=o.getHoistedCode();let i="";for(const o of this.transformers)i+=o.getSuffixCode();const s=this.tokens.finish();let{code:r}=s;if(r.startsWith("#!")){let o=r.indexOf(` +`);return o===-1&&(o=r.length,r+=` +`),{code:r.slice(0,o+1)+t+r.slice(o+1)+i,mappings:this.shiftMappings(s.mappings,t.length)}}else return{code:t+r+i,mappings:this.shiftMappings(s.mappings,t.length)}}processBalancedCode(){let e=0,t=0;for(;!this.tokens.isAtEnd();){if(this.tokens.matches1(C.braceL)||this.tokens.matches1(C.dollarBraceL))e++;else if(this.tokens.matches1(C.braceR)){if(e===0)return;e--}if(this.tokens.matches1(C.parenL))t++;else if(this.tokens.matches1(C.parenR)){if(t===0)return;t--}this.processToken()}}processToken(){if(this.tokens.matches1(C._class)){this.processClass();return}for(const e of this.transformers)if(e.process())return;this.tokens.copyToken()}processNamedClass(){if(!this.tokens.matches2(C._class,C.name))throw new Error("Expected identifier for exported class name.");const e=this.tokens.identifierNameAtIndex(this.tokens.currentIndex()+1);return this.processClass(),e}processClass(){const e=o6e(this,this.tokens,this.nameManager,this.disableESTransforms),t=(e.headerInfo.isExpression||!e.headerInfo.className)&&e.staticInitializerNames.length+e.instanceInitializerNames.length>0;let i=e.headerInfo.className;t&&(i=this.nameManager.claimFreeName("_class"),this.generatedVariables.push(i),this.tokens.appendCode(` (${i} =`));const r=this.tokens.currentToken().contextId;if(r==null)throw new Error("Expected class to have a context ID.");for(this.tokens.copyExpectedToken(C._class);!this.tokens.matchesContextIdAndLabel(C.braceL,r);)this.processToken();this.processClassBody(e,i);const o=e.staticInitializerNames.map(a=>`${i}.${a}()`);t?this.tokens.appendCode(`, ${o.map(a=>`${a}, `).join("")}${i})`):e.staticInitializerNames.length>0&&this.tokens.appendCode(` ${o.map(a=>`${a};`).join(" ")}`)}processClassBody(e,t){const{headerInfo:i,constructorInsertPos:s,constructorInitializerStatements:r,fields:o,instanceInitializerNames:a,rangesToRemove:l}=e;let c=0,u=0;const h=this.tokens.currentToken().contextId;if(h==null)throw new Error("Expected non-null context ID on class.");this.tokens.copyExpectedToken(C.braceL),this.isReactHotLoaderTransformEnabled&&this.tokens.appendCode("__reactstandin__regenerateByEval(key, code) {this[key] = eval(code);}");const d=r.length+a.length>0;if(s===null&&d){const f=this.makeConstructorInitCode(r,a,t);if(i.hasSuperclass){const g=this.nameManager.claimFreeName("args");this.tokens.appendCode(`constructor(...${g}) { super(...${g}); ${f}; }`)}else this.tokens.appendCode(`constructor() { ${f}; }`)}for(;!this.tokens.matchesContextIdAndLabel(C.braceR,h);)if(c<o.length&&this.tokens.currentIndex()===o[c].start){let f=!1;for(this.tokens.matches1(C.bracketL)?this.tokens.copyTokenWithPrefix(`${o[c].initializerName}() {this`):this.tokens.matches1(C.string)||this.tokens.matches1(C.num)?(this.tokens.copyTokenWithPrefix(`${o[c].initializerName}() {this[`),f=!0):this.tokens.copyTokenWithPrefix(`${o[c].initializerName}() {this.`);this.tokens.currentIndex()<o[c].end;)f&&this.tokens.currentIndex()===o[c].equalsIndex&&this.tokens.appendCode("]"),this.processToken();this.tokens.appendCode("}"),c++}else if(u<l.length&&this.tokens.currentIndex()>=l[u].start){for(this.tokens.currentIndex()<l[u].end&&this.tokens.removeInitialToken();this.tokens.currentIndex()<l[u].end;)this.tokens.removeToken();u++}else this.tokens.currentIndex()===s?(this.tokens.copyToken(),d&&this.tokens.appendCode(`;${this.makeConstructorInitCode(r,a,t)};`),this.processToken()):this.processToken();this.tokens.copyExpectedToken(C.braceR)}makeConstructorInitCode(e,t,i){return[...e,...t.map(s=>`${i}.prototype.${s}.call(this)`)].join(";")}processPossibleArrowParamEnd(){if(this.tokens.matches2(C.parenR,C.colon)&&this.tokens.tokenAtRelativeIndex(1).isType){let e=this.tokens.currentIndex()+1;for(;this.tokens.tokens[e].isType;)e++;if(this.tokens.matches1AtIndex(e,C.arrow)){for(this.tokens.removeInitialToken();this.tokens.currentIndex()<e;)this.tokens.removeToken();return this.tokens.replaceTokenTrimmingLeftWhitespace(") =>"),!0}}return!1}processPossibleAsyncArrowWithTypeParams(){if(!this.tokens.matchesContextual(de._async)&&!this.tokens.matches1(C._async))return!1;const e=this.tokens.tokenAtRelativeIndex(1);if(e.type!==C.lessThan||!e.isType)return!1;let t=this.tokens.currentIndex()+1;for(;this.tokens.tokens[t].isType;)t++;if(this.tokens.matches1AtIndex(t,C.parenL)){for(this.tokens.replaceToken("async ("),this.tokens.removeInitialToken();this.tokens.currentIndex()<t;)this.tokens.removeToken();return this.tokens.removeToken(),this.processBalancedCode(),this.processToken(),!0}return!1}processPossibleTypeRange(){if(this.tokens.currentToken().isType){for(this.tokens.removeInitialToken();this.tokens.currentToken().isType;)this.tokens.removeToken();return!0}return!1}shiftMappings(e,t){for(let i=0;i<e.length;i++){const s=e[i];s!==void 0&&(e[i]=s+t)}return e}}var b6e={};(function(n){n.__esModule=!0,n.LinesAndColumns=void 0;var e=` +`,t="\r",i=function(){function s(r){this.string=r;for(var o=[0],a=0;a<r.length;)switch(r[a]){case e:a+=e.length,o.push(a);break;case t:a+=t.length,r[a]===e&&(a+=e.length),o.push(a);break;default:a++;break}this.offsets=o}return s.prototype.locationForIndex=function(r){if(r<0||r>this.string.length)return null;for(var o=0,a=this.offsets;a[o+1]<=r;)o++;var l=r-a[o];return{line:o,column:l}},s.prototype.indexForLocation=function(r){var o=r.line,a=r.column;return o<0||o>=this.offsets.length||a<0||a>this.lengthOfLine(o)?null:this.offsets[o]+a},s.prototype.lengthOfLine=function(r){var o=this.offsets[r],a=r===this.offsets.length-1?this.string.length:this.offsets[r+1];return a-o},s}();n.LinesAndColumns=i,n.default=i})(b6e);function y6e(n){const e=new Set;for(let t=0;t<n.tokens.length;t++)n.matches1AtIndex(t,C._import)&&!n.matches3AtIndex(t,C._import,C.name,C.eq)&&C6e(n,t,e);return e}function C6e(n,e,t){e++,!n.matches1AtIndex(e,C.parenL)&&(n.matches1AtIndex(e,C.name)&&(t.add(n.identifierNameAtIndex(e)),e++,n.matches1AtIndex(e,C.comma)&&e++),n.matches1AtIndex(e,C.star)&&(e+=2,t.add(n.identifierNameAtIndex(e)),e++),n.matches1AtIndex(e,C.braceL)&&(e++,w6e(n,e,t)))}function w6e(n,e,t){for(;;){if(n.matches1AtIndex(e,C.braceR))return;const i=rL(n,e);if(e=i.endIndex,i.isType||t.add(i.rightName),n.matches2AtIndex(e,C.comma,C.braceR))return;if(n.matches1AtIndex(e,C.braceR))return;if(n.matches1AtIndex(e,C.comma))e++;else throw new Error(`Unexpected token: ${JSON.stringify(n.tokens[e])}`)}}function S6e(n,e){WFe(e);try{const t=k6e(n,e),s=new LA(t,e.transforms,!!e.enableLegacyBabel5ModuleInterop,e).transform();let r={code:s.code};if(e.sourceMapOptions){if(!e.filePath)throw new Error("filePath must be specified when generating a source map.");r={...r,sourceMap:LFe(s,e.filePath,e.sourceMapOptions,n,t.tokenProcessor.tokens)}}return r}catch(t){throw e.filePath&&(t.message=`Error transforming ${e.filePath}: ${t.message}`),t}}function k6e(n,e){const t=e.transforms.includes("jsx"),i=e.transforms.includes("typescript"),s=e.transforms.includes("flow"),r=e.disableESTransforms===!0,o=s6e(n,t,i,s),a=o.tokens,l=o.scopes,c=new ZU(n,a),u=new _A(c),h=new KS(n,a,s,r,u),d=!!e.enableLegacyTypeScriptModuleInterop;let f=null;return e.transforms.includes("imports")?(f=new v1(c,h,d,e,e.transforms.includes("typescript"),!!e.keepUnusedImports,u),f.preprocessTokens(),OQ(h,l,f.getGlobalNames()),e.transforms.includes("typescript")&&!e.keepUnusedImports&&f.pruneTypeOnlyImports()):e.transforms.includes("typescript")&&!e.keepUnusedImports&&OQ(h,l,y6e(h)),{tokenProcessor:h,scopes:l,nameManager:c,importProcessor:f,helperManager:u}}function L6e(n,e){for(;n.length<e;)n="0"+n;return n}function Md(n,e){var t,i,s;if(e.length===0)return n;for(t=0,s=e.length;t<s;t++)i=e.charCodeAt(t),n=(n<<5)-n+i,n|=0;return n<0?n*-2:n}function x6e(n,e,t){return Object.keys(e).sort().reduce(i,n);function i(s,r){return xfe(s,e[r],r,t)}}function xfe(n,e,t,i){var s=Md(Md(Md(n,t),E6e(e)),typeof e);if(e===null)return Md(s,"null");if(e===void 0)return Md(s,"undefined");if(typeof e=="object"||typeof e=="function"){if(i.indexOf(e)!==-1)return Md(s,"[Circular]"+t);i.push(e);var r=x6e(s,e,i);if(!("valueOf"in e)||typeof e.valueOf!="function")return r;try{return Md(r,String(e.valueOf()))}catch(o){return Md(r,"[valueOf exception]"+(o.stack||o.message))}}return Md(s,e.toString())}function E6e(n){return Object.prototype.toString.call(n)}function D6e(n){return L6e(xfe(0,n,"",[]).toString(16),8)}var I6e=D6e;const T6e=n2e(I6e),R1="__sfc__";async function wj(n){return S6e(n,{transforms:["typescript"]}).code}async function zD(n,{filename:e,code:t,compiled:i}){var w,S,E,L,k;if(!t.trim())return[];if(e.endsWith(".css"))return i.css=t,[];if(e.endsWith(".js")||e.endsWith(".ts"))return e.endsWith(".ts")&&(t=await wj(t)),i.js=i.ssr=t,[];if(e.endsWith(".json")){let x;try{x=JSON.parse(t)}catch(I){return console.error(`Error parsing ${e}`,I.message),[I.message]}return i.js=i.ssr=`export default ${JSON.stringify(x)}`,[]}if(!e.endsWith(".vue"))return[];const s=T6e(e),{errors:r,descriptor:o}=n.compiler.parse(t,{filename:e,sourceMap:!0,templateParseOptions:(S=(w=n.options)==null?void 0:w.template)==null?void 0:S.compilerOptions});if(r.length)return r;if(o.styles.some(x=>x.lang)||o.template&&o.template.lang)return['lang="x" pre-processors for <template> or <style> are currently not supported.'];const a=o.script&&o.script.lang||o.scriptSetup&&o.scriptSetup.lang,l=a==="ts";if(a&&!l)return['Only lang="ts" is supported for <script> blocks.'];const c=o.styles.some(x=>x.scoped);let u="",h="";const d=x=>{u+=x,h+=x};let f,g;try{[f,g]=await XQ(n,o,s,!1,l)}catch(x){return[x.stack.split(` +`).slice(0,12).join(` +`)]}if(u+=f,o.scriptSetup||o.cssVars.length>0)try{const x=await XQ(n,o,s,!0,l);h+=x[0]}catch(x){h=`/* SSR compile error: ${x} */`}else h+=f;if(o.template&&(!o.scriptSetup||((L=(E=n.options)==null?void 0:E.script)==null?void 0:L.inlineTemplate)===!1)){const x=await QQ(n,o,s,g,!1,l);if(Array.isArray(x))return x;u+=`;${x}`;const I=await QQ(n,o,s,g,!0,l);typeof I=="string"?h+=`;${I}`:h=`/* SSR compile error: ${I[0]} */`}c&&d(` +${R1}.__scopeId = ${JSON.stringify(`data-v-${s}`)}`);const p=n.customElement;function m(x){return typeof x=="boolean"?x:typeof x=="string"?x.includes(e):!Array.isArray(x)&&Object.prototype.toString.call(x)==="[object RegExp]"?x.test(e):Array.isArray(x)?x.some(I=>m(I)):!1}let _=m(p),b="",y=[];for(const x of o.styles){if(x.module)return["<style module> is not supported in the playground."];const I=await n.compiler.compileStyleAsync({...(k=n.options)==null?void 0:k.style,source:x.content,filename:e,id:s,scoped:x.scoped,modules:!!x.module});I.errors.length?I.errors[0].message.includes("pathToFileURL")||(n.state.errors=I.errors):_?y.push(I.code):b+=I.code+` +`}if(b?i.css=b.trim():i.css=_?i.css="/* The component style of the custom element will be compiled into the component object */":"/* No <style> tags present */",u||h){const x=_?` +${R1}.styles = ${JSON.stringify(y)}`:"";d(` +${R1}.__file = ${JSON.stringify(e)}`+x+` +export default ${R1}`),i.js=u.trimStart(),i.ssr=h.trimStart()}return[]}async function XQ(n,e,t,i,s){var r,o,a,l;if(e.script||e.scriptSetup){const c=s?["typescript"]:void 0,u=n.compiler.compileScript(e,{inlineTemplate:!0,...(r=n.options)==null?void 0:r.script,id:t,templateOptions:{...(o=n.options)==null?void 0:o.template,ssr:i,ssrCssVars:e.cssVars,compilerOptions:{...(l=(a=n.options)==null?void 0:a.template)==null?void 0:l.compilerOptions,expressionPlugins:c}}});let h="";return u.bindings&&(h+=` +/* Analyzed bindings: ${JSON.stringify(u.bindings,null,2)} */`),h+=` +`+n.compiler.rewriteDefault(u.content,R1,c),(e.script||e.scriptSetup).lang==="ts"&&(h=await wj(h)),[h,u.bindings]}else return[` +const ${R1} = {}`,void 0]}async function QQ(n,e,t,i,s,r){var c,u,h,d;let{code:o,errors:a}=n.compiler.compileTemplate({isProd:!1,...(c=n.options)==null?void 0:c.template,ast:e.template.ast,source:e.template.content,filename:e.filename,id:t,scoped:e.styles.some(f=>f.scoped),slotted:e.slotted,ssr:s,ssrCssVars:e.cssVars,compilerOptions:{...(h=(u=n.options)==null?void 0:u.template)==null?void 0:h.compilerOptions,bindingMetadata:i,expressionPlugins:r?["typescript"]:void 0}});if(a.length)return a;const l=s?"ssrRender":"render";return o=` +${o.replace(/\nexport (function|const) (render|ssrRender)/,`$1 ${l}`)} +${R1}.${l} = ${l}`,((d=e.script||e.scriptSetup)==null?void 0:d.lang)==="ts"&&(o=await wj(o)),o}const JQ=`<script setup> +import { ref } from 'vue' + +const msg = ref('Hello World!') +<\/script> + +<template> + <h1>{{ msg }}</h1> + <input v-model="msg" /> +</template> +`,N6e=`<script setup><\/script> + +<template> + <div> + <slot /> + </div> +</template> +`,Cw="src/App.vue",ul="import-map.json",lf="tsconfig.json",A6e={compilerOptions:{allowJs:!0,checkJs:!0,jsx:"Preserve",target:"ESNext",module:"ESNext",moduleResolution:"Bundler",allowImportingTsExtensions:!0},vueCompilerOptions:{target:3.3}};class fb{constructor(e,t="",i=!1){this.compiled={js:"",css:"",ssr:""},this.editorViewState=null,this.filename=e,this.code=t,this.hidden=i}get language(){return this.filename.endsWith(".vue")?"vue":this.filename.endsWith(".html")?"html":this.filename.endsWith(".css")?"css":this.filename.endsWith(".ts")?"typescript":"javascript"}}class Efe{constructor({serializedState:e="",defaultVueRuntimeURL:t=`https://cdn.jsdelivr.net/npm/@vue/runtime-dom@${LT}/dist/runtime-dom.esm-browser.js`,defaultVueRuntimeProdURL:i=`https://cdn.jsdelivr.net/npm/@vue/runtime-dom@${LT}/dist/runtime-dom.esm-browser.prod.js`,defaultVueServerRendererURL:s=`https://cdn.jsdelivr.net/npm/@vue/server-renderer@${LT}/dist/server-renderer.esm-browser.js`,showOutput:r=!1,outputMode:o="preview",productionMode:a=!1,customElement:l=/\.ce\.vue$/}={}){this.compiler=CQ,this.productionMode=!1,this.pendingCompiler=null;const c={};if(e){const h=JSON.parse(S2e(e));for(const d in h)UD(c,d,h[d])}else UD(c,Cw,JQ);this.productionMode=a,this.defaultVueRuntimeDevURL=t,this.defaultVueRuntimeProdURL=i,this.defaultVueServerRendererURL=s,this.initialShowOutput=r,this.customElement=l,this.initialOutputMode=o;let u=Cw;c[u]||(u=Object.keys(c)[0]),this.state=wm({mainFile:u,files:c,activeFile:c[u],errors:[],vueRuntimeURL:this.defaultVueRuntimeURL,vueServerRendererURL:this.defaultVueServerRendererURL,typescriptVersion:"latest",typescriptLocale:void 0,resetFlip:!0}),this.initImportMap(),this.initTsConfig()}get defaultVueRuntimeURL(){return this.productionMode?this.defaultVueRuntimeProdURL:this.defaultVueRuntimeDevURL}init(){Kx(()=>zD(this,this.state.activeFile).then(e=>this.state.errors=e)),Kn(()=>{var e;return[(e=this.state.files[lf])==null?void 0:e.code,this.state.typescriptVersion,this.state.typescriptLocale,this.state.locale,this.state.dependencyVersion]},()=>{var e;return(e=this.reloadLanguageTools)==null?void 0:e.call(this)},{deep:!0}),this.state.errors=[];for(const e in this.state.files)e!==Cw&&zD(this,this.state.files[e]).then(t=>this.state.errors.push(...t))}initTsConfig(){this.state.files[lf]||this.setTsConfig(A6e)}setTsConfig(e){this.state.files[lf]=new fb(lf,JSON.stringify(e,void 0,2))}getTsConfig(){try{return JSON.parse(this.state.files[lf].code)}catch{return{}}}setActive(e){this.state.activeFile=this.state.files[e]}addFile(e){let t;typeof e=="string"?t=new fb(e,e.endsWith(".vue")?N6e:""):t=e,this.state.files[t.filename]=t,t.hidden||this.setActive(t.filename)}deleteFile(e){confirm(`Are you sure you want to delete ${YS(e)}?`)&&(this.state.activeFile.filename===e&&(this.state.activeFile=this.state.files[this.state.mainFile]),delete this.state.files[e])}renameFile(e,t){const{files:i}=this.state,s=i[e];if(!s){this.state.errors=[`Could not rename "${e}", file not found`];return}if(!t||e===t){this.state.errors=[`Cannot rename "${e}" to "${t}"`];return}s.filename=t;const r={};for(const o in i)o===e?r[t]=s:r[o]=i[o];this.state.files=r,this.state.mainFile===e&&(this.state.mainFile=t),zD(this,s).then(o=>this.state.errors=o)}serialize(){const e=this.getFiles(),t=e[ul];if(t){const{imports:i}=JSON.parse(t);i.vue===this.defaultVueRuntimeURL&&delete i.vue,i["vue/server-renderer"]===this.defaultVueServerRendererURL&&delete i["vue/server-renderer"],Object.keys(i).length?e[ul]=JSON.stringify({imports:i},null,2):delete e[ul]}return"#"+w2e(JSON.stringify(e))}getFiles(){const e={};for(const t in this.state.files){const i=t===ul?t:YS(t);e[i]=this.state.files[t].code}return e}async setFiles(e,t=Cw){const i={};t===Cw&&!e[t]&&UD(i,t,JQ);for(const r in e)UD(i,r,e[r]);const s=[];for(const r in i)s.push(...await zD(this,i[r]));this.state.errors=s,this.state.mainFile=Dfe(t),this.state.files=i,this.initImportMap(),this.setActive(this.state.mainFile),this.forceSandboxReset()}forceSandboxReset(){this.state.resetFlip=!this.state.resetFlip}initImportMap(){const e=this.state.files[ul];if(!e)this.state.files[ul]=new fb(ul,JSON.stringify({imports:{vue:this.defaultVueRuntimeURL,"vue/server-renderer":this.defaultVueServerRendererURL}},null,2));else try{const t=JSON.parse(e.code);t.imports.vue?t.imports.vue=eJ(t.imports.vue):t.imports.vue=this.defaultVueRuntimeURL,t.imports["vue/server-renderer"]?t.imports["vue/server-renderer"]=eJ(t.imports["vue/server-renderer"]):t.imports["vue/server-renderer"]=this.defaultVueServerRendererURL,e.code=JSON.stringify(t,null,2)}catch{}}getImportMap(){try{return JSON.parse(this.state.files[ul].code)}catch(e){return this.state.errors=[`Syntax error in import-map.json: ${e.message}`],{}}}setImportMap(e){this.state.files[ul].code=JSON.stringify(e,null,2)}setTypeScriptVersion(e){this.state.typescriptVersion=e,console.info(`[@vue/repl] Now using TypeScript version: ${e}`)}async setVueVersion(e){var a;this.vueVersion=e;const t=`https://cdn.jsdelivr.net/npm/@vue/compiler-sfc@${e}/dist/compiler-sfc.esm-browser.js`,i=`https://cdn.jsdelivr.net/npm/@vue/runtime-dom@${e}/dist/runtime-dom.esm-browser${this.productionMode?".prod":""}.js`,s=`https://cdn.jsdelivr.net/npm/@vue/server-renderer@${e}/dist/server-renderer.esm-browser.js`;this.pendingCompiler=_ae(()=>import(t),__vite__mapDeps([]),import.meta.url),this.compiler=await this.pendingCompiler,this.pendingCompiler=null,this.state.vueRuntimeURL=i,this.state.vueServerRendererURL=s;const r=this.getImportMap(),o=r.imports||(r.imports={});o.vue=i,o["vue/server-renderer"]=s,this.setImportMap(r),this.forceSandboxReset(),(a=this.reloadLanguageTools)==null||a.call(this),console.info(`[@vue/repl] Now using Vue version: ${e}`)}resetVueVersion(){this.vueVersion=void 0,this.compiler=CQ,this.state.vueRuntimeURL=this.defaultVueRuntimeURL,this.state.vueServerRendererURL=this.defaultVueServerRendererURL;const e=this.getImportMap(),t=e.imports||(e.imports={});t.vue=this.defaultVueRuntimeURL,t["vue/server-renderer"]=this.defaultVueServerRendererURL,this.setImportMap(e),this.forceSandboxReset(),console.info("[@vue/repl] Now using default Vue version")}toggleProduction(){this.productionMode=!this.productionMode,this.vueVersion?this.setVueVersion(this.vueVersion):this.resetVueVersion()}}function UD(n,e,t){const i=Dfe(e);n[i]=new fb(i,t)}function Dfe(n){return n===ul||n===lf||n.startsWith("src/")?n:`src/${n}`}function eJ(n){return n.replace("https://sfc.vuejs","https://play.vuejs")}function YS(n){return n.replace(/^src\//,"")}const Sj=n=>(joe("data-v-b94833d2"),n=n(),qoe(),n),P6e=["onClick","onDblclick"],R6e={class:"label"},M6e=["onClick"],O6e=Sj(()=>hi("svg",{class:"icon",width:"12",height:"12",viewBox:"0 0 24 24"},[hi("line",{stroke:"#999",x1:"18",y1:"6",x2:"6",y2:"18"}),hi("line",{stroke:"#999",x1:"6",y1:"6",x2:"18",y2:"18"})],-1)),F6e=[O6e],B6e={class:"file pending"},W6e={class:"import-map-wrapper"},V6e=Sj(()=>hi("span",{class:"label"},"tsconfig.json",-1)),H6e=[V6e],$6e=Sj(()=>hi("span",{class:"label"},"Import Map",-1)),z6e=[$6e],U6e=rr({__name:"FileSelector",setup(n){const e=$r("store"),t=Qt(!1),i=Qt("Comp.vue"),s=$r("tsconfig"),r=$r("import-map"),o=Qn(()=>Object.entries(e.state.files).filter(([g,p])=>g!==ul&&g!==lf&&!p.hidden).map(([g])=>g));function a(){let g=0,p="Comp.vue";for(;;){let m=!1;for(const _ in e.state.files)if(YS(_)===p){m=!0,p=`Comp${++g}.vue`;break}if(!m)break}i.value=p,t.value=!0}function l(){t.value=!1}function c({el:g}){g.focus()}function u(){if(!t.value)return;const g="src/"+i.value,p=t.value===!0?"":t.value;if(!/\.(vue|js|ts|css|json)$/.test(g)){e.state.errors=["Playground only supports *.vue, *.js, *.ts, *.css, *.json files."];return}if(g!==p&&g in e.state.files){e.state.errors=[`File "${g}" already exists.`];return}e.state.errors=[],l(),g!==p&&(p?e.renameFile(p,g):e.addFile(g))}function h(g){i.value=YS(g),t.value=g}const d=Qt(null);function f(g){g.preventDefault();const p=d.value,_=30*((Math.abs(g.deltaX)>=Math.abs(g.deltaY)?g.deltaX:g.deltaY)>0?1:-1);p.scrollTo({left:p.scrollLeft+_})}return(g,p)=>(vi(),Mi("div",{class:sc(["file-selector",{"has-import-map":Ti(r)}]),onWheel:f,ref_key:"fileSel",ref:d},[(vi(!0),Mi(Es,null,Ub(o.value,(m,_)=>(vi(),Mi(Es,null,[t.value!==m?(vi(),Mi("div",{key:0,class:sc(["file",{active:Ti(e).state.activeFile.filename===m}]),onClick:b=>Ti(e).setActive(m),onDblclick:b=>_>0&&h(m)},[hi("span",R6e,vl(Ti(YS)(m)),1),_>0?(vi(),Mi("span",{key:0,class:"remove",onClick:pae(b=>Ti(e).deleteFile(m),["stop"])},F6e,8,M6e)):rc("",!0)],42,P6e)):rc("",!0),t.value===!0&&_===o.value.length-1||t.value===m?(vi(),Mi("div",{key:1,class:sc(["file pending",{active:t.value===m}])},[hi("span",B6e,vl(i.value),1),__(hi("input",{"onUpdate:modelValue":p[0]||(p[0]=b=>i.value=b),spellcheck:"false",onBlur:u,onKeyup:[iZ(u,["enter"]),iZ(l,["esc"])],onVnodeMounted:c},null,544),[[hSe,i.value]])],2)):rc("",!0)],64))),256)),hi("button",{class:"add",onClick:a},"+"),hi("div",W6e,[Ti(s)?(vi(),Mi("div",{key:0,class:sc(["file",{active:Ti(e).state.activeFile.filename===Ti(lf)}]),onClick:p[1]||(p[1]=m=>Ti(e).setActive(Ti(lf)))},H6e,2)):rc("",!0),Ti(r)?(vi(),Mi("div",{key:1,class:sc(["file",{active:Ti(e).state.activeFile.filename===Ti(ul)}]),onClick:p[2]||(p[2]=m=>Ti(e).setActive(Ti(ul)))},z6e,2)):rc("",!0)])],34))}}),j6e=yv(U6e,[["__scopeId","data-v-b94833d2"]]),Ife=n=>(joe("data-v-70b24951"),n=n(),qoe(),n),q6e=Ife(()=>hi("span",null,"Show Error",-1)),K6e=Ife(()=>hi("div",{class:"indicator"},null,-1)),G6e=[K6e],Y6e=rr({__name:"MessageToggle",props:{modelValue:{type:Boolean},modelModifiers:{}},emits:["update:modelValue"],setup(n){const e=lwe(n,"modelValue");return(t,i)=>(vi(),Mi("div",{class:"wrapper",onClick:i[0]||(i[0]=s=>e.value=!e.value)},[q6e,hi("div",{class:sc(["toggle",[{active:n.modelValue}]])},G6e,2)]))}}),Z6e=yv(Y6e,[["__scopeId","data-v-70b24951"]]),X6e={class:"editor-container"},tJ="repl_show_error",Q6e=rr({__name:"EditorContainer",props:{editorComponent:{}},setup(n){const e=n,t=$r("store"),i=Qt(o()),s=C2e(a=>{t.state.activeFile.code=a},250);function r(){localStorage.setItem(tJ,i.value?"true":"false")}function o(){return localStorage.getItem(tJ)!=="false"}return Kn(i,()=>{r()}),(a,l)=>(vi(),Mi(Es,null,[At(j6e),hi("div",X6e,[At(e.editorComponent,{onChange:Ti(s),value:Ti(t).state.activeFile.code,filename:Ti(t).state.activeFile.filename},null,8,["onChange","value","filename"]),__(At(L8,{err:Ti(t).state.errors[0]},null,8,["err"]),[[Kb,i.value]]),At(Z6e,{modelValue:i.value,"onUpdate:modelValue":l[0]||(l[0]=c=>i.value=c)},null,8,["modelValue"])])],64))}}),J6e=yv(Q6e,[["__scopeId","data-v-3500c8e7"]]),eBe={class:"vue-repl"},tBe=rr({__name:"Repl",props:{theme:{default:"light"},editor:{},store:{default:()=>new Efe},autoResize:{type:Boolean,default:!0},showCompileOutput:{type:Boolean,default:!0},showImportMap:{type:Boolean,default:!0},showTsConfig:{type:Boolean,default:!0},clearConsole:{type:Boolean,default:!0},sfcOptions:{},layout:{},layoutReverse:{type:Boolean,default:!1},ssr:{type:Boolean,default:!1},previewOptions:{default:()=>({headHTML:"",bodyHTML:"",placeholderHTML:"",customCode:{importCode:"",useCode:""}})}},setup(n,{expose:e}){const t=n;if(!t.editor)throw new Error('The "editor" prop is now required.');const i=Qt(),{store:s}=t,r=s.options=t.sfcOptions||{};r.script||(r.script={}),r.script.fs={fileExists(c){return c.startsWith("/")&&(c=c.slice(1)),!!s.state.files[c]},readFile(c){return c.startsWith("/")&&(c=c.slice(1)),s.state.files[c].code}},s.init();const o=Qn(()=>t.layoutReverse?"right":"left"),a=Qn(()=>t.layoutReverse?"left":"right");ic("store",s),ic("autoresize",t.autoResize),ic("import-map",nS(t,"showImportMap")),ic("tsconfig",nS(t,"showTsConfig")),ic("clear-console",nS(t,"clearConsole")),ic("preview-options",t.previewOptions),ic("theme",nS(t,"theme"));function l(){var c;(c=i.value)==null||c.reload()}return e({reload:l}),(c,u)=>(vi(),Mi("div",eBe,[At(L2e,{layout:c.layout},{[o.value]:xh(()=>[At(J6e,{editorComponent:c.editor},null,8,["editorComponent"])]),[a.value]:xh(()=>[At(W2e,{ref_key:"outputRef",ref:i,editorComponent:c.editor,showCompileOutput:t.showCompileOutput,ssr:!!t.ssr},null,8,["editorComponent","showCompileOutput","ssr"])]),_:2},1032,["layout"])]))}});var iJ={};let iBe=typeof document<"u"&&document.location&&document.location.hash.indexOf("pseudo=true")>=0;function Tfe(n,e){let t;return e.length===0?t=n:t=n.replace(/\{(\d+)\}/g,(i,s)=>{const r=s[0],o=e[r];let a=i;return typeof o=="string"?a=o:(typeof o=="number"||typeof o=="boolean"||o===void 0||o===null)&&(a=String(o)),a}),iBe&&(t="["+t.replace(/[aouei]/g,"$&$&")+"]"),t}function v(n,e,...t){return Tfe(e,t)}function nBe(n,e,...t){const i=Tfe(e,t);return{value:i,original:i}}function sBe(n,e){const t=n;typeof t.vscodeWindowId!="number"&&Object.defineProperty(t,"vscodeWindowId",{get:()=>e})}const mn=window,Xh=mn;class rBe{constructor(){this.listeners=[],this.unexpectedErrorHandler=function(e){setTimeout(()=>{throw e.stack?uy.isErrorNoTelemetry(e)?new uy(e.message+` + +`+e.stack):new Error(e.message+` + +`+e.stack):e},0)}}emit(e){this.listeners.forEach(t=>{t(e)})}onUnexpectedError(e){this.unexpectedErrorHandler(e),this.emit(e)}onUnexpectedExternalError(e){this.unexpectedErrorHandler(e)}}const Nfe=new rBe;function vt(n){Wu(n)||Nfe.onUnexpectedError(n)}function Jn(n){Wu(n)||Nfe.onUnexpectedExternalError(n)}function nJ(n){if(n instanceof Error){const{name:e,message:t}=n,i=n.stacktrace||n.stack;return{$isError:!0,name:e,message:t,stack:i,noTelemetry:uy.isErrorNoTelemetry(n)}}return n}const xA="Canceled";function Wu(n){return n instanceof Em?!0:n instanceof Error&&n.name===xA&&n.message===xA}class Em extends Error{constructor(){super(xA),this.name=this.message}}function oBe(){const n=new Error(xA);return n.name=n.message,n}function Tl(n){return n?new Error(`Illegal argument: ${n}`):new Error("Illegal argument")}function kj(n){return n?new Error(`Illegal state: ${n}`):new Error("Illegal state")}class aBe extends Error{constructor(e){super("NotSupported"),e&&(this.message=e)}}class uy extends Error{constructor(e){super(e),this.name="CodeExpectedError"}static fromError(e){if(e instanceof uy)return e;const t=new uy;return t.message=e.message,t.stack=e.stack,t}static isErrorNoTelemetry(e){return e.name==="CodeExpectedError"}}class an extends Error{constructor(e){super(e||"An unexpected bug occurred."),Object.setPrototypeOf(this,an.prototype)}}function jp(n,e){const t=this;let i=!1,s;return function(){if(i)return s;if(i=!0,e)try{s=n.apply(t,arguments)}finally{e()}else s=n.apply(t,arguments);return s}}var Vt;(function(n){function e(b){return b&&typeof b=="object"&&typeof b[Symbol.iterator]=="function"}n.is=e;const t=Object.freeze([]);function i(){return t}n.empty=i;function*s(b){yield b}n.single=s;function r(b){return e(b)?b:s(b)}n.wrap=r;function o(b){return b||t}n.from=o;function*a(b){for(let y=b.length-1;y>=0;y--)yield b[y]}n.reverse=a;function l(b){return!b||b[Symbol.iterator]().next().done===!0}n.isEmpty=l;function c(b){return b[Symbol.iterator]().next().value}n.first=c;function u(b,y){for(const w of b)if(y(w))return!0;return!1}n.some=u;function h(b,y){for(const w of b)if(y(w))return w}n.find=h;function*d(b,y){for(const w of b)y(w)&&(yield w)}n.filter=d;function*f(b,y){let w=0;for(const S of b)yield y(S,w++)}n.map=f;function*g(...b){for(const y of b)yield*y}n.concat=g;function p(b,y,w){let S=w;for(const E of b)S=y(S,E);return S}n.reduce=p;function*m(b,y,w=b.length){for(y<0&&(y+=b.length),w<0?w+=b.length:w>b.length&&(w=b.length);y<w;y++)yield b[y]}n.slice=m;function _(b,y=Number.POSITIVE_INFINITY){const w=[];if(y===0)return[w,b];const S=b[Symbol.iterator]();for(let E=0;E<y;E++){const L=S.next();if(L.done)return[w,n.empty()];w.push(L.value)}return[w,{[Symbol.iterator](){return S}}]}n.consume=_})(Vt||(Vt={}));function Lj(n){return typeof n.dispose=="function"&&n.dispose.length===0}function yi(n){if(Vt.is(n)){const e=[];for(const t of n)if(t)try{t.dispose()}catch(i){e.push(i)}if(e.length===1)throw e[0];if(e.length>1)throw new AggregateError(e,"Encountered errors while disposing of store");return Array.isArray(n)?[]:n}else if(n)return n.dispose(),n}function _c(...n){return st(()=>yi(n))}function st(n){return{dispose:jp(()=>{n()})}}class xe{constructor(){this._toDispose=new Set,this._isDisposed=!1}dispose(){this._isDisposed||(this._isDisposed=!0,this.clear())}get isDisposed(){return this._isDisposed}clear(){if(this._toDispose.size!==0)try{yi(this._toDispose)}finally{this._toDispose.clear()}}add(e){if(!e)return e;if(e===this)throw new Error("Cannot register a disposable on itself!");return this._isDisposed?xe.DISABLE_DISPOSED_WARNING||console.warn(new Error("Trying to add a disposable to a DisposableStore that has already been disposed of. The added object will be leaked!").stack):this._toDispose.add(e),e}deleteAndLeak(e){e&&this._toDispose.has(e)&&this._toDispose.delete(e)}}xe.DISABLE_DISPOSED_WARNING=!1;class pe{constructor(){this._store=new xe,this._store}dispose(){this._store.dispose()}_register(e){if(e===this)throw new Error("Cannot register a disposable on itself!");return this._store.add(e)}}pe.None=Object.freeze({dispose(){}});class qs{constructor(){this._isDisposed=!1}get value(){return this._isDisposed?void 0:this._value}set value(e){var t;this._isDisposed||e===this._value||((t=this._value)===null||t===void 0||t.dispose(),this._value=e)}clear(){this.value=void 0}dispose(){var e;this._isDisposed=!0,(e=this._value)===null||e===void 0||e.dispose(),this._value=void 0}}class lBe{constructor(e){this._disposable=e,this._counter=1}acquire(){return this._counter++,this}release(){return--this._counter===0&&this._disposable.dispose(),this}}class cBe{constructor(e){this.object=e}dispose(){}}class xj{constructor(){this._store=new Map,this._isDisposed=!1}dispose(){this._isDisposed=!0,this.clearAndDisposeAll()}clearAndDisposeAll(){if(this._store.size)try{yi(this._store.values())}finally{this._store.clear()}}get(e){return this._store.get(e)}set(e,t,i=!1){var s;this._isDisposed&&console.warn(new Error("Trying to add a disposable to a DisposableMap that has already been disposed of. The added object will be leaked!").stack),i||(s=this._store.get(e))===null||s===void 0||s.dispose(),this._store.set(e,t)}deleteAndDispose(e){var t;(t=this._store.get(e))===null||t===void 0||t.dispose(),this._store.delete(e)}[Symbol.iterator](){return this._store[Symbol.iterator]()}}let hs=class W8{constructor(e){this.element=e,this.next=W8.Undefined,this.prev=W8.Undefined}};hs.Undefined=new hs(void 0);class oo{constructor(){this._first=hs.Undefined,this._last=hs.Undefined,this._size=0}get size(){return this._size}isEmpty(){return this._first===hs.Undefined}clear(){let e=this._first;for(;e!==hs.Undefined;){const t=e.next;e.prev=hs.Undefined,e.next=hs.Undefined,e=t}this._first=hs.Undefined,this._last=hs.Undefined,this._size=0}unshift(e){return this._insert(e,!1)}push(e){return this._insert(e,!0)}_insert(e,t){const i=new hs(e);if(this._first===hs.Undefined)this._first=i,this._last=i;else if(t){const r=this._last;this._last=i,i.prev=r,r.next=i}else{const r=this._first;this._first=i,i.next=r,r.prev=i}this._size+=1;let s=!1;return()=>{s||(s=!0,this._remove(i))}}shift(){if(this._first!==hs.Undefined){const e=this._first.element;return this._remove(this._first),e}}pop(){if(this._last!==hs.Undefined){const e=this._last.element;return this._remove(this._last),e}}_remove(e){if(e.prev!==hs.Undefined&&e.next!==hs.Undefined){const t=e.prev;t.next=e.next,e.next.prev=t}else e.prev===hs.Undefined&&e.next===hs.Undefined?(this._first=hs.Undefined,this._last=hs.Undefined):e.next===hs.Undefined?(this._last=this._last.prev,this._last.next=hs.Undefined):e.prev===hs.Undefined&&(this._first=this._first.next,this._first.prev=hs.Undefined);this._size-=1}*[Symbol.iterator](){let e=this._first;for(;e!==hs.Undefined;)yield e.element,e=e.next}}const uBe=globalThis.performance&&typeof globalThis.performance.now=="function";class Nr{static create(e){return new Nr(e)}constructor(e){this._now=uBe&&e===!1?Date.now:globalThis.performance.now.bind(globalThis.performance),this._startTime=this._now(),this._stopTime=-1}stop(){this._stopTime=this._now()}elapsed(){return this._stopTime!==-1?this._stopTime-this._startTime:this._now()-this._startTime}}var Ve;(function(n){n.None=()=>pe.None;function e(T,P){return h(T,()=>{},0,void 0,!0,void 0,P)}n.defer=e;function t(T){return(P,R=null,F)=>{let j=!1,K;return K=T(Z=>{if(!j)return K?K.dispose():j=!0,P.call(R,Z)},null,F),j&&K.dispose(),K}}n.once=t;function i(T,P,R){return c((F,j=null,K)=>T(Z=>F.call(j,P(Z)),null,K),R)}n.map=i;function s(T,P,R){return c((F,j=null,K)=>T(Z=>{P(Z),F.call(j,Z)},null,K),R)}n.forEach=s;function r(T,P,R){return c((F,j=null,K)=>T(Z=>P(Z)&&F.call(j,Z),null,K),R)}n.filter=r;function o(T){return T}n.signal=o;function a(...T){return(P,R=null,F)=>{const j=_c(...T.map(K=>K(Z=>P.call(R,Z))));return u(j,F)}}n.any=a;function l(T,P,R,F){let j=R;return i(T,K=>(j=P(j,K),j),F)}n.reduce=l;function c(T,P){let R;const F={onWillAddFirstListener(){R=T(j.fire,j)},onDidRemoveLastListener(){R==null||R.dispose()}},j=new ue(F);return P==null||P.add(j),j.event}function u(T,P){return P instanceof Array?P.push(T):P&&P.add(T),T}function h(T,P,R=100,F=!1,j=!1,K,Z){let q,re,G,W=0,Y;const X={leakWarningThreshold:K,onWillAddFirstListener(){q=T(le=>{W++,re=P(re,le),F&&!G&&(z.fire(re),re=void 0),Y=()=>{const J=re;re=void 0,G=void 0,(!F||W>1)&&z.fire(J),W=0},typeof R=="number"?(clearTimeout(G),G=setTimeout(Y,R)):G===void 0&&(G=0,queueMicrotask(Y))})},onWillRemoveListener(){j&&W>0&&(Y==null||Y())},onDidRemoveLastListener(){Y=void 0,q.dispose()}},z=new ue(X);return Z==null||Z.add(z),z.event}n.debounce=h;function d(T,P=0,R){return n.debounce(T,(F,j)=>F?(F.push(j),F):[j],P,void 0,!0,void 0,R)}n.accumulate=d;function f(T,P=(F,j)=>F===j,R){let F=!0,j;return r(T,K=>{const Z=F||!P(K,j);return F=!1,j=K,Z},R)}n.latch=f;function g(T,P,R){return[n.filter(T,P,R),n.filter(T,F=>!P(F),R)]}n.split=g;function p(T,P=!1,R=[],F){let j=R.slice(),K=T(re=>{j?j.push(re):q.fire(re)});F&&F.add(K);const Z=()=>{j==null||j.forEach(re=>q.fire(re)),j=null},q=new ue({onWillAddFirstListener(){K||(K=T(re=>q.fire(re)),F&&F.add(K))},onDidAddFirstListener(){j&&(P?setTimeout(Z):Z())},onDidRemoveLastListener(){K&&K.dispose(),K=null}});return F&&F.add(q),q.event}n.buffer=p;function m(T,P){return(F,j,K)=>{const Z=P(new b);return T(function(q){const re=Z.evaluate(q);re!==_&&F.call(j,re)},void 0,K)}}n.chain=m;const _=Symbol("HaltChainable");class b{constructor(){this.steps=[]}map(P){return this.steps.push(P),this}forEach(P){return this.steps.push(R=>(P(R),R)),this}filter(P){return this.steps.push(R=>P(R)?R:_),this}reduce(P,R){let F=R;return this.steps.push(j=>(F=P(F,j),F)),this}latch(P=(R,F)=>R===F){let R=!0,F;return this.steps.push(j=>{const K=R||!P(j,F);return R=!1,F=j,K?j:_}),this}evaluate(P){for(const R of this.steps)if(P=R(P),P===_)break;return P}}function y(T,P,R=F=>F){const F=(...q)=>Z.fire(R(...q)),j=()=>T.on(P,F),K=()=>T.removeListener(P,F),Z=new ue({onWillAddFirstListener:j,onDidRemoveLastListener:K});return Z.event}n.fromNodeEventEmitter=y;function w(T,P,R=F=>F){const F=(...q)=>Z.fire(R(...q)),j=()=>T.addEventListener(P,F),K=()=>T.removeEventListener(P,F),Z=new ue({onWillAddFirstListener:j,onDidRemoveLastListener:K});return Z.event}n.fromDOMEventEmitter=w;function S(T){return new Promise(P=>t(T)(P))}n.toPromise=S;function E(T){const P=new ue;return T.then(R=>{P.fire(R)},()=>{P.fire(void 0)}).finally(()=>{P.dispose()}),P.event}n.fromPromise=E;function L(T,P,R){return P(R),T(F=>P(F))}n.runAndSubscribe=L;function k(T,P){let R=null;function F(K){R==null||R.dispose(),R=new xe,P(K,R)}F(void 0);const j=T(K=>F(K));return st(()=>{j.dispose(),R==null||R.dispose()})}n.runAndSubscribeWithStore=k;class x{constructor(P,R){this._observable=P,this._counter=0,this._hasChanged=!1;const F={onWillAddFirstListener:()=>{P.addObserver(this)},onDidRemoveLastListener:()=>{P.removeObserver(this)}};this.emitter=new ue(F),R&&R.add(this.emitter)}beginUpdate(P){this._counter++}handlePossibleChange(P){}handleChange(P,R){this._hasChanged=!0}endUpdate(P){this._counter--,this._counter===0&&(this._observable.reportChanges(),this._hasChanged&&(this._hasChanged=!1,this.emitter.fire(this._observable.get())))}}function I(T,P){return new x(T,P).emitter.event}n.fromObservable=I;function N(T){return(P,R,F)=>{let j=0,K=!1;const Z={beginUpdate(){j++},endUpdate(){j--,j===0&&(T.reportChanges(),K&&(K=!1,P.call(R)))},handlePossibleChange(){},handleChange(){K=!0}};T.addObserver(Z),T.reportChanges();const q={dispose(){T.removeObserver(Z)}};return F instanceof xe?F.add(q):Array.isArray(F)&&F.push(q),q}}n.fromObservableLight=N})(Ve||(Ve={}));class hy{constructor(e){this.listenerCount=0,this.invocationCount=0,this.elapsedOverall=0,this.durations=[],this.name=`${e}_${hy._idPool++}`,hy.all.add(this)}start(e){this._stopWatch=new Nr,this.listenerCount=e}stop(){if(this._stopWatch){const e=this._stopWatch.elapsed();this.durations.push(e),this.elapsedOverall+=e,this.invocationCount+=1,this._stopWatch=void 0}}}hy.all=new Set;hy._idPool=0;let hBe=-1;class dBe{constructor(e,t=Math.random().toString(18).slice(2,5)){this.threshold=e,this.name=t,this._warnCountdown=0}dispose(){var e;(e=this._stacks)===null||e===void 0||e.clear()}check(e,t){const i=this.threshold;if(i<=0||t<i)return;this._stacks||(this._stacks=new Map);const s=this._stacks.get(e.value)||0;if(this._stacks.set(e.value,s+1),this._warnCountdown-=1,this._warnCountdown<=0){this._warnCountdown=i*.5;let r,o=0;for(const[a,l]of this._stacks)(!r||o<l)&&(r=a,o=l);console.warn(`[${this.name}] potential listener LEAK detected, having ${t} listeners already. MOST frequent listener (${o}):`),console.warn(r)}return()=>{const r=this._stacks.get(e.value)||0;this._stacks.set(e.value,r-1)}}}class Ej{static create(){var e;return new Ej((e=new Error().stack)!==null&&e!==void 0?e:"")}constructor(e){this.value=e}print(){console.warn(this.value.split(` +`).slice(2).join(` +`))}}class c5{constructor(e){this.value=e}}const fBe=2;let ue=class{constructor(e){var t,i,s,r,o;this._size=0,this._options=e,this._leakageMon=!((t=this._options)===null||t===void 0)&&t.leakWarningThreshold?new dBe((s=(i=this._options)===null||i===void 0?void 0:i.leakWarningThreshold)!==null&&s!==void 0?s:hBe):void 0,this._perfMon=!((r=this._options)===null||r===void 0)&&r._profName?new hy(this._options._profName):void 0,this._deliveryQueue=(o=this._options)===null||o===void 0?void 0:o.deliveryQueue}dispose(){var e,t,i,s;this._disposed||(this._disposed=!0,((e=this._deliveryQueue)===null||e===void 0?void 0:e.current)===this&&this._deliveryQueue.reset(),this._listeners&&(this._listeners=void 0,this._size=0),(i=(t=this._options)===null||t===void 0?void 0:t.onDidRemoveLastListener)===null||i===void 0||i.call(t),(s=this._leakageMon)===null||s===void 0||s.dispose())}get event(){var e;return(e=this._event)!==null&&e!==void 0||(this._event=(t,i,s)=>{var r,o,a,l,c;if(this._leakageMon&&this._size>this._leakageMon.threshold*3)return console.warn(`[${this._leakageMon.name}] REFUSES to accept new listeners because it exceeded its threshold by far`),pe.None;if(this._disposed)return pe.None;i&&(t=t.bind(i));const u=new c5(t);let h;this._leakageMon&&this._size>=Math.ceil(this._leakageMon.threshold*.2)&&(u.stack=Ej.create(),h=this._leakageMon.check(u.stack,this._size+1)),this._listeners?this._listeners instanceof c5?((c=this._deliveryQueue)!==null&&c!==void 0||(this._deliveryQueue=new Afe),this._listeners=[this._listeners,u]):this._listeners.push(u):((o=(r=this._options)===null||r===void 0?void 0:r.onWillAddFirstListener)===null||o===void 0||o.call(r,this),this._listeners=u,(l=(a=this._options)===null||a===void 0?void 0:a.onDidAddFirstListener)===null||l===void 0||l.call(a,this)),this._size++;const d=st(()=>{h==null||h(),this._removeListener(u)});return s instanceof xe?s.add(d):Array.isArray(s)&&s.push(d),d}),this._event}_removeListener(e){var t,i,s,r;if((i=(t=this._options)===null||t===void 0?void 0:t.onWillRemoveListener)===null||i===void 0||i.call(t,this),!this._listeners)return;if(this._size===1){this._listeners=void 0,(r=(s=this._options)===null||s===void 0?void 0:s.onDidRemoveLastListener)===null||r===void 0||r.call(s,this),this._size=0;return}const o=this._listeners,a=o.indexOf(e);if(a===-1)throw console.log("disposed?",this._disposed),console.log("size?",this._size),console.log("arr?",JSON.stringify(this._listeners)),new Error("Attempted to dispose unknown listener");this._size--,o[a]=void 0;const l=this._deliveryQueue.current===this;if(this._size*fBe<=o.length){let c=0;for(let u=0;u<o.length;u++)o[u]?o[c++]=o[u]:l&&(this._deliveryQueue.end--,c<this._deliveryQueue.i&&this._deliveryQueue.i--);o.length=c}}_deliver(e,t){var i;if(!e)return;const s=((i=this._options)===null||i===void 0?void 0:i.onListenerError)||vt;if(!s){e.value(t);return}try{e.value(t)}catch(r){s(r)}}_deliverQueue(e){const t=e.current._listeners;for(;e.i<e.end;)this._deliver(t[e.i++],e.value);e.reset()}fire(e){var t,i,s,r;if(!((t=this._deliveryQueue)===null||t===void 0)&&t.current&&(this._deliverQueue(this._deliveryQueue),(i=this._perfMon)===null||i===void 0||i.stop()),(s=this._perfMon)===null||s===void 0||s.start(this._size),this._listeners)if(this._listeners instanceof c5)this._deliver(this._listeners,e);else{const o=this._deliveryQueue;o.enqueue(this,e,this._listeners.length),this._deliverQueue(o)}(r=this._perfMon)===null||r===void 0||r.stop()}hasListeners(){return this._size>0}};const gBe=()=>new Afe;class Afe{constructor(){this.i=-1,this.end=0}enqueue(e,t,i){this.i=0,this.end=i,this.current=e,this.value=t}reset(){this.i=this.end,this.current=void 0,this.value=void 0}}class E_ extends ue{constructor(e){super(e),this._isPaused=0,this._eventQueue=new oo,this._mergeFn=e==null?void 0:e.merge}pause(){this._isPaused++}resume(){if(this._isPaused!==0&&--this._isPaused===0)if(this._mergeFn){if(this._eventQueue.size>0){const e=Array.from(this._eventQueue);this._eventQueue.clear(),super.fire(this._mergeFn(e))}}else for(;!this._isPaused&&this._eventQueue.size!==0;)super.fire(this._eventQueue.shift())}fire(e){this._size&&(this._isPaused!==0?this._eventQueue.push(e):super.fire(e))}}class Pfe extends E_{constructor(e){var t;super(e),this._delay=(t=e.delay)!==null&&t!==void 0?t:100}fire(e){this._handle||(this.pause(),this._handle=setTimeout(()=>{this._handle=void 0,this.resume()},this._delay)),super.fire(e)}}class pBe extends ue{constructor(e){super(e),this._queuedEvents=[],this._mergeFn=e==null?void 0:e.merge}fire(e){this.hasListeners()&&(this._queuedEvents.push(e),this._queuedEvents.length===1&&queueMicrotask(()=>{this._mergeFn?super.fire(this._mergeFn(this._queuedEvents)):this._queuedEvents.forEach(t=>super.fire(t)),this._queuedEvents=[]}))}}class mBe{constructor(){this.hasListeners=!1,this.events=[],this.emitter=new ue({onWillAddFirstListener:()=>this.onFirstListenerAdd(),onDidRemoveLastListener:()=>this.onLastListenerRemove()})}get event(){return this.emitter.event}add(e){const t={event:e,listener:null};return this.events.push(t),this.hasListeners&&this.hook(t),st(jp(()=>{this.hasListeners&&this.unhook(t);const s=this.events.indexOf(t);this.events.splice(s,1)}))}onFirstListenerAdd(){this.hasListeners=!0,this.events.forEach(e=>this.hook(e))}onLastListenerRemove(){this.hasListeners=!1,this.events.forEach(e=>this.unhook(e))}hook(e){e.listener=e.event(t=>this.emitter.fire(t))}unhook(e){e.listener&&e.listener.dispose(),e.listener=null}dispose(){this.emitter.dispose()}}class Dj{constructor(){this.buffers=[]}wrapEvent(e){return(t,i,s)=>e(r=>{const o=this.buffers[this.buffers.length-1];o?o.push(()=>t.call(i,r)):t.call(i,r)},void 0,s)}bufferEvents(e){const t=[];this.buffers.push(t);const i=e();return this.buffers.pop(),t.forEach(s=>s()),i}}class sJ{constructor(){this.listening=!1,this.inputEvent=Ve.None,this.inputEventListener=pe.None,this.emitter=new ue({onDidAddFirstListener:()=>{this.listening=!0,this.inputEventListener=this.inputEvent(this.emitter.fire,this.emitter)},onDidRemoveLastListener:()=>{this.listening=!1,this.inputEventListener.dispose()}}),this.event=this.emitter.event}set input(e){this.inputEvent=e,this.listening&&(this.inputEventListener.dispose(),this.inputEventListener=e(this.emitter.fire,this.emitter))}dispose(){this.inputEventListener.dispose(),this.emitter.dispose()}}class V8{constructor(){this._zoomFactor=1}getZoomFactor(){return this._zoomFactor}}V8.INSTANCE=new V8;class _Be extends pe{constructor(){super(),this._onDidChange=this._register(new ue),this.onDidChange=this._onDidChange.event,this._listener=()=>this._handleChange(!0),this._mediaQueryList=null,this._handleChange(!1)}_handleChange(e){var t;(t=this._mediaQueryList)===null||t===void 0||t.removeEventListener("change",this._listener),this._mediaQueryList=Xh.matchMedia(`(resolution: ${Xh.devicePixelRatio}dppx)`),this._mediaQueryList.addEventListener("change",this._listener),e&&this._onDidChange.fire()}}class vBe extends pe{get value(){return this._value}constructor(){super(),this._onDidChange=this._register(new ue),this.onDidChange=this._onDidChange.event,this._value=this._getPixelRatio();const e=this._register(new _Be);this._register(e.onDidChange(()=>{this._value=this._getPixelRatio(),this._onDidChange.fire(this._value)}))}_getPixelRatio(){const e=document.createElement("canvas").getContext("2d"),t=Xh.devicePixelRatio||1,i=e.webkitBackingStorePixelRatio||e.mozBackingStorePixelRatio||e.msBackingStorePixelRatio||e.oBackingStorePixelRatio||e.backingStorePixelRatio||1;return t/i}}class bBe{constructor(){this._pixelRatioMonitor=null}_getOrCreatePixelRatioMonitor(){return this._pixelRatioMonitor||(this._pixelRatioMonitor=new vBe),this._pixelRatioMonitor}get value(){return this._getOrCreatePixelRatioMonitor().value}get onDidChange(){return this._getOrCreatePixelRatioMonitor().onDidChange}}function Rfe(n,e){typeof n=="string"&&(n=Xh.matchMedia(n)),n.addEventListener("change",e)}const uL=new bBe;function yBe(){return V8.INSTANCE.getZoomFactor()}const kC=navigator.userAgent,Ol=kC.indexOf("Firefox")>=0,n_=kC.indexOf("AppleWebKit")>=0,Ij=kC.indexOf("Chrome")>=0,Gf=!Ij&&kC.indexOf("Safari")>=0,Mfe=!Ij&&!Gf&&n_;kC.indexOf("Electron/")>=0;const rJ=kC.indexOf("Android")>=0;let qT=!1;if(Xh.matchMedia){const n=Xh.matchMedia("(display-mode: standalone) or (display-mode: window-controls-overlay)"),e=Xh.matchMedia("(display-mode: fullscreen)");qT=n.matches,Rfe(n,({matches:t})=>{qT&&e.matches||(qT=t)})}function CBe(){return qT}function uo(n){return typeof n=="string"}function ao(n){return typeof n=="object"&&n!==null&&!Array.isArray(n)&&!(n instanceof RegExp)&&!(n instanceof Date)}function wBe(n){const e=Object.getPrototypeOf(Uint8Array);return typeof n=="object"&&n instanceof e}function qp(n){return typeof n=="number"&&!isNaN(n)}function oJ(n){return!!n&&typeof n[Symbol.iterator]=="function"}function Ofe(n){return n===!0||n===!1}function ea(n){return typeof n>"u"}function hL(n){return!Ma(n)}function Ma(n){return ea(n)||n===null}function Si(n,e){if(!n)throw new Error(e?`Unexpected type, expected '${e}'`:"Unexpected type")}function Xg(n){if(Ma(n))throw new Error("Assertion Failed: argument is undefined or null");return n}function dL(n){return typeof n=="function"}function SBe(n,e){const t=Math.min(n.length,e.length);for(let i=0;i<t;i++)kBe(n[i],e[i])}function kBe(n,e){if(uo(e)){if(typeof n!==e)throw new Error(`argument does not match constraint: typeof ${e}`)}else if(dL(e)){try{if(n instanceof e)return}catch{}if(!Ma(n)&&n.constructor===e||e.length===1&&e.call(void 0,n)===!0)return;throw new Error("argument does not match one of these constraints: arg instanceof constraint, arg.constructor === constraint, nor constraint(arg) === true")}}var u5;const P0="en";let EA=!1,DA=!1,KT=!1,Ffe=!1,Tj=!1,Nj=!1,Bfe=!1,jD,GT=P0,aJ=P0,LBe,zc;const Af=globalThis;let Qr;typeof Af.vscode<"u"&&typeof Af.vscode.process<"u"?Qr=Af.vscode.process:typeof process<"u"&&(Qr=process);const xBe=typeof((u5=Qr==null?void 0:Qr.versions)===null||u5===void 0?void 0:u5.electron)=="string",EBe=xBe&&(Qr==null?void 0:Qr.type)==="renderer";if(typeof navigator=="object"&&!EBe)zc=navigator.userAgent,EA=zc.indexOf("Windows")>=0,DA=zc.indexOf("Macintosh")>=0,Nj=(zc.indexOf("Macintosh")>=0||zc.indexOf("iPad")>=0||zc.indexOf("iPhone")>=0)&&!!navigator.maxTouchPoints&&navigator.maxTouchPoints>0,KT=zc.indexOf("Linux")>=0,Bfe=(zc==null?void 0:zc.indexOf("Mobi"))>=0,Tj=!0,v({key:"ensureLoaderPluginIsLoaded",comment:["{Locked}"]},"_"),jD=P0,GT=jD,aJ=navigator.language;else if(typeof Qr=="object"){EA=Qr.platform==="win32",DA=Qr.platform==="darwin",KT=Qr.platform==="linux",KT&&Qr.env.SNAP&&Qr.env.SNAP_REVISION,Qr.env.CI||Qr.env.BUILD_ARTIFACTSTAGINGDIRECTORY,jD=P0,GT=P0;const n=Qr.env.VSCODE_NLS_CONFIG;if(n)try{const e=JSON.parse(n),t=e.availableLanguages["*"];jD=e.locale,aJ=e.osLocale,GT=t||P0,LBe=e._translationsConfigFile}catch{}Ffe=!0}else console.error("Unable to resolve platform.");const yr=EA,Gt=DA,Kr=KT,Cu=Ffe,Dm=Tj,DBe=Tj&&typeof Af.importScripts=="function",IBe=DBe?Af.origin:void 0,Du=Nj,TBe=Bfe,dd=zc,NBe=GT,ABe=typeof Af.postMessage=="function"&&!Af.importScripts,Wfe=(()=>{if(ABe){const n=[];Af.addEventListener("message",t=>{if(t.data&&t.data.vscodeScheduleAsyncWork)for(let i=0,s=n.length;i<s;i++){const r=n[i];if(r.id===t.data.vscodeScheduleAsyncWork){n.splice(i,1),r.callback();return}}});let e=0;return t=>{const i=++e;n.push({id:i,callback:t}),Af.postMessage({vscodeScheduleAsyncWork:i},"*")}}return n=>setTimeout(n)})(),Ha=DA||Nj?2:EA?1:3;let lJ=!0,cJ=!1;function Vfe(){if(!cJ){cJ=!0;const n=new Uint8Array(2);n[0]=1,n[1]=2,lJ=new Uint16Array(n.buffer)[0]===513}return lJ}const Hfe=!!(dd&&dd.indexOf("Chrome")>=0),PBe=!!(dd&&dd.indexOf("Firefox")>=0),RBe=!!(!Hfe&&dd&&dd.indexOf("Safari")>=0),MBe=!!(dd&&dd.indexOf("Edg/")>=0);dd&&dd.indexOf("Android")>=0;const Aj={clipboard:{writeText:Cu||document.queryCommandSupported&&document.queryCommandSupported("copy")||!!(navigator&&navigator.clipboard&&navigator.clipboard.writeText),readText:Cu||!!(navigator&&navigator.clipboard&&navigator.clipboard.readText)},keyboard:Cu||CBe()?0:navigator.keyboard||Gf?1:2,touch:"ontouchstart"in mn||navigator.maxTouchPoints>0,pointerEvents:mn.PointerEvent&&("ontouchstart"in mn||navigator.maxTouchPoints>0||navigator.maxTouchPoints>0)};class Pj{constructor(){this._keyCodeToStr=[],this._strToKeyCode=Object.create(null)}define(e,t){this._keyCodeToStr[e]=t,this._strToKeyCode[t.toLowerCase()]=e}keyCodeToStr(e){return this._keyCodeToStr[e]}strToKeyCode(e){return this._strToKeyCode[e.toLowerCase()]||0}}const YT=new Pj,H8=new Pj,$8=new Pj,$fe=new Array(230),OBe=Object.create(null),FBe=Object.create(null),Rj=[];for(let n=0;n<=193;n++)Rj[n]=-1;(function(){const n="",e=[[1,0,"None",0,"unknown",0,"VK_UNKNOWN",n,n],[1,1,"Hyper",0,n,0,n,n,n],[1,2,"Super",0,n,0,n,n,n],[1,3,"Fn",0,n,0,n,n,n],[1,4,"FnLock",0,n,0,n,n,n],[1,5,"Suspend",0,n,0,n,n,n],[1,6,"Resume",0,n,0,n,n,n],[1,7,"Turbo",0,n,0,n,n,n],[1,8,"Sleep",0,n,0,"VK_SLEEP",n,n],[1,9,"WakeUp",0,n,0,n,n,n],[0,10,"KeyA",31,"A",65,"VK_A",n,n],[0,11,"KeyB",32,"B",66,"VK_B",n,n],[0,12,"KeyC",33,"C",67,"VK_C",n,n],[0,13,"KeyD",34,"D",68,"VK_D",n,n],[0,14,"KeyE",35,"E",69,"VK_E",n,n],[0,15,"KeyF",36,"F",70,"VK_F",n,n],[0,16,"KeyG",37,"G",71,"VK_G",n,n],[0,17,"KeyH",38,"H",72,"VK_H",n,n],[0,18,"KeyI",39,"I",73,"VK_I",n,n],[0,19,"KeyJ",40,"J",74,"VK_J",n,n],[0,20,"KeyK",41,"K",75,"VK_K",n,n],[0,21,"KeyL",42,"L",76,"VK_L",n,n],[0,22,"KeyM",43,"M",77,"VK_M",n,n],[0,23,"KeyN",44,"N",78,"VK_N",n,n],[0,24,"KeyO",45,"O",79,"VK_O",n,n],[0,25,"KeyP",46,"P",80,"VK_P",n,n],[0,26,"KeyQ",47,"Q",81,"VK_Q",n,n],[0,27,"KeyR",48,"R",82,"VK_R",n,n],[0,28,"KeyS",49,"S",83,"VK_S",n,n],[0,29,"KeyT",50,"T",84,"VK_T",n,n],[0,30,"KeyU",51,"U",85,"VK_U",n,n],[0,31,"KeyV",52,"V",86,"VK_V",n,n],[0,32,"KeyW",53,"W",87,"VK_W",n,n],[0,33,"KeyX",54,"X",88,"VK_X",n,n],[0,34,"KeyY",55,"Y",89,"VK_Y",n,n],[0,35,"KeyZ",56,"Z",90,"VK_Z",n,n],[0,36,"Digit1",22,"1",49,"VK_1",n,n],[0,37,"Digit2",23,"2",50,"VK_2",n,n],[0,38,"Digit3",24,"3",51,"VK_3",n,n],[0,39,"Digit4",25,"4",52,"VK_4",n,n],[0,40,"Digit5",26,"5",53,"VK_5",n,n],[0,41,"Digit6",27,"6",54,"VK_6",n,n],[0,42,"Digit7",28,"7",55,"VK_7",n,n],[0,43,"Digit8",29,"8",56,"VK_8",n,n],[0,44,"Digit9",30,"9",57,"VK_9",n,n],[0,45,"Digit0",21,"0",48,"VK_0",n,n],[1,46,"Enter",3,"Enter",13,"VK_RETURN",n,n],[1,47,"Escape",9,"Escape",27,"VK_ESCAPE",n,n],[1,48,"Backspace",1,"Backspace",8,"VK_BACK",n,n],[1,49,"Tab",2,"Tab",9,"VK_TAB",n,n],[1,50,"Space",10,"Space",32,"VK_SPACE",n,n],[0,51,"Minus",88,"-",189,"VK_OEM_MINUS","-","OEM_MINUS"],[0,52,"Equal",86,"=",187,"VK_OEM_PLUS","=","OEM_PLUS"],[0,53,"BracketLeft",92,"[",219,"VK_OEM_4","[","OEM_4"],[0,54,"BracketRight",94,"]",221,"VK_OEM_6","]","OEM_6"],[0,55,"Backslash",93,"\\",220,"VK_OEM_5","\\","OEM_5"],[0,56,"IntlHash",0,n,0,n,n,n],[0,57,"Semicolon",85,";",186,"VK_OEM_1",";","OEM_1"],[0,58,"Quote",95,"'",222,"VK_OEM_7","'","OEM_7"],[0,59,"Backquote",91,"`",192,"VK_OEM_3","`","OEM_3"],[0,60,"Comma",87,",",188,"VK_OEM_COMMA",",","OEM_COMMA"],[0,61,"Period",89,".",190,"VK_OEM_PERIOD",".","OEM_PERIOD"],[0,62,"Slash",90,"/",191,"VK_OEM_2","/","OEM_2"],[1,63,"CapsLock",8,"CapsLock",20,"VK_CAPITAL",n,n],[1,64,"F1",59,"F1",112,"VK_F1",n,n],[1,65,"F2",60,"F2",113,"VK_F2",n,n],[1,66,"F3",61,"F3",114,"VK_F3",n,n],[1,67,"F4",62,"F4",115,"VK_F4",n,n],[1,68,"F5",63,"F5",116,"VK_F5",n,n],[1,69,"F6",64,"F6",117,"VK_F6",n,n],[1,70,"F7",65,"F7",118,"VK_F7",n,n],[1,71,"F8",66,"F8",119,"VK_F8",n,n],[1,72,"F9",67,"F9",120,"VK_F9",n,n],[1,73,"F10",68,"F10",121,"VK_F10",n,n],[1,74,"F11",69,"F11",122,"VK_F11",n,n],[1,75,"F12",70,"F12",123,"VK_F12",n,n],[1,76,"PrintScreen",0,n,0,n,n,n],[1,77,"ScrollLock",84,"ScrollLock",145,"VK_SCROLL",n,n],[1,78,"Pause",7,"PauseBreak",19,"VK_PAUSE",n,n],[1,79,"Insert",19,"Insert",45,"VK_INSERT",n,n],[1,80,"Home",14,"Home",36,"VK_HOME",n,n],[1,81,"PageUp",11,"PageUp",33,"VK_PRIOR",n,n],[1,82,"Delete",20,"Delete",46,"VK_DELETE",n,n],[1,83,"End",13,"End",35,"VK_END",n,n],[1,84,"PageDown",12,"PageDown",34,"VK_NEXT",n,n],[1,85,"ArrowRight",17,"RightArrow",39,"VK_RIGHT","Right",n],[1,86,"ArrowLeft",15,"LeftArrow",37,"VK_LEFT","Left",n],[1,87,"ArrowDown",18,"DownArrow",40,"VK_DOWN","Down",n],[1,88,"ArrowUp",16,"UpArrow",38,"VK_UP","Up",n],[1,89,"NumLock",83,"NumLock",144,"VK_NUMLOCK",n,n],[1,90,"NumpadDivide",113,"NumPad_Divide",111,"VK_DIVIDE",n,n],[1,91,"NumpadMultiply",108,"NumPad_Multiply",106,"VK_MULTIPLY",n,n],[1,92,"NumpadSubtract",111,"NumPad_Subtract",109,"VK_SUBTRACT",n,n],[1,93,"NumpadAdd",109,"NumPad_Add",107,"VK_ADD",n,n],[1,94,"NumpadEnter",3,n,0,n,n,n],[1,95,"Numpad1",99,"NumPad1",97,"VK_NUMPAD1",n,n],[1,96,"Numpad2",100,"NumPad2",98,"VK_NUMPAD2",n,n],[1,97,"Numpad3",101,"NumPad3",99,"VK_NUMPAD3",n,n],[1,98,"Numpad4",102,"NumPad4",100,"VK_NUMPAD4",n,n],[1,99,"Numpad5",103,"NumPad5",101,"VK_NUMPAD5",n,n],[1,100,"Numpad6",104,"NumPad6",102,"VK_NUMPAD6",n,n],[1,101,"Numpad7",105,"NumPad7",103,"VK_NUMPAD7",n,n],[1,102,"Numpad8",106,"NumPad8",104,"VK_NUMPAD8",n,n],[1,103,"Numpad9",107,"NumPad9",105,"VK_NUMPAD9",n,n],[1,104,"Numpad0",98,"NumPad0",96,"VK_NUMPAD0",n,n],[1,105,"NumpadDecimal",112,"NumPad_Decimal",110,"VK_DECIMAL",n,n],[0,106,"IntlBackslash",97,"OEM_102",226,"VK_OEM_102",n,n],[1,107,"ContextMenu",58,"ContextMenu",93,n,n,n],[1,108,"Power",0,n,0,n,n,n],[1,109,"NumpadEqual",0,n,0,n,n,n],[1,110,"F13",71,"F13",124,"VK_F13",n,n],[1,111,"F14",72,"F14",125,"VK_F14",n,n],[1,112,"F15",73,"F15",126,"VK_F15",n,n],[1,113,"F16",74,"F16",127,"VK_F16",n,n],[1,114,"F17",75,"F17",128,"VK_F17",n,n],[1,115,"F18",76,"F18",129,"VK_F18",n,n],[1,116,"F19",77,"F19",130,"VK_F19",n,n],[1,117,"F20",78,"F20",131,"VK_F20",n,n],[1,118,"F21",79,"F21",132,"VK_F21",n,n],[1,119,"F22",80,"F22",133,"VK_F22",n,n],[1,120,"F23",81,"F23",134,"VK_F23",n,n],[1,121,"F24",82,"F24",135,"VK_F24",n,n],[1,122,"Open",0,n,0,n,n,n],[1,123,"Help",0,n,0,n,n,n],[1,124,"Select",0,n,0,n,n,n],[1,125,"Again",0,n,0,n,n,n],[1,126,"Undo",0,n,0,n,n,n],[1,127,"Cut",0,n,0,n,n,n],[1,128,"Copy",0,n,0,n,n,n],[1,129,"Paste",0,n,0,n,n,n],[1,130,"Find",0,n,0,n,n,n],[1,131,"AudioVolumeMute",117,"AudioVolumeMute",173,"VK_VOLUME_MUTE",n,n],[1,132,"AudioVolumeUp",118,"AudioVolumeUp",175,"VK_VOLUME_UP",n,n],[1,133,"AudioVolumeDown",119,"AudioVolumeDown",174,"VK_VOLUME_DOWN",n,n],[1,134,"NumpadComma",110,"NumPad_Separator",108,"VK_SEPARATOR",n,n],[0,135,"IntlRo",115,"ABNT_C1",193,"VK_ABNT_C1",n,n],[1,136,"KanaMode",0,n,0,n,n,n],[0,137,"IntlYen",0,n,0,n,n,n],[1,138,"Convert",0,n,0,n,n,n],[1,139,"NonConvert",0,n,0,n,n,n],[1,140,"Lang1",0,n,0,n,n,n],[1,141,"Lang2",0,n,0,n,n,n],[1,142,"Lang3",0,n,0,n,n,n],[1,143,"Lang4",0,n,0,n,n,n],[1,144,"Lang5",0,n,0,n,n,n],[1,145,"Abort",0,n,0,n,n,n],[1,146,"Props",0,n,0,n,n,n],[1,147,"NumpadParenLeft",0,n,0,n,n,n],[1,148,"NumpadParenRight",0,n,0,n,n,n],[1,149,"NumpadBackspace",0,n,0,n,n,n],[1,150,"NumpadMemoryStore",0,n,0,n,n,n],[1,151,"NumpadMemoryRecall",0,n,0,n,n,n],[1,152,"NumpadMemoryClear",0,n,0,n,n,n],[1,153,"NumpadMemoryAdd",0,n,0,n,n,n],[1,154,"NumpadMemorySubtract",0,n,0,n,n,n],[1,155,"NumpadClear",131,"Clear",12,"VK_CLEAR",n,n],[1,156,"NumpadClearEntry",0,n,0,n,n,n],[1,0,n,5,"Ctrl",17,"VK_CONTROL",n,n],[1,0,n,4,"Shift",16,"VK_SHIFT",n,n],[1,0,n,6,"Alt",18,"VK_MENU",n,n],[1,0,n,57,"Meta",91,"VK_COMMAND",n,n],[1,157,"ControlLeft",5,n,0,"VK_LCONTROL",n,n],[1,158,"ShiftLeft",4,n,0,"VK_LSHIFT",n,n],[1,159,"AltLeft",6,n,0,"VK_LMENU",n,n],[1,160,"MetaLeft",57,n,0,"VK_LWIN",n,n],[1,161,"ControlRight",5,n,0,"VK_RCONTROL",n,n],[1,162,"ShiftRight",4,n,0,"VK_RSHIFT",n,n],[1,163,"AltRight",6,n,0,"VK_RMENU",n,n],[1,164,"MetaRight",57,n,0,"VK_RWIN",n,n],[1,165,"BrightnessUp",0,n,0,n,n,n],[1,166,"BrightnessDown",0,n,0,n,n,n],[1,167,"MediaPlay",0,n,0,n,n,n],[1,168,"MediaRecord",0,n,0,n,n,n],[1,169,"MediaFastForward",0,n,0,n,n,n],[1,170,"MediaRewind",0,n,0,n,n,n],[1,171,"MediaTrackNext",124,"MediaTrackNext",176,"VK_MEDIA_NEXT_TRACK",n,n],[1,172,"MediaTrackPrevious",125,"MediaTrackPrevious",177,"VK_MEDIA_PREV_TRACK",n,n],[1,173,"MediaStop",126,"MediaStop",178,"VK_MEDIA_STOP",n,n],[1,174,"Eject",0,n,0,n,n,n],[1,175,"MediaPlayPause",127,"MediaPlayPause",179,"VK_MEDIA_PLAY_PAUSE",n,n],[1,176,"MediaSelect",128,"LaunchMediaPlayer",181,"VK_MEDIA_LAUNCH_MEDIA_SELECT",n,n],[1,177,"LaunchMail",129,"LaunchMail",180,"VK_MEDIA_LAUNCH_MAIL",n,n],[1,178,"LaunchApp2",130,"LaunchApp2",183,"VK_MEDIA_LAUNCH_APP2",n,n],[1,179,"LaunchApp1",0,n,0,"VK_MEDIA_LAUNCH_APP1",n,n],[1,180,"SelectTask",0,n,0,n,n,n],[1,181,"LaunchScreenSaver",0,n,0,n,n,n],[1,182,"BrowserSearch",120,"BrowserSearch",170,"VK_BROWSER_SEARCH",n,n],[1,183,"BrowserHome",121,"BrowserHome",172,"VK_BROWSER_HOME",n,n],[1,184,"BrowserBack",122,"BrowserBack",166,"VK_BROWSER_BACK",n,n],[1,185,"BrowserForward",123,"BrowserForward",167,"VK_BROWSER_FORWARD",n,n],[1,186,"BrowserStop",0,n,0,"VK_BROWSER_STOP",n,n],[1,187,"BrowserRefresh",0,n,0,"VK_BROWSER_REFRESH",n,n],[1,188,"BrowserFavorites",0,n,0,"VK_BROWSER_FAVORITES",n,n],[1,189,"ZoomToggle",0,n,0,n,n,n],[1,190,"MailReply",0,n,0,n,n,n],[1,191,"MailForward",0,n,0,n,n,n],[1,192,"MailSend",0,n,0,n,n,n],[1,0,n,114,"KeyInComposition",229,n,n,n],[1,0,n,116,"ABNT_C2",194,"VK_ABNT_C2",n,n],[1,0,n,96,"OEM_8",223,"VK_OEM_8",n,n],[1,0,n,0,n,0,"VK_KANA",n,n],[1,0,n,0,n,0,"VK_HANGUL",n,n],[1,0,n,0,n,0,"VK_JUNJA",n,n],[1,0,n,0,n,0,"VK_FINAL",n,n],[1,0,n,0,n,0,"VK_HANJA",n,n],[1,0,n,0,n,0,"VK_KANJI",n,n],[1,0,n,0,n,0,"VK_CONVERT",n,n],[1,0,n,0,n,0,"VK_NONCONVERT",n,n],[1,0,n,0,n,0,"VK_ACCEPT",n,n],[1,0,n,0,n,0,"VK_MODECHANGE",n,n],[1,0,n,0,n,0,"VK_SELECT",n,n],[1,0,n,0,n,0,"VK_PRINT",n,n],[1,0,n,0,n,0,"VK_EXECUTE",n,n],[1,0,n,0,n,0,"VK_SNAPSHOT",n,n],[1,0,n,0,n,0,"VK_HELP",n,n],[1,0,n,0,n,0,"VK_APPS",n,n],[1,0,n,0,n,0,"VK_PROCESSKEY",n,n],[1,0,n,0,n,0,"VK_PACKET",n,n],[1,0,n,0,n,0,"VK_DBE_SBCSCHAR",n,n],[1,0,n,0,n,0,"VK_DBE_DBCSCHAR",n,n],[1,0,n,0,n,0,"VK_ATTN",n,n],[1,0,n,0,n,0,"VK_CRSEL",n,n],[1,0,n,0,n,0,"VK_EXSEL",n,n],[1,0,n,0,n,0,"VK_EREOF",n,n],[1,0,n,0,n,0,"VK_PLAY",n,n],[1,0,n,0,n,0,"VK_ZOOM",n,n],[1,0,n,0,n,0,"VK_NONAME",n,n],[1,0,n,0,n,0,"VK_PA1",n,n],[1,0,n,0,n,0,"VK_OEM_CLEAR",n,n]],t=[],i=[];for(const s of e){const[r,o,a,l,c,u,h,d,f]=s;if(i[o]||(i[o]=!0,OBe[a]=o,FBe[a.toLowerCase()]=o,r&&(Rj[o]=l)),!t[l]){if(t[l]=!0,!c)throw new Error(`String representation missing for key code ${l} around scan code ${a}`);YT.define(l,c),H8.define(l,d||c),$8.define(l,f||d||c)}u&&($fe[u]=l)}})();var cf;(function(n){function e(a){return YT.keyCodeToStr(a)}n.toString=e;function t(a){return YT.strToKeyCode(a)}n.fromString=t;function i(a){return H8.keyCodeToStr(a)}n.toUserSettingsUS=i;function s(a){return $8.keyCodeToStr(a)}n.toUserSettingsGeneral=s;function r(a){return H8.strToKeyCode(a)||$8.strToKeyCode(a)}n.fromUserSettings=r;function o(a){if(a>=98&&a<=113)return null;switch(a){case 16:return"Up";case 18:return"Down";case 15:return"Left";case 17:return"Right"}return YT.keyCodeToStr(a)}n.toElectronAccelerator=o})(cf||(cf={}));function ws(n,e){const t=(e&65535)<<16>>>0;return(n|t)>>>0}function z8(n,e){if(typeof n=="number"){if(n===0)return null;const t=(n&65535)>>>0,i=(n&4294901760)>>>16;return i!==0?new h5([qD(t,e),qD(i,e)]):new h5([qD(t,e)])}else{const t=[];for(let i=0;i<n.length;i++)t.push(qD(n[i],e));return new h5(t)}}function qD(n,e){const t=!!(n&2048),i=!!(n&256),s=e===2?i:t,r=!!(n&1024),o=!!(n&512),a=e===2?t:i,l=n&255;return new Yf(s,r,o,a,l)}class Yf{constructor(e,t,i,s,r){this.ctrlKey=e,this.shiftKey=t,this.altKey=i,this.metaKey=s,this.keyCode=r}equals(e){return e instanceof Yf&&this.ctrlKey===e.ctrlKey&&this.shiftKey===e.shiftKey&&this.altKey===e.altKey&&this.metaKey===e.metaKey&&this.keyCode===e.keyCode}isModifierKey(){return this.keyCode===0||this.keyCode===5||this.keyCode===57||this.keyCode===6||this.keyCode===4}isDuplicateModifierCase(){return this.ctrlKey&&this.keyCode===5||this.shiftKey&&this.keyCode===4||this.altKey&&this.keyCode===6||this.metaKey&&this.keyCode===57}}class h5{constructor(e){if(e.length===0)throw Tl("chords");this.chords=e}}class BBe{constructor(e,t,i,s,r,o){this.ctrlKey=e,this.shiftKey=t,this.altKey=i,this.metaKey=s,this.keyLabel=r,this.keyAriaLabel=o}}class WBe{}function VBe(n){if(n.charCode){const t=String.fromCharCode(n.charCode).toUpperCase();return cf.fromString(t)}const e=n.keyCode;if(e===3)return 7;if(Ol)switch(e){case 59:return 85;case 60:if(Kr)return 97;break;case 61:return 86;case 107:return 109;case 109:return 111;case 173:return 88;case 224:if(Gt)return 57;break}else if(n_){if(Gt&&e===93)return 57;if(!Gt&&e===92)return 57}return $fe[e]||0}const HBe=Gt?256:2048,$Be=512,zBe=1024,UBe=Gt?2048:256;class Ki{constructor(e){this._standardKeyboardEventBrand=!0;const t=e;this.browserEvent=t,this.target=t.target,this.ctrlKey=t.ctrlKey,this.shiftKey=t.shiftKey,this.altKey=t.altKey,this.metaKey=t.metaKey,this.altGraphKey=t.getModifierState("AltGraph"),this.keyCode=VBe(t),this.code=t.code,this.ctrlKey=this.ctrlKey||this.keyCode===5,this.altKey=this.altKey||this.keyCode===6,this.shiftKey=this.shiftKey||this.keyCode===4,this.metaKey=this.metaKey||this.keyCode===57,this._asKeybinding=this._computeKeybinding(),this._asKeyCodeChord=this._computeKeyCodeChord()}preventDefault(){this.browserEvent&&this.browserEvent.preventDefault&&this.browserEvent.preventDefault()}stopPropagation(){this.browserEvent&&this.browserEvent.stopPropagation&&this.browserEvent.stopPropagation()}toKeyCodeChord(){return this._asKeyCodeChord}equals(e){return this._asKeybinding===e}_computeKeybinding(){let e=0;this.keyCode!==5&&this.keyCode!==4&&this.keyCode!==6&&this.keyCode!==57&&(e=this.keyCode);let t=0;return this.ctrlKey&&(t|=HBe),this.altKey&&(t|=$Be),this.shiftKey&&(t|=zBe),this.metaKey&&(t|=UBe),t|=e,t}_computeKeyCodeChord(){let e=0;return this.keyCode!==5&&this.keyCode!==4&&this.keyCode!==6&&this.keyCode!==57&&(e=this.keyCode),new Yf(this.ctrlKey,this.shiftKey,this.altKey,this.metaKey,e)}}const uJ=new WeakMap;function jBe(n){if(!n.parent||n.parent===n)return null;try{const e=n.location,t=n.parent.location;if(e.origin!=="null"&&t.origin!=="null"&&e.origin!==t.origin)return null}catch{return null}return n.parent}class qBe{static getSameOriginWindowChain(e){let t=uJ.get(e);if(!t){t=[],uJ.set(e,t);let i=e,s;do s=jBe(i),s?t.push({window:new WeakRef(i),iframeElement:i.frameElement||null}):t.push({window:new WeakRef(i),iframeElement:null}),i=s;while(i)}return t.slice(0)}static getPositionOfChildWindowRelativeToAncestorWindow(e,t){var i,s;if(!t||e===t)return{top:0,left:0};let r=0,o=0;const a=this.getSameOriginWindowChain(e);for(const l of a){const c=l.window.deref();if(r+=(i=c==null?void 0:c.scrollY)!==null&&i!==void 0?i:0,o+=(s=c==null?void 0:c.scrollX)!==null&&s!==void 0?s:0,c===t||!l.iframeElement)break;const u=l.iframeElement.getBoundingClientRect();r+=u.top,o+=u.left}return{top:r,left:o}}}class ac{constructor(e,t){this.timestamp=Date.now(),this.browserEvent=t,this.leftButton=t.button===0,this.middleButton=t.button===1,this.rightButton=t.button===2,this.buttons=t.buttons,this.target=t.target,this.detail=t.detail||1,t.type==="dblclick"&&(this.detail=2),this.ctrlKey=t.ctrlKey,this.shiftKey=t.shiftKey,this.altKey=t.altKey,this.metaKey=t.metaKey,typeof t.pageX=="number"?(this.posx=t.pageX,this.posy=t.pageY):(this.posx=t.clientX+this.target.ownerDocument.body.scrollLeft+this.target.ownerDocument.documentElement.scrollLeft,this.posy=t.clientY+this.target.ownerDocument.body.scrollTop+this.target.ownerDocument.documentElement.scrollTop);const i=qBe.getPositionOfChildWindowRelativeToAncestorWindow(e,t.view);this.posx-=i.left,this.posy-=i.top}preventDefault(){this.browserEvent.preventDefault()}stopPropagation(){this.browserEvent.stopPropagation()}}class D_{constructor(e,t=0,i=0){if(this.browserEvent=e||null,this.target=e?e.target||e.targetNode||e.srcElement:null,this.deltaY=i,this.deltaX=t,e){const s=e,r=e;if(typeof s.wheelDeltaY<"u")this.deltaY=s.wheelDeltaY/120;else if(typeof r.VERTICAL_AXIS<"u"&&r.axis===r.VERTICAL_AXIS)this.deltaY=-r.detail/3;else if(e.type==="wheel"){const o=e;o.deltaMode===o.DOM_DELTA_LINE?Ol&&!Gt?this.deltaY=-e.deltaY/3:this.deltaY=-e.deltaY:this.deltaY=-e.deltaY/40}if(typeof s.wheelDeltaX<"u")Gf&&yr?this.deltaX=-(s.wheelDeltaX/120):this.deltaX=s.wheelDeltaX/120;else if(typeof r.HORIZONTAL_AXIS<"u"&&r.axis===r.HORIZONTAL_AXIS)this.deltaX=-e.detail/3;else if(e.type==="wheel"){const o=e;o.deltaMode===o.DOM_DELTA_LINE?Ol&&!Gt?this.deltaX=-e.deltaX/3:this.deltaX=-e.deltaX:this.deltaX=-e.deltaX/40}this.deltaY===0&&this.deltaX===0&&e.wheelDelta&&(this.deltaY=e.wheelDelta/120)}}preventDefault(){var e;(e=this.browserEvent)===null||e===void 0||e.preventDefault()}stopPropagation(){var e;(e=this.browserEvent)===null||e===void 0||e.stopPropagation()}}const zfe=Object.freeze(function(n,e){const t=setTimeout(n.bind(e),0);return{dispose(){clearTimeout(t)}}});var Ft;(function(n){function e(t){return t===n.None||t===n.Cancelled||t instanceof ZT?!0:!t||typeof t!="object"?!1:typeof t.isCancellationRequested=="boolean"&&typeof t.onCancellationRequested=="function"}n.isCancellationToken=e,n.None=Object.freeze({isCancellationRequested:!1,onCancellationRequested:Ve.None}),n.Cancelled=Object.freeze({isCancellationRequested:!0,onCancellationRequested:zfe})})(Ft||(Ft={}));class ZT{constructor(){this._isCancelled=!1,this._emitter=null}cancel(){this._isCancelled||(this._isCancelled=!0,this._emitter&&(this._emitter.fire(void 0),this.dispose()))}get isCancellationRequested(){return this._isCancelled}get onCancellationRequested(){return this._isCancelled?zfe:(this._emitter||(this._emitter=new ue),this._emitter.event)}dispose(){this._emitter&&(this._emitter.dispose(),this._emitter=null)}}let es=class{constructor(e){this._token=void 0,this._parentListener=void 0,this._parentListener=e&&e.onCancellationRequested(this.cancel,this)}get token(){return this._token||(this._token=new ZT),this._token}cancel(){this._token?this._token instanceof ZT&&this._token.cancel():this._token=Ft.Cancelled}dispose(e=!1){var t;e&&this.cancel(),(t=this._parentListener)===null||t===void 0||t.dispose(),this._token?this._token instanceof ZT&&this._token.dispose():this._token=Ft.None}};const Ufe=Symbol("MicrotaskDelay");function U8(n){return!!n&&typeof n.then=="function"}function Ns(n){const e=new es,t=n(e.token),i=new Promise((s,r)=>{const o=e.token.onCancellationRequested(()=>{o.dispose(),e.dispose(),r(new Em)});Promise.resolve(t).then(a=>{o.dispose(),e.dispose(),s(a)},a=>{o.dispose(),e.dispose(),r(a)})});return new class{cancel(){e.cancel()}then(s,r){return i.then(s,r)}catch(s){return this.then(void 0,s)}finally(s){return i.finally(s)}}}function lO(n,e,t){return new Promise((i,s)=>{const r=e.onCancellationRequested(()=>{r.dispose(),i(t)});n.then(i,s).finally(()=>r.dispose())})}class KBe{constructor(){this.isDisposed=!1,this.activePromise=null,this.queuedPromise=null,this.queuedPromiseFactory=null}queue(e){if(this.isDisposed)return Promise.reject(new Error("Throttler is disposed"));if(this.activePromise){if(this.queuedPromiseFactory=e,!this.queuedPromise){const t=()=>{if(this.queuedPromise=null,this.isDisposed)return;const i=this.queue(this.queuedPromiseFactory);return this.queuedPromiseFactory=null,i};this.queuedPromise=new Promise(i=>{this.activePromise.then(t,t).then(i)})}return new Promise((t,i)=>{this.queuedPromise.then(t,i)})}return this.activePromise=e(),new Promise((t,i)=>{this.activePromise.then(s=>{this.activePromise=null,t(s)},s=>{this.activePromise=null,i(s)})})}dispose(){this.isDisposed=!0}}const GBe=(n,e)=>{let t=!0;const i=setTimeout(()=>{t=!1,e()},n);return{isTriggered:()=>t,dispose:()=>{clearTimeout(i),t=!1}}},YBe=n=>{let e=!0;return queueMicrotask(()=>{e&&(e=!1,n())}),{isTriggered:()=>e,dispose:()=>{e=!1}}};class Sc{constructor(e){this.defaultDelay=e,this.deferred=null,this.completionPromise=null,this.doResolve=null,this.doReject=null,this.task=null}trigger(e,t=this.defaultDelay){this.task=e,this.cancelTimeout(),this.completionPromise||(this.completionPromise=new Promise((s,r)=>{this.doResolve=s,this.doReject=r}).then(()=>{if(this.completionPromise=null,this.doResolve=null,this.task){const s=this.task;return this.task=null,s()}}));const i=()=>{var s;this.deferred=null,(s=this.doResolve)===null||s===void 0||s.call(this,null)};return this.deferred=t===Ufe?YBe(i):GBe(t,i),this.completionPromise}isTriggered(){var e;return!!(!((e=this.deferred)===null||e===void 0)&&e.isTriggered())}cancel(){var e;this.cancelTimeout(),this.completionPromise&&((e=this.doReject)===null||e===void 0||e.call(this,new Em),this.completionPromise=null)}cancelTimeout(){var e;(e=this.deferred)===null||e===void 0||e.dispose(),this.deferred=null}dispose(){this.cancel()}}class jfe{constructor(e){this.delayer=new Sc(e),this.throttler=new KBe}trigger(e,t){return this.delayer.trigger(()=>this.throttler.queue(e),t)}cancel(){this.delayer.cancel()}dispose(){this.delayer.dispose(),this.throttler.dispose()}}function Kp(n,e){return e?new Promise((t,i)=>{const s=setTimeout(()=>{r.dispose(),t()},n),r=e.onCancellationRequested(()=>{clearTimeout(s),r.dispose(),i(new Em)})}):Ns(t=>Kp(n,t))}function Gp(n,e=0,t){const i=setTimeout(()=>{n(),t&&s.dispose()},e),s=st(()=>{clearTimeout(i),t==null||t.deleteAndLeak(s)});return t==null||t.add(s),s}function Mj(n,e=i=>!!i,t=null){let i=0;const s=n.length,r=()=>{if(i>=s)return Promise.resolve(t);const o=n[i++];return Promise.resolve(o()).then(l=>e(l)?Promise.resolve(l):r())};return r()}class Ic{constructor(e,t){this._token=-1,typeof e=="function"&&typeof t=="number"&&this.setIfNotSet(e,t)}dispose(){this.cancel()}cancel(){this._token!==-1&&(clearTimeout(this._token),this._token=-1)}cancelAndSet(e,t){this.cancel(),this._token=setTimeout(()=>{this._token=-1,e()},t)}setIfNotSet(e,t){this._token===-1&&(this._token=setTimeout(()=>{this._token=-1,e()},t))}}class Oj{constructor(){this.disposable=void 0}cancel(){var e;(e=this.disposable)===null||e===void 0||e.dispose(),this.disposable=void 0}cancelAndSet(e,t,i=globalThis){this.cancel();const s=i.setInterval(()=>{e()},t);this.disposable=st(()=>{i.clearInterval(s),this.disposable=void 0})}dispose(){this.cancel()}}class Ei{constructor(e,t){this.timeoutToken=-1,this.runner=e,this.timeout=t,this.timeoutHandler=this.onTimeout.bind(this)}dispose(){this.cancel(),this.runner=null}cancel(){this.isScheduled()&&(clearTimeout(this.timeoutToken),this.timeoutToken=-1)}schedule(e=this.timeout){this.cancel(),this.timeoutToken=setTimeout(this.timeoutHandler,e)}get delay(){return this.timeout}set delay(e){this.timeout=e}isScheduled(){return this.timeoutToken!==-1}onTimeout(){this.timeoutToken=-1,this.runner&&this.doRun()}doRun(){var e;(e=this.runner)===null||e===void 0||e.call(this)}}let qfe,ZS;(function(){typeof globalThis.requestIdleCallback!="function"||typeof globalThis.cancelIdleCallback!="function"?ZS=(n,e)=>{Wfe(()=>{if(t)return;const i=Date.now()+15;e(Object.freeze({didTimeout:!0,timeRemaining(){return Math.max(0,i-Date.now())}}))});let t=!1;return{dispose(){t||(t=!0)}}}:ZS=(n,e,t)=>{const i=n.requestIdleCallback(e,typeof t=="number"?{timeout:t}:void 0);let s=!1;return{dispose(){s||(s=!0,n.cancelIdleCallback(i))}}},qfe=n=>ZS(globalThis,n)})();class Kfe{constructor(e,t){this._didRun=!1,this._executor=()=>{try{this._value=t()}catch(i){this._error=i}finally{this._didRun=!0}},this._handle=ZS(e,()=>this._executor())}dispose(){this._handle.dispose()}get value(){if(this._didRun||(this._handle.dispose(),this._executor()),this._error)throw this._error;return this._value}get isInitialized(){return this._didRun}}class ZBe extends Kfe{constructor(e){super(globalThis,e)}}class cO{get isRejected(){var e;return((e=this.outcome)===null||e===void 0?void 0:e.outcome)===1}get isSettled(){return!!this.outcome}constructor(){this.p=new Promise((e,t)=>{this.completeCallback=e,this.errorCallback=t})}complete(e){return new Promise(t=>{this.completeCallback(e),this.outcome={outcome:0,value:e},t()})}error(e){return new Promise(t=>{this.errorCallback(e),this.outcome={outcome:1,value:e},t()})}cancel(){return this.error(new Em)}}var j8;(function(n){async function e(i){let s;const r=await Promise.all(i.map(o=>o.then(a=>a,a=>{s||(s=a)})));if(typeof s<"u")throw s;return r}n.settled=e;function t(i){return new Promise(async(s,r)=>{try{await i(s,r)}catch(o){r(o)}})}n.withAsyncBody=t})(j8||(j8={}));class rs{static fromArray(e){return new rs(t=>{t.emitMany(e)})}static fromPromise(e){return new rs(async t=>{t.emitMany(await e)})}static fromPromises(e){return new rs(async t=>{await Promise.all(e.map(async i=>t.emitOne(await i)))})}static merge(e){return new rs(async t=>{await Promise.all(e.map(async i=>{for await(const s of i)t.emitOne(s)}))})}constructor(e){this._state=0,this._results=[],this._error=null,this._onStateChanged=new ue,queueMicrotask(async()=>{const t={emitOne:i=>this.emitOne(i),emitMany:i=>this.emitMany(i),reject:i=>this.reject(i)};try{await Promise.resolve(e(t)),this.resolve()}catch(i){this.reject(i)}finally{t.emitOne=void 0,t.emitMany=void 0,t.reject=void 0}})}[Symbol.asyncIterator](){let e=0;return{next:async()=>{do{if(this._state===2)throw this._error;if(e<this._results.length)return{done:!1,value:this._results[e++]};if(this._state===1)return{done:!0,value:void 0};await Ve.toPromise(this._onStateChanged.event)}while(!0)}}}static map(e,t){return new rs(async i=>{for await(const s of e)i.emitOne(t(s))})}map(e){return rs.map(this,e)}static filter(e,t){return new rs(async i=>{for await(const s of e)t(s)&&i.emitOne(s)})}filter(e){return rs.filter(this,e)}static coalesce(e){return rs.filter(e,t=>!!t)}coalesce(){return rs.coalesce(this)}static async toPromise(e){const t=[];for await(const i of e)t.push(i);return t}toPromise(){return rs.toPromise(this)}emitOne(e){this._state===0&&(this._results.push(e),this._onStateChanged.fire())}emitMany(e){this._state===0&&(this._results=this._results.concat(e),this._onStateChanged.fire())}resolve(){this._state===0&&(this._state=1,this._onStateChanged.fire())}reject(e){this._state===0&&(this._state=2,this._error=e,this._onStateChanged.fire())}}rs.EMPTY=rs.fromArray([]);class XBe extends rs{constructor(e,t){super(t),this._source=e}cancel(){this._source.cancel()}}function QBe(n){const e=new es,t=n(e.token);return new XBe(e,async i=>{const s=e.token.onCancellationRequested(()=>{s.dispose(),e.dispose(),i.reject(new Em)});try{for await(const r of t){if(e.token.isCancellationRequested)return;i.emitOne(r)}s.dispose(),e.dispose()}catch(r){s.dispose(),e.dispose(),i.reject(r)}})}/*! @license DOMPurify 3.0.5 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.0.5/LICENSE */const{entries:Gfe,setPrototypeOf:hJ,isFrozen:JBe,getPrototypeOf:e8e,getOwnPropertyDescriptor:t8e}=Object;let{freeze:ca,seal:Iu,create:i8e}=Object,{apply:q8,construct:K8}=typeof Reflect<"u"&&Reflect;q8||(q8=function(e,t,i){return e.apply(t,i)});ca||(ca=function(e){return e});Iu||(Iu=function(e){return e});K8||(K8=function(e,t){return new e(...t)});const n8e=kc(Array.prototype.forEach),dJ=kc(Array.prototype.pop),ww=kc(Array.prototype.push),XT=kc(String.prototype.toLowerCase),d5=kc(String.prototype.toString),s8e=kc(String.prototype.match),Hc=kc(String.prototype.replace),r8e=kc(String.prototype.indexOf),o8e=kc(String.prototype.trim),al=kc(RegExp.prototype.test),Sw=a8e(TypeError);function kc(n){return function(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),s=1;s<t;s++)i[s-1]=arguments[s];return q8(n,e,i)}}function a8e(n){return function(){for(var e=arguments.length,t=new Array(e),i=0;i<e;i++)t[i]=arguments[i];return K8(n,t)}}function ki(n,e,t){var i;t=(i=t)!==null&&i!==void 0?i:XT,hJ&&hJ(n,null);let s=e.length;for(;s--;){let r=e[s];if(typeof r=="string"){const o=t(r);o!==r&&(JBe(e)||(e[s]=o),r=o)}n[r]=!0}return n}function Zv(n){const e=i8e(null);for(const[t,i]of Gfe(n))e[t]=i;return e}function KD(n,e){for(;n!==null;){const i=t8e(n,e);if(i){if(i.get)return kc(i.get);if(typeof i.value=="function")return kc(i.value)}n=e8e(n)}function t(i){return console.warn("fallback value for",i),null}return t}const fJ=ca(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","section","select","shadow","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),f5=ca(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","filter","font","g","glyph","glyphref","hkern","image","line","lineargradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),g5=ca(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),l8e=ca(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),p5=ca(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),c8e=ca(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),gJ=ca(["#text"]),pJ=ca(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","face","for","headers","height","hidden","high","href","hreflang","id","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","pattern","placeholder","playsinline","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","xmlns","slot"]),m5=ca(["accent-height","accumulate","additive","alignment-baseline","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),mJ=ca(["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),GD=ca(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),u8e=Iu(/\{\{[\w\W]*|[\w\W]*\}\}/gm),h8e=Iu(/<%[\w\W]*|[\w\W]*%>/gm),d8e=Iu(/\${[\w\W]*}/gm),f8e=Iu(/^data-[\-\w.\u00B7-\uFFFF]/),g8e=Iu(/^aria-[\-\w]+$/),Yfe=Iu(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),p8e=Iu(/^(?:\w+script|data):/i),m8e=Iu(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),Zfe=Iu(/^html$/i);var _J=Object.freeze({__proto__:null,MUSTACHE_EXPR:u8e,ERB_EXPR:h8e,TMPLIT_EXPR:d8e,DATA_ATTR:f8e,ARIA_ATTR:g8e,IS_ALLOWED_URI:Yfe,IS_SCRIPT_OR_DATA:p8e,ATTR_WHITESPACE:m8e,DOCTYPE_NAME:Zfe});const _8e=()=>typeof window>"u"?null:window,v8e=function(e,t){if(typeof e!="object"||typeof e.createPolicy!="function")return null;let i=null;const s="data-tt-policy-suffix";t&&t.hasAttribute(s)&&(i=t.getAttribute(s));const r="dompurify"+(i?"#"+i:"");try{return e.createPolicy(r,{createHTML(o){return o},createScriptURL(o){return o}})}catch{return console.warn("TrustedTypes policy "+r+" could not be created."),null}};function Xfe(){let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:_8e();const e=It=>Xfe(It);if(e.version="3.0.5",e.removed=[],!n||!n.document||n.document.nodeType!==9)return e.isSupported=!1,e;const t=n.document,i=t.currentScript;let{document:s}=n;const{DocumentFragment:r,HTMLTemplateElement:o,Node:a,Element:l,NodeFilter:c,NamedNodeMap:u=n.NamedNodeMap||n.MozNamedAttrMap,HTMLFormElement:h,DOMParser:d,trustedTypes:f}=n,g=l.prototype,p=KD(g,"cloneNode"),m=KD(g,"nextSibling"),_=KD(g,"childNodes"),b=KD(g,"parentNode");if(typeof o=="function"){const It=s.createElement("template");It.content&&It.content.ownerDocument&&(s=It.content.ownerDocument)}let y,w="";const{implementation:S,createNodeIterator:E,createDocumentFragment:L,getElementsByTagName:k}=s,{importNode:x}=t;let I={};e.isSupported=typeof Gfe=="function"&&typeof b=="function"&&S&&S.createHTMLDocument!==void 0;const{MUSTACHE_EXPR:N,ERB_EXPR:T,TMPLIT_EXPR:P,DATA_ATTR:R,ARIA_ATTR:F,IS_SCRIPT_OR_DATA:j,ATTR_WHITESPACE:K}=_J;let{IS_ALLOWED_URI:Z}=_J,q=null;const re=ki({},[...fJ,...f5,...g5,...p5,...gJ]);let G=null;const W=ki({},[...pJ,...m5,...mJ,...GD]);let Y=Object.seal(Object.create(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),X=null,z=null,le=!0,J=!0,be=!1,fe=!0,ge=!1,se=!1,H=!1,te=!1,ce=!1,ve=!1,Ee=!1,De=!0,Fe=!1;const Oe="user-content-";let oe=!0,ee=!1,ae={},O=null;const V=ki({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]);let ne=null;const ie=ki({},["audio","video","img","source","image","track"]);let we=null;const Ie=ki({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),je="http://www.w3.org/1998/Math/MathML",Ye="http://www.w3.org/2000/svg",rt="http://www.w3.org/1999/xhtml";let gt=rt,ei=!1,ii=null;const et=ki({},[je,Ye,rt],d5);let mi;const Wi=["application/xhtml+xml","text/html"],Co="text/html";let oi,Bn=null;const Mc=s.createElement("form"),Oc=function(Se){return Se instanceof RegExp||Se instanceof Function},Wo=function(Se){if(!(Bn&&Bn===Se)){if((!Se||typeof Se!="object")&&(Se={}),Se=Zv(Se),mi=Wi.indexOf(Se.PARSER_MEDIA_TYPE)===-1?mi=Co:mi=Se.PARSER_MEDIA_TYPE,oi=mi==="application/xhtml+xml"?d5:XT,q="ALLOWED_TAGS"in Se?ki({},Se.ALLOWED_TAGS,oi):re,G="ALLOWED_ATTR"in Se?ki({},Se.ALLOWED_ATTR,oi):W,ii="ALLOWED_NAMESPACES"in Se?ki({},Se.ALLOWED_NAMESPACES,d5):et,we="ADD_URI_SAFE_ATTR"in Se?ki(Zv(Ie),Se.ADD_URI_SAFE_ATTR,oi):Ie,ne="ADD_DATA_URI_TAGS"in Se?ki(Zv(ie),Se.ADD_DATA_URI_TAGS,oi):ie,O="FORBID_CONTENTS"in Se?ki({},Se.FORBID_CONTENTS,oi):V,X="FORBID_TAGS"in Se?ki({},Se.FORBID_TAGS,oi):{},z="FORBID_ATTR"in Se?ki({},Se.FORBID_ATTR,oi):{},ae="USE_PROFILES"in Se?Se.USE_PROFILES:!1,le=Se.ALLOW_ARIA_ATTR!==!1,J=Se.ALLOW_DATA_ATTR!==!1,be=Se.ALLOW_UNKNOWN_PROTOCOLS||!1,fe=Se.ALLOW_SELF_CLOSE_IN_ATTR!==!1,ge=Se.SAFE_FOR_TEMPLATES||!1,se=Se.WHOLE_DOCUMENT||!1,ce=Se.RETURN_DOM||!1,ve=Se.RETURN_DOM_FRAGMENT||!1,Ee=Se.RETURN_TRUSTED_TYPE||!1,te=Se.FORCE_BODY||!1,De=Se.SANITIZE_DOM!==!1,Fe=Se.SANITIZE_NAMED_PROPS||!1,oe=Se.KEEP_CONTENT!==!1,ee=Se.IN_PLACE||!1,Z=Se.ALLOWED_URI_REGEXP||Yfe,gt=Se.NAMESPACE||rt,Y=Se.CUSTOM_ELEMENT_HANDLING||{},Se.CUSTOM_ELEMENT_HANDLING&&Oc(Se.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(Y.tagNameCheck=Se.CUSTOM_ELEMENT_HANDLING.tagNameCheck),Se.CUSTOM_ELEMENT_HANDLING&&Oc(Se.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(Y.attributeNameCheck=Se.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),Se.CUSTOM_ELEMENT_HANDLING&&typeof Se.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(Y.allowCustomizedBuiltInElements=Se.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),ge&&(J=!1),ve&&(ce=!0),ae&&(q=ki({},[...gJ]),G=[],ae.html===!0&&(ki(q,fJ),ki(G,pJ)),ae.svg===!0&&(ki(q,f5),ki(G,m5),ki(G,GD)),ae.svgFilters===!0&&(ki(q,g5),ki(G,m5),ki(G,GD)),ae.mathMl===!0&&(ki(q,p5),ki(G,mJ),ki(G,GD))),Se.ADD_TAGS&&(q===re&&(q=Zv(q)),ki(q,Se.ADD_TAGS,oi)),Se.ADD_ATTR&&(G===W&&(G=Zv(G)),ki(G,Se.ADD_ATTR,oi)),Se.ADD_URI_SAFE_ATTR&&ki(we,Se.ADD_URI_SAFE_ATTR,oi),Se.FORBID_CONTENTS&&(O===V&&(O=Zv(O)),ki(O,Se.FORBID_CONTENTS,oi)),oe&&(q["#text"]=!0),se&&ki(q,["html","head","body"]),q.table&&(ki(q,["tbody"]),delete X.tbody),Se.TRUSTED_TYPES_POLICY){if(typeof Se.TRUSTED_TYPES_POLICY.createHTML!="function")throw Sw('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof Se.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw Sw('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');y=Se.TRUSTED_TYPES_POLICY,w=y.createHTML("")}else y===void 0&&(y=v8e(f,i)),y!==null&&typeof w=="string"&&(w=y.createHTML(""));ca&&ca(Se),Bn=Se}},ql=ki({},["mi","mo","mn","ms","mtext"]),Fc=ki({},["foreignobject","desc","title","annotation-xml"]),Bc=ki({},["title","style","font","a","script"]),Gu=ki({},f5);ki(Gu,g5),ki(Gu,l8e);const Wc=ki({},p5);ki(Wc,c8e);const Hm=function(Se){let Xe=b(Se);(!Xe||!Xe.tagName)&&(Xe={namespaceURI:gt,tagName:"template"});const ht=XT(Se.tagName),rn=XT(Xe.tagName);return ii[Se.namespaceURI]?Se.namespaceURI===Ye?Xe.namespaceURI===rt?ht==="svg":Xe.namespaceURI===je?ht==="svg"&&(rn==="annotation-xml"||ql[rn]):!!Gu[ht]:Se.namespaceURI===je?Xe.namespaceURI===rt?ht==="math":Xe.namespaceURI===Ye?ht==="math"&&Fc[rn]:!!Wc[ht]:Se.namespaceURI===rt?Xe.namespaceURI===Ye&&!Fc[rn]||Xe.namespaceURI===je&&!ql[rn]?!1:!Wc[ht]&&(Bc[ht]||!Gu[ht]):!!(mi==="application/xhtml+xml"&&ii[Se.namespaceURI]):!1},ba=function(Se){ww(e.removed,{element:Se});try{Se.parentNode.removeChild(Se)}catch{Se.remove()}},Nd=function(Se,Xe){try{ww(e.removed,{attribute:Xe.getAttributeNode(Se),from:Xe})}catch{ww(e.removed,{attribute:null,from:Xe})}if(Xe.removeAttribute(Se),Se==="is"&&!G[Se])if(ce||ve)try{ba(Xe)}catch{}else try{Xe.setAttribute(Se,"")}catch{}},Ad=function(Se){let Xe,ht;if(te)Se="<remove></remove>"+Se;else{const wo=s8e(Se,/^[\r\n\t ]+/);ht=wo&&wo[0]}mi==="application/xhtml+xml"&>===rt&&(Se='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+Se+"</body></html>");const rn=y?y.createHTML(Se):Se;if(gt===rt)try{Xe=new d().parseFromString(rn,mi)}catch{}if(!Xe||!Xe.documentElement){Xe=S.createDocument(gt,"template",null);try{Xe.documentElement.innerHTML=ei?w:rn}catch{}}const Os=Xe.body||Xe.documentElement;return Se&&ht&&Os.insertBefore(s.createTextNode(ht),Os.childNodes[0]||null),gt===rt?k.call(Xe,se?"html":"body")[0]:se?Xe.documentElement:Os},dg=function(Se){return E.call(Se.ownerDocument||Se,Se,c.SHOW_ELEMENT|c.SHOW_COMMENT|c.SHOW_TEXT,null,!1)},XC=function(Se){return Se instanceof h&&(typeof Se.nodeName!="string"||typeof Se.textContent!="string"||typeof Se.removeChild!="function"||!(Se.attributes instanceof u)||typeof Se.removeAttribute!="function"||typeof Se.setAttribute!="function"||typeof Se.namespaceURI!="string"||typeof Se.insertBefore!="function"||typeof Se.hasChildNodes!="function")},fg=function(Se){return typeof a=="object"?Se instanceof a:Se&&typeof Se=="object"&&typeof Se.nodeType=="number"&&typeof Se.nodeName=="string"},ol=function(Se,Xe,ht){I[Se]&&n8e(I[Se],rn=>{rn.call(e,Xe,ht,Bn)})},$v=function(Se){let Xe;if(ol("beforeSanitizeElements",Se,null),XC(Se))return ba(Se),!0;const ht=oi(Se.nodeName);if(ol("uponSanitizeElement",Se,{tagName:ht,allowedTags:q}),Se.hasChildNodes()&&!fg(Se.firstElementChild)&&(!fg(Se.content)||!fg(Se.content.firstElementChild))&&al(/<[/\w]/g,Se.innerHTML)&&al(/<[/\w]/g,Se.textContent))return ba(Se),!0;if(!q[ht]||X[ht]){if(!X[ht]&&Uv(ht)&&(Y.tagNameCheck instanceof RegExp&&al(Y.tagNameCheck,ht)||Y.tagNameCheck instanceof Function&&Y.tagNameCheck(ht)))return!1;if(oe&&!O[ht]){const rn=b(Se)||Se.parentNode,Os=_(Se)||Se.childNodes;if(Os&&rn){const wo=Os.length;for(let cs=wo-1;cs>=0;--cs)rn.insertBefore(p(Os[cs],!0),m(Se))}}return ba(Se),!0}return Se instanceof l&&!Hm(Se)||(ht==="noscript"||ht==="noembed"||ht==="noframes")&&al(/<\/no(script|embed|frames)/i,Se.innerHTML)?(ba(Se),!0):(ge&&Se.nodeType===3&&(Xe=Se.textContent,Xe=Hc(Xe,N," "),Xe=Hc(Xe,T," "),Xe=Hc(Xe,P," "),Se.textContent!==Xe&&(ww(e.removed,{element:Se.cloneNode()}),Se.textContent=Xe)),ol("afterSanitizeElements",Se,null),!1)},zv=function(Se,Xe,ht){if(De&&(Xe==="id"||Xe==="name")&&(ht in s||ht in Mc))return!1;if(!(J&&!z[Xe]&&al(R,Xe))){if(!(le&&al(F,Xe))){if(!G[Xe]||z[Xe]){if(!(Uv(Se)&&(Y.tagNameCheck instanceof RegExp&&al(Y.tagNameCheck,Se)||Y.tagNameCheck instanceof Function&&Y.tagNameCheck(Se))&&(Y.attributeNameCheck instanceof RegExp&&al(Y.attributeNameCheck,Xe)||Y.attributeNameCheck instanceof Function&&Y.attributeNameCheck(Xe))||Xe==="is"&&Y.allowCustomizedBuiltInElements&&(Y.tagNameCheck instanceof RegExp&&al(Y.tagNameCheck,ht)||Y.tagNameCheck instanceof Function&&Y.tagNameCheck(ht))))return!1}else if(!we[Xe]){if(!al(Z,Hc(ht,K,""))){if(!((Xe==="src"||Xe==="xlink:href"||Xe==="href")&&Se!=="script"&&r8e(ht,"data:")===0&&ne[Se])){if(!(be&&!al(j,Hc(ht,K,"")))){if(ht)return!1}}}}}}return!0},Uv=function(Se){return Se.indexOf("-")>0},jv=function(Se){let Xe,ht,rn,Os;ol("beforeSanitizeAttributes",Se,null);const{attributes:wo}=Se;if(!wo)return;const cs={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:G};for(Os=wo.length;Os--;){Xe=wo[Os];const{name:Kl,namespaceURI:JC}=Xe;if(ht=Kl==="value"?Xe.value:o8e(Xe.value),rn=oi(Kl),cs.attrName=rn,cs.attrValue=ht,cs.keepAttr=!0,cs.forceKeepAttr=void 0,ol("uponSanitizeAttribute",Se,cs),ht=cs.attrValue,cs.forceKeepAttr||(Nd(Kl,Se),!cs.keepAttr))continue;if(!fe&&al(/\/>/i,ht)){Nd(Kl,Se);continue}ge&&(ht=Hc(ht,N," "),ht=Hc(ht,T," "),ht=Hc(ht,P," "));const dD=oi(Se.nodeName);if(zv(dD,rn,ht)){if(Fe&&(rn==="id"||rn==="name")&&(Nd(Kl,Se),ht=Oe+ht),y&&typeof f=="object"&&typeof f.getAttributeType=="function"&&!JC)switch(f.getAttributeType(dD,rn)){case"TrustedHTML":{ht=y.createHTML(ht);break}case"TrustedScriptURL":{ht=y.createScriptURL(ht);break}}try{JC?Se.setAttributeNS(JC,Kl,ht):Se.setAttribute(Kl,ht),dJ(e.removed)}catch{}}}ol("afterSanitizeAttributes",Se,null)},QC=function It(Se){let Xe;const ht=dg(Se);for(ol("beforeSanitizeShadowDOM",Se,null);Xe=ht.nextNode();)ol("uponSanitizeShadowNode",Xe,null),!$v(Xe)&&(Xe.content instanceof r&&It(Xe.content),jv(Xe));ol("afterSanitizeShadowDOM",Se,null)};return e.sanitize=function(It){let Se=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},Xe,ht,rn,Os;if(ei=!It,ei&&(It="<!-->"),typeof It!="string"&&!fg(It))if(typeof It.toString=="function"){if(It=It.toString(),typeof It!="string")throw Sw("dirty is not a string, aborting")}else throw Sw("toString is not a function");if(!e.isSupported)return It;if(H||Wo(Se),e.removed=[],typeof It=="string"&&(ee=!1),ee){if(It.nodeName){const Kl=oi(It.nodeName);if(!q[Kl]||X[Kl])throw Sw("root node is forbidden and cannot be sanitized in-place")}}else if(It instanceof a)Xe=Ad("<!---->"),ht=Xe.ownerDocument.importNode(It,!0),ht.nodeType===1&&ht.nodeName==="BODY"||ht.nodeName==="HTML"?Xe=ht:Xe.appendChild(ht);else{if(!ce&&!ge&&!se&&It.indexOf("<")===-1)return y&&Ee?y.createHTML(It):It;if(Xe=Ad(It),!Xe)return ce?null:Ee?w:""}Xe&&te&&ba(Xe.firstChild);const wo=dg(ee?It:Xe);for(;rn=wo.nextNode();)$v(rn)||(rn.content instanceof r&&QC(rn.content),jv(rn));if(ee)return It;if(ce){if(ve)for(Os=L.call(Xe.ownerDocument);Xe.firstChild;)Os.appendChild(Xe.firstChild);else Os=Xe;return(G.shadowroot||G.shadowrootmode)&&(Os=x.call(t,Os,!0)),Os}let cs=se?Xe.outerHTML:Xe.innerHTML;return se&&q["!doctype"]&&Xe.ownerDocument&&Xe.ownerDocument.doctype&&Xe.ownerDocument.doctype.name&&al(Zfe,Xe.ownerDocument.doctype.name)&&(cs="<!DOCTYPE "+Xe.ownerDocument.doctype.name+`> +`+cs),ge&&(cs=Hc(cs,N," "),cs=Hc(cs,T," "),cs=Hc(cs,P," ")),y&&Ee?y.createHTML(cs):cs},e.setConfig=function(It){Wo(It),H=!0},e.clearConfig=function(){Bn=null,H=!1},e.isValidAttribute=function(It,Se,Xe){Bn||Wo({});const ht=oi(It),rn=oi(Se);return zv(ht,rn,Xe)},e.addHook=function(It,Se){typeof Se=="function"&&(I[It]=I[It]||[],ww(I[It],Se))},e.removeHook=function(It){if(I[It])return dJ(I[It])},e.removeHooks=function(It){I[It]&&(I[It]=[])},e.removeAllHooks=function(){I={}},e}var Ld=Xfe();Ld.version;Ld.isSupported;const Qfe=Ld.sanitize;Ld.setConfig;Ld.clearConfig;Ld.isValidAttribute;const Jfe=Ld.addHook,ege=Ld.removeHook;Ld.removeHooks;Ld.removeAllHooks;class b8e{constructor(e){this.fn=e,this.lastCache=void 0,this.lastArgKey=void 0}get(e){const t=JSON.stringify(e);return this.lastArgKey!==t&&(this.lastArgKey=t,this.lastCache=this.fn(e)),this.lastCache}}class vJ{get cachedValues(){return this._map}constructor(e){this.fn=e,this._map=new Map}get(e){if(this._map.has(e))return this._map.get(e);const t=this.fn(e);return this._map.set(e,t),t}}class Im{constructor(e){this.executor=e,this._didRun=!1}get value(){if(!this._didRun)try{this._value=this.executor()}catch(e){this._error=e}finally{this._didRun=!0}if(this._error)throw this._error;return this._value}get rawValue(){return this._value}}var dy;function tge(n){return!n||typeof n!="string"?!0:n.trim().length===0}const y8e=/{(\d+)}/g;function I_(n,...e){return e.length===0?n:n.replace(y8e,function(t,i){const s=parseInt(i,10);return isNaN(s)||s<0||s>=e.length?t:e[s]})}function IA(n){return n.replace(/[<>&]/g,function(e){switch(e){case"<":return"<";case">":return">";case"&":return"&";default:return e}})}function Qa(n){return n.replace(/[\\\{\}\*\+\?\|\^\$\.\[\]\(\)]/g,"\\$&")}function C8e(n,e=" "){const t=dE(n,e);return ige(t,e)}function dE(n,e){if(!n||!e)return n;const t=e.length;if(t===0||n.length===0)return n;let i=0;for(;n.indexOf(e,i)===i;)i=i+t;return n.substring(i)}function ige(n,e){if(!n||!e)return n;const t=e.length,i=n.length;if(t===0||i===0)return n;let s=i,r=-1;for(;r=n.lastIndexOf(e,s-1),!(r===-1||r+t!==s);){if(r===0)return"";s=r}return n.substring(0,s)}function w8e(n){return n.replace(/[\-\\\{\}\+\?\|\^\$\.\,\[\]\(\)\#\s]/g,"\\$&").replace(/[\*]/g,".*")}function S8e(n){return n.replace(/\*/g,"")}function nge(n,e,t={}){if(!n)throw new Error("Cannot create regex from empty string");e||(n=Qa(n)),t.wholeWord&&(/\B/.test(n.charAt(0))||(n="\\b"+n),/\B/.test(n.charAt(n.length-1))||(n=n+"\\b"));let i="";return t.global&&(i+="g"),t.matchCase||(i+="i"),t.multiline&&(i+="m"),t.unicode&&(i+="u"),new RegExp(n,i)}function k8e(n){return n.source==="^"||n.source==="^$"||n.source==="$"||n.source==="^\\s*$"?!1:!!(n.exec("")&&n.lastIndex===0)}function fd(n){return n.split(/\r\n|\r|\n/)}function zr(n){for(let e=0,t=n.length;e<t;e++){const i=n.charCodeAt(e);if(i!==32&&i!==9)return e}return-1}function Ni(n,e=0,t=n.length){for(let i=e;i<t;i++){const s=n.charCodeAt(i);if(s!==32&&s!==9)return n.substring(e,i)}return n.substring(e,t)}function wu(n,e=n.length-1){for(let t=e;t>=0;t--){const i=n.charCodeAt(t);if(i!==32&&i!==9)return t}return-1}function fL(n,e){return n<e?-1:n>e?1:0}function Fj(n,e,t=0,i=n.length,s=0,r=e.length){for(;t<i&&s<r;t++,s++){const l=n.charCodeAt(t),c=e.charCodeAt(s);if(l<c)return-1;if(l>c)return 1}const o=i-t,a=r-s;return o<a?-1:o>a?1:0}function G8(n,e){return fE(n,e,0,n.length,0,e.length)}function fE(n,e,t=0,i=n.length,s=0,r=e.length){for(;t<i&&s<r;t++,s++){let l=n.charCodeAt(t),c=e.charCodeAt(s);if(l===c)continue;if(l>=128||c>=128)return Fj(n.toLowerCase(),e.toLowerCase(),t,i,s,r);Qg(l)&&(l-=32),Qg(c)&&(c-=32);const u=l-c;if(u!==0)return u}const o=i-t,a=r-s;return o<a?-1:o>a?1:0}function YD(n){return n>=48&&n<=57}function Qg(n){return n>=97&&n<=122}function ch(n){return n>=65&&n<=90}function R0(n,e){return n.length===e.length&&fE(n,e)===0}function Bj(n,e){const t=e.length;return e.length>n.length?!1:fE(n,e,0,t)===0}function T_(n,e){const t=Math.min(n.length,e.length);let i;for(i=0;i<t;i++)if(n.charCodeAt(i)!==e.charCodeAt(i))return i;return t}function TA(n,e){const t=Math.min(n.length,e.length);let i;const s=n.length-1,r=e.length-1;for(i=0;i<t;i++)if(n.charCodeAt(s-i)!==e.charCodeAt(r-i))return i;return t}function As(n){return 55296<=n&&n<=56319}function N_(n){return 56320<=n&&n<=57343}function Wj(n,e){return(n-55296<<10)+(e-56320)+65536}function NA(n,e,t){const i=n.charCodeAt(t);if(As(i)&&t+1<e){const s=n.charCodeAt(t+1);if(N_(s))return Wj(i,s)}return i}function L8e(n,e){const t=n.charCodeAt(e-1);if(N_(t)&&e>1){const i=n.charCodeAt(e-2);if(As(i))return Wj(i,t)}return t}class Vj{get offset(){return this._offset}constructor(e,t=0){this._str=e,this._len=e.length,this._offset=t}setOffset(e){this._offset=e}prevCodePoint(){const e=L8e(this._str,this._offset);return this._offset-=e>=65536?2:1,e}nextCodePoint(){const e=NA(this._str,this._len,this._offset);return this._offset+=e>=65536?2:1,e}eol(){return this._offset>=this._len}}class AA{get offset(){return this._iterator.offset}constructor(e,t=0){this._iterator=new Vj(e,t)}nextGraphemeLength(){const e=Jg.getInstance(),t=this._iterator,i=t.offset;let s=e.getGraphemeBreakType(t.nextCodePoint());for(;!t.eol();){const r=t.offset,o=e.getGraphemeBreakType(t.nextCodePoint());if(bJ(s,o)){t.setOffset(r);break}s=o}return t.offset-i}prevGraphemeLength(){const e=Jg.getInstance(),t=this._iterator,i=t.offset;let s=e.getGraphemeBreakType(t.prevCodePoint());for(;t.offset>0;){const r=t.offset,o=e.getGraphemeBreakType(t.prevCodePoint());if(bJ(o,s)){t.setOffset(r);break}s=o}return i-t.offset}eol(){return this._iterator.eol()}}function Hj(n,e){return new AA(n,e).nextGraphemeLength()}function sge(n,e){return new AA(n,e).prevGraphemeLength()}function x8e(n,e){e>0&&N_(n.charCodeAt(e))&&e--;const t=e+Hj(n,e);return[t-sge(n,t),t]}let _5;function E8e(){return/(?:[\u05BE\u05C0\u05C3\u05C6\u05D0-\u05F4\u0608\u060B\u060D\u061B-\u064A\u066D-\u066F\u0671-\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u0710\u0712-\u072F\u074D-\u07A5\u07B1-\u07EA\u07F4\u07F5\u07FA\u07FE-\u0815\u081A\u0824\u0828\u0830-\u0858\u085E-\u088E\u08A0-\u08C9\u200F\uFB1D\uFB1F-\uFB28\uFB2A-\uFD3D\uFD50-\uFDC7\uFDF0-\uFDFC\uFE70-\uFEFC]|\uD802[\uDC00-\uDD1B\uDD20-\uDE00\uDE10-\uDE35\uDE40-\uDEE4\uDEEB-\uDF35\uDF40-\uDFFF]|\uD803[\uDC00-\uDD23\uDE80-\uDEA9\uDEAD-\uDF45\uDF51-\uDF81\uDF86-\uDFF6]|\uD83A[\uDC00-\uDCCF\uDD00-\uDD43\uDD4B-\uDFFF]|\uD83B[\uDC00-\uDEBB])/}function fy(n){return _5||(_5=E8e()),_5.test(n)}const D8e=/^[\t\n\r\x20-\x7E]*$/;function gE(n){return D8e.test(n)}const rge=/[\u2028\u2029]/;function oge(n){return rge.test(n)}function Yp(n){return n>=11904&&n<=55215||n>=63744&&n<=64255||n>=65281&&n<=65374}function $j(n){return n>=127462&&n<=127487||n===8986||n===8987||n===9200||n===9203||n>=9728&&n<=10175||n===11088||n===11093||n>=127744&&n<=128591||n>=128640&&n<=128764||n>=128992&&n<=129008||n>=129280&&n<=129535||n>=129648&&n<=129782}const I8e="\uFEFF";function zj(n){return!!(n&&n.length>0&&n.charCodeAt(0)===65279)}function T8e(n,e=!1){return n?(e&&(n=n.replace(/\\./g,"")),n.toLowerCase()!==n):!1}function age(n){return n=n%(2*26),n<26?String.fromCharCode(97+n):String.fromCharCode(65+n-26)}function bJ(n,e){return n===0?e!==5&&e!==7:n===2&&e===3?!1:n===4||n===2||n===3||e===4||e===2||e===3?!0:!(n===8&&(e===8||e===9||e===11||e===12)||(n===11||n===9)&&(e===9||e===10)||(n===12||n===10)&&e===10||e===5||e===13||e===7||n===1||n===13&&e===14||n===6&&e===6)}class Jg{static getInstance(){return Jg._INSTANCE||(Jg._INSTANCE=new Jg),Jg._INSTANCE}constructor(){this._data=N8e()}getGraphemeBreakType(e){if(e<32)return e===10?3:e===13?2:4;if(e<127)return 0;const t=this._data,i=t.length/3;let s=1;for(;s<=i;)if(e<t[3*s])s=2*s;else if(e>t[3*s+1])s=2*s+1;else return t[3*s+2];return 0}}Jg._INSTANCE=null;function N8e(){return JSON.parse("[0,0,0,51229,51255,12,44061,44087,12,127462,127487,6,7083,7085,5,47645,47671,12,54813,54839,12,128678,128678,14,3270,3270,5,9919,9923,14,45853,45879,12,49437,49463,12,53021,53047,12,71216,71218,7,128398,128399,14,129360,129374,14,2519,2519,5,4448,4519,9,9742,9742,14,12336,12336,14,44957,44983,12,46749,46775,12,48541,48567,12,50333,50359,12,52125,52151,12,53917,53943,12,69888,69890,5,73018,73018,5,127990,127990,14,128558,128559,14,128759,128760,14,129653,129655,14,2027,2035,5,2891,2892,7,3761,3761,5,6683,6683,5,8293,8293,4,9825,9826,14,9999,9999,14,43452,43453,5,44509,44535,12,45405,45431,12,46301,46327,12,47197,47223,12,48093,48119,12,48989,49015,12,49885,49911,12,50781,50807,12,51677,51703,12,52573,52599,12,53469,53495,12,54365,54391,12,65279,65279,4,70471,70472,7,72145,72147,7,119173,119179,5,127799,127818,14,128240,128244,14,128512,128512,14,128652,128652,14,128721,128722,14,129292,129292,14,129445,129450,14,129734,129743,14,1476,1477,5,2366,2368,7,2750,2752,7,3076,3076,5,3415,3415,5,4141,4144,5,6109,6109,5,6964,6964,5,7394,7400,5,9197,9198,14,9770,9770,14,9877,9877,14,9968,9969,14,10084,10084,14,43052,43052,5,43713,43713,5,44285,44311,12,44733,44759,12,45181,45207,12,45629,45655,12,46077,46103,12,46525,46551,12,46973,46999,12,47421,47447,12,47869,47895,12,48317,48343,12,48765,48791,12,49213,49239,12,49661,49687,12,50109,50135,12,50557,50583,12,51005,51031,12,51453,51479,12,51901,51927,12,52349,52375,12,52797,52823,12,53245,53271,12,53693,53719,12,54141,54167,12,54589,54615,12,55037,55063,12,69506,69509,5,70191,70193,5,70841,70841,7,71463,71467,5,72330,72342,5,94031,94031,5,123628,123631,5,127763,127765,14,127941,127941,14,128043,128062,14,128302,128317,14,128465,128467,14,128539,128539,14,128640,128640,14,128662,128662,14,128703,128703,14,128745,128745,14,129004,129007,14,129329,129330,14,129402,129402,14,129483,129483,14,129686,129704,14,130048,131069,14,173,173,4,1757,1757,1,2200,2207,5,2434,2435,7,2631,2632,5,2817,2817,5,3008,3008,5,3201,3201,5,3387,3388,5,3542,3542,5,3902,3903,7,4190,4192,5,6002,6003,5,6439,6440,5,6765,6770,7,7019,7027,5,7154,7155,7,8205,8205,13,8505,8505,14,9654,9654,14,9757,9757,14,9792,9792,14,9852,9853,14,9890,9894,14,9937,9937,14,9981,9981,14,10035,10036,14,11035,11036,14,42654,42655,5,43346,43347,7,43587,43587,5,44006,44007,7,44173,44199,12,44397,44423,12,44621,44647,12,44845,44871,12,45069,45095,12,45293,45319,12,45517,45543,12,45741,45767,12,45965,45991,12,46189,46215,12,46413,46439,12,46637,46663,12,46861,46887,12,47085,47111,12,47309,47335,12,47533,47559,12,47757,47783,12,47981,48007,12,48205,48231,12,48429,48455,12,48653,48679,12,48877,48903,12,49101,49127,12,49325,49351,12,49549,49575,12,49773,49799,12,49997,50023,12,50221,50247,12,50445,50471,12,50669,50695,12,50893,50919,12,51117,51143,12,51341,51367,12,51565,51591,12,51789,51815,12,52013,52039,12,52237,52263,12,52461,52487,12,52685,52711,12,52909,52935,12,53133,53159,12,53357,53383,12,53581,53607,12,53805,53831,12,54029,54055,12,54253,54279,12,54477,54503,12,54701,54727,12,54925,54951,12,55149,55175,12,68101,68102,5,69762,69762,7,70067,70069,7,70371,70378,5,70720,70721,7,71087,71087,5,71341,71341,5,71995,71996,5,72249,72249,7,72850,72871,5,73109,73109,5,118576,118598,5,121505,121519,5,127245,127247,14,127568,127569,14,127777,127777,14,127872,127891,14,127956,127967,14,128015,128016,14,128110,128172,14,128259,128259,14,128367,128368,14,128424,128424,14,128488,128488,14,128530,128532,14,128550,128551,14,128566,128566,14,128647,128647,14,128656,128656,14,128667,128673,14,128691,128693,14,128715,128715,14,128728,128732,14,128752,128752,14,128765,128767,14,129096,129103,14,129311,129311,14,129344,129349,14,129394,129394,14,129413,129425,14,129466,129471,14,129511,129535,14,129664,129666,14,129719,129722,14,129760,129767,14,917536,917631,5,13,13,2,1160,1161,5,1564,1564,4,1807,1807,1,2085,2087,5,2307,2307,7,2382,2383,7,2497,2500,5,2563,2563,7,2677,2677,5,2763,2764,7,2879,2879,5,2914,2915,5,3021,3021,5,3142,3144,5,3263,3263,5,3285,3286,5,3398,3400,7,3530,3530,5,3633,3633,5,3864,3865,5,3974,3975,5,4155,4156,7,4229,4230,5,5909,5909,7,6078,6085,7,6277,6278,5,6451,6456,7,6744,6750,5,6846,6846,5,6972,6972,5,7074,7077,5,7146,7148,7,7222,7223,5,7416,7417,5,8234,8238,4,8417,8417,5,9000,9000,14,9203,9203,14,9730,9731,14,9748,9749,14,9762,9763,14,9776,9783,14,9800,9811,14,9831,9831,14,9872,9873,14,9882,9882,14,9900,9903,14,9929,9933,14,9941,9960,14,9974,9974,14,9989,9989,14,10006,10006,14,10062,10062,14,10160,10160,14,11647,11647,5,12953,12953,14,43019,43019,5,43232,43249,5,43443,43443,5,43567,43568,7,43696,43696,5,43765,43765,7,44013,44013,5,44117,44143,12,44229,44255,12,44341,44367,12,44453,44479,12,44565,44591,12,44677,44703,12,44789,44815,12,44901,44927,12,45013,45039,12,45125,45151,12,45237,45263,12,45349,45375,12,45461,45487,12,45573,45599,12,45685,45711,12,45797,45823,12,45909,45935,12,46021,46047,12,46133,46159,12,46245,46271,12,46357,46383,12,46469,46495,12,46581,46607,12,46693,46719,12,46805,46831,12,46917,46943,12,47029,47055,12,47141,47167,12,47253,47279,12,47365,47391,12,47477,47503,12,47589,47615,12,47701,47727,12,47813,47839,12,47925,47951,12,48037,48063,12,48149,48175,12,48261,48287,12,48373,48399,12,48485,48511,12,48597,48623,12,48709,48735,12,48821,48847,12,48933,48959,12,49045,49071,12,49157,49183,12,49269,49295,12,49381,49407,12,49493,49519,12,49605,49631,12,49717,49743,12,49829,49855,12,49941,49967,12,50053,50079,12,50165,50191,12,50277,50303,12,50389,50415,12,50501,50527,12,50613,50639,12,50725,50751,12,50837,50863,12,50949,50975,12,51061,51087,12,51173,51199,12,51285,51311,12,51397,51423,12,51509,51535,12,51621,51647,12,51733,51759,12,51845,51871,12,51957,51983,12,52069,52095,12,52181,52207,12,52293,52319,12,52405,52431,12,52517,52543,12,52629,52655,12,52741,52767,12,52853,52879,12,52965,52991,12,53077,53103,12,53189,53215,12,53301,53327,12,53413,53439,12,53525,53551,12,53637,53663,12,53749,53775,12,53861,53887,12,53973,53999,12,54085,54111,12,54197,54223,12,54309,54335,12,54421,54447,12,54533,54559,12,54645,54671,12,54757,54783,12,54869,54895,12,54981,55007,12,55093,55119,12,55243,55291,10,66045,66045,5,68325,68326,5,69688,69702,5,69817,69818,5,69957,69958,7,70089,70092,5,70198,70199,5,70462,70462,5,70502,70508,5,70750,70750,5,70846,70846,7,71100,71101,5,71230,71230,7,71351,71351,5,71737,71738,5,72000,72000,7,72160,72160,5,72273,72278,5,72752,72758,5,72882,72883,5,73031,73031,5,73461,73462,7,94192,94193,7,119149,119149,7,121403,121452,5,122915,122916,5,126980,126980,14,127358,127359,14,127535,127535,14,127759,127759,14,127771,127771,14,127792,127793,14,127825,127867,14,127897,127899,14,127945,127945,14,127985,127986,14,128000,128007,14,128021,128021,14,128066,128100,14,128184,128235,14,128249,128252,14,128266,128276,14,128335,128335,14,128379,128390,14,128407,128419,14,128444,128444,14,128481,128481,14,128499,128499,14,128526,128526,14,128536,128536,14,128543,128543,14,128556,128556,14,128564,128564,14,128577,128580,14,128643,128645,14,128649,128649,14,128654,128654,14,128660,128660,14,128664,128664,14,128675,128675,14,128686,128689,14,128695,128696,14,128705,128709,14,128717,128719,14,128725,128725,14,128736,128741,14,128747,128748,14,128755,128755,14,128762,128762,14,128981,128991,14,129009,129023,14,129160,129167,14,129296,129304,14,129320,129327,14,129340,129342,14,129356,129356,14,129388,129392,14,129399,129400,14,129404,129407,14,129432,129442,14,129454,129455,14,129473,129474,14,129485,129487,14,129648,129651,14,129659,129660,14,129671,129679,14,129709,129711,14,129728,129730,14,129751,129753,14,129776,129782,14,917505,917505,4,917760,917999,5,10,10,3,127,159,4,768,879,5,1471,1471,5,1536,1541,1,1648,1648,5,1767,1768,5,1840,1866,5,2070,2073,5,2137,2139,5,2274,2274,1,2363,2363,7,2377,2380,7,2402,2403,5,2494,2494,5,2507,2508,7,2558,2558,5,2622,2624,7,2641,2641,5,2691,2691,7,2759,2760,5,2786,2787,5,2876,2876,5,2881,2884,5,2901,2902,5,3006,3006,5,3014,3016,7,3072,3072,5,3134,3136,5,3157,3158,5,3260,3260,5,3266,3266,5,3274,3275,7,3328,3329,5,3391,3392,7,3405,3405,5,3457,3457,5,3536,3537,7,3551,3551,5,3636,3642,5,3764,3772,5,3895,3895,5,3967,3967,7,3993,4028,5,4146,4151,5,4182,4183,7,4226,4226,5,4253,4253,5,4957,4959,5,5940,5940,7,6070,6070,7,6087,6088,7,6158,6158,4,6432,6434,5,6448,6449,7,6679,6680,5,6742,6742,5,6754,6754,5,6783,6783,5,6912,6915,5,6966,6970,5,6978,6978,5,7042,7042,7,7080,7081,5,7143,7143,7,7150,7150,7,7212,7219,5,7380,7392,5,7412,7412,5,8203,8203,4,8232,8232,4,8265,8265,14,8400,8412,5,8421,8432,5,8617,8618,14,9167,9167,14,9200,9200,14,9410,9410,14,9723,9726,14,9733,9733,14,9745,9745,14,9752,9752,14,9760,9760,14,9766,9766,14,9774,9774,14,9786,9786,14,9794,9794,14,9823,9823,14,9828,9828,14,9833,9850,14,9855,9855,14,9875,9875,14,9880,9880,14,9885,9887,14,9896,9897,14,9906,9916,14,9926,9927,14,9935,9935,14,9939,9939,14,9962,9962,14,9972,9972,14,9978,9978,14,9986,9986,14,9997,9997,14,10002,10002,14,10017,10017,14,10055,10055,14,10071,10071,14,10133,10135,14,10548,10549,14,11093,11093,14,12330,12333,5,12441,12442,5,42608,42610,5,43010,43010,5,43045,43046,5,43188,43203,7,43302,43309,5,43392,43394,5,43446,43449,5,43493,43493,5,43571,43572,7,43597,43597,7,43703,43704,5,43756,43757,5,44003,44004,7,44009,44010,7,44033,44059,12,44089,44115,12,44145,44171,12,44201,44227,12,44257,44283,12,44313,44339,12,44369,44395,12,44425,44451,12,44481,44507,12,44537,44563,12,44593,44619,12,44649,44675,12,44705,44731,12,44761,44787,12,44817,44843,12,44873,44899,12,44929,44955,12,44985,45011,12,45041,45067,12,45097,45123,12,45153,45179,12,45209,45235,12,45265,45291,12,45321,45347,12,45377,45403,12,45433,45459,12,45489,45515,12,45545,45571,12,45601,45627,12,45657,45683,12,45713,45739,12,45769,45795,12,45825,45851,12,45881,45907,12,45937,45963,12,45993,46019,12,46049,46075,12,46105,46131,12,46161,46187,12,46217,46243,12,46273,46299,12,46329,46355,12,46385,46411,12,46441,46467,12,46497,46523,12,46553,46579,12,46609,46635,12,46665,46691,12,46721,46747,12,46777,46803,12,46833,46859,12,46889,46915,12,46945,46971,12,47001,47027,12,47057,47083,12,47113,47139,12,47169,47195,12,47225,47251,12,47281,47307,12,47337,47363,12,47393,47419,12,47449,47475,12,47505,47531,12,47561,47587,12,47617,47643,12,47673,47699,12,47729,47755,12,47785,47811,12,47841,47867,12,47897,47923,12,47953,47979,12,48009,48035,12,48065,48091,12,48121,48147,12,48177,48203,12,48233,48259,12,48289,48315,12,48345,48371,12,48401,48427,12,48457,48483,12,48513,48539,12,48569,48595,12,48625,48651,12,48681,48707,12,48737,48763,12,48793,48819,12,48849,48875,12,48905,48931,12,48961,48987,12,49017,49043,12,49073,49099,12,49129,49155,12,49185,49211,12,49241,49267,12,49297,49323,12,49353,49379,12,49409,49435,12,49465,49491,12,49521,49547,12,49577,49603,12,49633,49659,12,49689,49715,12,49745,49771,12,49801,49827,12,49857,49883,12,49913,49939,12,49969,49995,12,50025,50051,12,50081,50107,12,50137,50163,12,50193,50219,12,50249,50275,12,50305,50331,12,50361,50387,12,50417,50443,12,50473,50499,12,50529,50555,12,50585,50611,12,50641,50667,12,50697,50723,12,50753,50779,12,50809,50835,12,50865,50891,12,50921,50947,12,50977,51003,12,51033,51059,12,51089,51115,12,51145,51171,12,51201,51227,12,51257,51283,12,51313,51339,12,51369,51395,12,51425,51451,12,51481,51507,12,51537,51563,12,51593,51619,12,51649,51675,12,51705,51731,12,51761,51787,12,51817,51843,12,51873,51899,12,51929,51955,12,51985,52011,12,52041,52067,12,52097,52123,12,52153,52179,12,52209,52235,12,52265,52291,12,52321,52347,12,52377,52403,12,52433,52459,12,52489,52515,12,52545,52571,12,52601,52627,12,52657,52683,12,52713,52739,12,52769,52795,12,52825,52851,12,52881,52907,12,52937,52963,12,52993,53019,12,53049,53075,12,53105,53131,12,53161,53187,12,53217,53243,12,53273,53299,12,53329,53355,12,53385,53411,12,53441,53467,12,53497,53523,12,53553,53579,12,53609,53635,12,53665,53691,12,53721,53747,12,53777,53803,12,53833,53859,12,53889,53915,12,53945,53971,12,54001,54027,12,54057,54083,12,54113,54139,12,54169,54195,12,54225,54251,12,54281,54307,12,54337,54363,12,54393,54419,12,54449,54475,12,54505,54531,12,54561,54587,12,54617,54643,12,54673,54699,12,54729,54755,12,54785,54811,12,54841,54867,12,54897,54923,12,54953,54979,12,55009,55035,12,55065,55091,12,55121,55147,12,55177,55203,12,65024,65039,5,65520,65528,4,66422,66426,5,68152,68154,5,69291,69292,5,69633,69633,5,69747,69748,5,69811,69814,5,69826,69826,5,69932,69932,7,70016,70017,5,70079,70080,7,70095,70095,5,70196,70196,5,70367,70367,5,70402,70403,7,70464,70464,5,70487,70487,5,70709,70711,7,70725,70725,7,70833,70834,7,70843,70844,7,70849,70849,7,71090,71093,5,71103,71104,5,71227,71228,7,71339,71339,5,71344,71349,5,71458,71461,5,71727,71735,5,71985,71989,7,71998,71998,5,72002,72002,7,72154,72155,5,72193,72202,5,72251,72254,5,72281,72283,5,72344,72345,5,72766,72766,7,72874,72880,5,72885,72886,5,73023,73029,5,73104,73105,5,73111,73111,5,92912,92916,5,94095,94098,5,113824,113827,4,119142,119142,7,119155,119162,4,119362,119364,5,121476,121476,5,122888,122904,5,123184,123190,5,125252,125258,5,127183,127183,14,127340,127343,14,127377,127386,14,127491,127503,14,127548,127551,14,127744,127756,14,127761,127761,14,127769,127769,14,127773,127774,14,127780,127788,14,127796,127797,14,127820,127823,14,127869,127869,14,127894,127895,14,127902,127903,14,127943,127943,14,127947,127950,14,127972,127972,14,127988,127988,14,127992,127994,14,128009,128011,14,128019,128019,14,128023,128041,14,128064,128064,14,128102,128107,14,128174,128181,14,128238,128238,14,128246,128247,14,128254,128254,14,128264,128264,14,128278,128299,14,128329,128330,14,128348,128359,14,128371,128377,14,128392,128393,14,128401,128404,14,128421,128421,14,128433,128434,14,128450,128452,14,128476,128478,14,128483,128483,14,128495,128495,14,128506,128506,14,128519,128520,14,128528,128528,14,128534,128534,14,128538,128538,14,128540,128542,14,128544,128549,14,128552,128555,14,128557,128557,14,128560,128563,14,128565,128565,14,128567,128576,14,128581,128591,14,128641,128642,14,128646,128646,14,128648,128648,14,128650,128651,14,128653,128653,14,128655,128655,14,128657,128659,14,128661,128661,14,128663,128663,14,128665,128666,14,128674,128674,14,128676,128677,14,128679,128685,14,128690,128690,14,128694,128694,14,128697,128702,14,128704,128704,14,128710,128714,14,128716,128716,14,128720,128720,14,128723,128724,14,128726,128727,14,128733,128735,14,128742,128744,14,128746,128746,14,128749,128751,14,128753,128754,14,128756,128758,14,128761,128761,14,128763,128764,14,128884,128895,14,128992,129003,14,129008,129008,14,129036,129039,14,129114,129119,14,129198,129279,14,129293,129295,14,129305,129310,14,129312,129319,14,129328,129328,14,129331,129338,14,129343,129343,14,129351,129355,14,129357,129359,14,129375,129387,14,129393,129393,14,129395,129398,14,129401,129401,14,129403,129403,14,129408,129412,14,129426,129431,14,129443,129444,14,129451,129453,14,129456,129465,14,129472,129472,14,129475,129482,14,129484,129484,14,129488,129510,14,129536,129647,14,129652,129652,14,129656,129658,14,129661,129663,14,129667,129670,14,129680,129685,14,129705,129708,14,129712,129718,14,129723,129727,14,129731,129733,14,129744,129750,14,129754,129759,14,129768,129775,14,129783,129791,14,917504,917504,4,917506,917535,4,917632,917759,4,918000,921599,4,0,9,4,11,12,4,14,31,4,169,169,14,174,174,14,1155,1159,5,1425,1469,5,1473,1474,5,1479,1479,5,1552,1562,5,1611,1631,5,1750,1756,5,1759,1764,5,1770,1773,5,1809,1809,5,1958,1968,5,2045,2045,5,2075,2083,5,2089,2093,5,2192,2193,1,2250,2273,5,2275,2306,5,2362,2362,5,2364,2364,5,2369,2376,5,2381,2381,5,2385,2391,5,2433,2433,5,2492,2492,5,2495,2496,7,2503,2504,7,2509,2509,5,2530,2531,5,2561,2562,5,2620,2620,5,2625,2626,5,2635,2637,5,2672,2673,5,2689,2690,5,2748,2748,5,2753,2757,5,2761,2761,7,2765,2765,5,2810,2815,5,2818,2819,7,2878,2878,5,2880,2880,7,2887,2888,7,2893,2893,5,2903,2903,5,2946,2946,5,3007,3007,7,3009,3010,7,3018,3020,7,3031,3031,5,3073,3075,7,3132,3132,5,3137,3140,7,3146,3149,5,3170,3171,5,3202,3203,7,3262,3262,7,3264,3265,7,3267,3268,7,3271,3272,7,3276,3277,5,3298,3299,5,3330,3331,7,3390,3390,5,3393,3396,5,3402,3404,7,3406,3406,1,3426,3427,5,3458,3459,7,3535,3535,5,3538,3540,5,3544,3550,7,3570,3571,7,3635,3635,7,3655,3662,5,3763,3763,7,3784,3789,5,3893,3893,5,3897,3897,5,3953,3966,5,3968,3972,5,3981,3991,5,4038,4038,5,4145,4145,7,4153,4154,5,4157,4158,5,4184,4185,5,4209,4212,5,4228,4228,7,4237,4237,5,4352,4447,8,4520,4607,10,5906,5908,5,5938,5939,5,5970,5971,5,6068,6069,5,6071,6077,5,6086,6086,5,6089,6099,5,6155,6157,5,6159,6159,5,6313,6313,5,6435,6438,7,6441,6443,7,6450,6450,5,6457,6459,5,6681,6682,7,6741,6741,7,6743,6743,7,6752,6752,5,6757,6764,5,6771,6780,5,6832,6845,5,6847,6862,5,6916,6916,7,6965,6965,5,6971,6971,7,6973,6977,7,6979,6980,7,7040,7041,5,7073,7073,7,7078,7079,7,7082,7082,7,7142,7142,5,7144,7145,5,7149,7149,5,7151,7153,5,7204,7211,7,7220,7221,7,7376,7378,5,7393,7393,7,7405,7405,5,7415,7415,7,7616,7679,5,8204,8204,5,8206,8207,4,8233,8233,4,8252,8252,14,8288,8292,4,8294,8303,4,8413,8416,5,8418,8420,5,8482,8482,14,8596,8601,14,8986,8987,14,9096,9096,14,9193,9196,14,9199,9199,14,9201,9202,14,9208,9210,14,9642,9643,14,9664,9664,14,9728,9729,14,9732,9732,14,9735,9741,14,9743,9744,14,9746,9746,14,9750,9751,14,9753,9756,14,9758,9759,14,9761,9761,14,9764,9765,14,9767,9769,14,9771,9773,14,9775,9775,14,9784,9785,14,9787,9791,14,9793,9793,14,9795,9799,14,9812,9822,14,9824,9824,14,9827,9827,14,9829,9830,14,9832,9832,14,9851,9851,14,9854,9854,14,9856,9861,14,9874,9874,14,9876,9876,14,9878,9879,14,9881,9881,14,9883,9884,14,9888,9889,14,9895,9895,14,9898,9899,14,9904,9905,14,9917,9918,14,9924,9925,14,9928,9928,14,9934,9934,14,9936,9936,14,9938,9938,14,9940,9940,14,9961,9961,14,9963,9967,14,9970,9971,14,9973,9973,14,9975,9977,14,9979,9980,14,9982,9985,14,9987,9988,14,9992,9996,14,9998,9998,14,10000,10001,14,10004,10004,14,10013,10013,14,10024,10024,14,10052,10052,14,10060,10060,14,10067,10069,14,10083,10083,14,10085,10087,14,10145,10145,14,10175,10175,14,11013,11015,14,11088,11088,14,11503,11505,5,11744,11775,5,12334,12335,5,12349,12349,14,12951,12951,14,42607,42607,5,42612,42621,5,42736,42737,5,43014,43014,5,43043,43044,7,43047,43047,7,43136,43137,7,43204,43205,5,43263,43263,5,43335,43345,5,43360,43388,8,43395,43395,7,43444,43445,7,43450,43451,7,43454,43456,7,43561,43566,5,43569,43570,5,43573,43574,5,43596,43596,5,43644,43644,5,43698,43700,5,43710,43711,5,43755,43755,7,43758,43759,7,43766,43766,5,44005,44005,5,44008,44008,5,44012,44012,7,44032,44032,11,44060,44060,11,44088,44088,11,44116,44116,11,44144,44144,11,44172,44172,11,44200,44200,11,44228,44228,11,44256,44256,11,44284,44284,11,44312,44312,11,44340,44340,11,44368,44368,11,44396,44396,11,44424,44424,11,44452,44452,11,44480,44480,11,44508,44508,11,44536,44536,11,44564,44564,11,44592,44592,11,44620,44620,11,44648,44648,11,44676,44676,11,44704,44704,11,44732,44732,11,44760,44760,11,44788,44788,11,44816,44816,11,44844,44844,11,44872,44872,11,44900,44900,11,44928,44928,11,44956,44956,11,44984,44984,11,45012,45012,11,45040,45040,11,45068,45068,11,45096,45096,11,45124,45124,11,45152,45152,11,45180,45180,11,45208,45208,11,45236,45236,11,45264,45264,11,45292,45292,11,45320,45320,11,45348,45348,11,45376,45376,11,45404,45404,11,45432,45432,11,45460,45460,11,45488,45488,11,45516,45516,11,45544,45544,11,45572,45572,11,45600,45600,11,45628,45628,11,45656,45656,11,45684,45684,11,45712,45712,11,45740,45740,11,45768,45768,11,45796,45796,11,45824,45824,11,45852,45852,11,45880,45880,11,45908,45908,11,45936,45936,11,45964,45964,11,45992,45992,11,46020,46020,11,46048,46048,11,46076,46076,11,46104,46104,11,46132,46132,11,46160,46160,11,46188,46188,11,46216,46216,11,46244,46244,11,46272,46272,11,46300,46300,11,46328,46328,11,46356,46356,11,46384,46384,11,46412,46412,11,46440,46440,11,46468,46468,11,46496,46496,11,46524,46524,11,46552,46552,11,46580,46580,11,46608,46608,11,46636,46636,11,46664,46664,11,46692,46692,11,46720,46720,11,46748,46748,11,46776,46776,11,46804,46804,11,46832,46832,11,46860,46860,11,46888,46888,11,46916,46916,11,46944,46944,11,46972,46972,11,47000,47000,11,47028,47028,11,47056,47056,11,47084,47084,11,47112,47112,11,47140,47140,11,47168,47168,11,47196,47196,11,47224,47224,11,47252,47252,11,47280,47280,11,47308,47308,11,47336,47336,11,47364,47364,11,47392,47392,11,47420,47420,11,47448,47448,11,47476,47476,11,47504,47504,11,47532,47532,11,47560,47560,11,47588,47588,11,47616,47616,11,47644,47644,11,47672,47672,11,47700,47700,11,47728,47728,11,47756,47756,11,47784,47784,11,47812,47812,11,47840,47840,11,47868,47868,11,47896,47896,11,47924,47924,11,47952,47952,11,47980,47980,11,48008,48008,11,48036,48036,11,48064,48064,11,48092,48092,11,48120,48120,11,48148,48148,11,48176,48176,11,48204,48204,11,48232,48232,11,48260,48260,11,48288,48288,11,48316,48316,11,48344,48344,11,48372,48372,11,48400,48400,11,48428,48428,11,48456,48456,11,48484,48484,11,48512,48512,11,48540,48540,11,48568,48568,11,48596,48596,11,48624,48624,11,48652,48652,11,48680,48680,11,48708,48708,11,48736,48736,11,48764,48764,11,48792,48792,11,48820,48820,11,48848,48848,11,48876,48876,11,48904,48904,11,48932,48932,11,48960,48960,11,48988,48988,11,49016,49016,11,49044,49044,11,49072,49072,11,49100,49100,11,49128,49128,11,49156,49156,11,49184,49184,11,49212,49212,11,49240,49240,11,49268,49268,11,49296,49296,11,49324,49324,11,49352,49352,11,49380,49380,11,49408,49408,11,49436,49436,11,49464,49464,11,49492,49492,11,49520,49520,11,49548,49548,11,49576,49576,11,49604,49604,11,49632,49632,11,49660,49660,11,49688,49688,11,49716,49716,11,49744,49744,11,49772,49772,11,49800,49800,11,49828,49828,11,49856,49856,11,49884,49884,11,49912,49912,11,49940,49940,11,49968,49968,11,49996,49996,11,50024,50024,11,50052,50052,11,50080,50080,11,50108,50108,11,50136,50136,11,50164,50164,11,50192,50192,11,50220,50220,11,50248,50248,11,50276,50276,11,50304,50304,11,50332,50332,11,50360,50360,11,50388,50388,11,50416,50416,11,50444,50444,11,50472,50472,11,50500,50500,11,50528,50528,11,50556,50556,11,50584,50584,11,50612,50612,11,50640,50640,11,50668,50668,11,50696,50696,11,50724,50724,11,50752,50752,11,50780,50780,11,50808,50808,11,50836,50836,11,50864,50864,11,50892,50892,11,50920,50920,11,50948,50948,11,50976,50976,11,51004,51004,11,51032,51032,11,51060,51060,11,51088,51088,11,51116,51116,11,51144,51144,11,51172,51172,11,51200,51200,11,51228,51228,11,51256,51256,11,51284,51284,11,51312,51312,11,51340,51340,11,51368,51368,11,51396,51396,11,51424,51424,11,51452,51452,11,51480,51480,11,51508,51508,11,51536,51536,11,51564,51564,11,51592,51592,11,51620,51620,11,51648,51648,11,51676,51676,11,51704,51704,11,51732,51732,11,51760,51760,11,51788,51788,11,51816,51816,11,51844,51844,11,51872,51872,11,51900,51900,11,51928,51928,11,51956,51956,11,51984,51984,11,52012,52012,11,52040,52040,11,52068,52068,11,52096,52096,11,52124,52124,11,52152,52152,11,52180,52180,11,52208,52208,11,52236,52236,11,52264,52264,11,52292,52292,11,52320,52320,11,52348,52348,11,52376,52376,11,52404,52404,11,52432,52432,11,52460,52460,11,52488,52488,11,52516,52516,11,52544,52544,11,52572,52572,11,52600,52600,11,52628,52628,11,52656,52656,11,52684,52684,11,52712,52712,11,52740,52740,11,52768,52768,11,52796,52796,11,52824,52824,11,52852,52852,11,52880,52880,11,52908,52908,11,52936,52936,11,52964,52964,11,52992,52992,11,53020,53020,11,53048,53048,11,53076,53076,11,53104,53104,11,53132,53132,11,53160,53160,11,53188,53188,11,53216,53216,11,53244,53244,11,53272,53272,11,53300,53300,11,53328,53328,11,53356,53356,11,53384,53384,11,53412,53412,11,53440,53440,11,53468,53468,11,53496,53496,11,53524,53524,11,53552,53552,11,53580,53580,11,53608,53608,11,53636,53636,11,53664,53664,11,53692,53692,11,53720,53720,11,53748,53748,11,53776,53776,11,53804,53804,11,53832,53832,11,53860,53860,11,53888,53888,11,53916,53916,11,53944,53944,11,53972,53972,11,54000,54000,11,54028,54028,11,54056,54056,11,54084,54084,11,54112,54112,11,54140,54140,11,54168,54168,11,54196,54196,11,54224,54224,11,54252,54252,11,54280,54280,11,54308,54308,11,54336,54336,11,54364,54364,11,54392,54392,11,54420,54420,11,54448,54448,11,54476,54476,11,54504,54504,11,54532,54532,11,54560,54560,11,54588,54588,11,54616,54616,11,54644,54644,11,54672,54672,11,54700,54700,11,54728,54728,11,54756,54756,11,54784,54784,11,54812,54812,11,54840,54840,11,54868,54868,11,54896,54896,11,54924,54924,11,54952,54952,11,54980,54980,11,55008,55008,11,55036,55036,11,55064,55064,11,55092,55092,11,55120,55120,11,55148,55148,11,55176,55176,11,55216,55238,9,64286,64286,5,65056,65071,5,65438,65439,5,65529,65531,4,66272,66272,5,68097,68099,5,68108,68111,5,68159,68159,5,68900,68903,5,69446,69456,5,69632,69632,7,69634,69634,7,69744,69744,5,69759,69761,5,69808,69810,7,69815,69816,7,69821,69821,1,69837,69837,1,69927,69931,5,69933,69940,5,70003,70003,5,70018,70018,7,70070,70078,5,70082,70083,1,70094,70094,7,70188,70190,7,70194,70195,7,70197,70197,7,70206,70206,5,70368,70370,7,70400,70401,5,70459,70460,5,70463,70463,7,70465,70468,7,70475,70477,7,70498,70499,7,70512,70516,5,70712,70719,5,70722,70724,5,70726,70726,5,70832,70832,5,70835,70840,5,70842,70842,5,70845,70845,5,70847,70848,5,70850,70851,5,71088,71089,7,71096,71099,7,71102,71102,7,71132,71133,5,71219,71226,5,71229,71229,5,71231,71232,5,71340,71340,7,71342,71343,7,71350,71350,7,71453,71455,5,71462,71462,7,71724,71726,7,71736,71736,7,71984,71984,5,71991,71992,7,71997,71997,7,71999,71999,1,72001,72001,1,72003,72003,5,72148,72151,5,72156,72159,7,72164,72164,7,72243,72248,5,72250,72250,1,72263,72263,5,72279,72280,7,72324,72329,1,72343,72343,7,72751,72751,7,72760,72765,5,72767,72767,5,72873,72873,7,72881,72881,7,72884,72884,7,73009,73014,5,73020,73021,5,73030,73030,1,73098,73102,7,73107,73108,7,73110,73110,7,73459,73460,5,78896,78904,4,92976,92982,5,94033,94087,7,94180,94180,5,113821,113822,5,118528,118573,5,119141,119141,5,119143,119145,5,119150,119154,5,119163,119170,5,119210,119213,5,121344,121398,5,121461,121461,5,121499,121503,5,122880,122886,5,122907,122913,5,122918,122922,5,123566,123566,5,125136,125142,5,126976,126979,14,126981,127182,14,127184,127231,14,127279,127279,14,127344,127345,14,127374,127374,14,127405,127461,14,127489,127490,14,127514,127514,14,127538,127546,14,127561,127567,14,127570,127743,14,127757,127758,14,127760,127760,14,127762,127762,14,127766,127768,14,127770,127770,14,127772,127772,14,127775,127776,14,127778,127779,14,127789,127791,14,127794,127795,14,127798,127798,14,127819,127819,14,127824,127824,14,127868,127868,14,127870,127871,14,127892,127893,14,127896,127896,14,127900,127901,14,127904,127940,14,127942,127942,14,127944,127944,14,127946,127946,14,127951,127955,14,127968,127971,14,127973,127984,14,127987,127987,14,127989,127989,14,127991,127991,14,127995,127999,5,128008,128008,14,128012,128014,14,128017,128018,14,128020,128020,14,128022,128022,14,128042,128042,14,128063,128063,14,128065,128065,14,128101,128101,14,128108,128109,14,128173,128173,14,128182,128183,14,128236,128237,14,128239,128239,14,128245,128245,14,128248,128248,14,128253,128253,14,128255,128258,14,128260,128263,14,128265,128265,14,128277,128277,14,128300,128301,14,128326,128328,14,128331,128334,14,128336,128347,14,128360,128366,14,128369,128370,14,128378,128378,14,128391,128391,14,128394,128397,14,128400,128400,14,128405,128406,14,128420,128420,14,128422,128423,14,128425,128432,14,128435,128443,14,128445,128449,14,128453,128464,14,128468,128475,14,128479,128480,14,128482,128482,14,128484,128487,14,128489,128494,14,128496,128498,14,128500,128505,14,128507,128511,14,128513,128518,14,128521,128525,14,128527,128527,14,128529,128529,14,128533,128533,14,128535,128535,14,128537,128537,14]")}function A8e(n,e){if(n===0)return 0;const t=P8e(n,e);if(t!==void 0)return t;const i=new Vj(e,n);return i.prevCodePoint(),i.offset}function P8e(n,e){const t=new Vj(e,n);let i=t.prevCodePoint();for(;R8e(i)||i===65039||i===8419;){if(t.offset===0)return;i=t.prevCodePoint()}if(!$j(i))return;let s=t.offset;return s>0&&t.prevCodePoint()===8205&&(s=t.offset),s}function R8e(n){return 127995<=n&&n<=127999}const lge=" ";class A_{static getInstance(e){return dy.cache.get(Array.from(e))}static getLocales(){return dy._locales.value}constructor(e){this.confusableDictionary=e}isAmbiguous(e){return this.confusableDictionary.has(e)}getPrimaryConfusable(e){return this.confusableDictionary.get(e)}getConfusableCodePoints(){return new Set(this.confusableDictionary.keys())}}dy=A_;A_.ambiguousCharacterData=new Im(()=>JSON.parse('{"_common":[8232,32,8233,32,5760,32,8192,32,8193,32,8194,32,8195,32,8196,32,8197,32,8198,32,8200,32,8201,32,8202,32,8287,32,8199,32,8239,32,2042,95,65101,95,65102,95,65103,95,8208,45,8209,45,8210,45,65112,45,1748,45,8259,45,727,45,8722,45,10134,45,11450,45,1549,44,1643,44,8218,44,184,44,42233,44,894,59,2307,58,2691,58,1417,58,1795,58,1796,58,5868,58,65072,58,6147,58,6153,58,8282,58,1475,58,760,58,42889,58,8758,58,720,58,42237,58,451,33,11601,33,660,63,577,63,2429,63,5038,63,42731,63,119149,46,8228,46,1793,46,1794,46,42510,46,68176,46,1632,46,1776,46,42232,46,1373,96,65287,96,8219,96,8242,96,1370,96,1523,96,8175,96,65344,96,900,96,8189,96,8125,96,8127,96,8190,96,697,96,884,96,712,96,714,96,715,96,756,96,699,96,701,96,700,96,702,96,42892,96,1497,96,2036,96,2037,96,5194,96,5836,96,94033,96,94034,96,65339,91,10088,40,10098,40,12308,40,64830,40,65341,93,10089,41,10099,41,12309,41,64831,41,10100,123,119060,123,10101,125,65342,94,8270,42,1645,42,8727,42,66335,42,5941,47,8257,47,8725,47,8260,47,9585,47,10187,47,10744,47,119354,47,12755,47,12339,47,11462,47,20031,47,12035,47,65340,92,65128,92,8726,92,10189,92,10741,92,10745,92,119311,92,119355,92,12756,92,20022,92,12034,92,42872,38,708,94,710,94,5869,43,10133,43,66203,43,8249,60,10094,60,706,60,119350,60,5176,60,5810,60,5120,61,11840,61,12448,61,42239,61,8250,62,10095,62,707,62,119351,62,5171,62,94015,62,8275,126,732,126,8128,126,8764,126,65372,124,65293,45,120784,50,120794,50,120804,50,120814,50,120824,50,130034,50,42842,50,423,50,1000,50,42564,50,5311,50,42735,50,119302,51,120785,51,120795,51,120805,51,120815,51,120825,51,130035,51,42923,51,540,51,439,51,42858,51,11468,51,1248,51,94011,51,71882,51,120786,52,120796,52,120806,52,120816,52,120826,52,130036,52,5070,52,71855,52,120787,53,120797,53,120807,53,120817,53,120827,53,130037,53,444,53,71867,53,120788,54,120798,54,120808,54,120818,54,120828,54,130038,54,11474,54,5102,54,71893,54,119314,55,120789,55,120799,55,120809,55,120819,55,120829,55,130039,55,66770,55,71878,55,2819,56,2538,56,2666,56,125131,56,120790,56,120800,56,120810,56,120820,56,120830,56,130040,56,547,56,546,56,66330,56,2663,57,2920,57,2541,57,3437,57,120791,57,120801,57,120811,57,120821,57,120831,57,130041,57,42862,57,11466,57,71884,57,71852,57,71894,57,9082,97,65345,97,119834,97,119886,97,119938,97,119990,97,120042,97,120094,97,120146,97,120198,97,120250,97,120302,97,120354,97,120406,97,120458,97,593,97,945,97,120514,97,120572,97,120630,97,120688,97,120746,97,65313,65,119808,65,119860,65,119912,65,119964,65,120016,65,120068,65,120120,65,120172,65,120224,65,120276,65,120328,65,120380,65,120432,65,913,65,120488,65,120546,65,120604,65,120662,65,120720,65,5034,65,5573,65,42222,65,94016,65,66208,65,119835,98,119887,98,119939,98,119991,98,120043,98,120095,98,120147,98,120199,98,120251,98,120303,98,120355,98,120407,98,120459,98,388,98,5071,98,5234,98,5551,98,65314,66,8492,66,119809,66,119861,66,119913,66,120017,66,120069,66,120121,66,120173,66,120225,66,120277,66,120329,66,120381,66,120433,66,42932,66,914,66,120489,66,120547,66,120605,66,120663,66,120721,66,5108,66,5623,66,42192,66,66178,66,66209,66,66305,66,65347,99,8573,99,119836,99,119888,99,119940,99,119992,99,120044,99,120096,99,120148,99,120200,99,120252,99,120304,99,120356,99,120408,99,120460,99,7428,99,1010,99,11429,99,43951,99,66621,99,128844,67,71922,67,71913,67,65315,67,8557,67,8450,67,8493,67,119810,67,119862,67,119914,67,119966,67,120018,67,120174,67,120226,67,120278,67,120330,67,120382,67,120434,67,1017,67,11428,67,5087,67,42202,67,66210,67,66306,67,66581,67,66844,67,8574,100,8518,100,119837,100,119889,100,119941,100,119993,100,120045,100,120097,100,120149,100,120201,100,120253,100,120305,100,120357,100,120409,100,120461,100,1281,100,5095,100,5231,100,42194,100,8558,68,8517,68,119811,68,119863,68,119915,68,119967,68,120019,68,120071,68,120123,68,120175,68,120227,68,120279,68,120331,68,120383,68,120435,68,5024,68,5598,68,5610,68,42195,68,8494,101,65349,101,8495,101,8519,101,119838,101,119890,101,119942,101,120046,101,120098,101,120150,101,120202,101,120254,101,120306,101,120358,101,120410,101,120462,101,43826,101,1213,101,8959,69,65317,69,8496,69,119812,69,119864,69,119916,69,120020,69,120072,69,120124,69,120176,69,120228,69,120280,69,120332,69,120384,69,120436,69,917,69,120492,69,120550,69,120608,69,120666,69,120724,69,11577,69,5036,69,42224,69,71846,69,71854,69,66182,69,119839,102,119891,102,119943,102,119995,102,120047,102,120099,102,120151,102,120203,102,120255,102,120307,102,120359,102,120411,102,120463,102,43829,102,42905,102,383,102,7837,102,1412,102,119315,70,8497,70,119813,70,119865,70,119917,70,120021,70,120073,70,120125,70,120177,70,120229,70,120281,70,120333,70,120385,70,120437,70,42904,70,988,70,120778,70,5556,70,42205,70,71874,70,71842,70,66183,70,66213,70,66853,70,65351,103,8458,103,119840,103,119892,103,119944,103,120048,103,120100,103,120152,103,120204,103,120256,103,120308,103,120360,103,120412,103,120464,103,609,103,7555,103,397,103,1409,103,119814,71,119866,71,119918,71,119970,71,120022,71,120074,71,120126,71,120178,71,120230,71,120282,71,120334,71,120386,71,120438,71,1292,71,5056,71,5107,71,42198,71,65352,104,8462,104,119841,104,119945,104,119997,104,120049,104,120101,104,120153,104,120205,104,120257,104,120309,104,120361,104,120413,104,120465,104,1211,104,1392,104,5058,104,65320,72,8459,72,8460,72,8461,72,119815,72,119867,72,119919,72,120023,72,120179,72,120231,72,120283,72,120335,72,120387,72,120439,72,919,72,120494,72,120552,72,120610,72,120668,72,120726,72,11406,72,5051,72,5500,72,42215,72,66255,72,731,105,9075,105,65353,105,8560,105,8505,105,8520,105,119842,105,119894,105,119946,105,119998,105,120050,105,120102,105,120154,105,120206,105,120258,105,120310,105,120362,105,120414,105,120466,105,120484,105,618,105,617,105,953,105,8126,105,890,105,120522,105,120580,105,120638,105,120696,105,120754,105,1110,105,42567,105,1231,105,43893,105,5029,105,71875,105,65354,106,8521,106,119843,106,119895,106,119947,106,119999,106,120051,106,120103,106,120155,106,120207,106,120259,106,120311,106,120363,106,120415,106,120467,106,1011,106,1112,106,65322,74,119817,74,119869,74,119921,74,119973,74,120025,74,120077,74,120129,74,120181,74,120233,74,120285,74,120337,74,120389,74,120441,74,42930,74,895,74,1032,74,5035,74,5261,74,42201,74,119844,107,119896,107,119948,107,120000,107,120052,107,120104,107,120156,107,120208,107,120260,107,120312,107,120364,107,120416,107,120468,107,8490,75,65323,75,119818,75,119870,75,119922,75,119974,75,120026,75,120078,75,120130,75,120182,75,120234,75,120286,75,120338,75,120390,75,120442,75,922,75,120497,75,120555,75,120613,75,120671,75,120729,75,11412,75,5094,75,5845,75,42199,75,66840,75,1472,108,8739,73,9213,73,65512,73,1633,108,1777,73,66336,108,125127,108,120783,73,120793,73,120803,73,120813,73,120823,73,130033,73,65321,73,8544,73,8464,73,8465,73,119816,73,119868,73,119920,73,120024,73,120128,73,120180,73,120232,73,120284,73,120336,73,120388,73,120440,73,65356,108,8572,73,8467,108,119845,108,119897,108,119949,108,120001,108,120053,108,120105,73,120157,73,120209,73,120261,73,120313,73,120365,73,120417,73,120469,73,448,73,120496,73,120554,73,120612,73,120670,73,120728,73,11410,73,1030,73,1216,73,1493,108,1503,108,1575,108,126464,108,126592,108,65166,108,65165,108,1994,108,11599,73,5825,73,42226,73,93992,73,66186,124,66313,124,119338,76,8556,76,8466,76,119819,76,119871,76,119923,76,120027,76,120079,76,120131,76,120183,76,120235,76,120287,76,120339,76,120391,76,120443,76,11472,76,5086,76,5290,76,42209,76,93974,76,71843,76,71858,76,66587,76,66854,76,65325,77,8559,77,8499,77,119820,77,119872,77,119924,77,120028,77,120080,77,120132,77,120184,77,120236,77,120288,77,120340,77,120392,77,120444,77,924,77,120499,77,120557,77,120615,77,120673,77,120731,77,1018,77,11416,77,5047,77,5616,77,5846,77,42207,77,66224,77,66321,77,119847,110,119899,110,119951,110,120003,110,120055,110,120107,110,120159,110,120211,110,120263,110,120315,110,120367,110,120419,110,120471,110,1400,110,1404,110,65326,78,8469,78,119821,78,119873,78,119925,78,119977,78,120029,78,120081,78,120185,78,120237,78,120289,78,120341,78,120393,78,120445,78,925,78,120500,78,120558,78,120616,78,120674,78,120732,78,11418,78,42208,78,66835,78,3074,111,3202,111,3330,111,3458,111,2406,111,2662,111,2790,111,3046,111,3174,111,3302,111,3430,111,3664,111,3792,111,4160,111,1637,111,1781,111,65359,111,8500,111,119848,111,119900,111,119952,111,120056,111,120108,111,120160,111,120212,111,120264,111,120316,111,120368,111,120420,111,120472,111,7439,111,7441,111,43837,111,959,111,120528,111,120586,111,120644,111,120702,111,120760,111,963,111,120532,111,120590,111,120648,111,120706,111,120764,111,11423,111,4351,111,1413,111,1505,111,1607,111,126500,111,126564,111,126596,111,65259,111,65260,111,65258,111,65257,111,1726,111,64428,111,64429,111,64427,111,64426,111,1729,111,64424,111,64425,111,64423,111,64422,111,1749,111,3360,111,4125,111,66794,111,71880,111,71895,111,66604,111,1984,79,2534,79,2918,79,12295,79,70864,79,71904,79,120782,79,120792,79,120802,79,120812,79,120822,79,130032,79,65327,79,119822,79,119874,79,119926,79,119978,79,120030,79,120082,79,120134,79,120186,79,120238,79,120290,79,120342,79,120394,79,120446,79,927,79,120502,79,120560,79,120618,79,120676,79,120734,79,11422,79,1365,79,11604,79,4816,79,2848,79,66754,79,42227,79,71861,79,66194,79,66219,79,66564,79,66838,79,9076,112,65360,112,119849,112,119901,112,119953,112,120005,112,120057,112,120109,112,120161,112,120213,112,120265,112,120317,112,120369,112,120421,112,120473,112,961,112,120530,112,120544,112,120588,112,120602,112,120646,112,120660,112,120704,112,120718,112,120762,112,120776,112,11427,112,65328,80,8473,80,119823,80,119875,80,119927,80,119979,80,120031,80,120083,80,120187,80,120239,80,120291,80,120343,80,120395,80,120447,80,929,80,120504,80,120562,80,120620,80,120678,80,120736,80,11426,80,5090,80,5229,80,42193,80,66197,80,119850,113,119902,113,119954,113,120006,113,120058,113,120110,113,120162,113,120214,113,120266,113,120318,113,120370,113,120422,113,120474,113,1307,113,1379,113,1382,113,8474,81,119824,81,119876,81,119928,81,119980,81,120032,81,120084,81,120188,81,120240,81,120292,81,120344,81,120396,81,120448,81,11605,81,119851,114,119903,114,119955,114,120007,114,120059,114,120111,114,120163,114,120215,114,120267,114,120319,114,120371,114,120423,114,120475,114,43847,114,43848,114,7462,114,11397,114,43905,114,119318,82,8475,82,8476,82,8477,82,119825,82,119877,82,119929,82,120033,82,120189,82,120241,82,120293,82,120345,82,120397,82,120449,82,422,82,5025,82,5074,82,66740,82,5511,82,42211,82,94005,82,65363,115,119852,115,119904,115,119956,115,120008,115,120060,115,120112,115,120164,115,120216,115,120268,115,120320,115,120372,115,120424,115,120476,115,42801,115,445,115,1109,115,43946,115,71873,115,66632,115,65331,83,119826,83,119878,83,119930,83,119982,83,120034,83,120086,83,120138,83,120190,83,120242,83,120294,83,120346,83,120398,83,120450,83,1029,83,1359,83,5077,83,5082,83,42210,83,94010,83,66198,83,66592,83,119853,116,119905,116,119957,116,120009,116,120061,116,120113,116,120165,116,120217,116,120269,116,120321,116,120373,116,120425,116,120477,116,8868,84,10201,84,128872,84,65332,84,119827,84,119879,84,119931,84,119983,84,120035,84,120087,84,120139,84,120191,84,120243,84,120295,84,120347,84,120399,84,120451,84,932,84,120507,84,120565,84,120623,84,120681,84,120739,84,11430,84,5026,84,42196,84,93962,84,71868,84,66199,84,66225,84,66325,84,119854,117,119906,117,119958,117,120010,117,120062,117,120114,117,120166,117,120218,117,120270,117,120322,117,120374,117,120426,117,120478,117,42911,117,7452,117,43854,117,43858,117,651,117,965,117,120534,117,120592,117,120650,117,120708,117,120766,117,1405,117,66806,117,71896,117,8746,85,8899,85,119828,85,119880,85,119932,85,119984,85,120036,85,120088,85,120140,85,120192,85,120244,85,120296,85,120348,85,120400,85,120452,85,1357,85,4608,85,66766,85,5196,85,42228,85,94018,85,71864,85,8744,118,8897,118,65366,118,8564,118,119855,118,119907,118,119959,118,120011,118,120063,118,120115,118,120167,118,120219,118,120271,118,120323,118,120375,118,120427,118,120479,118,7456,118,957,118,120526,118,120584,118,120642,118,120700,118,120758,118,1141,118,1496,118,71430,118,43945,118,71872,118,119309,86,1639,86,1783,86,8548,86,119829,86,119881,86,119933,86,119985,86,120037,86,120089,86,120141,86,120193,86,120245,86,120297,86,120349,86,120401,86,120453,86,1140,86,11576,86,5081,86,5167,86,42719,86,42214,86,93960,86,71840,86,66845,86,623,119,119856,119,119908,119,119960,119,120012,119,120064,119,120116,119,120168,119,120220,119,120272,119,120324,119,120376,119,120428,119,120480,119,7457,119,1121,119,1309,119,1377,119,71434,119,71438,119,71439,119,43907,119,71919,87,71910,87,119830,87,119882,87,119934,87,119986,87,120038,87,120090,87,120142,87,120194,87,120246,87,120298,87,120350,87,120402,87,120454,87,1308,87,5043,87,5076,87,42218,87,5742,120,10539,120,10540,120,10799,120,65368,120,8569,120,119857,120,119909,120,119961,120,120013,120,120065,120,120117,120,120169,120,120221,120,120273,120,120325,120,120377,120,120429,120,120481,120,5441,120,5501,120,5741,88,9587,88,66338,88,71916,88,65336,88,8553,88,119831,88,119883,88,119935,88,119987,88,120039,88,120091,88,120143,88,120195,88,120247,88,120299,88,120351,88,120403,88,120455,88,42931,88,935,88,120510,88,120568,88,120626,88,120684,88,120742,88,11436,88,11613,88,5815,88,42219,88,66192,88,66228,88,66327,88,66855,88,611,121,7564,121,65369,121,119858,121,119910,121,119962,121,120014,121,120066,121,120118,121,120170,121,120222,121,120274,121,120326,121,120378,121,120430,121,120482,121,655,121,7935,121,43866,121,947,121,8509,121,120516,121,120574,121,120632,121,120690,121,120748,121,1199,121,4327,121,71900,121,65337,89,119832,89,119884,89,119936,89,119988,89,120040,89,120092,89,120144,89,120196,89,120248,89,120300,89,120352,89,120404,89,120456,89,933,89,978,89,120508,89,120566,89,120624,89,120682,89,120740,89,11432,89,1198,89,5033,89,5053,89,42220,89,94019,89,71844,89,66226,89,119859,122,119911,122,119963,122,120015,122,120067,122,120119,122,120171,122,120223,122,120275,122,120327,122,120379,122,120431,122,120483,122,7458,122,43923,122,71876,122,66293,90,71909,90,65338,90,8484,90,8488,90,119833,90,119885,90,119937,90,119989,90,120041,90,120197,90,120249,90,120301,90,120353,90,120405,90,120457,90,918,90,120493,90,120551,90,120609,90,120667,90,120725,90,5059,90,42204,90,71849,90,65282,34,65284,36,65285,37,65286,38,65290,42,65291,43,65294,46,65295,47,65296,48,65297,49,65298,50,65299,51,65300,52,65301,53,65302,54,65303,55,65304,56,65305,57,65308,60,65309,61,65310,62,65312,64,65316,68,65318,70,65319,71,65324,76,65329,81,65330,82,65333,85,65334,86,65335,87,65343,95,65346,98,65348,100,65350,102,65355,107,65357,109,65358,110,65361,113,65362,114,65364,116,65365,117,65367,119,65370,122,65371,123,65373,125,119846,109],"_default":[160,32,8211,45,65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"cs":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"de":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"es":[8211,45,65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"fr":[65374,126,65306,58,65281,33,8216,96,8245,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"it":[160,32,8211,45,65374,126,65306,58,65281,33,8216,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"ja":[8211,45,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65292,44,65307,59],"ko":[8211,45,65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"pl":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"pt-BR":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"qps-ploc":[160,32,8211,45,65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"ru":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,305,105,921,73,1009,112,215,120,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"tr":[160,32,8211,45,65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],"zh-hans":[65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41],"zh-hant":[8211,45,65374,126,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65307,59]}'));A_.cache=new b8e(n=>{function e(c){const u=new Map;for(let h=0;h<c.length;h+=2)u.set(c[h],c[h+1]);return u}function t(c,u){const h=new Map(c);for(const[d,f]of u)h.set(d,f);return h}function i(c,u){if(!c)return u;const h=new Map;for(const[d,f]of c)u.has(d)&&h.set(d,f);return h}const s=dy.ambiguousCharacterData.value;let r=n.filter(c=>!c.startsWith("_")&&c in s);r.length===0&&(r=["_default"]);let o;for(const c of r){const u=e(s[c]);o=i(o,u)}const a=e(s._common),l=t(a,o);return new dy(l)});A_._locales=new Im(()=>Object.keys(dy.ambiguousCharacterData.value).filter(n=>!n.startsWith("_")));class Qh{static getRawData(){return JSON.parse("[9,10,11,12,13,32,127,160,173,847,1564,4447,4448,6068,6069,6155,6156,6157,6158,7355,7356,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8203,8204,8205,8206,8207,8234,8235,8236,8237,8238,8239,8287,8288,8289,8290,8291,8292,8293,8294,8295,8296,8297,8298,8299,8300,8301,8302,8303,10240,12288,12644,65024,65025,65026,65027,65028,65029,65030,65031,65032,65033,65034,65035,65036,65037,65038,65039,65279,65440,65520,65521,65522,65523,65524,65525,65526,65527,65528,65532,78844,119155,119156,119157,119158,119159,119160,119161,119162,917504,917505,917506,917507,917508,917509,917510,917511,917512,917513,917514,917515,917516,917517,917518,917519,917520,917521,917522,917523,917524,917525,917526,917527,917528,917529,917530,917531,917532,917533,917534,917535,917536,917537,917538,917539,917540,917541,917542,917543,917544,917545,917546,917547,917548,917549,917550,917551,917552,917553,917554,917555,917556,917557,917558,917559,917560,917561,917562,917563,917564,917565,917566,917567,917568,917569,917570,917571,917572,917573,917574,917575,917576,917577,917578,917579,917580,917581,917582,917583,917584,917585,917586,917587,917588,917589,917590,917591,917592,917593,917594,917595,917596,917597,917598,917599,917600,917601,917602,917603,917604,917605,917606,917607,917608,917609,917610,917611,917612,917613,917614,917615,917616,917617,917618,917619,917620,917621,917622,917623,917624,917625,917626,917627,917628,917629,917630,917631,917760,917761,917762,917763,917764,917765,917766,917767,917768,917769,917770,917771,917772,917773,917774,917775,917776,917777,917778,917779,917780,917781,917782,917783,917784,917785,917786,917787,917788,917789,917790,917791,917792,917793,917794,917795,917796,917797,917798,917799,917800,917801,917802,917803,917804,917805,917806,917807,917808,917809,917810,917811,917812,917813,917814,917815,917816,917817,917818,917819,917820,917821,917822,917823,917824,917825,917826,917827,917828,917829,917830,917831,917832,917833,917834,917835,917836,917837,917838,917839,917840,917841,917842,917843,917844,917845,917846,917847,917848,917849,917850,917851,917852,917853,917854,917855,917856,917857,917858,917859,917860,917861,917862,917863,917864,917865,917866,917867,917868,917869,917870,917871,917872,917873,917874,917875,917876,917877,917878,917879,917880,917881,917882,917883,917884,917885,917886,917887,917888,917889,917890,917891,917892,917893,917894,917895,917896,917897,917898,917899,917900,917901,917902,917903,917904,917905,917906,917907,917908,917909,917910,917911,917912,917913,917914,917915,917916,917917,917918,917919,917920,917921,917922,917923,917924,917925,917926,917927,917928,917929,917930,917931,917932,917933,917934,917935,917936,917937,917938,917939,917940,917941,917942,917943,917944,917945,917946,917947,917948,917949,917950,917951,917952,917953,917954,917955,917956,917957,917958,917959,917960,917961,917962,917963,917964,917965,917966,917967,917968,917969,917970,917971,917972,917973,917974,917975,917976,917977,917978,917979,917980,917981,917982,917983,917984,917985,917986,917987,917988,917989,917990,917991,917992,917993,917994,917995,917996,917997,917998,917999]")}static getData(){return this._data||(this._data=new Set(Qh.getRawData())),this._data}static isInvisibleCharacter(e){return Qh.getData().has(e)}static get codePoints(){return Qh.getData()}}Qh._data=void 0;let gb;const v5=globalThis.vscode;if(typeof v5<"u"&&typeof v5.process<"u"){const n=v5.process;gb={get platform(){return n.platform},get arch(){return n.arch},get env(){return n.env},cwd(){return n.cwd()}}}else typeof process<"u"?gb={get platform(){return process.platform},get arch(){return process.arch},get env(){return iJ},cwd(){return iJ.VSCODE_CWD||process.cwd()}}:gb={get platform(){return yr?"win32":Gt?"darwin":"linux"},get arch(){},get env(){return{}},cwd(){return"/"}};const PA=gb.cwd,RA=gb.env,M8e=gb.platform,O8e=65,F8e=97,B8e=90,W8e=122,yp=46,Or=47,ka=92,wg=58,V8e=63;class cge extends Error{constructor(e,t,i){let s;typeof t=="string"&&t.indexOf("not ")===0?(s="must not be",t=t.replace(/^not /,"")):s="must be";const r=e.indexOf(".")!==-1?"property":"argument";let o=`The "${e}" ${r} ${s} of type ${t}`;o+=`. Received type ${typeof i}`,super(o),this.code="ERR_INVALID_ARG_TYPE"}}function H8e(n,e){if(n===null||typeof n!="object")throw new cge(e,"Object",n)}function Ws(n,e){if(typeof n!="string")throw new cge(e,"string",n)}const Tm=M8e==="win32";function Ci(n){return n===Or||n===ka}function Y8(n){return n===Or}function Sg(n){return n>=O8e&&n<=B8e||n>=F8e&&n<=W8e}function MA(n,e,t,i){let s="",r=0,o=-1,a=0,l=0;for(let c=0;c<=n.length;++c){if(c<n.length)l=n.charCodeAt(c);else{if(i(l))break;l=Or}if(i(l)){if(!(o===c-1||a===1))if(a===2){if(s.length<2||r!==2||s.charCodeAt(s.length-1)!==yp||s.charCodeAt(s.length-2)!==yp){if(s.length>2){const u=s.lastIndexOf(t);u===-1?(s="",r=0):(s=s.slice(0,u),r=s.length-1-s.lastIndexOf(t)),o=c,a=0;continue}else if(s.length!==0){s="",r=0,o=c,a=0;continue}}e&&(s+=s.length>0?`${t}..`:"..",r=2)}else s.length>0?s+=`${t}${n.slice(o+1,c)}`:s=n.slice(o+1,c),r=c-o-1;o=c,a=0}else l===yp&&a!==-1?++a:a=-1}return s}function uge(n,e){H8e(e,"pathObject");const t=e.dir||e.root,i=e.base||`${e.name||""}${e.ext||""}`;return t?t===e.root?`${t}${i}`:`${t}${n}${i}`:i}const ta={resolve(...n){let e="",t="",i=!1;for(let s=n.length-1;s>=-1;s--){let r;if(s>=0){if(r=n[s],Ws(r,"path"),r.length===0)continue}else e.length===0?r=PA():(r=RA[`=${e}`]||PA(),(r===void 0||r.slice(0,2).toLowerCase()!==e.toLowerCase()&&r.charCodeAt(2)===ka)&&(r=`${e}\\`));const o=r.length;let a=0,l="",c=!1;const u=r.charCodeAt(0);if(o===1)Ci(u)&&(a=1,c=!0);else if(Ci(u))if(c=!0,Ci(r.charCodeAt(1))){let h=2,d=h;for(;h<o&&!Ci(r.charCodeAt(h));)h++;if(h<o&&h!==d){const f=r.slice(d,h);for(d=h;h<o&&Ci(r.charCodeAt(h));)h++;if(h<o&&h!==d){for(d=h;h<o&&!Ci(r.charCodeAt(h));)h++;(h===o||h!==d)&&(l=`\\\\${f}\\${r.slice(d,h)}`,a=h)}}}else a=1;else Sg(u)&&r.charCodeAt(1)===wg&&(l=r.slice(0,2),a=2,o>2&&Ci(r.charCodeAt(2))&&(c=!0,a=3));if(l.length>0)if(e.length>0){if(l.toLowerCase()!==e.toLowerCase())continue}else e=l;if(i){if(e.length>0)break}else if(t=`${r.slice(a)}\\${t}`,i=c,c&&e.length>0)break}return t=MA(t,!i,"\\",Ci),i?`${e}\\${t}`:`${e}${t}`||"."},normalize(n){Ws(n,"path");const e=n.length;if(e===0)return".";let t=0,i,s=!1;const r=n.charCodeAt(0);if(e===1)return Y8(r)?"\\":n;if(Ci(r))if(s=!0,Ci(n.charCodeAt(1))){let a=2,l=a;for(;a<e&&!Ci(n.charCodeAt(a));)a++;if(a<e&&a!==l){const c=n.slice(l,a);for(l=a;a<e&&Ci(n.charCodeAt(a));)a++;if(a<e&&a!==l){for(l=a;a<e&&!Ci(n.charCodeAt(a));)a++;if(a===e)return`\\\\${c}\\${n.slice(l)}\\`;a!==l&&(i=`\\\\${c}\\${n.slice(l,a)}`,t=a)}}}else t=1;else Sg(r)&&n.charCodeAt(1)===wg&&(i=n.slice(0,2),t=2,e>2&&Ci(n.charCodeAt(2))&&(s=!0,t=3));let o=t<e?MA(n.slice(t),!s,"\\",Ci):"";return o.length===0&&!s&&(o="."),o.length>0&&Ci(n.charCodeAt(e-1))&&(o+="\\"),i===void 0?s?`\\${o}`:o:s?`${i}\\${o}`:`${i}${o}`},isAbsolute(n){Ws(n,"path");const e=n.length;if(e===0)return!1;const t=n.charCodeAt(0);return Ci(t)||e>2&&Sg(t)&&n.charCodeAt(1)===wg&&Ci(n.charCodeAt(2))},join(...n){if(n.length===0)return".";let e,t;for(let r=0;r<n.length;++r){const o=n[r];Ws(o,"path"),o.length>0&&(e===void 0?e=t=o:e+=`\\${o}`)}if(e===void 0)return".";let i=!0,s=0;if(typeof t=="string"&&Ci(t.charCodeAt(0))){++s;const r=t.length;r>1&&Ci(t.charCodeAt(1))&&(++s,r>2&&(Ci(t.charCodeAt(2))?++s:i=!1))}if(i){for(;s<e.length&&Ci(e.charCodeAt(s));)s++;s>=2&&(e=`\\${e.slice(s)}`)}return ta.normalize(e)},relative(n,e){if(Ws(n,"from"),Ws(e,"to"),n===e)return"";const t=ta.resolve(n),i=ta.resolve(e);if(t===i||(n=t.toLowerCase(),e=i.toLowerCase(),n===e))return"";let s=0;for(;s<n.length&&n.charCodeAt(s)===ka;)s++;let r=n.length;for(;r-1>s&&n.charCodeAt(r-1)===ka;)r--;const o=r-s;let a=0;for(;a<e.length&&e.charCodeAt(a)===ka;)a++;let l=e.length;for(;l-1>a&&e.charCodeAt(l-1)===ka;)l--;const c=l-a,u=o<c?o:c;let h=-1,d=0;for(;d<u;d++){const g=n.charCodeAt(s+d);if(g!==e.charCodeAt(a+d))break;g===ka&&(h=d)}if(d!==u){if(h===-1)return i}else{if(c>u){if(e.charCodeAt(a+d)===ka)return i.slice(a+d+1);if(d===2)return i.slice(a+d)}o>u&&(n.charCodeAt(s+d)===ka?h=d:d===2&&(h=3)),h===-1&&(h=0)}let f="";for(d=s+h+1;d<=r;++d)(d===r||n.charCodeAt(d)===ka)&&(f+=f.length===0?"..":"\\..");return a+=h,f.length>0?`${f}${i.slice(a,l)}`:(i.charCodeAt(a)===ka&&++a,i.slice(a,l))},toNamespacedPath(n){if(typeof n!="string"||n.length===0)return n;const e=ta.resolve(n);if(e.length<=2)return n;if(e.charCodeAt(0)===ka){if(e.charCodeAt(1)===ka){const t=e.charCodeAt(2);if(t!==V8e&&t!==yp)return`\\\\?\\UNC\\${e.slice(2)}`}}else if(Sg(e.charCodeAt(0))&&e.charCodeAt(1)===wg&&e.charCodeAt(2)===ka)return`\\\\?\\${e}`;return n},dirname(n){Ws(n,"path");const e=n.length;if(e===0)return".";let t=-1,i=0;const s=n.charCodeAt(0);if(e===1)return Ci(s)?n:".";if(Ci(s)){if(t=i=1,Ci(n.charCodeAt(1))){let a=2,l=a;for(;a<e&&!Ci(n.charCodeAt(a));)a++;if(a<e&&a!==l){for(l=a;a<e&&Ci(n.charCodeAt(a));)a++;if(a<e&&a!==l){for(l=a;a<e&&!Ci(n.charCodeAt(a));)a++;if(a===e)return n;a!==l&&(t=i=a+1)}}}}else Sg(s)&&n.charCodeAt(1)===wg&&(t=e>2&&Ci(n.charCodeAt(2))?3:2,i=t);let r=-1,o=!0;for(let a=e-1;a>=i;--a)if(Ci(n.charCodeAt(a))){if(!o){r=a;break}}else o=!1;if(r===-1){if(t===-1)return".";r=t}return n.slice(0,r)},basename(n,e){e!==void 0&&Ws(e,"ext"),Ws(n,"path");let t=0,i=-1,s=!0,r;if(n.length>=2&&Sg(n.charCodeAt(0))&&n.charCodeAt(1)===wg&&(t=2),e!==void 0&&e.length>0&&e.length<=n.length){if(e===n)return"";let o=e.length-1,a=-1;for(r=n.length-1;r>=t;--r){const l=n.charCodeAt(r);if(Ci(l)){if(!s){t=r+1;break}}else a===-1&&(s=!1,a=r+1),o>=0&&(l===e.charCodeAt(o)?--o===-1&&(i=r):(o=-1,i=a))}return t===i?i=a:i===-1&&(i=n.length),n.slice(t,i)}for(r=n.length-1;r>=t;--r)if(Ci(n.charCodeAt(r))){if(!s){t=r+1;break}}else i===-1&&(s=!1,i=r+1);return i===-1?"":n.slice(t,i)},extname(n){Ws(n,"path");let e=0,t=-1,i=0,s=-1,r=!0,o=0;n.length>=2&&n.charCodeAt(1)===wg&&Sg(n.charCodeAt(0))&&(e=i=2);for(let a=n.length-1;a>=e;--a){const l=n.charCodeAt(a);if(Ci(l)){if(!r){i=a+1;break}continue}s===-1&&(r=!1,s=a+1),l===yp?t===-1?t=a:o!==1&&(o=1):t!==-1&&(o=-1)}return t===-1||s===-1||o===0||o===1&&t===s-1&&t===i+1?"":n.slice(t,s)},format:uge.bind(null,"\\"),parse(n){Ws(n,"path");const e={root:"",dir:"",base:"",ext:"",name:""};if(n.length===0)return e;const t=n.length;let i=0,s=n.charCodeAt(0);if(t===1)return Ci(s)?(e.root=e.dir=n,e):(e.base=e.name=n,e);if(Ci(s)){if(i=1,Ci(n.charCodeAt(1))){let h=2,d=h;for(;h<t&&!Ci(n.charCodeAt(h));)h++;if(h<t&&h!==d){for(d=h;h<t&&Ci(n.charCodeAt(h));)h++;if(h<t&&h!==d){for(d=h;h<t&&!Ci(n.charCodeAt(h));)h++;h===t?i=h:h!==d&&(i=h+1)}}}}else if(Sg(s)&&n.charCodeAt(1)===wg){if(t<=2)return e.root=e.dir=n,e;if(i=2,Ci(n.charCodeAt(2))){if(t===3)return e.root=e.dir=n,e;i=3}}i>0&&(e.root=n.slice(0,i));let r=-1,o=i,a=-1,l=!0,c=n.length-1,u=0;for(;c>=i;--c){if(s=n.charCodeAt(c),Ci(s)){if(!l){o=c+1;break}continue}a===-1&&(l=!1,a=c+1),s===yp?r===-1?r=c:u!==1&&(u=1):r!==-1&&(u=-1)}return a!==-1&&(r===-1||u===0||u===1&&r===a-1&&r===o+1?e.base=e.name=n.slice(o,a):(e.name=n.slice(o,r),e.base=n.slice(o,a),e.ext=n.slice(r,a))),o>0&&o!==i?e.dir=n.slice(0,o-1):e.dir=e.root,e},sep:"\\",delimiter:";",win32:null,posix:null},$8e=(()=>{if(Tm){const n=/\\/g;return()=>{const e=PA().replace(n,"/");return e.slice(e.indexOf("/"))}}return()=>PA()})(),ps={resolve(...n){let e="",t=!1;for(let i=n.length-1;i>=-1&&!t;i--){const s=i>=0?n[i]:$8e();Ws(s,"path"),s.length!==0&&(e=`${s}/${e}`,t=s.charCodeAt(0)===Or)}return e=MA(e,!t,"/",Y8),t?`/${e}`:e.length>0?e:"."},normalize(n){if(Ws(n,"path"),n.length===0)return".";const e=n.charCodeAt(0)===Or,t=n.charCodeAt(n.length-1)===Or;return n=MA(n,!e,"/",Y8),n.length===0?e?"/":t?"./":".":(t&&(n+="/"),e?`/${n}`:n)},isAbsolute(n){return Ws(n,"path"),n.length>0&&n.charCodeAt(0)===Or},join(...n){if(n.length===0)return".";let e;for(let t=0;t<n.length;++t){const i=n[t];Ws(i,"path"),i.length>0&&(e===void 0?e=i:e+=`/${i}`)}return e===void 0?".":ps.normalize(e)},relative(n,e){if(Ws(n,"from"),Ws(e,"to"),n===e||(n=ps.resolve(n),e=ps.resolve(e),n===e))return"";const t=1,i=n.length,s=i-t,r=1,o=e.length-r,a=s<o?s:o;let l=-1,c=0;for(;c<a;c++){const h=n.charCodeAt(t+c);if(h!==e.charCodeAt(r+c))break;h===Or&&(l=c)}if(c===a)if(o>a){if(e.charCodeAt(r+c)===Or)return e.slice(r+c+1);if(c===0)return e.slice(r+c)}else s>a&&(n.charCodeAt(t+c)===Or?l=c:c===0&&(l=0));let u="";for(c=t+l+1;c<=i;++c)(c===i||n.charCodeAt(c)===Or)&&(u+=u.length===0?"..":"/..");return`${u}${e.slice(r+l)}`},toNamespacedPath(n){return n},dirname(n){if(Ws(n,"path"),n.length===0)return".";const e=n.charCodeAt(0)===Or;let t=-1,i=!0;for(let s=n.length-1;s>=1;--s)if(n.charCodeAt(s)===Or){if(!i){t=s;break}}else i=!1;return t===-1?e?"/":".":e&&t===1?"//":n.slice(0,t)},basename(n,e){e!==void 0&&Ws(e,"ext"),Ws(n,"path");let t=0,i=-1,s=!0,r;if(e!==void 0&&e.length>0&&e.length<=n.length){if(e===n)return"";let o=e.length-1,a=-1;for(r=n.length-1;r>=0;--r){const l=n.charCodeAt(r);if(l===Or){if(!s){t=r+1;break}}else a===-1&&(s=!1,a=r+1),o>=0&&(l===e.charCodeAt(o)?--o===-1&&(i=r):(o=-1,i=a))}return t===i?i=a:i===-1&&(i=n.length),n.slice(t,i)}for(r=n.length-1;r>=0;--r)if(n.charCodeAt(r)===Or){if(!s){t=r+1;break}}else i===-1&&(s=!1,i=r+1);return i===-1?"":n.slice(t,i)},extname(n){Ws(n,"path");let e=-1,t=0,i=-1,s=!0,r=0;for(let o=n.length-1;o>=0;--o){const a=n.charCodeAt(o);if(a===Or){if(!s){t=o+1;break}continue}i===-1&&(s=!1,i=o+1),a===yp?e===-1?e=o:r!==1&&(r=1):e!==-1&&(r=-1)}return e===-1||i===-1||r===0||r===1&&e===i-1&&e===t+1?"":n.slice(e,i)},format:uge.bind(null,"/"),parse(n){Ws(n,"path");const e={root:"",dir:"",base:"",ext:"",name:""};if(n.length===0)return e;const t=n.charCodeAt(0)===Or;let i;t?(e.root="/",i=1):i=0;let s=-1,r=0,o=-1,a=!0,l=n.length-1,c=0;for(;l>=i;--l){const u=n.charCodeAt(l);if(u===Or){if(!a){r=l+1;break}continue}o===-1&&(a=!1,o=l+1),u===yp?s===-1?s=l:c!==1&&(c=1):s!==-1&&(c=-1)}if(o!==-1){const u=r===0&&t?1:r;s===-1||c===0||c===1&&s===o-1&&s===r+1?e.base=e.name=n.slice(u,o):(e.name=n.slice(u,s),e.base=n.slice(u,o),e.ext=n.slice(s,o))}return r>0?e.dir=n.slice(0,r-1):t&&(e.dir="/"),e},sep:"/",delimiter:":",win32:null,posix:null};ps.win32=ta.win32=ta;ps.posix=ta.posix=ps;const hge=Tm?ta.normalize:ps.normalize,z8e=Tm?ta.resolve:ps.resolve,U8e=Tm?ta.relative:ps.relative,dge=Tm?ta.dirname:ps.dirname,Cp=Tm?ta.basename:ps.basename,j8e=Tm?ta.extname:ps.extname,Su=Tm?ta.sep:ps.sep,q8e=/^\w[\w\d+.-]*$/,K8e=/^\//,G8e=/^\/\//;function Y8e(n,e){if(!n.scheme&&e)throw new Error(`[UriError]: Scheme is missing: {scheme: "", authority: "${n.authority}", path: "${n.path}", query: "${n.query}", fragment: "${n.fragment}"}`);if(n.scheme&&!q8e.test(n.scheme))throw new Error("[UriError]: Scheme contains illegal characters.");if(n.path){if(n.authority){if(!K8e.test(n.path))throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash ("/") character')}else if(G8e.test(n.path))throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")')}}function Z8e(n,e){return!n&&!e?"file":n}function X8e(n,e){switch(n){case"https":case"http":case"file":e?e[0]!==iu&&(e=iu+e):e=iu;break}return e}const Yn="",iu="/",Q8e=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/;class it{static isUri(e){return e instanceof it?!0:e?typeof e.authority=="string"&&typeof e.fragment=="string"&&typeof e.path=="string"&&typeof e.query=="string"&&typeof e.scheme=="string"&&typeof e.fsPath=="string"&&typeof e.with=="function"&&typeof e.toString=="function":!1}constructor(e,t,i,s,r,o=!1){typeof e=="object"?(this.scheme=e.scheme||Yn,this.authority=e.authority||Yn,this.path=e.path||Yn,this.query=e.query||Yn,this.fragment=e.fragment||Yn):(this.scheme=Z8e(e,o),this.authority=t||Yn,this.path=X8e(this.scheme,i||Yn),this.query=s||Yn,this.fragment=r||Yn,Y8e(this,o))}get fsPath(){return OA(this,!1)}with(e){if(!e)return this;let{scheme:t,authority:i,path:s,query:r,fragment:o}=e;return t===void 0?t=this.scheme:t===null&&(t=Yn),i===void 0?i=this.authority:i===null&&(i=Yn),s===void 0?s=this.path:s===null&&(s=Yn),r===void 0?r=this.query:r===null&&(r=Yn),o===void 0?o=this.fragment:o===null&&(o=Yn),t===this.scheme&&i===this.authority&&s===this.path&&r===this.query&&o===this.fragment?this:new Xv(t,i,s,r,o)}static parse(e,t=!1){const i=Q8e.exec(e);return i?new Xv(i[2]||Yn,ZD(i[4]||Yn),ZD(i[5]||Yn),ZD(i[7]||Yn),ZD(i[9]||Yn),t):new Xv(Yn,Yn,Yn,Yn,Yn)}static file(e){let t=Yn;if(yr&&(e=e.replace(/\\/g,iu)),e[0]===iu&&e[1]===iu){const i=e.indexOf(iu,2);i===-1?(t=e.substring(2),e=iu):(t=e.substring(2,i),e=e.substring(i)||iu)}return new Xv("file",t,e,Yn,Yn)}static from(e,t){return new Xv(e.scheme,e.authority,e.path,e.query,e.fragment,t)}static joinPath(e,...t){if(!e.path)throw new Error("[UriError]: cannot call joinPath on URI without path");let i;return yr&&e.scheme==="file"?i=it.file(ta.join(OA(e,!0),...t)).path:i=ps.join(e.path,...t),e.with({path:i})}toString(e=!1){return Z8(this,e)}toJSON(){return this}static revive(e){var t,i;if(e){if(e instanceof it)return e;{const s=new Xv(e);return s._formatted=(t=e.external)!==null&&t!==void 0?t:null,s._fsPath=e._sep===fge&&(i=e.fsPath)!==null&&i!==void 0?i:null,s}}else return e}}const fge=yr?1:void 0;let Xv=class extends it{constructor(){super(...arguments),this._formatted=null,this._fsPath=null}get fsPath(){return this._fsPath||(this._fsPath=OA(this,!1)),this._fsPath}toString(e=!1){return e?Z8(this,!0):(this._formatted||(this._formatted=Z8(this,!1)),this._formatted)}toJSON(){const e={$mid:1};return this._fsPath&&(e.fsPath=this._fsPath,e._sep=fge),this._formatted&&(e.external=this._formatted),this.path&&(e.path=this.path),this.scheme&&(e.scheme=this.scheme),this.authority&&(e.authority=this.authority),this.query&&(e.query=this.query),this.fragment&&(e.fragment=this.fragment),e}};const gge={58:"%3A",47:"%2F",63:"%3F",35:"%23",91:"%5B",93:"%5D",64:"%40",33:"%21",36:"%24",38:"%26",39:"%27",40:"%28",41:"%29",42:"%2A",43:"%2B",44:"%2C",59:"%3B",61:"%3D",32:"%20"};function yJ(n,e,t){let i,s=-1;for(let r=0;r<n.length;r++){const o=n.charCodeAt(r);if(o>=97&&o<=122||o>=65&&o<=90||o>=48&&o<=57||o===45||o===46||o===95||o===126||e&&o===47||t&&o===91||t&&o===93||t&&o===58)s!==-1&&(i+=encodeURIComponent(n.substring(s,r)),s=-1),i!==void 0&&(i+=n.charAt(r));else{i===void 0&&(i=n.substr(0,r));const a=gge[o];a!==void 0?(s!==-1&&(i+=encodeURIComponent(n.substring(s,r)),s=-1),i+=a):s===-1&&(s=r)}}return s!==-1&&(i+=encodeURIComponent(n.substring(s))),i!==void 0?i:n}function J8e(n){let e;for(let t=0;t<n.length;t++){const i=n.charCodeAt(t);i===35||i===63?(e===void 0&&(e=n.substr(0,t)),e+=gge[i]):e!==void 0&&(e+=n[t])}return e!==void 0?e:n}function OA(n,e){let t;return n.authority&&n.path.length>1&&n.scheme==="file"?t=`//${n.authority}${n.path}`:n.path.charCodeAt(0)===47&&(n.path.charCodeAt(1)>=65&&n.path.charCodeAt(1)<=90||n.path.charCodeAt(1)>=97&&n.path.charCodeAt(1)<=122)&&n.path.charCodeAt(2)===58?e?t=n.path.substr(1):t=n.path[1].toLowerCase()+n.path.substr(2):t=n.path,yr&&(t=t.replace(/\//g,"\\")),t}function Z8(n,e){const t=e?J8e:yJ;let i="",{scheme:s,authority:r,path:o,query:a,fragment:l}=n;if(s&&(i+=s,i+=":"),(r||s==="file")&&(i+=iu,i+=iu),r){let c=r.indexOf("@");if(c!==-1){const u=r.substr(0,c);r=r.substr(c+1),c=u.lastIndexOf(":"),c===-1?i+=t(u,!1,!1):(i+=t(u.substr(0,c),!1,!1),i+=":",i+=t(u.substr(c+1),!1,!0)),i+="@"}r=r.toLowerCase(),c=r.lastIndexOf(":"),c===-1?i+=t(r,!1,!0):(i+=t(r.substr(0,c),!1,!0),i+=r.substr(c))}if(o){if(o.length>=3&&o.charCodeAt(0)===47&&o.charCodeAt(2)===58){const c=o.charCodeAt(1);c>=65&&c<=90&&(o=`/${String.fromCharCode(c+32)}:${o.substr(3)}`)}else if(o.length>=2&&o.charCodeAt(1)===58){const c=o.charCodeAt(0);c>=65&&c<=90&&(o=`${String.fromCharCode(c+32)}:${o.substr(2)}`)}i+=t(o,!0,!1)}return a&&(i+="?",i+=t(a,!1,!1)),l&&(i+="#",i+=e?l:yJ(l,!1,!1)),i}function pge(n){try{return decodeURIComponent(n)}catch{return n.length>3?n.substr(0,3)+pge(n.substr(3)):n}}const CJ=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function ZD(n){return n.match(CJ)?n.replace(CJ,e=>pge(e)):n}var wt;(function(n){n.inMemory="inmemory",n.vscode="vscode",n.internal="private",n.walkThrough="walkThrough",n.walkThroughSnippet="walkThroughSnippet",n.http="http",n.https="https",n.file="file",n.mailto="mailto",n.untitled="untitled",n.data="data",n.command="command",n.vscodeRemote="vscode-remote",n.vscodeRemoteResource="vscode-remote-resource",n.vscodeManagedRemoteResource="vscode-managed-remote-resource",n.vscodeUserData="vscode-userdata",n.vscodeCustomEditor="vscode-custom-editor",n.vscodeNotebookCell="vscode-notebook-cell",n.vscodeNotebookCellMetadata="vscode-notebook-cell-metadata",n.vscodeNotebookCellOutput="vscode-notebook-cell-output",n.vscodeInteractiveInput="vscode-interactive-input",n.vscodeSettings="vscode-settings",n.vscodeWorkspaceTrust="vscode-workspace-trust",n.vscodeTerminal="vscode-terminal",n.vscodeChatSesssion="vscode-chat-editor",n.webviewPanel="webview-panel",n.vscodeWebview="vscode-webview",n.extension="extension",n.vscodeFileResource="vscode-file",n.tmp="tmp",n.vsls="vsls",n.vscodeSourceControl="vscode-scm"})(wt||(wt={}));function Uj(n,e){return it.isUri(n)?R0(n.scheme,e):Bj(n,e+":")}function wJ(n,...e){return e.some(t=>Uj(n,t))}const e9e="tkn";class t9e{constructor(){this._hosts=Object.create(null),this._ports=Object.create(null),this._connectionTokens=Object.create(null),this._preferredWebSchema="http",this._delegate=null,this._remoteResourcesPath=`/${wt.vscodeRemoteResource}`}setPreferredWebSchema(e){this._preferredWebSchema=e}rewrite(e){if(this._delegate)try{return this._delegate(e)}catch(a){return vt(a),e}const t=e.authority;let i=this._hosts[t];i&&i.indexOf(":")!==-1&&i.indexOf("[")===-1&&(i=`[${i}]`);const s=this._ports[t],r=this._connectionTokens[t];let o=`path=${encodeURIComponent(e.path)}`;return typeof r=="string"&&(o+=`&${e9e}=${encodeURIComponent(r)}`),it.from({scheme:Dm?this._preferredWebSchema:wt.vscodeRemoteResource,authority:`${i}:${s}`,path:this._remoteResourcesPath,query:o})}}const mge=new t9e,i9e="vscode-app";class gL{uriToBrowserUri(e){return e.scheme===wt.vscodeRemote?mge.rewrite(e):e.scheme===wt.file&&(Cu||IBe===`${wt.vscodeFileResource}://${gL.FALLBACK_AUTHORITY}`)?e.with({scheme:wt.vscodeFileResource,authority:e.authority||gL.FALLBACK_AUTHORITY,query:null,fragment:null}):e}}gL.FALLBACK_AUTHORITY=i9e;const _ge=new gL;var SJ;(function(n){const e=new Map([["1",{"Cross-Origin-Opener-Policy":"same-origin"}],["2",{"Cross-Origin-Embedder-Policy":"require-corp"}],["3",{"Cross-Origin-Opener-Policy":"same-origin","Cross-Origin-Embedder-Policy":"require-corp"}]]);n.CoopAndCoep=Object.freeze(e.get("3"));const t="vscode-coi";function i(r){let o;typeof r=="string"?o=new URL(r).searchParams:r instanceof URL?o=r.searchParams:it.isUri(r)&&(o=new URL(r.toString(!0)).searchParams);const a=o==null?void 0:o.get(t);if(a)return e.get(a)}n.getHeadersFromQuery=i;function s(r,o,a){if(!globalThis.crossOriginIsolated)return;const l=o&&a?"3":a?"2":"1";r instanceof URLSearchParams?r.set(t,l):r[t]=l}n.addSearchParam=s})(SJ||(SJ={}));function jj(n){return uO(n,0)}function uO(n,e){switch(typeof n){case"object":return n===null?yf(349,e):Array.isArray(n)?s9e(n,e):r9e(n,e);case"string":return qj(n,e);case"boolean":return n9e(n,e);case"number":return yf(n,e);case"undefined":return yf(937,e);default:return yf(617,e)}}function yf(n,e){return(e<<5)-e+n|0}function n9e(n,e){return yf(n?433:863,e)}function qj(n,e){e=yf(149417,e);for(let t=0,i=n.length;t<i;t++)e=yf(n.charCodeAt(t),e);return e}function s9e(n,e){return e=yf(104579,e),n.reduce((t,i)=>uO(i,t),e)}function r9e(n,e){return e=yf(181387,e),Object.keys(n).sort().reduce((t,i)=>(t=qj(i,t),uO(n[i],t)),e)}function b5(n,e,t=32){const i=t-e,s=~((1<<i)-1);return(n<<e|(s&n)>>>i)>>>0}function kJ(n,e=0,t=n.byteLength,i=0){for(let s=0;s<t;s++)n[e+s]=i}function o9e(n,e,t="0"){for(;n.length<e;)n=t+n;return n}function kw(n,e=32){return n instanceof ArrayBuffer?Array.from(new Uint8Array(n)).map(t=>t.toString(16).padStart(2,"0")).join(""):o9e((n>>>0).toString(16),e/4)}class hO{constructor(){this._h0=1732584193,this._h1=4023233417,this._h2=2562383102,this._h3=271733878,this._h4=3285377520,this._buff=new Uint8Array(67),this._buffDV=new DataView(this._buff.buffer),this._buffLen=0,this._totalLen=0,this._leftoverHighSurrogate=0,this._finished=!1}update(e){const t=e.length;if(t===0)return;const i=this._buff;let s=this._buffLen,r=this._leftoverHighSurrogate,o,a;for(r!==0?(o=r,a=-1,r=0):(o=e.charCodeAt(0),a=0);;){let l=o;if(As(o))if(a+1<t){const c=e.charCodeAt(a+1);N_(c)?(a++,l=Wj(o,c)):l=65533}else{r=o;break}else N_(o)&&(l=65533);if(s=this._push(i,s,l),a++,a<t)o=e.charCodeAt(a);else break}this._buffLen=s,this._leftoverHighSurrogate=r}_push(e,t,i){return i<128?e[t++]=i:i<2048?(e[t++]=192|(i&1984)>>>6,e[t++]=128|(i&63)>>>0):i<65536?(e[t++]=224|(i&61440)>>>12,e[t++]=128|(i&4032)>>>6,e[t++]=128|(i&63)>>>0):(e[t++]=240|(i&1835008)>>>18,e[t++]=128|(i&258048)>>>12,e[t++]=128|(i&4032)>>>6,e[t++]=128|(i&63)>>>0),t>=64&&(this._step(),t-=64,this._totalLen+=64,e[0]=e[64],e[1]=e[65],e[2]=e[66]),t}digest(){return this._finished||(this._finished=!0,this._leftoverHighSurrogate&&(this._leftoverHighSurrogate=0,this._buffLen=this._push(this._buff,this._buffLen,65533)),this._totalLen+=this._buffLen,this._wrapUp()),kw(this._h0)+kw(this._h1)+kw(this._h2)+kw(this._h3)+kw(this._h4)}_wrapUp(){this._buff[this._buffLen++]=128,kJ(this._buff,this._buffLen),this._buffLen>56&&(this._step(),kJ(this._buff));const e=8*this._totalLen;this._buffDV.setUint32(56,Math.floor(e/4294967296),!1),this._buffDV.setUint32(60,e%4294967296,!1),this._step()}_step(){const e=hO._bigBlock32,t=this._buffDV;for(let h=0;h<64;h+=4)e.setUint32(h,t.getUint32(h,!1),!1);for(let h=64;h<320;h+=4)e.setUint32(h,b5(e.getUint32(h-12,!1)^e.getUint32(h-32,!1)^e.getUint32(h-56,!1)^e.getUint32(h-64,!1),1),!1);let i=this._h0,s=this._h1,r=this._h2,o=this._h3,a=this._h4,l,c,u;for(let h=0;h<80;h++)h<20?(l=s&r|~s&o,c=1518500249):h<40?(l=s^r^o,c=1859775393):h<60?(l=s&r|s&o|r&o,c=2400959708):(l=s^r^o,c=3395469782),u=b5(i,5)+l+a+c+e.getUint32(h*4,!1)&4294967295,a=o,o=r,r=b5(s,30),s=i,i=u;this._h0=this._h0+i&4294967295,this._h1=this._h1+s&4294967295,this._h2=this._h2+r&4294967295,this._h3=this._h3+o&4294967295,this._h4=this._h4+a&4294967295}}hO._bigBlock32=new DataView(new ArrayBuffer(320));const{registerWindow:ewt,getWindow:pt,getDocument:twt,getWindows:vge,getWindowsCount:a9e,getWindowId:LJ,getWindowById:iwt,hasWindow:nwt,onDidRegisterWindow:Kj,onWillUnregisterWindow:l9e,onDidUnregisterWindow:swt}=function(){const n=new Map;sBe(mn,1),n.set(mn.vscodeWindowId,{window:mn,disposables:new xe});const e=new ue,t=new ue,i=new ue;return{onDidRegisterWindow:e.event,onWillUnregisterWindow:i.event,onDidUnregisterWindow:t.event,registerWindow(s){if(n.has(s.vscodeWindowId))return pe.None;const r=new xe,o={window:s,disposables:r.add(new xe)};return n.set(s.vscodeWindowId,o),r.add(st(()=>{n.delete(s.vscodeWindowId),t.fire(s)})),r.add(Ce(s,We.BEFORE_UNLOAD,()=>{i.fire(s)})),e.fire(o),r},getWindows(){return n.values()},getWindowsCount(){return n.size},getWindowId(s){return s.vscodeWindowId},hasWindow(s){return n.has(s)},getWindowById(s){return n.get(s)},getWindow(s){var r;const o=s;if(!((r=o==null?void 0:o.ownerDocument)===null||r===void 0)&&r.defaultView)return o.ownerDocument.defaultView.window;const a=s;return a!=null&&a.view?a.view.window:mn},getDocument(s){return pt(s).document}}}();function ir(n){for(;n.firstChild;)n.firstChild.remove()}class c9e{constructor(e,t,i,s){this._node=e,this._type=t,this._handler=i,this._options=s||!1,this._node.addEventListener(this._type,this._handler,this._options)}dispose(){this._handler&&(this._node.removeEventListener(this._type,this._handler,this._options),this._node=null,this._handler=null)}}function Ce(n,e,t,i){return new c9e(n,e,t,i)}function bge(n,e){return function(t){return e(new ac(n,t))}}function u9e(n){return function(e){return n(new Ki(e))}}const Mn=function(e,t,i,s){let r=i;return t==="click"||t==="mousedown"?r=bge(pt(e),i):(t==="keydown"||t==="keypress"||t==="keyup")&&(r=u9e(i)),Ce(e,t,r,s)},h9e=function(e,t,i){const s=bge(pt(e),t);return d9e(e,s,i)};function d9e(n,e,t){return Ce(n,Du&&Aj.pointerEvents?We.POINTER_DOWN:We.MOUSE_DOWN,e,t)}function cS(n,e,t){return ZS(n,e,t)}class y5 extends Kfe{constructor(e,t){super(e,t)}}let FA,ua;class Gj extends Oj{cancelAndSet(e,t,i){return super.cancelAndSet(e,t,i)}}class C5{constructor(e,t=0){this._runner=e,this.priority=t,this._canceled=!1}dispose(){this._canceled=!0}execute(){if(!this._canceled)try{this._runner()}catch(e){vt(e)}}static sort(e,t){return t.priority-e.priority}}(function(){const n=new Map,e=new Map,t=new Map,i=new Map,s=r=>{var o;t.set(r,!1);const a=(o=n.get(r))!==null&&o!==void 0?o:[];for(e.set(r,a),n.set(r,[]),i.set(r,!0);a.length>0;)a.sort(C5.sort),a.shift().execute();i.set(r,!1)};ua=(r,o,a=0)=>{const l=LJ(r),c=new C5(o,a);let u=n.get(l);return u||(u=[],n.set(l,u)),u.push(c),t.get(l)||(t.set(l,!0),r.requestAnimationFrame(()=>s(l))),c},FA=(r,o,a)=>{const l=LJ(r);if(i.get(l)){const c=new C5(o,a);let u=e.get(l);return u||(u=[],e.set(l,u)),u.push(c),c}else return ua(r,o,a)}})();function dO(n){return pt(n).getComputedStyle(n,null)}function Zp(n,e){const t=pt(n),i=t.document;if(n!==i.body)return new ni(n.clientWidth,n.clientHeight);if(Du&&(t!=null&&t.visualViewport))return new ni(t.visualViewport.width,t.visualViewport.height);if(t!=null&&t.innerWidth&&t.innerHeight)return new ni(t.innerWidth,t.innerHeight);if(i.body&&i.body.clientWidth&&i.body.clientHeight)return new ni(i.body.clientWidth,i.body.clientHeight);if(i.documentElement&&i.documentElement.clientWidth&&i.documentElement.clientHeight)return new ni(i.documentElement.clientWidth,i.documentElement.clientHeight);if(e)return Zp(e);throw new Error("Unable to figure out browser width and height")}class $n{static convertToPixels(e,t){return parseFloat(t)||0}static getDimension(e,t,i){const s=dO(e),r=s?s.getPropertyValue(t):"0";return $n.convertToPixels(e,r)}static getBorderLeftWidth(e){return $n.getDimension(e,"border-left-width","borderLeftWidth")}static getBorderRightWidth(e){return $n.getDimension(e,"border-right-width","borderRightWidth")}static getBorderTopWidth(e){return $n.getDimension(e,"border-top-width","borderTopWidth")}static getBorderBottomWidth(e){return $n.getDimension(e,"border-bottom-width","borderBottomWidth")}static getPaddingLeft(e){return $n.getDimension(e,"padding-left","paddingLeft")}static getPaddingRight(e){return $n.getDimension(e,"padding-right","paddingRight")}static getPaddingTop(e){return $n.getDimension(e,"padding-top","paddingTop")}static getPaddingBottom(e){return $n.getDimension(e,"padding-bottom","paddingBottom")}static getMarginLeft(e){return $n.getDimension(e,"margin-left","marginLeft")}static getMarginTop(e){return $n.getDimension(e,"margin-top","marginTop")}static getMarginRight(e){return $n.getDimension(e,"margin-right","marginRight")}static getMarginBottom(e){return $n.getDimension(e,"margin-bottom","marginBottom")}}class ni{constructor(e,t){this.width=e,this.height=t}with(e=this.width,t=this.height){return e!==this.width||t!==this.height?new ni(e,t):this}static is(e){return typeof e=="object"&&typeof e.height=="number"&&typeof e.width=="number"}static lift(e){return e instanceof ni?e:new ni(e.width,e.height)}static equals(e,t){return e===t?!0:!e||!t?!1:e.width===t.width&&e.height===t.height}}ni.None=new ni(0,0);function yge(n){let e=n.offsetParent,t=n.offsetTop,i=n.offsetLeft;for(;(n=n.parentNode)!==null&&n!==n.ownerDocument.body&&n!==n.ownerDocument.documentElement;){t-=n.scrollTop;const s=Cge(n)?null:dO(n);s&&(i-=s.direction!=="rtl"?n.scrollLeft:-n.scrollLeft),n===e&&(i+=$n.getBorderLeftWidth(n),t+=$n.getBorderTopWidth(n),t+=n.offsetTop,i+=n.offsetLeft,e=n.offsetParent)}return{left:i,top:t}}function f9e(n,e,t){typeof e=="number"&&(n.style.width=`${e}px`),typeof t=="number"&&(n.style.height=`${t}px`)}function ys(n){const e=n.getBoundingClientRect(),t=pt(n);return{left:e.left+t.scrollX,top:e.top+t.scrollY,width:e.width,height:e.height}}function g9e(n){let e=n,t=1;do{const i=dO(e).zoom;i!=null&&i!=="1"&&(t*=i),e=e.parentElement}while(e!==null&&e!==e.ownerDocument.documentElement);return t}function Lo(n){const e=$n.getMarginLeft(n)+$n.getMarginRight(n);return n.offsetWidth+e}function w5(n){const e=$n.getBorderLeftWidth(n)+$n.getBorderRightWidth(n),t=$n.getPaddingLeft(n)+$n.getPaddingRight(n);return n.offsetWidth-e-t}function p9e(n){const e=$n.getBorderTopWidth(n)+$n.getBorderBottomWidth(n),t=$n.getPaddingTop(n)+$n.getPaddingBottom(n);return n.offsetHeight-e-t}function M1(n){const e=$n.getMarginTop(n)+$n.getMarginBottom(n);return n.offsetHeight+e}function pr(n,e){return!!(e!=null&&e.contains(n))}function m9e(n,e,t){for(;n&&n.nodeType===n.ELEMENT_NODE;){if(n.classList.contains(e))return n;if(t){if(typeof t=="string"){if(n.classList.contains(t))return null}else if(n===t)return null}n=n.parentNode}return null}function S5(n,e,t){return!!m9e(n,e,t)}function Cge(n){return n&&!!n.host&&!!n.mode}function BA(n){return!!P_(n)}function P_(n){for(var e;n.parentNode;){if(n===((e=n.ownerDocument)===null||e===void 0?void 0:e.body))return null;n=n.parentNode}return Cge(n)?n:null}function Ka(){let n=LC().activeElement;for(;n!=null&&n.shadowRoot;)n=n.shadowRoot.activeElement;return n}function fO(n){return n.ownerDocument.activeElement===n}function _9e(n){return pr(n.ownerDocument.activeElement,n)}function LC(){var n;return a9e()<=1?document:(n=Array.from(vge()).map(({window:t})=>t.document).find(t=>t.hasFocus()))!==null&&n!==void 0?n:document}function v9e(){var n,e;return(e=(n=LC().defaultView)===null||n===void 0?void 0:n.window)!==null&&e!==void 0?e:mn}const Yj=new Map;function Fl(n=mn.document.head,e,t){const i=document.createElement("style");if(i.type="text/css",i.media="screen",e==null||e(i),n.appendChild(i),t&&t.add(st(()=>n.removeChild(i))),n===mn.document.head){const s=new Set;Yj.set(i,s);for(const{window:r,disposables:o}of vge()){if(r===mn)continue;const a=o.add(b9e(i,s,r));t==null||t.add(a)}}return i}function b9e(n,e,t){var i,s;const r=new xe,o=n.cloneNode(!0);t.document.head.appendChild(o),r.add(st(()=>t.document.head.removeChild(o)));for(const a of Sge(n))(i=o.sheet)===null||i===void 0||i.insertRule(a.cssText,(s=o.sheet)===null||s===void 0?void 0:s.cssRules.length);return r.add(y9e.observe(n,r,{childList:!0})(()=>{o.textContent=n.textContent})),e.add(o),r.add(st(()=>e.delete(o))),r}const y9e=new class{constructor(){this.mutationObservers=new Map}observe(n,e,t){let i=this.mutationObservers.get(n);i||(i=new Map,this.mutationObservers.set(n,i));const s=jj(t);let r=i.get(s);if(r)r.users+=1;else{const o=new ue,a=new MutationObserver(c=>o.fire(c));a.observe(n,t);const l=r={users:1,observer:a,onDidMutate:o.event};e.add(st(()=>{l.users-=1,l.users===0&&(o.dispose(),a.disconnect(),i==null||i.delete(s),(i==null?void 0:i.size)===0&&this.mutationObservers.delete(n))})),i.set(s,r)}return r.onDidMutate}};let k5=null;function wge(){return k5||(k5=Fl()),k5}function Sge(n){var e,t;return!((e=n==null?void 0:n.sheet)===null||e===void 0)&&e.rules?n.sheet.rules:!((t=n==null?void 0:n.sheet)===null||t===void 0)&&t.cssRules?n.sheet.cssRules:[]}function WA(n,e,t=wge()){var i,s;if(!(!t||!e)){(i=t.sheet)===null||i===void 0||i.insertRule(`${n} {${e}}`,0);for(const r of(s=Yj.get(t))!==null&&s!==void 0?s:[])WA(n,e,r)}}function X8(n,e=wge()){var t,i;if(!e)return;const s=Sge(e),r=[];for(let o=0;o<s.length;o++){const a=s[o];C9e(a)&&a.selectorText.indexOf(n)!==-1&&r.push(o)}for(let o=r.length-1;o>=0;o--)(t=e.sheet)===null||t===void 0||t.deleteRule(r[o]);for(const o of(i=Yj.get(e))!==null&&i!==void 0?i:[])X8(n,o)}function C9e(n){return typeof n.selectorText=="string"}function Zj(n){return n instanceof MouseEvent||n instanceof pt(n).MouseEvent}function kge(n){return n instanceof KeyboardEvent||n instanceof pt(n).KeyboardEvent}const We={CLICK:"click",AUXCLICK:"auxclick",DBLCLICK:"dblclick",MOUSE_UP:"mouseup",MOUSE_DOWN:"mousedown",MOUSE_OVER:"mouseover",MOUSE_MOVE:"mousemove",MOUSE_OUT:"mouseout",MOUSE_ENTER:"mouseenter",MOUSE_LEAVE:"mouseleave",MOUSE_WHEEL:"wheel",POINTER_UP:"pointerup",POINTER_DOWN:"pointerdown",POINTER_MOVE:"pointermove",POINTER_LEAVE:"pointerleave",CONTEXT_MENU:"contextmenu",WHEEL:"wheel",KEY_DOWN:"keydown",KEY_PRESS:"keypress",KEY_UP:"keyup",LOAD:"load",BEFORE_UNLOAD:"beforeunload",UNLOAD:"unload",PAGE_SHOW:"pageshow",PAGE_HIDE:"pagehide",PASTE:"paste",ABORT:"abort",ERROR:"error",RESIZE:"resize",SCROLL:"scroll",FULLSCREEN_CHANGE:"fullscreenchange",WK_FULLSCREEN_CHANGE:"webkitfullscreenchange",SELECT:"select",CHANGE:"change",SUBMIT:"submit",RESET:"reset",FOCUS:"focus",FOCUS_IN:"focusin",FOCUS_OUT:"focusout",BLUR:"blur",INPUT:"input",STORAGE:"storage",DRAG_START:"dragstart",DRAG:"drag",DRAG_ENTER:"dragenter",DRAG_LEAVE:"dragleave",DRAG_OVER:"dragover",DROP:"drop",DRAG_END:"dragend",ANIMATION_START:n_?"webkitAnimationStart":"animationstart",ANIMATION_END:n_?"webkitAnimationEnd":"animationend",ANIMATION_ITERATION:n_?"webkitAnimationIteration":"animationiteration"};function w9e(n){const e=n;return!!(e&&typeof e.preventDefault=="function"&&typeof e.stopPropagation=="function")}const Tt={stop:(n,e)=>(n.preventDefault(),e&&n.stopPropagation(),n)};function S9e(n){const e=[];for(let t=0;n&&n.nodeType===n.ELEMENT_NODE;t++)e[t]=n.scrollTop,n=n.parentNode;return e}function k9e(n,e){for(let t=0;n&&n.nodeType===n.ELEMENT_NODE;t++)n.scrollTop!==e[t]&&(n.scrollTop=e[t]),n=n.parentNode}class VA extends pe{static hasFocusWithin(e){if(e instanceof HTMLElement){const t=P_(e),i=t?t.activeElement:e.ownerDocument.activeElement;return pr(i,e)}else{const t=e;return pr(t.document.activeElement,t.document)}}constructor(e){super(),this._onDidFocus=this._register(new ue),this.onDidFocus=this._onDidFocus.event,this._onDidBlur=this._register(new ue),this.onDidBlur=this._onDidBlur.event;let t=VA.hasFocusWithin(e),i=!1;const s=()=>{i=!1,t||(t=!0,this._onDidFocus.fire())},r=()=>{t&&(i=!0,(e instanceof HTMLElement?pt(e):e).setTimeout(()=>{i&&(i=!1,t=!1,this._onDidBlur.fire())},0))};this._refreshStateHandler=()=>{VA.hasFocusWithin(e)!==t&&(t?r():s())},this._register(Ce(e,We.FOCUS,s,!0)),this._register(Ce(e,We.BLUR,r,!0)),e instanceof HTMLElement&&(this._register(Ce(e,We.FOCUS_IN,()=>this._refreshStateHandler())),this._register(Ce(e,We.FOCUS_OUT,()=>this._refreshStateHandler())))}}function gd(n){return new VA(n)}function L9e(n,e){return n.after(e),e}function Le(n,...e){if(n.append(...e),e.length===1&&typeof e[0]!="string")return e[0]}function Lge(n,e){return n.insertBefore(e,n.firstChild),e}function mr(n,...e){n.innerText="",Le(n,...e)}const x9e=/([\w\-]+)?(#([\w\-]+))?((\.([\w\-]+))*)/;var pL;(function(n){n.HTML="http://www.w3.org/1999/xhtml",n.SVG="http://www.w3.org/2000/svg"})(pL||(pL={}));function xge(n,e,t,...i){const s=x9e.exec(e);if(!s)throw new Error("Bad use of emmet");const r=s[1]||"div";let o;return n!==pL.HTML?o=document.createElementNS(n,r):o=document.createElement(r),s[3]&&(o.id=s[3]),s[4]&&(o.className=s[4].replace(/\./g," ").trim()),t&&Object.entries(t).forEach(([a,l])=>{typeof l>"u"||(/^on\w+$/.test(a)?o[a]=l:a==="selected"?l&&o.setAttribute(a,"true"):o.setAttribute(a,l))}),o.append(...i),o}function Te(n,e,...t){return xge(pL.HTML,n,e,...t)}Te.SVG=function(n,e,...t){return xge(pL.SVG,n,e,...t)};function E9e(n,...e){n?Xo(...e):Jr(...e)}function Xo(...n){for(const e of n)e.style.display="",e.removeAttribute("aria-hidden")}function Jr(...n){for(const e of n)e.style.display="none",e.setAttribute("aria-hidden","true")}function xJ(n,e){const t=n.devicePixelRatio*e;return Math.max(1,Math.floor(t))/n.devicePixelRatio}function Ege(n){mn.open(n,"_blank","noopener")}function D9e(n,e){const t=()=>{e(),i=ua(n,t)};let i=ua(n,t);return st(()=>i.dispose())}mge.setPreferredWebSchema(/^https:/.test(mn.location.href)?"https":"http");function Xp(n){return n?`url('${_ge.uriToBrowserUri(n).toString(!0).replace(/'/g,"%27")}')`:"url('')"}function EJ(n){return`'${n.replace(/'/g,"%27")}'`}function s_(n,e){if(n!==void 0){const t=n.match(/^\s*var\((.+)\)$/);if(t){const i=t[1].split(",",2);return i.length===2&&(e=s_(i[1].trim(),e)),`var(${i[0]}, ${e})`}return n}return e}function I9e(n,e=!1){const t=document.createElement("a");return Jfe("afterSanitizeAttributes",i=>{for(const s of["href","src"])if(i.hasAttribute(s)){const r=i.getAttribute(s);if(s==="href"&&r.startsWith("#"))continue;if(t.href=r,!n.includes(t.protocol.replace(/:$/,""))){if(e&&s==="src"&&t.href.startsWith("data:"))continue;i.removeAttribute(s)}}}),st(()=>{ege("afterSanitizeAttributes")})}const T9e=Object.freeze(["a","abbr","b","bdo","blockquote","br","caption","cite","code","col","colgroup","dd","del","details","dfn","div","dl","dt","em","figcaption","figure","h1","h2","h3","h4","h5","h6","hr","i","img","ins","kbd","label","li","mark","ol","p","pre","q","rp","rt","ruby","samp","small","small","source","span","strike","strong","sub","summary","sup","table","tbody","td","tfoot","th","thead","time","tr","tt","u","ul","var","video","wbr"]);class Cf extends ue{constructor(){super(),this._subscriptions=new xe,this._keyStatus={altKey:!1,shiftKey:!1,ctrlKey:!1,metaKey:!1},this._subscriptions.add(Ve.runAndSubscribe(Kj,({window:e,disposables:t})=>this.registerListeners(e,t),{window:mn,disposables:this._subscriptions}))}registerListeners(e,t){t.add(Ce(e,"keydown",i=>{if(i.defaultPrevented)return;const s=new Ki(i);if(!(s.keyCode===6&&i.repeat)){if(i.altKey&&!this._keyStatus.altKey)this._keyStatus.lastKeyPressed="alt";else if(i.ctrlKey&&!this._keyStatus.ctrlKey)this._keyStatus.lastKeyPressed="ctrl";else if(i.metaKey&&!this._keyStatus.metaKey)this._keyStatus.lastKeyPressed="meta";else if(i.shiftKey&&!this._keyStatus.shiftKey)this._keyStatus.lastKeyPressed="shift";else if(s.keyCode!==6)this._keyStatus.lastKeyPressed=void 0;else return;this._keyStatus.altKey=i.altKey,this._keyStatus.ctrlKey=i.ctrlKey,this._keyStatus.metaKey=i.metaKey,this._keyStatus.shiftKey=i.shiftKey,this._keyStatus.lastKeyPressed&&(this._keyStatus.event=i,this.fire(this._keyStatus))}},!0)),t.add(Ce(e,"keyup",i=>{i.defaultPrevented||(!i.altKey&&this._keyStatus.altKey?this._keyStatus.lastKeyReleased="alt":!i.ctrlKey&&this._keyStatus.ctrlKey?this._keyStatus.lastKeyReleased="ctrl":!i.metaKey&&this._keyStatus.metaKey?this._keyStatus.lastKeyReleased="meta":!i.shiftKey&&this._keyStatus.shiftKey?this._keyStatus.lastKeyReleased="shift":this._keyStatus.lastKeyReleased=void 0,this._keyStatus.lastKeyPressed!==this._keyStatus.lastKeyReleased&&(this._keyStatus.lastKeyPressed=void 0),this._keyStatus.altKey=i.altKey,this._keyStatus.ctrlKey=i.ctrlKey,this._keyStatus.metaKey=i.metaKey,this._keyStatus.shiftKey=i.shiftKey,this._keyStatus.lastKeyReleased&&(this._keyStatus.event=i,this.fire(this._keyStatus)))},!0)),t.add(Ce(e.document.body,"mousedown",()=>{this._keyStatus.lastKeyPressed=void 0},!0)),t.add(Ce(e.document.body,"mouseup",()=>{this._keyStatus.lastKeyPressed=void 0},!0)),t.add(Ce(e.document.body,"mousemove",i=>{i.buttons&&(this._keyStatus.lastKeyPressed=void 0)},!0)),t.add(Ce(e,"blur",()=>{this.resetKeyStatus()}))}get keyStatus(){return this._keyStatus}resetKeyStatus(){this.doResetKeyStatus(),this.fire(this._keyStatus)}doResetKeyStatus(){this._keyStatus={altKey:!1,shiftKey:!1,ctrlKey:!1,metaKey:!1}}static getInstance(){return Cf.instance||(Cf.instance=new Cf),Cf.instance}dispose(){super.dispose(),this._subscriptions.dispose()}}class N9e extends pe{constructor(e,t){super(),this.element=e,this.callbacks=t,this.counter=0,this.dragStartTime=0,this.registerListeners()}registerListeners(){this.callbacks.onDragStart&&this._register(Ce(this.element,We.DRAG_START,e=>{var t,i;(i=(t=this.callbacks).onDragStart)===null||i===void 0||i.call(t,e)})),this.callbacks.onDrag&&this._register(Ce(this.element,We.DRAG,e=>{var t,i;(i=(t=this.callbacks).onDrag)===null||i===void 0||i.call(t,e)})),this._register(Ce(this.element,We.DRAG_ENTER,e=>{var t,i;this.counter++,this.dragStartTime=e.timeStamp,(i=(t=this.callbacks).onDragEnter)===null||i===void 0||i.call(t,e)})),this._register(Ce(this.element,We.DRAG_OVER,e=>{var t,i;e.preventDefault(),(i=(t=this.callbacks).onDragOver)===null||i===void 0||i.call(t,e,e.timeStamp-this.dragStartTime)})),this._register(Ce(this.element,We.DRAG_LEAVE,e=>{var t,i;this.counter--,this.counter===0&&(this.dragStartTime=0,(i=(t=this.callbacks).onDragLeave)===null||i===void 0||i.call(t,e))})),this._register(Ce(this.element,We.DRAG_END,e=>{var t,i;this.counter=0,this.dragStartTime=0,(i=(t=this.callbacks).onDragEnd)===null||i===void 0||i.call(t,e)})),this._register(Ce(this.element,We.DROP,e=>{var t,i;this.counter=0,this.dragStartTime=0,(i=(t=this.callbacks).onDrop)===null||i===void 0||i.call(t,e)}))}}const A9e=/(?<tag>[\w\-]+)?(?:#(?<id>[\w\-]+))?(?<class>(?:\.(?:[\w\-]+))*)(?:@(?<name>(?:[\w\_])+))?/;function en(n,...e){let t,i;Array.isArray(e[0])?(t={},i=e[0]):(t=e[0]||{},i=e[1]);const s=A9e.exec(n);if(!s||!s.groups)throw new Error("Bad use of h");const r=s.groups.tag||"div",o=document.createElement(r);s.groups.id&&(o.id=s.groups.id);const a=[];if(s.groups.class)for(const c of s.groups.class.split("."))c!==""&&a.push(c);if(t.className!==void 0)for(const c of t.className.split("."))c!==""&&a.push(c);a.length>0&&(o.className=a.join(" "));const l={};if(s.groups.name&&(l[s.groups.name]=o),i)for(const c of i)c instanceof HTMLElement?o.appendChild(c):typeof c=="string"?o.append(c):"root"in c&&(Object.assign(l,c),o.appendChild(c.root));for(const[c,u]of Object.entries(t))if(c!=="className")if(c==="style")for(const[h,d]of Object.entries(u))o.style.setProperty(DJ(h),typeof d=="number"?d+"px":""+d);else c==="tabIndex"?o.tabIndex=u:o.setAttribute(DJ(c),u.toString());return l.root=o,l}function DJ(n){return n.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}const IJ=2e4;let b1,QT,Q8,JT,J8;function P9e(n){b1=document.createElement("div"),b1.className="monaco-aria-container";const e=()=>{const i=document.createElement("div");return i.className="monaco-alert",i.setAttribute("role","alert"),i.setAttribute("aria-atomic","true"),b1.appendChild(i),i};QT=e(),Q8=e();const t=()=>{const i=document.createElement("div");return i.className="monaco-status",i.setAttribute("aria-live","polite"),i.setAttribute("aria-atomic","true"),b1.appendChild(i),i};JT=t(),J8=t(),n.appendChild(b1)}function ha(n){b1&&(QT.textContent!==n?(ir(Q8),HA(QT,n)):(ir(QT),HA(Q8,n)))}function Qp(n){b1&&(JT.textContent!==n?(ir(J8),HA(JT,n)):(ir(JT),HA(J8,n)))}function HA(n,e){ir(n),e.length>IJ&&(e=e.substr(0,IJ)),n.textContent=e,n.style.visibility="hidden",n.style.visibility="visible"}var mu;(function(n){n.serviceIds=new Map,n.DI_TARGET="$di$target",n.DI_DEPENDENCIES="$di$dependencies";function e(t){return t[n.DI_DEPENDENCIES]||[]}n.getServiceDependencies=e})(mu||(mu={}));const at=Bt("instantiationService");function R9e(n,e,t){e[mu.DI_TARGET]===e?e[mu.DI_DEPENDENCIES].push({id:n,index:t}):(e[mu.DI_DEPENDENCIES]=[{id:n,index:t}],e[mu.DI_TARGET]=e)}function Bt(n){if(mu.serviceIds.has(n))return mu.serviceIds.get(n);const e=function(t,i,s){if(arguments.length!==3)throw new Error("@IServiceName-decorator can only be used to decorate a parameter");R9e(e,t,s)};return e.toString=()=>n,mu.serviceIds.set(n,e),e}const ri=Bt("codeEditorService");let he=class r1{constructor(e,t){this.lineNumber=e,this.column=t}with(e=this.lineNumber,t=this.column){return e===this.lineNumber&&t===this.column?this:new r1(e,t)}delta(e=0,t=0){return this.with(this.lineNumber+e,this.column+t)}equals(e){return r1.equals(this,e)}static equals(e,t){return!e&&!t?!0:!!e&&!!t&&e.lineNumber===t.lineNumber&&e.column===t.column}isBefore(e){return r1.isBefore(this,e)}static isBefore(e,t){return e.lineNumber<t.lineNumber?!0:t.lineNumber<e.lineNumber?!1:e.column<t.column}isBeforeOrEqual(e){return r1.isBeforeOrEqual(this,e)}static isBeforeOrEqual(e,t){return e.lineNumber<t.lineNumber?!0:t.lineNumber<e.lineNumber?!1:e.column<=t.column}static compare(e,t){const i=e.lineNumber|0,s=t.lineNumber|0;if(i===s){const r=e.column|0,o=t.column|0;return r-o}return i-s}clone(){return new r1(this.lineNumber,this.column)}toString(){return"("+this.lineNumber+","+this.column+")"}static lift(e){return new r1(e.lineNumber,e.column)}static isIPosition(e){return e&&typeof e.lineNumber=="number"&&typeof e.column=="number"}toJSON(){return{lineNumber:this.lineNumber,column:this.column}}};const fn=Bt("modelService"),Bo=Bt("textModelService");class ho extends pe{constructor(e,t="",i="",s=!0,r){super(),this._onDidChange=this._register(new ue),this.onDidChange=this._onDidChange.event,this._enabled=!0,this._id=e,this._label=t,this._cssClass=i,this._enabled=s,this._actionCallback=r}get id(){return this._id}get label(){return this._label}set label(e){this._setLabel(e)}_setLabel(e){this._label!==e&&(this._label=e,this._onDidChange.fire({label:e}))}get tooltip(){return this._tooltip||""}set tooltip(e){this._setTooltip(e)}_setTooltip(e){this._tooltip!==e&&(this._tooltip=e,this._onDidChange.fire({tooltip:e}))}get class(){return this._cssClass}set class(e){this._setClass(e)}_setClass(e){this._cssClass!==e&&(this._cssClass=e,this._onDidChange.fire({class:e}))}get enabled(){return this._enabled}set enabled(e){this._setEnabled(e)}_setEnabled(e){this._enabled!==e&&(this._enabled=e,this._onDidChange.fire({enabled:e}))}get checked(){return this._checked}set checked(e){this._setChecked(e)}_setChecked(e){this._checked!==e&&(this._checked=e,this._onDidChange.fire({checked:e}))}async run(e,t){this._actionCallback&&await this._actionCallback(e)}}class R_ extends pe{constructor(){super(...arguments),this._onWillRun=this._register(new ue),this.onWillRun=this._onWillRun.event,this._onDidRun=this._register(new ue),this.onDidRun=this._onDidRun.event}async run(e,t){if(!e.enabled)return;this._onWillRun.fire({action:e});let i;try{await this.runAction(e,t)}catch(s){i=s}this._onDidRun.fire({action:e,error:i})}async runAction(e,t){await e.run(t)}}class js{constructor(){this.id=js.ID,this.label="",this.tooltip="",this.class="separator",this.enabled=!1,this.checked=!1}static join(...e){let t=[];for(const i of e)i.length&&(t.length?t=[...t,new js,...i]:t=i);return t}async run(){}}js.ID="vs.actions.separator";class gy{get actions(){return this._actions}constructor(e,t,i,s){this.tooltip="",this.enabled=!0,this.checked=void 0,this.id=e,this.label=t,this.class=s,this._actions=i}async run(){}}class gO extends ho{constructor(){super(gO.ID,v("submenu.empty","(empty)"),void 0,!1)}}gO.ID="vs.actions.empty";function pb(n){var e,t;return{id:n.id,label:n.label,class:n.class,enabled:(e=n.enabled)!==null&&e!==void 0?e:!0,checked:(t=n.checked)!==null&&t!==void 0?t:!1,run:async(...i)=>n.run(...i),tooltip:n.label}}const e9=Object.create(null);function A(n,e){if(uo(e)){const t=e9[e];if(t===void 0)throw new Error(`${n} references an unknown codicon: ${e}`);e=t}return e9[n]=e,{id:n}}function Dge(){return e9}const Pe={add:A("add",6e4),plus:A("plus",6e4),gistNew:A("gist-new",6e4),repoCreate:A("repo-create",6e4),lightbulb:A("lightbulb",60001),lightBulb:A("light-bulb",60001),repo:A("repo",60002),repoDelete:A("repo-delete",60002),gistFork:A("gist-fork",60003),repoForked:A("repo-forked",60003),gitPullRequest:A("git-pull-request",60004),gitPullRequestAbandoned:A("git-pull-request-abandoned",60004),recordKeys:A("record-keys",60005),keyboard:A("keyboard",60005),tag:A("tag",60006),tagAdd:A("tag-add",60006),tagRemove:A("tag-remove",60006),gitPullRequestLabel:A("git-pull-request-label",60006),person:A("person",60007),personFollow:A("person-follow",60007),personOutline:A("person-outline",60007),personFilled:A("person-filled",60007),gitBranch:A("git-branch",60008),gitBranchCreate:A("git-branch-create",60008),gitBranchDelete:A("git-branch-delete",60008),sourceControl:A("source-control",60008),mirror:A("mirror",60009),mirrorPublic:A("mirror-public",60009),star:A("star",60010),starAdd:A("star-add",60010),starDelete:A("star-delete",60010),starEmpty:A("star-empty",60010),comment:A("comment",60011),commentAdd:A("comment-add",60011),alert:A("alert",60012),warning:A("warning",60012),search:A("search",60013),searchSave:A("search-save",60013),logOut:A("log-out",60014),signOut:A("sign-out",60014),logIn:A("log-in",60015),signIn:A("sign-in",60015),eye:A("eye",60016),eyeUnwatch:A("eye-unwatch",60016),eyeWatch:A("eye-watch",60016),circleFilled:A("circle-filled",60017),primitiveDot:A("primitive-dot",60017),closeDirty:A("close-dirty",60017),debugBreakpoint:A("debug-breakpoint",60017),debugBreakpointDisabled:A("debug-breakpoint-disabled",60017),debugHint:A("debug-hint",60017),primitiveSquare:A("primitive-square",60018),edit:A("edit",60019),pencil:A("pencil",60019),info:A("info",60020),issueOpened:A("issue-opened",60020),gistPrivate:A("gist-private",60021),gitForkPrivate:A("git-fork-private",60021),lock:A("lock",60021),mirrorPrivate:A("mirror-private",60021),close:A("close",60022),removeClose:A("remove-close",60022),x:A("x",60022),repoSync:A("repo-sync",60023),sync:A("sync",60023),clone:A("clone",60024),desktopDownload:A("desktop-download",60024),beaker:A("beaker",60025),microscope:A("microscope",60025),vm:A("vm",60026),deviceDesktop:A("device-desktop",60026),file:A("file",60027),fileText:A("file-text",60027),more:A("more",60028),ellipsis:A("ellipsis",60028),kebabHorizontal:A("kebab-horizontal",60028),mailReply:A("mail-reply",60029),reply:A("reply",60029),organization:A("organization",60030),organizationFilled:A("organization-filled",60030),organizationOutline:A("organization-outline",60030),newFile:A("new-file",60031),fileAdd:A("file-add",60031),newFolder:A("new-folder",60032),fileDirectoryCreate:A("file-directory-create",60032),trash:A("trash",60033),trashcan:A("trashcan",60033),history:A("history",60034),clock:A("clock",60034),folder:A("folder",60035),fileDirectory:A("file-directory",60035),symbolFolder:A("symbol-folder",60035),logoGithub:A("logo-github",60036),markGithub:A("mark-github",60036),github:A("github",60036),terminal:A("terminal",60037),console:A("console",60037),repl:A("repl",60037),zap:A("zap",60038),symbolEvent:A("symbol-event",60038),error:A("error",60039),stop:A("stop",60039),variable:A("variable",60040),symbolVariable:A("symbol-variable",60040),array:A("array",60042),symbolArray:A("symbol-array",60042),symbolModule:A("symbol-module",60043),symbolPackage:A("symbol-package",60043),symbolNamespace:A("symbol-namespace",60043),symbolObject:A("symbol-object",60043),symbolMethod:A("symbol-method",60044),symbolFunction:A("symbol-function",60044),symbolConstructor:A("symbol-constructor",60044),symbolBoolean:A("symbol-boolean",60047),symbolNull:A("symbol-null",60047),symbolNumeric:A("symbol-numeric",60048),symbolNumber:A("symbol-number",60048),symbolStructure:A("symbol-structure",60049),symbolStruct:A("symbol-struct",60049),symbolParameter:A("symbol-parameter",60050),symbolTypeParameter:A("symbol-type-parameter",60050),symbolKey:A("symbol-key",60051),symbolText:A("symbol-text",60051),symbolReference:A("symbol-reference",60052),goToFile:A("go-to-file",60052),symbolEnum:A("symbol-enum",60053),symbolValue:A("symbol-value",60053),symbolRuler:A("symbol-ruler",60054),symbolUnit:A("symbol-unit",60054),activateBreakpoints:A("activate-breakpoints",60055),archive:A("archive",60056),arrowBoth:A("arrow-both",60057),arrowDown:A("arrow-down",60058),arrowLeft:A("arrow-left",60059),arrowRight:A("arrow-right",60060),arrowSmallDown:A("arrow-small-down",60061),arrowSmallLeft:A("arrow-small-left",60062),arrowSmallRight:A("arrow-small-right",60063),arrowSmallUp:A("arrow-small-up",60064),arrowUp:A("arrow-up",60065),bell:A("bell",60066),bold:A("bold",60067),book:A("book",60068),bookmark:A("bookmark",60069),debugBreakpointConditionalUnverified:A("debug-breakpoint-conditional-unverified",60070),debugBreakpointConditional:A("debug-breakpoint-conditional",60071),debugBreakpointConditionalDisabled:A("debug-breakpoint-conditional-disabled",60071),debugBreakpointDataUnverified:A("debug-breakpoint-data-unverified",60072),debugBreakpointData:A("debug-breakpoint-data",60073),debugBreakpointDataDisabled:A("debug-breakpoint-data-disabled",60073),debugBreakpointLogUnverified:A("debug-breakpoint-log-unverified",60074),debugBreakpointLog:A("debug-breakpoint-log",60075),debugBreakpointLogDisabled:A("debug-breakpoint-log-disabled",60075),briefcase:A("briefcase",60076),broadcast:A("broadcast",60077),browser:A("browser",60078),bug:A("bug",60079),calendar:A("calendar",60080),caseSensitive:A("case-sensitive",60081),check:A("check",60082),checklist:A("checklist",60083),chevronDown:A("chevron-down",60084),dropDownButton:A("drop-down-button",60084),chevronLeft:A("chevron-left",60085),chevronRight:A("chevron-right",60086),chevronUp:A("chevron-up",60087),chromeClose:A("chrome-close",60088),chromeMaximize:A("chrome-maximize",60089),chromeMinimize:A("chrome-minimize",60090),chromeRestore:A("chrome-restore",60091),circle:A("circle",60092),circleOutline:A("circle-outline",60092),debugBreakpointUnverified:A("debug-breakpoint-unverified",60092),circleSlash:A("circle-slash",60093),circuitBoard:A("circuit-board",60094),clearAll:A("clear-all",60095),clippy:A("clippy",60096),closeAll:A("close-all",60097),cloudDownload:A("cloud-download",60098),cloudUpload:A("cloud-upload",60099),code:A("code",60100),collapseAll:A("collapse-all",60101),colorMode:A("color-mode",60102),commentDiscussion:A("comment-discussion",60103),compareChanges:A("compare-changes",60157),creditCard:A("credit-card",60105),dash:A("dash",60108),dashboard:A("dashboard",60109),database:A("database",60110),debugContinue:A("debug-continue",60111),debugDisconnect:A("debug-disconnect",60112),debugPause:A("debug-pause",60113),debugRestart:A("debug-restart",60114),debugStart:A("debug-start",60115),debugStepInto:A("debug-step-into",60116),debugStepOut:A("debug-step-out",60117),debugStepOver:A("debug-step-over",60118),debugStop:A("debug-stop",60119),debug:A("debug",60120),deviceCameraVideo:A("device-camera-video",60121),deviceCamera:A("device-camera",60122),deviceMobile:A("device-mobile",60123),diffAdded:A("diff-added",60124),diffIgnored:A("diff-ignored",60125),diffModified:A("diff-modified",60126),diffRemoved:A("diff-removed",60127),diffRenamed:A("diff-renamed",60128),diff:A("diff",60129),discard:A("discard",60130),editorLayout:A("editor-layout",60131),emptyWindow:A("empty-window",60132),exclude:A("exclude",60133),extensions:A("extensions",60134),eyeClosed:A("eye-closed",60135),fileBinary:A("file-binary",60136),fileCode:A("file-code",60137),fileMedia:A("file-media",60138),filePdf:A("file-pdf",60139),fileSubmodule:A("file-submodule",60140),fileSymlinkDirectory:A("file-symlink-directory",60141),fileSymlinkFile:A("file-symlink-file",60142),fileZip:A("file-zip",60143),files:A("files",60144),filter:A("filter",60145),flame:A("flame",60146),foldDown:A("fold-down",60147),foldUp:A("fold-up",60148),fold:A("fold",60149),folderActive:A("folder-active",60150),folderOpened:A("folder-opened",60151),gear:A("gear",60152),gift:A("gift",60153),gistSecret:A("gist-secret",60154),gist:A("gist",60155),gitCommit:A("git-commit",60156),gitCompare:A("git-compare",60157),gitMerge:A("git-merge",60158),githubAction:A("github-action",60159),githubAlt:A("github-alt",60160),globe:A("globe",60161),grabber:A("grabber",60162),graph:A("graph",60163),gripper:A("gripper",60164),heart:A("heart",60165),home:A("home",60166),horizontalRule:A("horizontal-rule",60167),hubot:A("hubot",60168),inbox:A("inbox",60169),issueClosed:A("issue-closed",60324),issueReopened:A("issue-reopened",60171),issues:A("issues",60172),italic:A("italic",60173),jersey:A("jersey",60174),json:A("json",60175),bracket:A("bracket",60175),kebabVertical:A("kebab-vertical",60176),key:A("key",60177),law:A("law",60178),lightbulbAutofix:A("lightbulb-autofix",60179),linkExternal:A("link-external",60180),link:A("link",60181),listOrdered:A("list-ordered",60182),listUnordered:A("list-unordered",60183),liveShare:A("live-share",60184),loading:A("loading",60185),location:A("location",60186),mailRead:A("mail-read",60187),mail:A("mail",60188),markdown:A("markdown",60189),megaphone:A("megaphone",60190),mention:A("mention",60191),milestone:A("milestone",60192),gitPullRequestMilestone:A("git-pull-request-milestone",60192),mortarBoard:A("mortar-board",60193),move:A("move",60194),multipleWindows:A("multiple-windows",60195),mute:A("mute",60196),noNewline:A("no-newline",60197),note:A("note",60198),octoface:A("octoface",60199),openPreview:A("open-preview",60200),package:A("package",60201),paintcan:A("paintcan",60202),pin:A("pin",60203),play:A("play",60204),run:A("run",60204),plug:A("plug",60205),preserveCase:A("preserve-case",60206),preview:A("preview",60207),project:A("project",60208),pulse:A("pulse",60209),question:A("question",60210),quote:A("quote",60211),radioTower:A("radio-tower",60212),reactions:A("reactions",60213),references:A("references",60214),refresh:A("refresh",60215),regex:A("regex",60216),remoteExplorer:A("remote-explorer",60217),remote:A("remote",60218),remove:A("remove",60219),replaceAll:A("replace-all",60220),replace:A("replace",60221),repoClone:A("repo-clone",60222),repoForcePush:A("repo-force-push",60223),repoPull:A("repo-pull",60224),repoPush:A("repo-push",60225),report:A("report",60226),requestChanges:A("request-changes",60227),rocket:A("rocket",60228),rootFolderOpened:A("root-folder-opened",60229),rootFolder:A("root-folder",60230),rss:A("rss",60231),ruby:A("ruby",60232),saveAll:A("save-all",60233),saveAs:A("save-as",60234),save:A("save",60235),screenFull:A("screen-full",60236),screenNormal:A("screen-normal",60237),searchStop:A("search-stop",60238),server:A("server",60240),settingsGear:A("settings-gear",60241),settings:A("settings",60242),shield:A("shield",60243),smiley:A("smiley",60244),sortPrecedence:A("sort-precedence",60245),splitHorizontal:A("split-horizontal",60246),splitVertical:A("split-vertical",60247),squirrel:A("squirrel",60248),starFull:A("star-full",60249),starHalf:A("star-half",60250),symbolClass:A("symbol-class",60251),symbolColor:A("symbol-color",60252),symbolCustomColor:A("symbol-customcolor",60252),symbolConstant:A("symbol-constant",60253),symbolEnumMember:A("symbol-enum-member",60254),symbolField:A("symbol-field",60255),symbolFile:A("symbol-file",60256),symbolInterface:A("symbol-interface",60257),symbolKeyword:A("symbol-keyword",60258),symbolMisc:A("symbol-misc",60259),symbolOperator:A("symbol-operator",60260),symbolProperty:A("symbol-property",60261),wrench:A("wrench",60261),wrenchSubaction:A("wrench-subaction",60261),symbolSnippet:A("symbol-snippet",60262),tasklist:A("tasklist",60263),telescope:A("telescope",60264),textSize:A("text-size",60265),threeBars:A("three-bars",60266),thumbsdown:A("thumbsdown",60267),thumbsup:A("thumbsup",60268),tools:A("tools",60269),triangleDown:A("triangle-down",60270),triangleLeft:A("triangle-left",60271),triangleRight:A("triangle-right",60272),triangleUp:A("triangle-up",60273),twitter:A("twitter",60274),unfold:A("unfold",60275),unlock:A("unlock",60276),unmute:A("unmute",60277),unverified:A("unverified",60278),verified:A("verified",60279),versions:A("versions",60280),vmActive:A("vm-active",60281),vmOutline:A("vm-outline",60282),vmRunning:A("vm-running",60283),watch:A("watch",60284),whitespace:A("whitespace",60285),wholeWord:A("whole-word",60286),window:A("window",60287),wordWrap:A("word-wrap",60288),zoomIn:A("zoom-in",60289),zoomOut:A("zoom-out",60290),listFilter:A("list-filter",60291),listFlat:A("list-flat",60292),listSelection:A("list-selection",60293),selection:A("selection",60293),listTree:A("list-tree",60294),debugBreakpointFunctionUnverified:A("debug-breakpoint-function-unverified",60295),debugBreakpointFunction:A("debug-breakpoint-function",60296),debugBreakpointFunctionDisabled:A("debug-breakpoint-function-disabled",60296),debugStackframeActive:A("debug-stackframe-active",60297),circleSmallFilled:A("circle-small-filled",60298),debugStackframeDot:A("debug-stackframe-dot",60298),debugStackframe:A("debug-stackframe",60299),debugStackframeFocused:A("debug-stackframe-focused",60299),debugBreakpointUnsupported:A("debug-breakpoint-unsupported",60300),symbolString:A("symbol-string",60301),debugReverseContinue:A("debug-reverse-continue",60302),debugStepBack:A("debug-step-back",60303),debugRestartFrame:A("debug-restart-frame",60304),callIncoming:A("call-incoming",60306),callOutgoing:A("call-outgoing",60307),menu:A("menu",60308),expandAll:A("expand-all",60309),feedback:A("feedback",60310),gitPullRequestReviewer:A("git-pull-request-reviewer",60310),groupByRefType:A("group-by-ref-type",60311),ungroupByRefType:A("ungroup-by-ref-type",60312),account:A("account",60313),gitPullRequestAssignee:A("git-pull-request-assignee",60313),bellDot:A("bell-dot",60314),debugConsole:A("debug-console",60315),library:A("library",60316),output:A("output",60317),runAll:A("run-all",60318),syncIgnored:A("sync-ignored",60319),pinned:A("pinned",60320),githubInverted:A("github-inverted",60321),debugAlt:A("debug-alt",60305),serverProcess:A("server-process",60322),serverEnvironment:A("server-environment",60323),pass:A("pass",60324),stopCircle:A("stop-circle",60325),playCircle:A("play-circle",60326),record:A("record",60327),debugAltSmall:A("debug-alt-small",60328),vmConnect:A("vm-connect",60329),cloud:A("cloud",60330),merge:A("merge",60331),exportIcon:A("export",60332),graphLeft:A("graph-left",60333),magnet:A("magnet",60334),notebook:A("notebook",60335),redo:A("redo",60336),checkAll:A("check-all",60337),pinnedDirty:A("pinned-dirty",60338),passFilled:A("pass-filled",60339),circleLargeFilled:A("circle-large-filled",60340),circleLarge:A("circle-large",60341),circleLargeOutline:A("circle-large-outline",60341),combine:A("combine",60342),gather:A("gather",60342),table:A("table",60343),variableGroup:A("variable-group",60344),typeHierarchy:A("type-hierarchy",60345),typeHierarchySub:A("type-hierarchy-sub",60346),typeHierarchySuper:A("type-hierarchy-super",60347),gitPullRequestCreate:A("git-pull-request-create",60348),runAbove:A("run-above",60349),runBelow:A("run-below",60350),notebookTemplate:A("notebook-template",60351),debugRerun:A("debug-rerun",60352),workspaceTrusted:A("workspace-trusted",60353),workspaceUntrusted:A("workspace-untrusted",60354),workspaceUnspecified:A("workspace-unspecified",60355),terminalCmd:A("terminal-cmd",60356),terminalDebian:A("terminal-debian",60357),terminalLinux:A("terminal-linux",60358),terminalPowershell:A("terminal-powershell",60359),terminalTmux:A("terminal-tmux",60360),terminalUbuntu:A("terminal-ubuntu",60361),terminalBash:A("terminal-bash",60362),arrowSwap:A("arrow-swap",60363),copy:A("copy",60364),personAdd:A("person-add",60365),filterFilled:A("filter-filled",60366),wand:A("wand",60367),debugLineByLine:A("debug-line-by-line",60368),inspect:A("inspect",60369),layers:A("layers",60370),layersDot:A("layers-dot",60371),layersActive:A("layers-active",60372),compass:A("compass",60373),compassDot:A("compass-dot",60374),compassActive:A("compass-active",60375),azure:A("azure",60376),issueDraft:A("issue-draft",60377),gitPullRequestClosed:A("git-pull-request-closed",60378),gitPullRequestDraft:A("git-pull-request-draft",60379),debugAll:A("debug-all",60380),debugCoverage:A("debug-coverage",60381),runErrors:A("run-errors",60382),folderLibrary:A("folder-library",60383),debugContinueSmall:A("debug-continue-small",60384),beakerStop:A("beaker-stop",60385),graphLine:A("graph-line",60386),graphScatter:A("graph-scatter",60387),pieChart:A("pie-chart",60388),bracketDot:A("bracket-dot",60389),bracketError:A("bracket-error",60390),lockSmall:A("lock-small",60391),azureDevops:A("azure-devops",60392),verifiedFilled:A("verified-filled",60393),newLine:A("newline",60394),layout:A("layout",60395),layoutActivitybarLeft:A("layout-activitybar-left",60396),layoutActivitybarRight:A("layout-activitybar-right",60397),layoutPanelLeft:A("layout-panel-left",60398),layoutPanelCenter:A("layout-panel-center",60399),layoutPanelJustify:A("layout-panel-justify",60400),layoutPanelRight:A("layout-panel-right",60401),layoutPanel:A("layout-panel",60402),layoutSidebarLeft:A("layout-sidebar-left",60403),layoutSidebarRight:A("layout-sidebar-right",60404),layoutStatusbar:A("layout-statusbar",60405),layoutMenubar:A("layout-menubar",60406),layoutCentered:A("layout-centered",60407),layoutSidebarRightOff:A("layout-sidebar-right-off",60416),layoutPanelOff:A("layout-panel-off",60417),layoutSidebarLeftOff:A("layout-sidebar-left-off",60418),target:A("target",60408),indent:A("indent",60409),recordSmall:A("record-small",60410),errorSmall:A("error-small",60411),arrowCircleDown:A("arrow-circle-down",60412),arrowCircleLeft:A("arrow-circle-left",60413),arrowCircleRight:A("arrow-circle-right",60414),arrowCircleUp:A("arrow-circle-up",60415),heartFilled:A("heart-filled",60420),map:A("map",60421),mapFilled:A("map-filled",60422),circleSmall:A("circle-small",60423),bellSlash:A("bell-slash",60424),bellSlashDot:A("bell-slash-dot",60425),commentUnresolved:A("comment-unresolved",60426),gitPullRequestGoToChanges:A("git-pull-request-go-to-changes",60427),gitPullRequestNewChanges:A("git-pull-request-new-changes",60428),searchFuzzy:A("search-fuzzy",60429),commentDraft:A("comment-draft",60430),send:A("send",60431),sparkle:A("sparkle",60432),insert:A("insert",60433),mic:A("mic",60434),thumbsDownFilled:A("thumbsdown-filled",60435),thumbsUpFilled:A("thumbsup-filled",60436),coffee:A("coffee",60437),snake:A("snake",60438),game:A("game",60439),vr:A("vr",60440),chip:A("chip",60441),piano:A("piano",60442),music:A("music",60443),micFilled:A("mic-filled",60444),gitFetch:A("git-fetch",60445),copilot:A("copilot",60446),lightbulbSparkle:A("lightbulb-sparkle",60447),lightbulbSparkleAutofix:A("lightbulb-sparkle-autofix",60447),robot:A("robot",60448),sparkleFilled:A("sparkle-filled",60449),diffSingle:A("diff-single",60450),diffMultiple:A("diff-multiple",60451),dialogError:A("dialog-error","error"),dialogWarning:A("dialog-warning","warning"),dialogInfo:A("dialog-info","info"),dialogClose:A("dialog-close","close"),treeItemExpanded:A("tree-item-expanded","chevron-down"),treeFilterOnTypeOn:A("tree-filter-on-type-on","list-filter"),treeFilterOnTypeOff:A("tree-filter-on-type-off","list-selection"),treeFilterClear:A("tree-filter-clear","close"),treeItemLoading:A("tree-item-loading","loading"),menuSelection:A("menu-selection","check"),menuSubmenu:A("menu-submenu","chevron-right"),menuBarMore:A("menubar-more","more"),scrollbarButtonLeft:A("scrollbar-button-left","triangle-left"),scrollbarButtonRight:A("scrollbar-button-right","triangle-right"),scrollbarButtonUp:A("scrollbar-button-up","triangle-up"),scrollbarButtonDown:A("scrollbar-button-down","triangle-down"),toolBarMore:A("toolbar-more","more"),quickInputBack:A("quick-input-back","arrow-left")};var t9;(function(n){function e(t){return t&&typeof t=="object"&&typeof t.id=="string"}n.isThemeColor=e})(t9||(t9={}));var nt;(function(n){n.iconNameSegment="[A-Za-z0-9]+",n.iconNameExpression="[A-Za-z0-9-]+",n.iconModifierExpression="~[A-Za-z]+",n.iconNameCharacter="[A-Za-z0-9~-]";const e=new RegExp(`^(${n.iconNameExpression})(${n.iconModifierExpression})?$`);function t(d){const f=e.exec(d.id);if(!f)return t(Pe.error);const[,g,p]=f,m=["codicon","codicon-"+g];return p&&m.push("codicon-modifier-"+p.substring(1)),m}n.asClassNameArray=t;function i(d){return t(d).join(" ")}n.asClassName=i;function s(d){return"."+t(d).join(".")}n.asCSSSelector=s;function r(d){return d&&typeof d=="object"&&typeof d.id=="string"&&(typeof d.color>"u"||t9.isThemeColor(d.color))}n.isThemeIcon=r;const o=new RegExp(`^\\$\\((${n.iconNameExpression}(?:${n.iconModifierExpression})?)\\)$`);function a(d){const f=o.exec(d);if(!f)return;const[,g]=f;return{id:g}}n.fromString=a;function l(d){return{id:d}}n.fromId=l;function c(d,f){let g=d.id;const p=g.lastIndexOf("~");return p!==-1&&(g=g.substring(0,p)),f&&(g=`${g}~${f}`),{id:g}}n.modify=c;function u(d){const f=d.id.lastIndexOf("~");if(f!==-1)return d.id.substring(f+1)}n.getModifier=u;function h(d,f){var g,p;return d.id===f.id&&((g=d.color)===null||g===void 0?void 0:g.id)===((p=f.color)===null||p===void 0?void 0:p.id)}n.isEqual=h})(nt||(nt={}));const Dn=Bt("commandService"),Yt=new class{constructor(){this._commands=new Map,this._onDidRegisterCommand=new ue,this.onDidRegisterCommand=this._onDidRegisterCommand.event}registerCommand(n,e){if(!n)throw new Error("invalid command");if(typeof n=="string"){if(!e)throw new Error("invalid command");return this.registerCommand({id:n,handler:e})}if(n.metadata&&Array.isArray(n.metadata.args)){const o=[];for(const l of n.metadata.args)o.push(l.constraint);const a=n.handler;n.handler=function(l,...c){return SBe(c,o),a(l,...c)}}const{id:t}=n;let i=this._commands.get(t);i||(i=new oo,this._commands.set(t,i));const s=i.unshift(n),r=st(()=>{s();const o=this._commands.get(t);o!=null&&o.isEmpty()&&this._commands.delete(t)});return this._onDidRegisterCommand.fire(t),r}registerCommandAlias(n,e){return Yt.registerCommand(n,(t,...i)=>t.get(Dn).executeCommand(e,...i))}getCommand(n){const e=this._commands.get(n);if(!(!e||e.isEmpty()))return Vt.first(e)}getCommands(){const n=new Map;for(const e of this._commands.keys()){const t=this.getCommand(e);t&&n.set(e,t)}return n}};Yt.registerCommand("noop",()=>{});function L5(...n){switch(n.length){case 1:return v("contextkey.scanner.hint.didYouMean1","Did you mean {0}?",n[0]);case 2:return v("contextkey.scanner.hint.didYouMean2","Did you mean {0} or {1}?",n[0],n[1]);case 3:return v("contextkey.scanner.hint.didYouMean3","Did you mean {0}, {1} or {2}?",n[0],n[1],n[2]);default:return}}const M9e=v("contextkey.scanner.hint.didYouForgetToOpenOrCloseQuote","Did you forget to open or close the quote?"),O9e=v("contextkey.scanner.hint.didYouForgetToEscapeSlash","Did you forget to escape the '/' (slash) character? Put two backslashes before it to escape, e.g., '\\\\/'.");let y1=class i9{constructor(){this._input="",this._start=0,this._current=0,this._tokens=[],this._errors=[],this.stringRe=/[a-zA-Z0-9_<>\-\./\\:\*\?\+\[\]\^,#@;"%\$\p{L}-]+/uy}static getLexeme(e){switch(e.type){case 0:return"(";case 1:return")";case 2:return"!";case 3:return e.isTripleEq?"===":"==";case 4:return e.isTripleEq?"!==":"!=";case 5:return"<";case 6:return"<=";case 7:return">=";case 8:return">=";case 9:return"=~";case 10:return e.lexeme;case 11:return"true";case 12:return"false";case 13:return"in";case 14:return"not";case 15:return"&&";case 16:return"||";case 17:return e.lexeme;case 18:return e.lexeme;case 19:return e.lexeme;case 20:return"EOF";default:throw kj(`unhandled token type: ${JSON.stringify(e)}; have you forgotten to add a case?`)}}reset(e){return this._input=e,this._start=0,this._current=0,this._tokens=[],this._errors=[],this}scan(){for(;!this._isAtEnd();)switch(this._start=this._current,this._advance()){case 40:this._addToken(0);break;case 41:this._addToken(1);break;case 33:if(this._match(61)){const t=this._match(61);this._tokens.push({type:4,offset:this._start,isTripleEq:t})}else this._addToken(2);break;case 39:this._quotedString();break;case 47:this._regex();break;case 61:if(this._match(61)){const t=this._match(61);this._tokens.push({type:3,offset:this._start,isTripleEq:t})}else this._match(126)?this._addToken(9):this._error(L5("==","=~"));break;case 60:this._addToken(this._match(61)?6:5);break;case 62:this._addToken(this._match(61)?8:7);break;case 38:this._match(38)?this._addToken(15):this._error(L5("&&"));break;case 124:this._match(124)?this._addToken(16):this._error(L5("||"));break;case 32:case 13:case 9:case 10:case 160:break;default:this._string()}return this._start=this._current,this._addToken(20),Array.from(this._tokens)}_match(e){return this._isAtEnd()||this._input.charCodeAt(this._current)!==e?!1:(this._current++,!0)}_advance(){return this._input.charCodeAt(this._current++)}_peek(){return this._isAtEnd()?0:this._input.charCodeAt(this._current)}_addToken(e){this._tokens.push({type:e,offset:this._start})}_error(e){const t=this._start,i=this._input.substring(this._start,this._current),s={type:19,offset:this._start,lexeme:i};this._errors.push({offset:t,lexeme:i,additionalInfo:e}),this._tokens.push(s)}_string(){this.stringRe.lastIndex=this._start;const e=this.stringRe.exec(this._input);if(e){this._current=this._start+e[0].length;const t=this._input.substring(this._start,this._current),i=i9._keywords.get(t);i?this._addToken(i):this._tokens.push({type:17,lexeme:t,offset:this._start})}}_quotedString(){for(;this._peek()!==39&&!this._isAtEnd();)this._advance();if(this._isAtEnd()){this._error(M9e);return}this._advance(),this._tokens.push({type:18,lexeme:this._input.substring(this._start+1,this._current-1),offset:this._start+1})}_regex(){let e=this._current,t=!1,i=!1;for(;;){if(e>=this._input.length){this._current=e,this._error(O9e);return}const r=this._input.charCodeAt(e);if(t)t=!1;else if(r===47&&!i){e++;break}else r===91?i=!0:r===92?t=!0:r===93&&(i=!1);e++}for(;e<this._input.length&&i9._regexFlags.has(this._input.charCodeAt(e));)e++;this._current=e;const s=this._input.substring(this._start,this._current);this._tokens.push({type:10,lexeme:s,offset:this._start})}_isAtEnd(){return this._current>=this._input.length}};y1._regexFlags=new Set(["i","g","s","m","y","u"].map(n=>n.charCodeAt(0)));y1._keywords=new Map([["not",14],["in",13],["false",12],["true",11]]);const Ar=new Map;Ar.set("false",!1);Ar.set("true",!0);Ar.set("isMac",Gt);Ar.set("isLinux",Kr);Ar.set("isWindows",yr);Ar.set("isWeb",Dm);Ar.set("isMacNative",Gt&&!Dm);Ar.set("isEdge",MBe);Ar.set("isFirefox",PBe);Ar.set("isChrome",Hfe);Ar.set("isSafari",RBe);const F9e=Object.prototype.hasOwnProperty,B9e={regexParsingWithErrorRecovery:!0},W9e=v("contextkey.parser.error.emptyString","Empty context key expression"),V9e=v("contextkey.parser.error.emptyString.hint","Did you forget to write an expression? You can also put 'false' or 'true' to always evaluate to false or true, respectively."),H9e=v("contextkey.parser.error.noInAfterNot","'in' after 'not'."),TJ=v("contextkey.parser.error.closingParenthesis","closing parenthesis ')'"),$9e=v("contextkey.parser.error.unexpectedToken","Unexpected token"),z9e=v("contextkey.parser.error.unexpectedToken.hint","Did you forget to put && or || before the token?"),U9e=v("contextkey.parser.error.unexpectedEOF","Unexpected end of expression"),j9e=v("contextkey.parser.error.unexpectedEOF.hint","Did you forget to put a context key?");let Ige=class uS{constructor(e=B9e){this._config=e,this._scanner=new y1,this._tokens=[],this._current=0,this._parsingErrors=[],this._flagsGYRe=/g|y/g}parse(e){if(e===""){this._parsingErrors.push({message:W9e,offset:0,lexeme:"",additionalInfo:V9e});return}this._tokens=this._scanner.reset(e).scan(),this._current=0,this._parsingErrors=[];try{const t=this._expr();if(!this._isAtEnd()){const i=this._peek(),s=i.type===17?z9e:void 0;throw this._parsingErrors.push({message:$9e,offset:i.offset,lexeme:y1.getLexeme(i),additionalInfo:s}),uS._parseError}return t}catch(t){if(t!==uS._parseError)throw t;return}}_expr(){return this._or()}_or(){const e=[this._and()];for(;this._matchOne(16);){const t=this._and();e.push(t)}return e.length===1?e[0]:ke.or(...e)}_and(){const e=[this._term()];for(;this._matchOne(15);){const t=this._term();e.push(t)}return e.length===1?e[0]:ke.and(...e)}_term(){if(this._matchOne(2)){const e=this._peek();switch(e.type){case 11:return this._advance(),po.INSTANCE;case 12:return this._advance(),Ro.INSTANCE;case 0:{this._advance();const t=this._expr();return this._consume(1,TJ),t==null?void 0:t.negate()}case 17:return this._advance(),kv.create(e.lexeme);default:throw this._errExpectedButGot("KEY | true | false | '(' expression ')'",e)}}return this._primary()}_primary(){const e=this._peek();switch(e.type){case 11:return this._advance(),ke.true();case 12:return this._advance(),ke.false();case 0:{this._advance();const t=this._expr();return this._consume(1,TJ),t}case 17:{const t=e.lexeme;if(this._advance(),this._matchOne(9)){const s=this._peek();if(!this._config.regexParsingWithErrorRecovery){if(this._advance(),s.type!==10)throw this._errExpectedButGot("REGEX",s);const r=s.lexeme,o=r.lastIndexOf("/"),a=o===r.length-1?void 0:this._removeFlagsGY(r.substring(o+1));let l;try{l=new RegExp(r.substring(1,o),a)}catch{throw this._errExpectedButGot("REGEX",s)}return mL.create(t,l)}switch(s.type){case 10:case 19:{const r=[s.lexeme];this._advance();let o=this._peek(),a=0;for(let d=0;d<s.lexeme.length;d++)s.lexeme.charCodeAt(d)===40?a++:s.lexeme.charCodeAt(d)===41&&a--;for(;!this._isAtEnd()&&o.type!==15&&o.type!==16;){switch(o.type){case 0:a++;break;case 1:a--;break;case 10:case 18:for(let d=0;d<o.lexeme.length;d++)o.lexeme.charCodeAt(d)===40?a++:s.lexeme.charCodeAt(d)===41&&a--}if(a<0)break;r.push(y1.getLexeme(o)),this._advance(),o=this._peek()}const l=r.join(""),c=l.lastIndexOf("/"),u=c===l.length-1?void 0:this._removeFlagsGY(l.substring(c+1));let h;try{h=new RegExp(l.substring(1,c),u)}catch{throw this._errExpectedButGot("REGEX",s)}return ke.regex(t,h)}case 18:{const r=s.lexeme;this._advance();let o=null;if(!tge(r)){const a=r.indexOf("/"),l=r.lastIndexOf("/");if(a!==l&&a>=0){const c=r.slice(a+1,l),u=r[l+1]==="i"?"i":"";try{o=new RegExp(c,u)}catch{throw this._errExpectedButGot("REGEX",s)}}}if(o===null)throw this._errExpectedButGot("REGEX",s);return mL.create(t,o)}default:throw this._errExpectedButGot("REGEX",this._peek())}}if(this._matchOne(14)){this._consume(13,H9e);const s=this._value();return ke.notIn(t,s)}switch(this._peek().type){case 3:{this._advance();const s=this._value();if(this._previous().type===18)return ke.equals(t,s);switch(s){case"true":return ke.has(t);case"false":return ke.not(t);default:return ke.equals(t,s)}}case 4:{this._advance();const s=this._value();if(this._previous().type===18)return ke.notEquals(t,s);switch(s){case"true":return ke.not(t);case"false":return ke.has(t);default:return ke.notEquals(t,s)}}case 5:return this._advance(),CO.create(t,this._value());case 6:return this._advance(),wO.create(t,this._value());case 7:return this._advance(),bO.create(t,this._value());case 8:return this._advance(),yO.create(t,this._value());case 13:return this._advance(),ke.in(t,this._value());default:return ke.has(t)}}case 20:throw this._parsingErrors.push({message:U9e,offset:e.offset,lexeme:"",additionalInfo:j9e}),uS._parseError;default:throw this._errExpectedButGot(`true | false | KEY + | KEY '=~' REGEX + | KEY ('==' | '!=' | '<' | '<=' | '>' | '>=' | 'in' | 'not' 'in') value`,this._peek())}}_value(){const e=this._peek();switch(e.type){case 17:case 18:return this._advance(),e.lexeme;case 11:return this._advance(),"true";case 12:return this._advance(),"false";case 13:return this._advance(),"in";default:return""}}_removeFlagsGY(e){return e.replaceAll(this._flagsGYRe,"")}_previous(){return this._tokens[this._current-1]}_matchOne(e){return this._check(e)?(this._advance(),!0):!1}_advance(){return this._isAtEnd()||this._current++,this._previous()}_consume(e,t){if(this._check(e))return this._advance();throw this._errExpectedButGot(t,this._peek())}_errExpectedButGot(e,t,i){const s=v("contextkey.parser.error.expectedButGot",`Expected: {0} +Received: '{1}'.`,e,y1.getLexeme(t)),r=t.offset,o=y1.getLexeme(t);return this._parsingErrors.push({message:s,offset:r,lexeme:o,additionalInfo:i}),uS._parseError}_check(e){return this._peek().type===e}_peek(){return this._tokens[this._current]}_isAtEnd(){return this._peek().type===20}};Ige._parseError=new Error;class ke{static false(){return po.INSTANCE}static true(){return Ro.INSTANCE}static has(e){return Sv.create(e)}static equals(e,t){return xC.create(e,t)}static notEquals(e,t){return _O.create(e,t)}static regex(e,t){return mL.create(e,t)}static in(e,t){return pO.create(e,t)}static notIn(e,t){return mO.create(e,t)}static not(e){return kv.create(e)}static and(...e){return O1.create(e,null,!0)}static or(...e){return uf.create(e,null,!0)}static deserialize(e){return e==null?void 0:this._parser.parse(e)}}ke._parser=new Ige({regexParsingWithErrorRecovery:!1});function q9e(n,e){const t=n?n.substituteConstants():void 0,i=e?e.substituteConstants():void 0;return!t&&!i?!0:!t||!i?!1:t.equals(i)}function XS(n,e){return n.cmp(e)}class po{constructor(){this.type=0}cmp(e){return this.type-e.type}equals(e){return e.type===this.type}substituteConstants(){return this}evaluate(e){return!1}serialize(){return"false"}keys(){return[]}negate(){return Ro.INSTANCE}}po.INSTANCE=new po;class Ro{constructor(){this.type=1}cmp(e){return this.type-e.type}equals(e){return e.type===this.type}substituteConstants(){return this}evaluate(e){return!0}serialize(){return"true"}keys(){return[]}negate(){return po.INSTANCE}}Ro.INSTANCE=new Ro;class Sv{static create(e,t=null){const i=Ar.get(e);return typeof i=="boolean"?i?Ro.INSTANCE:po.INSTANCE:new Sv(e,t)}constructor(e,t){this.key=e,this.negated=t,this.type=2}cmp(e){return e.type!==this.type?this.type-e.type:Nge(this.key,e.key)}equals(e){return e.type===this.type?this.key===e.key:!1}substituteConstants(){const e=Ar.get(this.key);return typeof e=="boolean"?e?Ro.INSTANCE:po.INSTANCE:this}evaluate(e){return!!e.getValue(this.key)}serialize(){return this.key}keys(){return[this.key]}negate(){return this.negated||(this.negated=kv.create(this.key,this)),this.negated}}class xC{static create(e,t,i=null){if(typeof t=="boolean")return t?Sv.create(e,i):kv.create(e,i);const s=Ar.get(e);return typeof s=="boolean"?t===(s?"true":"false")?Ro.INSTANCE:po.INSTANCE:new xC(e,t,i)}constructor(e,t,i){this.key=e,this.value=t,this.negated=i,this.type=4}cmp(e){return e.type!==this.type?this.type-e.type:Lv(this.key,this.value,e.key,e.value)}equals(e){return e.type===this.type?this.key===e.key&&this.value===e.value:!1}substituteConstants(){const e=Ar.get(this.key);if(typeof e=="boolean"){const t=e?"true":"false";return this.value===t?Ro.INSTANCE:po.INSTANCE}return this}evaluate(e){return e.getValue(this.key)==this.value}serialize(){return`${this.key} == '${this.value}'`}keys(){return[this.key]}negate(){return this.negated||(this.negated=_O.create(this.key,this.value,this)),this.negated}}class pO{static create(e,t){return new pO(e,t)}constructor(e,t){this.key=e,this.valueKey=t,this.type=10,this.negated=null}cmp(e){return e.type!==this.type?this.type-e.type:Lv(this.key,this.valueKey,e.key,e.valueKey)}equals(e){return e.type===this.type?this.key===e.key&&this.valueKey===e.valueKey:!1}substituteConstants(){return this}evaluate(e){const t=e.getValue(this.valueKey),i=e.getValue(this.key);return Array.isArray(t)?t.includes(i):typeof i=="string"&&typeof t=="object"&&t!==null?F9e.call(t,i):!1}serialize(){return`${this.key} in '${this.valueKey}'`}keys(){return[this.key,this.valueKey]}negate(){return this.negated||(this.negated=mO.create(this.key,this.valueKey)),this.negated}}class mO{static create(e,t){return new mO(e,t)}constructor(e,t){this.key=e,this.valueKey=t,this.type=11,this._negated=pO.create(e,t)}cmp(e){return e.type!==this.type?this.type-e.type:this._negated.cmp(e._negated)}equals(e){return e.type===this.type?this._negated.equals(e._negated):!1}substituteConstants(){return this}evaluate(e){return!this._negated.evaluate(e)}serialize(){return`${this.key} not in '${this.valueKey}'`}keys(){return this._negated.keys()}negate(){return this._negated}}class _O{static create(e,t,i=null){if(typeof t=="boolean")return t?kv.create(e,i):Sv.create(e,i);const s=Ar.get(e);return typeof s=="boolean"?t===(s?"true":"false")?po.INSTANCE:Ro.INSTANCE:new _O(e,t,i)}constructor(e,t,i){this.key=e,this.value=t,this.negated=i,this.type=5}cmp(e){return e.type!==this.type?this.type-e.type:Lv(this.key,this.value,e.key,e.value)}equals(e){return e.type===this.type?this.key===e.key&&this.value===e.value:!1}substituteConstants(){const e=Ar.get(this.key);if(typeof e=="boolean"){const t=e?"true":"false";return this.value===t?po.INSTANCE:Ro.INSTANCE}return this}evaluate(e){return e.getValue(this.key)!=this.value}serialize(){return`${this.key} != '${this.value}'`}keys(){return[this.key]}negate(){return this.negated||(this.negated=xC.create(this.key,this.value,this)),this.negated}}class kv{static create(e,t=null){const i=Ar.get(e);return typeof i=="boolean"?i?po.INSTANCE:Ro.INSTANCE:new kv(e,t)}constructor(e,t){this.key=e,this.negated=t,this.type=3}cmp(e){return e.type!==this.type?this.type-e.type:Nge(this.key,e.key)}equals(e){return e.type===this.type?this.key===e.key:!1}substituteConstants(){const e=Ar.get(this.key);return typeof e=="boolean"?e?po.INSTANCE:Ro.INSTANCE:this}evaluate(e){return!e.getValue(this.key)}serialize(){return`!${this.key}`}keys(){return[this.key]}negate(){return this.negated||(this.negated=Sv.create(this.key,this)),this.negated}}function vO(n,e){if(typeof n=="string"){const t=parseFloat(n);isNaN(t)||(n=t)}return typeof n=="string"||typeof n=="number"?e(n):po.INSTANCE}class bO{static create(e,t,i=null){return vO(t,s=>new bO(e,s,i))}constructor(e,t,i){this.key=e,this.value=t,this.negated=i,this.type=12}cmp(e){return e.type!==this.type?this.type-e.type:Lv(this.key,this.value,e.key,e.value)}equals(e){return e.type===this.type?this.key===e.key&&this.value===e.value:!1}substituteConstants(){return this}evaluate(e){return typeof this.value=="string"?!1:parseFloat(e.getValue(this.key))>this.value}serialize(){return`${this.key} > ${this.value}`}keys(){return[this.key]}negate(){return this.negated||(this.negated=wO.create(this.key,this.value,this)),this.negated}}class yO{static create(e,t,i=null){return vO(t,s=>new yO(e,s,i))}constructor(e,t,i){this.key=e,this.value=t,this.negated=i,this.type=13}cmp(e){return e.type!==this.type?this.type-e.type:Lv(this.key,this.value,e.key,e.value)}equals(e){return e.type===this.type?this.key===e.key&&this.value===e.value:!1}substituteConstants(){return this}evaluate(e){return typeof this.value=="string"?!1:parseFloat(e.getValue(this.key))>=this.value}serialize(){return`${this.key} >= ${this.value}`}keys(){return[this.key]}negate(){return this.negated||(this.negated=CO.create(this.key,this.value,this)),this.negated}}class CO{static create(e,t,i=null){return vO(t,s=>new CO(e,s,i))}constructor(e,t,i){this.key=e,this.value=t,this.negated=i,this.type=14}cmp(e){return e.type!==this.type?this.type-e.type:Lv(this.key,this.value,e.key,e.value)}equals(e){return e.type===this.type?this.key===e.key&&this.value===e.value:!1}substituteConstants(){return this}evaluate(e){return typeof this.value=="string"?!1:parseFloat(e.getValue(this.key))<this.value}serialize(){return`${this.key} < ${this.value}`}keys(){return[this.key]}negate(){return this.negated||(this.negated=yO.create(this.key,this.value,this)),this.negated}}class wO{static create(e,t,i=null){return vO(t,s=>new wO(e,s,i))}constructor(e,t,i){this.key=e,this.value=t,this.negated=i,this.type=15}cmp(e){return e.type!==this.type?this.type-e.type:Lv(this.key,this.value,e.key,e.value)}equals(e){return e.type===this.type?this.key===e.key&&this.value===e.value:!1}substituteConstants(){return this}evaluate(e){return typeof this.value=="string"?!1:parseFloat(e.getValue(this.key))<=this.value}serialize(){return`${this.key} <= ${this.value}`}keys(){return[this.key]}negate(){return this.negated||(this.negated=bO.create(this.key,this.value,this)),this.negated}}class mL{static create(e,t){return new mL(e,t)}constructor(e,t){this.key=e,this.regexp=t,this.type=7,this.negated=null}cmp(e){if(e.type!==this.type)return this.type-e.type;if(this.key<e.key)return-1;if(this.key>e.key)return 1;const t=this.regexp?this.regexp.source:"",i=e.regexp?e.regexp.source:"";return t<i?-1:t>i?1:0}equals(e){if(e.type===this.type){const t=this.regexp?this.regexp.source:"",i=e.regexp?e.regexp.source:"";return this.key===e.key&&t===i}return!1}substituteConstants(){return this}evaluate(e){const t=e.getValue(this.key);return this.regexp?this.regexp.test(t):!1}serialize(){const e=this.regexp?`/${this.regexp.source}/${this.regexp.flags}`:"/invalid/";return`${this.key} =~ ${e}`}keys(){return[this.key]}negate(){return this.negated||(this.negated=Xj.create(this)),this.negated}}class Xj{static create(e){return new Xj(e)}constructor(e){this._actual=e,this.type=8}cmp(e){return e.type!==this.type?this.type-e.type:this._actual.cmp(e._actual)}equals(e){return e.type===this.type?this._actual.equals(e._actual):!1}substituteConstants(){return this}evaluate(e){return!this._actual.evaluate(e)}serialize(){return`!(${this._actual.serialize()})`}keys(){return this._actual.keys()}negate(){return this._actual}}function Tge(n){let e=null;for(let t=0,i=n.length;t<i;t++){const s=n[t].substituteConstants();if(n[t]!==s&&e===null){e=[];for(let r=0;r<t;r++)e[r]=n[r]}e!==null&&(e[t]=s)}return e===null?n:e}class O1{static create(e,t,i){return O1._normalizeArr(e,t,i)}constructor(e,t){this.expr=e,this.negated=t,this.type=6}cmp(e){if(e.type!==this.type)return this.type-e.type;if(this.expr.length<e.expr.length)return-1;if(this.expr.length>e.expr.length)return 1;for(let t=0,i=this.expr.length;t<i;t++){const s=XS(this.expr[t],e.expr[t]);if(s!==0)return s}return 0}equals(e){if(e.type===this.type){if(this.expr.length!==e.expr.length)return!1;for(let t=0,i=this.expr.length;t<i;t++)if(!this.expr[t].equals(e.expr[t]))return!1;return!0}return!1}substituteConstants(){const e=Tge(this.expr);return e===this.expr?this:O1.create(e,this.negated,!1)}evaluate(e){for(let t=0,i=this.expr.length;t<i;t++)if(!this.expr[t].evaluate(e))return!1;return!0}static _normalizeArr(e,t,i){const s=[];let r=!1;for(const o of e)if(o){if(o.type===1){r=!0;continue}if(o.type===0)return po.INSTANCE;if(o.type===6){s.push(...o.expr);continue}s.push(o)}if(s.length===0&&r)return Ro.INSTANCE;if(s.length!==0){if(s.length===1)return s[0];s.sort(XS);for(let o=1;o<s.length;o++)s[o-1].equals(s[o])&&(s.splice(o,1),o--);if(s.length===1)return s[0];for(;s.length>1;){const o=s[s.length-1];if(o.type!==9)break;s.pop();const a=s.pop(),l=s.length===0,c=uf.create(o.expr.map(u=>O1.create([u,a],null,i)),null,l);c&&(s.push(c),s.sort(XS))}if(s.length===1)return s[0];if(i){for(let o=0;o<s.length;o++)for(let a=o+1;a<s.length;a++)if(s[o].negate().equals(s[a]))return po.INSTANCE;if(s.length===1)return s[0]}return new O1(s,t)}}serialize(){return this.expr.map(e=>e.serialize()).join(" && ")}keys(){const e=[];for(const t of this.expr)e.push(...t.keys());return e}negate(){if(!this.negated){const e=[];for(const t of this.expr)e.push(t.negate());this.negated=uf.create(e,this,!0)}return this.negated}}class uf{static create(e,t,i){return uf._normalizeArr(e,t,i)}constructor(e,t){this.expr=e,this.negated=t,this.type=9}cmp(e){if(e.type!==this.type)return this.type-e.type;if(this.expr.length<e.expr.length)return-1;if(this.expr.length>e.expr.length)return 1;for(let t=0,i=this.expr.length;t<i;t++){const s=XS(this.expr[t],e.expr[t]);if(s!==0)return s}return 0}equals(e){if(e.type===this.type){if(this.expr.length!==e.expr.length)return!1;for(let t=0,i=this.expr.length;t<i;t++)if(!this.expr[t].equals(e.expr[t]))return!1;return!0}return!1}substituteConstants(){const e=Tge(this.expr);return e===this.expr?this:uf.create(e,this.negated,!1)}evaluate(e){for(let t=0,i=this.expr.length;t<i;t++)if(this.expr[t].evaluate(e))return!0;return!1}static _normalizeArr(e,t,i){let s=[],r=!1;if(e){for(let o=0,a=e.length;o<a;o++){const l=e[o];if(l){if(l.type===0){r=!0;continue}if(l.type===1)return Ro.INSTANCE;if(l.type===9){s=s.concat(l.expr);continue}s.push(l)}}if(s.length===0&&r)return po.INSTANCE;s.sort(XS)}if(s.length!==0){if(s.length===1)return s[0];for(let o=1;o<s.length;o++)s[o-1].equals(s[o])&&(s.splice(o,1),o--);if(s.length===1)return s[0];if(i){for(let o=0;o<s.length;o++)for(let a=o+1;a<s.length;a++)if(s[o].negate().equals(s[a]))return Ro.INSTANCE;if(s.length===1)return s[0]}return new uf(s,t)}}serialize(){return this.expr.map(e=>e.serialize()).join(" || ")}keys(){const e=[];for(const t of this.expr)e.push(...t.keys());return e}negate(){if(!this.negated){const e=[];for(const t of this.expr)e.push(t.negate());for(;e.length>1;){const t=e.shift(),i=e.shift(),s=[];for(const r of AJ(t))for(const o of AJ(i))s.push(O1.create([r,o],null,!1));e.unshift(uf.create(s,null,!1))}this.negated=uf.create(e,this,!0)}return this.negated}}class ze extends Sv{static all(){return ze._info.values()}constructor(e,t,i){super(e,null),this._defaultValue=t,typeof i=="object"?ze._info.push({...i,key:e}):i!==!0&&ze._info.push({key:e,description:i,type:t!=null?typeof t:void 0})}bindTo(e){return e.createKey(this.key,this._defaultValue)}getValue(e){return e.getContextKeyValue(this.key)}toNegated(){return this.negate()}isEqualTo(e){return xC.create(this.key,e)}}ze._info=[];const ft=Bt("contextKeyService");function Nge(n,e){return n<e?-1:n>e?1:0}function Lv(n,e,t,i){return n<t?-1:n>t?1:e<i?-1:e>i?1:0}function n9(n,e){if(n.type===0||e.type===1)return!0;if(n.type===9)return e.type===9?NJ(n.expr,e.expr):!1;if(e.type===9){for(const t of e.expr)if(n9(n,t))return!0;return!1}if(n.type===6){if(e.type===6)return NJ(e.expr,n.expr);for(const t of n.expr)if(n9(t,e))return!0;return!1}return n.equals(e)}function NJ(n,e){let t=0,i=0;for(;t<n.length&&i<e.length;){const s=n[t].cmp(e[i]);if(s<0)return!1;s===0&&t++,i++}return t===n.length}function AJ(n){return n.type===9?n.expr:[n]}function x5(n,e){if(!n)throw new Error(e?`Assertion failed (${e})`:"Assertion Failed")}function SO(n,e="Unreachable"){throw new Error(e)}function _L(n){if(!n()){debugger;n(),vt(new an("Assertion Failed"))}}function Age(n,e){let t=0;for(;t<n.length-1;){const i=n[t],s=n[t+1];if(!e(i,s))return!1;t++}return!0}class K9e{constructor(){this.data=new Map}add(e,t){x5(uo(e)),x5(ao(t)),x5(!this.data.has(e),"There is already an extension with this id"),this.data.set(e,t)}as(e){return this.data.get(e)||null}}const vn=new K9e;class Qj{constructor(){this._coreKeybindings=new oo,this._extensionKeybindings=[],this._cachedMergedKeybindings=null}static bindToCurrentPlatform(e){if(Ha===1){if(e&&e.win)return e.win}else if(Ha===2){if(e&&e.mac)return e.mac}else if(e&&e.linux)return e.linux;return e}registerKeybindingRule(e){const t=Qj.bindToCurrentPlatform(e),i=new xe;if(t&&t.primary){const s=z8(t.primary,Ha);s&&i.add(this._registerDefaultKeybinding(s,e.id,e.args,e.weight,0,e.when))}if(t&&Array.isArray(t.secondary))for(let s=0,r=t.secondary.length;s<r;s++){const o=t.secondary[s],a=z8(o,Ha);a&&i.add(this._registerDefaultKeybinding(a,e.id,e.args,e.weight,-s-1,e.when))}return i}registerCommandAndKeybindingRule(e){return _c(this.registerKeybindingRule(e),Yt.registerCommand(e))}_registerDefaultKeybinding(e,t,i,s,r,o){const a=this._coreKeybindings.push({keybinding:e,command:t,commandArgs:i,when:o,weight1:s,weight2:r,extensionId:null,isBuiltinExtension:!1});return this._cachedMergedKeybindings=null,st(()=>{a(),this._cachedMergedKeybindings=null})}getDefaultKeybindings(){return this._cachedMergedKeybindings||(this._cachedMergedKeybindings=Array.from(this._coreKeybindings).concat(this._extensionKeybindings),this._cachedMergedKeybindings.sort(Y9e)),this._cachedMergedKeybindings.slice(0)}}const Mo=new Qj,G9e={EditorModes:"platform.keybindingsRegistry"};vn.add(G9e.EditorModes,Mo);function Y9e(n,e){if(n.weight1!==e.weight1)return n.weight1-e.weight1;if(n.command&&e.command){if(n.command<e.command)return-1;if(n.command>e.command)return 1}return n.weight2-e.weight2}var Z9e=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},PJ=function(n,e){return function(t,i){e(t,i,n)}},eN;function M0(n){return n.command!==void 0}function X9e(n){return n.submenu!==void 0}class B{constructor(e){if(B._instances.has(e))throw new TypeError(`MenuId with identifier '${e}' already exists. Use MenuId.for(ident) or a unique identifier`);B._instances.set(e,this),this.id=e}}B._instances=new Map;B.CommandPalette=new B("CommandPalette");B.DebugBreakpointsContext=new B("DebugBreakpointsContext");B.DebugCallStackContext=new B("DebugCallStackContext");B.DebugConsoleContext=new B("DebugConsoleContext");B.DebugVariablesContext=new B("DebugVariablesContext");B.DebugWatchContext=new B("DebugWatchContext");B.DebugToolBar=new B("DebugToolBar");B.DebugToolBarStop=new B("DebugToolBarStop");B.EditorContext=new B("EditorContext");B.SimpleEditorContext=new B("SimpleEditorContext");B.EditorContent=new B("EditorContent");B.EditorLineNumberContext=new B("EditorLineNumberContext");B.EditorContextCopy=new B("EditorContextCopy");B.EditorContextPeek=new B("EditorContextPeek");B.EditorContextShare=new B("EditorContextShare");B.EditorTitle=new B("EditorTitle");B.EditorTitleRun=new B("EditorTitleRun");B.EditorTitleContext=new B("EditorTitleContext");B.EditorTitleContextShare=new B("EditorTitleContextShare");B.EmptyEditorGroup=new B("EmptyEditorGroup");B.EmptyEditorGroupContext=new B("EmptyEditorGroupContext");B.EditorTabsBarContext=new B("EditorTabsBarContext");B.EditorTabsBarShowTabsSubmenu=new B("EditorTabsBarShowTabsSubmenu");B.EditorActionsPositionSubmenu=new B("EditorActionsPositionSubmenu");B.ExplorerContext=new B("ExplorerContext");B.ExplorerContextShare=new B("ExplorerContextShare");B.ExtensionContext=new B("ExtensionContext");B.GlobalActivity=new B("GlobalActivity");B.CommandCenter=new B("CommandCenter");B.CommandCenterCenter=new B("CommandCenterCenter");B.LayoutControlMenuSubmenu=new B("LayoutControlMenuSubmenu");B.LayoutControlMenu=new B("LayoutControlMenu");B.MenubarMainMenu=new B("MenubarMainMenu");B.MenubarAppearanceMenu=new B("MenubarAppearanceMenu");B.MenubarDebugMenu=new B("MenubarDebugMenu");B.MenubarEditMenu=new B("MenubarEditMenu");B.MenubarCopy=new B("MenubarCopy");B.MenubarFileMenu=new B("MenubarFileMenu");B.MenubarGoMenu=new B("MenubarGoMenu");B.MenubarHelpMenu=new B("MenubarHelpMenu");B.MenubarLayoutMenu=new B("MenubarLayoutMenu");B.MenubarNewBreakpointMenu=new B("MenubarNewBreakpointMenu");B.PanelAlignmentMenu=new B("PanelAlignmentMenu");B.PanelPositionMenu=new B("PanelPositionMenu");B.ActivityBarPositionMenu=new B("ActivityBarPositionMenu");B.MenubarPreferencesMenu=new B("MenubarPreferencesMenu");B.MenubarRecentMenu=new B("MenubarRecentMenu");B.MenubarSelectionMenu=new B("MenubarSelectionMenu");B.MenubarShare=new B("MenubarShare");B.MenubarSwitchEditorMenu=new B("MenubarSwitchEditorMenu");B.MenubarSwitchGroupMenu=new B("MenubarSwitchGroupMenu");B.MenubarTerminalMenu=new B("MenubarTerminalMenu");B.MenubarViewMenu=new B("MenubarViewMenu");B.MenubarHomeMenu=new B("MenubarHomeMenu");B.OpenEditorsContext=new B("OpenEditorsContext");B.OpenEditorsContextShare=new B("OpenEditorsContextShare");B.ProblemsPanelContext=new B("ProblemsPanelContext");B.SCMInputBox=new B("SCMInputBox");B.SCMHistoryItem=new B("SCMHistoryItem");B.SCMChangeContext=new B("SCMChangeContext");B.SCMResourceContext=new B("SCMResourceContext");B.SCMResourceContextShare=new B("SCMResourceContextShare");B.SCMResourceFolderContext=new B("SCMResourceFolderContext");B.SCMResourceGroupContext=new B("SCMResourceGroupContext");B.SCMSourceControl=new B("SCMSourceControl");B.SCMTitle=new B("SCMTitle");B.SearchContext=new B("SearchContext");B.SearchActionMenu=new B("SearchActionContext");B.StatusBarWindowIndicatorMenu=new B("StatusBarWindowIndicatorMenu");B.StatusBarRemoteIndicatorMenu=new B("StatusBarRemoteIndicatorMenu");B.StickyScrollContext=new B("StickyScrollContext");B.TestItem=new B("TestItem");B.TestItemGutter=new B("TestItemGutter");B.TestMessageContext=new B("TestMessageContext");B.TestMessageContent=new B("TestMessageContent");B.TestPeekElement=new B("TestPeekElement");B.TestPeekTitle=new B("TestPeekTitle");B.TouchBarContext=new B("TouchBarContext");B.TitleBarContext=new B("TitleBarContext");B.TitleBarTitleContext=new B("TitleBarTitleContext");B.TunnelContext=new B("TunnelContext");B.TunnelPrivacy=new B("TunnelPrivacy");B.TunnelProtocol=new B("TunnelProtocol");B.TunnelPortInline=new B("TunnelInline");B.TunnelTitle=new B("TunnelTitle");B.TunnelLocalAddressInline=new B("TunnelLocalAddressInline");B.TunnelOriginInline=new B("TunnelOriginInline");B.ViewItemContext=new B("ViewItemContext");B.ViewContainerTitle=new B("ViewContainerTitle");B.ViewContainerTitleContext=new B("ViewContainerTitleContext");B.ViewTitle=new B("ViewTitle");B.ViewTitleContext=new B("ViewTitleContext");B.CommentEditorActions=new B("CommentEditorActions");B.CommentThreadTitle=new B("CommentThreadTitle");B.CommentThreadActions=new B("CommentThreadActions");B.CommentThreadAdditionalActions=new B("CommentThreadAdditionalActions");B.CommentThreadTitleContext=new B("CommentThreadTitleContext");B.CommentThreadCommentContext=new B("CommentThreadCommentContext");B.CommentTitle=new B("CommentTitle");B.CommentActions=new B("CommentActions");B.InteractiveToolbar=new B("InteractiveToolbar");B.InteractiveCellTitle=new B("InteractiveCellTitle");B.InteractiveCellDelete=new B("InteractiveCellDelete");B.InteractiveCellExecute=new B("InteractiveCellExecute");B.InteractiveInputExecute=new B("InteractiveInputExecute");B.NotebookToolbar=new B("NotebookToolbar");B.NotebookStickyScrollContext=new B("NotebookStickyScrollContext");B.NotebookCellTitle=new B("NotebookCellTitle");B.NotebookCellDelete=new B("NotebookCellDelete");B.NotebookCellInsert=new B("NotebookCellInsert");B.NotebookCellBetween=new B("NotebookCellBetween");B.NotebookCellListTop=new B("NotebookCellTop");B.NotebookCellExecute=new B("NotebookCellExecute");B.NotebookCellExecutePrimary=new B("NotebookCellExecutePrimary");B.NotebookDiffCellInputTitle=new B("NotebookDiffCellInputTitle");B.NotebookDiffCellMetadataTitle=new B("NotebookDiffCellMetadataTitle");B.NotebookDiffCellOutputsTitle=new B("NotebookDiffCellOutputsTitle");B.NotebookOutputToolbar=new B("NotebookOutputToolbar");B.NotebookEditorLayoutConfigure=new B("NotebookEditorLayoutConfigure");B.NotebookKernelSource=new B("NotebookKernelSource");B.BulkEditTitle=new B("BulkEditTitle");B.BulkEditContext=new B("BulkEditContext");B.TimelineItemContext=new B("TimelineItemContext");B.TimelineTitle=new B("TimelineTitle");B.TimelineTitleContext=new B("TimelineTitleContext");B.TimelineFilterSubMenu=new B("TimelineFilterSubMenu");B.AccountsContext=new B("AccountsContext");B.SidebarTitle=new B("SidebarTitle");B.PanelTitle=new B("PanelTitle");B.AuxiliaryBarTitle=new B("AuxiliaryBarTitle");B.TerminalInstanceContext=new B("TerminalInstanceContext");B.TerminalEditorInstanceContext=new B("TerminalEditorInstanceContext");B.TerminalNewDropdownContext=new B("TerminalNewDropdownContext");B.TerminalTabContext=new B("TerminalTabContext");B.TerminalTabEmptyAreaContext=new B("TerminalTabEmptyAreaContext");B.TerminalStickyScrollContext=new B("TerminalStickyScrollContext");B.WebviewContext=new B("WebviewContext");B.InlineCompletionsActions=new B("InlineCompletionsActions");B.NewFile=new B("NewFile");B.MergeInput1Toolbar=new B("MergeToolbar1Toolbar");B.MergeInput2Toolbar=new B("MergeToolbar2Toolbar");B.MergeBaseToolbar=new B("MergeBaseToolbar");B.MergeInputResultToolbar=new B("MergeToolbarResultToolbar");B.InlineSuggestionToolbar=new B("InlineSuggestionToolbar");B.ChatContext=new B("ChatContext");B.ChatCodeBlock=new B("ChatCodeblock");B.ChatMessageTitle=new B("ChatMessageTitle");B.ChatExecute=new B("ChatExecute");B.ChatInputSide=new B("ChatInputSide");B.AccessibleView=new B("AccessibleView");B.MultiDiffEditorFileToolbar=new B("MultiDiffEditorFileToolbar");const Vu=Bt("menuService");class hf{static for(e){let t=this._all.get(e);return t||(t=new hf(e),this._all.set(e,t)),t}static merge(e){const t=new Set;for(const i of e)i instanceof hf&&t.add(i.id);return t}constructor(e){this.id=e,this.has=t=>t===e}}hf._all=new Map;const tr=new class{constructor(){this._commands=new Map,this._menuItems=new Map,this._onDidChangeMenu=new pBe({merge:hf.merge}),this.onDidChangeMenu=this._onDidChangeMenu.event}addCommand(n){return this._commands.set(n.id,n),this._onDidChangeMenu.fire(hf.for(B.CommandPalette)),st(()=>{this._commands.delete(n.id)&&this._onDidChangeMenu.fire(hf.for(B.CommandPalette))})}getCommand(n){return this._commands.get(n)}getCommands(){const n=new Map;return this._commands.forEach((e,t)=>n.set(t,e)),n}appendMenuItem(n,e){let t=this._menuItems.get(n);t||(t=new oo,this._menuItems.set(n,t));const i=t.push(e);return this._onDidChangeMenu.fire(hf.for(n)),st(()=>{i(),this._onDidChangeMenu.fire(hf.for(n))})}appendMenuItems(n){const e=new xe;for(const{id:t,item:i}of n)e.add(this.appendMenuItem(t,i));return e}getMenuItems(n){let e;return this._menuItems.has(n)?e=[...this._menuItems.get(n)]:e=[],n===B.CommandPalette&&this._appendImplicitItems(e),e}_appendImplicitItems(n){const e=new Set;for(const t of n)M0(t)&&(e.add(t.command.id),t.alt&&e.add(t.alt.id));this._commands.forEach((t,i)=>{e.has(i)||n.push({command:t})})}};class vL extends gy{constructor(e,t,i){super(`submenuitem.${e.submenu.id}`,typeof e.title=="string"?e.title:e.title.value,i,"submenu"),this.item=e,this.hideActions=t}}let Lc=eN=class{static label(e,t){return t!=null&&t.renderShortTitle&&e.shortTitle?typeof e.shortTitle=="string"?e.shortTitle:e.shortTitle.value:typeof e.title=="string"?e.title:e.title.value}constructor(e,t,i,s,r,o){var a,l;this.hideActions=s,this._commandService=o,this.id=e.id,this.label=eN.label(e,i),this.tooltip=(l=typeof e.tooltip=="string"?e.tooltip:(a=e.tooltip)===null||a===void 0?void 0:a.value)!==null&&l!==void 0?l:"",this.enabled=!e.precondition||r.contextMatchesRules(e.precondition),this.checked=void 0;let c;if(e.toggled){const u=e.toggled.condition?e.toggled:{condition:e.toggled};this.checked=r.contextMatchesRules(u.condition),this.checked&&u.tooltip&&(this.tooltip=typeof u.tooltip=="string"?u.tooltip:u.tooltip.value),this.checked&&nt.isThemeIcon(u.icon)&&(c=u.icon),this.checked&&u.title&&(this.label=typeof u.title=="string"?u.title:u.title.value)}c||(c=nt.isThemeIcon(e.icon)?e.icon:void 0),this.item=e,this.alt=t?new eN(t,void 0,i,s,r,o):void 0,this._options=i,this.class=c&&nt.asClassName(c)}run(...e){var t,i;let s=[];return!((t=this._options)===null||t===void 0)&&t.arg&&(s=[...s,this._options.arg]),!((i=this._options)===null||i===void 0)&&i.shouldForwardArgs&&(s=[...s,...e]),this._commandService.executeCommand(this.id,...s)}};Lc=eN=Z9e([PJ(4,ft),PJ(5,Dn)],Lc);class sl{constructor(e){this.desc=e}}function Zi(n){const e=new xe,t=new n,{f1:i,menu:s,keybinding:r,...o}=t.desc;if(e.add(Yt.registerCommand({id:o.id,handler:(a,...l)=>t.run(a,...l),metadata:o.metadata})),Array.isArray(s))for(const a of s)e.add(tr.appendMenuItem(a.id,{command:{...o,precondition:a.precondition===null?void 0:o.precondition},...a}));else s&&e.add(tr.appendMenuItem(s.id,{command:{...o,precondition:s.precondition===null?void 0:o.precondition},...s}));if(i&&(e.add(tr.appendMenuItem(B.CommandPalette,{command:o,when:o.precondition})),e.add(tr.addCommand(o))),Array.isArray(r))for(const a of r)e.add(Mo.registerKeybindingRule({...a,id:o.id,when:o.precondition?ke.and(o.precondition,a.when):a.when}));else r&&e.add(Mo.registerKeybindingRule({...r,id:o.id,when:o.precondition?ke.and(o.precondition,r.when):r.when}));return e}const fa=Bt("telemetryService"),ga=Bt("logService");var hr;(function(n){n[n.Off=0]="Off",n[n.Trace=1]="Trace",n[n.Debug=2]="Debug",n[n.Info=3]="Info",n[n.Warning=4]="Warning",n[n.Error=5]="Error"})(hr||(hr={}));const Pge=hr.Info;class Rge extends pe{constructor(){super(...arguments),this.level=Pge,this._onDidChangeLogLevel=this._register(new ue),this.onDidChangeLogLevel=this._onDidChangeLogLevel.event}setLevel(e){this.level!==e&&(this.level=e,this._onDidChangeLogLevel.fire(this.level))}getLevel(){return this.level}checkLogLevel(e){return this.level!==hr.Off&&this.level<=e}}class Q9e extends Rge{constructor(e=Pge,t=!0){super(),this.useColors=t,this.setLevel(e)}trace(e,...t){this.checkLogLevel(hr.Trace)&&(this.useColors?console.log("%cTRACE","color: #888",e,...t):console.log(e,...t))}debug(e,...t){this.checkLogLevel(hr.Debug)&&(this.useColors?console.log("%cDEBUG","background: #eee; color: #888",e,...t):console.log(e,...t))}info(e,...t){this.checkLogLevel(hr.Info)&&(this.useColors?console.log("%c INFO","color: #33f",e,...t):console.log(e,...t))}warn(e,...t){this.checkLogLevel(hr.Warning)&&(this.useColors?console.log("%c WARN","color: #993",e,...t):console.log(e,...t))}error(e,...t){this.checkLogLevel(hr.Error)&&(this.useColors?console.log("%c ERR","color: #f33",e,...t):console.error(e,...t))}dispose(){}}class J9e extends Rge{constructor(e){super(),this.loggers=e,e.length&&this.setLevel(e[0].getLevel())}setLevel(e){for(const t of this.loggers)t.setLevel(e);super.setLevel(e)}trace(e,...t){for(const i of this.loggers)i.trace(e,...t)}debug(e,...t){for(const i of this.loggers)i.debug(e,...t)}info(e,...t){for(const i of this.loggers)i.info(e,...t)}warn(e,...t){for(const i of this.loggers)i.warn(e,...t)}error(e,...t){for(const i of this.loggers)i.error(e,...t)}dispose(){for(const e of this.loggers)e.dispose()}}function e7e(n){switch(n){case hr.Trace:return"trace";case hr.Debug:return"debug";case hr.Info:return"info";case hr.Warning:return"warn";case hr.Error:return"error";case hr.Off:return"off"}}new ze("logLevel",e7e(hr.Info));let kO=class{constructor(e){this.id=e.id,this.precondition=e.precondition,this._kbOpts=e.kbOpts,this._menuOpts=e.menuOpts,this.metadata=e.metadata}register(){if(Array.isArray(this._menuOpts)?this._menuOpts.forEach(this._registerMenuItem,this):this._menuOpts&&this._registerMenuItem(this._menuOpts),this._kbOpts){const e=Array.isArray(this._kbOpts)?this._kbOpts:[this._kbOpts];for(const t of e){let i=t.kbExpr;this.precondition&&(i?i=ke.and(i,this.precondition):i=this.precondition);const s={id:this.id,weight:t.weight,args:t.args,when:i,primary:t.primary,secondary:t.secondary,win:t.win,linux:t.linux,mac:t.mac};Mo.registerKeybindingRule(s)}}Yt.registerCommand({id:this.id,handler:(e,t)=>this.runCommand(e,t),metadata:this.metadata})}_registerMenuItem(e){tr.appendMenuItem(e.menuId,{group:e.group,command:{id:this.id,title:e.title,icon:e.icon,precondition:this.precondition},when:e.when,order:e.order})}};class EC extends kO{constructor(){super(...arguments),this._implementations=[]}addImplementation(e,t,i,s){return this._implementations.push({priority:e,name:t,implementation:i,when:s}),this._implementations.sort((r,o)=>o.priority-r.priority),{dispose:()=>{for(let r=0;r<this._implementations.length;r++)if(this._implementations[r].implementation===i){this._implementations.splice(r,1);return}}}}runCommand(e,t){const i=e.get(ga),s=e.get(ft);i.trace(`Executing Command '${this.id}' which has ${this._implementations.length} bound.`);for(const r of this._implementations){if(r.when){const a=s.getContext(Ka());if(!r.when.evaluate(a))continue}const o=r.implementation(e,t);if(o)return i.trace(`Command '${this.id}' was handled by '${r.name}'.`),typeof o=="boolean"?void 0:o}i.trace(`The Command '${this.id}' was not handled by any implementation.`)}}class Mge extends kO{constructor(e,t){super(t),this.command=e}runCommand(e,t){return this.command.runCommand(e,t)}}class Ks extends kO{static bindToContribution(e){return class extends Ks{constructor(i){super(i),this._callback=i.handler}runEditorCommand(i,s,r){const o=e(s);o&&this._callback(o,r)}}}static runEditorCommand(e,t,i,s){const r=e.get(ri),o=r.getFocusedCodeEditor()||r.getActiveCodeEditor();if(o)return o.invokeWithinContext(a=>{if(a.get(ft).contextMatchesRules(i??void 0))return s(a,o,t)})}runCommand(e,t){return Ks.runEditorCommand(e,t,this.precondition,(i,s,r)=>this.runEditorCommand(i,s,r))}}class qe extends Ks{static convertOptions(e){let t;Array.isArray(e.menuOpts)?t=e.menuOpts:e.menuOpts?t=[e.menuOpts]:t=[];function i(s){return s.menuId||(s.menuId=B.EditorContext),s.title||(s.title=e.label),s.when=ke.and(e.precondition,s.when),s}return Array.isArray(e.contextMenuOpts)?t.push(...e.contextMenuOpts.map(i)):e.contextMenuOpts&&t.push(i(e.contextMenuOpts)),e.menuOpts=t,e}constructor(e){super(qe.convertOptions(e)),this.label=e.label,this.alias=e.alias}runEditorCommand(e,t,i){return this.reportTelemetry(e,t),this.run(e,t,i||{})}reportTelemetry(e,t){e.get(fa).publicLog2("editorActionInvoked",{name:this.label,id:this.id})}}class Oge extends qe{constructor(){super(...arguments),this._implementations=[]}addImplementation(e,t){return this._implementations.push([e,t]),this._implementations.sort((i,s)=>s[0]-i[0]),{dispose:()=>{for(let i=0;i<this._implementations.length;i++)if(this._implementations[i][1]===t){this._implementations.splice(i,1);return}}}}run(e,t,i){for(const s of this._implementations){const r=s[1](e,t,i);if(r)return typeof r=="boolean"?void 0:r}}}class Hu extends sl{run(e,...t){const i=e.get(ri),s=i.getFocusedCodeEditor()||i.getActiveCodeEditor();if(s)return s.invokeWithinContext(r=>{var o,a;const l=r.get(ft),c=r.get(ga);if(!l.contextMatchesRules((o=this.desc.precondition)!==null&&o!==void 0?o:void 0)){c.debug("[EditorAction2] NOT running command because its precondition is FALSE",this.desc.id,(a=this.desc.precondition)===null||a===void 0?void 0:a.serialize());return}return this.runEditorCommand(r,s,...t)})}}function xd(n,e){Yt.registerCommand(n,function(t,...i){const s=t.get(at),[r,o]=i;Si(it.isUri(r)),Si(he.isIPosition(o));const a=t.get(fn).getModel(r);if(a){const l=he.lift(o);return s.invokeFunction(e,a,l,...i.slice(2))}return t.get(Bo).createModelReference(r).then(l=>new Promise((c,u)=>{try{const h=s.invokeFunction(e,l.object.textEditorModel,he.lift(o),i.slice(2));c(h)}catch(h){u(h)}}).finally(()=>{l.dispose()}))})}function Be(n){return pl.INSTANCE.registerEditorCommand(n),n}function Ae(n){const e=new n;return pl.INSTANCE.registerEditorAction(e),e}function Fge(n){return pl.INSTANCE.registerEditorAction(n),n}function t7e(n){pl.INSTANCE.registerEditorAction(n)}function ti(n,e,t){pl.INSTANCE.registerEditorContribution(n,e,t)}var mb;(function(n){function e(o){return pl.INSTANCE.getEditorCommand(o)}n.getEditorCommand=e;function t(){return pl.INSTANCE.getEditorActions()}n.getEditorActions=t;function i(){return pl.INSTANCE.getEditorContributions()}n.getEditorContributions=i;function s(o){return pl.INSTANCE.getEditorContributions().filter(a=>o.indexOf(a.id)>=0)}n.getSomeEditorContributions=s;function r(){return pl.INSTANCE.getDiffEditorContributions()}n.getDiffEditorContributions=r})(mb||(mb={}));const i7e={EditorCommonContributions:"editor.contributions"};class pl{constructor(){this.editorContributions=[],this.diffEditorContributions=[],this.editorActions=[],this.editorCommands=Object.create(null)}registerEditorContribution(e,t,i){this.editorContributions.push({id:e,ctor:t,instantiation:i})}getEditorContributions(){return this.editorContributions.slice(0)}getDiffEditorContributions(){return this.diffEditorContributions.slice(0)}registerEditorAction(e){e.register(),this.editorActions.push(e)}getEditorActions(){return this.editorActions}registerEditorCommand(e){e.register(),this.editorCommands[e.id]=e}getEditorCommand(e){return this.editorCommands[e]||null}}pl.INSTANCE=new pl;vn.add(i7e.EditorCommonContributions,pl.INSTANCE);function pE(n){return n.register(),n}const Bge=pE(new EC({id:"undo",precondition:void 0,kbOpts:{weight:0,primary:2104},menuOpts:[{menuId:B.MenubarEditMenu,group:"1_do",title:v({key:"miUndo",comment:["&& denotes a mnemonic"]},"&&Undo"),order:1},{menuId:B.CommandPalette,group:"",title:v("undo","Undo"),order:1}]}));pE(new Mge(Bge,{id:"default:undo",precondition:void 0}));const Wge=pE(new EC({id:"redo",precondition:void 0,kbOpts:{weight:0,primary:2103,secondary:[3128],mac:{primary:3128}},menuOpts:[{menuId:B.MenubarEditMenu,group:"1_do",title:v({key:"miRedo",comment:["&& denotes a mnemonic"]},"&&Redo"),order:2},{menuId:B.CommandPalette,group:"",title:v("redo","Redo"),order:1}]}));pE(new Mge(Wge,{id:"default:redo",precondition:void 0}));const n7e=pE(new EC({id:"editor.action.selectAll",precondition:void 0,kbOpts:{weight:0,kbExpr:null,primary:2079},menuOpts:[{menuId:B.MenubarSelectionMenu,group:"1_basic",title:v({key:"miSelectAll",comment:["&& denotes a mnemonic"]},"&&Select All"),order:1},{menuId:B.CommandPalette,group:"",title:v("selectAll","Select All"),order:1}]}));let M=class Gs{constructor(e,t,i,s){e>i||e===i&&t>s?(this.startLineNumber=i,this.startColumn=s,this.endLineNumber=e,this.endColumn=t):(this.startLineNumber=e,this.startColumn=t,this.endLineNumber=i,this.endColumn=s)}isEmpty(){return Gs.isEmpty(this)}static isEmpty(e){return e.startLineNumber===e.endLineNumber&&e.startColumn===e.endColumn}containsPosition(e){return Gs.containsPosition(this,e)}static containsPosition(e,t){return!(t.lineNumber<e.startLineNumber||t.lineNumber>e.endLineNumber||t.lineNumber===e.startLineNumber&&t.column<e.startColumn||t.lineNumber===e.endLineNumber&&t.column>e.endColumn)}static strictContainsPosition(e,t){return!(t.lineNumber<e.startLineNumber||t.lineNumber>e.endLineNumber||t.lineNumber===e.startLineNumber&&t.column<=e.startColumn||t.lineNumber===e.endLineNumber&&t.column>=e.endColumn)}containsRange(e){return Gs.containsRange(this,e)}static containsRange(e,t){return!(t.startLineNumber<e.startLineNumber||t.endLineNumber<e.startLineNumber||t.startLineNumber>e.endLineNumber||t.endLineNumber>e.endLineNumber||t.startLineNumber===e.startLineNumber&&t.startColumn<e.startColumn||t.endLineNumber===e.endLineNumber&&t.endColumn>e.endColumn)}strictContainsRange(e){return Gs.strictContainsRange(this,e)}static strictContainsRange(e,t){return!(t.startLineNumber<e.startLineNumber||t.endLineNumber<e.startLineNumber||t.startLineNumber>e.endLineNumber||t.endLineNumber>e.endLineNumber||t.startLineNumber===e.startLineNumber&&t.startColumn<=e.startColumn||t.endLineNumber===e.endLineNumber&&t.endColumn>=e.endColumn)}plusRange(e){return Gs.plusRange(this,e)}static plusRange(e,t){let i,s,r,o;return t.startLineNumber<e.startLineNumber?(i=t.startLineNumber,s=t.startColumn):t.startLineNumber===e.startLineNumber?(i=t.startLineNumber,s=Math.min(t.startColumn,e.startColumn)):(i=e.startLineNumber,s=e.startColumn),t.endLineNumber>e.endLineNumber?(r=t.endLineNumber,o=t.endColumn):t.endLineNumber===e.endLineNumber?(r=t.endLineNumber,o=Math.max(t.endColumn,e.endColumn)):(r=e.endLineNumber,o=e.endColumn),new Gs(i,s,r,o)}intersectRanges(e){return Gs.intersectRanges(this,e)}static intersectRanges(e,t){let i=e.startLineNumber,s=e.startColumn,r=e.endLineNumber,o=e.endColumn;const a=t.startLineNumber,l=t.startColumn,c=t.endLineNumber,u=t.endColumn;return i<a?(i=a,s=l):i===a&&(s=Math.max(s,l)),r>c?(r=c,o=u):r===c&&(o=Math.min(o,u)),i>r||i===r&&s>o?null:new Gs(i,s,r,o)}equalsRange(e){return Gs.equalsRange(this,e)}static equalsRange(e,t){return!e&&!t?!0:!!e&&!!t&&e.startLineNumber===t.startLineNumber&&e.startColumn===t.startColumn&&e.endLineNumber===t.endLineNumber&&e.endColumn===t.endColumn}getEndPosition(){return Gs.getEndPosition(this)}static getEndPosition(e){return new he(e.endLineNumber,e.endColumn)}getStartPosition(){return Gs.getStartPosition(this)}static getStartPosition(e){return new he(e.startLineNumber,e.startColumn)}toString(){return"["+this.startLineNumber+","+this.startColumn+" -> "+this.endLineNumber+","+this.endColumn+"]"}setEndPosition(e,t){return new Gs(this.startLineNumber,this.startColumn,e,t)}setStartPosition(e,t){return new Gs(e,t,this.endLineNumber,this.endColumn)}collapseToStart(){return Gs.collapseToStart(this)}static collapseToStart(e){return new Gs(e.startLineNumber,e.startColumn,e.startLineNumber,e.startColumn)}collapseToEnd(){return Gs.collapseToEnd(this)}static collapseToEnd(e){return new Gs(e.endLineNumber,e.endColumn,e.endLineNumber,e.endColumn)}delta(e){return new Gs(this.startLineNumber+e,this.startColumn,this.endLineNumber+e,this.endColumn)}static fromPositions(e,t=e){return new Gs(e.lineNumber,e.column,t.lineNumber,t.column)}static lift(e){return e?new Gs(e.startLineNumber,e.startColumn,e.endLineNumber,e.endColumn):null}static isIRange(e){return e&&typeof e.startLineNumber=="number"&&typeof e.startColumn=="number"&&typeof e.endLineNumber=="number"&&typeof e.endColumn=="number"}static areIntersectingOrTouching(e,t){return!(e.endLineNumber<t.startLineNumber||e.endLineNumber===t.startLineNumber&&e.endColumn<t.startColumn||t.endLineNumber<e.startLineNumber||t.endLineNumber===e.startLineNumber&&t.endColumn<e.startColumn)}static areIntersecting(e,t){return!(e.endLineNumber<t.startLineNumber||e.endLineNumber===t.startLineNumber&&e.endColumn<=t.startColumn||t.endLineNumber<e.startLineNumber||t.endLineNumber===e.startLineNumber&&t.endColumn<=e.startColumn)}static compareRangesUsingStarts(e,t){if(e&&t){const r=e.startLineNumber|0,o=t.startLineNumber|0;if(r===o){const a=e.startColumn|0,l=t.startColumn|0;if(a===l){const c=e.endLineNumber|0,u=t.endLineNumber|0;if(c===u){const h=e.endColumn|0,d=t.endColumn|0;return h-d}return c-u}return a-l}return r-o}return(e?1:0)-(t?1:0)}static compareRangesUsingEnds(e,t){return e.endLineNumber===t.endLineNumber?e.endColumn===t.endColumn?e.startLineNumber===t.startLineNumber?e.startColumn-t.startColumn:e.startLineNumber-t.startLineNumber:e.endColumn-t.endColumn:e.endLineNumber-t.endLineNumber}static spansMultipleLines(e){return e.endLineNumber>e.startLineNumber}toJSON(){return this}},Ze=class Zl extends M{constructor(e,t,i,s){super(e,t,i,s),this.selectionStartLineNumber=e,this.selectionStartColumn=t,this.positionLineNumber=i,this.positionColumn=s}toString(){return"["+this.selectionStartLineNumber+","+this.selectionStartColumn+" -> "+this.positionLineNumber+","+this.positionColumn+"]"}equalsSelection(e){return Zl.selectionsEqual(this,e)}static selectionsEqual(e,t){return e.selectionStartLineNumber===t.selectionStartLineNumber&&e.selectionStartColumn===t.selectionStartColumn&&e.positionLineNumber===t.positionLineNumber&&e.positionColumn===t.positionColumn}getDirection(){return this.selectionStartLineNumber===this.startLineNumber&&this.selectionStartColumn===this.startColumn?0:1}setEndPosition(e,t){return this.getDirection()===0?new Zl(this.startLineNumber,this.startColumn,e,t):new Zl(e,t,this.startLineNumber,this.startColumn)}getPosition(){return new he(this.positionLineNumber,this.positionColumn)}getSelectionStart(){return new he(this.selectionStartLineNumber,this.selectionStartColumn)}setStartPosition(e,t){return this.getDirection()===0?new Zl(e,t,this.endLineNumber,this.endColumn):new Zl(this.endLineNumber,this.endColumn,e,t)}static fromPositions(e,t=e){return new Zl(e.lineNumber,e.column,t.lineNumber,t.column)}static fromRange(e,t){return t===0?new Zl(e.startLineNumber,e.startColumn,e.endLineNumber,e.endColumn):new Zl(e.endLineNumber,e.endColumn,e.startLineNumber,e.startColumn)}static liftSelection(e){return new Zl(e.selectionStartLineNumber,e.selectionStartColumn,e.positionLineNumber,e.positionColumn)}static selectionsArrEqual(e,t){if(e&&!t||!e&&t)return!1;if(!e&&!t)return!0;if(e.length!==t.length)return!1;for(let i=0,s=e.length;i<s;i++)if(!this.selectionsEqual(e[i],t[i]))return!1;return!0}static isISelection(e){return e&&typeof e.selectionStartLineNumber=="number"&&typeof e.selectionStartColumn=="number"&&typeof e.positionLineNumber=="number"&&typeof e.positionColumn=="number"}static createWithDirection(e,t,i,s,r){return r===0?new Zl(e,t,i,s):new Zl(i,s,e,t)}};function LO(n,e){const t=n.getCount(),i=n.findTokenIndexAtOffset(e),s=n.getLanguageId(i);let r=i;for(;r+1<t&&n.getLanguageId(r+1)===s;)r++;let o=i;for(;o>0&&n.getLanguageId(o-1)===s;)o--;return new s7e(n,s,o,r+1,n.getStartOffset(o),n.getEndOffset(r))}class s7e{constructor(e,t,i,s,r,o){this._scopedLineTokensBrand=void 0,this._actual=e,this.languageId=t,this._firstTokenIndex=i,this._lastTokenIndex=s,this.firstCharOffset=r,this._lastCharOffset=o}getLineContent(){return this._actual.getLineContent().substring(this.firstCharOffset,this._lastCharOffset)}getActualLineContentBefore(e){return this._actual.getLineContent().substring(0,this.firstCharOffset+e)}getTokenCount(){return this._lastTokenIndex-this._firstTokenIndex}findTokenIndexAtOffset(e){return this._actual.findTokenIndexAtOffset(e+this.firstCharOffset)-this._firstTokenIndex}getStandardTokenType(e){return this._actual.getStandardTokenType(e+this._firstTokenIndex)}}function ih(n){return(n&3)!==0}class xs{static _nextVisibleColumn(e,t,i){return e===9?xs.nextRenderTabStop(t,i):Yp(e)||$j(e)?t+2:t+1}static visibleColumnFromColumn(e,t,i){const s=Math.min(t-1,e.length),r=e.substring(0,s),o=new AA(r);let a=0;for(;!o.eol();){const l=NA(r,s,o.offset);o.nextGraphemeLength(),a=this._nextVisibleColumn(l,a,i)}return a}static columnFromVisibleColumn(e,t,i){if(t<=0)return 1;const s=e.length,r=new AA(e);let o=0,a=1;for(;!r.eol();){const l=NA(e,s,r.offset);r.nextGraphemeLength();const c=this._nextVisibleColumn(l,o,i),u=r.offset+1;if(c>=t){const h=t-o;return c-t<h?u:a}o=c,a=u}return s+1}static nextRenderTabStop(e,t){return e+t-e%t}static nextIndentTabStop(e,t){return e+t-e%t}static prevRenderTabStop(e,t){return Math.max(0,e-1-(e-1)%t)}static prevIndentTabStop(e,t){return Math.max(0,e-1-(e-1)%t)}}function r7e(n,e,t){let i=0;for(let r=0;r<n.length;r++)n.charAt(r)===" "?i=xs.nextIndentTabStop(i,e):i++;let s="";if(!t){const r=Math.floor(i/e);i=i%e;for(let o=0;o<r;o++)s+=" "}for(let r=0;r<i;r++)s+=" ";return s}function $A(n,e,t){let i=zr(n);return i===-1&&(i=n.length),r7e(n.substring(0,i),e,t)+n.substring(i)}const o7e=()=>!0,a7e=()=>!1,l7e=n=>n===" "||n===" ";class Qv{static shouldRecreate(e){return e.hasChanged(143)||e.hasChanged(129)||e.hasChanged(37)||e.hasChanged(76)||e.hasChanged(78)||e.hasChanged(79)||e.hasChanged(6)||e.hasChanged(7)||e.hasChanged(11)||e.hasChanged(9)||e.hasChanged(10)||e.hasChanged(14)||e.hasChanged(127)||e.hasChanged(50)||e.hasChanged(90)}constructor(e,t,i,s){var r;this.languageConfigurationService=s,this._cursorMoveConfigurationBrand=void 0,this._languageId=e;const o=i.options,a=o.get(143),l=o.get(50);this.readOnly=o.get(90),this.tabSize=t.tabSize,this.indentSize=t.indentSize,this.insertSpaces=t.insertSpaces,this.stickyTabStops=o.get(115),this.lineHeight=l.lineHeight,this.typicalHalfwidthCharacterWidth=l.typicalHalfwidthCharacterWidth,this.pageSize=Math.max(1,Math.floor(a.height/this.lineHeight)-2),this.useTabStops=o.get(127),this.wordSeparators=o.get(129),this.emptySelectionClipboard=o.get(37),this.copyWithSyntaxHighlighting=o.get(25),this.multiCursorMergeOverlapping=o.get(76),this.multiCursorPaste=o.get(78),this.multiCursorLimit=o.get(79),this.autoClosingBrackets=o.get(6),this.autoClosingComments=o.get(7),this.autoClosingQuotes=o.get(11),this.autoClosingDelete=o.get(9),this.autoClosingOvertype=o.get(10),this.autoSurround=o.get(14),this.autoIndent=o.get(12),this.surroundingPairs={},this._electricChars=null,this.shouldAutoCloseBefore={quote:this._getShouldAutoClose(e,this.autoClosingQuotes,!0),comment:this._getShouldAutoClose(e,this.autoClosingComments,!1),bracket:this._getShouldAutoClose(e,this.autoClosingBrackets,!1)},this.autoClosingPairs=this.languageConfigurationService.getLanguageConfiguration(e).getAutoClosingPairs();const c=this.languageConfigurationService.getLanguageConfiguration(e).getSurroundingPairs();if(c)for(const h of c)this.surroundingPairs[h.open]=h.close;const u=this.languageConfigurationService.getLanguageConfiguration(e).comments;this.blockCommentStartToken=(r=u==null?void 0:u.blockCommentStartToken)!==null&&r!==void 0?r:null}get electricChars(){var e;if(!this._electricChars){this._electricChars={};const t=(e=this.languageConfigurationService.getLanguageConfiguration(this._languageId).electricCharacter)===null||e===void 0?void 0:e.getElectricCharacters();if(t)for(const i of t)this._electricChars[i]=!0}return this._electricChars}onElectricCharacter(e,t,i){const s=LO(t,i-1),r=this.languageConfigurationService.getLanguageConfiguration(s.languageId).electricCharacter;return r?r.onElectricCharacter(e,s,i-s.firstCharOffset):null}normalizeIndentation(e){return $A(e,this.indentSize,this.insertSpaces)}_getShouldAutoClose(e,t,i){switch(t){case"beforeWhitespace":return l7e;case"languageDefined":return this._getLanguageDefinedShouldAutoClose(e,i);case"always":return o7e;case"never":return a7e}}_getLanguageDefinedShouldAutoClose(e,t){const i=this.languageConfigurationService.getLanguageConfiguration(e).getAutoCloseBeforeSet(t);return s=>i.indexOf(s)!==-1}visibleColumnFromColumn(e,t){return xs.visibleColumnFromColumn(e.getLineContent(t.lineNumber),t.column,this.tabSize)}columnFromVisibleColumn(e,t,i){const s=xs.columnFromVisibleColumn(e.getLineContent(t),i,this.tabSize),r=e.getLineMinColumn(t);if(s<r)return r;const o=e.getLineMaxColumn(t);return s>o?o:s}}let Xt=class Vge{static fromModelState(e){return new c7e(e)}static fromViewState(e){return new u7e(e)}static fromModelSelection(e){const t=Ze.liftSelection(e),i=new Qs(M.fromPositions(t.getSelectionStart()),0,0,t.getPosition(),0);return Vge.fromModelState(i)}static fromModelSelections(e){const t=[];for(let i=0,s=e.length;i<s;i++)t[i]=this.fromModelSelection(e[i]);return t}constructor(e,t){this._cursorStateBrand=void 0,this.modelState=e,this.viewState=t}equals(e){return this.viewState.equals(e.viewState)&&this.modelState.equals(e.modelState)}};class c7e{constructor(e){this.modelState=e,this.viewState=null}}class u7e{constructor(e){this.modelState=null,this.viewState=e}}class Qs{constructor(e,t,i,s,r){this.selectionStart=e,this.selectionStartKind=t,this.selectionStartLeftoverVisibleColumns=i,this.position=s,this.leftoverVisibleColumns=r,this._singleCursorStateBrand=void 0,this.selection=Qs._computeSelection(this.selectionStart,this.position)}equals(e){return this.selectionStartLeftoverVisibleColumns===e.selectionStartLeftoverVisibleColumns&&this.leftoverVisibleColumns===e.leftoverVisibleColumns&&this.selectionStartKind===e.selectionStartKind&&this.position.equals(e.position)&&this.selectionStart.equalsRange(e.selectionStart)}hasSelection(){return!this.selection.isEmpty()||!this.selectionStart.isEmpty()}move(e,t,i,s){return e?new Qs(this.selectionStart,this.selectionStartKind,this.selectionStartLeftoverVisibleColumns,new he(t,i),s):new Qs(new M(t,i,t,i),0,s,new he(t,i),s)}static _computeSelection(e,t){return e.isEmpty()||!t.isBeforeOrEqual(e.getStartPosition())?Ze.fromPositions(e.getStartPosition(),t):Ze.fromPositions(e.getEndPosition(),t)}}class So{constructor(e,t,i){this._editOperationResultBrand=void 0,this.type=e,this.commands=t,this.shouldPushStackElementBefore=i.shouldPushStackElementBefore,this.shouldPushStackElementAfter=i.shouldPushStackElementAfter}}function Ag(n){return n==="'"||n==='"'||n==="`"}class C1{static columnSelect(e,t,i,s,r,o){const a=Math.abs(r-i)+1,l=i>r,c=s>o,u=s<o,h=[];for(let d=0;d<a;d++){const f=i+(l?-d:d),g=e.columnFromVisibleColumn(t,f,s),p=e.columnFromVisibleColumn(t,f,o),m=e.visibleColumnFromColumn(t,new he(f,g)),_=e.visibleColumnFromColumn(t,new he(f,p));u&&(m>o||_<s)||c&&(_>s||m<o)||h.push(new Qs(new M(f,g,f,g),0,0,new he(f,p),0))}if(h.length===0)for(let d=0;d<a;d++){const f=i+(l?-d:d),g=t.getLineMaxColumn(f);h.push(new Qs(new M(f,g,f,g),0,0,new he(f,g),0))}return{viewStates:h,reversed:l,fromLineNumber:i,fromVisualColumn:s,toLineNumber:r,toVisualColumn:o}}static columnSelectLeft(e,t,i){let s=i.toViewVisualColumn;return s>0&&s--,C1.columnSelect(e,t,i.fromViewLineNumber,i.fromViewVisualColumn,i.toViewLineNumber,s)}static columnSelectRight(e,t,i){let s=0;const r=Math.min(i.fromViewLineNumber,i.toViewLineNumber),o=Math.max(i.fromViewLineNumber,i.toViewLineNumber);for(let l=r;l<=o;l++){const c=t.getLineMaxColumn(l),u=e.visibleColumnFromColumn(t,new he(l,c));s=Math.max(s,u)}let a=i.toViewVisualColumn;return a<s&&a++,this.columnSelect(e,t,i.fromViewLineNumber,i.fromViewVisualColumn,i.toViewLineNumber,a)}static columnSelectUp(e,t,i,s){const r=s?e.pageSize:1,o=Math.max(1,i.toViewLineNumber-r);return this.columnSelect(e,t,i.fromViewLineNumber,i.fromViewVisualColumn,o,i.toViewVisualColumn)}static columnSelectDown(e,t,i,s){const r=s?e.pageSize:1,o=Math.min(t.getLineCount(),i.toViewLineNumber+r);return this.columnSelect(e,t,i.fromViewLineNumber,i.fromViewVisualColumn,o,i.toViewVisualColumn)}}class cr{constructor(e,t,i=!1){this._range=e,this._text=t,this.insertsAutoWhitespace=i}getEditOperations(e,t){t.addTrackedEditOperation(this._range,this._text)}computeCursorState(e,t){const s=t.getInverseEditOperations()[0].range;return Ze.fromPositions(s.getEndPosition())}}class h7e{constructor(e,t){this._range=e,this._text=t}getEditOperations(e,t){t.addTrackedEditOperation(this._range,this._text)}computeCursorState(e,t){const s=t.getInverseEditOperations()[0].range;return Ze.fromRange(s,0)}}class XD{constructor(e,t,i=!1){this._range=e,this._text=t,this.insertsAutoWhitespace=i}getEditOperations(e,t){t.addTrackedEditOperation(this._range,this._text)}computeCursorState(e,t){const s=t.getInverseEditOperations()[0].range;return Ze.fromPositions(s.getStartPosition())}}class tN{constructor(e,t,i,s,r=!1){this._range=e,this._text=t,this._columnDeltaOffset=s,this._lineNumberDeltaOffset=i,this.insertsAutoWhitespace=r}getEditOperations(e,t){t.addTrackedEditOperation(this._range,this._text)}computeCursorState(e,t){const s=t.getInverseEditOperations()[0].range;return Ze.fromPositions(s.getEndPosition().delta(this._lineNumberDeltaOffset,this._columnDeltaOffset))}}class Jj{constructor(e,t,i,s=!1){this._range=e,this._text=t,this._initialSelection=i,this._forceMoveMarkers=s,this._selectionId=null}getEditOperations(e,t){t.addTrackedEditOperation(this._range,this._text,this._forceMoveMarkers),this._selectionId=t.trackSelection(this._initialSelection)}computeCursorState(e,t){return t.getTrackedSelection(this._selectionId)}}class bL{static whitespaceVisibleColumn(e,t,i){const s=e.length;let r=0,o=-1,a=-1;for(let l=0;l<s;l++){if(l===t)return[o,a,r];switch(r%i===0&&(o=l,a=r),e.charCodeAt(l)){case 32:r+=1;break;case 9:r=xs.nextRenderTabStop(r,i);break;default:return[-1,-1,-1]}}return t===s?[o,a,r]:[-1,-1,-1]}static atomicPosition(e,t,i,s){const r=e.length,[o,a,l]=bL.whitespaceVisibleColumn(e,t,i);if(l===-1)return-1;let c;switch(s){case 0:c=!0;break;case 1:c=!1;break;case 2:if(l%i===0)return t;c=l%i<=i/2;break}if(c){if(o===-1)return-1;let d=a;for(let f=o;f<r;++f){if(d===a+i)return o;switch(e.charCodeAt(f)){case 32:d+=1;break;case 9:d=xs.nextRenderTabStop(d,i);break;default:return-1}}return d===a+i?o:-1}const u=xs.nextRenderTabStop(l,i);let h=l;for(let d=t;d<r;d++){if(h===u)return d;switch(e.charCodeAt(d)){case 32:h+=1;break;case 9:h=xs.nextRenderTabStop(h,i);break;default:return-1}}return h===u?r:-1}}class E5{constructor(e,t,i){this._cursorPositionBrand=void 0,this.lineNumber=e,this.column=t,this.leftoverVisibleColumns=i}}class _i{static leftPosition(e,t){if(t.column>e.getLineMinColumn(t.lineNumber))return t.delta(void 0,-sge(e.getLineContent(t.lineNumber),t.column-1));if(t.lineNumber>1){const i=t.lineNumber-1;return new he(i,e.getLineMaxColumn(i))}else return t}static leftPositionAtomicSoftTabs(e,t,i){if(t.column<=e.getLineIndentColumn(t.lineNumber)){const s=e.getLineMinColumn(t.lineNumber),r=e.getLineContent(t.lineNumber),o=bL.atomicPosition(r,t.column-1,i,0);if(o!==-1&&o+1>=s)return new he(t.lineNumber,o+1)}return this.leftPosition(e,t)}static left(e,t,i){const s=e.stickyTabStops?_i.leftPositionAtomicSoftTabs(t,i,e.tabSize):_i.leftPosition(t,i);return new E5(s.lineNumber,s.column,0)}static moveLeft(e,t,i,s,r){let o,a;if(i.hasSelection()&&!s)o=i.selection.startLineNumber,a=i.selection.startColumn;else{const l=i.position.delta(void 0,-(r-1)),c=t.normalizePosition(_i.clipPositionColumn(l,t),0),u=_i.left(e,t,c);o=u.lineNumber,a=u.column}return i.move(s,o,a,0)}static clipPositionColumn(e,t){return new he(e.lineNumber,_i.clipRange(e.column,t.getLineMinColumn(e.lineNumber),t.getLineMaxColumn(e.lineNumber)))}static clipRange(e,t,i){return e<t?t:e>i?i:e}static rightPosition(e,t,i){return i<e.getLineMaxColumn(t)?i=i+Hj(e.getLineContent(t),i-1):t<e.getLineCount()&&(t=t+1,i=e.getLineMinColumn(t)),new he(t,i)}static rightPositionAtomicSoftTabs(e,t,i,s,r){if(i<e.getLineIndentColumn(t)){const o=e.getLineContent(t),a=bL.atomicPosition(o,i-1,s,1);if(a!==-1)return new he(t,a+1)}return this.rightPosition(e,t,i)}static right(e,t,i){const s=e.stickyTabStops?_i.rightPositionAtomicSoftTabs(t,i.lineNumber,i.column,e.tabSize,e.indentSize):_i.rightPosition(t,i.lineNumber,i.column);return new E5(s.lineNumber,s.column,0)}static moveRight(e,t,i,s,r){let o,a;if(i.hasSelection()&&!s)o=i.selection.endLineNumber,a=i.selection.endColumn;else{const l=i.position.delta(void 0,r-1),c=t.normalizePosition(_i.clipPositionColumn(l,t),1),u=_i.right(e,t,c);o=u.lineNumber,a=u.column}return i.move(s,o,a,0)}static vertical(e,t,i,s,r,o,a,l){const c=xs.visibleColumnFromColumn(t.getLineContent(i),s,e.tabSize)+r,u=t.getLineCount(),h=i===1&&s===1,d=i===u&&s===t.getLineMaxColumn(i),f=o<i?h:d;if(i=o,i<1?(i=1,a?s=t.getLineMinColumn(i):s=Math.min(t.getLineMaxColumn(i),s)):i>u?(i=u,a?s=t.getLineMaxColumn(i):s=Math.min(t.getLineMaxColumn(i),s)):s=e.columnFromVisibleColumn(t,i,c),f?r=0:r=c-xs.visibleColumnFromColumn(t.getLineContent(i),s,e.tabSize),l!==void 0){const g=new he(i,s),p=t.normalizePosition(g,l);r=r+(s-p.column),i=p.lineNumber,s=p.column}return new E5(i,s,r)}static down(e,t,i,s,r,o,a){return this.vertical(e,t,i,s,r,i+o,a,4)}static moveDown(e,t,i,s,r){let o,a;i.hasSelection()&&!s?(o=i.selection.endLineNumber,a=i.selection.endColumn):(o=i.position.lineNumber,a=i.position.column);let l=0,c;do if(c=_i.down(e,t,o+l,a,i.leftoverVisibleColumns,r,!0),t.normalizePosition(new he(c.lineNumber,c.column),2).lineNumber>o)break;while(l++<10&&o+l<t.getLineCount());return i.move(s,c.lineNumber,c.column,c.leftoverVisibleColumns)}static translateDown(e,t,i){const s=i.selection,r=_i.down(e,t,s.selectionStartLineNumber,s.selectionStartColumn,i.selectionStartLeftoverVisibleColumns,1,!1),o=_i.down(e,t,s.positionLineNumber,s.positionColumn,i.leftoverVisibleColumns,1,!1);return new Qs(new M(r.lineNumber,r.column,r.lineNumber,r.column),0,r.leftoverVisibleColumns,new he(o.lineNumber,o.column),o.leftoverVisibleColumns)}static up(e,t,i,s,r,o,a){return this.vertical(e,t,i,s,r,i-o,a,3)}static moveUp(e,t,i,s,r){let o,a;i.hasSelection()&&!s?(o=i.selection.startLineNumber,a=i.selection.startColumn):(o=i.position.lineNumber,a=i.position.column);const l=_i.up(e,t,o,a,i.leftoverVisibleColumns,r,!0);return i.move(s,l.lineNumber,l.column,l.leftoverVisibleColumns)}static translateUp(e,t,i){const s=i.selection,r=_i.up(e,t,s.selectionStartLineNumber,s.selectionStartColumn,i.selectionStartLeftoverVisibleColumns,1,!1),o=_i.up(e,t,s.positionLineNumber,s.positionColumn,i.leftoverVisibleColumns,1,!1);return new Qs(new M(r.lineNumber,r.column,r.lineNumber,r.column),0,r.leftoverVisibleColumns,new he(o.lineNumber,o.column),o.leftoverVisibleColumns)}static _isBlankLine(e,t){return e.getLineFirstNonWhitespaceColumn(t)===0}static moveToPrevBlankLine(e,t,i,s){let r=i.position.lineNumber;for(;r>1&&this._isBlankLine(t,r);)r--;for(;r>1&&!this._isBlankLine(t,r);)r--;return i.move(s,r,t.getLineMinColumn(r),0)}static moveToNextBlankLine(e,t,i,s){const r=t.getLineCount();let o=i.position.lineNumber;for(;o<r&&this._isBlankLine(t,o);)o++;for(;o<r&&!this._isBlankLine(t,o);)o++;return i.move(s,o,t.getLineMinColumn(o),0)}static moveToBeginningOfLine(e,t,i,s){const r=i.position.lineNumber,o=t.getLineMinColumn(r),a=t.getLineFirstNonWhitespaceColumn(r)||o;let l;return i.position.column===a?l=o:l=a,i.move(s,r,l,0)}static moveToEndOfLine(e,t,i,s,r){const o=i.position.lineNumber,a=t.getLineMaxColumn(o);return i.move(s,o,a,r?1073741824-a:0)}static moveToBeginningOfBuffer(e,t,i,s){return i.move(s,1,1,0)}static moveToEndOfBuffer(e,t,i,s){const r=t.getLineCount(),o=t.getLineMaxColumn(r);return i.move(s,r,o,0)}}class M_{static deleteRight(e,t,i,s){const r=[];let o=e!==3;for(let a=0,l=s.length;a<l;a++){const c=s[a];let u=c;if(u.isEmpty()){const h=c.getPosition(),d=_i.right(t,i,h);u=new M(d.lineNumber,d.column,h.lineNumber,h.column)}if(u.isEmpty()){r[a]=null;continue}u.startLineNumber!==u.endLineNumber&&(o=!0),r[a]=new cr(u,"")}return[o,r]}static isAutoClosingPairDelete(e,t,i,s,r,o,a){if(t==="never"&&i==="never"||e==="never")return!1;for(let l=0,c=o.length;l<c;l++){const u=o[l],h=u.getPosition();if(!u.isEmpty())return!1;const d=r.getLineContent(h.lineNumber);if(h.column<2||h.column>=d.length+1)return!1;const f=d.charAt(h.column-2),g=s.get(f);if(!g)return!1;if(Ag(f)){if(i==="never")return!1}else if(t==="never")return!1;const p=d.charAt(h.column-1);let m=!1;for(const _ of g)_.open===f&&_.close===p&&(m=!0);if(!m)return!1;if(e==="auto"){let _=!1;for(let b=0,y=a.length;b<y;b++){const w=a[b];if(h.lineNumber===w.startLineNumber&&h.column===w.startColumn){_=!0;break}}if(!_)return!1}}return!0}static _runAutoClosingPairDelete(e,t,i){const s=[];for(let r=0,o=i.length;r<o;r++){const a=i[r].getPosition(),l=new M(a.lineNumber,a.column-1,a.lineNumber,a.column+1);s[r]=new cr(l,"")}return[!0,s]}static deleteLeft(e,t,i,s,r){if(this.isAutoClosingPairDelete(t.autoClosingDelete,t.autoClosingBrackets,t.autoClosingQuotes,t.autoClosingPairs.autoClosingPairsOpenByEnd,i,s,r))return this._runAutoClosingPairDelete(t,i,s);const o=[];let a=e!==2;for(let l=0,c=s.length;l<c;l++){const u=M_.getDeleteRange(s[l],i,t);if(u.isEmpty()){o[l]=null;continue}u.startLineNumber!==u.endLineNumber&&(a=!0),o[l]=new cr(u,"")}return[a,o]}static getDeleteRange(e,t,i){if(!e.isEmpty())return e;const s=e.getPosition();if(i.useTabStops&&s.column>1){const r=t.getLineContent(s.lineNumber),o=zr(r),a=o===-1?r.length+1:o+1;if(s.column<=a){const l=i.visibleColumnFromColumn(t,s),c=xs.prevIndentTabStop(l,i.indentSize),u=i.columnFromVisibleColumn(t,s.lineNumber,c);return new M(s.lineNumber,u,s.lineNumber,s.column)}}return M.fromPositions(M_.getPositionAfterDeleteLeft(s,t),s)}static getPositionAfterDeleteLeft(e,t){if(e.column>1){const i=A8e(e.column-1,t.getLineContent(e.lineNumber));return e.with(void 0,i+1)}else if(e.lineNumber>1){const i=e.lineNumber-1;return new he(i,t.getLineMaxColumn(i))}else return e}static cut(e,t,i){const s=[];let r=null;i.sort((o,a)=>he.compare(o.getStartPosition(),a.getEndPosition()));for(let o=0,a=i.length;o<a;o++){const l=i[o];if(l.isEmpty())if(e.emptySelectionClipboard){const c=l.getPosition();let u,h,d,f;c.lineNumber<t.getLineCount()?(u=c.lineNumber,h=1,d=c.lineNumber+1,f=1):c.lineNumber>1&&(r==null?void 0:r.endLineNumber)!==c.lineNumber?(u=c.lineNumber-1,h=t.getLineMaxColumn(c.lineNumber-1),d=c.lineNumber,f=t.getLineMaxColumn(c.lineNumber)):(u=c.lineNumber,h=1,d=c.lineNumber,f=t.getLineMaxColumn(c.lineNumber));const g=new M(u,h,d,f);r=g,g.isEmpty()?s[o]=null:s[o]=new cr(g,"")}else s[o]=null;else s[o]=new cr(l,"")}return new So(0,s,{shouldPushStackElementBefore:!0,shouldPushStackElementAfter:!0})}}function zA(n){return n<0?0:n>255?255:n|0}function Jv(n){return n<0?0:n>4294967295?4294967295:n|0}class DC{constructor(e){const t=zA(e);this._defaultValue=t,this._asciiMap=DC._createAsciiMap(t),this._map=new Map}static _createAsciiMap(e){const t=new Uint8Array(256);return t.fill(e),t}set(e,t){const i=zA(t);e>=0&&e<256?this._asciiMap[e]=i:this._map.set(e,i)}get(e){return e>=0&&e<256?this._asciiMap[e]:this._map.get(e)||this._defaultValue}clear(){this._asciiMap.fill(this._defaultValue),this._map.clear()}}class UA{constructor(){this._actual=new DC(0)}add(e){this._actual.set(e,1)}has(e){return this._actual.get(e)===1}clear(){return this._actual.clear()}}class d7e extends DC{constructor(e){super(0);for(let t=0,i=e.length;t<i;t++)this.set(e.charCodeAt(t),2);this.set(32,1),this.set(9,1)}}function f7e(n){const e={};return t=>(e.hasOwnProperty(t)||(e[t]=n(t)),e[t])}const Bl=f7e(n=>new d7e(n));class ui{static _createWord(e,t,i,s,r){return{start:s,end:r,wordType:t,nextCharClass:i}}static _findPreviousWordOnLine(e,t,i){const s=t.getLineContent(i.lineNumber);return this._doFindPreviousWordOnLine(s,e,i)}static _doFindPreviousWordOnLine(e,t,i){let s=0;for(let r=i.column-2;r>=0;r--){const o=e.charCodeAt(r),a=t.get(o);if(a===0){if(s===2)return this._createWord(e,s,a,r+1,this._findEndOfWord(e,t,s,r+1));s=1}else if(a===2){if(s===1)return this._createWord(e,s,a,r+1,this._findEndOfWord(e,t,s,r+1));s=2}else if(a===1&&s!==0)return this._createWord(e,s,a,r+1,this._findEndOfWord(e,t,s,r+1))}return s!==0?this._createWord(e,s,1,0,this._findEndOfWord(e,t,s,0)):null}static _findEndOfWord(e,t,i,s){const r=e.length;for(let o=s;o<r;o++){const a=e.charCodeAt(o),l=t.get(a);if(l===1||i===1&&l===2||i===2&&l===0)return o}return r}static _findNextWordOnLine(e,t,i){const s=t.getLineContent(i.lineNumber);return this._doFindNextWordOnLine(s,e,i)}static _doFindNextWordOnLine(e,t,i){let s=0;const r=e.length;for(let o=i.column-1;o<r;o++){const a=e.charCodeAt(o),l=t.get(a);if(l===0){if(s===2)return this._createWord(e,s,l,this._findStartOfWord(e,t,s,o-1),o);s=1}else if(l===2){if(s===1)return this._createWord(e,s,l,this._findStartOfWord(e,t,s,o-1),o);s=2}else if(l===1&&s!==0)return this._createWord(e,s,l,this._findStartOfWord(e,t,s,o-1),o)}return s!==0?this._createWord(e,s,1,this._findStartOfWord(e,t,s,r-1),r):null}static _findStartOfWord(e,t,i,s){for(let r=s;r>=0;r--){const o=e.charCodeAt(r),a=t.get(o);if(a===1||i===1&&a===2||i===2&&a===0)return r+1}return 0}static moveWordLeft(e,t,i,s){let r=i.lineNumber,o=i.column;o===1&&r>1&&(r=r-1,o=t.getLineMaxColumn(r));let a=ui._findPreviousWordOnLine(e,t,new he(r,o));if(s===0)return new he(r,a?a.start+1:1);if(s===1)return a&&a.wordType===2&&a.end-a.start===1&&a.nextCharClass===0&&(a=ui._findPreviousWordOnLine(e,t,new he(r,a.start+1))),new he(r,a?a.start+1:1);if(s===3){for(;a&&a.wordType===2;)a=ui._findPreviousWordOnLine(e,t,new he(r,a.start+1));return new he(r,a?a.start+1:1)}return a&&o<=a.end+1&&(a=ui._findPreviousWordOnLine(e,t,new he(r,a.start+1))),new he(r,a?a.end+1:1)}static _moveWordPartLeft(e,t){const i=t.lineNumber,s=e.getLineMaxColumn(i);if(t.column===1)return i>1?new he(i-1,e.getLineMaxColumn(i-1)):t;const r=e.getLineContent(i);for(let o=t.column-1;o>1;o--){const a=r.charCodeAt(o-2),l=r.charCodeAt(o-1);if(a===95&&l!==95)return new he(i,o);if(a===45&&l!==45)return new he(i,o);if((Qg(a)||YD(a))&&ch(l))return new he(i,o);if(ch(a)&&ch(l)&&o+1<s){const c=r.charCodeAt(o);if(Qg(c)||YD(c))return new he(i,o)}}return new he(i,1)}static moveWordRight(e,t,i,s){let r=i.lineNumber,o=i.column,a=!1;o===t.getLineMaxColumn(r)&&r<t.getLineCount()&&(a=!0,r=r+1,o=1);let l=ui._findNextWordOnLine(e,t,new he(r,o));if(s===2)l&&l.wordType===2&&l.end-l.start===1&&l.nextCharClass===0&&(l=ui._findNextWordOnLine(e,t,new he(r,l.end+1))),l?o=l.end+1:o=t.getLineMaxColumn(r);else if(s===3){for(a&&(o=0);l&&(l.wordType===2||l.start+1<=o);)l=ui._findNextWordOnLine(e,t,new he(r,l.end+1));l?o=l.start+1:o=t.getLineMaxColumn(r)}else l&&!a&&o>=l.start+1&&(l=ui._findNextWordOnLine(e,t,new he(r,l.end+1))),l?o=l.start+1:o=t.getLineMaxColumn(r);return new he(r,o)}static _moveWordPartRight(e,t){const i=t.lineNumber,s=e.getLineMaxColumn(i);if(t.column===s)return i<e.getLineCount()?new he(i+1,1):t;const r=e.getLineContent(i);for(let o=t.column+1;o<s;o++){const a=r.charCodeAt(o-2),l=r.charCodeAt(o-1);if(a!==95&&l===95)return new he(i,o);if(a!==45&&l===45)return new he(i,o);if((Qg(a)||YD(a))&&ch(l))return new he(i,o);if(ch(a)&&ch(l)&&o+1<s){const c=r.charCodeAt(o);if(Qg(c)||YD(c))return new he(i,o)}}return new he(i,s)}static _deleteWordLeftWhitespace(e,t){const i=e.getLineContent(t.lineNumber),s=t.column-2,r=wu(i,s);return r+1<s?new M(t.lineNumber,r+2,t.lineNumber,t.column):null}static deleteWordLeft(e,t){const i=e.wordSeparators,s=e.model,r=e.selection,o=e.whitespaceHeuristics;if(!r.isEmpty())return r;if(M_.isAutoClosingPairDelete(e.autoClosingDelete,e.autoClosingBrackets,e.autoClosingQuotes,e.autoClosingPairs.autoClosingPairsOpenByEnd,e.model,[e.selection],e.autoClosedCharacters)){const h=e.selection.getPosition();return new M(h.lineNumber,h.column-1,h.lineNumber,h.column+1)}const a=new he(r.positionLineNumber,r.positionColumn);let l=a.lineNumber,c=a.column;if(l===1&&c===1)return null;if(o){const h=this._deleteWordLeftWhitespace(s,a);if(h)return h}let u=ui._findPreviousWordOnLine(i,s,a);return t===0?u?c=u.start+1:c>1?c=1:(l--,c=s.getLineMaxColumn(l)):(u&&c<=u.end+1&&(u=ui._findPreviousWordOnLine(i,s,new he(l,u.start+1))),u?c=u.end+1:c>1?c=1:(l--,c=s.getLineMaxColumn(l))),new M(l,c,a.lineNumber,a.column)}static deleteInsideWord(e,t,i){if(!i.isEmpty())return i;const s=new he(i.positionLineNumber,i.positionColumn),r=this._deleteInsideWordWhitespace(t,s);return r||this._deleteInsideWordDetermineDeleteRange(e,t,s)}static _charAtIsWhitespace(e,t){const i=e.charCodeAt(t);return i===32||i===9}static _deleteInsideWordWhitespace(e,t){const i=e.getLineContent(t.lineNumber),s=i.length;if(s===0)return null;let r=Math.max(t.column-2,0);if(!this._charAtIsWhitespace(i,r))return null;let o=Math.min(t.column-1,s-1);if(!this._charAtIsWhitespace(i,o))return null;for(;r>0&&this._charAtIsWhitespace(i,r-1);)r--;for(;o+1<s&&this._charAtIsWhitespace(i,o+1);)o++;return new M(t.lineNumber,r+1,t.lineNumber,o+2)}static _deleteInsideWordDetermineDeleteRange(e,t,i){const s=t.getLineContent(i.lineNumber),r=s.length;if(r===0)return i.lineNumber>1?new M(i.lineNumber-1,t.getLineMaxColumn(i.lineNumber-1),i.lineNumber,1):i.lineNumber<t.getLineCount()?new M(i.lineNumber,1,i.lineNumber+1,1):new M(i.lineNumber,1,i.lineNumber,1);const o=h=>h.start+1<=i.column&&i.column<=h.end+1,a=(h,d)=>(h=Math.min(h,i.column),d=Math.max(d,i.column),new M(i.lineNumber,h,i.lineNumber,d)),l=h=>{let d=h.start+1,f=h.end+1,g=!1;for(;f-1<r&&this._charAtIsWhitespace(s,f-1);)g=!0,f++;if(!g)for(;d>1&&this._charAtIsWhitespace(s,d-2);)d--;return a(d,f)},c=ui._findPreviousWordOnLine(e,t,i);if(c&&o(c))return l(c);const u=ui._findNextWordOnLine(e,t,i);return u&&o(u)?l(u):c&&u?a(c.end+1,u.start+1):c?a(c.start+1,c.end+1):u?a(u.start+1,u.end+1):a(1,r+1)}static _deleteWordPartLeft(e,t){if(!t.isEmpty())return t;const i=t.getPosition(),s=ui._moveWordPartLeft(e,i);return new M(i.lineNumber,i.column,s.lineNumber,s.column)}static _findFirstNonWhitespaceChar(e,t){const i=e.length;for(let s=t;s<i;s++){const r=e.charAt(s);if(r!==" "&&r!==" ")return s}return i}static _deleteWordRightWhitespace(e,t){const i=e.getLineContent(t.lineNumber),s=t.column-1,r=this._findFirstNonWhitespaceChar(i,s);return s+1<r?new M(t.lineNumber,t.column,t.lineNumber,r+1):null}static deleteWordRight(e,t){const i=e.wordSeparators,s=e.model,r=e.selection,o=e.whitespaceHeuristics;if(!r.isEmpty())return r;const a=new he(r.positionLineNumber,r.positionColumn);let l=a.lineNumber,c=a.column;const u=s.getLineCount(),h=s.getLineMaxColumn(l);if(l===u&&c===h)return null;if(o){const f=this._deleteWordRightWhitespace(s,a);if(f)return f}let d=ui._findNextWordOnLine(i,s,a);return t===2?d?c=d.end+1:c<h||l===u?c=h:(l++,d=ui._findNextWordOnLine(i,s,new he(l,1)),d?c=d.start+1:c=s.getLineMaxColumn(l)):(d&&c>=d.start+1&&(d=ui._findNextWordOnLine(i,s,new he(l,d.end+1))),d?c=d.start+1:c<h||l===u?c=h:(l++,d=ui._findNextWordOnLine(i,s,new he(l,1)),d?c=d.start+1:c=s.getLineMaxColumn(l))),new M(l,c,a.lineNumber,a.column)}static _deleteWordPartRight(e,t){if(!t.isEmpty())return t;const i=t.getPosition(),s=ui._moveWordPartRight(e,i);return new M(i.lineNumber,i.column,s.lineNumber,s.column)}static _createWordAtPosition(e,t,i){const s=new M(t,i.start+1,t,i.end+1);return{word:e.getValueInRange(s),startColumn:s.startColumn,endColumn:s.endColumn}}static getWordAtPosition(e,t,i){const s=Bl(t),r=ui._findPreviousWordOnLine(s,e,i);if(r&&r.wordType===1&&r.start<=i.column-1&&i.column-1<=r.end)return ui._createWordAtPosition(e,i.lineNumber,r);const o=ui._findNextWordOnLine(s,e,i);return o&&o.wordType===1&&o.start<=i.column-1&&i.column-1<=o.end?ui._createWordAtPosition(e,i.lineNumber,o):null}static word(e,t,i,s,r){const o=Bl(e.wordSeparators),a=ui._findPreviousWordOnLine(o,t,r),l=ui._findNextWordOnLine(o,t,r);if(!s){let f,g;return a&&a.wordType===1&&a.start<=r.column-1&&r.column-1<=a.end?(f=a.start+1,g=a.end+1):l&&l.wordType===1&&l.start<=r.column-1&&r.column-1<=l.end?(f=l.start+1,g=l.end+1):(a?f=a.end+1:f=1,l?g=l.start+1:g=t.getLineMaxColumn(r.lineNumber)),new Qs(new M(r.lineNumber,f,r.lineNumber,g),1,0,new he(r.lineNumber,g),0)}let c,u;a&&a.wordType===1&&a.start<r.column-1&&r.column-1<a.end?(c=a.start+1,u=a.end+1):l&&l.wordType===1&&l.start<r.column-1&&r.column-1<l.end?(c=l.start+1,u=l.end+1):(c=r.column,u=r.column);const h=r.lineNumber;let d;if(i.selectionStart.containsPosition(r))d=i.selectionStart.endColumn;else if(r.isBeforeOrEqual(i.selectionStart.getStartPosition())){d=c;const f=new he(h,d);i.selectionStart.containsPosition(f)&&(d=i.selectionStart.endColumn)}else{d=u;const f=new he(h,d);i.selectionStart.containsPosition(f)&&(d=i.selectionStart.startColumn)}return i.move(!0,h,d,0)}}class xO extends ui{static deleteWordPartLeft(e){const t=QD([ui.deleteWordLeft(e,0),ui.deleteWordLeft(e,2),ui._deleteWordPartLeft(e.model,e.selection)]);return t.sort(M.compareRangesUsingEnds),t[2]}static deleteWordPartRight(e){const t=QD([ui.deleteWordRight(e,0),ui.deleteWordRight(e,2),ui._deleteWordPartRight(e.model,e.selection)]);return t.sort(M.compareRangesUsingStarts),t[0]}static moveWordPartLeft(e,t,i){const s=QD([ui.moveWordLeft(e,t,i,0),ui.moveWordLeft(e,t,i,2),ui._moveWordPartLeft(t,i)]);return s.sort(he.compare),s[2]}static moveWordPartRight(e,t,i){const s=QD([ui.moveWordRight(e,t,i,0),ui.moveWordRight(e,t,i,2),ui._moveWordPartRight(t,i)]);return s.sort(he.compare),s[0]}}function QD(n){return n.filter(e=>!!e)}class Ys{static addCursorDown(e,t,i){const s=[];let r=0;for(let o=0,a=t.length;o<a;o++){const l=t[o];s[r++]=new Xt(l.modelState,l.viewState),i?s[r++]=Xt.fromModelState(_i.translateDown(e.cursorConfig,e.model,l.modelState)):s[r++]=Xt.fromViewState(_i.translateDown(e.cursorConfig,e,l.viewState))}return s}static addCursorUp(e,t,i){const s=[];let r=0;for(let o=0,a=t.length;o<a;o++){const l=t[o];s[r++]=new Xt(l.modelState,l.viewState),i?s[r++]=Xt.fromModelState(_i.translateUp(e.cursorConfig,e.model,l.modelState)):s[r++]=Xt.fromViewState(_i.translateUp(e.cursorConfig,e,l.viewState))}return s}static moveToBeginningOfLine(e,t,i){const s=[];for(let r=0,o=t.length;r<o;r++){const a=t[r];s[r]=this._moveToLineStart(e,a,i)}return s}static _moveToLineStart(e,t,i){const s=t.viewState.position.column,r=t.modelState.position.column,o=s===r,a=t.viewState.position.lineNumber,l=e.getLineFirstNonWhitespaceColumn(a);return!o&&!(s===l)?this._moveToLineStartByView(e,t,i):this._moveToLineStartByModel(e,t,i)}static _moveToLineStartByView(e,t,i){return Xt.fromViewState(_i.moveToBeginningOfLine(e.cursorConfig,e,t.viewState,i))}static _moveToLineStartByModel(e,t,i){return Xt.fromModelState(_i.moveToBeginningOfLine(e.cursorConfig,e.model,t.modelState,i))}static moveToEndOfLine(e,t,i,s){const r=[];for(let o=0,a=t.length;o<a;o++){const l=t[o];r[o]=this._moveToLineEnd(e,l,i,s)}return r}static _moveToLineEnd(e,t,i,s){const r=t.viewState.position,o=e.getLineMaxColumn(r.lineNumber),a=r.column===o,l=t.modelState.position,c=e.model.getLineMaxColumn(l.lineNumber),u=o-r.column===c-l.column;return a||u?this._moveToLineEndByModel(e,t,i,s):this._moveToLineEndByView(e,t,i,s)}static _moveToLineEndByView(e,t,i,s){return Xt.fromViewState(_i.moveToEndOfLine(e.cursorConfig,e,t.viewState,i,s))}static _moveToLineEndByModel(e,t,i,s){return Xt.fromModelState(_i.moveToEndOfLine(e.cursorConfig,e.model,t.modelState,i,s))}static expandLineSelection(e,t){const i=[];for(let s=0,r=t.length;s<r;s++){const o=t[s],a=o.modelState.selection.startLineNumber,l=e.model.getLineCount();let c=o.modelState.selection.endLineNumber,u;c===l?u=e.model.getLineMaxColumn(l):(c++,u=1),i[s]=Xt.fromModelState(new Qs(new M(a,1,a,1),0,0,new he(c,u),0))}return i}static moveToBeginningOfBuffer(e,t,i){const s=[];for(let r=0,o=t.length;r<o;r++){const a=t[r];s[r]=Xt.fromModelState(_i.moveToBeginningOfBuffer(e.cursorConfig,e.model,a.modelState,i))}return s}static moveToEndOfBuffer(e,t,i){const s=[];for(let r=0,o=t.length;r<o;r++){const a=t[r];s[r]=Xt.fromModelState(_i.moveToEndOfBuffer(e.cursorConfig,e.model,a.modelState,i))}return s}static selectAll(e,t){const i=e.model.getLineCount(),s=e.model.getLineMaxColumn(i);return Xt.fromModelState(new Qs(new M(1,1,1,1),0,0,new he(i,s),0))}static line(e,t,i,s,r){const o=e.model.validatePosition(s),a=r?e.coordinatesConverter.validateViewPosition(new he(r.lineNumber,r.column),o):e.coordinatesConverter.convertModelPositionToViewPosition(o);if(!i){const c=e.model.getLineCount();let u=o.lineNumber+1,h=1;return u>c&&(u=c,h=e.model.getLineMaxColumn(u)),Xt.fromModelState(new Qs(new M(o.lineNumber,1,u,h),2,0,new he(u,h),0))}const l=t.modelState.selectionStart.getStartPosition().lineNumber;if(o.lineNumber<l)return Xt.fromViewState(t.viewState.move(!0,a.lineNumber,1,0));if(o.lineNumber>l){const c=e.getLineCount();let u=a.lineNumber+1,h=1;return u>c&&(u=c,h=e.getLineMaxColumn(u)),Xt.fromViewState(t.viewState.move(!0,u,h,0))}else{const c=t.modelState.selectionStart.getEndPosition();return Xt.fromModelState(t.modelState.move(!0,c.lineNumber,c.column,0))}}static word(e,t,i,s){const r=e.model.validatePosition(s);return Xt.fromModelState(ui.word(e.cursorConfig,e.model,t.modelState,i,r))}static cancelSelection(e,t){if(!t.modelState.hasSelection())return new Xt(t.modelState,t.viewState);const i=t.viewState.position.lineNumber,s=t.viewState.position.column;return Xt.fromViewState(new Qs(new M(i,s,i,s),0,0,new he(i,s),0))}static moveTo(e,t,i,s,r){if(i){if(t.modelState.selectionStartKind===1)return this.word(e,t,i,s);if(t.modelState.selectionStartKind===2)return this.line(e,t,i,s,r)}const o=e.model.validatePosition(s),a=r?e.coordinatesConverter.validateViewPosition(new he(r.lineNumber,r.column),o):e.coordinatesConverter.convertModelPositionToViewPosition(o);return Xt.fromViewState(t.viewState.move(i,a.lineNumber,a.column,0))}static simpleMove(e,t,i,s,r,o){switch(i){case 0:return o===4?this._moveHalfLineLeft(e,t,s):this._moveLeft(e,t,s,r);case 1:return o===4?this._moveHalfLineRight(e,t,s):this._moveRight(e,t,s,r);case 2:return o===2?this._moveUpByViewLines(e,t,s,r):this._moveUpByModelLines(e,t,s,r);case 3:return o===2?this._moveDownByViewLines(e,t,s,r):this._moveDownByModelLines(e,t,s,r);case 4:return o===2?t.map(a=>Xt.fromViewState(_i.moveToPrevBlankLine(e.cursorConfig,e,a.viewState,s))):t.map(a=>Xt.fromModelState(_i.moveToPrevBlankLine(e.cursorConfig,e.model,a.modelState,s)));case 5:return o===2?t.map(a=>Xt.fromViewState(_i.moveToNextBlankLine(e.cursorConfig,e,a.viewState,s))):t.map(a=>Xt.fromModelState(_i.moveToNextBlankLine(e.cursorConfig,e.model,a.modelState,s)));case 6:return this._moveToViewMinColumn(e,t,s);case 7:return this._moveToViewFirstNonWhitespaceColumn(e,t,s);case 8:return this._moveToViewCenterColumn(e,t,s);case 9:return this._moveToViewMaxColumn(e,t,s);case 10:return this._moveToViewLastNonWhitespaceColumn(e,t,s);default:return null}}static viewportMove(e,t,i,s,r){const o=e.getCompletelyVisibleViewRange(),a=e.coordinatesConverter.convertViewRangeToModelRange(o);switch(i){case 11:{const l=this._firstLineNumberInRange(e.model,a,r),c=e.model.getLineFirstNonWhitespaceColumn(l);return[this._moveToModelPosition(e,t[0],s,l,c)]}case 13:{const l=this._lastLineNumberInRange(e.model,a,r),c=e.model.getLineFirstNonWhitespaceColumn(l);return[this._moveToModelPosition(e,t[0],s,l,c)]}case 12:{const l=Math.round((a.startLineNumber+a.endLineNumber)/2),c=e.model.getLineFirstNonWhitespaceColumn(l);return[this._moveToModelPosition(e,t[0],s,l,c)]}case 14:{const l=[];for(let c=0,u=t.length;c<u;c++){const h=t[c];l[c]=this.findPositionInViewportIfOutside(e,h,o,s)}return l}default:return null}}static findPositionInViewportIfOutside(e,t,i,s){const r=t.viewState.position.lineNumber;if(i.startLineNumber<=r&&r<=i.endLineNumber-1)return new Xt(t.modelState,t.viewState);{let o;r>i.endLineNumber-1?o=i.endLineNumber-1:r<i.startLineNumber?o=i.startLineNumber:o=r;const a=_i.vertical(e.cursorConfig,e,r,t.viewState.position.column,t.viewState.leftoverVisibleColumns,o,!1);return Xt.fromViewState(t.viewState.move(s,a.lineNumber,a.column,a.leftoverVisibleColumns))}}static _firstLineNumberInRange(e,t,i){let s=t.startLineNumber;return t.startColumn!==e.getLineMinColumn(s)&&s++,Math.min(t.endLineNumber,s+i-1)}static _lastLineNumberInRange(e,t,i){let s=t.startLineNumber;return t.startColumn!==e.getLineMinColumn(s)&&s++,Math.max(s,t.endLineNumber-i+1)}static _moveLeft(e,t,i,s){return t.map(r=>Xt.fromViewState(_i.moveLeft(e.cursorConfig,e,r.viewState,i,s)))}static _moveHalfLineLeft(e,t,i){const s=[];for(let r=0,o=t.length;r<o;r++){const a=t[r],l=a.viewState.position.lineNumber,c=Math.round(e.getLineLength(l)/2);s[r]=Xt.fromViewState(_i.moveLeft(e.cursorConfig,e,a.viewState,i,c))}return s}static _moveRight(e,t,i,s){return t.map(r=>Xt.fromViewState(_i.moveRight(e.cursorConfig,e,r.viewState,i,s)))}static _moveHalfLineRight(e,t,i){const s=[];for(let r=0,o=t.length;r<o;r++){const a=t[r],l=a.viewState.position.lineNumber,c=Math.round(e.getLineLength(l)/2);s[r]=Xt.fromViewState(_i.moveRight(e.cursorConfig,e,a.viewState,i,c))}return s}static _moveDownByViewLines(e,t,i,s){const r=[];for(let o=0,a=t.length;o<a;o++){const l=t[o];r[o]=Xt.fromViewState(_i.moveDown(e.cursorConfig,e,l.viewState,i,s))}return r}static _moveDownByModelLines(e,t,i,s){const r=[];for(let o=0,a=t.length;o<a;o++){const l=t[o];r[o]=Xt.fromModelState(_i.moveDown(e.cursorConfig,e.model,l.modelState,i,s))}return r}static _moveUpByViewLines(e,t,i,s){const r=[];for(let o=0,a=t.length;o<a;o++){const l=t[o];r[o]=Xt.fromViewState(_i.moveUp(e.cursorConfig,e,l.viewState,i,s))}return r}static _moveUpByModelLines(e,t,i,s){const r=[];for(let o=0,a=t.length;o<a;o++){const l=t[o];r[o]=Xt.fromModelState(_i.moveUp(e.cursorConfig,e.model,l.modelState,i,s))}return r}static _moveToViewPosition(e,t,i,s,r){return Xt.fromViewState(t.viewState.move(i,s,r,0))}static _moveToModelPosition(e,t,i,s,r){return Xt.fromModelState(t.modelState.move(i,s,r,0))}static _moveToViewMinColumn(e,t,i){const s=[];for(let r=0,o=t.length;r<o;r++){const a=t[r],l=a.viewState.position.lineNumber,c=e.getLineMinColumn(l);s[r]=this._moveToViewPosition(e,a,i,l,c)}return s}static _moveToViewFirstNonWhitespaceColumn(e,t,i){const s=[];for(let r=0,o=t.length;r<o;r++){const a=t[r],l=a.viewState.position.lineNumber,c=e.getLineFirstNonWhitespaceColumn(l);s[r]=this._moveToViewPosition(e,a,i,l,c)}return s}static _moveToViewCenterColumn(e,t,i){const s=[];for(let r=0,o=t.length;r<o;r++){const a=t[r],l=a.viewState.position.lineNumber,c=Math.round((e.getLineMaxColumn(l)+e.getLineMinColumn(l))/2);s[r]=this._moveToViewPosition(e,a,i,l,c)}return s}static _moveToViewMaxColumn(e,t,i){const s=[];for(let r=0,o=t.length;r<o;r++){const a=t[r],l=a.viewState.position.lineNumber,c=e.getLineMaxColumn(l);s[r]=this._moveToViewPosition(e,a,i,l,c)}return s}static _moveToViewLastNonWhitespaceColumn(e,t,i){const s=[];for(let r=0,o=t.length;r<o;r++){const a=t[r],l=a.viewState.position.lineNumber,c=e.getLineLastNonWhitespaceColumn(l);s[r]=this._moveToViewPosition(e,a,i,l,c)}return s}}var jA;(function(n){const e=function(i){if(!ao(i))return!1;const s=i;return!(!uo(s.to)||!ea(s.select)&&!Ofe(s.select)||!ea(s.by)&&!uo(s.by)||!ea(s.value)&&!qp(s.value))};n.metadata={description:"Move cursor to a logical position in the view",args:[{name:"Cursor move argument object",description:`Property-value pairs that can be passed through this argument: + * 'to': A mandatory logical position value providing where to move the cursor. + \`\`\` + 'left', 'right', 'up', 'down', 'prevBlankLine', 'nextBlankLine', + 'wrappedLineStart', 'wrappedLineEnd', 'wrappedLineColumnCenter' + 'wrappedLineFirstNonWhitespaceCharacter', 'wrappedLineLastNonWhitespaceCharacter' + 'viewPortTop', 'viewPortCenter', 'viewPortBottom', 'viewPortIfOutside' + \`\`\` + * 'by': Unit to move. Default is computed based on 'to' value. + \`\`\` + 'line', 'wrappedLine', 'character', 'halfLine' + \`\`\` + * 'value': Number of units to move. Default is '1'. + * 'select': If 'true' makes the selection. Default is 'false'. + `,constraint:e,schema:{type:"object",required:["to"],properties:{to:{type:"string",enum:["left","right","up","down","prevBlankLine","nextBlankLine","wrappedLineStart","wrappedLineEnd","wrappedLineColumnCenter","wrappedLineFirstNonWhitespaceCharacter","wrappedLineLastNonWhitespaceCharacter","viewPortTop","viewPortCenter","viewPortBottom","viewPortIfOutside"]},by:{type:"string",enum:["line","wrappedLine","character","halfLine"]},value:{type:"number",default:1},select:{type:"boolean",default:!1}}}}]},n.RawDirection={Left:"left",Right:"right",Up:"up",Down:"down",PrevBlankLine:"prevBlankLine",NextBlankLine:"nextBlankLine",WrappedLineStart:"wrappedLineStart",WrappedLineFirstNonWhitespaceCharacter:"wrappedLineFirstNonWhitespaceCharacter",WrappedLineColumnCenter:"wrappedLineColumnCenter",WrappedLineEnd:"wrappedLineEnd",WrappedLineLastNonWhitespaceCharacter:"wrappedLineLastNonWhitespaceCharacter",ViewPortTop:"viewPortTop",ViewPortCenter:"viewPortCenter",ViewPortBottom:"viewPortBottom",ViewPortIfOutside:"viewPortIfOutside"},n.RawUnit={Line:"line",WrappedLine:"wrappedLine",Character:"character",HalfLine:"halfLine"};function t(i){if(!i.to)return null;let s;switch(i.to){case n.RawDirection.Left:s=0;break;case n.RawDirection.Right:s=1;break;case n.RawDirection.Up:s=2;break;case n.RawDirection.Down:s=3;break;case n.RawDirection.PrevBlankLine:s=4;break;case n.RawDirection.NextBlankLine:s=5;break;case n.RawDirection.WrappedLineStart:s=6;break;case n.RawDirection.WrappedLineFirstNonWhitespaceCharacter:s=7;break;case n.RawDirection.WrappedLineColumnCenter:s=8;break;case n.RawDirection.WrappedLineEnd:s=9;break;case n.RawDirection.WrappedLineLastNonWhitespaceCharacter:s=10;break;case n.RawDirection.ViewPortTop:s=11;break;case n.RawDirection.ViewPortBottom:s=13;break;case n.RawDirection.ViewPortCenter:s=12;break;case n.RawDirection.ViewPortIfOutside:s=14;break;default:return null}let r=0;switch(i.by){case n.RawUnit.Line:r=1;break;case n.RawUnit.WrappedLine:r=2;break;case n.RawUnit.Character:r=3;break;case n.RawUnit.HalfLine:r=4;break}return{direction:s,unit:r,select:!!i.select,value:i.value||1}}n.parse=t})(jA||(jA={}));var os;(function(n){n[n.None=0]="None",n[n.Indent=1]="Indent",n[n.IndentOutdent=2]="IndentOutdent",n[n.Outdent=3]="Outdent"})(os||(os={}));class D5{constructor(e){if(this._neutralCharacter=null,this._neutralCharacterSearched=!1,this.open=e.open,this.close=e.close,this._inString=!0,this._inComment=!0,this._inRegEx=!0,Array.isArray(e.notIn))for(let t=0,i=e.notIn.length;t<i;t++)switch(e.notIn[t]){case"string":this._inString=!1;break;case"comment":this._inComment=!1;break;case"regex":this._inRegEx=!1;break}}isOK(e){switch(e){case 0:return!0;case 1:return this._inComment;case 2:return this._inString;case 3:return this._inRegEx}}shouldAutoClose(e,t){if(e.getTokenCount()===0)return!0;const i=e.findTokenIndexAtOffset(t-2),s=e.getStandardTokenType(i);return this.isOK(s)}_findNeutralCharacterInRange(e,t){for(let i=e;i<=t;i++){const s=String.fromCharCode(i);if(!this.open.includes(s)&&!this.close.includes(s))return s}return null}findNeutralCharacter(){return this._neutralCharacterSearched||(this._neutralCharacterSearched=!0,this._neutralCharacter||(this._neutralCharacter=this._findNeutralCharacterInRange(48,57)),this._neutralCharacter||(this._neutralCharacter=this._findNeutralCharacterInRange(97,122)),this._neutralCharacter||(this._neutralCharacter=this._findNeutralCharacterInRange(65,90))),this._neutralCharacter}}class g7e{constructor(e){this.autoClosingPairsOpenByStart=new Map,this.autoClosingPairsOpenByEnd=new Map,this.autoClosingPairsCloseByStart=new Map,this.autoClosingPairsCloseByEnd=new Map,this.autoClosingPairsCloseSingleChar=new Map;for(const t of e)Lw(this.autoClosingPairsOpenByStart,t.open.charAt(0),t),Lw(this.autoClosingPairsOpenByEnd,t.open.charAt(t.open.length-1),t),Lw(this.autoClosingPairsCloseByStart,t.close.charAt(0),t),Lw(this.autoClosingPairsCloseByEnd,t.close.charAt(t.close.length-1),t),t.close.length===1&&t.open.length===1&&Lw(this.autoClosingPairsCloseSingleChar,t.close,t)}}function Lw(n,e,t){n.has(e)?n.get(e).push(t):n.set(e,[t])}const Hge="`~!@#$%^&*()-=+[{]}\\|;:'\",.<>/?";function p7e(n=""){let e="(-?\\d*\\.\\d\\w*)|([^";for(const t of Hge)n.indexOf(t)>=0||(e+="\\"+t);return e+="\\s]+)",new RegExp(e,"g")}const eq=p7e();function tq(n){let e=eq;if(n&&n instanceof RegExp)if(n.global)e=n;else{let t="g";n.ignoreCase&&(t+="i"),n.multiline&&(t+="m"),n.unicode&&(t+="u"),e=new RegExp(n.source,t)}return e.lastIndex=0,e}const $ge=new oo;$ge.unshift({maxLen:1e3,windowSize:15,timeBudget:150});function yL(n,e,t,i,s){if(e=tq(e),s||(s=Vt.first($ge)),t.length>s.maxLen){let c=n-s.maxLen/2;return c<0?c=0:i+=c,t=t.substring(c,n+s.maxLen/2),yL(n,e,t,i,s)}const r=Date.now(),o=n-1-i;let a=-1,l=null;for(let c=1;!(Date.now()-r>=s.timeBudget);c++){const u=o-s.windowSize*c;e.lastIndex=Math.max(0,u);const h=m7e(e,t,o,a);if(!h&&l||(l=h,u<=0))break;a=u}if(l){const c={word:l[0],startColumn:i+1+l.index,endColumn:i+1+l.index+l[0].length};return e.lastIndex=0,c}return null}function m7e(n,e,t,i){let s;for(;s=n.exec(e);){const r=s.index||0;if(r<=t&&n.lastIndex>=t)return s;if(i>0&&r>i)return null}return null}class py{constructor(e){if(e.autoClosingPairs?this._autoClosingPairs=e.autoClosingPairs.map(t=>new D5(t)):e.brackets?this._autoClosingPairs=e.brackets.map(t=>new D5({open:t[0],close:t[1]})):this._autoClosingPairs=[],e.__electricCharacterSupport&&e.__electricCharacterSupport.docComment){const t=e.__electricCharacterSupport.docComment;this._autoClosingPairs.push(new D5({open:t.open,close:t.close||""}))}this._autoCloseBeforeForQuotes=typeof e.autoCloseBefore=="string"?e.autoCloseBefore:py.DEFAULT_AUTOCLOSE_BEFORE_LANGUAGE_DEFINED_QUOTES,this._autoCloseBeforeForBrackets=typeof e.autoCloseBefore=="string"?e.autoCloseBefore:py.DEFAULT_AUTOCLOSE_BEFORE_LANGUAGE_DEFINED_BRACKETS,this._surroundingPairs=e.surroundingPairs||this._autoClosingPairs}getAutoClosingPairs(){return this._autoClosingPairs}getAutoCloseBeforeSet(e){return e?this._autoCloseBeforeForQuotes:this._autoCloseBeforeForBrackets}getSurroundingPairs(){return this._surroundingPairs}}py.DEFAULT_AUTOCLOSE_BEFORE_LANGUAGE_DEFINED_QUOTES=`;:.,=}])> + `;py.DEFAULT_AUTOCLOSE_BEFORE_LANGUAGE_DEFINED_BRACKETS=`'"\`;:.,=}])> + `;function ll(n,e=0){return n[n.length-(1+e)]}function _7e(n){if(n.length===0)throw new Error("Invalid tail call");return[n.slice(0,n.length-1),n[n.length-1]]}function On(n,e,t=(i,s)=>i===s){if(n===e)return!0;if(!n||!e||n.length!==e.length)return!1;for(let i=0,s=n.length;i<s;i++)if(!t(n[i],e[i]))return!1;return!0}function v7e(n,e){const t=n.length-1;e<t&&(n[e]=n[t]),n.pop()}function CL(n,e,t){return b7e(n.length,i=>t(n[i],e))}function b7e(n,e){let t=0,i=n-1;for(;t<=i;){const s=(t+i)/2|0,r=e(s);if(r<0)t=s+1;else if(r>0)i=s-1;else return s}return-(t+1)}function s9(n,e,t){if(n=n|0,n>=e.length)throw new TypeError("invalid index");const i=e[Math.floor(e.length*Math.random())],s=[],r=[],o=[];for(const a of e){const l=t(a,i);l<0?s.push(a):l>0?r.push(a):o.push(a)}return n<s.length?s9(n,s,t):n<s.length+o.length?o[0]:s9(n-(s.length+o.length),r,t)}function RJ(n,e){const t=[];let i;for(const s of n.slice(0).sort(e))!i||e(i[0],s)!==0?(i=[s],t.push(i)):i.push(s);return t}function*zge(n,e){let t,i;for(const s of n)i!==void 0&&e(i,s)?t.push(s):(t&&(yield t),t=[s]),i=s;t&&(yield t)}function Uge(n,e){for(let t=0;t<=n.length;t++)e(t===0?void 0:n[t-1],t===n.length?void 0:n[t])}function y7e(n,e){for(let t=0;t<n.length;t++)e(t===0?void 0:n[t-1],n[t],t+1===n.length?void 0:n[t+1])}function Tu(n){return n.filter(e=>!!e)}function MJ(n){let e=0;for(let t=0;t<n.length;t++)n[t]&&(n[e]=n[t],e+=1);n.length=e}function jge(n){return!Array.isArray(n)||n.length===0}function Ir(n){return Array.isArray(n)&&n.length>0}function Jp(n,e=t=>t){const t=new Set;return n.filter(i=>{const s=e(i);return t.has(s)?!1:(t.add(s),!0)})}function iq(n,e){return n.length>0?n[0]:e}function Zr(n,e){let t=typeof e=="number"?n:0;typeof e=="number"?t=n:(t=0,e=n);const i=[];if(t<=e)for(let s=t;s<e;s++)i.push(s);else for(let s=t;s>e;s--)i.push(s);return i}function EO(n,e,t){const i=n.slice(0,e),s=n.slice(e);return i.concat(t,s)}function I5(n,e){const t=n.indexOf(e);t>-1&&(n.splice(t,1),n.unshift(e))}function JD(n,e){const t=n.indexOf(e);t>-1&&(n.splice(t,1),n.push(e))}function r9(n,e){for(const t of e)n.push(t)}function nq(n){return Array.isArray(n)?n:[n]}function C7e(n,e,t){const i=qge(n,e),s=n.length,r=t.length;n.length=s+r;for(let o=s-1;o>=i;o--)n[o+r]=n[o];for(let o=0;o<r;o++)n[o+i]=t[o]}function OJ(n,e,t,i){const s=qge(n,e);let r=n.splice(s,t);return r===void 0&&(r=[]),C7e(n,s,i),r}function qge(n,e){return e<0?Math.max(e+n.length,0):Math.min(e,n.length)}var wL;(function(n){function e(r){return r<0}n.isLessThan=e;function t(r){return r<=0}n.isLessThanOrEqual=t;function i(r){return r>0}n.isGreaterThan=i;function s(r){return r===0}n.isNeitherLessOrGreaterThan=s,n.greaterThan=1,n.lessThan=-1,n.neitherLessOrGreaterThan=0})(wL||(wL={}));function Nl(n,e){return(t,i)=>e(n(t),n(i))}function w7e(...n){return(e,t)=>{for(const i of n){const s=i(e,t);if(!wL.isNeitherLessOrGreaterThan(s))return s}return wL.neitherLessOrGreaterThan}}const Pf=(n,e)=>n-e,S7e=(n,e)=>Pf(n?1:0,e?1:0);function Kge(n){return(e,t)=>-n(e,t)}class Zf{constructor(e){this.items=e,this.firstIdx=0,this.lastIdx=this.items.length-1}get length(){return this.lastIdx-this.firstIdx+1}takeWhile(e){let t=this.firstIdx;for(;t<this.items.length&&e(this.items[t]);)t++;const i=t===this.firstIdx?null:this.items.slice(this.firstIdx,t);return this.firstIdx=t,i}takeFromEndWhile(e){let t=this.lastIdx;for(;t>=0&&e(this.items[t]);)t--;const i=t===this.lastIdx?null:this.items.slice(t+1,this.lastIdx+1);return this.lastIdx=t,i}peek(){if(this.length!==0)return this.items[this.firstIdx]}dequeue(){const e=this.items[this.firstIdx];return this.firstIdx++,e}takeCount(e){const t=this.items.slice(this.firstIdx,this.firstIdx+e);return this.firstIdx+=e,t}}class Jh{constructor(e){this.iterate=e}toArray(){const e=[];return this.iterate(t=>(e.push(t),!0)),e}filter(e){return new Jh(t=>this.iterate(i=>e(i)?t(i):!0))}map(e){return new Jh(t=>this.iterate(i=>t(e(i))))}findLast(e){let t;return this.iterate(i=>(e(i)&&(t=i),!0)),t}findLastMaxBy(e){let t,i=!0;return this.iterate(s=>((i||wL.isGreaterThan(e(s,t)))&&(i=!1,t=s),!0)),t}}Jh.empty=new Jh(n=>{});const FJ=typeof Buffer<"u";let T5;class DO{static wrap(e){return FJ&&!Buffer.isBuffer(e)&&(e=Buffer.from(e.buffer,e.byteOffset,e.byteLength)),new DO(e)}constructor(e){this.buffer=e,this.byteLength=this.buffer.byteLength}toString(){return FJ?this.buffer.toString():(T5||(T5=new TextDecoder),T5.decode(this.buffer))}}function k7e(n,e){return n[e+0]<<0>>>0|n[e+1]<<8>>>0}function L7e(n,e,t){n[t+0]=e&255,e=e>>>8,n[t+1]=e&255}function Zc(n,e){return n[e]*2**24+n[e+1]*2**16+n[e+2]*2**8+n[e+3]}function Xc(n,e,t){n[t+3]=e,e=e>>>8,n[t+2]=e,e=e>>>8,n[t+1]=e,e=e>>>8,n[t]=e}function BJ(n,e){return n[e]}function WJ(n,e,t){n[t]=e}let N5;function Gge(){return N5||(N5=new TextDecoder("UTF-16LE")),N5}let A5;function x7e(){return A5||(A5=new TextDecoder("UTF-16BE")),A5}let P5;function Yge(){return P5||(P5=Vfe()?Gge():x7e()),P5}function E7e(n,e,t){const i=new Uint16Array(n.buffer,e,t);return t>0&&(i[0]===65279||i[0]===65534)?D7e(n,e,t):Gge().decode(i)}function D7e(n,e,t){const i=[];let s=0;for(let r=0;r<t;r++){const o=k7e(n,e);e+=2,i[s++]=String.fromCharCode(o)}return i.join("")}class IC{constructor(e){this._capacity=e|0,this._buffer=new Uint16Array(this._capacity),this._completedStrings=null,this._bufferLength=0}reset(){this._completedStrings=null,this._bufferLength=0}build(){return this._completedStrings!==null?(this._flushBuffer(),this._completedStrings.join("")):this._buildBuffer()}_buildBuffer(){if(this._bufferLength===0)return"";const e=new Uint16Array(this._buffer.buffer,0,this._bufferLength);return Yge().decode(e)}_flushBuffer(){const e=this._buildBuffer();this._bufferLength=0,this._completedStrings===null?this._completedStrings=[e]:this._completedStrings[this._completedStrings.length]=e}appendCharCode(e){const t=this._capacity-this._bufferLength;t<=1&&(t===0||As(e))&&this._flushBuffer(),this._buffer[this._bufferLength++]=e}appendASCIICharCode(e){this._bufferLength===this._capacity&&this._flushBuffer(),this._buffer[this._bufferLength++]=e}appendString(e){const t=e.length;if(this._bufferLength+t>=this._capacity){this._flushBuffer(),this._completedStrings[this._completedStrings.length]=e;return}for(let i=0;i<t;i++)this._buffer[this._bufferLength++]=e.charCodeAt(i)}}class qA{constructor(e,t,i,s,r,o){this._richEditBracketBrand=void 0,this.languageId=e,this.index=t,this.open=i,this.close=s,this.forwardRegex=r,this.reversedRegex=o,this._openSet=qA._toSet(this.open),this._closeSet=qA._toSet(this.close)}isOpen(e){return this._openSet.has(e)}isClose(e){return this._closeSet.has(e)}static _toSet(e){const t=new Set;for(const i of e)t.add(i);return t}}function I7e(n){const e=n.length;n=n.map(o=>[o[0].toLowerCase(),o[1].toLowerCase()]);const t=[];for(let o=0;o<e;o++)t[o]=o;const i=(o,a)=>{const[l,c]=o,[u,h]=a;return l===u||l===h||c===u||c===h},s=(o,a)=>{const l=Math.min(o,a),c=Math.max(o,a);for(let u=0;u<e;u++)t[u]===c&&(t[u]=l)};for(let o=0;o<e;o++){const a=n[o];for(let l=o+1;l<e;l++){const c=n[l];i(a,c)&&s(t[o],t[l])}}const r=[];for(let o=0;o<e;o++){const a=[],l=[];for(let c=0;c<e;c++)if(t[c]===o){const[u,h]=n[c];a.push(u),l.push(h)}a.length>0&&r.push({open:a,close:l})}return r}class T7e{constructor(e,t){this._richEditBracketsBrand=void 0;const i=I7e(t);this.brackets=i.map((s,r)=>new qA(e,r,s.open,s.close,N7e(s.open,s.close,i,r),A7e(s.open,s.close,i,r))),this.forwardRegex=P7e(this.brackets),this.reversedRegex=R7e(this.brackets),this.textIsBracket={},this.textIsOpenBracket={},this.maxBracketLength=0;for(const s of this.brackets){for(const r of s.open)this.textIsBracket[r]=s,this.textIsOpenBracket[r]=!0,this.maxBracketLength=Math.max(this.maxBracketLength,r.length);for(const r of s.close)this.textIsBracket[r]=s,this.textIsOpenBracket[r]=!1,this.maxBracketLength=Math.max(this.maxBracketLength,r.length)}}}function Zge(n,e,t,i){for(let s=0,r=e.length;s<r;s++){if(s===t)continue;const o=e[s];for(const a of o.open)a.indexOf(n)>=0&&i.push(a);for(const a of o.close)a.indexOf(n)>=0&&i.push(a)}}function Xge(n,e){return n.length-e.length}function IO(n){if(n.length<=1)return n;const e=[],t=new Set;for(const i of n)t.has(i)||(e.push(i),t.add(i));return e}function N7e(n,e,t,i){let s=[];s=s.concat(n),s=s.concat(e);for(let r=0,o=s.length;r<o;r++)Zge(s[r],t,i,s);return s=IO(s),s.sort(Xge),s.reverse(),TO(s)}function A7e(n,e,t,i){let s=[];s=s.concat(n),s=s.concat(e);for(let r=0,o=s.length;r<o;r++)Zge(s[r],t,i,s);return s=IO(s),s.sort(Xge),s.reverse(),TO(s.map(sq))}function P7e(n){let e=[];for(const t of n){for(const i of t.open)e.push(i);for(const i of t.close)e.push(i)}return e=IO(e),TO(e)}function R7e(n){let e=[];for(const t of n){for(const i of t.open)e.push(i);for(const i of t.close)e.push(i)}return e=IO(e),TO(e.map(sq))}function M7e(n){const e=/^[\w ]+$/.test(n);return n=Qa(n),e?`\\b${n}\\b`:n}function TO(n){const e=`(${n.map(M7e).join(")|(")})`;return nge(e,!0)}const sq=function(){function n(i){const s=new Uint16Array(i.length);let r=0;for(let o=i.length-1;o>=0;o--)s[r++]=i.charCodeAt(o);return Yge().decode(s)}let e=null,t=null;return function(s){return e!==s&&(e=s,t=n(e)),t}}();class Xl{static _findPrevBracketInText(e,t,i,s){const r=i.match(e);if(!r)return null;const o=i.length-(r.index||0),a=r[0].length,l=s+o;return new M(t,l-a+1,t,l+1)}static findPrevBracketInRange(e,t,i,s,r){const a=sq(i).substring(i.length-r,i.length-s);return this._findPrevBracketInText(e,t,a,s)}static findNextBracketInText(e,t,i,s){const r=i.match(e);if(!r)return null;const o=r.index||0,a=r[0].length;if(a===0)return null;const l=s+o;return new M(t,l+1,t,l+1+a)}static findNextBracketInRange(e,t,i,s,r){const o=i.substring(s,r);return this.findNextBracketInText(e,t,o,s)}}class O7e{constructor(e){this._richEditBrackets=e}getElectricCharacters(){const e=[];if(this._richEditBrackets)for(const t of this._richEditBrackets.brackets)for(const i of t.close){const s=i.charAt(i.length-1);e.push(s)}return Jp(e)}onElectricCharacter(e,t,i){if(!this._richEditBrackets||this._richEditBrackets.brackets.length===0)return null;const s=t.findTokenIndexAtOffset(i-1);if(ih(t.getStandardTokenType(s)))return null;const r=this._richEditBrackets.reversedRegex,o=t.getLineContent().substring(0,i-1)+e,a=Xl.findPrevBracketInRange(r,1,o,0,o.length);if(!a)return null;const l=o.substring(a.startColumn-1,a.endColumn-1).toLowerCase();if(this._richEditBrackets.textIsOpenBracket[l])return null;const u=t.getActualLineContentBefore(a.startColumn-1);return/^\s*$/.test(u)?{matchOpenBracket:l}:null}}function eI(n){return n.global&&(n.lastIndex=0),!0}class F7e{constructor(e){this._indentationRules=e}shouldIncrease(e){return!!(this._indentationRules&&this._indentationRules.increaseIndentPattern&&eI(this._indentationRules.increaseIndentPattern)&&this._indentationRules.increaseIndentPattern.test(e))}shouldDecrease(e){return!!(this._indentationRules&&this._indentationRules.decreaseIndentPattern&&eI(this._indentationRules.decreaseIndentPattern)&&this._indentationRules.decreaseIndentPattern.test(e))}shouldIndentNextLine(e){return!!(this._indentationRules&&this._indentationRules.indentNextLinePattern&&eI(this._indentationRules.indentNextLinePattern)&&this._indentationRules.indentNextLinePattern.test(e))}shouldIgnore(e){return!!(this._indentationRules&&this._indentationRules.unIndentedLinePattern&&eI(this._indentationRules.unIndentedLinePattern)&&this._indentationRules.unIndentedLinePattern.test(e))}getIndentMetadata(e){let t=0;return this.shouldIncrease(e)&&(t+=1),this.shouldDecrease(e)&&(t+=2),this.shouldIndentNextLine(e)&&(t+=4),this.shouldIgnore(e)&&(t+=8),t}}class O0{constructor(e){e=e||{},e.brackets=e.brackets||[["(",")"],["{","}"],["[","]"]],this._brackets=[],e.brackets.forEach(t=>{const i=O0._createOpenBracketRegExp(t[0]),s=O0._createCloseBracketRegExp(t[1]);i&&s&&this._brackets.push({open:t[0],openRegExp:i,close:t[1],closeRegExp:s})}),this._regExpRules=e.onEnterRules||[]}onEnter(e,t,i,s){if(e>=3)for(let r=0,o=this._regExpRules.length;r<o;r++){const a=this._regExpRules[r];if([{reg:a.beforeText,text:i},{reg:a.afterText,text:s},{reg:a.previousLineText,text:t}].every(c=>c.reg?(c.reg.lastIndex=0,c.reg.test(c.text)):!0))return a.action}if(e>=2&&i.length>0&&s.length>0)for(let r=0,o=this._brackets.length;r<o;r++){const a=this._brackets[r];if(a.openRegExp.test(i)&&a.closeRegExp.test(s))return{indentAction:os.IndentOutdent}}if(e>=2&&i.length>0){for(let r=0,o=this._brackets.length;r<o;r++)if(this._brackets[r].openRegExp.test(i))return{indentAction:os.Indent}}return null}static _createOpenBracketRegExp(e){let t=Qa(e);return/\B/.test(t.charAt(0))||(t="\\b"+t),t+="\\s*$",O0._safeRegExp(t)}static _createCloseBracketRegExp(e){let t=Qa(e);return/\B/.test(t.charAt(t.length-1))||(t=t+"\\b"),t="^\\s*"+t,O0._safeRegExp(t)}static _safeRegExp(e){try{return new RegExp(e)}catch(t){return vt(t),null}}}const Ut=Bt("configurationService");function o9(n,e){const t=Object.create(null);for(const i in n)Qge(t,i,n[i],e);return t}function Qge(n,e,t,i){const s=e.split("."),r=s.pop();let o=n;for(let a=0;a<s.length;a++){const l=s[a];let c=o[l];switch(typeof c){case"undefined":c=o[l]=Object.create(null);break;case"object":break;default:i(`Ignoring ${e} as ${s.slice(0,a+1).join(".")} is ${JSON.stringify(c)}`);return}o=c}if(typeof o=="object"&&o!==null)try{o[r]=t}catch{i(`Ignoring ${e} as ${s.join(".")} is ${JSON.stringify(o)}`)}else i(`Ignoring ${e} as ${s.join(".")} is ${JSON.stringify(o)}`)}function B7e(n,e){const t=e.split(".");Jge(n,t)}function Jge(n,e){const t=e.shift();if(e.length===0){delete n[t];return}if(Object.keys(n).indexOf(t)!==-1){const i=n[t];typeof i=="object"&&!Array.isArray(i)&&(Jge(i,e),Object.keys(i).length===0&&delete n[t])}}function VJ(n,e,t){function i(o,a){let l=o;for(const c of a){if(typeof l!="object"||l===null)return;l=l[c]}return l}const s=e.split("."),r=i(n,s);return typeof r>"u"?t:r}function W7e(n){return n.replace(/[\[\]]/g,"")}const sn=Bt("languageService");class uh{constructor(e,t=[],i=!1){this.ctor=e,this.staticArguments=t,this.supportsDelayedInstantiation=i}}const epe=[];function jt(n,e,t){e instanceof uh||(e=new uh(e,[],!!t)),epe.push([n,e])}function HJ(){return epe}const jn=Object.freeze({text:"text/plain",binary:"application/octet-stream",unknown:"application/unknown",markdown:"text/markdown",latex:"text/latex",uriList:"text/uri-list"}),NO={JSONContribution:"base.contributions.json"};function V7e(n){return n.length>0&&n.charAt(n.length-1)==="#"?n.substring(0,n.length-1):n}class H7e{constructor(){this._onDidChangeSchema=new ue,this.schemasById={}}registerSchema(e,t){this.schemasById[V7e(e)]=t,this._onDidChangeSchema.fire(e)}notifySchemaChanged(e){this._onDidChangeSchema.fire(e)}}const $7e=new H7e;vn.add(NO.JSONContribution,$7e);const $u={Configuration:"base.contributions.configuration"},xw="vscode://schemas/settings/resourceLanguage",$J=vn.as(NO.JSONContribution);class z7e{constructor(){this.overrideIdentifiers=new Set,this._onDidSchemaChange=new ue,this._onDidUpdateConfiguration=new ue,this.configurationDefaultsOverrides=new Map,this.defaultLanguageConfigurationOverridesNode={id:"defaultOverrides",title:v("defaultLanguageConfigurationOverrides.title","Default Language Configuration Overrides"),properties:{}},this.configurationContributors=[this.defaultLanguageConfigurationOverridesNode],this.resourceLanguageSettingsSchema={properties:{},patternProperties:{},additionalProperties:!0,allowTrailingCommas:!0,allowComments:!0},this.configurationProperties={},this.policyConfigurations=new Map,this.excludedConfigurationProperties={},$J.registerSchema(xw,this.resourceLanguageSettingsSchema),this.registerOverridePropertyPatternKey()}registerConfiguration(e,t=!0){this.registerConfigurations([e],t)}registerConfigurations(e,t=!0){const i=new Set;this.doRegisterConfigurations(e,t,i),$J.registerSchema(xw,this.resourceLanguageSettingsSchema),this._onDidSchemaChange.fire(),this._onDidUpdateConfiguration.fire({properties:i})}registerDefaultConfigurations(e){const t=new Set;this.doRegisterDefaultConfigurations(e,t),this._onDidSchemaChange.fire(),this._onDidUpdateConfiguration.fire({properties:t,defaultsOverrides:!0})}doRegisterDefaultConfigurations(e,t){var i;const s=[];for(const{overrides:r,source:o}of e)for(const a in r)if(t.add(a),em.test(a)){const l=this.configurationDefaultsOverrides.get(a),c=(i=l==null?void 0:l.valuesSources)!==null&&i!==void 0?i:new Map;if(o)for(const f of Object.keys(r[a]))c.set(f,o);const u={...(l==null?void 0:l.value)||{},...r[a]};this.configurationDefaultsOverrides.set(a,{source:o,value:u,valuesSources:c});const h=W7e(a),d={type:"object",default:u,description:v("defaultLanguageConfiguration.description","Configure settings to be overridden for the {0} language.",h),$ref:xw,defaultDefaultValue:u,source:uo(o)?void 0:o,defaultValueSource:o};s.push(...KA(a)),this.configurationProperties[a]=d,this.defaultLanguageConfigurationOverridesNode.properties[a]=d}else{this.configurationDefaultsOverrides.set(a,{value:r[a],source:o});const l=this.configurationProperties[a];l&&(this.updatePropertyDefaultValue(a,l),this.updateSchema(a,l))}this.doRegisterOverrideIdentifiers(s)}registerOverrideIdentifiers(e){this.doRegisterOverrideIdentifiers(e),this._onDidSchemaChange.fire()}doRegisterOverrideIdentifiers(e){for(const t of e)this.overrideIdentifiers.add(t);this.updateOverridePropertyPatternKey()}doRegisterConfigurations(e,t,i){e.forEach(s=>{this.validateAndRegisterProperties(s,t,s.extensionInfo,s.restrictedProperties,void 0,i),this.configurationContributors.push(s),this.registerJSONConfiguration(s)})}validateAndRegisterProperties(e,t=!0,i,s,r=3,o){var a;r=Ma(e.scope)?r:e.scope;const l=e.properties;if(l)for(const u in l){const h=l[u];if(t&&q7e(u,h)){delete l[u];continue}if(h.source=i,h.defaultDefaultValue=l[u].default,this.updatePropertyDefaultValue(u,h),em.test(u)?h.scope=void 0:(h.scope=Ma(h.scope)?r:h.scope,h.restricted=Ma(h.restricted)?!!(s!=null&&s.includes(u)):h.restricted),l[u].hasOwnProperty("included")&&!l[u].included){this.excludedConfigurationProperties[u]=l[u],delete l[u];continue}else this.configurationProperties[u]=l[u],!((a=l[u].policy)===null||a===void 0)&&a.name&&this.policyConfigurations.set(l[u].policy.name,u);!l[u].deprecationMessage&&l[u].markdownDeprecationMessage&&(l[u].deprecationMessage=l[u].markdownDeprecationMessage),o.add(u)}const c=e.allOf;if(c)for(const u of c)this.validateAndRegisterProperties(u,t,i,s,r,o)}getConfigurationProperties(){return this.configurationProperties}getPolicyConfigurations(){return this.policyConfigurations}registerJSONConfiguration(e){const t=i=>{const s=i.properties;if(s)for(const o in s)this.updateSchema(o,s[o]);const r=i.allOf;r==null||r.forEach(t)};t(e)}updateSchema(e,t){switch(t.scope){case 1:break;case 2:break;case 6:break;case 3:break;case 4:break;case 5:this.resourceLanguageSettingsSchema.properties[e]=t;break}}updateOverridePropertyPatternKey(){for(const e of this.overrideIdentifiers.values()){const t=`[${e}]`,i={type:"object",description:v("overrideSettings.defaultDescription","Configure editor settings to be overridden for a language."),errorMessage:v("overrideSettings.errorMessage","This setting does not support per-language configuration."),$ref:xw};this.updatePropertyDefaultValue(t,i)}}registerOverridePropertyPatternKey(){v("overrideSettings.defaultDescription","Configure editor settings to be overridden for a language."),v("overrideSettings.errorMessage","This setting does not support per-language configuration."),this._onDidSchemaChange.fire()}updatePropertyDefaultValue(e,t){const i=this.configurationDefaultsOverrides.get(e);let s=i==null?void 0:i.value,r=i==null?void 0:i.source;ea(s)&&(s=t.defaultDefaultValue,r=void 0),ea(s)&&(s=j7e(t.type)),t.default=s,t.defaultValueSource=r}}const tpe="\\[([^\\]]+)\\]",zJ=new RegExp(tpe,"g"),U7e=`^(${tpe})+$`,em=new RegExp(U7e);function KA(n){const e=[];if(em.test(n)){let t=zJ.exec(n);for(;t!=null&&t.length;){const i=t[1].trim();i&&e.push(i),t=zJ.exec(n)}}return Jp(e)}function j7e(n){switch(Array.isArray(n)?n[0]:n){case"boolean":return!1;case"integer":case"number":return 0;case"string":return"";case"array":return[];case"object":return{};default:return null}}const iN=new z7e;vn.add($u.Configuration,iN);function q7e(n,e){var t,i,s,r;return n.trim()?em.test(n)?v("config.property.languageDefault","Cannot register '{0}'. This matches property pattern '\\\\[.*\\\\]$' for describing language specific editor settings. Use 'configurationDefaults' contribution.",n):iN.getConfigurationProperties()[n]!==void 0?v("config.property.duplicate","Cannot register '{0}'. This property is already registered.",n):!((t=e.policy)===null||t===void 0)&&t.name&&iN.getPolicyConfigurations().get((i=e.policy)===null||i===void 0?void 0:i.name)!==void 0?v("config.policy.duplicate","Cannot register '{0}'. The associated policy {1} is already registered with {2}.",n,(s=e.policy)===null||s===void 0?void 0:s.name,iN.getPolicyConfigurations().get((r=e.policy)===null||r===void 0?void 0:r.name)):null:v("config.property.empty","Cannot register an empty property")}const K7e={ModesRegistry:"editor.modesRegistry"};class G7e{constructor(){this._onDidChangeLanguages=new ue,this.onDidChangeLanguages=this._onDidChangeLanguages.event,this._languages=[]}registerLanguage(e){return this._languages.push(e),this._onDidChangeLanguages.fire(void 0),{dispose:()=>{for(let t=0,i=this._languages.length;t<i;t++)if(this._languages[t]===e){this._languages.splice(t,1);return}}}}getLanguages(){return this._languages}}const my=new G7e;vn.add(K7e.ModesRegistry,my);const Ga="plaintext",Y7e=".txt";my.registerLanguage({id:Ga,extensions:[Y7e],aliases:[v("plainText.alias","Plain Text"),"text"],mimetypes:[jn.text]});vn.as($u.Configuration).registerDefaultConfigurations([{overrides:{"[plaintext]":{"editor.unicodeHighlight.ambiguousCharacters":!1,"editor.unicodeHighlight.invisibleCharacters":!1}}}]);class Z7e{constructor(e,t){this.languageId=e;const i=t.brackets?UJ(t.brackets):[],s=new vJ(a=>{const l=new Set;return{info:new X7e(this,a,l),closing:l}}),r=new vJ(a=>{const l=new Set,c=new Set;return{info:new Q7e(this,a,l,c),opening:l,openingColorized:c}});for(const[a,l]of i){const c=s.get(a),u=r.get(l);c.closing.add(u.info),u.opening.add(c.info)}const o=t.colorizedBracketPairs?UJ(t.colorizedBracketPairs):i.filter(a=>!(a[0]==="<"&&a[1]===">"));for(const[a,l]of o){const c=s.get(a),u=r.get(l);c.closing.add(u.info),u.openingColorized.add(c.info),u.opening.add(c.info)}this._openingBrackets=new Map([...s.cachedValues].map(([a,l])=>[a,l.info])),this._closingBrackets=new Map([...r.cachedValues].map(([a,l])=>[a,l.info]))}get openingBrackets(){return[...this._openingBrackets.values()]}get closingBrackets(){return[...this._closingBrackets.values()]}getOpeningBracketInfo(e){return this._openingBrackets.get(e)}getClosingBracketInfo(e){return this._closingBrackets.get(e)}getBracketInfo(e){return this.getOpeningBracketInfo(e)||this.getClosingBracketInfo(e)}}function UJ(n){return n.filter(([e,t])=>e!==""&&t!=="")}class ipe{constructor(e,t){this.config=e,this.bracketText=t}get languageId(){return this.config.languageId}}class X7e extends ipe{constructor(e,t,i){super(e,t),this.openedBrackets=i,this.isOpeningBracket=!0}}class Q7e extends ipe{constructor(e,t,i,s){super(e,t),this.openingBrackets=i,this.openingColorizedBrackets=s,this.isOpeningBracket=!1}closes(e){return e.config!==this.config?!1:this.openingBrackets.has(e)}closesColorized(e){return e.config!==this.config?!1:this.openingColorizedBrackets.has(e)}getOpeningBrackets(){return[...this.openingBrackets]}}var J7e=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},jJ=function(n,e){return function(t,i){e(t,i,n)}};class R5{constructor(e){this.languageId=e}affects(e){return this.languageId?this.languageId===e:!0}}const Bi=Bt("languageConfigurationService");let a9=class extends pe{constructor(e,t){super(),this.configurationService=e,this.languageService=t,this._registry=this._register(new nWe),this.onDidChangeEmitter=this._register(new ue),this.onDidChange=this.onDidChangeEmitter.event,this.configurations=new Map;const i=new Set(Object.values(l9));this._register(this.configurationService.onDidChangeConfiguration(s=>{const r=s.change.keys.some(a=>i.has(a)),o=s.change.overrides.filter(([a,l])=>l.some(c=>i.has(c))).map(([a])=>a);if(r)this.configurations.clear(),this.onDidChangeEmitter.fire(new R5(void 0));else for(const a of o)this.languageService.isRegisteredLanguageId(a)&&(this.configurations.delete(a),this.onDidChangeEmitter.fire(new R5(a)))})),this._register(this._registry.onDidChange(s=>{this.configurations.delete(s.languageId),this.onDidChangeEmitter.fire(new R5(s.languageId))}))}register(e,t,i){return this._registry.register(e,t,i)}getLanguageConfiguration(e){let t=this.configurations.get(e);return t||(t=eWe(e,this._registry,this.configurationService,this.languageService),this.configurations.set(e,t)),t}};a9=J7e([jJ(0,Ut),jJ(1,sn)],a9);function eWe(n,e,t,i){let s=e.getLanguageConfiguration(n);if(!s){if(!i.isRegisteredLanguageId(n))return new vb(n,{});s=new vb(n,{})}const r=tWe(s.languageId,t),o=spe([s.underlyingConfig,r]);return new vb(s.languageId,o)}const l9={brackets:"editor.language.brackets",colorizedBracketPairs:"editor.language.colorizedBracketPairs"};function tWe(n,e){const t=e.getValue(l9.brackets,{overrideIdentifier:n}),i=e.getValue(l9.colorizedBracketPairs,{overrideIdentifier:n});return{brackets:qJ(t),colorizedBracketPairs:qJ(i)}}function qJ(n){if(Array.isArray(n))return n.map(e=>{if(!(!Array.isArray(e)||e.length!==2))return[e[0],e[1]]}).filter(e=>!!e)}function npe(n,e,t){const i=n.getLineContent(e);let s=Ni(i);return s.length>t-1&&(s=s.substring(0,t-1)),s}function _b(n,e,t){n.tokenization.forceTokenization(e);const i=n.tokenization.getLineTokens(e),s=typeof t>"u"?n.getLineMaxColumn(e)-1:t-1;return LO(i,s)}class iWe{constructor(e){this.languageId=e,this._resolved=null,this._entries=[],this._order=0,this._resolved=null}register(e,t){const i=new KJ(e,t,++this._order);return this._entries.push(i),this._resolved=null,st(()=>{for(let s=0;s<this._entries.length;s++)if(this._entries[s]===i){this._entries.splice(s,1),this._resolved=null;break}})}getResolvedConfiguration(){if(!this._resolved){const e=this._resolve();e&&(this._resolved=new vb(this.languageId,e))}return this._resolved}_resolve(){return this._entries.length===0?null:(this._entries.sort(KJ.cmp),spe(this._entries.map(e=>e.configuration)))}}function spe(n){let e={comments:void 0,brackets:void 0,wordPattern:void 0,indentationRules:void 0,onEnterRules:void 0,autoClosingPairs:void 0,surroundingPairs:void 0,autoCloseBefore:void 0,folding:void 0,colorizedBracketPairs:void 0,__electricCharacterSupport:void 0};for(const t of n)e={comments:t.comments||e.comments,brackets:t.brackets||e.brackets,wordPattern:t.wordPattern||e.wordPattern,indentationRules:t.indentationRules||e.indentationRules,onEnterRules:t.onEnterRules||e.onEnterRules,autoClosingPairs:t.autoClosingPairs||e.autoClosingPairs,surroundingPairs:t.surroundingPairs||e.surroundingPairs,autoCloseBefore:t.autoCloseBefore||e.autoCloseBefore,folding:t.folding||e.folding,colorizedBracketPairs:t.colorizedBracketPairs||e.colorizedBracketPairs,__electricCharacterSupport:t.__electricCharacterSupport||e.__electricCharacterSupport};return e}class KJ{constructor(e,t,i){this.configuration=e,this.priority=t,this.order=i}static cmp(e,t){return e.priority===t.priority?e.order-t.order:e.priority-t.priority}}class GJ{constructor(e){this.languageId=e}}class nWe extends pe{constructor(){super(),this._entries=new Map,this._onDidChange=this._register(new ue),this.onDidChange=this._onDidChange.event,this._register(this.register(Ga,{brackets:[["(",")"],["[","]"],["{","}"]],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"<",close:">"},{open:'"',close:'"'},{open:"'",close:"'"},{open:"`",close:"`"}],colorizedBracketPairs:[],folding:{offSide:!0}},0))}register(e,t,i=0){let s=this._entries.get(e);s||(s=new iWe(e),this._entries.set(e,s));const r=s.register(t,i);return this._onDidChange.fire(new GJ(e)),st(()=>{r.dispose(),this._onDidChange.fire(new GJ(e))})}getLanguageConfiguration(e){const t=this._entries.get(e);return(t==null?void 0:t.getResolvedConfiguration())||null}}class vb{constructor(e,t){this.languageId=e,this.underlyingConfig=t,this._brackets=null,this._electricCharacter=null,this._onEnterSupport=this.underlyingConfig.brackets||this.underlyingConfig.indentationRules||this.underlyingConfig.onEnterRules?new O0(this.underlyingConfig):null,this.comments=vb._handleComments(this.underlyingConfig),this.characterPair=new py(this.underlyingConfig),this.wordDefinition=this.underlyingConfig.wordPattern||eq,this.indentationRules=this.underlyingConfig.indentationRules,this.underlyingConfig.indentationRules?this.indentRulesSupport=new F7e(this.underlyingConfig.indentationRules):this.indentRulesSupport=null,this.foldingRules=this.underlyingConfig.folding||{},this.bracketsNew=new Z7e(e,this.underlyingConfig)}getWordDefinition(){return tq(this.wordDefinition)}get brackets(){return!this._brackets&&this.underlyingConfig.brackets&&(this._brackets=new T7e(this.languageId,this.underlyingConfig.brackets)),this._brackets}get electricCharacter(){return this._electricCharacter||(this._electricCharacter=new O7e(this.brackets)),this._electricCharacter}onEnter(e,t,i,s){return this._onEnterSupport?this._onEnterSupport.onEnter(e,t,i,s):null}getAutoClosingPairs(){return new g7e(this.characterPair.getAutoClosingPairs())}getAutoCloseBeforeSet(e){return this.characterPair.getAutoCloseBeforeSet(e)}getSurroundingPairs(){return this.characterPair.getSurroundingPairs()}static _handleComments(e){const t=e.comments;if(!t)return null;const i={};if(t.lineComment&&(i.lineCommentToken=t.lineComment),t.blockComment){const[s,r]=t.blockComment;i.blockCommentStartToken=s,i.blockCommentEndToken=r}return i}}jt(Bi,a9,1);function bb(n,e,t,i){const s=_b(e,t.startLineNumber,t.startColumn),r=i.getLanguageConfiguration(s.languageId);if(!r)return null;const o=s.getLineContent(),a=o.substr(0,t.startColumn-1-s.firstCharOffset);let l;t.isEmpty()?l=o.substr(t.startColumn-1-s.firstCharOffset):l=_b(e,t.endLineNumber,t.endColumn).getLineContent().substr(t.endColumn-1-s.firstCharOffset);let c="";if(t.startLineNumber>1&&s.firstCharOffset===0){const p=_b(e,t.startLineNumber-1);p.languageId===s.languageId&&(c=p.getLineContent())}const u=r.onEnter(n,c,a,l);if(!u)return null;const h=u.indentAction;let d=u.appendText;const f=u.removeText||0;d?h===os.Indent&&(d=" "+d):h===os.Indent||h===os.IndentOutdent?d=" ":d="";let g=npe(e,t.startLineNumber,t.startColumn);return f&&(g=g.substring(0,g.length-f)),{indentAction:h,appendText:d,removeText:f,indentation:g}}var sWe=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},rWe=function(n,e){return function(t,i){e(t,i,n)}},nN;const M5=Object.create(null);function Gm(n,e){if(e<=0)return"";M5[n]||(M5[n]=["",n]);const t=M5[n];for(let i=t.length;i<=e;i++)t[i]=t[i-1]+n;return t[e]}let ml=nN=class{static unshiftIndent(e,t,i,s,r){const o=xs.visibleColumnFromColumn(e,t,i);if(r){const a=Gm(" ",s),c=xs.prevIndentTabStop(o,s)/s;return Gm(a,c)}else{const a=" ",c=xs.prevRenderTabStop(o,i)/i;return Gm(a,c)}}static shiftIndent(e,t,i,s,r){const o=xs.visibleColumnFromColumn(e,t,i);if(r){const a=Gm(" ",s),c=xs.nextIndentTabStop(o,s)/s;return Gm(a,c)}else{const a=" ",c=xs.nextRenderTabStop(o,i)/i;return Gm(a,c)}}constructor(e,t,i){this._languageConfigurationService=i,this._opts=t,this._selection=e,this._selectionId=null,this._useLastEditRangeForCursorEndPosition=!1,this._selectionStartColumnStaysPut=!1}_addEditOperation(e,t,i){this._useLastEditRangeForCursorEndPosition?e.addTrackedEditOperation(t,i):e.addEditOperation(t,i)}getEditOperations(e,t){const i=this._selection.startLineNumber;let s=this._selection.endLineNumber;this._selection.endColumn===1&&i!==s&&(s=s-1);const{tabSize:r,indentSize:o,insertSpaces:a}=this._opts,l=i===s;if(this._opts.useTabStops){this._selection.isEmpty()&&/^\s*$/.test(e.getLineContent(i))&&(this._useLastEditRangeForCursorEndPosition=!0);let c=0,u=0;for(let h=i;h<=s;h++,c=u){u=0;const d=e.getLineContent(h);let f=zr(d);if(this._opts.isUnshift&&(d.length===0||f===0)||!l&&!this._opts.isUnshift&&d.length===0)continue;if(f===-1&&(f=d.length),h>1&&xs.visibleColumnFromColumn(d,f+1,r)%o!==0&&e.tokenization.isCheapToTokenize(h-1)){const m=bb(this._opts.autoIndent,e,new M(h-1,e.getLineMaxColumn(h-1),h-1,e.getLineMaxColumn(h-1)),this._languageConfigurationService);if(m){if(u=c,m.appendText)for(let _=0,b=m.appendText.length;_<b&&u<o&&m.appendText.charCodeAt(_)===32;_++)u++;m.removeText&&(u=Math.max(0,u-m.removeText));for(let _=0;_<u&&!(f===0||d.charCodeAt(f-1)!==32);_++)f--}}if(this._opts.isUnshift&&f===0)continue;let g;this._opts.isUnshift?g=nN.unshiftIndent(d,f+1,r,o,a):g=nN.shiftIndent(d,f+1,r,o,a),this._addEditOperation(t,new M(h,1,h,f+1),g),h===i&&!this._selection.isEmpty()&&(this._selectionStartColumnStaysPut=this._selection.startColumn<=f+1)}}else{!this._opts.isUnshift&&this._selection.isEmpty()&&e.getLineLength(i)===0&&(this._useLastEditRangeForCursorEndPosition=!0);const c=a?Gm(" ",o):" ";for(let u=i;u<=s;u++){const h=e.getLineContent(u);let d=zr(h);if(!(this._opts.isUnshift&&(h.length===0||d===0))&&!(!l&&!this._opts.isUnshift&&h.length===0)&&(d===-1&&(d=h.length),!(this._opts.isUnshift&&d===0)))if(this._opts.isUnshift){d=Math.min(d,o);for(let f=0;f<d;f++)if(h.charCodeAt(f)===9){d=f+1;break}this._addEditOperation(t,new M(u,1,u,d+1),"")}else this._addEditOperation(t,new M(u,1,u,1),c),u===i&&!this._selection.isEmpty()&&(this._selectionStartColumnStaysPut=this._selection.startColumn===1)}}this._selectionId=t.trackSelection(this._selection)}computeCursorState(e,t){if(this._useLastEditRangeForCursorEndPosition){const s=t.getInverseEditOperations()[0];return new Ze(s.range.endLineNumber,s.range.endColumn,s.range.endLineNumber,s.range.endColumn)}const i=t.getTrackedSelection(this._selectionId);if(this._selectionStartColumnStaysPut){const s=this._selection.startColumn;return i.startColumn<=s?i:i.getDirection()===0?new Ze(i.startLineNumber,s,i.endLineNumber,i.endColumn):new Ze(i.endLineNumber,i.endColumn,i.startLineNumber,s)}return i}};ml=nN=sWe([rWe(2,Bi)],ml);class oWe{constructor(e,t,i){this._range=e,this._charBeforeSelection=t,this._charAfterSelection=i}getEditOperations(e,t){t.addTrackedEditOperation(new M(this._range.startLineNumber,this._range.startColumn,this._range.startLineNumber,this._range.startColumn),this._charBeforeSelection),t.addTrackedEditOperation(new M(this._range.endLineNumber,this._range.endColumn,this._range.endLineNumber,this._range.endColumn),this._charAfterSelection)}computeCursorState(e,t){const i=t.getInverseEditOperations(),s=i[0].range,r=i[1].range;return new Ze(s.endLineNumber,s.endColumn,r.endLineNumber,r.endColumn-this._charAfterSelection.length)}}class aWe{constructor(e,t,i){this._position=e,this._text=t,this._charAfter=i}getEditOperations(e,t){t.addTrackedEditOperation(new M(this._position.lineNumber,this._position.column,this._position.lineNumber,this._position.column),this._text+this._charAfter)}computeCursorState(e,t){const s=t.getInverseEditOperations()[0].range;return new Ze(s.endLineNumber,s.startColumn,s.endLineNumber,s.endColumn-this._charAfter.length)}}function lWe(n,e,t){const i=n.tokenization.getLanguageIdAtPosition(e,0);if(e>1){let s,r=-1;for(s=e-1;s>=1;s--){if(n.tokenization.getLanguageIdAtPosition(s,0)!==i)return r;const o=n.getLineContent(s);if(t.shouldIgnore(o)||/^\s+$/.test(o)||o===""){r=s;continue}return s}}return-1}function AO(n,e,t,i=!0,s){if(n<4)return null;const r=s.getLanguageConfiguration(e.tokenization.getLanguageId()).indentRulesSupport;if(!r)return null;if(t<=1)return{indentation:"",action:null};for(let l=t-1;l>0&&e.getLineContent(l)==="";l--)if(l===1)return{indentation:"",action:null};const o=lWe(e,t,r);if(o<0)return null;if(o<1)return{indentation:"",action:null};const a=e.getLineContent(o);if(r.shouldIncrease(a)||r.shouldIndentNextLine(a))return{indentation:Ni(a),action:os.Indent,line:o};if(r.shouldDecrease(a))return{indentation:Ni(a),action:null,line:o};{if(o===1)return{indentation:Ni(e.getLineContent(o)),action:null,line:o};const l=o-1,c=r.getIndentMetadata(e.getLineContent(l));if(!(c&3)&&c&4){let u=0;for(let h=l-1;h>0;h--)if(!r.shouldIndentNextLine(e.getLineContent(h))){u=h;break}return{indentation:Ni(e.getLineContent(u+1)),action:null,line:u+1}}if(i)return{indentation:Ni(e.getLineContent(o)),action:null,line:o};for(let u=o;u>0;u--){const h=e.getLineContent(u);if(r.shouldIncrease(h))return{indentation:Ni(h),action:os.Indent,line:u};if(r.shouldIndentNextLine(h)){let d=0;for(let f=u-1;f>0;f--)if(!r.shouldIndentNextLine(e.getLineContent(u))){d=f;break}return{indentation:Ni(e.getLineContent(d+1)),action:null,line:d+1}}else if(r.shouldDecrease(h))return{indentation:Ni(h),action:null,line:u}}return{indentation:Ni(e.getLineContent(1)),action:null,line:1}}}function QS(n,e,t,i,s,r){if(n<4)return null;const o=r.getLanguageConfiguration(t);if(!o)return null;const a=r.getLanguageConfiguration(t).indentRulesSupport;if(!a)return null;const l=AO(n,e,i,void 0,r),c=e.getLineContent(i);if(l){const u=l.line;if(u!==void 0){let h=!0;for(let d=u;d<i-1;d++)if(!/^\s*$/.test(e.getLineContent(d))){h=!1;break}if(h){const d=o.onEnter(n,"",e.getLineContent(u),"");if(d){let f=Ni(e.getLineContent(u));return d.removeText&&(f=f.substring(0,f.length-d.removeText)),d.indentAction===os.Indent||d.indentAction===os.IndentOutdent?f=s.shiftIndent(f):d.indentAction===os.Outdent&&(f=s.unshiftIndent(f)),a.shouldDecrease(c)&&(f=s.unshiftIndent(f)),d.appendText&&(f+=d.appendText),Ni(f)}}}return a.shouldDecrease(c)?l.action===os.Indent?l.indentation:s.unshiftIndent(l.indentation):l.action===os.Indent?s.shiftIndent(l.indentation):l.indentation}return null}function cWe(n,e,t,i,s){if(n<4)return null;e.tokenization.forceTokenization(t.startLineNumber);const r=e.tokenization.getLineTokens(t.startLineNumber),o=LO(r,t.startColumn-1),a=o.getLineContent();let l=!1,c;o.firstCharOffset>0&&r.getLanguageId(0)!==o.languageId?(l=!0,c=a.substr(0,t.startColumn-1-o.firstCharOffset)):c=r.getLineContent().substring(0,t.startColumn-1);let u;t.isEmpty()?u=a.substr(t.startColumn-1-o.firstCharOffset):u=_b(e,t.endLineNumber,t.endColumn).getLineContent().substr(t.endColumn-1-o.firstCharOffset);const h=s.getLanguageConfiguration(o.languageId).indentRulesSupport;if(!h)return null;const d=c,f=Ni(c),g={tokenization:{getLineTokens:b=>e.tokenization.getLineTokens(b),getLanguageId:()=>e.getLanguageId(),getLanguageIdAtPosition:(b,y)=>e.getLanguageIdAtPosition(b,y)},getLineContent:b=>b===t.startLineNumber?d:e.getLineContent(b)},p=Ni(r.getLineContent()),m=AO(n,g,t.startLineNumber+1,void 0,s);if(!m){const b=l?p:f;return{beforeEnter:b,afterEnter:b}}let _=l?p:m.indentation;return m.action===os.Indent&&(_=i.shiftIndent(_)),h.shouldDecrease(u)&&(_=i.unshiftIndent(_)),{beforeEnter:l?p:f,afterEnter:_}}function uWe(n,e,t,i,s,r){if(n<4)return null;const o=_b(e,t.startLineNumber,t.startColumn);if(o.firstCharOffset)return null;const a=r.getLanguageConfiguration(o.languageId).indentRulesSupport;if(!a)return null;const l=o.getLineContent(),c=l.substr(0,t.startColumn-1-o.firstCharOffset);let u;if(t.isEmpty()?u=l.substr(t.startColumn-1-o.firstCharOffset):u=_b(e,t.endLineNumber,t.endColumn).getLineContent().substr(t.endColumn-1-o.firstCharOffset),!a.shouldDecrease(c+u)&&a.shouldDecrease(c+i+u)){const h=AO(n,e,t.startLineNumber,!1,r);if(!h)return null;let d=h.indentation;return h.action!==os.Indent&&(d=s.unshiftIndent(d)),d}return null}function rpe(n,e,t){const i=t.getLanguageConfiguration(n.getLanguageId()).indentRulesSupport;return!i||e<1||e>n.getLineCount()?null:i.getIndentMetadata(n.getLineContent(e))}class gn{static indent(e,t,i){if(t===null||i===null)return[];const s=[];for(let r=0,o=i.length;r<o;r++)s[r]=new ml(i[r],{isUnshift:!1,tabSize:e.tabSize,indentSize:e.indentSize,insertSpaces:e.insertSpaces,useTabStops:e.useTabStops,autoIndent:e.autoIndent},e.languageConfigurationService);return s}static outdent(e,t,i){const s=[];for(let r=0,o=i.length;r<o;r++)s[r]=new ml(i[r],{isUnshift:!0,tabSize:e.tabSize,indentSize:e.indentSize,insertSpaces:e.insertSpaces,useTabStops:e.useTabStops,autoIndent:e.autoIndent},e.languageConfigurationService);return s}static shiftIndent(e,t,i){return i=i||1,ml.shiftIndent(t,t.length+i,e.tabSize,e.indentSize,e.insertSpaces)}static unshiftIndent(e,t,i){return i=i||1,ml.unshiftIndent(t,t.length+i,e.tabSize,e.indentSize,e.insertSpaces)}static _distributedPaste(e,t,i,s){const r=[];for(let o=0,a=i.length;o<a;o++)r[o]=new cr(i[o],s[o]);return new So(0,r,{shouldPushStackElementBefore:!0,shouldPushStackElementAfter:!0})}static _simplePaste(e,t,i,s,r){const o=[];for(let a=0,l=i.length;a<l;a++){const c=i[a],u=c.getPosition();if(r&&!c.isEmpty()&&(r=!1),r&&s.indexOf(` +`)!==s.length-1&&(r=!1),r){const h=new M(u.lineNumber,1,u.lineNumber,1);o[a]=new Jj(h,s,c,!0)}else o[a]=new cr(c,s)}return new So(0,o,{shouldPushStackElementBefore:!0,shouldPushStackElementAfter:!0})}static _distributePasteToCursors(e,t,i,s,r){if(s||t.length===1)return null;if(r&&r.length===t.length)return r;if(e.multiCursorPaste==="spread"){i.charCodeAt(i.length-1)===10&&(i=i.substr(0,i.length-1)),i.charCodeAt(i.length-1)===13&&(i=i.substr(0,i.length-1));const o=fd(i);if(o.length===t.length)return o}return null}static paste(e,t,i,s,r,o){const a=this._distributePasteToCursors(e,i,s,r,o);return a?(i=i.sort(M.compareRangesUsingStarts),this._distributedPaste(e,t,i,a)):this._simplePaste(e,t,i,s,r)}static _goodIndentForLine(e,t,i){let s=null,r="";const o=AO(e.autoIndent,t,i,!1,e.languageConfigurationService);if(o)s=o.action,r=o.indentation;else if(i>1){let a;for(a=i-1;a>=1;a--){const u=t.getLineContent(a);if(wu(u)>=0)break}if(a<1)return null;const l=t.getLineMaxColumn(a),c=bb(e.autoIndent,t,new M(a,l,a,l),e.languageConfigurationService);c&&(r=c.indentation+c.appendText)}return s&&(s===os.Indent&&(r=gn.shiftIndent(e,r)),s===os.Outdent&&(r=gn.unshiftIndent(e,r)),r=e.normalizeIndentation(r)),r||null}static _replaceJumpToNextIndent(e,t,i,s){let r="";const o=i.getStartPosition();if(e.insertSpaces){const a=e.visibleColumnFromColumn(t,o),l=e.indentSize,c=l-a%l;for(let u=0;u<c;u++)r+=" "}else r=" ";return new cr(i,r,s)}static tab(e,t,i){const s=[];for(let r=0,o=i.length;r<o;r++){const a=i[r];if(a.isEmpty()){const l=t.getLineContent(a.startLineNumber);if(/^\s*$/.test(l)&&t.tokenization.isCheapToTokenize(a.startLineNumber)){let c=this._goodIndentForLine(e,t,a.startLineNumber);c=c||" ";const u=e.normalizeIndentation(c);if(!l.startsWith(u)){s[r]=new cr(new M(a.startLineNumber,1,a.startLineNumber,l.length+1),u,!0);continue}}s[r]=this._replaceJumpToNextIndent(e,t,a,!0)}else{if(a.startLineNumber===a.endLineNumber){const l=t.getLineMaxColumn(a.startLineNumber);if(a.startColumn!==1||a.endColumn!==l){s[r]=this._replaceJumpToNextIndent(e,t,a,!1);continue}}s[r]=new ml(a,{isUnshift:!1,tabSize:e.tabSize,indentSize:e.indentSize,insertSpaces:e.insertSpaces,useTabStops:e.useTabStops,autoIndent:e.autoIndent},e.languageConfigurationService)}}return s}static compositionType(e,t,i,s,r,o,a,l){const c=s.map(u=>this._compositionType(i,u,r,o,a,l));return new So(4,c,{shouldPushStackElementBefore:tI(e,4),shouldPushStackElementAfter:!1})}static _compositionType(e,t,i,s,r,o){if(!t.isEmpty())return null;const a=t.getPosition(),l=Math.max(1,a.column-s),c=Math.min(e.getLineMaxColumn(a.lineNumber),a.column+r),u=new M(a.lineNumber,l,a.lineNumber,c);return e.getValueInRange(u)===i&&o===0?null:new tN(u,i,0,o)}static _typeCommand(e,t,i){return i?new XD(e,t,!0):new cr(e,t,!0)}static _enter(e,t,i,s){if(e.autoIndent===0)return gn._typeCommand(s,` +`,i);if(!t.tokenization.isCheapToTokenize(s.getStartPosition().lineNumber)||e.autoIndent===1){const l=t.getLineContent(s.startLineNumber),c=Ni(l).substring(0,s.startColumn-1);return gn._typeCommand(s,` +`+e.normalizeIndentation(c),i)}const r=bb(e.autoIndent,t,s,e.languageConfigurationService);if(r){if(r.indentAction===os.None)return gn._typeCommand(s,` +`+e.normalizeIndentation(r.indentation+r.appendText),i);if(r.indentAction===os.Indent)return gn._typeCommand(s,` +`+e.normalizeIndentation(r.indentation+r.appendText),i);if(r.indentAction===os.IndentOutdent){const l=e.normalizeIndentation(r.indentation),c=e.normalizeIndentation(r.indentation+r.appendText),u=` +`+c+` +`+l;return i?new XD(s,u,!0):new tN(s,u,-1,c.length-l.length,!0)}else if(r.indentAction===os.Outdent){const l=gn.unshiftIndent(e,r.indentation);return gn._typeCommand(s,` +`+e.normalizeIndentation(l+r.appendText),i)}}const o=t.getLineContent(s.startLineNumber),a=Ni(o).substring(0,s.startColumn-1);if(e.autoIndent>=4){const l=cWe(e.autoIndent,t,s,{unshiftIndent:c=>gn.unshiftIndent(e,c),shiftIndent:c=>gn.shiftIndent(e,c),normalizeIndentation:c=>e.normalizeIndentation(c)},e.languageConfigurationService);if(l){let c=e.visibleColumnFromColumn(t,s.getEndPosition());const u=s.endColumn,h=t.getLineContent(s.endLineNumber),d=zr(h);if(d>=0?s=s.setEndPosition(s.endLineNumber,Math.max(s.endColumn,d+1)):s=s.setEndPosition(s.endLineNumber,t.getLineMaxColumn(s.endLineNumber)),i)return new XD(s,` +`+e.normalizeIndentation(l.afterEnter),!0);{let f=0;return u<=d+1&&(e.insertSpaces||(c=Math.ceil(c/e.indentSize)),f=Math.min(c+1-e.normalizeIndentation(l.afterEnter).length-1,0)),new tN(s,` +`+e.normalizeIndentation(l.afterEnter),0,f,!0)}}}return gn._typeCommand(s,` +`+e.normalizeIndentation(a),i)}static _isAutoIndentType(e,t,i){if(e.autoIndent<4)return!1;for(let s=0,r=i.length;s<r;s++)if(!t.tokenization.isCheapToTokenize(i[s].getEndPosition().lineNumber))return!1;return!0}static _runAutoIndentType(e,t,i,s){const r=npe(t,i.startLineNumber,i.startColumn),o=uWe(e.autoIndent,t,i,s,{shiftIndent:a=>gn.shiftIndent(e,a),unshiftIndent:a=>gn.unshiftIndent(e,a)},e.languageConfigurationService);if(o===null)return null;if(o!==e.normalizeIndentation(r)){const a=t.getLineFirstNonWhitespaceColumn(i.startLineNumber);return a===0?gn._typeCommand(new M(i.startLineNumber,1,i.endLineNumber,i.endColumn),e.normalizeIndentation(o)+s,!1):gn._typeCommand(new M(i.startLineNumber,1,i.endLineNumber,i.endColumn),e.normalizeIndentation(o)+t.getLineContent(i.startLineNumber).substring(a-1,i.startColumn-1)+s,!1)}return null}static _isAutoClosingOvertype(e,t,i,s,r){if(e.autoClosingOvertype==="never"||!e.autoClosingPairs.autoClosingPairsCloseSingleChar.has(r))return!1;for(let o=0,a=i.length;o<a;o++){const l=i[o];if(!l.isEmpty())return!1;const c=l.getPosition(),u=t.getLineContent(c.lineNumber);if(u.charAt(c.column-1)!==r)return!1;const d=Ag(r);if((c.column>2?u.charCodeAt(c.column-2):0)===92&&d)return!1;if(e.autoClosingOvertype==="auto"){let g=!1;for(let p=0,m=s.length;p<m;p++){const _=s[p];if(c.lineNumber===_.startLineNumber&&c.column===_.startColumn){g=!0;break}}if(!g)return!1}}return!0}static _runAutoClosingOvertype(e,t,i,s,r){const o=[];for(let a=0,l=s.length;a<l;a++){const u=s[a].getPosition(),h=new M(u.lineNumber,u.column,u.lineNumber,u.column+1);o[a]=new cr(h,r)}return new So(4,o,{shouldPushStackElementBefore:tI(e,4),shouldPushStackElementAfter:!1})}static _isBeforeClosingBrace(e,t){const i=t.charAt(0),s=e.autoClosingPairs.autoClosingPairsOpenByStart.get(i)||[],r=e.autoClosingPairs.autoClosingPairsCloseByStart.get(i)||[],o=s.some(l=>t.startsWith(l.open)),a=r.some(l=>t.startsWith(l.close));return!o&&a}static _findAutoClosingPairOpen(e,t,i,s){const r=e.autoClosingPairs.autoClosingPairsOpenByEnd.get(s);if(!r)return null;let o=null;for(const a of r)if(o===null||a.open.length>o.open.length){let l=!0;for(const c of i)if(t.getValueInRange(new M(c.lineNumber,c.column-a.open.length+1,c.lineNumber,c.column))+s!==a.open){l=!1;break}l&&(o=a)}return o}static _findContainedAutoClosingPair(e,t){if(t.open.length<=1)return null;const i=t.close.charAt(t.close.length-1),s=e.autoClosingPairs.autoClosingPairsCloseByEnd.get(i)||[];let r=null;for(const o of s)o.open!==t.open&&t.open.includes(o.open)&&t.close.endsWith(o.close)&&(!r||o.open.length>r.open.length)&&(r=o);return r}static _getAutoClosingPairClose(e,t,i,s,r){for(const g of i)if(!g.isEmpty())return null;const o=i.map(g=>{const p=g.getPosition();return r?{lineNumber:p.lineNumber,beforeColumn:p.column-s.length,afterColumn:p.column}:{lineNumber:p.lineNumber,beforeColumn:p.column,afterColumn:p.column}}),a=this._findAutoClosingPairOpen(e,t,o.map(g=>new he(g.lineNumber,g.beforeColumn)),s);if(!a)return null;let l,c;if(Ag(s)?(l=e.autoClosingQuotes,c=e.shouldAutoCloseBefore.quote):(e.blockCommentStartToken?a.open.includes(e.blockCommentStartToken):!1)?(l=e.autoClosingComments,c=e.shouldAutoCloseBefore.comment):(l=e.autoClosingBrackets,c=e.shouldAutoCloseBefore.bracket),l==="never")return null;const h=this._findContainedAutoClosingPair(e,a),d=h?h.close:"";let f=!0;for(const g of o){const{lineNumber:p,beforeColumn:m,afterColumn:_}=g,b=t.getLineContent(p),y=b.substring(0,m-1),w=b.substring(_-1);if(w.startsWith(d)||(f=!1),w.length>0){const k=w.charAt(0);if(!gn._isBeforeClosingBrace(e,w)&&!c(k))return null}if(a.open.length===1&&(s==="'"||s==='"')&&l!=="always"){const k=Bl(e.wordSeparators);if(y.length>0){const x=y.charCodeAt(y.length-1);if(k.get(x)===0)return null}}if(!t.tokenization.isCheapToTokenize(p))return null;t.tokenization.forceTokenization(p);const S=t.tokenization.getLineTokens(p),E=LO(S,m-1);if(!a.shouldAutoClose(E,m-E.firstCharOffset))return null;const L=a.findNeutralCharacter();if(L){const k=t.tokenization.getTokenTypeIfInsertingCharacter(p,m,L);if(!a.isOK(k))return null}}return f?a.close.substring(0,a.close.length-d.length):a.close}static _runAutoClosingOpenCharType(e,t,i,s,r,o,a){const l=[];for(let c=0,u=s.length;c<u;c++){const h=s[c];l[c]=new ope(h,r,!o,a)}return new So(4,l,{shouldPushStackElementBefore:!0,shouldPushStackElementAfter:!1})}static _shouldSurroundChar(e,t){return Ag(t)?e.autoSurround==="quotes"||e.autoSurround==="languageDefined":e.autoSurround==="brackets"||e.autoSurround==="languageDefined"}static _isSurroundSelectionType(e,t,i,s){if(!gn._shouldSurroundChar(e,s)||!e.surroundingPairs.hasOwnProperty(s))return!1;const r=Ag(s);for(const o of i){if(o.isEmpty())return!1;let a=!0;for(let l=o.startLineNumber;l<=o.endLineNumber;l++){const c=t.getLineContent(l),u=l===o.startLineNumber?o.startColumn-1:0,h=l===o.endLineNumber?o.endColumn-1:c.length,d=c.substring(u,h);if(/[^ \t]/.test(d)){a=!1;break}}if(a)return!1;if(r&&o.startLineNumber===o.endLineNumber&&o.startColumn+1===o.endColumn){const l=t.getValueInRange(o);if(Ag(l))return!1}}return!0}static _runSurroundSelectionType(e,t,i,s,r){const o=[];for(let a=0,l=s.length;a<l;a++){const c=s[a],u=t.surroundingPairs[r];o[a]=new oWe(c,r,u)}return new So(0,o,{shouldPushStackElementBefore:!0,shouldPushStackElementAfter:!0})}static _isTypeInterceptorElectricChar(e,t,i){return!!(i.length===1&&t.tokenization.isCheapToTokenize(i[0].getEndPosition().lineNumber))}static _typeInterceptorElectricChar(e,t,i,s,r){if(!t.electricChars.hasOwnProperty(r)||!s.isEmpty())return null;const o=s.getPosition();i.tokenization.forceTokenization(o.lineNumber);const a=i.tokenization.getLineTokens(o.lineNumber);let l;try{l=t.onElectricCharacter(r,a,o.column)}catch(c){return vt(c),null}if(!l)return null;if(l.matchOpenBracket){const c=(a.getLineContent()+r).lastIndexOf(l.matchOpenBracket)+1,u=i.bracketPairs.findMatchingBracketUp(l.matchOpenBracket,{lineNumber:o.lineNumber,column:c},500);if(u){if(u.startLineNumber===o.lineNumber)return null;const h=i.getLineContent(u.startLineNumber),d=Ni(h),f=t.normalizeIndentation(d),g=i.getLineContent(o.lineNumber),p=i.getLineFirstNonWhitespaceColumn(o.lineNumber)||o.column,m=g.substring(p-1,o.column-1),_=f+m+r,b=new M(o.lineNumber,1,o.lineNumber,o.column),y=new cr(b,_);return new So(O5(_,e),[y],{shouldPushStackElementBefore:!1,shouldPushStackElementAfter:!0})}}return null}static compositionEndWithInterceptors(e,t,i,s,r,o){if(!s)return null;let a=null;for(const h of s)if(a===null)a=h.insertedText;else if(a!==h.insertedText)return null;if(!a||a.length!==1)return null;const l=a;let c=!1;for(const h of s)if(h.deletedText.length!==0){c=!0;break}if(c){if(!gn._shouldSurroundChar(t,l)||!t.surroundingPairs.hasOwnProperty(l))return null;const h=Ag(l);for(const g of s)if(g.deletedSelectionStart!==0||g.deletedSelectionEnd!==g.deletedText.length||/^[ \t]+$/.test(g.deletedText)||h&&Ag(g.deletedText))return null;const d=[];for(const g of r){if(!g.isEmpty())return null;d.push(g.getPosition())}if(d.length!==s.length)return null;const f=[];for(let g=0,p=d.length;g<p;g++)f.push(new aWe(d[g],s[g].deletedText,t.surroundingPairs[l]));return new So(4,f,{shouldPushStackElementBefore:!0,shouldPushStackElementAfter:!1})}if(this._isAutoClosingOvertype(t,i,r,o,l)){const h=r.map(d=>new cr(new M(d.positionLineNumber,d.positionColumn,d.positionLineNumber,d.positionColumn+1),"",!1));return new So(4,h,{shouldPushStackElementBefore:!0,shouldPushStackElementAfter:!1})}const u=this._getAutoClosingPairClose(t,i,r,l,!0);return u!==null?this._runAutoClosingOpenCharType(e,t,i,r,l,!0,u):null}static typeWithInterceptors(e,t,i,s,r,o,a){if(!e&&a===` +`){const u=[];for(let h=0,d=r.length;h<d;h++)u[h]=gn._enter(i,s,!1,r[h]);return new So(4,u,{shouldPushStackElementBefore:!0,shouldPushStackElementAfter:!1})}if(!e&&this._isAutoIndentType(i,s,r)){const u=[];let h=!1;for(let d=0,f=r.length;d<f;d++)if(u[d]=this._runAutoIndentType(i,s,r[d],a),!u[d]){h=!0;break}if(!h)return new So(4,u,{shouldPushStackElementBefore:!0,shouldPushStackElementAfter:!1})}if(this._isAutoClosingOvertype(i,s,r,o,a))return this._runAutoClosingOvertype(t,i,s,r,a);if(!e){const u=this._getAutoClosingPairClose(i,s,r,a,!1);if(u)return this._runAutoClosingOpenCharType(t,i,s,r,a,!1,u)}if(!e&&this._isSurroundSelectionType(i,s,r,a))return this._runSurroundSelectionType(t,i,s,r,a);if(!e&&this._isTypeInterceptorElectricChar(i,s,r)){const u=this._typeInterceptorElectricChar(t,i,s,r[0],a);if(u)return u}const l=[];for(let u=0,h=r.length;u<h;u++)l[u]=new cr(r[u],a);const c=O5(a,t);return new So(c,l,{shouldPushStackElementBefore:tI(t,c),shouldPushStackElementAfter:!1})}static typeWithoutInterceptors(e,t,i,s,r){const o=[];for(let l=0,c=s.length;l<c;l++)o[l]=new cr(s[l],r);const a=O5(r,e);return new So(a,o,{shouldPushStackElementBefore:tI(e,a),shouldPushStackElementAfter:!1})}static lineInsertBefore(e,t,i){if(t===null||i===null)return[];const s=[];for(let r=0,o=i.length;r<o;r++){let a=i[r].positionLineNumber;if(a===1)s[r]=new XD(new M(1,1,1,1),` +`);else{a--;const l=t.getLineMaxColumn(a);s[r]=this._enter(e,t,!1,new M(a,l,a,l))}}return s}static lineInsertAfter(e,t,i){if(t===null||i===null)return[];const s=[];for(let r=0,o=i.length;r<o;r++){const a=i[r].positionLineNumber,l=t.getLineMaxColumn(a);s[r]=this._enter(e,t,!1,new M(a,l,a,l))}return s}static lineBreakInsert(e,t,i){const s=[];for(let r=0,o=i.length;r<o;r++)s[r]=this._enter(e,t,!0,i[r]);return s}}class ope extends tN{constructor(e,t,i,s){super(e,(i?t:"")+s,0,-s.length),this._openCharacter=t,this._closeCharacter=s,this.closeCharacterRange=null,this.enclosingRange=null}computeCursorState(e,t){const s=t.getInverseEditOperations()[0].range;return this.closeCharacterRange=new M(s.startLineNumber,s.endColumn-this._closeCharacter.length,s.endLineNumber,s.endColumn),this.enclosingRange=new M(s.startLineNumber,s.endColumn-this._openCharacter.length-this._closeCharacter.length,s.endLineNumber,s.endColumn),super.computeCursorState(e,t)}}class hWe{constructor(e,t,i,s,r,o){this.deletedText=e,this.deletedSelectionStart=t,this.deletedSelectionEnd=i,this.insertedText=s,this.insertedSelectionStart=r,this.insertedSelectionEnd=o}}function O5(n,e){return n===" "?e===5||e===6?6:5:4}function tI(n,e){return ZJ(n)&&!ZJ(e)?!0:n===5?!1:YJ(n)!==YJ(e)}function YJ(n){return n===6||n===5?"space":n}function ZJ(n){return n===4||n===5||n===6}var $;(function(n){n.editorSimpleInput=new ze("editorSimpleInput",!1,!0),n.editorTextFocus=new ze("editorTextFocus",!1,v("editorTextFocus","Whether the editor text has focus (cursor is blinking)")),n.focus=new ze("editorFocus",!1,v("editorFocus","Whether the editor or an editor widget has focus (e.g. focus is in the find widget)")),n.textInputFocus=new ze("textInputFocus",!1,v("textInputFocus","Whether an editor or a rich text input has focus (cursor is blinking)")),n.readOnly=new ze("editorReadonly",!1,v("editorReadonly","Whether the editor is read-only")),n.inDiffEditor=new ze("inDiffEditor",!1,v("inDiffEditor","Whether the context is a diff editor")),n.isEmbeddedDiffEditor=new ze("isEmbeddedDiffEditor",!1,v("isEmbeddedDiffEditor","Whether the context is an embedded diff editor")),n.inMultiDiffEditor=new ze("inMultiDiffEditor",!1,v("inMultiDiffEditor","Whether the context is a multi diff editor")),n.multiDiffEditorAllCollapsed=new ze("multiDiffEditorAllCollapsed",void 0,v("multiDiffEditorAllCollapsed","Whether all files in multi diff editor are collapsed")),n.hasChanges=new ze("diffEditorHasChanges",!1,v("diffEditorHasChanges","Whether the diff editor has changes")),n.comparingMovedCode=new ze("comparingMovedCode",!1,v("comparingMovedCode","Whether a moved code block is selected for comparison")),n.accessibleDiffViewerVisible=new ze("accessibleDiffViewerVisible",!1,v("accessibleDiffViewerVisible","Whether the accessible diff viewer is visible")),n.diffEditorRenderSideBySideInlineBreakpointReached=new ze("diffEditorRenderSideBySideInlineBreakpointReached",!1,v("diffEditorRenderSideBySideInlineBreakpointReached","Whether the diff editor render side by side inline breakpoint is reached")),n.columnSelection=new ze("editorColumnSelection",!1,v("editorColumnSelection","Whether `editor.columnSelection` is enabled")),n.writable=n.readOnly.toNegated(),n.hasNonEmptySelection=new ze("editorHasSelection",!1,v("editorHasSelection","Whether the editor has text selected")),n.hasOnlyEmptySelection=n.hasNonEmptySelection.toNegated(),n.hasMultipleSelections=new ze("editorHasMultipleSelections",!1,v("editorHasMultipleSelections","Whether the editor has multiple selections")),n.hasSingleSelection=n.hasMultipleSelections.toNegated(),n.tabMovesFocus=new ze("editorTabMovesFocus",!1,v("editorTabMovesFocus","Whether `Tab` will move focus out of the editor")),n.tabDoesNotMoveFocus=n.tabMovesFocus.toNegated(),n.isInWalkThroughSnippet=new ze("isInEmbeddedEditor",!1,!0),n.canUndo=new ze("canUndo",!1,!0),n.canRedo=new ze("canRedo",!1,!0),n.hoverVisible=new ze("editorHoverVisible",!1,v("editorHoverVisible","Whether the editor hover is visible")),n.hoverFocused=new ze("editorHoverFocused",!1,v("editorHoverFocused","Whether the editor hover is focused")),n.stickyScrollFocused=new ze("stickyScrollFocused",!1,v("stickyScrollFocused","Whether the sticky scroll is focused")),n.stickyScrollVisible=new ze("stickyScrollVisible",!1,v("stickyScrollVisible","Whether the sticky scroll is visible")),n.standaloneColorPickerVisible=new ze("standaloneColorPickerVisible",!1,v("standaloneColorPickerVisible","Whether the standalone color picker is visible")),n.standaloneColorPickerFocused=new ze("standaloneColorPickerFocused",!1,v("standaloneColorPickerFocused","Whether the standalone color picker is focused")),n.inCompositeEditor=new ze("inCompositeEditor",void 0,v("inCompositeEditor","Whether the editor is part of a larger editor (e.g. notebooks)")),n.notInCompositeEditor=n.inCompositeEditor.toNegated(),n.languageId=new ze("editorLangId","",v("editorLangId","The language identifier of the editor")),n.hasCompletionItemProvider=new ze("editorHasCompletionItemProvider",!1,v("editorHasCompletionItemProvider","Whether the editor has a completion item provider")),n.hasCodeActionsProvider=new ze("editorHasCodeActionsProvider",!1,v("editorHasCodeActionsProvider","Whether the editor has a code actions provider")),n.hasCodeLensProvider=new ze("editorHasCodeLensProvider",!1,v("editorHasCodeLensProvider","Whether the editor has a code lens provider")),n.hasDefinitionProvider=new ze("editorHasDefinitionProvider",!1,v("editorHasDefinitionProvider","Whether the editor has a definition provider")),n.hasDeclarationProvider=new ze("editorHasDeclarationProvider",!1,v("editorHasDeclarationProvider","Whether the editor has a declaration provider")),n.hasImplementationProvider=new ze("editorHasImplementationProvider",!1,v("editorHasImplementationProvider","Whether the editor has an implementation provider")),n.hasTypeDefinitionProvider=new ze("editorHasTypeDefinitionProvider",!1,v("editorHasTypeDefinitionProvider","Whether the editor has a type definition provider")),n.hasHoverProvider=new ze("editorHasHoverProvider",!1,v("editorHasHoverProvider","Whether the editor has a hover provider")),n.hasDocumentHighlightProvider=new ze("editorHasDocumentHighlightProvider",!1,v("editorHasDocumentHighlightProvider","Whether the editor has a document highlight provider")),n.hasDocumentSymbolProvider=new ze("editorHasDocumentSymbolProvider",!1,v("editorHasDocumentSymbolProvider","Whether the editor has a document symbol provider")),n.hasReferenceProvider=new ze("editorHasReferenceProvider",!1,v("editorHasReferenceProvider","Whether the editor has a reference provider")),n.hasRenameProvider=new ze("editorHasRenameProvider",!1,v("editorHasRenameProvider","Whether the editor has a rename provider")),n.hasSignatureHelpProvider=new ze("editorHasSignatureHelpProvider",!1,v("editorHasSignatureHelpProvider","Whether the editor has a signature help provider")),n.hasInlayHintsProvider=new ze("editorHasInlayHintsProvider",!1,v("editorHasInlayHintsProvider","Whether the editor has an inline hints provider")),n.hasDocumentFormattingProvider=new ze("editorHasDocumentFormattingProvider",!1,v("editorHasDocumentFormattingProvider","Whether the editor has a document formatting provider")),n.hasDocumentSelectionFormattingProvider=new ze("editorHasDocumentSelectionFormattingProvider",!1,v("editorHasDocumentSelectionFormattingProvider","Whether the editor has a document selection formatting provider")),n.hasMultipleDocumentFormattingProvider=new ze("editorHasMultipleDocumentFormattingProvider",!1,v("editorHasMultipleDocumentFormattingProvider","Whether the editor has multiple document formatting providers")),n.hasMultipleDocumentSelectionFormattingProvider=new ze("editorHasMultipleDocumentSelectionFormattingProvider",!1,v("editorHasMultipleDocumentSelectionFormattingProvider","Whether the editor has multiple document selection formatting providers"))})($||($={}));const ai=0;class In extends Ks{runEditorCommand(e,t,i){const s=t._getViewModel();s&&this.runCoreEditorCommand(s,i||{})}}var ar;(function(n){const e=function(i){if(!ao(i))return!1;const s=i;return!(!uo(s.to)||!ea(s.by)&&!uo(s.by)||!ea(s.value)&&!qp(s.value)||!ea(s.revealCursor)&&!Ofe(s.revealCursor))};n.metadata={description:"Scroll editor in the given direction",args:[{name:"Editor scroll argument object",description:"Property-value pairs that can be passed through this argument:\n * 'to': A mandatory direction value.\n ```\n 'up', 'down'\n ```\n * 'by': Unit to move. Default is computed based on 'to' value.\n ```\n 'line', 'wrappedLine', 'page', 'halfPage', 'editor'\n ```\n * 'value': Number of units to move. Default is '1'.\n * 'revealCursor': If 'true' reveals the cursor if it is outside view port.\n ",constraint:e,schema:{type:"object",required:["to"],properties:{to:{type:"string",enum:["up","down"]},by:{type:"string",enum:["line","wrappedLine","page","halfPage","editor"]},value:{type:"number",default:1},revealCursor:{type:"boolean"}}}}]},n.RawDirection={Up:"up",Right:"right",Down:"down",Left:"left"},n.RawUnit={Line:"line",WrappedLine:"wrappedLine",Page:"page",HalfPage:"halfPage",Editor:"editor",Column:"column"};function t(i){let s;switch(i.to){case n.RawDirection.Up:s=1;break;case n.RawDirection.Right:s=2;break;case n.RawDirection.Down:s=3;break;case n.RawDirection.Left:s=4;break;default:return null}let r;switch(i.by){case n.RawUnit.Line:r=1;break;case n.RawUnit.WrappedLine:r=2;break;case n.RawUnit.Page:r=3;break;case n.RawUnit.HalfPage:r=4;break;case n.RawUnit.Editor:r=5;break;case n.RawUnit.Column:r=6;break;default:r=2}const o=Math.floor(i.value||1),a=!!i.revealCursor;return{direction:s,unit:r,value:o,revealCursor:a,select:!!i.select}}n.parse=t})(ar||(ar={}));var F0;(function(n){const e=function(t){if(!ao(t))return!1;const i=t;return!(!qp(i.lineNumber)&&!uo(i.lineNumber)||!ea(i.at)&&!uo(i.at))};n.metadata={description:"Reveal the given line at the given logical position",args:[{name:"Reveal line argument object",description:"Property-value pairs that can be passed through this argument:\n * 'lineNumber': A mandatory line number value.\n * 'at': Logical position at which line has to be revealed.\n ```\n 'top', 'center', 'bottom'\n ```\n ",constraint:e,schema:{type:"object",required:["lineNumber"],properties:{lineNumber:{type:["number","string"]},at:{type:"string",enum:["top","center","bottom"]}}}}]},n.RawAtArgument={Top:"top",Center:"center",Bottom:"bottom"}})(F0||(F0={}));class c9{constructor(e){e.addImplementation(1e4,"code-editor",(t,i)=>{const s=t.get(ri).getFocusedCodeEditor();return s&&s.hasTextFocus()?this._runEditorCommand(t,s,i):!1}),e.addImplementation(1e3,"generic-dom-input-textarea",(t,i)=>{const s=Ka();return s&&["input","textarea"].indexOf(s.tagName.toLowerCase())>=0?(this.runDOMCommand(s),!0):!1}),e.addImplementation(0,"generic-dom",(t,i)=>{const s=t.get(ri).getActiveCodeEditor();return s?(s.focus(),this._runEditorCommand(t,s,i)):!1})}_runEditorCommand(e,t,i){const s=this.runEditorCommand(e,t,i);return s||!0}}var Fs;(function(n){class e extends In{constructor(b){super(b),this._inSelectionMode=b.inSelectionMode}runCoreEditorCommand(b,y){if(!y.position)return;b.model.pushStackElement(),b.setCursorStates(y.source,3,[Ys.moveTo(b,b.getPrimaryCursorState(),this._inSelectionMode,y.position,y.viewPosition)])&&y.revealType!==2&&b.revealPrimaryCursor(y.source,!0,!0)}}n.MoveTo=Be(new e({id:"_moveTo",inSelectionMode:!1,precondition:void 0})),n.MoveToSelect=Be(new e({id:"_moveToSelect",inSelectionMode:!0,precondition:void 0}));class t extends In{runCoreEditorCommand(b,y){b.model.pushStackElement();const w=this._getColumnSelectResult(b,b.getPrimaryCursorState(),b.getCursorColumnSelectData(),y);w!==null&&(b.setCursorStates(y.source,3,w.viewStates.map(S=>Xt.fromViewState(S))),b.setCursorColumnSelectData({isReal:!0,fromViewLineNumber:w.fromLineNumber,fromViewVisualColumn:w.fromVisualColumn,toViewLineNumber:w.toLineNumber,toViewVisualColumn:w.toVisualColumn}),w.reversed?b.revealTopMostCursor(y.source):b.revealBottomMostCursor(y.source))}}n.ColumnSelect=Be(new class extends t{constructor(){super({id:"columnSelect",precondition:void 0})}_getColumnSelectResult(_,b,y,w){if(typeof w.position>"u"||typeof w.viewPosition>"u"||typeof w.mouseColumn>"u")return null;const S=_.model.validatePosition(w.position),E=_.coordinatesConverter.validateViewPosition(new he(w.viewPosition.lineNumber,w.viewPosition.column),S),L=w.doColumnSelect?y.fromViewLineNumber:E.lineNumber,k=w.doColumnSelect?y.fromViewVisualColumn:w.mouseColumn-1;return C1.columnSelect(_.cursorConfig,_,L,k,E.lineNumber,w.mouseColumn-1)}}),n.CursorColumnSelectLeft=Be(new class extends t{constructor(){super({id:"cursorColumnSelectLeft",precondition:void 0,kbOpts:{weight:ai,kbExpr:$.textInputFocus,primary:3599,linux:{primary:0}}})}_getColumnSelectResult(_,b,y,w){return C1.columnSelectLeft(_.cursorConfig,_,y)}}),n.CursorColumnSelectRight=Be(new class extends t{constructor(){super({id:"cursorColumnSelectRight",precondition:void 0,kbOpts:{weight:ai,kbExpr:$.textInputFocus,primary:3601,linux:{primary:0}}})}_getColumnSelectResult(_,b,y,w){return C1.columnSelectRight(_.cursorConfig,_,y)}});class i extends t{constructor(b){super(b),this._isPaged=b.isPaged}_getColumnSelectResult(b,y,w,S){return C1.columnSelectUp(b.cursorConfig,b,w,this._isPaged)}}n.CursorColumnSelectUp=Be(new i({isPaged:!1,id:"cursorColumnSelectUp",precondition:void 0,kbOpts:{weight:ai,kbExpr:$.textInputFocus,primary:3600,linux:{primary:0}}})),n.CursorColumnSelectPageUp=Be(new i({isPaged:!0,id:"cursorColumnSelectPageUp",precondition:void 0,kbOpts:{weight:ai,kbExpr:$.textInputFocus,primary:3595,linux:{primary:0}}}));class s extends t{constructor(b){super(b),this._isPaged=b.isPaged}_getColumnSelectResult(b,y,w,S){return C1.columnSelectDown(b.cursorConfig,b,w,this._isPaged)}}n.CursorColumnSelectDown=Be(new s({isPaged:!1,id:"cursorColumnSelectDown",precondition:void 0,kbOpts:{weight:ai,kbExpr:$.textInputFocus,primary:3602,linux:{primary:0}}})),n.CursorColumnSelectPageDown=Be(new s({isPaged:!0,id:"cursorColumnSelectPageDown",precondition:void 0,kbOpts:{weight:ai,kbExpr:$.textInputFocus,primary:3596,linux:{primary:0}}}));class r extends In{constructor(){super({id:"cursorMove",precondition:void 0,metadata:jA.metadata})}runCoreEditorCommand(b,y){const w=jA.parse(y);w&&this._runCursorMove(b,y.source,w)}_runCursorMove(b,y,w){b.model.pushStackElement(),b.setCursorStates(y,3,r._move(b,b.getCursorStates(),w)),b.revealPrimaryCursor(y,!0)}static _move(b,y,w){const S=w.select,E=w.value;switch(w.direction){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:return Ys.simpleMove(b,y,w.direction,S,E,w.unit);case 11:case 13:case 12:case 14:return Ys.viewportMove(b,y,w.direction,S,E);default:return null}}}n.CursorMoveImpl=r,n.CursorMove=Be(new r);class o extends In{constructor(b){super(b),this._staticArgs=b.args}runCoreEditorCommand(b,y){let w=this._staticArgs;this._staticArgs.value===-1&&(w={direction:this._staticArgs.direction,unit:this._staticArgs.unit,select:this._staticArgs.select,value:y.pageSize||b.cursorConfig.pageSize}),b.model.pushStackElement(),b.setCursorStates(y.source,3,Ys.simpleMove(b,b.getCursorStates(),w.direction,w.select,w.value,w.unit)),b.revealPrimaryCursor(y.source,!0)}}n.CursorLeft=Be(new o({args:{direction:0,unit:0,select:!1,value:1},id:"cursorLeft",precondition:void 0,kbOpts:{weight:ai,kbExpr:$.textInputFocus,primary:15,mac:{primary:15,secondary:[288]}}})),n.CursorLeftSelect=Be(new o({args:{direction:0,unit:0,select:!0,value:1},id:"cursorLeftSelect",precondition:void 0,kbOpts:{weight:ai,kbExpr:$.textInputFocus,primary:1039}})),n.CursorRight=Be(new o({args:{direction:1,unit:0,select:!1,value:1},id:"cursorRight",precondition:void 0,kbOpts:{weight:ai,kbExpr:$.textInputFocus,primary:17,mac:{primary:17,secondary:[292]}}})),n.CursorRightSelect=Be(new o({args:{direction:1,unit:0,select:!0,value:1},id:"cursorRightSelect",precondition:void 0,kbOpts:{weight:ai,kbExpr:$.textInputFocus,primary:1041}})),n.CursorUp=Be(new o({args:{direction:2,unit:2,select:!1,value:1},id:"cursorUp",precondition:void 0,kbOpts:{weight:ai,kbExpr:$.textInputFocus,primary:16,mac:{primary:16,secondary:[302]}}})),n.CursorUpSelect=Be(new o({args:{direction:2,unit:2,select:!0,value:1},id:"cursorUpSelect",precondition:void 0,kbOpts:{weight:ai,kbExpr:$.textInputFocus,primary:1040,secondary:[3088],mac:{primary:1040},linux:{primary:1040}}})),n.CursorPageUp=Be(new o({args:{direction:2,unit:2,select:!1,value:-1},id:"cursorPageUp",precondition:void 0,kbOpts:{weight:ai,kbExpr:$.textInputFocus,primary:11}})),n.CursorPageUpSelect=Be(new o({args:{direction:2,unit:2,select:!0,value:-1},id:"cursorPageUpSelect",precondition:void 0,kbOpts:{weight:ai,kbExpr:$.textInputFocus,primary:1035}})),n.CursorDown=Be(new o({args:{direction:3,unit:2,select:!1,value:1},id:"cursorDown",precondition:void 0,kbOpts:{weight:ai,kbExpr:$.textInputFocus,primary:18,mac:{primary:18,secondary:[300]}}})),n.CursorDownSelect=Be(new o({args:{direction:3,unit:2,select:!0,value:1},id:"cursorDownSelect",precondition:void 0,kbOpts:{weight:ai,kbExpr:$.textInputFocus,primary:1042,secondary:[3090],mac:{primary:1042},linux:{primary:1042}}})),n.CursorPageDown=Be(new o({args:{direction:3,unit:2,select:!1,value:-1},id:"cursorPageDown",precondition:void 0,kbOpts:{weight:ai,kbExpr:$.textInputFocus,primary:12}})),n.CursorPageDownSelect=Be(new o({args:{direction:3,unit:2,select:!0,value:-1},id:"cursorPageDownSelect",precondition:void 0,kbOpts:{weight:ai,kbExpr:$.textInputFocus,primary:1036}})),n.CreateCursor=Be(new class extends In{constructor(){super({id:"createCursor",precondition:void 0})}runCoreEditorCommand(_,b){if(!b.position)return;let y;b.wholeLine?y=Ys.line(_,_.getPrimaryCursorState(),!1,b.position,b.viewPosition):y=Ys.moveTo(_,_.getPrimaryCursorState(),!1,b.position,b.viewPosition);const w=_.getCursorStates();if(w.length>1){const S=y.modelState?y.modelState.position:null,E=y.viewState?y.viewState.position:null;for(let L=0,k=w.length;L<k;L++){const x=w[L];if(!(S&&!x.modelState.selection.containsPosition(S))&&!(E&&!x.viewState.selection.containsPosition(E))){w.splice(L,1),_.model.pushStackElement(),_.setCursorStates(b.source,3,w);return}}}w.push(y),_.model.pushStackElement(),_.setCursorStates(b.source,3,w)}}),n.LastCursorMoveToSelect=Be(new class extends In{constructor(){super({id:"_lastCursorMoveToSelect",precondition:void 0})}runCoreEditorCommand(_,b){if(!b.position)return;const y=_.getLastAddedCursorIndex(),w=_.getCursorStates(),S=w.slice(0);S[y]=Ys.moveTo(_,w[y],!0,b.position,b.viewPosition),_.model.pushStackElement(),_.setCursorStates(b.source,3,S)}});class a extends In{constructor(b){super(b),this._inSelectionMode=b.inSelectionMode}runCoreEditorCommand(b,y){b.model.pushStackElement(),b.setCursorStates(y.source,3,Ys.moveToBeginningOfLine(b,b.getCursorStates(),this._inSelectionMode)),b.revealPrimaryCursor(y.source,!0)}}n.CursorHome=Be(new a({inSelectionMode:!1,id:"cursorHome",precondition:void 0,kbOpts:{weight:ai,kbExpr:$.textInputFocus,primary:14,mac:{primary:14,secondary:[2063]}}})),n.CursorHomeSelect=Be(new a({inSelectionMode:!0,id:"cursorHomeSelect",precondition:void 0,kbOpts:{weight:ai,kbExpr:$.textInputFocus,primary:1038,mac:{primary:1038,secondary:[3087]}}}));class l extends In{constructor(b){super(b),this._inSelectionMode=b.inSelectionMode}runCoreEditorCommand(b,y){b.model.pushStackElement(),b.setCursorStates(y.source,3,this._exec(b.getCursorStates())),b.revealPrimaryCursor(y.source,!0)}_exec(b){const y=[];for(let w=0,S=b.length;w<S;w++){const E=b[w],L=E.modelState.position.lineNumber;y[w]=Xt.fromModelState(E.modelState.move(this._inSelectionMode,L,1,0))}return y}}n.CursorLineStart=Be(new l({inSelectionMode:!1,id:"cursorLineStart",precondition:void 0,kbOpts:{weight:ai,kbExpr:$.textInputFocus,primary:0,mac:{primary:287}}})),n.CursorLineStartSelect=Be(new l({inSelectionMode:!0,id:"cursorLineStartSelect",precondition:void 0,kbOpts:{weight:ai,kbExpr:$.textInputFocus,primary:0,mac:{primary:1311}}}));class c extends In{constructor(b){super(b),this._inSelectionMode=b.inSelectionMode}runCoreEditorCommand(b,y){b.model.pushStackElement(),b.setCursorStates(y.source,3,Ys.moveToEndOfLine(b,b.getCursorStates(),this._inSelectionMode,y.sticky||!1)),b.revealPrimaryCursor(y.source,!0)}}n.CursorEnd=Be(new c({inSelectionMode:!1,id:"cursorEnd",precondition:void 0,kbOpts:{args:{sticky:!1},weight:ai,kbExpr:$.textInputFocus,primary:13,mac:{primary:13,secondary:[2065]}},metadata:{description:"Go to End",args:[{name:"args",schema:{type:"object",properties:{sticky:{description:v("stickydesc","Stick to the end even when going to longer lines"),type:"boolean",default:!1}}}}]}})),n.CursorEndSelect=Be(new c({inSelectionMode:!0,id:"cursorEndSelect",precondition:void 0,kbOpts:{args:{sticky:!1},weight:ai,kbExpr:$.textInputFocus,primary:1037,mac:{primary:1037,secondary:[3089]}},metadata:{description:"Select to End",args:[{name:"args",schema:{type:"object",properties:{sticky:{description:v("stickydesc","Stick to the end even when going to longer lines"),type:"boolean",default:!1}}}}]}}));class u extends In{constructor(b){super(b),this._inSelectionMode=b.inSelectionMode}runCoreEditorCommand(b,y){b.model.pushStackElement(),b.setCursorStates(y.source,3,this._exec(b,b.getCursorStates())),b.revealPrimaryCursor(y.source,!0)}_exec(b,y){const w=[];for(let S=0,E=y.length;S<E;S++){const L=y[S],k=L.modelState.position.lineNumber,x=b.model.getLineMaxColumn(k);w[S]=Xt.fromModelState(L.modelState.move(this._inSelectionMode,k,x,0))}return w}}n.CursorLineEnd=Be(new u({inSelectionMode:!1,id:"cursorLineEnd",precondition:void 0,kbOpts:{weight:ai,kbExpr:$.textInputFocus,primary:0,mac:{primary:291}}})),n.CursorLineEndSelect=Be(new u({inSelectionMode:!0,id:"cursorLineEndSelect",precondition:void 0,kbOpts:{weight:ai,kbExpr:$.textInputFocus,primary:0,mac:{primary:1315}}}));class h extends In{constructor(b){super(b),this._inSelectionMode=b.inSelectionMode}runCoreEditorCommand(b,y){b.model.pushStackElement(),b.setCursorStates(y.source,3,Ys.moveToBeginningOfBuffer(b,b.getCursorStates(),this._inSelectionMode)),b.revealPrimaryCursor(y.source,!0)}}n.CursorTop=Be(new h({inSelectionMode:!1,id:"cursorTop",precondition:void 0,kbOpts:{weight:ai,kbExpr:$.textInputFocus,primary:2062,mac:{primary:2064}}})),n.CursorTopSelect=Be(new h({inSelectionMode:!0,id:"cursorTopSelect",precondition:void 0,kbOpts:{weight:ai,kbExpr:$.textInputFocus,primary:3086,mac:{primary:3088}}}));class d extends In{constructor(b){super(b),this._inSelectionMode=b.inSelectionMode}runCoreEditorCommand(b,y){b.model.pushStackElement(),b.setCursorStates(y.source,3,Ys.moveToEndOfBuffer(b,b.getCursorStates(),this._inSelectionMode)),b.revealPrimaryCursor(y.source,!0)}}n.CursorBottom=Be(new d({inSelectionMode:!1,id:"cursorBottom",precondition:void 0,kbOpts:{weight:ai,kbExpr:$.textInputFocus,primary:2061,mac:{primary:2066}}})),n.CursorBottomSelect=Be(new d({inSelectionMode:!0,id:"cursorBottomSelect",precondition:void 0,kbOpts:{weight:ai,kbExpr:$.textInputFocus,primary:3085,mac:{primary:3090}}}));class f extends In{constructor(){super({id:"editorScroll",precondition:void 0,metadata:ar.metadata})}determineScrollMethod(b){const y=[6],w=[1,2,3,4,5,6],S=[4,2],E=[1,3];return y.includes(b.unit)&&S.includes(b.direction)?this._runHorizontalEditorScroll.bind(this):w.includes(b.unit)&&E.includes(b.direction)?this._runVerticalEditorScroll.bind(this):null}runCoreEditorCommand(b,y){const w=ar.parse(y);if(!w)return;const S=this.determineScrollMethod(w);S&&S(b,y.source,w)}_runVerticalEditorScroll(b,y,w){const S=this._computeDesiredScrollTop(b,w);if(w.revealCursor){const E=b.getCompletelyVisibleViewRangeAtScrollTop(S);b.setCursorStates(y,3,[Ys.findPositionInViewportIfOutside(b,b.getPrimaryCursorState(),E,w.select)])}b.viewLayout.setScrollPosition({scrollTop:S},0)}_computeDesiredScrollTop(b,y){if(y.unit===1){const E=b.viewLayout.getFutureViewport(),L=b.getCompletelyVisibleViewRangeAtScrollTop(E.top),k=b.coordinatesConverter.convertViewRangeToModelRange(L);let x;y.direction===1?x=Math.max(1,k.startLineNumber-y.value):x=Math.min(b.model.getLineCount(),k.startLineNumber+y.value);const I=b.coordinatesConverter.convertModelPositionToViewPosition(new he(x,1));return b.viewLayout.getVerticalOffsetForLineNumber(I.lineNumber)}if(y.unit===5){let E=0;return y.direction===3&&(E=b.model.getLineCount()-b.cursorConfig.pageSize),b.viewLayout.getVerticalOffsetForLineNumber(E)}let w;y.unit===3?w=b.cursorConfig.pageSize*y.value:y.unit===4?w=Math.round(b.cursorConfig.pageSize/2)*y.value:w=y.value;const S=(y.direction===1?-1:1)*w;return b.viewLayout.getCurrentScrollTop()+S*b.cursorConfig.lineHeight}_runHorizontalEditorScroll(b,y,w){const S=this._computeDesiredScrollLeft(b,w);b.viewLayout.setScrollPosition({scrollLeft:S},0)}_computeDesiredScrollLeft(b,y){const w=(y.direction===4?-1:1)*y.value;return b.viewLayout.getCurrentScrollLeft()+w*b.cursorConfig.typicalHalfwidthCharacterWidth}}n.EditorScrollImpl=f,n.EditorScroll=Be(new f),n.ScrollLineUp=Be(new class extends In{constructor(){super({id:"scrollLineUp",precondition:void 0,kbOpts:{weight:ai,kbExpr:$.textInputFocus,primary:2064,mac:{primary:267}}})}runCoreEditorCommand(_,b){n.EditorScroll.runCoreEditorCommand(_,{to:ar.RawDirection.Up,by:ar.RawUnit.WrappedLine,value:1,revealCursor:!1,select:!1,source:b.source})}}),n.ScrollPageUp=Be(new class extends In{constructor(){super({id:"scrollPageUp",precondition:void 0,kbOpts:{weight:ai,kbExpr:$.textInputFocus,primary:2059,win:{primary:523},linux:{primary:523}}})}runCoreEditorCommand(_,b){n.EditorScroll.runCoreEditorCommand(_,{to:ar.RawDirection.Up,by:ar.RawUnit.Page,value:1,revealCursor:!1,select:!1,source:b.source})}}),n.ScrollEditorTop=Be(new class extends In{constructor(){super({id:"scrollEditorTop",precondition:void 0,kbOpts:{weight:ai,kbExpr:$.textInputFocus}})}runCoreEditorCommand(_,b){n.EditorScroll.runCoreEditorCommand(_,{to:ar.RawDirection.Up,by:ar.RawUnit.Editor,value:1,revealCursor:!1,select:!1,source:b.source})}}),n.ScrollLineDown=Be(new class extends In{constructor(){super({id:"scrollLineDown",precondition:void 0,kbOpts:{weight:ai,kbExpr:$.textInputFocus,primary:2066,mac:{primary:268}}})}runCoreEditorCommand(_,b){n.EditorScroll.runCoreEditorCommand(_,{to:ar.RawDirection.Down,by:ar.RawUnit.WrappedLine,value:1,revealCursor:!1,select:!1,source:b.source})}}),n.ScrollPageDown=Be(new class extends In{constructor(){super({id:"scrollPageDown",precondition:void 0,kbOpts:{weight:ai,kbExpr:$.textInputFocus,primary:2060,win:{primary:524},linux:{primary:524}}})}runCoreEditorCommand(_,b){n.EditorScroll.runCoreEditorCommand(_,{to:ar.RawDirection.Down,by:ar.RawUnit.Page,value:1,revealCursor:!1,select:!1,source:b.source})}}),n.ScrollEditorBottom=Be(new class extends In{constructor(){super({id:"scrollEditorBottom",precondition:void 0,kbOpts:{weight:ai,kbExpr:$.textInputFocus}})}runCoreEditorCommand(_,b){n.EditorScroll.runCoreEditorCommand(_,{to:ar.RawDirection.Down,by:ar.RawUnit.Editor,value:1,revealCursor:!1,select:!1,source:b.source})}}),n.ScrollLeft=Be(new class extends In{constructor(){super({id:"scrollLeft",precondition:void 0,kbOpts:{weight:ai,kbExpr:$.textInputFocus}})}runCoreEditorCommand(_,b){n.EditorScroll.runCoreEditorCommand(_,{to:ar.RawDirection.Left,by:ar.RawUnit.Column,value:2,revealCursor:!1,select:!1,source:b.source})}}),n.ScrollRight=Be(new class extends In{constructor(){super({id:"scrollRight",precondition:void 0,kbOpts:{weight:ai,kbExpr:$.textInputFocus}})}runCoreEditorCommand(_,b){n.EditorScroll.runCoreEditorCommand(_,{to:ar.RawDirection.Right,by:ar.RawUnit.Column,value:2,revealCursor:!1,select:!1,source:b.source})}});class g extends In{constructor(b){super(b),this._inSelectionMode=b.inSelectionMode}runCoreEditorCommand(b,y){y.position&&(b.model.pushStackElement(),b.setCursorStates(y.source,3,[Ys.word(b,b.getPrimaryCursorState(),this._inSelectionMode,y.position)]),y.revealType!==2&&b.revealPrimaryCursor(y.source,!0,!0))}}n.WordSelect=Be(new g({inSelectionMode:!1,id:"_wordSelect",precondition:void 0})),n.WordSelectDrag=Be(new g({inSelectionMode:!0,id:"_wordSelectDrag",precondition:void 0})),n.LastCursorWordSelect=Be(new class extends In{constructor(){super({id:"lastCursorWordSelect",precondition:void 0})}runCoreEditorCommand(_,b){if(!b.position)return;const y=_.getLastAddedCursorIndex(),w=_.getCursorStates(),S=w.slice(0),E=w[y];S[y]=Ys.word(_,E,E.modelState.hasSelection(),b.position),_.model.pushStackElement(),_.setCursorStates(b.source,3,S)}});class p extends In{constructor(b){super(b),this._inSelectionMode=b.inSelectionMode}runCoreEditorCommand(b,y){y.position&&(b.model.pushStackElement(),b.setCursorStates(y.source,3,[Ys.line(b,b.getPrimaryCursorState(),this._inSelectionMode,y.position,y.viewPosition)]),y.revealType!==2&&b.revealPrimaryCursor(y.source,!1,!0))}}n.LineSelect=Be(new p({inSelectionMode:!1,id:"_lineSelect",precondition:void 0})),n.LineSelectDrag=Be(new p({inSelectionMode:!0,id:"_lineSelectDrag",precondition:void 0}));class m extends In{constructor(b){super(b),this._inSelectionMode=b.inSelectionMode}runCoreEditorCommand(b,y){if(!y.position)return;const w=b.getLastAddedCursorIndex(),S=b.getCursorStates(),E=S.slice(0);E[w]=Ys.line(b,S[w],this._inSelectionMode,y.position,y.viewPosition),b.model.pushStackElement(),b.setCursorStates(y.source,3,E)}}n.LastCursorLineSelect=Be(new m({inSelectionMode:!1,id:"lastCursorLineSelect",precondition:void 0})),n.LastCursorLineSelectDrag=Be(new m({inSelectionMode:!0,id:"lastCursorLineSelectDrag",precondition:void 0})),n.CancelSelection=Be(new class extends In{constructor(){super({id:"cancelSelection",precondition:$.hasNonEmptySelection,kbOpts:{weight:ai,kbExpr:$.textInputFocus,primary:9,secondary:[1033]}})}runCoreEditorCommand(_,b){_.model.pushStackElement(),_.setCursorStates(b.source,3,[Ys.cancelSelection(_,_.getPrimaryCursorState())]),_.revealPrimaryCursor(b.source,!0)}}),n.RemoveSecondaryCursors=Be(new class extends In{constructor(){super({id:"removeSecondaryCursors",precondition:$.hasMultipleSelections,kbOpts:{weight:ai+1,kbExpr:$.textInputFocus,primary:9,secondary:[1033]}})}runCoreEditorCommand(_,b){_.model.pushStackElement(),_.setCursorStates(b.source,3,[_.getPrimaryCursorState()]),_.revealPrimaryCursor(b.source,!0),Qp(v("removedCursor","Removed secondary cursors"))}}),n.RevealLine=Be(new class extends In{constructor(){super({id:"revealLine",precondition:void 0,metadata:F0.metadata})}runCoreEditorCommand(_,b){const y=b,w=y.lineNumber||0;let S=typeof w=="number"?w+1:parseInt(w)+1;S<1&&(S=1);const E=_.model.getLineCount();S>E&&(S=E);const L=new M(S,1,S,_.model.getLineMaxColumn(S));let k=0;if(y.at)switch(y.at){case F0.RawAtArgument.Top:k=3;break;case F0.RawAtArgument.Center:k=1;break;case F0.RawAtArgument.Bottom:k=4;break}const x=_.coordinatesConverter.convertModelRangeToViewRange(L);_.revealRange(b.source,!1,x,k,0)}}),n.SelectAll=new class extends c9{constructor(){super(n7e)}runDOMCommand(_){Ol&&(_.focus(),_.select()),_.ownerDocument.execCommand("selectAll")}runEditorCommand(_,b,y){const w=b._getViewModel();w&&this.runCoreEditorCommand(w,y)}runCoreEditorCommand(_,b){_.model.pushStackElement(),_.setCursorStates("keyboard",3,[Ys.selectAll(_,_.getPrimaryCursorState())])}},n.SetSelection=Be(new class extends In{constructor(){super({id:"setSelection",precondition:void 0})}runCoreEditorCommand(_,b){b.selection&&(_.model.pushStackElement(),_.setCursorStates(b.source,3,[Xt.fromModelSelection(b.selection)]))}})})(Fs||(Fs={}));const dWe=ke.and($.textInputFocus,$.columnSelection);function TC(n,e){Mo.registerKeybindingRule({id:n,primary:e,when:dWe,weight:ai+1})}TC(Fs.CursorColumnSelectLeft.id,1039);TC(Fs.CursorColumnSelectRight.id,1041);TC(Fs.CursorColumnSelectUp.id,1040);TC(Fs.CursorColumnSelectPageUp.id,1035);TC(Fs.CursorColumnSelectDown.id,1042);TC(Fs.CursorColumnSelectPageDown.id,1036);function XJ(n){return n.register(),n}var yb;(function(n){class e extends Ks{runEditorCommand(i,s,r){const o=s._getViewModel();o&&this.runCoreEditingCommand(s,o,r||{})}}n.CoreEditingCommand=e,n.LineBreakInsert=Be(new class extends e{constructor(){super({id:"lineBreakInsert",precondition:$.writable,kbOpts:{weight:ai,kbExpr:$.textInputFocus,primary:0,mac:{primary:301}}})}runCoreEditingCommand(t,i,s){t.pushUndoStop(),t.executeCommands(this.id,gn.lineBreakInsert(i.cursorConfig,i.model,i.getCursorStates().map(r=>r.modelState.selection)))}}),n.Outdent=Be(new class extends e{constructor(){super({id:"outdent",precondition:$.writable,kbOpts:{weight:ai,kbExpr:ke.and($.editorTextFocus,$.tabDoesNotMoveFocus),primary:1026}})}runCoreEditingCommand(t,i,s){t.pushUndoStop(),t.executeCommands(this.id,gn.outdent(i.cursorConfig,i.model,i.getCursorStates().map(r=>r.modelState.selection))),t.pushUndoStop()}}),n.Tab=Be(new class extends e{constructor(){super({id:"tab",precondition:$.writable,kbOpts:{weight:ai,kbExpr:ke.and($.editorTextFocus,$.tabDoesNotMoveFocus),primary:2}})}runCoreEditingCommand(t,i,s){t.pushUndoStop(),t.executeCommands(this.id,gn.tab(i.cursorConfig,i.model,i.getCursorStates().map(r=>r.modelState.selection))),t.pushUndoStop()}}),n.DeleteLeft=Be(new class extends e{constructor(){super({id:"deleteLeft",precondition:void 0,kbOpts:{weight:ai,kbExpr:$.textInputFocus,primary:1,secondary:[1025],mac:{primary:1,secondary:[1025,294,257]}}})}runCoreEditingCommand(t,i,s){const[r,o]=M_.deleteLeft(i.getPrevEditOperationType(),i.cursorConfig,i.model,i.getCursorStates().map(a=>a.modelState.selection),i.getCursorAutoClosedCharacters());r&&t.pushUndoStop(),t.executeCommands(this.id,o),i.setPrevEditOperationType(2)}}),n.DeleteRight=Be(new class extends e{constructor(){super({id:"deleteRight",precondition:void 0,kbOpts:{weight:ai,kbExpr:$.textInputFocus,primary:20,mac:{primary:20,secondary:[290,276]}}})}runCoreEditingCommand(t,i,s){const[r,o]=M_.deleteRight(i.getPrevEditOperationType(),i.cursorConfig,i.model,i.getCursorStates().map(a=>a.modelState.selection));r&&t.pushUndoStop(),t.executeCommands(this.id,o),i.setPrevEditOperationType(3)}}),n.Undo=new class extends c9{constructor(){super(Bge)}runDOMCommand(t){t.ownerDocument.execCommand("undo")}runEditorCommand(t,i,s){if(!(!i.hasModel()||i.getOption(90)===!0))return i.getModel().undo()}},n.Redo=new class extends c9{constructor(){super(Wge)}runDOMCommand(t){t.ownerDocument.execCommand("redo")}runEditorCommand(t,i,s){if(!(!i.hasModel()||i.getOption(90)===!0))return i.getModel().redo()}}})(yb||(yb={}));class QJ extends kO{constructor(e,t,i){super({id:e,precondition:void 0,metadata:i}),this._handlerId=t}runCommand(e,t){const i=e.get(ri).getFocusedCodeEditor();i&&i.trigger("keyboard",this._handlerId,t)}}function xv(n,e){XJ(new QJ("default:"+n,n)),XJ(new QJ(n,n,e))}xv("type",{description:"Type",args:[{name:"args",schema:{type:"object",required:["text"],properties:{text:{type:"string"}}}}]});xv("replacePreviousChar");xv("compositionType");xv("compositionStart");xv("compositionEnd");xv("paste");xv("cut");const rq=Bt("markerDecorationsService");var fWe=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},gWe=function(n,e){return function(t,i){e(t,i,n)}};let SL=class{constructor(e,t){}dispose(){}};SL.ID="editor.contrib.markerDecorations";SL=fWe([gWe(1,rq)],SL);ti(SL.ID,SL,0);function ef(n){if(!n||typeof n!="object"||n instanceof RegExp)return n;const e=Array.isArray(n)?[]:{};return Object.entries(n).forEach(([t,i])=>{e[t]=i&&typeof i=="object"?ef(i):i}),e}function pWe(n){if(!n||typeof n!="object")return n;const e=[n];for(;e.length>0;){const t=e.shift();Object.freeze(t);for(const i in t)if(ape.call(t,i)){const s=t[i];typeof s=="object"&&!Object.isFrozen(s)&&!wBe(s)&&e.push(s)}}return n}const ape=Object.prototype.hasOwnProperty;function lpe(n,e){return u9(n,e,new Set)}function u9(n,e,t){if(Ma(n))return n;const i=e(n);if(typeof i<"u")return i;if(Array.isArray(n)){const s=[];for(const r of n)s.push(u9(r,e,t));return s}if(ao(n)){if(t.has(n))throw new Error("Cannot clone recursive data-structure");t.add(n);const s={};for(const r in n)ape.call(n,r)&&(s[r]=u9(n[r],e,t));return t.delete(n),s}return n}function PO(n,e,t=!0){return ao(n)?(ao(e)&&Object.keys(e).forEach(i=>{i in n?t&&(ao(n[i])&&ao(e[i])?PO(n[i],e[i],t):n[i]=e[i]):n[i]=e[i]}),n):e}function Ya(n,e){if(n===e)return!0;if(n==null||e===null||e===void 0||typeof n!=typeof e||typeof n!="object"||Array.isArray(n)!==Array.isArray(e))return!1;let t,i;if(Array.isArray(n)){if(n.length!==e.length)return!1;for(t=0;t<n.length;t++)if(!Ya(n[t],e[t]))return!1}else{const s=[];for(i in n)s.push(i);s.sort();const r=[];for(i in e)r.push(i);if(r.sort(),!Ya(s,r))return!1;for(t=0;t<s.length;t++)if(!Ya(n[s[t]],e[s[t]]))return!1}return!0}function mWe(n){let e=[];for(;Object.prototype!==n;)e=e.concat(Object.getOwnPropertyNames(n)),n=Object.getPrototypeOf(n);return e}function oq(n){const e=[];for(const t of mWe(n))typeof n[t]=="function"&&e.push(t);return e}function _We(n,e){const t=s=>function(){const r=Array.prototype.slice.call(arguments,0);return e(s,r)},i={};for(const s of n)i[s]=t(s);return i}class cpe extends pe{constructor(e,t){super(),this._onDidChange=this._register(new ue),this.onDidChange=this._onDidChange.event,this._referenceDomElement=e,this._width=-1,this._height=-1,this._resizeObserver=null,this.measureReferenceDomElement(!1,t)}dispose(){this.stopObserving(),super.dispose()}getWidth(){return this._width}getHeight(){return this._height}startObserving(){if(!this._resizeObserver&&this._referenceDomElement){let e=null;const t=()=>{e?this.observe({width:e.width,height:e.height}):this.observe()};let i=!1,s=!1;const r=()=>{if(i&&!s)try{i=!1,s=!0,t()}finally{ua(pt(this._referenceDomElement),()=>{s=!1,r()})}};this._resizeObserver=new ResizeObserver(o=>{e=o&&o[0]&&o[0].contentRect?o[0].contentRect:null,i=!0,r()}),this._resizeObserver.observe(this._referenceDomElement)}}stopObserving(){this._resizeObserver&&(this._resizeObserver.disconnect(),this._resizeObserver=null)}observe(e){this.measureReferenceDomElement(!0,e)}measureReferenceDomElement(e,t){let i=0,s=0;t?(i=t.width,s=t.height):this._referenceDomElement&&(i=this._referenceDomElement.clientWidth,s=this._referenceDomElement.clientHeight),i=Math.max(5,i),s=Math.max(5,s),(this._width!==i||this._height!==s)&&(this._width=i,this._height=s,e&&this._onDidChange.fire())}}class upe{constructor(e){this.domNode=e,this._maxWidth="",this._width="",this._height="",this._top="",this._left="",this._bottom="",this._right="",this._paddingLeft="",this._fontFamily="",this._fontWeight="",this._fontSize="",this._fontStyle="",this._fontFeatureSettings="",this._fontVariationSettings="",this._textDecoration="",this._lineHeight="",this._letterSpacing="",this._className="",this._display="",this._position="",this._visibility="",this._color="",this._backgroundColor="",this._layerHint=!1,this._contain="none",this._boxShadow=""}setMaxWidth(e){const t=$c(e);this._maxWidth!==t&&(this._maxWidth=t,this.domNode.style.maxWidth=this._maxWidth)}setWidth(e){const t=$c(e);this._width!==t&&(this._width=t,this.domNode.style.width=this._width)}setHeight(e){const t=$c(e);this._height!==t&&(this._height=t,this.domNode.style.height=this._height)}setTop(e){const t=$c(e);this._top!==t&&(this._top=t,this.domNode.style.top=this._top)}setLeft(e){const t=$c(e);this._left!==t&&(this._left=t,this.domNode.style.left=this._left)}setBottom(e){const t=$c(e);this._bottom!==t&&(this._bottom=t,this.domNode.style.bottom=this._bottom)}setRight(e){const t=$c(e);this._right!==t&&(this._right=t,this.domNode.style.right=this._right)}setPaddingLeft(e){const t=$c(e);this._paddingLeft!==t&&(this._paddingLeft=t,this.domNode.style.paddingLeft=this._paddingLeft)}setFontFamily(e){this._fontFamily!==e&&(this._fontFamily=e,this.domNode.style.fontFamily=this._fontFamily)}setFontWeight(e){this._fontWeight!==e&&(this._fontWeight=e,this.domNode.style.fontWeight=this._fontWeight)}setFontSize(e){const t=$c(e);this._fontSize!==t&&(this._fontSize=t,this.domNode.style.fontSize=this._fontSize)}setFontStyle(e){this._fontStyle!==e&&(this._fontStyle=e,this.domNode.style.fontStyle=this._fontStyle)}setFontFeatureSettings(e){this._fontFeatureSettings!==e&&(this._fontFeatureSettings=e,this.domNode.style.fontFeatureSettings=this._fontFeatureSettings)}setFontVariationSettings(e){this._fontVariationSettings!==e&&(this._fontVariationSettings=e,this.domNode.style.fontVariationSettings=this._fontVariationSettings)}setTextDecoration(e){this._textDecoration!==e&&(this._textDecoration=e,this.domNode.style.textDecoration=this._textDecoration)}setLineHeight(e){const t=$c(e);this._lineHeight!==t&&(this._lineHeight=t,this.domNode.style.lineHeight=this._lineHeight)}setLetterSpacing(e){const t=$c(e);this._letterSpacing!==t&&(this._letterSpacing=t,this.domNode.style.letterSpacing=this._letterSpacing)}setClassName(e){this._className!==e&&(this._className=e,this.domNode.className=this._className)}toggleClassName(e,t){this.domNode.classList.toggle(e,t),this._className=this.domNode.className}setDisplay(e){this._display!==e&&(this._display=e,this.domNode.style.display=this._display)}setPosition(e){this._position!==e&&(this._position=e,this.domNode.style.position=this._position)}setVisibility(e){this._visibility!==e&&(this._visibility=e,this.domNode.style.visibility=this._visibility)}setColor(e){this._color!==e&&(this._color=e,this.domNode.style.color=this._color)}setBackgroundColor(e){this._backgroundColor!==e&&(this._backgroundColor=e,this.domNode.style.backgroundColor=this._backgroundColor)}setLayerHinting(e){this._layerHint!==e&&(this._layerHint=e,this.domNode.style.transform=this._layerHint?"translate3d(0px, 0px, 0px)":"")}setBoxShadow(e){this._boxShadow!==e&&(this._boxShadow=e,this.domNode.style.boxShadow=e)}setContain(e){this._contain!==e&&(this._contain=e,this.domNode.style.contain=this._contain)}setAttribute(e,t){this.domNode.setAttribute(e,t)}removeAttribute(e){this.domNode.removeAttribute(e)}appendChild(e){this.domNode.appendChild(e.domNode)}removeChild(e){this.domNode.removeChild(e.domNode)}}function $c(n){return typeof n=="number"?`${n}px`:n}function fi(n){return new upe(n)}function _r(n,e){n instanceof upe?(n.setFontFamily(e.getMassagedFontFamily()),n.setFontWeight(e.fontWeight),n.setFontSize(e.fontSize),n.setFontFeatureSettings(e.fontFeatureSettings),n.setFontVariationSettings(e.fontVariationSettings),n.setLineHeight(e.lineHeight),n.setLetterSpacing(e.letterSpacing)):(n.style.fontFamily=e.getMassagedFontFamily(),n.style.fontWeight=e.fontWeight,n.style.fontSize=e.fontSize+"px",n.style.fontFeatureSettings=e.fontFeatureSettings,n.style.fontVariationSettings=e.fontVariationSettings,n.style.lineHeight=e.lineHeight+"px",n.style.letterSpacing=e.letterSpacing+"px")}class vWe{constructor(e,t){this.chr=e,this.type=t,this.width=0}fulfill(e){this.width=e}}class aq{constructor(e,t){this._bareFontInfo=e,this._requests=t,this._container=null,this._testElements=null}read(){this._createDomElements(),Xh.document.body.appendChild(this._container),this._readFromDomElements(),Xh.document.body.removeChild(this._container),this._container=null,this._testElements=null}_createDomElements(){const e=document.createElement("div");e.style.position="absolute",e.style.top="-50000px",e.style.width="50000px";const t=document.createElement("div");_r(t,this._bareFontInfo),e.appendChild(t);const i=document.createElement("div");_r(i,this._bareFontInfo),i.style.fontWeight="bold",e.appendChild(i);const s=document.createElement("div");_r(s,this._bareFontInfo),s.style.fontStyle="italic",e.appendChild(s);const r=[];for(const o of this._requests){let a;o.type===0&&(a=t),o.type===2&&(a=i),o.type===1&&(a=s),a.appendChild(document.createElement("br"));const l=document.createElement("span");aq._render(l,o),a.appendChild(l),r.push(l)}this._container=e,this._testElements=r}static _render(e,t){if(t.chr===" "){let i=" ";for(let s=0;s<8;s++)i+=i;e.innerText=i}else{let i=t.chr;for(let s=0;s<8;s++)i+=i;e.textContent=i}}_readFromDomElements(){for(let e=0,t=this._requests.length;e<t;e++){const i=this._requests[e],s=this._testElements[e];i.fulfill(s.offsetWidth/256)}}}function bWe(n,e){new aq(n,e).read()}const Lr={tabSize:4,indentSize:4,insertSpaces:!0,detectIndentation:!0,trimAutoWhitespace:!0,largeFileOptimizations:!0,bracketPairColorizationOptions:{enabled:!0,independentColorPoolPerBracketType:!1}},Pg=8;class hpe{constructor(e){this._values=e}hasChanged(e){return this._values[e]}}class dpe{constructor(){this.stableMinimapLayoutInput=null,this.stableFitMaxMinimapScale=0,this.stableFitRemainingWidth=0}}class bn{constructor(e,t,i,s){this.id=e,this.name=t,this.defaultValue=i,this.schema=s}applyUpdate(e,t){return RO(e,t)}compute(e,t,i){return i}}class JS{constructor(e,t){this.newValue=e,this.didChange=t}}function RO(n,e){if(typeof n!="object"||typeof e!="object"||!n||!e)return new JS(e,n!==e);if(Array.isArray(n)||Array.isArray(e)){const i=Array.isArray(n)&&Array.isArray(e)&&On(n,e);return new JS(e,!i)}let t=!1;for(const i in e)if(e.hasOwnProperty(i)){const s=RO(n[i],e[i]);s.didChange&&(n[i]=s.newValue,t=!0)}return new JS(n,t)}class mE{constructor(e){this.schema=void 0,this.id=e,this.name="_never_",this.defaultValue=void 0}applyUpdate(e,t){return RO(e,t)}validate(e){return this.defaultValue}}class NC{constructor(e,t,i,s){this.id=e,this.name=t,this.defaultValue=i,this.schema=s}applyUpdate(e,t){return RO(e,t)}validate(e){return typeof e>"u"?this.defaultValue:e}compute(e,t,i){return i}}function Qe(n,e){return typeof n>"u"?e:n==="false"?!1:!!n}class Zt extends NC{constructor(e,t,i,s=void 0){typeof s<"u"&&(s.type="boolean",s.default=i),super(e,t,i,s)}validate(e){return Qe(e,this.defaultValue)}}function o1(n,e,t,i){if(typeof n>"u")return e;let s=parseInt(n,10);return isNaN(s)?e:(s=Math.max(t,s),s=Math.min(i,s),s|0)}class Ii extends NC{static clampedInt(e,t,i,s){return o1(e,t,i,s)}constructor(e,t,i,s,r,o=void 0){typeof o<"u"&&(o.type="integer",o.default=i,o.minimum=s,o.maximum=r),super(e,t,i,o),this.minimum=s,this.maximum=r}validate(e){return Ii.clampedInt(e,this.defaultValue,this.minimum,this.maximum)}}function yWe(n,e,t,i){if(typeof n>"u")return e;const s=lc.float(n,e);return lc.clamp(s,t,i)}class lc extends NC{static clamp(e,t,i){return e<t?t:e>i?i:e}static float(e,t){if(typeof e=="number")return e;if(typeof e>"u")return t;const i=parseFloat(e);return isNaN(i)?t:i}constructor(e,t,i,s,r){typeof r<"u"&&(r.type="number",r.default=i),super(e,t,i,r),this.validationFn=s}validate(e){return this.validationFn(lc.float(e,this.defaultValue))}}class Ko extends NC{static string(e,t){return typeof e!="string"?t:e}constructor(e,t,i,s=void 0){typeof s<"u"&&(s.type="string",s.default=i),super(e,t,i,s)}validate(e){return Ko.string(e,this.defaultValue)}}function Un(n,e,t,i){return typeof n!="string"?e:i&&n in i?i[n]:t.indexOf(n)===-1?e:n}class yn extends NC{constructor(e,t,i,s,r=void 0){typeof r<"u"&&(r.type="string",r.enum=s,r.default=i),super(e,t,i,r),this._allowedValues=s}validate(e){return Un(e,this.defaultValue,this._allowedValues)}}class iI extends bn{constructor(e,t,i,s,r,o,a=void 0){typeof a<"u"&&(a.type="string",a.enum=r,a.default=s),super(e,t,i,a),this._allowedValues=r,this._convert=o}validate(e){return typeof e!="string"?this.defaultValue:this._allowedValues.indexOf(e)===-1?this.defaultValue:this._convert(e)}}function CWe(n){switch(n){case"none":return 0;case"keep":return 1;case"brackets":return 2;case"advanced":return 3;case"full":return 4}}class wWe extends bn{constructor(){super(2,"accessibilitySupport",0,{type:"string",enum:["auto","on","off"],enumDescriptions:[v("accessibilitySupport.auto","Use platform APIs to detect when a Screen Reader is attached."),v("accessibilitySupport.on","Optimize for usage with a Screen Reader."),v("accessibilitySupport.off","Assume a screen reader is not attached.")],default:"auto",tags:["accessibility"],description:v("accessibilitySupport","Controls if the UI should run in a mode where it is optimized for screen readers.")})}validate(e){switch(e){case"auto":return 0;case"off":return 1;case"on":return 2}return this.defaultValue}compute(e,t,i){return i===0?e.accessibilitySupport:i}}class SWe extends bn{constructor(){const e={insertSpace:!0,ignoreEmptyLines:!0};super(23,"comments",e,{"editor.comments.insertSpace":{type:"boolean",default:e.insertSpace,description:v("comments.insertSpace","Controls whether a space character is inserted when commenting.")},"editor.comments.ignoreEmptyLines":{type:"boolean",default:e.ignoreEmptyLines,description:v("comments.ignoreEmptyLines","Controls if empty lines should be ignored with toggle, add or remove actions for line comments.")}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return{insertSpace:Qe(t.insertSpace,this.defaultValue.insertSpace),ignoreEmptyLines:Qe(t.ignoreEmptyLines,this.defaultValue.ignoreEmptyLines)}}}function kWe(n){switch(n){case"blink":return 1;case"smooth":return 2;case"phase":return 3;case"expand":return 4;case"solid":return 5}}var Js;(function(n){n[n.Line=1]="Line",n[n.Block=2]="Block",n[n.Underline=3]="Underline",n[n.LineThin=4]="LineThin",n[n.BlockOutline=5]="BlockOutline",n[n.UnderlineThin=6]="UnderlineThin"})(Js||(Js={}));function LWe(n){switch(n){case"line":return Js.Line;case"block":return Js.Block;case"underline":return Js.Underline;case"line-thin":return Js.LineThin;case"block-outline":return Js.BlockOutline;case"underline-thin":return Js.UnderlineThin}}class xWe extends mE{constructor(){super(140)}compute(e,t,i){const s=["monaco-editor"];return t.get(39)&&s.push(t.get(39)),e.extraEditorClassName&&s.push(e.extraEditorClassName),t.get(73)==="default"?s.push("mouse-default"):t.get(73)==="copy"&&s.push("mouse-copy"),t.get(110)&&s.push("showUnused"),t.get(138)&&s.push("showDeprecated"),s.join(" ")}}class EWe extends Zt{constructor(){super(37,"emptySelectionClipboard",!0,{description:v("emptySelectionClipboard","Controls whether copying without a selection copies the current line.")})}compute(e,t,i){return i&&e.emptySelectionClipboard}}class DWe extends bn{constructor(){const e={cursorMoveOnType:!0,seedSearchStringFromSelection:"always",autoFindInSelection:"never",globalFindClipboard:!1,addExtraSpaceOnTop:!0,loop:!0};super(41,"find",e,{"editor.find.cursorMoveOnType":{type:"boolean",default:e.cursorMoveOnType,description:v("find.cursorMoveOnType","Controls whether the cursor should jump to find matches while typing.")},"editor.find.seedSearchStringFromSelection":{type:"string",enum:["never","always","selection"],default:e.seedSearchStringFromSelection,enumDescriptions:[v("editor.find.seedSearchStringFromSelection.never","Never seed search string from the editor selection."),v("editor.find.seedSearchStringFromSelection.always","Always seed search string from the editor selection, including word at cursor position."),v("editor.find.seedSearchStringFromSelection.selection","Only seed search string from the editor selection.")],description:v("find.seedSearchStringFromSelection","Controls whether the search string in the Find Widget is seeded from the editor selection.")},"editor.find.autoFindInSelection":{type:"string",enum:["never","always","multiline"],default:e.autoFindInSelection,enumDescriptions:[v("editor.find.autoFindInSelection.never","Never turn on Find in Selection automatically (default)."),v("editor.find.autoFindInSelection.always","Always turn on Find in Selection automatically."),v("editor.find.autoFindInSelection.multiline","Turn on Find in Selection automatically when multiple lines of content are selected.")],description:v("find.autoFindInSelection","Controls the condition for turning on Find in Selection automatically.")},"editor.find.globalFindClipboard":{type:"boolean",default:e.globalFindClipboard,description:v("find.globalFindClipboard","Controls whether the Find Widget should read or modify the shared find clipboard on macOS."),included:Gt},"editor.find.addExtraSpaceOnTop":{type:"boolean",default:e.addExtraSpaceOnTop,description:v("find.addExtraSpaceOnTop","Controls whether the Find Widget should add extra lines on top of the editor. When true, you can scroll beyond the first line when the Find Widget is visible.")},"editor.find.loop":{type:"boolean",default:e.loop,description:v("find.loop","Controls whether the search automatically restarts from the beginning (or the end) when no further matches can be found.")}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return{cursorMoveOnType:Qe(t.cursorMoveOnType,this.defaultValue.cursorMoveOnType),seedSearchStringFromSelection:typeof e.seedSearchStringFromSelection=="boolean"?e.seedSearchStringFromSelection?"always":"never":Un(t.seedSearchStringFromSelection,this.defaultValue.seedSearchStringFromSelection,["never","always","selection"]),autoFindInSelection:typeof e.autoFindInSelection=="boolean"?e.autoFindInSelection?"always":"never":Un(t.autoFindInSelection,this.defaultValue.autoFindInSelection,["never","always","multiline"]),globalFindClipboard:Qe(t.globalFindClipboard,this.defaultValue.globalFindClipboard),addExtraSpaceOnTop:Qe(t.addExtraSpaceOnTop,this.defaultValue.addExtraSpaceOnTop),loop:Qe(t.loop,this.defaultValue.loop)}}}class Oa extends bn{constructor(){super(51,"fontLigatures",Oa.OFF,{anyOf:[{type:"boolean",description:v("fontLigatures","Enables/Disables font ligatures ('calt' and 'liga' font features). Change this to a string for fine-grained control of the 'font-feature-settings' CSS property.")},{type:"string",description:v("fontFeatureSettings","Explicit 'font-feature-settings' CSS property. A boolean can be passed instead if one only needs to turn on/off ligatures.")}],description:v("fontLigaturesGeneral","Configures font ligatures or font features. Can be either a boolean to enable/disable ligatures or a string for the value of the CSS 'font-feature-settings' property."),default:!1})}validate(e){return typeof e>"u"?this.defaultValue:typeof e=="string"?e==="false"?Oa.OFF:e==="true"?Oa.ON:e:e?Oa.ON:Oa.OFF}}Oa.OFF='"liga" off, "calt" off';Oa.ON='"liga" on, "calt" on';class lu extends bn{constructor(){super(54,"fontVariations",lu.OFF,{anyOf:[{type:"boolean",description:v("fontVariations","Enables/Disables the translation from font-weight to font-variation-settings. Change this to a string for fine-grained control of the 'font-variation-settings' CSS property.")},{type:"string",description:v("fontVariationSettings","Explicit 'font-variation-settings' CSS property. A boolean can be passed instead if one only needs to translate font-weight to font-variation-settings.")}],description:v("fontVariationsGeneral","Configures font variations. Can be either a boolean to enable/disable the translation from font-weight to font-variation-settings or a string for the value of the CSS 'font-variation-settings' property."),default:!1})}validate(e){return typeof e>"u"?this.defaultValue:typeof e=="string"?e==="false"?lu.OFF:e==="true"?lu.TRANSLATE:e:e?lu.TRANSLATE:lu.OFF}compute(e,t,i){return e.fontInfo.fontVariationSettings}}lu.OFF="normal";lu.TRANSLATE="translate";class IWe extends mE{constructor(){super(50)}compute(e,t,i){return e.fontInfo}}class TWe extends NC{constructor(){super(52,"fontSize",na.fontSize,{type:"number",minimum:6,maximum:100,default:na.fontSize,description:v("fontSize","Controls the font size in pixels.")})}validate(e){const t=lc.float(e,this.defaultValue);return t===0?na.fontSize:lc.clamp(t,6,100)}compute(e,t,i){return e.fontInfo.fontSize}}class _h extends bn{constructor(){super(53,"fontWeight",na.fontWeight,{anyOf:[{type:"number",minimum:_h.MINIMUM_VALUE,maximum:_h.MAXIMUM_VALUE,errorMessage:v("fontWeightErrorMessage",'Only "normal" and "bold" keywords or numbers between 1 and 1000 are allowed.')},{type:"string",pattern:"^(normal|bold|1000|[1-9][0-9]{0,2})$"},{enum:_h.SUGGESTION_VALUES}],default:na.fontWeight,description:v("fontWeight",'Controls the font weight. Accepts "normal" and "bold" keywords or numbers between 1 and 1000.')})}validate(e){return e==="normal"||e==="bold"?e:String(Ii.clampedInt(e,na.fontWeight,_h.MINIMUM_VALUE,_h.MAXIMUM_VALUE))}}_h.SUGGESTION_VALUES=["normal","bold","100","200","300","400","500","600","700","800","900"];_h.MINIMUM_VALUE=1;_h.MAXIMUM_VALUE=1e3;class NWe extends bn{constructor(){const e={multiple:"peek",multipleDefinitions:"peek",multipleTypeDefinitions:"peek",multipleDeclarations:"peek",multipleImplementations:"peek",multipleReferences:"peek",alternativeDefinitionCommand:"editor.action.goToReferences",alternativeTypeDefinitionCommand:"editor.action.goToReferences",alternativeDeclarationCommand:"editor.action.goToReferences",alternativeImplementationCommand:"",alternativeReferenceCommand:""},t={type:"string",enum:["peek","gotoAndPeek","goto"],default:e.multiple,enumDescriptions:[v("editor.gotoLocation.multiple.peek","Show Peek view of the results (default)"),v("editor.gotoLocation.multiple.gotoAndPeek","Go to the primary result and show a Peek view"),v("editor.gotoLocation.multiple.goto","Go to the primary result and enable Peek-less navigation to others")]},i=["","editor.action.referenceSearch.trigger","editor.action.goToReferences","editor.action.peekImplementation","editor.action.goToImplementation","editor.action.peekTypeDefinition","editor.action.goToTypeDefinition","editor.action.peekDeclaration","editor.action.revealDeclaration","editor.action.peekDefinition","editor.action.revealDefinitionAside","editor.action.revealDefinition"];super(58,"gotoLocation",e,{"editor.gotoLocation.multiple":{deprecationMessage:v("editor.gotoLocation.multiple.deprecated","This setting is deprecated, please use separate settings like 'editor.editor.gotoLocation.multipleDefinitions' or 'editor.editor.gotoLocation.multipleImplementations' instead.")},"editor.gotoLocation.multipleDefinitions":{description:v("editor.editor.gotoLocation.multipleDefinitions","Controls the behavior the 'Go to Definition'-command when multiple target locations exist."),...t},"editor.gotoLocation.multipleTypeDefinitions":{description:v("editor.editor.gotoLocation.multipleTypeDefinitions","Controls the behavior the 'Go to Type Definition'-command when multiple target locations exist."),...t},"editor.gotoLocation.multipleDeclarations":{description:v("editor.editor.gotoLocation.multipleDeclarations","Controls the behavior the 'Go to Declaration'-command when multiple target locations exist."),...t},"editor.gotoLocation.multipleImplementations":{description:v("editor.editor.gotoLocation.multipleImplemenattions","Controls the behavior the 'Go to Implementations'-command when multiple target locations exist."),...t},"editor.gotoLocation.multipleReferences":{description:v("editor.editor.gotoLocation.multipleReferences","Controls the behavior the 'Go to References'-command when multiple target locations exist."),...t},"editor.gotoLocation.alternativeDefinitionCommand":{type:"string",default:e.alternativeDefinitionCommand,enum:i,description:v("alternativeDefinitionCommand","Alternative command id that is being executed when the result of 'Go to Definition' is the current location.")},"editor.gotoLocation.alternativeTypeDefinitionCommand":{type:"string",default:e.alternativeTypeDefinitionCommand,enum:i,description:v("alternativeTypeDefinitionCommand","Alternative command id that is being executed when the result of 'Go to Type Definition' is the current location.")},"editor.gotoLocation.alternativeDeclarationCommand":{type:"string",default:e.alternativeDeclarationCommand,enum:i,description:v("alternativeDeclarationCommand","Alternative command id that is being executed when the result of 'Go to Declaration' is the current location.")},"editor.gotoLocation.alternativeImplementationCommand":{type:"string",default:e.alternativeImplementationCommand,enum:i,description:v("alternativeImplementationCommand","Alternative command id that is being executed when the result of 'Go to Implementation' is the current location.")},"editor.gotoLocation.alternativeReferenceCommand":{type:"string",default:e.alternativeReferenceCommand,enum:i,description:v("alternativeReferenceCommand","Alternative command id that is being executed when the result of 'Go to Reference' is the current location.")}})}validate(e){var t,i,s,r,o;if(!e||typeof e!="object")return this.defaultValue;const a=e;return{multiple:Un(a.multiple,this.defaultValue.multiple,["peek","gotoAndPeek","goto"]),multipleDefinitions:(t=a.multipleDefinitions)!==null&&t!==void 0?t:Un(a.multipleDefinitions,"peek",["peek","gotoAndPeek","goto"]),multipleTypeDefinitions:(i=a.multipleTypeDefinitions)!==null&&i!==void 0?i:Un(a.multipleTypeDefinitions,"peek",["peek","gotoAndPeek","goto"]),multipleDeclarations:(s=a.multipleDeclarations)!==null&&s!==void 0?s:Un(a.multipleDeclarations,"peek",["peek","gotoAndPeek","goto"]),multipleImplementations:(r=a.multipleImplementations)!==null&&r!==void 0?r:Un(a.multipleImplementations,"peek",["peek","gotoAndPeek","goto"]),multipleReferences:(o=a.multipleReferences)!==null&&o!==void 0?o:Un(a.multipleReferences,"peek",["peek","gotoAndPeek","goto"]),alternativeDefinitionCommand:Ko.string(a.alternativeDefinitionCommand,this.defaultValue.alternativeDefinitionCommand),alternativeTypeDefinitionCommand:Ko.string(a.alternativeTypeDefinitionCommand,this.defaultValue.alternativeTypeDefinitionCommand),alternativeDeclarationCommand:Ko.string(a.alternativeDeclarationCommand,this.defaultValue.alternativeDeclarationCommand),alternativeImplementationCommand:Ko.string(a.alternativeImplementationCommand,this.defaultValue.alternativeImplementationCommand),alternativeReferenceCommand:Ko.string(a.alternativeReferenceCommand,this.defaultValue.alternativeReferenceCommand)}}}class AWe extends bn{constructor(){const e={enabled:!0,delay:300,hidingDelay:300,sticky:!0,above:!0};super(60,"hover",e,{"editor.hover.enabled":{type:"boolean",default:e.enabled,description:v("hover.enabled","Controls whether the hover is shown.")},"editor.hover.delay":{type:"number",default:e.delay,minimum:0,maximum:1e4,description:v("hover.delay","Controls the delay in milliseconds after which the hover is shown.")},"editor.hover.sticky":{type:"boolean",default:e.sticky,description:v("hover.sticky","Controls whether the hover should remain visible when mouse is moved over it.")},"editor.hover.hidingDelay":{type:"integer",minimum:0,default:e.hidingDelay,description:v("hover.hidingDelay","Controls the delay in milliseconds after which the hover is hidden. Requires `editor.hover.sticky` to be enabled.")},"editor.hover.above":{type:"boolean",default:e.above,description:v("hover.above","Prefer showing hovers above the line, if there's space.")}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return{enabled:Qe(t.enabled,this.defaultValue.enabled),delay:Ii.clampedInt(t.delay,this.defaultValue.delay,0,1e4),sticky:Qe(t.sticky,this.defaultValue.sticky),hidingDelay:Ii.clampedInt(t.hidingDelay,this.defaultValue.hidingDelay,0,6e5),above:Qe(t.above,this.defaultValue.above)}}}class Cb extends mE{constructor(){super(143)}compute(e,t,i){return Cb.computeLayout(t,{memory:e.memory,outerWidth:e.outerWidth,outerHeight:e.outerHeight,isDominatedByLongLines:e.isDominatedByLongLines,lineHeight:e.fontInfo.lineHeight,viewLineCount:e.viewLineCount,lineNumbersDigitCount:e.lineNumbersDigitCount,typicalHalfwidthCharacterWidth:e.fontInfo.typicalHalfwidthCharacterWidth,maxDigitWidth:e.fontInfo.maxDigitWidth,pixelRatio:e.pixelRatio,glyphMarginDecorationLaneCount:e.glyphMarginDecorationLaneCount})}static computeContainedMinimapLineCount(e){const t=e.height/e.lineHeight,i=Math.floor(e.paddingTop/e.lineHeight);let s=Math.floor(e.paddingBottom/e.lineHeight);e.scrollBeyondLastLine&&(s=Math.max(s,t-1));const r=(i+e.viewLineCount+s)/(e.pixelRatio*e.height),o=Math.floor(e.viewLineCount/r);return{typicalViewportLineCount:t,extraLinesBeforeFirstLine:i,extraLinesBeyondLastLine:s,desiredRatio:r,minimapLineCount:o}}static _computeMinimapLayout(e,t){const i=e.outerWidth,s=e.outerHeight,r=e.pixelRatio;if(!e.minimap.enabled)return{renderMinimap:0,minimapLeft:0,minimapWidth:0,minimapHeightIsEditorHeight:!1,minimapIsSampling:!1,minimapScale:1,minimapLineHeight:1,minimapCanvasInnerWidth:0,minimapCanvasInnerHeight:Math.floor(r*s),minimapCanvasOuterWidth:0,minimapCanvasOuterHeight:s};const o=t.stableMinimapLayoutInput,a=o&&e.outerHeight===o.outerHeight&&e.lineHeight===o.lineHeight&&e.typicalHalfwidthCharacterWidth===o.typicalHalfwidthCharacterWidth&&e.pixelRatio===o.pixelRatio&&e.scrollBeyondLastLine===o.scrollBeyondLastLine&&e.paddingTop===o.paddingTop&&e.paddingBottom===o.paddingBottom&&e.minimap.enabled===o.minimap.enabled&&e.minimap.side===o.minimap.side&&e.minimap.size===o.minimap.size&&e.minimap.showSlider===o.minimap.showSlider&&e.minimap.renderCharacters===o.minimap.renderCharacters&&e.minimap.maxColumn===o.minimap.maxColumn&&e.minimap.scale===o.minimap.scale&&e.verticalScrollbarWidth===o.verticalScrollbarWidth&&e.isViewportWrapping===o.isViewportWrapping,l=e.lineHeight,c=e.typicalHalfwidthCharacterWidth,u=e.scrollBeyondLastLine,h=e.minimap.renderCharacters;let d=r>=2?Math.round(e.minimap.scale*2):e.minimap.scale;const f=e.minimap.maxColumn,g=e.minimap.size,p=e.minimap.side,m=e.verticalScrollbarWidth,_=e.viewLineCount,b=e.remainingWidth,y=e.isViewportWrapping,w=h?2:3;let S=Math.floor(r*s);const E=S/r;let L=!1,k=!1,x=w*d,I=d/r,N=1;if(g==="fill"||g==="fit"){const{typicalViewportLineCount:Z,extraLinesBeforeFirstLine:q,extraLinesBeyondLastLine:re,desiredRatio:G,minimapLineCount:W}=Cb.computeContainedMinimapLineCount({viewLineCount:_,scrollBeyondLastLine:u,paddingTop:e.paddingTop,paddingBottom:e.paddingBottom,height:s,lineHeight:l,pixelRatio:r});if(_/W>1)L=!0,k=!0,d=1,x=1,I=d/r;else{let X=!1,z=d+1;if(g==="fit"){const le=Math.ceil((q+_+re)*x);y&&a&&b<=t.stableFitRemainingWidth?(X=!0,z=t.stableFitMaxMinimapScale):X=le>S}if(g==="fill"||X){L=!0;const le=d;x=Math.min(l*r,Math.max(1,Math.floor(1/G))),y&&a&&b<=t.stableFitRemainingWidth&&(z=t.stableFitMaxMinimapScale),d=Math.min(z,Math.max(1,Math.floor(x/w))),d>le&&(N=Math.min(2,d/le)),I=d/r/N,S=Math.ceil(Math.max(Z,q+_+re)*x),y?(t.stableMinimapLayoutInput=e,t.stableFitRemainingWidth=b,t.stableFitMaxMinimapScale=d):(t.stableMinimapLayoutInput=null,t.stableFitRemainingWidth=0)}}}const T=Math.floor(f*I),P=Math.min(T,Math.max(0,Math.floor((b-m-2)*I/(c+I)))+Pg);let R=Math.floor(r*P);const F=R/r;R=Math.floor(R*N);const j=h?1:2,K=p==="left"?0:i-P-m;return{renderMinimap:j,minimapLeft:K,minimapWidth:P,minimapHeightIsEditorHeight:L,minimapIsSampling:k,minimapScale:d,minimapLineHeight:x,minimapCanvasInnerWidth:R,minimapCanvasInnerHeight:S,minimapCanvasOuterWidth:F,minimapCanvasOuterHeight:E}}static computeLayout(e,t){const i=t.outerWidth|0,s=t.outerHeight|0,r=t.lineHeight|0,o=t.lineNumbersDigitCount|0,a=t.typicalHalfwidthCharacterWidth,l=t.maxDigitWidth,c=t.pixelRatio,u=t.viewLineCount,h=e.get(135),d=h==="inherit"?e.get(134):h,f=d==="inherit"?e.get(130):d,g=e.get(133),p=t.isDominatedByLongLines,m=e.get(57),_=e.get(67).renderType!==0,b=e.get(68),y=e.get(104),w=e.get(83),S=e.get(72),E=e.get(102),L=E.verticalScrollbarSize,k=E.verticalHasArrows,x=E.arrowSize,I=E.horizontalScrollbarSize,N=e.get(43),T=e.get(109)!=="never";let P=e.get(65);N&&T&&(P+=16);let R=0;if(_){const be=Math.max(o,b);R=Math.round(be*l)}let F=0;m&&(F=r*t.glyphMarginDecorationLaneCount);let j=0,K=j+F,Z=K+R,q=Z+P;const re=i-F-R-P;let G=!1,W=!1,Y=-1;d==="inherit"&&p?(G=!0,W=!0):f==="on"||f==="bounded"?W=!0:f==="wordWrapColumn"&&(Y=g);const X=Cb._computeMinimapLayout({outerWidth:i,outerHeight:s,lineHeight:r,typicalHalfwidthCharacterWidth:a,pixelRatio:c,scrollBeyondLastLine:y,paddingTop:w.top,paddingBottom:w.bottom,minimap:S,verticalScrollbarWidth:L,viewLineCount:u,remainingWidth:re,isViewportWrapping:W},t.memory||new dpe);X.renderMinimap!==0&&X.minimapLeft===0&&(j+=X.minimapWidth,K+=X.minimapWidth,Z+=X.minimapWidth,q+=X.minimapWidth);const z=re-X.minimapWidth,le=Math.max(1,Math.floor((z-L-2)/a)),J=k?x:0;return W&&(Y=Math.max(1,le),f==="bounded"&&(Y=Math.min(Y,g))),{width:i,height:s,glyphMarginLeft:j,glyphMarginWidth:F,glyphMarginDecorationLaneCount:t.glyphMarginDecorationLaneCount,lineNumbersLeft:K,lineNumbersWidth:R,decorationsLeft:Z,decorationsWidth:P,contentLeft:q,contentWidth:z,minimap:X,viewportColumn:le,isWordWrapMinified:G,isViewportWrapping:W,wrappingColumn:Y,verticalScrollbarWidth:L,horizontalScrollbarHeight:I,overviewRuler:{top:J,width:L,height:s-2*J,right:0}}}}class PWe extends bn{constructor(){super(137,"wrappingStrategy","simple",{"editor.wrappingStrategy":{enumDescriptions:[v("wrappingStrategy.simple","Assumes that all characters are of the same width. This is a fast algorithm that works correctly for monospace fonts and certain scripts (like Latin characters) where glyphs are of equal width."),v("wrappingStrategy.advanced","Delegates wrapping points computation to the browser. This is a slow algorithm, that might cause freezes for large files, but it works correctly in all cases.")],type:"string",enum:["simple","advanced"],default:"simple",description:v("wrappingStrategy","Controls the algorithm that computes wrapping points. Note that when in accessibility mode, advanced will be used for the best experience.")}})}validate(e){return Un(e,"simple",["simple","advanced"])}compute(e,t,i){return t.get(2)===2?"advanced":i}}var Go;(function(n){n.Off="off",n.OnCode="onCode",n.On="on"})(Go||(Go={}));class RWe extends bn{constructor(){const e={enabled:!0,experimental:{showAiIcon:Go.Off}};super(64,"lightbulb",e,{"editor.lightbulb.enabled":{type:"boolean",default:e.enabled,description:v("codeActions","Enables the Code Action lightbulb in the editor.")},"editor.lightbulb.experimental.showAiIcon":{type:"string",enum:[Go.Off,Go.OnCode,Go.On],default:e.experimental.showAiIcon,enumDescriptions:[v("editor.lightbulb.showAiIcon.off","Don not show the AI icon."),v("editor.lightbulb.showAiIcon.onCode","Show an AI icon when the code action menu contains an AI action, but only on code."),v("editor.lightbulb.showAiIcon.on","Show an AI icon when the code action menu contains an AI action, on code and empty lines.")],description:v("showAiIcons","Show an AI icon along with the lightbulb when the code action menu contains an AI action.")}})}validate(e){var t,i;if(!e||typeof e!="object")return this.defaultValue;const s=e;return{enabled:Qe(s.enabled,this.defaultValue.enabled),experimental:{showAiIcon:Un((t=s.experimental)===null||t===void 0?void 0:t.showAiIcon,(i=this.defaultValue.experimental)===null||i===void 0?void 0:i.showAiIcon,[Go.Off,Go.OnCode,Go.On])}}}}class MWe extends bn{constructor(){const e={enabled:!1,maxLineCount:5,defaultModel:"outlineModel",scrollWithEditor:!0};super(114,"stickyScroll",e,{"editor.stickyScroll.enabled":{type:"boolean",default:e.enabled,description:v("editor.stickyScroll.enabled","Shows the nested current scopes during the scroll at the top of the editor.")},"editor.stickyScroll.maxLineCount":{type:"number",default:e.maxLineCount,minimum:1,maximum:10,description:v("editor.stickyScroll.maxLineCount","Defines the maximum number of sticky lines to show.")},"editor.stickyScroll.defaultModel":{type:"string",enum:["outlineModel","foldingProviderModel","indentationModel"],default:e.defaultModel,description:v("editor.stickyScroll.defaultModel","Defines the model to use for determining which lines to stick. If the outline model does not exist, it will fall back on the folding provider model which falls back on the indentation model. This order is respected in all three cases.")},"editor.stickyScroll.scrollWithEditor":{type:"boolean",default:e.scrollWithEditor,description:v("editor.stickyScroll.scrollWithEditor","Enable scrolling of Sticky Scroll with the editor's horizontal scrollbar.")}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return{enabled:Qe(t.enabled,this.defaultValue.enabled),maxLineCount:Ii.clampedInt(t.maxLineCount,this.defaultValue.maxLineCount,1,10),defaultModel:Un(t.defaultModel,this.defaultValue.defaultModel,["outlineModel","foldingProviderModel","indentationModel"]),scrollWithEditor:Qe(t.scrollWithEditor,this.defaultValue.scrollWithEditor)}}}class OWe extends bn{constructor(){const e={enabled:"on",fontSize:0,fontFamily:"",padding:!1};super(139,"inlayHints",e,{"editor.inlayHints.enabled":{type:"string",default:e.enabled,description:v("inlayHints.enable","Enables the inlay hints in the editor."),enum:["on","onUnlessPressed","offUnlessPressed","off"],markdownEnumDescriptions:[v("editor.inlayHints.on","Inlay hints are enabled"),v("editor.inlayHints.onUnlessPressed","Inlay hints are showing by default and hide when holding {0}",Gt?"Ctrl+Option":"Ctrl+Alt"),v("editor.inlayHints.offUnlessPressed","Inlay hints are hidden by default and show when holding {0}",Gt?"Ctrl+Option":"Ctrl+Alt"),v("editor.inlayHints.off","Inlay hints are disabled")]},"editor.inlayHints.fontSize":{type:"number",default:e.fontSize,markdownDescription:v("inlayHints.fontSize","Controls font size of inlay hints in the editor. As default the {0} is used when the configured value is less than {1} or greater than the editor font size.","`#editor.fontSize#`","`5`")},"editor.inlayHints.fontFamily":{type:"string",default:e.fontFamily,markdownDescription:v("inlayHints.fontFamily","Controls font family of inlay hints in the editor. When set to empty, the {0} is used.","`#editor.fontFamily#`")},"editor.inlayHints.padding":{type:"boolean",default:e.padding,description:v("inlayHints.padding","Enables the padding around the inlay hints in the editor.")}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return typeof t.enabled=="boolean"&&(t.enabled=t.enabled?"on":"off"),{enabled:Un(t.enabled,this.defaultValue.enabled,["on","off","offUnlessPressed","onUnlessPressed"]),fontSize:Ii.clampedInt(t.fontSize,this.defaultValue.fontSize,0,100),fontFamily:Ko.string(t.fontFamily,this.defaultValue.fontFamily),padding:Qe(t.padding,this.defaultValue.padding)}}}class FWe extends bn{constructor(){super(65,"lineDecorationsWidth",10)}validate(e){return typeof e=="string"&&/^\d+(\.\d+)?ch$/.test(e)?-parseFloat(e.substring(0,e.length-2)):Ii.clampedInt(e,this.defaultValue,0,1e3)}compute(e,t,i){return i<0?Ii.clampedInt(-i*e.fontInfo.typicalHalfwidthCharacterWidth,this.defaultValue,0,1e3):i}}class BWe extends lc{constructor(){super(66,"lineHeight",na.lineHeight,e=>lc.clamp(e,0,150),{markdownDescription:v("lineHeight",`Controls the line height. + - Use 0 to automatically compute the line height from the font size. + - Values between 0 and 8 will be used as a multiplier with the font size. + - Values greater than or equal to 8 will be used as effective values.`)})}compute(e,t,i){return e.fontInfo.lineHeight}}class WWe extends bn{constructor(){const e={enabled:!0,size:"proportional",side:"right",showSlider:"mouseover",autohide:!1,renderCharacters:!0,maxColumn:120,scale:1};super(72,"minimap",e,{"editor.minimap.enabled":{type:"boolean",default:e.enabled,description:v("minimap.enabled","Controls whether the minimap is shown.")},"editor.minimap.autohide":{type:"boolean",default:e.autohide,description:v("minimap.autohide","Controls whether the minimap is hidden automatically.")},"editor.minimap.size":{type:"string",enum:["proportional","fill","fit"],enumDescriptions:[v("minimap.size.proportional","The minimap has the same size as the editor contents (and might scroll)."),v("minimap.size.fill","The minimap will stretch or shrink as necessary to fill the height of the editor (no scrolling)."),v("minimap.size.fit","The minimap will shrink as necessary to never be larger than the editor (no scrolling).")],default:e.size,description:v("minimap.size","Controls the size of the minimap.")},"editor.minimap.side":{type:"string",enum:["left","right"],default:e.side,description:v("minimap.side","Controls the side where to render the minimap.")},"editor.minimap.showSlider":{type:"string",enum:["always","mouseover"],default:e.showSlider,description:v("minimap.showSlider","Controls when the minimap slider is shown.")},"editor.minimap.scale":{type:"number",default:e.scale,minimum:1,maximum:3,enum:[1,2,3],description:v("minimap.scale","Scale of content drawn in the minimap: 1, 2 or 3.")},"editor.minimap.renderCharacters":{type:"boolean",default:e.renderCharacters,description:v("minimap.renderCharacters","Render the actual characters on a line as opposed to color blocks.")},"editor.minimap.maxColumn":{type:"number",default:e.maxColumn,description:v("minimap.maxColumn","Limit the width of the minimap to render at most a certain number of columns.")}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return{enabled:Qe(t.enabled,this.defaultValue.enabled),autohide:Qe(t.autohide,this.defaultValue.autohide),size:Un(t.size,this.defaultValue.size,["proportional","fill","fit"]),side:Un(t.side,this.defaultValue.side,["right","left"]),showSlider:Un(t.showSlider,this.defaultValue.showSlider,["always","mouseover"]),renderCharacters:Qe(t.renderCharacters,this.defaultValue.renderCharacters),scale:Ii.clampedInt(t.scale,1,1,3),maxColumn:Ii.clampedInt(t.maxColumn,this.defaultValue.maxColumn,1,1e4)}}}function VWe(n){return n==="ctrlCmd"?Gt?"metaKey":"ctrlKey":"altKey"}class HWe extends bn{constructor(){super(83,"padding",{top:0,bottom:0},{"editor.padding.top":{type:"number",default:0,minimum:0,maximum:1e3,description:v("padding.top","Controls the amount of space between the top edge of the editor and the first line.")},"editor.padding.bottom":{type:"number",default:0,minimum:0,maximum:1e3,description:v("padding.bottom","Controls the amount of space between the bottom edge of the editor and the last line.")}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return{top:Ii.clampedInt(t.top,0,0,1e3),bottom:Ii.clampedInt(t.bottom,0,0,1e3)}}}class $We extends bn{constructor(){const e={enabled:!0,cycle:!0};super(85,"parameterHints",e,{"editor.parameterHints.enabled":{type:"boolean",default:e.enabled,description:v("parameterHints.enabled","Enables a pop-up that shows parameter documentation and type information as you type.")},"editor.parameterHints.cycle":{type:"boolean",default:e.cycle,description:v("parameterHints.cycle","Controls whether the parameter hints menu cycles or closes when reaching the end of the list.")}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return{enabled:Qe(t.enabled,this.defaultValue.enabled),cycle:Qe(t.cycle,this.defaultValue.cycle)}}}class zWe extends mE{constructor(){super(141)}compute(e,t,i){return e.pixelRatio}}class UWe extends bn{constructor(){const e={other:"on",comments:"off",strings:"off"},t=[{type:"boolean"},{type:"string",enum:["on","inline","off"],enumDescriptions:[v("on","Quick suggestions show inside the suggest widget"),v("inline","Quick suggestions show as ghost text"),v("off","Quick suggestions are disabled")]}];super(88,"quickSuggestions",e,{type:"object",additionalProperties:!1,properties:{strings:{anyOf:t,default:e.strings,description:v("quickSuggestions.strings","Enable quick suggestions inside strings.")},comments:{anyOf:t,default:e.comments,description:v("quickSuggestions.comments","Enable quick suggestions inside comments.")},other:{anyOf:t,default:e.other,description:v("quickSuggestions.other","Enable quick suggestions outside of strings and comments.")}},default:e,markdownDescription:v("quickSuggestions","Controls whether suggestions should automatically show up while typing. This can be controlled for typing in comments, strings, and other code. Quick suggestion can be configured to show as ghost text or with the suggest widget. Also be aware of the '{0}'-setting which controls if suggestions are triggered by special characters.","#editor.suggestOnTriggerCharacters#")}),this.defaultValue=e}validate(e){if(typeof e=="boolean"){const c=e?"on":"off";return{comments:c,strings:c,other:c}}if(!e||typeof e!="object")return this.defaultValue;const{other:t,comments:i,strings:s}=e,r=["on","inline","off"];let o,a,l;return typeof t=="boolean"?o=t?"on":"off":o=Un(t,this.defaultValue.other,r),typeof i=="boolean"?a=i?"on":"off":a=Un(i,this.defaultValue.comments,r),typeof s=="boolean"?l=s?"on":"off":l=Un(s,this.defaultValue.strings,r),{other:o,comments:a,strings:l}}}class jWe extends bn{constructor(){super(67,"lineNumbers",{renderType:1,renderFn:null},{type:"string",enum:["off","on","relative","interval"],enumDescriptions:[v("lineNumbers.off","Line numbers are not rendered."),v("lineNumbers.on","Line numbers are rendered as absolute number."),v("lineNumbers.relative","Line numbers are rendered as distance in lines to cursor position."),v("lineNumbers.interval","Line numbers are rendered every 10 lines.")],default:"on",description:v("lineNumbers","Controls the display of line numbers.")})}validate(e){let t=this.defaultValue.renderType,i=this.defaultValue.renderFn;return typeof e<"u"&&(typeof e=="function"?(t=4,i=e):e==="interval"?t=3:e==="relative"?t=2:e==="on"?t=1:t=0),{renderType:t,renderFn:i}}}function GA(n){const e=n.get(97);return e==="editable"?n.get(90):e!=="on"}class qWe extends bn{constructor(){const e=[],t={type:"number",description:v("rulers.size","Number of monospace characters at which this editor ruler will render.")};super(101,"rulers",e,{type:"array",items:{anyOf:[t,{type:["object"],properties:{column:t,color:{type:"string",description:v("rulers.color","Color of this editor ruler."),format:"color-hex"}}}]},default:e,description:v("rulers","Render vertical rulers after a certain number of monospace characters. Use multiple values for multiple rulers. No rulers are drawn if array is empty.")})}validate(e){if(Array.isArray(e)){const t=[];for(const i of e)if(typeof i=="number")t.push({column:Ii.clampedInt(i,0,0,1e4),color:null});else if(i&&typeof i=="object"){const s=i;t.push({column:Ii.clampedInt(s.column,0,0,1e4),color:s.color})}return t.sort((i,s)=>i.column-s.column),t}return this.defaultValue}}class KWe extends bn{constructor(){super(91,"readOnlyMessage",void 0)}validate(e){return!e||typeof e!="object"?this.defaultValue:e}}function JJ(n,e){if(typeof n!="string")return e;switch(n){case"hidden":return 2;case"visible":return 3;default:return 1}}let GWe=class extends bn{constructor(){const e={vertical:1,horizontal:1,arrowSize:11,useShadows:!0,verticalHasArrows:!1,horizontalHasArrows:!1,horizontalScrollbarSize:12,horizontalSliderSize:12,verticalScrollbarSize:14,verticalSliderSize:14,handleMouseWheel:!0,alwaysConsumeMouseWheel:!0,scrollByPage:!1,ignoreHorizontalScrollbarInContentHeight:!1};super(102,"scrollbar",e,{"editor.scrollbar.vertical":{type:"string",enum:["auto","visible","hidden"],enumDescriptions:[v("scrollbar.vertical.auto","The vertical scrollbar will be visible only when necessary."),v("scrollbar.vertical.visible","The vertical scrollbar will always be visible."),v("scrollbar.vertical.fit","The vertical scrollbar will always be hidden.")],default:"auto",description:v("scrollbar.vertical","Controls the visibility of the vertical scrollbar.")},"editor.scrollbar.horizontal":{type:"string",enum:["auto","visible","hidden"],enumDescriptions:[v("scrollbar.horizontal.auto","The horizontal scrollbar will be visible only when necessary."),v("scrollbar.horizontal.visible","The horizontal scrollbar will always be visible."),v("scrollbar.horizontal.fit","The horizontal scrollbar will always be hidden.")],default:"auto",description:v("scrollbar.horizontal","Controls the visibility of the horizontal scrollbar.")},"editor.scrollbar.verticalScrollbarSize":{type:"number",default:e.verticalScrollbarSize,description:v("scrollbar.verticalScrollbarSize","The width of the vertical scrollbar.")},"editor.scrollbar.horizontalScrollbarSize":{type:"number",default:e.horizontalScrollbarSize,description:v("scrollbar.horizontalScrollbarSize","The height of the horizontal scrollbar.")},"editor.scrollbar.scrollByPage":{type:"boolean",default:e.scrollByPage,description:v("scrollbar.scrollByPage","Controls whether clicks scroll by page or jump to click position.")},"editor.scrollbar.ignoreHorizontalScrollbarInContentHeight":{type:"boolean",default:e.ignoreHorizontalScrollbarInContentHeight,description:v("scrollbar.ignoreHorizontalScrollbarInContentHeight","When set, the horizontal scrollbar will not increase the size of the editor's content.")}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e,i=Ii.clampedInt(t.horizontalScrollbarSize,this.defaultValue.horizontalScrollbarSize,0,1e3),s=Ii.clampedInt(t.verticalScrollbarSize,this.defaultValue.verticalScrollbarSize,0,1e3);return{arrowSize:Ii.clampedInt(t.arrowSize,this.defaultValue.arrowSize,0,1e3),vertical:JJ(t.vertical,this.defaultValue.vertical),horizontal:JJ(t.horizontal,this.defaultValue.horizontal),useShadows:Qe(t.useShadows,this.defaultValue.useShadows),verticalHasArrows:Qe(t.verticalHasArrows,this.defaultValue.verticalHasArrows),horizontalHasArrows:Qe(t.horizontalHasArrows,this.defaultValue.horizontalHasArrows),handleMouseWheel:Qe(t.handleMouseWheel,this.defaultValue.handleMouseWheel),alwaysConsumeMouseWheel:Qe(t.alwaysConsumeMouseWheel,this.defaultValue.alwaysConsumeMouseWheel),horizontalScrollbarSize:i,horizontalSliderSize:Ii.clampedInt(t.horizontalSliderSize,i,0,1e3),verticalScrollbarSize:s,verticalSliderSize:Ii.clampedInt(t.verticalSliderSize,s,0,1e3),scrollByPage:Qe(t.scrollByPage,this.defaultValue.scrollByPage),ignoreHorizontalScrollbarInContentHeight:Qe(t.ignoreHorizontalScrollbarInContentHeight,this.defaultValue.ignoreHorizontalScrollbarInContentHeight)}}};const Ea="inUntrustedWorkspace",Eo={allowedCharacters:"editor.unicodeHighlight.allowedCharacters",invisibleCharacters:"editor.unicodeHighlight.invisibleCharacters",nonBasicASCII:"editor.unicodeHighlight.nonBasicASCII",ambiguousCharacters:"editor.unicodeHighlight.ambiguousCharacters",includeComments:"editor.unicodeHighlight.includeComments",includeStrings:"editor.unicodeHighlight.includeStrings",allowedLocales:"editor.unicodeHighlight.allowedLocales"};class YWe extends bn{constructor(){const e={nonBasicASCII:Ea,invisibleCharacters:!0,ambiguousCharacters:!0,includeComments:Ea,includeStrings:!0,allowedCharacters:{},allowedLocales:{_os:!0,_vscode:!0}};super(124,"unicodeHighlight",e,{[Eo.nonBasicASCII]:{restricted:!0,type:["boolean","string"],enum:[!0,!1,Ea],default:e.nonBasicASCII,description:v("unicodeHighlight.nonBasicASCII","Controls whether all non-basic ASCII characters are highlighted. Only characters between U+0020 and U+007E, tab, line-feed and carriage-return are considered basic ASCII.")},[Eo.invisibleCharacters]:{restricted:!0,type:"boolean",default:e.invisibleCharacters,description:v("unicodeHighlight.invisibleCharacters","Controls whether characters that just reserve space or have no width at all are highlighted.")},[Eo.ambiguousCharacters]:{restricted:!0,type:"boolean",default:e.ambiguousCharacters,description:v("unicodeHighlight.ambiguousCharacters","Controls whether characters are highlighted that can be confused with basic ASCII characters, except those that are common in the current user locale.")},[Eo.includeComments]:{restricted:!0,type:["boolean","string"],enum:[!0,!1,Ea],default:e.includeComments,description:v("unicodeHighlight.includeComments","Controls whether characters in comments should also be subject to Unicode highlighting.")},[Eo.includeStrings]:{restricted:!0,type:["boolean","string"],enum:[!0,!1,Ea],default:e.includeStrings,description:v("unicodeHighlight.includeStrings","Controls whether characters in strings should also be subject to Unicode highlighting.")},[Eo.allowedCharacters]:{restricted:!0,type:"object",default:e.allowedCharacters,description:v("unicodeHighlight.allowedCharacters","Defines allowed characters that are not being highlighted."),additionalProperties:{type:"boolean"}},[Eo.allowedLocales]:{restricted:!0,type:"object",additionalProperties:{type:"boolean"},default:e.allowedLocales,description:v("unicodeHighlight.allowedLocales","Unicode characters that are common in allowed locales are not being highlighted.")}})}applyUpdate(e,t){let i=!1;t.allowedCharacters&&e&&(Ya(e.allowedCharacters,t.allowedCharacters)||(e={...e,allowedCharacters:t.allowedCharacters},i=!0)),t.allowedLocales&&e&&(Ya(e.allowedLocales,t.allowedLocales)||(e={...e,allowedLocales:t.allowedLocales},i=!0));const s=super.applyUpdate(e,t);return i?new JS(s.newValue,!0):s}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return{nonBasicASCII:wb(t.nonBasicASCII,Ea,[!0,!1,Ea]),invisibleCharacters:Qe(t.invisibleCharacters,this.defaultValue.invisibleCharacters),ambiguousCharacters:Qe(t.ambiguousCharacters,this.defaultValue.ambiguousCharacters),includeComments:wb(t.includeComments,Ea,[!0,!1,Ea]),includeStrings:wb(t.includeStrings,Ea,[!0,!1,Ea]),allowedCharacters:this.validateBooleanMap(e.allowedCharacters,this.defaultValue.allowedCharacters),allowedLocales:this.validateBooleanMap(e.allowedLocales,this.defaultValue.allowedLocales)}}validateBooleanMap(e,t){if(typeof e!="object"||!e)return t;const i={};for(const[s,r]of Object.entries(e))r===!0&&(i[s]=!0);return i}}class ZWe extends bn{constructor(){const e={enabled:!0,mode:"subwordSmart",showToolbar:"onHover",suppressSuggestions:!1,keepOnBlur:!1};super(62,"inlineSuggest",e,{"editor.inlineSuggest.enabled":{type:"boolean",default:e.enabled,description:v("inlineSuggest.enabled","Controls whether to automatically show inline suggestions in the editor.")},"editor.inlineSuggest.showToolbar":{type:"string",default:e.showToolbar,enum:["always","onHover","never"],enumDescriptions:[v("inlineSuggest.showToolbar.always","Show the inline suggestion toolbar whenever an inline suggestion is shown."),v("inlineSuggest.showToolbar.onHover","Show the inline suggestion toolbar when hovering over an inline suggestion."),v("inlineSuggest.showToolbar.never","Never show the inline suggestion toolbar.")],description:v("inlineSuggest.showToolbar","Controls when to show the inline suggestion toolbar.")},"editor.inlineSuggest.suppressSuggestions":{type:"boolean",default:e.suppressSuggestions,description:v("inlineSuggest.suppressSuggestions","Controls how inline suggestions interact with the suggest widget. If enabled, the suggest widget is not shown automatically when inline suggestions are available.")}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return{enabled:Qe(t.enabled,this.defaultValue.enabled),mode:Un(t.mode,this.defaultValue.mode,["prefix","subword","subwordSmart"]),showToolbar:Un(t.showToolbar,this.defaultValue.showToolbar,["always","onHover","never"]),suppressSuggestions:Qe(t.suppressSuggestions,this.defaultValue.suppressSuggestions),keepOnBlur:Qe(t.keepOnBlur,this.defaultValue.keepOnBlur)}}}class XWe extends bn{constructor(){const e={enabled:Lr.bracketPairColorizationOptions.enabled,independentColorPoolPerBracketType:Lr.bracketPairColorizationOptions.independentColorPoolPerBracketType};super(15,"bracketPairColorization",e,{"editor.bracketPairColorization.enabled":{type:"boolean",default:e.enabled,markdownDescription:v("bracketPairColorization.enabled","Controls whether bracket pair colorization is enabled or not. Use {0} to override the bracket highlight colors.","`#workbench.colorCustomizations#`")},"editor.bracketPairColorization.independentColorPoolPerBracketType":{type:"boolean",default:e.independentColorPoolPerBracketType,description:v("bracketPairColorization.independentColorPoolPerBracketType","Controls whether each bracket type has its own independent color pool.")}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return{enabled:Qe(t.enabled,this.defaultValue.enabled),independentColorPoolPerBracketType:Qe(t.independentColorPoolPerBracketType,this.defaultValue.independentColorPoolPerBracketType)}}}class QWe extends bn{constructor(){const e={bracketPairs:!1,bracketPairsHorizontal:"active",highlightActiveBracketPair:!0,indentation:!0,highlightActiveIndentation:!0};super(16,"guides",e,{"editor.guides.bracketPairs":{type:["boolean","string"],enum:[!0,"active",!1],enumDescriptions:[v("editor.guides.bracketPairs.true","Enables bracket pair guides."),v("editor.guides.bracketPairs.active","Enables bracket pair guides only for the active bracket pair."),v("editor.guides.bracketPairs.false","Disables bracket pair guides.")],default:e.bracketPairs,description:v("editor.guides.bracketPairs","Controls whether bracket pair guides are enabled or not.")},"editor.guides.bracketPairsHorizontal":{type:["boolean","string"],enum:[!0,"active",!1],enumDescriptions:[v("editor.guides.bracketPairsHorizontal.true","Enables horizontal guides as addition to vertical bracket pair guides."),v("editor.guides.bracketPairsHorizontal.active","Enables horizontal guides only for the active bracket pair."),v("editor.guides.bracketPairsHorizontal.false","Disables horizontal bracket pair guides.")],default:e.bracketPairsHorizontal,description:v("editor.guides.bracketPairsHorizontal","Controls whether horizontal bracket pair guides are enabled or not.")},"editor.guides.highlightActiveBracketPair":{type:"boolean",default:e.highlightActiveBracketPair,description:v("editor.guides.highlightActiveBracketPair","Controls whether the editor should highlight the active bracket pair.")},"editor.guides.indentation":{type:"boolean",default:e.indentation,description:v("editor.guides.indentation","Controls whether the editor should render indent guides.")},"editor.guides.highlightActiveIndentation":{type:["boolean","string"],enum:[!0,"always",!1],enumDescriptions:[v("editor.guides.highlightActiveIndentation.true","Highlights the active indent guide."),v("editor.guides.highlightActiveIndentation.always","Highlights the active indent guide even if bracket guides are highlighted."),v("editor.guides.highlightActiveIndentation.false","Do not highlight the active indent guide.")],default:e.highlightActiveIndentation,description:v("editor.guides.highlightActiveIndentation","Controls whether the editor should highlight the active indent guide.")}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return{bracketPairs:wb(t.bracketPairs,this.defaultValue.bracketPairs,[!0,!1,"active"]),bracketPairsHorizontal:wb(t.bracketPairsHorizontal,this.defaultValue.bracketPairsHorizontal,[!0,!1,"active"]),highlightActiveBracketPair:Qe(t.highlightActiveBracketPair,this.defaultValue.highlightActiveBracketPair),indentation:Qe(t.indentation,this.defaultValue.indentation),highlightActiveIndentation:wb(t.highlightActiveIndentation,this.defaultValue.highlightActiveIndentation,[!0,!1,"always"])}}}function wb(n,e,t){const i=t.indexOf(n);return i===-1?e:t[i]}class JWe extends bn{constructor(){const e={insertMode:"insert",filterGraceful:!0,snippetsPreventQuickSuggestions:!1,localityBonus:!1,shareSuggestSelections:!1,selectionMode:"always",showIcons:!0,showStatusBar:!1,preview:!1,previewMode:"subwordSmart",showInlineDetails:!0,showMethods:!0,showFunctions:!0,showConstructors:!0,showDeprecated:!0,matchOnWordStartOnly:!0,showFields:!0,showVariables:!0,showClasses:!0,showStructs:!0,showInterfaces:!0,showModules:!0,showProperties:!0,showEvents:!0,showOperators:!0,showUnits:!0,showValues:!0,showConstants:!0,showEnums:!0,showEnumMembers:!0,showKeywords:!0,showWords:!0,showColors:!0,showFiles:!0,showReferences:!0,showFolders:!0,showTypeParameters:!0,showSnippets:!0,showUsers:!0,showIssues:!0};super(117,"suggest",e,{"editor.suggest.insertMode":{type:"string",enum:["insert","replace"],enumDescriptions:[v("suggest.insertMode.insert","Insert suggestion without overwriting text right of the cursor."),v("suggest.insertMode.replace","Insert suggestion and overwrite text right of the cursor.")],default:e.insertMode,description:v("suggest.insertMode","Controls whether words are overwritten when accepting completions. Note that this depends on extensions opting into this feature.")},"editor.suggest.filterGraceful":{type:"boolean",default:e.filterGraceful,description:v("suggest.filterGraceful","Controls whether filtering and sorting suggestions accounts for small typos.")},"editor.suggest.localityBonus":{type:"boolean",default:e.localityBonus,description:v("suggest.localityBonus","Controls whether sorting favors words that appear close to the cursor.")},"editor.suggest.shareSuggestSelections":{type:"boolean",default:e.shareSuggestSelections,markdownDescription:v("suggest.shareSuggestSelections","Controls whether remembered suggestion selections are shared between multiple workspaces and windows (needs `#editor.suggestSelection#`).")},"editor.suggest.selectionMode":{type:"string",enum:["always","never","whenTriggerCharacter","whenQuickSuggestion"],enumDescriptions:[v("suggest.insertMode.always","Always select a suggestion when automatically triggering IntelliSense."),v("suggest.insertMode.never","Never select a suggestion when automatically triggering IntelliSense."),v("suggest.insertMode.whenTriggerCharacter","Select a suggestion only when triggering IntelliSense from a trigger character."),v("suggest.insertMode.whenQuickSuggestion","Select a suggestion only when triggering IntelliSense as you type.")],default:e.selectionMode,markdownDescription:v("suggest.selectionMode","Controls whether a suggestion is selected when the widget shows. Note that this only applies to automatically triggered suggestions (`#editor.quickSuggestions#` and `#editor.suggestOnTriggerCharacters#`) and that a suggestion is always selected when explicitly invoked, e.g via `Ctrl+Space`.")},"editor.suggest.snippetsPreventQuickSuggestions":{type:"boolean",default:e.snippetsPreventQuickSuggestions,description:v("suggest.snippetsPreventQuickSuggestions","Controls whether an active snippet prevents quick suggestions.")},"editor.suggest.showIcons":{type:"boolean",default:e.showIcons,description:v("suggest.showIcons","Controls whether to show or hide icons in suggestions.")},"editor.suggest.showStatusBar":{type:"boolean",default:e.showStatusBar,description:v("suggest.showStatusBar","Controls the visibility of the status bar at the bottom of the suggest widget.")},"editor.suggest.preview":{type:"boolean",default:e.preview,description:v("suggest.preview","Controls whether to preview the suggestion outcome in the editor.")},"editor.suggest.showInlineDetails":{type:"boolean",default:e.showInlineDetails,description:v("suggest.showInlineDetails","Controls whether suggest details show inline with the label or only in the details widget.")},"editor.suggest.maxVisibleSuggestions":{type:"number",deprecationMessage:v("suggest.maxVisibleSuggestions.dep","This setting is deprecated. The suggest widget can now be resized.")},"editor.suggest.filteredTypes":{type:"object",deprecationMessage:v("deprecated","This setting is deprecated, please use separate settings like 'editor.suggest.showKeywords' or 'editor.suggest.showSnippets' instead.")},"editor.suggest.showMethods":{type:"boolean",default:!0,markdownDescription:v("editor.suggest.showMethods","When enabled IntelliSense shows `method`-suggestions.")},"editor.suggest.showFunctions":{type:"boolean",default:!0,markdownDescription:v("editor.suggest.showFunctions","When enabled IntelliSense shows `function`-suggestions.")},"editor.suggest.showConstructors":{type:"boolean",default:!0,markdownDescription:v("editor.suggest.showConstructors","When enabled IntelliSense shows `constructor`-suggestions.")},"editor.suggest.showDeprecated":{type:"boolean",default:!0,markdownDescription:v("editor.suggest.showDeprecated","When enabled IntelliSense shows `deprecated`-suggestions.")},"editor.suggest.matchOnWordStartOnly":{type:"boolean",default:!0,markdownDescription:v("editor.suggest.matchOnWordStartOnly","When enabled IntelliSense filtering requires that the first character matches on a word start. For example, `c` on `Console` or `WebContext` but _not_ on `description`. When disabled IntelliSense will show more results but still sorts them by match quality.")},"editor.suggest.showFields":{type:"boolean",default:!0,markdownDescription:v("editor.suggest.showFields","When enabled IntelliSense shows `field`-suggestions.")},"editor.suggest.showVariables":{type:"boolean",default:!0,markdownDescription:v("editor.suggest.showVariables","When enabled IntelliSense shows `variable`-suggestions.")},"editor.suggest.showClasses":{type:"boolean",default:!0,markdownDescription:v("editor.suggest.showClasss","When enabled IntelliSense shows `class`-suggestions.")},"editor.suggest.showStructs":{type:"boolean",default:!0,markdownDescription:v("editor.suggest.showStructs","When enabled IntelliSense shows `struct`-suggestions.")},"editor.suggest.showInterfaces":{type:"boolean",default:!0,markdownDescription:v("editor.suggest.showInterfaces","When enabled IntelliSense shows `interface`-suggestions.")},"editor.suggest.showModules":{type:"boolean",default:!0,markdownDescription:v("editor.suggest.showModules","When enabled IntelliSense shows `module`-suggestions.")},"editor.suggest.showProperties":{type:"boolean",default:!0,markdownDescription:v("editor.suggest.showPropertys","When enabled IntelliSense shows `property`-suggestions.")},"editor.suggest.showEvents":{type:"boolean",default:!0,markdownDescription:v("editor.suggest.showEvents","When enabled IntelliSense shows `event`-suggestions.")},"editor.suggest.showOperators":{type:"boolean",default:!0,markdownDescription:v("editor.suggest.showOperators","When enabled IntelliSense shows `operator`-suggestions.")},"editor.suggest.showUnits":{type:"boolean",default:!0,markdownDescription:v("editor.suggest.showUnits","When enabled IntelliSense shows `unit`-suggestions.")},"editor.suggest.showValues":{type:"boolean",default:!0,markdownDescription:v("editor.suggest.showValues","When enabled IntelliSense shows `value`-suggestions.")},"editor.suggest.showConstants":{type:"boolean",default:!0,markdownDescription:v("editor.suggest.showConstants","When enabled IntelliSense shows `constant`-suggestions.")},"editor.suggest.showEnums":{type:"boolean",default:!0,markdownDescription:v("editor.suggest.showEnums","When enabled IntelliSense shows `enum`-suggestions.")},"editor.suggest.showEnumMembers":{type:"boolean",default:!0,markdownDescription:v("editor.suggest.showEnumMembers","When enabled IntelliSense shows `enumMember`-suggestions.")},"editor.suggest.showKeywords":{type:"boolean",default:!0,markdownDescription:v("editor.suggest.showKeywords","When enabled IntelliSense shows `keyword`-suggestions.")},"editor.suggest.showWords":{type:"boolean",default:!0,markdownDescription:v("editor.suggest.showTexts","When enabled IntelliSense shows `text`-suggestions.")},"editor.suggest.showColors":{type:"boolean",default:!0,markdownDescription:v("editor.suggest.showColors","When enabled IntelliSense shows `color`-suggestions.")},"editor.suggest.showFiles":{type:"boolean",default:!0,markdownDescription:v("editor.suggest.showFiles","When enabled IntelliSense shows `file`-suggestions.")},"editor.suggest.showReferences":{type:"boolean",default:!0,markdownDescription:v("editor.suggest.showReferences","When enabled IntelliSense shows `reference`-suggestions.")},"editor.suggest.showCustomcolors":{type:"boolean",default:!0,markdownDescription:v("editor.suggest.showCustomcolors","When enabled IntelliSense shows `customcolor`-suggestions.")},"editor.suggest.showFolders":{type:"boolean",default:!0,markdownDescription:v("editor.suggest.showFolders","When enabled IntelliSense shows `folder`-suggestions.")},"editor.suggest.showTypeParameters":{type:"boolean",default:!0,markdownDescription:v("editor.suggest.showTypeParameters","When enabled IntelliSense shows `typeParameter`-suggestions.")},"editor.suggest.showSnippets":{type:"boolean",default:!0,markdownDescription:v("editor.suggest.showSnippets","When enabled IntelliSense shows `snippet`-suggestions.")},"editor.suggest.showUsers":{type:"boolean",default:!0,markdownDescription:v("editor.suggest.showUsers","When enabled IntelliSense shows `user`-suggestions.")},"editor.suggest.showIssues":{type:"boolean",default:!0,markdownDescription:v("editor.suggest.showIssues","When enabled IntelliSense shows `issues`-suggestions.")}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return{insertMode:Un(t.insertMode,this.defaultValue.insertMode,["insert","replace"]),filterGraceful:Qe(t.filterGraceful,this.defaultValue.filterGraceful),snippetsPreventQuickSuggestions:Qe(t.snippetsPreventQuickSuggestions,this.defaultValue.filterGraceful),localityBonus:Qe(t.localityBonus,this.defaultValue.localityBonus),shareSuggestSelections:Qe(t.shareSuggestSelections,this.defaultValue.shareSuggestSelections),selectionMode:Un(t.selectionMode,this.defaultValue.selectionMode,["always","never","whenQuickSuggestion","whenTriggerCharacter"]),showIcons:Qe(t.showIcons,this.defaultValue.showIcons),showStatusBar:Qe(t.showStatusBar,this.defaultValue.showStatusBar),preview:Qe(t.preview,this.defaultValue.preview),previewMode:Un(t.previewMode,this.defaultValue.previewMode,["prefix","subword","subwordSmart"]),showInlineDetails:Qe(t.showInlineDetails,this.defaultValue.showInlineDetails),showMethods:Qe(t.showMethods,this.defaultValue.showMethods),showFunctions:Qe(t.showFunctions,this.defaultValue.showFunctions),showConstructors:Qe(t.showConstructors,this.defaultValue.showConstructors),showDeprecated:Qe(t.showDeprecated,this.defaultValue.showDeprecated),matchOnWordStartOnly:Qe(t.matchOnWordStartOnly,this.defaultValue.matchOnWordStartOnly),showFields:Qe(t.showFields,this.defaultValue.showFields),showVariables:Qe(t.showVariables,this.defaultValue.showVariables),showClasses:Qe(t.showClasses,this.defaultValue.showClasses),showStructs:Qe(t.showStructs,this.defaultValue.showStructs),showInterfaces:Qe(t.showInterfaces,this.defaultValue.showInterfaces),showModules:Qe(t.showModules,this.defaultValue.showModules),showProperties:Qe(t.showProperties,this.defaultValue.showProperties),showEvents:Qe(t.showEvents,this.defaultValue.showEvents),showOperators:Qe(t.showOperators,this.defaultValue.showOperators),showUnits:Qe(t.showUnits,this.defaultValue.showUnits),showValues:Qe(t.showValues,this.defaultValue.showValues),showConstants:Qe(t.showConstants,this.defaultValue.showConstants),showEnums:Qe(t.showEnums,this.defaultValue.showEnums),showEnumMembers:Qe(t.showEnumMembers,this.defaultValue.showEnumMembers),showKeywords:Qe(t.showKeywords,this.defaultValue.showKeywords),showWords:Qe(t.showWords,this.defaultValue.showWords),showColors:Qe(t.showColors,this.defaultValue.showColors),showFiles:Qe(t.showFiles,this.defaultValue.showFiles),showReferences:Qe(t.showReferences,this.defaultValue.showReferences),showFolders:Qe(t.showFolders,this.defaultValue.showFolders),showTypeParameters:Qe(t.showTypeParameters,this.defaultValue.showTypeParameters),showSnippets:Qe(t.showSnippets,this.defaultValue.showSnippets),showUsers:Qe(t.showUsers,this.defaultValue.showUsers),showIssues:Qe(t.showIssues,this.defaultValue.showIssues)}}}class eVe extends bn{constructor(){super(112,"smartSelect",{selectLeadingAndTrailingWhitespace:!0,selectSubwords:!0},{"editor.smartSelect.selectLeadingAndTrailingWhitespace":{description:v("selectLeadingAndTrailingWhitespace","Whether leading and trailing whitespace should always be selected."),default:!0,type:"boolean"},"editor.smartSelect.selectSubwords":{description:v("selectSubwords","Whether subwords (like 'foo' in 'fooBar' or 'foo_bar') should be selected."),default:!0,type:"boolean"}})}validate(e){return!e||typeof e!="object"?this.defaultValue:{selectLeadingAndTrailingWhitespace:Qe(e.selectLeadingAndTrailingWhitespace,this.defaultValue.selectLeadingAndTrailingWhitespace),selectSubwords:Qe(e.selectSubwords,this.defaultValue.selectSubwords)}}}class tVe extends bn{constructor(){super(136,"wrappingIndent",1,{"editor.wrappingIndent":{type:"string",enum:["none","same","indent","deepIndent"],enumDescriptions:[v("wrappingIndent.none","No indentation. Wrapped lines begin at column 1."),v("wrappingIndent.same","Wrapped lines get the same indentation as the parent."),v("wrappingIndent.indent","Wrapped lines get +1 indentation toward the parent."),v("wrappingIndent.deepIndent","Wrapped lines get +2 indentation toward the parent.")],description:v("wrappingIndent","Controls the indentation of wrapped lines."),default:"same"}})}validate(e){switch(e){case"none":return 0;case"same":return 1;case"indent":return 2;case"deepIndent":return 3}return 1}compute(e,t,i){return t.get(2)===2?0:i}}class iVe extends mE{constructor(){super(144)}compute(e,t,i){const s=t.get(143);return{isDominatedByLongLines:e.isDominatedByLongLines,isWordWrapMinified:s.isWordWrapMinified,isViewportWrapping:s.isViewportWrapping,wrappingColumn:s.wrappingColumn}}}class nVe extends bn{constructor(){const e={enabled:!0,showDropSelector:"afterDrop"};super(36,"dropIntoEditor",e,{"editor.dropIntoEditor.enabled":{type:"boolean",default:e.enabled,markdownDescription:v("dropIntoEditor.enabled","Controls whether you can drag and drop a file into a text editor by holding down `Shift`-key (instead of opening the file in an editor).")},"editor.dropIntoEditor.showDropSelector":{type:"string",markdownDescription:v("dropIntoEditor.showDropSelector","Controls if a widget is shown when dropping files into the editor. This widget lets you control how the file is dropped."),enum:["afterDrop","never"],enumDescriptions:[v("dropIntoEditor.showDropSelector.afterDrop","Show the drop selector widget after a file is dropped into the editor."),v("dropIntoEditor.showDropSelector.never","Never show the drop selector widget. Instead the default drop provider is always used.")],default:"afterDrop"}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return{enabled:Qe(t.enabled,this.defaultValue.enabled),showDropSelector:Un(t.showDropSelector,this.defaultValue.showDropSelector,["afterDrop","never"])}}}class sVe extends bn{constructor(){const e={enabled:!0,showPasteSelector:"afterPaste"};super(84,"pasteAs",e,{"editor.pasteAs.enabled":{type:"boolean",default:e.enabled,markdownDescription:v("pasteAs.enabled","Controls whether you can paste content in different ways.")},"editor.pasteAs.showPasteSelector":{type:"string",markdownDescription:v("pasteAs.showPasteSelector","Controls if a widget is shown when pasting content in to the editor. This widget lets you control how the file is pasted."),enum:["afterPaste","never"],enumDescriptions:[v("pasteAs.showPasteSelector.afterPaste","Show the paste selector widget after content is pasted into the editor."),v("pasteAs.showPasteSelector.never","Never show the paste selector widget. Instead the default pasting behavior is always used.")],default:"afterPaste"}})}validate(e){if(!e||typeof e!="object")return this.defaultValue;const t=e;return{enabled:Qe(t.enabled,this.defaultValue.enabled),showPasteSelector:Un(t.showPasteSelector,this.defaultValue.showPasteSelector,["afterPaste","never"])}}}const rVe="Consolas, 'Courier New', monospace",oVe="Menlo, Monaco, 'Courier New', monospace",aVe="'Droid Sans Mono', 'monospace', monospace",na={fontFamily:Gt?oVe:Kr?aVe:rVe,fontWeight:"normal",fontSize:Gt?12:14,lineHeight:0,letterSpacing:0},B0=[];function Ne(n){return B0[n.id]=n,n}const zu={acceptSuggestionOnCommitCharacter:Ne(new Zt(0,"acceptSuggestionOnCommitCharacter",!0,{markdownDescription:v("acceptSuggestionOnCommitCharacter","Controls whether suggestions should be accepted on commit characters. For example, in JavaScript, the semi-colon (`;`) can be a commit character that accepts a suggestion and types that character.")})),acceptSuggestionOnEnter:Ne(new yn(1,"acceptSuggestionOnEnter","on",["on","smart","off"],{markdownEnumDescriptions:["",v("acceptSuggestionOnEnterSmart","Only accept a suggestion with `Enter` when it makes a textual change."),""],markdownDescription:v("acceptSuggestionOnEnter","Controls whether suggestions should be accepted on `Enter`, in addition to `Tab`. Helps to avoid ambiguity between inserting new lines or accepting suggestions.")})),accessibilitySupport:Ne(new wWe),accessibilityPageSize:Ne(new Ii(3,"accessibilityPageSize",10,1,1073741824,{description:v("accessibilityPageSize","Controls the number of lines in the editor that can be read out by a screen reader at once. When we detect a screen reader we automatically set the default to be 500. Warning: this has a performance implication for numbers larger than the default."),tags:["accessibility"]})),ariaLabel:Ne(new Ko(4,"ariaLabel",v("editorViewAccessibleLabel","Editor content"))),ariaRequired:Ne(new Zt(5,"ariaRequired",!1,void 0)),screenReaderAnnounceInlineSuggestion:Ne(new Zt(8,"screenReaderAnnounceInlineSuggestion",!0,{description:v("screenReaderAnnounceInlineSuggestion","Control whether inline suggestions are announced by a screen reader."),tags:["accessibility"]})),autoClosingBrackets:Ne(new yn(6,"autoClosingBrackets","languageDefined",["always","languageDefined","beforeWhitespace","never"],{enumDescriptions:["",v("editor.autoClosingBrackets.languageDefined","Use language configurations to determine when to autoclose brackets."),v("editor.autoClosingBrackets.beforeWhitespace","Autoclose brackets only when the cursor is to the left of whitespace."),""],description:v("autoClosingBrackets","Controls whether the editor should automatically close brackets after the user adds an opening bracket.")})),autoClosingComments:Ne(new yn(7,"autoClosingComments","languageDefined",["always","languageDefined","beforeWhitespace","never"],{enumDescriptions:["",v("editor.autoClosingComments.languageDefined","Use language configurations to determine when to autoclose comments."),v("editor.autoClosingComments.beforeWhitespace","Autoclose comments only when the cursor is to the left of whitespace."),""],description:v("autoClosingComments","Controls whether the editor should automatically close comments after the user adds an opening comment.")})),autoClosingDelete:Ne(new yn(9,"autoClosingDelete","auto",["always","auto","never"],{enumDescriptions:["",v("editor.autoClosingDelete.auto","Remove adjacent closing quotes or brackets only if they were automatically inserted."),""],description:v("autoClosingDelete","Controls whether the editor should remove adjacent closing quotes or brackets when deleting.")})),autoClosingOvertype:Ne(new yn(10,"autoClosingOvertype","auto",["always","auto","never"],{enumDescriptions:["",v("editor.autoClosingOvertype.auto","Type over closing quotes or brackets only if they were automatically inserted."),""],description:v("autoClosingOvertype","Controls whether the editor should type over closing quotes or brackets.")})),autoClosingQuotes:Ne(new yn(11,"autoClosingQuotes","languageDefined",["always","languageDefined","beforeWhitespace","never"],{enumDescriptions:["",v("editor.autoClosingQuotes.languageDefined","Use language configurations to determine when to autoclose quotes."),v("editor.autoClosingQuotes.beforeWhitespace","Autoclose quotes only when the cursor is to the left of whitespace."),""],description:v("autoClosingQuotes","Controls whether the editor should automatically close quotes after the user adds an opening quote.")})),autoIndent:Ne(new iI(12,"autoIndent",4,"full",["none","keep","brackets","advanced","full"],CWe,{enumDescriptions:[v("editor.autoIndent.none","The editor will not insert indentation automatically."),v("editor.autoIndent.keep","The editor will keep the current line's indentation."),v("editor.autoIndent.brackets","The editor will keep the current line's indentation and honor language defined brackets."),v("editor.autoIndent.advanced","The editor will keep the current line's indentation, honor language defined brackets and invoke special onEnterRules defined by languages."),v("editor.autoIndent.full","The editor will keep the current line's indentation, honor language defined brackets, invoke special onEnterRules defined by languages, and honor indentationRules defined by languages.")],description:v("autoIndent","Controls whether the editor should automatically adjust the indentation when users type, paste, move or indent lines.")})),automaticLayout:Ne(new Zt(13,"automaticLayout",!1)),autoSurround:Ne(new yn(14,"autoSurround","languageDefined",["languageDefined","quotes","brackets","never"],{enumDescriptions:[v("editor.autoSurround.languageDefined","Use language configurations to determine when to automatically surround selections."),v("editor.autoSurround.quotes","Surround with quotes but not brackets."),v("editor.autoSurround.brackets","Surround with brackets but not quotes."),""],description:v("autoSurround","Controls whether the editor should automatically surround selections when typing quotes or brackets.")})),bracketPairColorization:Ne(new XWe),bracketPairGuides:Ne(new QWe),stickyTabStops:Ne(new Zt(115,"stickyTabStops",!1,{description:v("stickyTabStops","Emulate selection behavior of tab characters when using spaces for indentation. Selection will stick to tab stops.")})),codeLens:Ne(new Zt(17,"codeLens",!0,{description:v("codeLens","Controls whether the editor shows CodeLens.")})),codeLensFontFamily:Ne(new Ko(18,"codeLensFontFamily","",{description:v("codeLensFontFamily","Controls the font family for CodeLens.")})),codeLensFontSize:Ne(new Ii(19,"codeLensFontSize",0,0,100,{type:"number",default:0,minimum:0,maximum:100,markdownDescription:v("codeLensFontSize","Controls the font size in pixels for CodeLens. When set to 0, 90% of `#editor.fontSize#` is used.")})),colorDecorators:Ne(new Zt(20,"colorDecorators",!0,{description:v("colorDecorators","Controls whether the editor should render the inline color decorators and color picker.")})),colorDecoratorActivatedOn:Ne(new yn(146,"colorDecoratorsActivatedOn","clickAndHover",["clickAndHover","hover","click"],{enumDescriptions:[v("editor.colorDecoratorActivatedOn.clickAndHover","Make the color picker appear both on click and hover of the color decorator"),v("editor.colorDecoratorActivatedOn.hover","Make the color picker appear on hover of the color decorator"),v("editor.colorDecoratorActivatedOn.click","Make the color picker appear on click of the color decorator")],description:v("colorDecoratorActivatedOn","Controls the condition to make a color picker appear from a color decorator")})),colorDecoratorsLimit:Ne(new Ii(21,"colorDecoratorsLimit",500,1,1e6,{markdownDescription:v("colorDecoratorsLimit","Controls the max number of color decorators that can be rendered in an editor at once.")})),columnSelection:Ne(new Zt(22,"columnSelection",!1,{description:v("columnSelection","Enable that the selection with the mouse and keys is doing column selection.")})),comments:Ne(new SWe),contextmenu:Ne(new Zt(24,"contextmenu",!0)),copyWithSyntaxHighlighting:Ne(new Zt(25,"copyWithSyntaxHighlighting",!0,{description:v("copyWithSyntaxHighlighting","Controls whether syntax highlighting should be copied into the clipboard.")})),cursorBlinking:Ne(new iI(26,"cursorBlinking",1,"blink",["blink","smooth","phase","expand","solid"],kWe,{description:v("cursorBlinking","Control the cursor animation style.")})),cursorSmoothCaretAnimation:Ne(new yn(27,"cursorSmoothCaretAnimation","off",["off","explicit","on"],{enumDescriptions:[v("cursorSmoothCaretAnimation.off","Smooth caret animation is disabled."),v("cursorSmoothCaretAnimation.explicit","Smooth caret animation is enabled only when the user moves the cursor with an explicit gesture."),v("cursorSmoothCaretAnimation.on","Smooth caret animation is always enabled.")],description:v("cursorSmoothCaretAnimation","Controls whether the smooth caret animation should be enabled.")})),cursorStyle:Ne(new iI(28,"cursorStyle",Js.Line,"line",["line","block","underline","line-thin","block-outline","underline-thin"],LWe,{description:v("cursorStyle","Controls the cursor style.")})),cursorSurroundingLines:Ne(new Ii(29,"cursorSurroundingLines",0,0,1073741824,{description:v("cursorSurroundingLines","Controls the minimal number of visible leading lines (minimum 0) and trailing lines (minimum 1) surrounding the cursor. Known as 'scrollOff' or 'scrollOffset' in some other editors.")})),cursorSurroundingLinesStyle:Ne(new yn(30,"cursorSurroundingLinesStyle","default",["default","all"],{enumDescriptions:[v("cursorSurroundingLinesStyle.default","`cursorSurroundingLines` is enforced only when triggered via the keyboard or API."),v("cursorSurroundingLinesStyle.all","`cursorSurroundingLines` is enforced always.")],markdownDescription:v("cursorSurroundingLinesStyle","Controls when `#cursorSurroundingLines#` should be enforced.")})),cursorWidth:Ne(new Ii(31,"cursorWidth",0,0,1073741824,{markdownDescription:v("cursorWidth","Controls the width of the cursor when `#editor.cursorStyle#` is set to `line`.")})),disableLayerHinting:Ne(new Zt(32,"disableLayerHinting",!1)),disableMonospaceOptimizations:Ne(new Zt(33,"disableMonospaceOptimizations",!1)),domReadOnly:Ne(new Zt(34,"domReadOnly",!1)),dragAndDrop:Ne(new Zt(35,"dragAndDrop",!0,{description:v("dragAndDrop","Controls whether the editor should allow moving selections via drag and drop.")})),emptySelectionClipboard:Ne(new EWe),dropIntoEditor:Ne(new nVe),stickyScroll:Ne(new MWe),experimentalWhitespaceRendering:Ne(new yn(38,"experimentalWhitespaceRendering","svg",["svg","font","off"],{enumDescriptions:[v("experimentalWhitespaceRendering.svg","Use a new rendering method with svgs."),v("experimentalWhitespaceRendering.font","Use a new rendering method with font characters."),v("experimentalWhitespaceRendering.off","Use the stable rendering method.")],description:v("experimentalWhitespaceRendering","Controls whether whitespace is rendered with a new, experimental method.")})),extraEditorClassName:Ne(new Ko(39,"extraEditorClassName","")),fastScrollSensitivity:Ne(new lc(40,"fastScrollSensitivity",5,n=>n<=0?5:n,{markdownDescription:v("fastScrollSensitivity","Scrolling speed multiplier when pressing `Alt`.")})),find:Ne(new DWe),fixedOverflowWidgets:Ne(new Zt(42,"fixedOverflowWidgets",!1)),folding:Ne(new Zt(43,"folding",!0,{description:v("folding","Controls whether the editor has code folding enabled.")})),foldingStrategy:Ne(new yn(44,"foldingStrategy","auto",["auto","indentation"],{enumDescriptions:[v("foldingStrategy.auto","Use a language-specific folding strategy if available, else the indentation-based one."),v("foldingStrategy.indentation","Use the indentation-based folding strategy.")],description:v("foldingStrategy","Controls the strategy for computing folding ranges.")})),foldingHighlight:Ne(new Zt(45,"foldingHighlight",!0,{description:v("foldingHighlight","Controls whether the editor should highlight folded ranges.")})),foldingImportsByDefault:Ne(new Zt(46,"foldingImportsByDefault",!1,{description:v("foldingImportsByDefault","Controls whether the editor automatically collapses import ranges.")})),foldingMaximumRegions:Ne(new Ii(47,"foldingMaximumRegions",5e3,10,65e3,{description:v("foldingMaximumRegions","The maximum number of foldable regions. Increasing this value may result in the editor becoming less responsive when the current source has a large number of foldable regions.")})),unfoldOnClickAfterEndOfLine:Ne(new Zt(48,"unfoldOnClickAfterEndOfLine",!1,{description:v("unfoldOnClickAfterEndOfLine","Controls whether clicking on the empty content after a folded line will unfold the line.")})),fontFamily:Ne(new Ko(49,"fontFamily",na.fontFamily,{description:v("fontFamily","Controls the font family.")})),fontInfo:Ne(new IWe),fontLigatures2:Ne(new Oa),fontSize:Ne(new TWe),fontWeight:Ne(new _h),fontVariations:Ne(new lu),formatOnPaste:Ne(new Zt(55,"formatOnPaste",!1,{description:v("formatOnPaste","Controls whether the editor should automatically format the pasted content. A formatter must be available and the formatter should be able to format a range in a document.")})),formatOnType:Ne(new Zt(56,"formatOnType",!1,{description:v("formatOnType","Controls whether the editor should automatically format the line after typing.")})),glyphMargin:Ne(new Zt(57,"glyphMargin",!0,{description:v("glyphMargin","Controls whether the editor should render the vertical glyph margin. Glyph margin is mostly used for debugging.")})),gotoLocation:Ne(new NWe),hideCursorInOverviewRuler:Ne(new Zt(59,"hideCursorInOverviewRuler",!1,{description:v("hideCursorInOverviewRuler","Controls whether the cursor should be hidden in the overview ruler.")})),hover:Ne(new AWe),inDiffEditor:Ne(new Zt(61,"inDiffEditor",!1)),letterSpacing:Ne(new lc(63,"letterSpacing",na.letterSpacing,n=>lc.clamp(n,-5,20),{description:v("letterSpacing","Controls the letter spacing in pixels.")})),lightbulb:Ne(new RWe),lineDecorationsWidth:Ne(new FWe),lineHeight:Ne(new BWe),lineNumbers:Ne(new jWe),lineNumbersMinChars:Ne(new Ii(68,"lineNumbersMinChars",5,1,300)),linkedEditing:Ne(new Zt(69,"linkedEditing",!1,{description:v("linkedEditing","Controls whether the editor has linked editing enabled. Depending on the language, related symbols such as HTML tags, are updated while editing.")})),links:Ne(new Zt(70,"links",!0,{description:v("links","Controls whether the editor should detect links and make them clickable.")})),matchBrackets:Ne(new yn(71,"matchBrackets","always",["always","near","never"],{description:v("matchBrackets","Highlight matching brackets.")})),minimap:Ne(new WWe),mouseStyle:Ne(new yn(73,"mouseStyle","text",["text","default","copy"])),mouseWheelScrollSensitivity:Ne(new lc(74,"mouseWheelScrollSensitivity",1,n=>n===0?1:n,{markdownDescription:v("mouseWheelScrollSensitivity","A multiplier to be used on the `deltaX` and `deltaY` of mouse wheel scroll events.")})),mouseWheelZoom:Ne(new Zt(75,"mouseWheelZoom",!1,{markdownDescription:v("mouseWheelZoom","Zoom the font of the editor when using mouse wheel and holding `Ctrl`.")})),multiCursorMergeOverlapping:Ne(new Zt(76,"multiCursorMergeOverlapping",!0,{description:v("multiCursorMergeOverlapping","Merge multiple cursors when they are overlapping.")})),multiCursorModifier:Ne(new iI(77,"multiCursorModifier","altKey","alt",["ctrlCmd","alt"],VWe,{markdownEnumDescriptions:[v("multiCursorModifier.ctrlCmd","Maps to `Control` on Windows and Linux and to `Command` on macOS."),v("multiCursorModifier.alt","Maps to `Alt` on Windows and Linux and to `Option` on macOS.")],markdownDescription:v({key:"multiCursorModifier",comment:["- `ctrlCmd` refers to a value the setting can take and should not be localized.","- `Control` and `Command` refer to the modifier keys Ctrl or Cmd on the keyboard and can be localized."]},"The modifier to be used to add multiple cursors with the mouse. The Go to Definition and Open Link mouse gestures will adapt such that they do not conflict with the [multicursor modifier](https://code.visualstudio.com/docs/editor/codebasics#_multicursor-modifier).")})),multiCursorPaste:Ne(new yn(78,"multiCursorPaste","spread",["spread","full"],{markdownEnumDescriptions:[v("multiCursorPaste.spread","Each cursor pastes a single line of the text."),v("multiCursorPaste.full","Each cursor pastes the full text.")],markdownDescription:v("multiCursorPaste","Controls pasting when the line count of the pasted text matches the cursor count.")})),multiCursorLimit:Ne(new Ii(79,"multiCursorLimit",1e4,1,1e5,{markdownDescription:v("multiCursorLimit","Controls the max number of cursors that can be in an active editor at once.")})),occurrencesHighlight:Ne(new yn(80,"occurrencesHighlight","singleFile",["off","singleFile","multiFile"],{markdownEnumDescriptions:[v("occurrencesHighlight.off","Does not highlight occurrences."),v("occurrencesHighlight.singleFile","Highlights occurrences only in the current file."),v("occurrencesHighlight.multiFile","Experimental: Highlights occurrences across all valid open files.")],markdownDescription:v("occurrencesHighlight","Controls whether occurrences should be highlighted across open files.")})),overviewRulerBorder:Ne(new Zt(81,"overviewRulerBorder",!0,{description:v("overviewRulerBorder","Controls whether a border should be drawn around the overview ruler.")})),overviewRulerLanes:Ne(new Ii(82,"overviewRulerLanes",3,0,3)),padding:Ne(new HWe),pasteAs:Ne(new sVe),parameterHints:Ne(new $We),peekWidgetDefaultFocus:Ne(new yn(86,"peekWidgetDefaultFocus","tree",["tree","editor"],{enumDescriptions:[v("peekWidgetDefaultFocus.tree","Focus the tree when opening peek"),v("peekWidgetDefaultFocus.editor","Focus the editor when opening peek")],description:v("peekWidgetDefaultFocus","Controls whether to focus the inline editor or the tree in the peek widget.")})),definitionLinkOpensInPeek:Ne(new Zt(87,"definitionLinkOpensInPeek",!1,{description:v("definitionLinkOpensInPeek","Controls whether the Go to Definition mouse gesture always opens the peek widget.")})),quickSuggestions:Ne(new UWe),quickSuggestionsDelay:Ne(new Ii(89,"quickSuggestionsDelay",10,0,1073741824,{description:v("quickSuggestionsDelay","Controls the delay in milliseconds after which quick suggestions will show up.")})),readOnly:Ne(new Zt(90,"readOnly",!1)),readOnlyMessage:Ne(new KWe),renameOnType:Ne(new Zt(92,"renameOnType",!1,{description:v("renameOnType","Controls whether the editor auto renames on type."),markdownDeprecationMessage:v("renameOnTypeDeprecate","Deprecated, use `editor.linkedEditing` instead.")})),renderControlCharacters:Ne(new Zt(93,"renderControlCharacters",!0,{description:v("renderControlCharacters","Controls whether the editor should render control characters."),restricted:!0})),renderFinalNewline:Ne(new yn(94,"renderFinalNewline",Kr?"dimmed":"on",["off","on","dimmed"],{description:v("renderFinalNewline","Render last line number when the file ends with a newline.")})),renderLineHighlight:Ne(new yn(95,"renderLineHighlight","line",["none","gutter","line","all"],{enumDescriptions:["","","",v("renderLineHighlight.all","Highlights both the gutter and the current line.")],description:v("renderLineHighlight","Controls how the editor should render the current line highlight.")})),renderLineHighlightOnlyWhenFocus:Ne(new Zt(96,"renderLineHighlightOnlyWhenFocus",!1,{description:v("renderLineHighlightOnlyWhenFocus","Controls if the editor should render the current line highlight only when the editor is focused.")})),renderValidationDecorations:Ne(new yn(97,"renderValidationDecorations","editable",["editable","on","off"])),renderWhitespace:Ne(new yn(98,"renderWhitespace","selection",["none","boundary","selection","trailing","all"],{enumDescriptions:["",v("renderWhitespace.boundary","Render whitespace characters except for single spaces between words."),v("renderWhitespace.selection","Render whitespace characters only on selected text."),v("renderWhitespace.trailing","Render only trailing whitespace characters."),""],description:v("renderWhitespace","Controls how the editor should render whitespace characters.")})),revealHorizontalRightPadding:Ne(new Ii(99,"revealHorizontalRightPadding",15,0,1e3)),roundedSelection:Ne(new Zt(100,"roundedSelection",!0,{description:v("roundedSelection","Controls whether selections should have rounded corners.")})),rulers:Ne(new qWe),scrollbar:Ne(new GWe),scrollBeyondLastColumn:Ne(new Ii(103,"scrollBeyondLastColumn",4,0,1073741824,{description:v("scrollBeyondLastColumn","Controls the number of extra characters beyond which the editor will scroll horizontally.")})),scrollBeyondLastLine:Ne(new Zt(104,"scrollBeyondLastLine",!0,{description:v("scrollBeyondLastLine","Controls whether the editor will scroll beyond the last line.")})),scrollPredominantAxis:Ne(new Zt(105,"scrollPredominantAxis",!0,{description:v("scrollPredominantAxis","Scroll only along the predominant axis when scrolling both vertically and horizontally at the same time. Prevents horizontal drift when scrolling vertically on a trackpad.")})),selectionClipboard:Ne(new Zt(106,"selectionClipboard",!0,{description:v("selectionClipboard","Controls whether the Linux primary clipboard should be supported."),included:Kr})),selectionHighlight:Ne(new Zt(107,"selectionHighlight",!0,{description:v("selectionHighlight","Controls whether the editor should highlight matches similar to the selection.")})),selectOnLineNumbers:Ne(new Zt(108,"selectOnLineNumbers",!0)),showFoldingControls:Ne(new yn(109,"showFoldingControls","mouseover",["always","never","mouseover"],{enumDescriptions:[v("showFoldingControls.always","Always show the folding controls."),v("showFoldingControls.never","Never show the folding controls and reduce the gutter size."),v("showFoldingControls.mouseover","Only show the folding controls when the mouse is over the gutter.")],description:v("showFoldingControls","Controls when the folding controls on the gutter are shown.")})),showUnused:Ne(new Zt(110,"showUnused",!0,{description:v("showUnused","Controls fading out of unused code.")})),showDeprecated:Ne(new Zt(138,"showDeprecated",!0,{description:v("showDeprecated","Controls strikethrough deprecated variables.")})),inlayHints:Ne(new OWe),snippetSuggestions:Ne(new yn(111,"snippetSuggestions","inline",["top","bottom","inline","none"],{enumDescriptions:[v("snippetSuggestions.top","Show snippet suggestions on top of other suggestions."),v("snippetSuggestions.bottom","Show snippet suggestions below other suggestions."),v("snippetSuggestions.inline","Show snippets suggestions with other suggestions."),v("snippetSuggestions.none","Do not show snippet suggestions.")],description:v("snippetSuggestions","Controls whether snippets are shown with other suggestions and how they are sorted.")})),smartSelect:Ne(new eVe),smoothScrolling:Ne(new Zt(113,"smoothScrolling",!1,{description:v("smoothScrolling","Controls whether the editor will scroll using an animation.")})),stopRenderingLineAfter:Ne(new Ii(116,"stopRenderingLineAfter",1e4,-1,1073741824)),suggest:Ne(new JWe),inlineSuggest:Ne(new ZWe),inlineCompletionsAccessibilityVerbose:Ne(new Zt(147,"inlineCompletionsAccessibilityVerbose",!1,{description:v("inlineCompletionsAccessibilityVerbose","Controls whether the accessibility hint should be provided to screen reader users when an inline completion is shown.")})),suggestFontSize:Ne(new Ii(118,"suggestFontSize",0,0,1e3,{markdownDescription:v("suggestFontSize","Font size for the suggest widget. When set to {0}, the value of {1} is used.","`0`","`#editor.fontSize#`")})),suggestLineHeight:Ne(new Ii(119,"suggestLineHeight",0,0,1e3,{markdownDescription:v("suggestLineHeight","Line height for the suggest widget. When set to {0}, the value of {1} is used. The minimum value is 8.","`0`","`#editor.lineHeight#`")})),suggestOnTriggerCharacters:Ne(new Zt(120,"suggestOnTriggerCharacters",!0,{description:v("suggestOnTriggerCharacters","Controls whether suggestions should automatically show up when typing trigger characters.")})),suggestSelection:Ne(new yn(121,"suggestSelection","first",["first","recentlyUsed","recentlyUsedByPrefix"],{markdownEnumDescriptions:[v("suggestSelection.first","Always select the first suggestion."),v("suggestSelection.recentlyUsed","Select recent suggestions unless further typing selects one, e.g. `console.| -> console.log` because `log` has been completed recently."),v("suggestSelection.recentlyUsedByPrefix","Select suggestions based on previous prefixes that have completed those suggestions, e.g. `co -> console` and `con -> const`.")],description:v("suggestSelection","Controls how suggestions are pre-selected when showing the suggest list.")})),tabCompletion:Ne(new yn(122,"tabCompletion","off",["on","off","onlySnippets"],{enumDescriptions:[v("tabCompletion.on","Tab complete will insert the best matching suggestion when pressing tab."),v("tabCompletion.off","Disable tab completions."),v("tabCompletion.onlySnippets","Tab complete snippets when their prefix match. Works best when 'quickSuggestions' aren't enabled.")],description:v("tabCompletion","Enables tab completions.")})),tabIndex:Ne(new Ii(123,"tabIndex",0,-1,1073741824)),unicodeHighlight:Ne(new YWe),unusualLineTerminators:Ne(new yn(125,"unusualLineTerminators","prompt",["auto","off","prompt"],{enumDescriptions:[v("unusualLineTerminators.auto","Unusual line terminators are automatically removed."),v("unusualLineTerminators.off","Unusual line terminators are ignored."),v("unusualLineTerminators.prompt","Unusual line terminators prompt to be removed.")],description:v("unusualLineTerminators","Remove unusual line terminators that might cause problems.")})),useShadowDOM:Ne(new Zt(126,"useShadowDOM",!0)),useTabStops:Ne(new Zt(127,"useTabStops",!0,{description:v("useTabStops","Inserting and deleting whitespace follows tab stops.")})),wordBreak:Ne(new yn(128,"wordBreak","normal",["normal","keepAll"],{markdownEnumDescriptions:[v("wordBreak.normal","Use the default line break rule."),v("wordBreak.keepAll","Word breaks should not be used for Chinese/Japanese/Korean (CJK) text. Non-CJK text behavior is the same as for normal.")],description:v("wordBreak","Controls the word break rules used for Chinese/Japanese/Korean (CJK) text.")})),wordSeparators:Ne(new Ko(129,"wordSeparators",Hge,{description:v("wordSeparators","Characters that will be used as word separators when doing word related navigations or operations.")})),wordWrap:Ne(new yn(130,"wordWrap","off",["off","on","wordWrapColumn","bounded"],{markdownEnumDescriptions:[v("wordWrap.off","Lines will never wrap."),v("wordWrap.on","Lines will wrap at the viewport width."),v({key:"wordWrap.wordWrapColumn",comment:["- `editor.wordWrapColumn` refers to a different setting and should not be localized."]},"Lines will wrap at `#editor.wordWrapColumn#`."),v({key:"wordWrap.bounded",comment:["- viewport means the edge of the visible window size.","- `editor.wordWrapColumn` refers to a different setting and should not be localized."]},"Lines will wrap at the minimum of viewport and `#editor.wordWrapColumn#`.")],description:v({key:"wordWrap",comment:["- 'off', 'on', 'wordWrapColumn' and 'bounded' refer to values the setting can take and should not be localized.","- `editor.wordWrapColumn` refers to a different setting and should not be localized."]},"Controls how lines should wrap.")})),wordWrapBreakAfterCharacters:Ne(new Ko(131,"wordWrapBreakAfterCharacters"," })]?|/&.,;¢°′″‰℃、。。、¢,.:;?!%・・ゝゞヽヾーァィゥェォッャュョヮヵヶぁぃぅぇぉっゃゅょゎゕゖㇰㇱㇲㇳㇴㇵㇶㇷㇸㇹㇺㇻㇼㇽㇾㇿ々〻ァィゥェォャュョッー”〉》」』】〕)]}」")),wordWrapBreakBeforeCharacters:Ne(new Ko(132,"wordWrapBreakBeforeCharacters","([{‘“〈《「『【〔([{「£¥$£¥++")),wordWrapColumn:Ne(new Ii(133,"wordWrapColumn",80,1,1073741824,{markdownDescription:v({key:"wordWrapColumn",comment:["- `editor.wordWrap` refers to a different setting and should not be localized.","- 'wordWrapColumn' and 'bounded' refer to values the different setting can take and should not be localized."]},"Controls the wrapping column of the editor when `#editor.wordWrap#` is `wordWrapColumn` or `bounded`.")})),wordWrapOverride1:Ne(new yn(134,"wordWrapOverride1","inherit",["off","on","inherit"])),wordWrapOverride2:Ne(new yn(135,"wordWrapOverride2","inherit",["off","on","inherit"])),editorClassName:Ne(new xWe),defaultColorDecorators:Ne(new Zt(145,"defaultColorDecorators",!1,{markdownDescription:v("defaultColorDecorators","Controls whether inline color decorations should be shown using the default document color provider")})),pixelRatio:Ne(new zWe),tabFocusMode:Ne(new Zt(142,"tabFocusMode",!1,{markdownDescription:v("tabFocusMode","Controls whether the editor receives tabs or defers them to the workbench for navigation.")})),layoutInfo:Ne(new Cb),wrappingInfo:Ne(new iVe),wrappingIndent:Ne(new tVe),wrappingStrategy:Ne(new PWe)},_l=new class{constructor(){this._zoomLevel=0,this._onDidChangeZoomLevel=new ue,this.onDidChangeZoomLevel=this._onDidChangeZoomLevel.event}getZoomLevel(){return this._zoomLevel}setZoomLevel(n){n=Math.min(Math.max(-5,n),20),this._zoomLevel!==n&&(this._zoomLevel=n,this._onDidChangeZoomLevel.fire(this._zoomLevel))}},lVe=Gt?1.5:1.35,F5=8;class r_{static createFromValidatedSettings(e,t,i){const s=e.get(49),r=e.get(53),o=e.get(52),a=e.get(51),l=e.get(54),c=e.get(66),u=e.get(63);return r_._create(s,r,o,a,l,c,u,t,i)}static _create(e,t,i,s,r,o,a,l,c){o===0?o=lVe*i:o<F5&&(o=o*i),o=Math.round(o),o<F5&&(o=F5);const u=1+(c?0:_l.getZoomLevel()*.1);return i*=u,o*=u,r===lu.TRANSLATE&&(t==="normal"||t==="bold"?r=lu.OFF:(r=`'wght' ${parseInt(t,10)}`,t="normal")),new r_({pixelRatio:l,fontFamily:e,fontWeight:t,fontSize:i,fontFeatureSettings:s,fontVariationSettings:r,lineHeight:o,letterSpacing:a})}constructor(e){this._bareFontInfoBrand=void 0,this.pixelRatio=e.pixelRatio,this.fontFamily=String(e.fontFamily),this.fontWeight=String(e.fontWeight),this.fontSize=e.fontSize,this.fontFeatureSettings=e.fontFeatureSettings,this.fontVariationSettings=e.fontVariationSettings,this.lineHeight=e.lineHeight|0,this.letterSpacing=e.letterSpacing}getId(){return`${this.pixelRatio}-${this.fontFamily}-${this.fontWeight}-${this.fontSize}-${this.fontFeatureSettings}-${this.fontVariationSettings}-${this.lineHeight}-${this.letterSpacing}`}getMassagedFontFamily(){const e=na.fontFamily,t=r_._wrapInQuotes(this.fontFamily);return e&&this.fontFamily!==e?`${t}, ${e}`:t}static _wrapInQuotes(e){return/[,"']/.test(e)?e:/[+ ]/.test(e)?`"${e}"`:e}}const cVe=2;class h9 extends r_{constructor(e,t){super(e),this._editorStylingBrand=void 0,this.version=cVe,this.isTrusted=t,this.isMonospace=e.isMonospace,this.typicalHalfwidthCharacterWidth=e.typicalHalfwidthCharacterWidth,this.typicalFullwidthCharacterWidth=e.typicalFullwidthCharacterWidth,this.canUseHalfwidthRightwardsArrow=e.canUseHalfwidthRightwardsArrow,this.spaceWidth=e.spaceWidth,this.middotWidth=e.middotWidth,this.wsmiddotWidth=e.wsmiddotWidth,this.maxDigitWidth=e.maxDigitWidth}equals(e){return this.fontFamily===e.fontFamily&&this.fontWeight===e.fontWeight&&this.fontSize===e.fontSize&&this.fontFeatureSettings===e.fontFeatureSettings&&this.fontVariationSettings===e.fontVariationSettings&&this.lineHeight===e.lineHeight&&this.letterSpacing===e.letterSpacing&&this.typicalHalfwidthCharacterWidth===e.typicalHalfwidthCharacterWidth&&this.typicalFullwidthCharacterWidth===e.typicalFullwidthCharacterWidth&&this.canUseHalfwidthRightwardsArrow===e.canUseHalfwidthRightwardsArrow&&this.spaceWidth===e.spaceWidth&&this.middotWidth===e.middotWidth&&this.wsmiddotWidth===e.wsmiddotWidth&&this.maxDigitWidth===e.maxDigitWidth}}class uVe extends pe{constructor(){super(),this._onDidChange=this._register(new ue),this.onDidChange=this._onDidChange.event,this._cache=new eee,this._evictUntrustedReadingsTimeout=-1}dispose(){this._evictUntrustedReadingsTimeout!==-1&&(clearTimeout(this._evictUntrustedReadingsTimeout),this._evictUntrustedReadingsTimeout=-1),super.dispose()}clearAllFontInfos(){this._cache=new eee,this._onDidChange.fire()}_writeToCache(e,t){this._cache.put(e,t),!t.isTrusted&&this._evictUntrustedReadingsTimeout===-1&&(this._evictUntrustedReadingsTimeout=mn.setTimeout(()=>{this._evictUntrustedReadingsTimeout=-1,this._evictUntrustedReadings()},5e3))}_evictUntrustedReadings(){const e=this._cache.getValues();let t=!1;for(const i of e)i.isTrusted||(t=!0,this._cache.remove(i));t&&this._onDidChange.fire()}readFontInfo(e){if(!this._cache.has(e)){let t=this._actualReadFontInfo(e);(t.typicalHalfwidthCharacterWidth<=2||t.typicalFullwidthCharacterWidth<=2||t.spaceWidth<=2||t.maxDigitWidth<=2)&&(t=new h9({pixelRatio:uL.value,fontFamily:t.fontFamily,fontWeight:t.fontWeight,fontSize:t.fontSize,fontFeatureSettings:t.fontFeatureSettings,fontVariationSettings:t.fontVariationSettings,lineHeight:t.lineHeight,letterSpacing:t.letterSpacing,isMonospace:t.isMonospace,typicalHalfwidthCharacterWidth:Math.max(t.typicalHalfwidthCharacterWidth,5),typicalFullwidthCharacterWidth:Math.max(t.typicalFullwidthCharacterWidth,5),canUseHalfwidthRightwardsArrow:t.canUseHalfwidthRightwardsArrow,spaceWidth:Math.max(t.spaceWidth,5),middotWidth:Math.max(t.middotWidth,5),wsmiddotWidth:Math.max(t.wsmiddotWidth,5),maxDigitWidth:Math.max(t.maxDigitWidth,5)},!1)),this._writeToCache(e,t)}return this._cache.get(e)}_createRequest(e,t,i,s){const r=new vWe(e,t);return i.push(r),s==null||s.push(r),r}_actualReadFontInfo(e){const t=[],i=[],s=this._createRequest("n",0,t,i),r=this._createRequest("m",0,t,null),o=this._createRequest(" ",0,t,i),a=this._createRequest("0",0,t,i),l=this._createRequest("1",0,t,i),c=this._createRequest("2",0,t,i),u=this._createRequest("3",0,t,i),h=this._createRequest("4",0,t,i),d=this._createRequest("5",0,t,i),f=this._createRequest("6",0,t,i),g=this._createRequest("7",0,t,i),p=this._createRequest("8",0,t,i),m=this._createRequest("9",0,t,i),_=this._createRequest("→",0,t,i),b=this._createRequest("→",0,t,null),y=this._createRequest("·",0,t,i),w=this._createRequest("⸱",0,t,null),S="|/-_ilm%";for(let I=0,N=S.length;I<N;I++)this._createRequest(S.charAt(I),0,t,i),this._createRequest(S.charAt(I),1,t,i),this._createRequest(S.charAt(I),2,t,i);bWe(e,t);const E=Math.max(a.width,l.width,c.width,u.width,h.width,d.width,f.width,g.width,p.width,m.width);let L=e.fontFeatureSettings===Oa.OFF;const k=i[0].width;for(let I=1,N=i.length;L&&I<N;I++){const T=k-i[I].width;if(T<-.001||T>.001){L=!1;break}}let x=!0;return L&&b.width!==k&&(x=!1),b.width>_.width&&(x=!1),new h9({pixelRatio:uL.value,fontFamily:e.fontFamily,fontWeight:e.fontWeight,fontSize:e.fontSize,fontFeatureSettings:e.fontFeatureSettings,fontVariationSettings:e.fontVariationSettings,lineHeight:e.lineHeight,letterSpacing:e.letterSpacing,isMonospace:L,typicalHalfwidthCharacterWidth:s.width,typicalFullwidthCharacterWidth:r.width,canUseHalfwidthRightwardsArrow:x,spaceWidth:o.width,middotWidth:y.width,wsmiddotWidth:w.width,maxDigitWidth:E},!0)}}class eee{constructor(){this._keys=Object.create(null),this._values=Object.create(null)}has(e){const t=e.getId();return!!this._values[t]}get(e){const t=e.getId();return this._values[t]}put(e,t){const i=e.getId();this._keys[i]=e,this._values[i]=t}remove(e){const t=e.getId();delete this._keys[t],delete this._values[t]}getValues(){return Object.keys(this._keys).map(e=>this._values[e])}}const d9=new uVe;class wp{constructor(e,t){this.key=e,this.migrate=t}apply(e){const t=wp._read(e,this.key),i=r=>wp._read(e,r),s=(r,o)=>wp._write(e,r,o);this.migrate(t,i,s)}static _read(e,t){if(typeof e>"u")return;const i=t.indexOf(".");if(i>=0){const s=t.substring(0,i);return this._read(e[s],t.substring(i+1))}return e[t]}static _write(e,t,i){const s=t.indexOf(".");if(s>=0){const r=t.substring(0,s);e[r]=e[r]||{},this._write(e[r],t.substring(s+1),i);return}e[t]=i}}wp.items=[];function Ed(n,e){wp.items.push(new wp(n,e))}function pa(n,e){Ed(n,(t,i,s)=>{if(typeof t<"u"){for(const[r,o]of e)if(t===r){s(n,o);return}}})}function hVe(n){wp.items.forEach(e=>e.apply(n))}pa("wordWrap",[[!0,"on"],[!1,"off"]]);pa("lineNumbers",[[!0,"on"],[!1,"off"]]);pa("cursorBlinking",[["visible","solid"]]);pa("renderWhitespace",[[!0,"boundary"],[!1,"none"]]);pa("renderLineHighlight",[[!0,"line"],[!1,"none"]]);pa("acceptSuggestionOnEnter",[[!0,"on"],[!1,"off"]]);pa("tabCompletion",[[!1,"off"],[!0,"onlySnippets"]]);pa("hover",[[!0,{enabled:!0}],[!1,{enabled:!1}]]);pa("parameterHints",[[!0,{enabled:!0}],[!1,{enabled:!1}]]);pa("autoIndent",[[!1,"advanced"],[!0,"full"]]);pa("matchBrackets",[[!0,"always"],[!1,"never"]]);pa("renderFinalNewline",[[!0,"on"],[!1,"off"]]);pa("cursorSmoothCaretAnimation",[[!0,"on"],[!1,"off"]]);pa("occurrencesHighlight",[[!0,"singleFile"],[!1,"off"]]);pa("wordBasedSuggestions",[[!0,"matchingDocuments"],[!1,"off"]]);Ed("autoClosingBrackets",(n,e,t)=>{n===!1&&(t("autoClosingBrackets","never"),typeof e("autoClosingQuotes")>"u"&&t("autoClosingQuotes","never"),typeof e("autoSurround")>"u"&&t("autoSurround","never"))});Ed("renderIndentGuides",(n,e,t)=>{typeof n<"u"&&(t("renderIndentGuides",void 0),typeof e("guides.indentation")>"u"&&t("guides.indentation",!!n))});Ed("highlightActiveIndentGuide",(n,e,t)=>{typeof n<"u"&&(t("highlightActiveIndentGuide",void 0),typeof e("guides.highlightActiveIndentation")>"u"&&t("guides.highlightActiveIndentation",!!n))});const dVe={method:"showMethods",function:"showFunctions",constructor:"showConstructors",deprecated:"showDeprecated",field:"showFields",variable:"showVariables",class:"showClasses",struct:"showStructs",interface:"showInterfaces",module:"showModules",property:"showProperties",event:"showEvents",operator:"showOperators",unit:"showUnits",value:"showValues",constant:"showConstants",enum:"showEnums",enumMember:"showEnumMembers",keyword:"showKeywords",text:"showWords",color:"showColors",file:"showFiles",reference:"showReferences",folder:"showFolders",typeParameter:"showTypeParameters",snippet:"showSnippets"};Ed("suggest.filteredTypes",(n,e,t)=>{if(n&&typeof n=="object"){for(const i of Object.entries(dVe))n[i[0]]===!1&&typeof e(`suggest.${i[1]}`)>"u"&&t(`suggest.${i[1]}`,!1);t("suggest.filteredTypes",void 0)}});Ed("quickSuggestions",(n,e,t)=>{if(typeof n=="boolean"){const i=n?"on":"off";t("quickSuggestions",{comments:i,strings:i,other:i})}});Ed("experimental.stickyScroll.enabled",(n,e,t)=>{typeof n=="boolean"&&(t("experimental.stickyScroll.enabled",void 0),typeof e("stickyScroll.enabled")>"u"&&t("stickyScroll.enabled",n))});Ed("experimental.stickyScroll.maxLineCount",(n,e,t)=>{typeof n=="number"&&(t("experimental.stickyScroll.maxLineCount",void 0),typeof e("stickyScroll.maxLineCount")>"u"&&t("stickyScroll.maxLineCount",n))});Ed("codeActionsOnSave",(n,e,t)=>{if(n&&typeof n=="object"){let i=!1;const s={};for(const r of Object.entries(n))typeof r[1]=="boolean"?(i=!0,s[r[0]]=r[1]?"explicit":"never"):s[r[0]]=r[1];i&&t("codeActionsOnSave",s)}});Ed("codeActionWidget.includeNearbyQuickfixes",(n,e,t)=>{typeof n=="boolean"&&(t("codeActionWidget.includeNearbyQuickfixes",void 0),typeof e("codeActionWidget.includeNearbyQuickFixes")>"u"&&t("codeActionWidget.includeNearbyQuickFixes",n))});class fVe{constructor(){this._tabFocus=!1,this._onDidChangeTabFocus=new ue,this.onDidChangeTabFocus=this._onDidChangeTabFocus.event}getTabFocusMode(){return this._tabFocus}setTabFocusMode(e){this._tabFocus=e,this._onDidChangeTabFocus.fire(this._tabFocus)}}const _y=new fVe,Dd=Bt("accessibilityService"),_E=new ze("accessibilityModeEnabled",!1),MO=Bt("accessibleNotificationService");var gVe=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},pVe=function(n,e){return function(t,i){e(t,i,n)}};let f9=class extends pe{constructor(e,t,i,s){super(),this._accessibilityService=s,this._onDidChange=this._register(new ue),this.onDidChange=this._onDidChange.event,this._onDidChangeFast=this._register(new ue),this.onDidChangeFast=this._onDidChangeFast.event,this._isDominatedByLongLines=!1,this._viewLineCount=1,this._lineNumbersDigitCount=1,this._reservedHeight=0,this._glyphMarginDecorationLaneCount=1,this._computeOptionsMemory=new dpe,this.isSimpleWidget=e,this._containerObserver=this._register(new cpe(i,t.dimension)),this._rawOptions=tee(t),this._validatedOptions=Ug.validateOptions(this._rawOptions),this.options=this._computeOptions(),this.options.get(13)&&this._containerObserver.startObserving(),this._register(_l.onDidChangeZoomLevel(()=>this._recomputeOptions())),this._register(_y.onDidChangeTabFocus(()=>this._recomputeOptions())),this._register(this._containerObserver.onDidChange(()=>this._recomputeOptions())),this._register(d9.onDidChange(()=>this._recomputeOptions())),this._register(uL.onDidChange(()=>this._recomputeOptions())),this._register(this._accessibilityService.onDidChangeScreenReaderOptimized(()=>this._recomputeOptions()))}_recomputeOptions(){const e=this._computeOptions(),t=Ug.checkEquals(this.options,e);t!==null&&(this.options=e,this._onDidChangeFast.fire(t),this._onDidChange.fire(t))}_computeOptions(){const e=this._readEnvConfiguration(),t=r_.createFromValidatedSettings(this._validatedOptions,e.pixelRatio,this.isSimpleWidget),i=this._readFontInfo(t),s={memory:this._computeOptionsMemory,outerWidth:e.outerWidth,outerHeight:e.outerHeight-this._reservedHeight,fontInfo:i,extraEditorClassName:e.extraEditorClassName,isDominatedByLongLines:this._isDominatedByLongLines,viewLineCount:this._viewLineCount,lineNumbersDigitCount:this._lineNumbersDigitCount,emptySelectionClipboard:e.emptySelectionClipboard,pixelRatio:e.pixelRatio,tabFocusMode:_y.getTabFocusMode(),accessibilitySupport:e.accessibilitySupport,glyphMarginDecorationLaneCount:this._glyphMarginDecorationLaneCount};return Ug.computeOptions(this._validatedOptions,s)}_readEnvConfiguration(){return{extraEditorClassName:_Ve(),outerWidth:this._containerObserver.getWidth(),outerHeight:this._containerObserver.getHeight(),emptySelectionClipboard:n_||Ol,pixelRatio:uL.value,accessibilitySupport:this._accessibilityService.isScreenReaderOptimized()?2:this._accessibilityService.getAccessibilitySupport()}}_readFontInfo(e){return d9.readFontInfo(e)}getRawOptions(){return this._rawOptions}updateOptions(e){const t=tee(e);Ug.applyUpdate(this._rawOptions,t)&&(this._validatedOptions=Ug.validateOptions(this._rawOptions),this._recomputeOptions())}observeContainer(e){this._containerObserver.observe(e)}setIsDominatedByLongLines(e){this._isDominatedByLongLines!==e&&(this._isDominatedByLongLines=e,this._recomputeOptions())}setModelLineCount(e){const t=mVe(e);this._lineNumbersDigitCount!==t&&(this._lineNumbersDigitCount=t,this._recomputeOptions())}setViewLineCount(e){this._viewLineCount!==e&&(this._viewLineCount=e,this._recomputeOptions())}setReservedHeight(e){this._reservedHeight!==e&&(this._reservedHeight=e,this._recomputeOptions())}setGlyphMarginDecorationLaneCount(e){this._glyphMarginDecorationLaneCount!==e&&(this._glyphMarginDecorationLaneCount=e,this._recomputeOptions())}};f9=gVe([pVe(3,Dd)],f9);function mVe(n){let e=0;for(;n;)n=Math.floor(n/10),e++;return e||1}function _Ve(){let n="";return!Gf&&!Mfe&&(n+="no-user-select "),Gf&&(n+="no-minimap-shadow ",n+="enable-user-select "),Gt&&(n+="mac "),n}class vVe{constructor(){this._values=[]}_read(e){return this._values[e]}get(e){return this._values[e]}_write(e,t){this._values[e]=t}}class bVe{constructor(){this._values=[]}_read(e){if(e>=this._values.length)throw new Error("Cannot read uninitialized value");return this._values[e]}get(e){return this._read(e)}_write(e,t){this._values[e]=t}}class Ug{static validateOptions(e){const t=new vVe;for(const i of B0){const s=i.name==="_never_"?void 0:e[i.name];t._write(i.id,i.validate(s))}return t}static computeOptions(e,t){const i=new bVe;for(const s of B0)i._write(s.id,s.compute(t,i,e._read(s.id)));return i}static _deepEquals(e,t){if(typeof e!="object"||typeof t!="object"||!e||!t)return e===t;if(Array.isArray(e)||Array.isArray(t))return Array.isArray(e)&&Array.isArray(t)?On(e,t):!1;if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const i in e)if(!Ug._deepEquals(e[i],t[i]))return!1;return!0}static checkEquals(e,t){const i=[];let s=!1;for(const r of B0){const o=!Ug._deepEquals(e._read(r.id),t._read(r.id));i[r.id]=o,o&&(s=!0)}return s?new hpe(i):null}static applyUpdate(e,t){let i=!1;for(const s of B0)if(t.hasOwnProperty(s.name)){const r=s.applyUpdate(e[s.name],t[s.name]);e[s.name]=r.newValue,i=i||r.didChange}return i}}function tee(n){const e=ef(n);return hVe(e),e}function ts(n,e,t){let i=null,s=null;if(typeof t.value=="function"?(i="value",s=t.value,s.length!==0&&console.warn("Memoize should only be used in functions with zero parameters")):typeof t.get=="function"&&(i="get",s=t.get),!s)throw new Error("not supported");const r=`$memoize$${e}`;t[i]=function(...o){return this.hasOwnProperty(r)||Object.defineProperty(this,r,{configurable:!1,enumerable:!1,writable:!1,value:s.apply(this,o)}),this[r]}}var yVe=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},Oi;(function(n){n.Tap="-monaco-gesturetap",n.Change="-monaco-gesturechange",n.Start="-monaco-gesturestart",n.End="-monaco-gesturesend",n.Contextmenu="-monaco-gesturecontextmenu"})(Oi||(Oi={}));class Ri extends pe{constructor(){super(),this.dispatched=!1,this.targets=new oo,this.ignoreTargets=new oo,this.activeTouches={},this.handle=null,this._lastSetTapCountTime=0,this._register(Ve.runAndSubscribe(Kj,({window:e,disposables:t})=>{t.add(Ce(e.document,"touchstart",i=>this.onTouchStart(i),{passive:!1})),t.add(Ce(e.document,"touchend",i=>this.onTouchEnd(e,i))),t.add(Ce(e.document,"touchmove",i=>this.onTouchMove(i),{passive:!1}))},{window:mn,disposables:this._store}))}static addTarget(e){if(!Ri.isTouchDevice())return pe.None;Ri.INSTANCE||(Ri.INSTANCE=new Ri);const t=Ri.INSTANCE.targets.push(e);return st(t)}static ignoreTarget(e){if(!Ri.isTouchDevice())return pe.None;Ri.INSTANCE||(Ri.INSTANCE=new Ri);const t=Ri.INSTANCE.ignoreTargets.push(e);return st(t)}static isTouchDevice(){return"ontouchstart"in mn||navigator.maxTouchPoints>0}dispose(){this.handle&&(this.handle.dispose(),this.handle=null),super.dispose()}onTouchStart(e){const t=Date.now();this.handle&&(this.handle.dispose(),this.handle=null);for(let i=0,s=e.targetTouches.length;i<s;i++){const r=e.targetTouches.item(i);this.activeTouches[r.identifier]={id:r.identifier,initialTarget:r.target,initialTimeStamp:t,initialPageX:r.pageX,initialPageY:r.pageY,rollingTimestamps:[t],rollingPageX:[r.pageX],rollingPageY:[r.pageY]};const o=this.newGestureEvent(Oi.Start,r.target);o.pageX=r.pageX,o.pageY=r.pageY,this.dispatchEvent(o)}this.dispatched&&(e.preventDefault(),e.stopPropagation(),this.dispatched=!1)}onTouchEnd(e,t){const i=Date.now(),s=Object.keys(this.activeTouches).length;for(let r=0,o=t.changedTouches.length;r<o;r++){const a=t.changedTouches.item(r);if(!this.activeTouches.hasOwnProperty(String(a.identifier))){console.warn("move of an UNKNOWN touch",a);continue}const l=this.activeTouches[a.identifier],c=Date.now()-l.initialTimeStamp;if(c<Ri.HOLD_DELAY&&Math.abs(l.initialPageX-ll(l.rollingPageX))<30&&Math.abs(l.initialPageY-ll(l.rollingPageY))<30){const u=this.newGestureEvent(Oi.Tap,l.initialTarget);u.pageX=ll(l.rollingPageX),u.pageY=ll(l.rollingPageY),this.dispatchEvent(u)}else if(c>=Ri.HOLD_DELAY&&Math.abs(l.initialPageX-ll(l.rollingPageX))<30&&Math.abs(l.initialPageY-ll(l.rollingPageY))<30){const u=this.newGestureEvent(Oi.Contextmenu,l.initialTarget);u.pageX=ll(l.rollingPageX),u.pageY=ll(l.rollingPageY),this.dispatchEvent(u)}else if(s===1){const u=ll(l.rollingPageX),h=ll(l.rollingPageY),d=ll(l.rollingTimestamps)-l.rollingTimestamps[0],f=u-l.rollingPageX[0],g=h-l.rollingPageY[0],p=[...this.targets].filter(m=>l.initialTarget instanceof Node&&m.contains(l.initialTarget));this.inertia(e,p,i,Math.abs(f)/d,f>0?1:-1,u,Math.abs(g)/d,g>0?1:-1,h)}this.dispatchEvent(this.newGestureEvent(Oi.End,l.initialTarget)),delete this.activeTouches[a.identifier]}this.dispatched&&(t.preventDefault(),t.stopPropagation(),this.dispatched=!1)}newGestureEvent(e,t){const i=document.createEvent("CustomEvent");return i.initEvent(e,!1,!0),i.initialTarget=t,i.tapCount=0,i}dispatchEvent(e){if(e.type===Oi.Tap){const t=new Date().getTime();let i=0;t-this._lastSetTapCountTime>Ri.CLEAR_TAP_COUNT_TIME?i=1:i=2,this._lastSetTapCountTime=t,e.tapCount=i}else(e.type===Oi.Change||e.type===Oi.Contextmenu)&&(this._lastSetTapCountTime=0);if(e.initialTarget instanceof Node){for(const t of this.ignoreTargets)if(t.contains(e.initialTarget))return;for(const t of this.targets)t.contains(e.initialTarget)&&(t.dispatchEvent(e),this.dispatched=!0)}}inertia(e,t,i,s,r,o,a,l,c){this.handle=ua(e,()=>{const u=Date.now(),h=u-i;let d=0,f=0,g=!0;s+=Ri.SCROLL_FRICTION*h,a+=Ri.SCROLL_FRICTION*h,s>0&&(g=!1,d=r*s*h),a>0&&(g=!1,f=l*a*h);const p=this.newGestureEvent(Oi.Change);p.translationX=d,p.translationY=f,t.forEach(m=>m.dispatchEvent(p)),g||this.inertia(e,t,u,s,r,o+d,a,l,c+f)})}onTouchMove(e){const t=Date.now();for(let i=0,s=e.changedTouches.length;i<s;i++){const r=e.changedTouches.item(i);if(!this.activeTouches.hasOwnProperty(String(r.identifier))){console.warn("end of an UNKNOWN touch",r);continue}const o=this.activeTouches[r.identifier],a=this.newGestureEvent(Oi.Change,o.initialTarget);a.translationX=r.pageX-ll(o.rollingPageX),a.translationY=r.pageY-ll(o.rollingPageY),a.pageX=r.pageX,a.pageY=r.pageY,this.dispatchEvent(a),o.rollingPageX.length>3&&(o.rollingPageX.shift(),o.rollingPageY.shift(),o.rollingTimestamps.shift()),o.rollingPageX.push(r.pageX),o.rollingPageY.push(r.pageY),o.rollingTimestamps.push(t)}this.dispatched&&(e.preventDefault(),e.stopPropagation(),this.dispatched=!1)}}Ri.SCROLL_FRICTION=-.005;Ri.HOLD_DELAY=700;Ri.CLEAR_TAP_COUNT_TIME=400;yVe([ts],Ri,"isTouchDevice",null);class AC{constructor(){this._hooks=new xe,this._pointerMoveCallback=null,this._onStopCallback=null}dispose(){this.stopMonitoring(!1),this._hooks.dispose()}stopMonitoring(e,t){if(!this.isMonitoring())return;this._hooks.clear(),this._pointerMoveCallback=null;const i=this._onStopCallback;this._onStopCallback=null,e&&i&&i(t)}isMonitoring(){return!!this._pointerMoveCallback}startMonitoring(e,t,i,s,r){this.isMonitoring()&&this.stopMonitoring(!1),this._pointerMoveCallback=s,this._onStopCallback=r;let o=e;try{e.setPointerCapture(t),this._hooks.add(st(()=>{try{e.releasePointerCapture(t)}catch{}}))}catch{o=pt(e)}this._hooks.add(Ce(o,We.POINTER_MOVE,a=>{if(a.buttons!==i){this.stopMonitoring(!0);return}a.preventDefault(),this._pointerMoveCallback(a)})),this._hooks.add(Ce(o,We.POINTER_UP,a=>this.stopMonitoring(!0)))}}function Sp(n,e){const t=Math.pow(10,e);return Math.round(n*t)/t}class Kt{constructor(e,t,i,s=1){this._rgbaBrand=void 0,this.r=Math.min(255,Math.max(0,e))|0,this.g=Math.min(255,Math.max(0,t))|0,this.b=Math.min(255,Math.max(0,i))|0,this.a=Sp(Math.max(Math.min(1,s),0),3)}static equals(e,t){return e.r===t.r&&e.g===t.g&&e.b===t.b&&e.a===t.a}}class nc{constructor(e,t,i,s){this._hslaBrand=void 0,this.h=Math.max(Math.min(360,e),0)|0,this.s=Sp(Math.max(Math.min(1,t),0),3),this.l=Sp(Math.max(Math.min(1,i),0),3),this.a=Sp(Math.max(Math.min(1,s),0),3)}static equals(e,t){return e.h===t.h&&e.s===t.s&&e.l===t.l&&e.a===t.a}static fromRGBA(e){const t=e.r/255,i=e.g/255,s=e.b/255,r=e.a,o=Math.max(t,i,s),a=Math.min(t,i,s);let l=0,c=0;const u=(a+o)/2,h=o-a;if(h>0){switch(c=Math.min(u<=.5?h/(2*u):h/(2-2*u),1),o){case t:l=(i-s)/h+(i<s?6:0);break;case i:l=(s-t)/h+2;break;case s:l=(t-i)/h+4;break}l*=60,l=Math.round(l)}return new nc(l,c,u,r)}static _hue2rgb(e,t,i){return i<0&&(i+=1),i>1&&(i-=1),i<1/6?e+(t-e)*6*i:i<1/2?t:i<2/3?e+(t-e)*(2/3-i)*6:e}static toRGBA(e){const t=e.h/360,{s:i,l:s,a:r}=e;let o,a,l;if(i===0)o=a=l=s;else{const c=s<.5?s*(1+i):s+i-s*i,u=2*s-c;o=nc._hue2rgb(u,c,t+1/3),a=nc._hue2rgb(u,c,t),l=nc._hue2rgb(u,c,t-1/3)}return new Kt(Math.round(o*255),Math.round(a*255),Math.round(l*255),r)}}class Nh{constructor(e,t,i,s){this._hsvaBrand=void 0,this.h=Math.max(Math.min(360,e),0)|0,this.s=Sp(Math.max(Math.min(1,t),0),3),this.v=Sp(Math.max(Math.min(1,i),0),3),this.a=Sp(Math.max(Math.min(1,s),0),3)}static equals(e,t){return e.h===t.h&&e.s===t.s&&e.v===t.v&&e.a===t.a}static fromRGBA(e){const t=e.r/255,i=e.g/255,s=e.b/255,r=Math.max(t,i,s),o=Math.min(t,i,s),a=r-o,l=r===0?0:a/r;let c;return a===0?c=0:r===t?c=((i-s)/a%6+6)%6:r===i?c=(s-t)/a+2:c=(t-i)/a+4,new Nh(Math.round(c*60),l,r,e.a)}static toRGBA(e){const{h:t,s:i,v:s,a:r}=e,o=s*i,a=o*(1-Math.abs(t/60%2-1)),l=s-o;let[c,u,h]=[0,0,0];return t<60?(c=o,u=a):t<120?(c=a,u=o):t<180?(u=o,h=a):t<240?(u=a,h=o):t<300?(c=a,h=o):t<=360&&(c=o,h=a),c=Math.round((c+l)*255),u=Math.round((u+l)*255),h=Math.round((h+l)*255),new Kt(c,u,h,r)}}class me{static fromHex(e){return me.Format.CSS.parseHex(e)||me.red}static equals(e,t){return!e&&!t?!0:!e||!t?!1:e.equals(t)}get hsla(){return this._hsla?this._hsla:nc.fromRGBA(this.rgba)}get hsva(){return this._hsva?this._hsva:Nh.fromRGBA(this.rgba)}constructor(e){if(e)if(e instanceof Kt)this.rgba=e;else if(e instanceof nc)this._hsla=e,this.rgba=nc.toRGBA(e);else if(e instanceof Nh)this._hsva=e,this.rgba=Nh.toRGBA(e);else throw new Error("Invalid color ctor argument");else throw new Error("Color needs a value")}equals(e){return!!e&&Kt.equals(this.rgba,e.rgba)&&nc.equals(this.hsla,e.hsla)&&Nh.equals(this.hsva,e.hsva)}getRelativeLuminance(){const e=me._relativeLuminanceForComponent(this.rgba.r),t=me._relativeLuminanceForComponent(this.rgba.g),i=me._relativeLuminanceForComponent(this.rgba.b),s=.2126*e+.7152*t+.0722*i;return Sp(s,4)}static _relativeLuminanceForComponent(e){const t=e/255;return t<=.03928?t/12.92:Math.pow((t+.055)/1.055,2.4)}isLighter(){return(this.rgba.r*299+this.rgba.g*587+this.rgba.b*114)/1e3>=128}isLighterThan(e){const t=this.getRelativeLuminance(),i=e.getRelativeLuminance();return t>i}isDarkerThan(e){const t=this.getRelativeLuminance(),i=e.getRelativeLuminance();return t<i}lighten(e){return new me(new nc(this.hsla.h,this.hsla.s,this.hsla.l+this.hsla.l*e,this.hsla.a))}darken(e){return new me(new nc(this.hsla.h,this.hsla.s,this.hsla.l-this.hsla.l*e,this.hsla.a))}transparent(e){const{r:t,g:i,b:s,a:r}=this.rgba;return new me(new Kt(t,i,s,r*e))}isTransparent(){return this.rgba.a===0}isOpaque(){return this.rgba.a===1}opposite(){return new me(new Kt(255-this.rgba.r,255-this.rgba.g,255-this.rgba.b,this.rgba.a))}makeOpaque(e){if(this.isOpaque()||e.rgba.a!==1)return this;const{r:t,g:i,b:s,a:r}=this.rgba;return new me(new Kt(e.rgba.r-r*(e.rgba.r-t),e.rgba.g-r*(e.rgba.g-i),e.rgba.b-r*(e.rgba.b-s),1))}toString(){return this._toString||(this._toString=me.Format.CSS.format(this)),this._toString}static getLighterColor(e,t,i){if(e.isLighterThan(t))return e;i=i||.5;const s=e.getRelativeLuminance(),r=t.getRelativeLuminance();return i=i*(r-s)/r,e.lighten(i)}static getDarkerColor(e,t,i){if(e.isDarkerThan(t))return e;i=i||.5;const s=e.getRelativeLuminance(),r=t.getRelativeLuminance();return i=i*(s-r)/s,e.darken(i)}}me.white=new me(new Kt(255,255,255,1));me.black=new me(new Kt(0,0,0,1));me.red=new me(new Kt(255,0,0,1));me.blue=new me(new Kt(0,0,255,1));me.green=new me(new Kt(0,255,0,1));me.cyan=new me(new Kt(0,255,255,1));me.lightgrey=new me(new Kt(211,211,211,1));me.transparent=new me(new Kt(0,0,0,0));(function(n){(function(e){(function(t){function i(f){return f.rgba.a===1?`rgb(${f.rgba.r}, ${f.rgba.g}, ${f.rgba.b})`:n.Format.CSS.formatRGBA(f)}t.formatRGB=i;function s(f){return`rgba(${f.rgba.r}, ${f.rgba.g}, ${f.rgba.b}, ${+f.rgba.a.toFixed(2)})`}t.formatRGBA=s;function r(f){return f.hsla.a===1?`hsl(${f.hsla.h}, ${(f.hsla.s*100).toFixed(2)}%, ${(f.hsla.l*100).toFixed(2)}%)`:n.Format.CSS.formatHSLA(f)}t.formatHSL=r;function o(f){return`hsla(${f.hsla.h}, ${(f.hsla.s*100).toFixed(2)}%, ${(f.hsla.l*100).toFixed(2)}%, ${f.hsla.a.toFixed(2)})`}t.formatHSLA=o;function a(f){const g=f.toString(16);return g.length!==2?"0"+g:g}function l(f){return`#${a(f.rgba.r)}${a(f.rgba.g)}${a(f.rgba.b)}`}t.formatHex=l;function c(f,g=!1){return g&&f.rgba.a===1?n.Format.CSS.formatHex(f):`#${a(f.rgba.r)}${a(f.rgba.g)}${a(f.rgba.b)}${a(Math.round(f.rgba.a*255))}`}t.formatHexA=c;function u(f){return f.isOpaque()?n.Format.CSS.formatHex(f):n.Format.CSS.formatRGBA(f)}t.format=u;function h(f){const g=f.length;if(g===0||f.charCodeAt(0)!==35)return null;if(g===7){const p=16*d(f.charCodeAt(1))+d(f.charCodeAt(2)),m=16*d(f.charCodeAt(3))+d(f.charCodeAt(4)),_=16*d(f.charCodeAt(5))+d(f.charCodeAt(6));return new n(new Kt(p,m,_,1))}if(g===9){const p=16*d(f.charCodeAt(1))+d(f.charCodeAt(2)),m=16*d(f.charCodeAt(3))+d(f.charCodeAt(4)),_=16*d(f.charCodeAt(5))+d(f.charCodeAt(6)),b=16*d(f.charCodeAt(7))+d(f.charCodeAt(8));return new n(new Kt(p,m,_,b/255))}if(g===4){const p=d(f.charCodeAt(1)),m=d(f.charCodeAt(2)),_=d(f.charCodeAt(3));return new n(new Kt(16*p+p,16*m+m,16*_+_))}if(g===5){const p=d(f.charCodeAt(1)),m=d(f.charCodeAt(2)),_=d(f.charCodeAt(3)),b=d(f.charCodeAt(4));return new n(new Kt(16*p+p,16*m+m,16*_+_,(16*b+b)/255))}return null}t.parseHex=h;function d(f){switch(f){case 48:return 0;case 49:return 1;case 50:return 2;case 51:return 3;case 52:return 4;case 53:return 5;case 54:return 6;case 55:return 7;case 56:return 8;case 57:return 9;case 97:return 10;case 65:return 10;case 98:return 11;case 66:return 11;case 99:return 12;case 67:return 12;case 100:return 13;case 68:return 13;case 101:return 14;case 69:return 14;case 102:return 15;case 70:return 15}return 0}})(e.CSS||(e.CSS={}))})(n.Format||(n.Format={}))})(me||(me={}));function lq(n){return`--vscode-${n.replace(/\./g,"-")}`}function Ue(n){return`var(${lq(n)})`}function CVe(n,e){return`var(${lq(n)}, ${e})`}const fpe={ColorContribution:"base.contributions.colors"};class wVe{constructor(){this._onDidChangeSchema=new ue,this.onDidChangeSchema=this._onDidChangeSchema.event,this.colorSchema={type:"object",properties:{}},this.colorReferenceSchema={type:"string",enum:[],enumDescriptions:[]},this.colorsById={}}registerColor(e,t,i,s=!1,r){const o={id:e,description:i,defaults:t,needsTransparency:s,deprecationMessage:r};this.colorsById[e]=o;const a={type:"string",description:i,format:"color-hex",defaultSnippets:[{body:"${1:#ff0000}"}]};return r&&(a.deprecationMessage=r),this.colorSchema.properties[e]=a,this.colorReferenceSchema.enum.push(e),this.colorReferenceSchema.enumDescriptions.push(i),this._onDidChangeSchema.fire(),e}getColors(){return Object.keys(this.colorsById).map(e=>this.colorsById[e])}resolveDefaultColor(e,t){const i=this.colorsById[e];if(i&&i.defaults){const s=i.defaults[t.type];return Uc(s,t)}}getColorSchema(){return this.colorSchema}toString(){const e=(t,i)=>{const s=t.indexOf(".")===-1?0:1,r=i.indexOf(".")===-1?0:1;return s!==r?s-r:t.localeCompare(i)};return Object.keys(this.colorsById).sort(e).map(t=>`- \`${t}\`: ${this.colorsById[t].description}`).join(` +`)}}const OO=new wVe;vn.add(fpe.ColorContribution,OO);function U(n,e,t,i,s){return OO.registerColor(n,e,t,i,s)}const Re=U("foreground",{dark:"#CCCCCC",light:"#616161",hcDark:"#FFFFFF",hcLight:"#292929"},v("foreground","Overall foreground color. This color is only used if not overridden by a component."));U("disabledForeground",{dark:"#CCCCCC80",light:"#61616180",hcDark:"#A5A5A5",hcLight:"#7F7F7F"},v("disabledForeground","Overall foreground for disabled elements. This color is only used if not overridden by a component."));const SVe=U("errorForeground",{dark:"#F48771",light:"#A1260D",hcDark:"#F48771",hcLight:"#B5200D"},v("errorForeground","Overall foreground color for error messages. This color is only used if not overridden by a component."));U("descriptionForeground",{light:"#717171",dark:Je(Re,.7),hcDark:Je(Re,.7),hcLight:Je(Re,.7)},v("descriptionForeground","Foreground color for description text providing additional information, for example for a label."));const cc=U("icon.foreground",{dark:"#C5C5C5",light:"#424242",hcDark:"#FFFFFF",hcLight:"#292929"},v("iconForeground","The default color for icons in the workbench.")),$a=U("focusBorder",{dark:"#007FD4",light:"#0090F1",hcDark:"#F38518",hcLight:"#006BBD"},v("focusBorder","Overall border color for focused elements. This color is only used if not overridden by a component.")),zt=U("contrastBorder",{light:null,dark:null,hcDark:"#6FC3DF",hcLight:"#0F4A85"},v("contrastBorder","An extra border around elements to separate them from others for greater contrast.")),Gi=U("contrastActiveBorder",{light:null,dark:null,hcDark:$a,hcLight:$a},v("activeContrastBorder","An extra border around active elements to separate them from others for greater contrast."));U("selection.background",{light:null,dark:null,hcDark:null,hcLight:null},v("selectionBackground","The background color of text selections in the workbench (e.g. for input fields or text areas). Note that this does not apply to selections within the editor."));U("textSeparator.foreground",{light:"#0000002e",dark:"#ffffff2e",hcDark:me.black,hcLight:"#292929"},v("textSeparatorForeground","Color for text separators."));const kVe=U("textLink.foreground",{light:"#006AB1",dark:"#3794FF",hcDark:"#3794FF",hcLight:"#0F4A85"},v("textLinkForeground","Foreground color for links in text."));U("textLink.activeForeground",{light:"#006AB1",dark:"#3794FF",hcDark:"#3794FF",hcLight:"#0F4A85"},v("textLinkActiveForeground","Foreground color for links in text when clicked on and on mouse hover."));U("textPreformat.foreground",{light:"#A31515",dark:"#D7BA7D",hcDark:"#000000",hcLight:"#FFFFFF"},v("textPreformatForeground","Foreground color for preformatted text segments."));U("textPreformat.background",{light:"#0000001A",dark:"#FFFFFF1A",hcDark:"#FFFFFF",hcLight:"#09345f"},v("textPreformatBackground","Background color for preformatted text segments."));U("textBlockQuote.background",{light:"#f2f2f2",dark:"#222222",hcDark:null,hcLight:"#F2F2F2"},v("textBlockQuoteBackground","Background color for block quotes in text."));U("textBlockQuote.border",{light:"#007acc80",dark:"#007acc80",hcDark:me.white,hcLight:"#292929"},v("textBlockQuoteBorder","Border color for block quotes in text."));U("textCodeBlock.background",{light:"#dcdcdc66",dark:"#0a0a0a66",hcDark:me.black,hcLight:"#F2F2F2"},v("textCodeBlockBackground","Background color for code blocks in text."));const Ah=U("widget.shadow",{dark:Je(me.black,.36),light:Je(me.black,.16),hcDark:null,hcLight:null},v("widgetShadow","Shadow color of widgets such as find/replace inside the editor.")),cq=U("widget.border",{dark:null,light:null,hcDark:zt,hcLight:zt},v("widgetBorder","Border color of widgets such as find/replace inside the editor.")),gpe=U("input.background",{dark:"#3C3C3C",light:me.white,hcDark:me.black,hcLight:me.white},v("inputBoxBackground","Input box background.")),ppe=U("input.foreground",{dark:Re,light:Re,hcDark:Re,hcLight:Re},v("inputBoxForeground","Input box foreground.")),mpe=U("input.border",{dark:null,light:null,hcDark:zt,hcLight:zt},v("inputBoxBorder","Input box border.")),uq=U("inputOption.activeBorder",{dark:"#007ACC",light:"#007ACC",hcDark:zt,hcLight:zt},v("inputBoxActiveOptionBorder","Border color of activated options in input fields."));U("inputOption.hoverBackground",{dark:"#5a5d5e80",light:"#b8b8b850",hcDark:null,hcLight:null},v("inputOption.hoverBackground","Background color of activated options in input fields."));const F1=U("inputOption.activeBackground",{dark:Je($a,.4),light:Je($a,.2),hcDark:me.transparent,hcLight:me.transparent},v("inputOption.activeBackground","Background hover color of options in input fields.")),hq=U("inputOption.activeForeground",{dark:me.white,light:me.black,hcDark:Re,hcLight:Re},v("inputOption.activeForeground","Foreground color of activated options in input fields."));U("input.placeholderForeground",{light:Je(Re,.5),dark:Je(Re,.5),hcDark:Je(Re,.7),hcLight:Je(Re,.7)},v("inputPlaceholderForeground","Input box foreground color for placeholder text."));const LVe=U("inputValidation.infoBackground",{dark:"#063B49",light:"#D6ECF2",hcDark:me.black,hcLight:me.white},v("inputValidationInfoBackground","Input validation background color for information severity.")),xVe=U("inputValidation.infoForeground",{dark:null,light:null,hcDark:null,hcLight:Re},v("inputValidationInfoForeground","Input validation foreground color for information severity.")),EVe=U("inputValidation.infoBorder",{dark:"#007acc",light:"#007acc",hcDark:zt,hcLight:zt},v("inputValidationInfoBorder","Input validation border color for information severity.")),DVe=U("inputValidation.warningBackground",{dark:"#352A05",light:"#F6F5D2",hcDark:me.black,hcLight:me.white},v("inputValidationWarningBackground","Input validation background color for warning severity.")),IVe=U("inputValidation.warningForeground",{dark:null,light:null,hcDark:null,hcLight:Re},v("inputValidationWarningForeground","Input validation foreground color for warning severity.")),TVe=U("inputValidation.warningBorder",{dark:"#B89500",light:"#B89500",hcDark:zt,hcLight:zt},v("inputValidationWarningBorder","Input validation border color for warning severity.")),NVe=U("inputValidation.errorBackground",{dark:"#5A1D1D",light:"#F2DEDE",hcDark:me.black,hcLight:me.white},v("inputValidationErrorBackground","Input validation background color for error severity.")),AVe=U("inputValidation.errorForeground",{dark:null,light:null,hcDark:null,hcLight:Re},v("inputValidationErrorForeground","Input validation foreground color for error severity.")),PVe=U("inputValidation.errorBorder",{dark:"#BE1100",light:"#BE1100",hcDark:zt,hcLight:zt},v("inputValidationErrorBorder","Input validation border color for error severity.")),Ph=U("dropdown.background",{dark:"#3C3C3C",light:me.white,hcDark:me.black,hcLight:me.white},v("dropdownBackground","Dropdown background.")),RVe=U("dropdown.listBackground",{dark:null,light:null,hcDark:me.black,hcLight:me.white},v("dropdownListBackground","Dropdown list background.")),wf=U("dropdown.foreground",{dark:"#F0F0F0",light:Re,hcDark:me.white,hcLight:Re},v("dropdownForeground","Dropdown foreground.")),W0=U("dropdown.border",{dark:Ph,light:"#CECECE",hcDark:zt,hcLight:zt},v("dropdownBorder","Dropdown border.")),hS=U("button.foreground",{dark:me.white,light:me.white,hcDark:me.white,hcLight:me.white},v("buttonForeground","Button foreground color.")),MVe=U("button.separator",{dark:Je(hS,.4),light:Je(hS,.4),hcDark:Je(hS,.4),hcLight:Je(hS,.4)},v("buttonSeparator","Button separator color.")),dS=U("button.background",{dark:"#0E639C",light:"#007ACC",hcDark:null,hcLight:"#0F4A85"},v("buttonBackground","Button background color.")),OVe=U("button.hoverBackground",{dark:vc(dS,.2),light:Nm(dS,.2),hcDark:dS,hcLight:dS},v("buttonHoverBackground","Button background color when hovering.")),FVe=U("button.border",{dark:zt,light:zt,hcDark:zt,hcLight:zt},v("buttonBorder","Button border color.")),BVe=U("button.secondaryForeground",{dark:me.white,light:me.white,hcDark:me.white,hcLight:Re},v("buttonSecondaryForeground","Secondary button foreground color.")),g9=U("button.secondaryBackground",{dark:"#3A3D41",light:"#5F6A79",hcDark:null,hcLight:me.white},v("buttonSecondaryBackground","Secondary button background color.")),WVe=U("button.secondaryHoverBackground",{dark:vc(g9,.2),light:Nm(g9,.2),hcDark:null,hcLight:null},v("buttonSecondaryHoverBackground","Secondary button background color when hovering.")),sN=U("badge.background",{dark:"#4D4D4D",light:"#C4C4C4",hcDark:me.black,hcLight:"#0F4A85"},v("badgeBackground","Badge background color. Badges are small information labels, e.g. for search results count.")),VVe=U("badge.foreground",{dark:me.white,light:"#333",hcDark:me.white,hcLight:me.white},v("badgeForeground","Badge foreground color. Badges are small information labels, e.g. for search results count.")),HVe=U("scrollbar.shadow",{dark:"#000000",light:"#DDDDDD",hcDark:null,hcLight:null},v("scrollbarShadow","Scrollbar shadow to indicate that the view is scrolled.")),fS=U("scrollbarSlider.background",{dark:me.fromHex("#797979").transparent(.4),light:me.fromHex("#646464").transparent(.4),hcDark:Je(zt,.6),hcLight:Je(zt,.4)},v("scrollbarSliderBackground","Scrollbar slider background color.")),gS=U("scrollbarSlider.hoverBackground",{dark:me.fromHex("#646464").transparent(.7),light:me.fromHex("#646464").transparent(.7),hcDark:Je(zt,.8),hcLight:Je(zt,.8)},v("scrollbarSliderHoverBackground","Scrollbar slider background color when hovering.")),pS=U("scrollbarSlider.activeBackground",{dark:me.fromHex("#BFBFBF").transparent(.4),light:me.fromHex("#000000").transparent(.6),hcDark:zt,hcLight:zt},v("scrollbarSliderActiveBackground","Scrollbar slider background color when clicked on.")),$Ve=U("progressBar.background",{dark:me.fromHex("#0E70C0"),light:me.fromHex("#0E70C0"),hcDark:zt,hcLight:zt},v("progressBarBackground","Background color of the progress bar that can show for long running operations."));U("editorError.background",{dark:null,light:null,hcDark:null,hcLight:null},v("editorError.background","Background color of error text in the editor. The color must not be opaque so as not to hide underlying decorations."),!0);const Rh=U("editorError.foreground",{dark:"#F14C4C",light:"#E51400",hcDark:"#F48771",hcLight:"#B5200D"},v("editorError.foreground","Foreground color of error squigglies in the editor.")),zVe=U("editorError.border",{dark:null,light:null,hcDark:me.fromHex("#E47777").transparent(.8),hcLight:"#B5200D"},v("errorBorder","If set, color of double underlines for errors in the editor."));U("editorWarning.background",{dark:null,light:null,hcDark:null,hcLight:null},v("editorWarning.background","Background color of warning text in the editor. The color must not be opaque so as not to hide underlying decorations."),!0);const za=U("editorWarning.foreground",{dark:"#CCA700",light:"#BF8803",hcDark:"#FFD370",hcLight:"#895503"},v("editorWarning.foreground","Foreground color of warning squigglies in the editor.")),kL=U("editorWarning.border",{dark:null,light:null,hcDark:me.fromHex("#FFCC00").transparent(.8),hcLight:me.fromHex("#FFCC00").transparent(.8)},v("warningBorder","If set, color of double underlines for warnings in the editor."));U("editorInfo.background",{dark:null,light:null,hcDark:null,hcLight:null},v("editorInfo.background","Background color of info text in the editor. The color must not be opaque so as not to hide underlying decorations."),!0);const Ao=U("editorInfo.foreground",{dark:"#3794FF",light:"#1a85ff",hcDark:"#3794FF",hcLight:"#1a85ff"},v("editorInfo.foreground","Foreground color of info squigglies in the editor.")),LL=U("editorInfo.border",{dark:null,light:null,hcDark:me.fromHex("#3794FF").transparent(.8),hcLight:"#292929"},v("infoBorder","If set, color of double underlines for infos in the editor.")),UVe=U("editorHint.foreground",{dark:me.fromHex("#eeeeee").transparent(.7),light:"#6c6c6c",hcDark:null,hcLight:null},v("editorHint.foreground","Foreground color of hint squigglies in the editor."));U("editorHint.border",{dark:null,light:null,hcDark:me.fromHex("#eeeeee").transparent(.8),hcLight:"#292929"},v("hintBorder","If set, color of double underlines for hints in the editor."));U("sash.hoverBorder",{dark:$a,light:$a,hcDark:$a,hcLight:$a},v("sashActiveBorder","Border color of active sashes."));const Rs=U("editor.background",{light:"#ffffff",dark:"#1E1E1E",hcDark:me.black,hcLight:me.white},v("editorBackground","Editor background color.")),uc=U("editor.foreground",{light:"#333333",dark:"#BBBBBB",hcDark:me.white,hcLight:Re},v("editorForeground","Editor default foreground color."));U("editorStickyScroll.background",{light:Rs,dark:Rs,hcDark:Rs,hcLight:Rs},v("editorStickyScrollBackground","Sticky scroll background color for the editor"));U("editorStickyScrollHover.background",{dark:"#2A2D2E",light:"#F0F0F0",hcDark:null,hcLight:me.fromHex("#0F4A85").transparent(.1)},v("editorStickyScrollHoverBackground","Sticky scroll on hover background color for the editor"));const Rn=U("editorWidget.background",{dark:"#252526",light:"#F3F3F3",hcDark:"#0C141F",hcLight:me.white},v("editorWidgetBackground","Background color of editor widgets, such as find/replace.")),Mh=U("editorWidget.foreground",{dark:Re,light:Re,hcDark:Re,hcLight:Re},v("editorWidgetForeground","Foreground color of editor widgets, such as find/replace.")),Oh=U("editorWidget.border",{dark:"#454545",light:"#C8C8C8",hcDark:zt,hcLight:zt},v("editorWidgetBorder","Border color of editor widgets. The color is only used if the widget chooses to have a border and if the color is not overridden by a widget.")),jVe=U("editorWidget.resizeBorder",{light:null,dark:null,hcDark:null,hcLight:null},v("editorWidgetResizeBorder","Border color of the resize bar of editor widgets. The color is only used if the widget chooses to have a resize border and if the color is not overridden by a widget.")),iee=U("quickInput.background",{dark:Rn,light:Rn,hcDark:Rn,hcLight:Rn},v("pickerBackground","Quick picker background color. The quick picker widget is the container for pickers like the command palette.")),qVe=U("quickInput.foreground",{dark:Mh,light:Mh,hcDark:Mh,hcLight:Mh},v("pickerForeground","Quick picker foreground color. The quick picker widget is the container for pickers like the command palette.")),KVe=U("quickInputTitle.background",{dark:new me(new Kt(255,255,255,.105)),light:new me(new Kt(0,0,0,.06)),hcDark:"#000000",hcLight:me.white},v("pickerTitleBackground","Quick picker title background color. The quick picker widget is the container for pickers like the command palette.")),_pe=U("pickerGroup.foreground",{dark:"#3794FF",light:"#0066BF",hcDark:me.white,hcLight:"#0F4A85"},v("pickerGroupForeground","Quick picker color for grouping labels.")),GVe=U("pickerGroup.border",{dark:"#3F3F46",light:"#CCCEDB",hcDark:me.white,hcLight:"#0F4A85"},v("pickerGroupBorder","Quick picker color for grouping borders.")),YVe=U("keybindingLabel.background",{dark:new me(new Kt(128,128,128,.17)),light:new me(new Kt(221,221,221,.4)),hcDark:me.transparent,hcLight:me.transparent},v("keybindingLabelBackground","Keybinding label background color. The keybinding label is used to represent a keyboard shortcut.")),ZVe=U("keybindingLabel.foreground",{dark:me.fromHex("#CCCCCC"),light:me.fromHex("#555555"),hcDark:me.white,hcLight:Re},v("keybindingLabelForeground","Keybinding label foreground color. The keybinding label is used to represent a keyboard shortcut.")),XVe=U("keybindingLabel.border",{dark:new me(new Kt(51,51,51,.6)),light:new me(new Kt(204,204,204,.4)),hcDark:new me(new Kt(111,195,223)),hcLight:zt},v("keybindingLabelBorder","Keybinding label border color. The keybinding label is used to represent a keyboard shortcut.")),QVe=U("keybindingLabel.bottomBorder",{dark:new me(new Kt(68,68,68,.6)),light:new me(new Kt(187,187,187,.4)),hcDark:new me(new Kt(111,195,223)),hcLight:Re},v("keybindingLabelBottomBorder","Keybinding label border bottom color. The keybinding label is used to represent a keyboard shortcut.")),ep=U("editor.selectionBackground",{light:"#ADD6FF",dark:"#264F78",hcDark:"#f3f518",hcLight:"#0F4A85"},v("editorSelectionBackground","Color of the editor selection.")),JVe=U("editor.selectionForeground",{light:null,dark:null,hcDark:"#000000",hcLight:me.white},v("editorSelectionForeground","Color of the selected text for high contrast.")),vpe=U("editor.inactiveSelectionBackground",{light:Je(ep,.5),dark:Je(ep,.5),hcDark:Je(ep,.7),hcLight:Je(ep,.5)},v("editorInactiveSelection","Color of the selection in an inactive editor. The color must not be opaque so as not to hide underlying decorations."),!0),dq=U("editor.selectionHighlightBackground",{light:cee(ep,Rs,.3,.6),dark:cee(ep,Rs,.3,.6),hcDark:null,hcLight:null},v("editorSelectionHighlight","Color for regions with the same content as the selection. The color must not be opaque so as not to hide underlying decorations."),!0);U("editor.selectionHighlightBorder",{light:null,dark:null,hcDark:Gi,hcLight:Gi},v("editorSelectionHighlightBorder","Border color for regions with the same content as the selection."));const eHe=U("editor.findMatchBackground",{light:"#A8AC94",dark:"#515C6A",hcDark:null,hcLight:null},v("editorFindMatch","Color of the current search match.")),Fh=U("editor.findMatchHighlightBackground",{light:"#EA5C0055",dark:"#EA5C0055",hcDark:null,hcLight:null},v("findMatchHighlight","Color of the other search matches. The color must not be opaque so as not to hide underlying decorations."),!0),tHe=U("editor.findRangeHighlightBackground",{dark:"#3a3d4166",light:"#b4b4b44d",hcDark:null,hcLight:null},v("findRangeHighlight","Color of the range limiting the search. The color must not be opaque so as not to hide underlying decorations."),!0),iHe=U("editor.findMatchBorder",{light:null,dark:null,hcDark:Gi,hcLight:Gi},v("editorFindMatchBorder","Border color of the current search match.")),tp=U("editor.findMatchHighlightBorder",{light:null,dark:null,hcDark:Gi,hcLight:Gi},v("findMatchHighlightBorder","Border color of the other search matches.")),nHe=U("editor.findRangeHighlightBorder",{dark:null,light:null,hcDark:Je(Gi,.4),hcLight:Je(Gi,.4)},v("findRangeHighlightBorder","Border color of the range limiting the search. The color must not be opaque so as not to hide underlying decorations."),!0);U("searchEditor.findMatchBackground",{light:Je(Fh,.66),dark:Je(Fh,.66),hcDark:Fh,hcLight:Fh},v("searchEditor.queryMatch","Color of the Search Editor query matches."));U("searchEditor.findMatchBorder",{light:Je(tp,.66),dark:Je(tp,.66),hcDark:tp,hcLight:tp},v("searchEditor.editorFindMatchBorder","Border color of the Search Editor query matches."));U("search.resultsInfoForeground",{light:Re,dark:Je(Re,.65),hcDark:Re,hcLight:Re},v("search.resultsInfoForeground","Color of the text in the search viewlet's completion message."));U("editor.hoverHighlightBackground",{light:"#ADD6FF26",dark:"#264f7840",hcDark:"#ADD6FF26",hcLight:null},v("hoverHighlight","Highlight below the word for which a hover is shown. The color must not be opaque so as not to hide underlying decorations."),!0);const YA=U("editorHoverWidget.background",{light:Rn,dark:Rn,hcDark:Rn,hcLight:Rn},v("hoverBackground","Background color of the editor hover."));U("editorHoverWidget.foreground",{light:Mh,dark:Mh,hcDark:Mh,hcLight:Mh},v("hoverForeground","Foreground color of the editor hover."));const sHe=U("editorHoverWidget.border",{light:Oh,dark:Oh,hcDark:Oh,hcLight:Oh},v("hoverBorder","Border color of the editor hover."));U("editorHoverWidget.statusBarBackground",{dark:vc(YA,.2),light:Nm(YA,.05),hcDark:Rn,hcLight:Rn},v("statusBarBackground","Background color of the editor hover status bar."));const rHe=U("editorLink.activeForeground",{dark:"#4E94CE",light:me.blue,hcDark:me.cyan,hcLight:"#292929"},v("activeLinkForeground","Color of active links.")),Sf=U("editorInlayHint.foreground",{dark:"#969696",light:"#969696",hcDark:me.white,hcLight:me.black},v("editorInlayHintForeground","Foreground color of inline hints")),kf=U("editorInlayHint.background",{dark:Je(sN,.1),light:Je(sN,.1),hcDark:Je(me.white,.1),hcLight:Je(sN,.1)},v("editorInlayHintBackground","Background color of inline hints")),oHe=U("editorInlayHint.typeForeground",{dark:Sf,light:Sf,hcDark:Sf,hcLight:Sf},v("editorInlayHintForegroundTypes","Foreground color of inline hints for types")),aHe=U("editorInlayHint.typeBackground",{dark:kf,light:kf,hcDark:kf,hcLight:kf},v("editorInlayHintBackgroundTypes","Background color of inline hints for types")),lHe=U("editorInlayHint.parameterForeground",{dark:Sf,light:Sf,hcDark:Sf,hcLight:Sf},v("editorInlayHintForegroundParameter","Foreground color of inline hints for parameters")),cHe=U("editorInlayHint.parameterBackground",{dark:kf,light:kf,hcDark:kf,hcLight:kf},v("editorInlayHintBackgroundParameter","Background color of inline hints for parameters"));U("editorLightBulb.foreground",{dark:"#FFCC00",light:"#DDB100",hcDark:"#FFCC00",hcLight:"#007ACC"},v("editorLightBulbForeground","The color used for the lightbulb actions icon."));U("editorLightBulbAutoFix.foreground",{dark:"#75BEFF",light:"#007ACC",hcDark:"#75BEFF",hcLight:"#007ACC"},v("editorLightBulbAutoFixForeground","The color used for the lightbulb auto fix actions icon."));U("editorLightBulbAi.foreground",{dark:Nm(cc,.4),light:vc(cc,1.7),hcDark:cc,hcLight:cc},v("editorLightBulbAiForeground","The color used for the lightbulb AI icon."));const p9=new me(new Kt(155,185,85,.2)),m9=new me(new Kt(255,0,0,.2)),uHe=U("diffEditor.insertedTextBackground",{dark:"#9ccc2c33",light:"#9ccc2c40",hcDark:null,hcLight:null},v("diffEditorInserted","Background color for text that got inserted. The color must not be opaque so as not to hide underlying decorations."),!0),hHe=U("diffEditor.removedTextBackground",{dark:"#ff000033",light:"#ff000033",hcDark:null,hcLight:null},v("diffEditorRemoved","Background color for text that got removed. The color must not be opaque so as not to hide underlying decorations."),!0);U("diffEditor.insertedLineBackground",{dark:p9,light:p9,hcDark:null,hcLight:null},v("diffEditorInsertedLines","Background color for lines that got inserted. The color must not be opaque so as not to hide underlying decorations."),!0);U("diffEditor.removedLineBackground",{dark:m9,light:m9,hcDark:null,hcLight:null},v("diffEditorRemovedLines","Background color for lines that got removed. The color must not be opaque so as not to hide underlying decorations."),!0);U("diffEditorGutter.insertedLineBackground",{dark:null,light:null,hcDark:null,hcLight:null},v("diffEditorInsertedLineGutter","Background color for the margin where lines got inserted."));U("diffEditorGutter.removedLineBackground",{dark:null,light:null,hcDark:null,hcLight:null},v("diffEditorRemovedLineGutter","Background color for the margin where lines got removed."));const dHe=U("diffEditorOverview.insertedForeground",{dark:null,light:null,hcDark:null,hcLight:null},v("diffEditorOverviewInserted","Diff overview ruler foreground for inserted content.")),fHe=U("diffEditorOverview.removedForeground",{dark:null,light:null,hcDark:null,hcLight:null},v("diffEditorOverviewRemoved","Diff overview ruler foreground for removed content."));U("diffEditor.insertedTextBorder",{dark:null,light:null,hcDark:"#33ff2eff",hcLight:"#374E06"},v("diffEditorInsertedOutline","Outline color for the text that got inserted."));U("diffEditor.removedTextBorder",{dark:null,light:null,hcDark:"#FF008F",hcLight:"#AD0707"},v("diffEditorRemovedOutline","Outline color for text that got removed."));U("diffEditor.border",{dark:null,light:null,hcDark:zt,hcLight:zt},v("diffEditorBorder","Border color between the two text editors."));U("diffEditor.diagonalFill",{dark:"#cccccc33",light:"#22222233",hcDark:null,hcLight:null},v("diffDiagonalFill","Color of the diff editor's diagonal fill. The diagonal fill is used in side-by-side diff views."));U("diffEditor.unchangedRegionBackground",{dark:"sideBar.background",light:"sideBar.background",hcDark:"sideBar.background",hcLight:"sideBar.background"},v("diffEditor.unchangedRegionBackground","The background color of unchanged blocks in the diff editor."));U("diffEditor.unchangedRegionForeground",{dark:"foreground",light:"foreground",hcDark:"foreground",hcLight:"foreground"},v("diffEditor.unchangedRegionForeground","The foreground color of unchanged blocks in the diff editor."));U("diffEditor.unchangedCodeBackground",{dark:"#74747429",light:"#b8b8b829",hcDark:null,hcLight:null},v("diffEditor.unchangedCodeBackground","The background color of unchanged code in the diff editor."));const gHe=U("list.focusBackground",{dark:null,light:null,hcDark:null,hcLight:null},v("listFocusBackground","List/Tree background color for the focused item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.")),pHe=U("list.focusForeground",{dark:null,light:null,hcDark:null,hcLight:null},v("listFocusForeground","List/Tree foreground color for the focused item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.")),mHe=U("list.focusOutline",{dark:$a,light:$a,hcDark:Gi,hcLight:Gi},v("listFocusOutline","List/Tree outline color for the focused item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.")),_He=U("list.focusAndSelectionOutline",{dark:null,light:null,hcDark:null,hcLight:null},v("listFocusAndSelectionOutline","List/Tree outline color for the focused item when the list/tree is active and selected. An active list/tree has keyboard focus, an inactive does not.")),Lf=U("list.activeSelectionBackground",{dark:"#04395E",light:"#0060C0",hcDark:null,hcLight:me.fromHex("#0F4A85").transparent(.1)},v("listActiveSelectionBackground","List/Tree background color for the selected item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.")),Bh=U("list.activeSelectionForeground",{dark:me.white,light:me.white,hcDark:null,hcLight:null},v("listActiveSelectionForeground","List/Tree foreground color for the selected item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.")),mS=U("list.activeSelectionIconForeground",{dark:null,light:null,hcDark:null,hcLight:null},v("listActiveSelectionIconForeground","List/Tree icon foreground color for the selected item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.")),vHe=U("list.inactiveSelectionBackground",{dark:"#37373D",light:"#E4E6F1",hcDark:null,hcLight:me.fromHex("#0F4A85").transparent(.1)},v("listInactiveSelectionBackground","List/Tree background color for the selected item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.")),bHe=U("list.inactiveSelectionForeground",{dark:null,light:null,hcDark:null,hcLight:null},v("listInactiveSelectionForeground","List/Tree foreground color for the selected item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.")),yHe=U("list.inactiveSelectionIconForeground",{dark:null,light:null,hcDark:null,hcLight:null},v("listInactiveSelectionIconForeground","List/Tree icon foreground color for the selected item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.")),CHe=U("list.inactiveFocusBackground",{dark:null,light:null,hcDark:null,hcLight:null},v("listInactiveFocusBackground","List/Tree background color for the focused item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.")),wHe=U("list.inactiveFocusOutline",{dark:null,light:null,hcDark:null,hcLight:null},v("listInactiveFocusOutline","List/Tree outline color for the focused item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.")),bpe=U("list.hoverBackground",{dark:"#2A2D2E",light:"#F0F0F0",hcDark:me.white.transparent(.1),hcLight:me.fromHex("#0F4A85").transparent(.1)},v("listHoverBackground","List/Tree background when hovering over items using the mouse.")),ype=U("list.hoverForeground",{dark:null,light:null,hcDark:null,hcLight:null},v("listHoverForeground","List/Tree foreground when hovering over items using the mouse.")),SHe=U("list.dropBackground",{dark:"#062F4A",light:"#D6EBFF",hcDark:null,hcLight:null},v("listDropBackground","List/Tree drag and drop background when moving items around using the mouse.")),hc=U("list.highlightForeground",{dark:"#2AAAFF",light:"#0066BF",hcDark:$a,hcLight:$a},v("highlight","List/Tree foreground color of the match highlights when searching inside the list/tree.")),nI=U("list.focusHighlightForeground",{dark:hc,light:JHe(Lf,hc,"#BBE7FF"),hcDark:hc,hcLight:hc},v("listFocusHighlightForeground","List/Tree foreground color of the match highlights on actively focused items when searching inside the list/tree."));U("list.invalidItemForeground",{dark:"#B89500",light:"#B89500",hcDark:"#B89500",hcLight:"#B5200D"},v("invalidItemForeground","List/Tree foreground color for invalid items, for example an unresolved root in explorer."));U("list.errorForeground",{dark:"#F88070",light:"#B01011",hcDark:null,hcLight:null},v("listErrorForeground","Foreground color of list items containing errors."));U("list.warningForeground",{dark:"#CCA700",light:"#855F00",hcDark:null,hcLight:null},v("listWarningForeground","Foreground color of list items containing warnings."));const kHe=U("listFilterWidget.background",{light:Nm(Rn,0),dark:vc(Rn,0),hcDark:Rn,hcLight:Rn},v("listFilterWidgetBackground","Background color of the type filter widget in lists and trees.")),LHe=U("listFilterWidget.outline",{dark:me.transparent,light:me.transparent,hcDark:"#f38518",hcLight:"#007ACC"},v("listFilterWidgetOutline","Outline color of the type filter widget in lists and trees.")),xHe=U("listFilterWidget.noMatchesOutline",{dark:"#BE1100",light:"#BE1100",hcDark:zt,hcLight:zt},v("listFilterWidgetNoMatchesOutline","Outline color of the type filter widget in lists and trees, when there are no matches.")),EHe=U("listFilterWidget.shadow",{dark:Ah,light:Ah,hcDark:Ah,hcLight:Ah},v("listFilterWidgetShadow","Shadow color of the type filter widget in lists and trees."));U("list.filterMatchBackground",{dark:Fh,light:Fh,hcDark:null,hcLight:null},v("listFilterMatchHighlight","Background color of the filtered match."));U("list.filterMatchBorder",{dark:tp,light:tp,hcDark:zt,hcLight:Gi},v("listFilterMatchHighlightBorder","Border color of the filtered match."));const _S=U("tree.indentGuidesStroke",{dark:"#585858",light:"#a9a9a9",hcDark:"#a9a9a9",hcLight:"#a5a5a5"},v("treeIndentGuidesStroke","Tree stroke color for the indentation guides.")),DHe=U("tree.inactiveIndentGuidesStroke",{dark:Je(_S,.4),light:Je(_S,.4),hcDark:Je(_S,.4),hcLight:Je(_S,.4)},v("treeInactiveIndentGuidesStroke","Tree stroke color for the indentation guides that are not active.")),IHe=U("tree.tableColumnsBorder",{dark:"#CCCCCC20",light:"#61616120",hcDark:null,hcLight:null},v("tableColumnsBorder","Table border color between columns.")),THe=U("tree.tableOddRowsBackground",{dark:Je(Re,.04),light:Je(Re,.04),hcDark:null,hcLight:null},v("tableOddRowsBackgroundColor","Background color for odd table rows."));U("list.deemphasizedForeground",{dark:"#8C8C8C",light:"#8E8E90",hcDark:"#A7A8A9",hcLight:"#666666"},v("listDeemphasizedForeground","List/Tree foreground color for items that are deemphasized. "));const NHe=U("checkbox.background",{dark:Ph,light:Ph,hcDark:Ph,hcLight:Ph},v("checkbox.background","Background color of checkbox widget."));U("checkbox.selectBackground",{dark:Rn,light:Rn,hcDark:Rn,hcLight:Rn},v("checkbox.select.background","Background color of checkbox widget when the element it's in is selected."));const AHe=U("checkbox.foreground",{dark:wf,light:wf,hcDark:wf,hcLight:wf},v("checkbox.foreground","Foreground color of checkbox widget.")),PHe=U("checkbox.border",{dark:W0,light:W0,hcDark:W0,hcLight:W0},v("checkbox.border","Border color of checkbox widget."));U("checkbox.selectBorder",{dark:cc,light:cc,hcDark:cc,hcLight:cc},v("checkbox.select.border","Border color of checkbox widget when the element it's in is selected."));const nee=U("quickInput.list.focusBackground",{dark:null,light:null,hcDark:null,hcLight:null},"",void 0,v("quickInput.list.focusBackground deprecation","Please use quickInputList.focusBackground instead")),B1=U("quickInputList.focusForeground",{dark:Bh,light:Bh,hcDark:Bh,hcLight:Bh},v("quickInput.listFocusForeground","Quick picker foreground color for the focused item.")),V0=U("quickInputList.focusIconForeground",{dark:mS,light:mS,hcDark:mS,hcLight:mS},v("quickInput.listFocusIconForeground","Quick picker icon foreground color for the focused item.")),W1=U("quickInputList.focusBackground",{dark:xL(nee,Lf),light:xL(nee,Lf),hcDark:null,hcLight:null},v("quickInput.listFocusBackground","Quick picker background color for the focused item.")),RHe=U("menu.border",{dark:null,light:null,hcDark:zt,hcLight:zt},v("menuBorder","Border color of menus.")),MHe=U("menu.foreground",{dark:wf,light:wf,hcDark:wf,hcLight:wf},v("menuForeground","Foreground color of menu items.")),OHe=U("menu.background",{dark:Ph,light:Ph,hcDark:Ph,hcLight:Ph},v("menuBackground","Background color of menu items.")),FHe=U("menu.selectionForeground",{dark:Bh,light:Bh,hcDark:Bh,hcLight:Bh},v("menuSelectionForeground","Foreground color of the selected menu item in menus.")),BHe=U("menu.selectionBackground",{dark:Lf,light:Lf,hcDark:Lf,hcLight:Lf},v("menuSelectionBackground","Background color of the selected menu item in menus.")),WHe=U("menu.selectionBorder",{dark:null,light:null,hcDark:Gi,hcLight:Gi},v("menuSelectionBorder","Border color of the selected menu item in menus.")),VHe=U("menu.separatorBackground",{dark:"#606060",light:"#D4D4D4",hcDark:zt,hcLight:zt},v("menuSeparatorBackground","Color of a separator menu item in menus.")),_9=U("toolbar.hoverBackground",{dark:"#5a5d5e50",light:"#b8b8b850",hcDark:null,hcLight:null},v("toolbarHoverBackground","Toolbar background when hovering over actions using the mouse"));U("toolbar.hoverOutline",{dark:null,light:null,hcDark:Gi,hcLight:Gi},v("toolbarHoverOutline","Toolbar outline when hovering over actions using the mouse"));U("toolbar.activeBackground",{dark:vc(_9,.1),light:Nm(_9,.1),hcDark:null,hcLight:null},v("toolbarActiveBackground","Toolbar background when holding the mouse over actions"));U("editor.snippetTabstopHighlightBackground",{dark:new me(new Kt(124,124,124,.3)),light:new me(new Kt(10,50,100,.2)),hcDark:new me(new Kt(124,124,124,.3)),hcLight:new me(new Kt(10,50,100,.2))},v("snippetTabstopHighlightBackground","Highlight background color of a snippet tabstop."));U("editor.snippetTabstopHighlightBorder",{dark:null,light:null,hcDark:null,hcLight:null},v("snippetTabstopHighlightBorder","Highlight border color of a snippet tabstop."));U("editor.snippetFinalTabstopHighlightBackground",{dark:null,light:null,hcDark:null,hcLight:null},v("snippetFinalTabstopHighlightBackground","Highlight background color of the final tabstop of a snippet."));U("editor.snippetFinalTabstopHighlightBorder",{dark:"#525252",light:new me(new Kt(10,50,100,.5)),hcDark:"#525252",hcLight:"#292929"},v("snippetFinalTabstopHighlightBorder","Highlight border color of the final tabstop of a snippet."));const HHe=U("breadcrumb.foreground",{light:Je(Re,.8),dark:Je(Re,.8),hcDark:Je(Re,.8),hcLight:Je(Re,.8)},v("breadcrumbsFocusForeground","Color of focused breadcrumb items.")),$He=U("breadcrumb.background",{light:Rs,dark:Rs,hcDark:Rs,hcLight:Rs},v("breadcrumbsBackground","Background color of breadcrumb items.")),see=U("breadcrumb.focusForeground",{light:Nm(Re,.2),dark:vc(Re,.1),hcDark:vc(Re,.1),hcLight:vc(Re,.1)},v("breadcrumbsFocusForeground","Color of focused breadcrumb items.")),zHe=U("breadcrumb.activeSelectionForeground",{light:Nm(Re,.2),dark:vc(Re,.1),hcDark:vc(Re,.1),hcLight:vc(Re,.1)},v("breadcrumbsSelectedForeground","Color of selected breadcrumb items."));U("breadcrumbPicker.background",{light:Rn,dark:Rn,hcDark:Rn,hcLight:Rn},v("breadcrumbsSelectedBackground","Background color of breadcrumb item picker."));const Cpe=.5,ree=me.fromHex("#40C8AE").transparent(Cpe),oee=me.fromHex("#40A6FF").transparent(Cpe),aee=me.fromHex("#606060").transparent(.4),dc=.4,vy=1,H0=U("merge.currentHeaderBackground",{dark:ree,light:ree,hcDark:null,hcLight:null},v("mergeCurrentHeaderBackground","Current header background in inline merge-conflicts. The color must not be opaque so as not to hide underlying decorations."),!0);U("merge.currentContentBackground",{dark:Je(H0,dc),light:Je(H0,dc),hcDark:Je(H0,dc),hcLight:Je(H0,dc)},v("mergeCurrentContentBackground","Current content background in inline merge-conflicts. The color must not be opaque so as not to hide underlying decorations."),!0);const $0=U("merge.incomingHeaderBackground",{dark:oee,light:oee,hcDark:null,hcLight:null},v("mergeIncomingHeaderBackground","Incoming header background in inline merge-conflicts. The color must not be opaque so as not to hide underlying decorations."),!0);U("merge.incomingContentBackground",{dark:Je($0,dc),light:Je($0,dc),hcDark:Je($0,dc),hcLight:Je($0,dc)},v("mergeIncomingContentBackground","Incoming content background in inline merge-conflicts. The color must not be opaque so as not to hide underlying decorations."),!0);const z0=U("merge.commonHeaderBackground",{dark:aee,light:aee,hcDark:null,hcLight:null},v("mergeCommonHeaderBackground","Common ancestor header background in inline merge-conflicts. The color must not be opaque so as not to hide underlying decorations."),!0);U("merge.commonContentBackground",{dark:Je(z0,dc),light:Je(z0,dc),hcDark:Je(z0,dc),hcLight:Je(z0,dc)},v("mergeCommonContentBackground","Common ancestor content background in inline merge-conflicts. The color must not be opaque so as not to hide underlying decorations."),!0);const by=U("merge.border",{dark:null,light:null,hcDark:"#C3DF6F",hcLight:"#007ACC"},v("mergeBorder","Border color on headers and the splitter in inline merge-conflicts."));U("editorOverviewRuler.currentContentForeground",{dark:Je(H0,vy),light:Je(H0,vy),hcDark:by,hcLight:by},v("overviewRulerCurrentContentForeground","Current overview ruler foreground for inline merge-conflicts."));U("editorOverviewRuler.incomingContentForeground",{dark:Je($0,vy),light:Je($0,vy),hcDark:by,hcLight:by},v("overviewRulerIncomingContentForeground","Incoming overview ruler foreground for inline merge-conflicts."));U("editorOverviewRuler.commonContentForeground",{dark:Je(z0,vy),light:Je(z0,vy),hcDark:by,hcLight:by},v("overviewRulerCommonContentForeground","Common ancestor overview ruler foreground for inline merge-conflicts."));const fq=U("editorOverviewRuler.findMatchForeground",{dark:"#d186167e",light:"#d186167e",hcDark:"#AB5A00",hcLight:""},v("overviewRulerFindMatchForeground","Overview ruler marker color for find matches. The color must not be opaque so as not to hide underlying decorations."),!0),vS=U("editorOverviewRuler.selectionHighlightForeground",{dark:"#A0A0A0CC",light:"#A0A0A0CC",hcDark:"#A0A0A0CC",hcLight:"#A0A0A0CC"},v("overviewRulerSelectionHighlightForeground","Overview ruler marker color for selection highlights. The color must not be opaque so as not to hide underlying decorations."),!0),U0=U("minimap.findMatchHighlight",{light:"#d18616",dark:"#d18616",hcDark:"#AB5A00",hcLight:"#0F4A85"},v("minimapFindMatchHighlight","Minimap marker color for find matches."),!0),FO=U("minimap.selectionOccurrenceHighlight",{light:"#c9c9c9",dark:"#676767",hcDark:"#ffffff",hcLight:"#0F4A85"},v("minimapSelectionOccurrenceHighlight","Minimap marker color for repeating editor selections."),!0),lee=U("minimap.selectionHighlight",{light:"#ADD6FF",dark:"#264F78",hcDark:"#ffffff",hcLight:"#0F4A85"},v("minimapSelectionHighlight","Minimap marker color for the editor selection."),!0),UHe=U("minimap.infoHighlight",{dark:Ao,light:Ao,hcDark:LL,hcLight:LL},v("minimapInfo","Minimap marker color for infos.")),jHe=U("minimap.warningHighlight",{dark:za,light:za,hcDark:kL,hcLight:kL},v("overviewRuleWarning","Minimap marker color for warnings.")),qHe=U("minimap.errorHighlight",{dark:new me(new Kt(255,18,18,.7)),light:new me(new Kt(255,18,18,.7)),hcDark:new me(new Kt(255,50,50,1)),hcLight:"#B5200D"},v("minimapError","Minimap marker color for errors.")),KHe=U("minimap.background",{dark:null,light:null,hcDark:null,hcLight:null},v("minimapBackground","Minimap background color.")),GHe=U("minimap.foregroundOpacity",{dark:me.fromHex("#000f"),light:me.fromHex("#000f"),hcDark:me.fromHex("#000f"),hcLight:me.fromHex("#000f")},v("minimapForegroundOpacity",'Opacity of foreground elements rendered in the minimap. For example, "#000000c0" will render the elements with 75% opacity.'));U("minimapSlider.background",{light:Je(fS,.5),dark:Je(fS,.5),hcDark:Je(fS,.5),hcLight:Je(fS,.5)},v("minimapSliderBackground","Minimap slider background color."));U("minimapSlider.hoverBackground",{light:Je(gS,.5),dark:Je(gS,.5),hcDark:Je(gS,.5),hcLight:Je(gS,.5)},v("minimapSliderHoverBackground","Minimap slider background color when hovering."));U("minimapSlider.activeBackground",{light:Je(pS,.5),dark:Je(pS,.5),hcDark:Je(pS,.5),hcLight:Je(pS,.5)},v("minimapSliderActiveBackground","Minimap slider background color when clicked on."));const YHe=U("problemsErrorIcon.foreground",{dark:Rh,light:Rh,hcDark:Rh,hcLight:Rh},v("problemsErrorIconForeground","The color used for the problems error icon.")),ZHe=U("problemsWarningIcon.foreground",{dark:za,light:za,hcDark:za,hcLight:za},v("problemsWarningIconForeground","The color used for the problems warning icon.")),XHe=U("problemsInfoIcon.foreground",{dark:Ao,light:Ao,hcDark:Ao,hcLight:Ao},v("problemsInfoIconForeground","The color used for the problems info icon."));U("charts.foreground",{dark:Re,light:Re,hcDark:Re,hcLight:Re},v("chartsForeground","The foreground color used in charts."));U("charts.lines",{dark:Je(Re,.5),light:Je(Re,.5),hcDark:Je(Re,.5),hcLight:Je(Re,.5)},v("chartsLines","The color used for horizontal lines in charts."));U("charts.red",{dark:Rh,light:Rh,hcDark:Rh,hcLight:Rh},v("chartsRed","The red color used in chart visualizations."));U("charts.blue",{dark:Ao,light:Ao,hcDark:Ao,hcLight:Ao},v("chartsBlue","The blue color used in chart visualizations."));U("charts.yellow",{dark:za,light:za,hcDark:za,hcLight:za},v("chartsYellow","The yellow color used in chart visualizations."));U("charts.orange",{dark:U0,light:U0,hcDark:U0,hcLight:U0},v("chartsOrange","The orange color used in chart visualizations."));U("charts.green",{dark:"#89D185",light:"#388A34",hcDark:"#89D185",hcLight:"#374e06"},v("chartsGreen","The green color used in chart visualizations."));U("charts.purple",{dark:"#B180D7",light:"#652D90",hcDark:"#B180D7",hcLight:"#652D90"},v("chartsPurple","The purple color used in chart visualizations."));function QHe(n,e){var t,i,s,r;switch(n.op){case 0:return(t=Uc(n.value,e))===null||t===void 0?void 0:t.darken(n.factor);case 1:return(i=Uc(n.value,e))===null||i===void 0?void 0:i.lighten(n.factor);case 2:return(s=Uc(n.value,e))===null||s===void 0?void 0:s.transparent(n.factor);case 3:{const o=Uc(n.background,e);return o?(r=Uc(n.value,e))===null||r===void 0?void 0:r.makeOpaque(o):Uc(n.value,e)}case 4:for(const o of n.values){const a=Uc(o,e);if(a)return a}return;case 6:return Uc(e.defines(n.if)?n.then:n.else,e);case 5:{const o=Uc(n.value,e);if(!o)return;const a=Uc(n.background,e);return a?o.isDarkerThan(a)?me.getLighterColor(o,a,n.factor).transparent(n.transparency):me.getDarkerColor(o,a,n.factor).transparent(n.transparency):o.transparent(n.factor*n.transparency)}default:throw SO()}}function Nm(n,e){return{op:0,value:n,factor:e}}function vc(n,e){return{op:1,value:n,factor:e}}function Je(n,e){return{op:2,value:n,factor:e}}function xL(...n){return{op:4,values:n}}function JHe(n,e,t){return{op:6,if:n,then:e,else:t}}function cee(n,e,t,i){return{op:5,value:n,background:e,factor:t,transparency:i}}function Uc(n,e){if(n!==null){if(typeof n=="string")return n[0]==="#"?me.fromHex(n):e.getColor(n);if(n instanceof me)return n;if(typeof n=="object")return QHe(n,e)}}const wpe="vscode://schemas/workbench-colors",Spe=vn.as(NO.JSONContribution);Spe.registerSchema(wpe,OO.getColorSchema());const uee=new Ei(()=>Spe.notifySchemaChanged(wpe),200);OO.onDidChangeSchema(()=>{uee.isScheduled()||uee.schedule()});class BO{constructor(e,t){this.x=e,this.y=t,this._pageCoordinatesBrand=void 0}toClientCoordinates(e){return new kpe(this.x-e.scrollX,this.y-e.scrollY)}}class kpe{constructor(e,t){this.clientX=e,this.clientY=t,this._clientCoordinatesBrand=void 0}toPageCoordinates(e){return new BO(this.clientX+e.scrollX,this.clientY+e.scrollY)}}class e$e{constructor(e,t,i,s){this.x=e,this.y=t,this.width=i,this.height=s,this._editorPagePositionBrand=void 0}}class t$e{constructor(e,t){this.x=e,this.y=t,this._positionRelativeToEditorBrand=void 0}}function gq(n){const e=ys(n);return new e$e(e.left,e.top,e.width,e.height)}function pq(n,e,t){const i=e.width/n.offsetWidth,s=e.height/n.offsetHeight,r=(t.x-e.x)/i,o=(t.y-e.y)/s;return new t$e(r,o)}class tm extends ac{constructor(e,t,i){super(pt(i),e),this._editorMouseEventBrand=void 0,this.isFromPointerCapture=t,this.pos=new BO(this.posx,this.posy),this.editorPos=gq(i),this.relativePos=pq(i,this.editorPos,this.pos)}}class i$e{constructor(e){this._editorViewDomNode=e}_create(e){return new tm(e,!1,this._editorViewDomNode)}onContextMenu(e,t){return Ce(e,"contextmenu",i=>{t(this._create(i))})}onMouseUp(e,t){return Ce(e,"mouseup",i=>{t(this._create(i))})}onMouseDown(e,t){return Ce(e,We.MOUSE_DOWN,i=>{t(this._create(i))})}onPointerDown(e,t){return Ce(e,We.POINTER_DOWN,i=>{t(this._create(i),i.pointerId)})}onMouseLeave(e,t){return Ce(e,We.MOUSE_LEAVE,i=>{t(this._create(i))})}onMouseMove(e,t){return Ce(e,"mousemove",i=>t(this._create(i)))}}class n$e{constructor(e){this._editorViewDomNode=e}_create(e){return new tm(e,!1,this._editorViewDomNode)}onPointerUp(e,t){return Ce(e,"pointerup",i=>{t(this._create(i))})}onPointerDown(e,t){return Ce(e,We.POINTER_DOWN,i=>{t(this._create(i),i.pointerId)})}onPointerLeave(e,t){return Ce(e,We.POINTER_LEAVE,i=>{t(this._create(i))})}onPointerMove(e,t){return Ce(e,"pointermove",i=>t(this._create(i)))}}class s$e extends pe{constructor(e){super(),this._editorViewDomNode=e,this._globalPointerMoveMonitor=this._register(new AC),this._keydownListener=null}startMonitoring(e,t,i,s,r){this._keydownListener=Mn(e.ownerDocument,"keydown",o=>{o.toKeyCodeChord().isModifierKey()||this._globalPointerMoveMonitor.stopMonitoring(!0,o.browserEvent)},!0),this._globalPointerMoveMonitor.startMonitoring(e,t,i,o=>{s(new tm(o,!0,this._editorViewDomNode))},o=>{this._keydownListener.dispose(),r(o)})}stopMonitoring(){this._globalPointerMoveMonitor.stopMonitoring(!0)}}class vE{constructor(e){this._editor=e,this._instanceId=++vE._idPool,this._counter=0,this._rules=new Map,this._garbageCollectionScheduler=new Ei(()=>this.garbageCollect(),1e3)}createClassNameRef(e){const t=this.getOrCreateRule(e);return t.increaseRefCount(),{className:t.className,dispose:()=>{t.decreaseRefCount(),this._garbageCollectionScheduler.schedule()}}}getOrCreateRule(e){const t=this.computeUniqueKey(e);let i=this._rules.get(t);if(!i){const s=this._counter++;i=new r$e(t,`dyn-rule-${this._instanceId}-${s}`,BA(this._editor.getContainerDomNode())?this._editor.getContainerDomNode():void 0,e),this._rules.set(t,i)}return i}computeUniqueKey(e){return JSON.stringify(e)}garbageCollect(){for(const e of this._rules.values())e.hasReferences()||(this._rules.delete(e.key),e.dispose())}}vE._idPool=0;class r$e{constructor(e,t,i,s){this.key=e,this.className=t,this.properties=s,this._referenceCount=0,this._styleElementDisposables=new xe,this._styleElement=Fl(i,void 0,this._styleElementDisposables),this._styleElement.textContent=this.getCssText(this.className,this.properties)}getCssText(e,t){let i=`.${e} {`;for(const s in t){const r=t[s];let o;typeof r=="object"?o=Ue(r.id):o=r;const a=o$e(s);i+=` + ${a}: ${o};`}return i+=` +}`,i}dispose(){this._styleElementDisposables.dispose(),this._styleElement=void 0}increaseRefCount(){this._referenceCount++}decreaseRefCount(){this._referenceCount--}hasReferences(){return this._referenceCount>0}}function o$e(n){return n.replace(/(^[A-Z])/,([e])=>e.toLowerCase()).replace(/([A-Z])/g,([e])=>`-${e.toLowerCase()}`)}class bE extends pe{constructor(){super(),this._shouldRender=!0}shouldRender(){return this._shouldRender}forceShouldRender(){this._shouldRender=!0}setShouldRender(){this._shouldRender=!0}onDidRender(){this._shouldRender=!1}onCompositionStart(e){return!1}onCompositionEnd(e){return!1}onConfigurationChanged(e){return!1}onCursorStateChanged(e){return!1}onDecorationsChanged(e){return!1}onFlushed(e){return!1}onFocusChanged(e){return!1}onLanguageConfigurationChanged(e){return!1}onLineMappingChanged(e){return!1}onLinesChanged(e){return!1}onLinesDeleted(e){return!1}onLinesInserted(e){return!1}onRevealRangeRequest(e){return!1}onScrollChanged(e){return!1}onThemeChanged(e){return!1}onTokensChanged(e){return!1}onTokensColorsChanged(e){return!1}onZonesChanged(e){return!1}handleEvents(e){let t=!1;for(let i=0,s=e.length;i<s;i++){const r=e[i];switch(r.type){case 0:this.onCompositionStart(r)&&(t=!0);break;case 1:this.onCompositionEnd(r)&&(t=!0);break;case 2:this.onConfigurationChanged(r)&&(t=!0);break;case 3:this.onCursorStateChanged(r)&&(t=!0);break;case 4:this.onDecorationsChanged(r)&&(t=!0);break;case 5:this.onFlushed(r)&&(t=!0);break;case 6:this.onFocusChanged(r)&&(t=!0);break;case 7:this.onLanguageConfigurationChanged(r)&&(t=!0);break;case 8:this.onLineMappingChanged(r)&&(t=!0);break;case 9:this.onLinesChanged(r)&&(t=!0);break;case 10:this.onLinesDeleted(r)&&(t=!0);break;case 11:this.onLinesInserted(r)&&(t=!0);break;case 12:this.onRevealRangeRequest(r)&&(t=!0);break;case 13:this.onScrollChanged(r)&&(t=!0);break;case 15:this.onTokensChanged(r)&&(t=!0);break;case 14:this.onThemeChanged(r)&&(t=!0);break;case 16:this.onTokensColorsChanged(r)&&(t=!0);break;case 17:this.onZonesChanged(r)&&(t=!0);break;default:console.info("View received unknown event: "),console.info(r)}}t&&(this._shouldRender=!0)}}class ma extends bE{constructor(e){super(),this._context=e,this._context.addEventHandler(this)}dispose(){this._context.removeEventHandler(this),super.dispose()}}class pd{static write(e,t){e.setAttribute("data-mprt",String(t))}static read(e){const t=e.getAttribute("data-mprt");return t===null?0:parseInt(t,10)}static collect(e,t){const i=[];let s=0;for(;e&&e!==e.ownerDocument.body&&e!==t;)e.nodeType===e.ELEMENT_NODE&&(i[s++]=this.read(e)),e=e.parentElement;const r=new Uint8Array(s);for(let o=0;o<s;o++)r[o]=i[s-o-1];return r}}class a$e{constructor(e,t){this._restrictedRenderingContextBrand=void 0,this._viewLayout=e,this.viewportData=t,this.scrollWidth=this._viewLayout.getScrollWidth(),this.scrollHeight=this._viewLayout.getScrollHeight(),this.visibleRange=this.viewportData.visibleRange,this.bigNumbersDelta=this.viewportData.bigNumbersDelta;const i=this._viewLayout.getCurrentViewport();this.scrollTop=i.top,this.scrollLeft=i.left,this.viewportWidth=i.width,this.viewportHeight=i.height}getScrolledTopFromAbsoluteTop(e){return e-this.scrollTop}getVerticalOffsetForLineNumber(e,t){return this._viewLayout.getVerticalOffsetForLineNumber(e,t)}getVerticalOffsetAfterLineNumber(e,t){return this._viewLayout.getVerticalOffsetAfterLineNumber(e,t)}getDecorationsInViewport(){return this.viewportData.getDecorationsInViewport()}}class l$e extends a$e{constructor(e,t,i){super(e,t),this._renderingContextBrand=void 0,this._viewLines=i}linesVisibleRangesForRange(e,t){return this._viewLines.linesVisibleRangesForRange(e,t)}visibleRangeForPosition(e){return this._viewLines.visibleRangeForPosition(e)}}class c$e{constructor(e,t,i,s){this.outsideRenderedLine=e,this.lineNumber=t,this.ranges=i,this.continuesOnNextLine=s}}class WO{static from(e){const t=new Array(e.length);for(let i=0,s=e.length;i<s;i++){const r=e[i];t[i]=new WO(r.left,r.width)}return t}constructor(e,t){this._horizontalRangeBrand=void 0,this.left=Math.round(e),this.width=Math.round(t)}toString(){return`[${this.left},${this.width}]`}}class o_{constructor(e,t){this._floatHorizontalRangeBrand=void 0,this.left=e,this.width=t}toString(){return`[${this.left},${this.width}]`}static compare(e,t){return e.left-t.left}}class u$e{constructor(e,t){this.outsideRenderedLine=e,this.originalLeft=t,this.left=Math.round(this.originalLeft)}}class hee{constructor(e,t){this.outsideRenderedLine=e,this.ranges=t}}class rN{static _createRange(){return this._handyReadyRange||(this._handyReadyRange=document.createRange()),this._handyReadyRange}static _detachRange(e,t){e.selectNodeContents(t)}static _readClientRects(e,t,i,s,r){const o=this._createRange();try{return o.setStart(e,t),o.setEnd(i,s),o.getClientRects()}catch{return null}finally{this._detachRange(o,r)}}static _mergeAdjacentRanges(e){if(e.length===1)return e;e.sort(o_.compare);const t=[];let i=0,s=e[0];for(let r=1,o=e.length;r<o;r++){const a=e[r];s.left+s.width+.9>=a.left?s.width=Math.max(s.width,a.left+a.width-s.left):(t[i++]=s,s=a)}return t[i++]=s,t}static _createHorizontalRangesFromClientRects(e,t,i){if(!e||e.length===0)return null;const s=[];for(let r=0,o=e.length;r<o;r++){const a=e[r];s[r]=new o_(Math.max(0,(a.left-t)/i),a.width/i)}return this._mergeAdjacentRanges(s)}static readHorizontalRanges(e,t,i,s,r,o){const l=e.children.length-1;if(0>l)return null;if(t=Math.min(l,Math.max(0,t)),s=Math.min(l,Math.max(0,s)),t===s&&i===r&&i===0&&!e.children[t].firstChild){const d=e.children[t].getClientRects();return o.markDidDomLayout(),this._createHorizontalRangesFromClientRects(d,o.clientRectDeltaLeft,o.clientRectScale)}t!==s&&s>0&&r===0&&(s--,r=1073741824);let c=e.children[t].firstChild,u=e.children[s].firstChild;if((!c||!u)&&(!c&&i===0&&t>0&&(c=e.children[t-1].firstChild,i=1073741824),!u&&r===0&&s>0&&(u=e.children[s-1].firstChild,r=1073741824)),!c||!u)return null;i=Math.min(c.textContent.length,Math.max(0,i)),r=Math.min(u.textContent.length,Math.max(0,r));const h=this._readClientRects(c,i,u,r,o.endNode);return o.markDidDomLayout(),this._createHorizontalRangesFromClientRects(h,o.clientRectDeltaLeft,o.clientRectScale)}}class ia{constructor(e,t,i,s){this.startColumn=e,this.endColumn=t,this.className=i,this.type=s,this._lineDecorationBrand=void 0}static _equals(e,t){return e.startColumn===t.startColumn&&e.endColumn===t.endColumn&&e.className===t.className&&e.type===t.type}static equalsArr(e,t){const i=e.length,s=t.length;if(i!==s)return!1;for(let r=0;r<i;r++)if(!ia._equals(e[r],t[r]))return!1;return!0}static extractWrapped(e,t,i){if(e.length===0)return e;const s=t+1,r=i+1,o=i-t,a=[];let l=0;for(const c of e)c.endColumn<=s||c.startColumn>=r||(a[l++]=new ia(Math.max(1,c.startColumn-s+1),Math.min(o+1,c.endColumn-s+1),c.className,c.type));return a}static filter(e,t,i,s){if(e.length===0)return[];const r=[];let o=0;for(let a=0,l=e.length;a<l;a++){const c=e[a],u=c.range;if(u.endLineNumber<t||u.startLineNumber>t||u.isEmpty()&&(c.type===0||c.type===3))continue;const h=u.startLineNumber===t?u.startColumn:i,d=u.endLineNumber===t?u.endColumn:s;r[o++]=new ia(h,d,c.inlineClassName,c.type)}return r}static _typeCompare(e,t){const i=[2,0,1,3];return i[e]-i[t]}static compare(e,t){if(e.startColumn!==t.startColumn)return e.startColumn-t.startColumn;if(e.endColumn!==t.endColumn)return e.endColumn-t.endColumn;const i=ia._typeCompare(e.type,t.type);return i!==0?i:e.className!==t.className?e.className<t.className?-1:1:0}}class dee{constructor(e,t,i,s){this.startOffset=e,this.endOffset=t,this.className=i,this.metadata=s}}class ZA{constructor(){this.stopOffsets=[],this.classNames=[],this.metadata=[],this.count=0}static _metadata(e){let t=0;for(let i=0,s=e.length;i<s;i++)t|=e[i];return t}consumeLowerThan(e,t,i){for(;this.count>0&&this.stopOffsets[0]<e;){let s=0;for(;s+1<this.count&&this.stopOffsets[s]===this.stopOffsets[s+1];)s++;i.push(new dee(t,this.stopOffsets[s],this.classNames.join(" "),ZA._metadata(this.metadata))),t=this.stopOffsets[s]+1,this.stopOffsets.splice(0,s+1),this.classNames.splice(0,s+1),this.metadata.splice(0,s+1),this.count-=s+1}return this.count>0&&t<e&&(i.push(new dee(t,e-1,this.classNames.join(" "),ZA._metadata(this.metadata))),t=e),t}insert(e,t,i){if(this.count===0||this.stopOffsets[this.count-1]<=e)this.stopOffsets.push(e),this.classNames.push(t),this.metadata.push(i);else for(let s=0;s<this.count;s++)if(this.stopOffsets[s]>=e){this.stopOffsets.splice(s,0,e),this.classNames.splice(s,0,t),this.metadata.splice(s,0,i);break}this.count++}}class h$e{static normalize(e,t){if(t.length===0)return[];const i=[],s=new ZA;let r=0;for(let o=0,a=t.length;o<a;o++){const l=t[o];let c=l.startColumn,u=l.endColumn;const h=l.className,d=l.type===1?2:l.type===2?4:0;if(c>1){const p=e.charCodeAt(c-2);As(p)&&c--}if(u>1){const p=e.charCodeAt(u-2);As(p)&&u--}const f=c-1,g=u-2;r=s.consumeLowerThan(f,r,i),s.count===0&&(r=f),s.insert(g,h,d)}return s.consumeLowerThan(1073741824,r,i),i}}class Hs{constructor(e,t,i,s){this.endIndex=e,this.type=t,this.metadata=i,this.containsRTL=s,this._linePartBrand=void 0}isWhitespace(){return!!(this.metadata&1)}isPseudoAfter(){return!!(this.metadata&4)}}let Lpe=class{constructor(e,t){this.startOffset=e,this.endOffset=t}equals(e){return this.startOffset===e.startOffset&&this.endOffset===e.endOffset}};class Am{constructor(e,t,i,s,r,o,a,l,c,u,h,d,f,g,p,m,_,b,y){this.useMonospaceOptimizations=e,this.canUseHalfwidthRightwardsArrow=t,this.lineContent=i,this.continuesWithWrappedLine=s,this.isBasicASCII=r,this.containsRTL=o,this.fauxIndentLength=a,this.lineTokens=l,this.lineDecorations=c.sort(ia.compare),this.tabSize=u,this.startVisibleColumn=h,this.spaceWidth=d,this.stopRenderingLineAfter=p,this.renderWhitespace=m==="all"?4:m==="boundary"?1:m==="selection"?2:m==="trailing"?3:0,this.renderControlCharacters=_,this.fontLigatures=b,this.selectionsOnLine=y&&y.sort((E,L)=>E.startOffset<L.startOffset?-1:1);const w=Math.abs(g-d),S=Math.abs(f-d);w<S?(this.renderSpaceWidth=g,this.renderSpaceCharCode=11825):(this.renderSpaceWidth=f,this.renderSpaceCharCode=183)}sameSelection(e){if(this.selectionsOnLine===null)return e===null;if(e===null||e.length!==this.selectionsOnLine.length)return!1;for(let t=0;t<this.selectionsOnLine.length;t++)if(!this.selectionsOnLine[t].equals(e[t]))return!1;return!0}equals(e){return this.useMonospaceOptimizations===e.useMonospaceOptimizations&&this.canUseHalfwidthRightwardsArrow===e.canUseHalfwidthRightwardsArrow&&this.lineContent===e.lineContent&&this.continuesWithWrappedLine===e.continuesWithWrappedLine&&this.isBasicASCII===e.isBasicASCII&&this.containsRTL===e.containsRTL&&this.fauxIndentLength===e.fauxIndentLength&&this.tabSize===e.tabSize&&this.startVisibleColumn===e.startVisibleColumn&&this.spaceWidth===e.spaceWidth&&this.renderSpaceWidth===e.renderSpaceWidth&&this.renderSpaceCharCode===e.renderSpaceCharCode&&this.stopRenderingLineAfter===e.stopRenderingLineAfter&&this.renderWhitespace===e.renderWhitespace&&this.renderControlCharacters===e.renderControlCharacters&&this.fontLigatures===e.fontLigatures&&ia.equalsArr(this.lineDecorations,e.lineDecorations)&&this.lineTokens.equals(e.lineTokens)&&this.sameSelection(e.selectionsOnLine)}}class xpe{constructor(e,t){this.partIndex=e,this.charIndex=t}}class hh{static getPartIndex(e){return(e&4294901760)>>>16}static getCharIndex(e){return(e&65535)>>>0}constructor(e,t){this.length=e,this._data=new Uint32Array(this.length),this._horizontalOffset=new Uint32Array(this.length)}setColumnInfo(e,t,i,s){const r=(t<<16|i<<0)>>>0;this._data[e-1]=r,this._horizontalOffset[e-1]=s}getHorizontalOffset(e){return this._horizontalOffset.length===0?0:this._horizontalOffset[e-1]}charOffsetToPartData(e){return this.length===0?0:e<0?this._data[0]:e>=this.length?this._data[this.length-1]:this._data[e]}getDomPosition(e){const t=this.charOffsetToPartData(e-1),i=hh.getPartIndex(t),s=hh.getCharIndex(t);return new xpe(i,s)}getColumn(e,t){return this.partDataToCharOffset(e.partIndex,t,e.charIndex)+1}partDataToCharOffset(e,t,i){if(this.length===0)return 0;const s=(e<<16|i<<0)>>>0;let r=0,o=this.length-1;for(;r+1<o;){const p=r+o>>>1,m=this._data[p];if(m===s)return p;m>s?o=p:r=p}if(r===o)return r;const a=this._data[r],l=this._data[o];if(a===s)return r;if(l===s)return o;const c=hh.getPartIndex(a),u=hh.getCharIndex(a),h=hh.getPartIndex(l);let d;c!==h?d=t:d=hh.getCharIndex(l);const f=i-u,g=d-i;return f<=g?r:o}}class v9{constructor(e,t,i){this._renderLineOutputBrand=void 0,this.characterMapping=e,this.containsRTL=t,this.containsForeignElements=i}}function yE(n,e){if(n.lineContent.length===0){if(n.lineDecorations.length>0){e.appendString("<span>");let t=0,i=0,s=0;for(const o of n.lineDecorations)(o.type===1||o.type===2)&&(e.appendString('<span class="'),e.appendString(o.className),e.appendString('"></span>'),o.type===1&&(s|=1,t++),o.type===2&&(s|=2,i++));e.appendString("</span>");const r=new hh(1,t+i);return r.setColumnInfo(1,t,0,0),new v9(r,!1,s)}return e.appendString("<span><span></span></span>"),new v9(new hh(0,0),!1,0)}return y$e(g$e(n),e)}class d$e{constructor(e,t,i,s){this.characterMapping=e,this.html=t,this.containsRTL=i,this.containsForeignElements=s}}function VO(n){const e=new IC(1e4),t=yE(n,e);return new d$e(t.characterMapping,e.build(),t.containsRTL,t.containsForeignElements)}class f$e{constructor(e,t,i,s,r,o,a,l,c,u,h,d,f,g,p,m){this.fontIsMonospace=e,this.canUseHalfwidthRightwardsArrow=t,this.lineContent=i,this.len=s,this.isOverflowing=r,this.overflowingCharCount=o,this.parts=a,this.containsForeignElements=l,this.fauxIndentLength=c,this.tabSize=u,this.startVisibleColumn=h,this.containsRTL=d,this.spaceWidth=f,this.renderSpaceCharCode=g,this.renderWhitespace=p,this.renderControlCharacters=m}}function g$e(n){const e=n.lineContent;let t,i,s;n.stopRenderingLineAfter!==-1&&n.stopRenderingLineAfter<e.length?(t=!0,i=e.length-n.stopRenderingLineAfter,s=n.stopRenderingLineAfter):(t=!1,i=0,s=e.length);let r=p$e(e,n.containsRTL,n.lineTokens,n.fauxIndentLength,s);n.renderControlCharacters&&!n.isBasicASCII&&(r=_$e(e,r)),(n.renderWhitespace===4||n.renderWhitespace===1||n.renderWhitespace===2&&n.selectionsOnLine||n.renderWhitespace===3&&!n.continuesWithWrappedLine)&&(r=v$e(n,e,s,r));let o=0;if(n.lineDecorations.length>0){for(let a=0,l=n.lineDecorations.length;a<l;a++){const c=n.lineDecorations[a];c.type===3||c.type===1?o|=1:c.type===2&&(o|=2)}r=b$e(e,s,r,n.lineDecorations)}return n.containsRTL||(r=m$e(e,r,!n.isBasicASCII||n.fontLigatures)),new f$e(n.useMonospaceOptimizations,n.canUseHalfwidthRightwardsArrow,e,s,t,i,r,o,n.fauxIndentLength,n.tabSize,n.startVisibleColumn,n.containsRTL,n.spaceWidth,n.renderSpaceCharCode,n.renderWhitespace,n.renderControlCharacters)}function p$e(n,e,t,i,s){const r=[];let o=0;i>0&&(r[o++]=new Hs(i,"",0,!1));let a=i;for(let l=0,c=t.getCount();l<c;l++){const u=t.getEndOffset(l);if(u<=i)continue;const h=t.getClassName(l);if(u>=s){const f=e?fy(n.substring(a,s)):!1;r[o++]=new Hs(s,h,0,f);break}const d=e?fy(n.substring(a,u)):!1;r[o++]=new Hs(u,h,0,d),a=u}return r}function m$e(n,e,t){let i=0;const s=[];let r=0;if(t)for(let o=0,a=e.length;o<a;o++){const l=e[o],c=l.endIndex;if(i+50<c){const u=l.type,h=l.metadata,d=l.containsRTL;let f=-1,g=i;for(let p=i;p<c;p++)n.charCodeAt(p)===32&&(f=p),f!==-1&&p-g>=50&&(s[r++]=new Hs(f+1,u,h,d),g=f+1,f=-1);g!==c&&(s[r++]=new Hs(c,u,h,d))}else s[r++]=l;i=c}else for(let o=0,a=e.length;o<a;o++){const l=e[o],c=l.endIndex,u=c-i;if(u>50){const h=l.type,d=l.metadata,f=l.containsRTL,g=Math.ceil(u/50);for(let p=1;p<g;p++){const m=i+p*50;s[r++]=new Hs(m,h,d,f)}s[r++]=new Hs(c,h,d,f)}else s[r++]=l;i=c}return s}function Epe(n){return n<32?n!==9:n===127||n>=8234&&n<=8238||n>=8294&&n<=8297||n>=8206&&n<=8207||n===1564}function _$e(n,e){const t=[];let i=new Hs(0,"",0,!1),s=0;for(const r of e){const o=r.endIndex;for(;s<o;s++){const a=n.charCodeAt(s);Epe(a)&&(s>i.endIndex&&(i=new Hs(s,r.type,r.metadata,r.containsRTL),t.push(i)),i=new Hs(s+1,"mtkcontrol",r.metadata,!1),t.push(i))}s>i.endIndex&&(i=new Hs(o,r.type,r.metadata,r.containsRTL),t.push(i))}return t}function v$e(n,e,t,i){const s=n.continuesWithWrappedLine,r=n.fauxIndentLength,o=n.tabSize,a=n.startVisibleColumn,l=n.useMonospaceOptimizations,c=n.selectionsOnLine,u=n.renderWhitespace===1,h=n.renderWhitespace===3,d=n.renderSpaceWidth!==n.spaceWidth,f=[];let g=0,p=0,m=i[p].type,_=i[p].containsRTL,b=i[p].endIndex;const y=i.length;let w=!1,S=zr(e),E;S===-1?(w=!0,S=t,E=t):E=wu(e);let L=!1,k=0,x=c&&c[k],I=a%o;for(let T=r;T<t;T++){const P=e.charCodeAt(T);x&&T>=x.endOffset&&(k++,x=c&&c[k]);let R;if(T<S||T>E)R=!0;else if(P===9)R=!0;else if(P===32)if(u)if(L)R=!0;else{const F=T+1<t?e.charCodeAt(T+1):0;R=F===32||F===9}else R=!0;else R=!1;if(R&&c&&(R=!!x&&x.startOffset<=T&&x.endOffset>T),R&&h&&(R=w||T>E),R&&_&&T>=S&&T<=E&&(R=!1),L){if(!R||!l&&I>=o){if(d){const F=g>0?f[g-1].endIndex:r;for(let j=F+1;j<=T;j++)f[g++]=new Hs(j,"mtkw",1,!1)}else f[g++]=new Hs(T,"mtkw",1,!1);I=I%o}}else(T===b||R&&T>r)&&(f[g++]=new Hs(T,m,0,_),I=I%o);for(P===9?I=o:Yp(P)?I+=2:I++,L=R;T===b&&(p++,p<y);)m=i[p].type,_=i[p].containsRTL,b=i[p].endIndex}let N=!1;if(L)if(s&&u){const T=t>0?e.charCodeAt(t-1):0,P=t>1?e.charCodeAt(t-2):0;T===32&&P!==32&&P!==9||(N=!0)}else N=!0;if(N)if(d){const T=g>0?f[g-1].endIndex:r;for(let P=T+1;P<=t;P++)f[g++]=new Hs(P,"mtkw",1,!1)}else f[g++]=new Hs(t,"mtkw",1,!1);else f[g++]=new Hs(t,m,0,_);return f}function b$e(n,e,t,i){i.sort(ia.compare);const s=h$e.normalize(n,i),r=s.length;let o=0;const a=[];let l=0,c=0;for(let h=0,d=t.length;h<d;h++){const f=t[h],g=f.endIndex,p=f.type,m=f.metadata,_=f.containsRTL;for(;o<r&&s[o].startOffset<g;){const b=s[o];if(b.startOffset>c&&(c=b.startOffset,a[l++]=new Hs(c,p,m,_)),b.endOffset+1<=g)c=b.endOffset+1,a[l++]=new Hs(c,p+" "+b.className,m|b.metadata,_),o++;else{c=g,a[l++]=new Hs(c,p+" "+b.className,m|b.metadata,_);break}}g>c&&(c=g,a[l++]=new Hs(c,p,m,_))}const u=t[t.length-1].endIndex;if(o<r&&s[o].startOffset===u)for(;o<r&&s[o].startOffset===u;){const h=s[o];a[l++]=new Hs(c,h.className,h.metadata,!1),o++}return a}function y$e(n,e){const t=n.fontIsMonospace,i=n.canUseHalfwidthRightwardsArrow,s=n.containsForeignElements,r=n.lineContent,o=n.len,a=n.isOverflowing,l=n.overflowingCharCount,c=n.parts,u=n.fauxIndentLength,h=n.tabSize,d=n.startVisibleColumn,f=n.containsRTL,g=n.spaceWidth,p=n.renderSpaceCharCode,m=n.renderWhitespace,_=n.renderControlCharacters,b=new hh(o+1,c.length);let y=!1,w=0,S=d,E=0,L=0,k=0;f?e.appendString('<span dir="ltr">'):e.appendString("<span>");for(let x=0,I=c.length;x<I;x++){const N=c[x],T=N.endIndex,P=N.type,R=N.containsRTL,F=m!==0&&N.isWhitespace(),j=F&&!t&&(P==="mtkw"||!s),K=w===T&&N.isPseudoAfter();if(E=0,e.appendString("<span "),R&&e.appendString('style="unicode-bidi:isolate" '),e.appendString('class="'),e.appendString(j?"mtkz":P),e.appendASCIICharCode(34),F){let Z=0;{let q=w,re=S;for(;q<T;q++){const W=(r.charCodeAt(q)===9?h-re%h:1)|0;Z+=W,q>=u&&(re+=W)}}for(j&&(e.appendString(' style="width:'),e.appendString(String(g*Z)),e.appendString('px"')),e.appendASCIICharCode(62);w<T;w++){b.setColumnInfo(w+1,x-k,E,L),k=0;const q=r.charCodeAt(w);let re,G;if(q===9){re=h-S%h|0,G=re,!i||G>1?e.appendCharCode(8594):e.appendCharCode(65515);for(let W=2;W<=G;W++)e.appendCharCode(160)}else re=2,G=1,e.appendCharCode(p),e.appendCharCode(8204);E+=re,L+=G,w>=u&&(S+=G)}}else for(e.appendASCIICharCode(62);w<T;w++){b.setColumnInfo(w+1,x-k,E,L),k=0;const Z=r.charCodeAt(w);let q=1,re=1;switch(Z){case 9:q=h-S%h,re=q;for(let G=1;G<=q;G++)e.appendCharCode(160);break;case 32:e.appendCharCode(160);break;case 60:e.appendString("<");break;case 62:e.appendString(">");break;case 38:e.appendString("&");break;case 0:_?e.appendCharCode(9216):e.appendString("�");break;case 65279:case 8232:case 8233:case 133:e.appendCharCode(65533);break;default:Yp(Z)&&re++,_&&Z<32?e.appendCharCode(9216+Z):_&&Z===127?e.appendCharCode(9249):_&&Epe(Z)?(e.appendString("[U+"),e.appendString(C$e(Z)),e.appendString("]"),q=8,re=q):e.appendCharCode(Z)}E+=q,L+=re,w>=u&&(S+=re)}K?k++:k=0,w>=o&&!y&&N.isPseudoAfter()&&(y=!0,b.setColumnInfo(w+1,x,E,L)),e.appendString("</span>")}return y||b.setColumnInfo(o+1,c.length-1,E,L),a&&(e.appendString('<span class="mtkoverflow">'),e.appendString(v("showMore","Show more ({0})",w$e(l))),e.appendString("</span>")),e.appendString("</span>"),new v9(b,f,s)}function C$e(n){return n.toString(16).toUpperCase().padStart(4,"0")}function w$e(n){return n<1024?v("overflow.chars","{0} chars",n):n<1024*1024?`${(n/1024).toFixed(1)} KB`:`${(n/1024/1024).toFixed(1)} MB`}var Sl;(function(n){n.DARK="dark",n.LIGHT="light",n.HIGH_CONTRAST_DARK="hcDark",n.HIGH_CONTRAST_LIGHT="hcLight"})(Sl||(Sl={}));function ku(n){return n===Sl.HIGH_CONTRAST_DARK||n===Sl.HIGH_CONTRAST_LIGHT}function yy(n){return n===Sl.DARK||n===Sl.HIGH_CONTRAST_DARK}const S$e=function(){return Cu?!0:!(Kr||Ol||Gf)}();let Sb=!0;class fee{constructor(e,t){this.themeType=t;const i=e.options,s=i.get(50);i.get(38)==="off"?this.renderWhitespace=i.get(98):this.renderWhitespace="none",this.renderControlCharacters=i.get(93),this.spaceWidth=s.spaceWidth,this.middotWidth=s.middotWidth,this.wsmiddotWidth=s.wsmiddotWidth,this.useMonospaceOptimizations=s.isMonospace&&!i.get(33),this.canUseHalfwidthRightwardsArrow=s.canUseHalfwidthRightwardsArrow,this.lineHeight=i.get(66),this.stopRenderingLineAfter=i.get(116),this.fontLigatures=i.get(51)}equals(e){return this.themeType===e.themeType&&this.renderWhitespace===e.renderWhitespace&&this.renderControlCharacters===e.renderControlCharacters&&this.spaceWidth===e.spaceWidth&&this.middotWidth===e.middotWidth&&this.wsmiddotWidth===e.wsmiddotWidth&&this.useMonospaceOptimizations===e.useMonospaceOptimizations&&this.canUseHalfwidthRightwardsArrow===e.canUseHalfwidthRightwardsArrow&&this.lineHeight===e.lineHeight&&this.stopRenderingLineAfter===e.stopRenderingLineAfter&&this.fontLigatures===e.fontLigatures}}class vh{constructor(e){this._options=e,this._isMaybeInvalid=!0,this._renderedViewLine=null}getDomNode(){return this._renderedViewLine&&this._renderedViewLine.domNode?this._renderedViewLine.domNode.domNode:null}setDomNode(e){if(this._renderedViewLine)this._renderedViewLine.domNode=fi(e);else throw new Error("I have no rendered view line to set the dom node to...")}onContentChanged(){this._isMaybeInvalid=!0}onTokensChanged(){this._isMaybeInvalid=!0}onDecorationsChanged(){this._isMaybeInvalid=!0}onOptionsChanged(e){this._isMaybeInvalid=!0,this._options=e}onSelectionChanged(){return ku(this._options.themeType)||this._options.renderWhitespace==="selection"?(this._isMaybeInvalid=!0,!0):!1}renderLine(e,t,i,s){if(this._isMaybeInvalid===!1)return!1;this._isMaybeInvalid=!1;const r=i.getViewLineRenderingData(e),o=this._options,a=ia.filter(r.inlineDecorations,e,r.minColumn,r.maxColumn);let l=null;if(ku(o.themeType)||this._options.renderWhitespace==="selection"){const d=i.selections;for(const f of d){if(f.endLineNumber<e||f.startLineNumber>e)continue;const g=f.startLineNumber===e?f.startColumn:r.minColumn,p=f.endLineNumber===e?f.endColumn:r.maxColumn;g<p&&(ku(o.themeType)&&a.push(new ia(g,p,"inline-selected-text",0)),this._options.renderWhitespace==="selection"&&(l||(l=[]),l.push(new Lpe(g-1,p-1))))}}const c=new Am(o.useMonospaceOptimizations,o.canUseHalfwidthRightwardsArrow,r.content,r.continuesWithWrappedLine,r.isBasicASCII,r.containsRTL,r.minColumn-1,r.tokens,a,r.tabSize,r.startVisibleColumn,o.spaceWidth,o.middotWidth,o.wsmiddotWidth,o.stopRenderingLineAfter,o.renderWhitespace,o.renderControlCharacters,o.fontLigatures!==Oa.OFF,l);if(this._renderedViewLine&&this._renderedViewLine.input.equals(c))return!1;s.appendString('<div style="top:'),s.appendString(String(t)),s.appendString("px;height:"),s.appendString(String(this._options.lineHeight)),s.appendString('px;" class="'),s.appendString(vh.CLASS_NAME),s.appendString('">');const u=yE(c,s);s.appendString("</div>");let h=null;return Sb&&S$e&&r.isBasicASCII&&o.useMonospaceOptimizations&&u.containsForeignElements===0&&(h=new sI(this._renderedViewLine?this._renderedViewLine.domNode:null,c,u.characterMapping)),h||(h=Ipe(this._renderedViewLine?this._renderedViewLine.domNode:null,c,u.characterMapping,u.containsRTL,u.containsForeignElements)),this._renderedViewLine=h,!0}layoutLine(e,t){this._renderedViewLine&&this._renderedViewLine.domNode&&(this._renderedViewLine.domNode.setTop(t),this._renderedViewLine.domNode.setHeight(this._options.lineHeight))}getWidth(e){return this._renderedViewLine?this._renderedViewLine.getWidth(e):0}getWidthIsFast(){return this._renderedViewLine?this._renderedViewLine.getWidthIsFast():!0}needsMonospaceFontCheck(){return this._renderedViewLine?this._renderedViewLine instanceof sI:!1}monospaceAssumptionsAreValid(){return this._renderedViewLine&&this._renderedViewLine instanceof sI?this._renderedViewLine.monospaceAssumptionsAreValid():Sb}onMonospaceAssumptionsInvalidated(){this._renderedViewLine&&this._renderedViewLine instanceof sI&&(this._renderedViewLine=this._renderedViewLine.toSlowRenderedLine())}getVisibleRangesForRange(e,t,i,s){if(!this._renderedViewLine)return null;t=Math.min(this._renderedViewLine.input.lineContent.length+1,Math.max(1,t)),i=Math.min(this._renderedViewLine.input.lineContent.length+1,Math.max(1,i));const r=this._renderedViewLine.input.stopRenderingLineAfter;if(r!==-1&&t>r+1&&i>r+1)return new hee(!0,[new o_(this.getWidth(s),0)]);r!==-1&&t>r+1&&(t=r+1),r!==-1&&i>r+1&&(i=r+1);const o=this._renderedViewLine.getVisibleRangesForRange(e,t,i,s);return o&&o.length>0?new hee(!1,o):null}getColumnOfNodeOffset(e,t){return this._renderedViewLine?this._renderedViewLine.getColumnOfNodeOffset(e,t):1}}vh.CLASS_NAME="view-line";class sI{constructor(e,t,i){this._cachedWidth=-1,this.domNode=e,this.input=t;const s=Math.floor(t.lineContent.length/300);if(s>0){this._keyColumnPixelOffsetCache=new Float32Array(s);for(let r=0;r<s;r++)this._keyColumnPixelOffsetCache[r]=-1}else this._keyColumnPixelOffsetCache=null;this._characterMapping=i,this._charWidth=t.spaceWidth}getWidth(e){if(!this.domNode||this.input.lineContent.length<300){const t=this._characterMapping.getHorizontalOffset(this._characterMapping.length);return Math.round(this._charWidth*t)}return this._cachedWidth===-1&&(this._cachedWidth=this._getReadingTarget(this.domNode).offsetWidth,e==null||e.markDidDomLayout()),this._cachedWidth}getWidthIsFast(){return this.input.lineContent.length<300||this._cachedWidth!==-1}monospaceAssumptionsAreValid(){if(!this.domNode)return Sb;if(this.input.lineContent.length<300){const e=this.getWidth(null),t=this.domNode.domNode.firstChild.offsetWidth;Math.abs(e-t)>=2&&(console.warn("monospace assumptions have been violated, therefore disabling monospace optimizations!"),Sb=!1)}return Sb}toSlowRenderedLine(){return Ipe(this.domNode,this.input,this._characterMapping,!1,0)}getVisibleRangesForRange(e,t,i,s){const r=this._getColumnPixelOffset(e,t,s),o=this._getColumnPixelOffset(e,i,s);return[new o_(r,o-r)]}_getColumnPixelOffset(e,t,i){if(t<=300){const c=this._characterMapping.getHorizontalOffset(t);return this._charWidth*c}const s=Math.floor((t-1)/300)-1,r=(s+1)*300+1;let o=-1;if(this._keyColumnPixelOffsetCache&&(o=this._keyColumnPixelOffsetCache[s],o===-1&&(o=this._actualReadPixelOffset(e,r,i),this._keyColumnPixelOffsetCache[s]=o)),o===-1){const c=this._characterMapping.getHorizontalOffset(t);return this._charWidth*c}const a=this._characterMapping.getHorizontalOffset(r),l=this._characterMapping.getHorizontalOffset(t);return o+this._charWidth*(l-a)}_getReadingTarget(e){return e.domNode.firstChild}_actualReadPixelOffset(e,t,i){if(!this.domNode)return-1;const s=this._characterMapping.getDomPosition(t),r=rN.readHorizontalRanges(this._getReadingTarget(this.domNode),s.partIndex,s.charIndex,s.partIndex,s.charIndex,i);return!r||r.length===0?-1:r[0].left}getColumnOfNodeOffset(e,t){return mq(this._characterMapping,e,t)}}class Dpe{constructor(e,t,i,s,r){if(this.domNode=e,this.input=t,this._characterMapping=i,this._isWhitespaceOnly=/^\s*$/.test(t.lineContent),this._containsForeignElements=r,this._cachedWidth=-1,this._pixelOffsetCache=null,!s||this._characterMapping.length===0){this._pixelOffsetCache=new Float32Array(Math.max(2,this._characterMapping.length+1));for(let o=0,a=this._characterMapping.length;o<=a;o++)this._pixelOffsetCache[o]=-1}}_getReadingTarget(e){return e.domNode.firstChild}getWidth(e){return this.domNode?(this._cachedWidth===-1&&(this._cachedWidth=this._getReadingTarget(this.domNode).offsetWidth,e==null||e.markDidDomLayout()),this._cachedWidth):0}getWidthIsFast(){return this._cachedWidth!==-1}getVisibleRangesForRange(e,t,i,s){if(!this.domNode)return null;if(this._pixelOffsetCache!==null){const r=this._readPixelOffset(this.domNode,e,t,s);if(r===-1)return null;const o=this._readPixelOffset(this.domNode,e,i,s);return o===-1?null:[new o_(r,o-r)]}return this._readVisibleRangesForRange(this.domNode,e,t,i,s)}_readVisibleRangesForRange(e,t,i,s,r){if(i===s){const o=this._readPixelOffset(e,t,i,r);return o===-1?null:[new o_(o,0)]}else return this._readRawVisibleRangesForRange(e,i,s,r)}_readPixelOffset(e,t,i,s){if(this._characterMapping.length===0){if(this._containsForeignElements===0||this._containsForeignElements===2)return 0;if(this._containsForeignElements===1)return this.getWidth(s);const r=this._getReadingTarget(e);return r.firstChild?(s.markDidDomLayout(),r.firstChild.offsetWidth):0}if(this._pixelOffsetCache!==null){const r=this._pixelOffsetCache[i];if(r!==-1)return r;const o=this._actualReadPixelOffset(e,t,i,s);return this._pixelOffsetCache[i]=o,o}return this._actualReadPixelOffset(e,t,i,s)}_actualReadPixelOffset(e,t,i,s){if(this._characterMapping.length===0){const l=rN.readHorizontalRanges(this._getReadingTarget(e),0,0,0,0,s);return!l||l.length===0?-1:l[0].left}if(i===this._characterMapping.length&&this._isWhitespaceOnly&&this._containsForeignElements===0)return this.getWidth(s);const r=this._characterMapping.getDomPosition(i),o=rN.readHorizontalRanges(this._getReadingTarget(e),r.partIndex,r.charIndex,r.partIndex,r.charIndex,s);if(!o||o.length===0)return-1;const a=o[0].left;if(this.input.isBasicASCII){const l=this._characterMapping.getHorizontalOffset(i),c=Math.round(this.input.spaceWidth*l);if(Math.abs(c-a)<=1)return c}return a}_readRawVisibleRangesForRange(e,t,i,s){if(t===1&&i===this._characterMapping.length)return[new o_(0,this.getWidth(s))];const r=this._characterMapping.getDomPosition(t),o=this._characterMapping.getDomPosition(i);return rN.readHorizontalRanges(this._getReadingTarget(e),r.partIndex,r.charIndex,o.partIndex,o.charIndex,s)}getColumnOfNodeOffset(e,t){return mq(this._characterMapping,e,t)}}class k$e extends Dpe{_readVisibleRangesForRange(e,t,i,s,r){const o=super._readVisibleRangesForRange(e,t,i,s,r);if(!o||o.length===0||i===s||i===1&&s===this._characterMapping.length)return o;if(!this.input.containsRTL){const a=this._readPixelOffset(e,t,s,r);if(a!==-1){const l=o[o.length-1];l.left<a&&(l.width=a-l.left)}}return o}}const Ipe=function(){return n_?L$e:x$e}();function L$e(n,e,t,i,s){return new k$e(n,e,t,i,s)}function x$e(n,e,t,i,s){return new Dpe(n,e,t,i,s)}function mq(n,e,t){const i=e.textContent.length;let s=-1;for(;e;)e=e.previousSibling,s++;return n.getColumn(new xpe(s,t),i)}class Rg{constructor(e=null){this.hitTarget=e,this.type=0}}class Tpe{constructor(e,t,i){this.position=e,this.spanNode=t,this.injectedText=i,this.type=1}}var w1;(function(n){function e(t,i,s){const r=t.getPositionFromDOMInfo(i,s);return r?new Tpe(r,i,null):new Rg(i)}n.createFromDOMInfo=e})(w1||(w1={}));class E$e{constructor(e,t){this.lastViewCursorsRenderData=e,this.lastTextareaPosition=t}}class Wr{static _deduceRage(e,t=null){return!t&&e?new M(e.lineNumber,e.column,e.lineNumber,e.column):t??null}static createUnknown(e,t,i){return{type:0,element:e,mouseColumn:t,position:i,range:this._deduceRage(i)}}static createTextarea(e,t){return{type:1,element:e,mouseColumn:t,position:null,range:null}}static createMargin(e,t,i,s,r,o){return{type:e,element:t,mouseColumn:i,position:s,range:r,detail:o}}static createViewZone(e,t,i,s,r){return{type:e,element:t,mouseColumn:i,position:s,range:this._deduceRage(s),detail:r}}static createContentText(e,t,i,s,r){return{type:6,element:e,mouseColumn:t,position:i,range:this._deduceRage(i,s),detail:r}}static createContentEmpty(e,t,i,s){return{type:7,element:e,mouseColumn:t,position:i,range:this._deduceRage(i),detail:s}}static createContentWidget(e,t,i){return{type:9,element:e,mouseColumn:t,position:null,range:null,detail:i}}static createScrollbar(e,t,i){return{type:11,element:e,mouseColumn:t,position:i,range:this._deduceRage(i)}}static createOverlayWidget(e,t,i){return{type:12,element:e,mouseColumn:t,position:null,range:null,detail:i}}static createOutsideEditor(e,t,i,s){return{type:13,element:null,mouseColumn:e,position:t,range:this._deduceRage(t),outsidePosition:i,outsideDistance:s}}static _typeToString(e){return e===1?"TEXTAREA":e===2?"GUTTER_GLYPH_MARGIN":e===3?"GUTTER_LINE_NUMBERS":e===4?"GUTTER_LINE_DECORATIONS":e===5?"GUTTER_VIEW_ZONE":e===6?"CONTENT_TEXT":e===7?"CONTENT_EMPTY":e===8?"CONTENT_VIEW_ZONE":e===9?"CONTENT_WIDGET":e===10?"OVERVIEW_RULER":e===11?"SCROLLBAR":e===12?"OVERLAY_WIDGET":"UNKNOWN"}static toString(e){return this._typeToString(e.type)+": "+e.position+" - "+e.range+" - "+JSON.stringify(e.detail)}}class Ca{static isTextArea(e){return e.length===2&&e[0]===3&&e[1]===6}static isChildOfViewLines(e){return e.length>=4&&e[0]===3&&e[3]===7}static isStrictChildOfViewLines(e){return e.length>4&&e[0]===3&&e[3]===7}static isChildOfScrollableElement(e){return e.length>=2&&e[0]===3&&e[1]===5}static isChildOfMinimap(e){return e.length>=2&&e[0]===3&&e[1]===8}static isChildOfContentWidgets(e){return e.length>=4&&e[0]===3&&e[3]===1}static isChildOfOverflowGuard(e){return e.length>=1&&e[0]===3}static isChildOfOverflowingContentWidgets(e){return e.length>=1&&e[0]===2}static isChildOfOverlayWidgets(e){return e.length>=2&&e[0]===3&&e[1]===4}}class Cy{constructor(e,t,i){this.viewModel=e.viewModel;const s=e.configuration.options;this.layoutInfo=s.get(143),this.viewDomNode=t.viewDomNode,this.lineHeight=s.get(66),this.stickyTabStops=s.get(115),this.typicalHalfwidthCharacterWidth=s.get(50).typicalHalfwidthCharacterWidth,this.lastRenderData=i,this._context=e,this._viewHelper=t}getZoneAtCoord(e){return Cy.getZoneAtCoord(this._context,e)}static getZoneAtCoord(e,t){const i=e.viewLayout.getWhitespaceAtVerticalOffset(t);if(i){const s=i.verticalOffset+i.height/2,r=e.viewModel.getLineCount();let o=null,a,l=null;return i.afterLineNumber!==r&&(l=new he(i.afterLineNumber+1,1)),i.afterLineNumber>0&&(o=new he(i.afterLineNumber,e.viewModel.getLineMaxColumn(i.afterLineNumber))),l===null?a=o:o===null?a=l:t<s?a=o:a=l,{viewZoneId:i.id,afterLineNumber:i.afterLineNumber,positionBefore:o,positionAfter:l,position:a}}return null}getFullLineRangeAtCoord(e){if(this._context.viewLayout.isAfterLines(e)){const s=this._context.viewModel.getLineCount(),r=this._context.viewModel.getLineMaxColumn(s);return{range:new M(s,r,s,r),isAfterLines:!0}}const t=this._context.viewLayout.getLineNumberAtVerticalOffset(e),i=this._context.viewModel.getLineMaxColumn(t);return{range:new M(t,1,t,i),isAfterLines:!1}}getLineNumberAtVerticalOffset(e){return this._context.viewLayout.getLineNumberAtVerticalOffset(e)}isAfterLines(e){return this._context.viewLayout.isAfterLines(e)}isInTopPadding(e){return this._context.viewLayout.isInTopPadding(e)}isInBottomPadding(e){return this._context.viewLayout.isInBottomPadding(e)}getVerticalOffsetForLineNumber(e){return this._context.viewLayout.getVerticalOffsetForLineNumber(e)}findAttribute(e,t){return Cy._findAttribute(e,t,this._viewHelper.viewDomNode)}static _findAttribute(e,t,i){for(;e&&e!==e.ownerDocument.body;){if(e.hasAttribute&&e.hasAttribute(t))return e.getAttribute(t);if(e===i)return null;e=e.parentNode}return null}getLineWidth(e){return this._viewHelper.getLineWidth(e)}visibleRangeForPosition(e,t){return this._viewHelper.visibleRangeForPosition(e,t)}getPositionFromDOMInfo(e,t){return this._viewHelper.getPositionFromDOMInfo(e,t)}getCurrentScrollTop(){return this._context.viewLayout.getCurrentScrollTop()}getCurrentScrollLeft(){return this._context.viewLayout.getCurrentScrollLeft()}}class D$e{constructor(e,t,i,s){this.editorPos=t,this.pos=i,this.relativePos=s,this.mouseVerticalOffset=Math.max(0,e.getCurrentScrollTop()+this.relativePos.y),this.mouseContentHorizontalOffset=e.getCurrentScrollLeft()+this.relativePos.x-e.layoutInfo.contentLeft,this.isInMarginArea=this.relativePos.x<e.layoutInfo.contentLeft&&this.relativePos.x>=e.layoutInfo.glyphMarginLeft,this.isInContentArea=!this.isInMarginArea,this.mouseColumn=Math.max(0,lr._getMouseColumn(this.mouseContentHorizontalOffset,e.typicalHalfwidthCharacterWidth))}}class _q extends D$e{constructor(e,t,i,s,r){super(e,t,i,s),this._ctx=e,r?(this.target=r,this.targetPath=pd.collect(r,e.viewDomNode)):(this.target=null,this.targetPath=new Uint8Array(0))}toString(){return`pos(${this.pos.x},${this.pos.y}), editorPos(${this.editorPos.x},${this.editorPos.y}), relativePos(${this.relativePos.x},${this.relativePos.y}), mouseVerticalOffset: ${this.mouseVerticalOffset}, mouseContentHorizontalOffset: ${this.mouseContentHorizontalOffset} + target: ${this.target?this.target.outerHTML:null}`}_getMouseColumn(e=null){return e&&e.column<this._ctx.viewModel.getLineMaxColumn(e.lineNumber)?xs.visibleColumnFromColumn(this._ctx.viewModel.getLineContent(e.lineNumber),e.column,this._ctx.viewModel.model.getOptions().tabSize)+1:this.mouseColumn}fulfillUnknown(e=null){return Wr.createUnknown(this.target,this._getMouseColumn(e),e)}fulfillTextarea(){return Wr.createTextarea(this.target,this._getMouseColumn())}fulfillMargin(e,t,i,s){return Wr.createMargin(e,this.target,this._getMouseColumn(t),t,i,s)}fulfillViewZone(e,t,i){return Wr.createViewZone(e,this.target,this._getMouseColumn(t),t,i)}fulfillContentText(e,t,i){return Wr.createContentText(this.target,this._getMouseColumn(e),e,t,i)}fulfillContentEmpty(e,t){return Wr.createContentEmpty(this.target,this._getMouseColumn(e),e,t)}fulfillContentWidget(e){return Wr.createContentWidget(this.target,this._getMouseColumn(),e)}fulfillScrollbar(e){return Wr.createScrollbar(this.target,this._getMouseColumn(e),e)}fulfillOverlayWidget(e){return Wr.createOverlayWidget(this.target,this._getMouseColumn(),e)}withTarget(e){return new _q(this._ctx,this.editorPos,this.pos,this.relativePos,e)}}const gee={isAfterLines:!0};function B5(n){return{isAfterLines:!1,horizontalDistanceToText:n}}class lr{constructor(e,t){this._context=e,this._viewHelper=t}mouseTargetIsWidget(e){const t=e.target,i=pd.collect(t,this._viewHelper.viewDomNode);return!!(Ca.isChildOfContentWidgets(i)||Ca.isChildOfOverflowingContentWidgets(i)||Ca.isChildOfOverlayWidgets(i))}createMouseTarget(e,t,i,s,r){const o=new Cy(this._context,this._viewHelper,e),a=new _q(o,t,i,s,r);try{const l=lr._createMouseTarget(o,a,!1);if(l.type===6&&o.stickyTabStops&&l.position!==null){const c=lr._snapToSoftTabBoundary(l.position,o.viewModel),u=M.fromPositions(c,c).plusRange(l.range);return a.fulfillContentText(c,u,l.detail)}return l}catch{return a.fulfillUnknown()}}static _createMouseTarget(e,t,i){if(t.target===null){if(i)return t.fulfillUnknown();const o=lr._doHitTest(e,t);return o.type===1?lr.createMouseTargetFromHitTestPosition(e,t,o.spanNode,o.position,o.injectedText):this._createMouseTarget(e,t.withTarget(o.hitTarget),!0)}const s=t;let r=null;return!Ca.isChildOfOverflowGuard(t.targetPath)&&!Ca.isChildOfOverflowingContentWidgets(t.targetPath)&&(r=r||t.fulfillUnknown()),r=r||lr._hitTestContentWidget(e,s),r=r||lr._hitTestOverlayWidget(e,s),r=r||lr._hitTestMinimap(e,s),r=r||lr._hitTestScrollbarSlider(e,s),r=r||lr._hitTestViewZone(e,s),r=r||lr._hitTestMargin(e,s),r=r||lr._hitTestViewCursor(e,s),r=r||lr._hitTestTextArea(e,s),r=r||lr._hitTestViewLines(e,s,i),r=r||lr._hitTestScrollbar(e,s),r||t.fulfillUnknown()}static _hitTestContentWidget(e,t){if(Ca.isChildOfContentWidgets(t.targetPath)||Ca.isChildOfOverflowingContentWidgets(t.targetPath)){const i=e.findAttribute(t.target,"widgetId");return i?t.fulfillContentWidget(i):t.fulfillUnknown()}return null}static _hitTestOverlayWidget(e,t){if(Ca.isChildOfOverlayWidgets(t.targetPath)){const i=e.findAttribute(t.target,"widgetId");return i?t.fulfillOverlayWidget(i):t.fulfillUnknown()}return null}static _hitTestViewCursor(e,t){if(t.target){const i=e.lastRenderData.lastViewCursorsRenderData;for(const s of i)if(t.target===s.domNode)return t.fulfillContentText(s.position,null,{mightBeForeignElement:!1,injectedText:null})}if(t.isInContentArea){const i=e.lastRenderData.lastViewCursorsRenderData,s=t.mouseContentHorizontalOffset,r=t.mouseVerticalOffset;for(const o of i){if(s<o.contentLeft||s>o.contentLeft+o.width)continue;const a=e.getVerticalOffsetForLineNumber(o.position.lineNumber);if(a<=r&&r<=a+o.height)return t.fulfillContentText(o.position,null,{mightBeForeignElement:!1,injectedText:null})}}return null}static _hitTestViewZone(e,t){const i=e.getZoneAtCoord(t.mouseVerticalOffset);if(i){const s=t.isInContentArea?8:5;return t.fulfillViewZone(s,i.position,i)}return null}static _hitTestTextArea(e,t){return Ca.isTextArea(t.targetPath)?e.lastRenderData.lastTextareaPosition?t.fulfillContentText(e.lastRenderData.lastTextareaPosition,null,{mightBeForeignElement:!1,injectedText:null}):t.fulfillTextarea():null}static _hitTestMargin(e,t){if(t.isInMarginArea){const i=e.getFullLineRangeAtCoord(t.mouseVerticalOffset),s=i.range.getStartPosition();let r=Math.abs(t.relativePos.x);const o={isAfterLines:i.isAfterLines,glyphMarginLeft:e.layoutInfo.glyphMarginLeft,glyphMarginWidth:e.layoutInfo.glyphMarginWidth,lineNumbersWidth:e.layoutInfo.lineNumbersWidth,offsetX:r};return r-=e.layoutInfo.glyphMarginLeft,r<=e.layoutInfo.glyphMarginWidth?t.fulfillMargin(2,s,i.range,o):(r-=e.layoutInfo.glyphMarginWidth,r<=e.layoutInfo.lineNumbersWidth?t.fulfillMargin(3,s,i.range,o):(r-=e.layoutInfo.lineNumbersWidth,t.fulfillMargin(4,s,i.range,o)))}return null}static _hitTestViewLines(e,t,i){if(!Ca.isChildOfViewLines(t.targetPath))return null;if(e.isInTopPadding(t.mouseVerticalOffset))return t.fulfillContentEmpty(new he(1,1),gee);if(e.isAfterLines(t.mouseVerticalOffset)||e.isInBottomPadding(t.mouseVerticalOffset)){const r=e.viewModel.getLineCount(),o=e.viewModel.getLineMaxColumn(r);return t.fulfillContentEmpty(new he(r,o),gee)}if(i){if(Ca.isStrictChildOfViewLines(t.targetPath)){const r=e.getLineNumberAtVerticalOffset(t.mouseVerticalOffset);if(e.viewModel.getLineLength(r)===0){const a=e.getLineWidth(r),l=B5(t.mouseContentHorizontalOffset-a);return t.fulfillContentEmpty(new he(r,1),l)}const o=e.getLineWidth(r);if(t.mouseContentHorizontalOffset>=o){const a=B5(t.mouseContentHorizontalOffset-o),l=new he(r,e.viewModel.getLineMaxColumn(r));return t.fulfillContentEmpty(l,a)}}return t.fulfillUnknown()}const s=lr._doHitTest(e,t);return s.type===1?lr.createMouseTargetFromHitTestPosition(e,t,s.spanNode,s.position,s.injectedText):this._createMouseTarget(e,t.withTarget(s.hitTarget),!0)}static _hitTestMinimap(e,t){if(Ca.isChildOfMinimap(t.targetPath)){const i=e.getLineNumberAtVerticalOffset(t.mouseVerticalOffset),s=e.viewModel.getLineMaxColumn(i);return t.fulfillScrollbar(new he(i,s))}return null}static _hitTestScrollbarSlider(e,t){if(Ca.isChildOfScrollableElement(t.targetPath)&&t.target&&t.target.nodeType===1){const i=t.target.className;if(i&&/\b(slider|scrollbar)\b/.test(i)){const s=e.getLineNumberAtVerticalOffset(t.mouseVerticalOffset),r=e.viewModel.getLineMaxColumn(s);return t.fulfillScrollbar(new he(s,r))}}return null}static _hitTestScrollbar(e,t){if(Ca.isChildOfScrollableElement(t.targetPath)){const i=e.getLineNumberAtVerticalOffset(t.mouseVerticalOffset),s=e.viewModel.getLineMaxColumn(i);return t.fulfillScrollbar(new he(i,s))}return null}getMouseColumn(e){const t=this._context.configuration.options,i=t.get(143),s=this._context.viewLayout.getCurrentScrollLeft()+e.x-i.contentLeft;return lr._getMouseColumn(s,t.get(50).typicalHalfwidthCharacterWidth)}static _getMouseColumn(e,t){return e<0?1:Math.round(e/t)+1}static createMouseTargetFromHitTestPosition(e,t,i,s,r){const o=s.lineNumber,a=s.column,l=e.getLineWidth(o);if(t.mouseContentHorizontalOffset>l){const _=B5(t.mouseContentHorizontalOffset-l);return t.fulfillContentEmpty(s,_)}const c=e.visibleRangeForPosition(o,a);if(!c)return t.fulfillUnknown(s);const u=c.left;if(Math.abs(t.mouseContentHorizontalOffset-u)<1)return t.fulfillContentText(s,null,{mightBeForeignElement:!!r,injectedText:r});const h=[];if(h.push({offset:c.left,column:a}),a>1){const _=e.visibleRangeForPosition(o,a-1);_&&h.push({offset:_.left,column:a-1})}const d=e.viewModel.getLineMaxColumn(o);if(a<d){const _=e.visibleRangeForPosition(o,a+1);_&&h.push({offset:_.left,column:a+1})}h.sort((_,b)=>_.offset-b.offset);const f=t.pos.toClientCoordinates(pt(e.viewDomNode)),g=i.getBoundingClientRect(),p=g.left<=f.clientX&&f.clientX<=g.right;let m=null;for(let _=1;_<h.length;_++){const b=h[_-1],y=h[_];if(b.offset<=t.mouseContentHorizontalOffset&&t.mouseContentHorizontalOffset<=y.offset){m=new M(o,b.column,o,y.column);const w=Math.abs(b.offset-t.mouseContentHorizontalOffset),S=Math.abs(y.offset-t.mouseContentHorizontalOffset);s=w<S?new he(o,b.column):new he(o,y.column);break}}return t.fulfillContentText(s,m,{mightBeForeignElement:!p||!!r,injectedText:r})}static _doHitTestWithCaretRangeFromPoint(e,t){const i=e.getLineNumberAtVerticalOffset(t.mouseVerticalOffset),s=e.getVerticalOffsetForLineNumber(i),r=s+e.lineHeight;if(!(i===e.viewModel.getLineCount()&&t.mouseVerticalOffset>r)){const a=Math.floor((s+r)/2);let l=t.pos.y+(a-t.mouseVerticalOffset);l<=t.editorPos.y&&(l=t.editorPos.y+1),l>=t.editorPos.y+t.editorPos.height&&(l=t.editorPos.y+t.editorPos.height-1);const c=new BO(t.pos.x,l),u=this._actualDoHitTestWithCaretRangeFromPoint(e,c.toClientCoordinates(pt(e.viewDomNode)));if(u.type===1)return u}return this._actualDoHitTestWithCaretRangeFromPoint(e,t.pos.toClientCoordinates(pt(e.viewDomNode)))}static _actualDoHitTestWithCaretRangeFromPoint(e,t){const i=P_(e.viewDomNode);let s;if(i?typeof i.caretRangeFromPoint>"u"?s=I$e(i,t.clientX,t.clientY):s=i.caretRangeFromPoint(t.clientX,t.clientY):s=e.viewDomNode.ownerDocument.caretRangeFromPoint(t.clientX,t.clientY),!s||!s.startContainer)return new Rg;const r=s.startContainer;if(r.nodeType===r.TEXT_NODE){const o=r.parentNode,a=o?o.parentNode:null,l=a?a.parentNode:null;return(l&&l.nodeType===l.ELEMENT_NODE?l.className:null)===vh.CLASS_NAME?w1.createFromDOMInfo(e,o,s.startOffset):new Rg(r.parentNode)}else if(r.nodeType===r.ELEMENT_NODE){const o=r.parentNode,a=o?o.parentNode:null;return(a&&a.nodeType===a.ELEMENT_NODE?a.className:null)===vh.CLASS_NAME?w1.createFromDOMInfo(e,r,r.textContent.length):new Rg(r)}return new Rg}static _doHitTestWithCaretPositionFromPoint(e,t){const i=e.viewDomNode.ownerDocument.caretPositionFromPoint(t.clientX,t.clientY);if(i.offsetNode.nodeType===i.offsetNode.TEXT_NODE){const s=i.offsetNode.parentNode,r=s?s.parentNode:null,o=r?r.parentNode:null;return(o&&o.nodeType===o.ELEMENT_NODE?o.className:null)===vh.CLASS_NAME?w1.createFromDOMInfo(e,i.offsetNode.parentNode,i.offset):new Rg(i.offsetNode.parentNode)}if(i.offsetNode.nodeType===i.offsetNode.ELEMENT_NODE){const s=i.offsetNode.parentNode,r=s&&s.nodeType===s.ELEMENT_NODE?s.className:null,o=s?s.parentNode:null,a=o&&o.nodeType===o.ELEMENT_NODE?o.className:null;if(r===vh.CLASS_NAME){const l=i.offsetNode.childNodes[Math.min(i.offset,i.offsetNode.childNodes.length-1)];if(l)return w1.createFromDOMInfo(e,l,0)}else if(a===vh.CLASS_NAME)return w1.createFromDOMInfo(e,i.offsetNode,0)}return new Rg(i.offsetNode)}static _snapToSoftTabBoundary(e,t){const i=t.getLineContent(e.lineNumber),{tabSize:s}=t.model.getOptions(),r=bL.atomicPosition(i,e.column-1,s,2);return r!==-1?new he(e.lineNumber,r+1):e}static _doHitTest(e,t){let i=new Rg;if(typeof e.viewDomNode.ownerDocument.caretRangeFromPoint=="function"?i=this._doHitTestWithCaretRangeFromPoint(e,t):e.viewDomNode.ownerDocument.caretPositionFromPoint&&(i=this._doHitTestWithCaretPositionFromPoint(e,t.pos.toClientCoordinates(pt(e.viewDomNode)))),i.type===1){const s=e.viewModel.getInjectedTextAt(i.position),r=e.viewModel.normalizePosition(i.position,2);(s||!r.equals(i.position))&&(i=new Tpe(r,i.spanNode,s))}return i}}function I$e(n,e,t){const i=document.createRange();let s=n.elementFromPoint(e,t);if(s!==null){for(;s&&s.firstChild&&s.firstChild.nodeType!==s.firstChild.TEXT_NODE&&s.lastChild&&s.lastChild.firstChild;)s=s.lastChild;const r=s.getBoundingClientRect(),o=pt(s),a=o.getComputedStyle(s,null).getPropertyValue("font-style"),l=o.getComputedStyle(s,null).getPropertyValue("font-variant"),c=o.getComputedStyle(s,null).getPropertyValue("font-weight"),u=o.getComputedStyle(s,null).getPropertyValue("font-size"),h=o.getComputedStyle(s,null).getPropertyValue("line-height"),d=o.getComputedStyle(s,null).getPropertyValue("font-family"),f=`${a} ${l} ${c} ${u}/${h} ${d}`,g=s.innerText;let p=r.left,m=0,_;if(e>r.left+r.width)m=g.length;else{const b=V1.getInstance();for(let y=0;y<g.length+1;y++){if(_=b.getCharWidth(g.charAt(y),f)/2,p+=_,e<p){m=y;break}p+=_}}i.setStart(s.firstChild,m),i.setEnd(s.firstChild,m)}return i}class V1{static getInstance(){return V1._INSTANCE||(V1._INSTANCE=new V1),V1._INSTANCE}constructor(){this._cache={},this._canvas=document.createElement("canvas")}getCharWidth(e,t){const i=e+t;if(this._cache[i])return this._cache[i];const s=this._canvas.getContext("2d");s.font=t;const o=s.measureText(e).width;return this._cache[i]=o,o}}V1._INSTANCE=null;let Tc=class extends pe{onclick(e,t){this._register(Ce(e,We.CLICK,i=>t(new ac(pt(e),i))))}onmousedown(e,t){this._register(Ce(e,We.MOUSE_DOWN,i=>t(new ac(pt(e),i))))}onmouseover(e,t){this._register(Ce(e,We.MOUSE_OVER,i=>t(new ac(pt(e),i))))}onmouseleave(e,t){this._register(Ce(e,We.MOUSE_LEAVE,i=>t(new ac(pt(e),i))))}onkeydown(e,t){this._register(Ce(e,We.KEY_DOWN,i=>t(new Ki(i))))}onkeyup(e,t){this._register(Ce(e,We.KEY_UP,i=>t(new Ki(i))))}oninput(e,t){this._register(Ce(e,We.INPUT,t))}onblur(e,t){this._register(Ce(e,We.BLUR,t))}onfocus(e,t){this._register(Ce(e,We.FOCUS,t))}ignoreGesture(e){return Ri.ignoreTarget(e)}};const wy=11;class T$e extends Tc{constructor(e){super(),this._onActivate=e.onActivate,this.bgDomNode=document.createElement("div"),this.bgDomNode.className="arrow-background",this.bgDomNode.style.position="absolute",this.bgDomNode.style.width=e.bgWidth+"px",this.bgDomNode.style.height=e.bgHeight+"px",typeof e.top<"u"&&(this.bgDomNode.style.top="0px"),typeof e.left<"u"&&(this.bgDomNode.style.left="0px"),typeof e.bottom<"u"&&(this.bgDomNode.style.bottom="0px"),typeof e.right<"u"&&(this.bgDomNode.style.right="0px"),this.domNode=document.createElement("div"),this.domNode.className=e.className,this.domNode.classList.add(...nt.asClassNameArray(e.icon)),this.domNode.style.position="absolute",this.domNode.style.width=wy+"px",this.domNode.style.height=wy+"px",typeof e.top<"u"&&(this.domNode.style.top=e.top+"px"),typeof e.left<"u"&&(this.domNode.style.left=e.left+"px"),typeof e.bottom<"u"&&(this.domNode.style.bottom=e.bottom+"px"),typeof e.right<"u"&&(this.domNode.style.right=e.right+"px"),this._pointerMoveMonitor=this._register(new AC),this._register(Mn(this.bgDomNode,We.POINTER_DOWN,t=>this._arrowPointerDown(t))),this._register(Mn(this.domNode,We.POINTER_DOWN,t=>this._arrowPointerDown(t))),this._pointerdownRepeatTimer=this._register(new Gj),this._pointerdownScheduleRepeatTimer=this._register(new Ic)}_arrowPointerDown(e){if(!e.target||!(e.target instanceof Element))return;const t=()=>{this._pointerdownRepeatTimer.cancelAndSet(()=>this._onActivate(),1e3/24,pt(e))};this._onActivate(),this._pointerdownRepeatTimer.cancel(),this._pointerdownScheduleRepeatTimer.cancelAndSet(t,200),this._pointerMoveMonitor.startMonitoring(e.target,e.pointerId,e.buttons,i=>{},()=>{this._pointerdownRepeatTimer.cancel(),this._pointerdownScheduleRepeatTimer.cancel()}),e.preventDefault()}}class N$e extends pe{constructor(e,t,i){super(),this._visibility=e,this._visibleClassName=t,this._invisibleClassName=i,this._domNode=null,this._isVisible=!1,this._isNeeded=!1,this._rawShouldBeVisible=!1,this._shouldBeVisible=!1,this._revealTimer=this._register(new Ic)}setVisibility(e){this._visibility!==e&&(this._visibility=e,this._updateShouldBeVisible())}setShouldBeVisible(e){this._rawShouldBeVisible=e,this._updateShouldBeVisible()}_applyVisibilitySetting(){return this._visibility===2?!1:this._visibility===3?!0:this._rawShouldBeVisible}_updateShouldBeVisible(){const e=this._applyVisibilitySetting();this._shouldBeVisible!==e&&(this._shouldBeVisible=e,this.ensureVisibility())}setIsNeeded(e){this._isNeeded!==e&&(this._isNeeded=e,this.ensureVisibility())}setDomNode(e){this._domNode=e,this._domNode.setClassName(this._invisibleClassName),this.setShouldBeVisible(!1)}ensureVisibility(){if(!this._isNeeded){this._hide(!1);return}this._shouldBeVisible?this._reveal():this._hide(!0)}_reveal(){this._isVisible||(this._isVisible=!0,this._revealTimer.setIfNotSet(()=>{var e;(e=this._domNode)===null||e===void 0||e.setClassName(this._visibleClassName)},0))}_hide(e){var t;this._revealTimer.cancel(),this._isVisible&&(this._isVisible=!1,(t=this._domNode)===null||t===void 0||t.setClassName(this._invisibleClassName+(e?" fade":"")))}}const A$e=140;class Npe extends Tc{constructor(e){super(),this._lazyRender=e.lazyRender,this._host=e.host,this._scrollable=e.scrollable,this._scrollByPage=e.scrollByPage,this._scrollbarState=e.scrollbarState,this._visibilityController=this._register(new N$e(e.visibility,"visible scrollbar "+e.extraScrollbarClassName,"invisible scrollbar "+e.extraScrollbarClassName)),this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded()),this._pointerMoveMonitor=this._register(new AC),this._shouldRender=!0,this.domNode=fi(document.createElement("div")),this.domNode.setAttribute("role","presentation"),this.domNode.setAttribute("aria-hidden","true"),this._visibilityController.setDomNode(this.domNode),this.domNode.setPosition("absolute"),this._register(Ce(this.domNode.domNode,We.POINTER_DOWN,t=>this._domNodePointerDown(t)))}_createArrow(e){const t=this._register(new T$e(e));this.domNode.domNode.appendChild(t.bgDomNode),this.domNode.domNode.appendChild(t.domNode)}_createSlider(e,t,i,s){this.slider=fi(document.createElement("div")),this.slider.setClassName("slider"),this.slider.setPosition("absolute"),this.slider.setTop(e),this.slider.setLeft(t),typeof i=="number"&&this.slider.setWidth(i),typeof s=="number"&&this.slider.setHeight(s),this.slider.setLayerHinting(!0),this.slider.setContain("strict"),this.domNode.domNode.appendChild(this.slider.domNode),this._register(Ce(this.slider.domNode,We.POINTER_DOWN,r=>{r.button===0&&(r.preventDefault(),this._sliderPointerDown(r))})),this.onclick(this.slider.domNode,r=>{r.leftButton&&r.stopPropagation()})}_onElementSize(e){return this._scrollbarState.setVisibleSize(e)&&(this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded()),this._shouldRender=!0,this._lazyRender||this.render()),this._shouldRender}_onElementScrollSize(e){return this._scrollbarState.setScrollSize(e)&&(this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded()),this._shouldRender=!0,this._lazyRender||this.render()),this._shouldRender}_onElementScrollPosition(e){return this._scrollbarState.setScrollPosition(e)&&(this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded()),this._shouldRender=!0,this._lazyRender||this.render()),this._shouldRender}beginReveal(){this._visibilityController.setShouldBeVisible(!0)}beginHide(){this._visibilityController.setShouldBeVisible(!1)}render(){this._shouldRender&&(this._shouldRender=!1,this._renderDomNode(this._scrollbarState.getRectangleLargeSize(),this._scrollbarState.getRectangleSmallSize()),this._updateSlider(this._scrollbarState.getSliderSize(),this._scrollbarState.getArrowSize()+this._scrollbarState.getSliderPosition()))}_domNodePointerDown(e){e.target===this.domNode.domNode&&this._onPointerDown(e)}delegatePointerDown(e){const t=this.domNode.domNode.getClientRects()[0].top,i=t+this._scrollbarState.getSliderPosition(),s=t+this._scrollbarState.getSliderPosition()+this._scrollbarState.getSliderSize(),r=this._sliderPointerPosition(e);i<=r&&r<=s?e.button===0&&(e.preventDefault(),this._sliderPointerDown(e)):this._onPointerDown(e)}_onPointerDown(e){let t,i;if(e.target===this.domNode.domNode&&typeof e.offsetX=="number"&&typeof e.offsetY=="number")t=e.offsetX,i=e.offsetY;else{const r=ys(this.domNode.domNode);t=e.pageX-r.left,i=e.pageY-r.top}const s=this._pointerDownRelativePosition(t,i);this._setDesiredScrollPositionNow(this._scrollByPage?this._scrollbarState.getDesiredScrollPositionFromOffsetPaged(s):this._scrollbarState.getDesiredScrollPositionFromOffset(s)),e.button===0&&(e.preventDefault(),this._sliderPointerDown(e))}_sliderPointerDown(e){if(!e.target||!(e.target instanceof Element))return;const t=this._sliderPointerPosition(e),i=this._sliderOrthogonalPointerPosition(e),s=this._scrollbarState.clone();this.slider.toggleClassName("active",!0),this._pointerMoveMonitor.startMonitoring(e.target,e.pointerId,e.buttons,r=>{const o=this._sliderOrthogonalPointerPosition(r),a=Math.abs(o-i);if(yr&&a>A$e){this._setDesiredScrollPositionNow(s.getScrollPosition());return}const c=this._sliderPointerPosition(r)-t;this._setDesiredScrollPositionNow(s.getDesiredScrollPositionFromDelta(c))},()=>{this.slider.toggleClassName("active",!1),this._host.onDragEnd()}),this._host.onDragStart()}_setDesiredScrollPositionNow(e){const t={};this.writeScrollPosition(t,e),this._scrollable.setScrollPositionNow(t)}updateScrollbarSize(e){this._updateScrollbarSize(e),this._scrollbarState.setScrollbarSize(e),this._shouldRender=!0,this._lazyRender||this.render()}isNeeded(){return this._scrollbarState.isNeeded()}}const P$e=20;class Sy{constructor(e,t,i,s,r,o){this._scrollbarSize=Math.round(t),this._oppositeScrollbarSize=Math.round(i),this._arrowSize=Math.round(e),this._visibleSize=s,this._scrollSize=r,this._scrollPosition=o,this._computedAvailableSize=0,this._computedIsNeeded=!1,this._computedSliderSize=0,this._computedSliderRatio=0,this._computedSliderPosition=0,this._refreshComputedValues()}clone(){return new Sy(this._arrowSize,this._scrollbarSize,this._oppositeScrollbarSize,this._visibleSize,this._scrollSize,this._scrollPosition)}setVisibleSize(e){const t=Math.round(e);return this._visibleSize!==t?(this._visibleSize=t,this._refreshComputedValues(),!0):!1}setScrollSize(e){const t=Math.round(e);return this._scrollSize!==t?(this._scrollSize=t,this._refreshComputedValues(),!0):!1}setScrollPosition(e){const t=Math.round(e);return this._scrollPosition!==t?(this._scrollPosition=t,this._refreshComputedValues(),!0):!1}setScrollbarSize(e){this._scrollbarSize=Math.round(e)}setOppositeScrollbarSize(e){this._oppositeScrollbarSize=Math.round(e)}static _computeValues(e,t,i,s,r){const o=Math.max(0,i-e),a=Math.max(0,o-2*t),l=s>0&&s>i;if(!l)return{computedAvailableSize:Math.round(o),computedIsNeeded:l,computedSliderSize:Math.round(a),computedSliderRatio:0,computedSliderPosition:0};const c=Math.round(Math.max(P$e,Math.floor(i*a/s))),u=(a-c)/(s-i),h=r*u;return{computedAvailableSize:Math.round(o),computedIsNeeded:l,computedSliderSize:Math.round(c),computedSliderRatio:u,computedSliderPosition:Math.round(h)}}_refreshComputedValues(){const e=Sy._computeValues(this._oppositeScrollbarSize,this._arrowSize,this._visibleSize,this._scrollSize,this._scrollPosition);this._computedAvailableSize=e.computedAvailableSize,this._computedIsNeeded=e.computedIsNeeded,this._computedSliderSize=e.computedSliderSize,this._computedSliderRatio=e.computedSliderRatio,this._computedSliderPosition=e.computedSliderPosition}getArrowSize(){return this._arrowSize}getScrollPosition(){return this._scrollPosition}getRectangleLargeSize(){return this._computedAvailableSize}getRectangleSmallSize(){return this._scrollbarSize}isNeeded(){return this._computedIsNeeded}getSliderSize(){return this._computedSliderSize}getSliderPosition(){return this._computedSliderPosition}getDesiredScrollPositionFromOffset(e){if(!this._computedIsNeeded)return 0;const t=e-this._arrowSize-this._computedSliderSize/2;return Math.round(t/this._computedSliderRatio)}getDesiredScrollPositionFromOffsetPaged(e){if(!this._computedIsNeeded)return 0;const t=e-this._arrowSize;let i=this._scrollPosition;return t<this._computedSliderPosition?i-=this._visibleSize:i+=this._visibleSize,i}getDesiredScrollPositionFromDelta(e){if(!this._computedIsNeeded)return 0;const t=this._computedSliderPosition+e;return Math.round(t/this._computedSliderRatio)}}class R$e extends Npe{constructor(e,t,i){const s=e.getScrollDimensions(),r=e.getCurrentScrollPosition();if(super({lazyRender:t.lazyRender,host:i,scrollbarState:new Sy(t.horizontalHasArrows?t.arrowSize:0,t.horizontal===2?0:t.horizontalScrollbarSize,t.vertical===2?0:t.verticalScrollbarSize,s.width,s.scrollWidth,r.scrollLeft),visibility:t.horizontal,extraScrollbarClassName:"horizontal",scrollable:e,scrollByPage:t.scrollByPage}),t.horizontalHasArrows){const o=(t.arrowSize-wy)/2,a=(t.horizontalScrollbarSize-wy)/2;this._createArrow({className:"scra",icon:Pe.scrollbarButtonLeft,top:a,left:o,bottom:void 0,right:void 0,bgWidth:t.arrowSize,bgHeight:t.horizontalScrollbarSize,onActivate:()=>this._host.onMouseWheel(new D_(null,1,0))}),this._createArrow({className:"scra",icon:Pe.scrollbarButtonRight,top:a,left:void 0,bottom:void 0,right:o,bgWidth:t.arrowSize,bgHeight:t.horizontalScrollbarSize,onActivate:()=>this._host.onMouseWheel(new D_(null,-1,0))})}this._createSlider(Math.floor((t.horizontalScrollbarSize-t.horizontalSliderSize)/2),0,void 0,t.horizontalSliderSize)}_updateSlider(e,t){this.slider.setWidth(e),this.slider.setLeft(t)}_renderDomNode(e,t){this.domNode.setWidth(e),this.domNode.setHeight(t),this.domNode.setLeft(0),this.domNode.setBottom(0)}onDidScroll(e){return this._shouldRender=this._onElementScrollSize(e.scrollWidth)||this._shouldRender,this._shouldRender=this._onElementScrollPosition(e.scrollLeft)||this._shouldRender,this._shouldRender=this._onElementSize(e.width)||this._shouldRender,this._shouldRender}_pointerDownRelativePosition(e,t){return e}_sliderPointerPosition(e){return e.pageX}_sliderOrthogonalPointerPosition(e){return e.pageY}_updateScrollbarSize(e){this.slider.setHeight(e)}writeScrollPosition(e,t){e.scrollLeft=t}updateOptions(e){this.updateScrollbarSize(e.horizontal===2?0:e.horizontalScrollbarSize),this._scrollbarState.setOppositeScrollbarSize(e.vertical===2?0:e.verticalScrollbarSize),this._visibilityController.setVisibility(e.horizontal),this._scrollByPage=e.scrollByPage}}class M$e extends Npe{constructor(e,t,i){const s=e.getScrollDimensions(),r=e.getCurrentScrollPosition();if(super({lazyRender:t.lazyRender,host:i,scrollbarState:new Sy(t.verticalHasArrows?t.arrowSize:0,t.vertical===2?0:t.verticalScrollbarSize,0,s.height,s.scrollHeight,r.scrollTop),visibility:t.vertical,extraScrollbarClassName:"vertical",scrollable:e,scrollByPage:t.scrollByPage}),t.verticalHasArrows){const o=(t.arrowSize-wy)/2,a=(t.verticalScrollbarSize-wy)/2;this._createArrow({className:"scra",icon:Pe.scrollbarButtonUp,top:o,left:a,bottom:void 0,right:void 0,bgWidth:t.verticalScrollbarSize,bgHeight:t.arrowSize,onActivate:()=>this._host.onMouseWheel(new D_(null,0,1))}),this._createArrow({className:"scra",icon:Pe.scrollbarButtonDown,top:void 0,left:a,bottom:o,right:void 0,bgWidth:t.verticalScrollbarSize,bgHeight:t.arrowSize,onActivate:()=>this._host.onMouseWheel(new D_(null,0,-1))})}this._createSlider(0,Math.floor((t.verticalScrollbarSize-t.verticalSliderSize)/2),t.verticalSliderSize,void 0)}_updateSlider(e,t){this.slider.setHeight(e),this.slider.setTop(t)}_renderDomNode(e,t){this.domNode.setWidth(t),this.domNode.setHeight(e),this.domNode.setRight(0),this.domNode.setTop(0)}onDidScroll(e){return this._shouldRender=this._onElementScrollSize(e.scrollHeight)||this._shouldRender,this._shouldRender=this._onElementScrollPosition(e.scrollTop)||this._shouldRender,this._shouldRender=this._onElementSize(e.height)||this._shouldRender,this._shouldRender}_pointerDownRelativePosition(e,t){return t}_sliderPointerPosition(e){return e.pageY}_sliderOrthogonalPointerPosition(e){return e.pageX}_updateScrollbarSize(e){this.slider.setWidth(e)}writeScrollPosition(e,t){e.scrollTop=t}updateOptions(e){this.updateScrollbarSize(e.vertical===2?0:e.verticalScrollbarSize),this._scrollbarState.setOppositeScrollbarSize(0),this._visibilityController.setVisibility(e.vertical),this._scrollByPage=e.scrollByPage}}class XA{constructor(e,t,i,s,r,o,a){this._forceIntegerValues=e,this._scrollStateBrand=void 0,this._forceIntegerValues&&(t=t|0,i=i|0,s=s|0,r=r|0,o=o|0,a=a|0),this.rawScrollLeft=s,this.rawScrollTop=a,t<0&&(t=0),s+t>i&&(s=i-t),s<0&&(s=0),r<0&&(r=0),a+r>o&&(a=o-r),a<0&&(a=0),this.width=t,this.scrollWidth=i,this.scrollLeft=s,this.height=r,this.scrollHeight=o,this.scrollTop=a}equals(e){return this.rawScrollLeft===e.rawScrollLeft&&this.rawScrollTop===e.rawScrollTop&&this.width===e.width&&this.scrollWidth===e.scrollWidth&&this.scrollLeft===e.scrollLeft&&this.height===e.height&&this.scrollHeight===e.scrollHeight&&this.scrollTop===e.scrollTop}withScrollDimensions(e,t){return new XA(this._forceIntegerValues,typeof e.width<"u"?e.width:this.width,typeof e.scrollWidth<"u"?e.scrollWidth:this.scrollWidth,t?this.rawScrollLeft:this.scrollLeft,typeof e.height<"u"?e.height:this.height,typeof e.scrollHeight<"u"?e.scrollHeight:this.scrollHeight,t?this.rawScrollTop:this.scrollTop)}withScrollPosition(e){return new XA(this._forceIntegerValues,this.width,this.scrollWidth,typeof e.scrollLeft<"u"?e.scrollLeft:this.rawScrollLeft,this.height,this.scrollHeight,typeof e.scrollTop<"u"?e.scrollTop:this.rawScrollTop)}createScrollEvent(e,t){const i=this.width!==e.width,s=this.scrollWidth!==e.scrollWidth,r=this.scrollLeft!==e.scrollLeft,o=this.height!==e.height,a=this.scrollHeight!==e.scrollHeight,l=this.scrollTop!==e.scrollTop;return{inSmoothScrolling:t,oldWidth:e.width,oldScrollWidth:e.scrollWidth,oldScrollLeft:e.scrollLeft,width:this.width,scrollWidth:this.scrollWidth,scrollLeft:this.scrollLeft,oldHeight:e.height,oldScrollHeight:e.scrollHeight,oldScrollTop:e.scrollTop,height:this.height,scrollHeight:this.scrollHeight,scrollTop:this.scrollTop,widthChanged:i,scrollWidthChanged:s,scrollLeftChanged:r,heightChanged:o,scrollHeightChanged:a,scrollTopChanged:l}}}class PC extends pe{constructor(e){super(),this._scrollableBrand=void 0,this._onScroll=this._register(new ue),this.onScroll=this._onScroll.event,this._smoothScrollDuration=e.smoothScrollDuration,this._scheduleAtNextAnimationFrame=e.scheduleAtNextAnimationFrame,this._state=new XA(e.forceIntegerValues,0,0,0,0,0,0),this._smoothScrolling=null}dispose(){this._smoothScrolling&&(this._smoothScrolling.dispose(),this._smoothScrolling=null),super.dispose()}setSmoothScrollDuration(e){this._smoothScrollDuration=e}validateScrollPosition(e){return this._state.withScrollPosition(e)}getScrollDimensions(){return this._state}setScrollDimensions(e,t){var i;const s=this._state.withScrollDimensions(e,t);this._setState(s,!!this._smoothScrolling),(i=this._smoothScrolling)===null||i===void 0||i.acceptScrollDimensions(this._state)}getFutureScrollPosition(){return this._smoothScrolling?this._smoothScrolling.to:this._state}getCurrentScrollPosition(){return this._state}setScrollPositionNow(e){const t=this._state.withScrollPosition(e);this._smoothScrolling&&(this._smoothScrolling.dispose(),this._smoothScrolling=null),this._setState(t,!1)}setScrollPositionSmooth(e,t){if(this._smoothScrollDuration===0)return this.setScrollPositionNow(e);if(this._smoothScrolling){e={scrollLeft:typeof e.scrollLeft>"u"?this._smoothScrolling.to.scrollLeft:e.scrollLeft,scrollTop:typeof e.scrollTop>"u"?this._smoothScrolling.to.scrollTop:e.scrollTop};const i=this._state.withScrollPosition(e);if(this._smoothScrolling.to.scrollLeft===i.scrollLeft&&this._smoothScrolling.to.scrollTop===i.scrollTop)return;let s;t?s=new EL(this._smoothScrolling.from,i,this._smoothScrolling.startTime,this._smoothScrolling.duration):s=this._smoothScrolling.combine(this._state,i,this._smoothScrollDuration),this._smoothScrolling.dispose(),this._smoothScrolling=s}else{const i=this._state.withScrollPosition(e);this._smoothScrolling=EL.start(this._state,i,this._smoothScrollDuration)}this._smoothScrolling.animationFrameDisposable=this._scheduleAtNextAnimationFrame(()=>{this._smoothScrolling&&(this._smoothScrolling.animationFrameDisposable=null,this._performSmoothScrolling())})}hasPendingScrollAnimation(){return!!this._smoothScrolling}_performSmoothScrolling(){if(!this._smoothScrolling)return;const e=this._smoothScrolling.tick(),t=this._state.withScrollPosition(e);if(this._setState(t,!0),!!this._smoothScrolling){if(e.isDone){this._smoothScrolling.dispose(),this._smoothScrolling=null;return}this._smoothScrolling.animationFrameDisposable=this._scheduleAtNextAnimationFrame(()=>{this._smoothScrolling&&(this._smoothScrolling.animationFrameDisposable=null,this._performSmoothScrolling())})}}_setState(e,t){const i=this._state;i.equals(e)||(this._state=e,this._onScroll.fire(this._state.createScrollEvent(i,t)))}}class pee{constructor(e,t,i){this.scrollLeft=e,this.scrollTop=t,this.isDone=i}}function W5(n,e){const t=e-n;return function(i){return n+t*B$e(i)}}function O$e(n,e,t){return function(i){return i<t?n(i/t):e((i-t)/(1-t))}}class EL{constructor(e,t,i,s){this.from=e,this.to=t,this.duration=s,this.startTime=i,this.animationFrameDisposable=null,this._initAnimations()}_initAnimations(){this.scrollLeft=this._initAnimation(this.from.scrollLeft,this.to.scrollLeft,this.to.width),this.scrollTop=this._initAnimation(this.from.scrollTop,this.to.scrollTop,this.to.height)}_initAnimation(e,t,i){if(Math.abs(e-t)>2.5*i){let r,o;return e<t?(r=e+.75*i,o=t-.75*i):(r=e-.75*i,o=t+.75*i),O$e(W5(e,r),W5(o,t),.33)}return W5(e,t)}dispose(){this.animationFrameDisposable!==null&&(this.animationFrameDisposable.dispose(),this.animationFrameDisposable=null)}acceptScrollDimensions(e){this.to=e.withScrollPosition(this.to),this._initAnimations()}tick(){return this._tick(Date.now())}_tick(e){const t=(e-this.startTime)/this.duration;if(t<1){const i=this.scrollLeft(t),s=this.scrollTop(t);return new pee(i,s,!1)}return new pee(this.to.scrollLeft,this.to.scrollTop,!0)}combine(e,t,i){return EL.start(e,t,i)}static start(e,t,i){i=i+10;const s=Date.now()-10;return new EL(e,t,s,i)}}function F$e(n){return Math.pow(n,3)}function B$e(n){return 1-F$e(1-n)}const W$e=500,mee=50;class V$e{constructor(e,t,i){this.timestamp=e,this.deltaX=t,this.deltaY=i,this.score=0}}class QA{constructor(){this._capacity=5,this._memory=[],this._front=-1,this._rear=-1}isPhysicalMouseWheel(){if(this._front===-1&&this._rear===-1)return!1;let e=1,t=0,i=1,s=this._rear;do{const r=s===this._front?e:Math.pow(2,-i);if(e-=r,t+=this._memory[s].score*r,s===this._front)break;s=(this._capacity+s-1)%this._capacity,i++}while(!0);return t<=.5}acceptStandardWheelEvent(e){const t=pt(e.browserEvent).devicePixelRatio/yBe();yr||Kr?this.accept(Date.now(),e.deltaX/t,e.deltaY/t):this.accept(Date.now(),e.deltaX,e.deltaY)}accept(e,t,i){const s=new V$e(e,t,i);s.score=this._computeScore(s),this._front===-1&&this._rear===-1?(this._memory[0]=s,this._front=0,this._rear=0):(this._rear=(this._rear+1)%this._capacity,this._rear===this._front&&(this._front=(this._front+1)%this._capacity),this._memory[this._rear]=s)}_computeScore(e){if(Math.abs(e.deltaX)>0&&Math.abs(e.deltaY)>0)return 1;let t=.5;return this._front===-1&&this._rear===-1||this._memory[this._rear],(!this._isAlmostInt(e.deltaX)||!this._isAlmostInt(e.deltaY))&&(t+=.25),Math.min(Math.max(t,0),1)}_isAlmostInt(e){return Math.abs(Math.round(e)-e)<.01}}QA.INSTANCE=new QA;class vq extends Tc{get options(){return this._options}constructor(e,t,i){super(),this._onScroll=this._register(new ue),this.onScroll=this._onScroll.event,this._onWillScroll=this._register(new ue),e.style.overflow="hidden",this._options=H$e(t),this._scrollable=i,this._register(this._scrollable.onScroll(r=>{this._onWillScroll.fire(r),this._onDidScroll(r),this._onScroll.fire(r)}));const s={onMouseWheel:r=>this._onMouseWheel(r),onDragStart:()=>this._onDragStart(),onDragEnd:()=>this._onDragEnd()};this._verticalScrollbar=this._register(new M$e(this._scrollable,this._options,s)),this._horizontalScrollbar=this._register(new R$e(this._scrollable,this._options,s)),this._domNode=document.createElement("div"),this._domNode.className="monaco-scrollable-element "+this._options.className,this._domNode.setAttribute("role","presentation"),this._domNode.style.position="relative",this._domNode.style.overflow="hidden",this._domNode.appendChild(e),this._domNode.appendChild(this._horizontalScrollbar.domNode.domNode),this._domNode.appendChild(this._verticalScrollbar.domNode.domNode),this._options.useShadows?(this._leftShadowDomNode=fi(document.createElement("div")),this._leftShadowDomNode.setClassName("shadow"),this._domNode.appendChild(this._leftShadowDomNode.domNode),this._topShadowDomNode=fi(document.createElement("div")),this._topShadowDomNode.setClassName("shadow"),this._domNode.appendChild(this._topShadowDomNode.domNode),this._topLeftShadowDomNode=fi(document.createElement("div")),this._topLeftShadowDomNode.setClassName("shadow"),this._domNode.appendChild(this._topLeftShadowDomNode.domNode)):(this._leftShadowDomNode=null,this._topShadowDomNode=null,this._topLeftShadowDomNode=null),this._listenOnDomNode=this._options.listenOnDomNode||this._domNode,this._mouseWheelToDispose=[],this._setListeningToMouseWheel(this._options.handleMouseWheel),this.onmouseover(this._listenOnDomNode,r=>this._onMouseOver(r)),this.onmouseleave(this._listenOnDomNode,r=>this._onMouseLeave(r)),this._hideTimeout=this._register(new Ic),this._isDragging=!1,this._mouseIsOver=!1,this._shouldRender=!0,this._revealOnScroll=!0}dispose(){this._mouseWheelToDispose=yi(this._mouseWheelToDispose),super.dispose()}getDomNode(){return this._domNode}getOverviewRulerLayoutInfo(){return{parent:this._domNode,insertBefore:this._verticalScrollbar.domNode.domNode}}delegateVerticalScrollbarPointerDown(e){this._verticalScrollbar.delegatePointerDown(e)}getScrollDimensions(){return this._scrollable.getScrollDimensions()}setScrollDimensions(e){this._scrollable.setScrollDimensions(e,!1)}updateClassName(e){this._options.className=e,Gt&&(this._options.className+=" mac"),this._domNode.className="monaco-scrollable-element "+this._options.className}updateOptions(e){typeof e.handleMouseWheel<"u"&&(this._options.handleMouseWheel=e.handleMouseWheel,this._setListeningToMouseWheel(this._options.handleMouseWheel)),typeof e.mouseWheelScrollSensitivity<"u"&&(this._options.mouseWheelScrollSensitivity=e.mouseWheelScrollSensitivity),typeof e.fastScrollSensitivity<"u"&&(this._options.fastScrollSensitivity=e.fastScrollSensitivity),typeof e.scrollPredominantAxis<"u"&&(this._options.scrollPredominantAxis=e.scrollPredominantAxis),typeof e.horizontal<"u"&&(this._options.horizontal=e.horizontal),typeof e.vertical<"u"&&(this._options.vertical=e.vertical),typeof e.horizontalScrollbarSize<"u"&&(this._options.horizontalScrollbarSize=e.horizontalScrollbarSize),typeof e.verticalScrollbarSize<"u"&&(this._options.verticalScrollbarSize=e.verticalScrollbarSize),typeof e.scrollByPage<"u"&&(this._options.scrollByPage=e.scrollByPage),this._horizontalScrollbar.updateOptions(this._options),this._verticalScrollbar.updateOptions(this._options),this._options.lazyRender||this._render()}delegateScrollFromMouseWheelEvent(e){this._onMouseWheel(new D_(e))}_setListeningToMouseWheel(e){if(this._mouseWheelToDispose.length>0!==e&&(this._mouseWheelToDispose=yi(this._mouseWheelToDispose),e)){const i=s=>{this._onMouseWheel(new D_(s))};this._mouseWheelToDispose.push(Ce(this._listenOnDomNode,We.MOUSE_WHEEL,i,{passive:!1}))}}_onMouseWheel(e){var t;if(!((t=e.browserEvent)===null||t===void 0)&&t.defaultPrevented)return;const i=QA.INSTANCE;i.acceptStandardWheelEvent(e);let s=!1;if(e.deltaY||e.deltaX){let o=e.deltaY*this._options.mouseWheelScrollSensitivity,a=e.deltaX*this._options.mouseWheelScrollSensitivity;this._options.scrollPredominantAxis&&(this._options.scrollYToX&&a+o===0?a=o=0:Math.abs(o)>=Math.abs(a)?a=0:o=0),this._options.flipAxes&&([o,a]=[a,o]);const l=!Gt&&e.browserEvent&&e.browserEvent.shiftKey;(this._options.scrollYToX||l)&&!a&&(a=o,o=0),e.browserEvent&&e.browserEvent.altKey&&(a=a*this._options.fastScrollSensitivity,o=o*this._options.fastScrollSensitivity);const c=this._scrollable.getFutureScrollPosition();let u={};if(o){const h=mee*o,d=c.scrollTop-(h<0?Math.floor(h):Math.ceil(h));this._verticalScrollbar.writeScrollPosition(u,d)}if(a){const h=mee*a,d=c.scrollLeft-(h<0?Math.floor(h):Math.ceil(h));this._horizontalScrollbar.writeScrollPosition(u,d)}u=this._scrollable.validateScrollPosition(u),(c.scrollLeft!==u.scrollLeft||c.scrollTop!==u.scrollTop)&&(this._options.mouseWheelSmoothScroll&&i.isPhysicalMouseWheel()?this._scrollable.setScrollPositionSmooth(u):this._scrollable.setScrollPositionNow(u),s=!0)}let r=s;!r&&this._options.alwaysConsumeMouseWheel&&(r=!0),!r&&this._options.consumeMouseWheelIfScrollbarIsNeeded&&(this._verticalScrollbar.isNeeded()||this._horizontalScrollbar.isNeeded())&&(r=!0),r&&(e.preventDefault(),e.stopPropagation())}_onDidScroll(e){this._shouldRender=this._horizontalScrollbar.onDidScroll(e)||this._shouldRender,this._shouldRender=this._verticalScrollbar.onDidScroll(e)||this._shouldRender,this._options.useShadows&&(this._shouldRender=!0),this._revealOnScroll&&this._reveal(),this._options.lazyRender||this._render()}renderNow(){if(!this._options.lazyRender)throw new Error("Please use `lazyRender` together with `renderNow`!");this._render()}_render(){if(this._shouldRender&&(this._shouldRender=!1,this._horizontalScrollbar.render(),this._verticalScrollbar.render(),this._options.useShadows)){const e=this._scrollable.getCurrentScrollPosition(),t=e.scrollTop>0,i=e.scrollLeft>0,s=i?" left":"",r=t?" top":"",o=i||t?" top-left-corner":"";this._leftShadowDomNode.setClassName(`shadow${s}`),this._topShadowDomNode.setClassName(`shadow${r}`),this._topLeftShadowDomNode.setClassName(`shadow${o}${r}${s}`)}}_onDragStart(){this._isDragging=!0,this._reveal()}_onDragEnd(){this._isDragging=!1,this._hide()}_onMouseLeave(e){this._mouseIsOver=!1,this._hide()}_onMouseOver(e){this._mouseIsOver=!0,this._reveal()}_reveal(){this._verticalScrollbar.beginReveal(),this._horizontalScrollbar.beginReveal(),this._scheduleHide()}_hide(){!this._mouseIsOver&&!this._isDragging&&(this._verticalScrollbar.beginHide(),this._horizontalScrollbar.beginHide())}_scheduleHide(){!this._mouseIsOver&&!this._isDragging&&this._hideTimeout.cancelAndSet(()=>this._hide(),W$e)}}class Ape extends vq{constructor(e,t){t=t||{},t.mouseWheelSmoothScroll=!1;const i=new PC({forceIntegerValues:!0,smoothScrollDuration:0,scheduleAtNextAnimationFrame:s=>ua(pt(e),s)});super(e,t,i),this._register(i)}setScrollPosition(e){this._scrollable.setScrollPositionNow(e)}}class HO extends vq{constructor(e,t,i){super(e,t,i)}setScrollPosition(e){e.reuseAnimation?this._scrollable.setScrollPositionSmooth(e,e.reuseAnimation):this._scrollable.setScrollPositionNow(e)}getScrollPosition(){return this._scrollable.getCurrentScrollPosition()}}class CE extends vq{constructor(e,t){t=t||{},t.mouseWheelSmoothScroll=!1;const i=new PC({forceIntegerValues:!1,smoothScrollDuration:0,scheduleAtNextAnimationFrame:s=>ua(pt(e),s)});super(e,t,i),this._register(i),this._element=e,this._register(this.onScroll(s=>{s.scrollTopChanged&&(this._element.scrollTop=s.scrollTop),s.scrollLeftChanged&&(this._element.scrollLeft=s.scrollLeft)})),this.scanDomNode()}setScrollPosition(e){this._scrollable.setScrollPositionNow(e)}getScrollPosition(){return this._scrollable.getCurrentScrollPosition()}scanDomNode(){this.setScrollDimensions({width:this._element.clientWidth,scrollWidth:this._element.scrollWidth,height:this._element.clientHeight,scrollHeight:this._element.scrollHeight}),this.setScrollPosition({scrollLeft:this._element.scrollLeft,scrollTop:this._element.scrollTop})}}function H$e(n){const e={lazyRender:typeof n.lazyRender<"u"?n.lazyRender:!1,className:typeof n.className<"u"?n.className:"",useShadows:typeof n.useShadows<"u"?n.useShadows:!0,handleMouseWheel:typeof n.handleMouseWheel<"u"?n.handleMouseWheel:!0,flipAxes:typeof n.flipAxes<"u"?n.flipAxes:!1,consumeMouseWheelIfScrollbarIsNeeded:typeof n.consumeMouseWheelIfScrollbarIsNeeded<"u"?n.consumeMouseWheelIfScrollbarIsNeeded:!1,alwaysConsumeMouseWheel:typeof n.alwaysConsumeMouseWheel<"u"?n.alwaysConsumeMouseWheel:!1,scrollYToX:typeof n.scrollYToX<"u"?n.scrollYToX:!1,mouseWheelScrollSensitivity:typeof n.mouseWheelScrollSensitivity<"u"?n.mouseWheelScrollSensitivity:1,fastScrollSensitivity:typeof n.fastScrollSensitivity<"u"?n.fastScrollSensitivity:5,scrollPredominantAxis:typeof n.scrollPredominantAxis<"u"?n.scrollPredominantAxis:!0,mouseWheelSmoothScroll:typeof n.mouseWheelSmoothScroll<"u"?n.mouseWheelSmoothScroll:!0,arrowSize:typeof n.arrowSize<"u"?n.arrowSize:11,listenOnDomNode:typeof n.listenOnDomNode<"u"?n.listenOnDomNode:null,horizontal:typeof n.horizontal<"u"?n.horizontal:1,horizontalScrollbarSize:typeof n.horizontalScrollbarSize<"u"?n.horizontalScrollbarSize:10,horizontalSliderSize:typeof n.horizontalSliderSize<"u"?n.horizontalSliderSize:0,horizontalHasArrows:typeof n.horizontalHasArrows<"u"?n.horizontalHasArrows:!1,vertical:typeof n.vertical<"u"?n.vertical:1,verticalScrollbarSize:typeof n.verticalScrollbarSize<"u"?n.verticalScrollbarSize:10,verticalHasArrows:typeof n.verticalHasArrows<"u"?n.verticalHasArrows:!1,verticalSliderSize:typeof n.verticalSliderSize<"u"?n.verticalSliderSize:0,scrollByPage:typeof n.scrollByPage<"u"?n.scrollByPage:!1};return e.horizontalSliderSize=typeof n.horizontalSliderSize<"u"?n.horizontalSliderSize:e.horizontalScrollbarSize,e.verticalSliderSize=typeof n.verticalSliderSize<"u"?n.verticalSliderSize:e.verticalScrollbarSize,Gt&&(e.className+=" mac"),e}class bq extends bE{constructor(e,t,i){super(),this._mouseLeaveMonitor=null,this._context=e,this.viewController=t,this.viewHelper=i,this.mouseTargetFactory=new lr(this._context,i),this._mouseDownOperation=this._register(new $$e(this._context,this.viewController,this.viewHelper,this.mouseTargetFactory,(o,a)=>this._createMouseTarget(o,a),o=>this._getMouseColumn(o))),this.lastMouseLeaveTime=-1,this._height=this._context.configuration.options.get(143).height;const s=new i$e(this.viewHelper.viewDomNode);this._register(s.onContextMenu(this.viewHelper.viewDomNode,o=>this._onContextMenu(o,!0))),this._register(s.onMouseMove(this.viewHelper.viewDomNode,o=>{this._onMouseMove(o),this._mouseLeaveMonitor||(this._mouseLeaveMonitor=Ce(this.viewHelper.viewDomNode.ownerDocument,"mousemove",a=>{this.viewHelper.viewDomNode.contains(a.target)||this._onMouseLeave(new tm(a,!1,this.viewHelper.viewDomNode))}))})),this._register(s.onMouseUp(this.viewHelper.viewDomNode,o=>this._onMouseUp(o))),this._register(s.onMouseLeave(this.viewHelper.viewDomNode,o=>this._onMouseLeave(o)));let r=0;this._register(s.onPointerDown(this.viewHelper.viewDomNode,(o,a)=>{r=a})),this._register(Ce(this.viewHelper.viewDomNode,We.POINTER_UP,o=>{this._mouseDownOperation.onPointerUp()})),this._register(s.onMouseDown(this.viewHelper.viewDomNode,o=>this._onMouseDown(o,r))),this._setupMouseWheelZoomListener(),this._context.addEventHandler(this)}_setupMouseWheelZoomListener(){const e=QA.INSTANCE;let t=0,i=_l.getZoomLevel(),s=!1,r=0;const o=l=>{if(this.viewController.emitMouseWheel(l),!this._context.configuration.options.get(75))return;const c=new D_(l);if(e.acceptStandardWheelEvent(c),e.isPhysicalMouseWheel()){if(a(l)){const u=_l.getZoomLevel(),h=c.deltaY>0?1:-1;_l.setZoomLevel(u+h),c.preventDefault(),c.stopPropagation()}}else Date.now()-t>50&&(i=_l.getZoomLevel(),s=a(l),r=0),t=Date.now(),r+=c.deltaY,s&&(_l.setZoomLevel(i+r/5),c.preventDefault(),c.stopPropagation())};this._register(Ce(this.viewHelper.viewDomNode,We.MOUSE_WHEEL,o,{capture:!0,passive:!1}));function a(l){return Gt?(l.metaKey||l.ctrlKey)&&!l.shiftKey&&!l.altKey:l.ctrlKey&&!l.metaKey&&!l.shiftKey&&!l.altKey}}dispose(){this._context.removeEventHandler(this),this._mouseLeaveMonitor&&(this._mouseLeaveMonitor.dispose(),this._mouseLeaveMonitor=null),super.dispose()}onConfigurationChanged(e){if(e.hasChanged(143)){const t=this._context.configuration.options.get(143).height;this._height!==t&&(this._height=t,this._mouseDownOperation.onHeightChanged())}return!1}onCursorStateChanged(e){return this._mouseDownOperation.onCursorStateChanged(e),!1}onFocusChanged(e){return!1}getTargetAtClientPoint(e,t){const s=new kpe(e,t).toPageCoordinates(pt(this.viewHelper.viewDomNode)),r=gq(this.viewHelper.viewDomNode);if(s.y<r.y||s.y>r.y+r.height||s.x<r.x||s.x>r.x+r.width)return null;const o=pq(this.viewHelper.viewDomNode,r,s);return this.mouseTargetFactory.createMouseTarget(this.viewHelper.getLastRenderData(),r,s,o,null)}_createMouseTarget(e,t){let i=e.target;if(!this.viewHelper.viewDomNode.contains(i)){const s=P_(this.viewHelper.viewDomNode);s&&(i=s.elementsFromPoint(e.posx,e.posy).find(r=>this.viewHelper.viewDomNode.contains(r)))}return this.mouseTargetFactory.createMouseTarget(this.viewHelper.getLastRenderData(),e.editorPos,e.pos,e.relativePos,t?i:null)}_getMouseColumn(e){return this.mouseTargetFactory.getMouseColumn(e.relativePos)}_onContextMenu(e,t){this.viewController.emitContextMenu({event:e,target:this._createMouseTarget(e,t)})}_onMouseMove(e){this.mouseTargetFactory.mouseTargetIsWidget(e)||e.preventDefault(),!(this._mouseDownOperation.isActive()||e.timestamp<this.lastMouseLeaveTime)&&this.viewController.emitMouseMove({event:e,target:this._createMouseTarget(e,!0)})}_onMouseLeave(e){this._mouseLeaveMonitor&&(this._mouseLeaveMonitor.dispose(),this._mouseLeaveMonitor=null),this.lastMouseLeaveTime=new Date().getTime(),this.viewController.emitMouseLeave({event:e,target:null})}_onMouseUp(e){this.viewController.emitMouseUp({event:e,target:this._createMouseTarget(e,!0)})}_onMouseDown(e,t){const i=this._createMouseTarget(e,!0),s=i.type===6||i.type===7,r=i.type===2||i.type===3||i.type===4,o=i.type===3,a=this._context.configuration.options.get(108),l=i.type===8||i.type===5,c=i.type===9;let u=e.leftButton||e.middleButton;Gt&&e.leftButton&&e.ctrlKey&&(u=!1);const h=()=>{e.preventDefault(),this.viewHelper.focusTextArea()};if(u&&(s||o&&a))h(),this._mouseDownOperation.start(i.type,e,t);else if(r)e.preventDefault();else if(l){const d=i.detail;u&&this.viewHelper.shouldSuppressMouseDownOnViewZone(d.viewZoneId)&&(h(),this._mouseDownOperation.start(i.type,e,t),e.preventDefault())}else c&&this.viewHelper.shouldSuppressMouseDownOnWidget(i.detail)&&(h(),e.preventDefault());this.viewController.emitMouseDown({event:e,target:i})}}class $$e extends pe{constructor(e,t,i,s,r,o){super(),this._context=e,this._viewController=t,this._viewHelper=i,this._mouseTargetFactory=s,this._createMouseTarget=r,this._getMouseColumn=o,this._mouseMoveMonitor=this._register(new s$e(this._viewHelper.viewDomNode)),this._topBottomDragScrolling=this._register(new z$e(this._context,this._viewHelper,this._mouseTargetFactory,(a,l,c)=>this._dispatchMouse(a,l,c))),this._mouseState=new $O,this._currentSelection=new Ze(1,1,1,1),this._isActive=!1,this._lastMouseEvent=null}dispose(){super.dispose()}isActive(){return this._isActive}_onMouseDownThenMove(e){this._lastMouseEvent=e,this._mouseState.setModifiers(e);const t=this._findMousePosition(e,!1);t&&(this._mouseState.isDragAndDrop?this._viewController.emitMouseDrag({event:e,target:t}):t.type===13&&(t.outsidePosition==="above"||t.outsidePosition==="below")?this._topBottomDragScrolling.start(t,e):(this._topBottomDragScrolling.stop(),this._dispatchMouse(t,!0,1)))}start(e,t,i){this._lastMouseEvent=t,this._mouseState.setStartedOnLineNumbers(e===3),this._mouseState.setStartButtons(t),this._mouseState.setModifiers(t);const s=this._findMousePosition(t,!0);if(!s||!s.position)return;this._mouseState.trySetCount(t.detail,s.position),t.detail=this._mouseState.count;const r=this._context.configuration.options;if(!r.get(90)&&r.get(35)&&!r.get(22)&&!this._mouseState.altKey&&t.detail<2&&!this._isActive&&!this._currentSelection.isEmpty()&&s.type===6&&s.position&&this._currentSelection.containsPosition(s.position)){this._mouseState.isDragAndDrop=!0,this._isActive=!0,this._mouseMoveMonitor.startMonitoring(this._viewHelper.viewLinesDomNode,i,t.buttons,o=>this._onMouseDownThenMove(o),o=>{const a=this._findMousePosition(this._lastMouseEvent,!1);kge(o)?this._viewController.emitMouseDropCanceled():this._viewController.emitMouseDrop({event:this._lastMouseEvent,target:a?this._createMouseTarget(this._lastMouseEvent,!0):null}),this._stop()});return}this._mouseState.isDragAndDrop=!1,this._dispatchMouse(s,t.shiftKey,1),this._isActive||(this._isActive=!0,this._mouseMoveMonitor.startMonitoring(this._viewHelper.viewLinesDomNode,i,t.buttons,o=>this._onMouseDownThenMove(o),()=>this._stop()))}_stop(){this._isActive=!1,this._topBottomDragScrolling.stop()}onHeightChanged(){this._mouseMoveMonitor.stopMonitoring()}onPointerUp(){this._mouseMoveMonitor.stopMonitoring()}onCursorStateChanged(e){this._currentSelection=e.selections[0]}_getPositionOutsideEditor(e){const t=e.editorPos,i=this._context.viewModel,s=this._context.viewLayout,r=this._getMouseColumn(e);if(e.posy<t.y){const a=t.y-e.posy,l=Math.max(s.getCurrentScrollTop()-a,0),c=Cy.getZoneAtCoord(this._context,l);if(c){const h=this._helpPositionJumpOverViewZone(c);if(h)return Wr.createOutsideEditor(r,h,"above",a)}const u=s.getLineNumberAtVerticalOffset(l);return Wr.createOutsideEditor(r,new he(u,1),"above",a)}if(e.posy>t.y+t.height){const a=e.posy-t.y-t.height,l=s.getCurrentScrollTop()+e.relativePos.y,c=Cy.getZoneAtCoord(this._context,l);if(c){const h=this._helpPositionJumpOverViewZone(c);if(h)return Wr.createOutsideEditor(r,h,"below",a)}const u=s.getLineNumberAtVerticalOffset(l);return Wr.createOutsideEditor(r,new he(u,i.getLineMaxColumn(u)),"below",a)}const o=s.getLineNumberAtVerticalOffset(s.getCurrentScrollTop()+e.relativePos.y);if(e.posx<t.x){const a=t.x-e.posx;return Wr.createOutsideEditor(r,new he(o,1),"left",a)}if(e.posx>t.x+t.width){const a=e.posx-t.x-t.width;return Wr.createOutsideEditor(r,new he(o,i.getLineMaxColumn(o)),"right",a)}return null}_findMousePosition(e,t){const i=this._getPositionOutsideEditor(e);if(i)return i;const s=this._createMouseTarget(e,t);if(!s.position)return null;if(s.type===8||s.type===5){const o=this._helpPositionJumpOverViewZone(s.detail);if(o)return Wr.createViewZone(s.type,s.element,s.mouseColumn,o,s.detail)}return s}_helpPositionJumpOverViewZone(e){const t=new he(this._currentSelection.selectionStartLineNumber,this._currentSelection.selectionStartColumn),i=e.positionBefore,s=e.positionAfter;return i&&s?i.isBefore(t)?i:s:null}_dispatchMouse(e,t,i){e.position&&this._viewController.dispatchMouse({position:e.position,mouseColumn:e.mouseColumn,startedOnLineNumbers:this._mouseState.startedOnLineNumbers,revealType:i,inSelectionMode:t,mouseDownCount:this._mouseState.count,altKey:this._mouseState.altKey,ctrlKey:this._mouseState.ctrlKey,metaKey:this._mouseState.metaKey,shiftKey:this._mouseState.shiftKey,leftButton:this._mouseState.leftButton,middleButton:this._mouseState.middleButton,onInjectedText:e.type===6&&e.detail.injectedText!==null})}}class z$e extends pe{constructor(e,t,i,s){super(),this._context=e,this._viewHelper=t,this._mouseTargetFactory=i,this._dispatchMouse=s,this._operation=null}dispose(){super.dispose(),this.stop()}start(e,t){this._operation?this._operation.setPosition(e,t):this._operation=new U$e(this._context,this._viewHelper,this._mouseTargetFactory,this._dispatchMouse,e,t)}stop(){this._operation&&(this._operation.dispose(),this._operation=null)}}class U$e extends pe{constructor(e,t,i,s,r,o){super(),this._context=e,this._viewHelper=t,this._mouseTargetFactory=i,this._dispatchMouse=s,this._position=r,this._mouseEvent=o,this._lastTime=Date.now(),this._animationFrameDisposable=ua(pt(o.browserEvent),()=>this._execute())}dispose(){this._animationFrameDisposable.dispose()}setPosition(e,t){this._position=e,this._mouseEvent=t}_tick(){const e=Date.now(),t=e-this._lastTime;return this._lastTime=e,t}_getScrollSpeed(){const e=this._context.configuration.options.get(66),t=this._context.configuration.options.get(143).height/e,i=this._position.outsideDistance/e;return i<=1.5?Math.max(30,t*(1+i)):i<=3?Math.max(60,t*(2+i)):Math.max(200,t*(7+i))}_execute(){const e=this._context.configuration.options.get(66),t=this._getScrollSpeed(),i=this._tick(),s=t*(i/1e3)*e,r=this._position.outsidePosition==="above"?-s:s;this._context.viewModel.viewLayout.deltaScrollNow(0,r),this._viewHelper.renderNow();const o=this._context.viewLayout.getLinesViewportData(),a=this._position.outsidePosition==="above"?o.startLineNumber:o.endLineNumber;let l;{const c=gq(this._viewHelper.viewDomNode),u=this._context.configuration.options.get(143).horizontalScrollbarHeight,h=new BO(this._mouseEvent.pos.x,c.y+c.height-u-.1),d=pq(this._viewHelper.viewDomNode,c,h);l=this._mouseTargetFactory.createMouseTarget(this._viewHelper.getLastRenderData(),c,h,d,null)}(!l.position||l.position.lineNumber!==a)&&(this._position.outsidePosition==="above"?l=Wr.createOutsideEditor(this._position.mouseColumn,new he(a,1),"above",this._position.outsideDistance):l=Wr.createOutsideEditor(this._position.mouseColumn,new he(a,this._context.viewModel.getLineMaxColumn(a)),"below",this._position.outsideDistance)),this._dispatchMouse(l,!0,2),this._animationFrameDisposable=ua(pt(l.element),()=>this._execute())}}class $O{get altKey(){return this._altKey}get ctrlKey(){return this._ctrlKey}get metaKey(){return this._metaKey}get shiftKey(){return this._shiftKey}get leftButton(){return this._leftButton}get middleButton(){return this._middleButton}get startedOnLineNumbers(){return this._startedOnLineNumbers}constructor(){this._altKey=!1,this._ctrlKey=!1,this._metaKey=!1,this._shiftKey=!1,this._leftButton=!1,this._middleButton=!1,this._startedOnLineNumbers=!1,this._lastMouseDownPosition=null,this._lastMouseDownPositionEqualCount=0,this._lastMouseDownCount=0,this._lastSetMouseDownCountTime=0,this.isDragAndDrop=!1}get count(){return this._lastMouseDownCount}setModifiers(e){this._altKey=e.altKey,this._ctrlKey=e.ctrlKey,this._metaKey=e.metaKey,this._shiftKey=e.shiftKey}setStartButtons(e){this._leftButton=e.leftButton,this._middleButton=e.middleButton}setStartedOnLineNumbers(e){this._startedOnLineNumbers=e}trySetCount(e,t){const i=new Date().getTime();i-this._lastSetMouseDownCountTime>$O.CLEAR_MOUSE_DOWN_COUNT_TIME&&(e=1),this._lastSetMouseDownCountTime=i,e>this._lastMouseDownCount+1&&(e=this._lastMouseDownCount+1),this._lastMouseDownPosition&&this._lastMouseDownPosition.equals(t)?this._lastMouseDownPositionEqualCount++:this._lastMouseDownPositionEqualCount=1,this._lastMouseDownPosition=t,this._lastMouseDownCount=Math.min(e,this._lastMouseDownPositionEqualCount)}}$O.CLEAR_MOUSE_DOWN_COUNT_TIME=400;class Ht{get event(){return this.emitter.event}constructor(e,t,i){const s=r=>this.emitter.fire(r);this.emitter=new ue({onWillAddFirstListener:()=>e.addEventListener(t,s,i),onDidRemoveLastListener:()=>e.removeEventListener(t,s,i)})}dispose(){this.emitter.dispose()}}var ip;(function(n){const e={total:0,min:Number.MAX_VALUE,max:0},t={...e},i={...e},s={...e};let r=0;const o={keydown:0,input:0,render:0};function a(){_(),performance.mark("inputlatency/start"),performance.mark("keydown/start"),o.keydown=1,queueMicrotask(l)}n.onKeyDown=a;function l(){o.keydown===1&&(performance.mark("keydown/end"),o.keydown=2)}function c(){performance.mark("input/start"),o.input=1,m()}n.onBeforeInput=c;function u(){o.input===0&&c(),queueMicrotask(h)}n.onInput=u;function h(){o.input===1&&(performance.mark("input/end"),o.input=2)}function d(){_()}n.onKeyUp=d;function f(){_()}n.onSelectionChange=f;function g(){o.keydown===2&&o.input===2&&o.render===0&&(performance.mark("render/start"),o.render=1,queueMicrotask(p),m())}n.onRenderStart=g;function p(){o.render===1&&(performance.mark("render/end"),o.render=2)}function m(){setTimeout(_)}function _(){o.keydown===2&&o.input===2&&o.render===2&&(performance.mark("inputlatency/end"),performance.measure("keydown","keydown/start","keydown/end"),performance.measure("input","input/start","input/end"),performance.measure("render","render/start","render/end"),performance.measure("inputlatency","inputlatency/start","inputlatency/end"),b("keydown",e),b("input",t),b("render",i),b("inputlatency",s),r++,y())}function b(L,k){const x=performance.getEntriesByName(L)[0].duration;k.total+=x,k.min=Math.min(k.min,x),k.max=Math.max(k.max,x)}function y(){performance.clearMarks("keydown/start"),performance.clearMarks("keydown/end"),performance.clearMarks("input/start"),performance.clearMarks("input/end"),performance.clearMarks("render/start"),performance.clearMarks("render/end"),performance.clearMarks("inputlatency/start"),performance.clearMarks("inputlatency/end"),performance.clearMeasures("keydown"),performance.clearMeasures("input"),performance.clearMeasures("render"),performance.clearMeasures("inputlatency"),o.keydown=0,o.input=0,o.render=0}function w(){if(r===0)return;const L={keydown:S(e),input:S(t),render:S(i),total:S(s),sampleCount:r};return E(e),E(t),E(i),E(s),r=0,L}n.getAndClearMeasurements=w;function S(L){return{average:L.total/r,max:L.max,min:L.min}}function E(L){L.total=0,L.min=Number.MAX_VALUE,L.max=0}})(ip||(ip={}));class Zs{constructor(e,t,i,s,r){this.value=e,this.selectionStart=t,this.selectionEnd=i,this.selection=s,this.newlineCountBeforeSelection=r}toString(){return`[ <${this.value}>, selectionStart: ${this.selectionStart}, selectionEnd: ${this.selectionEnd}]`}static readFromTextArea(e,t){const i=e.getValue(),s=e.getSelectionStart(),r=e.getSelectionEnd();let o;if(t){const a=i.substring(0,s),l=t.value.substring(0,t.selectionStart);a===l&&(o=t.newlineCountBeforeSelection)}return new Zs(i,s,r,null,o)}collapseSelection(){return this.selectionStart===this.value.length?this:new Zs(this.value,this.value.length,this.value.length,null,void 0)}writeToTextArea(e,t,i){t.setValue(e,this.value),i&&t.setSelectionRange(e,this.selectionStart,this.selectionEnd)}deduceEditorPosition(e){var t,i,s,r,o,a,l,c;if(e<=this.selectionStart){const d=this.value.substring(e,this.selectionStart);return this._finishDeduceEditorPosition((i=(t=this.selection)===null||t===void 0?void 0:t.getStartPosition())!==null&&i!==void 0?i:null,d,-1)}if(e>=this.selectionEnd){const d=this.value.substring(this.selectionEnd,e);return this._finishDeduceEditorPosition((r=(s=this.selection)===null||s===void 0?void 0:s.getEndPosition())!==null&&r!==void 0?r:null,d,1)}const u=this.value.substring(this.selectionStart,e);if(u.indexOf("…")===-1)return this._finishDeduceEditorPosition((a=(o=this.selection)===null||o===void 0?void 0:o.getStartPosition())!==null&&a!==void 0?a:null,u,1);const h=this.value.substring(e,this.selectionEnd);return this._finishDeduceEditorPosition((c=(l=this.selection)===null||l===void 0?void 0:l.getEndPosition())!==null&&c!==void 0?c:null,h,-1)}_finishDeduceEditorPosition(e,t,i){let s=0,r=-1;for(;(r=t.indexOf(` +`,r+1))!==-1;)s++;return[e,i*t.length,s]}static deduceInput(e,t,i){if(!e)return{text:"",replacePrevCharCnt:0,replaceNextCharCnt:0,positionDelta:0};const s=Math.min(T_(e.value,t.value),e.selectionStart,t.selectionStart),r=Math.min(TA(e.value,t.value),e.value.length-e.selectionEnd,t.value.length-t.selectionEnd);e.value.substring(s,e.value.length-r);const o=t.value.substring(s,t.value.length-r),a=e.selectionStart-s,l=e.selectionEnd-s,c=t.selectionStart-s,u=t.selectionEnd-s;if(c===u){const d=e.selectionStart-s;return{text:o,replacePrevCharCnt:d,replaceNextCharCnt:0,positionDelta:0}}const h=l-a;return{text:o,replacePrevCharCnt:h,replaceNextCharCnt:0,positionDelta:0}}static deduceAndroidCompositionInput(e,t){if(!e)return{text:"",replacePrevCharCnt:0,replaceNextCharCnt:0,positionDelta:0};if(e.value===t.value)return{text:"",replacePrevCharCnt:0,replaceNextCharCnt:0,positionDelta:t.selectionEnd-e.selectionEnd};const i=Math.min(T_(e.value,t.value),e.selectionEnd),s=Math.min(TA(e.value,t.value),e.value.length-e.selectionEnd),r=e.value.substring(i,e.value.length-s),o=t.value.substring(i,t.value.length-s);e.selectionStart-i;const a=e.selectionEnd-i;t.selectionStart-i;const l=t.selectionEnd-i;return{text:o,replacePrevCharCnt:a,replaceNextCharCnt:r.length-a,positionDelta:l-o.length}}}Zs.EMPTY=new Zs("",0,0,null,void 0);class j0{static _getPageOfLine(e,t){return Math.floor((e-1)/t)}static _getRangeForPage(e,t){const i=e*t,s=i+1,r=i+t;return new M(s,1,r+1,1)}static fromEditorSelection(e,t,i,s){const o=j0._getPageOfLine(t.startLineNumber,i),a=j0._getRangeForPage(o,i),l=j0._getPageOfLine(t.endLineNumber,i),c=j0._getRangeForPage(l,i);let u=a.intersectRanges(new M(1,1,t.startLineNumber,t.startColumn));if(s&&e.getValueLengthInRange(u,1)>500){const _=e.modifyPosition(u.getEndPosition(),-500);u=M.fromPositions(_,u.getEndPosition())}const h=e.getValueInRange(u,1),d=e.getLineCount(),f=e.getLineMaxColumn(d);let g=c.intersectRanges(new M(t.endLineNumber,t.endColumn,d,f));if(s&&e.getValueLengthInRange(g,1)>500){const _=e.modifyPosition(g.getStartPosition(),500);g=M.fromPositions(g.getStartPosition(),_)}const p=e.getValueInRange(g,1);let m;if(o===l||o+1===l)m=e.getValueInRange(t,1);else{const _=a.intersectRanges(t),b=c.intersectRanges(t);m=e.getValueInRange(_,1)+"…"+e.getValueInRange(b,1)}return s&&m.length>2*500&&(m=m.substring(0,500)+"…"+m.substring(m.length-500,m.length)),new Zs(h+m+p,h.length,h.length+m.length,t,u.endLineNumber-u.startLineNumber)}}var j$e=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},_ee=function(n,e){return function(t,i){e(t,i,n)}},JA;(function(n){n.Tap="-monaco-textarea-synthetic-tap"})(JA||(JA={}));const b9={forceCopyWithSyntaxHighlighting:!1};class DL{constructor(){this._lastState=null}set(e,t){this._lastState={lastCopiedValue:e,data:t}}get(e){return this._lastState&&this._lastState.lastCopiedValue===e?this._lastState.data:(this._lastState=null,null)}}DL.INSTANCE=new DL;class q$e{constructor(){this._lastTypeTextLength=0}handleCompositionUpdate(e){e=e||"";const t={text:e,replacePrevCharCnt:this._lastTypeTextLength,replaceNextCharCnt:0,positionDelta:0};return this._lastTypeTextLength=e.length,t}}let y9=class extends pe{get textAreaState(){return this._textAreaState}constructor(e,t,i,s,r,o){super(),this._host=e,this._textArea=t,this._OS=i,this._browser=s,this._accessibilityService=r,this._logService=o,this._onFocus=this._register(new ue),this.onFocus=this._onFocus.event,this._onBlur=this._register(new ue),this.onBlur=this._onBlur.event,this._onKeyDown=this._register(new ue),this.onKeyDown=this._onKeyDown.event,this._onKeyUp=this._register(new ue),this.onKeyUp=this._onKeyUp.event,this._onCut=this._register(new ue),this.onCut=this._onCut.event,this._onPaste=this._register(new ue),this.onPaste=this._onPaste.event,this._onType=this._register(new ue),this.onType=this._onType.event,this._onCompositionStart=this._register(new ue),this.onCompositionStart=this._onCompositionStart.event,this._onCompositionUpdate=this._register(new ue),this.onCompositionUpdate=this._onCompositionUpdate.event,this._onCompositionEnd=this._register(new ue),this.onCompositionEnd=this._onCompositionEnd.event,this._onSelectionChangeRequest=this._register(new ue),this.onSelectionChangeRequest=this._onSelectionChangeRequest.event,this._asyncFocusGainWriteScreenReaderContent=this._register(new qs),this._asyncTriggerCut=this._register(new Ei(()=>this._onCut.fire(),0)),this._textAreaState=Zs.EMPTY,this._selectionChangeListener=null,this._accessibilityService.isScreenReaderOptimized()&&this.writeNativeTextAreaContent("ctor"),this._register(Ve.runAndSubscribe(this._accessibilityService.onDidChangeScreenReaderOptimized,()=>{this._accessibilityService.isScreenReaderOptimized()&&!this._asyncFocusGainWriteScreenReaderContent.value?this._asyncFocusGainWriteScreenReaderContent.value=this._register(new Ei(()=>this.writeNativeTextAreaContent("asyncFocusGain"),0)):this._asyncFocusGainWriteScreenReaderContent.clear()})),this._hasFocus=!1,this._currentComposition=null;let a=null;this._register(this._textArea.onKeyDown(l=>{const c=new Ki(l);(c.keyCode===114||this._currentComposition&&c.keyCode===1)&&c.stopPropagation(),c.equals(9)&&c.preventDefault(),a=c,this._onKeyDown.fire(c)})),this._register(this._textArea.onKeyUp(l=>{const c=new Ki(l);this._onKeyUp.fire(c)})),this._register(this._textArea.onCompositionStart(l=>{const c=new q$e;if(this._currentComposition){this._currentComposition=c;return}if(this._currentComposition=c,this._OS===2&&a&&a.equals(114)&&this._textAreaState.selectionStart===this._textAreaState.selectionEnd&&this._textAreaState.selectionStart>0&&this._textAreaState.value.substr(this._textAreaState.selectionStart-1,1)===l.data&&(a.code==="ArrowRight"||a.code==="ArrowLeft")){c.handleCompositionUpdate("x"),this._onCompositionStart.fire({data:l.data});return}if(this._browser.isAndroid){this._onCompositionStart.fire({data:l.data});return}this._onCompositionStart.fire({data:l.data})})),this._register(this._textArea.onCompositionUpdate(l=>{const c=this._currentComposition;if(!c)return;if(this._browser.isAndroid){const h=Zs.readFromTextArea(this._textArea,this._textAreaState),d=Zs.deduceAndroidCompositionInput(this._textAreaState,h);this._textAreaState=h,this._onType.fire(d),this._onCompositionUpdate.fire(l);return}const u=c.handleCompositionUpdate(l.data);this._textAreaState=Zs.readFromTextArea(this._textArea,this._textAreaState),this._onType.fire(u),this._onCompositionUpdate.fire(l)})),this._register(this._textArea.onCompositionEnd(l=>{const c=this._currentComposition;if(!c)return;if(this._currentComposition=null,this._browser.isAndroid){const h=Zs.readFromTextArea(this._textArea,this._textAreaState),d=Zs.deduceAndroidCompositionInput(this._textAreaState,h);this._textAreaState=h,this._onType.fire(d),this._onCompositionEnd.fire();return}const u=c.handleCompositionUpdate(l.data);this._textAreaState=Zs.readFromTextArea(this._textArea,this._textAreaState),this._onType.fire(u),this._onCompositionEnd.fire()})),this._register(this._textArea.onInput(l=>{if(this._textArea.setIgnoreSelectionChangeTime("received input event"),this._currentComposition)return;const c=Zs.readFromTextArea(this._textArea,this._textAreaState),u=Zs.deduceInput(this._textAreaState,c,this._OS===2);u.replacePrevCharCnt===0&&u.text.length===1&&(As(u.text.charCodeAt(0))||u.text.charCodeAt(0)===127)||(this._textAreaState=c,(u.text!==""||u.replacePrevCharCnt!==0||u.replaceNextCharCnt!==0||u.positionDelta!==0)&&this._onType.fire(u))})),this._register(this._textArea.onCut(l=>{this._textArea.setIgnoreSelectionChangeTime("received cut event"),this._ensureClipboardGetsEditorSelection(l),this._asyncTriggerCut.schedule()})),this._register(this._textArea.onCopy(l=>{this._ensureClipboardGetsEditorSelection(l)})),this._register(this._textArea.onPaste(l=>{if(this._textArea.setIgnoreSelectionChangeTime("received paste event"),l.preventDefault(),!l.clipboardData)return;let[c,u]=C9.getTextData(l.clipboardData);c&&(u=u||DL.INSTANCE.get(c),this._onPaste.fire({text:c,metadata:u}))})),this._register(this._textArea.onFocus(()=>{const l=this._hasFocus;this._setHasFocus(!0),this._accessibilityService.isScreenReaderOptimized()&&this._browser.isSafari&&!l&&this._hasFocus&&(this._asyncFocusGainWriteScreenReaderContent.value||(this._asyncFocusGainWriteScreenReaderContent.value=new Ei(()=>this.writeNativeTextAreaContent("asyncFocusGain"),0)),this._asyncFocusGainWriteScreenReaderContent.value.schedule())})),this._register(this._textArea.onBlur(()=>{this._currentComposition&&(this._currentComposition=null,this.writeNativeTextAreaContent("blurWithoutCompositionEnd"),this._onCompositionEnd.fire()),this._setHasFocus(!1)})),this._register(this._textArea.onSyntheticTap(()=>{this._browser.isAndroid&&this._currentComposition&&(this._currentComposition=null,this.writeNativeTextAreaContent("tapWithoutCompositionEnd"),this._onCompositionEnd.fire())}))}_installSelectionChangeListener(){let e=0;return Ce(this._textArea.ownerDocument,"selectionchange",t=>{if(ip.onSelectionChange(),!this._hasFocus||this._currentComposition||!this._browser.isChrome)return;const i=Date.now(),s=i-e;if(e=i,s<5)return;const r=i-this._textArea.getIgnoreSelectionChangeTime();if(this._textArea.resetSelectionChangeTime(),r<100||!this._textAreaState.selection)return;const o=this._textArea.getValue();if(this._textAreaState.value!==o)return;const a=this._textArea.getSelectionStart(),l=this._textArea.getSelectionEnd();if(this._textAreaState.selectionStart===a&&this._textAreaState.selectionEnd===l)return;const c=this._textAreaState.deduceEditorPosition(a),u=this._host.deduceModelPosition(c[0],c[1],c[2]),h=this._textAreaState.deduceEditorPosition(l),d=this._host.deduceModelPosition(h[0],h[1],h[2]),f=new Ze(u.lineNumber,u.column,d.lineNumber,d.column);this._onSelectionChangeRequest.fire(f)})}dispose(){super.dispose(),this._selectionChangeListener&&(this._selectionChangeListener.dispose(),this._selectionChangeListener=null)}focusTextArea(){this._setHasFocus(!0),this.refreshFocusState()}isFocused(){return this._hasFocus}refreshFocusState(){this._setHasFocus(this._textArea.hasFocus())}_setHasFocus(e){this._hasFocus!==e&&(this._hasFocus=e,this._selectionChangeListener&&(this._selectionChangeListener.dispose(),this._selectionChangeListener=null),this._hasFocus&&(this._selectionChangeListener=this._installSelectionChangeListener()),this._hasFocus&&this.writeNativeTextAreaContent("focusgain"),this._hasFocus?this._onFocus.fire():this._onBlur.fire())}_setAndWriteTextAreaState(e,t){this._hasFocus||(t=t.collapseSelection()),t.writeToTextArea(e,this._textArea,this._hasFocus),this._textAreaState=t}writeNativeTextAreaContent(e){!this._accessibilityService.isScreenReaderOptimized()&&e==="render"||this._currentComposition||(this._logService.trace(`writeTextAreaState(reason: ${e})`),this._setAndWriteTextAreaState(e,this._host.getScreenReaderContent()))}_ensureClipboardGetsEditorSelection(e){const t=this._host.getDataToCopy(),i={version:1,isFromEmptySelection:t.isFromEmptySelection,multicursorText:t.multicursorText,mode:t.mode};DL.INSTANCE.set(this._browser.isFirefox?t.text.replace(/\r\n/g,` +`):t.text,i),e.preventDefault(),e.clipboardData&&C9.setTextData(e.clipboardData,t.text,t.html,i)}};y9=j$e([_ee(4,Dd),_ee(5,ga)],y9);const C9={getTextData(n){const e=n.getData(jn.text);let t=null;const i=n.getData("vscode-editor-data");if(typeof i=="string")try{t=JSON.parse(i),t.version!==1&&(t=null)}catch{}return e.length===0&&t===null&&n.files.length>0?[Array.prototype.slice.call(n.files,0).map(r=>r.name).join(` +`),null]:[e,t]},setTextData(n,e,t,i){n.setData(jn.text,e),typeof t=="string"&&n.setData("text/html",t),n.setData("vscode-editor-data",JSON.stringify(i))}};class K$e extends pe{get ownerDocument(){return this._actual.ownerDocument}constructor(e){super(),this._actual=e,this.onKeyDown=this._register(new Ht(this._actual,"keydown")).event,this.onKeyUp=this._register(new Ht(this._actual,"keyup")).event,this.onCompositionStart=this._register(new Ht(this._actual,"compositionstart")).event,this.onCompositionUpdate=this._register(new Ht(this._actual,"compositionupdate")).event,this.onCompositionEnd=this._register(new Ht(this._actual,"compositionend")).event,this.onBeforeInput=this._register(new Ht(this._actual,"beforeinput")).event,this.onInput=this._register(new Ht(this._actual,"input")).event,this.onCut=this._register(new Ht(this._actual,"cut")).event,this.onCopy=this._register(new Ht(this._actual,"copy")).event,this.onPaste=this._register(new Ht(this._actual,"paste")).event,this.onFocus=this._register(new Ht(this._actual,"focus")).event,this.onBlur=this._register(new Ht(this._actual,"blur")).event,this._onSyntheticTap=this._register(new ue),this.onSyntheticTap=this._onSyntheticTap.event,this._ignoreSelectionChangeTime=0,this._register(this.onKeyDown(()=>ip.onKeyDown())),this._register(this.onBeforeInput(()=>ip.onBeforeInput())),this._register(this.onInput(()=>ip.onInput())),this._register(this.onKeyUp(()=>ip.onKeyUp())),this._register(Ce(this._actual,JA.Tap,()=>this._onSyntheticTap.fire()))}hasFocus(){const e=P_(this._actual);return e?e.activeElement===this._actual:this._actual.isConnected?this._actual.ownerDocument.activeElement===this._actual:!1}setIgnoreSelectionChangeTime(e){this._ignoreSelectionChangeTime=Date.now()}getIgnoreSelectionChangeTime(){return this._ignoreSelectionChangeTime}resetSelectionChangeTime(){this._ignoreSelectionChangeTime=0}getValue(){return this._actual.value}setValue(e,t){const i=this._actual;i.value!==t&&(this.setIgnoreSelectionChangeTime("setValue"),i.value=t)}getSelectionStart(){return this._actual.selectionDirection==="backward"?this._actual.selectionEnd:this._actual.selectionStart}getSelectionEnd(){return this._actual.selectionDirection==="backward"?this._actual.selectionStart:this._actual.selectionEnd}setSelectionRange(e,t,i){const s=this._actual;let r=null;const o=P_(s);o?r=o.activeElement:r=s.ownerDocument.activeElement;const a=pt(r),l=r===s,c=s.selectionStart,u=s.selectionEnd;if(l&&c===t&&u===i){Ol&&a.parent!==a&&s.focus();return}if(l){this.setIgnoreSelectionChangeTime("setSelectionRange"),s.setSelectionRange(t,i),Ol&&a.parent!==a&&s.focus();return}try{const h=S9e(s);this.setIgnoreSelectionChangeTime("setSelectionRange"),s.focus(),s.setSelectionRange(t,i),k9e(s,h)}catch{}}}class G$e extends bq{constructor(e,t,i){super(e,t,i),this._register(Ri.addTarget(this.viewHelper.linesContentDomNode)),this._register(Ce(this.viewHelper.linesContentDomNode,Oi.Tap,r=>this.onTap(r))),this._register(Ce(this.viewHelper.linesContentDomNode,Oi.Change,r=>this.onChange(r))),this._register(Ce(this.viewHelper.linesContentDomNode,Oi.Contextmenu,r=>this._onContextMenu(new tm(r,!1,this.viewHelper.viewDomNode),!1))),this._lastPointerType="mouse",this._register(Ce(this.viewHelper.linesContentDomNode,"pointerdown",r=>{const o=r.pointerType;if(o==="mouse"){this._lastPointerType="mouse";return}else o==="touch"?this._lastPointerType="touch":this._lastPointerType="pen"}));const s=new n$e(this.viewHelper.viewDomNode);this._register(s.onPointerMove(this.viewHelper.viewDomNode,r=>this._onMouseMove(r))),this._register(s.onPointerUp(this.viewHelper.viewDomNode,r=>this._onMouseUp(r))),this._register(s.onPointerLeave(this.viewHelper.viewDomNode,r=>this._onMouseLeave(r))),this._register(s.onPointerDown(this.viewHelper.viewDomNode,(r,o)=>this._onMouseDown(r,o)))}onTap(e){if(!e.initialTarget||!this.viewHelper.linesContentDomNode.contains(e.initialTarget))return;e.preventDefault(),this.viewHelper.focusTextArea();const t=this._createMouseTarget(new tm(e,!1,this.viewHelper.viewDomNode),!1);t.position&&this.viewController.dispatchMouse({position:t.position,mouseColumn:t.position.column,startedOnLineNumbers:!1,revealType:1,mouseDownCount:e.tapCount,inSelectionMode:!1,altKey:!1,ctrlKey:!1,metaKey:!1,shiftKey:!1,leftButton:!1,middleButton:!1,onInjectedText:t.type===6&&t.detail.injectedText!==null})}onChange(e){this._lastPointerType==="touch"&&this._context.viewModel.viewLayout.deltaScrollNow(-e.translationX,-e.translationY)}_onMouseDown(e,t){e.browserEvent.pointerType!=="touch"&&super._onMouseDown(e,t)}}class Y$e extends bq{constructor(e,t,i){super(e,t,i),this._register(Ri.addTarget(this.viewHelper.linesContentDomNode)),this._register(Ce(this.viewHelper.linesContentDomNode,Oi.Tap,s=>this.onTap(s))),this._register(Ce(this.viewHelper.linesContentDomNode,Oi.Change,s=>this.onChange(s))),this._register(Ce(this.viewHelper.linesContentDomNode,Oi.Contextmenu,s=>this._onContextMenu(new tm(s,!1,this.viewHelper.viewDomNode),!1)))}onTap(e){e.preventDefault(),this.viewHelper.focusTextArea();const t=this._createMouseTarget(new tm(e,!1,this.viewHelper.viewDomNode),!1);if(t.position){const i=document.createEvent("CustomEvent");i.initEvent(JA.Tap,!1,!0),this.viewHelper.dispatchTextAreaEvent(i),this.viewController.moveTo(t.position,1)}}onChange(e){this._context.viewModel.viewLayout.deltaScrollNow(-e.translationX,-e.translationY)}}class Z$e extends pe{constructor(e,t,i){super(),Du&&Aj.pointerEvents?this.handler=this._register(new G$e(e,t,i)):mn.TouchEvent?this.handler=this._register(new Y$e(e,t,i)):this.handler=this._register(new bq(e,t,i))}getTargetAtClientPoint(e,t){return this.handler.getTargetAtClientPoint(e,t)}}class Ev extends bE{}const Ms=Bt("themeService");function Sn(n){return{id:n}}function w9(n){switch(n){case Sl.DARK:return"vs-dark";case Sl.HIGH_CONTRAST_DARK:return"hc-black";case Sl.HIGH_CONTRAST_LIGHT:return"hc-light";default:return"vs"}}const Ppe={ThemingContribution:"base.contributions.theming"};class X$e{constructor(){this.themingParticipants=[],this.themingParticipants=[],this.onThemingParticipantAddedEmitter=new ue}onColorThemeChange(e){return this.themingParticipants.push(e),this.onThemingParticipantAddedEmitter.fire(e),st(()=>{const t=this.themingParticipants.indexOf(e);this.themingParticipants.splice(t,1)})}getThemingParticipants(){return this.themingParticipants}}const Rpe=new X$e;vn.add(Ppe.ThemingContribution,Rpe);function Nc(n){return Rpe.onColorThemeChange(n)}class Q$e extends pe{constructor(e){super(),this.themeService=e,this.theme=e.getColorTheme(),this._register(this.themeService.onDidColorThemeChange(t=>this.onThemeChange(t)))}onThemeChange(e){this.theme=e,this.updateStyles()}updateStyles(){}}const Mpe=U("editor.lineHighlightBackground",{dark:null,light:null,hcDark:null,hcLight:null},v("lineHighlight","Background color for the highlight of line at the cursor position.")),vee=U("editor.lineHighlightBorder",{dark:"#282828",light:"#eeeeee",hcDark:"#f38518",hcLight:zt},v("lineHighlightBorderBox","Background color for the border around the line at the cursor position."));U("editor.rangeHighlightBackground",{dark:"#ffffff0b",light:"#fdff0033",hcDark:null,hcLight:null},v("rangeHighlight","Background color of highlighted ranges, like by quick open and find features. The color must not be opaque so as not to hide underlying decorations."),!0);U("editor.rangeHighlightBorder",{dark:null,light:null,hcDark:Gi,hcLight:Gi},v("rangeHighlightBorder","Background color of the border around highlighted ranges."),!0);U("editor.symbolHighlightBackground",{dark:Fh,light:Fh,hcDark:null,hcLight:null},v("symbolHighlight","Background color of highlighted symbol, like for go to definition or go next/previous symbol. The color must not be opaque so as not to hide underlying decorations."),!0);U("editor.symbolHighlightBorder",{dark:null,light:null,hcDark:Gi,hcLight:Gi},v("symbolHighlightBorder","Background color of the border around highlighted symbols."),!0);const Ope=U("editorCursor.foreground",{dark:"#AEAFAD",light:me.black,hcDark:me.white,hcLight:"#0F4A85"},v("caret","Color of the editor cursor.")),J$e=U("editorCursor.background",null,v("editorCursorBackground","The background color of the editor cursor. Allows customizing the color of a character overlapped by a block cursor.")),xf=U("editorWhitespace.foreground",{dark:"#e3e4e229",light:"#33333333",hcDark:"#e3e4e229",hcLight:"#CCCCCC"},v("editorWhitespaces","Color of whitespace characters in the editor.")),eze=U("editorLineNumber.foreground",{dark:"#858585",light:"#237893",hcDark:me.white,hcLight:"#292929"},v("editorLineNumbers","Color of editor line numbers.")),rI=U("editorIndentGuide.background",{dark:xf,light:xf,hcDark:xf,hcLight:xf},v("editorIndentGuides","Color of the editor indentation guides."),!1,v("deprecatedEditorIndentGuides","'editorIndentGuide.background' is deprecated. Use 'editorIndentGuide.background1' instead.")),oI=U("editorIndentGuide.activeBackground",{dark:xf,light:xf,hcDark:xf,hcLight:xf},v("editorActiveIndentGuide","Color of the active editor indentation guides."),!1,v("deprecatedEditorActiveIndentGuide","'editorIndentGuide.activeBackground' is deprecated. Use 'editorIndentGuide.activeBackground1' instead.")),wE=U("editorIndentGuide.background1",{dark:rI,light:rI,hcDark:rI,hcLight:rI},v("editorIndentGuides1","Color of the editor indentation guides (1).")),tze=U("editorIndentGuide.background2",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},v("editorIndentGuides2","Color of the editor indentation guides (2).")),ize=U("editorIndentGuide.background3",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},v("editorIndentGuides3","Color of the editor indentation guides (3).")),nze=U("editorIndentGuide.background4",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},v("editorIndentGuides4","Color of the editor indentation guides (4).")),sze=U("editorIndentGuide.background5",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},v("editorIndentGuides5","Color of the editor indentation guides (5).")),rze=U("editorIndentGuide.background6",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},v("editorIndentGuides6","Color of the editor indentation guides (6).")),SE=U("editorIndentGuide.activeBackground1",{dark:oI,light:oI,hcDark:oI,hcLight:oI},v("editorActiveIndentGuide1","Color of the active editor indentation guides (1).")),oze=U("editorIndentGuide.activeBackground2",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},v("editorActiveIndentGuide2","Color of the active editor indentation guides (2).")),aze=U("editorIndentGuide.activeBackground3",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},v("editorActiveIndentGuide3","Color of the active editor indentation guides (3).")),lze=U("editorIndentGuide.activeBackground4",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},v("editorActiveIndentGuide4","Color of the active editor indentation guides (4).")),cze=U("editorIndentGuide.activeBackground5",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},v("editorActiveIndentGuide5","Color of the active editor indentation guides (5).")),uze=U("editorIndentGuide.activeBackground6",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},v("editorActiveIndentGuide6","Color of the active editor indentation guides (6).")),aI=U("editorActiveLineNumber.foreground",{dark:"#c6c6c6",light:"#0B216F",hcDark:Gi,hcLight:Gi},v("editorActiveLineNumber","Color of editor active line number"),!1,v("deprecatedEditorActiveLineNumber","Id is deprecated. Use 'editorLineNumber.activeForeground' instead."));U("editorLineNumber.activeForeground",{dark:aI,light:aI,hcDark:aI,hcLight:aI},v("editorActiveLineNumber","Color of editor active line number"));const hze=U("editorLineNumber.dimmedForeground",{dark:null,light:null,hcDark:null,hcLight:null},v("editorDimmedLineNumber","Color of the final editor line when editor.renderFinalNewline is set to dimmed."));U("editorRuler.foreground",{dark:"#5A5A5A",light:me.lightgrey,hcDark:me.white,hcLight:"#292929"},v("editorRuler","Color of the editor rulers."));U("editorCodeLens.foreground",{dark:"#999999",light:"#919191",hcDark:"#999999",hcLight:"#292929"},v("editorCodeLensForeground","Foreground color of editor CodeLens"));U("editorBracketMatch.background",{dark:"#0064001a",light:"#0064001a",hcDark:"#0064001a",hcLight:"#0000"},v("editorBracketMatchBackground","Background color behind matching brackets"));U("editorBracketMatch.border",{dark:"#888",light:"#B9B9B9",hcDark:zt,hcLight:zt},v("editorBracketMatchBorder","Color for matching brackets boxes"));const dze=U("editorOverviewRuler.border",{dark:"#7f7f7f4d",light:"#7f7f7f4d",hcDark:"#7f7f7f4d",hcLight:"#666666"},v("editorOverviewRulerBorder","Color of the overview ruler border.")),fze=U("editorOverviewRuler.background",null,v("editorOverviewRulerBackground","Background color of the editor overview ruler."));U("editorGutter.background",{dark:Rs,light:Rs,hcDark:Rs,hcLight:Rs},v("editorGutter","Background color of the editor gutter. The gutter contains the glyph margins and the line numbers."));U("editorUnnecessaryCode.border",{dark:null,light:null,hcDark:me.fromHex("#fff").transparent(.8),hcLight:zt},v("unnecessaryCodeBorder","Border color of unnecessary (unused) source code in the editor."));const gze=U("editorUnnecessaryCode.opacity",{dark:me.fromHex("#000a"),light:me.fromHex("#0007"),hcDark:null,hcLight:null},v("unnecessaryCodeOpacity",`Opacity of unnecessary (unused) source code in the editor. For example, "#000000c0" will render the code with 75% opacity. For high contrast themes, use the 'editorUnnecessaryCode.border' theme color to underline unnecessary code instead of fading it out.`));U("editorGhostText.border",{dark:null,light:null,hcDark:me.fromHex("#fff").transparent(.8),hcLight:me.fromHex("#292929").transparent(.8)},v("editorGhostTextBorder","Border color of ghost text in the editor."));U("editorGhostText.foreground",{dark:me.fromHex("#ffffff56"),light:me.fromHex("#0007"),hcDark:null,hcLight:null},v("editorGhostTextForeground","Foreground color of the ghost text in the editor."));U("editorGhostText.background",{dark:null,light:null,hcDark:null,hcLight:null},v("editorGhostTextBackground","Background color of the ghost text in the editor."));const lI=new me(new Kt(0,122,204,.6)),Fpe=U("editorOverviewRuler.rangeHighlightForeground",{dark:lI,light:lI,hcDark:lI,hcLight:lI},v("overviewRulerRangeHighlight","Overview ruler marker color for range highlights. The color must not be opaque so as not to hide underlying decorations."),!0),pze=U("editorOverviewRuler.errorForeground",{dark:new me(new Kt(255,18,18,.7)),light:new me(new Kt(255,18,18,.7)),hcDark:new me(new Kt(255,50,50,1)),hcLight:"#B5200D"},v("overviewRuleError","Overview ruler marker color for errors.")),mze=U("editorOverviewRuler.warningForeground",{dark:za,light:za,hcDark:kL,hcLight:kL},v("overviewRuleWarning","Overview ruler marker color for warnings.")),_ze=U("editorOverviewRuler.infoForeground",{dark:Ao,light:Ao,hcDark:LL,hcLight:LL},v("overviewRuleInfo","Overview ruler marker color for infos.")),Bpe=U("editorBracketHighlight.foreground1",{dark:"#FFD700",light:"#0431FAFF",hcDark:"#FFD700",hcLight:"#0431FAFF"},v("editorBracketHighlightForeground1","Foreground color of brackets (1). Requires enabling bracket pair colorization.")),Wpe=U("editorBracketHighlight.foreground2",{dark:"#DA70D6",light:"#319331FF",hcDark:"#DA70D6",hcLight:"#319331FF"},v("editorBracketHighlightForeground2","Foreground color of brackets (2). Requires enabling bracket pair colorization.")),Vpe=U("editorBracketHighlight.foreground3",{dark:"#179FFF",light:"#7B3814FF",hcDark:"#87CEFA",hcLight:"#7B3814FF"},v("editorBracketHighlightForeground3","Foreground color of brackets (3). Requires enabling bracket pair colorization.")),Hpe=U("editorBracketHighlight.foreground4",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},v("editorBracketHighlightForeground4","Foreground color of brackets (4). Requires enabling bracket pair colorization.")),$pe=U("editorBracketHighlight.foreground5",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},v("editorBracketHighlightForeground5","Foreground color of brackets (5). Requires enabling bracket pair colorization.")),zpe=U("editorBracketHighlight.foreground6",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},v("editorBracketHighlightForeground6","Foreground color of brackets (6). Requires enabling bracket pair colorization.")),vze=U("editorBracketHighlight.unexpectedBracket.foreground",{dark:new me(new Kt(255,18,18,.8)),light:new me(new Kt(255,18,18,.8)),hcDark:new me(new Kt(255,50,50,1)),hcLight:""},v("editorBracketHighlightUnexpectedBracketForeground","Foreground color of unexpected brackets.")),bze=U("editorBracketPairGuide.background1",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},v("editorBracketPairGuide.background1","Background color of inactive bracket pair guides (1). Requires enabling bracket pair guides.")),yze=U("editorBracketPairGuide.background2",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},v("editorBracketPairGuide.background2","Background color of inactive bracket pair guides (2). Requires enabling bracket pair guides.")),Cze=U("editorBracketPairGuide.background3",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},v("editorBracketPairGuide.background3","Background color of inactive bracket pair guides (3). Requires enabling bracket pair guides.")),wze=U("editorBracketPairGuide.background4",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},v("editorBracketPairGuide.background4","Background color of inactive bracket pair guides (4). Requires enabling bracket pair guides.")),Sze=U("editorBracketPairGuide.background5",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},v("editorBracketPairGuide.background5","Background color of inactive bracket pair guides (5). Requires enabling bracket pair guides.")),kze=U("editorBracketPairGuide.background6",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},v("editorBracketPairGuide.background6","Background color of inactive bracket pair guides (6). Requires enabling bracket pair guides.")),Lze=U("editorBracketPairGuide.activeBackground1",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},v("editorBracketPairGuide.activeBackground1","Background color of active bracket pair guides (1). Requires enabling bracket pair guides.")),xze=U("editorBracketPairGuide.activeBackground2",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},v("editorBracketPairGuide.activeBackground2","Background color of active bracket pair guides (2). Requires enabling bracket pair guides.")),Eze=U("editorBracketPairGuide.activeBackground3",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},v("editorBracketPairGuide.activeBackground3","Background color of active bracket pair guides (3). Requires enabling bracket pair guides.")),Dze=U("editorBracketPairGuide.activeBackground4",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},v("editorBracketPairGuide.activeBackground4","Background color of active bracket pair guides (4). Requires enabling bracket pair guides.")),Ize=U("editorBracketPairGuide.activeBackground5",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},v("editorBracketPairGuide.activeBackground5","Background color of active bracket pair guides (5). Requires enabling bracket pair guides.")),Tze=U("editorBracketPairGuide.activeBackground6",{dark:"#00000000",light:"#00000000",hcDark:"#00000000",hcLight:"#00000000"},v("editorBracketPairGuide.activeBackground6","Background color of active bracket pair guides (6). Requires enabling bracket pair guides."));U("editorUnicodeHighlight.border",{dark:"#BD9B03",light:"#CEA33D",hcDark:"#ff0000",hcLight:"#CEA33D"},v("editorUnicodeHighlight.border","Border color used to highlight unicode characters."));U("editorUnicodeHighlight.background",{dark:"#bd9b0326",light:"#cea33d14",hcDark:"#00000000",hcLight:"#cea33d14"},v("editorUnicodeHighlight.background","Background color used to highlight unicode characters."));Nc((n,e)=>{const t=n.getColor(Rs),i=n.getColor(Mpe),s=i&&!i.isTransparent()?i:t;s&&e.addRule(`.monaco-editor .inputarea.ime-input { background-color: ${s}; }`)});class kE extends Ev{constructor(e){super(),this._context=e,this._readConfig(),this._lastCursorModelPosition=new he(1,1),this._renderResult=null,this._activeLineNumber=1,this._context.addEventHandler(this)}_readConfig(){const e=this._context.configuration.options;this._lineHeight=e.get(66);const t=e.get(67);this._renderLineNumbers=t.renderType,this._renderCustomLineNumbers=t.renderFn,this._renderFinalNewline=e.get(94);const i=e.get(143);this._lineNumbersLeft=i.lineNumbersLeft,this._lineNumbersWidth=i.lineNumbersWidth}dispose(){this._context.removeEventHandler(this),this._renderResult=null,super.dispose()}onConfigurationChanged(e){return this._readConfig(),!0}onCursorStateChanged(e){const t=e.selections[0].getPosition();this._lastCursorModelPosition=this._context.viewModel.coordinatesConverter.convertViewPositionToModelPosition(t);let i=!1;return this._activeLineNumber!==t.lineNumber&&(this._activeLineNumber=t.lineNumber,i=!0),(this._renderLineNumbers===2||this._renderLineNumbers===3)&&(i=!0),i}onFlushed(e){return!0}onLinesChanged(e){return!0}onLinesDeleted(e){return!0}onLinesInserted(e){return!0}onScrollChanged(e){return e.scrollTopChanged}onZonesChanged(e){return!0}_getLineRenderLineNumber(e){const t=this._context.viewModel.coordinatesConverter.convertViewPositionToModelPosition(new he(e,1));if(t.column!==1)return"";const i=t.lineNumber;if(this._renderCustomLineNumbers)return this._renderCustomLineNumbers(i);if(this._renderLineNumbers===2){const s=Math.abs(this._lastCursorModelPosition.lineNumber-i);return s===0?'<span class="relative-current-line-number">'+i+"</span>":String(s)}return this._renderLineNumbers===3?this._lastCursorModelPosition.lineNumber===i||i%10===0?String(i):"":String(i)}prepareRender(e){if(this._renderLineNumbers===0){this._renderResult=null;return}const t=Kr?this._lineHeight%2===0?" lh-even":" lh-odd":"",i=e.visibleRange.startLineNumber,s=e.visibleRange.endLineNumber,r=this._context.viewModel.getLineCount(),o=[];for(let a=i;a<=s;a++){const l=a-i,c=this._getLineRenderLineNumber(a);if(!c){o[l]="";continue}let u="";if(a===r&&this._context.viewModel.getLineLength(a)===0){if(this._renderFinalNewline==="off"){o[l]="";continue}this._renderFinalNewline==="dimmed"&&(u=" dimmed-line-number")}a===this._activeLineNumber&&(u=" active-line-number"),o[l]=`<div class="${kE.CLASS_NAME}${t}${u}" style="left:${this._lineNumbersLeft}px;width:${this._lineNumbersWidth}px;">${c}</div>`}this._renderResult=o}render(e,t){if(!this._renderResult)return"";const i=t-e;return i<0||i>=this._renderResult.length?"":this._renderResult[i]}}kE.CLASS_NAME="line-numbers";Nc((n,e)=>{const t=n.getColor(eze),i=n.getColor(hze);i?e.addRule(`.monaco-editor .line-numbers.dimmed-line-number { color: ${i}; }`):t&&e.addRule(`.monaco-editor .line-numbers.dimmed-line-number { color: ${t.transparent(.4)}; }`)});class O_ extends ma{constructor(e){super(e);const t=this._context.configuration.options,i=t.get(143);this._canUseLayerHinting=!t.get(32),this._contentLeft=i.contentLeft,this._glyphMarginLeft=i.glyphMarginLeft,this._glyphMarginWidth=i.glyphMarginWidth,this._domNode=fi(document.createElement("div")),this._domNode.setClassName(O_.OUTER_CLASS_NAME),this._domNode.setPosition("absolute"),this._domNode.setAttribute("role","presentation"),this._domNode.setAttribute("aria-hidden","true"),this._glyphMarginBackgroundDomNode=fi(document.createElement("div")),this._glyphMarginBackgroundDomNode.setClassName(O_.CLASS_NAME),this._domNode.appendChild(this._glyphMarginBackgroundDomNode)}dispose(){super.dispose()}getDomNode(){return this._domNode}onConfigurationChanged(e){const t=this._context.configuration.options,i=t.get(143);return this._canUseLayerHinting=!t.get(32),this._contentLeft=i.contentLeft,this._glyphMarginLeft=i.glyphMarginLeft,this._glyphMarginWidth=i.glyphMarginWidth,!0}onScrollChanged(e){return super.onScrollChanged(e)||e.scrollTopChanged}prepareRender(e){}render(e){this._domNode.setLayerHinting(this._canUseLayerHinting),this._domNode.setContain("strict");const t=e.scrollTop-e.bigNumbersDelta;this._domNode.setTop(-t);const i=Math.min(e.scrollHeight,1e6);this._domNode.setHeight(i),this._domNode.setWidth(this._contentLeft),this._glyphMarginBackgroundDomNode.setLeft(this._glyphMarginLeft),this._glyphMarginBackgroundDomNode.setWidth(this._glyphMarginWidth),this._glyphMarginBackgroundDomNode.setHeight(i)}}O_.CLASS_NAME="glyph-margin";O_.OUTER_CLASS_NAME="margin";const kb="monaco-mouse-cursor-text";let Nze=class{constructor(){this._tokenizationSupports=new Map,this._factories=new Map,this._onDidChange=new ue,this.onDidChange=this._onDidChange.event,this._colorMap=null}handleChange(e){this._onDidChange.fire({changedLanguages:e,changedColorMap:!1})}register(e,t){return this._tokenizationSupports.set(e,t),this.handleChange([e]),st(()=>{this._tokenizationSupports.get(e)===t&&(this._tokenizationSupports.delete(e),this.handleChange([e]))})}get(e){return this._tokenizationSupports.get(e)||null}registerFactory(e,t){var i;(i=this._factories.get(e))===null||i===void 0||i.dispose();const s=new Aze(this,e,t);return this._factories.set(e,s),st(()=>{const r=this._factories.get(e);!r||r!==s||(this._factories.delete(e),r.dispose())})}async getOrCreate(e){const t=this.get(e);if(t)return t;const i=this._factories.get(e);return!i||i.isResolved?null:(await i.resolve(),this.get(e))}isResolved(e){if(this.get(e))return!0;const i=this._factories.get(e);return!!(!i||i.isResolved)}setColorMap(e){this._colorMap=e,this._onDidChange.fire({changedLanguages:Array.from(this._tokenizationSupports.keys()),changedColorMap:!0})}getColorMap(){return this._colorMap}getDefaultBackground(){return this._colorMap&&this._colorMap.length>2?this._colorMap[2]:null}};class Aze extends pe{get isResolved(){return this._isResolved}constructor(e,t,i){super(),this._registry=e,this._languageId=t,this._factory=i,this._isDisposed=!1,this._resolvePromise=null,this._isResolved=!1}dispose(){this._isDisposed=!0,super.dispose()}async resolve(){return this._resolvePromise||(this._resolvePromise=this._create()),this._resolvePromise}async _create(){const e=await this._factory.tokenizationSupport;this._isResolved=!0,e&&!this._isDisposed&&this._register(this._registry.register(this._languageId,e))}}let IL=class{constructor(e,t,i){this.offset=e,this.type=t,this.language=i,this._tokenBrand=void 0}toString(){return"("+this.offset+", "+this.type+")"}};class yq{constructor(e,t){this.tokens=e,this.endState=t,this._tokenizationResultBrand=void 0}}class zO{constructor(e,t){this.tokens=e,this.endState=t,this._encodedTokenizationResultBrand=void 0}}var TL;(function(n){const e=new Map;e.set(0,Pe.symbolMethod),e.set(1,Pe.symbolFunction),e.set(2,Pe.symbolConstructor),e.set(3,Pe.symbolField),e.set(4,Pe.symbolVariable),e.set(5,Pe.symbolClass),e.set(6,Pe.symbolStruct),e.set(7,Pe.symbolInterface),e.set(8,Pe.symbolModule),e.set(9,Pe.symbolProperty),e.set(10,Pe.symbolEvent),e.set(11,Pe.symbolOperator),e.set(12,Pe.symbolUnit),e.set(13,Pe.symbolValue),e.set(15,Pe.symbolEnum),e.set(14,Pe.symbolConstant),e.set(15,Pe.symbolEnum),e.set(16,Pe.symbolEnumMember),e.set(17,Pe.symbolKeyword),e.set(27,Pe.symbolSnippet),e.set(18,Pe.symbolText),e.set(19,Pe.symbolColor),e.set(20,Pe.symbolFile),e.set(21,Pe.symbolReference),e.set(22,Pe.symbolCustomColor),e.set(23,Pe.symbolFolder),e.set(24,Pe.symbolTypeParameter),e.set(25,Pe.account),e.set(26,Pe.issues);function t(r){let o=e.get(r);return o||(console.info("No codicon found for CompletionItemKind "+r),o=Pe.symbolProperty),o}n.toIcon=t;const i=new Map;i.set("method",0),i.set("function",1),i.set("constructor",2),i.set("field",3),i.set("variable",4),i.set("class",5),i.set("struct",6),i.set("interface",7),i.set("module",8),i.set("property",9),i.set("event",10),i.set("operator",11),i.set("unit",12),i.set("value",13),i.set("constant",14),i.set("enum",15),i.set("enum-member",16),i.set("enumMember",16),i.set("keyword",17),i.set("snippet",27),i.set("text",18),i.set("color",19),i.set("file",20),i.set("reference",21),i.set("customcolor",22),i.set("folder",23),i.set("type-parameter",24),i.set("typeParameter",24),i.set("account",25),i.set("issue",26);function s(r,o){let a=i.get(r);return typeof a>"u"&&!o&&(a=9),a}n.fromString=s})(TL||(TL={}));var Rf;(function(n){n[n.Automatic=0]="Automatic",n[n.Explicit=1]="Explicit"})(Rf||(Rf={}));class Upe{constructor(e,t,i,s){this.range=e,this.text=t,this.completionKind=i,this.isSnippetText=s}equals(e){return M.lift(this.range).equalsRange(e.range)&&this.text===e.text&&this.completionKind===e.completionKind&&this.isSnippetText===e.isSnippetText}}var ed;(function(n){n[n.Invoke=1]="Invoke",n[n.TriggerCharacter=2]="TriggerCharacter",n[n.ContentChange=3]="ContentChange"})(ed||(ed={}));var NL;(function(n){n[n.Text=0]="Text",n[n.Read=1]="Read",n[n.Write=2]="Write"})(NL||(NL={}));function Pze(n){return n&&it.isUri(n.uri)&&M.isIRange(n.range)&&(M.isIRange(n.originSelectionRange)||M.isIRange(n.targetSelectionRange))}const Rze={17:v("Array","array"),16:v("Boolean","boolean"),4:v("Class","class"),13:v("Constant","constant"),8:v("Constructor","constructor"),9:v("Enum","enumeration"),21:v("EnumMember","enumeration member"),23:v("Event","event"),7:v("Field","field"),0:v("File","file"),11:v("Function","function"),10:v("Interface","interface"),19:v("Key","key"),5:v("Method","method"),1:v("Module","module"),2:v("Namespace","namespace"),20:v("Null","null"),15:v("Number","number"),18:v("Object","object"),24:v("Operator","operator"),3:v("Package","package"),6:v("Property","property"),14:v("String","string"),22:v("Struct","struct"),25:v("TypeParameter","type parameter"),12:v("Variable","variable")};function Mze(n,e){return v("symbolAriaLabel","{0} ({1})",n,Rze[e])}var eP;(function(n){const e=new Map;e.set(0,Pe.symbolFile),e.set(1,Pe.symbolModule),e.set(2,Pe.symbolNamespace),e.set(3,Pe.symbolPackage),e.set(4,Pe.symbolClass),e.set(5,Pe.symbolMethod),e.set(6,Pe.symbolProperty),e.set(7,Pe.symbolField),e.set(8,Pe.symbolConstructor),e.set(9,Pe.symbolEnum),e.set(10,Pe.symbolInterface),e.set(11,Pe.symbolFunction),e.set(12,Pe.symbolVariable),e.set(13,Pe.symbolConstant),e.set(14,Pe.symbolString),e.set(15,Pe.symbolNumber),e.set(16,Pe.symbolBoolean),e.set(17,Pe.symbolArray),e.set(18,Pe.symbolObject),e.set(19,Pe.symbolKey),e.set(20,Pe.symbolNull),e.set(21,Pe.symbolEnumMember),e.set(22,Pe.symbolStruct),e.set(23,Pe.symbolEvent),e.set(24,Pe.symbolOperator),e.set(25,Pe.symbolTypeParameter);function t(i){let s=e.get(i);return s||(console.info("No codicon found for SymbolKind "+i),s=Pe.symbolProperty),s}n.toIcon=t})(eP||(eP={}));class lo{static fromValue(e){switch(e){case"comment":return lo.Comment;case"imports":return lo.Imports;case"region":return lo.Region}return new lo(e)}constructor(e){this.value=e}}lo.Comment=new lo("comment");lo.Imports=new lo("imports");lo.Region=new lo("region");var S9;(function(n){function e(t){return!t||typeof t!="object"?!1:typeof t.id=="string"&&typeof t.title=="string"}n.is=e})(S9||(S9={}));var tP;(function(n){n[n.Type=1]="Type",n[n.Parameter=2]="Parameter"})(tP||(tP={}));class Oze{constructor(e){this.createSupport=e,this._tokenizationSupport=null}dispose(){this._tokenizationSupport&&this._tokenizationSupport.then(e=>{e&&e.dispose()})}get tokenizationSupport(){return this._tokenizationSupport||(this._tokenizationSupport=this.createSupport()),this._tokenizationSupport}}const kn=new Nze;class Fze{constructor(){this._onDidChange=new ue,this.onDidChange=this._onDidChange.event,this._enabled=!0}get enabled(){return this._enabled}enable(){this._enabled=!0,this._onDidChange.fire()}disable(){this._enabled=!1,this._onDidChange.fire()}}const ek=new Fze,Di=Bt("keybindingService");var Bze=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},bee=function(n,e){return function(t,i){e(t,i,n)}};class Wze{constructor(e,t,i,s,r){this._context=e,this.modelLineNumber=t,this.distanceToModelLineStart=i,this.widthOfHiddenLineTextBefore=s,this.distanceToModelLineEnd=r,this._visibleTextAreaBrand=void 0,this.startPosition=null,this.endPosition=null,this.visibleTextareaStart=null,this.visibleTextareaEnd=null,this._previousPresentation=null}prepareRender(e){const t=new he(this.modelLineNumber,this.distanceToModelLineStart+1),i=new he(this.modelLineNumber,this._context.viewModel.model.getLineMaxColumn(this.modelLineNumber)-this.distanceToModelLineEnd);this.startPosition=this._context.viewModel.coordinatesConverter.convertModelPositionToViewPosition(t),this.endPosition=this._context.viewModel.coordinatesConverter.convertModelPositionToViewPosition(i),this.startPosition.lineNumber===this.endPosition.lineNumber?(this.visibleTextareaStart=e.visibleRangeForPosition(this.startPosition),this.visibleTextareaEnd=e.visibleRangeForPosition(this.endPosition)):(this.visibleTextareaStart=null,this.visibleTextareaEnd=null)}definePresentation(e){return this._previousPresentation||(e?this._previousPresentation=e:this._previousPresentation={foreground:1,italic:!1,bold:!1,underline:!1,strikethrough:!1}),this._previousPresentation}}const V5=Ol;let k9=class extends ma{constructor(e,t,i,s,r){super(e),this._keybindingService=s,this._instantiationService=r,this._primaryCursorPosition=new he(1,1),this._primaryCursorVisibleRange=null,this._viewController=t,this._visibleRangeProvider=i,this._scrollLeft=0,this._scrollTop=0;const o=this._context.configuration.options,a=o.get(143);this._setAccessibilityOptions(o),this._contentLeft=a.contentLeft,this._contentWidth=a.contentWidth,this._contentHeight=a.height,this._fontInfo=o.get(50),this._lineHeight=o.get(66),this._emptySelectionClipboard=o.get(37),this._copyWithSyntaxHighlighting=o.get(25),this._visibleTextArea=null,this._selections=[new Ze(1,1,1,1)],this._modelSelections=[new Ze(1,1,1,1)],this._lastRenderPosition=null,this.textArea=fi(document.createElement("textarea")),pd.write(this.textArea,6),this.textArea.setClassName(`inputarea ${kb}`),this.textArea.setAttribute("wrap",this._textAreaWrapping&&!this._visibleTextArea?"on":"off");const{tabSize:l}=this._context.viewModel.model.getOptions();this.textArea.domNode.style.tabSize=`${l*this._fontInfo.spaceWidth}px`,this.textArea.setAttribute("autocorrect","off"),this.textArea.setAttribute("autocapitalize","off"),this.textArea.setAttribute("autocomplete","off"),this.textArea.setAttribute("spellcheck","false"),this.textArea.setAttribute("aria-label",this._getAriaLabel(o)),this.textArea.setAttribute("aria-required",o.get(5)?"true":"false"),this.textArea.setAttribute("tabindex",String(o.get(123))),this.textArea.setAttribute("role","textbox"),this.textArea.setAttribute("aria-roledescription",v("editor","editor")),this.textArea.setAttribute("aria-multiline","true"),this.textArea.setAttribute("aria-autocomplete",o.get(90)?"none":"both"),this._ensureReadOnlyAttribute(),this.textAreaCover=fi(document.createElement("div")),this.textAreaCover.setPosition("absolute");const c={getLineCount:()=>this._context.viewModel.getLineCount(),getLineMaxColumn:d=>this._context.viewModel.getLineMaxColumn(d),getValueInRange:(d,f)=>this._context.viewModel.getValueInRange(d,f),getValueLengthInRange:(d,f)=>this._context.viewModel.getValueLengthInRange(d,f),modifyPosition:(d,f)=>this._context.viewModel.modifyPosition(d,f)},u={getDataToCopy:()=>{const d=this._context.viewModel.getPlainTextToCopy(this._modelSelections,this._emptySelectionClipboard,yr),f=this._context.viewModel.model.getEOL(),g=this._emptySelectionClipboard&&this._modelSelections.length===1&&this._modelSelections[0].isEmpty(),p=Array.isArray(d)?d:null,m=Array.isArray(d)?d.join(f):d;let _,b=null;if(b9.forceCopyWithSyntaxHighlighting||this._copyWithSyntaxHighlighting&&m.length<65536){const y=this._context.viewModel.getRichTextToCopy(this._modelSelections,this._emptySelectionClipboard);y&&(_=y.html,b=y.mode)}return{isFromEmptySelection:g,multicursorText:p,text:m,html:_,mode:b}},getScreenReaderContent:()=>{if(this._accessibilitySupport===1){const d=this._selections[0];if(Gt&&d.isEmpty()){const g=d.getStartPosition();let p=this._getWordBeforePosition(g);if(p.length===0&&(p=this._getCharacterBeforePosition(g)),p.length>0)return new Zs(p,p.length,p.length,M.fromPositions(g),0)}const f=500;if(Gt&&!d.isEmpty()&&c.getValueLengthInRange(d,0)<f){const g=c.getValueInRange(d,0);return new Zs(g,0,g.length,d,0)}if(Gf&&!d.isEmpty()){const g="vscode-placeholder";return new Zs(g,0,g.length,null,void 0)}return Zs.EMPTY}if(rJ){const d=this._selections[0];if(d.isEmpty()){const f=d.getStartPosition(),[g,p]=this._getAndroidWordAtPosition(f);if(g.length>0)return new Zs(g,p,p,M.fromPositions(f),0)}return Zs.EMPTY}return j0.fromEditorSelection(c,this._selections[0],this._accessibilityPageSize,this._accessibilitySupport===0)},deduceModelPosition:(d,f,g)=>this._context.viewModel.deduceModelPositionRelativeToViewPosition(d,f,g)},h=this._register(new K$e(this.textArea.domNode));this._textAreaInput=this._register(this._instantiationService.createInstance(y9,u,h,Ha,{isAndroid:rJ,isChrome:Ij,isFirefox:Ol,isSafari:Gf})),this._register(this._textAreaInput.onKeyDown(d=>{this._viewController.emitKeyDown(d)})),this._register(this._textAreaInput.onKeyUp(d=>{this._viewController.emitKeyUp(d)})),this._register(this._textAreaInput.onPaste(d=>{let f=!1,g=null,p=null;d.metadata&&(f=this._emptySelectionClipboard&&!!d.metadata.isFromEmptySelection,g=typeof d.metadata.multicursorText<"u"?d.metadata.multicursorText:null,p=d.metadata.mode),this._viewController.paste(d.text,f,g,p)})),this._register(this._textAreaInput.onCut(()=>{this._viewController.cut()})),this._register(this._textAreaInput.onType(d=>{d.replacePrevCharCnt||d.replaceNextCharCnt||d.positionDelta?this._viewController.compositionType(d.text,d.replacePrevCharCnt,d.replaceNextCharCnt,d.positionDelta):this._viewController.type(d.text)})),this._register(this._textAreaInput.onSelectionChangeRequest(d=>{this._viewController.setSelection(d)})),this._register(this._textAreaInput.onCompositionStart(d=>{const f=this.textArea.domNode,g=this._modelSelections[0],{distanceToModelLineStart:p,widthOfHiddenTextBefore:m}=(()=>{const b=f.value.substring(0,Math.min(f.selectionStart,f.selectionEnd)),y=b.lastIndexOf(` +`),w=b.substring(y+1),S=w.lastIndexOf(" "),E=w.length-S-1,L=g.getStartPosition(),k=Math.min(L.column-1,E),x=L.column-1-k,I=w.substring(0,w.length-k),{tabSize:N}=this._context.viewModel.model.getOptions(),T=Vze(this.textArea.domNode.ownerDocument,I,this._fontInfo,N);return{distanceToModelLineStart:x,widthOfHiddenTextBefore:T}})(),{distanceToModelLineEnd:_}=(()=>{const b=f.value.substring(Math.max(f.selectionStart,f.selectionEnd)),y=b.indexOf(` +`),w=y===-1?b:b.substring(0,y),S=w.indexOf(" "),E=S===-1?w.length:w.length-S-1,L=g.getEndPosition(),k=Math.min(this._context.viewModel.model.getLineMaxColumn(L.lineNumber)-L.column,E);return{distanceToModelLineEnd:this._context.viewModel.model.getLineMaxColumn(L.lineNumber)-L.column-k}})();this._context.viewModel.revealRange("keyboard",!0,M.fromPositions(this._selections[0].getStartPosition()),0,1),this._visibleTextArea=new Wze(this._context,g.startLineNumber,p,m,_),this.textArea.setAttribute("wrap",this._textAreaWrapping&&!this._visibleTextArea?"on":"off"),this._visibleTextArea.prepareRender(this._visibleRangeProvider),this._render(),this.textArea.setClassName(`inputarea ${kb} ime-input`),this._viewController.compositionStart(),this._context.viewModel.onCompositionStart()})),this._register(this._textAreaInput.onCompositionUpdate(d=>{this._visibleTextArea&&(this._visibleTextArea.prepareRender(this._visibleRangeProvider),this._render())})),this._register(this._textAreaInput.onCompositionEnd(()=>{this._visibleTextArea=null,this.textArea.setAttribute("wrap",this._textAreaWrapping&&!this._visibleTextArea?"on":"off"),this._render(),this.textArea.setClassName(`inputarea ${kb}`),this._viewController.compositionEnd(),this._context.viewModel.onCompositionEnd()})),this._register(this._textAreaInput.onFocus(()=>{this._context.viewModel.setHasFocus(!0)})),this._register(this._textAreaInput.onBlur(()=>{this._context.viewModel.setHasFocus(!1)})),this._register(ek.onDidChange(()=>{this._ensureReadOnlyAttribute()}))}writeScreenReaderContent(e){this._textAreaInput.writeNativeTextAreaContent(e)}dispose(){super.dispose()}_getAndroidWordAtPosition(e){const t='`~!@#$%^&*()-=+[{]}\\|;:",.<>/?',i=this._context.viewModel.getLineContent(e.lineNumber),s=Bl(t);let r=!0,o=e.column,a=!0,l=e.column,c=0;for(;c<50&&(r||a);){if(r&&o<=1&&(r=!1),r){const u=i.charCodeAt(o-2);s.get(u)!==0?r=!1:o--}if(a&&l>i.length&&(a=!1),a){const u=i.charCodeAt(l-1);s.get(u)!==0?a=!1:l++}c++}return[i.substring(o-1,l-1),e.column-o]}_getWordBeforePosition(e){const t=this._context.viewModel.getLineContent(e.lineNumber),i=Bl(this._context.configuration.options.get(129));let s=e.column,r=0;for(;s>1;){const o=t.charCodeAt(s-2);if(i.get(o)!==0||r>50)return t.substring(s-1,e.column-1);r++,s--}return t.substring(0,e.column-1)}_getCharacterBeforePosition(e){if(e.column>1){const i=this._context.viewModel.getLineContent(e.lineNumber).charAt(e.column-2);if(!As(i.charCodeAt(0)))return i}return""}_getAriaLabel(e){var t,i,s;if(e.get(2)===1){const o=(t=this._keybindingService.lookupKeybinding("editor.action.toggleScreenReaderAccessibilityMode"))===null||t===void 0?void 0:t.getAriaLabel(),a=(i=this._keybindingService.lookupKeybinding("workbench.action.showCommands"))===null||i===void 0?void 0:i.getAriaLabel(),l=(s=this._keybindingService.lookupKeybinding("workbench.action.openGlobalKeybindings"))===null||s===void 0?void 0:s.getAriaLabel(),c=v("accessibilityModeOff","The editor is not accessible at this time.");return o?v("accessibilityOffAriaLabel","{0} To enable screen reader optimized mode, use {1}",c,o):a?v("accessibilityOffAriaLabelNoKb","{0} To enable screen reader optimized mode, open the quick pick with {1} and run the command Toggle Screen Reader Accessibility Mode, which is currently not triggerable via keyboard.",c,a):l?v("accessibilityOffAriaLabelNoKbs","{0} Please assign a keybinding for the command Toggle Screen Reader Accessibility Mode by accessing the keybindings editor with {1} and run it.",c,l):c}return e.get(4)}_setAccessibilityOptions(e){this._accessibilitySupport=e.get(2);const t=e.get(3);this._accessibilitySupport===2&&t===zu.accessibilityPageSize.defaultValue?this._accessibilityPageSize=500:this._accessibilityPageSize=t;const s=e.get(143).wrappingColumn;if(s!==-1&&this._accessibilitySupport!==1){const r=e.get(50);this._textAreaWrapping=!0,this._textAreaWidth=Math.round(s*r.typicalHalfwidthCharacterWidth)}else this._textAreaWrapping=!1,this._textAreaWidth=V5?0:1}onConfigurationChanged(e){const t=this._context.configuration.options,i=t.get(143);this._setAccessibilityOptions(t),this._contentLeft=i.contentLeft,this._contentWidth=i.contentWidth,this._contentHeight=i.height,this._fontInfo=t.get(50),this._lineHeight=t.get(66),this._emptySelectionClipboard=t.get(37),this._copyWithSyntaxHighlighting=t.get(25),this.textArea.setAttribute("wrap",this._textAreaWrapping&&!this._visibleTextArea?"on":"off");const{tabSize:s}=this._context.viewModel.model.getOptions();return this.textArea.domNode.style.tabSize=`${s*this._fontInfo.spaceWidth}px`,this.textArea.setAttribute("aria-label",this._getAriaLabel(t)),this.textArea.setAttribute("aria-required",t.get(5)?"true":"false"),this.textArea.setAttribute("tabindex",String(t.get(123))),(e.hasChanged(34)||e.hasChanged(90))&&this._ensureReadOnlyAttribute(),e.hasChanged(2)&&this._textAreaInput.writeNativeTextAreaContent("strategy changed"),!0}onCursorStateChanged(e){return this._selections=e.selections.slice(0),this._modelSelections=e.modelSelections.slice(0),this._textAreaInput.writeNativeTextAreaContent("selection changed"),!0}onDecorationsChanged(e){return!0}onFlushed(e){return!0}onLinesChanged(e){return!0}onLinesDeleted(e){return!0}onLinesInserted(e){return!0}onScrollChanged(e){return this._scrollLeft=e.scrollLeft,this._scrollTop=e.scrollTop,!0}onZonesChanged(e){return!0}isFocused(){return this._textAreaInput.isFocused()}focusTextArea(){this._textAreaInput.focusTextArea()}getLastRenderData(){return this._lastRenderPosition}setAriaOptions(e){e.activeDescendant?(this.textArea.setAttribute("aria-haspopup","true"),this.textArea.setAttribute("aria-autocomplete","list"),this.textArea.setAttribute("aria-activedescendant",e.activeDescendant)):(this.textArea.setAttribute("aria-haspopup","false"),this.textArea.setAttribute("aria-autocomplete","both"),this.textArea.removeAttribute("aria-activedescendant")),e.role&&this.textArea.setAttribute("role",e.role)}_ensureReadOnlyAttribute(){const e=this._context.configuration.options;!ek.enabled||e.get(34)&&e.get(90)?this.textArea.setAttribute("readonly","true"):this.textArea.removeAttribute("readonly")}prepareRender(e){var t;this._primaryCursorPosition=new he(this._selections[0].positionLineNumber,this._selections[0].positionColumn),this._primaryCursorVisibleRange=e.visibleRangeForPosition(this._primaryCursorPosition),(t=this._visibleTextArea)===null||t===void 0||t.prepareRender(e)}render(e){this._textAreaInput.writeNativeTextAreaContent("render"),this._render()}_render(){var e;if(this._visibleTextArea){const s=this._visibleTextArea.visibleTextareaStart,r=this._visibleTextArea.visibleTextareaEnd,o=this._visibleTextArea.startPosition,a=this._visibleTextArea.endPosition;if(o&&a&&s&&r&&r.left>=this._scrollLeft&&s.left<=this._scrollLeft+this._contentWidth){const l=this._context.viewLayout.getVerticalOffsetForLineNumber(this._primaryCursorPosition.lineNumber)-this._scrollTop,c=this._newlinecount(this.textArea.domNode.value.substr(0,this.textArea.domNode.selectionStart));let u=this._visibleTextArea.widthOfHiddenLineTextBefore,h=this._contentLeft+s.left-this._scrollLeft,d=r.left-s.left+1;if(h<this._contentLeft){const b=this._contentLeft-h;h+=b,u+=b,d-=b}d>this._contentWidth&&(d=this._contentWidth);const f=this._context.viewModel.getViewLineData(o.lineNumber),g=f.tokens.findTokenIndexAtOffset(o.column-1),p=f.tokens.findTokenIndexAtOffset(a.column-1),m=g===p,_=this._visibleTextArea.definePresentation(m?f.tokens.getPresentation(g):null);this.textArea.domNode.scrollTop=c*this._lineHeight,this.textArea.domNode.scrollLeft=u,this._doRender({lastRenderPosition:null,top:l,left:h,width:d,height:this._lineHeight,useCover:!1,color:(kn.getColorMap()||[])[_.foreground],italic:_.italic,bold:_.bold,underline:_.underline,strikethrough:_.strikethrough})}return}if(!this._primaryCursorVisibleRange){this._renderAtTopLeft();return}const t=this._contentLeft+this._primaryCursorVisibleRange.left-this._scrollLeft;if(t<this._contentLeft||t>this._contentLeft+this._contentWidth){this._renderAtTopLeft();return}const i=this._context.viewLayout.getVerticalOffsetForLineNumber(this._selections[0].positionLineNumber)-this._scrollTop;if(i<0||i>this._contentHeight){this._renderAtTopLeft();return}if(Gt||this._accessibilitySupport===2){this._doRender({lastRenderPosition:this._primaryCursorPosition,top:i,left:this._textAreaWrapping?this._contentLeft:t,width:this._textAreaWidth,height:this._lineHeight,useCover:!1}),this.textArea.domNode.scrollLeft=this._primaryCursorVisibleRange.left;const s=(e=this._textAreaInput.textAreaState.newlineCountBeforeSelection)!==null&&e!==void 0?e:this._newlinecount(this.textArea.domNode.value.substr(0,this.textArea.domNode.selectionStart));this.textArea.domNode.scrollTop=s*this._lineHeight;return}this._doRender({lastRenderPosition:this._primaryCursorPosition,top:i,left:this._textAreaWrapping?this._contentLeft:t,width:this._textAreaWidth,height:V5?0:1,useCover:!1})}_newlinecount(e){let t=0,i=-1;do{if(i=e.indexOf(` +`,i+1),i===-1)break;t++}while(!0);return t}_renderAtTopLeft(){this._doRender({lastRenderPosition:null,top:0,left:0,width:this._textAreaWidth,height:V5?0:1,useCover:!0})}_doRender(e){this._lastRenderPosition=e.lastRenderPosition;const t=this.textArea,i=this.textAreaCover;_r(t,this._fontInfo),t.setTop(e.top),t.setLeft(e.left),t.setWidth(e.width),t.setHeight(e.height),t.setColor(e.color?me.Format.CSS.formatHex(e.color):""),t.setFontStyle(e.italic?"italic":""),e.bold&&t.setFontWeight("bold"),t.setTextDecoration(`${e.underline?" underline":""}${e.strikethrough?" line-through":""}`),i.setTop(e.useCover?e.top:0),i.setLeft(e.useCover?e.left:0),i.setWidth(e.useCover?e.width:0),i.setHeight(e.useCover?e.height:0);const s=this._context.configuration.options;s.get(57)?i.setClassName("monaco-editor-background textAreaCover "+O_.OUTER_CLASS_NAME):s.get(67).renderType!==0?i.setClassName("monaco-editor-background textAreaCover "+kE.CLASS_NAME):i.setClassName("monaco-editor-background textAreaCover")}};k9=Bze([bee(3,Di),bee(4,at)],k9);function Vze(n,e,t,i){if(e.length===0)return 0;const s=n.createElement("div");s.style.position="absolute",s.style.top="-50000px",s.style.width="50000px";const r=n.createElement("span");_r(r,t),r.style.whiteSpace="pre",r.style.tabSize=`${i*t.spaceWidth}px`,r.append(e),s.appendChild(r),n.body.appendChild(s);const o=r.offsetWidth;return n.body.removeChild(s),o}class Hze{constructor(e,t,i,s){this.configuration=e,this.viewModel=t,this.userInputEvents=i,this.commandDelegate=s}paste(e,t,i,s){this.commandDelegate.paste(e,t,i,s)}type(e){this.commandDelegate.type(e)}compositionType(e,t,i,s){this.commandDelegate.compositionType(e,t,i,s)}compositionStart(){this.commandDelegate.startComposition()}compositionEnd(){this.commandDelegate.endComposition()}cut(){this.commandDelegate.cut()}setSelection(e){Fs.SetSelection.runCoreEditorCommand(this.viewModel,{source:"keyboard",selection:e})}_validateViewColumn(e){const t=this.viewModel.getLineMinColumn(e.lineNumber);return e.column<t?new he(e.lineNumber,t):e}_hasMulticursorModifier(e){switch(this.configuration.options.get(77)){case"altKey":return e.altKey;case"ctrlKey":return e.ctrlKey;case"metaKey":return e.metaKey;default:return!1}}_hasNonMulticursorModifier(e){switch(this.configuration.options.get(77)){case"altKey":return e.ctrlKey||e.metaKey;case"ctrlKey":return e.altKey||e.metaKey;case"metaKey":return e.ctrlKey||e.altKey;default:return!1}}dispatchMouse(e){const t=this.configuration.options,i=Kr&&t.get(106),s=t.get(22);e.middleButton&&!i?this._columnSelect(e.position,e.mouseColumn,e.inSelectionMode):e.startedOnLineNumbers?this._hasMulticursorModifier(e)?e.inSelectionMode?this._lastCursorLineSelect(e.position,e.revealType):this._createCursor(e.position,!0):e.inSelectionMode?this._lineSelectDrag(e.position,e.revealType):this._lineSelect(e.position,e.revealType):e.mouseDownCount>=4?this._selectAll():e.mouseDownCount===3?this._hasMulticursorModifier(e)?e.inSelectionMode?this._lastCursorLineSelectDrag(e.position,e.revealType):this._lastCursorLineSelect(e.position,e.revealType):e.inSelectionMode?this._lineSelectDrag(e.position,e.revealType):this._lineSelect(e.position,e.revealType):e.mouseDownCount===2?e.onInjectedText||(this._hasMulticursorModifier(e)?this._lastCursorWordSelect(e.position,e.revealType):e.inSelectionMode?this._wordSelectDrag(e.position,e.revealType):this._wordSelect(e.position,e.revealType)):this._hasMulticursorModifier(e)?this._hasNonMulticursorModifier(e)||(e.shiftKey?this._columnSelect(e.position,e.mouseColumn,!0):e.inSelectionMode?this._lastCursorMoveToSelect(e.position,e.revealType):this._createCursor(e.position,!1)):e.inSelectionMode?e.altKey?this._columnSelect(e.position,e.mouseColumn,!0):s?this._columnSelect(e.position,e.mouseColumn,!0):this._moveToSelect(e.position,e.revealType):this.moveTo(e.position,e.revealType)}_usualArgs(e,t){return e=this._validateViewColumn(e),{source:"mouse",position:this._convertViewToModelPosition(e),viewPosition:e,revealType:t}}moveTo(e,t){Fs.MoveTo.runCoreEditorCommand(this.viewModel,this._usualArgs(e,t))}_moveToSelect(e,t){Fs.MoveToSelect.runCoreEditorCommand(this.viewModel,this._usualArgs(e,t))}_columnSelect(e,t,i){e=this._validateViewColumn(e),Fs.ColumnSelect.runCoreEditorCommand(this.viewModel,{source:"mouse",position:this._convertViewToModelPosition(e),viewPosition:e,mouseColumn:t,doColumnSelect:i})}_createCursor(e,t){e=this._validateViewColumn(e),Fs.CreateCursor.runCoreEditorCommand(this.viewModel,{source:"mouse",position:this._convertViewToModelPosition(e),viewPosition:e,wholeLine:t})}_lastCursorMoveToSelect(e,t){Fs.LastCursorMoveToSelect.runCoreEditorCommand(this.viewModel,this._usualArgs(e,t))}_wordSelect(e,t){Fs.WordSelect.runCoreEditorCommand(this.viewModel,this._usualArgs(e,t))}_wordSelectDrag(e,t){Fs.WordSelectDrag.runCoreEditorCommand(this.viewModel,this._usualArgs(e,t))}_lastCursorWordSelect(e,t){Fs.LastCursorWordSelect.runCoreEditorCommand(this.viewModel,this._usualArgs(e,t))}_lineSelect(e,t){Fs.LineSelect.runCoreEditorCommand(this.viewModel,this._usualArgs(e,t))}_lineSelectDrag(e,t){Fs.LineSelectDrag.runCoreEditorCommand(this.viewModel,this._usualArgs(e,t))}_lastCursorLineSelect(e,t){Fs.LastCursorLineSelect.runCoreEditorCommand(this.viewModel,this._usualArgs(e,t))}_lastCursorLineSelectDrag(e,t){Fs.LastCursorLineSelectDrag.runCoreEditorCommand(this.viewModel,this._usualArgs(e,t))}_selectAll(){Fs.SelectAll.runCoreEditorCommand(this.viewModel,{source:"mouse"})}_convertViewToModelPosition(e){return this.viewModel.coordinatesConverter.convertViewPositionToModelPosition(e)}emitKeyDown(e){this.userInputEvents.emitKeyDown(e)}emitKeyUp(e){this.userInputEvents.emitKeyUp(e)}emitContextMenu(e){this.userInputEvents.emitContextMenu(e)}emitMouseMove(e){this.userInputEvents.emitMouseMove(e)}emitMouseLeave(e){this.userInputEvents.emitMouseLeave(e)}emitMouseUp(e){this.userInputEvents.emitMouseUp(e)}emitMouseDown(e){this.userInputEvents.emitMouseDown(e)}emitMouseDrag(e){this.userInputEvents.emitMouseDrag(e)}emitMouseDrop(e){this.userInputEvents.emitMouseDrop(e)}emitMouseDropCanceled(){this.userInputEvents.emitMouseDropCanceled()}emitMouseWheel(e){this.userInputEvents.emitMouseWheel(e)}}class UO{constructor(e){this.onKeyDown=null,this.onKeyUp=null,this.onContextMenu=null,this.onMouseMove=null,this.onMouseLeave=null,this.onMouseDown=null,this.onMouseUp=null,this.onMouseDrag=null,this.onMouseDrop=null,this.onMouseDropCanceled=null,this.onMouseWheel=null,this._coordinatesConverter=e}emitKeyDown(e){var t;(t=this.onKeyDown)===null||t===void 0||t.call(this,e)}emitKeyUp(e){var t;(t=this.onKeyUp)===null||t===void 0||t.call(this,e)}emitContextMenu(e){var t;(t=this.onContextMenu)===null||t===void 0||t.call(this,this._convertViewToModelMouseEvent(e))}emitMouseMove(e){var t;(t=this.onMouseMove)===null||t===void 0||t.call(this,this._convertViewToModelMouseEvent(e))}emitMouseLeave(e){var t;(t=this.onMouseLeave)===null||t===void 0||t.call(this,this._convertViewToModelMouseEvent(e))}emitMouseDown(e){var t;(t=this.onMouseDown)===null||t===void 0||t.call(this,this._convertViewToModelMouseEvent(e))}emitMouseUp(e){var t;(t=this.onMouseUp)===null||t===void 0||t.call(this,this._convertViewToModelMouseEvent(e))}emitMouseDrag(e){var t;(t=this.onMouseDrag)===null||t===void 0||t.call(this,this._convertViewToModelMouseEvent(e))}emitMouseDrop(e){var t;(t=this.onMouseDrop)===null||t===void 0||t.call(this,this._convertViewToModelMouseEvent(e))}emitMouseDropCanceled(){var e;(e=this.onMouseDropCanceled)===null||e===void 0||e.call(this)}emitMouseWheel(e){var t;(t=this.onMouseWheel)===null||t===void 0||t.call(this,e)}_convertViewToModelMouseEvent(e){return e.target?{event:e.event,target:this._convertViewToModelMouseTarget(e.target)}:e}_convertViewToModelMouseTarget(e){return UO.convertViewToModelMouseTarget(e,this._coordinatesConverter)}static convertViewToModelMouseTarget(e,t){const i={...e};return i.position&&(i.position=t.convertViewPositionToModelPosition(i.position)),i.range&&(i.range=t.convertViewRangeToModelRange(i.range)),(i.type===5||i.type===8)&&(i.detail=this.convertViewToModelViewZoneData(i.detail,t)),i}static convertViewToModelViewZoneData(e,t){return{viewZoneId:e.viewZoneId,positionBefore:e.positionBefore?t.convertViewPositionToModelPosition(e.positionBefore):e.positionBefore,positionAfter:e.positionAfter?t.convertViewPositionToModelPosition(e.positionAfter):e.positionAfter,position:t.convertViewPositionToModelPosition(e.position),afterLineNumber:t.convertViewPositionToModelPosition(new he(e.afterLineNumber,1)).lineNumber}}}function sg(n,e){var t;const i=globalThis.MonacoEnvironment;if(i!=null&&i.createTrustedTypesPolicy)try{return i.createTrustedTypesPolicy(n,e)}catch(s){vt(s);return}try{return(t=mn.trustedTypes)===null||t===void 0?void 0:t.createPolicy(n,e)}catch(s){vt(s);return}}class jpe{constructor(e){this._createLine=e,this._set(1,[])}flush(){this._set(1,[])}_set(e,t){this._lines=t,this._rendLineNumberStart=e}_get(){return{rendLineNumberStart:this._rendLineNumberStart,lines:this._lines}}getStartLineNumber(){return this._rendLineNumberStart}getEndLineNumber(){return this._rendLineNumberStart+this._lines.length-1}getCount(){return this._lines.length}getLine(e){const t=e-this._rendLineNumberStart;if(t<0||t>=this._lines.length)throw new an("Illegal value for lineNumber");return this._lines[t]}onLinesDeleted(e,t){if(this.getCount()===0)return null;const i=this.getStartLineNumber(),s=this.getEndLineNumber();if(t<i){const l=t-e+1;return this._rendLineNumberStart-=l,null}if(e>s)return null;let r=0,o=0;for(let l=i;l<=s;l++){const c=l-this._rendLineNumberStart;e<=l&&l<=t&&(o===0?(r=c,o=1):o++)}if(e<i){let l=0;t<i?l=t-e+1:l=i-e,this._rendLineNumberStart-=l}return this._lines.splice(r,o)}onLinesChanged(e,t){const i=e+t-1;if(this.getCount()===0)return!1;const s=this.getStartLineNumber(),r=this.getEndLineNumber();let o=!1;for(let a=e;a<=i;a++)a>=s&&a<=r&&(this._lines[a-this._rendLineNumberStart].onContentChanged(),o=!0);return o}onLinesInserted(e,t){if(this.getCount()===0)return null;const i=t-e+1,s=this.getStartLineNumber(),r=this.getEndLineNumber();if(e<=s)return this._rendLineNumberStart+=i,null;if(e>r)return null;if(i+e>r)return this._lines.splice(e-this._rendLineNumberStart,r-e+1);const o=[];for(let h=0;h<i;h++)o[h]=this._createLine();const a=e-this._rendLineNumberStart,l=this._lines.slice(0,a),c=this._lines.slice(a,this._lines.length-i),u=this._lines.slice(this._lines.length-i,this._lines.length);return this._lines=l.concat(o).concat(c),u}onTokensChanged(e){if(this.getCount()===0)return!1;const t=this.getStartLineNumber(),i=this.getEndLineNumber();let s=!1;for(let r=0,o=e.length;r<o;r++){const a=e[r];if(a.toLineNumber<t||a.fromLineNumber>i)continue;const l=Math.max(t,a.fromLineNumber),c=Math.min(i,a.toLineNumber);for(let u=l;u<=c;u++){const h=u-this._rendLineNumberStart;this._lines[h].onTokensChanged(),s=!0}}return s}}class qpe{constructor(e){this._host=e,this.domNode=this._createDomNode(),this._linesCollection=new jpe(()=>this._host.createVisibleLine())}_createDomNode(){const e=fi(document.createElement("div"));return e.setClassName("view-layer"),e.setPosition("absolute"),e.domNode.setAttribute("role","presentation"),e.domNode.setAttribute("aria-hidden","true"),e}onConfigurationChanged(e){return!!e.hasChanged(143)}onFlushed(e){return this._linesCollection.flush(),!0}onLinesChanged(e){return this._linesCollection.onLinesChanged(e.fromLineNumber,e.count)}onLinesDeleted(e){const t=this._linesCollection.onLinesDeleted(e.fromLineNumber,e.toLineNumber);if(t)for(let i=0,s=t.length;i<s;i++){const r=t[i].getDomNode();r&&this.domNode.domNode.removeChild(r)}return!0}onLinesInserted(e){const t=this._linesCollection.onLinesInserted(e.fromLineNumber,e.toLineNumber);if(t)for(let i=0,s=t.length;i<s;i++){const r=t[i].getDomNode();r&&this.domNode.domNode.removeChild(r)}return!0}onScrollChanged(e){return e.scrollTopChanged}onTokensChanged(e){return this._linesCollection.onTokensChanged(e.ranges)}onZonesChanged(e){return!0}getStartLineNumber(){return this._linesCollection.getStartLineNumber()}getEndLineNumber(){return this._linesCollection.getEndLineNumber()}getVisibleLine(e){return this._linesCollection.getLine(e)}renderLines(e){const t=this._linesCollection._get(),i=new df(this.domNode.domNode,this._host,e),s={rendLineNumberStart:t.rendLineNumberStart,lines:t.lines,linesLength:t.lines.length},r=i.render(s,e.startLineNumber,e.endLineNumber,e.relativeVerticalOffset);this._linesCollection._set(r.rendLineNumberStart,r.lines)}}class df{constructor(e,t,i){this.domNode=e,this.host=t,this.viewportData=i}render(e,t,i,s){const r={rendLineNumberStart:e.rendLineNumberStart,lines:e.lines.slice(0),linesLength:e.linesLength};if(r.rendLineNumberStart+r.linesLength-1<t||i<r.rendLineNumberStart){r.rendLineNumberStart=t,r.linesLength=i-t+1,r.lines=[];for(let o=t;o<=i;o++)r.lines[o-t]=this.host.createVisibleLine();return this._finishRendering(r,!0,s),r}if(this._renderUntouchedLines(r,Math.max(t-r.rendLineNumberStart,0),Math.min(i-r.rendLineNumberStart,r.linesLength-1),s,t),r.rendLineNumberStart>t){const o=t,a=Math.min(i,r.rendLineNumberStart-1);o<=a&&(this._insertLinesBefore(r,o,a,s,t),r.linesLength+=a-o+1)}else if(r.rendLineNumberStart<t){const o=Math.min(r.linesLength,t-r.rendLineNumberStart);o>0&&(this._removeLinesBefore(r,o),r.linesLength-=o)}if(r.rendLineNumberStart=t,r.rendLineNumberStart+r.linesLength-1<i){const o=r.rendLineNumberStart+r.linesLength,a=i;o<=a&&(this._insertLinesAfter(r,o,a,s,t),r.linesLength+=a-o+1)}else if(r.rendLineNumberStart+r.linesLength-1>i){const o=Math.max(0,i-r.rendLineNumberStart+1),l=r.linesLength-1-o+1;l>0&&(this._removeLinesAfter(r,l),r.linesLength-=l)}return this._finishRendering(r,!1,s),r}_renderUntouchedLines(e,t,i,s,r){const o=e.rendLineNumberStart,a=e.lines;for(let l=t;l<=i;l++){const c=o+l;a[l].layoutLine(c,s[c-r])}}_insertLinesBefore(e,t,i,s,r){const o=[];let a=0;for(let l=t;l<=i;l++)o[a++]=this.host.createVisibleLine();e.lines=o.concat(e.lines)}_removeLinesBefore(e,t){for(let i=0;i<t;i++){const s=e.lines[i].getDomNode();s&&this.domNode.removeChild(s)}e.lines.splice(0,t)}_insertLinesAfter(e,t,i,s,r){const o=[];let a=0;for(let l=t;l<=i;l++)o[a++]=this.host.createVisibleLine();e.lines=e.lines.concat(o)}_removeLinesAfter(e,t){const i=e.linesLength-t;for(let s=0;s<t;s++){const r=e.lines[i+s].getDomNode();r&&this.domNode.removeChild(r)}e.lines.splice(i,t)}_finishRenderingNewLines(e,t,i,s){df._ttPolicy&&(i=df._ttPolicy.createHTML(i));const r=this.domNode.lastChild;t||!r?this.domNode.innerHTML=i:r.insertAdjacentHTML("afterend",i);let o=this.domNode.lastChild;for(let a=e.linesLength-1;a>=0;a--){const l=e.lines[a];s[a]&&(l.setDomNode(o),o=o.previousSibling)}}_finishRenderingInvalidLines(e,t,i){const s=document.createElement("div");df._ttPolicy&&(t=df._ttPolicy.createHTML(t)),s.innerHTML=t;for(let r=0;r<e.linesLength;r++){const o=e.lines[r];if(i[r]){const a=s.firstChild,l=o.getDomNode();l.parentNode.replaceChild(a,l),o.setDomNode(a)}}}_finishRendering(e,t,i){const s=df._sb,r=e.linesLength,o=e.lines,a=e.rendLineNumberStart,l=[];{s.reset();let c=!1;for(let u=0;u<r;u++){const h=o[u];l[u]=!1,!(h.getDomNode()||!h.renderLine(u+a,i[u],this.viewportData,s))&&(l[u]=!0,c=!0)}c&&this._finishRenderingNewLines(e,t,s.build(),l)}{s.reset();let c=!1;const u=[];for(let h=0;h<r;h++){const d=o[h];u[h]=!1,!(l[h]||!d.renderLine(h+a,i[h],this.viewportData,s))&&(u[h]=!0,c=!0)}c&&this._finishRenderingInvalidLines(e,s.build(),u)}}}df._ttPolicy=sg("editorViewLayer",{createHTML:n=>n});df._sb=new IC(1e5);class Kpe extends ma{constructor(e){super(e),this._visibleLines=new qpe(this),this.domNode=this._visibleLines.domNode;const i=this._context.configuration.options.get(50);_r(this.domNode,i),this._dynamicOverlays=[],this._isFocused=!1,this.domNode.setClassName("view-overlays")}shouldRender(){if(super.shouldRender())return!0;for(let e=0,t=this._dynamicOverlays.length;e<t;e++)if(this._dynamicOverlays[e].shouldRender())return!0;return!1}dispose(){super.dispose();for(let e=0,t=this._dynamicOverlays.length;e<t;e++)this._dynamicOverlays[e].dispose();this._dynamicOverlays=[]}getDomNode(){return this.domNode}createVisibleLine(){return new $ze(this._context.configuration,this._dynamicOverlays)}addDynamicOverlay(e){this._dynamicOverlays.push(e)}onConfigurationChanged(e){this._visibleLines.onConfigurationChanged(e);const t=this._visibleLines.getStartLineNumber(),i=this._visibleLines.getEndLineNumber();for(let o=t;o<=i;o++)this._visibleLines.getVisibleLine(o).onConfigurationChanged(e);const r=this._context.configuration.options.get(50);return _r(this.domNode,r),!0}onFlushed(e){return this._visibleLines.onFlushed(e)}onFocusChanged(e){return this._isFocused=e.isFocused,!0}onLinesChanged(e){return this._visibleLines.onLinesChanged(e)}onLinesDeleted(e){return this._visibleLines.onLinesDeleted(e)}onLinesInserted(e){return this._visibleLines.onLinesInserted(e)}onScrollChanged(e){return this._visibleLines.onScrollChanged(e)||!0}onTokensChanged(e){return this._visibleLines.onTokensChanged(e)}onZonesChanged(e){return this._visibleLines.onZonesChanged(e)}prepareRender(e){const t=this._dynamicOverlays.filter(i=>i.shouldRender());for(let i=0,s=t.length;i<s;i++){const r=t[i];r.prepareRender(e),r.onDidRender()}}render(e){this._viewOverlaysRender(e),this.domNode.toggleClassName("focused",this._isFocused)}_viewOverlaysRender(e){this._visibleLines.renderLines(e.viewportData)}}class $ze{constructor(e,t){this._configuration=e,this._lineHeight=this._configuration.options.get(66),this._dynamicOverlays=t,this._domNode=null,this._renderedContent=null}getDomNode(){return this._domNode?this._domNode.domNode:null}setDomNode(e){this._domNode=fi(e)}onContentChanged(){}onTokensChanged(){}onConfigurationChanged(e){this._lineHeight=this._configuration.options.get(66)}renderLine(e,t,i,s){let r="";for(let o=0,a=this._dynamicOverlays.length;o<a;o++){const l=this._dynamicOverlays[o];r+=l.render(i.startLineNumber,e)}return this._renderedContent===r?!1:(this._renderedContent=r,s.appendString('<div style="position:absolute;top:'),s.appendString(String(t)),s.appendString("px;width:100%;height:"),s.appendString(String(this._lineHeight)),s.appendString('px;">'),s.appendString(r),s.appendString("</div>"),!0)}layoutLine(e,t){this._domNode&&(this._domNode.setTop(t),this._domNode.setHeight(this._lineHeight))}}class zze extends Kpe{constructor(e){super(e);const i=this._context.configuration.options.get(143);this._contentWidth=i.contentWidth,this.domNode.setHeight(0)}onConfigurationChanged(e){const i=this._context.configuration.options.get(143);return this._contentWidth=i.contentWidth,super.onConfigurationChanged(e)||!0}onScrollChanged(e){return super.onScrollChanged(e)||e.scrollWidthChanged}_viewOverlaysRender(e){super._viewOverlaysRender(e),this.domNode.setWidth(Math.max(e.scrollWidth,this._contentWidth))}}class Uze extends Kpe{constructor(e){super(e);const t=this._context.configuration.options,i=t.get(143);this._contentLeft=i.contentLeft,this.domNode.setClassName("margin-view-overlays"),this.domNode.setWidth(1),_r(this.domNode,t.get(50))}onConfigurationChanged(e){const t=this._context.configuration.options;_r(this.domNode,t.get(50));const i=t.get(143);return this._contentLeft=i.contentLeft,super.onConfigurationChanged(e)||!0}onScrollChanged(e){return super.onScrollChanged(e)||e.scrollHeightChanged}_viewOverlaysRender(e){super._viewOverlaysRender(e);const t=Math.min(e.scrollHeight,1e6);this.domNode.setHeight(t),this.domNode.setWidth(this._contentLeft)}}class jze extends ma{constructor(e,t){super(e),this._viewDomNode=t,this._widgets={},this.domNode=fi(document.createElement("div")),pd.write(this.domNode,1),this.domNode.setClassName("contentWidgets"),this.domNode.setPosition("absolute"),this.domNode.setTop(0),this.overflowingContentWidgetsDomNode=fi(document.createElement("div")),pd.write(this.overflowingContentWidgetsDomNode,2),this.overflowingContentWidgetsDomNode.setClassName("overflowingContentWidgets")}dispose(){super.dispose(),this._widgets={}}onConfigurationChanged(e){const t=Object.keys(this._widgets);for(const i of t)this._widgets[i].onConfigurationChanged(e);return!0}onDecorationsChanged(e){return!0}onFlushed(e){return!0}onLineMappingChanged(e){return this._updateAnchorsViewPositions(),!0}onLinesChanged(e){return this._updateAnchorsViewPositions(),!0}onLinesDeleted(e){return this._updateAnchorsViewPositions(),!0}onLinesInserted(e){return this._updateAnchorsViewPositions(),!0}onScrollChanged(e){return!0}onZonesChanged(e){return!0}_updateAnchorsViewPositions(){const e=Object.keys(this._widgets);for(const t of e)this._widgets[t].updateAnchorViewPosition()}addWidget(e){const t=new qze(this._context,this._viewDomNode,e);this._widgets[t.id]=t,t.allowEditorOverflow?this.overflowingContentWidgetsDomNode.appendChild(t.domNode):this.domNode.appendChild(t.domNode),this.setShouldRender()}setWidgetPosition(e,t,i,s,r){this._widgets[e.getId()].setPosition(t,i,s,r),this.setShouldRender()}removeWidget(e){const t=e.getId();if(this._widgets.hasOwnProperty(t)){const i=this._widgets[t];delete this._widgets[t];const s=i.domNode.domNode;s.parentNode.removeChild(s),s.removeAttribute("monaco-visible-content-widget"),this.setShouldRender()}}shouldSuppressMouseDownOnWidget(e){return this._widgets.hasOwnProperty(e)?this._widgets[e].suppressMouseDown:!1}onBeforeRender(e){const t=Object.keys(this._widgets);for(const i of t)this._widgets[i].onBeforeRender(e)}prepareRender(e){const t=Object.keys(this._widgets);for(const i of t)this._widgets[i].prepareRender(e)}render(e){const t=Object.keys(this._widgets);for(const i of t)this._widgets[i].render(e)}}class qze{constructor(e,t,i){this._primaryAnchor=new Ew(null,null),this._secondaryAnchor=new Ew(null,null),this._context=e,this._viewDomNode=t,this._actual=i,this.domNode=fi(this._actual.getDomNode()),this.id=this._actual.getId(),this.allowEditorOverflow=this._actual.allowEditorOverflow||!1,this.suppressMouseDown=this._actual.suppressMouseDown||!1;const s=this._context.configuration.options,r=s.get(143);this._fixedOverflowWidgets=s.get(42),this._contentWidth=r.contentWidth,this._contentLeft=r.contentLeft,this._lineHeight=s.get(66),this._affinity=null,this._preference=[],this._cachedDomNodeOffsetWidth=-1,this._cachedDomNodeOffsetHeight=-1,this._maxWidth=this._getMaxWidth(),this._isVisible=!1,this._renderData=null,this.domNode.setPosition(this._fixedOverflowWidgets&&this.allowEditorOverflow?"fixed":"absolute"),this.domNode.setDisplay("none"),this.domNode.setVisibility("hidden"),this.domNode.setAttribute("widgetId",this.id),this.domNode.setMaxWidth(this._maxWidth)}onConfigurationChanged(e){const t=this._context.configuration.options;if(this._lineHeight=t.get(66),e.hasChanged(143)){const i=t.get(143);this._contentLeft=i.contentLeft,this._contentWidth=i.contentWidth,this._maxWidth=this._getMaxWidth()}}updateAnchorViewPosition(){this._setPosition(this._affinity,this._primaryAnchor.modelPosition,this._secondaryAnchor.modelPosition)}_setPosition(e,t,i){this._affinity=e,this._primaryAnchor=s(t,this._context.viewModel,this._affinity),this._secondaryAnchor=s(i,this._context.viewModel,this._affinity);function s(r,o,a){if(!r)return new Ew(null,null);const l=o.model.validatePosition(r);if(o.coordinatesConverter.modelPositionIsVisible(l)){const c=o.coordinatesConverter.convertModelPositionToViewPosition(l,a??void 0);return new Ew(r,c)}return new Ew(r,null)}}_getMaxWidth(){const e=this.domNode.domNode.ownerDocument,t=e.defaultView;return this.allowEditorOverflow?(t==null?void 0:t.innerWidth)||e.documentElement.offsetWidth||e.body.offsetWidth:this._contentWidth}setPosition(e,t,i,s){this._setPosition(s,e,t),this._preference=i,this._primaryAnchor.viewPosition&&this._preference&&this._preference.length>0?this.domNode.setDisplay("block"):this.domNode.setDisplay("none"),this._cachedDomNodeOffsetWidth=-1,this._cachedDomNodeOffsetHeight=-1}_layoutBoxInViewport(e,t,i,s){const r=e.top,o=r,a=e.top+e.height,l=s.viewportHeight-a,c=r-i,u=o>=i,h=a,d=l>=i;let f=e.left;return f+t>s.scrollLeft+s.viewportWidth&&(f=s.scrollLeft+s.viewportWidth-t),f<s.scrollLeft&&(f=s.scrollLeft),{fitsAbove:u,aboveTop:c,fitsBelow:d,belowTop:h,left:f}}_layoutHorizontalSegmentInPage(e,t,i,s){var r;const l=Math.max(15,t.left-s),c=Math.min(t.left+t.width+s,e.width-15),h=this._viewDomNode.domNode.ownerDocument.defaultView;let d=t.left+i-((r=h==null?void 0:h.scrollX)!==null&&r!==void 0?r:0);if(d+s>c){const f=d-(c-s);d-=f,i-=f}if(d<l){const f=d-l;d-=f,i-=f}return[i,d]}_layoutBoxInPage(e,t,i,s){var r,o;const a=e.top-i,l=e.top+e.height,c=ys(this._viewDomNode.domNode),u=this._viewDomNode.domNode.ownerDocument,h=u.defaultView,d=c.top+a-((r=h==null?void 0:h.scrollY)!==null&&r!==void 0?r:0),f=c.top+l-((o=h==null?void 0:h.scrollY)!==null&&o!==void 0?o:0),g=Zp(u.body),[p,m]=this._layoutHorizontalSegmentInPage(g,c,e.left-s.scrollLeft+this._contentLeft,t),_=22,b=22,y=d>=_,w=f+i<=g.height-b;return this._fixedOverflowWidgets?{fitsAbove:y,aboveTop:Math.max(d,_),fitsBelow:w,belowTop:f,left:m}:{fitsAbove:y,aboveTop:a,fitsBelow:w,belowTop:l,left:p}}_prepareRenderWidgetAtExactPositionOverflowing(e){return new Dw(e.top,e.left+this._contentLeft)}_getAnchorsCoordinates(e){var t,i;const s=a(this._primaryAnchor.viewPosition,this._affinity,this._lineHeight),r=((t=this._secondaryAnchor.viewPosition)===null||t===void 0?void 0:t.lineNumber)===((i=this._primaryAnchor.viewPosition)===null||i===void 0?void 0:i.lineNumber)?this._secondaryAnchor.viewPosition:null,o=a(r,this._affinity,this._lineHeight);return{primary:s,secondary:o};function a(l,c,u){if(!l)return null;const h=e.visibleRangeForPosition(l);if(!h)return null;const d=l.column===1&&c===3?0:h.left,f=e.getVerticalOffsetForLineNumber(l.lineNumber)-e.scrollTop;return new yee(f,d,u)}}_reduceAnchorCoordinates(e,t,i){if(!t)return e;const s=this._context.configuration.options.get(50);let r=t.left;return r<e.left?r=Math.max(r,e.left-i+s.typicalFullwidthCharacterWidth):r=Math.min(r,e.left+i-s.typicalFullwidthCharacterWidth),new yee(e.top,r,e.height)}_prepareRenderWidget(e){if(!this._preference||this._preference.length===0)return null;const{primary:t,secondary:i}=this._getAnchorsCoordinates(e);if(!t)return null;if(this._cachedDomNodeOffsetWidth===-1||this._cachedDomNodeOffsetHeight===-1){let o=null;if(typeof this._actual.beforeRender=="function"&&(o=H5(this._actual.beforeRender,this._actual)),o)this._cachedDomNodeOffsetWidth=o.width,this._cachedDomNodeOffsetHeight=o.height;else{const l=this.domNode.domNode.getBoundingClientRect();this._cachedDomNodeOffsetWidth=Math.round(l.width),this._cachedDomNodeOffsetHeight=Math.round(l.height)}}const s=this._reduceAnchorCoordinates(t,i,this._cachedDomNodeOffsetWidth);let r;this.allowEditorOverflow?r=this._layoutBoxInPage(s,this._cachedDomNodeOffsetWidth,this._cachedDomNodeOffsetHeight,e):r=this._layoutBoxInViewport(s,this._cachedDomNodeOffsetWidth,this._cachedDomNodeOffsetHeight,e);for(let o=1;o<=2;o++)for(const a of this._preference)if(a===1){if(!r)return null;if(o===2||r.fitsAbove)return{coordinate:new Dw(r.aboveTop,r.left),position:1}}else if(a===2){if(!r)return null;if(o===2||r.fitsBelow)return{coordinate:new Dw(r.belowTop,r.left),position:2}}else return this.allowEditorOverflow?{coordinate:this._prepareRenderWidgetAtExactPositionOverflowing(new Dw(s.top,s.left)),position:0}:{coordinate:new Dw(s.top,s.left),position:0};return null}onBeforeRender(e){!this._primaryAnchor.viewPosition||!this._preference||this._primaryAnchor.viewPosition.lineNumber<e.startLineNumber||this._primaryAnchor.viewPosition.lineNumber>e.endLineNumber||this.domNode.setMaxWidth(this._maxWidth)}prepareRender(e){this._renderData=this._prepareRenderWidget(e)}render(e){if(!this._renderData){this._isVisible&&(this.domNode.removeAttribute("monaco-visible-content-widget"),this._isVisible=!1,this.domNode.setVisibility("hidden")),typeof this._actual.afterRender=="function"&&H5(this._actual.afterRender,this._actual,null);return}this.allowEditorOverflow?(this.domNode.setTop(this._renderData.coordinate.top),this.domNode.setLeft(this._renderData.coordinate.left)):(this.domNode.setTop(this._renderData.coordinate.top+e.scrollTop-e.bigNumbersDelta),this.domNode.setLeft(this._renderData.coordinate.left)),this._isVisible||(this.domNode.setVisibility("inherit"),this.domNode.setAttribute("monaco-visible-content-widget","true"),this._isVisible=!0),typeof this._actual.afterRender=="function"&&H5(this._actual.afterRender,this._actual,this._renderData.position)}}class Ew{constructor(e,t){this.modelPosition=e,this.viewPosition=t}}class Dw{constructor(e,t){this.top=e,this.left=t,this._coordinateBrand=void 0}}class yee{constructor(e,t,i){this.top=e,this.left=t,this.height=i,this._anchorCoordinateBrand=void 0}}function H5(n,e,...t){try{return n.call(e,...t)}catch{return null}}class Gpe extends Ev{constructor(e){super(),this._context=e;const t=this._context.configuration.options,i=t.get(143);this._lineHeight=t.get(66),this._renderLineHighlight=t.get(95),this._renderLineHighlightOnlyWhenFocus=t.get(96),this._contentLeft=i.contentLeft,this._contentWidth=i.contentWidth,this._selectionIsEmpty=!0,this._focused=!1,this._cursorLineNumbers=[1],this._selections=[new Ze(1,1,1,1)],this._renderData=null,this._context.addEventHandler(this)}dispose(){this._context.removeEventHandler(this),super.dispose()}_readFromSelections(){let e=!1;const t=this._selections.map(s=>s.positionLineNumber);t.sort((s,r)=>s-r),On(this._cursorLineNumbers,t)||(this._cursorLineNumbers=t,e=!0);const i=this._selections.every(s=>s.isEmpty());return this._selectionIsEmpty!==i&&(this._selectionIsEmpty=i,e=!0),e}onThemeChanged(e){return this._readFromSelections()}onConfigurationChanged(e){const t=this._context.configuration.options,i=t.get(143);return this._lineHeight=t.get(66),this._renderLineHighlight=t.get(95),this._renderLineHighlightOnlyWhenFocus=t.get(96),this._contentLeft=i.contentLeft,this._contentWidth=i.contentWidth,!0}onCursorStateChanged(e){return this._selections=e.selections,this._readFromSelections()}onFlushed(e){return!0}onLinesDeleted(e){return!0}onLinesInserted(e){return!0}onScrollChanged(e){return e.scrollWidthChanged||e.scrollTopChanged}onZonesChanged(e){return!0}onFocusChanged(e){return this._renderLineHighlightOnlyWhenFocus?(this._focused=e.isFocused,!0):!1}prepareRender(e){if(!this._shouldRenderThis()){this._renderData=null;return}const t=this._renderOne(e),i=e.visibleRange.startLineNumber,s=e.visibleRange.endLineNumber,r=this._cursorLineNumbers.length;let o=0;const a=[];for(let l=i;l<=s;l++){const c=l-i;for(;o<r&&this._cursorLineNumbers[o]<l;)o++;o<r&&this._cursorLineNumbers[o]===l?a[c]=t:a[c]=""}this._renderData=a}render(e,t){if(!this._renderData)return"";const i=t-e;return i>=this._renderData.length?"":this._renderData[i]}_shouldRenderInMargin(){return(this._renderLineHighlight==="gutter"||this._renderLineHighlight==="all")&&(!this._renderLineHighlightOnlyWhenFocus||this._focused)}_shouldRenderInContent(){return(this._renderLineHighlight==="line"||this._renderLineHighlight==="all")&&this._selectionIsEmpty&&(!this._renderLineHighlightOnlyWhenFocus||this._focused)}}class Kze extends Gpe{_renderOne(e){return`<div class="${"current-line"+(this._shouldRenderOther()?" current-line-both":"")}" style="width:${Math.max(e.scrollWidth,this._contentWidth)}px; height:${this._lineHeight}px;"></div>`}_shouldRenderThis(){return this._shouldRenderInContent()}_shouldRenderOther(){return this._shouldRenderInMargin()}}class Gze extends Gpe{_renderOne(e){return`<div class="${"current-line"+(this._shouldRenderInMargin()?" current-line-margin":"")+(this._shouldRenderOther()?" current-line-margin-both":"")}" style="width:${this._contentLeft}px; height:${this._lineHeight}px;"></div>`}_shouldRenderThis(){return!0}_shouldRenderOther(){return this._shouldRenderInContent()}}Nc((n,e)=>{const t=n.getColor(Mpe);if(t&&(e.addRule(`.monaco-editor .view-overlays .current-line { background-color: ${t}; }`),e.addRule(`.monaco-editor .margin-view-overlays .current-line-margin { background-color: ${t}; border: none; }`)),!t||t.isTransparent()||n.defines(vee)){const i=n.getColor(vee);i&&(e.addRule(`.monaco-editor .view-overlays .current-line { border: 2px solid ${i}; }`),e.addRule(`.monaco-editor .margin-view-overlays .current-line-margin { border: 2px solid ${i}; }`),ku(n.type)&&(e.addRule(".monaco-editor .view-overlays .current-line { border-width: 1px; }"),e.addRule(".monaco-editor .margin-view-overlays .current-line-margin { border-width: 1px; }")))}});class Yze extends Ev{constructor(e){super(),this._context=e;const t=this._context.configuration.options;this._lineHeight=t.get(66),this._typicalHalfwidthCharacterWidth=t.get(50).typicalHalfwidthCharacterWidth,this._renderResult=null,this._context.addEventHandler(this)}dispose(){this._context.removeEventHandler(this),this._renderResult=null,super.dispose()}onConfigurationChanged(e){const t=this._context.configuration.options;return this._lineHeight=t.get(66),this._typicalHalfwidthCharacterWidth=t.get(50).typicalHalfwidthCharacterWidth,!0}onDecorationsChanged(e){return!0}onFlushed(e){return!0}onLinesChanged(e){return!0}onLinesDeleted(e){return!0}onLinesInserted(e){return!0}onScrollChanged(e){return e.scrollTopChanged||e.scrollWidthChanged}onZonesChanged(e){return!0}prepareRender(e){const t=e.getDecorationsInViewport();let i=[],s=0;for(let l=0,c=t.length;l<c;l++){const u=t[l];u.options.className&&(i[s++]=u)}i=i.sort((l,c)=>{if(l.options.zIndex<c.options.zIndex)return-1;if(l.options.zIndex>c.options.zIndex)return 1;const u=l.options.className,h=c.options.className;return u<h?-1:u>h?1:M.compareRangesUsingStarts(l.range,c.range)});const r=e.visibleRange.startLineNumber,o=e.visibleRange.endLineNumber,a=[];for(let l=r;l<=o;l++){const c=l-r;a[c]=""}this._renderWholeLineDecorations(e,i,a),this._renderNormalDecorations(e,i,a),this._renderResult=a}_renderWholeLineDecorations(e,t,i){const s=String(this._lineHeight),r=e.visibleRange.startLineNumber,o=e.visibleRange.endLineNumber;for(let a=0,l=t.length;a<l;a++){const c=t[a];if(!c.options.isWholeLine)continue;const u='<div class="cdr '+c.options.className+'" style="left:0;width:100%;height:'+s+'px;"></div>',h=Math.max(c.range.startLineNumber,r),d=Math.min(c.range.endLineNumber,o);for(let f=h;f<=d;f++){const g=f-r;i[g]+=u}}}_renderNormalDecorations(e,t,i){var s;const r=String(this._lineHeight),o=e.visibleRange.startLineNumber;let a=null,l=!1,c=null,u=!1;for(let h=0,d=t.length;h<d;h++){const f=t[h];if(f.options.isWholeLine)continue;const g=f.options.className,p=!!f.options.showIfCollapsed;let m=f.range;if(p&&m.endColumn===1&&m.endLineNumber!==m.startLineNumber&&(m=new M(m.startLineNumber,m.startColumn,m.endLineNumber-1,this._context.viewModel.getLineMaxColumn(m.endLineNumber-1))),a===g&&l===p&&M.areIntersectingOrTouching(c,m)){c=M.plusRange(c,m);continue}a!==null&&this._renderNormalDecoration(e,c,a,u,l,r,o,i),a=g,l=p,c=m,u=(s=f.options.shouldFillLineOnLineBreak)!==null&&s!==void 0?s:!1}a!==null&&this._renderNormalDecoration(e,c,a,u,l,r,o,i)}_renderNormalDecoration(e,t,i,s,r,o,a,l){const c=e.linesVisibleRangesForRange(t,i==="findMatch");if(c)for(let u=0,h=c.length;u<h;u++){const d=c[u];if(d.outsideRenderedLine)continue;const f=d.lineNumber-a;if(r&&d.ranges.length===1){const g=d.ranges[0];if(g.width<this._typicalHalfwidthCharacterWidth){const p=Math.round(g.left+g.width/2),m=Math.max(0,Math.round(p-this._typicalHalfwidthCharacterWidth/2));d.ranges[0]=new WO(m,this._typicalHalfwidthCharacterWidth)}}for(let g=0,p=d.ranges.length;g<p;g++){const m=s&&d.continuesOnNextLine&&p===1,_=d.ranges[g],b='<div class="cdr '+i+'" style="left:'+String(_.left)+(m?"px;width:100%;height:":"px;width:"+String(_.width)+"px;height:")+o+'px;"></div>';l[f]+=b}}}render(e,t){if(!this._renderResult)return"";const i=t-e;return i<0||i>=this._renderResult.length?"":this._renderResult[i]}}class Zze extends ma{constructor(e,t,i,s){super(e);const r=this._context.configuration.options,o=r.get(102),a=r.get(74),l=r.get(40),c=r.get(105),u={listenOnDomNode:i.domNode,className:"editor-scrollable "+w9(e.theme.type),useShadows:!1,lazyRender:!0,vertical:o.vertical,horizontal:o.horizontal,verticalHasArrows:o.verticalHasArrows,horizontalHasArrows:o.horizontalHasArrows,verticalScrollbarSize:o.verticalScrollbarSize,verticalSliderSize:o.verticalSliderSize,horizontalScrollbarSize:o.horizontalScrollbarSize,horizontalSliderSize:o.horizontalSliderSize,handleMouseWheel:o.handleMouseWheel,alwaysConsumeMouseWheel:o.alwaysConsumeMouseWheel,arrowSize:o.arrowSize,mouseWheelScrollSensitivity:a,fastScrollSensitivity:l,scrollPredominantAxis:c,scrollByPage:o.scrollByPage};this.scrollbar=this._register(new HO(t.domNode,u,this._context.viewLayout.getScrollable())),pd.write(this.scrollbar.getDomNode(),5),this.scrollbarDomNode=fi(this.scrollbar.getDomNode()),this.scrollbarDomNode.setPosition("absolute"),this._setLayout();const h=(d,f,g)=>{const p={};if(f){const m=d.scrollTop;m&&(p.scrollTop=this._context.viewLayout.getCurrentScrollTop()+m,d.scrollTop=0)}if(g){const m=d.scrollLeft;m&&(p.scrollLeft=this._context.viewLayout.getCurrentScrollLeft()+m,d.scrollLeft=0)}this._context.viewModel.viewLayout.setScrollPosition(p,1)};this._register(Ce(i.domNode,"scroll",d=>h(i.domNode,!0,!0))),this._register(Ce(t.domNode,"scroll",d=>h(t.domNode,!0,!1))),this._register(Ce(s.domNode,"scroll",d=>h(s.domNode,!0,!1))),this._register(Ce(this.scrollbarDomNode.domNode,"scroll",d=>h(this.scrollbarDomNode.domNode,!0,!1)))}dispose(){super.dispose()}_setLayout(){const e=this._context.configuration.options,t=e.get(143);this.scrollbarDomNode.setLeft(t.contentLeft),e.get(72).side==="right"?this.scrollbarDomNode.setWidth(t.contentWidth+t.minimap.minimapWidth):this.scrollbarDomNode.setWidth(t.contentWidth),this.scrollbarDomNode.setHeight(t.height)}getOverviewRulerLayoutInfo(){return this.scrollbar.getOverviewRulerLayoutInfo()}getDomNode(){return this.scrollbarDomNode}delegateVerticalScrollbarPointerDown(e){this.scrollbar.delegateVerticalScrollbarPointerDown(e)}delegateScrollFromMouseWheelEvent(e){this.scrollbar.delegateScrollFromMouseWheelEvent(e)}onConfigurationChanged(e){if(e.hasChanged(102)||e.hasChanged(74)||e.hasChanged(40)){const t=this._context.configuration.options,i=t.get(102),s=t.get(74),r=t.get(40),o=t.get(105),a={vertical:i.vertical,horizontal:i.horizontal,verticalScrollbarSize:i.verticalScrollbarSize,horizontalScrollbarSize:i.horizontalScrollbarSize,scrollByPage:i.scrollByPage,handleMouseWheel:i.handleMouseWheel,mouseWheelScrollSensitivity:s,fastScrollSensitivity:r,scrollPredominantAxis:o};this.scrollbar.updateOptions(a)}return e.hasChanged(143)&&this._setLayout(),!0}onScrollChanged(e){return!0}onThemeChanged(e){return this.scrollbar.updateClassName("editor-scrollable "+w9(this._context.theme.type)),!0}prepareRender(e){}render(e){this.scrollbar.renderNow()}}function AL(n,e,t){const i=Xze(n,e);if(i!==-1)return n[i]}function Xze(n,e,t=n.length-1){for(let i=t;i>=0;i--){const s=n[i];if(e(s))return i}return-1}function ky(n,e){const t=PL(n,e);return t===-1?void 0:n[t]}function PL(n,e,t=0,i=n.length){let s=t,r=i;for(;s<r;){const o=Math.floor((s+r)/2);e(n[o])?s=o+1:r=o}return s-1}function Qze(n,e){const t=RL(n,e);return t===n.length?void 0:n[t]}function RL(n,e,t=0,i=n.length){let s=t,r=i;for(;s<r;){const o=Math.floor((s+r)/2);e(n[o])?r=o:s=o+1}return s}class LE{constructor(e){this._array=e,this._findLastMonotonousLastIdx=0}findLastMonotonous(e){if(LE.assertInvariants){if(this._prevFindLastPredicate){for(const i of this._array)if(this._prevFindLastPredicate(i)&&!e(i))throw new Error("MonotonousArray: current predicate must be weaker than (or equal to) the previous predicate.")}this._prevFindLastPredicate=e}const t=PL(this._array,e,this._findLastMonotonousLastIdx);return this._findLastMonotonousLastIdx=t+1,t===-1?void 0:this._array[t]}}LE.assertInvariants=!1;function Cq(n,e){if(n.length===0)return;let t=n[0];for(let i=1;i<n.length;i++){const s=n[i];e(s,t)>0&&(t=s)}return t}function Jze(n,e){if(n.length===0)return;let t=n[0];for(let i=1;i<n.length;i++){const s=n[i];e(s,t)>=0&&(t=s)}return t}function eUe(n,e){return Cq(n,(t,i)=>-e(t,i))}function tUe(n,e){if(n.length===0)return-1;let t=0;for(let i=1;i<n.length;i++){const s=n[i];e(s,n[t])>0&&(t=i)}return t}function iUe(n,e){for(const t of n){const i=e(t);if(i!==void 0)return i}}class Ype extends pe{constructor(){super(...arguments),this._isDisposed=!1}dispose(){super.dispose(),this._isDisposed=!0}assertNotDisposed(){if(this._isDisposed)throw new Error("TextModelPart is disposed!")}}function jO(n,e){let t=0,i=0;const s=n.length;for(;i<s;){const r=n.charCodeAt(i);if(r===32)t++;else if(r===9)t=t-t%e+e;else break;i++}return i===s?-1:t}var a_;(function(n){n[n.Disabled=0]="Disabled",n[n.EnabledForActive=1]="EnabledForActive",n[n.Enabled=2]="Enabled"})(a_||(a_={}));class H1{constructor(e,t,i,s,r,o){if(this.visibleColumn=e,this.column=t,this.className=i,this.horizontalLine=s,this.forWrappedLinesAfterColumn=r,this.forWrappedLinesBeforeOrAtColumn=o,e!==-1==(t!==-1))throw new Error}}class tk{constructor(e,t){this.top=e,this.endColumn=t}}class nUe extends Ype{constructor(e,t){super(),this.textModel=e,this.languageConfigurationService=t}getLanguageConfiguration(e){return this.languageConfigurationService.getLanguageConfiguration(e)}_computeIndentLevel(e){return jO(this.textModel.getLineContent(e+1),this.textModel.getOptions().tabSize)}getActiveIndentGuide(e,t,i){this.assertNotDisposed();const s=this.textModel.getLineCount();if(e<1||e>s)throw new an("Illegal value for lineNumber");const r=this.getLanguageConfiguration(this.textModel.getLanguageId()).foldingRules,o=!!(r&&r.offSide);let a=-2,l=-1,c=-2,u=-1;const h=L=>{if(a!==-1&&(a===-2||a>L-1)){a=-1,l=-1;for(let k=L-2;k>=0;k--){const x=this._computeIndentLevel(k);if(x>=0){a=k,l=x;break}}}if(c===-2){c=-1,u=-1;for(let k=L;k<s;k++){const x=this._computeIndentLevel(k);if(x>=0){c=k,u=x;break}}}};let d=-2,f=-1,g=-2,p=-1;const m=L=>{if(d===-2){d=-1,f=-1;for(let k=L-2;k>=0;k--){const x=this._computeIndentLevel(k);if(x>=0){d=k,f=x;break}}}if(g!==-1&&(g===-2||g<L-1)){g=-1,p=-1;for(let k=L;k<s;k++){const x=this._computeIndentLevel(k);if(x>=0){g=k,p=x;break}}}};let _=0,b=!0,y=0,w=!0,S=0,E=0;for(let L=0;b||w;L++){const k=e-L,x=e+L;L>1&&(k<1||k<t)&&(b=!1),L>1&&(x>s||x>i)&&(w=!1),L>5e4&&(b=!1,w=!1);let I=-1;if(b&&k>=1){const T=this._computeIndentLevel(k-1);T>=0?(c=k-1,u=T,I=Math.ceil(T/this.textModel.getOptions().indentSize)):(h(k),I=this._getIndentLevelForWhitespaceLine(o,l,u))}let N=-1;if(w&&x<=s){const T=this._computeIndentLevel(x-1);T>=0?(d=x-1,f=T,N=Math.ceil(T/this.textModel.getOptions().indentSize)):(m(x),N=this._getIndentLevelForWhitespaceLine(o,f,p))}if(L===0){E=I;continue}if(L===1){if(x<=s&&N>=0&&E+1===N){b=!1,_=x,y=x,S=N;continue}if(k>=1&&I>=0&&I-1===E){w=!1,_=k,y=k,S=I;continue}if(_=e,y=e,S=E,S===0)return{startLineNumber:_,endLineNumber:y,indent:S}}b&&(I>=S?_=k:b=!1),w&&(N>=S?y=x:w=!1)}return{startLineNumber:_,endLineNumber:y,indent:S}}getLinesBracketGuides(e,t,i,s){var r;const o=[];for(let d=e;d<=t;d++)o.push([]);const a=!0,l=this.textModel.bracketPairs.getBracketPairsInRangeWithMinIndentation(new M(e,1,t,this.textModel.getLineMaxColumn(t))).toArray();let c;if(i&&l.length>0){const d=(e<=i.lineNumber&&i.lineNumber<=t?l:this.textModel.bracketPairs.getBracketPairsInRange(M.fromPositions(i)).toArray()).filter(f=>M.strictContainsPosition(f.range,i));c=(r=AL(d,f=>a))===null||r===void 0?void 0:r.range}const u=this.textModel.getOptions().bracketPairColorizationOptions.independentColorPoolPerBracketType,h=new Zpe;for(const d of l){if(!d.closingBracketRange)continue;const f=c&&d.range.equalsRange(c);if(!f&&!s.includeInactive)continue;const g=h.getInlineClassName(d.nestingLevel,d.nestingLevelOfEqualBracketType,u)+(s.highlightActive&&f?" "+h.activeClassName:""),p=d.openingBracketRange.getStartPosition(),m=d.closingBracketRange.getStartPosition(),_=s.horizontalGuides===a_.Enabled||s.horizontalGuides===a_.EnabledForActive&&f;if(d.range.startLineNumber===d.range.endLineNumber){_&&o[d.range.startLineNumber-e].push(new H1(-1,d.openingBracketRange.getEndPosition().column,g,new tk(!1,m.column),-1,-1));continue}const b=this.getVisibleColumnFromPosition(m),y=this.getVisibleColumnFromPosition(d.openingBracketRange.getStartPosition()),w=Math.min(y,b,d.minVisibleColumnIndentation+1);let S=!1;zr(this.textModel.getLineContent(d.closingBracketRange.startLineNumber))<d.closingBracketRange.startColumn-1&&(S=!0);const k=Math.max(p.lineNumber,e),x=Math.min(m.lineNumber,t),I=S?1:0;for(let N=k;N<x+I;N++)o[N-e].push(new H1(w,-1,g,null,N===p.lineNumber?p.column:-1,N===m.lineNumber?m.column:-1));_&&(p.lineNumber>=e&&y>w&&o[p.lineNumber-e].push(new H1(w,-1,g,new tk(!1,p.column),-1,-1)),m.lineNumber<=t&&b>w&&o[m.lineNumber-e].push(new H1(w,-1,g,new tk(!S,m.column),-1,-1)))}for(const d of o)d.sort((f,g)=>f.visibleColumn-g.visibleColumn);return o}getVisibleColumnFromPosition(e){return xs.visibleColumnFromColumn(this.textModel.getLineContent(e.lineNumber),e.column,this.textModel.getOptions().tabSize)+1}getLinesIndentGuides(e,t){this.assertNotDisposed();const i=this.textModel.getLineCount();if(e<1||e>i)throw new Error("Illegal value for startLineNumber");if(t<1||t>i)throw new Error("Illegal value for endLineNumber");const s=this.textModel.getOptions(),r=this.getLanguageConfiguration(this.textModel.getLanguageId()).foldingRules,o=!!(r&&r.offSide),a=new Array(t-e+1);let l=-2,c=-1,u=-2,h=-1;for(let d=e;d<=t;d++){const f=d-e,g=this._computeIndentLevel(d-1);if(g>=0){l=d-1,c=g,a[f]=Math.ceil(g/s.indentSize);continue}if(l===-2){l=-1,c=-1;for(let p=d-2;p>=0;p--){const m=this._computeIndentLevel(p);if(m>=0){l=p,c=m;break}}}if(u!==-1&&(u===-2||u<d-1)){u=-1,h=-1;for(let p=d;p<i;p++){const m=this._computeIndentLevel(p);if(m>=0){u=p,h=m;break}}}a[f]=this._getIndentLevelForWhitespaceLine(o,c,h)}return a}_getIndentLevelForWhitespaceLine(e,t,i){const s=this.textModel.getOptions();return t===-1||i===-1?0:t<i?1+Math.floor(t/s.indentSize):t===i||e?Math.ceil(i/s.indentSize):1+Math.floor(i/s.indentSize)}}class Zpe{constructor(){this.activeClassName="indent-active"}getInlineClassName(e,t,i){return this.getInlineClassNameOfLevel(i?t:e)}getInlineClassNameOfLevel(e){return`bracket-indent-guide lvl-${e%30}`}}class sUe extends Ev{constructor(e){super(),this._context=e,this._primaryPosition=null;const t=this._context.configuration.options,i=t.get(144),s=t.get(50);this._lineHeight=t.get(66),this._spaceWidth=s.spaceWidth,this._maxIndentLeft=i.wrappingColumn===-1?-1:i.wrappingColumn*s.typicalHalfwidthCharacterWidth,this._bracketPairGuideOptions=t.get(16),this._renderResult=null,this._context.addEventHandler(this)}dispose(){this._context.removeEventHandler(this),this._renderResult=null,super.dispose()}onConfigurationChanged(e){const t=this._context.configuration.options,i=t.get(144),s=t.get(50);return this._lineHeight=t.get(66),this._spaceWidth=s.spaceWidth,this._maxIndentLeft=i.wrappingColumn===-1?-1:i.wrappingColumn*s.typicalHalfwidthCharacterWidth,this._bracketPairGuideOptions=t.get(16),!0}onCursorStateChanged(e){var t;const s=e.selections[0].getPosition();return!((t=this._primaryPosition)===null||t===void 0)&&t.equals(s)?!1:(this._primaryPosition=s,!0)}onDecorationsChanged(e){return!0}onFlushed(e){return!0}onLinesChanged(e){return!0}onLinesDeleted(e){return!0}onLinesInserted(e){return!0}onScrollChanged(e){return e.scrollTopChanged}onZonesChanged(e){return!0}onLanguageConfigurationChanged(e){return!0}prepareRender(e){var t,i,s,r;if(!this._bracketPairGuideOptions.indentation&&this._bracketPairGuideOptions.bracketPairs===!1){this._renderResult=null;return}const o=e.visibleRange.startLineNumber,a=e.visibleRange.endLineNumber,l=e.scrollWidth,c=this._lineHeight,u=this._primaryPosition,h=this.getGuidesByLine(o,Math.min(a+1,this._context.viewModel.getLineCount()),u),d=[];for(let f=o;f<=a;f++){const g=f-o,p=h[g];let m="";const _=(i=(t=e.visibleRangeForPosition(new he(f,1)))===null||t===void 0?void 0:t.left)!==null&&i!==void 0?i:0;for(const b of p){const y=b.column===-1?_+(b.visibleColumn-1)*this._spaceWidth:e.visibleRangeForPosition(new he(f,b.column)).left;if(y>l||this._maxIndentLeft>0&&y>this._maxIndentLeft)break;const w=b.horizontalLine?b.horizontalLine.top?"horizontal-top":"horizontal-bottom":"vertical",S=b.horizontalLine?((r=(s=e.visibleRangeForPosition(new he(f,b.horizontalLine.endColumn)))===null||s===void 0?void 0:s.left)!==null&&r!==void 0?r:y+this._spaceWidth)-y:this._spaceWidth;m+=`<div class="core-guide ${b.className} ${w}" style="left:${y}px;height:${c}px;width:${S}px"></div>`}d[g]=m}this._renderResult=d}getGuidesByLine(e,t,i){const s=this._bracketPairGuideOptions.bracketPairs!==!1?this._context.viewModel.getBracketGuidesInRangeByLine(e,t,i,{highlightActive:this._bracketPairGuideOptions.highlightActiveBracketPair,horizontalGuides:this._bracketPairGuideOptions.bracketPairsHorizontal===!0?a_.Enabled:this._bracketPairGuideOptions.bracketPairsHorizontal==="active"?a_.EnabledForActive:a_.Disabled,includeInactive:this._bracketPairGuideOptions.bracketPairs===!0}):null,r=this._bracketPairGuideOptions.indentation?this._context.viewModel.getLinesIndentGuides(e,t):null;let o=0,a=0,l=0;if(this._bracketPairGuideOptions.highlightActiveIndentation!==!1&&i){const h=this._context.viewModel.getActiveIndentGuide(i.lineNumber,e,t);o=h.startLineNumber,a=h.endLineNumber,l=h.indent}const{indentSize:c}=this._context.viewModel.model.getOptions(),u=[];for(let h=e;h<=t;h++){const d=new Array;u.push(d);const f=s?s[h-e]:[],g=new Zf(f),p=r?r[h-e]:0;for(let m=1;m<=p;m++){const _=(m-1)*c+1,b=(this._bracketPairGuideOptions.highlightActiveIndentation==="always"||f.length===0)&&o<=h&&h<=a&&m===l;d.push(...g.takeWhile(w=>w.visibleColumn<_)||[]);const y=g.peek();(!y||y.visibleColumn!==_||y.horizontalLine)&&d.push(new H1(_,-1,`core-guide-indent lvl-${(m-1)%30}`+(b?" indent-active":""),null,-1,-1))}d.push(...g.takeWhile(m=>!0)||[])}return u}render(e,t){if(!this._renderResult)return"";const i=t-e;return i<0||i>=this._renderResult.length?"":this._renderResult[i]}}function e0(n){if(!(n&&n.isTransparent()))return n}Nc((n,e)=>{const t=[{bracketColor:Bpe,guideColor:bze,guideColorActive:Lze},{bracketColor:Wpe,guideColor:yze,guideColorActive:xze},{bracketColor:Vpe,guideColor:Cze,guideColorActive:Eze},{bracketColor:Hpe,guideColor:wze,guideColorActive:Dze},{bracketColor:$pe,guideColor:Sze,guideColorActive:Ize},{bracketColor:zpe,guideColor:kze,guideColorActive:Tze}],i=new Zpe,s=[{indentColor:wE,indentColorActive:SE},{indentColor:tze,indentColorActive:oze},{indentColor:ize,indentColorActive:aze},{indentColor:nze,indentColorActive:lze},{indentColor:sze,indentColorActive:cze},{indentColor:rze,indentColorActive:uze}],r=t.map(a=>{var l,c;const u=n.getColor(a.bracketColor),h=n.getColor(a.guideColor),d=n.getColor(a.guideColorActive),f=e0((l=e0(h))!==null&&l!==void 0?l:u==null?void 0:u.transparent(.3)),g=e0((c=e0(d))!==null&&c!==void 0?c:u);if(!(!f||!g))return{guideColor:f,guideColorActive:g}}).filter(hL),o=s.map(a=>{const l=n.getColor(a.indentColor),c=n.getColor(a.indentColorActive),u=e0(l),h=e0(c);if(!(!u||!h))return{indentColor:u,indentColorActive:h}}).filter(hL);if(r.length>0){for(let a=0;a<30;a++){const l=r[a%r.length];e.addRule(`.monaco-editor .${i.getInlineClassNameOfLevel(a).replace(/ /g,".")} { --guide-color: ${l.guideColor}; --guide-color-active: ${l.guideColorActive}; }`)}e.addRule(".monaco-editor .vertical { box-shadow: 1px 0 0 0 var(--guide-color) inset; }"),e.addRule(".monaco-editor .horizontal-top { border-top: 1px solid var(--guide-color); }"),e.addRule(".monaco-editor .horizontal-bottom { border-bottom: 1px solid var(--guide-color); }"),e.addRule(`.monaco-editor .vertical.${i.activeClassName} { box-shadow: 1px 0 0 0 var(--guide-color-active) inset; }`),e.addRule(`.monaco-editor .horizontal-top.${i.activeClassName} { border-top: 1px solid var(--guide-color-active); }`),e.addRule(`.monaco-editor .horizontal-bottom.${i.activeClassName} { border-bottom: 1px solid var(--guide-color-active); }`)}if(o.length>0){for(let a=0;a<30;a++){const l=o[a%o.length];e.addRule(`.monaco-editor .lines-content .core-guide-indent.lvl-${a} { --indent-color: ${l.indentColor}; --indent-color-active: ${l.indentColorActive}; }`)}e.addRule(".monaco-editor .lines-content .core-guide-indent { box-shadow: 1px 0 0 0 var(--indent-color) inset; }"),e.addRule(".monaco-editor .lines-content .core-guide-indent.indent-active { box-shadow: 1px 0 0 0 var(--indent-color-active) inset; }")}});class $5{get didDomLayout(){return this._didDomLayout}readClientRect(){if(!this._clientRectRead){this._clientRectRead=!0;const e=this._domNode.getBoundingClientRect();this.markDidDomLayout(),this._clientRectDeltaLeft=e.left,this._clientRectScale=e.width/this._domNode.offsetWidth}}get clientRectDeltaLeft(){return this._clientRectRead||this.readClientRect(),this._clientRectDeltaLeft}get clientRectScale(){return this._clientRectRead||this.readClientRect(),this._clientRectScale}constructor(e,t){this._domNode=e,this.endNode=t,this._didDomLayout=!1,this._clientRectDeltaLeft=0,this._clientRectScale=1,this._clientRectRead=!1}markDidDomLayout(){this._didDomLayout=!0}}class rUe{constructor(){this._currentVisibleRange=new M(1,1,1,1)}getCurrentVisibleRange(){return this._currentVisibleRange}setCurrentVisibleRange(e){this._currentVisibleRange=e}}class oUe{constructor(e,t,i,s,r,o,a){this.minimalReveal=e,this.lineNumber=t,this.startColumn=i,this.endColumn=s,this.startScrollTop=r,this.stopScrollTop=o,this.scrollType=a,this.type="range",this.minLineNumber=t,this.maxLineNumber=t}}class aUe{constructor(e,t,i,s,r){this.minimalReveal=e,this.selections=t,this.startScrollTop=i,this.stopScrollTop=s,this.scrollType=r,this.type="selections";let o=t[0].startLineNumber,a=t[0].endLineNumber;for(let l=1,c=t.length;l<c;l++){const u=t[l];o=Math.min(o,u.startLineNumber),a=Math.max(a,u.endLineNumber)}this.minLineNumber=o,this.maxLineNumber=a}}class qO extends ma{constructor(e,t){super(e),this._linesContent=t,this._textRangeRestingSpot=document.createElement("div"),this._visibleLines=new qpe(this),this.domNode=this._visibleLines.domNode;const i=this._context.configuration,s=this._context.configuration.options,r=s.get(50),o=s.get(144);this._lineHeight=s.get(66),this._typicalHalfwidthCharacterWidth=r.typicalHalfwidthCharacterWidth,this._isViewportWrapping=o.isViewportWrapping,this._revealHorizontalRightPadding=s.get(99),this._cursorSurroundingLines=s.get(29),this._cursorSurroundingLinesStyle=s.get(30),this._canUseLayerHinting=!s.get(32),this._viewLineOptions=new fee(i,this._context.theme.type),pd.write(this.domNode,7),this.domNode.setClassName(`view-lines ${kb}`),_r(this.domNode,r),this._maxLineWidth=0,this._asyncUpdateLineWidths=new Ei(()=>{this._updateLineWidthsSlow()},200),this._asyncCheckMonospaceFontAssumptions=new Ei(()=>{this._checkMonospaceFontAssumptions()},2e3),this._lastRenderedData=new rUe,this._horizontalRevealRequest=null,this._stickyScrollEnabled=s.get(114).enabled,this._maxNumberStickyLines=s.get(114).maxLineCount}dispose(){this._asyncUpdateLineWidths.dispose(),this._asyncCheckMonospaceFontAssumptions.dispose(),super.dispose()}getDomNode(){return this.domNode}createVisibleLine(){return new vh(this._viewLineOptions)}onConfigurationChanged(e){this._visibleLines.onConfigurationChanged(e),e.hasChanged(144)&&(this._maxLineWidth=0);const t=this._context.configuration.options,i=t.get(50),s=t.get(144);return this._lineHeight=t.get(66),this._typicalHalfwidthCharacterWidth=i.typicalHalfwidthCharacterWidth,this._isViewportWrapping=s.isViewportWrapping,this._revealHorizontalRightPadding=t.get(99),this._cursorSurroundingLines=t.get(29),this._cursorSurroundingLinesStyle=t.get(30),this._canUseLayerHinting=!t.get(32),this._stickyScrollEnabled=t.get(114).enabled,this._maxNumberStickyLines=t.get(114).maxLineCount,_r(this.domNode,i),this._onOptionsMaybeChanged(),e.hasChanged(143)&&(this._maxLineWidth=0),!0}_onOptionsMaybeChanged(){const e=this._context.configuration,t=new fee(e,this._context.theme.type);if(!this._viewLineOptions.equals(t)){this._viewLineOptions=t;const i=this._visibleLines.getStartLineNumber(),s=this._visibleLines.getEndLineNumber();for(let r=i;r<=s;r++)this._visibleLines.getVisibleLine(r).onOptionsChanged(this._viewLineOptions);return!0}return!1}onCursorStateChanged(e){const t=this._visibleLines.getStartLineNumber(),i=this._visibleLines.getEndLineNumber();let s=!1;for(let r=t;r<=i;r++)s=this._visibleLines.getVisibleLine(r).onSelectionChanged()||s;return s}onDecorationsChanged(e){{const t=this._visibleLines.getStartLineNumber(),i=this._visibleLines.getEndLineNumber();for(let s=t;s<=i;s++)this._visibleLines.getVisibleLine(s).onDecorationsChanged()}return!0}onFlushed(e){const t=this._visibleLines.onFlushed(e);return this._maxLineWidth=0,t}onLinesChanged(e){return this._visibleLines.onLinesChanged(e)}onLinesDeleted(e){return this._visibleLines.onLinesDeleted(e)}onLinesInserted(e){return this._visibleLines.onLinesInserted(e)}onRevealRangeRequest(e){const t=this._computeScrollTopToRevealRange(this._context.viewLayout.getFutureViewport(),e.source,e.minimalReveal,e.range,e.selections,e.verticalType);if(t===-1)return!1;let i=this._context.viewLayout.validateScrollPosition({scrollTop:t});e.revealHorizontal?e.range&&e.range.startLineNumber!==e.range.endLineNumber?i={scrollTop:i.scrollTop,scrollLeft:0}:e.range?this._horizontalRevealRequest=new oUe(e.minimalReveal,e.range.startLineNumber,e.range.startColumn,e.range.endColumn,this._context.viewLayout.getCurrentScrollTop(),i.scrollTop,e.scrollType):e.selections&&e.selections.length>0&&(this._horizontalRevealRequest=new aUe(e.minimalReveal,e.selections,this._context.viewLayout.getCurrentScrollTop(),i.scrollTop,e.scrollType)):this._horizontalRevealRequest=null;const r=Math.abs(this._context.viewLayout.getCurrentScrollTop()-i.scrollTop)<=this._lineHeight?1:e.scrollType;return this._context.viewModel.viewLayout.setScrollPosition(i,r),!0}onScrollChanged(e){if(this._horizontalRevealRequest&&e.scrollLeftChanged&&(this._horizontalRevealRequest=null),this._horizontalRevealRequest&&e.scrollTopChanged){const t=Math.min(this._horizontalRevealRequest.startScrollTop,this._horizontalRevealRequest.stopScrollTop),i=Math.max(this._horizontalRevealRequest.startScrollTop,this._horizontalRevealRequest.stopScrollTop);(e.scrollTop<t||e.scrollTop>i)&&(this._horizontalRevealRequest=null)}return this.domNode.setWidth(e.scrollWidth),this._visibleLines.onScrollChanged(e)||!0}onTokensChanged(e){return this._visibleLines.onTokensChanged(e)}onZonesChanged(e){return this._context.viewModel.viewLayout.setMaxLineWidth(this._maxLineWidth),this._visibleLines.onZonesChanged(e)}onThemeChanged(e){return this._onOptionsMaybeChanged()}getPositionFromDOMInfo(e,t){const i=this._getViewLineDomNode(e);if(i===null)return null;const s=this._getLineNumberFor(i);if(s===-1||s<1||s>this._context.viewModel.getLineCount())return null;if(this._context.viewModel.getLineMaxColumn(s)===1)return new he(s,1);const r=this._visibleLines.getStartLineNumber(),o=this._visibleLines.getEndLineNumber();if(s<r||s>o)return null;let a=this._visibleLines.getVisibleLine(s).getColumnOfNodeOffset(e,t);const l=this._context.viewModel.getLineMinColumn(s);return a<l&&(a=l),new he(s,a)}_getViewLineDomNode(e){for(;e&&e.nodeType===1;){if(e.className===vh.CLASS_NAME)return e;e=e.parentElement}return null}_getLineNumberFor(e){const t=this._visibleLines.getStartLineNumber(),i=this._visibleLines.getEndLineNumber();for(let s=t;s<=i;s++){const r=this._visibleLines.getVisibleLine(s);if(e===r.getDomNode())return s}return-1}getLineWidth(e){const t=this._visibleLines.getStartLineNumber(),i=this._visibleLines.getEndLineNumber();if(e<t||e>i)return-1;const s=new $5(this.domNode.domNode,this._textRangeRestingSpot),r=this._visibleLines.getVisibleLine(e).getWidth(s);return this._updateLineWidthsSlowIfDomDidLayout(s),r}linesVisibleRangesForRange(e,t){if(this.shouldRender())return null;const i=e.endLineNumber,s=M.intersectRanges(e,this._lastRenderedData.getCurrentVisibleRange());if(!s)return null;const r=[];let o=0;const a=new $5(this.domNode.domNode,this._textRangeRestingSpot);let l=0;t&&(l=this._context.viewModel.coordinatesConverter.convertViewPositionToModelPosition(new he(s.startLineNumber,1)).lineNumber);const c=this._visibleLines.getStartLineNumber(),u=this._visibleLines.getEndLineNumber();for(let h=s.startLineNumber;h<=s.endLineNumber;h++){if(h<c||h>u)continue;const d=h===s.startLineNumber?s.startColumn:1,f=h!==s.endLineNumber,g=f?this._context.viewModel.getLineMaxColumn(h):s.endColumn,p=this._visibleLines.getVisibleLine(h).getVisibleRangesForRange(h,d,g,a);if(p){if(t&&h<i){const m=l;l=this._context.viewModel.coordinatesConverter.convertViewPositionToModelPosition(new he(h+1,1)).lineNumber,m!==l&&(p.ranges[p.ranges.length-1].width+=this._typicalHalfwidthCharacterWidth)}r[o++]=new c$e(p.outsideRenderedLine,h,WO.from(p.ranges),f)}}return this._updateLineWidthsSlowIfDomDidLayout(a),o===0?null:r}_visibleRangesForLineRange(e,t,i){if(this.shouldRender()||e<this._visibleLines.getStartLineNumber()||e>this._visibleLines.getEndLineNumber())return null;const s=new $5(this.domNode.domNode,this._textRangeRestingSpot),r=this._visibleLines.getVisibleLine(e).getVisibleRangesForRange(e,t,i,s);return this._updateLineWidthsSlowIfDomDidLayout(s),r}visibleRangeForPosition(e){const t=this._visibleRangesForLineRange(e.lineNumber,e.column,e.column);return t?new u$e(t.outsideRenderedLine,t.ranges[0].left):null}_updateLineWidthsFast(){return this._updateLineWidths(!0)}_updateLineWidthsSlow(){this._updateLineWidths(!1)}_updateLineWidthsSlowIfDomDidLayout(e){e.didDomLayout&&(this._asyncUpdateLineWidths.isScheduled()||(this._asyncUpdateLineWidths.cancel(),this._updateLineWidthsSlow()))}_updateLineWidths(e){const t=this._visibleLines.getStartLineNumber(),i=this._visibleLines.getEndLineNumber();let s=1,r=!0;for(let o=t;o<=i;o++){const a=this._visibleLines.getVisibleLine(o);if(e&&!a.getWidthIsFast()){r=!1;continue}s=Math.max(s,a.getWidth(null))}return r&&t===1&&i===this._context.viewModel.getLineCount()&&(this._maxLineWidth=0),this._ensureMaxLineWidth(s),r}_checkMonospaceFontAssumptions(){let e=-1,t=-1;const i=this._visibleLines.getStartLineNumber(),s=this._visibleLines.getEndLineNumber();for(let r=i;r<=s;r++){const o=this._visibleLines.getVisibleLine(r);if(o.needsMonospaceFontCheck()){const a=o.getWidth(null);a>t&&(t=a,e=r)}}if(e!==-1&&!this._visibleLines.getVisibleLine(e).monospaceAssumptionsAreValid())for(let r=i;r<=s;r++)this._visibleLines.getVisibleLine(r).onMonospaceAssumptionsInvalidated()}prepareRender(){throw new Error("Not supported")}render(){throw new Error("Not supported")}renderText(e){if(this._visibleLines.renderLines(e),this._lastRenderedData.setCurrentVisibleRange(e.visibleRange),this.domNode.setWidth(this._context.viewLayout.getScrollWidth()),this.domNode.setHeight(Math.min(this._context.viewLayout.getScrollHeight(),1e6)),this._horizontalRevealRequest){const i=this._horizontalRevealRequest;if(e.startLineNumber<=i.minLineNumber&&i.maxLineNumber<=e.endLineNumber){this._horizontalRevealRequest=null,this.onDidRender();const s=this._computeScrollLeftToReveal(i);s&&(this._isViewportWrapping||this._ensureMaxLineWidth(s.maxHorizontalOffset),this._context.viewModel.viewLayout.setScrollPosition({scrollLeft:s.scrollLeft},i.scrollType))}}if(this._updateLineWidthsFast()?this._asyncUpdateLineWidths.cancel():this._asyncUpdateLineWidths.schedule(),Kr&&!this._asyncCheckMonospaceFontAssumptions.isScheduled()){const i=this._visibleLines.getStartLineNumber(),s=this._visibleLines.getEndLineNumber();for(let r=i;r<=s;r++)if(this._visibleLines.getVisibleLine(r).needsMonospaceFontCheck()){this._asyncCheckMonospaceFontAssumptions.schedule();break}}this._linesContent.setLayerHinting(this._canUseLayerHinting),this._linesContent.setContain("strict");const t=this._context.viewLayout.getCurrentScrollTop()-e.bigNumbersDelta;this._linesContent.setTop(-t),this._linesContent.setLeft(-this._context.viewLayout.getCurrentScrollLeft())}_ensureMaxLineWidth(e){const t=Math.ceil(e);this._maxLineWidth<t&&(this._maxLineWidth=t,this._context.viewModel.viewLayout.setMaxLineWidth(this._maxLineWidth))}_computeScrollTopToRevealRange(e,t,i,s,r,o){const a=e.top,l=e.height,c=a+l;let u,h,d;if(r&&r.length>0){let _=r[0].startLineNumber,b=r[0].endLineNumber;for(let y=1,w=r.length;y<w;y++){const S=r[y];_=Math.min(_,S.startLineNumber),b=Math.max(b,S.endLineNumber)}u=!1,h=this._context.viewLayout.getVerticalOffsetForLineNumber(_),d=this._context.viewLayout.getVerticalOffsetForLineNumber(b)+this._lineHeight}else if(s)u=!0,h=this._context.viewLayout.getVerticalOffsetForLineNumber(s.startLineNumber),d=this._context.viewLayout.getVerticalOffsetForLineNumber(s.endLineNumber)+this._lineHeight;else return-1;const f=(t==="mouse"||i)&&this._cursorSurroundingLinesStyle==="default";let g=0,p=0;if(f)i||(g=this._lineHeight);else{const _=Math.min(l/this._lineHeight/2,this._cursorSurroundingLines);this._stickyScrollEnabled?g=Math.max(_,this._maxNumberStickyLines)*this._lineHeight:g=_*this._lineHeight,p=Math.max(0,_-1)*this._lineHeight}i||(o===0||o===4)&&(p+=this._lineHeight),h-=g,d+=p;let m;if(d-h>l){if(!u)return-1;m=h}else if(o===5||o===6)if(o===6&&a<=h&&d<=c)m=a;else{const _=Math.max(5*this._lineHeight,l*.2),b=h-_,y=d-l;m=Math.max(y,b)}else if(o===1||o===2)if(o===2&&a<=h&&d<=c)m=a;else{const _=(h+d)/2;m=Math.max(0,_-l/2)}else m=this._computeMinimumScrolling(a,c,h,d,o===3,o===4);return m}_computeScrollLeftToReveal(e){const t=this._context.viewLayout.getCurrentViewport(),i=this._context.configuration.options.get(143),s=t.left,r=s+t.width-i.verticalScrollbarWidth;let o=1073741824,a=0;if(e.type==="range"){const c=this._visibleRangesForLineRange(e.lineNumber,e.startColumn,e.endColumn);if(!c)return null;for(const u of c.ranges)o=Math.min(o,Math.round(u.left)),a=Math.max(a,Math.round(u.left+u.width))}else for(const c of e.selections){if(c.startLineNumber!==c.endLineNumber)return null;const u=this._visibleRangesForLineRange(c.startLineNumber,c.startColumn,c.endColumn);if(!u)return null;for(const h of u.ranges)o=Math.min(o,Math.round(h.left)),a=Math.max(a,Math.round(h.left+h.width))}return e.minimalReveal||(o=Math.max(0,o-qO.HORIZONTAL_EXTRA_PX),a+=this._revealHorizontalRightPadding),e.type==="selections"&&a-o>t.width?null:{scrollLeft:this._computeMinimumScrolling(s,r,o,a),maxHorizontalOffset:a}}_computeMinimumScrolling(e,t,i,s,r,o){e=e|0,t=t|0,i=i|0,s=s|0,r=!!r,o=!!o;const a=t-e;if(s-i<a){if(r)return i;if(o)return Math.max(0,s-a);if(i<e)return i;if(s>t)return Math.max(0,s-a)}else return i;return e}}qO.HORIZONTAL_EXTRA_PX=30;class L9{constructor(e,t,i,s){this._decorationToRenderBrand=void 0,this.startLineNumber=+e,this.endLineNumber=+t,this.className=String(i),this.zIndex=s??0}}class lUe{constructor(e,t){this.className=e,this.zIndex=t}}class cUe{constructor(){this.decorations=[]}add(e){this.decorations.push(e)}getDecorations(){return this.decorations}}class Xpe extends Ev{_render(e,t,i){const s=[];for(let a=e;a<=t;a++){const l=a-e;s[l]=new cUe}if(i.length===0)return s;i.sort((a,l)=>a.className===l.className?a.startLineNumber===l.startLineNumber?a.endLineNumber-l.endLineNumber:a.startLineNumber-l.startLineNumber:a.className<l.className?-1:1);let r=null,o=0;for(let a=0,l=i.length;a<l;a++){const c=i[a],u=c.className,h=c.zIndex;let d=Math.max(c.startLineNumber,e)-e;const f=Math.min(c.endLineNumber,t)-e;r===u?(d=Math.max(o+1,d),o=Math.max(o,f)):(r=u,o=f);for(let g=d;g<=o;g++)s[g].add(new lUe(u,h))}return s}}class uUe extends ma{constructor(e){super(e),this._widgets={},this._context=e;const t=this._context.configuration.options,i=t.get(143);this.domNode=fi(document.createElement("div")),this.domNode.setClassName("glyph-margin-widgets"),this.domNode.setPosition("absolute"),this.domNode.setTop(0),this._lineHeight=t.get(66),this._glyphMargin=t.get(57),this._glyphMarginLeft=i.glyphMarginLeft,this._glyphMarginWidth=i.glyphMarginWidth,this._glyphMarginDecorationLaneCount=i.glyphMarginDecorationLaneCount,this._managedDomNodes=[],this._decorationGlyphsToRender=[]}dispose(){this._managedDomNodes=[],this._decorationGlyphsToRender=[],this._widgets={},super.dispose()}getWidgets(){return Object.values(this._widgets)}onConfigurationChanged(e){const t=this._context.configuration.options,i=t.get(143);return this._lineHeight=t.get(66),this._glyphMargin=t.get(57),this._glyphMarginLeft=i.glyphMarginLeft,this._glyphMarginWidth=i.glyphMarginWidth,this._glyphMarginDecorationLaneCount=i.glyphMarginDecorationLaneCount,!0}onDecorationsChanged(e){return!0}onFlushed(e){return!0}onLinesChanged(e){return!0}onLinesDeleted(e){return!0}onLinesInserted(e){return!0}onScrollChanged(e){return e.scrollTopChanged}onZonesChanged(e){return!0}addWidget(e){const t=fi(e.getDomNode());this._widgets[e.getId()]={widget:e,preference:e.getPosition(),domNode:t,renderInfo:null},t.setPosition("absolute"),t.setDisplay("none"),t.setAttribute("widgetId",e.getId()),this.domNode.appendChild(t),this.setShouldRender()}setWidgetPosition(e,t){const i=this._widgets[e.getId()];return i.preference.lane===t.lane&&i.preference.zIndex===t.zIndex&&M.equalsRange(i.preference.range,t.range)?!1:(i.preference=t,this.setShouldRender(),!0)}removeWidget(e){var t;const i=e.getId();if(this._widgets[i]){const r=this._widgets[i].domNode.domNode;delete this._widgets[i],(t=r.parentNode)===null||t===void 0||t.removeChild(r),this.setShouldRender()}}_collectDecorationBasedGlyphRenderRequest(e,t){var i,s,r;const o=e.visibleRange.startLineNumber,a=e.visibleRange.endLineNumber,l=e.getDecorationsInViewport();for(const c of l){const u=c.options.glyphMarginClassName;if(!u)continue;const h=Math.max(c.range.startLineNumber,o),d=Math.min(c.range.endLineNumber,a),f=Math.min((s=(i=c.options.glyphMargin)===null||i===void 0?void 0:i.position)!==null&&s!==void 0?s:1,this._glyphMarginDecorationLaneCount),g=(r=c.options.zIndex)!==null&&r!==void 0?r:0;for(let p=h;p<=d;p++)t.push(new hUe(p,f,g,u))}}_collectWidgetBasedGlyphRenderRequest(e,t){const i=e.visibleRange.startLineNumber,s=e.visibleRange.endLineNumber;for(const r of Object.values(this._widgets)){const o=r.preference.range,{startLineNumber:a,endLineNumber:l}=this._context.viewModel.coordinatesConverter.convertModelRangeToViewRange(M.lift(o));if(!a||!l||l<i||a>s)continue;const c=Math.max(a,i),u=Math.min(r.preference.lane,this._glyphMarginDecorationLaneCount);t.push(new dUe(c,u,r.preference.zIndex,r))}}_collectSortedGlyphRenderRequests(e){const t=[];return this._collectDecorationBasedGlyphRenderRequest(e,t),this._collectWidgetBasedGlyphRenderRequest(e,t),t.sort((i,s)=>i.lineNumber===s.lineNumber?i.lane===s.lane?i.zIndex===s.zIndex?s.type===i.type?i.type===0&&s.type===0?i.className<s.className?-1:1:0:s.type-i.type:s.zIndex-i.zIndex:i.lane-s.lane:i.lineNumber-s.lineNumber),t}prepareRender(e){if(!this._glyphMargin){this._decorationGlyphsToRender=[];return}for(const s of Object.values(this._widgets))s.renderInfo=null;const t=new Zf(this._collectSortedGlyphRenderRequests(e)),i=[];for(;t.length>0;){const s=t.peek();if(!s)break;const r=t.takeWhile(a=>a.lineNumber===s.lineNumber&&a.lane===s.lane);if(!r||r.length===0)break;const o=r[0];if(o.type===0){const a=[];for(const l of r){if(l.zIndex!==o.zIndex||l.type!==o.type)break;(a.length===0||a[a.length-1]!==l.className)&&a.push(l.className)}i.push(o.accept(a.join(" ")))}else o.widget.renderInfo={lineNumber:o.lineNumber,lane:o.lane}}this._decorationGlyphsToRender=i}render(e){if(!this._glyphMargin){for(const i of Object.values(this._widgets))i.domNode.setDisplay("none");for(;this._managedDomNodes.length>0;){const i=this._managedDomNodes.pop();i==null||i.domNode.remove()}return}const t=Math.round(this._glyphMarginWidth/this._glyphMarginDecorationLaneCount);for(const i of Object.values(this._widgets))if(!i.renderInfo)i.domNode.setDisplay("none");else{const s=e.viewportData.relativeVerticalOffset[i.renderInfo.lineNumber-e.viewportData.startLineNumber],r=this._glyphMarginLeft+(i.renderInfo.lane-1)*this._lineHeight;i.domNode.setDisplay("block"),i.domNode.setTop(s),i.domNode.setLeft(r),i.domNode.setWidth(t),i.domNode.setHeight(this._lineHeight)}for(let i=0;i<this._decorationGlyphsToRender.length;i++){const s=this._decorationGlyphsToRender[i],r=e.viewportData.relativeVerticalOffset[s.lineNumber-e.viewportData.startLineNumber],o=this._glyphMarginLeft+(s.lane-1)*this._lineHeight;let a;i<this._managedDomNodes.length?a=this._managedDomNodes[i]:(a=fi(document.createElement("div")),this._managedDomNodes.push(a),this.domNode.appendChild(a)),a.setClassName("cgmr codicon "+s.combinedClassName),a.setPosition("absolute"),a.setTop(r),a.setLeft(o),a.setWidth(t),a.setHeight(this._lineHeight)}for(;this._managedDomNodes.length>this._decorationGlyphsToRender.length;){const i=this._managedDomNodes.pop();i==null||i.domNode.remove()}}}class hUe{constructor(e,t,i,s){this.lineNumber=e,this.lane=t,this.zIndex=i,this.className=s,this.type=0}accept(e){return new fUe(this.lineNumber,this.lane,e)}}class dUe{constructor(e,t,i,s){this.lineNumber=e,this.lane=t,this.zIndex=i,this.widget=s,this.type=1}}class fUe{constructor(e,t,i){this.lineNumber=e,this.lane=t,this.combinedClassName=i}}class gUe extends Xpe{constructor(e){super(),this._context=e;const i=this._context.configuration.options.get(143);this._decorationsLeft=i.decorationsLeft,this._decorationsWidth=i.decorationsWidth,this._renderResult=null,this._context.addEventHandler(this)}dispose(){this._context.removeEventHandler(this),this._renderResult=null,super.dispose()}onConfigurationChanged(e){const i=this._context.configuration.options.get(143);return this._decorationsLeft=i.decorationsLeft,this._decorationsWidth=i.decorationsWidth,!0}onDecorationsChanged(e){return!0}onFlushed(e){return!0}onLinesChanged(e){return!0}onLinesDeleted(e){return!0}onLinesInserted(e){return!0}onScrollChanged(e){return e.scrollTopChanged}onZonesChanged(e){return!0}_getDecorations(e){const t=e.getDecorationsInViewport(),i=[];let s=0;for(let r=0,o=t.length;r<o;r++){const a=t[r],l=a.options.linesDecorationsClassName,c=a.options.zIndex;l&&(i[s++]=new L9(a.range.startLineNumber,a.range.endLineNumber,l,c));const u=a.options.firstLineDecorationClassName;u&&(i[s++]=new L9(a.range.startLineNumber,a.range.startLineNumber,u,c))}return i}prepareRender(e){const t=e.visibleRange.startLineNumber,i=e.visibleRange.endLineNumber,s=this._render(t,i,this._getDecorations(e)),r=this._decorationsLeft.toString(),o=this._decorationsWidth.toString(),a='" style="left:'+r+"px;width:"+o+'px;"></div>',l=[];for(let c=t;c<=i;c++){const u=c-t,h=s[u].getDecorations();let d="";for(const f of h)d+='<div class="cldr '+f.className+a;l[u]=d}this._renderResult=l}render(e,t){return this._renderResult?this._renderResult[t-e]:""}}class pUe extends Xpe{constructor(e){super(),this._context=e,this._renderResult=null,this._context.addEventHandler(this)}dispose(){this._context.removeEventHandler(this),this._renderResult=null,super.dispose()}onConfigurationChanged(e){return!0}onDecorationsChanged(e){return!0}onFlushed(e){return!0}onLinesChanged(e){return!0}onLinesDeleted(e){return!0}onLinesInserted(e){return!0}onScrollChanged(e){return e.scrollTopChanged}onZonesChanged(e){return!0}_getDecorations(e){const t=e.getDecorationsInViewport(),i=[];let s=0;for(let r=0,o=t.length;r<o;r++){const a=t[r],l=a.options.marginClassName,c=a.options.zIndex;l&&(i[s++]=new L9(a.range.startLineNumber,a.range.endLineNumber,l,c))}return i}prepareRender(e){const t=e.visibleRange.startLineNumber,i=e.visibleRange.endLineNumber,s=this._render(t,i,this._getDecorations(e)),r=[];for(let o=t;o<=i;o++){const a=o-t,l=s[a].getDecorations();let c="";for(const u of l)c+='<div class="cmdr '+u.className+'" style=""></div>';r[a]=c}this._renderResult=r}render(e,t){return this._renderResult?this._renderResult[t-e]:""}}class kl{constructor(e,t,i,s){this._rgba8Brand=void 0,this.r=kl._clamp(e),this.g=kl._clamp(t),this.b=kl._clamp(i),this.a=kl._clamp(s)}equals(e){return this.r===e.r&&this.g===e.g&&this.b===e.b&&this.a===e.a}static _clamp(e){return e<0?0:e>255?255:e|0}}kl.Empty=new kl(0,0,0,0);class xE extends pe{static getInstance(){return this._INSTANCE||(this._INSTANCE=new xE),this._INSTANCE}constructor(){super(),this._onDidChange=new ue,this.onDidChange=this._onDidChange.event,this._updateColorMap(),this._register(kn.onDidChange(e=>{e.changedColorMap&&this._updateColorMap()}))}_updateColorMap(){const e=kn.getColorMap();if(!e){this._colors=[kl.Empty],this._backgroundIsLight=!0;return}this._colors=[kl.Empty];for(let i=1;i<e.length;i++){const s=e[i].rgba;this._colors[i]=new kl(s.r,s.g,s.b,Math.round(s.a*255))}const t=e[2].getRelativeLuminance();this._backgroundIsLight=t>=.5,this._onDidChange.fire(void 0)}getColor(e){return(e<1||e>=this._colors.length)&&(e=2),this._colors[e]}backgroundIsLight(){return this._backgroundIsLight}}xE._INSTANCE=null;class Cee{constructor(e,t,i,s){this._viewportBrand=void 0,this.top=e|0,this.left=t|0,this.width=i|0,this.height=s|0}}class mUe{constructor(e,t){this.tabSize=e,this.data=t}}class wq{constructor(e,t,i,s,r,o,a){this._viewLineDataBrand=void 0,this.content=e,this.continuesWithWrappedLine=t,this.minColumn=i,this.maxColumn=s,this.startVisibleColumn=r,this.tokens=o,this.inlineDecorations=a}}class Ja{constructor(e,t,i,s,r,o,a,l,c,u){this.minColumn=e,this.maxColumn=t,this.content=i,this.continuesWithWrappedLine=s,this.isBasicASCII=Ja.isBasicASCII(i,o),this.containsRTL=Ja.containsRTL(i,this.isBasicASCII,r),this.tokens=a,this.inlineDecorations=l,this.tabSize=c,this.startVisibleColumn=u}static isBasicASCII(e,t){return t?gE(e):!0}static containsRTL(e,t,i){return!t&&i?fy(e):!1}}class ik{constructor(e,t,i){this.range=e,this.inlineClassName=t,this.type=i}}class _Ue{constructor(e,t,i,s){this.startOffset=e,this.endOffset=t,this.inlineClassName=i,this.inlineClassNameAffectsLetterSpacing=s}toInlineDecoration(e){return new ik(new M(e,this.startOffset+1,e,this.endOffset+1),this.inlineClassName,this.inlineClassNameAffectsLetterSpacing?3:0)}}class Qpe{constructor(e,t){this._viewModelDecorationBrand=void 0,this.range=e,this.options=t}}class ML{constructor(e,t,i){this.color=e,this.zIndex=t,this.data=i}static compareByRenderingProps(e,t){return e.zIndex===t.zIndex?e.color<t.color?-1:e.color>t.color?1:0:e.zIndex-t.zIndex}static equals(e,t){return e.color===t.color&&e.zIndex===t.zIndex&&On(e.data,t.data)}static equalsArr(e,t){return On(e,t,ML.equals)}}const vUe=(()=>{const n=[];for(let e=32;e<=126;e++)n.push(e);return n.push(65533),n})(),bUe=(n,e)=>(n-=32,n<0||n>96?e<=2?(n+96)%96:95:n);class OL{constructor(e,t){this.scale=t,this._minimapCharRendererBrand=void 0,this.charDataNormal=OL.soften(e,12/15),this.charDataLight=OL.soften(e,50/60)}static soften(e,t){const i=new Uint8ClampedArray(e.length);for(let s=0,r=e.length;s<r;s++)i[s]=zA(e[s]*t);return i}renderChar(e,t,i,s,r,o,a,l,c,u,h){const d=1*this.scale,f=2*this.scale,g=h?1:f;if(t+d>e.width||i+g>e.height){console.warn("bad render request outside image data");return}const p=u?this.charDataLight:this.charDataNormal,m=bUe(s,c),_=e.width*4,b=a.r,y=a.g,w=a.b,S=r.r-b,E=r.g-y,L=r.b-w,k=Math.max(o,l),x=e.data;let I=m*d*f,N=i*_+t*4;for(let T=0;T<g;T++){let P=N;for(let R=0;R<d;R++){const F=p[I++]/255*(o/255);x[P++]=b+S*F,x[P++]=y+E*F,x[P++]=w+L*F,x[P++]=k}N+=_}}blockRenderChar(e,t,i,s,r,o,a,l){const c=1*this.scale,u=2*this.scale,h=l?1:u;if(t+c>e.width||i+h>e.height){console.warn("bad render request outside image data");return}const d=e.width*4,f=.5*(r/255),g=o.r,p=o.g,m=o.b,_=s.r-g,b=s.g-p,y=s.b-m,w=g+_*f,S=p+b*f,E=m+y*f,L=Math.max(r,a),k=e.data;let x=i*d+t*4;for(let I=0;I<h;I++){let N=x;for(let T=0;T<c;T++)k[N++]=w,k[N++]=S,k[N++]=E,k[N++]=L;x+=d}}}const wee={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15},See=n=>{const e=new Uint8ClampedArray(n.length/2);for(let t=0;t<n.length;t+=2)e[t>>1]=wee[n[t]]<<4|wee[n[t+1]]&15;return e},kee={1:jp(()=>See("0000511D6300CF609C709645A78432005642574171487021003C451900274D35D762755E8B629C5BA856AF57BA649530C167D1512A272A3F6038604460398526BCA2A968DB6F8957C768BE5FBE2FB467CF5D8D5B795DC7625B5DFF50DE64C466DB2FC47CD860A65E9A2EB96CB54CE06DA763AB2EA26860524D3763536601005116008177A8705E53AB738E6A982F88BAA35B5F5B626D9C636B449B737E5B7B678598869A662F6B5B8542706C704C80736A607578685B70594A49715A4522E792")),2:jp(()=>See("000000000000000055394F383D2800008B8B1F210002000081B1CBCBCC820000847AAF6B9AAF2119BE08B8881AD60000A44FD07DCCF107015338130C00000000385972265F390B406E2437634B4B48031B12B8A0847000001E15B29A402F0000000000004B33460B00007A752C2A0000000000004D3900000084394B82013400ABA5CFC7AD9C0302A45A3E5A98AB000089A43382D97900008BA54AA087A70A0248A6A7AE6DBE0000BF6F94987EA40A01A06DCFA7A7A9030496C32F77891D0000A99FB1A0AFA80603B29AB9CA75930D010C0948354D3900000C0948354F37460D0028BE673D8400000000AF9D7B6E00002B007AA8933400007AA642675C2700007984CFB9C3985B768772A8A6B7B20000CAAECAAFC4B700009F94A6009F840009D09F9BA4CA9C0000CC8FC76DC87F0000C991C472A2000000A894A48CA7B501079BA2C9C69BA20000B19A5D3FA89000005CA6009DA2960901B0A7F0669FB200009D009E00B7890000DAD0F5D092820000D294D4C48BD10000B5A7A4A3B1A50402CAB6CBA6A2000000B5A7A4A3B1A8044FCDADD19D9CB00000B7778F7B8AAE0803C9AB5D3F5D3F00009EA09EA0BAB006039EA0989A8C7900009B9EF4D6B7C00000A9A7816CACA80000ABAC84705D3F000096DA635CDC8C00006F486F266F263D4784006124097B00374F6D2D6D2D6D4A3A95872322000000030000000000008D8939130000000000002E22A5C9CBC70600AB25C0B5C9B400061A2DB04CA67001082AA6BEBEBFC606002321DACBC19E03087AA08B6768380000282FBAC0B8CA7A88AD25BBA5A29900004C396C5894A6000040485A6E356E9442A32CD17EADA70000B4237923628600003E2DE9C1D7B500002F25BBA5A2990000231DB6AFB4A804023025C0B5CAB588062B2CBDBEC0C706882435A75CA20000002326BD6A82A908048B4B9A5A668000002423A09CB4BB060025259C9D8A7900001C1FCAB2C7C700002A2A9387ABA200002626A4A47D6E9D14333163A0C87500004B6F9C2D643A257049364936493647358A34438355497F1A0000A24C1D590000D38DFFBDD4CD3126"))};class nk{static create(e,t){if(this.lastCreated&&e===this.lastCreated.scale&&t===this.lastFontFamily)return this.lastCreated;let i;return kee[e]?i=new OL(kee[e](),e):i=nk.createFromSampleData(nk.createSampleData(t).data,e),this.lastFontFamily=t,this.lastCreated=i,i}static createSampleData(e){const t=document.createElement("canvas"),i=t.getContext("2d");t.style.height="16px",t.height=16,t.width=96*10,t.style.width=96*10+"px",i.fillStyle="#ffffff",i.font=`bold 16px ${e}`,i.textBaseline="middle";let s=0;for(const r of vUe)i.fillText(String.fromCharCode(r),s,16/2),s+=10;return i.getImageData(0,0,96*10,16)}static createFromSampleData(e,t){if(e.length!==61440)throw new Error("Unexpected source in MinimapCharRenderer");const s=nk._downsample(e,t);return new OL(s,t)}static _downsampleChar(e,t,i,s,r){const o=1*r,a=2*r;let l=s,c=0;for(let u=0;u<a;u++){const h=u/a*16,d=(u+1)/a*16;for(let f=0;f<o;f++){const g=f/o*10,p=(f+1)/o*10;let m=0,_=0;for(let y=h;y<d;y++){const w=t+Math.floor(y)*3840,S=1-(y-Math.floor(y));for(let E=g;E<p;E++){const L=1-(E-Math.floor(E)),k=w+Math.floor(E)*4,x=L*S;_+=x,m+=e[k]*e[k+3]/255*x}}const b=m/_;c=Math.max(c,b),i[l++]=zA(b)}}return c}static _downsample(e,t){const i=2*t*1*t,s=i*96,r=new Uint8ClampedArray(s);let o=0,a=0,l=0;for(let c=0;c<96;c++)l=Math.max(l,this._downsampleChar(e,a,r,o,t)),o+=i,a+=10*4;if(l>0){const c=255/l;for(let u=0;u<s;u++)r[u]*=c}return r}}var el;(function(n){n[n.Left=1]="Left",n[n.Center=2]="Center",n[n.Right=4]="Right",n[n.Full=7]="Full"})(el||(el={}));var l_;(function(n){n[n.Left=1]="Left",n[n.Right=2]="Right"})(l_||(l_={}));var sa;(function(n){n[n.Inline=1]="Inline",n[n.Gutter=2]="Gutter"})(sa||(sa={}));var _u;(function(n){n[n.Both=0]="Both",n[n.Right=1]="Right",n[n.Left=2]="Left",n[n.None=3]="None"})(_u||(_u={}));class oN{get originalIndentSize(){return this._indentSizeIsTabSize?"tabSize":this.indentSize}constructor(e){this._textModelResolvedOptionsBrand=void 0,this.tabSize=Math.max(1,e.tabSize|0),e.indentSize==="tabSize"?(this.indentSize=this.tabSize,this._indentSizeIsTabSize=!0):(this.indentSize=Math.max(1,e.indentSize|0),this._indentSizeIsTabSize=!1),this.insertSpaces=!!e.insertSpaces,this.defaultEOL=e.defaultEOL|0,this.trimAutoWhitespace=!!e.trimAutoWhitespace,this.bracketPairColorizationOptions=e.bracketPairColorizationOptions}equals(e){return this.tabSize===e.tabSize&&this._indentSizeIsTabSize===e._indentSizeIsTabSize&&this.indentSize===e.indentSize&&this.insertSpaces===e.insertSpaces&&this.defaultEOL===e.defaultEOL&&this.trimAutoWhitespace===e.trimAutoWhitespace&&Ya(this.bracketPairColorizationOptions,e.bracketPairColorizationOptions)}createChangeEvent(e){return{tabSize:this.tabSize!==e.tabSize,indentSize:this.indentSize!==e.indentSize,insertSpaces:this.insertSpaces!==e.insertSpaces,trimAutoWhitespace:this.trimAutoWhitespace!==e.trimAutoWhitespace}}}class FL{constructor(e,t){this._findMatchBrand=void 0,this.range=e,this.matches=t}}function yUe(n){return n&&typeof n.read=="function"}class z5{constructor(e,t,i,s,r,o){this.identifier=e,this.range=t,this.text=i,this.forceMoveMarkers=s,this.isAutoWhitespaceEdit=r,this._isTracked=o}}class CUe{constructor(e,t,i){this.regex=e,this.wordSeparators=t,this.simpleSearch=i}}class wUe{constructor(e,t,i){this.reverseEdits=e,this.changes=t,this.trimAutoWhitespaceLineNumbers=i}}function SUe(n){return!n.isTooLargeForSyncing()&&!n.isForSimpleWidget}const kUe=140,LUe=2;class BL{constructor(e,t,i){const s=e.options,r=s.get(141),o=s.get(143),a=o.minimap,l=s.get(50),c=s.get(72);this.renderMinimap=a.renderMinimap,this.size=c.size,this.minimapHeightIsEditorHeight=a.minimapHeightIsEditorHeight,this.scrollBeyondLastLine=s.get(104),this.paddingTop=s.get(83).top,this.paddingBottom=s.get(83).bottom,this.showSlider=c.showSlider,this.autohide=c.autohide,this.pixelRatio=r,this.typicalHalfwidthCharacterWidth=l.typicalHalfwidthCharacterWidth,this.lineHeight=s.get(66),this.minimapLeft=a.minimapLeft,this.minimapWidth=a.minimapWidth,this.minimapHeight=o.height,this.canvasInnerWidth=a.minimapCanvasInnerWidth,this.canvasInnerHeight=a.minimapCanvasInnerHeight,this.canvasOuterWidth=a.minimapCanvasOuterWidth,this.canvasOuterHeight=a.minimapCanvasOuterHeight,this.isSampling=a.minimapIsSampling,this.editorHeight=o.height,this.fontScale=a.minimapScale,this.minimapLineHeight=a.minimapLineHeight,this.minimapCharWidth=1*this.fontScale,this.charRenderer=jp(()=>nk.create(this.fontScale,l.fontFamily)),this.defaultBackgroundColor=i.getColor(2),this.backgroundColor=BL._getMinimapBackground(t,this.defaultBackgroundColor),this.foregroundAlpha=BL._getMinimapForegroundOpacity(t)}static _getMinimapBackground(e,t){const i=e.getColor(KHe);return i?new kl(i.rgba.r,i.rgba.g,i.rgba.b,Math.round(255*i.rgba.a)):t}static _getMinimapForegroundOpacity(e){const t=e.getColor(GHe);return t?kl._clamp(Math.round(255*t.rgba.a)):255}equals(e){return this.renderMinimap===e.renderMinimap&&this.size===e.size&&this.minimapHeightIsEditorHeight===e.minimapHeightIsEditorHeight&&this.scrollBeyondLastLine===e.scrollBeyondLastLine&&this.paddingTop===e.paddingTop&&this.paddingBottom===e.paddingBottom&&this.showSlider===e.showSlider&&this.autohide===e.autohide&&this.pixelRatio===e.pixelRatio&&this.typicalHalfwidthCharacterWidth===e.typicalHalfwidthCharacterWidth&&this.lineHeight===e.lineHeight&&this.minimapLeft===e.minimapLeft&&this.minimapWidth===e.minimapWidth&&this.minimapHeight===e.minimapHeight&&this.canvasInnerWidth===e.canvasInnerWidth&&this.canvasInnerHeight===e.canvasInnerHeight&&this.canvasOuterWidth===e.canvasOuterWidth&&this.canvasOuterHeight===e.canvasOuterHeight&&this.isSampling===e.isSampling&&this.editorHeight===e.editorHeight&&this.fontScale===e.fontScale&&this.minimapLineHeight===e.minimapLineHeight&&this.minimapCharWidth===e.minimapCharWidth&&this.defaultBackgroundColor&&this.defaultBackgroundColor.equals(e.defaultBackgroundColor)&&this.backgroundColor&&this.backgroundColor.equals(e.backgroundColor)&&this.foregroundAlpha===e.foregroundAlpha}}class sk{constructor(e,t,i,s,r,o,a,l,c){this.scrollTop=e,this.scrollHeight=t,this.sliderNeeded=i,this._computedSliderRatio=s,this.sliderTop=r,this.sliderHeight=o,this.topPaddingLineCount=a,this.startLineNumber=l,this.endLineNumber=c}getDesiredScrollTopFromDelta(e){return Math.round(this.scrollTop+e/this._computedSliderRatio)}getDesiredScrollTopFromTouchLocation(e){return Math.round((e-this.sliderHeight/2)/this._computedSliderRatio)}intersectWithViewport(e){const t=Math.max(this.startLineNumber,e.startLineNumber),i=Math.min(this.endLineNumber,e.endLineNumber);return t>i?null:[t,i]}getYForLineNumber(e,t){return+(e-this.startLineNumber+this.topPaddingLineCount)*t}static create(e,t,i,s,r,o,a,l,c,u,h){const d=e.pixelRatio,f=e.minimapLineHeight,g=Math.floor(e.canvasInnerHeight/f),p=e.lineHeight;if(e.minimapHeightIsEditorHeight){let E=l*e.lineHeight+e.paddingTop+e.paddingBottom;e.scrollBeyondLastLine&&(E+=Math.max(0,r-e.lineHeight-e.paddingBottom));const L=Math.max(1,Math.floor(r*r/E)),k=Math.max(0,e.minimapHeight-L),x=k/(u-r),I=c*x,N=k>0,T=Math.floor(e.canvasInnerHeight/e.minimapLineHeight),P=Math.floor(e.paddingTop/e.lineHeight);return new sk(c,u,N,x,I,L,P,1,Math.min(a,T))}let m;if(o&&i!==a){const E=i-t+1;m=Math.floor(E*f/d)}else{const E=r/p;m=Math.floor(E*f/d)}const _=Math.floor(e.paddingTop/p);let b=Math.floor(e.paddingBottom/p);if(e.scrollBeyondLastLine){const E=r/p;b=Math.max(b,E-1)}let y;if(b>0){const E=r/p;y=(_+a+b-E-1)*f/d}else y=Math.max(0,(_+a)*f/d-m);y=Math.min(e.minimapHeight-m,y);const w=y/(u-r),S=c*w;if(g>=_+a+b){const E=y>0;return new sk(c,u,E,w,S,m,_,1,a)}else{let E;t>1?E=t+_:E=Math.max(1,c/p);let L,k=Math.max(1,Math.floor(E-S*d/f));k<_?(L=_-k+1,k=1):(L=0,k=Math.max(1,k-_)),h&&h.scrollHeight===u&&(h.scrollTop>c&&(k=Math.min(k,h.startLineNumber),L=Math.max(L,h.topPaddingLineCount)),h.scrollTop<c&&(k=Math.max(k,h.startLineNumber),L=Math.min(L,h.topPaddingLineCount)));const x=Math.min(a,k-L+g-1),I=(c-s)/p;let N;return c>=e.paddingTop?N=(t-k+L+I)*f/d:N=c/e.paddingTop*(L+I)*f/d,new sk(c,u,!0,w,N,m,L,k,x)}}}class iP{constructor(e){this.dy=e}onContentChanged(){this.dy=-1}onTokensChanged(){this.dy=-1}}iP.INVALID=new iP(-1);class Lee{constructor(e,t,i){this.renderedLayout=e,this._imageData=t,this._renderedLines=new jpe(()=>iP.INVALID),this._renderedLines._set(e.startLineNumber,i)}linesEquals(e){if(!this.scrollEquals(e))return!1;const i=this._renderedLines._get().lines;for(let s=0,r=i.length;s<r;s++)if(i[s].dy===-1)return!1;return!0}scrollEquals(e){return this.renderedLayout.startLineNumber===e.startLineNumber&&this.renderedLayout.endLineNumber===e.endLineNumber}_get(){const e=this._renderedLines._get();return{imageData:this._imageData,rendLineNumberStart:e.rendLineNumberStart,lines:e.lines}}onLinesChanged(e,t){return this._renderedLines.onLinesChanged(e,t)}onLinesDeleted(e,t){this._renderedLines.onLinesDeleted(e,t)}onLinesInserted(e,t){this._renderedLines.onLinesInserted(e,t)}onTokensChanged(e){return this._renderedLines.onTokensChanged(e)}}class Sq{constructor(e,t,i,s){this._backgroundFillData=Sq._createBackgroundFillData(t,i,s),this._buffers=[e.createImageData(t,i),e.createImageData(t,i)],this._lastUsedBuffer=0}getBuffer(){this._lastUsedBuffer=1-this._lastUsedBuffer;const e=this._buffers[this._lastUsedBuffer];return e.data.set(this._backgroundFillData),e}static _createBackgroundFillData(e,t,i){const s=i.r,r=i.g,o=i.b,a=i.a,l=new Uint8ClampedArray(e*t*4);let c=0;for(let u=0;u<t;u++)for(let h=0;h<e;h++)l[c]=s,l[c+1]=r,l[c+2]=o,l[c+3]=a,c+=4;return l}}class WL{static compute(e,t,i){if(e.renderMinimap===0||!e.isSampling)return[null,[]];const{minimapLineCount:s}=Cb.computeContainedMinimapLineCount({viewLineCount:t,scrollBeyondLastLine:e.scrollBeyondLastLine,paddingTop:e.paddingTop,paddingBottom:e.paddingBottom,height:e.editorHeight,lineHeight:e.lineHeight,pixelRatio:e.pixelRatio}),r=t/s,o=r/2;if(!i||i.minimapLines.length===0){const m=[];if(m[0]=1,s>1){for(let _=0,b=s-1;_<b;_++)m[_]=Math.round(_*r+o);m[s-1]=t}return[new WL(r,m),[]]}const a=i.minimapLines,l=a.length,c=[];let u=0,h=0,d=1;const f=10;let g=[],p=null;for(let m=0;m<s;m++){const _=Math.max(d,Math.round(m*r)),b=Math.max(_,Math.round((m+1)*r));for(;u<l&&a[u]<_;){if(g.length<f){const w=u+1+h;p&&p.type==="deleted"&&p._oldIndex===u-1?p.deleteToLineNumber++:(p={type:"deleted",_oldIndex:u,deleteFromLineNumber:w,deleteToLineNumber:w},g.push(p)),h--}u++}let y;if(u<l&&a[u]<=b)y=a[u],u++;else if(m===0?y=1:m+1===s?y=t:y=Math.round(m*r+o),g.length<f){const w=u+1+h;p&&p.type==="inserted"&&p._i===m-1?p.insertToLineNumber++:(p={type:"inserted",_i:m,insertFromLineNumber:w,insertToLineNumber:w},g.push(p)),h++}c[m]=y,d=y}if(g.length<f)for(;u<l;){const m=u+1+h;p&&p.type==="deleted"&&p._oldIndex===u-1?p.deleteToLineNumber++:(p={type:"deleted",_oldIndex:u,deleteFromLineNumber:m,deleteToLineNumber:m},g.push(p)),h--,u++}else g=[{type:"flush"}];return[new WL(r,c),g]}constructor(e,t){this.samplingRatio=e,this.minimapLines=t}modelLineToMinimapLine(e){return Math.min(this.minimapLines.length,Math.max(1,Math.round(e/this.samplingRatio)))}modelLineRangeToMinimapLineRange(e,t){let i=this.modelLineToMinimapLine(e)-1;for(;i>0&&this.minimapLines[i-1]>=e;)i--;let s=this.modelLineToMinimapLine(t)-1;for(;s+1<this.minimapLines.length&&this.minimapLines[s+1]<=t;)s++;if(i===s){const r=this.minimapLines[i];if(r<e||r>t)return null}return[i+1,s+1]}decorationLineRangeToMinimapLineRange(e,t){let i=this.modelLineToMinimapLine(e),s=this.modelLineToMinimapLine(t);return e!==t&&s===i&&(s===this.minimapLines.length?i>1&&i--:s++),[i,s]}onLinesDeleted(e){const t=e.toLineNumber-e.fromLineNumber+1;let i=this.minimapLines.length,s=0;for(let r=this.minimapLines.length-1;r>=0&&!(this.minimapLines[r]<e.fromLineNumber);r--)this.minimapLines[r]<=e.toLineNumber?(this.minimapLines[r]=Math.max(1,e.fromLineNumber-1),i=Math.min(i,r),s=Math.max(s,r)):this.minimapLines[r]-=t;return[i,s]}onLinesInserted(e){const t=e.toLineNumber-e.fromLineNumber+1;for(let i=this.minimapLines.length-1;i>=0&&!(this.minimapLines[i]<e.fromLineNumber);i--)this.minimapLines[i]+=t}}class xUe extends ma{constructor(e){super(e),this.tokensColorTracker=xE.getInstance(),this._selections=[],this._minimapSelections=null,this.options=new BL(this._context.configuration,this._context.theme,this.tokensColorTracker);const[t]=WL.compute(this.options,this._context.viewModel.getLineCount(),null);this._samplingState=t,this._shouldCheckSampling=!1,this._actual=new nP(e.theme,this)}dispose(){this._actual.dispose(),super.dispose()}getDomNode(){return this._actual.getDomNode()}_onOptionsMaybeChanged(){const e=new BL(this._context.configuration,this._context.theme,this.tokensColorTracker);return this.options.equals(e)?!1:(this.options=e,this._recreateLineSampling(),this._actual.onDidChangeOptions(),!0)}onConfigurationChanged(e){return this._onOptionsMaybeChanged()}onCursorStateChanged(e){return this._selections=e.selections,this._minimapSelections=null,this._actual.onSelectionChanged()}onDecorationsChanged(e){return e.affectsMinimap?this._actual.onDecorationsChanged():!1}onFlushed(e){return this._samplingState&&(this._shouldCheckSampling=!0),this._actual.onFlushed()}onLinesChanged(e){if(this._samplingState){const t=this._samplingState.modelLineRangeToMinimapLineRange(e.fromLineNumber,e.fromLineNumber+e.count-1);return t?this._actual.onLinesChanged(t[0],t[1]-t[0]+1):!1}else return this._actual.onLinesChanged(e.fromLineNumber,e.count)}onLinesDeleted(e){if(this._samplingState){const[t,i]=this._samplingState.onLinesDeleted(e);return t<=i&&this._actual.onLinesChanged(t+1,i-t+1),this._shouldCheckSampling=!0,!0}else return this._actual.onLinesDeleted(e.fromLineNumber,e.toLineNumber)}onLinesInserted(e){return this._samplingState?(this._samplingState.onLinesInserted(e),this._shouldCheckSampling=!0,!0):this._actual.onLinesInserted(e.fromLineNumber,e.toLineNumber)}onScrollChanged(e){return this._actual.onScrollChanged()}onThemeChanged(e){return this._actual.onThemeChanged(),this._onOptionsMaybeChanged(),!0}onTokensChanged(e){if(this._samplingState){const t=[];for(const i of e.ranges){const s=this._samplingState.modelLineRangeToMinimapLineRange(i.fromLineNumber,i.toLineNumber);s&&t.push({fromLineNumber:s[0],toLineNumber:s[1]})}return t.length?this._actual.onTokensChanged(t):!1}else return this._actual.onTokensChanged(e.ranges)}onTokensColorsChanged(e){return this._onOptionsMaybeChanged(),this._actual.onTokensColorsChanged()}onZonesChanged(e){return this._actual.onZonesChanged()}prepareRender(e){this._shouldCheckSampling&&(this._shouldCheckSampling=!1,this._recreateLineSampling())}render(e){let t=e.visibleRange.startLineNumber,i=e.visibleRange.endLineNumber;this._samplingState&&(t=this._samplingState.modelLineToMinimapLine(t),i=this._samplingState.modelLineToMinimapLine(i));const s={viewportContainsWhitespaceGaps:e.viewportData.whitespaceViewportData.length>0,scrollWidth:e.scrollWidth,scrollHeight:e.scrollHeight,viewportStartLineNumber:t,viewportEndLineNumber:i,viewportStartLineNumberVerticalOffset:e.getVerticalOffsetForLineNumber(t),scrollTop:e.scrollTop,scrollLeft:e.scrollLeft,viewportWidth:e.viewportWidth,viewportHeight:e.viewportHeight};this._actual.render(s)}_recreateLineSampling(){this._minimapSelections=null;const e=!!this._samplingState,[t,i]=WL.compute(this.options,this._context.viewModel.getLineCount(),this._samplingState);if(this._samplingState=t,e&&this._samplingState)for(const s of i)switch(s.type){case"deleted":this._actual.onLinesDeleted(s.deleteFromLineNumber,s.deleteToLineNumber);break;case"inserted":this._actual.onLinesInserted(s.insertFromLineNumber,s.insertToLineNumber);break;case"flush":this._actual.onFlushed();break}}getLineCount(){return this._samplingState?this._samplingState.minimapLines.length:this._context.viewModel.getLineCount()}getRealLineCount(){return this._context.viewModel.getLineCount()}getLineContent(e){return this._samplingState?this._context.viewModel.getLineContent(this._samplingState.minimapLines[e-1]):this._context.viewModel.getLineContent(e)}getLineMaxColumn(e){return this._samplingState?this._context.viewModel.getLineMaxColumn(this._samplingState.minimapLines[e-1]):this._context.viewModel.getLineMaxColumn(e)}getMinimapLinesRenderingData(e,t,i){if(this._samplingState){const s=[];for(let r=0,o=t-e+1;r<o;r++)i[r]?s[r]=this._context.viewModel.getViewLineData(this._samplingState.minimapLines[e+r-1]):s[r]=null;return s}return this._context.viewModel.getMinimapLinesRenderingData(e,t,i).data}getSelections(){if(this._minimapSelections===null)if(this._samplingState){this._minimapSelections=[];for(const e of this._selections){const[t,i]=this._samplingState.decorationLineRangeToMinimapLineRange(e.startLineNumber,e.endLineNumber);this._minimapSelections.push(new Ze(t,e.startColumn,i,e.endColumn))}}else this._minimapSelections=this._selections;return this._minimapSelections}getMinimapDecorationsInViewport(e,t){let i;if(this._samplingState){const r=this._samplingState.minimapLines[e-1],o=this._samplingState.minimapLines[t-1];i=new M(r,1,o,this._context.viewModel.getLineMaxColumn(o))}else i=new M(e,1,t,this._context.viewModel.getLineMaxColumn(t));const s=this._context.viewModel.getMinimapDecorationsInRange(i);if(this._samplingState){const r=[];for(const o of s){if(!o.options.minimap)continue;const a=o.range,l=this._samplingState.modelLineToMinimapLine(a.startLineNumber),c=this._samplingState.modelLineToMinimapLine(a.endLineNumber);r.push(new Qpe(new M(l,a.startColumn,c,a.endColumn),o.options))}return r}return s}getOptions(){return this._context.viewModel.model.getOptions()}revealLineNumber(e){this._samplingState&&(e=this._samplingState.minimapLines[e-1]),this._context.viewModel.revealRange("mouse",!1,new M(e,1,e,1),1,0)}setScrollTop(e){this._context.viewModel.viewLayout.setScrollPosition({scrollTop:e},1)}}class nP extends pe{constructor(e,t){super(),this._renderDecorations=!1,this._gestureInProgress=!1,this._theme=e,this._model=t,this._lastRenderData=null,this._buffers=null,this._selectionColor=this._theme.getColor(lee),this._domNode=fi(document.createElement("div")),pd.write(this._domNode,8),this._domNode.setClassName(this._getMinimapDomNodeClassName()),this._domNode.setPosition("absolute"),this._domNode.setAttribute("role","presentation"),this._domNode.setAttribute("aria-hidden","true"),this._shadow=fi(document.createElement("div")),this._shadow.setClassName("minimap-shadow-hidden"),this._domNode.appendChild(this._shadow),this._canvas=fi(document.createElement("canvas")),this._canvas.setPosition("absolute"),this._canvas.setLeft(0),this._domNode.appendChild(this._canvas),this._decorationsCanvas=fi(document.createElement("canvas")),this._decorationsCanvas.setPosition("absolute"),this._decorationsCanvas.setClassName("minimap-decorations-layer"),this._decorationsCanvas.setLeft(0),this._domNode.appendChild(this._decorationsCanvas),this._slider=fi(document.createElement("div")),this._slider.setPosition("absolute"),this._slider.setClassName("minimap-slider"),this._slider.setLayerHinting(!0),this._slider.setContain("strict"),this._domNode.appendChild(this._slider),this._sliderHorizontal=fi(document.createElement("div")),this._sliderHorizontal.setPosition("absolute"),this._sliderHorizontal.setClassName("minimap-slider-horizontal"),this._slider.appendChild(this._sliderHorizontal),this._applyLayout(),this._pointerDownListener=Mn(this._domNode.domNode,We.POINTER_DOWN,i=>{if(i.preventDefault(),this._model.options.renderMinimap===0||!this._lastRenderData)return;if(this._model.options.size!=="proportional"){if(i.button===0&&this._lastRenderData){const c=ys(this._slider.domNode),u=c.top+c.height/2;this._startSliderDragging(i,u,this._lastRenderData.renderedLayout)}return}const r=this._model.options.minimapLineHeight,o=this._model.options.canvasInnerHeight/this._model.options.canvasOuterHeight*i.offsetY;let l=Math.floor(o/r)+this._lastRenderData.renderedLayout.startLineNumber-this._lastRenderData.renderedLayout.topPaddingLineCount;l=Math.min(l,this._model.getLineCount()),this._model.revealLineNumber(l)}),this._sliderPointerMoveMonitor=new AC,this._sliderPointerDownListener=Mn(this._slider.domNode,We.POINTER_DOWN,i=>{i.preventDefault(),i.stopPropagation(),i.button===0&&this._lastRenderData&&this._startSliderDragging(i,i.pageY,this._lastRenderData.renderedLayout)}),this._gestureDisposable=Ri.addTarget(this._domNode.domNode),this._sliderTouchStartListener=Ce(this._domNode.domNode,Oi.Start,i=>{i.preventDefault(),i.stopPropagation(),this._lastRenderData&&(this._slider.toggleClassName("active",!0),this._gestureInProgress=!0,this.scrollDueToTouchEvent(i))},{passive:!1}),this._sliderTouchMoveListener=Ce(this._domNode.domNode,Oi.Change,i=>{i.preventDefault(),i.stopPropagation(),this._lastRenderData&&this._gestureInProgress&&this.scrollDueToTouchEvent(i)},{passive:!1}),this._sliderTouchEndListener=Mn(this._domNode.domNode,Oi.End,i=>{i.preventDefault(),i.stopPropagation(),this._gestureInProgress=!1,this._slider.toggleClassName("active",!1)})}_startSliderDragging(e,t,i){if(!e.target||!(e.target instanceof Element))return;const s=e.pageX;this._slider.toggleClassName("active",!0);const r=(o,a)=>{const l=ys(this._domNode.domNode),c=Math.min(Math.abs(a-s),Math.abs(a-l.left),Math.abs(a-l.left-l.width));if(yr&&c>kUe){this._model.setScrollTop(i.scrollTop);return}const u=o-t;this._model.setScrollTop(i.getDesiredScrollTopFromDelta(u))};e.pageY!==t&&r(e.pageY,s),this._sliderPointerMoveMonitor.startMonitoring(e.target,e.pointerId,e.buttons,o=>r(o.pageY,o.pageX),()=>{this._slider.toggleClassName("active",!1)})}scrollDueToTouchEvent(e){const t=this._domNode.domNode.getBoundingClientRect().top,i=this._lastRenderData.renderedLayout.getDesiredScrollTopFromTouchLocation(e.pageY-t);this._model.setScrollTop(i)}dispose(){this._pointerDownListener.dispose(),this._sliderPointerMoveMonitor.dispose(),this._sliderPointerDownListener.dispose(),this._gestureDisposable.dispose(),this._sliderTouchStartListener.dispose(),this._sliderTouchMoveListener.dispose(),this._sliderTouchEndListener.dispose(),super.dispose()}_getMinimapDomNodeClassName(){const e=["minimap"];return this._model.options.showSlider==="always"?e.push("slider-always"):e.push("slider-mouseover"),this._model.options.autohide&&e.push("autohide"),e.join(" ")}getDomNode(){return this._domNode}_applyLayout(){this._domNode.setLeft(this._model.options.minimapLeft),this._domNode.setWidth(this._model.options.minimapWidth),this._domNode.setHeight(this._model.options.minimapHeight),this._shadow.setHeight(this._model.options.minimapHeight),this._canvas.setWidth(this._model.options.canvasOuterWidth),this._canvas.setHeight(this._model.options.canvasOuterHeight),this._canvas.domNode.width=this._model.options.canvasInnerWidth,this._canvas.domNode.height=this._model.options.canvasInnerHeight,this._decorationsCanvas.setWidth(this._model.options.canvasOuterWidth),this._decorationsCanvas.setHeight(this._model.options.canvasOuterHeight),this._decorationsCanvas.domNode.width=this._model.options.canvasInnerWidth,this._decorationsCanvas.domNode.height=this._model.options.canvasInnerHeight,this._slider.setWidth(this._model.options.minimapWidth)}_getBuffer(){return this._buffers||this._model.options.canvasInnerWidth>0&&this._model.options.canvasInnerHeight>0&&(this._buffers=new Sq(this._canvas.domNode.getContext("2d"),this._model.options.canvasInnerWidth,this._model.options.canvasInnerHeight,this._model.options.backgroundColor)),this._buffers?this._buffers.getBuffer():null}onDidChangeOptions(){this._lastRenderData=null,this._buffers=null,this._applyLayout(),this._domNode.setClassName(this._getMinimapDomNodeClassName())}onSelectionChanged(){return this._renderDecorations=!0,!0}onDecorationsChanged(){return this._renderDecorations=!0,!0}onFlushed(){return this._lastRenderData=null,!0}onLinesChanged(e,t){return this._lastRenderData?this._lastRenderData.onLinesChanged(e,t):!1}onLinesDeleted(e,t){var i;return(i=this._lastRenderData)===null||i===void 0||i.onLinesDeleted(e,t),!0}onLinesInserted(e,t){var i;return(i=this._lastRenderData)===null||i===void 0||i.onLinesInserted(e,t),!0}onScrollChanged(){return this._renderDecorations=!0,!0}onThemeChanged(){return this._selectionColor=this._theme.getColor(lee),this._renderDecorations=!0,!0}onTokensChanged(e){return this._lastRenderData?this._lastRenderData.onTokensChanged(e):!1}onTokensColorsChanged(){return this._lastRenderData=null,this._buffers=null,!0}onZonesChanged(){return this._lastRenderData=null,!0}render(e){if(this._model.options.renderMinimap===0){this._shadow.setClassName("minimap-shadow-hidden"),this._sliderHorizontal.setWidth(0),this._sliderHorizontal.setHeight(0);return}e.scrollLeft+e.viewportWidth>=e.scrollWidth?this._shadow.setClassName("minimap-shadow-hidden"):this._shadow.setClassName("minimap-shadow-visible");const i=sk.create(this._model.options,e.viewportStartLineNumber,e.viewportEndLineNumber,e.viewportStartLineNumberVerticalOffset,e.viewportHeight,e.viewportContainsWhitespaceGaps,this._model.getLineCount(),this._model.getRealLineCount(),e.scrollTop,e.scrollHeight,this._lastRenderData?this._lastRenderData.renderedLayout:null);this._slider.setDisplay(i.sliderNeeded?"block":"none"),this._slider.setTop(i.sliderTop),this._slider.setHeight(i.sliderHeight),this._sliderHorizontal.setLeft(0),this._sliderHorizontal.setWidth(this._model.options.minimapWidth),this._sliderHorizontal.setTop(0),this._sliderHorizontal.setHeight(i.sliderHeight),this.renderDecorations(i),this._lastRenderData=this.renderLines(i)}renderDecorations(e){if(this._renderDecorations){this._renderDecorations=!1;const t=this._model.getSelections();t.sort(M.compareRangesUsingStarts);const i=this._model.getMinimapDecorationsInViewport(e.startLineNumber,e.endLineNumber);i.sort((d,f)=>(d.options.zIndex||0)-(f.options.zIndex||0));const{canvasInnerWidth:s,canvasInnerHeight:r}=this._model.options,o=this._model.options.minimapLineHeight,a=this._model.options.minimapCharWidth,l=this._model.getOptions().tabSize,c=this._decorationsCanvas.domNode.getContext("2d");c.clearRect(0,0,s,r);const u=new xee(e.startLineNumber,e.endLineNumber,!1);this._renderSelectionLineHighlights(c,t,u,e,o),this._renderDecorationsLineHighlights(c,i,u,e,o);const h=new xee(e.startLineNumber,e.endLineNumber,null);this._renderSelectionsHighlights(c,t,h,e,o,l,a,s),this._renderDecorationsHighlights(c,i,h,e,o,l,a,s)}}_renderSelectionLineHighlights(e,t,i,s,r){if(!this._selectionColor||this._selectionColor.isTransparent())return;e.fillStyle=this._selectionColor.transparent(.5).toString();let o=0,a=0;for(const l of t){const c=s.intersectWithViewport(l);if(!c)continue;const[u,h]=c;for(let g=u;g<=h;g++)i.set(g,!0);const d=s.getYForLineNumber(u,r),f=s.getYForLineNumber(h,r);a>=d||(a>o&&e.fillRect(Pg,o,e.canvas.width,a-o),o=d),a=f}a>o&&e.fillRect(Pg,o,e.canvas.width,a-o)}_renderDecorationsLineHighlights(e,t,i,s,r){const o=new Map;for(let a=t.length-1;a>=0;a--){const l=t[a],c=l.options.minimap;if(!c||c.position!==sa.Inline)continue;const u=s.intersectWithViewport(l.range);if(!u)continue;const[h,d]=u,f=c.getColor(this._theme.value);if(!f||f.isTransparent())continue;let g=o.get(f.toString());g||(g=f.transparent(.5).toString(),o.set(f.toString(),g)),e.fillStyle=g;for(let p=h;p<=d;p++){if(i.has(p))continue;i.set(p,!0);const m=s.getYForLineNumber(h,r);e.fillRect(Pg,m,e.canvas.width,r)}}}_renderSelectionsHighlights(e,t,i,s,r,o,a,l){if(!(!this._selectionColor||this._selectionColor.isTransparent()))for(const c of t){const u=s.intersectWithViewport(c);if(!u)continue;const[h,d]=u;for(let f=h;f<=d;f++)this.renderDecorationOnLine(e,i,c,this._selectionColor,s,f,r,r,o,a,l)}}_renderDecorationsHighlights(e,t,i,s,r,o,a,l){for(const c of t){const u=c.options.minimap;if(!u)continue;const h=s.intersectWithViewport(c.range);if(!h)continue;const[d,f]=h,g=u.getColor(this._theme.value);if(!(!g||g.isTransparent()))for(let p=d;p<=f;p++)switch(u.position){case sa.Inline:this.renderDecorationOnLine(e,i,c.range,g,s,p,r,r,o,a,l);continue;case sa.Gutter:{const m=s.getYForLineNumber(p,r),_=2;this.renderDecoration(e,g,_,m,LUe,r);continue}}}}renderDecorationOnLine(e,t,i,s,r,o,a,l,c,u,h){const d=r.getYForLineNumber(o,l);if(d+a<0||d>this._model.options.canvasInnerHeight)return;const{startLineNumber:f,endLineNumber:g}=i,p=f===o?i.startColumn:1,m=g===o?i.endColumn:this._model.getLineMaxColumn(o),_=this.getXOffsetForPosition(t,o,p,c,u,h),b=this.getXOffsetForPosition(t,o,m,c,u,h);this.renderDecoration(e,s,_,d,b-_,a)}getXOffsetForPosition(e,t,i,s,r,o){if(i===1)return Pg;if((i-1)*r>=o)return o;let l=e.get(t);if(!l){const c=this._model.getLineContent(t);l=[Pg];let u=Pg;for(let h=1;h<c.length+1;h++){const d=c.charCodeAt(h-1),f=d===9?s*r:Yp(d)?2*r:r,g=u+f;if(g>=o){l[h]=o;break}l[h]=g,u=g}e.set(t,l)}return i-1<l.length?l[i-1]:o}renderDecoration(e,t,i,s,r,o){e.fillStyle=t&&t.toString()||"",e.fillRect(i,s,r,o)}renderLines(e){const t=e.startLineNumber,i=e.endLineNumber,s=this._model.options.minimapLineHeight;if(this._lastRenderData&&this._lastRenderData.linesEquals(e)){const F=this._lastRenderData._get();return new Lee(e,F.imageData,F.lines)}const r=this._getBuffer();if(!r)return null;const[o,a,l]=nP._renderUntouchedLines(r,e.topPaddingLineCount,t,i,s,this._lastRenderData),c=this._model.getMinimapLinesRenderingData(t,i,l),u=this._model.getOptions().tabSize,h=this._model.options.defaultBackgroundColor,d=this._model.options.backgroundColor,f=this._model.options.foregroundAlpha,g=this._model.tokensColorTracker,p=g.backgroundIsLight(),m=this._model.options.renderMinimap,_=this._model.options.charRenderer(),b=this._model.options.fontScale,y=this._model.options.minimapCharWidth,S=(m===1?2:3)*b,E=s>S?Math.floor((s-S)/2):0,L=d.a/255,k=new kl(Math.round((d.r-h.r)*L+h.r),Math.round((d.g-h.g)*L+h.g),Math.round((d.b-h.b)*L+h.b),255);let x=e.topPaddingLineCount*s;const I=[];for(let F=0,j=i-t+1;F<j;F++)l[F]&&nP._renderLine(r,k,d.a,p,m,y,g,f,_,x,E,u,c[F],b,s),I[F]=new iP(x),x+=s;const N=o===-1?0:o,P=(a===-1?r.height:a)-N;return this._canvas.domNode.getContext("2d").putImageData(r,0,0,0,N,r.width,P),new Lee(e,r,I)}static _renderUntouchedLines(e,t,i,s,r,o){const a=[];if(!o){for(let x=0,I=s-i+1;x<I;x++)a[x]=!0;return[-1,-1,a]}const l=o._get(),c=l.imageData.data,u=l.rendLineNumberStart,h=l.lines,d=h.length,f=e.width,g=e.data,p=(s-i+1)*r*f*4;let m=-1,_=-1,b=-1,y=-1,w=-1,S=-1,E=t*r;for(let x=i;x<=s;x++){const I=x-i,N=x-u,T=N>=0&&N<d?h[N].dy:-1;if(T===-1){a[I]=!0,E+=r;continue}const P=T*f*4,R=(T+r)*f*4,F=E*f*4,j=(E+r)*f*4;y===P&&S===F?(y=R,S=j):(b!==-1&&(g.set(c.subarray(b,y),w),m===-1&&b===0&&b===w&&(m=y),_===-1&&y===p&&b===w&&(_=b)),b=P,y=R,w=F,S=j),a[I]=!1,E+=r}b!==-1&&(g.set(c.subarray(b,y),w),m===-1&&b===0&&b===w&&(m=y),_===-1&&y===p&&b===w&&(_=b));const L=m===-1?-1:m/(f*4),k=_===-1?-1:_/(f*4);return[L,k,a]}static _renderLine(e,t,i,s,r,o,a,l,c,u,h,d,f,g,p){const m=f.content,_=f.tokens,b=e.width-o,y=p===1;let w=Pg,S=0,E=0;for(let L=0,k=_.getCount();L<k;L++){const x=_.getEndOffset(L),I=_.getForeground(L),N=a.getColor(I);for(;S<x;S++){if(w>b)return;const T=m.charCodeAt(S);if(T===9){const P=d-(S+E)%d;E+=P-1,w+=P*o}else if(T===32)w+=o;else{const P=Yp(T)?2:1;for(let R=0;R<P;R++)if(r===2?c.blockRenderChar(e,w,u+h,N,l,t,i,y):c.renderChar(e,w,u+h,T,N,l,t,i,g,s,y),w+=o,w>b)return}}}}}class xee{constructor(e,t,i){this._startLineNumber=e,this._endLineNumber=t,this._defaultValue=i,this._values=[];for(let s=0,r=this._endLineNumber-this._startLineNumber+1;s<r;s++)this._values[s]=i}has(e){return this.get(e)!==this._defaultValue}set(e,t){e<this._startLineNumber||e>this._endLineNumber||(this._values[e-this._startLineNumber]=t)}get(e){return e<this._startLineNumber||e>this._endLineNumber?this._defaultValue:this._values[e-this._startLineNumber]}}class EUe extends ma{constructor(e){super(e);const i=this._context.configuration.options.get(143);this._widgets={},this._verticalScrollbarWidth=i.verticalScrollbarWidth,this._minimapWidth=i.minimap.minimapWidth,this._horizontalScrollbarHeight=i.horizontalScrollbarHeight,this._editorHeight=i.height,this._editorWidth=i.width,this._domNode=fi(document.createElement("div")),pd.write(this._domNode,4),this._domNode.setClassName("overlayWidgets")}dispose(){super.dispose(),this._widgets={}}getDomNode(){return this._domNode}onConfigurationChanged(e){const i=this._context.configuration.options.get(143);return this._verticalScrollbarWidth=i.verticalScrollbarWidth,this._minimapWidth=i.minimap.minimapWidth,this._horizontalScrollbarHeight=i.horizontalScrollbarHeight,this._editorHeight=i.height,this._editorWidth=i.width,!0}addWidget(e){const t=fi(e.getDomNode());this._widgets[e.getId()]={widget:e,preference:null,domNode:t},t.setPosition("absolute"),t.setAttribute("widgetId",e.getId()),this._domNode.appendChild(t),this.setShouldRender(),this._updateMaxMinWidth()}setWidgetPosition(e,t){const i=this._widgets[e.getId()];return i.preference===t?(this._updateMaxMinWidth(),!1):(i.preference=t,this.setShouldRender(),this._updateMaxMinWidth(),!0)}removeWidget(e){const t=e.getId();if(this._widgets.hasOwnProperty(t)){const s=this._widgets[t].domNode.domNode;delete this._widgets[t],s.parentNode.removeChild(s),this.setShouldRender(),this._updateMaxMinWidth()}}_updateMaxMinWidth(){var e,t;let i=0;const s=Object.keys(this._widgets);for(let r=0,o=s.length;r<o;r++){const a=s[r],c=(t=(e=this._widgets[a].widget).getMinContentWidthInPx)===null||t===void 0?void 0:t.call(e);typeof c<"u"&&(i=Math.max(i,c))}this._context.viewLayout.setOverlayWidgetsMinWidth(i)}_renderWidget(e){const t=e.domNode;if(e.preference===null){t.setTop("");return}if(e.preference===0)t.setTop(0),t.setRight(2*this._verticalScrollbarWidth+this._minimapWidth);else if(e.preference===1){const i=t.domNode.clientHeight;t.setTop(this._editorHeight-i-2*this._horizontalScrollbarHeight),t.setRight(2*this._verticalScrollbarWidth+this._minimapWidth)}else e.preference===2&&(t.setTop(0),t.domNode.style.right="50%")}prepareRender(e){}render(e){this._domNode.setWidth(this._editorWidth);const t=Object.keys(this._widgets);for(let i=0,s=t.length;i<s;i++){const r=t[i];this._renderWidget(this._widgets[r])}}}class DUe{constructor(e,t){const i=e.options;this.lineHeight=i.get(66),this.pixelRatio=i.get(141),this.overviewRulerLanes=i.get(82),this.renderBorder=i.get(81);const s=t.getColor(dze);this.borderColor=s?s.toString():null,this.hideCursor=i.get(59);const r=t.getColor(Ope);this.cursorColor=r?r.transparent(.7).toString():null,this.themeType=t.type;const o=i.get(72),a=o.enabled,l=o.side,c=t.getColor(fze),u=kn.getDefaultBackground();c?this.backgroundColor=c:a&&l==="right"?this.backgroundColor=u:this.backgroundColor=null;const d=i.get(143).overviewRuler;this.top=d.top,this.right=d.right,this.domWidth=d.width,this.domHeight=d.height,this.overviewRulerLanes===0?(this.canvasWidth=0,this.canvasHeight=0):(this.canvasWidth=this.domWidth*this.pixelRatio|0,this.canvasHeight=this.domHeight*this.pixelRatio|0);const[f,g]=this._initLanes(1,this.canvasWidth,this.overviewRulerLanes);this.x=f,this.w=g}_initLanes(e,t,i){const s=t-e;if(i>=3){const r=Math.floor(s/3),o=Math.floor(s/3),a=s-r-o,l=e,c=l+r,u=l+r+a;return[[0,l,c,l,u,l,c,l],[0,r,a,r+a,o,r+a+o,a+o,r+a+o]]}else if(i===2){const r=Math.floor(s/2),o=s-r,a=e,l=a+r;return[[0,a,a,a,l,a,a,a],[0,r,r,r,o,r+o,r+o,r+o]]}else{const r=e,o=s;return[[0,r,r,r,r,r,r,r],[0,o,o,o,o,o,o,o]]}}equals(e){return this.lineHeight===e.lineHeight&&this.pixelRatio===e.pixelRatio&&this.overviewRulerLanes===e.overviewRulerLanes&&this.renderBorder===e.renderBorder&&this.borderColor===e.borderColor&&this.hideCursor===e.hideCursor&&this.cursorColor===e.cursorColor&&this.themeType===e.themeType&&me.equals(this.backgroundColor,e.backgroundColor)&&this.top===e.top&&this.right===e.right&&this.domWidth===e.domWidth&&this.domHeight===e.domHeight&&this.canvasWidth===e.canvasWidth&&this.canvasHeight===e.canvasHeight}}class IUe extends ma{constructor(e){super(e),this._actualShouldRender=0,this._renderedDecorations=[],this._renderedCursorPositions=[],this._domNode=fi(document.createElement("canvas")),this._domNode.setClassName("decorationsOverviewRuler"),this._domNode.setPosition("absolute"),this._domNode.setLayerHinting(!0),this._domNode.setContain("strict"),this._domNode.setAttribute("aria-hidden","true"),this._updateSettings(!1),this._tokensColorTrackerListener=kn.onDidChange(t=>{t.changedColorMap&&this._updateSettings(!0)}),this._cursorPositions=[]}dispose(){super.dispose(),this._tokensColorTrackerListener.dispose()}_updateSettings(e){const t=new DUe(this._context.configuration,this._context.theme);return this._settings&&this._settings.equals(t)?!1:(this._settings=t,this._domNode.setTop(this._settings.top),this._domNode.setRight(this._settings.right),this._domNode.setWidth(this._settings.domWidth),this._domNode.setHeight(this._settings.domHeight),this._domNode.domNode.width=this._settings.canvasWidth,this._domNode.domNode.height=this._settings.canvasHeight,e&&this._render(),!0)}_markRenderingIsNeeded(){return this._actualShouldRender=2,!0}_markRenderingIsMaybeNeeded(){return this._actualShouldRender=1,!0}onConfigurationChanged(e){return this._updateSettings(!1)?this._markRenderingIsNeeded():!1}onCursorStateChanged(e){this._cursorPositions=[];for(let t=0,i=e.selections.length;t<i;t++)this._cursorPositions[t]=e.selections[t].getPosition();return this._cursorPositions.sort(he.compare),this._markRenderingIsMaybeNeeded()}onDecorationsChanged(e){return e.affectsOverviewRuler?this._markRenderingIsMaybeNeeded():!1}onFlushed(e){return this._markRenderingIsNeeded()}onScrollChanged(e){return e.scrollHeightChanged?this._markRenderingIsNeeded():!1}onZonesChanged(e){return this._markRenderingIsNeeded()}onThemeChanged(e){return this._updateSettings(!1)?this._markRenderingIsNeeded():!1}getDomNode(){return this._domNode.domNode}prepareRender(e){}render(e){this._render(),this._actualShouldRender=0}_render(){const e=this._settings.backgroundColor;if(this._settings.overviewRulerLanes===0){this._domNode.setBackgroundColor(e?me.Format.CSS.formatHexA(e):""),this._domNode.setDisplay("none");return}const t=this._context.viewModel.getAllOverviewRulerDecorations(this._context.theme);if(t.sort(ML.compareByRenderingProps),this._actualShouldRender===1&&!ML.equalsArr(this._renderedDecorations,t)&&(this._actualShouldRender=2),this._actualShouldRender===1&&!On(this._renderedCursorPositions,this._cursorPositions,(g,p)=>g.lineNumber===p.lineNumber)&&(this._actualShouldRender=2),this._actualShouldRender===1)return;this._renderedDecorations=t,this._renderedCursorPositions=this._cursorPositions,this._domNode.setDisplay("block");const i=this._settings.canvasWidth,s=this._settings.canvasHeight,r=this._settings.lineHeight,o=this._context.viewLayout,a=this._context.viewLayout.getScrollHeight(),l=s/a,c=6*this._settings.pixelRatio|0,u=c/2|0,h=this._domNode.domNode.getContext("2d");e?e.isOpaque()?(h.fillStyle=me.Format.CSS.formatHexA(e),h.fillRect(0,0,i,s)):(h.clearRect(0,0,i,s),h.fillStyle=me.Format.CSS.formatHexA(e),h.fillRect(0,0,i,s)):h.clearRect(0,0,i,s);const d=this._settings.x,f=this._settings.w;for(const g of t){const p=g.color,m=g.data;h.fillStyle=p;let _=0,b=0,y=0;for(let w=0,S=m.length/3;w<S;w++){const E=m[3*w],L=m[3*w+1],k=m[3*w+2];let x=o.getVerticalOffsetForLineNumber(L)*l|0,I=(o.getVerticalOffsetForLineNumber(k)+r)*l|0;if(I-x<c){let T=(x+I)/2|0;T<u?T=u:T+u>s&&(T=s-u),x=T-u,I=T+u}x>y+1||E!==_?(w!==0&&h.fillRect(d[_],b,f[_],y-b),_=E,b=x,y=I):I>y&&(y=I)}h.fillRect(d[_],b,f[_],y-b)}if(!this._settings.hideCursor&&this._settings.cursorColor){const g=2*this._settings.pixelRatio|0,p=g/2|0,m=this._settings.x[7],_=this._settings.w[7];h.fillStyle=this._settings.cursorColor;let b=-100,y=-100;for(let w=0,S=this._cursorPositions.length;w<S;w++){const E=this._cursorPositions[w];let L=o.getVerticalOffsetForLineNumber(E.lineNumber)*l|0;L<p?L=p:L+p>s&&(L=s-p);const k=L-p,x=k+g;k>y+1?(w!==0&&h.fillRect(m,b,_,y-b),b=k,y=x):x>y&&(y=x)}h.fillRect(m,b,_,y-b)}this._settings.renderBorder&&this._settings.borderColor&&this._settings.overviewRulerLanes>0&&(h.beginPath(),h.lineWidth=1,h.strokeStyle=this._settings.borderColor,h.moveTo(0,0),h.lineTo(0,s),h.stroke(),h.moveTo(0,0),h.lineTo(i,0),h.stroke())}}class Eee{constructor(e,t,i){this._colorZoneBrand=void 0,this.from=e|0,this.to=t|0,this.colorId=i|0}static compare(e,t){return e.colorId===t.colorId?e.from===t.from?e.to-t.to:e.from-t.from:e.colorId-t.colorId}}class Jpe{constructor(e,t,i,s){this._overviewRulerZoneBrand=void 0,this.startLineNumber=e,this.endLineNumber=t,this.heightInLines=i,this.color=s,this._colorZone=null}static compare(e,t){return e.color===t.color?e.startLineNumber===t.startLineNumber?e.heightInLines===t.heightInLines?e.endLineNumber-t.endLineNumber:e.heightInLines-t.heightInLines:e.startLineNumber-t.startLineNumber:e.color<t.color?-1:1}setColorZone(e){this._colorZone=e}getColorZones(){return this._colorZone}}class TUe{constructor(e){this._getVerticalOffsetForLine=e,this._zones=[],this._colorZonesInvalid=!1,this._lineHeight=0,this._domWidth=0,this._domHeight=0,this._outerHeight=0,this._pixelRatio=1,this._lastAssignedId=0,this._color2Id=Object.create(null),this._id2Color=[]}getId2Color(){return this._id2Color}setZones(e){this._zones=e,this._zones.sort(Jpe.compare)}setLineHeight(e){return this._lineHeight===e?!1:(this._lineHeight=e,this._colorZonesInvalid=!0,!0)}setPixelRatio(e){this._pixelRatio=e,this._colorZonesInvalid=!0}getDOMWidth(){return this._domWidth}getCanvasWidth(){return this._domWidth*this._pixelRatio}setDOMWidth(e){return this._domWidth===e?!1:(this._domWidth=e,this._colorZonesInvalid=!0,!0)}getDOMHeight(){return this._domHeight}getCanvasHeight(){return this._domHeight*this._pixelRatio}setDOMHeight(e){return this._domHeight===e?!1:(this._domHeight=e,this._colorZonesInvalid=!0,!0)}getOuterHeight(){return this._outerHeight}setOuterHeight(e){return this._outerHeight===e?!1:(this._outerHeight=e,this._colorZonesInvalid=!0,!0)}resolveColorZones(){const e=this._colorZonesInvalid,t=Math.floor(this._lineHeight),i=Math.floor(this.getCanvasHeight()),s=Math.floor(this._outerHeight),r=i/s,o=Math.floor(4*this._pixelRatio/2),a=[];for(let l=0,c=this._zones.length;l<c;l++){const u=this._zones[l];if(!e){const w=u.getColorZones();if(w){a.push(w);continue}}const h=this._getVerticalOffsetForLine(u.startLineNumber),d=u.heightInLines===0?this._getVerticalOffsetForLine(u.endLineNumber)+t:h+u.heightInLines*t,f=Math.floor(r*h),g=Math.floor(r*d);let p=Math.floor((f+g)/2),m=g-p;m<o&&(m=o),p-m<0&&(p=m),p+m>i&&(p=i-m);const _=u.color;let b=this._color2Id[_];b||(b=++this._lastAssignedId,this._color2Id[_]=b,this._id2Color[b]=_);const y=new Eee(p-m,p+m,b);u.setColorZone(y),a.push(y)}return this._colorZonesInvalid=!1,a.sort(Eee.compare),a}}class NUe extends bE{constructor(e,t){super(),this._context=e;const i=this._context.configuration.options;this._domNode=fi(document.createElement("canvas")),this._domNode.setClassName(t),this._domNode.setPosition("absolute"),this._domNode.setLayerHinting(!0),this._domNode.setContain("strict"),this._zoneManager=new TUe(s=>this._context.viewLayout.getVerticalOffsetForLineNumber(s)),this._zoneManager.setDOMWidth(0),this._zoneManager.setDOMHeight(0),this._zoneManager.setOuterHeight(this._context.viewLayout.getScrollHeight()),this._zoneManager.setLineHeight(i.get(66)),this._zoneManager.setPixelRatio(i.get(141)),this._context.addEventHandler(this)}dispose(){this._context.removeEventHandler(this),super.dispose()}onConfigurationChanged(e){const t=this._context.configuration.options;return e.hasChanged(66)&&(this._zoneManager.setLineHeight(t.get(66)),this._render()),e.hasChanged(141)&&(this._zoneManager.setPixelRatio(t.get(141)),this._domNode.setWidth(this._zoneManager.getDOMWidth()),this._domNode.setHeight(this._zoneManager.getDOMHeight()),this._domNode.domNode.width=this._zoneManager.getCanvasWidth(),this._domNode.domNode.height=this._zoneManager.getCanvasHeight(),this._render()),!0}onFlushed(e){return this._render(),!0}onScrollChanged(e){return e.scrollHeightChanged&&(this._zoneManager.setOuterHeight(e.scrollHeight),this._render()),!0}onZonesChanged(e){return this._render(),!0}getDomNode(){return this._domNode.domNode}setLayout(e){this._domNode.setTop(e.top),this._domNode.setRight(e.right);let t=!1;t=this._zoneManager.setDOMWidth(e.width)||t,t=this._zoneManager.setDOMHeight(e.height)||t,t&&(this._domNode.setWidth(this._zoneManager.getDOMWidth()),this._domNode.setHeight(this._zoneManager.getDOMHeight()),this._domNode.domNode.width=this._zoneManager.getCanvasWidth(),this._domNode.domNode.height=this._zoneManager.getCanvasHeight(),this._render())}setZones(e){this._zoneManager.setZones(e),this._render()}_render(){if(this._zoneManager.getOuterHeight()===0)return!1;const e=this._zoneManager.getCanvasWidth(),t=this._zoneManager.getCanvasHeight(),i=this._zoneManager.resolveColorZones(),s=this._zoneManager.getId2Color(),r=this._domNode.domNode.getContext("2d");return r.clearRect(0,0,e,t),i.length>0&&this._renderOneLane(r,i,s,e),!0}_renderOneLane(e,t,i,s){let r=0,o=0,a=0;for(const l of t){const c=l.colorId,u=l.from,h=l.to;c!==r?(e.fillRect(0,o,s,a-o),r=c,e.fillStyle=i[r],o=u,a=h):a>=u?a=Math.max(a,h):(e.fillRect(0,o,s,a-o),o=u,a=h)}e.fillRect(0,o,s,a-o)}}class AUe extends ma{constructor(e){super(e),this.domNode=fi(document.createElement("div")),this.domNode.setAttribute("role","presentation"),this.domNode.setAttribute("aria-hidden","true"),this.domNode.setClassName("view-rulers"),this._renderedRulers=[];const t=this._context.configuration.options;this._rulers=t.get(101),this._typicalHalfwidthCharacterWidth=t.get(50).typicalHalfwidthCharacterWidth}dispose(){super.dispose()}onConfigurationChanged(e){const t=this._context.configuration.options;return this._rulers=t.get(101),this._typicalHalfwidthCharacterWidth=t.get(50).typicalHalfwidthCharacterWidth,!0}onScrollChanged(e){return e.scrollHeightChanged}prepareRender(e){}_ensureRulersCount(){const e=this._renderedRulers.length,t=this._rulers.length;if(e===t)return;if(e<t){const{tabSize:s}=this._context.viewModel.model.getOptions(),r=s;let o=t-e;for(;o>0;){const a=fi(document.createElement("div"));a.setClassName("view-ruler"),a.setWidth(r),this.domNode.appendChild(a),this._renderedRulers.push(a),o--}return}let i=e-t;for(;i>0;){const s=this._renderedRulers.pop();this.domNode.removeChild(s),i--}}render(e){this._ensureRulersCount();for(let t=0,i=this._rulers.length;t<i;t++){const s=this._renderedRulers[t],r=this._rulers[t];s.setBoxShadow(r.color?`1px 0 0 0 ${r.color} inset`:""),s.setHeight(Math.min(e.scrollHeight,1e6)),s.setLeft(r.column*this._typicalHalfwidthCharacterWidth)}}}class PUe extends ma{constructor(e){super(e),this._scrollTop=0,this._width=0,this._updateWidth(),this._shouldShow=!1;const i=this._context.configuration.options.get(102);this._useShadows=i.useShadows,this._domNode=fi(document.createElement("div")),this._domNode.setAttribute("role","presentation"),this._domNode.setAttribute("aria-hidden","true")}dispose(){super.dispose()}_updateShouldShow(){const e=this._useShadows&&this._scrollTop>0;return this._shouldShow!==e?(this._shouldShow=e,!0):!1}getDomNode(){return this._domNode}_updateWidth(){const t=this._context.configuration.options.get(143);t.minimap.renderMinimap===0||t.minimap.minimapWidth>0&&t.minimap.minimapLeft===0?this._width=t.width:this._width=t.width-t.verticalScrollbarWidth}onConfigurationChanged(e){const i=this._context.configuration.options.get(102);return this._useShadows=i.useShadows,this._updateWidth(),this._updateShouldShow(),!0}onScrollChanged(e){return this._scrollTop=e.scrollTop,this._updateShouldShow()}prepareRender(e){}render(e){this._domNode.setWidth(this._width),this._domNode.setClassName(this._shouldShow?"scroll-decoration":"")}}class RUe{constructor(e){this.left=e.left,this.width=e.width,this.startStyle=null,this.endStyle=null}}class MUe{constructor(e,t){this.lineNumber=e,this.ranges=t}}function OUe(n){return new RUe(n)}function FUe(n){return new MUe(n.lineNumber,n.ranges.map(OUe))}class Hn extends Ev{constructor(e){super(),this._previousFrameVisibleRangesWithStyle=[],this._context=e;const t=this._context.configuration.options;this._lineHeight=t.get(66),this._roundedSelection=t.get(100),this._typicalHalfwidthCharacterWidth=t.get(50).typicalHalfwidthCharacterWidth,this._selections=[],this._renderResult=null,this._context.addEventHandler(this)}dispose(){this._context.removeEventHandler(this),this._renderResult=null,super.dispose()}onConfigurationChanged(e){const t=this._context.configuration.options;return this._lineHeight=t.get(66),this._roundedSelection=t.get(100),this._typicalHalfwidthCharacterWidth=t.get(50).typicalHalfwidthCharacterWidth,!0}onCursorStateChanged(e){return this._selections=e.selections.slice(0),!0}onDecorationsChanged(e){return!0}onFlushed(e){return!0}onLinesChanged(e){return!0}onLinesDeleted(e){return!0}onLinesInserted(e){return!0}onScrollChanged(e){return e.scrollTopChanged}onZonesChanged(e){return!0}_visibleRangesHaveGaps(e){for(let t=0,i=e.length;t<i;t++)if(e[t].ranges.length>1)return!0;return!1}_enrichVisibleRangesWithStyle(e,t,i){const s=this._typicalHalfwidthCharacterWidth/4;let r=null,o=null;if(i&&i.length>0&&t.length>0){const a=t[0].lineNumber;if(a===e.startLineNumber)for(let c=0;!r&&c<i.length;c++)i[c].lineNumber===a&&(r=i[c].ranges[0]);const l=t[t.length-1].lineNumber;if(l===e.endLineNumber)for(let c=i.length-1;!o&&c>=0;c--)i[c].lineNumber===l&&(o=i[c].ranges[0]);r&&!r.startStyle&&(r=null),o&&!o.startStyle&&(o=null)}for(let a=0,l=t.length;a<l;a++){const c=t[a].ranges[0],u=c.left,h=c.left+c.width,d={top:0,bottom:0},f={top:0,bottom:0};if(a>0){const g=t[a-1].ranges[0].left,p=t[a-1].ranges[0].left+t[a-1].ranges[0].width;cI(u-g)<s?d.top=2:u>g&&(d.top=1),cI(h-p)<s?f.top=2:g<h&&h<p&&(f.top=1)}else r&&(d.top=r.startStyle.top,f.top=r.endStyle.top);if(a+1<l){const g=t[a+1].ranges[0].left,p=t[a+1].ranges[0].left+t[a+1].ranges[0].width;cI(u-g)<s?d.bottom=2:g<u&&u<p&&(d.bottom=1),cI(h-p)<s?f.bottom=2:h<p&&(f.bottom=1)}else o&&(d.bottom=o.startStyle.bottom,f.bottom=o.endStyle.bottom);c.startStyle=d,c.endStyle=f}}_getVisibleRangesWithStyle(e,t,i){const r=(t.linesVisibleRangesForRange(e,!0)||[]).map(FUe);return!this._visibleRangesHaveGaps(r)&&this._roundedSelection&&this._enrichVisibleRangesWithStyle(t.visibleRange,r,i),r}_createSelectionPiece(e,t,i,s,r){return'<div class="cslr '+i+'" style="top:'+e.toString()+"px;left:"+s.toString()+"px;width:"+r.toString()+"px;height:"+t+'px;"></div>'}_actualRenderOneSelection(e,t,i,s){if(s.length===0)return;const r=!!s[0].ranges[0].startStyle,o=this._lineHeight.toString(),a=(this._lineHeight-1).toString(),l=s[0].lineNumber,c=s[s.length-1].lineNumber;for(let u=0,h=s.length;u<h;u++){const d=s[u],f=d.lineNumber,g=f-t,p=i&&(f===c||f===l)?a:o,m=i&&f===l?1:0;let _="",b="";for(let y=0,w=d.ranges.length;y<w;y++){const S=d.ranges[y];if(r){const L=S.startStyle,k=S.endStyle;if(L.top===1||L.bottom===1){_+=this._createSelectionPiece(m,p,Hn.SELECTION_CLASS_NAME,S.left-Hn.ROUNDED_PIECE_WIDTH,Hn.ROUNDED_PIECE_WIDTH);let x=Hn.EDITOR_BACKGROUND_CLASS_NAME;L.top===1&&(x+=" "+Hn.SELECTION_TOP_RIGHT),L.bottom===1&&(x+=" "+Hn.SELECTION_BOTTOM_RIGHT),_+=this._createSelectionPiece(m,p,x,S.left-Hn.ROUNDED_PIECE_WIDTH,Hn.ROUNDED_PIECE_WIDTH)}if(k.top===1||k.bottom===1){_+=this._createSelectionPiece(m,p,Hn.SELECTION_CLASS_NAME,S.left+S.width,Hn.ROUNDED_PIECE_WIDTH);let x=Hn.EDITOR_BACKGROUND_CLASS_NAME;k.top===1&&(x+=" "+Hn.SELECTION_TOP_LEFT),k.bottom===1&&(x+=" "+Hn.SELECTION_BOTTOM_LEFT),_+=this._createSelectionPiece(m,p,x,S.left+S.width,Hn.ROUNDED_PIECE_WIDTH)}}let E=Hn.SELECTION_CLASS_NAME;if(r){const L=S.startStyle,k=S.endStyle;L.top===0&&(E+=" "+Hn.SELECTION_TOP_LEFT),L.bottom===0&&(E+=" "+Hn.SELECTION_BOTTOM_LEFT),k.top===0&&(E+=" "+Hn.SELECTION_TOP_RIGHT),k.bottom===0&&(E+=" "+Hn.SELECTION_BOTTOM_RIGHT)}b+=this._createSelectionPiece(m,p,E,S.left,S.width)}e[g][0]+=_,e[g][1]+=b}}prepareRender(e){const t=[],i=e.visibleRange.startLineNumber,s=e.visibleRange.endLineNumber;for(let o=i;o<=s;o++){const a=o-i;t[a]=["",""]}const r=[];for(let o=0,a=this._selections.length;o<a;o++){const l=this._selections[o];if(l.isEmpty()){r[o]=null;continue}const c=this._getVisibleRangesWithStyle(l,e,this._previousFrameVisibleRangesWithStyle[o]);r[o]=c,this._actualRenderOneSelection(t,i,this._selections.length>1,c)}this._previousFrameVisibleRangesWithStyle=r,this._renderResult=t.map(([o,a])=>o+a)}render(e,t){if(!this._renderResult)return"";const i=t-e;return i<0||i>=this._renderResult.length?"":this._renderResult[i]}}Hn.SELECTION_CLASS_NAME="selected-text";Hn.SELECTION_TOP_LEFT="top-left-radius";Hn.SELECTION_BOTTOM_LEFT="bottom-left-radius";Hn.SELECTION_TOP_RIGHT="top-right-radius";Hn.SELECTION_BOTTOM_RIGHT="bottom-right-radius";Hn.EDITOR_BACKGROUND_CLASS_NAME="monaco-editor-background";Hn.ROUNDED_PIECE_WIDTH=10;Nc((n,e)=>{const t=n.getColor(JVe);t&&!t.isTransparent()&&e.addRule(`.monaco-editor .view-line span.inline-selected-text { color: ${t}; }`)});function cI(n){return n<0?-n:n}class Dee{constructor(e,t,i,s,r,o,a){this.top=e,this.left=t,this.paddingLeft=i,this.width=s,this.height=r,this.textContent=o,this.textContentClassName=a}}class Iee{constructor(e){this._context=e;const t=this._context.configuration.options,i=t.get(50);this._cursorStyle=t.get(28),this._lineHeight=t.get(66),this._typicalHalfwidthCharacterWidth=i.typicalHalfwidthCharacterWidth,this._lineCursorWidth=Math.min(t.get(31),this._typicalHalfwidthCharacterWidth),this._isVisible=!0,this._domNode=fi(document.createElement("div")),this._domNode.setClassName(`cursor ${kb}`),this._domNode.setHeight(this._lineHeight),this._domNode.setTop(0),this._domNode.setLeft(0),_r(this._domNode,i),this._domNode.setDisplay("none"),this._position=new he(1,1),this._lastRenderedContent="",this._renderData=null}getDomNode(){return this._domNode}getPosition(){return this._position}show(){this._isVisible||(this._domNode.setVisibility("inherit"),this._isVisible=!0)}hide(){this._isVisible&&(this._domNode.setVisibility("hidden"),this._isVisible=!1)}onConfigurationChanged(e){const t=this._context.configuration.options,i=t.get(50);return this._cursorStyle=t.get(28),this._lineHeight=t.get(66),this._typicalHalfwidthCharacterWidth=i.typicalHalfwidthCharacterWidth,this._lineCursorWidth=Math.min(t.get(31),this._typicalHalfwidthCharacterWidth),_r(this._domNode,i),!0}onCursorPositionChanged(e,t){return t?this._domNode.domNode.style.transitionProperty="none":this._domNode.domNode.style.transitionProperty="",this._position=e,!0}_getGraphemeAwarePosition(){const{lineNumber:e,column:t}=this._position,i=this._context.viewModel.getLineContent(e),[s,r]=x8e(i,t-1);return[new he(e,s+1),i.substring(s,r)]}_prepareRender(e){let t="",i="";const[s,r]=this._getGraphemeAwarePosition();if(this._cursorStyle===Js.Line||this._cursorStyle===Js.LineThin){const d=e.visibleRangeForPosition(s);if(!d||d.outsideRenderedLine)return null;const f=pt(this._domNode.domNode);let g;this._cursorStyle===Js.Line?(g=xJ(f,this._lineCursorWidth>0?this._lineCursorWidth:2),g>2&&(t=r,i=this._getTokenClassName(s))):g=xJ(f,1);let p=d.left,m=0;g>=2&&p>=1&&(m=1,p-=m);const _=e.getVerticalOffsetForLineNumber(s.lineNumber)-e.bigNumbersDelta;return new Dee(_,p,m,g,this._lineHeight,t,i)}const o=e.linesVisibleRangesForRange(new M(s.lineNumber,s.column,s.lineNumber,s.column+r.length),!1);if(!o||o.length===0)return null;const a=o[0];if(a.outsideRenderedLine||a.ranges.length===0)return null;const l=a.ranges[0],c=r===" "?this._typicalHalfwidthCharacterWidth:l.width<1?this._typicalHalfwidthCharacterWidth:l.width;this._cursorStyle===Js.Block&&(t=r,i=this._getTokenClassName(s));let u=e.getVerticalOffsetForLineNumber(s.lineNumber)-e.bigNumbersDelta,h=this._lineHeight;return(this._cursorStyle===Js.Underline||this._cursorStyle===Js.UnderlineThin)&&(u+=this._lineHeight-2,h=2),new Dee(u,l.left,0,c,h,t,i)}_getTokenClassName(e){const t=this._context.viewModel.getViewLineData(e.lineNumber),i=t.tokens.findTokenIndexAtOffset(e.column-1);return t.tokens.getClassName(i)}prepareRender(e){this._renderData=this._prepareRender(e)}render(e){return this._renderData?(this._lastRenderedContent!==this._renderData.textContent&&(this._lastRenderedContent=this._renderData.textContent,this._domNode.domNode.textContent=this._lastRenderedContent),this._domNode.setClassName(`cursor ${kb} ${this._renderData.textContentClassName}`),this._domNode.setDisplay("block"),this._domNode.setTop(this._renderData.top),this._domNode.setLeft(this._renderData.left),this._domNode.setPaddingLeft(this._renderData.paddingLeft),this._domNode.setWidth(this._renderData.width),this._domNode.setLineHeight(this._renderData.height),this._domNode.setHeight(this._renderData.height),{domNode:this._domNode.domNode,position:this._position,contentLeft:this._renderData.left,height:this._renderData.height,width:2}):(this._domNode.setDisplay("none"),null)}}class VL extends ma{constructor(e){super(e);const t=this._context.configuration.options;this._readOnly=t.get(90),this._cursorBlinking=t.get(26),this._cursorStyle=t.get(28),this._cursorSmoothCaretAnimation=t.get(27),this._selectionIsEmpty=!0,this._isComposingInput=!1,this._isVisible=!1,this._primaryCursor=new Iee(this._context),this._secondaryCursors=[],this._renderData=[],this._domNode=fi(document.createElement("div")),this._domNode.setAttribute("role","presentation"),this._domNode.setAttribute("aria-hidden","true"),this._updateDomClassName(),this._domNode.appendChild(this._primaryCursor.getDomNode()),this._startCursorBlinkAnimation=new Ic,this._cursorFlatBlinkInterval=new Gj,this._blinkingEnabled=!1,this._editorHasFocus=!1,this._updateBlinking()}dispose(){super.dispose(),this._startCursorBlinkAnimation.dispose(),this._cursorFlatBlinkInterval.dispose()}getDomNode(){return this._domNode}onCompositionStart(e){return this._isComposingInput=!0,this._updateBlinking(),!0}onCompositionEnd(e){return this._isComposingInput=!1,this._updateBlinking(),!0}onConfigurationChanged(e){const t=this._context.configuration.options;this._readOnly=t.get(90),this._cursorBlinking=t.get(26),this._cursorStyle=t.get(28),this._cursorSmoothCaretAnimation=t.get(27),this._updateBlinking(),this._updateDomClassName(),this._primaryCursor.onConfigurationChanged(e);for(let i=0,s=this._secondaryCursors.length;i<s;i++)this._secondaryCursors[i].onConfigurationChanged(e);return!0}_onCursorPositionChanged(e,t,i){const s=this._secondaryCursors.length!==t.length||this._cursorSmoothCaretAnimation==="explicit"&&i!==3;if(this._primaryCursor.onCursorPositionChanged(e,s),this._updateBlinking(),this._secondaryCursors.length<t.length){const r=t.length-this._secondaryCursors.length;for(let o=0;o<r;o++){const a=new Iee(this._context);this._domNode.domNode.insertBefore(a.getDomNode().domNode,this._primaryCursor.getDomNode().domNode.nextSibling),this._secondaryCursors.push(a)}}else if(this._secondaryCursors.length>t.length){const r=this._secondaryCursors.length-t.length;for(let o=0;o<r;o++)this._domNode.removeChild(this._secondaryCursors[0].getDomNode()),this._secondaryCursors.splice(0,1)}for(let r=0;r<t.length;r++)this._secondaryCursors[r].onCursorPositionChanged(t[r],s)}onCursorStateChanged(e){const t=[];for(let s=0,r=e.selections.length;s<r;s++)t[s]=e.selections[s].getPosition();this._onCursorPositionChanged(t[0],t.slice(1),e.reason);const i=e.selections[0].isEmpty();return this._selectionIsEmpty!==i&&(this._selectionIsEmpty=i,this._updateDomClassName()),!0}onDecorationsChanged(e){return!0}onFlushed(e){return!0}onFocusChanged(e){return this._editorHasFocus=e.isFocused,this._updateBlinking(),!1}onLinesChanged(e){return!0}onLinesDeleted(e){return!0}onLinesInserted(e){return!0}onScrollChanged(e){return!0}onTokensChanged(e){const t=i=>{for(let s=0,r=e.ranges.length;s<r;s++)if(e.ranges[s].fromLineNumber<=i.lineNumber&&i.lineNumber<=e.ranges[s].toLineNumber)return!0;return!1};if(t(this._primaryCursor.getPosition()))return!0;for(const i of this._secondaryCursors)if(t(i.getPosition()))return!0;return!1}onZonesChanged(e){return!0}_getCursorBlinking(){return this._isComposingInput||!this._editorHasFocus?0:this._readOnly?5:this._cursorBlinking}_updateBlinking(){this._startCursorBlinkAnimation.cancel(),this._cursorFlatBlinkInterval.cancel();const e=this._getCursorBlinking(),t=e===0,i=e===5;t?this._hide():this._show(),this._blinkingEnabled=!1,this._updateDomClassName(),!t&&!i&&(e===1?this._cursorFlatBlinkInterval.cancelAndSet(()=>{this._isVisible?this._hide():this._show()},VL.BLINK_INTERVAL,pt(this._domNode.domNode)):this._startCursorBlinkAnimation.setIfNotSet(()=>{this._blinkingEnabled=!0,this._updateDomClassName()},VL.BLINK_INTERVAL))}_updateDomClassName(){this._domNode.setClassName(this._getClassName())}_getClassName(){let e="cursors-layer";switch(this._selectionIsEmpty||(e+=" has-selection"),this._cursorStyle){case Js.Line:e+=" cursor-line-style";break;case Js.Block:e+=" cursor-block-style";break;case Js.Underline:e+=" cursor-underline-style";break;case Js.LineThin:e+=" cursor-line-thin-style";break;case Js.BlockOutline:e+=" cursor-block-outline-style";break;case Js.UnderlineThin:e+=" cursor-underline-thin-style";break;default:e+=" cursor-line-style"}if(this._blinkingEnabled)switch(this._getCursorBlinking()){case 1:e+=" cursor-blink";break;case 2:e+=" cursor-smooth";break;case 3:e+=" cursor-phase";break;case 4:e+=" cursor-expand";break;case 5:e+=" cursor-solid";break;default:e+=" cursor-solid"}else e+=" cursor-solid";return(this._cursorSmoothCaretAnimation==="on"||this._cursorSmoothCaretAnimation==="explicit")&&(e+=" cursor-smooth-caret-animation"),e}_show(){this._primaryCursor.show();for(let e=0,t=this._secondaryCursors.length;e<t;e++)this._secondaryCursors[e].show();this._isVisible=!0}_hide(){this._primaryCursor.hide();for(let e=0,t=this._secondaryCursors.length;e<t;e++)this._secondaryCursors[e].hide();this._isVisible=!1}prepareRender(e){this._primaryCursor.prepareRender(e);for(let t=0,i=this._secondaryCursors.length;t<i;t++)this._secondaryCursors[t].prepareRender(e)}render(e){const t=[];let i=0;const s=this._primaryCursor.render(e);s&&(t[i++]=s);for(let r=0,o=this._secondaryCursors.length;r<o;r++){const a=this._secondaryCursors[r].render(e);a&&(t[i++]=a)}this._renderData=t}getLastRenderData(){return this._renderData}}VL.BLINK_INTERVAL=500;Nc((n,e)=>{const t=n.getColor(Ope);if(t){let i=n.getColor(J$e);i||(i=t.opposite()),e.addRule(`.monaco-editor .cursors-layer .cursor { background-color: ${t}; border-color: ${t}; color: ${i}; }`),ku(n.type)&&e.addRule(`.monaco-editor .cursors-layer.has-selection .cursor { border-left: 1px solid ${i}; border-right: 1px solid ${i}; }`)}});const U5=()=>{throw new Error("Invalid change accessor")};class BUe extends ma{constructor(e){super(e);const t=this._context.configuration.options,i=t.get(143);this._lineHeight=t.get(66),this._contentWidth=i.contentWidth,this._contentLeft=i.contentLeft,this.domNode=fi(document.createElement("div")),this.domNode.setClassName("view-zones"),this.domNode.setPosition("absolute"),this.domNode.setAttribute("role","presentation"),this.domNode.setAttribute("aria-hidden","true"),this.marginDomNode=fi(document.createElement("div")),this.marginDomNode.setClassName("margin-view-zones"),this.marginDomNode.setPosition("absolute"),this.marginDomNode.setAttribute("role","presentation"),this.marginDomNode.setAttribute("aria-hidden","true"),this._zones={}}dispose(){super.dispose(),this._zones={}}_recomputeWhitespacesProps(){const e=this._context.viewLayout.getWhitespaces(),t=new Map;for(const s of e)t.set(s.id,s);let i=!1;return this._context.viewModel.changeWhitespace(s=>{const r=Object.keys(this._zones);for(let o=0,a=r.length;o<a;o++){const l=r[o],c=this._zones[l],u=this._computeWhitespaceProps(c.delegate);c.isInHiddenArea=u.isInHiddenArea;const h=t.get(l);h&&(h.afterLineNumber!==u.afterViewLineNumber||h.height!==u.heightInPx)&&(s.changeOneWhitespace(l,u.afterViewLineNumber,u.heightInPx),this._safeCallOnComputedHeight(c.delegate,u.heightInPx),i=!0)}}),i}onConfigurationChanged(e){const t=this._context.configuration.options,i=t.get(143);return this._lineHeight=t.get(66),this._contentWidth=i.contentWidth,this._contentLeft=i.contentLeft,e.hasChanged(66)&&this._recomputeWhitespacesProps(),!0}onLineMappingChanged(e){return this._recomputeWhitespacesProps()}onLinesDeleted(e){return!0}onScrollChanged(e){return e.scrollTopChanged||e.scrollWidthChanged}onZonesChanged(e){return!0}onLinesInserted(e){return!0}_getZoneOrdinal(e){var t,i;return(i=(t=e.ordinal)!==null&&t!==void 0?t:e.afterColumn)!==null&&i!==void 0?i:1e4}_computeWhitespaceProps(e){if(e.afterLineNumber===0)return{isInHiddenArea:!1,afterViewLineNumber:0,heightInPx:this._heightInPixels(e),minWidthInPx:this._minWidthInPixels(e)};let t;if(typeof e.afterColumn<"u")t=this._context.viewModel.model.validatePosition({lineNumber:e.afterLineNumber,column:e.afterColumn});else{const o=this._context.viewModel.model.validatePosition({lineNumber:e.afterLineNumber,column:1}).lineNumber;t=new he(o,this._context.viewModel.model.getLineMaxColumn(o))}let i;t.column===this._context.viewModel.model.getLineMaxColumn(t.lineNumber)?i=this._context.viewModel.model.validatePosition({lineNumber:t.lineNumber+1,column:1}):i=this._context.viewModel.model.validatePosition({lineNumber:t.lineNumber,column:t.column+1});const s=this._context.viewModel.coordinatesConverter.convertModelPositionToViewPosition(t,e.afterColumnAffinity,!0),r=e.showInHiddenAreas||this._context.viewModel.coordinatesConverter.modelPositionIsVisible(i);return{isInHiddenArea:!r,afterViewLineNumber:s.lineNumber,heightInPx:r?this._heightInPixels(e):0,minWidthInPx:this._minWidthInPixels(e)}}changeViewZones(e){let t=!1;return this._context.viewModel.changeWhitespace(i=>{const s={addZone:r=>(t=!0,this._addZone(i,r)),removeZone:r=>{r&&(t=this._removeZone(i,r)||t)},layoutZone:r=>{r&&(t=this._layoutZone(i,r)||t)}};WUe(e,s),s.addZone=U5,s.removeZone=U5,s.layoutZone=U5}),t}_addZone(e,t){const i=this._computeWhitespaceProps(t),r={whitespaceId:e.insertWhitespace(i.afterViewLineNumber,this._getZoneOrdinal(t),i.heightInPx,i.minWidthInPx),delegate:t,isInHiddenArea:i.isInHiddenArea,isVisible:!1,domNode:fi(t.domNode),marginDomNode:t.marginDomNode?fi(t.marginDomNode):null};return this._safeCallOnComputedHeight(r.delegate,i.heightInPx),r.domNode.setPosition("absolute"),r.domNode.domNode.style.width="100%",r.domNode.setDisplay("none"),r.domNode.setAttribute("monaco-view-zone",r.whitespaceId),this.domNode.appendChild(r.domNode),r.marginDomNode&&(r.marginDomNode.setPosition("absolute"),r.marginDomNode.domNode.style.width="100%",r.marginDomNode.setDisplay("none"),r.marginDomNode.setAttribute("monaco-view-zone",r.whitespaceId),this.marginDomNode.appendChild(r.marginDomNode)),this._zones[r.whitespaceId]=r,this.setShouldRender(),r.whitespaceId}_removeZone(e,t){if(this._zones.hasOwnProperty(t)){const i=this._zones[t];return delete this._zones[t],e.removeWhitespace(i.whitespaceId),i.domNode.removeAttribute("monaco-visible-view-zone"),i.domNode.removeAttribute("monaco-view-zone"),i.domNode.domNode.parentNode.removeChild(i.domNode.domNode),i.marginDomNode&&(i.marginDomNode.removeAttribute("monaco-visible-view-zone"),i.marginDomNode.removeAttribute("monaco-view-zone"),i.marginDomNode.domNode.parentNode.removeChild(i.marginDomNode.domNode)),this.setShouldRender(),!0}return!1}_layoutZone(e,t){if(this._zones.hasOwnProperty(t)){const i=this._zones[t],s=this._computeWhitespaceProps(i.delegate);return i.isInHiddenArea=s.isInHiddenArea,e.changeOneWhitespace(i.whitespaceId,s.afterViewLineNumber,s.heightInPx),this._safeCallOnComputedHeight(i.delegate,s.heightInPx),this.setShouldRender(),!0}return!1}shouldSuppressMouseDownOnViewZone(e){return this._zones.hasOwnProperty(e)?!!this._zones[e].delegate.suppressMouseDown:!1}_heightInPixels(e){return typeof e.heightInPx=="number"?e.heightInPx:typeof e.heightInLines=="number"?this._lineHeight*e.heightInLines:this._lineHeight}_minWidthInPixels(e){return typeof e.minWidthInPx=="number"?e.minWidthInPx:0}_safeCallOnComputedHeight(e,t){if(typeof e.onComputedHeight=="function")try{e.onComputedHeight(t)}catch(i){vt(i)}}_safeCallOnDomNodeTop(e,t){if(typeof e.onDomNodeTop=="function")try{e.onDomNodeTop(t)}catch(i){vt(i)}}prepareRender(e){}render(e){const t=e.viewportData.whitespaceViewportData,i={};let s=!1;for(const o of t)this._zones[o.id].isInHiddenArea||(i[o.id]=o,s=!0);const r=Object.keys(this._zones);for(let o=0,a=r.length;o<a;o++){const l=r[o],c=this._zones[l];let u=0,h=0,d="none";i.hasOwnProperty(l)?(u=i[l].verticalOffset-e.bigNumbersDelta,h=i[l].height,d="block",c.isVisible||(c.domNode.setAttribute("monaco-visible-view-zone","true"),c.isVisible=!0),this._safeCallOnDomNodeTop(c.delegate,e.getScrolledTopFromAbsoluteTop(i[l].verticalOffset))):(c.isVisible&&(c.domNode.removeAttribute("monaco-visible-view-zone"),c.isVisible=!1),this._safeCallOnDomNodeTop(c.delegate,e.getScrolledTopFromAbsoluteTop(-1e6))),c.domNode.setTop(u),c.domNode.setHeight(h),c.domNode.setDisplay(d),c.marginDomNode&&(c.marginDomNode.setTop(u),c.marginDomNode.setHeight(h),c.marginDomNode.setDisplay(d))}s&&(this.domNode.setWidth(Math.max(e.scrollWidth,this._contentWidth)),this.marginDomNode.setWidth(this._contentLeft))}}function WUe(n,e){try{return n(e)}catch(t){vt(t)}}class VUe{get type(){return this._theme.type}get value(){return this._theme}constructor(e){this._theme=e}update(e){this._theme=e}getColor(e){return this._theme.getColor(e)}}class HUe{constructor(e,t,i){this.configuration=e,this.theme=new VUe(t),this.viewModel=i,this.viewLayout=i.viewLayout}addEventHandler(e){this.viewModel.addViewEventHandler(e)}removeEventHandler(e){this.viewModel.removeViewEventHandler(e)}}class $Ue{constructor(e,t,i,s){this.selections=e,this.startLineNumber=t.startLineNumber|0,this.endLineNumber=t.endLineNumber|0,this.relativeVerticalOffset=t.relativeVerticalOffset,this.bigNumbersDelta=t.bigNumbersDelta|0,this.whitespaceViewportData=i,this._model=s,this.visibleRange=new M(t.startLineNumber,this._model.getLineMinColumn(t.startLineNumber),t.endLineNumber,this._model.getLineMaxColumn(t.endLineNumber))}getViewLineRenderingData(e){return this._model.getViewportViewLineRenderingData(this.visibleRange,e)}getDecorationsInViewport(){return this._model.getDecorationsInViewport(this.visibleRange)}}class zUe extends ma{constructor(e){super(e),this.blocks=[],this.contentWidth=-1,this.contentLeft=0,this.domNode=fi(document.createElement("div")),this.domNode.setAttribute("role","presentation"),this.domNode.setAttribute("aria-hidden","true"),this.domNode.setClassName("blockDecorations-container"),this.update()}update(){let e=!1;const i=this._context.configuration.options.get(143),s=i.contentWidth-i.verticalScrollbarWidth;this.contentWidth!==s&&(this.contentWidth=s,e=!0);const r=i.contentLeft;return this.contentLeft!==r&&(this.contentLeft=r,e=!0),e}dispose(){super.dispose()}onConfigurationChanged(e){return this.update()}onScrollChanged(e){return e.scrollTopChanged||e.scrollLeftChanged}onDecorationsChanged(e){return!0}onZonesChanged(e){return!0}prepareRender(e){}render(e){var t;let i=0;const s=e.getDecorationsInViewport();for(const r of s){if(!r.options.blockClassName)continue;let o=this.blocks[i];o||(o=this.blocks[i]=fi(document.createElement("div")),this.domNode.appendChild(o));let a,l;r.options.blockIsAfterEnd?(a=e.getVerticalOffsetAfterLineNumber(r.range.endLineNumber,!1),l=e.getVerticalOffsetAfterLineNumber(r.range.endLineNumber,!0)):(a=e.getVerticalOffsetForLineNumber(r.range.startLineNumber,!0),l=r.range.isEmpty()&&!r.options.blockDoesNotCollapse?e.getVerticalOffsetForLineNumber(r.range.startLineNumber,!1):e.getVerticalOffsetAfterLineNumber(r.range.endLineNumber,!0));const[c,u,h,d]=(t=r.options.blockPadding)!==null&&t!==void 0?t:[0,0,0,0];o.setClassName("blockDecorations-block "+r.options.blockClassName),o.setLeft(this.contentLeft-d),o.setWidth(this.contentWidth+d+u),o.setTop(a-e.scrollTop-c),o.setHeight(l-a+c+h),i++}for(let r=i;r<this.blocks.length;r++)this.blocks[r].domNode.remove();this.blocks.length=i}}class UUe extends Ev{constructor(e){super(),this._context=e,this._options=new Tee(this._context.configuration),this._selection=[],this._renderResult=null,this._context.addEventHandler(this)}dispose(){this._context.removeEventHandler(this),this._renderResult=null,super.dispose()}onConfigurationChanged(e){const t=new Tee(this._context.configuration);return this._options.equals(t)?e.hasChanged(143):(this._options=t,!0)}onCursorStateChanged(e){return this._selection=e.selections,this._options.renderWhitespace==="selection"}onDecorationsChanged(e){return!0}onFlushed(e){return!0}onLinesChanged(e){return!0}onLinesDeleted(e){return!0}onLinesInserted(e){return!0}onScrollChanged(e){return e.scrollTopChanged}onZonesChanged(e){return!0}prepareRender(e){if(this._options.renderWhitespace==="none"){this._renderResult=null;return}const t=e.visibleRange.startLineNumber,s=e.visibleRange.endLineNumber-t+1,r=new Array(s);for(let a=0;a<s;a++)r[a]=!0;const o=this._context.viewModel.getMinimapLinesRenderingData(e.viewportData.startLineNumber,e.viewportData.endLineNumber,r);this._renderResult=[];for(let a=e.viewportData.startLineNumber;a<=e.viewportData.endLineNumber;a++){const l=a-e.viewportData.startLineNumber,c=o.data[l];let u=null;if(this._options.renderWhitespace==="selection"){const h=this._selection;for(const d of h){if(d.endLineNumber<a||d.startLineNumber>a)continue;const f=d.startLineNumber===a?d.startColumn:c.minColumn,g=d.endLineNumber===a?d.endColumn:c.maxColumn;f<g&&(u||(u=[]),u.push(new Lpe(f-1,g-1)))}}this._renderResult[l]=this._applyRenderWhitespace(e,a,u,c)}}_applyRenderWhitespace(e,t,i,s){if(this._options.renderWhitespace==="selection"&&!i||this._options.renderWhitespace==="trailing"&&s.continuesWithWrappedLine)return"";const r=this._context.theme.getColor(xf),o=this._options.renderWithSVG,a=s.content,l=this._options.stopRenderingLineAfter===-1?a.length:Math.min(this._options.stopRenderingLineAfter,a.length),c=s.continuesWithWrappedLine,u=s.minColumn-1,h=this._options.renderWhitespace==="boundary",d=this._options.renderWhitespace==="trailing",f=this._options.lineHeight,g=this._options.middotWidth,p=this._options.wsmiddotWidth,m=this._options.spaceWidth,_=Math.abs(p-m),b=Math.abs(g-m),y=_<b?11825:183,w=this._options.canUseHalfwidthRightwardsArrow;let S="",E=!1,L=zr(a),k;L===-1?(E=!0,L=l,k=l):k=wu(a);let x=0,I=i&&i[x],N=0;for(let T=u;T<l;T++){const P=a.charCodeAt(T);if(I&&T>=I.endOffset&&(x++,I=i&&i[x]),P!==9&&P!==32||d&&!E&&T<=k)continue;if(h&&T>=L&&T<=k&&P===32){const F=T-1>=0?a.charCodeAt(T-1):0,j=T+1<l?a.charCodeAt(T+1):0;if(F!==32&&j!==32)continue}if(h&&c&&T===l-1){const F=T-1>=0?a.charCodeAt(T-1):0;if(P===32&&F!==32&&F!==9)continue}if(i&&(!I||I.startOffset>T||I.endOffset<=T))continue;const R=e.visibleRangeForPosition(new he(t,T+1));R&&(o?(N=Math.max(N,R.left),P===9?S+=this._renderArrow(f,m,R.left):S+=`<circle cx="${(R.left+m/2).toFixed(2)}" cy="${(f/2).toFixed(2)}" r="${(m/7).toFixed(2)}" />`):P===9?S+=`<div class="mwh" style="left:${R.left}px;height:${f}px;">${w?"→":"→"}</div>`:S+=`<div class="mwh" style="left:${R.left}px;height:${f}px;">${String.fromCharCode(y)}</div>`)}return o?(N=Math.round(N+m),`<svg style="position:absolute;width:${N}px;height:${f}px" viewBox="0 0 ${N} ${f}" xmlns="http://www.w3.org/2000/svg" fill="${r}">`+S+"</svg>"):S}_renderArrow(e,t,i){const s=t/7,r=t,o=e/2,a=i,l={x:0,y:s/2},c={x:100/125*r,y:l.y},u={x:c.x-.2*c.x,y:c.y+.2*c.x},h={x:u.x+.1*c.x,y:u.y+.1*c.x},d={x:h.x+.35*c.x,y:h.y-.35*c.x},f={x:d.x,y:-d.y},g={x:h.x,y:-h.y},p={x:u.x,y:-u.y},m={x:c.x,y:-c.y},_={x:l.x,y:-l.y};return`<path d="M ${[l,c,u,h,d,f,g,p,m,_].map(w=>`${(a+w.x).toFixed(2)} ${(o+w.y).toFixed(2)}`).join(" L ")}" />`}render(e,t){if(!this._renderResult)return"";const i=t-e;return i<0||i>=this._renderResult.length?"":this._renderResult[i]}}class Tee{constructor(e){const t=e.options,i=t.get(50),s=t.get(38);s==="off"?(this.renderWhitespace="none",this.renderWithSVG=!1):s==="svg"?(this.renderWhitespace=t.get(98),this.renderWithSVG=!0):(this.renderWhitespace=t.get(98),this.renderWithSVG=!1),this.spaceWidth=i.spaceWidth,this.middotWidth=i.middotWidth,this.wsmiddotWidth=i.wsmiddotWidth,this.canUseHalfwidthRightwardsArrow=i.canUseHalfwidthRightwardsArrow,this.lineHeight=t.get(66),this.stopRenderingLineAfter=t.get(116)}equals(e){return this.renderWhitespace===e.renderWhitespace&&this.renderWithSVG===e.renderWithSVG&&this.spaceWidth===e.spaceWidth&&this.middotWidth===e.middotWidth&&this.wsmiddotWidth===e.wsmiddotWidth&&this.canUseHalfwidthRightwardsArrow===e.canUseHalfwidthRightwardsArrow&&this.lineHeight===e.lineHeight&&this.stopRenderingLineAfter===e.stopRenderingLineAfter}}var jUe=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},qUe=function(n,e){return function(t,i){e(t,i,n)}};let x9=class extends bE{constructor(e,t,i,s,r,o,a){super(),this._instantiationService=a,this._shouldRecomputeGlyphMarginLanes=!1,this._selections=[new Ze(1,1,1,1)],this._renderAnimationFrame=null;const l=new Hze(t,s,r,e);this._context=new HUe(t,i,s),this._context.addEventHandler(this),this._viewParts=[],this._textAreaHandler=this._instantiationService.createInstance(k9,this._context,l,this._createTextAreaHandlerHelper()),this._viewParts.push(this._textAreaHandler),this._linesContent=fi(document.createElement("div")),this._linesContent.setClassName("lines-content monaco-editor-background"),this._linesContent.setPosition("absolute"),this.domNode=fi(document.createElement("div")),this.domNode.setClassName(this._getEditorClassName()),this.domNode.setAttribute("role","code"),this._overflowGuardContainer=fi(document.createElement("div")),pd.write(this._overflowGuardContainer,3),this._overflowGuardContainer.setClassName("overflow-guard"),this._scrollbar=new Zze(this._context,this._linesContent,this.domNode,this._overflowGuardContainer),this._viewParts.push(this._scrollbar),this._viewLines=new qO(this._context,this._linesContent),this._viewZones=new BUe(this._context),this._viewParts.push(this._viewZones);const c=new IUe(this._context);this._viewParts.push(c);const u=new PUe(this._context);this._viewParts.push(u);const h=new zze(this._context);this._viewParts.push(h),h.addDynamicOverlay(new Kze(this._context)),h.addDynamicOverlay(new Hn(this._context)),h.addDynamicOverlay(new sUe(this._context)),h.addDynamicOverlay(new Yze(this._context)),h.addDynamicOverlay(new UUe(this._context));const d=new Uze(this._context);this._viewParts.push(d),d.addDynamicOverlay(new Gze(this._context)),d.addDynamicOverlay(new pUe(this._context)),d.addDynamicOverlay(new gUe(this._context)),d.addDynamicOverlay(new kE(this._context)),this._glyphMarginWidgets=new uUe(this._context),this._viewParts.push(this._glyphMarginWidgets);const f=new O_(this._context);f.getDomNode().appendChild(this._viewZones.marginDomNode),f.getDomNode().appendChild(d.getDomNode()),f.getDomNode().appendChild(this._glyphMarginWidgets.domNode),this._viewParts.push(f),this._contentWidgets=new jze(this._context,this.domNode),this._viewParts.push(this._contentWidgets),this._viewCursors=new VL(this._context),this._viewParts.push(this._viewCursors),this._overlayWidgets=new EUe(this._context),this._viewParts.push(this._overlayWidgets);const g=new AUe(this._context);this._viewParts.push(g);const p=new zUe(this._context);this._viewParts.push(p);const m=new xUe(this._context);if(this._viewParts.push(m),c){const _=this._scrollbar.getOverviewRulerLayoutInfo();_.parent.insertBefore(c.getDomNode(),_.insertBefore)}this._linesContent.appendChild(h.getDomNode()),this._linesContent.appendChild(g.domNode),this._linesContent.appendChild(this._viewZones.domNode),this._linesContent.appendChild(this._viewLines.getDomNode()),this._linesContent.appendChild(this._contentWidgets.domNode),this._linesContent.appendChild(this._viewCursors.getDomNode()),this._overflowGuardContainer.appendChild(f.getDomNode()),this._overflowGuardContainer.appendChild(this._scrollbar.getDomNode()),this._overflowGuardContainer.appendChild(u.getDomNode()),this._overflowGuardContainer.appendChild(this._textAreaHandler.textArea),this._overflowGuardContainer.appendChild(this._textAreaHandler.textAreaCover),this._overflowGuardContainer.appendChild(this._overlayWidgets.getDomNode()),this._overflowGuardContainer.appendChild(m.getDomNode()),this._overflowGuardContainer.appendChild(p.domNode),this.domNode.appendChild(this._overflowGuardContainer),o?o.appendChild(this._contentWidgets.overflowingContentWidgetsDomNode.domNode):this.domNode.appendChild(this._contentWidgets.overflowingContentWidgetsDomNode),this._applyLayout(),this._pointerHandler=this._register(new Z$e(this._context,l,this._createPointerHandlerHelper()))}_computeGlyphMarginLaneCount(){const e=this._context.viewModel.model;let t=[];t=t.concat(e.getAllMarginDecorations().map(r=>{var o,a;const l=(a=(o=r.options.glyphMargin)===null||o===void 0?void 0:o.position)!==null&&a!==void 0?a:l_.Left;return{range:r.range,lane:l}})),t=t.concat(this._glyphMarginWidgets.getWidgets().map(r=>({range:e.validateRange(r.preference.range),lane:r.preference.lane}))),t.sort((r,o)=>M.compareRangesUsingStarts(r.range,o.range));let i=null,s=null;for(const r of t)if(r.lane===l_.Left&&(!i||M.compareRangesUsingEnds(i,r.range)<0)&&(i=r.range),r.lane===l_.Right&&(!s||M.compareRangesUsingEnds(s,r.range)<0)&&(s=r.range),i&&s){if(i.endLineNumber<s.startLineNumber){i=null;continue}if(s.endLineNumber<i.startLineNumber){s=null;continue}return 2}return 1}_createPointerHandlerHelper(){return{viewDomNode:this.domNode.domNode,linesContentDomNode:this._linesContent.domNode,viewLinesDomNode:this._viewLines.getDomNode().domNode,focusTextArea:()=>{this.focus()},dispatchTextAreaEvent:e=>{this._textAreaHandler.textArea.domNode.dispatchEvent(e)},getLastRenderData:()=>{const e=this._viewCursors.getLastRenderData()||[],t=this._textAreaHandler.getLastRenderData();return new E$e(e,t)},renderNow:()=>{this.render(!0,!1)},shouldSuppressMouseDownOnViewZone:e=>this._viewZones.shouldSuppressMouseDownOnViewZone(e),shouldSuppressMouseDownOnWidget:e=>this._contentWidgets.shouldSuppressMouseDownOnWidget(e),getPositionFromDOMInfo:(e,t)=>(this._flushAccumulatedAndRenderNow(),this._viewLines.getPositionFromDOMInfo(e,t)),visibleRangeForPosition:(e,t)=>(this._flushAccumulatedAndRenderNow(),this._viewLines.visibleRangeForPosition(new he(e,t))),getLineWidth:e=>(this._flushAccumulatedAndRenderNow(),this._viewLines.getLineWidth(e))}}_createTextAreaHandlerHelper(){return{visibleRangeForPosition:e=>(this._flushAccumulatedAndRenderNow(),this._viewLines.visibleRangeForPosition(e))}}_applyLayout(){const t=this._context.configuration.options.get(143);this.domNode.setWidth(t.width),this.domNode.setHeight(t.height),this._overflowGuardContainer.setWidth(t.width),this._overflowGuardContainer.setHeight(t.height),this._linesContent.setWidth(1e6),this._linesContent.setHeight(1e6)}_getEditorClassName(){const e=this._textAreaHandler.isFocused()?" focused":"";return this._context.configuration.options.get(140)+" "+w9(this._context.theme.type)+e}handleEvents(e){super.handleEvents(e),this._scheduleRender()}onConfigurationChanged(e){return this.domNode.setClassName(this._getEditorClassName()),this._applyLayout(),!1}onCursorStateChanged(e){return this._selections=e.selections,!1}onDecorationsChanged(e){return e.affectsGlyphMargin&&(this._shouldRecomputeGlyphMarginLanes=!0),!1}onFocusChanged(e){return this.domNode.setClassName(this._getEditorClassName()),!1}onThemeChanged(e){return this._context.theme.update(e.theme),this.domNode.setClassName(this._getEditorClassName()),!1}dispose(){this._renderAnimationFrame!==null&&(this._renderAnimationFrame.dispose(),this._renderAnimationFrame=null),this._contentWidgets.overflowingContentWidgetsDomNode.domNode.remove(),this._context.removeEventHandler(this),this._viewLines.dispose();for(const e of this._viewParts)e.dispose();super.dispose()}_scheduleRender(){if(this._store.isDisposed)throw new an;if(this._renderAnimationFrame===null){const e=this._createCoordinatedRendering();this._renderAnimationFrame=E9.INSTANCE.scheduleCoordinatedRendering({window:pt(this.domNode.domNode),prepareRenderText:()=>{if(this._store.isDisposed)throw new an;try{return e.prepareRenderText()}finally{this._renderAnimationFrame=null}},renderText:()=>{if(this._store.isDisposed)throw new an;return e.renderText()},prepareRender:(t,i)=>{if(this._store.isDisposed)throw new an;return e.prepareRender(t,i)},render:(t,i)=>{if(this._store.isDisposed)throw new an;return e.render(t,i)}})}}_flushAccumulatedAndRenderNow(){const e=this._createCoordinatedRendering();np(()=>e.prepareRenderText());const t=np(()=>e.renderText());if(t){const[i,s]=t;np(()=>e.prepareRender(i,s)),np(()=>e.render(i,s))}}_getViewPartsToRender(){const e=[];let t=0;for(const i of this._viewParts)i.shouldRender()&&(e[t++]=i);return e}_createCoordinatedRendering(){return{prepareRenderText:()=>{this._shouldRecomputeGlyphMarginLanes&&(this._shouldRecomputeGlyphMarginLanes=!1,this._context.configuration.setGlyphMarginDecorationLaneCount(this._computeGlyphMarginLaneCount())),ip.onRenderStart()},renderText:()=>{if(!this.domNode.domNode.isConnected)return null;let e=this._getViewPartsToRender();if(!this._viewLines.shouldRender()&&e.length===0)return null;const t=this._context.viewLayout.getLinesViewportData();this._context.viewModel.setViewport(t.startLineNumber,t.endLineNumber,t.centeredLineNumber);const i=new $Ue(this._selections,t,this._context.viewLayout.getWhitespaceViewportData(),this._context.viewModel);return this._contentWidgets.shouldRender()&&this._contentWidgets.onBeforeRender(i),this._viewLines.shouldRender()&&(this._viewLines.renderText(i),this._viewLines.onDidRender(),e=this._getViewPartsToRender()),[e,new l$e(this._context.viewLayout,i,this._viewLines)]},prepareRender:(e,t)=>{for(const i of e)i.prepareRender(t)},render:(e,t)=>{for(const i of e)i.render(t),i.onDidRender()}}}delegateVerticalScrollbarPointerDown(e){this._scrollbar.delegateVerticalScrollbarPointerDown(e)}delegateScrollFromMouseWheelEvent(e){this._scrollbar.delegateScrollFromMouseWheelEvent(e)}restoreState(e){this._context.viewModel.viewLayout.setScrollPosition({scrollTop:e.scrollTop,scrollLeft:e.scrollLeft},1),this._context.viewModel.visibleLinesStabilized()}getOffsetForColumn(e,t){const i=this._context.viewModel.model.validatePosition({lineNumber:e,column:t}),s=this._context.viewModel.coordinatesConverter.convertModelPositionToViewPosition(i);this._flushAccumulatedAndRenderNow();const r=this._viewLines.visibleRangeForPosition(new he(s.lineNumber,s.column));return r?r.left:-1}getTargetAtClientPoint(e,t){const i=this._pointerHandler.getTargetAtClientPoint(e,t);return i?UO.convertViewToModelMouseTarget(i,this._context.viewModel.coordinatesConverter):null}createOverviewRuler(e){return new NUe(this._context,e)}change(e){this._viewZones.changeViewZones(e),this._scheduleRender()}render(e,t){if(t){this._viewLines.forceShouldRender();for(const i of this._viewParts)i.forceShouldRender()}e?this._flushAccumulatedAndRenderNow():this._scheduleRender()}writeScreenReaderContent(e){this._textAreaHandler.writeScreenReaderContent(e)}focus(){this._textAreaHandler.focusTextArea()}isFocused(){return this._textAreaHandler.isFocused()}setAriaOptions(e){this._textAreaHandler.setAriaOptions(e)}addContentWidget(e){this._contentWidgets.addWidget(e.widget),this.layoutContentWidget(e),this._scheduleRender()}layoutContentWidget(e){var t,i,s,r,o,a,l,c;this._contentWidgets.setWidgetPosition(e.widget,(i=(t=e.position)===null||t===void 0?void 0:t.position)!==null&&i!==void 0?i:null,(r=(s=e.position)===null||s===void 0?void 0:s.secondaryPosition)!==null&&r!==void 0?r:null,(a=(o=e.position)===null||o===void 0?void 0:o.preference)!==null&&a!==void 0?a:null,(c=(l=e.position)===null||l===void 0?void 0:l.positionAffinity)!==null&&c!==void 0?c:null),this._scheduleRender()}removeContentWidget(e){this._contentWidgets.removeWidget(e.widget),this._scheduleRender()}addOverlayWidget(e){this._overlayWidgets.addWidget(e.widget),this.layoutOverlayWidget(e),this._scheduleRender()}layoutOverlayWidget(e){const t=e.position?e.position.preference:null;this._overlayWidgets.setWidgetPosition(e.widget,t)&&this._scheduleRender()}removeOverlayWidget(e){this._overlayWidgets.removeWidget(e.widget),this._scheduleRender()}addGlyphMarginWidget(e){this._glyphMarginWidgets.addWidget(e.widget),this._shouldRecomputeGlyphMarginLanes=!0,this._scheduleRender()}layoutGlyphMarginWidget(e){const t=e.position;this._glyphMarginWidgets.setWidgetPosition(e.widget,t)&&(this._shouldRecomputeGlyphMarginLanes=!0,this._scheduleRender())}removeGlyphMarginWidget(e){this._glyphMarginWidgets.removeWidget(e.widget),this._shouldRecomputeGlyphMarginLanes=!0,this._scheduleRender()}};x9=jUe([qUe(6,at)],x9);function np(n){try{return n()}catch(e){return vt(e),null}}class E9{constructor(){this._coordinatedRenderings=[],this._animationFrameRunners=new Map}scheduleCoordinatedRendering(e){return this._coordinatedRenderings.push(e),this._scheduleRender(e.window),{dispose:()=>{const t=this._coordinatedRenderings.indexOf(e);if(t!==-1&&(this._coordinatedRenderings.splice(t,1),this._coordinatedRenderings.length===0)){for(const[i,s]of this._animationFrameRunners)s.dispose();this._animationFrameRunners.clear()}}}}_scheduleRender(e){if(!this._animationFrameRunners.has(e)){const t=()=>{this._animationFrameRunners.delete(e),this._onRenderScheduled()};this._animationFrameRunners.set(e,FA(e,t,100))}}_onRenderScheduled(){const e=this._coordinatedRenderings.slice(0);this._coordinatedRenderings=[];for(const i of e)np(()=>i.prepareRenderText());const t=[];for(let i=0,s=e.length;i<s;i++){const r=e[i];t[i]=np(()=>r.renderText())}for(let i=0,s=e.length;i<s;i++){const r=e[i],o=t[i];if(!o)continue;const[a,l]=o;np(()=>r.prepareRender(a,l))}for(let i=0,s=e.length;i<s;i++){const r=e[i],o=t[i];if(!o)continue;const[a,l]=o;np(()=>r.render(a,l))}}}E9.INSTANCE=new E9;class eme{constructor(e,t,i,s,r,o,a){this.id=e,this.label=t,this.alias=i,this.metadata=s,this._precondition=r,this._run=o,this._contextKeyService=a}isSupported(){return this._contextKeyService.contextMatchesRules(this._precondition)}run(e){return this.isSupported()?this._run(e):Promise.resolve(void 0)}}const EE={ICodeEditor:"vs.editor.ICodeEditor",IDiffEditor:"vs.editor.IDiffEditor"};function im(n){let e=0,t=0,i=0,s=0;for(let r=0,o=n.length;r<o;r++){const a=n.charCodeAt(r);a===13?(e===0&&(t=r),e++,r+1<o&&n.charCodeAt(r+1)===10?(s|=2,r++):s|=3,i=r+1):a===10&&(s|=1,e===0&&(t=r),e++,i=r+1)}return e===0&&(t=n.length),[e,t,n.length-i,s]}class Nt{static addRange(e,t){let i=0;for(;i<t.length&&t[i].endExclusive<e.start;)i++;let s=i;for(;s<t.length&&t[s].start<=e.endExclusive;)s++;if(i===s)t.splice(i,0,e);else{const r=Math.min(e.start,t[i].start),o=Math.max(e.endExclusive,t[s-1].endExclusive);t.splice(i,s-i,new Nt(r,o))}}static tryCreate(e,t){if(!(e>t))return new Nt(e,t)}static ofLength(e){return new Nt(0,e)}static ofStartAndLength(e,t){return new Nt(e,e+t)}constructor(e,t){if(this.start=e,this.endExclusive=t,e>t)throw new an(`Invalid range: ${this.toString()}`)}get isEmpty(){return this.start===this.endExclusive}delta(e){return new Nt(this.start+e,this.endExclusive+e)}deltaStart(e){return new Nt(this.start+e,this.endExclusive)}deltaEnd(e){return new Nt(this.start,this.endExclusive+e)}get length(){return this.endExclusive-this.start}toString(){return`[${this.start}, ${this.endExclusive})`}equals(e){return this.start===e.start&&this.endExclusive===e.endExclusive}containsRange(e){return this.start<=e.start&&e.endExclusive<=this.endExclusive}contains(e){return this.start<=e&&e<this.endExclusive}join(e){return new Nt(Math.min(this.start,e.start),Math.max(this.endExclusive,e.endExclusive))}intersect(e){const t=Math.max(this.start,e.start),i=Math.min(this.endExclusive,e.endExclusive);if(t<=i)return new Nt(t,i)}isBefore(e){return this.endExclusive<=e.start}isAfter(e){return this.start>=e.endExclusive}slice(e){return e.slice(this.start,this.endExclusive)}clip(e){if(this.isEmpty)throw new an(`Invalid clipping range: ${this.toString()}`);return Math.max(this.start,Math.min(this.endExclusive-1,e))}clipCyclic(e){if(this.isEmpty)throw new an(`Invalid clipping range: ${this.toString()}`);return e<this.start?this.endExclusive-(this.start-e)%this.length:e>=this.endExclusive?this.start+(e-this.start)%this.length:e}forEach(e){for(let t=this.start;t<this.endExclusive;t++)e(t)}}class kq{constructor(){this._sortedRanges=[]}addRange(e){let t=0;for(;t<this._sortedRanges.length&&this._sortedRanges[t].endExclusive<e.start;)t++;let i=t;for(;i<this._sortedRanges.length&&this._sortedRanges[i].start<=e.endExclusive;)i++;if(t===i)this._sortedRanges.splice(t,0,e);else{const s=Math.min(e.start,this._sortedRanges[t].start),r=Math.max(e.endExclusive,this._sortedRanges[i-1].endExclusive);this._sortedRanges.splice(t,i-t,new Nt(s,r))}}toString(){return this._sortedRanges.map(e=>e.toString()).join(", ")}intersectsStrict(e){let t=0;for(;t<this._sortedRanges.length&&this._sortedRanges[t].endExclusive<=e.start;)t++;return t<this._sortedRanges.length&&this._sortedRanges[t].start<e.endExclusive}intersectWithRange(e){const t=new kq;for(const i of this._sortedRanges){const s=i.intersect(e);s&&t.addRange(s)}return t}intersectWithRangeLength(e){return this.intersectWithRange(e).length}get length(){return this._sortedRanges.reduce((e,t)=>e+t.length,0)}}class xt{static fromRange(e){return new xt(e.startLineNumber,e.endLineNumber)}static fromRangeInclusive(e){return new xt(e.startLineNumber,e.endLineNumber+1)}static joinMany(e){if(e.length===0)return[];let t=new cu(e[0].slice());for(let i=1;i<e.length;i++)t=t.getUnion(new cu(e[i].slice()));return t.ranges}static ofLength(e,t){return new xt(e,e+t)}static deserialize(e){return new xt(e[0],e[1])}constructor(e,t){if(e>t)throw new an(`startLineNumber ${e} cannot be after endLineNumberExclusive ${t}`);this.startLineNumber=e,this.endLineNumberExclusive=t}contains(e){return this.startLineNumber<=e&&e<this.endLineNumberExclusive}get isEmpty(){return this.startLineNumber===this.endLineNumberExclusive}delta(e){return new xt(this.startLineNumber+e,this.endLineNumberExclusive+e)}deltaLength(e){return new xt(this.startLineNumber,this.endLineNumberExclusive+e)}get length(){return this.endLineNumberExclusive-this.startLineNumber}join(e){return new xt(Math.min(this.startLineNumber,e.startLineNumber),Math.max(this.endLineNumberExclusive,e.endLineNumberExclusive))}toString(){return`[${this.startLineNumber},${this.endLineNumberExclusive})`}intersect(e){const t=Math.max(this.startLineNumber,e.startLineNumber),i=Math.min(this.endLineNumberExclusive,e.endLineNumberExclusive);if(t<=i)return new xt(t,i)}intersectsStrict(e){return this.startLineNumber<e.endLineNumberExclusive&&e.startLineNumber<this.endLineNumberExclusive}overlapOrTouch(e){return this.startLineNumber<=e.endLineNumberExclusive&&e.startLineNumber<=this.endLineNumberExclusive}equals(e){return this.startLineNumber===e.startLineNumber&&this.endLineNumberExclusive===e.endLineNumberExclusive}toInclusiveRange(){return this.isEmpty?null:new M(this.startLineNumber,1,this.endLineNumberExclusive-1,Number.MAX_SAFE_INTEGER)}toExclusiveRange(){return new M(this.startLineNumber,1,this.endLineNumberExclusive,1)}mapToLineArray(e){const t=[];for(let i=this.startLineNumber;i<this.endLineNumberExclusive;i++)t.push(e(i));return t}forEach(e){for(let t=this.startLineNumber;t<this.endLineNumberExclusive;t++)e(t)}serialize(){return[this.startLineNumber,this.endLineNumberExclusive]}includes(e){return this.startLineNumber<=e&&e<this.endLineNumberExclusive}toOffsetRange(){return new Nt(this.startLineNumber-1,this.endLineNumberExclusive-1)}}class cu{constructor(e=[]){this._normalizedRanges=e}get ranges(){return this._normalizedRanges}addRange(e){if(e.length===0)return;const t=RL(this._normalizedRanges,s=>s.endLineNumberExclusive>=e.startLineNumber),i=PL(this._normalizedRanges,s=>s.startLineNumber<=e.endLineNumberExclusive)+1;if(t===i)this._normalizedRanges.splice(t,0,e);else if(t===i-1){const s=this._normalizedRanges[t];this._normalizedRanges[t]=s.join(e)}else{const s=this._normalizedRanges[t].join(this._normalizedRanges[i-1]).join(e);this._normalizedRanges.splice(t,i-t,s)}}contains(e){const t=ky(this._normalizedRanges,i=>i.startLineNumber<=e);return!!t&&t.endLineNumberExclusive>e}intersects(e){const t=ky(this._normalizedRanges,i=>i.startLineNumber<e.endLineNumberExclusive);return!!t&&t.endLineNumberExclusive>e.startLineNumber}getUnion(e){if(this._normalizedRanges.length===0)return e;if(e._normalizedRanges.length===0)return this;const t=[];let i=0,s=0,r=null;for(;i<this._normalizedRanges.length||s<e._normalizedRanges.length;){let o=null;if(i<this._normalizedRanges.length&&s<e._normalizedRanges.length){const a=this._normalizedRanges[i],l=e._normalizedRanges[s];a.startLineNumber<l.startLineNumber?(o=a,i++):(o=l,s++)}else i<this._normalizedRanges.length?(o=this._normalizedRanges[i],i++):(o=e._normalizedRanges[s],s++);r===null?r=o:r.endLineNumberExclusive>=o.startLineNumber?r=new xt(r.startLineNumber,Math.max(r.endLineNumberExclusive,o.endLineNumberExclusive)):(t.push(r),r=o)}return r!==null&&t.push(r),new cu(t)}subtractFrom(e){const t=RL(this._normalizedRanges,o=>o.endLineNumberExclusive>=e.startLineNumber),i=PL(this._normalizedRanges,o=>o.startLineNumber<=e.endLineNumberExclusive)+1;if(t===i)return new cu([e]);const s=[];let r=e.startLineNumber;for(let o=t;o<i;o++){const a=this._normalizedRanges[o];a.startLineNumber>r&&s.push(new xt(r,a.startLineNumber)),r=a.endLineNumberExclusive}return r<e.endLineNumberExclusive&&s.push(new xt(r,e.endLineNumberExclusive)),new cu(s)}toString(){return this._normalizedRanges.map(e=>e.toString()).join(", ")}getIntersection(e){const t=[];let i=0,s=0;for(;i<this._normalizedRanges.length&&s<e._normalizedRanges.length;){const r=this._normalizedRanges[i],o=e._normalizedRanges[s],a=r.intersect(o);a&&!a.isEmpty&&t.push(a),r.endLineNumberExclusive<o.endLineNumberExclusive?i++:s++}return new cu(t)}getWithDelta(e){return new cu(this._normalizedRanges.map(t=>t.delta(e)))}}class Nee{constructor(e,t,i,s){this.range=e,this.nestingLevel=t,this.nestingLevelOfEqualBracketType=i,this.isInvalid=s}}class KUe{constructor(e,t,i,s,r,o){this.range=e,this.openingBracketRange=t,this.closingBracketRange=i,this.nestingLevel=s,this.nestingLevelOfEqualBracketType=r,this.bracketPairNode=o}get openingBracketInfo(){return this.bracketPairNode.openingBracket.bracketInfo}}class GUe extends KUe{constructor(e,t,i,s,r,o,a){super(e,t,i,s,r,o),this.minVisibleColumnIndentation=a}}class HL{constructor(e,t){this.lineCount=e,this.columnCount=t}toString(){return`${this.lineCount},${this.columnCount}`}}HL.zero=new HL(0,0);function YUe(n,e,t,i){return n!==t?Xn(t-n,i):Xn(0,i-e)}const co=0;function sP(n){return n===0}const Ua=2**26;function Xn(n,e){return n*Ua+e}function Al(n){const e=n,t=Math.floor(e/Ua),i=e-t*Ua;return new HL(t,i)}function ZUe(n){return Math.floor(n/Ua)}function Ln(n,e){let t=n+e;return e>=Ua&&(t=t-n%Ua),t}function XUe(n,e){return n.reduce((t,i)=>Ln(t,e(i)),co)}function tme(n,e){return n===e}function $L(n,e){const t=n,i=e;if(i-t<=0)return co;const r=Math.floor(t/Ua),o=Math.floor(i/Ua),a=i-o*Ua;if(r===o){const l=t-r*Ua;return Xn(0,a-l)}else return Xn(o-r,a)}function Lb(n,e){return n<e}function xb(n,e){return n<=e}function bS(n,e){return n>=e}function q0(n){return Xn(n.lineNumber-1,n.column-1)}function c_(n,e){const t=n,i=Math.floor(t/Ua),s=t-i*Ua,r=e,o=Math.floor(r/Ua),a=r-o*Ua;return new M(i+1,s+1,o+1,a+1)}function QUe(n){const e=fd(n);return Xn(e.length-1,e[e.length-1].length)}class Ef{static fromModelContentChanges(e){return e.map(i=>{const s=M.lift(i.range);return new Ef(q0(s.getStartPosition()),q0(s.getEndPosition()),QUe(i.text))}).reverse()}constructor(e,t,i){this.startOffset=e,this.endOffset=t,this.newLength=i}toString(){return`[${Al(this.startOffset)}...${Al(this.endOffset)}) -> ${Al(this.newLength)}`}}class JUe{constructor(e){this.nextEditIdx=0,this.deltaOldToNewLineCount=0,this.deltaOldToNewColumnCount=0,this.deltaLineIdxInOld=-1,this.edits=e.map(t=>Lq.from(t))}getOffsetBeforeChange(e){return this.adjustNextEdit(e),this.translateCurToOld(e)}getDistanceToNextChange(e){this.adjustNextEdit(e);const t=this.edits[this.nextEditIdx],i=t?this.translateOldToCur(t.offsetObj):null;return i===null?null:$L(e,i)}translateOldToCur(e){return e.lineCount===this.deltaLineIdxInOld?Xn(e.lineCount+this.deltaOldToNewLineCount,e.columnCount+this.deltaOldToNewColumnCount):Xn(e.lineCount+this.deltaOldToNewLineCount,e.columnCount)}translateCurToOld(e){const t=Al(e);return t.lineCount-this.deltaOldToNewLineCount===this.deltaLineIdxInOld?Xn(t.lineCount-this.deltaOldToNewLineCount,t.columnCount-this.deltaOldToNewColumnCount):Xn(t.lineCount-this.deltaOldToNewLineCount,t.columnCount)}adjustNextEdit(e){for(;this.nextEditIdx<this.edits.length;){const t=this.edits[this.nextEditIdx],i=this.translateOldToCur(t.endOffsetAfterObj);if(xb(i,e)){this.nextEditIdx++;const s=Al(i),r=Al(this.translateOldToCur(t.endOffsetBeforeObj)),o=s.lineCount-r.lineCount;this.deltaOldToNewLineCount+=o;const a=this.deltaLineIdxInOld===t.endOffsetBeforeObj.lineCount?this.deltaOldToNewColumnCount:0,l=s.columnCount-r.columnCount;this.deltaOldToNewColumnCount=a+l,this.deltaLineIdxInOld=t.endOffsetBeforeObj.lineCount}else break}}}class Lq{static from(e){return new Lq(e.startOffset,e.endOffset,e.newLength)}constructor(e,t,i){this.endOffsetBeforeObj=Al(t),this.endOffsetAfterObj=Al(Ln(e,i)),this.offsetObj=Al(e)}}const aN=[];class gs{static create(e,t){if(e<=128&&t.length===0){let i=gs.cache[e];return i||(i=new gs(e,t),gs.cache[e]=i),i}return new gs(e,t)}static getEmpty(){return this.empty}constructor(e,t){this.items=e,this.additionalItems=t}add(e,t){const i=t.getKey(e);let s=i>>5;if(s===0){const o=1<<i|this.items;return o===this.items?this:gs.create(o,this.additionalItems)}s--;const r=this.additionalItems.slice(0);for(;r.length<s;)r.push(0);return r[s]|=1<<(i&31),gs.create(this.items,r)}merge(e){const t=this.items|e.items;if(this.additionalItems===aN&&e.additionalItems===aN)return t===this.items?this:t===e.items?e:gs.create(t,aN);const i=[];for(let s=0;s<Math.max(this.additionalItems.length,e.additionalItems.length);s++){const r=this.additionalItems[s]||0,o=e.additionalItems[s]||0;i.push(r|o)}return gs.create(t,i)}intersects(e){if(this.items&e.items)return!0;for(let t=0;t<Math.min(this.additionalItems.length,e.additionalItems.length);t++)if(this.additionalItems[t]&e.additionalItems[t])return!0;return!1}}gs.cache=new Array(129);gs.empty=gs.create(0,aN);const Aee={getKey(n){return n}};class ime{constructor(){this.items=new Map}getKey(e){let t=this.items.get(e);return t===void 0&&(t=this.items.size,this.items.set(e,t)),t}}class xq{get length(){return this._length}constructor(e){this._length=e}}class zL extends xq{static create(e,t,i){let s=e.length;return t&&(s=Ln(s,t.length)),i&&(s=Ln(s,i.length)),new zL(s,e,t,i,t?t.missingOpeningBracketIds:gs.getEmpty())}get kind(){return 2}get listHeight(){return 0}get childrenLength(){return 3}getChild(e){switch(e){case 0:return this.openingBracket;case 1:return this.child;case 2:return this.closingBracket}throw new Error("Invalid child index")}get children(){const e=[];return e.push(this.openingBracket),this.child&&e.push(this.child),this.closingBracket&&e.push(this.closingBracket),e}constructor(e,t,i,s,r){super(e),this.openingBracket=t,this.child=i,this.closingBracket=s,this.missingOpeningBracketIds=r}canBeReused(e){return!(this.closingBracket===null||e.intersects(this.missingOpeningBracketIds))}deepClone(){return new zL(this.length,this.openingBracket.deepClone(),this.child&&this.child.deepClone(),this.closingBracket&&this.closingBracket.deepClone(),this.missingOpeningBracketIds)}computeMinIndentation(e,t){return this.child?this.child.computeMinIndentation(Ln(e,this.openingBracket.length),t):Number.MAX_SAFE_INTEGER}}class md extends xq{static create23(e,t,i,s=!1){let r=e.length,o=e.missingOpeningBracketIds;if(e.listHeight!==t.listHeight)throw new Error("Invalid list heights");if(r=Ln(r,t.length),o=o.merge(t.missingOpeningBracketIds),i){if(e.listHeight!==i.listHeight)throw new Error("Invalid list heights");r=Ln(r,i.length),o=o.merge(i.missingOpeningBracketIds)}return s?new eje(r,e.listHeight+1,e,t,i,o):new UL(r,e.listHeight+1,e,t,i,o)}static getEmpty(){return new tje(co,0,[],gs.getEmpty())}get kind(){return 4}get missingOpeningBracketIds(){return this._missingOpeningBracketIds}constructor(e,t,i){super(e),this.listHeight=t,this._missingOpeningBracketIds=i,this.cachedMinIndentation=-1}throwIfImmutable(){}makeLastElementMutable(){this.throwIfImmutable();const e=this.childrenLength;if(e===0)return;const t=this.getChild(e-1),i=t.kind===4?t.toMutable():t;return t!==i&&this.setChild(e-1,i),i}makeFirstElementMutable(){if(this.throwIfImmutable(),this.childrenLength===0)return;const t=this.getChild(0),i=t.kind===4?t.toMutable():t;return t!==i&&this.setChild(0,i),i}canBeReused(e){if(e.intersects(this.missingOpeningBracketIds)||this.childrenLength===0)return!1;let t=this;for(;t.kind===4;){const i=t.childrenLength;if(i===0)throw new an;t=t.getChild(i-1)}return t.canBeReused(e)}handleChildrenChanged(){this.throwIfImmutable();const e=this.childrenLength;let t=this.getChild(0).length,i=this.getChild(0).missingOpeningBracketIds;for(let s=1;s<e;s++){const r=this.getChild(s);t=Ln(t,r.length),i=i.merge(r.missingOpeningBracketIds)}this._length=t,this._missingOpeningBracketIds=i,this.cachedMinIndentation=-1}computeMinIndentation(e,t){if(this.cachedMinIndentation!==-1)return this.cachedMinIndentation;let i=Number.MAX_SAFE_INTEGER,s=e;for(let r=0;r<this.childrenLength;r++){const o=this.getChild(r);o&&(i=Math.min(i,o.computeMinIndentation(s,t)),s=Ln(s,o.length))}return this.cachedMinIndentation=i,i}}class UL extends md{get childrenLength(){return this._item3!==null?3:2}getChild(e){switch(e){case 0:return this._item1;case 1:return this._item2;case 2:return this._item3}throw new Error("Invalid child index")}setChild(e,t){switch(e){case 0:this._item1=t;return;case 1:this._item2=t;return;case 2:this._item3=t;return}throw new Error("Invalid child index")}get children(){return this._item3?[this._item1,this._item2,this._item3]:[this._item1,this._item2]}get item1(){return this._item1}get item2(){return this._item2}get item3(){return this._item3}constructor(e,t,i,s,r,o){super(e,t,o),this._item1=i,this._item2=s,this._item3=r}deepClone(){return new UL(this.length,this.listHeight,this._item1.deepClone(),this._item2.deepClone(),this._item3?this._item3.deepClone():null,this.missingOpeningBracketIds)}appendChildOfSameHeight(e){if(this._item3)throw new Error("Cannot append to a full (2,3) tree node");this.throwIfImmutable(),this._item3=e,this.handleChildrenChanged()}unappendChild(){if(!this._item3)throw new Error("Cannot remove from a non-full (2,3) tree node");this.throwIfImmutable();const e=this._item3;return this._item3=null,this.handleChildrenChanged(),e}prependChildOfSameHeight(e){if(this._item3)throw new Error("Cannot prepend to a full (2,3) tree node");this.throwIfImmutable(),this._item3=this._item2,this._item2=this._item1,this._item1=e,this.handleChildrenChanged()}unprependChild(){if(!this._item3)throw new Error("Cannot remove from a non-full (2,3) tree node");this.throwIfImmutable();const e=this._item1;return this._item1=this._item2,this._item2=this._item3,this._item3=null,this.handleChildrenChanged(),e}toMutable(){return this}}class eje extends UL{toMutable(){return new UL(this.length,this.listHeight,this.item1,this.item2,this.item3,this.missingOpeningBracketIds)}throwIfImmutable(){throw new Error("this instance is immutable")}}class rP extends md{get childrenLength(){return this._children.length}getChild(e){return this._children[e]}setChild(e,t){this._children[e]=t}get children(){return this._children}constructor(e,t,i,s){super(e,t,s),this._children=i}deepClone(){const e=new Array(this._children.length);for(let t=0;t<this._children.length;t++)e[t]=this._children[t].deepClone();return new rP(this.length,this.listHeight,e,this.missingOpeningBracketIds)}appendChildOfSameHeight(e){this.throwIfImmutable(),this._children.push(e),this.handleChildrenChanged()}unappendChild(){this.throwIfImmutable();const e=this._children.pop();return this.handleChildrenChanged(),e}prependChildOfSameHeight(e){this.throwIfImmutable(),this._children.unshift(e),this.handleChildrenChanged()}unprependChild(){this.throwIfImmutable();const e=this._children.shift();return this.handleChildrenChanged(),e}toMutable(){return this}}class tje extends rP{toMutable(){return new rP(this.length,this.listHeight,[...this.children],this.missingOpeningBracketIds)}throwIfImmutable(){throw new Error("this instance is immutable")}}const ije=[];class Eq extends xq{get listHeight(){return 0}get childrenLength(){return 0}getChild(e){return null}get children(){return ije}deepClone(){return this}}class S1 extends Eq{get kind(){return 0}get missingOpeningBracketIds(){return gs.getEmpty()}canBeReused(e){return!0}computeMinIndentation(e,t){const i=Al(e),s=(i.columnCount===0?i.lineCount:i.lineCount+1)+1,r=ZUe(Ln(e,this.length))+1;let o=Number.MAX_SAFE_INTEGER;for(let a=s;a<=r;a++){const l=t.getLineFirstNonWhitespaceColumn(a),c=t.getLineContent(a);if(l===0)continue;const u=xs.visibleColumnFromColumn(c,l,t.getOptions().tabSize);o=Math.min(o,u)}return o}}class oP extends Eq{static create(e,t,i){return new oP(e,t,i)}get kind(){return 1}get missingOpeningBracketIds(){return gs.getEmpty()}constructor(e,t,i){super(e),this.bracketInfo=t,this.bracketIds=i}get text(){return this.bracketInfo.bracketText}get languageId(){return this.bracketInfo.languageId}canBeReused(e){return!1}computeMinIndentation(e,t){return Number.MAX_SAFE_INTEGER}}class nje extends Eq{get kind(){return 3}constructor(e,t){super(t),this.missingOpeningBracketIds=e}canBeReused(e){return!e.intersects(this.missingOpeningBracketIds)}computeMinIndentation(e,t){return Number.MAX_SAFE_INTEGER}}class dr{static getLanguageId(e){return(e&255)>>>0}static getTokenType(e){return(e&768)>>>8}static containsBalancedBrackets(e){return(e&1024)!==0}static getFontStyle(e){return(e&30720)>>>11}static getForeground(e){return(e&16744448)>>>15}static getBackground(e){return(e&4278190080)>>>24}static getClassNameFromMetadata(e){let i="mtk"+this.getForeground(e);const s=this.getFontStyle(e);return s&1&&(i+=" mtki"),s&2&&(i+=" mtkb"),s&4&&(i+=" mtku"),s&8&&(i+=" mtks"),i}static getInlineStyleFromMetadata(e,t){const i=this.getForeground(e),s=this.getFontStyle(e);let r=`color: ${t[i]};`;s&1&&(r+="font-style: italic;"),s&2&&(r+="font-weight: bold;");let o="";return s&4&&(o+=" underline"),s&8&&(o+=" line-through"),o&&(r+=`text-decoration:${o};`),r}static getPresentationFromMetadata(e){const t=this.getForeground(e),i=this.getFontStyle(e);return{foreground:t,italic:!!(i&1),bold:!!(i&2),underline:!!(i&4),strikethrough:!!(i&8)}}}let jg=class{constructor(e,t,i,s,r){this.length=e,this.kind=t,this.bracketId=i,this.bracketIds=s,this.astNode=r}};class nme{constructor(e,t){this.textModel=e,this.bracketTokens=t,this.reader=new sje(this.textModel,this.bracketTokens),this._offset=co,this.didPeek=!1,this.peeked=null,this.textBufferLineCount=e.getLineCount(),this.textBufferLastLineLength=e.getLineLength(this.textBufferLineCount)}get offset(){return this._offset}get length(){return Xn(this.textBufferLineCount-1,this.textBufferLastLineLength)}skip(e){this.didPeek=!1,this._offset=Ln(this._offset,e);const t=Al(this._offset);this.reader.setPosition(t.lineCount,t.columnCount)}read(){let e;return this.peeked?(this.didPeek=!1,e=this.peeked):e=this.reader.read(),e&&(this._offset=Ln(this._offset,e.length)),e}peek(){return this.didPeek||(this.peeked=this.reader.read(),this.didPeek=!0),this.peeked}}class sje{constructor(e,t){this.textModel=e,this.bracketTokens=t,this.lineIdx=0,this.line=null,this.lineCharOffset=0,this.lineTokens=null,this.lineTokenOffset=0,this.peekedToken=null,this.textBufferLineCount=e.getLineCount(),this.textBufferLastLineLength=e.getLineLength(this.textBufferLineCount)}setPosition(e,t){e===this.lineIdx?(this.lineCharOffset=t,this.line!==null&&(this.lineTokenOffset=this.lineCharOffset===0?0:this.lineTokens.findTokenIndexAtOffset(this.lineCharOffset))):(this.lineIdx=e,this.lineCharOffset=t,this.line=null),this.peekedToken=null}read(){if(this.peekedToken){const r=this.peekedToken;return this.peekedToken=null,this.lineCharOffset+=r.length,r}if(this.lineIdx>this.textBufferLineCount-1||this.lineIdx===this.textBufferLineCount-1&&this.lineCharOffset>=this.textBufferLastLineLength)return null;this.line===null&&(this.lineTokens=this.textModel.tokenization.getLineTokens(this.lineIdx+1),this.line=this.lineTokens.getLineContent(),this.lineTokenOffset=this.lineCharOffset===0?0:this.lineTokens.findTokenIndexAtOffset(this.lineCharOffset));const e=this.lineIdx,t=this.lineCharOffset;let i=0;for(;;){const r=this.lineTokens,o=r.getCount();let a=null;if(this.lineTokenOffset<o){const l=r.getMetadata(this.lineTokenOffset);for(;this.lineTokenOffset+1<o&&l===r.getMetadata(this.lineTokenOffset+1);)this.lineTokenOffset++;const c=dr.getTokenType(l)===0,u=dr.containsBalancedBrackets(l),h=r.getEndOffset(this.lineTokenOffset);if(u&&c&&this.lineCharOffset<h){const d=r.getLanguageId(this.lineTokenOffset),f=this.line.substring(this.lineCharOffset,h),g=this.bracketTokens.getSingleLanguageBracketTokens(d),p=g.regExpGlobal;if(p){p.lastIndex=0;const m=p.exec(f);m&&(a=g.getToken(m[0]),a&&(this.lineCharOffset+=m.index))}}if(i+=h-this.lineCharOffset,a)if(e!==this.lineIdx||t!==this.lineCharOffset){this.peekedToken=a;break}else return this.lineCharOffset+=a.length,a;else this.lineTokenOffset++,this.lineCharOffset=h}else if(this.lineIdx===this.textBufferLineCount-1||(this.lineIdx++,this.lineTokens=this.textModel.tokenization.getLineTokens(this.lineIdx+1),this.lineTokenOffset=0,this.line=this.lineTokens.getLineContent(),this.lineCharOffset=0,i+=33,i>1e3))break;if(i>1500)break}const s=YUe(e,t,this.lineIdx,this.lineCharOffset);return new jg(s,0,-1,gs.getEmpty(),new S1(s))}}class rje{constructor(e,t){this.text=e,this._offset=co,this.idx=0;const i=t.getRegExpStr(),s=i?new RegExp(i+`| +`,"gi"):null,r=[];let o,a=0,l=0,c=0,u=0;const h=[];for(let g=0;g<60;g++)h.push(new jg(Xn(0,g),0,-1,gs.getEmpty(),new S1(Xn(0,g))));const d=[];for(let g=0;g<60;g++)d.push(new jg(Xn(1,g),0,-1,gs.getEmpty(),new S1(Xn(1,g))));if(s)for(s.lastIndex=0;(o=s.exec(e))!==null;){const g=o.index,p=o[0];if(p===` +`)a++,l=g+1;else{if(c!==g){let m;if(u===a){const _=g-c;if(_<h.length)m=h[_];else{const b=Xn(0,_);m=new jg(b,0,-1,gs.getEmpty(),new S1(b))}}else{const _=a-u,b=g-l;if(_===1&&b<d.length)m=d[b];else{const y=Xn(_,b);m=new jg(y,0,-1,gs.getEmpty(),new S1(y))}}r.push(m)}r.push(t.getToken(p)),c=g+p.length,u=a}}const f=e.length;if(c!==f){const g=u===a?Xn(0,f-c):Xn(a-u,f-l);r.push(new jg(g,0,-1,gs.getEmpty(),new S1(g)))}this.length=Xn(a,f-l),this.tokens=r}get offset(){return this._offset}read(){return this.tokens[this.idx++]||null}peek(){return this.tokens[this.idx]||null}skip(e){throw new aBe}}class Dq{static createFromLanguage(e,t){function i(r){return t.getKey(`${r.languageId}:::${r.bracketText}`)}const s=new Map;for(const r of e.bracketsNew.openingBrackets){const o=Xn(0,r.bracketText.length),a=i(r),l=gs.getEmpty().add(a,Aee);s.set(r.bracketText,new jg(o,1,a,l,oP.create(o,r,l)))}for(const r of e.bracketsNew.closingBrackets){const o=Xn(0,r.bracketText.length);let a=gs.getEmpty();const l=r.getOpeningBrackets();for(const c of l)a=a.add(i(c),Aee);s.set(r.bracketText,new jg(o,2,i(l[0]),a,oP.create(o,r,a)))}return new Dq(s)}constructor(e){this.map=e,this.hasRegExp=!1,this._regExpGlobal=null}getRegExpStr(){if(this.isEmpty)return null;{const e=[...this.map.keys()];return e.sort(),e.reverse(),e.map(t=>oje(t)).join("|")}}get regExpGlobal(){if(!this.hasRegExp){const e=this.getRegExpStr();this._regExpGlobal=e?new RegExp(e,"gi"):null,this.hasRegExp=!0}return this._regExpGlobal}getToken(e){return this.map.get(e.toLowerCase())}findClosingTokenText(e){for(const[t,i]of this.map)if(i.kind===2&&i.bracketIds.intersects(e))return t}get isEmpty(){return this.map.size===0}}function oje(n){let e=Qa(n);return/^[\w ]+/.test(n)&&(e=`\\b${e}`),/[\w ]+$/.test(n)&&(e=`${e}\\b`),e}class sme{constructor(e,t){this.denseKeyProvider=e,this.getLanguageConfiguration=t,this.languageIdToBracketTokens=new Map}didLanguageChange(e){return this.languageIdToBracketTokens.has(e)}getSingleLanguageBracketTokens(e){let t=this.languageIdToBracketTokens.get(e);return t||(t=Dq.createFromLanguage(this.getLanguageConfiguration(e),this.denseKeyProvider),this.languageIdToBracketTokens.set(e,t)),t}}function aje(n){if(n.length===0)return null;if(n.length===1)return n[0];let e=0;function t(){if(e>=n.length)return null;const o=e,a=n[o].listHeight;for(e++;e<n.length&&n[e].listHeight===a;)e++;return e-o>=2?rme(o===0&&e===n.length?n:n.slice(o,e),!1):n[o]}let i=t(),s=t();if(!s)return i;for(let o=t();o;o=t())Pee(i,s)<=Pee(s,o)?(i=j5(i,s),s=o):s=j5(s,o);return j5(i,s)}function rme(n,e=!1){if(n.length===0)return null;if(n.length===1)return n[0];let t=n.length;for(;t>3;){const i=t>>1;for(let s=0;s<i;s++){const r=s<<1;n[s]=md.create23(n[r],n[r+1],r+3===t?n[r+2]:null,e)}t=i}return md.create23(n[0],n[1],t>=3?n[2]:null,e)}function Pee(n,e){return Math.abs(n.listHeight-e.listHeight)}function j5(n,e){return n.listHeight===e.listHeight?md.create23(n,e,null,!1):n.listHeight>e.listHeight?lje(n,e):cje(e,n)}function lje(n,e){n=n.toMutable();let t=n;const i=[];let s;for(;;){if(e.listHeight===t.listHeight){s=e;break}if(t.kind!==4)throw new Error("unexpected");i.push(t),t=t.makeLastElementMutable()}for(let r=i.length-1;r>=0;r--){const o=i[r];s?o.childrenLength>=3?s=md.create23(o.unappendChild(),s,null,!1):(o.appendChildOfSameHeight(s),s=void 0):o.handleChildrenChanged()}return s?md.create23(n,s,null,!1):n}function cje(n,e){n=n.toMutable();let t=n;const i=[];for(;e.listHeight!==t.listHeight;){if(t.kind!==4)throw new Error("unexpected");i.push(t),t=t.makeFirstElementMutable()}let s=e;for(let r=i.length-1;r>=0;r--){const o=i[r];s?o.childrenLength>=3?s=md.create23(s,o.unprependChild(),null,!1):(o.prependChildOfSameHeight(s),s=void 0):o.handleChildrenChanged()}return s?md.create23(s,n,null,!1):n}class uje{constructor(e){this.lastOffset=co,this.nextNodes=[e],this.offsets=[co],this.idxs=[]}readLongestNodeAt(e,t){if(Lb(e,this.lastOffset))throw new Error("Invalid offset");for(this.lastOffset=e;;){const i=Iw(this.nextNodes);if(!i)return;const s=Iw(this.offsets);if(Lb(e,s))return;if(Lb(s,e))if(Ln(s,i.length)<=e)this.nextNodeAfterCurrent();else{const r=q5(i);r!==-1?(this.nextNodes.push(i.getChild(r)),this.offsets.push(s),this.idxs.push(r)):this.nextNodeAfterCurrent()}else{if(t(i))return this.nextNodeAfterCurrent(),i;{const r=q5(i);if(r===-1){this.nextNodeAfterCurrent();return}else this.nextNodes.push(i.getChild(r)),this.offsets.push(s),this.idxs.push(r)}}}}nextNodeAfterCurrent(){for(;;){const e=Iw(this.offsets),t=Iw(this.nextNodes);if(this.nextNodes.pop(),this.offsets.pop(),this.idxs.length===0)break;const i=Iw(this.nextNodes),s=q5(i,this.idxs[this.idxs.length-1]);if(s!==-1){this.nextNodes.push(i.getChild(s)),this.offsets.push(Ln(e,t.length)),this.idxs[this.idxs.length-1]=s;break}else this.idxs.pop()}}}function q5(n,e=-1){for(;;){if(e++,e>=n.childrenLength)return-1;if(n.getChild(e))return e}}function Iw(n){return n.length>0?n[n.length-1]:void 0}function D9(n,e,t,i){return new hje(n,e,t,i).parseDocument()}class hje{constructor(e,t,i,s){if(this.tokenizer=e,this.createImmutableLists=s,this._itemsConstructed=0,this._itemsFromCache=0,i&&s)throw new Error("Not supported");this.oldNodeReader=i?new uje(i):void 0,this.positionMapper=new JUe(t)}parseDocument(){this._itemsConstructed=0,this._itemsFromCache=0;let e=this.parseList(gs.getEmpty(),0);return e||(e=md.getEmpty()),e}parseList(e,t){const i=[];for(;;){let r=this.tryReadChildFromCache(e);if(!r){const o=this.tokenizer.peek();if(!o||o.kind===2&&o.bracketIds.intersects(e))break;r=this.parseChild(e,t+1)}r.kind===4&&r.childrenLength===0||i.push(r)}return this.oldNodeReader?aje(i):rme(i,this.createImmutableLists)}tryReadChildFromCache(e){if(this.oldNodeReader){const t=this.positionMapper.getDistanceToNextChange(this.tokenizer.offset);if(t===null||!sP(t)){const i=this.oldNodeReader.readLongestNodeAt(this.positionMapper.getOffsetBeforeChange(this.tokenizer.offset),s=>t!==null&&!Lb(s.length,t)?!1:s.canBeReused(e));if(i)return this._itemsFromCache++,this.tokenizer.skip(i.length),i}}}parseChild(e,t){this._itemsConstructed++;const i=this.tokenizer.read();switch(i.kind){case 2:return new nje(i.bracketIds,i.length);case 0:return i.astNode;case 1:{if(t>300)return new S1(i.length);const s=e.merge(i.bracketIds),r=this.parseList(s,t+1),o=this.tokenizer.peek();return o&&o.kind===2&&(o.bracketId===i.bracketId||o.bracketIds.intersects(i.bracketIds))?(this.tokenizer.read(),zL.create(i.astNode,r,o.astNode)):zL.create(i.astNode,r,null)}default:throw new Error("unexpected")}}}function aP(n,e){if(n.length===0)return e;if(e.length===0)return n;const t=new Zf(Ree(n)),i=Ree(e);i.push({modified:!1,lengthBefore:void 0,lengthAfter:void 0});let s=t.dequeue();function r(c){if(c===void 0){const h=t.takeWhile(d=>!0)||[];return s&&h.unshift(s),h}const u=[];for(;s&&!sP(c);){const[h,d]=s.splitAt(c);u.push(h),c=$L(h.lengthAfter,c),s=d??t.dequeue()}return sP(c)||u.push(new sp(!1,c,c)),u}const o=[];function a(c,u,h){if(o.length>0&&tme(o[o.length-1].endOffset,c)){const d=o[o.length-1];o[o.length-1]=new Ef(d.startOffset,u,Ln(d.newLength,h))}else o.push({startOffset:c,endOffset:u,newLength:h})}let l=co;for(const c of i){const u=r(c.lengthBefore);if(c.modified){const h=XUe(u,f=>f.lengthBefore),d=Ln(l,h);a(l,d,c.lengthAfter),l=d}else for(const h of u){const d=l;l=Ln(l,h.lengthBefore),h.modified&&a(d,l,h.lengthAfter)}}return o}class sp{constructor(e,t,i){this.modified=e,this.lengthBefore=t,this.lengthAfter=i}splitAt(e){const t=$L(e,this.lengthAfter);return tme(t,co)?[this,void 0]:this.modified?[new sp(this.modified,this.lengthBefore,e),new sp(this.modified,co,t)]:[new sp(this.modified,e,e),new sp(this.modified,t,t)]}toString(){return`${this.modified?"M":"U"}:${Al(this.lengthBefore)} -> ${Al(this.lengthAfter)}`}}function Ree(n){const e=[];let t=co;for(const i of n){const s=$L(t,i.startOffset);sP(s)||e.push(new sp(!1,s,s));const r=$L(i.startOffset,i.endOffset);e.push(new sp(!0,r,i.newLength)),t=i.endOffset}return e}class dje extends pe{didLanguageChange(e){return this.brackets.didLanguageChange(e)}constructor(e,t){if(super(),this.textModel=e,this.getLanguageConfiguration=t,this.didChangeEmitter=new ue,this.denseKeyProvider=new ime,this.brackets=new sme(this.denseKeyProvider,this.getLanguageConfiguration),this.onDidChange=this.didChangeEmitter.event,this.queuedTextEditsForInitialAstWithoutTokens=[],this.queuedTextEdits=[],e.tokenization.hasTokens)e.tokenization.backgroundTokenizationState===2?(this.initialAstWithoutTokens=void 0,this.astWithTokens=this.parseDocumentFromTextBuffer([],void 0,!1)):(this.initialAstWithoutTokens=this.parseDocumentFromTextBuffer([],void 0,!0),this.astWithTokens=this.initialAstWithoutTokens);else{const i=this.brackets.getSingleLanguageBracketTokens(this.textModel.getLanguageId()),s=new rje(this.textModel.getValue(),i);this.initialAstWithoutTokens=D9(s,[],void 0,!0),this.astWithTokens=this.initialAstWithoutTokens}}handleDidChangeBackgroundTokenizationState(){if(this.textModel.tokenization.backgroundTokenizationState===2){const e=this.initialAstWithoutTokens===void 0;this.initialAstWithoutTokens=void 0,e||this.didChangeEmitter.fire()}}handleDidChangeTokens({ranges:e}){const t=e.map(i=>new Ef(Xn(i.fromLineNumber-1,0),Xn(i.toLineNumber,0),Xn(i.toLineNumber-i.fromLineNumber+1,0)));this.handleEdits(t,!0),this.initialAstWithoutTokens||this.didChangeEmitter.fire()}handleContentChanged(e){const t=Ef.fromModelContentChanges(e.changes);this.handleEdits(t,!1)}handleEdits(e,t){const i=aP(this.queuedTextEdits,e);this.queuedTextEdits=i,this.initialAstWithoutTokens&&!t&&(this.queuedTextEditsForInitialAstWithoutTokens=aP(this.queuedTextEditsForInitialAstWithoutTokens,e))}flushQueue(){this.queuedTextEdits.length>0&&(this.astWithTokens=this.parseDocumentFromTextBuffer(this.queuedTextEdits,this.astWithTokens,!1),this.queuedTextEdits=[]),this.queuedTextEditsForInitialAstWithoutTokens.length>0&&(this.initialAstWithoutTokens&&(this.initialAstWithoutTokens=this.parseDocumentFromTextBuffer(this.queuedTextEditsForInitialAstWithoutTokens,this.initialAstWithoutTokens,!1)),this.queuedTextEditsForInitialAstWithoutTokens=[])}parseDocumentFromTextBuffer(e,t,i){const s=t,r=new nme(this.textModel,this.brackets);return D9(r,e,s,i)}getBracketsInRange(e,t){this.flushQueue();const i=Xn(e.startLineNumber-1,e.startColumn-1),s=Xn(e.endLineNumber-1,e.endColumn-1);return new Jh(r=>{const o=this.initialAstWithoutTokens||this.astWithTokens;I9(o,co,o.length,i,s,r,0,0,new Map,t)})}getBracketPairsInRange(e,t){this.flushQueue();const i=q0(e.getStartPosition()),s=q0(e.getEndPosition());return new Jh(r=>{const o=this.initialAstWithoutTokens||this.astWithTokens,a=new fje(r,t,this.textModel);T9(o,co,o.length,i,s,a,0,new Map)})}getFirstBracketAfter(e){this.flushQueue();const t=this.initialAstWithoutTokens||this.astWithTokens;return ame(t,co,t.length,q0(e))}getFirstBracketBefore(e){this.flushQueue();const t=this.initialAstWithoutTokens||this.astWithTokens;return ome(t,co,t.length,q0(e))}}function ome(n,e,t,i){if(n.kind===4||n.kind===2){const s=[];for(const r of n.children)t=Ln(e,r.length),s.push({nodeOffsetStart:e,nodeOffsetEnd:t}),e=t;for(let r=s.length-1;r>=0;r--){const{nodeOffsetStart:o,nodeOffsetEnd:a}=s[r];if(Lb(o,i)){const l=ome(n.children[r],o,a,i);if(l)return l}}return null}else{if(n.kind===3)return null;if(n.kind===1){const s=c_(e,t);return{bracketInfo:n.bracketInfo,range:s}}}return null}function ame(n,e,t,i){if(n.kind===4||n.kind===2){for(const s of n.children){if(t=Ln(e,s.length),Lb(i,t)){const r=ame(s,e,t,i);if(r)return r}e=t}return null}else{if(n.kind===3)return null;if(n.kind===1){const s=c_(e,t);return{bracketInfo:n.bracketInfo,range:s}}}return null}function I9(n,e,t,i,s,r,o,a,l,c,u=!1){if(o>200)return!0;e:for(;;)switch(n.kind){case 4:{const h=n.childrenLength;for(let d=0;d<h;d++){const f=n.getChild(d);if(f){if(t=Ln(e,f.length),xb(e,s)&&bS(t,i)){if(bS(t,s)){n=f;continue e}if(!I9(f,e,t,i,s,r,o,0,l,c))return!1}e=t}}return!0}case 2:{const h=!c||!n.closingBracket||n.closingBracket.bracketInfo.closesColorized(n.openingBracket.bracketInfo);let d=0;if(l){let g=l.get(n.openingBracket.text);g===void 0&&(g=0),d=g,h&&(g++,l.set(n.openingBracket.text,g))}const f=n.childrenLength;for(let g=0;g<f;g++){const p=n.getChild(g);if(p){if(t=Ln(e,p.length),xb(e,s)&&bS(t,i)){if(bS(t,s)&&p.kind!==1){n=p,h?(o++,a=d+1):a=d;continue e}if((h||p.kind!==1||!n.closingBracket)&&!I9(p,e,t,i,s,r,h?o+1:o,h?d+1:d,l,c,!n.closingBracket))return!1}e=t}}return l==null||l.set(n.openingBracket.text,d),!0}case 3:{const h=c_(e,t);return r(new Nee(h,o-1,0,!0))}case 1:{const h=c_(e,t);return r(new Nee(h,o-1,a-1,u))}case 0:return!0}}class fje{constructor(e,t,i){this.push=e,this.includeMinIndentation=t,this.textModel=i}}function T9(n,e,t,i,s,r,o,a){var l;if(o>200)return!0;let c=!0;if(n.kind===2){let u=0;if(a){let f=a.get(n.openingBracket.text);f===void 0&&(f=0),u=f,f++,a.set(n.openingBracket.text,f)}const h=Ln(e,n.openingBracket.length);let d=-1;if(r.includeMinIndentation&&(d=n.computeMinIndentation(e,r.textModel)),c=r.push(new GUe(c_(e,t),c_(e,h),n.closingBracket?c_(Ln(h,((l=n.child)===null||l===void 0?void 0:l.length)||co),t):void 0,o,u,n,d)),e=h,c&&n.child){const f=n.child;if(t=Ln(e,f.length),xb(e,s)&&bS(t,i)&&(c=T9(f,e,t,i,s,r,o+1,a),!c))return!1}a==null||a.set(n.openingBracket.text,u)}else{let u=e;for(const h of n.children){const d=u;if(u=Ln(u,h.length),xb(d,s)&&xb(i,u)&&(c=T9(h,d,u,i,s,r,o,a),!c))return!1}}return c}class gje extends pe{get canBuildAST(){return this.textModel.getValueLength()<=5e6}constructor(e,t){super(),this.textModel=e,this.languageConfigurationService=t,this.bracketPairsTree=this._register(new qs),this.onDidChangeEmitter=new ue,this.onDidChange=this.onDidChangeEmitter.event,this.bracketsRequested=!1,this._register(this.languageConfigurationService.onDidChange(i=>{var s;(!i.languageId||!((s=this.bracketPairsTree.value)===null||s===void 0)&&s.object.didLanguageChange(i.languageId))&&(this.bracketPairsTree.clear(),this.updateBracketPairsTree())}))}handleDidChangeOptions(e){this.bracketPairsTree.clear(),this.updateBracketPairsTree()}handleDidChangeLanguage(e){this.bracketPairsTree.clear(),this.updateBracketPairsTree()}handleDidChangeContent(e){var t;(t=this.bracketPairsTree.value)===null||t===void 0||t.object.handleContentChanged(e)}handleDidChangeBackgroundTokenizationState(){var e;(e=this.bracketPairsTree.value)===null||e===void 0||e.object.handleDidChangeBackgroundTokenizationState()}handleDidChangeTokens(e){var t;(t=this.bracketPairsTree.value)===null||t===void 0||t.object.handleDidChangeTokens(e)}updateBracketPairsTree(){if(this.bracketsRequested&&this.canBuildAST){if(!this.bracketPairsTree.value){const e=new xe;this.bracketPairsTree.value=pje(e.add(new dje(this.textModel,t=>this.languageConfigurationService.getLanguageConfiguration(t))),e),e.add(this.bracketPairsTree.value.object.onDidChange(t=>this.onDidChangeEmitter.fire(t))),this.onDidChangeEmitter.fire()}}else this.bracketPairsTree.value&&(this.bracketPairsTree.clear(),this.onDidChangeEmitter.fire())}getBracketPairsInRange(e){var t;return this.bracketsRequested=!0,this.updateBracketPairsTree(),((t=this.bracketPairsTree.value)===null||t===void 0?void 0:t.object.getBracketPairsInRange(e,!1))||Jh.empty}getBracketPairsInRangeWithMinIndentation(e){var t;return this.bracketsRequested=!0,this.updateBracketPairsTree(),((t=this.bracketPairsTree.value)===null||t===void 0?void 0:t.object.getBracketPairsInRange(e,!0))||Jh.empty}getBracketsInRange(e,t=!1){var i;return this.bracketsRequested=!0,this.updateBracketPairsTree(),((i=this.bracketPairsTree.value)===null||i===void 0?void 0:i.object.getBracketsInRange(e,t))||Jh.empty}findMatchingBracketUp(e,t,i){const s=this.textModel.validatePosition(t),r=this.textModel.getLanguageIdAtPosition(s.lineNumber,s.column);if(this.canBuildAST){const o=this.languageConfigurationService.getLanguageConfiguration(r).bracketsNew.getClosingBracketInfo(e);if(!o)return null;const a=this.getBracketPairsInRange(M.fromPositions(t,t)).findLast(l=>o.closes(l.openingBracketInfo));return a?a.openingBracketRange:null}else{const o=e.toLowerCase(),a=this.languageConfigurationService.getLanguageConfiguration(r).brackets;if(!a)return null;const l=a.textIsBracket[o];return l?uI(this._findMatchingBracketUp(l,s,K5(i))):null}}matchBracket(e,t){if(this.canBuildAST){const i=this.getBracketPairsInRange(M.fromPositions(e,e)).filter(s=>s.closingBracketRange!==void 0&&(s.openingBracketRange.containsPosition(e)||s.closingBracketRange.containsPosition(e))).findLastMaxBy(Nl(s=>s.openingBracketRange.containsPosition(e)?s.openingBracketRange:s.closingBracketRange,M.compareRangesUsingStarts));return i?[i.openingBracketRange,i.closingBracketRange]:null}else{const i=K5(t);return this._matchBracket(this.textModel.validatePosition(e),i)}}_establishBracketSearchOffsets(e,t,i,s){const r=t.getCount(),o=t.getLanguageId(s);let a=Math.max(0,e.column-1-i.maxBracketLength);for(let c=s-1;c>=0;c--){const u=t.getEndOffset(c);if(u<=a)break;if(ih(t.getStandardTokenType(c))||t.getLanguageId(c)!==o){a=u;break}}let l=Math.min(t.getLineContent().length,e.column-1+i.maxBracketLength);for(let c=s+1;c<r;c++){const u=t.getStartOffset(c);if(u>=l)break;if(ih(t.getStandardTokenType(c))||t.getLanguageId(c)!==o){l=u;break}}return{searchStartOffset:a,searchEndOffset:l}}_matchBracket(e,t){const i=e.lineNumber,s=this.textModel.tokenization.getLineTokens(i),r=this.textModel.getLineContent(i),o=s.findTokenIndexAtOffset(e.column-1);if(o<0)return null;const a=this.languageConfigurationService.getLanguageConfiguration(s.getLanguageId(o)).brackets;if(a&&!ih(s.getStandardTokenType(o))){let{searchStartOffset:l,searchEndOffset:c}=this._establishBracketSearchOffsets(e,s,a,o),u=null;for(;;){const h=Xl.findNextBracketInRange(a.forwardRegex,i,r,l,c);if(!h)break;if(h.startColumn<=e.column&&e.column<=h.endColumn){const d=r.substring(h.startColumn-1,h.endColumn-1).toLowerCase(),f=this._matchFoundBracket(h,a.textIsBracket[d],a.textIsOpenBracket[d],t);if(f){if(f instanceof tf)return null;u=f}}l=h.endColumn-1}if(u)return u}if(o>0&&s.getStartOffset(o)===e.column-1){const l=o-1,c=this.languageConfigurationService.getLanguageConfiguration(s.getLanguageId(l)).brackets;if(c&&!ih(s.getStandardTokenType(l))){const{searchStartOffset:u,searchEndOffset:h}=this._establishBracketSearchOffsets(e,s,c,l),d=Xl.findPrevBracketInRange(c.reversedRegex,i,r,u,h);if(d&&d.startColumn<=e.column&&e.column<=d.endColumn){const f=r.substring(d.startColumn-1,d.endColumn-1).toLowerCase(),g=this._matchFoundBracket(d,c.textIsBracket[f],c.textIsOpenBracket[f],t);if(g)return g instanceof tf?null:g}}}return null}_matchFoundBracket(e,t,i,s){if(!t)return null;const r=i?this._findMatchingBracketDown(t,e.getEndPosition(),s):this._findMatchingBracketUp(t,e.getStartPosition(),s);return r?r instanceof tf?r:[e,r]:null}_findMatchingBracketUp(e,t,i){const s=e.languageId,r=e.reversedRegex;let o=-1,a=0;const l=(c,u,h,d)=>{for(;;){if(i&&++a%100===0&&!i())return tf.INSTANCE;const f=Xl.findPrevBracketInRange(r,c,u,h,d);if(!f)break;const g=u.substring(f.startColumn-1,f.endColumn-1).toLowerCase();if(e.isOpen(g)?o++:e.isClose(g)&&o--,o===0)return f;d=f.startColumn-1}return null};for(let c=t.lineNumber;c>=1;c--){const u=this.textModel.tokenization.getLineTokens(c),h=u.getCount(),d=this.textModel.getLineContent(c);let f=h-1,g=d.length,p=d.length;c===t.lineNumber&&(f=u.findTokenIndexAtOffset(t.column-1),g=t.column-1,p=t.column-1);let m=!0;for(;f>=0;f--){const _=u.getLanguageId(f)===s&&!ih(u.getStandardTokenType(f));if(_)m?g=u.getStartOffset(f):(g=u.getStartOffset(f),p=u.getEndOffset(f));else if(m&&g!==p){const b=l(c,d,g,p);if(b)return b}m=_}if(m&&g!==p){const _=l(c,d,g,p);if(_)return _}}return null}_findMatchingBracketDown(e,t,i){const s=e.languageId,r=e.forwardRegex;let o=1,a=0;const l=(u,h,d,f)=>{for(;;){if(i&&++a%100===0&&!i())return tf.INSTANCE;const g=Xl.findNextBracketInRange(r,u,h,d,f);if(!g)break;const p=h.substring(g.startColumn-1,g.endColumn-1).toLowerCase();if(e.isOpen(p)?o++:e.isClose(p)&&o--,o===0)return g;d=g.endColumn-1}return null},c=this.textModel.getLineCount();for(let u=t.lineNumber;u<=c;u++){const h=this.textModel.tokenization.getLineTokens(u),d=h.getCount(),f=this.textModel.getLineContent(u);let g=0,p=0,m=0;u===t.lineNumber&&(g=h.findTokenIndexAtOffset(t.column-1),p=t.column-1,m=t.column-1);let _=!0;for(;g<d;g++){const b=h.getLanguageId(g)===s&&!ih(h.getStandardTokenType(g));if(b)_||(p=h.getStartOffset(g)),m=h.getEndOffset(g);else if(_&&p!==m){const y=l(u,f,p,m);if(y)return y}_=b}if(_&&p!==m){const b=l(u,f,p,m);if(b)return b}}return null}findPrevBracket(e){var t;const i=this.textModel.validatePosition(e);if(this.canBuildAST)return this.bracketsRequested=!0,this.updateBracketPairsTree(),((t=this.bracketPairsTree.value)===null||t===void 0?void 0:t.object.getFirstBracketBefore(i))||null;let s=null,r=null,o=null;for(let a=i.lineNumber;a>=1;a--){const l=this.textModel.tokenization.getLineTokens(a),c=l.getCount(),u=this.textModel.getLineContent(a);let h=c-1,d=u.length,f=u.length;if(a===i.lineNumber){h=l.findTokenIndexAtOffset(i.column-1),d=i.column-1,f=i.column-1;const p=l.getLanguageId(h);s!==p&&(s=p,r=this.languageConfigurationService.getLanguageConfiguration(s).brackets,o=this.languageConfigurationService.getLanguageConfiguration(s).bracketsNew)}let g=!0;for(;h>=0;h--){const p=l.getLanguageId(h);if(s!==p){if(r&&o&&g&&d!==f){const _=Xl.findPrevBracketInRange(r.reversedRegex,a,u,d,f);if(_)return this._toFoundBracket(o,_);g=!1}s=p,r=this.languageConfigurationService.getLanguageConfiguration(s).brackets,o=this.languageConfigurationService.getLanguageConfiguration(s).bracketsNew}const m=!!r&&!ih(l.getStandardTokenType(h));if(m)g?d=l.getStartOffset(h):(d=l.getStartOffset(h),f=l.getEndOffset(h));else if(o&&r&&g&&d!==f){const _=Xl.findPrevBracketInRange(r.reversedRegex,a,u,d,f);if(_)return this._toFoundBracket(o,_)}g=m}if(o&&r&&g&&d!==f){const p=Xl.findPrevBracketInRange(r.reversedRegex,a,u,d,f);if(p)return this._toFoundBracket(o,p)}}return null}findNextBracket(e){var t;const i=this.textModel.validatePosition(e);if(this.canBuildAST)return this.bracketsRequested=!0,this.updateBracketPairsTree(),((t=this.bracketPairsTree.value)===null||t===void 0?void 0:t.object.getFirstBracketAfter(i))||null;const s=this.textModel.getLineCount();let r=null,o=null,a=null;for(let l=i.lineNumber;l<=s;l++){const c=this.textModel.tokenization.getLineTokens(l),u=c.getCount(),h=this.textModel.getLineContent(l);let d=0,f=0,g=0;if(l===i.lineNumber){d=c.findTokenIndexAtOffset(i.column-1),f=i.column-1,g=i.column-1;const m=c.getLanguageId(d);r!==m&&(r=m,o=this.languageConfigurationService.getLanguageConfiguration(r).brackets,a=this.languageConfigurationService.getLanguageConfiguration(r).bracketsNew)}let p=!0;for(;d<u;d++){const m=c.getLanguageId(d);if(r!==m){if(a&&o&&p&&f!==g){const b=Xl.findNextBracketInRange(o.forwardRegex,l,h,f,g);if(b)return this._toFoundBracket(a,b);p=!1}r=m,o=this.languageConfigurationService.getLanguageConfiguration(r).brackets,a=this.languageConfigurationService.getLanguageConfiguration(r).bracketsNew}const _=!!o&&!ih(c.getStandardTokenType(d));if(_)p||(f=c.getStartOffset(d)),g=c.getEndOffset(d);else if(a&&o&&p&&f!==g){const b=Xl.findNextBracketInRange(o.forwardRegex,l,h,f,g);if(b)return this._toFoundBracket(a,b)}p=_}if(a&&o&&p&&f!==g){const m=Xl.findNextBracketInRange(o.forwardRegex,l,h,f,g);if(m)return this._toFoundBracket(a,m)}}return null}findEnclosingBrackets(e,t){const i=this.textModel.validatePosition(e);if(this.canBuildAST){const f=M.fromPositions(i),g=this.getBracketPairsInRange(M.fromPositions(i,i)).findLast(p=>p.closingBracketRange!==void 0&&p.range.strictContainsRange(f));return g?[g.openingBracketRange,g.closingBracketRange]:null}const s=K5(t),r=this.textModel.getLineCount(),o=new Map;let a=[];const l=(f,g)=>{if(!o.has(f)){const p=[];for(let m=0,_=g?g.brackets.length:0;m<_;m++)p[m]=0;o.set(f,p)}a=o.get(f)};let c=0;const u=(f,g,p,m,_)=>{for(;;){if(s&&++c%100===0&&!s())return tf.INSTANCE;const b=Xl.findNextBracketInRange(f.forwardRegex,g,p,m,_);if(!b)break;const y=p.substring(b.startColumn-1,b.endColumn-1).toLowerCase(),w=f.textIsBracket[y];if(w&&(w.isOpen(y)?a[w.index]++:w.isClose(y)&&a[w.index]--,a[w.index]===-1))return this._matchFoundBracket(b,w,!1,s);m=b.endColumn-1}return null};let h=null,d=null;for(let f=i.lineNumber;f<=r;f++){const g=this.textModel.tokenization.getLineTokens(f),p=g.getCount(),m=this.textModel.getLineContent(f);let _=0,b=0,y=0;if(f===i.lineNumber){_=g.findTokenIndexAtOffset(i.column-1),b=i.column-1,y=i.column-1;const S=g.getLanguageId(_);h!==S&&(h=S,d=this.languageConfigurationService.getLanguageConfiguration(h).brackets,l(h,d))}let w=!0;for(;_<p;_++){const S=g.getLanguageId(_);if(h!==S){if(d&&w&&b!==y){const L=u(d,f,m,b,y);if(L)return uI(L);w=!1}h=S,d=this.languageConfigurationService.getLanguageConfiguration(h).brackets,l(h,d)}const E=!!d&&!ih(g.getStandardTokenType(_));if(E)w||(b=g.getStartOffset(_)),y=g.getEndOffset(_);else if(d&&w&&b!==y){const L=u(d,f,m,b,y);if(L)return uI(L)}w=E}if(d&&w&&b!==y){const S=u(d,f,m,b,y);if(S)return uI(S)}}return null}_toFoundBracket(e,t){if(!t)return null;let i=this.textModel.getValueInRange(t);i=i.toLowerCase();const s=e.getBracketInfo(i);return s?{range:t,bracketInfo:s}:null}}function pje(n,e){return{object:n,dispose:()=>e==null?void 0:e.dispose()}}function K5(n){if(typeof n>"u")return()=>!0;{const e=Date.now();return()=>Date.now()-e<=n}}class tf{constructor(){this._searchCanceledBrand=void 0}}tf.INSTANCE=new tf;function uI(n){return n instanceof tf?null:n}class mje extends pe{constructor(e){super(),this.textModel=e,this.colorProvider=new lme,this.onDidChangeEmitter=new ue,this.onDidChange=this.onDidChangeEmitter.event,this.colorizationOptions=e.getOptions().bracketPairColorizationOptions,this._register(e.bracketPairs.onDidChange(t=>{this.onDidChangeEmitter.fire()}))}handleDidChangeOptions(e){this.colorizationOptions=this.textModel.getOptions().bracketPairColorizationOptions}getDecorationsInRange(e,t,i,s){return s?[]:t===void 0?[]:this.colorizationOptions.enabled?this.textModel.bracketPairs.getBracketsInRange(e,!0).map(o=>({id:`bracket${o.range.toString()}-${o.nestingLevel}`,options:{description:"BracketPairColorization",inlineClassName:this.colorProvider.getInlineClassName(o,this.colorizationOptions.independentColorPoolPerBracketType)},ownerId:0,range:o.range})).toArray():[]}getAllDecorations(e,t){return e===void 0?[]:this.colorizationOptions.enabled?this.getDecorationsInRange(new M(1,1,this.textModel.getLineCount(),1),e,t):[]}}class lme{constructor(){this.unexpectedClosingBracketClassName="unexpected-closing-bracket"}getInlineClassName(e,t){return e.isInvalid?this.unexpectedClosingBracketClassName:this.getInlineClassNameOfLevel(t?e.nestingLevelOfEqualBracketType:e.nestingLevel)}getInlineClassNameOfLevel(e){return`bracket-highlighting-${e%30}`}}Nc((n,e)=>{const t=[Bpe,Wpe,Vpe,Hpe,$pe,zpe],i=new lme;e.addRule(`.monaco-editor .${i.unexpectedClosingBracketClassName} { color: ${n.getColor(vze)}; }`);const s=t.map(r=>n.getColor(r)).filter(r=>!!r).filter(r=>!r.isTransparent());for(let r=0;r<30;r++){const o=s[r%s.length];e.addRule(`.monaco-editor .${i.getInlineClassNameOfLevel(r)} { color: ${o}; }`)}});function hI(n){return n.replace(/\n/g,"\\n").replace(/\r/g,"\\r")}class ur{get oldLength(){return this.oldText.length}get oldEnd(){return this.oldPosition+this.oldText.length}get newLength(){return this.newText.length}get newEnd(){return this.newPosition+this.newText.length}constructor(e,t,i,s){this.oldPosition=e,this.oldText=t,this.newPosition=i,this.newText=s}toString(){return this.oldText.length===0?`(insert@${this.oldPosition} "${hI(this.newText)}")`:this.newText.length===0?`(delete@${this.oldPosition} "${hI(this.oldText)}")`:`(replace@${this.oldPosition} "${hI(this.oldText)}" with "${hI(this.newText)}")`}static _writeStringSize(e){return 4+2*e.length}static _writeString(e,t,i){const s=t.length;Xc(e,s,i),i+=4;for(let r=0;r<s;r++)L7e(e,t.charCodeAt(r),i),i+=2;return i}static _readString(e,t){const i=Zc(e,t);return t+=4,E7e(e,t,i)}writeSize(){return 8+ur._writeStringSize(this.oldText)+ur._writeStringSize(this.newText)}write(e,t){return Xc(e,this.oldPosition,t),t+=4,Xc(e,this.newPosition,t),t+=4,t=ur._writeString(e,this.oldText,t),t=ur._writeString(e,this.newText,t),t}static read(e,t,i){const s=Zc(e,t);t+=4;const r=Zc(e,t);t+=4;const o=ur._readString(e,t);t+=ur._writeStringSize(o);const a=ur._readString(e,t);return t+=ur._writeStringSize(a),i.push(new ur(s,o,r,a)),t}}function _je(n,e){return n===null||n.length===0?e:new oh(n,e).compress()}class oh{constructor(e,t){this._prevEdits=e,this._currEdits=t,this._result=[],this._resultLen=0,this._prevLen=this._prevEdits.length,this._prevDeltaOffset=0,this._currLen=this._currEdits.length,this._currDeltaOffset=0}compress(){let e=0,t=0,i=this._getPrev(e),s=this._getCurr(t);for(;e<this._prevLen||t<this._currLen;){if(i===null){this._acceptCurr(s),s=this._getCurr(++t);continue}if(s===null){this._acceptPrev(i),i=this._getPrev(++e);continue}if(s.oldEnd<=i.newPosition){this._acceptCurr(s),s=this._getCurr(++t);continue}if(i.newEnd<=s.oldPosition){this._acceptPrev(i),i=this._getPrev(++e);continue}if(s.oldPosition<i.newPosition){const[c,u]=oh._splitCurr(s,i.newPosition-s.oldPosition);this._acceptCurr(c),s=u;continue}if(i.newPosition<s.oldPosition){const[c,u]=oh._splitPrev(i,s.oldPosition-i.newPosition);this._acceptPrev(c),i=u;continue}let a,l;if(s.oldEnd===i.newEnd)a=i,l=s,i=this._getPrev(++e),s=this._getCurr(++t);else if(s.oldEnd<i.newEnd){const[c,u]=oh._splitPrev(i,s.oldLength);a=c,l=s,i=u,s=this._getCurr(++t)}else{const[c,u]=oh._splitCurr(s,i.newLength);a=i,l=c,i=this._getPrev(++e),s=u}this._result[this._resultLen++]=new ur(a.oldPosition,a.oldText,l.newPosition,l.newText),this._prevDeltaOffset+=a.newLength-a.oldLength,this._currDeltaOffset+=l.newLength-l.oldLength}const r=oh._merge(this._result);return oh._removeNoOps(r)}_acceptCurr(e){this._result[this._resultLen++]=oh._rebaseCurr(this._prevDeltaOffset,e),this._currDeltaOffset+=e.newLength-e.oldLength}_getCurr(e){return e<this._currLen?this._currEdits[e]:null}_acceptPrev(e){this._result[this._resultLen++]=oh._rebasePrev(this._currDeltaOffset,e),this._prevDeltaOffset+=e.newLength-e.oldLength}_getPrev(e){return e<this._prevLen?this._prevEdits[e]:null}static _rebaseCurr(e,t){return new ur(t.oldPosition-e,t.oldText,t.newPosition,t.newText)}static _rebasePrev(e,t){return new ur(t.oldPosition,t.oldText,t.newPosition+e,t.newText)}static _splitPrev(e,t){const i=e.newText.substr(0,t),s=e.newText.substr(t);return[new ur(e.oldPosition,e.oldText,e.newPosition,i),new ur(e.oldEnd,"",e.newPosition+t,s)]}static _splitCurr(e,t){const i=e.oldText.substr(0,t),s=e.oldText.substr(t);return[new ur(e.oldPosition,i,e.newPosition,e.newText),new ur(e.oldPosition+t,s,e.newEnd,"")]}static _merge(e){if(e.length===0)return e;const t=[];let i=0,s=e[0];for(let r=1;r<e.length;r++){const o=e[r];s.oldEnd===o.oldPosition?s=new ur(s.oldPosition,s.oldText+o.oldText,s.newPosition,s.newText+o.newText):(t[i++]=s,s=o)}return t[i++]=s,t}static _removeNoOps(e){if(e.length===0)return e;const t=[];let i=0;for(let s=0;s<e.length;s++){const r=e[s];r.oldText!==r.newText&&(t[i++]=r)}return t}}function kg(n){return n===47||n===92}function cme(n){return n.replace(/[\\/]/g,ps.sep)}function vje(n){return n.indexOf("/")===-1&&(n=cme(n)),/^[a-zA-Z]:(\/|$)/.test(n)&&(n="/"+n),n}function Mee(n,e=ps.sep){if(!n)return"";const t=n.length,i=n.charCodeAt(0);if(kg(i)){if(kg(n.charCodeAt(1))&&!kg(n.charCodeAt(2))){let r=3;const o=r;for(;r<t&&!kg(n.charCodeAt(r));r++);if(o!==r&&!kg(n.charCodeAt(r+1))){for(r+=1;r<t;r++)if(kg(n.charCodeAt(r)))return n.slice(0,r+1).replace(/[\\/]/g,e)}}return e}else if(ume(i)&&n.charCodeAt(1)===58)return kg(n.charCodeAt(2))?n.slice(0,2)+e:n.slice(0,2);let s=n.indexOf("://");if(s!==-1){for(s+=3;s<t;s++)if(kg(n.charCodeAt(s)))return n.slice(0,s+1)}return""}function N9(n,e,t,i=Su){if(n===e)return!0;if(!n||!e||e.length>n.length)return!1;if(t){if(!Bj(n,e))return!1;if(e.length===n.length)return!0;let r=e.length;return e.charAt(e.length-1)===i&&r--,n.charAt(r)===i}return e.charAt(e.length-1)!==i&&(e+=i),n.indexOf(e)===0}function ume(n){return n>=65&&n<=90||n>=97&&n<=122}function bje(n,e=yr){return e?ume(n.charCodeAt(0))&&n.charCodeAt(1)===58:!1}function nh(n){return OA(n,!0)}class yje{constructor(e){this._ignorePathCasing=e}compare(e,t,i=!1){return e===t?0:fL(this.getComparisonKey(e,i),this.getComparisonKey(t,i))}isEqual(e,t,i=!1){return e===t?!0:!e||!t?!1:this.getComparisonKey(e,i)===this.getComparisonKey(t,i)}getComparisonKey(e,t=!1){return e.with({path:this._ignorePathCasing(e)?e.path.toLowerCase():void 0,fragment:t?null:void 0}).toString()}isEqualOrParent(e,t,i=!1){if(e.scheme===t.scheme){if(e.scheme===wt.file)return N9(nh(e),nh(t),this._ignorePathCasing(e))&&e.query===t.query&&(i||e.fragment===t.fragment);if(Fee(e.authority,t.authority))return N9(e.path,t.path,this._ignorePathCasing(e),"/")&&e.query===t.query&&(i||e.fragment===t.fragment)}return!1}joinPath(e,...t){return it.joinPath(e,...t)}basenameOrAuthority(e){return Wl(e)||e.authority}basename(e){return ps.basename(e.path)}extname(e){return ps.extname(e.path)}dirname(e){if(e.path.length===0)return e;let t;return e.scheme===wt.file?t=it.file(dge(nh(e))).path:(t=ps.dirname(e.path),e.authority&&t.length&&t.charCodeAt(0)!==47&&(console.error(`dirname("${e.toString})) resulted in a relative path`),t="/")),e.with({path:t})}normalizePath(e){if(!e.path.length)return e;let t;return e.scheme===wt.file?t=it.file(hge(nh(e))).path:t=ps.normalize(e.path),e.with({path:t})}relativePath(e,t){if(e.scheme!==t.scheme||!Fee(e.authority,t.authority))return;if(e.scheme===wt.file){const r=U8e(nh(e),nh(t));return yr?cme(r):r}let i=e.path||"/";const s=t.path||"/";if(this._ignorePathCasing(e)){let r=0;for(const o=Math.min(i.length,s.length);r<o&&!(i.charCodeAt(r)!==s.charCodeAt(r)&&i.charAt(r).toLowerCase()!==s.charAt(r).toLowerCase());r++);i=s.substr(0,r)+i.substr(r)}return ps.relative(i,s)}resolvePath(e,t){if(e.scheme===wt.file){const i=it.file(z8e(nh(e),t));return e.with({authority:i.authority,path:i.path})}return t=vje(t),e.with({path:ps.resolve(e.path,t)})}isAbsolutePath(e){return!!e.path&&e.path[0]==="/"}isEqualAuthority(e,t){return e===t||e!==void 0&&t!==void 0&&R0(e,t)}hasTrailingPathSeparator(e,t=Su){if(e.scheme===wt.file){const i=nh(e);return i.length>Mee(i).length&&i[i.length-1]===t}else{const i=e.path;return i.length>1&&i.charCodeAt(i.length-1)===47&&!/^[a-zA-Z]:(\/$|\\$)/.test(e.fsPath)}}removeTrailingPathSeparator(e,t=Su){return Bee(e,t)?e.with({path:e.path.substr(0,e.path.length-1)}):e}addTrailingPathSeparator(e,t=Su){let i=!1;if(e.scheme===wt.file){const s=nh(e);i=s!==void 0&&s.length===Mee(s).length&&s[s.length-1]===t}else{t="/";const s=e.path;i=s.length===1&&s.charCodeAt(s.length-1)===47}return!i&&!Bee(e,t)?e.with({path:e.path+"/"}):e}}const Yi=new yje(()=>!1),Iq=Yi.isEqual.bind(Yi);Yi.isEqualOrParent.bind(Yi);Yi.getComparisonKey.bind(Yi);const Cje=Yi.basenameOrAuthority.bind(Yi),Wl=Yi.basename.bind(Yi),wje=Yi.extname.bind(Yi),KO=Yi.dirname.bind(Yi),Sje=Yi.joinPath.bind(Yi),kje=Yi.normalizePath.bind(Yi),Lje=Yi.relativePath.bind(Yi),Oee=Yi.resolvePath.bind(Yi);Yi.isAbsolutePath.bind(Yi);const Fee=Yi.isEqualAuthority.bind(Yi),Bee=Yi.hasTrailingPathSeparator.bind(Yi);Yi.removeTrailingPathSeparator.bind(Yi);Yi.addTrailingPathSeparator.bind(Yi);var nm;(function(n){n.META_DATA_LABEL="label",n.META_DATA_DESCRIPTION="description",n.META_DATA_SIZE="size",n.META_DATA_MIME="mime";function e(t){const i=new Map;t.path.substring(t.path.indexOf(";")+1,t.path.lastIndexOf(";")).split(";").forEach(o=>{const[a,l]=o.split(":");a&&l&&i.set(a,l)});const r=t.path.substring(0,t.path.indexOf(";"));return r&&i.set(n.META_DATA_MIME,r),i}n.parseMetaData=e})(nm||(nm={}));function t0(n){return n.toString()}class Bs{static create(e,t){const i=e.getAlternativeVersionId(),s=A9(e);return new Bs(i,i,s,s,t,t,[])}constructor(e,t,i,s,r,o,a){this.beforeVersionId=e,this.afterVersionId=t,this.beforeEOL=i,this.afterEOL=s,this.beforeCursorState=r,this.afterCursorState=o,this.changes=a}append(e,t,i,s,r){t.length>0&&(this.changes=_je(this.changes,t)),this.afterEOL=i,this.afterVersionId=s,this.afterCursorState=r}static _writeSelectionsSize(e){return 4+4*4*(e?e.length:0)}static _writeSelections(e,t,i){if(Xc(e,t?t.length:0,i),i+=4,t)for(const s of t)Xc(e,s.selectionStartLineNumber,i),i+=4,Xc(e,s.selectionStartColumn,i),i+=4,Xc(e,s.positionLineNumber,i),i+=4,Xc(e,s.positionColumn,i),i+=4;return i}static _readSelections(e,t,i){const s=Zc(e,t);t+=4;for(let r=0;r<s;r++){const o=Zc(e,t);t+=4;const a=Zc(e,t);t+=4;const l=Zc(e,t);t+=4;const c=Zc(e,t);t+=4,i.push(new Ze(o,a,l,c))}return t}serialize(){let e=10+Bs._writeSelectionsSize(this.beforeCursorState)+Bs._writeSelectionsSize(this.afterCursorState)+4;for(const s of this.changes)e+=s.writeSize();const t=new Uint8Array(e);let i=0;Xc(t,this.beforeVersionId,i),i+=4,Xc(t,this.afterVersionId,i),i+=4,WJ(t,this.beforeEOL,i),i+=1,WJ(t,this.afterEOL,i),i+=1,i=Bs._writeSelections(t,this.beforeCursorState,i),i=Bs._writeSelections(t,this.afterCursorState,i),Xc(t,this.changes.length,i),i+=4;for(const s of this.changes)i=s.write(t,i);return t.buffer}static deserialize(e){const t=new Uint8Array(e);let i=0;const s=Zc(t,i);i+=4;const r=Zc(t,i);i+=4;const o=BJ(t,i);i+=1;const a=BJ(t,i);i+=1;const l=[];i=Bs._readSelections(t,i,l);const c=[];i=Bs._readSelections(t,i,c);const u=Zc(t,i);i+=4;const h=[];for(let d=0;d<u;d++)i=ur.read(t,i,h);return new Bs(s,r,o,a,l,c,h)}}class hme{get type(){return 0}get resource(){return it.isUri(this.model)?this.model:this.model.uri}constructor(e,t,i,s){this.label=e,this.code=t,this.model=i,this._data=Bs.create(i,s)}toString(){return(this._data instanceof Bs?this._data:Bs.deserialize(this._data)).changes.map(t=>t.toString()).join(", ")}matchesResource(e){return(it.isUri(this.model)?this.model:this.model.uri).toString()===e.toString()}setModel(e){this.model=e}canAppend(e){return this.model===e&&this._data instanceof Bs}append(e,t,i,s,r){this._data instanceof Bs&&this._data.append(e,t,i,s,r)}close(){this._data instanceof Bs&&(this._data=this._data.serialize())}open(){this._data instanceof Bs||(this._data=Bs.deserialize(this._data))}undo(){if(it.isUri(this.model))throw new Error("Invalid SingleModelEditStackElement");this._data instanceof Bs&&(this._data=this._data.serialize());const e=Bs.deserialize(this._data);this.model._applyUndo(e.changes,e.beforeEOL,e.beforeVersionId,e.beforeCursorState)}redo(){if(it.isUri(this.model))throw new Error("Invalid SingleModelEditStackElement");this._data instanceof Bs&&(this._data=this._data.serialize());const e=Bs.deserialize(this._data);this.model._applyRedo(e.changes,e.afterEOL,e.afterVersionId,e.afterCursorState)}heapSize(){return this._data instanceof Bs&&(this._data=this._data.serialize()),this._data.byteLength+168}}class xje{get resources(){return this._editStackElementsArr.map(e=>e.resource)}constructor(e,t,i){this.label=e,this.code=t,this.type=1,this._isOpen=!0,this._editStackElementsArr=i.slice(0),this._editStackElementsMap=new Map;for(const s of this._editStackElementsArr){const r=t0(s.resource);this._editStackElementsMap.set(r,s)}this._delegate=null}prepareUndoRedo(){if(this._delegate)return this._delegate.prepareUndoRedo(this)}matchesResource(e){const t=t0(e);return this._editStackElementsMap.has(t)}setModel(e){const t=t0(it.isUri(e)?e:e.uri);this._editStackElementsMap.has(t)&&this._editStackElementsMap.get(t).setModel(e)}canAppend(e){if(!this._isOpen)return!1;const t=t0(e.uri);return this._editStackElementsMap.has(t)?this._editStackElementsMap.get(t).canAppend(e):!1}append(e,t,i,s,r){const o=t0(e.uri);this._editStackElementsMap.get(o).append(e,t,i,s,r)}close(){this._isOpen=!1}open(){}undo(){this._isOpen=!1;for(const e of this._editStackElementsArr)e.undo()}redo(){for(const e of this._editStackElementsArr)e.redo()}heapSize(e){const t=t0(e);return this._editStackElementsMap.has(t)?this._editStackElementsMap.get(t).heapSize():0}split(){return this._editStackElementsArr}toString(){const e=[];for(const t of this._editStackElementsArr)e.push(`${Wl(t.resource)}: ${t}`);return`{${e.join(", ")}}`}}function A9(n){return n.getEOL()===` +`?0:1}function nf(n){return n?n instanceof hme||n instanceof xje:!1}class Tq{constructor(e,t){this._model=e,this._undoRedoService=t}pushStackElement(){const e=this._undoRedoService.getLastElement(this._model.uri);nf(e)&&e.close()}popStackElement(){const e=this._undoRedoService.getLastElement(this._model.uri);nf(e)&&e.open()}clear(){this._undoRedoService.removeElements(this._model.uri)}_getOrCreateEditStackElement(e,t){const i=this._undoRedoService.getLastElement(this._model.uri);if(nf(i)&&i.canAppend(this._model))return i;const s=new hme(v("edit","Typing"),"undoredo.textBufferEdit",this._model,e);return this._undoRedoService.pushElement(s,t),s}pushEOL(e){const t=this._getOrCreateEditStackElement(null,void 0);this._model.setEOL(e),t.append(this._model,[],A9(this._model),this._model.getAlternativeVersionId(),null)}pushEditOperation(e,t,i,s){const r=this._getOrCreateEditStackElement(e,s),o=this._model.applyEdits(t,!0),a=Tq._computeCursorState(i,o),l=o.map((c,u)=>({index:u,textChange:c.textChange}));return l.sort((c,u)=>c.textChange.oldPosition===u.textChange.oldPosition?c.index-u.index:c.textChange.oldPosition-u.textChange.oldPosition),r.append(this._model,l.map(c=>c.textChange),A9(this._model),this._model.getAlternativeVersionId(),a),a}static _computeCursorState(e,t){try{return e?e(t):null}catch(i){return vt(i),null}}}class Eje{constructor(){this.spacesDiff=0,this.looksLikeAlignment=!1}}function Dje(n,e,t,i,s){s.spacesDiff=0,s.looksLikeAlignment=!1;let r;for(r=0;r<e&&r<i;r++){const d=n.charCodeAt(r),f=t.charCodeAt(r);if(d!==f)break}let o=0,a=0;for(let d=r;d<e;d++)n.charCodeAt(d)===32?o++:a++;let l=0,c=0;for(let d=r;d<i;d++)t.charCodeAt(d)===32?l++:c++;if(o>0&&a>0||l>0&&c>0)return;const u=Math.abs(a-c),h=Math.abs(o-l);if(u===0){s.spacesDiff=h,h>0&&0<=l-1&&l-1<n.length&&l<t.length&&t.charCodeAt(l)!==32&&n.charCodeAt(l-1)===32&&n.charCodeAt(n.length-1)===44&&(s.looksLikeAlignment=!0);return}if(h%u===0){s.spacesDiff=h/u;return}}function Wee(n,e,t){const i=Math.min(n.getLineCount(),1e4);let s=0,r=0,o="",a=0;const l=[2,4,6,8,3,5,7],c=8,u=[0,0,0,0,0,0,0,0,0],h=new Eje;for(let g=1;g<=i;g++){const p=n.getLineLength(g),m=n.getLineContent(g),_=p<=65536;let b=!1,y=0,w=0,S=0;for(let L=0,k=p;L<k;L++){const x=_?m.charCodeAt(L):n.getLineCharCode(g,L);if(x===9)S++;else if(x===32)w++;else{b=!0,y=L;break}}if(!b||(S>0?s++:w>1&&r++,Dje(o,a,m,y,h),h.looksLikeAlignment&&!(t&&e===h.spacesDiff)))continue;const E=h.spacesDiff;E<=c&&u[E]++,o=m,a=y}let d=t;s!==r&&(d=s<r);let f=e;if(d){let g=d?0:.1*i;l.forEach(p=>{const m=u[p];m>g&&(g=m,f=p)}),f===4&&u[4]>0&&u[2]>0&&u[2]>=u[4]/2&&(f=2)}return{insertSpaces:d,tabSize:f}}function ko(n){return(n.metadata&1)>>>0}function ji(n,e){n.metadata=n.metadata&254|e<<0}function vr(n){return(n.metadata&2)>>>1===1}function $i(n,e){n.metadata=n.metadata&253|(e?1:0)<<1}function dme(n){return(n.metadata&4)>>>2===1}function Vee(n,e){n.metadata=n.metadata&251|(e?1:0)<<2}function fme(n){return(n.metadata&64)>>>6===1}function Hee(n,e){n.metadata=n.metadata&191|(e?1:0)<<6}function Ije(n){return(n.metadata&24)>>>3}function $ee(n,e){n.metadata=n.metadata&231|e<<3}function Tje(n){return(n.metadata&32)>>>5===1}function zee(n,e){n.metadata=n.metadata&223|(e?1:0)<<5}class gme{constructor(e,t,i){this.metadata=0,this.parent=this,this.left=this,this.right=this,ji(this,1),this.start=t,this.end=i,this.delta=0,this.maxEnd=i,this.id=e,this.ownerId=0,this.options=null,Vee(this,!1),Hee(this,!1),$ee(this,1),zee(this,!1),this.cachedVersionId=0,this.cachedAbsoluteStart=t,this.cachedAbsoluteEnd=i,this.range=null,$i(this,!1)}reset(e,t,i,s){this.start=t,this.end=i,this.maxEnd=i,this.cachedVersionId=e,this.cachedAbsoluteStart=t,this.cachedAbsoluteEnd=i,this.range=s}setOptions(e){this.options=e;const t=this.options.className;Vee(this,t==="squiggly-error"||t==="squiggly-warning"||t==="squiggly-info"),Hee(this,this.options.glyphMarginClassName!==null),$ee(this,this.options.stickiness),zee(this,this.options.collapseOnReplaceEdit)}setCachedOffsets(e,t,i){this.cachedVersionId!==i&&(this.range=null),this.cachedVersionId=i,this.cachedAbsoluteStart=e,this.cachedAbsoluteEnd=t}detach(){this.parent=null,this.left=null,this.right=null}}const Ot=new gme(null,0,0);Ot.parent=Ot;Ot.left=Ot;Ot.right=Ot;ji(Ot,0);class G5{constructor(){this.root=Ot,this.requestNormalizeDelta=!1}intervalSearch(e,t,i,s,r,o){return this.root===Ot?[]:Bje(this,e,t,i,s,r,o)}search(e,t,i,s){return this.root===Ot?[]:Fje(this,e,t,i,s)}collectNodesFromOwner(e){return Mje(this,e)}collectNodesPostOrder(){return Oje(this)}insert(e){Uee(this,e),this._normalizeDeltaIfNecessary()}delete(e){jee(this,e),this._normalizeDeltaIfNecessary()}resolveNode(e,t){const i=e;let s=0;for(;e!==this.root;)e===e.parent.right&&(s+=e.parent.delta),e=e.parent;const r=i.start+s,o=i.end+s;i.setCachedOffsets(r,o,t)}acceptReplace(e,t,i,s){const r=Pje(this,e,e+t);for(let o=0,a=r.length;o<a;o++){const l=r[o];jee(this,l)}this._normalizeDeltaIfNecessary(),Rje(this,e,e+t,i),this._normalizeDeltaIfNecessary();for(let o=0,a=r.length;o<a;o++){const l=r[o];l.start=l.cachedAbsoluteStart,l.end=l.cachedAbsoluteEnd,Aje(l,e,e+t,i,s),l.maxEnd=l.end,Uee(this,l)}this._normalizeDeltaIfNecessary()}_normalizeDeltaIfNecessary(){this.requestNormalizeDelta&&(this.requestNormalizeDelta=!1,Nje(this))}}function Nje(n){let e=n.root,t=0;for(;e!==Ot;){if(e.left!==Ot&&!vr(e.left)){e=e.left;continue}if(e.right!==Ot&&!vr(e.right)){t+=e.delta,e=e.right;continue}e.start=t+e.start,e.end=t+e.end,e.delta=0,sm(e),$i(e,!0),$i(e.left,!1),$i(e.right,!1),e===e.parent.right&&(t-=e.parent.delta),e=e.parent}$i(n.root,!1)}function i0(n,e,t,i){return n<t?!0:n>t||i===1?!1:i===2?!0:e}function Aje(n,e,t,i,s){const r=Ije(n),o=r===0||r===2,a=r===1||r===2,l=t-e,c=i,u=Math.min(l,c),h=n.start;let d=!1;const f=n.end;let g=!1;e<=h&&f<=t&&Tje(n)&&(n.start=e,d=!0,n.end=e,g=!0);{const m=s?1:l>0?2:0;!d&&i0(h,o,e,m)&&(d=!0),!g&&i0(f,a,e,m)&&(g=!0)}if(u>0&&!s){const m=l>c?2:0;!d&&i0(h,o,e+u,m)&&(d=!0),!g&&i0(f,a,e+u,m)&&(g=!0)}{const m=s?1:0;!d&&i0(h,o,t,m)&&(n.start=e+c,d=!0),!g&&i0(f,a,t,m)&&(n.end=e+c,g=!0)}const p=c-l;d||(n.start=Math.max(0,h+p)),g||(n.end=Math.max(0,f+p)),n.start>n.end&&(n.end=n.start)}function Pje(n,e,t){let i=n.root,s=0,r=0,o=0,a=0;const l=[];let c=0;for(;i!==Ot;){if(vr(i)){$i(i.left,!1),$i(i.right,!1),i===i.parent.right&&(s-=i.parent.delta),i=i.parent;continue}if(!vr(i.left)){if(r=s+i.maxEnd,r<e){$i(i,!0);continue}if(i.left!==Ot){i=i.left;continue}}if(o=s+i.start,o>t){$i(i,!0);continue}if(a=s+i.end,a>=e&&(i.setCachedOffsets(o,a,0),l[c++]=i),$i(i,!0),i.right!==Ot&&!vr(i.right)){s+=i.delta,i=i.right;continue}}return $i(n.root,!1),l}function Rje(n,e,t,i){let s=n.root,r=0,o=0,a=0;const l=i-(t-e);for(;s!==Ot;){if(vr(s)){$i(s.left,!1),$i(s.right,!1),s===s.parent.right&&(r-=s.parent.delta),sm(s),s=s.parent;continue}if(!vr(s.left)){if(o=r+s.maxEnd,o<e){$i(s,!0);continue}if(s.left!==Ot){s=s.left;continue}}if(a=r+s.start,a>t){s.start+=l,s.end+=l,s.delta+=l,(s.delta<-1073741824||s.delta>1073741824)&&(n.requestNormalizeDelta=!0),$i(s,!0);continue}if($i(s,!0),s.right!==Ot&&!vr(s.right)){r+=s.delta,s=s.right;continue}}$i(n.root,!1)}function Mje(n,e){let t=n.root;const i=[];let s=0;for(;t!==Ot;){if(vr(t)){$i(t.left,!1),$i(t.right,!1),t=t.parent;continue}if(t.left!==Ot&&!vr(t.left)){t=t.left;continue}if(t.ownerId===e&&(i[s++]=t),$i(t,!0),t.right!==Ot&&!vr(t.right)){t=t.right;continue}}return $i(n.root,!1),i}function Oje(n){let e=n.root;const t=[];let i=0;for(;e!==Ot;){if(vr(e)){$i(e.left,!1),$i(e.right,!1),e=e.parent;continue}if(e.left!==Ot&&!vr(e.left)){e=e.left;continue}if(e.right!==Ot&&!vr(e.right)){e=e.right;continue}t[i++]=e,$i(e,!0)}return $i(n.root,!1),t}function Fje(n,e,t,i,s){let r=n.root,o=0,a=0,l=0;const c=[];let u=0;for(;r!==Ot;){if(vr(r)){$i(r.left,!1),$i(r.right,!1),r===r.parent.right&&(o-=r.parent.delta),r=r.parent;continue}if(r.left!==Ot&&!vr(r.left)){r=r.left;continue}a=o+r.start,l=o+r.end,r.setCachedOffsets(a,l,i);let h=!0;if(e&&r.ownerId&&r.ownerId!==e&&(h=!1),t&&dme(r)&&(h=!1),s&&!fme(r)&&(h=!1),h&&(c[u++]=r),$i(r,!0),r.right!==Ot&&!vr(r.right)){o+=r.delta,r=r.right;continue}}return $i(n.root,!1),c}function Bje(n,e,t,i,s,r,o){let a=n.root,l=0,c=0,u=0,h=0;const d=[];let f=0;for(;a!==Ot;){if(vr(a)){$i(a.left,!1),$i(a.right,!1),a===a.parent.right&&(l-=a.parent.delta),a=a.parent;continue}if(!vr(a.left)){if(c=l+a.maxEnd,c<e){$i(a,!0);continue}if(a.left!==Ot){a=a.left;continue}}if(u=l+a.start,u>t){$i(a,!0);continue}if(h=l+a.end,h>=e){a.setCachedOffsets(u,h,r);let g=!0;i&&a.ownerId&&a.ownerId!==i&&(g=!1),s&&dme(a)&&(g=!1),o&&!fme(a)&&(g=!1),g&&(d[f++]=a)}if($i(a,!0),a.right!==Ot&&!vr(a.right)){l+=a.delta,a=a.right;continue}}return $i(n.root,!1),d}function Uee(n,e){if(n.root===Ot)return e.parent=Ot,e.left=Ot,e.right=Ot,ji(e,0),n.root=e,n.root;Wje(n,e),Mg(e.parent);let t=e;for(;t!==n.root&&ko(t.parent)===1;)if(t.parent===t.parent.parent.left){const i=t.parent.parent.right;ko(i)===1?(ji(t.parent,0),ji(i,0),ji(t.parent.parent,1),t=t.parent.parent):(t===t.parent.right&&(t=t.parent,rk(n,t)),ji(t.parent,0),ji(t.parent.parent,1),ok(n,t.parent.parent))}else{const i=t.parent.parent.left;ko(i)===1?(ji(t.parent,0),ji(i,0),ji(t.parent.parent,1),t=t.parent.parent):(t===t.parent.left&&(t=t.parent,ok(n,t)),ji(t.parent,0),ji(t.parent.parent,1),rk(n,t.parent.parent))}return ji(n.root,0),e}function Wje(n,e){let t=0,i=n.root;const s=e.start,r=e.end;for(;;)if(Hje(s,r,i.start+t,i.end+t)<0)if(i.left===Ot){e.start-=t,e.end-=t,e.maxEnd-=t,i.left=e;break}else i=i.left;else if(i.right===Ot){e.start-=t+i.delta,e.end-=t+i.delta,e.maxEnd-=t+i.delta,i.right=e;break}else t+=i.delta,i=i.right;e.parent=i,e.left=Ot,e.right=Ot,ji(e,1)}function jee(n,e){let t,i;if(e.left===Ot?(t=e.right,i=e,t.delta+=e.delta,(t.delta<-1073741824||t.delta>1073741824)&&(n.requestNormalizeDelta=!0),t.start+=e.delta,t.end+=e.delta):e.right===Ot?(t=e.left,i=e):(i=Vje(e.right),t=i.right,t.start+=i.delta,t.end+=i.delta,t.delta+=i.delta,(t.delta<-1073741824||t.delta>1073741824)&&(n.requestNormalizeDelta=!0),i.start+=e.delta,i.end+=e.delta,i.delta=e.delta,(i.delta<-1073741824||i.delta>1073741824)&&(n.requestNormalizeDelta=!0)),i===n.root){n.root=t,ji(t,0),e.detach(),Y5(),sm(t),n.root.parent=Ot;return}const s=ko(i)===1;if(i===i.parent.left?i.parent.left=t:i.parent.right=t,i===e?t.parent=i.parent:(i.parent===e?t.parent=i:t.parent=i.parent,i.left=e.left,i.right=e.right,i.parent=e.parent,ji(i,ko(e)),e===n.root?n.root=i:e===e.parent.left?e.parent.left=i:e.parent.right=i,i.left!==Ot&&(i.left.parent=i),i.right!==Ot&&(i.right.parent=i)),e.detach(),s){Mg(t.parent),i!==e&&(Mg(i),Mg(i.parent)),Y5();return}Mg(t),Mg(t.parent),i!==e&&(Mg(i),Mg(i.parent));let r;for(;t!==n.root&&ko(t)===0;)t===t.parent.left?(r=t.parent.right,ko(r)===1&&(ji(r,0),ji(t.parent,1),rk(n,t.parent),r=t.parent.right),ko(r.left)===0&&ko(r.right)===0?(ji(r,1),t=t.parent):(ko(r.right)===0&&(ji(r.left,0),ji(r,1),ok(n,r),r=t.parent.right),ji(r,ko(t.parent)),ji(t.parent,0),ji(r.right,0),rk(n,t.parent),t=n.root)):(r=t.parent.left,ko(r)===1&&(ji(r,0),ji(t.parent,1),ok(n,t.parent),r=t.parent.left),ko(r.left)===0&&ko(r.right)===0?(ji(r,1),t=t.parent):(ko(r.left)===0&&(ji(r.right,0),ji(r,1),rk(n,r),r=t.parent.left),ji(r,ko(t.parent)),ji(t.parent,0),ji(r.left,0),ok(n,t.parent),t=n.root));ji(t,0),Y5()}function Vje(n){for(;n.left!==Ot;)n=n.left;return n}function Y5(){Ot.parent=Ot,Ot.delta=0,Ot.start=0,Ot.end=0}function rk(n,e){const t=e.right;t.delta+=e.delta,(t.delta<-1073741824||t.delta>1073741824)&&(n.requestNormalizeDelta=!0),t.start+=e.delta,t.end+=e.delta,e.right=t.left,t.left!==Ot&&(t.left.parent=e),t.parent=e.parent,e.parent===Ot?n.root=t:e===e.parent.left?e.parent.left=t:e.parent.right=t,t.left=e,e.parent=t,sm(e),sm(t)}function ok(n,e){const t=e.left;e.delta-=t.delta,(e.delta<-1073741824||e.delta>1073741824)&&(n.requestNormalizeDelta=!0),e.start-=t.delta,e.end-=t.delta,e.left=t.right,t.right!==Ot&&(t.right.parent=e),t.parent=e.parent,e.parent===Ot?n.root=t:e===e.parent.right?e.parent.right=t:e.parent.left=t,t.right=e,e.parent=t,sm(e),sm(t)}function pme(n){let e=n.end;if(n.left!==Ot){const t=n.left.maxEnd;t>e&&(e=t)}if(n.right!==Ot){const t=n.right.maxEnd+n.delta;t>e&&(e=t)}return e}function sm(n){n.maxEnd=pme(n)}function Mg(n){for(;n!==Ot;){const e=pme(n);if(n.maxEnd===e)return;n.maxEnd=e,n=n.parent}}function Hje(n,e,t,i){return n===t?e-i:n-t}class P9{constructor(e,t){this.piece=e,this.color=t,this.size_left=0,this.lf_left=0,this.parent=this,this.left=this,this.right=this}next(){if(this.right!==_t)return Nq(this.right);let e=this;for(;e.parent!==_t&&e.parent.left!==e;)e=e.parent;return e.parent===_t?_t:e.parent}prev(){if(this.left!==_t)return mme(this.left);let e=this;for(;e.parent!==_t&&e.parent.right!==e;)e=e.parent;return e.parent===_t?_t:e.parent}detach(){this.parent=null,this.left=null,this.right=null}}const _t=new P9(null,0);_t.parent=_t;_t.left=_t;_t.right=_t;_t.color=0;function Nq(n){for(;n.left!==_t;)n=n.left;return n}function mme(n){for(;n.right!==_t;)n=n.right;return n}function Aq(n){return n===_t?0:n.size_left+n.piece.length+Aq(n.right)}function Pq(n){return n===_t?0:n.lf_left+n.piece.lineFeedCnt+Pq(n.right)}function Z5(){_t.parent=_t}function ak(n,e){const t=e.right;t.size_left+=e.size_left+(e.piece?e.piece.length:0),t.lf_left+=e.lf_left+(e.piece?e.piece.lineFeedCnt:0),e.right=t.left,t.left!==_t&&(t.left.parent=e),t.parent=e.parent,e.parent===_t?n.root=t:e.parent.left===e?e.parent.left=t:e.parent.right=t,t.left=e,e.parent=t}function lk(n,e){const t=e.left;e.left=t.right,t.right!==_t&&(t.right.parent=e),t.parent=e.parent,e.size_left-=t.size_left+(t.piece?t.piece.length:0),e.lf_left-=t.lf_left+(t.piece?t.piece.lineFeedCnt:0),e.parent===_t?n.root=t:e===e.parent.right?e.parent.right=t:e.parent.left=t,t.right=e,e.parent=t}function dI(n,e){let t,i;if(e.left===_t?(i=e,t=i.right):e.right===_t?(i=e,t=i.left):(i=Nq(e.right),t=i.right),i===n.root){n.root=t,t.color=0,e.detach(),Z5(),n.root.parent=_t;return}const s=i.color===1;if(i===i.parent.left?i.parent.left=t:i.parent.right=t,i===e?(t.parent=i.parent,yS(n,t)):(i.parent===e?t.parent=i:t.parent=i.parent,yS(n,t),i.left=e.left,i.right=e.right,i.parent=e.parent,i.color=e.color,e===n.root?n.root=i:e===e.parent.left?e.parent.left=i:e.parent.right=i,i.left!==_t&&(i.left.parent=i),i.right!==_t&&(i.right.parent=i),i.size_left=e.size_left,i.lf_left=e.lf_left,yS(n,i)),e.detach(),t.parent.left===t){const o=Aq(t),a=Pq(t);if(o!==t.parent.size_left||a!==t.parent.lf_left){const l=o-t.parent.size_left,c=a-t.parent.lf_left;t.parent.size_left=o,t.parent.lf_left=a,jd(n,t.parent,l,c)}}if(yS(n,t.parent),s){Z5();return}let r;for(;t!==n.root&&t.color===0;)t===t.parent.left?(r=t.parent.right,r.color===1&&(r.color=0,t.parent.color=1,ak(n,t.parent),r=t.parent.right),r.left.color===0&&r.right.color===0?(r.color=1,t=t.parent):(r.right.color===0&&(r.left.color=0,r.color=1,lk(n,r),r=t.parent.right),r.color=t.parent.color,t.parent.color=0,r.right.color=0,ak(n,t.parent),t=n.root)):(r=t.parent.left,r.color===1&&(r.color=0,t.parent.color=1,lk(n,t.parent),r=t.parent.left),r.left.color===0&&r.right.color===0?(r.color=1,t=t.parent):(r.left.color===0&&(r.right.color=0,r.color=1,ak(n,r),r=t.parent.left),r.color=t.parent.color,t.parent.color=0,r.left.color=0,lk(n,t.parent),t=n.root));t.color=0,Z5()}function qee(n,e){for(yS(n,e);e!==n.root&&e.parent.color===1;)if(e.parent===e.parent.parent.left){const t=e.parent.parent.right;t.color===1?(e.parent.color=0,t.color=0,e.parent.parent.color=1,e=e.parent.parent):(e===e.parent.right&&(e=e.parent,ak(n,e)),e.parent.color=0,e.parent.parent.color=1,lk(n,e.parent.parent))}else{const t=e.parent.parent.left;t.color===1?(e.parent.color=0,t.color=0,e.parent.parent.color=1,e=e.parent.parent):(e===e.parent.left&&(e=e.parent,lk(n,e)),e.parent.color=0,e.parent.parent.color=1,ak(n,e.parent.parent))}n.root.color=0}function jd(n,e,t,i){for(;e!==n.root&&e!==_t;)e.parent.left===e&&(e.parent.size_left+=t,e.parent.lf_left+=i),e=e.parent}function yS(n,e){let t=0,i=0;if(e!==n.root){for(;e!==n.root&&e===e.parent.right;)e=e.parent;if(e!==n.root)for(e=e.parent,t=Aq(e.left)-e.size_left,i=Pq(e.left)-e.lf_left,e.size_left+=t,e.lf_left+=i;e!==n.root&&(t!==0||i!==0);)e.parent.left===e&&(e.parent.size_left+=t,e.parent.lf_left+=i),e=e.parent}}const $je=999;class a1{constructor(e,t,i,s){this.searchString=e,this.isRegex=t,this.matchCase=i,this.wordSeparators=s}parseSearchRequest(){if(this.searchString==="")return null;let e;this.isRegex?e=zje(this.searchString):e=this.searchString.indexOf(` +`)>=0;let t=null;try{t=nge(this.searchString,this.isRegex,{matchCase:this.matchCase,wholeWord:!1,multiline:e,global:!0,unicode:!0})}catch{return null}if(!t)return null;let i=!this.isRegex&&!e;return i&&this.searchString.toLowerCase()!==this.searchString.toUpperCase()&&(i=this.matchCase),new CUe(t,this.wordSeparators?Bl(this.wordSeparators):null,i?this.searchString:null)}}function zje(n){if(!n||n.length===0)return!1;for(let e=0,t=n.length;e<t;e++){const i=n.charCodeAt(e);if(i===10)return!0;if(i===92){if(e++,e>=t)break;const s=n.charCodeAt(e);if(s===110||s===114||s===87)return!0}}return!1}function k1(n,e,t){if(!t)return new FL(n,null);const i=[];for(let s=0,r=e.length;s<r;s++)i[s]=e[s];return new FL(n,i)}class Kee{constructor(e){const t=[];let i=0;for(let s=0,r=e.length;s<r;s++)e.charCodeAt(s)===10&&(t[i++]=s);this._lineFeedsOffsets=t}findLineFeedCountBeforeOffset(e){const t=this._lineFeedsOffsets;let i=0,s=t.length-1;if(s===-1||e<=t[0])return 0;for(;i<s;){const r=i+((s-i)/2>>0);t[r]>=e?s=r-1:t[r+1]>=e?(i=r,s=r):i=r+1}return i+1}}class fI{static findMatches(e,t,i,s,r){const o=t.parseSearchRequest();return o?o.regex.multiline?this._doFindMatchesMultiline(e,i,new K0(o.wordSeparators,o.regex),s,r):this._doFindMatchesLineByLine(e,i,o,s,r):[]}static _getMultilineMatchRange(e,t,i,s,r,o){let a,l=0;s?(l=s.findLineFeedCountBeforeOffset(r),a=t+r+l):a=t+r;let c;if(s){const f=s.findLineFeedCountBeforeOffset(r+o.length)-l;c=a+o.length+f}else c=a+o.length;const u=e.getPositionAt(a),h=e.getPositionAt(c);return new M(u.lineNumber,u.column,h.lineNumber,h.column)}static _doFindMatchesMultiline(e,t,i,s,r){const o=e.getOffsetAt(t.getStartPosition()),a=e.getValueInRange(t,1),l=e.getEOL()===`\r +`?new Kee(a):null,c=[];let u=0,h;for(i.reset(0);h=i.next(a);)if(c[u++]=k1(this._getMultilineMatchRange(e,o,a,l,h.index,h[0]),h,s),u>=r)return c;return c}static _doFindMatchesLineByLine(e,t,i,s,r){const o=[];let a=0;if(t.startLineNumber===t.endLineNumber){const c=e.getLineContent(t.startLineNumber).substring(t.startColumn-1,t.endColumn-1);return a=this._findMatchesInLine(i,c,t.startLineNumber,t.startColumn-1,a,o,s,r),o}const l=e.getLineContent(t.startLineNumber).substring(t.startColumn-1);a=this._findMatchesInLine(i,l,t.startLineNumber,t.startColumn-1,a,o,s,r);for(let c=t.startLineNumber+1;c<t.endLineNumber&&a<r;c++)a=this._findMatchesInLine(i,e.getLineContent(c),c,0,a,o,s,r);if(a<r){const c=e.getLineContent(t.endLineNumber).substring(0,t.endColumn-1);a=this._findMatchesInLine(i,c,t.endLineNumber,0,a,o,s,r)}return o}static _findMatchesInLine(e,t,i,s,r,o,a,l){const c=e.wordSeparators;if(!a&&e.simpleSearch){const d=e.simpleSearch,f=d.length,g=t.length;let p=-f;for(;(p=t.indexOf(d,p+f))!==-1;)if((!c||Rq(c,t,g,p,f))&&(o[r++]=new FL(new M(i,p+1+s,i,p+1+f+s),null),r>=l))return r;return r}const u=new K0(e.wordSeparators,e.regex);let h;u.reset(0);do if(h=u.next(t),h&&(o[r++]=k1(new M(i,h.index+1+s,i,h.index+1+h[0].length+s),h,a),r>=l))return r;while(h);return r}static findNextMatch(e,t,i,s){const r=t.parseSearchRequest();if(!r)return null;const o=new K0(r.wordSeparators,r.regex);return r.regex.multiline?this._doFindNextMatchMultiline(e,i,o,s):this._doFindNextMatchLineByLine(e,i,o,s)}static _doFindNextMatchMultiline(e,t,i,s){const r=new he(t.lineNumber,1),o=e.getOffsetAt(r),a=e.getLineCount(),l=e.getValueInRange(new M(r.lineNumber,r.column,a,e.getLineMaxColumn(a)),1),c=e.getEOL()===`\r +`?new Kee(l):null;i.reset(t.column-1);const u=i.next(l);return u?k1(this._getMultilineMatchRange(e,o,l,c,u.index,u[0]),u,s):t.lineNumber!==1||t.column!==1?this._doFindNextMatchMultiline(e,new he(1,1),i,s):null}static _doFindNextMatchLineByLine(e,t,i,s){const r=e.getLineCount(),o=t.lineNumber,a=e.getLineContent(o),l=this._findFirstMatchInLine(i,a,o,t.column,s);if(l)return l;for(let c=1;c<=r;c++){const u=(o+c-1)%r,h=e.getLineContent(u+1),d=this._findFirstMatchInLine(i,h,u+1,1,s);if(d)return d}return null}static _findFirstMatchInLine(e,t,i,s,r){e.reset(s-1);const o=e.next(t);return o?k1(new M(i,o.index+1,i,o.index+1+o[0].length),o,r):null}static findPreviousMatch(e,t,i,s){const r=t.parseSearchRequest();if(!r)return null;const o=new K0(r.wordSeparators,r.regex);return r.regex.multiline?this._doFindPreviousMatchMultiline(e,i,o,s):this._doFindPreviousMatchLineByLine(e,i,o,s)}static _doFindPreviousMatchMultiline(e,t,i,s){const r=this._doFindMatchesMultiline(e,new M(1,1,t.lineNumber,t.column),i,s,10*$je);if(r.length>0)return r[r.length-1];const o=e.getLineCount();return t.lineNumber!==o||t.column!==e.getLineMaxColumn(o)?this._doFindPreviousMatchMultiline(e,new he(o,e.getLineMaxColumn(o)),i,s):null}static _doFindPreviousMatchLineByLine(e,t,i,s){const r=e.getLineCount(),o=t.lineNumber,a=e.getLineContent(o).substring(0,t.column-1),l=this._findLastMatchInLine(i,a,o,s);if(l)return l;for(let c=1;c<=r;c++){const u=(r+o-c-1)%r,h=e.getLineContent(u+1),d=this._findLastMatchInLine(i,h,u+1,s);if(d)return d}return null}static _findLastMatchInLine(e,t,i,s){let r=null,o;for(e.reset(0);o=e.next(t);)r=k1(new M(i,o.index+1,i,o.index+1+o[0].length),o,s);return r}}function Uje(n,e,t,i,s){if(i===0)return!0;const r=e.charCodeAt(i-1);if(n.get(r)!==0||r===13||r===10)return!0;if(s>0){const o=e.charCodeAt(i);if(n.get(o)!==0)return!0}return!1}function jje(n,e,t,i,s){if(i+s===t)return!0;const r=e.charCodeAt(i+s);if(n.get(r)!==0||r===13||r===10)return!0;if(s>0){const o=e.charCodeAt(i+s-1);if(n.get(o)!==0)return!0}return!1}function Rq(n,e,t,i,s){return Uje(n,e,t,i,s)&&jje(n,e,t,i,s)}class K0{constructor(e,t){this._wordSeparators=e,this._searchRegex=t,this._prevMatchStartIndex=-1,this._prevMatchLength=0}reset(e){this._searchRegex.lastIndex=e,this._prevMatchStartIndex=-1,this._prevMatchLength=0}next(e){const t=e.length;let i;do{if(this._prevMatchStartIndex+this._prevMatchLength===t||(i=this._searchRegex.exec(e),!i))return null;const s=i.index,r=i[0].length;if(s===this._prevMatchStartIndex&&r===this._prevMatchLength){if(r===0){NA(e,t,this._searchRegex.lastIndex)>65535?this._searchRegex.lastIndex+=2:this._searchRegex.lastIndex+=1;continue}return null}if(this._prevMatchStartIndex=s,this._prevMatchLength=r,!this._wordSeparators||Rq(this._wordSeparators,e,t,s,r))return i}while(i);return null}}const Od=65535;function _me(n){let e;return n[n.length-1]<65536?e=new Uint16Array(n.length):e=new Uint32Array(n.length),e.set(n,0),e}class qje{constructor(e,t,i,s,r){this.lineStarts=e,this.cr=t,this.lf=i,this.crlf=s,this.isBasicASCII=r}}function Gd(n,e=!0){const t=[0];let i=1;for(let s=0,r=n.length;s<r;s++){const o=n.charCodeAt(s);o===13?s+1<r&&n.charCodeAt(s+1)===10?(t[i++]=s+2,s++):t[i++]=s+1:o===10&&(t[i++]=s+1)}return e?_me(t):t}function Kje(n,e){n.length=0,n[0]=0;let t=1,i=0,s=0,r=0,o=!0;for(let l=0,c=e.length;l<c;l++){const u=e.charCodeAt(l);u===13?l+1<c&&e.charCodeAt(l+1)===10?(r++,n[t++]=l+2,l++):(i++,n[t++]=l+1):u===10?(s++,n[t++]=l+1):o&&u!==9&&(u<32||u>126)&&(o=!1)}const a=new qje(_me(n),i,s,r,o);return n.length=0,a}class $o{constructor(e,t,i,s,r){this.bufferIndex=e,this.start=t,this.end=i,this.lineFeedCnt=s,this.length=r}}class L1{constructor(e,t){this.buffer=e,this.lineStarts=t}}class Gje{constructor(e,t){this._pieces=[],this._tree=e,this._BOM=t,this._index=0,e.root!==_t&&e.iterate(e.root,i=>(i!==_t&&this._pieces.push(i.piece),!0))}read(){return this._pieces.length===0?this._index===0?(this._index++,this._BOM):null:this._index>this._pieces.length-1?null:this._index===0?this._BOM+this._tree.getPieceContent(this._pieces[this._index++]):this._tree.getPieceContent(this._pieces[this._index++])}}class Yje{constructor(e){this._limit=e,this._cache=[]}get(e){for(let t=this._cache.length-1;t>=0;t--){const i=this._cache[t];if(i.nodeStartOffset<=e&&i.nodeStartOffset+i.node.piece.length>=e)return i}return null}get2(e){for(let t=this._cache.length-1;t>=0;t--){const i=this._cache[t];if(i.nodeStartLineNumber&&i.nodeStartLineNumber<e&&i.nodeStartLineNumber+i.node.piece.lineFeedCnt>=e)return i}return null}set(e){this._cache.length>=this._limit&&this._cache.shift(),this._cache.push(e)}validate(e){let t=!1;const i=this._cache;for(let s=0;s<i.length;s++){const r=i[s];if(r.node.parent===null||r.nodeStartOffset>=e){i[s]=null,t=!0;continue}}if(t){const s=[];for(const r of i)r!==null&&s.push(r);this._cache=s}}}class Zje{constructor(e,t,i){this.create(e,t,i)}create(e,t,i){this._buffers=[new L1("",[0])],this._lastChangeBufferPos={line:0,column:0},this.root=_t,this._lineCnt=1,this._length=0,this._EOL=t,this._EOLLength=t.length,this._EOLNormalized=i;let s=null;for(let r=0,o=e.length;r<o;r++)if(e[r].buffer.length>0){e[r].lineStarts||(e[r].lineStarts=Gd(e[r].buffer));const a=new $o(r+1,{line:0,column:0},{line:e[r].lineStarts.length-1,column:e[r].buffer.length-e[r].lineStarts[e[r].lineStarts.length-1]},e[r].lineStarts.length-1,e[r].buffer.length);this._buffers.push(e[r]),s=this.rbInsertRight(s,a)}this._searchCache=new Yje(1),this._lastVisitedLine={lineNumber:0,value:""},this.computeBufferMetadata()}normalizeEOL(e){const t=Od,i=t-Math.floor(t/3),s=i*2;let r="",o=0;const a=[];if(this.iterate(this.root,l=>{const c=this.getNodeContent(l),u=c.length;if(o<=i||o+u<s)return r+=c,o+=u,!0;const h=r.replace(/\r\n|\r|\n/g,e);return a.push(new L1(h,Gd(h))),r=c,o=u,!0}),o>0){const l=r.replace(/\r\n|\r|\n/g,e);a.push(new L1(l,Gd(l)))}this.create(a,e,!0)}getEOL(){return this._EOL}setEOL(e){this._EOL=e,this._EOLLength=this._EOL.length,this.normalizeEOL(e)}createSnapshot(e){return new Gje(this,e)}getOffsetAt(e,t){let i=0,s=this.root;for(;s!==_t;)if(s.left!==_t&&s.lf_left+1>=e)s=s.left;else if(s.lf_left+s.piece.lineFeedCnt+1>=e){i+=s.size_left;const r=this.getAccumulatedValue(s,e-s.lf_left-2);return i+=r+t-1}else e-=s.lf_left+s.piece.lineFeedCnt,i+=s.size_left+s.piece.length,s=s.right;return i}getPositionAt(e){e=Math.floor(e),e=Math.max(0,e);let t=this.root,i=0;const s=e;for(;t!==_t;)if(t.size_left!==0&&t.size_left>=e)t=t.left;else if(t.size_left+t.piece.length>=e){const r=this.getIndexOf(t,e-t.size_left);if(i+=t.lf_left+r.index,r.index===0){const o=this.getOffsetAt(i+1,1),a=s-o;return new he(i+1,a+1)}return new he(i+1,r.remainder+1)}else if(e-=t.size_left+t.piece.length,i+=t.lf_left+t.piece.lineFeedCnt,t.right===_t){const r=this.getOffsetAt(i+1,1),o=s-e-r;return new he(i+1,o+1)}else t=t.right;return new he(1,1)}getValueInRange(e,t){if(e.startLineNumber===e.endLineNumber&&e.startColumn===e.endColumn)return"";const i=this.nodeAt2(e.startLineNumber,e.startColumn),s=this.nodeAt2(e.endLineNumber,e.endColumn),r=this.getValueInRange2(i,s);return t?t!==this._EOL||!this._EOLNormalized?r.replace(/\r\n|\r|\n/g,t):t===this.getEOL()&&this._EOLNormalized?r:r.replace(/\r\n|\r|\n/g,t):r}getValueInRange2(e,t){if(e.node===t.node){const a=e.node,l=this._buffers[a.piece.bufferIndex].buffer,c=this.offsetInBuffer(a.piece.bufferIndex,a.piece.start);return l.substring(c+e.remainder,c+t.remainder)}let i=e.node;const s=this._buffers[i.piece.bufferIndex].buffer,r=this.offsetInBuffer(i.piece.bufferIndex,i.piece.start);let o=s.substring(r+e.remainder,r+i.piece.length);for(i=i.next();i!==_t;){const a=this._buffers[i.piece.bufferIndex].buffer,l=this.offsetInBuffer(i.piece.bufferIndex,i.piece.start);if(i===t.node){o+=a.substring(l,l+t.remainder);break}else o+=a.substr(l,i.piece.length);i=i.next()}return o}getLinesContent(){const e=[];let t=0,i="",s=!1;return this.iterate(this.root,r=>{if(r===_t)return!0;const o=r.piece;let a=o.length;if(a===0)return!0;const l=this._buffers[o.bufferIndex].buffer,c=this._buffers[o.bufferIndex].lineStarts,u=o.start.line,h=o.end.line;let d=c[u]+o.start.column;if(s&&(l.charCodeAt(d)===10&&(d++,a--),e[t++]=i,i="",s=!1,a===0))return!0;if(u===h)return!this._EOLNormalized&&l.charCodeAt(d+a-1)===13?(s=!0,i+=l.substr(d,a-1)):i+=l.substr(d,a),!0;i+=this._EOLNormalized?l.substring(d,Math.max(d,c[u+1]-this._EOLLength)):l.substring(d,c[u+1]).replace(/(\r\n|\r|\n)$/,""),e[t++]=i;for(let f=u+1;f<h;f++)i=this._EOLNormalized?l.substring(c[f],c[f+1]-this._EOLLength):l.substring(c[f],c[f+1]).replace(/(\r\n|\r|\n)$/,""),e[t++]=i;return!this._EOLNormalized&&l.charCodeAt(c[h]+o.end.column-1)===13?(s=!0,o.end.column===0?t--:i=l.substr(c[h],o.end.column-1)):i=l.substr(c[h],o.end.column),!0}),s&&(e[t++]=i,i=""),e[t++]=i,e}getLength(){return this._length}getLineCount(){return this._lineCnt}getLineContent(e){return this._lastVisitedLine.lineNumber===e?this._lastVisitedLine.value:(this._lastVisitedLine.lineNumber=e,e===this._lineCnt?this._lastVisitedLine.value=this.getLineRawContent(e):this._EOLNormalized?this._lastVisitedLine.value=this.getLineRawContent(e,this._EOLLength):this._lastVisitedLine.value=this.getLineRawContent(e).replace(/(\r\n|\r|\n)$/,""),this._lastVisitedLine.value)}_getCharCode(e){if(e.remainder===e.node.piece.length){const t=e.node.next();if(!t)return 0;const i=this._buffers[t.piece.bufferIndex],s=this.offsetInBuffer(t.piece.bufferIndex,t.piece.start);return i.buffer.charCodeAt(s)}else{const t=this._buffers[e.node.piece.bufferIndex],s=this.offsetInBuffer(e.node.piece.bufferIndex,e.node.piece.start)+e.remainder;return t.buffer.charCodeAt(s)}}getLineCharCode(e,t){const i=this.nodeAt2(e,t+1);return this._getCharCode(i)}getLineLength(e){if(e===this.getLineCount()){const t=this.getOffsetAt(e,1);return this.getLength()-t}return this.getOffsetAt(e+1,1)-this.getOffsetAt(e,1)-this._EOLLength}findMatchesInNode(e,t,i,s,r,o,a,l,c,u,h){const d=this._buffers[e.piece.bufferIndex],f=this.offsetInBuffer(e.piece.bufferIndex,e.piece.start),g=this.offsetInBuffer(e.piece.bufferIndex,r),p=this.offsetInBuffer(e.piece.bufferIndex,o);let m;const _={line:0,column:0};let b,y;t._wordSeparators?(b=d.buffer.substring(g,p),y=w=>w+g,t.reset(0)):(b=d.buffer,y=w=>w,t.reset(g));do if(m=t.next(b),m){if(y(m.index)>=p)return u;this.positionInBuffer(e,y(m.index)-f,_);const w=this.getLineFeedCnt(e.piece.bufferIndex,r,_),S=_.line===r.line?_.column-r.column+s:_.column+1,E=S+m[0].length;if(h[u++]=k1(new M(i+w,S,i+w,E),m,l),y(m.index)+m[0].length>=p||u>=c)return u}while(m);return u}findMatchesLineByLine(e,t,i,s){const r=[];let o=0;const a=new K0(t.wordSeparators,t.regex);let l=this.nodeAt2(e.startLineNumber,e.startColumn);if(l===null)return[];const c=this.nodeAt2(e.endLineNumber,e.endColumn);if(c===null)return[];let u=this.positionInBuffer(l.node,l.remainder);const h=this.positionInBuffer(c.node,c.remainder);if(l.node===c.node)return this.findMatchesInNode(l.node,a,e.startLineNumber,e.startColumn,u,h,t,i,s,o,r),r;let d=e.startLineNumber,f=l.node;for(;f!==c.node;){const p=this.getLineFeedCnt(f.piece.bufferIndex,u,f.piece.end);if(p>=1){const _=this._buffers[f.piece.bufferIndex].lineStarts,b=this.offsetInBuffer(f.piece.bufferIndex,f.piece.start),y=_[u.line+p],w=d===e.startLineNumber?e.startColumn:1;if(o=this.findMatchesInNode(f,a,d,w,u,this.positionInBuffer(f,y-b),t,i,s,o,r),o>=s)return r;d+=p}const m=d===e.startLineNumber?e.startColumn-1:0;if(d===e.endLineNumber){const _=this.getLineContent(d).substring(m,e.endColumn-1);return o=this._findMatchesInLine(t,a,_,e.endLineNumber,m,o,r,i,s),r}if(o=this._findMatchesInLine(t,a,this.getLineContent(d).substr(m),d,m,o,r,i,s),o>=s)return r;d++,l=this.nodeAt2(d,1),f=l.node,u=this.positionInBuffer(l.node,l.remainder)}if(d===e.endLineNumber){const p=d===e.startLineNumber?e.startColumn-1:0,m=this.getLineContent(d).substring(p,e.endColumn-1);return o=this._findMatchesInLine(t,a,m,e.endLineNumber,p,o,r,i,s),r}const g=d===e.startLineNumber?e.startColumn:1;return o=this.findMatchesInNode(c.node,a,d,g,u,h,t,i,s,o,r),r}_findMatchesInLine(e,t,i,s,r,o,a,l,c){const u=e.wordSeparators;if(!l&&e.simpleSearch){const d=e.simpleSearch,f=d.length,g=i.length;let p=-f;for(;(p=i.indexOf(d,p+f))!==-1;)if((!u||Rq(u,i,g,p,f))&&(a[o++]=new FL(new M(s,p+1+r,s,p+1+f+r),null),o>=c))return o;return o}let h;t.reset(0);do if(h=t.next(i),h&&(a[o++]=k1(new M(s,h.index+1+r,s,h.index+1+h[0].length+r),h,l),o>=c))return o;while(h);return o}insert(e,t,i=!1){if(this._EOLNormalized=this._EOLNormalized&&i,this._lastVisitedLine.lineNumber=0,this._lastVisitedLine.value="",this.root!==_t){const{node:s,remainder:r,nodeStartOffset:o}=this.nodeAt(e),a=s.piece,l=a.bufferIndex,c=this.positionInBuffer(s,r);if(s.piece.bufferIndex===0&&a.end.line===this._lastChangeBufferPos.line&&a.end.column===this._lastChangeBufferPos.column&&o+a.length===e&&t.length<Od){this.appendToNode(s,t),this.computeBufferMetadata();return}if(o===e)this.insertContentToNodeLeft(t,s),this._searchCache.validate(e);else if(o+s.piece.length>e){const u=[];let h=new $o(a.bufferIndex,c,a.end,this.getLineFeedCnt(a.bufferIndex,c,a.end),this.offsetInBuffer(l,a.end)-this.offsetInBuffer(l,c));if(this.shouldCheckCRLF()&&this.endWithCR(t)&&this.nodeCharCodeAt(s,r)===10){const p={line:h.start.line+1,column:0};h=new $o(h.bufferIndex,p,h.end,this.getLineFeedCnt(h.bufferIndex,p,h.end),h.length-1),t+=` +`}if(this.shouldCheckCRLF()&&this.startWithLF(t))if(this.nodeCharCodeAt(s,r-1)===13){const p=this.positionInBuffer(s,r-1);this.deleteNodeTail(s,p),t="\r"+t,s.piece.length===0&&u.push(s)}else this.deleteNodeTail(s,c);else this.deleteNodeTail(s,c);const d=this.createNewPieces(t);h.length>0&&this.rbInsertRight(s,h);let f=s;for(let g=0;g<d.length;g++)f=this.rbInsertRight(f,d[g]);this.deleteNodes(u)}else this.insertContentToNodeRight(t,s)}else{const s=this.createNewPieces(t);let r=this.rbInsertLeft(null,s[0]);for(let o=1;o<s.length;o++)r=this.rbInsertRight(r,s[o])}this.computeBufferMetadata()}delete(e,t){if(this._lastVisitedLine.lineNumber=0,this._lastVisitedLine.value="",t<=0||this.root===_t)return;const i=this.nodeAt(e),s=this.nodeAt(e+t),r=i.node,o=s.node;if(r===o){const d=this.positionInBuffer(r,i.remainder),f=this.positionInBuffer(r,s.remainder);if(i.nodeStartOffset===e){if(t===r.piece.length){const g=r.next();dI(this,r),this.validateCRLFWithPrevNode(g),this.computeBufferMetadata();return}this.deleteNodeHead(r,f),this._searchCache.validate(e),this.validateCRLFWithPrevNode(r),this.computeBufferMetadata();return}if(i.nodeStartOffset+r.piece.length===e+t){this.deleteNodeTail(r,d),this.validateCRLFWithNextNode(r),this.computeBufferMetadata();return}this.shrinkNode(r,d,f),this.computeBufferMetadata();return}const a=[],l=this.positionInBuffer(r,i.remainder);this.deleteNodeTail(r,l),this._searchCache.validate(e),r.piece.length===0&&a.push(r);const c=this.positionInBuffer(o,s.remainder);this.deleteNodeHead(o,c),o.piece.length===0&&a.push(o);const u=r.next();for(let d=u;d!==_t&&d!==o;d=d.next())a.push(d);const h=r.piece.length===0?r.prev():r;this.deleteNodes(a),this.validateCRLFWithNextNode(h),this.computeBufferMetadata()}insertContentToNodeLeft(e,t){const i=[];if(this.shouldCheckCRLF()&&this.endWithCR(e)&&this.startWithLF(t)){const o=t.piece,a={line:o.start.line+1,column:0},l=new $o(o.bufferIndex,a,o.end,this.getLineFeedCnt(o.bufferIndex,a,o.end),o.length-1);t.piece=l,e+=` +`,jd(this,t,-1,-1),t.piece.length===0&&i.push(t)}const s=this.createNewPieces(e);let r=this.rbInsertLeft(t,s[s.length-1]);for(let o=s.length-2;o>=0;o--)r=this.rbInsertLeft(r,s[o]);this.validateCRLFWithPrevNode(r),this.deleteNodes(i)}insertContentToNodeRight(e,t){this.adjustCarriageReturnFromNext(e,t)&&(e+=` +`);const i=this.createNewPieces(e),s=this.rbInsertRight(t,i[0]);let r=s;for(let o=1;o<i.length;o++)r=this.rbInsertRight(r,i[o]);this.validateCRLFWithPrevNode(s)}positionInBuffer(e,t,i){const s=e.piece,r=e.piece.bufferIndex,o=this._buffers[r].lineStarts,l=o[s.start.line]+s.start.column+t;let c=s.start.line,u=s.end.line,h=0,d=0,f=0;for(;c<=u&&(h=c+(u-c)/2|0,f=o[h],h!==u);)if(d=o[h+1],l<f)u=h-1;else if(l>=d)c=h+1;else break;return i?(i.line=h,i.column=l-f,null):{line:h,column:l-f}}getLineFeedCnt(e,t,i){if(i.column===0)return i.line-t.line;const s=this._buffers[e].lineStarts;if(i.line===s.length-1)return i.line-t.line;const r=s[i.line+1],o=s[i.line]+i.column;if(r>o+1)return i.line-t.line;const a=o-1;return this._buffers[e].buffer.charCodeAt(a)===13?i.line-t.line+1:i.line-t.line}offsetInBuffer(e,t){return this._buffers[e].lineStarts[t.line]+t.column}deleteNodes(e){for(let t=0;t<e.length;t++)dI(this,e[t])}createNewPieces(e){if(e.length>Od){const u=[];for(;e.length>Od;){const d=e.charCodeAt(Od-1);let f;d===13||d>=55296&&d<=56319?(f=e.substring(0,Od-1),e=e.substring(Od-1)):(f=e.substring(0,Od),e=e.substring(Od));const g=Gd(f);u.push(new $o(this._buffers.length,{line:0,column:0},{line:g.length-1,column:f.length-g[g.length-1]},g.length-1,f.length)),this._buffers.push(new L1(f,g))}const h=Gd(e);return u.push(new $o(this._buffers.length,{line:0,column:0},{line:h.length-1,column:e.length-h[h.length-1]},h.length-1,e.length)),this._buffers.push(new L1(e,h)),u}let t=this._buffers[0].buffer.length;const i=Gd(e,!1);let s=this._lastChangeBufferPos;if(this._buffers[0].lineStarts[this._buffers[0].lineStarts.length-1]===t&&t!==0&&this.startWithLF(e)&&this.endWithCR(this._buffers[0].buffer)){this._lastChangeBufferPos={line:this._lastChangeBufferPos.line,column:this._lastChangeBufferPos.column+1},s=this._lastChangeBufferPos;for(let u=0;u<i.length;u++)i[u]+=t+1;this._buffers[0].lineStarts=this._buffers[0].lineStarts.concat(i.slice(1)),this._buffers[0].buffer+="_"+e,t+=1}else{if(t!==0)for(let u=0;u<i.length;u++)i[u]+=t;this._buffers[0].lineStarts=this._buffers[0].lineStarts.concat(i.slice(1)),this._buffers[0].buffer+=e}const r=this._buffers[0].buffer.length,o=this._buffers[0].lineStarts.length-1,a=r-this._buffers[0].lineStarts[o],l={line:o,column:a},c=new $o(0,s,l,this.getLineFeedCnt(0,s,l),r-t);return this._lastChangeBufferPos=l,[c]}getLineRawContent(e,t=0){let i=this.root,s="";const r=this._searchCache.get2(e);if(r){i=r.node;const o=this.getAccumulatedValue(i,e-r.nodeStartLineNumber-1),a=this._buffers[i.piece.bufferIndex].buffer,l=this.offsetInBuffer(i.piece.bufferIndex,i.piece.start);if(r.nodeStartLineNumber+i.piece.lineFeedCnt===e)s=a.substring(l+o,l+i.piece.length);else{const c=this.getAccumulatedValue(i,e-r.nodeStartLineNumber);return a.substring(l+o,l+c-t)}}else{let o=0;const a=e;for(;i!==_t;)if(i.left!==_t&&i.lf_left>=e-1)i=i.left;else if(i.lf_left+i.piece.lineFeedCnt>e-1){const l=this.getAccumulatedValue(i,e-i.lf_left-2),c=this.getAccumulatedValue(i,e-i.lf_left-1),u=this._buffers[i.piece.bufferIndex].buffer,h=this.offsetInBuffer(i.piece.bufferIndex,i.piece.start);return o+=i.size_left,this._searchCache.set({node:i,nodeStartOffset:o,nodeStartLineNumber:a-(e-1-i.lf_left)}),u.substring(h+l,h+c-t)}else if(i.lf_left+i.piece.lineFeedCnt===e-1){const l=this.getAccumulatedValue(i,e-i.lf_left-2),c=this._buffers[i.piece.bufferIndex].buffer,u=this.offsetInBuffer(i.piece.bufferIndex,i.piece.start);s=c.substring(u+l,u+i.piece.length);break}else e-=i.lf_left+i.piece.lineFeedCnt,o+=i.size_left+i.piece.length,i=i.right}for(i=i.next();i!==_t;){const o=this._buffers[i.piece.bufferIndex].buffer;if(i.piece.lineFeedCnt>0){const a=this.getAccumulatedValue(i,0),l=this.offsetInBuffer(i.piece.bufferIndex,i.piece.start);return s+=o.substring(l,l+a-t),s}else{const a=this.offsetInBuffer(i.piece.bufferIndex,i.piece.start);s+=o.substr(a,i.piece.length)}i=i.next()}return s}computeBufferMetadata(){let e=this.root,t=1,i=0;for(;e!==_t;)t+=e.lf_left+e.piece.lineFeedCnt,i+=e.size_left+e.piece.length,e=e.right;this._lineCnt=t,this._length=i,this._searchCache.validate(this._length)}getIndexOf(e,t){const i=e.piece,s=this.positionInBuffer(e,t),r=s.line-i.start.line;if(this.offsetInBuffer(i.bufferIndex,i.end)-this.offsetInBuffer(i.bufferIndex,i.start)===t){const o=this.getLineFeedCnt(e.piece.bufferIndex,i.start,s);if(o!==r)return{index:o,remainder:0}}return{index:r,remainder:s.column}}getAccumulatedValue(e,t){if(t<0)return 0;const i=e.piece,s=this._buffers[i.bufferIndex].lineStarts,r=i.start.line+t+1;return r>i.end.line?s[i.end.line]+i.end.column-s[i.start.line]-i.start.column:s[r]-s[i.start.line]-i.start.column}deleteNodeTail(e,t){const i=e.piece,s=i.lineFeedCnt,r=this.offsetInBuffer(i.bufferIndex,i.end),o=t,a=this.offsetInBuffer(i.bufferIndex,o),l=this.getLineFeedCnt(i.bufferIndex,i.start,o),c=l-s,u=a-r,h=i.length+u;e.piece=new $o(i.bufferIndex,i.start,o,l,h),jd(this,e,u,c)}deleteNodeHead(e,t){const i=e.piece,s=i.lineFeedCnt,r=this.offsetInBuffer(i.bufferIndex,i.start),o=t,a=this.getLineFeedCnt(i.bufferIndex,o,i.end),l=this.offsetInBuffer(i.bufferIndex,o),c=a-s,u=r-l,h=i.length+u;e.piece=new $o(i.bufferIndex,o,i.end,a,h),jd(this,e,u,c)}shrinkNode(e,t,i){const s=e.piece,r=s.start,o=s.end,a=s.length,l=s.lineFeedCnt,c=t,u=this.getLineFeedCnt(s.bufferIndex,s.start,c),h=this.offsetInBuffer(s.bufferIndex,t)-this.offsetInBuffer(s.bufferIndex,r);e.piece=new $o(s.bufferIndex,s.start,c,u,h),jd(this,e,h-a,u-l);const d=new $o(s.bufferIndex,i,o,this.getLineFeedCnt(s.bufferIndex,i,o),this.offsetInBuffer(s.bufferIndex,o)-this.offsetInBuffer(s.bufferIndex,i)),f=this.rbInsertRight(e,d);this.validateCRLFWithPrevNode(f)}appendToNode(e,t){this.adjustCarriageReturnFromNext(t,e)&&(t+=` +`);const i=this.shouldCheckCRLF()&&this.startWithLF(t)&&this.endWithCR(e),s=this._buffers[0].buffer.length;this._buffers[0].buffer+=t;const r=Gd(t,!1);for(let f=0;f<r.length;f++)r[f]+=s;if(i){const f=this._buffers[0].lineStarts[this._buffers[0].lineStarts.length-2];this._buffers[0].lineStarts.pop(),this._lastChangeBufferPos={line:this._lastChangeBufferPos.line-1,column:s-f}}this._buffers[0].lineStarts=this._buffers[0].lineStarts.concat(r.slice(1));const o=this._buffers[0].lineStarts.length-1,a=this._buffers[0].buffer.length-this._buffers[0].lineStarts[o],l={line:o,column:a},c=e.piece.length+t.length,u=e.piece.lineFeedCnt,h=this.getLineFeedCnt(0,e.piece.start,l),d=h-u;e.piece=new $o(e.piece.bufferIndex,e.piece.start,l,h,c),this._lastChangeBufferPos=l,jd(this,e,t.length,d)}nodeAt(e){let t=this.root;const i=this._searchCache.get(e);if(i)return{node:i.node,nodeStartOffset:i.nodeStartOffset,remainder:e-i.nodeStartOffset};let s=0;for(;t!==_t;)if(t.size_left>e)t=t.left;else if(t.size_left+t.piece.length>=e){s+=t.size_left;const r={node:t,remainder:e-t.size_left,nodeStartOffset:s};return this._searchCache.set(r),r}else e-=t.size_left+t.piece.length,s+=t.size_left+t.piece.length,t=t.right;return null}nodeAt2(e,t){let i=this.root,s=0;for(;i!==_t;)if(i.left!==_t&&i.lf_left>=e-1)i=i.left;else if(i.lf_left+i.piece.lineFeedCnt>e-1){const r=this.getAccumulatedValue(i,e-i.lf_left-2),o=this.getAccumulatedValue(i,e-i.lf_left-1);return s+=i.size_left,{node:i,remainder:Math.min(r+t-1,o),nodeStartOffset:s}}else if(i.lf_left+i.piece.lineFeedCnt===e-1){const r=this.getAccumulatedValue(i,e-i.lf_left-2);if(r+t-1<=i.piece.length)return{node:i,remainder:r+t-1,nodeStartOffset:s};t-=i.piece.length-r;break}else e-=i.lf_left+i.piece.lineFeedCnt,s+=i.size_left+i.piece.length,i=i.right;for(i=i.next();i!==_t;){if(i.piece.lineFeedCnt>0){const r=this.getAccumulatedValue(i,0),o=this.offsetOfNode(i);return{node:i,remainder:Math.min(t-1,r),nodeStartOffset:o}}else if(i.piece.length>=t-1){const r=this.offsetOfNode(i);return{node:i,remainder:t-1,nodeStartOffset:r}}else t-=i.piece.length;i=i.next()}return null}nodeCharCodeAt(e,t){if(e.piece.lineFeedCnt<1)return-1;const i=this._buffers[e.piece.bufferIndex],s=this.offsetInBuffer(e.piece.bufferIndex,e.piece.start)+t;return i.buffer.charCodeAt(s)}offsetOfNode(e){if(!e)return 0;let t=e.size_left;for(;e!==this.root;)e.parent.right===e&&(t+=e.parent.size_left+e.parent.piece.length),e=e.parent;return t}shouldCheckCRLF(){return!(this._EOLNormalized&&this._EOL===` +`)}startWithLF(e){if(typeof e=="string")return e.charCodeAt(0)===10;if(e===_t||e.piece.lineFeedCnt===0)return!1;const t=e.piece,i=this._buffers[t.bufferIndex].lineStarts,s=t.start.line,r=i[s]+t.start.column;return s===i.length-1||i[s+1]>r+1?!1:this._buffers[t.bufferIndex].buffer.charCodeAt(r)===10}endWithCR(e){return typeof e=="string"?e.charCodeAt(e.length-1)===13:e===_t||e.piece.lineFeedCnt===0?!1:this.nodeCharCodeAt(e,e.piece.length-1)===13}validateCRLFWithPrevNode(e){if(this.shouldCheckCRLF()&&this.startWithLF(e)){const t=e.prev();this.endWithCR(t)&&this.fixCRLF(t,e)}}validateCRLFWithNextNode(e){if(this.shouldCheckCRLF()&&this.endWithCR(e)){const t=e.next();this.startWithLF(t)&&this.fixCRLF(e,t)}}fixCRLF(e,t){const i=[],s=this._buffers[e.piece.bufferIndex].lineStarts;let r;e.piece.end.column===0?r={line:e.piece.end.line-1,column:s[e.piece.end.line]-s[e.piece.end.line-1]-1}:r={line:e.piece.end.line,column:e.piece.end.column-1};const o=e.piece.length-1,a=e.piece.lineFeedCnt-1;e.piece=new $o(e.piece.bufferIndex,e.piece.start,r,a,o),jd(this,e,-1,-1),e.piece.length===0&&i.push(e);const l={line:t.piece.start.line+1,column:0},c=t.piece.length-1,u=this.getLineFeedCnt(t.piece.bufferIndex,l,t.piece.end);t.piece=new $o(t.piece.bufferIndex,l,t.piece.end,u,c),jd(this,t,-1,-1),t.piece.length===0&&i.push(t);const h=this.createNewPieces(`\r +`);this.rbInsertRight(e,h[0]);for(let d=0;d<i.length;d++)dI(this,i[d])}adjustCarriageReturnFromNext(e,t){if(this.shouldCheckCRLF()&&this.endWithCR(e)){const i=t.next();if(this.startWithLF(i)){if(e+=` +`,i.piece.length===1)dI(this,i);else{const s=i.piece,r={line:s.start.line+1,column:0},o=s.length-1,a=this.getLineFeedCnt(s.bufferIndex,r,s.end);i.piece=new $o(s.bufferIndex,r,s.end,a,o),jd(this,i,-1,-1)}return!0}}return!1}iterate(e,t){if(e===_t)return t(_t);const i=this.iterate(e.left,t);return i&&t(e)&&this.iterate(e.right,t)}getNodeContent(e){if(e===_t)return"";const t=this._buffers[e.piece.bufferIndex],i=e.piece,s=this.offsetInBuffer(i.bufferIndex,i.start),r=this.offsetInBuffer(i.bufferIndex,i.end);return t.buffer.substring(s,r)}getPieceContent(e){const t=this._buffers[e.bufferIndex],i=this.offsetInBuffer(e.bufferIndex,e.start),s=this.offsetInBuffer(e.bufferIndex,e.end);return t.buffer.substring(i,s)}rbInsertRight(e,t){const i=new P9(t,1);if(i.left=_t,i.right=_t,i.parent=_t,i.size_left=0,i.lf_left=0,this.root===_t)this.root=i,i.color=0;else if(e.right===_t)e.right=i,i.parent=e;else{const r=Nq(e.right);r.left=i,i.parent=r}return qee(this,i),i}rbInsertLeft(e,t){const i=new P9(t,1);if(i.left=_t,i.right=_t,i.parent=_t,i.size_left=0,i.lf_left=0,this.root===_t)this.root=i,i.color=0;else if(e.left===_t)e.left=i,i.parent=e;else{const s=mme(e.left);s.right=i,i.parent=s}return qee(this,i),i}}class Eb extends pe{constructor(e,t,i,s,r,o,a){super(),this._onDidChangeContent=this._register(new ue),this._BOM=t,this._mightContainNonBasicASCII=!o,this._mightContainRTL=s,this._mightContainUnusualLineTerminators=r,this._pieceTree=new Zje(e,i,a)}mightContainRTL(){return this._mightContainRTL}mightContainUnusualLineTerminators(){return this._mightContainUnusualLineTerminators}resetMightContainUnusualLineTerminators(){this._mightContainUnusualLineTerminators=!1}mightContainNonBasicASCII(){return this._mightContainNonBasicASCII}getBOM(){return this._BOM}getEOL(){return this._pieceTree.getEOL()}createSnapshot(e){return this._pieceTree.createSnapshot(e?this._BOM:"")}getOffsetAt(e,t){return this._pieceTree.getOffsetAt(e,t)}getPositionAt(e){return this._pieceTree.getPositionAt(e)}getRangeAt(e,t){const i=e+t,s=this.getPositionAt(e),r=this.getPositionAt(i);return new M(s.lineNumber,s.column,r.lineNumber,r.column)}getValueInRange(e,t=0){if(e.isEmpty())return"";const i=this._getEndOfLine(t);return this._pieceTree.getValueInRange(e,i)}getValueLengthInRange(e,t=0){if(e.isEmpty())return 0;if(e.startLineNumber===e.endLineNumber)return e.endColumn-e.startColumn;const i=this.getOffsetAt(e.startLineNumber,e.startColumn),s=this.getOffsetAt(e.endLineNumber,e.endColumn);let r=0;const o=this._getEndOfLine(t),a=this.getEOL();if(o.length!==a.length){const l=o.length-a.length,c=e.endLineNumber-e.startLineNumber;r=l*c}return s-i+r}getCharacterCountInRange(e,t=0){if(this._mightContainNonBasicASCII){let i=0;const s=e.startLineNumber,r=e.endLineNumber;for(let o=s;o<=r;o++){const a=this.getLineContent(o),l=o===s?e.startColumn-1:0,c=o===r?e.endColumn-1:a.length;for(let u=l;u<c;u++)As(a.charCodeAt(u))?(i=i+1,u=u+1):i=i+1}return i+=this._getEndOfLine(t).length*(r-s),i}return this.getValueLengthInRange(e,t)}getLength(){return this._pieceTree.getLength()}getLineCount(){return this._pieceTree.getLineCount()}getLinesContent(){return this._pieceTree.getLinesContent()}getLineContent(e){return this._pieceTree.getLineContent(e)}getLineCharCode(e,t){return this._pieceTree.getLineCharCode(e,t)}getLineLength(e){return this._pieceTree.getLineLength(e)}getLineFirstNonWhitespaceColumn(e){const t=zr(this.getLineContent(e));return t===-1?0:t+1}getLineLastNonWhitespaceColumn(e){const t=wu(this.getLineContent(e));return t===-1?0:t+2}_getEndOfLine(e){switch(e){case 1:return` +`;case 2:return`\r +`;case 0:return this.getEOL();default:throw new Error("Unknown EOL preference")}}setEOL(e){this._pieceTree.setEOL(e)}applyEdits(e,t,i){let s=this._mightContainRTL,r=this._mightContainUnusualLineTerminators,o=this._mightContainNonBasicASCII,a=!0,l=[];for(let p=0;p<e.length;p++){const m=e[p];a&&m._isTracked&&(a=!1);const _=m.range;if(m.text){let E=!0;o||(E=!gE(m.text),o=E),!s&&E&&(s=fy(m.text)),!r&&E&&(r=oge(m.text))}let b="",y=0,w=0,S=0;if(m.text){let E;[y,w,S,E]=im(m.text);const L=this.getEOL();E===0||E===(L===`\r +`?2:1)?b=m.text:b=m.text.replace(/\r\n|\r|\n/g,L)}l[p]={sortIndex:p,identifier:m.identifier||null,range:_,rangeOffset:this.getOffsetAt(_.startLineNumber,_.startColumn),rangeLength:this.getValueLengthInRange(_),text:b,eolCount:y,firstLineLength:w,lastLineLength:S,forceMoveMarkers:!!m.forceMoveMarkers,isAutoWhitespaceEdit:m.isAutoWhitespaceEdit||!1}}l.sort(Eb._sortOpsAscending);let c=!1;for(let p=0,m=l.length-1;p<m;p++){const _=l[p].range.getEndPosition(),b=l[p+1].range.getStartPosition();if(b.isBeforeOrEqual(_)){if(b.isBefore(_))throw new Error("Overlapping ranges are not allowed!");c=!0}}a&&(l=this._reduceOperations(l));const u=i||t?Eb._getInverseEditRanges(l):[],h=[];if(t)for(let p=0;p<l.length;p++){const m=l[p],_=u[p];if(m.isAutoWhitespaceEdit&&m.range.isEmpty())for(let b=_.startLineNumber;b<=_.endLineNumber;b++){let y="";b===_.startLineNumber&&(y=this.getLineContent(m.range.startLineNumber),zr(y)!==-1)||h.push({lineNumber:b,oldContent:y})}}let d=null;if(i){let p=0;d=[];for(let m=0;m<l.length;m++){const _=l[m],b=u[m],y=this.getValueInRange(_.range),w=_.rangeOffset+p;p+=_.text.length-y.length,d[m]={sortIndex:_.sortIndex,identifier:_.identifier,range:b,text:y,textChange:new ur(_.rangeOffset,y,w,_.text)}}c||d.sort((m,_)=>m.sortIndex-_.sortIndex)}this._mightContainRTL=s,this._mightContainUnusualLineTerminators=r,this._mightContainNonBasicASCII=o;const f=this._doApplyEdits(l);let g=null;if(t&&h.length>0){h.sort((p,m)=>m.lineNumber-p.lineNumber),g=[];for(let p=0,m=h.length;p<m;p++){const _=h[p].lineNumber;if(p>0&&h[p-1].lineNumber===_)continue;const b=h[p].oldContent,y=this.getLineContent(_);y.length===0||y===b||zr(y)!==-1||g.push(_)}}return this._onDidChangeContent.fire(),new wUe(d,f,g)}_reduceOperations(e){return e.length<1e3?e:[this._toSingleEditOperation(e)]}_toSingleEditOperation(e){let t=!1;const i=e[0].range,s=e[e.length-1].range,r=new M(i.startLineNumber,i.startColumn,s.endLineNumber,s.endColumn);let o=i.startLineNumber,a=i.startColumn;const l=[];for(let f=0,g=e.length;f<g;f++){const p=e[f],m=p.range;t=t||p.forceMoveMarkers,l.push(this.getValueInRange(new M(o,a,m.startLineNumber,m.startColumn))),p.text.length>0&&l.push(p.text),o=m.endLineNumber,a=m.endColumn}const c=l.join(""),[u,h,d]=im(c);return{sortIndex:0,identifier:e[0].identifier,range:r,rangeOffset:this.getOffsetAt(r.startLineNumber,r.startColumn),rangeLength:this.getValueLengthInRange(r,0),text:c,eolCount:u,firstLineLength:h,lastLineLength:d,forceMoveMarkers:t,isAutoWhitespaceEdit:!1}}_doApplyEdits(e){e.sort(Eb._sortOpsDescending);const t=[];for(let i=0;i<e.length;i++){const s=e[i],r=s.range.startLineNumber,o=s.range.startColumn,a=s.range.endLineNumber,l=s.range.endColumn;if(r===a&&o===l&&s.text.length===0)continue;s.text?(this._pieceTree.delete(s.rangeOffset,s.rangeLength),this._pieceTree.insert(s.rangeOffset,s.text,!0)):this._pieceTree.delete(s.rangeOffset,s.rangeLength);const c=new M(r,o,a,l);t.push({range:c,rangeLength:s.rangeLength,text:s.text,rangeOffset:s.rangeOffset,forceMoveMarkers:s.forceMoveMarkers})}return t}findMatchesLineByLine(e,t,i,s){return this._pieceTree.findMatchesLineByLine(e,t,i,s)}static _getInverseEditRanges(e){const t=[];let i=0,s=0,r=null;for(let o=0,a=e.length;o<a;o++){const l=e[o];let c,u;r?r.range.endLineNumber===l.range.startLineNumber?(c=i,u=s+(l.range.startColumn-r.range.endColumn)):(c=i+(l.range.startLineNumber-r.range.endLineNumber),u=l.range.startColumn):(c=l.range.startLineNumber,u=l.range.startColumn);let h;if(l.text.length>0){const d=l.eolCount+1;d===1?h=new M(c,u,c,u+l.firstLineLength):h=new M(c,u,c+d-1,l.lastLineLength+1)}else h=new M(c,u,c,u);i=h.endLineNumber,s=h.endColumn,t.push(h),r=l}return t}static _sortOpsAscending(e,t){const i=M.compareRangesUsingEnds(e.range,t.range);return i===0?e.sortIndex-t.sortIndex:i}static _sortOpsDescending(e,t){const i=M.compareRangesUsingEnds(e.range,t.range);return i===0?t.sortIndex-e.sortIndex:-i}}class Xje{constructor(e,t,i,s,r,o,a,l,c){this._chunks=e,this._bom=t,this._cr=i,this._lf=s,this._crlf=r,this._containsRTL=o,this._containsUnusualLineTerminators=a,this._isBasicASCII=l,this._normalizeEOL=c}_getEOL(e){const t=this._cr+this._lf+this._crlf,i=this._cr+this._crlf;return t===0?e===1?` +`:`\r +`:i>t/2?`\r +`:` +`}create(e){const t=this._getEOL(e),i=this._chunks;if(this._normalizeEOL&&(t===`\r +`&&(this._cr>0||this._lf>0)||t===` +`&&(this._cr>0||this._crlf>0)))for(let r=0,o=i.length;r<o;r++){const a=i[r].buffer.replace(/\r\n|\r|\n/g,t),l=Gd(a);i[r]=new L1(a,l)}const s=new Eb(i,this._bom,t,this._containsRTL,this._containsUnusualLineTerminators,this._isBasicASCII,this._normalizeEOL);return{textBuffer:s,disposable:s}}}class vme{constructor(){this.chunks=[],this.BOM="",this._hasPreviousChar=!1,this._previousChar=0,this._tmpLineStarts=[],this.cr=0,this.lf=0,this.crlf=0,this.containsRTL=!1,this.containsUnusualLineTerminators=!1,this.isBasicASCII=!0}acceptChunk(e){if(e.length===0)return;this.chunks.length===0&&zj(e)&&(this.BOM=I8e,e=e.substr(1));const t=e.charCodeAt(e.length-1);t===13||t>=55296&&t<=56319?(this._acceptChunk1(e.substr(0,e.length-1),!1),this._hasPreviousChar=!0,this._previousChar=t):(this._acceptChunk1(e,!1),this._hasPreviousChar=!1,this._previousChar=t)}_acceptChunk1(e,t){!t&&e.length===0||(this._hasPreviousChar?this._acceptChunk2(String.fromCharCode(this._previousChar)+e):this._acceptChunk2(e))}_acceptChunk2(e){const t=Kje(this._tmpLineStarts,e);this.chunks.push(new L1(e,t.lineStarts)),this.cr+=t.cr,this.lf+=t.lf,this.crlf+=t.crlf,t.isBasicASCII||(this.isBasicASCII=!1,this.containsRTL||(this.containsRTL=fy(e)),this.containsUnusualLineTerminators||(this.containsUnusualLineTerminators=oge(e)))}finish(e=!0){return this._finish(),new Xje(this.chunks,this.BOM,this.cr,this.lf,this.crlf,this.containsRTL,this.containsUnusualLineTerminators,this.isBasicASCII,e)}_finish(){if(this.chunks.length===0&&this._acceptChunk1("",!0),this._hasPreviousChar){this._hasPreviousChar=!1;const e=this.chunks[this.chunks.length-1];e.buffer+=String.fromCharCode(this._previousChar);const t=Gd(e.buffer);e.lineStarts=t,this._previousChar===13&&this.cr++}}}const Ly=new class{clone(){return this}equals(n){return this===n}};function Mq(n,e){return new yq([new IL(0,"",n)],e)}function GO(n,e){const t=new Uint32Array(2);return t[0]=0,t[1]=(n<<0|0|0|32768|2<<24)>>>0,new zO(t,e===null?Ly:e)}class Qje{constructor(e){this._default=e,this._store=[]}get(e){return e<this._store.length?this._store[e]:this._default}set(e,t){for(;e>=this._store.length;)this._store[this._store.length]=this._default;this._store[e]=t}replace(e,t,i){if(e>=this._store.length)return;if(t===0){this.insert(e,i);return}else if(i===0){this.delete(e,t);return}const s=this._store.slice(0,e),r=this._store.slice(e+t),o=Jje(i,this._default);this._store=s.concat(o,r)}delete(e,t){t===0||e>=this._store.length||this._store.splice(e,t)}insert(e,t){if(t===0||e>=this._store.length)return;const i=[];for(let s=0;s<t;s++)i[s]=this._default;this._store=EO(this._store,e,i)}}function Jje(n,e){const t=[];for(let i=0;i<n;i++)t[i]=e;return t}class eqe{get startLineNumber(){return this._startLineNumber}get endLineNumber(){return this._startLineNumber+this._tokens.length-1}constructor(e,t){this._startLineNumber=e,this._tokens=t}getLineTokens(e){return this._tokens[e-this._startLineNumber]}appendLineTokens(e){this._tokens.push(e)}}class R9{constructor(){this._tokens=[]}add(e,t){if(this._tokens.length>0){const i=this._tokens[this._tokens.length-1];if(i.endLineNumber+1===e){i.appendLineTokens(t);return}}this._tokens.push(new eqe(e,[t]))}finalize(){return this._tokens}}class Ps{static createEmpty(e,t){const i=Ps.defaultTokenMetadata,s=new Uint32Array(2);return s[0]=e.length,s[1]=i,new Ps(s,e,t)}constructor(e,t,i){this._lineTokensBrand=void 0,this._tokens=e,this._tokensCount=this._tokens.length>>>1,this._text=t,this._languageIdCodec=i}equals(e){return e instanceof Ps?this.slicedEquals(e,0,this._tokensCount):!1}slicedEquals(e,t,i){if(this._text!==e._text||this._tokensCount!==e._tokensCount)return!1;const s=t<<1,r=s+(i<<1);for(let o=s;o<r;o++)if(this._tokens[o]!==e._tokens[o])return!1;return!0}getLineContent(){return this._text}getCount(){return this._tokensCount}getStartOffset(e){return e>0?this._tokens[e-1<<1]:0}getMetadata(e){return this._tokens[(e<<1)+1]}getLanguageId(e){const t=this._tokens[(e<<1)+1],i=dr.getLanguageId(t);return this._languageIdCodec.decodeLanguageId(i)}getStandardTokenType(e){const t=this._tokens[(e<<1)+1];return dr.getTokenType(t)}getForeground(e){const t=this._tokens[(e<<1)+1];return dr.getForeground(t)}getClassName(e){const t=this._tokens[(e<<1)+1];return dr.getClassNameFromMetadata(t)}getInlineStyle(e,t){const i=this._tokens[(e<<1)+1];return dr.getInlineStyleFromMetadata(i,t)}getPresentation(e){const t=this._tokens[(e<<1)+1];return dr.getPresentationFromMetadata(t)}getEndOffset(e){return this._tokens[e<<1]}findTokenIndexAtOffset(e){return Ps.findIndexInTokensArray(this._tokens,e)}inflate(){return this}sliceAndInflate(e,t,i){return new Oq(this,e,t,i)}static convertToEndOffset(e,t){const s=(e.length>>>1)-1;for(let r=0;r<s;r++)e[r<<1]=e[r+1<<1];e[s<<1]=t}static findIndexInTokensArray(e,t){if(e.length<=2)return 0;let i=0,s=(e.length>>>1)-1;for(;i<s;){const r=i+Math.floor((s-i)/2),o=e[r<<1];if(o===t)return r+1;o<t?i=r+1:o>t&&(s=r)}return i}withInserted(e){if(e.length===0)return this;let t=0,i=0,s="";const r=new Array;let o=0;for(;;){const a=t<this._tokensCount?this._tokens[t<<1]:-1,l=i<e.length?e[i]:null;if(a!==-1&&(l===null||a<=l.offset)){s+=this._text.substring(o,a);const c=this._tokens[(t<<1)+1];r.push(s.length,c),t++,o=a}else if(l){if(l.offset>o){s+=this._text.substring(o,l.offset);const c=this._tokens[(t<<1)+1];r.push(s.length,c),o=l.offset}s+=l.text,r.push(s.length,l.tokenMetadata),i++}else break}return new Ps(new Uint32Array(r),s,this._languageIdCodec)}}Ps.defaultTokenMetadata=(32768|2<<24)>>>0;class Oq{constructor(e,t,i,s){this._source=e,this._startOffset=t,this._endOffset=i,this._deltaOffset=s,this._firstTokenIndex=e.findTokenIndexAtOffset(t),this._tokensCount=0;for(let r=this._firstTokenIndex,o=e.getCount();r<o&&!(e.getStartOffset(r)>=i);r++)this._tokensCount++}getMetadata(e){return this._source.getMetadata(this._firstTokenIndex+e)}getLanguageId(e){return this._source.getLanguageId(this._firstTokenIndex+e)}getLineContent(){return this._source.getLineContent().substring(this._startOffset,this._endOffset)}equals(e){return e instanceof Oq?this._startOffset===e._startOffset&&this._endOffset===e._endOffset&&this._deltaOffset===e._deltaOffset&&this._source.slicedEquals(e._source,this._firstTokenIndex,this._tokensCount):!1}getCount(){return this._tokensCount}getForeground(e){return this._source.getForeground(this._firstTokenIndex+e)}getEndOffset(e){const t=this._source.getEndOffset(this._firstTokenIndex+e);return Math.min(this._endOffset,t)-this._startOffset+this._deltaOffset}getClassName(e){return this._source.getClassName(this._firstTokenIndex+e)}getInlineStyle(e,t){return this._source.getInlineStyle(this._firstTokenIndex+e,t)}getPresentation(e){return this._source.getPresentation(this._firstTokenIndex+e)}findTokenIndexAtOffset(e){return this._source.findTokenIndexAtOffset(e+this._startOffset-this._deltaOffset)-this._firstTokenIndex}}class tqe{constructor(e,t){this.tokenizationSupport=t,this.initialState=this.tokenizationSupport.getInitialState(),this.store=new M9(e)}getStartState(e){return this.store.getStartState(e,this.initialState)}getFirstInvalidLine(){return this.store.getFirstInvalidLine(this.initialState)}}class iqe extends tqe{constructor(e,t,i,s){super(e,t),this._textModel=i,this._languageIdCodec=s}updateTokensUntilLine(e,t){const i=this._textModel.getLanguageId();for(;;){const s=this.getFirstInvalidLine();if(!s||s.lineNumber>t)break;const r=this._textModel.getLineContent(s.lineNumber),o=Tw(this._languageIdCodec,i,this.tokenizationSupport,r,!0,s.startState);e.add(s.lineNumber,o.tokens),this.store.setEndState(s.lineNumber,o.endState)}}getTokenTypeIfInsertingCharacter(e,t){const i=this.getStartState(e.lineNumber);if(!i)return 0;const s=this._textModel.getLanguageId(),r=this._textModel.getLineContent(e.lineNumber),o=r.substring(0,e.column-1)+t+r.substring(e.column-1),a=Tw(this._languageIdCodec,s,this.tokenizationSupport,o,!0,i),l=new Ps(a.tokens,o,this._languageIdCodec);if(l.getCount()===0)return 0;const c=l.findTokenIndexAtOffset(e.column-1);return l.getStandardTokenType(c)}tokenizeLineWithEdit(e,t,i){const s=e.lineNumber,r=e.column,o=this.getStartState(s);if(!o)return null;const a=this._textModel.getLineContent(s),l=a.substring(0,r-1)+i+a.substring(r-1+t),c=this._textModel.getLanguageIdAtPosition(s,0),u=Tw(this._languageIdCodec,c,this.tokenizationSupport,l,!0,o);return new Ps(u.tokens,l,this._languageIdCodec)}isCheapToTokenize(e){const t=this.store.getFirstInvalidEndStateLineNumberOrMax();return e<t||e===t&&this._textModel.getLineLength(e)<2048}tokenizeHeuristically(e,t,i){if(i<=this.store.getFirstInvalidEndStateLineNumberOrMax())return{heuristicTokens:!1};if(t<=this.store.getFirstInvalidEndStateLineNumberOrMax())return this.updateTokensUntilLine(e,i),{heuristicTokens:!1};let s=this.guessStartState(t);const r=this._textModel.getLanguageId();for(let o=t;o<=i;o++){const a=this._textModel.getLineContent(o),l=Tw(this._languageIdCodec,r,this.tokenizationSupport,a,!0,s);e.add(o,l.tokens),s=l.endState}return{heuristicTokens:!0}}guessStartState(e){let t=this._textModel.getLineFirstNonWhitespaceColumn(e);const i=[];let s=null;for(let a=e-1;t>1&&a>=1;a--){const l=this._textModel.getLineFirstNonWhitespaceColumn(a);if(l!==0&&l<t&&(i.push(this._textModel.getLineContent(a)),t=l,s=this.getStartState(a),s))break}s||(s=this.tokenizationSupport.getInitialState()),i.reverse();const r=this._textModel.getLanguageId();let o=s;for(const a of i)o=Tw(this._languageIdCodec,r,this.tokenizationSupport,a,!1,o).endState;return o}}class M9{constructor(e){this.lineCount=e,this._tokenizationStateStore=new nqe,this._invalidEndStatesLineNumbers=new sqe,this._invalidEndStatesLineNumbers.addRange(new Nt(1,e+1))}getEndState(e){return this._tokenizationStateStore.getEndState(e)}setEndState(e,t){if(!t)throw new an("Cannot set null/undefined state");this._invalidEndStatesLineNumbers.delete(e);const i=this._tokenizationStateStore.setEndState(e,t);return i&&e<this.lineCount&&this._invalidEndStatesLineNumbers.addRange(new Nt(e+1,e+2)),i}acceptChange(e,t){this.lineCount+=t-e.length,this._tokenizationStateStore.acceptChange(e,t),this._invalidEndStatesLineNumbers.addRangeAndResize(new Nt(e.startLineNumber,e.endLineNumberExclusive),t)}acceptChanges(e){for(const t of e){const[i]=im(t.text);this.acceptChange(new xt(t.range.startLineNumber,t.range.endLineNumber+1),i+1)}}invalidateEndStateRange(e){this._invalidEndStatesLineNumbers.addRange(new Nt(e.startLineNumber,e.endLineNumberExclusive))}getFirstInvalidEndStateLineNumber(){return this._invalidEndStatesLineNumbers.min}getFirstInvalidEndStateLineNumberOrMax(){return this.getFirstInvalidEndStateLineNumber()||Number.MAX_SAFE_INTEGER}allStatesValid(){return this._invalidEndStatesLineNumbers.min===null}getStartState(e,t){return e===1?t:this.getEndState(e-1)}getFirstInvalidLine(e){const t=this.getFirstInvalidEndStateLineNumber();if(t===null)return null;const i=this.getStartState(t,e);if(!i)throw new an("Start state must be defined");return{lineNumber:t,startState:i}}}class nqe{constructor(){this._lineEndStates=new Qje(null)}getEndState(e){return this._lineEndStates.get(e)}setEndState(e,t){const i=this._lineEndStates.get(e);return i&&i.equals(t)?!1:(this._lineEndStates.set(e,t),!0)}acceptChange(e,t){let i=e.length;t>0&&i>0&&(i--,t--),this._lineEndStates.replace(e.startLineNumber,i,t)}}class sqe{constructor(){this._ranges=[]}get min(){return this._ranges.length===0?null:this._ranges[0].start}delete(e){const t=this._ranges.findIndex(i=>i.contains(e));if(t!==-1){const i=this._ranges[t];i.start===e?i.endExclusive===e+1?this._ranges.splice(t,1):this._ranges[t]=new Nt(e+1,i.endExclusive):i.endExclusive===e+1?this._ranges[t]=new Nt(i.start,e):this._ranges.splice(t,1,new Nt(i.start,e),new Nt(e+1,i.endExclusive))}}addRange(e){Nt.addRange(e,this._ranges)}addRangeAndResize(e,t){let i=0;for(;!(i>=this._ranges.length||e.start<=this._ranges[i].endExclusive);)i++;let s=i;for(;!(s>=this._ranges.length||e.endExclusive<this._ranges[s].start);)s++;const r=t-e.length;for(let o=s;o<this._ranges.length;o++)this._ranges[o]=this._ranges[o].delta(r);if(i===s){const o=new Nt(e.start,e.start+t);o.isEmpty||this._ranges.splice(i,0,o)}else{const o=Math.min(e.start,this._ranges[i].start),a=Math.max(e.endExclusive,this._ranges[s-1].endExclusive),l=new Nt(o,a+r);l.isEmpty?this._ranges.splice(i,s-i):this._ranges.splice(i,s-i,l)}}toString(){return this._ranges.map(e=>e.toString()).join(" + ")}}function Tw(n,e,t,i,s,r){let o=null;if(t)try{o=t.tokenizeEncoded(i,s,r.clone())}catch(a){vt(a)}return o||(o=GO(n.encodeLanguageId(e),r)),Ps.convertToEndOffset(o.tokens,i.length),o}class rqe{constructor(e,t){this._tokenizerWithStateStore=e,this._backgroundTokenStore=t,this._isDisposed=!1,this._isScheduled=!1}dispose(){this._isDisposed=!0}handleChanges(){this._beginBackgroundTokenization()}_beginBackgroundTokenization(){this._isScheduled||!this._tokenizerWithStateStore._textModel.isAttachedToEditor()||!this._hasLinesToTokenize()||(this._isScheduled=!0,qfe(e=>{this._isScheduled=!1,this._backgroundTokenizeWithDeadline(e)}))}_backgroundTokenizeWithDeadline(e){const t=Date.now()+e.timeRemaining(),i=()=>{this._isDisposed||!this._tokenizerWithStateStore._textModel.isAttachedToEditor()||!this._hasLinesToTokenize()||(this._backgroundTokenizeForAtLeast1ms(),Date.now()<t?Wfe(i):this._beginBackgroundTokenization())};i()}_backgroundTokenizeForAtLeast1ms(){const e=this._tokenizerWithStateStore._textModel.getLineCount(),t=new R9,i=Nr.create(!1);do if(i.elapsed()>1||this._tokenizeOneInvalidLine(t)>=e)break;while(this._hasLinesToTokenize());this._backgroundTokenStore.setTokens(t.finalize()),this.checkFinished()}_hasLinesToTokenize(){return this._tokenizerWithStateStore?!this._tokenizerWithStateStore.store.allStatesValid():!1}_tokenizeOneInvalidLine(e){var t;const i=(t=this._tokenizerWithStateStore)===null||t===void 0?void 0:t.getFirstInvalidLine();return i?(this._tokenizerWithStateStore.updateTokensUntilLine(e,i.lineNumber),i.lineNumber):this._tokenizerWithStateStore._textModel.getLineCount()+1}checkFinished(){this._isDisposed||this._tokenizerWithStateStore.store.allStatesValid()&&this._backgroundTokenStore.backgroundTokenizationFinished()}requestTokens(e,t){this._tokenizerWithStateStore.store.invalidateEndStateRange(new xt(e,t))}}const Yd=new Uint32Array(0).buffer;class ah{static deleteBeginning(e,t){return e===null||e===Yd?e:ah.delete(e,0,t)}static deleteEnding(e,t){if(e===null||e===Yd)return e;const i=ff(e),s=i[i.length-2];return ah.delete(e,t,s)}static delete(e,t,i){if(e===null||e===Yd||t===i)return e;const s=ff(e),r=s.length>>>1;if(t===0&&s[s.length-2]===i)return Yd;const o=Ps.findIndexInTokensArray(s,t),a=o>0?s[o-1<<1]:0,l=s[o<<1];if(i<l){const f=i-t;for(let g=o;g<r;g++)s[g<<1]-=f;return e}let c,u;a!==t?(s[o<<1]=t,c=o+1<<1,u=t):(c=o<<1,u=a);const h=i-t;for(let f=o+1;f<r;f++){const g=s[f<<1]-h;g>u&&(s[c++]=g,s[c++]=s[(f<<1)+1],u=g)}if(c===s.length)return e;const d=new Uint32Array(c);return d.set(s.subarray(0,c),0),d.buffer}static append(e,t){if(t===Yd)return e;if(e===Yd)return t;if(e===null)return e;if(t===null)return null;const i=ff(e),s=ff(t),r=s.length>>>1,o=new Uint32Array(i.length+s.length);o.set(i,0);let a=i.length;const l=i[i.length-2];for(let c=0;c<r;c++)o[a++]=s[c<<1]+l,o[a++]=s[(c<<1)+1];return o.buffer}static insert(e,t,i){if(e===null||e===Yd)return e;const s=ff(e),r=s.length>>>1;let o=Ps.findIndexInTokensArray(s,t);o>0&&s[o-1<<1]===t&&o--;for(let a=o;a<r;a++)s[a<<1]+=i;return e}}function ff(n){return n instanceof Uint32Array?n:new Uint32Array(n)}class jL{constructor(e){this._lineTokens=[],this._len=0,this._languageIdCodec=e}flush(){this._lineTokens=[],this._len=0}get hasTokens(){return this._lineTokens.length>0}getTokens(e,t,i){let s=null;if(t<this._len&&(s=this._lineTokens[t]),s!==null&&s!==Yd)return new Ps(ff(s),i,this._languageIdCodec);const r=new Uint32Array(2);return r[0]=i.length,r[1]=Gee(this._languageIdCodec.encodeLanguageId(e)),new Ps(r,i,this._languageIdCodec)}static _massageTokens(e,t,i){const s=i?ff(i):null;if(t===0){let r=!1;if(s&&s.length>1&&(r=dr.getLanguageId(s[1])!==e),!r)return Yd}if(!s||s.length===0){const r=new Uint32Array(2);return r[0]=t,r[1]=Gee(e),r.buffer}return s[s.length-2]=t,s.byteOffset===0&&s.byteLength===s.buffer.byteLength?s.buffer:s}_ensureLine(e){for(;e>=this._len;)this._lineTokens[this._len]=null,this._len++}_deleteLines(e,t){t!==0&&(e+t>this._len&&(t=this._len-e),this._lineTokens.splice(e,t),this._len-=t)}_insertLines(e,t){if(t===0)return;const i=[];for(let s=0;s<t;s++)i[s]=null;this._lineTokens=EO(this._lineTokens,e,i),this._len+=t}setTokens(e,t,i,s,r){const o=jL._massageTokens(this._languageIdCodec.encodeLanguageId(e),i,s);this._ensureLine(t);const a=this._lineTokens[t];return this._lineTokens[t]=o,r?!jL._equals(a,o):!1}static _equals(e,t){if(!e||!t)return!e&&!t;const i=ff(e),s=ff(t);if(i.length!==s.length)return!1;for(let r=0,o=i.length;r<o;r++)if(i[r]!==s[r])return!1;return!0}acceptEdit(e,t,i){this._acceptDeleteRange(e),this._acceptInsertText(new he(e.startLineNumber,e.startColumn),t,i)}_acceptDeleteRange(e){const t=e.startLineNumber-1;if(t>=this._len)return;if(e.startLineNumber===e.endLineNumber){if(e.startColumn===e.endColumn)return;this._lineTokens[t]=ah.delete(this._lineTokens[t],e.startColumn-1,e.endColumn-1);return}this._lineTokens[t]=ah.deleteEnding(this._lineTokens[t],e.startColumn-1);const i=e.endLineNumber-1;let s=null;i<this._len&&(s=ah.deleteBeginning(this._lineTokens[i],e.endColumn-1)),this._lineTokens[t]=ah.append(this._lineTokens[t],s),this._deleteLines(e.startLineNumber,e.endLineNumber-e.startLineNumber)}_acceptInsertText(e,t,i){if(t===0&&i===0)return;const s=e.lineNumber-1;if(!(s>=this._len)){if(t===0){this._lineTokens[s]=ah.insert(this._lineTokens[s],e.column-1,i);return}this._lineTokens[s]=ah.deleteEnding(this._lineTokens[s],e.column-1),this._lineTokens[s]=ah.insert(this._lineTokens[s],e.column-1,i),this._insertLines(e.lineNumber,t)}}setMultilineTokens(e,t){if(e.length===0)return{changes:[]};const i=[];for(let s=0,r=e.length;s<r;s++){const o=e[s];let a=0,l=0,c=!1;for(let u=o.startLineNumber;u<=o.endLineNumber;u++)c?(this.setTokens(t.getLanguageId(),u-1,t.getLineLength(u),o.getLineTokens(u),!1),l=u):this.setTokens(t.getLanguageId(),u-1,t.getLineLength(u),o.getLineTokens(u),!0)&&(c=!0,a=u,l=u);c&&i.push({fromLineNumber:a,toLineNumber:l})}return{changes:i}}}function Gee(n){return(n<<0|0|0|32768|2<<24|1024)>>>0}class Fq{constructor(e){this._pieces=[],this._isComplete=!1,this._languageIdCodec=e}flush(){this._pieces=[],this._isComplete=!1}isEmpty(){return this._pieces.length===0}set(e,t){this._pieces=e||[],this._isComplete=t}setPartial(e,t){let i=e;if(t.length>0){const r=t[0].getRange(),o=t[t.length-1].getRange();if(!r||!o)return e;i=e.plusRange(r).plusRange(o)}let s=null;for(let r=0,o=this._pieces.length;r<o;r++){const a=this._pieces[r];if(a.endLineNumber<i.startLineNumber)continue;if(a.startLineNumber>i.endLineNumber){s=s||{index:r};break}if(a.removeTokens(i),a.isEmpty()){this._pieces.splice(r,1),r--,o--;continue}if(a.endLineNumber<i.startLineNumber)continue;if(a.startLineNumber>i.endLineNumber){s=s||{index:r};continue}const[l,c]=a.split(i);if(l.isEmpty()){s=s||{index:r};continue}c.isEmpty()||(this._pieces.splice(r,1,l,c),r++,o++,s=s||{index:r})}return s=s||{index:this._pieces.length},t.length>0&&(this._pieces=EO(this._pieces,s.index,t)),i}isComplete(){return this._isComplete}addSparseTokens(e,t){if(t.getLineContent().length===0)return t;const i=this._pieces;if(i.length===0)return t;const s=Fq._findFirstPieceWithLine(i,e),r=i[s].getLineTokens(e);if(!r)return t;const o=t.getCount(),a=r.getCount();let l=0;const c=[];let u=0,h=0;const d=(f,g)=>{f!==h&&(h=f,c[u++]=f,c[u++]=g)};for(let f=0;f<a;f++){const g=r.getStartCharacter(f),p=r.getEndCharacter(f),m=r.getMetadata(f),_=((m&1?2048:0)|(m&2?4096:0)|(m&4?8192:0)|(m&8?16384:0)|(m&16?16744448:0)|(m&32?4278190080:0))>>>0,b=~_>>>0;for(;l<o&&t.getEndOffset(l)<=g;)d(t.getEndOffset(l),t.getMetadata(l)),l++;for(l<o&&t.getStartOffset(l)<g&&d(g,t.getMetadata(l));l<o&&t.getEndOffset(l)<p;)d(t.getEndOffset(l),t.getMetadata(l)&b|m&_),l++;if(l<o)d(p,t.getMetadata(l)&b|m&_),t.getEndOffset(l)===p&&l++;else{const y=Math.min(Math.max(0,l-1),o-1);d(p,t.getMetadata(y)&b|m&_)}}for(;l<o;)d(t.getEndOffset(l),t.getMetadata(l)),l++;return new Ps(new Uint32Array(c),t.getLineContent(),this._languageIdCodec)}static _findFirstPieceWithLine(e,t){let i=0,s=e.length-1;for(;i<s;){let r=i+Math.floor((s-i)/2);if(e[r].endLineNumber<t)i=r+1;else if(e[r].startLineNumber>t)s=r-1;else{for(;r>i&&e[r-1].startLineNumber<=t&&t<=e[r-1].endLineNumber;)r--;return r}}return i}acceptEdit(e,t,i,s,r){for(const o of this._pieces)o.acceptEdit(e,t,i,s,r)}}class lP extends Ype{constructor(e,t,i,s,r,o){super(),this._languageService=e,this._languageConfigurationService=t,this._textModel=i,this._bracketPairsTextModelPart=s,this._languageId=r,this._attachedViews=o,this._semanticTokens=new Fq(this._languageService.languageIdCodec),this._onDidChangeLanguage=this._register(new ue),this.onDidChangeLanguage=this._onDidChangeLanguage.event,this._onDidChangeLanguageConfiguration=this._register(new ue),this.onDidChangeLanguageConfiguration=this._onDidChangeLanguageConfiguration.event,this._onDidChangeTokens=this._register(new ue),this.onDidChangeTokens=this._onDidChangeTokens.event,this.grammarTokens=this._register(new oqe(this._languageService.languageIdCodec,this._textModel,()=>this._languageId,this._attachedViews)),this._register(this._languageConfigurationService.onDidChange(a=>{a.affects(this._languageId)&&this._onDidChangeLanguageConfiguration.fire({})})),this._register(this.grammarTokens.onDidChangeTokens(a=>{this._emitModelTokensChangedEvent(a)})),this._register(this.grammarTokens.onDidChangeBackgroundTokenizationState(a=>{this._bracketPairsTextModelPart.handleDidChangeBackgroundTokenizationState()}))}handleDidChangeContent(e){if(e.isFlush)this._semanticTokens.flush();else if(!e.isEolChange)for(const t of e.changes){const[i,s,r]=im(t.text);this._semanticTokens.acceptEdit(t.range,i,s,r,t.text.length>0?t.text.charCodeAt(0):0)}this.grammarTokens.handleDidChangeContent(e)}handleDidChangeAttached(){this.grammarTokens.handleDidChangeAttached()}getLineTokens(e){this.validateLineNumber(e);const t=this.grammarTokens.getLineTokens(e);return this._semanticTokens.addSparseTokens(e,t)}_emitModelTokensChangedEvent(e){this._textModel._isDisposing()||(this._bracketPairsTextModelPart.handleDidChangeTokens(e),this._onDidChangeTokens.fire(e))}validateLineNumber(e){if(e<1||e>this._textModel.getLineCount())throw new an("Illegal value for lineNumber")}get hasTokens(){return this.grammarTokens.hasTokens}resetTokenization(){this.grammarTokens.resetTokenization()}get backgroundTokenizationState(){return this.grammarTokens.backgroundTokenizationState}forceTokenization(e){this.validateLineNumber(e),this.grammarTokens.forceTokenization(e)}isCheapToTokenize(e){return this.validateLineNumber(e),this.grammarTokens.isCheapToTokenize(e)}tokenizeIfCheap(e){this.validateLineNumber(e),this.grammarTokens.tokenizeIfCheap(e)}getTokenTypeIfInsertingCharacter(e,t,i){return this.grammarTokens.getTokenTypeIfInsertingCharacter(e,t,i)}tokenizeLineWithEdit(e,t,i){return this.grammarTokens.tokenizeLineWithEdit(e,t,i)}setSemanticTokens(e,t){this._semanticTokens.set(e,t),this._emitModelTokensChangedEvent({semanticTokensApplied:e!==null,ranges:[{fromLineNumber:1,toLineNumber:this._textModel.getLineCount()}]})}hasCompleteSemanticTokens(){return this._semanticTokens.isComplete()}hasSomeSemanticTokens(){return!this._semanticTokens.isEmpty()}setPartialSemanticTokens(e,t){if(this.hasCompleteSemanticTokens())return;const i=this._textModel.validateRange(this._semanticTokens.setPartial(e,t));this._emitModelTokensChangedEvent({semanticTokensApplied:!0,ranges:[{fromLineNumber:i.startLineNumber,toLineNumber:i.endLineNumber}]})}getWordAtPosition(e){this.assertNotDisposed();const t=this._textModel.validatePosition(e),i=this._textModel.getLineContent(t.lineNumber),s=this.getLineTokens(t.lineNumber),r=s.findTokenIndexAtOffset(t.column-1),[o,a]=lP._findLanguageBoundaries(s,r),l=yL(t.column,this.getLanguageConfiguration(s.getLanguageId(r)).getWordDefinition(),i.substring(o,a),o);if(l&&l.startColumn<=e.column&&e.column<=l.endColumn)return l;if(r>0&&o===t.column-1){const[c,u]=lP._findLanguageBoundaries(s,r-1),h=yL(t.column,this.getLanguageConfiguration(s.getLanguageId(r-1)).getWordDefinition(),i.substring(c,u),c);if(h&&h.startColumn<=e.column&&e.column<=h.endColumn)return h}return null}getLanguageConfiguration(e){return this._languageConfigurationService.getLanguageConfiguration(e)}static _findLanguageBoundaries(e,t){const i=e.getLanguageId(t);let s=0;for(let o=t;o>=0&&e.getLanguageId(o)===i;o--)s=e.getStartOffset(o);let r=e.getLineContent().length;for(let o=t,a=e.getCount();o<a&&e.getLanguageId(o)===i;o++)r=e.getEndOffset(o);return[s,r]}getWordUntilPosition(e){const t=this.getWordAtPosition(e);return t?{word:t.word.substr(0,e.column-t.startColumn),startColumn:t.startColumn,endColumn:e.column}:{word:"",startColumn:e.column,endColumn:e.column}}getLanguageId(){return this._languageId}getLanguageIdAtPosition(e,t){const i=this._textModel.validatePosition(new he(e,t)),s=this.getLineTokens(i.lineNumber);return s.getLanguageId(s.findTokenIndexAtOffset(i.column-1))}setLanguageId(e,t="api"){if(this._languageId===e)return;const i={oldLanguage:this._languageId,newLanguage:e,source:t};this._languageId=e,this._bracketPairsTextModelPart.handleDidChangeLanguage(i),this.grammarTokens.resetTokenization(),this._onDidChangeLanguage.fire(i),this._onDidChangeLanguageConfiguration.fire({})}}class oqe extends pe{get backgroundTokenizationState(){return this._backgroundTokenizationState}constructor(e,t,i,s){super(),this._languageIdCodec=e,this._textModel=t,this.getLanguageId=i,this._tokenizer=null,this._defaultBackgroundTokenizer=null,this._backgroundTokenizer=this._register(new qs),this._tokens=new jL(this._languageIdCodec),this._debugBackgroundTokenizer=this._register(new qs),this._backgroundTokenizationState=1,this._onDidChangeBackgroundTokenizationState=this._register(new ue),this.onDidChangeBackgroundTokenizationState=this._onDidChangeBackgroundTokenizationState.event,this._onDidChangeTokens=this._register(new ue),this.onDidChangeTokens=this._onDidChangeTokens.event,this._attachedViewStates=this._register(new xj),this._register(kn.onDidChange(r=>{const o=this.getLanguageId();r.changedLanguages.indexOf(o)!==-1&&this.resetTokenization()})),this.resetTokenization(),this._register(s.onDidChangeVisibleRanges(({view:r,state:o})=>{if(o){let a=this._attachedViewStates.get(r);a||(a=new aqe(()=>this.refreshRanges(a.lineRanges)),this._attachedViewStates.set(r,a)),a.handleStateChange(o)}else this._attachedViewStates.deleteAndDispose(r)}))}resetTokenization(e=!0){var t;this._tokens.flush(),(t=this._debugBackgroundTokens)===null||t===void 0||t.flush(),this._debugBackgroundStates&&(this._debugBackgroundStates=new M9(this._textModel.getLineCount())),e&&this._onDidChangeTokens.fire({semanticTokensApplied:!1,ranges:[{fromLineNumber:1,toLineNumber:this._textModel.getLineCount()}]});const i=()=>{if(this._textModel.isTooLargeForTokenization())return[null,null];const o=kn.get(this.getLanguageId());if(!o)return[null,null];let a;try{a=o.getInitialState()}catch(l){return vt(l),[null,null]}return[o,a]},[s,r]=i();if(s&&r?this._tokenizer=new iqe(this._textModel.getLineCount(),s,this._textModel,this._languageIdCodec):this._tokenizer=null,this._backgroundTokenizer.clear(),this._defaultBackgroundTokenizer=null,this._tokenizer){const o={setTokens:a=>{this.setTokens(a)},backgroundTokenizationFinished:()=>{if(this._backgroundTokenizationState===2)return;const a=2;this._backgroundTokenizationState=a,this._onDidChangeBackgroundTokenizationState.fire()},setEndState:(a,l)=>{var c;if(!this._tokenizer)return;const u=this._tokenizer.store.getFirstInvalidEndStateLineNumber();u!==null&&a>=u&&((c=this._tokenizer)===null||c===void 0||c.store.setEndState(a,l))}};s&&s.createBackgroundTokenizer&&!s.backgroundTokenizerShouldOnlyVerifyTokens&&(this._backgroundTokenizer.value=s.createBackgroundTokenizer(this._textModel,o)),this._backgroundTokenizer.value||(this._backgroundTokenizer.value=this._defaultBackgroundTokenizer=new rqe(this._tokenizer,o),this._defaultBackgroundTokenizer.handleChanges()),s!=null&&s.backgroundTokenizerShouldOnlyVerifyTokens&&s.createBackgroundTokenizer?(this._debugBackgroundTokens=new jL(this._languageIdCodec),this._debugBackgroundStates=new M9(this._textModel.getLineCount()),this._debugBackgroundTokenizer.clear(),this._debugBackgroundTokenizer.value=s.createBackgroundTokenizer(this._textModel,{setTokens:a=>{var l;(l=this._debugBackgroundTokens)===null||l===void 0||l.setMultilineTokens(a,this._textModel)},backgroundTokenizationFinished(){},setEndState:(a,l)=>{var c;(c=this._debugBackgroundStates)===null||c===void 0||c.setEndState(a,l)}})):(this._debugBackgroundTokens=void 0,this._debugBackgroundStates=void 0,this._debugBackgroundTokenizer.value=void 0)}this.refreshAllVisibleLineTokens()}handleDidChangeAttached(){var e;(e=this._defaultBackgroundTokenizer)===null||e===void 0||e.handleChanges()}handleDidChangeContent(e){var t,i,s;if(e.isFlush)this.resetTokenization(!1);else if(!e.isEolChange){for(const r of e.changes){const[o,a]=im(r.text);this._tokens.acceptEdit(r.range,o,a),(t=this._debugBackgroundTokens)===null||t===void 0||t.acceptEdit(r.range,o,a)}(i=this._debugBackgroundStates)===null||i===void 0||i.acceptChanges(e.changes),this._tokenizer&&this._tokenizer.store.acceptChanges(e.changes),(s=this._defaultBackgroundTokenizer)===null||s===void 0||s.handleChanges()}}setTokens(e){const{changes:t}=this._tokens.setMultilineTokens(e,this._textModel);return t.length>0&&this._onDidChangeTokens.fire({semanticTokensApplied:!1,ranges:t}),{changes:t}}refreshAllVisibleLineTokens(){const e=xt.joinMany([...this._attachedViewStates].map(([t,i])=>i.lineRanges));this.refreshRanges(e)}refreshRanges(e){for(const t of e)this.refreshRange(t.startLineNumber,t.endLineNumberExclusive-1)}refreshRange(e,t){var i,s;if(!this._tokenizer)return;e=Math.max(1,Math.min(this._textModel.getLineCount(),e)),t=Math.min(this._textModel.getLineCount(),t);const r=new R9,{heuristicTokens:o}=this._tokenizer.tokenizeHeuristically(r,e,t),a=this.setTokens(r.finalize());if(o)for(const l of a.changes)(i=this._backgroundTokenizer.value)===null||i===void 0||i.requestTokens(l.fromLineNumber,l.toLineNumber+1);(s=this._defaultBackgroundTokenizer)===null||s===void 0||s.checkFinished()}forceTokenization(e){var t,i;const s=new R9;(t=this._tokenizer)===null||t===void 0||t.updateTokensUntilLine(s,e),this.setTokens(s.finalize()),(i=this._defaultBackgroundTokenizer)===null||i===void 0||i.checkFinished()}isCheapToTokenize(e){return this._tokenizer?this._tokenizer.isCheapToTokenize(e):!0}tokenizeIfCheap(e){this.isCheapToTokenize(e)&&this.forceTokenization(e)}getLineTokens(e){var t;const i=this._textModel.getLineContent(e),s=this._tokens.getTokens(this._textModel.getLanguageId(),e-1,i);if(this._debugBackgroundTokens&&this._debugBackgroundStates&&this._tokenizer&&this._debugBackgroundStates.getFirstInvalidEndStateLineNumberOrMax()>e&&this._tokenizer.store.getFirstInvalidEndStateLineNumberOrMax()>e){const r=this._debugBackgroundTokens.getTokens(this._textModel.getLanguageId(),e-1,i);!s.equals(r)&&(!((t=this._debugBackgroundTokenizer.value)===null||t===void 0)&&t.reportMismatchingTokens)&&this._debugBackgroundTokenizer.value.reportMismatchingTokens(e)}return s}getTokenTypeIfInsertingCharacter(e,t,i){if(!this._tokenizer)return 0;const s=this._textModel.validatePosition(new he(e,t));return this.forceTokenization(s.lineNumber),this._tokenizer.getTokenTypeIfInsertingCharacter(s,i)}tokenizeLineWithEdit(e,t,i){if(!this._tokenizer)return null;const s=this._textModel.validatePosition(e);return this.forceTokenization(s.lineNumber),this._tokenizer.tokenizeLineWithEdit(s,t,i)}get hasTokens(){return this._tokens.hasTokens}}class aqe extends pe{get lineRanges(){return this._lineRanges}constructor(e){super(),this._refreshTokens=e,this.runner=this._register(new Ei(()=>this.update(),50)),this._computedLineRanges=[],this._lineRanges=[]}update(){On(this._computedLineRanges,this._lineRanges,(e,t)=>e.equals(t))||(this._computedLineRanges=this._lineRanges,this._refreshTokens())}handleStateChange(e){this._lineRanges=e.visibleLineRanges,e.stabilized?(this.runner.cancel(),this.update()):this.runner.schedule()}}class lqe{constructor(){this.changeType=1}}class Nu{static applyInjectedText(e,t){if(!t||t.length===0)return e;let i="",s=0;for(const r of t)i+=e.substring(s,r.column-1),s=r.column-1,i+=r.options.content;return i+=e.substring(s),i}static fromDecorations(e){const t=[];for(const i of e)i.options.before&&i.options.before.content.length>0&&t.push(new Nu(i.ownerId,i.range.startLineNumber,i.range.startColumn,i.options.before,0)),i.options.after&&i.options.after.content.length>0&&t.push(new Nu(i.ownerId,i.range.endLineNumber,i.range.endColumn,i.options.after,1));return t.sort((i,s)=>i.lineNumber===s.lineNumber?i.column===s.column?i.order-s.order:i.column-s.column:i.lineNumber-s.lineNumber),t}constructor(e,t,i,s,r){this.ownerId=e,this.lineNumber=t,this.column=i,this.options=s,this.order=r}}class Yee{constructor(e,t,i){this.changeType=2,this.lineNumber=e,this.detail=t,this.injectedText=i}}class cqe{constructor(e,t){this.changeType=3,this.fromLineNumber=e,this.toLineNumber=t}}class uqe{constructor(e,t,i,s){this.changeType=4,this.injectedTexts=s,this.fromLineNumber=e,this.toLineNumber=t,this.detail=i}}class hqe{constructor(){this.changeType=5}}class Db{constructor(e,t,i,s){this.changes=e,this.versionId=t,this.isUndoing=i,this.isRedoing=s,this.resultingSelection=null}containsEvent(e){for(let t=0,i=this.changes.length;t<i;t++)if(this.changes[t].changeType===e)return!0;return!1}static merge(e,t){const i=[].concat(e.changes).concat(t.changes),s=t.versionId,r=e.isUndoing||t.isUndoing,o=e.isRedoing||t.isRedoing;return new Db(i,s,r,o)}}class bme{constructor(e){this.changes=e}}class u_{constructor(e,t){this.rawContentChangedEvent=e,this.contentChangedEvent=t}merge(e){const t=Db.merge(this.rawContentChangedEvent,e.rawContentChangedEvent),i=u_._mergeChangeEvents(this.contentChangedEvent,e.contentChangedEvent);return new u_(t,i)}static _mergeChangeEvents(e,t){const i=[].concat(e.changes).concat(t.changes),s=t.eol,r=t.versionId,o=e.isUndoing||t.isUndoing,a=e.isRedoing||t.isRedoing,l=e.isFlush||t.isFlush,c=e.isEolChange&&t.isEolChange;return{changes:i,eol:s,isEolChange:c,versionId:r,isUndoing:o,isRedoing:a,isFlush:l}}}const YO=Bt("undoRedoService");class yme{constructor(e,t){this.resource=e,this.elements=t}}class xy{constructor(){this.id=xy._ID++,this.order=1}nextOrder(){return this.id===0?0:this.order++}}xy._ID=0;xy.None=new xy;class bh{constructor(){this.id=bh._ID++,this.order=1}nextOrder(){return this.id===0?0:this.order++}}bh._ID=0;bh.None=new bh;var dqe=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},X5=function(n,e){return function(t,i){e(t,i,n)}},l1;function fqe(n){const e=new vme;return e.acceptChunk(n),e.finish()}function gqe(n){const e=new vme;let t;for(;typeof(t=n.read())=="string";)e.acceptChunk(t);return e.finish()}function Zee(n,e){let t;return typeof n=="string"?t=fqe(n):yUe(n)?t=gqe(n):t=n,t.create(e)}let gI=0;const pqe=999,mqe=1e4;class _qe{constructor(e){this._source=e,this._eos=!1}read(){if(this._eos)return null;const e=[];let t=0,i=0;do{const s=this._source.read();if(s===null)return this._eos=!0,t===0?null:e.join("");if(s.length>0&&(e[t++]=s,i+=s.length),i>=64*1024)return e.join("")}while(!0)}}const Nw=()=>{throw new Error("Invalid change accessor")};let _d=l1=class extends pe{static resolveOptions(e,t){if(t.detectIndentation){const i=Wee(e,t.tabSize,t.insertSpaces);return new oN({tabSize:i.tabSize,indentSize:"tabSize",insertSpaces:i.insertSpaces,trimAutoWhitespace:t.trimAutoWhitespace,defaultEOL:t.defaultEOL,bracketPairColorizationOptions:t.bracketPairColorizationOptions})}return new oN(t)}get onDidChangeLanguage(){return this._tokenizationTextModelPart.onDidChangeLanguage}get onDidChangeLanguageConfiguration(){return this._tokenizationTextModelPart.onDidChangeLanguageConfiguration}get onDidChangeTokens(){return this._tokenizationTextModelPart.onDidChangeTokens}onDidChangeContent(e){return this._eventEmitter.slowEvent(t=>e(t.contentChangedEvent))}onDidChangeContentOrInjectedText(e){return _c(this._eventEmitter.fastEvent(t=>e(t)),this._onDidChangeInjectedText.event(t=>e(t)))}_isDisposing(){return this.__isDisposing}get tokenization(){return this._tokenizationTextModelPart}get bracketPairs(){return this._bracketPairs}get guides(){return this._guidesTextModelPart}constructor(e,t,i,s=null,r,o,a){super(),this._undoRedoService=r,this._languageService=o,this._languageConfigurationService=a,this._onWillDispose=this._register(new ue),this.onWillDispose=this._onWillDispose.event,this._onDidChangeDecorations=this._register(new wqe(f=>this.handleBeforeFireDecorationsChangedEvent(f))),this.onDidChangeDecorations=this._onDidChangeDecorations.event,this._onDidChangeOptions=this._register(new ue),this.onDidChangeOptions=this._onDidChangeOptions.event,this._onDidChangeAttached=this._register(new ue),this.onDidChangeAttached=this._onDidChangeAttached.event,this._onDidChangeInjectedText=this._register(new ue),this._eventEmitter=this._register(new Sqe),this._languageSelectionListener=this._register(new qs),this._deltaDecorationCallCnt=0,this._attachedViews=new kqe,gI++,this.id="$model"+gI,this.isForSimpleWidget=i.isForSimpleWidget,typeof s>"u"||s===null?this._associatedResource=it.parse("inmemory://model/"+gI):this._associatedResource=s,this._attachedEditorCount=0;const{textBuffer:l,disposable:c}=Zee(e,i.defaultEOL);this._buffer=l,this._bufferDisposable=c,this._options=l1.resolveOptions(this._buffer,i);const u=typeof t=="string"?t:t.languageId;typeof t!="string"&&(this._languageSelectionListener.value=t.onDidChange(()=>this._setLanguage(t.languageId))),this._bracketPairs=this._register(new gje(this,this._languageConfigurationService)),this._guidesTextModelPart=this._register(new nUe(this,this._languageConfigurationService)),this._decorationProvider=this._register(new mje(this)),this._tokenizationTextModelPart=new lP(this._languageService,this._languageConfigurationService,this,this._bracketPairs,u,this._attachedViews);const h=this._buffer.getLineCount(),d=this._buffer.getValueLengthInRange(new M(1,1,h,this._buffer.getLineLength(h)+1),0);i.largeFileOptimizations?(this._isTooLargeForTokenization=d>l1.LARGE_FILE_SIZE_THRESHOLD||h>l1.LARGE_FILE_LINE_COUNT_THRESHOLD,this._isTooLargeForHeapOperation=d>l1.LARGE_FILE_HEAP_OPERATION_THRESHOLD):(this._isTooLargeForTokenization=!1,this._isTooLargeForHeapOperation=!1),this._isTooLargeForSyncing=d>l1._MODEL_SYNC_LIMIT,this._versionId=1,this._alternativeVersionId=1,this._initialUndoRedoSnapshot=null,this._isDisposed=!1,this.__isDisposing=!1,this._instanceId=age(gI),this._lastDecorationId=0,this._decorations=Object.create(null),this._decorationsTree=new Xee,this._commandManager=new Tq(this,this._undoRedoService),this._isUndoing=!1,this._isRedoing=!1,this._trimAutoWhitespaceLines=null,this._register(this._decorationProvider.onDidChange(()=>{this._onDidChangeDecorations.beginDeferredEmit(),this._onDidChangeDecorations.fire(),this._onDidChangeDecorations.endDeferredEmit()})),this._languageService.requestRichLanguageFeatures(u)}dispose(){this.__isDisposing=!0,this._onWillDispose.fire(),this._tokenizationTextModelPart.dispose(),this._isDisposed=!0,super.dispose(),this._bufferDisposable.dispose(),this.__isDisposing=!1;const e=new Eb([],"",` +`,!1,!1,!0,!0);e.dispose(),this._buffer=e,this._bufferDisposable=pe.None}_assertNotDisposed(){if(this._isDisposed)throw new Error("Model is disposed!")}_emitContentChangedEvent(e,t){this.__isDisposing||(this._tokenizationTextModelPart.handleDidChangeContent(t),this._bracketPairs.handleDidChangeContent(t),this._eventEmitter.fire(new u_(e,t)))}setValue(e){if(this._assertNotDisposed(),e==null)throw Tl();const{textBuffer:t,disposable:i}=Zee(e,this._options.defaultEOL);this._setValueFromTextBuffer(t,i)}_createContentChanged2(e,t,i,s,r,o,a,l){return{changes:[{range:e,rangeOffset:t,rangeLength:i,text:s}],eol:this._buffer.getEOL(),isEolChange:l,versionId:this.getVersionId(),isUndoing:r,isRedoing:o,isFlush:a}}_setValueFromTextBuffer(e,t){this._assertNotDisposed();const i=this.getFullModelRange(),s=this.getValueLengthInRange(i),r=this.getLineCount(),o=this.getLineMaxColumn(r);this._buffer=e,this._bufferDisposable.dispose(),this._bufferDisposable=t,this._increaseVersionId(),this._decorations=Object.create(null),this._decorationsTree=new Xee,this._commandManager.clear(),this._trimAutoWhitespaceLines=null,this._emitContentChangedEvent(new Db([new lqe],this._versionId,!1,!1),this._createContentChanged2(new M(1,1,r,o),0,s,this.getValue(),!1,!1,!0,!1))}setEOL(e){this._assertNotDisposed();const t=e===1?`\r +`:` +`;if(this._buffer.getEOL()===t)return;const i=this.getFullModelRange(),s=this.getValueLengthInRange(i),r=this.getLineCount(),o=this.getLineMaxColumn(r);this._onBeforeEOLChange(),this._buffer.setEOL(t),this._increaseVersionId(),this._onAfterEOLChange(),this._emitContentChangedEvent(new Db([new hqe],this._versionId,!1,!1),this._createContentChanged2(new M(1,1,r,o),0,s,this.getValue(),!1,!1,!1,!0))}_onBeforeEOLChange(){this._decorationsTree.ensureAllNodesHaveRanges(this)}_onAfterEOLChange(){const e=this.getVersionId(),t=this._decorationsTree.collectNodesPostOrder();for(let i=0,s=t.length;i<s;i++){const r=t[i],o=r.range,a=r.cachedAbsoluteStart-r.start,l=this._buffer.getOffsetAt(o.startLineNumber,o.startColumn),c=this._buffer.getOffsetAt(o.endLineNumber,o.endColumn);r.cachedAbsoluteStart=l,r.cachedAbsoluteEnd=c,r.cachedVersionId=e,r.start=l-a,r.end=c-a,sm(r)}}onBeforeAttached(){return this._attachedEditorCount++,this._attachedEditorCount===1&&(this._tokenizationTextModelPart.handleDidChangeAttached(),this._onDidChangeAttached.fire(void 0)),this._attachedViews.attachView()}onBeforeDetached(e){this._attachedEditorCount--,this._attachedEditorCount===0&&(this._tokenizationTextModelPart.handleDidChangeAttached(),this._onDidChangeAttached.fire(void 0)),this._attachedViews.detachView(e)}isAttachedToEditor(){return this._attachedEditorCount>0}getAttachedEditorCount(){return this._attachedEditorCount}isTooLargeForSyncing(){return this._isTooLargeForSyncing}isTooLargeForTokenization(){return this._isTooLargeForTokenization}isTooLargeForHeapOperation(){return this._isTooLargeForHeapOperation}isDisposed(){return this._isDisposed}isDominatedByLongLines(){if(this._assertNotDisposed(),this.isTooLargeForTokenization())return!1;let e=0,t=0;const i=this._buffer.getLineCount();for(let s=1;s<=i;s++){const r=this._buffer.getLineLength(s);r>=mqe?t+=r:e+=r}return t>e}get uri(){return this._associatedResource}getOptions(){return this._assertNotDisposed(),this._options}getFormattingOptions(){return{tabSize:this._options.indentSize,insertSpaces:this._options.insertSpaces}}updateOptions(e){this._assertNotDisposed();const t=typeof e.tabSize<"u"?e.tabSize:this._options.tabSize,i=typeof e.indentSize<"u"?e.indentSize:this._options.originalIndentSize,s=typeof e.insertSpaces<"u"?e.insertSpaces:this._options.insertSpaces,r=typeof e.trimAutoWhitespace<"u"?e.trimAutoWhitespace:this._options.trimAutoWhitespace,o=typeof e.bracketColorizationOptions<"u"?e.bracketColorizationOptions:this._options.bracketPairColorizationOptions,a=new oN({tabSize:t,indentSize:i,insertSpaces:s,defaultEOL:this._options.defaultEOL,trimAutoWhitespace:r,bracketPairColorizationOptions:o});if(this._options.equals(a))return;const l=this._options.createChangeEvent(a);this._options=a,this._bracketPairs.handleDidChangeOptions(l),this._decorationProvider.handleDidChangeOptions(l),this._onDidChangeOptions.fire(l)}detectIndentation(e,t){this._assertNotDisposed();const i=Wee(this._buffer,t,e);this.updateOptions({insertSpaces:i.insertSpaces,tabSize:i.tabSize,indentSize:i.tabSize})}normalizeIndentation(e){return this._assertNotDisposed(),$A(e,this._options.indentSize,this._options.insertSpaces)}getVersionId(){return this._assertNotDisposed(),this._versionId}mightContainRTL(){return this._buffer.mightContainRTL()}mightContainUnusualLineTerminators(){return this._buffer.mightContainUnusualLineTerminators()}removeUnusualLineTerminators(e=null){const t=this.findMatches(rge.source,!1,!0,!1,null,!1,1073741824);this._buffer.resetMightContainUnusualLineTerminators(),this.pushEditOperations(e,t.map(i=>({range:i.range,text:null})),()=>null)}mightContainNonBasicASCII(){return this._buffer.mightContainNonBasicASCII()}getAlternativeVersionId(){return this._assertNotDisposed(),this._alternativeVersionId}getInitialUndoRedoSnapshot(){return this._assertNotDisposed(),this._initialUndoRedoSnapshot}getOffsetAt(e){this._assertNotDisposed();const t=this._validatePosition(e.lineNumber,e.column,0);return this._buffer.getOffsetAt(t.lineNumber,t.column)}getPositionAt(e){this._assertNotDisposed();const t=Math.min(this._buffer.getLength(),Math.max(0,e));return this._buffer.getPositionAt(t)}_increaseVersionId(){this._versionId=this._versionId+1,this._alternativeVersionId=this._versionId}_overwriteVersionId(e){this._versionId=e}_overwriteAlternativeVersionId(e){this._alternativeVersionId=e}_overwriteInitialUndoRedoSnapshot(e){this._initialUndoRedoSnapshot=e}getValue(e,t=!1){if(this._assertNotDisposed(),this.isTooLargeForHeapOperation())throw new an("Operation would exceed heap memory limits");const i=this.getFullModelRange(),s=this.getValueInRange(i,e);return t?this._buffer.getBOM()+s:s}createSnapshot(e=!1){return new _qe(this._buffer.createSnapshot(e))}getValueLength(e,t=!1){this._assertNotDisposed();const i=this.getFullModelRange(),s=this.getValueLengthInRange(i,e);return t?this._buffer.getBOM().length+s:s}getValueInRange(e,t=0){return this._assertNotDisposed(),this._buffer.getValueInRange(this.validateRange(e),t)}getValueLengthInRange(e,t=0){return this._assertNotDisposed(),this._buffer.getValueLengthInRange(this.validateRange(e),t)}getCharacterCountInRange(e,t=0){return this._assertNotDisposed(),this._buffer.getCharacterCountInRange(this.validateRange(e),t)}getLineCount(){return this._assertNotDisposed(),this._buffer.getLineCount()}getLineContent(e){if(this._assertNotDisposed(),e<1||e>this.getLineCount())throw new an("Illegal value for lineNumber");return this._buffer.getLineContent(e)}getLineLength(e){if(this._assertNotDisposed(),e<1||e>this.getLineCount())throw new an("Illegal value for lineNumber");return this._buffer.getLineLength(e)}getLinesContent(){if(this._assertNotDisposed(),this.isTooLargeForHeapOperation())throw new an("Operation would exceed heap memory limits");return this._buffer.getLinesContent()}getEOL(){return this._assertNotDisposed(),this._buffer.getEOL()}getEndOfLineSequence(){return this._assertNotDisposed(),this._buffer.getEOL()===` +`?0:1}getLineMinColumn(e){return this._assertNotDisposed(),1}getLineMaxColumn(e){if(this._assertNotDisposed(),e<1||e>this.getLineCount())throw new an("Illegal value for lineNumber");return this._buffer.getLineLength(e)+1}getLineFirstNonWhitespaceColumn(e){if(this._assertNotDisposed(),e<1||e>this.getLineCount())throw new an("Illegal value for lineNumber");return this._buffer.getLineFirstNonWhitespaceColumn(e)}getLineLastNonWhitespaceColumn(e){if(this._assertNotDisposed(),e<1||e>this.getLineCount())throw new an("Illegal value for lineNumber");return this._buffer.getLineLastNonWhitespaceColumn(e)}_validateRangeRelaxedNoAllocations(e){const t=this._buffer.getLineCount(),i=e.startLineNumber,s=e.startColumn;let r=Math.floor(typeof i=="number"&&!isNaN(i)?i:1),o=Math.floor(typeof s=="number"&&!isNaN(s)?s:1);if(r<1)r=1,o=1;else if(r>t)r=t,o=this.getLineMaxColumn(r);else if(o<=1)o=1;else{const h=this.getLineMaxColumn(r);o>=h&&(o=h)}const a=e.endLineNumber,l=e.endColumn;let c=Math.floor(typeof a=="number"&&!isNaN(a)?a:1),u=Math.floor(typeof l=="number"&&!isNaN(l)?l:1);if(c<1)c=1,u=1;else if(c>t)c=t,u=this.getLineMaxColumn(c);else if(u<=1)u=1;else{const h=this.getLineMaxColumn(c);u>=h&&(u=h)}return i===r&&s===o&&a===c&&l===u&&e instanceof M&&!(e instanceof Ze)?e:new M(r,o,c,u)}_isValidPosition(e,t,i){if(typeof e!="number"||typeof t!="number"||isNaN(e)||isNaN(t)||e<1||t<1||(e|0)!==e||(t|0)!==t)return!1;const s=this._buffer.getLineCount();if(e>s)return!1;if(t===1)return!0;const r=this.getLineMaxColumn(e);if(t>r)return!1;if(i===1){const o=this._buffer.getLineCharCode(e,t-2);if(As(o))return!1}return!0}_validatePosition(e,t,i){const s=Math.floor(typeof e=="number"&&!isNaN(e)?e:1),r=Math.floor(typeof t=="number"&&!isNaN(t)?t:1),o=this._buffer.getLineCount();if(s<1)return new he(1,1);if(s>o)return new he(o,this.getLineMaxColumn(o));if(r<=1)return new he(s,1);const a=this.getLineMaxColumn(s);if(r>=a)return new he(s,a);if(i===1){const l=this._buffer.getLineCharCode(s,r-2);if(As(l))return new he(s,r-1)}return new he(s,r)}validatePosition(e){return this._assertNotDisposed(),e instanceof he&&this._isValidPosition(e.lineNumber,e.column,1)?e:this._validatePosition(e.lineNumber,e.column,1)}_isValidRange(e,t){const i=e.startLineNumber,s=e.startColumn,r=e.endLineNumber,o=e.endColumn;if(!this._isValidPosition(i,s,0)||!this._isValidPosition(r,o,0))return!1;if(t===1){const a=s>1?this._buffer.getLineCharCode(i,s-2):0,l=o>1&&o<=this._buffer.getLineLength(r)?this._buffer.getLineCharCode(r,o-2):0,c=As(a),u=As(l);return!c&&!u}return!0}validateRange(e){if(this._assertNotDisposed(),e instanceof M&&!(e instanceof Ze)&&this._isValidRange(e,1))return e;const i=this._validatePosition(e.startLineNumber,e.startColumn,0),s=this._validatePosition(e.endLineNumber,e.endColumn,0),r=i.lineNumber,o=i.column,a=s.lineNumber,l=s.column;{const c=o>1?this._buffer.getLineCharCode(r,o-2):0,u=l>1&&l<=this._buffer.getLineLength(a)?this._buffer.getLineCharCode(a,l-2):0,h=As(c),d=As(u);return!h&&!d?new M(r,o,a,l):r===a&&o===l?new M(r,o-1,a,l-1):h&&d?new M(r,o-1,a,l+1):h?new M(r,o-1,a,l):new M(r,o,a,l+1)}}modifyPosition(e,t){this._assertNotDisposed();const i=this.getOffsetAt(e)+t;return this.getPositionAt(Math.min(this._buffer.getLength(),Math.max(0,i)))}getFullModelRange(){this._assertNotDisposed();const e=this.getLineCount();return new M(1,1,e,this.getLineMaxColumn(e))}findMatchesLineByLine(e,t,i,s){return this._buffer.findMatchesLineByLine(e,t,i,s)}findMatches(e,t,i,s,r,o,a=pqe){this._assertNotDisposed();let l=null;t!==null&&(Array.isArray(t)||(t=[t]),t.every(h=>M.isIRange(h))&&(l=t.map(h=>this.validateRange(h)))),l===null&&(l=[this.getFullModelRange()]),l=l.sort((h,d)=>h.startLineNumber-d.startLineNumber||h.startColumn-d.startColumn);const c=[];c.push(l.reduce((h,d)=>M.areIntersecting(h,d)?h.plusRange(d):(c.push(h),d)));let u;if(!i&&e.indexOf(` +`)<0){const d=new a1(e,i,s,r).parseSearchRequest();if(!d)return[];u=f=>this.findMatchesLineByLine(f,d,o,a)}else u=h=>fI.findMatches(this,new a1(e,i,s,r),h,o,a);return c.map(u).reduce((h,d)=>h.concat(d),[])}findNextMatch(e,t,i,s,r,o){this._assertNotDisposed();const a=this.validatePosition(t);if(!i&&e.indexOf(` +`)<0){const c=new a1(e,i,s,r).parseSearchRequest();if(!c)return null;const u=this.getLineCount();let h=new M(a.lineNumber,a.column,u,this.getLineMaxColumn(u)),d=this.findMatchesLineByLine(h,c,o,1);return fI.findNextMatch(this,new a1(e,i,s,r),a,o),d.length>0||(h=new M(1,1,a.lineNumber,this.getLineMaxColumn(a.lineNumber)),d=this.findMatchesLineByLine(h,c,o,1),d.length>0)?d[0]:null}return fI.findNextMatch(this,new a1(e,i,s,r),a,o)}findPreviousMatch(e,t,i,s,r,o){this._assertNotDisposed();const a=this.validatePosition(t);return fI.findPreviousMatch(this,new a1(e,i,s,r),a,o)}pushStackElement(){this._commandManager.pushStackElement()}popStackElement(){this._commandManager.popStackElement()}pushEOL(e){if((this.getEOL()===` +`?0:1)!==e)try{this._onDidChangeDecorations.beginDeferredEmit(),this._eventEmitter.beginDeferredEmit(),this._initialUndoRedoSnapshot===null&&(this._initialUndoRedoSnapshot=this._undoRedoService.createSnapshot(this.uri)),this._commandManager.pushEOL(e)}finally{this._eventEmitter.endDeferredEmit(),this._onDidChangeDecorations.endDeferredEmit()}}_validateEditOperation(e){return e instanceof z5?e:new z5(e.identifier||null,this.validateRange(e.range),e.text,e.forceMoveMarkers||!1,e.isAutoWhitespaceEdit||!1,e._isTracked||!1)}_validateEditOperations(e){const t=[];for(let i=0,s=e.length;i<s;i++)t[i]=this._validateEditOperation(e[i]);return t}pushEditOperations(e,t,i,s){try{return this._onDidChangeDecorations.beginDeferredEmit(),this._eventEmitter.beginDeferredEmit(),this._pushEditOperations(e,this._validateEditOperations(t),i,s)}finally{this._eventEmitter.endDeferredEmit(),this._onDidChangeDecorations.endDeferredEmit()}}_pushEditOperations(e,t,i,s){if(this._options.trimAutoWhitespace&&this._trimAutoWhitespaceLines){const r=t.map(a=>({range:this.validateRange(a.range),text:a.text}));let o=!0;if(e)for(let a=0,l=e.length;a<l;a++){const c=e[a];let u=!1;for(let h=0,d=r.length;h<d;h++){const f=r[h].range,g=f.startLineNumber>c.endLineNumber,p=c.startLineNumber>f.endLineNumber;if(!g&&!p){u=!0;break}}if(!u){o=!1;break}}if(o)for(let a=0,l=this._trimAutoWhitespaceLines.length;a<l;a++){const c=this._trimAutoWhitespaceLines[a],u=this.getLineMaxColumn(c);let h=!0;for(let d=0,f=r.length;d<f;d++){const g=r[d].range,p=r[d].text;if(!(c<g.startLineNumber||c>g.endLineNumber)&&!(c===g.startLineNumber&&g.startColumn===u&&g.isEmpty()&&p&&p.length>0&&p.charAt(0)===` +`)&&!(c===g.startLineNumber&&g.startColumn===1&&g.isEmpty()&&p&&p.length>0&&p.charAt(p.length-1)===` +`)){h=!1;break}}if(h){const d=new M(c,1,c,u);t.push(new z5(null,d,null,!1,!1,!1))}}this._trimAutoWhitespaceLines=null}return this._initialUndoRedoSnapshot===null&&(this._initialUndoRedoSnapshot=this._undoRedoService.createSnapshot(this.uri)),this._commandManager.pushEditOperation(e,t,i,s)}_applyUndo(e,t,i,s){const r=e.map(o=>{const a=this.getPositionAt(o.newPosition),l=this.getPositionAt(o.newEnd);return{range:new M(a.lineNumber,a.column,l.lineNumber,l.column),text:o.oldText}});this._applyUndoRedoEdits(r,t,!0,!1,i,s)}_applyRedo(e,t,i,s){const r=e.map(o=>{const a=this.getPositionAt(o.oldPosition),l=this.getPositionAt(o.oldEnd);return{range:new M(a.lineNumber,a.column,l.lineNumber,l.column),text:o.newText}});this._applyUndoRedoEdits(r,t,!1,!0,i,s)}_applyUndoRedoEdits(e,t,i,s,r,o){try{this._onDidChangeDecorations.beginDeferredEmit(),this._eventEmitter.beginDeferredEmit(),this._isUndoing=i,this._isRedoing=s,this.applyEdits(e,!1),this.setEOL(t),this._overwriteAlternativeVersionId(r)}finally{this._isUndoing=!1,this._isRedoing=!1,this._eventEmitter.endDeferredEmit(o),this._onDidChangeDecorations.endDeferredEmit()}}applyEdits(e,t=!1){try{this._onDidChangeDecorations.beginDeferredEmit(),this._eventEmitter.beginDeferredEmit();const i=this._validateEditOperations(e);return this._doApplyEdits(i,t)}finally{this._eventEmitter.endDeferredEmit(),this._onDidChangeDecorations.endDeferredEmit()}}_doApplyEdits(e,t){const i=this._buffer.getLineCount(),s=this._buffer.applyEdits(e,this._options.trimAutoWhitespace,t),r=this._buffer.getLineCount(),o=s.changes;if(this._trimAutoWhitespaceLines=s.trimAutoWhitespaceLineNumbers,o.length!==0){for(let c=0,u=o.length;c<u;c++){const h=o[c];this._decorationsTree.acceptReplace(h.rangeOffset,h.rangeLength,h.text.length,h.forceMoveMarkers)}const a=[];this._increaseVersionId();let l=i;for(let c=0,u=o.length;c<u;c++){const h=o[c],[d]=im(h.text);this._onDidChangeDecorations.fire();const f=h.range.startLineNumber,g=h.range.endLineNumber,p=g-f,m=d,_=Math.min(p,m),b=m-p,y=r-l-b+f,w=y,S=y+m,E=this._decorationsTree.getInjectedTextInInterval(this,this.getOffsetAt(new he(w,1)),this.getOffsetAt(new he(S,this.getLineMaxColumn(S))),0),L=Nu.fromDecorations(E),k=new Zf(L);for(let x=_;x>=0;x--){const I=f+x,N=y+x;k.takeFromEndWhile(P=>P.lineNumber>N);const T=k.takeFromEndWhile(P=>P.lineNumber===N);a.push(new Yee(I,this.getLineContent(N),T))}if(_<p){const x=f+_;a.push(new cqe(x+1,g))}if(_<m){const x=new Zf(L),I=f+_,N=m-_,T=r-l-N+I+1,P=[],R=[];for(let F=0;F<N;F++){const j=T+F;R[F]=this.getLineContent(j),x.takeWhile(K=>K.lineNumber<j),P[F]=x.takeWhile(K=>K.lineNumber===j)}a.push(new uqe(I+1,f+m,R,P))}l+=b}this._emitContentChangedEvent(new Db(a,this.getVersionId(),this._isUndoing,this._isRedoing),{changes:o,eol:this._buffer.getEOL(),isEolChange:!1,versionId:this.getVersionId(),isUndoing:this._isUndoing,isRedoing:this._isRedoing,isFlush:!1})}return s.reverseEdits===null?void 0:s.reverseEdits}undo(){return this._undoRedoService.undo(this.uri)}canUndo(){return this._undoRedoService.canUndo(this.uri)}redo(){return this._undoRedoService.redo(this.uri)}canRedo(){return this._undoRedoService.canRedo(this.uri)}handleBeforeFireDecorationsChangedEvent(e){if(e===null||e.size===0)return;const i=Array.from(e).map(s=>new Yee(s,this.getLineContent(s),this._getInjectedTextInLine(s)));this._onDidChangeInjectedText.fire(new bme(i))}changeDecorations(e,t=0){this._assertNotDisposed();try{return this._onDidChangeDecorations.beginDeferredEmit(),this._changeDecorations(t,e)}finally{this._onDidChangeDecorations.endDeferredEmit()}}_changeDecorations(e,t){const i={addDecoration:(r,o)=>this._deltaDecorationsImpl(e,[],[{range:r,options:o}])[0],changeDecoration:(r,o)=>{this._changeDecorationImpl(r,o)},changeDecorationOptions:(r,o)=>{this._changeDecorationOptionsImpl(r,Jee(o))},removeDecoration:r=>{this._deltaDecorationsImpl(e,[r],[])},deltaDecorations:(r,o)=>r.length===0&&o.length===0?[]:this._deltaDecorationsImpl(e,r,o)};let s=null;try{s=t(i)}catch(r){vt(r)}return i.addDecoration=Nw,i.changeDecoration=Nw,i.changeDecorationOptions=Nw,i.removeDecoration=Nw,i.deltaDecorations=Nw,s}deltaDecorations(e,t,i=0){if(this._assertNotDisposed(),e||(e=[]),e.length===0&&t.length===0)return[];try{return this._deltaDecorationCallCnt++,this._deltaDecorationCallCnt>1&&(console.warn("Invoking deltaDecorations recursively could lead to leaking decorations."),vt(new Error("Invoking deltaDecorations recursively could lead to leaking decorations."))),this._onDidChangeDecorations.beginDeferredEmit(),this._deltaDecorationsImpl(i,e,t)}finally{this._onDidChangeDecorations.endDeferredEmit(),this._deltaDecorationCallCnt--}}_getTrackedRange(e){return this.getDecorationRange(e)}_setTrackedRange(e,t,i){const s=e?this._decorations[e]:null;if(!s)return t?this._deltaDecorationsImpl(0,[],[{range:t,options:Qee[i]}],!0)[0]:null;if(!t)return this._decorationsTree.delete(s),delete this._decorations[s.id],null;const r=this._validateRangeRelaxedNoAllocations(t),o=this._buffer.getOffsetAt(r.startLineNumber,r.startColumn),a=this._buffer.getOffsetAt(r.endLineNumber,r.endColumn);return this._decorationsTree.delete(s),s.reset(this.getVersionId(),o,a,r),s.setOptions(Qee[i]),this._decorationsTree.insert(s),s.id}removeAllDecorationsWithOwnerId(e){if(this._isDisposed)return;const t=this._decorationsTree.collectNodesFromOwner(e);for(let i=0,s=t.length;i<s;i++){const r=t[i];this._decorationsTree.delete(r),delete this._decorations[r.id]}}getDecorationOptions(e){const t=this._decorations[e];return t?t.options:null}getDecorationRange(e){const t=this._decorations[e];return t?this._decorationsTree.getNodeRange(this,t):null}getLineDecorations(e,t=0,i=!1){return e<1||e>this.getLineCount()?[]:this.getLinesDecorations(e,e,t,i)}getLinesDecorations(e,t,i=0,s=!1,r=!1){const o=this.getLineCount(),a=Math.min(o,Math.max(1,e)),l=Math.min(o,Math.max(1,t)),c=this.getLineMaxColumn(l),u=new M(a,1,l,c),h=this._getDecorationsInRange(u,i,s,r);return r9(h,this._decorationProvider.getDecorationsInRange(u,i,s)),h}getDecorationsInRange(e,t=0,i=!1,s=!1,r=!1){const o=this.validateRange(e),a=this._getDecorationsInRange(o,t,i,r);return r9(a,this._decorationProvider.getDecorationsInRange(o,t,i,s)),a}getOverviewRulerDecorations(e=0,t=!1){return this._decorationsTree.getAll(this,e,t,!0,!1)}getInjectedTextDecorations(e=0){return this._decorationsTree.getAllInjectedText(this,e)}_getInjectedTextInLine(e){const t=this._buffer.getOffsetAt(e,1),i=t+this._buffer.getLineLength(e),s=this._decorationsTree.getInjectedTextInInterval(this,t,i,0);return Nu.fromDecorations(s).filter(r=>r.lineNumber===e)}getAllDecorations(e=0,t=!1){let i=this._decorationsTree.getAll(this,e,t,!1,!1);return i=i.concat(this._decorationProvider.getAllDecorations(e,t)),i}getAllMarginDecorations(e=0){return this._decorationsTree.getAll(this,e,!1,!1,!0)}_getDecorationsInRange(e,t,i,s){const r=this._buffer.getOffsetAt(e.startLineNumber,e.startColumn),o=this._buffer.getOffsetAt(e.endLineNumber,e.endColumn);return this._decorationsTree.getAllInInterval(this,r,o,t,i,s)}getRangeAt(e,t){return this._buffer.getRangeAt(e,t-e)}_changeDecorationImpl(e,t){const i=this._decorations[e];if(!i)return;if(i.options.after){const a=this.getDecorationRange(e);this._onDidChangeDecorations.recordLineAffectedByInjectedText(a.endLineNumber)}if(i.options.before){const a=this.getDecorationRange(e);this._onDidChangeDecorations.recordLineAffectedByInjectedText(a.startLineNumber)}const s=this._validateRangeRelaxedNoAllocations(t),r=this._buffer.getOffsetAt(s.startLineNumber,s.startColumn),o=this._buffer.getOffsetAt(s.endLineNumber,s.endColumn);this._decorationsTree.delete(i),i.reset(this.getVersionId(),r,o,s),this._decorationsTree.insert(i),this._onDidChangeDecorations.checkAffectedAndFire(i.options),i.options.after&&this._onDidChangeDecorations.recordLineAffectedByInjectedText(s.endLineNumber),i.options.before&&this._onDidChangeDecorations.recordLineAffectedByInjectedText(s.startLineNumber)}_changeDecorationOptionsImpl(e,t){const i=this._decorations[e];if(!i)return;const s=!!(i.options.overviewRuler&&i.options.overviewRuler.color),r=!!(t.overviewRuler&&t.overviewRuler.color);if(this._onDidChangeDecorations.checkAffectedAndFire(i.options),this._onDidChangeDecorations.checkAffectedAndFire(t),i.options.after||t.after){const o=this._decorationsTree.getNodeRange(this,i);this._onDidChangeDecorations.recordLineAffectedByInjectedText(o.endLineNumber)}if(i.options.before||t.before){const o=this._decorationsTree.getNodeRange(this,i);this._onDidChangeDecorations.recordLineAffectedByInjectedText(o.startLineNumber)}s!==r?(this._decorationsTree.delete(i),i.setOptions(t),this._decorationsTree.insert(i)):i.setOptions(t)}_deltaDecorationsImpl(e,t,i,s=!1){const r=this.getVersionId(),o=t.length;let a=0;const l=i.length;let c=0;this._onDidChangeDecorations.beginDeferredEmit();try{const u=new Array(l);for(;a<o||c<l;){let h=null;if(a<o){do h=this._decorations[t[a++]];while(!h&&a<o);if(h){if(h.options.after){const d=this._decorationsTree.getNodeRange(this,h);this._onDidChangeDecorations.recordLineAffectedByInjectedText(d.endLineNumber)}if(h.options.before){const d=this._decorationsTree.getNodeRange(this,h);this._onDidChangeDecorations.recordLineAffectedByInjectedText(d.startLineNumber)}this._decorationsTree.delete(h),s||this._onDidChangeDecorations.checkAffectedAndFire(h.options)}}if(c<l){if(!h){const _=++this._lastDecorationId,b=`${this._instanceId};${_}`;h=new gme(b,0,0),this._decorations[b]=h}const d=i[c],f=this._validateRangeRelaxedNoAllocations(d.range),g=Jee(d.options),p=this._buffer.getOffsetAt(f.startLineNumber,f.startColumn),m=this._buffer.getOffsetAt(f.endLineNumber,f.endColumn);h.ownerId=e,h.reset(r,p,m,f),h.setOptions(g),h.options.after&&this._onDidChangeDecorations.recordLineAffectedByInjectedText(f.endLineNumber),h.options.before&&this._onDidChangeDecorations.recordLineAffectedByInjectedText(f.startLineNumber),s||this._onDidChangeDecorations.checkAffectedAndFire(g),this._decorationsTree.insert(h),u[c]=h.id,c++}else h&&delete this._decorations[h.id]}return u}finally{this._onDidChangeDecorations.endDeferredEmit()}}getLanguageId(){return this.tokenization.getLanguageId()}setLanguage(e,t){typeof e=="string"?(this._languageSelectionListener.clear(),this._setLanguage(e,t)):(this._languageSelectionListener.value=e.onDidChange(()=>this._setLanguage(e.languageId,t)),this._setLanguage(e.languageId,t))}_setLanguage(e,t){this.tokenization.setLanguageId(e,t),this._languageService.requestRichLanguageFeatures(e)}getLanguageIdAtPosition(e,t){return this.tokenization.getLanguageIdAtPosition(e,t)}getWordAtPosition(e){return this._tokenizationTextModelPart.getWordAtPosition(e)}getWordUntilPosition(e){return this._tokenizationTextModelPart.getWordUntilPosition(e)}normalizePosition(e,t){return e}getLineIndentColumn(e){return vqe(this.getLineContent(e))+1}};_d._MODEL_SYNC_LIMIT=50*1024*1024;_d.LARGE_FILE_SIZE_THRESHOLD=20*1024*1024;_d.LARGE_FILE_LINE_COUNT_THRESHOLD=300*1e3;_d.LARGE_FILE_HEAP_OPERATION_THRESHOLD=256*1024*1024;_d.DEFAULT_CREATION_OPTIONS={isForSimpleWidget:!1,tabSize:Lr.tabSize,indentSize:Lr.indentSize,insertSpaces:Lr.insertSpaces,detectIndentation:!1,defaultEOL:1,trimAutoWhitespace:Lr.trimAutoWhitespace,largeFileOptimizations:Lr.largeFileOptimizations,bracketPairColorizationOptions:Lr.bracketPairColorizationOptions};_d=l1=dqe([X5(4,YO),X5(5,sn),X5(6,Bi)],_d);function vqe(n){let e=0;for(const t of n)if(t===" "||t===" ")e++;else break;return e}function Q5(n){return!!(n.options.overviewRuler&&n.options.overviewRuler.color)}function J5(n){return!!n.options.after||!!n.options.before}class Xee{constructor(){this._decorationsTree0=new G5,this._decorationsTree1=new G5,this._injectedTextDecorationsTree=new G5}ensureAllNodesHaveRanges(e){this.getAll(e,0,!1,!1,!1)}_ensureNodesHaveRanges(e,t){for(const i of t)i.range===null&&(i.range=e.getRangeAt(i.cachedAbsoluteStart,i.cachedAbsoluteEnd));return t}getAllInInterval(e,t,i,s,r,o){const a=e.getVersionId(),l=this._intervalSearch(t,i,s,r,a,o);return this._ensureNodesHaveRanges(e,l)}_intervalSearch(e,t,i,s,r,o){const a=this._decorationsTree0.intervalSearch(e,t,i,s,r,o),l=this._decorationsTree1.intervalSearch(e,t,i,s,r,o),c=this._injectedTextDecorationsTree.intervalSearch(e,t,i,s,r,o);return a.concat(l).concat(c)}getInjectedTextInInterval(e,t,i,s){const r=e.getVersionId(),o=this._injectedTextDecorationsTree.intervalSearch(t,i,s,!1,r,!1);return this._ensureNodesHaveRanges(e,o).filter(a=>a.options.showIfCollapsed||!a.range.isEmpty())}getAllInjectedText(e,t){const i=e.getVersionId(),s=this._injectedTextDecorationsTree.search(t,!1,i,!1);return this._ensureNodesHaveRanges(e,s).filter(r=>r.options.showIfCollapsed||!r.range.isEmpty())}getAll(e,t,i,s,r){const o=e.getVersionId(),a=this._search(t,i,s,o,r);return this._ensureNodesHaveRanges(e,a)}_search(e,t,i,s,r){if(i)return this._decorationsTree1.search(e,t,s,r);{const o=this._decorationsTree0.search(e,t,s,r),a=this._decorationsTree1.search(e,t,s,r),l=this._injectedTextDecorationsTree.search(e,t,s,r);return o.concat(a).concat(l)}}collectNodesFromOwner(e){const t=this._decorationsTree0.collectNodesFromOwner(e),i=this._decorationsTree1.collectNodesFromOwner(e),s=this._injectedTextDecorationsTree.collectNodesFromOwner(e);return t.concat(i).concat(s)}collectNodesPostOrder(){const e=this._decorationsTree0.collectNodesPostOrder(),t=this._decorationsTree1.collectNodesPostOrder(),i=this._injectedTextDecorationsTree.collectNodesPostOrder();return e.concat(t).concat(i)}insert(e){J5(e)?this._injectedTextDecorationsTree.insert(e):Q5(e)?this._decorationsTree1.insert(e):this._decorationsTree0.insert(e)}delete(e){J5(e)?this._injectedTextDecorationsTree.delete(e):Q5(e)?this._decorationsTree1.delete(e):this._decorationsTree0.delete(e)}getNodeRange(e,t){const i=e.getVersionId();return t.cachedVersionId!==i&&this._resolveNode(t,i),t.range===null&&(t.range=e.getRangeAt(t.cachedAbsoluteStart,t.cachedAbsoluteEnd)),t.range}_resolveNode(e,t){J5(e)?this._injectedTextDecorationsTree.resolveNode(e,t):Q5(e)?this._decorationsTree1.resolveNode(e,t):this._decorationsTree0.resolveNode(e,t)}acceptReplace(e,t,i,s){this._decorationsTree0.acceptReplace(e,t,i,s),this._decorationsTree1.acceptReplace(e,t,i,s),this._injectedTextDecorationsTree.acceptReplace(e,t,i,s)}}function Fd(n){return n.replace(/[^a-z0-9\-_]/gi," ")}class Cme{constructor(e){this.color=e.color||"",this.darkColor=e.darkColor||""}}class bqe extends Cme{constructor(e){super(e),this._resolvedColor=null,this.position=typeof e.position=="number"?e.position:el.Center}getColor(e){return this._resolvedColor||(e.type!=="light"&&this.darkColor?this._resolvedColor=this._resolveColor(this.darkColor,e):this._resolvedColor=this._resolveColor(this.color,e)),this._resolvedColor}invalidateCachedColor(){this._resolvedColor=null}_resolveColor(e,t){if(typeof e=="string")return e;const i=e?t.getColor(e.id):null;return i?i.toString():""}}class yqe{constructor(e){var t;this.position=(t=e==null?void 0:e.position)!==null&&t!==void 0?t:l_.Left}}class Cqe extends Cme{constructor(e){super(e),this.position=e.position}getColor(e){return this._resolvedColor||(e.type!=="light"&&this.darkColor?this._resolvedColor=this._resolveColor(this.darkColor,e):this._resolvedColor=this._resolveColor(this.color,e)),this._resolvedColor}invalidateCachedColor(){this._resolvedColor=void 0}_resolveColor(e,t){return typeof e=="string"?me.fromHex(e):t.getColor(e.id)}}class rm{static from(e){return e instanceof rm?e:new rm(e)}constructor(e){this.content=e.content||"",this.inlineClassName=e.inlineClassName||null,this.inlineClassNameAffectsLetterSpacing=e.inlineClassNameAffectsLetterSpacing||!1,this.attachedData=e.attachedData||null,this.cursorStops=e.cursorStops||null}}class yt{static register(e){return new yt(e)}static createDynamic(e){return new yt(e)}constructor(e){var t,i,s,r,o,a;this.description=e.description,this.blockClassName=e.blockClassName?Fd(e.blockClassName):null,this.blockDoesNotCollapse=(t=e.blockDoesNotCollapse)!==null&&t!==void 0?t:null,this.blockIsAfterEnd=(i=e.blockIsAfterEnd)!==null&&i!==void 0?i:null,this.blockPadding=(s=e.blockPadding)!==null&&s!==void 0?s:null,this.stickiness=e.stickiness||0,this.zIndex=e.zIndex||0,this.className=e.className?Fd(e.className):null,this.shouldFillLineOnLineBreak=(r=e.shouldFillLineOnLineBreak)!==null&&r!==void 0?r:null,this.hoverMessage=e.hoverMessage||null,this.glyphMarginHoverMessage=e.glyphMarginHoverMessage||null,this.isWholeLine=e.isWholeLine||!1,this.showIfCollapsed=e.showIfCollapsed||!1,this.collapseOnReplaceEdit=e.collapseOnReplaceEdit||!1,this.overviewRuler=e.overviewRuler?new bqe(e.overviewRuler):null,this.minimap=e.minimap?new Cqe(e.minimap):null,this.glyphMargin=e.glyphMarginClassName?new yqe(e.glyphMargin):null,this.glyphMarginClassName=e.glyphMarginClassName?Fd(e.glyphMarginClassName):null,this.linesDecorationsClassName=e.linesDecorationsClassName?Fd(e.linesDecorationsClassName):null,this.firstLineDecorationClassName=e.firstLineDecorationClassName?Fd(e.firstLineDecorationClassName):null,this.marginClassName=e.marginClassName?Fd(e.marginClassName):null,this.inlineClassName=e.inlineClassName?Fd(e.inlineClassName):null,this.inlineClassNameAffectsLetterSpacing=e.inlineClassNameAffectsLetterSpacing||!1,this.beforeContentClassName=e.beforeContentClassName?Fd(e.beforeContentClassName):null,this.afterContentClassName=e.afterContentClassName?Fd(e.afterContentClassName):null,this.after=e.after?rm.from(e.after):null,this.before=e.before?rm.from(e.before):null,this.hideInCommentTokens=(o=e.hideInCommentTokens)!==null&&o!==void 0?o:!1,this.hideInStringTokens=(a=e.hideInStringTokens)!==null&&a!==void 0?a:!1}}yt.EMPTY=yt.register({description:"empty"});const Qee=[yt.register({description:"tracked-range-always-grows-when-typing-at-edges",stickiness:0}),yt.register({description:"tracked-range-never-grows-when-typing-at-edges",stickiness:1}),yt.register({description:"tracked-range-grows-only-when-typing-before",stickiness:2}),yt.register({description:"tracked-range-grows-only-when-typing-after",stickiness:3})];function Jee(n){return n instanceof yt?n:yt.createDynamic(n)}class wqe extends pe{constructor(e){super(),this.handleBeforeFire=e,this._actual=this._register(new ue),this.event=this._actual.event,this._affectedInjectedTextLines=null,this._deferredCnt=0,this._shouldFireDeferred=!1,this._affectsMinimap=!1,this._affectsOverviewRuler=!1,this._affectsGlyphMargin=!1}beginDeferredEmit(){this._deferredCnt++}endDeferredEmit(){var e;this._deferredCnt--,this._deferredCnt===0&&(this._shouldFireDeferred&&this.doFire(),(e=this._affectedInjectedTextLines)===null||e===void 0||e.clear(),this._affectedInjectedTextLines=null)}recordLineAffectedByInjectedText(e){this._affectedInjectedTextLines||(this._affectedInjectedTextLines=new Set),this._affectedInjectedTextLines.add(e)}checkAffectedAndFire(e){this._affectsMinimap||(this._affectsMinimap=!!(e.minimap&&e.minimap.position)),this._affectsOverviewRuler||(this._affectsOverviewRuler=!!(e.overviewRuler&&e.overviewRuler.color)),this._affectsGlyphMargin||(this._affectsGlyphMargin=!!e.glyphMarginClassName),this.tryFire()}fire(){this._affectsMinimap=!0,this._affectsOverviewRuler=!0,this._affectsGlyphMargin=!0,this.tryFire()}tryFire(){this._deferredCnt===0?this.doFire():this._shouldFireDeferred=!0}doFire(){this.handleBeforeFire(this._affectedInjectedTextLines);const e={affectsMinimap:this._affectsMinimap,affectsOverviewRuler:this._affectsOverviewRuler,affectsGlyphMargin:this._affectsGlyphMargin};this._shouldFireDeferred=!1,this._affectsMinimap=!1,this._affectsOverviewRuler=!1,this._affectsGlyphMargin=!1,this._actual.fire(e)}}class Sqe extends pe{constructor(){super(),this._fastEmitter=this._register(new ue),this.fastEvent=this._fastEmitter.event,this._slowEmitter=this._register(new ue),this.slowEvent=this._slowEmitter.event,this._deferredCnt=0,this._deferredEvent=null}beginDeferredEmit(){this._deferredCnt++}endDeferredEmit(e=null){if(this._deferredCnt--,this._deferredCnt===0&&this._deferredEvent!==null){this._deferredEvent.rawContentChangedEvent.resultingSelection=e;const t=this._deferredEvent;this._deferredEvent=null,this._fastEmitter.fire(t),this._slowEmitter.fire(t)}}fire(e){if(this._deferredCnt>0){this._deferredEvent?this._deferredEvent=this._deferredEvent.merge(e):this._deferredEvent=e;return}this._fastEmitter.fire(e),this._slowEmitter.fire(e)}}class kqe{constructor(){this._onDidChangeVisibleRanges=new ue,this.onDidChangeVisibleRanges=this._onDidChangeVisibleRanges.event,this._views=new Set}attachView(){const e=new Lqe(t=>{this._onDidChangeVisibleRanges.fire({view:e,state:t})});return this._views.add(e),e}detachView(e){this._views.delete(e),this._onDidChangeVisibleRanges.fire({view:e,state:void 0})}}class Lqe{constructor(e){this.handleStateChange=e}setVisibleLines(e,t){const i=e.map(s=>new xt(s.startLineNumber,s.endLineNumber+1));this.handleStateChange({visibleLineRanges:i,stabilized:t})}}class cP{constructor(e){this._selTrackedRange=null,this._trackSelection=!0,this._setState(e,new Qs(new M(1,1,1,1),0,0,new he(1,1),0),new Qs(new M(1,1,1,1),0,0,new he(1,1),0))}dispose(e){this._removeTrackedRange(e)}startTrackingSelection(e){this._trackSelection=!0,this._updateTrackedRange(e)}stopTrackingSelection(e){this._trackSelection=!1,this._removeTrackedRange(e)}_updateTrackedRange(e){this._trackSelection&&(this._selTrackedRange=e.model._setTrackedRange(this._selTrackedRange,this.modelState.selection,0))}_removeTrackedRange(e){this._selTrackedRange=e.model._setTrackedRange(this._selTrackedRange,null,0)}asCursorState(){return new Xt(this.modelState,this.viewState)}readSelectionFromMarkers(e){const t=e.model._getTrackedRange(this._selTrackedRange);return this.modelState.selection.isEmpty()&&!t.isEmpty()?Ze.fromRange(t.collapseToEnd(),this.modelState.selection.getDirection()):Ze.fromRange(t,this.modelState.selection.getDirection())}ensureValidState(e){this._setState(e,this.modelState,this.viewState)}setState(e,t,i){this._setState(e,t,i)}static _validatePositionWithCache(e,t,i,s){return t.equals(i)?s:e.normalizePosition(t,2)}static _validateViewState(e,t){const i=t.position,s=t.selectionStart.getStartPosition(),r=t.selectionStart.getEndPosition(),o=e.normalizePosition(i,2),a=this._validatePositionWithCache(e,s,i,o),l=this._validatePositionWithCache(e,r,s,a);return i.equals(o)&&s.equals(a)&&r.equals(l)?t:new Qs(M.fromPositions(a,l),t.selectionStartKind,t.selectionStartLeftoverVisibleColumns+s.column-a.column,o,t.leftoverVisibleColumns+i.column-o.column)}_setState(e,t,i){if(i&&(i=cP._validateViewState(e.viewModel,i)),t){const s=e.model.validateRange(t.selectionStart),r=t.selectionStart.equalsRange(s)?t.selectionStartLeftoverVisibleColumns:0,o=e.model.validatePosition(t.position),a=t.position.equals(o)?t.leftoverVisibleColumns:0;t=new Qs(s,t.selectionStartKind,r,o,a)}else{if(!i)return;const s=e.model.validateRange(e.coordinatesConverter.convertViewRangeToModelRange(i.selectionStart)),r=e.model.validatePosition(e.coordinatesConverter.convertViewPositionToModelPosition(i.position));t=new Qs(s,i.selectionStartKind,i.selectionStartLeftoverVisibleColumns,r,i.leftoverVisibleColumns)}if(i){const s=e.coordinatesConverter.validateViewRange(i.selectionStart,t.selectionStart),r=e.coordinatesConverter.validateViewPosition(i.position,t.position);i=new Qs(s,t.selectionStartKind,t.selectionStartLeftoverVisibleColumns,r,t.leftoverVisibleColumns)}else{const s=e.coordinatesConverter.convertModelPositionToViewPosition(new he(t.selectionStart.startLineNumber,t.selectionStart.startColumn)),r=e.coordinatesConverter.convertModelPositionToViewPosition(new he(t.selectionStart.endLineNumber,t.selectionStart.endColumn)),o=new M(s.lineNumber,s.column,r.lineNumber,r.column),a=e.coordinatesConverter.convertModelPositionToViewPosition(t.position);i=new Qs(o,t.selectionStartKind,t.selectionStartLeftoverVisibleColumns,a,t.leftoverVisibleColumns)}this.modelState=t,this.viewState=i,this._updateTrackedRange(e)}}class ete{constructor(e){this.context=e,this.cursors=[new cP(e)],this.lastAddedCursorIndex=0}dispose(){for(const e of this.cursors)e.dispose(this.context)}startTrackingSelections(){for(const e of this.cursors)e.startTrackingSelection(this.context)}stopTrackingSelections(){for(const e of this.cursors)e.stopTrackingSelection(this.context)}updateContext(e){this.context=e}ensureValidState(){for(const e of this.cursors)e.ensureValidState(this.context)}readSelectionFromMarkers(){return this.cursors.map(e=>e.readSelectionFromMarkers(this.context))}getAll(){return this.cursors.map(e=>e.asCursorState())}getViewPositions(){return this.cursors.map(e=>e.viewState.position)}getTopMostViewPosition(){return eUe(this.cursors,Nl(e=>e.viewState.position,he.compare)).viewState.position}getBottomMostViewPosition(){return Jze(this.cursors,Nl(e=>e.viewState.position,he.compare)).viewState.position}getSelections(){return this.cursors.map(e=>e.modelState.selection)}getViewSelections(){return this.cursors.map(e=>e.viewState.selection)}setSelections(e){this.setStates(Xt.fromModelSelections(e))}getPrimaryCursor(){return this.cursors[0].asCursorState()}setStates(e){e!==null&&(this.cursors[0].setState(this.context,e[0].modelState,e[0].viewState),this._setSecondaryStates(e.slice(1)))}_setSecondaryStates(e){const t=this.cursors.length-1,i=e.length;if(t<i){const s=i-t;for(let r=0;r<s;r++)this._addSecondaryCursor()}else if(t>i){const s=t-i;for(let r=0;r<s;r++)this._removeSecondaryCursor(this.cursors.length-2)}for(let s=0;s<i;s++)this.cursors[s+1].setState(this.context,e[s].modelState,e[s].viewState)}killSecondaryCursors(){this._setSecondaryStates([])}_addSecondaryCursor(){this.cursors.push(new cP(this.context)),this.lastAddedCursorIndex=this.cursors.length-1}getLastAddedCursorIndex(){return this.cursors.length===1||this.lastAddedCursorIndex===0?0:this.lastAddedCursorIndex}_removeSecondaryCursor(e){this.lastAddedCursorIndex>=e+1&&this.lastAddedCursorIndex--,this.cursors[e+1].dispose(this.context),this.cursors.splice(e+1,1)}normalize(){if(this.cursors.length===1)return;const e=this.cursors.slice(0),t=[];for(let i=0,s=e.length;i<s;i++)t.push({index:i,selection:e[i].modelState.selection});t.sort(Nl(i=>i.selection,M.compareRangesUsingStarts));for(let i=0;i<t.length-1;i++){const s=t[i],r=t[i+1],o=s.selection,a=r.selection;if(!this.context.cursorConfig.multiCursorMergeOverlapping)continue;let l;if(a.isEmpty()||o.isEmpty()?l=a.getStartPosition().isBeforeOrEqual(o.getEndPosition()):l=a.getStartPosition().isBefore(o.getEndPosition()),l){const c=s.index<r.index?i:i+1,u=s.index<r.index?i+1:i,h=t[u].index,d=t[c].index,f=t[u].selection,g=t[c].selection;if(!f.equalsSelection(g)){const p=f.plusRange(g),m=f.selectionStartLineNumber===f.startLineNumber&&f.selectionStartColumn===f.startColumn,_=g.selectionStartLineNumber===g.startLineNumber&&g.selectionStartColumn===g.startColumn;let b;h===this.lastAddedCursorIndex?(b=m,this.lastAddedCursorIndex=d):b=_;let y;b?y=new Ze(p.startLineNumber,p.startColumn,p.endLineNumber,p.endColumn):y=new Ze(p.endLineNumber,p.endColumn,p.startLineNumber,p.startColumn),t[c].selection=y;const w=Xt.fromModelSelection(y);e[d].setState(this.context,w.modelState,w.viewState)}for(const p of t)p.index>h&&p.index--;e.splice(h,1),t.splice(u,1),this._removeSecondaryCursor(h-1),i--}}}}class tte{constructor(e,t,i,s){this._cursorContextBrand=void 0,this.model=e,this.viewModel=t,this.coordinatesConverter=i,this.cursorConfig=s}}class xqe{constructor(){this.type=0}}class Eqe{constructor(){this.type=1}}class Dqe{constructor(e){this.type=2,this._source=e}hasChanged(e){return this._source.hasChanged(e)}}class Iqe{constructor(e,t,i){this.selections=e,this.modelSelections=t,this.reason=i,this.type=3}}class Ym{constructor(e){this.type=4,e?(this.affectsMinimap=e.affectsMinimap,this.affectsOverviewRuler=e.affectsOverviewRuler,this.affectsGlyphMargin=e.affectsGlyphMargin):(this.affectsMinimap=!0,this.affectsOverviewRuler=!0,this.affectsGlyphMargin=!0)}}class pI{constructor(){this.type=5}}class Tqe{constructor(e){this.type=6,this.isFocused=e}}class Nqe{constructor(){this.type=7}}class mI{constructor(){this.type=8}}class wme{constructor(e,t){this.fromLineNumber=e,this.count=t,this.type=9}}class O9{constructor(e,t){this.type=10,this.fromLineNumber=e,this.toLineNumber=t}}class F9{constructor(e,t){this.type=11,this.fromLineNumber=e,this.toLineNumber=t}}class lN{constructor(e,t,i,s,r,o,a){this.source=e,this.minimalReveal=t,this.range=i,this.selections=s,this.verticalType=r,this.revealHorizontal=o,this.scrollType=a,this.type=12}}class Aqe{constructor(e){this.type=13,this.scrollWidth=e.scrollWidth,this.scrollLeft=e.scrollLeft,this.scrollHeight=e.scrollHeight,this.scrollTop=e.scrollTop,this.scrollWidthChanged=e.scrollWidthChanged,this.scrollLeftChanged=e.scrollLeftChanged,this.scrollHeightChanged=e.scrollHeightChanged,this.scrollTopChanged=e.scrollTopChanged}}class Pqe{constructor(e){this.theme=e,this.type=14}}class Rqe{constructor(e){this.type=15,this.ranges=e}}class Mqe{constructor(){this.type=16}}let Oqe=class{constructor(){this.type=17}};class Fqe extends pe{constructor(){super(),this._onEvent=this._register(new ue),this.onEvent=this._onEvent.event,this._eventHandlers=[],this._viewEventQueue=null,this._isConsumingViewEventQueue=!1,this._collector=null,this._collectorCnt=0,this._outgoingEvents=[]}emitOutgoingEvent(e){this._addOutgoingEvent(e),this._emitOutgoingEvents()}_addOutgoingEvent(e){for(let t=0,i=this._outgoingEvents.length;t<i;t++){const s=this._outgoingEvents[t].kind===e.kind?this._outgoingEvents[t].attemptToMerge(e):null;if(s){this._outgoingEvents[t]=s;return}}this._outgoingEvents.push(e)}_emitOutgoingEvents(){for(;this._outgoingEvents.length>0;){if(this._collector||this._isConsumingViewEventQueue)return;const e=this._outgoingEvents.shift();e.isNoOp()||this._onEvent.fire(e)}}addViewEventHandler(e){for(let t=0,i=this._eventHandlers.length;t<i;t++)this._eventHandlers[t]===e&&console.warn("Detected duplicate listener in ViewEventDispatcher",e);this._eventHandlers.push(e)}removeViewEventHandler(e){for(let t=0;t<this._eventHandlers.length;t++)if(this._eventHandlers[t]===e){this._eventHandlers.splice(t,1);break}}beginEmitViewEvents(){return this._collectorCnt++,this._collectorCnt===1&&(this._collector=new Bqe),this._collector}endEmitViewEvents(){if(this._collectorCnt--,this._collectorCnt===0){const e=this._collector.outgoingEvents,t=this._collector.viewEvents;this._collector=null;for(const i of e)this._addOutgoingEvent(i);t.length>0&&this._emitMany(t)}this._emitOutgoingEvents()}emitSingleViewEvent(e){try{this.beginEmitViewEvents().emitViewEvent(e)}finally{this.endEmitViewEvents()}}_emitMany(e){this._viewEventQueue?this._viewEventQueue=this._viewEventQueue.concat(e):this._viewEventQueue=e,this._isConsumingViewEventQueue||this._consumeViewEventQueue()}_consumeViewEventQueue(){try{this._isConsumingViewEventQueue=!0,this._doConsumeQueue()}finally{this._isConsumingViewEventQueue=!1}}_doConsumeQueue(){for(;this._viewEventQueue;){const e=this._viewEventQueue;this._viewEventQueue=null;const t=this._eventHandlers.slice(0);for(const i of t)i.handleEvents(e)}}}class Bqe{constructor(){this.viewEvents=[],this.outgoingEvents=[]}emitViewEvent(e){this.viewEvents.push(e)}emitOutgoingEvent(e){this.outgoingEvents.push(e)}}class Bq{constructor(e,t,i,s){this.kind=0,this._oldContentWidth=e,this._oldContentHeight=t,this.contentWidth=i,this.contentHeight=s,this.contentWidthChanged=this._oldContentWidth!==this.contentWidth,this.contentHeightChanged=this._oldContentHeight!==this.contentHeight}isNoOp(){return!this.contentWidthChanged&&!this.contentHeightChanged}attemptToMerge(e){return e.kind!==this.kind?null:new Bq(this._oldContentWidth,this._oldContentHeight,e.contentWidth,e.contentHeight)}}class Wq{constructor(e,t){this.kind=1,this.oldHasFocus=e,this.hasFocus=t}isNoOp(){return this.oldHasFocus===this.hasFocus}attemptToMerge(e){return e.kind!==this.kind?null:new Wq(this.oldHasFocus,e.hasFocus)}}class Vq{constructor(e,t,i,s,r,o,a,l){this.kind=2,this._oldScrollWidth=e,this._oldScrollLeft=t,this._oldScrollHeight=i,this._oldScrollTop=s,this.scrollWidth=r,this.scrollLeft=o,this.scrollHeight=a,this.scrollTop=l,this.scrollWidthChanged=this._oldScrollWidth!==this.scrollWidth,this.scrollLeftChanged=this._oldScrollLeft!==this.scrollLeft,this.scrollHeightChanged=this._oldScrollHeight!==this.scrollHeight,this.scrollTopChanged=this._oldScrollTop!==this.scrollTop}isNoOp(){return!this.scrollWidthChanged&&!this.scrollLeftChanged&&!this.scrollHeightChanged&&!this.scrollTopChanged}attemptToMerge(e){return e.kind!==this.kind?null:new Vq(this._oldScrollWidth,this._oldScrollLeft,this._oldScrollHeight,this._oldScrollTop,e.scrollWidth,e.scrollLeft,e.scrollHeight,e.scrollTop)}}class Wqe{constructor(){this.kind=3}isNoOp(){return!1}attemptToMerge(e){return e.kind!==this.kind?null:this}}class Vqe{constructor(){this.kind=4}isNoOp(){return!1}attemptToMerge(e){return e.kind!==this.kind?null:this}}class uP{constructor(e,t,i,s,r,o,a){this.kind=6,this.oldSelections=e,this.selections=t,this.oldModelVersionId=i,this.modelVersionId=s,this.source=r,this.reason=o,this.reachedMaxCursorCount=a}static _selectionsAreEqual(e,t){if(!e&&!t)return!0;if(!e||!t)return!1;const i=e.length,s=t.length;if(i!==s)return!1;for(let r=0;r<i;r++)if(!e[r].equalsSelection(t[r]))return!1;return!0}isNoOp(){return uP._selectionsAreEqual(this.oldSelections,this.selections)&&this.oldModelVersionId===this.modelVersionId}attemptToMerge(e){return e.kind!==this.kind?null:new uP(this.oldSelections,e.selections,this.oldModelVersionId,e.modelVersionId,e.source,e.reason,this.reachedMaxCursorCount||e.reachedMaxCursorCount)}}class Hqe{constructor(){this.kind=5}isNoOp(){return!1}attemptToMerge(e){return e.kind!==this.kind?null:this}}class $qe{constructor(e){this.event=e,this.kind=7}isNoOp(){return!1}attemptToMerge(e){return null}}class zqe{constructor(e){this.event=e,this.kind=8}isNoOp(){return!1}attemptToMerge(e){return null}}class Uqe{constructor(e){this.event=e,this.kind=9}isNoOp(){return!1}attemptToMerge(e){return null}}class jqe{constructor(e){this.event=e,this.kind=10}isNoOp(){return!1}attemptToMerge(e){return null}}class qqe{constructor(e){this.event=e,this.kind=11}isNoOp(){return!1}attemptToMerge(e){return null}}class Kqe{constructor(e){this.event=e,this.kind=12}isNoOp(){return!1}attemptToMerge(e){return null}}class Gqe extends pe{constructor(e,t,i,s){super(),this._model=e,this._knownModelVersionId=this._model.getVersionId(),this._viewModel=t,this._coordinatesConverter=i,this.context=new tte(this._model,this._viewModel,this._coordinatesConverter,s),this._cursors=new ete(this.context),this._hasFocus=!1,this._isHandling=!1,this._compositionState=null,this._columnSelectData=null,this._autoClosedActions=[],this._prevEditOperationType=0}dispose(){this._cursors.dispose(),this._autoClosedActions=yi(this._autoClosedActions),super.dispose()}updateConfiguration(e){this.context=new tte(this._model,this._viewModel,this._coordinatesConverter,e),this._cursors.updateContext(this.context)}onLineMappingChanged(e){this._knownModelVersionId===this._model.getVersionId()&&this.setStates(e,"viewModel",0,this.getCursorStates())}setHasFocus(e){this._hasFocus=e}_validateAutoClosedActions(){if(this._autoClosedActions.length>0){const e=this._cursors.getSelections();for(let t=0;t<this._autoClosedActions.length;t++){const i=this._autoClosedActions[t];i.isValid(e)||(i.dispose(),this._autoClosedActions.splice(t,1),t--)}}}getPrimaryCursorState(){return this._cursors.getPrimaryCursor()}getLastAddedCursorIndex(){return this._cursors.getLastAddedCursorIndex()}getCursorStates(){return this._cursors.getAll()}setStates(e,t,i,s){let r=!1;const o=this.context.cursorConfig.multiCursorLimit;s!==null&&s.length>o&&(s=s.slice(0,o),r=!0);const a=ck.from(this._model,this);return this._cursors.setStates(s),this._cursors.normalize(),this._columnSelectData=null,this._validateAutoClosedActions(),this._emitStateChangedIfNecessary(e,t,i,a,r)}setCursorColumnSelectData(e){this._columnSelectData=e}revealPrimary(e,t,i,s,r,o){const a=this._cursors.getViewPositions();let l=null,c=null;a.length>1?c=this._cursors.getViewSelections():l=M.fromPositions(a[0],a[0]),e.emitViewEvent(new lN(t,i,l,c,s,r,o))}saveState(){const e=[],t=this._cursors.getSelections();for(let i=0,s=t.length;i<s;i++){const r=t[i];e.push({inSelectionMode:!r.isEmpty(),selectionStart:{lineNumber:r.selectionStartLineNumber,column:r.selectionStartColumn},position:{lineNumber:r.positionLineNumber,column:r.positionColumn}})}return e}restoreState(e,t){const i=[];for(let s=0,r=t.length;s<r;s++){const o=t[s];let a=1,l=1;o.position&&o.position.lineNumber&&(a=o.position.lineNumber),o.position&&o.position.column&&(l=o.position.column);let c=a,u=l;o.selectionStart&&o.selectionStart.lineNumber&&(c=o.selectionStart.lineNumber),o.selectionStart&&o.selectionStart.column&&(u=o.selectionStart.column),i.push({selectionStartLineNumber:c,selectionStartColumn:u,positionLineNumber:a,positionColumn:l})}this.setStates(e,"restoreState",0,Xt.fromModelSelections(i)),this.revealPrimary(e,"restoreState",!1,0,!0,1)}onModelContentChanged(e,t){if(t instanceof bme){if(this._isHandling)return;this._isHandling=!0;try{this.setStates(e,"modelChange",0,this.getCursorStates())}finally{this._isHandling=!1}}else{const i=t.rawContentChangedEvent;if(this._knownModelVersionId=i.versionId,this._isHandling)return;const s=i.containsEvent(1);if(this._prevEditOperationType=0,s)this._cursors.dispose(),this._cursors=new ete(this.context),this._validateAutoClosedActions(),this._emitStateChangedIfNecessary(e,"model",1,null,!1);else if(this._hasFocus&&i.resultingSelection&&i.resultingSelection.length>0){const r=Xt.fromModelSelections(i.resultingSelection);this.setStates(e,"modelChange",i.isUndoing?5:i.isRedoing?6:2,r)&&this.revealPrimary(e,"modelChange",!1,0,!0,0)}else{const r=this._cursors.readSelectionFromMarkers();this.setStates(e,"modelChange",2,Xt.fromModelSelections(r))}}}getSelection(){return this._cursors.getPrimaryCursor().modelState.selection}getTopMostViewPosition(){return this._cursors.getTopMostViewPosition()}getBottomMostViewPosition(){return this._cursors.getBottomMostViewPosition()}getCursorColumnSelectData(){if(this._columnSelectData)return this._columnSelectData;const e=this._cursors.getPrimaryCursor(),t=e.viewState.selectionStart.getStartPosition(),i=e.viewState.position;return{isReal:!1,fromViewLineNumber:t.lineNumber,fromViewVisualColumn:this.context.cursorConfig.visibleColumnFromColumn(this._viewModel,t),toViewLineNumber:i.lineNumber,toViewVisualColumn:this.context.cursorConfig.visibleColumnFromColumn(this._viewModel,i)}}getSelections(){return this._cursors.getSelections()}setSelections(e,t,i,s){this.setStates(e,t,s,Xt.fromModelSelections(i))}getPrevEditOperationType(){return this._prevEditOperationType}setPrevEditOperationType(e){this._prevEditOperationType=e}_pushAutoClosedAction(e,t){const i=[],s=[];for(let a=0,l=e.length;a<l;a++)i.push({range:e[a],options:{description:"auto-closed-character",inlineClassName:"auto-closed-character",stickiness:1}}),s.push({range:t[a],options:{description:"auto-closed-enclosing",stickiness:1}});const r=this._model.deltaDecorations([],i),o=this._model.deltaDecorations([],s);this._autoClosedActions.push(new ite(this._model,r,o))}_executeEditOperation(e){if(!e)return;e.shouldPushStackElementBefore&&this._model.pushStackElement();const t=Yqe.executeCommands(this._model,this._cursors.getSelections(),e.commands);if(t){this._interpretCommandResult(t);const i=[],s=[];for(let r=0;r<e.commands.length;r++){const o=e.commands[r];o instanceof ope&&o.enclosingRange&&o.closeCharacterRange&&(i.push(o.closeCharacterRange),s.push(o.enclosingRange))}i.length>0&&this._pushAutoClosedAction(i,s),this._prevEditOperationType=e.type}e.shouldPushStackElementAfter&&this._model.pushStackElement()}_interpretCommandResult(e){(!e||e.length===0)&&(e=this._cursors.readSelectionFromMarkers()),this._columnSelectData=null,this._cursors.setSelections(e),this._cursors.normalize()}_emitStateChangedIfNecessary(e,t,i,s,r){const o=ck.from(this._model,this);if(o.equals(s))return!1;const a=this._cursors.getSelections(),l=this._cursors.getViewSelections();if(e.emitViewEvent(new Iqe(l,a,i)),!s||s.cursorState.length!==o.cursorState.length||o.cursorState.some((c,u)=>!c.modelState.equals(s.cursorState[u].modelState))){const c=s?s.cursorState.map(h=>h.modelState.selection):null,u=s?s.modelVersionId:0;e.emitOutgoingEvent(new uP(c,a,u,o.modelVersionId,t||"keyboard",i,r))}return!0}_findAutoClosingPairs(e){if(!e.length)return null;const t=[];for(let i=0,s=e.length;i<s;i++){const r=e[i];if(!r.text||r.text.indexOf(` +`)>=0)return null;const o=r.text.match(/([)\]}>'"`])([^)\]}>'"`]*)$/);if(!o)return null;const a=o[1],l=this.context.cursorConfig.autoClosingPairs.autoClosingPairsCloseSingleChar.get(a);if(!l||l.length!==1)return null;const c=l[0].open,u=r.text.length-o[2].length-1,h=r.text.lastIndexOf(c,u-1);if(h===-1)return null;t.push([h,u])}return t}executeEdits(e,t,i,s){let r=null;t==="snippet"&&(r=this._findAutoClosingPairs(i)),r&&(i[0]._isTracked=!0);const o=[],a=[],l=this._model.pushEditOperations(this.getSelections(),i,c=>{if(r)for(let h=0,d=r.length;h<d;h++){const[f,g]=r[h],p=c[h],m=p.range.startLineNumber,_=p.range.startColumn-1+f,b=p.range.startColumn-1+g;o.push(new M(m,b+1,m,b+2)),a.push(new M(m,_+1,m,b+2))}const u=s(c);return u&&(this._isHandling=!0),u});l&&(this._isHandling=!1,this.setSelections(e,t,l,0)),o.length>0&&this._pushAutoClosedAction(o,a)}_executeEdit(e,t,i,s=0){if(this.context.cursorConfig.readOnly)return;const r=ck.from(this._model,this);this._cursors.stopTrackingSelections(),this._isHandling=!0;try{this._cursors.ensureValidState(),e()}catch(o){vt(o)}this._isHandling=!1,this._cursors.startTrackingSelections(),this._validateAutoClosedActions(),this._emitStateChangedIfNecessary(t,i,s,r,!1)&&this.revealPrimary(t,i,!1,0,!0,0)}getAutoClosedCharacters(){return ite.getAllAutoClosedCharacters(this._autoClosedActions)}startComposition(e){this._compositionState=new uk(this._model,this.getSelections())}endComposition(e,t){const i=this._compositionState?this._compositionState.deduceOutcome(this._model,this.getSelections()):null;this._compositionState=null,this._executeEdit(()=>{t==="keyboard"&&this._executeEditOperation(gn.compositionEndWithInterceptors(this._prevEditOperationType,this.context.cursorConfig,this._model,i,this.getSelections(),this.getAutoClosedCharacters()))},e,t)}type(e,t,i){this._executeEdit(()=>{if(i==="keyboard"){const s=t.length;let r=0;for(;r<s;){const o=Hj(t,r),a=t.substr(r,o);this._executeEditOperation(gn.typeWithInterceptors(!!this._compositionState,this._prevEditOperationType,this.context.cursorConfig,this._model,this.getSelections(),this.getAutoClosedCharacters(),a)),r+=o}}else this._executeEditOperation(gn.typeWithoutInterceptors(this._prevEditOperationType,this.context.cursorConfig,this._model,this.getSelections(),t))},e,i)}compositionType(e,t,i,s,r,o){if(t.length===0&&i===0&&s===0){if(r!==0){const a=this.getSelections().map(l=>{const c=l.getPosition();return new Ze(c.lineNumber,c.column+r,c.lineNumber,c.column+r)});this.setSelections(e,o,a,0)}return}this._executeEdit(()=>{this._executeEditOperation(gn.compositionType(this._prevEditOperationType,this.context.cursorConfig,this._model,this.getSelections(),t,i,s,r))},e,o)}paste(e,t,i,s,r){this._executeEdit(()=>{this._executeEditOperation(gn.paste(this.context.cursorConfig,this._model,this.getSelections(),t,i,s||[]))},e,r,4)}cut(e,t){this._executeEdit(()=>{this._executeEditOperation(M_.cut(this.context.cursorConfig,this._model,this.getSelections()))},e,t)}executeCommand(e,t,i){this._executeEdit(()=>{this._cursors.killSecondaryCursors(),this._executeEditOperation(new So(0,[t],{shouldPushStackElementBefore:!1,shouldPushStackElementAfter:!1}))},e,i)}executeCommands(e,t,i){this._executeEdit(()=>{this._executeEditOperation(new So(0,t,{shouldPushStackElementBefore:!1,shouldPushStackElementAfter:!1}))},e,i)}}class ck{static from(e,t){return new ck(e.getVersionId(),t.getCursorStates())}constructor(e,t){this.modelVersionId=e,this.cursorState=t}equals(e){if(!e||this.modelVersionId!==e.modelVersionId||this.cursorState.length!==e.cursorState.length)return!1;for(let t=0,i=this.cursorState.length;t<i;t++)if(!this.cursorState[t].equals(e.cursorState[t]))return!1;return!0}}class ite{static getAllAutoClosedCharacters(e){let t=[];for(const i of e)t=t.concat(i.getAutoClosedCharactersRanges());return t}constructor(e,t,i){this._model=e,this._autoClosedCharactersDecorations=t,this._autoClosedEnclosingDecorations=i}dispose(){this._autoClosedCharactersDecorations=this._model.deltaDecorations(this._autoClosedCharactersDecorations,[]),this._autoClosedEnclosingDecorations=this._model.deltaDecorations(this._autoClosedEnclosingDecorations,[])}getAutoClosedCharactersRanges(){const e=[];for(let t=0;t<this._autoClosedCharactersDecorations.length;t++){const i=this._model.getDecorationRange(this._autoClosedCharactersDecorations[t]);i&&e.push(i)}return e}isValid(e){const t=[];for(let i=0;i<this._autoClosedEnclosingDecorations.length;i++){const s=this._model.getDecorationRange(this._autoClosedEnclosingDecorations[i]);if(s&&(t.push(s),s.startLineNumber!==s.endLineNumber))return!1}t.sort(M.compareRangesUsingStarts),e.sort(M.compareRangesUsingStarts);for(let i=0;i<e.length;i++)if(i>=t.length||!t[i].strictContainsRange(e[i]))return!1;return!0}}class Yqe{static executeCommands(e,t,i){const s={model:e,selectionsBefore:t,trackedRanges:[],trackedRangesDirection:[]},r=this._innerExecuteCommands(s,i);for(let o=0,a=s.trackedRanges.length;o<a;o++)s.model._setTrackedRange(s.trackedRanges[o],null,0);return r}static _innerExecuteCommands(e,t){if(this._arrayIsEmpty(t))return null;const i=this._getEditOperations(e,t);if(i.operations.length===0)return null;const s=i.operations,r=this._getLoserCursorMap(s);if(r.hasOwnProperty("0"))return console.warn("Ignoring commands"),null;const o=[];for(let c=0,u=s.length;c<u;c++)r.hasOwnProperty(s[c].identifier.major.toString())||o.push(s[c]);i.hadTrackedEditOperation&&o.length>0&&(o[0]._isTracked=!0);let a=e.model.pushEditOperations(e.selectionsBefore,o,c=>{const u=[];for(let f=0;f<e.selectionsBefore.length;f++)u[f]=[];for(const f of c)f.identifier&&u[f.identifier.major].push(f);const h=(f,g)=>f.identifier.minor-g.identifier.minor,d=[];for(let f=0;f<e.selectionsBefore.length;f++)u[f].length>0?(u[f].sort(h),d[f]=t[f].computeCursorState(e.model,{getInverseEditOperations:()=>u[f],getTrackedSelection:g=>{const p=parseInt(g,10),m=e.model._getTrackedRange(e.trackedRanges[p]);return e.trackedRangesDirection[p]===0?new Ze(m.startLineNumber,m.startColumn,m.endLineNumber,m.endColumn):new Ze(m.endLineNumber,m.endColumn,m.startLineNumber,m.startColumn)}})):d[f]=e.selectionsBefore[f];return d});a||(a=e.selectionsBefore);const l=[];for(const c in r)r.hasOwnProperty(c)&&l.push(parseInt(c,10));l.sort((c,u)=>u-c);for(const c of l)a.splice(c,1);return a}static _arrayIsEmpty(e){for(let t=0,i=e.length;t<i;t++)if(e[t])return!1;return!0}static _getEditOperations(e,t){let i=[],s=!1;for(let r=0,o=t.length;r<o;r++){const a=t[r];if(a){const l=this._getEditOperationsFromCommand(e,r,a);i=i.concat(l.operations),s=s||l.hadTrackedEditOperation}}return{operations:i,hadTrackedEditOperation:s}}static _getEditOperationsFromCommand(e,t,i){const s=[];let r=0;const o=(h,d,f=!1)=>{M.isEmpty(h)&&d===""||s.push({identifier:{major:t,minor:r++},range:h,text:d,forceMoveMarkers:f,isAutoWhitespaceEdit:i.insertsAutoWhitespace})};let a=!1;const u={addEditOperation:o,addTrackedEditOperation:(h,d,f)=>{a=!0,o(h,d,f)},trackSelection:(h,d)=>{const f=Ze.liftSelection(h);let g;if(f.isEmpty())if(typeof d=="boolean")d?g=2:g=3;else{const _=e.model.getLineMaxColumn(f.startLineNumber);f.startColumn===_?g=2:g=3}else g=1;const p=e.trackedRanges.length,m=e.model._setTrackedRange(null,f,g);return e.trackedRanges[p]=m,e.trackedRangesDirection[p]=f.getDirection(),p.toString()}};try{i.getEditOperations(e.model,u)}catch(h){return vt(h),{operations:[],hadTrackedEditOperation:!1}}return{operations:s,hadTrackedEditOperation:a}}static _getLoserCursorMap(e){e=e.slice(0),e.sort((i,s)=>-M.compareRangesUsingEnds(i.range,s.range));const t={};for(let i=1;i<e.length;i++){const s=e[i-1],r=e[i];if(M.getStartPosition(s.range).isBefore(M.getEndPosition(r.range))){let o;s.identifier.major>r.identifier.major?o=s.identifier.major:o=r.identifier.major,t[o.toString()]=!0;for(let a=0;a<e.length;a++)e[a].identifier.major===o&&(e.splice(a,1),a<i&&i--,a--);i>0&&i--}}return t}}class Zqe{constructor(e,t,i){this.text=e,this.startSelection=t,this.endSelection=i}}class uk{static _capture(e,t){const i=[];for(const s of t){if(s.startLineNumber!==s.endLineNumber)return null;i.push(new Zqe(e.getLineContent(s.startLineNumber),s.startColumn-1,s.endColumn-1))}return i}constructor(e,t){this._original=uk._capture(e,t)}deduceOutcome(e,t){if(!this._original)return null;const i=uk._capture(e,t);if(!i||this._original.length!==i.length)return null;const s=[];for(let r=0,o=this._original.length;r<o;r++)s.push(uk._deduceOutcome(this._original[r],i[r]));return s}static _deduceOutcome(e,t){const i=Math.min(e.startSelection,t.startSelection,T_(e.text,t.text)),s=Math.min(e.text.length-e.endSelection,t.text.length-t.endSelection,TA(e.text,t.text)),r=e.text.substring(i,e.text.length-s),o=t.text.substring(i,t.text.length-s);return new hWe(r,e.startSelection-i,e.endSelection-i,o,t.startSelection-i,t.endSelection-i)}}const nte={getInitialState:()=>Ly,tokenizeEncoded:(n,e,t)=>GO(0,t)};async function Xqe(n,e,t){if(!t)return ste(e,n.languageIdCodec,nte);const i=await kn.getOrCreate(t);return ste(e,n.languageIdCodec,i||nte)}function Qqe(n,e,t,i,s,r,o){let a="<div>",l=i,c=0,u=!0;for(let h=0,d=e.getCount();h<d;h++){const f=e.getEndOffset(h);if(f<=i)continue;let g="";for(;l<f&&l<s;l++){const p=n.charCodeAt(l);switch(p){case 9:{let m=r-(l+c)%r;for(c+=m-1;m>0;)o&&u?(g+=" ",u=!1):(g+=" ",u=!0),m--;break}case 60:g+="<",u=!1;break;case 62:g+=">",u=!1;break;case 38:g+="&",u=!1;break;case 0:g+="�",u=!1;break;case 65279:case 8232:case 8233:case 133:g+="�",u=!1;break;case 13:g+="​",u=!1;break;case 32:o&&u?(g+=" ",u=!1):(g+=" ",u=!0);break;default:g+=String.fromCharCode(p),u=!1}}if(a+=`<span style="${e.getInlineStyle(h,t)}">${g}</span>`,f>s||l>=s)break}return a+="</div>",a}function ste(n,e,t){let i='<div class="monaco-tokenized-source">';const s=fd(n);let r=t.getInitialState();for(let o=0,a=s.length;o<a;o++){const l=s[o];o>0&&(i+="<br/>");const c=t.tokenizeEncoded(l,!0,r);Ps.convertToEndOffset(c.tokens,l.length);const h=new Ps(c.tokens,l,e).inflate();let d=0;for(let f=0,g=h.getCount();f<g;f++){const p=h.getClassName(f),m=h.getEndOffset(f);i+=`<span class="${p}">${IA(l.substring(d,m))}</span>`,d=m}r=c.endState}return i+="</div>",i}class Jqe{constructor(){this._hasPending=!1,this._inserts=[],this._changes=[],this._removes=[]}insert(e){this._hasPending=!0,this._inserts.push(e)}change(e){this._hasPending=!0,this._changes.push(e)}remove(e){this._hasPending=!0,this._removes.push(e)}mustCommit(){return this._hasPending}commit(e){if(!this._hasPending)return;const t=this._inserts,i=this._changes,s=this._removes;this._hasPending=!1,this._inserts=[],this._changes=[],this._removes=[],e._commitPendingChanges(t,i,s)}}class eKe{constructor(e,t,i,s,r){this.id=e,this.afterLineNumber=t,this.ordinal=i,this.height=s,this.minWidth=r,this.prefixSum=0}}let Sme=class B9{constructor(e,t,i,s){this._instanceId=age(++B9.INSTANCE_COUNT),this._pendingChanges=new Jqe,this._lastWhitespaceId=0,this._arr=[],this._prefixSumValidIndex=-1,this._minWidth=-1,this._lineCount=e,this._lineHeight=t,this._paddingTop=i,this._paddingBottom=s}static findInsertionIndex(e,t,i){let s=0,r=e.length;for(;s<r;){const o=s+r>>>1;t===e[o].afterLineNumber?i<e[o].ordinal?r=o:s=o+1:t<e[o].afterLineNumber?r=o:s=o+1}return s}setLineHeight(e){this._checkPendingChanges(),this._lineHeight=e}setPadding(e,t){this._paddingTop=e,this._paddingBottom=t}onFlushed(e){this._checkPendingChanges(),this._lineCount=e}changeWhitespace(e){let t=!1;try{e({insertWhitespace:(s,r,o,a)=>{t=!0,s=s|0,r=r|0,o=o|0,a=a|0;const l=this._instanceId+ ++this._lastWhitespaceId;return this._pendingChanges.insert(new eKe(l,s,r,o,a)),l},changeOneWhitespace:(s,r,o)=>{t=!0,r=r|0,o=o|0,this._pendingChanges.change({id:s,newAfterLineNumber:r,newHeight:o})},removeWhitespace:s=>{t=!0,this._pendingChanges.remove({id:s})}})}finally{this._pendingChanges.commit(this)}return t}_commitPendingChanges(e,t,i){if((e.length>0||i.length>0)&&(this._minWidth=-1),e.length+t.length+i.length<=1){for(const l of e)this._insertWhitespace(l);for(const l of t)this._changeOneWhitespace(l.id,l.newAfterLineNumber,l.newHeight);for(const l of i){const c=this._findWhitespaceIndex(l.id);c!==-1&&this._removeWhitespace(c)}return}const s=new Set;for(const l of i)s.add(l.id);const r=new Map;for(const l of t)r.set(l.id,l);const o=l=>{const c=[];for(const u of l)if(!s.has(u.id)){if(r.has(u.id)){const h=r.get(u.id);u.afterLineNumber=h.newAfterLineNumber,u.height=h.newHeight}c.push(u)}return c},a=o(this._arr).concat(o(e));a.sort((l,c)=>l.afterLineNumber===c.afterLineNumber?l.ordinal-c.ordinal:l.afterLineNumber-c.afterLineNumber),this._arr=a,this._prefixSumValidIndex=-1}_checkPendingChanges(){this._pendingChanges.mustCommit()&&this._pendingChanges.commit(this)}_insertWhitespace(e){const t=B9.findInsertionIndex(this._arr,e.afterLineNumber,e.ordinal);this._arr.splice(t,0,e),this._prefixSumValidIndex=Math.min(this._prefixSumValidIndex,t-1)}_findWhitespaceIndex(e){const t=this._arr;for(let i=0,s=t.length;i<s;i++)if(t[i].id===e)return i;return-1}_changeOneWhitespace(e,t,i){const s=this._findWhitespaceIndex(e);if(s!==-1&&(this._arr[s].height!==i&&(this._arr[s].height=i,this._prefixSumValidIndex=Math.min(this._prefixSumValidIndex,s-1)),this._arr[s].afterLineNumber!==t)){const r=this._arr[s];this._removeWhitespace(s),r.afterLineNumber=t,this._insertWhitespace(r)}}_removeWhitespace(e){this._arr.splice(e,1),this._prefixSumValidIndex=Math.min(this._prefixSumValidIndex,e-1)}onLinesDeleted(e,t){this._checkPendingChanges(),e=e|0,t=t|0,this._lineCount-=t-e+1;for(let i=0,s=this._arr.length;i<s;i++){const r=this._arr[i].afterLineNumber;e<=r&&r<=t?this._arr[i].afterLineNumber=e-1:r>t&&(this._arr[i].afterLineNumber-=t-e+1)}}onLinesInserted(e,t){this._checkPendingChanges(),e=e|0,t=t|0,this._lineCount+=t-e+1;for(let i=0,s=this._arr.length;i<s;i++){const r=this._arr[i].afterLineNumber;e<=r&&(this._arr[i].afterLineNumber+=t-e+1)}}getWhitespacesTotalHeight(){return this._checkPendingChanges(),this._arr.length===0?0:this.getWhitespacesAccumulatedHeight(this._arr.length-1)}getWhitespacesAccumulatedHeight(e){this._checkPendingChanges(),e=e|0;let t=Math.max(0,this._prefixSumValidIndex+1);t===0&&(this._arr[0].prefixSum=this._arr[0].height,t++);for(let i=t;i<=e;i++)this._arr[i].prefixSum=this._arr[i-1].prefixSum+this._arr[i].height;return this._prefixSumValidIndex=Math.max(this._prefixSumValidIndex,e),this._arr[e].prefixSum}getLinesTotalHeight(){this._checkPendingChanges();const e=this._lineHeight*this._lineCount,t=this.getWhitespacesTotalHeight();return e+t+this._paddingTop+this._paddingBottom}getWhitespaceAccumulatedHeightBeforeLineNumber(e){this._checkPendingChanges(),e=e|0;const t=this._findLastWhitespaceBeforeLineNumber(e);return t===-1?0:this.getWhitespacesAccumulatedHeight(t)}_findLastWhitespaceBeforeLineNumber(e){e=e|0;const t=this._arr;let i=0,s=t.length-1;for(;i<=s;){const o=(s-i|0)/2|0,a=i+o|0;if(t[a].afterLineNumber<e){if(a+1>=t.length||t[a+1].afterLineNumber>=e)return a;i=a+1|0}else s=a-1|0}return-1}_findFirstWhitespaceAfterLineNumber(e){e=e|0;const i=this._findLastWhitespaceBeforeLineNumber(e)+1;return i<this._arr.length?i:-1}getFirstWhitespaceIndexAfterLineNumber(e){return this._checkPendingChanges(),e=e|0,this._findFirstWhitespaceAfterLineNumber(e)}getVerticalOffsetForLineNumber(e,t=!1){this._checkPendingChanges(),e=e|0;let i;e>1?i=this._lineHeight*(e-1):i=0;const s=this.getWhitespaceAccumulatedHeightBeforeLineNumber(e-(t?1:0));return i+s+this._paddingTop}getVerticalOffsetAfterLineNumber(e,t=!1){this._checkPendingChanges(),e=e|0;const i=this._lineHeight*e,s=this.getWhitespaceAccumulatedHeightBeforeLineNumber(e+(t?1:0));return i+s+this._paddingTop}getWhitespaceMinWidth(){if(this._checkPendingChanges(),this._minWidth===-1){let e=0;for(let t=0,i=this._arr.length;t<i;t++)e=Math.max(e,this._arr[t].minWidth);this._minWidth=e}return this._minWidth}isAfterLines(e){this._checkPendingChanges();const t=this.getLinesTotalHeight();return e>t}isInTopPadding(e){return this._paddingTop===0?!1:(this._checkPendingChanges(),e<this._paddingTop)}isInBottomPadding(e){if(this._paddingBottom===0)return!1;this._checkPendingChanges();const t=this.getLinesTotalHeight();return e>=t-this._paddingBottom}getLineNumberAtOrAfterVerticalOffset(e){if(this._checkPendingChanges(),e=e|0,e<0)return 1;const t=this._lineCount|0,i=this._lineHeight;let s=1,r=t;for(;s<r;){const o=(s+r)/2|0,a=this.getVerticalOffsetForLineNumber(o)|0;if(e>=a+i)s=o+1;else{if(e>=a)return o;r=o}}return s>t?t:s}getLinesViewportData(e,t){this._checkPendingChanges(),e=e|0,t=t|0;const i=this._lineHeight,s=this.getLineNumberAtOrAfterVerticalOffset(e)|0,r=this.getVerticalOffsetForLineNumber(s)|0;let o=this._lineCount|0,a=this.getFirstWhitespaceIndexAfterLineNumber(s)|0;const l=this.getWhitespacesCount()|0;let c,u;a===-1?(a=l,u=o+1,c=0):(u=this.getAfterLineNumberForWhitespaceIndex(a)|0,c=this.getHeightForWhitespaceIndex(a)|0);let h=r,d=h;const f=5e5;let g=0;r>=f&&(g=Math.floor(r/f)*f,g=Math.floor(g/i)*i,d-=g);const p=[],m=e+(t-e)/2;let _=-1;for(let S=s;S<=o;S++){if(_===-1){const E=h,L=h+i;(E<=m&&m<L||E>m)&&(_=S)}for(h+=i,p[S-s]=d,d+=i;u===S;)d+=c,h+=c,a++,a>=l?u=o+1:(u=this.getAfterLineNumberForWhitespaceIndex(a)|0,c=this.getHeightForWhitespaceIndex(a)|0);if(h>=t){o=S;break}}_===-1&&(_=o);const b=this.getVerticalOffsetForLineNumber(o)|0;let y=s,w=o;return y<w&&r<e&&y++,y<w&&b+i>t&&w--,{bigNumbersDelta:g,startLineNumber:s,endLineNumber:o,relativeVerticalOffset:p,centeredLineNumber:_,completelyVisibleStartLineNumber:y,completelyVisibleEndLineNumber:w}}getVerticalOffsetForWhitespaceIndex(e){this._checkPendingChanges(),e=e|0;const t=this.getAfterLineNumberForWhitespaceIndex(e);let i;t>=1?i=this._lineHeight*t:i=0;let s;return e>0?s=this.getWhitespacesAccumulatedHeight(e-1):s=0,i+s+this._paddingTop}getWhitespaceIndexAtOrAfterVerticallOffset(e){this._checkPendingChanges(),e=e|0;let t=0,i=this.getWhitespacesCount()-1;if(i<0)return-1;const s=this.getVerticalOffsetForWhitespaceIndex(i),r=this.getHeightForWhitespaceIndex(i);if(e>=s+r)return-1;for(;t<i;){const o=Math.floor((t+i)/2),a=this.getVerticalOffsetForWhitespaceIndex(o),l=this.getHeightForWhitespaceIndex(o);if(e>=a+l)t=o+1;else{if(e>=a)return o;i=o}}return t}getWhitespaceAtVerticalOffset(e){this._checkPendingChanges(),e=e|0;const t=this.getWhitespaceIndexAtOrAfterVerticallOffset(e);if(t<0||t>=this.getWhitespacesCount())return null;const i=this.getVerticalOffsetForWhitespaceIndex(t);if(i>e)return null;const s=this.getHeightForWhitespaceIndex(t),r=this.getIdForWhitespaceIndex(t),o=this.getAfterLineNumberForWhitespaceIndex(t);return{id:r,afterLineNumber:o,verticalOffset:i,height:s}}getWhitespaceViewportData(e,t){this._checkPendingChanges(),e=e|0,t=t|0;const i=this.getWhitespaceIndexAtOrAfterVerticallOffset(e),s=this.getWhitespacesCount()-1;if(i<0)return[];const r=[];for(let o=i;o<=s;o++){const a=this.getVerticalOffsetForWhitespaceIndex(o),l=this.getHeightForWhitespaceIndex(o);if(a>=t)break;r.push({id:this.getIdForWhitespaceIndex(o),afterLineNumber:this.getAfterLineNumberForWhitespaceIndex(o),verticalOffset:a,height:l})}return r}getWhitespaces(){return this._checkPendingChanges(),this._arr.slice(0)}getWhitespacesCount(){return this._checkPendingChanges(),this._arr.length}getIdForWhitespaceIndex(e){return this._checkPendingChanges(),e=e|0,this._arr[e].id}getAfterLineNumberForWhitespaceIndex(e){return this._checkPendingChanges(),e=e|0,this._arr[e].afterLineNumber}getHeightForWhitespaceIndex(e){return this._checkPendingChanges(),e=e|0,this._arr[e].height}};Sme.INSTANCE_COUNT=0;const tKe=125;class CS{constructor(e,t,i,s){e=e|0,t=t|0,i=i|0,s=s|0,e<0&&(e=0),t<0&&(t=0),i<0&&(i=0),s<0&&(s=0),this.width=e,this.contentWidth=t,this.scrollWidth=Math.max(e,t),this.height=i,this.contentHeight=s,this.scrollHeight=Math.max(i,s)}equals(e){return this.width===e.width&&this.contentWidth===e.contentWidth&&this.height===e.height&&this.contentHeight===e.contentHeight}}class iKe extends pe{constructor(e,t){super(),this._onDidContentSizeChange=this._register(new ue),this.onDidContentSizeChange=this._onDidContentSizeChange.event,this._dimensions=new CS(0,0,0,0),this._scrollable=this._register(new PC({forceIntegerValues:!0,smoothScrollDuration:e,scheduleAtNextAnimationFrame:t})),this.onDidScroll=this._scrollable.onScroll}getScrollable(){return this._scrollable}setSmoothScrollDuration(e){this._scrollable.setSmoothScrollDuration(e)}validateScrollPosition(e){return this._scrollable.validateScrollPosition(e)}getScrollDimensions(){return this._dimensions}setScrollDimensions(e){if(this._dimensions.equals(e))return;const t=this._dimensions;this._dimensions=e,this._scrollable.setScrollDimensions({width:e.width,scrollWidth:e.scrollWidth,height:e.height,scrollHeight:e.scrollHeight},!0);const i=t.contentWidth!==e.contentWidth,s=t.contentHeight!==e.contentHeight;(i||s)&&this._onDidContentSizeChange.fire(new Bq(t.contentWidth,t.contentHeight,e.contentWidth,e.contentHeight))}getFutureScrollPosition(){return this._scrollable.getFutureScrollPosition()}getCurrentScrollPosition(){return this._scrollable.getCurrentScrollPosition()}setScrollPositionNow(e){this._scrollable.setScrollPositionNow(e)}setScrollPositionSmooth(e){this._scrollable.setScrollPositionSmooth(e)}hasPendingScrollAnimation(){return this._scrollable.hasPendingScrollAnimation()}}class nKe extends pe{constructor(e,t,i){super(),this._configuration=e;const s=this._configuration.options,r=s.get(143),o=s.get(83);this._linesLayout=new Sme(t,s.get(66),o.top,o.bottom),this._maxLineWidth=0,this._overlayWidgetsMinWidth=0,this._scrollable=this._register(new iKe(0,i)),this._configureSmoothScrollDuration(),this._scrollable.setScrollDimensions(new CS(r.contentWidth,0,r.height,0)),this.onDidScroll=this._scrollable.onDidScroll,this.onDidContentSizeChange=this._scrollable.onDidContentSizeChange,this._updateHeight()}dispose(){super.dispose()}getScrollable(){return this._scrollable.getScrollable()}onHeightMaybeChanged(){this._updateHeight()}_configureSmoothScrollDuration(){this._scrollable.setSmoothScrollDuration(this._configuration.options.get(113)?tKe:0)}onConfigurationChanged(e){const t=this._configuration.options;if(e.hasChanged(66)&&this._linesLayout.setLineHeight(t.get(66)),e.hasChanged(83)){const i=t.get(83);this._linesLayout.setPadding(i.top,i.bottom)}if(e.hasChanged(143)){const i=t.get(143),s=i.contentWidth,r=i.height,o=this._scrollable.getScrollDimensions(),a=o.contentWidth;this._scrollable.setScrollDimensions(new CS(s,o.contentWidth,r,this._getContentHeight(s,r,a)))}else this._updateHeight();e.hasChanged(113)&&this._configureSmoothScrollDuration()}onFlushed(e){this._linesLayout.onFlushed(e)}onLinesDeleted(e,t){this._linesLayout.onLinesDeleted(e,t)}onLinesInserted(e,t){this._linesLayout.onLinesInserted(e,t)}_getHorizontalScrollbarHeight(e,t){const s=this._configuration.options.get(102);return s.horizontal===2||e>=t?0:s.horizontalScrollbarSize}_getContentHeight(e,t,i){const s=this._configuration.options;let r=this._linesLayout.getLinesTotalHeight();return s.get(104)?r+=Math.max(0,t-s.get(66)-s.get(83).bottom):s.get(102).ignoreHorizontalScrollbarInContentHeight||(r+=this._getHorizontalScrollbarHeight(e,i)),r}_updateHeight(){const e=this._scrollable.getScrollDimensions(),t=e.width,i=e.height,s=e.contentWidth;this._scrollable.setScrollDimensions(new CS(t,e.contentWidth,i,this._getContentHeight(t,i,s)))}getCurrentViewport(){const e=this._scrollable.getScrollDimensions(),t=this._scrollable.getCurrentScrollPosition();return new Cee(t.scrollTop,t.scrollLeft,e.width,e.height)}getFutureViewport(){const e=this._scrollable.getScrollDimensions(),t=this._scrollable.getFutureScrollPosition();return new Cee(t.scrollTop,t.scrollLeft,e.width,e.height)}_computeContentWidth(){const e=this._configuration.options,t=this._maxLineWidth,i=e.get(144),s=e.get(50),r=e.get(143);if(i.isViewportWrapping){const o=e.get(72);return t>r.contentWidth+s.typicalHalfwidthCharacterWidth&&o.enabled&&o.side==="right"?t+r.verticalScrollbarWidth:t}else{const o=e.get(103)*s.typicalHalfwidthCharacterWidth,a=this._linesLayout.getWhitespaceMinWidth();return Math.max(t+o+r.verticalScrollbarWidth,a,this._overlayWidgetsMinWidth)}}setMaxLineWidth(e){this._maxLineWidth=e,this._updateContentWidth()}setOverlayWidgetsMinWidth(e){this._overlayWidgetsMinWidth=e,this._updateContentWidth()}_updateContentWidth(){const e=this._scrollable.getScrollDimensions();this._scrollable.setScrollDimensions(new CS(e.width,this._computeContentWidth(),e.height,e.contentHeight)),this._updateHeight()}saveState(){const e=this._scrollable.getFutureScrollPosition(),t=e.scrollTop,i=this._linesLayout.getLineNumberAtOrAfterVerticalOffset(t),s=this._linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(i);return{scrollTop:t,scrollTopWithoutViewZones:t-s,scrollLeft:e.scrollLeft}}changeWhitespace(e){const t=this._linesLayout.changeWhitespace(e);return t&&this.onHeightMaybeChanged(),t}getVerticalOffsetForLineNumber(e,t=!1){return this._linesLayout.getVerticalOffsetForLineNumber(e,t)}getVerticalOffsetAfterLineNumber(e,t=!1){return this._linesLayout.getVerticalOffsetAfterLineNumber(e,t)}isAfterLines(e){return this._linesLayout.isAfterLines(e)}isInTopPadding(e){return this._linesLayout.isInTopPadding(e)}isInBottomPadding(e){return this._linesLayout.isInBottomPadding(e)}getLineNumberAtVerticalOffset(e){return this._linesLayout.getLineNumberAtOrAfterVerticalOffset(e)}getWhitespaceAtVerticalOffset(e){return this._linesLayout.getWhitespaceAtVerticalOffset(e)}getLinesViewportData(){const e=this.getCurrentViewport();return this._linesLayout.getLinesViewportData(e.top,e.top+e.height)}getLinesViewportDataAtScrollTop(e){const t=this._scrollable.getScrollDimensions();return e+t.height>t.scrollHeight&&(e=t.scrollHeight-t.height),e<0&&(e=0),this._linesLayout.getLinesViewportData(e,e+t.height)}getWhitespaceViewportData(){const e=this.getCurrentViewport();return this._linesLayout.getWhitespaceViewportData(e.top,e.top+e.height)}getWhitespaces(){return this._linesLayout.getWhitespaces()}getContentWidth(){return this._scrollable.getScrollDimensions().contentWidth}getScrollWidth(){return this._scrollable.getScrollDimensions().scrollWidth}getContentHeight(){return this._scrollable.getScrollDimensions().contentHeight}getScrollHeight(){return this._scrollable.getScrollDimensions().scrollHeight}getCurrentScrollLeft(){return this._scrollable.getCurrentScrollPosition().scrollLeft}getCurrentScrollTop(){return this._scrollable.getCurrentScrollPosition().scrollTop}validateScrollPosition(e){return this._scrollable.validateScrollPosition(e)}setScrollPosition(e,t){t===1?this._scrollable.setScrollPositionNow(e):this._scrollable.setScrollPositionSmooth(e)}hasPendingScrollAnimation(){return this._scrollable.hasPendingScrollAnimation()}deltaScrollNow(e,t){const i=this._scrollable.getCurrentScrollPosition();this._scrollable.setScrollPositionNow({scrollLeft:i.scrollLeft+e,scrollTop:i.scrollTop+t})}}class sKe{constructor(e,t,i,s,r){this.editorId=e,this.model=t,this.configuration=i,this._linesCollection=s,this._coordinatesConverter=r,this._decorationsCache=Object.create(null),this._cachedModelDecorationsResolver=null,this._cachedModelDecorationsResolverViewRange=null}_clearCachedModelDecorationsResolver(){this._cachedModelDecorationsResolver=null,this._cachedModelDecorationsResolverViewRange=null}dispose(){this._decorationsCache=Object.create(null),this._clearCachedModelDecorationsResolver()}reset(){this._decorationsCache=Object.create(null),this._clearCachedModelDecorationsResolver()}onModelDecorationsChanged(){this._decorationsCache=Object.create(null),this._clearCachedModelDecorationsResolver()}onLineMappingChanged(){this._decorationsCache=Object.create(null),this._clearCachedModelDecorationsResolver()}_getOrCreateViewModelDecoration(e){const t=e.id;let i=this._decorationsCache[t];if(!i){const s=e.range,r=e.options;let o;if(r.isWholeLine){const a=this._coordinatesConverter.convertModelPositionToViewPosition(new he(s.startLineNumber,1),0,!1,!0),l=this._coordinatesConverter.convertModelPositionToViewPosition(new he(s.endLineNumber,this.model.getLineMaxColumn(s.endLineNumber)),1);o=new M(a.lineNumber,a.column,l.lineNumber,l.column)}else o=this._coordinatesConverter.convertModelRangeToViewRange(s,1);i=new Qpe(o,r),this._decorationsCache[t]=i}return i}getMinimapDecorationsInRange(e){return this._getDecorationsInRange(e,!0,!1).decorations}getDecorationsViewportData(e){let t=this._cachedModelDecorationsResolver!==null;return t=t&&e.equalsRange(this._cachedModelDecorationsResolverViewRange),t||(this._cachedModelDecorationsResolver=this._getDecorationsInRange(e,!1,!1),this._cachedModelDecorationsResolverViewRange=e),this._cachedModelDecorationsResolver}getInlineDecorationsOnLine(e,t=!1,i=!1){const s=new M(e,this._linesCollection.getViewLineMinColumn(e),e,this._linesCollection.getViewLineMaxColumn(e));return this._getDecorationsInRange(s,t,i).inlineDecorations[0]}_getDecorationsInRange(e,t,i){const s=this._linesCollection.getDecorationsInRange(e,this.editorId,GA(this.configuration.options),t,i),r=e.startLineNumber,o=e.endLineNumber,a=[];let l=0;const c=[];for(let u=r;u<=o;u++)c[u-r]=[];for(let u=0,h=s.length;u<h;u++){const d=s[u],f=d.options;if(!Hq(this.model,d))continue;const g=this._getOrCreateViewModelDecoration(d),p=g.range;if(a[l++]=g,f.inlineClassName){const m=new ik(p,f.inlineClassName,f.inlineClassNameAffectsLetterSpacing?3:0),_=Math.max(r,p.startLineNumber),b=Math.min(o,p.endLineNumber);for(let y=_;y<=b;y++)c[y-r].push(m)}if(f.beforeContentClassName&&r<=p.startLineNumber&&p.startLineNumber<=o){const m=new ik(new M(p.startLineNumber,p.startColumn,p.startLineNumber,p.startColumn),f.beforeContentClassName,1);c[p.startLineNumber-r].push(m)}if(f.afterContentClassName&&r<=p.endLineNumber&&p.endLineNumber<=o){const m=new ik(new M(p.endLineNumber,p.endColumn,p.endLineNumber,p.endColumn),f.afterContentClassName,2);c[p.endLineNumber-r].push(m)}}return{decorations:a,inlineDecorations:c}}}function Hq(n,e){return!(e.options.hideInCommentTokens&&$q(n,e)||e.options.hideInStringTokens&&zq(n,e))}function $q(n,e){return kme(n,e.range,t=>t===1)}function zq(n,e){return kme(n,e.range,t=>t===2)}function kme(n,e,t){for(let i=e.startLineNumber;i<=e.endLineNumber;i++){const s=n.tokenization.getLineTokens(i),r=i===e.startLineNumber,o=i===e.endLineNumber;let a=r?s.findTokenIndexAtOffset(e.startColumn-1):0;for(;a<s.getCount()&&!(o&&s.getStartOffset(a)>e.endColumn-1);){if(!t(s.getStandardTokenType(a)))return!1;a++}}return!0}function e3(n,e){return n===null?e?hP.INSTANCE:dP.INSTANCE:new rKe(n,e)}class rKe{constructor(e,t){this._projectionData=e,this._isVisible=t}isVisible(){return this._isVisible}setVisible(e){return this._isVisible=e,this}getProjectionData(){return this._projectionData}getViewLineCount(){return this._isVisible?this._projectionData.getOutputLineCount():0}getViewLineContent(e,t,i){this._assertVisible();const s=i>0?this._projectionData.breakOffsets[i-1]:0,r=this._projectionData.breakOffsets[i];let o;if(this._projectionData.injectionOffsets!==null){const a=this._projectionData.injectionOffsets.map((c,u)=>new Nu(0,0,c+1,this._projectionData.injectionOptions[u],0));o=Nu.applyInjectedText(e.getLineContent(t),a).substring(s,r)}else o=e.getValueInRange({startLineNumber:t,startColumn:s+1,endLineNumber:t,endColumn:r+1});return i>0&&(o=rte(this._projectionData.wrappedTextIndentLength)+o),o}getViewLineLength(e,t,i){return this._assertVisible(),this._projectionData.getLineLength(i)}getViewLineMinColumn(e,t,i){return this._assertVisible(),this._projectionData.getMinOutputOffset(i)+1}getViewLineMaxColumn(e,t,i){return this._assertVisible(),this._projectionData.getMaxOutputOffset(i)+1}getViewLineData(e,t,i){const s=new Array;return this.getViewLinesData(e,t,i,1,0,[!0],s),s[0]}getViewLinesData(e,t,i,s,r,o,a){this._assertVisible();const l=this._projectionData,c=l.injectionOffsets,u=l.injectionOptions;let h=null;if(c){h=[];let f=0,g=0;for(let p=0;p<l.getOutputLineCount();p++){const m=new Array;h[p]=m;const _=p>0?l.breakOffsets[p-1]:0,b=l.breakOffsets[p];for(;g<c.length;){const y=u[g].content.length,w=c[g]+f,S=w+y;if(w>b)break;if(_<S){const E=u[g];if(E.inlineClassName){const L=p>0?l.wrappedTextIndentLength:0,k=L+Math.max(w-_,0),x=L+Math.min(S-_,b-_);k!==x&&m.push(new _Ue(k,x,E.inlineClassName,E.inlineClassNameAffectsLetterSpacing))}}if(S<=b)f+=y,g++;else break}}}let d;c?d=e.tokenization.getLineTokens(t).withInserted(c.map((f,g)=>({offset:f,text:u[g].content,tokenMetadata:Ps.defaultTokenMetadata}))):d=e.tokenization.getLineTokens(t);for(let f=i;f<i+s;f++){const g=r+f-i;if(!o[g]){a[g]=null;continue}a[g]=this._getViewLineData(d,h?h[f]:null,f)}}_getViewLineData(e,t,i){this._assertVisible();const s=this._projectionData,r=i>0?s.wrappedTextIndentLength:0,o=i>0?s.breakOffsets[i-1]:0,a=s.breakOffsets[i],l=e.sliceAndInflate(o,a,r);let c=l.getLineContent();i>0&&(c=rte(s.wrappedTextIndentLength)+c);const u=this._projectionData.getMinOutputOffset(i)+1,h=c.length+1,d=i+1<this.getViewLineCount(),f=i===0?0:s.breakOffsetsVisibleColumn[i-1];return new wq(c,d,u,h,f,l,t)}getModelColumnOfViewPosition(e,t){return this._assertVisible(),this._projectionData.translateToInputOffset(e,t-1)+1}getViewPositionOfModelPosition(e,t,i=2){return this._assertVisible(),this._projectionData.translateToOutputPosition(t-1,i).toPosition(e)}getViewLineNumberOfModelPosition(e,t){this._assertVisible();const i=this._projectionData.translateToOutputPosition(t-1);return e+i.outputLineIndex}normalizePosition(e,t,i){const s=t.lineNumber-e;return this._projectionData.normalizeOutputPosition(e,t.column-1,i).toPosition(s)}getInjectedTextAt(e,t){return this._projectionData.getInjectedText(e,t-1)}_assertVisible(){if(!this._isVisible)throw new Error("Not supported")}}class hP{constructor(){}isVisible(){return!0}setVisible(e){return e?this:dP.INSTANCE}getProjectionData(){return null}getViewLineCount(){return 1}getViewLineContent(e,t,i){return e.getLineContent(t)}getViewLineLength(e,t,i){return e.getLineLength(t)}getViewLineMinColumn(e,t,i){return e.getLineMinColumn(t)}getViewLineMaxColumn(e,t,i){return e.getLineMaxColumn(t)}getViewLineData(e,t,i){const s=e.tokenization.getLineTokens(t),r=s.getLineContent();return new wq(r,!1,1,r.length+1,0,s.inflate(),null)}getViewLinesData(e,t,i,s,r,o,a){if(!o[r]){a[r]=null;return}a[r]=this.getViewLineData(e,t,0)}getModelColumnOfViewPosition(e,t){return t}getViewPositionOfModelPosition(e,t){return new he(e,t)}getViewLineNumberOfModelPosition(e,t){return e}normalizePosition(e,t,i){return t}getInjectedTextAt(e,t){return null}}hP.INSTANCE=new hP;class dP{constructor(){}isVisible(){return!1}setVisible(e){return e?hP.INSTANCE:this}getProjectionData(){return null}getViewLineCount(){return 0}getViewLineContent(e,t,i){throw new Error("Not supported")}getViewLineLength(e,t,i){throw new Error("Not supported")}getViewLineMinColumn(e,t,i){throw new Error("Not supported")}getViewLineMaxColumn(e,t,i){throw new Error("Not supported")}getViewLineData(e,t,i){throw new Error("Not supported")}getViewLinesData(e,t,i,s,r,o,a){throw new Error("Not supported")}getModelColumnOfViewPosition(e,t){throw new Error("Not supported")}getViewPositionOfModelPosition(e,t){throw new Error("Not supported")}getViewLineNumberOfModelPosition(e,t){throw new Error("Not supported")}normalizePosition(e,t,i){throw new Error("Not supported")}getInjectedTextAt(e,t){throw new Error("Not supported")}}dP.INSTANCE=new dP;const t3=[""];function rte(n){if(n>=t3.length)for(let e=1;e<=n;e++)t3[e]=oKe(e);return t3[n]}function oKe(n){return new Array(n+1).join(" ")}class aKe{constructor(e){this.values=e,this.prefixSum=new Uint32Array(e.length),this.prefixSumValidIndex=new Int32Array(1),this.prefixSumValidIndex[0]=-1}insertValues(e,t){e=Jv(e);const i=this.values,s=this.prefixSum,r=t.length;return r===0?!1:(this.values=new Uint32Array(i.length+r),this.values.set(i.subarray(0,e),0),this.values.set(i.subarray(e),e+r),this.values.set(t,e),e-1<this.prefixSumValidIndex[0]&&(this.prefixSumValidIndex[0]=e-1),this.prefixSum=new Uint32Array(this.values.length),this.prefixSumValidIndex[0]>=0&&this.prefixSum.set(s.subarray(0,this.prefixSumValidIndex[0]+1)),!0)}setValue(e,t){return e=Jv(e),t=Jv(t),this.values[e]===t?!1:(this.values[e]=t,e-1<this.prefixSumValidIndex[0]&&(this.prefixSumValidIndex[0]=e-1),!0)}removeValues(e,t){e=Jv(e),t=Jv(t);const i=this.values,s=this.prefixSum;if(e>=i.length)return!1;const r=i.length-e;return t>=r&&(t=r),t===0?!1:(this.values=new Uint32Array(i.length-t),this.values.set(i.subarray(0,e),0),this.values.set(i.subarray(e+t),e),this.prefixSum=new Uint32Array(this.values.length),e-1<this.prefixSumValidIndex[0]&&(this.prefixSumValidIndex[0]=e-1),this.prefixSumValidIndex[0]>=0&&this.prefixSum.set(s.subarray(0,this.prefixSumValidIndex[0]+1)),!0)}getTotalSum(){return this.values.length===0?0:this._getPrefixSum(this.values.length-1)}getPrefixSum(e){return e<0?0:(e=Jv(e),this._getPrefixSum(e))}_getPrefixSum(e){if(e<=this.prefixSumValidIndex[0])return this.prefixSum[e];let t=this.prefixSumValidIndex[0]+1;t===0&&(this.prefixSum[0]=this.values[0],t++),e>=this.values.length&&(e=this.values.length-1);for(let i=t;i<=e;i++)this.prefixSum[i]=this.prefixSum[i-1]+this.values[i];return this.prefixSumValidIndex[0]=Math.max(this.prefixSumValidIndex[0],e),this.prefixSum[e]}getIndexOf(e){e=Math.floor(e),this.getTotalSum();let t=0,i=this.values.length-1,s=0,r=0,o=0;for(;t<=i;)if(s=t+(i-t)/2|0,r=this.prefixSum[s],o=r-this.values[s],e<o)i=s-1;else if(e>=r)t=s+1;else break;return new Lme(s,e-o)}}class lKe{constructor(e){this._values=e,this._isValid=!1,this._validEndIndex=-1,this._prefixSum=[],this._indexBySum=[]}getTotalSum(){return this._ensureValid(),this._indexBySum.length}getPrefixSum(e){return this._ensureValid(),e===0?0:this._prefixSum[e-1]}getIndexOf(e){this._ensureValid();const t=this._indexBySum[e],i=t>0?this._prefixSum[t-1]:0;return new Lme(t,e-i)}removeValues(e,t){this._values.splice(e,t),this._invalidate(e)}insertValues(e,t){this._values=EO(this._values,e,t),this._invalidate(e)}_invalidate(e){this._isValid=!1,this._validEndIndex=Math.min(this._validEndIndex,e-1)}_ensureValid(){if(!this._isValid){for(let e=this._validEndIndex+1,t=this._values.length;e<t;e++){const i=this._values[e],s=e>0?this._prefixSum[e-1]:0;this._prefixSum[e]=s+i;for(let r=0;r<i;r++)this._indexBySum[s+r]=e}this._prefixSum.length=this._values.length,this._indexBySum.length=this._prefixSum[this._prefixSum.length-1],this._isValid=!0,this._validEndIndex=this._values.length-1}}setValue(e,t){this._values[e]!==t&&(this._values[e]=t,this._invalidate(e))}}class Lme{constructor(e,t){this.index=e,this.remainder=t,this._prefixSumIndexOfResultBrand=void 0,this.index=e,this.remainder=t}}class cKe{constructor(e,t,i,s,r,o,a,l,c,u){this._editorId=e,this.model=t,this._validModelVersionId=-1,this._domLineBreaksComputerFactory=i,this._monospaceLineBreaksComputerFactory=s,this.fontInfo=r,this.tabSize=o,this.wrappingStrategy=a,this.wrappingColumn=l,this.wrappingIndent=c,this.wordBreak=u,this._constructLines(!0,null)}dispose(){this.hiddenAreasDecorationIds=this.model.deltaDecorations(this.hiddenAreasDecorationIds,[])}createCoordinatesConverter(){return new hKe(this)}_constructLines(e,t){this.modelLineProjections=[],e&&(this.hiddenAreasDecorationIds=this.model.deltaDecorations(this.hiddenAreasDecorationIds,[]));const i=this.model.getLinesContent(),s=this.model.getInjectedTextDecorations(this._editorId),r=i.length,o=this.createLineBreaksComputer(),a=new Zf(Nu.fromDecorations(s));for(let p=0;p<r;p++){const m=a.takeWhile(_=>_.lineNumber===p+1);o.addRequest(i[p],m,t?t[p]:null)}const l=o.finalize(),c=[],u=this.hiddenAreasDecorationIds.map(p=>this.model.getDecorationRange(p)).sort(M.compareRangesUsingStarts);let h=1,d=0,f=-1,g=f+1<u.length?d+1:r+2;for(let p=0;p<r;p++){const m=p+1;m===g&&(f++,h=u[f].startLineNumber,d=u[f].endLineNumber,g=f+1<u.length?d+1:r+2);const _=m>=h&&m<=d,b=e3(l[p],!_);c[p]=b.getViewLineCount(),this.modelLineProjections[p]=b}this._validModelVersionId=this.model.getVersionId(),this.projectedModelLineLineCounts=new lKe(c)}getHiddenAreas(){return this.hiddenAreasDecorationIds.map(e=>this.model.getDecorationRange(e))}setHiddenAreas(e){const t=e.map(d=>this.model.validateRange(d)),i=uKe(t),s=this.hiddenAreasDecorationIds.map(d=>this.model.getDecorationRange(d)).sort(M.compareRangesUsingStarts);if(i.length===s.length){let d=!1;for(let f=0;f<i.length;f++)if(!i[f].equalsRange(s[f])){d=!0;break}if(!d)return!1}const r=i.map(d=>({range:d,options:yt.EMPTY}));this.hiddenAreasDecorationIds=this.model.deltaDecorations(this.hiddenAreasDecorationIds,r);const o=i;let a=1,l=0,c=-1,u=c+1<o.length?l+1:this.modelLineProjections.length+2,h=!1;for(let d=0;d<this.modelLineProjections.length;d++){const f=d+1;f===u&&(c++,a=o[c].startLineNumber,l=o[c].endLineNumber,u=c+1<o.length?l+1:this.modelLineProjections.length+2);let g=!1;if(f>=a&&f<=l?this.modelLineProjections[d].isVisible()&&(this.modelLineProjections[d]=this.modelLineProjections[d].setVisible(!1),g=!0):(h=!0,this.modelLineProjections[d].isVisible()||(this.modelLineProjections[d]=this.modelLineProjections[d].setVisible(!0),g=!0)),g){const p=this.modelLineProjections[d].getViewLineCount();this.projectedModelLineLineCounts.setValue(d,p)}}return h||this.setHiddenAreas([]),!0}modelPositionIsVisible(e,t){return e<1||e>this.modelLineProjections.length?!1:this.modelLineProjections[e-1].isVisible()}getModelLineViewLineCount(e){return e<1||e>this.modelLineProjections.length?1:this.modelLineProjections[e-1].getViewLineCount()}setTabSize(e){return this.tabSize===e?!1:(this.tabSize=e,this._constructLines(!1,null),!0)}setWrappingSettings(e,t,i,s,r){const o=this.fontInfo.equals(e),a=this.wrappingStrategy===t,l=this.wrappingColumn===i,c=this.wrappingIndent===s,u=this.wordBreak===r;if(o&&a&&l&&c&&u)return!1;const h=o&&a&&!l&&c&&u;this.fontInfo=e,this.wrappingStrategy=t,this.wrappingColumn=i,this.wrappingIndent=s,this.wordBreak=r;let d=null;if(h){d=[];for(let f=0,g=this.modelLineProjections.length;f<g;f++)d[f]=this.modelLineProjections[f].getProjectionData()}return this._constructLines(!1,d),!0}createLineBreaksComputer(){return(this.wrappingStrategy==="advanced"?this._domLineBreaksComputerFactory:this._monospaceLineBreaksComputerFactory).createLineBreaksComputer(this.fontInfo,this.tabSize,this.wrappingColumn,this.wrappingIndent,this.wordBreak)}onModelFlushed(){this._constructLines(!0,null)}onModelLinesDeleted(e,t,i){if(!e||e<=this._validModelVersionId)return null;const s=t===1?1:this.projectedModelLineLineCounts.getPrefixSum(t-1)+1,r=this.projectedModelLineLineCounts.getPrefixSum(i);return this.modelLineProjections.splice(t-1,i-t+1),this.projectedModelLineLineCounts.removeValues(t-1,i-t+1),new O9(s,r)}onModelLinesInserted(e,t,i,s){if(!e||e<=this._validModelVersionId)return null;const r=t>2&&!this.modelLineProjections[t-2].isVisible(),o=t===1?1:this.projectedModelLineLineCounts.getPrefixSum(t-1)+1;let a=0;const l=[],c=[];for(let u=0,h=s.length;u<h;u++){const d=e3(s[u],!r);l.push(d);const f=d.getViewLineCount();a+=f,c[u]=f}return this.modelLineProjections=this.modelLineProjections.slice(0,t-1).concat(l).concat(this.modelLineProjections.slice(t-1)),this.projectedModelLineLineCounts.insertValues(t-1,c),new F9(o,o+a-1)}onModelLineChanged(e,t,i){if(e!==null&&e<=this._validModelVersionId)return[!1,null,null,null];const s=t-1,r=this.modelLineProjections[s].getViewLineCount(),o=this.modelLineProjections[s].isVisible(),a=e3(i,o);this.modelLineProjections[s]=a;const l=this.modelLineProjections[s].getViewLineCount();let c=!1,u=0,h=-1,d=0,f=-1,g=0,p=-1;r>l?(u=this.projectedModelLineLineCounts.getPrefixSum(t-1)+1,h=u+l-1,g=h+1,p=g+(r-l)-1,c=!0):r<l?(u=this.projectedModelLineLineCounts.getPrefixSum(t-1)+1,h=u+r-1,d=h+1,f=d+(l-r)-1,c=!0):(u=this.projectedModelLineLineCounts.getPrefixSum(t-1)+1,h=u+l-1),this.projectedModelLineLineCounts.setValue(s,l);const m=u<=h?new wme(u,h-u+1):null,_=d<=f?new F9(d,f):null,b=g<=p?new O9(g,p):null;return[c,m,_,b]}acceptVersionId(e){this._validModelVersionId=e,this.modelLineProjections.length===1&&!this.modelLineProjections[0].isVisible()&&this.setHiddenAreas([])}getViewLineCount(){return this.projectedModelLineLineCounts.getTotalSum()}_toValidViewLineNumber(e){if(e<1)return 1;const t=this.getViewLineCount();return e>t?t:e|0}getActiveIndentGuide(e,t,i){e=this._toValidViewLineNumber(e),t=this._toValidViewLineNumber(t),i=this._toValidViewLineNumber(i);const s=this.convertViewPositionToModelPosition(e,this.getViewLineMinColumn(e)),r=this.convertViewPositionToModelPosition(t,this.getViewLineMinColumn(t)),o=this.convertViewPositionToModelPosition(i,this.getViewLineMinColumn(i)),a=this.model.guides.getActiveIndentGuide(s.lineNumber,r.lineNumber,o.lineNumber),l=this.convertModelPositionToViewPosition(a.startLineNumber,1),c=this.convertModelPositionToViewPosition(a.endLineNumber,this.model.getLineMaxColumn(a.endLineNumber));return{startLineNumber:l.lineNumber,endLineNumber:c.lineNumber,indent:a.indent}}getViewLineInfo(e){e=this._toValidViewLineNumber(e);const t=this.projectedModelLineLineCounts.getIndexOf(e-1),i=t.index,s=t.remainder;return new ote(i+1,s)}getMinColumnOfViewLine(e){return this.modelLineProjections[e.modelLineNumber-1].getViewLineMinColumn(this.model,e.modelLineNumber,e.modelLineWrappedLineIdx)}getMaxColumnOfViewLine(e){return this.modelLineProjections[e.modelLineNumber-1].getViewLineMaxColumn(this.model,e.modelLineNumber,e.modelLineWrappedLineIdx)}getModelStartPositionOfViewLine(e){const t=this.modelLineProjections[e.modelLineNumber-1],i=t.getViewLineMinColumn(this.model,e.modelLineNumber,e.modelLineWrappedLineIdx),s=t.getModelColumnOfViewPosition(e.modelLineWrappedLineIdx,i);return new he(e.modelLineNumber,s)}getModelEndPositionOfViewLine(e){const t=this.modelLineProjections[e.modelLineNumber-1],i=t.getViewLineMaxColumn(this.model,e.modelLineNumber,e.modelLineWrappedLineIdx),s=t.getModelColumnOfViewPosition(e.modelLineWrappedLineIdx,i);return new he(e.modelLineNumber,s)}getViewLineInfosGroupedByModelRanges(e,t){const i=this.getViewLineInfo(e),s=this.getViewLineInfo(t),r=new Array;let o=this.getModelStartPositionOfViewLine(i),a=new Array;for(let l=i.modelLineNumber;l<=s.modelLineNumber;l++){const c=this.modelLineProjections[l-1];if(c.isVisible()){const u=l===i.modelLineNumber?i.modelLineWrappedLineIdx:0,h=l===s.modelLineNumber?s.modelLineWrappedLineIdx+1:c.getViewLineCount();for(let d=u;d<h;d++)a.push(new ote(l,d))}if(!c.isVisible()&&o){const u=new he(l-1,this.model.getLineMaxColumn(l-1)+1),h=M.fromPositions(o,u);r.push(new ate(h,a)),a=[],o=null}else c.isVisible()&&!o&&(o=new he(l,1))}if(o){const l=M.fromPositions(o,this.getModelEndPositionOfViewLine(s));r.push(new ate(l,a))}return r}getViewLinesBracketGuides(e,t,i,s){const r=i?this.convertViewPositionToModelPosition(i.lineNumber,i.column):null,o=[];for(const a of this.getViewLineInfosGroupedByModelRanges(e,t)){const l=a.modelRange.startLineNumber,c=this.model.guides.getLinesBracketGuides(l,a.modelRange.endLineNumber,r,s);for(const u of a.viewLines){const d=c[u.modelLineNumber-l].map(f=>{if(f.forWrappedLinesAfterColumn!==-1&&this.modelLineProjections[u.modelLineNumber-1].getViewPositionOfModelPosition(0,f.forWrappedLinesAfterColumn).lineNumber>=u.modelLineWrappedLineIdx||f.forWrappedLinesBeforeOrAtColumn!==-1&&this.modelLineProjections[u.modelLineNumber-1].getViewPositionOfModelPosition(0,f.forWrappedLinesBeforeOrAtColumn).lineNumber<u.modelLineWrappedLineIdx)return;if(!f.horizontalLine)return f;let g=-1;if(f.column!==-1){const _=this.modelLineProjections[u.modelLineNumber-1].getViewPositionOfModelPosition(0,f.column);if(_.lineNumber===u.modelLineWrappedLineIdx)g=_.column;else if(_.lineNumber<u.modelLineWrappedLineIdx)g=this.getMinColumnOfViewLine(u);else if(_.lineNumber>u.modelLineWrappedLineIdx)return}const p=this.convertModelPositionToViewPosition(u.modelLineNumber,f.horizontalLine.endColumn),m=this.modelLineProjections[u.modelLineNumber-1].getViewPositionOfModelPosition(0,f.horizontalLine.endColumn);return m.lineNumber===u.modelLineWrappedLineIdx?new H1(f.visibleColumn,g,f.className,new tk(f.horizontalLine.top,p.column),-1,-1):m.lineNumber<u.modelLineWrappedLineIdx||f.visibleColumn!==-1?void 0:new H1(f.visibleColumn,g,f.className,new tk(f.horizontalLine.top,this.getMaxColumnOfViewLine(u)),-1,-1)});o.push(d.filter(f=>!!f))}}return o}getViewLinesIndentGuides(e,t){e=this._toValidViewLineNumber(e),t=this._toValidViewLineNumber(t);const i=this.convertViewPositionToModelPosition(e,this.getViewLineMinColumn(e)),s=this.convertViewPositionToModelPosition(t,this.getViewLineMaxColumn(t));let r=[];const o=[],a=[],l=i.lineNumber-1,c=s.lineNumber-1;let u=null;for(let g=l;g<=c;g++){const p=this.modelLineProjections[g];if(p.isVisible()){const m=p.getViewLineNumberOfModelPosition(0,g===l?i.column:1),_=p.getViewLineNumberOfModelPosition(0,this.model.getLineMaxColumn(g+1)),b=_-m+1;let y=0;b>1&&p.getViewLineMinColumn(this.model,g+1,_)===1&&(y=m===0?1:2),o.push(b),a.push(y),u===null&&(u=new he(g+1,0))}else u!==null&&(r=r.concat(this.model.guides.getLinesIndentGuides(u.lineNumber,g)),u=null)}u!==null&&(r=r.concat(this.model.guides.getLinesIndentGuides(u.lineNumber,s.lineNumber)),u=null);const h=t-e+1,d=new Array(h);let f=0;for(let g=0,p=r.length;g<p;g++){let m=r[g];const _=Math.min(h-f,o[g]),b=a[g];let y;b===2?y=0:b===1?y=1:y=_;for(let w=0;w<_;w++)w===y&&(m=0),d[f++]=m}return d}getViewLineContent(e){const t=this.getViewLineInfo(e);return this.modelLineProjections[t.modelLineNumber-1].getViewLineContent(this.model,t.modelLineNumber,t.modelLineWrappedLineIdx)}getViewLineLength(e){const t=this.getViewLineInfo(e);return this.modelLineProjections[t.modelLineNumber-1].getViewLineLength(this.model,t.modelLineNumber,t.modelLineWrappedLineIdx)}getViewLineMinColumn(e){const t=this.getViewLineInfo(e);return this.modelLineProjections[t.modelLineNumber-1].getViewLineMinColumn(this.model,t.modelLineNumber,t.modelLineWrappedLineIdx)}getViewLineMaxColumn(e){const t=this.getViewLineInfo(e);return this.modelLineProjections[t.modelLineNumber-1].getViewLineMaxColumn(this.model,t.modelLineNumber,t.modelLineWrappedLineIdx)}getViewLineData(e){const t=this.getViewLineInfo(e);return this.modelLineProjections[t.modelLineNumber-1].getViewLineData(this.model,t.modelLineNumber,t.modelLineWrappedLineIdx)}getViewLinesData(e,t,i){e=this._toValidViewLineNumber(e),t=this._toValidViewLineNumber(t);const s=this.projectedModelLineLineCounts.getIndexOf(e-1);let r=e;const o=s.index,a=s.remainder,l=[];for(let c=o,u=this.model.getLineCount();c<u;c++){const h=this.modelLineProjections[c];if(!h.isVisible())continue;const d=c===o?a:0;let f=h.getViewLineCount()-d,g=!1;if(r+f>t&&(g=!0,f=t-r+1),h.getViewLinesData(this.model,c+1,d,f,r-e,i,l),r+=f,g)break}return l}validateViewPosition(e,t,i){e=this._toValidViewLineNumber(e);const s=this.projectedModelLineLineCounts.getIndexOf(e-1),r=s.index,o=s.remainder,a=this.modelLineProjections[r],l=a.getViewLineMinColumn(this.model,r+1,o),c=a.getViewLineMaxColumn(this.model,r+1,o);t<l&&(t=l),t>c&&(t=c);const u=a.getModelColumnOfViewPosition(o,t);return this.model.validatePosition(new he(r+1,u)).equals(i)?new he(e,t):this.convertModelPositionToViewPosition(i.lineNumber,i.column)}validateViewRange(e,t){const i=this.validateViewPosition(e.startLineNumber,e.startColumn,t.getStartPosition()),s=this.validateViewPosition(e.endLineNumber,e.endColumn,t.getEndPosition());return new M(i.lineNumber,i.column,s.lineNumber,s.column)}convertViewPositionToModelPosition(e,t){const i=this.getViewLineInfo(e),s=this.modelLineProjections[i.modelLineNumber-1].getModelColumnOfViewPosition(i.modelLineWrappedLineIdx,t);return this.model.validatePosition(new he(i.modelLineNumber,s))}convertViewRangeToModelRange(e){const t=this.convertViewPositionToModelPosition(e.startLineNumber,e.startColumn),i=this.convertViewPositionToModelPosition(e.endLineNumber,e.endColumn);return new M(t.lineNumber,t.column,i.lineNumber,i.column)}convertModelPositionToViewPosition(e,t,i=2,s=!1,r=!1){const o=this.model.validatePosition(new he(e,t)),a=o.lineNumber,l=o.column;let c=a-1,u=!1;if(r)for(;c<this.modelLineProjections.length&&!this.modelLineProjections[c].isVisible();)c++,u=!0;else for(;c>0&&!this.modelLineProjections[c].isVisible();)c--,u=!0;if(c===0&&!this.modelLineProjections[c].isVisible())return new he(s?0:1,1);const h=1+this.projectedModelLineLineCounts.getPrefixSum(c);let d;return u?r?d=this.modelLineProjections[c].getViewPositionOfModelPosition(h,1,i):d=this.modelLineProjections[c].getViewPositionOfModelPosition(h,this.model.getLineMaxColumn(c+1),i):d=this.modelLineProjections[a-1].getViewPositionOfModelPosition(h,l,i),d}convertModelRangeToViewRange(e,t=0){if(e.isEmpty()){const i=this.convertModelPositionToViewPosition(e.startLineNumber,e.startColumn,t);return M.fromPositions(i)}else{const i=this.convertModelPositionToViewPosition(e.startLineNumber,e.startColumn,1),s=this.convertModelPositionToViewPosition(e.endLineNumber,e.endColumn,0);return new M(i.lineNumber,i.column,s.lineNumber,s.column)}}getViewLineNumberOfModelPosition(e,t){let i=e-1;if(this.modelLineProjections[i].isVisible()){const r=1+this.projectedModelLineLineCounts.getPrefixSum(i);return this.modelLineProjections[i].getViewLineNumberOfModelPosition(r,t)}for(;i>0&&!this.modelLineProjections[i].isVisible();)i--;if(i===0&&!this.modelLineProjections[i].isVisible())return 1;const s=1+this.projectedModelLineLineCounts.getPrefixSum(i);return this.modelLineProjections[i].getViewLineNumberOfModelPosition(s,this.model.getLineMaxColumn(i+1))}getDecorationsInRange(e,t,i,s,r){const o=this.convertViewPositionToModelPosition(e.startLineNumber,e.startColumn),a=this.convertViewPositionToModelPosition(e.endLineNumber,e.endColumn);if(a.lineNumber-o.lineNumber<=e.endLineNumber-e.startLineNumber)return this.model.getDecorationsInRange(new M(o.lineNumber,1,a.lineNumber,a.column),t,i,s,r);let l=[];const c=o.lineNumber-1,u=a.lineNumber-1;let h=null;for(let p=c;p<=u;p++)if(this.modelLineProjections[p].isVisible())h===null&&(h=new he(p+1,p===c?o.column:1));else if(h!==null){const _=this.model.getLineMaxColumn(p);l=l.concat(this.model.getDecorationsInRange(new M(h.lineNumber,h.column,p,_),t,i,s)),h=null}h!==null&&(l=l.concat(this.model.getDecorationsInRange(new M(h.lineNumber,h.column,a.lineNumber,a.column),t,i,s)),h=null),l.sort((p,m)=>{const _=M.compareRangesUsingStarts(p.range,m.range);return _===0?p.id<m.id?-1:p.id>m.id?1:0:_});const d=[];let f=0,g=null;for(const p of l){const m=p.id;g!==m&&(g=m,d[f++]=p)}return d}getInjectedTextAt(e){const t=this.getViewLineInfo(e.lineNumber);return this.modelLineProjections[t.modelLineNumber-1].getInjectedTextAt(t.modelLineWrappedLineIdx,e.column)}normalizePosition(e,t){const i=this.getViewLineInfo(e.lineNumber);return this.modelLineProjections[i.modelLineNumber-1].normalizePosition(i.modelLineWrappedLineIdx,e,t)}getLineIndentColumn(e){const t=this.getViewLineInfo(e);return t.modelLineWrappedLineIdx===0?this.model.getLineIndentColumn(t.modelLineNumber):0}}function uKe(n){if(n.length===0)return[];const e=n.slice();e.sort(M.compareRangesUsingStarts);const t=[];let i=e[0].startLineNumber,s=e[0].endLineNumber;for(let r=1,o=e.length;r<o;r++){const a=e[r];a.startLineNumber>s+1?(t.push(new M(i,1,s,1)),i=a.startLineNumber,s=a.endLineNumber):a.endLineNumber>s&&(s=a.endLineNumber)}return t.push(new M(i,1,s,1)),t}class ote{constructor(e,t){this.modelLineNumber=e,this.modelLineWrappedLineIdx=t}}class ate{constructor(e,t){this.modelRange=e,this.viewLines=t}}class hKe{constructor(e){this._lines=e}convertViewPositionToModelPosition(e){return this._lines.convertViewPositionToModelPosition(e.lineNumber,e.column)}convertViewRangeToModelRange(e){return this._lines.convertViewRangeToModelRange(e)}validateViewPosition(e,t){return this._lines.validateViewPosition(e.lineNumber,e.column,t)}validateViewRange(e,t){return this._lines.validateViewRange(e,t)}convertModelPositionToViewPosition(e,t,i,s){return this._lines.convertModelPositionToViewPosition(e.lineNumber,e.column,t,i,s)}convertModelRangeToViewRange(e,t){return this._lines.convertModelRangeToViewRange(e,t)}modelPositionIsVisible(e){return this._lines.modelPositionIsVisible(e.lineNumber,e.column)}getModelLineViewLineCount(e){return this._lines.getModelLineViewLineCount(e)}getViewLineNumberOfModelPosition(e,t){return this._lines.getViewLineNumberOfModelPosition(e,t)}}class dKe{constructor(e){this.model=e}dispose(){}createCoordinatesConverter(){return new fKe(this)}getHiddenAreas(){return[]}setHiddenAreas(e){return!1}setTabSize(e){return!1}setWrappingSettings(e,t,i,s){return!1}createLineBreaksComputer(){const e=[];return{addRequest:(t,i,s)=>{e.push(null)},finalize:()=>e}}onModelFlushed(){}onModelLinesDeleted(e,t,i){return new O9(t,i)}onModelLinesInserted(e,t,i,s){return new F9(t,i)}onModelLineChanged(e,t,i){return[!1,new wme(t,1),null,null]}acceptVersionId(e){}getViewLineCount(){return this.model.getLineCount()}getActiveIndentGuide(e,t,i){return{startLineNumber:e,endLineNumber:e,indent:0}}getViewLinesBracketGuides(e,t,i){return new Array(t-e+1).fill([])}getViewLinesIndentGuides(e,t){const i=t-e+1,s=new Array(i);for(let r=0;r<i;r++)s[r]=0;return s}getViewLineContent(e){return this.model.getLineContent(e)}getViewLineLength(e){return this.model.getLineLength(e)}getViewLineMinColumn(e){return this.model.getLineMinColumn(e)}getViewLineMaxColumn(e){return this.model.getLineMaxColumn(e)}getViewLineData(e){const t=this.model.tokenization.getLineTokens(e),i=t.getLineContent();return new wq(i,!1,1,i.length+1,0,t.inflate(),null)}getViewLinesData(e,t,i){const s=this.model.getLineCount();e=Math.min(Math.max(1,e),s),t=Math.min(Math.max(1,t),s);const r=[];for(let o=e;o<=t;o++){const a=o-e;r[a]=i[a]?this.getViewLineData(o):null}return r}getDecorationsInRange(e,t,i,s,r){return this.model.getDecorationsInRange(e,t,i,s,r)}normalizePosition(e,t){return this.model.normalizePosition(e,t)}getLineIndentColumn(e){return this.model.getLineIndentColumn(e)}getInjectedTextAt(e){return null}}class fKe{constructor(e){this._lines=e}_validPosition(e){return this._lines.model.validatePosition(e)}_validRange(e){return this._lines.model.validateRange(e)}convertViewPositionToModelPosition(e){return this._validPosition(e)}convertViewRangeToModelRange(e){return this._validRange(e)}validateViewPosition(e,t){return this._validPosition(t)}validateViewRange(e,t){return this._validRange(t)}convertModelPositionToViewPosition(e){return this._validPosition(e)}convertModelRangeToViewRange(e){return this._validRange(e)}modelPositionIsVisible(e){const t=this._lines.model.getLineCount();return!(e.lineNumber<1||e.lineNumber>t)}getModelLineViewLineCount(e){return 1}getViewLineNumberOfModelPosition(e,t){return e}}let gKe=class extends pe{constructor(e,t,i,s,r,o,a,l,c){if(super(),this.languageConfigurationService=a,this._themeService=l,this._attachedView=c,this.hiddenAreasModel=new mKe,this.previousHiddenAreas=[],this._editorId=e,this._configuration=t,this.model=i,this._eventDispatcher=new Fqe,this.onEvent=this._eventDispatcher.onEvent,this.cursorConfig=new Qv(this.model.getLanguageId(),this.model.getOptions(),this._configuration,this.languageConfigurationService),this._updateConfigurationViewLineCount=this._register(new Ei(()=>this._updateConfigurationViewLineCountNow(),0)),this._hasFocus=!1,this._viewportStart=Uq.create(this.model),this.model.isTooLargeForTokenization())this._lines=new dKe(this.model);else{const u=this._configuration.options,h=u.get(50),d=u.get(137),f=u.get(144),g=u.get(136),p=u.get(128);this._lines=new cKe(this._editorId,this.model,s,r,h,this.model.getOptions().tabSize,d,f.wrappingColumn,g,p)}this.coordinatesConverter=this._lines.createCoordinatesConverter(),this._cursor=this._register(new Gqe(i,this,this.coordinatesConverter,this.cursorConfig)),this.viewLayout=this._register(new nKe(this._configuration,this.getLineCount(),o)),this._register(this.viewLayout.onDidScroll(u=>{u.scrollTopChanged&&this._handleVisibleLinesChanged(),u.scrollTopChanged&&this._viewportStart.invalidate(),this._eventDispatcher.emitSingleViewEvent(new Aqe(u)),this._eventDispatcher.emitOutgoingEvent(new Vq(u.oldScrollWidth,u.oldScrollLeft,u.oldScrollHeight,u.oldScrollTop,u.scrollWidth,u.scrollLeft,u.scrollHeight,u.scrollTop))})),this._register(this.viewLayout.onDidContentSizeChange(u=>{this._eventDispatcher.emitOutgoingEvent(u)})),this._decorations=new sKe(this._editorId,this.model,this._configuration,this._lines,this.coordinatesConverter),this._registerModelEvents(),this._register(this._configuration.onDidChangeFast(u=>{try{const h=this._eventDispatcher.beginEmitViewEvents();this._onConfigurationChanged(h,u)}finally{this._eventDispatcher.endEmitViewEvents()}})),this._register(xE.getInstance().onDidChange(()=>{this._eventDispatcher.emitSingleViewEvent(new Mqe)})),this._register(this._themeService.onDidColorThemeChange(u=>{this._invalidateDecorationsColorCache(),this._eventDispatcher.emitSingleViewEvent(new Pqe(u))})),this._updateConfigurationViewLineCountNow()}dispose(){super.dispose(),this._decorations.dispose(),this._lines.dispose(),this._viewportStart.dispose(),this._eventDispatcher.dispose()}createLineBreaksComputer(){return this._lines.createLineBreaksComputer()}addViewEventHandler(e){this._eventDispatcher.addViewEventHandler(e)}removeViewEventHandler(e){this._eventDispatcher.removeViewEventHandler(e)}_updateConfigurationViewLineCountNow(){this._configuration.setViewLineCount(this._lines.getViewLineCount())}getModelVisibleRanges(){const e=this.viewLayout.getLinesViewportData(),t=new M(e.startLineNumber,this.getLineMinColumn(e.startLineNumber),e.endLineNumber,this.getLineMaxColumn(e.endLineNumber));return this._toModelVisibleRanges(t)}visibleLinesStabilized(){const e=this.getModelVisibleRanges();this._attachedView.setVisibleLines(e,!0)}_handleVisibleLinesChanged(){const e=this.getModelVisibleRanges();this._attachedView.setVisibleLines(e,!1)}setHasFocus(e){this._hasFocus=e,this._cursor.setHasFocus(e),this._eventDispatcher.emitSingleViewEvent(new Tqe(e)),this._eventDispatcher.emitOutgoingEvent(new Wq(!e,e))}onCompositionStart(){this._eventDispatcher.emitSingleViewEvent(new xqe)}onCompositionEnd(){this._eventDispatcher.emitSingleViewEvent(new Eqe)}_captureStableViewport(){if(this._viewportStart.isValid&&this.viewLayout.getCurrentScrollTop()>0){const e=new he(this._viewportStart.viewLineNumber,this.getLineMinColumn(this._viewportStart.viewLineNumber)),t=this.coordinatesConverter.convertViewPositionToModelPosition(e);return new cte(t,this._viewportStart.startLineDelta)}return new cte(null,0)}_onConfigurationChanged(e,t){const i=this._captureStableViewport(),s=this._configuration.options,r=s.get(50),o=s.get(137),a=s.get(144),l=s.get(136),c=s.get(128);this._lines.setWrappingSettings(r,o,a.wrappingColumn,l,c)&&(e.emitViewEvent(new pI),e.emitViewEvent(new mI),e.emitViewEvent(new Ym(null)),this._cursor.onLineMappingChanged(e),this._decorations.onLineMappingChanged(),this.viewLayout.onFlushed(this.getLineCount()),this._updateConfigurationViewLineCount.schedule()),t.hasChanged(90)&&(this._decorations.reset(),e.emitViewEvent(new Ym(null))),t.hasChanged(97)&&(this._decorations.reset(),e.emitViewEvent(new Ym(null))),e.emitViewEvent(new Dqe(t)),this.viewLayout.onConfigurationChanged(t),i.recoverViewportStart(this.coordinatesConverter,this.viewLayout),Qv.shouldRecreate(t)&&(this.cursorConfig=new Qv(this.model.getLanguageId(),this.model.getOptions(),this._configuration,this.languageConfigurationService),this._cursor.updateConfiguration(this.cursorConfig))}_registerModelEvents(){this._register(this.model.onDidChangeContentOrInjectedText(e=>{try{const i=this._eventDispatcher.beginEmitViewEvents();let s=!1,r=!1;const o=e instanceof u_?e.rawContentChangedEvent.changes:e.changes,a=e instanceof u_?e.rawContentChangedEvent.versionId:null,l=this._lines.createLineBreaksComputer();for(const h of o)switch(h.changeType){case 4:{for(let d=0;d<h.detail.length;d++){const f=h.detail[d];let g=h.injectedTexts[d];g&&(g=g.filter(p=>!p.ownerId||p.ownerId===this._editorId)),l.addRequest(f,g,null)}break}case 2:{let d=null;h.injectedText&&(d=h.injectedText.filter(f=>!f.ownerId||f.ownerId===this._editorId)),l.addRequest(h.detail,d,null);break}}const c=l.finalize(),u=new Zf(c);for(const h of o)switch(h.changeType){case 1:{this._lines.onModelFlushed(),i.emitViewEvent(new pI),this._decorations.reset(),this.viewLayout.onFlushed(this.getLineCount()),s=!0;break}case 3:{const d=this._lines.onModelLinesDeleted(a,h.fromLineNumber,h.toLineNumber);d!==null&&(i.emitViewEvent(d),this.viewLayout.onLinesDeleted(d.fromLineNumber,d.toLineNumber)),s=!0;break}case 4:{const d=u.takeCount(h.detail.length),f=this._lines.onModelLinesInserted(a,h.fromLineNumber,h.toLineNumber,d);f!==null&&(i.emitViewEvent(f),this.viewLayout.onLinesInserted(f.fromLineNumber,f.toLineNumber)),s=!0;break}case 2:{const d=u.dequeue(),[f,g,p,m]=this._lines.onModelLineChanged(a,h.lineNumber,d);r=f,g&&i.emitViewEvent(g),p&&(i.emitViewEvent(p),this.viewLayout.onLinesInserted(p.fromLineNumber,p.toLineNumber)),m&&(i.emitViewEvent(m),this.viewLayout.onLinesDeleted(m.fromLineNumber,m.toLineNumber));break}case 5:break}a!==null&&this._lines.acceptVersionId(a),this.viewLayout.onHeightMaybeChanged(),!s&&r&&(i.emitViewEvent(new mI),i.emitViewEvent(new Ym(null)),this._cursor.onLineMappingChanged(i),this._decorations.onLineMappingChanged())}finally{this._eventDispatcher.endEmitViewEvents()}const t=this._viewportStart.isValid;if(this._viewportStart.invalidate(),this._configuration.setModelLineCount(this.model.getLineCount()),this._updateConfigurationViewLineCountNow(),!this._hasFocus&&this.model.getAttachedEditorCount()>=2&&t){const i=this.model._getTrackedRange(this._viewportStart.modelTrackedRange);if(i){const s=this.coordinatesConverter.convertModelPositionToViewPosition(i.getStartPosition()),r=this.viewLayout.getVerticalOffsetForLineNumber(s.lineNumber);this.viewLayout.setScrollPosition({scrollTop:r+this._viewportStart.startLineDelta},1)}}try{const i=this._eventDispatcher.beginEmitViewEvents();e instanceof u_&&i.emitOutgoingEvent(new jqe(e.contentChangedEvent)),this._cursor.onModelContentChanged(i,e)}finally{this._eventDispatcher.endEmitViewEvents()}this._handleVisibleLinesChanged()})),this._register(this.model.onDidChangeTokens(e=>{const t=[];for(let i=0,s=e.ranges.length;i<s;i++){const r=e.ranges[i],o=this.coordinatesConverter.convertModelPositionToViewPosition(new he(r.fromLineNumber,1)).lineNumber,a=this.coordinatesConverter.convertModelPositionToViewPosition(new he(r.toLineNumber,this.model.getLineMaxColumn(r.toLineNumber))).lineNumber;t[i]={fromLineNumber:o,toLineNumber:a}}this._eventDispatcher.emitSingleViewEvent(new Rqe(t)),this._eventDispatcher.emitOutgoingEvent(new Kqe(e))})),this._register(this.model.onDidChangeLanguageConfiguration(e=>{this._eventDispatcher.emitSingleViewEvent(new Nqe),this.cursorConfig=new Qv(this.model.getLanguageId(),this.model.getOptions(),this._configuration,this.languageConfigurationService),this._cursor.updateConfiguration(this.cursorConfig),this._eventDispatcher.emitOutgoingEvent(new Uqe(e))})),this._register(this.model.onDidChangeLanguage(e=>{this.cursorConfig=new Qv(this.model.getLanguageId(),this.model.getOptions(),this._configuration,this.languageConfigurationService),this._cursor.updateConfiguration(this.cursorConfig),this._eventDispatcher.emitOutgoingEvent(new zqe(e))})),this._register(this.model.onDidChangeOptions(e=>{if(this._lines.setTabSize(this.model.getOptions().tabSize)){try{const t=this._eventDispatcher.beginEmitViewEvents();t.emitViewEvent(new pI),t.emitViewEvent(new mI),t.emitViewEvent(new Ym(null)),this._cursor.onLineMappingChanged(t),this._decorations.onLineMappingChanged(),this.viewLayout.onFlushed(this.getLineCount())}finally{this._eventDispatcher.endEmitViewEvents()}this._updateConfigurationViewLineCount.schedule()}this.cursorConfig=new Qv(this.model.getLanguageId(),this.model.getOptions(),this._configuration,this.languageConfigurationService),this._cursor.updateConfiguration(this.cursorConfig),this._eventDispatcher.emitOutgoingEvent(new qqe(e))})),this._register(this.model.onDidChangeDecorations(e=>{this._decorations.onModelDecorationsChanged(),this._eventDispatcher.emitSingleViewEvent(new Ym(e)),this._eventDispatcher.emitOutgoingEvent(new $qe(e))}))}setHiddenAreas(e,t){var i;this.hiddenAreasModel.setHiddenAreas(t,e);const s=this.hiddenAreasModel.getMergedRanges();if(s===this.previousHiddenAreas)return;this.previousHiddenAreas=s;const r=this._captureStableViewport();let o=!1;try{const a=this._eventDispatcher.beginEmitViewEvents();o=this._lines.setHiddenAreas(s),o&&(a.emitViewEvent(new pI),a.emitViewEvent(new mI),a.emitViewEvent(new Ym(null)),this._cursor.onLineMappingChanged(a),this._decorations.onLineMappingChanged(),this.viewLayout.onFlushed(this.getLineCount()),this.viewLayout.onHeightMaybeChanged());const l=(i=r.viewportStartModelPosition)===null||i===void 0?void 0:i.lineNumber;l&&s.some(u=>u.startLineNumber<=l&&l<=u.endLineNumber)||r.recoverViewportStart(this.coordinatesConverter,this.viewLayout)}finally{this._eventDispatcher.endEmitViewEvents()}this._updateConfigurationViewLineCount.schedule(),o&&this._eventDispatcher.emitOutgoingEvent(new Vqe)}getVisibleRangesPlusViewportAboveBelow(){const e=this._configuration.options.get(143),t=this._configuration.options.get(66),i=Math.max(20,Math.round(e.height/t)),s=this.viewLayout.getLinesViewportData(),r=Math.max(1,s.completelyVisibleStartLineNumber-i),o=Math.min(this.getLineCount(),s.completelyVisibleEndLineNumber+i);return this._toModelVisibleRanges(new M(r,this.getLineMinColumn(r),o,this.getLineMaxColumn(o)))}getVisibleRanges(){const e=this.getCompletelyVisibleViewRange();return this._toModelVisibleRanges(e)}getHiddenAreas(){return this._lines.getHiddenAreas()}_toModelVisibleRanges(e){const t=this.coordinatesConverter.convertViewRangeToModelRange(e),i=this._lines.getHiddenAreas();if(i.length===0)return[t];const s=[];let r=0,o=t.startLineNumber,a=t.startColumn;const l=t.endLineNumber,c=t.endColumn;for(let u=0,h=i.length;u<h;u++){const d=i[u].startLineNumber,f=i[u].endLineNumber;f<o||d>l||(o<d&&(s[r++]=new M(o,a,d-1,this.model.getLineMaxColumn(d-1))),o=f+1,a=1)}return(o<l||o===l&&a<c)&&(s[r++]=new M(o,a,l,c)),s}getCompletelyVisibleViewRange(){const e=this.viewLayout.getLinesViewportData(),t=e.completelyVisibleStartLineNumber,i=e.completelyVisibleEndLineNumber;return new M(t,this.getLineMinColumn(t),i,this.getLineMaxColumn(i))}getCompletelyVisibleViewRangeAtScrollTop(e){const t=this.viewLayout.getLinesViewportDataAtScrollTop(e),i=t.completelyVisibleStartLineNumber,s=t.completelyVisibleEndLineNumber;return new M(i,this.getLineMinColumn(i),s,this.getLineMaxColumn(s))}saveState(){const e=this.viewLayout.saveState(),t=e.scrollTop,i=this.viewLayout.getLineNumberAtVerticalOffset(t),s=this.coordinatesConverter.convertViewPositionToModelPosition(new he(i,this.getLineMinColumn(i))),r=this.viewLayout.getVerticalOffsetForLineNumber(i)-t;return{scrollLeft:e.scrollLeft,firstPosition:s,firstPositionDeltaTop:r}}reduceRestoreState(e){if(typeof e.firstPosition>"u")return this._reduceRestoreStateCompatibility(e);const t=this.model.validatePosition(e.firstPosition),i=this.coordinatesConverter.convertModelPositionToViewPosition(t),s=this.viewLayout.getVerticalOffsetForLineNumber(i.lineNumber)-e.firstPositionDeltaTop;return{scrollLeft:e.scrollLeft,scrollTop:s}}_reduceRestoreStateCompatibility(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTopWithoutViewZones}}getTabSize(){return this.model.getOptions().tabSize}getLineCount(){return this._lines.getViewLineCount()}setViewport(e,t,i){this._viewportStart.update(this,e)}getActiveIndentGuide(e,t,i){return this._lines.getActiveIndentGuide(e,t,i)}getLinesIndentGuides(e,t){return this._lines.getViewLinesIndentGuides(e,t)}getBracketGuidesInRangeByLine(e,t,i,s){return this._lines.getViewLinesBracketGuides(e,t,i,s)}getLineContent(e){return this._lines.getViewLineContent(e)}getLineLength(e){return this._lines.getViewLineLength(e)}getLineMinColumn(e){return this._lines.getViewLineMinColumn(e)}getLineMaxColumn(e){return this._lines.getViewLineMaxColumn(e)}getLineFirstNonWhitespaceColumn(e){const t=zr(this.getLineContent(e));return t===-1?0:t+1}getLineLastNonWhitespaceColumn(e){const t=wu(this.getLineContent(e));return t===-1?0:t+2}getMinimapDecorationsInRange(e){return this._decorations.getMinimapDecorationsInRange(e)}getDecorationsInViewport(e){return this._decorations.getDecorationsViewportData(e).decorations}getInjectedTextAt(e){return this._lines.getInjectedTextAt(e)}getViewportViewLineRenderingData(e,t){const s=this._decorations.getDecorationsViewportData(e).inlineDecorations[t-e.startLineNumber];return this._getViewLineRenderingData(t,s)}getViewLineRenderingData(e){const t=this._decorations.getInlineDecorationsOnLine(e);return this._getViewLineRenderingData(e,t)}_getViewLineRenderingData(e,t){const i=this.model.mightContainRTL(),s=this.model.mightContainNonBasicASCII(),r=this.getTabSize(),o=this._lines.getViewLineData(e);return o.inlineDecorations&&(t=[...t,...o.inlineDecorations.map(a=>a.toInlineDecoration(e))]),new Ja(o.minColumn,o.maxColumn,o.content,o.continuesWithWrappedLine,i,s,o.tokens,t,r,o.startVisibleColumn)}getViewLineData(e){return this._lines.getViewLineData(e)}getMinimapLinesRenderingData(e,t,i){const s=this._lines.getViewLinesData(e,t,i);return new mUe(this.getTabSize(),s)}getAllOverviewRulerDecorations(e){const t=this.model.getOverviewRulerDecorations(this._editorId,GA(this._configuration.options)),i=new pKe;for(const s of t){const r=s.options,o=r.overviewRuler;if(!o)continue;const a=o.position;if(a===0)continue;const l=o.getColor(e.value),c=this.coordinatesConverter.getViewLineNumberOfModelPosition(s.range.startLineNumber,s.range.startColumn),u=this.coordinatesConverter.getViewLineNumberOfModelPosition(s.range.endLineNumber,s.range.endColumn);i.accept(l,r.zIndex,c,u,a)}return i.asArray}_invalidateDecorationsColorCache(){const e=this.model.getOverviewRulerDecorations();for(const t of e){const i=t.options.overviewRuler;i==null||i.invalidateCachedColor();const s=t.options.minimap;s==null||s.invalidateCachedColor()}}getValueInRange(e,t){const i=this.coordinatesConverter.convertViewRangeToModelRange(e);return this.model.getValueInRange(i,t)}getValueLengthInRange(e,t){const i=this.coordinatesConverter.convertViewRangeToModelRange(e);return this.model.getValueLengthInRange(i,t)}modifyPosition(e,t){const i=this.coordinatesConverter.convertViewPositionToModelPosition(e);return this.model.modifyPosition(i,t)}deduceModelPositionRelativeToViewPosition(e,t,i){const s=this.coordinatesConverter.convertViewPositionToModelPosition(e);this.model.getEOL().length===2&&(t<0?t-=i:t+=i);const o=this.model.getOffsetAt(s)+t;return this.model.getPositionAt(o)}getPlainTextToCopy(e,t,i){const s=i?`\r +`:this.model.getEOL();e=e.slice(0),e.sort(M.compareRangesUsingStarts);let r=!1,o=!1;for(const l of e)l.isEmpty()?r=!0:o=!0;if(!o){if(!t)return"";const l=e.map(u=>u.startLineNumber);let c="";for(let u=0;u<l.length;u++)u>0&&l[u-1]===l[u]||(c+=this.model.getLineContent(l[u])+s);return c}if(r&&t){const l=[];let c=0;for(const u of e){const h=u.startLineNumber;u.isEmpty()?h!==c&&l.push(this.model.getLineContent(h)):l.push(this.model.getValueInRange(u,i?2:0)),c=h}return l.length===1?l[0]:l}const a=[];for(const l of e)l.isEmpty()||a.push(this.model.getValueInRange(l,i?2:0));return a.length===1?a[0]:a}getRichTextToCopy(e,t){const i=this.model.getLanguageId();if(i===Ga||e.length!==1)return null;let s=e[0];if(s.isEmpty()){if(!t)return null;const u=s.startLineNumber;s=new M(u,this.model.getLineMinColumn(u),u,this.model.getLineMaxColumn(u))}const r=this._configuration.options.get(50),o=this._getColorMap(),l=/[:;\\\/<>]/.test(r.fontFamily)||r.fontFamily===na.fontFamily;let c;return l?c=na.fontFamily:(c=r.fontFamily,c=c.replace(/"/g,"'"),/[,']/.test(c)||/[+ ]/.test(c)&&(c=`'${c}'`),c=`${c}, ${na.fontFamily}`),{mode:i,html:`<div style="color: ${o[1]};background-color: ${o[2]};font-family: ${c};font-weight: ${r.fontWeight};font-size: ${r.fontSize}px;line-height: ${r.lineHeight}px;white-space: pre;">`+this._getHTMLToCopy(s,o)+"</div>"}}_getHTMLToCopy(e,t){const i=e.startLineNumber,s=e.startColumn,r=e.endLineNumber,o=e.endColumn,a=this.getTabSize();let l="";for(let c=i;c<=r;c++){const u=this.model.tokenization.getLineTokens(c),h=u.getLineContent(),d=c===i?s-1:0,f=c===r?o-1:h.length;h===""?l+="<br>":l+=Qqe(h,u.inflate(),t,d,f,a,yr)}return l}_getColorMap(){const e=kn.getColorMap(),t=["#000000"];if(e)for(let i=1,s=e.length;i<s;i++)t[i]=me.Format.CSS.formatHex(e[i]);return t}getPrimaryCursorState(){return this._cursor.getPrimaryCursorState()}getLastAddedCursorIndex(){return this._cursor.getLastAddedCursorIndex()}getCursorStates(){return this._cursor.getCursorStates()}setCursorStates(e,t,i){return this._withViewEventsCollector(s=>this._cursor.setStates(s,e,t,i))}getCursorColumnSelectData(){return this._cursor.getCursorColumnSelectData()}getCursorAutoClosedCharacters(){return this._cursor.getAutoClosedCharacters()}setCursorColumnSelectData(e){this._cursor.setCursorColumnSelectData(e)}getPrevEditOperationType(){return this._cursor.getPrevEditOperationType()}setPrevEditOperationType(e){this._cursor.setPrevEditOperationType(e)}getSelection(){return this._cursor.getSelection()}getSelections(){return this._cursor.getSelections()}getPosition(){return this._cursor.getPrimaryCursorState().modelState.position}setSelections(e,t,i=0){this._withViewEventsCollector(s=>this._cursor.setSelections(s,e,t,i))}saveCursorState(){return this._cursor.saveState()}restoreCursorState(e){this._withViewEventsCollector(t=>this._cursor.restoreState(t,e))}_executeCursorEdit(e){if(this._cursor.context.cursorConfig.readOnly){this._eventDispatcher.emitOutgoingEvent(new Hqe);return}this._withViewEventsCollector(e)}executeEdits(e,t,i){this._executeCursorEdit(s=>this._cursor.executeEdits(s,e,t,i))}startComposition(){this._executeCursorEdit(e=>this._cursor.startComposition(e))}endComposition(e){this._executeCursorEdit(t=>this._cursor.endComposition(t,e))}type(e,t){this._executeCursorEdit(i=>this._cursor.type(i,e,t))}compositionType(e,t,i,s,r){this._executeCursorEdit(o=>this._cursor.compositionType(o,e,t,i,s,r))}paste(e,t,i,s){this._executeCursorEdit(r=>this._cursor.paste(r,e,t,i,s))}cut(e){this._executeCursorEdit(t=>this._cursor.cut(t,e))}executeCommand(e,t){this._executeCursorEdit(i=>this._cursor.executeCommand(i,e,t))}executeCommands(e,t){this._executeCursorEdit(i=>this._cursor.executeCommands(i,e,t))}revealPrimaryCursor(e,t,i=!1){this._withViewEventsCollector(s=>this._cursor.revealPrimary(s,e,i,0,t,0))}revealTopMostCursor(e){const t=this._cursor.getTopMostViewPosition(),i=new M(t.lineNumber,t.column,t.lineNumber,t.column);this._withViewEventsCollector(s=>s.emitViewEvent(new lN(e,!1,i,null,0,!0,0)))}revealBottomMostCursor(e){const t=this._cursor.getBottomMostViewPosition(),i=new M(t.lineNumber,t.column,t.lineNumber,t.column);this._withViewEventsCollector(s=>s.emitViewEvent(new lN(e,!1,i,null,0,!0,0)))}revealRange(e,t,i,s,r){this._withViewEventsCollector(o=>o.emitViewEvent(new lN(e,!1,i,null,s,t,r)))}changeWhitespace(e){this.viewLayout.changeWhitespace(e)&&(this._eventDispatcher.emitSingleViewEvent(new Oqe),this._eventDispatcher.emitOutgoingEvent(new Wqe))}_withViewEventsCollector(e){try{const t=this._eventDispatcher.beginEmitViewEvents();return e(t)}finally{this._eventDispatcher.endEmitViewEvents()}}normalizePosition(e,t){return this._lines.normalizePosition(e,t)}getLineIndentColumn(e){return this._lines.getLineIndentColumn(e)}};class Uq{static create(e){const t=e._setTrackedRange(null,new M(1,1,1,1),1);return new Uq(e,1,!1,t,0)}get viewLineNumber(){return this._viewLineNumber}get isValid(){return this._isValid}get modelTrackedRange(){return this._modelTrackedRange}get startLineDelta(){return this._startLineDelta}constructor(e,t,i,s,r){this._model=e,this._viewLineNumber=t,this._isValid=i,this._modelTrackedRange=s,this._startLineDelta=r}dispose(){this._model._setTrackedRange(this._modelTrackedRange,null,1)}update(e,t){const i=e.coordinatesConverter.convertViewPositionToModelPosition(new he(t,e.getLineMinColumn(t))),s=e.model._setTrackedRange(this._modelTrackedRange,new M(i.lineNumber,i.column,i.lineNumber,i.column),1),r=e.viewLayout.getVerticalOffsetForLineNumber(t),o=e.viewLayout.getCurrentScrollTop();this._viewLineNumber=t,this._isValid=!0,this._modelTrackedRange=s,this._startLineDelta=o-r}invalidate(){this._isValid=!1}}class pKe{constructor(){this._asMap=Object.create(null),this.asArray=[]}accept(e,t,i,s,r){const o=this._asMap[e];if(o){const a=o.data,l=a[a.length-3],c=a[a.length-1];if(l===r&&c+1>=i){s>c&&(a[a.length-1]=s);return}a.push(r,i,s)}else{const a=new ML(e,t,[r,i,s]);this._asMap[e]=a,this.asArray.push(a)}}}class mKe{constructor(){this.hiddenAreas=new Map,this.shouldRecompute=!1,this.ranges=[]}setHiddenAreas(e,t){const i=this.hiddenAreas.get(e);i&<e(i,t)||(this.hiddenAreas.set(e,t),this.shouldRecompute=!0)}getMergedRanges(){if(!this.shouldRecompute)return this.ranges;this.shouldRecompute=!1;const e=Array.from(this.hiddenAreas.values()).reduce((t,i)=>_Ke(t,i),[]);return lte(this.ranges,e)?this.ranges:(this.ranges=e,this.ranges)}}function _Ke(n,e){const t=[];let i=0,s=0;for(;i<n.length&&s<e.length;){const r=n[i],o=e[s];if(r.endLineNumber<o.startLineNumber-1)t.push(n[i++]);else if(o.endLineNumber<r.startLineNumber-1)t.push(e[s++]);else{const a=Math.min(r.startLineNumber,o.startLineNumber),l=Math.max(r.endLineNumber,o.endLineNumber);t.push(new M(a,1,l,1)),i++,s++}}for(;i<n.length;)t.push(n[i++]);for(;s<e.length;)t.push(e[s++]);return t}function lte(n,e){if(n.length!==e.length)return!1;for(let t=0;t<n.length;t++)if(!n[t].equalsRange(e[t]))return!1;return!0}class cte{constructor(e,t){this.viewportStartModelPosition=e,this.startLineDelta=t}recoverViewportStart(e,t){if(!this.viewportStartModelPosition)return;const i=e.convertModelPositionToViewPosition(this.viewportStartModelPosition),s=t.getVerticalOffsetForLineNumber(i.lineNumber);t.setScrollPosition({scrollTop:s+this.startLineDelta},1)}}class DE{constructor(...e){this._entries=new Map;for(const[t,i]of e)this.set(t,i)}set(e,t){const i=this._entries.get(e);return this._entries.set(e,t),i}get(e){return this._entries.get(e)}}var qL;(function(n){n[n.Ignore=0]="Ignore",n[n.Info=1]="Info",n[n.Warning=2]="Warning",n[n.Error=3]="Error"})(qL||(qL={}));(function(n){const e="error",t="warning",i="warn",s="info",r="ignore";function o(l){return l?R0(e,l)?n.Error:R0(t,l)||R0(i,l)?n.Warning:R0(s,l)?n.Info:n.Ignore:n.Ignore}n.fromValue=o;function a(l){switch(l){case n.Error:return e;case n.Warning:return t;case n.Info:return s;default:return r}}n.toString=a})(qL||(qL={}));const zn=qL;var ZO=zn;const is=Bt("notificationService");class vKe{}class hk{constructor(e,t,i,s,r){this.injectionOffsets=e,this.injectionOptions=t,this.breakOffsets=i,this.breakOffsetsVisibleColumn=s,this.wrappedTextIndentLength=r}getOutputLineCount(){return this.breakOffsets.length}getMinOutputOffset(e){return e>0?this.wrappedTextIndentLength:0}getLineLength(e){const t=e>0?this.breakOffsets[e-1]:0;let s=this.breakOffsets[e]-t;return e>0&&(s+=this.wrappedTextIndentLength),s}getMaxOutputOffset(e){return this.getLineLength(e)}translateToInputOffset(e,t){e>0&&(t=Math.max(0,t-this.wrappedTextIndentLength));let s=e===0?t:this.breakOffsets[e-1]+t;if(this.injectionOffsets!==null)for(let r=0;r<this.injectionOffsets.length&&s>this.injectionOffsets[r];r++)s<this.injectionOffsets[r]+this.injectionOptions[r].content.length?s=this.injectionOffsets[r]:s-=this.injectionOptions[r].content.length;return s}translateToOutputPosition(e,t=2){let i=e;if(this.injectionOffsets!==null)for(let s=0;s<this.injectionOffsets.length&&!(e<this.injectionOffsets[s]||t!==1&&e===this.injectionOffsets[s]);s++)i+=this.injectionOptions[s].content.length;return this.offsetInInputWithInjectionsToOutputPosition(i,t)}offsetInInputWithInjectionsToOutputPosition(e,t=2){let i=0,s=this.breakOffsets.length-1,r=0,o=0;for(;i<=s;){r=i+(s-i)/2|0;const l=this.breakOffsets[r];if(o=r>0?this.breakOffsets[r-1]:0,t===0)if(e<=o)s=r-1;else if(e>l)i=r+1;else break;else if(e<o)s=r-1;else if(e>=l)i=r+1;else break}let a=e-o;return r>0&&(a+=this.wrappedTextIndentLength),new _I(r,a)}normalizeOutputPosition(e,t,i){if(this.injectionOffsets!==null){const s=this.outputPositionToOffsetInInputWithInjections(e,t),r=this.normalizeOffsetInInputWithInjectionsAroundInjections(s,i);if(r!==s)return this.offsetInInputWithInjectionsToOutputPosition(r,i)}if(i===0){if(e>0&&t===this.getMinOutputOffset(e))return new _I(e-1,this.getMaxOutputOffset(e-1))}else if(i===1){const s=this.getOutputLineCount()-1;if(e<s&&t===this.getMaxOutputOffset(e))return new _I(e+1,this.getMinOutputOffset(e+1))}return new _I(e,t)}outputPositionToOffsetInInputWithInjections(e,t){return e>0&&(t=Math.max(0,t-this.wrappedTextIndentLength)),(e>0?this.breakOffsets[e-1]:0)+t}normalizeOffsetInInputWithInjectionsAroundInjections(e,t){const i=this.getInjectedTextAtOffset(e);if(!i)return e;if(t===2){if(e===i.offsetInInputWithInjections+i.length&&ute(this.injectionOptions[i.injectedTextIndex].cursorStops))return i.offsetInInputWithInjections+i.length;{let s=i.offsetInInputWithInjections;if(hte(this.injectionOptions[i.injectedTextIndex].cursorStops))return s;let r=i.injectedTextIndex-1;for(;r>=0&&this.injectionOffsets[r]===this.injectionOffsets[i.injectedTextIndex]&&!(ute(this.injectionOptions[r].cursorStops)||(s-=this.injectionOptions[r].content.length,hte(this.injectionOptions[r].cursorStops)));)r--;return s}}else if(t===1||t===4){let s=i.offsetInInputWithInjections+i.length,r=i.injectedTextIndex;for(;r+1<this.injectionOffsets.length&&this.injectionOffsets[r+1]===this.injectionOffsets[r];)s+=this.injectionOptions[r+1].content.length,r++;return s}else if(t===0||t===3){let s=i.offsetInInputWithInjections,r=i.injectedTextIndex;for(;r-1>=0&&this.injectionOffsets[r-1]===this.injectionOffsets[r];)s-=this.injectionOptions[r-1].content.length,r--;return s}SO()}getInjectedText(e,t){const i=this.outputPositionToOffsetInInputWithInjections(e,t),s=this.getInjectedTextAtOffset(i);return s?{options:this.injectionOptions[s.injectedTextIndex]}:null}getInjectedTextAtOffset(e){const t=this.injectionOffsets,i=this.injectionOptions;if(t!==null){let s=0;for(let r=0;r<t.length;r++){const o=i[r].content.length,a=t[r]+s,l=t[r]+s+o;if(a>e)break;if(e<=l)return{injectedTextIndex:r,offsetInInputWithInjections:a,length:o};s+=o}}}}function ute(n){return n==null?!0:n===_u.Right||n===_u.Both}function hte(n){return n==null?!0:n===_u.Left||n===_u.Both}class _I{constructor(e,t){this.outputLineIndex=e,this.outputOffset=t}toString(){return`${this.outputLineIndex}:${this.outputOffset}`}toPosition(e){return new he(e+this.outputLineIndex,this.outputOffset+1)}}class jq{static create(e){return new jq(e.get(132),e.get(131))}constructor(e,t){this.classifier=new bKe(e,t)}createLineBreaksComputer(e,t,i,s,r){const o=[],a=[],l=[];return{addRequest:(c,u,h)=>{o.push(c),a.push(u),l.push(h)},finalize:()=>{const c=e.typicalFullwidthCharacterWidth/e.typicalHalfwidthCharacterWidth,u=[];for(let h=0,d=o.length;h<d;h++){const f=a[h],g=l[h];g&&!g.injectionOptions&&!f?u[h]=yKe(this.classifier,g,o[h],t,i,c,s,r):u[h]=CKe(this.classifier,o[h],f,t,i,c,s,r)}return W9.length=0,V9.length=0,u}}}}class bKe extends DC{constructor(e,t){super(0);for(let i=0;i<e.length;i++)this.set(e.charCodeAt(i),1);for(let i=0;i<t.length;i++)this.set(t.charCodeAt(i),2)}get(e){return e>=0&&e<256?this._asciiMap[e]:e>=12352&&e<=12543||e>=13312&&e<=19903||e>=19968&&e<=40959?3:this._map.get(e)||this._defaultValue}}let W9=[],V9=[];function yKe(n,e,t,i,s,r,o,a){if(s===-1)return null;const l=t.length;if(l<=1)return null;const c=a==="keepAll",u=e.breakOffsets,h=e.breakOffsetsVisibleColumn,d=xme(t,i,s,r,o),f=s-d,g=W9,p=V9;let m=0,_=0,b=0,y=s;const w=u.length;let S=0;if(S>=0){let E=Math.abs(h[S]-y);for(;S+1<w;){const L=Math.abs(h[S+1]-y);if(L>=E)break;E=L,S++}}for(;S<w;){let E=S<0?0:u[S],L=S<0?0:h[S];_>E&&(E=_,L=b);let k=0,x=0,I=0,N=0;if(L<=y){let P=L,R=E===0?0:t.charCodeAt(E-1),F=E===0?0:n.get(R),j=!0;for(let K=E;K<l;K++){const Z=K,q=t.charCodeAt(K);let re,G;if(As(q)?(K++,re=0,G=2):(re=n.get(q),G=dk(q,P,i,r)),Z>_&&H9(R,F,q,re,c)&&(k=Z,x=P),P+=G,P>y){Z>_?(I=Z,N=P-G):(I=K+1,N=P),P-x>f&&(k=0),j=!1;break}R=q,F=re}if(j){m>0&&(g[m]=u[u.length-1],p[m]=h[u.length-1],m++);break}}if(k===0){let P=L,R=t.charCodeAt(E),F=n.get(R),j=!1;for(let K=E-1;K>=_;K--){const Z=K+1,q=t.charCodeAt(K);if(q===9){j=!0;break}let re,G;if(N_(q)?(K--,re=0,G=2):(re=n.get(q),G=Yp(q)?r:1),P<=y){if(I===0&&(I=Z,N=P),P<=y-f)break;if(H9(q,re,R,F,c)){k=Z,x=P;break}}P-=G,R=q,F=re}if(k!==0){const K=f-(N-x);if(K<=i){const Z=t.charCodeAt(I);let q;As(Z)?q=2:q=dk(Z,N,i,r),K-q<0&&(k=0)}}if(j){S--;continue}}if(k===0&&(k=I,x=N),k<=_){const P=t.charCodeAt(_);As(P)?(k=_+2,x=b+2):(k=_+1,x=b+dk(P,b,i,r))}for(_=k,g[m]=k,b=x,p[m]=x,m++,y=x+f;S<0||S<w&&h[S]<x;)S++;let T=Math.abs(h[S]-y);for(;S+1<w;){const P=Math.abs(h[S+1]-y);if(P>=T)break;T=P,S++}}return m===0?null:(g.length=m,p.length=m,W9=e.breakOffsets,V9=e.breakOffsetsVisibleColumn,e.breakOffsets=g,e.breakOffsetsVisibleColumn=p,e.wrappedTextIndentLength=d,e)}function CKe(n,e,t,i,s,r,o,a){const l=Nu.applyInjectedText(e,t);let c,u;if(t&&t.length>0?(c=t.map(x=>x.options),u=t.map(x=>x.column-1)):(c=null,u=null),s===-1)return c?new hk(u,c,[l.length],[],0):null;const h=l.length;if(h<=1)return c?new hk(u,c,[l.length],[],0):null;const d=a==="keepAll",f=xme(l,i,s,r,o),g=s-f,p=[],m=[];let _=0,b=0,y=0,w=s,S=l.charCodeAt(0),E=n.get(S),L=dk(S,0,i,r),k=1;As(S)&&(L+=1,S=l.charCodeAt(1),E=n.get(S),k++);for(let x=k;x<h;x++){const I=x,N=l.charCodeAt(x);let T,P;As(N)?(x++,T=0,P=2):(T=n.get(N),P=dk(N,L,i,r)),H9(S,E,N,T,d)&&(b=I,y=L),L+=P,L>w&&((b===0||L-y>g)&&(b=I,y=L-P),p[_]=b,m[_]=y,_++,w=y+g,b=0),S=N,E=T}return _===0&&(!t||t.length===0)?null:(p[_]=h,m[_]=L,new hk(u,c,p,m,f))}function dk(n,e,t,i){return n===9?t-e%t:Yp(n)||n<32?i:1}function dte(n,e){return e-n%e}function H9(n,e,t,i,s){return t!==32&&(e===2&&i!==2||e!==1&&i===1||!s&&e===3&&i!==2||!s&&i===3&&e!==1)}function xme(n,e,t,i,s){let r=0;if(s!==0){const o=zr(n);if(o!==-1){for(let l=0;l<o;l++){const c=n.charCodeAt(l)===9?dte(r,e):1;r+=c}const a=s===3?2:s===2?1:0;for(let l=0;l<a;l++){const c=dte(r,e);r+=c}r+i>t&&(r=0)}}return r}const i3=sg("domLineBreaksComputer",{createHTML:n=>n});class qq{static create(e){return new qq(new WeakRef(e))}constructor(e){this.targetWindow=e}createLineBreaksComputer(e,t,i,s,r){const o=[],a=[];return{addRequest:(l,c,u)=>{o.push(l),a.push(c)},finalize:()=>wKe(Xg(this.targetWindow.deref()),o,e,t,i,s,r,a)}}}function wKe(n,e,t,i,s,r,o,a){var l;function c(I){const N=a[I];if(N){const T=Nu.applyInjectedText(e[I],N),P=N.map(F=>F.options),R=N.map(F=>F.column-1);return new hk(R,P,[T.length],[],0)}else return null}if(s===-1){const I=[];for(let N=0,T=e.length;N<T;N++)I[N]=c(N);return I}const u=Math.round(s*t.typicalHalfwidthCharacterWidth),d=Math.round(i*(r===3?2:r===2?1:0)),f=Math.ceil(t.spaceWidth*d),g=document.createElement("div");_r(g,t);const p=new IC(1e4),m=[],_=[],b=[],y=[],w=[];for(let I=0;I<e.length;I++){const N=Nu.applyInjectedText(e[I],a[I]);let T=0,P=0,R=u;if(r!==0)if(T=zr(N),T===-1)T=0;else{for(let Z=0;Z<T;Z++){const q=N.charCodeAt(Z)===9?i-P%i:1;P+=q}const K=Math.ceil(t.spaceWidth*P);K+t.typicalFullwidthCharacterWidth>u?(T=0,P=0):R=u-K}const F=N.substr(T),j=SKe(F,P,i,R,p,f);m[I]=T,_[I]=P,b[I]=F,y[I]=j[0],w[I]=j[1]}const S=p.build(),E=(l=i3==null?void 0:i3.createHTML(S))!==null&&l!==void 0?l:S;g.innerHTML=E,g.style.position="absolute",g.style.top="10000",o==="keepAll"?(g.style.wordBreak="keep-all",g.style.overflowWrap="anywhere"):(g.style.wordBreak="inherit",g.style.overflowWrap="break-word"),n.document.body.appendChild(g);const L=document.createRange(),k=Array.prototype.slice.call(g.children,0),x=[];for(let I=0;I<e.length;I++){const N=k[I],T=kKe(L,N,b[I],y[I]);if(T===null){x[I]=c(I);continue}const P=m[I],R=_[I]+d,F=w[I],j=[];for(let re=0,G=T.length;re<G;re++)j[re]=F[T[re]];if(P!==0)for(let re=0,G=T.length;re<G;re++)T[re]+=P;let K,Z;const q=a[I];q?(K=q.map(re=>re.options),Z=q.map(re=>re.column-1)):(K=null,Z=null),x[I]=new hk(Z,K,T,j,R)}return n.document.body.removeChild(g),x}function SKe(n,e,t,i,s,r){if(r!==0){const d=String(r);s.appendString('<div style="text-indent: -'),s.appendString(d),s.appendString("px; padding-left: "),s.appendString(d),s.appendString("px; box-sizing: border-box; width:")}else s.appendString('<div style="width:');s.appendString(String(i)),s.appendString('px;">');const o=n.length;let a=e,l=0;const c=[],u=[];let h=0<o?n.charCodeAt(0):0;s.appendString("<span>");for(let d=0;d<o;d++){d!==0&&d%16384===0&&s.appendString("</span><span>"),c[d]=l,u[d]=a;const f=h;h=d+1<o?n.charCodeAt(d+1):0;let g=1,p=1;switch(f){case 9:g=t-a%t,p=g;for(let m=1;m<=g;m++)m<g?s.appendCharCode(160):s.appendASCIICharCode(32);break;case 32:h===32?s.appendCharCode(160):s.appendASCIICharCode(32);break;case 60:s.appendString("<");break;case 62:s.appendString(">");break;case 38:s.appendString("&");break;case 0:s.appendString("�");break;case 65279:case 8232:case 8233:case 133:s.appendCharCode(65533);break;default:Yp(f)&&p++,f<32?s.appendCharCode(9216+f):s.appendCharCode(f)}l+=g,a+=p}return s.appendString("</span>"),c[n.length]=l,u[n.length]=a,s.appendString("</div>"),[c,u]}function kKe(n,e,t,i){if(t.length<=1)return null;const s=Array.prototype.slice.call(e.children,0),r=[];try{$9(n,s,i,0,null,t.length-1,null,r)}catch(o){return console.log(o),null}return r.length===0?null:(r.push(t.length),r)}function $9(n,e,t,i,s,r,o,a){if(i===r||(s=s||n3(n,e,t[i],t[i+1]),o=o||n3(n,e,t[r],t[r+1]),Math.abs(s[0].top-o[0].top)<=.1))return;if(i+1===r){a.push(r);return}const l=i+(r-i)/2|0,c=n3(n,e,t[l],t[l+1]);$9(n,e,t,i,s,l,c,a),$9(n,e,t,l,c,r,o,a)}function n3(n,e,t,i){return n.setStart(e[t/16384|0].firstChild,t%16384),n.setEnd(e[i/16384|0].firstChild,i%16384),n.getClientRects()}const Ge=Bt("ILanguageFeaturesService");class LKe extends pe{constructor(){super(),this._editor=null,this._instantiationService=null,this._instances=this._register(new xj),this._pending=new Map,this._finishedInstantiation=[],this._finishedInstantiation[0]=!1,this._finishedInstantiation[1]=!1,this._finishedInstantiation[2]=!1,this._finishedInstantiation[3]=!1}initialize(e,t,i){this._editor=e,this._instantiationService=i;for(const s of t){if(this._pending.has(s.id)){vt(new Error(`Cannot have two contributions with the same id ${s.id}`));continue}this._pending.set(s.id,s)}this._instantiateSome(0),this._register(cS(pt(this._editor.getDomNode()),()=>{this._instantiateSome(1)})),this._register(cS(pt(this._editor.getDomNode()),()=>{this._instantiateSome(2)})),this._register(cS(pt(this._editor.getDomNode()),()=>{this._instantiateSome(3)},5e3))}saveViewState(){const e={};for(const[t,i]of this._instances)typeof i.saveViewState=="function"&&(e[t]=i.saveViewState());return e}restoreViewState(e){for(const[t,i]of this._instances)typeof i.restoreViewState=="function"&&i.restoreViewState(e[t])}get(e){return this._instantiateById(e),this._instances.get(e)||null}onBeforeInteractionEvent(){this._instantiateSome(2)}onAfterModelAttached(){var e;this._register(cS(pt((e=this._editor)===null||e===void 0?void 0:e.getDomNode()),()=>{this._instantiateSome(1)},50))}_instantiateSome(e){if(this._finishedInstantiation[e])return;this._finishedInstantiation[e]=!0;const t=this._findPendingContributionsByInstantiation(e);for(const i of t)this._instantiateById(i.id)}_findPendingContributionsByInstantiation(e){const t=[];for(const[,i]of this._pending)i.instantiation===e&&t.push(i);return t}_instantiateById(e){const t=this._pending.get(e);if(t){if(this._pending.delete(e),!this._instantiationService||!this._editor)throw new Error("Cannot instantiate contributions before being initialized!");try{const i=this._instantiationService.createInstance(t.ctor,this._editor);this._instances.set(t.id,i),typeof i.restoreViewState=="function"&&t.instantiation!==0&&console.warn(`Editor contribution '${t.id}' should be eager instantiated because it uses saveViewState / restoreViewState.`)}catch(i){vt(i)}}}}var xKe=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},Bd=function(n,e){return function(t,i){e(t,i,n)}},c1;let EKe=0,DKe=class{constructor(e,t,i,s,r,o){this.model=e,this.viewModel=t,this.view=i,this.hasRealView=s,this.listenersToRemove=r,this.attachedView=o}dispose(){yi(this.listenersToRemove),this.model.onBeforeDetached(this.attachedView),this.hasRealView&&this.view.dispose(),this.viewModel.dispose()}},Ey=c1=class extends pe{get isSimpleWidget(){return this._configuration.isSimpleWidget}constructor(e,t,i,s,r,o,a,l,c,u,h,d){var f;super(),this.languageConfigurationService=h,this._deliveryQueue=gBe(),this._contributions=this._register(new LKe),this._onDidDispose=this._register(new ue),this.onDidDispose=this._onDidDispose.event,this._onDidChangeModelContent=this._register(new ue({deliveryQueue:this._deliveryQueue})),this.onDidChangeModelContent=this._onDidChangeModelContent.event,this._onDidChangeModelLanguage=this._register(new ue({deliveryQueue:this._deliveryQueue})),this.onDidChangeModelLanguage=this._onDidChangeModelLanguage.event,this._onDidChangeModelLanguageConfiguration=this._register(new ue({deliveryQueue:this._deliveryQueue})),this.onDidChangeModelLanguageConfiguration=this._onDidChangeModelLanguageConfiguration.event,this._onDidChangeModelOptions=this._register(new ue({deliveryQueue:this._deliveryQueue})),this.onDidChangeModelOptions=this._onDidChangeModelOptions.event,this._onDidChangeModelDecorations=this._register(new ue({deliveryQueue:this._deliveryQueue})),this.onDidChangeModelDecorations=this._onDidChangeModelDecorations.event,this._onDidChangeModelTokens=this._register(new ue({deliveryQueue:this._deliveryQueue})),this.onDidChangeModelTokens=this._onDidChangeModelTokens.event,this._onDidChangeConfiguration=this._register(new ue({deliveryQueue:this._deliveryQueue})),this.onDidChangeConfiguration=this._onDidChangeConfiguration.event,this._onDidChangeModel=this._register(new ue({deliveryQueue:this._deliveryQueue})),this.onDidChangeModel=this._onDidChangeModel.event,this._onDidChangeCursorPosition=this._register(new ue({deliveryQueue:this._deliveryQueue})),this.onDidChangeCursorPosition=this._onDidChangeCursorPosition.event,this._onDidChangeCursorSelection=this._register(new ue({deliveryQueue:this._deliveryQueue})),this.onDidChangeCursorSelection=this._onDidChangeCursorSelection.event,this._onDidAttemptReadOnlyEdit=this._register(new Rr(this._contributions,this._deliveryQueue)),this.onDidAttemptReadOnlyEdit=this._onDidAttemptReadOnlyEdit.event,this._onDidLayoutChange=this._register(new ue({deliveryQueue:this._deliveryQueue})),this.onDidLayoutChange=this._onDidLayoutChange.event,this._editorTextFocus=this._register(new fte({deliveryQueue:this._deliveryQueue})),this.onDidFocusEditorText=this._editorTextFocus.onDidChangeToTrue,this.onDidBlurEditorText=this._editorTextFocus.onDidChangeToFalse,this._editorWidgetFocus=this._register(new fte({deliveryQueue:this._deliveryQueue})),this.onDidFocusEditorWidget=this._editorWidgetFocus.onDidChangeToTrue,this.onDidBlurEditorWidget=this._editorWidgetFocus.onDidChangeToFalse,this._onWillType=this._register(new Rr(this._contributions,this._deliveryQueue)),this.onWillType=this._onWillType.event,this._onDidType=this._register(new Rr(this._contributions,this._deliveryQueue)),this.onDidType=this._onDidType.event,this._onDidCompositionStart=this._register(new Rr(this._contributions,this._deliveryQueue)),this.onDidCompositionStart=this._onDidCompositionStart.event,this._onDidCompositionEnd=this._register(new Rr(this._contributions,this._deliveryQueue)),this.onDidCompositionEnd=this._onDidCompositionEnd.event,this._onDidPaste=this._register(new Rr(this._contributions,this._deliveryQueue)),this.onDidPaste=this._onDidPaste.event,this._onMouseUp=this._register(new Rr(this._contributions,this._deliveryQueue)),this.onMouseUp=this._onMouseUp.event,this._onMouseDown=this._register(new Rr(this._contributions,this._deliveryQueue)),this.onMouseDown=this._onMouseDown.event,this._onMouseDrag=this._register(new Rr(this._contributions,this._deliveryQueue)),this.onMouseDrag=this._onMouseDrag.event,this._onMouseDrop=this._register(new Rr(this._contributions,this._deliveryQueue)),this.onMouseDrop=this._onMouseDrop.event,this._onMouseDropCanceled=this._register(new Rr(this._contributions,this._deliveryQueue)),this.onMouseDropCanceled=this._onMouseDropCanceled.event,this._onDropIntoEditor=this._register(new Rr(this._contributions,this._deliveryQueue)),this.onDropIntoEditor=this._onDropIntoEditor.event,this._onContextMenu=this._register(new Rr(this._contributions,this._deliveryQueue)),this.onContextMenu=this._onContextMenu.event,this._onMouseMove=this._register(new Rr(this._contributions,this._deliveryQueue)),this.onMouseMove=this._onMouseMove.event,this._onMouseLeave=this._register(new Rr(this._contributions,this._deliveryQueue)),this.onMouseLeave=this._onMouseLeave.event,this._onMouseWheel=this._register(new Rr(this._contributions,this._deliveryQueue)),this.onMouseWheel=this._onMouseWheel.event,this._onKeyUp=this._register(new Rr(this._contributions,this._deliveryQueue)),this.onKeyUp=this._onKeyUp.event,this._onKeyDown=this._register(new Rr(this._contributions,this._deliveryQueue)),this.onKeyDown=this._onKeyDown.event,this._onDidContentSizeChange=this._register(new ue({deliveryQueue:this._deliveryQueue})),this.onDidContentSizeChange=this._onDidContentSizeChange.event,this._onDidScrollChange=this._register(new ue({deliveryQueue:this._deliveryQueue})),this.onDidScrollChange=this._onDidScrollChange.event,this._onDidChangeViewZones=this._register(new ue({deliveryQueue:this._deliveryQueue})),this.onDidChangeViewZones=this._onDidChangeViewZones.event,this._onDidChangeHiddenAreas=this._register(new ue({deliveryQueue:this._deliveryQueue})),this.onDidChangeHiddenAreas=this._onDidChangeHiddenAreas.event,this._actions=new Map,this._bannerDomNode=null,this._dropIntoEditorDecorations=this.createDecorationsCollection(),r.willCreateCodeEditor();const g={...t};this._domElement=e,this._overflowWidgetsDomNode=g.overflowWidgetsDomNode,delete g.overflowWidgetsDomNode,this._id=++EKe,this._decorationTypeKeysToIds={},this._decorationTypeSubtypes={},this._telemetryData=i.telemetryData,this._configuration=this._register(this._createConfiguration(i.isSimpleWidget||!1,g,u)),this._register(this._configuration.onDidChange(_=>{this._onDidChangeConfiguration.fire(_);const b=this._configuration.options;if(_.hasChanged(143)){const y=b.get(143);this._onDidLayoutChange.fire(y)}})),this._contextKeyService=this._register(a.createScoped(this._domElement)),this._notificationService=c,this._codeEditorService=r,this._commandService=o,this._themeService=l,this._register(new IKe(this,this._contextKeyService)),this._register(new TKe(this,this._contextKeyService,d)),this._instantiationService=s.createChild(new DE([ft,this._contextKeyService])),this._modelData=null,this._focusTracker=new NKe(e),this._register(this._focusTracker.onChange(()=>{this._editorWidgetFocus.setValue(this._focusTracker.hasFocus())})),this._contentWidgets={},this._overlayWidgets={},this._glyphMarginWidgets={};let p;Array.isArray(i.contributions)?p=i.contributions:p=mb.getEditorContributions(),this._contributions.initialize(this,p,this._instantiationService);for(const _ of mb.getEditorActions()){if(this._actions.has(_.id)){vt(new Error(`Cannot have two actions with the same id ${_.id}`));continue}const b=new eme(_.id,_.label,_.alias,_.metadata,(f=_.precondition)!==null&&f!==void 0?f:void 0,()=>this._instantiationService.invokeFunction(y=>Promise.resolve(_.runEditorCommand(y,this,null))),this._contextKeyService);this._actions.set(b.id,b)}const m=()=>!this._configuration.options.get(90)&&this._configuration.options.get(36).enabled;this._register(new N9e(this._domElement,{onDragOver:_=>{if(!m())return;const b=this.getTargetAtClientPoint(_.clientX,_.clientY);b!=null&&b.position&&this.showDropIndicatorAt(b.position)},onDrop:async _=>{if(!m()||(this.removeDropIndicator(),!_.dataTransfer))return;const b=this.getTargetAtClientPoint(_.clientX,_.clientY);b!=null&&b.position&&this._onDropIntoEditor.fire({position:b.position,event:_})},onDragLeave:()=>{this.removeDropIndicator()},onDragEnd:()=>{this.removeDropIndicator()}})),this._codeEditorService.addCodeEditor(this)}writeScreenReaderContent(e){var t;(t=this._modelData)===null||t===void 0||t.view.writeScreenReaderContent(e)}_createConfiguration(e,t,i){return new f9(e,t,this._domElement,i)}getId(){return this.getEditorType()+":"+this._id}getEditorType(){return EE.ICodeEditor}dispose(){this._codeEditorService.removeCodeEditor(this),this._focusTracker.dispose(),this._actions.clear(),this._contentWidgets={},this._overlayWidgets={},this._removeDecorationTypes(),this._postDetachModelCleanup(this._detachModel()),this._onDidDispose.fire(),super.dispose()}invokeWithinContext(e){return this._instantiationService.invokeFunction(e)}updateOptions(e){this._configuration.updateOptions(e||{})}getOptions(){return this._configuration.options}getOption(e){return this._configuration.options.get(e)}getRawOptions(){return this._configuration.getRawOptions()}getOverflowWidgetsDomNode(){return this._overflowWidgetsDomNode}getConfiguredWordAtPosition(e){return this._modelData?ui.getWordAtPosition(this._modelData.model,this._configuration.options.get(129),e):null}getValue(e=null){if(!this._modelData)return"";const t=!!(e&&e.preserveBOM);let i=0;return e&&e.lineEnding&&e.lineEnding===` +`?i=1:e&&e.lineEnding&&e.lineEnding===`\r +`&&(i=2),this._modelData.model.getValue(i,t)}setValue(e){this._modelData&&this._modelData.model.setValue(e)}getModel(){return this._modelData?this._modelData.model:null}setModel(e=null){const t=e;if(this._modelData===null&&t===null||this._modelData&&this._modelData.model===t)return;const i=this.hasTextFocus(),s=this._detachModel();this._attachModel(t),i&&this.hasModel()&&this.focus();const r={oldModelUrl:s?s.uri:null,newModelUrl:t?t.uri:null};this._removeDecorationTypes(),this._onDidChangeModel.fire(r),this._postDetachModelCleanup(s),this._contributions.onAfterModelAttached()}_removeDecorationTypes(){if(this._decorationTypeKeysToIds={},this._decorationTypeSubtypes){for(const e in this._decorationTypeSubtypes){const t=this._decorationTypeSubtypes[e];for(const i in t)this._removeDecorationType(e+"-"+i)}this._decorationTypeSubtypes={}}}getVisibleRanges(){return this._modelData?this._modelData.viewModel.getVisibleRanges():[]}getVisibleRangesPlusViewportAboveBelow(){return this._modelData?this._modelData.viewModel.getVisibleRangesPlusViewportAboveBelow():[]}getWhitespaces(){return this._modelData?this._modelData.viewModel.viewLayout.getWhitespaces():[]}static _getVerticalOffsetAfterPosition(e,t,i,s){const r=e.model.validatePosition({lineNumber:t,column:i}),o=e.viewModel.coordinatesConverter.convertModelPositionToViewPosition(r);return e.viewModel.viewLayout.getVerticalOffsetAfterLineNumber(o.lineNumber,s)}getTopForLineNumber(e,t=!1){return this._modelData?c1._getVerticalOffsetForPosition(this._modelData,e,1,t):-1}getTopForPosition(e,t){return this._modelData?c1._getVerticalOffsetForPosition(this._modelData,e,t,!1):-1}static _getVerticalOffsetForPosition(e,t,i,s=!1){const r=e.model.validatePosition({lineNumber:t,column:i}),o=e.viewModel.coordinatesConverter.convertModelPositionToViewPosition(r);return e.viewModel.viewLayout.getVerticalOffsetForLineNumber(o.lineNumber,s)}getBottomForLineNumber(e,t=!1){return this._modelData?c1._getVerticalOffsetAfterPosition(this._modelData,e,1,t):-1}setHiddenAreas(e,t){var i;(i=this._modelData)===null||i===void 0||i.viewModel.setHiddenAreas(e.map(s=>M.lift(s)),t)}getVisibleColumnFromPosition(e){if(!this._modelData)return e.column;const t=this._modelData.model.validatePosition(e),i=this._modelData.model.getOptions().tabSize;return xs.visibleColumnFromColumn(this._modelData.model.getLineContent(t.lineNumber),t.column,i)+1}getPosition(){return this._modelData?this._modelData.viewModel.getPosition():null}setPosition(e,t="api"){if(this._modelData){if(!he.isIPosition(e))throw new Error("Invalid arguments");this._modelData.viewModel.setSelections(t,[{selectionStartLineNumber:e.lineNumber,selectionStartColumn:e.column,positionLineNumber:e.lineNumber,positionColumn:e.column}])}}_sendRevealRange(e,t,i,s){if(!this._modelData)return;if(!M.isIRange(e))throw new Error("Invalid arguments");const r=this._modelData.model.validateRange(e),o=this._modelData.viewModel.coordinatesConverter.convertModelRangeToViewRange(r);this._modelData.viewModel.revealRange("api",i,o,t,s)}revealLine(e,t=0){this._revealLine(e,0,t)}revealLineInCenter(e,t=0){this._revealLine(e,1,t)}revealLineInCenterIfOutsideViewport(e,t=0){this._revealLine(e,2,t)}revealLineNearTop(e,t=0){this._revealLine(e,5,t)}_revealLine(e,t,i){if(typeof e!="number")throw new Error("Invalid arguments");this._sendRevealRange(new M(e,1,e,1),t,!1,i)}revealPosition(e,t=0){this._revealPosition(e,0,!0,t)}revealPositionInCenter(e,t=0){this._revealPosition(e,1,!0,t)}revealPositionInCenterIfOutsideViewport(e,t=0){this._revealPosition(e,2,!0,t)}revealPositionNearTop(e,t=0){this._revealPosition(e,5,!0,t)}_revealPosition(e,t,i,s){if(!he.isIPosition(e))throw new Error("Invalid arguments");this._sendRevealRange(new M(e.lineNumber,e.column,e.lineNumber,e.column),t,i,s)}getSelection(){return this._modelData?this._modelData.viewModel.getSelection():null}getSelections(){return this._modelData?this._modelData.viewModel.getSelections():null}setSelection(e,t="api"){const i=Ze.isISelection(e),s=M.isIRange(e);if(!i&&!s)throw new Error("Invalid arguments");if(i)this._setSelectionImpl(e,t);else if(s){const r={selectionStartLineNumber:e.startLineNumber,selectionStartColumn:e.startColumn,positionLineNumber:e.endLineNumber,positionColumn:e.endColumn};this._setSelectionImpl(r,t)}}_setSelectionImpl(e,t){if(!this._modelData)return;const i=new Ze(e.selectionStartLineNumber,e.selectionStartColumn,e.positionLineNumber,e.positionColumn);this._modelData.viewModel.setSelections(t,[i])}revealLines(e,t,i=0){this._revealLines(e,t,0,i)}revealLinesInCenter(e,t,i=0){this._revealLines(e,t,1,i)}revealLinesInCenterIfOutsideViewport(e,t,i=0){this._revealLines(e,t,2,i)}revealLinesNearTop(e,t,i=0){this._revealLines(e,t,5,i)}_revealLines(e,t,i,s){if(typeof e!="number"||typeof t!="number")throw new Error("Invalid arguments");this._sendRevealRange(new M(e,1,t,1),i,!1,s)}revealRange(e,t=0,i=!1,s=!0){this._revealRange(e,i?1:0,s,t)}revealRangeInCenter(e,t=0){this._revealRange(e,1,!0,t)}revealRangeInCenterIfOutsideViewport(e,t=0){this._revealRange(e,2,!0,t)}revealRangeNearTop(e,t=0){this._revealRange(e,5,!0,t)}revealRangeNearTopIfOutsideViewport(e,t=0){this._revealRange(e,6,!0,t)}revealRangeAtTop(e,t=0){this._revealRange(e,3,!0,t)}_revealRange(e,t,i,s){if(!M.isIRange(e))throw new Error("Invalid arguments");this._sendRevealRange(M.lift(e),t,i,s)}setSelections(e,t="api",i=0){if(this._modelData){if(!e||e.length===0)throw new Error("Invalid arguments");for(let s=0,r=e.length;s<r;s++)if(!Ze.isISelection(e[s]))throw new Error("Invalid arguments");this._modelData.viewModel.setSelections(t,e,i)}}getContentWidth(){return this._modelData?this._modelData.viewModel.viewLayout.getContentWidth():-1}getScrollWidth(){return this._modelData?this._modelData.viewModel.viewLayout.getScrollWidth():-1}getScrollLeft(){return this._modelData?this._modelData.viewModel.viewLayout.getCurrentScrollLeft():-1}getContentHeight(){return this._modelData?this._modelData.viewModel.viewLayout.getContentHeight():-1}getScrollHeight(){return this._modelData?this._modelData.viewModel.viewLayout.getScrollHeight():-1}getScrollTop(){return this._modelData?this._modelData.viewModel.viewLayout.getCurrentScrollTop():-1}setScrollLeft(e,t=1){if(this._modelData){if(typeof e!="number")throw new Error("Invalid arguments");this._modelData.viewModel.viewLayout.setScrollPosition({scrollLeft:e},t)}}setScrollTop(e,t=1){if(this._modelData){if(typeof e!="number")throw new Error("Invalid arguments");this._modelData.viewModel.viewLayout.setScrollPosition({scrollTop:e},t)}}setScrollPosition(e,t=1){this._modelData&&this._modelData.viewModel.viewLayout.setScrollPosition(e,t)}hasPendingScrollAnimation(){return this._modelData?this._modelData.viewModel.viewLayout.hasPendingScrollAnimation():!1}saveViewState(){if(!this._modelData)return null;const e=this._contributions.saveViewState(),t=this._modelData.viewModel.saveCursorState(),i=this._modelData.viewModel.saveState();return{cursorState:t,viewState:i,contributionsState:e}}restoreViewState(e){if(!this._modelData||!this._modelData.hasRealView)return;const t=e;if(t&&t.cursorState&&t.viewState){const i=t.cursorState;Array.isArray(i)?i.length>0&&this._modelData.viewModel.restoreCursorState(i):this._modelData.viewModel.restoreCursorState([i]),this._contributions.restoreViewState(t.contributionsState||{});const s=this._modelData.viewModel.reduceRestoreState(t.viewState);this._modelData.view.restoreState(s)}}handleInitialized(){var e;(e=this._getViewModel())===null||e===void 0||e.visibleLinesStabilized()}getContribution(e){return this._contributions.get(e)}getActions(){return Array.from(this._actions.values())}getSupportedActions(){let e=this.getActions();return e=e.filter(t=>t.isSupported()),e}getAction(e){return this._actions.get(e)||null}trigger(e,t,i){switch(i=i||{},t){case"compositionStart":this._startComposition();return;case"compositionEnd":this._endComposition(e);return;case"type":{const r=i;this._type(e,r.text||"");return}case"replacePreviousChar":{const r=i;this._compositionType(e,r.text||"",r.replaceCharCnt||0,0,0);return}case"compositionType":{const r=i;this._compositionType(e,r.text||"",r.replacePrevCharCnt||0,r.replaceNextCharCnt||0,r.positionDelta||0);return}case"paste":{const r=i;this._paste(e,r.text||"",r.pasteOnNewLine||!1,r.multicursorText||null,r.mode||null);return}case"cut":this._cut(e);return}const s=this.getAction(t);if(s){Promise.resolve(s.run(i)).then(void 0,vt);return}this._modelData&&(this._triggerEditorCommand(e,t,i)||this._triggerCommand(t,i))}_triggerCommand(e,t){this._commandService.executeCommand(e,t)}_startComposition(){this._modelData&&(this._modelData.viewModel.startComposition(),this._onDidCompositionStart.fire())}_endComposition(e){this._modelData&&(this._modelData.viewModel.endComposition(e),this._onDidCompositionEnd.fire())}_type(e,t){!this._modelData||t.length===0||(e==="keyboard"&&this._onWillType.fire(t),this._modelData.viewModel.type(t,e),e==="keyboard"&&this._onDidType.fire(t))}_compositionType(e,t,i,s,r){this._modelData&&this._modelData.viewModel.compositionType(t,i,s,r,e)}_paste(e,t,i,s,r){if(!this._modelData||t.length===0)return;const o=this._modelData.viewModel,a=o.getSelection().getStartPosition();o.paste(t,i,s,e);const l=o.getSelection().getStartPosition();e==="keyboard"&&this._onDidPaste.fire({range:new M(a.lineNumber,a.column,l.lineNumber,l.column),languageId:r})}_cut(e){this._modelData&&this._modelData.viewModel.cut(e)}_triggerEditorCommand(e,t,i){const s=mb.getEditorCommand(t);return s?(i=i||{},i.source=e,this._instantiationService.invokeFunction(r=>{Promise.resolve(s.runEditorCommand(r,this,i)).then(void 0,vt)}),!0):!1}_getViewModel(){return this._modelData?this._modelData.viewModel:null}pushUndoStop(){return!this._modelData||this._configuration.options.get(90)?!1:(this._modelData.model.pushStackElement(),!0)}popUndoStop(){return!this._modelData||this._configuration.options.get(90)?!1:(this._modelData.model.popStackElement(),!0)}executeEdits(e,t,i){if(!this._modelData||this._configuration.options.get(90))return!1;let s;return i?Array.isArray(i)?s=()=>i:s=i:s=()=>null,this._modelData.viewModel.executeEdits(e,t,s),!0}executeCommand(e,t){this._modelData&&this._modelData.viewModel.executeCommand(t,e)}executeCommands(e,t){this._modelData&&this._modelData.viewModel.executeCommands(t,e)}createDecorationsCollection(e){return new AKe(this,e)}changeDecorations(e){return this._modelData?this._modelData.model.changeDecorations(e,this._id):null}getLineDecorations(e){return this._modelData?this._modelData.model.getLineDecorations(e,this._id,GA(this._configuration.options)):null}getDecorationsInRange(e){return this._modelData?this._modelData.model.getDecorationsInRange(e,this._id,GA(this._configuration.options)):null}deltaDecorations(e,t){return this._modelData?e.length===0&&t.length===0?e:this._modelData.model.deltaDecorations(e,t,this._id):[]}removeDecorations(e){!this._modelData||e.length===0||this._modelData.model.changeDecorations(t=>{t.deltaDecorations(e,[])})}removeDecorationsByType(e){const t=this._decorationTypeKeysToIds[e];t&&this.deltaDecorations(t,[]),this._decorationTypeKeysToIds.hasOwnProperty(e)&&delete this._decorationTypeKeysToIds[e],this._decorationTypeSubtypes.hasOwnProperty(e)&&delete this._decorationTypeSubtypes[e]}getLayoutInfo(){return this._configuration.options.get(143)}createOverviewRuler(e){return!this._modelData||!this._modelData.hasRealView?null:this._modelData.view.createOverviewRuler(e)}getContainerDomNode(){return this._domElement}getDomNode(){return!this._modelData||!this._modelData.hasRealView?null:this._modelData.view.domNode.domNode}delegateVerticalScrollbarPointerDown(e){!this._modelData||!this._modelData.hasRealView||this._modelData.view.delegateVerticalScrollbarPointerDown(e)}delegateScrollFromMouseWheelEvent(e){!this._modelData||!this._modelData.hasRealView||this._modelData.view.delegateScrollFromMouseWheelEvent(e)}layout(e,t=!1){this._configuration.observeContainer(e),t||this.render()}focus(){!this._modelData||!this._modelData.hasRealView||this._modelData.view.focus()}hasTextFocus(){return!this._modelData||!this._modelData.hasRealView?!1:this._modelData.view.isFocused()}hasWidgetFocus(){return this._focusTracker&&this._focusTracker.hasFocus()}addContentWidget(e){const t={widget:e,position:e.getPosition()};this._contentWidgets.hasOwnProperty(e.getId())&&console.warn("Overwriting a content widget with the same id:"+e.getId()),this._contentWidgets[e.getId()]=t,this._modelData&&this._modelData.hasRealView&&this._modelData.view.addContentWidget(t)}layoutContentWidget(e){const t=e.getId();if(this._contentWidgets.hasOwnProperty(t)){const i=this._contentWidgets[t];i.position=e.getPosition(),this._modelData&&this._modelData.hasRealView&&this._modelData.view.layoutContentWidget(i)}}removeContentWidget(e){const t=e.getId();if(this._contentWidgets.hasOwnProperty(t)){const i=this._contentWidgets[t];delete this._contentWidgets[t],this._modelData&&this._modelData.hasRealView&&this._modelData.view.removeContentWidget(i)}}addOverlayWidget(e){const t={widget:e,position:e.getPosition()};this._overlayWidgets.hasOwnProperty(e.getId())&&console.warn("Overwriting an overlay widget with the same id."),this._overlayWidgets[e.getId()]=t,this._modelData&&this._modelData.hasRealView&&this._modelData.view.addOverlayWidget(t)}layoutOverlayWidget(e){const t=e.getId();if(this._overlayWidgets.hasOwnProperty(t)){const i=this._overlayWidgets[t];i.position=e.getPosition(),this._modelData&&this._modelData.hasRealView&&this._modelData.view.layoutOverlayWidget(i)}}removeOverlayWidget(e){const t=e.getId();if(this._overlayWidgets.hasOwnProperty(t)){const i=this._overlayWidgets[t];delete this._overlayWidgets[t],this._modelData&&this._modelData.hasRealView&&this._modelData.view.removeOverlayWidget(i)}}addGlyphMarginWidget(e){const t={widget:e,position:e.getPosition()};this._glyphMarginWidgets.hasOwnProperty(e.getId())&&console.warn("Overwriting a glyph margin widget with the same id."),this._glyphMarginWidgets[e.getId()]=t,this._modelData&&this._modelData.hasRealView&&this._modelData.view.addGlyphMarginWidget(t)}layoutGlyphMarginWidget(e){const t=e.getId();if(this._glyphMarginWidgets.hasOwnProperty(t)){const i=this._glyphMarginWidgets[t];i.position=e.getPosition(),this._modelData&&this._modelData.hasRealView&&this._modelData.view.layoutGlyphMarginWidget(i)}}removeGlyphMarginWidget(e){const t=e.getId();if(this._glyphMarginWidgets.hasOwnProperty(t)){const i=this._glyphMarginWidgets[t];delete this._glyphMarginWidgets[t],this._modelData&&this._modelData.hasRealView&&this._modelData.view.removeGlyphMarginWidget(i)}}changeViewZones(e){!this._modelData||!this._modelData.hasRealView||this._modelData.view.change(e)}getTargetAtClientPoint(e,t){return!this._modelData||!this._modelData.hasRealView?null:this._modelData.view.getTargetAtClientPoint(e,t)}getScrolledVisiblePosition(e){if(!this._modelData||!this._modelData.hasRealView)return null;const t=this._modelData.model.validatePosition(e),i=this._configuration.options,s=i.get(143),r=c1._getVerticalOffsetForPosition(this._modelData,t.lineNumber,t.column)-this.getScrollTop(),o=this._modelData.view.getOffsetForColumn(t.lineNumber,t.column)+s.glyphMarginWidth+s.lineNumbersWidth+s.decorationsWidth-this.getScrollLeft();return{top:r,left:o,height:i.get(66)}}getOffsetForColumn(e,t){return!this._modelData||!this._modelData.hasRealView?-1:this._modelData.view.getOffsetForColumn(e,t)}render(e=!1){!this._modelData||!this._modelData.hasRealView||this._modelData.view.render(!0,e)}setAriaOptions(e){!this._modelData||!this._modelData.hasRealView||this._modelData.view.setAriaOptions(e)}applyFontInfo(e){_r(e,this._configuration.options.get(50))}setBanner(e,t){this._bannerDomNode&&this._domElement.contains(this._bannerDomNode)&&this._domElement.removeChild(this._bannerDomNode),this._bannerDomNode=e,this._configuration.setReservedHeight(e?t:0),this._bannerDomNode&&this._domElement.prepend(this._bannerDomNode)}_attachModel(e){if(!e){this._modelData=null;return}const t=[];this._domElement.setAttribute("data-mode-id",e.getLanguageId()),this._configuration.setIsDominatedByLongLines(e.isDominatedByLongLines()),this._configuration.setModelLineCount(e.getLineCount());const i=e.onBeforeAttached(),s=new gKe(this._id,this._configuration,e,qq.create(pt(this._domElement)),jq.create(this._configuration.options),a=>ua(pt(this._domElement),a),this.languageConfigurationService,this._themeService,i);t.push(e.onWillDispose(()=>this.setModel(null))),t.push(s.onEvent(a=>{switch(a.kind){case 0:this._onDidContentSizeChange.fire(a);break;case 1:this._editorTextFocus.setValue(a.hasFocus);break;case 2:this._onDidScrollChange.fire(a);break;case 3:this._onDidChangeViewZones.fire();break;case 4:this._onDidChangeHiddenAreas.fire();break;case 5:this._onDidAttemptReadOnlyEdit.fire();break;case 6:{if(a.reachedMaxCursorCount){const h=this.getOption(79),d=v("cursors.maximum","The number of cursors has been limited to {0}. Consider using [find and replace](https://code.visualstudio.com/docs/editor/codebasics#_find-and-replace) for larger changes or increase the editor multi cursor limit setting.",h);this._notificationService.prompt(ZO.Warning,d,[{label:"Find and Replace",run:()=>{this._commandService.executeCommand("editor.action.startFindReplaceAction")}},{label:v("goToSetting","Increase Multi Cursor Limit"),run:()=>{this._commandService.executeCommand("workbench.action.openSettings2",{query:"editor.multiCursorLimit"})}}])}const l=[];for(let h=0,d=a.selections.length;h<d;h++)l[h]=a.selections[h].getPosition();const c={position:l[0],secondaryPositions:l.slice(1),reason:a.reason,source:a.source};this._onDidChangeCursorPosition.fire(c);const u={selection:a.selections[0],secondarySelections:a.selections.slice(1),modelVersionId:a.modelVersionId,oldSelections:a.oldSelections,oldModelVersionId:a.oldModelVersionId,source:a.source,reason:a.reason};this._onDidChangeCursorSelection.fire(u);break}case 7:this._onDidChangeModelDecorations.fire(a.event);break;case 8:this._domElement.setAttribute("data-mode-id",e.getLanguageId()),this._onDidChangeModelLanguage.fire(a.event);break;case 9:this._onDidChangeModelLanguageConfiguration.fire(a.event);break;case 10:this._onDidChangeModelContent.fire(a.event);break;case 11:this._onDidChangeModelOptions.fire(a.event);break;case 12:this._onDidChangeModelTokens.fire(a.event);break}}));const[r,o]=this._createView(s);if(o){this._domElement.appendChild(r.domNode.domNode);let a=Object.keys(this._contentWidgets);for(let l=0,c=a.length;l<c;l++){const u=a[l];r.addContentWidget(this._contentWidgets[u])}a=Object.keys(this._overlayWidgets);for(let l=0,c=a.length;l<c;l++){const u=a[l];r.addOverlayWidget(this._overlayWidgets[u])}a=Object.keys(this._glyphMarginWidgets);for(let l=0,c=a.length;l<c;l++){const u=a[l];r.addGlyphMarginWidget(this._glyphMarginWidgets[u])}r.render(!1,!0),r.domNode.domNode.setAttribute("data-uri",e.uri.toString())}this._modelData=new DKe(e,s,r,o,t,i)}_createView(e){let t;this.isSimpleWidget?t={paste:(r,o,a,l)=>{this._paste("keyboard",r,o,a,l)},type:r=>{this._type("keyboard",r)},compositionType:(r,o,a,l)=>{this._compositionType("keyboard",r,o,a,l)},startComposition:()=>{this._startComposition()},endComposition:()=>{this._endComposition("keyboard")},cut:()=>{this._cut("keyboard")}}:t={paste:(r,o,a,l)=>{const c={text:r,pasteOnNewLine:o,multicursorText:a,mode:l};this._commandService.executeCommand("paste",c)},type:r=>{const o={text:r};this._commandService.executeCommand("type",o)},compositionType:(r,o,a,l)=>{if(a||l){const c={text:r,replacePrevCharCnt:o,replaceNextCharCnt:a,positionDelta:l};this._commandService.executeCommand("compositionType",c)}else{const c={text:r,replaceCharCnt:o};this._commandService.executeCommand("replacePreviousChar",c)}},startComposition:()=>{this._commandService.executeCommand("compositionStart",{})},endComposition:()=>{this._commandService.executeCommand("compositionEnd",{})},cut:()=>{this._commandService.executeCommand("cut",{})}};const i=new UO(e.coordinatesConverter);return i.onKeyDown=r=>this._onKeyDown.fire(r),i.onKeyUp=r=>this._onKeyUp.fire(r),i.onContextMenu=r=>this._onContextMenu.fire(r),i.onMouseMove=r=>this._onMouseMove.fire(r),i.onMouseLeave=r=>this._onMouseLeave.fire(r),i.onMouseDown=r=>this._onMouseDown.fire(r),i.onMouseUp=r=>this._onMouseUp.fire(r),i.onMouseDrag=r=>this._onMouseDrag.fire(r),i.onMouseDrop=r=>this._onMouseDrop.fire(r),i.onMouseDropCanceled=r=>this._onMouseDropCanceled.fire(r),i.onMouseWheel=r=>this._onMouseWheel.fire(r),[new x9(t,this._configuration,this._themeService.getColorTheme(),e,i,this._overflowWidgetsDomNode,this._instantiationService),!0]}_postDetachModelCleanup(e){e==null||e.removeAllDecorationsWithOwnerId(this._id)}_detachModel(){if(!this._modelData)return null;const e=this._modelData.model,t=this._modelData.hasRealView?this._modelData.view.domNode.domNode:null;return this._modelData.dispose(),this._modelData=null,this._domElement.removeAttribute("data-mode-id"),t&&this._domElement.contains(t)&&this._domElement.removeChild(t),this._bannerDomNode&&this._domElement.contains(this._bannerDomNode)&&this._domElement.removeChild(this._bannerDomNode),e}_removeDecorationType(e){this._codeEditorService.removeDecorationType(e)}hasModel(){return this._modelData!==null}showDropIndicatorAt(e){const t=[{range:new M(e.lineNumber,e.column,e.lineNumber,e.column),options:c1.dropIntoEditorDecorationOptions}];this._dropIntoEditorDecorations.set(t),this.revealPosition(e,1)}removeDropIndicator(){this._dropIntoEditorDecorations.clear()}setContextValue(e,t){this._contextKeyService.createKey(e,t)}};Ey.dropIntoEditorDecorationOptions=yt.register({description:"workbench-dnd-target",className:"dnd-target"});Ey=c1=xKe([Bd(3,at),Bd(4,ri),Bd(5,Dn),Bd(6,ft),Bd(7,Ms),Bd(8,is),Bd(9,Dd),Bd(10,Bi),Bd(11,Ge)],Ey);class fte extends pe{constructor(e){super(),this._emitterOptions=e,this._onDidChangeToTrue=this._register(new ue(this._emitterOptions)),this.onDidChangeToTrue=this._onDidChangeToTrue.event,this._onDidChangeToFalse=this._register(new ue(this._emitterOptions)),this.onDidChangeToFalse=this._onDidChangeToFalse.event,this._value=0}setValue(e){const t=e?2:1;this._value!==t&&(this._value=t,this._value===2?this._onDidChangeToTrue.fire():this._value===1&&this._onDidChangeToFalse.fire())}}class Rr extends ue{constructor(e,t){super({deliveryQueue:t}),this._contributions=e}fire(e){this._contributions.onBeforeInteractionEvent(),super.fire(e)}}class IKe extends pe{constructor(e,t){super(),this._editor=e,t.createKey("editorId",e.getId()),this._editorSimpleInput=$.editorSimpleInput.bindTo(t),this._editorFocus=$.focus.bindTo(t),this._textInputFocus=$.textInputFocus.bindTo(t),this._editorTextFocus=$.editorTextFocus.bindTo(t),this._tabMovesFocus=$.tabMovesFocus.bindTo(t),this._editorReadonly=$.readOnly.bindTo(t),this._inDiffEditor=$.inDiffEditor.bindTo(t),this._editorColumnSelection=$.columnSelection.bindTo(t),this._hasMultipleSelections=$.hasMultipleSelections.bindTo(t),this._hasNonEmptySelection=$.hasNonEmptySelection.bindTo(t),this._canUndo=$.canUndo.bindTo(t),this._canRedo=$.canRedo.bindTo(t),this._register(this._editor.onDidChangeConfiguration(()=>this._updateFromConfig())),this._register(this._editor.onDidChangeCursorSelection(()=>this._updateFromSelection())),this._register(this._editor.onDidFocusEditorWidget(()=>this._updateFromFocus())),this._register(this._editor.onDidBlurEditorWidget(()=>this._updateFromFocus())),this._register(this._editor.onDidFocusEditorText(()=>this._updateFromFocus())),this._register(this._editor.onDidBlurEditorText(()=>this._updateFromFocus())),this._register(this._editor.onDidChangeModel(()=>this._updateFromModel())),this._register(this._editor.onDidChangeConfiguration(()=>this._updateFromModel())),this._register(_y.onDidChangeTabFocus(i=>this._tabMovesFocus.set(i))),this._updateFromConfig(),this._updateFromSelection(),this._updateFromFocus(),this._updateFromModel(),this._editorSimpleInput.set(this._editor.isSimpleWidget)}_updateFromConfig(){const e=this._editor.getOptions();this._tabMovesFocus.set(_y.getTabFocusMode()),this._editorReadonly.set(e.get(90)),this._inDiffEditor.set(e.get(61)),this._editorColumnSelection.set(e.get(22))}_updateFromSelection(){const e=this._editor.getSelections();e?(this._hasMultipleSelections.set(e.length>1),this._hasNonEmptySelection.set(e.some(t=>!t.isEmpty()))):(this._hasMultipleSelections.reset(),this._hasNonEmptySelection.reset())}_updateFromFocus(){this._editorFocus.set(this._editor.hasWidgetFocus()&&!this._editor.isSimpleWidget),this._editorTextFocus.set(this._editor.hasTextFocus()&&!this._editor.isSimpleWidget),this._textInputFocus.set(this._editor.hasTextFocus())}_updateFromModel(){const e=this._editor.getModel();this._canUndo.set(!!(e&&e.canUndo())),this._canRedo.set(!!(e&&e.canRedo()))}}class TKe extends pe{constructor(e,t,i){super(),this._editor=e,this._contextKeyService=t,this._languageFeaturesService=i,this._langId=$.languageId.bindTo(t),this._hasCompletionItemProvider=$.hasCompletionItemProvider.bindTo(t),this._hasCodeActionsProvider=$.hasCodeActionsProvider.bindTo(t),this._hasCodeLensProvider=$.hasCodeLensProvider.bindTo(t),this._hasDefinitionProvider=$.hasDefinitionProvider.bindTo(t),this._hasDeclarationProvider=$.hasDeclarationProvider.bindTo(t),this._hasImplementationProvider=$.hasImplementationProvider.bindTo(t),this._hasTypeDefinitionProvider=$.hasTypeDefinitionProvider.bindTo(t),this._hasHoverProvider=$.hasHoverProvider.bindTo(t),this._hasDocumentHighlightProvider=$.hasDocumentHighlightProvider.bindTo(t),this._hasDocumentSymbolProvider=$.hasDocumentSymbolProvider.bindTo(t),this._hasReferenceProvider=$.hasReferenceProvider.bindTo(t),this._hasRenameProvider=$.hasRenameProvider.bindTo(t),this._hasSignatureHelpProvider=$.hasSignatureHelpProvider.bindTo(t),this._hasInlayHintsProvider=$.hasInlayHintsProvider.bindTo(t),this._hasDocumentFormattingProvider=$.hasDocumentFormattingProvider.bindTo(t),this._hasDocumentSelectionFormattingProvider=$.hasDocumentSelectionFormattingProvider.bindTo(t),this._hasMultipleDocumentFormattingProvider=$.hasMultipleDocumentFormattingProvider.bindTo(t),this._hasMultipleDocumentSelectionFormattingProvider=$.hasMultipleDocumentSelectionFormattingProvider.bindTo(t),this._isInWalkThrough=$.isInWalkThroughSnippet.bindTo(t);const s=()=>this._update();this._register(e.onDidChangeModel(s)),this._register(e.onDidChangeModelLanguage(s)),this._register(i.completionProvider.onDidChange(s)),this._register(i.codeActionProvider.onDidChange(s)),this._register(i.codeLensProvider.onDidChange(s)),this._register(i.definitionProvider.onDidChange(s)),this._register(i.declarationProvider.onDidChange(s)),this._register(i.implementationProvider.onDidChange(s)),this._register(i.typeDefinitionProvider.onDidChange(s)),this._register(i.hoverProvider.onDidChange(s)),this._register(i.documentHighlightProvider.onDidChange(s)),this._register(i.documentSymbolProvider.onDidChange(s)),this._register(i.referenceProvider.onDidChange(s)),this._register(i.renameProvider.onDidChange(s)),this._register(i.documentFormattingEditProvider.onDidChange(s)),this._register(i.documentRangeFormattingEditProvider.onDidChange(s)),this._register(i.signatureHelpProvider.onDidChange(s)),this._register(i.inlayHintsProvider.onDidChange(s)),s()}dispose(){super.dispose()}reset(){this._contextKeyService.bufferChangeEvents(()=>{this._langId.reset(),this._hasCompletionItemProvider.reset(),this._hasCodeActionsProvider.reset(),this._hasCodeLensProvider.reset(),this._hasDefinitionProvider.reset(),this._hasDeclarationProvider.reset(),this._hasImplementationProvider.reset(),this._hasTypeDefinitionProvider.reset(),this._hasHoverProvider.reset(),this._hasDocumentHighlightProvider.reset(),this._hasDocumentSymbolProvider.reset(),this._hasReferenceProvider.reset(),this._hasRenameProvider.reset(),this._hasDocumentFormattingProvider.reset(),this._hasDocumentSelectionFormattingProvider.reset(),this._hasSignatureHelpProvider.reset(),this._isInWalkThrough.reset()})}_update(){const e=this._editor.getModel();if(!e){this.reset();return}this._contextKeyService.bufferChangeEvents(()=>{this._langId.set(e.getLanguageId()),this._hasCompletionItemProvider.set(this._languageFeaturesService.completionProvider.has(e)),this._hasCodeActionsProvider.set(this._languageFeaturesService.codeActionProvider.has(e)),this._hasCodeLensProvider.set(this._languageFeaturesService.codeLensProvider.has(e)),this._hasDefinitionProvider.set(this._languageFeaturesService.definitionProvider.has(e)),this._hasDeclarationProvider.set(this._languageFeaturesService.declarationProvider.has(e)),this._hasImplementationProvider.set(this._languageFeaturesService.implementationProvider.has(e)),this._hasTypeDefinitionProvider.set(this._languageFeaturesService.typeDefinitionProvider.has(e)),this._hasHoverProvider.set(this._languageFeaturesService.hoverProvider.has(e)),this._hasDocumentHighlightProvider.set(this._languageFeaturesService.documentHighlightProvider.has(e)),this._hasDocumentSymbolProvider.set(this._languageFeaturesService.documentSymbolProvider.has(e)),this._hasReferenceProvider.set(this._languageFeaturesService.referenceProvider.has(e)),this._hasRenameProvider.set(this._languageFeaturesService.renameProvider.has(e)),this._hasSignatureHelpProvider.set(this._languageFeaturesService.signatureHelpProvider.has(e)),this._hasInlayHintsProvider.set(this._languageFeaturesService.inlayHintsProvider.has(e)),this._hasDocumentFormattingProvider.set(this._languageFeaturesService.documentFormattingEditProvider.has(e)||this._languageFeaturesService.documentRangeFormattingEditProvider.has(e)),this._hasDocumentSelectionFormattingProvider.set(this._languageFeaturesService.documentRangeFormattingEditProvider.has(e)),this._hasMultipleDocumentFormattingProvider.set(this._languageFeaturesService.documentFormattingEditProvider.all(e).length+this._languageFeaturesService.documentRangeFormattingEditProvider.all(e).length>1),this._hasMultipleDocumentSelectionFormattingProvider.set(this._languageFeaturesService.documentRangeFormattingEditProvider.all(e).length>1),this._isInWalkThrough.set(e.uri.scheme===wt.walkThroughSnippet)})}}class NKe extends pe{constructor(e){super(),this._onChange=this._register(new ue),this.onChange=this._onChange.event,this._hasFocus=!1,this._domFocusTracker=this._register(gd(e)),this._register(this._domFocusTracker.onDidFocus(()=>{this._hasFocus=!0,this._onChange.fire(void 0)})),this._register(this._domFocusTracker.onDidBlur(()=>{this._hasFocus=!1,this._onChange.fire(void 0)}))}hasFocus(){return this._hasFocus}}class AKe{get length(){return this._decorationIds.length}constructor(e,t){this._editor=e,this._decorationIds=[],this._isChangingDecorations=!1,Array.isArray(t)&&t.length>0&&this.set(t)}onDidChange(e,t,i){return this._editor.onDidChangeModelDecorations(s=>{this._isChangingDecorations||e.call(t,s)},i)}getRange(e){return!this._editor.hasModel()||e>=this._decorationIds.length?null:this._editor.getModel().getDecorationRange(this._decorationIds[e])}getRanges(){if(!this._editor.hasModel())return[];const e=this._editor.getModel(),t=[];for(const i of this._decorationIds){const s=e.getDecorationRange(i);s&&t.push(s)}return t}has(e){return this._decorationIds.includes(e.id)}clear(){this._decorationIds.length!==0&&this.set([])}set(e){try{this._isChangingDecorations=!0,this._editor.changeDecorations(t=>{this._decorationIds=t.deltaDecorations(this._decorationIds,e)})}finally{this._isChangingDecorations=!1}return this._decorationIds}append(e){let t=[];try{this._isChangingDecorations=!0,this._editor.changeDecorations(i=>{t=i.deltaDecorations([],e),this._decorationIds=this._decorationIds.concat(t)})}finally{this._isChangingDecorations=!1}return t}}const PKe=encodeURIComponent("<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 3' enable-background='new 0 0 6 3' height='3' width='6'><g fill='"),RKe=encodeURIComponent("'><polygon points='5.5,0 2.5,3 1.1,3 4.1,0'/><polygon points='4,0 6,2 6,0.6 5.4,0'/><polygon points='0,2 1,3 2.4,3 0,0.6'/></g></svg>");function s3(n){return PKe+encodeURIComponent(n.toString())+RKe}const MKe=encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" height="3" width="12"><g fill="'),OKe=encodeURIComponent('"><circle cx="1" cy="1" r="1"/><circle cx="5" cy="1" r="1"/><circle cx="9" cy="1" r="1"/></g></svg>');function FKe(n){return MKe+encodeURIComponent(n.toString())+OKe}Nc((n,e)=>{const t=n.getColor(Rh);t&&e.addRule(`.monaco-editor .squiggly-error { background: url("data:image/svg+xml,${s3(t)}") repeat-x bottom left; }`);const i=n.getColor(za);i&&e.addRule(`.monaco-editor .squiggly-warning { background: url("data:image/svg+xml,${s3(i)}") repeat-x bottom left; }`);const s=n.getColor(Ao);s&&e.addRule(`.monaco-editor .squiggly-info { background: url("data:image/svg+xml,${s3(s)}") repeat-x bottom left; }`);const r=n.getColor(UVe);r&&e.addRule(`.monaco-editor .squiggly-hint { background: url("data:image/svg+xml,${FKe(r)}") no-repeat bottom left; }`);const o=n.getColor(gze);o&&e.addRule(`.monaco-editor.showUnused .squiggly-inline-unnecessary { opacity: ${o.rgba.a}; }`)});let BKe;function td(){return BKe}let Eme;function WKe(n){Eme=n}let Dme;function VKe(n){Dme=n}class Ime{get TChange(){return null}reportChanges(){this.get()}read(e){return e?e.readObservable(this):this.get()}map(e,t){const i=t===void 0?void 0:e,s=t===void 0?e:t;return Dme({owner:i,debugName:()=>{const r=Pm(s);if(r!==void 0)return r;const a=/^\s*\(?\s*([a-zA-Z_$][a-zA-Z_$0-9]*)\s*\)?\s*=>\s*\1(?:\??)\.([a-zA-Z_$][a-zA-Z_$0-9]*)\s*$/.exec(s.toString());if(a)return`${this.debugName}.${a[2]}`;if(!i)return`${this.debugName} (mapped)`}},r=>s(this.read(r),r))}recomputeInitiallyAndOnChange(e,t){return e.add(Eme(this,t)),this}}class IE extends Ime{constructor(){super(...arguments),this.observers=new Set}addObserver(e){const t=this.observers.size;this.observers.add(e),t===0&&this.onFirstObserverAdded()}removeObserver(e){this.observers.delete(e)&&this.observers.size===0&&this.onLastObserverRemoved()}onFirstObserverAdded(){}onLastObserverRemoved(){}}function ln(n,e){const t=new XO(n,e);try{n(t)}finally{t.finish()}}let vI;function cN(n){if(vI)n(vI);else{const e=new XO(n,void 0);vI=e;try{n(e)}finally{e.finish(),vI=void 0}}}async function HKe(n,e){const t=new XO(n,e);try{await n(t)}finally{t.finish()}}function KL(n,e,t){n?e(n):ln(e,t)}class XO{constructor(e,t){var i;this._fn=e,this._getDebugName=t,this.updatingObservers=[],(i=td())===null||i===void 0||i.handleBeginTransaction(this)}getDebugName(){return this._getDebugName?this._getDebugName():Pm(this._fn)}updateObserver(e,t){this.updatingObservers.push({observer:e,observable:t}),e.beginUpdate(t)}finish(){var e;const t=this.updatingObservers;for(let i=0;i<t.length;i++){const{observer:s,observable:r}=t[i];s.endUpdate(r)}this.updatingObservers=null,(e=td())===null||e===void 0||e.handleEndTransaction()}}const gte=new Map,z9=new WeakMap;function Kq(n,e,t,i,s){var r;const o=z9.get(n);if(o)return o;const a=$Ke(n,e,t,i,s);if(a){let l=(r=gte.get(a))!==null&&r!==void 0?r:0;l++,gte.set(a,l);const c=l===1?a:`${a}#${l}`;return z9.set(n,c),c}}function $Ke(n,e,t,i,s){const r=z9.get(n);if(r)return r;const o=i?zKe(i)+".":"";let a;if(e!==void 0)if(typeof e=="function"){if(a=e(),a!==void 0)return o+a}else return o+e;if(t!==void 0&&(a=Pm(t),a!==void 0))return o+a;if(i!==void 0){for(const l in i)if(i[l]===s)return o+l}}const pte=new Map,mte=new WeakMap;function zKe(n){var e;const t=mte.get(n);if(t)return t;const i=UKe(n);let s=(e=pte.get(i))!==null&&e!==void 0?e:0;s++,pte.set(i,s);const r=s===1?i:`${i}#${s}`;return mte.set(n,r),r}function UKe(n){const e=n.constructor;return e?e.name:"Object"}function Pm(n){const e=n.toString(),i=/\/\*\*\s*@description\s*([^*]*)\*\//.exec(e),s=i?i[1]:void 0;return s==null?void 0:s.trim()}function si(n,e){return typeof n=="string"?new U9(void 0,n,e):new U9(n,void 0,e)}class U9 extends IE{get debugName(){var e;return(e=Kq(this,this._debugName,void 0,this._owner,this))!==null&&e!==void 0?e:"ObservableValue"}constructor(e,t,i){super(),this._owner=e,this._debugName=t,this._value=i}get(){return this._value}set(e,t,i){var s;if(this._value===e)return;let r;t||(t=r=new XO(()=>{},()=>`Setting ${this.debugName}`));try{const o=this._value;this._setValue(e),(s=td())===null||s===void 0||s.handleObservableChanged(this,{oldValue:o,newValue:e,change:i,didChange:!0,hadValue:!0});for(const a of this.observers)t.updateObserver(a,this),a.handleChange(this,i)}finally{r&&r.finish()}}toString(){return`${this.debugName}: ${this._value}`}_setValue(e){this._value=e}}function fP(n,e){return typeof n=="string"?new _te(void 0,n,e):new _te(n,void 0,e)}class _te extends U9{_setValue(e){this._value!==e&&(this._value&&this._value.dispose(),this._value=e)}dispose(){var e;(e=this._value)===null||e===void 0||e.dispose()}}const Dy=(n,e)=>n===e;function St(n,e){return e!==void 0?new Iy(n,void 0,e,void 0,void 0,void 0,Dy):new Iy(void 0,void 0,n,void 0,void 0,void 0,Dy)}function j9(n,e){var t;return new Iy(n.owner,n.debugName,e,void 0,void 0,void 0,(t=n.equalityComparer)!==null&&t!==void 0?t:Dy)}function jKe(n,e){var t;return new Iy(n.owner,n.debugName,e,n.createEmptyChangeSummary,n.handleChange,void 0,(t=n.equalityComparer)!==null&&t!==void 0?t:Dy)}function RC(n,e){let t,i;e===void 0?(t=n,i=void 0):(i=n,t=e);const s=new xe;return new Iy(i,()=>{var r;return(r=Pm(t))!==null&&r!==void 0?r:"(anonymous)"},r=>(s.clear(),t(r,s)),void 0,void 0,()=>s.dispose(),Dy)}function Og(n,e){let t,i;e===void 0?(t=n,i=void 0):(i=n,t=e);const s=new xe;return new Iy(i,()=>{var r;return(r=Pm(t))!==null&&r!==void 0?r:"(anonymous)"},r=>{s.clear();const o=t(r);return o&&s.add(o),o},void 0,void 0,()=>s.dispose(),Dy)}VKe(j9);class Iy extends IE{get debugName(){var e;return(e=Kq(this,this._debugName,this._computeFn,this._owner,this))!==null&&e!==void 0?e:"(anonymous)"}constructor(e,t,i,s,r,o=void 0,a){var l,c;super(),this._owner=e,this._debugName=t,this._computeFn=i,this.createChangeSummary=s,this._handleChange=r,this._handleLastObserverRemoved=o,this._equalityComparator=a,this.state=0,this.value=void 0,this.updateCount=0,this.dependencies=new Set,this.dependenciesToBeRemoved=new Set,this.changeSummary=void 0,this.changeSummary=(l=this.createChangeSummary)===null||l===void 0?void 0:l.call(this),(c=td())===null||c===void 0||c.handleDerivedCreated(this)}onLastObserverRemoved(){var e;this.state=0,this.value=void 0;for(const t of this.dependencies)t.removeObserver(this);this.dependencies.clear(),(e=this._handleLastObserverRemoved)===null||e===void 0||e.call(this)}get(){var e;if(this.observers.size===0){const t=this._computeFn(this,(e=this.createChangeSummary)===null||e===void 0?void 0:e.call(this));return this.onLastObserverRemoved(),t}else{do{if(this.state===1){for(const t of this.dependencies)if(t.reportChanges(),this.state===2)break}this.state===1&&(this.state=3),this._recomputeIfNeeded()}while(this.state!==3);return this.value}}_recomputeIfNeeded(){var e,t;if(this.state===3)return;const i=this.dependenciesToBeRemoved;this.dependenciesToBeRemoved=this.dependencies,this.dependencies=i;const s=this.state!==0,r=this.value;this.state=3;const o=this.changeSummary;this.changeSummary=(e=this.createChangeSummary)===null||e===void 0?void 0:e.call(this);try{this.value=this._computeFn(this,o)}finally{for(const l of this.dependenciesToBeRemoved)l.removeObserver(this);this.dependenciesToBeRemoved.clear()}const a=s&&!this._equalityComparator(r,this.value);if((t=td())===null||t===void 0||t.handleDerivedRecomputed(this,{oldValue:r,newValue:this.value,change:void 0,didChange:a,hadValue:s}),a)for(const l of this.observers)l.handleChange(this,void 0)}toString(){return`LazyDerived<${this.debugName}>`}beginUpdate(e){this.updateCount++;const t=this.updateCount===1;if(this.state===3&&(this.state=1,!t))for(const i of this.observers)i.handlePossibleChange(this);if(t)for(const i of this.observers)i.beginUpdate(this)}endUpdate(e){if(this.updateCount--,this.updateCount===0){const t=[...this.observers];for(const i of t)i.endUpdate(this)}if(this.updateCount<0)throw new an}handlePossibleChange(e){if(this.state===3&&this.dependencies.has(e)&&!this.dependenciesToBeRemoved.has(e)){this.state=1;for(const t of this.observers)t.handlePossibleChange(this)}}handleChange(e,t){if(this.dependencies.has(e)&&!this.dependenciesToBeRemoved.has(e)){const i=this._handleChange?this._handleChange({changedObservable:e,change:t,didChange:r=>r===e},this.changeSummary):!0,s=this.state===3;if(i&&(this.state===1||s)&&(this.state=2,s))for(const r of this.observers)r.handlePossibleChange(this)}}readObservable(e){e.addObserver(this);const t=e.get();return this.dependencies.add(e),this.dependenciesToBeRemoved.delete(e),t}addObserver(e){const t=!this.observers.has(e)&&this.updateCount>0;super.addObserver(e),t&&e.beginUpdate(this)}removeObserver(e){const t=this.observers.has(e)&&this.updateCount>0;super.removeObserver(e),t&&e.endUpdate(this)}}function pi(n){return new JO(void 0,n,void 0,void 0)}function QO(n,e){return new JO(n.debugName,e,void 0,void 0)}function TE(n,e){return new JO(n.debugName,e,n.createEmptyChangeSummary,n.handleChange)}function rg(n){const e=new xe,t=QO({debugName:()=>Pm(n)||"(anonymous)"},i=>{e.clear(),n(i,e)});return st(()=>{t.dispose(),e.dispose()})}class JO{get debugName(){if(typeof this._debugName=="string")return this._debugName;if(typeof this._debugName=="function"){const t=this._debugName();if(t!==void 0)return t}const e=Pm(this._runFn);return e!==void 0?e:"(anonymous)"}constructor(e,t,i,s){var r,o;this._debugName=e,this._runFn=t,this.createChangeSummary=i,this._handleChange=s,this.state=2,this.updateCount=0,this.disposed=!1,this.dependencies=new Set,this.dependenciesToBeRemoved=new Set,this.changeSummary=(r=this.createChangeSummary)===null||r===void 0?void 0:r.call(this),(o=td())===null||o===void 0||o.handleAutorunCreated(this),this._runIfNeeded()}dispose(){this.disposed=!0;for(const e of this.dependencies)e.removeObserver(this);this.dependencies.clear()}_runIfNeeded(){var e,t,i;if(this.state===3)return;const s=this.dependenciesToBeRemoved;this.dependenciesToBeRemoved=this.dependencies,this.dependencies=s,this.state=3;const r=this.disposed;try{if(!r){(e=td())===null||e===void 0||e.handleAutorunTriggered(this);const o=this.changeSummary;this.changeSummary=(t=this.createChangeSummary)===null||t===void 0?void 0:t.call(this),this._runFn(this,o)}}finally{r||(i=td())===null||i===void 0||i.handleAutorunFinished(this);for(const o of this.dependenciesToBeRemoved)o.removeObserver(this);this.dependenciesToBeRemoved.clear()}}toString(){return`Autorun<${this.debugName}>`}beginUpdate(){this.state===3&&(this.state=1),this.updateCount++}endUpdate(){if(this.updateCount===1)do{if(this.state===1){this.state=3;for(const e of this.dependencies)if(e.reportChanges(),this.state===2)break}this._runIfNeeded()}while(this.state!==3);this.updateCount--,_L(()=>this.updateCount>=0)}handlePossibleChange(e){this.state===3&&this.dependencies.has(e)&&!this.dependenciesToBeRemoved.has(e)&&(this.state=1)}handleChange(e,t){this.dependencies.has(e)&&!this.dependenciesToBeRemoved.has(e)&&(!this._handleChange||this._handleChange({changedObservable:e,change:t,didChange:s=>s===e},this.changeSummary))&&(this.state=2)}readObservable(e){if(this.disposed)return e.get();e.addObserver(this);const t=e.get();return this.dependencies.add(e),this.dependenciesToBeRemoved.delete(e),t}}(function(n){n.Observer=JO})(pi||(pi={}));function gP(n){return new qKe(n)}class qKe extends Ime{constructor(e){super(),this.value=e}get debugName(){return this.toString()}get(){return this.value}addObserver(e){}removeObserver(e){}toString(){return`Const: ${this.value}`}}function KKe(n,e){return new Promise(t=>{let i=!1,s=!1;const r=n.map(a=>({isFinished:e(a),state:a})),o=pi(a=>{const{isFinished:l,state:c}=r.read(a);l&&(i?o.dispose():s=!0,t(c))});i=!0,s&&o.dispose()})}function Pn(n,e){return new $1(n,e)}class $1 extends IE{constructor(e,t){super(),this.event=e,this._getValue=t,this.hasValue=!1,this.handleEvent=i=>{var s;const r=this._getValue(i),o=this.value,a=!this.hasValue||o!==r;let l=!1;a&&(this.value=r,this.hasValue&&(l=!0,KL($1.globalTransaction,c=>{var u;(u=td())===null||u===void 0||u.handleFromEventObservableTriggered(this,{oldValue:o,newValue:r,change:void 0,didChange:a,hadValue:this.hasValue});for(const h of this.observers)c.updateObserver(h,this),h.handleChange(this,void 0)},()=>{const c=this.getDebugName();return"Event fired"+(c?`: ${c}`:"")})),this.hasValue=!0),l||(s=td())===null||s===void 0||s.handleFromEventObservableTriggered(this,{oldValue:o,newValue:r,change:void 0,didChange:a,hadValue:this.hasValue})}}getDebugName(){return Pm(this._getValue)}get debugName(){const e=this.getDebugName();return"From Event"+(e?`: ${e}`:"")}onFirstObserverAdded(){this.subscription=this.event(this.handleEvent)}onLastObserverRemoved(){this.subscription.dispose(),this.subscription=void 0,this.hasValue=!1,this.value=void 0}get(){return this.subscription?(this.hasValue||this.handleEvent(void 0),this.value):this._getValue(void 0)}}(function(n){n.Observer=$1;function e(t,i){let s=!1;$1.globalTransaction===void 0&&($1.globalTransaction=t,s=!0);try{i()}finally{s&&($1.globalTransaction=void 0)}}n.batchEventsGlobally=e})(Pn||(Pn={}));function Fa(n,e){return new GKe(n,e)}class GKe extends IE{constructor(e,t){super(),this.debugName=e,this.event=t,this.handleEvent=()=>{ln(i=>{for(const s of this.observers)i.updateObserver(s,this),s.handleChange(this,void 0)},()=>this.debugName)}}onFirstObserverAdded(){this.subscription=this.event(this.handleEvent)}onLastObserverRemoved(){this.subscription.dispose(),this.subscription=void 0}get(){}}function Gq(n){return typeof n=="string"?new vte(n):new vte(void 0,n)}class vte extends IE{get debugName(){var e;return(e=Kq(this,this._debugName,void 0,this._owner,this))!==null&&e!==void 0?e:"Observable Signal"}constructor(e,t){super(),this._debugName=e,this._owner=t}trigger(e,t){if(!e){ln(i=>{this.trigger(i,t)},()=>`Trigger signal ${this.debugName}`);return}for(const i of this.observers)e.updateObserver(i,this),i.handleChange(this,t)}get(){}}function NE(n,e){const t=new YKe(!0,e);return n.addObserver(t),e?e(n.get()):n.reportChanges(),st(()=>{n.removeObserver(t)})}WKe(NE);class YKe{constructor(e,t){this._forceRecompute=e,this._handleValue=t,this._counter=0}beginUpdate(e){this._counter++}endUpdate(e){this._counter--,this._counter===0&&this._forceRecompute&&(this._handleValue?this._handleValue(e.get()):e.reportChanges())}handlePossibleChange(e){}handleChange(e,t){}}function ZKe(n){let e;return St(i=>(e=n(i,e),e))}class Au{static capture(e){if(e.getScrollTop()===0||e.hasPendingScrollAnimation())return new Au(e.getScrollTop(),e.getContentHeight(),null,0,null);let t=null,i=0;const s=e.getVisibleRanges();if(s.length>0){t=s[0].getStartPosition();const r=e.getTopForPosition(t.lineNumber,t.column);i=e.getScrollTop()-r}return new Au(e.getScrollTop(),e.getContentHeight(),t,i,e.getPosition())}constructor(e,t,i,s,r){this._initialScrollTop=e,this._initialContentHeight=t,this._visiblePosition=i,this._visiblePositionScrollDelta=s,this._cursorPosition=r}restore(e){if(!(this._initialContentHeight===e.getContentHeight()&&this._initialScrollTop===e.getScrollTop())&&this._visiblePosition){const t=e.getTopForPosition(this._visiblePosition.lineNumber,this._visiblePosition.column);e.setScrollTop(t+this._visiblePositionScrollDelta)}}restoreRelativeVerticalPositionOfCursor(e){if(this._initialContentHeight===e.getContentHeight()&&this._initialScrollTop===e.getScrollTop())return;const t=e.getPosition();if(!this._cursorPosition||!t)return;const i=e.getTopForLineNumber(t.lineNumber)-e.getTopForLineNumber(this._cursorPosition.lineNumber);e.setScrollTop(e.getScrollTop()+i)}}const GL={RESOURCES:"ResourceURLs",DOWNLOAD_URL:"DownloadURL",FILES:"Files",TEXT:jn.text,INTERNAL_URI_LIST:"application/vnd.code.uri-list"};var bte,yte;class XKe{constructor(e,t){this.uri=e,this.value=t}}function QKe(n){return Array.isArray(n)}class qn{constructor(e,t){if(this[bte]="ResourceMap",e instanceof qn)this.map=new Map(e.map),this.toKey=t??qn.defaultToKey;else if(QKe(e)){this.map=new Map,this.toKey=t??qn.defaultToKey;for(const[i,s]of e)this.set(i,s)}else this.map=new Map,this.toKey=e??qn.defaultToKey}set(e,t){return this.map.set(this.toKey(e),new XKe(e,t)),this}get(e){var t;return(t=this.map.get(this.toKey(e)))===null||t===void 0?void 0:t.value}has(e){return this.map.has(this.toKey(e))}get size(){return this.map.size}clear(){this.map.clear()}delete(e){return this.map.delete(this.toKey(e))}forEach(e,t){typeof t<"u"&&(e=e.bind(t));for(const[i,s]of this.map)e(s.value,s.uri,this)}*values(){for(const e of this.map.values())yield e.value}*keys(){for(const e of this.map.values())yield e.uri}*entries(){for(const e of this.map.values())yield[e.uri,e.value]}*[(bte=Symbol.toStringTag,Symbol.iterator)](){for(const[,e]of this.map)yield[e.uri,e.value]}}qn.defaultToKey=n=>n.toString();class JKe{constructor(){this[yte]="LinkedMap",this._map=new Map,this._head=void 0,this._tail=void 0,this._size=0,this._state=0}clear(){this._map.clear(),this._head=void 0,this._tail=void 0,this._size=0,this._state++}isEmpty(){return!this._head&&!this._tail}get size(){return this._size}get first(){var e;return(e=this._head)===null||e===void 0?void 0:e.value}get last(){var e;return(e=this._tail)===null||e===void 0?void 0:e.value}has(e){return this._map.has(e)}get(e,t=0){const i=this._map.get(e);if(i)return t!==0&&this.touch(i,t),i.value}set(e,t,i=0){let s=this._map.get(e);if(s)s.value=t,i!==0&&this.touch(s,i);else{switch(s={key:e,value:t,next:void 0,previous:void 0},i){case 0:this.addItemLast(s);break;case 1:this.addItemFirst(s);break;case 2:this.addItemLast(s);break;default:this.addItemLast(s);break}this._map.set(e,s),this._size++}return this}delete(e){return!!this.remove(e)}remove(e){const t=this._map.get(e);if(t)return this._map.delete(e),this.removeItem(t),this._size--,t.value}shift(){if(!this._head&&!this._tail)return;if(!this._head||!this._tail)throw new Error("Invalid list");const e=this._head;return this._map.delete(e.key),this.removeItem(e),this._size--,e.value}forEach(e,t){const i=this._state;let s=this._head;for(;s;){if(t?e.bind(t)(s.value,s.key,this):e(s.value,s.key,this),this._state!==i)throw new Error("LinkedMap got modified during iteration.");s=s.next}}keys(){const e=this,t=this._state;let i=this._head;const s={[Symbol.iterator](){return s},next(){if(e._state!==t)throw new Error("LinkedMap got modified during iteration.");if(i){const r={value:i.key,done:!1};return i=i.next,r}else return{value:void 0,done:!0}}};return s}values(){const e=this,t=this._state;let i=this._head;const s={[Symbol.iterator](){return s},next(){if(e._state!==t)throw new Error("LinkedMap got modified during iteration.");if(i){const r={value:i.value,done:!1};return i=i.next,r}else return{value:void 0,done:!0}}};return s}entries(){const e=this,t=this._state;let i=this._head;const s={[Symbol.iterator](){return s},next(){if(e._state!==t)throw new Error("LinkedMap got modified during iteration.");if(i){const r={value:[i.key,i.value],done:!1};return i=i.next,r}else return{value:void 0,done:!0}}};return s}[(yte=Symbol.toStringTag,Symbol.iterator)](){return this.entries()}trimOld(e){if(e>=this.size)return;if(e===0){this.clear();return}let t=this._head,i=this.size;for(;t&&i>e;)this._map.delete(t.key),t=t.next,i--;this._head=t,this._size=i,t&&(t.previous=void 0),this._state++}addItemFirst(e){if(!this._head&&!this._tail)this._tail=e;else if(this._head)e.next=this._head,this._head.previous=e;else throw new Error("Invalid list");this._head=e,this._state++}addItemLast(e){if(!this._head&&!this._tail)this._head=e;else if(this._tail)e.previous=this._tail,this._tail.next=e;else throw new Error("Invalid list");this._tail=e,this._state++}removeItem(e){if(e===this._head&&e===this._tail)this._head=void 0,this._tail=void 0;else if(e===this._head){if(!e.next)throw new Error("Invalid list");e.next.previous=void 0,this._head=e.next}else if(e===this._tail){if(!e.previous)throw new Error("Invalid list");e.previous.next=void 0,this._tail=e.previous}else{const t=e.next,i=e.previous;if(!t||!i)throw new Error("Invalid list");t.previous=i,i.next=t}e.next=void 0,e.previous=void 0,this._state++}touch(e,t){if(!this._head||!this._tail)throw new Error("Invalid list");if(!(t!==1&&t!==2)){if(t===1){if(e===this._head)return;const i=e.next,s=e.previous;e===this._tail?(s.next=void 0,this._tail=s):(i.previous=s,s.next=i),e.previous=void 0,e.next=this._head,this._head.previous=e,this._head=e,this._state++}else if(t===2){if(e===this._tail)return;const i=e.next,s=e.previous;e===this._head?(i.previous=void 0,this._head=i):(i.previous=s,s.next=i),e.next=void 0,e.previous=this._tail,this._tail.next=e,this._tail=e,this._state++}}}toJSON(){const e=[];return this.forEach((t,i)=>{e.push([i,t])}),e}fromJSON(e){this.clear();for(const[t,i]of e)this.set(t,i)}}let Rm=class extends JKe{constructor(e,t=1){super(),this._limit=e,this._ratio=Math.min(Math.max(0,t),1)}get limit(){return this._limit}set limit(e){this._limit=e,this.checkTrim()}get(e,t=2){return super.get(e,t)}peek(e){return super.get(e,0)}set(e,t){return super.set(e,t,2),this.checkTrim(),this}checkTrim(){this.size>this._limit&&this.trimOld(Math.round(this._limit*this._ratio))}};class eGe{constructor(e){if(this._m1=new Map,this._m2=new Map,e)for(const[t,i]of e)this.set(t,i)}clear(){this._m1.clear(),this._m2.clear()}set(e,t){this._m1.set(e,t),this._m2.set(t,e)}get(e){return this._m1.get(e)}getKey(e){return this._m2.get(e)}delete(e){const t=this._m1.get(e);return t===void 0?!1:(this._m1.delete(e),this._m2.delete(t),!0)}keys(){return this._m1.keys()}values(){return this._m1.values()}}class Yq{constructor(){this.map=new Map}add(e,t){let i=this.map.get(e);i||(i=new Set,this.map.set(e,i)),i.add(t)}delete(e,t){const i=this.map.get(e);i&&(i.delete(t),i.size===0&&this.map.delete(e))}forEach(e,t){const i=this.map.get(e);i&&i.forEach(t)}get(e){const t=this.map.get(e);return t||new Set}}function tGe(n){const e=iGe(n);if(e&&e.length>0)return new Uint32Array(e)}let Da=0;const qg=new Uint32Array(10);function iGe(n){if(Da=0,Zu(n,r3,4352),Da>0||(Zu(n,o3,4449),Da>0)||(Zu(n,a3,4520),Da>0)||(Zu(n,Zm,12593),Da))return qg.subarray(0,Da);if(n>=44032&&n<=55203){const e=n-44032,t=e%588,i=Math.floor(e/588),s=Math.floor(t/28),r=t%28-1;if(i<r3.length?Zu(i,r3,0):4352+i-12593<Zm.length&&Zu(4352+i,Zm,12593),s<o3.length?Zu(s,o3,0):4449+s-12593<Zm.length&&Zu(4449+s-12593,Zm,12593),r>=0&&(r<a3.length?Zu(r,a3,0):4520+r-12593<Zm.length&&Zu(4520+r-12593,Zm,12593)),Da>0)return qg.subarray(0,Da)}}function Zu(n,e,t){n>=t&&n<t+e.length&&nGe(e[n-t])}function nGe(n){n!==0&&(qg[Da++]=n&255,n>>8&&(qg[Da++]=n>>8&255),n>>16&&(qg[Da++]=n>>16&255))}const r3=new Uint8Array([114,82,115,101,69,102,97,113,81,116,84,100,119,87,99,122,120,118,103]),o3=new Uint16Array([107,111,105,79,106,112,117,80,104,27496,28520,27752,121,110,27246,28782,27758,98,109,27757,108]),a3=new Uint16Array([114,82,29810,115,30579,26483,101,102,29286,24934,29030,29798,30822,30310,26470,97,113,29809,116,84,100,119,99,122,120,118,103]),Zm=new Uint16Array([114,82,29810,115,30579,26483,101,69,102,29286,24934,29030,29798,30822,30310,26470,97,113,81,29809,116,84,100,119,87,99,122,120,118,103,107,111,105,79,106,112,117,80,104,27496,28520,27752,121,110,27246,28782,27758,98,109,27757,108]);function Zq(...n){return function(e,t){for(let i=0,s=n.length;i<s;i++){const r=n[i](e,t);if(r)return r}return null}}Tme.bind(void 0,!1);const YL=Tme.bind(void 0,!0);function Tme(n,e,t){if(!t||t.length<e.length)return null;let i;return n?i=Bj(t,e):i=t.indexOf(e)===0,i?e.length>0?[{start:0,end:e.length}]:[]:null}function Nme(n,e){const t=e.toLowerCase().indexOf(n.toLowerCase());return t===-1?null:[{start:t,end:t+n.length}]}function Ame(n,e){return q9(n.toLowerCase(),e.toLowerCase(),0,0)}function q9(n,e,t,i){if(t===n.length)return[];if(i===e.length)return null;if(n[t]===e[i]){let s=null;return(s=q9(n,e,t+1,i+1))?Jq({start:i,end:i+1},s):null}return q9(n,e,t,i+1)}function Xq(n){return 97<=n&&n<=122}function e2(n){return 65<=n&&n<=90}function Qq(n){return 48<=n&&n<=57}function Pme(n){return n===32||n===9||n===10||n===13}const Rme=new Set;"()[]{}<>`'\"-/;:,.?!".split("").forEach(n=>Rme.add(n.charCodeAt(0)));function pP(n){return Pme(n)||Rme.has(n)}function Cte(n,e){return n===e||pP(n)&&pP(e)}const l3=new Map;function wte(n){if(l3.has(n))return l3.get(n);let e;const t=tGe(n);return t&&(e=t),l3.set(n,e),e}function Mme(n){return Xq(n)||e2(n)||Qq(n)}function Jq(n,e){return e.length===0?e=[n]:n.end===e[0].start?e[0].start=n.start:e.unshift(n),e}function Ome(n,e){for(let t=e;t<n.length;t++){const i=n.charCodeAt(t);if(e2(i)||Qq(i)||t>0&&!Mme(n.charCodeAt(t-1)))return t}return n.length}function K9(n,e,t,i){if(t===n.length)return[];if(i===e.length)return null;if(n[t]!==e[i].toLowerCase())return null;{let s=null,r=i+1;for(s=K9(n,e,t+1,i+1);!s&&(r=Ome(e,r))<e.length;)s=K9(n,e,t+1,r),r++;return s===null?null:Jq({start:i,end:i+1},s)}}function sGe(n){let e=0,t=0,i=0,s=0,r=0;for(let u=0;u<n.length;u++)r=n.charCodeAt(u),e2(r)&&e++,Xq(r)&&t++,Mme(r)&&i++,Qq(r)&&s++;const o=e/n.length,a=t/n.length,l=i/n.length,c=s/n.length;return{upperPercent:o,lowerPercent:a,alphaPercent:l,numericPercent:c}}function rGe(n){const{upperPercent:e,lowerPercent:t}=n;return t===0&&e>.6}function oGe(n){const{upperPercent:e,lowerPercent:t,alphaPercent:i,numericPercent:s}=n;return t>.2&&e<.8&&i>.6&&s<.2}function aGe(n){let e=0,t=0,i=0,s=0;for(let r=0;r<n.length;r++)i=n.charCodeAt(r),e2(i)&&e++,Xq(i)&&t++,Pme(i)&&s++;return(e===0||t===0)&&s===0?n.length<=30:e<=5}function Fme(n,e){if(!e||(e=e.trim(),e.length===0)||!aGe(n)||e.length>60)return null;const t=sGe(e);if(!oGe(t)){if(!rGe(t))return null;e=e.toLowerCase()}let i=null,s=0;for(n=n.toLowerCase();s<e.length&&(i=K9(n,e,0,s))===null;)s=Ome(e,s+1);return i}function lGe(n,e,t=!1){if(!e||e.length===0)return null;let i=null,s=0;for(n=n.toLowerCase(),e=e.toLowerCase();s<e.length&&(i=G9(n,e,0,s,t),i===null);)s=Bme(e,s+1);return i}function G9(n,e,t,i,s){let r=0;if(t===n.length)return[];if(i===e.length)return null;if(!Cte(n.charCodeAt(t),e.charCodeAt(i))){const l=wte(n.charCodeAt(t));if(!l)return null;for(let c=0;c<l.length;c++)if(!Cte(l[c],e.charCodeAt(i+c)))return null;r+=l.length-1}let o=null,a=i+r+1;if(o=G9(n,e,t+1,a,s),!s)for(;!o&&(a=Bme(e,a))<e.length;)o=G9(n,e,t+1,a,s),a++;if(!o)return null;if(n.charCodeAt(t)!==e.charCodeAt(i)){const l=wte(n.charCodeAt(t));if(!l)return o;for(let c=0;c<l.length;c++)if(l[c]!==e.charCodeAt(i+c))return o}return Jq({start:i,end:i+r+1},o)}function Bme(n,e){for(let t=e;t<n.length;t++)if(pP(n.charCodeAt(t))||t>0&&pP(n.charCodeAt(t-1)))return t;return n.length}const cGe=Zq(YL,Fme,Nme),uGe=Zq(YL,Fme,Ame),Ste=new Rm(1e4);function kte(n,e,t=!1){if(typeof n!="string"||typeof e!="string")return null;let i=Ste.get(n);i||(i=new RegExp(w8e(n),"i"),Ste.set(n,i));const s=i.exec(e);return s?[{start:s.index,end:s.index+s[0].length}]:t?uGe(n,e):cGe(n,e)}function hGe(n,e){const t=F_(n,n.toLowerCase(),0,e,e.toLowerCase(),0,{firstMatchCanBeWeak:!0,boostFullMatch:!0});return t?AE(t):null}function dGe(n,e,t,i,s,r){const o=Math.min(13,n.length);for(;t<o;t++){const a=F_(n,e,t,i,s,r,{firstMatchCanBeWeak:!0,boostFullMatch:!0});if(a)return a}return[0,r]}function AE(n){if(typeof n>"u")return[];const e=[],t=n[1];for(let i=n.length-1;i>1;i--){const s=n[i]+t,r=e[e.length-1];r&&r.end===s?r.end=s+1:e.push({start:s,end:s+1})}return e}const rp=128;function eK(){const n=[],e=[];for(let t=0;t<=rp;t++)e[t]=0;for(let t=0;t<=rp;t++)n.push(e.slice(0));return n}function Wme(n){const e=[];for(let t=0;t<=n;t++)e[t]=0;return e}const Vme=Wme(2*rp),Y9=Wme(2*rp),Wd=eK(),Xm=eK(),bI=eK();function yI(n,e){if(e<0||e>=n.length)return!1;const t=n.codePointAt(e);switch(t){case 95:case 45:case 46:case 32:case 47:case 92:case 39:case 34:case 58:case 36:case 60:case 62:case 40:case 41:case 91:case 93:case 123:case 125:return!0;case void 0:return!1;default:return!!$j(t)}}function Lte(n,e){if(e<0||e>=n.length)return!1;switch(n.charCodeAt(e)){case 32:case 9:return!0;default:return!1}}function uN(n,e,t){return e[n]!==t[n]}function fGe(n,e,t,i,s,r,o=!1){for(;e<t&&s<r;)n[e]===i[s]&&(o&&(Vme[e]=s),e+=1),s+=1;return e===t}var Lu;(function(n){n.Default=[-100,0];function e(t){return!t||t.length===2&&t[0]===-100&&t[1]===0}n.isDefault=e})(Lu||(Lu={}));class t2{constructor(e,t){this.firstMatchCanBeWeak=e,this.boostFullMatch=t}}t2.default={boostFullMatch:!0,firstMatchCanBeWeak:!1};function F_(n,e,t,i,s,r,o=t2.default){const a=n.length>rp?rp:n.length,l=i.length>rp?rp:i.length;if(t>=a||r>=l||a-t>l-r||!fGe(e,t,a,s,r,l,!0))return;gGe(a,l,t,r,e,s);let c=1,u=1,h=t,d=r;const f=[!1];for(c=1,h=t;h<a;c++,h++){const b=Vme[h],y=Y9[h],w=h+1<a?Y9[h+1]:l;for(u=b-r+1,d=b;d<w;u++,d++){let S=Number.MIN_SAFE_INTEGER,E=!1;d<=y&&(S=pGe(n,e,h,t,i,s,d,l,r,Wd[c-1][u-1]===0,f));let L=0;S!==Number.MAX_SAFE_INTEGER&&(E=!0,L=S+Xm[c-1][u-1]);const k=d>b,x=k?Xm[c][u-1]+(Wd[c][u-1]>0?-5:0):0,I=d>b+1&&Wd[c][u-1]>0,N=I?Xm[c][u-2]+(Wd[c][u-2]>0?-5:0):0;if(I&&(!k||N>=x)&&(!E||N>=L))Xm[c][u]=N,bI[c][u]=3,Wd[c][u]=0;else if(k&&(!E||x>=L))Xm[c][u]=x,bI[c][u]=2,Wd[c][u]=0;else if(E)Xm[c][u]=L,bI[c][u]=1,Wd[c][u]=Wd[c-1][u-1]+1;else throw new Error("not possible")}}if(!f[0]&&!o.firstMatchCanBeWeak)return;c--,u--;const g=[Xm[c][u],r];let p=0,m=0;for(;c>=1;){let b=u;do{const y=bI[c][b];if(y===3)b=b-2;else if(y===2)b=b-1;else break}while(b>=1);p>1&&e[t+c-1]===s[r+u-1]&&!uN(b+r-1,i,s)&&p+1>Wd[c][b]&&(b=u),b===u?p++:p=1,m||(m=b),c--,u=b-1,g.push(u)}l===a&&o.boostFullMatch&&(g[0]+=2);const _=m-a;return g[0]-=_,g}function gGe(n,e,t,i,s,r){let o=n-1,a=e-1;for(;o>=t&&a>=i;)s[o]===r[a]&&(Y9[o]=a,o--),a--}function pGe(n,e,t,i,s,r,o,a,l,c,u){if(e[t]!==r[o])return Number.MIN_SAFE_INTEGER;let h=1,d=!1;return o===t-i?h=n[t]===s[o]?7:5:uN(o,s,r)&&(o===0||!uN(o-1,s,r))?(h=n[t]===s[o]?7:5,d=!0):yI(r,o)&&(o===0||!yI(r,o-1))?h=5:(yI(r,o-1)||Lte(r,o-1))&&(h=5,d=!0),h>1&&t===i&&(u[0]=!0),d||(d=uN(o,s,r)||yI(r,o-1)||Lte(r,o-1)),t===i?o>l&&(h-=d?3:5):c?h+=d?2:0:h+=d?0:1,o+1===a&&(h-=d?3:5),h}function mGe(n,e,t,i,s,r,o){return _Ge(n,e,t,i,s,r,!0,o)}function _Ge(n,e,t,i,s,r,o,a){let l=F_(n,e,t,i,s,r,a);if(l&&!o)return l;if(n.length>=3){const c=Math.min(7,n.length-1);for(let u=t+1;u<c;u++){const h=vGe(n,u);if(h){const d=F_(h,h.toLowerCase(),t,i,s,r,a);d&&(d[0]-=3,(!l||d[0]>l[0])&&(l=d))}}}return l}function vGe(n,e){if(e+1>=n.length)return;const t=n[e],i=n[e+1];if(t!==i)return n.slice(0,e)+i+t+n.slice(e+2)}const bGe="$(",tK=new RegExp(`\\$\\(${nt.iconNameExpression}(?:${nt.iconModifierExpression})?\\)`,"g"),yGe=new RegExp(`(\\\\)?${tK.source}`,"g");function CGe(n){return n.replace(yGe,(e,t)=>t?e:`\\${e}`)}const wGe=new RegExp(`\\\\${tK.source}`,"g");function SGe(n){return n.replace(wGe,e=>`\\${e}`)}const kGe=new RegExp(`(\\s)?(\\\\)?${tK.source}(\\s)?`,"g");function iK(n){return n.indexOf(bGe)===-1?n:n.replace(kGe,(e,t,i,s)=>i?e:t||s||"")}function LGe(n){return n?n.replace(/\$\((.*?)\)/g,(e,t)=>` ${t} `).trim():""}const c3=new RegExp(`\\$\\(${nt.iconNameCharacter}+\\)`,"g");function wS(n){c3.lastIndex=0;let e="";const t=[];let i=0;for(;;){const s=c3.lastIndex,r=c3.exec(n),o=n.substring(s,r==null?void 0:r.index);if(o.length>0){e+=o;for(let a=0;a<o.length;a++)t.push(i)}if(!r)break;i+=r[0].length}return{text:e,iconOffsets:t}}function u3(n,e,t=!1){const{text:i,iconOffsets:s}=e;if(!s||s.length===0)return kte(n,i,t);const r=dE(i," "),o=i.length-r.length,a=kte(n,r,t);if(a)for(const l of a){const c=s[l.start+o]+o;l.start+=c,l.end+=c}return a}class xr{constructor(e="",t=!1){var i,s,r;if(this.value=e,typeof this.value!="string")throw Tl("value");typeof t=="boolean"?(this.isTrusted=t,this.supportThemeIcons=!1,this.supportHtml=!1):(this.isTrusted=(i=t.isTrusted)!==null&&i!==void 0?i:void 0,this.supportThemeIcons=(s=t.supportThemeIcons)!==null&&s!==void 0?s:!1,this.supportHtml=(r=t.supportHtml)!==null&&r!==void 0?r:!1)}appendText(e,t=0){return this.value+=EGe(this.supportThemeIcons?CGe(e):e).replace(/([ \t]+)/g,(i,s)=>" ".repeat(s.length)).replace(/\>/gm,"\\>").replace(/\n/g,t===1?`\\ +`:` + +`),this}appendMarkdown(e){return this.value+=e,this}appendCodeblock(e,t){return this.value+="\n```",this.value+=e,this.value+=` +`,this.value+=t,this.value+="\n```\n",this}appendLink(e,t,i){return this.value+="[",this.value+=this._escape(t,"]"),this.value+="](",this.value+=this._escape(String(e),")"),i&&(this.value+=` "${this._escape(this._escape(i,'"'),")")}"`),this.value+=")",this}_escape(e,t){const i=new RegExp(Qa(t),"g");return e.replace(i,(s,r)=>e.charAt(r-1)!=="\\"?`\\${s}`:s)}}function Ty(n){return kp(n)?!n.value:Array.isArray(n)?n.every(Ty):!0}function kp(n){return n instanceof xr?!0:n&&typeof n=="object"?typeof n.value=="string"&&(typeof n.isTrusted=="boolean"||typeof n.isTrusted=="object"||n.isTrusted===void 0)&&(typeof n.supportThemeIcons=="boolean"||n.supportThemeIcons===void 0):!1}function xGe(n,e){return n===e?!0:!n||!e?!1:n.value===e.value&&n.isTrusted===e.isTrusted&&n.supportThemeIcons===e.supportThemeIcons&&n.supportHtml===e.supportHtml&&(n.baseUri===e.baseUri||!!n.baseUri&&!!e.baseUri&&Iq(it.from(n.baseUri),it.from(e.baseUri)))}function EGe(n){return n.replace(/[\\`*_{}[\]()#+\-!~]/g,"\\$&")}function CI(n){return n.replace(/"/g,""")}function h3(n){return n&&n.replace(/\\([\\`*_{}[\]()#+\-.!~])/g,"$1")}function DGe(n){const e=[],t=n.split("|").map(s=>s.trim());n=t[0];const i=t[1];if(i){const s=/height=(\d+)/.exec(i),r=/width=(\d+)/.exec(i),o=s?s[1]:"",a=r?r[1]:"",l=isFinite(parseInt(a)),c=isFinite(parseInt(o));l&&e.push(`width="${a}"`),c&&e.push(`height="${o}"`)}return{href:n,dimensions:e}}function IGe(n,e){uo(e)?n.title=iK(e):e!=null&&e.markdownNotSupportedFallback?n.title=e.markdownNotSupportedFallback:n.removeAttribute("title")}class TGe{constructor(e,t,i){this.hoverDelegate=e,this.target=t,this.fadeInAnimation=i}async update(e,t,i){var s;if(this._cancellationTokenSource&&(this._cancellationTokenSource.dispose(!0),this._cancellationTokenSource=void 0),this.isDisposed)return;let r;if(e===void 0||uo(e)||e instanceof HTMLElement)r=e;else if(!dL(e.markdown))r=(s=e.markdown)!==null&&s!==void 0?s:e.markdownNotSupportedFallback;else{this._hoverWidget||this.show(v("iconLabel.loading","Loading..."),t),this._cancellationTokenSource=new es;const o=this._cancellationTokenSource.token;if(r=await e.markdown(o),r===void 0&&(r=e.markdownNotSupportedFallback),this.isDisposed||o.isCancellationRequested)return}this.show(r,t,i)}show(e,t,i){const s=this._hoverWidget;if(this.hasContent(e)){const r={content:e,target:this.target,appearance:{showPointer:this.hoverDelegate.placement==="element",skipFadeInAnimation:!this.fadeInAnimation||!!s},position:{hoverPosition:2},...i};this._hoverWidget=this.hoverDelegate.showHover(r,t)}s==null||s.dispose()}hasContent(e){return e?kp(e)?!!e.value:!0:!1}get isDisposed(){var e;return(e=this._hoverWidget)===null||e===void 0?void 0:e.isDisposed}dispose(){var e,t;(e=this._hoverWidget)===null||e===void 0||e.dispose(),(t=this._cancellationTokenSource)===null||t===void 0||t.dispose(!0),this._cancellationTokenSource=void 0}}function Hme(n,e,t,i){let s,r;const o=(f,g)=>{var p;const m=r!==void 0;f&&(r==null||r.dispose(),r=void 0),g&&(s==null||s.dispose(),s=void 0),m&&((p=n.onDidHideHover)===null||p===void 0||p.call(n))},a=(f,g,p)=>new Ic(async()=>{(!r||r.isDisposed)&&(r=new TGe(n,p||e,f>0),await r.update(t,g,i))},f),l=()=>{if(s)return;const f=new xe,g=_=>o(!1,_.fromElement===e);f.add(Ce(e,We.MOUSE_LEAVE,g,!0));const p=()=>o(!0,!0);f.add(Ce(e,We.MOUSE_DOWN,p,!0));const m={targetElements:[e],dispose:()=>{}};if(n.placement===void 0||n.placement==="mouse"){const _=b=>{m.x=b.x+10,b.target instanceof HTMLElement&&b.target.classList.contains("action-label")&&o(!0,!0)};f.add(Ce(e,We.MOUSE_MOVE,_,!0))}f.add(a(n.delay,!1,m)),s=f},c=Ce(e,We.MOUSE_OVER,l,!0),u=()=>{if(s)return;const f={targetElements:[e],dispose:()=>{}},g=new xe,p=()=>o(!0,!0);g.add(Ce(e,We.BLUR,p,!0)),g.add(a(n.delay,!1,f)),s=g},h=Ce(e,We.FOCUS,u,!0);return{show:f=>{o(!1,!0),a(0,f)},hide:()=>{o(!0,!0)},update:async(f,g)=>{t=f,await(r==null?void 0:r.update(t,void 0,g))},dispose:()=>{c.dispose(),h.dispose(),o(!0,!0)}}}function NGe(n,e={}){const t=nK(e);return t.textContent=n,t}function AGe(n,e={}){const t=nK(e);return $me(t,RGe(n,!!e.renderCodeSegments),e.actionHandler,e.renderCodeSegments),t}function nK(n){const e=n.inline?"span":"div",t=document.createElement(e);return n.className&&(t.className=n.className),t}class PGe{constructor(e){this.source=e,this.index=0}eos(){return this.index>=this.source.length}next(){const e=this.peek();return this.advance(),e}peek(){return this.source[this.index]}advance(){this.index++}}function $me(n,e,t,i){let s;if(e.type===2)s=document.createTextNode(e.content||"");else if(e.type===3)s=document.createElement("b");else if(e.type===4)s=document.createElement("i");else if(e.type===7&&i)s=document.createElement("code");else if(e.type===5&&t){const r=document.createElement("a");t.disposables.add(Mn(r,"click",o=>{t.callback(String(e.index),o)})),s=r}else e.type===8?s=document.createElement("br"):e.type===1&&(s=n);s&&n!==s&&n.appendChild(s),s&&Array.isArray(e.children)&&e.children.forEach(r=>{$me(s,r,t,i)})}function RGe(n,e){const t={type:1,children:[]};let i=0,s=t;const r=[],o=new PGe(n);for(;!o.eos();){let a=o.next();const l=a==="\\"&&Z9(o.peek(),e)!==0;if(l&&(a=o.next()),!l&&MGe(a,e)&&a===o.peek()){o.advance(),s.type===2&&(s=r.pop());const c=Z9(a,e);if(s.type===c||s.type===5&&c===6)s=r.pop();else{const u={type:c,children:[]};c===5&&(u.index=i,i++),s.children.push(u),r.push(s),s=u}}else if(a===` +`)s.type===2&&(s=r.pop()),s.children.push({type:8});else if(s.type!==2){const c={type:2,content:a};s.children.push(c),r.push(s),s=c}else s.content+=a}return s.type===2&&(s=r.pop()),t}function MGe(n,e){return Z9(n,e)!==0}function Z9(n,e){switch(n){case"*":return 3;case"_":return 4;case"[":return 5;case"]":return 6;case"`":return e?7:0;default:return 0}}const OGe=new RegExp(`(\\\\)?\\$\\((${nt.iconNameExpression}(?:${nt.iconModifierExpression})?)\\)`,"g");function Lp(n){const e=new Array;let t,i=0,s=0;for(;(t=OGe.exec(n))!==null;){s=t.index||0,i<s&&e.push(n.substring(i,s)),i=(t.index||0)+t[0].length;const[,r,o]=t;e.push(r?`$(${o})`:mP({id:o}))}return i<n.length&&e.push(n.substring(i)),e}function mP(n){const e=Te("span");return e.classList.add(...nt.asClassNameArray(n)),e}class sK{constructor(e){this._prefix=e,this._lastId=0}nextId(){return this._prefix+ ++this._lastId}}const X9=new sK("id#");let vo={};(function(){function n(e,t){t(vo)}n.amd=!0,function(e,t){typeof n=="function"&&n.amd?n(["exports"],t):typeof exports=="object"&&typeof module<"u"?t(exports):(e=typeof globalThis<"u"?globalThis:e||self,t(e.marked={}))}(this,function(e){function t(oe,ee){for(var ae=0;ae<ee.length;ae++){var O=ee[ae];O.enumerable=O.enumerable||!1,O.configurable=!0,"value"in O&&(O.writable=!0),Object.defineProperty(oe,O.key,O)}}function i(oe,ee,ae){return ee&&t(oe.prototype,ee),ae&&t(oe,ae),Object.defineProperty(oe,"prototype",{writable:!1}),oe}function s(oe,ee){if(oe){if(typeof oe=="string")return r(oe,ee);var ae=Object.prototype.toString.call(oe).slice(8,-1);if(ae==="Object"&&oe.constructor&&(ae=oe.constructor.name),ae==="Map"||ae==="Set")return Array.from(oe);if(ae==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(ae))return r(oe,ee)}}function r(oe,ee){(ee==null||ee>oe.length)&&(ee=oe.length);for(var ae=0,O=new Array(ee);ae<ee;ae++)O[ae]=oe[ae];return O}function o(oe,ee){var ae=typeof Symbol<"u"&&oe[Symbol.iterator]||oe["@@iterator"];if(ae)return(ae=ae.call(oe)).next.bind(ae);if(Array.isArray(oe)||(ae=s(oe))||ee&&oe&&typeof oe.length=="number"){ae&&(oe=ae);var O=0;return function(){return O>=oe.length?{done:!0}:{done:!1,value:oe[O++]}}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function a(){return{async:!1,baseUrl:null,breaks:!1,extensions:null,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartLists:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1}}e.defaults=a();function l(oe){e.defaults=oe}var c=/[&<>"']/,u=/[&<>"']/g,h=/[<>"']|&(?!#?\w+;)/,d=/[<>"']|&(?!#?\w+;)/g,f={"&":"&","<":"<",">":">",'"':""","'":"'"},g=function(ee){return f[ee]};function p(oe,ee){if(ee){if(c.test(oe))return oe.replace(u,g)}else if(h.test(oe))return oe.replace(d,g);return oe}var m=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig;function _(oe){return oe.replace(m,function(ee,ae){return ae=ae.toLowerCase(),ae==="colon"?":":ae.charAt(0)==="#"?ae.charAt(1)==="x"?String.fromCharCode(parseInt(ae.substring(2),16)):String.fromCharCode(+ae.substring(1)):""})}var b=/(^|[^\[])\^/g;function y(oe,ee){oe=typeof oe=="string"?oe:oe.source,ee=ee||"";var ae={replace:function(V,ne){return ne=ne.source||ne,ne=ne.replace(b,"$1"),oe=oe.replace(V,ne),ae},getRegex:function(){return new RegExp(oe,ee)}};return ae}var w=/[^\w:]/g,S=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;function E(oe,ee,ae){if(oe){var O;try{O=decodeURIComponent(_(ae)).replace(w,"").toLowerCase()}catch{return null}if(O.indexOf("javascript:")===0||O.indexOf("vbscript:")===0||O.indexOf("data:")===0)return null}ee&&!S.test(ae)&&(ae=N(ee,ae));try{ae=encodeURI(ae).replace(/%25/g,"%")}catch{return null}return ae}var L={},k=/^[^:]+:\/*[^/]*$/,x=/^([^:]+:)[\s\S]*$/,I=/^([^:]+:\/*[^/]*)[\s\S]*$/;function N(oe,ee){L[" "+oe]||(k.test(oe)?L[" "+oe]=oe+"/":L[" "+oe]=F(oe,"/",!0)),oe=L[" "+oe];var ae=oe.indexOf(":")===-1;return ee.substring(0,2)==="//"?ae?ee:oe.replace(x,"$1")+ee:ee.charAt(0)==="/"?ae?ee:oe.replace(I,"$1")+ee:oe+ee}var T={exec:function(){}};function P(oe){for(var ee=1,ae,O;ee<arguments.length;ee++){ae=arguments[ee];for(O in ae)Object.prototype.hasOwnProperty.call(ae,O)&&(oe[O]=ae[O])}return oe}function R(oe,ee){var ae=oe.replace(/\|/g,function(ne,ie,we){for(var Ie=!1,je=ie;--je>=0&&we[je]==="\\";)Ie=!Ie;return Ie?"|":" |"}),O=ae.split(/ \|/),V=0;if(O[0].trim()||O.shift(),O.length>0&&!O[O.length-1].trim()&&O.pop(),O.length>ee)O.splice(ee);else for(;O.length<ee;)O.push("");for(;V<O.length;V++)O[V]=O[V].trim().replace(/\\\|/g,"|");return O}function F(oe,ee,ae){var O=oe.length;if(O===0)return"";for(var V=0;V<O;){var ne=oe.charAt(O-V-1);if(ne===ee&&!ae)V++;else if(ne!==ee&&ae)V++;else break}return oe.slice(0,O-V)}function j(oe,ee){if(oe.indexOf(ee[1])===-1)return-1;for(var ae=oe.length,O=0,V=0;V<ae;V++)if(oe[V]==="\\")V++;else if(oe[V]===ee[0])O++;else if(oe[V]===ee[1]&&(O--,O<0))return V;return-1}function K(oe){oe&&oe.sanitize&&!oe.silent&&console.warn("marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options")}function Z(oe,ee){if(ee<1)return"";for(var ae="";ee>1;)ee&1&&(ae+=oe),ee>>=1,oe+=oe;return ae+oe}function q(oe,ee,ae,O){var V=ee.href,ne=ee.title?p(ee.title):null,ie=oe[1].replace(/\\([\[\]])/g,"$1");if(oe[0].charAt(0)!=="!"){O.state.inLink=!0;var we={type:"link",raw:ae,href:V,title:ne,text:ie,tokens:O.inlineTokens(ie)};return O.state.inLink=!1,we}return{type:"image",raw:ae,href:V,title:ne,text:p(ie)}}function re(oe,ee){var ae=oe.match(/^(\s+)(?:```)/);if(ae===null)return ee;var O=ae[1];return ee.split(` +`).map(function(V){var ne=V.match(/^\s+/);if(ne===null)return V;var ie=ne[0];return ie.length>=O.length?V.slice(O.length):V}).join(` +`)}var G=function(){function oe(ae){this.options=ae||e.defaults}var ee=oe.prototype;return ee.space=function(O){var V=this.rules.block.newline.exec(O);if(V&&V[0].length>0)return{type:"space",raw:V[0]}},ee.code=function(O){var V=this.rules.block.code.exec(O);if(V){var ne=V[0].replace(/^ {1,4}/gm,"");return{type:"code",raw:V[0],codeBlockStyle:"indented",text:this.options.pedantic?ne:F(ne,` +`)}}},ee.fences=function(O){var V=this.rules.block.fences.exec(O);if(V){var ne=V[0],ie=re(ne,V[3]||"");return{type:"code",raw:ne,lang:V[2]?V[2].trim():V[2],text:ie}}},ee.heading=function(O){var V=this.rules.block.heading.exec(O);if(V){var ne=V[2].trim();if(/#$/.test(ne)){var ie=F(ne,"#");(this.options.pedantic||!ie||/ $/.test(ie))&&(ne=ie.trim())}return{type:"heading",raw:V[0],depth:V[1].length,text:ne,tokens:this.lexer.inline(ne)}}},ee.hr=function(O){var V=this.rules.block.hr.exec(O);if(V)return{type:"hr",raw:V[0]}},ee.blockquote=function(O){var V=this.rules.block.blockquote.exec(O);if(V){var ne=V[0].replace(/^ *>[ \t]?/gm,"");return{type:"blockquote",raw:V[0],tokens:this.lexer.blockTokens(ne,[]),text:ne}}},ee.list=function(O){var V=this.rules.block.list.exec(O);if(V){var ne,ie,we,Ie,je,Ye,rt,gt,ei,ii,et,mi,Wi=V[1].trim(),Co=Wi.length>1,oi={type:"list",raw:"",ordered:Co,start:Co?+Wi.slice(0,-1):"",loose:!1,items:[]};Wi=Co?"\\d{1,9}\\"+Wi.slice(-1):"\\"+Wi,this.options.pedantic&&(Wi=Co?Wi:"[*+-]");for(var Bn=new RegExp("^( {0,3}"+Wi+")((?:[ ][^\\n]*)?(?:\\n|$))");O&&(mi=!1,!(!(V=Bn.exec(O))||this.rules.block.hr.test(O)));){if(ne=V[0],O=O.substring(ne.length),gt=V[2].split(` +`,1)[0],ei=O.split(` +`,1)[0],this.options.pedantic?(Ie=2,et=gt.trimLeft()):(Ie=V[2].search(/[^ ]/),Ie=Ie>4?1:Ie,et=gt.slice(Ie),Ie+=V[1].length),Ye=!1,!gt&&/^ *$/.test(ei)&&(ne+=ei+` +`,O=O.substring(ei.length+1),mi=!0),!mi)for(var Mc=new RegExp("^ {0,"+Math.min(3,Ie-1)+"}(?:[*+-]|\\d{1,9}[.)])((?: [^\\n]*)?(?:\\n|$))"),Oc=new RegExp("^ {0,"+Math.min(3,Ie-1)+"}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)"),Wo=new RegExp("^ {0,"+Math.min(3,Ie-1)+"}(?:```|~~~)"),ql=new RegExp("^ {0,"+Math.min(3,Ie-1)+"}#");O&&(ii=O.split(` +`,1)[0],gt=ii,this.options.pedantic&&(gt=gt.replace(/^ {1,4}(?=( {4})*[^ ])/g," ")),!(Wo.test(gt)||ql.test(gt)||Mc.test(gt)||Oc.test(O)));){if(gt.search(/[^ ]/)>=Ie||!gt.trim())et+=` +`+gt.slice(Ie);else if(!Ye)et+=` +`+gt;else break;!Ye&&!gt.trim()&&(Ye=!0),ne+=ii+` +`,O=O.substring(ii.length+1)}oi.loose||(rt?oi.loose=!0:/\n *\n *$/.test(ne)&&(rt=!0)),this.options.gfm&&(ie=/^\[[ xX]\] /.exec(et),ie&&(we=ie[0]!=="[ ] ",et=et.replace(/^\[[ xX]\] +/,""))),oi.items.push({type:"list_item",raw:ne,task:!!ie,checked:we,loose:!1,text:et}),oi.raw+=ne}oi.items[oi.items.length-1].raw=ne.trimRight(),oi.items[oi.items.length-1].text=et.trimRight(),oi.raw=oi.raw.trimRight();var Fc=oi.items.length;for(je=0;je<Fc;je++){this.lexer.state.top=!1,oi.items[je].tokens=this.lexer.blockTokens(oi.items[je].text,[]);var Bc=oi.items[je].tokens.filter(function(Wc){return Wc.type==="space"}),Gu=Bc.every(function(Wc){for(var Hm=Wc.raw.split(""),ba=0,Nd=o(Hm),Ad;!(Ad=Nd()).done;){var dg=Ad.value;if(dg===` +`&&(ba+=1),ba>1)return!0}return!1});!oi.loose&&Bc.length&&Gu&&(oi.loose=!0,oi.items[je].loose=!0)}return oi}},ee.html=function(O){var V=this.rules.block.html.exec(O);if(V){var ne={type:"html",raw:V[0],pre:!this.options.sanitizer&&(V[1]==="pre"||V[1]==="script"||V[1]==="style"),text:V[0]};if(this.options.sanitize){var ie=this.options.sanitizer?this.options.sanitizer(V[0]):p(V[0]);ne.type="paragraph",ne.text=ie,ne.tokens=this.lexer.inline(ie)}return ne}},ee.def=function(O){var V=this.rules.block.def.exec(O);if(V){V[3]&&(V[3]=V[3].substring(1,V[3].length-1));var ne=V[1].toLowerCase().replace(/\s+/g," ");return{type:"def",tag:ne,raw:V[0],href:V[2],title:V[3]}}},ee.table=function(O){var V=this.rules.block.table.exec(O);if(V){var ne={type:"table",header:R(V[1]).map(function(rt){return{text:rt}}),align:V[2].replace(/^ *|\| *$/g,"").split(/ *\| */),rows:V[3]&&V[3].trim()?V[3].replace(/\n[ \t]*$/,"").split(` +`):[]};if(ne.header.length===ne.align.length){ne.raw=V[0];var ie=ne.align.length,we,Ie,je,Ye;for(we=0;we<ie;we++)/^ *-+: *$/.test(ne.align[we])?ne.align[we]="right":/^ *:-+: *$/.test(ne.align[we])?ne.align[we]="center":/^ *:-+ *$/.test(ne.align[we])?ne.align[we]="left":ne.align[we]=null;for(ie=ne.rows.length,we=0;we<ie;we++)ne.rows[we]=R(ne.rows[we],ne.header.length).map(function(rt){return{text:rt}});for(ie=ne.header.length,Ie=0;Ie<ie;Ie++)ne.header[Ie].tokens=this.lexer.inline(ne.header[Ie].text);for(ie=ne.rows.length,Ie=0;Ie<ie;Ie++)for(Ye=ne.rows[Ie],je=0;je<Ye.length;je++)Ye[je].tokens=this.lexer.inline(Ye[je].text);return ne}}},ee.lheading=function(O){var V=this.rules.block.lheading.exec(O);if(V)return{type:"heading",raw:V[0],depth:V[2].charAt(0)==="="?1:2,text:V[1],tokens:this.lexer.inline(V[1])}},ee.paragraph=function(O){var V=this.rules.block.paragraph.exec(O);if(V){var ne=V[1].charAt(V[1].length-1)===` +`?V[1].slice(0,-1):V[1];return{type:"paragraph",raw:V[0],text:ne,tokens:this.lexer.inline(ne)}}},ee.text=function(O){var V=this.rules.block.text.exec(O);if(V)return{type:"text",raw:V[0],text:V[0],tokens:this.lexer.inline(V[0])}},ee.escape=function(O){var V=this.rules.inline.escape.exec(O);if(V)return{type:"escape",raw:V[0],text:p(V[1])}},ee.tag=function(O){var V=this.rules.inline.tag.exec(O);if(V)return!this.lexer.state.inLink&&/^<a /i.test(V[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&/^<\/a>/i.test(V[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(V[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(V[0])&&(this.lexer.state.inRawBlock=!1),{type:this.options.sanitize?"text":"html",raw:V[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,text:this.options.sanitize?this.options.sanitizer?this.options.sanitizer(V[0]):p(V[0]):V[0]}},ee.link=function(O){var V=this.rules.inline.link.exec(O);if(V){var ne=V[2].trim();if(!this.options.pedantic&&/^</.test(ne)){if(!/>$/.test(ne))return;var ie=F(ne.slice(0,-1),"\\");if((ne.length-ie.length)%2===0)return}else{var we=j(V[2],"()");if(we>-1){var Ie=V[0].indexOf("!")===0?5:4,je=Ie+V[1].length+we;V[2]=V[2].substring(0,we),V[0]=V[0].substring(0,je).trim(),V[3]=""}}var Ye=V[2],rt="";if(this.options.pedantic){var gt=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(Ye);gt&&(Ye=gt[1],rt=gt[3])}else rt=V[3]?V[3].slice(1,-1):"";return Ye=Ye.trim(),/^</.test(Ye)&&(this.options.pedantic&&!/>$/.test(ne)?Ye=Ye.slice(1):Ye=Ye.slice(1,-1)),q(V,{href:Ye&&Ye.replace(this.rules.inline._escapes,"$1"),title:rt&&rt.replace(this.rules.inline._escapes,"$1")},V[0],this.lexer)}},ee.reflink=function(O,V){var ne;if((ne=this.rules.inline.reflink.exec(O))||(ne=this.rules.inline.nolink.exec(O))){var ie=(ne[2]||ne[1]).replace(/\s+/g," ");if(ie=V[ie.toLowerCase()],!ie||!ie.href){var we=ne[0].charAt(0);return{type:"text",raw:we,text:we}}return q(ne,ie,ne[0],this.lexer)}},ee.emStrong=function(O,V,ne){ne===void 0&&(ne="");var ie=this.rules.inline.emStrong.lDelim.exec(O);if(ie&&!(ie[3]&&ne.match(/(?:[0-9A-Za-z\xAA\xB2\xB3\xB5\xB9\xBA\xBC-\xBE\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u0660-\u0669\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07C0-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0966-\u096F\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09E6-\u09F1\u09F4-\u09F9\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A66-\u0A6F\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AE6-\u0AEF\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B66-\u0B6F\u0B71-\u0B77\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0BE6-\u0BF2\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C66-\u0C6F\u0C78-\u0C7E\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CE6-\u0CEF\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D58-\u0D61\u0D66-\u0D78\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DE6-\u0DEF\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F20-\u0F33\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F-\u1049\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u1090-\u1099\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1369-\u137C\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A16\u1A20-\u1A54\u1A80-\u1A89\u1A90-\u1A99\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B50-\u1B59\u1B83-\u1BA0\u1BAE-\u1BE5\u1C00-\u1C23\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2070\u2071\u2074-\u2079\u207F-\u2089\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2150-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2CFD\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u3192-\u3195\u31A0-\u31BF\u31F0-\u31FF\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA830-\uA835\uA840-\uA873\uA882-\uA8B3\uA8D0-\uA8D9\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA900-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF-\uA9D9\uA9E0-\uA9E4\uA9E6-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA50-\uAA59\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD07-\uDD33\uDD40-\uDD78\uDD8A\uDD8B\uDE80-\uDE9C\uDEA0-\uDED0\uDEE1-\uDEFB\uDF00-\uDF23\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC58-\uDC76\uDC79-\uDC9E\uDCA7-\uDCAF\uDCE0-\uDCF2\uDCF4\uDCF5\uDCFB-\uDD1B\uDD20-\uDD39\uDD80-\uDDB7\uDDBC-\uDDCF\uDDD2-\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE40-\uDE48\uDE60-\uDE7E\uDE80-\uDE9F\uDEC0-\uDEC7\uDEC9-\uDEE4\uDEEB-\uDEEF\uDF00-\uDF35\uDF40-\uDF55\uDF58-\uDF72\uDF78-\uDF91\uDFA9-\uDFAF]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDCFA-\uDD23\uDD30-\uDD39\uDE60-\uDE7E\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF27\uDF30-\uDF45\uDF51-\uDF54\uDF70-\uDF81\uDFB0-\uDFCB\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC52-\uDC6F\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD03-\uDD26\uDD36-\uDD3F\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDD0-\uDDDA\uDDDC\uDDE1-\uDDF4\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDEF0-\uDEF9\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC50-\uDC59\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE50-\uDE59\uDE80-\uDEAA\uDEB8\uDEC0-\uDEC9\uDF00-\uDF1A\uDF30-\uDF3B\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCF2\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDD50-\uDD59\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC50-\uDC6C\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD50-\uDD59\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDDA0-\uDDA9\uDEE0-\uDEF2\uDFB0\uDFC0-\uDFD4]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDE70-\uDEBE\uDEC0-\uDEC9\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF50-\uDF59\uDF5B-\uDF61\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE96\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD50-\uDD52\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD834[\uDEE0-\uDEF3\uDF60-\uDF78]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD837[\uDF00-\uDF1E]|\uD838[\uDD00-\uDD2C\uDD37-\uDD3D\uDD40-\uDD49\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB\uDEF0-\uDEF9]|\uD839[\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDCC7-\uDCCF\uDD00-\uDD43\uDD4B\uDD50-\uDD59]|\uD83B[\uDC71-\uDCAB\uDCAD-\uDCAF\uDCB1-\uDCB4\uDD01-\uDD2D\uDD2F-\uDD3D\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD83C[\uDD00-\uDD0C]|\uD83E[\uDFF0-\uDFF9]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF38\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A])/))){var we=ie[1]||ie[2]||"";if(!we||we&&(ne===""||this.rules.inline.punctuation.exec(ne))){var Ie=ie[0].length-1,je,Ye,rt=Ie,gt=0,ei=ie[0][0]==="*"?this.rules.inline.emStrong.rDelimAst:this.rules.inline.emStrong.rDelimUnd;for(ei.lastIndex=0,V=V.slice(-1*O.length+Ie);(ie=ei.exec(V))!=null;)if(je=ie[1]||ie[2]||ie[3]||ie[4]||ie[5]||ie[6],!!je){if(Ye=je.length,ie[3]||ie[4]){rt+=Ye;continue}else if((ie[5]||ie[6])&&Ie%3&&!((Ie+Ye)%3)){gt+=Ye;continue}if(rt-=Ye,!(rt>0)){if(Ye=Math.min(Ye,Ye+rt+gt),Math.min(Ie,Ye)%2){var ii=O.slice(1,Ie+ie.index+Ye);return{type:"em",raw:O.slice(0,Ie+ie.index+Ye+1),text:ii,tokens:this.lexer.inlineTokens(ii)}}var et=O.slice(2,Ie+ie.index+Ye-1);return{type:"strong",raw:O.slice(0,Ie+ie.index+Ye+1),text:et,tokens:this.lexer.inlineTokens(et)}}}}}},ee.codespan=function(O){var V=this.rules.inline.code.exec(O);if(V){var ne=V[2].replace(/\n/g," "),ie=/[^ ]/.test(ne),we=/^ /.test(ne)&&/ $/.test(ne);return ie&&we&&(ne=ne.substring(1,ne.length-1)),ne=p(ne,!0),{type:"codespan",raw:V[0],text:ne}}},ee.br=function(O){var V=this.rules.inline.br.exec(O);if(V)return{type:"br",raw:V[0]}},ee.del=function(O){var V=this.rules.inline.del.exec(O);if(V)return{type:"del",raw:V[0],text:V[2],tokens:this.lexer.inlineTokens(V[2])}},ee.autolink=function(O,V){var ne=this.rules.inline.autolink.exec(O);if(ne){var ie,we;return ne[2]==="@"?(ie=p(this.options.mangle?V(ne[1]):ne[1]),we="mailto:"+ie):(ie=p(ne[1]),we=ie),{type:"link",raw:ne[0],text:ie,href:we,tokens:[{type:"text",raw:ie,text:ie}]}}},ee.url=function(O,V){var ne;if(ne=this.rules.inline.url.exec(O)){var ie,we;if(ne[2]==="@")ie=p(this.options.mangle?V(ne[0]):ne[0]),we="mailto:"+ie;else{var Ie;do Ie=ne[0],ne[0]=this.rules.inline._backpedal.exec(ne[0])[0];while(Ie!==ne[0]);ie=p(ne[0]),ne[1]==="www."?we="http://"+ie:we=ie}return{type:"link",raw:ne[0],text:ie,href:we,tokens:[{type:"text",raw:ie,text:ie}]}}},ee.inlineText=function(O,V){var ne=this.rules.inline.text.exec(O);if(ne){var ie;return this.lexer.state.inRawBlock?ie=this.options.sanitize?this.options.sanitizer?this.options.sanitizer(ne[0]):p(ne[0]):ne[0]:ie=p(this.options.smartypants?V(ne[0]):ne[0]),{type:"text",raw:ne[0],text:ie}}},oe}(),W={newline:/^(?: *(?:\n|$))+/,code:/^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/,fences:/^ {0,3}(`{3,}(?=[^`\n]*\n)|~{3,})([^\n]*)\n(?:|([\s\S]*?)\n)(?: {0,3}\1[~`]* *(?=\n|$)|$)/,hr:/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,blockquote:/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/,html:"^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n *)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$))",def:/^ {0,3}\[(label)\]: *(?:\n *)?<?([^\s>]+)>?(?:(?: +(?:\n *)?| *\n *)(title))? *(?:\n+|$)/,table:T,lheading:/^([^\n]+)\n {0,3}(=+|-+) *(?:\n+|$)/,_paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,text:/^[^\n]+/};W._label=/(?!\s*\])(?:\\.|[^\[\]\\])+/,W._title=/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/,W.def=y(W.def).replace("label",W._label).replace("title",W._title).getRegex(),W.bullet=/(?:[*+-]|\d{1,9}[.)])/,W.listItemStart=y(/^( *)(bull) */).replace("bull",W.bullet).getRegex(),W.list=y(W.list).replace(/bull/g,W.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+W.def.source+")").getRegex(),W._tag="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|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",W._comment=/<!--(?!-?>)[\s\S]*?(?:-->|$)/,W.html=y(W.html,"i").replace("comment",W._comment).replace("tag",W._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),W.paragraph=y(W._paragraph).replace("hr",W.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",W._tag).getRegex(),W.blockquote=y(W.blockquote).replace("paragraph",W.paragraph).getRegex(),W.normal=P({},W),W.gfm=P({},W.normal,{table:"^ *([^\\n ].*\\|.*)\\n {0,3}(?:\\| *)?(:?-+:? *(?:\\| *:?-+:? *)*)(?:\\| *)?(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)"}),W.gfm.table=y(W.gfm.table).replace("hr",W.hr).replace("heading"," {0,3}#{1,6} ").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",W._tag).getRegex(),W.gfm.paragraph=y(W._paragraph).replace("hr",W.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("table",W.gfm.table).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",W._tag).getRegex(),W.pedantic=P({},W.normal,{html:y(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",W._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:T,paragraph:y(W.normal._paragraph).replace("hr",W.hr).replace("heading",` *#{1,6} *[^ +]`).replace("lheading",W.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()});var Y={escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:T,tag:"^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>",link:/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(ref)\]/,nolink:/^!?\[(ref)\](?:\[\])?/,reflinkSearch:"reflink|nolink(?!\\()",emStrong:{lDelim:/^(?:\*+(?:([punct_])|[^\s*]))|^_+(?:([punct*])|([^\s_]))/,rDelimAst:/^[^_*]*?\_\_[^_*]*?\*[^_*]*?(?=\_\_)|[^*]+(?=[^*])|[punct_](\*+)(?=[\s]|$)|[^punct*_\s](\*+)(?=[punct_\s]|$)|[punct_\s](\*+)(?=[^punct*_\s])|[\s](\*+)(?=[punct_])|[punct_](\*+)(?=[punct_])|[^punct*_\s](\*+)(?=[^punct*_\s])/,rDelimUnd:/^[^_*]*?\*\*[^_*]*?\_[^_*]*?(?=\*\*)|[^_]+(?=[^_])|[punct*](\_+)(?=[\s]|$)|[^punct*_\s](\_+)(?=[punct*\s]|$)|[punct*\s](\_+)(?=[^punct*_\s])|[\s](\_+)(?=[punct*])|[punct*](\_+)(?=[punct*])/},code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:T,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,punctuation:/^([\spunctuation])/};Y._punctuation="!\"#$%&'()+\\-.,/:;<=>?@\\[\\]`^{|}~",Y.punctuation=y(Y.punctuation).replace(/punctuation/g,Y._punctuation).getRegex(),Y.blockSkip=/\[[^\]]*?\]\([^\)]*?\)|`[^`]*?`|<[^>]*?>/g,Y.escapedEmSt=/\\\*|\\_/g,Y._comment=y(W._comment).replace("(?:-->|$)","-->").getRegex(),Y.emStrong.lDelim=y(Y.emStrong.lDelim).replace(/punct/g,Y._punctuation).getRegex(),Y.emStrong.rDelimAst=y(Y.emStrong.rDelimAst,"g").replace(/punct/g,Y._punctuation).getRegex(),Y.emStrong.rDelimUnd=y(Y.emStrong.rDelimUnd,"g").replace(/punct/g,Y._punctuation).getRegex(),Y._escapes=/\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g,Y._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,Y._email=/[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])?)+(?![-_])/,Y.autolink=y(Y.autolink).replace("scheme",Y._scheme).replace("email",Y._email).getRegex(),Y._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,Y.tag=y(Y.tag).replace("comment",Y._comment).replace("attribute",Y._attribute).getRegex(),Y._label=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,Y._href=/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/,Y._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,Y.link=y(Y.link).replace("label",Y._label).replace("href",Y._href).replace("title",Y._title).getRegex(),Y.reflink=y(Y.reflink).replace("label",Y._label).replace("ref",W._label).getRegex(),Y.nolink=y(Y.nolink).replace("ref",W._label).getRegex(),Y.reflinkSearch=y(Y.reflinkSearch,"g").replace("reflink",Y.reflink).replace("nolink",Y.nolink).getRegex(),Y.normal=P({},Y),Y.pedantic=P({},Y.normal,{strong:{start:/^__|\*\*/,middle:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,endAst:/\*\*(?!\*)/g,endUnd:/__(?!_)/g},em:{start:/^_|\*/,middle:/^()\*(?=\S)([\s\S]*?\S)\*(?!\*)|^_(?=\S)([\s\S]*?\S)_(?!_)/,endAst:/\*(?!\*)/g,endUnd:/_(?!_)/g},link:y(/^!?\[(label)\]\((.*?)\)/).replace("label",Y._label).getRegex(),reflink:y(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",Y._label).getRegex()}),Y.gfm=P({},Y.normal,{escape:y(Y.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|https?:\/\/|ftp:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/}),Y.gfm.url=y(Y.gfm.url,"i").replace("email",Y.gfm._extended_email).getRegex(),Y.breaks=P({},Y.gfm,{br:y(Y.br).replace("{2,}","*").getRegex(),text:y(Y.gfm.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()});function X(oe){return oe.replace(/---/g,"—").replace(/--/g,"–").replace(/(^|[-\u2014/(\[{"\s])'/g,"$1‘").replace(/'/g,"’").replace(/(^|[-\u2014/(\[{\u2018\s])"/g,"$1“").replace(/"/g,"”").replace(/\.{3}/g,"…")}function z(oe){var ee="",ae,O,V=oe.length;for(ae=0;ae<V;ae++)O=oe.charCodeAt(ae),Math.random()>.5&&(O="x"+O.toString(16)),ee+="&#"+O+";";return ee}var le=function(){function oe(ae){this.tokens=[],this.tokens.links=Object.create(null),this.options=ae||e.defaults,this.options.tokenizer=this.options.tokenizer||new G,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};var O={block:W.normal,inline:Y.normal};this.options.pedantic?(O.block=W.pedantic,O.inline=Y.pedantic):this.options.gfm&&(O.block=W.gfm,this.options.breaks?O.inline=Y.breaks:O.inline=Y.gfm),this.tokenizer.rules=O}oe.lex=function(O,V){var ne=new oe(V);return ne.lex(O)},oe.lexInline=function(O,V){var ne=new oe(V);return ne.inlineTokens(O)};var ee=oe.prototype;return ee.lex=function(O){O=O.replace(/\r\n|\r/g,` +`),this.blockTokens(O,this.tokens);for(var V;V=this.inlineQueue.shift();)this.inlineTokens(V.src,V.tokens);return this.tokens},ee.blockTokens=function(O,V){var ne=this;V===void 0&&(V=[]),this.options.pedantic?O=O.replace(/\t/g," ").replace(/^ +$/gm,""):O=O.replace(/^( *)(\t+)/gm,function(rt,gt,ei){return gt+" ".repeat(ei.length)});for(var ie,we,Ie,je;O;)if(!(this.options.extensions&&this.options.extensions.block&&this.options.extensions.block.some(function(rt){return(ie=rt.call({lexer:ne},O,V))?(O=O.substring(ie.raw.length),V.push(ie),!0):!1}))){if(ie=this.tokenizer.space(O)){O=O.substring(ie.raw.length),ie.raw.length===1&&V.length>0?V[V.length-1].raw+=` +`:V.push(ie);continue}if(ie=this.tokenizer.code(O)){O=O.substring(ie.raw.length),we=V[V.length-1],we&&(we.type==="paragraph"||we.type==="text")?(we.raw+=` +`+ie.raw,we.text+=` +`+ie.text,this.inlineQueue[this.inlineQueue.length-1].src=we.text):V.push(ie);continue}if(ie=this.tokenizer.fences(O)){O=O.substring(ie.raw.length),V.push(ie);continue}if(ie=this.tokenizer.heading(O)){O=O.substring(ie.raw.length),V.push(ie);continue}if(ie=this.tokenizer.hr(O)){O=O.substring(ie.raw.length),V.push(ie);continue}if(ie=this.tokenizer.blockquote(O)){O=O.substring(ie.raw.length),V.push(ie);continue}if(ie=this.tokenizer.list(O)){O=O.substring(ie.raw.length),V.push(ie);continue}if(ie=this.tokenizer.html(O)){O=O.substring(ie.raw.length),V.push(ie);continue}if(ie=this.tokenizer.def(O)){O=O.substring(ie.raw.length),we=V[V.length-1],we&&(we.type==="paragraph"||we.type==="text")?(we.raw+=` +`+ie.raw,we.text+=` +`+ie.raw,this.inlineQueue[this.inlineQueue.length-1].src=we.text):this.tokens.links[ie.tag]||(this.tokens.links[ie.tag]={href:ie.href,title:ie.title});continue}if(ie=this.tokenizer.table(O)){O=O.substring(ie.raw.length),V.push(ie);continue}if(ie=this.tokenizer.lheading(O)){O=O.substring(ie.raw.length),V.push(ie);continue}if(Ie=O,this.options.extensions&&this.options.extensions.startBlock&&function(){var rt=1/0,gt=O.slice(1),ei=void 0;ne.options.extensions.startBlock.forEach(function(ii){ei=ii.call({lexer:this},gt),typeof ei=="number"&&ei>=0&&(rt=Math.min(rt,ei))}),rt<1/0&&rt>=0&&(Ie=O.substring(0,rt+1))}(),this.state.top&&(ie=this.tokenizer.paragraph(Ie))){we=V[V.length-1],je&&we.type==="paragraph"?(we.raw+=` +`+ie.raw,we.text+=` +`+ie.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=we.text):V.push(ie),je=Ie.length!==O.length,O=O.substring(ie.raw.length);continue}if(ie=this.tokenizer.text(O)){O=O.substring(ie.raw.length),we=V[V.length-1],we&&we.type==="text"?(we.raw+=` +`+ie.raw,we.text+=` +`+ie.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=we.text):V.push(ie);continue}if(O){var Ye="Infinite loop on byte: "+O.charCodeAt(0);if(this.options.silent){console.error(Ye);break}else throw new Error(Ye)}}return this.state.top=!0,V},ee.inline=function(O,V){return V===void 0&&(V=[]),this.inlineQueue.push({src:O,tokens:V}),V},ee.inlineTokens=function(O,V){var ne=this;V===void 0&&(V=[]);var ie,we,Ie,je=O,Ye,rt,gt;if(this.tokens.links){var ei=Object.keys(this.tokens.links);if(ei.length>0)for(;(Ye=this.tokenizer.rules.inline.reflinkSearch.exec(je))!=null;)ei.includes(Ye[0].slice(Ye[0].lastIndexOf("[")+1,-1))&&(je=je.slice(0,Ye.index)+"["+Z("a",Ye[0].length-2)+"]"+je.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(Ye=this.tokenizer.rules.inline.blockSkip.exec(je))!=null;)je=je.slice(0,Ye.index)+"["+Z("a",Ye[0].length-2)+"]"+je.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);for(;(Ye=this.tokenizer.rules.inline.escapedEmSt.exec(je))!=null;)je=je.slice(0,Ye.index)+"++"+je.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex);for(;O;)if(rt||(gt=""),rt=!1,!(this.options.extensions&&this.options.extensions.inline&&this.options.extensions.inline.some(function(et){return(ie=et.call({lexer:ne},O,V))?(O=O.substring(ie.raw.length),V.push(ie),!0):!1}))){if(ie=this.tokenizer.escape(O)){O=O.substring(ie.raw.length),V.push(ie);continue}if(ie=this.tokenizer.tag(O)){O=O.substring(ie.raw.length),we=V[V.length-1],we&&ie.type==="text"&&we.type==="text"?(we.raw+=ie.raw,we.text+=ie.text):V.push(ie);continue}if(ie=this.tokenizer.link(O)){O=O.substring(ie.raw.length),V.push(ie);continue}if(ie=this.tokenizer.reflink(O,this.tokens.links)){O=O.substring(ie.raw.length),we=V[V.length-1],we&&ie.type==="text"&&we.type==="text"?(we.raw+=ie.raw,we.text+=ie.text):V.push(ie);continue}if(ie=this.tokenizer.emStrong(O,je,gt)){O=O.substring(ie.raw.length),V.push(ie);continue}if(ie=this.tokenizer.codespan(O)){O=O.substring(ie.raw.length),V.push(ie);continue}if(ie=this.tokenizer.br(O)){O=O.substring(ie.raw.length),V.push(ie);continue}if(ie=this.tokenizer.del(O)){O=O.substring(ie.raw.length),V.push(ie);continue}if(ie=this.tokenizer.autolink(O,z)){O=O.substring(ie.raw.length),V.push(ie);continue}if(!this.state.inLink&&(ie=this.tokenizer.url(O,z))){O=O.substring(ie.raw.length),V.push(ie);continue}if(Ie=O,this.options.extensions&&this.options.extensions.startInline&&function(){var et=1/0,mi=O.slice(1),Wi=void 0;ne.options.extensions.startInline.forEach(function(Co){Wi=Co.call({lexer:this},mi),typeof Wi=="number"&&Wi>=0&&(et=Math.min(et,Wi))}),et<1/0&&et>=0&&(Ie=O.substring(0,et+1))}(),ie=this.tokenizer.inlineText(Ie,X)){O=O.substring(ie.raw.length),ie.raw.slice(-1)!=="_"&&(gt=ie.raw.slice(-1)),rt=!0,we=V[V.length-1],we&&we.type==="text"?(we.raw+=ie.raw,we.text+=ie.text):V.push(ie);continue}if(O){var ii="Infinite loop on byte: "+O.charCodeAt(0);if(this.options.silent){console.error(ii);break}else throw new Error(ii)}}return V},i(oe,null,[{key:"rules",get:function(){return{block:W,inline:Y}}}]),oe}(),J=function(){function oe(ae){this.options=ae||e.defaults}var ee=oe.prototype;return ee.code=function(O,V,ne){var ie=(V||"").match(/\S*/)[0];if(this.options.highlight){var we=this.options.highlight(O,ie);we!=null&&we!==O&&(ne=!0,O=we)}return O=O.replace(/\n$/,"")+` +`,ie?'<pre><code class="'+this.options.langPrefix+p(ie,!0)+'">'+(ne?O:p(O,!0))+`</code></pre> +`:"<pre><code>"+(ne?O:p(O,!0))+`</code></pre> +`},ee.blockquote=function(O){return`<blockquote> +`+O+`</blockquote> +`},ee.html=function(O){return O},ee.heading=function(O,V,ne,ie){if(this.options.headerIds){var we=this.options.headerPrefix+ie.slug(ne);return"<h"+V+' id="'+we+'">'+O+"</h"+V+`> +`}return"<h"+V+">"+O+"</h"+V+`> +`},ee.hr=function(){return this.options.xhtml?`<hr/> +`:`<hr> +`},ee.list=function(O,V,ne){var ie=V?"ol":"ul",we=V&&ne!==1?' start="'+ne+'"':"";return"<"+ie+we+`> +`+O+"</"+ie+`> +`},ee.listitem=function(O){return"<li>"+O+`</li> +`},ee.checkbox=function(O){return"<input "+(O?'checked="" ':"")+'disabled="" type="checkbox"'+(this.options.xhtml?" /":"")+"> "},ee.paragraph=function(O){return"<p>"+O+`</p> +`},ee.table=function(O,V){return V&&(V="<tbody>"+V+"</tbody>"),`<table> +<thead> +`+O+`</thead> +`+V+`</table> +`},ee.tablerow=function(O){return`<tr> +`+O+`</tr> +`},ee.tablecell=function(O,V){var ne=V.header?"th":"td",ie=V.align?"<"+ne+' align="'+V.align+'">':"<"+ne+">";return ie+O+("</"+ne+`> +`)},ee.strong=function(O){return"<strong>"+O+"</strong>"},ee.em=function(O){return"<em>"+O+"</em>"},ee.codespan=function(O){return"<code>"+O+"</code>"},ee.br=function(){return this.options.xhtml?"<br/>":"<br>"},ee.del=function(O){return"<del>"+O+"</del>"},ee.link=function(O,V,ne){if(O=E(this.options.sanitize,this.options.baseUrl,O),O===null)return ne;var ie='<a href="'+p(O)+'"';return V&&(ie+=' title="'+V+'"'),ie+=">"+ne+"</a>",ie},ee.image=function(O,V,ne){if(O=E(this.options.sanitize,this.options.baseUrl,O),O===null)return ne;var ie='<img src="'+O+'" alt="'+ne+'"';return V&&(ie+=' title="'+V+'"'),ie+=this.options.xhtml?"/>":">",ie},ee.text=function(O){return O},oe}(),be=function(){function oe(){}var ee=oe.prototype;return ee.strong=function(O){return O},ee.em=function(O){return O},ee.codespan=function(O){return O},ee.del=function(O){return O},ee.html=function(O){return O},ee.text=function(O){return O},ee.link=function(O,V,ne){return""+ne},ee.image=function(O,V,ne){return""+ne},ee.br=function(){return""},oe}(),fe=function(){function oe(){this.seen={}}var ee=oe.prototype;return ee.serialize=function(O){return O.toLowerCase().trim().replace(/<[!\/a-z].*?>/ig,"").replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g,"").replace(/\s/g,"-")},ee.getNextSafeSlug=function(O,V){var ne=O,ie=0;if(this.seen.hasOwnProperty(ne)){ie=this.seen[O];do ie++,ne=O+"-"+ie;while(this.seen.hasOwnProperty(ne))}return V||(this.seen[O]=ie,this.seen[ne]=0),ne},ee.slug=function(O,V){V===void 0&&(V={});var ne=this.serialize(O);return this.getNextSafeSlug(ne,V.dryrun)},oe}(),ge=function(){function oe(ae){this.options=ae||e.defaults,this.options.renderer=this.options.renderer||new J,this.renderer=this.options.renderer,this.renderer.options=this.options,this.textRenderer=new be,this.slugger=new fe}oe.parse=function(O,V){var ne=new oe(V);return ne.parse(O)},oe.parseInline=function(O,V){var ne=new oe(V);return ne.parseInline(O)};var ee=oe.prototype;return ee.parse=function(O,V){V===void 0&&(V=!0);var ne="",ie,we,Ie,je,Ye,rt,gt,ei,ii,et,mi,Wi,Co,oi,Bn,Mc,Oc,Wo,ql,Fc=O.length;for(ie=0;ie<Fc;ie++){if(et=O[ie],this.options.extensions&&this.options.extensions.renderers&&this.options.extensions.renderers[et.type]&&(ql=this.options.extensions.renderers[et.type].call({parser:this},et),ql!==!1||!["space","hr","heading","code","table","blockquote","list","html","paragraph","text"].includes(et.type))){ne+=ql||"";continue}switch(et.type){case"space":continue;case"hr":{ne+=this.renderer.hr();continue}case"heading":{ne+=this.renderer.heading(this.parseInline(et.tokens),et.depth,_(this.parseInline(et.tokens,this.textRenderer)),this.slugger);continue}case"code":{ne+=this.renderer.code(et.text,et.lang,et.escaped);continue}case"table":{for(ei="",gt="",je=et.header.length,we=0;we<je;we++)gt+=this.renderer.tablecell(this.parseInline(et.header[we].tokens),{header:!0,align:et.align[we]});for(ei+=this.renderer.tablerow(gt),ii="",je=et.rows.length,we=0;we<je;we++){for(rt=et.rows[we],gt="",Ye=rt.length,Ie=0;Ie<Ye;Ie++)gt+=this.renderer.tablecell(this.parseInline(rt[Ie].tokens),{header:!1,align:et.align[Ie]});ii+=this.renderer.tablerow(gt)}ne+=this.renderer.table(ei,ii);continue}case"blockquote":{ii=this.parse(et.tokens),ne+=this.renderer.blockquote(ii);continue}case"list":{for(mi=et.ordered,Wi=et.start,Co=et.loose,je=et.items.length,ii="",we=0;we<je;we++)Bn=et.items[we],Mc=Bn.checked,Oc=Bn.task,oi="",Bn.task&&(Wo=this.renderer.checkbox(Mc),Co?Bn.tokens.length>0&&Bn.tokens[0].type==="paragraph"?(Bn.tokens[0].text=Wo+" "+Bn.tokens[0].text,Bn.tokens[0].tokens&&Bn.tokens[0].tokens.length>0&&Bn.tokens[0].tokens[0].type==="text"&&(Bn.tokens[0].tokens[0].text=Wo+" "+Bn.tokens[0].tokens[0].text)):Bn.tokens.unshift({type:"text",text:Wo}):oi+=Wo),oi+=this.parse(Bn.tokens,Co),ii+=this.renderer.listitem(oi,Oc,Mc);ne+=this.renderer.list(ii,mi,Wi);continue}case"html":{ne+=this.renderer.html(et.text);continue}case"paragraph":{ne+=this.renderer.paragraph(this.parseInline(et.tokens));continue}case"text":{for(ii=et.tokens?this.parseInline(et.tokens):et.text;ie+1<Fc&&O[ie+1].type==="text";)et=O[++ie],ii+=` +`+(et.tokens?this.parseInline(et.tokens):et.text);ne+=V?this.renderer.paragraph(ii):ii;continue}default:{var Bc='Token with "'+et.type+'" type was not found.';if(this.options.silent){console.error(Bc);return}else throw new Error(Bc)}}}return ne},ee.parseInline=function(O,V){V=V||this.renderer;var ne="",ie,we,Ie,je=O.length;for(ie=0;ie<je;ie++){if(we=O[ie],this.options.extensions&&this.options.extensions.renderers&&this.options.extensions.renderers[we.type]&&(Ie=this.options.extensions.renderers[we.type].call({parser:this},we),Ie!==!1||!["escape","html","link","image","strong","em","codespan","br","del","text"].includes(we.type))){ne+=Ie||"";continue}switch(we.type){case"escape":{ne+=V.text(we.text);break}case"html":{ne+=V.html(we.text);break}case"link":{ne+=V.link(we.href,we.title,this.parseInline(we.tokens,V));break}case"image":{ne+=V.image(we.href,we.title,we.text);break}case"strong":{ne+=V.strong(this.parseInline(we.tokens,V));break}case"em":{ne+=V.em(this.parseInline(we.tokens,V));break}case"codespan":{ne+=V.codespan(we.text);break}case"br":{ne+=V.br();break}case"del":{ne+=V.del(this.parseInline(we.tokens,V));break}case"text":{ne+=V.text(we.text);break}default:{var Ye='Token with "'+we.type+'" type was not found.';if(this.options.silent){console.error(Ye);return}else throw new Error(Ye)}}}return ne},oe}();function se(oe,ee,ae){if(typeof oe>"u"||oe===null)throw new Error("marked(): input parameter is undefined or null");if(typeof oe!="string")throw new Error("marked(): input parameter is of type "+Object.prototype.toString.call(oe)+", string expected");if(typeof ee=="function"&&(ae=ee,ee=null),ee=P({},se.defaults,ee||{}),K(ee),ae){var O=ee.highlight,V;try{V=le.lex(oe,ee)}catch(je){return ae(je)}var ne=function(Ye){var rt;if(!Ye)try{ee.walkTokens&&se.walkTokens(V,ee.walkTokens),rt=ge.parse(V,ee)}catch(gt){Ye=gt}return ee.highlight=O,Ye?ae(Ye):ae(null,rt)};if(!O||O.length<3||(delete ee.highlight,!V.length))return ne();var ie=0;se.walkTokens(V,function(je){je.type==="code"&&(ie++,setTimeout(function(){O(je.text,je.lang,function(Ye,rt){if(Ye)return ne(Ye);rt!=null&&rt!==je.text&&(je.text=rt,je.escaped=!0),ie--,ie===0&&ne()})},0))}),ie===0&&ne();return}function we(je){if(je.message+=` +Please report this to https://github.com/markedjs/marked.`,ee.silent)return"<p>An error occurred:</p><pre>"+p(je.message+"",!0)+"</pre>";throw je}try{var Ie=le.lex(oe,ee);if(ee.walkTokens){if(ee.async)return Promise.all(se.walkTokens(Ie,ee.walkTokens)).then(function(){return ge.parse(Ie,ee)}).catch(we);se.walkTokens(Ie,ee.walkTokens)}return ge.parse(Ie,ee)}catch(je){we(je)}}se.options=se.setOptions=function(oe){return P(se.defaults,oe),l(se.defaults),se},se.getDefaults=a,se.defaults=e.defaults,se.use=function(){for(var oe=arguments.length,ee=new Array(oe),ae=0;ae<oe;ae++)ee[ae]=arguments[ae];var O=P.apply(void 0,[{}].concat(ee)),V=se.defaults.extensions||{renderers:{},childTokens:{}},ne;ee.forEach(function(ie){if(ie.extensions&&(ne=!0,ie.extensions.forEach(function(Ie){if(!Ie.name)throw new Error("extension name required");if(Ie.renderer){var je=V.renderers?V.renderers[Ie.name]:null;je?V.renderers[Ie.name]=function(){for(var Ye=arguments.length,rt=new Array(Ye),gt=0;gt<Ye;gt++)rt[gt]=arguments[gt];var ei=Ie.renderer.apply(this,rt);return ei===!1&&(ei=je.apply(this,rt)),ei}:V.renderers[Ie.name]=Ie.renderer}if(Ie.tokenizer){if(!Ie.level||Ie.level!=="block"&&Ie.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");V[Ie.level]?V[Ie.level].unshift(Ie.tokenizer):V[Ie.level]=[Ie.tokenizer],Ie.start&&(Ie.level==="block"?V.startBlock?V.startBlock.push(Ie.start):V.startBlock=[Ie.start]:Ie.level==="inline"&&(V.startInline?V.startInline.push(Ie.start):V.startInline=[Ie.start]))}Ie.childTokens&&(V.childTokens[Ie.name]=Ie.childTokens)})),ie.renderer&&function(){var Ie=se.defaults.renderer||new J,je=function(gt){var ei=Ie[gt];Ie[gt]=function(){for(var ii=arguments.length,et=new Array(ii),mi=0;mi<ii;mi++)et[mi]=arguments[mi];var Wi=ie.renderer[gt].apply(Ie,et);return Wi===!1&&(Wi=ei.apply(Ie,et)),Wi}};for(var Ye in ie.renderer)je(Ye);O.renderer=Ie}(),ie.tokenizer&&function(){var Ie=se.defaults.tokenizer||new G,je=function(gt){var ei=Ie[gt];Ie[gt]=function(){for(var ii=arguments.length,et=new Array(ii),mi=0;mi<ii;mi++)et[mi]=arguments[mi];var Wi=ie.tokenizer[gt].apply(Ie,et);return Wi===!1&&(Wi=ei.apply(Ie,et)),Wi}};for(var Ye in ie.tokenizer)je(Ye);O.tokenizer=Ie}(),ie.walkTokens){var we=se.defaults.walkTokens;O.walkTokens=function(Ie){var je=[];return je.push(ie.walkTokens.call(this,Ie)),we&&(je=je.concat(we.call(this,Ie))),je}}ne&&(O.extensions=V),se.setOptions(O)})},se.walkTokens=function(oe,ee){for(var ae=[],O=function(){var we=ne.value;switch(ae=ae.concat(ee.call(se,we)),we.type){case"table":{for(var Ie=o(we.header),je;!(je=Ie()).done;){var Ye=je.value;ae=ae.concat(se.walkTokens(Ye.tokens,ee))}for(var rt=o(we.rows),gt;!(gt=rt()).done;)for(var ei=gt.value,ii=o(ei),et;!(et=ii()).done;){var mi=et.value;ae=ae.concat(se.walkTokens(mi.tokens,ee))}break}case"list":{ae=ae.concat(se.walkTokens(we.items,ee));break}default:se.defaults.extensions&&se.defaults.extensions.childTokens&&se.defaults.extensions.childTokens[we.type]?se.defaults.extensions.childTokens[we.type].forEach(function(Wi){ae=ae.concat(se.walkTokens(we[Wi],ee))}):we.tokens&&(ae=ae.concat(se.walkTokens(we.tokens,ee)))}},V=o(oe),ne;!(ne=V()).done;)O();return ae},se.parseInline=function(oe,ee){if(typeof oe>"u"||oe===null)throw new Error("marked.parseInline(): input parameter is undefined or null");if(typeof oe!="string")throw new Error("marked.parseInline(): input parameter is of type "+Object.prototype.toString.call(oe)+", string expected");ee=P({},se.defaults,ee||{}),K(ee);try{var ae=le.lexInline(oe,ee);return ee.walkTokens&&se.walkTokens(ae,ee.walkTokens),ge.parseInline(ae,ee)}catch(O){if(O.message+=` +Please report this to https://github.com/markedjs/marked.`,ee.silent)return"<p>An error occurred:</p><pre>"+p(O.message+"",!0)+"</pre>";throw O}},se.Parser=ge,se.parser=ge.parse,se.Renderer=J,se.TextRenderer=be,se.Lexer=le,se.lexer=le.lex,se.Tokenizer=G,se.Slugger=fe,se.parse=se;var H=se.options,te=se.setOptions,ce=se.use,ve=se.walkTokens,Ee=se.parseInline,De=se,Fe=ge.parse,Oe=le.lex;e.Lexer=le,e.Parser=ge,e.Renderer=J,e.Slugger=fe,e.TextRenderer=be,e.Tokenizer=G,e.getDefaults=a,e.lexer=Oe,e.marked=se,e.options=H,e.parse=De,e.parseInline=Ee,e.parser=Fe,e.setOptions=te,e.use=ce,e.walkTokens=ve,Object.defineProperty(e,"__esModule",{value:!0})})})();vo.Lexer||exports.Lexer;vo.Parser||exports.Parser;vo.Renderer||exports.Renderer;vo.Slugger||exports.Slugger;vo.TextRenderer||exports.TextRenderer;vo.Tokenizer||exports.Tokenizer;vo.getDefaults||exports.getDefaults;vo.lexer||exports.lexer;var yh=vo.marked||exports.marked;vo.options||exports.options;vo.parse||exports.parse;vo.parseInline||exports.parseInline;vo.parser||exports.parser;vo.setOptions||exports.setOptions;vo.use||exports.use;vo.walkTokens||exports.walkTokens;function FGe(n){return JSON.stringify(n,BGe)}function Q9(n){let e=JSON.parse(n);return e=J9(e),e}function BGe(n,e){return e instanceof RegExp?{$mid:2,source:e.source,flags:e.flags}:e}function J9(n,e=0){if(!n||e>200)return n;if(typeof n=="object"){switch(n.$mid){case 1:return it.revive(n);case 2:return new RegExp(n.source,n.flags);case 17:return new Date(n.source)}if(n instanceof DO||n instanceof Uint8Array)return n;if(Array.isArray(n))for(let t=0;t<n.length;++t)n[t]=J9(n[t],e+1);else for(const t in n)Object.hasOwnProperty.call(n,t)&&(n[t]=J9(n[t],e+1))}return n}const d3=Object.freeze({image:(n,e,t)=>{let i=[],s=[];return n&&({href:n,dimensions:i}=DGe(n),s.push(`src="${CI(n)}"`)),t&&s.push(`alt="${CI(t)}"`),e&&s.push(`title="${CI(e)}"`),i.length&&(s=s.concat(i)),"<img "+s.join(" ")+">"},paragraph:n=>`<p>${n}</p>`,link:(n,e,t)=>typeof n!="string"?"":(n===t&&(t=h3(t)),e=typeof e=="string"?CI(h3(e)):"",n=h3(n),n=n.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'"),`<a href="${n}" title="${e||n}" draggable="false">${t}</a>`)});function i2(n,e={},t={}){var i,s;const r=new xe;let o=!1;const a=nK(e),l=function(_){let b;try{b=Q9(decodeURIComponent(_))}catch{}return b?(b=lpe(b,y=>{if(n.uris&&n.uris[y])return it.revive(n.uris[y])}),encodeURIComponent(JSON.stringify(b))):_},c=function(_,b){const y=n.uris&&n.uris[_];let w=it.revive(y);return b?_.startsWith(wt.data+":")?_:(w||(w=it.parse(_)),_ge.uriToBrowserUri(w).toString(!0)):!w||it.parse(_).toString()===w.toString()?_:(w.query&&(w=w.with({query:l(w.query)})),w.toString())},u=new yh.Renderer;u.image=d3.image,u.link=d3.link,u.paragraph=d3.paragraph;const h=[],d=[];if(e.codeBlockRendererSync?u.code=(_,b)=>{const y=X9.nextId(),w=e.codeBlockRendererSync(xte(b),_);return d.push([y,w]),`<div class="code" data-code="${y}">${IA(_)}</div>`}:e.codeBlockRenderer&&(u.code=(_,b)=>{const y=X9.nextId(),w=e.codeBlockRenderer(xte(b),_);return h.push(w.then(S=>[y,S])),`<div class="code" data-code="${y}">${IA(_)}</div>`}),e.actionHandler){const _=function(w){let S=w.target;if(!(S.tagName!=="A"&&(S=S.parentElement,!S||S.tagName!=="A")))try{let E=S.dataset.href;E&&(n.baseUri&&(E=f3(it.from(n.baseUri),E)),e.actionHandler.callback(E,w))}catch(E){vt(E)}finally{w.preventDefault()}},b=e.actionHandler.disposables.add(new Ht(a,"click")),y=e.actionHandler.disposables.add(new Ht(a,"auxclick"));e.actionHandler.disposables.add(Ve.any(b.event,y.event)(w=>{const S=new ac(pt(a),w);!S.leftButton&&!S.middleButton||_(S)})),e.actionHandler.disposables.add(Ce(a,"keydown",w=>{const S=new Ki(w);!S.equals(10)&&!S.equals(3)||_(S)}))}n.supportHtml||(t.sanitizer=_=>(n.isTrusted?_.match(/^(<span[^>]+>)|(<\/\s*span>)$/):void 0)?_:"",t.sanitize=!0,t.silent=!0),t.renderer=u;let f=(i=n.value)!==null&&i!==void 0?i:"";f.length>1e5&&(f=`${f.substr(0,1e5)}…`),n.supportThemeIcons&&(f=SGe(f));let g;if(e.fillInIncompleteTokens){const _={...yh.defaults,...t},b=yh.lexer(f,_),y=qGe(b);g=yh.parser(y,_)}else g=yh.parse(f,t);n.supportThemeIcons&&(g=Lp(g).map(b=>typeof b=="string"?b:b.outerHTML).join(""));const m=new DOMParser().parseFromString(e7(n,g),"text/html");if(m.body.querySelectorAll("img").forEach(_=>{const b=_.getAttribute("src");if(b){let y=b;try{n.baseUri&&(y=f3(it.from(n.baseUri),y))}catch{}_.src=c(y,!0)}}),m.body.querySelectorAll("a").forEach(_=>{const b=_.getAttribute("href");if(_.setAttribute("href",""),!b||/^data:|javascript:/i.test(b)||/^command:/i.test(b)&&!n.isTrusted||/^command:(\/\/\/)?_workbench\.downloadResource/i.test(b))_.replaceWith(..._.childNodes);else{let y=c(b,!1);n.baseUri&&(y=f3(it.from(n.baseUri),b)),_.dataset.href=y}}),a.innerHTML=e7(n,m.body.innerHTML),h.length>0)Promise.all(h).then(_=>{var b,y;if(o)return;const w=new Map(_),S=a.querySelectorAll("div[data-code]");for(const E of S){const L=w.get((b=E.dataset.code)!==null&&b!==void 0?b:"");L&&mr(E,L)}(y=e.asyncRenderCallback)===null||y===void 0||y.call(e)});else if(d.length>0){const _=new Map(d),b=a.querySelectorAll("div[data-code]");for(const y of b){const w=_.get((s=y.dataset.code)!==null&&s!==void 0?s:"");w&&mr(y,w)}}if(e.asyncRenderCallback)for(const _ of a.getElementsByTagName("img")){const b=r.add(Ce(_,"load",()=>{b.dispose(),e.asyncRenderCallback()}))}return{element:a,dispose:()=>{o=!0,r.dispose()}}}function xte(n){if(!n)return"";const e=n.split(/[\s+|:|,|\{|\?]/,1);return e.length?e[0]:n}function f3(n,e){return/^\w[\w\d+.-]*:/.test(e)?e:n.path.endsWith("/")?Oee(n,e).toString():Oee(KO(n),e).toString()}function e7(n,e){const{config:t,allowedSchemes:i}=VGe(n);Jfe("uponSanitizeAttribute",(r,o)=>{if(o.attrName==="style"||o.attrName==="class"){if(r.tagName==="SPAN"){if(o.attrName==="style"){o.keepAttr=/^(color\:(#[0-9a-fA-F]+|var\(--vscode(-[a-zA-Z]+)+\));)?(background-color\:(#[0-9a-fA-F]+|var\(--vscode(-[a-zA-Z]+)+\));)?$/.test(o.attrValue);return}else if(o.attrName==="class"){o.keepAttr=/^codicon codicon-[a-z\-]+( codicon-modifier-[a-z\-]+)?$/.test(o.attrValue);return}}o.keepAttr=!1;return}});const s=I9e(i);try{return Qfe(e,{...t,RETURN_TRUSTED_TYPE:!0})}finally{ege("uponSanitizeAttribute"),s.dispose()}}const WGe=["align","autoplay","alt","class","controls","data-code","data-href","draggable","height","href","loop","muted","playsinline","poster","src","style","target","title","width","start"];function VGe(n){const e=[wt.http,wt.https,wt.mailto,wt.data,wt.file,wt.vscodeFileResource,wt.vscodeRemote,wt.vscodeRemoteResource];return n.isTrusted&&e.push(wt.command),{config:{ALLOWED_TAGS:[...T9e],ALLOWED_ATTR:WGe,ALLOW_UNKNOWN_PROTOCOLS:!0},allowedSchemes:e}}function HGe(n){return typeof n=="string"?n:$Ge(n)}function $Ge(n){var e;let t=(e=n.value)!==null&&e!==void 0?e:"";t.length>1e5&&(t=`${t.substr(0,1e5)}…`);const i=yh.parse(t,{renderer:UGe.value}).replace(/&(#\d+|[a-zA-Z]+);/g,s=>{var r;return(r=zGe.get(s))!==null&&r!==void 0?r:s});return e7({isTrusted:!1},i).toString()}const zGe=new Map([[""",'"'],[" "," "],["&","&"],["'","'"],["<","<"],[">",">"]]),UGe=new Im(()=>{const n=new yh.Renderer;return n.code=e=>e,n.blockquote=e=>e,n.html=e=>"",n.heading=(e,t,i)=>e+` +`,n.hr=()=>"",n.list=(e,t)=>e,n.listitem=e=>e+` +`,n.paragraph=e=>e+` +`,n.table=(e,t)=>e+t+` +`,n.tablerow=e=>e,n.tablecell=(e,t)=>e+" ",n.strong=e=>e,n.em=e=>e,n.codespan=e=>e,n.br=()=>` +`,n.del=e=>e,n.image=(e,t,i)=>"",n.text=e=>e,n.link=(e,t,i)=>i,n});function rK(n){let e="";return n.forEach(t=>{e+=t.raw}),e}function jGe(n){for(const e of n.tokens)if(e.type==="text"){const t=e.raw.split(` +`),i=t[t.length-1];if(i.includes("`"))return GGe(n);if(i.includes("**"))return JGe(n);if(i.match(/\*\w/))return YGe(n);if(i.match(/(^|\s)__\w/))return eYe(n);if(i.match(/(^|\s)_\w/))return ZGe(n);if(i.match(/(^|\s)\[.*\]\(\w*/))return XGe(n);if(i.match(/(^|\s)\[\w/))return QGe(n)}}function qGe(n){let e,t;for(e=0;e<n.length;e++){const i=n[e];if(i.type==="paragraph"&&i.raw.match(/(\n|^)```/)){t=KGe(n.slice(e));break}if(i.type==="paragraph"&&i.raw.match(/(\n|^)\|/)){t=tYe(n.slice(e));break}if(e===n.length-1&&i.type==="paragraph"){const s=jGe(i);if(s){t=[s];break}}}if(t){const i=[...n.slice(0,e),...t];return i.links=n.links,i}return n}function KGe(n){const e=rK(n);return yh.lexer(e+"\n```")}function GGe(n){return Dv(n,"`")}function YGe(n){return Dv(n,"*")}function ZGe(n){return Dv(n,"_")}function XGe(n){return Dv(n,")")}function QGe(n){return Dv(n,"](about:blank)")}function JGe(n){return Dv(n,"**")}function eYe(n){return Dv(n,"__")}function Dv(n,e){const t=rK(Array.isArray(n)?n:[n]);return yh.lexer(t+e)[0]}function tYe(n){const e=rK(n),t=e.split(` +`);let i,s=!1;for(let r=0;r<t.length;r++){const o=t[r].trim();if(typeof i>"u"&&o.match(/^\s*\|/)){const a=o.match(/(\|[^\|]+)(?=\||$)/g);a&&(i=a.length)}else if(typeof i=="number")if(o.match(/^\s*\|/)){if(r!==t.length-1)return;s=!0}else return}if(typeof i=="number"&&i>0){const r=s?t.slice(0,-1).join(` +`):e,o=!!r.match(/\|\s*$/),a=r+(o?"":"|")+` +|${" --- |".repeat(i)}`;return yh.lexer(a)}}class iYe{constructor(e){this.spliceables=e}splice(e,t,i){this.spliceables.forEach(s=>s.splice(e,t,i))}}function qo(n,e,t){return Math.min(Math.max(n,e),t)}class zme{constructor(){this._n=1,this._val=0}update(e){return this._val=this._val+(e-this._val)/this._n,this._n+=1,this._val}get value(){return this._val}}class nYe{constructor(e){this._n=0,this._val=0,this._values=[],this._index=0,this._sum=0,this._values=new Array(e),this._values.fill(0,0,e)}update(e){const t=this._values[this._index];return this._values[this._index]=e,this._index=(this._index+1)%this._values.length,this._sum-=t,this._sum+=e,this._n<this._values.length&&(this._n+=1),this._val=this._sum/this._n,this._val}get value(){return this._val}}class Qm extends Error{constructor(e,t){super(`ListError [${e}] ${t}`)}}var Cr;(function(n){function e(r,o){if(r.start>=o.end||o.start>=r.end)return{start:0,end:0};const a=Math.max(r.start,o.start),l=Math.min(r.end,o.end);return l-a<=0?{start:0,end:0}:{start:a,end:l}}n.intersect=e;function t(r){return r.end-r.start<=0}n.isEmpty=t;function i(r,o){return!t(e(r,o))}n.intersects=i;function s(r,o){const a=[],l={start:r.start,end:Math.min(o.start,r.end)},c={start:Math.max(o.end,r.start),end:r.end};return t(l)||a.push(l),t(c)||a.push(c),a}n.relativeComplement=s})(Cr||(Cr={}));function Ete(n,e){const t=[];for(const i of e){if(n.start>=i.range.end)continue;if(n.end<i.range.start)break;const s=Cr.intersect(n,i.range);Cr.isEmpty(s)||t.push({range:s,size:i.size})}return t}function t7({start:n,end:e},t){return{start:n+t,end:e+t}}function sYe(n){const e=[];let t=null;for(const i of n){const s=i.range.start,r=i.range.end,o=i.size;if(t&&o===t.size){t.range.end=r;continue}t={range:{start:s,end:r},size:o},e.push(t)}return e}function rYe(...n){return sYe(n.reduce((e,t)=>e.concat(t),[]))}class Dte{get paddingTop(){return this._paddingTop}set paddingTop(e){this._size=this._size+e-this._paddingTop,this._paddingTop=e}constructor(e){this.groups=[],this._size=0,this._paddingTop=0,this._paddingTop=e??0,this._size=this._paddingTop}splice(e,t,i=[]){const s=i.length-t,r=Ete({start:0,end:e},this.groups),o=Ete({start:e+t,end:Number.POSITIVE_INFINITY},this.groups).map(l=>({range:t7(l.range,s),size:l.size})),a=i.map((l,c)=>({range:{start:e+c,end:e+c+1},size:l.size}));this.groups=rYe(r,a,o),this._size=this._paddingTop+this.groups.reduce((l,c)=>l+c.size*(c.range.end-c.range.start),0)}get count(){const e=this.groups.length;return e?this.groups[e-1].range.end:0}get size(){return this._size}indexAt(e){if(e<0)return-1;if(e<this._paddingTop)return 0;let t=0,i=this._paddingTop;for(const s of this.groups){const r=s.range.end-s.range.start,o=i+r*s.size;if(e<o)return t+Math.floor((e-i)/s.size);t+=r,i=o}return t}indexAfter(e){return Math.min(this.indexAt(e)+1,this.count)}positionAt(e){if(e<0)return-1;let t=0,i=0;for(const s of this.groups){const r=s.range.end-s.range.start,o=i+r;if(e<o)return this._paddingTop+t+(e-i)*s.size;t+=r*s.size,i=o}return-1}}function oYe(n){var e;try{(e=n.parentElement)===null||e===void 0||e.removeChild(n)}catch{}}class aYe{constructor(e){this.renderers=e,this.cache=new Map,this.transactionNodesPendingRemoval=new Set,this.inTransaction=!1}alloc(e){let t=this.getTemplateCache(e).pop(),i=!1;if(t)i=this.transactionNodesPendingRemoval.has(t.domNode),i&&this.transactionNodesPendingRemoval.delete(t.domNode);else{const s=Te(".monaco-list-row"),o=this.getRenderer(e).renderTemplate(s);t={domNode:s,templateId:e,templateData:o}}return{row:t,isReusingConnectedDomNode:i}}release(e){e&&this.releaseRow(e)}transact(e){if(this.inTransaction)throw new Error("Already in transaction");this.inTransaction=!0;try{e()}finally{for(const t of this.transactionNodesPendingRemoval)this.doRemoveNode(t);this.transactionNodesPendingRemoval.clear(),this.inTransaction=!1}}releaseRow(e){const{domNode:t,templateId:i}=e;t&&(this.inTransaction?this.transactionNodesPendingRemoval.add(t):this.doRemoveNode(t)),this.getTemplateCache(i).push(e)}doRemoveNode(e){e.classList.remove("scrolling"),oYe(e)}getTemplateCache(e){let t=this.cache.get(e);return t||(t=[],this.cache.set(e,t)),t}dispose(){this.cache.forEach((e,t)=>{for(const i of e)this.getRenderer(t).disposeTemplate(i.templateData),i.templateData=null}),this.cache.clear(),this.transactionNodesPendingRemoval.clear()}getRenderer(e){const t=this.renderers.get(e);if(!t)throw new Error(`No renderer found for ${e}`);return t}}var og=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r};const Jm={CurrentDragAndDropData:void 0},Xu={useShadows:!0,verticalScrollMode:1,setRowLineHeight:!0,setRowHeight:!0,supportDynamicHeights:!1,dnd:{getDragElements(n){return[n]},getDragURI(){return null},onDragStart(){},onDragOver(){return!1},drop(){},dispose(){}},horizontalScrolling:!1,transformOptimization:!0,alwaysConsumeMouseWheel:!0};class PE{constructor(e){this.elements=e}update(){}getData(){return this.elements}}class lYe{constructor(e){this.elements=e}update(){}getData(){return this.elements}}class cYe{constructor(){this.types=[],this.files=[]}update(e){if(e.types&&this.types.splice(0,this.types.length,...e.types),e.files){this.files.splice(0,this.files.length);for(let t=0;t<e.files.length;t++){const i=e.files.item(t);i&&(i.size||i.type)&&this.files.push(i)}}}getData(){return{types:this.types,files:this.files}}}function uYe(n,e){return Array.isArray(n)&&Array.isArray(e)?On(n,e):n===e}class hYe{constructor(e){e!=null&&e.getSetSize?this.getSetSize=e.getSetSize.bind(e):this.getSetSize=(t,i,s)=>s,e!=null&&e.getPosInSet?this.getPosInSet=e.getPosInSet.bind(e):this.getPosInSet=(t,i)=>i+1,e!=null&&e.getRole?this.getRole=e.getRole.bind(e):this.getRole=t=>"listitem",e!=null&&e.isChecked?this.isChecked=e.isChecked.bind(e):this.isChecked=t=>{}}}class $l{get contentHeight(){return this.rangeMap.size}get onDidScroll(){return this.scrollableElement.onScroll}get scrollableElementDomNode(){return this.scrollableElement.getDomNode()}get horizontalScrolling(){return this._horizontalScrolling}set horizontalScrolling(e){if(e!==this._horizontalScrolling){if(e&&this.supportDynamicHeights)throw new Error("Horizontal scrolling and dynamic heights not supported simultaneously");if(this._horizontalScrolling=e,this.domNode.classList.toggle("horizontal-scrolling",this._horizontalScrolling),this._horizontalScrolling){for(const t of this.items)this.measureItemWidth(t);this.updateScrollWidth(),this.scrollableElement.setScrollDimensions({width:w5(this.domNode)}),this.rowsContainer.style.width=`${Math.max(this.scrollWidth||0,this.renderWidth)}px`}else this.scrollableElementWidthDelayer.cancel(),this.scrollableElement.setScrollDimensions({width:this.renderWidth,scrollWidth:this.renderWidth}),this.rowsContainer.style.width=""}}constructor(e,t,i,s=Xu){var r,o,a,l,c,u,h,d,f,g,p,m,_;if(this.virtualDelegate=t,this.domId=`list_id_${++$l.InstanceCount}`,this.renderers=new Map,this.renderWidth=0,this._scrollHeight=0,this.scrollableElementUpdateDisposable=null,this.scrollableElementWidthDelayer=new Sc(50),this.splicing=!1,this.dragOverAnimationStopDisposable=pe.None,this.dragOverMouseY=0,this.canDrop=!1,this.currentDragFeedbackDisposable=pe.None,this.onDragLeaveTimeout=pe.None,this.disposables=new xe,this._onDidChangeContentHeight=new ue,this._onDidChangeContentWidth=new ue,this.onDidChangeContentHeight=Ve.latch(this._onDidChangeContentHeight.event,void 0,this.disposables),this._horizontalScrolling=!1,s.horizontalScrolling&&s.supportDynamicHeights)throw new Error("Horizontal scrolling and dynamic heights not supported simultaneously");this.items=[],this.itemId=0,this.rangeMap=new Dte((r=s.paddingTop)!==null&&r!==void 0?r:0);for(const y of i)this.renderers.set(y.templateId,y);this.cache=this.disposables.add(new aYe(this.renderers)),this.lastRenderTop=0,this.lastRenderHeight=0,this.domNode=document.createElement("div"),this.domNode.className="monaco-list",this.domNode.classList.add(this.domId),this.domNode.tabIndex=0,this.domNode.classList.toggle("mouse-support",typeof s.mouseSupport=="boolean"?s.mouseSupport:!0),this._horizontalScrolling=(o=s.horizontalScrolling)!==null&&o!==void 0?o:Xu.horizontalScrolling,this.domNode.classList.toggle("horizontal-scrolling",this._horizontalScrolling),this.paddingBottom=typeof s.paddingBottom>"u"?0:s.paddingBottom,this.accessibilityProvider=new hYe(s.accessibilityProvider),this.rowsContainer=document.createElement("div"),this.rowsContainer.className="monaco-list-rows",((a=s.transformOptimization)!==null&&a!==void 0?a:Xu.transformOptimization)&&(this.rowsContainer.style.transform="translate3d(0px, 0px, 0px)",this.rowsContainer.style.overflow="hidden",this.rowsContainer.style.contain="strict"),this.disposables.add(Ri.addTarget(this.rowsContainer)),this.scrollable=this.disposables.add(new PC({forceIntegerValues:!0,smoothScrollDuration:(l=s.smoothScrolling)!==null&&l!==void 0&&l?125:0,scheduleAtNextAnimationFrame:y=>ua(pt(this.domNode),y)})),this.scrollableElement=this.disposables.add(new HO(this.rowsContainer,{alwaysConsumeMouseWheel:(c=s.alwaysConsumeMouseWheel)!==null&&c!==void 0?c:Xu.alwaysConsumeMouseWheel,horizontal:1,vertical:(u=s.verticalScrollMode)!==null&&u!==void 0?u:Xu.verticalScrollMode,useShadows:(h=s.useShadows)!==null&&h!==void 0?h:Xu.useShadows,mouseWheelScrollSensitivity:s.mouseWheelScrollSensitivity,fastScrollSensitivity:s.fastScrollSensitivity,scrollByPage:s.scrollByPage},this.scrollable)),this.domNode.appendChild(this.scrollableElement.getDomNode()),e.appendChild(this.domNode),this.scrollableElement.onScroll(this.onScroll,this,this.disposables),this.disposables.add(Ce(this.rowsContainer,Oi.Change,y=>this.onTouchChange(y))),this.disposables.add(Ce(this.scrollableElement.getDomNode(),"scroll",y=>y.target.scrollTop=0)),this.disposables.add(Ce(this.domNode,"dragover",y=>this.onDragOver(this.toDragEvent(y)))),this.disposables.add(Ce(this.domNode,"drop",y=>this.onDrop(this.toDragEvent(y)))),this.disposables.add(Ce(this.domNode,"dragleave",y=>this.onDragLeave(this.toDragEvent(y)))),this.disposables.add(Ce(this.domNode,"dragend",y=>this.onDragEnd(y))),this.setRowLineHeight=(d=s.setRowLineHeight)!==null&&d!==void 0?d:Xu.setRowLineHeight,this.setRowHeight=(f=s.setRowHeight)!==null&&f!==void 0?f:Xu.setRowHeight,this.supportDynamicHeights=(g=s.supportDynamicHeights)!==null&&g!==void 0?g:Xu.supportDynamicHeights,this.dnd=(p=s.dnd)!==null&&p!==void 0?p:this.disposables.add(Xu.dnd),this.layout((m=s.initialSize)===null||m===void 0?void 0:m.height,(_=s.initialSize)===null||_===void 0?void 0:_.width)}updateOptions(e){e.paddingBottom!==void 0&&(this.paddingBottom=e.paddingBottom,this.scrollableElement.setScrollDimensions({scrollHeight:this.scrollHeight})),e.smoothScrolling!==void 0&&this.scrollable.setSmoothScrollDuration(e.smoothScrolling?125:0),e.horizontalScrolling!==void 0&&(this.horizontalScrolling=e.horizontalScrolling);let t;if(e.scrollByPage!==void 0&&(t={...t??{},scrollByPage:e.scrollByPage}),e.mouseWheelScrollSensitivity!==void 0&&(t={...t??{},mouseWheelScrollSensitivity:e.mouseWheelScrollSensitivity}),e.fastScrollSensitivity!==void 0&&(t={...t??{},fastScrollSensitivity:e.fastScrollSensitivity}),t&&this.scrollableElement.updateOptions(t),e.paddingTop!==void 0&&e.paddingTop!==this.rangeMap.paddingTop){const i=this.getRenderRange(this.lastRenderTop,this.lastRenderHeight),s=e.paddingTop-this.rangeMap.paddingTop;this.rangeMap.paddingTop=e.paddingTop,this.render(i,Math.max(0,this.lastRenderTop+s),this.lastRenderHeight,void 0,void 0,!0),this.setScrollTop(this.lastRenderTop),this.eventuallyUpdateScrollDimensions(),this.supportDynamicHeights&&this._rerender(this.lastRenderTop,this.lastRenderHeight)}}splice(e,t,i=[]){if(this.splicing)throw new Error("Can't run recursive splices.");this.splicing=!0;try{return this._splice(e,t,i)}finally{this.splicing=!1,this._onDidChangeContentHeight.fire(this.contentHeight)}}_splice(e,t,i=[]){const s=this.getRenderRange(this.lastRenderTop,this.lastRenderHeight),r={start:e,end:e+t},o=Cr.intersect(s,r),a=new Map;for(let E=o.end-1;E>=o.start;E--){const L=this.items[E];if(L.dragStartDisposable.dispose(),L.checkedDisposable.dispose(),L.row){let k=a.get(L.templateId);k||(k=[],a.set(L.templateId,k));const x=this.renderers.get(L.templateId);x&&x.disposeElement&&x.disposeElement(L.element,E,L.row.templateData,L.size),k.push(L.row)}L.row=null}const l={start:e+t,end:this.items.length},c=Cr.intersect(l,s),u=Cr.relativeComplement(l,s),h=i.map(E=>({id:String(this.itemId++),element:E,templateId:this.virtualDelegate.getTemplateId(E),size:this.virtualDelegate.getHeight(E),width:void 0,hasDynamicHeight:!!this.virtualDelegate.hasDynamicHeight&&this.virtualDelegate.hasDynamicHeight(E),lastDynamicHeightWidth:void 0,row:null,uri:void 0,dropTarget:!1,dragStartDisposable:pe.None,checkedDisposable:pe.None}));let d;e===0&&t>=this.items.length?(this.rangeMap=new Dte(this.rangeMap.paddingTop),this.rangeMap.splice(0,0,h),d=this.items,this.items=h):(this.rangeMap.splice(e,t,h),d=this.items.splice(e,t,...h));const f=i.length-t,g=this.getRenderRange(this.lastRenderTop,this.lastRenderHeight),p=t7(c,f),m=Cr.intersect(g,p);for(let E=m.start;E<m.end;E++)this.updateItemInDOM(this.items[E],E);const _=Cr.relativeComplement(p,g);for(const E of _)for(let L=E.start;L<E.end;L++)this.removeItemFromDOM(L);const b=u.map(E=>t7(E,f)),w=[{start:e,end:e+i.length},...b].map(E=>Cr.intersect(g,E)),S=this.getNextToLastElement(w);for(const E of w)for(let L=E.start;L<E.end;L++){const k=this.items[L],x=a.get(k.templateId),I=x==null?void 0:x.pop();this.insertItemInDOM(L,S,I)}for(const E of a.values())for(const L of E)this.cache.release(L);return this.eventuallyUpdateScrollDimensions(),this.supportDynamicHeights&&this._rerender(this.scrollTop,this.renderHeight),d.map(E=>E.element)}eventuallyUpdateScrollDimensions(){this._scrollHeight=this.contentHeight,this.rowsContainer.style.height=`${this._scrollHeight}px`,this.scrollableElementUpdateDisposable||(this.scrollableElementUpdateDisposable=ua(pt(this.domNode),()=>{this.scrollableElement.setScrollDimensions({scrollHeight:this.scrollHeight}),this.updateScrollWidth(),this.scrollableElementUpdateDisposable=null}))}eventuallyUpdateScrollWidth(){if(!this.horizontalScrolling){this.scrollableElementWidthDelayer.cancel();return}this.scrollableElementWidthDelayer.trigger(()=>this.updateScrollWidth())}updateScrollWidth(){if(!this.horizontalScrolling)return;let e=0;for(const t of this.items)typeof t.width<"u"&&(e=Math.max(e,t.width));this.scrollWidth=e,this.scrollableElement.setScrollDimensions({scrollWidth:e===0?0:e+10}),this._onDidChangeContentWidth.fire(this.scrollWidth)}rerender(){if(this.supportDynamicHeights){for(const e of this.items)e.lastDynamicHeightWidth=void 0;this._rerender(this.lastRenderTop,this.lastRenderHeight)}}get length(){return this.items.length}get renderHeight(){return this.scrollableElement.getScrollDimensions().height}get firstVisibleIndex(){return this.getRenderRange(this.lastRenderTop,this.lastRenderHeight).start}element(e){return this.items[e].element}indexOf(e){return this.items.findIndex(t=>t.element===e)}domElement(e){const t=this.items[e].row;return t&&t.domNode}elementHeight(e){return this.items[e].size}elementTop(e){return this.rangeMap.positionAt(e)}indexAt(e){return this.rangeMap.indexAt(e)}indexAfter(e){return this.rangeMap.indexAfter(e)}layout(e,t){const i={height:typeof e=="number"?e:p9e(this.domNode)};this.scrollableElementUpdateDisposable&&(this.scrollableElementUpdateDisposable.dispose(),this.scrollableElementUpdateDisposable=null,i.scrollHeight=this.scrollHeight),this.scrollableElement.setScrollDimensions(i),typeof t<"u"&&(this.renderWidth=t,this.supportDynamicHeights&&this._rerender(this.scrollTop,this.renderHeight)),this.horizontalScrolling&&this.scrollableElement.setScrollDimensions({width:typeof t=="number"?t:w5(this.domNode)})}render(e,t,i,s,r,o=!1){const a=this.getRenderRange(t,i),l=Cr.relativeComplement(a,e),c=Cr.relativeComplement(e,a),u=this.getNextToLastElement(l);if(o){const h=Cr.intersect(e,a);for(let d=h.start;d<h.end;d++)this.updateItemInDOM(this.items[d],d)}this.cache.transact(()=>{for(const h of c)for(let d=h.start;d<h.end;d++)this.removeItemFromDOM(d);for(const h of l)for(let d=h.start;d<h.end;d++)this.insertItemInDOM(d,u)}),s!==void 0&&(this.rowsContainer.style.left=`-${s}px`),this.rowsContainer.style.top=`-${t}px`,this.horizontalScrolling&&r!==void 0&&(this.rowsContainer.style.width=`${Math.max(r,this.renderWidth)}px`),this.lastRenderTop=t,this.lastRenderHeight=i}insertItemInDOM(e,t,i){const s=this.items[e];let r=!1;if(!s.row)if(i)s.row=i;else{const u=this.cache.alloc(s.templateId);s.row=u.row,r=u.isReusingConnectedDomNode}const o=this.accessibilityProvider.getRole(s.element)||"listitem";s.row.domNode.setAttribute("role",o);const a=this.accessibilityProvider.isChecked(s.element);if(typeof a=="boolean")s.row.domNode.setAttribute("aria-checked",String(!!a));else if(a){const u=h=>s.row.domNode.setAttribute("aria-checked",String(!!h));u(a.value),s.checkedDisposable=a.onDidChange(u)}(r||!s.row.domNode.parentElement)&&(t?this.rowsContainer.insertBefore(s.row.domNode,t):this.rowsContainer.appendChild(s.row.domNode)),this.updateItemInDOM(s,e);const l=this.renderers.get(s.templateId);if(!l)throw new Error(`No renderer found for template id ${s.templateId}`);l==null||l.renderElement(s.element,e,s.row.templateData,s.size);const c=this.dnd.getDragURI(s.element);s.dragStartDisposable.dispose(),s.row.domNode.draggable=!!c,c&&(s.dragStartDisposable=Ce(s.row.domNode,"dragstart",u=>this.onDragStart(s.element,c,u))),this.horizontalScrolling&&(this.measureItemWidth(s),this.eventuallyUpdateScrollWidth())}measureItemWidth(e){if(!e.row||!e.row.domNode)return;e.row.domNode.style.width="fit-content",e.width=w5(e.row.domNode);const t=pt(e.row.domNode).getComputedStyle(e.row.domNode);t.paddingLeft&&(e.width+=parseFloat(t.paddingLeft)),t.paddingRight&&(e.width+=parseFloat(t.paddingRight)),e.row.domNode.style.width=""}updateItemInDOM(e,t){e.row.domNode.style.top=`${this.elementTop(t)}px`,this.setRowHeight&&(e.row.domNode.style.height=`${e.size}px`),this.setRowLineHeight&&(e.row.domNode.style.lineHeight=`${e.size}px`),e.row.domNode.setAttribute("data-index",`${t}`),e.row.domNode.setAttribute("data-last-element",t===this.length-1?"true":"false"),e.row.domNode.setAttribute("data-parity",t%2===0?"even":"odd"),e.row.domNode.setAttribute("aria-setsize",String(this.accessibilityProvider.getSetSize(e.element,t,this.length))),e.row.domNode.setAttribute("aria-posinset",String(this.accessibilityProvider.getPosInSet(e.element,t))),e.row.domNode.setAttribute("id",this.getElementDomId(t)),e.row.domNode.classList.toggle("drop-target",e.dropTarget)}removeItemFromDOM(e){const t=this.items[e];if(t.dragStartDisposable.dispose(),t.checkedDisposable.dispose(),t.row){const i=this.renderers.get(t.templateId);i&&i.disposeElement&&i.disposeElement(t.element,e,t.row.templateData,t.size),this.cache.release(t.row),t.row=null}this.horizontalScrolling&&this.eventuallyUpdateScrollWidth()}getScrollTop(){return this.scrollableElement.getScrollPosition().scrollTop}setScrollTop(e,t){this.scrollableElementUpdateDisposable&&(this.scrollableElementUpdateDisposable.dispose(),this.scrollableElementUpdateDisposable=null,this.scrollableElement.setScrollDimensions({scrollHeight:this.scrollHeight})),this.scrollableElement.setScrollPosition({scrollTop:e,reuseAnimation:t})}get scrollTop(){return this.getScrollTop()}set scrollTop(e){this.setScrollTop(e)}get scrollHeight(){return this._scrollHeight+(this.horizontalScrolling?10:0)+this.paddingBottom}get onMouseClick(){return Ve.map(this.disposables.add(new Ht(this.domNode,"click")).event,e=>this.toMouseEvent(e),this.disposables)}get onMouseDblClick(){return Ve.map(this.disposables.add(new Ht(this.domNode,"dblclick")).event,e=>this.toMouseEvent(e),this.disposables)}get onMouseMiddleClick(){return Ve.filter(Ve.map(this.disposables.add(new Ht(this.domNode,"auxclick")).event,e=>this.toMouseEvent(e),this.disposables),e=>e.browserEvent.button===1,this.disposables)}get onMouseDown(){return Ve.map(this.disposables.add(new Ht(this.domNode,"mousedown")).event,e=>this.toMouseEvent(e),this.disposables)}get onMouseOver(){return Ve.map(this.disposables.add(new Ht(this.domNode,"mouseover")).event,e=>this.toMouseEvent(e),this.disposables)}get onMouseOut(){return Ve.map(this.disposables.add(new Ht(this.domNode,"mouseout")).event,e=>this.toMouseEvent(e),this.disposables)}get onContextMenu(){return Ve.any(Ve.map(this.disposables.add(new Ht(this.domNode,"contextmenu")).event,e=>this.toMouseEvent(e),this.disposables),Ve.map(this.disposables.add(new Ht(this.domNode,Oi.Contextmenu)).event,e=>this.toGestureEvent(e),this.disposables))}get onTouchStart(){return Ve.map(this.disposables.add(new Ht(this.domNode,"touchstart")).event,e=>this.toTouchEvent(e),this.disposables)}get onTap(){return Ve.map(this.disposables.add(new Ht(this.rowsContainer,Oi.Tap)).event,e=>this.toGestureEvent(e),this.disposables)}toMouseEvent(e){const t=this.getItemIndexFromEventTarget(e.target||null),i=typeof t>"u"?void 0:this.items[t],s=i&&i.element;return{browserEvent:e,index:t,element:s}}toTouchEvent(e){const t=this.getItemIndexFromEventTarget(e.target||null),i=typeof t>"u"?void 0:this.items[t],s=i&&i.element;return{browserEvent:e,index:t,element:s}}toGestureEvent(e){const t=this.getItemIndexFromEventTarget(e.initialTarget||null),i=typeof t>"u"?void 0:this.items[t],s=i&&i.element;return{browserEvent:e,index:t,element:s}}toDragEvent(e){const t=this.getItemIndexFromEventTarget(e.target||null),i=typeof t>"u"?void 0:this.items[t],s=i&&i.element;return{browserEvent:e,index:t,element:s}}onScroll(e){try{const t=this.getRenderRange(this.lastRenderTop,this.lastRenderHeight);this.render(t,e.scrollTop,e.height,e.scrollLeft,e.scrollWidth),this.supportDynamicHeights&&this._rerender(e.scrollTop,e.height,e.inSmoothScrolling)}catch(t){throw console.error("Got bad scroll event:",e),t}}onTouchChange(e){e.preventDefault(),e.stopPropagation(),this.scrollTop-=e.translationY}onDragStart(e,t,i){var s,r;if(!i.dataTransfer)return;const o=this.dnd.getDragElements(e);if(i.dataTransfer.effectAllowed="copyMove",i.dataTransfer.setData(GL.TEXT,t),i.dataTransfer.setDragImage){let a;this.dnd.getDragLabel&&(a=this.dnd.getDragLabel(o,i)),typeof a>"u"&&(a=String(o.length));const l=Te(".monaco-drag-image");l.textContent=a;const u=(h=>{for(;h&&!h.classList.contains("monaco-workbench");)h=h.parentElement;return h||this.domNode.ownerDocument})(this.domNode);u.appendChild(l),i.dataTransfer.setDragImage(l,-10,-10),setTimeout(()=>u.removeChild(l),0)}this.domNode.classList.add("dragging"),this.currentDragData=new PE(o),Jm.CurrentDragAndDropData=new lYe(o),(r=(s=this.dnd).onDragStart)===null||r===void 0||r.call(s,this.currentDragData,i)}onDragOver(e){var t;if(e.browserEvent.preventDefault(),this.onDragLeaveTimeout.dispose(),Jm.CurrentDragAndDropData&&Jm.CurrentDragAndDropData.getData()==="vscode-ui"||(this.setupDragAndDropScrollTopAnimation(e.browserEvent),!e.browserEvent.dataTransfer))return!1;if(!this.currentDragData)if(Jm.CurrentDragAndDropData)this.currentDragData=Jm.CurrentDragAndDropData;else{if(!e.browserEvent.dataTransfer.types)return!1;this.currentDragData=new cYe}const i=this.dnd.onDragOver(this.currentDragData,e.element,e.index,e.browserEvent);if(this.canDrop=typeof i=="boolean"?i:i.accept,!this.canDrop)return this.currentDragFeedback=void 0,this.currentDragFeedbackDisposable.dispose(),!1;e.browserEvent.dataTransfer.dropEffect=typeof i!="boolean"&&i.effect===0?"copy":"move";let s;if(typeof i!="boolean"&&i.feedback?s=i.feedback:typeof e.index>"u"?s=[-1]:s=[e.index],s=Jp(s).filter(r=>r>=-1&&r<this.length).sort((r,o)=>r-o),s=s[0]===-1?[-1]:s,uYe(this.currentDragFeedback,s))return!0;if(this.currentDragFeedback=s,this.currentDragFeedbackDisposable.dispose(),s[0]===-1)this.domNode.classList.add("drop-target"),this.rowsContainer.classList.add("drop-target"),this.currentDragFeedbackDisposable=st(()=>{this.domNode.classList.remove("drop-target"),this.rowsContainer.classList.remove("drop-target")});else{for(const r of s){const o=this.items[r];o.dropTarget=!0,(t=o.row)===null||t===void 0||t.domNode.classList.add("drop-target")}this.currentDragFeedbackDisposable=st(()=>{var r;for(const o of s){const a=this.items[o];a.dropTarget=!1,(r=a.row)===null||r===void 0||r.domNode.classList.remove("drop-target")}})}return!0}onDragLeave(e){var t,i;this.onDragLeaveTimeout.dispose(),this.onDragLeaveTimeout=Gp(()=>this.clearDragOverFeedback(),100,this.disposables),this.currentDragData&&((i=(t=this.dnd).onDragLeave)===null||i===void 0||i.call(t,this.currentDragData,e.element,e.index,e.browserEvent))}onDrop(e){if(!this.canDrop)return;const t=this.currentDragData;this.teardownDragAndDropScrollTopAnimation(),this.clearDragOverFeedback(),this.domNode.classList.remove("dragging"),this.currentDragData=void 0,Jm.CurrentDragAndDropData=void 0,!(!t||!e.browserEvent.dataTransfer)&&(e.browserEvent.preventDefault(),t.update(e.browserEvent.dataTransfer),this.dnd.drop(t,e.element,e.index,e.browserEvent))}onDragEnd(e){var t,i;this.canDrop=!1,this.teardownDragAndDropScrollTopAnimation(),this.clearDragOverFeedback(),this.domNode.classList.remove("dragging"),this.currentDragData=void 0,Jm.CurrentDragAndDropData=void 0,(i=(t=this.dnd).onDragEnd)===null||i===void 0||i.call(t,e)}clearDragOverFeedback(){this.currentDragFeedback=void 0,this.currentDragFeedbackDisposable.dispose(),this.currentDragFeedbackDisposable=pe.None}setupDragAndDropScrollTopAnimation(e){if(!this.dragOverAnimationDisposable){const t=yge(this.domNode).top;this.dragOverAnimationDisposable=D9e(pt(this.domNode),this.animateDragAndDropScrollTop.bind(this,t))}this.dragOverAnimationStopDisposable.dispose(),this.dragOverAnimationStopDisposable=Gp(()=>{this.dragOverAnimationDisposable&&(this.dragOverAnimationDisposable.dispose(),this.dragOverAnimationDisposable=void 0)},1e3,this.disposables),this.dragOverMouseY=e.pageY}animateDragAndDropScrollTop(e){if(this.dragOverMouseY===void 0)return;const t=this.dragOverMouseY-e,i=this.renderHeight-35;t<35?this.scrollTop+=Math.max(-14,Math.floor(.3*(t-35))):t>i&&(this.scrollTop+=Math.min(14,Math.floor(.3*(t-i))))}teardownDragAndDropScrollTopAnimation(){this.dragOverAnimationStopDisposable.dispose(),this.dragOverAnimationDisposable&&(this.dragOverAnimationDisposable.dispose(),this.dragOverAnimationDisposable=void 0)}getItemIndexFromEventTarget(e){const t=this.scrollableElement.getDomNode();let i=e;for(;i instanceof HTMLElement&&i!==this.rowsContainer&&t.contains(i);){const s=i.getAttribute("data-index");if(s){const r=Number(s);if(!isNaN(r))return r}i=i.parentElement}}getRenderRange(e,t){return{start:this.rangeMap.indexAt(e),end:this.rangeMap.indexAfter(e+t-1)}}_rerender(e,t,i){const s=this.getRenderRange(e,t);let r,o;e===this.elementTop(s.start)?(r=s.start,o=0):s.end-s.start>1&&(r=s.start+1,o=this.elementTop(r)-e);let a=0;for(;;){const l=this.getRenderRange(e,t);let c=!1;for(let u=l.start;u<l.end;u++){const h=this.probeDynamicHeight(u);h!==0&&this.rangeMap.splice(u,1,[this.items[u]]),a+=h,c=c||h!==0}if(!c){a!==0&&this.eventuallyUpdateScrollDimensions();const u=Cr.relativeComplement(s,l);for(const d of u)for(let f=d.start;f<d.end;f++)this.items[f].row&&this.removeItemFromDOM(f);const h=Cr.relativeComplement(l,s);for(const d of h)for(let f=d.start;f<d.end;f++){const g=f+1,p=g<this.items.length?this.items[g].row:null,m=p?p.domNode:null;this.insertItemInDOM(f,m)}for(let d=l.start;d<l.end;d++)this.items[d].row&&this.updateItemInDOM(this.items[d],d);if(typeof r=="number"){const d=this.scrollable.getFutureScrollPosition().scrollTop-e,f=this.elementTop(r)-o+d;this.setScrollTop(f,i)}this._onDidChangeContentHeight.fire(this.contentHeight);return}}}probeDynamicHeight(e){var t,i,s;const r=this.items[e];if(this.virtualDelegate.getDynamicHeight){const c=this.virtualDelegate.getDynamicHeight(r.element);if(c!==null){const u=r.size;return r.size=c,r.lastDynamicHeightWidth=this.renderWidth,c-u}}if(!r.hasDynamicHeight||r.lastDynamicHeightWidth===this.renderWidth||this.virtualDelegate.hasDynamicHeight&&!this.virtualDelegate.hasDynamicHeight(r.element))return 0;const o=r.size;if(r.row)return r.row.domNode.style.height="",r.size=r.row.domNode.offsetHeight,r.lastDynamicHeightWidth=this.renderWidth,r.size-o;const{row:a}=this.cache.alloc(r.templateId);a.domNode.style.height="",this.rowsContainer.appendChild(a.domNode);const l=this.renderers.get(r.templateId);if(!l)throw new an("Missing renderer for templateId: "+r.templateId);return l.renderElement(r.element,e,a.templateData,void 0),r.size=a.domNode.offsetHeight,(t=l.disposeElement)===null||t===void 0||t.call(l,r.element,e,a.templateData,void 0),(s=(i=this.virtualDelegate).setDynamicHeight)===null||s===void 0||s.call(i,r.element,r.size),r.lastDynamicHeightWidth=this.renderWidth,this.rowsContainer.removeChild(a.domNode),this.cache.release(a),r.size-o}getNextToLastElement(e){const t=e[e.length-1];if(!t)return null;const i=this.items[t.end];return!i||!i.row?null:i.row.domNode}getElementDomId(e){return`${this.domId}_${e}`}dispose(){var e,t;for(const i of this.items)if(i.dragStartDisposable.dispose(),i.checkedDisposable.dispose(),i.row){const s=this.renderers.get(i.row.templateId);s&&((e=s.disposeElement)===null||e===void 0||e.call(s,i.element,-1,i.row.templateData,void 0),s.disposeTemplate(i.row.templateData))}this.items=[],this.domNode&&this.domNode.parentNode&&this.domNode.parentNode.removeChild(this.domNode),(t=this.dragOverAnimationDisposable)===null||t===void 0||t.dispose(),this.disposables.dispose()}}$l.InstanceCount=0;og([ts],$l.prototype,"onMouseClick",null);og([ts],$l.prototype,"onMouseDblClick",null);og([ts],$l.prototype,"onMouseMiddleClick",null);og([ts],$l.prototype,"onMouseDown",null);og([ts],$l.prototype,"onMouseOver",null);og([ts],$l.prototype,"onMouseOut",null);og([ts],$l.prototype,"onContextMenu",null);og([ts],$l.prototype,"onTouchStart",null);og([ts],$l.prototype,"onTap",null);var Iv=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r};class dYe{constructor(e){this.trait=e,this.renderedElements=[]}get templateId(){return`template:${this.trait.name}`}renderTemplate(e){return e}renderElement(e,t,i){const s=this.renderedElements.findIndex(r=>r.templateData===i);if(s>=0){const r=this.renderedElements[s];this.trait.unrender(i),r.index=t}else{const r={index:t,templateData:i};this.renderedElements.push(r)}this.trait.renderIndex(t,i)}splice(e,t,i){const s=[];for(const r of this.renderedElements)r.index<e?s.push(r):r.index>=e+t&&s.push({index:r.index+i-t,templateData:r.templateData});this.renderedElements=s}renderIndexes(e){for(const{index:t,templateData:i}of this.renderedElements)e.indexOf(t)>-1&&this.trait.renderIndex(t,i)}disposeTemplate(e){const t=this.renderedElements.findIndex(i=>i.templateData===e);t<0||this.renderedElements.splice(t,1)}}let _P=class{get name(){return this._trait}get renderer(){return new dYe(this)}constructor(e){this._trait=e,this.length=0,this.indexes=[],this.sortedIndexes=[],this._onChange=new ue,this.onChange=this._onChange.event}splice(e,t,i){var s;t=Math.max(0,Math.min(t,this.length-e));const r=i.length-t,o=e+t,a=[];let l=0;for(;l<this.sortedIndexes.length&&this.sortedIndexes[l]<e;)a.push(this.sortedIndexes[l++]);for(let u=0;u<i.length;u++)i[u]&&a.push(u+e);for(;l<this.sortedIndexes.length&&this.sortedIndexes[l]>=o;)a.push(this.sortedIndexes[l++]+r);const c=this.length+r;if(this.sortedIndexes.length>0&&a.length===0&&c>0){const u=(s=this.sortedIndexes.find(h=>h>=e))!==null&&s!==void 0?s:c-1;a.push(Math.min(u,c-1))}this.renderer.splice(e,t,i.length),this._set(a,a),this.length=c}renderIndex(e,t){t.classList.toggle(this._trait,this.contains(e))}unrender(e){e.classList.remove(this._trait)}set(e,t){return this._set(e,[...e].sort(Tte),t)}_set(e,t,i){const s=this.indexes,r=this.sortedIndexes;this.indexes=e,this.sortedIndexes=t;const o=i7(r,e);return this.renderer.renderIndexes(o),this._onChange.fire({indexes:e,browserEvent:i}),s}get(){return this.indexes}contains(e){return CL(this.sortedIndexes,e,Tte)>=0}dispose(){yi(this._onChange)}};Iv([ts],_P.prototype,"renderer",null);class fYe extends _P{constructor(e){super("selected"),this.setAriaSelected=e}renderIndex(e,t){super.renderIndex(e,t),this.setAriaSelected&&(this.contains(e)?t.setAttribute("aria-selected","true"):t.setAttribute("aria-selected","false"))}}class g3{constructor(e,t,i){this.trait=e,this.view=t,this.identityProvider=i}splice(e,t,i){if(!this.identityProvider)return this.trait.splice(e,t,new Array(i.length).fill(!1));const s=this.trait.get().map(a=>this.identityProvider.getId(this.view.element(a)).toString());if(s.length===0)return this.trait.splice(e,t,new Array(i.length).fill(!1));const r=new Set(s),o=i.map(a=>r.has(this.identityProvider.getId(a).toString()));this.trait.splice(e,t,o)}}function xp(n){return n.tagName==="INPUT"||n.tagName==="TEXTAREA"}function RE(n,e){return n.classList.contains(e)?!0:n.classList.contains("monaco-list")||!n.parentElement?!1:RE(n.parentElement,e)}function SS(n){return RE(n,"monaco-editor")}function gYe(n){return RE(n,"monaco-custom-toggle")}function pYe(n){return RE(n,"action-item")}function mYe(n){return RE(n,"monaco-tree-sticky-row")}function Ume(n){return n.tagName==="A"&&n.classList.contains("monaco-button")||n.tagName==="DIV"&&n.classList.contains("monaco-button-dropdown")?!0:n.classList.contains("monaco-list")||!n.parentElement?!1:Ume(n.parentElement)}class jme{get onKeyDown(){return Ve.chain(this.disposables.add(new Ht(this.view.domNode,"keydown")).event,e=>e.filter(t=>!xp(t.target)).map(t=>new Ki(t)))}constructor(e,t,i){this.list=e,this.view=t,this.disposables=new xe,this.multipleSelectionDisposables=new xe,this.multipleSelectionSupport=i.multipleSelectionSupport,this.disposables.add(this.onKeyDown(s=>{switch(s.keyCode){case 3:return this.onEnter(s);case 16:return this.onUpArrow(s);case 18:return this.onDownArrow(s);case 11:return this.onPageUpArrow(s);case 12:return this.onPageDownArrow(s);case 9:return this.onEscape(s);case 31:this.multipleSelectionSupport&&(Gt?s.metaKey:s.ctrlKey)&&this.onCtrlA(s)}}))}updateOptions(e){e.multipleSelectionSupport!==void 0&&(this.multipleSelectionSupport=e.multipleSelectionSupport)}onEnter(e){e.preventDefault(),e.stopPropagation(),this.list.setSelection(this.list.getFocus(),e.browserEvent)}onUpArrow(e){e.preventDefault(),e.stopPropagation(),this.list.focusPrevious(1,!1,e.browserEvent);const t=this.list.getFocus()[0];this.list.setAnchor(t),this.list.reveal(t),this.view.domNode.focus()}onDownArrow(e){e.preventDefault(),e.stopPropagation(),this.list.focusNext(1,!1,e.browserEvent);const t=this.list.getFocus()[0];this.list.setAnchor(t),this.list.reveal(t),this.view.domNode.focus()}onPageUpArrow(e){e.preventDefault(),e.stopPropagation(),this.list.focusPreviousPage(e.browserEvent);const t=this.list.getFocus()[0];this.list.setAnchor(t),this.list.reveal(t),this.view.domNode.focus()}onPageDownArrow(e){e.preventDefault(),e.stopPropagation(),this.list.focusNextPage(e.browserEvent);const t=this.list.getFocus()[0];this.list.setAnchor(t),this.list.reveal(t),this.view.domNode.focus()}onCtrlA(e){e.preventDefault(),e.stopPropagation(),this.list.setSelection(Zr(this.list.length),e.browserEvent),this.list.setAnchor(void 0),this.view.domNode.focus()}onEscape(e){this.list.getSelection().length&&(e.preventDefault(),e.stopPropagation(),this.list.setSelection([],e.browserEvent),this.list.setAnchor(void 0),this.view.domNode.focus())}dispose(){this.disposables.dispose(),this.multipleSelectionDisposables.dispose()}}Iv([ts],jme.prototype,"onKeyDown",null);var Ch;(function(n){n[n.Automatic=0]="Automatic",n[n.Trigger=1]="Trigger"})(Ch||(Ch={}));var G0;(function(n){n[n.Idle=0]="Idle",n[n.Typing=1]="Typing"})(G0||(G0={}));const _Ye=new class{mightProducePrintableCharacter(n){return n.ctrlKey||n.metaKey||n.altKey?!1:n.keyCode>=31&&n.keyCode<=56||n.keyCode>=21&&n.keyCode<=30||n.keyCode>=98&&n.keyCode<=107||n.keyCode>=85&&n.keyCode<=95}};class vYe{constructor(e,t,i,s,r){this.list=e,this.view=t,this.keyboardNavigationLabelProvider=i,this.keyboardNavigationEventFilter=s,this.delegate=r,this.enabled=!1,this.state=G0.Idle,this.mode=Ch.Automatic,this.triggered=!1,this.previouslyFocused=-1,this.enabledDisposables=new xe,this.disposables=new xe,this.updateOptions(e.options)}updateOptions(e){var t,i;!((t=e.typeNavigationEnabled)!==null&&t!==void 0)||t?this.enable():this.disable(),this.mode=(i=e.typeNavigationMode)!==null&&i!==void 0?i:Ch.Automatic}enable(){if(this.enabled)return;let e=!1;const t=Ve.chain(this.enabledDisposables.add(new Ht(this.view.domNode,"keydown")).event,r=>r.filter(o=>!xp(o.target)).filter(()=>this.mode===Ch.Automatic||this.triggered).map(o=>new Ki(o)).filter(o=>e||this.keyboardNavigationEventFilter(o)).filter(o=>this.delegate.mightProducePrintableCharacter(o)).forEach(o=>Tt.stop(o,!0)).map(o=>o.browserEvent.key)),i=Ve.debounce(t,()=>null,800,void 0,void 0,void 0,this.enabledDisposables);Ve.reduce(Ve.any(t,i),(r,o)=>o===null?null:(r||"")+o,void 0,this.enabledDisposables)(this.onInput,this,this.enabledDisposables),i(this.onClear,this,this.enabledDisposables),t(()=>e=!0,void 0,this.enabledDisposables),i(()=>e=!1,void 0,this.enabledDisposables),this.enabled=!0,this.triggered=!1}disable(){this.enabled&&(this.enabledDisposables.clear(),this.enabled=!1,this.triggered=!1)}onClear(){var e;const t=this.list.getFocus();if(t.length>0&&t[0]===this.previouslyFocused){const i=(e=this.list.options.accessibilityProvider)===null||e===void 0?void 0:e.getAriaLabel(this.list.element(t[0]));i&&ha(i)}this.previouslyFocused=-1}onInput(e){if(!e){this.state=G0.Idle,this.triggered=!1;return}const t=this.list.getFocus(),i=t.length>0?t[0]:0,s=this.state===G0.Idle?1:0;this.state=G0.Typing;for(let r=0;r<this.list.length;r++){const o=(i+r+s)%this.list.length,a=this.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(this.view.element(o)),l=a&&a.toString();if(this.list.options.typeNavigationEnabled){if(typeof l<"u"){if(YL(e,l)){this.previouslyFocused=i,this.list.setFocus([o]),this.list.reveal(o);return}const c=hGe(e,l);if(c&&c[0].end-c[0].start>1&&c.length===1){this.previouslyFocused=i,this.list.setFocus([o]),this.list.reveal(o);return}}}else if(typeof l>"u"||YL(e,l)){this.previouslyFocused=i,this.list.setFocus([o]),this.list.reveal(o);return}}}dispose(){this.disable(),this.enabledDisposables.dispose(),this.disposables.dispose()}}class bYe{constructor(e,t){this.list=e,this.view=t,this.disposables=new xe;const i=Ve.chain(this.disposables.add(new Ht(t.domNode,"keydown")).event,r=>r.filter(o=>!xp(o.target)).map(o=>new Ki(o)));Ve.chain(i,r=>r.filter(o=>o.keyCode===2&&!o.ctrlKey&&!o.metaKey&&!o.shiftKey&&!o.altKey))(this.onTab,this,this.disposables)}onTab(e){if(e.target!==this.view.domNode)return;const t=this.list.getFocus();if(t.length===0)return;const i=this.view.domElement(t[0]);if(!i)return;const s=i.querySelector("[tabIndex]");if(!s||!(s instanceof HTMLElement)||s.tabIndex===-1)return;const r=pt(s).getComputedStyle(s);r.visibility==="hidden"||r.display==="none"||(e.preventDefault(),e.stopPropagation(),s.focus())}dispose(){this.disposables.dispose()}}function qme(n){return Gt?n.browserEvent.metaKey:n.browserEvent.ctrlKey}function Kme(n){return n.browserEvent.shiftKey}function yYe(n){return Zj(n)&&n.button===2}const Ite={isSelectionSingleChangeEvent:qme,isSelectionRangeChangeEvent:Kme};class Gme{constructor(e){this.list=e,this.disposables=new xe,this._onPointer=new ue,this.onPointer=this._onPointer.event,e.options.multipleSelectionSupport!==!1&&(this.multipleSelectionController=this.list.options.multipleSelectionController||Ite),this.mouseSupport=typeof e.options.mouseSupport>"u"||!!e.options.mouseSupport,this.mouseSupport&&(e.onMouseDown(this.onMouseDown,this,this.disposables),e.onContextMenu(this.onContextMenu,this,this.disposables),e.onMouseDblClick(this.onDoubleClick,this,this.disposables),e.onTouchStart(this.onMouseDown,this,this.disposables),this.disposables.add(Ri.addTarget(e.getHTMLElement()))),Ve.any(e.onMouseClick,e.onMouseMiddleClick,e.onTap)(this.onViewPointer,this,this.disposables)}updateOptions(e){e.multipleSelectionSupport!==void 0&&(this.multipleSelectionController=void 0,e.multipleSelectionSupport&&(this.multipleSelectionController=this.list.options.multipleSelectionController||Ite))}isSelectionSingleChangeEvent(e){return this.multipleSelectionController?this.multipleSelectionController.isSelectionSingleChangeEvent(e):!1}isSelectionRangeChangeEvent(e){return this.multipleSelectionController?this.multipleSelectionController.isSelectionRangeChangeEvent(e):!1}isSelectionChangeEvent(e){return this.isSelectionSingleChangeEvent(e)||this.isSelectionRangeChangeEvent(e)}onMouseDown(e){SS(e.browserEvent.target)||Ka()!==e.browserEvent.target&&this.list.domFocus()}onContextMenu(e){if(xp(e.browserEvent.target)||SS(e.browserEvent.target))return;const t=typeof e.index>"u"?[]:[e.index];this.list.setFocus(t,e.browserEvent)}onViewPointer(e){if(!this.mouseSupport||xp(e.browserEvent.target)||SS(e.browserEvent.target)||e.browserEvent.isHandledByList)return;e.browserEvent.isHandledByList=!0;const t=e.index;if(typeof t>"u"){this.list.setFocus([],e.browserEvent),this.list.setSelection([],e.browserEvent),this.list.setAnchor(void 0);return}if(this.isSelectionChangeEvent(e))return this.changeSelection(e);this.list.setFocus([t],e.browserEvent),this.list.setAnchor(t),yYe(e.browserEvent)||this.list.setSelection([t],e.browserEvent),this._onPointer.fire(e)}onDoubleClick(e){if(xp(e.browserEvent.target)||SS(e.browserEvent.target)||this.isSelectionChangeEvent(e)||e.browserEvent.isHandledByList)return;e.browserEvent.isHandledByList=!0;const t=this.list.getFocus();this.list.setSelection(t,e.browserEvent)}changeSelection(e){const t=e.index;let i=this.list.getAnchor();if(this.isSelectionRangeChangeEvent(e)){if(typeof i>"u"){const u=this.list.getFocus()[0];i=u??t,this.list.setAnchor(i)}const s=Math.min(i,t),r=Math.max(i,t),o=Zr(s,r+1),a=this.list.getSelection(),l=SYe(i7(a,[i]),i);if(l.length===0)return;const c=i7(o,kYe(a,l));this.list.setSelection(c,e.browserEvent),this.list.setFocus([t],e.browserEvent)}else if(this.isSelectionSingleChangeEvent(e)){const s=this.list.getSelection(),r=s.filter(o=>o!==t);this.list.setFocus([t]),this.list.setAnchor(t),s.length===r.length?this.list.setSelection([...r,t],e.browserEvent):this.list.setSelection(r,e.browserEvent)}}dispose(){this.disposables.dispose()}}class Yme{constructor(e,t){this.styleElement=e,this.selectorSuffix=t}style(e){var t,i;const s=this.selectorSuffix&&`.${this.selectorSuffix}`,r=[];e.listBackground&&r.push(`.monaco-list${s} .monaco-list-rows { background: ${e.listBackground}; }`),e.listFocusBackground&&(r.push(`.monaco-list${s}:focus .monaco-list-row.focused { background-color: ${e.listFocusBackground}; }`),r.push(`.monaco-list${s}:focus .monaco-list-row.focused:hover { background-color: ${e.listFocusBackground}; }`)),e.listFocusForeground&&r.push(`.monaco-list${s}:focus .monaco-list-row.focused { color: ${e.listFocusForeground}; }`),e.listActiveSelectionBackground&&(r.push(`.monaco-list${s}:focus .monaco-list-row.selected { background-color: ${e.listActiveSelectionBackground}; }`),r.push(`.monaco-list${s}:focus .monaco-list-row.selected:hover { background-color: ${e.listActiveSelectionBackground}; }`)),e.listActiveSelectionForeground&&r.push(`.monaco-list${s}:focus .monaco-list-row.selected { color: ${e.listActiveSelectionForeground}; }`),e.listActiveSelectionIconForeground&&r.push(`.monaco-list${s}:focus .monaco-list-row.selected .codicon { color: ${e.listActiveSelectionIconForeground}; }`),e.listFocusAndSelectionBackground&&r.push(` + .monaco-drag-image, + .monaco-list${s}:focus .monaco-list-row.selected.focused { background-color: ${e.listFocusAndSelectionBackground}; } + `),e.listFocusAndSelectionForeground&&r.push(` + .monaco-drag-image, + .monaco-list${s}:focus .monaco-list-row.selected.focused { color: ${e.listFocusAndSelectionForeground}; } + `),e.listInactiveFocusForeground&&(r.push(`.monaco-list${s} .monaco-list-row.focused { color: ${e.listInactiveFocusForeground}; }`),r.push(`.monaco-list${s} .monaco-list-row.focused:hover { color: ${e.listInactiveFocusForeground}; }`)),e.listInactiveSelectionIconForeground&&r.push(`.monaco-list${s} .monaco-list-row.focused .codicon { color: ${e.listInactiveSelectionIconForeground}; }`),e.listInactiveFocusBackground&&(r.push(`.monaco-list${s} .monaco-list-row.focused { background-color: ${e.listInactiveFocusBackground}; }`),r.push(`.monaco-list${s} .monaco-list-row.focused:hover { background-color: ${e.listInactiveFocusBackground}; }`)),e.listInactiveSelectionBackground&&(r.push(`.monaco-list${s} .monaco-list-row.selected { background-color: ${e.listInactiveSelectionBackground}; }`),r.push(`.monaco-list${s} .monaco-list-row.selected:hover { background-color: ${e.listInactiveSelectionBackground}; }`)),e.listInactiveSelectionForeground&&r.push(`.monaco-list${s} .monaco-list-row.selected { color: ${e.listInactiveSelectionForeground}; }`),e.listHoverBackground&&r.push(`.monaco-list${s}:not(.drop-target):not(.dragging) .monaco-list-row:hover:not(.selected):not(.focused) { background-color: ${e.listHoverBackground}; }`),e.listHoverForeground&&r.push(`.monaco-list${s}:not(.drop-target):not(.dragging) .monaco-list-row:hover:not(.selected):not(.focused) { color: ${e.listHoverForeground}; }`);const o=s_(e.listFocusAndSelectionOutline,s_(e.listSelectionOutline,(t=e.listFocusOutline)!==null&&t!==void 0?t:""));o&&r.push(`.monaco-list${s}:focus .monaco-list-row.focused.selected { outline: 1px solid ${o}; outline-offset: -1px;}`),e.listFocusOutline&&r.push(` + .monaco-drag-image, + .monaco-list${s}:focus .monaco-list-row.focused { outline: 1px solid ${e.listFocusOutline}; outline-offset: -1px; } + .monaco-workbench.context-menu-visible .monaco-list${s}.last-focused .monaco-list-row.focused { outline: 1px solid ${e.listFocusOutline}; outline-offset: -1px; } + `);const a=s_(e.listSelectionOutline,(i=e.listInactiveFocusOutline)!==null&&i!==void 0?i:"");a&&r.push(`.monaco-list${s} .monaco-list-row.focused.selected { outline: 1px dotted ${a}; outline-offset: -1px; }`),e.listSelectionOutline&&r.push(`.monaco-list${s} .monaco-list-row.selected { outline: 1px dotted ${e.listSelectionOutline}; outline-offset: -1px; }`),e.listInactiveFocusOutline&&r.push(`.monaco-list${s} .monaco-list-row.focused { outline: 1px dotted ${e.listInactiveFocusOutline}; outline-offset: -1px; }`),e.listHoverOutline&&r.push(`.monaco-list${s} .monaco-list-row:hover { outline: 1px dashed ${e.listHoverOutline}; outline-offset: -1px; }`),e.listDropBackground&&r.push(` + .monaco-list${s}.drop-target, + .monaco-list${s} .monaco-list-rows.drop-target, + .monaco-list${s} .monaco-list-row.drop-target { background-color: ${e.listDropBackground} !important; color: inherit !important; } + `),e.tableColumnsBorder&&r.push(` + .monaco-table > .monaco-split-view2, + .monaco-table > .monaco-split-view2 .monaco-sash.vertical::before, + .monaco-workbench:not(.reduce-motion) .monaco-table:hover > .monaco-split-view2, + .monaco-workbench:not(.reduce-motion) .monaco-table:hover > .monaco-split-view2 .monaco-sash.vertical::before { + border-color: ${e.tableColumnsBorder}; + } + + .monaco-workbench:not(.reduce-motion) .monaco-table > .monaco-split-view2, + .monaco-workbench:not(.reduce-motion) .monaco-table > .monaco-split-view2 .monaco-sash.vertical::before { + border-color: transparent; + } + `),e.tableOddRowsBackgroundColor&&r.push(` + .monaco-table .monaco-list-row[data-parity=odd]:not(.focused):not(.selected):not(:hover) .monaco-table-tr, + .monaco-table .monaco-list:not(:focus) .monaco-list-row[data-parity=odd].focused:not(.selected):not(:hover) .monaco-table-tr, + .monaco-table .monaco-list:not(.focused) .monaco-list-row[data-parity=odd].focused:not(.selected):not(:hover) .monaco-table-tr { + background-color: ${e.tableOddRowsBackgroundColor}; + } + `),this.styleElement.textContent=r.join(` +`)}}const CYe={listFocusBackground:"#7FB0D0",listActiveSelectionBackground:"#0E639C",listActiveSelectionForeground:"#FFFFFF",listActiveSelectionIconForeground:"#FFFFFF",listFocusAndSelectionOutline:"#90C2F9",listFocusAndSelectionBackground:"#094771",listFocusAndSelectionForeground:"#FFFFFF",listInactiveSelectionBackground:"#3F3F46",listInactiveSelectionIconForeground:"#FFFFFF",listHoverBackground:"#2A2D2E",listDropBackground:"#383B3D",treeIndentGuidesStroke:"#a9a9a9",treeInactiveIndentGuidesStroke:me.fromHex("#a9a9a9").transparent(.4).toString(),tableColumnsBorder:me.fromHex("#cccccc").transparent(.2).toString(),tableOddRowsBackgroundColor:me.fromHex("#cccccc").transparent(.04).toString(),listBackground:void 0,listFocusForeground:void 0,listInactiveSelectionForeground:void 0,listInactiveFocusForeground:void 0,listInactiveFocusBackground:void 0,listHoverForeground:void 0,listFocusOutline:void 0,listInactiveFocusOutline:void 0,listSelectionOutline:void 0,listHoverOutline:void 0},wYe={keyboardSupport:!0,mouseSupport:!0,multipleSelectionSupport:!0,dnd:{getDragURI(){return null},onDragStart(){},onDragOver(){return!1},drop(){},dispose(){}}};function SYe(n,e){const t=n.indexOf(e);if(t===-1)return[];const i=[];let s=t-1;for(;s>=0&&n[s]===e-(t-s);)i.push(n[s--]);for(i.reverse(),s=t;s<n.length&&n[s]===e+(s-t);)i.push(n[s++]);return i}function i7(n,e){const t=[];let i=0,s=0;for(;i<n.length||s<e.length;)if(i>=n.length)t.push(e[s++]);else if(s>=e.length)t.push(n[i++]);else if(n[i]===e[s]){t.push(n[i]),i++,s++;continue}else n[i]<e[s]?t.push(n[i++]):t.push(e[s++]);return t}function kYe(n,e){const t=[];let i=0,s=0;for(;i<n.length||s<e.length;)if(i>=n.length)t.push(e[s++]);else if(s>=e.length)t.push(n[i++]);else if(n[i]===e[s]){i++,s++;continue}else n[i]<e[s]?t.push(n[i++]):s++;return t}const Tte=(n,e)=>n-e;class LYe{constructor(e,t){this._templateId=e,this.renderers=t}get templateId(){return this._templateId}renderTemplate(e){return this.renderers.map(t=>t.renderTemplate(e))}renderElement(e,t,i,s){let r=0;for(const o of this.renderers)o.renderElement(e,t,i[r++],s)}disposeElement(e,t,i,s){var r;let o=0;for(const a of this.renderers)(r=a.disposeElement)===null||r===void 0||r.call(a,e,t,i[o],s),o+=1}disposeTemplate(e){let t=0;for(const i of this.renderers)i.disposeTemplate(e[t++])}}class xYe{constructor(e){this.accessibilityProvider=e,this.templateId="a18n"}renderTemplate(e){return e}renderElement(e,t,i){const s=this.accessibilityProvider.getAriaLabel(e);s?i.setAttribute("aria-label",s):i.removeAttribute("aria-label");const r=this.accessibilityProvider.getAriaLevel&&this.accessibilityProvider.getAriaLevel(e);typeof r=="number"?i.setAttribute("aria-level",`${r}`):i.removeAttribute("aria-level")}disposeTemplate(e){}}class EYe{constructor(e,t){this.list=e,this.dnd=t}getDragElements(e){const t=this.list.getSelectedElements();return t.indexOf(e)>-1?t:[e]}getDragURI(e){return this.dnd.getDragURI(e)}getDragLabel(e,t){if(this.dnd.getDragLabel)return this.dnd.getDragLabel(e,t)}onDragStart(e,t){var i,s;(s=(i=this.dnd).onDragStart)===null||s===void 0||s.call(i,e,t)}onDragOver(e,t,i,s){return this.dnd.onDragOver(e,t,i,s)}onDragLeave(e,t,i,s){var r,o;(o=(r=this.dnd).onDragLeave)===null||o===void 0||o.call(r,e,t,i,s)}onDragEnd(e){var t,i;(i=(t=this.dnd).onDragEnd)===null||i===void 0||i.call(t,e)}drop(e,t,i,s){this.dnd.drop(e,t,i,s)}dispose(){this.dnd.dispose()}}class Ac{get onDidChangeFocus(){return Ve.map(this.eventBufferer.wrapEvent(this.focus.onChange),e=>this.toListEvent(e),this.disposables)}get onDidChangeSelection(){return Ve.map(this.eventBufferer.wrapEvent(this.selection.onChange),e=>this.toListEvent(e),this.disposables)}get domId(){return this.view.domId}get onDidScroll(){return this.view.onDidScroll}get onMouseClick(){return this.view.onMouseClick}get onMouseDblClick(){return this.view.onMouseDblClick}get onMouseMiddleClick(){return this.view.onMouseMiddleClick}get onPointer(){return this.mouseController.onPointer}get onMouseDown(){return this.view.onMouseDown}get onMouseOver(){return this.view.onMouseOver}get onMouseOut(){return this.view.onMouseOut}get onTouchStart(){return this.view.onTouchStart}get onTap(){return this.view.onTap}get onContextMenu(){let e=!1;const t=Ve.chain(this.disposables.add(new Ht(this.view.domNode,"keydown")).event,r=>r.map(o=>new Ki(o)).filter(o=>e=o.keyCode===58||o.shiftKey&&o.keyCode===68).map(o=>Tt.stop(o,!0)).filter(()=>!1)),i=Ve.chain(this.disposables.add(new Ht(this.view.domNode,"keyup")).event,r=>r.forEach(()=>e=!1).map(o=>new Ki(o)).filter(o=>o.keyCode===58||o.shiftKey&&o.keyCode===68).map(o=>Tt.stop(o,!0)).map(({browserEvent:o})=>{const a=this.getFocus(),l=a.length?a[0]:void 0,c=typeof l<"u"?this.view.element(l):void 0,u=typeof l<"u"?this.view.domElement(l):this.view.domNode;return{index:l,element:c,anchor:u,browserEvent:o}})),s=Ve.chain(this.view.onContextMenu,r=>r.filter(o=>!e).map(({element:o,index:a,browserEvent:l})=>({element:o,index:a,anchor:new ac(pt(this.view.domNode),l),browserEvent:l})));return Ve.any(t,i,s)}get onKeyDown(){return this.disposables.add(new Ht(this.view.domNode,"keydown")).event}get onDidFocus(){return Ve.signal(this.disposables.add(new Ht(this.view.domNode,"focus",!0)).event)}constructor(e,t,i,s,r=wYe){var o,a,l,c;this.user=e,this._options=r,this.focus=new _P("focused"),this.anchor=new _P("anchor"),this.eventBufferer=new Dj,this._ariaLabel="",this.disposables=new xe,this._onDidDispose=new ue,this.onDidDispose=this._onDidDispose.event;const u=this._options.accessibilityProvider&&this._options.accessibilityProvider.getWidgetRole?(o=this._options.accessibilityProvider)===null||o===void 0?void 0:o.getWidgetRole():"list";this.selection=new fYe(u!=="listbox");const h=[this.focus.renderer,this.selection.renderer];this.accessibilityProvider=r.accessibilityProvider,this.accessibilityProvider&&(h.push(new xYe(this.accessibilityProvider)),(l=(a=this.accessibilityProvider).onDidChangeActiveDescendant)===null||l===void 0||l.call(a,this.onDidChangeActiveDescendant,this,this.disposables)),s=s.map(f=>new LYe(f.templateId,[...h,f]));const d={...r,dnd:r.dnd&&new EYe(this,r.dnd)};if(this.view=this.createListView(t,i,s,d),this.view.domNode.setAttribute("role",u),r.styleController)this.styleController=r.styleController(this.view.domId);else{const f=Fl(this.view.domNode);this.styleController=new Yme(f,this.view.domId)}if(this.spliceable=new iYe([new g3(this.focus,this.view,r.identityProvider),new g3(this.selection,this.view,r.identityProvider),new g3(this.anchor,this.view,r.identityProvider),this.view]),this.disposables.add(this.focus),this.disposables.add(this.selection),this.disposables.add(this.anchor),this.disposables.add(this.view),this.disposables.add(this._onDidDispose),this.disposables.add(new bYe(this,this.view)),(typeof r.keyboardSupport!="boolean"||r.keyboardSupport)&&(this.keyboardController=new jme(this,this.view,r),this.disposables.add(this.keyboardController)),r.keyboardNavigationLabelProvider){const f=r.keyboardNavigationDelegate||_Ye;this.typeNavigationController=new vYe(this,this.view,r.keyboardNavigationLabelProvider,(c=r.keyboardNavigationEventFilter)!==null&&c!==void 0?c:()=>!0,f),this.disposables.add(this.typeNavigationController)}this.mouseController=this.createMouseController(r),this.disposables.add(this.mouseController),this.onDidChangeFocus(this._onFocusChange,this,this.disposables),this.onDidChangeSelection(this._onSelectionChange,this,this.disposables),this.accessibilityProvider&&(this.ariaLabel=this.accessibilityProvider.getWidgetAriaLabel()),this._options.multipleSelectionSupport!==!1&&this.view.domNode.setAttribute("aria-multiselectable","true")}createListView(e,t,i,s){return new $l(e,t,i,s)}createMouseController(e){return new Gme(this)}updateOptions(e={}){var t,i;this._options={...this._options,...e},(t=this.typeNavigationController)===null||t===void 0||t.updateOptions(this._options),this._options.multipleSelectionController!==void 0&&(this._options.multipleSelectionSupport?this.view.domNode.setAttribute("aria-multiselectable","true"):this.view.domNode.removeAttribute("aria-multiselectable")),this.mouseController.updateOptions(e),(i=this.keyboardController)===null||i===void 0||i.updateOptions(e),this.view.updateOptions(e)}get options(){return this._options}splice(e,t,i=[]){if(e<0||e>this.view.length)throw new Qm(this.user,`Invalid start index: ${e}`);if(t<0)throw new Qm(this.user,`Invalid delete count: ${t}`);t===0&&i.length===0||this.eventBufferer.bufferEvents(()=>this.spliceable.splice(e,t,i))}rerender(){this.view.rerender()}element(e){return this.view.element(e)}indexOf(e){return this.view.indexOf(e)}get length(){return this.view.length}get contentHeight(){return this.view.contentHeight}get onDidChangeContentHeight(){return this.view.onDidChangeContentHeight}get scrollTop(){return this.view.getScrollTop()}set scrollTop(e){this.view.setScrollTop(e)}get scrollHeight(){return this.view.scrollHeight}get renderHeight(){return this.view.renderHeight}get firstVisibleIndex(){return this.view.firstVisibleIndex}get ariaLabel(){return this._ariaLabel}set ariaLabel(e){this._ariaLabel=e,this.view.domNode.setAttribute("aria-label",e)}domFocus(){this.view.domNode.focus({preventScroll:!0})}layout(e,t){this.view.layout(e,t)}setSelection(e,t){for(const i of e)if(i<0||i>=this.length)throw new Qm(this.user,`Invalid index ${i}`);this.selection.set(e,t)}getSelection(){return this.selection.get()}getSelectedElements(){return this.getSelection().map(e=>this.view.element(e))}setAnchor(e){if(typeof e>"u"){this.anchor.set([]);return}if(e<0||e>=this.length)throw new Qm(this.user,`Invalid index ${e}`);this.anchor.set([e])}getAnchor(){return iq(this.anchor.get(),void 0)}getAnchorElement(){const e=this.getAnchor();return typeof e>"u"?void 0:this.element(e)}setFocus(e,t){for(const i of e)if(i<0||i>=this.length)throw new Qm(this.user,`Invalid index ${i}`);this.focus.set(e,t)}focusNext(e=1,t=!1,i,s){if(this.length===0)return;const r=this.focus.get(),o=this.findNextIndex(r.length>0?r[0]+e:0,t,s);o>-1&&this.setFocus([o],i)}focusPrevious(e=1,t=!1,i,s){if(this.length===0)return;const r=this.focus.get(),o=this.findPreviousIndex(r.length>0?r[0]-e:0,t,s);o>-1&&this.setFocus([o],i)}async focusNextPage(e,t){let i=this.view.indexAt(this.view.getScrollTop()+this.view.renderHeight);i=i===0?0:i-1;const s=this.getFocus()[0];if(s!==i&&(s===void 0||i>s)){const r=this.findPreviousIndex(i,!1,t);r>-1&&s!==r?this.setFocus([r],e):this.setFocus([i],e)}else{const r=this.view.getScrollTop();let o=r+this.view.renderHeight;i>s&&(o-=this.view.elementHeight(i)),this.view.setScrollTop(o),this.view.getScrollTop()!==r&&(this.setFocus([]),await Kp(0),await this.focusNextPage(e,t))}}async focusPreviousPage(e,t){let i;const s=this.view.getScrollTop();s===0?i=this.view.indexAt(s):i=this.view.indexAfter(s-1);const r=this.getFocus()[0];if(r!==i&&(r===void 0||r>=i)){const o=this.findNextIndex(i,!1,t);o>-1&&r!==o?this.setFocus([o],e):this.setFocus([i],e)}else{const o=s;this.view.setScrollTop(s-this.view.renderHeight),this.view.getScrollTop()!==o&&(this.setFocus([]),await Kp(0),await this.focusPreviousPage(e,t))}}focusLast(e,t){if(this.length===0)return;const i=this.findPreviousIndex(this.length-1,!1,t);i>-1&&this.setFocus([i],e)}focusFirst(e,t){this.focusNth(0,e,t)}focusNth(e,t,i){if(this.length===0)return;const s=this.findNextIndex(e,!1,i);s>-1&&this.setFocus([s],t)}findNextIndex(e,t=!1,i){for(let s=0;s<this.length;s++){if(e>=this.length&&!t)return-1;if(e=e%this.length,!i||i(this.element(e)))return e;e++}return-1}findPreviousIndex(e,t=!1,i){for(let s=0;s<this.length;s++){if(e<0&&!t)return-1;if(e=(this.length+e%this.length)%this.length,!i||i(this.element(e)))return e;e--}return-1}getFocus(){return this.focus.get()}getFocusedElements(){return this.getFocus().map(e=>this.view.element(e))}reveal(e,t,i=0){if(e<0||e>=this.length)throw new Qm(this.user,`Invalid index ${e}`);const s=this.view.getScrollTop(),r=this.view.elementTop(e),o=this.view.elementHeight(e);if(qp(t)){const a=o-this.view.renderHeight+i;this.view.setScrollTop(a*qo(t,0,1)+r-i)}else{const a=r+o,l=s+this.view.renderHeight;r<s+i&&a>=l||(r<s+i||a>=l&&o>=this.view.renderHeight?this.view.setScrollTop(r-i):a>=l&&this.view.setScrollTop(a-this.view.renderHeight))}}getRelativeTop(e,t=0){if(e<0||e>=this.length)throw new Qm(this.user,`Invalid index ${e}`);const i=this.view.getScrollTop(),s=this.view.elementTop(e),r=this.view.elementHeight(e);if(s<i+t||s+r>i+this.view.renderHeight)return null;const o=r-this.view.renderHeight+t;return Math.abs((i+t-s)/o)}getHTMLElement(){return this.view.domNode}getScrollableElement(){return this.view.scrollableElementDomNode}getElementID(e){return this.view.getElementDomId(e)}getElementTop(e){return this.view.elementTop(e)}style(e){this.styleController.style(e)}toListEvent({indexes:e,browserEvent:t}){return{indexes:e,elements:e.map(i=>this.view.element(i)),browserEvent:t}}_onFocusChange(){const e=this.focus.get();this.view.domNode.classList.toggle("element-focused",e.length>0),this.onDidChangeActiveDescendant()}onDidChangeActiveDescendant(){var e;const t=this.focus.get();if(t.length>0){let i;!((e=this.accessibilityProvider)===null||e===void 0)&&e.getActiveDescendantId&&(i=this.accessibilityProvider.getActiveDescendantId(this.view.element(t[0]))),this.view.domNode.setAttribute("aria-activedescendant",i||this.view.getElementDomId(t[0]))}else this.view.domNode.removeAttribute("aria-activedescendant")}_onSelectionChange(){const e=this.selection.get();this.view.domNode.classList.toggle("selection-none",e.length===0),this.view.domNode.classList.toggle("selection-single",e.length===1),this.view.domNode.classList.toggle("selection-multiple",e.length>1)}dispose(){this._onDidDispose.fire(),this.disposables.dispose(),this._onDidDispose.dispose()}}Iv([ts],Ac.prototype,"onDidChangeFocus",null);Iv([ts],Ac.prototype,"onDidChangeSelection",null);Iv([ts],Ac.prototype,"onContextMenu",null);Iv([ts],Ac.prototype,"onKeyDown",null);Iv([ts],Ac.prototype,"onDidFocus",null);const z1=Te,Zme="selectOption.entry.template";class DYe{get templateId(){return Zme}renderTemplate(e){const t=Object.create(null);return t.root=e,t.text=Le(e,z1(".option-text")),t.detail=Le(e,z1(".option-detail")),t.decoratorRight=Le(e,z1(".option-decorator-right")),t}renderElement(e,t,i){const s=i,r=e.text,o=e.detail,a=e.decoratorRight,l=e.isDisabled;s.text.textContent=r,s.detail.textContent=o||"",s.decoratorRight.innerText=a||"",l?s.root.classList.add("option-disabled"):s.root.classList.remove("option-disabled")}disposeTemplate(e){}}class wh extends pe{constructor(e,t,i,s,r){super(),this.options=[],this._currentSelection=0,this._hasDetails=!1,this._skipLayout=!1,this._sticky=!1,this._isVisible=!1,this.styles=s,this.selectBoxOptions=r||Object.create(null),typeof this.selectBoxOptions.minBottomMargin!="number"?this.selectBoxOptions.minBottomMargin=wh.DEFAULT_DROPDOWN_MINIMUM_BOTTOM_MARGIN:this.selectBoxOptions.minBottomMargin<0&&(this.selectBoxOptions.minBottomMargin=0),this.selectElement=document.createElement("select"),this.selectElement.className="monaco-select-box monaco-select-box-dropdown-padding",typeof this.selectBoxOptions.ariaLabel=="string"&&this.selectElement.setAttribute("aria-label",this.selectBoxOptions.ariaLabel),typeof this.selectBoxOptions.ariaDescription=="string"&&this.selectElement.setAttribute("aria-description",this.selectBoxOptions.ariaDescription),this._onDidSelect=new ue,this._register(this._onDidSelect),this.registerListeners(),this.constructSelectDropDown(i),this.selected=t||0,e&&this.setOptions(e,t),this.initStyleSheet()}getHeight(){return 22}getTemplateId(){return Zme}constructSelectDropDown(e){this.contextViewProvider=e,this.selectDropDownContainer=Te(".monaco-select-box-dropdown-container"),this.selectDropDownContainer.classList.add("monaco-select-box-dropdown-padding"),this.selectionDetailsPane=Le(this.selectDropDownContainer,z1(".select-box-details-pane"));const t=Le(this.selectDropDownContainer,z1(".select-box-dropdown-container-width-control")),i=Le(t,z1(".width-control-div"));this.widthControlElement=document.createElement("span"),this.widthControlElement.className="option-text-width-control",Le(i,this.widthControlElement),this._dropDownPosition=0,this.styleElement=Fl(this.selectDropDownContainer),this.selectDropDownContainer.setAttribute("draggable","true"),this._register(Ce(this.selectDropDownContainer,We.DRAG_START,s=>{Tt.stop(s,!0)}))}registerListeners(){this._register(Mn(this.selectElement,"change",t=>{this.selected=t.target.selectedIndex,this._onDidSelect.fire({index:t.target.selectedIndex,selected:t.target.value}),this.options[this.selected]&&this.options[this.selected].text&&(this.selectElement.title=this.options[this.selected].text)})),this._register(Ce(this.selectElement,We.CLICK,t=>{Tt.stop(t),this._isVisible?this.hideSelectDropDown(!0):this.showSelectDropDown()})),this._register(Ce(this.selectElement,We.MOUSE_DOWN,t=>{Tt.stop(t)}));let e;this._register(Ce(this.selectElement,"touchstart",t=>{e=this._isVisible})),this._register(Ce(this.selectElement,"touchend",t=>{Tt.stop(t),e?this.hideSelectDropDown(!0):this.showSelectDropDown()})),this._register(Ce(this.selectElement,We.KEY_DOWN,t=>{const i=new Ki(t);let s=!1;Gt?(i.keyCode===18||i.keyCode===16||i.keyCode===10||i.keyCode===3)&&(s=!0):(i.keyCode===18&&i.altKey||i.keyCode===16&&i.altKey||i.keyCode===10||i.keyCode===3)&&(s=!0),s&&(this.showSelectDropDown(),Tt.stop(t,!0))}))}get onDidSelect(){return this._onDidSelect.event}setOptions(e,t){On(this.options,e)||(this.options=e,this.selectElement.options.length=0,this._hasDetails=!1,this._cachedMaxDetailsHeight=void 0,this.options.forEach((i,s)=>{this.selectElement.add(this.createOption(i.text,s,i.isDisabled)),typeof i.description=="string"&&(this._hasDetails=!0)})),t!==void 0&&(this.select(t),this._currentSelection=this.selected)}setOptionsList(){var e;(e=this.selectList)===null||e===void 0||e.splice(0,this.selectList.length,this.options)}select(e){e>=0&&e<this.options.length?this.selected=e:e>this.options.length-1?this.select(this.options.length-1):this.selected<0&&(this.selected=0),this.selectElement.selectedIndex=this.selected,this.options[this.selected]&&this.options[this.selected].text&&(this.selectElement.title=this.options[this.selected].text)}focus(){this.selectElement&&(this.selectElement.tabIndex=0,this.selectElement.focus())}blur(){this.selectElement&&(this.selectElement.tabIndex=-1,this.selectElement.blur())}setFocusable(e){this.selectElement.tabIndex=e?0:-1}render(e){this.container=e,e.classList.add("select-container"),e.appendChild(this.selectElement),this.styleSelectElement()}initStyleSheet(){const e=[];this.styles.listFocusBackground&&e.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row.focused { background-color: ${this.styles.listFocusBackground} !important; }`),this.styles.listFocusForeground&&e.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row.focused { color: ${this.styles.listFocusForeground} !important; }`),this.styles.decoratorRightForeground&&e.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row:not(.focused) .option-decorator-right { color: ${this.styles.decoratorRightForeground}; }`),this.styles.selectBackground&&this.styles.selectBorder&&this.styles.selectBorder!==this.styles.selectBackground?(e.push(`.monaco-select-box-dropdown-container { border: 1px solid ${this.styles.selectBorder} } `),e.push(`.monaco-select-box-dropdown-container > .select-box-details-pane.border-top { border-top: 1px solid ${this.styles.selectBorder} } `),e.push(`.monaco-select-box-dropdown-container > .select-box-details-pane.border-bottom { border-bottom: 1px solid ${this.styles.selectBorder} } `)):this.styles.selectListBorder&&(e.push(`.monaco-select-box-dropdown-container > .select-box-details-pane.border-top { border-top: 1px solid ${this.styles.selectListBorder} } `),e.push(`.monaco-select-box-dropdown-container > .select-box-details-pane.border-bottom { border-bottom: 1px solid ${this.styles.selectListBorder} } `)),this.styles.listHoverForeground&&e.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row:not(.option-disabled):not(.focused):hover { color: ${this.styles.listHoverForeground} !important; }`),this.styles.listHoverBackground&&e.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row:not(.option-disabled):not(.focused):hover { background-color: ${this.styles.listHoverBackground} !important; }`),this.styles.listFocusOutline&&e.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row.focused { outline: 1.6px dotted ${this.styles.listFocusOutline} !important; outline-offset: -1.6px !important; }`),this.styles.listHoverOutline&&e.push(`.monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row:not(.option-disabled):not(.focused):hover { outline: 1.6px dashed ${this.styles.listHoverOutline} !important; outline-offset: -1.6px !important; }`),e.push(".monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row.option-disabled.focused { background-color: transparent !important; color: inherit !important; outline: none !important; }"),e.push(".monaco-select-box-dropdown-container > .select-box-dropdown-list-container .monaco-list .monaco-list-row.option-disabled:hover { background-color: transparent !important; color: inherit !important; outline: none !important; }"),this.styleElement.textContent=e.join(` +`)}styleSelectElement(){var e,t,i;const s=(e=this.styles.selectBackground)!==null&&e!==void 0?e:"",r=(t=this.styles.selectForeground)!==null&&t!==void 0?t:"",o=(i=this.styles.selectBorder)!==null&&i!==void 0?i:"";this.selectElement.style.backgroundColor=s,this.selectElement.style.color=r,this.selectElement.style.borderColor=o}styleList(){var e,t;const i=(e=this.styles.selectBackground)!==null&&e!==void 0?e:"",s=s_(this.styles.selectListBackground,i);this.selectDropDownListContainer.style.backgroundColor=s,this.selectionDetailsPane.style.backgroundColor=s;const r=(t=this.styles.focusBorder)!==null&&t!==void 0?t:"";this.selectDropDownContainer.style.outlineColor=r,this.selectDropDownContainer.style.outlineOffset="-1px",this.selectList.style(this.styles)}createOption(e,t,i){const s=document.createElement("option");return s.value=e,s.text=e,s.disabled=!!i,s}showSelectDropDown(){this.selectionDetailsPane.innerText="",!(!this.contextViewProvider||this._isVisible)&&(this.createSelectList(this.selectDropDownContainer),this.setOptionsList(),this.contextViewProvider.showContextView({getAnchor:()=>this.selectElement,render:e=>this.renderSelectDropDown(e,!0),layout:()=>{this.layoutSelectDropDown()},onHide:()=>{this.selectDropDownContainer.classList.remove("visible"),this.selectElement.classList.remove("synthetic-focus")},anchorPosition:this._dropDownPosition},this.selectBoxOptions.optionsAsChildren?this.container:void 0),this._isVisible=!0,this.hideSelectDropDown(!1),this.contextViewProvider.showContextView({getAnchor:()=>this.selectElement,render:e=>this.renderSelectDropDown(e),layout:()=>this.layoutSelectDropDown(),onHide:()=>{this.selectDropDownContainer.classList.remove("visible"),this.selectElement.classList.remove("synthetic-focus")},anchorPosition:this._dropDownPosition},this.selectBoxOptions.optionsAsChildren?this.container:void 0),this._currentSelection=this.selected,this._isVisible=!0,this.selectElement.setAttribute("aria-expanded","true"))}hideSelectDropDown(e){!this.contextViewProvider||!this._isVisible||(this._isVisible=!1,this.selectElement.setAttribute("aria-expanded","false"),e&&this.selectElement.focus(),this.contextViewProvider.hideContextView())}renderSelectDropDown(e,t){return e.appendChild(this.selectDropDownContainer),this.layoutSelectDropDown(t),{dispose:()=>{try{e.removeChild(this.selectDropDownContainer)}catch{}}}}measureMaxDetailsHeight(){let e=0;return this.options.forEach((t,i)=>{this.updateDetail(i),this.selectionDetailsPane.offsetHeight>e&&(e=this.selectionDetailsPane.offsetHeight)}),e}layoutSelectDropDown(e){if(this._skipLayout)return!1;if(this.selectList){this.selectDropDownContainer.classList.add("visible");const t=pt(this.selectElement),i=ys(this.selectElement),s=pt(this.selectElement).getComputedStyle(this.selectElement),r=parseFloat(s.getPropertyValue("--dropdown-padding-top"))+parseFloat(s.getPropertyValue("--dropdown-padding-bottom")),o=t.innerHeight-i.top-i.height-(this.selectBoxOptions.minBottomMargin||0),a=i.top-wh.DEFAULT_DROPDOWN_MINIMUM_TOP_MARGIN,l=this.selectElement.offsetWidth,c=this.setWidthControlElement(this.widthControlElement),u=Math.max(c,Math.round(l)).toString()+"px";this.selectDropDownContainer.style.width=u,this.selectList.getHTMLElement().style.height="",this.selectList.layout();let h=this.selectList.contentHeight;this._hasDetails&&this._cachedMaxDetailsHeight===void 0&&(this._cachedMaxDetailsHeight=this.measureMaxDetailsHeight());const d=this._hasDetails?this._cachedMaxDetailsHeight:0,f=h+r+d,g=Math.floor((o-r-d)/this.getHeight()),p=Math.floor((a-r-d)/this.getHeight());if(e)return i.top+i.height>t.innerHeight-22||i.top<wh.DEFAULT_DROPDOWN_MINIMUM_TOP_MARGIN||g<1&&p<1?!1:(g<wh.DEFAULT_MINIMUM_VISIBLE_OPTIONS&&p>g&&this.options.length>g?(this._dropDownPosition=1,this.selectDropDownContainer.removeChild(this.selectDropDownListContainer),this.selectDropDownContainer.removeChild(this.selectionDetailsPane),this.selectDropDownContainer.appendChild(this.selectionDetailsPane),this.selectDropDownContainer.appendChild(this.selectDropDownListContainer),this.selectionDetailsPane.classList.remove("border-top"),this.selectionDetailsPane.classList.add("border-bottom")):(this._dropDownPosition=0,this.selectDropDownContainer.removeChild(this.selectDropDownListContainer),this.selectDropDownContainer.removeChild(this.selectionDetailsPane),this.selectDropDownContainer.appendChild(this.selectDropDownListContainer),this.selectDropDownContainer.appendChild(this.selectionDetailsPane),this.selectionDetailsPane.classList.remove("border-bottom"),this.selectionDetailsPane.classList.add("border-top")),!0);if(i.top+i.height>t.innerHeight-22||i.top<wh.DEFAULT_DROPDOWN_MINIMUM_TOP_MARGIN||this._dropDownPosition===0&&g<1||this._dropDownPosition===1&&p<1)return this.hideSelectDropDown(!0),!1;if(this._dropDownPosition===0){if(this._isVisible&&g+p<1)return this.hideSelectDropDown(!0),!1;f>o&&(h=g*this.getHeight())}else f>a&&(h=p*this.getHeight());return this.selectList.layout(h),this.selectList.domFocus(),this.selectList.length>0&&(this.selectList.setFocus([this.selected||0]),this.selectList.reveal(this.selectList.getFocus()[0]||0)),this._hasDetails?(this.selectList.getHTMLElement().style.height=h+r+"px",this.selectDropDownContainer.style.height=""):this.selectDropDownContainer.style.height=h+r+"px",this.updateDetail(this.selected),this.selectDropDownContainer.style.width=u,this.selectDropDownListContainer.setAttribute("tabindex","0"),this.selectElement.classList.add("synthetic-focus"),this.selectDropDownContainer.classList.add("synthetic-focus"),!0}else return!1}setWidthControlElement(e){let t=0;if(e){let i=0,s=0;this.options.forEach((r,o)=>{const a=r.detail?r.detail.length:0,l=r.decoratorRight?r.decoratorRight.length:0,c=r.text.length+a+l;c>s&&(i=o,s=c)}),e.textContent=this.options[i].text+(this.options[i].decoratorRight?this.options[i].decoratorRight+" ":""),t=Lo(e)}return t}createSelectList(e){if(this.selectList)return;this.selectDropDownListContainer=Le(e,z1(".select-box-dropdown-list-container")),this.listRenderer=new DYe,this.selectList=new Ac("SelectBoxCustom",this.selectDropDownListContainer,this,[this.listRenderer],{useShadows:!1,verticalScrollMode:3,keyboardSupport:!1,mouseSupport:!1,accessibilityProvider:{getAriaLabel:s=>{let r=s.text;return s.detail&&(r+=`. ${s.detail}`),s.decoratorRight&&(r+=`. ${s.decoratorRight}`),s.description&&(r+=`. ${s.description}`),r},getWidgetAriaLabel:()=>v({key:"selectBox",comment:["Behave like native select dropdown element."]},"Select Box"),getRole:()=>Gt?"":"option",getWidgetRole:()=>"listbox"}}),this.selectBoxOptions.ariaLabel&&(this.selectList.ariaLabel=this.selectBoxOptions.ariaLabel);const t=this._register(new Ht(this.selectDropDownListContainer,"keydown")),i=Ve.chain(t.event,s=>s.filter(()=>this.selectList.length>0).map(r=>new Ki(r)));this._register(Ve.chain(i,s=>s.filter(r=>r.keyCode===3))(this.onEnter,this)),this._register(Ve.chain(i,s=>s.filter(r=>r.keyCode===2))(this.onEnter,this)),this._register(Ve.chain(i,s=>s.filter(r=>r.keyCode===9))(this.onEscape,this)),this._register(Ve.chain(i,s=>s.filter(r=>r.keyCode===16))(this.onUpArrow,this)),this._register(Ve.chain(i,s=>s.filter(r=>r.keyCode===18))(this.onDownArrow,this)),this._register(Ve.chain(i,s=>s.filter(r=>r.keyCode===12))(this.onPageDown,this)),this._register(Ve.chain(i,s=>s.filter(r=>r.keyCode===11))(this.onPageUp,this)),this._register(Ve.chain(i,s=>s.filter(r=>r.keyCode===14))(this.onHome,this)),this._register(Ve.chain(i,s=>s.filter(r=>r.keyCode===13))(this.onEnd,this)),this._register(Ve.chain(i,s=>s.filter(r=>r.keyCode>=21&&r.keyCode<=56||r.keyCode>=85&&r.keyCode<=113))(this.onCharacter,this)),this._register(Ce(this.selectList.getHTMLElement(),We.POINTER_UP,s=>this.onPointerUp(s))),this._register(this.selectList.onMouseOver(s=>typeof s.index<"u"&&this.selectList.setFocus([s.index]))),this._register(this.selectList.onDidChangeFocus(s=>this.onListFocus(s))),this._register(Ce(this.selectDropDownContainer,We.FOCUS_OUT,s=>{!this._isVisible||pr(s.relatedTarget,this.selectDropDownContainer)||this.onListBlur()})),this.selectList.getHTMLElement().setAttribute("aria-label",this.selectBoxOptions.ariaLabel||""),this.selectList.getHTMLElement().setAttribute("aria-expanded","true"),this.styleList()}onPointerUp(e){if(!this.selectList.length)return;Tt.stop(e);const t=e.target;if(!t||t.classList.contains("slider"))return;const i=t.closest(".monaco-list-row");if(!i)return;const s=Number(i.getAttribute("data-index")),r=i.classList.contains("option-disabled");s>=0&&s<this.options.length&&!r&&(this.selected=s,this.select(this.selected),this.selectList.setFocus([this.selected]),this.selectList.reveal(this.selectList.getFocus()[0]),this.selected!==this._currentSelection&&(this._currentSelection=this.selected,this._onDidSelect.fire({index:this.selectElement.selectedIndex,selected:this.options[this.selected].text}),this.options[this.selected]&&this.options[this.selected].text&&(this.selectElement.title=this.options[this.selected].text)),this.hideSelectDropDown(!0))}onListBlur(){this._sticky||(this.selected!==this._currentSelection&&this.select(this._currentSelection),this.hideSelectDropDown(!1))}renderDescriptionMarkdown(e,t){const i=r=>{for(let o=0;o<r.childNodes.length;o++){const a=r.childNodes.item(o);(a.tagName&&a.tagName.toLowerCase())==="img"?r.removeChild(a):i(a)}},s=i2({value:e,supportThemeIcons:!0},{actionHandler:t});return s.element.classList.add("select-box-description-markdown"),i(s.element),s.element}onListFocus(e){!this._isVisible||!this._hasDetails||this.updateDetail(e.indexes[0])}updateDetail(e){var t,i;this.selectionDetailsPane.innerText="";const s=this.options[e],r=(t=s==null?void 0:s.description)!==null&&t!==void 0?t:"",o=(i=s==null?void 0:s.descriptionIsMarkdown)!==null&&i!==void 0?i:!1;if(r){if(o){const a=s.descriptionMarkdownActionHandler;this.selectionDetailsPane.appendChild(this.renderDescriptionMarkdown(r,a))}else this.selectionDetailsPane.innerText=r;this.selectionDetailsPane.style.display="block"}else this.selectionDetailsPane.style.display="none";this._skipLayout=!0,this.contextViewProvider.layout(),this._skipLayout=!1}onEscape(e){Tt.stop(e),this.select(this._currentSelection),this.hideSelectDropDown(!0)}onEnter(e){Tt.stop(e),this.selected!==this._currentSelection&&(this._currentSelection=this.selected,this._onDidSelect.fire({index:this.selectElement.selectedIndex,selected:this.options[this.selected].text}),this.options[this.selected]&&this.options[this.selected].text&&(this.selectElement.title=this.options[this.selected].text)),this.hideSelectDropDown(!0)}onDownArrow(e){if(this.selected<this.options.length-1){Tt.stop(e,!0);const t=this.options[this.selected+1].isDisabled;if(t&&this.options.length>this.selected+2)this.selected+=2;else{if(t)return;this.selected++}this.select(this.selected),this.selectList.setFocus([this.selected]),this.selectList.reveal(this.selectList.getFocus()[0])}}onUpArrow(e){this.selected>0&&(Tt.stop(e,!0),this.options[this.selected-1].isDisabled&&this.selected>1?this.selected-=2:this.selected--,this.select(this.selected),this.selectList.setFocus([this.selected]),this.selectList.reveal(this.selectList.getFocus()[0]))}onPageUp(e){Tt.stop(e),this.selectList.focusPreviousPage(),setTimeout(()=>{this.selected=this.selectList.getFocus()[0],this.options[this.selected].isDisabled&&this.selected<this.options.length-1&&(this.selected++,this.selectList.setFocus([this.selected])),this.selectList.reveal(this.selected),this.select(this.selected)},1)}onPageDown(e){Tt.stop(e),this.selectList.focusNextPage(),setTimeout(()=>{this.selected=this.selectList.getFocus()[0],this.options[this.selected].isDisabled&&this.selected>0&&(this.selected--,this.selectList.setFocus([this.selected])),this.selectList.reveal(this.selected),this.select(this.selected)},1)}onHome(e){Tt.stop(e),!(this.options.length<2)&&(this.selected=0,this.options[this.selected].isDisabled&&this.selected>1&&this.selected++,this.selectList.setFocus([this.selected]),this.selectList.reveal(this.selected),this.select(this.selected))}onEnd(e){Tt.stop(e),!(this.options.length<2)&&(this.selected=this.options.length-1,this.options[this.selected].isDisabled&&this.selected>1&&this.selected--,this.selectList.setFocus([this.selected]),this.selectList.reveal(this.selected),this.select(this.selected))}onCharacter(e){const t=cf.toString(e.keyCode);let i=-1;for(let s=0;s<this.options.length-1;s++)if(i=(s+this.selected+1)%this.options.length,this.options[i].text.charAt(0).toUpperCase()===t&&!this.options[i].isDisabled){this.select(i),this.selectList.setFocus([i]),this.selectList.reveal(this.selectList.getFocus()[0]),Tt.stop(e);break}}dispose(){this.hideSelectDropDown(!1),super.dispose()}}wh.DEFAULT_DROPDOWN_MINIMUM_BOTTOM_MARGIN=32;wh.DEFAULT_DROPDOWN_MINIMUM_TOP_MARGIN=2;wh.DEFAULT_MINIMUM_VISIBLE_OPTIONS=3;class IYe extends pe{constructor(e,t,i,s){super(),this.selected=0,this.selectBoxOptions=s||Object.create(null),this.options=[],this.selectElement=document.createElement("select"),this.selectElement.className="monaco-select-box",typeof this.selectBoxOptions.ariaLabel=="string"&&this.selectElement.setAttribute("aria-label",this.selectBoxOptions.ariaLabel),typeof this.selectBoxOptions.ariaDescription=="string"&&this.selectElement.setAttribute("aria-description",this.selectBoxOptions.ariaDescription),this._onDidSelect=this._register(new ue),this.styles=i,this.registerListeners(),this.setOptions(e,t)}registerListeners(){this._register(Ri.addTarget(this.selectElement)),[Oi.Tap].forEach(e=>{this._register(Ce(this.selectElement,e,t=>{this.selectElement.focus()}))}),this._register(Mn(this.selectElement,"click",e=>{Tt.stop(e,!0)})),this._register(Mn(this.selectElement,"change",e=>{this.selectElement.title=e.target.value,this._onDidSelect.fire({index:e.target.selectedIndex,selected:e.target.value})})),this._register(Mn(this.selectElement,"keydown",e=>{let t=!1;Gt?(e.keyCode===18||e.keyCode===16||e.keyCode===10)&&(t=!0):(e.keyCode===18&&e.altKey||e.keyCode===10||e.keyCode===3)&&(t=!0),t&&e.stopPropagation()}))}get onDidSelect(){return this._onDidSelect.event}setOptions(e,t){(!this.options||!On(this.options,e))&&(this.options=e,this.selectElement.options.length=0,this.options.forEach((i,s)=>{this.selectElement.add(this.createOption(i.text,s,i.isDisabled))})),t!==void 0&&this.select(t)}select(e){this.options.length===0?this.selected=0:e>=0&&e<this.options.length?this.selected=e:e>this.options.length-1?this.select(this.options.length-1):this.selected<0&&(this.selected=0),this.selectElement.selectedIndex=this.selected,this.selected<this.options.length&&typeof this.options[this.selected].text=="string"?this.selectElement.title=this.options[this.selected].text:this.selectElement.title=""}focus(){this.selectElement&&(this.selectElement.tabIndex=0,this.selectElement.focus())}blur(){this.selectElement&&(this.selectElement.tabIndex=-1,this.selectElement.blur())}setFocusable(e){this.selectElement.tabIndex=e?0:-1}render(e){e.classList.add("select-container"),e.appendChild(this.selectElement),this.setOptions(this.options,this.selected),this.applyStyles()}applyStyles(){var e,t,i;this.selectElement&&(this.selectElement.style.backgroundColor=(e=this.styles.selectBackground)!==null&&e!==void 0?e:"",this.selectElement.style.color=(t=this.styles.selectForeground)!==null&&t!==void 0?t:"",this.selectElement.style.borderColor=(i=this.styles.selectBorder)!==null&&i!==void 0?i:"")}createOption(e,t,i){const s=document.createElement("option");return s.value=e,s.text=e,s.disabled=!!i,s}}class TYe extends Tc{constructor(e,t,i,s,r){super(),Gt&&!(r!=null&&r.useCustomDrawn)?this.selectBoxDelegate=new IYe(e,t,s,r):this.selectBoxDelegate=new wh(e,t,i,s,r),this._register(this.selectBoxDelegate)}get onDidSelect(){return this.selectBoxDelegate.onDidSelect}setOptions(e,t){this.selectBoxDelegate.setOptions(e,t)}select(e){this.selectBoxDelegate.select(e)}focus(){this.selectBoxDelegate.focus()}blur(){this.selectBoxDelegate.blur()}setFocusable(e){this.selectBoxDelegate.setFocusable(e)}render(e){this.selectBoxDelegate.render(e)}}class nu extends pe{get action(){return this._action}constructor(e,t,i={}){super(),this.options=i,this._context=e||this,this._action=t,t instanceof ho&&this._register(t.onDidChange(s=>{this.element&&this.handleActionChangeEvent(s)}))}handleActionChangeEvent(e){e.enabled!==void 0&&this.updateEnabled(),e.checked!==void 0&&this.updateChecked(),e.class!==void 0&&this.updateClass(),e.label!==void 0&&(this.updateLabel(),this.updateTooltip()),e.tooltip!==void 0&&this.updateTooltip()}get actionRunner(){return this._actionRunner||(this._actionRunner=this._register(new R_)),this._actionRunner}set actionRunner(e){this._actionRunner=e}isEnabled(){return this._action.enabled}setActionContext(e){this._context=e}render(e){const t=this.element=e;this._register(Ri.addTarget(e));const i=this.options&&this.options.draggable;i&&(e.draggable=!0,Ol&&this._register(Ce(e,We.DRAG_START,s=>{var r;return(r=s.dataTransfer)===null||r===void 0?void 0:r.setData(GL.TEXT,this._action.label)}))),this._register(Ce(t,Oi.Tap,s=>this.onClick(s,!0))),this._register(Ce(t,We.MOUSE_DOWN,s=>{i||Tt.stop(s,!0),this._action.enabled&&s.button===0&&t.classList.add("active")})),Gt&&this._register(Ce(t,We.CONTEXT_MENU,s=>{s.button===0&&s.ctrlKey===!0&&this.onClick(s)})),this._register(Ce(t,We.CLICK,s=>{Tt.stop(s,!0),this.options&&this.options.isMenu||this.onClick(s)})),this._register(Ce(t,We.DBLCLICK,s=>{Tt.stop(s,!0)})),[We.MOUSE_UP,We.MOUSE_OUT].forEach(s=>{this._register(Ce(t,s,r=>{Tt.stop(r),t.classList.remove("active")}))})}onClick(e,t=!1){var i;Tt.stop(e,!0);const s=Ma(this._context)?!((i=this.options)===null||i===void 0)&&i.useEventAsContext?e:{preserveFocus:t}:this._context;this.actionRunner.run(this._action,s)}focus(){this.element&&(this.element.tabIndex=0,this.element.focus(),this.element.classList.add("focused"))}blur(){this.element&&(this.element.blur(),this.element.tabIndex=-1,this.element.classList.remove("focused"))}setFocusable(e){this.element&&(this.element.tabIndex=e?0:-1)}get trapsArrowNavigation(){return!1}updateEnabled(){}updateLabel(){}getClass(){return this.action.class}getTooltip(){return this.action.tooltip}updateTooltip(){var e;if(!this.element)return;const t=(e=this.getTooltip())!==null&&e!==void 0?e:"";this.updateAriaLabel(),this.options.hoverDelegate?(this.element.title="",this.customHover?this.customHover.update(t):(this.customHover=Hme(this.options.hoverDelegate,this.element,t),this._store.add(this.customHover))):this.element.title=t}updateAriaLabel(){var e;if(this.element){const t=(e=this.getTooltip())!==null&&e!==void 0?e:"";this.element.setAttribute("aria-label",t)}}updateClass(){}updateChecked(){}dispose(){this.element&&(this.element.remove(),this.element=void 0),this._context=void 0,super.dispose()}}class Ny extends nu{constructor(e,t,i){super(e,t,i),this.options=i,this.options.icon=i.icon!==void 0?i.icon:!1,this.options.label=i.label!==void 0?i.label:!0,this.cssClass=""}render(e){super.render(e),Si(this.element);const t=document.createElement("a");if(t.classList.add("action-label"),t.setAttribute("role",this.getDefaultAriaRole()),this.label=t,this.element.appendChild(t),this.options.label&&this.options.keybinding){const i=document.createElement("span");i.classList.add("keybinding"),i.textContent=this.options.keybinding,this.element.appendChild(i)}this.updateClass(),this.updateLabel(),this.updateTooltip(),this.updateEnabled(),this.updateChecked()}getDefaultAriaRole(){return this._action.id===js.ID?"presentation":this.options.isMenu?"menuitem":"button"}focus(){this.label&&(this.label.tabIndex=0,this.label.focus())}blur(){this.label&&(this.label.tabIndex=-1)}setFocusable(e){this.label&&(this.label.tabIndex=e?0:-1)}updateLabel(){this.options.label&&this.label&&(this.label.textContent=this.action.label)}getTooltip(){let e=null;return this.action.tooltip?e=this.action.tooltip:!this.options.label&&this.action.label&&this.options.icon&&(e=this.action.label,this.options.keybinding&&(e=v({key:"titleLabel",comment:["action title","action keybinding"]},"{0} ({1})",e,this.options.keybinding))),e??void 0}updateClass(){var e;this.cssClass&&this.label&&this.label.classList.remove(...this.cssClass.split(" ")),this.options.icon?(this.cssClass=this.getClass(),this.label&&(this.label.classList.add("codicon"),this.cssClass&&this.label.classList.add(...this.cssClass.split(" "))),this.updateEnabled()):(e=this.label)===null||e===void 0||e.classList.remove("codicon")}updateEnabled(){var e,t;this.action.enabled?(this.label&&(this.label.removeAttribute("aria-disabled"),this.label.classList.remove("disabled")),(e=this.element)===null||e===void 0||e.classList.remove("disabled")):(this.label&&(this.label.setAttribute("aria-disabled","true"),this.label.classList.add("disabled")),(t=this.element)===null||t===void 0||t.classList.add("disabled"))}updateAriaLabel(){var e;if(this.label){const t=(e=this.getTooltip())!==null&&e!==void 0?e:"";this.label.setAttribute("aria-label",t)}}updateChecked(){this.label&&(this.action.checked!==void 0?(this.label.classList.toggle("checked",this.action.checked),this.label.setAttribute("aria-checked",this.action.checked?"true":"false"),this.label.setAttribute("role","checkbox")):(this.label.classList.remove("checked"),this.label.removeAttribute("aria-checked"),this.label.setAttribute("role",this.getDefaultAriaRole())))}}class NYe extends nu{constructor(e,t,i,s,r,o,a){super(e,t),this.selectBox=new TYe(i,s,r,o,a),this.selectBox.setFocusable(!1),this._register(this.selectBox),this.registerListeners()}select(e){this.selectBox.select(e)}registerListeners(){this._register(this.selectBox.onDidSelect(e=>this.runAction(e.selected,e.index)))}runAction(e,t){this.actionRunner.run(this._action,this.getActionContext(e,t))}getActionContext(e,t){return e}setFocusable(e){this.selectBox.setFocusable(e)}focus(){var e;(e=this.selectBox)===null||e===void 0||e.focus()}blur(){var e;(e=this.selectBox)===null||e===void 0||e.blur()}render(e){this.selectBox.render(e)}}class Vl extends pe{constructor(e,t={}){var i,s,r,o,a,l;super(),this._actionRunnerDisposables=this._register(new xe),this.viewItemDisposables=this._register(new xj),this.triggerKeyDown=!1,this.focusable=!0,this._onDidBlur=this._register(new ue),this.onDidBlur=this._onDidBlur.event,this._onDidCancel=this._register(new ue({onWillAddFirstListener:()=>this.cancelHasListener=!0})),this.onDidCancel=this._onDidCancel.event,this.cancelHasListener=!1,this._onDidRun=this._register(new ue),this.onDidRun=this._onDidRun.event,this._onWillRun=this._register(new ue),this.onWillRun=this._onWillRun.event,this.options=t,this._context=(i=t.context)!==null&&i!==void 0?i:null,this._orientation=(s=this.options.orientation)!==null&&s!==void 0?s:0,this._triggerKeys={keyDown:(o=(r=this.options.triggerKeys)===null||r===void 0?void 0:r.keyDown)!==null&&o!==void 0?o:!1,keys:(l=(a=this.options.triggerKeys)===null||a===void 0?void 0:a.keys)!==null&&l!==void 0?l:[3,10]},this.options.actionRunner?this._actionRunner=this.options.actionRunner:(this._actionRunner=new R_,this._actionRunnerDisposables.add(this._actionRunner)),this._actionRunnerDisposables.add(this._actionRunner.onDidRun(h=>this._onDidRun.fire(h))),this._actionRunnerDisposables.add(this._actionRunner.onWillRun(h=>this._onWillRun.fire(h))),this.viewItems=[],this.focusedItem=void 0,this.domNode=document.createElement("div"),this.domNode.className="monaco-action-bar",t.animated!==!1&&this.domNode.classList.add("animated");let c,u;switch(this._orientation){case 0:c=[15],u=[17];break;case 1:c=[16],u=[18],this.domNode.className+=" vertical";break}this._register(Ce(this.domNode,We.KEY_DOWN,h=>{const d=new Ki(h);let f=!0;const g=typeof this.focusedItem=="number"?this.viewItems[this.focusedItem]:void 0;c&&(d.equals(c[0])||d.equals(c[1]))?f=this.focusPrevious():u&&(d.equals(u[0])||d.equals(u[1]))?f=this.focusNext():d.equals(9)&&this.cancelHasListener?this._onDidCancel.fire():d.equals(14)?f=this.focusFirst():d.equals(13)?f=this.focusLast():d.equals(2)&&g instanceof nu&&g.trapsArrowNavigation?f=this.focusNext():this.isTriggerKeyEvent(d)?this._triggerKeys.keyDown?this.doTrigger(d):this.triggerKeyDown=!0:f=!1,f&&(d.preventDefault(),d.stopPropagation())})),this._register(Ce(this.domNode,We.KEY_UP,h=>{const d=new Ki(h);this.isTriggerKeyEvent(d)?(!this._triggerKeys.keyDown&&this.triggerKeyDown&&(this.triggerKeyDown=!1,this.doTrigger(d)),d.preventDefault(),d.stopPropagation()):(d.equals(2)||d.equals(1026)||d.equals(16)||d.equals(18)||d.equals(15)||d.equals(17))&&this.updateFocusedItem()})),this.focusTracker=this._register(gd(this.domNode)),this._register(this.focusTracker.onDidBlur(()=>{(Ka()===this.domNode||!pr(Ka(),this.domNode))&&(this._onDidBlur.fire(),this.previouslyFocusedItem=this.focusedItem,this.focusedItem=void 0,this.triggerKeyDown=!1)})),this._register(this.focusTracker.onDidFocus(()=>this.updateFocusedItem())),this.actionsList=document.createElement("ul"),this.actionsList.className="actions-container",this.options.highlightToggledItems&&this.actionsList.classList.add("highlight-toggled"),this.actionsList.setAttribute("role",this.options.ariaRole||"toolbar"),this.options.ariaLabel&&this.actionsList.setAttribute("aria-label",this.options.ariaLabel),this.domNode.appendChild(this.actionsList),e.appendChild(this.domNode)}refreshRole(){this.length()>=1?this.actionsList.setAttribute("role",this.options.ariaRole||"toolbar"):this.actionsList.setAttribute("role","presentation")}setFocusable(e){if(this.focusable=e,this.focusable){const t=this.viewItems.find(i=>i instanceof nu&&i.isEnabled());t instanceof nu&&t.setFocusable(!0)}else this.viewItems.forEach(t=>{t instanceof nu&&t.setFocusable(!1)})}isTriggerKeyEvent(e){let t=!1;return this._triggerKeys.keys.forEach(i=>{t=t||e.equals(i)}),t}updateFocusedItem(){var e,t;for(let i=0;i<this.actionsList.children.length;i++){const s=this.actionsList.children[i];if(pr(Ka(),s)){this.focusedItem=i,(t=(e=this.viewItems[this.focusedItem])===null||e===void 0?void 0:e.showHover)===null||t===void 0||t.call(e);break}}}get context(){return this._context}set context(e){this._context=e,this.viewItems.forEach(t=>t.setActionContext(e))}get actionRunner(){return this._actionRunner}set actionRunner(e){this._actionRunner=e,this._actionRunnerDisposables.clear(),this._actionRunnerDisposables.add(this._actionRunner.onDidRun(t=>this._onDidRun.fire(t))),this._actionRunnerDisposables.add(this._actionRunner.onWillRun(t=>this._onWillRun.fire(t))),this.viewItems.forEach(t=>t.actionRunner=e)}getContainer(){return this.domNode}getAction(e){var t;if(typeof e=="number")return(t=this.viewItems[e])===null||t===void 0?void 0:t.action;if(e instanceof HTMLElement){for(;e.parentElement!==this.actionsList;){if(!e.parentElement)return;e=e.parentElement}for(let i=0;i<this.actionsList.childNodes.length;i++)if(this.actionsList.childNodes[i]===e)return this.viewItems[i].action}}push(e,t={}){const i=Array.isArray(e)?e:[e];let s=qp(t.index)?t.index:null;i.forEach(r=>{const o=document.createElement("li");o.className="action-item",o.setAttribute("role","presentation");let a;const l={hoverDelegate:this.options.hoverDelegate,...t};this.options.actionViewItemProvider&&(a=this.options.actionViewItemProvider(r,l)),a||(a=new Ny(this.context,r,l)),this.options.allowContextMenu||this.viewItemDisposables.set(a,Ce(o,We.CONTEXT_MENU,c=>{Tt.stop(c,!0)})),a.actionRunner=this._actionRunner,a.setActionContext(this.context),a.render(o),this.focusable&&a instanceof nu&&this.viewItems.length===0&&a.setFocusable(!0),s===null||s<0||s>=this.actionsList.children.length?(this.actionsList.appendChild(o),this.viewItems.push(a)):(this.actionsList.insertBefore(o,this.actionsList.children[s]),this.viewItems.splice(s,0,a),s++)}),typeof this.focusedItem=="number"&&this.focus(this.focusedItem),this.refreshRole()}clear(){this.isEmpty()||(this.viewItems=yi(this.viewItems),this.viewItemDisposables.clearAndDisposeAll(),ir(this.actionsList),this.refreshRole())}length(){return this.viewItems.length}isEmpty(){return this.viewItems.length===0}focus(e){let t=!1,i;if(e===void 0?t=!0:typeof e=="number"?i=e:typeof e=="boolean"&&(t=e),t&&typeof this.focusedItem>"u"){const s=this.viewItems.findIndex(r=>r.isEnabled());this.focusedItem=s===-1?void 0:s,this.updateFocus(void 0,void 0,!0)}else i!==void 0&&(this.focusedItem=i),this.updateFocus(void 0,void 0,!0)}focusFirst(){return this.focusedItem=this.length()-1,this.focusNext(!0)}focusLast(){return this.focusedItem=0,this.focusPrevious(!0)}focusNext(e){if(typeof this.focusedItem>"u")this.focusedItem=this.viewItems.length-1;else if(this.viewItems.length<=1)return!1;const t=this.focusedItem;let i;do{if(!e&&this.options.preventLoopNavigation&&this.focusedItem+1>=this.viewItems.length)return this.focusedItem=t,!1;this.focusedItem=(this.focusedItem+1)%this.viewItems.length,i=this.viewItems[this.focusedItem]}while(this.focusedItem!==t&&(this.options.focusOnlyEnabledItems&&!i.isEnabled()||i.action.id===js.ID));return this.updateFocus(),!0}focusPrevious(e){if(typeof this.focusedItem>"u")this.focusedItem=0;else if(this.viewItems.length<=1)return!1;const t=this.focusedItem;let i;do{if(this.focusedItem=this.focusedItem-1,this.focusedItem<0){if(!e&&this.options.preventLoopNavigation)return this.focusedItem=t,!1;this.focusedItem=this.viewItems.length-1}i=this.viewItems[this.focusedItem]}while(this.focusedItem!==t&&(this.options.focusOnlyEnabledItems&&!i.isEnabled()||i.action.id===js.ID));return this.updateFocus(!0),!0}updateFocus(e,t,i=!1){var s,r;typeof this.focusedItem>"u"&&this.actionsList.focus({preventScroll:t}),this.previouslyFocusedItem!==void 0&&this.previouslyFocusedItem!==this.focusedItem&&((s=this.viewItems[this.previouslyFocusedItem])===null||s===void 0||s.blur());const o=this.focusedItem!==void 0?this.viewItems[this.focusedItem]:void 0;if(o){let a=!0;dL(o.focus)||(a=!1),this.options.focusOnlyEnabledItems&&dL(o.isEnabled)&&!o.isEnabled()&&(a=!1),o.action.id===js.ID&&(a=!1),a&&((r=o.showHover)===null||r===void 0||r.call(o)),a?(i||this.previouslyFocusedItem!==this.focusedItem)&&(o.focus(e),this.previouslyFocusedItem=this.focusedItem):(this.actionsList.focus({preventScroll:t}),this.previouslyFocusedItem=void 0)}}doTrigger(e){if(typeof this.focusedItem>"u")return;const t=this.viewItems[this.focusedItem];if(t instanceof nu){const i=t._context===null||t._context===void 0?e:t._context;this.run(t._action,i)}}async run(e,t){await this._actionRunner.run(e,t)}dispose(){this._context=void 0,this.viewItems=yi(this.viewItems),this.getContainer().remove(),super.dispose()}}function oK(){return RA&&!!RA.VSCODE_DEV}function Xme(n){if(oK()){const e=AYe();return e.add(n),{dispose(){e.delete(n)}}}else return{dispose(){}}}function AYe(){wI||(wI=new Set);const n=globalThis;return n.$hotReload_applyNewExports||(n.$hotReload_applyNewExports=e=>{for(const t of wI){const i=t(e);if(i)return i}}),wI}let wI;oK()&&Xme(({oldExports:n,newSrc:e})=>{if(e.indexOf("/* hot-reload:patch-prototype-methods */")!==-1)return t=>{var i,s;for(const r in t){const o=t[r];if(console.log(`[hot-reload] Patching prototype methods of '${r}'`,{exportedItem:o}),typeof o=="function"&&o.prototype){const a=n[r];if(a){for(const l of Object.getOwnPropertyNames(o.prototype)){const c=Object.getOwnPropertyDescriptor(o.prototype,l),u=Object.getOwnPropertyDescriptor(a.prototype,l);((i=c==null?void 0:c.value)===null||i===void 0?void 0:i.toString())!==((s=u==null?void 0:u.value)===null||s===void 0?void 0:s.toString())&&console.log(`[hot-reload] Patching prototype method '${r}.${l}'`),Object.defineProperty(a.prototype,l,c)}t[r]=a}}}return!0}});function PYe(n,e,t,i){if(n.length===0)return e;if(e.length===0)return n;const s=[];let r=0,o=0;for(;r<n.length&&o<e.length;){const a=n[r],l=e[o],c=t(a),u=t(l);c<u?(s.push(a),r++):c>u?(s.push(l),o++):(s.push(i(a,l)),r++,o++)}for(;r<n.length;)s.push(n[r]),r++;for(;o<e.length;)s.push(e[o]),o++;return s}function vP(n,e){const t=new xe,i=n.createDecorationsCollection();return t.add(QO({debugName:()=>`Apply decorations from ${e.debugName}`},s=>{const r=e.read(s);i.set(r)})),t.add({dispose:()=>{i.clear()}}),t}function SI(n,e){return n.appendChild(e),st(()=>{n.removeChild(e)})}class Qme extends pe{get width(){return this._width}get height(){return this._height}constructor(e,t){super(),this.elementSizeObserver=this._register(new cpe(e,t)),this._width=si(this,this.elementSizeObserver.getWidth()),this._height=si(this,this.elementSizeObserver.getHeight()),this._register(this.elementSizeObserver.onDidChange(i=>ln(s=>{this._width.set(this.elementSizeObserver.getWidth(),s),this._height.set(this.elementSizeObserver.getHeight(),s)})))}observe(e){this.elementSizeObserver.observe(e)}setAutomaticLayout(e){e?this.elementSizeObserver.startObserving():this.elementSizeObserver.stopObserving()}}function Nte(n,e,t){let i=e.get(),s=i,r=i;const o=si("animatedValue",i);let a=-1;const l=300;let c;t.add(TE({createEmptyChangeSummary:()=>({animate:!1}),handleChange:(h,d)=>(h.didChange(e)&&(d.animate=d.animate||h.change),!0)},(h,d)=>{c!==void 0&&(n.cancelAnimationFrame(c),c=void 0),s=r,i=e.read(h),a=Date.now()-(d.animate?0:l),u()}));function u(){const h=Date.now()-a;r=Math.floor(RYe(h,s,i-s,l)),h<l?c=n.requestAnimationFrame(u):r=i,o.set(r,void 0)}return o}function RYe(n,e,t,i){return n===i?e+t:t*(-Math.pow(2,-10*n/i)+1)+e}class Jme extends pe{constructor(e,t,i){super(),this._register(new n2(e,i)),this._register(Ep(i,{height:t.actualHeight,top:t.actualTop}))}}class bP{get afterLineNumber(){return this._afterLineNumber.get()}constructor(e,t){this._afterLineNumber=e,this.heightInPx=t,this.domNode=document.createElement("div"),this._actualTop=si(this,void 0),this._actualHeight=si(this,void 0),this.actualTop=this._actualTop,this.actualHeight=this._actualHeight,this.showInHiddenAreas=!0,this.onChange=this._afterLineNumber,this.onDomNodeTop=i=>{this._actualTop.set(i,void 0)},this.onComputedHeight=i=>{this._actualHeight.set(i,void 0)}}}class n2{constructor(e,t){this._editor=e,this._domElement=t,this._overlayWidgetId=`managedOverlayWidget-${n2._counter++}`,this._overlayWidget={getId:()=>this._overlayWidgetId,getDomNode:()=>this._domElement,getPosition:()=>null},this._editor.addOverlayWidget(this._overlayWidget)}dispose(){this._editor.removeOverlayWidget(this._overlayWidget)}}n2._counter=0;function Ep(n,e){return pi(t=>{for(let[i,s]of Object.entries(e))s&&typeof s=="object"&&"read"in s&&(s=s.read(t)),typeof s=="number"&&(s=`${s}px`),i=i.replace(/[A-Z]/g,r=>"-"+r.toLowerCase()),n.style[i]=s})}function dh(n,e){return MYe([n],e),n}function MYe(n,e){oK()&&Fa("reload",i=>Xme(({oldExports:s})=>{if([...Object.values(s)].some(r=>n.includes(r)))return r=>(i(void 0),!0)})).read(e)}function yP(n,e,t,i){const s=new xe,r=[];return s.add(rg((o,a)=>{const l=e.read(o),c=new Map,u=new Map;t&&t(!0),n.changeViewZones(h=>{for(const d of r)h.removeZone(d),i==null||i.delete(d);r.length=0;for(const d of l){const f=h.addZone(d);d.setZoneId&&d.setZoneId(f),r.push(f),i==null||i.add(f),c.set(d,f)}}),t&&t(!1),a.add(TE({createEmptyChangeSummary(){return{zoneIds:[]}},handleChange(h,d){const f=u.get(h.changedObservable);return f!==void 0&&d.zoneIds.push(f),!0}},(h,d)=>{for(const f of l)f.onChange&&(u.set(f.onChange,c.get(f)),f.onChange.read(h));t&&t(!0),n.changeViewZones(f=>{for(const g of d.zoneIds)f.layoutZone(g)}),t&&t(!1)}))})),s.add({dispose(){t&&t(!0),n.changeViewZones(o=>{for(const a of r)o.removeZone(a)}),i==null||i.clear(),t&&t(!1)}}),s}class OYe extends es{dispose(){super.dispose(!0)}}function Ate(n,e){const t=AL(e,s=>s.original.startLineNumber<=n.lineNumber);if(!t)return M.fromPositions(n);if(t.original.endLineNumberExclusive<=n.lineNumber){const s=n.lineNumber-t.original.endLineNumberExclusive+t.modified.endLineNumberExclusive;return M.fromPositions(new he(s,n.column))}if(!t.innerChanges)return M.fromPositions(new he(t.modified.startLineNumber,1));const i=AL(t.innerChanges,s=>s.originalRange.getStartPosition().isBeforeOrEqual(n));if(!i){const s=n.lineNumber-t.original.startLineNumber+t.modified.startLineNumber;return M.fromPositions(new he(s,n.column))}if(i.originalRange.containsPosition(n))return i.modifiedRange;{const s=FYe(i.originalRange.getEndPosition(),n);return M.fromPositions(BYe(i.modifiedRange.getEndPosition(),s))}}function FYe(n,e){return n.lineNumber===e.lineNumber?new HL(0,e.column-n.column):new HL(e.lineNumber-n.lineNumber,e.column-1)}function BYe(n,e){return e.lineCount===0?new he(n.lineNumber,n.column+e.columnCount):new he(n.lineNumber+e.lineCount,e.columnCount+1)}function kI(n,e,t){const i=n.bindTo(e);return QO({debugName:()=>`Update ${n.key}`},s=>{i.set(t(s))})}class vd{static inverse(e,t,i){const s=[];let r=1,o=1;for(const l of e){const c=new Hl(new xt(r,l.original.startLineNumber),new xt(o,l.modified.startLineNumber),void 0);c.modified.isEmpty||s.push(c),r=l.original.endLineNumberExclusive,o=l.modified.endLineNumberExclusive}const a=new Hl(new xt(r,t+1),new xt(o,i+1),void 0);return a.modified.isEmpty||s.push(a),s}constructor(e,t){this.original=e,this.modified=t}toString(){return`{${this.original.toString()}->${this.modified.toString()}}`}flip(){return new vd(this.modified,this.original)}join(e){return new vd(this.original.join(e.original),this.modified.join(e.modified))}}class Hl extends vd{constructor(e,t,i){super(e,t),this.innerChanges=i}flip(){var e;return new Hl(this.modified,this.original,(e=this.innerChanges)===null||e===void 0?void 0:e.map(t=>t.flip()))}}class om{constructor(e,t){this.originalRange=e,this.modifiedRange=t}toString(){return`{${this.originalRange.toString()}->${this.modifiedRange.toString()}}`}flip(){return new om(this.modifiedRange,this.originalRange)}}const ME=Bt("audioCue");class mt{static register(e){return new mt(e.fileName)}constructor(e){this.fileName=e}}mt.error=mt.register({fileName:"error.mp3"});mt.warning=mt.register({fileName:"warning.mp3"});mt.foldedArea=mt.register({fileName:"foldedAreas.mp3"});mt.break=mt.register({fileName:"break.mp3"});mt.quickFixes=mt.register({fileName:"quickFixes.mp3"});mt.taskCompleted=mt.register({fileName:"taskCompleted.mp3"});mt.taskFailed=mt.register({fileName:"taskFailed.mp3"});mt.terminalBell=mt.register({fileName:"terminalBell.mp3"});mt.diffLineInserted=mt.register({fileName:"diffLineInserted.mp3"});mt.diffLineDeleted=mt.register({fileName:"diffLineDeleted.mp3"});mt.diffLineModified=mt.register({fileName:"diffLineModified.mp3"});mt.chatRequestSent=mt.register({fileName:"chatRequestSent.mp3"});mt.chatResponsePending=mt.register({fileName:"chatResponsePending.mp3"});mt.chatResponseReceived1=mt.register({fileName:"chatResponseReceived1.mp3"});mt.chatResponseReceived2=mt.register({fileName:"chatResponseReceived2.mp3"});mt.chatResponseReceived3=mt.register({fileName:"chatResponseReceived3.mp3"});mt.chatResponseReceived4=mt.register({fileName:"chatResponseReceived4.mp3"});mt.clear=mt.register({fileName:"clear.mp3"});mt.save=mt.register({fileName:"save.mp3"});mt.format=mt.register({fileName:"format.mp3"});class WYe{constructor(e){this.randomOneOf=e}}class Pt{static register(e){const t=new WYe("randomOneOf"in e.sound?e.sound.randomOneOf:[e.sound]),i=new Pt(t,e.name,e.settingsKey);return Pt._audioCues.add(i),i}constructor(e,t,i){this.sound=e,this.name=t,this.settingsKey=i}}Pt._audioCues=new Set;Pt.error=Pt.register({name:v("audioCues.lineHasError.name","Error on Line"),sound:mt.error,settingsKey:"audioCues.lineHasError"});Pt.warning=Pt.register({name:v("audioCues.lineHasWarning.name","Warning on Line"),sound:mt.warning,settingsKey:"audioCues.lineHasWarning"});Pt.foldedArea=Pt.register({name:v("audioCues.lineHasFoldedArea.name","Folded Area on Line"),sound:mt.foldedArea,settingsKey:"audioCues.lineHasFoldedArea"});Pt.break=Pt.register({name:v("audioCues.lineHasBreakpoint.name","Breakpoint on Line"),sound:mt.break,settingsKey:"audioCues.lineHasBreakpoint"});Pt.inlineSuggestion=Pt.register({name:v("audioCues.lineHasInlineSuggestion.name","Inline Suggestion on Line"),sound:mt.quickFixes,settingsKey:"audioCues.lineHasInlineSuggestion"});Pt.terminalQuickFix=Pt.register({name:v("audioCues.terminalQuickFix.name","Terminal Quick Fix"),sound:mt.quickFixes,settingsKey:"audioCues.terminalQuickFix"});Pt.onDebugBreak=Pt.register({name:v("audioCues.onDebugBreak.name","Debugger Stopped on Breakpoint"),sound:mt.break,settingsKey:"audioCues.onDebugBreak"});Pt.noInlayHints=Pt.register({name:v("audioCues.noInlayHints","No Inlay Hints on Line"),sound:mt.error,settingsKey:"audioCues.noInlayHints"});Pt.taskCompleted=Pt.register({name:v("audioCues.taskCompleted","Task Completed"),sound:mt.taskCompleted,settingsKey:"audioCues.taskCompleted"});Pt.taskFailed=Pt.register({name:v("audioCues.taskFailed","Task Failed"),sound:mt.taskFailed,settingsKey:"audioCues.taskFailed"});Pt.terminalCommandFailed=Pt.register({name:v("audioCues.terminalCommandFailed","Terminal Command Failed"),sound:mt.error,settingsKey:"audioCues.terminalCommandFailed"});Pt.terminalBell=Pt.register({name:v("audioCues.terminalBell","Terminal Bell"),sound:mt.terminalBell,settingsKey:"audioCues.terminalBell"});Pt.notebookCellCompleted=Pt.register({name:v("audioCues.notebookCellCompleted","Notebook Cell Completed"),sound:mt.taskCompleted,settingsKey:"audioCues.notebookCellCompleted"});Pt.notebookCellFailed=Pt.register({name:v("audioCues.notebookCellFailed","Notebook Cell Failed"),sound:mt.taskFailed,settingsKey:"audioCues.notebookCellFailed"});Pt.diffLineInserted=Pt.register({name:v("audioCues.diffLineInserted","Diff Line Inserted"),sound:mt.diffLineInserted,settingsKey:"audioCues.diffLineInserted"});Pt.diffLineDeleted=Pt.register({name:v("audioCues.diffLineDeleted","Diff Line Deleted"),sound:mt.diffLineDeleted,settingsKey:"audioCues.diffLineDeleted"});Pt.diffLineModified=Pt.register({name:v("audioCues.diffLineModified","Diff Line Modified"),sound:mt.diffLineModified,settingsKey:"audioCues.diffLineModified"});Pt.chatRequestSent=Pt.register({name:v("audioCues.chatRequestSent","Chat Request Sent"),sound:mt.chatRequestSent,settingsKey:"audioCues.chatRequestSent"});Pt.chatResponseReceived=Pt.register({name:v("audioCues.chatResponseReceived","Chat Response Received"),settingsKey:"audioCues.chatResponseReceived",sound:{randomOneOf:[mt.chatResponseReceived1,mt.chatResponseReceived2,mt.chatResponseReceived3,mt.chatResponseReceived4]}});Pt.chatResponsePending=Pt.register({name:v("audioCues.chatResponsePending","Chat Response Pending"),sound:mt.chatResponsePending,settingsKey:"audioCues.chatResponsePending"});Pt.clear=Pt.register({name:v("audioCues.clear","Clear"),sound:mt.clear,settingsKey:"audioCues.clear"});Pt.save=Pt.register({name:v("audioCues.save","Save"),sound:mt.save,settingsKey:"audioCues.save"});Pt.format=Pt.register({name:v("audioCues.format","Format"),sound:mt.format,settingsKey:"audioCues.format"});const VYe={IconContribution:"base.contributions.icons"};var Pte;(function(n){function e(t,i){let s=t.defaults;for(;nt.isThemeIcon(s);){const r=Tv.getIcon(s.id);if(!r)return;s=r.defaults}return s}n.getDefinition=e})(Pte||(Pte={}));var Rte;(function(n){function e(i){return{weight:i.weight,style:i.style,src:i.src.map(s=>({format:s.format,location:s.location.toString()}))}}n.toJSONObject=e;function t(i){const s=r=>uo(r)?r:void 0;if(i&&Array.isArray(i.src)&&i.src.every(r=>uo(r.format)&&uo(r.location)))return{weight:s(i.weight),style:s(i.style),src:i.src.map(r=>({format:r.format,location:it.parse(r.location)}))}}n.fromJSONObject=t})(Rte||(Rte={}));class HYe{constructor(){this._onDidChange=new ue,this.onDidChange=this._onDidChange.event,this.iconSchema={definitions:{icons:{type:"object",properties:{fontId:{type:"string",description:v("iconDefinition.fontId","The id of the font to use. If not set, the font that is defined first is used.")},fontCharacter:{type:"string",description:v("iconDefinition.fontCharacter","The font character associated with the icon definition.")}},additionalProperties:!1,defaultSnippets:[{body:{fontCharacter:"\\\\e030"}}]}},type:"object",properties:{}},this.iconReferenceSchema={type:"string",pattern:`^${nt.iconNameExpression}$`,enum:[],enumDescriptions:[]},this.iconsById={},this.iconFontsById={}}registerIcon(e,t,i,s){const r=this.iconsById[e];if(r){if(i&&!r.description){r.description=i,this.iconSchema.properties[e].markdownDescription=`${i} $(${e})`;const l=this.iconReferenceSchema.enum.indexOf(e);l!==-1&&(this.iconReferenceSchema.enumDescriptions[l]=i),this._onDidChange.fire()}return r}const o={id:e,description:i,defaults:t,deprecationMessage:s};this.iconsById[e]=o;const a={$ref:"#/definitions/icons"};return s&&(a.deprecationMessage=s),i&&(a.markdownDescription=`${i}: $(${e})`),this.iconSchema.properties[e]=a,this.iconReferenceSchema.enum.push(e),this.iconReferenceSchema.enumDescriptions.push(i||""),this._onDidChange.fire(),{id:e}}getIcons(){return Object.keys(this.iconsById).map(e=>this.iconsById[e])}getIcon(e){return this.iconsById[e]}getIconSchema(){return this.iconSchema}toString(){const e=(r,o)=>r.id.localeCompare(o.id),t=r=>{for(;nt.isThemeIcon(r.defaults);)r=this.iconsById[r.defaults.id];return`codicon codicon-${r?r.id:""}`},i=[];i.push("| preview | identifier | default codicon ID | description"),i.push("| ----------- | --------------------------------- | --------------------------------- | --------------------------------- |");const s=Object.keys(this.iconsById).map(r=>this.iconsById[r]);for(const r of s.filter(o=>!!o.description).sort(e))i.push(`|<i class="${t(r)}"></i>|${r.id}|${nt.isThemeIcon(r.defaults)?r.defaults.id:r.id}|${r.description||""}|`);i.push("| preview | identifier "),i.push("| ----------- | --------------------------------- |");for(const r of s.filter(o=>!nt.isThemeIcon(o.defaults)).sort(e))i.push(`|<i class="${t(r)}"></i>|${r.id}|`);return i.join(` +`)}}const Tv=new HYe;vn.add(VYe.IconContribution,Tv);function Gn(n,e,t,i){return Tv.registerIcon(n,e,t,i)}function e1e(){return Tv}function $Ye(){const n=Dge();for(const e in n){const t="\\"+n[e].toString(16);Tv.registerIcon(e,{fontCharacter:t})}}$Ye();const t1e="vscode://schemas/icons",i1e=vn.as(NO.JSONContribution);i1e.registerSchema(t1e,Tv.getIconSchema());const Mte=new Ei(()=>i1e.notifySchemaChanged(t1e),200);Tv.onDidChange(()=>{Mte.isScheduled()||Mte.schedule()});const n1e=Gn("widget-close",Pe.close,v("widgetClose","Icon for the close action in widgets."));Gn("goto-previous-location",Pe.arrowUp,v("previousChangeIcon","Icon for goto previous editor location."));Gn("goto-next-location",Pe.arrowDown,v("nextChangeIcon","Icon for goto next editor location."));nt.modify(Pe.sync,"spin");nt.modify(Pe.loading,"spin");var aK=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},lK=function(n,e){return function(t,i){e(t,i,n)}};const zYe=Gn("diff-review-insert",Pe.add,v("accessibleDiffViewerInsertIcon","Icon for 'Insert' in accessible diff viewer.")),UYe=Gn("diff-review-remove",Pe.remove,v("accessibleDiffViewerRemoveIcon","Icon for 'Remove' in accessible diff viewer.")),jYe=Gn("diff-review-close",Pe.close,v("accessibleDiffViewerCloseIcon","Icon for 'Close' in accessible diff viewer."));let op=class extends pe{constructor(e,t,i,s,r,o,a,l,c){super(),this._parentNode=e,this._visible=t,this._setVisible=i,this._canClose=s,this._width=r,this._height=o,this._diffs=a,this._editors=l,this._instantiationService=c,this._state=RC(this,(u,h)=>{const d=this._visible.read(u);if(this._parentNode.style.visibility=d?"visible":"hidden",!d)return null;const f=h.add(this._instantiationService.createInstance(n7,this._diffs,this._editors,this._setVisible,this._canClose)),g=h.add(this._instantiationService.createInstance(s7,this._parentNode,f,this._width,this._height,this._editors));return{model:f,view:g}}).recomputeInitiallyAndOnChange(this._store)}next(){ln(e=>{const t=this._visible.get();this._setVisible(!0,e),t&&this._state.get().model.nextGroup(e)})}prev(){ln(e=>{this._setVisible(!0,e),this._state.get().model.previousGroup(e)})}close(){ln(e=>{this._setVisible(!1,e)})}};op._ttPolicy=sg("diffReview",{createHTML:n=>n});op=aK([lK(8,at)],op);let n7=class extends pe{constructor(e,t,i,s,r){super(),this._diffs=e,this._editors=t,this._setVisible=i,this.canClose=s,this._audioCueService=r,this._groups=si(this,[]),this._currentGroupIdx=si(this,0),this._currentElementIdx=si(this,0),this.groups=this._groups,this.currentGroup=this._currentGroupIdx.map((o,a)=>this._groups.read(a)[o]),this.currentGroupIndex=this._currentGroupIdx,this.currentElement=this._currentElementIdx.map((o,a)=>{var l;return(l=this.currentGroup.read(a))===null||l===void 0?void 0:l.lines[o]}),this._register(pi(o=>{const a=this._diffs.read(o);if(!a){this._groups.set([],void 0);return}const l=qYe(a,this._editors.original.getModel().getLineCount(),this._editors.modified.getModel().getLineCount());ln(c=>{const u=this._editors.modified.getPosition();if(u){const h=l.findIndex(d=>(u==null?void 0:u.lineNumber)<d.range.modified.endLineNumberExclusive);h!==-1&&this._currentGroupIdx.set(h,c)}this._groups.set(l,c)})})),this._register(pi(o=>{const a=this.currentElement.read(o);(a==null?void 0:a.type)===eo.Deleted?this._audioCueService.playAudioCue(Pt.diffLineDeleted,{source:"accessibleDiffViewer.currentElementChanged"}):(a==null?void 0:a.type)===eo.Added&&this._audioCueService.playAudioCue(Pt.diffLineInserted,{source:"accessibleDiffViewer.currentElementChanged"})})),this._register(pi(o=>{var a;const l=this.currentElement.read(o);if(l&&l.type!==eo.Header){const c=(a=l.modifiedLineNumber)!==null&&a!==void 0?a:l.diff.modified.startLineNumber;this._editors.modified.setSelection(M.fromPositions(new he(c,1)))}}))}_goToGroupDelta(e,t){const i=this.groups.get();!i||i.length<=1||KL(t,s=>{this._currentGroupIdx.set(Nt.ofLength(i.length).clipCyclic(this._currentGroupIdx.get()+e),s),this._currentElementIdx.set(0,s)})}nextGroup(e){this._goToGroupDelta(1,e)}previousGroup(e){this._goToGroupDelta(-1,e)}_goToLineDelta(e){const t=this.currentGroup.get();!t||t.lines.length<=1||ln(i=>{this._currentElementIdx.set(Nt.ofLength(t.lines.length).clip(this._currentElementIdx.get()+e),i)})}goToNextLine(){this._goToLineDelta(1)}goToPreviousLine(){this._goToLineDelta(-1)}goToLine(e){const t=this.currentGroup.get();if(!t)return;const i=t.lines.indexOf(e);i!==-1&&ln(s=>{this._currentElementIdx.set(i,s)})}revealCurrentElementInEditor(){this._setVisible(!1,void 0);const e=this.currentElement.get();e&&(e.type===eo.Deleted?(this._editors.original.setSelection(M.fromPositions(new he(e.originalLineNumber,1))),this._editors.original.revealLine(e.originalLineNumber),this._editors.original.focus()):(e.type!==eo.Header&&(this._editors.modified.setSelection(M.fromPositions(new he(e.modifiedLineNumber,1))),this._editors.modified.revealLine(e.modifiedLineNumber)),this._editors.modified.focus()))}close(){this._setVisible(!1,void 0),this._editors.modified.focus()}};n7=aK([lK(4,ME)],n7);const Aw=3;function qYe(n,e,t){const i=[];for(const s of zge(n,(r,o)=>o.modified.startLineNumber-r.modified.endLineNumberExclusive<2*Aw)){const r=[];r.push(new GYe);const o=new xt(Math.max(1,s[0].original.startLineNumber-Aw),Math.min(s[s.length-1].original.endLineNumberExclusive+Aw,e+1)),a=new xt(Math.max(1,s[0].modified.startLineNumber-Aw),Math.min(s[s.length-1].modified.endLineNumberExclusive+Aw,t+1));Uge(s,(u,h)=>{const d=new xt(u?u.original.endLineNumberExclusive:o.startLineNumber,h?h.original.startLineNumber:o.endLineNumberExclusive),f=new xt(u?u.modified.endLineNumberExclusive:a.startLineNumber,h?h.modified.startLineNumber:a.endLineNumberExclusive);d.forEach(g=>{r.push(new XYe(g,f.startLineNumber+(g-d.startLineNumber)))}),h&&(h.original.forEach(g=>{r.push(new YYe(h,g))}),h.modified.forEach(g=>{r.push(new ZYe(h,g))}))});const l=s[0].modified.join(s[s.length-1].modified),c=s[0].original.join(s[s.length-1].original);i.push(new KYe(new vd(l,c),r))}return i}var eo;(function(n){n[n.Header=0]="Header",n[n.Unchanged=1]="Unchanged",n[n.Deleted=2]="Deleted",n[n.Added=3]="Added"})(eo||(eo={}));class KYe{constructor(e,t){this.range=e,this.lines=t}}class GYe{constructor(){this.type=eo.Header}}class YYe{constructor(e,t){this.diff=e,this.originalLineNumber=t,this.type=eo.Deleted,this.modifiedLineNumber=void 0}}class ZYe{constructor(e,t){this.diff=e,this.modifiedLineNumber=t,this.type=eo.Added,this.originalLineNumber=void 0}}class XYe{constructor(e,t){this.originalLineNumber=e,this.modifiedLineNumber=t,this.type=eo.Unchanged}}let s7=class extends pe{constructor(e,t,i,s,r,o){super(),this._element=e,this._model=t,this._width=i,this._height=s,this._editors=r,this._languageService=o,this.domNode=this._element,this.domNode.className="diff-review monaco-editor-background";const a=document.createElement("div");a.className="diff-review-actions",this._actionBar=this._register(new Vl(a)),this._register(pi(l=>{this._actionBar.clear(),this._model.canClose.read(l)&&this._actionBar.push(new ho("diffreview.close",v("label.close","Close"),"close-diff-review "+nt.asClassName(jYe),!0,async()=>t.close()),{label:!1,icon:!0})})),this._content=document.createElement("div"),this._content.className="diff-review-content",this._content.setAttribute("role","code"),this._scrollbar=this._register(new CE(this._content,{})),mr(this.domNode,this._scrollbar.getDomNode(),a),this._register(st(()=>{mr(this.domNode)})),this._register(Ep(this.domNode,{width:this._width,height:this._height})),this._register(Ep(this._content,{width:this._width,height:this._height})),this._register(rg((l,c)=>{this._model.currentGroup.read(l),this._render(c)})),this._register(Mn(this.domNode,"keydown",l=>{(l.equals(18)||l.equals(2066)||l.equals(530))&&(l.preventDefault(),this._model.goToNextLine()),(l.equals(16)||l.equals(2064)||l.equals(528))&&(l.preventDefault(),this._model.goToPreviousLine()),(l.equals(9)||l.equals(2057)||l.equals(521)||l.equals(1033))&&(l.preventDefault(),this._model.close()),(l.equals(10)||l.equals(3))&&(l.preventDefault(),this._model.revealCurrentElementInEditor())}))}_render(e){const t=this._editors.original.getOptions(),i=this._editors.modified.getOptions(),s=document.createElement("div");s.className="diff-review-table",s.setAttribute("role","list"),s.setAttribute("aria-label",v("ariaLabel","Accessible Diff Viewer. Use arrow up and down to navigate.")),_r(s,i.get(50)),mr(this._content,s);const r=this._editors.original.getModel(),o=this._editors.modified.getModel();if(!r||!o)return;const a=r.getOptions(),l=o.getOptions(),c=i.get(66),u=this._model.currentGroup.get();for(const h of(u==null?void 0:u.lines)||[]){if(!u)break;let d;if(h.type===eo.Header){const g=document.createElement("div");g.className="diff-review-row",g.setAttribute("role","listitem");const p=u.range,m=this._model.currentGroupIndex.get(),_=this._model.groups.get().length,b=E=>E===0?v("no_lines_changed","no lines changed"):E===1?v("one_line_changed","1 line changed"):v("more_lines_changed","{0} lines changed",E),y=b(p.original.length),w=b(p.modified.length);g.setAttribute("aria-label",v({key:"header",comment:["This is the ARIA label for a git diff header.","A git diff header looks like this: @@ -154,12 +159,39 @@.","That encodes that at original line 154 (which is now line 159), 12 lines were removed/changed with 39 lines.","Variables 0 and 1 refer to the diff index out of total number of diffs.","Variables 2 and 4 will be numbers (a line number).",'Variables 3 and 5 will be "no lines changed", "1 line changed" or "X lines changed", localized separately.']},"Difference {0} of {1}: original line {2}, {3}, modified line {4}, {5}",m+1,_,p.original.startLineNumber,y,p.modified.startLineNumber,w));const S=document.createElement("div");S.className="diff-review-cell diff-review-summary",S.appendChild(document.createTextNode(`${m+1}/${_}: @@ -${p.original.startLineNumber},${p.original.length} +${p.modified.startLineNumber},${p.modified.length} @@`)),g.appendChild(S),d=g}else d=this._createRow(h,c,this._width.get(),t,r,a,i,o,l);s.appendChild(d);const f=St(g=>this._model.currentElement.read(g)===h);e.add(pi(g=>{const p=f.read(g);d.tabIndex=p?0:-1,p&&d.focus()})),e.add(Ce(d,"focus",()=>{this._model.goToLine(h)}))}this._scrollbar.scanDomNode()}_createRow(e,t,i,s,r,o,a,l,c){const u=s.get(143),h=u.glyphMarginWidth+u.lineNumbersWidth,d=a.get(143),f=10+d.glyphMarginWidth+d.lineNumbersWidth;let g="diff-review-row",p="";const m="diff-review-spacer";let _=null;switch(e.type){case eo.Added:g="diff-review-row line-insert",p=" char-insert",_=zYe;break;case eo.Deleted:g="diff-review-row line-delete",p=" char-delete",_=UYe;break}const b=document.createElement("div");b.style.minWidth=i+"px",b.className=g,b.setAttribute("role","listitem"),b.ariaLevel="";const y=document.createElement("div");y.className="diff-review-cell",y.style.height=`${t}px`,b.appendChild(y);const w=document.createElement("span");w.style.width=h+"px",w.style.minWidth=h+"px",w.className="diff-review-line-number"+p,e.originalLineNumber!==void 0?w.appendChild(document.createTextNode(String(e.originalLineNumber))):w.innerText=" ",y.appendChild(w);const S=document.createElement("span");S.style.width=f+"px",S.style.minWidth=f+"px",S.style.paddingRight="10px",S.className="diff-review-line-number"+p,e.modifiedLineNumber!==void 0?S.appendChild(document.createTextNode(String(e.modifiedLineNumber))):S.innerText=" ",y.appendChild(S);const E=document.createElement("span");if(E.className=m,_){const x=document.createElement("span");x.className=nt.asClassName(_),x.innerText="  ",E.appendChild(x)}else E.innerText="  ";y.appendChild(E);let L;if(e.modifiedLineNumber!==void 0){let x=this._getLineHtml(l,a,c.tabSize,e.modifiedLineNumber,this._languageService.languageIdCodec);op._ttPolicy&&(x=op._ttPolicy.createHTML(x)),y.insertAdjacentHTML("beforeend",x),L=l.getLineContent(e.modifiedLineNumber)}else{let x=this._getLineHtml(r,s,o.tabSize,e.originalLineNumber,this._languageService.languageIdCodec);op._ttPolicy&&(x=op._ttPolicy.createHTML(x)),y.insertAdjacentHTML("beforeend",x),L=r.getLineContent(e.originalLineNumber)}L.length===0&&(L=v("blankLine","blank"));let k="";switch(e.type){case eo.Unchanged:e.originalLineNumber===e.modifiedLineNumber?k=v({key:"unchangedLine",comment:["The placeholders are contents of the line and should not be translated."]},"{0} unchanged line {1}",L,e.originalLineNumber):k=v("equalLine","{0} original line {1} modified line {2}",L,e.originalLineNumber,e.modifiedLineNumber);break;case eo.Added:k=v("insertLine","+ {0} modified line {1}",L,e.modifiedLineNumber);break;case eo.Deleted:k=v("deleteLine","- {0} original line {1}",L,e.originalLineNumber);break}return b.setAttribute("aria-label",k),b}_getLineHtml(e,t,i,s,r){const o=e.getLineContent(s),a=t.get(50),l=Ps.createEmpty(o,r),c=Ja.isBasicASCII(o,e.mightContainNonBasicASCII()),u=Ja.containsRTL(o,c,e.mightContainRTL());return VO(new Am(a.isMonospace&&!t.get(33),a.canUseHalfwidthRightwardsArrow,o,!1,c,u,0,l,[],i,0,a.spaceWidth,a.middotWidth,a.wsmiddotWidth,t.get(116),t.get(98),t.get(93),t.get(51)!==Oa.OFF,null)).html}};s7=aK([lK(5,sn)],s7);const QYe=Gn("diff-insert",Pe.add,v("diffInsertIcon","Line decoration for inserts in the diff editor.")),s1e=Gn("diff-remove",Pe.remove,v("diffRemoveIcon","Line decoration for removals in the diff editor.")),Ote=yt.register({className:"line-insert",description:"line-insert",isWholeLine:!0,linesDecorationsClassName:"insert-sign "+nt.asClassName(QYe),marginClassName:"gutter-insert"}),Fte=yt.register({className:"line-delete",description:"line-delete",isWholeLine:!0,linesDecorationsClassName:"delete-sign "+nt.asClassName(s1e),marginClassName:"gutter-delete"}),Bte=yt.register({className:"line-insert",description:"line-insert",isWholeLine:!0,marginClassName:"gutter-insert"}),Wte=yt.register({className:"line-delete",description:"line-delete",isWholeLine:!0,marginClassName:"gutter-delete"}),Vte=yt.register({className:"char-insert",description:"char-insert",shouldFillLineOnLineBreak:!0}),JYe=yt.register({className:"char-insert",description:"char-insert",isWholeLine:!0}),eZe=yt.register({className:"char-insert diff-range-empty",description:"char-insert diff-range-empty"}),r7=yt.register({className:"char-delete",description:"char-delete",shouldFillLineOnLineBreak:!0}),tZe=yt.register({className:"char-delete",description:"char-delete",isWholeLine:!0}),iZe=yt.register({className:"char-delete diff-range-empty",description:"char-delete diff-range-empty"});class Dp extends pe{constructor(e,t,i,s,r){super(),this._rootElement=e,this._diffModel=t,this._originalEditorLayoutInfo=i,this._modifiedEditorLayoutInfo=s,this._editors=r,this._originalScrollTop=Pn(this._editors.original.onDidScrollChange,()=>this._editors.original.getScrollTop()),this._modifiedScrollTop=Pn(this._editors.modified.onDidScrollChange,()=>this._editors.modified.getScrollTop()),this._viewZonesChanged=Fa("onDidChangeViewZones",this._editors.modified.onDidChangeViewZones),this.width=si(this,0),this._modifiedViewZonesChangedSignal=Fa("modified.onDidChangeViewZones",this._editors.modified.onDidChangeViewZones),this._originalViewZonesChangedSignal=Fa("original.onDidChangeViewZones",this._editors.original.onDidChangeViewZones),this._state=RC(this,(d,f)=>{var g;this._element.replaceChildren();const p=this._diffModel.read(d),m=(g=p==null?void 0:p.diff.read(d))===null||g===void 0?void 0:g.movedTexts;if(!m||m.length===0){this.width.set(0,void 0);return}this._viewZonesChanged.read(d);const _=this._originalEditorLayoutInfo.read(d),b=this._modifiedEditorLayoutInfo.read(d);if(!_||!b){this.width.set(0,void 0);return}this._modifiedViewZonesChangedSignal.read(d),this._originalViewZonesChangedSignal.read(d);const y=m.map(I=>{function N(re,G){const W=G.getTopForLineNumber(re.startLineNumber,!0),Y=G.getTopForLineNumber(re.endLineNumberExclusive,!0);return(W+Y)/2}const T=N(I.lineRangeMapping.original,this._editors.original),P=this._originalScrollTop.read(d),R=N(I.lineRangeMapping.modified,this._editors.modified),F=this._modifiedScrollTop.read(d),j=T-P,K=R-F,Z=Math.min(T,R),q=Math.max(T,R);return{range:new Nt(Z,q),from:j,to:K,fromWithoutScroll:T,toWithoutScroll:R,move:I}});y.sort(w7e(Nl(I=>I.fromWithoutScroll>I.toWithoutScroll,S7e),Nl(I=>I.fromWithoutScroll>I.toWithoutScroll?I.fromWithoutScroll:-I.toWithoutScroll,Pf)));const w=cK.compute(y.map(I=>I.range)),S=10,E=_.verticalScrollbarWidth,L=(w.getTrackCount()-1)*10+S*2,k=E+L+(b.contentLeft-Dp.movedCodeBlockPadding);let x=0;for(const I of y){const N=w.getTrack(x),T=E+S+N*10,P=15,R=15,F=k,j=b.glyphMarginWidth+b.lineNumbersWidth,K=18,Z=document.createElementNS("http://www.w3.org/2000/svg","rect");Z.classList.add("arrow-rectangle"),Z.setAttribute("x",`${F-j}`),Z.setAttribute("y",`${I.to-K/2}`),Z.setAttribute("width",`${j}`),Z.setAttribute("height",`${K}`),this._element.appendChild(Z);const q=document.createElementNS("http://www.w3.org/2000/svg","g"),re=document.createElementNS("http://www.w3.org/2000/svg","path");re.setAttribute("d",`M 0 ${I.from} L ${T} ${I.from} L ${T} ${I.to} L ${F-R} ${I.to}`),re.setAttribute("fill","none"),q.appendChild(re);const G=document.createElementNS("http://www.w3.org/2000/svg","polygon");G.classList.add("arrow"),f.add(pi(W=>{re.classList.toggle("currentMove",I.move===p.activeMovedText.read(W)),G.classList.toggle("currentMove",I.move===p.activeMovedText.read(W))})),G.setAttribute("points",`${F-R},${I.to-P/2} ${F},${I.to} ${F-R},${I.to+P/2}`),q.appendChild(G),this._element.appendChild(q),x++}this.width.set(L,void 0)}),this._element=document.createElementNS("http://www.w3.org/2000/svg","svg"),this._element.setAttribute("class","moved-blocks-lines"),this._rootElement.appendChild(this._element),this._register(st(()=>this._element.remove())),this._register(pi(d=>{const f=this._originalEditorLayoutInfo.read(d),g=this._modifiedEditorLayoutInfo.read(d);!f||!g||(this._element.style.left=`${f.width-f.verticalScrollbarWidth}px`,this._element.style.height=`${f.height}px`,this._element.style.width=`${f.verticalScrollbarWidth+f.contentLeft-Dp.movedCodeBlockPadding+this.width.read(d)}px`)})),this._register(NE(this._state));const o=St(d=>{const f=this._diffModel.read(d),g=f==null?void 0:f.diff.read(d);return g?g.movedTexts.map(p=>({move:p,original:new bP(gP(p.lineRangeMapping.original.startLineNumber-1),18),modified:new bP(gP(p.lineRangeMapping.modified.startLineNumber-1),18)})):[]});this._register(yP(this._editors.original,o.map(d=>d.map(f=>f.original)))),this._register(yP(this._editors.modified,o.map(d=>d.map(f=>f.modified)))),this._register(rg((d,f)=>{const g=o.read(d);for(const p of g)f.add(new Hte(this._editors.original,p.original,p.move,"original",this._diffModel.get())),f.add(new Hte(this._editors.modified,p.modified,p.move,"modified",this._diffModel.get()))}));const a=Pn(this._editors.original.onDidChangeCursorPosition,()=>this._editors.original.getPosition()),l=Pn(this._editors.modified.onDidChangeCursorPosition,()=>this._editors.modified.getPosition()),c=Fa("original.onDidFocusEditorWidget",d=>this._editors.original.onDidFocusEditorWidget(()=>setTimeout(()=>d(void 0),0))),u=Fa("modified.onDidFocusEditorWidget",d=>this._editors.modified.onDidFocusEditorWidget(()=>setTimeout(()=>d(void 0),0)));let h="modified";this._register(TE({createEmptyChangeSummary:()=>{},handleChange:(d,f)=>(d.didChange(c)&&(h="original"),d.didChange(u)&&(h="modified"),!0)},d=>{c.read(d),u.read(d);const f=this._diffModel.read(d);if(!f)return;const g=f.diff.read(d);let p;if(g&&h==="original"){const m=a.read(d);m&&(p=g.movedTexts.find(_=>_.lineRangeMapping.original.contains(m.lineNumber)))}if(g&&h==="modified"){const m=l.read(d);m&&(p=g.movedTexts.find(_=>_.lineRangeMapping.modified.contains(m.lineNumber)))}p!==f.movedTextToCompare.get()&&f.movedTextToCompare.set(void 0,void 0),f.setActiveMovedText(p)}))}}Dp.movedCodeBlockPadding=4;class cK{static compute(e){const t=[],i=[];for(const s of e){let r=t.findIndex(o=>!o.intersectsStrict(s));r===-1&&(t.length>=6?r=tUe(t,Nl(a=>a.intersectWithRangeLength(s),Pf)):(r=t.length,t.push(new kq))),t[r].addRange(s),i.push(r)}return new cK(t.length,i)}constructor(e,t){this._trackCount=e,this.trackPerLineIdx=t}getTrack(e){return this.trackPerLineIdx[e]}getTrackCount(){return this._trackCount}}class Hte extends Jme{constructor(e,t,i,s,r){const o=en("div.diff-hidden-lines-widget");super(e,t,o.root),this._editor=e,this._move=i,this._kind=s,this._diffModel=r,this._nodes=en("div.diff-moved-code-block",{style:{marginRight:"4px"}},[en("div.text-content@textContent"),en("div.action-bar@actionBar")]),o.root.appendChild(this._nodes.root);const a=Pn(this._editor.onDidLayoutChange,()=>this._editor.getLayoutInfo());this._register(Ep(this._nodes.root,{paddingRight:a.map(d=>d.verticalScrollbarWidth)}));let l;i.changes.length>0?l=this._kind==="original"?v("codeMovedToWithChanges","Code moved with changes to line {0}-{1}",this._move.lineRangeMapping.modified.startLineNumber,this._move.lineRangeMapping.modified.endLineNumberExclusive-1):v("codeMovedFromWithChanges","Code moved with changes from line {0}-{1}",this._move.lineRangeMapping.original.startLineNumber,this._move.lineRangeMapping.original.endLineNumberExclusive-1):l=this._kind==="original"?v("codeMovedTo","Code moved to line {0}-{1}",this._move.lineRangeMapping.modified.startLineNumber,this._move.lineRangeMapping.modified.endLineNumberExclusive-1):v("codeMovedFrom","Code moved from line {0}-{1}",this._move.lineRangeMapping.original.startLineNumber,this._move.lineRangeMapping.original.endLineNumberExclusive-1);const c=this._register(new Vl(this._nodes.actionBar,{highlightToggledItems:!0})),u=new ho("",l,"",!1);c.push(u,{icon:!1,label:!0});const h=new ho("","Compare",nt.asClassName(Pe.compareChanges),!0,()=>{this._editor.focus(),this._diffModel.movedTextToCompare.set(this._diffModel.movedTextToCompare.get()===i?void 0:this._move,void 0)});this._register(pi(d=>{const f=this._diffModel.movedTextToCompare.read(d)===i;h.checked=f})),c.push(h,{icon:!1,label:!0})}}class nZe extends pe{constructor(e,t,i,s){super(),this._editors=e,this._diffModel=t,this._options=i,this._decorations=St(this,r=>{var o;const a=(o=this._diffModel.read(r))===null||o===void 0?void 0:o.diff.read(r);if(!a)return null;const l=this._diffModel.read(r).movedTextToCompare.read(r),c=this._options.renderIndicators.read(r),u=this._options.showEmptyDecorations.read(r),h=[],d=[];if(!l)for(const g of a.mappings)if(g.lineRangeMapping.original.isEmpty||h.push({range:g.lineRangeMapping.original.toInclusiveRange(),options:c?Fte:Wte}),g.lineRangeMapping.modified.isEmpty||d.push({range:g.lineRangeMapping.modified.toInclusiveRange(),options:c?Ote:Bte}),g.lineRangeMapping.modified.isEmpty||g.lineRangeMapping.original.isEmpty)g.lineRangeMapping.original.isEmpty||h.push({range:g.lineRangeMapping.original.toInclusiveRange(),options:tZe}),g.lineRangeMapping.modified.isEmpty||d.push({range:g.lineRangeMapping.modified.toInclusiveRange(),options:JYe});else for(const p of g.lineRangeMapping.innerChanges||[])g.lineRangeMapping.original.contains(p.originalRange.startLineNumber)&&h.push({range:p.originalRange,options:p.originalRange.isEmpty()&&u?iZe:r7}),g.lineRangeMapping.modified.contains(p.modifiedRange.startLineNumber)&&d.push({range:p.modifiedRange,options:p.modifiedRange.isEmpty()&&u?eZe:Vte});if(l)for(const g of l.changes){const p=g.original.toInclusiveRange();p&&h.push({range:p,options:c?Fte:Wte});const m=g.modified.toInclusiveRange();m&&d.push({range:m,options:c?Ote:Bte});for(const _ of g.innerChanges||[])h.push({range:_.originalRange,options:r7}),d.push({range:_.modifiedRange,options:Vte})}const f=this._diffModel.read(r).activeMovedText.read(r);for(const g of a.movedTexts)h.push({range:g.lineRangeMapping.original.toInclusiveRange(),options:{description:"moved",blockClassName:"movedOriginal"+(g===f?" currentMove":""),blockPadding:[Dp.movedCodeBlockPadding,0,Dp.movedCodeBlockPadding,Dp.movedCodeBlockPadding]}}),d.push({range:g.lineRangeMapping.modified.toInclusiveRange(),options:{description:"moved",blockClassName:"movedModified"+(g===f?" currentMove":""),blockPadding:[4,0,4,4]}});return{originalDecorations:h,modifiedDecorations:d}}),this._register(new sZe(e,t,i,s)),this._register(vP(this._editors.original,this._decorations.map(r=>(r==null?void 0:r.originalDecorations)||[]))),this._register(vP(this._editors.modified,this._decorations.map(r=>(r==null?void 0:r.modifiedDecorations)||[])))}}class sZe extends pe{constructor(e,t,i,s){super(),this._editors=e,this._diffModel=t,this._options=i,this._widget=s;const r=[],o=St(this,a=>{const l=this._diffModel.read(a),c=l==null?void 0:l.diff.read(a);if(!c)return r;const u=this._editors.modifiedSelections.read(a);if(u.every(g=>g.isEmpty()))return r;const h=new cu(u.map(g=>xt.fromRangeInclusive(g))),f=c.mappings.filter(g=>g.lineRangeMapping.innerChanges&&h.intersects(g.lineRangeMapping.modified)).map(g=>({mapping:g,rangeMappings:g.lineRangeMapping.innerChanges.filter(p=>u.some(m=>M.areIntersecting(p.modifiedRange,m)))}));return f.length===0||f.every(g=>g.rangeMappings.length===0)?r:f});this._register(rg((a,l)=>{const c=this._diffModel.read(a),u=c==null?void 0:c.diff.read(a);if(!c||!u||this._diffModel.read(a).movedTextToCompare.read(a)||!this._options.shouldRenderRevertArrows.read(a))return;const d=[],f=o.read(a),g=new Set(f.map(p=>p.mapping));if(f.length>0){const p=this._editors.modifiedSelections.read(a),m=new ZL(p[p.length-1].positionLineNumber,this._widget,f.flatMap(_=>_.rangeMappings),!0);this._editors.modified.addGlyphMarginWidget(m),d.push(m)}for(const p of u.mappings)if(!g.has(p)&&!p.lineRangeMapping.modified.isEmpty&&p.lineRangeMapping.innerChanges){const m=new ZL(p.lineRangeMapping.modified.startLineNumber,this._widget,p.lineRangeMapping.innerChanges,!1);this._editors.modified.addGlyphMarginWidget(m),d.push(m)}l.add(st(()=>{for(const p of d)this._editors.modified.removeGlyphMarginWidget(p)}))}))}}class ZL{getId(){return this._id}constructor(e,t,i,s){this._lineNumber=e,this._widget=t,this._diffs=i,this._selection=s,this._id=`revertButton${ZL.counter++}`,this._domNode=en("div.revertButton",{title:this._selection?v("revertSelectedChanges","Revert Selected Changes"):v("revertChange","Revert Change")},[mP(Pe.arrowRight)]).root,this._domNode.onmousedown=r=>{r.button!==2&&(r.stopPropagation(),r.preventDefault())},this._domNode.onmouseup=r=>{r.stopPropagation(),r.preventDefault()},this._domNode.onclick=r=>{this._widget.revertRangeMappings(this._diffs),r.stopPropagation(),r.preventDefault()}}getDomNode(){return this._domNode}getPosition(){return{lane:l_.Right,range:{startColumn:1,startLineNumber:this._lineNumber,endColumn:1,endLineNumber:this._lineNumber},zIndex:10001}}}ZL.counter=0;var MC=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r};const rZe=!1;var CP;(function(n){n.North="north",n.South="south",n.East="east",n.West="west"})(CP||(CP={}));let oZe=4;const aZe=new ue;let lZe=300;const cZe=new ue;class uK{constructor(e){this.el=e,this.disposables=new xe}get onPointerMove(){return this.disposables.add(new Ht(pt(this.el),"mousemove")).event}get onPointerUp(){return this.disposables.add(new Ht(pt(this.el),"mouseup")).event}dispose(){this.disposables.dispose()}}MC([ts],uK.prototype,"onPointerMove",null);MC([ts],uK.prototype,"onPointerUp",null);class hK{get onPointerMove(){return this.disposables.add(new Ht(this.el,Oi.Change)).event}get onPointerUp(){return this.disposables.add(new Ht(this.el,Oi.End)).event}constructor(e){this.el=e,this.disposables=new xe}dispose(){this.disposables.dispose()}}MC([ts],hK.prototype,"onPointerMove",null);MC([ts],hK.prototype,"onPointerUp",null);class wP{get onPointerMove(){return this.factory.onPointerMove}get onPointerUp(){return this.factory.onPointerUp}constructor(e){this.factory=e}dispose(){}}MC([ts],wP.prototype,"onPointerMove",null);MC([ts],wP.prototype,"onPointerUp",null);const $te="pointer-events-disabled";class wr extends pe{get state(){return this._state}get orthogonalStartSash(){return this._orthogonalStartSash}get orthogonalEndSash(){return this._orthogonalEndSash}set state(e){this._state!==e&&(this.el.classList.toggle("disabled",e===0),this.el.classList.toggle("minimum",e===1),this.el.classList.toggle("maximum",e===2),this._state=e,this.onDidEnablementChange.fire(e))}set orthogonalStartSash(e){if(this._orthogonalStartSash!==e){if(this.orthogonalStartDragHandleDisposables.clear(),this.orthogonalStartSashDisposables.clear(),e){const t=i=>{this.orthogonalStartDragHandleDisposables.clear(),i!==0&&(this._orthogonalStartDragHandle=Le(this.el,Te(".orthogonal-drag-handle.start")),this.orthogonalStartDragHandleDisposables.add(st(()=>this._orthogonalStartDragHandle.remove())),this.orthogonalStartDragHandleDisposables.add(new Ht(this._orthogonalStartDragHandle,"mouseenter")).event(()=>wr.onMouseEnter(e),void 0,this.orthogonalStartDragHandleDisposables),this.orthogonalStartDragHandleDisposables.add(new Ht(this._orthogonalStartDragHandle,"mouseleave")).event(()=>wr.onMouseLeave(e),void 0,this.orthogonalStartDragHandleDisposables))};this.orthogonalStartSashDisposables.add(e.onDidEnablementChange.event(t,this)),t(e.state)}this._orthogonalStartSash=e}}set orthogonalEndSash(e){if(this._orthogonalEndSash!==e){if(this.orthogonalEndDragHandleDisposables.clear(),this.orthogonalEndSashDisposables.clear(),e){const t=i=>{this.orthogonalEndDragHandleDisposables.clear(),i!==0&&(this._orthogonalEndDragHandle=Le(this.el,Te(".orthogonal-drag-handle.end")),this.orthogonalEndDragHandleDisposables.add(st(()=>this._orthogonalEndDragHandle.remove())),this.orthogonalEndDragHandleDisposables.add(new Ht(this._orthogonalEndDragHandle,"mouseenter")).event(()=>wr.onMouseEnter(e),void 0,this.orthogonalEndDragHandleDisposables),this.orthogonalEndDragHandleDisposables.add(new Ht(this._orthogonalEndDragHandle,"mouseleave")).event(()=>wr.onMouseLeave(e),void 0,this.orthogonalEndDragHandleDisposables))};this.orthogonalEndSashDisposables.add(e.onDidEnablementChange.event(t,this)),t(e.state)}this._orthogonalEndSash=e}}constructor(e,t,i){super(),this.hoverDelay=lZe,this.hoverDelayer=this._register(new Sc(this.hoverDelay)),this._state=3,this.onDidEnablementChange=this._register(new ue),this._onDidStart=this._register(new ue),this._onDidChange=this._register(new ue),this._onDidReset=this._register(new ue),this._onDidEnd=this._register(new ue),this.orthogonalStartSashDisposables=this._register(new xe),this.orthogonalStartDragHandleDisposables=this._register(new xe),this.orthogonalEndSashDisposables=this._register(new xe),this.orthogonalEndDragHandleDisposables=this._register(new xe),this.onDidStart=this._onDidStart.event,this.onDidChange=this._onDidChange.event,this.onDidReset=this._onDidReset.event,this.onDidEnd=this._onDidEnd.event,this.linkedSash=void 0,this.el=Le(e,Te(".monaco-sash")),i.orthogonalEdge&&this.el.classList.add(`orthogonal-edge-${i.orthogonalEdge}`),Gt&&this.el.classList.add("mac");const s=this._register(new Ht(this.el,"mousedown")).event;this._register(s(h=>this.onPointerStart(h,new uK(e)),this));const r=this._register(new Ht(this.el,"dblclick")).event;this._register(r(this.onPointerDoublePress,this));const o=this._register(new Ht(this.el,"mouseenter")).event;this._register(o(()=>wr.onMouseEnter(this)));const a=this._register(new Ht(this.el,"mouseleave")).event;this._register(a(()=>wr.onMouseLeave(this))),this._register(Ri.addTarget(this.el));const l=this._register(new Ht(this.el,Oi.Start)).event;this._register(l(h=>this.onPointerStart(h,new hK(this.el)),this));const c=this._register(new Ht(this.el,Oi.Tap)).event;let u;this._register(c(h=>{if(u){clearTimeout(u),u=void 0,this.onPointerDoublePress(h);return}clearTimeout(u),u=setTimeout(()=>u=void 0,250)},this)),typeof i.size=="number"?(this.size=i.size,i.orientation===0?this.el.style.width=`${this.size}px`:this.el.style.height=`${this.size}px`):(this.size=oZe,this._register(aZe.event(h=>{this.size=h,this.layout()}))),this._register(cZe.event(h=>this.hoverDelay=h)),this.layoutProvider=t,this.orthogonalStartSash=i.orthogonalStartSash,this.orthogonalEndSash=i.orthogonalEndSash,this.orientation=i.orientation||0,this.orientation===1?(this.el.classList.add("horizontal"),this.el.classList.remove("vertical")):(this.el.classList.remove("horizontal"),this.el.classList.add("vertical")),this.el.classList.toggle("debug",rZe),this.layout()}onPointerStart(e,t){Tt.stop(e);let i=!1;if(!e.__orthogonalSashEvent){const g=this.getOrthogonalSash(e);g&&(i=!0,e.__orthogonalSashEvent=!0,g.onPointerStart(e,new wP(t)))}if(this.linkedSash&&!e.__linkedSashEvent&&(e.__linkedSashEvent=!0,this.linkedSash.onPointerStart(e,new wP(t))),!this.state)return;const s=this.el.ownerDocument.getElementsByTagName("iframe");for(const g of s)g.classList.add($te);const r=e.pageX,o=e.pageY,a=e.altKey,l={startX:r,currentX:r,startY:o,currentY:o,altKey:a};this.el.classList.add("active"),this._onDidStart.fire(l);const c=Fl(this.el),u=()=>{let g="";i?g="all-scroll":this.orientation===1?this.state===1?g="s-resize":this.state===2?g="n-resize":g=Gt?"row-resize":"ns-resize":this.state===1?g="e-resize":this.state===2?g="w-resize":g=Gt?"col-resize":"ew-resize",c.textContent=`* { cursor: ${g} !important; }`},h=new xe;u(),i||this.onDidEnablementChange.event(u,null,h);const d=g=>{Tt.stop(g,!1);const p={startX:r,currentX:g.pageX,startY:o,currentY:g.pageY,altKey:a};this._onDidChange.fire(p)},f=g=>{Tt.stop(g,!1),this.el.removeChild(c),this.el.classList.remove("active"),this._onDidEnd.fire(),h.dispose();for(const p of s)p.classList.remove($te)};t.onPointerMove(d,null,h),t.onPointerUp(f,null,h),h.add(t)}onPointerDoublePress(e){const t=this.getOrthogonalSash(e);t&&t._onDidReset.fire(),this.linkedSash&&this.linkedSash._onDidReset.fire(),this._onDidReset.fire()}static onMouseEnter(e,t=!1){e.el.classList.contains("active")?(e.hoverDelayer.cancel(),e.el.classList.add("hover")):e.hoverDelayer.trigger(()=>e.el.classList.add("hover"),e.hoverDelay).then(void 0,()=>{}),!t&&e.linkedSash&&wr.onMouseEnter(e.linkedSash,!0)}static onMouseLeave(e,t=!1){e.hoverDelayer.cancel(),e.el.classList.remove("hover"),!t&&e.linkedSash&&wr.onMouseLeave(e.linkedSash,!0)}clearSashHoverState(){wr.onMouseLeave(this)}layout(){if(this.orientation===0){const e=this.layoutProvider;this.el.style.left=e.getVerticalSashLeft(this)-this.size/2+"px",e.getVerticalSashTop&&(this.el.style.top=e.getVerticalSashTop(this)+"px"),e.getVerticalSashHeight&&(this.el.style.height=e.getVerticalSashHeight(this)+"px")}else{const e=this.layoutProvider;this.el.style.top=e.getHorizontalSashTop(this)-this.size/2+"px",e.getHorizontalSashLeft&&(this.el.style.left=e.getHorizontalSashLeft(this)+"px"),e.getHorizontalSashWidth&&(this.el.style.width=e.getHorizontalSashWidth(this)+"px")}}getOrthogonalSash(e){var t;const i=(t=e.initialTarget)!==null&&t!==void 0?t:e.target;if(!(!i||!(i instanceof HTMLElement))&&i.classList.contains("orthogonal-drag-handle"))return i.classList.contains("start")?this.orthogonalStartSash:this.orthogonalEndSash}dispose(){super.dispose(),this.el.remove()}}class uZe extends pe{constructor(e,t,i,s){super(),this._options=e,this._domNode=t,this._dimensions=i,this._sashes=s,this._sashRatio=si(this,void 0),this.sashLeft=St(this,r=>{var o;const a=(o=this._sashRatio.read(r))!==null&&o!==void 0?o:this._options.splitViewDefaultRatio.read(r);return this._computeSashLeft(a,r)}),this._sash=this._register(new wr(this._domNode,{getVerticalSashTop:r=>0,getVerticalSashLeft:r=>this.sashLeft.get(),getVerticalSashHeight:r=>this._dimensions.height.get()},{orientation:0})),this._startSashPosition=void 0,this._register(this._sash.onDidStart(()=>{this._startSashPosition=this.sashLeft.get()})),this._register(this._sash.onDidChange(r=>{const o=this._dimensions.width.get(),a=this._computeSashLeft((this._startSashPosition+(r.currentX-r.startX))/o,void 0);this._sashRatio.set(a/o,void 0)})),this._register(this._sash.onDidEnd(()=>this._sash.layout())),this._register(this._sash.onDidReset(()=>this._sashRatio.set(void 0,void 0))),this._register(pi(r=>{const o=this._sashes.read(r);o&&(this._sash.orthogonalEndSash=o.bottom)})),this._register(pi(r=>{const o=this._options.enableSplitViewResizing.read(r);this._sash.state=o?3:0,this.sashLeft.read(r),this._dimensions.height.read(r),this._sash.layout()}))}_computeSashLeft(e,t){const i=this._dimensions.width.read(t),s=Math.floor(this._options.splitViewDefaultRatio.read(t)*i),r=this._options.enableSplitViewResizing.read(t)?Math.floor(e*i):s,o=100;return i<=o*2?s:r<o?o:r>i-o?i-o:r}}let Y0=class{remove(){var e;(e=this.parent)===null||e===void 0||e.children.delete(this.id)}static findId(e,t){let i;typeof e=="string"?i=`${t.id}/${e}`:(i=`${t.id}/${e.name}`,t.children.get(i)!==void 0&&(i=`${t.id}/${e.name}_${e.range.startLineNumber}_${e.range.startColumn}`));let s=i;for(let r=0;t.children.get(s)!==void 0;r++)s=`${i}_${r}`;return s}static empty(e){return e.children.size===0}},zte=class extends Y0{constructor(e,t,i){super(),this.id=e,this.parent=t,this.symbol=i,this.children=new Map}},hZe=class extends Y0{constructor(e,t,i,s){super(),this.id=e,this.parent=t,this.label=i,this.order=s,this.children=new Map}},dZe=class u1 extends Y0{static create(e,t,i){const s=new es(i),r=new u1(t.uri),o=e.ordered(t),a=o.map((c,u)=>{var h;const d=Y0.findId(`provider_${u}`,r),f=new hZe(d,r,(h=c.displayName)!==null&&h!==void 0?h:"Unknown Outline Provider",u);return Promise.resolve(c.provideDocumentSymbols(t,s.token)).then(g=>{for(const p of g||[])u1._makeOutlineElement(p,f);return f},g=>(Jn(g),f)).then(g=>{Y0.empty(g)?g.remove():r._groups.set(d,g)})}),l=e.onDidChange(()=>{const c=e.ordered(t);On(c,o)||s.cancel()});return Promise.all(a).then(()=>s.token.isCancellationRequested&&!i.isCancellationRequested?u1.create(e,t,i):r._compact()).finally(()=>{s.dispose(),l.dispose()})}static _makeOutlineElement(e,t){const i=Y0.findId(e,t),s=new zte(i,t,e);if(e.children)for(const r of e.children)u1._makeOutlineElement(r,s);t.children.set(s.id,s)}constructor(e){super(),this.uri=e,this.id="root",this.parent=void 0,this._groups=new Map,this.children=new Map,this.id="root",this.parent=void 0}_compact(){let e=0;for(const[t,i]of this._groups)i.children.size===0?this._groups.delete(t):e+=1;if(e!==1)this.children=this._groups;else{const t=Vt.first(this._groups.values());for(const[,i]of t.children)i.parent=this,this.children.set(i.id,i)}return this}getTopLevelSymbols(){const e=[];for(const t of this.children.values())t instanceof zte?e.push(t.symbol):e.push(...Vt.map(t.children.values(),i=>i.symbol));return e.sort((t,i)=>M.compareRangesUsingStarts(t.range,i.range))}asListOfDocumentSymbols(){const e=this.getTopLevelSymbols(),t=[];return u1._flattenDocumentSymbols(t,e,""),t.sort((i,s)=>he.compare(M.getStartPosition(i.range),M.getStartPosition(s.range))||he.compare(M.getEndPosition(s.range),M.getEndPosition(i.range)))}static _flattenDocumentSymbols(e,t,i){for(const s of t)e.push({kind:s.kind,tags:s.tags,name:s.name,detail:s.detail,containerName:s.containerName||i,range:s.range,selectionRange:s.selectionRange,children:void 0}),s.children&&u1._flattenDocumentSymbols(e,s.children,s.name)}};var r1e=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},o1e=function(n,e){return function(t,i){e(t,i,n)}};let o7=class extends pe{get isUpdatingHiddenAreas(){return this._isUpdatingHiddenAreas}constructor(e,t,i,s){super(),this._editors=e,this._diffModel=t,this._options=i,this._languageFeaturesService=s,this._modifiedOutlineSource=Og(this,l=>{const c=this._editors.modifiedModel.read(l);return c?new a7(this._languageFeaturesService,c):void 0}),this._isUpdatingHiddenAreas=!1,this._register(this._editors.original.onDidChangeCursorPosition(l=>{if(l.reason===3){const c=this._diffModel.get();ln(u=>{for(const h of this._editors.original.getSelections()||[])c==null||c.ensureOriginalLineIsVisible(h.getStartPosition().lineNumber,u),c==null||c.ensureOriginalLineIsVisible(h.getEndPosition().lineNumber,u)})}})),this._register(this._editors.modified.onDidChangeCursorPosition(l=>{if(l.reason===3){const c=this._diffModel.get();ln(u=>{for(const h of this._editors.modified.getSelections()||[])c==null||c.ensureModifiedLineIsVisible(h.getStartPosition().lineNumber,u),c==null||c.ensureModifiedLineIsVisible(h.getEndPosition().lineNumber,u)})}}));const r=this._diffModel.map((l,c)=>{var u,h;return((u=l==null?void 0:l.diff.read(c))===null||u===void 0?void 0:u.mappings.length)===0?[]:(h=l==null?void 0:l.unchangedRegions.read(c))!==null&&h!==void 0?h:[]});this.viewZones=RC(this,(l,c)=>{const u=this._modifiedOutlineSource.read(l);if(!u)return{origViewZones:[],modViewZones:[]};const h=[],d=[],f=this._options.renderSideBySide.read(l),g=r.read(l);for(const p of g)if(!p.shouldHideControls(l)){{const m=St(this,b=>p.getHiddenOriginalRange(b).startLineNumber-1),_=new bP(m,24);h.push(_),c.add(new Ute(this._editors.original,_,p,p.originalUnchangedRange,!f,u,b=>this._diffModel.get().ensureModifiedLineIsVisible(b,void 0),this._options))}{const m=St(this,b=>p.getHiddenModifiedRange(b).startLineNumber-1),_=new bP(m,24);d.push(_),c.add(new Ute(this._editors.modified,_,p,p.modifiedUnchangedRange,!1,u,b=>this._diffModel.get().ensureModifiedLineIsVisible(b,void 0),this._options))}}return{origViewZones:h,modViewZones:d}});const o={description:"unchanged lines",className:"diff-unchanged-lines",isWholeLine:!0},a={description:"Fold Unchanged",glyphMarginHoverMessage:new xr(void 0,{isTrusted:!0,supportThemeIcons:!0}).appendMarkdown(v("foldUnchanged","Fold Unchanged Region")),glyphMarginClassName:"fold-unchanged "+nt.asClassName(Pe.fold),zIndex:10001};this._register(vP(this._editors.original,St(this,l=>{const c=r.read(l),u=c.map(h=>({range:h.originalUnchangedRange.toInclusiveRange(),options:o}));for(const h of c)h.shouldHideControls(l)&&u.push({range:M.fromPositions(new he(h.originalLineNumber,1)),options:a});return u}))),this._register(vP(this._editors.modified,St(this,l=>{const c=r.read(l),u=c.map(h=>({range:h.modifiedUnchangedRange.toInclusiveRange(),options:o}));for(const h of c)h.shouldHideControls(l)&&u.push({range:xt.ofLength(h.modifiedLineNumber,1).toInclusiveRange(),options:a});return u}))),this._register(pi(l=>{const c=r.read(l);this._isUpdatingHiddenAreas=!0;try{this._editors.original.setHiddenAreas(c.map(u=>u.getHiddenOriginalRange(l).toInclusiveRange()).filter(hL)),this._editors.modified.setHiddenAreas(c.map(u=>u.getHiddenModifiedRange(l).toInclusiveRange()).filter(hL))}finally{this._isUpdatingHiddenAreas=!1}})),this._register(this._editors.modified.onMouseUp(l=>{var c;if(!l.event.rightButton&&l.target.position&&(!((c=l.target.element)===null||c===void 0)&&c.className.includes("fold-unchanged"))){const u=l.target.position.lineNumber,h=this._diffModel.get();if(!h)return;const d=h.unchangedRegions.get().find(f=>f.modifiedUnchangedRange.includes(u));if(!d)return;d.collapseAll(void 0),l.event.stopPropagation(),l.event.preventDefault()}})),this._register(this._editors.original.onMouseUp(l=>{var c;if(!l.event.rightButton&&l.target.position&&(!((c=l.target.element)===null||c===void 0)&&c.className.includes("fold-unchanged"))){const u=l.target.position.lineNumber,h=this._diffModel.get();if(!h)return;const d=h.unchangedRegions.get().find(f=>f.originalUnchangedRange.includes(u));if(!d)return;d.collapseAll(void 0),l.event.stopPropagation(),l.event.preventDefault()}}))}};o7=r1e([o1e(3,Ge)],o7);class Ute extends Jme{constructor(e,t,i,s,r,o,a,l){const c=en("div.diff-hidden-lines-widget");super(e,t,c.root),this._editor=e,this._unchangedRegion=i,this._unchangedRegionRange=s,this._hide=r,this._modifiedOutlineSource=o,this._revealModifiedHiddenLine=a,this._options=l,this._nodes=en("div.diff-hidden-lines",[en("div.top@top",{title:v("diff.hiddenLines.top","Click or drag to show more above")}),en("div.center@content",{style:{display:"flex"}},[en("div@first",{style:{display:"flex",justifyContent:"center",alignItems:"center",flexShrink:"0"}},[Te("a",{title:v("showUnchangedRegion","Show Unchanged Region"),role:"button",onclick:()=>{this._unchangedRegion.showAll(void 0)}},...Lp("$(unfold)"))]),en("div@others",{style:{display:"flex",justifyContent:"center",alignItems:"center"}})]),en("div.bottom@bottom",{title:v("diff.bottom","Click or drag to show more below"),role:"button"})]),c.root.appendChild(this._nodes.root);const u=Pn(this._editor.onDidLayoutChange,()=>this._editor.getLayoutInfo());this._hide?mr(this._nodes.first):this._register(Ep(this._nodes.first,{width:u.map(d=>d.contentLeft)})),this._register(pi(d=>{const f=this._unchangedRegion.visibleLineCountTop.read(d)+this._unchangedRegion.visibleLineCountBottom.read(d)===this._unchangedRegion.lineCount;this._nodes.bottom.classList.toggle("canMoveTop",!f),this._nodes.bottom.classList.toggle("canMoveBottom",this._unchangedRegion.visibleLineCountBottom.read(d)>0),this._nodes.top.classList.toggle("canMoveTop",this._unchangedRegion.visibleLineCountTop.read(d)>0),this._nodes.top.classList.toggle("canMoveBottom",!f);const g=this._unchangedRegion.isDragged.read(d),p=this._editor.getDomNode();p&&(p.classList.toggle("draggingUnchangedRegion",!!g),g==="top"?(p.classList.toggle("canMoveTop",this._unchangedRegion.visibleLineCountTop.read(d)>0),p.classList.toggle("canMoveBottom",!f)):g==="bottom"?(p.classList.toggle("canMoveTop",!f),p.classList.toggle("canMoveBottom",this._unchangedRegion.visibleLineCountBottom.read(d)>0)):(p.classList.toggle("canMoveTop",!1),p.classList.toggle("canMoveBottom",!1)))}));const h=this._editor;this._register(Ce(this._nodes.top,"mousedown",d=>{if(d.button!==0)return;this._nodes.top.classList.toggle("dragging",!0),this._nodes.root.classList.toggle("dragging",!0),d.preventDefault();const f=d.clientY;let g=!1;const p=this._unchangedRegion.visibleLineCountTop.get();this._unchangedRegion.isDragged.set("top",void 0);const m=pt(this._nodes.top),_=Ce(m,"mousemove",y=>{const S=y.clientY-f;g=g||Math.abs(S)>2;const E=Math.round(S/h.getOption(66)),L=Math.max(0,Math.min(p+E,this._unchangedRegion.getMaxVisibleLineCountTop()));this._unchangedRegion.visibleLineCountTop.set(L,void 0)}),b=Ce(m,"mouseup",y=>{g||this._unchangedRegion.showMoreAbove(this._options.hideUnchangedRegionsRevealLineCount.get(),void 0),this._nodes.top.classList.toggle("dragging",!1),this._nodes.root.classList.toggle("dragging",!1),this._unchangedRegion.isDragged.set(void 0,void 0),_.dispose(),b.dispose()})})),this._register(Ce(this._nodes.bottom,"mousedown",d=>{if(d.button!==0)return;this._nodes.bottom.classList.toggle("dragging",!0),this._nodes.root.classList.toggle("dragging",!0),d.preventDefault();const f=d.clientY;let g=!1;const p=this._unchangedRegion.visibleLineCountBottom.get();this._unchangedRegion.isDragged.set("bottom",void 0);const m=pt(this._nodes.bottom),_=Ce(m,"mousemove",y=>{const S=y.clientY-f;g=g||Math.abs(S)>2;const E=Math.round(S/h.getOption(66)),L=Math.max(0,Math.min(p-E,this._unchangedRegion.getMaxVisibleLineCountBottom())),k=h.getTopForLineNumber(this._unchangedRegionRange.endLineNumberExclusive);this._unchangedRegion.visibleLineCountBottom.set(L,void 0);const x=h.getTopForLineNumber(this._unchangedRegionRange.endLineNumberExclusive);h.setScrollTop(h.getScrollTop()+(x-k))}),b=Ce(m,"mouseup",y=>{if(this._unchangedRegion.isDragged.set(void 0,void 0),!g){const w=h.getTopForLineNumber(this._unchangedRegionRange.endLineNumberExclusive);this._unchangedRegion.showMoreBelow(this._options.hideUnchangedRegionsRevealLineCount.get(),void 0);const S=h.getTopForLineNumber(this._unchangedRegionRange.endLineNumberExclusive);h.setScrollTop(h.getScrollTop()+(S-w))}this._nodes.bottom.classList.toggle("dragging",!1),this._nodes.root.classList.toggle("dragging",!1),_.dispose(),b.dispose()})})),this._register(pi(d=>{const f=[];if(!this._hide){const g=i.getHiddenModifiedRange(d).length,p=v("hiddenLines","{0} hidden lines",g),m=Te("span",{title:v("diff.hiddenLines.expandAll","Double click to unfold")},p);m.addEventListener("dblclick",y=>{y.button===0&&(y.preventDefault(),this._unchangedRegion.showAll(void 0))}),f.push(m);const _=this._unchangedRegion.getHiddenModifiedRange(d),b=this._modifiedOutlineSource.getBreadcrumbItems(_,d);if(b.length>0){f.push(Te("span",void 0,"  |  "));for(let y=0;y<b.length;y++){const w=b[y],S=eP.toIcon(w.kind),E=en("div.breadcrumb-item",{style:{display:"flex",alignItems:"center"}},[mP(S)," ",w.name,...y===b.length-1?[]:[mP(Pe.chevronRight)]]).root;f.push(E),E.onclick=()=>{this._revealModifiedHiddenLine(w.startLineNumber)}}}}mr(this._nodes.others,...f)}))}}let a7=class extends pe{constructor(e,t){super(),this._languageFeaturesService=e,this._textModel=t,this._currentModel=si(this,void 0);const i=Fa("documentSymbolProvider.onDidChange",this._languageFeaturesService.documentSymbolProvider.onDidChange),s=Fa("_textModel.onDidChangeContent",Ve.debounce(r=>this._textModel.onDidChangeContent(r),()=>{},100));this._register(rg(async(r,o)=>{i.read(r),s.read(r);const a=o.add(new OYe),l=await dZe.create(this._languageFeaturesService.documentSymbolProvider,this._textModel,a.token);o.isDisposed||this._currentModel.set(l,void 0)}))}getBreadcrumbItems(e,t){const i=this._currentModel.read(t);if(!i)return[];const s=i.asListOfDocumentSymbols().filter(r=>e.contains(r.range.startLineNumber)&&!e.contains(r.range.endLineNumber));return s.sort(Kge(Nl(r=>r.range.endLineNumber-r.range.startLineNumber,Pf))),s.map(r=>({name:r.name,kind:r.kind,startLineNumber:r.range.startLineNumber}))}};a7=r1e([o1e(0,Ge)],a7);const Pc=Bt("editorWorkerService");var fZe=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},jte=function(n,e){return function(t,i){e(t,i,n)}},h1;let SP=h1=class{constructor(e,t,i){this.editorWorkerService=t,this.telemetryService=i,this.onDidChangeEventEmitter=new ue,this.onDidChange=this.onDidChangeEventEmitter.event,this.diffAlgorithm="advanced",this.diffAlgorithmOnDidChangeSubscription=void 0,this.setOptions(e)}dispose(){var e;(e=this.diffAlgorithmOnDidChangeSubscription)===null||e===void 0||e.dispose()}async computeDiff(e,t,i,s){var r,o;if(typeof this.diffAlgorithm!="string")return this.diffAlgorithm.computeDiff(e,t,i,s);if(e.getLineCount()===1&&e.getLineMaxColumn(1)===1)return t.getLineCount()===1&&t.getLineMaxColumn(1)===1?{changes:[],identical:!0,quitEarly:!1,moves:[]}:{changes:[new Hl(new xt(1,2),new xt(1,t.getLineCount()+1),[new om(e.getFullModelRange(),t.getFullModelRange())])],identical:!1,quitEarly:!1,moves:[]};const a=JSON.stringify([e.uri.toString(),t.uri.toString()]),l=JSON.stringify([e.id,t.id,e.getAlternativeVersionId(),t.getAlternativeVersionId(),JSON.stringify(i)]),c=h1.diffCache.get(a);if(c&&c.context===l)return c.result;const u=Nr.create(),h=await this.editorWorkerService.computeDiff(e.uri,t.uri,i,this.diffAlgorithm),d=u.elapsed();if(this.telemetryService.publicLog2("diffEditor.computeDiff",{timeMs:d,timedOut:(r=h==null?void 0:h.quitEarly)!==null&&r!==void 0?r:!0,detectedMoves:i.computeMoves?(o=h==null?void 0:h.moves.length)!==null&&o!==void 0?o:0:-1}),s.isCancellationRequested)return{changes:[],identical:!1,quitEarly:!0,moves:[]};if(!h)throw new Error("no diff result available");return h1.diffCache.size>10&&h1.diffCache.delete(h1.diffCache.keys().next().value),h1.diffCache.set(a,{result:h,context:l}),h}setOptions(e){var t;let i=!1;e.diffAlgorithm&&this.diffAlgorithm!==e.diffAlgorithm&&((t=this.diffAlgorithmOnDidChangeSubscription)===null||t===void 0||t.dispose(),this.diffAlgorithmOnDidChangeSubscription=void 0,this.diffAlgorithm=e.diffAlgorithm,typeof e.diffAlgorithm!="string"&&(this.diffAlgorithmOnDidChangeSubscription=e.diffAlgorithm.onDidChange(()=>this.onDidChangeEventEmitter.fire())),i=!0),i&&this.onDidChangeEventEmitter.fire()}};SP.diffCache=new Map;SP=h1=fZe([jte(1,Pc),jte(2,fa)],SP);var gZe=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},pZe=function(n,e){return function(t,i){e(t,i,n)}};const a1e=Bt("diffProviderFactoryService");let l7=class{constructor(e){this.instantiationService=e}createDiffProvider(e){return this.instantiationService.createInstance(SP,e)}};l7=gZe([pZe(0,at)],l7);jt(a1e,l7,1);class Mf{static trivial(e,t){return new Mf([new Xs(Nt.ofLength(e.length),Nt.ofLength(t.length))],!1)}static trivialTimedOut(e,t){return new Mf([new Xs(Nt.ofLength(e.length),Nt.ofLength(t.length))],!0)}constructor(e,t){this.diffs=e,this.hitTimeout=t}}class Xs{static invert(e,t){const i=[];return Uge(e,(s,r)=>{i.push(Xs.fromOffsetPairs(s?s.getEndExclusives():Wh.zero,r?r.getStarts():new Wh(t,(s?s.seq2Range.endExclusive-s.seq1Range.endExclusive:0)+t)))}),i}static fromOffsetPairs(e,t){return new Xs(new Nt(e.offset1,t.offset1),new Nt(e.offset2,t.offset2))}constructor(e,t){this.seq1Range=e,this.seq2Range=t}swap(){return new Xs(this.seq2Range,this.seq1Range)}toString(){return`${this.seq1Range} <-> ${this.seq2Range}`}join(e){return new Xs(this.seq1Range.join(e.seq1Range),this.seq2Range.join(e.seq2Range))}delta(e){return e===0?this:new Xs(this.seq1Range.delta(e),this.seq2Range.delta(e))}deltaStart(e){return e===0?this:new Xs(this.seq1Range.deltaStart(e),this.seq2Range.deltaStart(e))}deltaEnd(e){return e===0?this:new Xs(this.seq1Range.deltaEnd(e),this.seq2Range.deltaEnd(e))}intersect(e){const t=this.seq1Range.intersect(e.seq1Range),i=this.seq2Range.intersect(e.seq2Range);if(!(!t||!i))return new Xs(t,i)}getStarts(){return new Wh(this.seq1Range.start,this.seq2Range.start)}getEndExclusives(){return new Wh(this.seq1Range.endExclusive,this.seq2Range.endExclusive)}}class Wh{constructor(e,t){this.offset1=e,this.offset2=t}toString(){return`${this.offset1} <-> ${this.offset2}`}}Wh.zero=new Wh(0,0);Wh.max=new Wh(Number.MAX_SAFE_INTEGER,Number.MAX_SAFE_INTEGER);class XL{isValid(){return!0}}XL.instance=new XL;class mZe{constructor(e){if(this.timeout=e,this.startTime=Date.now(),this.valid=!0,e<=0)throw new an("timeout must be positive")}isValid(){if(!(Date.now()-this.startTime<this.timeout)&&this.valid){this.valid=!1;debugger}return this.valid}}class p3{constructor(e,t){this.width=e,this.height=t,this.array=[],this.array=new Array(e*t)}get(e,t){return this.array[e+t*this.width]}set(e,t,i){this.array[e+t*this.width]=i}}function c7(n){return n===32||n===9}class Ay{static getKey(e){let t=this.chrKeys.get(e);return t===void 0&&(t=this.chrKeys.size,this.chrKeys.set(e,t)),t}constructor(e,t,i){this.range=e,this.lines=t,this.source=i,this.histogram=[];let s=0;for(let r=e.startLineNumber-1;r<e.endLineNumberExclusive-1;r++){const o=t[r];for(let l=0;l<o.length;l++){s++;const c=o[l],u=Ay.getKey(c);this.histogram[u]=(this.histogram[u]||0)+1}s++;const a=Ay.getKey(` +`);this.histogram[a]=(this.histogram[a]||0)+1}this.totalCount=s}computeSimilarity(e){var t,i;let s=0;const r=Math.max(this.histogram.length,e.histogram.length);for(let o=0;o<r;o++)s+=Math.abs(((t=this.histogram[o])!==null&&t!==void 0?t:0)-((i=e.histogram[o])!==null&&i!==void 0?i:0));return 1-s/(this.totalCount+e.totalCount)}}Ay.chrKeys=new Map;class _Ze{compute(e,t,i=XL.instance,s){if(e.length===0||t.length===0)return Mf.trivial(e,t);const r=new p3(e.length,t.length),o=new p3(e.length,t.length),a=new p3(e.length,t.length);for(let g=0;g<e.length;g++)for(let p=0;p<t.length;p++){if(!i.isValid())return Mf.trivialTimedOut(e,t);const m=g===0?0:r.get(g-1,p),_=p===0?0:r.get(g,p-1);let b;e.getElement(g)===t.getElement(p)?(g===0||p===0?b=0:b=r.get(g-1,p-1),g>0&&p>0&&o.get(g-1,p-1)===3&&(b+=a.get(g-1,p-1)),b+=s?s(g,p):1):b=-1;const y=Math.max(m,_,b);if(y===b){const w=g>0&&p>0?a.get(g-1,p-1):0;a.set(g,p,w+1),o.set(g,p,3)}else y===m?(a.set(g,p,0),o.set(g,p,1)):y===_&&(a.set(g,p,0),o.set(g,p,2));r.set(g,p,y)}const l=[];let c=e.length,u=t.length;function h(g,p){(g+1!==c||p+1!==u)&&l.push(new Xs(new Nt(g+1,c),new Nt(p+1,u))),c=g,u=p}let d=e.length-1,f=t.length-1;for(;d>=0&&f>=0;)o.get(d,f)===3?(h(d,f),d--,f--):o.get(d,f)===1?d--:f--;return h(-1,-1),l.reverse(),new Mf(l,!1)}}class l1e{compute(e,t,i=XL.instance){if(e.length===0||t.length===0)return Mf.trivial(e,t);const s=e,r=t;function o(p,m){for(;p<s.length&&m<r.length&&s.getElement(p)===r.getElement(m);)p++,m++;return p}let a=0;const l=new vZe;l.set(0,o(0,0));const c=new bZe;c.set(0,l.get(0)===0?null:new qte(null,0,0,l.get(0)));let u=0;e:for(;;){if(a++,!i.isValid())return Mf.trivialTimedOut(s,r);const p=-Math.min(a,r.length+a%2),m=Math.min(a,s.length+a%2);for(u=p;u<=m;u+=2){const _=u===m?-1:l.get(u+1),b=u===p?-1:l.get(u-1)+1,y=Math.min(Math.max(_,b),s.length),w=y-u;if(y>s.length||w>r.length)continue;const S=o(y,w);l.set(u,S);const E=y===_?c.get(u+1):c.get(u-1);if(c.set(u,S!==y?new qte(E,y,w,S-y):E),l.get(u)===s.length&&l.get(u)-u===r.length)break e}}let h=c.get(u);const d=[];let f=s.length,g=r.length;for(;;){const p=h?h.x+h.length:0,m=h?h.y+h.length:0;if((p!==f||m!==g)&&d.push(new Xs(new Nt(p,f),new Nt(m,g))),!h)break;f=h.x,g=h.y,h=h.prev}return d.reverse(),new Mf(d,!1)}}class qte{constructor(e,t,i,s){this.prev=e,this.x=t,this.y=i,this.length=s}}class vZe{constructor(){this.positiveArr=new Int32Array(10),this.negativeArr=new Int32Array(10)}get(e){return e<0?(e=-e-1,this.negativeArr[e]):this.positiveArr[e]}set(e,t){if(e<0){if(e=-e-1,e>=this.negativeArr.length){const i=this.negativeArr;this.negativeArr=new Int32Array(i.length*2),this.negativeArr.set(i)}this.negativeArr[e]=t}else{if(e>=this.positiveArr.length){const i=this.positiveArr;this.positiveArr=new Int32Array(i.length*2),this.positiveArr.set(i)}this.positiveArr[e]=t}}}class bZe{constructor(){this.positiveArr=[],this.negativeArr=[]}get(e){return e<0?(e=-e-1,this.negativeArr[e]):this.positiveArr[e]}set(e,t){e<0?(e=-e-1,this.negativeArr[e]=t):this.positiveArr[e]=t}}class kP{constructor(e,t,i){this.lines=e,this.considerWhitespaceChanges=i,this.elements=[],this.firstCharOffsetByLine=[],this.additionalOffsetByLine=[];let s=!1;t.start>0&&t.endExclusive>=e.length&&(t=new Nt(t.start-1,t.endExclusive),s=!0),this.lineRange=t,this.firstCharOffsetByLine[0]=0;for(let r=this.lineRange.start;r<this.lineRange.endExclusive;r++){let o=e[r],a=0;if(s)a=o.length,o="",s=!1;else if(!i){const l=o.trimStart();a=o.length-l.length,o=l.trimEnd()}this.additionalOffsetByLine.push(a);for(let l=0;l<o.length;l++)this.elements.push(o.charCodeAt(l));r<e.length-1&&(this.elements.push(10),this.firstCharOffsetByLine[r-this.lineRange.start+1]=this.elements.length)}this.additionalOffsetByLine.push(0)}toString(){return`Slice: "${this.text}"`}get text(){return this.getText(new Nt(0,this.length))}getText(e){return this.elements.slice(e.start,e.endExclusive).map(t=>String.fromCharCode(t)).join("")}getElement(e){return this.elements[e]}get length(){return this.elements.length}getBoundaryScore(e){const t=Gte(e>0?this.elements[e-1]:-1),i=Gte(e<this.elements.length?this.elements[e]:-1);if(t===7&&i===8)return 0;let s=0;return t!==i&&(s+=10,t===0&&i===1&&(s+=1)),s+=Kte(t),s+=Kte(i),s}translateOffset(e){if(this.lineRange.isEmpty)return new he(this.lineRange.start+1,1);const t=PL(this.firstCharOffsetByLine,i=>i<=e);return new he(this.lineRange.start+t+1,e-this.firstCharOffsetByLine[t]+this.additionalOffsetByLine[t]+1)}translateRange(e){return M.fromPositions(this.translateOffset(e.start),this.translateOffset(e.endExclusive))}findWordContaining(e){if(e<0||e>=this.elements.length||!m3(this.elements[e]))return;let t=e;for(;t>0&&m3(this.elements[t-1]);)t--;let i=e;for(;i<this.elements.length&&m3(this.elements[i]);)i++;return new Nt(t,i)}countLinesIn(e){return this.translateOffset(e.endExclusive).lineNumber-this.translateOffset(e.start).lineNumber}isStronglyEqual(e,t){return this.elements[e]===this.elements[t]}extendToFullLines(e){var t,i;const s=(t=ky(this.firstCharOffsetByLine,o=>o<=e.start))!==null&&t!==void 0?t:0,r=(i=Qze(this.firstCharOffsetByLine,o=>e.endExclusive<=o))!==null&&i!==void 0?i:this.elements.length;return new Nt(s,r)}}function m3(n){return n>=97&&n<=122||n>=65&&n<=90||n>=48&&n<=57}const yZe={0:0,1:0,2:0,3:10,4:2,5:3,6:3,7:10,8:10};function Kte(n){return yZe[n]}function Gte(n){return n===10?8:n===13?7:c7(n)?6:n>=97&&n<=122?0:n>=65&&n<=90?1:n>=48&&n<=57?2:n===-1?3:n===44||n===59?5:4}function CZe(n,e,t,i,s,r){let{moves:o,excludedChanges:a}=SZe(n,e,t,r);if(!r.isValid())return[];const l=n.filter(u=>!a.has(u)),c=kZe(l,i,s,e,t,r);return r9(o,c),o=LZe(o),o=o.filter(u=>{const h=u.original.toOffsetRange().slice(e).map(f=>f.trim());return h.join(` +`).length>=15&&wZe(h,f=>f.length>=2)>=2}),o=xZe(n,o),o}function wZe(n,e){let t=0;for(const i of n)e(i)&&t++;return t}function SZe(n,e,t,i){const s=[],r=n.filter(l=>l.modified.isEmpty&&l.original.length>=3).map(l=>new Ay(l.original,e,l)),o=new Set(n.filter(l=>l.original.isEmpty&&l.modified.length>=3).map(l=>new Ay(l.modified,t,l))),a=new Set;for(const l of r){let c=-1,u;for(const h of o){const d=l.computeSimilarity(h);d>c&&(c=d,u=h)}if(c>.9&&u&&(o.delete(u),s.push(new vd(l.range,u.range)),a.add(l.source),a.add(u.source)),!i.isValid())return{moves:s,excludedChanges:a}}return{moves:s,excludedChanges:a}}function kZe(n,e,t,i,s,r){const o=[],a=new Yq;for(const d of n)for(let f=d.original.startLineNumber;f<d.original.endLineNumberExclusive-2;f++){const g=`${e[f-1]}:${e[f+1-1]}:${e[f+2-1]}`;a.add(g,{range:new xt(f,f+3)})}const l=[];n.sort(Nl(d=>d.modified.startLineNumber,Pf));for(const d of n){let f=[];for(let g=d.modified.startLineNumber;g<d.modified.endLineNumberExclusive-2;g++){const p=`${t[g-1]}:${t[g+1-1]}:${t[g+2-1]}`,m=new xt(g,g+3),_=[];a.forEach(p,({range:b})=>{for(const w of f)if(w.originalLineRange.endLineNumberExclusive+1===b.endLineNumberExclusive&&w.modifiedLineRange.endLineNumberExclusive+1===m.endLineNumberExclusive){w.originalLineRange=new xt(w.originalLineRange.startLineNumber,b.endLineNumberExclusive),w.modifiedLineRange=new xt(w.modifiedLineRange.startLineNumber,m.endLineNumberExclusive),_.push(w);return}const y={modifiedLineRange:m,originalLineRange:b};l.push(y),_.push(y)}),f=_}if(!r.isValid())return[]}l.sort(Kge(Nl(d=>d.modifiedLineRange.length,Pf)));const c=new cu,u=new cu;for(const d of l){const f=d.modifiedLineRange.startLineNumber-d.originalLineRange.startLineNumber,g=c.subtractFrom(d.modifiedLineRange),p=u.subtractFrom(d.originalLineRange).getWithDelta(f),m=g.getIntersection(p);for(const _ of m.ranges){if(_.length<3)continue;const b=_,y=_.delta(-f);o.push(new vd(y,b)),c.addRange(b),u.addRange(y)}}o.sort(Nl(d=>d.original.startLineNumber,Pf));const h=new LE(n);for(let d=0;d<o.length;d++){const f=o[d],g=h.findLastMonotonous(E=>E.original.startLineNumber<=f.original.startLineNumber),p=ky(n,E=>E.modified.startLineNumber<=f.modified.startLineNumber),m=Math.max(f.original.startLineNumber-g.original.startLineNumber,f.modified.startLineNumber-p.modified.startLineNumber),_=h.findLastMonotonous(E=>E.original.startLineNumber<f.original.endLineNumberExclusive),b=ky(n,E=>E.modified.startLineNumber<f.modified.endLineNumberExclusive),y=Math.max(_.original.endLineNumberExclusive-f.original.endLineNumberExclusive,b.modified.endLineNumberExclusive-f.modified.endLineNumberExclusive);let w;for(w=0;w<m;w++){const E=f.original.startLineNumber-w-1,L=f.modified.startLineNumber-w-1;if(E>i.length||L>s.length||c.contains(L)||u.contains(E)||!Yte(i[E-1],s[L-1],r))break}w>0&&(u.addRange(new xt(f.original.startLineNumber-w,f.original.startLineNumber)),c.addRange(new xt(f.modified.startLineNumber-w,f.modified.startLineNumber)));let S;for(S=0;S<y;S++){const E=f.original.endLineNumberExclusive+S,L=f.modified.endLineNumberExclusive+S;if(E>i.length||L>s.length||c.contains(L)||u.contains(E)||!Yte(i[E-1],s[L-1],r))break}S>0&&(u.addRange(new xt(f.original.endLineNumberExclusive,f.original.endLineNumberExclusive+S)),c.addRange(new xt(f.modified.endLineNumberExclusive,f.modified.endLineNumberExclusive+S))),(w>0||S>0)&&(o[d]=new vd(new xt(f.original.startLineNumber-w,f.original.endLineNumberExclusive+S),new xt(f.modified.startLineNumber-w,f.modified.endLineNumberExclusive+S)))}return o}function Yte(n,e,t){if(n.trim()===e.trim())return!0;if(n.length>300&&e.length>300)return!1;const s=new l1e().compute(new kP([n],new Nt(0,1),!1),new kP([e],new Nt(0,1),!1),t);let r=0;const o=Xs.invert(s.diffs,n.length);for(const u of o)u.seq1Range.forEach(h=>{c7(n.charCodeAt(h))||r++});function a(u){let h=0;for(let d=0;d<n.length;d++)c7(u.charCodeAt(d))||h++;return h}const l=a(n.length>e.length?n:e);return r/l>.6&&l>10}function LZe(n){if(n.length===0)return n;n.sort(Nl(t=>t.original.startLineNumber,Pf));const e=[n[0]];for(let t=1;t<n.length;t++){const i=e[e.length-1],s=n[t],r=s.original.startLineNumber-i.original.endLineNumberExclusive,o=s.modified.startLineNumber-i.modified.endLineNumberExclusive;if(r>=0&&o>=0&&r+o<=2){e[e.length-1]=i.join(s);continue}e.push(s)}return e}function xZe(n,e){const t=new LE(n);return e=e.filter(i=>{const s=t.findLastMonotonous(a=>a.original.startLineNumber<i.original.endLineNumberExclusive)||new vd(new xt(1,1),new xt(1,1)),r=ky(n,a=>a.modified.startLineNumber<i.modified.endLineNumberExclusive);return s!==r}),e}function u7(n,e,t){let i=t;return i=Zte(n,e,i),i=Zte(n,e,i),i=EZe(n,e,i),i}function Zte(n,e,t){if(t.length===0)return t;const i=[];i.push(t[0]);for(let r=1;r<t.length;r++){const o=i[i.length-1];let a=t[r];if(a.seq1Range.isEmpty||a.seq2Range.isEmpty){const l=a.seq1Range.start-o.seq1Range.endExclusive;let c;for(c=1;c<=l&&!(n.getElement(a.seq1Range.start-c)!==n.getElement(a.seq1Range.endExclusive-c)||e.getElement(a.seq2Range.start-c)!==e.getElement(a.seq2Range.endExclusive-c));c++);if(c--,c===l){i[i.length-1]=new Xs(new Nt(o.seq1Range.start,a.seq1Range.endExclusive-l),new Nt(o.seq2Range.start,a.seq2Range.endExclusive-l));continue}a=a.delta(-c)}i.push(a)}const s=[];for(let r=0;r<i.length-1;r++){const o=i[r+1];let a=i[r];if(a.seq1Range.isEmpty||a.seq2Range.isEmpty){const l=o.seq1Range.start-a.seq1Range.endExclusive;let c;for(c=0;c<l&&!(!n.isStronglyEqual(a.seq1Range.start+c,a.seq1Range.endExclusive+c)||!e.isStronglyEqual(a.seq2Range.start+c,a.seq2Range.endExclusive+c));c++);if(c===l){i[r+1]=new Xs(new Nt(a.seq1Range.start+l,o.seq1Range.endExclusive),new Nt(a.seq2Range.start+l,o.seq2Range.endExclusive));continue}c>0&&(a=a.delta(c))}s.push(a)}return i.length>0&&s.push(i[i.length-1]),s}function EZe(n,e,t){if(!n.getBoundaryScore||!e.getBoundaryScore)return t;for(let i=0;i<t.length;i++){const s=i>0?t[i-1]:void 0,r=t[i],o=i+1<t.length?t[i+1]:void 0,a=new Nt(s?s.seq1Range.start+1:0,o?o.seq1Range.endExclusive-1:n.length),l=new Nt(s?s.seq2Range.start+1:0,o?o.seq2Range.endExclusive-1:e.length);r.seq1Range.isEmpty?t[i]=Xte(r,n,e,a,l):r.seq2Range.isEmpty&&(t[i]=Xte(r.swap(),e,n,l,a).swap())}return t}function Xte(n,e,t,i,s){let o=1;for(;n.seq1Range.start-o>=i.start&&n.seq2Range.start-o>=s.start&&t.isStronglyEqual(n.seq2Range.start-o,n.seq2Range.endExclusive-o)&&o<100;)o++;o--;let a=0;for(;n.seq1Range.start+a<i.endExclusive&&n.seq2Range.endExclusive+a<s.endExclusive&&t.isStronglyEqual(n.seq2Range.start+a,n.seq2Range.endExclusive+a)&&a<100;)a++;if(o===0&&a===0)return n;let l=0,c=-1;for(let u=-o;u<=a;u++){const h=n.seq2Range.start+u,d=n.seq2Range.endExclusive+u,f=n.seq1Range.start+u,g=e.getBoundaryScore(f)+t.getBoundaryScore(h)+t.getBoundaryScore(d);g>c&&(c=g,l=u)}return n.delta(l)}function DZe(n,e,t){const i=[];for(const s of t){const r=i[i.length-1];if(!r){i.push(s);continue}s.seq1Range.start-r.seq1Range.endExclusive<=2||s.seq2Range.start-r.seq2Range.endExclusive<=2?i[i.length-1]=new Xs(r.seq1Range.join(s.seq1Range),r.seq2Range.join(s.seq2Range)):i.push(s)}return i}function IZe(n,e,t){const i=[];let s;function r(){if(!s)return;const a=s.s1Range.length-s.deleted;s.s2Range.length-s.added,Math.max(s.deleted,s.added)+(s.count-1)>a&&i.push(new Xs(s.s1Range,s.s2Range)),s=void 0}for(const a of t){let l=function(f,g){var p,m,_,b;if(!s||!s.s1Range.containsRange(f)||!s.s2Range.containsRange(g))if(s&&!(s.s1Range.endExclusive<f.start&&s.s2Range.endExclusive<g.start)){const S=Nt.tryCreate(s.s1Range.endExclusive,f.start),E=Nt.tryCreate(s.s2Range.endExclusive,g.start);s.deleted+=(p=S==null?void 0:S.length)!==null&&p!==void 0?p:0,s.added+=(m=E==null?void 0:E.length)!==null&&m!==void 0?m:0,s.s1Range=s.s1Range.join(f),s.s2Range=s.s2Range.join(g)}else r(),s={added:0,deleted:0,count:0,s1Range:f,s2Range:g};const y=f.intersect(a.seq1Range),w=g.intersect(a.seq2Range);s.count++,s.deleted+=(_=y==null?void 0:y.length)!==null&&_!==void 0?_:0,s.added+=(b=w==null?void 0:w.length)!==null&&b!==void 0?b:0};const c=n.findWordContaining(a.seq1Range.start-1),u=e.findWordContaining(a.seq2Range.start-1),h=n.findWordContaining(a.seq1Range.endExclusive),d=e.findWordContaining(a.seq2Range.endExclusive);c&&h&&u&&d&&c.equals(h)&&u.equals(d)?l(c,u):(c&&u&&l(c,u),h&&d&&l(h,d))}return r(),TZe(t,i)}function TZe(n,e){const t=[];for(;n.length>0||e.length>0;){const i=n[0],s=e[0];let r;i&&(!s||i.seq1Range.start<s.seq1Range.start)?r=n.shift():r=e.shift(),t.length>0&&t[t.length-1].seq1Range.endExclusive>=r.seq1Range.start?t[t.length-1]=t[t.length-1].join(r):t.push(r)}return t}function NZe(n,e,t){let i=t;if(i.length===0)return i;let s=0,r;do{r=!1;const o=[i[0]];for(let a=1;a<i.length;a++){let l=function(d,f){const g=new Nt(u.seq1Range.endExclusive,c.seq1Range.start);return n.getText(g).replace(/\s/g,"").length<=4&&(d.seq1Range.length+d.seq2Range.length>5||f.seq1Range.length+f.seq2Range.length>5)};const c=i[a],u=o[o.length-1];l(u,c)?(r=!0,o[o.length-1]=o[o.length-1].join(c)):o.push(c)}i=o}while(s++<10&&r);return i}function AZe(n,e,t){let i=t;if(i.length===0)return i;let s=0,r;do{r=!1;const a=[i[0]];for(let l=1;l<i.length;l++){let c=function(f,g){const p=new Nt(h.seq1Range.endExclusive,u.seq1Range.start);if(n.countLinesIn(p)>5||p.length>500)return!1;const _=n.getText(p).trim();if(_.length>20||_.split(/\r\n|\r|\n/).length>1)return!1;const b=n.countLinesIn(f.seq1Range),y=f.seq1Range.length,w=e.countLinesIn(f.seq2Range),S=f.seq2Range.length,E=n.countLinesIn(g.seq1Range),L=g.seq1Range.length,k=e.countLinesIn(g.seq2Range),x=g.seq2Range.length,I=2*40+50;function N(T){return Math.min(T,I)}return Math.pow(Math.pow(N(b*40+y),1.5)+Math.pow(N(w*40+S),1.5),1.5)+Math.pow(Math.pow(N(E*40+L),1.5)+Math.pow(N(k*40+x),1.5),1.5)>(I**1.5)**1.5*1.3};const u=i[l],h=a[a.length-1];c(h,u)?(r=!0,a[a.length-1]=a[a.length-1].join(u)):a.push(u)}i=a}while(s++<10&&r);const o=[];return y7e(i,(a,l,c)=>{let u=l;function h(_){return _.length>0&&_.trim().length<=3&&l.seq1Range.length+l.seq2Range.length>100}const d=n.extendToFullLines(l.seq1Range),f=n.getText(new Nt(d.start,l.seq1Range.start));h(f)&&(u=u.deltaStart(-f.length));const g=n.getText(new Nt(l.seq1Range.endExclusive,d.endExclusive));h(g)&&(u=u.deltaEnd(g.length));const p=Xs.fromOffsetPairs(a?a.getEndExclusives():Wh.zero,c?c.getStarts():Wh.max),m=u.intersect(p);o.push(m)}),o}class hN{constructor(e,t,i){this.changes=e,this.moves=t,this.hitTimeout=i}}class c1e{constructor(e,t){this.lineRangeMapping=e,this.changes=t}}let Qte=class{constructor(e,t){this.trimmedHash=e,this.lines=t}getElement(e){return this.trimmedHash[e]}get length(){return this.trimmedHash.length}getBoundaryScore(e){const t=e===0?0:Jte(this.lines[e-1]),i=e===this.lines.length?0:Jte(this.lines[e]);return 1e3-(t+i)}getText(e){return this.lines.slice(e.start,e.endExclusive).join(` +`)}isStronglyEqual(e,t){return this.lines[e]===this.lines[t]}};function Jte(n){let e=0;for(;e<n.length&&(n.charCodeAt(e)===32||n.charCodeAt(e)===9);)e++;return e}class u1e{constructor(){this.dynamicProgrammingDiffing=new _Ze,this.myersDiffingAlgorithm=new l1e}computeDiff(e,t,i){if(e.length<=1&&On(e,t,(S,E)=>S===E))return new hN([],[],!1);if(e.length===1&&e[0].length===0||t.length===1&&t[0].length===0)return new hN([new Hl(new xt(1,e.length+1),new xt(1,t.length+1),[new om(new M(1,1,e.length,e[0].length+1),new M(1,1,t.length,t[0].length+1))])],[],!1);const s=i.maxComputationTimeMs===0?XL.instance:new mZe(i.maxComputationTimeMs),r=!i.ignoreTrimWhitespace,o=new Map;function a(S){let E=o.get(S);return E===void 0&&(E=o.size,o.set(S,E)),E}const l=e.map(S=>a(S.trim())),c=t.map(S=>a(S.trim())),u=new Qte(l,e),h=new Qte(c,t),d=u.length+h.length<1700?this.dynamicProgrammingDiffing.compute(u,h,s,(S,E)=>e[S]===t[E]?t[E].length===0?.1:1+Math.log(1+t[E].length):.99):this.myersDiffingAlgorithm.compute(u,h);let f=d.diffs,g=d.hitTimeout;f=u7(u,h,f),f=NZe(u,h,f);const p=[],m=S=>{if(r)for(let E=0;E<S;E++){const L=_+E,k=b+E;if(e[L]!==t[k]){const x=this.refineDiff(e,t,new Xs(new Nt(L,L+1),new Nt(k,k+1)),s,r);for(const I of x.mappings)p.push(I);x.hitTimeout&&(g=!0)}}};let _=0,b=0;for(const S of f){_L(()=>S.seq1Range.start-_===S.seq2Range.start-b);const E=S.seq1Range.start-_;m(E),_=S.seq1Range.endExclusive,b=S.seq2Range.endExclusive;const L=this.refineDiff(e,t,S,s,r);L.hitTimeout&&(g=!0);for(const k of L.mappings)p.push(k)}m(e.length-_);const y=eie(p,e,t);let w=[];return i.computeMoves&&(w=this.computeMoves(y,e,t,l,c,s,r)),_L(()=>{function S(L,k){if(L.lineNumber<1||L.lineNumber>k.length)return!1;const x=k[L.lineNumber-1];return!(L.column<1||L.column>x.length+1)}function E(L,k){return!(L.startLineNumber<1||L.startLineNumber>k.length+1||L.endLineNumberExclusive<1||L.endLineNumberExclusive>k.length+1)}for(const L of y){if(!L.innerChanges)return!1;for(const k of L.innerChanges)if(!(S(k.modifiedRange.getStartPosition(),t)&&S(k.modifiedRange.getEndPosition(),t)&&S(k.originalRange.getStartPosition(),e)&&S(k.originalRange.getEndPosition(),e)))return!1;if(!E(L.modified,t)||!E(L.original,e))return!1}return!0}),new hN(y,w,g)}computeMoves(e,t,i,s,r,o,a){return CZe(e,t,i,s,r,o).map(u=>{const h=this.refineDiff(t,i,new Xs(u.original.toOffsetRange(),u.modified.toOffsetRange()),o,a),d=eie(h.mappings,t,i,!0);return new c1e(u,d)})}refineDiff(e,t,i,s,r){const o=new kP(e,i.seq1Range,r),a=new kP(t,i.seq2Range,r),l=o.length+a.length<500?this.dynamicProgrammingDiffing.compute(o,a,s):this.myersDiffingAlgorithm.compute(o,a,s);let c=l.diffs;return c=u7(o,a,c),c=IZe(o,a,c),c=DZe(o,a,c),c=AZe(o,a,c),{mappings:c.map(h=>new om(o.translateRange(h.seq1Range),a.translateRange(h.seq2Range))),hitTimeout:l.hitTimeout}}}function eie(n,e,t,i=!1){const s=[];for(const r of zge(n.map(o=>PZe(o,e,t)),(o,a)=>o.original.overlapOrTouch(a.original)||o.modified.overlapOrTouch(a.modified))){const o=r[0],a=r[r.length-1];s.push(new Hl(o.original.join(a.original),o.modified.join(a.modified),r.map(l=>l.innerChanges[0])))}return _L(()=>!i&&s.length>0&&s[0].original.startLineNumber!==s[0].modified.startLineNumber?!1:Age(s,(r,o)=>o.original.startLineNumber-r.original.endLineNumberExclusive===o.modified.startLineNumber-r.modified.endLineNumberExclusive&&r.original.endLineNumberExclusive<o.original.startLineNumber&&r.modified.endLineNumberExclusive<o.modified.startLineNumber)),s}function PZe(n,e,t){let i=0,s=0;n.modifiedRange.endColumn===1&&n.originalRange.endColumn===1&&n.originalRange.startLineNumber+i<=n.originalRange.endLineNumber&&n.modifiedRange.startLineNumber+i<=n.modifiedRange.endLineNumber&&(s=-1),n.modifiedRange.startColumn-1>=t[n.modifiedRange.startLineNumber-1].length&&n.originalRange.startColumn-1>=e[n.originalRange.startLineNumber-1].length&&n.originalRange.startLineNumber<=n.originalRange.endLineNumber+s&&n.modifiedRange.startLineNumber<=n.modifiedRange.endLineNumber+s&&(i=1);const r=new xt(n.originalRange.startLineNumber+i,n.originalRange.endLineNumber+1+s),o=new xt(n.modifiedRange.startLineNumber+i,n.modifiedRange.endLineNumber+1+s);return new Hl(r,o,[n])}var RZe=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},MZe=function(n,e){return function(t,i){e(t,i,n)}};let h7=class extends pe{setActiveMovedText(e){this._activeMovedText.set(e,void 0)}constructor(e,t,i){super(),this.model=e,this._options=t,this._diffProviderFactoryService=i,this._isDiffUpToDate=si(this,!1),this.isDiffUpToDate=this._isDiffUpToDate,this._diff=si(this,void 0),this.diff=this._diff,this._unchangedRegions=si(this,{regions:[],originalDecorationIds:[],modifiedDecorationIds:[]}),this.unchangedRegions=St(this,a=>this._options.hideUnchangedRegions.read(a)?this._unchangedRegions.read(a).regions:(ln(l=>{for(const c of this._unchangedRegions.get().regions)c.collapseAll(l)}),[])),this.movedTextToCompare=si(this,void 0),this._activeMovedText=si(this,void 0),this._hoveredMovedText=si(this,void 0),this.activeMovedText=St(this,a=>{var l,c;return(c=(l=this.movedTextToCompare.read(a))!==null&&l!==void 0?l:this._hoveredMovedText.read(a))!==null&&c!==void 0?c:this._activeMovedText.read(a)}),this._cancellationTokenSource=new es,this._diffProvider=St(this,a=>{const l=this._diffProviderFactoryService.createDiffProvider({diffAlgorithm:this._options.diffAlgorithm.read(a)}),c=Fa("onDidChange",l.onDidChange);return{diffProvider:l,onChangeSignal:c}}),this._register(st(()=>this._cancellationTokenSource.cancel()));const s=Gq("contentChangedSignal"),r=this._register(new Ei(()=>s.trigger(void 0),200)),o=(a,l,c)=>{const u=LP.fromDiffs(a.changes,e.original.getLineCount(),e.modified.getLineCount(),this._options.hideUnchangedRegionsMinimumLineCount.read(c),this._options.hideUnchangedRegionsContextLineCount.read(c)),h=this._unchangedRegions.get(),d=h.originalDecorationIds.map(m=>e.original.getDecorationRange(m)).map(m=>m?xt.fromRange(m):void 0),f=h.modifiedDecorationIds.map(m=>e.modified.getDecorationRange(m)).map(m=>m?xt.fromRange(m):void 0),g=e.original.deltaDecorations(h.originalDecorationIds,u.map(m=>({range:m.originalUnchangedRange.toInclusiveRange(),options:{description:"unchanged"}}))),p=e.modified.deltaDecorations(h.modifiedDecorationIds,u.map(m=>({range:m.modifiedUnchangedRange.toInclusiveRange(),options:{description:"unchanged"}})));for(const m of u)for(let _=0;_<h.regions.length;_++)if(d[_]&&m.originalUnchangedRange.intersectsStrict(d[_])&&f[_]&&m.modifiedUnchangedRange.intersectsStrict(f[_])){m.setHiddenModifiedRange(h.regions[_].getHiddenModifiedRange(void 0),l);break}this._unchangedRegions.set({regions:u,originalDecorationIds:g,modifiedDecorationIds:p},l)};this._register(e.modified.onDidChangeContent(a=>{if(this._diff.get()){const c=Ef.fromModelContentChanges(a.changes);this._lastDiff,e.original,e.modified}this._isDiffUpToDate.set(!1,void 0),r.schedule()})),this._register(e.original.onDidChangeContent(a=>{if(this._diff.get()){const c=Ef.fromModelContentChanges(a.changes);this._lastDiff,e.original,e.modified}this._isDiffUpToDate.set(!1,void 0),r.schedule()})),this._register(rg(async(a,l)=>{var c,u;this._options.hideUnchangedRegionsMinimumLineCount.read(a),this._options.hideUnchangedRegionsContextLineCount.read(a),r.cancel(),s.read(a);const h=this._diffProvider.read(a);h.onChangeSignal.read(a),dh(u1e,a),dh(u7,a),this._isDiffUpToDate.set(!1,void 0);let d=[];l.add(e.original.onDidChangeContent(p=>{const m=Ef.fromModelContentChanges(p.changes);d=aP(d,m)}));let f=[];l.add(e.modified.onDidChangeContent(p=>{const m=Ef.fromModelContentChanges(p.changes);f=aP(f,m)}));let g=await h.diffProvider.computeDiff(e.original,e.modified,{ignoreTrimWhitespace:this._options.ignoreTrimWhitespace.read(a),maxComputationTimeMs:this._options.maxComputationTimeMs.read(a),computeMoves:this._options.showMoves.read(a)},this._cancellationTokenSource.token);this._cancellationTokenSource.token.isCancellationRequested||(g=OZe(g,e.original,e.modified),g=(c=(e.original,e.modified,void 0))!==null&&c!==void 0?c:g,g=(u=(e.original,e.modified,void 0))!==null&&u!==void 0?u:g,ln(p=>{o(g,p),this._lastDiff=g;const m=dK.fromDiffResult(g);this._diff.set(m,p),this._isDiffUpToDate.set(!0,p);const _=this.movedTextToCompare.get();this.movedTextToCompare.set(_?this._lastDiff.moves.find(b=>b.lineRangeMapping.modified.intersect(_.lineRangeMapping.modified)):void 0,p)}))}))}ensureModifiedLineIsVisible(e,t){var i;if(((i=this.diff.get())===null||i===void 0?void 0:i.mappings.length)===0)return;const s=this._unchangedRegions.get().regions;for(const r of s)if(r.getHiddenModifiedRange(void 0).contains(e)){r.showModifiedLine(e,t);return}}ensureOriginalLineIsVisible(e,t){var i;if(((i=this.diff.get())===null||i===void 0?void 0:i.mappings.length)===0)return;const s=this._unchangedRegions.get().regions;for(const r of s)if(r.getHiddenOriginalRange(void 0).contains(e)){r.showOriginalLine(e,t);return}}async waitForDiff(){await KKe(this.isDiffUpToDate,e=>e)}serializeState(){return{collapsedRegions:this._unchangedRegions.get().regions.map(t=>({range:t.getHiddenModifiedRange(void 0).serialize()}))}}restoreSerializedState(e){const t=e.collapsedRegions.map(s=>xt.deserialize(s.range)),i=this._unchangedRegions.get();ln(s=>{for(const r of i.regions)for(const o of t)if(r.modifiedUnchangedRange.intersect(o)){r.setHiddenModifiedRange(o,s);break}})}};h7=RZe([MZe(2,a1e)],h7);function OZe(n,e,t){return{changes:n.changes.map(i=>new Hl(i.original,i.modified,i.innerChanges?i.innerChanges.map(s=>FZe(s,e,t)):void 0)),moves:n.moves,identical:n.identical,quitEarly:n.quitEarly}}function FZe(n,e,t){let i=n.originalRange,s=n.modifiedRange;return(i.endColumn!==1||s.endColumn!==1)&&i.endColumn===e.getLineMaxColumn(i.endLineNumber)&&s.endColumn===t.getLineMaxColumn(s.endLineNumber)&&i.endLineNumber<e.getLineCount()&&s.endLineNumber<t.getLineCount()&&(i=i.setEndPosition(i.endLineNumber+1,1),s=s.setEndPosition(s.endLineNumber+1,1)),new om(i,s)}class dK{static fromDiffResult(e){return new dK(e.changes.map(t=>new h1e(t)),e.moves||[],e.identical,e.quitEarly)}constructor(e,t,i,s){this.mappings=e,this.movedTexts=t,this.identical=i,this.quitEarly=s}}class h1e{constructor(e){this.lineRangeMapping=e}}class LP{static fromDiffs(e,t,i,s,r){const o=Hl.inverse(e,t,i),a=[];for(const l of o){let c=l.original.startLineNumber,u=l.modified.startLineNumber,h=l.original.length;const d=c===1&&u===1,f=c+h===t+1&&u+h===i+1;(d||f)&&h>=r+s?(d&&!f&&(h-=r),f&&!d&&(c+=r,u+=r,h-=r),a.push(new LP(c,u,h,0,0))):h>=r*2+s&&(c+=r,u+=r,h-=r*2,a.push(new LP(c,u,h,0,0)))}return a}get originalUnchangedRange(){return xt.ofLength(this.originalLineNumber,this.lineCount)}get modifiedUnchangedRange(){return xt.ofLength(this.modifiedLineNumber,this.lineCount)}constructor(e,t,i,s,r){this.originalLineNumber=e,this.modifiedLineNumber=t,this.lineCount=i,this._visibleLineCountTop=si(this,0),this.visibleLineCountTop=this._visibleLineCountTop,this._visibleLineCountBottom=si(this,0),this.visibleLineCountBottom=this._visibleLineCountBottom,this._shouldHideControls=St(this,o=>this.visibleLineCountTop.read(o)+this.visibleLineCountBottom.read(o)===this.lineCount&&!this.isDragged.read(o)),this.isDragged=si(this,void 0),this._visibleLineCountTop.set(s,void 0),this._visibleLineCountBottom.set(r,void 0)}shouldHideControls(e){return this._shouldHideControls.read(e)}getHiddenOriginalRange(e){return xt.ofLength(this.originalLineNumber+this._visibleLineCountTop.read(e),this.lineCount-this._visibleLineCountTop.read(e)-this._visibleLineCountBottom.read(e))}getHiddenModifiedRange(e){return xt.ofLength(this.modifiedLineNumber+this._visibleLineCountTop.read(e),this.lineCount-this._visibleLineCountTop.read(e)-this._visibleLineCountBottom.read(e))}setHiddenModifiedRange(e,t){const i=e.startLineNumber-this.modifiedLineNumber,s=this.modifiedLineNumber+this.lineCount-e.endLineNumberExclusive;this.setState(i,s,t)}getMaxVisibleLineCountTop(){return this.lineCount-this._visibleLineCountBottom.get()}getMaxVisibleLineCountBottom(){return this.lineCount-this._visibleLineCountTop.get()}showMoreAbove(e=10,t){const i=this.getMaxVisibleLineCountTop();this._visibleLineCountTop.set(Math.min(this._visibleLineCountTop.get()+e,i),t)}showMoreBelow(e=10,t){const i=this.lineCount-this._visibleLineCountTop.get();this._visibleLineCountBottom.set(Math.min(this._visibleLineCountBottom.get()+e,i),t)}showAll(e){this._visibleLineCountBottom.set(this.lineCount-this._visibleLineCountTop.get(),e)}showModifiedLine(e,t){const i=e+1-(this.modifiedLineNumber+this._visibleLineCountTop.get()),s=this.modifiedLineNumber-this._visibleLineCountBottom.get()+this.lineCount-e;i<s?this._visibleLineCountTop.set(this._visibleLineCountTop.get()+i,t):this._visibleLineCountBottom.set(this._visibleLineCountBottom.get()+s,t)}showOriginalLine(e,t){const i=e-this.originalLineNumber,s=this.originalLineNumber+this.lineCount-e;i<s?this._visibleLineCountTop.set(Math.min(this._visibleLineCountTop.get()+s-i,this.getMaxVisibleLineCountTop()),t):this._visibleLineCountBottom.set(Math.min(this._visibleLineCountBottom.get()+i-s,this.getMaxVisibleLineCountBottom()),t)}collapseAll(e){this._visibleLineCountTop.set(0,e),this._visibleLineCountBottom.set(0,e)}setState(e,t,i){e=Math.max(Math.min(e,this.lineCount),0),t=Math.max(Math.min(t,this.lineCount-e),0),this._visibleLineCountTop.set(e,i),this._visibleLineCountBottom.set(t,i)}}class BZe extends pe{get visibility(){return this._visibility}set visibility(e){this._visibility!==e&&(this._visibility=e,this._diffActions.style.visibility=e?"visible":"hidden")}constructor(e,t,i,s,r,o,a,l,c){super(),this._getViewZoneId=e,this._marginDomNode=t,this._modifiedEditor=i,this._diff=s,this._editor=r,this._viewLineCounts=o,this._originalTextModel=a,this._contextMenuService=l,this._clipboardService=c,this._visibility=!1,this._marginDomNode.style.zIndex="10",this._diffActions=document.createElement("div"),this._diffActions.className=nt.asClassName(Pe.lightBulb)+" lightbulb-glyph",this._diffActions.style.position="absolute";const u=this._modifiedEditor.getOption(66);this._diffActions.style.right="0px",this._diffActions.style.visibility="hidden",this._diffActions.style.height=`${u}px`,this._diffActions.style.lineHeight=`${u}px`,this._marginDomNode.appendChild(this._diffActions);let h=0;const d=i.getOption(126)&&!Du,f=(g,p)=>{var m;this._contextMenuService.showContextMenu({domForShadowRoot:d&&(m=i.getDomNode())!==null&&m!==void 0?m:void 0,getAnchor:()=>({x:g,y:p}),getActions:()=>{const _=[],b=s.modified.isEmpty;return _.push(new ho("diff.clipboard.copyDeletedContent",b?s.original.length>1?v("diff.clipboard.copyDeletedLinesContent.label","Copy deleted lines"):v("diff.clipboard.copyDeletedLinesContent.single.label","Copy deleted line"):s.original.length>1?v("diff.clipboard.copyChangedLinesContent.label","Copy changed lines"):v("diff.clipboard.copyChangedLinesContent.single.label","Copy changed line"),void 0,!0,async()=>{const w=this._originalTextModel.getValueInRange(s.original.toExclusiveRange());await this._clipboardService.writeText(w)})),s.original.length>1&&_.push(new ho("diff.clipboard.copyDeletedLineContent",b?v("diff.clipboard.copyDeletedLineContent.label","Copy deleted line ({0})",s.original.startLineNumber+h):v("diff.clipboard.copyChangedLineContent.label","Copy changed line ({0})",s.original.startLineNumber+h),void 0,!0,async()=>{let w=this._originalTextModel.getLineContent(s.original.startLineNumber+h);w===""&&(w=this._originalTextModel.getEndOfLineSequence()===0?` +`:`\r +`),await this._clipboardService.writeText(w)})),i.getOption(90)||_.push(new ho("diff.inline.revertChange",v("diff.inline.revertChange.label","Revert this change"),void 0,!0,async()=>{this._editor.revert(this._diff)})),_},autoSelectFirstItem:!0})};this._register(Mn(this._diffActions,"mousedown",g=>{if(!g.leftButton)return;const{top:p,height:m}=ys(this._diffActions),_=Math.floor(u/3);g.preventDefault(),f(g.posx,p+m+_)})),this._register(i.onMouseMove(g=>{(g.target.type===8||g.target.type===5)&&g.target.detail.viewZoneId===this._getViewZoneId()?(h=this._updateLightBulbPosition(this._marginDomNode,g.event.browserEvent.y,u),this.visibility=!0):this.visibility=!1})),this._register(i.onMouseDown(g=>{g.event.leftButton&&(g.target.type===8||g.target.type===5)&&g.target.detail.viewZoneId===this._getViewZoneId()&&(g.event.preventDefault(),h=this._updateLightBulbPosition(this._marginDomNode,g.event.browserEvent.y,u),f(g.event.posx,g.event.posy+u))}))}_updateLightBulbPosition(e,t,i){const{top:s}=ys(e),r=t-s,o=Math.floor(r/i),a=o*i;if(this._diffActions.style.top=`${a}px`,this._viewLineCounts){let l=0;for(let c=0;c<this._viewLineCounts.length;c++)if(l+=this._viewLineCounts[c],o<l)return c}return o}}const tie=sg("diffEditorWidget",{createHTML:n=>n});function WZe(n,e,t,i){_r(i,e.fontInfo);const s=t.length>0,r=new IC(1e4);let o=0,a=0;const l=[];for(let d=0;d<n.lineTokens.length;d++){const f=d+1,g=n.lineTokens[d],p=n.lineBreakData[d],m=ia.filter(t,f,1,Number.MAX_SAFE_INTEGER);if(p){let _=0;for(const b of p.breakOffsets){const y=g.sliceAndInflate(_,b,0);o=Math.max(o,iie(a,y,ia.extractWrapped(m,_,b),s,n.mightContainNonBasicASCII,n.mightContainRTL,e,r)),a++,_=b}l.push(p.breakOffsets.length)}else l.push(1),o=Math.max(o,iie(a,g,m,s,n.mightContainNonBasicASCII,n.mightContainRTL,e,r)),a++}o+=e.scrollBeyondLastColumn;const c=r.build(),u=tie?tie.createHTML(c):c;i.innerHTML=u;const h=o*e.typicalHalfwidthCharacterWidth;return{heightInLines:a,minWidthInPx:h,viewLineCounts:l}}class VZe{constructor(e,t,i,s){this.lineTokens=e,this.lineBreakData=t,this.mightContainNonBasicASCII=i,this.mightContainRTL=s}}class fK{static fromEditor(e){var t;const i=e.getOptions(),s=i.get(50),r=i.get(143);return new fK(((t=e.getModel())===null||t===void 0?void 0:t.getOptions().tabSize)||0,s,i.get(33),s.typicalHalfwidthCharacterWidth,i.get(103),i.get(66),r.decorationsWidth,i.get(116),i.get(98),i.get(93),i.get(51))}constructor(e,t,i,s,r,o,a,l,c,u,h){this.tabSize=e,this.fontInfo=t,this.disableMonospaceOptimizations=i,this.typicalHalfwidthCharacterWidth=s,this.scrollBeyondLastColumn=r,this.lineHeight=o,this.lineDecorationsWidth=a,this.stopRenderingLineAfter=l,this.renderWhitespace=c,this.renderControlCharacters=u,this.fontLigatures=h}}function iie(n,e,t,i,s,r,o,a){a.appendString('<div class="view-line'),i||a.appendString(" char-delete"),a.appendString('" style="top:'),a.appendString(String(n*o.lineHeight)),a.appendString('px;width:1000000px;">');const l=e.getLineContent(),c=Ja.isBasicASCII(l,s),u=Ja.containsRTL(l,c,r),h=yE(new Am(o.fontInfo.isMonospace&&!o.disableMonospaceOptimizations,o.fontInfo.canUseHalfwidthRightwardsArrow,l,!1,c,u,0,e,t,o.tabSize,0,o.fontInfo.spaceWidth,o.fontInfo.middotWidth,o.fontInfo.wsmiddotWidth,o.stopRenderingLineAfter,o.renderWhitespace,o.renderControlCharacters,o.fontLigatures!==Oa.OFF,null),a);return a.appendString("</div>"),h.characterMapping.getHorizontalOffset(h.characterMapping.length)}const ag=Bt("clipboardService"),lg=Bt("contextViewService"),zl=Bt("contextMenuService");var HZe=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},nie=function(n,e){return function(t,i){e(t,i,n)}};let d7=class extends pe{constructor(e,t,i,s,r,o,a,l,c,u){super(),this._targetWindow=e,this._editors=t,this._diffModel=i,this._options=s,this._diffEditorWidget=r,this._canIgnoreViewZoneUpdateEvent=o,this._origViewZonesToIgnore=a,this._modViewZonesToIgnore=l,this._clipboardService=c,this._contextMenuService=u,this._originalTopPadding=si(this,0),this._originalScrollOffset=si(this,0),this._originalScrollOffsetAnimated=Nte(this._targetWindow,this._originalScrollOffset,this._store),this._modifiedTopPadding=si(this,0),this._modifiedScrollOffset=si(this,0),this._modifiedScrollOffsetAnimated=Nte(this._targetWindow,this._modifiedScrollOffset,this._store);const h=si("invalidateAlignmentsState",0),d=this._register(new Ei(()=>{h.set(h.get()+1,void 0)},0));this._register(this._editors.original.onDidChangeViewZones(y=>{this._canIgnoreViewZoneUpdateEvent()||d.schedule()})),this._register(this._editors.modified.onDidChangeViewZones(y=>{this._canIgnoreViewZoneUpdateEvent()||d.schedule()})),this._register(this._editors.original.onDidChangeConfiguration(y=>{(y.hasChanged(144)||y.hasChanged(66))&&d.schedule()})),this._register(this._editors.modified.onDidChangeConfiguration(y=>{(y.hasChanged(144)||y.hasChanged(66))&&d.schedule()}));const f=this._diffModel.map(y=>y?Pn(y.model.original.onDidChangeTokens,()=>y.model.original.tokenization.backgroundTokenizationState===2):void 0).map((y,w)=>y==null?void 0:y.read(w)),g=St(y=>{const w=this._diffModel.read(y),S=w==null?void 0:w.diff.read(y);if(!w||!S)return null;h.read(y);const L=this._options.renderSideBySide.read(y);return sie(this._editors.original,this._editors.modified,S.mappings,this._origViewZonesToIgnore,this._modViewZonesToIgnore,L)}),p=St(y=>{var w;const S=(w=this._diffModel.read(y))===null||w===void 0?void 0:w.movedTextToCompare.read(y);if(!S)return null;h.read(y);const E=S.changes.map(L=>new h1e(L));return sie(this._editors.original,this._editors.modified,E,this._origViewZonesToIgnore,this._modViewZonesToIgnore,!0)});function m(){const y=document.createElement("div");return y.className="diagonal-fill",y}const _=this._register(new xe);this.viewZones=RC(this,(y,w)=>{var S,E,L,k,x,I,N,T;_.clear();const P=g.read(y)||[],R=[],F=[],j=this._modifiedTopPadding.read(y);j>0&&F.push({afterLineNumber:0,domNode:document.createElement("div"),heightInPx:j,showInHiddenAreas:!0,suppressMouseDown:!0});const K=this._originalTopPadding.read(y);K>0&&R.push({afterLineNumber:0,domNode:document.createElement("div"),heightInPx:K,showInHiddenAreas:!0,suppressMouseDown:!0});const Z=this._options.renderSideBySide.read(y),q=Z||(S=this._editors.modified._getViewModel())===null||S===void 0?void 0:S.createLineBreaksComputer();if(q){for(const J of P)if(J.diff)for(let be=J.originalRange.startLineNumber;be<J.originalRange.endLineNumberExclusive;be++)q==null||q.addRequest(this._editors.original.getModel().getLineContent(be),null,null)}const re=(E=q==null?void 0:q.finalize())!==null&&E!==void 0?E:[];let G=0;const W=this._editors.modified.getOption(66),Y=(L=this._diffModel.read(y))===null||L===void 0?void 0:L.movedTextToCompare.read(y),X=(x=(k=this._editors.original.getModel())===null||k===void 0?void 0:k.mightContainNonBasicASCII())!==null&&x!==void 0?x:!1,z=(N=(I=this._editors.original.getModel())===null||I===void 0?void 0:I.mightContainRTL())!==null&&N!==void 0?N:!1,le=fK.fromEditor(this._editors.modified);for(const J of P)if(J.diff&&!Z){if(!J.originalRange.isEmpty){f.read(y);const fe=document.createElement("div");fe.classList.add("view-lines","line-delete","monaco-mouse-cursor-text");const ge=new VZe(J.originalRange.mapToLineArray(ve=>this._editors.original.getModel().tokenization.getLineTokens(ve)),J.originalRange.mapToLineArray(ve=>re[G++]),X,z),se=[];for(const ve of J.diff.innerChanges||[])se.push(new ik(ve.originalRange.delta(-(J.diff.original.startLineNumber-1)),r7.className,0));const H=WZe(ge,le,se,fe),te=document.createElement("div");if(te.className="inline-deleted-margin-view-zone",_r(te,le.fontInfo),this._options.renderIndicators.read(y))for(let ve=0;ve<H.heightInLines;ve++){const Ee=document.createElement("div");Ee.className=`delete-sign ${nt.asClassName(s1e)}`,Ee.setAttribute("style",`position:absolute;top:${ve*W}px;width:${le.lineDecorationsWidth}px;height:${W}px;right:0;`),te.appendChild(Ee)}let ce;_.add(new BZe(()=>Xg(ce),te,this._editors.modified,J.diff,this._diffEditorWidget,H.viewLineCounts,this._editors.original.getModel(),this._contextMenuService,this._clipboardService));for(let ve=0;ve<H.viewLineCounts.length;ve++){const Ee=H.viewLineCounts[ve];Ee>1&&R.push({afterLineNumber:J.originalRange.startLineNumber+ve,domNode:m(),heightInPx:(Ee-1)*W,showInHiddenAreas:!0,suppressMouseDown:!0})}F.push({afterLineNumber:J.modifiedRange.startLineNumber-1,domNode:fe,heightInPx:H.heightInLines*W,minWidthInPx:H.minWidthInPx,marginDomNode:te,setZoneId(ve){ce=ve},showInHiddenAreas:!0,suppressMouseDown:!0})}const be=document.createElement("div");be.className="gutter-delete",R.push({afterLineNumber:J.originalRange.endLineNumberExclusive-1,domNode:m(),heightInPx:J.modifiedHeightInPx,marginDomNode:be,showInHiddenAreas:!0,suppressMouseDown:!0})}else{const be=J.modifiedHeightInPx-J.originalHeightInPx;if(be>0){if(Y!=null&&Y.lineRangeMapping.original.delta(-1).deltaLength(2).contains(J.originalRange.endLineNumberExclusive-1))continue;R.push({afterLineNumber:J.originalRange.endLineNumberExclusive-1,domNode:m(),heightInPx:be,showInHiddenAreas:!0,suppressMouseDown:!0})}else{let fe=function(){const se=document.createElement("div");return se.className="arrow-revert-change "+nt.asClassName(Pe.arrowRight),w.add(Ce(se,"mousedown",H=>H.stopPropagation())),w.add(Ce(se,"click",H=>{H.stopPropagation(),r.revert(J.diff)})),Te("div",{},se)};if(Y!=null&&Y.lineRangeMapping.modified.delta(-1).deltaLength(2).contains(J.modifiedRange.endLineNumberExclusive-1))continue;let ge;J.diff&&J.diff.modified.isEmpty&&this._options.shouldRenderRevertArrows.read(y)&&(ge=fe()),F.push({afterLineNumber:J.modifiedRange.endLineNumberExclusive-1,domNode:m(),heightInPx:-be,marginDomNode:ge,showInHiddenAreas:!0,suppressMouseDown:!0})}}for(const J of(T=p.read(y))!==null&&T!==void 0?T:[]){if(!(Y!=null&&Y.lineRangeMapping.original.intersect(J.originalRange))||!(Y!=null&&Y.lineRangeMapping.modified.intersect(J.modifiedRange)))continue;const be=J.modifiedHeightInPx-J.originalHeightInPx;be>0?R.push({afterLineNumber:J.originalRange.endLineNumberExclusive-1,domNode:m(),heightInPx:be,showInHiddenAreas:!0,suppressMouseDown:!0}):F.push({afterLineNumber:J.modifiedRange.endLineNumberExclusive-1,domNode:m(),heightInPx:-be,showInHiddenAreas:!0,suppressMouseDown:!0})}return{orig:R,mod:F}});let b=!1;this._register(this._editors.original.onDidScrollChange(y=>{y.scrollLeftChanged&&!b&&(b=!0,this._editors.modified.setScrollLeft(y.scrollLeft),b=!1)})),this._register(this._editors.modified.onDidScrollChange(y=>{y.scrollLeftChanged&&!b&&(b=!0,this._editors.original.setScrollLeft(y.scrollLeft),b=!1)})),this._originalScrollTop=Pn(this._editors.original.onDidScrollChange,()=>this._editors.original.getScrollTop()),this._modifiedScrollTop=Pn(this._editors.modified.onDidScrollChange,()=>this._editors.modified.getScrollTop()),this._register(pi(y=>{const w=this._originalScrollTop.read(y)-(this._originalScrollOffsetAnimated.get()-this._modifiedScrollOffsetAnimated.read(y))-(this._originalTopPadding.get()-this._modifiedTopPadding.read(y));w!==this._editors.modified.getScrollTop()&&this._editors.modified.setScrollTop(w,1)})),this._register(pi(y=>{const w=this._modifiedScrollTop.read(y)-(this._modifiedScrollOffsetAnimated.get()-this._originalScrollOffsetAnimated.read(y))-(this._modifiedTopPadding.get()-this._originalTopPadding.read(y));w!==this._editors.original.getScrollTop()&&this._editors.original.setScrollTop(w,1)})),this._register(pi(y=>{var w;const S=(w=this._diffModel.read(y))===null||w===void 0?void 0:w.movedTextToCompare.read(y);let E=0;if(S){const L=this._editors.original.getTopForLineNumber(S.lineRangeMapping.original.startLineNumber,!0)-this._originalTopPadding.get();E=this._editors.modified.getTopForLineNumber(S.lineRangeMapping.modified.startLineNumber,!0)-this._modifiedTopPadding.get()-L}E>0?(this._modifiedTopPadding.set(0,void 0),this._originalTopPadding.set(E,void 0)):E<0?(this._modifiedTopPadding.set(-E,void 0),this._originalTopPadding.set(0,void 0)):setTimeout(()=>{this._modifiedTopPadding.set(0,void 0),this._originalTopPadding.set(0,void 0)},400),this._editors.modified.hasTextFocus()?this._originalScrollOffset.set(this._modifiedScrollOffset.get()-E,void 0,!0):this._modifiedScrollOffset.set(this._originalScrollOffset.get()+E,void 0,!0)}))}};d7=HZe([nie(8,ag),nie(9,zl)],d7);function sie(n,e,t,i,s,r){const o=new Zf(rie(n,i)),a=new Zf(rie(e,s)),l=n.getOption(66),c=e.getOption(66),u=[];let h=0,d=0;function f(g,p){for(;;){let m=o.peek(),_=a.peek();if(m&&m.lineNumber>=g&&(m=void 0),_&&_.lineNumber>=p&&(_=void 0),!m&&!_)break;const b=m?m.lineNumber-h:Number.MAX_VALUE,y=_?_.lineNumber-d:Number.MAX_VALUE;b<y?(o.dequeue(),_={lineNumber:m.lineNumber-h+d,heightInPx:0}):b>y?(a.dequeue(),m={lineNumber:_.lineNumber-d+h,heightInPx:0}):(o.dequeue(),a.dequeue()),u.push({originalRange:xt.ofLength(m.lineNumber,1),modifiedRange:xt.ofLength(_.lineNumber,1),originalHeightInPx:l+m.heightInPx,modifiedHeightInPx:c+_.heightInPx,diff:void 0})}}for(const g of t){let p=function(w,S){var E,L,k,x;if(w<y||S<b)return;if(_)_=!1;else if(w===y||S===b)return;const I=new xt(y,w),N=new xt(b,S);if(I.isEmpty&&N.isEmpty)return;const T=(L=(E=o.takeWhile(R=>R.lineNumber<w))===null||E===void 0?void 0:E.reduce((R,F)=>R+F.heightInPx,0))!==null&&L!==void 0?L:0,P=(x=(k=a.takeWhile(R=>R.lineNumber<S))===null||k===void 0?void 0:k.reduce((R,F)=>R+F.heightInPx,0))!==null&&x!==void 0?x:0;u.push({originalRange:I,modifiedRange:N,originalHeightInPx:I.length*l+T,modifiedHeightInPx:N.length*c+P,diff:g.lineRangeMapping}),y=w,b=S};const m=g.lineRangeMapping;f(m.original.startLineNumber,m.modified.startLineNumber);let _=!0,b=m.modified.startLineNumber,y=m.original.startLineNumber;if(r)for(const w of m.innerChanges||[])w.originalRange.startColumn>1&&w.modifiedRange.startColumn>1&&p(w.originalRange.startLineNumber,w.modifiedRange.startLineNumber),w.originalRange.endColumn<n.getModel().getLineMaxColumn(w.originalRange.endLineNumber)&&p(w.originalRange.endLineNumber,w.modifiedRange.endLineNumber);p(m.original.endLineNumberExclusive,m.modified.endLineNumberExclusive),h=m.original.endLineNumberExclusive,d=m.modified.endLineNumberExclusive}return f(Number.MAX_VALUE,Number.MAX_VALUE),u}function rie(n,e){const t=[],i=[],s=n.getOption(144).wrappingColumn!==-1,r=n._getViewModel().coordinatesConverter,o=n.getOption(66);if(s)for(let l=1;l<=n.getModel().getLineCount();l++){const c=r.getModelLineViewLineCount(l);c>1&&i.push({lineNumber:l,heightInPx:o*(c-1)})}for(const l of n.getWhitespaces()){if(e.has(l.id))continue;const c=l.afterLineNumber===0?0:r.convertViewPositionToModelPosition(new he(l.afterLineNumber,1)).lineNumber;t.push({lineNumber:c,heightInPx:l.height})}return PYe(t,i,l=>l.lineNumber,(l,c)=>({lineNumber:l.lineNumber,heightInPx:l.heightInPx+c.heightInPx}))}var $Ze=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},zZe=function(n,e){return function(t,i){e(t,i,n)}},Ql;let B_=Ql=class extends pe{constructor(e,t,i,s,r,o,a){super(),this._editors=e,this._rootElement=t,this._diffModel=i,this._rootWidth=s,this._rootHeight=r,this._modifiedEditorLayoutInfo=o,this._themeService=a,this.width=Ql.ENTIRE_DIFF_OVERVIEW_WIDTH;const l=Pn(this._themeService.onDidColorThemeChange,()=>this._themeService.getColorTheme()),c=St(d=>{const f=l.read(d),g=f.getColor(dHe)||(f.getColor(uHe)||p9).transparent(2),p=f.getColor(fHe)||(f.getColor(hHe)||m9).transparent(2);return{insertColor:g,removeColor:p}}),u=fi(document.createElement("div"));u.setClassName("diffViewport"),u.setPosition("absolute");const h=en("div.diffOverview",{style:{position:"absolute",top:"0px",width:Ql.ENTIRE_DIFF_OVERVIEW_WIDTH+"px"}}).root;this._register(SI(h,u.domNode)),this._register(Mn(h,We.POINTER_DOWN,d=>{this._editors.modified.delegateVerticalScrollbarPointerDown(d)})),this._register(Ce(h,We.MOUSE_WHEEL,d=>{this._editors.modified.delegateScrollFromMouseWheelEvent(d)},{passive:!1})),this._register(SI(this._rootElement,h)),this._register(rg((d,f)=>{const g=this._diffModel.read(d),p=this._editors.original.createOverviewRuler("original diffOverviewRuler");p&&(f.add(p),f.add(SI(h,p.getDomNode())));const m=this._editors.modified.createOverviewRuler("modified diffOverviewRuler");if(m&&(f.add(m),f.add(SI(h,m.getDomNode()))),!p||!m)return;const _=Fa("viewZoneChanged",this._editors.original.onDidChangeViewZones),b=Fa("viewZoneChanged",this._editors.modified.onDidChangeViewZones),y=Fa("hiddenRangesChanged",this._editors.original.onDidChangeHiddenAreas),w=Fa("hiddenRangesChanged",this._editors.modified.onDidChangeHiddenAreas);f.add(pi(S=>{var E;_.read(S),b.read(S),y.read(S),w.read(S);const L=c.read(S),k=(E=g==null?void 0:g.diff.read(S))===null||E===void 0?void 0:E.mappings;function x(T,P,R){const F=R._getViewModel();return F?T.filter(j=>j.length>0).map(j=>{const K=F.coordinatesConverter.convertModelPositionToViewPosition(new he(j.startLineNumber,1)),Z=F.coordinatesConverter.convertModelPositionToViewPosition(new he(j.endLineNumberExclusive,1)),q=Z.lineNumber-K.lineNumber;return new Jpe(K.lineNumber,Z.lineNumber,q,P.toString())}):[]}const I=x((k||[]).map(T=>T.lineRangeMapping.original),L.removeColor,this._editors.original),N=x((k||[]).map(T=>T.lineRangeMapping.modified),L.insertColor,this._editors.modified);p==null||p.setZones(I),m==null||m.setZones(N)})),f.add(pi(S=>{const E=this._rootHeight.read(S),L=this._rootWidth.read(S),k=this._modifiedEditorLayoutInfo.read(S);if(k){const x=Ql.ENTIRE_DIFF_OVERVIEW_WIDTH-2*Ql.ONE_OVERVIEW_WIDTH;p.setLayout({top:0,height:E,right:x+Ql.ONE_OVERVIEW_WIDTH,width:Ql.ONE_OVERVIEW_WIDTH}),m.setLayout({top:0,height:E,right:0,width:Ql.ONE_OVERVIEW_WIDTH});const I=this._editors.modifiedScrollTop.read(S),N=this._editors.modifiedScrollHeight.read(S),T=this._editors.modified.getOption(102),P=new Sy(T.verticalHasArrows?T.arrowSize:0,T.verticalScrollbarSize,0,k.height,N,I);u.setTop(P.getSliderPosition()),u.setHeight(P.getSliderSize())}else u.setTop(0),u.setHeight(0);h.style.height=E+"px",h.style.left=L-Ql.ENTIRE_DIFF_OVERVIEW_WIDTH+"px",u.setWidth(Ql.ENTIRE_DIFF_OVERVIEW_WIDTH)}))}))}};B_.ONE_OVERVIEW_WIDTH=15;B_.ENTIRE_DIFF_OVERVIEW_WIDTH=Ql.ONE_OVERVIEW_WIDTH*2;B_=Ql=$Ze([zZe(6,Ms)],B_);const d1e=Bt("progressService");class Of{constructor(e){this.callback=e}report(e){this._value=e,this.callback(this._value)}}Of.None=Object.freeze({report(){}});const Mm=Bt("editorProgressService");U("diffEditor.move.border",{dark:"#8b8b8b9c",light:"#8b8b8b9c",hcDark:"#8b8b8b9c",hcLight:"#8b8b8b9c"},v("diffEditor.move.border","The border color for text that got moved in the diff editor."));U("diffEditor.moveActive.border",{dark:"#FFA500",light:"#FFA500",hcDark:"#FFA500",hcLight:"#FFA500"},v("diffEditor.moveActive.border","The active border color for text that got moved in the diff editor."));U("diffEditor.unchangedRegionShadow",{dark:"#000000",light:"#737373BF",hcDark:"#000000",hcLight:"#737373BF"},v("diffEditor.unchangedRegionShadow","The color of the shadow around unchanged region widgets."));class s2 extends pe{constructor(){super(...arguments),this._id=++s2.idCounter,this._onDidDispose=this._register(new ue),this.onDidDispose=this._onDidDispose.event}getId(){return this.getEditorType()+":v2:"+this._id}getVisibleColumnFromPosition(e){return this._targetEditor.getVisibleColumnFromPosition(e)}getPosition(){return this._targetEditor.getPosition()}setPosition(e,t="api"){this._targetEditor.setPosition(e,t)}revealLine(e,t=0){this._targetEditor.revealLine(e,t)}revealLineInCenter(e,t=0){this._targetEditor.revealLineInCenter(e,t)}revealLineInCenterIfOutsideViewport(e,t=0){this._targetEditor.revealLineInCenterIfOutsideViewport(e,t)}revealLineNearTop(e,t=0){this._targetEditor.revealLineNearTop(e,t)}revealPosition(e,t=0){this._targetEditor.revealPosition(e,t)}revealPositionInCenter(e,t=0){this._targetEditor.revealPositionInCenter(e,t)}revealPositionInCenterIfOutsideViewport(e,t=0){this._targetEditor.revealPositionInCenterIfOutsideViewport(e,t)}revealPositionNearTop(e,t=0){this._targetEditor.revealPositionNearTop(e,t)}getSelection(){return this._targetEditor.getSelection()}getSelections(){return this._targetEditor.getSelections()}setSelection(e,t="api"){this._targetEditor.setSelection(e,t)}setSelections(e,t="api"){this._targetEditor.setSelections(e,t)}revealLines(e,t,i=0){this._targetEditor.revealLines(e,t,i)}revealLinesInCenter(e,t,i=0){this._targetEditor.revealLinesInCenter(e,t,i)}revealLinesInCenterIfOutsideViewport(e,t,i=0){this._targetEditor.revealLinesInCenterIfOutsideViewport(e,t,i)}revealLinesNearTop(e,t,i=0){this._targetEditor.revealLinesNearTop(e,t,i)}revealRange(e,t=0,i=!1,s=!0){this._targetEditor.revealRange(e,t,i,s)}revealRangeInCenter(e,t=0){this._targetEditor.revealRangeInCenter(e,t)}revealRangeInCenterIfOutsideViewport(e,t=0){this._targetEditor.revealRangeInCenterIfOutsideViewport(e,t)}revealRangeNearTop(e,t=0){this._targetEditor.revealRangeNearTop(e,t)}revealRangeNearTopIfOutsideViewport(e,t=0){this._targetEditor.revealRangeNearTopIfOutsideViewport(e,t)}revealRangeAtTop(e,t=0){this._targetEditor.revealRangeAtTop(e,t)}getSupportedActions(){return this._targetEditor.getSupportedActions()}focus(){this._targetEditor.focus()}trigger(e,t,i){this._targetEditor.trigger(e,t,i)}createDecorationsCollection(e){return this._targetEditor.createDecorationsCollection(e)}changeDecorations(e){return this._targetEditor.changeDecorations(e)}}s2.idCounter=0;var UZe=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},oie=function(n,e){return function(t,i){e(t,i,n)}};let f7=class extends pe{get onDidContentSizeChange(){return this._onDidContentSizeChange.event}constructor(e,t,i,s,r,o,a){super(),this.originalEditorElement=e,this.modifiedEditorElement=t,this._options=i,this._createInnerEditor=r,this._instantiationService=o,this._keybindingService=a,this._onDidContentSizeChange=this._register(new ue),this.original=this._register(this._createLeftHandSideEditor(i.editorOptions.get(),s.originalEditor||{})),this.modified=this._register(this._createRightHandSideEditor(i.editorOptions.get(),s.modifiedEditor||{})),this.modifiedModel=Pn(this.modified.onDidChangeModel,()=>this.modified.getModel()),this.modifiedScrollTop=Pn(this.modified.onDidScrollChange,()=>this.modified.getScrollTop()),this.modifiedScrollHeight=Pn(this.modified.onDidScrollChange,()=>this.modified.getScrollHeight()),this.modifiedSelections=Pn(this.modified.onDidChangeCursorSelection,()=>{var l;return(l=this.modified.getSelections())!==null&&l!==void 0?l:[]}),this.modifiedCursor=Pn(this.modified.onDidChangeCursorPosition,()=>{var l;return(l=this.modified.getPosition())!==null&&l!==void 0?l:new he(1,1)}),this._register(TE({createEmptyChangeSummary:()=>({}),handleChange:(l,c)=>(l.didChange(i.editorOptions)&&Object.assign(c,l.change.changedOptions),!0)},(l,c)=>{i.editorOptions.read(l),this._options.renderSideBySide.read(l),this.modified.updateOptions(this._adjustOptionsForRightHandSide(l,c)),this.original.updateOptions(this._adjustOptionsForLeftHandSide(l,c))}))}_createLeftHandSideEditor(e,t){const i=this._adjustOptionsForLeftHandSide(void 0,e),s=this._constructInnerEditor(this._instantiationService,this.originalEditorElement,i,t);return s.setContextValue("isInDiffLeftEditor",!0),s}_createRightHandSideEditor(e,t){const i=this._adjustOptionsForRightHandSide(void 0,e),s=this._constructInnerEditor(this._instantiationService,this.modifiedEditorElement,i,t);return s.setContextValue("isInDiffRightEditor",!0),s}_constructInnerEditor(e,t,i,s){const r=this._createInnerEditor(e,t,i,s);return this._register(r.onDidContentSizeChange(o=>{const a=this.original.getContentWidth()+this.modified.getContentWidth()+B_.ENTIRE_DIFF_OVERVIEW_WIDTH,l=Math.max(this.modified.getContentHeight(),this.original.getContentHeight());this._onDidContentSizeChange.fire({contentHeight:l,contentWidth:a,contentHeightChanged:o.contentHeightChanged,contentWidthChanged:o.contentWidthChanged})})),r}_adjustOptionsForLeftHandSide(e,t){const i=this._adjustOptionsForSubEditor(t);return this._options.renderSideBySide.get()?(i.unicodeHighlight=this._options.editorOptions.get().unicodeHighlight||{},i.wordWrapOverride1=this._options.diffWordWrap.get()):(i.wordWrapOverride1="off",i.wordWrapOverride2="off",i.stickyScroll={enabled:!1},i.unicodeHighlight={nonBasicASCII:!1,ambiguousCharacters:!1,invisibleCharacters:!1}),i.glyphMargin=this._options.renderSideBySide.get(),t.originalAriaLabel&&(i.ariaLabel=t.originalAriaLabel),i.ariaLabel=this._updateAriaLabel(i.ariaLabel),i.readOnly=!this._options.originalEditable.get(),i.dropIntoEditor={enabled:!i.readOnly},i.extraEditorClassName="original-in-monaco-diff-editor",i}_adjustOptionsForRightHandSide(e,t){const i=this._adjustOptionsForSubEditor(t);return t.modifiedAriaLabel&&(i.ariaLabel=t.modifiedAriaLabel),i.ariaLabel=this._updateAriaLabel(i.ariaLabel),i.wordWrapOverride1=this._options.diffWordWrap.get(),i.revealHorizontalRightPadding=zu.revealHorizontalRightPadding.defaultValue+B_.ENTIRE_DIFF_OVERVIEW_WIDTH,i.scrollbar.verticalHasArrows=!1,i.extraEditorClassName="modified-in-monaco-diff-editor",i}_adjustOptionsForSubEditor(e){const t={...e,dimension:{height:0,width:0}};return t.inDiffEditor=!0,t.automaticLayout=!1,t.scrollbar={...t.scrollbar||{}},t.folding=!1,t.codeLens=this._options.diffCodeLens.get(),t.fixedOverflowWidgets=!0,t.minimap={...t.minimap||{}},t.minimap.enabled=!1,this._options.hideUnchangedRegions.get()?t.stickyScroll={enabled:!1}:t.stickyScroll=this._options.editorOptions.get().stickyScroll,t}_updateAriaLabel(e){var t;e||(e="");const i=v("diff-aria-navigation-tip"," use {0} to open the accessibility help.",(t=this._keybindingService.lookupKeybinding("editor.action.accessibilityHelp"))===null||t===void 0?void 0:t.getAriaLabel());return this._options.accessibilityVerbose.get()?e+i:e?e.replaceAll(i,""):""}};f7=UZe([oie(5,at),oie(6,Di)],f7);const Mr={enableSplitViewResizing:!0,splitViewDefaultRatio:.5,renderSideBySide:!0,renderMarginRevertIcon:!0,maxComputationTime:5e3,maxFileSize:50,ignoreTrimWhitespace:!0,renderIndicators:!0,originalEditable:!1,diffCodeLens:!1,renderOverviewRuler:!0,diffWordWrap:"inherit",diffAlgorithm:"advanced",accessibilityVerbose:!1,experimental:{showMoves:!1,showEmptyDecorations:!0},hideUnchangedRegions:{enabled:!1,contextLineCount:3,minimumLineCount:3,revealLineCount:20},isInEmbeddedEditor:!1,onlyShowAccessibleDiffViewer:!1,renderSideBySideInlineBreakpoint:900,useInlineViewWhenSpaceIsLimited:!0};class jZe{get editorOptions(){return this._options}constructor(e){this._diffEditorWidth=si(this,0),this.couldShowInlineViewBecauseOfSize=St(this,i=>this._options.read(i).renderSideBySide&&this._diffEditorWidth.read(i)<=this._options.read(i).renderSideBySideInlineBreakpoint),this.renderOverviewRuler=St(this,i=>this._options.read(i).renderOverviewRuler),this.renderSideBySide=St(this,i=>this._options.read(i).renderSideBySide&&!(this._options.read(i).useInlineViewWhenSpaceIsLimited&&this.couldShowInlineViewBecauseOfSize.read(i))),this.readOnly=St(this,i=>this._options.read(i).readOnly),this.shouldRenderRevertArrows=St(this,i=>!(!this._options.read(i).renderMarginRevertIcon||!this.renderSideBySide.read(i)||this.readOnly.read(i))),this.renderIndicators=St(this,i=>this._options.read(i).renderIndicators),this.enableSplitViewResizing=St(this,i=>this._options.read(i).enableSplitViewResizing),this.splitViewDefaultRatio=St(this,i=>this._options.read(i).splitViewDefaultRatio),this.ignoreTrimWhitespace=St(this,i=>this._options.read(i).ignoreTrimWhitespace),this.maxComputationTimeMs=St(this,i=>this._options.read(i).maxComputationTime),this.showMoves=St(this,i=>this._options.read(i).experimental.showMoves&&this.renderSideBySide.read(i)),this.isInEmbeddedEditor=St(this,i=>this._options.read(i).isInEmbeddedEditor),this.diffWordWrap=St(this,i=>this._options.read(i).diffWordWrap),this.originalEditable=St(this,i=>this._options.read(i).originalEditable),this.diffCodeLens=St(this,i=>this._options.read(i).diffCodeLens),this.accessibilityVerbose=St(this,i=>this._options.read(i).accessibilityVerbose),this.diffAlgorithm=St(this,i=>this._options.read(i).diffAlgorithm),this.showEmptyDecorations=St(this,i=>this._options.read(i).experimental.showEmptyDecorations),this.onlyShowAccessibleDiffViewer=St(this,i=>this._options.read(i).onlyShowAccessibleDiffViewer),this.hideUnchangedRegions=St(this,i=>this._options.read(i).hideUnchangedRegions.enabled),this.hideUnchangedRegionsRevealLineCount=St(this,i=>this._options.read(i).hideUnchangedRegions.revealLineCount),this.hideUnchangedRegionsContextLineCount=St(this,i=>this._options.read(i).hideUnchangedRegions.contextLineCount),this.hideUnchangedRegionsMinimumLineCount=St(this,i=>this._options.read(i).hideUnchangedRegions.minimumLineCount);const t={...e,...aie(e,Mr)};this._options=si(this,t)}updateOptions(e){const t=aie(e,this._options.get()),i={...this._options.get(),...e,...t};this._options.set(i,void 0,{changedOptions:e})}setWidth(e){this._diffEditorWidth.set(e,void 0)}}function aie(n,e){var t,i,s,r,o,a,l,c;return{enableSplitViewResizing:Qe(n.enableSplitViewResizing,e.enableSplitViewResizing),splitViewDefaultRatio:yWe(n.splitViewDefaultRatio,.5,.1,.9),renderSideBySide:Qe(n.renderSideBySide,e.renderSideBySide),renderMarginRevertIcon:Qe(n.renderMarginRevertIcon,e.renderMarginRevertIcon),maxComputationTime:o1(n.maxComputationTime,e.maxComputationTime,0,1073741824),maxFileSize:o1(n.maxFileSize,e.maxFileSize,0,1073741824),ignoreTrimWhitespace:Qe(n.ignoreTrimWhitespace,e.ignoreTrimWhitespace),renderIndicators:Qe(n.renderIndicators,e.renderIndicators),originalEditable:Qe(n.originalEditable,e.originalEditable),diffCodeLens:Qe(n.diffCodeLens,e.diffCodeLens),renderOverviewRuler:Qe(n.renderOverviewRuler,e.renderOverviewRuler),diffWordWrap:Un(n.diffWordWrap,e.diffWordWrap,["off","on","inherit"]),diffAlgorithm:Un(n.diffAlgorithm,e.diffAlgorithm,["legacy","advanced"],{smart:"legacy",experimental:"advanced"}),accessibilityVerbose:Qe(n.accessibilityVerbose,e.accessibilityVerbose),experimental:{showMoves:Qe((t=n.experimental)===null||t===void 0?void 0:t.showMoves,e.experimental.showMoves),showEmptyDecorations:Qe((i=n.experimental)===null||i===void 0?void 0:i.showEmptyDecorations,e.experimental.showEmptyDecorations)},hideUnchangedRegions:{enabled:Qe((r=(s=n.hideUnchangedRegions)===null||s===void 0?void 0:s.enabled)!==null&&r!==void 0?r:(o=n.experimental)===null||o===void 0?void 0:o.collapseUnchangedRegions,e.hideUnchangedRegions.enabled),contextLineCount:o1((a=n.hideUnchangedRegions)===null||a===void 0?void 0:a.contextLineCount,e.hideUnchangedRegions.contextLineCount,0,1073741824),minimumLineCount:o1((l=n.hideUnchangedRegions)===null||l===void 0?void 0:l.minimumLineCount,e.hideUnchangedRegions.minimumLineCount,0,1073741824),revealLineCount:o1((c=n.hideUnchangedRegions)===null||c===void 0?void 0:c.revealLineCount,e.hideUnchangedRegions.revealLineCount,0,1073741824)},isInEmbeddedEditor:Qe(n.isInEmbeddedEditor,e.isInEmbeddedEditor),onlyShowAccessibleDiffViewer:Qe(n.onlyShowAccessibleDiffViewer,e.onlyShowAccessibleDiffViewer),renderSideBySideInlineBreakpoint:o1(n.renderSideBySideInlineBreakpoint,e.renderSideBySideInlineBreakpoint,0,1073741824),useInlineViewWhenSpaceIsLimited:Qe(n.useInlineViewWhenSpaceIsLimited,e.useInlineViewWhenSpaceIsLimited)}}var qZe=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},Pw=function(n,e){return function(t,i){e(t,i,n)}};let am=class extends s2{get onDidContentSizeChange(){return this._editors.onDidContentSizeChange}constructor(e,t,i,s,r,o,a,l){var c;super(),this._domElement=e,this._parentContextKeyService=s,this._parentInstantiationService=r,this._audioCueService=a,this._editorProgressService=l,this.elements=en("div.monaco-diff-editor.side-by-side",{style:{position:"relative",height:"100%"}},[en("div.noModificationsOverlay@overlay",{style:{position:"absolute",height:"100%",visibility:"hidden"}},[Te("span",{},"No Changes")]),en("div.editor.original@original",{style:{position:"absolute",height:"100%"}}),en("div.editor.modified@modified",{style:{position:"absolute",height:"100%"}}),en("div.accessibleDiffViewer@accessibleDiffViewer",{style:{position:"absolute",height:"100%"}})]),this._diffModel=si(this,void 0),this._shouldDisposeDiffModel=!1,this.onDidChangeModel=Ve.fromObservableLight(this._diffModel),this._contextKeyService=this._register(this._parentContextKeyService.createScoped(this._domElement)),this._instantiationService=this._parentInstantiationService.createChild(new DE([ft,this._contextKeyService])),this._boundarySashes=si(this,void 0),this._accessibleDiffViewerShouldBeVisible=si(this,!1),this._accessibleDiffViewerVisible=St(this,w=>this._options.onlyShowAccessibleDiffViewer.read(w)?!0:this._accessibleDiffViewerShouldBeVisible.read(w)),this._movedBlocksLinesPart=si(this,void 0),this._layoutInfo=St(this,w=>{var S,E,L,k,x;const I=this._rootSizeObserver.width.read(w),N=this._rootSizeObserver.height.read(w),T=(S=this._sash.read(w))===null||S===void 0?void 0:S.sashLeft.read(w),P=T??Math.max(5,this._editors.original.getLayoutInfo().decorationsLeft),R=I-P-((L=(E=this._overviewRulerPart.read(w))===null||E===void 0?void 0:E.width)!==null&&L!==void 0?L:0),F=(x=(k=this._movedBlocksLinesPart.read(w))===null||k===void 0?void 0:k.width.read(w))!==null&&x!==void 0?x:0,j=P-F;return this.elements.original.style.width=j+"px",this.elements.original.style.left="0px",this.elements.modified.style.width=R+"px",this.elements.modified.style.left=P+"px",this._editors.original.layout({width:j,height:N},!0),this._editors.modified.layout({width:R,height:N},!0),{modifiedEditor:this._editors.modified.getLayoutInfo(),originalEditor:this._editors.original.getLayoutInfo()}}),this._diffValue=this._diffModel.map((w,S)=>w==null?void 0:w.diff.read(S)),this.onDidUpdateDiff=Ve.fromObservableLight(this._diffValue),o.willCreateDiffEditor(),this._contextKeyService.createKey("isInDiffEditor",!0),this._domElement.appendChild(this.elements.root),this._register(st(()=>this._domElement.removeChild(this.elements.root))),this._rootSizeObserver=this._register(new Qme(this.elements.root,t.dimension)),this._rootSizeObserver.setAutomaticLayout((c=t.automaticLayout)!==null&&c!==void 0?c:!1),this._options=new jZe(t),this._register(pi(w=>{this._options.setWidth(this._rootSizeObserver.width.read(w))})),this._contextKeyService.createKey($.isEmbeddedDiffEditor.key,!1),this._register(kI($.isEmbeddedDiffEditor,this._contextKeyService,w=>this._options.isInEmbeddedEditor.read(w))),this._register(kI($.comparingMovedCode,this._contextKeyService,w=>{var S;return!!(!((S=this._diffModel.read(w))===null||S===void 0)&&S.movedTextToCompare.read(w))})),this._register(kI($.diffEditorRenderSideBySideInlineBreakpointReached,this._contextKeyService,w=>this._options.couldShowInlineViewBecauseOfSize.read(w))),this._register(kI($.hasChanges,this._contextKeyService,w=>{var S,E,L;return((L=(E=(S=this._diffModel.read(w))===null||S===void 0?void 0:S.diff.read(w))===null||E===void 0?void 0:E.mappings.length)!==null&&L!==void 0?L:0)>0})),this._editors=this._register(this._instantiationService.createInstance(f7,this.elements.original,this.elements.modified,this._options,i,(w,S,E,L)=>this._createInnerEditor(w,S,E,L))),this._overviewRulerPart=Og(this,w=>this._options.renderOverviewRuler.read(w)?this._instantiationService.createInstance(dh(B_,w),this._editors,this.elements.root,this._diffModel,this._rootSizeObserver.width,this._rootSizeObserver.height,this._layoutInfo.map(S=>S.modifiedEditor)):void 0).recomputeInitiallyAndOnChange(this._store),this._sash=Og(this,w=>{const S=this._options.renderSideBySide.read(w);return this.elements.root.classList.toggle("side-by-side",S),S?new uZe(this._options,this.elements.root,{height:this._rootSizeObserver.height,width:this._rootSizeObserver.width.map((E,L)=>{var k,x;return E-((x=(k=this._overviewRulerPart.read(L))===null||k===void 0?void 0:k.width)!==null&&x!==void 0?x:0)})},this._boundarySashes):void 0}).recomputeInitiallyAndOnChange(this._store);const u=Og(this,w=>this._instantiationService.createInstance(dh(o7,w),this._editors,this._diffModel,this._options)).recomputeInitiallyAndOnChange(this._store);Og(this,w=>this._instantiationService.createInstance(dh(nZe,w),this._editors,this._diffModel,this._options,this)).recomputeInitiallyAndOnChange(this._store);const h=new Set,d=new Set;let f=!1;const g=Og(this,w=>this._instantiationService.createInstance(dh(d7,w),pt(this._domElement),this._editors,this._diffModel,this._options,this,()=>f||u.get().isUpdatingHiddenAreas,h,d)).recomputeInitiallyAndOnChange(this._store),p=St(this,w=>{const S=g.read(w).viewZones.read(w).orig,E=u.read(w).viewZones.read(w).origViewZones;return S.concat(E)}),m=St(this,w=>{const S=g.read(w).viewZones.read(w).mod,E=u.read(w).viewZones.read(w).modViewZones;return S.concat(E)});this._register(yP(this._editors.original,p,w=>{f=w},h));let _;this._register(yP(this._editors.modified,m,w=>{f=w,f?_=Au.capture(this._editors.modified):(_==null||_.restore(this._editors.modified),_=void 0)},d)),this._accessibleDiffViewer=Og(this,w=>this._instantiationService.createInstance(dh(op,w),this.elements.accessibleDiffViewer,this._accessibleDiffViewerVisible,(S,E)=>this._accessibleDiffViewerShouldBeVisible.set(S,E),this._options.onlyShowAccessibleDiffViewer.map(S=>!S),this._rootSizeObserver.width,this._rootSizeObserver.height,this._diffModel.map((S,E)=>{var L;return(L=S==null?void 0:S.diff.read(E))===null||L===void 0?void 0:L.mappings.map(k=>k.lineRangeMapping)}),this._editors)).recomputeInitiallyAndOnChange(this._store);const b=this._accessibleDiffViewerVisible.map(w=>w?"hidden":"visible");this._register(Ep(this.elements.modified,{visibility:b})),this._register(Ep(this.elements.original,{visibility:b})),this._createDiffEditorContributions(),o.addDiffEditor(this),this._register(NE(this._layoutInfo)),Og(this,w=>new(dh(Dp,w))(this.elements.root,this._diffModel,this._layoutInfo.map(S=>S.originalEditor),this._layoutInfo.map(S=>S.modifiedEditor),this._editors)).recomputeInitiallyAndOnChange(this._store,w=>{this._movedBlocksLinesPart.set(w,void 0)}),this._register(Ep(this.elements.overlay,{width:this._layoutInfo.map((w,S)=>w.originalEditor.width+(this._options.renderSideBySide.read(S)?0:w.modifiedEditor.width)),visibility:St(w=>{var S,E;return this._options.hideUnchangedRegions.read(w)&&((E=(S=this._diffModel.read(w))===null||S===void 0?void 0:S.diff.read(w))===null||E===void 0?void 0:E.mappings.length)===0?"visible":"hidden"})})),this._register(Ve.runAndSubscribe(this._editors.modified.onDidChangeCursorPosition,w=>{var S,E;if((w==null?void 0:w.reason)===3){const L=(E=(S=this._diffModel.get())===null||S===void 0?void 0:S.diff.get())===null||E===void 0?void 0:E.mappings.find(k=>k.lineRangeMapping.modified.contains(w.position.lineNumber));L!=null&&L.lineRangeMapping.modified.isEmpty?this._audioCueService.playAudioCue(Pt.diffLineDeleted,{source:"diffEditor.cursorPositionChanged"}):L!=null&&L.lineRangeMapping.original.isEmpty?this._audioCueService.playAudioCue(Pt.diffLineInserted,{source:"diffEditor.cursorPositionChanged"}):L&&this._audioCueService.playAudioCue(Pt.diffLineModified,{source:"diffEditor.cursorPositionChanged"})}}));const y=this._diffModel.map(this,(w,S)=>{if(w)return w.diff.read(S)===void 0&&!w.isDiffUpToDate.read(S)});this._register(rg((w,S)=>{if(y.read(w)===!0){const E=this._editorProgressService.show(!0,1e3);S.add(st(()=>E.done()))}})),this._register(st(()=>{var w;this._shouldDisposeDiffModel&&((w=this._diffModel.get())===null||w===void 0||w.dispose())}))}_createInnerEditor(e,t,i,s){return e.createInstance(Ey,t,i,s)}_createDiffEditorContributions(){const e=mb.getDiffEditorContributions();for(const t of e)try{this._register(this._instantiationService.createInstance(t.ctor,this))}catch(i){vt(i)}}get _targetEditor(){return this._editors.modified}getEditorType(){return EE.IDiffEditor}layout(e){this._rootSizeObserver.observe(e)}hasTextFocus(){return this._editors.original.hasTextFocus()||this._editors.modified.hasTextFocus()}saveViewState(){var e;const t=this._editors.original.saveViewState(),i=this._editors.modified.saveViewState();return{original:t,modified:i,modelState:(e=this._diffModel.get())===null||e===void 0?void 0:e.serializeState()}}restoreViewState(e){var t;if(e&&e.original&&e.modified){const i=e;this._editors.original.restoreViewState(i.original),this._editors.modified.restoreViewState(i.modified),i.modelState&&((t=this._diffModel.get())===null||t===void 0||t.restoreSerializedState(i.modelState))}}handleInitialized(){this._editors.original.handleInitialized(),this._editors.modified.handleInitialized()}createViewModel(e){return this._instantiationService.createInstance(h7,e,this._options)}getModel(){var e,t;return(t=(e=this._diffModel.get())===null||e===void 0?void 0:e.model)!==null&&t!==void 0?t:null}setModel(e,t){!e&&this._diffModel.get()&&this._accessibleDiffViewer.get().close();const i=e?"model"in e?{model:e,shouldDispose:!1}:{model:this.createViewModel(e),shouldDispose:!0}:void 0;this._diffModel.get()!==(i==null?void 0:i.model)&&KL(t,s=>{var r;Pn.batchEventsGlobally(s,()=>{this._editors.original.setModel(i?i.model.model.original:null),this._editors.modified.setModel(i?i.model.model.modified:null)});const o=this._diffModel.get(),a=this._shouldDisposeDiffModel;this._shouldDisposeDiffModel=(r=i==null?void 0:i.shouldDispose)!==null&&r!==void 0?r:!1,this._diffModel.set(i==null?void 0:i.model,s),a&&(o==null||o.dispose())})}updateOptions(e){this._options.updateOptions(e)}getContainerDomNode(){return this._domElement}getOriginalEditor(){return this._editors.original}getModifiedEditor(){return this._editors.modified}getLineChanges(){var e;const t=(e=this._diffModel.get())===null||e===void 0?void 0:e.diff.get();return t?KZe(t):null}revert(e){var t;if(e.innerChanges){this.revertRangeMappings(e.innerChanges);return}const i=(t=this._diffModel.get())===null||t===void 0?void 0:t.model;i&&this._editors.modified.executeEdits("diffEditor",[{range:e.modified.toExclusiveRange(),text:i.original.getValueInRange(e.original.toExclusiveRange())}])}revertRangeMappings(e){const t=this._diffModel.get();if(!t||!t.isDiffUpToDate.get())return;const i=e.map(s=>({range:s.modifiedRange,text:t.model.original.getValueInRange(s.originalRange)}));this._editors.modified.executeEdits("diffEditor",i)}_goTo(e){this._editors.modified.setPosition(new he(e.lineRangeMapping.modified.startLineNumber,1)),this._editors.modified.revealRangeInCenter(e.lineRangeMapping.modified.toExclusiveRange())}goToDiff(e){var t,i,s,r;const o=(i=(t=this._diffModel.get())===null||t===void 0?void 0:t.diff.get())===null||i===void 0?void 0:i.mappings;if(!o||o.length===0)return;const a=this._editors.modified.getPosition().lineNumber;let l;e==="next"?l=(s=o.find(c=>c.lineRangeMapping.modified.startLineNumber>a))!==null&&s!==void 0?s:o[0]:l=(r=AL(o,c=>c.lineRangeMapping.modified.startLineNumber<a))!==null&&r!==void 0?r:o[o.length-1],this._goTo(l),l.lineRangeMapping.modified.isEmpty?this._audioCueService.playAudioCue(Pt.diffLineDeleted,{source:"diffEditor.goToDiff"}):l.lineRangeMapping.original.isEmpty?this._audioCueService.playAudioCue(Pt.diffLineInserted,{source:"diffEditor.goToDiff"}):l&&this._audioCueService.playAudioCue(Pt.diffLineModified,{source:"diffEditor.goToDiff"})}revealFirstDiff(){const e=this._diffModel.get();e&&this.waitForDiff().then(()=>{var t;const i=(t=e.diff.get())===null||t===void 0?void 0:t.mappings;!i||i.length===0||this._goTo(i[0])})}accessibleDiffViewerNext(){this._accessibleDiffViewer.get().next()}accessibleDiffViewerPrev(){this._accessibleDiffViewer.get().prev()}async waitForDiff(){const e=this._diffModel.get();e&&await e.waitForDiff()}mapToOtherSide(){var e,t;const i=this._editors.modified.hasWidgetFocus(),s=i?this._editors.modified:this._editors.original,r=i?this._editors.original:this._editors.modified;let o;const a=s.getSelection();if(a){const l=(t=(e=this._diffModel.get())===null||e===void 0?void 0:e.diff.get())===null||t===void 0?void 0:t.mappings.map(c=>i?c.lineRangeMapping.flip():c.lineRangeMapping);if(l){const c=Ate(a.getStartPosition(),l),u=Ate(a.getEndPosition(),l);o=M.plusRange(c,u)}}return{destination:r,destinationSelection:o}}switchSide(){const{destination:e,destinationSelection:t}=this.mapToOtherSide();e.focus(),t&&e.setSelection(t)}exitCompareMove(){const e=this._diffModel.get();e&&e.movedTextToCompare.set(void 0,void 0)}collapseAllUnchangedRegions(){var e;const t=(e=this._diffModel.get())===null||e===void 0?void 0:e.unchangedRegions.get();t&&ln(i=>{for(const s of t)s.collapseAll(i)})}showAllUnchangedRegions(){var e;const t=(e=this._diffModel.get())===null||e===void 0?void 0:e.unchangedRegions.get();t&&ln(i=>{for(const s of t)s.showAll(i)})}};am=qZe([Pw(3,ft),Pw(4,at),Pw(5,ri),Pw(6,ME),Pw(7,Mm)],am);function KZe(n){return n.mappings.map(e=>{const t=e.lineRangeMapping;let i,s,r,o,a=t.innerChanges;return t.original.isEmpty?(i=t.original.startLineNumber-1,s=0,a=void 0):(i=t.original.startLineNumber,s=t.original.endLineNumberExclusive-1),t.modified.isEmpty?(r=t.modified.startLineNumber-1,o=0,a=void 0):(r=t.modified.startLineNumber,o=t.modified.endLineNumberExclusive-1),{originalStartLineNumber:i,originalEndLineNumber:s,modifiedStartLineNumber:r,modifiedEndLineNumber:o,charChanges:a==null?void 0:a.map(l=>({originalStartLineNumber:l.originalRange.startLineNumber,originalStartColumn:l.originalRange.startColumn,originalEndLineNumber:l.originalRange.endLineNumber,originalEndColumn:l.originalRange.endColumn,modifiedStartLineNumber:l.modifiedRange.startLineNumber,modifiedStartColumn:l.modifiedRange.startColumn,modifiedEndLineNumber:l.modifiedRange.endLineNumber,modifiedEndColumn:l.modifiedRange.endColumn}))}})}class GZe extends sl{constructor(){super({id:"diffEditor.toggleCollapseUnchangedRegions",title:{value:v("toggleCollapseUnchangedRegions","Toggle Collapse Unchanged Regions"),original:"Toggle Collapse Unchanged Regions"},icon:Pe.map,toggled:ke.has("config.diffEditor.hideUnchangedRegions.enabled"),precondition:ke.has("isInDiffEditor"),menu:{when:ke.has("isInDiffEditor"),id:B.EditorTitle,order:22,group:"navigation"}})}run(e,...t){const i=e.get(Ut),s=!i.getValue("diffEditor.hideUnchangedRegions.enabled");i.updateValue("diffEditor.hideUnchangedRegions.enabled",s)}}Zi(GZe);class f1e extends sl{constructor(){super({id:"diffEditor.toggleShowMovedCodeBlocks",title:{value:v("toggleShowMovedCodeBlocks","Toggle Show Moved Code Blocks"),original:"Toggle Show Moved Code Blocks"},precondition:ke.has("isInDiffEditor")})}run(e,...t){const i=e.get(Ut),s=!i.getValue("diffEditor.experimental.showMoves");i.updateValue("diffEditor.experimental.showMoves",s)}}Zi(f1e);class g1e extends sl{constructor(){super({id:"diffEditor.toggleUseInlineViewWhenSpaceIsLimited",title:{value:v("toggleUseInlineViewWhenSpaceIsLimited","Toggle Use Inline View When Space Is Limited"),original:"Toggle Use Inline View When Space Is Limited"},precondition:ke.has("isInDiffEditor")})}run(e,...t){const i=e.get(Ut),s=!i.getValue("diffEditor.useInlineViewWhenSpaceIsLimited");i.updateValue("diffEditor.useInlineViewWhenSpaceIsLimited",s)}}Zi(g1e);tr.appendMenuItem(B.EditorTitle,{command:{id:new g1e().desc.id,title:v("useInlineViewWhenSpaceIsLimited","Use Inline View When Space Is Limited"),toggled:ke.has("config.diffEditor.useInlineViewWhenSpaceIsLimited"),precondition:ke.has("isInDiffEditor")},order:11,group:"1_diff",when:ke.and($.diffEditorRenderSideBySideInlineBreakpointReached,ke.has("isInDiffEditor"))});tr.appendMenuItem(B.EditorTitle,{command:{id:new f1e().desc.id,title:v("showMoves","Show Moved Code Blocks"),icon:Pe.move,toggled:xC.create("config.diffEditor.experimental.showMoves",!0),precondition:ke.has("isInDiffEditor")},order:10,group:"1_diff",when:ke.has("isInDiffEditor")});const r2={value:v("diffEditor","Diff Editor"),original:"Diff Editor"};class YZe extends Hu{constructor(){super({id:"diffEditor.switchSide",title:{value:v("switchSide","Switch Side"),original:"Switch Side"},icon:Pe.arrowSwap,precondition:ke.has("isInDiffEditor"),f1:!0,category:r2})}runEditorCommand(e,t,i){const s=FC(e);if(s instanceof am){if(i&&i.dryRun)return{destinationSelection:s.mapToOtherSide().destinationSelection};s.switchSide()}}}Zi(YZe);class ZZe extends Hu{constructor(){super({id:"diffEditor.exitCompareMove",title:{value:v("exitCompareMove","Exit Compare Move"),original:"Exit Compare Move"},icon:Pe.close,precondition:$.comparingMovedCode,f1:!1,category:r2,keybinding:{weight:1e4,primary:9}})}runEditorCommand(e,t,...i){const s=FC(e);s instanceof am&&s.exitCompareMove()}}Zi(ZZe);class XZe extends Hu{constructor(){super({id:"diffEditor.collapseAllUnchangedRegions",title:{value:v("collapseAllUnchangedRegions","Collapse All Unchanged Regions"),original:"Collapse All Unchanged Regions"},icon:Pe.fold,precondition:ke.has("isInDiffEditor"),f1:!0,category:r2})}runEditorCommand(e,t,...i){const s=FC(e);s instanceof am&&s.collapseAllUnchangedRegions()}}Zi(XZe);class QZe extends Hu{constructor(){super({id:"diffEditor.showAllUnchangedRegions",title:{value:v("showAllUnchangedRegions","Show All Unchanged Regions"),original:"Show All Unchanged Regions"},icon:Pe.unfold,precondition:ke.has("isInDiffEditor"),f1:!0,category:r2})}runEditorCommand(e,t,...i){const s=FC(e);s instanceof am&&s.showAllUnchangedRegions()}}Zi(QZe);const p1e={value:v("accessibleDiffViewer","Accessible Diff Viewer"),original:"Accessible Diff Viewer"};class OC extends sl{constructor(){super({id:OC.id,title:{value:v("editor.action.accessibleDiffViewer.next","Go to Next Difference"),original:"Go to Next Difference"},category:p1e,precondition:ke.has("isInDiffEditor"),keybinding:{primary:65,weight:100},f1:!0})}run(e){const t=FC(e);t==null||t.accessibleDiffViewerNext()}}OC.id="editor.action.accessibleDiffViewer.next";tr.appendMenuItem(B.EditorTitle,{command:{id:OC.id,title:v("Open Accessible Diff Viewer","Open Accessible Diff Viewer"),precondition:ke.has("isInDiffEditor")},order:10,group:"2_diff",when:ke.and($.accessibleDiffViewerVisible.negate(),ke.has("isInDiffEditor"))});class OE extends sl{constructor(){super({id:OE.id,title:{value:v("editor.action.accessibleDiffViewer.prev","Go to Previous Difference"),original:"Go to Previous Difference"},category:p1e,precondition:ke.has("isInDiffEditor"),keybinding:{primary:1089,weight:100},f1:!0})}run(e){const t=FC(e);t==null||t.accessibleDiffViewerPrev()}}OE.id="editor.action.accessibleDiffViewer.prev";function FC(n){var e;const t=n.get(ri),i=t.listDiffEditors(),s=(e=t.getFocusedCodeEditor())!==null&&e!==void 0?e:t.getActiveCodeEditor();if(!s)return null;for(let o=0,a=i.length;o<a;o++){const l=i[o];if(l.getModifiedEditor().getId()===s.getId()||l.getOriginalEditor().getId()===s.getId())return l}const r=Ka();if(r)for(const o of i){const a=o.getContainerDomNode();if(JZe(a,r))return o}return null}function JZe(n,e){let t=e;for(;t;){if(t===n)return!0;t=t.parentElement}return!1}Yt.registerCommandAlias("editor.action.diffReview.next",OC.id);Zi(OC);Yt.registerCommandAlias("editor.action.diffReview.prev",OE.id);Zi(OE);var eXe=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},tXe=function(n,e){return function(t,i){e(t,i,n)}},g7;const o2=new ze("selectionAnchorSet",!1);let Xf=g7=class{static get(e){return e.getContribution(g7.ID)}constructor(e,t){this.editor=e,this.selectionAnchorSetContextKey=o2.bindTo(t),this.modelChangeListener=e.onDidChangeModel(()=>this.selectionAnchorSetContextKey.reset())}setSelectionAnchor(){if(this.editor.hasModel()){const e=this.editor.getPosition();this.editor.changeDecorations(t=>{this.decorationId&&t.removeDecoration(this.decorationId),this.decorationId=t.addDecoration(Ze.fromPositions(e,e),{description:"selection-anchor",stickiness:1,hoverMessage:new xr().appendText(v("selectionAnchor","Selection Anchor")),className:"selection-anchor"})}),this.selectionAnchorSetContextKey.set(!!this.decorationId),ha(v("anchorSet","Anchor set at {0}:{1}",e.lineNumber,e.column))}}goToSelectionAnchor(){if(this.editor.hasModel()&&this.decorationId){const e=this.editor.getModel().getDecorationRange(this.decorationId);e&&this.editor.setPosition(e.getStartPosition())}}selectFromAnchorToCursor(){if(this.editor.hasModel()&&this.decorationId){const e=this.editor.getModel().getDecorationRange(this.decorationId);if(e){const t=this.editor.getPosition();this.editor.setSelection(Ze.fromPositions(e.getStartPosition(),t)),this.cancelSelectionAnchor()}}}cancelSelectionAnchor(){if(this.decorationId){const e=this.decorationId;this.editor.changeDecorations(t=>{t.removeDecoration(e),this.decorationId=void 0}),this.selectionAnchorSetContextKey.set(!1)}}dispose(){this.cancelSelectionAnchor(),this.modelChangeListener.dispose()}};Xf.ID="editor.contrib.selectionAnchorController";Xf=g7=eXe([tXe(1,ft)],Xf);class iXe extends qe{constructor(){super({id:"editor.action.setSelectionAnchor",label:v("setSelectionAnchor","Set Selection Anchor"),alias:"Set Selection Anchor",precondition:void 0,kbOpts:{kbExpr:$.editorTextFocus,primary:ws(2089,2080),weight:100}})}async run(e,t){var i;(i=Xf.get(t))===null||i===void 0||i.setSelectionAnchor()}}class nXe extends qe{constructor(){super({id:"editor.action.goToSelectionAnchor",label:v("goToSelectionAnchor","Go to Selection Anchor"),alias:"Go to Selection Anchor",precondition:o2})}async run(e,t){var i;(i=Xf.get(t))===null||i===void 0||i.goToSelectionAnchor()}}class sXe extends qe{constructor(){super({id:"editor.action.selectFromAnchorToCursor",label:v("selectFromAnchorToCursor","Select from Anchor to Cursor"),alias:"Select from Anchor to Cursor",precondition:o2,kbOpts:{kbExpr:$.editorTextFocus,primary:ws(2089,2089),weight:100}})}async run(e,t){var i;(i=Xf.get(t))===null||i===void 0||i.selectFromAnchorToCursor()}}class rXe extends qe{constructor(){super({id:"editor.action.cancelSelectionAnchor",label:v("cancelSelectionAnchor","Cancel Selection Anchor"),alias:"Cancel Selection Anchor",precondition:o2,kbOpts:{kbExpr:$.editorTextFocus,primary:9,weight:100}})}async run(e,t){var i;(i=Xf.get(t))===null||i===void 0||i.cancelSelectionAnchor()}}ti(Xf.ID,Xf,4);Ae(iXe);Ae(nXe);Ae(sXe);Ae(rXe);const oXe=U("editorOverviewRuler.bracketMatchForeground",{dark:"#A0A0A0",light:"#A0A0A0",hcDark:"#A0A0A0",hcLight:"#A0A0A0"},v("overviewRulerBracketMatchForeground","Overview ruler marker color for matching brackets."));class aXe extends qe{constructor(){super({id:"editor.action.jumpToBracket",label:v("smartSelect.jumpBracket","Go to Bracket"),alias:"Go to Bracket",precondition:void 0,kbOpts:{kbExpr:$.editorTextFocus,primary:3165,weight:100}})}run(e,t){var i;(i=bc.get(t))===null||i===void 0||i.jumpToBracket()}}class lXe extends qe{constructor(){super({id:"editor.action.selectToBracket",label:v("smartSelect.selectToBracket","Select to Bracket"),alias:"Select to Bracket",precondition:void 0,metadata:{description:nBe("smartSelect.selectToBracketDescription","Select the text inside and including the brackets or curly braces"),args:[{name:"args",schema:{type:"object",properties:{selectBrackets:{type:"boolean",default:!0}}}}]}})}run(e,t,i){var s;let r=!0;i&&i.selectBrackets===!1&&(r=!1),(s=bc.get(t))===null||s===void 0||s.selectToBracket(r)}}class cXe extends qe{constructor(){super({id:"editor.action.removeBrackets",label:v("smartSelect.removeBrackets","Remove Brackets"),alias:"Remove Brackets",precondition:void 0,kbOpts:{kbExpr:$.editorTextFocus,primary:2561,weight:100}})}run(e,t){var i;(i=bc.get(t))===null||i===void 0||i.removeBrackets(this.id)}}class uXe{constructor(e,t,i){this.position=e,this.brackets=t,this.options=i}}class bc extends pe{static get(e){return e.getContribution(bc.ID)}constructor(e){super(),this._editor=e,this._lastBracketsData=[],this._lastVersionId=0,this._decorations=this._editor.createDecorationsCollection(),this._updateBracketsSoon=this._register(new Ei(()=>this._updateBrackets(),50)),this._matchBrackets=this._editor.getOption(71),this._updateBracketsSoon.schedule(),this._register(e.onDidChangeCursorPosition(t=>{this._matchBrackets!=="never"&&this._updateBracketsSoon.schedule()})),this._register(e.onDidChangeModelContent(t=>{this._updateBracketsSoon.schedule()})),this._register(e.onDidChangeModel(t=>{this._lastBracketsData=[],this._updateBracketsSoon.schedule()})),this._register(e.onDidChangeModelLanguageConfiguration(t=>{this._lastBracketsData=[],this._updateBracketsSoon.schedule()})),this._register(e.onDidChangeConfiguration(t=>{t.hasChanged(71)&&(this._matchBrackets=this._editor.getOption(71),this._decorations.clear(),this._lastBracketsData=[],this._lastVersionId=0,this._updateBracketsSoon.schedule())})),this._register(e.onDidBlurEditorWidget(()=>{this._updateBracketsSoon.schedule()})),this._register(e.onDidFocusEditorWidget(()=>{this._updateBracketsSoon.schedule()}))}jumpToBracket(){if(!this._editor.hasModel())return;const e=this._editor.getModel(),t=this._editor.getSelections().map(i=>{const s=i.getStartPosition(),r=e.bracketPairs.matchBracket(s);let o=null;if(r)r[0].containsPosition(s)&&!r[1].containsPosition(s)?o=r[1].getStartPosition():r[1].containsPosition(s)&&(o=r[0].getStartPosition());else{const a=e.bracketPairs.findEnclosingBrackets(s);if(a)o=a[1].getStartPosition();else{const l=e.bracketPairs.findNextBracket(s);l&&l.range&&(o=l.range.getStartPosition())}}return o?new Ze(o.lineNumber,o.column,o.lineNumber,o.column):new Ze(s.lineNumber,s.column,s.lineNumber,s.column)});this._editor.setSelections(t),this._editor.revealRange(t[0])}selectToBracket(e){if(!this._editor.hasModel())return;const t=this._editor.getModel(),i=[];this._editor.getSelections().forEach(s=>{const r=s.getStartPosition();let o=t.bracketPairs.matchBracket(r);if(!o&&(o=t.bracketPairs.findEnclosingBrackets(r),!o)){const c=t.bracketPairs.findNextBracket(r);c&&c.range&&(o=t.bracketPairs.matchBracket(c.range.getStartPosition()))}let a=null,l=null;if(o){o.sort(M.compareRangesUsingStarts);const[c,u]=o;if(a=e?c.getStartPosition():c.getEndPosition(),l=e?u.getEndPosition():u.getStartPosition(),u.containsPosition(r)){const h=a;a=l,l=h}}a&&l&&i.push(new Ze(a.lineNumber,a.column,l.lineNumber,l.column))}),i.length>0&&(this._editor.setSelections(i),this._editor.revealRange(i[0]))}removeBrackets(e){if(!this._editor.hasModel())return;const t=this._editor.getModel();this._editor.getSelections().forEach(i=>{const s=i.getPosition();let r=t.bracketPairs.matchBracket(s);r||(r=t.bracketPairs.findEnclosingBrackets(s)),r&&(this._editor.pushUndoStop(),this._editor.executeEdits(e,[{range:r[0],text:""},{range:r[1],text:""}]),this._editor.pushUndoStop())})}_updateBrackets(){if(this._matchBrackets==="never")return;this._recomputeBrackets();const e=[];let t=0;for(const i of this._lastBracketsData){const s=i.brackets;s&&(e[t++]={range:s[0],options:i.options},e[t++]={range:s[1],options:i.options})}this._decorations.set(e)}_recomputeBrackets(){if(!this._editor.hasModel()||!this._editor.hasWidgetFocus()){this._lastBracketsData=[],this._lastVersionId=0;return}const e=this._editor.getSelections();if(e.length>100){this._lastBracketsData=[],this._lastVersionId=0;return}const t=this._editor.getModel(),i=t.getVersionId();let s=[];this._lastVersionId===i&&(s=this._lastBracketsData);const r=[];let o=0;for(let h=0,d=e.length;h<d;h++){const f=e[h];f.isEmpty()&&(r[o++]=f.getStartPosition())}r.length>1&&r.sort(he.compare);const a=[];let l=0,c=0;const u=s.length;for(let h=0,d=r.length;h<d;h++){const f=r[h];for(;c<u&&s[c].position.isBefore(f);)c++;if(c<u&&s[c].position.equals(f))a[l++]=s[c];else{let g=t.bracketPairs.matchBracket(f,20),p=bc._DECORATION_OPTIONS_WITH_OVERVIEW_RULER;!g&&this._matchBrackets==="always"&&(g=t.bracketPairs.findEnclosingBrackets(f,20),p=bc._DECORATION_OPTIONS_WITHOUT_OVERVIEW_RULER),a[l++]=new uXe(f,g,p)}}this._lastBracketsData=a,this._lastVersionId=i}}bc.ID="editor.contrib.bracketMatchingController";bc._DECORATION_OPTIONS_WITH_OVERVIEW_RULER=yt.register({description:"bracket-match-overview",stickiness:1,className:"bracket-match",overviewRuler:{color:Sn(oXe),position:el.Center}});bc._DECORATION_OPTIONS_WITHOUT_OVERVIEW_RULER=yt.register({description:"bracket-match-no-overview",stickiness:1,className:"bracket-match"});ti(bc.ID,bc,1);Ae(lXe);Ae(aXe);Ae(cXe);tr.appendMenuItem(B.MenubarGoMenu,{group:"5_infile_nav",command:{id:"editor.action.jumpToBracket",title:v({key:"miGoToBracket",comment:["&& denotes a mnemonic"]},"Go to &&Bracket")},order:2});class hXe{constructor(e,t){this._selection=e,this._isMovingLeft=t}getEditOperations(e,t){if(this._selection.startLineNumber!==this._selection.endLineNumber||this._selection.isEmpty())return;const i=this._selection.startLineNumber,s=this._selection.startColumn,r=this._selection.endColumn;if(!(this._isMovingLeft&&s===1)&&!(!this._isMovingLeft&&r===e.getLineMaxColumn(i)))if(this._isMovingLeft){const o=new M(i,s-1,i,s),a=e.getValueInRange(o);t.addEditOperation(o,null),t.addEditOperation(new M(i,r,i,r),a)}else{const o=new M(i,r,i,r+1),a=e.getValueInRange(o);t.addEditOperation(o,null),t.addEditOperation(new M(i,s,i,s),a)}}computeCursorState(e,t){return this._isMovingLeft?new Ze(this._selection.startLineNumber,this._selection.startColumn-1,this._selection.endLineNumber,this._selection.endColumn-1):new Ze(this._selection.startLineNumber,this._selection.startColumn+1,this._selection.endLineNumber,this._selection.endColumn+1)}}class m1e extends qe{constructor(e,t){super(t),this.left=e}run(e,t){if(!t.hasModel())return;const i=[],s=t.getSelections();for(const r of s)i.push(new hXe(r,this.left));t.pushUndoStop(),t.executeCommands(this.id,i),t.pushUndoStop()}}class dXe extends m1e{constructor(){super(!0,{id:"editor.action.moveCarretLeftAction",label:v("caret.moveLeft","Move Selected Text Left"),alias:"Move Selected Text Left",precondition:$.writable})}}class fXe extends m1e{constructor(){super(!1,{id:"editor.action.moveCarretRightAction",label:v("caret.moveRight","Move Selected Text Right"),alias:"Move Selected Text Right",precondition:$.writable})}}Ae(dXe);Ae(fXe);class gXe extends qe{constructor(){super({id:"editor.action.transposeLetters",label:v("transposeLetters.label","Transpose Letters"),alias:"Transpose Letters",precondition:$.writable,kbOpts:{kbExpr:$.textInputFocus,primary:0,mac:{primary:306},weight:100}})}run(e,t){if(!t.hasModel())return;const i=t.getModel(),s=[],r=t.getSelections();for(const o of r){if(!o.isEmpty())continue;const a=o.startLineNumber,l=o.startColumn,c=i.getLineMaxColumn(a);if(a===1&&(l===1||l===2&&c===2))continue;const u=l===c?o.getPosition():_i.rightPosition(i,o.getPosition().lineNumber,o.getPosition().column),h=_i.leftPosition(i,u),d=_i.leftPosition(i,h),f=i.getValueInRange(M.fromPositions(d,h)),g=i.getValueInRange(M.fromPositions(h,u)),p=M.fromPositions(d,u);s.push(new cr(p,g+f))}s.length>0&&(t.pushUndoStop(),t.executeCommands(this.id,s),t.pushUndoStop())}}Ae(gXe);const W_="9_cutcopypaste",pXe=Cu||document.queryCommandSupported("cut"),_1e=Cu||document.queryCommandSupported("copy"),mXe=typeof navigator.clipboard>"u"||Ol?document.queryCommandSupported("paste"):!0;function gK(n){return n.register(),n}const _Xe=pXe?gK(new EC({id:"editor.action.clipboardCutAction",precondition:void 0,kbOpts:Cu?{primary:2102,win:{primary:2102,secondary:[1044]},weight:100}:void 0,menuOpts:[{menuId:B.MenubarEditMenu,group:"2_ccp",title:v({key:"miCut",comment:["&& denotes a mnemonic"]},"Cu&&t"),order:1},{menuId:B.EditorContext,group:W_,title:v("actions.clipboard.cutLabel","Cut"),when:$.writable,order:1},{menuId:B.CommandPalette,group:"",title:v("actions.clipboard.cutLabel","Cut"),order:1},{menuId:B.SimpleEditorContext,group:W_,title:v("actions.clipboard.cutLabel","Cut"),when:$.writable,order:1}]})):void 0,vXe=_1e?gK(new EC({id:"editor.action.clipboardCopyAction",precondition:void 0,kbOpts:Cu?{primary:2081,win:{primary:2081,secondary:[2067]},weight:100}:void 0,menuOpts:[{menuId:B.MenubarEditMenu,group:"2_ccp",title:v({key:"miCopy",comment:["&& denotes a mnemonic"]},"&&Copy"),order:2},{menuId:B.EditorContext,group:W_,title:v("actions.clipboard.copyLabel","Copy"),order:2},{menuId:B.CommandPalette,group:"",title:v("actions.clipboard.copyLabel","Copy"),order:1},{menuId:B.SimpleEditorContext,group:W_,title:v("actions.clipboard.copyLabel","Copy"),order:2}]})):void 0;tr.appendMenuItem(B.MenubarEditMenu,{submenu:B.MenubarCopy,title:{value:v("copy as","Copy As"),original:"Copy As"},group:"2_ccp",order:3});tr.appendMenuItem(B.EditorContext,{submenu:B.EditorContextCopy,title:{value:v("copy as","Copy As"),original:"Copy As"},group:W_,order:3});tr.appendMenuItem(B.EditorContext,{submenu:B.EditorContextShare,title:{value:v("share","Share"),original:"Share"},group:"11_share",order:-1,when:ke.and(ke.notEquals("resourceScheme","output"),$.editorTextFocus)});tr.appendMenuItem(B.EditorTitleContext,{submenu:B.EditorTitleContextShare,title:{value:v("share","Share"),original:"Share"},group:"11_share",order:-1});tr.appendMenuItem(B.ExplorerContext,{submenu:B.ExplorerContextShare,title:{value:v("share","Share"),original:"Share"},group:"11_share",order:-1});const _3=mXe?gK(new EC({id:"editor.action.clipboardPasteAction",precondition:void 0,kbOpts:Cu?{primary:2100,win:{primary:2100,secondary:[1043]},linux:{primary:2100,secondary:[1043]},weight:100}:void 0,menuOpts:[{menuId:B.MenubarEditMenu,group:"2_ccp",title:v({key:"miPaste",comment:["&& denotes a mnemonic"]},"&&Paste"),order:4},{menuId:B.EditorContext,group:W_,title:v("actions.clipboard.pasteLabel","Paste"),when:$.writable,order:4},{menuId:B.CommandPalette,group:"",title:v("actions.clipboard.pasteLabel","Paste"),order:1},{menuId:B.SimpleEditorContext,group:W_,title:v("actions.clipboard.pasteLabel","Paste"),when:$.writable,order:4}]})):void 0;class bXe extends qe{constructor(){super({id:"editor.action.clipboardCopyWithSyntaxHighlightingAction",label:v("actions.clipboard.copyWithSyntaxHighlightingLabel","Copy With Syntax Highlighting"),alias:"Copy With Syntax Highlighting",precondition:void 0,kbOpts:{kbExpr:$.textInputFocus,primary:0,weight:100}})}run(e,t){!t.hasModel()||!t.getOption(37)&&t.getSelection().isEmpty()||(b9.forceCopyWithSyntaxHighlighting=!0,t.focus(),t.getContainerDomNode().ownerDocument.execCommand("copy"),b9.forceCopyWithSyntaxHighlighting=!1)}}function v1e(n,e){n&&(n.addImplementation(1e4,"code-editor",(t,i)=>{const s=t.get(ri).getFocusedCodeEditor();if(s&&s.hasTextFocus()){const r=s.getOption(37),o=s.getSelection();return o&&o.isEmpty()&&!r||s.getContainerDomNode().ownerDocument.execCommand(e),!0}return!1}),n.addImplementation(0,"generic-dom",(t,i)=>(LC().execCommand(e),!0)))}v1e(_Xe,"cut");v1e(vXe,"copy");_3&&(_3.addImplementation(1e4,"code-editor",(n,e)=>{const t=n.get(ri),i=n.get(ag),s=t.getFocusedCodeEditor();return s&&s.hasTextFocus()?!s.getContainerDomNode().ownerDocument.execCommand("paste")&&Dm?(async()=>{const o=await i.readText();if(o!==""){const a=DL.INSTANCE.get(o);let l=!1,c=null,u=null;a&&(l=s.getOption(37)&&!!a.isFromEmptySelection,c=typeof a.multicursorText<"u"?a.multicursorText:null,u=a.mode),s.trigger("keyboard","paste",{text:o,pasteOnNewLine:l,multicursorText:c,mode:u})}})():!0:!1}),_3.addImplementation(0,"generic-dom",(n,e)=>(LC().execCommand("paste"),!0)));_1e&&Ae(bXe);const a2=Object.freeze({id:"editor",order:5,type:"object",title:v("editorConfigurationTitle","Editor"),scope:5}),xP={...a2,properties:{"editor.tabSize":{type:"number",default:Lr.tabSize,minimum:1,markdownDescription:v("tabSize","The number of spaces a tab is equal to. This setting is overridden based on the file contents when {0} is on.","`#editor.detectIndentation#`")},"editor.indentSize":{anyOf:[{type:"string",enum:["tabSize"]},{type:"number",minimum:1}],default:"tabSize",markdownDescription:v("indentSize",'The number of spaces used for indentation or `"tabSize"` to use the value from `#editor.tabSize#`. This setting is overridden based on the file contents when `#editor.detectIndentation#` is on.')},"editor.insertSpaces":{type:"boolean",default:Lr.insertSpaces,markdownDescription:v("insertSpaces","Insert spaces when pressing `Tab`. This setting is overridden based on the file contents when {0} is on.","`#editor.detectIndentation#`")},"editor.detectIndentation":{type:"boolean",default:Lr.detectIndentation,markdownDescription:v("detectIndentation","Controls whether {0} and {1} will be automatically detected when a file is opened based on the file contents.","`#editor.tabSize#`","`#editor.insertSpaces#`")},"editor.trimAutoWhitespace":{type:"boolean",default:Lr.trimAutoWhitespace,description:v("trimAutoWhitespace","Remove trailing auto inserted whitespace.")},"editor.largeFileOptimizations":{type:"boolean",default:Lr.largeFileOptimizations,description:v("largeFileOptimizations","Special handling for large files to disable certain memory intensive features.")},"editor.wordBasedSuggestions":{enum:["off","currentDocument","matchingDocuments","allDocuments"],default:"matchingDocuments",enumDescriptions:[v("wordBasedSuggestions.off","Turn off Word Based Suggestions."),v("wordBasedSuggestions.currentDocument","Only suggest words from the active document."),v("wordBasedSuggestions.matchingDocuments","Suggest words from all open documents of the same language."),v("wordBasedSuggestions.allDocuments","Suggest words from all open documents.")],description:v("wordBasedSuggestions","Controls whether completions should be computed based on words in the document and from which documents they are computed.")},"editor.semanticHighlighting.enabled":{enum:[!0,!1,"configuredByTheme"],enumDescriptions:[v("semanticHighlighting.true","Semantic highlighting enabled for all color themes."),v("semanticHighlighting.false","Semantic highlighting disabled for all color themes."),v("semanticHighlighting.configuredByTheme","Semantic highlighting is configured by the current color theme's `semanticHighlighting` setting.")],default:"configuredByTheme",description:v("semanticHighlighting.enabled","Controls whether the semanticHighlighting is shown for the languages that support it.")},"editor.stablePeek":{type:"boolean",default:!1,markdownDescription:v("stablePeek","Keep peek editors open even when double-clicking their content or when hitting `Escape`.")},"editor.maxTokenizationLineLength":{type:"integer",default:2e4,description:v("maxTokenizationLineLength","Lines above this length will not be tokenized for performance reasons")},"editor.experimental.asyncTokenization":{type:"boolean",default:!1,description:v("editor.experimental.asyncTokenization","Controls whether the tokenization should happen asynchronously on a web worker."),tags:["experimental"]},"editor.experimental.asyncTokenizationLogging":{type:"boolean",default:!1,description:v("editor.experimental.asyncTokenizationLogging","Controls whether async tokenization should be logged. For debugging only.")},"editor.experimental.asyncTokenizationVerification":{type:"boolean",default:!1,description:v("editor.experimental.asyncTokenizationVerification","Controls whether async tokenization should be verified against legacy background tokenization. Might slow down tokenization. For debugging only."),tags:["experimental"]},"editor.language.brackets":{type:["array","null"],default:null,description:v("schema.brackets","Defines the bracket symbols that increase or decrease the indentation."),items:{type:"array",items:[{type:"string",description:v("schema.openBracket","The opening bracket character or string sequence.")},{type:"string",description:v("schema.closeBracket","The closing bracket character or string sequence.")}]}},"editor.language.colorizedBracketPairs":{type:["array","null"],default:null,description:v("schema.colorizedBracketPairs","Defines the bracket pairs that are colorized by their nesting level if bracket pair colorization is enabled."),items:{type:"array",items:[{type:"string",description:v("schema.openBracket","The opening bracket character or string sequence.")},{type:"string",description:v("schema.closeBracket","The closing bracket character or string sequence.")}]}},"diffEditor.maxComputationTime":{type:"number",default:Mr.maxComputationTime,description:v("maxComputationTime","Timeout in milliseconds after which diff computation is cancelled. Use 0 for no timeout.")},"diffEditor.maxFileSize":{type:"number",default:Mr.maxFileSize,description:v("maxFileSize","Maximum file size in MB for which to compute diffs. Use 0 for no limit.")},"diffEditor.renderSideBySide":{type:"boolean",default:Mr.renderSideBySide,description:v("sideBySide","Controls whether the diff editor shows the diff side by side or inline.")},"diffEditor.renderSideBySideInlineBreakpoint":{type:"number",default:Mr.renderSideBySideInlineBreakpoint,description:v("renderSideBySideInlineBreakpoint","If the diff editor width is smaller than this value, the inline view is used.")},"diffEditor.useInlineViewWhenSpaceIsLimited":{type:"boolean",default:Mr.useInlineViewWhenSpaceIsLimited,description:v("useInlineViewWhenSpaceIsLimited","If enabled and the editor width is too small, the inline view is used.")},"diffEditor.renderMarginRevertIcon":{type:"boolean",default:Mr.renderMarginRevertIcon,description:v("renderMarginRevertIcon","When enabled, the diff editor shows arrows in its glyph margin to revert changes.")},"diffEditor.ignoreTrimWhitespace":{type:"boolean",default:Mr.ignoreTrimWhitespace,description:v("ignoreTrimWhitespace","When enabled, the diff editor ignores changes in leading or trailing whitespace.")},"diffEditor.renderIndicators":{type:"boolean",default:Mr.renderIndicators,description:v("renderIndicators","Controls whether the diff editor shows +/- indicators for added/removed changes.")},"diffEditor.codeLens":{type:"boolean",default:Mr.diffCodeLens,description:v("codeLens","Controls whether the editor shows CodeLens.")},"diffEditor.wordWrap":{type:"string",enum:["off","on","inherit"],default:Mr.diffWordWrap,markdownEnumDescriptions:[v("wordWrap.off","Lines will never wrap."),v("wordWrap.on","Lines will wrap at the viewport width."),v("wordWrap.inherit","Lines will wrap according to the {0} setting.","`#editor.wordWrap#`")]},"diffEditor.diffAlgorithm":{type:"string",enum:["legacy","advanced"],default:Mr.diffAlgorithm,markdownEnumDescriptions:[v("diffAlgorithm.legacy","Uses the legacy diffing algorithm."),v("diffAlgorithm.advanced","Uses the advanced diffing algorithm.")],tags:["experimental"]},"diffEditor.hideUnchangedRegions.enabled":{type:"boolean",default:Mr.hideUnchangedRegions.enabled,markdownDescription:v("hideUnchangedRegions.enabled","Controls whether the diff editor shows unchanged regions.")},"diffEditor.hideUnchangedRegions.revealLineCount":{type:"integer",default:Mr.hideUnchangedRegions.revealLineCount,markdownDescription:v("hideUnchangedRegions.revealLineCount","Controls how many lines are used for unchanged regions."),minimum:1},"diffEditor.hideUnchangedRegions.minimumLineCount":{type:"integer",default:Mr.hideUnchangedRegions.minimumLineCount,markdownDescription:v("hideUnchangedRegions.minimumLineCount","Controls how many lines are used as a minimum for unchanged regions."),minimum:1},"diffEditor.hideUnchangedRegions.contextLineCount":{type:"integer",default:Mr.hideUnchangedRegions.contextLineCount,markdownDescription:v("hideUnchangedRegions.contextLineCount","Controls how many lines are used as context when comparing unchanged regions."),minimum:1},"diffEditor.experimental.showMoves":{type:"boolean",default:Mr.experimental.showMoves,markdownDescription:v("showMoves","Controls whether the diff editor should show detected code moves.")},"diffEditor.experimental.showEmptyDecorations":{type:"boolean",default:Mr.experimental.showEmptyDecorations,description:v("showEmptyDecorations","Controls whether the diff editor shows empty decorations to see where characters got inserted or deleted.")}}};function yXe(n){return typeof n.type<"u"||typeof n.anyOf<"u"}for(const n of B0){const e=n.schema;if(typeof e<"u")if(yXe(e))xP.properties[`editor.${n.name}`]=e;else for(const t in e)Object.hasOwnProperty.call(e,t)&&(xP.properties[t]=e[t])}let LI=null;function b1e(){return LI===null&&(LI=Object.create(null),Object.keys(xP.properties).forEach(n=>{LI[n]=!0})),LI}function CXe(n){return b1e()[`editor.${n}`]||!1}function wXe(n){return b1e()[`diffEditor.${n}`]||!1}const SXe=vn.as($u.Configuration);SXe.registerConfiguration(xP);const FE=Bt("IWorkspaceEditService");class pK{constructor(e){this.metadata=e}static convert(e){return e.edits.map(t=>{if(Ff.is(t))return Ff.lift(t);if(Ib.is(t))return Ib.lift(t);throw new Error("Unsupported edit")})}}class Ff extends pK{static is(e){return e instanceof Ff?!0:ao(e)&&it.isUri(e.resource)&&ao(e.textEdit)}static lift(e){return e instanceof Ff?e:new Ff(e.resource,e.textEdit,e.versionId,e.metadata)}constructor(e,t,i=void 0,s){super(s),this.resource=e,this.textEdit=t,this.versionId=i}}class Ib extends pK{static is(e){return e instanceof Ib?!0:ao(e)&&(!!e.newResource||!!e.oldResource)}static lift(e){return e instanceof Ib?e:new Ib(e.oldResource,e.newResource,e.options,e.metadata)}constructor(e,t,i={},s){super(s),this.oldResource=e,this.newResource=t,this.options=i}}const mK=Bt("IEditorCancelService"),y1e=new ze("cancellableOperation",!1,v("cancellableOperation","Whether the editor runs a cancellable operation, e.g. like 'Peek References'"));jt(mK,class{constructor(){this._tokens=new WeakMap}add(n,e){let t=this._tokens.get(n);t||(t=n.invokeWithinContext(s=>{const r=y1e.bindTo(s.get(ft)),o=new oo;return{key:r,tokens:o}}),this._tokens.set(n,t));let i;return t.key.set(!0),i=t.tokens.push(e),()=>{i&&(i(),t.key.set(!t.tokens.isEmpty()),i=void 0)}}cancel(n){const e=this._tokens.get(n);if(!e)return;const t=e.tokens.pop();t&&(t.cancel(),e.key.set(!e.tokens.isEmpty()))}},1);class kXe extends es{constructor(e,t){super(t),this.editor=e,this._unregister=e.invokeWithinContext(i=>i.get(mK).add(e,this))}dispose(){this._unregister(),super.dispose()}}Be(new class extends Ks{constructor(){super({id:"editor.cancelOperation",kbOpts:{weight:100,primary:9},precondition:y1e})}runEditorCommand(n,e){n.get(mK).cancel(e)}});let C1e=class p7{constructor(e,t){if(this.flags=t,this.flags&1){const i=e.getModel();this.modelVersionId=i?I_("{0}#{1}",i.uri.toString(),i.getVersionId()):null}else this.modelVersionId=null;this.flags&4?this.position=e.getPosition():this.position=null,this.flags&2?this.selection=e.getSelection():this.selection=null,this.flags&8?(this.scrollLeft=e.getScrollLeft(),this.scrollTop=e.getScrollTop()):(this.scrollLeft=-1,this.scrollTop=-1)}_equals(e){if(!(e instanceof p7))return!1;const t=e;return!(this.modelVersionId!==t.modelVersionId||this.scrollLeft!==t.scrollLeft||this.scrollTop!==t.scrollTop||!this.position&&t.position||this.position&&!t.position||this.position&&t.position&&!this.position.equals(t.position)||!this.selection&&t.selection||this.selection&&!t.selection||this.selection&&t.selection&&!this.selection.equalsRange(t.selection))}validate(e){return this._equals(new p7(e,this.flags))}};class lm extends kXe{constructor(e,t,i,s){super(e,s),this._listener=new xe,t&4&&this._listener.add(e.onDidChangeCursorPosition(r=>{(!i||!M.containsPosition(i,r.position))&&this.cancel()})),t&2&&this._listener.add(e.onDidChangeCursorSelection(r=>{(!i||!M.containsRange(i,r.selection))&&this.cancel()})),t&8&&this._listener.add(e.onDidScrollChange(r=>this.cancel())),t&1&&(this._listener.add(e.onDidChangeModel(r=>this.cancel())),this._listener.add(e.onDidChangeModelContent(r=>this.cancel())))}dispose(){this._listener.dispose(),super.dispose()}}class _K extends es{constructor(e,t){super(t),this._listener=e.onDidChangeContent(()=>this.cancel())}dispose(){this._listener.dispose(),super.dispose()}}class ut{constructor(e){this.value=e}equals(e){return this.value===e.value}contains(e){return this.equals(e)||this.value===""||e.value.startsWith(this.value+ut.sep)}intersects(e){return this.contains(e)||e.contains(this)}append(e){return new ut(this.value+ut.sep+e)}}ut.sep=".";ut.None=new ut("@@none@@");ut.Empty=new ut("");ut.QuickFix=new ut("quickfix");ut.Refactor=new ut("refactor");ut.RefactorExtract=ut.Refactor.append("extract");ut.RefactorInline=ut.Refactor.append("inline");ut.RefactorMove=ut.Refactor.append("move");ut.RefactorRewrite=ut.Refactor.append("rewrite");ut.Notebook=new ut("notebook");ut.Source=new ut("source");ut.SourceOrganizeImports=ut.Source.append("organizeImports");ut.SourceFixAll=ut.Source.append("fixAll");ut.SurroundWith=ut.Refactor.append("surround");var da;(function(n){n.Refactor="refactor",n.RefactorPreview="refactor preview",n.Lightbulb="lightbulb",n.Default="other (default)",n.SourceAction="source action",n.QuickFix="quick fix action",n.FixAll="fix all",n.OrganizeImports="organize imports",n.AutoFix="auto fix",n.QuickFixHover="quick fix hover window",n.OnSave="save participants",n.ProblemsView="problems view"})(da||(da={}));function LXe(n,e){return!(n.include&&!n.include.intersects(e)||n.excludes&&n.excludes.some(t=>w1e(e,t,n.include))||!n.includeSourceActions&&ut.Source.contains(e))}function xXe(n,e){const t=e.kind?new ut(e.kind):void 0;return!(n.include&&(!t||!n.include.contains(t))||n.excludes&&t&&n.excludes.some(i=>w1e(t,i,n.include))||!n.includeSourceActions&&t&&ut.Source.contains(t)||n.onlyIncludePreferredActions&&!e.isPreferred)}function w1e(n,e,t){return!(!e.contains(n)||t&&e.contains(t))}class Sh{static fromUser(e,t){return!e||typeof e!="object"?new Sh(t.kind,t.apply,!1):new Sh(Sh.getKindFromUser(e,t.kind),Sh.getApplyFromUser(e,t.apply),Sh.getPreferredUser(e))}static getApplyFromUser(e,t){switch(typeof e.apply=="string"?e.apply.toLowerCase():""){case"first":return"first";case"never":return"never";case"ifsingle":return"ifSingle";default:return t}}static getKindFromUser(e,t){return typeof e.kind=="string"?new ut(e.kind):t}static getPreferredUser(e){return typeof e.preferred=="boolean"?e.preferred:!1}constructor(e,t,i){this.kind=e,this.apply=t,this.preferred=i}}class EXe{constructor(e,t,i){this.action=e,this.provider=t,this.highlightRange=i}async resolve(e){var t;if(!((t=this.provider)===null||t===void 0)&&t.resolveCodeAction&&!this.action.edit){let i;try{i=await this.provider.resolveCodeAction(this.action,e)}catch(s){Jn(s)}i&&(this.action.edit=i.edit)}return this}}const S1e="editor.action.codeAction",vK="editor.action.quickFix",k1e="editor.action.autoFix",L1e="editor.action.refactor",x1e="editor.action.sourceAction",bK="editor.action.organizeImports",yK="editor.action.fixAll";class fk extends pe{static codeActionsPreferredComparator(e,t){return e.isPreferred&&!t.isPreferred?-1:!e.isPreferred&&t.isPreferred?1:0}static codeActionsComparator({action:e},{action:t}){return e.isAI&&!t.isAI?1:!e.isAI&&t.isAI?-1:Ir(e.diagnostics)?Ir(t.diagnostics)?fk.codeActionsPreferredComparator(e,t):-1:Ir(t.diagnostics)?1:fk.codeActionsPreferredComparator(e,t)}constructor(e,t,i){super(),this.documentation=t,this._register(i),this.allActions=[...e].sort(fk.codeActionsComparator),this.validActions=this.allActions.filter(({action:s})=>!s.disabled)}get hasAutoFix(){return this.validActions.some(({action:e})=>!!e.kind&&ut.QuickFix.contains(new ut(e.kind))&&!!e.isPreferred)}get hasAIFix(){return this.validActions.some(({action:e})=>!!e.isAI)}get allAIFixes(){return this.validActions.every(({action:e})=>!!e.isAI)}}const lie={actions:[],documentation:void 0};async function gk(n,e,t,i,s,r){var o;const a=i.filter||{},l={...a,excludes:[...a.excludes||[],ut.Notebook]},c={only:(o=a.include)===null||o===void 0?void 0:o.value,trigger:i.type},u=new _K(e,r),h=i.type===2,d=DXe(n,e,h?l:a),f=new xe,g=d.map(async m=>{try{s.report(m);const _=await m.provideCodeActions(e,t,c,u.token);if(_&&f.add(_),u.token.isCancellationRequested)return lie;const b=((_==null?void 0:_.actions)||[]).filter(w=>w&&xXe(a,w)),y=TXe(m,b,a.include);return{actions:b.map(w=>new EXe(w,m)),documentation:y}}catch(_){if(Wu(_))throw _;return Jn(_),lie}}),p=n.onDidChange(()=>{const m=n.all(e);On(m,d)||u.cancel()});try{const m=await Promise.all(g),_=m.map(y=>y.actions).flat(),b=[...Tu(m.map(y=>y.documentation)),...IXe(n,e,i,_)];return new fk(_,b,f)}finally{p.dispose(),u.dispose()}}function DXe(n,e,t){return n.all(e).filter(i=>i.providedCodeActionKinds?i.providedCodeActionKinds.some(s=>LXe(t,new ut(s))):!0)}function*IXe(n,e,t,i){var s,r,o;if(e&&i.length)for(const a of n.all(e))a._getAdditionalMenuItems&&(yield*(s=a._getAdditionalMenuItems)===null||s===void 0?void 0:s.call(a,{trigger:t.type,only:(o=(r=t.filter)===null||r===void 0?void 0:r.include)===null||o===void 0?void 0:o.value},i.map(l=>l.action)))}function TXe(n,e,t){if(!n.documentation)return;const i=n.documentation.map(s=>({kind:new ut(s.kind),command:s.command}));if(t){let s;for(const r of i)r.kind.contains(t)&&(s?s.kind.contains(r.kind)&&(s=r):s=r);if(s)return s==null?void 0:s.command}for(const s of e)if(s.kind){for(const r of i)if(r.kind.contains(new ut(s.kind)))return r.command}}var EP;(function(n){n.OnSave="onSave",n.FromProblemsView="fromProblemsView",n.FromCodeActions="fromCodeActions"})(EP||(EP={}));async function NXe(n,e,t,i,s=Ft.None){var r;const o=n.get(FE),a=n.get(Dn),l=n.get(fa),c=n.get(is);if(l.publicLog2("codeAction.applyCodeAction",{codeActionTitle:e.action.title,codeActionKind:e.action.kind,codeActionIsPreferred:!!e.action.isPreferred,reason:t}),await e.resolve(s),!s.isCancellationRequested&&!(!((r=e.action.edit)===null||r===void 0)&&r.edits.length&&!(await o.apply(e.action.edit,{editor:i==null?void 0:i.editor,label:e.action.title,quotableLabel:e.action.title,code:"undoredo.codeAction",respectAutoSaveConfig:t!==EP.OnSave,showPreview:i==null?void 0:i.preview})).isApplied)&&e.action.command)try{await a.executeCommand(e.action.command.id,...e.action.command.arguments||[])}catch(u){const h=AXe(u);c.error(typeof h=="string"?h:v("applyCodeActionFailed","An unknown error occurred while applying the code action"))}}function AXe(n){return typeof n=="string"?n:n instanceof Error&&typeof n.message=="string"?n.message:void 0}Yt.registerCommand("_executeCodeActionProvider",async function(n,e,t,i,s){if(!(e instanceof it))throw Tl();const{codeActionProvider:r}=n.get(Ge),o=n.get(fn).getModel(e);if(!o)throw Tl();const a=Ze.isISelection(t)?Ze.liftSelection(t):M.isIRange(t)?o.validateRange(t):void 0;if(!a)throw Tl();const l=typeof i=="string"?new ut(i):void 0,c=await gk(r,o,a,{type:1,triggerAction:da.Default,filter:{includeSourceActions:!0,include:l}},Of.None,Ft.None),u=[],h=Math.min(c.validActions.length,typeof s=="number"?s:0);for(let d=0;d<h;d++)u.push(c.validActions[d].resolve(Ft.None));try{return await Promise.all(u),c.validActions.map(d=>d.action)}finally{setTimeout(()=>c.dispose(),100)}});var PXe=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},RXe=function(n,e){return function(t,i){e(t,i,n)}},m7;let DP=m7=class{constructor(e){this.keybindingService=e}getResolver(){const e=new Im(()=>this.keybindingService.getKeybindings().filter(t=>m7.codeActionCommands.indexOf(t.command)>=0).filter(t=>t.resolvedKeybinding).map(t=>{let i=t.commandArgs;return t.command===bK?i={kind:ut.SourceOrganizeImports.value}:t.command===yK&&(i={kind:ut.SourceFixAll.value}),{resolvedKeybinding:t.resolvedKeybinding,...Sh.fromUser(i,{kind:ut.None,apply:"never"})}}));return t=>{if(t.kind){const i=this.bestKeybindingForCodeAction(t,e.value);return i==null?void 0:i.resolvedKeybinding}}}bestKeybindingForCodeAction(e,t){if(!e.kind)return;const i=new ut(e.kind);return t.filter(s=>s.kind.contains(i)).filter(s=>s.preferred?e.isPreferred:!0).reduceRight((s,r)=>s?s.kind.contains(r.kind)?r:s:r,void 0)}};DP.codeActionCommands=[L1e,S1e,x1e,bK,yK];DP=m7=PXe([RXe(0,Di)],DP);U("symbolIcon.arrayForeground",{dark:Re,light:Re,hcDark:Re,hcLight:Re},v("symbolIcon.arrayForeground","The foreground color for array symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));U("symbolIcon.booleanForeground",{dark:Re,light:Re,hcDark:Re,hcLight:Re},v("symbolIcon.booleanForeground","The foreground color for boolean symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));U("symbolIcon.classForeground",{dark:"#EE9D28",light:"#D67E00",hcDark:"#EE9D28",hcLight:"#D67E00"},v("symbolIcon.classForeground","The foreground color for class symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));U("symbolIcon.colorForeground",{dark:Re,light:Re,hcDark:Re,hcLight:Re},v("symbolIcon.colorForeground","The foreground color for color symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));U("symbolIcon.constantForeground",{dark:Re,light:Re,hcDark:Re,hcLight:Re},v("symbolIcon.constantForeground","The foreground color for constant symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));U("symbolIcon.constructorForeground",{dark:"#B180D7",light:"#652D90",hcDark:"#B180D7",hcLight:"#652D90"},v("symbolIcon.constructorForeground","The foreground color for constructor symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));U("symbolIcon.enumeratorForeground",{dark:"#EE9D28",light:"#D67E00",hcDark:"#EE9D28",hcLight:"#D67E00"},v("symbolIcon.enumeratorForeground","The foreground color for enumerator symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));U("symbolIcon.enumeratorMemberForeground",{dark:"#75BEFF",light:"#007ACC",hcDark:"#75BEFF",hcLight:"#007ACC"},v("symbolIcon.enumeratorMemberForeground","The foreground color for enumerator member symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));U("symbolIcon.eventForeground",{dark:"#EE9D28",light:"#D67E00",hcDark:"#EE9D28",hcLight:"#D67E00"},v("symbolIcon.eventForeground","The foreground color for event symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));U("symbolIcon.fieldForeground",{dark:"#75BEFF",light:"#007ACC",hcDark:"#75BEFF",hcLight:"#007ACC"},v("symbolIcon.fieldForeground","The foreground color for field symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));U("symbolIcon.fileForeground",{dark:Re,light:Re,hcDark:Re,hcLight:Re},v("symbolIcon.fileForeground","The foreground color for file symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));U("symbolIcon.folderForeground",{dark:Re,light:Re,hcDark:Re,hcLight:Re},v("symbolIcon.folderForeground","The foreground color for folder symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));U("symbolIcon.functionForeground",{dark:"#B180D7",light:"#652D90",hcDark:"#B180D7",hcLight:"#652D90"},v("symbolIcon.functionForeground","The foreground color for function symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));U("symbolIcon.interfaceForeground",{dark:"#75BEFF",light:"#007ACC",hcDark:"#75BEFF",hcLight:"#007ACC"},v("symbolIcon.interfaceForeground","The foreground color for interface symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));U("symbolIcon.keyForeground",{dark:Re,light:Re,hcDark:Re,hcLight:Re},v("symbolIcon.keyForeground","The foreground color for key symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));U("symbolIcon.keywordForeground",{dark:Re,light:Re,hcDark:Re,hcLight:Re},v("symbolIcon.keywordForeground","The foreground color for keyword symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));U("symbolIcon.methodForeground",{dark:"#B180D7",light:"#652D90",hcDark:"#B180D7",hcLight:"#652D90"},v("symbolIcon.methodForeground","The foreground color for method symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));U("symbolIcon.moduleForeground",{dark:Re,light:Re,hcDark:Re,hcLight:Re},v("symbolIcon.moduleForeground","The foreground color for module symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));U("symbolIcon.namespaceForeground",{dark:Re,light:Re,hcDark:Re,hcLight:Re},v("symbolIcon.namespaceForeground","The foreground color for namespace symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));U("symbolIcon.nullForeground",{dark:Re,light:Re,hcDark:Re,hcLight:Re},v("symbolIcon.nullForeground","The foreground color for null symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));U("symbolIcon.numberForeground",{dark:Re,light:Re,hcDark:Re,hcLight:Re},v("symbolIcon.numberForeground","The foreground color for number symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));U("symbolIcon.objectForeground",{dark:Re,light:Re,hcDark:Re,hcLight:Re},v("symbolIcon.objectForeground","The foreground color for object symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));U("symbolIcon.operatorForeground",{dark:Re,light:Re,hcDark:Re,hcLight:Re},v("symbolIcon.operatorForeground","The foreground color for operator symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));U("symbolIcon.packageForeground",{dark:Re,light:Re,hcDark:Re,hcLight:Re},v("symbolIcon.packageForeground","The foreground color for package symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));U("symbolIcon.propertyForeground",{dark:Re,light:Re,hcDark:Re,hcLight:Re},v("symbolIcon.propertyForeground","The foreground color for property symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));U("symbolIcon.referenceForeground",{dark:Re,light:Re,hcDark:Re,hcLight:Re},v("symbolIcon.referenceForeground","The foreground color for reference symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));U("symbolIcon.snippetForeground",{dark:Re,light:Re,hcDark:Re,hcLight:Re},v("symbolIcon.snippetForeground","The foreground color for snippet symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));U("symbolIcon.stringForeground",{dark:Re,light:Re,hcDark:Re,hcLight:Re},v("symbolIcon.stringForeground","The foreground color for string symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));U("symbolIcon.structForeground",{dark:Re,light:Re,hcDark:Re,hcLight:Re},v("symbolIcon.structForeground","The foreground color for struct symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));U("symbolIcon.textForeground",{dark:Re,light:Re,hcDark:Re,hcLight:Re},v("symbolIcon.textForeground","The foreground color for text symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));U("symbolIcon.typeParameterForeground",{dark:Re,light:Re,hcDark:Re,hcLight:Re},v("symbolIcon.typeParameterForeground","The foreground color for type parameter symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));U("symbolIcon.unitForeground",{dark:Re,light:Re,hcDark:Re,hcLight:Re},v("symbolIcon.unitForeground","The foreground color for unit symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));U("symbolIcon.variableForeground",{dark:"#75BEFF",light:"#007ACC",hcDark:"#75BEFF",hcLight:"#007ACC"},v("symbolIcon.variableForeground","The foreground color for variable symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));const E1e=Object.freeze({kind:ut.Empty,title:v("codeAction.widget.id.more","More Actions...")}),MXe=Object.freeze([{kind:ut.QuickFix,title:v("codeAction.widget.id.quickfix","Quick Fix")},{kind:ut.RefactorExtract,title:v("codeAction.widget.id.extract","Extract"),icon:Pe.wrench},{kind:ut.RefactorInline,title:v("codeAction.widget.id.inline","Inline"),icon:Pe.wrench},{kind:ut.RefactorRewrite,title:v("codeAction.widget.id.convert","Rewrite"),icon:Pe.wrench},{kind:ut.RefactorMove,title:v("codeAction.widget.id.move","Move"),icon:Pe.wrench},{kind:ut.SurroundWith,title:v("codeAction.widget.id.surround","Surround With"),icon:Pe.symbolSnippet},{kind:ut.Source,title:v("codeAction.widget.id.source","Source Action"),icon:Pe.symbolFile},E1e]);function OXe(n,e,t){if(!e)return n.map(r=>{var o;return{kind:"action",item:r,group:E1e,disabled:!!r.action.disabled,label:r.action.disabled||r.action.title,canPreview:!!(!((o=r.action.edit)===null||o===void 0)&&o.edits.length)}});const i=MXe.map(r=>({group:r,actions:[]}));for(const r of n){const o=r.action.kind?new ut(r.action.kind):ut.None;for(const a of i)if(a.group.kind.contains(o)){a.actions.push(r);break}}const s=[];for(const r of i)if(r.actions.length){s.push({kind:"header",group:r.group});for(const o of r.actions){const a=r.group;s.push({kind:"action",item:o,group:o.action.isAI?{title:a.title,kind:a.kind,icon:Pe.sparkle}:a,label:o.action.title,disabled:!!o.action.disabled,keybinding:t(o.action)})}}return s}var FXe=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},cie=function(n,e){return function(t,i){e(t,i,n)}},_7,Z0;(function(n){n.Hidden={type:0};class e{constructor(i,s,r,o){this.actions=i,this.trigger=s,this.editorPosition=r,this.widgetPosition=o,this.type=1}}n.Showing=e})(Z0||(Z0={}));let V_=_7=class extends pe{constructor(e,t,i){super(),this._editor=e,this._keybindingService=t,this._onClick=this._register(new ue),this.onClick=this._onClick.event,this._state=Z0.Hidden,this._iconClasses=[],this._domNode=Te("div.lightBulbWidget"),this._register(Ri.ignoreTarget(this._domNode)),this._editor.addContentWidget(this),this._register(this._editor.onDidChangeModelContent(s=>{const r=this._editor.getModel();(this.state.type!==1||!r||this.state.editorPosition.lineNumber>=r.getLineCount())&&this.hide()})),this._register(h9e(this._domNode,s=>{var r;if(this.state.type!==1)return;const o=this._editor.getOption(64).experimental.showAiIcon;if((o===Go.On||o===Go.OnCode)&&this.state.actions.allAIFixes&&this.state.actions.validActions.length===1){const h=this.state.actions.validActions[0].action;if(!((r=h.command)===null||r===void 0)&&r.id){i.executeCommand(h.command.id,...h.command.arguments||[]),s.preventDefault();return}}this._editor.focus(),s.preventDefault();const{top:a,height:l}=ys(this._domNode),c=this._editor.getOption(66);let u=Math.floor(c/3);this.state.widgetPosition.position!==null&&this.state.widgetPosition.position.lineNumber<this.state.editorPosition.lineNumber&&(u+=c),this._onClick.fire({x:s.posx,y:a+l+u,actions:this.state.actions,trigger:this.state.trigger})})),this._register(Ce(this._domNode,"mouseenter",s=>{(s.buttons&1)===1&&this.hide()})),this._register(this._editor.onDidChangeConfiguration(s=>{s.hasChanged(64)&&(this._editor.getOption(64).enabled||this.hide(),this._updateLightBulbTitleAndIcon())})),this._register(Ve.runAndSubscribe(this._keybindingService.onDidUpdateKeybindings,()=>{var s,r,o,a;this._preferredKbLabel=(r=(s=this._keybindingService.lookupKeybinding(k1e))===null||s===void 0?void 0:s.getLabel())!==null&&r!==void 0?r:void 0,this._quickFixKbLabel=(a=(o=this._keybindingService.lookupKeybinding(vK))===null||o===void 0?void 0:o.getLabel())!==null&&a!==void 0?a:void 0,this._updateLightBulbTitleAndIcon()}))}dispose(){super.dispose(),this._editor.removeContentWidget(this)}getId(){return"LightBulbWidget"}getDomNode(){return this._domNode}getPosition(){return this._state.type===1?this._state.widgetPosition:null}update(e,t,i){if(e.validActions.length<=0)return this.hide();const s=this._editor.getOptions();if(!s.get(64).enabled)return this.hide();const r=this._editor.getModel();if(!r)return this.hide();const{lineNumber:o,column:a}=r.validatePosition(i),l=r.getOptions().tabSize,c=s.get(50),u=r.getLineContent(o),h=jO(u,l),d=c.spaceWidth*h>22,f=p=>p>2&&this._editor.getTopForLineNumber(p)===this._editor.getTopForLineNumber(p-1);let g=o;if(!d){if(o>1&&!f(o-1))g-=1;else if(!f(o+1))g+=1;else if(a*c.spaceWidth<22)return this.hide()}this.state=new Z0.Showing(e,t,i,{position:{lineNumber:g,column:r.getLineContent(g).match(/^\S\s*$/)?2:1},preference:_7._posPref}),this._editor.layoutContentWidget(this)}hide(){this.state!==Z0.Hidden&&(this.state=Z0.Hidden,this._editor.layoutContentWidget(this))}get state(){return this._state}set state(e){this._state=e,this._updateLightBulbTitleAndIcon()}_updateLightBulbTitleAndIcon(){var e,t,i;if(this._domNode.classList.remove(...this._iconClasses),this._iconClasses=[],this.state.type!==1)return;const s=()=>{this._preferredKbLabel&&(this.title=v("preferredcodeActionWithKb","Show Code Actions. Preferred Quick Fix Available ({0})",this._preferredKbLabel))},r=()=>{this._quickFixKbLabel?this.title=v("codeActionWithKb","Show Code Actions ({0})",this._quickFixKbLabel):this.title=v("codeAction","Show Code Actions")};let o;const a=this._editor.getOption(64).experimental.showAiIcon;if(a===Go.On||a===Go.OnCode)if(a===Go.On&&this.state.actions.allAIFixes)if(o=Pe.sparkleFilled,this.state.actions.allAIFixes&&this.state.actions.validActions.length===1)if(((e=this.state.actions.validActions[0].action.command)===null||e===void 0?void 0:e.id)==="inlineChat.start"){const l=(i=(t=this._keybindingService.lookupKeybinding("inlineChat.start"))===null||t===void 0?void 0:t.getLabel())!==null&&i!==void 0?i:void 0;this.title=l?v("codeActionStartInlineChatWithKb","Start Inline Chat ({0})",l):v("codeActionStartInlineChat","Start Inline Chat")}else this.title=v("codeActionTriggerAiAction","Trigger AI Action");else r();else this.state.actions.hasAutoFix?(this.state.actions.hasAIFix?o=Pe.lightbulbSparkleAutofix:o=Pe.lightbulbAutofix,s()):this.state.actions.hasAIFix?(o=Pe.lightbulbSparkle,r()):(o=Pe.lightBulb,r());else this.state.actions.hasAutoFix?(o=Pe.lightbulbAutofix,s()):(o=Pe.lightBulb,r());this._iconClasses=nt.asClassNameArray(o),this._domNode.classList.add(...this._iconClasses)}set title(e){this._domNode.title=e}};V_.ID="editor.contrib.lightbulbWidget";V_._posPref=[0];V_=_7=FXe([cie(1,Di),cie(2,Dn)],V_);const _a=Bt("openerService");function BXe(n){let e;const t=/^L?(\d+)(?:,(\d+))?(-L?(\d+)(?:,(\d+))?)?/.exec(n.fragment);return t&&(e={startLineNumber:parseInt(t[1]),startColumn:t[2]?parseInt(t[2]):1,endLineNumber:t[4]?parseInt(t[4]):void 0,endColumn:t[4]?t[5]?parseInt(t[5]):1:void 0},n=n.with({fragment:""})),{selection:e,uri:n}}var WXe=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},uie=function(n,e){return function(t,i){e(t,i,n)}},v7;let Qf=v7=class{constructor(e,t,i){this._options=e,this._languageService=t,this._openerService=i,this._onDidRenderAsync=new ue,this.onDidRenderAsync=this._onDidRenderAsync.event}dispose(){this._onDidRenderAsync.dispose()}render(e,t,i){if(!e)return{element:document.createElement("span"),dispose:()=>{}};const s=new xe,r=s.add(i2(e,{...this._getRenderOptions(e,s),...t},i));return r.element.classList.add("rendered-markdown"),{element:r.element,dispose:()=>s.dispose()}}_getRenderOptions(e,t){return{codeBlockRenderer:async(i,s)=>{var r,o,a;let l;i?l=this._languageService.getLanguageIdByLanguageName(i):this._options.editor&&(l=(r=this._options.editor.getModel())===null||r===void 0?void 0:r.getLanguageId()),l||(l=Ga);const c=await Xqe(this._languageService,s,l),u=document.createElement("span");if(u.innerHTML=(a=(o=v7._ttpTokenizer)===null||o===void 0?void 0:o.createHTML(c))!==null&&a!==void 0?a:c,this._options.editor){const h=this._options.editor.getOption(50);_r(u,h)}else this._options.codeBlockFontFamily&&(u.style.fontFamily=this._options.codeBlockFontFamily);return this._options.codeBlockFontSize!==void 0&&(u.style.fontSize=this._options.codeBlockFontSize),u},asyncRenderCallback:()=>this._onDidRenderAsync.fire(),actionHandler:{callback:i=>D1e(this._openerService,i,e.isTrusted),disposables:t}}}};Qf._ttpTokenizer=sg("tokenizeToString",{createHTML(n){return n}});Qf=v7=WXe([uie(1,sn),uie(2,_a)],Qf);async function D1e(n,e,t){try{return await n.open(e,{fromUserGesture:!0,allowContributedOpeners:!0,allowCommands:VXe(t)})}catch(i){return vt(i),!1}}function VXe(n){return n===!0?!0:n&&Array.isArray(n.enabledCommands)?n.enabledCommands:!1}var HXe=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},hie=function(n,e){return function(t,i){e(t,i,n)}},dN;let ra=dN=class{static get(e){return e.getContribution(dN.ID)}constructor(e,t,i){this._openerService=i,this._messageWidget=new qs,this._messageListeners=new xe,this._mouseOverMessage=!1,this._editor=e,this._visible=dN.MESSAGE_VISIBLE.bindTo(t)}dispose(){var e;(e=this._message)===null||e===void 0||e.dispose(),this._messageListeners.dispose(),this._messageWidget.dispose(),this._visible.reset()}showMessage(e,t){ha(kp(e)?e.value:e),this._visible.set(!0),this._messageWidget.clear(),this._messageListeners.clear(),this._message=kp(e)?i2(e,{actionHandler:{callback:s=>D1e(this._openerService,s,kp(e)?e.isTrusted:void 0),disposables:this._messageListeners}}):void 0,this._messageWidget.value=new die(this._editor,t,typeof e=="string"?e:this._message.element),this._messageListeners.add(Ve.debounce(this._editor.onDidBlurEditorText,(s,r)=>r,0)(()=>{this._mouseOverMessage||this._messageWidget.value&&pr(Ka(),this._messageWidget.value.getDomNode())||this.closeMessage()})),this._messageListeners.add(this._editor.onDidChangeCursorPosition(()=>this.closeMessage())),this._messageListeners.add(this._editor.onDidDispose(()=>this.closeMessage())),this._messageListeners.add(this._editor.onDidChangeModel(()=>this.closeMessage())),this._messageListeners.add(Ce(this._messageWidget.value.getDomNode(),We.MOUSE_ENTER,()=>this._mouseOverMessage=!0,!0)),this._messageListeners.add(Ce(this._messageWidget.value.getDomNode(),We.MOUSE_LEAVE,()=>this._mouseOverMessage=!1,!0));let i;this._messageListeners.add(this._editor.onMouseMove(s=>{s.target.position&&(i?i.containsPosition(s.target.position)||this.closeMessage():i=new M(t.lineNumber-3,1,s.target.position.lineNumber+3,1))}))}closeMessage(){this._visible.reset(),this._messageListeners.clear(),this._messageWidget.value&&this._messageListeners.add(die.fadeOut(this._messageWidget.value))}};ra.ID="editor.contrib.messageController";ra.MESSAGE_VISIBLE=new ze("messageVisible",!1,v("messageVisible","Whether the editor is currently showing an inline message"));ra=dN=HXe([hie(1,ft),hie(2,_a)],ra);const $Xe=Ks.bindToContribution(ra.get);Be(new $Xe({id:"leaveEditorMessage",precondition:ra.MESSAGE_VISIBLE,handler:n=>n.closeMessage(),kbOpts:{weight:130,primary:9}}));let die=class{static fadeOut(e){const t=()=>{e.dispose(),clearTimeout(i),e.getDomNode().removeEventListener("animationend",t)},i=setTimeout(t,110);return e.getDomNode().addEventListener("animationend",t),e.getDomNode().classList.add("fadeOut"),{dispose:t}}constructor(e,{lineNumber:t,column:i},s){this.allowEditorOverflow=!0,this.suppressMouseDown=!1,this._editor=e,this._editor.revealLinesInCenterIfOutsideViewport(t,t,0),this._position={lineNumber:t,column:i},this._domNode=document.createElement("div"),this._domNode.classList.add("monaco-editor-overlaymessage"),this._domNode.style.marginLeft="-6px";const r=document.createElement("div");r.classList.add("anchor","top"),this._domNode.appendChild(r);const o=document.createElement("div");typeof s=="string"?(o.classList.add("message"),o.textContent=s):(s.classList.add("message"),o.appendChild(s)),this._domNode.appendChild(o);const a=document.createElement("div");a.classList.add("anchor","below"),this._domNode.appendChild(a),this._editor.addContentWidget(this),this._domNode.classList.add("fadeIn")}dispose(){this._editor.removeContentWidget(this)}getId(){return"messageoverlay"}getDomNode(){return this._domNode}getPosition(){return{position:this._position,preference:[1,2],positionAffinity:1}}afterRender(e){this._domNode.classList.toggle("below",e===2)}};ti(ra.ID,ra,4);class l2{constructor(e,t,i=t){this.modifierLabels=[null],this.modifierLabels[2]=e,this.modifierLabels[1]=t,this.modifierLabels[3]=i}toLabel(e,t,i){if(t.length===0)return null;const s=[];for(let r=0,o=t.length;r<o;r++){const a=t[r],l=i(a);if(l===null)return null;s[r]=qXe(a,l,this.modifierLabels[e])}return s.join(" ")}}const CK=new l2({ctrlKey:"⌃",shiftKey:"⇧",altKey:"⌥",metaKey:"⌘",separator:""},{ctrlKey:v({key:"ctrlKey",comment:["This is the short form for the Control key on the keyboard"]},"Ctrl"),shiftKey:v({key:"shiftKey",comment:["This is the short form for the Shift key on the keyboard"]},"Shift"),altKey:v({key:"altKey",comment:["This is the short form for the Alt key on the keyboard"]},"Alt"),metaKey:v({key:"windowsKey",comment:["This is the short form for the Windows key on the keyboard"]},"Windows"),separator:"+"},{ctrlKey:v({key:"ctrlKey",comment:["This is the short form for the Control key on the keyboard"]},"Ctrl"),shiftKey:v({key:"shiftKey",comment:["This is the short form for the Shift key on the keyboard"]},"Shift"),altKey:v({key:"altKey",comment:["This is the short form for the Alt key on the keyboard"]},"Alt"),metaKey:v({key:"superKey",comment:["This is the short form for the Super key on the keyboard"]},"Super"),separator:"+"}),zXe=new l2({ctrlKey:v({key:"ctrlKey.long",comment:["This is the long form for the Control key on the keyboard"]},"Control"),shiftKey:v({key:"shiftKey.long",comment:["This is the long form for the Shift key on the keyboard"]},"Shift"),altKey:v({key:"optKey.long",comment:["This is the long form for the Alt/Option key on the keyboard"]},"Option"),metaKey:v({key:"cmdKey.long",comment:["This is the long form for the Command key on the keyboard"]},"Command"),separator:"+"},{ctrlKey:v({key:"ctrlKey.long",comment:["This is the long form for the Control key on the keyboard"]},"Control"),shiftKey:v({key:"shiftKey.long",comment:["This is the long form for the Shift key on the keyboard"]},"Shift"),altKey:v({key:"altKey.long",comment:["This is the long form for the Alt key on the keyboard"]},"Alt"),metaKey:v({key:"windowsKey.long",comment:["This is the long form for the Windows key on the keyboard"]},"Windows"),separator:"+"},{ctrlKey:v({key:"ctrlKey.long",comment:["This is the long form for the Control key on the keyboard"]},"Control"),shiftKey:v({key:"shiftKey.long",comment:["This is the long form for the Shift key on the keyboard"]},"Shift"),altKey:v({key:"altKey.long",comment:["This is the long form for the Alt key on the keyboard"]},"Alt"),metaKey:v({key:"superKey.long",comment:["This is the long form for the Super key on the keyboard"]},"Super"),separator:"+"}),UXe=new l2({ctrlKey:"Ctrl",shiftKey:"Shift",altKey:"Alt",metaKey:"Cmd",separator:"+"},{ctrlKey:"Ctrl",shiftKey:"Shift",altKey:"Alt",metaKey:"Super",separator:"+"}),jXe=new l2({ctrlKey:"ctrl",shiftKey:"shift",altKey:"alt",metaKey:"cmd",separator:"+"},{ctrlKey:"ctrl",shiftKey:"shift",altKey:"alt",metaKey:"win",separator:"+"},{ctrlKey:"ctrl",shiftKey:"shift",altKey:"alt",metaKey:"meta",separator:"+"});function qXe(n,e,t){if(e===null)return"";const i=[];return n.ctrlKey&&i.push(t.ctrlKey),n.shiftKey&&i.push(t.shiftKey),n.altKey&&i.push(t.altKey),n.metaKey&&i.push(t.metaKey),e!==""&&i.push(e),i.join(t.separator)}const xI=Te,KXe={keybindingLabelBackground:void 0,keybindingLabelForeground:void 0,keybindingLabelBorder:void 0,keybindingLabelBottomBorder:void 0,keybindingLabelShadow:void 0};class BE{constructor(e,t,i){this.os=t,this.keyElements=new Set,this.options=i||Object.create(null);const s=this.options.keybindingLabelForeground;this.domNode=Le(e,xI(".monaco-keybinding")),s&&(this.domNode.style.color=s),this.didEverRender=!1,e.appendChild(this.domNode)}get element(){return this.domNode}set(e,t){this.didEverRender&&this.keybinding===e&&BE.areSame(this.matches,t)||(this.keybinding=e,this.matches=t,this.render())}render(){var e;if(this.clear(),this.keybinding){const t=this.keybinding.getChords();t[0]&&this.renderChord(this.domNode,t[0],this.matches?this.matches.firstPart:null);for(let s=1;s<t.length;s++)Le(this.domNode,xI("span.monaco-keybinding-key-chord-separator",void 0," ")),this.renderChord(this.domNode,t[s],this.matches?this.matches.chordPart:null);const i=(e=this.options.disableTitle)!==null&&e!==void 0&&e?void 0:this.keybinding.getAriaLabel()||void 0;i!==void 0?this.domNode.title=i:this.domNode.removeAttribute("title")}else this.options&&this.options.renderUnboundKeybindings&&this.renderUnbound(this.domNode);this.didEverRender=!0}clear(){ir(this.domNode),this.keyElements.clear()}renderChord(e,t,i){const s=CK.modifierLabels[this.os];t.ctrlKey&&this.renderKey(e,s.ctrlKey,!!(i!=null&&i.ctrlKey),s.separator),t.shiftKey&&this.renderKey(e,s.shiftKey,!!(i!=null&&i.shiftKey),s.separator),t.altKey&&this.renderKey(e,s.altKey,!!(i!=null&&i.altKey),s.separator),t.metaKey&&this.renderKey(e,s.metaKey,!!(i!=null&&i.metaKey),s.separator);const r=t.keyLabel;r&&this.renderKey(e,r,!!(i!=null&&i.keyCode),"")}renderKey(e,t,i,s){Le(e,this.createKeyElement(t,i?".highlight":"")),s&&Le(e,xI("span.monaco-keybinding-key-separator",void 0,s))}renderUnbound(e){Le(e,this.createKeyElement(v("unbound","Unbound")))}createKeyElement(e,t=""){const i=xI("span.monaco-keybinding-key"+t,void 0,e);return this.keyElements.add(i),this.options.keybindingLabelBackground&&(i.style.backgroundColor=this.options.keybindingLabelBackground),this.options.keybindingLabelBorder&&(i.style.borderColor=this.options.keybindingLabelBorder),this.options.keybindingLabelBottomBorder&&(i.style.borderBottomColor=this.options.keybindingLabelBottomBorder),this.options.keybindingLabelShadow&&(i.style.boxShadow=`inset 0 -1px 0 ${this.options.keybindingLabelShadow}`),i}static areSame(e,t){return e===t||!e&&!t?!0:!!e&&!!t&&Ya(e.firstPart,t.firstPart)&&Ya(e.chordPart,t.chordPart)}}function GXe(n,e){const t={...e};for(const i in n){const s=n[i];t[i]=s!==void 0?Ue(s):void 0}return t}const YXe={keybindingLabelBackground:Ue(YVe),keybindingLabelForeground:Ue(ZVe),keybindingLabelBorder:Ue(XVe),keybindingLabelBottomBorder:Ue(QVe),keybindingLabelShadow:Ue(Ah)},ZXe={buttonForeground:Ue(hS),buttonSeparator:Ue(MVe),buttonBackground:Ue(dS),buttonHoverBackground:Ue(OVe),buttonSecondaryForeground:Ue(BVe),buttonSecondaryBackground:Ue(g9),buttonSecondaryHoverBackground:Ue(WVe),buttonBorder:Ue(FVe)},XXe={progressBarBackground:Ue($Ve)},IP={inputActiveOptionBorder:Ue(uq),inputActiveOptionForeground:Ue(hq),inputActiveOptionBackground:Ue(F1)};Ue(NHe),Ue(PHe),Ue(AHe);Ue(Rn),Ue(Mh),Ue(Ah),Ue(zt),Ue(YHe),Ue(ZHe),Ue(XHe),Ue(kVe);const TP={inputBackground:Ue(gpe),inputForeground:Ue(ppe),inputBorder:Ue(mpe),inputValidationInfoBorder:Ue(EVe),inputValidationInfoBackground:Ue(LVe),inputValidationInfoForeground:Ue(xVe),inputValidationWarningBorder:Ue(TVe),inputValidationWarningBackground:Ue(DVe),inputValidationWarningForeground:Ue(IVe),inputValidationErrorBorder:Ue(PVe),inputValidationErrorBackground:Ue(NVe),inputValidationErrorForeground:Ue(AVe)},QXe={listFilterWidgetBackground:Ue(kHe),listFilterWidgetOutline:Ue(LHe),listFilterWidgetNoMatchesOutline:Ue(xHe),listFilterWidgetShadow:Ue(EHe),inputBoxStyles:TP,toggleStyles:IP},I1e={badgeBackground:Ue(sN),badgeForeground:Ue(VVe),badgeBorder:Ue(zt)};Ue($He),Ue(HHe),Ue(see),Ue(see),Ue(zHe);const Nv={listBackground:void 0,listInactiveFocusForeground:void 0,listFocusBackground:Ue(gHe),listFocusForeground:Ue(pHe),listFocusOutline:Ue(mHe),listActiveSelectionBackground:Ue(Lf),listActiveSelectionForeground:Ue(Bh),listActiveSelectionIconForeground:Ue(mS),listFocusAndSelectionOutline:Ue(_He),listFocusAndSelectionBackground:Ue(Lf),listFocusAndSelectionForeground:Ue(Bh),listInactiveSelectionBackground:Ue(vHe),listInactiveSelectionIconForeground:Ue(yHe),listInactiveSelectionForeground:Ue(bHe),listInactiveFocusBackground:Ue(CHe),listInactiveFocusOutline:Ue(wHe),listHoverBackground:Ue(bpe),listHoverForeground:Ue(ype),listDropBackground:Ue(SHe),listSelectionOutline:Ue(Gi),listHoverOutline:Ue(Gi),treeIndentGuidesStroke:Ue(_S),treeInactiveIndentGuidesStroke:Ue(DHe),tableColumnsBorder:Ue(IHe),tableOddRowsBackgroundColor:Ue(THe)};function BC(n){return GXe(n,Nv)}const JXe={selectBackground:Ue(Ph),selectListBackground:Ue(RVe),selectForeground:Ue(wf),decoratorRightForeground:Ue(_pe),selectBorder:Ue(W0),focusBorder:Ue($a),listFocusBackground:Ue(W1),listInactiveSelectionIconForeground:Ue(V0),listFocusForeground:Ue(B1),listFocusOutline:CVe(Gi,me.transparent.toString()),listHoverBackground:Ue(bpe),listHoverForeground:Ue(ype),listHoverOutline:Ue(Gi),selectListBorder:Ue(Oh),listBackground:void 0,listActiveSelectionBackground:void 0,listActiveSelectionForeground:void 0,listActiveSelectionIconForeground:void 0,listFocusAndSelectionBackground:void 0,listDropBackground:void 0,listInactiveSelectionBackground:void 0,listInactiveSelectionForeground:void 0,listInactiveFocusBackground:void 0,listInactiveFocusOutline:void 0,listSelectionOutline:void 0,listFocusAndSelectionForeground:void 0,listFocusAndSelectionOutline:void 0,listInactiveFocusForeground:void 0,tableColumnsBorder:void 0,tableOddRowsBackgroundColor:void 0,treeIndentGuidesStroke:void 0,treeInactiveIndentGuidesStroke:void 0},eQe={shadowColor:Ue(Ah),borderColor:Ue(RHe),foregroundColor:Ue(MHe),backgroundColor:Ue(OHe),selectionForegroundColor:Ue(FHe),selectionBackgroundColor:Ue(BHe),selectionBorderColor:Ue(WHe),separatorColor:Ue(VHe),scrollbarShadow:Ue(HVe),scrollbarSliderBackground:Ue(fS),scrollbarSliderHoverBackground:Ue(gS),scrollbarSliderActiveBackground:Ue(pS)};var T1e=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},b7=function(n,e){return function(t,i){e(t,i,n)}};const N1e="acceptSelectedCodeAction",A1e="previewSelectedCodeAction";class tQe{get templateId(){return"header"}renderTemplate(e){e.classList.add("group-header");const t=document.createElement("span");return e.append(t),{container:e,text:t}}renderElement(e,t,i){var s,r;i.text.textContent=(r=(s=e.group)===null||s===void 0?void 0:s.title)!==null&&r!==void 0?r:""}disposeTemplate(e){}}let y7=class{get templateId(){return"action"}constructor(e,t){this._supportsPreview=e,this._keybindingService=t}renderTemplate(e){e.classList.add(this.templateId);const t=document.createElement("div");t.className="icon",e.append(t);const i=document.createElement("span");i.className="title",e.append(i);const s=new BE(e,Ha);return{container:e,icon:t,text:i,keybinding:s}}renderElement(e,t,i){var s,r,o;if(!((s=e.group)===null||s===void 0)&&s.icon?(i.icon.className=nt.asClassName(e.group.icon),e.group.icon.color&&(i.icon.style.color=Ue(e.group.icon.color.id))):(i.icon.className=nt.asClassName(Pe.lightBulb),i.icon.style.color="var(--vscode-editorLightBulb-foreground)"),!e.item||!e.label)return;i.text.textContent=P1e(e.label),i.keybinding.set(e.keybinding),E9e(!!e.keybinding,i.keybinding.element);const a=(r=this._keybindingService.lookupKeybinding(N1e))===null||r===void 0?void 0:r.getLabel(),l=(o=this._keybindingService.lookupKeybinding(A1e))===null||o===void 0?void 0:o.getLabel();i.container.classList.toggle("option-disabled",e.disabled),e.disabled?i.container.title=e.label:a&&l?this._supportsPreview&&e.canPreview?i.container.title=v({key:"label-preview",comment:['placeholders are keybindings, e.g "F2 to apply, Shift+F2 to preview"']},"{0} to apply, {1} to preview",a,l):i.container.title=v({key:"label",comment:['placeholder is a keybinding, e.g "F2 to apply"']},"{0} to apply",a):i.container.title=""}disposeTemplate(e){}};y7=T1e([b7(1,Di)],y7);class iQe extends UIEvent{constructor(){super("acceptSelectedAction")}}class fie extends UIEvent{constructor(){super("previewSelectedAction")}}function nQe(n){if(n.kind==="action")return n.label}let C7=class extends pe{constructor(e,t,i,s,r,o){super(),this._delegate=s,this._contextViewService=r,this._keybindingService=o,this._actionLineHeight=24,this._headerLineHeight=26,this.cts=this._register(new es),this.domNode=document.createElement("div"),this.domNode.classList.add("actionList");const a={getHeight:l=>l.kind==="header"?this._headerLineHeight:this._actionLineHeight,getTemplateId:l=>l.kind};this._list=this._register(new Ac(e,this.domNode,a,[new y7(t,this._keybindingService),new tQe],{keyboardSupport:!1,typeNavigationEnabled:!0,keyboardNavigationLabelProvider:{getKeyboardNavigationLabel:nQe},accessibilityProvider:{getAriaLabel:l=>{if(l.kind==="action"){let c=l.label?P1e(l==null?void 0:l.label):"";return l.disabled&&(c=v({key:"customQuickFixWidget.labels",comment:["Action widget labels for accessibility."]},"{0}, Disabled Reason: {1}",c,l.disabled)),c}return null},getWidgetAriaLabel:()=>v({key:"customQuickFixWidget",comment:["An action widget option"]},"Action Widget"),getRole:l=>l.kind==="action"?"option":"separator",getWidgetRole:()=>"listbox"}})),this._list.style(Nv),this._register(this._list.onMouseClick(l=>this.onListClick(l))),this._register(this._list.onMouseOver(l=>this.onListHover(l))),this._register(this._list.onDidChangeFocus(()=>this.onFocus())),this._register(this._list.onDidChangeSelection(l=>this.onListSelection(l))),this._allMenuItems=i,this._list.splice(0,this._list.length,this._allMenuItems),this._list.length&&this.focusNext()}focusCondition(e){return!e.disabled&&e.kind==="action"}hide(e){this._delegate.onHide(e),this.cts.cancel(),this._contextViewService.hideContextView()}layout(e){const t=this._allMenuItems.filter(l=>l.kind==="header").length,s=this._allMenuItems.length*this._actionLineHeight+t*this._headerLineHeight-t*this._actionLineHeight;this._list.layout(s);let r=e;if(this._allMenuItems.length>=50)r=380;else{const l=this._allMenuItems.map((c,u)=>{const h=this.domNode.ownerDocument.getElementById(this._list.getElementID(u));if(h){h.style.width="auto";const d=h.getBoundingClientRect().width;return h.style.width="",d}return 0});r=Math.max(...l,e)}const o=.7,a=Math.min(s,this.domNode.ownerDocument.body.clientHeight*o);return this._list.layout(a,r),this.domNode.style.height=`${a}px`,this._list.domFocus(),r}focusPrevious(){this._list.focusPrevious(1,!0,void 0,this.focusCondition)}focusNext(){this._list.focusNext(1,!0,void 0,this.focusCondition)}acceptSelected(e){const t=this._list.getFocus();if(t.length===0)return;const i=t[0],s=this._list.element(i);if(!this.focusCondition(s))return;const r=e?new fie:new iQe;this._list.setSelection([i],r)}onListSelection(e){if(!e.elements.length)return;const t=e.elements[0];t.item&&this.focusCondition(t)?this._delegate.onSelect(t.item,e.browserEvent instanceof fie):this._list.setSelection([])}onFocus(){var e,t;this._list.domFocus();const i=this._list.getFocus();if(i.length===0)return;const s=i[0],r=this._list.element(s);(t=(e=this._delegate).onFocus)===null||t===void 0||t.call(e,r.item)}async onListHover(e){const t=e.element;if(t&&t.item&&this.focusCondition(t)){if(this._delegate.onHover&&!t.disabled&&t.kind==="action"){const i=await this._delegate.onHover(t.item,this.cts.token);t.canPreview=i?i.canPreview:void 0}e.index&&this._list.splice(e.index,1,[t])}this._list.setFocus(typeof e.index=="number"?[e.index]:[])}onListClick(e){e.element&&this.focusCondition(e.element)&&this._list.setFocus([])}};C7=T1e([b7(4,lg),b7(5,Di)],C7);function P1e(n){return n.replace(/\r\n|\r|\n/g," ")}var sQe=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},v3=function(n,e){return function(t,i){e(t,i,n)}};U("actionBar.toggledBackground",{dark:F1,light:F1,hcDark:F1,hcLight:F1},v("actionBar.toggledBackground","Background color for toggled action items in action bar."));const H_={Visible:new ze("codeActionMenuVisible",!1,v("codeActionMenuVisible","Whether the action widget list is visible"))},Av=Bt("actionWidgetService");let $_=class extends pe{get isVisible(){return H_.Visible.getValue(this._contextKeyService)||!1}constructor(e,t,i){super(),this._contextViewService=e,this._contextKeyService=t,this._instantiationService=i,this._list=this._register(new qs)}show(e,t,i,s,r,o,a){const l=H_.Visible.bindTo(this._contextKeyService),c=this._instantiationService.createInstance(C7,e,t,i,s);this._contextViewService.showContextView({getAnchor:()=>r,render:u=>(l.set(!0),this._renderWidget(u,c,a??[])),onHide:u=>{l.reset(),this._onWidgetClosed(u)}},o,!1)}acceptSelected(e){var t;(t=this._list.value)===null||t===void 0||t.acceptSelected(e)}focusPrevious(){var e,t;(t=(e=this._list)===null||e===void 0?void 0:e.value)===null||t===void 0||t.focusPrevious()}focusNext(){var e,t;(t=(e=this._list)===null||e===void 0?void 0:e.value)===null||t===void 0||t.focusNext()}hide(){var e;(e=this._list.value)===null||e===void 0||e.hide(),this._list.clear()}_renderWidget(e,t,i){var s;const r=document.createElement("div");if(r.classList.add("action-widget"),e.appendChild(r),this._list.value=t,this._list.value)r.appendChild(this._list.value.domNode);else throw new Error("List has no value");const o=new xe,a=document.createElement("div"),l=e.appendChild(a);l.classList.add("context-view-block"),o.add(Ce(l,We.MOUSE_DOWN,g=>g.stopPropagation()));const c=document.createElement("div"),u=e.appendChild(c);u.classList.add("context-view-pointerBlock"),o.add(Ce(u,We.POINTER_MOVE,()=>u.remove())),o.add(Ce(u,We.MOUSE_DOWN,()=>u.remove()));let h=0;if(i.length){const g=this._createActionBar(".action-widget-action-bar",i);g&&(r.appendChild(g.getContainer().parentElement),o.add(g),h=g.getContainer().offsetWidth)}const d=(s=this._list.value)===null||s===void 0?void 0:s.layout(h);r.style.width=`${d}px`;const f=o.add(gd(e));return o.add(f.onDidBlur(()=>this.hide())),o}_createActionBar(e,t){if(!t.length)return;const i=Te(e),s=new Vl(i);return s.push(t,{icon:!1,label:!0}),s}_onWidgetClosed(e){var t;(t=this._list.value)===null||t===void 0||t.hide(e)}};$_=sQe([v3(0,lg),v3(1,ft),v3(2,at)],$_);jt(Av,$_,1);const WE=1100;Zi(class extends sl{constructor(){super({id:"hideCodeActionWidget",title:{value:v("hideCodeActionWidget.title","Hide action widget"),original:"Hide action widget"},precondition:H_.Visible,keybinding:{weight:WE,primary:9,secondary:[1033]}})}run(n){n.get(Av).hide()}});Zi(class extends sl{constructor(){super({id:"selectPrevCodeAction",title:{value:v("selectPrevCodeAction.title","Select previous action"),original:"Select previous action"},precondition:H_.Visible,keybinding:{weight:WE,primary:16,secondary:[2064],mac:{primary:16,secondary:[2064,302]}}})}run(n){const e=n.get(Av);e instanceof $_&&e.focusPrevious()}});Zi(class extends sl{constructor(){super({id:"selectNextCodeAction",title:{value:v("selectNextCodeAction.title","Select next action"),original:"Select next action"},precondition:H_.Visible,keybinding:{weight:WE,primary:18,secondary:[2066],mac:{primary:18,secondary:[2066,300]}}})}run(n){const e=n.get(Av);e instanceof $_&&e.focusNext()}});Zi(class extends sl{constructor(){super({id:N1e,title:{value:v("acceptSelected.title","Accept selected action"),original:"Accept selected action"},precondition:H_.Visible,keybinding:{weight:WE,primary:3,secondary:[2137]}})}run(n){const e=n.get(Av);e instanceof $_&&e.acceptSelected()}});Zi(class extends sl{constructor(){super({id:A1e,title:{value:v("previewSelected.title","Preview selected action"),original:"Preview selected action"},precondition:H_.Visible,keybinding:{weight:WE,primary:2051}})}run(n){const e=n.get(Av);e instanceof $_&&e.acceptSelected(!0)}});var xn;(function(n){n[n.Hint=1]="Hint",n[n.Info=2]="Info",n[n.Warning=4]="Warning",n[n.Error=8]="Error"})(xn||(xn={}));(function(n){function e(o,a){return a-o}n.compare=e;const t=Object.create(null);t[n.Error]=v("sev.error","Error"),t[n.Warning]=v("sev.warning","Warning"),t[n.Info]=v("sev.info","Info");function i(o){return t[o]||""}n.toString=i;function s(o){switch(o){case zn.Error:return n.Error;case zn.Warning:return n.Warning;case zn.Info:return n.Info;case zn.Ignore:return n.Hint}}n.fromSeverity=s;function r(o){switch(o){case n.Error:return zn.Error;case n.Warning:return zn.Warning;case n.Info:return zn.Info;case n.Hint:return zn.Ignore}}n.toSeverity=r})(xn||(xn={}));var NP;(function(n){const e="";function t(s){return i(s,!0)}n.makeKey=t;function i(s,r){const o=[e];return s.source?o.push(s.source.replace("¦","\\¦")):o.push(e),s.code?typeof s.code=="string"?o.push(s.code.replace("¦","\\¦")):o.push(s.code.value.replace("¦","\\¦")):o.push(e),s.severity!==void 0&&s.severity!==null?o.push(xn.toString(s.severity)):o.push(e),s.message&&r?o.push(s.message.replace("¦","\\¦")):o.push(e),s.startLineNumber!==void 0&&s.startLineNumber!==null?o.push(s.startLineNumber.toString()):o.push(e),s.startColumn!==void 0&&s.startColumn!==null?o.push(s.startColumn.toString()):o.push(e),s.endLineNumber!==void 0&&s.endLineNumber!==null?o.push(s.endLineNumber.toString()):o.push(e),s.endColumn!==void 0&&s.endColumn!==null?o.push(s.endColumn.toString()):o.push(e),o.push(e),o.join("¦")}n.makeKeyOptionalMessage=i})(NP||(NP={}));const Id=Bt("markerService"),R1e=new ze("supportedCodeAction","");class rQe extends pe{constructor(e,t,i,s=250){super(),this._editor=e,this._markerService=t,this._signalChange=i,this._delay=s,this._autoTriggerTimer=this._register(new Ic),this._register(this._markerService.onMarkerChanged(r=>this._onMarkerChanges(r))),this._register(this._editor.onDidChangeCursorPosition(()=>this._tryAutoTrigger()))}trigger(e){const t=this._getRangeOfSelectionUnlessWhitespaceEnclosed(e);this._signalChange(t?{trigger:e,selection:t}:void 0)}_onMarkerChanges(e){const t=this._editor.getModel();t&&e.some(i=>Iq(i,t.uri))&&this._tryAutoTrigger()}_tryAutoTrigger(){this._autoTriggerTimer.cancelAndSet(()=>{this.trigger({type:2,triggerAction:da.Default})},this._delay)}_getRangeOfSelectionUnlessWhitespaceEnclosed(e){var t;if(!this._editor.hasModel())return;const i=this._editor.getModel(),s=this._editor.getSelection();if(s.isEmpty()&&e.type===2){const{lineNumber:r,column:o}=s.getPosition(),a=i.getLineContent(r);if(a.length===0){if(!(((t=this._editor.getOption(64).experimental)===null||t===void 0?void 0:t.showAiIcon)===Go.On))return}else if(o===1){if(/\s/.test(a[0]))return}else if(o===i.getLineMaxColumn(r)){if(/\s/.test(a[a.length-1]))return}else if(/\s/.test(a[o-2])&&/\s/.test(a[o-1]))return}return s}}var x1;(function(n){n.Empty={type:0};class e{constructor(i,s,r){this.trigger=i,this.position=s,this._cancellablePromise=r,this.type=1,this.actions=r.catch(o=>{if(Wu(o))return M1e;throw o})}cancel(){this._cancellablePromise.cancel()}}n.Triggered=e})(x1||(x1={}));const M1e=Object.freeze({allActions:[],validActions:[],dispose:()=>{},documentation:[],hasAutoFix:!1,hasAIFix:!1,allAIFixes:!1});class oQe extends pe{constructor(e,t,i,s,r,o){super(),this._editor=e,this._registry=t,this._markerService=i,this._progressService=r,this._configurationService=o,this._codeActionOracle=this._register(new qs),this._state=x1.Empty,this._onDidChangeState=this._register(new ue),this.onDidChangeState=this._onDidChangeState.event,this._disposed=!1,this._supportedCodeActions=R1e.bindTo(s),this._register(this._editor.onDidChangeModel(()=>this._update())),this._register(this._editor.onDidChangeModelLanguage(()=>this._update())),this._register(this._registry.onDidChange(()=>this._update())),this._update()}dispose(){this._disposed||(this._disposed=!0,super.dispose(),this.setState(x1.Empty,!0))}_settingEnabledNearbyQuickfixes(){var e;const t=(e=this._editor)===null||e===void 0?void 0:e.getModel();return this._configurationService?this._configurationService.getValue("editor.codeActionWidget.includeNearbyQuickFixes",{resource:t==null?void 0:t.uri}):!1}_update(){if(this._disposed)return;this._codeActionOracle.value=void 0,this.setState(x1.Empty);const e=this._editor.getModel();if(e&&this._registry.has(e)&&!this._editor.getOption(90)){const t=this._registry.all(e).flatMap(i=>{var s;return(s=i.providedCodeActionKinds)!==null&&s!==void 0?s:[]});this._supportedCodeActions.set(t.join(" ")),this._codeActionOracle.value=new rQe(this._editor,this._markerService,i=>{var s;if(!i){this.setState(x1.Empty);return}const r=i.selection.getStartPosition(),o=Ns(async a=>{var l,c,u,h,d,f;if(this._settingEnabledNearbyQuickfixes()&&i.trigger.type===1&&(i.trigger.triggerAction===da.QuickFix||!((c=(l=i.trigger.filter)===null||l===void 0?void 0:l.include)===null||c===void 0)&&c.contains(ut.QuickFix))){const g=await gk(this._registry,e,i.selection,i.trigger,Of.None,a),p=[...g.allActions];if(a.isCancellationRequested)return M1e;if(!((u=g.validActions)===null||u===void 0?void 0:u.some(_=>_.action.kind?ut.QuickFix.contains(new ut(_.action.kind)):!1))){const _=this._markerService.read({resource:e.uri});if(_.length>0){const b=i.selection.getPosition();let y=b,w=Number.MAX_VALUE;const S=[...g.validActions];for(const L of _){const k=L.endColumn,x=L.endLineNumber,I=L.startLineNumber;if(x===b.lineNumber||I===b.lineNumber){y=new he(x,k);const N={type:i.trigger.type,triggerAction:i.trigger.triggerAction,filter:{include:!((h=i.trigger.filter)===null||h===void 0)&&h.include?(d=i.trigger.filter)===null||d===void 0?void 0:d.include:ut.QuickFix},autoApply:i.trigger.autoApply,context:{notAvailableMessage:((f=i.trigger.context)===null||f===void 0?void 0:f.notAvailableMessage)||"",position:y}},T=new Ze(y.lineNumber,y.column,y.lineNumber,y.column),P=await gk(this._registry,e,T,N,Of.None,a);if(P.validActions.length!==0){for(const R of P.validActions)R.highlightRange=R.action.isPreferred;g.allActions.length===0&&p.push(...P.allActions),Math.abs(b.column-k)<w?S.unshift(...P.validActions):S.push(...P.validActions)}w=Math.abs(b.column-k)}}const E=S.filter((L,k,x)=>x.findIndex(I=>I.action.title===L.action.title)===k);return E.sort((L,k)=>L.action.isPreferred&&!k.action.isPreferred?-1:!L.action.isPreferred&&k.action.isPreferred||L.action.isAI&&!k.action.isAI?1:!L.action.isAI&&k.action.isAI?-1:0),{validActions:E,allActions:p,documentation:g.documentation,hasAutoFix:g.hasAutoFix,hasAIFix:g.hasAIFix,allAIFixes:g.allAIFixes,dispose:()=>{g.dispose()}}}}}return gk(this._registry,e,i.selection,i.trigger,Of.None,a)});i.trigger.type===1&&((s=this._progressService)===null||s===void 0||s.showWhile(o,250)),this.setState(new x1.Triggered(i.trigger,r,o))},void 0),this._codeActionOracle.value.trigger({type:2,triggerAction:da.Default})}else this._supportedCodeActions.reset()}trigger(e){var t;(t=this._codeActionOracle.value)===null||t===void 0||t.trigger(e)}setState(e,t){e!==this._state&&(this._state.type===1&&this._state.cancel(),this._state=e,!t&&!this._disposed&&this._onDidChangeState.fire(e))}}var aQe=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},Vd=function(n,e){return function(t,i){e(t,i,n)}},fN;const lQe="quickfix-edit-highlight";let cm=fN=class extends pe{static get(e){return e.getContribution(fN.ID)}constructor(e,t,i,s,r,o,a,l,c,u){super(),this._commandService=a,this._configurationService=l,this._actionWidgetService=c,this._instantiationService=u,this._activeCodeActions=this._register(new qs),this._showDisabled=!1,this._disposed=!1,this._editor=e,this._model=this._register(new oQe(this._editor,r.codeActionProvider,t,i,o,l)),this._register(this._model.onDidChangeState(h=>this.update(h))),this._lightBulbWidget=new Im(()=>{const h=this._editor.getContribution(V_.ID);return h&&this._register(h.onClick(d=>this.showCodeActionList(d.actions,d,{includeDisabledActions:!1,fromLightbulb:!0}))),h}),this._resolver=s.createInstance(DP),this._register(this._editor.onDidLayoutChange(()=>this._actionWidgetService.hide()))}dispose(){this._disposed=!0,super.dispose()}showCodeActions(e,t,i){return this.showCodeActionList(t,i,{includeDisabledActions:!1,fromLightbulb:!1})}manualTriggerAtCurrentPosition(e,t,i,s){var r;if(!this._editor.hasModel())return;(r=ra.get(this._editor))===null||r===void 0||r.closeMessage();const o=this._editor.getPosition();this._trigger({type:1,triggerAction:t,filter:i,autoApply:s,context:{notAvailableMessage:e,position:o}})}_trigger(e){return this._model.trigger(e)}async _applyCodeAction(e,t,i){try{await this._instantiationService.invokeFunction(NXe,e,EP.FromCodeActions,{preview:i,editor:this._editor})}finally{t&&this._trigger({type:2,triggerAction:da.QuickFix,filter:{}})}}async update(e){var t,i,s,r,o,a,l;if(e.type!==1){(t=this._lightBulbWidget.rawValue)===null||t===void 0||t.hide();return}let c;try{c=await e.actions}catch(u){vt(u);return}if(!this._disposed)if((i=this._lightBulbWidget.value)===null||i===void 0||i.update(c,e.trigger,e.position),e.trigger.type===1){if(!((s=e.trigger.filter)===null||s===void 0)&&s.include){const h=this.tryGetValidActionToApply(e.trigger,c);if(h){try{(r=this._lightBulbWidget.value)===null||r===void 0||r.hide(),await this._applyCodeAction(h,!1,!1)}finally{c.dispose()}return}if(e.trigger.context){const d=this.getInvalidActionThatWouldHaveBeenApplied(e.trigger,c);if(d&&d.action.disabled){(o=ra.get(this._editor))===null||o===void 0||o.showMessage(d.action.disabled,e.trigger.context.position),c.dispose();return}}}const u=!!(!((a=e.trigger.filter)===null||a===void 0)&&a.include);if(e.trigger.context&&(!c.allActions.length||!u&&!c.validActions.length)){(l=ra.get(this._editor))===null||l===void 0||l.showMessage(e.trigger.context.notAvailableMessage,e.trigger.context.position),this._activeCodeActions.value=c,c.dispose();return}this._activeCodeActions.value=c,this.showCodeActionList(c,this.toCoords(e.position),{includeDisabledActions:u,fromLightbulb:!1})}else this._actionWidgetService.isVisible?c.dispose():this._activeCodeActions.value=c}getInvalidActionThatWouldHaveBeenApplied(e,t){if(t.allActions.length&&(e.autoApply==="first"&&t.validActions.length===0||e.autoApply==="ifSingle"&&t.allActions.length===1))return t.allActions.find(({action:i})=>i.disabled)}tryGetValidActionToApply(e,t){if(t.validActions.length&&(e.autoApply==="first"&&t.validActions.length>0||e.autoApply==="ifSingle"&&t.validActions.length===1))return t.validActions[0]}async showCodeActionList(e,t,i){const s=this._editor.createDecorationsCollection(),r=this._editor.getDomNode();if(!r)return;const o=i.includeDisabledActions&&(this._showDisabled||e.validActions.length===0)?e.allActions:e.validActions;if(!o.length)return;const a=he.isIPosition(t)?this.toCoords(t):t,l={onSelect:async(c,u)=>{this._applyCodeAction(c,!0,!!u),this._actionWidgetService.hide(),s.clear()},onHide:()=>{var c;(c=this._editor)===null||c===void 0||c.focus(),s.clear()},onHover:async(c,u)=>{var h;if(await c.resolve(u),!u.isCancellationRequested)return{canPreview:!!(!((h=c.action.edit)===null||h===void 0)&&h.edits.length)}},onFocus:c=>{var u,h;if(c&&c.highlightRange&&c.action.diagnostics){const d=[{range:c.action.diagnostics[0],options:fN.DECORATION}];s.set(d);const f=c.action.diagnostics[0],g=(h=(u=this._editor.getModel())===null||u===void 0?void 0:u.getWordAtPosition({lineNumber:f.startLineNumber,column:f.startColumn}))===null||h===void 0?void 0:h.word;Qp(v("editingNewSelection","Context: {0} at line {1} and column {2}.",g,f.startLineNumber,f.startColumn))}else s.clear()}};this._actionWidgetService.show("codeActionWidget",!0,OXe(o,this._shouldShowHeaders(),this._resolver.getResolver()),l,a,r,this._getActionBarActions(e,t,i))}toCoords(e){if(!this._editor.hasModel())return{x:0,y:0};this._editor.revealPosition(e,1),this._editor.render();const t=this._editor.getScrolledVisiblePosition(e),i=ys(this._editor.getDomNode()),s=i.left+t.left,r=i.top+t.top+t.height;return{x:s,y:r}}_shouldShowHeaders(){var e;const t=(e=this._editor)===null||e===void 0?void 0:e.getModel();return this._configurationService.getValue("editor.codeActionWidget.showHeaders",{resource:t==null?void 0:t.uri})}_getActionBarActions(e,t,i){if(i.fromLightbulb)return[];const s=e.documentation.map(r=>{var o;return{id:r.id,label:r.title,tooltip:(o=r.tooltip)!==null&&o!==void 0?o:"",class:void 0,enabled:!0,run:()=>{var a;return this._commandService.executeCommand(r.id,...(a=r.arguments)!==null&&a!==void 0?a:[])}}});return i.includeDisabledActions&&e.validActions.length>0&&e.allActions.length!==e.validActions.length&&s.push(this._showDisabled?{id:"hideMoreActions",label:v("hideMoreActions","Hide Disabled"),enabled:!0,tooltip:"",class:void 0,run:()=>(this._showDisabled=!1,this.showCodeActionList(e,t,i))}:{id:"showMoreActions",label:v("showMoreActions","Show Disabled"),enabled:!0,tooltip:"",class:void 0,run:()=>(this._showDisabled=!0,this.showCodeActionList(e,t,i))}),s}};cm.ID="editor.contrib.codeActionController";cm.DECORATION=yt.register({description:"quickfix-highlight",className:lQe});cm=fN=aQe([Vd(1,Id),Vd(2,ft),Vd(3,at),Vd(4,Ge),Vd(5,Mm),Vd(6,Dn),Vd(7,Ut),Vd(8,Av),Vd(9,at)],cm);Nc((n,e)=>{((s,r)=>{r&&e.addRule(`.monaco-editor ${s} { background-color: ${r}; }`)})(".quickfix-edit-highlight",n.getColor(Fh));const i=n.getColor(tp);i&&e.addRule(`.monaco-editor .quickfix-edit-highlight { border: 1px ${ku(n.type)?"dotted":"solid"} ${i}; box-sizing: border-box; }`)});function VE(n){return ke.regex(R1e.keys()[0],new RegExp("(\\s|^)"+Qa(n.value)+"\\b"))}const wK={type:"object",defaultSnippets:[{body:{kind:""}}],properties:{kind:{type:"string",description:v("args.schema.kind","Kind of the code action to run.")},apply:{type:"string",description:v("args.schema.apply","Controls when the returned actions are applied."),default:"ifSingle",enum:["first","ifSingle","never"],enumDescriptions:[v("args.schema.apply.first","Always apply the first returned code action."),v("args.schema.apply.ifSingle","Apply the first returned code action if it is the only one."),v("args.schema.apply.never","Do not apply the returned code actions.")]},preferred:{type:"boolean",default:!1,description:v("args.schema.preferred","Controls if only preferred code actions should be returned.")}}};function Pv(n,e,t,i,s=da.Default){if(n.hasModel()){const r=cm.get(n);r==null||r.manualTriggerAtCurrentPosition(e,s,t,i)}}class cQe extends qe{constructor(){super({id:vK,label:v("quickfix.trigger.label","Quick Fix..."),alias:"Quick Fix...",precondition:ke.and($.writable,$.hasCodeActionsProvider),kbOpts:{kbExpr:$.textInputFocus,primary:2137,weight:100}})}run(e,t){return Pv(t,v("editor.action.quickFix.noneMessage","No code actions available"),void 0,void 0,da.QuickFix)}}class uQe extends Ks{constructor(){super({id:S1e,precondition:ke.and($.writable,$.hasCodeActionsProvider),metadata:{description:"Trigger a code action",args:[{name:"args",schema:wK}]}})}runEditorCommand(e,t,i){const s=Sh.fromUser(i,{kind:ut.Empty,apply:"ifSingle"});return Pv(t,typeof(i==null?void 0:i.kind)=="string"?s.preferred?v("editor.action.codeAction.noneMessage.preferred.kind","No preferred code actions for '{0}' available",i.kind):v("editor.action.codeAction.noneMessage.kind","No code actions for '{0}' available",i.kind):s.preferred?v("editor.action.codeAction.noneMessage.preferred","No preferred code actions available"):v("editor.action.codeAction.noneMessage","No code actions available"),{include:s.kind,includeSourceActions:!0,onlyIncludePreferredActions:s.preferred},s.apply)}}class hQe extends qe{constructor(){super({id:L1e,label:v("refactor.label","Refactor..."),alias:"Refactor...",precondition:ke.and($.writable,$.hasCodeActionsProvider),kbOpts:{kbExpr:$.textInputFocus,primary:3120,mac:{primary:1328},weight:100},contextMenuOpts:{group:"1_modification",order:2,when:ke.and($.writable,VE(ut.Refactor))},metadata:{description:"Refactor...",args:[{name:"args",schema:wK}]}})}run(e,t,i){const s=Sh.fromUser(i,{kind:ut.Refactor,apply:"never"});return Pv(t,typeof(i==null?void 0:i.kind)=="string"?s.preferred?v("editor.action.refactor.noneMessage.preferred.kind","No preferred refactorings for '{0}' available",i.kind):v("editor.action.refactor.noneMessage.kind","No refactorings for '{0}' available",i.kind):s.preferred?v("editor.action.refactor.noneMessage.preferred","No preferred refactorings available"):v("editor.action.refactor.noneMessage","No refactorings available"),{include:ut.Refactor.contains(s.kind)?s.kind:ut.None,onlyIncludePreferredActions:s.preferred},s.apply,da.Refactor)}}class dQe extends qe{constructor(){super({id:x1e,label:v("source.label","Source Action..."),alias:"Source Action...",precondition:ke.and($.writable,$.hasCodeActionsProvider),contextMenuOpts:{group:"1_modification",order:2.1,when:ke.and($.writable,VE(ut.Source))},metadata:{description:"Source Action...",args:[{name:"args",schema:wK}]}})}run(e,t,i){const s=Sh.fromUser(i,{kind:ut.Source,apply:"never"});return Pv(t,typeof(i==null?void 0:i.kind)=="string"?s.preferred?v("editor.action.source.noneMessage.preferred.kind","No preferred source actions for '{0}' available",i.kind):v("editor.action.source.noneMessage.kind","No source actions for '{0}' available",i.kind):s.preferred?v("editor.action.source.noneMessage.preferred","No preferred source actions available"):v("editor.action.source.noneMessage","No source actions available"),{include:ut.Source.contains(s.kind)?s.kind:ut.None,includeSourceActions:!0,onlyIncludePreferredActions:s.preferred},s.apply,da.SourceAction)}}class fQe extends qe{constructor(){super({id:bK,label:v("organizeImports.label","Organize Imports"),alias:"Organize Imports",precondition:ke.and($.writable,VE(ut.SourceOrganizeImports)),kbOpts:{kbExpr:$.textInputFocus,primary:1581,weight:100}})}run(e,t){return Pv(t,v("editor.action.organize.noneMessage","No organize imports action available"),{include:ut.SourceOrganizeImports,includeSourceActions:!0},"ifSingle",da.OrganizeImports)}}class gQe extends qe{constructor(){super({id:yK,label:v("fixAll.label","Fix All"),alias:"Fix All",precondition:ke.and($.writable,VE(ut.SourceFixAll))})}run(e,t){return Pv(t,v("fixAll.noneMessage","No fix all action available"),{include:ut.SourceFixAll,includeSourceActions:!0},"ifSingle",da.FixAll)}}class pQe extends qe{constructor(){super({id:k1e,label:v("autoFix.label","Auto Fix..."),alias:"Auto Fix...",precondition:ke.and($.writable,VE(ut.QuickFix)),kbOpts:{kbExpr:$.textInputFocus,primary:1625,mac:{primary:2649},weight:100}})}run(e,t){return Pv(t,v("editor.action.autoFix.noneMessage","No auto fixes available"),{include:ut.QuickFix,onlyIncludePreferredActions:!0},"ifSingle",da.AutoFix)}}ti(cm.ID,cm,3);ti(V_.ID,V_,4);Ae(cQe);Ae(hQe);Ae(dQe);Ae(fQe);Ae(pQe);Ae(gQe);Be(new uQe);vn.as($u.Configuration).registerConfiguration({...a2,properties:{"editor.codeActionWidget.showHeaders":{type:"boolean",scope:5,description:v("showCodeActionHeaders","Enable/disable showing group headers in the Code Action menu."),default:!0}}});vn.as($u.Configuration).registerConfiguration({...a2,properties:{"editor.codeActionWidget.includeNearbyQuickFixes":{type:"boolean",scope:5,description:v("includeNearbyQuickFixes","Enable/disable showing nearest Quick Fix within a line when not currently on a diagnostic."),default:!0}}});class w7{constructor(){this.lenses=[],this._disposables=new xe}dispose(){this._disposables.dispose()}get isDisposed(){return this._disposables.isDisposed}add(e,t){this._disposables.add(e);for(const i of e.lenses)this.lenses.push({symbol:i,provider:t})}}async function O1e(n,e,t){const i=n.ordered(e),s=new Map,r=new w7,o=i.map(async(a,l)=>{s.set(a,l);try{const c=await Promise.resolve(a.provideCodeLenses(e,t));c&&r.add(c,a)}catch(c){Jn(c)}});return await Promise.all(o),r.lenses=r.lenses.sort((a,l)=>a.symbol.range.startLineNumber<l.symbol.range.startLineNumber?-1:a.symbol.range.startLineNumber>l.symbol.range.startLineNumber?1:s.get(a.provider)<s.get(l.provider)?-1:s.get(a.provider)>s.get(l.provider)?1:a.symbol.range.startColumn<l.symbol.range.startColumn?-1:a.symbol.range.startColumn>l.symbol.range.startColumn?1:0),r}Yt.registerCommand("_executeCodeLensProvider",function(n,...e){let[t,i]=e;Si(it.isUri(t)),Si(typeof i=="number"||!i);const{codeLensProvider:s}=n.get(Ge),r=n.get(fn).getModel(t);if(!r)throw Tl();const o=[],a=new xe;return O1e(s,r,Ft.None).then(l=>{a.add(l);const c=[];for(const u of l.lenses)i==null||u.symbol.command?o.push(u.symbol):i-- >0&&u.provider.resolveCodeLens&&c.push(Promise.resolve(u.provider.resolveCodeLens(r,u.symbol,Ft.None)).then(h=>o.push(h||u.symbol)));return Promise.all(c)}).then(()=>o).finally(()=>{setTimeout(()=>a.dispose(),100)})});var Tb;(function(n){n[n.STORAGE_DOES_NOT_EXIST=0]="STORAGE_DOES_NOT_EXIST",n[n.STORAGE_IN_MEMORY=1]="STORAGE_IN_MEMORY"})(Tb||(Tb={}));var X0;(function(n){n[n.None=0]="None",n[n.Initialized=1]="Initialized",n[n.Closed=2]="Closed"})(X0||(X0={}));class Nb extends pe{constructor(e,t=Object.create(null)){super(),this.database=e,this.options=t,this._onDidChangeStorage=this._register(new E_),this.onDidChangeStorage=this._onDidChangeStorage.event,this.state=X0.None,this.cache=new Map,this.flushDelayer=this._register(new jfe(Nb.DEFAULT_FLUSH_DELAY)),this.pendingDeletes=new Set,this.pendingInserts=new Map,this.whenFlushedCallbacks=[],this.registerListeners()}registerListeners(){this._register(this.database.onDidChangeItemsExternal(e=>this.onDidChangeItemsExternal(e)))}onDidChangeItemsExternal(e){var t,i;this._onDidChangeStorage.pause();try{(t=e.changed)===null||t===void 0||t.forEach((s,r)=>this.acceptExternal(r,s)),(i=e.deleted)===null||i===void 0||i.forEach(s=>this.acceptExternal(s,void 0))}finally{this._onDidChangeStorage.resume()}}acceptExternal(e,t){if(this.state===X0.Closed)return;let i=!1;Ma(t)?i=this.cache.delete(e):this.cache.get(e)!==t&&(this.cache.set(e,t),i=!0),i&&this._onDidChangeStorage.fire({key:e,external:!0})}get(e,t){const i=this.cache.get(e);return Ma(i)?t:i}getBoolean(e,t){const i=this.get(e);return Ma(i)?t:i==="true"}getNumber(e,t){const i=this.get(e);return Ma(i)?t:parseInt(i,10)}async set(e,t,i=!1){if(this.state===X0.Closed)return;if(Ma(t))return this.delete(e,i);const s=ao(t)||Array.isArray(t)?FGe(t):String(t);if(this.cache.get(e)!==s)return this.cache.set(e,s),this.pendingInserts.set(e,s),this.pendingDeletes.delete(e),this._onDidChangeStorage.fire({key:e,external:i}),this.doFlush()}async delete(e,t=!1){if(!(this.state===X0.Closed||!this.cache.delete(e)))return this.pendingDeletes.has(e)||this.pendingDeletes.add(e),this.pendingInserts.delete(e),this._onDidChangeStorage.fire({key:e,external:t}),this.doFlush()}get hasPending(){return this.pendingInserts.size>0||this.pendingDeletes.size>0}async flushPending(){if(!this.hasPending)return;const e={insert:this.pendingInserts,delete:this.pendingDeletes};return this.pendingDeletes=new Set,this.pendingInserts=new Map,this.database.updateItems(e).finally(()=>{var t;if(!this.hasPending)for(;this.whenFlushedCallbacks.length;)(t=this.whenFlushedCallbacks.pop())===null||t===void 0||t()})}async doFlush(e){return this.options.hint===Tb.STORAGE_IN_MEMORY?this.flushPending():this.flushDelayer.trigger(()=>this.flushPending(),e)}}Nb.DEFAULT_FLUSH_DELAY=100;class b3{constructor(){this.onDidChangeItemsExternal=Ve.None,this.items=new Map}async updateItems(e){var t,i;(t=e.insert)===null||t===void 0||t.forEach((s,r)=>this.items.set(r,s)),(i=e.delete)===null||i===void 0||i.forEach(s=>this.items.delete(s))}}const gN="__$__targetStorageMarker",Rc=Bt("storageService");var QL;(function(n){n[n.NONE=0]="NONE",n[n.SHUTDOWN=1]="SHUTDOWN"})(QL||(QL={}));function mQe(n){const e=n.get(gN);if(e)try{return JSON.parse(e)}catch{}return Object.create(null)}class c2 extends pe{constructor(e={flushInterval:c2.DEFAULT_FLUSH_INTERVAL}){super(),this.options=e,this._onDidChangeValue=this._register(new E_),this._onDidChangeTarget=this._register(new E_),this._onWillSaveState=this._register(new ue),this.onWillSaveState=this._onWillSaveState.event,this._workspaceKeyTargets=void 0,this._profileKeyTargets=void 0,this._applicationKeyTargets=void 0}onDidChangeValue(e,t,i){return Ve.filter(this._onDidChangeValue.event,s=>s.scope===e&&(t===void 0||s.key===t),i)}emitDidChangeValue(e,t){const{key:i,external:s}=t;if(i===gN){switch(e){case-1:this._applicationKeyTargets=void 0;break;case 0:this._profileKeyTargets=void 0;break;case 1:this._workspaceKeyTargets=void 0;break}this._onDidChangeTarget.fire({scope:e})}else this._onDidChangeValue.fire({scope:e,key:i,target:this.getKeyTargets(e)[i],external:s})}get(e,t,i){var s;return(s=this.getStorage(t))===null||s===void 0?void 0:s.get(e,i)}getBoolean(e,t,i){var s;return(s=this.getStorage(t))===null||s===void 0?void 0:s.getBoolean(e,i)}getNumber(e,t,i){var s;return(s=this.getStorage(t))===null||s===void 0?void 0:s.getNumber(e,i)}store(e,t,i,s,r=!1){if(Ma(t)){this.remove(e,i,r);return}this.withPausedEmitters(()=>{var o;this.updateKeyTarget(e,i,s),(o=this.getStorage(i))===null||o===void 0||o.set(e,t,r)})}remove(e,t,i=!1){this.withPausedEmitters(()=>{var s;this.updateKeyTarget(e,t,void 0),(s=this.getStorage(t))===null||s===void 0||s.delete(e,i)})}withPausedEmitters(e){this._onDidChangeValue.pause(),this._onDidChangeTarget.pause();try{e()}finally{this._onDidChangeValue.resume(),this._onDidChangeTarget.resume()}}updateKeyTarget(e,t,i,s=!1){var r,o;const a=this.getKeyTargets(t);typeof i=="number"?a[e]!==i&&(a[e]=i,(r=this.getStorage(t))===null||r===void 0||r.set(gN,JSON.stringify(a),s)):typeof a[e]=="number"&&(delete a[e],(o=this.getStorage(t))===null||o===void 0||o.set(gN,JSON.stringify(a),s))}get workspaceKeyTargets(){return this._workspaceKeyTargets||(this._workspaceKeyTargets=this.loadKeyTargets(1)),this._workspaceKeyTargets}get profileKeyTargets(){return this._profileKeyTargets||(this._profileKeyTargets=this.loadKeyTargets(0)),this._profileKeyTargets}get applicationKeyTargets(){return this._applicationKeyTargets||(this._applicationKeyTargets=this.loadKeyTargets(-1)),this._applicationKeyTargets}getKeyTargets(e){switch(e){case-1:return this.applicationKeyTargets;case 0:return this.profileKeyTargets;default:return this.workspaceKeyTargets}}loadKeyTargets(e){const t=this.getStorage(e);return t?mQe(t):Object.create(null)}}c2.DEFAULT_FLUSH_INTERVAL=60*1e3;class _Qe extends c2{constructor(){super(),this.applicationStorage=this._register(new Nb(new b3,{hint:Tb.STORAGE_IN_MEMORY})),this.profileStorage=this._register(new Nb(new b3,{hint:Tb.STORAGE_IN_MEMORY})),this.workspaceStorage=this._register(new Nb(new b3,{hint:Tb.STORAGE_IN_MEMORY})),this._register(this.workspaceStorage.onDidChangeStorage(e=>this.emitDidChangeValue(1,e))),this._register(this.profileStorage.onDidChangeStorage(e=>this.emitDidChangeValue(0,e))),this._register(this.applicationStorage.onDidChangeStorage(e=>this.emitDidChangeValue(-1,e)))}getStorage(e){switch(e){case-1:return this.applicationStorage;case 0:return this.profileStorage;default:return this.workspaceStorage}}}var vQe=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},bQe=function(n,e){return function(t,i){e(t,i,n)}};const F1e=Bt("ICodeLensCache");class gie{constructor(e,t){this.lineCount=e,this.data=t}}let S7=class{constructor(e){this._fakeProvider=new class{provideCodeLenses(){throw new Error("not supported")}},this._cache=new Rm(20,.75);const t="codelens/cache";cS(mn,()=>e.remove(t,1));const i="codelens/cache2",s=e.get(i,1,"{}");this._deserialize(s),Ve.once(e.onWillSaveState)(r=>{r.reason===QL.SHUTDOWN&&e.store(i,this._serialize(),1,1)})}put(e,t){const i=t.lenses.map(o=>{var a;return{range:o.symbol.range,command:o.symbol.command&&{id:"",title:(a=o.symbol.command)===null||a===void 0?void 0:a.title}}}),s=new w7;s.add({lenses:i,dispose:()=>{}},this._fakeProvider);const r=new gie(e.getLineCount(),s);this._cache.set(e.uri.toString(),r)}get(e){const t=this._cache.get(e.uri.toString());return t&&t.lineCount===e.getLineCount()?t.data:void 0}delete(e){this._cache.delete(e.uri.toString())}_serialize(){const e=Object.create(null);for(const[t,i]of this._cache){const s=new Set;for(const r of i.data.lenses)s.add(r.symbol.range.startLineNumber);e[t]={lineCount:i.lineCount,lines:[...s.values()]}}return JSON.stringify(e)}_deserialize(e){try{const t=JSON.parse(e);for(const i in t){const s=t[i],r=[];for(const a of s.lines)r.push({range:new M(a,1,a,11)});const o=new w7;o.add({lenses:r,dispose(){}},this._fakeProvider),this._cache.set(i,new gie(s.lineCount,o))}}catch{}}};S7=vQe([bQe(0,Rc)],S7);jt(F1e,S7,1);class yQe{constructor(e,t,i){this.afterColumn=1073741824,this.afterLineNumber=e,this.heightInPx=t,this._onHeight=i,this.suppressMouseDown=!0,this.domNode=document.createElement("div")}onComputedHeight(e){this._lastHeight===void 0?this._lastHeight=e:this._lastHeight!==e&&(this._lastHeight=e,this._onHeight())}isVisible(){return this._lastHeight!==0&&this.domNode.hasAttribute("monaco-visible-view-zone")}}class u2{constructor(e,t){this.allowEditorOverflow=!1,this.suppressMouseDown=!0,this._commands=new Map,this._isEmpty=!0,this._editor=e,this._id=`codelens.widget-${u2._idPool++}`,this.updatePosition(t),this._domNode=document.createElement("span"),this._domNode.className="codelens-decoration"}withCommands(e,t){this._commands.clear();const i=[];let s=!1;for(let r=0;r<e.length;r++){const o=e[r];if(o&&(s=!0,o.command)){const a=Lp(o.command.title.trim());o.command.id?(i.push(Te("a",{id:String(r),title:o.command.tooltip,role:"button"},...a)),this._commands.set(String(r),o.command)):i.push(Te("span",{title:o.command.tooltip},...a)),r+1<e.length&&i.push(Te("span",void 0," | "))}}s?(mr(this._domNode,...i),this._isEmpty&&t&&this._domNode.classList.add("fadein"),this._isEmpty=!1):mr(this._domNode,Te("span",void 0,"no commands"))}getCommand(e){return e.parentElement===this._domNode?this._commands.get(e.id):void 0}getId(){return this._id}getDomNode(){return this._domNode}updatePosition(e){const t=this._editor.getModel().getLineFirstNonWhitespaceColumn(e);this._widgetPosition={position:{lineNumber:e,column:t},preference:[1]}}getPosition(){return this._widgetPosition||null}}u2._idPool=0;class y3{constructor(){this._removeDecorations=[],this._addDecorations=[],this._addDecorationsCallbacks=[]}addDecoration(e,t){this._addDecorations.push(e),this._addDecorationsCallbacks.push(t)}removeDecoration(e){this._removeDecorations.push(e)}commit(e){const t=e.deltaDecorations(this._removeDecorations,this._addDecorations);for(let i=0,s=t.length;i<s;i++)this._addDecorationsCallbacks[i](t[i])}}const pie=yt.register({collapseOnReplaceEdit:!0,description:"codelens"});class mie{constructor(e,t,i,s,r,o){this._isDisposed=!1,this._editor=t,this._data=e,this._decorationIds=[];let a;const l=[];this._data.forEach((c,u)=>{c.symbol.command&&l.push(c.symbol),i.addDecoration({range:c.symbol.range,options:pie},h=>this._decorationIds[u]=h),a?a=M.plusRange(a,c.symbol.range):a=M.lift(c.symbol.range)}),this._viewZone=new yQe(a.startLineNumber-1,r,o),this._viewZoneId=s.addZone(this._viewZone),l.length>0&&(this._createContentWidgetIfNecessary(),this._contentWidget.withCommands(l,!1))}_createContentWidgetIfNecessary(){this._contentWidget?this._editor.layoutContentWidget(this._contentWidget):(this._contentWidget=new u2(this._editor,this._viewZone.afterLineNumber+1),this._editor.addContentWidget(this._contentWidget))}dispose(e,t){this._decorationIds.forEach(e.removeDecoration,e),this._decorationIds=[],t==null||t.removeZone(this._viewZoneId),this._contentWidget&&(this._editor.removeContentWidget(this._contentWidget),this._contentWidget=void 0),this._isDisposed=!0}isDisposed(){return this._isDisposed}isValid(){return this._decorationIds.some((e,t)=>{const i=this._editor.getModel().getDecorationRange(e),s=this._data[t].symbol;return!!(i&&M.isEmpty(s.range)===i.isEmpty())})}updateCodeLensSymbols(e,t){this._decorationIds.forEach(t.removeDecoration,t),this._decorationIds=[],this._data=e,this._data.forEach((i,s)=>{t.addDecoration({range:i.symbol.range,options:pie},r=>this._decorationIds[s]=r)})}updateHeight(e,t){this._viewZone.heightInPx=e,t.layoutZone(this._viewZoneId),this._contentWidget&&this._editor.layoutContentWidget(this._contentWidget)}computeIfNecessary(e){if(!this._viewZone.isVisible())return null;for(let t=0;t<this._decorationIds.length;t++){const i=e.getDecorationRange(this._decorationIds[t]);i&&(this._data[t].symbol.range=i)}return this._data}updateCommands(e){this._createContentWidgetIfNecessary(),this._contentWidget.withCommands(e,!0);for(let t=0;t<this._data.length;t++){const i=e[t];if(i){const{symbol:s}=this._data[t];s.command=i.command||s.command}}}getCommand(e){var t;return(t=this._contentWidget)===null||t===void 0?void 0:t.getCommand(e)}getLineNumber(){const e=this._editor.getModel().getDecorationRange(this._decorationIds[0]);return e?e.startLineNumber:-1}update(e){if(this.isValid()){const t=this._editor.getModel().getDecorationRange(this._decorationIds[0]);t&&(this._viewZone.afterLineNumber=t.startLineNumber-1,e.layoutZone(this._viewZoneId),this._contentWidget&&(this._contentWidget.updatePosition(t.startLineNumber),this._editor.layoutContentWidget(this._contentWidget)))}}}const CQe={ctrlCmd:!1,alt:!1};var JL;(function(n){n[n.Blur=1]="Blur",n[n.Gesture=2]="Gesture",n[n.Other=3]="Other"})(JL||(JL={}));var Qc;(function(n){n[n.NONE=0]="NONE",n[n.FIRST=1]="FIRST",n[n.SECOND=2]="SECOND",n[n.LAST=3]="LAST"})(Qc||(Qc={}));const Uu=Bt("quickInputService"),SK=Bt("environmentService");var wQe=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},_ie=function(n,e){return function(t,i){e(t,i,n)}};const Ul=Bt("ILanguageFeatureDebounceService");var AP;(function(n){const e=new WeakMap;let t=0;function i(s){let r=e.get(s);return r===void 0&&(r=++t,e.set(s,r)),r}n.of=i})(AP||(AP={}));class SQe{constructor(e){this._default=e}get(e){return this._default}update(e,t){return this._default}default(){return this._default}}class kQe{constructor(e,t,i,s,r,o){this._logService=e,this._name=t,this._registry=i,this._default=s,this._min=r,this._max=o,this._cache=new Rm(50,.7)}_key(e){return e.id+this._registry.all(e).reduce((t,i)=>uO(AP.of(i),t),0)}get(e){const t=this._key(e),i=this._cache.get(t);return i?qo(i.value,this._min,this._max):this.default()}update(e,t){const i=this._key(e);let s=this._cache.get(i);s||(s=new nYe(6),this._cache.set(i,s));const r=qo(s.update(t),this._min,this._max);return Uj(e.uri,"output")||this._logService.trace(`[DEBOUNCE: ${this._name}] for ${e.uri.toString()} is ${r}ms`),r}_overall(){const e=new zme;for(const[,t]of this._cache)e.update(t.value);return e.value}default(){const e=this._overall()|0||this._default;return qo(e,this._min,this._max)}}let k7=class{constructor(e,t){this._logService=e,this._data=new Map,this._isDev=t.isExtensionDevelopment||!t.isBuilt}for(e,t,i){var s,r,o;const a=(s=i==null?void 0:i.min)!==null&&s!==void 0?s:50,l=(r=i==null?void 0:i.max)!==null&&r!==void 0?r:a**2,c=(o=i==null?void 0:i.key)!==null&&o!==void 0?o:void 0,u=`${AP.of(e)},${a}${c?","+c:""}`;let h=this._data.get(u);return h||(this._isDev?h=new kQe(this._logService,t,e,this._overallAverage()|0||a*1.5,a,l):(this._logService.debug(`[DEBOUNCE: ${t}] is disabled in developed mode`),h=new SQe(a*1.5)),this._data.set(u,h)),h}_overallAverage(){const e=new zme;for(const t of this._data.values())e.update(t.default());return e.value}};k7=wQe([_ie(0,ga),_ie(1,SK)],k7);jt(Ul,k7,1);var LQe=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},Rw=function(n,e){return function(t,i){e(t,i,n)}};let Py=class{constructor(e,t,i,s,r,o){this._editor=e,this._languageFeaturesService=t,this._commandService=s,this._notificationService=r,this._codeLensCache=o,this._disposables=new xe,this._localToDispose=new xe,this._lenses=[],this._oldCodeLensModels=new xe,this._provideCodeLensDebounce=i.for(t.codeLensProvider,"CodeLensProvide",{min:250}),this._resolveCodeLensesDebounce=i.for(t.codeLensProvider,"CodeLensResolve",{min:250,salt:"resolve"}),this._resolveCodeLensesScheduler=new Ei(()=>this._resolveCodeLensesInViewport(),this._resolveCodeLensesDebounce.default()),this._disposables.add(this._editor.onDidChangeModel(()=>this._onModelChange())),this._disposables.add(this._editor.onDidChangeModelLanguage(()=>this._onModelChange())),this._disposables.add(this._editor.onDidChangeConfiguration(a=>{(a.hasChanged(50)||a.hasChanged(19)||a.hasChanged(18))&&this._updateLensStyle(),a.hasChanged(17)&&this._onModelChange()})),this._disposables.add(t.codeLensProvider.onDidChange(this._onModelChange,this)),this._onModelChange(),this._updateLensStyle()}dispose(){var e;this._localDispose(),this._disposables.dispose(),this._oldCodeLensModels.dispose(),(e=this._currentCodeLensModel)===null||e===void 0||e.dispose()}_getLayoutInfo(){const e=Math.max(1.3,this._editor.getOption(66)/this._editor.getOption(52));let t=this._editor.getOption(19);return(!t||t<5)&&(t=this._editor.getOption(52)*.9|0),{fontSize:t,codeLensHeight:t*e|0}}_updateLensStyle(){const{codeLensHeight:e,fontSize:t}=this._getLayoutInfo(),i=this._editor.getOption(18),s=this._editor.getOption(50),{style:r}=this._editor.getContainerDomNode();r.setProperty("--vscode-editorCodeLens-lineHeight",`${e}px`),r.setProperty("--vscode-editorCodeLens-fontSize",`${t}px`),r.setProperty("--vscode-editorCodeLens-fontFeatureSettings",s.fontFeatureSettings),i&&(r.setProperty("--vscode-editorCodeLens-fontFamily",i),r.setProperty("--vscode-editorCodeLens-fontFamilyDefault",na.fontFamily)),this._editor.changeViewZones(o=>{for(const a of this._lenses)a.updateHeight(e,o)})}_localDispose(){var e,t,i;(e=this._getCodeLensModelPromise)===null||e===void 0||e.cancel(),this._getCodeLensModelPromise=void 0,(t=this._resolveCodeLensesPromise)===null||t===void 0||t.cancel(),this._resolveCodeLensesPromise=void 0,this._localToDispose.clear(),this._oldCodeLensModels.clear(),(i=this._currentCodeLensModel)===null||i===void 0||i.dispose()}_onModelChange(){this._localDispose();const e=this._editor.getModel();if(!e||!this._editor.getOption(17)||e.isTooLargeForTokenization())return;const t=this._codeLensCache.get(e);if(t&&this._renderCodeLensSymbols(t),!this._languageFeaturesService.codeLensProvider.has(e)){t&&Gp(()=>{const s=this._codeLensCache.get(e);t===s&&(this._codeLensCache.delete(e),this._onModelChange())},30*1e3,this._localToDispose);return}for(const s of this._languageFeaturesService.codeLensProvider.all(e))if(typeof s.onDidChange=="function"){const r=s.onDidChange(()=>i.schedule());this._localToDispose.add(r)}const i=new Ei(()=>{var s;const r=Date.now();(s=this._getCodeLensModelPromise)===null||s===void 0||s.cancel(),this._getCodeLensModelPromise=Ns(o=>O1e(this._languageFeaturesService.codeLensProvider,e,o)),this._getCodeLensModelPromise.then(o=>{this._currentCodeLensModel&&this._oldCodeLensModels.add(this._currentCodeLensModel),this._currentCodeLensModel=o,this._codeLensCache.put(e,o);const a=this._provideCodeLensDebounce.update(e,Date.now()-r);i.delay=a,this._renderCodeLensSymbols(o),this._resolveCodeLensesInViewportSoon()},vt)},this._provideCodeLensDebounce.get(e));this._localToDispose.add(i),this._localToDispose.add(st(()=>this._resolveCodeLensesScheduler.cancel())),this._localToDispose.add(this._editor.onDidChangeModelContent(()=>{var s;this._editor.changeDecorations(r=>{this._editor.changeViewZones(o=>{const a=[];let l=-1;this._lenses.forEach(u=>{!u.isValid()||l===u.getLineNumber()?a.push(u):(u.update(o),l=u.getLineNumber())});const c=new y3;a.forEach(u=>{u.dispose(c,o),this._lenses.splice(this._lenses.indexOf(u),1)}),c.commit(r)})}),i.schedule(),this._resolveCodeLensesScheduler.cancel(),(s=this._resolveCodeLensesPromise)===null||s===void 0||s.cancel(),this._resolveCodeLensesPromise=void 0})),this._localToDispose.add(this._editor.onDidFocusEditorWidget(()=>{i.schedule()})),this._localToDispose.add(this._editor.onDidBlurEditorText(()=>{i.cancel()})),this._localToDispose.add(this._editor.onDidScrollChange(s=>{s.scrollTopChanged&&this._lenses.length>0&&this._resolveCodeLensesInViewportSoon()})),this._localToDispose.add(this._editor.onDidLayoutChange(()=>{this._resolveCodeLensesInViewportSoon()})),this._localToDispose.add(st(()=>{if(this._editor.getModel()){const s=Au.capture(this._editor);this._editor.changeDecorations(r=>{this._editor.changeViewZones(o=>{this._disposeAllLenses(r,o)})}),s.restore(this._editor)}else this._disposeAllLenses(void 0,void 0)})),this._localToDispose.add(this._editor.onMouseDown(s=>{if(s.target.type!==9)return;let r=s.target.element;if((r==null?void 0:r.tagName)==="SPAN"&&(r=r.parentElement),(r==null?void 0:r.tagName)==="A")for(const o of this._lenses){const a=o.getCommand(r);if(a){this._commandService.executeCommand(a.id,...a.arguments||[]).catch(l=>this._notificationService.error(l));break}}})),i.schedule()}_disposeAllLenses(e,t){const i=new y3;for(const s of this._lenses)s.dispose(i,t);e&&i.commit(e),this._lenses.length=0}_renderCodeLensSymbols(e){if(!this._editor.hasModel())return;const t=this._editor.getModel().getLineCount(),i=[];let s;for(const a of e.lenses){const l=a.symbol.range.startLineNumber;l<1||l>t||(s&&s[s.length-1].symbol.range.startLineNumber===l?s.push(a):(s=[a],i.push(s)))}if(!i.length&&!this._lenses.length)return;const r=Au.capture(this._editor),o=this._getLayoutInfo();this._editor.changeDecorations(a=>{this._editor.changeViewZones(l=>{const c=new y3;let u=0,h=0;for(;h<i.length&&u<this._lenses.length;){const d=i[h][0].symbol.range.startLineNumber,f=this._lenses[u].getLineNumber();f<d?(this._lenses[u].dispose(c,l),this._lenses.splice(u,1)):f===d?(this._lenses[u].updateCodeLensSymbols(i[h],c),h++,u++):(this._lenses.splice(u,0,new mie(i[h],this._editor,c,l,o.codeLensHeight,()=>this._resolveCodeLensesInViewportSoon())),u++,h++)}for(;u<this._lenses.length;)this._lenses[u].dispose(c,l),this._lenses.splice(u,1);for(;h<i.length;)this._lenses.push(new mie(i[h],this._editor,c,l,o.codeLensHeight,()=>this._resolveCodeLensesInViewportSoon())),h++;c.commit(a)})}),r.restore(this._editor)}_resolveCodeLensesInViewportSoon(){this._editor.getModel()&&this._resolveCodeLensesScheduler.schedule()}_resolveCodeLensesInViewport(){var e;(e=this._resolveCodeLensesPromise)===null||e===void 0||e.cancel(),this._resolveCodeLensesPromise=void 0;const t=this._editor.getModel();if(!t)return;const i=[],s=[];if(this._lenses.forEach(a=>{const l=a.computeIfNecessary(t);l&&(i.push(l),s.push(a))}),i.length===0)return;const r=Date.now(),o=Ns(a=>{const l=i.map((c,u)=>{const h=new Array(c.length),d=c.map((f,g)=>!f.symbol.command&&typeof f.provider.resolveCodeLens=="function"?Promise.resolve(f.provider.resolveCodeLens(t,f.symbol,a)).then(p=>{h[g]=p},Jn):(h[g]=f.symbol,Promise.resolve(void 0)));return Promise.all(d).then(()=>{!a.isCancellationRequested&&!s[u].isDisposed()&&s[u].updateCommands(h)})});return Promise.all(l)});this._resolveCodeLensesPromise=o,this._resolveCodeLensesPromise.then(()=>{const a=this._resolveCodeLensesDebounce.update(t,Date.now()-r);this._resolveCodeLensesScheduler.delay=a,this._currentCodeLensModel&&this._codeLensCache.put(t,this._currentCodeLensModel),this._oldCodeLensModels.clear(),o===this._resolveCodeLensesPromise&&(this._resolveCodeLensesPromise=void 0)},a=>{vt(a),o===this._resolveCodeLensesPromise&&(this._resolveCodeLensesPromise=void 0)})}async getModel(){var e;return await this._getCodeLensModelPromise,await this._resolveCodeLensesPromise,!((e=this._currentCodeLensModel)===null||e===void 0)&&e.isDisposed?void 0:this._currentCodeLensModel}};Py.ID="css.editor.codeLens";Py=LQe([Rw(1,Ge),Rw(2,Ul),Rw(3,Dn),Rw(4,is),Rw(5,F1e)],Py);ti(Py.ID,Py,1);Ae(class extends qe{constructor(){super({id:"codelens.showLensesInCurrentLine",precondition:$.hasCodeLensProvider,label:v("showLensOnLine","Show CodeLens Commands For Current Line"),alias:"Show CodeLens Commands For Current Line"})}async run(e,t){if(!t.hasModel())return;const i=e.get(Uu),s=e.get(Dn),r=e.get(is),o=t.getSelection().positionLineNumber,a=t.getContribution(Py.ID);if(!a)return;const l=await a.getModel();if(!l)return;const c=[];for(const d of l.lenses)d.symbol.command&&d.symbol.range.startLineNumber===o&&c.push({label:d.symbol.command.title,command:d.symbol.command});if(c.length===0)return;const u=await i.pick(c,{canPickMany:!1,placeHolder:v("placeHolder","Select a command")});if(!u)return;let h=u.command;if(l.isDisposed){const d=await a.getModel(),f=d==null?void 0:d.lenses.find(g=>{var p;return g.symbol.range.startLineNumber===o&&((p=g.symbol.command)===null||p===void 0?void 0:p.title)===h.title});if(!f||!f.symbol.command)return;h=f.symbol.command}try{await s.executeCommand(h.id,...h.arguments||[])}catch(d){r.error(d)}}});const xQe="$initialize";let vie=!1;function L7(n){Dm&&(vie||(vie=!0,console.warn("Could not create web worker(s). Falling back to loading web worker code in main thread, which might cause UI freezes. Please see https://github.com/microsoft/monaco-editor#faq")),console.warn(n.message))}class EQe{constructor(e,t,i,s){this.vsWorker=e,this.req=t,this.method=i,this.args=s,this.type=0}}class bie{constructor(e,t,i,s){this.vsWorker=e,this.seq=t,this.res=i,this.err=s,this.type=1}}class DQe{constructor(e,t,i,s){this.vsWorker=e,this.req=t,this.eventName=i,this.arg=s,this.type=2}}class IQe{constructor(e,t,i){this.vsWorker=e,this.req=t,this.event=i,this.type=3}}class TQe{constructor(e,t){this.vsWorker=e,this.req=t,this.type=4}}class NQe{constructor(e){this._workerId=-1,this._handler=e,this._lastSentReq=0,this._pendingReplies=Object.create(null),this._pendingEmitters=new Map,this._pendingEvents=new Map}setWorkerId(e){this._workerId=e}sendMessage(e,t){const i=String(++this._lastSentReq);return new Promise((s,r)=>{this._pendingReplies[i]={resolve:s,reject:r},this._send(new EQe(this._workerId,i,e,t))})}listen(e,t){let i=null;const s=new ue({onWillAddFirstListener:()=>{i=String(++this._lastSentReq),this._pendingEmitters.set(i,s),this._send(new DQe(this._workerId,i,e,t))},onDidRemoveLastListener:()=>{this._pendingEmitters.delete(i),this._send(new TQe(this._workerId,i)),i=null}});return s.event}handleMessage(e){!e||!e.vsWorker||this._workerId!==-1&&e.vsWorker!==this._workerId||this._handleMessage(e)}_handleMessage(e){switch(e.type){case 1:return this._handleReplyMessage(e);case 0:return this._handleRequestMessage(e);case 2:return this._handleSubscribeEventMessage(e);case 3:return this._handleEventMessage(e);case 4:return this._handleUnsubscribeEventMessage(e)}}_handleReplyMessage(e){if(!this._pendingReplies[e.seq]){console.warn("Got reply to unknown seq");return}const t=this._pendingReplies[e.seq];if(delete this._pendingReplies[e.seq],e.err){let i=e.err;e.err.$isError&&(i=new Error,i.name=e.err.name,i.message=e.err.message,i.stack=e.err.stack),t.reject(i);return}t.resolve(e.res)}_handleRequestMessage(e){const t=e.req;this._handler.handleMessage(e.method,e.args).then(s=>{this._send(new bie(this._workerId,t,s,void 0))},s=>{s.detail instanceof Error&&(s.detail=nJ(s.detail)),this._send(new bie(this._workerId,t,void 0,nJ(s)))})}_handleSubscribeEventMessage(e){const t=e.req,i=this._handler.handleEvent(e.eventName,e.arg)(s=>{this._send(new IQe(this._workerId,t,s))});this._pendingEvents.set(t,i)}_handleEventMessage(e){if(!this._pendingEmitters.has(e.req)){console.warn("Got event for unknown req");return}this._pendingEmitters.get(e.req).fire(e.event)}_handleUnsubscribeEventMessage(e){if(!this._pendingEvents.has(e.req)){console.warn("Got unsubscribe for unknown req");return}this._pendingEvents.get(e.req).dispose(),this._pendingEvents.delete(e.req)}_send(e){const t=[];if(e.type===0)for(let i=0;i<e.args.length;i++)e.args[i]instanceof ArrayBuffer&&t.push(e.args[i]);else e.type===1&&e.res instanceof ArrayBuffer&&t.push(e.res);this._handler.sendMessage(e,t)}}class AQe extends pe{constructor(e,t,i){super();let s=null;this._worker=this._register(e.create("vs/base/common/worker/simpleWorker",u=>{this._protocol.handleMessage(u)},u=>{s==null||s(u)})),this._protocol=new NQe({sendMessage:(u,h)=>{this._worker.postMessage(u,h)},handleMessage:(u,h)=>{if(typeof i[u]!="function")return Promise.reject(new Error("Missing method "+u+" on main thread host."));try{return Promise.resolve(i[u].apply(i,h))}catch(d){return Promise.reject(d)}},handleEvent:(u,h)=>{if(W1e(u)){const d=i[u].call(i,h);if(typeof d!="function")throw new Error(`Missing dynamic event ${u} on main thread host.`);return d}if(B1e(u)){const d=i[u];if(typeof d!="function")throw new Error(`Missing event ${u} on main thread host.`);return d}throw new Error(`Malformed event name ${u}`)}}),this._protocol.setWorkerId(this._worker.getId());let r=null;const o=globalThis.require;typeof o<"u"&&typeof o.getConfig=="function"?r=o.getConfig():typeof globalThis.requirejs<"u"&&(r=globalThis.requirejs.s.contexts._.config);const a=oq(i);this._onModuleLoaded=this._protocol.sendMessage(xQe,[this._worker.getId(),JSON.parse(JSON.stringify(r)),t,a]);const l=(u,h)=>this._request(u,h),c=(u,h)=>this._protocol.listen(u,h);this._lazyProxy=new Promise((u,h)=>{s=h,this._onModuleLoaded.then(d=>{u(PQe(d,l,c))},d=>{h(d),this._onError("Worker failed to load "+t,d)})})}getProxyObject(){return this._lazyProxy}_request(e,t){return new Promise((i,s)=>{this._onModuleLoaded.then(()=>{this._protocol.sendMessage(e,t).then(i,s)},s)})}_onError(e,t){console.error(e),console.info(t)}}function B1e(n){return n[0]==="o"&&n[1]==="n"&&ch(n.charCodeAt(2))}function W1e(n){return/^onDynamic/.test(n)&&ch(n.charCodeAt(9))}function PQe(n,e,t){const i=o=>function(){const a=Array.prototype.slice.call(arguments,0);return e(o,a)},s=o=>function(a){return t(o,a)},r={};for(const o of n){if(W1e(o)){r[o]=s(o);continue}if(B1e(o)){r[o]=t(o,void 0);continue}r[o]=i(o)}return r}const yie=sg("defaultWorkerFactory",{createScriptURL:n=>n});function RQe(n){const e=globalThis.MonacoEnvironment;if(e){if(typeof e.getWorker=="function")return e.getWorker("workerMain.js",n);if(typeof e.getWorkerUrl=="function"){const t=e.getWorkerUrl("workerMain.js",n);return new Worker(yie?yie.createScriptURL(t):t,{name:n})}}throw new Error("You must define a function MonacoEnvironment.getWorkerUrl or MonacoEnvironment.getWorker")}function MQe(n){return typeof n.then=="function"}class OQe{constructor(e,t,i,s,r){this.id=t,this.label=i;const o=RQe(i);MQe(o)?this.worker=o:this.worker=Promise.resolve(o),this.postMessage(e,[]),this.worker.then(a=>{a.onmessage=function(l){s(l.data)},a.onmessageerror=r,typeof a.addEventListener=="function"&&a.addEventListener("error",r)})}getId(){return this.id}postMessage(e,t){var i;(i=this.worker)===null||i===void 0||i.then(s=>{try{s.postMessage(e,t)}catch(r){vt(r),vt(new Error(`FAILED to post message to '${this.label}'-worker`,{cause:r}))}})}dispose(){var e;(e=this.worker)===null||e===void 0||e.then(t=>t.terminate()),this.worker=null}}class h2{constructor(e){this._label=e,this._webWorkerFailedBeforeError=!1}create(e,t,i){const s=++h2.LAST_WORKER_ID;if(this._webWorkerFailedBeforeError)throw this._webWorkerFailedBeforeError;return new OQe(e,s,this._label||"anonymous"+s,t,r=>{L7(r),this._webWorkerFailedBeforeError=r,i(r)})}}h2.LAST_WORKER_ID=0;class Fg{constructor(e,t,i,s){this.originalStart=e,this.originalLength=t,this.modifiedStart=i,this.modifiedLength=s}getOriginalEnd(){return this.originalStart+this.originalLength}getModifiedEnd(){return this.modifiedStart+this.modifiedLength}}class Cie{constructor(e){this.source=e}getElements(){const e=this.source,t=new Int32Array(e.length);for(let i=0,s=e.length;i<s;i++)t[i]=e.charCodeAt(i);return t}}function FQe(n,e,t){return new kh(new Cie(n),new Cie(e)).ComputeDiff(t).changes}class n0{static Assert(e,t){if(!e)throw new Error(t)}}class s0{static Copy(e,t,i,s,r){for(let o=0;o<r;o++)i[s+o]=e[t+o]}static Copy2(e,t,i,s,r){for(let o=0;o<r;o++)i[s+o]=e[t+o]}}class wie{constructor(){this.m_changes=[],this.m_originalStart=1073741824,this.m_modifiedStart=1073741824,this.m_originalCount=0,this.m_modifiedCount=0}MarkNextChange(){(this.m_originalCount>0||this.m_modifiedCount>0)&&this.m_changes.push(new Fg(this.m_originalStart,this.m_originalCount,this.m_modifiedStart,this.m_modifiedCount)),this.m_originalCount=0,this.m_modifiedCount=0,this.m_originalStart=1073741824,this.m_modifiedStart=1073741824}AddOriginalElement(e,t){this.m_originalStart=Math.min(this.m_originalStart,e),this.m_modifiedStart=Math.min(this.m_modifiedStart,t),this.m_originalCount++}AddModifiedElement(e,t){this.m_originalStart=Math.min(this.m_originalStart,e),this.m_modifiedStart=Math.min(this.m_modifiedStart,t),this.m_modifiedCount++}getChanges(){return(this.m_originalCount>0||this.m_modifiedCount>0)&&this.MarkNextChange(),this.m_changes}getReverseChanges(){return(this.m_originalCount>0||this.m_modifiedCount>0)&&this.MarkNextChange(),this.m_changes.reverse(),this.m_changes}}class kh{constructor(e,t,i=null){this.ContinueProcessingPredicate=i,this._originalSequence=e,this._modifiedSequence=t;const[s,r,o]=kh._getElements(e),[a,l,c]=kh._getElements(t);this._hasStrings=o&&c,this._originalStringElements=s,this._originalElementsOrHash=r,this._modifiedStringElements=a,this._modifiedElementsOrHash=l,this.m_forwardHistory=[],this.m_reverseHistory=[]}static _isStringArray(e){return e.length>0&&typeof e[0]=="string"}static _getElements(e){const t=e.getElements();if(kh._isStringArray(t)){const i=new Int32Array(t.length);for(let s=0,r=t.length;s<r;s++)i[s]=qj(t[s],0);return[t,i,!0]}return t instanceof Int32Array?[[],t,!1]:[[],new Int32Array(t),!1]}ElementsAreEqual(e,t){return this._originalElementsOrHash[e]!==this._modifiedElementsOrHash[t]?!1:this._hasStrings?this._originalStringElements[e]===this._modifiedStringElements[t]:!0}ElementsAreStrictEqual(e,t){if(!this.ElementsAreEqual(e,t))return!1;const i=kh._getStrictElement(this._originalSequence,e),s=kh._getStrictElement(this._modifiedSequence,t);return i===s}static _getStrictElement(e,t){return typeof e.getStrictElement=="function"?e.getStrictElement(t):null}OriginalElementsAreEqual(e,t){return this._originalElementsOrHash[e]!==this._originalElementsOrHash[t]?!1:this._hasStrings?this._originalStringElements[e]===this._originalStringElements[t]:!0}ModifiedElementsAreEqual(e,t){return this._modifiedElementsOrHash[e]!==this._modifiedElementsOrHash[t]?!1:this._hasStrings?this._modifiedStringElements[e]===this._modifiedStringElements[t]:!0}ComputeDiff(e){return this._ComputeDiff(0,this._originalElementsOrHash.length-1,0,this._modifiedElementsOrHash.length-1,e)}_ComputeDiff(e,t,i,s,r){const o=[!1];let a=this.ComputeDiffRecursive(e,t,i,s,o);return r&&(a=this.PrettifyChanges(a)),{quitEarly:o[0],changes:a}}ComputeDiffRecursive(e,t,i,s,r){for(r[0]=!1;e<=t&&i<=s&&this.ElementsAreEqual(e,i);)e++,i++;for(;t>=e&&s>=i&&this.ElementsAreEqual(t,s);)t--,s--;if(e>t||i>s){let h;return i<=s?(n0.Assert(e===t+1,"originalStart should only be one more than originalEnd"),h=[new Fg(e,0,i,s-i+1)]):e<=t?(n0.Assert(i===s+1,"modifiedStart should only be one more than modifiedEnd"),h=[new Fg(e,t-e+1,i,0)]):(n0.Assert(e===t+1,"originalStart should only be one more than originalEnd"),n0.Assert(i===s+1,"modifiedStart should only be one more than modifiedEnd"),h=[]),h}const o=[0],a=[0],l=this.ComputeRecursionPoint(e,t,i,s,o,a,r),c=o[0],u=a[0];if(l!==null)return l;if(!r[0]){const h=this.ComputeDiffRecursive(e,c,i,u,r);let d=[];return r[0]?d=[new Fg(c+1,t-(c+1)+1,u+1,s-(u+1)+1)]:d=this.ComputeDiffRecursive(c+1,t,u+1,s,r),this.ConcatenateChanges(h,d)}return[new Fg(e,t-e+1,i,s-i+1)]}WALKTRACE(e,t,i,s,r,o,a,l,c,u,h,d,f,g,p,m,_,b){let y=null,w=null,S=new wie,E=t,L=i,k=f[0]-m[0]-s,x=-1073741824,I=this.m_forwardHistory.length-1;do{const N=k+e;N===E||N<L&&c[N-1]<c[N+1]?(h=c[N+1],g=h-k-s,h<x&&S.MarkNextChange(),x=h,S.AddModifiedElement(h+1,g),k=N+1-e):(h=c[N-1]+1,g=h-k-s,h<x&&S.MarkNextChange(),x=h-1,S.AddOriginalElement(h,g+1),k=N-1-e),I>=0&&(c=this.m_forwardHistory[I],e=c[0],E=1,L=c.length-1)}while(--I>=-1);if(y=S.getReverseChanges(),b[0]){let N=f[0]+1,T=m[0]+1;if(y!==null&&y.length>0){const P=y[y.length-1];N=Math.max(N,P.getOriginalEnd()),T=Math.max(T,P.getModifiedEnd())}w=[new Fg(N,d-N+1,T,p-T+1)]}else{S=new wie,E=o,L=a,k=f[0]-m[0]-l,x=1073741824,I=_?this.m_reverseHistory.length-1:this.m_reverseHistory.length-2;do{const N=k+r;N===E||N<L&&u[N-1]>=u[N+1]?(h=u[N+1]-1,g=h-k-l,h>x&&S.MarkNextChange(),x=h+1,S.AddOriginalElement(h+1,g+1),k=N+1-r):(h=u[N-1],g=h-k-l,h>x&&S.MarkNextChange(),x=h,S.AddModifiedElement(h+1,g+1),k=N-1-r),I>=0&&(u=this.m_reverseHistory[I],r=u[0],E=1,L=u.length-1)}while(--I>=-1);w=S.getChanges()}return this.ConcatenateChanges(y,w)}ComputeRecursionPoint(e,t,i,s,r,o,a){let l=0,c=0,u=0,h=0,d=0,f=0;e--,i--,r[0]=0,o[0]=0,this.m_forwardHistory=[],this.m_reverseHistory=[];const g=t-e+(s-i),p=g+1,m=new Int32Array(p),_=new Int32Array(p),b=s-i,y=t-e,w=e-i,S=t-s,L=(y-b)%2===0;m[b]=e,_[y]=t,a[0]=!1;for(let k=1;k<=g/2+1;k++){let x=0,I=0;u=this.ClipDiagonalBound(b-k,k,b,p),h=this.ClipDiagonalBound(b+k,k,b,p);for(let T=u;T<=h;T+=2){T===u||T<h&&m[T-1]<m[T+1]?l=m[T+1]:l=m[T-1]+1,c=l-(T-b)-w;const P=l;for(;l<t&&c<s&&this.ElementsAreEqual(l+1,c+1);)l++,c++;if(m[T]=l,l+c>x+I&&(x=l,I=c),!L&&Math.abs(T-y)<=k-1&&l>=_[T])return r[0]=l,o[0]=c,P<=_[T]&&1447>0&&k<=1448?this.WALKTRACE(b,u,h,w,y,d,f,S,m,_,l,t,r,c,s,o,L,a):null}const N=(x-e+(I-i)-k)/2;if(this.ContinueProcessingPredicate!==null&&!this.ContinueProcessingPredicate(x,N))return a[0]=!0,r[0]=x,o[0]=I,N>0&&1447>0&&k<=1448?this.WALKTRACE(b,u,h,w,y,d,f,S,m,_,l,t,r,c,s,o,L,a):(e++,i++,[new Fg(e,t-e+1,i,s-i+1)]);d=this.ClipDiagonalBound(y-k,k,y,p),f=this.ClipDiagonalBound(y+k,k,y,p);for(let T=d;T<=f;T+=2){T===d||T<f&&_[T-1]>=_[T+1]?l=_[T+1]-1:l=_[T-1],c=l-(T-y)-S;const P=l;for(;l>e&&c>i&&this.ElementsAreEqual(l,c);)l--,c--;if(_[T]=l,L&&Math.abs(T-b)<=k&&l<=m[T])return r[0]=l,o[0]=c,P>=m[T]&&1447>0&&k<=1448?this.WALKTRACE(b,u,h,w,y,d,f,S,m,_,l,t,r,c,s,o,L,a):null}if(k<=1447){let T=new Int32Array(h-u+2);T[0]=b-u+1,s0.Copy2(m,u,T,1,h-u+1),this.m_forwardHistory.push(T),T=new Int32Array(f-d+2),T[0]=y-d+1,s0.Copy2(_,d,T,1,f-d+1),this.m_reverseHistory.push(T)}}return this.WALKTRACE(b,u,h,w,y,d,f,S,m,_,l,t,r,c,s,o,L,a)}PrettifyChanges(e){for(let t=0;t<e.length;t++){const i=e[t],s=t<e.length-1?e[t+1].originalStart:this._originalElementsOrHash.length,r=t<e.length-1?e[t+1].modifiedStart:this._modifiedElementsOrHash.length,o=i.originalLength>0,a=i.modifiedLength>0;for(;i.originalStart+i.originalLength<s&&i.modifiedStart+i.modifiedLength<r&&(!o||this.OriginalElementsAreEqual(i.originalStart,i.originalStart+i.originalLength))&&(!a||this.ModifiedElementsAreEqual(i.modifiedStart,i.modifiedStart+i.modifiedLength));){const c=this.ElementsAreStrictEqual(i.originalStart,i.modifiedStart);if(this.ElementsAreStrictEqual(i.originalStart+i.originalLength,i.modifiedStart+i.modifiedLength)&&!c)break;i.originalStart++,i.modifiedStart++}const l=[null];if(t<e.length-1&&this.ChangesOverlap(e[t],e[t+1],l)){e[t]=l[0],e.splice(t+1,1),t--;continue}}for(let t=e.length-1;t>=0;t--){const i=e[t];let s=0,r=0;if(t>0){const h=e[t-1];s=h.originalStart+h.originalLength,r=h.modifiedStart+h.modifiedLength}const o=i.originalLength>0,a=i.modifiedLength>0;let l=0,c=this._boundaryScore(i.originalStart,i.originalLength,i.modifiedStart,i.modifiedLength);for(let h=1;;h++){const d=i.originalStart-h,f=i.modifiedStart-h;if(d<s||f<r||o&&!this.OriginalElementsAreEqual(d,d+i.originalLength)||a&&!this.ModifiedElementsAreEqual(f,f+i.modifiedLength))break;const p=(d===s&&f===r?5:0)+this._boundaryScore(d,i.originalLength,f,i.modifiedLength);p>c&&(c=p,l=h)}i.originalStart-=l,i.modifiedStart-=l;const u=[null];if(t>0&&this.ChangesOverlap(e[t-1],e[t],u)){e[t-1]=u[0],e.splice(t,1),t++;continue}}if(this._hasStrings)for(let t=1,i=e.length;t<i;t++){const s=e[t-1],r=e[t],o=r.originalStart-s.originalStart-s.originalLength,a=s.originalStart,l=r.originalStart+r.originalLength,c=l-a,u=s.modifiedStart,h=r.modifiedStart+r.modifiedLength,d=h-u;if(o<5&&c<20&&d<20){const f=this._findBetterContiguousSequence(a,c,u,d,o);if(f){const[g,p]=f;(g!==s.originalStart+s.originalLength||p!==s.modifiedStart+s.modifiedLength)&&(s.originalLength=g-s.originalStart,s.modifiedLength=p-s.modifiedStart,r.originalStart=g+o,r.modifiedStart=p+o,r.originalLength=l-r.originalStart,r.modifiedLength=h-r.modifiedStart)}}}return e}_findBetterContiguousSequence(e,t,i,s,r){if(t<r||s<r)return null;const o=e+t-r+1,a=i+s-r+1;let l=0,c=0,u=0;for(let h=e;h<o;h++)for(let d=i;d<a;d++){const f=this._contiguousSequenceScore(h,d,r);f>0&&f>l&&(l=f,c=h,u=d)}return l>0?[c,u]:null}_contiguousSequenceScore(e,t,i){let s=0;for(let r=0;r<i;r++){if(!this.ElementsAreEqual(e+r,t+r))return 0;s+=this._originalStringElements[e+r].length}return s}_OriginalIsBoundary(e){return e<=0||e>=this._originalElementsOrHash.length-1?!0:this._hasStrings&&/^\s*$/.test(this._originalStringElements[e])}_OriginalRegionIsBoundary(e,t){if(this._OriginalIsBoundary(e)||this._OriginalIsBoundary(e-1))return!0;if(t>0){const i=e+t;if(this._OriginalIsBoundary(i-1)||this._OriginalIsBoundary(i))return!0}return!1}_ModifiedIsBoundary(e){return e<=0||e>=this._modifiedElementsOrHash.length-1?!0:this._hasStrings&&/^\s*$/.test(this._modifiedStringElements[e])}_ModifiedRegionIsBoundary(e,t){if(this._ModifiedIsBoundary(e)||this._ModifiedIsBoundary(e-1))return!0;if(t>0){const i=e+t;if(this._ModifiedIsBoundary(i-1)||this._ModifiedIsBoundary(i))return!0}return!1}_boundaryScore(e,t,i,s){const r=this._OriginalRegionIsBoundary(e,t)?1:0,o=this._ModifiedRegionIsBoundary(i,s)?1:0;return r+o}ConcatenateChanges(e,t){const i=[];if(e.length===0||t.length===0)return t.length>0?t:e;if(this.ChangesOverlap(e[e.length-1],t[0],i)){const s=new Array(e.length+t.length-1);return s0.Copy(e,0,s,0,e.length-1),s[e.length-1]=i[0],s0.Copy(t,1,s,e.length,t.length-1),s}else{const s=new Array(e.length+t.length);return s0.Copy(e,0,s,0,e.length),s0.Copy(t,0,s,e.length,t.length),s}}ChangesOverlap(e,t,i){if(n0.Assert(e.originalStart<=t.originalStart,"Left change is not less than or equal to right change"),n0.Assert(e.modifiedStart<=t.modifiedStart,"Left change is not less than or equal to right change"),e.originalStart+e.originalLength>=t.originalStart||e.modifiedStart+e.modifiedLength>=t.modifiedStart){const s=e.originalStart;let r=e.originalLength;const o=e.modifiedStart;let a=e.modifiedLength;return e.originalStart+e.originalLength>=t.originalStart&&(r=t.originalStart+t.originalLength-e.originalStart),e.modifiedStart+e.modifiedLength>=t.modifiedStart&&(a=t.modifiedStart+t.modifiedLength-e.modifiedStart),i[0]=new Fg(s,r,o,a),!0}else return i[0]=null,!1}ClipDiagonalBound(e,t,i,s){if(e>=0&&e<s)return e;const r=i,o=s-i-1,a=t%2===0;if(e<0){const l=r%2===0;return a===l?0:1}else{const l=o%2===0;return a===l?s-1:s-2}}}class BQe{constructor(e,t,i,s){this._uri=e,this._lines=t,this._eol=i,this._versionId=s,this._lineStarts=null,this._cachedTextValue=null}dispose(){this._lines.length=0}get version(){return this._versionId}getText(){return this._cachedTextValue===null&&(this._cachedTextValue=this._lines.join(this._eol)),this._cachedTextValue}onEvents(e){e.eol&&e.eol!==this._eol&&(this._eol=e.eol,this._lineStarts=null);const t=e.changes;for(const i of t)this._acceptDeleteRange(i.range),this._acceptInsertText(new he(i.range.startLineNumber,i.range.startColumn),i.text);this._versionId=e.versionId,this._cachedTextValue=null}_ensureLineStarts(){if(!this._lineStarts){const e=this._eol.length,t=this._lines.length,i=new Uint32Array(t);for(let s=0;s<t;s++)i[s]=this._lines[s].length+e;this._lineStarts=new aKe(i)}}_setLineText(e,t){this._lines[e]=t,this._lineStarts&&this._lineStarts.setValue(e,this._lines[e].length+this._eol.length)}_acceptDeleteRange(e){if(e.startLineNumber===e.endLineNumber){if(e.startColumn===e.endColumn)return;this._setLineText(e.startLineNumber-1,this._lines[e.startLineNumber-1].substring(0,e.startColumn-1)+this._lines[e.startLineNumber-1].substring(e.endColumn-1));return}this._setLineText(e.startLineNumber-1,this._lines[e.startLineNumber-1].substring(0,e.startColumn-1)+this._lines[e.endLineNumber-1].substring(e.endColumn-1)),this._lines.splice(e.startLineNumber,e.endLineNumber-e.startLineNumber),this._lineStarts&&this._lineStarts.removeValues(e.startLineNumber,e.endLineNumber-e.startLineNumber)}_acceptInsertText(e,t){if(t.length===0)return;const i=fd(t);if(i.length===1){this._setLineText(e.lineNumber-1,this._lines[e.lineNumber-1].substring(0,e.column-1)+i[0]+this._lines[e.lineNumber-1].substring(e.column-1));return}i[i.length-1]+=this._lines[e.lineNumber-1].substring(e.column-1),this._setLineText(e.lineNumber-1,this._lines[e.lineNumber-1].substring(0,e.column-1)+i[0]);const s=new Uint32Array(i.length-1);for(let r=1;r<i.length;r++)this._lines.splice(e.lineNumber+r-1,0,i[r]),s[r-1]=i[r].length+this._eol.length;this._lineStarts&&this._lineStarts.insertValues(e.lineNumber,s)}}class WQe{constructor(e,t,i){const s=new Uint8Array(e*t);for(let r=0,o=e*t;r<o;r++)s[r]=i;this._data=s,this.rows=e,this.cols=t}get(e,t){return this._data[e*this.cols+t]}set(e,t,i){this._data[e*this.cols+t]=i}}class VQe{constructor(e){let t=0,i=0;for(let r=0,o=e.length;r<o;r++){const[a,l,c]=e[r];l>t&&(t=l),a>i&&(i=a),c>i&&(i=c)}t++,i++;const s=new WQe(i,t,0);for(let r=0,o=e.length;r<o;r++){const[a,l,c]=e[r];s.set(a,l,c)}this._states=s,this._maxCharCode=t}nextState(e,t){return t<0||t>=this._maxCharCode?0:this._states.get(e,t)}}let C3=null;function HQe(){return C3===null&&(C3=new VQe([[1,104,2],[1,72,2],[1,102,6],[1,70,6],[2,116,3],[2,84,3],[3,116,4],[3,84,4],[4,112,5],[4,80,5],[5,115,9],[5,83,9],[5,58,10],[6,105,7],[6,73,7],[7,108,8],[7,76,8],[8,101,9],[8,69,9],[9,58,10],[10,47,11],[11,47,12]])),C3}let Mw=null;function $Qe(){if(Mw===null){Mw=new DC(0);const n=` <>'"、。。、,.:;‘〈「『〔([{「」}])〕』」〉’`~…`;for(let t=0;t<n.length;t++)Mw.set(n.charCodeAt(t),1);const e=".,;:";for(let t=0;t<e.length;t++)Mw.set(e.charCodeAt(t),2)}return Mw}class PP{static _createLink(e,t,i,s,r){let o=r-1;do{const a=t.charCodeAt(o);if(e.get(a)!==2)break;o--}while(o>s);if(s>0){const a=t.charCodeAt(s-1),l=t.charCodeAt(o);(a===40&&l===41||a===91&&l===93||a===123&&l===125)&&o--}return{range:{startLineNumber:i,startColumn:s+1,endLineNumber:i,endColumn:o+2},url:t.substring(s,o+1)}}static computeLinks(e,t=HQe()){const i=$Qe(),s=[];for(let r=1,o=e.getLineCount();r<=o;r++){const a=e.getLineContent(r),l=a.length;let c=0,u=0,h=0,d=1,f=!1,g=!1,p=!1,m=!1;for(;c<l;){let _=!1;const b=a.charCodeAt(c);if(d===13){let y;switch(b){case 40:f=!0,y=0;break;case 41:y=f?0:1;break;case 91:p=!0,g=!0,y=0;break;case 93:p=!1,y=g?0:1;break;case 123:m=!0,y=0;break;case 125:y=m?0:1;break;case 39:case 34:case 96:h===b?y=1:h===39||h===34||h===96?y=0:y=1;break;case 42:y=h===42?1:0;break;case 124:y=h===124?1:0;break;case 32:y=p?0:1;break;default:y=i.get(b)}y===1&&(s.push(PP._createLink(i,a,r,u,c)),_=!0)}else if(d===12){let y;b===91?(g=!0,y=0):y=i.get(b),y===1?_=!0:d=13}else d=t.nextState(d,b),d===0&&(_=!0);_&&(d=1,f=!1,g=!1,m=!1,u=c+1,h=b),c++}d===13&&s.push(PP._createLink(i,a,r,u,l))}return s}}function zQe(n){return!n||typeof n.getLineCount!="function"||typeof n.getLineContent!="function"?[]:PP.computeLinks(n)}class x7{constructor(){this._defaultValueSet=[["true","false"],["True","False"],["Private","Public","Friend","ReadOnly","Partial","Protected","WriteOnly"],["public","protected","private"]]}navigateValueSet(e,t,i,s,r){if(e&&t){const o=this.doNavigateValueSet(t,r);if(o)return{range:e,value:o}}if(i&&s){const o=this.doNavigateValueSet(s,r);if(o)return{range:i,value:o}}return null}doNavigateValueSet(e,t){const i=this.numberReplace(e,t);return i!==null?i:this.textReplace(e,t)}numberReplace(e,t){const i=Math.pow(10,e.length-(e.lastIndexOf(".")+1));let s=Number(e);const r=parseFloat(e);return!isNaN(s)&&!isNaN(r)&&s===r?s===0&&!t?null:(s=Math.floor(s*i),s+=t?i:-i,String(s/i)):null}textReplace(e,t){return this.valueSetsReplace(this._defaultValueSet,e,t)}valueSetsReplace(e,t,i){let s=null;for(let r=0,o=e.length;s===null&&r<o;r++)s=this.valueSetReplace(e[r],t,i);return s}valueSetReplace(e,t,i){let s=e.indexOf(t);return s>=0?(s+=i?1:-1,s<0?s=e.length-1:s%=e.length,e[s]):null}}x7.INSTANCE=new x7;var E7;(function(n){n[n.Unknown=0]="Unknown",n[n.Disabled=1]="Disabled",n[n.Enabled=2]="Enabled"})(E7||(E7={}));var D7;(function(n){n[n.Invoke=1]="Invoke",n[n.Auto=2]="Auto"})(D7||(D7={}));var I7;(function(n){n[n.None=0]="None",n[n.KeepWhitespace=1]="KeepWhitespace",n[n.InsertAsSnippet=4]="InsertAsSnippet"})(I7||(I7={}));var T7;(function(n){n[n.Method=0]="Method",n[n.Function=1]="Function",n[n.Constructor=2]="Constructor",n[n.Field=3]="Field",n[n.Variable=4]="Variable",n[n.Class=5]="Class",n[n.Struct=6]="Struct",n[n.Interface=7]="Interface",n[n.Module=8]="Module",n[n.Property=9]="Property",n[n.Event=10]="Event",n[n.Operator=11]="Operator",n[n.Unit=12]="Unit",n[n.Value=13]="Value",n[n.Constant=14]="Constant",n[n.Enum=15]="Enum",n[n.EnumMember=16]="EnumMember",n[n.Keyword=17]="Keyword",n[n.Text=18]="Text",n[n.Color=19]="Color",n[n.File=20]="File",n[n.Reference=21]="Reference",n[n.Customcolor=22]="Customcolor",n[n.Folder=23]="Folder",n[n.TypeParameter=24]="TypeParameter",n[n.User=25]="User",n[n.Issue=26]="Issue",n[n.Snippet=27]="Snippet"})(T7||(T7={}));var N7;(function(n){n[n.Deprecated=1]="Deprecated"})(N7||(N7={}));var A7;(function(n){n[n.Invoke=0]="Invoke",n[n.TriggerCharacter=1]="TriggerCharacter",n[n.TriggerForIncompleteCompletions=2]="TriggerForIncompleteCompletions"})(A7||(A7={}));var P7;(function(n){n[n.EXACT=0]="EXACT",n[n.ABOVE=1]="ABOVE",n[n.BELOW=2]="BELOW"})(P7||(P7={}));var R7;(function(n){n[n.NotSet=0]="NotSet",n[n.ContentFlush=1]="ContentFlush",n[n.RecoverFromMarkers=2]="RecoverFromMarkers",n[n.Explicit=3]="Explicit",n[n.Paste=4]="Paste",n[n.Undo=5]="Undo",n[n.Redo=6]="Redo"})(R7||(R7={}));var M7;(function(n){n[n.LF=1]="LF",n[n.CRLF=2]="CRLF"})(M7||(M7={}));var O7;(function(n){n[n.Text=0]="Text",n[n.Read=1]="Read",n[n.Write=2]="Write"})(O7||(O7={}));var F7;(function(n){n[n.None=0]="None",n[n.Keep=1]="Keep",n[n.Brackets=2]="Brackets",n[n.Advanced=3]="Advanced",n[n.Full=4]="Full"})(F7||(F7={}));var B7;(function(n){n[n.acceptSuggestionOnCommitCharacter=0]="acceptSuggestionOnCommitCharacter",n[n.acceptSuggestionOnEnter=1]="acceptSuggestionOnEnter",n[n.accessibilitySupport=2]="accessibilitySupport",n[n.accessibilityPageSize=3]="accessibilityPageSize",n[n.ariaLabel=4]="ariaLabel",n[n.ariaRequired=5]="ariaRequired",n[n.autoClosingBrackets=6]="autoClosingBrackets",n[n.autoClosingComments=7]="autoClosingComments",n[n.screenReaderAnnounceInlineSuggestion=8]="screenReaderAnnounceInlineSuggestion",n[n.autoClosingDelete=9]="autoClosingDelete",n[n.autoClosingOvertype=10]="autoClosingOvertype",n[n.autoClosingQuotes=11]="autoClosingQuotes",n[n.autoIndent=12]="autoIndent",n[n.automaticLayout=13]="automaticLayout",n[n.autoSurround=14]="autoSurround",n[n.bracketPairColorization=15]="bracketPairColorization",n[n.guides=16]="guides",n[n.codeLens=17]="codeLens",n[n.codeLensFontFamily=18]="codeLensFontFamily",n[n.codeLensFontSize=19]="codeLensFontSize",n[n.colorDecorators=20]="colorDecorators",n[n.colorDecoratorsLimit=21]="colorDecoratorsLimit",n[n.columnSelection=22]="columnSelection",n[n.comments=23]="comments",n[n.contextmenu=24]="contextmenu",n[n.copyWithSyntaxHighlighting=25]="copyWithSyntaxHighlighting",n[n.cursorBlinking=26]="cursorBlinking",n[n.cursorSmoothCaretAnimation=27]="cursorSmoothCaretAnimation",n[n.cursorStyle=28]="cursorStyle",n[n.cursorSurroundingLines=29]="cursorSurroundingLines",n[n.cursorSurroundingLinesStyle=30]="cursorSurroundingLinesStyle",n[n.cursorWidth=31]="cursorWidth",n[n.disableLayerHinting=32]="disableLayerHinting",n[n.disableMonospaceOptimizations=33]="disableMonospaceOptimizations",n[n.domReadOnly=34]="domReadOnly",n[n.dragAndDrop=35]="dragAndDrop",n[n.dropIntoEditor=36]="dropIntoEditor",n[n.emptySelectionClipboard=37]="emptySelectionClipboard",n[n.experimentalWhitespaceRendering=38]="experimentalWhitespaceRendering",n[n.extraEditorClassName=39]="extraEditorClassName",n[n.fastScrollSensitivity=40]="fastScrollSensitivity",n[n.find=41]="find",n[n.fixedOverflowWidgets=42]="fixedOverflowWidgets",n[n.folding=43]="folding",n[n.foldingStrategy=44]="foldingStrategy",n[n.foldingHighlight=45]="foldingHighlight",n[n.foldingImportsByDefault=46]="foldingImportsByDefault",n[n.foldingMaximumRegions=47]="foldingMaximumRegions",n[n.unfoldOnClickAfterEndOfLine=48]="unfoldOnClickAfterEndOfLine",n[n.fontFamily=49]="fontFamily",n[n.fontInfo=50]="fontInfo",n[n.fontLigatures=51]="fontLigatures",n[n.fontSize=52]="fontSize",n[n.fontWeight=53]="fontWeight",n[n.fontVariations=54]="fontVariations",n[n.formatOnPaste=55]="formatOnPaste",n[n.formatOnType=56]="formatOnType",n[n.glyphMargin=57]="glyphMargin",n[n.gotoLocation=58]="gotoLocation",n[n.hideCursorInOverviewRuler=59]="hideCursorInOverviewRuler",n[n.hover=60]="hover",n[n.inDiffEditor=61]="inDiffEditor",n[n.inlineSuggest=62]="inlineSuggest",n[n.letterSpacing=63]="letterSpacing",n[n.lightbulb=64]="lightbulb",n[n.lineDecorationsWidth=65]="lineDecorationsWidth",n[n.lineHeight=66]="lineHeight",n[n.lineNumbers=67]="lineNumbers",n[n.lineNumbersMinChars=68]="lineNumbersMinChars",n[n.linkedEditing=69]="linkedEditing",n[n.links=70]="links",n[n.matchBrackets=71]="matchBrackets",n[n.minimap=72]="minimap",n[n.mouseStyle=73]="mouseStyle",n[n.mouseWheelScrollSensitivity=74]="mouseWheelScrollSensitivity",n[n.mouseWheelZoom=75]="mouseWheelZoom",n[n.multiCursorMergeOverlapping=76]="multiCursorMergeOverlapping",n[n.multiCursorModifier=77]="multiCursorModifier",n[n.multiCursorPaste=78]="multiCursorPaste",n[n.multiCursorLimit=79]="multiCursorLimit",n[n.occurrencesHighlight=80]="occurrencesHighlight",n[n.overviewRulerBorder=81]="overviewRulerBorder",n[n.overviewRulerLanes=82]="overviewRulerLanes",n[n.padding=83]="padding",n[n.pasteAs=84]="pasteAs",n[n.parameterHints=85]="parameterHints",n[n.peekWidgetDefaultFocus=86]="peekWidgetDefaultFocus",n[n.definitionLinkOpensInPeek=87]="definitionLinkOpensInPeek",n[n.quickSuggestions=88]="quickSuggestions",n[n.quickSuggestionsDelay=89]="quickSuggestionsDelay",n[n.readOnly=90]="readOnly",n[n.readOnlyMessage=91]="readOnlyMessage",n[n.renameOnType=92]="renameOnType",n[n.renderControlCharacters=93]="renderControlCharacters",n[n.renderFinalNewline=94]="renderFinalNewline",n[n.renderLineHighlight=95]="renderLineHighlight",n[n.renderLineHighlightOnlyWhenFocus=96]="renderLineHighlightOnlyWhenFocus",n[n.renderValidationDecorations=97]="renderValidationDecorations",n[n.renderWhitespace=98]="renderWhitespace",n[n.revealHorizontalRightPadding=99]="revealHorizontalRightPadding",n[n.roundedSelection=100]="roundedSelection",n[n.rulers=101]="rulers",n[n.scrollbar=102]="scrollbar",n[n.scrollBeyondLastColumn=103]="scrollBeyondLastColumn",n[n.scrollBeyondLastLine=104]="scrollBeyondLastLine",n[n.scrollPredominantAxis=105]="scrollPredominantAxis",n[n.selectionClipboard=106]="selectionClipboard",n[n.selectionHighlight=107]="selectionHighlight",n[n.selectOnLineNumbers=108]="selectOnLineNumbers",n[n.showFoldingControls=109]="showFoldingControls",n[n.showUnused=110]="showUnused",n[n.snippetSuggestions=111]="snippetSuggestions",n[n.smartSelect=112]="smartSelect",n[n.smoothScrolling=113]="smoothScrolling",n[n.stickyScroll=114]="stickyScroll",n[n.stickyTabStops=115]="stickyTabStops",n[n.stopRenderingLineAfter=116]="stopRenderingLineAfter",n[n.suggest=117]="suggest",n[n.suggestFontSize=118]="suggestFontSize",n[n.suggestLineHeight=119]="suggestLineHeight",n[n.suggestOnTriggerCharacters=120]="suggestOnTriggerCharacters",n[n.suggestSelection=121]="suggestSelection",n[n.tabCompletion=122]="tabCompletion",n[n.tabIndex=123]="tabIndex",n[n.unicodeHighlighting=124]="unicodeHighlighting",n[n.unusualLineTerminators=125]="unusualLineTerminators",n[n.useShadowDOM=126]="useShadowDOM",n[n.useTabStops=127]="useTabStops",n[n.wordBreak=128]="wordBreak",n[n.wordSeparators=129]="wordSeparators",n[n.wordWrap=130]="wordWrap",n[n.wordWrapBreakAfterCharacters=131]="wordWrapBreakAfterCharacters",n[n.wordWrapBreakBeforeCharacters=132]="wordWrapBreakBeforeCharacters",n[n.wordWrapColumn=133]="wordWrapColumn",n[n.wordWrapOverride1=134]="wordWrapOverride1",n[n.wordWrapOverride2=135]="wordWrapOverride2",n[n.wrappingIndent=136]="wrappingIndent",n[n.wrappingStrategy=137]="wrappingStrategy",n[n.showDeprecated=138]="showDeprecated",n[n.inlayHints=139]="inlayHints",n[n.editorClassName=140]="editorClassName",n[n.pixelRatio=141]="pixelRatio",n[n.tabFocusMode=142]="tabFocusMode",n[n.layoutInfo=143]="layoutInfo",n[n.wrappingInfo=144]="wrappingInfo",n[n.defaultColorDecorators=145]="defaultColorDecorators",n[n.colorDecoratorsActivatedOn=146]="colorDecoratorsActivatedOn",n[n.inlineCompletionsAccessibilityVerbose=147]="inlineCompletionsAccessibilityVerbose"})(B7||(B7={}));var W7;(function(n){n[n.TextDefined=0]="TextDefined",n[n.LF=1]="LF",n[n.CRLF=2]="CRLF"})(W7||(W7={}));var V7;(function(n){n[n.LF=0]="LF",n[n.CRLF=1]="CRLF"})(V7||(V7={}));var H7;(function(n){n[n.Left=1]="Left",n[n.Right=2]="Right"})(H7||(H7={}));var $7;(function(n){n[n.None=0]="None",n[n.Indent=1]="Indent",n[n.IndentOutdent=2]="IndentOutdent",n[n.Outdent=3]="Outdent"})($7||($7={}));var z7;(function(n){n[n.Both=0]="Both",n[n.Right=1]="Right",n[n.Left=2]="Left",n[n.None=3]="None"})(z7||(z7={}));var U7;(function(n){n[n.Type=1]="Type",n[n.Parameter=2]="Parameter"})(U7||(U7={}));var j7;(function(n){n[n.Automatic=0]="Automatic",n[n.Explicit=1]="Explicit"})(j7||(j7={}));var q7;(function(n){n[n.DependsOnKbLayout=-1]="DependsOnKbLayout",n[n.Unknown=0]="Unknown",n[n.Backspace=1]="Backspace",n[n.Tab=2]="Tab",n[n.Enter=3]="Enter",n[n.Shift=4]="Shift",n[n.Ctrl=5]="Ctrl",n[n.Alt=6]="Alt",n[n.PauseBreak=7]="PauseBreak",n[n.CapsLock=8]="CapsLock",n[n.Escape=9]="Escape",n[n.Space=10]="Space",n[n.PageUp=11]="PageUp",n[n.PageDown=12]="PageDown",n[n.End=13]="End",n[n.Home=14]="Home",n[n.LeftArrow=15]="LeftArrow",n[n.UpArrow=16]="UpArrow",n[n.RightArrow=17]="RightArrow",n[n.DownArrow=18]="DownArrow",n[n.Insert=19]="Insert",n[n.Delete=20]="Delete",n[n.Digit0=21]="Digit0",n[n.Digit1=22]="Digit1",n[n.Digit2=23]="Digit2",n[n.Digit3=24]="Digit3",n[n.Digit4=25]="Digit4",n[n.Digit5=26]="Digit5",n[n.Digit6=27]="Digit6",n[n.Digit7=28]="Digit7",n[n.Digit8=29]="Digit8",n[n.Digit9=30]="Digit9",n[n.KeyA=31]="KeyA",n[n.KeyB=32]="KeyB",n[n.KeyC=33]="KeyC",n[n.KeyD=34]="KeyD",n[n.KeyE=35]="KeyE",n[n.KeyF=36]="KeyF",n[n.KeyG=37]="KeyG",n[n.KeyH=38]="KeyH",n[n.KeyI=39]="KeyI",n[n.KeyJ=40]="KeyJ",n[n.KeyK=41]="KeyK",n[n.KeyL=42]="KeyL",n[n.KeyM=43]="KeyM",n[n.KeyN=44]="KeyN",n[n.KeyO=45]="KeyO",n[n.KeyP=46]="KeyP",n[n.KeyQ=47]="KeyQ",n[n.KeyR=48]="KeyR",n[n.KeyS=49]="KeyS",n[n.KeyT=50]="KeyT",n[n.KeyU=51]="KeyU",n[n.KeyV=52]="KeyV",n[n.KeyW=53]="KeyW",n[n.KeyX=54]="KeyX",n[n.KeyY=55]="KeyY",n[n.KeyZ=56]="KeyZ",n[n.Meta=57]="Meta",n[n.ContextMenu=58]="ContextMenu",n[n.F1=59]="F1",n[n.F2=60]="F2",n[n.F3=61]="F3",n[n.F4=62]="F4",n[n.F5=63]="F5",n[n.F6=64]="F6",n[n.F7=65]="F7",n[n.F8=66]="F8",n[n.F9=67]="F9",n[n.F10=68]="F10",n[n.F11=69]="F11",n[n.F12=70]="F12",n[n.F13=71]="F13",n[n.F14=72]="F14",n[n.F15=73]="F15",n[n.F16=74]="F16",n[n.F17=75]="F17",n[n.F18=76]="F18",n[n.F19=77]="F19",n[n.F20=78]="F20",n[n.F21=79]="F21",n[n.F22=80]="F22",n[n.F23=81]="F23",n[n.F24=82]="F24",n[n.NumLock=83]="NumLock",n[n.ScrollLock=84]="ScrollLock",n[n.Semicolon=85]="Semicolon",n[n.Equal=86]="Equal",n[n.Comma=87]="Comma",n[n.Minus=88]="Minus",n[n.Period=89]="Period",n[n.Slash=90]="Slash",n[n.Backquote=91]="Backquote",n[n.BracketLeft=92]="BracketLeft",n[n.Backslash=93]="Backslash",n[n.BracketRight=94]="BracketRight",n[n.Quote=95]="Quote",n[n.OEM_8=96]="OEM_8",n[n.IntlBackslash=97]="IntlBackslash",n[n.Numpad0=98]="Numpad0",n[n.Numpad1=99]="Numpad1",n[n.Numpad2=100]="Numpad2",n[n.Numpad3=101]="Numpad3",n[n.Numpad4=102]="Numpad4",n[n.Numpad5=103]="Numpad5",n[n.Numpad6=104]="Numpad6",n[n.Numpad7=105]="Numpad7",n[n.Numpad8=106]="Numpad8",n[n.Numpad9=107]="Numpad9",n[n.NumpadMultiply=108]="NumpadMultiply",n[n.NumpadAdd=109]="NumpadAdd",n[n.NUMPAD_SEPARATOR=110]="NUMPAD_SEPARATOR",n[n.NumpadSubtract=111]="NumpadSubtract",n[n.NumpadDecimal=112]="NumpadDecimal",n[n.NumpadDivide=113]="NumpadDivide",n[n.KEY_IN_COMPOSITION=114]="KEY_IN_COMPOSITION",n[n.ABNT_C1=115]="ABNT_C1",n[n.ABNT_C2=116]="ABNT_C2",n[n.AudioVolumeMute=117]="AudioVolumeMute",n[n.AudioVolumeUp=118]="AudioVolumeUp",n[n.AudioVolumeDown=119]="AudioVolumeDown",n[n.BrowserSearch=120]="BrowserSearch",n[n.BrowserHome=121]="BrowserHome",n[n.BrowserBack=122]="BrowserBack",n[n.BrowserForward=123]="BrowserForward",n[n.MediaTrackNext=124]="MediaTrackNext",n[n.MediaTrackPrevious=125]="MediaTrackPrevious",n[n.MediaStop=126]="MediaStop",n[n.MediaPlayPause=127]="MediaPlayPause",n[n.LaunchMediaPlayer=128]="LaunchMediaPlayer",n[n.LaunchMail=129]="LaunchMail",n[n.LaunchApp2=130]="LaunchApp2",n[n.Clear=131]="Clear",n[n.MAX_VALUE=132]="MAX_VALUE"})(q7||(q7={}));var K7;(function(n){n[n.Hint=1]="Hint",n[n.Info=2]="Info",n[n.Warning=4]="Warning",n[n.Error=8]="Error"})(K7||(K7={}));var G7;(function(n){n[n.Unnecessary=1]="Unnecessary",n[n.Deprecated=2]="Deprecated"})(G7||(G7={}));var Y7;(function(n){n[n.Inline=1]="Inline",n[n.Gutter=2]="Gutter"})(Y7||(Y7={}));var Z7;(function(n){n[n.UNKNOWN=0]="UNKNOWN",n[n.TEXTAREA=1]="TEXTAREA",n[n.GUTTER_GLYPH_MARGIN=2]="GUTTER_GLYPH_MARGIN",n[n.GUTTER_LINE_NUMBERS=3]="GUTTER_LINE_NUMBERS",n[n.GUTTER_LINE_DECORATIONS=4]="GUTTER_LINE_DECORATIONS",n[n.GUTTER_VIEW_ZONE=5]="GUTTER_VIEW_ZONE",n[n.CONTENT_TEXT=6]="CONTENT_TEXT",n[n.CONTENT_EMPTY=7]="CONTENT_EMPTY",n[n.CONTENT_VIEW_ZONE=8]="CONTENT_VIEW_ZONE",n[n.CONTENT_WIDGET=9]="CONTENT_WIDGET",n[n.OVERVIEW_RULER=10]="OVERVIEW_RULER",n[n.SCROLLBAR=11]="SCROLLBAR",n[n.OVERLAY_WIDGET=12]="OVERLAY_WIDGET",n[n.OUTSIDE_EDITOR=13]="OUTSIDE_EDITOR"})(Z7||(Z7={}));var X7;(function(n){n[n.TOP_RIGHT_CORNER=0]="TOP_RIGHT_CORNER",n[n.BOTTOM_RIGHT_CORNER=1]="BOTTOM_RIGHT_CORNER",n[n.TOP_CENTER=2]="TOP_CENTER"})(X7||(X7={}));var Q7;(function(n){n[n.Left=1]="Left",n[n.Center=2]="Center",n[n.Right=4]="Right",n[n.Full=7]="Full"})(Q7||(Q7={}));var J7;(function(n){n[n.Left=0]="Left",n[n.Right=1]="Right",n[n.None=2]="None",n[n.LeftOfInjectedText=3]="LeftOfInjectedText",n[n.RightOfInjectedText=4]="RightOfInjectedText"})(J7||(J7={}));var eW;(function(n){n[n.Off=0]="Off",n[n.On=1]="On",n[n.Relative=2]="Relative",n[n.Interval=3]="Interval",n[n.Custom=4]="Custom"})(eW||(eW={}));var tW;(function(n){n[n.None=0]="None",n[n.Text=1]="Text",n[n.Blocks=2]="Blocks"})(tW||(tW={}));var iW;(function(n){n[n.Smooth=0]="Smooth",n[n.Immediate=1]="Immediate"})(iW||(iW={}));var nW;(function(n){n[n.Auto=1]="Auto",n[n.Hidden=2]="Hidden",n[n.Visible=3]="Visible"})(nW||(nW={}));var sW;(function(n){n[n.LTR=0]="LTR",n[n.RTL=1]="RTL"})(sW||(sW={}));var rW;(function(n){n.Off="off",n.OnCode="onCode",n.On="on"})(rW||(rW={}));var oW;(function(n){n[n.Invoke=1]="Invoke",n[n.TriggerCharacter=2]="TriggerCharacter",n[n.ContentChange=3]="ContentChange"})(oW||(oW={}));var aW;(function(n){n[n.File=0]="File",n[n.Module=1]="Module",n[n.Namespace=2]="Namespace",n[n.Package=3]="Package",n[n.Class=4]="Class",n[n.Method=5]="Method",n[n.Property=6]="Property",n[n.Field=7]="Field",n[n.Constructor=8]="Constructor",n[n.Enum=9]="Enum",n[n.Interface=10]="Interface",n[n.Function=11]="Function",n[n.Variable=12]="Variable",n[n.Constant=13]="Constant",n[n.String=14]="String",n[n.Number=15]="Number",n[n.Boolean=16]="Boolean",n[n.Array=17]="Array",n[n.Object=18]="Object",n[n.Key=19]="Key",n[n.Null=20]="Null",n[n.EnumMember=21]="EnumMember",n[n.Struct=22]="Struct",n[n.Event=23]="Event",n[n.Operator=24]="Operator",n[n.TypeParameter=25]="TypeParameter"})(aW||(aW={}));var lW;(function(n){n[n.Deprecated=1]="Deprecated"})(lW||(lW={}));var cW;(function(n){n[n.Hidden=0]="Hidden",n[n.Blink=1]="Blink",n[n.Smooth=2]="Smooth",n[n.Phase=3]="Phase",n[n.Expand=4]="Expand",n[n.Solid=5]="Solid"})(cW||(cW={}));var uW;(function(n){n[n.Line=1]="Line",n[n.Block=2]="Block",n[n.Underline=3]="Underline",n[n.LineThin=4]="LineThin",n[n.BlockOutline=5]="BlockOutline",n[n.UnderlineThin=6]="UnderlineThin"})(uW||(uW={}));var hW;(function(n){n[n.AlwaysGrowsWhenTypingAtEdges=0]="AlwaysGrowsWhenTypingAtEdges",n[n.NeverGrowsWhenTypingAtEdges=1]="NeverGrowsWhenTypingAtEdges",n[n.GrowsOnlyWhenTypingBefore=2]="GrowsOnlyWhenTypingBefore",n[n.GrowsOnlyWhenTypingAfter=3]="GrowsOnlyWhenTypingAfter"})(hW||(hW={}));var dW;(function(n){n[n.None=0]="None",n[n.Same=1]="Same",n[n.Indent=2]="Indent",n[n.DeepIndent=3]="DeepIndent"})(dW||(dW={}));let HE=class{static chord(e,t){return ws(e,t)}};HE.CtrlCmd=2048;HE.Shift=1024;HE.Alt=512;HE.WinCtrl=256;function V1e(){return{editor:void 0,languages:void 0,CancellationTokenSource:es,Emitter:ue,KeyCode:q7,KeyMod:HE,Position:he,Range:M,Selection:Ze,SelectionDirection:sW,MarkerSeverity:K7,MarkerTag:G7,Uri:it,Token:IL}}class kK{static computeUnicodeHighlights(e,t,i){const s=i?i.startLineNumber:1,r=i?i.endLineNumber:e.getLineCount(),o=new Sie(t),a=o.getCandidateCodePoints();let l;a==="allNonBasicAscii"?l=new RegExp("[^\\t\\n\\r\\x20-\\x7E]","g"):l=new RegExp(`${UQe(Array.from(a))}`,"g");const c=new K0(null,l),u=[];let h=!1,d,f=0,g=0,p=0;e:for(let m=s,_=r;m<=_;m++){const b=e.getLineContent(m),y=b.length;c.reset(0);do if(d=c.next(b),d){let w=d.index,S=d.index+d[0].length;if(w>0){const x=b.charCodeAt(w-1);As(x)&&w--}if(S+1<y){const x=b.charCodeAt(S-1);As(x)&&S++}const E=b.substring(w,S);let L=yL(w+1,eq,b,0);L&&L.endColumn<=w+1&&(L=null);const k=o.shouldHighlightNonBasicASCII(E,L?L.word:null);if(k!==0){k===3?f++:k===2?g++:k===1?p++:SO();const x=1e3;if(u.length>=x){h=!0;break e}u.push(new M(m,w+1,m,S+1))}}while(d)}return{ranges:u,hasMore:h,ambiguousCharacterCount:f,invisibleCharacterCount:g,nonBasicAsciiCharacterCount:p}}static computeUnicodeHighlightReason(e,t){const i=new Sie(t);switch(i.shouldHighlightNonBasicASCII(e,null)){case 0:return null;case 2:return{kind:1};case 3:{const r=e.codePointAt(0),o=i.ambiguousCharacters.getPrimaryConfusable(r),a=A_.getLocales().filter(l=>!A_.getInstance(new Set([...t.allowedLocales,l])).isAmbiguous(r));return{kind:0,confusableWith:String.fromCodePoint(o),notAmbiguousInLocales:a}}case 1:return{kind:2}}}}function UQe(n,e){return`[${Qa(n.map(i=>String.fromCodePoint(i)).join(""))}]`}class Sie{constructor(e){this.options=e,this.allowedCodePoints=new Set(e.allowedCodePoints),this.ambiguousCharacters=A_.getInstance(new Set(e.allowedLocales))}getCandidateCodePoints(){if(this.options.nonBasicASCII)return"allNonBasicAscii";const e=new Set;if(this.options.invisibleCharacters)for(const t of Qh.codePoints)kie(String.fromCodePoint(t))||e.add(t);if(this.options.ambiguousCharacters)for(const t of this.ambiguousCharacters.getConfusableCodePoints())e.add(t);for(const t of this.allowedCodePoints)e.delete(t);return e}shouldHighlightNonBasicASCII(e,t){const i=e.codePointAt(0);if(this.allowedCodePoints.has(i))return 0;if(this.options.nonBasicASCII)return 1;let s=!1,r=!1;if(t)for(const o of t){const a=o.codePointAt(0),l=gE(o);s=s||l,!l&&!this.ambiguousCharacters.isAmbiguous(a)&&!Qh.isInvisibleCharacter(a)&&(r=!0)}return!s&&r?0:this.options.invisibleCharacters&&!kie(e)&&Qh.isInvisibleCharacter(i)?2:this.options.ambiguousCharacters&&this.ambiguousCharacters.isAmbiguous(i)?3:0}}function kie(n){return n===" "||n===` +`||n===" "}const jQe=3;class qQe{computeDiff(e,t,i){var s;const o=new YQe(e,t,{maxComputationTime:i.maxComputationTimeMs,shouldIgnoreTrimWhitespace:i.ignoreTrimWhitespace,shouldComputeCharChanges:!0,shouldMakePrettyDiff:!0,shouldPostProcessCharChanges:!0}).computeDiff(),a=[];let l=null;for(const c of o.changes){let u;c.originalEndLineNumber===0?u=new xt(c.originalStartLineNumber+1,c.originalStartLineNumber+1):u=new xt(c.originalStartLineNumber,c.originalEndLineNumber+1);let h;c.modifiedEndLineNumber===0?h=new xt(c.modifiedStartLineNumber+1,c.modifiedStartLineNumber+1):h=new xt(c.modifiedStartLineNumber,c.modifiedEndLineNumber+1);let d=new Hl(u,h,(s=c.charChanges)===null||s===void 0?void 0:s.map(f=>new om(new M(f.originalStartLineNumber,f.originalStartColumn,f.originalEndLineNumber,f.originalEndColumn),new M(f.modifiedStartLineNumber,f.modifiedStartColumn,f.modifiedEndLineNumber,f.modifiedEndColumn))));l&&(l.modified.endLineNumberExclusive===d.modified.startLineNumber||l.original.endLineNumberExclusive===d.original.startLineNumber)&&(d=new Hl(l.original.join(d.original),l.modified.join(d.modified),l.innerChanges&&d.innerChanges?l.innerChanges.concat(d.innerChanges):void 0),a.pop()),a.push(d),l=d}return _L(()=>Age(a,(c,u)=>u.original.startLineNumber-c.original.endLineNumberExclusive===u.modified.startLineNumber-c.modified.endLineNumberExclusive&&c.original.endLineNumberExclusive<u.original.startLineNumber&&c.modified.endLineNumberExclusive<u.modified.startLineNumber)),new hN(a,[],o.quitEarly)}}function H1e(n,e,t,i){return new kh(n,e,t).ComputeDiff(i)}class Lie{constructor(e){const t=[],i=[];for(let s=0,r=e.length;s<r;s++)t[s]=fW(e[s],1),i[s]=gW(e[s],1);this.lines=e,this._startColumns=t,this._endColumns=i}getElements(){const e=[];for(let t=0,i=this.lines.length;t<i;t++)e[t]=this.lines[t].substring(this._startColumns[t]-1,this._endColumns[t]-1);return e}getStrictElement(e){return this.lines[e]}getStartLineNumber(e){return e+1}getEndLineNumber(e){return e+1}createCharSequence(e,t,i){const s=[],r=[],o=[];let a=0;for(let l=t;l<=i;l++){const c=this.lines[l],u=e?this._startColumns[l]:1,h=e?this._endColumns[l]:c.length+1;for(let d=u;d<h;d++)s[a]=c.charCodeAt(d-1),r[a]=l+1,o[a]=d,a++;!e&&l<i&&(s[a]=10,r[a]=l+1,o[a]=c.length+1,a++)}return new KQe(s,r,o)}}class KQe{constructor(e,t,i){this._charCodes=e,this._lineNumbers=t,this._columns=i}toString(){return"["+this._charCodes.map((e,t)=>(e===10?"\\n":String.fromCharCode(e))+`-(${this._lineNumbers[t]},${this._columns[t]})`).join(", ")+"]"}_assertIndex(e,t){if(e<0||e>=t.length)throw new Error("Illegal index")}getElements(){return this._charCodes}getStartLineNumber(e){return e>0&&e===this._lineNumbers.length?this.getEndLineNumber(e-1):(this._assertIndex(e,this._lineNumbers),this._lineNumbers[e])}getEndLineNumber(e){return e===-1?this.getStartLineNumber(e+1):(this._assertIndex(e,this._lineNumbers),this._charCodes[e]===10?this._lineNumbers[e]+1:this._lineNumbers[e])}getStartColumn(e){return e>0&&e===this._columns.length?this.getEndColumn(e-1):(this._assertIndex(e,this._columns),this._columns[e])}getEndColumn(e){return e===-1?this.getStartColumn(e+1):(this._assertIndex(e,this._columns),this._charCodes[e]===10?1:this._columns[e]+1)}}class Ab{constructor(e,t,i,s,r,o,a,l){this.originalStartLineNumber=e,this.originalStartColumn=t,this.originalEndLineNumber=i,this.originalEndColumn=s,this.modifiedStartLineNumber=r,this.modifiedStartColumn=o,this.modifiedEndLineNumber=a,this.modifiedEndColumn=l}static createFromDiffChange(e,t,i){const s=t.getStartLineNumber(e.originalStart),r=t.getStartColumn(e.originalStart),o=t.getEndLineNumber(e.originalStart+e.originalLength-1),a=t.getEndColumn(e.originalStart+e.originalLength-1),l=i.getStartLineNumber(e.modifiedStart),c=i.getStartColumn(e.modifiedStart),u=i.getEndLineNumber(e.modifiedStart+e.modifiedLength-1),h=i.getEndColumn(e.modifiedStart+e.modifiedLength-1);return new Ab(s,r,o,a,l,c,u,h)}}function GQe(n){if(n.length<=1)return n;const e=[n[0]];let t=e[0];for(let i=1,s=n.length;i<s;i++){const r=n[i],o=r.originalStart-(t.originalStart+t.originalLength),a=r.modifiedStart-(t.modifiedStart+t.modifiedLength);Math.min(o,a)<jQe?(t.originalLength=r.originalStart+r.originalLength-t.originalStart,t.modifiedLength=r.modifiedStart+r.modifiedLength-t.modifiedStart):(e.push(r),t=r)}return e}class pk{constructor(e,t,i,s,r){this.originalStartLineNumber=e,this.originalEndLineNumber=t,this.modifiedStartLineNumber=i,this.modifiedEndLineNumber=s,this.charChanges=r}static createFromDiffResult(e,t,i,s,r,o,a){let l,c,u,h,d;if(t.originalLength===0?(l=i.getStartLineNumber(t.originalStart)-1,c=0):(l=i.getStartLineNumber(t.originalStart),c=i.getEndLineNumber(t.originalStart+t.originalLength-1)),t.modifiedLength===0?(u=s.getStartLineNumber(t.modifiedStart)-1,h=0):(u=s.getStartLineNumber(t.modifiedStart),h=s.getEndLineNumber(t.modifiedStart+t.modifiedLength-1)),o&&t.originalLength>0&&t.originalLength<20&&t.modifiedLength>0&&t.modifiedLength<20&&r()){const f=i.createCharSequence(e,t.originalStart,t.originalStart+t.originalLength-1),g=s.createCharSequence(e,t.modifiedStart,t.modifiedStart+t.modifiedLength-1);if(f.getElements().length>0&&g.getElements().length>0){let p=H1e(f,g,r,!0).changes;a&&(p=GQe(p)),d=[];for(let m=0,_=p.length;m<_;m++)d.push(Ab.createFromDiffChange(p[m],f,g))}}return new pk(l,c,u,h,d)}}class YQe{constructor(e,t,i){this.shouldComputeCharChanges=i.shouldComputeCharChanges,this.shouldPostProcessCharChanges=i.shouldPostProcessCharChanges,this.shouldIgnoreTrimWhitespace=i.shouldIgnoreTrimWhitespace,this.shouldMakePrettyDiff=i.shouldMakePrettyDiff,this.originalLines=e,this.modifiedLines=t,this.original=new Lie(e),this.modified=new Lie(t),this.continueLineDiff=xie(i.maxComputationTime),this.continueCharDiff=xie(i.maxComputationTime===0?0:Math.min(i.maxComputationTime,5e3))}computeDiff(){if(this.original.lines.length===1&&this.original.lines[0].length===0)return this.modified.lines.length===1&&this.modified.lines[0].length===0?{quitEarly:!1,changes:[]}:{quitEarly:!1,changes:[{originalStartLineNumber:1,originalEndLineNumber:1,modifiedStartLineNumber:1,modifiedEndLineNumber:this.modified.lines.length,charChanges:void 0}]};if(this.modified.lines.length===1&&this.modified.lines[0].length===0)return{quitEarly:!1,changes:[{originalStartLineNumber:1,originalEndLineNumber:this.original.lines.length,modifiedStartLineNumber:1,modifiedEndLineNumber:1,charChanges:void 0}]};const e=H1e(this.original,this.modified,this.continueLineDiff,this.shouldMakePrettyDiff),t=e.changes,i=e.quitEarly;if(this.shouldIgnoreTrimWhitespace){const a=[];for(let l=0,c=t.length;l<c;l++)a.push(pk.createFromDiffResult(this.shouldIgnoreTrimWhitespace,t[l],this.original,this.modified,this.continueCharDiff,this.shouldComputeCharChanges,this.shouldPostProcessCharChanges));return{quitEarly:i,changes:a}}const s=[];let r=0,o=0;for(let a=-1,l=t.length;a<l;a++){const c=a+1<l?t[a+1]:null,u=c?c.originalStart:this.originalLines.length,h=c?c.modifiedStart:this.modifiedLines.length;for(;r<u&&o<h;){const d=this.originalLines[r],f=this.modifiedLines[o];if(d!==f){{let g=fW(d,1),p=fW(f,1);for(;g>1&&p>1;){const m=d.charCodeAt(g-2),_=f.charCodeAt(p-2);if(m!==_)break;g--,p--}(g>1||p>1)&&this._pushTrimWhitespaceCharChange(s,r+1,1,g,o+1,1,p)}{let g=gW(d,1),p=gW(f,1);const m=d.length+1,_=f.length+1;for(;g<m&&p<_;){const b=d.charCodeAt(g-1),y=d.charCodeAt(p-1);if(b!==y)break;g++,p++}(g<m||p<_)&&this._pushTrimWhitespaceCharChange(s,r+1,g,m,o+1,p,_)}}r++,o++}c&&(s.push(pk.createFromDiffResult(this.shouldIgnoreTrimWhitespace,c,this.original,this.modified,this.continueCharDiff,this.shouldComputeCharChanges,this.shouldPostProcessCharChanges)),r+=c.originalLength,o+=c.modifiedLength)}return{quitEarly:i,changes:s}}_pushTrimWhitespaceCharChange(e,t,i,s,r,o,a){if(this._mergeTrimWhitespaceCharChange(e,t,i,s,r,o,a))return;let l;this.shouldComputeCharChanges&&(l=[new Ab(t,i,t,s,r,o,r,a)]),e.push(new pk(t,t,r,r,l))}_mergeTrimWhitespaceCharChange(e,t,i,s,r,o,a){const l=e.length;if(l===0)return!1;const c=e[l-1];return c.originalEndLineNumber===0||c.modifiedEndLineNumber===0?!1:c.originalEndLineNumber===t&&c.modifiedEndLineNumber===r?(this.shouldComputeCharChanges&&c.charChanges&&c.charChanges.push(new Ab(t,i,t,s,r,o,r,a)),!0):c.originalEndLineNumber+1===t&&c.modifiedEndLineNumber+1===r?(c.originalEndLineNumber=t,c.modifiedEndLineNumber=r,this.shouldComputeCharChanges&&c.charChanges&&c.charChanges.push(new Ab(t,i,t,s,r,o,r,a)),!0):!1}}function fW(n,e){const t=zr(n);return t===-1?e:t+1}function gW(n,e){const t=wu(n);return t===-1?e:t+2}function xie(n){if(n===0)return()=>!0;const e=Date.now();return()=>Date.now()-e<n}const Eie={getLegacy:()=>new qQe,getDefault:()=>new u1e};function $1e(n){const e=[];for(const t of n){const i=Number(t);(i||i===0&&t.replace(/\s/g,"")!=="")&&e.push(i)}return e}function LK(n,e,t,i){return{red:n/255,blue:t/255,green:e/255,alpha:i}}function Ow(n,e){const t=e.index,i=e[0].length;if(!t)return;const s=n.positionAt(t);return{startLineNumber:s.lineNumber,startColumn:s.column,endLineNumber:s.lineNumber,endColumn:s.column+i}}function ZQe(n,e){if(!n)return;const t=me.Format.CSS.parseHex(e);if(t)return{range:n,color:LK(t.rgba.r,t.rgba.g,t.rgba.b,t.rgba.a)}}function Die(n,e,t){if(!n||e.length!==1)return;const s=e[0].values(),r=$1e(s);return{range:n,color:LK(r[0],r[1],r[2],t?r[3]:1)}}function Iie(n,e,t){if(!n||e.length!==1)return;const s=e[0].values(),r=$1e(s),o=new me(new nc(r[0],r[1]/100,r[2]/100,t?r[3]:1));return{range:n,color:LK(o.rgba.r,o.rgba.g,o.rgba.b,o.rgba.a)}}function Fw(n,e){return typeof n=="string"?[...n.matchAll(e)]:n.findMatches(e)}function XQe(n){const e=[],i=Fw(n,/\b(rgb|rgba|hsl|hsla)(\([0-9\s,.\%]*\))|(#)([A-Fa-f0-9]{3})\b|(#)([A-Fa-f0-9]{4})\b|(#)([A-Fa-f0-9]{6})\b|(#)([A-Fa-f0-9]{8})\b/gm);if(i.length>0)for(const s of i){const r=s.filter(c=>c!==void 0),o=r[1],a=r[2];if(!a)continue;let l;if(o==="rgb"){const c=/^\(\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*,\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*,\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*\)$/gm;l=Die(Ow(n,s),Fw(a,c),!1)}else if(o==="rgba"){const c=/^\(\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*,\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*,\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*,\s*(0[.][0-9]+|[.][0-9]+|[01][.]|[01])\s*\)$/gm;l=Die(Ow(n,s),Fw(a,c),!0)}else if(o==="hsl"){const c=/^\(\s*(36[0]|3[0-5][0-9]|[12][0-9][0-9]|[1-9]?[0-9])\s*,\s*(100|\d{1,2}[.]\d*|\d{1,2})%\s*,\s*(100|\d{1,2}[.]\d*|\d{1,2})%\s*\)$/gm;l=Iie(Ow(n,s),Fw(a,c),!1)}else if(o==="hsla"){const c=/^\(\s*(36[0]|3[0-5][0-9]|[12][0-9][0-9]|[1-9]?[0-9])\s*,\s*(100|\d{1,2}[.]\d*|\d{1,2})%\s*,\s*(100|\d{1,2}[.]\d*|\d{1,2})%\s*,\s*(0[.][0-9]+|[.][0-9]+|[01][.]|[01])\s*\)$/gm;l=Iie(Ow(n,s),Fw(a,c),!0)}else o==="#"&&(l=ZQe(Ow(n,s),o+a));l&&e.push(l)}return e}function QQe(n){return!n||typeof n.getValue!="function"||typeof n.positionAt!="function"?[]:XQe(n)}class JQe extends BQe{get uri(){return this._uri}get eol(){return this._eol}getValue(){return this.getText()}findMatches(e){const t=[];for(let i=0;i<this._lines.length;i++){const s=this._lines[i],r=this.offsetAt(new he(i+1,1)),o=s.matchAll(e);for(const a of o)(a.index||a.index===0)&&(a.index=a.index+r),t.push(a)}return t}getLinesContent(){return this._lines.slice(0)}getLineCount(){return this._lines.length}getLineContent(e){return this._lines[e-1]}getWordAtPosition(e,t){const i=yL(e.column,tq(t),this._lines[e.lineNumber-1],0);return i?new M(e.lineNumber,i.startColumn,e.lineNumber,i.endColumn):null}words(e){const t=this._lines,i=this._wordenize.bind(this);let s=0,r="",o=0,a=[];return{*[Symbol.iterator](){for(;;)if(o<a.length){const l=r.substring(a[o].start,a[o].end);o+=1,yield l}else if(s<t.length)r=t[s],a=i(r,e),o=0,s+=1;else break}}}getLineWords(e,t){const i=this._lines[e-1],s=this._wordenize(i,t),r=[];for(const o of s)r.push({word:i.substring(o.start,o.end),startColumn:o.start+1,endColumn:o.end+1});return r}_wordenize(e,t){const i=[];let s;for(t.lastIndex=0;(s=t.exec(e))&&s[0].length!==0;)i.push({start:s.index,end:s.index+s[0].length});return i}getValueInRange(e){if(e=this._validateRange(e),e.startLineNumber===e.endLineNumber)return this._lines[e.startLineNumber-1].substring(e.startColumn-1,e.endColumn-1);const t=this._eol,i=e.startLineNumber-1,s=e.endLineNumber-1,r=[];r.push(this._lines[i].substring(e.startColumn-1));for(let o=i+1;o<s;o++)r.push(this._lines[o]);return r.push(this._lines[s].substring(0,e.endColumn-1)),r.join(t)}offsetAt(e){return e=this._validatePosition(e),this._ensureLineStarts(),this._lineStarts.getPrefixSum(e.lineNumber-2)+(e.column-1)}positionAt(e){e=Math.floor(e),e=Math.max(0,e),this._ensureLineStarts();const t=this._lineStarts.getIndexOf(e),i=this._lines[t.index].length;return{lineNumber:1+t.index,column:1+Math.min(t.remainder,i)}}_validateRange(e){const t=this._validatePosition({lineNumber:e.startLineNumber,column:e.startColumn}),i=this._validatePosition({lineNumber:e.endLineNumber,column:e.endColumn});return t.lineNumber!==e.startLineNumber||t.column!==e.startColumn||i.lineNumber!==e.endLineNumber||i.column!==e.endColumn?{startLineNumber:t.lineNumber,startColumn:t.column,endLineNumber:i.lineNumber,endColumn:i.column}:e}_validatePosition(e){if(!he.isIPosition(e))throw new Error("bad position");let{lineNumber:t,column:i}=e,s=!1;if(t<1)t=1,i=1,s=!0;else if(t>this._lines.length)t=this._lines.length,i=this._lines[t-1].length+1,s=!0;else{const r=this._lines[t-1].length+1;i<1?(i=1,s=!0):i>r&&(i=r,s=!0)}return s?{lineNumber:t,column:i}:e}}class Ip{constructor(e,t){this._host=e,this._models=Object.create(null),this._foreignModuleFactory=t,this._foreignModule=null}dispose(){this._models=Object.create(null)}_getModel(e){return this._models[e]}_getModels(){const e=[];return Object.keys(this._models).forEach(t=>e.push(this._models[t])),e}acceptNewModel(e){this._models[e.url]=new JQe(it.parse(e.url),e.lines,e.EOL,e.versionId)}acceptModelChanged(e,t){if(!this._models[e])return;this._models[e].onEvents(t)}acceptRemovedModel(e){this._models[e]&&delete this._models[e]}async computeUnicodeHighlights(e,t,i){const s=this._getModel(e);return s?kK.computeUnicodeHighlights(s,t,i):{ranges:[],hasMore:!1,ambiguousCharacterCount:0,invisibleCharacterCount:0,nonBasicAsciiCharacterCount:0}}async computeDiff(e,t,i,s){const r=this._getModel(e),o=this._getModel(t);return!r||!o?null:Ip.computeDiff(r,o,i,s)}static computeDiff(e,t,i,s){const r=s==="advanced"?Eie.getDefault():Eie.getLegacy(),o=e.getLinesContent(),a=t.getLinesContent(),l=r.computeDiff(o,a,i),c=l.changes.length>0?!1:this._modelsAreIdentical(e,t);function u(h){return h.map(d=>{var f;return[d.original.startLineNumber,d.original.endLineNumberExclusive,d.modified.startLineNumber,d.modified.endLineNumberExclusive,(f=d.innerChanges)===null||f===void 0?void 0:f.map(g=>[g.originalRange.startLineNumber,g.originalRange.startColumn,g.originalRange.endLineNumber,g.originalRange.endColumn,g.modifiedRange.startLineNumber,g.modifiedRange.startColumn,g.modifiedRange.endLineNumber,g.modifiedRange.endColumn])]})}return{identical:c,quitEarly:l.hitTimeout,changes:u(l.changes),moves:l.moves.map(h=>[h.lineRangeMapping.original.startLineNumber,h.lineRangeMapping.original.endLineNumberExclusive,h.lineRangeMapping.modified.startLineNumber,h.lineRangeMapping.modified.endLineNumberExclusive,u(h.changes)])}}static _modelsAreIdentical(e,t){const i=e.getLineCount(),s=t.getLineCount();if(i!==s)return!1;for(let r=1;r<=i;r++){const o=e.getLineContent(r),a=t.getLineContent(r);if(o!==a)return!1}return!0}async computeMoreMinimalEdits(e,t,i){const s=this._getModel(e);if(!s)return t;const r=[];let o;t=t.slice(0).sort((l,c)=>{if(l.range&&c.range)return M.compareRangesUsingStarts(l.range,c.range);const u=l.range?0:1,h=c.range?0:1;return u-h});let a=0;for(let l=1;l<t.length;l++)M.getEndPosition(t[a].range).equals(M.getStartPosition(t[l].range))?(t[a].range=M.fromPositions(M.getStartPosition(t[a].range),M.getEndPosition(t[l].range)),t[a].text+=t[l].text):(a++,t[a]=t[l]);t.length=a+1;for(let{range:l,text:c,eol:u}of t){if(typeof u=="number"&&(o=u),M.isEmpty(l)&&!c)continue;const h=s.getValueInRange(l);if(c=c.replace(/\r\n|\n|\r/g,s.eol),h===c)continue;if(Math.max(c.length,h.length)>Ip._diffLimit){r.push({range:l,text:c});continue}const d=FQe(h,c,i),f=s.offsetAt(M.lift(l).getStartPosition());for(const g of d){const p=s.positionAt(f+g.originalStart),m=s.positionAt(f+g.originalStart+g.originalLength),_={text:c.substr(g.modifiedStart,g.modifiedLength),range:{startLineNumber:p.lineNumber,startColumn:p.column,endLineNumber:m.lineNumber,endColumn:m.column}};s.getValueInRange(_.range)!==_.text&&r.push(_)}}return typeof o=="number"&&r.push({eol:o,text:"",range:{startLineNumber:0,startColumn:0,endLineNumber:0,endColumn:0}}),r}async computeLinks(e){const t=this._getModel(e);return t?zQe(t):null}async computeDefaultDocumentColors(e){const t=this._getModel(e);return t?QQe(t):null}async textualSuggest(e,t,i,s){const r=new Nr,o=new RegExp(i,s),a=new Set;e:for(const l of e){const c=this._getModel(l);if(c){for(const u of c.words(o))if(!(u===t||!isNaN(Number(u)))&&(a.add(u),a.size>Ip._suggestionsLimit))break e}}return{words:Array.from(a),duration:r.elapsed()}}async computeWordRanges(e,t,i,s){const r=this._getModel(e);if(!r)return Object.create(null);const o=new RegExp(i,s),a=Object.create(null);for(let l=t.startLineNumber;l<t.endLineNumber;l++){const c=r.getLineWords(l,o);for(const u of c){if(!isNaN(Number(u.word)))continue;let h=a[u.word];h||(h=[],a[u.word]=h),h.push({startLineNumber:l,startColumn:u.startColumn,endLineNumber:l,endColumn:u.endColumn})}}return a}async navigateValueSet(e,t,i,s,r){const o=this._getModel(e);if(!o)return null;const a=new RegExp(s,r);t.startColumn===t.endColumn&&(t={startLineNumber:t.startLineNumber,startColumn:t.startColumn,endLineNumber:t.endLineNumber,endColumn:t.endColumn+1});const l=o.getValueInRange(t),c=o.getWordAtPosition({lineNumber:t.startLineNumber,column:t.startColumn},a);if(!c)return null;const u=o.getValueInRange(c);return x7.INSTANCE.navigateValueSet(t,l,c,u,i)}loadForeignModule(e,t,i){const o={host:_We(i,(a,l)=>this._host.fhr(a,l)),getMirrorModels:()=>this._getModels()};return this._foreignModuleFactory?(this._foreignModule=this._foreignModuleFactory(o,t),Promise.resolve(oq(this._foreignModule))):Promise.reject(new Error("Unexpected usage"))}fmr(e,t){if(!this._foreignModule||typeof this._foreignModule[e]!="function")return Promise.reject(new Error("Missing requestHandler or method: "+e));try{return Promise.resolve(this._foreignModule[e].apply(this._foreignModule,t))}catch(i){return Promise.reject(i)}}}Ip._diffLimit=1e5;Ip._suggestionsLimit=1e4;typeof importScripts=="function"&&(globalThis.monaco=V1e());const xK=Bt("textResourceConfigurationService"),z1e=Bt("textResourcePropertiesService");var eJe=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},Bw=function(n,e){return function(t,i){e(t,i,n)}};const Tie=60*1e3,Nie=5*60*1e3;function E1(n,e){const t=n.getModel(e);return!(!t||t.isTooLargeForSyncing())}let pW=class extends pe{constructor(e,t,i,s,r){super(),this._modelService=e,this._workerManager=this._register(new iJe(this._modelService,s)),this._logService=i,this._register(r.linkProvider.register({language:"*",hasAccessToAllModels:!0},{provideLinks:(o,a)=>E1(this._modelService,o.uri)?this._workerManager.withWorker().then(l=>l.computeLinks(o.uri)).then(l=>l&&{links:l}):Promise.resolve({links:[]})})),this._register(r.completionProvider.register("*",new tJe(this._workerManager,t,this._modelService,s)))}dispose(){super.dispose()}canComputeUnicodeHighlights(e){return E1(this._modelService,e)}computedUnicodeHighlights(e,t,i){return this._workerManager.withWorker().then(s=>s.computedUnicodeHighlights(e,t,i))}async computeDiff(e,t,i,s){const r=await this._workerManager.withWorker().then(l=>l.computeDiff(e,t,i,s));if(!r)return null;return{identical:r.identical,quitEarly:r.quitEarly,changes:a(r.changes),moves:r.moves.map(l=>new c1e(new vd(new xt(l[0],l[1]),new xt(l[2],l[3])),a(l[4])))};function a(l){return l.map(c=>{var u;return new Hl(new xt(c[0],c[1]),new xt(c[2],c[3]),(u=c[4])===null||u===void 0?void 0:u.map(h=>new om(new M(h[0],h[1],h[2],h[3]),new M(h[4],h[5],h[6],h[7]))))})}}computeMoreMinimalEdits(e,t,i=!1){if(Ir(t)){if(!E1(this._modelService,e))return Promise.resolve(t);const s=Nr.create(),r=this._workerManager.withWorker().then(o=>o.computeMoreMinimalEdits(e,t,i));return r.finally(()=>this._logService.trace("FORMAT#computeMoreMinimalEdits",e.toString(!0),s.elapsed())),Promise.race([r,Kp(1e3).then(()=>t)])}else return Promise.resolve(void 0)}canNavigateValueSet(e){return E1(this._modelService,e)}navigateValueSet(e,t,i){return this._workerManager.withWorker().then(s=>s.navigateValueSet(e,t,i))}canComputeWordRanges(e){return E1(this._modelService,e)}computeWordRanges(e,t){return this._workerManager.withWorker().then(i=>i.computeWordRanges(e,t))}};pW=eJe([Bw(0,fn),Bw(1,xK),Bw(2,ga),Bw(3,Bi),Bw(4,Ge)],pW);class tJe{constructor(e,t,i,s){this.languageConfigurationService=s,this._debugDisplayName="wordbasedCompletions",this._workerManager=e,this._configurationService=t,this._modelService=i}async provideCompletionItems(e,t){const i=this._configurationService.getValue(e.uri,t,"editor");if(i.wordBasedSuggestions==="off")return;const s=[];if(i.wordBasedSuggestions==="currentDocument")E1(this._modelService,e.uri)&&s.push(e.uri);else for(const h of this._modelService.getModels())E1(this._modelService,h.uri)&&(h===e?s.unshift(h.uri):(i.wordBasedSuggestions==="allDocuments"||h.getLanguageId()===e.getLanguageId())&&s.push(h.uri));if(s.length===0)return;const r=this.languageConfigurationService.getLanguageConfiguration(e.getLanguageId()).getWordDefinition(),o=e.getWordAtPosition(t),a=o?new M(t.lineNumber,o.startColumn,t.lineNumber,o.endColumn):M.fromPositions(t),l=a.setEndPosition(t.lineNumber,t.column),u=await(await this._workerManager.withWorker()).textualSuggest(s,o==null?void 0:o.word,r);if(u)return{duration:u.duration,suggestions:u.words.map(h=>({kind:18,label:h,insertText:h,range:{insert:l,replace:a}}))}}}class iJe extends pe{constructor(e,t){super(),this.languageConfigurationService=t,this._modelService=e,this._editorWorkerClient=null,this._lastWorkerUsedTime=new Date().getTime(),this._register(new Gj).cancelAndSet(()=>this._checkStopIdleWorker(),Math.round(Nie/2),Xh),this._register(this._modelService.onModelRemoved(s=>this._checkStopEmptyWorker()))}dispose(){this._editorWorkerClient&&(this._editorWorkerClient.dispose(),this._editorWorkerClient=null),super.dispose()}_checkStopEmptyWorker(){if(!this._editorWorkerClient)return;this._modelService.getModels().length===0&&(this._editorWorkerClient.dispose(),this._editorWorkerClient=null)}_checkStopIdleWorker(){if(!this._editorWorkerClient)return;new Date().getTime()-this._lastWorkerUsedTime>Nie&&(this._editorWorkerClient.dispose(),this._editorWorkerClient=null)}withWorker(){return this._lastWorkerUsedTime=new Date().getTime(),this._editorWorkerClient||(this._editorWorkerClient=new EK(this._modelService,!1,"editorWorkerService",this.languageConfigurationService)),Promise.resolve(this._editorWorkerClient)}}class nJe extends pe{constructor(e,t,i){if(super(),this._syncedModels=Object.create(null),this._syncedModelsLastUsedTime=Object.create(null),this._proxy=e,this._modelService=t,!i){const s=new Oj;s.cancelAndSet(()=>this._checkStopModelSync(),Math.round(Tie/2)),this._register(s)}}dispose(){for(const e in this._syncedModels)yi(this._syncedModels[e]);this._syncedModels=Object.create(null),this._syncedModelsLastUsedTime=Object.create(null),super.dispose()}ensureSyncedResources(e,t){for(const i of e){const s=i.toString();this._syncedModels[s]||this._beginModelSync(i,t),this._syncedModels[s]&&(this._syncedModelsLastUsedTime[s]=new Date().getTime())}}_checkStopModelSync(){const e=new Date().getTime(),t=[];for(const i in this._syncedModelsLastUsedTime)e-this._syncedModelsLastUsedTime[i]>Tie&&t.push(i);for(const i of t)this._stopModelSync(i)}_beginModelSync(e,t){const i=this._modelService.getModel(e);if(!i||!t&&i.isTooLargeForSyncing())return;const s=e.toString();this._proxy.acceptNewModel({url:i.uri.toString(),lines:i.getLinesContent(),EOL:i.getEOL(),versionId:i.getVersionId()});const r=new xe;r.add(i.onDidChangeContent(o=>{this._proxy.acceptModelChanged(s.toString(),o)})),r.add(i.onWillDispose(()=>{this._stopModelSync(s)})),r.add(st(()=>{this._proxy.acceptRemovedModel(s)})),this._syncedModels[s]=r}_stopModelSync(e){const t=this._syncedModels[e];delete this._syncedModels[e],delete this._syncedModelsLastUsedTime[e],yi(t)}}class Aie{constructor(e){this._instance=e,this._proxyObj=Promise.resolve(this._instance)}dispose(){this._instance.dispose()}getProxyObject(){return this._proxyObj}}class w3{constructor(e){this._workerClient=e}fhr(e,t){return this._workerClient.fhr(e,t)}}class EK extends pe{constructor(e,t,i,s){super(),this.languageConfigurationService=s,this._disposed=!1,this._modelService=e,this._keepIdleModels=t,this._workerFactory=new h2(i),this._worker=null,this._modelManager=null}fhr(e,t){throw new Error("Not implemented!")}_getOrCreateWorker(){if(!this._worker)try{this._worker=this._register(new AQe(this._workerFactory,"vs/editor/common/services/editorSimpleWorker",new w3(this)))}catch(e){L7(e),this._worker=new Aie(new Ip(new w3(this),null))}return this._worker}_getProxy(){return this._getOrCreateWorker().getProxyObject().then(void 0,e=>(L7(e),this._worker=new Aie(new Ip(new w3(this),null)),this._getOrCreateWorker().getProxyObject()))}_getOrCreateModelManager(e){return this._modelManager||(this._modelManager=this._register(new nJe(e,this._modelService,this._keepIdleModels))),this._modelManager}async _withSyncedResources(e,t=!1){return this._disposed?Promise.reject(oBe()):this._getProxy().then(i=>(this._getOrCreateModelManager(i).ensureSyncedResources(e,t),i))}computedUnicodeHighlights(e,t,i){return this._withSyncedResources([e]).then(s=>s.computeUnicodeHighlights(e.toString(),t,i))}computeDiff(e,t,i,s){return this._withSyncedResources([e,t],!0).then(r=>r.computeDiff(e.toString(),t.toString(),i,s))}computeMoreMinimalEdits(e,t,i){return this._withSyncedResources([e]).then(s=>s.computeMoreMinimalEdits(e.toString(),t,i))}computeLinks(e){return this._withSyncedResources([e]).then(t=>t.computeLinks(e.toString()))}computeDefaultDocumentColors(e){return this._withSyncedResources([e]).then(t=>t.computeDefaultDocumentColors(e.toString()))}async textualSuggest(e,t,i){const s=await this._withSyncedResources(e),r=i.source,o=i.flags;return s.textualSuggest(e.map(a=>a.toString()),t,r,o)}computeWordRanges(e,t){return this._withSyncedResources([e]).then(i=>{const s=this._modelService.getModel(e);if(!s)return Promise.resolve(null);const r=this.languageConfigurationService.getLanguageConfiguration(s.getLanguageId()).getWordDefinition(),o=r.source,a=r.flags;return i.computeWordRanges(e.toString(),t,o,a)})}navigateValueSet(e,t,i){return this._withSyncedResources([e]).then(s=>{const r=this._modelService.getModel(e);if(!r)return null;const o=this.languageConfigurationService.getLanguageConfiguration(r.getLanguageId()).getWordDefinition(),a=o.source,l=o.flags;return s.navigateValueSet(e.toString(),t,i,a,l)})}dispose(){super.dispose(),this._disposed=!0}}const U1e=[];function d2(n){U1e.push(n)}function sJe(){return U1e.slice(0)}var rJe=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},S3=function(n,e){return function(t,i){e(t,i,n)}};class DK{constructor(e,t){this._editorWorkerClient=new EK(e,!1,"editorWorkerService",t)}async provideDocumentColors(e,t){return this._editorWorkerClient.computeDefaultDocumentColors(e.uri)}provideColorPresentations(e,t,i){const s=t.range,r=t.color,o=r.alpha,a=new me(new Kt(Math.round(255*r.red),Math.round(255*r.green),Math.round(255*r.blue),o)),l=o?me.Format.CSS.formatRGB(a):me.Format.CSS.formatRGBA(a),c=o?me.Format.CSS.formatHSL(a):me.Format.CSS.formatHSLA(a),u=o?me.Format.CSS.formatHex(a):me.Format.CSS.formatHexA(a),h=[];return h.push({label:l,textEdit:{range:s,text:l}}),h.push({label:c,textEdit:{range:s,text:c}}),h.push({label:u,textEdit:{range:s,text:u}}),h}}let mW=class extends pe{constructor(e,t,i){super(),this._register(i.colorProvider.register("*",new DK(e,t)))}};mW=rJe([S3(0,fn),S3(1,Bi),S3(2,Ge)],mW);d2(mW);async function j1e(n,e,t,i=!0){return IK(new oJe,n,e,t,i)}function q1e(n,e,t,i){return Promise.resolve(t.provideColorPresentations(n,e,i))}class oJe{constructor(){}async compute(e,t,i,s){const r=await e.provideDocumentColors(t,i);if(Array.isArray(r))for(const o of r)s.push({colorInfo:o,provider:e});return Array.isArray(r)}}class aJe{constructor(){}async compute(e,t,i,s){const r=await e.provideDocumentColors(t,i);if(Array.isArray(r))for(const o of r)s.push({range:o.range,color:[o.color.red,o.color.green,o.color.blue,o.color.alpha]});return Array.isArray(r)}}class lJe{constructor(e){this.colorInfo=e}async compute(e,t,i,s){const r=await e.provideColorPresentations(t,this.colorInfo,Ft.None);return Array.isArray(r)&&s.push(...r),Array.isArray(r)}}async function IK(n,e,t,i,s){let r=!1,o;const a=[],l=e.ordered(t);for(let c=l.length-1;c>=0;c--){const u=l[c];if(u instanceof DK)o=u;else try{await n.compute(u,t,i,a)&&(r=!0)}catch(h){Jn(h)}}return r?a:o&&s?(await n.compute(o,t,i,a),a):[]}function K1e(n,e){const{colorProvider:t}=n.get(Ge),i=n.get(fn).getModel(e);if(!i)throw Tl();const s=n.get(Ut).getValue("editor.defaultColorDecorators",{resource:e});return{model:i,colorProviderRegistry:t,isDefaultColorDecoratorsEnabled:s}}Yt.registerCommand("_executeDocumentColorProvider",function(n,...e){const[t]=e;if(!(t instanceof it))throw Tl();const{model:i,colorProviderRegistry:s,isDefaultColorDecoratorsEnabled:r}=K1e(n,t);return IK(new aJe,s,i,Ft.None,r)});Yt.registerCommand("_executeColorPresentationProvider",function(n,...e){const[t,i]=e,{uri:s,range:r}=i;if(!(s instanceof it)||!Array.isArray(t)||t.length!==4||!M.isIRange(r))throw Tl();const{model:o,colorProviderRegistry:a,isDefaultColorDecoratorsEnabled:l}=K1e(n,s),[c,u,h,d]=t;return IK(new lJe({range:r,color:{red:c,green:u,blue:h,alpha:d}}),a,o,Ft.None,l)});var cJe=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},k3=function(n,e){return function(t,i){e(t,i,n)}},_W;const G1e=Object.create({});let um=_W=class extends pe{constructor(e,t,i,s){super(),this._editor=e,this._configurationService=t,this._languageFeaturesService=i,this._localToDispose=this._register(new xe),this._decorationsIds=[],this._colorDatas=new Map,this._colorDecoratorIds=this._editor.createDecorationsCollection(),this._ruleFactory=new vE(this._editor),this._decoratorLimitReporter=new uJe,this._colorDecorationClassRefs=this._register(new xe),this._debounceInformation=s.for(i.colorProvider,"Document Colors",{min:_W.RECOMPUTE_TIME}),this._register(e.onDidChangeModel(()=>{this._isColorDecoratorsEnabled=this.isEnabled(),this.updateColors()})),this._register(e.onDidChangeModelLanguage(()=>this.updateColors())),this._register(i.colorProvider.onDidChange(()=>this.updateColors())),this._register(e.onDidChangeConfiguration(r=>{const o=this._isColorDecoratorsEnabled;this._isColorDecoratorsEnabled=this.isEnabled(),this._isDefaultColorDecoratorsEnabled=this._editor.getOption(145);const a=o!==this._isColorDecoratorsEnabled||r.hasChanged(21),l=r.hasChanged(145);(a||l)&&(this._isColorDecoratorsEnabled?this.updateColors():this.removeAllDecorations())})),this._timeoutTimer=null,this._computePromise=null,this._isColorDecoratorsEnabled=this.isEnabled(),this._isDefaultColorDecoratorsEnabled=this._editor.getOption(145),this.updateColors()}isEnabled(){const e=this._editor.getModel();if(!e)return!1;const t=e.getLanguageId(),i=this._configurationService.getValue(t);if(i&&typeof i=="object"){const s=i.colorDecorators;if(s&&s.enable!==void 0&&!s.enable)return s.enable}return this._editor.getOption(20)}static get(e){return e.getContribution(this.ID)}dispose(){this.stop(),this.removeAllDecorations(),super.dispose()}updateColors(){if(this.stop(),!this._isColorDecoratorsEnabled)return;const e=this._editor.getModel();!e||!this._languageFeaturesService.colorProvider.has(e)||(this._localToDispose.add(this._editor.onDidChangeModelContent(()=>{this._timeoutTimer||(this._timeoutTimer=new Ic,this._timeoutTimer.cancelAndSet(()=>{this._timeoutTimer=null,this.beginCompute()},this._debounceInformation.get(e)))})),this.beginCompute())}async beginCompute(){this._computePromise=Ns(async e=>{const t=this._editor.getModel();if(!t)return[];const i=new Nr(!1),s=await j1e(this._languageFeaturesService.colorProvider,t,e,this._isDefaultColorDecoratorsEnabled);return this._debounceInformation.update(t,i.elapsed()),s});try{const e=await this._computePromise;this.updateDecorations(e),this.updateColorDecorators(e),this._computePromise=null}catch(e){vt(e)}}stop(){this._timeoutTimer&&(this._timeoutTimer.cancel(),this._timeoutTimer=null),this._computePromise&&(this._computePromise.cancel(),this._computePromise=null),this._localToDispose.clear()}updateDecorations(e){const t=e.map(i=>({range:{startLineNumber:i.colorInfo.range.startLineNumber,startColumn:i.colorInfo.range.startColumn,endLineNumber:i.colorInfo.range.endLineNumber,endColumn:i.colorInfo.range.endColumn},options:yt.EMPTY}));this._editor.changeDecorations(i=>{this._decorationsIds=i.deltaDecorations(this._decorationsIds,t),this._colorDatas=new Map,this._decorationsIds.forEach((s,r)=>this._colorDatas.set(s,e[r]))})}updateColorDecorators(e){this._colorDecorationClassRefs.clear();const t=[],i=this._editor.getOption(21);for(let r=0;r<e.length&&t.length<i;r++){const{red:o,green:a,blue:l,alpha:c}=e[r].colorInfo.color,u=new Kt(Math.round(o*255),Math.round(a*255),Math.round(l*255),c),h=`rgba(${u.r}, ${u.g}, ${u.b}, ${u.a})`,d=this._colorDecorationClassRefs.add(this._ruleFactory.createClassNameRef({backgroundColor:h}));t.push({range:{startLineNumber:e[r].colorInfo.range.startLineNumber,startColumn:e[r].colorInfo.range.startColumn,endLineNumber:e[r].colorInfo.range.endLineNumber,endColumn:e[r].colorInfo.range.endColumn},options:{description:"colorDetector",before:{content:lge,inlineClassName:`${d.className} colorpicker-color-decoration`,inlineClassNameAffectsLetterSpacing:!0,attachedData:G1e}}})}const s=i<e.length?i:!1;this._decoratorLimitReporter.update(e.length,s),this._colorDecoratorIds.set(t)}removeAllDecorations(){this._editor.removeDecorations(this._decorationsIds),this._decorationsIds=[],this._colorDecoratorIds.clear(),this._colorDecorationClassRefs.clear()}getColorData(e){const t=this._editor.getModel();if(!t)return null;const i=t.getDecorationsInRange(M.fromPositions(e,e)).filter(s=>this._colorDatas.has(s.id));return i.length===0?null:this._colorDatas.get(i[0].id)}isColorDecoration(e){return this._colorDecoratorIds.has(e)}};um.ID="editor.contrib.colorDetector";um.RECOMPUTE_TIME=1e3;um=_W=cJe([k3(1,Ut),k3(2,Ge),k3(3,Ul)],um);class uJe{constructor(){this._onDidChange=new ue,this._computed=0,this._limited=!1}update(e,t){(e!==this._computed||t!==this._limited)&&(this._computed=e,this._limited=t,this._onDidChange.fire())}}ti(um.ID,um,1);class hJe{get color(){return this._color}set color(e){this._color.equals(e)||(this._color=e,this._onDidChangeColor.fire(e))}get presentation(){return this.colorPresentations[this.presentationIndex]}get colorPresentations(){return this._colorPresentations}set colorPresentations(e){this._colorPresentations=e,this.presentationIndex>e.length-1&&(this.presentationIndex=0),this._onDidChangePresentation.fire(this.presentation)}constructor(e,t,i){this.presentationIndex=i,this._onColorFlushed=new ue,this.onColorFlushed=this._onColorFlushed.event,this._onDidChangeColor=new ue,this.onDidChangeColor=this._onDidChangeColor.event,this._onDidChangePresentation=new ue,this.onDidChangePresentation=this._onDidChangePresentation.event,this.originalColor=e,this._color=e,this._colorPresentations=t}selectNextColorPresentation(){this.presentationIndex=(this.presentationIndex+1)%this.colorPresentations.length,this.flushColor(),this._onDidChangePresentation.fire(this.presentation)}guessColorPresentation(e,t){let i=-1;for(let s=0;s<this.colorPresentations.length;s++)if(t.toLowerCase()===this.colorPresentations[s].label){i=s;break}if(i===-1){const s=t.split("(")[0].toLowerCase();for(let r=0;r<this.colorPresentations.length;r++)if(this.colorPresentations[r].label.toLowerCase().startsWith(s)){i=r;break}}i!==-1&&i!==this.presentationIndex&&(this.presentationIndex=i,this._onDidChangePresentation.fire(this.presentation))}flushColor(){this._onColorFlushed.fire(this._color)}}const Ba=Te;class dJe extends pe{constructor(e,t,i,s=!1){super(),this.model=t,this.showingStandaloneColorPicker=s,this._closeButton=null,this._domNode=Ba(".colorpicker-header"),Le(e,this._domNode),this._pickedColorNode=Le(this._domNode,Ba(".picked-color")),Le(this._pickedColorNode,Ba("span.codicon.codicon-color-mode")),this._pickedColorPresentation=Le(this._pickedColorNode,document.createElement("span")),this._pickedColorPresentation.classList.add("picked-color-presentation");const r=v("clickToToggleColorOptions","Click to toggle color options (rgb/hsl/hex)");this._pickedColorNode.setAttribute("title",r),this._originalColorNode=Le(this._domNode,Ba(".original-color")),this._originalColorNode.style.backgroundColor=me.Format.CSS.format(this.model.originalColor)||"",this.backgroundColor=i.getColorTheme().getColor(YA)||me.white,this._register(i.onDidColorThemeChange(o=>{this.backgroundColor=o.getColor(YA)||me.white})),this._register(Ce(this._pickedColorNode,We.CLICK,()=>this.model.selectNextColorPresentation())),this._register(Ce(this._originalColorNode,We.CLICK,()=>{this.model.color=this.model.originalColor,this.model.flushColor()})),this._register(t.onDidChangeColor(this.onDidChangeColor,this)),this._register(t.onDidChangePresentation(this.onDidChangePresentation,this)),this._pickedColorNode.style.backgroundColor=me.Format.CSS.format(t.color)||"",this._pickedColorNode.classList.toggle("light",t.color.rgba.a<.5?this.backgroundColor.isLighter():t.color.isLighter()),this.onDidChangeColor(this.model.color),this.showingStandaloneColorPicker&&(this._domNode.classList.add("standalone-colorpicker"),this._closeButton=this._register(new fJe(this._domNode)))}get closeButton(){return this._closeButton}get pickedColorNode(){return this._pickedColorNode}get originalColorNode(){return this._originalColorNode}onDidChangeColor(e){this._pickedColorNode.style.backgroundColor=me.Format.CSS.format(e)||"",this._pickedColorNode.classList.toggle("light",e.rgba.a<.5?this.backgroundColor.isLighter():e.isLighter()),this.onDidChangePresentation()}onDidChangePresentation(){this._pickedColorPresentation.textContent=this.model.presentation?this.model.presentation.label:""}}class fJe extends pe{constructor(e){super(),this._onClicked=this._register(new ue),this.onClicked=this._onClicked.event,this._button=document.createElement("div"),this._button.classList.add("close-button"),Le(e,this._button);const t=document.createElement("div");t.classList.add("close-button-inner-div"),Le(this._button,t),Le(t,Ba(".button"+nt.asCSSSelector(Gn("color-picker-close",Pe.close,v("closeIcon","Icon to close the color picker"))))).classList.add("close-icon"),this._button.onclick=()=>{this._onClicked.fire()}}}class gJe extends pe{constructor(e,t,i,s=!1){super(),this.model=t,this.pixelRatio=i,this._insertButton=null,this._domNode=Ba(".colorpicker-body"),Le(e,this._domNode),this._saturationBox=new pJe(this._domNode,this.model,this.pixelRatio),this._register(this._saturationBox),this._register(this._saturationBox.onDidChange(this.onDidSaturationValueChange,this)),this._register(this._saturationBox.onColorFlushed(this.flushColor,this)),this._opacityStrip=new mJe(this._domNode,this.model,s),this._register(this._opacityStrip),this._register(this._opacityStrip.onDidChange(this.onDidOpacityChange,this)),this._register(this._opacityStrip.onColorFlushed(this.flushColor,this)),this._hueStrip=new _Je(this._domNode,this.model,s),this._register(this._hueStrip),this._register(this._hueStrip.onDidChange(this.onDidHueChange,this)),this._register(this._hueStrip.onColorFlushed(this.flushColor,this)),s&&(this._insertButton=this._register(new vJe(this._domNode)),this._domNode.classList.add("standalone-colorpicker"))}flushColor(){this.model.flushColor()}onDidSaturationValueChange({s:e,v:t}){const i=this.model.color.hsva;this.model.color=new me(new Nh(i.h,e,t,i.a))}onDidOpacityChange(e){const t=this.model.color.hsva;this.model.color=new me(new Nh(t.h,t.s,t.v,e))}onDidHueChange(e){const t=this.model.color.hsva,i=(1-e)*360;this.model.color=new me(new Nh(i===360?0:i,t.s,t.v,t.a))}get domNode(){return this._domNode}get saturationBox(){return this._saturationBox}get enterButton(){return this._insertButton}layout(){this._saturationBox.layout(),this._opacityStrip.layout(),this._hueStrip.layout()}}class pJe extends pe{constructor(e,t,i){super(),this.model=t,this.pixelRatio=i,this._onDidChange=new ue,this.onDidChange=this._onDidChange.event,this._onColorFlushed=new ue,this.onColorFlushed=this._onColorFlushed.event,this._domNode=Ba(".saturation-wrap"),Le(e,this._domNode),this._canvas=document.createElement("canvas"),this._canvas.className="saturation-box",Le(this._domNode,this._canvas),this.selection=Ba(".saturation-selection"),Le(this._domNode,this.selection),this.layout(),this._register(Ce(this._domNode,We.POINTER_DOWN,s=>this.onPointerDown(s))),this._register(this.model.onDidChangeColor(this.onDidChangeColor,this)),this.monitor=null}get domNode(){return this._domNode}onPointerDown(e){if(!e.target||!(e.target instanceof Element))return;this.monitor=this._register(new AC);const t=ys(this._domNode);e.target!==this.selection&&this.onDidChangePosition(e.offsetX,e.offsetY),this.monitor.startMonitoring(e.target,e.pointerId,e.buttons,s=>this.onDidChangePosition(s.pageX-t.left,s.pageY-t.top),()=>null);const i=Ce(e.target.ownerDocument,We.POINTER_UP,()=>{this._onColorFlushed.fire(),i.dispose(),this.monitor&&(this.monitor.stopMonitoring(!0),this.monitor=null)},!0)}onDidChangePosition(e,t){const i=Math.max(0,Math.min(1,e/this.width)),s=Math.max(0,Math.min(1,1-t/this.height));this.paintSelection(i,s),this._onDidChange.fire({s:i,v:s})}layout(){this.width=this._domNode.offsetWidth,this.height=this._domNode.offsetHeight,this._canvas.width=this.width*this.pixelRatio,this._canvas.height=this.height*this.pixelRatio,this.paint();const e=this.model.color.hsva;this.paintSelection(e.s,e.v)}paint(){const e=this.model.color.hsva,t=new me(new Nh(e.h,1,1,1)),i=this._canvas.getContext("2d"),s=i.createLinearGradient(0,0,this._canvas.width,0);s.addColorStop(0,"rgba(255, 255, 255, 1)"),s.addColorStop(.5,"rgba(255, 255, 255, 0.5)"),s.addColorStop(1,"rgba(255, 255, 255, 0)");const r=i.createLinearGradient(0,0,0,this._canvas.height);r.addColorStop(0,"rgba(0, 0, 0, 0)"),r.addColorStop(1,"rgba(0, 0, 0, 1)"),i.rect(0,0,this._canvas.width,this._canvas.height),i.fillStyle=me.Format.CSS.format(t),i.fill(),i.fillStyle=s,i.fill(),i.fillStyle=r,i.fill()}paintSelection(e,t){this.selection.style.left=`${e*this.width}px`,this.selection.style.top=`${this.height-t*this.height}px`}onDidChangeColor(e){if(this.monitor&&this.monitor.isMonitoring())return;this.paint();const t=e.hsva;this.paintSelection(t.s,t.v)}}class Y1e extends pe{constructor(e,t,i=!1){super(),this.model=t,this._onDidChange=new ue,this.onDidChange=this._onDidChange.event,this._onColorFlushed=new ue,this.onColorFlushed=this._onColorFlushed.event,i?(this.domNode=Le(e,Ba(".standalone-strip")),this.overlay=Le(this.domNode,Ba(".standalone-overlay"))):(this.domNode=Le(e,Ba(".strip")),this.overlay=Le(this.domNode,Ba(".overlay"))),this.slider=Le(this.domNode,Ba(".slider")),this.slider.style.top="0px",this._register(Ce(this.domNode,We.POINTER_DOWN,s=>this.onPointerDown(s))),this._register(t.onDidChangeColor(this.onDidChangeColor,this)),this.layout()}layout(){this.height=this.domNode.offsetHeight-this.slider.offsetHeight;const e=this.getValue(this.model.color);this.updateSliderPosition(e)}onDidChangeColor(e){const t=this.getValue(e);this.updateSliderPosition(t)}onPointerDown(e){if(!e.target||!(e.target instanceof Element))return;const t=this._register(new AC),i=ys(this.domNode);this.domNode.classList.add("grabbing"),e.target!==this.slider&&this.onDidChangeTop(e.offsetY),t.startMonitoring(e.target,e.pointerId,e.buttons,r=>this.onDidChangeTop(r.pageY-i.top),()=>null);const s=Ce(e.target.ownerDocument,We.POINTER_UP,()=>{this._onColorFlushed.fire(),s.dispose(),t.stopMonitoring(!0),this.domNode.classList.remove("grabbing")},!0)}onDidChangeTop(e){const t=Math.max(0,Math.min(1,1-e/this.height));this.updateSliderPosition(t),this._onDidChange.fire(t)}updateSliderPosition(e){this.slider.style.top=`${(1-e)*this.height}px`}}class mJe extends Y1e{constructor(e,t,i=!1){super(e,t,i),this.domNode.classList.add("opacity-strip"),this.onDidChangeColor(this.model.color)}onDidChangeColor(e){super.onDidChangeColor(e);const{r:t,g:i,b:s}=e.rgba,r=new me(new Kt(t,i,s,1)),o=new me(new Kt(t,i,s,0));this.overlay.style.background=`linear-gradient(to bottom, ${r} 0%, ${o} 100%)`}getValue(e){return e.hsva.a}}class _Je extends Y1e{constructor(e,t,i=!1){super(e,t,i),this.domNode.classList.add("hue-strip")}getValue(e){return 1-e.hsva.h/360}}class vJe extends pe{constructor(e){super(),this._onClicked=this._register(new ue),this.onClicked=this._onClicked.event,this._button=Le(e,document.createElement("button")),this._button.classList.add("insert-button"),this._button.textContent="Insert",this._button.onclick=t=>{this._onClicked.fire()}}get button(){return this._button}}class bJe extends Tc{constructor(e,t,i,s,r=!1){super(),this.model=t,this.pixelRatio=i,this._register(uL.onDidChange(()=>this.layout()));const o=Ba(".colorpicker-widget");e.appendChild(o),this.header=this._register(new dJe(o,this.model,s,r)),this.body=this._register(new gJe(o,this.model,this.pixelRatio,r))}layout(){this.body.layout()}}var Z1e=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},X1e=function(n,e){return function(t,i){e(t,i,n)}};class yJe{constructor(e,t,i,s){this.owner=e,this.range=t,this.model=i,this.provider=s,this.forceShowAtRange=!0}isValidForHoverAnchor(e){return e.type===1&&this.range.startColumn<=e.range.startColumn&&this.range.endColumn>=e.range.endColumn}}let RP=class{constructor(e,t){this._editor=e,this._themeService=t,this.hoverOrdinal=2}computeSync(e,t){return[]}computeAsync(e,t,i){return rs.fromPromise(this._computeAsync(e,t,i))}async _computeAsync(e,t,i){if(!this._editor.hasModel())return[];const s=um.get(this._editor);if(!s)return[];for(const r of t){if(!s.isColorDecoration(r))continue;const o=s.getColorData(r.range.getStartPosition());if(o)return[await Q1e(this,this._editor.getModel(),o.colorInfo,o.provider)]}return[]}renderHoverParts(e,t){return J1e(this,this._editor,this._themeService,t,e)}};RP=Z1e([X1e(1,Ms)],RP);class CJe{constructor(e,t,i,s){this.owner=e,this.range=t,this.model=i,this.provider=s}}let ex=class{constructor(e,t){this._editor=e,this._themeService=t,this._color=null}async createColorHover(e,t,i){if(!this._editor.hasModel()||!um.get(this._editor))return null;const r=await j1e(i,this._editor.getModel(),Ft.None);let o=null,a=null;for(const h of r){const d=h.colorInfo;M.containsRange(d.range,e.range)&&(o=d,a=h.provider)}const l=o??e,c=a??t,u=!!o;return{colorHover:await Q1e(this,this._editor.getModel(),l,c),foundInEditor:u}}async updateEditorModel(e){if(!this._editor.hasModel())return;const t=e.model;let i=new M(e.range.startLineNumber,e.range.startColumn,e.range.endLineNumber,e.range.endColumn);this._color&&(await pN(this._editor.getModel(),t,this._color,i,e),i=e_e(this._editor,i,t))}renderHoverParts(e,t){return J1e(this,this._editor,this._themeService,t,e)}set color(e){this._color=e}get color(){return this._color}};ex=Z1e([X1e(1,Ms)],ex);async function Q1e(n,e,t,i){const s=e.getValueInRange(t.range),{red:r,green:o,blue:a,alpha:l}=t.color,c=new Kt(Math.round(r*255),Math.round(o*255),Math.round(a*255),l),u=new me(c),h=await q1e(e,t,i,Ft.None),d=new hJe(u,[],0);return d.colorPresentations=h||[],d.guessColorPresentation(u,s),n instanceof RP?new yJe(n,M.lift(t.range),d,i):new CJe(n,M.lift(t.range),d,i)}function J1e(n,e,t,i,s){if(i.length===0||!e.hasModel())return pe.None;if(s.setMinimumDimensions){const d=e.getOption(66)+8;s.setMinimumDimensions(new ni(302,d))}const r=new xe,o=i[0],a=e.getModel(),l=o.model,c=r.add(new bJe(s.fragment,l,e.getOption(141),t,n instanceof ex));s.setColorPicker(c);let u=!1,h=new M(o.range.startLineNumber,o.range.startColumn,o.range.endLineNumber,o.range.endColumn);if(n instanceof ex){const d=i[0].model.color;n.color=d,pN(a,l,d,h,o),r.add(l.onColorFlushed(f=>{n.color=f}))}else r.add(l.onColorFlushed(async d=>{await pN(a,l,d,h,o),u=!0,h=e_e(e,h,l,s)}));return r.add(l.onDidChangeColor(d=>{pN(a,l,d,h,o)})),r.add(e.onDidChangeModelContent(d=>{u?u=!1:(s.hide(),e.focus())})),r}function e_e(n,e,t,i){let s,r;if(t.presentation.textEdit){s=[t.presentation.textEdit],r=new M(t.presentation.textEdit.range.startLineNumber,t.presentation.textEdit.range.startColumn,t.presentation.textEdit.range.endLineNumber,t.presentation.textEdit.range.endColumn);const o=n.getModel()._setTrackedRange(null,r,3);n.pushUndoStop(),n.executeEdits("colorpicker",s),r=n.getModel()._getTrackedRange(o)||r}else s=[{range:e,text:t.presentation.label,forceMoveMarkers:!1}],r=e.setEndPosition(e.endLineNumber,e.startColumn+t.presentation.label.length),n.pushUndoStop(),n.executeEdits("colorpicker",s);return t.presentation.additionalTextEdits&&(s=[...t.presentation.additionalTextEdits],n.executeEdits("colorpicker",s),i&&i.hide()),n.pushUndoStop(),r}async function pN(n,e,t,i,s){const r=await q1e(n,{range:i,color:{red:t.rgba.r/255,green:t.rgba.g/255,blue:t.rgba.b/255,alpha:t.rgba.a}},s.provider,Ft.None);e.colorPresentations=r||[]}function vW(n,e){return!!n[e]}class L3{constructor(e,t){this.target=e.target,this.isLeftClick=e.event.leftButton,this.isMiddleClick=e.event.middleButton,this.isRightClick=e.event.rightButton,this.hasTriggerModifier=vW(e.event,t.triggerModifier),this.hasSideBySideModifier=vW(e.event,t.triggerSideBySideModifier),this.isNoneOrSingleMouseDown=e.event.detail<=1}}class Pie{constructor(e,t){this.keyCodeIsTriggerKey=e.keyCode===t.triggerKey,this.keyCodeIsSideBySideKey=e.keyCode===t.triggerSideBySideKey,this.hasTriggerModifier=vW(e,t.triggerModifier)}}class EI{constructor(e,t,i,s){this.triggerKey=e,this.triggerModifier=t,this.triggerSideBySideKey=i,this.triggerSideBySideModifier=s}equals(e){return this.triggerKey===e.triggerKey&&this.triggerModifier===e.triggerModifier&&this.triggerSideBySideKey===e.triggerSideBySideKey&&this.triggerSideBySideModifier===e.triggerSideBySideModifier}}function Rie(n){return n==="altKey"?Gt?new EI(57,"metaKey",6,"altKey"):new EI(5,"ctrlKey",6,"altKey"):Gt?new EI(6,"altKey",57,"metaKey"):new EI(6,"altKey",5,"ctrlKey")}class f2 extends pe{constructor(e,t){var i;super(),this._onMouseMoveOrRelevantKeyDown=this._register(new ue),this.onMouseMoveOrRelevantKeyDown=this._onMouseMoveOrRelevantKeyDown.event,this._onExecute=this._register(new ue),this.onExecute=this._onExecute.event,this._onCancel=this._register(new ue),this.onCancel=this._onCancel.event,this._editor=e,this._extractLineNumberFromMouseEvent=(i=t==null?void 0:t.extractLineNumberFromMouseEvent)!==null&&i!==void 0?i:s=>s.target.position?s.target.position.lineNumber:0,this._opts=Rie(this._editor.getOption(77)),this._lastMouseMoveEvent=null,this._hasTriggerKeyOnMouseDown=!1,this._lineNumberOnMouseDown=0,this._register(this._editor.onDidChangeConfiguration(s=>{if(s.hasChanged(77)){const r=Rie(this._editor.getOption(77));if(this._opts.equals(r))return;this._opts=r,this._lastMouseMoveEvent=null,this._hasTriggerKeyOnMouseDown=!1,this._lineNumberOnMouseDown=0,this._onCancel.fire()}})),this._register(this._editor.onMouseMove(s=>this._onEditorMouseMove(new L3(s,this._opts)))),this._register(this._editor.onMouseDown(s=>this._onEditorMouseDown(new L3(s,this._opts)))),this._register(this._editor.onMouseUp(s=>this._onEditorMouseUp(new L3(s,this._opts)))),this._register(this._editor.onKeyDown(s=>this._onEditorKeyDown(new Pie(s,this._opts)))),this._register(this._editor.onKeyUp(s=>this._onEditorKeyUp(new Pie(s,this._opts)))),this._register(this._editor.onMouseDrag(()=>this._resetHandler())),this._register(this._editor.onDidChangeCursorSelection(s=>this._onDidChangeCursorSelection(s))),this._register(this._editor.onDidChangeModel(s=>this._resetHandler())),this._register(this._editor.onDidChangeModelContent(()=>this._resetHandler())),this._register(this._editor.onDidScrollChange(s=>{(s.scrollTopChanged||s.scrollLeftChanged)&&this._resetHandler()}))}_onDidChangeCursorSelection(e){e.selection&&e.selection.startColumn!==e.selection.endColumn&&this._resetHandler()}_onEditorMouseMove(e){this._lastMouseMoveEvent=e,this._onMouseMoveOrRelevantKeyDown.fire([e,null])}_onEditorMouseDown(e){this._hasTriggerKeyOnMouseDown=e.hasTriggerModifier,this._lineNumberOnMouseDown=this._extractLineNumberFromMouseEvent(e)}_onEditorMouseUp(e){const t=this._extractLineNumberFromMouseEvent(e);this._hasTriggerKeyOnMouseDown&&this._lineNumberOnMouseDown&&this._lineNumberOnMouseDown===t&&this._onExecute.fire(e)}_onEditorKeyDown(e){this._lastMouseMoveEvent&&(e.keyCodeIsTriggerKey||e.keyCodeIsSideBySideKey&&e.hasTriggerModifier)?this._onMouseMoveOrRelevantKeyDown.fire([this._lastMouseMoveEvent,e]):e.hasTriggerModifier&&this._onCancel.fire()}_onEditorKeyUp(e){e.keyCodeIsTriggerKey&&this._onCancel.fire()}_resetHandler(){this._lastMouseMoveEvent=null,this._hasTriggerKeyOnMouseDown=!1,this._onCancel.fire()}}var wJe=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},Hd=function(n,e){return function(t,i){e(t,i,n)}};let hm=class extends Ey{constructor(e,t,i,s,r,o,a,l,c,u,h,d,f){super(e,{...s.getRawOptions(),overflowWidgetsDomNode:s.getOverflowWidgetsDomNode()},i,r,o,a,l,c,u,h,d,f),this._parentEditor=s,this._overwriteOptions=t,super.updateOptions(this._overwriteOptions),this._register(s.onDidChangeConfiguration(g=>this._onParentConfigurationChanged(g)))}getParentEditor(){return this._parentEditor}_onParentConfigurationChanged(e){super.updateOptions(this._parentEditor.getRawOptions()),super.updateOptions(this._overwriteOptions)}updateOptions(e){PO(this._overwriteOptions,e,!0),super.updateOptions(this._overwriteOptions)}};hm=wJe([Hd(4,at),Hd(5,ri),Hd(6,Dn),Hd(7,ft),Hd(8,Ms),Hd(9,is),Hd(10,Dd),Hd(11,Bi),Hd(12,Ge)],hm);const Mie=new me(new Kt(0,122,204)),SJe={showArrow:!0,showFrame:!0,className:"",frameColor:Mie,arrowColor:Mie,keepEditorSelection:!1},kJe="vs.editor.contrib.zoneWidget";class LJe{constructor(e,t,i,s,r,o,a,l){this.id="",this.domNode=e,this.afterLineNumber=t,this.afterColumn=i,this.heightInLines=s,this.showInHiddenAreas=a,this.ordinal=l,this._onDomNodeTop=r,this._onComputedHeight=o}onDomNodeTop(e){this._onDomNodeTop(e)}onComputedHeight(e){this._onComputedHeight(e)}}class xJe{constructor(e,t){this._id=e,this._domNode=t}getId(){return this._id}getDomNode(){return this._domNode}getPosition(){return null}}class g2{constructor(e){this._editor=e,this._ruleName=g2._IdGenerator.nextId(),this._decorations=this._editor.createDecorationsCollection(),this._color=null,this._height=-1}dispose(){this.hide(),X8(this._ruleName)}set color(e){this._color!==e&&(this._color=e,this._updateStyle())}set height(e){this._height!==e&&(this._height=e,this._updateStyle())}_updateStyle(){X8(this._ruleName),WA(`.monaco-editor ${this._ruleName}`,`border-style: solid; border-color: transparent; border-bottom-color: ${this._color}; border-width: ${this._height}px; bottom: -${this._height}px; margin-left: -${this._height}px; `)}show(e){e.column===1&&(e={lineNumber:e.lineNumber,column:2}),this._decorations.set([{range:M.fromPositions(e),options:{description:"zone-widget-arrow",className:this._ruleName,stickiness:1}}])}hide(){this._decorations.clear()}}g2._IdGenerator=new sK(".arrow-decoration-");class EJe{constructor(e,t={}){this._arrow=null,this._overlayWidget=null,this._resizeSash=null,this._viewZone=null,this._disposables=new xe,this.container=null,this._isShowing=!1,this.editor=e,this._positionMarkerId=this.editor.createDecorationsCollection(),this.options=ef(t),PO(this.options,SJe,!1),this.domNode=document.createElement("div"),this.options.isAccessible||(this.domNode.setAttribute("aria-hidden","true"),this.domNode.setAttribute("role","presentation")),this._disposables.add(this.editor.onDidLayoutChange(i=>{const s=this._getWidth(i);this.domNode.style.width=s+"px",this.domNode.style.left=this._getLeft(i)+"px",this._onWidth(s)}))}dispose(){this._overlayWidget&&(this.editor.removeOverlayWidget(this._overlayWidget),this._overlayWidget=null),this._viewZone&&this.editor.changeViewZones(e=>{this._viewZone&&e.removeZone(this._viewZone.id),this._viewZone=null}),this._positionMarkerId.clear(),this._disposables.dispose()}create(){this.domNode.classList.add("zone-widget"),this.options.className&&this.domNode.classList.add(this.options.className),this.container=document.createElement("div"),this.container.classList.add("zone-widget-container"),this.domNode.appendChild(this.container),this.options.showArrow&&(this._arrow=new g2(this.editor),this._disposables.add(this._arrow)),this._fillContainer(this.container),this._initSash(),this._applyStyles()}style(e){e.frameColor&&(this.options.frameColor=e.frameColor),e.arrowColor&&(this.options.arrowColor=e.arrowColor),this._applyStyles()}_applyStyles(){if(this.container&&this.options.frameColor){const e=this.options.frameColor.toString();this.container.style.borderTopColor=e,this.container.style.borderBottomColor=e}if(this._arrow&&this.options.arrowColor){const e=this.options.arrowColor.toString();this._arrow.color=e}}_getWidth(e){return e.width-e.minimap.minimapWidth-e.verticalScrollbarWidth}_getLeft(e){return e.minimap.minimapWidth>0&&e.minimap.minimapLeft===0?e.minimap.minimapWidth:0}_onViewZoneTop(e){this.domNode.style.top=e+"px"}_onViewZoneHeight(e){var t;if(this.domNode.style.height=`${e}px`,this.container){const i=e-this._decoratingElementsHeight();this.container.style.height=`${i}px`;const s=this.editor.getLayoutInfo();this._doLayout(i,this._getWidth(s))}(t=this._resizeSash)===null||t===void 0||t.layout()}get position(){const e=this._positionMarkerId.getRange(0);if(e)return e.getStartPosition()}show(e,t){const i=M.isIRange(e)?M.lift(e):M.fromPositions(e);this._isShowing=!0,this._showImpl(i,t),this._isShowing=!1,this._positionMarkerId.set([{range:i,options:yt.EMPTY}])}hide(){var e;this._viewZone&&(this.editor.changeViewZones(t=>{this._viewZone&&t.removeZone(this._viewZone.id)}),this._viewZone=null),this._overlayWidget&&(this.editor.removeOverlayWidget(this._overlayWidget),this._overlayWidget=null),(e=this._arrow)===null||e===void 0||e.hide(),this._positionMarkerId.clear()}_decoratingElementsHeight(){const e=this.editor.getOption(66);let t=0;if(this.options.showArrow){const i=Math.round(e/3);t+=2*i}if(this.options.showFrame){const i=Math.round(e/9);t+=2*i}return t}_showImpl(e,t){const i=e.getStartPosition(),s=this.editor.getLayoutInfo(),r=this._getWidth(s);this.domNode.style.width=`${r}px`,this.domNode.style.left=this._getLeft(s)+"px";const o=document.createElement("div");o.style.overflow="hidden";const a=this.editor.getOption(66);if(!this.options.allowUnlimitedHeight){const d=Math.max(12,this.editor.getLayoutInfo().height/a*.8);t=Math.min(t,d)}let l=0,c=0;if(this._arrow&&this.options.showArrow&&(l=Math.round(a/3),this._arrow.height=l,this._arrow.show(i)),this.options.showFrame&&(c=Math.round(a/9)),this.editor.changeViewZones(d=>{this._viewZone&&d.removeZone(this._viewZone.id),this._overlayWidget&&(this.editor.removeOverlayWidget(this._overlayWidget),this._overlayWidget=null),this.domNode.style.top="-1000px",this._viewZone=new LJe(o,i.lineNumber,i.column,t,f=>this._onViewZoneTop(f),f=>this._onViewZoneHeight(f),this.options.showInHiddenAreas,this.options.ordinal),this._viewZone.id=d.addZone(this._viewZone),this._overlayWidget=new xJe(kJe+this._viewZone.id,this.domNode),this.editor.addOverlayWidget(this._overlayWidget)}),this.container&&this.options.showFrame){const d=this.options.frameWidth?this.options.frameWidth:c;this.container.style.borderTopWidth=d+"px",this.container.style.borderBottomWidth=d+"px"}const u=t*a-this._decoratingElementsHeight();this.container&&(this.container.style.top=l+"px",this.container.style.height=u+"px",this.container.style.overflow="hidden"),this._doLayout(u,r),this.options.keepEditorSelection||this.editor.setSelection(e);const h=this.editor.getModel();if(h){const d=h.validateRange(new M(e.startLineNumber,1,e.endLineNumber+1,1));this.revealRange(d,d.startLineNumber===h.getLineCount())}}revealRange(e,t){t?this.editor.revealLineNearTop(e.endLineNumber,0):this.editor.revealRange(e,0)}setCssClass(e,t){this.container&&(t&&this.container.classList.remove(t),this.container.classList.add(e))}_onWidth(e){}_doLayout(e,t){}_relayout(e){this._viewZone&&this._viewZone.heightInLines!==e&&this.editor.changeViewZones(t=>{this._viewZone&&(this._viewZone.heightInLines=e,t.layoutZone(this._viewZone.id))})}_initSash(){if(this._resizeSash)return;this._resizeSash=this._disposables.add(new wr(this.domNode,this,{orientation:1})),this.options.isResizeable||(this._resizeSash.state=0);let e;this._disposables.add(this._resizeSash.onDidStart(t=>{this._viewZone&&(e={startY:t.startY,heightInLines:this._viewZone.heightInLines})})),this._disposables.add(this._resizeSash.onDidEnd(()=>{e=void 0})),this._disposables.add(this._resizeSash.onDidChange(t=>{if(e){const i=(t.currentY-e.startY)/this.editor.getOption(66),s=i<0?Math.ceil(i):Math.floor(i),r=e.heightInLines+s;r>5&&r<35&&this._relayout(r)}}))}getHorizontalSashLeft(){return 0}getHorizontalSashTop(){return(this.domNode.style.height===null?0:parseInt(this.domNode.style.height))-this._decoratingElementsHeight()/2}getHorizontalSashWidth(){const e=this.editor.getLayoutInfo();return e.width-e.minimap.minimapWidth}}class DJe extends R_{constructor(e,t){super(),this._onDidChangeVisibility=this._register(new ue),this.onDidChangeVisibility=this._onDidChangeVisibility.event,this._element=Le(e,Te(".monaco-dropdown")),this._label=Le(this._element,Te(".dropdown-label"));let i=t.labelRenderer;i||(i=r=>(r.textContent=t.label||"",null));for(const r of[We.CLICK,We.MOUSE_DOWN,Oi.Tap])this._register(Ce(this.element,r,o=>Tt.stop(o,!0)));for(const r of[We.MOUSE_DOWN,Oi.Tap])this._register(Ce(this._label,r,o=>{Zj(o)&&(o.detail>1||o.button!==0)||(this.visible?this.hide():this.show())}));this._register(Ce(this._label,We.KEY_UP,r=>{const o=new Ki(r);(o.equals(3)||o.equals(10))&&(Tt.stop(r,!0),this.visible?this.hide():this.show())}));const s=i(this._label);s&&this._register(s),this._register(Ri.addTarget(this._label))}get element(){return this._element}show(){this.visible||(this.visible=!0,this._onDidChangeVisibility.fire(!0))}hide(){this.visible&&(this.visible=!1,this._onDidChangeVisibility.fire(!1))}dispose(){super.dispose(),this.hide(),this.boxContainer&&(this.boxContainer.remove(),this.boxContainer=void 0),this.contents&&(this.contents.remove(),this.contents=void 0),this._label&&(this._label.remove(),this._label=void 0)}}class IJe extends DJe{constructor(e,t){super(e,t),this._options=t,this._actions=[],this.actions=t.actions||[]}set menuOptions(e){this._menuOptions=e}get menuOptions(){return this._menuOptions}get actions(){return this._options.actionProvider?this._options.actionProvider.getActions():this._actions}set actions(e){this._actions=e}show(){super.show(),this.element.classList.add("active"),this._options.contextMenuProvider.showContextMenu({getAnchor:()=>this.element,getActions:()=>this.actions,getActionsContext:()=>this.menuOptions?this.menuOptions.context:null,getActionViewItem:(e,t)=>this.menuOptions&&this.menuOptions.actionViewItemProvider?this.menuOptions.actionViewItemProvider(e,t):void 0,getKeyBinding:e=>this.menuOptions&&this.menuOptions.getKeyBinding?this.menuOptions.getKeyBinding(e):void 0,getMenuClassName:()=>this._options.menuClassName||"",onHide:()=>this.onHide(),actionRunner:this.menuOptions?this.menuOptions.actionRunner:void 0,anchorAlignment:this.menuOptions?this.menuOptions.anchorAlignment:0,domForShadowRoot:this._options.menuAsChild?this.element:void 0,skipTelemetry:this._options.skipTelemetry})}hide(){super.hide()}onHide(){this.hide(),this.element.classList.remove("active")}}class MP extends nu{constructor(e,t,i,s=Object.create(null)){super(null,e,s),this.actionItem=null,this._onDidChangeVisibility=this._register(new ue),this.onDidChangeVisibility=this._onDidChangeVisibility.event,this.menuActionsOrProvider=t,this.contextMenuProvider=i,this.options=s,this.options.actionRunner&&(this.actionRunner=this.options.actionRunner)}render(e){this.actionItem=e;const t=r=>{this.element=Le(r,Te("a.action-label"));let o=[];return typeof this.options.classNames=="string"?o=this.options.classNames.split(/\s+/g).filter(a=>!!a):this.options.classNames&&(o=this.options.classNames),o.find(a=>a==="icon")||o.push("codicon"),this.element.classList.add(...o),this.element.setAttribute("role","button"),this.element.setAttribute("aria-haspopup","true"),this.element.setAttribute("aria-expanded","false"),this.element.title=this._action.label||"",this.element.ariaLabel=this._action.label||"",null},i=Array.isArray(this.menuActionsOrProvider),s={contextMenuProvider:this.contextMenuProvider,labelRenderer:t,menuAsChild:this.options.menuAsChild,actions:i?this.menuActionsOrProvider:void 0,actionProvider:i?void 0:this.menuActionsOrProvider,skipTelemetry:this.options.skipTelemetry};if(this.dropdownMenu=this._register(new IJe(e,s)),this._register(this.dropdownMenu.onDidChangeVisibility(r=>{var o;(o=this.element)===null||o===void 0||o.setAttribute("aria-expanded",`${r}`),this._onDidChangeVisibility.fire(r)})),this.dropdownMenu.menuOptions={actionViewItemProvider:this.options.actionViewItemProvider,actionRunner:this.actionRunner,getKeyBinding:this.options.keybindingProvider,context:this._context},this.options.anchorAlignmentProvider){const r=this;this.dropdownMenu.menuOptions={...this.dropdownMenu.menuOptions,get anchorAlignment(){return r.options.anchorAlignmentProvider()}}}this.updateTooltip(),this.updateEnabled()}getTooltip(){let e=null;return this.action.tooltip?e=this.action.tooltip:this.action.label&&(e=this.action.label),e??void 0}setActionContext(e){super.setActionContext(e),this.dropdownMenu&&(this.dropdownMenu.menuOptions?this.dropdownMenu.menuOptions.context=e:this.dropdownMenu.menuOptions={context:e})}show(){var e;(e=this.dropdownMenu)===null||e===void 0||e.show()}updateEnabled(){var e,t;const i=!this.action.enabled;(e=this.actionItem)===null||e===void 0||e.classList.toggle("disabled",i),(t=this.element)===null||t===void 0||t.classList.toggle("disabled",i)}}function TJe(n){return n?n.condition!==void 0:!1}var p2=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},Do=function(n,e){return function(t,i){e(t,i,n)}};function NJe(n,e,t,i){const s=n.getActions(e),r=Cf.getInstance(),o=r.keyStatus.altKey||(yr||Kr)&&r.keyStatus.shiftKey;t_e(s,t,o,i?a=>a===i:a=>a==="navigation")}function TK(n,e,t,i,s,r){const o=n.getActions(e);t_e(o,t,!1,typeof i=="string"?l=>l===i:i,s,r)}function t_e(n,e,t,i=o=>o==="navigation",s=()=>!1,r=!1){let o,a;Array.isArray(e)?(o=e,a=e):(o=e.primary,a=e.secondary);const l=new Set;for(const[c,u]of n){let h;i(c)?(h=o,h.length>0&&r&&h.push(new js)):(h=a,h.length>0&&h.push(new js));for(let d of u){t&&(d=d instanceof Lc&&d.alt?d.alt:d);const f=h.push(d);d instanceof gy&&l.add({group:c,action:d,index:f-1})}}for(const{group:c,action:u,index:h}of l){const d=i(c)?o:a,f=u.actions;s(u,c,d.length)&&d.splice(h,1,...f)}}let z_=class extends Ny{constructor(e,t,i,s,r,o,a,l){super(void 0,e,{icon:!!(e.class||e.item.icon),label:!e.class&&!e.item.icon,draggable:t==null?void 0:t.draggable,keybinding:t==null?void 0:t.keybinding,hoverDelegate:t==null?void 0:t.hoverDelegate}),this._keybindingService=i,this._notificationService=s,this._contextKeyService=r,this._themeService=o,this._contextMenuService=a,this._accessibilityService=l,this._wantsAltCommand=!1,this._itemClassDispose=this._register(new qs),this._altKey=Cf.getInstance()}get _menuItemAction(){return this._action}get _commandAction(){return this._wantsAltCommand&&this._menuItemAction.alt||this._menuItemAction}async onClick(e){e.preventDefault(),e.stopPropagation();try{await this.actionRunner.run(this._commandAction,this._context)}catch(t){this._notificationService.error(t)}}render(e){if(super.render(e),e.classList.add("menu-entry"),this.options.icon&&this._updateItemClass(this._menuItemAction.item),this._menuItemAction.alt){let t=!1;const i=()=>{var s;const r=!!(!((s=this._menuItemAction.alt)===null||s===void 0)&&s.enabled)&&(!this._accessibilityService.isMotionReduced()||t)&&(this._altKey.keyStatus.altKey||this._altKey.keyStatus.shiftKey&&t);r!==this._wantsAltCommand&&(this._wantsAltCommand=r,this.updateLabel(),this.updateTooltip(),this.updateClass())};this._register(this._altKey.event(i)),this._register(Ce(e,"mouseleave",s=>{t=!1,i()})),this._register(Ce(e,"mouseenter",s=>{t=!0,i()})),i()}}updateLabel(){this.options.label&&this.label&&(this.label.textContent=this._commandAction.label)}getTooltip(){var e;const t=this._keybindingService.lookupKeybinding(this._commandAction.id,this._contextKeyService),i=t&&t.getLabel(),s=this._commandAction.tooltip||this._commandAction.label;let r=i?v("titleAndKb","{0} ({1})",s,i):s;if(!this._wantsAltCommand&&(!((e=this._menuItemAction.alt)===null||e===void 0)&&e.enabled)){const o=this._menuItemAction.alt.tooltip||this._menuItemAction.alt.label,a=this._keybindingService.lookupKeybinding(this._menuItemAction.alt.id,this._contextKeyService),l=a&&a.getLabel(),c=l?v("titleAndKb","{0} ({1})",o,l):o;r=v("titleAndKbAndAlt",`{0} +[{1}] {2}`,r,CK.modifierLabels[Ha].altKey,c)}return r}updateClass(){this.options.icon&&(this._commandAction!==this._menuItemAction?this._menuItemAction.alt&&this._updateItemClass(this._menuItemAction.alt.item):this._updateItemClass(this._menuItemAction.item))}_updateItemClass(e){this._itemClassDispose.value=void 0;const{element:t,label:i}=this;if(!t||!i)return;const s=this._commandAction.checked&&TJe(e.toggled)&&e.toggled.icon?e.toggled.icon:e.icon;if(s)if(nt.isThemeIcon(s)){const r=nt.asClassNameArray(s);i.classList.add(...r),this._itemClassDispose.value=st(()=>{i.classList.remove(...r)})}else i.style.backgroundImage=yy(this._themeService.getColorTheme().type)?Xp(s.dark):Xp(s.light),i.classList.add("icon"),this._itemClassDispose.value=_c(st(()=>{i.style.backgroundImage="",i.classList.remove("icon")}),this._themeService.onDidColorThemeChange(()=>{this.updateClass()}))}};z_=p2([Do(2,Di),Do(3,is),Do(4,ft),Do(5,Ms),Do(6,zl),Do(7,Dd)],z_);let bW=class extends MP{constructor(e,t,i,s,r){var o,a,l;const c={...t,menuAsChild:(o=t==null?void 0:t.menuAsChild)!==null&&o!==void 0?o:!1,classNames:(a=t==null?void 0:t.classNames)!==null&&a!==void 0?a:nt.isThemeIcon(e.item.icon)?nt.asClassName(e.item.icon):void 0,keybindingProvider:(l=t==null?void 0:t.keybindingProvider)!==null&&l!==void 0?l:u=>i.lookupKeybinding(u.id)};super(e,{getActions:()=>e.actions},s,c),this._keybindingService=i,this._contextMenuService=s,this._themeService=r}render(e){super.render(e),Si(this.element),e.classList.add("menu-entry");const t=this._action,{icon:i}=t.item;if(i&&!nt.isThemeIcon(i)){this.element.classList.add("icon");const s=()=>{this.element&&(this.element.style.backgroundImage=yy(this._themeService.getColorTheme().type)?Xp(i.dark):Xp(i.light))};s(),this._register(this._themeService.onDidColorThemeChange(()=>{s()}))}}};bW=p2([Do(2,Di),Do(3,zl),Do(4,Ms)],bW);let yW=class extends nu{constructor(e,t,i,s,r,o,a,l){var c,u,h;super(null,e),this._keybindingService=i,this._notificationService=s,this._contextMenuService=r,this._menuService=o,this._instaService=a,this._storageService=l,this._container=null,this._options=t,this._storageKey=`${e.item.submenu.id}_lastActionId`;let d;const f=t!=null&&t.persistLastActionId?l.get(this._storageKey,1):void 0;f&&(d=e.actions.find(p=>f===p.id)),d||(d=e.actions[0]),this._defaultAction=this._instaService.createInstance(z_,d,{keybinding:this._getDefaultActionKeybindingLabel(d)});const g={keybindingProvider:p=>this._keybindingService.lookupKeybinding(p.id),...t,menuAsChild:(c=t==null?void 0:t.menuAsChild)!==null&&c!==void 0?c:!0,classNames:(u=t==null?void 0:t.classNames)!==null&&u!==void 0?u:["codicon","codicon-chevron-down"],actionRunner:(h=t==null?void 0:t.actionRunner)!==null&&h!==void 0?h:new R_};this._dropdown=new MP(e,e.actions,this._contextMenuService,g),this._dropdown.actionRunner.onDidRun(p=>{p.action instanceof Lc&&this.update(p.action)})}update(e){var t;!((t=this._options)===null||t===void 0)&&t.persistLastActionId&&this._storageService.store(this._storageKey,e.id,1,1),this._defaultAction.dispose(),this._defaultAction=this._instaService.createInstance(z_,e,{keybinding:this._getDefaultActionKeybindingLabel(e)}),this._defaultAction.actionRunner=new class extends R_{async runAction(i,s){await i.run(void 0)}},this._container&&this._defaultAction.render(Lge(this._container,Te(".action-container")))}_getDefaultActionKeybindingLabel(e){var t;let i;if(!((t=this._options)===null||t===void 0)&&t.renderKeybindingWithDefaultActionLabel){const s=this._keybindingService.lookupKeybinding(e.id);s&&(i=`(${s.getLabel()})`)}return i}setActionContext(e){super.setActionContext(e),this._defaultAction.setActionContext(e),this._dropdown.setActionContext(e)}render(e){this._container=e,super.render(this._container),this._container.classList.add("monaco-dropdown-with-default");const t=Te(".action-container");this._defaultAction.render(Le(this._container,t)),this._register(Ce(t,We.KEY_DOWN,s=>{const r=new Ki(s);r.equals(17)&&(this._defaultAction.element.tabIndex=-1,this._dropdown.focus(),r.stopPropagation())}));const i=Te(".dropdown-action-container");this._dropdown.render(Le(this._container,i)),this._register(Ce(i,We.KEY_DOWN,s=>{var r;const o=new Ki(s);o.equals(15)&&(this._defaultAction.element.tabIndex=0,this._dropdown.setFocusable(!1),(r=this._defaultAction.element)===null||r===void 0||r.focus(),o.stopPropagation())}))}focus(e){e?this._dropdown.focus():(this._defaultAction.element.tabIndex=0,this._defaultAction.element.focus())}blur(){this._defaultAction.element.tabIndex=-1,this._dropdown.blur(),this._container.blur()}setFocusable(e){e?this._defaultAction.element.tabIndex=0:(this._defaultAction.element.tabIndex=-1,this._dropdown.setFocusable(!1))}dispose(){this._defaultAction.dispose(),this._dropdown.dispose(),super.dispose()}};yW=p2([Do(2,Di),Do(3,is),Do(4,zl),Do(5,Vu),Do(6,at),Do(7,Rc)],yW);let CW=class extends NYe{constructor(e,t){super(null,e,e.actions.map(i=>({text:i.id===js.ID?"─────────":i.label,isDisabled:!i.enabled})),0,t,JXe,{ariaLabel:e.tooltip,optionsAsChildren:!0}),this.select(Math.max(0,e.actions.findIndex(i=>i.checked)))}render(e){super.render(e),e.style.borderColor=Ue(W0)}runAction(e,t){const i=this.action.actions[t];i&&this.actionRunner.run(i)}};CW=p2([Do(1,lg)],CW);function AJe(n,e,t){return e instanceof Lc?n.createInstance(z_,e,t):e instanceof vL?e.item.isSelection?n.createInstance(CW,e):e.item.rememberDefaultAction?n.createInstance(yW,e,{...t,persistLastActionId:!0}):n.createInstance(bW,e,t):void 0}var i_e=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},n_e=function(n,e){return function(t,i){e(t,i,n)}};const s_e=Bt("IPeekViewService");jt(s_e,class{constructor(){this._widgets=new Map}addExclusiveWidget(n,e){const t=this._widgets.get(n);t&&(t.listener.dispose(),t.widget.dispose());const i=()=>{const s=this._widgets.get(n);s&&s.widget===e&&(s.listener.dispose(),this._widgets.delete(n))};this._widgets.set(n,{widget:e,listener:e.onDidClose(i)})}},1);var Oo;(function(n){n.inPeekEditor=new ze("inReferenceSearchEditor",!0,v("inReferenceSearchEditor","Whether the current code editor is embedded inside peek")),n.notInPeekEditor=n.inPeekEditor.toNegated()})(Oo||(Oo={}));let tx=class{constructor(e,t){e instanceof hm&&Oo.inPeekEditor.bindTo(t)}dispose(){}};tx.ID="editor.contrib.referenceController";tx=i_e([n_e(1,ft)],tx);ti(tx.ID,tx,0);function PJe(n){const e=n.get(ri).getFocusedCodeEditor();return e instanceof hm?e.getParentEditor():e}const RJe={headerBackgroundColor:me.white,primaryHeadingColor:me.fromHex("#333333"),secondaryHeadingColor:me.fromHex("#6c6c6cb3")};let OP=class extends EJe{constructor(e,t,i){super(e,t),this.instantiationService=i,this._onDidClose=new ue,this.onDidClose=this._onDidClose.event,PO(this.options,RJe,!1)}dispose(){this.disposed||(this.disposed=!0,super.dispose(),this._onDidClose.fire(this))}style(e){const t=this.options;e.headerBackgroundColor&&(t.headerBackgroundColor=e.headerBackgroundColor),e.primaryHeadingColor&&(t.primaryHeadingColor=e.primaryHeadingColor),e.secondaryHeadingColor&&(t.secondaryHeadingColor=e.secondaryHeadingColor),super.style(e)}_applyStyles(){super._applyStyles();const e=this.options;this._headElement&&e.headerBackgroundColor&&(this._headElement.style.backgroundColor=e.headerBackgroundColor.toString()),this._primaryHeading&&e.primaryHeadingColor&&(this._primaryHeading.style.color=e.primaryHeadingColor.toString()),this._secondaryHeading&&e.secondaryHeadingColor&&(this._secondaryHeading.style.color=e.secondaryHeadingColor.toString()),this._bodyElement&&e.frameColor&&(this._bodyElement.style.borderColor=e.frameColor.toString())}_fillContainer(e){this.setCssClass("peekview-widget"),this._headElement=Te(".head"),this._bodyElement=Te(".body"),this._fillHead(this._headElement),this._fillBody(this._bodyElement),e.appendChild(this._headElement),e.appendChild(this._bodyElement)}_fillHead(e,t){this._titleElement=Te(".peekview-title"),this.options.supportOnTitleClick&&(this._titleElement.classList.add("clickable"),Mn(this._titleElement,"click",r=>this._onTitleClick(r))),Le(this._headElement,this._titleElement),this._fillTitleIcon(this._titleElement),this._primaryHeading=Te("span.filename"),this._secondaryHeading=Te("span.dirname"),this._metaHeading=Te("span.meta"),Le(this._titleElement,this._primaryHeading,this._secondaryHeading,this._metaHeading);const i=Te(".peekview-actions");Le(this._headElement,i);const s=this._getActionBarOptions();this._actionbarWidget=new Vl(i,s),this._disposables.add(this._actionbarWidget),t||this._actionbarWidget.push(new ho("peekview.close",v("label.close","Close"),nt.asClassName(Pe.close),!0,()=>(this.dispose(),Promise.resolve())),{label:!1,icon:!0})}_fillTitleIcon(e){}_getActionBarOptions(){return{actionViewItemProvider:AJe.bind(void 0,this.instantiationService),orientation:0}}_onTitleClick(e){}setTitle(e,t){this._primaryHeading&&this._secondaryHeading&&(this._primaryHeading.innerText=e,this._primaryHeading.setAttribute("title",e),t?this._secondaryHeading.innerText=t:ir(this._secondaryHeading))}setMetaTitle(e){this._metaHeading&&(e?(this._metaHeading.innerText=e,Xo(this._metaHeading)):Jr(this._metaHeading))}_doLayout(e,t){if(!this._isShowing&&e<0){this.dispose();return}const i=Math.ceil(this.editor.getOption(66)*1.2),s=Math.round(e-(i+2));this._doLayoutHead(i,t),this._doLayoutBody(s,t)}_doLayoutHead(e,t){this._headElement&&(this._headElement.style.height=`${e}px`,this._headElement.style.lineHeight=this._headElement.style.height)}_doLayoutBody(e,t){this._bodyElement&&(this._bodyElement.style.height=`${e}px`)}};OP=i_e([n_e(2,at)],OP);const MJe=U("peekViewTitle.background",{dark:"#252526",light:"#F3F3F3",hcDark:me.black,hcLight:me.white},v("peekViewTitleBackground","Background color of the peek view title area.")),r_e=U("peekViewTitleLabel.foreground",{dark:me.white,light:me.black,hcDark:me.white,hcLight:uc},v("peekViewTitleForeground","Color of the peek view title.")),o_e=U("peekViewTitleDescription.foreground",{dark:"#ccccccb3",light:"#616161",hcDark:"#FFFFFF99",hcLight:"#292929"},v("peekViewTitleInfoForeground","Color of the peek view title info.")),OJe=U("peekView.border",{dark:Ao,light:Ao,hcDark:zt,hcLight:zt},v("peekViewBorder","Color of the peek view borders and arrow.")),FJe=U("peekViewResult.background",{dark:"#252526",light:"#F3F3F3",hcDark:me.black,hcLight:me.white},v("peekViewResultsBackground","Background color of the peek view result list."));U("peekViewResult.lineForeground",{dark:"#bbbbbb",light:"#646465",hcDark:me.white,hcLight:uc},v("peekViewResultsMatchForeground","Foreground color for line nodes in the peek view result list."));U("peekViewResult.fileForeground",{dark:me.white,light:"#1E1E1E",hcDark:me.white,hcLight:uc},v("peekViewResultsFileForeground","Foreground color for file nodes in the peek view result list."));U("peekViewResult.selectionBackground",{dark:"#3399ff33",light:"#3399ff33",hcDark:null,hcLight:null},v("peekViewResultsSelectionBackground","Background color of the selected entry in the peek view result list."));U("peekViewResult.selectionForeground",{dark:me.white,light:"#6C6C6C",hcDark:me.white,hcLight:uc},v("peekViewResultsSelectionForeground","Foreground color of the selected entry in the peek view result list."));const ap=U("peekViewEditor.background",{dark:"#001F33",light:"#F2F8FC",hcDark:me.black,hcLight:me.white},v("peekViewEditorBackground","Background color of the peek view editor."));U("peekViewEditorGutter.background",{dark:ap,light:ap,hcDark:ap,hcLight:ap},v("peekViewEditorGutterBackground","Background color of the gutter in the peek view editor."));U("peekViewEditorStickyScroll.background",{dark:ap,light:ap,hcDark:ap,hcLight:ap},v("peekViewEditorStickScrollBackground","Background color of sticky scroll in the peek view editor."));U("peekViewResult.matchHighlightBackground",{dark:"#ea5c004d",light:"#ea5c004d",hcDark:null,hcLight:null},v("peekViewResultsMatchHighlight","Match highlight color in the peek view result list."));U("peekViewEditor.matchHighlightBackground",{dark:"#ff8f0099",light:"#f5d802de",hcDark:null,hcLight:null},v("peekViewEditorMatchHighlight","Match highlight color in the peek view editor."));U("peekViewEditor.matchHighlightBorder",{dark:null,light:null,hcDark:Gi,hcLight:Gi},v("peekViewEditorMatchHighlightBorder","Match highlight border in the peek view editor."));function bd(n){return n&&typeof n.getEditorType=="function"?n.getEditorType()===EE.ICodeEditor:!1}function NK(n){return n&&typeof n.getEditorType=="function"?n.getEditorType()===EE.IDiffEditor:!1}function BJe(n){return!!n&&typeof n=="object"&&typeof n.onDidChangeActiveEditor=="function"}function a_e(n){return bd(n)?n:NK(n)?n.getModifiedEditor():BJe(n)&&bd(n.activeCodeEditor)?n.activeCodeEditor:null}class WJe{get templateId(){return this.renderer.templateId}constructor(e,t){this.renderer=e,this.modelProvider=t}renderTemplate(e){return{data:this.renderer.renderTemplate(e),disposable:pe.None}}renderElement(e,t,i,s){var r;if((r=i.disposable)===null||r===void 0||r.dispose(),!i.data)return;const o=this.modelProvider();if(o.isResolved(e))return this.renderer.renderElement(o.get(e),e,i.data,s);const a=new es,l=o.resolve(e,a.token);i.disposable={dispose:()=>a.cancel()},this.renderer.renderPlaceholder(e,i.data),l.then(c=>this.renderer.renderElement(c,e,i.data,s))}disposeTemplate(e){e.disposable&&(e.disposable.dispose(),e.disposable=void 0),e.data&&(this.renderer.disposeTemplate(e.data),e.data=void 0)}}class VJe{constructor(e,t){this.modelProvider=e,this.accessibilityProvider=t}getWidgetAriaLabel(){return this.accessibilityProvider.getWidgetAriaLabel()}getAriaLabel(e){const t=this.modelProvider();return t.isResolved(e)?this.accessibilityProvider.getAriaLabel(t.get(e)):null}}function HJe(n,e){return{...e,accessibilityProvider:e.accessibilityProvider&&new VJe(n,e.accessibilityProvider)}}class $Je{constructor(e,t,i,s,r={}){const o=()=>this.model,a=s.map(l=>new WJe(l,o));this.list=new Ac(e,t,i,a,HJe(o,r))}updateOptions(e){this.list.updateOptions(e)}getHTMLElement(){return this.list.getHTMLElement()}get onDidFocus(){return this.list.onDidFocus}get widget(){return this.list}get onDidDispose(){return this.list.onDidDispose}get onMouseDblClick(){return Ve.map(this.list.onMouseDblClick,({element:e,index:t,browserEvent:i})=>({element:e===void 0?void 0:this._model.get(e),index:t,browserEvent:i}))}get onPointer(){return Ve.map(this.list.onPointer,({element:e,index:t,browserEvent:i})=>({element:e===void 0?void 0:this._model.get(e),index:t,browserEvent:i}))}get onDidChangeSelection(){return Ve.map(this.list.onDidChangeSelection,({elements:e,indexes:t,browserEvent:i})=>({elements:e.map(s=>this._model.get(s)),indexes:t,browserEvent:i}))}get model(){return this._model}set model(e){this._model=e,this.list.splice(0,this.list.length,Zr(e.length))}getFocus(){return this.list.getFocus()}getSelection(){return this.list.getSelection()}getSelectedElements(){return this.getSelection().map(e=>this.model.get(e))}style(e){this.list.style(e)}dispose(){this.list.dispose()}}const zJe={separatorBorder:me.transparent};class l_e{set size(e){this._size=e}get size(){return this._size}get visible(){return typeof this._cachedVisibleSize>"u"}setVisible(e,t){var i,s;if(e!==this.visible){e?(this.size=qo(this._cachedVisibleSize,this.viewMinimumSize,this.viewMaximumSize),this._cachedVisibleSize=void 0):(this._cachedVisibleSize=typeof t=="number"?t:this.size,this.size=0),this.container.classList.toggle("visible",e);try{(s=(i=this.view).setVisible)===null||s===void 0||s.call(i,e)}catch(r){console.error("Splitview: Failed to set visible view"),console.error(r)}}}get minimumSize(){return this.visible?this.view.minimumSize:0}get viewMinimumSize(){return this.view.minimumSize}get maximumSize(){return this.visible?this.view.maximumSize:0}get viewMaximumSize(){return this.view.maximumSize}get priority(){return this.view.priority}get proportionalLayout(){var e;return(e=this.view.proportionalLayout)!==null&&e!==void 0?e:!0}get snap(){return!!this.view.snap}set enabled(e){this.container.style.pointerEvents=e?"":"none"}constructor(e,t,i,s){this.container=e,this.view=t,this.disposable=s,this._cachedVisibleSize=void 0,typeof i=="number"?(this._size=i,this._cachedVisibleSize=void 0,e.classList.add("visible")):(this._size=0,this._cachedVisibleSize=i.cachedVisibleSize)}layout(e,t){this.layoutContainer(e);try{this.view.layout(this.size,e,t)}catch(i){console.error("Splitview: Failed to layout view"),console.error(i)}}dispose(){this.disposable.dispose()}}class UJe extends l_e{layoutContainer(e){this.container.style.top=`${e}px`,this.container.style.height=`${this.size}px`}}class jJe extends l_e{layoutContainer(e){this.container.style.left=`${e}px`,this.container.style.width=`${this.size}px`}}var Zd;(function(n){n[n.Idle=0]="Idle",n[n.Busy=1]="Busy"})(Zd||(Zd={}));var FP;(function(n){n.Distribute={type:"distribute"};function e(s){return{type:"split",index:s}}n.Split=e;function t(s){return{type:"auto",index:s}}n.Auto=t;function i(s){return{type:"invisible",cachedVisibleSize:s}}n.Invisible=i})(FP||(FP={}));class c_e extends pe{get orthogonalStartSash(){return this._orthogonalStartSash}get orthogonalEndSash(){return this._orthogonalEndSash}get startSnappingEnabled(){return this._startSnappingEnabled}get endSnappingEnabled(){return this._endSnappingEnabled}set orthogonalStartSash(e){for(const t of this.sashItems)t.sash.orthogonalStartSash=e;this._orthogonalStartSash=e}set orthogonalEndSash(e){for(const t of this.sashItems)t.sash.orthogonalEndSash=e;this._orthogonalEndSash=e}set startSnappingEnabled(e){this._startSnappingEnabled!==e&&(this._startSnappingEnabled=e,this.updateSashEnablement())}set endSnappingEnabled(e){this._endSnappingEnabled!==e&&(this._endSnappingEnabled=e,this.updateSashEnablement())}constructor(e,t={}){var i,s,r,o,a;super(),this.size=0,this._contentSize=0,this.proportions=void 0,this.viewItems=[],this.sashItems=[],this.state=Zd.Idle,this._onDidSashChange=this._register(new ue),this._onDidSashReset=this._register(new ue),this._startSnappingEnabled=!0,this._endSnappingEnabled=!0,this.onDidSashChange=this._onDidSashChange.event,this.onDidSashReset=this._onDidSashReset.event,this.orientation=(i=t.orientation)!==null&&i!==void 0?i:0,this.inverseAltBehavior=(s=t.inverseAltBehavior)!==null&&s!==void 0?s:!1,this.proportionalLayout=(r=t.proportionalLayout)!==null&&r!==void 0?r:!0,this.getSashOrthogonalSize=t.getSashOrthogonalSize,this.el=document.createElement("div"),this.el.classList.add("monaco-split-view2"),this.el.classList.add(this.orientation===0?"vertical":"horizontal"),e.appendChild(this.el),this.sashContainer=Le(this.el,Te(".sash-container")),this.viewContainer=Te(".split-view-container"),this.scrollable=this._register(new PC({forceIntegerValues:!0,smoothScrollDuration:125,scheduleAtNextAnimationFrame:c=>ua(pt(this.el),c)})),this.scrollableElement=this._register(new HO(this.viewContainer,{vertical:this.orientation===0?(o=t.scrollbarVisibility)!==null&&o!==void 0?o:1:2,horizontal:this.orientation===1?(a=t.scrollbarVisibility)!==null&&a!==void 0?a:1:2},this.scrollable));const l=this._register(new Ht(this.viewContainer,"scroll")).event;this._register(l(c=>{const u=this.scrollableElement.getScrollPosition(),h=Math.abs(this.viewContainer.scrollLeft-u.scrollLeft)<=1?void 0:this.viewContainer.scrollLeft,d=Math.abs(this.viewContainer.scrollTop-u.scrollTop)<=1?void 0:this.viewContainer.scrollTop;(h!==void 0||d!==void 0)&&this.scrollableElement.setScrollPosition({scrollLeft:h,scrollTop:d})})),this.onDidScroll=this.scrollableElement.onScroll,this._register(this.onDidScroll(c=>{c.scrollTopChanged&&(this.viewContainer.scrollTop=c.scrollTop),c.scrollLeftChanged&&(this.viewContainer.scrollLeft=c.scrollLeft)})),Le(this.el,this.scrollableElement.getDomNode()),this.style(t.styles||zJe),t.descriptor&&(this.size=t.descriptor.size,t.descriptor.views.forEach((c,u)=>{const h=ea(c.visible)||c.visible?c.size:{type:"invisible",cachedVisibleSize:c.size},d=c.view;this.doAddView(d,h,u,!0)}),this._contentSize=this.viewItems.reduce((c,u)=>c+u.size,0),this.saveProportions())}style(e){e.separatorBorder.isTransparent()?(this.el.classList.remove("separator-border"),this.el.style.removeProperty("--separator-border")):(this.el.classList.add("separator-border"),this.el.style.setProperty("--separator-border",e.separatorBorder.toString()))}addView(e,t,i=this.viewItems.length,s){this.doAddView(e,t,i,s)}layout(e,t){const i=Math.max(this.size,this._contentSize);if(this.size=e,this.layoutContext=t,this.proportions){let s=0;for(let r=0;r<this.viewItems.length;r++){const o=this.viewItems[r],a=this.proportions[r];typeof a=="number"?s+=a:e-=o.size}for(let r=0;r<this.viewItems.length;r++){const o=this.viewItems[r],a=this.proportions[r];typeof a=="number"&&s>0&&(o.size=qo(Math.round(a*e/s),o.minimumSize,o.maximumSize))}}else{const s=Zr(this.viewItems.length),r=s.filter(a=>this.viewItems[a].priority===1),o=s.filter(a=>this.viewItems[a].priority===2);this.resize(this.viewItems.length-1,e-i,void 0,r,o)}this.distributeEmptySpace(),this.layoutViews()}saveProportions(){this.proportionalLayout&&this._contentSize>0&&(this.proportions=this.viewItems.map(e=>e.proportionalLayout&&e.visible?e.size/this._contentSize:void 0))}onSashStart({sash:e,start:t,alt:i}){for(const a of this.viewItems)a.enabled=!1;const s=this.sashItems.findIndex(a=>a.sash===e),r=_c(Ce(this.el.ownerDocument.body,"keydown",a=>o(this.sashDragState.current,a.altKey)),Ce(this.el.ownerDocument.body,"keyup",()=>o(this.sashDragState.current,!1))),o=(a,l)=>{const c=this.viewItems.map(g=>g.size);let u=Number.NEGATIVE_INFINITY,h=Number.POSITIVE_INFINITY;if(this.inverseAltBehavior&&(l=!l),l)if(s===this.sashItems.length-1){const p=this.viewItems[s];u=(p.minimumSize-p.size)/2,h=(p.maximumSize-p.size)/2}else{const p=this.viewItems[s+1];u=(p.size-p.maximumSize)/2,h=(p.size-p.minimumSize)/2}let d,f;if(!l){const g=Zr(s,-1),p=Zr(s+1,this.viewItems.length),m=g.reduce((k,x)=>k+(this.viewItems[x].minimumSize-c[x]),0),_=g.reduce((k,x)=>k+(this.viewItems[x].viewMaximumSize-c[x]),0),b=p.length===0?Number.POSITIVE_INFINITY:p.reduce((k,x)=>k+(c[x]-this.viewItems[x].minimumSize),0),y=p.length===0?Number.NEGATIVE_INFINITY:p.reduce((k,x)=>k+(c[x]-this.viewItems[x].viewMaximumSize),0),w=Math.max(m,y),S=Math.min(b,_),E=this.findFirstSnapIndex(g),L=this.findFirstSnapIndex(p);if(typeof E=="number"){const k=this.viewItems[E],x=Math.floor(k.viewMinimumSize/2);d={index:E,limitDelta:k.visible?w-x:w+x,size:k.size}}if(typeof L=="number"){const k=this.viewItems[L],x=Math.floor(k.viewMinimumSize/2);f={index:L,limitDelta:k.visible?S+x:S-x,size:k.size}}}this.sashDragState={start:a,current:a,index:s,sizes:c,minDelta:u,maxDelta:h,alt:l,snapBefore:d,snapAfter:f,disposable:r}};o(t,i)}onSashChange({current:e}){const{index:t,start:i,sizes:s,alt:r,minDelta:o,maxDelta:a,snapBefore:l,snapAfter:c}=this.sashDragState;this.sashDragState.current=e;const u=e-i,h=this.resize(t,u,s,void 0,void 0,o,a,l,c);if(r){const d=t===this.sashItems.length-1,f=this.viewItems.map(y=>y.size),g=d?t:t+1,p=this.viewItems[g],m=p.size-p.maximumSize,_=p.size-p.minimumSize,b=d?t-1:t+1;this.resize(b,-h,f,void 0,void 0,m,_)}this.distributeEmptySpace(),this.layoutViews()}onSashEnd(e){this._onDidSashChange.fire(e),this.sashDragState.disposable.dispose(),this.saveProportions();for(const t of this.viewItems)t.enabled=!0}onViewChange(e,t){const i=this.viewItems.indexOf(e);i<0||i>=this.viewItems.length||(t=typeof t=="number"?t:e.size,t=qo(t,e.minimumSize,e.maximumSize),this.inverseAltBehavior&&i>0?(this.resize(i-1,Math.floor((e.size-t)/2)),this.distributeEmptySpace(),this.layoutViews()):(e.size=t,this.relayout([i],void 0)))}resizeView(e,t){if(!(e<0||e>=this.viewItems.length)){if(this.state!==Zd.Idle)throw new Error("Cant modify splitview");this.state=Zd.Busy;try{const i=Zr(this.viewItems.length).filter(a=>a!==e),s=[...i.filter(a=>this.viewItems[a].priority===1),e],r=i.filter(a=>this.viewItems[a].priority===2),o=this.viewItems[e];t=Math.round(t),t=qo(t,o.minimumSize,Math.min(o.maximumSize,this.size)),o.size=t,this.relayout(s,r)}finally{this.state=Zd.Idle}}}distributeViewSizes(){const e=[];let t=0;for(const a of this.viewItems)a.maximumSize-a.minimumSize>0&&(e.push(a),t+=a.size);const i=Math.floor(t/e.length);for(const a of e)a.size=qo(i,a.minimumSize,a.maximumSize);const s=Zr(this.viewItems.length),r=s.filter(a=>this.viewItems[a].priority===1),o=s.filter(a=>this.viewItems[a].priority===2);this.relayout(r,o)}getViewSize(e){return e<0||e>=this.viewItems.length?-1:this.viewItems[e].size}doAddView(e,t,i=this.viewItems.length,s){if(this.state!==Zd.Idle)throw new Error("Cant modify splitview");this.state=Zd.Busy;try{const r=Te(".split-view-view");i===this.viewItems.length?this.viewContainer.appendChild(r):this.viewContainer.insertBefore(r,this.viewContainer.children.item(i));const o=e.onDidChange(d=>this.onViewChange(u,d)),a=st(()=>this.viewContainer.removeChild(r)),l=_c(o,a);let c;typeof t=="number"?c=t:(t.type==="auto"&&(this.areViewsDistributed()?t={type:"distribute"}:t={type:"split",index:t.index}),t.type==="split"?c=this.getViewSize(t.index)/2:t.type==="invisible"?c={cachedVisibleSize:t.cachedVisibleSize}:c=e.minimumSize);const u=this.orientation===0?new UJe(r,e,c,l):new jJe(r,e,c,l);if(this.viewItems.splice(i,0,u),this.viewItems.length>1){const d={orthogonalStartSash:this.orthogonalStartSash,orthogonalEndSash:this.orthogonalEndSash},f=this.orientation===0?new wr(this.sashContainer,{getHorizontalSashTop:k=>this.getSashPosition(k),getHorizontalSashWidth:this.getSashOrthogonalSize},{...d,orientation:1}):new wr(this.sashContainer,{getVerticalSashLeft:k=>this.getSashPosition(k),getVerticalSashHeight:this.getSashOrthogonalSize},{...d,orientation:0}),g=this.orientation===0?k=>({sash:f,start:k.startY,current:k.currentY,alt:k.altKey}):k=>({sash:f,start:k.startX,current:k.currentX,alt:k.altKey}),m=Ve.map(f.onDidStart,g)(this.onSashStart,this),b=Ve.map(f.onDidChange,g)(this.onSashChange,this),w=Ve.map(f.onDidEnd,()=>this.sashItems.findIndex(k=>k.sash===f))(this.onSashEnd,this),S=f.onDidReset(()=>{const k=this.sashItems.findIndex(P=>P.sash===f),x=Zr(k,-1),I=Zr(k+1,this.viewItems.length),N=this.findFirstSnapIndex(x),T=this.findFirstSnapIndex(I);typeof N=="number"&&!this.viewItems[N].visible||typeof T=="number"&&!this.viewItems[T].visible||this._onDidSashReset.fire(k)}),E=_c(m,b,w,S,f),L={sash:f,disposable:E};this.sashItems.splice(i-1,0,L)}r.appendChild(e.element);let h;typeof t!="number"&&t.type==="split"&&(h=[t.index]),s||this.relayout([i],h),!s&&typeof t!="number"&&t.type==="distribute"&&this.distributeViewSizes()}finally{this.state=Zd.Idle}}relayout(e,t){const i=this.viewItems.reduce((s,r)=>s+r.size,0);this.resize(this.viewItems.length-1,this.size-i,void 0,e,t),this.distributeEmptySpace(),this.layoutViews(),this.saveProportions()}resize(e,t,i=this.viewItems.map(u=>u.size),s,r,o=Number.NEGATIVE_INFINITY,a=Number.POSITIVE_INFINITY,l,c){if(e<0||e>=this.viewItems.length)return 0;const u=Zr(e,-1),h=Zr(e+1,this.viewItems.length);if(r)for(const L of r)I5(u,L),I5(h,L);if(s)for(const L of s)JD(u,L),JD(h,L);const d=u.map(L=>this.viewItems[L]),f=u.map(L=>i[L]),g=h.map(L=>this.viewItems[L]),p=h.map(L=>i[L]),m=u.reduce((L,k)=>L+(this.viewItems[k].minimumSize-i[k]),0),_=u.reduce((L,k)=>L+(this.viewItems[k].maximumSize-i[k]),0),b=h.length===0?Number.POSITIVE_INFINITY:h.reduce((L,k)=>L+(i[k]-this.viewItems[k].minimumSize),0),y=h.length===0?Number.NEGATIVE_INFINITY:h.reduce((L,k)=>L+(i[k]-this.viewItems[k].maximumSize),0),w=Math.max(m,y,o),S=Math.min(b,_,a);let E=!1;if(l){const L=this.viewItems[l.index],k=t>=l.limitDelta;E=k!==L.visible,L.setVisible(k,l.size)}if(!E&&c){const L=this.viewItems[c.index],k=t<c.limitDelta;E=k!==L.visible,L.setVisible(k,c.size)}if(E)return this.resize(e,t,i,s,r,o,a);t=qo(t,w,S);for(let L=0,k=t;L<d.length;L++){const x=d[L],I=qo(f[L]+k,x.minimumSize,x.maximumSize),N=I-f[L];k-=N,x.size=I}for(let L=0,k=t;L<g.length;L++){const x=g[L],I=qo(p[L]-k,x.minimumSize,x.maximumSize),N=I-p[L];k+=N,x.size=I}return t}distributeEmptySpace(e){const t=this.viewItems.reduce((a,l)=>a+l.size,0);let i=this.size-t;const s=Zr(this.viewItems.length-1,-1),r=s.filter(a=>this.viewItems[a].priority===1),o=s.filter(a=>this.viewItems[a].priority===2);for(const a of o)I5(s,a);for(const a of r)JD(s,a);typeof e=="number"&&JD(s,e);for(let a=0;i!==0&&a<s.length;a++){const l=this.viewItems[s[a]],c=qo(l.size+i,l.minimumSize,l.maximumSize),u=c-l.size;i-=u,l.size=c}}layoutViews(){this._contentSize=this.viewItems.reduce((t,i)=>t+i.size,0);let e=0;for(const t of this.viewItems)t.layout(e,this.layoutContext),e+=t.size;this.sashItems.forEach(t=>t.sash.layout()),this.updateSashEnablement(),this.updateScrollableElement()}updateScrollableElement(){this.orientation===0?this.scrollableElement.setScrollDimensions({height:this.size,scrollHeight:this._contentSize}):this.scrollableElement.setScrollDimensions({width:this.size,scrollWidth:this._contentSize})}updateSashEnablement(){let e=!1;const t=this.viewItems.map(l=>e=l.size-l.minimumSize>0||e);e=!1;const i=this.viewItems.map(l=>e=l.maximumSize-l.size>0||e),s=[...this.viewItems].reverse();e=!1;const r=s.map(l=>e=l.size-l.minimumSize>0||e).reverse();e=!1;const o=s.map(l=>e=l.maximumSize-l.size>0||e).reverse();let a=0;for(let l=0;l<this.sashItems.length;l++){const{sash:c}=this.sashItems[l],u=this.viewItems[l];a+=u.size;const h=!(t[l]&&o[l+1]),d=!(i[l]&&r[l+1]);if(h&&d){const f=Zr(l,-1),g=Zr(l+1,this.viewItems.length),p=this.findFirstSnapIndex(f),m=this.findFirstSnapIndex(g),_=typeof p=="number"&&!this.viewItems[p].visible,b=typeof m=="number"&&!this.viewItems[m].visible;_&&r[l]&&(a>0||this.startSnappingEnabled)?c.state=1:b&&t[l]&&(a<this._contentSize||this.endSnappingEnabled)?c.state=2:c.state=0}else h&&!d?c.state=1:!h&&d?c.state=2:c.state=3}}getSashPosition(e){let t=0;for(let i=0;i<this.sashItems.length;i++)if(t+=this.viewItems[i].size,this.sashItems[i].sash===e)return t;return 0}findFirstSnapIndex(e){for(const t of e){const i=this.viewItems[t];if(i.visible&&i.snap)return t}for(const t of e){const i=this.viewItems[t];if(i.visible&&i.maximumSize-i.minimumSize>0)return;if(!i.visible&&i.snap)return t}}areViewsDistributed(){let e,t;for(const i of this.viewItems)if(e=e===void 0?i.size:Math.min(e,i.size),t=t===void 0?i.size:Math.max(t,i.size),t-e>2)return!1;return!0}dispose(){var e;(e=this.sashDragState)===null||e===void 0||e.disposable.dispose(),yi(this.viewItems),this.viewItems=[],this.sashItems.forEach(t=>t.disposable.dispose()),this.sashItems=[],super.dispose()}}class $E{constructor(e,t,i){this.columns=e,this.getColumnSize=i,this.templateId=$E.TemplateId,this.renderedTemplates=new Set;const s=new Map(t.map(r=>[r.templateId,r]));this.renderers=[];for(const r of e){const o=s.get(r.templateId);if(!o)throw new Error(`Table cell renderer for template id ${r.templateId} not found.`);this.renderers.push(o)}}renderTemplate(e){const t=Le(e,Te(".monaco-table-tr")),i=[],s=[];for(let o=0;o<this.columns.length;o++){const a=this.renderers[o],l=Le(t,Te(".monaco-table-td",{"data-col-index":o}));l.style.width=`${this.getColumnSize(o)}px`,i.push(l),s.push(a.renderTemplate(l))}const r={container:e,cellContainers:i,cellTemplateData:s};return this.renderedTemplates.add(r),r}renderElement(e,t,i,s){for(let r=0;r<this.columns.length;r++){const a=this.columns[r].project(e);this.renderers[r].renderElement(a,t,i.cellTemplateData[r],s)}}disposeElement(e,t,i,s){for(let r=0;r<this.columns.length;r++){const o=this.renderers[r];if(o.disposeElement){const l=this.columns[r].project(e);o.disposeElement(l,t,i.cellTemplateData[r],s)}}}disposeTemplate(e){for(let t=0;t<this.columns.length;t++)this.renderers[t].disposeTemplate(e.cellTemplateData[t]);ir(e.container),this.renderedTemplates.delete(e)}layoutColumn(e,t){for(const{cellContainers:i}of this.renderedTemplates)i[e].style.width=`${t}px`}}$E.TemplateId="row";function qJe(n){return{getHeight(e){return n.getHeight(e)},getTemplateId(){return $E.TemplateId}}}class KJe{get minimumSize(){var e;return(e=this.column.minimumWidth)!==null&&e!==void 0?e:120}get maximumSize(){var e;return(e=this.column.maximumWidth)!==null&&e!==void 0?e:Number.POSITIVE_INFINITY}get onDidChange(){var e;return(e=this.column.onDidChangeWidthConstraints)!==null&&e!==void 0?e:Ve.None}constructor(e,t){this.column=e,this.index=t,this._onDidLayout=new ue,this.onDidLayout=this._onDidLayout.event,this.element=Te(".monaco-table-th",{"data-col-index":t,title:e.tooltip},e.label)}layout(e){this._onDidLayout.fire([this.index,e])}}class m2{get onDidChangeFocus(){return this.list.onDidChangeFocus}get onDidChangeSelection(){return this.list.onDidChangeSelection}get onDidScroll(){return this.list.onDidScroll}get onMouseDblClick(){return this.list.onMouseDblClick}get onPointer(){return this.list.onPointer}get onDidFocus(){return this.list.onDidFocus}get scrollTop(){return this.list.scrollTop}set scrollTop(e){this.list.scrollTop=e}get scrollHeight(){return this.list.scrollHeight}get renderHeight(){return this.list.renderHeight}get onDidDispose(){return this.list.onDidDispose}constructor(e,t,i,s,r,o){this.virtualDelegate=i,this.domId=`table_id_${++m2.InstanceCount}`,this.disposables=new xe,this.cachedWidth=0,this.cachedHeight=0,this.domNode=Le(t,Te(`.monaco-table.${this.domId}`));const a=s.map((u,h)=>new KJe(u,h)),l={size:a.reduce((u,h)=>u+h.column.weight,0),views:a.map(u=>({size:u.column.weight,view:u}))};this.splitview=this.disposables.add(new c_e(this.domNode,{orientation:1,scrollbarVisibility:2,getSashOrthogonalSize:()=>this.cachedHeight,descriptor:l})),this.splitview.el.style.height=`${i.headerRowHeight}px`,this.splitview.el.style.lineHeight=`${i.headerRowHeight}px`;const c=new $E(s,r,u=>this.splitview.getViewSize(u));this.list=this.disposables.add(new Ac(e,this.domNode,qJe(i),[c],o)),Ve.any(...a.map(u=>u.onDidLayout))(([u,h])=>c.layoutColumn(u,h),null,this.disposables),this.splitview.onDidSashReset(u=>{const h=s.reduce((f,g)=>f+g.weight,0),d=s[u].weight/h*this.cachedWidth;this.splitview.resizeView(u,d)},null,this.disposables),this.styleElement=Fl(this.domNode),this.style(CYe)}updateOptions(e){this.list.updateOptions(e)}splice(e,t,i=[]){this.list.splice(e,t,i)}getHTMLElement(){return this.domNode}style(e){const t=[];t.push(`.monaco-table.${this.domId} > .monaco-split-view2 .monaco-sash.vertical::before { + top: ${this.virtualDelegate.headerRowHeight+1}px; + height: calc(100% - ${this.virtualDelegate.headerRowHeight}px); + }`),this.styleElement.textContent=t.join(` +`),this.list.style(e)}getSelectedElements(){return this.list.getSelectedElements()}getSelection(){return this.list.getSelection()}getFocus(){return this.list.getFocus()}dispose(){this.disposables.dispose()}}m2.InstanceCount=0;class WC extends Tc{constructor(e){super(),this._onChange=this._register(new ue),this.onChange=this._onChange.event,this._onKeyDown=this._register(new ue),this.onKeyDown=this._onKeyDown.event,this._opts=e,this._checked=this._opts.isChecked;const t=["monaco-custom-toggle"];this._opts.icon&&(this._icon=this._opts.icon,t.push(...nt.asClassNameArray(this._icon))),this._opts.actionClassName&&t.push(...this._opts.actionClassName.split(" ")),this._checked&&t.push("checked"),this.domNode=document.createElement("div"),this.domNode.title=this._opts.title,this.domNode.classList.add(...t),this._opts.notFocusable||(this.domNode.tabIndex=0),this.domNode.setAttribute("role","checkbox"),this.domNode.setAttribute("aria-checked",String(this._checked)),this.domNode.setAttribute("aria-label",this._opts.title),this.applyStyles(),this.onclick(this.domNode,i=>{this.enabled&&(this.checked=!this._checked,this._onChange.fire(!1),i.preventDefault())}),this._register(this.ignoreGesture(this.domNode)),this.onkeydown(this.domNode,i=>{if(i.keyCode===10||i.keyCode===3){this.checked=!this._checked,this._onChange.fire(!0),i.preventDefault(),i.stopPropagation();return}this._onKeyDown.fire(i)})}get enabled(){return this.domNode.getAttribute("aria-disabled")!=="true"}focus(){this.domNode.focus()}get checked(){return this._checked}set checked(e){this._checked=e,this.domNode.setAttribute("aria-checked",String(this._checked)),this.domNode.classList.toggle("checked",this._checked),this.applyStyles()}width(){return 22}applyStyles(){this.domNode&&(this.domNode.style.borderColor=this._checked&&this._opts.inputActiveOptionBorder||"",this.domNode.style.color=this._checked&&this._opts.inputActiveOptionForeground||"inherit",this.domNode.style.backgroundColor=this._checked&&this._opts.inputActiveOptionBackground||"")}enable(){this.domNode.setAttribute("aria-disabled",String(!1))}disable(){this.domNode.setAttribute("aria-disabled",String(!0))}}const GJe=v("caseDescription","Match Case"),YJe=v("wordsDescription","Match Whole Word"),ZJe=v("regexDescription","Use Regular Expression");class u_e extends WC{constructor(e){super({icon:Pe.caseSensitive,title:GJe+e.appendTitle,isChecked:e.isChecked,inputActiveOptionBorder:e.inputActiveOptionBorder,inputActiveOptionForeground:e.inputActiveOptionForeground,inputActiveOptionBackground:e.inputActiveOptionBackground})}}class h_e extends WC{constructor(e){super({icon:Pe.wholeWord,title:YJe+e.appendTitle,isChecked:e.isChecked,inputActiveOptionBorder:e.inputActiveOptionBorder,inputActiveOptionForeground:e.inputActiveOptionForeground,inputActiveOptionBackground:e.inputActiveOptionBackground})}}class d_e extends WC{constructor(e){super({icon:Pe.regex,title:ZJe+e.appendTitle,isChecked:e.isChecked,inputActiveOptionBorder:e.inputActiveOptionBorder,inputActiveOptionForeground:e.inputActiveOptionForeground,inputActiveOptionBackground:e.inputActiveOptionBackground})}}class XJe{constructor(e,t=0,i=e.length,s=t-1){this.items=e,this.start=t,this.end=i,this.index=s}current(){return this.index===this.start-1||this.index===this.end?null:this.items[this.index]}next(){return this.index=Math.min(this.index+1,this.end),this.current()}previous(){return this.index=Math.max(this.index-1,this.start-1),this.current()}first(){return this.index=this.start,this.current()}last(){return this.index=this.end-1,this.current()}}class QJe{constructor(e=[],t=10){this._initialize(e),this._limit=t,this._onChange()}getHistory(){return this._elements}add(e){this._history.delete(e),this._history.add(e),this._onChange()}next(){return this._navigator.next()}previous(){return this._currentPosition()!==0?this._navigator.previous():null}current(){return this._navigator.current()}first(){return this._navigator.first()}last(){return this._navigator.last()}isLast(){return this._currentPosition()>=this._elements.length-1}isNowhere(){return this._navigator.current()===null}has(e){return this._history.has(e)}_onChange(){this._reduceToLimit();const e=this._elements;this._navigator=new XJe(e,0,e.length,e.length)}_reduceToLimit(){const e=this._elements;e.length>this._limit&&this._initialize(e.slice(e.length-this._limit))}_currentPosition(){const e=this._navigator.current();return e?this._elements.indexOf(e):-1}_initialize(e){this._history=new Set;for(const t of e)this._history.add(t)}get _elements(){const e=[];return this._history.forEach(t=>e.push(t)),e}}const Ww=Te;let JJe=class extends Tc{constructor(e,t,i){var s;super(),this.state="idle",this.maxHeight=Number.POSITIVE_INFINITY,this._onDidChange=this._register(new ue),this.onDidChange=this._onDidChange.event,this._onDidHeightChange=this._register(new ue),this.onDidHeightChange=this._onDidHeightChange.event,this.contextViewProvider=t,this.options=i,this.message=null,this.placeholder=this.options.placeholder||"",this.tooltip=(s=this.options.tooltip)!==null&&s!==void 0?s:this.placeholder||"",this.ariaLabel=this.options.ariaLabel||"",this.options.validationOptions&&(this.validation=this.options.validationOptions.validation),this.element=Le(e,Ww(".monaco-inputbox.idle"));const r=this.options.flexibleHeight?"textarea":"input",o=Le(this.element,Ww(".ibwrapper"));if(this.input=Le(o,Ww(r+".input.empty")),this.input.setAttribute("autocorrect","off"),this.input.setAttribute("autocapitalize","off"),this.input.setAttribute("spellcheck","false"),this.onfocus(this.input,()=>this.element.classList.add("synthetic-focus")),this.onblur(this.input,()=>this.element.classList.remove("synthetic-focus")),this.options.flexibleHeight){this.maxHeight=typeof this.options.flexibleMaxHeight=="number"?this.options.flexibleMaxHeight:Number.POSITIVE_INFINITY,this.mirror=Le(o,Ww("div.mirror")),this.mirror.innerText=" ",this.scrollableElement=new Ape(this.element,{vertical:1}),this.options.flexibleWidth&&(this.input.setAttribute("wrap","off"),this.mirror.style.whiteSpace="pre",this.mirror.style.wordWrap="initial"),Le(e,this.scrollableElement.getDomNode()),this._register(this.scrollableElement),this._register(this.scrollableElement.onScroll(c=>this.input.scrollTop=c.scrollTop));const a=this._register(new Ht(e.ownerDocument,"selectionchange")),l=Ve.filter(a.event,()=>{const c=e.ownerDocument.getSelection();return(c==null?void 0:c.anchorNode)===o});this._register(l(this.updateScrollDimensions,this)),this._register(this.onDidHeightChange(this.updateScrollDimensions,this))}else this.input.type=this.options.type||"text",this.input.setAttribute("wrap","off");this.ariaLabel&&this.input.setAttribute("aria-label",this.ariaLabel),this.placeholder&&!this.options.showPlaceholderOnFocus&&this.setPlaceHolder(this.placeholder),this.tooltip&&this.setTooltip(this.tooltip),this.oninput(this.input,()=>this.onValueChange()),this.onblur(this.input,()=>this.onBlur()),this.onfocus(this.input,()=>this.onFocus()),this._register(this.ignoreGesture(this.input)),setTimeout(()=>this.updateMirror(),0),this.options.actions&&(this.actionbar=this._register(new Vl(this.element)),this.actionbar.push(this.options.actions,{icon:!0,label:!1})),this.applyStyles()}onBlur(){this._hideMessage(),this.options.showPlaceholderOnFocus&&this.input.setAttribute("placeholder","")}onFocus(){this._showMessage(),this.options.showPlaceholderOnFocus&&this.input.setAttribute("placeholder",this.placeholder||"")}setPlaceHolder(e){this.placeholder=e,this.input.setAttribute("placeholder",e)}setTooltip(e){this.tooltip=e,this.input.title=e}get inputElement(){return this.input}get value(){return this.input.value}set value(e){this.input.value!==e&&(this.input.value=e,this.onValueChange())}get height(){return typeof this.cachedHeight=="number"?this.cachedHeight:M1(this.element)}focus(){this.input.focus()}blur(){this.input.blur()}hasFocus(){return fO(this.input)}select(e=null){this.input.select(),e&&(this.input.setSelectionRange(e.start,e.end),e.end===this.input.value.length&&(this.input.scrollLeft=this.input.scrollWidth))}isSelectionAtEnd(){return this.input.selectionEnd===this.input.value.length&&this.input.selectionStart===this.input.selectionEnd}enable(){this.input.removeAttribute("disabled")}disable(){this.blur(),this.input.disabled=!0,this._hideMessage()}set paddingRight(e){this.input.style.width=`calc(100% - ${e}px)`,this.mirror&&(this.mirror.style.paddingRight=e+"px")}updateScrollDimensions(){if(typeof this.cachedContentHeight!="number"||typeof this.cachedHeight!="number"||!this.scrollableElement)return;const e=this.cachedContentHeight,t=this.cachedHeight,i=this.input.scrollTop;this.scrollableElement.setScrollDimensions({scrollHeight:e,height:t}),this.scrollableElement.setScrollPosition({scrollTop:i})}showMessage(e,t){if(this.state==="open"&&Ya(this.message,e))return;this.message=e,this.element.classList.remove("idle"),this.element.classList.remove("info"),this.element.classList.remove("warning"),this.element.classList.remove("error"),this.element.classList.add(this.classForType(e.type));const i=this.stylesForType(this.message.type);this.element.style.border=`1px solid ${s_(i.border,"transparent")}`,this.message.content&&(this.hasFocus()||t)&&this._showMessage()}hideMessage(){this.message=null,this.element.classList.remove("info"),this.element.classList.remove("warning"),this.element.classList.remove("error"),this.element.classList.add("idle"),this._hideMessage(),this.applyStyles()}validate(){let e=null;return this.validation&&(e=this.validation(this.value),e?(this.inputElement.setAttribute("aria-invalid","true"),this.showMessage(e)):this.inputElement.hasAttribute("aria-invalid")&&(this.inputElement.removeAttribute("aria-invalid"),this.hideMessage())),e==null?void 0:e.type}stylesForType(e){const t=this.options.inputBoxStyles;switch(e){case 1:return{border:t.inputValidationInfoBorder,background:t.inputValidationInfoBackground,foreground:t.inputValidationInfoForeground};case 2:return{border:t.inputValidationWarningBorder,background:t.inputValidationWarningBackground,foreground:t.inputValidationWarningForeground};default:return{border:t.inputValidationErrorBorder,background:t.inputValidationErrorBackground,foreground:t.inputValidationErrorForeground}}}classForType(e){switch(e){case 1:return"info";case 2:return"warning";default:return"error"}}_showMessage(){if(!this.contextViewProvider||!this.message)return;let e;const t=()=>e.style.width=Lo(this.element)+"px";this.contextViewProvider.showContextView({getAnchor:()=>this.element,anchorAlignment:1,render:s=>{var r,o;if(!this.message)return null;e=Le(s,Ww(".monaco-inputbox-container")),t();const a={inline:!0,className:"monaco-inputbox-message"},l=this.message.formatContent?AGe(this.message.content,a):NGe(this.message.content,a);l.classList.add(this.classForType(this.message.type));const c=this.stylesForType(this.message.type);return l.style.backgroundColor=(r=c.background)!==null&&r!==void 0?r:"",l.style.color=(o=c.foreground)!==null&&o!==void 0?o:"",l.style.border=c.border?`1px solid ${c.border}`:"",Le(e,l),null},onHide:()=>{this.state="closed"},layout:t});let i;this.message.type===3?i=v("alertErrorMessage","Error: {0}",this.message.content):this.message.type===2?i=v("alertWarningMessage","Warning: {0}",this.message.content):i=v("alertInfoMessage","Info: {0}",this.message.content),ha(i),this.state="open"}_hideMessage(){this.contextViewProvider&&(this.state==="open"&&this.contextViewProvider.hideContextView(),this.state="idle")}onValueChange(){this._onDidChange.fire(this.value),this.validate(),this.updateMirror(),this.input.classList.toggle("empty",!this.value),this.state==="open"&&this.contextViewProvider&&this.contextViewProvider.layout()}updateMirror(){if(!this.mirror)return;const e=this.value,i=e.charCodeAt(e.length-1)===10?" ":"";(e+i).replace(/\u000c/g,"")?this.mirror.textContent=e+i:this.mirror.innerText=" ",this.layout()}applyStyles(){var e,t,i;const s=this.options.inputBoxStyles,r=(e=s.inputBackground)!==null&&e!==void 0?e:"",o=(t=s.inputForeground)!==null&&t!==void 0?t:"",a=(i=s.inputBorder)!==null&&i!==void 0?i:"";this.element.style.backgroundColor=r,this.element.style.color=o,this.input.style.backgroundColor="inherit",this.input.style.color=o,this.element.style.border=`1px solid ${s_(a,"transparent")}`}layout(){if(!this.mirror)return;const e=this.cachedContentHeight;this.cachedContentHeight=M1(this.mirror),e!==this.cachedContentHeight&&(this.cachedHeight=Math.min(this.cachedContentHeight,this.maxHeight),this.input.style.height=this.cachedHeight+"px",this._onDidHeightChange.fire(this.cachedContentHeight))}insertAtCursor(e){const t=this.inputElement,i=t.selectionStart,s=t.selectionEnd,r=t.value;i!==null&&s!==null&&(this.value=r.substr(0,i)+e+r.substr(s),t.setSelectionRange(i+1,i+1),this.layout())}dispose(){var e;this._hideMessage(),this.message=null,(e=this.actionbar)===null||e===void 0||e.dispose(),super.dispose()}};class f_e extends JJe{constructor(e,t,i){const s=v({key:"history.inputbox.hint.suffix.noparens",comment:['Text is the suffix of an input field placeholder coming after the action the input field performs, this will be used when the input field ends in a closing parenthesis ")", for example "Filter (e.g. text, !exclude)". The character inserted into the final string is ⇅ to represent the up and down arrow keys.']}," or {0} for history","⇅"),r=v({key:"history.inputbox.hint.suffix.inparens",comment:['Text is the suffix of an input field placeholder coming after the action the input field performs, this will be used when the input field does NOT end in a closing parenthesis (eg. "Find"). The character inserted into the final string is ⇅ to represent the up and down arrow keys.']}," ({0} for history)","⇅");super(e,t,i),this._onDidFocus=this._register(new ue),this.onDidFocus=this._onDidFocus.event,this._onDidBlur=this._register(new ue),this.onDidBlur=this._onDidBlur.event,this.history=new QJe(i.history,100);const o=()=>{if(i.showHistoryHint&&i.showHistoryHint()&&!this.placeholder.endsWith(s)&&!this.placeholder.endsWith(r)&&this.history.getHistory().length){const a=this.placeholder.endsWith(")")?s:r,l=this.placeholder+a;i.showPlaceholderOnFocus&&!fO(this.input)?this.placeholder=l:this.setPlaceHolder(l)}};this.observer=new MutationObserver((a,l)=>{a.forEach(c=>{c.target.textContent||o()})}),this.observer.observe(this.input,{attributeFilter:["class"]}),this.onfocus(this.input,()=>o()),this.onblur(this.input,()=>{const a=l=>{if(this.placeholder.endsWith(l)){const c=this.placeholder.slice(0,this.placeholder.length-l.length);return i.showPlaceholderOnFocus?this.placeholder=c:this.setPlaceHolder(c),!0}else return!1};a(r)||a(s)})}dispose(){super.dispose(),this.observer&&(this.observer.disconnect(),this.observer=void 0)}addToHistory(e){this.value&&(e||this.value!==this.getCurrentValue())&&this.history.add(this.value)}isAtLastInHistory(){return this.history.isLast()}isNowhereInHistory(){return this.history.isNowhere()}showNextValue(){this.history.has(this.value)||this.addToHistory();let e=this.getNextValue();e&&(e=e===this.value?this.getNextValue():e),this.value=e??"",Qp(this.value?this.value:v("clearedInput","Cleared Input"))}showPreviousValue(){this.history.has(this.value)||this.addToHistory();let e=this.getPreviousValue();e&&(e=e===this.value?this.getPreviousValue():e),e&&(this.value=e,Qp(this.value))}setPlaceHolder(e){super.setPlaceHolder(e),this.setTooltip(e)}onBlur(){super.onBlur(),this._onDidBlur.fire()}onFocus(){super.onFocus(),this._onDidFocus.fire()}getCurrentValue(){let e=this.history.current();return e||(e=this.history.last(),this.history.next()),e}getPreviousValue(){return this.history.previous()||this.history.first()}getNextValue(){return this.history.next()}}const eet=v("defaultLabel","input");class g_e extends Tc{constructor(e,t,i){super(),this.fixFocusOnOptionClickEnabled=!0,this.imeSessionInProgress=!1,this.additionalTogglesDisposables=this._register(new qs),this.additionalToggles=[],this._onDidOptionChange=this._register(new ue),this.onDidOptionChange=this._onDidOptionChange.event,this._onKeyDown=this._register(new ue),this.onKeyDown=this._onKeyDown.event,this._onMouseDown=this._register(new ue),this.onMouseDown=this._onMouseDown.event,this._onInput=this._register(new ue),this._onKeyUp=this._register(new ue),this._onCaseSensitiveKeyDown=this._register(new ue),this.onCaseSensitiveKeyDown=this._onCaseSensitiveKeyDown.event,this._onRegexKeyDown=this._register(new ue),this.onRegexKeyDown=this._onRegexKeyDown.event,this._lastHighlightFindOptions=0,this.placeholder=i.placeholder||"",this.validation=i.validation,this.label=i.label||eet,this.showCommonFindToggles=!!i.showCommonFindToggles;const s=i.appendCaseSensitiveLabel||"",r=i.appendWholeWordsLabel||"",o=i.appendRegexLabel||"",a=i.history||[],l=!!i.flexibleHeight,c=!!i.flexibleWidth,u=i.flexibleMaxHeight;if(this.domNode=document.createElement("div"),this.domNode.classList.add("monaco-findInput"),this.inputBox=this._register(new f_e(this.domNode,t,{placeholder:this.placeholder||"",ariaLabel:this.label||"",validationOptions:{validation:this.validation},history:a,showHistoryHint:i.showHistoryHint,flexibleHeight:l,flexibleWidth:c,flexibleMaxHeight:u,inputBoxStyles:i.inputBoxStyles})),this.showCommonFindToggles){this.regex=this._register(new d_e({appendTitle:o,isChecked:!1,...i.toggleStyles})),this._register(this.regex.onChange(d=>{this._onDidOptionChange.fire(d),!d&&this.fixFocusOnOptionClickEnabled&&this.inputBox.focus(),this.validate()})),this._register(this.regex.onKeyDown(d=>{this._onRegexKeyDown.fire(d)})),this.wholeWords=this._register(new h_e({appendTitle:r,isChecked:!1,...i.toggleStyles})),this._register(this.wholeWords.onChange(d=>{this._onDidOptionChange.fire(d),!d&&this.fixFocusOnOptionClickEnabled&&this.inputBox.focus(),this.validate()})),this.caseSensitive=this._register(new u_e({appendTitle:s,isChecked:!1,...i.toggleStyles})),this._register(this.caseSensitive.onChange(d=>{this._onDidOptionChange.fire(d),!d&&this.fixFocusOnOptionClickEnabled&&this.inputBox.focus(),this.validate()})),this._register(this.caseSensitive.onKeyDown(d=>{this._onCaseSensitiveKeyDown.fire(d)}));const h=[this.caseSensitive.domNode,this.wholeWords.domNode,this.regex.domNode];this.onkeydown(this.domNode,d=>{if(d.equals(15)||d.equals(17)||d.equals(9)){const f=h.indexOf(this.domNode.ownerDocument.activeElement);if(f>=0){let g=-1;d.equals(17)?g=(f+1)%h.length:d.equals(15)&&(f===0?g=h.length-1:g=f-1),d.equals(9)?(h[f].blur(),this.inputBox.focus()):g>=0&&h[g].focus(),Tt.stop(d,!0)}}})}this.controls=document.createElement("div"),this.controls.className="controls",this.controls.style.display=this.showCommonFindToggles?"":"none",this.caseSensitive&&this.controls.append(this.caseSensitive.domNode),this.wholeWords&&this.controls.appendChild(this.wholeWords.domNode),this.regex&&this.controls.appendChild(this.regex.domNode),this.setAdditionalToggles(i==null?void 0:i.additionalToggles),this.controls&&this.domNode.appendChild(this.controls),e==null||e.appendChild(this.domNode),this._register(Ce(this.inputBox.inputElement,"compositionstart",h=>{this.imeSessionInProgress=!0})),this._register(Ce(this.inputBox.inputElement,"compositionend",h=>{this.imeSessionInProgress=!1,this._onInput.fire()})),this.onkeydown(this.inputBox.inputElement,h=>this._onKeyDown.fire(h)),this.onkeyup(this.inputBox.inputElement,h=>this._onKeyUp.fire(h)),this.oninput(this.inputBox.inputElement,h=>this._onInput.fire()),this.onmousedown(this.inputBox.inputElement,h=>this._onMouseDown.fire(h))}get onDidChange(){return this.inputBox.onDidChange}layout(e){this.inputBox.layout(),this.updateInputBoxPadding(e.collapsedFindWidget)}enable(){var e,t,i;this.domNode.classList.remove("disabled"),this.inputBox.enable(),(e=this.regex)===null||e===void 0||e.enable(),(t=this.wholeWords)===null||t===void 0||t.enable(),(i=this.caseSensitive)===null||i===void 0||i.enable();for(const s of this.additionalToggles)s.enable()}disable(){var e,t,i;this.domNode.classList.add("disabled"),this.inputBox.disable(),(e=this.regex)===null||e===void 0||e.disable(),(t=this.wholeWords)===null||t===void 0||t.disable(),(i=this.caseSensitive)===null||i===void 0||i.disable();for(const s of this.additionalToggles)s.disable()}setFocusInputOnOptionClick(e){this.fixFocusOnOptionClickEnabled=e}setEnabled(e){e?this.enable():this.disable()}setAdditionalToggles(e){for(const t of this.additionalToggles)t.domNode.remove();this.additionalToggles=[],this.additionalTogglesDisposables.value=new xe;for(const t of e??[])this.additionalTogglesDisposables.value.add(t),this.controls.appendChild(t.domNode),this.additionalTogglesDisposables.value.add(t.onChange(i=>{this._onDidOptionChange.fire(i),!i&&this.fixFocusOnOptionClickEnabled&&this.inputBox.focus()})),this.additionalToggles.push(t);this.additionalToggles.length>0&&(this.controls.style.display=""),this.updateInputBoxPadding()}updateInputBoxPadding(e=!1){var t,i,s,r,o,a;e?this.inputBox.paddingRight=0:this.inputBox.paddingRight=((i=(t=this.caseSensitive)===null||t===void 0?void 0:t.width())!==null&&i!==void 0?i:0)+((r=(s=this.wholeWords)===null||s===void 0?void 0:s.width())!==null&&r!==void 0?r:0)+((a=(o=this.regex)===null||o===void 0?void 0:o.width())!==null&&a!==void 0?a:0)+this.additionalToggles.reduce((l,c)=>l+c.width(),0)}getValue(){return this.inputBox.value}setValue(e){this.inputBox.value!==e&&(this.inputBox.value=e)}select(){this.inputBox.select()}focus(){this.inputBox.focus()}getCaseSensitive(){var e,t;return(t=(e=this.caseSensitive)===null||e===void 0?void 0:e.checked)!==null&&t!==void 0?t:!1}setCaseSensitive(e){this.caseSensitive&&(this.caseSensitive.checked=e)}getWholeWords(){var e,t;return(t=(e=this.wholeWords)===null||e===void 0?void 0:e.checked)!==null&&t!==void 0?t:!1}setWholeWords(e){this.wholeWords&&(this.wholeWords.checked=e)}getRegex(){var e,t;return(t=(e=this.regex)===null||e===void 0?void 0:e.checked)!==null&&t!==void 0?t:!1}setRegex(e){this.regex&&(this.regex.checked=e,this.validate())}focusOnCaseSensitive(){var e;(e=this.caseSensitive)===null||e===void 0||e.focus()}highlightFindOptions(){this.domNode.classList.remove("highlight-"+this._lastHighlightFindOptions),this._lastHighlightFindOptions=1-this._lastHighlightFindOptions,this.domNode.classList.add("highlight-"+this._lastHighlightFindOptions)}validate(){this.inputBox.validate()}showMessage(e){this.inputBox.showMessage(e)}clearMessage(){this.inputBox.hideMessage()}}var Aa;(function(n){n[n.Expanded=0]="Expanded",n[n.Collapsed=1]="Collapsed",n[n.PreserveOrExpanded=2]="PreserveOrExpanded",n[n.PreserveOrCollapsed=3]="PreserveOrCollapsed"})(Aa||(Aa={}));var U1;(function(n){n[n.Unknown=0]="Unknown",n[n.Twistie=1]="Twistie",n[n.Element=2]="Element",n[n.Filter=3]="Filter"})(U1||(U1={}));class Wa extends Error{constructor(e,t){super(`TreeError [${e}] ${t}`)}}class AK{constructor(e){this.fn=e,this._map=new WeakMap}map(e){let t=this._map.get(e);return t||(t=this.fn(e),this._map.set(e,t)),t}}function PK(n){return typeof n=="object"&&"visibility"in n&&"data"in n}function ix(n){switch(n){case!0:return 1;case!1:return 0;default:return n}}function x3(n){return typeof n.collapsible=="boolean"}class tet{constructor(e,t,i,s={}){this.user=e,this.list=t,this.rootRef=[],this.eventBufferer=new Dj,this._onDidChangeCollapseState=new ue,this.onDidChangeCollapseState=this.eventBufferer.wrapEvent(this._onDidChangeCollapseState.event),this._onDidChangeRenderNodeCount=new ue,this.onDidChangeRenderNodeCount=this.eventBufferer.wrapEvent(this._onDidChangeRenderNodeCount.event),this._onDidSplice=new ue,this.onDidSplice=this._onDidSplice.event,this.refilterDelayer=new Sc(Ufe),this.collapseByDefault=typeof s.collapseByDefault>"u"?!1:s.collapseByDefault,this.filter=s.filter,this.autoExpandSingleChildren=typeof s.autoExpandSingleChildren>"u"?!1:s.autoExpandSingleChildren,this.root={parent:void 0,element:i,children:[],depth:0,visibleChildrenCount:0,visibleChildIndex:-1,collapsible:!1,collapsed:!1,renderNodeCount:0,visibility:1,visible:!0,filterData:void 0}}splice(e,t,i=Vt.empty(),s={}){if(e.length===0)throw new Wa(this.user,"Invalid tree location");s.diffIdentityProvider?this.spliceSmart(s.diffIdentityProvider,e,t,i,s):this.spliceSimple(e,t,i,s)}spliceSmart(e,t,i,s,r,o){var a;s===void 0&&(s=Vt.empty()),o===void 0&&(o=(a=r.diffDepth)!==null&&a!==void 0?a:0);const{parentNode:l}=this.getParentNodeWithListIndex(t);if(!l.lastDiffIds)return this.spliceSimple(t,i,s,r);const c=[...s],u=t[t.length-1],h=new kh({getElements:()=>l.lastDiffIds},{getElements:()=>[...l.children.slice(0,u),...c,...l.children.slice(u+i)].map(m=>e.getId(m.element).toString())}).ComputeDiff(!1);if(h.quitEarly)return l.lastDiffIds=void 0,this.spliceSimple(t,i,c,r);const d=t.slice(0,-1),f=(m,_,b)=>{if(o>0)for(let y=0;y<b;y++)m--,_--,this.spliceSmart(e,[...d,m,0],Number.MAX_SAFE_INTEGER,c[_].children,r,o-1)};let g=Math.min(l.children.length,u+i),p=c.length;for(const m of h.changes.sort((_,b)=>b.originalStart-_.originalStart))f(g,p,g-(m.originalStart+m.originalLength)),g=m.originalStart,p=m.modifiedStart-u,this.spliceSimple([...d,g],m.originalLength,Vt.slice(c,p,p+m.modifiedLength),r);f(g,p,g)}spliceSimple(e,t,i=Vt.empty(),{onDidCreateNode:s,onDidDeleteNode:r,diffIdentityProvider:o}){const{parentNode:a,listIndex:l,revealed:c,visible:u}=this.getParentNodeWithListIndex(e),h=[],d=Vt.map(i,L=>this.createTreeNode(L,a,a.visible?1:0,c,h,s)),f=e[e.length-1],g=a.children.length>0;let p=0;for(let L=f;L>=0&&L<a.children.length;L--){const k=a.children[L];if(k.visible){p=k.visibleChildIndex;break}}const m=[];let _=0,b=0;for(const L of d)m.push(L),b+=L.renderNodeCount,L.visible&&(L.visibleChildIndex=p+_++);const y=OJ(a.children,f,t,m);o?a.lastDiffIds?OJ(a.lastDiffIds,f,t,m.map(L=>o.getId(L.element).toString())):a.lastDiffIds=a.children.map(L=>o.getId(L.element).toString()):a.lastDiffIds=void 0;let w=0;for(const L of y)L.visible&&w++;if(w!==0)for(let L=f+m.length;L<a.children.length;L++){const k=a.children[L];k.visible&&(k.visibleChildIndex-=w)}if(a.visibleChildrenCount+=_-w,c&&u){const L=y.reduce((k,x)=>k+(x.visible?x.renderNodeCount:0),0);this._updateAncestorsRenderNodeCount(a,b-L),this.list.splice(l,L,h)}if(y.length>0&&r){const L=k=>{r(k),k.children.forEach(L)};y.forEach(L)}this._onDidSplice.fire({insertedNodes:m,deletedNodes:y});const S=a.children.length>0;g!==S&&this.setCollapsible(e.slice(0,-1),S);let E=a;for(;E;){if(E.visibility===2){this.refilterDelayer.trigger(()=>this.refilter());break}E=E.parent}}rerender(e){if(e.length===0)throw new Wa(this.user,"Invalid tree location");const{node:t,listIndex:i,revealed:s}=this.getTreeNodeWithListIndex(e);t.visible&&s&&this.list.splice(i,1,[t])}has(e){return this.hasTreeNode(e)}getListIndex(e){const{listIndex:t,visible:i,revealed:s}=this.getTreeNodeWithListIndex(e);return i&&s?t:-1}getListRenderCount(e){return this.getTreeNode(e).renderNodeCount}isCollapsible(e){return this.getTreeNode(e).collapsible}setCollapsible(e,t){const i=this.getTreeNode(e);typeof t>"u"&&(t=!i.collapsible);const s={collapsible:t};return this.eventBufferer.bufferEvents(()=>this._setCollapseState(e,s))}isCollapsed(e){return this.getTreeNode(e).collapsed}setCollapsed(e,t,i){const s=this.getTreeNode(e);typeof t>"u"&&(t=!s.collapsed);const r={collapsed:t,recursive:i||!1};return this.eventBufferer.bufferEvents(()=>this._setCollapseState(e,r))}_setCollapseState(e,t){const{node:i,listIndex:s,revealed:r}=this.getTreeNodeWithListIndex(e),o=this._setListNodeCollapseState(i,s,r,t);if(i!==this.root&&this.autoExpandSingleChildren&&o&&!x3(t)&&i.collapsible&&!i.collapsed&&!t.recursive){let a=-1;for(let l=0;l<i.children.length;l++)if(i.children[l].visible)if(a>-1){a=-1;break}else a=l;a>-1&&this._setCollapseState([...e,a],t)}return o}_setListNodeCollapseState(e,t,i,s){const r=this._setNodeCollapseState(e,s,!1);if(!i||!e.visible||!r)return r;const o=e.renderNodeCount,a=this.updateNodeAfterCollapseChange(e),l=o-(t===-1?0:1);return this.list.splice(t+1,l,a.slice(1)),r}_setNodeCollapseState(e,t,i){let s;if(e===this.root?s=!1:(x3(t)?(s=e.collapsible!==t.collapsible,e.collapsible=t.collapsible):e.collapsible?(s=e.collapsed!==t.collapsed,e.collapsed=t.collapsed):s=!1,s&&this._onDidChangeCollapseState.fire({node:e,deep:i})),!x3(t)&&t.recursive)for(const r of e.children)s=this._setNodeCollapseState(r,t,!0)||s;return s}expandTo(e){this.eventBufferer.bufferEvents(()=>{let t=this.getTreeNode(e);for(;t.parent;)t=t.parent,e=e.slice(0,e.length-1),t.collapsed&&this._setCollapseState(e,{collapsed:!1,recursive:!1})})}refilter(){const e=this.root.renderNodeCount,t=this.updateNodeAfterFilterChange(this.root);this.list.splice(0,e,t),this.refilterDelayer.cancel()}createTreeNode(e,t,i,s,r,o){const a={parent:t,element:e.element,children:[],depth:t.depth+1,visibleChildrenCount:0,visibleChildIndex:-1,collapsible:typeof e.collapsible=="boolean"?e.collapsible:typeof e.collapsed<"u",collapsed:typeof e.collapsed>"u"?this.collapseByDefault:e.collapsed,renderNodeCount:1,visibility:1,visible:!0,filterData:void 0},l=this._filterNode(a,i);a.visibility=l,s&&r.push(a);const c=e.children||Vt.empty(),u=s&&l!==0&&!a.collapsed;let h=0,d=1;for(const f of c){const g=this.createTreeNode(f,a,l,u,r,o);a.children.push(g),d+=g.renderNodeCount,g.visible&&(g.visibleChildIndex=h++)}return a.collapsible=a.collapsible||a.children.length>0,a.visibleChildrenCount=h,a.visible=l===2?h>0:l===1,a.visible?a.collapsed||(a.renderNodeCount=d):(a.renderNodeCount=0,s&&r.pop()),o==null||o(a),a}updateNodeAfterCollapseChange(e){const t=e.renderNodeCount,i=[];return this._updateNodeAfterCollapseChange(e,i),this._updateAncestorsRenderNodeCount(e.parent,i.length-t),i}_updateNodeAfterCollapseChange(e,t){if(e.visible===!1)return 0;if(t.push(e),e.renderNodeCount=1,!e.collapsed)for(const i of e.children)e.renderNodeCount+=this._updateNodeAfterCollapseChange(i,t);return this._onDidChangeRenderNodeCount.fire(e),e.renderNodeCount}updateNodeAfterFilterChange(e){const t=e.renderNodeCount,i=[];return this._updateNodeAfterFilterChange(e,e.visible?1:0,i),this._updateAncestorsRenderNodeCount(e.parent,i.length-t),i}_updateNodeAfterFilterChange(e,t,i,s=!0){let r;if(e!==this.root){if(r=this._filterNode(e,t),r===0)return e.visible=!1,e.renderNodeCount=0,!1;s&&i.push(e)}const o=i.length;e.renderNodeCount=e===this.root?0:1;let a=!1;if(!e.collapsed||r!==0){let l=0;for(const c of e.children)a=this._updateNodeAfterFilterChange(c,r,i,s&&!e.collapsed)||a,c.visible&&(c.visibleChildIndex=l++);e.visibleChildrenCount=l}else e.visibleChildrenCount=0;return e!==this.root&&(e.visible=r===2?a:r===1,e.visibility=r),e.visible?e.collapsed||(e.renderNodeCount+=i.length-o):(e.renderNodeCount=0,s&&i.pop()),this._onDidChangeRenderNodeCount.fire(e),e.visible}_updateAncestorsRenderNodeCount(e,t){if(t!==0)for(;e;)e.renderNodeCount+=t,this._onDidChangeRenderNodeCount.fire(e),e=e.parent}_filterNode(e,t){const i=this.filter?this.filter.filter(e.element,t):1;return typeof i=="boolean"?(e.filterData=void 0,i?1:0):PK(i)?(e.filterData=i.data,ix(i.visibility)):(e.filterData=void 0,ix(i))}hasTreeNode(e,t=this.root){if(!e||e.length===0)return!0;const[i,...s]=e;return i<0||i>t.children.length?!1:this.hasTreeNode(s,t.children[i])}getTreeNode(e,t=this.root){if(!e||e.length===0)return t;const[i,...s]=e;if(i<0||i>t.children.length)throw new Wa(this.user,"Invalid tree location");return this.getTreeNode(s,t.children[i])}getTreeNodeWithListIndex(e){if(e.length===0)return{node:this.root,listIndex:-1,revealed:!0,visible:!1};const{parentNode:t,listIndex:i,revealed:s,visible:r}=this.getParentNodeWithListIndex(e),o=e[e.length-1];if(o<0||o>t.children.length)throw new Wa(this.user,"Invalid tree location");const a=t.children[o];return{node:a,listIndex:i,revealed:s,visible:r&&a.visible}}getParentNodeWithListIndex(e,t=this.root,i=0,s=!0,r=!0){const[o,...a]=e;if(o<0||o>t.children.length)throw new Wa(this.user,"Invalid tree location");for(let l=0;l<o;l++)i+=t.children[l].renderNodeCount;return s=s&&!t.collapsed,r=r&&t.visible,a.length===0?{parentNode:t,listIndex:i,revealed:s,visible:r}:this.getParentNodeWithListIndex(a,t.children[o],i+1,s,r)}getNode(e=[]){return this.getTreeNode(e)}getNodeLocation(e){const t=[];let i=e;for(;i.parent;)t.push(i.parent.children.indexOf(i)),i=i.parent;return t.reverse()}getParentNodeLocation(e){if(e.length!==0)return e.length===1?[]:_7e(e)[0]}getFirstElementChild(e){const t=this.getTreeNode(e);if(t.children.length!==0)return t.children[0].element}}class iet extends PE{constructor(e){super(e.elements.map(t=>t.element)),this.data=e}}function E3(n){return n instanceof PE?new iet(n):n}class net{constructor(e,t){this.modelProvider=e,this.dnd=t,this.autoExpandDisposable=pe.None,this.disposables=new xe}getDragURI(e){return this.dnd.getDragURI(e.element)}getDragLabel(e,t){if(this.dnd.getDragLabel)return this.dnd.getDragLabel(e.map(i=>i.element),t)}onDragStart(e,t){var i,s;(s=(i=this.dnd).onDragStart)===null||s===void 0||s.call(i,E3(e),t)}onDragOver(e,t,i,s,r=!0){const o=this.dnd.onDragOver(E3(e),t&&t.element,i,s),a=this.autoExpandNode!==t;if(a&&(this.autoExpandDisposable.dispose(),this.autoExpandNode=t),typeof t>"u")return o;if(a&&typeof o!="boolean"&&o.autoExpand&&(this.autoExpandDisposable=Gp(()=>{const d=this.modelProvider(),f=d.getNodeLocation(t);d.isCollapsed(f)&&d.setCollapsed(f,!1),this.autoExpandNode=void 0},500,this.disposables)),typeof o=="boolean"||!o.accept||typeof o.bubble>"u"||o.feedback){if(!r){const d=typeof o=="boolean"?o:o.accept,f=typeof o=="boolean"?void 0:o.effect;return{accept:d,effect:f,feedback:[i]}}return o}if(o.bubble===1){const d=this.modelProvider(),f=d.getNodeLocation(t),g=d.getParentNodeLocation(f),p=d.getNode(g),m=g&&d.getListIndex(g);return this.onDragOver(e,p,m,s,!1)}const l=this.modelProvider(),c=l.getNodeLocation(t),u=l.getListIndex(c),h=l.getListRenderCount(c);return{...o,feedback:Zr(u,u+h)}}drop(e,t,i,s){this.autoExpandDisposable.dispose(),this.autoExpandNode=void 0,this.dnd.drop(E3(e),t&&t.element,i,s)}onDragEnd(e){var t,i;(i=(t=this.dnd).onDragEnd)===null||i===void 0||i.call(t,e)}dispose(){this.disposables.dispose(),this.dnd.dispose()}}function set(n,e){return e&&{...e,identityProvider:e.identityProvider&&{getId(t){return e.identityProvider.getId(t.element)}},dnd:e.dnd&&new net(n,e.dnd),multipleSelectionController:e.multipleSelectionController&&{isSelectionSingleChangeEvent(t){return e.multipleSelectionController.isSelectionSingleChangeEvent({...t,element:t.element})},isSelectionRangeChangeEvent(t){return e.multipleSelectionController.isSelectionRangeChangeEvent({...t,element:t.element})}},accessibilityProvider:e.accessibilityProvider&&{...e.accessibilityProvider,getSetSize(t){const i=n(),s=i.getNodeLocation(t),r=i.getParentNodeLocation(s);return i.getNode(r).visibleChildrenCount},getPosInSet(t){return t.visibleChildIndex+1},isChecked:e.accessibilityProvider&&e.accessibilityProvider.isChecked?t=>e.accessibilityProvider.isChecked(t.element):void 0,getRole:e.accessibilityProvider&&e.accessibilityProvider.getRole?t=>e.accessibilityProvider.getRole(t.element):()=>"treeitem",getAriaLabel(t){return e.accessibilityProvider.getAriaLabel(t.element)},getWidgetAriaLabel(){return e.accessibilityProvider.getWidgetAriaLabel()},getWidgetRole:e.accessibilityProvider&&e.accessibilityProvider.getWidgetRole?()=>e.accessibilityProvider.getWidgetRole():()=>"tree",getAriaLevel:e.accessibilityProvider&&e.accessibilityProvider.getAriaLevel?t=>e.accessibilityProvider.getAriaLevel(t.element):t=>t.depth,getActiveDescendantId:e.accessibilityProvider.getActiveDescendantId&&(t=>e.accessibilityProvider.getActiveDescendantId(t.element))},keyboardNavigationLabelProvider:e.keyboardNavigationLabelProvider&&{...e.keyboardNavigationLabelProvider,getKeyboardNavigationLabel(t){return e.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(t.element)}}}}class RK{constructor(e){this.delegate=e}getHeight(e){return this.delegate.getHeight(e.element)}getTemplateId(e){return this.delegate.getTemplateId(e.element)}hasDynamicHeight(e){return!!this.delegate.hasDynamicHeight&&this.delegate.hasDynamicHeight(e.element)}setDynamicHeight(e,t){var i,s;(s=(i=this.delegate).setDynamicHeight)===null||s===void 0||s.call(i,e.element,t)}}var nx;(function(n){n.None="none",n.OnHover="onHover",n.Always="always"})(nx||(nx={}));class ret{get elements(){return this._elements}constructor(e,t=[]){this._elements=t,this.disposables=new xe,this.onDidChange=Ve.forEach(e,i=>this._elements=i,this.disposables)}dispose(){this.disposables.dispose()}}class sx{constructor(e,t,i,s,r,o={}){var a;this.renderer=e,this.modelProvider=t,this.activeNodes=s,this.renderedIndentGuides=r,this.renderedElements=new Map,this.renderedNodes=new Map,this.indent=sx.DefaultIndent,this.hideTwistiesOfChildlessElements=!1,this.shouldRenderIndentGuides=!1,this.activeIndentNodes=new Set,this.indentGuidesDisposable=pe.None,this.disposables=new xe,this.templateId=e.templateId,this.updateOptions(o),Ve.map(i,l=>l.node)(this.onDidChangeNodeTwistieState,this,this.disposables),(a=e.onDidChangeTwistieState)===null||a===void 0||a.call(e,this.onDidChangeTwistieState,this,this.disposables)}updateOptions(e={}){if(typeof e.indent<"u"){const t=qo(e.indent,0,40);if(t!==this.indent){this.indent=t;for(const[i,s]of this.renderedNodes)this.renderTreeElement(i,s)}}if(typeof e.renderIndentGuides<"u"){const t=e.renderIndentGuides!==nx.None;if(t!==this.shouldRenderIndentGuides){this.shouldRenderIndentGuides=t;for(const[i,s]of this.renderedNodes)this._renderIndentGuides(i,s);if(this.indentGuidesDisposable.dispose(),t){const i=new xe;this.activeNodes.onDidChange(this._onDidChangeActiveNodes,this,i),this.indentGuidesDisposable=i,this._onDidChangeActiveNodes(this.activeNodes.elements)}}}typeof e.hideTwistiesOfChildlessElements<"u"&&(this.hideTwistiesOfChildlessElements=e.hideTwistiesOfChildlessElements)}renderTemplate(e){const t=Le(e,Te(".monaco-tl-row")),i=Le(t,Te(".monaco-tl-indent")),s=Le(t,Te(".monaco-tl-twistie")),r=Le(t,Te(".monaco-tl-contents")),o=this.renderer.renderTemplate(r);return{container:e,indent:i,twistie:s,indentGuidesDisposable:pe.None,templateData:o}}renderElement(e,t,i,s){this.renderedNodes.set(e,i),this.renderedElements.set(e.element,e),this.renderTreeElement(e,i),this.renderer.renderElement(e,t,i.templateData,s)}disposeElement(e,t,i,s){var r,o;i.indentGuidesDisposable.dispose(),(o=(r=this.renderer).disposeElement)===null||o===void 0||o.call(r,e,t,i.templateData,s),typeof s=="number"&&(this.renderedNodes.delete(e),this.renderedElements.delete(e.element))}disposeTemplate(e){this.renderer.disposeTemplate(e.templateData)}onDidChangeTwistieState(e){const t=this.renderedElements.get(e);t&&this.onDidChangeNodeTwistieState(t)}onDidChangeNodeTwistieState(e){const t=this.renderedNodes.get(e);t&&(this._onDidChangeActiveNodes(this.activeNodes.elements),this.renderTreeElement(e,t))}renderTreeElement(e,t){const i=sx.DefaultIndent+(e.depth-1)*this.indent;t.twistie.style.paddingLeft=`${i}px`,t.indent.style.width=`${i+this.indent-16}px`,e.collapsible?t.container.setAttribute("aria-expanded",String(!e.collapsed)):t.container.removeAttribute("aria-expanded"),t.twistie.classList.remove(...nt.asClassNameArray(Pe.treeItemExpanded));let s=!1;this.renderer.renderTwistie&&(s=this.renderer.renderTwistie(e.element,t.twistie)),e.collapsible&&(!this.hideTwistiesOfChildlessElements||e.visibleChildrenCount>0)?(s||t.twistie.classList.add(...nt.asClassNameArray(Pe.treeItemExpanded)),t.twistie.classList.add("collapsible"),t.twistie.classList.toggle("collapsed",e.collapsed)):t.twistie.classList.remove("collapsible","collapsed"),this._renderIndentGuides(e,t)}_renderIndentGuides(e,t){if(ir(t.indent),t.indentGuidesDisposable.dispose(),!this.shouldRenderIndentGuides)return;const i=new xe,s=this.modelProvider();for(;;){const r=s.getNodeLocation(e),o=s.getParentNodeLocation(r);if(!o)break;const a=s.getNode(o),l=Te(".indent-guide",{style:`width: ${this.indent}px`});this.activeIndentNodes.has(a)&&l.classList.add("active"),t.indent.childElementCount===0?t.indent.appendChild(l):t.indent.insertBefore(l,t.indent.firstElementChild),this.renderedIndentGuides.add(a,l),i.add(st(()=>this.renderedIndentGuides.delete(a,l))),e=a}t.indentGuidesDisposable=i}_onDidChangeActiveNodes(e){if(!this.shouldRenderIndentGuides)return;const t=new Set,i=this.modelProvider();e.forEach(s=>{const r=i.getNodeLocation(s);try{const o=i.getParentNodeLocation(r);s.collapsible&&s.children.length>0&&!s.collapsed?t.add(s):o&&t.add(i.getNode(o))}catch{}}),this.activeIndentNodes.forEach(s=>{t.has(s)||this.renderedIndentGuides.forEach(s,r=>r.classList.remove("active"))}),t.forEach(s=>{this.activeIndentNodes.has(s)||this.renderedIndentGuides.forEach(s,r=>r.classList.add("active"))}),this.activeIndentNodes=t}dispose(){this.renderedNodes.clear(),this.renderedElements.clear(),this.indentGuidesDisposable.dispose(),yi(this.disposables)}}sx.DefaultIndent=8;class oet{get totalCount(){return this._totalCount}get matchCount(){return this._matchCount}constructor(e,t,i){this.tree=e,this.keyboardNavigationLabelProvider=t,this._filter=i,this._totalCount=0,this._matchCount=0,this._pattern="",this._lowercasePattern="",this.disposables=new xe,e.onWillRefilter(this.reset,this,this.disposables)}filter(e,t){let i=1;if(this._filter){const o=this._filter.filter(e,t);if(typeof o=="boolean"?i=o?1:0:PK(o)?i=ix(o.visibility):i=o,i===0)return!1}if(this._totalCount++,!this._pattern)return this._matchCount++,{data:Lu.Default,visibility:i};const s=this.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(e),r=Array.isArray(s)?s:[s];for(const o of r){const a=o&&o.toString();if(typeof a>"u")return{data:Lu.Default,visibility:i};let l;if(this.tree.findMatchType===U_.Contiguous){const c=a.toLowerCase().indexOf(this._lowercasePattern);if(c>-1){l=[Number.MAX_SAFE_INTEGER,0];for(let u=this._lowercasePattern.length;u>0;u--)l.push(c+u-1)}}else l=F_(this._pattern,this._lowercasePattern,0,a,a.toLowerCase(),0,{firstMatchCanBeWeak:!0,boostFullMatch:!0});if(l)return this._matchCount++,r.length===1?{data:l,visibility:i}:{data:{label:a,score:l},visibility:i}}return this.tree.findMode===Vh.Filter?typeof this.tree.options.defaultFindVisibility=="number"?this.tree.options.defaultFindVisibility:this.tree.options.defaultFindVisibility?this.tree.options.defaultFindVisibility(e):2:{data:Lu.Default,visibility:i}}reset(){this._totalCount=0,this._matchCount=0}dispose(){yi(this.disposables)}}var Vh;(function(n){n[n.Highlight=0]="Highlight",n[n.Filter=1]="Filter"})(Vh||(Vh={}));var U_;(function(n){n[n.Fuzzy=0]="Fuzzy",n[n.Contiguous=1]="Contiguous"})(U_||(U_={}));let aet=class{get pattern(){return this._pattern}get mode(){return this._mode}set mode(e){e!==this._mode&&(this._mode=e,this.widget&&(this.widget.mode=this._mode),this.tree.refilter(),this.render(),this._onDidChangeMode.fire(e))}get matchType(){return this._matchType}set matchType(e){e!==this._matchType&&(this._matchType=e,this.widget&&(this.widget.matchType=this._matchType),this.tree.refilter(),this.render(),this._onDidChangeMatchType.fire(e))}constructor(e,t,i,s,r,o={}){var a,l;this.tree=e,this.view=i,this.filter=s,this.contextViewProvider=r,this.options=o,this._pattern="",this.width=0,this._onDidChangeMode=new ue,this.onDidChangeMode=this._onDidChangeMode.event,this._onDidChangeMatchType=new ue,this.onDidChangeMatchType=this._onDidChangeMatchType.event,this._onDidChangePattern=new ue,this._onDidChangeOpenState=new ue,this.onDidChangeOpenState=this._onDidChangeOpenState.event,this.enabledDisposables=new xe,this.disposables=new xe,this._mode=(a=e.options.defaultFindMode)!==null&&a!==void 0?a:Vh.Highlight,this._matchType=(l=e.options.defaultFindMatchType)!==null&&l!==void 0?l:U_.Fuzzy,t.onDidSplice(this.onDidSpliceModel,this,this.disposables)}updateOptions(e={}){e.defaultFindMode!==void 0&&(this.mode=e.defaultFindMode),e.defaultFindMatchType!==void 0&&(this.matchType=e.defaultFindMatchType)}onDidSpliceModel(){!this.widget||this.pattern.length===0||(this.tree.refilter(),this.render())}render(){var e,t,i,s;const r=this.filter.totalCount>0&&this.filter.matchCount===0;this.pattern&&r?!((e=this.tree.options.showNotFoundMessage)!==null&&e!==void 0)||e?(t=this.widget)===null||t===void 0||t.showMessage({type:2,content:v("not found","No elements found.")}):(i=this.widget)===null||i===void 0||i.showMessage({type:2}):(s=this.widget)===null||s===void 0||s.clearMessage()}shouldAllowFocus(e){return!this.widget||!this.pattern||this._mode===Vh.Filter||this.filter.totalCount>0&&this.filter.matchCount<=1?!0:!Lu.isDefault(e.filterData)}layout(e){var t;this.width=e,(t=this.widget)===null||t===void 0||t.layout(e)}dispose(){this._history=void 0,this._onDidChangePattern.dispose(),this.enabledDisposables.dispose(),this.disposables.dispose()}};function cet(n,e){return n.position===e.position&&n.node.element===e.node.element&&n.startIndex===e.startIndex&&n.height===e.height&&n.endIndex===e.endIndex}class uet extends pe{constructor(e=[]){super(),this.stickyNodes=e}get count(){return this.stickyNodes.length}equal(e){return On(this.stickyNodes,e.stickyNodes,cet)}addDisposable(e){this._register(e)}}let Oie=class extends pe{get firstVisibleNode(){const e=this.view.firstVisibleIndex;if(!(e<0||e>=this.view.length))return this.view.element(e)}constructor(e,t,i,s,r,o={}){super(),this.tree=e,this.model=t,this.view=i,this.treeDelegate=r,this.maxWidgetViewRatio=.4;const a=this.validateStickySettings(o);this.stickyScrollMaxItemCount=a.stickyScrollMaxItemCount,this._widget=this._register(new het(i.getScrollableElement(),i,t,s,r)),this._register(i.onDidScroll(()=>this.update())),this._register(i.onDidChangeContentHeight(()=>this.update())),this._register(e.onDidChangeCollapseState(()=>this.update())),this.update()}update(){const e=this.firstVisibleNode;if(!e||this.tree.scrollTop===0){this._widget.setState(void 0);return}const t=this.findStickyState(e);this._widget.setState(t)}findStickyState(e){const t=[],i=this.view.renderHeight*this.maxWidgetViewRatio;let s=e,r=0,o=this.getNextStickyNode(s,void 0,r);for(;o&&r+o.height<i&&(t.push(o),r+=o.height,!(t.length>=this.stickyScrollMaxItemCount||(s=this.getNextVisibleNode(s),!s)));)o=this.getNextStickyNode(s,o.node,r);return t.length?new uet(t):void 0}getNextVisibleNode(e){const t=this.getNodeIndex(e);return t===-1||t===this.view.length-1?void 0:this.view.element(t+1)}getNextStickyNode(e,t,i){const s=this.getAncestorUnderPrevious(e,t);if(s&&!(s===e&&(!this.nodeIsUncollapsedParent(e)||this.nodeTopAlignsWithStickyNodesBottom(e,i))))return this.createStickyScrollNode(s,i)}nodeTopAlignsWithStickyNodesBottom(e,t){const i=this.getNodeIndex(e),s=this.view.getElementTop(i),r=t;return this.view.scrollTop===s-r}createStickyScrollNode(e,t){const i=this.treeDelegate.getHeight(e),{startIndex:s,endIndex:r}=this.getNodeRange(e),o=this.calculateStickyNodePosition(r,t);return{node:e,position:o,height:i,startIndex:s,endIndex:r}}getAncestorUnderPrevious(e,t=void 0){let i=e,s=this.getParentNode(i);for(;s;){if(s===t)return i;i=s,s=this.getParentNode(i)}if(t===void 0)return i}calculateStickyNodePosition(e,t){let i=this.view.getRelativeTop(e);if(i===null&&this.view.firstVisibleIndex===e&&e+1<this.view.length){const l=this.treeDelegate.getHeight(this.view.element(e)),c=this.view.getRelativeTop(e+1);i=c?c-l/this.view.renderHeight:null}if(i===null)return t;const s=this.view.element(e),r=this.treeDelegate.getHeight(s),o=i*this.view.renderHeight,a=o+r;return t>o&&t<=a?o:t}getParentNode(e){const t=this.model.getNodeLocation(e),i=this.model.getParentNodeLocation(t);return i?this.model.getNode(i):void 0}nodeIsUncollapsedParent(e){const t=this.model.getNodeLocation(e);return this.model.getListRenderCount(t)>1}getNodeIndex(e,t){return t===void 0&&(t=this.model.getNodeLocation(e)),this.model.getListIndex(t)}getNodeRange(e){const t=this.model.getNodeLocation(e),i=this.model.getListIndex(t);if(i<0)throw new Error("Node not found in tree");const s=this.model.getListRenderCount(t),r=i+s-1;return{startIndex:i,endIndex:r}}nodePositionTopBelowWidget(e){const t=[];let i=this.getParentNode(e);for(;i;)t.push(i),i=this.getParentNode(i);let s=0;for(let r=0;r<t.length&&r<this.stickyScrollMaxItemCount;r++)s+=this.treeDelegate.getHeight(t[r]);return s}updateOptions(e={}){const t=this.validateStickySettings(e);this.stickyScrollMaxItemCount!==t.stickyScrollMaxItemCount&&(this.stickyScrollMaxItemCount=t.stickyScrollMaxItemCount,this.update())}validateStickySettings(e){let t=5;return typeof e.stickyScrollMaxItemCount=="number"&&(t=Math.max(e.stickyScrollMaxItemCount,1)),{stickyScrollMaxItemCount:t}}},het=class{constructor(e,t,i,s,r){this.view=t,this.model=i,this.treeRenderers=s,this.treeDelegate=r,this._rootDomNode=document.createElement("div"),this._rootDomNode.classList.add("monaco-tree-sticky-container"),e.appendChild(this._rootDomNode)}setState(e){var t;const i=!!this._previousState&&this._previousState.count>0,s=!!e&&e.count>0;if(!i&&!s||i&&s&&this._previousState.equal(e)||(i!==s&&this.setVisible(s),(t=this._previousState)===null||t===void 0||t.dispose(),this._previousState=e,!s))return;for(let a=e.count-1;a>=0;a--){const l=e.stickyNodes[a],c=a?e.stickyNodes[a-1]:void 0,u=c?c.position+c.height:0,{element:h,disposable:d}=this.createElement(l,u);this._rootDomNode.appendChild(h),e.addDisposable(d)}const r=Te(".monaco-tree-sticky-container-shadow");this._rootDomNode.appendChild(r),e.addDisposable(st(()=>r.remove()));const o=e.stickyNodes[e.count-1];this._rootDomNode.style.height=`${o.position+o.height}px`}createElement(e,t){const i=this.model.getNodeLocation(e.node),s=this.model.getListIndex(i),r=document.createElement("div");r.style.top=`${e.position}px`,r.style.height=`${e.height}px`,r.style.lineHeight=`${e.height}px`,r.classList.add("monaco-tree-sticky-row"),r.classList.add("monaco-list-row"),r.setAttribute("data-index",`${s}`),r.setAttribute("data-parity",s%2===0?"even":"odd"),r.setAttribute("id",this.view.getElementID(s));const o=this.treeDelegate.getTemplateId(e.node),a=this.treeRenderers.find(h=>h.templateId===o);if(!a)throw new Error(`No renderer found for template id ${o}`);const l=new Proxy(e.node,{}),c=a.renderTemplate(r);a.renderElement(l,e.startIndex,c,e.height);const u=st(()=>{a.disposeElement(l,e.startIndex,c,e.height),a.disposeTemplate(c),r.remove()});return{element:r,disposable:u}}setVisible(e){this._rootDomNode.style.display=e?"block":"none"}dispose(){var e;(e=this._previousState)===null||e===void 0||e.dispose(),this._rootDomNode.remove()}};function Fie(n){let e=U1.Unknown;return S5(n.browserEvent.target,"monaco-tl-twistie","monaco-tl-row")?e=U1.Twistie:S5(n.browserEvent.target,"monaco-tl-contents","monaco-tl-row")?e=U1.Element:S5(n.browserEvent.target,"monaco-tree-type-filter","monaco-list")&&(e=U1.Filter),{browserEvent:n.browserEvent,element:n.element?n.element.element:null,target:e}}function mN(n,e){e(n),n.children.forEach(t=>mN(t,e))}class D3{get nodeSet(){return this._nodeSet||(this._nodeSet=this.createNodeSet()),this._nodeSet}constructor(e,t){this.getFirstViewElementWithTrait=e,this.identityProvider=t,this.nodes=[],this._onDidChange=new ue,this.onDidChange=this._onDidChange.event}set(e,t){!(t!=null&&t.__forceEvent)&&On(this.nodes,e)||this._set(e,!1,t)}_set(e,t,i){if(this.nodes=[...e],this.elements=void 0,this._nodeSet=void 0,!t){const s=this;this._onDidChange.fire({get elements(){return s.get()},browserEvent:i})}}get(){return this.elements||(this.elements=this.nodes.map(e=>e.element)),[...this.elements]}getNodes(){return this.nodes}has(e){return this.nodeSet.has(e)}onDidModelSplice({insertedNodes:e,deletedNodes:t}){if(!this.identityProvider){const l=this.createNodeSet(),c=u=>l.delete(u);t.forEach(u=>mN(u,c)),this.set([...l.values()]);return}const i=new Set,s=l=>i.add(this.identityProvider.getId(l.element).toString());t.forEach(l=>mN(l,s));const r=new Map,o=l=>r.set(this.identityProvider.getId(l.element).toString(),l);e.forEach(l=>mN(l,o));const a=[];for(const l of this.nodes){const c=this.identityProvider.getId(l.element).toString();if(!i.has(c))a.push(l);else{const h=r.get(c);h&&h.visible&&a.push(h)}}if(this.nodes.length>0&&a.length===0){const l=this.getFirstViewElementWithTrait();l&&a.push(l)}this._set(a,!0)}createNodeSet(){const e=new Set;for(const t of this.nodes)e.add(t);return e}}class det extends Gme{constructor(e,t,i){super(e),this.tree=t,this.stickyScrollProvider=i}onViewPointer(e){if(Ume(e.browserEvent.target)||xp(e.browserEvent.target)||SS(e.browserEvent.target)||e.browserEvent.isHandledByList)return;const t=e.element;if(!t)return super.onViewPointer(e);if(this.isSelectionRangeChangeEvent(e)||this.isSelectionSingleChangeEvent(e))return super.onViewPointer(e);const i=e.browserEvent.target,s=i.classList.contains("monaco-tl-twistie")||i.classList.contains("monaco-icon-label")&&i.classList.contains("folder-icon")&&e.browserEvent.offsetX<16,r=mYe(e.browserEvent.target);let o=!1;if(r?o=!0:typeof this.tree.expandOnlyOnTwistieClick=="function"?o=this.tree.expandOnlyOnTwistieClick(t.element):o=!!this.tree.expandOnlyOnTwistieClick,r)this.handleStickyScrollMouseEvent(e,t);else{if(o&&!s&&e.browserEvent.detail!==2)return super.onViewPointer(e);if(!this.tree.expandOnDoubleClick&&e.browserEvent.detail===2)return super.onViewPointer(e)}if(t.collapsible&&(!r||s)){const a=this.tree.getNodeLocation(t),l=e.browserEvent.altKey;if(this.tree.setFocus([a]),this.tree.toggleCollapsed(a,l),o&&s){e.browserEvent.isHandledByList=!0;return}}r||super.onViewPointer(e)}handleStickyScrollMouseEvent(e,t){if(gYe(e.browserEvent.target)||pYe(e.browserEvent.target))return;const i=this.stickyScrollProvider();if(!i)throw new Error("Sticky scroll controller not found");const s=this.list.indexOf(t),r=this.list.getElementTop(s),o=i.nodePositionTopBelowWidget(t);this.tree.scrollTop=r-o,this.list.setFocus([s]),this.list.setSelection([s])}onDoubleClick(e){e.browserEvent.target.classList.contains("monaco-tl-twistie")||!this.tree.expandOnDoubleClick||e.browserEvent.isHandledByList||super.onDoubleClick(e)}}class fet extends Ac{constructor(e,t,i,s,r,o,a,l){super(e,t,i,s,l),this.focusTrait=r,this.selectionTrait=o,this.anchorTrait=a}createMouseController(e){return new det(this,e.tree,e.stickyScrollProvider)}splice(e,t,i=[]){if(super.splice(e,t,i),i.length===0)return;const s=[],r=[];let o;i.forEach((a,l)=>{this.focusTrait.has(a)&&s.push(e+l),this.selectionTrait.has(a)&&r.push(e+l),this.anchorTrait.has(a)&&(o=e+l)}),s.length>0&&super.setFocus(Jp([...super.getFocus(),...s])),r.length>0&&super.setSelection(Jp([...super.getSelection(),...r])),typeof o=="number"&&super.setAnchor(o)}setFocus(e,t,i=!1){super.setFocus(e,t),i||this.focusTrait.set(e.map(s=>this.element(s)),t)}setSelection(e,t,i=!1){super.setSelection(e,t),i||this.selectionTrait.set(e.map(s=>this.element(s)),t)}setAnchor(e,t=!1){super.setAnchor(e),t||(typeof e>"u"?this.anchorTrait.set([]):this.anchorTrait.set([this.element(e)]))}}class p_e{get onDidScroll(){return this.view.onDidScroll}get onDidChangeFocus(){return this.eventBufferer.wrapEvent(this.focus.onDidChange)}get onDidChangeSelection(){return this.eventBufferer.wrapEvent(this.selection.onDidChange)}get onMouseDblClick(){return Ve.filter(Ve.map(this.view.onMouseDblClick,Fie),e=>e.target!==U1.Filter)}get onPointer(){return Ve.map(this.view.onPointer,Fie)}get onDidFocus(){return this.view.onDidFocus}get onDidChangeModel(){return Ve.signal(this.model.onDidSplice)}get onDidChangeCollapseState(){return this.model.onDidChangeCollapseState}get findMode(){var e,t;return(t=(e=this.findController)===null||e===void 0?void 0:e.mode)!==null&&t!==void 0?t:Vh.Highlight}set findMode(e){this.findController&&(this.findController.mode=e)}get findMatchType(){var e,t;return(t=(e=this.findController)===null||e===void 0?void 0:e.matchType)!==null&&t!==void 0?t:U_.Fuzzy}set findMatchType(e){this.findController&&(this.findController.matchType=e)}get expandOnDoubleClick(){return typeof this._options.expandOnDoubleClick>"u"?!0:this._options.expandOnDoubleClick}get expandOnlyOnTwistieClick(){return typeof this._options.expandOnlyOnTwistieClick>"u"?!0:this._options.expandOnlyOnTwistieClick}get onDidDispose(){return this.view.onDidDispose}constructor(e,t,i,s,r={}){var o;this._user=e,this._options=r,this.eventBufferer=new Dj,this.onDidChangeFindOpenState=Ve.None,this.disposables=new xe,this._onWillRefilter=new ue,this.onWillRefilter=this._onWillRefilter.event,this._onDidUpdateOptions=new ue,this.treeDelegate=new RK(i);const a=new sJ,l=new sJ,c=this.disposables.add(new ret(l.event)),u=new Yq;this.renderers=s.map(p=>new sx(p,()=>this.model,a.event,c,u,r));for(const p of this.renderers)this.disposables.add(p);let h;r.keyboardNavigationLabelProvider&&(h=new oet(this,r.keyboardNavigationLabelProvider,r.filter),r={...r,filter:h},this.disposables.add(h)),this.focus=new D3(()=>this.view.getFocusedElements()[0],r.identityProvider),this.selection=new D3(()=>this.view.getSelectedElements()[0],r.identityProvider),this.anchor=new D3(()=>this.view.getAnchorElement(),r.identityProvider),this.view=new fet(e,t,this.treeDelegate,this.renderers,this.focus,this.selection,this.anchor,{...set(()=>this.model,r),tree:this,stickyScrollProvider:()=>this.stickyScrollController}),this.model=this.createModel(e,this.view,r),a.input=this.model.onDidChangeCollapseState;const d=Ve.forEach(this.model.onDidSplice,p=>{this.eventBufferer.bufferEvents(()=>{this.focus.onDidModelSplice(p),this.selection.onDidModelSplice(p)})},this.disposables);d(()=>null,null,this.disposables);const f=this.disposables.add(new ue),g=this.disposables.add(new Sc(0));if(this.disposables.add(Ve.any(d,this.focus.onDidChange,this.selection.onDidChange)(()=>{g.trigger(()=>{const p=new Set;for(const m of this.focus.getNodes())p.add(m);for(const m of this.selection.getNodes())p.add(m);f.fire([...p.values()])})})),l.input=f.event,r.keyboardSupport!==!1){const p=Ve.chain(this.view.onKeyDown,m=>m.filter(_=>!xp(_.target)).map(_=>new Ki(_)));Ve.chain(p,m=>m.filter(_=>_.keyCode===15))(this.onLeftArrow,this,this.disposables),Ve.chain(p,m=>m.filter(_=>_.keyCode===17))(this.onRightArrow,this,this.disposables),Ve.chain(p,m=>m.filter(_=>_.keyCode===10))(this.onSpace,this,this.disposables)}if((!((o=r.findWidgetEnabled)!==null&&o!==void 0)||o)&&r.keyboardNavigationLabelProvider&&r.contextViewProvider){const p=this.options.findWidgetStyles?{styles:this.options.findWidgetStyles}:void 0;this.findController=new aet(this,this.model,this.view,h,r.contextViewProvider,p),this.focusNavigationFilter=m=>this.findController.shouldAllowFocus(m),this.onDidChangeFindOpenState=this.findController.onDidChangeOpenState,this.disposables.add(this.findController),this.onDidChangeFindMode=this.findController.onDidChangeMode,this.onDidChangeFindMatchType=this.findController.onDidChangeMatchType}else this.onDidChangeFindMode=Ve.None,this.onDidChangeFindMatchType=Ve.None;r.enableStickyScroll&&(this.stickyScrollController=new Oie(this,this.model,this.view,this.renderers,this.treeDelegate,r)),this.styleElement=Fl(this.view.getHTMLElement()),this.getHTMLElement().classList.toggle("always",this._options.renderIndentGuides===nx.Always)}updateOptions(e={}){var t;this._options={...this._options,...e};for(const i of this.renderers)i.updateOptions(e);this.view.updateOptions(this._options),(t=this.findController)===null||t===void 0||t.updateOptions(e),this.updateStickyScroll(e),this._onDidUpdateOptions.fire(this._options),this.getHTMLElement().classList.toggle("always",this._options.renderIndentGuides===nx.Always)}get options(){return this._options}updateStickyScroll(e){var t;!this.stickyScrollController&&this._options.enableStickyScroll?this.stickyScrollController=new Oie(this,this.model,this.view,this.renderers,this.treeDelegate,this._options):this.stickyScrollController&&!this._options.enableStickyScroll&&(this.stickyScrollController.dispose(),this.stickyScrollController=void 0),(t=this.stickyScrollController)===null||t===void 0||t.updateOptions(e)}getHTMLElement(){return this.view.getHTMLElement()}get scrollTop(){return this.view.scrollTop}set scrollTop(e){this.view.scrollTop=e}get scrollHeight(){return this.view.scrollHeight}get renderHeight(){return this.view.renderHeight}domFocus(){this.view.domFocus()}layout(e,t){var i;this.view.layout(e,t),qp(t)&&((i=this.findController)===null||i===void 0||i.layout(t))}style(e){const t=`.${this.view.domId}`,i=[];e.treeIndentGuidesStroke&&(i.push(`.monaco-list${t}:hover .monaco-tl-indent > .indent-guide, .monaco-list${t}.always .monaco-tl-indent > .indent-guide { border-color: ${e.treeInactiveIndentGuidesStroke}; }`),i.push(`.monaco-list${t} .monaco-tl-indent > .indent-guide.active { border-color: ${e.treeIndentGuidesStroke}; }`)),e.listBackground&&(i.push(`.monaco-list${t} .monaco-scrollable-element .monaco-tree-sticky-container { background-color: ${e.listBackground}; }`),i.push(`.monaco-list${t} .monaco-scrollable-element .monaco-tree-sticky-container .monaco-tree-sticky-row { background-color: ${e.listBackground}; }`)),this.styleElement.textContent=i.join(` +`),this.view.style(e)}getParentElement(e){const t=this.model.getParentNodeLocation(e);return this.model.getNode(t).element}getFirstElementChild(e){return this.model.getFirstElementChild(e)}getNode(e){return this.model.getNode(e)}getNodeLocation(e){return this.model.getNodeLocation(e)}collapse(e,t=!1){return this.model.setCollapsed(e,!0,t)}expand(e,t=!1){return this.model.setCollapsed(e,!1,t)}toggleCollapsed(e,t=!1){return this.model.setCollapsed(e,void 0,t)}isCollapsible(e){return this.model.isCollapsible(e)}setCollapsible(e,t){return this.model.setCollapsible(e,t)}isCollapsed(e){return this.model.isCollapsed(e)}refilter(){this._onWillRefilter.fire(void 0),this.model.refilter()}setSelection(e,t){const i=e.map(r=>this.model.getNode(r));this.selection.set(i,t);const s=e.map(r=>this.model.getListIndex(r)).filter(r=>r>-1);this.view.setSelection(s,t,!0)}getSelection(){return this.selection.get()}setFocus(e,t){const i=e.map(r=>this.model.getNode(r));this.focus.set(i,t);const s=e.map(r=>this.model.getListIndex(r)).filter(r=>r>-1);this.view.setFocus(s,t,!0)}getFocus(){return this.focus.get()}reveal(e,t){this.model.expandTo(e);const i=this.model.getListIndex(e);if(i!==-1)if(!this.stickyScrollController)this.view.reveal(i,t);else{const s=this.stickyScrollController.nodePositionTopBelowWidget(this.getNode(e));this.view.reveal(i,t,s)}}onLeftArrow(e){e.preventDefault(),e.stopPropagation();const t=this.view.getFocusedElements();if(t.length===0)return;const i=t[0],s=this.model.getNodeLocation(i);if(!this.model.setCollapsed(s,!0)){const o=this.model.getParentNodeLocation(s);if(!o)return;const a=this.model.getListIndex(o);this.view.reveal(a),this.view.setFocus([a])}}onRightArrow(e){e.preventDefault(),e.stopPropagation();const t=this.view.getFocusedElements();if(t.length===0)return;const i=t[0],s=this.model.getNodeLocation(i);if(!this.model.setCollapsed(s,!1)){if(!i.children.some(l=>l.visible))return;const[o]=this.view.getFocus(),a=o+1;this.view.reveal(a),this.view.setFocus([a])}}onSpace(e){e.preventDefault(),e.stopPropagation();const t=this.view.getFocusedElements();if(t.length===0)return;const i=t[0],s=this.model.getNodeLocation(i),r=e.browserEvent.altKey;this.model.setCollapsed(s,void 0,r)}dispose(){var e;yi(this.disposables),(e=this.stickyScrollController)===null||e===void 0||e.dispose(),this.view.dispose()}}class MK{constructor(e,t,i={}){this.user=e,this.rootRef=null,this.nodes=new Map,this.nodesByIdentity=new Map,this.model=new tet(e,t,null,i),this.onDidSplice=this.model.onDidSplice,this.onDidChangeCollapseState=this.model.onDidChangeCollapseState,this.onDidChangeRenderNodeCount=this.model.onDidChangeRenderNodeCount,i.sorter&&(this.sorter={compare(s,r){return i.sorter.compare(s.element,r.element)}}),this.identityProvider=i.identityProvider}setChildren(e,t=Vt.empty(),i={}){const s=this.getElementLocation(e);this._setChildren(s,this.preserveCollapseState(t),i)}_setChildren(e,t=Vt.empty(),i){const s=new Set,r=new Set,o=l=>{var c;if(l.element===null)return;const u=l;if(s.add(u.element),this.nodes.set(u.element,u),this.identityProvider){const h=this.identityProvider.getId(u.element).toString();r.add(h),this.nodesByIdentity.set(h,u)}(c=i.onDidCreateNode)===null||c===void 0||c.call(i,u)},a=l=>{var c;if(l.element===null)return;const u=l;if(s.has(u.element)||this.nodes.delete(u.element),this.identityProvider){const h=this.identityProvider.getId(u.element).toString();r.has(h)||this.nodesByIdentity.delete(h)}(c=i.onDidDeleteNode)===null||c===void 0||c.call(i,u)};this.model.splice([...e,0],Number.MAX_VALUE,t,{...i,onDidCreateNode:o,onDidDeleteNode:a})}preserveCollapseState(e=Vt.empty()){return this.sorter&&(e=[...e].sort(this.sorter.compare.bind(this.sorter))),Vt.map(e,t=>{let i=this.nodes.get(t.element);if(!i&&this.identityProvider){const o=this.identityProvider.getId(t.element).toString();i=this.nodesByIdentity.get(o)}if(!i){let o;return typeof t.collapsed>"u"?o=void 0:t.collapsed===Aa.Collapsed||t.collapsed===Aa.PreserveOrCollapsed?o=!0:t.collapsed===Aa.Expanded||t.collapsed===Aa.PreserveOrExpanded?o=!1:o=!!t.collapsed,{...t,children:this.preserveCollapseState(t.children),collapsed:o}}const s=typeof t.collapsible=="boolean"?t.collapsible:i.collapsible;let r;return typeof t.collapsed>"u"||t.collapsed===Aa.PreserveOrCollapsed||t.collapsed===Aa.PreserveOrExpanded?r=i.collapsed:t.collapsed===Aa.Collapsed?r=!0:t.collapsed===Aa.Expanded?r=!1:r=!!t.collapsed,{...t,collapsible:s,collapsed:r,children:this.preserveCollapseState(t.children)}})}rerender(e){const t=this.getElementLocation(e);this.model.rerender(t)}getFirstElementChild(e=null){const t=this.getElementLocation(e);return this.model.getFirstElementChild(t)}has(e){return this.nodes.has(e)}getListIndex(e){const t=this.getElementLocation(e);return this.model.getListIndex(t)}getListRenderCount(e){const t=this.getElementLocation(e);return this.model.getListRenderCount(t)}isCollapsible(e){const t=this.getElementLocation(e);return this.model.isCollapsible(t)}setCollapsible(e,t){const i=this.getElementLocation(e);return this.model.setCollapsible(i,t)}isCollapsed(e){const t=this.getElementLocation(e);return this.model.isCollapsed(t)}setCollapsed(e,t,i){const s=this.getElementLocation(e);return this.model.setCollapsed(s,t,i)}expandTo(e){const t=this.getElementLocation(e);this.model.expandTo(t)}refilter(){this.model.refilter()}getNode(e=null){if(e===null)return this.model.getNode(this.model.rootRef);const t=this.nodes.get(e);if(!t)throw new Wa(this.user,`Tree element not found: ${e}`);return t}getNodeLocation(e){return e.element}getParentNodeLocation(e){if(e===null)throw new Wa(this.user,"Invalid getParentNodeLocation call");const t=this.nodes.get(e);if(!t)throw new Wa(this.user,`Tree element not found: ${e}`);const i=this.model.getNodeLocation(t),s=this.model.getParentNodeLocation(i);return this.model.getNode(s).element}getElementLocation(e){if(e===null)return[];const t=this.nodes.get(e);if(!t)throw new Wa(this.user,`Tree element not found: ${e}`);return this.model.getNodeLocation(t)}}function _N(n){const e=[n.element],t=n.incompressible||!1;return{element:{elements:e,incompressible:t},children:Vt.map(Vt.from(n.children),_N),collapsible:n.collapsible,collapsed:n.collapsed}}function vN(n){const e=[n.element],t=n.incompressible||!1;let i,s;for(;[s,i]=Vt.consume(Vt.from(n.children),2),!(s.length!==1||s[0].incompressible);)n=s[0],e.push(n.element);return{element:{elements:e,incompressible:t},children:Vt.map(Vt.concat(s,i),vN),collapsible:n.collapsible,collapsed:n.collapsed}}function wW(n,e=0){let t;return e<n.element.elements.length-1?t=[wW(n,e+1)]:t=Vt.map(Vt.from(n.children),i=>wW(i,0)),e===0&&n.element.incompressible?{element:n.element.elements[e],children:t,incompressible:!0,collapsible:n.collapsible,collapsed:n.collapsed}:{element:n.element.elements[e],children:t,collapsible:n.collapsible,collapsed:n.collapsed}}function Bie(n){return wW(n,0)}function m_e(n,e,t){return n.element===e?{...n,children:t}:{...n,children:Vt.map(Vt.from(n.children),i=>m_e(i,e,t))}}const get=n=>({getId(e){return e.elements.map(t=>n.getId(t).toString()).join("\0")}});class pet{get onDidSplice(){return this.model.onDidSplice}get onDidChangeCollapseState(){return this.model.onDidChangeCollapseState}get onDidChangeRenderNodeCount(){return this.model.onDidChangeRenderNodeCount}constructor(e,t,i={}){this.user=e,this.rootRef=null,this.nodes=new Map,this.model=new MK(e,t,i),this.enabled=typeof i.compressionEnabled>"u"?!0:i.compressionEnabled,this.identityProvider=i.identityProvider}setChildren(e,t=Vt.empty(),i){const s=i.diffIdentityProvider&&get(i.diffIdentityProvider);if(e===null){const g=Vt.map(t,this.enabled?vN:_N);this._setChildren(null,g,{diffIdentityProvider:s,diffDepth:1/0});return}const r=this.nodes.get(e);if(!r)throw new Wa(this.user,"Unknown compressed tree node");const o=this.model.getNode(r),a=this.model.getParentNodeLocation(r),l=this.model.getNode(a),c=Bie(o),u=m_e(c,e,t),h=(this.enabled?vN:_N)(u),d=i.diffIdentityProvider?(g,p)=>i.diffIdentityProvider.getId(g)===i.diffIdentityProvider.getId(p):void 0;if(On(h.element.elements,o.element.elements,d)){this._setChildren(r,h.children||Vt.empty(),{diffIdentityProvider:s,diffDepth:1});return}const f=l.children.map(g=>g===o?h:g);this._setChildren(l.element,f,{diffIdentityProvider:s,diffDepth:o.depth-l.depth})}setCompressionEnabled(e){if(e===this.enabled)return;this.enabled=e;const i=this.model.getNode().children,s=Vt.map(i,Bie),r=Vt.map(s,e?vN:_N);this._setChildren(null,r,{diffIdentityProvider:this.identityProvider,diffDepth:1/0})}_setChildren(e,t,i){const s=new Set,r=a=>{for(const l of a.element.elements)s.add(l),this.nodes.set(l,a.element)},o=a=>{for(const l of a.element.elements)s.has(l)||this.nodes.delete(l)};this.model.setChildren(e,t,{...i,onDidCreateNode:r,onDidDeleteNode:o})}has(e){return this.nodes.has(e)}getListIndex(e){const t=this.getCompressedNode(e);return this.model.getListIndex(t)}getListRenderCount(e){const t=this.getCompressedNode(e);return this.model.getListRenderCount(t)}getNode(e){if(typeof e>"u")return this.model.getNode();const t=this.getCompressedNode(e);return this.model.getNode(t)}getNodeLocation(e){const t=this.model.getNodeLocation(e);return t===null?null:t.elements[t.elements.length-1]}getParentNodeLocation(e){const t=this.getCompressedNode(e),i=this.model.getParentNodeLocation(t);return i===null?null:i.elements[i.elements.length-1]}getFirstElementChild(e){const t=this.getCompressedNode(e);return this.model.getFirstElementChild(t)}isCollapsible(e){const t=this.getCompressedNode(e);return this.model.isCollapsible(t)}setCollapsible(e,t){const i=this.getCompressedNode(e);return this.model.setCollapsible(i,t)}isCollapsed(e){const t=this.getCompressedNode(e);return this.model.isCollapsed(t)}setCollapsed(e,t,i){const s=this.getCompressedNode(e);return this.model.setCollapsed(s,t,i)}expandTo(e){const t=this.getCompressedNode(e);this.model.expandTo(t)}rerender(e){const t=this.getCompressedNode(e);this.model.rerender(t)}refilter(){this.model.refilter()}getCompressedNode(e){if(e===null)return null;const t=this.nodes.get(e);if(!t)throw new Wa(this.user,`Tree element not found: ${e}`);return t}}const met=n=>n[n.length-1];class OK{get element(){return this.node.element===null?null:this.unwrapper(this.node.element)}get children(){return this.node.children.map(e=>new OK(this.unwrapper,e))}get depth(){return this.node.depth}get visibleChildrenCount(){return this.node.visibleChildrenCount}get visibleChildIndex(){return this.node.visibleChildIndex}get collapsible(){return this.node.collapsible}get collapsed(){return this.node.collapsed}get visible(){return this.node.visible}get filterData(){return this.node.filterData}constructor(e,t){this.unwrapper=e,this.node=t}}function _et(n,e){return{splice(t,i,s){e.splice(t,i,s.map(r=>n.map(r)))},updateElementHeight(t,i){e.updateElementHeight(t,i)}}}function vet(n,e){return{...e,identityProvider:e.identityProvider&&{getId(t){return e.identityProvider.getId(n(t))}},sorter:e.sorter&&{compare(t,i){return e.sorter.compare(t.elements[0],i.elements[0])}},filter:e.filter&&{filter(t,i){return e.filter.filter(n(t),i)}}}}class bet{get onDidSplice(){return Ve.map(this.model.onDidSplice,({insertedNodes:e,deletedNodes:t})=>({insertedNodes:e.map(i=>this.nodeMapper.map(i)),deletedNodes:t.map(i=>this.nodeMapper.map(i))}))}get onDidChangeCollapseState(){return Ve.map(this.model.onDidChangeCollapseState,({node:e,deep:t})=>({node:this.nodeMapper.map(e),deep:t}))}get onDidChangeRenderNodeCount(){return Ve.map(this.model.onDidChangeRenderNodeCount,e=>this.nodeMapper.map(e))}constructor(e,t,i={}){this.rootRef=null,this.elementMapper=i.elementMapper||met;const s=r=>this.elementMapper(r.elements);this.nodeMapper=new AK(r=>new OK(s,r)),this.model=new pet(e,_et(this.nodeMapper,t),vet(s,i))}setChildren(e,t=Vt.empty(),i={}){this.model.setChildren(e,t,i)}setCompressionEnabled(e){this.model.setCompressionEnabled(e)}has(e){return this.model.has(e)}getListIndex(e){return this.model.getListIndex(e)}getListRenderCount(e){return this.model.getListRenderCount(e)}getNode(e){return this.nodeMapper.map(this.model.getNode(e))}getNodeLocation(e){return e.element}getParentNodeLocation(e){return this.model.getParentNodeLocation(e)}getFirstElementChild(e){const t=this.model.getFirstElementChild(e);return t===null||typeof t>"u"?t:this.elementMapper(t.elements)}isCollapsible(e){return this.model.isCollapsible(e)}setCollapsible(e,t){return this.model.setCollapsible(e,t)}isCollapsed(e){return this.model.isCollapsed(e)}setCollapsed(e,t,i){return this.model.setCollapsed(e,t,i)}expandTo(e){return this.model.expandTo(e)}rerender(e){return this.model.rerender(e)}refilter(){return this.model.refilter()}getCompressedTreeNode(e=null){return this.model.getNode(e)}}var yet=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r};class FK extends p_e{get onDidChangeCollapseState(){return this.model.onDidChangeCollapseState}constructor(e,t,i,s,r={}){super(e,t,i,s,r),this.user=e}setChildren(e,t=Vt.empty(),i){this.model.setChildren(e,t,i)}rerender(e){if(e===void 0){this.view.rerender();return}this.model.rerender(e)}hasElement(e){return this.model.has(e)}createModel(e,t,i){return new MK(e,t,i)}}class __e{get compressedTreeNodeProvider(){return this._compressedTreeNodeProvider()}constructor(e,t){this._compressedTreeNodeProvider=e,this.renderer=t,this.templateId=t.templateId,t.onDidChangeTwistieState&&(this.onDidChangeTwistieState=t.onDidChangeTwistieState)}renderTemplate(e){return{compressedTreeNode:void 0,data:this.renderer.renderTemplate(e)}}renderElement(e,t,i,s){const r=this.compressedTreeNodeProvider.getCompressedTreeNode(e.element);r.element.elements.length===1?(i.compressedTreeNode=void 0,this.renderer.renderElement(e,t,i.data,s)):(i.compressedTreeNode=r,this.renderer.renderCompressedElements(r,t,i.data,s))}disposeElement(e,t,i,s){var r,o,a,l;i.compressedTreeNode?(o=(r=this.renderer).disposeCompressedElements)===null||o===void 0||o.call(r,i.compressedTreeNode,t,i.data,s):(l=(a=this.renderer).disposeElement)===null||l===void 0||l.call(a,e,t,i.data,s)}disposeTemplate(e){this.renderer.disposeTemplate(e.data)}renderTwistie(e,t){return this.renderer.renderTwistie?this.renderer.renderTwistie(e,t):!1}}yet([ts],__e.prototype,"compressedTreeNodeProvider",null);function Cet(n,e){return e&&{...e,keyboardNavigationLabelProvider:e.keyboardNavigationLabelProvider&&{getKeyboardNavigationLabel(t){let i;try{i=n().getCompressedTreeNode(t)}catch{return e.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(t)}return i.element.elements.length===1?e.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(t):e.keyboardNavigationLabelProvider.getCompressedNodeKeyboardNavigationLabel(i.element.elements)}}}}class v_e extends FK{constructor(e,t,i,s,r={}){const o=()=>this,a=s.map(l=>new __e(o,l));super(e,t,i,a,Cet(o,r))}setChildren(e,t=Vt.empty(),i){this.model.setChildren(e,t,i)}createModel(e,t,i){return new bet(e,t,i)}updateOptions(e={}){super.updateOptions(e),typeof e.compressionEnabled<"u"&&this.model.setCompressionEnabled(e.compressionEnabled)}getCompressedTreeNode(e=null){return this.model.getCompressedTreeNode(e)}}function I3(n){return{...n,children:[],refreshPromise:void 0,stale:!0,slow:!1,forceExpanded:!1}}function SW(n,e){return e.parent?e.parent===n?!0:SW(n,e.parent):!1}function wet(n,e){return n===e||SW(n,e)||SW(e,n)}class BK{get element(){return this.node.element.element}get children(){return this.node.children.map(e=>new BK(e))}get depth(){return this.node.depth}get visibleChildrenCount(){return this.node.visibleChildrenCount}get visibleChildIndex(){return this.node.visibleChildIndex}get collapsible(){return this.node.collapsible}get collapsed(){return this.node.collapsed}get visible(){return this.node.visible}get filterData(){return this.node.filterData}constructor(e){this.node=e}}class ket{constructor(e,t,i){this.renderer=e,this.nodeMapper=t,this.onDidChangeTwistieState=i,this.renderedNodes=new Map,this.templateId=e.templateId}renderTemplate(e){return{templateData:this.renderer.renderTemplate(e)}}renderElement(e,t,i,s){this.renderer.renderElement(this.nodeMapper.map(e),t,i.templateData,s)}renderTwistie(e,t){return e.slow?(t.classList.add(...nt.asClassNameArray(Pe.treeItemLoading)),!0):(t.classList.remove(...nt.asClassNameArray(Pe.treeItemLoading)),!1)}disposeElement(e,t,i,s){var r,o;(o=(r=this.renderer).disposeElement)===null||o===void 0||o.call(r,this.nodeMapper.map(e),t,i.templateData,s)}disposeTemplate(e){this.renderer.disposeTemplate(e.templateData)}dispose(){this.renderedNodes.clear()}}function Wie(n){return{browserEvent:n.browserEvent,elements:n.elements.map(e=>e.element)}}function Vie(n){return{browserEvent:n.browserEvent,element:n.element&&n.element.element,target:n.target}}class Let extends PE{constructor(e){super(e.elements.map(t=>t.element)),this.data=e}}function T3(n){return n instanceof PE?new Let(n):n}class xet{constructor(e){this.dnd=e}getDragURI(e){return this.dnd.getDragURI(e.element)}getDragLabel(e,t){if(this.dnd.getDragLabel)return this.dnd.getDragLabel(e.map(i=>i.element),t)}onDragStart(e,t){var i,s;(s=(i=this.dnd).onDragStart)===null||s===void 0||s.call(i,T3(e),t)}onDragOver(e,t,i,s,r=!0){return this.dnd.onDragOver(T3(e),t&&t.element,i,s)}drop(e,t,i,s){this.dnd.drop(T3(e),t&&t.element,i,s)}onDragEnd(e){var t,i;(i=(t=this.dnd).onDragEnd)===null||i===void 0||i.call(t,e)}dispose(){this.dnd.dispose()}}function b_e(n){return n&&{...n,collapseByDefault:!0,identityProvider:n.identityProvider&&{getId(e){return n.identityProvider.getId(e.element)}},dnd:n.dnd&&new xet(n.dnd),multipleSelectionController:n.multipleSelectionController&&{isSelectionSingleChangeEvent(e){return n.multipleSelectionController.isSelectionSingleChangeEvent({...e,element:e.element})},isSelectionRangeChangeEvent(e){return n.multipleSelectionController.isSelectionRangeChangeEvent({...e,element:e.element})}},accessibilityProvider:n.accessibilityProvider&&{...n.accessibilityProvider,getPosInSet:void 0,getSetSize:void 0,getRole:n.accessibilityProvider.getRole?e=>n.accessibilityProvider.getRole(e.element):()=>"treeitem",isChecked:n.accessibilityProvider.isChecked?e=>{var t;return!!(!((t=n.accessibilityProvider)===null||t===void 0)&&t.isChecked(e.element))}:void 0,getAriaLabel(e){return n.accessibilityProvider.getAriaLabel(e.element)},getWidgetAriaLabel(){return n.accessibilityProvider.getWidgetAriaLabel()},getWidgetRole:n.accessibilityProvider.getWidgetRole?()=>n.accessibilityProvider.getWidgetRole():()=>"tree",getAriaLevel:n.accessibilityProvider.getAriaLevel&&(e=>n.accessibilityProvider.getAriaLevel(e.element)),getActiveDescendantId:n.accessibilityProvider.getActiveDescendantId&&(e=>n.accessibilityProvider.getActiveDescendantId(e.element))},filter:n.filter&&{filter(e,t){return n.filter.filter(e.element,t)}},keyboardNavigationLabelProvider:n.keyboardNavigationLabelProvider&&{...n.keyboardNavigationLabelProvider,getKeyboardNavigationLabel(e){return n.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(e.element)}},sorter:void 0,expandOnlyOnTwistieClick:typeof n.expandOnlyOnTwistieClick>"u"?void 0:typeof n.expandOnlyOnTwistieClick!="function"?n.expandOnlyOnTwistieClick:e=>n.expandOnlyOnTwistieClick(e.element),defaultFindVisibility:e=>e.hasChildren&&e.stale?1:typeof n.defaultFindVisibility=="number"?n.defaultFindVisibility:typeof n.defaultFindVisibility>"u"?2:n.defaultFindVisibility(e.element)}}function kW(n,e){e(n),n.children.forEach(t=>kW(t,e))}class y_e{get onDidScroll(){return this.tree.onDidScroll}get onDidChangeFocus(){return Ve.map(this.tree.onDidChangeFocus,Wie)}get onDidChangeSelection(){return Ve.map(this.tree.onDidChangeSelection,Wie)}get onMouseDblClick(){return Ve.map(this.tree.onMouseDblClick,Vie)}get onPointer(){return Ve.map(this.tree.onPointer,Vie)}get onDidFocus(){return this.tree.onDidFocus}get onDidChangeModel(){return this.tree.onDidChangeModel}get onDidChangeCollapseState(){return this.tree.onDidChangeCollapseState}get onDidChangeFindOpenState(){return this.tree.onDidChangeFindOpenState}get onDidDispose(){return this.tree.onDidDispose}constructor(e,t,i,s,r,o={}){this.user=e,this.dataSource=r,this.nodes=new Map,this.subTreeRefreshPromises=new Map,this.refreshPromises=new Map,this._onDidRender=new ue,this._onDidChangeNodeSlowState=new ue,this.nodeMapper=new AK(a=>new BK(a)),this.disposables=new xe,this.identityProvider=o.identityProvider,this.autoExpandSingleChildren=typeof o.autoExpandSingleChildren>"u"?!1:o.autoExpandSingleChildren,this.sorter=o.sorter,this.getDefaultCollapseState=a=>o.collapseByDefault?o.collapseByDefault(a)?Aa.PreserveOrCollapsed:Aa.PreserveOrExpanded:void 0,this.tree=this.createTree(e,t,i,s,o),this.onDidChangeFindMode=this.tree.onDidChangeFindMode,this.root=I3({element:void 0,parent:null,hasChildren:!0,defaultCollapseState:void 0}),this.identityProvider&&(this.root={...this.root,id:null}),this.nodes.set(null,this.root),this.tree.onDidChangeCollapseState(this._onDidChangeCollapseState,this,this.disposables)}createTree(e,t,i,s,r){const o=new RK(i),a=s.map(c=>new ket(c,this.nodeMapper,this._onDidChangeNodeSlowState.event)),l=b_e(r)||{};return new FK(e,t,o,a,l)}updateOptions(e={}){this.tree.updateOptions(e)}getHTMLElement(){return this.tree.getHTMLElement()}get scrollTop(){return this.tree.scrollTop}set scrollTop(e){this.tree.scrollTop=e}get scrollHeight(){return this.tree.scrollHeight}get renderHeight(){return this.tree.renderHeight}domFocus(){this.tree.domFocus()}layout(e,t){this.tree.layout(e,t)}style(e){this.tree.style(e)}getInput(){return this.root.element}async setInput(e,t){this.refreshPromises.forEach(s=>s.cancel()),this.refreshPromises.clear(),this.root.element=e;const i=t&&{viewState:t,focus:[],selection:[]};await this._updateChildren(e,!0,!1,i),i&&(this.tree.setFocus(i.focus),this.tree.setSelection(i.selection)),t&&typeof t.scrollTop=="number"&&(this.scrollTop=t.scrollTop)}async _updateChildren(e=this.root.element,t=!0,i=!1,s,r){if(typeof this.root.element>"u")throw new Wa(this.user,"Tree input not set");this.root.refreshPromise&&(await this.root.refreshPromise,await Ve.toPromise(this._onDidRender.event));const o=this.getDataNode(e);if(await this.refreshAndRenderNode(o,t,s,r),i)try{this.tree.rerender(o)}catch{}}rerender(e){if(e===void 0||e===this.root.element){this.tree.rerender();return}const t=this.getDataNode(e);this.tree.rerender(t)}getNode(e=this.root.element){const t=this.getDataNode(e),i=this.tree.getNode(t===this.root?null:t);return this.nodeMapper.map(i)}collapse(e,t=!1){const i=this.getDataNode(e);return this.tree.collapse(i===this.root?null:i,t)}async expand(e,t=!1){if(typeof this.root.element>"u")throw new Wa(this.user,"Tree input not set");this.root.refreshPromise&&(await this.root.refreshPromise,await Ve.toPromise(this._onDidRender.event));const i=this.getDataNode(e);if(this.tree.hasElement(i)&&!this.tree.isCollapsible(i)||(i.refreshPromise&&(await this.root.refreshPromise,await Ve.toPromise(this._onDidRender.event)),i!==this.root&&!i.refreshPromise&&!this.tree.isCollapsed(i)))return!1;const s=this.tree.expand(i===this.root?null:i,t);return i.refreshPromise&&(await this.root.refreshPromise,await Ve.toPromise(this._onDidRender.event)),s}setSelection(e,t){const i=e.map(s=>this.getDataNode(s));this.tree.setSelection(i,t)}getSelection(){return this.tree.getSelection().map(t=>t.element)}setFocus(e,t){const i=e.map(s=>this.getDataNode(s));this.tree.setFocus(i,t)}getFocus(){return this.tree.getFocus().map(t=>t.element)}reveal(e,t){this.tree.reveal(this.getDataNode(e),t)}getParentElement(e){const t=this.tree.getParentElement(this.getDataNode(e));return t&&t.element}getFirstElementChild(e=this.root.element){const t=this.getDataNode(e),i=this.tree.getFirstElementChild(t===this.root?null:t);return i&&i.element}getDataNode(e){const t=this.nodes.get(e===this.root.element?null:e);if(!t)throw new Wa(this.user,`Data tree node not found: ${e}`);return t}async refreshAndRenderNode(e,t,i,s){await this.refreshNode(e,t,i),this.render(e,i,s)}async refreshNode(e,t,i){let s;if(this.subTreeRefreshPromises.forEach((r,o)=>{!s&&wet(o,e)&&(s=r.then(()=>this.refreshNode(e,t,i)))}),s)return s;if(e!==this.root&&this.tree.getNode(e).collapsed){e.hasChildren=!!this.dataSource.hasChildren(e.element),e.stale=!0;return}return this.doRefreshSubTree(e,t,i)}async doRefreshSubTree(e,t,i){let s;e.refreshPromise=new Promise(r=>s=r),this.subTreeRefreshPromises.set(e,e.refreshPromise),e.refreshPromise.finally(()=>{e.refreshPromise=void 0,this.subTreeRefreshPromises.delete(e)});try{const r=await this.doRefreshNode(e,t,i);e.stale=!1,await j8.settled(r.map(o=>this.doRefreshSubTree(o,t,i)))}finally{s()}}async doRefreshNode(e,t,i){e.hasChildren=!!this.dataSource.hasChildren(e.element);let s;if(!e.hasChildren)s=Promise.resolve(Vt.empty());else{const r=this.doGetChildren(e);if(oJ(r))s=Promise.resolve(r);else{const o=Kp(800);o.then(()=>{e.slow=!0,this._onDidChangeNodeSlowState.fire(e)},a=>null),s=r.finally(()=>o.cancel())}}try{const r=await s;return this.setChildren(e,r,t,i)}catch(r){if(e!==this.root&&this.tree.hasElement(e)&&this.tree.collapse(e),Wu(r))return[];throw r}finally{e.slow&&(e.slow=!1,this._onDidChangeNodeSlowState.fire(e))}}doGetChildren(e){let t=this.refreshPromises.get(e);if(t)return t;const i=this.dataSource.getChildren(e.element);return oJ(i)?this.processChildren(i):(t=Ns(async()=>this.processChildren(await i)),this.refreshPromises.set(e,t),t.finally(()=>{this.refreshPromises.delete(e)}))}_onDidChangeCollapseState({node:e,deep:t}){e.element!==null&&!e.collapsed&&e.element.stale&&(t?this.collapse(e.element.element):this.refreshAndRenderNode(e.element,!1).catch(vt))}setChildren(e,t,i,s){const r=[...t];if(e.children.length===0&&r.length===0)return[];const o=new Map,a=new Map;for(const u of e.children)o.set(u.element,u),this.identityProvider&&a.set(u.id,{node:u,collapsed:this.tree.hasElement(u)&&this.tree.isCollapsed(u)});const l=[],c=r.map(u=>{const h=!!this.dataSource.hasChildren(u);if(!this.identityProvider){const p=I3({element:u,parent:e,hasChildren:h,defaultCollapseState:this.getDefaultCollapseState(u)});return h&&p.defaultCollapseState===Aa.PreserveOrExpanded&&l.push(p),p}const d=this.identityProvider.getId(u).toString(),f=a.get(d);if(f){const p=f.node;return o.delete(p.element),this.nodes.delete(p.element),this.nodes.set(u,p),p.element=u,p.hasChildren=h,i?f.collapsed?(p.children.forEach(m=>kW(m,_=>this.nodes.delete(_.element))),p.children.splice(0,p.children.length),p.stale=!0):l.push(p):h&&!f.collapsed&&l.push(p),p}const g=I3({element:u,parent:e,id:d,hasChildren:h,defaultCollapseState:this.getDefaultCollapseState(u)});return s&&s.viewState.focus&&s.viewState.focus.indexOf(d)>-1&&s.focus.push(g),s&&s.viewState.selection&&s.viewState.selection.indexOf(d)>-1&&s.selection.push(g),(s&&s.viewState.expanded&&s.viewState.expanded.indexOf(d)>-1||h&&g.defaultCollapseState===Aa.PreserveOrExpanded)&&l.push(g),g});for(const u of o.values())kW(u,h=>this.nodes.delete(h.element));for(const u of c)this.nodes.set(u.element,u);return e.children.splice(0,e.children.length,...c),e!==this.root&&this.autoExpandSingleChildren&&c.length===1&&l.length===0&&(c[0].forceExpanded=!0,l.push(c[0])),l}render(e,t,i){const s=e.children.map(o=>this.asTreeElement(o,t)),r=i&&{...i,diffIdentityProvider:i.diffIdentityProvider&&{getId(o){return i.diffIdentityProvider.getId(o.element)}}};this.tree.setChildren(e===this.root?null:e,s,r),e!==this.root&&this.tree.setCollapsible(e,e.hasChildren),this._onDidRender.fire()}asTreeElement(e,t){if(e.stale)return{element:e,collapsible:e.hasChildren,collapsed:!0};let i;return t&&t.viewState.expanded&&e.id&&t.viewState.expanded.indexOf(e.id)>-1?i=!1:e.forceExpanded?(i=!1,e.forceExpanded=!1):i=e.defaultCollapseState,{element:e,children:e.hasChildren?Vt.map(e.children,s=>this.asTreeElement(s,t)):[],collapsible:e.hasChildren,collapsed:i}}processChildren(e){return this.sorter&&(e=[...e].sort(this.sorter.compare.bind(this.sorter))),e}dispose(){this.disposables.dispose(),this.tree.dispose()}}class WK{get element(){return{elements:this.node.element.elements.map(e=>e.element),incompressible:this.node.element.incompressible}}get children(){return this.node.children.map(e=>new WK(e))}get depth(){return this.node.depth}get visibleChildrenCount(){return this.node.visibleChildrenCount}get visibleChildIndex(){return this.node.visibleChildIndex}get collapsible(){return this.node.collapsible}get collapsed(){return this.node.collapsed}get visible(){return this.node.visible}get filterData(){return this.node.filterData}constructor(e){this.node=e}}class Eet{constructor(e,t,i,s){this.renderer=e,this.nodeMapper=t,this.compressibleNodeMapperProvider=i,this.onDidChangeTwistieState=s,this.renderedNodes=new Map,this.disposables=[],this.templateId=e.templateId}renderTemplate(e){return{templateData:this.renderer.renderTemplate(e)}}renderElement(e,t,i,s){this.renderer.renderElement(this.nodeMapper.map(e),t,i.templateData,s)}renderCompressedElements(e,t,i,s){this.renderer.renderCompressedElements(this.compressibleNodeMapperProvider().map(e),t,i.templateData,s)}renderTwistie(e,t){return e.slow?(t.classList.add(...nt.asClassNameArray(Pe.treeItemLoading)),!0):(t.classList.remove(...nt.asClassNameArray(Pe.treeItemLoading)),!1)}disposeElement(e,t,i,s){var r,o;(o=(r=this.renderer).disposeElement)===null||o===void 0||o.call(r,this.nodeMapper.map(e),t,i.templateData,s)}disposeCompressedElements(e,t,i,s){var r,o;(o=(r=this.renderer).disposeCompressedElements)===null||o===void 0||o.call(r,this.compressibleNodeMapperProvider().map(e),t,i.templateData,s)}disposeTemplate(e){this.renderer.disposeTemplate(e.templateData)}dispose(){this.renderedNodes.clear(),this.disposables=yi(this.disposables)}}function Det(n){const e=n&&b_e(n);return e&&{...e,keyboardNavigationLabelProvider:e.keyboardNavigationLabelProvider&&{...e.keyboardNavigationLabelProvider,getCompressedNodeKeyboardNavigationLabel(t){return n.keyboardNavigationLabelProvider.getCompressedNodeKeyboardNavigationLabel(t.map(i=>i.element))}}}}class Iet extends y_e{constructor(e,t,i,s,r,o,a={}){super(e,t,i,r,o,a),this.compressionDelegate=s,this.compressibleNodeMapper=new AK(l=>new WK(l)),this.filter=a.filter}createTree(e,t,i,s,r){const o=new RK(i),a=s.map(c=>new Eet(c,this.nodeMapper,()=>this.compressibleNodeMapper,this._onDidChangeNodeSlowState.event)),l=Det(r)||{};return new v_e(e,t,o,a,l)}asTreeElement(e,t){return{incompressible:this.compressionDelegate.isIncompressible(e.element),...super.asTreeElement(e,t)}}updateOptions(e={}){this.tree.updateOptions(e)}render(e,t){if(!this.identityProvider)return super.render(e,t);const i=d=>this.identityProvider.getId(d).toString(),s=d=>{const f=new Set;for(const g of d){const p=this.tree.getCompressedTreeNode(g===this.root?null:g);if(p.element)for(const m of p.element.elements)f.add(i(m.element))}return f},r=s(this.tree.getSelection()),o=s(this.tree.getFocus());super.render(e,t);const a=this.getSelection();let l=!1;const c=this.getFocus();let u=!1;const h=d=>{const f=d.element;if(f)for(let g=0;g<f.elements.length;g++){const p=i(f.elements[g].element),m=f.elements[f.elements.length-1].element;r.has(p)&&a.indexOf(m)===-1&&(a.push(m),l=!0),o.has(p)&&c.indexOf(m)===-1&&(c.push(m),u=!0)}d.children.forEach(h)};h(this.tree.getCompressedTreeNode(e===this.root?null:e)),l&&this.setSelection(a),u&&this.setFocus(c)}processChildren(e){return this.filter&&(e=Vt.filter(e,t=>{const i=this.filter.filter(t,1),s=Tet(i);if(s===2)throw new Error("Recursive tree visibility not supported in async data compressed trees");return s===1})),super.processChildren(e)}}function Tet(n){return typeof n=="boolean"?n?1:0:PK(n)?ix(n.visibility):ix(n)}class Net extends p_e{constructor(e,t,i,s,r,o={}){super(e,t,i,s,o),this.user=e,this.dataSource=r,this.identityProvider=o.identityProvider}createModel(e,t,i){return new MK(e,t,i)}}new ze("isMac",Gt,v("isMac","Whether the operating system is macOS"));new ze("isLinux",Kr,v("isLinux","Whether the operating system is Linux"));const _2=new ze("isWindows",yr,v("isWindows","Whether the operating system is Windows")),C_e=new ze("isWeb",Dm,v("isWeb","Whether the platform is a web browser"));new ze("isMacNative",Gt&&!Dm,v("isMacNative","Whether the operating system is macOS on a non-browser platform"));new ze("isIOS",Du,v("isIOS","Whether the operating system is iOS"));new ze("isMobile",TBe,v("isMobile","Whether the platform is a mobile web browser"));new ze("isDevelopment",!1,!0);new ze("productQualityType","",v("productQualityType","Quality type of VS Code"));const w_e="inputFocus";new ze(w_e,!1,v("inputFocus","Whether keyboard focus is inside an input box"));let La;const N3=globalThis.vscode;if(typeof N3<"u"&&typeof N3.context<"u"){const n=N3.context.configuration();if(n)La=n.product;else throw new Error("Sandbox: unable to resolve product configuration from preload script.")}else if(globalThis._VSCODE_PRODUCT_JSON&&globalThis._VSCODE_PACKAGE_JSON){if(La=globalThis._VSCODE_PRODUCT_JSON,RA.VSCODE_DEV&&Object.assign(La,{nameShort:`${La.nameShort} Dev`,nameLong:`${La.nameLong} Dev`,dataFolderName:`${La.dataFolderName}-dev`,serverDataFolderName:La.serverDataFolderName?`${La.serverDataFolderName}-dev`:void 0}),!La.version){const n=globalThis._VSCODE_PACKAGE_JSON;Object.assign(La,{version:n.version})}}else La={},Object.keys(La).length===0&&Object.assign(La,{version:"1.82.0-dev",nameShort:"Code - OSS Dev",nameLong:"Code - OSS Dev",applicationName:"code-oss",dataFolderName:".vscode-oss",urlProtocol:"code-oss",reportIssueUrl:"https://github.com/microsoft/vscode/issues/new",licenseName:"MIT",licenseUrl:"https://github.com/microsoft/vscode/blob/main/LICENSE.txt",serverLicenseUrl:"https://github.com/microsoft/vscode/blob/main/LICENSE.txt"});const Hie=La;var cg=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},zi=function(n,e){return function(t,i){e(t,i,n)}};const jl=Bt("listService");class Aet{get lastFocusedList(){return this._lastFocusedWidget}constructor(){this.disposables=new xe,this.lists=[],this._lastFocusedWidget=void 0,this._hasCreatedStyleController=!1}setLastFocusedList(e){var t,i;e!==this._lastFocusedWidget&&((t=this._lastFocusedWidget)===null||t===void 0||t.getHTMLElement().classList.remove("last-focused"),this._lastFocusedWidget=e,(i=this._lastFocusedWidget)===null||i===void 0||i.getHTMLElement().classList.add("last-focused"))}register(e,t){if(this._hasCreatedStyleController||(this._hasCreatedStyleController=!0,new Yme(Fl(),"").style(Nv)),this.lists.some(s=>s.widget===e))throw new Error("Cannot register the same widget multiple times");const i={widget:e,extraContextKeys:t};return this.lists.push(i),fO(e.getHTMLElement())&&this.setLastFocusedList(e),_c(e.onDidFocus(()=>this.setLastFocusedList(e)),st(()=>this.lists.splice(this.lists.indexOf(i),1)),e.onDidDispose(()=>{this.lists=this.lists.filter(s=>s!==i),this._lastFocusedWidget===e&&this.setLastFocusedList(void 0)}))}dispose(){this.disposables.dispose()}}const rx=new ze("listScrollAtBoundary","none");ke.or(rx.isEqualTo("top"),rx.isEqualTo("both"));ke.or(rx.isEqualTo("bottom"),rx.isEqualTo("both"));const S_e=new ze("listFocus",!0),v2=new ze("listSupportsMultiselect",!0),k_e=ke.and(S_e,ke.not(w_e)),VK=new ze("listHasSelectionOrFocus",!1),HK=new ze("listDoubleSelection",!1),$K=new ze("listMultiSelection",!1),b2=new ze("listSelectionNavigation",!1),Pet=new ze("listSupportsFind",!0),zK=new ze("treeElementCanCollapse",!1),Ret=new ze("treeElementHasParent",!1),UK=new ze("treeElementCanExpand",!1),Met=new ze("treeElementHasChild",!1),Oet=new ze("treeFindOpen",!1),L_e="listTypeNavigationMode",x_e="listAutomaticKeyboardNavigation";function y2(n,e){const t=n.createScoped(e.getHTMLElement());return S_e.bindTo(t),t}function C2(n,e){const t=rx.bindTo(n),i=()=>{const s=e.scrollTop===0,r=e.scrollHeight-e.renderHeight-e.scrollTop<1;s&&r?t.set("both"):s?t.set("top"):r?t.set("bottom"):t.set("none")};return i(),e.onDidScroll(i)}const Rv="workbench.list.multiSelectModifier",bN="workbench.list.openMode",Pl="workbench.list.horizontalScrolling",jK="workbench.list.defaultFindMode",qK="workbench.list.typeNavigationMode",BP="workbench.list.keyboardNavigation",Pu="workbench.list.scrollByPage",KK="workbench.list.defaultFindMatchType",ox="workbench.tree.indent",WP="workbench.tree.renderIndentGuides",Ru="workbench.list.smoothScrolling",yd="workbench.list.mouseWheelScrollSensitivity",Cd="workbench.list.fastScrollSensitivity",VP="workbench.tree.expandMode",HP="workbench.tree.enableStickyScroll",$P="workbench.tree.stickyScrollMaxItemCount";function wd(n){return n.getValue(Rv)==="alt"}class Fet extends pe{constructor(e){super(),this.configurationService=e,this.useAltAsMultipleSelectionModifier=wd(e),this.registerListeners()}registerListeners(){this._register(this.configurationService.onDidChangeConfiguration(e=>{e.affectsConfiguration(Rv)&&(this.useAltAsMultipleSelectionModifier=wd(this.configurationService))}))}isSelectionSingleChangeEvent(e){return this.useAltAsMultipleSelectionModifier?e.browserEvent.altKey:qme(e)}isSelectionRangeChangeEvent(e){return Kme(e)}}function w2(n,e){var t;const i=n.get(Ut),s=n.get(Di),r=new xe;return[{...e,keyboardNavigationDelegate:{mightProducePrintableCharacter(a){return s.mightProducePrintableCharacter(a)}},smoothScrolling:!!i.getValue(Ru),mouseWheelScrollSensitivity:i.getValue(yd),fastScrollSensitivity:i.getValue(Cd),multipleSelectionController:(t=e.multipleSelectionController)!==null&&t!==void 0?t:r.add(new Fet(i)),keyboardNavigationEventFilter:Vet(s),scrollByPage:!!i.getValue(Pu)},r]}let LW=class extends Ac{constructor(e,t,i,s,r,o,a,l,c){const u=typeof r.horizontalScrolling<"u"?r.horizontalScrolling:!!l.getValue(Pl),[h,d]=c.invokeFunction(w2,r);super(e,t,i,s,{keyboardSupport:!1,...h,horizontalScrolling:u}),this.disposables.add(d),this.contextKeyService=y2(o,this),this.disposables.add(C2(this.contextKeyService,this)),this.listSupportsMultiSelect=v2.bindTo(this.contextKeyService),this.listSupportsMultiSelect.set(r.multipleSelectionSupport!==!1),b2.bindTo(this.contextKeyService).set(!!r.selectionNavigation),this.listHasSelectionOrFocus=VK.bindTo(this.contextKeyService),this.listDoubleSelection=HK.bindTo(this.contextKeyService),this.listMultiSelection=$K.bindTo(this.contextKeyService),this.horizontalScrolling=r.horizontalScrolling,this._useAltAsMultipleSelectionModifier=wd(l),this.disposables.add(this.contextKeyService),this.disposables.add(a.register(this)),this.updateStyles(r.overrideStyles),this.disposables.add(this.onDidChangeSelection(()=>{const g=this.getSelection(),p=this.getFocus();this.contextKeyService.bufferChangeEvents(()=>{this.listHasSelectionOrFocus.set(g.length>0||p.length>0),this.listMultiSelection.set(g.length>1),this.listDoubleSelection.set(g.length===2)})})),this.disposables.add(this.onDidChangeFocus(()=>{const g=this.getSelection(),p=this.getFocus();this.listHasSelectionOrFocus.set(g.length>0||p.length>0)})),this.disposables.add(l.onDidChangeConfiguration(g=>{g.affectsConfiguration(Rv)&&(this._useAltAsMultipleSelectionModifier=wd(l));let p={};if(g.affectsConfiguration(Pl)&&this.horizontalScrolling===void 0){const m=!!l.getValue(Pl);p={...p,horizontalScrolling:m}}if(g.affectsConfiguration(Pu)){const m=!!l.getValue(Pu);p={...p,scrollByPage:m}}if(g.affectsConfiguration(Ru)){const m=!!l.getValue(Ru);p={...p,smoothScrolling:m}}if(g.affectsConfiguration(yd)){const m=l.getValue(yd);p={...p,mouseWheelScrollSensitivity:m}}if(g.affectsConfiguration(Cd)){const m=l.getValue(Cd);p={...p,fastScrollSensitivity:m}}Object.keys(p).length>0&&this.updateOptions(p)})),this.navigator=new E_e(this,{configurationService:l,...r}),this.disposables.add(this.navigator)}updateOptions(e){super.updateOptions(e),e.overrideStyles!==void 0&&this.updateStyles(e.overrideStyles),e.multipleSelectionSupport!==void 0&&this.listSupportsMultiSelect.set(!!e.multipleSelectionSupport)}updateStyles(e){this.style(e?BC(e):Nv)}};LW=cg([zi(5,ft),zi(6,jl),zi(7,Ut),zi(8,at)],LW);let $ie=class extends $Je{constructor(e,t,i,s,r,o,a,l,c){const u=typeof r.horizontalScrolling<"u"?r.horizontalScrolling:!!l.getValue(Pl),[h,d]=c.invokeFunction(w2,r);super(e,t,i,s,{keyboardSupport:!1,...h,horizontalScrolling:u}),this.disposables=new xe,this.disposables.add(d),this.contextKeyService=y2(o,this),this.disposables.add(C2(this.contextKeyService,this.widget)),this.horizontalScrolling=r.horizontalScrolling,this.listSupportsMultiSelect=v2.bindTo(this.contextKeyService),this.listSupportsMultiSelect.set(r.multipleSelectionSupport!==!1),b2.bindTo(this.contextKeyService).set(!!r.selectionNavigation),this._useAltAsMultipleSelectionModifier=wd(l),this.disposables.add(this.contextKeyService),this.disposables.add(a.register(this)),this.updateStyles(r.overrideStyles),this.disposables.add(l.onDidChangeConfiguration(g=>{g.affectsConfiguration(Rv)&&(this._useAltAsMultipleSelectionModifier=wd(l));let p={};if(g.affectsConfiguration(Pl)&&this.horizontalScrolling===void 0){const m=!!l.getValue(Pl);p={...p,horizontalScrolling:m}}if(g.affectsConfiguration(Pu)){const m=!!l.getValue(Pu);p={...p,scrollByPage:m}}if(g.affectsConfiguration(Ru)){const m=!!l.getValue(Ru);p={...p,smoothScrolling:m}}if(g.affectsConfiguration(yd)){const m=l.getValue(yd);p={...p,mouseWheelScrollSensitivity:m}}if(g.affectsConfiguration(Cd)){const m=l.getValue(Cd);p={...p,fastScrollSensitivity:m}}Object.keys(p).length>0&&this.updateOptions(p)})),this.navigator=new E_e(this,{configurationService:l,...r}),this.disposables.add(this.navigator)}updateOptions(e){super.updateOptions(e),e.overrideStyles!==void 0&&this.updateStyles(e.overrideStyles),e.multipleSelectionSupport!==void 0&&this.listSupportsMultiSelect.set(!!e.multipleSelectionSupport)}updateStyles(e){this.style(e?BC(e):Nv)}dispose(){this.disposables.dispose(),super.dispose()}};$ie=cg([zi(5,ft),zi(6,jl),zi(7,Ut),zi(8,at)],$ie);let zie=class extends m2{constructor(e,t,i,s,r,o,a,l,c,u){const h=typeof o.horizontalScrolling<"u"?o.horizontalScrolling:!!c.getValue(Pl),[d,f]=u.invokeFunction(w2,o);super(e,t,i,s,r,{keyboardSupport:!1,...d,horizontalScrolling:h}),this.disposables.add(f),this.contextKeyService=y2(a,this),this.disposables.add(C2(this.contextKeyService,this)),this.listSupportsMultiSelect=v2.bindTo(this.contextKeyService),this.listSupportsMultiSelect.set(o.multipleSelectionSupport!==!1),b2.bindTo(this.contextKeyService).set(!!o.selectionNavigation),this.listHasSelectionOrFocus=VK.bindTo(this.contextKeyService),this.listDoubleSelection=HK.bindTo(this.contextKeyService),this.listMultiSelection=$K.bindTo(this.contextKeyService),this.horizontalScrolling=o.horizontalScrolling,this._useAltAsMultipleSelectionModifier=wd(c),this.disposables.add(this.contextKeyService),this.disposables.add(l.register(this)),this.updateStyles(o.overrideStyles),this.disposables.add(this.onDidChangeSelection(()=>{const p=this.getSelection(),m=this.getFocus();this.contextKeyService.bufferChangeEvents(()=>{this.listHasSelectionOrFocus.set(p.length>0||m.length>0),this.listMultiSelection.set(p.length>1),this.listDoubleSelection.set(p.length===2)})})),this.disposables.add(this.onDidChangeFocus(()=>{const p=this.getSelection(),m=this.getFocus();this.listHasSelectionOrFocus.set(p.length>0||m.length>0)})),this.disposables.add(c.onDidChangeConfiguration(p=>{p.affectsConfiguration(Rv)&&(this._useAltAsMultipleSelectionModifier=wd(c));let m={};if(p.affectsConfiguration(Pl)&&this.horizontalScrolling===void 0){const _=!!c.getValue(Pl);m={...m,horizontalScrolling:_}}if(p.affectsConfiguration(Pu)){const _=!!c.getValue(Pu);m={...m,scrollByPage:_}}if(p.affectsConfiguration(Ru)){const _=!!c.getValue(Ru);m={...m,smoothScrolling:_}}if(p.affectsConfiguration(yd)){const _=c.getValue(yd);m={...m,mouseWheelScrollSensitivity:_}}if(p.affectsConfiguration(Cd)){const _=c.getValue(Cd);m={...m,fastScrollSensitivity:_}}Object.keys(m).length>0&&this.updateOptions(m)})),this.navigator=new Bet(this,{configurationService:c,...o}),this.disposables.add(this.navigator)}updateOptions(e){super.updateOptions(e),e.overrideStyles!==void 0&&this.updateStyles(e.overrideStyles),e.multipleSelectionSupport!==void 0&&this.listSupportsMultiSelect.set(!!e.multipleSelectionSupport)}updateStyles(e){this.style(e?BC(e):Nv)}dispose(){this.disposables.dispose(),super.dispose()}};zie=cg([zi(6,ft),zi(7,jl),zi(8,Ut),zi(9,at)],zie);class GK extends pe{constructor(e,t){var i;super(),this.widget=e,this._onDidOpen=this._register(new ue),this.onDidOpen=this._onDidOpen.event,this._register(Ve.filter(this.widget.onDidChangeSelection,s=>kge(s.browserEvent))(s=>this.onSelectionFromKeyboard(s))),this._register(this.widget.onPointer(s=>this.onPointer(s.element,s.browserEvent))),this._register(this.widget.onMouseDblClick(s=>this.onMouseDblClick(s.element,s.browserEvent))),typeof(t==null?void 0:t.openOnSingleClick)!="boolean"&&(t!=null&&t.configurationService)?(this.openOnSingleClick=(t==null?void 0:t.configurationService.getValue(bN))!=="doubleClick",this._register(t==null?void 0:t.configurationService.onDidChangeConfiguration(s=>{s.affectsConfiguration(bN)&&(this.openOnSingleClick=(t==null?void 0:t.configurationService.getValue(bN))!=="doubleClick")}))):this.openOnSingleClick=(i=t==null?void 0:t.openOnSingleClick)!==null&&i!==void 0?i:!0}onSelectionFromKeyboard(e){if(e.elements.length!==1)return;const t=e.browserEvent,i=typeof t.preserveFocus=="boolean"?t.preserveFocus:!0,s=typeof t.pinned=="boolean"?t.pinned:!i,r=!1;this._open(this.getSelectedElement(),i,s,r,e.browserEvent)}onPointer(e,t){if(!this.openOnSingleClick||t.detail===2)return;const s=t.button===1,r=!0,o=s,a=t.ctrlKey||t.metaKey||t.altKey;this._open(e,r,o,a,t)}onMouseDblClick(e,t){if(!t)return;const i=t.target;if(i.classList.contains("monaco-tl-twistie")||i.classList.contains("monaco-icon-label")&&i.classList.contains("folder-icon")&&t.offsetX<16)return;const r=!1,o=!0,a=t.ctrlKey||t.metaKey||t.altKey;this._open(e,r,o,a,t)}_open(e,t,i,s,r){e&&this._onDidOpen.fire({editorOptions:{preserveFocus:t,pinned:i,revealIfVisible:!0},sideBySide:s,element:e,browserEvent:r})}}class E_e extends GK{constructor(e,t){super(e,t),this.widget=e}getSelectedElement(){return this.widget.getSelectedElements()[0]}}class Bet extends GK{constructor(e,t){super(e,t)}getSelectedElement(){return this.widget.getSelectedElements()[0]}}class Wet extends GK{constructor(e,t){super(e,t)}getSelectedElement(){var e;return(e=this.widget.getSelection()[0])!==null&&e!==void 0?e:void 0}}function Vet(n){let e=!1;return t=>{if(t.toKeyCodeChord().isModifierKey())return!1;if(e)return e=!1,!1;const i=n.softDispatch(t,t.target);return i.kind===1?(e=!0,!1):(e=!1,i.kind===0)}}let Uie=class extends FK{constructor(e,t,i,s,r,o,a,l,c){const{options:u,getTypeNavigationMode:h,disposable:d}=o.invokeFunction(zE,r);super(e,t,i,s,u),this.disposables.add(d),this.internals=new j_(this,r,h,r.overrideStyles,a,l,c),this.disposables.add(this.internals)}updateOptions(e){super.updateOptions(e),this.internals.updateOptions(e)}};Uie=cg([zi(5,at),zi(6,ft),zi(7,jl),zi(8,Ut)],Uie);let jie=class extends v_e{constructor(e,t,i,s,r,o,a,l,c){const{options:u,getTypeNavigationMode:h,disposable:d}=o.invokeFunction(zE,r);super(e,t,i,s,u),this.disposables.add(d),this.internals=new j_(this,r,h,r.overrideStyles,a,l,c),this.disposables.add(this.internals)}updateOptions(e={}){super.updateOptions(e),e.overrideStyles&&this.internals.updateStyleOverrides(e.overrideStyles),this.internals.updateOptions(e)}};jie=cg([zi(5,at),zi(6,ft),zi(7,jl),zi(8,Ut)],jie);let qie=class extends Net{constructor(e,t,i,s,r,o,a,l,c,u){const{options:h,getTypeNavigationMode:d,disposable:f}=a.invokeFunction(zE,o);super(e,t,i,s,r,h),this.disposables.add(f),this.internals=new j_(this,o,d,o.overrideStyles,l,c,u),this.disposables.add(this.internals)}updateOptions(e={}){super.updateOptions(e),e.overrideStyles!==void 0&&this.internals.updateStyleOverrides(e.overrideStyles),this.internals.updateOptions(e)}};qie=cg([zi(6,at),zi(7,ft),zi(8,jl),zi(9,Ut)],qie);let xW=class extends y_e{get onDidOpen(){return this.internals.onDidOpen}constructor(e,t,i,s,r,o,a,l,c,u){const{options:h,getTypeNavigationMode:d,disposable:f}=a.invokeFunction(zE,o);super(e,t,i,s,r,h),this.disposables.add(f),this.internals=new j_(this,o,d,o.overrideStyles,l,c,u),this.disposables.add(this.internals)}updateOptions(e={}){super.updateOptions(e),e.overrideStyles&&this.internals.updateStyleOverrides(e.overrideStyles),this.internals.updateOptions(e)}};xW=cg([zi(6,at),zi(7,ft),zi(8,jl),zi(9,Ut)],xW);let Kie=class extends Iet{constructor(e,t,i,s,r,o,a,l,c,u,h){const{options:d,getTypeNavigationMode:f,disposable:g}=l.invokeFunction(zE,a);super(e,t,i,s,r,o,d),this.disposables.add(g),this.internals=new j_(this,a,f,a.overrideStyles,c,u,h),this.disposables.add(this.internals)}updateOptions(e){super.updateOptions(e),this.internals.updateOptions(e)}};Kie=cg([zi(7,at),zi(8,ft),zi(9,jl),zi(10,Ut)],Kie);function D_e(n){const e=n.getValue(jK);if(e==="highlight")return Vh.Highlight;if(e==="filter")return Vh.Filter;const t=n.getValue(BP);if(t==="simple"||t==="highlight")return Vh.Highlight;if(t==="filter")return Vh.Filter}function I_e(n){const e=n.getValue(KK);if(e==="fuzzy")return U_.Fuzzy;if(e==="contiguous")return U_.Contiguous}function zE(n,e){var t;const i=n.get(Ut),s=n.get(lg),r=n.get(ft),o=n.get(at),a=()=>{const f=r.getContextKeyValue(L_e);if(f==="automatic")return Ch.Automatic;if(f==="trigger"||r.getContextKeyValue(x_e)===!1)return Ch.Trigger;const p=i.getValue(qK);if(p==="automatic")return Ch.Automatic;if(p==="trigger")return Ch.Trigger},l=e.horizontalScrolling!==void 0?e.horizontalScrolling:!!i.getValue(Pl),[c,u]=o.invokeFunction(w2,e),h=e.paddingBottom,d=e.renderIndentGuides!==void 0?e.renderIndentGuides:i.getValue(WP);return{getTypeNavigationMode:a,disposable:u,options:{keyboardSupport:!1,...c,indent:typeof i.getValue(ox)=="number"?i.getValue(ox):void 0,renderIndentGuides:d,smoothScrolling:!!i.getValue(Ru),defaultFindMode:D_e(i),defaultFindMatchType:I_e(i),horizontalScrolling:l,scrollByPage:!!i.getValue(Pu),paddingBottom:h,hideTwistiesOfChildlessElements:e.hideTwistiesOfChildlessElements,expandOnlyOnTwistieClick:(t=e.expandOnlyOnTwistieClick)!==null&&t!==void 0?t:i.getValue(VP)==="doubleClick",contextViewProvider:s,findWidgetStyles:QXe,enableStickyScroll:!!i.getValue(HP),stickyScrollMaxItemCount:Number(i.getValue($P))}}}let j_=class{get onDidOpen(){return this.navigator.onDidOpen}constructor(e,t,i,s,r,o,a){var l;this.tree=e,this.disposables=[],this.contextKeyService=y2(r,e),this.disposables.push(C2(this.contextKeyService,e)),this.listSupportsMultiSelect=v2.bindTo(this.contextKeyService),this.listSupportsMultiSelect.set(t.multipleSelectionSupport!==!1),b2.bindTo(this.contextKeyService).set(!!t.selectionNavigation),this.listSupportFindWidget=Pet.bindTo(this.contextKeyService),this.listSupportFindWidget.set((l=t.findWidgetEnabled)!==null&&l!==void 0?l:!0),this.hasSelectionOrFocus=VK.bindTo(this.contextKeyService),this.hasDoubleSelection=HK.bindTo(this.contextKeyService),this.hasMultiSelection=$K.bindTo(this.contextKeyService),this.treeElementCanCollapse=zK.bindTo(this.contextKeyService),this.treeElementHasParent=Ret.bindTo(this.contextKeyService),this.treeElementCanExpand=UK.bindTo(this.contextKeyService),this.treeElementHasChild=Met.bindTo(this.contextKeyService),this.treeFindOpen=Oet.bindTo(this.contextKeyService),this._useAltAsMultipleSelectionModifier=wd(a),this.updateStyleOverrides(s);const u=()=>{const d=e.getFocus()[0];if(!d)return;const f=e.getNode(d);this.treeElementCanCollapse.set(f.collapsible&&!f.collapsed),this.treeElementHasParent.set(!!e.getParentElement(d)),this.treeElementCanExpand.set(f.collapsible&&f.collapsed),this.treeElementHasChild.set(!!e.getFirstElementChild(d))},h=new Set;h.add(L_e),h.add(x_e),this.disposables.push(this.contextKeyService,o.register(e),e.onDidChangeSelection(()=>{const d=e.getSelection(),f=e.getFocus();this.contextKeyService.bufferChangeEvents(()=>{this.hasSelectionOrFocus.set(d.length>0||f.length>0),this.hasMultiSelection.set(d.length>1),this.hasDoubleSelection.set(d.length===2)})}),e.onDidChangeFocus(()=>{const d=e.getSelection(),f=e.getFocus();this.hasSelectionOrFocus.set(d.length>0||f.length>0),u()}),e.onDidChangeCollapseState(u),e.onDidChangeModel(u),e.onDidChangeFindOpenState(d=>this.treeFindOpen.set(d)),a.onDidChangeConfiguration(d=>{let f={};if(d.affectsConfiguration(Rv)&&(this._useAltAsMultipleSelectionModifier=wd(a)),d.affectsConfiguration(ox)){const g=a.getValue(ox);f={...f,indent:g}}if(d.affectsConfiguration(WP)&&t.renderIndentGuides===void 0){const g=a.getValue(WP);f={...f,renderIndentGuides:g}}if(d.affectsConfiguration(Ru)){const g=!!a.getValue(Ru);f={...f,smoothScrolling:g}}if(d.affectsConfiguration(jK)||d.affectsConfiguration(BP)){const g=D_e(a);f={...f,defaultFindMode:g}}if(d.affectsConfiguration(qK)||d.affectsConfiguration(BP)){const g=i();f={...f,typeNavigationMode:g}}if(d.affectsConfiguration(KK)){const g=I_e(a);f={...f,defaultFindMatchType:g}}if(d.affectsConfiguration(Pl)&&t.horizontalScrolling===void 0){const g=!!a.getValue(Pl);f={...f,horizontalScrolling:g}}if(d.affectsConfiguration(Pu)){const g=!!a.getValue(Pu);f={...f,scrollByPage:g}}if(d.affectsConfiguration(VP)&&t.expandOnlyOnTwistieClick===void 0&&(f={...f,expandOnlyOnTwistieClick:a.getValue(VP)==="doubleClick"}),d.affectsConfiguration(HP)){const g=a.getValue(HP);f={...f,enableStickyScroll:g}}if(d.affectsConfiguration($P)){const g=Math.max(1,a.getValue($P));f={...f,stickyScrollMaxItemCount:g}}if(d.affectsConfiguration(yd)){const g=a.getValue(yd);f={...f,mouseWheelScrollSensitivity:g}}if(d.affectsConfiguration(Cd)){const g=a.getValue(Cd);f={...f,fastScrollSensitivity:g}}Object.keys(f).length>0&&e.updateOptions(f)}),this.contextKeyService.onDidChangeContext(d=>{d.affectsSome(h)&&e.updateOptions({typeNavigationMode:i()})})),this.navigator=new Wet(e,{configurationService:a,...t}),this.disposables.push(this.navigator)}updateOptions(e){e.multipleSelectionSupport!==void 0&&this.listSupportsMultiSelect.set(!!e.multipleSelectionSupport)}updateStyleOverrides(e){this.tree.style(e?BC(e):Nv)}dispose(){this.disposables=yi(this.disposables)}};j_=cg([zi(4,ft),zi(5,jl),zi(6,Ut)],j_);const Het=vn.as($u.Configuration);Het.registerConfiguration({id:"workbench",order:7,title:v("workbenchConfigurationTitle","Workbench"),type:"object",properties:{[Rv]:{type:"string",enum:["ctrlCmd","alt"],markdownEnumDescriptions:[v("multiSelectModifier.ctrlCmd","Maps to `Control` on Windows and Linux and to `Command` on macOS."),v("multiSelectModifier.alt","Maps to `Alt` on Windows and Linux and to `Option` on macOS.")],default:"ctrlCmd",description:v({key:"multiSelectModifier",comment:["- `ctrlCmd` refers to a value the setting can take and should not be localized.","- `Control` and `Command` refer to the modifier keys Ctrl or Cmd on the keyboard and can be localized."]},"The modifier to be used to add an item in trees and lists to a multi-selection with the mouse (for example in the explorer, open editors and scm view). The 'Open to Side' mouse gestures - if supported - will adapt such that they do not conflict with the multiselect modifier.")},[bN]:{type:"string",enum:["singleClick","doubleClick"],default:"singleClick",description:v({key:"openModeModifier",comment:["`singleClick` and `doubleClick` refers to a value the setting can take and should not be localized."]},"Controls how to open items in trees and lists using the mouse (if supported). Note that some trees and lists might choose to ignore this setting if it is not applicable.")},[Pl]:{type:"boolean",default:!1,description:v("horizontalScrolling setting","Controls whether lists and trees support horizontal scrolling in the workbench. Warning: turning on this setting has a performance implication.")},[Pu]:{type:"boolean",default:!1,description:v("list.scrollByPage","Controls whether clicks in the scrollbar scroll page by page.")},[ox]:{type:"number",default:8,minimum:4,maximum:40,description:v("tree indent setting","Controls tree indentation in pixels.")},[WP]:{type:"string",enum:["none","onHover","always"],default:"onHover",description:v("render tree indent guides","Controls whether the tree should render indent guides.")},[Ru]:{type:"boolean",default:!1,description:v("list smoothScrolling setting","Controls whether lists and trees have smooth scrolling.")},[yd]:{type:"number",default:1,markdownDescription:v("Mouse Wheel Scroll Sensitivity","A multiplier to be used on the `deltaX` and `deltaY` of mouse wheel scroll events.")},[Cd]:{type:"number",default:5,markdownDescription:v("Fast Scroll Sensitivity","Scrolling speed multiplier when pressing `Alt`.")},[jK]:{type:"string",enum:["highlight","filter"],enumDescriptions:[v("defaultFindModeSettingKey.highlight","Highlight elements when searching. Further up and down navigation will traverse only the highlighted elements."),v("defaultFindModeSettingKey.filter","Filter elements when searching.")],default:"highlight",description:v("defaultFindModeSettingKey","Controls the default find mode for lists and trees in the workbench.")},[BP]:{type:"string",enum:["simple","highlight","filter"],enumDescriptions:[v("keyboardNavigationSettingKey.simple","Simple keyboard navigation focuses elements which match the keyboard input. Matching is done only on prefixes."),v("keyboardNavigationSettingKey.highlight","Highlight keyboard navigation highlights elements which match the keyboard input. Further up and down navigation will traverse only the highlighted elements."),v("keyboardNavigationSettingKey.filter","Filter keyboard navigation will filter out and hide all the elements which do not match the keyboard input.")],default:"highlight",description:v("keyboardNavigationSettingKey","Controls the keyboard navigation style for lists and trees in the workbench. Can be simple, highlight and filter."),deprecated:!0,deprecationMessage:v("keyboardNavigationSettingKeyDeprecated","Please use 'workbench.list.defaultFindMode' and 'workbench.list.typeNavigationMode' instead.")},[KK]:{type:"string",enum:["fuzzy","contiguous"],enumDescriptions:[v("defaultFindMatchTypeSettingKey.fuzzy","Use fuzzy matching when searching."),v("defaultFindMatchTypeSettingKey.contiguous","Use contiguous matching when searching.")],default:"fuzzy",description:v("defaultFindMatchTypeSettingKey","Controls the type of matching used when searching lists and trees in the workbench.")},[VP]:{type:"string",enum:["singleClick","doubleClick"],default:"singleClick",description:v("expand mode","Controls how tree folders are expanded when clicking the folder names. Note that some trees and lists might choose to ignore this setting if it is not applicable.")},[HP]:{type:"boolean",default:typeof Hie.quality=="string"&&Hie.quality!=="stable",description:v("sticky scroll","Controls whether sticky scrolling is enabled in trees.")},[$P]:{type:"number",minimum:1,default:7,markdownDescription:v("sticky scroll maximum items","Controls the number of sticky elements displayed in the tree when `#workbench.tree.enableStickyScroll#` is enabled.")},[qK]:{type:"string",enum:["automatic","trigger"],default:"automatic",markdownDescription:v("typeNavigationMode2","Controls how type navigation works in lists and trees in the workbench. When set to `trigger`, type navigation begins once the `list.triggerTypeNavigation` command is run.")}}});class dm{constructor(e,t,i,s){this.isProviderFirst=e,this.parent=t,this.link=i,this._rangeCallback=s,this.id=X9.nextId()}get uri(){return this.link.uri}get range(){var e,t;return(t=(e=this._range)!==null&&e!==void 0?e:this.link.targetSelectionRange)!==null&&t!==void 0?t:this.link.range}set range(e){this._range=e,this._rangeCallback(this)}get ariaMessage(){var e;const t=(e=this.parent.getPreview(this))===null||e===void 0?void 0:e.preview(this.range);return t?v({key:"aria.oneReference.preview",comment:["Placeholders are: 0: filename, 1:line number, 2: column number, 3: preview snippet of source code"]},"{0} in {1} on line {2} at column {3}",t.value,Wl(this.uri),this.range.startLineNumber,this.range.startColumn):v("aria.oneReference","in {0} on line {1} at column {2}",Wl(this.uri),this.range.startLineNumber,this.range.startColumn)}}class $et{constructor(e){this._modelReference=e}dispose(){this._modelReference.dispose()}preview(e,t=8){const i=this._modelReference.object.textEditorModel;if(!i)return;const{startLineNumber:s,startColumn:r,endLineNumber:o,endColumn:a}=e,l=i.getWordUntilPosition({lineNumber:s,column:r-t}),c=new M(s,l.startColumn,s,r),u=new M(o,a,o,1073741824),h=i.getValueInRange(c).replace(/^\s+/,""),d=i.getValueInRange(e),f=i.getValueInRange(u).replace(/\s+$/,"");return{value:h+d+f,highlight:{start:h.length,end:h.length+d.length}}}}class ax{constructor(e,t){this.parent=e,this.uri=t,this.children=[],this._previews=new qn}dispose(){yi(this._previews.values()),this._previews.clear()}getPreview(e){return this._previews.get(e.uri)}get ariaMessage(){const e=this.children.length;return e===1?v("aria.fileReferences.1","1 symbol in {0}, full path {1}",Wl(this.uri),this.uri.fsPath):v("aria.fileReferences.N","{0} symbols in {1}, full path {2}",e,Wl(this.uri),this.uri.fsPath)}async resolve(e){if(this._previews.size!==0)return this;for(const t of this.children)if(!this._previews.has(t.uri))try{const i=await e.createModelReference(t.uri);this._previews.set(t.uri,new $et(i))}catch(i){vt(i)}return this}}class oa{constructor(e,t){this.groups=[],this.references=[],this._onDidChangeReferenceRange=new ue,this.onDidChangeReferenceRange=this._onDidChangeReferenceRange.event,this._links=e,this._title=t;const[i]=e;e.sort(oa._compareReferences);let s;for(const r of e)if((!s||!Yi.isEqual(s.uri,r.uri,!0))&&(s=new ax(this,r.uri),this.groups.push(s)),s.children.length===0||oa._compareReferences(r,s.children[s.children.length-1])!==0){const o=new dm(i===r,s,r,a=>this._onDidChangeReferenceRange.fire(a));this.references.push(o),s.children.push(o)}}dispose(){yi(this.groups),this._onDidChangeReferenceRange.dispose(),this.groups.length=0}clone(){return new oa(this._links,this._title)}get title(){return this._title}get isEmpty(){return this.groups.length===0}get ariaMessage(){return this.isEmpty?v("aria.result.0","No results found"):this.references.length===1?v("aria.result.1","Found 1 symbol in {0}",this.references[0].uri.fsPath):this.groups.length===1?v("aria.result.n1","Found {0} symbols in {1}",this.references.length,this.groups[0].uri.fsPath):v("aria.result.nm","Found {0} symbols in {1} files",this.references.length,this.groups.length)}nextOrPreviousReference(e,t){const{parent:i}=e;let s=i.children.indexOf(e);const r=i.children.length,o=i.parent.groups.length;return o===1||t&&s+1<r||!t&&s>0?(t?s=(s+1)%r:s=(s+r-1)%r,i.children[s]):(s=i.parent.groups.indexOf(i),t?(s=(s+1)%o,i.parent.groups[s].children[0]):(s=(s+o-1)%o,i.parent.groups[s].children[i.parent.groups[s].children.length-1]))}nearestReference(e,t){const i=this.references.map((s,r)=>({idx:r,prefixLen:T_(s.uri.toString(),e.toString()),offsetDist:Math.abs(s.range.startLineNumber-t.lineNumber)*100+Math.abs(s.range.startColumn-t.column)})).sort((s,r)=>s.prefixLen>r.prefixLen?-1:s.prefixLen<r.prefixLen?1:s.offsetDist<r.offsetDist?-1:s.offsetDist>r.offsetDist?1:0)[0];if(i)return this.references[i.idx]}referenceAt(e,t){for(const i of this.references)if(i.uri.toString()===e.toString()&&M.containsPosition(i.range,t))return i}firstReference(){for(const e of this.references)if(e.isProviderFirst)return e;return this.references[0]}static _compareReferences(e,t){return Yi.compare(e.uri,t.uri)||M.compareRangesUsingStarts(e.range,t.range)}}class EW{constructor(e,t,i){this.options=t,this.styles=i,this.count=0,this.element=Le(e,Te(".monaco-count-badge")),this.countFormat=this.options.countFormat||"{0}",this.titleFormat=this.options.titleFormat||"",this.setCount(this.options.count||0)}setCount(e){this.count=e,this.render()}setTitleFormat(e){this.titleFormat=e,this.render()}render(){var e,t;this.element.textContent=I_(this.countFormat,this.count),this.element.title=I_(this.titleFormat,this.count),this.element.style.backgroundColor=(e=this.styles.badgeBackground)!==null&&e!==void 0?e:"",this.element.style.color=(t=this.styles.badgeForeground)!==null&&t!==void 0?t:"",this.styles.badgeBorder&&(this.element.style.border=`1px solid ${this.styles.badgeBorder}`)}}class Tp{constructor(e,t){var i;this.text="",this.title="",this.highlights=[],this.didEverRender=!1,this.supportIcons=(i=t==null?void 0:t.supportIcons)!==null&&i!==void 0?i:!1,this.domNode=Le(e,Te("span.monaco-highlighted-label"))}get element(){return this.domNode}set(e,t=[],i="",s){e||(e=""),s&&(e=Tp.escapeNewLines(e,t)),!(this.didEverRender&&this.text===e&&this.title===i&&Ya(this.highlights,t))&&(this.text=e,this.title=i,this.highlights=t,this.render())}render(){const e=[];let t=0;for(const i of this.highlights){if(i.end===i.start)continue;if(t<i.start){const o=this.text.substring(t,i.start);this.supportIcons?e.push(...Lp(o)):e.push(o),t=i.start}const s=this.text.substring(t,i.end),r=Te("span.highlight",void 0,...this.supportIcons?Lp(s):[s]);i.extraClasses&&r.classList.add(...i.extraClasses),e.push(r),t=i.end}if(t<this.text.length){const i=this.text.substring(t);this.supportIcons?e.push(...Lp(i)):e.push(i)}mr(this.domNode,...e),this.title?this.domNode.title=this.title:this.domNode.removeAttribute("title"),this.didEverRender=!0}static escapeNewLines(e,t){let i=0,s=0;return e.replace(/\r\n|\r|\n/g,(r,o)=>{s=r===`\r +`?-1:0,o+=i;for(const a of t)a.end<=o||(a.start>=o&&(a.start+=s),a.end>=o&&(a.end+=s));return i+=s,"⏎"})}}class Vw{constructor(e){this._element=e}get element(){return this._element}set textContent(e){this.disposed||e===this._textContent||(this._textContent=e,this._element.textContent=e)}set className(e){this.disposed||e===this._className||(this._className=e,this._element.className=e)}set empty(e){this.disposed||e===this._empty||(this._empty=e,this._element.style.marginLeft=e?"0":"")}dispose(){this.disposed=!0}}class zP extends pe{constructor(e,t){super(),this.customHovers=new Map,this.creationOptions=t,this.domNode=this._register(new Vw(Le(e,Te(".monaco-icon-label")))),this.labelContainer=Le(this.domNode.element,Te(".monaco-icon-label-container")),this.nameContainer=Le(this.labelContainer,Te("span.monaco-icon-name-container")),t!=null&&t.supportHighlights||t!=null&&t.supportIcons?this.nameNode=new jet(this.nameContainer,!!t.supportIcons):this.nameNode=new zet(this.nameContainer),this.hoverDelegate=t==null?void 0:t.hoverDelegate}get element(){return this.domNode.element}setLabel(e,t,i){var s;const r=["monaco-icon-label"],o=["monaco-icon-label-container"];let a="";if(i&&(i.extraClasses&&r.push(...i.extraClasses),i.italic&&r.push("italic"),i.strikethrough&&r.push("strikethrough"),i.disabledCommand&&o.push("disabled"),i.title&&(typeof i.title=="string"?a+=i.title:a+=e)),this.domNode.className=r.join(" "),this.domNode.element.setAttribute("aria-label",a),this.labelContainer.className=o.join(" "),this.setupHover(i!=null&&i.descriptionTitle?this.labelContainer:this.element,i==null?void 0:i.title),this.nameNode.setLabel(e,i),t||this.descriptionNode){const l=this.getOrCreateDescriptionNode();l instanceof Tp?(l.set(t||"",i?i.descriptionMatches:void 0,void 0,i==null?void 0:i.labelEscapeNewLines),this.setupHover(l.element,i==null?void 0:i.descriptionTitle)):(l.textContent=t&&(i!=null&&i.labelEscapeNewLines)?Tp.escapeNewLines(t,[]):t||"",this.setupHover(l.element,(i==null?void 0:i.descriptionTitle)||""),l.empty=!t)}if(i!=null&&i.suffix||this.suffixNode){const l=this.getOrCreateSuffixNode();l.textContent=(s=i==null?void 0:i.suffix)!==null&&s!==void 0?s:""}}setupHover(e,t){const i=this.customHovers.get(e);if(i&&(i.dispose(),this.customHovers.delete(e)),!t){e.removeAttribute("title");return}if(!this.hoverDelegate)IGe(e,t);else{const s=Hme(this.hoverDelegate,e,t);s&&this.customHovers.set(e,s)}}dispose(){super.dispose();for(const e of this.customHovers.values())e.dispose();this.customHovers.clear()}getOrCreateSuffixNode(){if(!this.suffixNode){const e=this._register(new Vw(L9e(this.nameContainer,Te("span.monaco-icon-suffix-container"))));this.suffixNode=this._register(new Vw(Le(e.element,Te("span.label-suffix"))))}return this.suffixNode}getOrCreateDescriptionNode(){var e;if(!this.descriptionNode){const t=this._register(new Vw(Le(this.labelContainer,Te("span.monaco-icon-description-container"))));!((e=this.creationOptions)===null||e===void 0)&&e.supportDescriptionHighlights?this.descriptionNode=new Tp(Le(t.element,Te("span.label-description")),{supportIcons:!!this.creationOptions.supportIcons}):this.descriptionNode=this._register(new Vw(Le(t.element,Te("span.label-description"))))}return this.descriptionNode}}class zet{constructor(e){this.container=e,this.label=void 0,this.singleLabel=void 0}setLabel(e,t){if(!(this.label===e&&Ya(this.options,t)))if(this.label=e,this.options=t,typeof e=="string")this.singleLabel||(this.container.innerText="",this.container.classList.remove("multiple"),this.singleLabel=Le(this.container,Te("a.label-name",{id:t==null?void 0:t.domId}))),this.singleLabel.textContent=e;else{this.container.innerText="",this.container.classList.add("multiple"),this.singleLabel=void 0;for(let i=0;i<e.length;i++){const s=e[i],r=(t==null?void 0:t.domId)&&`${t==null?void 0:t.domId}_${i}`;Le(this.container,Te("a.label-name",{id:r,"data-icon-label-count":e.length,"data-icon-label-index":i,role:"treeitem"},s)),i<e.length-1&&Le(this.container,Te("span.label-separator",void 0,(t==null?void 0:t.separator)||"/"))}}}}function Uet(n,e,t){if(!t)return;let i=0;return n.map(s=>{const r={start:i,end:i+s.length},o=t.map(a=>Cr.intersect(r,a)).filter(a=>!Cr.isEmpty(a)).map(({start:a,end:l})=>({start:a-i,end:l-i}));return i=r.end+e.length,o})}class jet{constructor(e,t){this.container=e,this.supportIcons=t,this.label=void 0,this.singleLabel=void 0}setLabel(e,t){if(!(this.label===e&&Ya(this.options,t)))if(this.label=e,this.options=t,typeof e=="string")this.singleLabel||(this.container.innerText="",this.container.classList.remove("multiple"),this.singleLabel=new Tp(Le(this.container,Te("a.label-name",{id:t==null?void 0:t.domId})),{supportIcons:this.supportIcons})),this.singleLabel.set(e,t==null?void 0:t.matches,void 0,t==null?void 0:t.labelEscapeNewLines);else{this.container.innerText="",this.container.classList.add("multiple"),this.singleLabel=void 0;const i=(t==null?void 0:t.separator)||"/",s=Uet(e,i,t==null?void 0:t.matches);for(let r=0;r<e.length;r++){const o=e[r],a=s?s[r]:void 0,l=(t==null?void 0:t.domId)&&`${t==null?void 0:t.domId}_${r}`,c=Te("a.label-name",{id:l,"data-icon-label-count":e.length,"data-icon-label-index":r,role:"treeitem"});new Tp(Le(this.container,c),{supportIcons:this.supportIcons}).set(o,a,void 0,t==null?void 0:t.labelEscapeNewLines),r<e.length-1&&Le(c,Te("span.label-separator",void 0,i))}}}}const Ry=Bt("labelService");var S2=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},k2=function(n,e){return function(t,i){e(t,i,n)}},DW;let IW=class{constructor(e){this._resolverService=e}hasChildren(e){return e instanceof oa||e instanceof ax}getChildren(e){if(e instanceof oa)return e.groups;if(e instanceof ax)return e.resolve(this._resolverService).then(t=>t.children);throw new Error("bad tree")}};IW=S2([k2(0,Bo)],IW);class qet{getHeight(){return 23}getTemplateId(e){return e instanceof ax?lx.id:UE.id}}let TW=class{constructor(e){this._keybindingService=e}getKeyboardNavigationLabel(e){var t;if(e instanceof dm){const i=(t=e.parent.getPreview(e))===null||t===void 0?void 0:t.preview(e.range);if(i)return i.value}return Wl(e.uri)}};TW=S2([k2(0,Di)],TW);class Ket{getId(e){return e instanceof dm?e.id:e.uri}}let NW=class extends pe{constructor(e,t){super(),this._labelService=t;const i=document.createElement("div");i.classList.add("reference-file"),this.file=this._register(new zP(i,{supportHighlights:!0})),this.badge=new EW(Le(i,Te(".count")),{},I1e),e.appendChild(i)}set(e,t){const i=KO(e.uri);this.file.setLabel(this._labelService.getUriBasenameLabel(e.uri),this._labelService.getUriLabel(i,{relative:!0}),{title:this._labelService.getUriLabel(e.uri),matches:t});const s=e.children.length;this.badge.setCount(s),s>1?this.badge.setTitleFormat(v("referencesCount","{0} references",s)):this.badge.setTitleFormat(v("referenceCount","{0} reference",s))}};NW=S2([k2(1,Ry)],NW);let lx=DW=class{constructor(e){this._instantiationService=e,this.templateId=DW.id}renderTemplate(e){return this._instantiationService.createInstance(NW,e)}renderElement(e,t,i){i.set(e.element,AE(e.filterData))}disposeTemplate(e){e.dispose()}};lx.id="FileReferencesRenderer";lx=DW=S2([k2(0,at)],lx);class Get{constructor(e){this.label=new Tp(e)}set(e,t){var i;const s=(i=e.parent.getPreview(e))===null||i===void 0?void 0:i.preview(e.range);if(!s||!s.value)this.label.set(`${Wl(e.uri)}:${e.range.startLineNumber+1}:${e.range.startColumn+1}`);else{const{value:r,highlight:o}=s;t&&!Lu.isDefault(t)?(this.label.element.classList.toggle("referenceMatch",!1),this.label.set(r,AE(t))):(this.label.element.classList.toggle("referenceMatch",!0),this.label.set(r,[o]))}}}class UE{constructor(){this.templateId=UE.id}renderTemplate(e){return new Get(e)}renderElement(e,t,i){i.set(e.element,e.filterData)}disposeTemplate(){}}UE.id="OneReferenceRenderer";class Yet{getWidgetAriaLabel(){return v("treeAriaLabel","References")}getAriaLabel(e){return e.ariaMessage}}var Zet=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},$d=function(n,e){return function(t,i){e(t,i,n)}};class L2{constructor(e,t){this._editor=e,this._model=t,this._decorations=new Map,this._decorationIgnoreSet=new Set,this._callOnDispose=new xe,this._callOnModelChange=new xe,this._callOnDispose.add(this._editor.onDidChangeModel(()=>this._onModelChanged())),this._onModelChanged()}dispose(){this._callOnModelChange.dispose(),this._callOnDispose.dispose(),this.removeDecorations()}_onModelChanged(){this._callOnModelChange.clear();const e=this._editor.getModel();if(e){for(const t of this._model.references)if(t.uri.toString()===e.uri.toString()){this._addDecorations(t.parent);return}}}_addDecorations(e){if(!this._editor.hasModel())return;this._callOnModelChange.add(this._editor.getModel().onDidChangeDecorations(()=>this._onDecorationChanged()));const t=[],i=[];for(let s=0,r=e.children.length;s<r;s++){const o=e.children[s];this._decorationIgnoreSet.has(o.id)||o.uri.toString()===this._editor.getModel().uri.toString()&&(t.push({range:o.range,options:L2.DecorationOptions}),i.push(s))}this._editor.changeDecorations(s=>{const r=s.deltaDecorations([],t);for(let o=0;o<r.length;o++)this._decorations.set(r[o],e.children[i[o]])})}_onDecorationChanged(){const e=[],t=this._editor.getModel();if(t){for(const[i,s]of this._decorations){const r=t.getDecorationRange(i);if(!r)continue;let o=!1;if(!M.equalsRange(r,s.range)){if(M.spansMultipleLines(r))o=!0;else{const a=s.range.endColumn-s.range.startColumn,l=r.endColumn-r.startColumn;a!==l&&(o=!0)}o?(this._decorationIgnoreSet.add(s.id),e.push(i)):s.range=r}}for(let i=0,s=e.length;i<s;i++)this._decorations.delete(e[i]);this._editor.removeDecorations(e)}}removeDecorations(){this._editor.removeDecorations([...this._decorations.keys()]),this._decorations.clear()}}L2.DecorationOptions=yt.register({description:"reference-decoration",stickiness:1,className:"reference-decoration"});class Xet{constructor(){this.ratio=.7,this.heightInLines=18}static fromJSON(e){let t,i;try{const s=JSON.parse(e);t=s.ratio,i=s.heightInLines}catch{}return{ratio:t||.7,heightInLines:i||18}}}class Qet extends xW{}let AW=class extends OP{constructor(e,t,i,s,r,o,a,l,c,u,h,d){super(e,{showFrame:!1,showArrow:!0,isResizeable:!0,isAccessible:!0,supportOnTitleClick:!0},o),this._defaultTreeKeyboardSupport=t,this.layoutData=i,this._textModelResolverService=r,this._instantiationService=o,this._peekViewService=a,this._uriLabel=l,this._undoRedoService=c,this._keybindingService=u,this._languageService=h,this._languageConfigurationService=d,this._disposeOnNewModel=new xe,this._callOnDispose=new xe,this._onDidSelectReference=new ue,this.onDidSelectReference=this._onDidSelectReference.event,this._dim=new ni(0,0),this._applyTheme(s.getColorTheme()),this._callOnDispose.add(s.onDidColorThemeChange(this._applyTheme.bind(this))),this._peekViewService.addExclusiveWidget(e,this),this.create()}dispose(){this.setModel(void 0),this._callOnDispose.dispose(),this._disposeOnNewModel.dispose(),yi(this._preview),yi(this._previewNotAvailableMessage),yi(this._tree),yi(this._previewModelReference),this._splitView.dispose(),super.dispose()}_applyTheme(e){const t=e.getColor(OJe)||me.transparent;this.style({arrowColor:t,frameColor:t,headerBackgroundColor:e.getColor(MJe)||me.transparent,primaryHeadingColor:e.getColor(r_e),secondaryHeadingColor:e.getColor(o_e)})}show(e){super.show(e,this.layoutData.heightInLines||18)}focusOnReferenceTree(){this._tree.domFocus()}focusOnPreviewEditor(){this._preview.focus()}isPreviewEditorFocused(){return this._preview.hasTextFocus()}_onTitleClick(e){this._preview&&this._preview.getModel()&&this._onDidSelectReference.fire({element:this._getFocusedReference(),kind:e.ctrlKey||e.metaKey||e.altKey?"side":"open",source:"title"})}_fillBody(e){this.setCssClass("reference-zone-widget"),this._messageContainer=Le(e,Te("div.messages")),Jr(this._messageContainer),this._splitView=new c_e(e,{orientation:1}),this._previewContainer=Le(e,Te("div.preview.inline"));const t={scrollBeyondLastLine:!1,scrollbar:{verticalScrollbarSize:14,horizontal:"auto",useShadows:!0,verticalHasArrows:!1,horizontalHasArrows:!1,alwaysConsumeMouseWheel:!0},overviewRulerLanes:2,fixedOverflowWidgets:!0,minimap:{enabled:!1}};this._preview=this._instantiationService.createInstance(hm,this._previewContainer,t,{},this.editor),Jr(this._previewContainer),this._previewNotAvailableMessage=new _d(v("missingPreviewMessage","no preview available"),Ga,_d.DEFAULT_CREATION_OPTIONS,null,this._undoRedoService,this._languageService,this._languageConfigurationService),this._treeContainer=Le(e,Te("div.ref-tree.inline"));const i={keyboardSupport:this._defaultTreeKeyboardSupport,accessibilityProvider:new Yet,keyboardNavigationLabelProvider:this._instantiationService.createInstance(TW),identityProvider:new Ket,openOnSingleClick:!0,selectionNavigation:!0,overrideStyles:{listBackground:FJe}};this._defaultTreeKeyboardSupport&&this._callOnDispose.add(Mn(this._treeContainer,"keydown",r=>{r.equals(9)&&(this._keybindingService.dispatchEvent(r,r.target),r.stopPropagation())},!0)),this._tree=this._instantiationService.createInstance(Qet,"ReferencesWidget",this._treeContainer,new qet,[this._instantiationService.createInstance(lx),this._instantiationService.createInstance(UE)],this._instantiationService.createInstance(IW),i),this._splitView.addView({onDidChange:Ve.None,element:this._previewContainer,minimumSize:200,maximumSize:Number.MAX_VALUE,layout:r=>{this._preview.layout({height:this._dim.height,width:r})}},FP.Distribute),this._splitView.addView({onDidChange:Ve.None,element:this._treeContainer,minimumSize:100,maximumSize:Number.MAX_VALUE,layout:r=>{this._treeContainer.style.height=`${this._dim.height}px`,this._treeContainer.style.width=`${r}px`,this._tree.layout(this._dim.height,r)}},FP.Distribute),this._disposables.add(this._splitView.onDidSashChange(()=>{this._dim.width&&(this.layoutData.ratio=this._splitView.getViewSize(0)/this._dim.width)},void 0));const s=(r,o)=>{r instanceof dm&&(o==="show"&&this._revealReference(r,!1),this._onDidSelectReference.fire({element:r,kind:o,source:"tree"}))};this._tree.onDidOpen(r=>{r.sideBySide?s(r.element,"side"):r.editorOptions.pinned?s(r.element,"goto"):s(r.element,"show")}),Jr(this._treeContainer)}_onWidth(e){this._dim&&this._doLayoutBody(this._dim.height,e)}_doLayoutBody(e,t){super._doLayoutBody(e,t),this._dim=new ni(t,e),this.layoutData.heightInLines=this._viewZone?this._viewZone.heightInLines:this.layoutData.heightInLines,this._splitView.layout(t),this._splitView.resizeView(0,t*this.layoutData.ratio)}setSelection(e){return this._revealReference(e,!0).then(()=>{this._model&&(this._tree.setSelection([e]),this._tree.setFocus([e]))})}setModel(e){return this._disposeOnNewModel.clear(),this._model=e,this._model?this._onNewModel():Promise.resolve()}_onNewModel(){return this._model?this._model.isEmpty?(this.setTitle(""),this._messageContainer.innerText=v("noResults","No results"),Xo(this._messageContainer),Promise.resolve(void 0)):(Jr(this._messageContainer),this._decorationsManager=new L2(this._preview,this._model),this._disposeOnNewModel.add(this._decorationsManager),this._disposeOnNewModel.add(this._model.onDidChangeReferenceRange(e=>this._tree.rerender(e))),this._disposeOnNewModel.add(this._preview.onMouseDown(e=>{const{event:t,target:i}=e;if(t.detail!==2)return;const s=this._getFocusedReference();s&&this._onDidSelectReference.fire({element:{uri:s.uri,range:i.range},kind:t.ctrlKey||t.metaKey||t.altKey?"side":"open",source:"editor"})})),this.container.classList.add("results-loaded"),Xo(this._treeContainer),Xo(this._previewContainer),this._splitView.layout(this._dim.width),this.focusOnReferenceTree(),this._tree.setInput(this._model.groups.length===1?this._model.groups[0]:this._model)):Promise.resolve(void 0)}_getFocusedReference(){const[e]=this._tree.getFocus();if(e instanceof dm)return e;if(e instanceof ax&&e.children.length>0)return e.children[0]}async revealReference(e){await this._revealReference(e,!1),this._onDidSelectReference.fire({element:e,kind:"goto",source:"tree"})}async _revealReference(e,t){if(this._revealedReference===e)return;this._revealedReference=e,e.uri.scheme!==wt.inMemory?this.setTitle(Cje(e.uri),this._uriLabel.getUriLabel(KO(e.uri))):this.setTitle(v("peekView.alternateTitle","References"));const i=this._textModelResolverService.createModelReference(e.uri);this._tree.getInput()===e.parent?this._tree.reveal(e):(t&&this._tree.reveal(e.parent),await this._tree.expand(e.parent),this._tree.reveal(e));const s=await i;if(!this._model){s.dispose();return}yi(this._previewModelReference);const r=s.object;if(r){const o=this._preview.getModel()===r.textEditorModel?0:1,a=M.lift(e.range).collapseToStart();this._previewModelReference=s,this._preview.setModel(r.textEditorModel),this._preview.setSelection(a),this._preview.revealRangeInCenter(a,o)}else this._preview.setModel(this._previewNotAvailableMessage),s.dispose()}};AW=Zet([$d(3,Ms),$d(4,Bo),$d(5,at),$d(6,s_e),$d(7,Ry),$d(8,YO),$d(9,Di),$d(10,sn),$d(11,Bi)],AW);var Jet=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},r0=function(n,e){return function(t,i){e(t,i,n)}},yN;const Mv=new ze("referenceSearchVisible",!1,v("referenceSearchVisible","Whether reference peek is visible, like 'Peek References' or 'Peek Definition'"));let fm=yN=class{static get(e){return e.getContribution(yN.ID)}constructor(e,t,i,s,r,o,a,l){this._defaultTreeKeyboardSupport=e,this._editor=t,this._editorService=s,this._notificationService=r,this._instantiationService=o,this._storageService=a,this._configurationService=l,this._disposables=new xe,this._requestIdPool=0,this._ignoreModelChangeEvent=!1,this._referenceSearchVisible=Mv.bindTo(i)}dispose(){var e,t;this._referenceSearchVisible.reset(),this._disposables.dispose(),(e=this._widget)===null||e===void 0||e.dispose(),(t=this._model)===null||t===void 0||t.dispose(),this._widget=void 0,this._model=void 0}toggleWidget(e,t,i){let s;if(this._widget&&(s=this._widget.position),this.closeWidget(),s&&e.containsPosition(s))return;this._peekMode=i,this._referenceSearchVisible.set(!0),this._disposables.add(this._editor.onDidChangeModelLanguage(()=>{this.closeWidget()})),this._disposables.add(this._editor.onDidChangeModel(()=>{this._ignoreModelChangeEvent||this.closeWidget()}));const r="peekViewLayout",o=Xet.fromJSON(this._storageService.get(r,0,"{}"));this._widget=this._instantiationService.createInstance(AW,this._editor,this._defaultTreeKeyboardSupport,o),this._widget.setTitle(v("labelLoading","Loading...")),this._widget.show(e),this._disposables.add(this._widget.onDidClose(()=>{t.cancel(),this._widget&&(this._storageService.store(r,JSON.stringify(this._widget.layoutData),0,1),this._widget=void 0),this.closeWidget()})),this._disposables.add(this._widget.onDidSelectReference(l=>{const{element:c,kind:u}=l;if(c)switch(u){case"open":(l.source!=="editor"||!this._configurationService.getValue("editor.stablePeek"))&&this.openReference(c,!1,!1);break;case"side":this.openReference(c,!0,!1);break;case"goto":i?this._gotoReference(c,!0):this.openReference(c,!1,!0);break}}));const a=++this._requestIdPool;t.then(l=>{var c;if(a!==this._requestIdPool||!this._widget){l.dispose();return}return(c=this._model)===null||c===void 0||c.dispose(),this._model=l,this._widget.setModel(this._model).then(()=>{if(this._widget&&this._model&&this._editor.hasModel()){this._model.isEmpty?this._widget.setMetaTitle(""):this._widget.setMetaTitle(v("metaTitle.N","{0} ({1})",this._model.title,this._model.references.length));const u=this._editor.getModel().uri,h=new he(e.startLineNumber,e.startColumn),d=this._model.nearestReference(u,h);if(d)return this._widget.setSelection(d).then(()=>{this._widget&&this._editor.getOption(86)==="editor"&&this._widget.focusOnPreviewEditor()})}})},l=>{this._notificationService.error(l)})}changeFocusBetweenPreviewAndReferences(){this._widget&&(this._widget.isPreviewEditorFocused()?this._widget.focusOnReferenceTree():this._widget.focusOnPreviewEditor())}async goToNextOrPreviousReference(e){if(!this._editor.hasModel()||!this._model||!this._widget)return;const t=this._widget.position;if(!t)return;const i=this._model.nearestReference(this._editor.getModel().uri,t);if(!i)return;const s=this._model.nextOrPreviousReference(i,e),r=this._editor.hasTextFocus(),o=this._widget.isPreviewEditorFocused();await this._widget.setSelection(s),await this._gotoReference(s,!1),r?this._editor.focus():this._widget&&o&&this._widget.focusOnPreviewEditor()}async revealReference(e){!this._editor.hasModel()||!this._model||!this._widget||await this._widget.revealReference(e)}closeWidget(e=!0){var t,i;(t=this._widget)===null||t===void 0||t.dispose(),(i=this._model)===null||i===void 0||i.dispose(),this._referenceSearchVisible.reset(),this._disposables.clear(),this._widget=void 0,this._model=void 0,e&&this._editor.focus(),this._requestIdPool+=1}_gotoReference(e,t){var i;(i=this._widget)===null||i===void 0||i.hide(),this._ignoreModelChangeEvent=!0;const s=M.lift(e.range).collapseToStart();return this._editorService.openCodeEditor({resource:e.uri,options:{selection:s,selectionSource:"code.jump",pinned:t}},this._editor).then(r=>{var o;if(this._ignoreModelChangeEvent=!1,!r||!this._widget){this.closeWidget();return}if(this._editor===r)this._widget.show(s),this._widget.focusOnReferenceTree();else{const a=yN.get(r),l=this._model.clone();this.closeWidget(),r.focus(),a==null||a.toggleWidget(s,Ns(c=>Promise.resolve(l)),(o=this._peekMode)!==null&&o!==void 0?o:!1)}},r=>{this._ignoreModelChangeEvent=!1,vt(r)})}openReference(e,t,i){t||this.closeWidget();const{uri:s,range:r}=e;this._editorService.openCodeEditor({resource:s,options:{selection:r,selectionSource:"code.jump",pinned:i}},this._editor,t)}};fm.ID="editor.contrib.referencesController";fm=yN=Jet([r0(2,ft),r0(3,ri),r0(4,is),r0(5,at),r0(6,Rc),r0(7,Ut)],fm);function Ov(n,e){const t=PJe(n);if(!t)return;const i=fm.get(t);i&&e(i)}Mo.registerCommandAndKeybindingRule({id:"togglePeekWidgetFocus",weight:100,primary:ws(2089,60),when:ke.or(Mv,Oo.inPeekEditor),handler(n){Ov(n,e=>{e.changeFocusBetweenPreviewAndReferences()})}});Mo.registerCommandAndKeybindingRule({id:"goToNextReference",weight:90,primary:62,secondary:[70],when:ke.or(Mv,Oo.inPeekEditor),handler(n){Ov(n,e=>{e.goToNextOrPreviousReference(!0)})}});Mo.registerCommandAndKeybindingRule({id:"goToPreviousReference",weight:90,primary:1086,secondary:[1094],when:ke.or(Mv,Oo.inPeekEditor),handler(n){Ov(n,e=>{e.goToNextOrPreviousReference(!1)})}});Yt.registerCommandAlias("goToNextReferenceFromEmbeddedEditor","goToNextReference");Yt.registerCommandAlias("goToPreviousReferenceFromEmbeddedEditor","goToPreviousReference");Yt.registerCommandAlias("closeReferenceSearchEditor","closeReferenceSearch");Yt.registerCommand("closeReferenceSearch",n=>Ov(n,e=>e.closeWidget()));Mo.registerKeybindingRule({id:"closeReferenceSearch",weight:-1,primary:9,secondary:[1033],when:ke.and(Oo.inPeekEditor,ke.not("config.editor.stablePeek"))});Mo.registerKeybindingRule({id:"closeReferenceSearch",weight:250,primary:9,secondary:[1033],when:ke.and(Mv,ke.not("config.editor.stablePeek"))});Mo.registerCommandAndKeybindingRule({id:"revealReference",weight:200,primary:3,mac:{primary:3,secondary:[2066]},when:ke.and(Mv,k_e,zK.negate(),UK.negate()),handler(n){var e;const i=(e=n.get(jl).lastFocusedList)===null||e===void 0?void 0:e.getFocus();Array.isArray(i)&&i[0]instanceof dm&&Ov(n,s=>s.revealReference(i[0]))}});Mo.registerCommandAndKeybindingRule({id:"openReferenceToSide",weight:100,primary:2051,mac:{primary:259},when:ke.and(Mv,k_e,zK.negate(),UK.negate()),handler(n){var e;const i=(e=n.get(jl).lastFocusedList)===null||e===void 0?void 0:e.getFocus();Array.isArray(i)&&i[0]instanceof dm&&Ov(n,s=>s.openReference(i[0],!0,!0))}});Yt.registerCommand("openReference",n=>{var e;const i=(e=n.get(jl).lastFocusedList)===null||e===void 0?void 0:e.getFocus();Array.isArray(i)&&i[0]instanceof dm&&Ov(n,s=>s.openReference(i[0],!1,!0))});var T_e=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},kS=function(n,e){return function(t,i){e(t,i,n)}};const YK=new ze("hasSymbols",!1,v("hasSymbols","Whether there are symbol locations that can be navigated via keyboard-only.")),x2=Bt("ISymbolNavigationService");let PW=class{constructor(e,t,i,s){this._editorService=t,this._notificationService=i,this._keybindingService=s,this._currentModel=void 0,this._currentIdx=-1,this._ignoreEditorChange=!1,this._ctxHasSymbols=YK.bindTo(e)}reset(){var e,t;this._ctxHasSymbols.reset(),(e=this._currentState)===null||e===void 0||e.dispose(),(t=this._currentMessage)===null||t===void 0||t.dispose(),this._currentModel=void 0,this._currentIdx=-1}put(e){const t=e.parent.parent;if(t.references.length<=1){this.reset();return}this._currentModel=t,this._currentIdx=t.references.indexOf(e),this._ctxHasSymbols.set(!0),this._showMessage();const i=new RW(this._editorService),s=i.onDidChange(r=>{if(this._ignoreEditorChange)return;const o=this._editorService.getActiveCodeEditor();if(!o)return;const a=o.getModel(),l=o.getPosition();if(!a||!l)return;let c=!1,u=!1;for(const h of t.references)if(Iq(h.uri,a.uri))c=!0,u=u||M.containsPosition(h.range,l);else if(c)break;(!c||!u)&&this.reset()});this._currentState=_c(i,s)}revealNext(e){if(!this._currentModel)return Promise.resolve();this._currentIdx+=1,this._currentIdx%=this._currentModel.references.length;const t=this._currentModel.references[this._currentIdx];return this._showMessage(),this._ignoreEditorChange=!0,this._editorService.openCodeEditor({resource:t.uri,options:{selection:M.collapseToStart(t.range),selectionRevealType:3}},e).finally(()=>{this._ignoreEditorChange=!1})}_showMessage(){var e;(e=this._currentMessage)===null||e===void 0||e.dispose();const t=this._keybindingService.lookupKeybinding("editor.gotoNextSymbolFromResult"),i=t?v("location.kb","Symbol {0} of {1}, {2} for next",this._currentIdx+1,this._currentModel.references.length,t.getLabel()):v("location","Symbol {0} of {1}",this._currentIdx+1,this._currentModel.references.length);this._currentMessage=this._notificationService.status(i)}};PW=T_e([kS(0,ft),kS(1,ri),kS(2,is),kS(3,Di)],PW);jt(x2,PW,1);Be(new class extends Ks{constructor(){super({id:"editor.gotoNextSymbolFromResult",precondition:YK,kbOpts:{weight:100,primary:70}})}runEditorCommand(n,e){return n.get(x2).revealNext(e)}});Mo.registerCommandAndKeybindingRule({id:"editor.gotoNextSymbolFromResult.cancel",weight:100,when:YK,primary:9,handler(n){n.get(x2).reset()}});let RW=class{constructor(e){this._listener=new Map,this._disposables=new xe,this._onDidChange=new ue,this.onDidChange=this._onDidChange.event,this._disposables.add(e.onCodeEditorRemove(this._onDidRemoveEditor,this)),this._disposables.add(e.onCodeEditorAdd(this._onDidAddEditor,this)),e.listCodeEditors().forEach(this._onDidAddEditor,this)}dispose(){this._disposables.dispose(),this._onDidChange.dispose(),yi(this._listener.values())}_onDidAddEditor(e){this._listener.set(e,_c(e.onDidChangeCursorPosition(t=>this._onDidChange.fire({editor:e})),e.onDidChangeModelContent(t=>this._onDidChange.fire({editor:e}))))}_onDidRemoveEditor(e){var t;(t=this._listener.get(e))===null||t===void 0||t.dispose(),this._listener.delete(e)}};RW=T_e([kS(0,ri)],RW);async function jE(n,e,t,i){const r=t.ordered(n).map(a=>Promise.resolve(i(a,n,e)).then(void 0,l=>{Jn(l)})),o=await Promise.all(r);return Tu(o.flat())}function E2(n,e,t,i){return jE(e,t,n,(s,r,o)=>s.provideDefinition(r,o,i))}function N_e(n,e,t,i){return jE(e,t,n,(s,r,o)=>s.provideDeclaration(r,o,i))}function A_e(n,e,t,i){return jE(e,t,n,(s,r,o)=>s.provideImplementation(r,o,i))}function P_e(n,e,t,i){return jE(e,t,n,(s,r,o)=>s.provideTypeDefinition(r,o,i))}function D2(n,e,t,i,s){return jE(e,t,n,async(r,o,a)=>{const l=await r.provideReferences(o,a,{includeDeclaration:!0},s);if(!i||!l||l.length!==2)return l;const c=await r.provideReferences(o,a,{includeDeclaration:!1},s);return c&&c.length===1?c:l})}async function qE(n){const e=await n(),t=new oa(e,""),i=t.references.map(s=>s.link);return t.dispose(),i}xd("_executeDefinitionProvider",(n,e,t)=>{const i=n.get(Ge),s=E2(i.definitionProvider,e,t,Ft.None);return qE(()=>s)});xd("_executeTypeDefinitionProvider",(n,e,t)=>{const i=n.get(Ge),s=P_e(i.typeDefinitionProvider,e,t,Ft.None);return qE(()=>s)});xd("_executeDeclarationProvider",(n,e,t)=>{const i=n.get(Ge),s=N_e(i.declarationProvider,e,t,Ft.None);return qE(()=>s)});xd("_executeReferenceProvider",(n,e,t)=>{const i=n.get(Ge),s=D2(i.referenceProvider,e,t,!1,Ft.None);return qE(()=>s)});xd("_executeImplementationProvider",(n,e,t)=>{const i=n.get(Ge),s=A_e(i.implementationProvider,e,t,Ft.None);return qE(()=>s)});var Hw,$w,zw,DI,II,TI,NI,AI;tr.appendMenuItem(B.EditorContext,{submenu:B.EditorContextPeek,title:v("peek.submenu","Peek"),group:"navigation",order:100});class My{static is(e){return!e||typeof e!="object"?!1:!!(e instanceof My||he.isIPosition(e.position)&&e.model)}constructor(e,t){this.model=e,this.position=t}}class Vr extends Hu{static all(){return Vr._allSymbolNavigationCommands.values()}static _patchConfig(e){const t={...e,f1:!0};if(t.menu)for(const i of Vt.wrap(t.menu))(i.id===B.EditorContext||i.id===B.EditorContextPeek)&&(i.when=ke.and(e.precondition,i.when));return t}constructor(e,t){super(Vr._patchConfig(t)),this.configuration=e,Vr._allSymbolNavigationCommands.set(t.id,this)}runEditorCommand(e,t,i,s){if(!t.hasModel())return Promise.resolve(void 0);const r=e.get(is),o=e.get(ri),a=e.get(Mm),l=e.get(x2),c=e.get(Ge),u=e.get(at),h=t.getModel(),d=t.getPosition(),f=My.is(i)?i:new My(h,d),g=new lm(t,5),p=lO(this._getLocationModel(c,f.model,f.position,g.token),g.token).then(async m=>{var _;if(!m||g.token.isCancellationRequested)return;ha(m.ariaMessage);let b;if(m.referenceAt(h.uri,d)){const w=this._getAlternativeCommand(t);!Vr._activeAlternativeCommands.has(w)&&Vr._allSymbolNavigationCommands.has(w)&&(b=Vr._allSymbolNavigationCommands.get(w))}const y=m.references.length;if(y===0){if(!this.configuration.muteMessage){const w=h.getWordAtPosition(d);(_=ra.get(t))===null||_===void 0||_.showMessage(this._getNoResultFoundMessage(w),d)}}else if(y===1&&b)Vr._activeAlternativeCommands.add(this.desc.id),u.invokeFunction(w=>b.runEditorCommand(w,t,i,s).finally(()=>{Vr._activeAlternativeCommands.delete(this.desc.id)}));else return this._onResult(o,l,t,m,s)},m=>{r.error(m)}).finally(()=>{g.dispose()});return a.showWhile(p,250),p}async _onResult(e,t,i,s,r){const o=this._getGoToPreference(i);if(!(i instanceof hm)&&(this.configuration.openInPeek||o==="peek"&&s.references.length>1))this._openInPeek(i,s,r);else{const a=s.firstReference(),l=s.references.length>1&&o==="gotoAndPeek",c=await this._openReference(i,e,a,this.configuration.openToSide,!l);l&&c?this._openInPeek(c,s,r):s.dispose(),o==="goto"&&t.put(a)}}async _openReference(e,t,i,s,r){let o;if(Pze(i)&&(o=i.targetSelectionRange),o||(o=i.range),!o)return;const a=await t.openCodeEditor({resource:i.uri,options:{selection:M.collapseToStart(o),selectionRevealType:3,selectionSource:"code.jump"}},e,s);if(a){if(r){const l=a.getModel(),c=a.createDecorationsCollection([{range:o,options:{description:"symbol-navigate-action-highlight",className:"symbolHighlight"}}]);setTimeout(()=>{a.getModel()===l&&c.clear()},350)}return a}}_openInPeek(e,t,i){const s=fm.get(e);s&&e.hasModel()?s.toggleWidget(i??e.getSelection(),Ns(r=>Promise.resolve(t)),this.configuration.openInPeek):t.dispose()}}Vr._allSymbolNavigationCommands=new Map;Vr._activeAlternativeCommands=new Set;class KE extends Vr{async _getLocationModel(e,t,i,s){return new oa(await E2(e.definitionProvider,t,i,s),v("def.title","Definitions"))}_getNoResultFoundMessage(e){return e&&e.word?v("noResultWord","No definition found for '{0}'",e.word):v("generic.noResults","No definition found")}_getAlternativeCommand(e){return e.getOption(58).alternativeDefinitionCommand}_getGoToPreference(e){return e.getOption(58).multipleDefinitions}}Zi((Hw=class extends KE{constructor(){super({openToSide:!1,openInPeek:!1,muteMessage:!1},{id:Hw.id,title:{value:v("actions.goToDecl.label","Go to Definition"),original:"Go to Definition",mnemonicTitle:v({key:"miGotoDefinition",comment:["&& denotes a mnemonic"]},"Go to &&Definition")},precondition:ke.and($.hasDefinitionProvider,$.isInWalkThroughSnippet.toNegated()),keybinding:[{when:$.editorTextFocus,primary:70,weight:100},{when:ke.and($.editorTextFocus,C_e),primary:2118,weight:100}],menu:[{id:B.EditorContext,group:"navigation",order:1.1},{id:B.MenubarGoMenu,precondition:null,group:"4_symbol_nav",order:2}]}),Yt.registerCommandAlias("editor.action.goToDeclaration",Hw.id)}},Hw.id="editor.action.revealDefinition",Hw));Zi(($w=class extends KE{constructor(){super({openToSide:!0,openInPeek:!1,muteMessage:!1},{id:$w.id,title:{value:v("actions.goToDeclToSide.label","Open Definition to the Side"),original:"Open Definition to the Side"},precondition:ke.and($.hasDefinitionProvider,$.isInWalkThroughSnippet.toNegated()),keybinding:[{when:$.editorTextFocus,primary:ws(2089,70),weight:100},{when:ke.and($.editorTextFocus,C_e),primary:ws(2089,2118),weight:100}]}),Yt.registerCommandAlias("editor.action.openDeclarationToTheSide",$w.id)}},$w.id="editor.action.revealDefinitionAside",$w));Zi((zw=class extends KE{constructor(){super({openToSide:!1,openInPeek:!0,muteMessage:!1},{id:zw.id,title:{value:v("actions.previewDecl.label","Peek Definition"),original:"Peek Definition"},precondition:ke.and($.hasDefinitionProvider,Oo.notInPeekEditor,$.isInWalkThroughSnippet.toNegated()),keybinding:{when:$.editorTextFocus,primary:582,linux:{primary:3140},weight:100},menu:{id:B.EditorContextPeek,group:"peek",order:2}}),Yt.registerCommandAlias("editor.action.previewDeclaration",zw.id)}},zw.id="editor.action.peekDefinition",zw));class R_e extends Vr{async _getLocationModel(e,t,i,s){return new oa(await N_e(e.declarationProvider,t,i,s),v("decl.title","Declarations"))}_getNoResultFoundMessage(e){return e&&e.word?v("decl.noResultWord","No declaration found for '{0}'",e.word):v("decl.generic.noResults","No declaration found")}_getAlternativeCommand(e){return e.getOption(58).alternativeDeclarationCommand}_getGoToPreference(e){return e.getOption(58).multipleDeclarations}}Zi((DI=class extends R_e{constructor(){super({openToSide:!1,openInPeek:!1,muteMessage:!1},{id:DI.id,title:{value:v("actions.goToDeclaration.label","Go to Declaration"),original:"Go to Declaration",mnemonicTitle:v({key:"miGotoDeclaration",comment:["&& denotes a mnemonic"]},"Go to &&Declaration")},precondition:ke.and($.hasDeclarationProvider,$.isInWalkThroughSnippet.toNegated()),menu:[{id:B.EditorContext,group:"navigation",order:1.3},{id:B.MenubarGoMenu,precondition:null,group:"4_symbol_nav",order:3}]})}_getNoResultFoundMessage(e){return e&&e.word?v("decl.noResultWord","No declaration found for '{0}'",e.word):v("decl.generic.noResults","No declaration found")}},DI.id="editor.action.revealDeclaration",DI));Zi(class extends R_e{constructor(){super({openToSide:!1,openInPeek:!0,muteMessage:!1},{id:"editor.action.peekDeclaration",title:{value:v("actions.peekDecl.label","Peek Declaration"),original:"Peek Declaration"},precondition:ke.and($.hasDeclarationProvider,Oo.notInPeekEditor,$.isInWalkThroughSnippet.toNegated()),menu:{id:B.EditorContextPeek,group:"peek",order:3}})}});class M_e extends Vr{async _getLocationModel(e,t,i,s){return new oa(await P_e(e.typeDefinitionProvider,t,i,s),v("typedef.title","Type Definitions"))}_getNoResultFoundMessage(e){return e&&e.word?v("goToTypeDefinition.noResultWord","No type definition found for '{0}'",e.word):v("goToTypeDefinition.generic.noResults","No type definition found")}_getAlternativeCommand(e){return e.getOption(58).alternativeTypeDefinitionCommand}_getGoToPreference(e){return e.getOption(58).multipleTypeDefinitions}}Zi((II=class extends M_e{constructor(){super({openToSide:!1,openInPeek:!1,muteMessage:!1},{id:II.ID,title:{value:v("actions.goToTypeDefinition.label","Go to Type Definition"),original:"Go to Type Definition",mnemonicTitle:v({key:"miGotoTypeDefinition",comment:["&& denotes a mnemonic"]},"Go to &&Type Definition")},precondition:ke.and($.hasTypeDefinitionProvider,$.isInWalkThroughSnippet.toNegated()),keybinding:{when:$.editorTextFocus,primary:0,weight:100},menu:[{id:B.EditorContext,group:"navigation",order:1.4},{id:B.MenubarGoMenu,precondition:null,group:"4_symbol_nav",order:3}]})}},II.ID="editor.action.goToTypeDefinition",II));Zi((TI=class extends M_e{constructor(){super({openToSide:!1,openInPeek:!0,muteMessage:!1},{id:TI.ID,title:{value:v("actions.peekTypeDefinition.label","Peek Type Definition"),original:"Peek Type Definition"},precondition:ke.and($.hasTypeDefinitionProvider,Oo.notInPeekEditor,$.isInWalkThroughSnippet.toNegated()),menu:{id:B.EditorContextPeek,group:"peek",order:4}})}},TI.ID="editor.action.peekTypeDefinition",TI));class O_e extends Vr{async _getLocationModel(e,t,i,s){return new oa(await A_e(e.implementationProvider,t,i,s),v("impl.title","Implementations"))}_getNoResultFoundMessage(e){return e&&e.word?v("goToImplementation.noResultWord","No implementation found for '{0}'",e.word):v("goToImplementation.generic.noResults","No implementation found")}_getAlternativeCommand(e){return e.getOption(58).alternativeImplementationCommand}_getGoToPreference(e){return e.getOption(58).multipleImplementations}}Zi((NI=class extends O_e{constructor(){super({openToSide:!1,openInPeek:!1,muteMessage:!1},{id:NI.ID,title:{value:v("actions.goToImplementation.label","Go to Implementations"),original:"Go to Implementations",mnemonicTitle:v({key:"miGotoImplementation",comment:["&& denotes a mnemonic"]},"Go to &&Implementations")},precondition:ke.and($.hasImplementationProvider,$.isInWalkThroughSnippet.toNegated()),keybinding:{when:$.editorTextFocus,primary:2118,weight:100},menu:[{id:B.EditorContext,group:"navigation",order:1.45},{id:B.MenubarGoMenu,precondition:null,group:"4_symbol_nav",order:4}]})}},NI.ID="editor.action.goToImplementation",NI));Zi((AI=class extends O_e{constructor(){super({openToSide:!1,openInPeek:!0,muteMessage:!1},{id:AI.ID,title:{value:v("actions.peekImplementation.label","Peek Implementations"),original:"Peek Implementations"},precondition:ke.and($.hasImplementationProvider,Oo.notInPeekEditor,$.isInWalkThroughSnippet.toNegated()),keybinding:{when:$.editorTextFocus,primary:3142,weight:100},menu:{id:B.EditorContextPeek,group:"peek",order:5}})}},AI.ID="editor.action.peekImplementation",AI));class F_e extends Vr{_getNoResultFoundMessage(e){return e?v("references.no","No references found for '{0}'",e.word):v("references.noGeneric","No references found")}_getAlternativeCommand(e){return e.getOption(58).alternativeReferenceCommand}_getGoToPreference(e){return e.getOption(58).multipleReferences}}Zi(class extends F_e{constructor(){super({openToSide:!1,openInPeek:!1,muteMessage:!1},{id:"editor.action.goToReferences",title:{value:v("goToReferences.label","Go to References"),original:"Go to References",mnemonicTitle:v({key:"miGotoReference",comment:["&& denotes a mnemonic"]},"Go to &&References")},precondition:ke.and($.hasReferenceProvider,Oo.notInPeekEditor,$.isInWalkThroughSnippet.toNegated()),keybinding:{when:$.editorTextFocus,primary:1094,weight:100},menu:[{id:B.EditorContext,group:"navigation",order:1.45},{id:B.MenubarGoMenu,precondition:null,group:"4_symbol_nav",order:5}]})}async _getLocationModel(e,t,i,s){return new oa(await D2(e.referenceProvider,t,i,!0,s),v("ref.title","References"))}});Zi(class extends F_e{constructor(){super({openToSide:!1,openInPeek:!0,muteMessage:!1},{id:"editor.action.referenceSearch.trigger",title:{value:v("references.action.label","Peek References"),original:"Peek References"},precondition:ke.and($.hasReferenceProvider,Oo.notInPeekEditor,$.isInWalkThroughSnippet.toNegated()),menu:{id:B.EditorContextPeek,group:"peek",order:6}})}async _getLocationModel(e,t,i,s){return new oa(await D2(e.referenceProvider,t,i,!1,s),v("ref.title","References"))}});class ett extends Vr{constructor(e,t,i){super(e,{id:"editor.action.goToLocation",title:{value:v("label.generic","Go to Any Symbol"),original:"Go to Any Symbol"},precondition:ke.and(Oo.notInPeekEditor,$.isInWalkThroughSnippet.toNegated())}),this._references=t,this._gotoMultipleBehaviour=i}async _getLocationModel(e,t,i,s){return new oa(this._references,v("generic.title","Locations"))}_getNoResultFoundMessage(e){return e&&v("generic.noResult","No results for '{0}'",e.word)||""}_getGoToPreference(e){var t;return(t=this._gotoMultipleBehaviour)!==null&&t!==void 0?t:e.getOption(58).multipleReferences}_getAlternativeCommand(){return""}}Yt.registerCommand({id:"editor.action.goToLocations",metadata:{description:"Go to locations from a position in a file",args:[{name:"uri",description:"The text document in which to start",constraint:it},{name:"position",description:"The position at which to start",constraint:he.isIPosition},{name:"locations",description:"An array of locations.",constraint:Array},{name:"multiple",description:"Define what to do when having multiple results, either `peek`, `gotoAndPeek`, or `goto"},{name:"noResultsMessage",description:"Human readable message that shows when locations is empty."}]},handler:async(n,e,t,i,s,r,o)=>{Si(it.isUri(e)),Si(he.isIPosition(t)),Si(Array.isArray(i)),Si(typeof s>"u"||typeof s=="string"),Si(typeof o>"u"||typeof o=="boolean");const a=n.get(ri),l=await a.openCodeEditor({resource:e},a.getFocusedCodeEditor());if(bd(l))return l.setPosition(t),l.revealPositionInCenterIfOutsideViewport(t,0),l.invokeWithinContext(c=>{const u=new class extends ett{_getNoResultFoundMessage(h){return r||super._getNoResultFoundMessage(h)}}({muteMessage:!r,openInPeek:!!o,openToSide:!1},i,s);c.get(at).invokeFunction(u.run.bind(u),l)})}});Yt.registerCommand({id:"editor.action.peekLocations",metadata:{description:"Peek locations from a position in a file",args:[{name:"uri",description:"The text document in which to start",constraint:it},{name:"position",description:"The position at which to start",constraint:he.isIPosition},{name:"locations",description:"An array of locations.",constraint:Array},{name:"multiple",description:"Define what to do when having multiple results, either `peek`, `gotoAndPeek`, or `goto"}]},handler:async(n,e,t,i,s)=>{n.get(Dn).executeCommand("editor.action.goToLocations",e,t,i,s,void 0,!0)}});Yt.registerCommand({id:"editor.action.findReferences",handler:(n,e,t)=>{Si(it.isUri(e)),Si(he.isIPosition(t));const i=n.get(Ge),s=n.get(ri);return s.openCodeEditor({resource:e},s.getFocusedCodeEditor()).then(r=>{if(!bd(r)||!r.hasModel())return;const o=fm.get(r);if(!o)return;const a=Ns(c=>D2(i.referenceProvider,r.getModel(),he.lift(t),!1,c).then(u=>new oa(u,v("ref.title","References")))),l=new M(t.lineNumber,t.column,t.lineNumber,t.column);return Promise.resolve(o.toggleWidget(l,a,!1))})}});Yt.registerCommandAlias("editor.action.showReferences","editor.action.peekLocations");var ttt=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},A3=function(n,e){return function(t,i){e(t,i,n)}},LS;let q_=LS=class{constructor(e,t,i,s){this.textModelResolverService=t,this.languageService=i,this.languageFeaturesService=s,this.toUnhook=new xe,this.toUnhookForKeyboard=new xe,this.currentWordAtPosition=null,this.previousPromise=null,this.editor=e,this.linkDecorations=this.editor.createDecorationsCollection();const r=new f2(e);this.toUnhook.add(r),this.toUnhook.add(r.onMouseMoveOrRelevantKeyDown(([o,a])=>{this.startFindDefinitionFromMouse(o,a??void 0)})),this.toUnhook.add(r.onExecute(o=>{this.isEnabled(o)&&this.gotoDefinition(o.target.position,o.hasSideBySideModifier).catch(a=>{vt(a)}).finally(()=>{this.removeLinkDecorations()})})),this.toUnhook.add(r.onCancel(()=>{this.removeLinkDecorations(),this.currentWordAtPosition=null}))}static get(e){return e.getContribution(LS.ID)}async startFindDefinitionFromCursor(e){await this.startFindDefinition(e),this.toUnhookForKeyboard.add(this.editor.onDidChangeCursorPosition(()=>{this.currentWordAtPosition=null,this.removeLinkDecorations(),this.toUnhookForKeyboard.clear()})),this.toUnhookForKeyboard.add(this.editor.onKeyDown(t=>{t&&(this.currentWordAtPosition=null,this.removeLinkDecorations(),this.toUnhookForKeyboard.clear())}))}startFindDefinitionFromMouse(e,t){if(e.target.type===9&&this.linkDecorations.length>0)return;if(!this.editor.hasModel()||!this.isEnabled(e,t)){this.currentWordAtPosition=null,this.removeLinkDecorations();return}const i=e.target.position;this.startFindDefinition(i)}async startFindDefinition(e){var t;this.toUnhookForKeyboard.clear();const i=e?(t=this.editor.getModel())===null||t===void 0?void 0:t.getWordAtPosition(e):null;if(!i){this.currentWordAtPosition=null,this.removeLinkDecorations();return}if(this.currentWordAtPosition&&this.currentWordAtPosition.startColumn===i.startColumn&&this.currentWordAtPosition.endColumn===i.endColumn&&this.currentWordAtPosition.word===i.word)return;this.currentWordAtPosition=i;const s=new C1e(this.editor,15);this.previousPromise&&(this.previousPromise.cancel(),this.previousPromise=null),this.previousPromise=Ns(a=>this.findDefinition(e,a));let r;try{r=await this.previousPromise}catch(a){vt(a);return}if(!r||!r.length||!s.validate(this.editor)){this.removeLinkDecorations();return}const o=r[0].originSelectionRange?M.lift(r[0].originSelectionRange):new M(e.lineNumber,i.startColumn,e.lineNumber,i.endColumn);if(r.length>1){let a=o;for(const{originSelectionRange:l}of r)l&&(a=M.plusRange(a,l));this.addDecoration(a,new xr().appendText(v("multipleResults","Click to show {0} definitions.",r.length)))}else{const a=r[0];if(!a.uri)return;this.textModelResolverService.createModelReference(a.uri).then(l=>{if(!l.object||!l.object.textEditorModel){l.dispose();return}const{object:{textEditorModel:c}}=l,{startLineNumber:u}=a.range;if(u<1||u>c.getLineCount()){l.dispose();return}const h=this.getPreviewValue(c,u,a),d=this.languageService.guessLanguageIdByFilepathOrFirstLine(c.uri);this.addDecoration(o,h?new xr().appendCodeblock(d||"",h):void 0),l.dispose()})}}getPreviewValue(e,t,i){let s=i.range;return s.endLineNumber-s.startLineNumber>=LS.MAX_SOURCE_PREVIEW_LINES&&(s=this.getPreviewRangeBasedOnIndentation(e,t)),this.stripIndentationFromPreviewRange(e,t,s)}stripIndentationFromPreviewRange(e,t,i){let r=e.getLineFirstNonWhitespaceColumn(t);for(let a=t+1;a<i.endLineNumber;a++){const l=e.getLineFirstNonWhitespaceColumn(a);r=Math.min(r,l)}return e.getValueInRange(i).replace(new RegExp(`^\\s{${r-1}}`,"gm"),"").trim()}getPreviewRangeBasedOnIndentation(e,t){const i=e.getLineFirstNonWhitespaceColumn(t),s=Math.min(e.getLineCount(),t+LS.MAX_SOURCE_PREVIEW_LINES);let r=t+1;for(;r<s;r++){const o=e.getLineFirstNonWhitespaceColumn(r);if(i===o)break}return new M(t,1,r+1,1)}addDecoration(e,t){const i={range:e,options:{description:"goto-definition-link",inlineClassName:"goto-definition-link",hoverMessage:t}};this.linkDecorations.set([i])}removeLinkDecorations(){this.linkDecorations.clear()}isEnabled(e,t){var i;return this.editor.hasModel()&&e.isLeftClick&&e.isNoneOrSingleMouseDown&&e.target.type===6&&!(((i=e.target.detail.injectedText)===null||i===void 0?void 0:i.options)instanceof rm)&&(e.hasTriggerModifier||(t?t.keyCodeIsTriggerKey:!1))&&this.languageFeaturesService.definitionProvider.has(this.editor.getModel())}findDefinition(e,t){const i=this.editor.getModel();return i?E2(this.languageFeaturesService.definitionProvider,i,e,t):Promise.resolve(null)}gotoDefinition(e,t){return this.editor.setPosition(e),this.editor.invokeWithinContext(i=>{const s=!t&&this.editor.getOption(87)&&!this.isInPeekEditor(i);return new KE({openToSide:t,openInPeek:s,muteMessage:!0},{title:{value:"",original:""},id:"",precondition:void 0}).run(i)})}isInPeekEditor(e){const t=e.get(ft);return Oo.inPeekEditor.getValue(t)}dispose(){this.toUnhook.dispose(),this.toUnhookForKeyboard.dispose()}};q_.ID="editor.contrib.gotodefinitionatposition";q_.MAX_SOURCE_PREVIEW_LINES=8;q_=LS=ttt([A3(1,Bo),A3(2,sn),A3(3,Ge)],q_);ti(q_.ID,q_,2);const PI=Te;class B_e extends pe{constructor(){super(),this.containerDomNode=document.createElement("div"),this.containerDomNode.className="monaco-hover",this.containerDomNode.tabIndex=0,this.containerDomNode.setAttribute("role","tooltip"),this.contentsDomNode=document.createElement("div"),this.contentsDomNode.className="monaco-hover-content",this.scrollbar=this._register(new CE(this.contentsDomNode,{consumeMouseWheelIfScrollbarIsNeeded:!0})),this.containerDomNode.appendChild(this.scrollbar.getDomNode())}onContentsChanged(){this.scrollbar.scanDomNode()}}class ZK extends pe{static render(e,t,i){return new ZK(e,t,i)}constructor(e,t,i){super(),this.actionContainer=Le(e,PI("div.action-container")),this.actionContainer.setAttribute("tabindex","0"),this.action=Le(this.actionContainer,PI("a.action")),this.action.setAttribute("role","button"),t.iconClass&&Le(this.action,PI(`span.icon.${t.iconClass}`));const s=Le(this.action,PI("span"));s.textContent=i?`${t.label} (${i})`:t.label,this._register(Ce(this.actionContainer,We.CLICK,r=>{r.stopPropagation(),r.preventDefault(),t.run(this.actionContainer)})),this._register(Ce(this.actionContainer,We.KEY_DOWN,r=>{const o=new Ki(r);(o.equals(3)||o.equals(10))&&(r.stopPropagation(),r.preventDefault(),t.run(this.actionContainer))})),this.setEnabled(!0)}setEnabled(e){e?(this.actionContainer.classList.remove("disabled"),this.actionContainer.removeAttribute("aria-disabled")):(this.actionContainer.classList.add("disabled"),this.actionContainer.setAttribute("aria-disabled","true"))}}function itt(n,e){return n&&e?v("acessibleViewHint","Inspect this in the accessible view with {0}.",e):n?v("acessibleViewHintNoKbOpen","Inspect this in the accessible view via the command Open Accessible View which is currently not triggerable via keybinding."):""}let ntt=class{constructor(e,t,i){this.value=e,this.isComplete=t,this.hasLoadingMessage=i}};class W_e extends pe{constructor(e,t){super(),this._editor=e,this._computer=t,this._onResult=this._register(new ue),this.onResult=this._onResult.event,this._firstWaitScheduler=this._register(new Ei(()=>this._triggerAsyncComputation(),0)),this._secondWaitScheduler=this._register(new Ei(()=>this._triggerSyncComputation(),0)),this._loadingMessageScheduler=this._register(new Ei(()=>this._triggerLoadingMessage(),0)),this._state=0,this._asyncIterable=null,this._asyncIterableDone=!1,this._result=[]}dispose(){this._asyncIterable&&(this._asyncIterable.cancel(),this._asyncIterable=null),super.dispose()}get _hoverTime(){return this._editor.getOption(60).delay}get _firstWaitTime(){return this._hoverTime/2}get _secondWaitTime(){return this._hoverTime-this._firstWaitTime}get _loadingMessageTime(){return 3*this._hoverTime}_setState(e,t=!0){this._state=e,t&&this._fireResult()}_triggerAsyncComputation(){this._setState(2),this._secondWaitScheduler.schedule(this._secondWaitTime),this._computer.computeAsync?(this._asyncIterableDone=!1,this._asyncIterable=QBe(e=>this._computer.computeAsync(e)),(async()=>{try{for await(const e of this._asyncIterable)e&&(this._result.push(e),this._fireResult());this._asyncIterableDone=!0,(this._state===3||this._state===4)&&this._setState(0)}catch(e){vt(e)}})()):this._asyncIterableDone=!0}_triggerSyncComputation(){this._computer.computeSync&&(this._result=this._result.concat(this._computer.computeSync())),this._setState(this._asyncIterableDone?0:3)}_triggerLoadingMessage(){this._state===3&&this._setState(4)}_fireResult(){if(this._state===1||this._state===2)return;const e=this._state===0,t=this._state===4;this._onResult.fire(new ntt(this._result.slice(0),e,t))}start(e){if(e===0)this._state===0&&(this._setState(1),this._firstWaitScheduler.schedule(this._firstWaitTime),this._loadingMessageScheduler.schedule(this._loadingMessageTime));else switch(this._state){case 0:this._triggerAsyncComputation(),this._secondWaitScheduler.cancel(),this._triggerSyncComputation();break;case 2:this._secondWaitScheduler.cancel(),this._triggerSyncComputation();break}}cancel(){this._firstWaitScheduler.cancel(),this._secondWaitScheduler.cancel(),this._loadingMessageScheduler.cancel(),this._asyncIterable&&(this._asyncIterable.cancel(),this._asyncIterable=null),this._result=[],this._setState(0,!1)}}class P3{constructor(e,t,i,s){this.priority=e,this.range=t,this.initialMousePosX=i,this.initialMousePosY=s,this.type=1}equals(e){return e.type===1&&this.range.equalsRange(e.range)}canAdoptVisibleHover(e,t){return e.type===1&&t.lineNumber===this.range.startLineNumber}}class CN{constructor(e,t,i,s,r,o){this.priority=e,this.owner=t,this.range=i,this.initialMousePosX=s,this.initialMousePosY=r,this.supportsMarkerHover=o,this.type=2}equals(e){return e.type===2&&this.owner===e.owner}canAdoptVisibleHover(e,t){return e.type===2&&this.owner===e.owner}}const Fv=new class{constructor(){this._participants=[]}register(e){this._participants.push(e)}getAll(){return this._participants}};class XK{constructor(){this._onDidWillResize=new ue,this.onDidWillResize=this._onDidWillResize.event,this._onDidResize=new ue,this.onDidResize=this._onDidResize.event,this._sashListener=new xe,this._size=new ni(0,0),this._minSize=new ni(0,0),this._maxSize=new ni(Number.MAX_SAFE_INTEGER,Number.MAX_SAFE_INTEGER),this.domNode=document.createElement("div"),this._eastSash=new wr(this.domNode,{getVerticalSashLeft:()=>this._size.width},{orientation:0}),this._westSash=new wr(this.domNode,{getVerticalSashLeft:()=>0},{orientation:0}),this._northSash=new wr(this.domNode,{getHorizontalSashTop:()=>0},{orientation:1,orthogonalEdge:CP.North}),this._southSash=new wr(this.domNode,{getHorizontalSashTop:()=>this._size.height},{orientation:1,orthogonalEdge:CP.South}),this._northSash.orthogonalStartSash=this._westSash,this._northSash.orthogonalEndSash=this._eastSash,this._southSash.orthogonalStartSash=this._westSash,this._southSash.orthogonalEndSash=this._eastSash;let e,t=0,i=0;this._sashListener.add(Ve.any(this._northSash.onDidStart,this._eastSash.onDidStart,this._southSash.onDidStart,this._westSash.onDidStart)(()=>{e===void 0&&(this._onDidWillResize.fire(),e=this._size,t=0,i=0)})),this._sashListener.add(Ve.any(this._northSash.onDidEnd,this._eastSash.onDidEnd,this._southSash.onDidEnd,this._westSash.onDidEnd)(()=>{e!==void 0&&(e=void 0,t=0,i=0,this._onDidResize.fire({dimension:this._size,done:!0}))})),this._sashListener.add(this._eastSash.onDidChange(s=>{e&&(i=s.currentX-s.startX,this.layout(e.height+t,e.width+i),this._onDidResize.fire({dimension:this._size,done:!1,east:!0}))})),this._sashListener.add(this._westSash.onDidChange(s=>{e&&(i=-(s.currentX-s.startX),this.layout(e.height+t,e.width+i),this._onDidResize.fire({dimension:this._size,done:!1,west:!0}))})),this._sashListener.add(this._northSash.onDidChange(s=>{e&&(t=-(s.currentY-s.startY),this.layout(e.height+t,e.width+i),this._onDidResize.fire({dimension:this._size,done:!1,north:!0}))})),this._sashListener.add(this._southSash.onDidChange(s=>{e&&(t=s.currentY-s.startY,this.layout(e.height+t,e.width+i),this._onDidResize.fire({dimension:this._size,done:!1,south:!0}))})),this._sashListener.add(Ve.any(this._eastSash.onDidReset,this._westSash.onDidReset)(s=>{this._preferredSize&&(this.layout(this._size.height,this._preferredSize.width),this._onDidResize.fire({dimension:this._size,done:!0}))})),this._sashListener.add(Ve.any(this._northSash.onDidReset,this._southSash.onDidReset)(s=>{this._preferredSize&&(this.layout(this._preferredSize.height,this._size.width),this._onDidResize.fire({dimension:this._size,done:!0}))}))}dispose(){this._northSash.dispose(),this._southSash.dispose(),this._eastSash.dispose(),this._westSash.dispose(),this._sashListener.dispose(),this._onDidResize.dispose(),this._onDidWillResize.dispose(),this.domNode.remove()}enableSashes(e,t,i,s){this._northSash.state=e?3:0,this._eastSash.state=t?3:0,this._southSash.state=i?3:0,this._westSash.state=s?3:0}layout(e=this.size.height,t=this.size.width){const{height:i,width:s}=this._minSize,{height:r,width:o}=this._maxSize;e=Math.max(i,Math.min(r,e)),t=Math.max(s,Math.min(o,t));const a=new ni(t,e);ni.equals(a,this._size)||(this.domNode.style.height=e+"px",this.domNode.style.width=t+"px",this._size=a,this._northSash.layout(),this._eastSash.layout(),this._southSash.layout(),this._westSash.layout())}clearSashHoverState(){this._eastSash.clearSashHoverState(),this._westSash.clearSashHoverState(),this._northSash.clearSashHoverState(),this._southSash.clearSashHoverState()}get size(){return this._size}set maxSize(e){this._maxSize=e}get maxSize(){return this._maxSize}set minSize(e){this._minSize=e}get minSize(){return this._minSize}set preferredSize(e){this._preferredSize=e}get preferredSize(){return this._preferredSize}}const stt=30,rtt=24;class ott extends pe{constructor(e,t=new ni(10,10)){super(),this._editor=e,this.allowEditorOverflow=!0,this.suppressMouseDown=!1,this._resizableNode=this._register(new XK),this._contentPosition=null,this._isResizing=!1,this._resizableNode.domNode.style.position="absolute",this._resizableNode.minSize=ni.lift(t),this._resizableNode.layout(t.height,t.width),this._resizableNode.enableSashes(!0,!0,!0,!0),this._register(this._resizableNode.onDidResize(i=>{this._resize(new ni(i.dimension.width,i.dimension.height)),i.done&&(this._isResizing=!1)})),this._register(this._resizableNode.onDidWillResize(()=>{this._isResizing=!0}))}get isResizing(){return this._isResizing}getDomNode(){return this._resizableNode.domNode}getPosition(){return this._contentPosition}get position(){var e;return!((e=this._contentPosition)===null||e===void 0)&&e.position?he.lift(this._contentPosition.position):void 0}_availableVerticalSpaceAbove(e){const t=this._editor.getDomNode(),i=this._editor.getScrolledVisiblePosition(e);return!t||!i?void 0:ys(t).top+i.top-stt}_availableVerticalSpaceBelow(e){const t=this._editor.getDomNode(),i=this._editor.getScrolledVisiblePosition(e);if(!t||!i)return;const s=ys(t),r=Zp(t.ownerDocument.body),o=s.top+i.top+i.height;return r.height-o-rtt}_findPositionPreference(e,t){var i,s;const r=Math.min((i=this._availableVerticalSpaceBelow(t))!==null&&i!==void 0?i:1/0,e),o=Math.min((s=this._availableVerticalSpaceAbove(t))!==null&&s!==void 0?s:1/0,e),a=Math.min(Math.max(o,r),e),l=Math.min(e,a);let c;return this._editor.getOption(60).above?c=l<=o?1:2:c=l<=r?2:1,c===1?this._resizableNode.enableSashes(!0,!0,!1,!1):this._resizableNode.enableSashes(!1,!0,!0,!1),c}_resize(e){this._resizableNode.layout(e.height,e.width)}}var QK=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},j1=function(n,e){return function(t,i){e(t,i,n)}},wN,sh;const Gie=Te;let UP=wN=class extends pe{constructor(e,t,i){super(),this._editor=e,this._instantiationService=t,this._keybindingService=i,this._currentResult=null,this._widget=this._register(this._instantiationService.createInstance(Np,this._editor)),this._participants=[];for(const s of Fv.getAll())this._participants.push(this._instantiationService.createInstance(s,this._editor));this._participants.sort((s,r)=>s.hoverOrdinal-r.hoverOrdinal),this._computer=new qP(this._editor,this._participants),this._hoverOperation=this._register(new W_e(this._editor,this._computer)),this._register(this._hoverOperation.onResult(s=>{if(!this._computer.anchor)return;const r=s.hasLoadingMessage?this._addLoadingMessage(s.value):s.value;this._withResult(new V_e(this._computer.anchor,r,s.isComplete))})),this._register(Mn(this._widget.getDomNode(),"keydown",s=>{s.equals(9)&&this.hide()})),this._register(kn.onDidChange(()=>{this._widget.position&&this._currentResult&&this._setCurrentResult(this._currentResult)}))}get widget(){return this._widget}maybeShowAt(e){if(this._widget.isResizing)return!0;const t=[];for(const s of this._participants)if(s.suggestHoverAnchor){const r=s.suggestHoverAnchor(e);r&&t.push(r)}const i=e.target;if(i.type===6&&t.push(new P3(0,i.range,e.event.posx,e.event.posy)),i.type===7){const s=this._editor.getOption(50).typicalHalfwidthCharacterWidth/2;!i.detail.isAfterLines&&typeof i.detail.horizontalDistanceToText=="number"&&i.detail.horizontalDistanceToText<s&&t.push(new P3(0,i.range,e.event.posx,e.event.posy))}return t.length===0?this._startShowingOrUpdateHover(null,0,0,!1,e):(t.sort((s,r)=>r.priority-s.priority),this._startShowingOrUpdateHover(t[0],0,0,!1,e))}startShowingAtRange(e,t,i,s){this._startShowingOrUpdateHover(new P3(0,e,void 0,void 0),t,i,s,null)}_startShowingOrUpdateHover(e,t,i,s,r){return!this._widget.position||!this._currentResult?e?(this._startHoverOperationIfNecessary(e,t,i,s,!1),!0):!1:this._editor.getOption(60).sticky&&r&&this._widget.isMouseGettingCloser(r.event.posx,r.event.posy)?(e&&this._startHoverOperationIfNecessary(e,t,i,s,!0),!0):e?e&&this._currentResult.anchor.equals(e)?!0:e.canAdoptVisibleHover(this._currentResult.anchor,this._widget.position)?(this._setCurrentResult(this._currentResult.filter(e)),this._startHoverOperationIfNecessary(e,t,i,s,!1),!0):(this._setCurrentResult(null),this._startHoverOperationIfNecessary(e,t,i,s,!1),!0):(this._setCurrentResult(null),!1)}_startHoverOperationIfNecessary(e,t,i,s,r){this._computer.anchor&&this._computer.anchor.equals(e)||(this._hoverOperation.cancel(),this._computer.anchor=e,this._computer.shouldFocus=s,this._computer.source=i,this._computer.insistOnKeepingHoverVisible=r,this._hoverOperation.start(t))}_setCurrentResult(e){this._currentResult!==e&&(e&&e.messages.length===0&&(e=null),this._currentResult=e,this._currentResult?this._renderMessages(this._currentResult.anchor,this._currentResult.messages):this._widget.hide())}hide(){this._computer.anchor=null,this._hoverOperation.cancel(),this._setCurrentResult(null)}get isColorPickerVisible(){return this._widget.isColorPickerVisible}get isVisibleFromKeyboard(){return this._widget.isVisibleFromKeyboard}get isVisible(){return this._widget.isVisible}get isFocused(){return this._widget.isFocused}get isResizing(){return this._widget.isResizing}containsNode(e){return e?this._widget.getDomNode().contains(e):!1}_addLoadingMessage(e){if(this._computer.anchor){for(const t of this._participants)if(t.createLoadingMessage){const i=t.createLoadingMessage(this._computer.anchor);if(i)return e.slice(0).concat([i])}}return e}_withResult(e){this._widget.position&&this._currentResult&&this._currentResult.isComplete&&(!e.isComplete||this._computer.insistOnKeepingHoverVisible&&e.messages.length===0)||this._setCurrentResult(e)}_renderMessages(e,t){const{showAtPosition:i,showAtSecondaryPosition:s,highlightRange:r}=wN.computeHoverRanges(this._editor,e.range,t),o=new xe,a=o.add(new jP(this._keybindingService)),l=document.createDocumentFragment();let c=null;const u={fragment:l,statusBar:a,setColorPicker:d=>c=d,onContentsChanged:()=>this._widget.onContentsChanged(),setMinimumDimensions:d=>this._widget.setMinimumDimensions(d),hide:()=>this.hide()};for(const d of this._participants){const f=t.filter(g=>g.owner===d);f.length>0&&o.add(d.renderHoverParts(u,f))}const h=t.some(d=>d.isBeforeContent);if(a.hasContent&&l.appendChild(a.hoverElement),l.hasChildNodes()){if(r){const d=this._editor.createDecorationsCollection();d.set([{range:r,options:wN._DECORATION_OPTIONS}]),o.add(st(()=>{d.clear()}))}this._widget.showAt(l,new ltt(c,i,s,this._editor.getOption(60).above,this._computer.shouldFocus,this._computer.source,h,e.initialMousePosX,e.initialMousePosY,o))}else o.dispose()}static computeHoverRanges(e,t,i){let s=1;if(e.hasModel()){const c=e._getViewModel(),u=c.coordinatesConverter,h=u.convertModelRangeToViewRange(t),d=new he(h.startLineNumber,c.getLineMinColumn(h.startLineNumber));s=u.convertViewPositionToModelPosition(d).column}const r=t.startLineNumber;let o=t.startColumn,a=i[0].range,l=null;for(const c of i)a=M.plusRange(a,c.range),c.range.startLineNumber===r&&c.range.endLineNumber===r&&(o=Math.max(Math.min(o,c.range.startColumn),s)),c.forceShowAtRange&&(l=c.range);return{showAtPosition:l?l.getStartPosition():new he(r,t.startColumn),showAtSecondaryPosition:l?l.getStartPosition():new he(r,o),highlightRange:a}}focus(){this._widget.focus()}scrollUp(){this._widget.scrollUp()}scrollDown(){this._widget.scrollDown()}scrollLeft(){this._widget.scrollLeft()}scrollRight(){this._widget.scrollRight()}pageUp(){this._widget.pageUp()}pageDown(){this._widget.pageDown()}goToTop(){this._widget.goToTop()}goToBottom(){this._widget.goToBottom()}};UP._DECORATION_OPTIONS=yt.register({description:"content-hover-highlight",className:"hoverHighlight"});UP=wN=QK([j1(1,at),j1(2,Di)],UP);class V_e{constructor(e,t,i){this.anchor=e,this.messages=t,this.isComplete=i}filter(e){const t=this.messages.filter(i=>i.isValidForHoverAnchor(e));return t.length===this.messages.length?this:new att(this,this.anchor,t,this.isComplete)}}class att extends V_e{constructor(e,t,i,s){super(t,i,s),this.original=e}filter(e){return this.original.filter(e)}}class ltt{constructor(e,t,i,s,r,o,a,l,c,u){this.colorPicker=e,this.showAtPosition=t,this.showAtSecondaryPosition=i,this.preferAbove=s,this.stoleFocus=r,this.source=o,this.isBeforeContent=a,this.initialMousePosX=l,this.initialMousePosY=c,this.disposables=u,this.closestMouseDistance=void 0}}const Yie=30,R3=10,ctt=6;let Np=sh=class extends ott{get isColorPickerVisible(){var e;return!!(!((e=this._visibleData)===null||e===void 0)&&e.colorPicker)}get isVisibleFromKeyboard(){var e;return((e=this._visibleData)===null||e===void 0?void 0:e.source)===1}get isVisible(){var e;return(e=this._hoverVisibleKey.get())!==null&&e!==void 0?e:!1}get isFocused(){var e;return(e=this._hoverFocusedKey.get())!==null&&e!==void 0?e:!1}constructor(e,t,i,s,r){const o=e.getOption(66)+8,a=150,l=new ni(a,o);super(e,l),this._configurationService=i,this._accessibilityService=s,this._keybindingService=r,this._hover=this._register(new B_e),this._minimumSize=l,this._hoverVisibleKey=$.hoverVisible.bindTo(t),this._hoverFocusedKey=$.hoverFocused.bindTo(t),Le(this._resizableNode.domNode,this._hover.containerDomNode),this._resizableNode.domNode.style.zIndex="50",this._register(this._editor.onDidLayoutChange(()=>{this.isVisible&&this._updateMaxDimensions()})),this._register(this._editor.onDidChangeConfiguration(u=>{u.hasChanged(50)&&this._updateFont()}));const c=this._register(gd(this._resizableNode.domNode));this._register(c.onDidFocus(()=>{this._hoverFocusedKey.set(!0)})),this._register(c.onDidBlur(()=>{this._hoverFocusedKey.set(!1)})),this._setHoverData(void 0),this._editor.addContentWidget(this)}dispose(){var e;super.dispose(),(e=this._visibleData)===null||e===void 0||e.disposables.dispose(),this._editor.removeContentWidget(this)}getId(){return sh.ID}static _applyDimensions(e,t,i){const s=typeof t=="number"?`${t}px`:t,r=typeof i=="number"?`${i}px`:i;e.style.width=s,e.style.height=r}_setContentsDomNodeDimensions(e,t){const i=this._hover.contentsDomNode;return sh._applyDimensions(i,e,t)}_setContainerDomNodeDimensions(e,t){const i=this._hover.containerDomNode;return sh._applyDimensions(i,e,t)}_setHoverWidgetDimensions(e,t){this._setContentsDomNodeDimensions(e,t),this._setContainerDomNodeDimensions(e,t),this._layoutContentWidget()}static _applyMaxDimensions(e,t,i){const s=typeof t=="number"?`${t}px`:t,r=typeof i=="number"?`${i}px`:i;e.style.maxWidth=s,e.style.maxHeight=r}_setHoverWidgetMaxDimensions(e,t){sh._applyMaxDimensions(this._hover.contentsDomNode,e,t),sh._applyMaxDimensions(this._hover.containerDomNode,e,t),this._hover.containerDomNode.style.setProperty("--vscode-hover-maxWidth",typeof e=="number"?`${e}px`:e),this._layoutContentWidget()}_hasHorizontalScrollbar(){const e=this._hover.scrollbar.getScrollDimensions();return e.scrollWidth>e.width}_adjustContentsBottomPadding(){const e=this._hover.contentsDomNode,t=`${this._hover.scrollbar.options.horizontalScrollbarSize}px`;e.style.paddingBottom!==t&&(e.style.paddingBottom=t)}_setAdjustedHoverWidgetDimensions(e){this._setHoverWidgetMaxDimensions("none","none");const t=e.width,i=e.height;this._setHoverWidgetDimensions(t,i),this._hasHorizontalScrollbar()&&(this._adjustContentsBottomPadding(),this._setContentsDomNodeDimensions(t,i-R3))}_updateResizableNodeMaxDimensions(){var e,t;const i=(e=this._findMaximumRenderingWidth())!==null&&e!==void 0?e:1/0,s=(t=this._findMaximumRenderingHeight())!==null&&t!==void 0?t:1/0;this._resizableNode.maxSize=new ni(i,s),this._setHoverWidgetMaxDimensions(i,s)}_resize(e){var t,i;sh._lastDimensions=new ni(e.width,e.height),this._setAdjustedHoverWidgetDimensions(e),this._resizableNode.layout(e.height,e.width),this._updateResizableNodeMaxDimensions(),this._hover.scrollbar.scanDomNode(),this._editor.layoutContentWidget(this),(i=(t=this._visibleData)===null||t===void 0?void 0:t.colorPicker)===null||i===void 0||i.layout()}_findAvailableSpaceVertically(){var e;const t=(e=this._visibleData)===null||e===void 0?void 0:e.showAtPosition;if(t)return this._positionPreference===1?this._availableVerticalSpaceAbove(t):this._availableVerticalSpaceBelow(t)}_findMaximumRenderingHeight(){const e=this._findAvailableSpaceVertically();if(!e)return;let t=ctt;return Array.from(this._hover.contentsDomNode.children).forEach(i=>{t+=i.clientHeight}),this._hasHorizontalScrollbar()&&(t+=R3),Math.min(e,t)}_isHoverTextOverflowing(){this._hover.containerDomNode.style.setProperty("--vscode-hover-whiteSpace","nowrap"),this._hover.containerDomNode.style.setProperty("--vscode-hover-sourceWhiteSpace","nowrap");const e=Array.from(this._hover.contentsDomNode.children).some(t=>t.scrollWidth>t.clientWidth);return this._hover.containerDomNode.style.removeProperty("--vscode-hover-whiteSpace"),this._hover.containerDomNode.style.removeProperty("--vscode-hover-sourceWhiteSpace"),e}_findMaximumRenderingWidth(){if(!this._editor||!this._editor.hasModel())return;const e=this._isHoverTextOverflowing(),t=typeof this._contentWidth>"u"?0:this._contentWidth-2;return e||this._hover.containerDomNode.clientWidth<t?Zp(this._hover.containerDomNode.ownerDocument.body).width-14:this._hover.containerDomNode.clientWidth+2}isMouseGettingCloser(e,t){if(!this._visibleData)return!1;if(typeof this._visibleData.initialMousePosX>"u"||typeof this._visibleData.initialMousePosY>"u")return this._visibleData.initialMousePosX=e,this._visibleData.initialMousePosY=t,!1;const i=ys(this.getDomNode());typeof this._visibleData.closestMouseDistance>"u"&&(this._visibleData.closestMouseDistance=Zie(this._visibleData.initialMousePosX,this._visibleData.initialMousePosY,i.left,i.top,i.width,i.height));const s=Zie(e,t,i.left,i.top,i.width,i.height);return s>this._visibleData.closestMouseDistance+4?!1:(this._visibleData.closestMouseDistance=Math.min(this._visibleData.closestMouseDistance,s),!0)}_setHoverData(e){var t;(t=this._visibleData)===null||t===void 0||t.disposables.dispose(),this._visibleData=e,this._hoverVisibleKey.set(!!e),this._hover.containerDomNode.classList.toggle("hidden",!e)}_updateFont(){const{fontSize:e,lineHeight:t}=this._editor.getOption(50),i=this._hover.contentsDomNode;i.style.fontSize=`${e}px`,i.style.lineHeight=`${t/e}`,Array.prototype.slice.call(this._hover.contentsDomNode.getElementsByClassName("code")).forEach(r=>this._editor.applyFontInfo(r))}_updateContent(e){const t=this._hover.contentsDomNode;t.style.paddingBottom="",t.textContent="",t.appendChild(e)}_layoutContentWidget(){this._editor.layoutContentWidget(this),this._hover.onContentsChanged()}_updateMaxDimensions(){const e=Math.max(this._editor.getLayoutInfo().height/4,250,sh._lastDimensions.height),t=Math.max(this._editor.getLayoutInfo().width*.66,500,sh._lastDimensions.width);this._setHoverWidgetMaxDimensions(t,e)}_render(e,t){this._setHoverData(t),this._updateFont(),this._updateContent(e),this._updateMaxDimensions(),this.onContentsChanged(),this._editor.render()}getPosition(){var e;return this._visibleData?{position:this._visibleData.showAtPosition,secondaryPosition:this._visibleData.showAtSecondaryPosition,positionAffinity:this._visibleData.isBeforeContent?3:void 0,preference:[(e=this._positionPreference)!==null&&e!==void 0?e:1]}:null}showAt(e,t){var i,s,r,o;if(!this._editor||!this._editor.hasModel())return;this._render(e,t);const a=M1(this._hover.containerDomNode),l=t.showAtPosition;this._positionPreference=(i=this._findPositionPreference(a,l))!==null&&i!==void 0?i:1,this.onContentsChanged(),t.stoleFocus&&this._hover.containerDomNode.focus(),(s=t.colorPicker)===null||s===void 0||s.layout();const u=this._hover.containerDomNode.ownerDocument.activeElement===this._hover.containerDomNode&&itt(this._configurationService.getValue("accessibility.verbosity.hover")===!0&&this._accessibilityService.isScreenReaderOptimized(),(o=(r=this._keybindingService.lookupKeybinding("editor.action.accessibleView"))===null||r===void 0?void 0:r.getAriaLabel())!==null&&o!==void 0?o:"");u&&(this._hover.contentsDomNode.ariaLabel=this._hover.contentsDomNode.textContent+", "+u)}hide(){if(!this._visibleData)return;const e=this._visibleData.stoleFocus||this._hoverFocusedKey.get();this._setHoverData(void 0),this._resizableNode.maxSize=new ni(1/0,1/0),this._resizableNode.clearSashHoverState(),this._hoverFocusedKey.set(!1),this._editor.layoutContentWidget(this),e&&this._editor.focus()}_removeConstraintsRenderNormally(){const e=this._editor.getLayoutInfo();this._resizableNode.layout(e.height,e.width),this._setHoverWidgetDimensions("auto","auto")}_adjustHoverHeightForScrollbar(e){var t;const i=this._hover.containerDomNode,s=this._hover.contentsDomNode,r=(t=this._findMaximumRenderingHeight())!==null&&t!==void 0?t:1/0;this._setContainerDomNodeDimensions(Lo(i),Math.min(r,e)),this._setContentsDomNodeDimensions(Lo(s),Math.min(r,e-R3))}setMinimumDimensions(e){this._minimumSize=new ni(Math.max(this._minimumSize.width,e.width),Math.max(this._minimumSize.height,e.height)),this._updateMinimumWidth()}_updateMinimumWidth(){const e=typeof this._contentWidth>"u"?this._minimumSize.width:Math.min(this._contentWidth,this._minimumSize.width);this._resizableNode.minSize=new ni(e,this._minimumSize.height)}onContentsChanged(){var e;this._removeConstraintsRenderNormally();const t=this._hover.containerDomNode;let i=M1(t),s=Lo(t);if(this._resizableNode.layout(i,s),this._setHoverWidgetDimensions(s,i),i=M1(t),s=Lo(t),this._contentWidth=s,this._updateMinimumWidth(),this._resizableNode.layout(i,s),this._hasHorizontalScrollbar()&&(this._adjustContentsBottomPadding(),this._adjustHoverHeightForScrollbar(i)),!((e=this._visibleData)===null||e===void 0)&&e.showAtPosition){const r=M1(this._hover.containerDomNode);this._positionPreference=this._findPositionPreference(r,this._visibleData.showAtPosition)}this._layoutContentWidget()}focus(){this._hover.containerDomNode.focus()}scrollUp(){const e=this._hover.scrollbar.getScrollPosition().scrollTop,t=this._editor.getOption(50);this._hover.scrollbar.setScrollPosition({scrollTop:e-t.lineHeight})}scrollDown(){const e=this._hover.scrollbar.getScrollPosition().scrollTop,t=this._editor.getOption(50);this._hover.scrollbar.setScrollPosition({scrollTop:e+t.lineHeight})}scrollLeft(){const e=this._hover.scrollbar.getScrollPosition().scrollLeft;this._hover.scrollbar.setScrollPosition({scrollLeft:e-Yie})}scrollRight(){const e=this._hover.scrollbar.getScrollPosition().scrollLeft;this._hover.scrollbar.setScrollPosition({scrollLeft:e+Yie})}pageUp(){const e=this._hover.scrollbar.getScrollPosition().scrollTop,t=this._hover.scrollbar.getScrollDimensions().height;this._hover.scrollbar.setScrollPosition({scrollTop:e-t})}pageDown(){const e=this._hover.scrollbar.getScrollPosition().scrollTop,t=this._hover.scrollbar.getScrollDimensions().height;this._hover.scrollbar.setScrollPosition({scrollTop:e+t})}goToTop(){this._hover.scrollbar.setScrollPosition({scrollTop:0})}goToBottom(){this._hover.scrollbar.setScrollPosition({scrollTop:this._hover.scrollbar.getScrollDimensions().scrollHeight})}};Np.ID="editor.contrib.resizableContentHoverWidget";Np._lastDimensions=new ni(0,0);Np=sh=QK([j1(1,ft),j1(2,Ut),j1(3,Dd),j1(4,Di)],Np);let jP=class extends pe{get hasContent(){return this._hasContent}constructor(e){super(),this._keybindingService=e,this._hasContent=!1,this.hoverElement=Gie("div.hover-row.status-bar"),this.actionsElement=Le(this.hoverElement,Gie("div.actions"))}addAction(e){const t=this._keybindingService.lookupKeybinding(e.commandId),i=t?t.getLabel():null;return this._hasContent=!0,this._register(ZK.render(this.actionsElement,e,i))}append(e){const t=Le(this.actionsElement,e);return this._hasContent=!0,t}};jP=QK([j1(0,Di)],jP);class qP{get anchor(){return this._anchor}set anchor(e){this._anchor=e}get shouldFocus(){return this._shouldFocus}set shouldFocus(e){this._shouldFocus=e}get source(){return this._source}set source(e){this._source=e}get insistOnKeepingHoverVisible(){return this._insistOnKeepingHoverVisible}set insistOnKeepingHoverVisible(e){this._insistOnKeepingHoverVisible=e}constructor(e,t){this._editor=e,this._participants=t,this._anchor=null,this._shouldFocus=!1,this._source=0,this._insistOnKeepingHoverVisible=!1}static _getLineDecorations(e,t){if(t.type!==1&&!t.supportsMarkerHover)return[];const i=e.getModel(),s=t.range.startLineNumber;if(s>i.getLineCount())return[];const r=i.getLineMaxColumn(s);return e.getLineDecorations(s).filter(o=>{if(o.options.isWholeLine)return!0;const a=o.range.startLineNumber===s?o.range.startColumn:1,l=o.range.endLineNumber===s?o.range.endColumn:r;if(o.options.showIfCollapsed){if(a>t.range.startColumn+1||t.range.endColumn-1>l)return!1}else if(a>t.range.startColumn||t.range.endColumn>l)return!1;return!0})}computeAsync(e){const t=this._anchor;if(!this._editor.hasModel()||!t)return rs.EMPTY;const i=qP._getLineDecorations(this._editor,t);return rs.merge(this._participants.map(s=>s.computeAsync?s.computeAsync(t,i,e):rs.EMPTY))}computeSync(){if(!this._editor.hasModel()||!this._anchor)return[];const e=qP._getLineDecorations(this._editor,this._anchor);let t=[];for(const i of this._participants)t=t.concat(i.computeSync(this._anchor,e));return Tu(t)}}function Zie(n,e,t,i,s,r){const o=t+s/2,a=i+r/2,l=Math.max(Math.abs(n-o)-s/2,0),c=Math.max(Math.abs(e-a)-r/2,0);return Math.sqrt(l*l+c*c)}const Xie=Te;class Pb extends pe{constructor(e,t,i){super(),this._renderDisposeables=this._register(new xe),this._editor=e,this._isVisible=!1,this._messages=[],this._hover=this._register(new B_e),this._hover.containerDomNode.classList.toggle("hidden",!this._isVisible),this._markdownRenderer=this._register(new Qf({editor:this._editor},t,i)),this._computer=new utt(this._editor),this._hoverOperation=this._register(new W_e(this._editor,this._computer)),this._register(this._hoverOperation.onResult(s=>{this._withResult(s.value)})),this._register(this._editor.onDidChangeModelDecorations(()=>this._onModelDecorationsChanged())),this._register(this._editor.onDidChangeConfiguration(s=>{s.hasChanged(50)&&this._updateFont()})),this._editor.addOverlayWidget(this)}dispose(){this._editor.removeOverlayWidget(this),super.dispose()}getId(){return Pb.ID}getDomNode(){return this._hover.containerDomNode}getPosition(){return null}_updateFont(){Array.prototype.slice.call(this._hover.contentsDomNode.getElementsByClassName("code")).forEach(t=>this._editor.applyFontInfo(t))}_onModelDecorationsChanged(){this._isVisible&&(this._hoverOperation.cancel(),this._hoverOperation.start(0))}startShowingAt(e){this._computer.lineNumber!==e&&(this._hoverOperation.cancel(),this.hide(),this._computer.lineNumber=e,this._hoverOperation.start(0))}hide(){this._computer.lineNumber=-1,this._hoverOperation.cancel(),this._isVisible&&(this._isVisible=!1,this._hover.containerDomNode.classList.toggle("hidden",!this._isVisible))}_withResult(e){this._messages=e,this._messages.length>0?this._renderMessages(this._computer.lineNumber,this._messages):this.hide()}_renderMessages(e,t){this._renderDisposeables.clear();const i=document.createDocumentFragment();for(const s of t){const r=Xie("div.hover-row.markdown-hover"),o=Le(r,Xie("div.hover-contents")),a=this._renderDisposeables.add(this._markdownRenderer.render(s.value));o.appendChild(a.element),i.appendChild(r)}this._updateContents(i),this._showAt(e)}_updateContents(e){this._hover.contentsDomNode.textContent="",this._hover.contentsDomNode.appendChild(e),this._updateFont()}_showAt(e){this._isVisible||(this._isVisible=!0,this._hover.containerDomNode.classList.toggle("hidden",!this._isVisible));const t=this._editor.getLayoutInfo(),i=this._editor.getTopForLineNumber(e),s=this._editor.getScrollTop(),r=this._editor.getOption(66),o=this._hover.containerDomNode.clientHeight,a=i-s-(o-r)/2;this._hover.containerDomNode.style.left=`${t.glyphMarginLeft+t.glyphMarginWidth}px`,this._hover.containerDomNode.style.top=`${Math.max(Math.round(a),0)}px`}}Pb.ID="editor.contrib.modesGlyphHoverWidget";class utt{get lineNumber(){return this._lineNumber}set lineNumber(e){this._lineNumber=e}constructor(e){this._editor=e,this._lineNumber=-1}computeSync(){const e=s=>({value:s}),t=this._editor.getLineDecorations(this._lineNumber),i=[];if(!t)return i;for(const s of t){if(!s.options.glyphMarginClassName)continue;const r=s.options.glyphMarginHoverMessage;!r||Ty(r)||i.push(...nq(r).map(e))}return i}}class htt{constructor(e,t,i){this.provider=e,this.hover=t,this.ordinal=i}}async function dtt(n,e,t,i,s){try{const r=await Promise.resolve(n.provideHover(t,i,s));if(r&>t(r))return new htt(n,r,e)}catch(r){Jn(r)}}function JK(n,e,t,i){const r=n.ordered(e).map((o,a)=>dtt(o,a,e,t,i));return rs.fromPromises(r).coalesce()}function ftt(n,e,t,i){return JK(n,e,t,i).map(s=>s.hover).toPromise()}xd("_executeHoverProvider",(n,e,t)=>{const i=n.get(Ge);return ftt(i.hoverProvider,e,t,Ft.None)});function gtt(n){const e=typeof n.range<"u",t=typeof n.contents<"u"&&n.contents&&n.contents.length>0;return e&&t}var ptt=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},RI=function(n,e){return function(t,i){e(t,i,n)}};const Qie=Te;class uu{constructor(e,t,i,s,r){this.owner=e,this.range=t,this.contents=i,this.isBeforeContent=s,this.ordinal=r}isValidForHoverAnchor(e){return e.type===1&&this.range.startColumn<=e.range.startColumn&&this.range.endColumn>=e.range.endColumn}}let KP=class{constructor(e,t,i,s,r){this._editor=e,this._languageService=t,this._openerService=i,this._configurationService=s,this._languageFeaturesService=r,this.hoverOrdinal=3}createLoadingMessage(e){return new uu(this,e.range,[new xr().appendText(v("modesContentHover.loading","Loading..."))],!1,2e3)}computeSync(e,t){if(!this._editor.hasModel()||e.type!==1)return[];const i=this._editor.getModel(),s=e.range.startLineNumber,r=i.getLineMaxColumn(s),o=[];let a=1e3;const l=i.getLineLength(s),c=i.getLanguageIdAtPosition(e.range.startLineNumber,e.range.startColumn),u=this._editor.getOption(116),h=this._configurationService.getValue("editor.maxTokenizationLineLength",{overrideIdentifier:c});let d=!1;u>=0&&l>u&&e.range.startColumn>=u&&(d=!0,o.push(new uu(this,e.range,[{value:v("stopped rendering","Rendering paused for long line for performance reasons. This can be configured via `editor.stopRenderingLineAfter`.")}],!1,a++))),!d&&typeof h=="number"&&l>=h&&o.push(new uu(this,e.range,[{value:v("too many characters","Tokenization is skipped for long lines for performance reasons. This can be configured via `editor.maxTokenizationLineLength`.")}],!1,a++));let f=!1;for(const g of t){const p=g.range.startLineNumber===s?g.range.startColumn:1,m=g.range.endLineNumber===s?g.range.endColumn:r,_=g.options.hoverMessage;if(!_||Ty(_))continue;g.options.beforeContentClassName&&(f=!0);const b=new M(e.range.startLineNumber,p,e.range.startLineNumber,m);o.push(new uu(this,b,nq(_),f,a++))}return o}computeAsync(e,t,i){if(!this._editor.hasModel()||e.type!==1)return rs.EMPTY;const s=this._editor.getModel();if(!this._languageFeaturesService.hoverProvider.has(s))return rs.EMPTY;const r=new he(e.range.startLineNumber,e.range.startColumn);return JK(this._languageFeaturesService.hoverProvider,s,r,i).filter(o=>!Ty(o.hover.contents)).map(o=>{const a=o.hover.range?M.lift(o.hover.range):e.range;return new uu(this,a,o.hover.contents,!1,o.ordinal)})}renderHoverParts(e,t){return H_e(e,t,this._editor,this._languageService,this._openerService)}};KP=ptt([RI(1,sn),RI(2,_a),RI(3,Ut),RI(4,Ge)],KP);function H_e(n,e,t,i,s){e.sort((o,a)=>o.ordinal-a.ordinal);const r=new xe;for(const o of e)for(const a of o.contents){if(Ty(a))continue;const l=Qie("div.hover-row.markdown-hover"),c=Le(l,Qie("div.hover-contents")),u=r.add(new Qf({editor:t},i,s));r.add(u.onDidRenderAsync(()=>{c.className="hover-contents code-hover-contents",n.onContentsChanged()}));const h=r.add(u.render(a));c.appendChild(h.element),n.fragment.appendChild(l)}return r}var $_e=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},GP=function(n,e){return function(t,i){e(t,i,n)}};class Jie{constructor(e,t,i){this.marker=e,this.index=t,this.total=i}}let MW=class{constructor(e,t,i){this._markerService=t,this._configService=i,this._onDidChange=new ue,this.onDidChange=this._onDidChange.event,this._dispoables=new xe,this._markers=[],this._nextIdx=-1,it.isUri(e)?this._resourceFilter=a=>a.toString()===e.toString():e&&(this._resourceFilter=e);const s=this._configService.getValue("problems.sortOrder"),r=(a,l)=>{let c=fL(a.resource.toString(),l.resource.toString());return c===0&&(s==="position"?c=M.compareRangesUsingStarts(a,l)||xn.compare(a.severity,l.severity):c=xn.compare(a.severity,l.severity)||M.compareRangesUsingStarts(a,l)),c},o=()=>{this._markers=this._markerService.read({resource:it.isUri(e)?e:void 0,severities:xn.Error|xn.Warning|xn.Info}),typeof e=="function"&&(this._markers=this._markers.filter(a=>this._resourceFilter(a.resource))),this._markers.sort(r)};o(),this._dispoables.add(t.onMarkerChanged(a=>{(!this._resourceFilter||a.some(l=>this._resourceFilter(l)))&&(o(),this._nextIdx=-1,this._onDidChange.fire())}))}dispose(){this._dispoables.dispose(),this._onDidChange.dispose()}matches(e){return!this._resourceFilter&&!e?!0:!this._resourceFilter||!e?!1:this._resourceFilter(e)}get selected(){const e=this._markers[this._nextIdx];return e&&new Jie(e,this._nextIdx+1,this._markers.length)}_initIdx(e,t,i){let s=!1,r=this._markers.findIndex(o=>o.resource.toString()===e.uri.toString());r<0&&(r=CL(this._markers,{resource:e.uri},(o,a)=>fL(o.resource.toString(),a.resource.toString())),r<0&&(r=~r));for(let o=r;o<this._markers.length;o++){let a=M.lift(this._markers[o]);if(a.isEmpty()){const l=e.getWordAtPosition(a.getStartPosition());l&&(a=new M(a.startLineNumber,l.startColumn,a.startLineNumber,l.endColumn))}if(t&&(a.containsPosition(t)||t.isBeforeOrEqual(a.getStartPosition()))){this._nextIdx=o,s=!0;break}if(this._markers[o].resource.toString()!==e.uri.toString())break}s||(this._nextIdx=i?0:this._markers.length-1),this._nextIdx<0&&(this._nextIdx=this._markers.length-1)}resetIndex(){this._nextIdx=-1}move(e,t,i){if(this._markers.length===0)return!1;const s=this._nextIdx;return this._nextIdx===-1?this._initIdx(t,i,e):e?this._nextIdx=(this._nextIdx+1)%this._markers.length:e||(this._nextIdx=(this._nextIdx-1+this._markers.length)%this._markers.length),s!==this._nextIdx}find(e,t){let i=this._markers.findIndex(s=>s.resource.toString()===e.toString());if(!(i<0)){for(;i<this._markers.length;i++)if(M.containsPosition(this._markers[i],t))return new Jie(this._markers[i],i+1,this._markers.length)}}};MW=$_e([GP(1,Id),GP(2,Ut)],MW);const z_e=Bt("IMarkerNavigationService");let OW=class{constructor(e,t){this._markerService=e,this._configService=t,this._provider=new oo}getMarkerList(e){for(const t of this._provider){const i=t.getMarkerList(e);if(i)return i}return new MW(e,this._markerService,this._configService)}};OW=$_e([GP(0,Id),GP(1,Ut)],OW);jt(z_e,OW,1);var FW;(function(n){function e(t){switch(t){case zn.Ignore:return"severity-ignore "+nt.asClassName(Pe.info);case zn.Info:return nt.asClassName(Pe.info);case zn.Warning:return nt.asClassName(Pe.warning);case zn.Error:return nt.asClassName(Pe.error);default:return""}}n.className=e})(FW||(FW={}));var mtt=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},o0=function(n,e){return function(t,i){e(t,i,n)}},BW;class _tt{constructor(e,t,i,s,r){this._openerService=s,this._labelService=r,this._lines=0,this._longestLineLength=0,this._relatedDiagnostics=new WeakMap,this._disposables=new xe,this._editor=t;const o=document.createElement("div");o.className="descriptioncontainer",this._messageBlock=document.createElement("div"),this._messageBlock.classList.add("message"),this._messageBlock.setAttribute("aria-live","assertive"),this._messageBlock.setAttribute("role","alert"),o.appendChild(this._messageBlock),this._relatedBlock=document.createElement("div"),o.appendChild(this._relatedBlock),this._disposables.add(Mn(this._relatedBlock,"click",a=>{a.preventDefault();const l=this._relatedDiagnostics.get(a.target);l&&i(l)})),this._scrollable=new Ape(o,{horizontal:1,vertical:1,useShadows:!1,horizontalScrollbarSize:6,verticalScrollbarSize:6}),e.appendChild(this._scrollable.getDomNode()),this._disposables.add(this._scrollable.onScroll(a=>{o.style.left=`-${a.scrollLeft}px`,o.style.top=`-${a.scrollTop}px`})),this._disposables.add(this._scrollable)}dispose(){yi(this._disposables)}update(e){const{source:t,message:i,relatedInformation:s,code:r}=e;let o=((t==null?void 0:t.length)||0)+2;r&&(typeof r=="string"?o+=r.length:o+=r.value.length);const a=fd(i);this._lines=a.length,this._longestLineLength=0;for(const d of a)this._longestLineLength=Math.max(d.length+o,this._longestLineLength);ir(this._messageBlock),this._messageBlock.setAttribute("aria-label",this.getAriaLabel(e)),this._editor.applyFontInfo(this._messageBlock);let l=this._messageBlock;for(const d of a)l=document.createElement("div"),l.innerText=d,d===""&&(l.style.height=this._messageBlock.style.lineHeight),this._messageBlock.appendChild(l);if(t||r){const d=document.createElement("span");if(d.classList.add("details"),l.appendChild(d),t){const f=document.createElement("span");f.innerText=t,f.classList.add("source"),d.appendChild(f)}if(r)if(typeof r=="string"){const f=document.createElement("span");f.innerText=`(${r})`,f.classList.add("code"),d.appendChild(f)}else{this._codeLink=Te("a.code-link"),this._codeLink.setAttribute("href",`${r.target.toString()}`),this._codeLink.onclick=g=>{this._openerService.open(r.target,{allowCommands:!0}),g.preventDefault(),g.stopPropagation()};const f=Le(this._codeLink,Te("span"));f.innerText=r.value,d.appendChild(this._codeLink)}}if(ir(this._relatedBlock),this._editor.applyFontInfo(this._relatedBlock),Ir(s)){const d=this._relatedBlock.appendChild(document.createElement("div"));d.style.paddingTop=`${Math.floor(this._editor.getOption(66)*.66)}px`,this._lines+=1;for(const f of s){const g=document.createElement("div"),p=document.createElement("a");p.classList.add("filename"),p.innerText=`${this._labelService.getUriBasenameLabel(f.resource)}(${f.startLineNumber}, ${f.startColumn}): `,p.title=this._labelService.getUriLabel(f.resource),this._relatedDiagnostics.set(p,f);const m=document.createElement("span");m.innerText=f.message,g.appendChild(p),g.appendChild(m),this._lines+=1,d.appendChild(g)}}const c=this._editor.getOption(50),u=Math.ceil(c.typicalFullwidthCharacterWidth*this._longestLineLength*.75),h=c.lineHeight*this._lines;this._scrollable.setScrollDimensions({scrollWidth:u,scrollHeight:h})}layout(e,t){this._scrollable.getDomNode().style.height=`${e}px`,this._scrollable.getDomNode().style.width=`${t}px`,this._scrollable.setScrollDimensions({width:t,height:e})}getHeightInLines(){return Math.min(17,this._lines)}getAriaLabel(e){let t="";switch(e.severity){case xn.Error:t=v("Error","Error");break;case xn.Warning:t=v("Warning","Warning");break;case xn.Info:t=v("Info","Info");break;case xn.Hint:t=v("Hint","Hint");break}let i=v("marker aria","{0} at {1}. ",t,e.startLineNumber+":"+e.startColumn);const s=this._editor.getModel();return s&&e.startLineNumber<=s.getLineCount()&&e.startLineNumber>=1&&(i=`${s.getLineContent(e.startLineNumber)}, ${i}`),i}}let Oy=BW=class extends OP{constructor(e,t,i,s,r,o,a){super(e,{showArrow:!0,showFrame:!0,isAccessible:!0,frameWidth:1},r),this._themeService=t,this._openerService=i,this._menuService=s,this._contextKeyService=o,this._labelService=a,this._callOnDispose=new xe,this._onDidSelectRelatedInformation=new ue,this.onDidSelectRelatedInformation=this._onDidSelectRelatedInformation.event,this._severity=xn.Warning,this._backgroundColor=me.white,this._applyTheme(t.getColorTheme()),this._callOnDispose.add(t.onDidColorThemeChange(this._applyTheme.bind(this))),this.create()}_applyTheme(e){this._backgroundColor=e.getColor(Ctt);let t=WW,i=vtt;this._severity===xn.Warning?(t=SN,i=btt):this._severity===xn.Info&&(t=VW,i=ytt);const s=e.getColor(t),r=e.getColor(i);this.style({arrowColor:s,frameColor:s,headerBackgroundColor:r,primaryHeadingColor:e.getColor(r_e),secondaryHeadingColor:e.getColor(o_e)})}_applyStyles(){this._parentContainer&&(this._parentContainer.style.backgroundColor=this._backgroundColor?this._backgroundColor.toString():""),super._applyStyles()}dispose(){this._callOnDispose.dispose(),super.dispose()}_fillHead(e){super._fillHead(e),this._disposables.add(this._actionbarWidget.actionRunner.onWillRun(s=>this.editor.focus()));const t=[],i=this._menuService.createMenu(BW.TitleMenu,this._contextKeyService);TK(i,void 0,t),this._actionbarWidget.push(t,{label:!1,icon:!0,index:0}),i.dispose()}_fillTitleIcon(e){this._icon=Le(e,Te(""))}_fillBody(e){this._parentContainer=e,e.classList.add("marker-widget"),this._parentContainer.tabIndex=0,this._parentContainer.setAttribute("role","tooltip"),this._container=document.createElement("div"),e.appendChild(this._container),this._message=new _tt(this._container,this.editor,t=>this._onDidSelectRelatedInformation.fire(t),this._openerService,this._labelService),this._disposables.add(this._message)}show(){throw new Error("call showAtMarker")}showAtMarker(e,t,i){this._container.classList.remove("stale"),this._message.update(e),this._severity=e.severity,this._applyTheme(this._themeService.getColorTheme());const s=M.lift(e),r=this.editor.getPosition(),o=r&&s.containsPosition(r)?r:s.getStartPosition();super.show(o,this.computeRequiredHeight());const a=this.editor.getModel();if(a){const l=i>1?v("problems","{0} of {1} problems",t,i):v("change","{0} of {1} problem",t,i);this.setTitle(Wl(a.uri),l)}this._icon.className=`codicon ${FW.className(xn.toSeverity(this._severity))}`,this.editor.revealPositionNearTop(o,0),this.editor.focus()}updateMarker(e){this._container.classList.remove("stale"),this._message.update(e)}showStale(){this._container.classList.add("stale"),this._relayout()}_doLayoutBody(e,t){super._doLayoutBody(e,t),this._heightInPixel=e,this._message.layout(e,t),this._container.style.height=`${e}px`}_onWidth(e){this._message.layout(this._heightInPixel,e)}_relayout(){super._relayout(this.computeRequiredHeight())}computeRequiredHeight(){return 3+this._message.getHeightInLines()}};Oy.TitleMenu=new B("gotoErrorTitleMenu");Oy=BW=mtt([o0(1,Ms),o0(2,_a),o0(3,Vu),o0(4,at),o0(5,ft),o0(6,Ry)],Oy);const ene=xL(Rh,zVe),tne=xL(za,kL),ine=xL(Ao,LL),WW=U("editorMarkerNavigationError.background",{dark:ene,light:ene,hcDark:zt,hcLight:zt},v("editorMarkerNavigationError","Editor marker navigation widget error color.")),vtt=U("editorMarkerNavigationError.headerBackground",{dark:Je(WW,.1),light:Je(WW,.1),hcDark:null,hcLight:null},v("editorMarkerNavigationErrorHeaderBackground","Editor marker navigation widget error heading background.")),SN=U("editorMarkerNavigationWarning.background",{dark:tne,light:tne,hcDark:zt,hcLight:zt},v("editorMarkerNavigationWarning","Editor marker navigation widget warning color.")),btt=U("editorMarkerNavigationWarning.headerBackground",{dark:Je(SN,.1),light:Je(SN,.1),hcDark:"#0C141F",hcLight:Je(SN,.2)},v("editorMarkerNavigationWarningBackground","Editor marker navigation widget warning heading background.")),VW=U("editorMarkerNavigationInfo.background",{dark:ine,light:ine,hcDark:zt,hcLight:zt},v("editorMarkerNavigationInfo","Editor marker navigation widget info color.")),ytt=U("editorMarkerNavigationInfo.headerBackground",{dark:Je(VW,.1),light:Je(VW,.1),hcDark:null,hcLight:null},v("editorMarkerNavigationInfoHeaderBackground","Editor marker navigation widget info heading background.")),Ctt=U("editorMarkerNavigation.background",{dark:Rs,light:Rs,hcDark:Rs,hcLight:Rs},v("editorMarkerNavigationBackground","Editor marker navigation widget background."));var wtt=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},MI=function(n,e){return function(t,i){e(t,i,n)}},xS;let gm=xS=class{static get(e){return e.getContribution(xS.ID)}constructor(e,t,i,s,r){this._markerNavigationService=t,this._contextKeyService=i,this._editorService=s,this._instantiationService=r,this._sessionDispoables=new xe,this._editor=e,this._widgetVisible=U_e.bindTo(this._contextKeyService)}dispose(){this._cleanUp(),this._sessionDispoables.dispose()}_cleanUp(){this._widgetVisible.reset(),this._sessionDispoables.clear(),this._widget=void 0,this._model=void 0}_getOrCreateModel(e){if(this._model&&this._model.matches(e))return this._model;let t=!1;return this._model&&(t=!0,this._cleanUp()),this._model=this._markerNavigationService.getMarkerList(e),t&&this._model.move(!0,this._editor.getModel(),this._editor.getPosition()),this._widget=this._instantiationService.createInstance(Oy,this._editor),this._widget.onDidClose(()=>this.close(),this,this._sessionDispoables),this._widgetVisible.set(!0),this._sessionDispoables.add(this._model),this._sessionDispoables.add(this._widget),this._sessionDispoables.add(this._editor.onDidChangeCursorPosition(i=>{var s,r,o;(!(!((s=this._model)===null||s===void 0)&&s.selected)||!M.containsPosition((r=this._model)===null||r===void 0?void 0:r.selected.marker,i.position))&&((o=this._model)===null||o===void 0||o.resetIndex())})),this._sessionDispoables.add(this._model.onDidChange(()=>{if(!this._widget||!this._widget.position||!this._model)return;const i=this._model.find(this._editor.getModel().uri,this._widget.position);i?this._widget.updateMarker(i.marker):this._widget.showStale()})),this._sessionDispoables.add(this._widget.onDidSelectRelatedInformation(i=>{this._editorService.openCodeEditor({resource:i.resource,options:{pinned:!0,revealIfOpened:!0,selection:M.lift(i).collapseToStart()}},this._editor),this.close(!1)})),this._sessionDispoables.add(this._editor.onDidChangeModel(()=>this._cleanUp())),this._model}close(e=!0){this._cleanUp(),e&&this._editor.focus()}showAtMarker(e){if(this._editor.hasModel()){const t=this._getOrCreateModel(this._editor.getModel().uri);t.resetIndex(),t.move(!0,this._editor.getModel(),new he(e.startLineNumber,e.startColumn)),t.selected&&this._widget.showAtMarker(t.selected.marker,t.selected.index,t.selected.total)}}async nagivate(e,t){var i,s;if(this._editor.hasModel()){const r=this._getOrCreateModel(t?void 0:this._editor.getModel().uri);if(r.move(e,this._editor.getModel(),this._editor.getPosition()),!r.selected)return;if(r.selected.marker.resource.toString()!==this._editor.getModel().uri.toString()){this._cleanUp();const o=await this._editorService.openCodeEditor({resource:r.selected.marker.resource,options:{pinned:!1,revealIfOpened:!0,selectionRevealType:2,selection:r.selected.marker}},this._editor);o&&((i=xS.get(o))===null||i===void 0||i.close(),(s=xS.get(o))===null||s===void 0||s.nagivate(e,t))}else this._widget.showAtMarker(r.selected.marker,r.selected.index,r.selected.total)}}};gm.ID="editor.contrib.markerController";gm=xS=wtt([MI(1,z_e),MI(2,ft),MI(3,ri),MI(4,at)],gm);class I2 extends qe{constructor(e,t,i){super(i),this._next=e,this._multiFile=t}async run(e,t){var i;t.hasModel()&&((i=gm.get(t))===null||i===void 0||i.nagivate(this._next,this._multiFile))}}class Ap extends I2{constructor(){super(!0,!1,{id:Ap.ID,label:Ap.LABEL,alias:"Go to Next Problem (Error, Warning, Info)",precondition:void 0,kbOpts:{kbExpr:$.focus,primary:578,weight:100},menuOpts:{menuId:Oy.TitleMenu,title:Ap.LABEL,icon:Gn("marker-navigation-next",Pe.arrowDown,v("nextMarkerIcon","Icon for goto next marker.")),group:"navigation",order:1}})}}Ap.ID="editor.action.marker.next";Ap.LABEL=v("markerAction.next.label","Go to Next Problem (Error, Warning, Info)");class h_ extends I2{constructor(){super(!1,!1,{id:h_.ID,label:h_.LABEL,alias:"Go to Previous Problem (Error, Warning, Info)",precondition:void 0,kbOpts:{kbExpr:$.focus,primary:1602,weight:100},menuOpts:{menuId:Oy.TitleMenu,title:h_.LABEL,icon:Gn("marker-navigation-previous",Pe.arrowUp,v("previousMarkerIcon","Icon for goto previous marker.")),group:"navigation",order:2}})}}h_.ID="editor.action.marker.prev";h_.LABEL=v("markerAction.previous.label","Go to Previous Problem (Error, Warning, Info)");class Stt extends I2{constructor(){super(!0,!0,{id:"editor.action.marker.nextInFiles",label:v("markerAction.nextInFiles.label","Go to Next Problem in Files (Error, Warning, Info)"),alias:"Go to Next Problem in Files (Error, Warning, Info)",precondition:void 0,kbOpts:{kbExpr:$.focus,primary:66,weight:100},menuOpts:{menuId:B.MenubarGoMenu,title:v({key:"miGotoNextProblem",comment:["&& denotes a mnemonic"]},"Next &&Problem"),group:"6_problem_nav",order:1}})}}class ktt extends I2{constructor(){super(!1,!0,{id:"editor.action.marker.prevInFiles",label:v("markerAction.previousInFiles.label","Go to Previous Problem in Files (Error, Warning, Info)"),alias:"Go to Previous Problem in Files (Error, Warning, Info)",precondition:void 0,kbOpts:{kbExpr:$.focus,primary:1090,weight:100},menuOpts:{menuId:B.MenubarGoMenu,title:v({key:"miGotoPreviousProblem",comment:["&& denotes a mnemonic"]},"Previous &&Problem"),group:"6_problem_nav",order:2}})}}ti(gm.ID,gm,4);Ae(Ap);Ae(h_);Ae(Stt);Ae(ktt);const U_e=new ze("markersNavigationVisible",!1),Ltt=Ks.bindToContribution(gm.get);Be(new Ltt({id:"closeMarkersNavigation",precondition:U_e,handler:n=>n.close(),kbOpts:{weight:150,kbExpr:$.focus,primary:9,secondary:[1033]}}));var xtt=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},M3=function(n,e){return function(t,i){e(t,i,n)}};const Yl=Te;class Ett{constructor(e,t,i){this.owner=e,this.range=t,this.marker=i}isValidForHoverAnchor(e){return e.type===1&&this.range.startColumn<=e.range.startColumn&&this.range.endColumn>=e.range.endColumn}}const nne={type:1,filter:{include:ut.QuickFix},triggerAction:da.QuickFixHover};let HW=class{constructor(e,t,i,s){this._editor=e,this._markerDecorationsService=t,this._openerService=i,this._languageFeaturesService=s,this.hoverOrdinal=1,this.recentMarkerCodeActionsInfo=void 0}computeSync(e,t){if(!this._editor.hasModel()||e.type!==1&&!e.supportsMarkerHover)return[];const i=this._editor.getModel(),s=e.range.startLineNumber,r=i.getLineMaxColumn(s),o=[];for(const a of t){const l=a.range.startLineNumber===s?a.range.startColumn:1,c=a.range.endLineNumber===s?a.range.endColumn:r,u=this._markerDecorationsService.getMarker(i.uri,a);if(!u)continue;const h=new M(e.range.startLineNumber,l,e.range.startLineNumber,c);o.push(new Ett(this,h,u))}return o}renderHoverParts(e,t){if(!t.length)return pe.None;const i=new xe;t.forEach(r=>e.fragment.appendChild(this.renderMarkerHover(r,i)));const s=t.length===1?t[0]:t.sort((r,o)=>xn.compare(r.marker.severity,o.marker.severity))[0];return this.renderMarkerStatusbar(e,s,i),i}renderMarkerHover(e,t){const i=Yl("div.hover-row"),s=Le(i,Yl("div.marker.hover-contents")),{source:r,message:o,code:a,relatedInformation:l}=e.marker;this._editor.applyFontInfo(s);const c=Le(s,Yl("span"));if(c.style.whiteSpace="pre-wrap",c.innerText=o,r||a)if(a&&typeof a!="string"){const u=Yl("span");if(r){const g=Le(u,Yl("span"));g.innerText=r}const h=Le(u,Yl("a.code-link"));h.setAttribute("href",a.target.toString()),t.add(Ce(h,"click",g=>{this._openerService.open(a.target,{allowCommands:!0}),g.preventDefault(),g.stopPropagation()}));const d=Le(h,Yl("span"));d.innerText=a.value;const f=Le(s,u);f.style.opacity="0.6",f.style.paddingLeft="6px"}else{const u=Le(s,Yl("span"));u.style.opacity="0.6",u.style.paddingLeft="6px",u.innerText=r&&a?`${r}(${a})`:r||`(${a})`}if(Ir(l))for(const{message:u,resource:h,startLineNumber:d,startColumn:f}of l){const g=Le(s,Yl("div"));g.style.marginTop="8px";const p=Le(g,Yl("a"));p.innerText=`${Wl(h)}(${d}, ${f}): `,p.style.cursor="pointer",t.add(Ce(p,"click",_=>{_.stopPropagation(),_.preventDefault(),this._openerService&&this._openerService.open(h,{fromUserGesture:!0,editorOptions:{selection:{startLineNumber:d,startColumn:f}}}).catch(vt)}));const m=Le(g,Yl("span"));m.innerText=u,this._editor.applyFontInfo(m)}return i}renderMarkerStatusbar(e,t,i){if((t.marker.severity===xn.Error||t.marker.severity===xn.Warning||t.marker.severity===xn.Info)&&e.statusBar.addAction({label:v("view problem","View Problem"),commandId:Ap.ID,run:()=>{var s;e.hide(),(s=gm.get(this._editor))===null||s===void 0||s.showAtMarker(t.marker),this._editor.focus()}}),!this._editor.getOption(90)){const s=e.statusBar.append(Yl("div"));this.recentMarkerCodeActionsInfo&&(NP.makeKey(this.recentMarkerCodeActionsInfo.marker)===NP.makeKey(t.marker)?this.recentMarkerCodeActionsInfo.hasCodeActions||(s.textContent=v("noQuickFixes","No quick fixes available")):this.recentMarkerCodeActionsInfo=void 0);const r=this.recentMarkerCodeActionsInfo&&!this.recentMarkerCodeActionsInfo.hasCodeActions?pe.None:i.add(Gp(()=>s.textContent=v("checkingForQuickFixes","Checking for quick fixes..."),200));s.textContent||(s.textContent=" ");const o=this.getCodeActions(t.marker);i.add(st(()=>o.cancel())),o.then(a=>{if(r.dispose(),this.recentMarkerCodeActionsInfo={marker:t.marker,hasCodeActions:a.validActions.length>0},!this.recentMarkerCodeActionsInfo.hasCodeActions){a.dispose(),s.textContent=v("noQuickFixes","No quick fixes available");return}s.style.display="none";let l=!1;i.add(st(()=>{l||a.dispose()})),e.statusBar.addAction({label:v("quick fixes","Quick Fix..."),commandId:vK,run:c=>{l=!0;const u=cm.get(this._editor),h=ys(c);e.hide(),u==null||u.showCodeActions(nne,a,{x:h.left,y:h.top,width:h.width,height:h.height})}})},vt)}}getCodeActions(e){return Ns(t=>gk(this._languageFeaturesService.codeActionProvider,this._editor.getModel(),new M(e.startLineNumber,e.startColumn,e.endLineNumber,e.endColumn),nne,Of.None,t))}};HW=xtt([M3(1,rq),M3(2,_a),M3(3,Ge)],HW);const j_e="editor.action.inlineSuggest.commit",q_e="editor.action.inlineSuggest.showPrevious",K_e="editor.action.inlineSuggest.showNext";class Dtt extends pe{constructor(e,t,i={orientation:0}){super(),this.submenuActionViewItems=[],this.hasSecondaryActions=!1,this._onDidChangeDropdownVisibility=this._register(new mBe),this.onDidChangeDropdownVisibility=this._onDidChangeDropdownVisibility.event,this.disposables=this._register(new xe),this.options=i,this.lookupKeybindings=typeof this.options.getKeyBinding=="function",this.toggleMenuAction=this._register(new cx(()=>{var s;return(s=this.toggleMenuActionViewItem)===null||s===void 0?void 0:s.show()},i.toggleMenuTitle)),this.element=document.createElement("div"),this.element.className="monaco-toolbar",e.appendChild(this.element),this.actionBar=this._register(new Vl(this.element,{orientation:i.orientation,ariaLabel:i.ariaLabel,actionRunner:i.actionRunner,allowContextMenu:i.allowContextMenu,highlightToggledItems:i.highlightToggledItems,actionViewItemProvider:(s,r)=>{var o;if(s.id===cx.ID)return this.toggleMenuActionViewItem=new MP(s,s.menuActions,t,{actionViewItemProvider:this.options.actionViewItemProvider,actionRunner:this.actionRunner,keybindingProvider:this.options.getKeyBinding,classNames:nt.asClassNameArray((o=i.moreIcon)!==null&&o!==void 0?o:Pe.toolBarMore),anchorAlignmentProvider:this.options.anchorAlignmentProvider,menuAsChild:!!this.options.renderDropdownAsChildElement,skipTelemetry:this.options.skipTelemetry,isMenu:!0}),this.toggleMenuActionViewItem.setActionContext(this.actionBar.context),this.disposables.add(this._onDidChangeDropdownVisibility.add(this.toggleMenuActionViewItem.onDidChangeVisibility)),this.toggleMenuActionViewItem;if(i.actionViewItemProvider){const a=i.actionViewItemProvider(s,r);if(a)return a}if(s instanceof gy){const a=new MP(s,s.actions,t,{actionViewItemProvider:this.options.actionViewItemProvider,actionRunner:this.actionRunner,keybindingProvider:this.options.getKeyBinding,classNames:s.class,anchorAlignmentProvider:this.options.anchorAlignmentProvider,menuAsChild:!!this.options.renderDropdownAsChildElement,skipTelemetry:this.options.skipTelemetry});return a.setActionContext(this.actionBar.context),this.submenuActionViewItems.push(a),this.disposables.add(this._onDidChangeDropdownVisibility.add(a.onDidChangeVisibility)),a}}}))}set actionRunner(e){this.actionBar.actionRunner=e}get actionRunner(){return this.actionBar.actionRunner}getElement(){return this.element}getItemAction(e){return this.actionBar.getAction(e)}setActions(e,t){this.clear();const i=e?e.slice(0):[];this.hasSecondaryActions=!!(t&&t.length>0),this.hasSecondaryActions&&t&&(this.toggleMenuAction.menuActions=t.slice(0),i.push(this.toggleMenuAction)),i.forEach(s=>{this.actionBar.push(s,{icon:!0,label:!1,keybinding:this.getKeybindingLabel(s)})})}getKeybindingLabel(e){var t,i,s;const r=this.lookupKeybindings?(i=(t=this.options).getKeyBinding)===null||i===void 0?void 0:i.call(t,e):void 0;return(s=r==null?void 0:r.getLabel())!==null&&s!==void 0?s:void 0}clear(){this.submenuActionViewItems=[],this.disposables.clear(),this.actionBar.clear()}dispose(){this.clear(),this.disposables.dispose(),super.dispose()}}class cx extends ho{constructor(e,t){t=t||v("moreActions","More Actions..."),super(cx.ID,t,void 0,!0),this._menuActions=[],this.toggleDropdownMenu=e}async run(){this.toggleDropdownMenu()}get menuActions(){return this._menuActions}set menuActions(e){this._menuActions=e}}cx.ID="toolbar.toggle.more";function Itt(n,e){const t=[],i=[];for(const s of n)e.has(s)||t.push(s);for(const s of e)n.has(s)||i.push(s);return{removed:t,added:i}}function Ttt(n,e){const t=new Set;for(const i of e)n.has(i)&&t.add(i);return t}var G_e=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},Lh=function(n,e){return function(t,i){e(t,i,n)}};let YP=class extends Dtt{constructor(e,t,i,s,r,o,a){super(e,r,{getKeyBinding:c=>{var u;return(u=o.lookupKeybinding(c.id))!==null&&u!==void 0?u:void 0},...t,allowContextMenu:!0,skipTelemetry:typeof(t==null?void 0:t.telemetrySource)=="string"}),this._options=t,this._menuService=i,this._contextKeyService=s,this._contextMenuService=r,this._sessionDisposables=this._store.add(new xe);const l=t==null?void 0:t.telemetrySource;l&&this._store.add(this.actionBar.onDidRun(c=>a.publicLog2("workbenchActionExecuted",{id:c.action.id,from:l})))}setActions(e,t=[],i){var s,r,o;this._sessionDisposables.clear();const a=e.slice(),l=t.slice(),c=[];let u=0;const h=[];let d=!1;if(((s=this._options)===null||s===void 0?void 0:s.hiddenItemStrategy)!==-1)for(let f=0;f<a.length;f++){const g=a[f];!(g instanceof Lc)&&!(g instanceof vL)||g.hideActions&&(c.push(g.hideActions.toggle),g.hideActions.toggle.checked&&u++,g.hideActions.isHidden&&(d=!0,a[f]=void 0,((r=this._options)===null||r===void 0?void 0:r.hiddenItemStrategy)!==0&&(h[f]=g)))}if(((o=this._options)===null||o===void 0?void 0:o.overflowBehavior)!==void 0){const f=Ttt(new Set(this._options.overflowBehavior.exempted),Vt.map(a,m=>m==null?void 0:m.id)),g=this._options.overflowBehavior.maxItems-f.size;let p=0;for(let m=0;m<a.length;m++){const _=a[m];_&&(p++,!f.has(_.id)&&p>=g&&(a[m]=void 0,h[m]=_))}}MJ(a),MJ(h),super.setActions(a,js.join(h,l)),c.length>0&&this._sessionDisposables.add(Ce(this.getElement(),"contextmenu",f=>{var g,p,m,_,b;const y=new ac(pt(this.getElement()),f),w=this.getItemAction(y.target);if(!w)return;y.preventDefault(),y.stopPropagation();let S=!1;if(u===1&&((g=this._options)===null||g===void 0?void 0:g.hiddenItemStrategy)===0){S=!0;for(let k=0;k<c.length;k++)if(c[k].checked){c[k]=pb({id:w.id,label:w.label,checked:!0,enabled:!1,run(){}});break}}let E;if(!S&&(w instanceof Lc||w instanceof vL)){if(!w.hideActions)return;E=w.hideActions.hide}else E=pb({id:"label",label:v("hide","Hide"),enabled:!1,run(){}});const L=js.join([E],c);!((p=this._options)===null||p===void 0)&&p.resetMenu&&!i&&(i=[this._options.resetMenu]),d&&i&&(L.push(new js),L.push(pb({id:"resetThisMenu",label:v("resetThisMenu","Reset Menu"),run:()=>this._menuService.resetHiddenStates(i)}))),this._contextMenuService.showContextMenu({getAnchor:()=>y,getActions:()=>L,menuId:(m=this._options)===null||m===void 0?void 0:m.contextMenu,menuActionOptions:{renderShortTitle:!0,...(_=this._options)===null||_===void 0?void 0:_.menuOptions},skipTelemetry:typeof((b=this._options)===null||b===void 0?void 0:b.telemetrySource)=="string",contextKeyService:this._contextKeyService})}))}};YP=G_e([Lh(2,Vu),Lh(3,ft),Lh(4,zl),Lh(5,Di),Lh(6,fa)],YP);let $W=class extends YP{constructor(e,t,i,s,r,o,a,l){super(e,{resetMenu:t,...i},s,r,o,a,l),this._onDidChangeMenuItems=this._store.add(new ue);const c=this._store.add(s.createMenu(t,r,{emitEventsForSubmenuChanges:!0})),u=()=>{var h,d,f;const g=[],p=[];TK(c,i==null?void 0:i.menuOptions,{primary:g,secondary:p},(h=i==null?void 0:i.toolbarOptions)===null||h===void 0?void 0:h.primaryGroup,(d=i==null?void 0:i.toolbarOptions)===null||d===void 0?void 0:d.shouldInlineSubmenu,(f=i==null?void 0:i.toolbarOptions)===null||f===void 0?void 0:f.useSeparatorsInPrimaryActions),e.classList.toggle("has-no-actions",g.length===0&&p.length===0),super.setActions(g,p)};this._store.add(c.onDidChange(()=>{u(),this._onDidChangeMenuItems.fire(this)})),u()}setActions(){throw new an("This toolbar is populated from a menu.")}};$W=G_e([Lh(3,Vu),Lh(4,ft),Lh(5,zl),Lh(6,Di),Lh(7,fa)],$W);var eG=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},hu=function(n,e){return function(t,i){e(t,i,n)}},kN;let zW=class extends pe{constructor(e,t,i){super(),this.editor=e,this.model=t,this.instantiationService=i,this.alwaysShowToolbar=Pn(this.editor.onDidChangeConfiguration,()=>this.editor.getOption(62).showToolbar==="always"),this.sessionPosition=void 0,this.position=St(this,s=>{var r,o,a;const l=(r=this.model.read(s))===null||r===void 0?void 0:r.ghostText.read(s);if(!this.alwaysShowToolbar.read(s)||!l||l.parts.length===0)return this.sessionPosition=void 0,null;const c=l.parts[0].column;this.sessionPosition&&this.sessionPosition.lineNumber!==l.lineNumber&&(this.sessionPosition=void 0);const u=new he(l.lineNumber,Math.min(c,(a=(o=this.sessionPosition)===null||o===void 0?void 0:o.column)!==null&&a!==void 0?a:Number.MAX_SAFE_INTEGER));return this.sessionPosition=u,u}),this._register(rg((s,r)=>{const o=this.model.read(s);if(!o||!this.alwaysShowToolbar.read(s))return;const a=r.add(this.instantiationService.createInstance(pm,this.editor,!0,this.position,o.selectedInlineCompletionIndex,o.inlineCompletionsCount,o.selectedInlineCompletion.map(l=>{var c;return(c=l==null?void 0:l.inlineCompletion.source.inlineCompletions.commands)!==null&&c!==void 0?c:[]})));e.addContentWidget(a),r.add(st(()=>e.removeContentWidget(a))),r.add(pi(l=>{this.position.read(l)&&o.lastTriggerKind.read(l)!==Rf.Explicit&&o.triggerExplicitly()}))}))}};zW=eG([hu(2,at)],zW);const Ntt=Gn("inline-suggestion-hints-next",Pe.chevronRight,v("parameterHintsNextIcon","Icon for show next parameter hint.")),Att=Gn("inline-suggestion-hints-previous",Pe.chevronLeft,v("parameterHintsPreviousIcon","Icon for show previous parameter hint."));let pm=kN=class extends pe{static get dropDownVisible(){return this._dropDownVisible}createCommandAction(e,t,i){const s=new ho(e,t,i,!0,()=>this._commandService.executeCommand(e)),r=this.keybindingService.lookupKeybinding(e,this._contextKeyService);let o=t;return r&&(o=v({key:"content",comment:["A label","A keybinding"]},"{0} ({1})",t,r.getLabel())),s.tooltip=o,s}constructor(e,t,i,s,r,o,a,l,c,u,h){super(),this.editor=e,this.withBorder=t,this._position=i,this._currentSuggestionIdx=s,this._suggestionCount=r,this._extraCommands=o,this._commandService=a,this.keybindingService=c,this._contextKeyService=u,this._menuService=h,this.id=`InlineSuggestionHintsContentWidget${kN.id++}`,this.allowEditorOverflow=!0,this.suppressMouseDown=!1,this.nodes=en("div.inlineSuggestionsHints",{className:this.withBorder?".withBorder":""},[en("div@toolBar")]),this.previousAction=this.createCommandAction(q_e,v("previous","Previous"),nt.asClassName(Att)),this.availableSuggestionCountAction=new ho("inlineSuggestionHints.availableSuggestionCount","",void 0,!1),this.nextAction=this.createCommandAction(K_e,v("next","Next"),nt.asClassName(Ntt)),this.inlineCompletionsActionsMenus=this._register(this._menuService.createMenu(B.InlineCompletionsActions,this._contextKeyService)),this.clearAvailableSuggestionCountLabelDebounced=this._register(new Ei(()=>{this.availableSuggestionCountAction.label=""},100)),this.disableButtonsDebounced=this._register(new Ei(()=>{this.previousAction.enabled=this.nextAction.enabled=!1},100)),this.lastCommands=[],this.toolBar=this._register(l.createInstance(UW,this.nodes.toolBar,B.InlineSuggestionToolbar,{menuOptions:{renderShortTitle:!0},toolbarOptions:{primaryGroup:d=>d.startsWith("primary")},actionViewItemProvider:(d,f)=>{if(d instanceof Lc)return l.createInstance(Rtt,d,void 0);if(d===this.availableSuggestionCountAction){const g=new Ptt(void 0,d,{label:!0,icon:!1});return g.setClass("availableSuggestionCount"),g}},telemetrySource:"InlineSuggestionToolbar"})),this.toolBar.setPrependedPrimaryActions([this.previousAction,this.availableSuggestionCountAction,this.nextAction]),this._register(this.toolBar.onDidChangeDropdownVisibility(d=>{kN._dropDownVisible=d})),this._register(pi(d=>{this._position.read(d),this.editor.layoutContentWidget(this)})),this._register(pi(d=>{const f=this._suggestionCount.read(d),g=this._currentSuggestionIdx.read(d);f!==void 0?(this.clearAvailableSuggestionCountLabelDebounced.cancel(),this.availableSuggestionCountAction.label=`${g+1}/${f}`):this.clearAvailableSuggestionCountLabelDebounced.schedule(),f!==void 0&&f>1?(this.disableButtonsDebounced.cancel(),this.previousAction.enabled=this.nextAction.enabled=!0):this.disableButtonsDebounced.schedule()})),this._register(pi(d=>{const f=this._extraCommands.read(d);if(On(this.lastCommands,f))return;this.lastCommands=f;const g=f.map(p=>({class:void 0,id:p.id,enabled:!0,tooltip:p.tooltip||"",label:p.title,run:m=>this._commandService.executeCommand(p.id)}));for(const[p,m]of this.inlineCompletionsActionsMenus.getActions())for(const _ of m)_ instanceof Lc&&g.push(_);g.length>0&&g.unshift(new js),this.toolBar.setAdditionalSecondaryActions(g)}))}getId(){return this.id}getDomNode(){return this.nodes.root}getPosition(){return{position:this._position.get(),preference:[1,2],positionAffinity:3}}};pm._dropDownVisible=!1;pm.id=0;pm=kN=eG([hu(6,Dn),hu(7,at),hu(8,Di),hu(9,ft),hu(10,Vu)],pm);class Ptt extends Ny{constructor(){super(...arguments),this._className=void 0}setClass(e){this._className=e}render(e){super.render(e),this._className&&e.classList.add(this._className)}}let Rtt=class extends z_{updateLabel(){const e=this._keybindingService.lookupKeybinding(this._action.id,this._contextKeyService);if(!e)return super.updateLabel();if(this.label){const t=en("div.keybinding").root;new BE(t,Ha,{disableTitle:!0,...KXe}).set(e),this.label.textContent=this._action.label,this.label.appendChild(t),this.label.classList.add("inlineSuggestionStatusBarItemLabel")}}},UW=class extends YP{constructor(e,t,i,s,r,o,a,l){super(e,{resetMenu:t,...i},s,r,o,a,l),this.menuId=t,this.options2=i,this.menuService=s,this.contextKeyService=r,this.menu=this._store.add(this.menuService.createMenu(this.menuId,this.contextKeyService,{emitEventsForSubmenuChanges:!0})),this.additionalActions=[],this.prependedPrimaryActions=[],this._store.add(this.menu.onDidChange(()=>this.updateToolbar())),this.updateToolbar()}updateToolbar(){var e,t,i,s,r,o,a;const l=[],c=[];TK(this.menu,(e=this.options2)===null||e===void 0?void 0:e.menuOptions,{primary:l,secondary:c},(i=(t=this.options2)===null||t===void 0?void 0:t.toolbarOptions)===null||i===void 0?void 0:i.primaryGroup,(r=(s=this.options2)===null||s===void 0?void 0:s.toolbarOptions)===null||r===void 0?void 0:r.shouldInlineSubmenu,(a=(o=this.options2)===null||o===void 0?void 0:o.toolbarOptions)===null||a===void 0?void 0:a.useSeparatorsInPrimaryActions),c.push(...this.additionalActions),l.unshift(...this.prependedPrimaryActions),this.setActions(l,c)}setPrependedPrimaryActions(e){On(this.prependedPrimaryActions,e,(t,i)=>t===i)||(this.prependedPrimaryActions=e,this.updateToolbar())}setAdditionalSecondaryActions(e){On(this.additionalActions,e,(t,i)=>t===i)||(this.additionalActions=e,this.updateToolbar())}};UW=eG([hu(3,Vu),hu(4,ft),hu(5,zl),hu(6,Di),hu(7,fa)],UW);var Mtt=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},OI=function(n,e){return function(t,i){e(t,i,n)}},jW;const Ott=!1;let Fo=jW=class extends pe{static get(e){return e.getContribution(jW.ID)}constructor(e,t,i,s,r){super(),this._editor=e,this._instantiationService=t,this._openerService=i,this._languageService=s,this._keybindingService=r,this._toUnhook=new xe,this._hoverActivatedByColorDecoratorClick=!1,this._isMouseDown=!1,this._hoverClicked=!1,this._contentWidget=null,this._glyphWidget=null,this._reactToEditorMouseMoveRunner=this._register(new Ei(()=>this._reactToEditorMouseMove(this._mouseMoveEvent),0)),this._hookEvents(),this._register(this._editor.onDidChangeConfiguration(o=>{o.hasChanged(60)&&(this._unhookEvents(),this._hookEvents())}))}_hookEvents(){const e=this._editor.getOption(60);this._isHoverEnabled=e.enabled,this._isHoverSticky=e.sticky,this._hidingDelay=e.hidingDelay,this._isHoverEnabled?(this._toUnhook.add(this._editor.onMouseDown(t=>this._onEditorMouseDown(t))),this._toUnhook.add(this._editor.onMouseUp(t=>this._onEditorMouseUp(t))),this._toUnhook.add(this._editor.onMouseMove(t=>this._onEditorMouseMove(t))),this._toUnhook.add(this._editor.onKeyDown(t=>this._onKeyDown(t)))):(this._toUnhook.add(this._editor.onMouseMove(t=>this._onEditorMouseMove(t))),this._toUnhook.add(this._editor.onKeyDown(t=>this._onKeyDown(t)))),this._toUnhook.add(this._editor.onMouseLeave(t=>this._onEditorMouseLeave(t))),this._toUnhook.add(this._editor.onDidChangeModel(()=>{this._cancelScheduler(),this._hideWidgets()})),this._toUnhook.add(this._editor.onDidChangeModelContent(()=>this._cancelScheduler())),this._toUnhook.add(this._editor.onDidScrollChange(t=>this._onEditorScrollChanged(t)))}_cancelScheduler(){this._mouseMoveEvent=void 0,this._reactToEditorMouseMoveRunner.cancel()}_unhookEvents(){this._toUnhook.clear()}_onEditorScrollChanged(e){(e.scrollTopChanged||e.scrollLeftChanged)&&this._hideWidgets()}_onEditorMouseDown(e){var t;this._isMouseDown=!0;const i=e.target;if(i.type===9&&i.detail===Np.ID){this._hoverClicked=!0;return}i.type===12&&i.detail===Pb.ID||(i.type!==12&&(this._hoverClicked=!1),!((t=this._contentWidget)===null||t===void 0)&&t.widget.isResizing||this._hideWidgets())}_onEditorMouseUp(e){this._isMouseDown=!1}_onEditorMouseLeave(e){var t,i;this._cancelScheduler();const s=e.event.browserEvent.relatedTarget;!((t=this._contentWidget)===null||t===void 0)&&t.widget.isResizing||!((i=this._contentWidget)===null||i===void 0)&&i.containsNode(s)||this._hideWidgets()}_isMouseOverWidget(e){var t,i,s,r,o;const a=e.target;return!!(this._isHoverSticky&&a.type===9&&a.detail===Np.ID||this._isHoverSticky&&(!((t=this._contentWidget)===null||t===void 0)&&t.containsNode((i=e.event.browserEvent.view)===null||i===void 0?void 0:i.document.activeElement))&&!(!((r=(s=e.event.browserEvent.view)===null||s===void 0?void 0:s.getSelection())===null||r===void 0)&&r.isCollapsed)||!this._isHoverSticky&&a.type===9&&a.detail===Np.ID&&(!((o=this._contentWidget)===null||o===void 0)&&o.isColorPickerVisible)||this._isHoverSticky&&a.type===12&&a.detail===Pb.ID)}_onEditorMouseMove(e){var t,i,s,r;if(this._mouseMoveEvent=e,!((t=this._contentWidget)===null||t===void 0)&&t.isFocused||!((i=this._contentWidget)===null||i===void 0)&&i.isResizing||this._isMouseDown&&this._hoverClicked||this._isHoverSticky&&(!((s=this._contentWidget)===null||s===void 0)&&s.isVisibleFromKeyboard))return;if(this._isMouseOverWidget(e)){this._reactToEditorMouseMoveRunner.cancel();return}if(!((r=this._contentWidget)===null||r===void 0)&&r.isVisible&&this._isHoverSticky&&this._hidingDelay>0){this._reactToEditorMouseMoveRunner.isScheduled()||this._reactToEditorMouseMoveRunner.schedule(this._hidingDelay);return}this._reactToEditorMouseMove(e)}_reactToEditorMouseMove(e){var t,i,s;if(!e)return;const r=e.target,o=(t=r.element)===null||t===void 0?void 0:t.classList.contains("colorpicker-color-decoration"),a=this._editor.getOption(146);if(o&&(a==="click"&&!this._hoverActivatedByColorDecoratorClick||a==="hover"&&!this._isHoverEnabled&&!Ott||a==="clickAndHover"&&!this._isHoverEnabled&&!this._hoverActivatedByColorDecoratorClick)||!o&&!this._isHoverEnabled&&!this._hoverActivatedByColorDecoratorClick){this._hideWidgets();return}if(this._getOrCreateContentWidget().maybeShowAt(e)){(i=this._glyphWidget)===null||i===void 0||i.hide();return}if(r.type===2&&r.position){(s=this._contentWidget)===null||s===void 0||s.hide(),this._glyphWidget||(this._glyphWidget=new Pb(this._editor,this._languageService,this._openerService)),this._glyphWidget.startShowingAt(r.position.lineNumber);return}this._hideWidgets()}_onKeyDown(e){var t;if(!this._editor.hasModel())return;const i=this._keybindingService.softDispatch(e,this._editor.getDomNode()),s=i.kind===1||i.kind===2&&i.commandId==="editor.action.showHover"&&((t=this._contentWidget)===null||t===void 0?void 0:t.isVisible);e.keyCode!==5&&e.keyCode!==6&&e.keyCode!==57&&e.keyCode!==4&&!s&&this._hideWidgets()}_hideWidgets(){var e,t,i;this._isMouseDown&&this._hoverClicked&&(!((e=this._contentWidget)===null||e===void 0)&&e.isColorPickerVisible)||pm.dropDownVisible||(this._hoverActivatedByColorDecoratorClick=!1,this._hoverClicked=!1,(t=this._glyphWidget)===null||t===void 0||t.hide(),(i=this._contentWidget)===null||i===void 0||i.hide())}_getOrCreateContentWidget(){return this._contentWidget||(this._contentWidget=this._instantiationService.createInstance(UP,this._editor)),this._contentWidget}showContentHover(e,t,i,s,r=!1){this._hoverActivatedByColorDecoratorClick=r,this._getOrCreateContentWidget().startShowingAtRange(e,t,i,s)}focus(){var e;(e=this._contentWidget)===null||e===void 0||e.focus()}scrollUp(){var e;(e=this._contentWidget)===null||e===void 0||e.scrollUp()}scrollDown(){var e;(e=this._contentWidget)===null||e===void 0||e.scrollDown()}scrollLeft(){var e;(e=this._contentWidget)===null||e===void 0||e.scrollLeft()}scrollRight(){var e;(e=this._contentWidget)===null||e===void 0||e.scrollRight()}pageUp(){var e;(e=this._contentWidget)===null||e===void 0||e.pageUp()}pageDown(){var e;(e=this._contentWidget)===null||e===void 0||e.pageDown()}goToTop(){var e;(e=this._contentWidget)===null||e===void 0||e.goToTop()}goToBottom(){var e;(e=this._contentWidget)===null||e===void 0||e.goToBottom()}get isColorPickerVisible(){var e;return(e=this._contentWidget)===null||e===void 0?void 0:e.isColorPickerVisible}get isHoverVisible(){var e;return(e=this._contentWidget)===null||e===void 0?void 0:e.isVisible}dispose(){var e,t;super.dispose(),this._unhookEvents(),this._toUnhook.dispose(),(e=this._glyphWidget)===null||e===void 0||e.dispose(),(t=this._contentWidget)===null||t===void 0||t.dispose()}};Fo.ID="editor.contrib.hover";Fo=jW=Mtt([OI(1,at),OI(2,_a),OI(3,sn),OI(4,Di)],Fo);var Kc;(function(n){n.NoAutoFocus="noAutoFocus",n.FocusIfVisible="focusIfVisible",n.AutoFocusImmediately="autoFocusImmediately"})(Kc||(Kc={}));class Ftt extends qe{constructor(){super({id:"editor.action.showHover",label:v({key:"showOrFocusHover",comment:["Label for action that will trigger the showing/focusing of a hover in the editor.","If the hover is not visible, it will show the hover.","This allows for users to show the hover without using the mouse."]},"Show or Focus Hover"),metadata:{description:"Show or Focus Hover",args:[{name:"args",schema:{type:"object",properties:{focus:{description:"Controls if and when the hover should take focus upon being triggered by this action.",enum:[Kc.NoAutoFocus,Kc.FocusIfVisible,Kc.AutoFocusImmediately],enumDescriptions:[v("showOrFocusHover.focus.noAutoFocus","The hover will not automatically take focus."),v("showOrFocusHover.focus.focusIfVisible","The hover will take focus only if it is already visible."),v("showOrFocusHover.focus.autoFocusImmediately","The hover will automatically take focus when it appears.")],default:Kc.FocusIfVisible}}}}]},alias:"Show or Focus Hover",precondition:void 0,kbOpts:{kbExpr:$.editorTextFocus,primary:ws(2089,2087),weight:100}})}run(e,t,i){if(!t.hasModel())return;const s=Fo.get(t);if(!s)return;const r=i==null?void 0:i.focus;let o=Kc.FocusIfVisible;r in Kc?o=r:typeof r=="boolean"&&r&&(o=Kc.AutoFocusImmediately);const a=c=>{const u=t.getPosition(),h=new M(u.lineNumber,u.column,u.lineNumber,u.column);s.showContentHover(h,1,1,c)},l=t.getOption(2)===2;s.isHoverVisible?o!==Kc.NoAutoFocus?s.focus():a(l):a(l||o===Kc.AutoFocusImmediately)}}class Btt extends qe{constructor(){super({id:"editor.action.showDefinitionPreviewHover",label:v({key:"showDefinitionPreviewHover",comment:["Label for action that will trigger the showing of definition preview hover in the editor.","This allows for users to show the definition preview hover without using the mouse."]},"Show Definition Preview Hover"),alias:"Show Definition Preview Hover",precondition:void 0})}run(e,t){const i=Fo.get(t);if(!i)return;const s=t.getPosition();if(!s)return;const r=new M(s.lineNumber,s.column,s.lineNumber,s.column),o=q_.get(t);if(!o)return;o.startFindDefinitionFromCursor(s).then(()=>{i.showContentHover(r,1,1,!0)})}}class Wtt extends qe{constructor(){super({id:"editor.action.scrollUpHover",label:v({key:"scrollUpHover",comment:["Action that allows to scroll up in the hover widget with the up arrow when the hover widget is focused."]},"Scroll Up Hover"),alias:"Scroll Up Hover",precondition:$.hoverFocused,kbOpts:{kbExpr:$.hoverFocused,primary:16,weight:100}})}run(e,t){const i=Fo.get(t);i&&i.scrollUp()}}class Vtt extends qe{constructor(){super({id:"editor.action.scrollDownHover",label:v({key:"scrollDownHover",comment:["Action that allows to scroll down in the hover widget with the up arrow when the hover widget is focused."]},"Scroll Down Hover"),alias:"Scroll Down Hover",precondition:$.hoverFocused,kbOpts:{kbExpr:$.hoverFocused,primary:18,weight:100}})}run(e,t){const i=Fo.get(t);i&&i.scrollDown()}}class Htt extends qe{constructor(){super({id:"editor.action.scrollLeftHover",label:v({key:"scrollLeftHover",comment:["Action that allows to scroll left in the hover widget with the left arrow when the hover widget is focused."]},"Scroll Left Hover"),alias:"Scroll Left Hover",precondition:$.hoverFocused,kbOpts:{kbExpr:$.hoverFocused,primary:15,weight:100}})}run(e,t){const i=Fo.get(t);i&&i.scrollLeft()}}class $tt extends qe{constructor(){super({id:"editor.action.scrollRightHover",label:v({key:"scrollRightHover",comment:["Action that allows to scroll right in the hover widget with the right arrow when the hover widget is focused."]},"Scroll Right Hover"),alias:"Scroll Right Hover",precondition:$.hoverFocused,kbOpts:{kbExpr:$.hoverFocused,primary:17,weight:100}})}run(e,t){const i=Fo.get(t);i&&i.scrollRight()}}class ztt extends qe{constructor(){super({id:"editor.action.pageUpHover",label:v({key:"pageUpHover",comment:["Action that allows to page up in the hover widget with the page up command when the hover widget is focused."]},"Page Up Hover"),alias:"Page Up Hover",precondition:$.hoverFocused,kbOpts:{kbExpr:$.hoverFocused,primary:11,secondary:[528],weight:100}})}run(e,t){const i=Fo.get(t);i&&i.pageUp()}}class Utt extends qe{constructor(){super({id:"editor.action.pageDownHover",label:v({key:"pageDownHover",comment:["Action that allows to page down in the hover widget with the page down command when the hover widget is focused."]},"Page Down Hover"),alias:"Page Down Hover",precondition:$.hoverFocused,kbOpts:{kbExpr:$.hoverFocused,primary:12,secondary:[530],weight:100}})}run(e,t){const i=Fo.get(t);i&&i.pageDown()}}class jtt extends qe{constructor(){super({id:"editor.action.goToTopHover",label:v({key:"goToTopHover",comment:["Action that allows to go to the top of the hover widget with the home command when the hover widget is focused."]},"Go To Top Hover"),alias:"Go To Bottom Hover",precondition:$.hoverFocused,kbOpts:{kbExpr:$.hoverFocused,primary:14,secondary:[2064],weight:100}})}run(e,t){const i=Fo.get(t);i&&i.goToTop()}}class qtt extends qe{constructor(){super({id:"editor.action.goToBottomHover",label:v({key:"goToBottomHover",comment:["Action that allows to go to the bottom in the hover widget with the end command when the hover widget is focused."]},"Go To Bottom Hover"),alias:"Go To Bottom Hover",precondition:$.hoverFocused,kbOpts:{kbExpr:$.hoverFocused,primary:13,secondary:[2066],weight:100}})}run(e,t){const i=Fo.get(t);i&&i.goToBottom()}}ti(Fo.ID,Fo,2);Ae(Ftt);Ae(Btt);Ae(Wtt);Ae(Vtt);Ae(Htt);Ae($tt);Ae(ztt);Ae(Utt);Ae(jtt);Ae(qtt);Fv.register(KP);Fv.register(HW);Nc((n,e)=>{const t=n.getColor(sHe);t&&(e.addRule(`.monaco-editor .monaco-hover .hover-row:not(:first-child):not(:empty) { border-top: 1px solid ${t.transparent(.5)}; }`),e.addRule(`.monaco-editor .monaco-hover hr { border-top: 1px solid ${t.transparent(.5)}; }`),e.addRule(`.monaco-editor .monaco-hover hr { border-bottom: 0px solid ${t.transparent(.5)}; }`))});class qW extends pe{constructor(e){super(),this._editor=e,this._register(e.onMouseDown(t=>this.onMouseDown(t)))}dispose(){super.dispose()}onMouseDown(e){const t=this._editor.getOption(146);if(t!=="click"&&t!=="clickAndHover")return;const i=e.target;if(i.type!==6||!i.detail.injectedText||i.detail.injectedText.options.attachedData!==G1e||!i.range)return;const s=this._editor.getContribution(Fo.ID);if(s&&!s.isColorPickerVisible){const r=new M(i.range.startLineNumber,i.range.startColumn+1,i.range.endLineNumber,i.range.endColumn+1);s.showContentHover(r,1,0,!1,!0)}}}qW.ID="editor.contrib.colorContribution";ti(qW.ID,qW,2);Fv.register(RP);var Y_e=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},su=function(n,e){return function(t,i){e(t,i,n)}},KW,GW;let mm=KW=class extends pe{constructor(e,t,i,s,r,o,a){super(),this._editor=e,this._modelService=i,this._keybindingService=s,this._instantiationService=r,this._languageFeatureService=o,this._languageConfigurationService=a,this._standaloneColorPickerWidget=null,this._standaloneColorPickerVisible=$.standaloneColorPickerVisible.bindTo(t),this._standaloneColorPickerFocused=$.standaloneColorPickerFocused.bindTo(t)}showOrFocus(){var e;this._editor.hasModel()&&(this._standaloneColorPickerVisible.get()?this._standaloneColorPickerFocused.get()||(e=this._standaloneColorPickerWidget)===null||e===void 0||e.focus():this._standaloneColorPickerWidget=new ZP(this._editor,this._standaloneColorPickerVisible,this._standaloneColorPickerFocused,this._instantiationService,this._modelService,this._keybindingService,this._languageFeatureService,this._languageConfigurationService))}hide(){var e;this._standaloneColorPickerFocused.set(!1),this._standaloneColorPickerVisible.set(!1),(e=this._standaloneColorPickerWidget)===null||e===void 0||e.hide(),this._editor.focus()}insertColor(){var e;(e=this._standaloneColorPickerWidget)===null||e===void 0||e.updateEditor(),this.hide()}static get(e){return e.getContribution(KW.ID)}};mm.ID="editor.contrib.standaloneColorPickerController";mm=KW=Y_e([su(1,ft),su(2,fn),su(3,Di),su(4,at),su(5,Ge),su(6,Bi)],mm);ti(mm.ID,mm,1);const sne=8,Ktt=22;let ZP=GW=class extends pe{constructor(e,t,i,s,r,o,a,l){var c;super(),this._editor=e,this._standaloneColorPickerVisible=t,this._standaloneColorPickerFocused=i,this._modelService=r,this._keybindingService=o,this._languageFeaturesService=a,this._languageConfigurationService=l,this.allowEditorOverflow=!0,this._position=void 0,this._body=document.createElement("div"),this._colorHover=null,this._selectionSetInEditor=!1,this._onResult=this._register(new ue),this.onResult=this._onResult.event,this._standaloneColorPickerVisible.set(!0),this._standaloneColorPickerParticipant=s.createInstance(ex,this._editor),this._position=(c=this._editor._getViewModel())===null||c===void 0?void 0:c.getPrimaryCursorState().modelState.position;const u=this._editor.getSelection(),h=u?{startLineNumber:u.startLineNumber,startColumn:u.startColumn,endLineNumber:u.endLineNumber,endColumn:u.endColumn}:{startLineNumber:0,endLineNumber:0,endColumn:0,startColumn:0},d=this._register(gd(this._body));this._register(d.onDidBlur(f=>{this.hide()})),this._register(d.onDidFocus(f=>{this.focus()})),this._register(this._editor.onDidChangeCursorPosition(()=>{this._selectionSetInEditor?this._selectionSetInEditor=!1:this.hide()})),this._register(this._editor.onMouseMove(f=>{var g;const p=(g=f.target.element)===null||g===void 0?void 0:g.classList;p&&p.contains("colorpicker-color-decoration")&&this.hide()})),this._register(this.onResult(f=>{this._render(f.value,f.foundInEditor)})),this._start(h),this._body.style.zIndex="50",this._editor.addContentWidget(this)}updateEditor(){this._colorHover&&this._standaloneColorPickerParticipant.updateEditorModel(this._colorHover)}getId(){return GW.ID}getDomNode(){return this._body}getPosition(){if(!this._position)return null;const e=this._editor.getOption(60).above;return{position:this._position,secondaryPosition:this._position,preference:e?[1,2]:[2,1],positionAffinity:2}}hide(){this.dispose(),this._standaloneColorPickerVisible.set(!1),this._standaloneColorPickerFocused.set(!1),this._editor.removeContentWidget(this),this._editor.focus()}focus(){this._standaloneColorPickerFocused.set(!0),this._body.focus()}async _start(e){const t=await this._computeAsync(e);t&&this._onResult.fire(new Gtt(t.result,t.foundInEditor))}async _computeAsync(e){if(!this._editor.hasModel())return null;const t={range:e,color:{red:0,green:0,blue:0,alpha:1}},i=await this._standaloneColorPickerParticipant.createColorHover(t,new DK(this._modelService,this._languageConfigurationService),this._languageFeaturesService.colorProvider);return i?{result:i.colorHover,foundInEditor:i.foundInEditor}:null}_render(e,t){const i=document.createDocumentFragment(),s=this._register(new jP(this._keybindingService));let r;const o={fragment:i,statusBar:s,setColorPicker:p=>r=p,onContentsChanged:()=>{},hide:()=>this.hide()};if(this._colorHover=e,this._register(this._standaloneColorPickerParticipant.renderHoverParts(o,[e])),r===void 0)return;this._body.classList.add("standalone-colorpicker-body"),this._body.style.maxHeight=Math.max(this._editor.getLayoutInfo().height/4,250)+"px",this._body.style.maxWidth=Math.max(this._editor.getLayoutInfo().width*.66,500)+"px",this._body.tabIndex=0,this._body.appendChild(i),r.layout();const a=r.body,l=a.saturationBox.domNode.clientWidth,c=a.domNode.clientWidth-l-Ktt-sne,u=r.body.enterButton;u==null||u.onClicked(()=>{this.updateEditor(),this.hide()});const h=r.header,d=h.pickedColorNode;d.style.width=l+sne+"px";const f=h.originalColorNode;f.style.width=c+"px";const g=r.header.closeButton;g==null||g.onClicked(()=>{this.hide()}),t&&(u&&(u.button.textContent="Replace"),this._selectionSetInEditor=!0,this._editor.setSelection(e.range)),this._editor.layoutContentWidget(this)}};ZP.ID="editor.contrib.standaloneColorPickerWidget";ZP=GW=Y_e([su(3,at),su(4,fn),su(5,Di),su(6,Ge),su(7,Bi)],ZP);class Gtt{constructor(e,t){this.value=e,this.foundInEditor=t}}class Ytt extends Hu{constructor(){super({id:"editor.action.showOrFocusStandaloneColorPicker",title:{value:v("showOrFocusStandaloneColorPicker","Show or Focus Standalone Color Picker"),mnemonicTitle:v({key:"mishowOrFocusStandaloneColorPicker",comment:["&& denotes a mnemonic"]},"&&Show or Focus Standalone Color Picker"),original:"Show or Focus Standalone Color Picker"},precondition:void 0,menu:[{id:B.CommandPalette}]})}runEditorCommand(e,t){var i;(i=mm.get(t))===null||i===void 0||i.showOrFocus()}}class Ztt extends qe{constructor(){super({id:"editor.action.hideColorPicker",label:v({key:"hideColorPicker",comment:["Action that hides the color picker"]},"Hide the Color Picker"),alias:"Hide the Color Picker",precondition:$.standaloneColorPickerVisible.isEqualTo(!0),kbOpts:{primary:9,weight:100}})}run(e,t){var i;(i=mm.get(t))===null||i===void 0||i.hide()}}class Xtt extends qe{constructor(){super({id:"editor.action.insertColorWithStandaloneColorPicker",label:v({key:"insertColorWithStandaloneColorPicker",comment:["Action that inserts color with standalone color picker"]},"Insert Color with Standalone Color Picker"),alias:"Insert Color with Standalone Color Picker",precondition:$.standaloneColorPickerFocused.isEqualTo(!0),kbOpts:{primary:3,weight:100}})}run(e,t){var i;(i=mm.get(t))===null||i===void 0||i.insertColor()}}Ae(Ztt);Ae(Xtt);Zi(Ytt);class un{static insert(e,t){return{range:new M(e.lineNumber,e.column,e.lineNumber,e.column),text:t,forceMoveMarkers:!0}}static delete(e){return{range:e,text:null}}static replace(e,t){return{range:e,text:t}}static replaceMove(e,t){return{range:e,text:t,forceMoveMarkers:!0}}}class lp{constructor(e,t,i){this.languageConfigurationService=i,this._selection=e,this._insertSpace=t,this._usedEndToken=null}static _haystackHasNeedleAtOffset(e,t,i){if(i<0)return!1;const s=t.length,r=e.length;if(i+s>r)return!1;for(let o=0;o<s;o++){const a=e.charCodeAt(i+o),l=t.charCodeAt(o);if(a!==l&&!(a>=65&&a<=90&&a+32===l)&&!(l>=65&&l<=90&&l+32===a))return!1}return!0}_createOperationsForBlockComment(e,t,i,s,r,o){const a=e.startLineNumber,l=e.startColumn,c=e.endLineNumber,u=e.endColumn,h=r.getLineContent(a),d=r.getLineContent(c);let f=h.lastIndexOf(t,l-1+t.length),g=d.indexOf(i,u-1-i.length);if(f!==-1&&g!==-1)if(a===c)h.substring(f+t.length,g).indexOf(i)>=0&&(f=-1,g=-1);else{const m=h.substring(f+t.length),_=d.substring(0,g);(m.indexOf(i)>=0||_.indexOf(i)>=0)&&(f=-1,g=-1)}let p;f!==-1&&g!==-1?(s&&f+t.length<h.length&&h.charCodeAt(f+t.length)===32&&(t=t+" "),s&&g>0&&d.charCodeAt(g-1)===32&&(i=" "+i,g-=1),p=lp._createRemoveBlockCommentOperations(new M(a,f+t.length+1,c,g+1),t,i)):(p=lp._createAddBlockCommentOperations(e,t,i,this._insertSpace),this._usedEndToken=p.length===1?i:null);for(const m of p)o.addTrackedEditOperation(m.range,m.text)}static _createRemoveBlockCommentOperations(e,t,i){const s=[];return M.isEmpty(e)?s.push(un.delete(new M(e.startLineNumber,e.startColumn-t.length,e.endLineNumber,e.endColumn+i.length))):(s.push(un.delete(new M(e.startLineNumber,e.startColumn-t.length,e.startLineNumber,e.startColumn))),s.push(un.delete(new M(e.endLineNumber,e.endColumn,e.endLineNumber,e.endColumn+i.length)))),s}static _createAddBlockCommentOperations(e,t,i,s){const r=[];return M.isEmpty(e)?r.push(un.replace(new M(e.startLineNumber,e.startColumn,e.endLineNumber,e.endColumn),t+" "+i)):(r.push(un.insert(new he(e.startLineNumber,e.startColumn),t+(s?" ":""))),r.push(un.insert(new he(e.endLineNumber,e.endColumn),(s?" ":"")+i))),r}getEditOperations(e,t){const i=this._selection.startLineNumber,s=this._selection.startColumn;e.tokenization.tokenizeIfCheap(i);const r=e.getLanguageIdAtPosition(i,s),o=this.languageConfigurationService.getLanguageConfiguration(r).comments;!o||!o.blockCommentStartToken||!o.blockCommentEndToken||this._createOperationsForBlockComment(this._selection,o.blockCommentStartToken,o.blockCommentEndToken,this._insertSpace,e,t)}computeCursorState(e,t){const i=t.getInverseEditOperations();if(i.length===2){const s=i[0],r=i[1];return new Ze(s.range.endLineNumber,s.range.endColumn,r.range.startLineNumber,r.range.startColumn)}else{const s=i[0].range,r=this._usedEndToken?-this._usedEndToken.length-1:0;return new Ze(s.endLineNumber,s.endColumn+r,s.endLineNumber,s.endColumn+r)}}}class Xd{constructor(e,t,i,s,r,o,a){this.languageConfigurationService=e,this._selection=t,this._tabSize=i,this._type=s,this._insertSpace=r,this._selectionId=null,this._deltaColumn=0,this._moveEndPositionDown=!1,this._ignoreEmptyLines=o,this._ignoreFirstLine=a||!1}static _gatherPreflightCommentStrings(e,t,i,s){e.tokenization.tokenizeIfCheap(t);const r=e.getLanguageIdAtPosition(t,1),o=s.getLanguageConfiguration(r).comments,a=o?o.lineCommentToken:null;if(!a)return null;const l=[];for(let c=0,u=i-t+1;c<u;c++)l[c]={ignore:!1,commentStr:a,commentStrOffset:0,commentStrLength:a.length};return l}static _analyzeLines(e,t,i,s,r,o,a,l){let c=!0,u;e===0?u=!0:e===1?u=!1:u=!0;for(let h=0,d=s.length;h<d;h++){const f=s[h],g=r+h;if(g===r&&a){f.ignore=!0;continue}const p=i.getLineContent(g),m=zr(p);if(m===-1){f.ignore=o,f.commentStrOffset=p.length;continue}if(c=!1,f.ignore=!1,f.commentStrOffset=m,u&&!lp._haystackHasNeedleAtOffset(p,f.commentStr,m)&&(e===0?u=!1:e===1||(f.ignore=!0)),u&&t){const _=m+f.commentStrLength;_<p.length&&p.charCodeAt(_)===32&&(f.commentStrLength+=1)}}if(e===0&&c){u=!1;for(let h=0,d=s.length;h<d;h++)s[h].ignore=!1}return{supported:!0,shouldRemoveComments:u,lines:s}}static _gatherPreflightData(e,t,i,s,r,o,a,l){const c=Xd._gatherPreflightCommentStrings(i,s,r,l);return c===null?{supported:!1}:Xd._analyzeLines(e,t,i,c,s,o,a,l)}_executeLineComments(e,t,i,s){let r;i.shouldRemoveComments?r=Xd._createRemoveLineCommentsOperations(i.lines,s.startLineNumber):(Xd._normalizeInsertionPoint(e,i.lines,s.startLineNumber,this._tabSize),r=this._createAddLineCommentsOperations(i.lines,s.startLineNumber));const o=new he(s.positionLineNumber,s.positionColumn);for(let a=0,l=r.length;a<l;a++)t.addEditOperation(r[a].range,r[a].text),M.isEmpty(r[a].range)&&M.getStartPosition(r[a].range).equals(o)&&e.getLineContent(o.lineNumber).length+1===o.column&&(this._deltaColumn=(r[a].text||"").length);this._selectionId=t.trackSelection(s)}_attemptRemoveBlockComment(e,t,i,s){let r=t.startLineNumber,o=t.endLineNumber;const a=s.length+Math.max(e.getLineFirstNonWhitespaceColumn(t.startLineNumber),t.startColumn);let l=e.getLineContent(r).lastIndexOf(i,a-1),c=e.getLineContent(o).indexOf(s,t.endColumn-1-i.length);return l!==-1&&c===-1&&(c=e.getLineContent(r).indexOf(s,l+i.length),o=r),l===-1&&c!==-1&&(l=e.getLineContent(o).lastIndexOf(i,c),r=o),t.isEmpty()&&(l===-1||c===-1)&&(l=e.getLineContent(r).indexOf(i),l!==-1&&(c=e.getLineContent(r).indexOf(s,l+i.length))),l!==-1&&e.getLineContent(r).charCodeAt(l+i.length)===32&&(i+=" "),c!==-1&&e.getLineContent(o).charCodeAt(c-1)===32&&(s=" "+s,c-=1),l!==-1&&c!==-1?lp._createRemoveBlockCommentOperations(new M(r,l+i.length+1,o,c+1),i,s):null}_executeBlockComment(e,t,i){e.tokenization.tokenizeIfCheap(i.startLineNumber);const s=e.getLanguageIdAtPosition(i.startLineNumber,1),r=this.languageConfigurationService.getLanguageConfiguration(s).comments;if(!r||!r.blockCommentStartToken||!r.blockCommentEndToken)return;const o=r.blockCommentStartToken,a=r.blockCommentEndToken;let l=this._attemptRemoveBlockComment(e,i,o,a);if(!l){if(i.isEmpty()){const c=e.getLineContent(i.startLineNumber);let u=zr(c);u===-1&&(u=c.length),l=lp._createAddBlockCommentOperations(new M(i.startLineNumber,u+1,i.startLineNumber,c.length+1),o,a,this._insertSpace)}else l=lp._createAddBlockCommentOperations(new M(i.startLineNumber,e.getLineFirstNonWhitespaceColumn(i.startLineNumber),i.endLineNumber,e.getLineMaxColumn(i.endLineNumber)),o,a,this._insertSpace);l.length===1&&(this._deltaColumn=o.length+1)}this._selectionId=t.trackSelection(i);for(const c of l)t.addEditOperation(c.range,c.text)}getEditOperations(e,t){let i=this._selection;if(this._moveEndPositionDown=!1,i.startLineNumber===i.endLineNumber&&this._ignoreFirstLine){t.addEditOperation(new M(i.startLineNumber,e.getLineMaxColumn(i.startLineNumber),i.startLineNumber+1,1),i.startLineNumber===e.getLineCount()?"":` +`),this._selectionId=t.trackSelection(i);return}i.startLineNumber<i.endLineNumber&&i.endColumn===1&&(this._moveEndPositionDown=!0,i=i.setEndPosition(i.endLineNumber-1,e.getLineMaxColumn(i.endLineNumber-1)));const s=Xd._gatherPreflightData(this._type,this._insertSpace,e,i.startLineNumber,i.endLineNumber,this._ignoreEmptyLines,this._ignoreFirstLine,this.languageConfigurationService);return s.supported?this._executeLineComments(e,t,s,i):this._executeBlockComment(e,t,i)}computeCursorState(e,t){let i=t.getTrackedSelection(this._selectionId);return this._moveEndPositionDown&&(i=i.setEndPosition(i.endLineNumber+1,1)),new Ze(i.selectionStartLineNumber,i.selectionStartColumn+this._deltaColumn,i.positionLineNumber,i.positionColumn+this._deltaColumn)}static _createRemoveLineCommentsOperations(e,t){const i=[];for(let s=0,r=e.length;s<r;s++){const o=e[s];o.ignore||i.push(un.delete(new M(t+s,o.commentStrOffset+1,t+s,o.commentStrOffset+o.commentStrLength+1)))}return i}_createAddLineCommentsOperations(e,t){const i=[],s=this._insertSpace?" ":"";for(let r=0,o=e.length;r<o;r++){const a=e[r];a.ignore||i.push(un.insert(new he(t+r,a.commentStrOffset+1),a.commentStr+s))}return i}static nextVisibleColumn(e,t,i,s){return i?e+(t-e%t):e+s}static _normalizeInsertionPoint(e,t,i,s){let r=1073741824,o,a;for(let l=0,c=t.length;l<c;l++){if(t[l].ignore)continue;const u=e.getLineContent(i+l);let h=0;for(let d=0,f=t[l].commentStrOffset;h<r&&d<f;d++)h=Xd.nextVisibleColumn(h,s,u.charCodeAt(d)===9,1);h<r&&(r=h)}r=Math.floor(r/s)*s;for(let l=0,c=t.length;l<c;l++){if(t[l].ignore)continue;const u=e.getLineContent(i+l);let h=0;for(o=0,a=t[l].commentStrOffset;h<r&&o<a;o++)h=Xd.nextVisibleColumn(h,s,u.charCodeAt(o)===9,1);h>r?t[l].commentStrOffset=o-1:t[l].commentStrOffset=o}}}class tG extends qe{constructor(e,t){super(t),this._type=e}run(e,t){const i=e.get(Bi);if(!t.hasModel())return;const s=t.getModel(),r=[],o=s.getOptions(),a=t.getOption(23),l=t.getSelections().map((u,h)=>({selection:u,index:h,ignoreFirstLine:!1}));l.sort((u,h)=>M.compareRangesUsingStarts(u.selection,h.selection));let c=l[0];for(let u=1;u<l.length;u++){const h=l[u];c.selection.endLineNumber===h.selection.startLineNumber&&(c.index<h.index?h.ignoreFirstLine=!0:(c.ignoreFirstLine=!0,c=h))}for(const u of l)r.push(new Xd(i,u.selection,o.tabSize,this._type,a.insertSpace,a.ignoreEmptyLines,u.ignoreFirstLine));t.pushUndoStop(),t.executeCommands(this.id,r),t.pushUndoStop()}}class Qtt extends tG{constructor(){super(0,{id:"editor.action.commentLine",label:v("comment.line","Toggle Line Comment"),alias:"Toggle Line Comment",precondition:$.writable,kbOpts:{kbExpr:$.editorTextFocus,primary:2138,weight:100},menuOpts:{menuId:B.MenubarEditMenu,group:"5_insert",title:v({key:"miToggleLineComment",comment:["&& denotes a mnemonic"]},"&&Toggle Line Comment"),order:1}})}}class Jtt extends tG{constructor(){super(1,{id:"editor.action.addCommentLine",label:v("comment.line.add","Add Line Comment"),alias:"Add Line Comment",precondition:$.writable,kbOpts:{kbExpr:$.editorTextFocus,primary:ws(2089,2081),weight:100}})}}class eit extends tG{constructor(){super(2,{id:"editor.action.removeCommentLine",label:v("comment.line.remove","Remove Line Comment"),alias:"Remove Line Comment",precondition:$.writable,kbOpts:{kbExpr:$.editorTextFocus,primary:ws(2089,2099),weight:100}})}}class tit extends qe{constructor(){super({id:"editor.action.blockComment",label:v("comment.block","Toggle Block Comment"),alias:"Toggle Block Comment",precondition:$.writable,kbOpts:{kbExpr:$.editorTextFocus,primary:1567,linux:{primary:3103},weight:100},menuOpts:{menuId:B.MenubarEditMenu,group:"5_insert",title:v({key:"miToggleBlockComment",comment:["&& denotes a mnemonic"]},"Toggle &&Block Comment"),order:2}})}run(e,t){const i=e.get(Bi);if(!t.hasModel())return;const s=t.getOption(23),r=[],o=t.getSelections();for(const a of o)r.push(new lp(a,s.insertSpace,i));t.pushUndoStop(),t.executeCommands(this.id,r),t.pushUndoStop()}}Ae(Qtt);Ae(Jtt);Ae(eit);Ae(tit);class iit{constructor(){this._value="",this._pos=0}reset(e){return this._value=e,this._pos=0,this}next(){return this._pos+=1,this}hasNext(){return this._pos<this._value.length-1}cmp(e){const t=e.charCodeAt(0),i=this._value.charCodeAt(this._pos);return t-i}value(){return this._value[this._pos]}}class nit{constructor(e=!0){this._caseSensitive=e}reset(e){return this._value=e,this._from=0,this._to=0,this.next()}hasNext(){return this._to<this._value.length}next(){this._from=this._to;let e=!0;for(;this._to<this._value.length;this._to++)if(this._value.charCodeAt(this._to)===46)if(e)this._from++;else break;else e=!1;return this}cmp(e){return this._caseSensitive?Fj(e,this._value,0,e.length,this._from,this._to):fE(e,this._value,0,e.length,this._from,this._to)}value(){return this._value.substring(this._from,this._to)}}class sit{constructor(e=!0,t=!0){this._splitOnBackslash=e,this._caseSensitive=t}reset(e){this._from=0,this._to=0,this._value=e,this._valueLen=e.length;for(let t=e.length-1;t>=0;t--,this._valueLen--){const i=this._value.charCodeAt(t);if(!(i===47||this._splitOnBackslash&&i===92))break}return this.next()}hasNext(){return this._to<this._valueLen}next(){this._from=this._to;let e=!0;for(;this._to<this._valueLen;this._to++){const t=this._value.charCodeAt(this._to);if(t===47||this._splitOnBackslash&&t===92)if(e)this._from++;else break;else e=!1}return this}cmp(e){return this._caseSensitive?Fj(e,this._value,0,e.length,this._from,this._to):fE(e,this._value,0,e.length,this._from,this._to)}value(){return this._value.substring(this._from,this._to)}}class rit{constructor(e,t){this._ignorePathCasing=e,this._ignoreQueryAndFragment=t,this._states=[],this._stateIdx=0}reset(e){return this._value=e,this._states=[],this._value.scheme&&this._states.push(1),this._value.authority&&this._states.push(2),this._value.path&&(this._pathIterator=new sit(!1,!this._ignorePathCasing(e)),this._pathIterator.reset(e.path),this._pathIterator.value()&&this._states.push(3)),this._ignoreQueryAndFragment(e)||(this._value.query&&this._states.push(4),this._value.fragment&&this._states.push(5)),this._stateIdx=0,this}next(){return this._states[this._stateIdx]===3&&this._pathIterator.hasNext()?this._pathIterator.next():this._stateIdx+=1,this}hasNext(){return this._states[this._stateIdx]===3&&this._pathIterator.hasNext()||this._stateIdx<this._states.length-1}cmp(e){if(this._states[this._stateIdx]===1)return G8(e,this._value.scheme);if(this._states[this._stateIdx]===2)return G8(e,this._value.authority);if(this._states[this._stateIdx]===3)return this._pathIterator.cmp(e);if(this._states[this._stateIdx]===4)return fL(e,this._value.query);if(this._states[this._stateIdx]===5)return fL(e,this._value.fragment);throw new Error}value(){if(this._states[this._stateIdx]===1)return this._value.scheme;if(this._states[this._stateIdx]===2)return this._value.authority;if(this._states[this._stateIdx]===3)return this._pathIterator.value();if(this._states[this._stateIdx]===4)return this._value.query;if(this._states[this._stateIdx]===5)return this._value.fragment;throw new Error}}class FI{constructor(){this.height=1}rotateLeft(){const e=this.right;return this.right=e.left,e.left=this,this.updateHeight(),e.updateHeight(),e}rotateRight(){const e=this.left;return this.left=e.right,e.right=this,this.updateHeight(),e.updateHeight(),e}updateHeight(){this.height=1+Math.max(this.heightLeft,this.heightRight)}balanceFactor(){return this.heightRight-this.heightLeft}get heightLeft(){var e,t;return(t=(e=this.left)===null||e===void 0?void 0:e.height)!==null&&t!==void 0?t:0}get heightRight(){var e,t;return(t=(e=this.right)===null||e===void 0?void 0:e.height)!==null&&t!==void 0?t:0}}class Rb{static forUris(e=()=>!1,t=()=>!1){return new Rb(new rit(e,t))}static forStrings(){return new Rb(new iit)}static forConfigKeys(){return new Rb(new nit)}constructor(e){this._iter=e}clear(){this._root=void 0}set(e,t){const i=this._iter.reset(e);let s;this._root||(this._root=new FI,this._root.segment=i.value());const r=[];for(s=this._root;;){const a=i.cmp(s.segment);if(a>0)s.left||(s.left=new FI,s.left.segment=i.value()),r.push([-1,s]),s=s.left;else if(a<0)s.right||(s.right=new FI,s.right.segment=i.value()),r.push([1,s]),s=s.right;else if(i.hasNext())i.next(),s.mid||(s.mid=new FI,s.mid.segment=i.value()),r.push([0,s]),s=s.mid;else break}const o=s.value;s.value=t,s.key=e;for(let a=r.length-1;a>=0;a--){const l=r[a][1];l.updateHeight();const c=l.balanceFactor();if(c<-1||c>1){const u=r[a][0],h=r[a+1][0];if(u===1&&h===1)r[a][1]=l.rotateLeft();else if(u===-1&&h===-1)r[a][1]=l.rotateRight();else if(u===1&&h===-1)l.right=r[a+1][1]=r[a+1][1].rotateRight(),r[a][1]=l.rotateLeft();else if(u===-1&&h===1)l.left=r[a+1][1]=r[a+1][1].rotateLeft(),r[a][1]=l.rotateRight();else throw new Error;if(a>0)switch(r[a-1][0]){case-1:r[a-1][1].left=r[a][1];break;case 1:r[a-1][1].right=r[a][1];break;case 0:r[a-1][1].mid=r[a][1];break}else this._root=r[0][1]}}return o}get(e){var t;return(t=this._getNode(e))===null||t===void 0?void 0:t.value}_getNode(e){const t=this._iter.reset(e);let i=this._root;for(;i;){const s=t.cmp(i.segment);if(s>0)i=i.left;else if(s<0)i=i.right;else if(t.hasNext())t.next(),i=i.mid;else break}return i}has(e){const t=this._getNode(e);return!((t==null?void 0:t.value)===void 0&&(t==null?void 0:t.mid)===void 0)}delete(e){return this._delete(e,!1)}deleteSuperstr(e){return this._delete(e,!0)}_delete(e,t){var i;const s=this._iter.reset(e),r=[];let o=this._root;for(;o;){const a=s.cmp(o.segment);if(a>0)r.push([-1,o]),o=o.left;else if(a<0)r.push([1,o]),o=o.right;else if(s.hasNext())s.next(),r.push([0,o]),o=o.mid;else break}if(o){if(t?(o.left=void 0,o.mid=void 0,o.right=void 0,o.height=1):(o.key=void 0,o.value=void 0),!o.mid&&!o.value)if(o.left&&o.right){const a=this._min(o.right);if(a.key){const{key:l,value:c,segment:u}=a;this._delete(a.key,!1),o.key=l,o.value=c,o.segment=u}}else{const a=(i=o.left)!==null&&i!==void 0?i:o.right;if(r.length>0){const[l,c]=r[r.length-1];switch(l){case-1:c.left=a;break;case 0:c.mid=a;break;case 1:c.right=a;break}}else this._root=a}for(let a=r.length-1;a>=0;a--){const l=r[a][1];l.updateHeight();const c=l.balanceFactor();if(c>1?(l.right.balanceFactor()>=0||(l.right=l.right.rotateRight()),r[a][1]=l.rotateLeft()):c<-1&&(l.left.balanceFactor()<=0||(l.left=l.left.rotateLeft()),r[a][1]=l.rotateRight()),a>0)switch(r[a-1][0]){case-1:r[a-1][1].left=r[a][1];break;case 1:r[a-1][1].right=r[a][1];break;case 0:r[a-1][1].mid=r[a][1];break}else this._root=r[0][1]}}}_min(e){for(;e.left;)e=e.left;return e}findSubstr(e){const t=this._iter.reset(e);let i=this._root,s;for(;i;){const r=t.cmp(i.segment);if(r>0)i=i.left;else if(r<0)i=i.right;else if(t.hasNext())t.next(),s=i.value||s,i=i.mid;else break}return i&&i.value||s}findSuperstr(e){return this._findSuperstrOrElement(e,!1)}_findSuperstrOrElement(e,t){const i=this._iter.reset(e);let s=this._root;for(;s;){const r=i.cmp(s.segment);if(r>0)s=s.left;else if(r<0)s=s.right;else if(i.hasNext())i.next(),s=s.mid;else return s.mid?this._entries(s.mid):t?s.value:void 0}}forEach(e){for(const[t,i]of this)e(i,t)}*[Symbol.iterator](){yield*this._entries(this._root)}_entries(e){const t=[];return this._dfsEntries(e,t),t[Symbol.iterator]()}_dfsEntries(e,t){e&&(e.left&&this._dfsEntries(e.left,t),e.value&&t.push([e.key,e.value]),e.mid&&this._dfsEntries(e.mid,t),e.right&&this._dfsEntries(e.right,t))}}const K_=Bt("contextService");function YW(n){const e=n;return typeof(e==null?void 0:e.id)=="string"&&it.isUri(e.uri)}function oit(n){const e=n;return typeof(e==null?void 0:e.id)=="string"&&!YW(n)&&!uit(n)}const ait={id:"ext-dev"},lit={id:"empty-window"};function cit(n,e){if(typeof n=="string"||typeof n>"u")return typeof n=="string"?{id:Cp(n)}:e?ait:lit;const t=n;return t.configuration?{id:t.id,configPath:t.configuration}:t.folders.length===1?{id:t.id,uri:t.folders[0].uri}:{id:t.id}}function uit(n){const e=n;return typeof(e==null?void 0:e.id)=="string"&&it.isUri(e.configPath)}class hit{constructor(e,t){this.raw=t,this.uri=e.uri,this.index=e.index,this.name=e.name}toJSON(){return{uri:this.uri,name:this.name,index:this.index}}}const ZW="code-workspace";v("codeWorkspace","Code Workspace");const Z_e="4064f6ec-cb38-4ad0-af64-ee6467e63c82";function dit(n){return n.id===Z_e}var fit=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},e1=function(n,e){return function(t,i){e(t,i,n)}},XW;let Fy=XW=class{static get(e){return e.getContribution(XW.ID)}constructor(e,t,i,s,r,o,a,l){this._contextMenuService=t,this._contextViewService=i,this._contextKeyService=s,this._keybindingService=r,this._menuService=o,this._configurationService=a,this._workspaceContextService=l,this._toDispose=new xe,this._contextMenuIsBeingShownCount=0,this._editor=e,this._toDispose.add(this._editor.onContextMenu(c=>this._onContextMenu(c))),this._toDispose.add(this._editor.onMouseWheel(c=>{if(this._contextMenuIsBeingShownCount>0){const u=this._contextViewService.getContextViewElement(),h=c.srcElement;h.shadowRoot&&P_(u)===h.shadowRoot||this._contextViewService.hideContextView()}})),this._toDispose.add(this._editor.onKeyDown(c=>{this._editor.getOption(24)&&c.keyCode===58&&(c.preventDefault(),c.stopPropagation(),this.showContextMenu())}))}_onContextMenu(e){if(!this._editor.hasModel())return;if(!this._editor.getOption(24)){this._editor.focus(),e.target.position&&!this._editor.getSelection().containsPosition(e.target.position)&&this._editor.setPosition(e.target.position);return}if(e.target.type===12||e.target.type===6&&e.target.detail.injectedText)return;if(e.event.preventDefault(),e.event.stopPropagation(),e.target.type===11)return this._showScrollbarContextMenu(e.event);if(e.target.type!==6&&e.target.type!==7&&e.target.type!==1)return;if(this._editor.focus(),e.target.position){let i=!1;for(const s of this._editor.getSelections())if(s.containsPosition(e.target.position)){i=!0;break}i||this._editor.setPosition(e.target.position)}let t=null;e.target.type!==1&&(t=e.event),this.showContextMenu(t)}showContextMenu(e){if(!this._editor.getOption(24)||!this._editor.hasModel())return;const t=this._getMenuActions(this._editor.getModel(),this._editor.isSimpleWidget?B.SimpleEditorContext:B.EditorContext);t.length>0&&this._doShowContextMenu(t,e)}_getMenuActions(e,t){const i=[],s=this._menuService.createMenu(t,this._contextKeyService),r=s.getActions({arg:e.uri});s.dispose();for(const o of r){const[,a]=o;let l=0;for(const c of a)if(c instanceof vL){const u=this._getMenuActions(e,c.item.submenu);u.length>0&&(i.push(new gy(c.id,c.label,u)),l++)}else i.push(c),l++;l&&i.push(new js)}return i.length&&i.pop(),i}_doShowContextMenu(e,t=null){if(!this._editor.hasModel())return;const i=this._editor.getOption(60);this._editor.updateOptions({hover:{enabled:!1}});let s=t;if(!s){this._editor.revealPosition(this._editor.getPosition(),1),this._editor.render();const o=this._editor.getScrolledVisiblePosition(this._editor.getPosition()),a=ys(this._editor.getDomNode()),l=a.left+o.left,c=a.top+o.top+o.height;s={x:l,y:c}}const r=this._editor.getOption(126)&&!Du;this._contextMenuIsBeingShownCount++,this._contextMenuService.showContextMenu({domForShadowRoot:r?this._editor.getDomNode():void 0,getAnchor:()=>s,getActions:()=>e,getActionViewItem:o=>{const a=this._keybindingFor(o);if(a)return new Ny(o,o,{label:!0,keybinding:a.getLabel(),isMenu:!0});const l=o;return typeof l.getActionViewItem=="function"?l.getActionViewItem():new Ny(o,o,{icon:!0,label:!0,isMenu:!0})},getKeyBinding:o=>this._keybindingFor(o),onHide:o=>{this._contextMenuIsBeingShownCount--,this._editor.updateOptions({hover:i})}})}_showScrollbarContextMenu(e){if(!this._editor.hasModel()||dit(this._workspaceContextService.getWorkspace()))return;const t=this._editor.getOption(72);let i=0;const s=c=>({id:`menu-action-${++i}`,label:c.label,tooltip:"",class:void 0,enabled:typeof c.enabled>"u"?!0:c.enabled,checked:c.checked,run:c.run}),r=(c,u)=>new gy(`menu-action-${++i}`,c,u,void 0),o=(c,u,h,d,f)=>{if(!u)return s({label:c,enabled:u,run:()=>{}});const g=m=>()=>{this._configurationService.updateValue(h,m)},p=[];for(const m of f)p.push(s({label:m.label,checked:d===m.value,run:g(m.value)}));return r(c,p)},a=[];a.push(s({label:v("context.minimap.minimap","Minimap"),checked:t.enabled,run:()=>{this._configurationService.updateValue("editor.minimap.enabled",!t.enabled)}})),a.push(new js),a.push(s({label:v("context.minimap.renderCharacters","Render Characters"),enabled:t.enabled,checked:t.renderCharacters,run:()=>{this._configurationService.updateValue("editor.minimap.renderCharacters",!t.renderCharacters)}})),a.push(o(v("context.minimap.size","Vertical size"),t.enabled,"editor.minimap.size",t.size,[{label:v("context.minimap.size.proportional","Proportional"),value:"proportional"},{label:v("context.minimap.size.fill","Fill"),value:"fill"},{label:v("context.minimap.size.fit","Fit"),value:"fit"}])),a.push(o(v("context.minimap.slider","Slider"),t.enabled,"editor.minimap.showSlider",t.showSlider,[{label:v("context.minimap.slider.mouseover","Mouse Over"),value:"mouseover"},{label:v("context.minimap.slider.always","Always"),value:"always"}]));const l=this._editor.getOption(126)&&!Du;this._contextMenuIsBeingShownCount++,this._contextMenuService.showContextMenu({domForShadowRoot:l?this._editor.getDomNode():void 0,getAnchor:()=>e,getActions:()=>a,onHide:c=>{this._contextMenuIsBeingShownCount--,this._editor.focus()}})}_keybindingFor(e){return this._keybindingService.lookupKeybinding(e.id)}dispose(){this._contextMenuIsBeingShownCount>0&&this._contextViewService.hideContextView(),this._toDispose.dispose()}};Fy.ID="editor.contrib.contextmenu";Fy=XW=fit([e1(1,zl),e1(2,lg),e1(3,ft),e1(4,Di),e1(5,Vu),e1(6,Ut),e1(7,K_)],Fy);class git extends qe{constructor(){super({id:"editor.action.showContextMenu",label:v("action.showContextMenu.label","Show Editor Context Menu"),alias:"Show Editor Context Menu",precondition:void 0,kbOpts:{kbExpr:$.textInputFocus,primary:1092,weight:100}})}run(e,t){var i;(i=Fy.get(t))===null||i===void 0||i.showContextMenu()}}ti(Fy.ID,Fy,2);Ae(git);class O3{constructor(e){this.selections=e}equals(e){const t=this.selections.length,i=e.selections.length;if(t!==i)return!1;for(let s=0;s<t;s++)if(!this.selections[s].equalsSelection(e.selections[s]))return!1;return!0}}class F3{constructor(e,t,i){this.cursorState=e,this.scrollTop=t,this.scrollLeft=i}}class G_ extends pe{static get(e){return e.getContribution(G_.ID)}constructor(e){super(),this._editor=e,this._isCursorUndoRedo=!1,this._undoStack=[],this._redoStack=[],this._register(e.onDidChangeModel(t=>{this._undoStack=[],this._redoStack=[]})),this._register(e.onDidChangeModelContent(t=>{this._undoStack=[],this._redoStack=[]})),this._register(e.onDidChangeCursorSelection(t=>{if(this._isCursorUndoRedo||!t.oldSelections||t.oldModelVersionId!==t.modelVersionId)return;const i=new O3(t.oldSelections);this._undoStack.length>0&&this._undoStack[this._undoStack.length-1].cursorState.equals(i)||(this._undoStack.push(new F3(i,e.getScrollTop(),e.getScrollLeft())),this._redoStack=[],this._undoStack.length>50&&this._undoStack.shift())}))}cursorUndo(){!this._editor.hasModel()||this._undoStack.length===0||(this._redoStack.push(new F3(new O3(this._editor.getSelections()),this._editor.getScrollTop(),this._editor.getScrollLeft())),this._applyState(this._undoStack.pop()))}cursorRedo(){!this._editor.hasModel()||this._redoStack.length===0||(this._undoStack.push(new F3(new O3(this._editor.getSelections()),this._editor.getScrollTop(),this._editor.getScrollLeft())),this._applyState(this._redoStack.pop()))}_applyState(e){this._isCursorUndoRedo=!0,this._editor.setSelections(e.cursorState.selections),this._editor.setScrollPosition({scrollTop:e.scrollTop,scrollLeft:e.scrollLeft}),this._isCursorUndoRedo=!1}}G_.ID="editor.contrib.cursorUndoRedoController";class pit extends qe{constructor(){super({id:"cursorUndo",label:v("cursor.undo","Cursor Undo"),alias:"Cursor Undo",precondition:void 0,kbOpts:{kbExpr:$.textInputFocus,primary:2099,weight:100}})}run(e,t,i){var s;(s=G_.get(t))===null||s===void 0||s.cursorUndo()}}class mit extends qe{constructor(){super({id:"cursorRedo",label:v("cursor.redo","Cursor Redo"),alias:"Cursor Redo",precondition:void 0})}run(e,t,i){var s;(s=G_.get(t))===null||s===void 0||s.cursorRedo()}}ti(G_.ID,G_,0);Ae(pit);Ae(mit);class _it{constructor(e,t,i){this.selection=e,this.targetPosition=t,this.copy=i,this.targetSelection=null}getEditOperations(e,t){const i=e.getValueInRange(this.selection);if(this.copy||t.addEditOperation(this.selection,null),t.addEditOperation(new M(this.targetPosition.lineNumber,this.targetPosition.column,this.targetPosition.lineNumber,this.targetPosition.column),i),this.selection.containsPosition(this.targetPosition)&&!(this.copy&&(this.selection.getEndPosition().equals(this.targetPosition)||this.selection.getStartPosition().equals(this.targetPosition)))){this.targetSelection=this.selection;return}if(this.copy){this.targetSelection=new Ze(this.targetPosition.lineNumber,this.targetPosition.column,this.selection.endLineNumber-this.selection.startLineNumber+this.targetPosition.lineNumber,this.selection.startLineNumber===this.selection.endLineNumber?this.targetPosition.column+this.selection.endColumn-this.selection.startColumn:this.selection.endColumn);return}if(this.targetPosition.lineNumber>this.selection.endLineNumber){this.targetSelection=new Ze(this.targetPosition.lineNumber-this.selection.endLineNumber+this.selection.startLineNumber,this.targetPosition.column,this.targetPosition.lineNumber,this.selection.startLineNumber===this.selection.endLineNumber?this.targetPosition.column+this.selection.endColumn-this.selection.startColumn:this.selection.endColumn);return}if(this.targetPosition.lineNumber<this.selection.endLineNumber){this.targetSelection=new Ze(this.targetPosition.lineNumber,this.targetPosition.column,this.targetPosition.lineNumber+this.selection.endLineNumber-this.selection.startLineNumber,this.selection.startLineNumber===this.selection.endLineNumber?this.targetPosition.column+this.selection.endColumn-this.selection.startColumn:this.selection.endColumn);return}this.selection.endColumn<=this.targetPosition.column?this.targetSelection=new Ze(this.targetPosition.lineNumber-this.selection.endLineNumber+this.selection.startLineNumber,this.selection.startLineNumber===this.selection.endLineNumber?this.targetPosition.column-this.selection.endColumn+this.selection.startColumn:this.targetPosition.column-this.selection.endColumn+this.selection.startColumn,this.targetPosition.lineNumber,this.selection.startLineNumber===this.selection.endLineNumber?this.targetPosition.column:this.selection.endColumn):this.targetSelection=new Ze(this.targetPosition.lineNumber-this.selection.endLineNumber+this.selection.startLineNumber,this.targetPosition.column,this.targetPosition.lineNumber,this.targetPosition.column+this.selection.endColumn-this.selection.startColumn)}computeCursorState(e,t){return this.targetSelection}}function a0(n){return Gt?n.altKey:n.ctrlKey}class Bf extends pe{constructor(e){super(),this._editor=e,this._dndDecorationIds=this._editor.createDecorationsCollection(),this._register(this._editor.onMouseDown(t=>this._onEditorMouseDown(t))),this._register(this._editor.onMouseUp(t=>this._onEditorMouseUp(t))),this._register(this._editor.onMouseDrag(t=>this._onEditorMouseDrag(t))),this._register(this._editor.onMouseDrop(t=>this._onEditorMouseDrop(t))),this._register(this._editor.onMouseDropCanceled(()=>this._onEditorMouseDropCanceled())),this._register(this._editor.onKeyDown(t=>this.onEditorKeyDown(t))),this._register(this._editor.onKeyUp(t=>this.onEditorKeyUp(t))),this._register(this._editor.onDidBlurEditorWidget(()=>this.onEditorBlur())),this._register(this._editor.onDidBlurEditorText(()=>this.onEditorBlur())),this._mouseDown=!1,this._modifierPressed=!1,this._dragSelection=null}onEditorBlur(){this._removeDecoration(),this._dragSelection=null,this._mouseDown=!1,this._modifierPressed=!1}onEditorKeyDown(e){!this._editor.getOption(35)||this._editor.getOption(22)||(a0(e)&&(this._modifierPressed=!0),this._mouseDown&&a0(e)&&this._editor.updateOptions({mouseStyle:"copy"}))}onEditorKeyUp(e){!this._editor.getOption(35)||this._editor.getOption(22)||(a0(e)&&(this._modifierPressed=!1),this._mouseDown&&e.keyCode===Bf.TRIGGER_KEY_VALUE&&this._editor.updateOptions({mouseStyle:"default"}))}_onEditorMouseDown(e){this._mouseDown=!0}_onEditorMouseUp(e){this._mouseDown=!1,this._editor.updateOptions({mouseStyle:"text"})}_onEditorMouseDrag(e){const t=e.target;if(this._dragSelection===null){const s=(this._editor.getSelections()||[]).filter(r=>t.position&&r.containsPosition(t.position));if(s.length===1)this._dragSelection=s[0];else return}a0(e.event)?this._editor.updateOptions({mouseStyle:"copy"}):this._editor.updateOptions({mouseStyle:"default"}),t.position&&(this._dragSelection.containsPosition(t.position)?this._removeDecoration():this.showAt(t.position))}_onEditorMouseDropCanceled(){this._editor.updateOptions({mouseStyle:"text"}),this._removeDecoration(),this._dragSelection=null,this._mouseDown=!1}_onEditorMouseDrop(e){if(e.target&&(this._hitContent(e.target)||this._hitMargin(e.target))&&e.target.position){const t=new he(e.target.position.lineNumber,e.target.position.column);if(this._dragSelection===null){let i=null;if(e.event.shiftKey){const s=this._editor.getSelection();if(s){const{selectionStartLineNumber:r,selectionStartColumn:o}=s;i=[new Ze(r,o,t.lineNumber,t.column)]}}else i=(this._editor.getSelections()||[]).map(s=>s.containsPosition(t)?new Ze(t.lineNumber,t.column,t.lineNumber,t.column):s);this._editor.setSelections(i||[],"mouse",3)}else(!this._dragSelection.containsPosition(t)||(a0(e.event)||this._modifierPressed)&&(this._dragSelection.getEndPosition().equals(t)||this._dragSelection.getStartPosition().equals(t)))&&(this._editor.pushUndoStop(),this._editor.executeCommand(Bf.ID,new _it(this._dragSelection,t,a0(e.event)||this._modifierPressed)),this._editor.pushUndoStop())}this._editor.updateOptions({mouseStyle:"text"}),this._removeDecoration(),this._dragSelection=null,this._mouseDown=!1}showAt(e){this._dndDecorationIds.set([{range:new M(e.lineNumber,e.column,e.lineNumber,e.column),options:Bf._DECORATION_OPTIONS}]),this._editor.revealPosition(e,1)}_removeDecoration(){this._dndDecorationIds.clear()}_hitContent(e){return e.type===6||e.type===7}_hitMargin(e){return e.type===2||e.type===3||e.type===4}dispose(){this._removeDecoration(),this._dragSelection=null,this._mouseDown=!1,this._modifierPressed=!1,super.dispose()}}Bf.ID="editor.contrib.dragAndDrop";Bf.TRIGGER_KEY_VALUE=Gt?6:5;Bf._DECORATION_OPTIONS=yt.register({description:"dnd-target",className:"dnd-target"});ti(Bf.ID,Bf,2);const T2=function(){if(typeof crypto=="object"&&typeof crypto.randomUUID=="function")return crypto.randomUUID.bind(crypto);let n;typeof crypto=="object"&&typeof crypto.getRandomValues=="function"?n=crypto.getRandomValues.bind(crypto):n=function(i){for(let s=0;s<i.length;s++)i[s]=Math.floor(Math.random()*256);return i};const e=new Uint8Array(16),t=[];for(let i=0;i<256;i++)t.push(i.toString(16).padStart(2,"0"));return function(){n(e),e[6]=e[6]&15|64,e[8]=e[8]&63|128;let s=0,r="";return r+=t[e[s++]],r+=t[e[s++]],r+=t[e[s++]],r+=t[e[s++]],r+="-",r+=t[e[s++]],r+=t[e[s++]],r+="-",r+=t[e[s++]],r+=t[e[s++]],r+="-",r+=t[e[s++]],r+=t[e[s++]],r+="-",r+=t[e[s++]],r+=t[e[s++]],r+=t[e[s++]],r+=t[e[s++]],r+=t[e[s++]],r+=t[e[s++]],r}}();function iG(n){return{asString:async()=>n,asFile:()=>{},value:typeof n=="string"?n:void 0}}function vit(n,e,t){const i={id:T2(),name:n,uri:e,data:t};return{asString:async()=>"",asFile:()=>i,value:void 0}}class X_e{constructor(){this._entries=new Map}get size(){let e=0;for(const t of this._entries)e++;return e}has(e){return this._entries.has(this.toKey(e))}matches(e){const t=[...this._entries.keys()];return Vt.some(this,([i,s])=>s.asFile())&&t.push("files"),J_e(XP(e),t)}get(e){var t;return(t=this._entries.get(this.toKey(e)))===null||t===void 0?void 0:t[0]}append(e,t){const i=this._entries.get(e);i?i.push(t):this._entries.set(this.toKey(e),[t])}replace(e,t){this._entries.set(this.toKey(e),[t])}delete(e){this._entries.delete(this.toKey(e))}*[Symbol.iterator](){for(const[e,t]of this._entries)for(const i of t)yield[e,i]}toKey(e){return XP(e)}}function XP(n){return n.toLowerCase()}function Q_e(n,e){return J_e(XP(n),e.map(XP))}function J_e(n,e){if(n==="*/*")return e.length>0;if(e.includes(n))return!0;const t=n.match(/^([a-z]+)\/([a-z]+|\*)$/i);if(!t)return!1;const[i,s,r]=t;return r==="*"?e.some(o=>o.startsWith(s+"/")):!1}const N2=Object.freeze({create:n=>Jp(n.map(e=>e.toString())).join(`\r +`),split:n=>n.split(`\r +`),parse:n=>N2.split(n).filter(e=>!e.startsWith("#"))}),rne={EDITORS:"CodeEditors",FILES:"CodeFiles"};class bit{}const yit={DragAndDropContribution:"workbench.contributions.dragAndDrop"};vn.add(yit.DragAndDropContribution,new bit);class ux{constructor(){}static getInstance(){return ux.INSTANCE}hasData(e){return e&&e===this.proto}getData(e){if(this.hasData(e))return this.data}}ux.INSTANCE=new ux;function eve(n){const e=new X_e;for(const t of n.items){const i=t.type;if(t.kind==="string"){const s=new Promise(r=>t.getAsString(r));e.append(i,iG(s))}else if(t.kind==="file"){const s=t.getAsFile();s&&e.append(i,Cit(s))}}return e}function Cit(n){const e=n.path?it.parse(n.path):void 0;return vit(n.name,e,async()=>new Uint8Array(await n.arrayBuffer()))}const wit=Object.freeze([rne.EDITORS,rne.FILES,GL.RESOURCES,GL.INTERNAL_URI_LIST]);function tve(n,e=!1){const t=eve(n),i=t.get(GL.INTERNAL_URI_LIST);if(i)t.replace(jn.uriList,i);else if(e||!t.has(jn.uriList)){const s=[];for(const r of n.items){const o=r.getAsFile();if(o){const a=o.path;try{a?s.push(it.file(a).toString()):s.push(it.parse(o.name,!0).toString())}catch{}}}s.length&&t.replace(jn.uriList,iG(N2.create(s)))}for(const s of wit)t.delete(s);return t}function Sit(n,e,t){var i,s;return{edits:[...e.map(r=>new Ff(n,typeof t.insertText=="string"?{range:r,text:t.insertText,insertAsSnippet:!1}:{range:r,text:t.insertText.snippet,insertAsSnippet:!0})),...(s=(i=t.additionalEdit)===null||i===void 0?void 0:i.edits)!==null&&s!==void 0?s:[]]}}function ive(n){var e;function t(a,l){return"providerId"in a&&a.providerId===l.providerId||"mimeType"in a&&a.mimeType===l.handledMimeType}const i=new Map;for(const a of n)for(const l of(e=a.yieldTo)!==null&&e!==void 0?e:[])for(const c of n)if(c!==a&&t(l,c)){let u=i.get(a);u||(u=[],i.set(a,u)),u.push(c)}if(!i.size)return Array.from(n);const s=new Set,r=[];function o(a){if(!a.length)return[];const l=a[0];if(r.includes(l))return console.warn(`Yield to cycle detected for ${l.providerId}`),a;if(s.has(l))return o(a.slice(1));let c=[];const u=i.get(l);return u&&(r.push(l),c=o(u),r.pop()),s.add(l),[...c,l,...o(a.slice(1))]}return o(Array.from(n))}var kit=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},Lit=function(n,e){return function(t,i){e(t,i,n)}};const xit=yt.register({description:"inline-progress-widget",stickiness:1,showIfCollapsed:!0,after:{content:lge,inlineClassName:"inline-editor-progress-decoration",inlineClassNameAffectsLetterSpacing:!0}});class A2 extends pe{constructor(e,t,i,s,r){super(),this.typeId=e,this.editor=t,this.range=i,this.delegate=r,this.allowEditorOverflow=!1,this.suppressMouseDown=!0,this.create(s),this.editor.addContentWidget(this),this.editor.layoutContentWidget(this)}create(e){this.domNode=Te(".inline-progress-widget"),this.domNode.role="button",this.domNode.title=e;const t=Te("span.icon");this.domNode.append(t),t.classList.add(...nt.asClassNameArray(Pe.loading),"codicon-modifier-spin");const i=()=>{const s=this.editor.getOption(66);this.domNode.style.height=`${s}px`,this.domNode.style.width=`${Math.ceil(.8*s)}px`};i(),this._register(this.editor.onDidChangeConfiguration(s=>{(s.hasChanged(52)||s.hasChanged(66))&&i()})),this._register(Ce(this.domNode,We.CLICK,s=>{this.delegate.cancel()}))}getId(){return A2.baseId+"."+this.typeId}getDomNode(){return this.domNode}getPosition(){return{position:{lineNumber:this.range.startLineNumber,column:this.range.startColumn},preference:[0]}}dispose(){super.dispose(),this.editor.removeContentWidget(this)}}A2.baseId="editor.widget.inlineProgressWidget";let QP=class extends pe{constructor(e,t,i){super(),this.id=e,this._editor=t,this._instantiationService=i,this._showDelay=500,this._showPromise=this._register(new qs),this._currentWidget=new qs,this._operationIdPool=0,this._currentDecorations=t.createDecorationsCollection()}async showWhile(e,t,i){const s=this._operationIdPool++;this._currentOperation=s,this.clear(),this._showPromise.value=Gp(()=>{const r=M.fromPositions(e);this._currentDecorations.set([{range:r,options:xit}]).length>0&&(this._currentWidget.value=this._instantiationService.createInstance(A2,this.id,this._editor,r,t,i))},this._showDelay);try{return await i}finally{this._currentOperation===s&&(this.clear(),this._currentOperation=void 0)}}clear(){this._showPromise.clear(),this._currentDecorations.clear(),this._currentWidget.clear()}};QP=kit([Lit(2,at)],QP);me.white.toString(),me.white.toString();class JP extends pe{get onDidClick(){return this._onDidClick.event}constructor(e,t){super(),this._label="",this._onDidClick=this._register(new ue),this.options=t,this._element=document.createElement("a"),this._element.classList.add("monaco-button"),this._element.tabIndex=0,this._element.setAttribute("role","button"),this._element.classList.toggle("secondary",!!t.secondary);const i=t.secondary?t.buttonSecondaryBackground:t.buttonBackground,s=t.secondary?t.buttonSecondaryForeground:t.buttonForeground;this._element.style.color=s||"",this._element.style.backgroundColor=i||"",t.supportShortLabel&&(this._labelShortElement=document.createElement("div"),this._labelShortElement.classList.add("monaco-button-label-short"),this._element.appendChild(this._labelShortElement),this._labelElement=document.createElement("div"),this._labelElement.classList.add("monaco-button-label"),this._element.appendChild(this._labelElement),this._element.classList.add("monaco-text-button-with-short-label")),e.appendChild(this._element),this._register(Ri.addTarget(this._element)),[We.CLICK,Oi.Tap].forEach(r=>{this._register(Ce(this._element,r,o=>{if(!this.enabled){Tt.stop(o);return}this._onDidClick.fire(o)}))}),this._register(Ce(this._element,We.KEY_DOWN,r=>{const o=new Ki(r);let a=!1;this.enabled&&(o.equals(3)||o.equals(10))?(this._onDidClick.fire(r),a=!0):o.equals(9)&&(this._element.blur(),a=!0),a&&Tt.stop(o,!0)})),this._register(Ce(this._element,We.MOUSE_OVER,r=>{this._element.classList.contains("disabled")||this.updateBackground(!0)})),this._register(Ce(this._element,We.MOUSE_OUT,r=>{this.updateBackground(!1)})),this.focusTracker=this._register(gd(this._element)),this._register(this.focusTracker.onDidFocus(()=>{this.enabled&&this.updateBackground(!0)})),this._register(this.focusTracker.onDidBlur(()=>{this.enabled&&this.updateBackground(!1)}))}dispose(){super.dispose(),this._element.remove()}getContentElements(e){const t=[];for(let i of Lp(e))if(typeof i=="string"){if(i=i.trim(),i==="")continue;const s=document.createElement("span");s.textContent=i,t.push(s)}else t.push(i);return t}updateBackground(e){let t;this.options.secondary?t=e?this.options.buttonSecondaryHoverBackground:this.options.buttonSecondaryBackground:t=e?this.options.buttonHoverBackground:this.options.buttonBackground,t&&(this._element.style.backgroundColor=t)}get element(){return this._element}set label(e){var t;if(this._label===e||kp(this._label)&&kp(e)&&xGe(this._label,e))return;this._element.classList.add("monaco-text-button");const i=this.options.supportShortLabel?this._labelElement:this._element;if(kp(e)){const s=i2(e,{inline:!0});s.dispose();const r=(t=s.element.querySelector("p"))===null||t===void 0?void 0:t.innerHTML;if(r){const o=Qfe(r,{ADD_TAGS:["b","i","u","code","span"],ALLOWED_ATTR:["class"],RETURN_TRUSTED_TYPE:!0});i.innerHTML=o}else mr(i)}else this.options.supportIcons?mr(i,...this.getContentElements(e)):i.textContent=e;typeof this.options.title=="string"?this._element.title=this.options.title:this.options.title&&(this._element.title=HGe(e)),this._label=e}get label(){return this._label}set icon(e){this._element.classList.add(...nt.asClassNameArray(e))}set enabled(e){e?(this._element.classList.remove("disabled"),this._element.setAttribute("aria-disabled",String(!1)),this._element.tabIndex=0):(this._element.classList.add("disabled"),this._element.setAttribute("aria-disabled",String(!0)))}get enabled(){return!this._element.classList.contains("disabled")}}var nve=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},mk=function(n,e){return function(t,i){e(t,i,n)}},QW;let eR=QW=class extends pe{constructor(e,t,i,s,r,o,a,l,c,u){super(),this.typeId=e,this.editor=t,this.showCommand=s,this.range=r,this.edits=o,this.onSelectNewEdit=a,this._contextMenuService=l,this._keybindingService=u,this.allowEditorOverflow=!0,this.suppressMouseDown=!0,this.create(),this.visibleContext=i.bindTo(c),this.visibleContext.set(!0),this._register(st(()=>this.visibleContext.reset())),this.editor.addContentWidget(this),this.editor.layoutContentWidget(this),this._register(st(()=>this.editor.removeContentWidget(this))),this._register(this.editor.onDidChangeCursorPosition(h=>{r.containsPosition(h.position)||this.dispose()})),this._register(Ve.runAndSubscribe(u.onDidUpdateKeybindings,()=>{this._updateButtonTitle()}))}_updateButtonTitle(){var e;const t=(e=this._keybindingService.lookupKeybinding(this.showCommand.id))===null||e===void 0?void 0:e.getLabel();this.button.element.title=this.showCommand.label+(t?` (${t})`:"")}create(){this.domNode=Te(".post-edit-widget"),this.button=this._register(new JP(this.domNode,{supportIcons:!0})),this.button.label="$(insert)",this._register(Ce(this.domNode,We.CLICK,()=>this.showSelector()))}getId(){return QW.baseId+"."+this.typeId}getDomNode(){return this.domNode}getPosition(){return{position:this.range.getEndPosition(),preference:[2]}}showSelector(){this._contextMenuService.showContextMenu({getAnchor:()=>{const e=ys(this.button.element);return{x:e.left+e.width,y:e.top+e.height}},getActions:()=>this.edits.allEdits.map((e,t)=>pb({id:"",label:e.label,checked:t===this.edits.activeEditIndex,run:()=>{if(t!==this.edits.activeEditIndex)return this.onSelectNewEdit(t)}}))})}};eR.baseId="editor.widget.postEditWidget";eR=QW=nve([mk(7,zl),mk(8,ft),mk(9,Di)],eR);let tR=class extends pe{constructor(e,t,i,s,r,o){super(),this._id=e,this._editor=t,this._visibleContext=i,this._showCommand=s,this._instantiationService=r,this._bulkEditService=o,this._currentWidget=this._register(new qs),this._register(Ve.any(t.onDidChangeModel,t.onDidChangeModelContent)(()=>this.clear()))}async applyEditAndShowIfNeeded(e,t,i,s){var r,o;const a=this._editor.getModel();if(!a||!e.length)return;const l=t.allEdits[t.activeEditIndex];if(!l)return;let c=[];(typeof l.insertText=="string"?l.insertText==="":l.insertText.snippet==="")?c=[]:c=e.map(m=>new Ff(a.uri,typeof l.insertText=="string"?{range:m,text:l.insertText,insertAsSnippet:!1}:{range:m,text:l.insertText.snippet,insertAsSnippet:!0}));const h={edits:[...c,...(o=(r=l.additionalEdit)===null||r===void 0?void 0:r.edits)!==null&&o!==void 0?o:[]]},d=e[0],f=a.deltaDecorations([],[{range:d,options:{description:"paste-line-suffix",stickiness:0}}]);let g,p;try{g=await this._bulkEditService.apply(h,{editor:this._editor,token:s}),p=a.getDecorationRange(f[0])}finally{a.deltaDecorations(f,[])}i&&g.isApplied&&t.allEdits.length>1&&this.show(p??d,t,async m=>{const _=this._editor.getModel();_&&(await _.undo(),this.applyEditAndShowIfNeeded(e,{activeEditIndex:m,allEdits:t.allEdits},i,s))})}show(e,t,i){this.clear(),this._editor.hasModel()&&(this._currentWidget.value=this._instantiationService.createInstance(eR,this._id,this._editor,this._visibleContext,this._showCommand,e,t,i))}clear(){this._currentWidget.clear()}tryShowSelector(){var e;(e=this._currentWidget.value)===null||e===void 0||e.showSelector()}};tR=nve([mk(4,at),mk(5,FE)],tR);var Eit=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},l0=function(n,e){return function(t,i){e(t,i,n)}},JW;const sve="editor.changePasteType",rve=new ze("pasteWidgetVisible",!1,v("pasteWidgetVisible","Whether the paste widget is showing")),B3="application/vnd.code.copyMetadata";let Y_=JW=class extends pe{static get(e){return e.getContribution(JW.ID)}constructor(e,t,i,s,r,o,a){super(),this._bulkEditService=i,this._clipboardService=s,this._languageFeaturesService=r,this._quickInputService=o,this._progressService=a,this._editor=e;const l=e.getContainerDomNode();this._register(Ce(l,"copy",c=>this.handleCopy(c))),this._register(Ce(l,"cut",c=>this.handleCopy(c))),this._register(Ce(l,"paste",c=>this.handlePaste(c),!0)),this._pasteProgressManager=this._register(new QP("pasteIntoEditor",e,t)),this._postPasteWidgetManager=this._register(t.createInstance(tR,"pasteIntoEditor",e,rve,{id:sve,label:v("postPasteWidgetTitle","Show paste options...")}))}changePasteType(){this._postPasteWidgetManager.tryShowSelector()}pasteAs(e){this._editor.focus();try{this._pasteAsActionContext={preferredId:e},LC().execCommand("paste")}finally{this._pasteAsActionContext=void 0}}isPasteAsEnabled(){return this._editor.getOption(84).enabled&&!this._editor.getOption(90)}handleCopy(e){var t,i;if(!this._editor.hasTextFocus()||(Dm&&this._clipboardService.writeResources([]),!e.clipboardData||!this.isPasteAsEnabled()))return;const s=this._editor.getModel(),r=this._editor.getSelections();if(!s||!(r!=null&&r.length))return;const o=this._editor.getOption(37);let a=r;const l=r.length===1&&r[0].isEmpty();if(l){if(!o)return;a=[new M(a[0].startLineNumber,1,a[0].startLineNumber,1+s.getLineLength(a[0].startLineNumber))]}const c=(t=this._editor._getViewModel())===null||t===void 0?void 0:t.getPlainTextToCopy(r,o,yr),h={multicursorText:Array.isArray(c)?c:null,pasteOnNewLine:l,mode:null},d=this._languageFeaturesService.documentPasteEditProvider.ordered(s).filter(_=>!!_.prepareDocumentPaste);if(!d.length){this.setCopyMetadata(e.clipboardData,{defaultPastePayload:h});return}const f=eve(e.clipboardData),g=d.flatMap(_=>{var b;return(b=_.copyMimeTypes)!==null&&b!==void 0?b:[]}),p=T2();this.setCopyMetadata(e.clipboardData,{id:p,providerCopyMimeTypes:g,defaultPastePayload:h});const m=Ns(async _=>{const b=Tu(await Promise.all(d.map(async y=>{try{return await y.prepareDocumentPaste(s,a,f,_)}catch(w){console.error(w);return}})));b.reverse();for(const y of b)for(const[w,S]of y)f.replace(w,S);return f});(i=this._currentCopyOperation)===null||i===void 0||i.dataTransferPromise.cancel(),this._currentCopyOperation={handle:p,dataTransferPromise:m}}async handlePaste(e){var t,i;if(!e.clipboardData||!this._editor.hasTextFocus())return;(t=this._currentPasteOperation)===null||t===void 0||t.cancel(),this._currentPasteOperation=void 0;const s=this._editor.getModel(),r=this._editor.getSelections();if(!(r!=null&&r.length)||!s||!this.isPasteAsEnabled())return;const o=this.fetchCopyMetadata(e),a=tve(e.clipboardData);a.delete(B3);const l=[...e.clipboardData.types,...(i=o==null?void 0:o.providerCopyMimeTypes)!==null&&i!==void 0?i:[],jn.uriList],c=this._languageFeaturesService.documentPasteEditProvider.ordered(s).filter(u=>{var h;return(h=u.pasteMimeTypes)===null||h===void 0?void 0:h.some(d=>Q_e(d,l))});c.length&&(e.preventDefault(),e.stopImmediatePropagation(),this._pasteAsActionContext?this.showPasteAsPick(this._pasteAsActionContext.preferredId,c,r,a,o):this.doPasteInline(c,r,a,o))}doPasteInline(e,t,i,s){const r=Ns(async o=>{const a=this._editor;if(!a.hasModel())return;const l=a.getModel(),c=new lm(a,3,void 0,o);try{if(await this.mergeInDataFromCopy(i,s,c.token),c.token.isCancellationRequested)return;const u=e.filter(d=>one(d,i));if(!u.length||u.length===1&&u[0].id==="text"){await this.applyDefaultPasteHandler(i,s,c.token);return}const h=await this.getPasteEdits(u,i,l,t,c.token);if(c.token.isCancellationRequested)return;if(h.length===1&&h[0].providerId==="text"){await this.applyDefaultPasteHandler(i,s,c.token);return}if(h.length){const d=a.getOption(84).showPasteSelector==="afterPaste";return this._postPasteWidgetManager.applyEditAndShowIfNeeded(t,{activeEditIndex:0,allEdits:h},d,c.token)}await this.applyDefaultPasteHandler(i,s,c.token)}finally{c.dispose(),this._currentPasteOperation===r&&(this._currentPasteOperation=void 0)}});this._pasteProgressManager.showWhile(t[0].getEndPosition(),v("pasteIntoEditorProgress","Running paste handlers. Click to cancel"),r),this._currentPasteOperation=r}showPasteAsPick(e,t,i,s,r){const o=Ns(async a=>{const l=this._editor;if(!l.hasModel())return;const c=l.getModel(),u=new lm(l,3,void 0,a);try{if(await this.mergeInDataFromCopy(s,r,u.token),u.token.isCancellationRequested)return;let h=t.filter(p=>one(p,s));e&&(h=h.filter(p=>p.id===e));const d=await this.getPasteEdits(h,s,c,i,u.token);if(u.token.isCancellationRequested||!d.length)return;let f;if(e)f=d.at(0);else{const p=await this._quickInputService.pick(d.map(m=>({label:m.label,description:m.providerId,detail:m.detail,edit:m})),{placeHolder:v("pasteAsPickerPlaceholder","Select Paste Action")});f=p==null?void 0:p.edit}if(!f)return;const g=Sit(c.uri,i,f);await this._bulkEditService.apply(g,{editor:this._editor})}finally{u.dispose(),this._currentPasteOperation===o&&(this._currentPasteOperation=void 0)}});this._progressService.withProgress({location:10,title:v("pasteAsProgress","Running paste handlers")},()=>o)}setCopyMetadata(e,t){e.setData(B3,JSON.stringify(t))}fetchCopyMetadata(e){var t;if(!e.clipboardData)return;const i=e.clipboardData.getData(B3);if(i)try{return JSON.parse(i)}catch{return}const[s,r]=C9.getTextData(e.clipboardData);if(r)return{defaultPastePayload:{mode:r.mode,multicursorText:(t=r.multicursorText)!==null&&t!==void 0?t:null,pasteOnNewLine:!!r.isFromEmptySelection}}}async mergeInDataFromCopy(e,t,i){var s;if(t!=null&&t.id&&((s=this._currentCopyOperation)===null||s===void 0?void 0:s.handle)===t.id){const r=await this._currentCopyOperation.dataTransferPromise;if(i.isCancellationRequested)return;for(const[o,a]of r)e.replace(o,a)}if(!e.has(jn.uriList)){const r=await this._clipboardService.readResources();if(i.isCancellationRequested)return;r.length&&e.append(jn.uriList,iG(N2.create(r)))}}async getPasteEdits(e,t,i,s,r){const o=await lO(Promise.all(e.map(async l=>{var c;try{const u=await((c=l.provideDocumentPasteEdits)===null||c===void 0?void 0:c.call(l,i,s,t,r));if(u)return{...u,providerId:l.id}}catch(u){console.error(u)}})),r),a=Tu(o??[]);return ive(a)}async applyDefaultPasteHandler(e,t,i){var s,r,o;const a=(s=e.get(jn.text))!==null&&s!==void 0?s:e.get("text");if(!a)return;const l=await a.asString();if(i.isCancellationRequested)return;const c={text:l,pasteOnNewLine:(r=t==null?void 0:t.defaultPastePayload.pasteOnNewLine)!==null&&r!==void 0?r:!1,multicursorText:(o=t==null?void 0:t.defaultPastePayload.multicursorText)!==null&&o!==void 0?o:null,mode:null};this._editor.trigger("keyboard","paste",c)}};Y_.ID="editor.contrib.copyPasteActionController";Y_=JW=Eit([l0(1,at),l0(2,FE),l0(3,ag),l0(4,Ge),l0(5,Uu),l0(6,d1e)],Y_);function one(n,e){var t;return!!(!((t=n.pasteMimeTypes)===null||t===void 0)&&t.some(i=>e.matches(i)))}var nG=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},hx=function(n,e){return function(t,i){e(t,i,n)}};const sG=v("builtIn","Built-in");class rG{async provideDocumentPasteEdits(e,t,i,s){const r=await this.getEdit(i,s);return r?{insertText:r.insertText,label:r.label,detail:r.detail,handledMimeType:r.handledMimeType,yieldTo:r.yieldTo}:void 0}async provideDocumentOnDropEdits(e,t,i,s){const r=await this.getEdit(i,s);return r?{insertText:r.insertText,label:r.label,handledMimeType:r.handledMimeType,yieldTo:r.yieldTo}:void 0}}class ove extends rG{constructor(){super(...arguments),this.id="text",this.dropMimeTypes=[jn.text],this.pasteMimeTypes=[jn.text]}async getEdit(e,t){const i=e.get(jn.text);if(!i||e.has(jn.uriList))return;const s=await i.asString();return{handledMimeType:jn.text,label:v("text.label","Insert Plain Text"),detail:sG,insertText:s}}}class ave extends rG{constructor(){super(...arguments),this.id="uri",this.dropMimeTypes=[jn.uriList],this.pasteMimeTypes=[jn.uriList]}async getEdit(e,t){const i=await lve(e);if(!i.length||t.isCancellationRequested)return;let s=0;const r=i.map(({uri:a,originalText:l})=>a.scheme===wt.file?a.fsPath:(s++,l)).join(" ");let o;return s>0?o=i.length>1?v("defaultDropProvider.uriList.uris","Insert Uris"):v("defaultDropProvider.uriList.uri","Insert Uri"):o=i.length>1?v("defaultDropProvider.uriList.paths","Insert Paths"):v("defaultDropProvider.uriList.path","Insert Path"),{handledMimeType:jn.uriList,insertText:r,label:o,detail:sG}}}let iR=class extends rG{constructor(e){super(),this._workspaceContextService=e,this.id="relativePath",this.dropMimeTypes=[jn.uriList],this.pasteMimeTypes=[jn.uriList]}async getEdit(e,t){const i=await lve(e);if(!i.length||t.isCancellationRequested)return;const s=Tu(i.map(({uri:r})=>{const o=this._workspaceContextService.getWorkspaceFolder(r);return o?Lje(o.uri,r):void 0}));if(s.length)return{handledMimeType:jn.uriList,insertText:s.join(" "),label:i.length>1?v("defaultDropProvider.uriList.relativePaths","Insert Relative Paths"):v("defaultDropProvider.uriList.relativePath","Insert Relative Path"),detail:sG}}};iR=nG([hx(0,K_)],iR);async function lve(n){const e=n.get(jn.uriList);if(!e)return[];const t=await e.asString(),i=[];for(const s of N2.parse(t))try{i.push({uri:it.parse(s),originalText:s})}catch{}return i}let eV=class extends pe{constructor(e,t){super(),this._register(e.documentOnDropEditProvider.register("*",new ove)),this._register(e.documentOnDropEditProvider.register("*",new ave)),this._register(e.documentOnDropEditProvider.register("*",new iR(t)))}};eV=nG([hx(0,Ge),hx(1,K_)],eV);let tV=class extends pe{constructor(e,t){super(),this._register(e.documentPasteEditProvider.register("*",new ove)),this._register(e.documentPasteEditProvider.register("*",new ave)),this._register(e.documentPasteEditProvider.register("*",new iR(t)))}};tV=nG([hx(0,Ge),hx(1,K_)],tV);ti(Y_.ID,Y_,0);d2(tV);Be(new class extends Ks{constructor(){super({id:sve,precondition:rve,kbOpts:{weight:100,primary:2137}})}runEditorCommand(n,e,t){var i;return(i=Y_.get(e))===null||i===void 0?void 0:i.changePasteType()}});Ae(class extends qe{constructor(){super({id:"editor.action.pasteAs",label:v("pasteAs","Paste As..."),alias:"Paste As...",precondition:void 0,metadata:{description:"Paste as",args:[{name:"args",schema:{type:"object",properties:{id:{type:"string",description:v("pasteAs.id","The id of the paste edit to try applying. If not provided, the editor will show a picker.")}}}}]}})}run(n,e,t){var i;const s=typeof(t==null?void 0:t.id)=="string"?t.id:void 0;return(i=Y_.get(e))===null||i===void 0?void 0:i.pasteAs(s)}});class Dit{constructor(){this._dragOperations=new Map}removeDragOperationTransfer(e){if(e&&this._dragOperations.has(e)){const t=this._dragOperations.get(e);return this._dragOperations.delete(e),t}}}class ane{constructor(e){this.identifier=e}}const cve=Bt("treeViewsDndService");jt(cve,Dit,1);var Iit=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},BI=function(n,e){return function(t,i){e(t,i,n)}},iV;const uve="editor.experimental.dropIntoEditor.defaultProvider",hve="editor.changeDropType",dve=new ze("dropWidgetVisible",!1,v("dropWidgetVisible","Whether the drop widget is showing"));let By=iV=class extends pe{static get(e){return e.getContribution(iV.ID)}constructor(e,t,i,s,r){super(),this._configService=i,this._languageFeaturesService=s,this._treeViewsDragAndDropService=r,this.treeItemsTransfer=ux.getInstance(),this._dropProgressManager=this._register(t.createInstance(QP,"dropIntoEditor",e)),this._postDropWidgetManager=this._register(t.createInstance(tR,"dropIntoEditor",e,dve,{id:hve,label:v("postDropWidgetTitle","Show drop options...")})),this._register(e.onDropIntoEditor(o=>this.onDropIntoEditor(e,o.position,o.event)))}changeDropType(){this._postDropWidgetManager.tryShowSelector()}async onDropIntoEditor(e,t,i){var s;if(!i.dataTransfer||!e.hasModel())return;(s=this._currentOperation)===null||s===void 0||s.cancel(),e.focus(),e.setPosition(t);const r=Ns(async o=>{const a=new lm(e,1,void 0,o);try{const l=await this.extractDataTransferData(i);if(l.size===0||a.token.isCancellationRequested)return;const c=e.getModel();if(!c)return;const u=this._languageFeaturesService.documentOnDropEditProvider.ordered(c).filter(d=>d.dropMimeTypes?d.dropMimeTypes.some(f=>l.matches(f)):!0),h=await this.getDropEdits(u,c,t,l,a);if(a.token.isCancellationRequested)return;if(h.length){const d=this.getInitialActiveEditIndex(c,h),f=e.getOption(36).showDropSelector==="afterDrop";await this._postDropWidgetManager.applyEditAndShowIfNeeded([M.fromPositions(t)],{activeEditIndex:d,allEdits:h},f,o)}}finally{a.dispose(),this._currentOperation===r&&(this._currentOperation=void 0)}});this._dropProgressManager.showWhile(t,v("dropIntoEditorProgress","Running drop handlers. Click to cancel"),r),this._currentOperation=r}async getDropEdits(e,t,i,s,r){const o=await lO(Promise.all(e.map(async l=>{try{const c=await l.provideDocumentOnDropEdits(t,i,s,r.token);if(c)return{...c,providerId:l.id}}catch(c){console.error(c)}})),r.token),a=Tu(o??[]);return ive(a)}getInitialActiveEditIndex(e,t){const i=this._configService.getValue(uve,{resource:e.uri});for(const[s,r]of Object.entries(i)){const o=t.findIndex(a=>r===a.providerId&&a.handledMimeType&&Q_e(s,[a.handledMimeType]));if(o>=0)return o}return 0}async extractDataTransferData(e){if(!e.dataTransfer)return new X_e;const t=tve(e.dataTransfer);if(this.treeItemsTransfer.hasData(ane.prototype)){const i=this.treeItemsTransfer.getData(ane.prototype);if(Array.isArray(i))for(const s of i){const r=await this._treeViewsDragAndDropService.removeDragOperationTransfer(s.identifier);if(r)for(const[o,a]of r)t.replace(o,a)}}return t}};By.ID="editor.contrib.dropIntoEditorController";By=iV=Iit([BI(1,at),BI(2,Ut),BI(3,Ge),BI(4,cve)],By);ti(By.ID,By,2);Be(new class extends Ks{constructor(){super({id:hve,precondition:dve,kbOpts:{weight:100,primary:2137}})}runEditorCommand(n,e,t){var i;(i=By.get(e))===null||i===void 0||i.changeDropType()}});d2(eV);vn.as($u.Configuration).registerConfiguration({...a2,properties:{[uve]:{type:"object",scope:5,description:v("defaultProviderDescription","Configures the default drop provider to use for content of a given mime type."),default:{},additionalProperties:{type:"string"}}}});class Br{constructor(e){this._editor=e,this._decorations=[],this._overviewRulerApproximateDecorations=[],this._findScopeDecorationIds=[],this._rangeHighlightDecorationId=null,this._highlightedDecorationId=null,this._startPosition=this._editor.getPosition()}dispose(){this._editor.removeDecorations(this._allDecorations()),this._decorations=[],this._overviewRulerApproximateDecorations=[],this._findScopeDecorationIds=[],this._rangeHighlightDecorationId=null,this._highlightedDecorationId=null}reset(){this._decorations=[],this._overviewRulerApproximateDecorations=[],this._findScopeDecorationIds=[],this._rangeHighlightDecorationId=null,this._highlightedDecorationId=null}getCount(){return this._decorations.length}getFindScope(){return this._findScopeDecorationIds[0]?this._editor.getModel().getDecorationRange(this._findScopeDecorationIds[0]):null}getFindScopes(){if(this._findScopeDecorationIds.length){const e=this._findScopeDecorationIds.map(t=>this._editor.getModel().getDecorationRange(t)).filter(t=>!!t);if(e.length)return e}return null}getStartPosition(){return this._startPosition}setStartPosition(e){this._startPosition=e,this.setCurrentFindMatch(null)}_getDecorationIndex(e){const t=this._decorations.indexOf(e);return t>=0?t+1:1}getDecorationRangeAt(e){const t=e<this._decorations.length?this._decorations[e]:null;return t?this._editor.getModel().getDecorationRange(t):null}getCurrentMatchesPosition(e){const t=this._editor.getModel().getDecorationsInRange(e);for(const i of t){const s=i.options;if(s===Br._FIND_MATCH_DECORATION||s===Br._CURRENT_FIND_MATCH_DECORATION)return this._getDecorationIndex(i.id)}return 0}setCurrentFindMatch(e){let t=null,i=0;if(e)for(let s=0,r=this._decorations.length;s<r;s++){const o=this._editor.getModel().getDecorationRange(this._decorations[s]);if(e.equalsRange(o)){t=this._decorations[s],i=s+1;break}}return(this._highlightedDecorationId!==null||t!==null)&&this._editor.changeDecorations(s=>{if(this._highlightedDecorationId!==null&&(s.changeDecorationOptions(this._highlightedDecorationId,Br._FIND_MATCH_DECORATION),this._highlightedDecorationId=null),t!==null&&(this._highlightedDecorationId=t,s.changeDecorationOptions(this._highlightedDecorationId,Br._CURRENT_FIND_MATCH_DECORATION)),this._rangeHighlightDecorationId!==null&&(s.removeDecoration(this._rangeHighlightDecorationId),this._rangeHighlightDecorationId=null),t!==null){let r=this._editor.getModel().getDecorationRange(t);if(r.startLineNumber!==r.endLineNumber&&r.endColumn===1){const o=r.endLineNumber-1,a=this._editor.getModel().getLineMaxColumn(o);r=new M(r.startLineNumber,r.startColumn,o,a)}this._rangeHighlightDecorationId=s.addDecoration(r,Br._RANGE_HIGHLIGHT_DECORATION)}}),i}set(e,t){this._editor.changeDecorations(i=>{let s=Br._FIND_MATCH_DECORATION;const r=[];if(e.length>1e3){s=Br._FIND_MATCH_NO_OVERVIEW_DECORATION;const a=this._editor.getModel().getLineCount(),c=this._editor.getLayoutInfo().height/a,u=Math.max(2,Math.ceil(3/c));let h=e[0].range.startLineNumber,d=e[0].range.endLineNumber;for(let f=1,g=e.length;f<g;f++){const p=e[f].range;d+u>=p.startLineNumber?p.endLineNumber>d&&(d=p.endLineNumber):(r.push({range:new M(h,1,d,1),options:Br._FIND_MATCH_ONLY_OVERVIEW_DECORATION}),h=p.startLineNumber,d=p.endLineNumber)}r.push({range:new M(h,1,d,1),options:Br._FIND_MATCH_ONLY_OVERVIEW_DECORATION})}const o=new Array(e.length);for(let a=0,l=e.length;a<l;a++)o[a]={range:e[a].range,options:s};this._decorations=i.deltaDecorations(this._decorations,o),this._overviewRulerApproximateDecorations=i.deltaDecorations(this._overviewRulerApproximateDecorations,r),this._rangeHighlightDecorationId&&(i.removeDecoration(this._rangeHighlightDecorationId),this._rangeHighlightDecorationId=null),this._findScopeDecorationIds.length&&(this._findScopeDecorationIds.forEach(a=>i.removeDecoration(a)),this._findScopeDecorationIds=[]),t!=null&&t.length&&(this._findScopeDecorationIds=t.map(a=>i.addDecoration(a,Br._FIND_SCOPE_DECORATION)))})}matchBeforePosition(e){if(this._decorations.length===0)return null;for(let t=this._decorations.length-1;t>=0;t--){const i=this._decorations[t],s=this._editor.getModel().getDecorationRange(i);if(!(!s||s.endLineNumber>e.lineNumber)){if(s.endLineNumber<e.lineNumber)return s;if(!(s.endColumn>e.column))return s}}return this._editor.getModel().getDecorationRange(this._decorations[this._decorations.length-1])}matchAfterPosition(e){if(this._decorations.length===0)return null;for(let t=0,i=this._decorations.length;t<i;t++){const s=this._decorations[t],r=this._editor.getModel().getDecorationRange(s);if(!(!r||r.startLineNumber<e.lineNumber)){if(r.startLineNumber>e.lineNumber)return r;if(!(r.startColumn<e.column))return r}}return this._editor.getModel().getDecorationRange(this._decorations[0])}_allDecorations(){let e=[];return e=e.concat(this._decorations),e=e.concat(this._overviewRulerApproximateDecorations),this._findScopeDecorationIds.length&&e.push(...this._findScopeDecorationIds),this._rangeHighlightDecorationId&&e.push(this._rangeHighlightDecorationId),e}}Br._CURRENT_FIND_MATCH_DECORATION=yt.register({description:"current-find-match",stickiness:1,zIndex:13,className:"currentFindMatch",showIfCollapsed:!0,overviewRuler:{color:Sn(fq),position:el.Center},minimap:{color:Sn(U0),position:sa.Inline}});Br._FIND_MATCH_DECORATION=yt.register({description:"find-match",stickiness:1,zIndex:10,className:"findMatch",showIfCollapsed:!0,overviewRuler:{color:Sn(fq),position:el.Center},minimap:{color:Sn(U0),position:sa.Inline}});Br._FIND_MATCH_NO_OVERVIEW_DECORATION=yt.register({description:"find-match-no-overview",stickiness:1,className:"findMatch",showIfCollapsed:!0});Br._FIND_MATCH_ONLY_OVERVIEW_DECORATION=yt.register({description:"find-match-only-overview",stickiness:1,overviewRuler:{color:Sn(fq),position:el.Center}});Br._RANGE_HIGHLIGHT_DECORATION=yt.register({description:"find-range-highlight",stickiness:1,className:"rangeHighlight",isWholeLine:!0});Br._FIND_SCOPE_DECORATION=yt.register({description:"find-scope",className:"findScope",isWholeLine:!0});class Tit{constructor(e,t,i){this._editorSelection=e,this._ranges=t,this._replaceStrings=i,this._trackedEditorSelectionId=null}getEditOperations(e,t){if(this._ranges.length>0){const i=[];for(let o=0;o<this._ranges.length;o++)i.push({range:this._ranges[o],text:this._replaceStrings[o]});i.sort((o,a)=>M.compareRangesUsingStarts(o.range,a.range));const s=[];let r=i[0];for(let o=1;o<i.length;o++)r.range.endLineNumber===i[o].range.startLineNumber&&r.range.endColumn===i[o].range.startColumn?(r.range=r.range.plusRange(i[o].range),r.text=r.text+i[o].text):(s.push(r),r=i[o]);s.push(r);for(const o of s)t.addEditOperation(o.range,o.text)}this._trackedEditorSelectionId=t.trackSelection(this._editorSelection)}computeCursorState(e,t){return t.getTrackedSelection(this._trackedEditorSelectionId)}}function fve(n,e){if(n&&n[0]!==""){const t=lne(n,e,"-"),i=lne(n,e,"_");return t&&!i?cne(n,e,"-"):!t&&i?cne(n,e,"_"):n[0].toUpperCase()===n[0]?e.toUpperCase():n[0].toLowerCase()===n[0]?e.toLowerCase():T8e(n[0][0])&&e.length>0?e[0].toUpperCase()+e.substr(1):n[0][0].toUpperCase()!==n[0][0]&&e.length>0?e[0].toLowerCase()+e.substr(1):e}else return e}function lne(n,e,t){return n[0].indexOf(t)!==-1&&e.indexOf(t)!==-1&&n[0].split(t).length===e.split(t).length}function cne(n,e,t){const i=e.split(t),s=n[0].split(t);let r="";return i.forEach((o,a)=>{r+=fve([s[a]],o)+t}),r.slice(0,-1)}class une{constructor(e){this.staticValue=e,this.kind=0}}class Nit{constructor(e){this.pieces=e,this.kind=1}}class Wy{static fromStaticValue(e){return new Wy([d_.staticValue(e)])}get hasReplacementPatterns(){return this._state.kind===1}constructor(e){!e||e.length===0?this._state=new une(""):e.length===1&&e[0].staticValue!==null?this._state=new une(e[0].staticValue):this._state=new Nit(e)}buildReplaceString(e,t){if(this._state.kind===0)return t?fve(e,this._state.staticValue):this._state.staticValue;let i="";for(let s=0,r=this._state.pieces.length;s<r;s++){const o=this._state.pieces[s];if(o.staticValue!==null){i+=o.staticValue;continue}let a=Wy._substitute(o.matchIndex,e);if(o.caseOps!==null&&o.caseOps.length>0){const l=[],c=o.caseOps.length;let u=0;for(let h=0,d=a.length;h<d;h++){if(u>=c){l.push(a.slice(h));break}switch(o.caseOps[u]){case"U":l.push(a[h].toUpperCase());break;case"u":l.push(a[h].toUpperCase()),u++;break;case"L":l.push(a[h].toLowerCase());break;case"l":l.push(a[h].toLowerCase()),u++;break;default:l.push(a[h])}}a=l.join("")}i+=a}return i}static _substitute(e,t){if(t===null)return"";if(e===0)return t[0];let i="";for(;e>0;){if(e<t.length)return(t[e]||"")+i;i=String(e%10)+i,e=Math.floor(e/10)}return"$"+i}}class d_{static staticValue(e){return new d_(e,-1,null)}static caseOps(e,t){return new d_(null,e,t)}constructor(e,t,i){this.staticValue=e,this.matchIndex=t,!i||i.length===0?this.caseOps=null:this.caseOps=i.slice(0)}}class Ait{constructor(e){this._source=e,this._lastCharIndex=0,this._result=[],this._resultLen=0,this._currentStaticPiece=""}emitUnchanged(e){this._emitStatic(this._source.substring(this._lastCharIndex,e)),this._lastCharIndex=e}emitStatic(e,t){this._emitStatic(e),this._lastCharIndex=t}_emitStatic(e){e.length!==0&&(this._currentStaticPiece+=e)}emitMatchIndex(e,t,i){this._currentStaticPiece.length!==0&&(this._result[this._resultLen++]=d_.staticValue(this._currentStaticPiece),this._currentStaticPiece=""),this._result[this._resultLen++]=d_.caseOps(e,i),this._lastCharIndex=t}finalize(){return this.emitUnchanged(this._source.length),this._currentStaticPiece.length!==0&&(this._result[this._resultLen++]=d_.staticValue(this._currentStaticPiece),this._currentStaticPiece=""),new Wy(this._result)}}function Pit(n){if(!n||n.length===0)return new Wy(null);const e=[],t=new Ait(n);for(let i=0,s=n.length;i<s;i++){const r=n.charCodeAt(i);if(r===92){if(i++,i>=s)break;const o=n.charCodeAt(i);switch(o){case 92:t.emitUnchanged(i-1),t.emitStatic("\\",i+1);break;case 110:t.emitUnchanged(i-1),t.emitStatic(` +`,i+1);break;case 116:t.emitUnchanged(i-1),t.emitStatic(" ",i+1);break;case 117:case 85:case 108:case 76:t.emitUnchanged(i-1),t.emitStatic("",i+1),e.push(String.fromCharCode(o));break}continue}if(r===36){if(i++,i>=s)break;const o=n.charCodeAt(i);if(o===36){t.emitUnchanged(i-1),t.emitStatic("$",i+1);continue}if(o===48||o===38){t.emitUnchanged(i-1),t.emitMatchIndex(0,i+1,e),e.length=0;continue}if(49<=o&&o<=57){let a=o-48;if(i+1<s){const l=n.charCodeAt(i+1);if(48<=l&&l<=57){i++,a=a*10+(l-48),t.emitUnchanged(i-2),t.emitMatchIndex(a,i+1,e),e.length=0;continue}}t.emitUnchanged(i-1),t.emitMatchIndex(a,i+1,e),e.length=0;continue}}}return t.finalize()}const ug=new ze("findWidgetVisible",!1);ug.toNegated();const P2=new ze("findInputFocussed",!1),oG=new ze("replaceInputFocussed",!1),WI={primary:545,mac:{primary:2593}},VI={primary:565,mac:{primary:2613}},HI={primary:560,mac:{primary:2608}},$I={primary:554,mac:{primary:2602}},zI={primary:558,mac:{primary:2606}},Hi={StartFindAction:"actions.find",StartFindWithSelection:"actions.findWithSelection",StartFindWithArgs:"editor.actions.findWithArgs",NextMatchFindAction:"editor.action.nextMatchFindAction",PreviousMatchFindAction:"editor.action.previousMatchFindAction",GoToMatchFindAction:"editor.action.goToMatchFindAction",NextSelectionMatchFindAction:"editor.action.nextSelectionMatchFindAction",PreviousSelectionMatchFindAction:"editor.action.previousSelectionMatchFindAction",StartFindReplaceAction:"editor.action.startFindReplaceAction",CloseFindWidgetCommand:"closeFindWidget",ToggleCaseSensitiveCommand:"toggleFindCaseSensitive",ToggleWholeWordCommand:"toggleFindWholeWord",ToggleRegexCommand:"toggleFindRegex",ToggleSearchScopeCommand:"toggleFindInSelection",TogglePreserveCaseCommand:"togglePreserveCase",ReplaceOneAction:"editor.action.replaceOne",ReplaceAllAction:"editor.action.replaceAll",SelectAllMatchesAction:"editor.action.selectAllMatches"},cp=19999,Rit=240;class _k{constructor(e,t){this._toDispose=new xe,this._editor=e,this._state=t,this._isDisposed=!1,this._startSearchingTimer=new Ic,this._decorations=new Br(e),this._toDispose.add(this._decorations),this._updateDecorationsScheduler=new Ei(()=>this.research(!1),100),this._toDispose.add(this._updateDecorationsScheduler),this._toDispose.add(this._editor.onDidChangeCursorPosition(i=>{(i.reason===3||i.reason===5||i.reason===6)&&this._decorations.setStartPosition(this._editor.getPosition())})),this._ignoreModelContentChanged=!1,this._toDispose.add(this._editor.onDidChangeModelContent(i=>{this._ignoreModelContentChanged||(i.isFlush&&this._decorations.reset(),this._decorations.setStartPosition(this._editor.getPosition()),this._updateDecorationsScheduler.schedule())})),this._toDispose.add(this._state.onFindReplaceStateChange(i=>this._onStateChanged(i))),this.research(!1,this._state.searchScope)}dispose(){this._isDisposed=!0,yi(this._startSearchingTimer),this._toDispose.dispose()}_onStateChanged(e){this._isDisposed||this._editor.hasModel()&&(e.searchString||e.isReplaceRevealed||e.isRegex||e.wholeWord||e.matchCase||e.searchScope)&&(this._editor.getModel().isTooLargeForSyncing()?(this._startSearchingTimer.cancel(),this._startSearchingTimer.setIfNotSet(()=>{e.searchScope?this.research(e.moveCursor,this._state.searchScope):this.research(e.moveCursor)},Rit)):e.searchScope?this.research(e.moveCursor,this._state.searchScope):this.research(e.moveCursor))}static _getSearchRange(e,t){return t||e.getFullModelRange()}research(e,t){let i=null;typeof t<"u"?t!==null&&(Array.isArray(t)?i=t:i=[t]):i=this._decorations.getFindScopes(),i!==null&&(i=i.map(a=>{if(a.startLineNumber!==a.endLineNumber){let l=a.endLineNumber;return a.endColumn===1&&(l=l-1),new M(a.startLineNumber,1,l,this._editor.getModel().getLineMaxColumn(l))}return a}));const s=this._findMatches(i,!1,cp);this._decorations.set(s,i);const r=this._editor.getSelection();let o=this._decorations.getCurrentMatchesPosition(r);if(o===0&&s.length>0){const a=RL(s.map(l=>l.range),l=>M.compareRangesUsingStarts(l,r)>=0);o=a>0?a-1+1:o}this._state.changeMatchInfo(o,this._decorations.getCount(),void 0),e&&this._editor.getOption(41).cursorMoveOnType&&this._moveToNextMatch(this._decorations.getStartPosition())}_hasMatches(){return this._state.matchesCount>0}_cannotFind(){if(!this._hasMatches()){const e=this._decorations.getFindScope();return e&&this._editor.revealRangeInCenterIfOutsideViewport(e,0),!0}return!1}_setCurrentFindMatch(e){const t=this._decorations.setCurrentFindMatch(e);this._state.changeMatchInfo(t,this._decorations.getCount(),e),this._editor.setSelection(e),this._editor.revealRangeInCenterIfOutsideViewport(e,0)}_prevSearchPosition(e){const t=this._state.isRegex&&(this._state.searchString.indexOf("^")>=0||this._state.searchString.indexOf("$")>=0);let{lineNumber:i,column:s}=e;const r=this._editor.getModel();return t||s===1?(i===1?i=r.getLineCount():i--,s=r.getLineMaxColumn(i)):s--,new he(i,s)}_moveToPrevMatch(e,t=!1){if(!this._state.canNavigateBack()){const u=this._decorations.matchAfterPosition(e);u&&this._setCurrentFindMatch(u);return}if(this._decorations.getCount()<cp){let u=this._decorations.matchBeforePosition(e);u&&u.isEmpty()&&u.getStartPosition().equals(e)&&(e=this._prevSearchPosition(e),u=this._decorations.matchBeforePosition(e)),u&&this._setCurrentFindMatch(u);return}if(this._cannotFind())return;const i=this._decorations.getFindScope(),s=_k._getSearchRange(this._editor.getModel(),i);s.getEndPosition().isBefore(e)&&(e=s.getEndPosition()),e.isBefore(s.getStartPosition())&&(e=s.getEndPosition());const{lineNumber:r,column:o}=e,a=this._editor.getModel();let l=new he(r,o),c=a.findPreviousMatch(this._state.searchString,l,this._state.isRegex,this._state.matchCase,this._state.wholeWord?this._editor.getOption(129):null,!1);if(c&&c.range.isEmpty()&&c.range.getStartPosition().equals(l)&&(l=this._prevSearchPosition(l),c=a.findPreviousMatch(this._state.searchString,l,this._state.isRegex,this._state.matchCase,this._state.wholeWord?this._editor.getOption(129):null,!1)),!!c){if(!t&&!s.containsRange(c.range))return this._moveToPrevMatch(c.range.getStartPosition(),!0);this._setCurrentFindMatch(c.range)}}moveToPrevMatch(){this._moveToPrevMatch(this._editor.getSelection().getStartPosition())}_nextSearchPosition(e){const t=this._state.isRegex&&(this._state.searchString.indexOf("^")>=0||this._state.searchString.indexOf("$")>=0);let{lineNumber:i,column:s}=e;const r=this._editor.getModel();return t||s===r.getLineMaxColumn(i)?(i===r.getLineCount()?i=1:i++,s=1):s++,new he(i,s)}_moveToNextMatch(e){if(!this._state.canNavigateForward()){const i=this._decorations.matchBeforePosition(e);i&&this._setCurrentFindMatch(i);return}if(this._decorations.getCount()<cp){let i=this._decorations.matchAfterPosition(e);i&&i.isEmpty()&&i.getStartPosition().equals(e)&&(e=this._nextSearchPosition(e),i=this._decorations.matchAfterPosition(e)),i&&this._setCurrentFindMatch(i);return}const t=this._getNextMatch(e,!1,!0);t&&this._setCurrentFindMatch(t.range)}_getNextMatch(e,t,i,s=!1){if(this._cannotFind())return null;const r=this._decorations.getFindScope(),o=_k._getSearchRange(this._editor.getModel(),r);o.getEndPosition().isBefore(e)&&(e=o.getStartPosition()),e.isBefore(o.getStartPosition())&&(e=o.getStartPosition());const{lineNumber:a,column:l}=e,c=this._editor.getModel();let u=new he(a,l),h=c.findNextMatch(this._state.searchString,u,this._state.isRegex,this._state.matchCase,this._state.wholeWord?this._editor.getOption(129):null,t);return i&&h&&h.range.isEmpty()&&h.range.getStartPosition().equals(u)&&(u=this._nextSearchPosition(u),h=c.findNextMatch(this._state.searchString,u,this._state.isRegex,this._state.matchCase,this._state.wholeWord?this._editor.getOption(129):null,t)),h?!s&&!o.containsRange(h.range)?this._getNextMatch(h.range.getEndPosition(),t,i,!0):h:null}moveToNextMatch(){this._moveToNextMatch(this._editor.getSelection().getEndPosition())}_moveToMatch(e){const t=this._decorations.getDecorationRangeAt(e);t&&this._setCurrentFindMatch(t)}moveToMatch(e){this._moveToMatch(e)}_getReplacePattern(){return this._state.isRegex?Pit(this._state.replaceString):Wy.fromStaticValue(this._state.replaceString)}replace(){if(!this._hasMatches())return;const e=this._getReplacePattern(),t=this._editor.getSelection(),i=this._getNextMatch(t.getStartPosition(),!0,!1);if(i)if(t.equalsRange(i.range)){const s=e.buildReplaceString(i.matches,this._state.preserveCase),r=new cr(t,s);this._executeEditorCommand("replace",r),this._decorations.setStartPosition(new he(t.startLineNumber,t.startColumn+s.length)),this.research(!0)}else this._decorations.setStartPosition(this._editor.getPosition()),this._setCurrentFindMatch(i.range)}_findMatches(e,t,i){const s=(e||[null]).map(r=>_k._getSearchRange(this._editor.getModel(),r));return this._editor.getModel().findMatches(this._state.searchString,s,this._state.isRegex,this._state.matchCase,this._state.wholeWord?this._editor.getOption(129):null,t,i)}replaceAll(){if(!this._hasMatches())return;const e=this._decorations.getFindScopes();e===null&&this._state.matchesCount>=cp?this._largeReplaceAll():this._regularReplaceAll(e),this.research(!1)}_largeReplaceAll(){const t=new a1(this._state.searchString,this._state.isRegex,this._state.matchCase,this._state.wholeWord?this._editor.getOption(129):null).parseSearchRequest();if(!t)return;let i=t.regex;if(!i.multiline){let h="mu";i.ignoreCase&&(h+="i"),i.global&&(h+="g"),i=new RegExp(i.source,h)}const s=this._editor.getModel(),r=s.getValue(1),o=s.getFullModelRange(),a=this._getReplacePattern();let l;const c=this._state.preserveCase;a.hasReplacementPatterns||c?l=r.replace(i,function(){return a.buildReplaceString(arguments,c)}):l=r.replace(i,a.buildReplaceString(null,c));const u=new Jj(o,l,this._editor.getSelection());this._executeEditorCommand("replaceAll",u)}_regularReplaceAll(e){const t=this._getReplacePattern(),i=this._findMatches(e,t.hasReplacementPatterns||this._state.preserveCase,1073741824),s=[];for(let o=0,a=i.length;o<a;o++)s[o]=t.buildReplaceString(i[o].matches,this._state.preserveCase);const r=new Tit(this._editor.getSelection(),i.map(o=>o.range),s);this._executeEditorCommand("replaceAll",r)}selectAllMatches(){if(!this._hasMatches())return;const e=this._decorations.getFindScopes();let i=this._findMatches(e,!1,1073741824).map(r=>new Ze(r.range.startLineNumber,r.range.startColumn,r.range.endLineNumber,r.range.endColumn));const s=this._editor.getSelection();for(let r=0,o=i.length;r<o;r++)if(i[r].equalsRange(s)){i=[s].concat(i.slice(0,r)).concat(i.slice(r+1));break}this._editor.setSelections(i)}_executeEditorCommand(e,t){try{this._ignoreModelContentChanged=!0,this._editor.pushUndoStop(),this._editor.executeCommand(e,t),this._editor.pushUndoStop()}finally{this._ignoreModelContentChanged=!1}}}class R2 extends Tc{constructor(e,t,i){super(),this._hideSoon=this._register(new Ei(()=>this._hide(),2e3)),this._isVisible=!1,this._editor=e,this._state=t,this._keybindingService=i,this._domNode=document.createElement("div"),this._domNode.className="findOptionsWidget",this._domNode.style.display="none",this._domNode.style.top="10px",this._domNode.style.zIndex="12",this._domNode.setAttribute("role","presentation"),this._domNode.setAttribute("aria-hidden","true");const s={inputActiveOptionBorder:Ue(uq),inputActiveOptionForeground:Ue(hq),inputActiveOptionBackground:Ue(F1)};this.caseSensitive=this._register(new u_e({appendTitle:this._keybindingLabelFor(Hi.ToggleCaseSensitiveCommand),isChecked:this._state.matchCase,...s})),this._domNode.appendChild(this.caseSensitive.domNode),this._register(this.caseSensitive.onChange(()=>{this._state.change({matchCase:this.caseSensitive.checked},!1)})),this.wholeWords=this._register(new h_e({appendTitle:this._keybindingLabelFor(Hi.ToggleWholeWordCommand),isChecked:this._state.wholeWord,...s})),this._domNode.appendChild(this.wholeWords.domNode),this._register(this.wholeWords.onChange(()=>{this._state.change({wholeWord:this.wholeWords.checked},!1)})),this.regex=this._register(new d_e({appendTitle:this._keybindingLabelFor(Hi.ToggleRegexCommand),isChecked:this._state.isRegex,...s})),this._domNode.appendChild(this.regex.domNode),this._register(this.regex.onChange(()=>{this._state.change({isRegex:this.regex.checked},!1)})),this._editor.addOverlayWidget(this),this._register(this._state.onFindReplaceStateChange(r=>{let o=!1;r.isRegex&&(this.regex.checked=this._state.isRegex,o=!0),r.wholeWord&&(this.wholeWords.checked=this._state.wholeWord,o=!0),r.matchCase&&(this.caseSensitive.checked=this._state.matchCase,o=!0),!this._state.isRevealed&&o&&this._revealTemporarily()})),this._register(Ce(this._domNode,We.MOUSE_LEAVE,r=>this._onMouseLeave())),this._register(Ce(this._domNode,"mouseover",r=>this._onMouseOver()))}_keybindingLabelFor(e){const t=this._keybindingService.lookupKeybinding(e);return t?` (${t.getLabel()})`:""}dispose(){this._editor.removeOverlayWidget(this),super.dispose()}getId(){return R2.ID}getDomNode(){return this._domNode}getPosition(){return{preference:0}}highlightFindOptions(){this._revealTemporarily()}_revealTemporarily(){this._show(),this._hideSoon.schedule()}_onMouseLeave(){this._hideSoon.schedule()}_onMouseOver(){this._hideSoon.cancel()}_show(){this._isVisible||(this._isVisible=!0,this._domNode.style.display="block")}_hide(){this._isVisible&&(this._isVisible=!1,this._domNode.style.display="none")}}R2.ID="editor.contrib.findOptionsWidget";function UI(n,e){return n===1?!0:n===2?!1:e}class Mit extends pe{get searchString(){return this._searchString}get replaceString(){return this._replaceString}get isRevealed(){return this._isRevealed}get isReplaceRevealed(){return this._isReplaceRevealed}get isRegex(){return UI(this._isRegexOverride,this._isRegex)}get wholeWord(){return UI(this._wholeWordOverride,this._wholeWord)}get matchCase(){return UI(this._matchCaseOverride,this._matchCase)}get preserveCase(){return UI(this._preserveCaseOverride,this._preserveCase)}get actualIsRegex(){return this._isRegex}get actualWholeWord(){return this._wholeWord}get actualMatchCase(){return this._matchCase}get actualPreserveCase(){return this._preserveCase}get searchScope(){return this._searchScope}get matchesPosition(){return this._matchesPosition}get matchesCount(){return this._matchesCount}get currentMatch(){return this._currentMatch}constructor(){super(),this._onFindReplaceStateChange=this._register(new ue),this.onFindReplaceStateChange=this._onFindReplaceStateChange.event,this._searchString="",this._replaceString="",this._isRevealed=!1,this._isReplaceRevealed=!1,this._isRegex=!1,this._isRegexOverride=0,this._wholeWord=!1,this._wholeWordOverride=0,this._matchCase=!1,this._matchCaseOverride=0,this._preserveCase=!1,this._preserveCaseOverride=0,this._searchScope=null,this._matchesPosition=0,this._matchesCount=0,this._currentMatch=null,this._loop=!0,this._isSearching=!1,this._filters=null}changeMatchInfo(e,t,i){const s={moveCursor:!1,updateHistory:!1,searchString:!1,replaceString:!1,isRevealed:!1,isReplaceRevealed:!1,isRegex:!1,wholeWord:!1,matchCase:!1,preserveCase:!1,searchScope:!1,matchesPosition:!1,matchesCount:!1,currentMatch:!1,loop:!1,isSearching:!1,filters:!1};let r=!1;t===0&&(e=0),e>t&&(e=t),this._matchesPosition!==e&&(this._matchesPosition=e,s.matchesPosition=!0,r=!0),this._matchesCount!==t&&(this._matchesCount=t,s.matchesCount=!0,r=!0),typeof i<"u"&&(M.equalsRange(this._currentMatch,i)||(this._currentMatch=i,s.currentMatch=!0,r=!0)),r&&this._onFindReplaceStateChange.fire(s)}change(e,t,i=!0){var s;const r={moveCursor:t,updateHistory:i,searchString:!1,replaceString:!1,isRevealed:!1,isReplaceRevealed:!1,isRegex:!1,wholeWord:!1,matchCase:!1,preserveCase:!1,searchScope:!1,matchesPosition:!1,matchesCount:!1,currentMatch:!1,loop:!1,isSearching:!1,filters:!1};let o=!1;const a=this.isRegex,l=this.wholeWord,c=this.matchCase,u=this.preserveCase;typeof e.searchString<"u"&&this._searchString!==e.searchString&&(this._searchString=e.searchString,r.searchString=!0,o=!0),typeof e.replaceString<"u"&&this._replaceString!==e.replaceString&&(this._replaceString=e.replaceString,r.replaceString=!0,o=!0),typeof e.isRevealed<"u"&&this._isRevealed!==e.isRevealed&&(this._isRevealed=e.isRevealed,r.isRevealed=!0,o=!0),typeof e.isReplaceRevealed<"u"&&this._isReplaceRevealed!==e.isReplaceRevealed&&(this._isReplaceRevealed=e.isReplaceRevealed,r.isReplaceRevealed=!0,o=!0),typeof e.isRegex<"u"&&(this._isRegex=e.isRegex),typeof e.wholeWord<"u"&&(this._wholeWord=e.wholeWord),typeof e.matchCase<"u"&&(this._matchCase=e.matchCase),typeof e.preserveCase<"u"&&(this._preserveCase=e.preserveCase),typeof e.searchScope<"u"&&(!((s=e.searchScope)===null||s===void 0)&&s.every(h=>{var d;return(d=this._searchScope)===null||d===void 0?void 0:d.some(f=>!M.equalsRange(f,h))})||(this._searchScope=e.searchScope,r.searchScope=!0,o=!0)),typeof e.loop<"u"&&this._loop!==e.loop&&(this._loop=e.loop,r.loop=!0,o=!0),typeof e.isSearching<"u"&&this._isSearching!==e.isSearching&&(this._isSearching=e.isSearching,r.isSearching=!0,o=!0),typeof e.filters<"u"&&(this._filters?this._filters.update(e.filters):this._filters=e.filters,r.filters=!0,o=!0),this._isRegexOverride=typeof e.isRegexOverride<"u"?e.isRegexOverride:0,this._wholeWordOverride=typeof e.wholeWordOverride<"u"?e.wholeWordOverride:0,this._matchCaseOverride=typeof e.matchCaseOverride<"u"?e.matchCaseOverride:0,this._preserveCaseOverride=typeof e.preserveCaseOverride<"u"?e.preserveCaseOverride:0,a!==this.isRegex&&(o=!0,r.isRegex=!0),l!==this.wholeWord&&(o=!0,r.wholeWord=!0),c!==this.matchCase&&(o=!0,r.matchCase=!0),u!==this.preserveCase&&(o=!0,r.preserveCase=!0),o&&this._onFindReplaceStateChange.fire(r)}canNavigateBack(){return this.canNavigateInLoop()||this.matchesPosition!==1}canNavigateForward(){return this.canNavigateInLoop()||this.matchesPosition<this.matchesCount}canNavigateInLoop(){return this._loop||this.matchesCount>=cp}}const Oit=v("defaultLabel","input"),Fit=v("label.preserveCaseToggle","Preserve Case");class Bit extends WC{constructor(e){super({icon:Pe.preserveCase,title:Fit+e.appendTitle,isChecked:e.isChecked,inputActiveOptionBorder:e.inputActiveOptionBorder,inputActiveOptionForeground:e.inputActiveOptionForeground,inputActiveOptionBackground:e.inputActiveOptionBackground})}}class Wit extends Tc{constructor(e,t,i,s){super(),this._showOptionButtons=i,this.fixFocusOnOptionClickEnabled=!0,this.cachedOptionsWidth=0,this._onDidOptionChange=this._register(new ue),this.onDidOptionChange=this._onDidOptionChange.event,this._onKeyDown=this._register(new ue),this.onKeyDown=this._onKeyDown.event,this._onMouseDown=this._register(new ue),this._onInput=this._register(new ue),this._onKeyUp=this._register(new ue),this._onPreserveCaseKeyDown=this._register(new ue),this.onPreserveCaseKeyDown=this._onPreserveCaseKeyDown.event,this.contextViewProvider=t,this.placeholder=s.placeholder||"",this.validation=s.validation,this.label=s.label||Oit;const r=s.appendPreserveCaseLabel||"",o=s.history||[],a=!!s.flexibleHeight,l=!!s.flexibleWidth,c=s.flexibleMaxHeight;this.domNode=document.createElement("div"),this.domNode.classList.add("monaco-findInput"),this.inputBox=this._register(new f_e(this.domNode,this.contextViewProvider,{ariaLabel:this.label||"",placeholder:this.placeholder||"",validationOptions:{validation:this.validation},history:o,showHistoryHint:s.showHistoryHint,flexibleHeight:a,flexibleWidth:l,flexibleMaxHeight:c,inputBoxStyles:s.inputBoxStyles})),this.preserveCase=this._register(new Bit({appendTitle:r,isChecked:!1,...s.toggleStyles})),this._register(this.preserveCase.onChange(d=>{this._onDidOptionChange.fire(d),!d&&this.fixFocusOnOptionClickEnabled&&this.inputBox.focus(),this.validate()})),this._register(this.preserveCase.onKeyDown(d=>{this._onPreserveCaseKeyDown.fire(d)})),this._showOptionButtons?this.cachedOptionsWidth=this.preserveCase.width():this.cachedOptionsWidth=0;const u=[this.preserveCase.domNode];this.onkeydown(this.domNode,d=>{if(d.equals(15)||d.equals(17)||d.equals(9)){const f=u.indexOf(this.domNode.ownerDocument.activeElement);if(f>=0){let g=-1;d.equals(17)?g=(f+1)%u.length:d.equals(15)&&(f===0?g=u.length-1:g=f-1),d.equals(9)?(u[f].blur(),this.inputBox.focus()):g>=0&&u[g].focus(),Tt.stop(d,!0)}}});const h=document.createElement("div");h.className="controls",h.style.display=this._showOptionButtons?"block":"none",h.appendChild(this.preserveCase.domNode),this.domNode.appendChild(h),e==null||e.appendChild(this.domNode),this.onkeydown(this.inputBox.inputElement,d=>this._onKeyDown.fire(d)),this.onkeyup(this.inputBox.inputElement,d=>this._onKeyUp.fire(d)),this.oninput(this.inputBox.inputElement,d=>this._onInput.fire()),this.onmousedown(this.inputBox.inputElement,d=>this._onMouseDown.fire(d))}enable(){this.domNode.classList.remove("disabled"),this.inputBox.enable(),this.preserveCase.enable()}disable(){this.domNode.classList.add("disabled"),this.inputBox.disable(),this.preserveCase.disable()}setEnabled(e){e?this.enable():this.disable()}select(){this.inputBox.select()}focus(){this.inputBox.focus()}getPreserveCase(){return this.preserveCase.checked}setPreserveCase(e){this.preserveCase.checked=e}focusOnPreserve(){this.preserveCase.focus()}validate(){var e;(e=this.inputBox)===null||e===void 0||e.validate()}set width(e){this.inputBox.paddingRight=this.cachedOptionsWidth,this.domNode.style.width=e+"px"}dispose(){super.dispose()}}var gve=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},pve=function(n,e){return function(t,i){e(t,i,n)}};const aG=new ze("suggestWidgetVisible",!1,v("suggestWidgetVisible","Whether suggestion are visible")),lG="historyNavigationWidgetFocus",mve="historyNavigationForwardsEnabled",_ve="historyNavigationBackwardsEnabled";let Wf;const jI=[];function vve(n,e){if(jI.includes(e))throw new Error("Cannot register the same widget multiple times");jI.push(e);const t=new xe,i=new ze(lG,!1).bindTo(n),s=new ze(mve,!0).bindTo(n),r=new ze(_ve,!0).bindTo(n),o=()=>{i.set(!0),Wf=e},a=()=>{i.set(!1),Wf===e&&(Wf=void 0)};return fO(e.element)&&o(),t.add(e.onDidFocus(()=>o())),t.add(e.onDidBlur(()=>a())),t.add(st(()=>{jI.splice(jI.indexOf(e),1),a()})),{historyNavigationForwardsEnablement:s,historyNavigationBackwardsEnablement:r,dispose(){t.dispose()}}}let nV=class extends g_e{constructor(e,t,i,s){super(e,t,i);const r=this._register(s.createScoped(this.inputBox.element));this._register(vve(r,this.inputBox))}};nV=gve([pve(3,ft)],nV);let sV=class extends Wit{constructor(e,t,i,s,r=!1){super(e,t,r,i);const o=this._register(s.createScoped(this.inputBox.element));this._register(vve(o,this.inputBox))}};sV=gve([pve(3,ft)],sV);Mo.registerCommandAndKeybindingRule({id:"history.showPrevious",weight:200,when:ke.and(ke.has(lG),ke.equals(_ve,!0),ke.not("isComposing"),aG.isEqualTo(!1)),primary:16,secondary:[528],handler:n=>{Wf==null||Wf.showPreviousValue()}});Mo.registerCommandAndKeybindingRule({id:"history.showNext",weight:200,when:ke.and(ke.has(lG),ke.equals(mve,!0),ke.not("isComposing"),aG.isEqualTo(!1)),primary:18,secondary:[530],handler:n=>{Wf==null||Wf.showNextValue()}});function hne(n){var e,t;return((e=n.lookupKeybinding("history.showPrevious"))===null||e===void 0?void 0:e.getElectronAccelerator())==="Up"&&((t=n.lookupKeybinding("history.showNext"))===null||t===void 0?void 0:t.getElectronAccelerator())==="Down"}const Vit=Gn("find-selection",Pe.selection,v("findSelectionIcon","Icon for 'Find in Selection' in the editor find widget.")),dne=Gn("find-collapsed",Pe.chevronRight,v("findCollapsedIcon","Icon to indicate that the editor find widget is collapsed.")),fne=Gn("find-expanded",Pe.chevronDown,v("findExpandedIcon","Icon to indicate that the editor find widget is expanded.")),Hit=Gn("find-replace",Pe.replace,v("findReplaceIcon","Icon for 'Replace' in the editor find widget.")),$it=Gn("find-replace-all",Pe.replaceAll,v("findReplaceAllIcon","Icon for 'Replace All' in the editor find widget.")),zit=Gn("find-previous-match",Pe.arrowUp,v("findPreviousMatchIcon","Icon for 'Find Previous' in the editor find widget.")),Uit=Gn("find-next-match",Pe.arrowDown,v("findNextMatchIcon","Icon for 'Find Next' in the editor find widget.")),jit=v("label.findDialog","Find / Replace"),qit=v("label.find","Find"),Kit=v("placeholder.find","Find"),Git=v("label.previousMatchButton","Previous Match"),Yit=v("label.nextMatchButton","Next Match"),Zit=v("label.toggleSelectionFind","Find in Selection"),Xit=v("label.closeButton","Close"),Qit=v("label.replace","Replace"),Jit=v("placeholder.replace","Replace"),ent=v("label.replaceButton","Replace"),tnt=v("label.replaceAllButton","Replace All"),int=v("label.toggleReplaceButton","Toggle Replace"),nnt=v("title.matchesCountLimit","Only the first {0} results are highlighted, but all find operations work on the entire text.",cp),snt=v("label.matchesLocation","{0} of {1}"),gne=v("label.noResults","No results"),Qu=419,rnt=275,ont=rnt-54;let Uw=69;const ant=33,pne="ctrlEnterReplaceAll.windows.donotask",mne=Gt?256:2048;class W3{constructor(e){this.afterLineNumber=e,this.heightInPx=ant,this.suppressMouseDown=!1,this.domNode=document.createElement("div"),this.domNode.className="dock-find-viewzone"}}function _ne(n,e,t){const i=!!e.match(/\n/);if(t&&i&&t.selectionStart>0){n.stopPropagation();return}}function vne(n,e,t){const i=!!e.match(/\n/);if(t&&i&&t.selectionEnd<t.value.length){n.stopPropagation();return}}class M2 extends Tc{constructor(e,t,i,s,r,o,a,l,c){super(),this._cachedHeight=null,this._revealTimeouts=[],this._codeEditor=e,this._controller=t,this._state=i,this._contextViewProvider=s,this._keybindingService=r,this._contextKeyService=o,this._storageService=l,this._notificationService=c,this._ctrlEnterReplaceAllWarningPrompted=!!l.getBoolean(pne,0),this._isVisible=!1,this._isReplaceVisible=!1,this._ignoreChangeEvent=!1,this._updateHistoryDelayer=new Sc(500),this._register(st(()=>this._updateHistoryDelayer.cancel())),this._register(this._state.onFindReplaceStateChange(u=>this._onStateChanged(u))),this._buildDomNode(),this._updateButtons(),this._tryUpdateWidgetWidth(),this._findInput.inputBox.layout(),this._register(this._codeEditor.onDidChangeConfiguration(u=>{if(u.hasChanged(90)&&(this._codeEditor.getOption(90)&&this._state.change({isReplaceRevealed:!1},!1),this._updateButtons()),u.hasChanged(143)&&this._tryUpdateWidgetWidth(),u.hasChanged(2)&&this.updateAccessibilitySupport(),u.hasChanged(41)){const h=this._codeEditor.getOption(41).loop;this._state.change({loop:h},!1);const d=this._codeEditor.getOption(41).addExtraSpaceOnTop;d&&!this._viewZone&&(this._viewZone=new W3(0),this._showViewZone()),!d&&this._viewZone&&this._removeViewZone()}})),this.updateAccessibilitySupport(),this._register(this._codeEditor.onDidChangeCursorSelection(()=>{this._isVisible&&this._updateToggleSelectionFindButton()})),this._register(this._codeEditor.onDidFocusEditorWidget(async()=>{if(this._isVisible){const u=await this._controller.getGlobalBufferTerm();u&&u!==this._state.searchString&&(this._state.change({searchString:u},!1),this._findInput.select())}})),this._findInputFocused=P2.bindTo(o),this._findFocusTracker=this._register(gd(this._findInput.inputBox.inputElement)),this._register(this._findFocusTracker.onDidFocus(()=>{this._findInputFocused.set(!0),this._updateSearchScope()})),this._register(this._findFocusTracker.onDidBlur(()=>{this._findInputFocused.set(!1)})),this._replaceInputFocused=oG.bindTo(o),this._replaceFocusTracker=this._register(gd(this._replaceInput.inputBox.inputElement)),this._register(this._replaceFocusTracker.onDidFocus(()=>{this._replaceInputFocused.set(!0),this._updateSearchScope()})),this._register(this._replaceFocusTracker.onDidBlur(()=>{this._replaceInputFocused.set(!1)})),this._codeEditor.addOverlayWidget(this),this._codeEditor.getOption(41).addExtraSpaceOnTop&&(this._viewZone=new W3(0)),this._register(this._codeEditor.onDidChangeModel(()=>{this._isVisible&&(this._viewZoneId=void 0)})),this._register(this._codeEditor.onDidScrollChange(u=>{if(u.scrollTopChanged){this._layoutViewZone();return}setTimeout(()=>{this._layoutViewZone()},0)}))}getId(){return M2.ID}getDomNode(){return this._domNode}getPosition(){return this._isVisible?{preference:0}:null}_onStateChanged(e){if(e.searchString){try{this._ignoreChangeEvent=!0,this._findInput.setValue(this._state.searchString)}finally{this._ignoreChangeEvent=!1}this._updateButtons()}if(e.replaceString&&(this._replaceInput.inputBox.value=this._state.replaceString),e.isRevealed&&(this._state.isRevealed?this._reveal():this._hide(!0)),e.isReplaceRevealed&&(this._state.isReplaceRevealed?!this._codeEditor.getOption(90)&&!this._isReplaceVisible&&(this._isReplaceVisible=!0,this._replaceInput.width=Lo(this._findInput.domNode),this._updateButtons(),this._replaceInput.inputBox.layout()):this._isReplaceVisible&&(this._isReplaceVisible=!1,this._updateButtons())),(e.isRevealed||e.isReplaceRevealed)&&(this._state.isRevealed||this._state.isReplaceRevealed)&&this._tryUpdateHeight()&&this._showViewZone(),e.isRegex&&this._findInput.setRegex(this._state.isRegex),e.wholeWord&&this._findInput.setWholeWords(this._state.wholeWord),e.matchCase&&this._findInput.setCaseSensitive(this._state.matchCase),e.preserveCase&&this._replaceInput.setPreserveCase(this._state.preserveCase),e.searchScope&&(this._state.searchScope?this._toggleSelectionFind.checked=!0:this._toggleSelectionFind.checked=!1,this._updateToggleSelectionFindButton()),e.searchString||e.matchesCount||e.matchesPosition){const t=this._state.searchString.length>0&&this._state.matchesCount===0;this._domNode.classList.toggle("no-results",t),this._updateMatchesCount(),this._updateButtons()}(e.searchString||e.currentMatch)&&this._layoutViewZone(),e.updateHistory&&this._delayedUpdateHistory(),e.loop&&this._updateButtons()}_delayedUpdateHistory(){this._updateHistoryDelayer.trigger(this._updateHistory.bind(this)).then(void 0,vt)}_updateHistory(){this._state.searchString&&this._findInput.inputBox.addToHistory(),this._state.replaceString&&this._replaceInput.inputBox.addToHistory()}_updateMatchesCount(){this._matchesCount.style.minWidth=Uw+"px",this._state.matchesCount>=cp?this._matchesCount.title=nnt:this._matchesCount.title="",this._matchesCount.firstChild&&this._matchesCount.removeChild(this._matchesCount.firstChild);let e;if(this._state.matchesCount>0){let t=String(this._state.matchesCount);this._state.matchesCount>=cp&&(t+="+");let i=String(this._state.matchesPosition);i==="0"&&(i="?"),e=I_(snt,i,t)}else e=gne;this._matchesCount.appendChild(document.createTextNode(e)),ha(this._getAriaLabel(e,this._state.currentMatch,this._state.searchString)),Uw=Math.max(Uw,this._matchesCount.clientWidth)}_getAriaLabel(e,t,i){if(e===gne)return i===""?v("ariaSearchNoResultEmpty","{0} found",e):v("ariaSearchNoResult","{0} found for '{1}'",e,i);if(t){const s=v("ariaSearchNoResultWithLineNum","{0} found for '{1}', at {2}",e,i,t.startLineNumber+":"+t.startColumn),r=this._codeEditor.getModel();return r&&t.startLineNumber<=r.getLineCount()&&t.startLineNumber>=1?`${r.getLineContent(t.startLineNumber)}, ${s}`:s}return v("ariaSearchNoResultWithLineNumNoCurrentMatch","{0} found for '{1}'",e,i)}_updateToggleSelectionFindButton(){const e=this._codeEditor.getSelection(),t=e?e.startLineNumber!==e.endLineNumber||e.startColumn!==e.endColumn:!1,i=this._toggleSelectionFind.checked;this._isVisible&&(i||t)?this._toggleSelectionFind.enable():this._toggleSelectionFind.disable()}_updateButtons(){this._findInput.setEnabled(this._isVisible),this._replaceInput.setEnabled(this._isVisible&&this._isReplaceVisible),this._updateToggleSelectionFindButton(),this._closeBtn.setEnabled(this._isVisible);const e=this._state.searchString.length>0,t=!!this._state.matchesCount;this._prevBtn.setEnabled(this._isVisible&&e&&t&&this._state.canNavigateBack()),this._nextBtn.setEnabled(this._isVisible&&e&&t&&this._state.canNavigateForward()),this._replaceBtn.setEnabled(this._isVisible&&this._isReplaceVisible&&e),this._replaceAllBtn.setEnabled(this._isVisible&&this._isReplaceVisible&&e),this._domNode.classList.toggle("replaceToggled",this._isReplaceVisible),this._toggleReplaceBtn.setExpanded(this._isReplaceVisible);const i=!this._codeEditor.getOption(90);this._toggleReplaceBtn.setEnabled(this._isVisible&&i)}_reveal(){if(this._revealTimeouts.forEach(e=>{clearTimeout(e)}),this._revealTimeouts=[],!this._isVisible){this._isVisible=!0;const e=this._codeEditor.getSelection();switch(this._codeEditor.getOption(41).autoFindInSelection){case"always":this._toggleSelectionFind.checked=!0;break;case"never":this._toggleSelectionFind.checked=!1;break;case"multiline":{const i=!!e&&e.startLineNumber!==e.endLineNumber;this._toggleSelectionFind.checked=i;break}}this._tryUpdateWidgetWidth(),this._updateButtons(),this._revealTimeouts.push(setTimeout(()=>{this._domNode.classList.add("visible"),this._domNode.setAttribute("aria-hidden","false")},0)),this._revealTimeouts.push(setTimeout(()=>{this._findInput.validate()},200)),this._codeEditor.layoutOverlayWidget(this);let t=!0;if(this._codeEditor.getOption(41).seedSearchStringFromSelection&&e){const i=this._codeEditor.getDomNode();if(i){const s=ys(i),r=this._codeEditor.getScrolledVisiblePosition(e.getStartPosition()),o=s.left+(r?r.left:0),a=r?r.top:0;if(this._viewZone&&a<this._viewZone.heightInPx){e.endLineNumber>e.startLineNumber&&(t=!1);const l=yge(this._domNode).left;o>l&&(t=!1);const c=this._codeEditor.getScrolledVisiblePosition(e.getEndPosition());s.left+(c?c.left:0)>l&&(t=!1)}}}this._showViewZone(t)}}_hide(e){this._revealTimeouts.forEach(t=>{clearTimeout(t)}),this._revealTimeouts=[],this._isVisible&&(this._isVisible=!1,this._updateButtons(),this._domNode.classList.remove("visible"),this._domNode.setAttribute("aria-hidden","true"),this._findInput.clearMessage(),e&&this._codeEditor.focus(),this._codeEditor.layoutOverlayWidget(this),this._removeViewZone())}_layoutViewZone(e){if(!this._codeEditor.getOption(41).addExtraSpaceOnTop){this._removeViewZone();return}if(!this._isVisible)return;const i=this._viewZone;this._viewZoneId!==void 0||!i||this._codeEditor.changeViewZones(s=>{i.heightInPx=this._getHeight(),this._viewZoneId=s.addZone(i),this._codeEditor.setScrollTop(e||this._codeEditor.getScrollTop()+i.heightInPx)})}_showViewZone(e=!0){if(!this._isVisible||!this._codeEditor.getOption(41).addExtraSpaceOnTop)return;this._viewZone===void 0&&(this._viewZone=new W3(0));const i=this._viewZone;this._codeEditor.changeViewZones(s=>{if(this._viewZoneId!==void 0){const r=this._getHeight();if(r===i.heightInPx)return;const o=r-i.heightInPx;i.heightInPx=r,s.layoutZone(this._viewZoneId),e&&this._codeEditor.setScrollTop(this._codeEditor.getScrollTop()+o);return}else{let r=this._getHeight();if(r-=this._codeEditor.getOption(83).top,r<=0)return;i.heightInPx=r,this._viewZoneId=s.addZone(i),e&&this._codeEditor.setScrollTop(this._codeEditor.getScrollTop()+r)}})}_removeViewZone(){this._codeEditor.changeViewZones(e=>{this._viewZoneId!==void 0&&(e.removeZone(this._viewZoneId),this._viewZoneId=void 0,this._viewZone&&(this._codeEditor.setScrollTop(this._codeEditor.getScrollTop()-this._viewZone.heightInPx),this._viewZone=void 0))})}_tryUpdateWidgetWidth(){if(!this._isVisible||!this._domNode.isConnected)return;const e=this._codeEditor.getLayoutInfo();if(e.contentWidth<=0){this._domNode.classList.add("hiddenEditor");return}else this._domNode.classList.contains("hiddenEditor")&&this._domNode.classList.remove("hiddenEditor");const i=e.width,s=e.minimap.minimapWidth;let r=!1,o=!1,a=!1;if(this._resized&&Lo(this._domNode)>Qu){this._domNode.style.maxWidth=`${i-28-s-15}px`,this._replaceInput.width=Lo(this._findInput.domNode);return}if(Qu+28+s>=i&&(o=!0),Qu+28+s-Uw>=i&&(a=!0),Qu+28+s-Uw>=i+50&&(r=!0),this._domNode.classList.toggle("collapsed-find-widget",r),this._domNode.classList.toggle("narrow-find-widget",a),this._domNode.classList.toggle("reduced-find-widget",o),!a&&!r&&(this._domNode.style.maxWidth=`${i-28-s-15}px`),this._findInput.layout({collapsedFindWidget:r,narrowFindWidget:a,reducedFindWidget:o}),this._resized){const l=this._findInput.inputBox.element.clientWidth;l>0&&(this._replaceInput.width=l)}else this._isReplaceVisible&&(this._replaceInput.width=Lo(this._findInput.domNode))}_getHeight(){let e=0;return e+=4,e+=this._findInput.inputBox.height+2,this._isReplaceVisible&&(e+=4,e+=this._replaceInput.inputBox.height+2),e+=4,e}_tryUpdateHeight(){const e=this._getHeight();return this._cachedHeight!==null&&this._cachedHeight===e?!1:(this._cachedHeight=e,this._domNode.style.height=`${e}px`,!0)}focusFindInput(){this._findInput.select(),this._findInput.focus()}focusReplaceInput(){this._replaceInput.select(),this._replaceInput.focus()}highlightFindOptions(){this._findInput.highlightFindOptions()}_updateSearchScope(){if(this._codeEditor.hasModel()&&this._toggleSelectionFind.checked){const e=this._codeEditor.getSelections();e.map(t=>{t.endColumn===1&&t.endLineNumber>t.startLineNumber&&(t=t.setEndPosition(t.endLineNumber-1,this._codeEditor.getModel().getLineMaxColumn(t.endLineNumber-1)));const i=this._state.currentMatch;return t.startLineNumber!==t.endLineNumber&&!M.equalsRange(t,i)?t:null}).filter(t=>!!t),e.length&&this._state.change({searchScope:e},!0)}}_onFindInputMouseDown(e){e.middleButton&&e.stopPropagation()}_onFindInputKeyDown(e){if(e.equals(mne|3))if(this._keybindingService.dispatchEvent(e,e.target)){e.preventDefault();return}else{this._findInput.inputBox.insertAtCursor(` +`),e.preventDefault();return}if(e.equals(2)){this._isReplaceVisible?this._replaceInput.focus():this._findInput.focusOnCaseSensitive(),e.preventDefault();return}if(e.equals(2066)){this._codeEditor.focus(),e.preventDefault();return}if(e.equals(16))return _ne(e,this._findInput.getValue(),this._findInput.domNode.querySelector("textarea"));if(e.equals(18))return vne(e,this._findInput.getValue(),this._findInput.domNode.querySelector("textarea"))}_onReplaceInputKeyDown(e){if(e.equals(mne|3))if(this._keybindingService.dispatchEvent(e,e.target)){e.preventDefault();return}else{yr&&Cu&&!this._ctrlEnterReplaceAllWarningPrompted&&(this._notificationService.info(v("ctrlEnter.keybindingChanged","Ctrl+Enter now inserts line break instead of replacing all. You can modify the keybinding for editor.action.replaceAll to override this behavior.")),this._ctrlEnterReplaceAllWarningPrompted=!0,this._storageService.store(pne,!0,0,0)),this._replaceInput.inputBox.insertAtCursor(` +`),e.preventDefault();return}if(e.equals(2)){this._findInput.focusOnCaseSensitive(),e.preventDefault();return}if(e.equals(1026)){this._findInput.focus(),e.preventDefault();return}if(e.equals(2066)){this._codeEditor.focus(),e.preventDefault();return}if(e.equals(16))return _ne(e,this._replaceInput.inputBox.value,this._replaceInput.inputBox.element.querySelector("textarea"));if(e.equals(18))return vne(e,this._replaceInput.inputBox.value,this._replaceInput.inputBox.element.querySelector("textarea"))}getVerticalSashLeft(e){return 0}_keybindingLabelFor(e){const t=this._keybindingService.lookupKeybinding(e);return t?` (${t.getLabel()})`:""}_buildDomNode(){this._findInput=this._register(new nV(null,this._contextViewProvider,{width:ont,label:qit,placeholder:Kit,appendCaseSensitiveLabel:this._keybindingLabelFor(Hi.ToggleCaseSensitiveCommand),appendWholeWordsLabel:this._keybindingLabelFor(Hi.ToggleWholeWordCommand),appendRegexLabel:this._keybindingLabelFor(Hi.ToggleRegexCommand),validation:l=>{if(l.length===0||!this._findInput.getRegex())return null;try{return new RegExp(l,"gu"),null}catch(c){return{content:c.message}}},flexibleHeight:!0,flexibleWidth:!0,flexibleMaxHeight:118,showCommonFindToggles:!0,showHistoryHint:()=>hne(this._keybindingService),inputBoxStyles:TP,toggleStyles:IP},this._contextKeyService)),this._findInput.setRegex(!!this._state.isRegex),this._findInput.setCaseSensitive(!!this._state.matchCase),this._findInput.setWholeWords(!!this._state.wholeWord),this._register(this._findInput.onKeyDown(l=>this._onFindInputKeyDown(l))),this._register(this._findInput.inputBox.onDidChange(()=>{this._ignoreChangeEvent||this._state.change({searchString:this._findInput.getValue()},!0)})),this._register(this._findInput.onDidOptionChange(()=>{this._state.change({isRegex:this._findInput.getRegex(),wholeWord:this._findInput.getWholeWords(),matchCase:this._findInput.getCaseSensitive()},!0)})),this._register(this._findInput.onCaseSensitiveKeyDown(l=>{l.equals(1026)&&this._isReplaceVisible&&(this._replaceInput.focus(),l.preventDefault())})),this._register(this._findInput.onRegexKeyDown(l=>{l.equals(2)&&this._isReplaceVisible&&(this._replaceInput.focusOnPreserve(),l.preventDefault())})),this._register(this._findInput.inputBox.onDidHeightChange(l=>{this._tryUpdateHeight()&&this._showViewZone()})),Kr&&this._register(this._findInput.onMouseDown(l=>this._onFindInputMouseDown(l))),this._matchesCount=document.createElement("div"),this._matchesCount.className="matchesCount",this._updateMatchesCount(),this._prevBtn=this._register(new c0({label:Git+this._keybindingLabelFor(Hi.PreviousMatchFindAction),icon:zit,onTrigger:()=>{Xg(this._codeEditor.getAction(Hi.PreviousMatchFindAction)).run().then(void 0,vt)}})),this._nextBtn=this._register(new c0({label:Yit+this._keybindingLabelFor(Hi.NextMatchFindAction),icon:Uit,onTrigger:()=>{Xg(this._codeEditor.getAction(Hi.NextMatchFindAction)).run().then(void 0,vt)}}));const i=document.createElement("div");i.className="find-part",i.appendChild(this._findInput.domNode);const s=document.createElement("div");s.className="find-actions",i.appendChild(s),s.appendChild(this._matchesCount),s.appendChild(this._prevBtn.domNode),s.appendChild(this._nextBtn.domNode),this._toggleSelectionFind=this._register(new WC({icon:Vit,title:Zit+this._keybindingLabelFor(Hi.ToggleSearchScopeCommand),isChecked:!1,inputActiveOptionBackground:Ue(F1),inputActiveOptionBorder:Ue(uq),inputActiveOptionForeground:Ue(hq)})),this._register(this._toggleSelectionFind.onChange(()=>{if(this._toggleSelectionFind.checked){if(this._codeEditor.hasModel()){const l=this._codeEditor.getSelections();l.map(c=>(c.endColumn===1&&c.endLineNumber>c.startLineNumber&&(c=c.setEndPosition(c.endLineNumber-1,this._codeEditor.getModel().getLineMaxColumn(c.endLineNumber-1))),c.isEmpty()?null:c)).filter(c=>!!c),l.length&&this._state.change({searchScope:l},!0)}}else this._state.change({searchScope:null},!0)})),s.appendChild(this._toggleSelectionFind.domNode),this._closeBtn=this._register(new c0({label:Xit+this._keybindingLabelFor(Hi.CloseFindWidgetCommand),icon:n1e,onTrigger:()=>{this._state.change({isRevealed:!1,searchScope:null},!1)},onKeyDown:l=>{l.equals(2)&&this._isReplaceVisible&&(this._replaceBtn.isEnabled()?this._replaceBtn.focus():this._codeEditor.focus(),l.preventDefault())}})),this._replaceInput=this._register(new sV(null,void 0,{label:Qit,placeholder:Jit,appendPreserveCaseLabel:this._keybindingLabelFor(Hi.TogglePreserveCaseCommand),history:[],flexibleHeight:!0,flexibleWidth:!0,flexibleMaxHeight:118,showHistoryHint:()=>hne(this._keybindingService),inputBoxStyles:TP,toggleStyles:IP},this._contextKeyService,!0)),this._replaceInput.setPreserveCase(!!this._state.preserveCase),this._register(this._replaceInput.onKeyDown(l=>this._onReplaceInputKeyDown(l))),this._register(this._replaceInput.inputBox.onDidChange(()=>{this._state.change({replaceString:this._replaceInput.inputBox.value},!1)})),this._register(this._replaceInput.inputBox.onDidHeightChange(l=>{this._isReplaceVisible&&this._tryUpdateHeight()&&this._showViewZone()})),this._register(this._replaceInput.onDidOptionChange(()=>{this._state.change({preserveCase:this._replaceInput.getPreserveCase()},!0)})),this._register(this._replaceInput.onPreserveCaseKeyDown(l=>{l.equals(2)&&(this._prevBtn.isEnabled()?this._prevBtn.focus():this._nextBtn.isEnabled()?this._nextBtn.focus():this._toggleSelectionFind.enabled?this._toggleSelectionFind.focus():this._closeBtn.isEnabled()&&this._closeBtn.focus(),l.preventDefault())})),this._replaceBtn=this._register(new c0({label:ent+this._keybindingLabelFor(Hi.ReplaceOneAction),icon:Hit,onTrigger:()=>{this._controller.replace()},onKeyDown:l=>{l.equals(1026)&&(this._closeBtn.focus(),l.preventDefault())}})),this._replaceAllBtn=this._register(new c0({label:tnt+this._keybindingLabelFor(Hi.ReplaceAllAction),icon:$it,onTrigger:()=>{this._controller.replaceAll()}}));const r=document.createElement("div");r.className="replace-part",r.appendChild(this._replaceInput.domNode);const o=document.createElement("div");o.className="replace-actions",r.appendChild(o),o.appendChild(this._replaceBtn.domNode),o.appendChild(this._replaceAllBtn.domNode),this._toggleReplaceBtn=this._register(new c0({label:int,className:"codicon toggle left",onTrigger:()=>{this._state.change({isReplaceRevealed:!this._isReplaceVisible},!1),this._isReplaceVisible&&(this._replaceInput.width=Lo(this._findInput.domNode),this._replaceInput.inputBox.layout()),this._showViewZone()}})),this._toggleReplaceBtn.setExpanded(this._isReplaceVisible),this._domNode=document.createElement("div"),this._domNode.className="editor-widget find-widget",this._domNode.setAttribute("aria-hidden","true"),this._domNode.ariaLabel=jit,this._domNode.role="dialog",this._domNode.style.width=`${Qu}px`,this._domNode.appendChild(this._toggleReplaceBtn.domNode),this._domNode.appendChild(i),this._domNode.appendChild(this._closeBtn.domNode),this._domNode.appendChild(r),this._resizeSash=new wr(this._domNode,this,{orientation:0,size:2}),this._resized=!1;let a=Qu;this._register(this._resizeSash.onDidStart(()=>{a=Lo(this._domNode)})),this._register(this._resizeSash.onDidChange(l=>{this._resized=!0;const c=a+l.startX-l.currentX;if(c<Qu)return;const u=parseFloat(dO(this._domNode).maxWidth)||0;c>u||(this._domNode.style.width=`${c}px`,this._isReplaceVisible&&(this._replaceInput.width=Lo(this._findInput.domNode)),this._findInput.inputBox.layout(),this._tryUpdateHeight())})),this._register(this._resizeSash.onDidReset(()=>{const l=Lo(this._domNode);if(l<Qu)return;let c=Qu;if(!this._resized||l===Qu){const u=this._codeEditor.getLayoutInfo();c=u.width-28-u.minimap.minimapWidth-15,this._resized=!0}this._domNode.style.width=`${c}px`,this._isReplaceVisible&&(this._replaceInput.width=Lo(this._findInput.domNode)),this._findInput.inputBox.layout()}))}updateAccessibilitySupport(){const e=this._codeEditor.getOption(2);this._findInput.setFocusInputOnOptionClick(e!==2)}}M2.ID="editor.contrib.findWidget";class c0 extends Tc{constructor(e){super(),this._opts=e;let t="button";this._opts.className&&(t=t+" "+this._opts.className),this._opts.icon&&(t=t+" "+nt.asClassName(this._opts.icon)),this._domNode=document.createElement("div"),this._domNode.title=this._opts.label,this._domNode.tabIndex=0,this._domNode.className=t,this._domNode.setAttribute("role","button"),this._domNode.setAttribute("aria-label",this._opts.label),this.onclick(this._domNode,i=>{this._opts.onTrigger(),i.preventDefault()}),this.onkeydown(this._domNode,i=>{var s,r;if(i.equals(10)||i.equals(3)){this._opts.onTrigger(),i.preventDefault();return}(r=(s=this._opts).onKeyDown)===null||r===void 0||r.call(s,i)})}get domNode(){return this._domNode}isEnabled(){return this._domNode.tabIndex>=0}focus(){this._domNode.focus()}setEnabled(e){this._domNode.classList.toggle("disabled",!e),this._domNode.setAttribute("aria-disabled",String(!e)),this._domNode.tabIndex=e?0:-1}setExpanded(e){this._domNode.setAttribute("aria-expanded",String(!!e)),e?(this._domNode.classList.remove(...nt.asClassNameArray(dne)),this._domNode.classList.add(...nt.asClassNameArray(fne))):(this._domNode.classList.remove(...nt.asClassNameArray(fne)),this._domNode.classList.add(...nt.asClassNameArray(dne)))}}Nc((n,e)=>{const t=(p,m)=>{m&&e.addRule(`.monaco-editor ${p} { background-color: ${m}; }`)};t(".findMatch",n.getColor(Fh)),t(".currentFindMatch",n.getColor(eHe)),t(".findScope",n.getColor(tHe));const i=n.getColor(Rn);t(".find-widget",i);const s=n.getColor(Ah);s&&e.addRule(`.monaco-editor .find-widget { box-shadow: 0 0 8px 2px ${s}; }`);const r=n.getColor(cq);r&&e.addRule(`.monaco-editor .find-widget { border-left: 1px solid ${r}; border-right: 1px solid ${r}; border-bottom: 1px solid ${r}; }`);const o=n.getColor(tp);o&&e.addRule(`.monaco-editor .findMatch { border: 1px ${ku(n.type)?"dotted":"solid"} ${o}; box-sizing: border-box; }`);const a=n.getColor(iHe);a&&e.addRule(`.monaco-editor .currentFindMatch { border: 2px solid ${a}; padding: 1px; box-sizing: border-box; }`);const l=n.getColor(nHe);l&&e.addRule(`.monaco-editor .findScope { border: 1px ${ku(n.type)?"dashed":"solid"} ${l}; }`);const c=n.getColor(zt);c&&e.addRule(`.monaco-editor .find-widget { border: 1px solid ${c}; }`);const u=n.getColor(Mh);u&&e.addRule(`.monaco-editor .find-widget { color: ${u}; }`);const h=n.getColor(SVe);h&&e.addRule(`.monaco-editor .find-widget.no-results .matchesCount { color: ${h}; }`);const d=n.getColor(jVe);if(d)e.addRule(`.monaco-editor .find-widget .monaco-sash { background-color: ${d}; }`);else{const p=n.getColor(Oh);p&&e.addRule(`.monaco-editor .find-widget .monaco-sash { background-color: ${p}; }`)}const f=n.getColor(_9);f&&e.addRule(` + .monaco-editor .find-widget .button:not(.disabled):hover, + .monaco-editor .find-widget .codicon-find-selection:hover { + background-color: ${f} !important; + } + `);const g=n.getColor($a);g&&e.addRule(`.monaco-editor .find-widget .monaco-inputbox.synthetic-focus { outline-color: ${g}; }`)});var bve=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},Jc=function(n,e){return function(t,i){e(t,i,n)}},rV;const lnt=524288;function oV(n,e="single",t=!1){if(!n.hasModel())return null;const i=n.getSelection();if(e==="single"&&i.startLineNumber===i.endLineNumber||e==="multiple"){if(i.isEmpty()){const s=n.getConfiguredWordAtPosition(i.getStartPosition());if(s&&t===!1)return s.word}else if(n.getModel().getValueLengthInRange(i)<lnt)return n.getModel().getValueInRange(i)}return null}let mo=rV=class extends pe{get editor(){return this._editor}static get(e){return e.getContribution(rV.ID)}constructor(e,t,i,s,r){super(),this._editor=e,this._findWidgetVisible=ug.bindTo(t),this._contextKeyService=t,this._storageService=i,this._clipboardService=s,this._notificationService=r,this._updateHistoryDelayer=new Sc(500),this._state=this._register(new Mit),this.loadQueryState(),this._register(this._state.onFindReplaceStateChange(o=>this._onStateChanged(o))),this._model=null,this._register(this._editor.onDidChangeModel(()=>{const o=this._editor.getModel()&&this._state.isRevealed;this.disposeModel(),this._state.change({searchScope:null,matchCase:this._storageService.getBoolean("editor.matchCase",1,!1),wholeWord:this._storageService.getBoolean("editor.wholeWord",1,!1),isRegex:this._storageService.getBoolean("editor.isRegex",1,!1),preserveCase:this._storageService.getBoolean("editor.preserveCase",1,!1)},!1),o&&this._start({forceRevealReplace:!1,seedSearchStringFromSelection:"none",seedSearchStringFromNonEmptySelection:!1,seedSearchStringFromGlobalClipboard:!1,shouldFocus:0,shouldAnimate:!1,updateSearchScope:!1,loop:this._editor.getOption(41).loop})}))}dispose(){this.disposeModel(),super.dispose()}disposeModel(){this._model&&(this._model.dispose(),this._model=null)}_onStateChanged(e){this.saveQueryState(e),e.isRevealed&&(this._state.isRevealed?this._findWidgetVisible.set(!0):(this._findWidgetVisible.reset(),this.disposeModel())),e.searchString&&this.setGlobalBufferTerm(this._state.searchString)}saveQueryState(e){e.isRegex&&this._storageService.store("editor.isRegex",this._state.actualIsRegex,1,1),e.wholeWord&&this._storageService.store("editor.wholeWord",this._state.actualWholeWord,1,1),e.matchCase&&this._storageService.store("editor.matchCase",this._state.actualMatchCase,1,1),e.preserveCase&&this._storageService.store("editor.preserveCase",this._state.actualPreserveCase,1,1)}loadQueryState(){this._state.change({matchCase:this._storageService.getBoolean("editor.matchCase",1,this._state.matchCase),wholeWord:this._storageService.getBoolean("editor.wholeWord",1,this._state.wholeWord),isRegex:this._storageService.getBoolean("editor.isRegex",1,this._state.isRegex),preserveCase:this._storageService.getBoolean("editor.preserveCase",1,this._state.preserveCase)},!1)}isFindInputFocused(){return!!P2.getValue(this._contextKeyService)}getState(){return this._state}closeFindWidget(){this._state.change({isRevealed:!1,searchScope:null},!1),this._editor.focus()}toggleCaseSensitive(){this._state.change({matchCase:!this._state.matchCase},!1),this._state.isRevealed||this.highlightFindOptions()}toggleWholeWords(){this._state.change({wholeWord:!this._state.wholeWord},!1),this._state.isRevealed||this.highlightFindOptions()}toggleRegex(){this._state.change({isRegex:!this._state.isRegex},!1),this._state.isRevealed||this.highlightFindOptions()}togglePreserveCase(){this._state.change({preserveCase:!this._state.preserveCase},!1),this._state.isRevealed||this.highlightFindOptions()}toggleSearchScope(){if(this._state.searchScope)this._state.change({searchScope:null},!0);else if(this._editor.hasModel()){const e=this._editor.getSelections();e.map(t=>(t.endColumn===1&&t.endLineNumber>t.startLineNumber&&(t=t.setEndPosition(t.endLineNumber-1,this._editor.getModel().getLineMaxColumn(t.endLineNumber-1))),t.isEmpty()?null:t)).filter(t=>!!t),e.length&&this._state.change({searchScope:e},!0)}}setSearchString(e){this._state.isRegex&&(e=Qa(e)),this._state.change({searchString:e},!1)}highlightFindOptions(e=!1){}async _start(e,t){if(this.disposeModel(),!this._editor.hasModel())return;const i={...t,isRevealed:!0};if(e.seedSearchStringFromSelection==="single"){const s=oV(this._editor,e.seedSearchStringFromSelection,e.seedSearchStringFromNonEmptySelection);s&&(this._state.isRegex?i.searchString=Qa(s):i.searchString=s)}else if(e.seedSearchStringFromSelection==="multiple"&&!e.updateSearchScope){const s=oV(this._editor,e.seedSearchStringFromSelection);s&&(i.searchString=s)}if(!i.searchString&&e.seedSearchStringFromGlobalClipboard){const s=await this.getGlobalBufferTerm();if(!this._editor.hasModel())return;s&&(i.searchString=s)}if(e.forceRevealReplace||i.isReplaceRevealed?i.isReplaceRevealed=!0:this._findWidgetVisible.get()||(i.isReplaceRevealed=!1),e.updateSearchScope){const s=this._editor.getSelections();s.some(r=>!r.isEmpty())&&(i.searchScope=s)}i.loop=e.loop,this._state.change(i,!1),this._model||(this._model=new _k(this._editor,this._state))}start(e,t){return this._start(e,t)}moveToNextMatch(){return this._model?(this._model.moveToNextMatch(),!0):!1}moveToPrevMatch(){return this._model?(this._model.moveToPrevMatch(),!0):!1}goToMatch(e){return this._model?(this._model.moveToMatch(e),!0):!1}replace(){return this._model?(this._model.replace(),!0):!1}replaceAll(){var e;return this._model?!((e=this._editor.getModel())===null||e===void 0)&&e.isTooLargeForHeapOperation()?(this._notificationService.warn(v("too.large.for.replaceall","The file is too large to perform a replace all operation.")),!1):(this._model.replaceAll(),!0):!1}selectAllMatches(){return this._model?(this._model.selectAllMatches(),this._editor.focus(),!0):!1}async getGlobalBufferTerm(){return this._editor.getOption(41).globalFindClipboard&&this._editor.hasModel()&&!this._editor.getModel().isTooLargeForSyncing()?this._clipboardService.readFindText():""}setGlobalBufferTerm(e){this._editor.getOption(41).globalFindClipboard&&this._editor.hasModel()&&!this._editor.getModel().isTooLargeForSyncing()&&this._clipboardService.writeFindText(e)}};mo.ID="editor.contrib.findController";mo=rV=bve([Jc(1,ft),Jc(2,Rc),Jc(3,ag),Jc(4,is)],mo);let aV=class extends mo{constructor(e,t,i,s,r,o,a,l){super(e,i,a,l,o),this._contextViewService=t,this._keybindingService=s,this._themeService=r,this._widget=null,this._findOptionsWidget=null}async _start(e,t){this._widget||this._createFindWidget();const i=this._editor.getSelection();let s=!1;switch(this._editor.getOption(41).autoFindInSelection){case"always":s=!0;break;case"never":s=!1;break;case"multiline":{s=!!i&&i.startLineNumber!==i.endLineNumber;break}}e.updateSearchScope=e.updateSearchScope||s,await super._start(e,t),this._widget&&(e.shouldFocus===2?this._widget.focusReplaceInput():e.shouldFocus===1&&this._widget.focusFindInput())}highlightFindOptions(e=!1){this._widget||this._createFindWidget(),this._state.isRevealed&&!e?this._widget.highlightFindOptions():this._findOptionsWidget.highlightFindOptions()}_createFindWidget(){this._widget=this._register(new M2(this._editor,this,this._state,this._contextViewService,this._keybindingService,this._contextKeyService,this._themeService,this._storageService,this._notificationService)),this._findOptionsWidget=this._register(new R2(this._editor,this._state,this._keybindingService))}};aV=bve([Jc(1,lg),Jc(2,ft),Jc(3,Di),Jc(4,Ms),Jc(5,is),Jc(6,Rc),Jc(7,ag)],aV);const cnt=Fge(new Oge({id:Hi.StartFindAction,label:v("startFindAction","Find"),alias:"Find",precondition:ke.or($.focus,ke.has("editorIsOpen")),kbOpts:{kbExpr:null,primary:2084,weight:100},menuOpts:{menuId:B.MenubarEditMenu,group:"3_find",title:v({key:"miFind",comment:["&& denotes a mnemonic"]},"&&Find"),order:1}}));cnt.addImplementation(0,(n,e,t)=>{const i=mo.get(e);return i?i.start({forceRevealReplace:!1,seedSearchStringFromSelection:e.getOption(41).seedSearchStringFromSelection!=="never"?"single":"none",seedSearchStringFromNonEmptySelection:e.getOption(41).seedSearchStringFromSelection==="selection",seedSearchStringFromGlobalClipboard:e.getOption(41).globalFindClipboard,shouldFocus:1,shouldAnimate:!0,updateSearchScope:!1,loop:e.getOption(41).loop}):!1});const unt={description:"Open a new In-Editor Find Widget.",args:[{name:"Open a new In-Editor Find Widget args",schema:{properties:{searchString:{type:"string"},replaceString:{type:"string"},regex:{type:"boolean"},regexOverride:{type:"number",description:v("actions.find.isRegexOverride",`Overrides "Use Regular Expression" flag. +The flag will not be saved for the future. +0: Do Nothing +1: True +2: False`)},wholeWord:{type:"boolean"},wholeWordOverride:{type:"number",description:v("actions.find.wholeWordOverride",`Overrides "Match Whole Word" flag. +The flag will not be saved for the future. +0: Do Nothing +1: True +2: False`)},matchCase:{type:"boolean"},matchCaseOverride:{type:"number",description:v("actions.find.matchCaseOverride",`Overrides "Math Case" flag. +The flag will not be saved for the future. +0: Do Nothing +1: True +2: False`)},preserveCase:{type:"boolean"},preserveCaseOverride:{type:"number",description:v("actions.find.preserveCaseOverride",`Overrides "Preserve Case" flag. +The flag will not be saved for the future. +0: Do Nothing +1: True +2: False`)},findInSelection:{type:"boolean"}}}}]};class hnt extends qe{constructor(){super({id:Hi.StartFindWithArgs,label:v("startFindWithArgsAction","Find With Arguments"),alias:"Find With Arguments",precondition:void 0,kbOpts:{kbExpr:null,primary:0,weight:100},metadata:unt})}async run(e,t,i){const s=mo.get(t);if(s){const r=i?{searchString:i.searchString,replaceString:i.replaceString,isReplaceRevealed:i.replaceString!==void 0,isRegex:i.isRegex,wholeWord:i.matchWholeWord,matchCase:i.isCaseSensitive,preserveCase:i.preserveCase}:{};await s.start({forceRevealReplace:!1,seedSearchStringFromSelection:s.getState().searchString.length===0&&t.getOption(41).seedSearchStringFromSelection!=="never"?"single":"none",seedSearchStringFromNonEmptySelection:t.getOption(41).seedSearchStringFromSelection==="selection",seedSearchStringFromGlobalClipboard:!0,shouldFocus:1,shouldAnimate:!0,updateSearchScope:(i==null?void 0:i.findInSelection)||!1,loop:t.getOption(41).loop},r),s.setGlobalBufferTerm(s.getState().searchString)}}}class dnt extends qe{constructor(){super({id:Hi.StartFindWithSelection,label:v("startFindWithSelectionAction","Find With Selection"),alias:"Find With Selection",precondition:void 0,kbOpts:{kbExpr:null,primary:0,mac:{primary:2083},weight:100}})}async run(e,t){const i=mo.get(t);i&&(await i.start({forceRevealReplace:!1,seedSearchStringFromSelection:"multiple",seedSearchStringFromNonEmptySelection:!1,seedSearchStringFromGlobalClipboard:!1,shouldFocus:0,shouldAnimate:!0,updateSearchScope:!1,loop:t.getOption(41).loop}),i.setGlobalBufferTerm(i.getState().searchString))}}class yve extends qe{async run(e,t){const i=mo.get(t);i&&!this._run(i)&&(await i.start({forceRevealReplace:!1,seedSearchStringFromSelection:i.getState().searchString.length===0&&t.getOption(41).seedSearchStringFromSelection!=="never"?"single":"none",seedSearchStringFromNonEmptySelection:t.getOption(41).seedSearchStringFromSelection==="selection",seedSearchStringFromGlobalClipboard:!0,shouldFocus:0,shouldAnimate:!0,updateSearchScope:!1,loop:t.getOption(41).loop}),this._run(i))}}class fnt extends yve{constructor(){super({id:Hi.NextMatchFindAction,label:v("findNextMatchAction","Find Next"),alias:"Find Next",precondition:void 0,kbOpts:[{kbExpr:$.focus,primary:61,mac:{primary:2085,secondary:[61]},weight:100},{kbExpr:ke.and($.focus,P2),primary:3,weight:100}]})}_run(e){return e.moveToNextMatch()?(e.editor.pushUndoStop(),!0):!1}}class gnt extends yve{constructor(){super({id:Hi.PreviousMatchFindAction,label:v("findPreviousMatchAction","Find Previous"),alias:"Find Previous",precondition:void 0,kbOpts:[{kbExpr:$.focus,primary:1085,mac:{primary:3109,secondary:[1085]},weight:100},{kbExpr:ke.and($.focus,P2),primary:1027,weight:100}]})}_run(e){return e.moveToPrevMatch()}}class pnt extends qe{constructor(){super({id:Hi.GoToMatchFindAction,label:v("findMatchAction.goToMatch","Go to Match..."),alias:"Go to Match...",precondition:ug}),this._highlightDecorations=[]}run(e,t,i){const s=mo.get(t);if(!s)return;const r=s.getState().matchesCount;if(r<1){e.get(is).notify({severity:ZO.Warning,message:v("findMatchAction.noResults","No matches. Try searching for something else.")});return}const a=e.get(Uu).createInputBox();a.placeholder=v("findMatchAction.inputPlaceHolder","Type a number to go to a specific match (between 1 and {0})",r);const l=u=>{const h=parseInt(u);if(isNaN(h))return;const d=s.getState().matchesCount;if(h>0&&h<=d)return h-1;if(h<0&&h>=-d)return d+h},c=u=>{const h=l(u);if(typeof h=="number"){a.validationMessage=void 0,s.goToMatch(h);const d=s.getState().currentMatch;d&&this.addDecorations(t,d)}else a.validationMessage=v("findMatchAction.inputValidationMessage","Please type a number between 1 and {0}",s.getState().matchesCount),this.clearDecorations(t)};a.onDidChangeValue(u=>{c(u)}),a.onDidAccept(()=>{const u=l(a.value);typeof u=="number"?(s.goToMatch(u),a.hide()):a.validationMessage=v("findMatchAction.inputValidationMessage","Please type a number between 1 and {0}",s.getState().matchesCount)}),a.onDidHide(()=>{this.clearDecorations(t),a.dispose()}),a.show()}clearDecorations(e){e.changeDecorations(t=>{this._highlightDecorations=t.deltaDecorations(this._highlightDecorations,[])})}addDecorations(e,t){e.changeDecorations(i=>{this._highlightDecorations=i.deltaDecorations(this._highlightDecorations,[{range:t,options:{description:"find-match-quick-access-range-highlight",className:"rangeHighlight",isWholeLine:!0}},{range:t,options:{description:"find-match-quick-access-range-highlight-overview",overviewRuler:{color:Sn(Fpe),position:el.Full}}}])})}}class Cve extends qe{async run(e,t){const i=mo.get(t);if(!i)return;const s=oV(t,"single",!1);s&&i.setSearchString(s),this._run(i)||(await i.start({forceRevealReplace:!1,seedSearchStringFromSelection:"none",seedSearchStringFromNonEmptySelection:!1,seedSearchStringFromGlobalClipboard:!1,shouldFocus:0,shouldAnimate:!0,updateSearchScope:!1,loop:t.getOption(41).loop}),this._run(i))}}class mnt extends Cve{constructor(){super({id:Hi.NextSelectionMatchFindAction,label:v("nextSelectionMatchFindAction","Find Next Selection"),alias:"Find Next Selection",precondition:void 0,kbOpts:{kbExpr:$.focus,primary:2109,weight:100}})}_run(e){return e.moveToNextMatch()}}class _nt extends Cve{constructor(){super({id:Hi.PreviousSelectionMatchFindAction,label:v("previousSelectionMatchFindAction","Find Previous Selection"),alias:"Find Previous Selection",precondition:void 0,kbOpts:{kbExpr:$.focus,primary:3133,weight:100}})}_run(e){return e.moveToPrevMatch()}}const vnt=Fge(new Oge({id:Hi.StartFindReplaceAction,label:v("startReplace","Replace"),alias:"Replace",precondition:ke.or($.focus,ke.has("editorIsOpen")),kbOpts:{kbExpr:null,primary:2086,mac:{primary:2596},weight:100},menuOpts:{menuId:B.MenubarEditMenu,group:"3_find",title:v({key:"miReplace",comment:["&& denotes a mnemonic"]},"&&Replace"),order:2}}));vnt.addImplementation(0,(n,e,t)=>{if(!e.hasModel()||e.getOption(90))return!1;const i=mo.get(e);if(!i)return!1;const s=e.getSelection(),r=i.isFindInputFocused(),o=!s.isEmpty()&&s.startLineNumber===s.endLineNumber&&e.getOption(41).seedSearchStringFromSelection!=="never"&&!r,a=r||o?2:1;return i.start({forceRevealReplace:!0,seedSearchStringFromSelection:o?"single":"none",seedSearchStringFromNonEmptySelection:e.getOption(41).seedSearchStringFromSelection==="selection",seedSearchStringFromGlobalClipboard:e.getOption(41).seedSearchStringFromSelection!=="never",shouldFocus:a,shouldAnimate:!0,updateSearchScope:!1,loop:e.getOption(41).loop})});ti(mo.ID,aV,0);Ae(hnt);Ae(dnt);Ae(fnt);Ae(gnt);Ae(pnt);Ae(mnt);Ae(_nt);const ju=Ks.bindToContribution(mo.get);Be(new ju({id:Hi.CloseFindWidgetCommand,precondition:ug,handler:n=>n.closeFindWidget(),kbOpts:{weight:105,kbExpr:ke.and($.focus,ke.not("isComposing")),primary:9,secondary:[1033]}}));Be(new ju({id:Hi.ToggleCaseSensitiveCommand,precondition:void 0,handler:n=>n.toggleCaseSensitive(),kbOpts:{weight:105,kbExpr:$.focus,primary:WI.primary,mac:WI.mac,win:WI.win,linux:WI.linux}}));Be(new ju({id:Hi.ToggleWholeWordCommand,precondition:void 0,handler:n=>n.toggleWholeWords(),kbOpts:{weight:105,kbExpr:$.focus,primary:VI.primary,mac:VI.mac,win:VI.win,linux:VI.linux}}));Be(new ju({id:Hi.ToggleRegexCommand,precondition:void 0,handler:n=>n.toggleRegex(),kbOpts:{weight:105,kbExpr:$.focus,primary:HI.primary,mac:HI.mac,win:HI.win,linux:HI.linux}}));Be(new ju({id:Hi.ToggleSearchScopeCommand,precondition:void 0,handler:n=>n.toggleSearchScope(),kbOpts:{weight:105,kbExpr:$.focus,primary:$I.primary,mac:$I.mac,win:$I.win,linux:$I.linux}}));Be(new ju({id:Hi.TogglePreserveCaseCommand,precondition:void 0,handler:n=>n.togglePreserveCase(),kbOpts:{weight:105,kbExpr:$.focus,primary:zI.primary,mac:zI.mac,win:zI.win,linux:zI.linux}}));Be(new ju({id:Hi.ReplaceOneAction,precondition:ug,handler:n=>n.replace(),kbOpts:{weight:105,kbExpr:$.focus,primary:3094}}));Be(new ju({id:Hi.ReplaceOneAction,precondition:ug,handler:n=>n.replace(),kbOpts:{weight:105,kbExpr:ke.and($.focus,oG),primary:3}}));Be(new ju({id:Hi.ReplaceAllAction,precondition:ug,handler:n=>n.replaceAll(),kbOpts:{weight:105,kbExpr:$.focus,primary:2563}}));Be(new ju({id:Hi.ReplaceAllAction,precondition:ug,handler:n=>n.replaceAll(),kbOpts:{weight:105,kbExpr:ke.and($.focus,oG),primary:void 0,mac:{primary:2051}}}));Be(new ju({id:Hi.SelectAllMatchesAction,precondition:ug,handler:n=>n.selectAllMatches(),kbOpts:{weight:105,kbExpr:$.focus,primary:515}}));const bnt={0:" ",1:"u",2:"r"},bne=65535,eu=16777215,yne=4278190080;class V3{constructor(e){const t=Math.ceil(e/32);this._states=new Uint32Array(t)}get(e){const t=e/32|0,i=e%32;return(this._states[t]&1<<i)!==0}set(e,t){const i=e/32|0,s=e%32,r=this._states[i];t?this._states[i]=r|1<<s:this._states[i]=r&~(1<<s)}}class Ra{constructor(e,t,i){if(e.length!==t.length||e.length>bne)throw new Error("invalid startIndexes or endIndexes size");this._startIndexes=e,this._endIndexes=t,this._collapseStates=new V3(e.length),this._userDefinedStates=new V3(e.length),this._recoveredStates=new V3(e.length),this._types=i,this._parentsComputed=!1}ensureParentIndices(){if(!this._parentsComputed){this._parentsComputed=!0;const e=[],t=(i,s)=>{const r=e[e.length-1];return this.getStartLineNumber(r)<=i&&this.getEndLineNumber(r)>=s};for(let i=0,s=this._startIndexes.length;i<s;i++){const r=this._startIndexes[i],o=this._endIndexes[i];if(r>eu||o>eu)throw new Error("startLineNumber or endLineNumber must not exceed "+eu);for(;e.length>0&&!t(r,o);)e.pop();const a=e.length>0?e[e.length-1]:-1;e.push(i),this._startIndexes[i]=r+((a&255)<<24),this._endIndexes[i]=o+((a&65280)<<16)}}}get length(){return this._startIndexes.length}getStartLineNumber(e){return this._startIndexes[e]&eu}getEndLineNumber(e){return this._endIndexes[e]&eu}getType(e){return this._types?this._types[e]:void 0}hasTypes(){return!!this._types}isCollapsed(e){return this._collapseStates.get(e)}setCollapsed(e,t){this._collapseStates.set(e,t)}isUserDefined(e){return this._userDefinedStates.get(e)}setUserDefined(e,t){return this._userDefinedStates.set(e,t)}isRecovered(e){return this._recoveredStates.get(e)}setRecovered(e,t){return this._recoveredStates.set(e,t)}getSource(e){return this.isUserDefined(e)?1:this.isRecovered(e)?2:0}setSource(e,t){t===1?(this.setUserDefined(e,!0),this.setRecovered(e,!1)):t===2?(this.setUserDefined(e,!1),this.setRecovered(e,!0)):(this.setUserDefined(e,!1),this.setRecovered(e,!1))}setCollapsedAllOfType(e,t){let i=!1;if(this._types)for(let s=0;s<this._types.length;s++)this._types[s]===e&&(this.setCollapsed(s,t),i=!0);return i}toRegion(e){return new ynt(this,e)}getParentIndex(e){this.ensureParentIndices();const t=((this._startIndexes[e]&yne)>>>24)+((this._endIndexes[e]&yne)>>>16);return t===bne?-1:t}contains(e,t){return this.getStartLineNumber(e)<=t&&this.getEndLineNumber(e)>=t}findIndex(e){let t=0,i=this._startIndexes.length;if(i===0)return-1;for(;t<i;){const s=Math.floor((t+i)/2);e<this.getStartLineNumber(s)?i=s:t=s+1}return t-1}findRange(e){let t=this.findIndex(e);if(t>=0){if(this.getEndLineNumber(t)>=e)return t;for(t=this.getParentIndex(t);t!==-1;){if(this.contains(t,e))return t;t=this.getParentIndex(t)}}return-1}toString(){const e=[];for(let t=0;t<this.length;t++)e[t]=`[${bnt[this.getSource(t)]}${this.isCollapsed(t)?"+":"-"}] ${this.getStartLineNumber(t)}/${this.getEndLineNumber(t)}`;return e.join(", ")}toFoldRange(e){return{startLineNumber:this._startIndexes[e]&eu,endLineNumber:this._endIndexes[e]&eu,type:this._types?this._types[e]:void 0,isCollapsed:this.isCollapsed(e),source:this.getSource(e)}}static fromFoldRanges(e){const t=e.length,i=new Uint32Array(t),s=new Uint32Array(t);let r=[],o=!1;for(let l=0;l<t;l++){const c=e[l];i[l]=c.startLineNumber,s[l]=c.endLineNumber,r.push(c.type),c.type&&(o=!0)}o||(r=void 0);const a=new Ra(i,s,r);for(let l=0;l<t;l++)e[l].isCollapsed&&a.setCollapsed(l,!0),a.setSource(l,e[l].source);return a}static sanitizeAndMerge(e,t,i){i=i??Number.MAX_VALUE;const s=(p,m)=>Array.isArray(p)?_=>_<m?p[_]:void 0:_=>_<m?p.toFoldRange(_):void 0,r=s(e,e.length),o=s(t,t.length);let a=0,l=0,c=r(0),u=o(0);const h=[];let d,f=0;const g=[];for(;c||u;){let p;if(u&&(!c||c.startLineNumber>=u.startLineNumber))c&&c.startLineNumber===u.startLineNumber?(u.source===1?p=u:(p=c,p.isCollapsed=u.isCollapsed&&c.endLineNumber===u.endLineNumber,p.source=0),c=r(++a)):(p=u,u.isCollapsed&&u.source===0&&(p.source=2)),u=o(++l);else{let m=l,_=u;for(;;){if(!_||_.startLineNumber>c.endLineNumber){p=c;break}if(_.source===1&&_.endLineNumber>c.endLineNumber)break;_=o(++m)}c=r(++a)}if(p){for(;d&&d.endLineNumber<p.startLineNumber;)d=h.pop();p.endLineNumber>p.startLineNumber&&p.startLineNumber>f&&p.endLineNumber<=i&&(!d||d.endLineNumber>=p.endLineNumber)&&(g.push(p),f=p.startLineNumber,d&&h.push(d),d=p)}}return g}}class ynt{constructor(e,t){this.ranges=e,this.index=t}get startLineNumber(){return this.ranges.getStartLineNumber(this.index)}get endLineNumber(){return this.ranges.getEndLineNumber(this.index)}get regionIndex(){return this.index}get parentIndex(){return this.ranges.getParentIndex(this.index)}get isCollapsed(){return this.ranges.isCollapsed(this.index)}containedBy(e){return e.startLineNumber<=this.startLineNumber&&e.endLineNumber>=this.endLineNumber}containsLine(e){return this.startLineNumber<=e&&e<=this.endLineNumber}}class Cnt{get regions(){return this._regions}get textModel(){return this._textModel}constructor(e,t){this._updateEventEmitter=new ue,this.onDidChange=this._updateEventEmitter.event,this._textModel=e,this._decorationProvider=t,this._regions=new Ra(new Uint32Array(0),new Uint32Array(0)),this._editorDecorationIds=[]}toggleCollapseState(e){if(!e.length)return;e=e.sort((i,s)=>i.regionIndex-s.regionIndex);const t={};this._decorationProvider.changeDecorations(i=>{let s=0,r=-1,o=-1;const a=l=>{for(;s<l;){const c=this._regions.getEndLineNumber(s),u=this._regions.isCollapsed(s);if(c<=r){const h=this.regions.getSource(s)!==0;i.changeDecorationOptions(this._editorDecorationIds[s],this._decorationProvider.getDecorationOption(u,c<=o,h))}u&&c>o&&(o=c),s++}};for(const l of e){const c=l.regionIndex,u=this._editorDecorationIds[c];if(u&&!t[u]){t[u]=!0,a(c);const h=!this._regions.isCollapsed(c);this._regions.setCollapsed(c,h),r=Math.max(r,this._regions.getEndLineNumber(c))}}a(this._regions.length)}),this._updateEventEmitter.fire({model:this,collapseStateChanged:e})}removeManualRanges(e){const t=new Array,i=s=>{for(const r of e)if(!(r.startLineNumber>s.endLineNumber||s.startLineNumber>r.endLineNumber))return!0;return!1};for(let s=0;s<this._regions.length;s++){const r=this._regions.toFoldRange(s);(r.source===0||!i(r))&&t.push(r)}this.updatePost(Ra.fromFoldRanges(t))}update(e,t=[]){const i=this._currentFoldedOrManualRanges(t),s=Ra.sanitizeAndMerge(e,i,this._textModel.getLineCount());this.updatePost(Ra.fromFoldRanges(s))}updatePost(e){const t=[];let i=-1;for(let s=0,r=e.length;s<r;s++){const o=e.getStartLineNumber(s),a=e.getEndLineNumber(s),l=e.isCollapsed(s),c=e.getSource(s)!==0,u={startLineNumber:o,startColumn:this._textModel.getLineMaxColumn(o),endLineNumber:a,endColumn:this._textModel.getLineMaxColumn(a)+1};t.push({range:u,options:this._decorationProvider.getDecorationOption(l,a<=i,c)}),l&&a>i&&(i=a)}this._decorationProvider.changeDecorations(s=>this._editorDecorationIds=s.deltaDecorations(this._editorDecorationIds,t)),this._regions=e,this._updateEventEmitter.fire({model:this})}_currentFoldedOrManualRanges(e=[]){const t=(s,r)=>{for(const o of e)if(s<o&&o<=r)return!0;return!1},i=[];for(let s=0,r=this._regions.length;s<r;s++){let o=this.regions.isCollapsed(s);const a=this.regions.getSource(s);if(o||a!==0){const l=this._regions.toFoldRange(s),c=this._textModel.getDecorationRange(this._editorDecorationIds[s]);c&&(o&&t(c.startLineNumber,c.endLineNumber)&&(o=!1),i.push({startLineNumber:c.startLineNumber,endLineNumber:c.endLineNumber,type:l.type,isCollapsed:o,source:a}))}}return i}getMemento(){const e=this._currentFoldedOrManualRanges(),t=[],i=this._textModel.getLineCount();for(let s=0,r=e.length;s<r;s++){const o=e[s];if(o.startLineNumber>=o.endLineNumber||o.startLineNumber<1||o.endLineNumber>i)continue;const a=this._getLinesChecksum(o.startLineNumber+1,o.endLineNumber);t.push({startLineNumber:o.startLineNumber,endLineNumber:o.endLineNumber,isCollapsed:o.isCollapsed,source:o.source,checksum:a})}return t.length>0?t:void 0}applyMemento(e){var t,i;if(!Array.isArray(e))return;const s=[],r=this._textModel.getLineCount();for(const a of e){if(a.startLineNumber>=a.endLineNumber||a.startLineNumber<1||a.endLineNumber>r)continue;const l=this._getLinesChecksum(a.startLineNumber+1,a.endLineNumber);(!a.checksum||l===a.checksum)&&s.push({startLineNumber:a.startLineNumber,endLineNumber:a.endLineNumber,type:void 0,isCollapsed:(t=a.isCollapsed)!==null&&t!==void 0?t:!0,source:(i=a.source)!==null&&i!==void 0?i:0})}const o=Ra.sanitizeAndMerge(this._regions,s,r);this.updatePost(Ra.fromFoldRanges(o))}_getLinesChecksum(e,t){return jj(this._textModel.getLineContent(e)+this._textModel.getLineContent(t))%1e6}dispose(){this._decorationProvider.removeDecorations(this._editorDecorationIds)}getAllRegionsAtLine(e,t){const i=[];if(this._regions){let s=this._regions.findRange(e),r=1;for(;s>=0;){const o=this._regions.toRegion(s);(!t||t(o,r))&&i.push(o),r++,s=o.parentIndex}}return i}getRegionAtLine(e){if(this._regions){const t=this._regions.findRange(e);if(t>=0)return this._regions.toRegion(t)}return null}getRegionsInside(e,t){const i=[],s=e?e.regionIndex+1:0,r=e?e.endLineNumber:Number.MAX_VALUE;if(t&&t.length===2){const o=[];for(let a=s,l=this._regions.length;a<l;a++){const c=this._regions.toRegion(a);if(this._regions.getStartLineNumber(a)<r){for(;o.length>0&&!c.containedBy(o[o.length-1]);)o.pop();o.push(c),t(c,o.length)&&i.push(c)}else break}}else for(let o=s,a=this._regions.length;o<a;o++){const l=this._regions.toRegion(o);if(this._regions.getStartLineNumber(o)<r)(!t||t(l))&&i.push(l);else break}return i}}function wve(n,e,t){const i=[];for(const s of t){const r=n.getRegionAtLine(s);if(r){const o=!r.isCollapsed;if(i.push(r),e>1){const a=n.getRegionsInside(r,(l,c)=>l.isCollapsed!==o&&c<e);i.push(...a)}}}n.toggleCollapseState(i)}function VC(n,e,t=Number.MAX_VALUE,i){const s=[];if(i&&i.length>0)for(const r of i){const o=n.getRegionAtLine(r);if(o&&(o.isCollapsed!==e&&s.push(o),t>1)){const a=n.getRegionsInside(o,(l,c)=>l.isCollapsed!==e&&c<t);s.push(...a)}}else{const r=n.getRegionsInside(null,(o,a)=>o.isCollapsed!==e&&a<t);s.push(...r)}n.toggleCollapseState(s)}function Sve(n,e,t,i){const s=[];for(const r of i){const o=n.getAllRegionsAtLine(r,(a,l)=>a.isCollapsed!==e&&l<=t);s.push(...o)}n.toggleCollapseState(s)}function wnt(n,e,t){const i=[];for(const s of t){const r=n.getAllRegionsAtLine(s,o=>o.isCollapsed!==e);r.length>0&&i.push(r[0])}n.toggleCollapseState(i)}function Snt(n,e,t,i){const s=(o,a)=>a===e&&o.isCollapsed!==t&&!i.some(l=>o.containsLine(l)),r=n.getRegionsInside(null,s);n.toggleCollapseState(r)}function kve(n,e,t){const i=[];for(const o of t){const a=n.getAllRegionsAtLine(o,void 0);a.length>0&&i.push(a[0])}const s=o=>i.every(a=>!a.containedBy(o)&&!o.containedBy(a))&&o.isCollapsed!==e,r=n.getRegionsInside(null,s);n.toggleCollapseState(r)}function cG(n,e,t){const i=n.textModel,s=n.regions,r=[];for(let o=s.length-1;o>=0;o--)if(t!==s.isCollapsed(o)){const a=s.getStartLineNumber(o);e.test(i.getLineContent(a))&&r.push(s.toRegion(o))}n.toggleCollapseState(r)}function uG(n,e,t){const i=n.regions,s=[];for(let r=i.length-1;r>=0;r--)t!==i.isCollapsed(r)&&e===i.getType(r)&&s.push(i.toRegion(r));n.toggleCollapseState(s)}function knt(n,e){let t=null;const i=e.getRegionAtLine(n);if(i!==null&&(t=i.startLineNumber,n===t)){const s=i.parentIndex;s!==-1?t=e.regions.getStartLineNumber(s):t=null}return t}function Lnt(n,e){let t=e.getRegionAtLine(n);if(t!==null&&t.startLineNumber===n){if(n!==t.startLineNumber)return t.startLineNumber;{const i=t.parentIndex;let s=0;for(i!==-1&&(s=e.regions.getStartLineNumber(t.parentIndex));t!==null;)if(t.regionIndex>0){if(t=e.regions.toRegion(t.regionIndex-1),t.startLineNumber<=s)return null;if(t.parentIndex===i)return t.startLineNumber}else return null}}else if(e.regions.length>0)for(t=e.regions.toRegion(e.regions.length-1);t!==null;){if(t.startLineNumber<n)return t.startLineNumber;t.regionIndex>0?t=e.regions.toRegion(t.regionIndex-1):t=null}return null}function xnt(n,e){let t=e.getRegionAtLine(n);if(t!==null&&t.startLineNumber===n){const i=t.parentIndex;let s=0;if(i!==-1)s=e.regions.getEndLineNumber(t.parentIndex);else{if(e.regions.length===0)return null;s=e.regions.getEndLineNumber(e.regions.length-1)}for(;t!==null;)if(t.regionIndex<e.regions.length){if(t=e.regions.toRegion(t.regionIndex+1),t.startLineNumber>=s)return null;if(t.parentIndex===i)return t.startLineNumber}else return null}else if(e.regions.length>0)for(t=e.regions.toRegion(0);t!==null;){if(t.startLineNumber>n)return t.startLineNumber;t.regionIndex<e.regions.length?t=e.regions.toRegion(t.regionIndex+1):t=null}return null}class Ent{get onDidChange(){return this._updateEventEmitter.event}get hiddenRanges(){return this._hiddenRanges}constructor(e){this._updateEventEmitter=new ue,this._hasLineChanges=!1,this._foldingModel=e,this._foldingModelListener=e.onDidChange(t=>this.updateHiddenRanges()),this._hiddenRanges=[],e.regions.length&&this.updateHiddenRanges()}notifyChangeModelContent(e){this._hiddenRanges.length&&!this._hasLineChanges&&(this._hasLineChanges=e.changes.some(t=>t.range.endLineNumber!==t.range.startLineNumber||im(t.text)[0]!==0))}updateHiddenRanges(){let e=!1;const t=[];let i=0,s=0,r=Number.MAX_VALUE,o=-1;const a=this._foldingModel.regions;for(;i<a.length;i++){if(!a.isCollapsed(i))continue;const l=a.getStartLineNumber(i)+1,c=a.getEndLineNumber(i);r<=l&&c<=o||(!e&&s<this._hiddenRanges.length&&this._hiddenRanges[s].startLineNumber===l&&this._hiddenRanges[s].endLineNumber===c?(t.push(this._hiddenRanges[s]),s++):(e=!0,t.push(new M(l,1,c,1))),r=l,o=c)}(this._hasLineChanges||e||s<this._hiddenRanges.length)&&this.applyHiddenRanges(t)}applyHiddenRanges(e){this._hiddenRanges=e,this._hasLineChanges=!1,this._updateEventEmitter.fire(e)}hasRanges(){return this._hiddenRanges.length>0}isHidden(e){return Cne(this._hiddenRanges,e)!==null}adjustSelections(e){let t=!1;const i=this._foldingModel.textModel;let s=null;const r=o=>((!s||!Dnt(o,s))&&(s=Cne(this._hiddenRanges,o)),s?s.startLineNumber-1:null);for(let o=0,a=e.length;o<a;o++){let l=e[o];const c=r(l.startLineNumber);c&&(l=l.setStartPosition(c,i.getLineMaxColumn(c)),t=!0);const u=r(l.endLineNumber);u&&(l=l.setEndPosition(u,i.getLineMaxColumn(u)),t=!0),e[o]=l}return t}dispose(){this.hiddenRanges.length>0&&(this._hiddenRanges=[],this._updateEventEmitter.fire(this._hiddenRanges)),this._foldingModelListener&&(this._foldingModelListener.dispose(),this._foldingModelListener=null)}}function Dnt(n,e){return n>=e.startLineNumber&&n<=e.endLineNumber}function Cne(n,e){const t=RL(n,i=>e<i.startLineNumber)-1;return t>=0&&n[t].endLineNumber>=e?n[t]:null}const Int=5e3,Tnt="indent";class hG{constructor(e,t,i){this.editorModel=e,this.languageConfigurationService=t,this.foldingRangesLimit=i,this.id=Tnt}dispose(){}compute(e){const t=this.languageConfigurationService.getLanguageConfiguration(this.editorModel.getLanguageId()).foldingRules,i=t&&!!t.offSide,s=t&&t.markers;return Promise.resolve(Pnt(this.editorModel,i,s,this.foldingRangesLimit))}}let Nnt=class{constructor(e){this._startIndexes=[],this._endIndexes=[],this._indentOccurrences=[],this._length=0,this._foldingRangesLimit=e}insertFirst(e,t,i){if(e>eu||t>eu)return;const s=this._length;this._startIndexes[s]=e,this._endIndexes[s]=t,this._length++,i<1e3&&(this._indentOccurrences[i]=(this._indentOccurrences[i]||0)+1)}toIndentRanges(e){const t=this._foldingRangesLimit.limit;if(this._length<=t){this._foldingRangesLimit.update(this._length,!1);const i=new Uint32Array(this._length),s=new Uint32Array(this._length);for(let r=this._length-1,o=0;r>=0;r--,o++)i[o]=this._startIndexes[r],s[o]=this._endIndexes[r];return new Ra(i,s)}else{this._foldingRangesLimit.update(this._length,t);let i=0,s=this._indentOccurrences.length;for(let l=0;l<this._indentOccurrences.length;l++){const c=this._indentOccurrences[l];if(c){if(c+i>t){s=l;break}i+=c}}const r=e.getOptions().tabSize,o=new Uint32Array(t),a=new Uint32Array(t);for(let l=this._length-1,c=0;l>=0;l--){const u=this._startIndexes[l],h=e.getLineContent(u),d=jO(h,r);(d<s||d===s&&i++<t)&&(o[c]=u,a[c]=this._endIndexes[l],c++)}return new Ra(o,a)}}};const Ant={limit:Int,update:()=>{}};function Pnt(n,e,t,i=Ant){const s=n.getOptions().tabSize,r=new Nnt(i);let o;t&&(o=new RegExp(`(${t.start.source})|(?:${t.end.source})`));const a=[],l=n.getLineCount()+1;a.push({indent:-1,endAbove:l,line:l});for(let c=n.getLineCount();c>0;c--){const u=n.getLineContent(c),h=jO(u,s);let d=a[a.length-1];if(h===-1){e&&(d.endAbove=c);continue}let f;if(o&&(f=u.match(o)))if(f[1]){let g=a.length-1;for(;g>0&&a[g].indent!==-2;)g--;if(g>0){a.length=g+1,d=a[g],r.insertFirst(c,d.line,h),d.line=c,d.indent=h,d.endAbove=c;continue}}else{a.push({indent:-2,endAbove:c,line:c});continue}if(d.indent>h){do a.pop(),d=a[a.length-1];while(d.indent>h);const g=d.endAbove-1;g-c>=1&&r.insertFirst(c,g,h)}d.indent===h?d.endAbove=c:a.push({indent:h,endAbove:c,line:c})}return r.toIndentRanges(n)}const Rnt=U("editor.foldBackground",{light:Je(ep,.3),dark:Je(ep,.3),hcDark:null,hcLight:null},v("foldBackgroundBackground","Background color behind folded ranges. The color must not be opaque so as not to hide underlying decorations."),!0);U("editorGutter.foldingControlForeground",{dark:cc,light:cc,hcDark:cc,hcLight:cc},v("editorGutter.foldingControlForeground","Color of the folding control in the editor gutter."));const O2=Gn("folding-expanded",Pe.chevronDown,v("foldingExpandedIcon","Icon for expanded ranges in the editor glyph margin.")),F2=Gn("folding-collapsed",Pe.chevronRight,v("foldingCollapsedIcon","Icon for collapsed ranges in the editor glyph margin.")),Lve=Gn("folding-manual-collapsed",F2,v("foldingManualCollapedIcon","Icon for manually collapsed ranges in the editor glyph margin.")),xve=Gn("folding-manual-expanded",O2,v("foldingManualExpandedIcon","Icon for manually expanded ranges in the editor glyph margin.")),dG={color:Sn(Rnt),position:sa.Inline};class ss{constructor(e){this.editor=e,this.showFoldingControls="mouseover",this.showFoldingHighlights=!0}getDecorationOption(e,t,i){return t?ss.HIDDEN_RANGE_DECORATION:this.showFoldingControls==="never"?e?this.showFoldingHighlights?ss.NO_CONTROLS_COLLAPSED_HIGHLIGHTED_RANGE_DECORATION:ss.NO_CONTROLS_COLLAPSED_RANGE_DECORATION:ss.NO_CONTROLS_EXPANDED_RANGE_DECORATION:e?i?this.showFoldingHighlights?ss.MANUALLY_COLLAPSED_HIGHLIGHTED_VISUAL_DECORATION:ss.MANUALLY_COLLAPSED_VISUAL_DECORATION:this.showFoldingHighlights?ss.COLLAPSED_HIGHLIGHTED_VISUAL_DECORATION:ss.COLLAPSED_VISUAL_DECORATION:this.showFoldingControls==="mouseover"?i?ss.MANUALLY_EXPANDED_AUTO_HIDE_VISUAL_DECORATION:ss.EXPANDED_AUTO_HIDE_VISUAL_DECORATION:i?ss.MANUALLY_EXPANDED_VISUAL_DECORATION:ss.EXPANDED_VISUAL_DECORATION}changeDecorations(e){return this.editor.changeDecorations(e)}removeDecorations(e){this.editor.removeDecorations(e)}}ss.COLLAPSED_VISUAL_DECORATION=yt.register({description:"folding-collapsed-visual-decoration",stickiness:0,afterContentClassName:"inline-folded",isWholeLine:!0,firstLineDecorationClassName:nt.asClassName(F2)});ss.COLLAPSED_HIGHLIGHTED_VISUAL_DECORATION=yt.register({description:"folding-collapsed-highlighted-visual-decoration",stickiness:0,afterContentClassName:"inline-folded",className:"folded-background",minimap:dG,isWholeLine:!0,firstLineDecorationClassName:nt.asClassName(F2)});ss.MANUALLY_COLLAPSED_VISUAL_DECORATION=yt.register({description:"folding-manually-collapsed-visual-decoration",stickiness:0,afterContentClassName:"inline-folded",isWholeLine:!0,firstLineDecorationClassName:nt.asClassName(Lve)});ss.MANUALLY_COLLAPSED_HIGHLIGHTED_VISUAL_DECORATION=yt.register({description:"folding-manually-collapsed-highlighted-visual-decoration",stickiness:0,afterContentClassName:"inline-folded",className:"folded-background",minimap:dG,isWholeLine:!0,firstLineDecorationClassName:nt.asClassName(Lve)});ss.NO_CONTROLS_COLLAPSED_RANGE_DECORATION=yt.register({description:"folding-no-controls-range-decoration",stickiness:0,afterContentClassName:"inline-folded",isWholeLine:!0});ss.NO_CONTROLS_COLLAPSED_HIGHLIGHTED_RANGE_DECORATION=yt.register({description:"folding-no-controls-range-decoration",stickiness:0,afterContentClassName:"inline-folded",className:"folded-background",minimap:dG,isWholeLine:!0});ss.EXPANDED_VISUAL_DECORATION=yt.register({description:"folding-expanded-visual-decoration",stickiness:1,isWholeLine:!0,firstLineDecorationClassName:"alwaysShowFoldIcons "+nt.asClassName(O2)});ss.EXPANDED_AUTO_HIDE_VISUAL_DECORATION=yt.register({description:"folding-expanded-auto-hide-visual-decoration",stickiness:1,isWholeLine:!0,firstLineDecorationClassName:nt.asClassName(O2)});ss.MANUALLY_EXPANDED_VISUAL_DECORATION=yt.register({description:"folding-manually-expanded-visual-decoration",stickiness:0,isWholeLine:!0,firstLineDecorationClassName:"alwaysShowFoldIcons "+nt.asClassName(xve)});ss.MANUALLY_EXPANDED_AUTO_HIDE_VISUAL_DECORATION=yt.register({description:"folding-manually-expanded-auto-hide-visual-decoration",stickiness:0,isWholeLine:!0,firstLineDecorationClassName:nt.asClassName(xve)});ss.NO_CONTROLS_EXPANDED_RANGE_DECORATION=yt.register({description:"folding-no-controls-range-decoration",stickiness:0,isWholeLine:!0});ss.HIDDEN_RANGE_DECORATION=yt.register({description:"folding-hidden-range-decoration",stickiness:1});const Mnt={},Ont="syntax";class fG{constructor(e,t,i,s,r){this.editorModel=e,this.providers=t,this.handleFoldingRangesChange=i,this.foldingRangesLimit=s,this.fallbackRangeProvider=r,this.id=Ont,this.disposables=new xe,r&&this.disposables.add(r);for(const o of t)typeof o.onDidChange=="function"&&this.disposables.add(o.onDidChange(i))}compute(e){return Fnt(this.providers,this.editorModel,e).then(t=>{var i,s;return t?Wnt(t,this.foldingRangesLimit):(s=(i=this.fallbackRangeProvider)===null||i===void 0?void 0:i.compute(e))!==null&&s!==void 0?s:null})}dispose(){this.disposables.dispose()}}function Fnt(n,e,t){let i=null;const s=n.map((r,o)=>Promise.resolve(r.provideFoldingRanges(e,Mnt,t)).then(a=>{if(!t.isCancellationRequested&&Array.isArray(a)){Array.isArray(i)||(i=[]);const l=e.getLineCount();for(const c of a)c.start>0&&c.end>c.start&&c.end<=l&&i.push({start:c.start,end:c.end,rank:o,kind:c.kind})}},Jn));return Promise.all(s).then(r=>i)}class Bnt{constructor(e){this._startIndexes=[],this._endIndexes=[],this._nestingLevels=[],this._nestingLevelCounts=[],this._types=[],this._length=0,this._foldingRangesLimit=e}add(e,t,i,s){if(e>eu||t>eu)return;const r=this._length;this._startIndexes[r]=e,this._endIndexes[r]=t,this._nestingLevels[r]=s,this._types[r]=i,this._length++,s<30&&(this._nestingLevelCounts[s]=(this._nestingLevelCounts[s]||0)+1)}toIndentRanges(){const e=this._foldingRangesLimit.limit;if(this._length<=e){this._foldingRangesLimit.update(this._length,!1);const t=new Uint32Array(this._length),i=new Uint32Array(this._length);for(let s=0;s<this._length;s++)t[s]=this._startIndexes[s],i[s]=this._endIndexes[s];return new Ra(t,i,this._types)}else{this._foldingRangesLimit.update(this._length,e);let t=0,i=this._nestingLevelCounts.length;for(let a=0;a<this._nestingLevelCounts.length;a++){const l=this._nestingLevelCounts[a];if(l){if(l+t>e){i=a;break}t+=l}}const s=new Uint32Array(e),r=new Uint32Array(e),o=[];for(let a=0,l=0;a<this._length;a++){const c=this._nestingLevels[a];(c<i||c===i&&t++<e)&&(s[l]=this._startIndexes[a],r[l]=this._endIndexes[a],o[l]=this._types[a],l++)}return new Ra(s,r,o)}}}function Wnt(n,e){const t=n.sort((o,a)=>{let l=o.start-a.start;return l===0&&(l=o.rank-a.rank),l}),i=new Bnt(e);let s;const r=[];for(const o of t)if(!s)s=o,i.add(o.start,o.end,o.kind&&o.kind.value,r.length);else if(o.start>s.start)if(o.end<=s.end)r.push(s),s=o,i.add(o.start,o.end,o.kind&&o.kind.value,r.length);else{if(o.start>s.end){do s=r.pop();while(s&&o.start>s.end);s&&r.push(s),s=o}i.add(o.start,o.end,o.kind&&o.kind.value,r.length)}return i.toIndentRanges()}var Vnt=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},jw=function(n,e){return function(t,i){e(t,i,n)}},L0;const Pr=new ze("foldingEnabled",!1);let Sd=L0=class extends pe{static get(e){return e.getContribution(L0.ID)}static getFoldingRangeProviders(e,t){var i,s;const r=e.foldingRangeProvider.ordered(t);return(s=(i=L0._foldingRangeSelector)===null||i===void 0?void 0:i.call(L0,r,t))!==null&&s!==void 0?s:r}constructor(e,t,i,s,r,o){super(),this.contextKeyService=t,this.languageConfigurationService=i,this.languageFeaturesService=o,this.localToDispose=this._register(new xe),this.editor=e,this._foldingLimitReporter=new Eve(e);const a=this.editor.getOptions();this._isEnabled=a.get(43),this._useFoldingProviders=a.get(44)!=="indentation",this._unfoldOnClickAfterEndOfLine=a.get(48),this._restoringViewState=!1,this._currentModelHasFoldedImports=!1,this._foldingImportsByDefault=a.get(46),this.updateDebounceInfo=r.for(o.foldingRangeProvider,"Folding",{min:200}),this.foldingModel=null,this.hiddenRangeModel=null,this.rangeProvider=null,this.foldingRegionPromise=null,this.foldingModelPromise=null,this.updateScheduler=null,this.cursorChangedScheduler=null,this.mouseDownInfo=null,this.foldingDecorationProvider=new ss(e),this.foldingDecorationProvider.showFoldingControls=a.get(109),this.foldingDecorationProvider.showFoldingHighlights=a.get(45),this.foldingEnabled=Pr.bindTo(this.contextKeyService),this.foldingEnabled.set(this._isEnabled),this._register(this.editor.onDidChangeModel(()=>this.onModelChanged())),this._register(this.editor.onDidChangeConfiguration(l=>{if(l.hasChanged(43)&&(this._isEnabled=this.editor.getOptions().get(43),this.foldingEnabled.set(this._isEnabled),this.onModelChanged()),l.hasChanged(47)&&this.onModelChanged(),l.hasChanged(109)||l.hasChanged(45)){const c=this.editor.getOptions();this.foldingDecorationProvider.showFoldingControls=c.get(109),this.foldingDecorationProvider.showFoldingHighlights=c.get(45),this.triggerFoldingModelChanged()}l.hasChanged(44)&&(this._useFoldingProviders=this.editor.getOptions().get(44)!=="indentation",this.onFoldingStrategyChanged()),l.hasChanged(48)&&(this._unfoldOnClickAfterEndOfLine=this.editor.getOptions().get(48)),l.hasChanged(46)&&(this._foldingImportsByDefault=this.editor.getOptions().get(46))})),this.onModelChanged()}saveViewState(){const e=this.editor.getModel();if(!e||!this._isEnabled||e.isTooLargeForTokenization())return{};if(this.foldingModel){const t=this.foldingModel.getMemento(),i=this.rangeProvider?this.rangeProvider.id:void 0;return{collapsedRegions:t,lineCount:e.getLineCount(),provider:i,foldedImports:this._currentModelHasFoldedImports}}}restoreViewState(e){const t=this.editor.getModel();if(!(!t||!this._isEnabled||t.isTooLargeForTokenization()||!this.hiddenRangeModel)&&e&&(this._currentModelHasFoldedImports=!!e.foldedImports,e.collapsedRegions&&e.collapsedRegions.length>0&&this.foldingModel)){this._restoringViewState=!0;try{this.foldingModel.applyMemento(e.collapsedRegions)}finally{this._restoringViewState=!1}}}onModelChanged(){this.localToDispose.clear();const e=this.editor.getModel();!this._isEnabled||!e||e.isTooLargeForTokenization()||(this._currentModelHasFoldedImports=!1,this.foldingModel=new Cnt(e,this.foldingDecorationProvider),this.localToDispose.add(this.foldingModel),this.hiddenRangeModel=new Ent(this.foldingModel),this.localToDispose.add(this.hiddenRangeModel),this.localToDispose.add(this.hiddenRangeModel.onDidChange(t=>this.onHiddenRangesChanges(t))),this.updateScheduler=new Sc(this.updateDebounceInfo.get(e)),this.cursorChangedScheduler=new Ei(()=>this.revealCursor(),200),this.localToDispose.add(this.cursorChangedScheduler),this.localToDispose.add(this.languageFeaturesService.foldingRangeProvider.onDidChange(()=>this.onFoldingStrategyChanged())),this.localToDispose.add(this.editor.onDidChangeModelLanguageConfiguration(()=>this.onFoldingStrategyChanged())),this.localToDispose.add(this.editor.onDidChangeModelContent(t=>this.onDidChangeModelContent(t))),this.localToDispose.add(this.editor.onDidChangeCursorPosition(()=>this.onCursorPositionChanged())),this.localToDispose.add(this.editor.onMouseDown(t=>this.onEditorMouseDown(t))),this.localToDispose.add(this.editor.onMouseUp(t=>this.onEditorMouseUp(t))),this.localToDispose.add({dispose:()=>{var t,i;this.foldingRegionPromise&&(this.foldingRegionPromise.cancel(),this.foldingRegionPromise=null),(t=this.updateScheduler)===null||t===void 0||t.cancel(),this.updateScheduler=null,this.foldingModel=null,this.foldingModelPromise=null,this.hiddenRangeModel=null,this.cursorChangedScheduler=null,(i=this.rangeProvider)===null||i===void 0||i.dispose(),this.rangeProvider=null}}),this.triggerFoldingModelChanged())}onFoldingStrategyChanged(){var e;(e=this.rangeProvider)===null||e===void 0||e.dispose(),this.rangeProvider=null,this.triggerFoldingModelChanged()}getRangeProvider(e){if(this.rangeProvider)return this.rangeProvider;const t=new hG(e,this.languageConfigurationService,this._foldingLimitReporter);if(this.rangeProvider=t,this._useFoldingProviders&&this.foldingModel){const i=L0.getFoldingRangeProviders(this.languageFeaturesService,e);i.length>0&&(this.rangeProvider=new fG(e,i,()=>this.triggerFoldingModelChanged(),this._foldingLimitReporter,t))}return this.rangeProvider}getFoldingModel(){return this.foldingModelPromise}onDidChangeModelContent(e){var t;(t=this.hiddenRangeModel)===null||t===void 0||t.notifyChangeModelContent(e),this.triggerFoldingModelChanged()}triggerFoldingModelChanged(){this.updateScheduler&&(this.foldingRegionPromise&&(this.foldingRegionPromise.cancel(),this.foldingRegionPromise=null),this.foldingModelPromise=this.updateScheduler.trigger(()=>{const e=this.foldingModel;if(!e)return null;const t=new Nr,i=this.getRangeProvider(e.textModel),s=this.foldingRegionPromise=Ns(r=>i.compute(r));return s.then(r=>{if(r&&s===this.foldingRegionPromise){let o;if(this._foldingImportsByDefault&&!this._currentModelHasFoldedImports){const u=r.setCollapsedAllOfType(lo.Imports.value,!0);u&&(o=Au.capture(this.editor),this._currentModelHasFoldedImports=u)}const a=this.editor.getSelections(),l=a?a.map(u=>u.startLineNumber):[];e.update(r,l),o==null||o.restore(this.editor);const c=this.updateDebounceInfo.update(e.textModel,t.elapsed());this.updateScheduler&&(this.updateScheduler.defaultDelay=c)}return e})}).then(void 0,e=>(vt(e),null)))}onHiddenRangesChanges(e){if(this.hiddenRangeModel&&e.length&&!this._restoringViewState){const t=this.editor.getSelections();t&&this.hiddenRangeModel.adjustSelections(t)&&this.editor.setSelections(t)}this.editor.setHiddenAreas(e,this)}onCursorPositionChanged(){this.hiddenRangeModel&&this.hiddenRangeModel.hasRanges()&&this.cursorChangedScheduler.schedule()}revealCursor(){const e=this.getFoldingModel();e&&e.then(t=>{if(t){const i=this.editor.getSelections();if(i&&i.length>0){const s=[];for(const r of i){const o=r.selectionStartLineNumber;this.hiddenRangeModel&&this.hiddenRangeModel.isHidden(o)&&s.push(...t.getAllRegionsAtLine(o,a=>a.isCollapsed&&o>a.startLineNumber))}s.length&&(t.toggleCollapseState(s),this.reveal(i[0].getPosition()))}}}).then(void 0,vt)}onEditorMouseDown(e){if(this.mouseDownInfo=null,!this.hiddenRangeModel||!e.target||!e.target.range||!e.event.leftButton&&!e.event.middleButton)return;const t=e.target.range;let i=!1;switch(e.target.type){case 4:{const s=e.target.detail,r=e.target.element.offsetLeft;if(s.offsetX-r<4)return;i=!0;break}case 7:{if(this._unfoldOnClickAfterEndOfLine&&this.hiddenRangeModel.hasRanges()&&!e.target.detail.isAfterLines)break;return}case 6:{if(this.hiddenRangeModel.hasRanges()){const s=this.editor.getModel();if(s&&t.startColumn===s.getLineMaxColumn(t.startLineNumber))break}return}default:return}this.mouseDownInfo={lineNumber:t.startLineNumber,iconClicked:i}}onEditorMouseUp(e){const t=this.foldingModel;if(!t||!this.mouseDownInfo||!e.target)return;const i=this.mouseDownInfo.lineNumber,s=this.mouseDownInfo.iconClicked,r=e.target.range;if(!r||r.startLineNumber!==i)return;if(s){if(e.target.type!==4)return}else{const a=this.editor.getModel();if(!a||r.startColumn!==a.getLineMaxColumn(i))return}const o=t.getRegionAtLine(i);if(o&&o.startLineNumber===i){const a=o.isCollapsed;if(s||a){const l=e.event.altKey;let c=[];if(l){const u=d=>!d.containedBy(o)&&!o.containedBy(d),h=t.getRegionsInside(null,u);for(const d of h)d.isCollapsed&&c.push(d);c.length===0&&(c=h)}else{const u=e.event.middleButton||e.event.shiftKey;if(u)for(const h of t.getRegionsInside(o))h.isCollapsed===a&&c.push(h);(a||!u||c.length===0)&&c.push(o)}t.toggleCollapseState(c),this.reveal({lineNumber:i,column:1})}}}reveal(e){this.editor.revealPositionInCenterIfOutsideViewport(e,0)}};Sd.ID="editor.contrib.folding";Sd=L0=Vnt([jw(1,ft),jw(2,Bi),jw(3,is),jw(4,Ul),jw(5,Ge)],Sd);class Eve{constructor(e){this.editor=e,this._onDidChange=new ue,this._computed=0,this._limited=!1}get limit(){return this.editor.getOptions().get(47)}update(e,t){(e!==this._computed||t!==this._limited)&&(this._computed=e,this._limited=t,this._onDidChange.fire())}}class Yr extends qe{runEditorCommand(e,t,i){const s=e.get(Bi),r=Sd.get(t);if(!r)return;const o=r.getFoldingModel();if(o)return this.reportTelemetry(e,t),o.then(a=>{if(a){this.invoke(r,a,t,i,s);const l=t.getSelection();l&&r.reveal(l.getStartPosition())}})}getSelectedLines(e){const t=e.getSelections();return t?t.map(i=>i.startLineNumber):[]}getLineNumbers(e,t){return e&&e.selectionLines?e.selectionLines.map(i=>i+1):this.getSelectedLines(t)}run(e,t){}}function Dve(n){if(!ea(n)){if(!ao(n))return!1;const e=n;if(!ea(e.levels)&&!qp(e.levels)||!ea(e.direction)&&!uo(e.direction)||!ea(e.selectionLines)&&(!Array.isArray(e.selectionLines)||!e.selectionLines.every(qp)))return!1}return!0}class Hnt extends Yr{constructor(){super({id:"editor.unfold",label:v("unfoldAction.label","Unfold"),alias:"Unfold",precondition:Pr,kbOpts:{kbExpr:$.editorTextFocus,primary:3166,mac:{primary:2654},weight:100},metadata:{description:"Unfold the content in the editor",args:[{name:"Unfold editor argument",description:`Property-value pairs that can be passed through this argument: + * 'levels': Number of levels to unfold. If not set, defaults to 1. + * 'direction': If 'up', unfold given number of levels up otherwise unfolds down. + * 'selectionLines': Array of the start lines (0-based) of the editor selections to apply the unfold action to. If not set, the active selection(s) will be used. + `,constraint:Dve,schema:{type:"object",properties:{levels:{type:"number",default:1},direction:{type:"string",enum:["up","down"],default:"down"},selectionLines:{type:"array",items:{type:"number"}}}}}]}})}invoke(e,t,i,s){const r=s&&s.levels||1,o=this.getLineNumbers(s,i);s&&s.direction==="up"?Sve(t,!1,r,o):VC(t,!1,r,o)}}class $nt extends Yr{constructor(){super({id:"editor.unfoldRecursively",label:v("unFoldRecursivelyAction.label","Unfold Recursively"),alias:"Unfold Recursively",precondition:Pr,kbOpts:{kbExpr:$.editorTextFocus,primary:ws(2089,2142),weight:100}})}invoke(e,t,i,s){VC(t,!1,Number.MAX_VALUE,this.getSelectedLines(i))}}class znt extends Yr{constructor(){super({id:"editor.fold",label:v("foldAction.label","Fold"),alias:"Fold",precondition:Pr,kbOpts:{kbExpr:$.editorTextFocus,primary:3164,mac:{primary:2652},weight:100},metadata:{description:"Fold the content in the editor",args:[{name:"Fold editor argument",description:`Property-value pairs that can be passed through this argument: + * 'levels': Number of levels to fold. + * 'direction': If 'up', folds given number of levels up otherwise folds down. + * 'selectionLines': Array of the start lines (0-based) of the editor selections to apply the fold action to. If not set, the active selection(s) will be used. + If no levels or direction is set, folds the region at the locations or if already collapsed, the first uncollapsed parent instead. + `,constraint:Dve,schema:{type:"object",properties:{levels:{type:"number"},direction:{type:"string",enum:["up","down"]},selectionLines:{type:"array",items:{type:"number"}}}}}]}})}invoke(e,t,i,s){const r=this.getLineNumbers(s,i),o=s&&s.levels,a=s&&s.direction;typeof o!="number"&&typeof a!="string"?wnt(t,!0,r):a==="up"?Sve(t,!0,o||1,r):VC(t,!0,o||1,r)}}class Unt extends Yr{constructor(){super({id:"editor.toggleFold",label:v("toggleFoldAction.label","Toggle Fold"),alias:"Toggle Fold",precondition:Pr,kbOpts:{kbExpr:$.editorTextFocus,primary:ws(2089,2090),weight:100}})}invoke(e,t,i){const s=this.getSelectedLines(i);wve(t,1,s)}}class jnt extends Yr{constructor(){super({id:"editor.foldRecursively",label:v("foldRecursivelyAction.label","Fold Recursively"),alias:"Fold Recursively",precondition:Pr,kbOpts:{kbExpr:$.editorTextFocus,primary:ws(2089,2140),weight:100}})}invoke(e,t,i){const s=this.getSelectedLines(i);VC(t,!0,Number.MAX_VALUE,s)}}class qnt extends Yr{constructor(){super({id:"editor.foldAllBlockComments",label:v("foldAllBlockComments.label","Fold All Block Comments"),alias:"Fold All Block Comments",precondition:Pr,kbOpts:{kbExpr:$.editorTextFocus,primary:ws(2089,2138),weight:100}})}invoke(e,t,i,s,r){if(t.regions.hasTypes())uG(t,lo.Comment.value,!0);else{const o=i.getModel();if(!o)return;const a=r.getLanguageConfiguration(o.getLanguageId()).comments;if(a&&a.blockCommentStartToken){const l=new RegExp("^\\s*"+Qa(a.blockCommentStartToken));cG(t,l,!0)}}}}class Knt extends Yr{constructor(){super({id:"editor.foldAllMarkerRegions",label:v("foldAllMarkerRegions.label","Fold All Regions"),alias:"Fold All Regions",precondition:Pr,kbOpts:{kbExpr:$.editorTextFocus,primary:ws(2089,2077),weight:100}})}invoke(e,t,i,s,r){if(t.regions.hasTypes())uG(t,lo.Region.value,!0);else{const o=i.getModel();if(!o)return;const a=r.getLanguageConfiguration(o.getLanguageId()).foldingRules;if(a&&a.markers&&a.markers.start){const l=new RegExp(a.markers.start);cG(t,l,!0)}}}}class Gnt extends Yr{constructor(){super({id:"editor.unfoldAllMarkerRegions",label:v("unfoldAllMarkerRegions.label","Unfold All Regions"),alias:"Unfold All Regions",precondition:Pr,kbOpts:{kbExpr:$.editorTextFocus,primary:ws(2089,2078),weight:100}})}invoke(e,t,i,s,r){if(t.regions.hasTypes())uG(t,lo.Region.value,!1);else{const o=i.getModel();if(!o)return;const a=r.getLanguageConfiguration(o.getLanguageId()).foldingRules;if(a&&a.markers&&a.markers.start){const l=new RegExp(a.markers.start);cG(t,l,!1)}}}}class Ynt extends Yr{constructor(){super({id:"editor.foldAllExcept",label:v("foldAllExcept.label","Fold All Except Selected"),alias:"Fold All Except Selected",precondition:Pr,kbOpts:{kbExpr:$.editorTextFocus,primary:ws(2089,2136),weight:100}})}invoke(e,t,i){const s=this.getSelectedLines(i);kve(t,!0,s)}}class Znt extends Yr{constructor(){super({id:"editor.unfoldAllExcept",label:v("unfoldAllExcept.label","Unfold All Except Selected"),alias:"Unfold All Except Selected",precondition:Pr,kbOpts:{kbExpr:$.editorTextFocus,primary:ws(2089,2134),weight:100}})}invoke(e,t,i){const s=this.getSelectedLines(i);kve(t,!1,s)}}class Xnt extends Yr{constructor(){super({id:"editor.foldAll",label:v("foldAllAction.label","Fold All"),alias:"Fold All",precondition:Pr,kbOpts:{kbExpr:$.editorTextFocus,primary:ws(2089,2069),weight:100}})}invoke(e,t,i){VC(t,!0)}}class Qnt extends Yr{constructor(){super({id:"editor.unfoldAll",label:v("unfoldAllAction.label","Unfold All"),alias:"Unfold All",precondition:Pr,kbOpts:{kbExpr:$.editorTextFocus,primary:ws(2089,2088),weight:100}})}invoke(e,t,i){VC(t,!1)}}class Z_ extends Yr{getFoldingLevel(){return parseInt(this.id.substr(Z_.ID_PREFIX.length))}invoke(e,t,i){Snt(t,this.getFoldingLevel(),!0,this.getSelectedLines(i))}}Z_.ID_PREFIX="editor.foldLevel";Z_.ID=n=>Z_.ID_PREFIX+n;class Jnt extends Yr{constructor(){super({id:"editor.gotoParentFold",label:v("gotoParentFold.label","Go to Parent Fold"),alias:"Go to Parent Fold",precondition:Pr,kbOpts:{kbExpr:$.editorTextFocus,weight:100}})}invoke(e,t,i){const s=this.getSelectedLines(i);if(s.length>0){const r=knt(s[0],t);r!==null&&i.setSelection({startLineNumber:r,startColumn:1,endLineNumber:r,endColumn:1})}}}class est extends Yr{constructor(){super({id:"editor.gotoPreviousFold",label:v("gotoPreviousFold.label","Go to Previous Folding Range"),alias:"Go to Previous Folding Range",precondition:Pr,kbOpts:{kbExpr:$.editorTextFocus,weight:100}})}invoke(e,t,i){const s=this.getSelectedLines(i);if(s.length>0){const r=Lnt(s[0],t);r!==null&&i.setSelection({startLineNumber:r,startColumn:1,endLineNumber:r,endColumn:1})}}}class tst extends Yr{constructor(){super({id:"editor.gotoNextFold",label:v("gotoNextFold.label","Go to Next Folding Range"),alias:"Go to Next Folding Range",precondition:Pr,kbOpts:{kbExpr:$.editorTextFocus,weight:100}})}invoke(e,t,i){const s=this.getSelectedLines(i);if(s.length>0){const r=xnt(s[0],t);r!==null&&i.setSelection({startLineNumber:r,startColumn:1,endLineNumber:r,endColumn:1})}}}class ist extends Yr{constructor(){super({id:"editor.createFoldingRangeFromSelection",label:v("createManualFoldRange.label","Create Folding Range from Selection"),alias:"Create Folding Range from Selection",precondition:Pr,kbOpts:{kbExpr:$.editorTextFocus,primary:ws(2089,2135),weight:100}})}invoke(e,t,i){var s;const r=[],o=i.getSelections();if(o){for(const a of o){let l=a.endLineNumber;a.endColumn===1&&--l,l>a.startLineNumber&&(r.push({startLineNumber:a.startLineNumber,endLineNumber:l,type:void 0,isCollapsed:!0,source:1}),i.setSelection({startLineNumber:a.startLineNumber,startColumn:1,endLineNumber:a.startLineNumber,endColumn:1}))}if(r.length>0){r.sort((l,c)=>l.startLineNumber-c.startLineNumber);const a=Ra.sanitizeAndMerge(t.regions,r,(s=i.getModel())===null||s===void 0?void 0:s.getLineCount());t.updatePost(Ra.fromFoldRanges(a))}}}}class nst extends Yr{constructor(){super({id:"editor.removeManualFoldingRanges",label:v("removeManualFoldingRanges.label","Remove Manual Folding Ranges"),alias:"Remove Manual Folding Ranges",precondition:Pr,kbOpts:{kbExpr:$.editorTextFocus,primary:ws(2089,2137),weight:100}})}invoke(e,t,i){const s=i.getSelections();if(s){const r=[];for(const o of s){const{startLineNumber:a,endLineNumber:l}=o;r.push(l>=a?{startLineNumber:a,endLineNumber:l}:{endLineNumber:l,startLineNumber:a})}t.removeManualRanges(r),e.triggerFoldingModelChanged()}}}ti(Sd.ID,Sd,0);Ae(Hnt);Ae($nt);Ae(znt);Ae(jnt);Ae(Xnt);Ae(Qnt);Ae(qnt);Ae(Knt);Ae(Gnt);Ae(Ynt);Ae(Znt);Ae(Unt);Ae(Jnt);Ae(est);Ae(tst);Ae(ist);Ae(nst);for(let n=1;n<=7;n++)t7e(new Z_({id:Z_.ID(n),label:v("foldLevelAction.label","Fold Level {0}",n),alias:`Fold Level ${n}`,precondition:Pr,kbOpts:{kbExpr:$.editorTextFocus,primary:ws(2089,2048|21+n),weight:100}}));Yt.registerCommand("_executeFoldingRangeProvider",async function(n,...e){const[t]=e;if(!(t instanceof it))throw Tl();const i=n.get(Ge),s=n.get(fn).getModel(t);if(!s)throw Tl();const r=n.get(Ut);if(!r.getValue("editor.folding",{resource:t}))return[];const o=n.get(Bi),a=r.getValue("editor.foldingStrategy",{resource:t}),l={get limit(){return r.getValue("editor.foldingMaximumRegions",{resource:t})},update:(f,g)=>{}},c=new hG(s,o,l);let u=c;if(a!=="indentation"){const f=Sd.getFoldingRangeProviders(i,s);f.length&&(u=new fG(s,f,()=>{},l,c))}const h=await u.compute(Ft.None),d=[];try{if(h)for(let f=0;f<h.length;f++){const g=h.getType(f);d.push({start:h.getStartLineNumber(f),end:h.getEndLineNumber(f),kind:g?lo.fromValue(g):void 0})}return d}finally{u.dispose()}});class sst extends qe{constructor(){super({id:"editor.action.fontZoomIn",label:v("EditorFontZoomIn.label","Editor Font Zoom In"),alias:"Editor Font Zoom In",precondition:void 0})}run(e,t){_l.setZoomLevel(_l.getZoomLevel()+1)}}class rst extends qe{constructor(){super({id:"editor.action.fontZoomOut",label:v("EditorFontZoomOut.label","Editor Font Zoom Out"),alias:"Editor Font Zoom Out",precondition:void 0})}run(e,t){_l.setZoomLevel(_l.getZoomLevel()-1)}}class ost extends qe{constructor(){super({id:"editor.action.fontZoomReset",label:v("EditorFontZoomReset.label","Editor Font Zoom Reset"),alias:"Editor Font Zoom Reset",precondition:void 0})}run(e,t){_l.setZoomLevel(0)}}Ae(sst);Ae(rst);Ae(ost);class Vy{static _handleEolEdits(e,t){let i;const s=[];for(const r of t)typeof r.eol=="number"&&(i=r.eol),r.range&&typeof r.text=="string"&&s.push(r);return typeof i=="number"&&e.hasModel()&&e.getModel().pushEOL(i),s}static _isFullModelReplaceEdit(e,t){if(!e.hasModel())return!1;const i=e.getModel(),s=i.validateRange(t.range);return i.getFullModelRange().equalsRange(s)}static execute(e,t,i){i&&e.pushUndoStop();const s=Au.capture(e),r=Vy._handleEolEdits(e,t);r.length===1&&Vy._isFullModelReplaceEdit(e,r[0])?e.executeEdits("formatEditsCommand",r.map(o=>un.replace(M.lift(o.range),o.text))):e.executeEdits("formatEditsCommand",r.map(o=>un.replaceMove(M.lift(o.range),o.text))),i&&e.pushUndoStop(),s.restoreRelativeVerticalPositionOfCursor(e)}}class wne{constructor(e){this.value=e,this._lower=e.toLowerCase()}static toKey(e){return typeof e=="string"?e.toLowerCase():e._lower}}class ast{constructor(e){if(this._set=new Set,e)for(const t of e)this.add(t)}add(e){this._set.add(wne.toKey(e))}has(e){return this._set.has(wne.toKey(e))}}function Ive(n,e,t){const i=[],s=new ast,r=n.ordered(t);for(const a of r)i.push(a),a.extensionId&&s.add(a.extensionId);const o=e.ordered(t);for(const a of o){if(a.extensionId){if(s.has(a.extensionId))continue;s.add(a.extensionId)}i.push({displayName:a.displayName,extensionId:a.extensionId,provideDocumentFormattingEdits(l,c,u){return a.provideDocumentRangeFormattingEdits(l,l.getFullModelRange(),c,u)}})}return i}class X_{static setFormatterSelector(e){return{dispose:X_._selectors.unshift(e)}}static async select(e,t,i){if(e.length===0)return;const s=Vt.first(X_._selectors);if(s)return await s(e,t,i)}}X_._selectors=new oo;async function Tve(n,e,t,i,s,r,o){const a=n.get(at),{documentRangeFormattingEditProvider:l}=n.get(Ge),c=bd(e)?e.getModel():e,u=l.ordered(c),h=await X_.select(u,c,i);h&&(s.report(h),await a.invokeFunction(lst,h,e,t,r,o))}async function lst(n,e,t,i,s,r){var o,a;const l=n.get(Pc),c=n.get(ga),u=n.get(MO);let h,d;bd(t)?(h=t.getModel(),d=new lm(t,5,void 0,s)):(h=t,d=new _K(t,s));const f=[];let g=0;for(const y of nq(i).sort(M.compareRangesUsingStarts))g>0&&M.areIntersectingOrTouching(f[g-1],y)?f[g-1]=M.fromPositions(f[g-1].getStartPosition(),y.getEndPosition()):g=f.push(y);const p=async y=>{var w,S;c.trace("[format][provideDocumentRangeFormattingEdits] (request)",(w=e.extensionId)===null||w===void 0?void 0:w.value,y);const E=await e.provideDocumentRangeFormattingEdits(h,y,h.getFormattingOptions(),d.token)||[];return c.trace("[format][provideDocumentRangeFormattingEdits] (response)",(S=e.extensionId)===null||S===void 0?void 0:S.value,E),E},m=(y,w)=>{if(!y.length||!w.length)return!1;const S=y.reduce((E,L)=>M.plusRange(E,L.range),y[0].range);if(!w.some(E=>M.intersectRanges(S,E.range)))return!1;for(const E of y)for(const L of w)if(M.intersectRanges(E.range,L.range))return!0;return!1},_=[],b=[];try{if(typeof e.provideDocumentRangesFormattingEdits=="function"){c.trace("[format][provideDocumentRangeFormattingEdits] (request)",(o=e.extensionId)===null||o===void 0?void 0:o.value,f);const y=await e.provideDocumentRangesFormattingEdits(h,f,h.getFormattingOptions(),d.token)||[];c.trace("[format][provideDocumentRangeFormattingEdits] (response)",(a=e.extensionId)===null||a===void 0?void 0:a.value,y),b.push(y)}else{for(const y of f){if(d.token.isCancellationRequested)return!0;b.push(await p(y))}for(let y=0;y<f.length;++y)for(let w=y+1;w<f.length;++w){if(d.token.isCancellationRequested)return!0;if(m(b[y],b[w])){const S=M.plusRange(f[y],f[w]),E=await p(S);f.splice(w,1),f.splice(y,1),f.push(S),b.splice(w,1),b.splice(y,1),b.push(E),y=0,w=0}}}for(const y of b){if(d.token.isCancellationRequested)return!0;const w=await l.computeMoreMinimalEdits(h.uri,y);w&&_.push(...w)}}finally{d.dispose()}if(_.length===0)return!1;if(bd(t))Vy.execute(t,_,!0),t.revealPositionInCenterIfOutsideViewport(t.getPosition(),1);else{const[{range:y}]=_,w=new Ze(y.startLineNumber,y.startColumn,y.endLineNumber,y.endColumn);h.pushEditOperations([w],_.map(S=>({text:S.text,range:M.lift(S.range),forceMoveMarkers:!0})),S=>{for(const{range:E}of S)if(M.areIntersectingOrTouching(E,w))return[new Ze(E.startLineNumber,E.startColumn,E.endLineNumber,E.endColumn)];return null})}return u.notify("format",r),!0}async function cst(n,e,t,i,s,r){const o=n.get(at),a=n.get(Ge),l=bd(e)?e.getModel():e,c=Ive(a.documentFormattingEditProvider,a.documentRangeFormattingEditProvider,l),u=await X_.select(c,l,t);u&&(i.report(u),await o.invokeFunction(ust,u,e,t,s,r))}async function ust(n,e,t,i,s,r){const o=n.get(Pc),a=n.get(MO);let l,c;bd(t)?(l=t.getModel(),c=new lm(t,5,void 0,s)):(l=t,c=new _K(t,s));let u;try{const h=await e.provideDocumentFormattingEdits(l,l.getFormattingOptions(),c.token);if(u=await o.computeMoreMinimalEdits(l.uri,h),c.token.isCancellationRequested)return!0}finally{c.dispose()}if(!u||u.length===0)return!1;if(bd(t))Vy.execute(t,u,i!==2),i!==2&&t.revealPositionInCenterIfOutsideViewport(t.getPosition(),1);else{const[{range:h}]=u,d=new Ze(h.startLineNumber,h.startColumn,h.endLineNumber,h.endColumn);l.pushEditOperations([d],u.map(f=>({text:f.text,range:M.lift(f.range),forceMoveMarkers:!0})),f=>{for(const{range:g}of f)if(M.areIntersectingOrTouching(g,d))return[new Ze(g.startLineNumber,g.startColumn,g.endLineNumber,g.endColumn)];return null})}return a.notify("format",r),!0}async function hst(n,e,t,i,s,r){const o=e.documentRangeFormattingEditProvider.ordered(t);for(const a of o){const l=await Promise.resolve(a.provideDocumentRangeFormattingEdits(t,i,s,r)).catch(Jn);if(Ir(l))return await n.computeMoreMinimalEdits(t.uri,l)}}async function dst(n,e,t,i,s){const r=Ive(e.documentFormattingEditProvider,e.documentRangeFormattingEditProvider,t);for(const o of r){const a=await Promise.resolve(o.provideDocumentFormattingEdits(t,i,s)).catch(Jn);if(Ir(a))return await n.computeMoreMinimalEdits(t.uri,a)}}function Nve(n,e,t,i,s,r,o){const a=e.onTypeFormattingEditProvider.ordered(t);return a.length===0||a[0].autoFormatTriggerCharacters.indexOf(s)<0?Promise.resolve(void 0):Promise.resolve(a[0].provideOnTypeFormattingEdits(t,i,s,r,o)).catch(Jn).then(l=>n.computeMoreMinimalEdits(t.uri,l))}Yt.registerCommand("_executeFormatRangeProvider",async function(n,...e){const[t,i,s]=e;Si(it.isUri(t)),Si(M.isIRange(i));const r=n.get(Bo),o=n.get(Pc),a=n.get(Ge),l=await r.createModelReference(t);try{return hst(o,a,l.object.textEditorModel,M.lift(i),s,Ft.None)}finally{l.dispose()}});Yt.registerCommand("_executeFormatDocumentProvider",async function(n,...e){const[t,i]=e;Si(it.isUri(t));const s=n.get(Bo),r=n.get(Pc),o=n.get(Ge),a=await s.createModelReference(t);try{return dst(r,o,a.object.textEditorModel,i,Ft.None)}finally{a.dispose()}});Yt.registerCommand("_executeFormatOnTypeProvider",async function(n,...e){const[t,i,s,r]=e;Si(it.isUri(t)),Si(he.isIPosition(i)),Si(typeof s=="string");const o=n.get(Bo),a=n.get(Pc),l=n.get(Ge),c=await o.createModelReference(t);try{return Nve(a,l,c.object.textEditorModel,he.lift(i),s,r,Ft.None)}finally{c.dispose()}});var Ave=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},vk=function(n,e){return function(t,i){e(t,i,n)}};let dx=class{constructor(e,t,i,s){this._editor=e,this._languageFeaturesService=t,this._workerService=i,this._accessibleNotificationService=s,this._disposables=new xe,this._sessionDisposables=new xe,this._disposables.add(t.onTypeFormattingEditProvider.onDidChange(this._update,this)),this._disposables.add(e.onDidChangeModel(()=>this._update())),this._disposables.add(e.onDidChangeModelLanguage(()=>this._update())),this._disposables.add(e.onDidChangeConfiguration(r=>{r.hasChanged(56)&&this._update()})),this._update()}dispose(){this._disposables.dispose(),this._sessionDisposables.dispose()}_update(){if(this._sessionDisposables.clear(),!this._editor.getOption(56)||!this._editor.hasModel())return;const e=this._editor.getModel(),[t]=this._languageFeaturesService.onTypeFormattingEditProvider.ordered(e);if(!t||!t.autoFormatTriggerCharacters)return;const i=new UA;for(const s of t.autoFormatTriggerCharacters)i.add(s.charCodeAt(0));this._sessionDisposables.add(this._editor.onDidType(s=>{const r=s.charCodeAt(s.length-1);i.has(r)&&this._trigger(String.fromCharCode(r))}))}_trigger(e){if(!this._editor.hasModel()||this._editor.getSelections().length>1||!this._editor.getSelection().isEmpty())return;const t=this._editor.getModel(),i=this._editor.getPosition(),s=new es,r=this._editor.onDidChangeModelContent(o=>{if(o.isFlush){s.cancel(),r.dispose();return}for(let a=0,l=o.changes.length;a<l;a++)if(o.changes[a].range.endLineNumber<=i.lineNumber){s.cancel(),r.dispose();return}});Nve(this._workerService,this._languageFeaturesService,t,i,e,t.getFormattingOptions(),s.token).then(o=>{s.token.isCancellationRequested||Ir(o)&&(this._accessibleNotificationService.notify("format",!1),Vy.execute(this._editor,o,!0))}).finally(()=>{r.dispose()})}};dx.ID="editor.contrib.autoFormat";dx=Ave([vk(1,Ge),vk(2,Pc),vk(3,MO)],dx);let fx=class{constructor(e,t,i){this.editor=e,this._languageFeaturesService=t,this._instantiationService=i,this._callOnDispose=new xe,this._callOnModel=new xe,this._callOnDispose.add(e.onDidChangeConfiguration(()=>this._update())),this._callOnDispose.add(e.onDidChangeModel(()=>this._update())),this._callOnDispose.add(e.onDidChangeModelLanguage(()=>this._update())),this._callOnDispose.add(t.documentRangeFormattingEditProvider.onDidChange(this._update,this))}dispose(){this._callOnDispose.dispose(),this._callOnModel.dispose()}_update(){this._callOnModel.clear(),this.editor.getOption(55)&&this.editor.hasModel()&&this._languageFeaturesService.documentRangeFormattingEditProvider.has(this.editor.getModel())&&this._callOnModel.add(this.editor.onDidPaste(({range:e})=>this._trigger(e)))}_trigger(e){this.editor.hasModel()&&(this.editor.getSelections().length>1||this._instantiationService.invokeFunction(Tve,this.editor,e,2,Of.None,Ft.None,!1).catch(vt))}};fx.ID="editor.contrib.formatOnPaste";fx=Ave([vk(1,Ge),vk(2,at)],fx);class fst extends qe{constructor(){super({id:"editor.action.formatDocument",label:v("formatDocument.label","Format Document"),alias:"Format Document",precondition:ke.and($.notInCompositeEditor,$.writable,$.hasDocumentFormattingProvider),kbOpts:{kbExpr:$.editorTextFocus,primary:1572,linux:{primary:3111},weight:100},contextMenuOpts:{group:"1_modification",order:1.3}})}async run(e,t){if(t.hasModel()){const i=e.get(at);await e.get(Mm).showWhile(i.invokeFunction(cst,t,1,Of.None,Ft.None,!0),250)}}}class gst extends qe{constructor(){super({id:"editor.action.formatSelection",label:v("formatSelection.label","Format Selection"),alias:"Format Selection",precondition:ke.and($.writable,$.hasDocumentSelectionFormattingProvider),kbOpts:{kbExpr:$.editorTextFocus,primary:ws(2089,2084),weight:100},contextMenuOpts:{when:$.hasNonEmptySelection,group:"1_modification",order:1.31}})}async run(e,t){if(!t.hasModel())return;const i=e.get(at),s=t.getModel(),r=t.getSelections().map(a=>a.isEmpty()?new M(a.startLineNumber,1,a.startLineNumber,s.getLineMaxColumn(a.startLineNumber)):a);await e.get(Mm).showWhile(i.invokeFunction(Tve,t,r,1,Of.None,Ft.None,!0),250)}}ti(dx.ID,dx,2);ti(fx.ID,fx,2);Ae(fst);Ae(gst);Yt.registerCommand("editor.action.format",async n=>{const e=n.get(ri).getFocusedCodeEditor();if(!e||!e.hasModel())return;const t=n.get(Dn);e.getSelection().isEmpty()?await t.executeCommand("editor.action.formatDocument"):await t.executeCommand("editor.action.formatSelection")});var pst=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},H3=function(n,e){return function(t,i){e(t,i,n)}};class Q0{remove(){var e;(e=this.parent)===null||e===void 0||e.children.delete(this.id)}static findId(e,t){let i;typeof e=="string"?i=`${t.id}/${e}`:(i=`${t.id}/${e.name}`,t.children.get(i)!==void 0&&(i=`${t.id}/${e.name}_${e.range.startLineNumber}_${e.range.startColumn}`));let s=i;for(let r=0;t.children.get(s)!==void 0;r++)s=`${i}_${r}`;return s}static empty(e){return e.children.size===0}}class lV extends Q0{constructor(e,t,i){super(),this.id=e,this.parent=t,this.symbol=i,this.children=new Map}}class Pve extends Q0{constructor(e,t,i,s){super(),this.id=e,this.parent=t,this.label=i,this.order=s,this.children=new Map}}class sf extends Q0{static create(e,t,i){const s=new es(i),r=new sf(t.uri),o=e.ordered(t),a=o.map((c,u)=>{var h;const d=Q0.findId(`provider_${u}`,r),f=new Pve(d,r,(h=c.displayName)!==null&&h!==void 0?h:"Unknown Outline Provider",u);return Promise.resolve(c.provideDocumentSymbols(t,s.token)).then(g=>{for(const p of g||[])sf._makeOutlineElement(p,f);return f},g=>(Jn(g),f)).then(g=>{Q0.empty(g)?g.remove():r._groups.set(d,g)})}),l=e.onDidChange(()=>{const c=e.ordered(t);On(c,o)||s.cancel()});return Promise.all(a).then(()=>s.token.isCancellationRequested&&!i.isCancellationRequested?sf.create(e,t,i):r._compact()).finally(()=>{s.dispose(),l.dispose(),s.dispose()})}static _makeOutlineElement(e,t){const i=Q0.findId(e,t),s=new lV(i,t,e);if(e.children)for(const r of e.children)sf._makeOutlineElement(r,s);t.children.set(s.id,s)}constructor(e){super(),this.uri=e,this.id="root",this.parent=void 0,this._groups=new Map,this.children=new Map,this.id="root",this.parent=void 0}_compact(){let e=0;for(const[t,i]of this._groups)i.children.size===0?this._groups.delete(t):e+=1;if(e!==1)this.children=this._groups;else{const t=Vt.first(this._groups.values());for(const[,i]of t.children)i.parent=this,this.children.set(i.id,i)}return this}getTopLevelSymbols(){const e=[];for(const t of this.children.values())t instanceof lV?e.push(t.symbol):e.push(...Vt.map(t.children.values(),i=>i.symbol));return e.sort((t,i)=>M.compareRangesUsingStarts(t.range,i.range))}asListOfDocumentSymbols(){const e=this.getTopLevelSymbols(),t=[];return sf._flattenDocumentSymbols(t,e,""),t.sort((i,s)=>he.compare(M.getStartPosition(i.range),M.getStartPosition(s.range))||he.compare(M.getEndPosition(s.range),M.getEndPosition(i.range)))}static _flattenDocumentSymbols(e,t,i){for(const s of t)e.push({kind:s.kind,tags:s.tags,name:s.name,detail:s.detail,containerName:s.containerName||i,range:s.range,selectionRange:s.selectionRange,children:void 0}),s.children&&sf._flattenDocumentSymbols(e,s.children,s.name)}}const B2=Bt("IOutlineModelService");let cV=class{constructor(e,t,i){this._languageFeaturesService=e,this._disposables=new xe,this._cache=new Rm(10,.7),this._debounceInformation=t.for(e.documentSymbolProvider,"DocumentSymbols",{min:350}),this._disposables.add(i.onModelRemoved(s=>{this._cache.delete(s.id)}))}dispose(){this._disposables.dispose()}async getOrCreate(e,t){const i=this._languageFeaturesService.documentSymbolProvider,s=i.ordered(e);let r=this._cache.get(e.id);if(!r||r.versionId!==e.getVersionId()||!On(r.provider,s)){const a=new es;r={versionId:e.getVersionId(),provider:s,promiseCnt:0,source:a,promise:sf.create(i,e,a.token),model:void 0},this._cache.set(e.id,r);const l=Date.now();r.promise.then(c=>{r.model=c,this._debounceInformation.update(e,Date.now()-l)}).catch(c=>{this._cache.delete(e.id)})}if(r.model)return r.model;r.promiseCnt+=1;const o=t.onCancellationRequested(()=>{--r.promiseCnt===0&&(r.source.cancel(),this._cache.delete(e.id))});try{return await r.promise}finally{o.dispose()}}};cV=pst([H3(0,Ge),H3(1,Ul),H3(2,fn)],cV);jt(B2,cV,1);Yt.registerCommand("_executeDocumentSymbolProvider",async function(n,...e){const[t]=e;Si(it.isUri(t));const i=n.get(B2),r=await n.get(Bo).createModelReference(t);try{return(await i.getOrCreate(r.object.textEditorModel,Ft.None)).getTopLevelSymbols()}finally{r.dispose()}});class zs extends pe{constructor(e,t){super(),this.contextKeyService=e,this.model=t,this.inlineCompletionVisible=zs.inlineSuggestionVisible.bindTo(this.contextKeyService),this.inlineCompletionSuggestsIndentation=zs.inlineSuggestionHasIndentation.bindTo(this.contextKeyService),this.inlineCompletionSuggestsIndentationLessThanTabSize=zs.inlineSuggestionHasIndentationLessThanTabSize.bindTo(this.contextKeyService),this.suppressSuggestions=zs.suppressSuggestions.bindTo(this.contextKeyService),this._register(pi(i=>{const s=this.model.read(i),r=s==null?void 0:s.state.read(i),o=!!(r!=null&&r.inlineCompletion)&&(r==null?void 0:r.ghostText)!==void 0&&!(r!=null&&r.ghostText.isEmpty());this.inlineCompletionVisible.set(o),r!=null&&r.ghostText&&(r!=null&&r.inlineCompletion)&&this.suppressSuggestions.set(r.inlineCompletion.inlineCompletion.source.inlineCompletions.suppressSuggestions)})),this._register(pi(i=>{const s=this.model.read(i);let r=!1,o=!0;const a=s==null?void 0:s.ghostText.read(i);if(s!=null&&s.selectedSuggestItem&&a&&a.parts.length>0){const{column:l,lines:c}=a.parts[0],u=c[0],h=s.textModel.getLineIndentColumn(a.lineNumber);if(l<=h){let f=zr(u);f===-1&&(f=u.length-1),r=f>0;const g=s.textModel.getOptions().tabSize;o=xs.visibleColumnFromColumn(u,f+1,g)<g}}this.inlineCompletionSuggestsIndentation.set(r),this.inlineCompletionSuggestsIndentationLessThanTabSize.set(o)}))}}zs.inlineSuggestionVisible=new ze("inlineSuggestionVisible",!1,v("inlineSuggestionVisible","Whether an inline suggestion is visible"));zs.inlineSuggestionHasIndentation=new ze("inlineSuggestionHasIndentation",!1,v("inlineSuggestionHasIndentation","Whether the inline suggestion starts with whitespace"));zs.inlineSuggestionHasIndentationLessThanTabSize=new ze("inlineSuggestionHasIndentationLessThanTabSize",!0,v("inlineSuggestionHasIndentationLessThanTabSize","Whether the inline suggestion starts with whitespace that is less than what would be inserted by tab"));zs.suppressSuggestions=new ze("inlineSuggestionSuppressSuggestions",void 0,v("suppressSuggestions","Whether suggestions should be suppressed for the current suggestion"));function mst(n,e){const t=new _st(n),i=e.map(s=>{const r=M.lift(s.range);return{startOffset:t.getOffset(r.getStartPosition()),endOffset:t.getOffset(r.getEndPosition()),text:s.text}});i.sort((s,r)=>r.startOffset-s.startOffset);for(const s of i)n=n.substring(0,s.startOffset)+s.text+n.substring(s.endOffset);return n}class _st{constructor(e){this.lineStartOffsetByLineIdx=[],this.lineStartOffsetByLineIdx.push(0);for(let t=0;t<e.length;t++)e.charAt(t)===` +`&&this.lineStartOffsetByLineIdx.push(t+1)}getOffset(e){return this.lineStartOffsetByLineIdx[e.lineNumber-1]+e.column-1}}const vst=[];function bst(){return vst}class yst{constructor(e,t){if(this.startColumn=e,this.endColumnExclusive=t,e>t)throw new an(`startColumn ${e} cannot be after endColumnExclusive ${t}`)}toRange(e){return new M(e,this.startColumn,e,this.endColumnExclusive)}equals(e){return this.startColumn===e.startColumn&&this.endColumnExclusive===e.endColumnExclusive}}function Cst(n,e){const t=new xe,i=n.createDecorationsCollection();return t.add(QO({debugName:()=>`Apply decorations from ${e.debugName}`},s=>{const r=e.read(s);i.set(r)})),t.add({dispose:()=>{i.clear()}}),t}function uV(n,e){return new he(n.lineNumber+e.lineNumber-1,e.lineNumber===1?n.column+e.column-1:e.column)}function hV(n){let e=1,t=1;for(const i of n)i===` +`?(e++,t=1):t++;return new he(e,t)}class nR{constructor(e,t){this.lineNumber=e,this.parts=t}equals(e){return this.lineNumber===e.lineNumber&&this.parts.length===e.parts.length&&this.parts.every((t,i)=>t.equals(e.parts[i]))}renderForScreenReader(e){if(this.parts.length===0)return"";const t=this.parts[this.parts.length-1],i=e.substr(0,t.column-1);return mst(i,this.parts.map(r=>({range:{startLineNumber:1,endLineNumber:1,startColumn:r.column,endColumn:r.column},text:r.lines.join(` +`)}))).substring(this.parts[0].column-1)}isEmpty(){return this.parts.every(e=>e.lines.length===0)}get lineCount(){return 1+this.parts.reduce((e,t)=>e+t.lines.length-1,0)}}class dV{constructor(e,t,i){this.column=e,this.lines=t,this.preview=i}equals(e){return this.column===e.column&&this.lines.length===e.lines.length&&this.lines.every((t,i)=>t===e.lines[i])}}class fV{constructor(e,t,i,s=0){this.lineNumber=e,this.columnRange=t,this.newLines=i,this.additionalReservedLineCount=s,this.parts=[new dV(this.columnRange.endColumnExclusive,this.newLines,!1)]}renderForScreenReader(e){return this.newLines.join(` +`)}get lineCount(){return this.newLines.length}isEmpty(){return this.parts.every(e=>e.lines.length===0)}equals(e){return this.lineNumber===e.lineNumber&&this.columnRange.equals(e.columnRange)&&this.newLines.length===e.newLines.length&&this.newLines.every((t,i)=>t===e.newLines[i])&&this.additionalReservedLineCount===e.additionalReservedLineCount}}function Sne(n,e){return n===e?!0:!n||!e?!1:n instanceof nR&&e instanceof nR||n instanceof fV&&e instanceof fV?n.equals(e):!1}var wst=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},Sst=function(n,e){return function(t,i){e(t,i,n)}};const kne="ghost-text";let gV=class extends pe{constructor(e,t,i){super(),this.editor=e,this.model=t,this.languageService=i,this.isDisposed=si(this,!1),this.currentTextModel=Pn(this.editor.onDidChangeModel,()=>this.editor.getModel()),this.uiState=St(this,s=>{if(this.isDisposed.read(s))return;const r=this.currentTextModel.read(s);if(r!==this.model.targetTextModel.read(s))return;const o=this.model.ghostText.read(s);if(!o)return;const a=o instanceof fV?o.columnRange:void 0,l=[],c=[];function u(p,m){if(c.length>0){const _=c[c.length-1];m&&_.decorations.push(new ia(_.content.length+1,_.content.length+1+p[0].length,m,0)),_.content+=p[0],p=p.slice(1)}for(const _ of p)c.push({content:_,decorations:m?[new ia(1,_.length+1,m,0)]:[]})}const h=r.getLineContent(o.lineNumber);let d,f=0;for(const p of o.parts){let m=p.lines;d===void 0?(l.push({column:p.column,text:m[0],preview:p.preview}),m=m.slice(1)):u([h.substring(f,p.column-1)],void 0),m.length>0&&(u(m,kne),d===void 0&&p.column<=h.length&&(d=p.column)),f=p.column-1}d!==void 0&&u([h.substring(f)],void 0);const g=d!==void 0?new yst(d,h.length+1):void 0;return{replacedRange:a,inlineTexts:l,additionalLines:c,hiddenRange:g,lineNumber:o.lineNumber,additionalReservedLineCount:this.model.minReservedLineCount.read(s),targetTextModel:r}}),this.decorations=St(this,s=>{const r=this.uiState.read(s);if(!r)return[];const o=[];r.replacedRange&&o.push({range:r.replacedRange.toRange(r.lineNumber),options:{inlineClassName:"inline-completion-text-to-replace",description:"GhostTextReplacement"}}),r.hiddenRange&&o.push({range:r.hiddenRange.toRange(r.lineNumber),options:{inlineClassName:"ghost-text-hidden",description:"ghost-text-hidden"}});for(const a of r.inlineTexts)o.push({range:M.fromPositions(new he(r.lineNumber,a.column)),options:{description:kne,after:{content:a.text,inlineClassName:a.preview?"ghost-text-decoration-preview":"ghost-text-decoration",cursorStops:_u.Left},showIfCollapsed:!0}});return o}),this.additionalLinesWidget=this._register(new kst(this.editor,this.languageService.languageIdCodec,St(s=>{const r=this.uiState.read(s);return r?{lineNumber:r.lineNumber,additionalLines:r.additionalLines,minReservedLineCount:r.additionalReservedLineCount,targetTextModel:r.targetTextModel}:void 0}))),this._register(st(()=>{this.isDisposed.set(!0,void 0)})),this._register(Cst(this.editor,this.decorations))}ownsViewZone(e){return this.additionalLinesWidget.viewZoneId===e}};gV=wst([Sst(2,sn)],gV);class kst extends pe{get viewZoneId(){return this._viewZoneId}constructor(e,t,i){super(),this.editor=e,this.languageIdCodec=t,this.lines=i,this._viewZoneId=void 0,this.editorOptionsChanged=Fa("editorOptionChanged",Ve.filter(this.editor.onDidChangeConfiguration,s=>s.hasChanged(33)||s.hasChanged(116)||s.hasChanged(98)||s.hasChanged(93)||s.hasChanged(51)||s.hasChanged(50)||s.hasChanged(66))),this._register(pi(s=>{const r=this.lines.read(s);this.editorOptionsChanged.read(s),r?this.updateLines(r.lineNumber,r.additionalLines,r.minReservedLineCount):this.clear()}))}dispose(){super.dispose(),this.clear()}clear(){this.editor.changeViewZones(e=>{this._viewZoneId&&(e.removeZone(this._viewZoneId),this._viewZoneId=void 0)})}updateLines(e,t,i){const s=this.editor.getModel();if(!s)return;const{tabSize:r}=s.getOptions();this.editor.changeViewZones(o=>{this._viewZoneId&&(o.removeZone(this._viewZoneId),this._viewZoneId=void 0);const a=Math.max(t.length,i);if(a>0){const l=document.createElement("div");Lst(l,r,t,this.editor.getOptions(),this.languageIdCodec),this._viewZoneId=o.addZone({afterLineNumber:e,heightInLines:a,domNode:l,afterColumnAffinity:1})}})}}function Lst(n,e,t,i,s){const r=i.get(33),o=i.get(116),a="none",l=i.get(93),c=i.get(51),u=i.get(50),h=i.get(66),d=new IC(1e4);d.appendString('<div class="suggest-preview-text">');for(let p=0,m=t.length;p<m;p++){const _=t[p],b=_.content;d.appendString('<div class="view-line'),d.appendString('" style="top:'),d.appendString(String(p*h)),d.appendString('px;width:1000000px;">');const y=gE(b),w=fy(b),S=Ps.createEmpty(b,s);yE(new Am(u.isMonospace&&!r,u.canUseHalfwidthRightwardsArrow,b,!1,y,w,0,S,_.decorations,e,0,u.spaceWidth,u.middotWidth,u.wsmiddotWidth,o,a,l,c!==Oa.OFF,null),d),d.appendString("</div>")}d.appendString("</div>"),_r(n,u);const f=d.build(),g=Lne?Lne.createHTML(f):f;n.innerHTML=g}const Lne=sg("editorGhostText",{createHTML:n=>n});function xst(n,e){const t=new ime,i=new sme(t,c=>e.getLanguageConfiguration(c)),s=new nme(new Est([n]),i),r=D9(s,[],void 0,!0);let o="";const a=n.getLineContent();function l(c,u){if(c.kind===2)if(l(c.openingBracket,u),u=Ln(u,c.openingBracket.length),c.child&&(l(c.child,u),u=Ln(u,c.child.length)),c.closingBracket)l(c.closingBracket,u),u=Ln(u,c.closingBracket.length);else{const d=i.getSingleLanguageBracketTokens(c.openingBracket.languageId).findClosingTokenText(c.openingBracket.bracketIds);o+=d}else if(c.kind!==3){if(c.kind===0||c.kind===1)o+=a.substring(u,Ln(u,c.length));else if(c.kind===4)for(const h of c.children)l(h,u),u=Ln(u,h.length)}}return l(r,co),o}class Est{constructor(e){this.lines=e,this.tokenization={getLineTokens:t=>this.lines[t-1]}}getLineCount(){return this.lines.length}getLineLength(e){return this.lines[e-1].getLineContent().length}}class ec{constructor(){this.value="",this.pos=0}static isDigitCharacter(e){return e>=48&&e<=57}static isVariableCharacter(e){return e===95||e>=97&&e<=122||e>=65&&e<=90}text(e){this.value=e,this.pos=0}tokenText(e){return this.value.substr(e.pos,e.len)}next(){if(this.pos>=this.value.length)return{type:14,pos:this.pos,len:0};const e=this.pos;let t=0,i=this.value.charCodeAt(e),s;if(s=ec._table[i],typeof s=="number")return this.pos+=1,{type:s,pos:e,len:1};if(ec.isDigitCharacter(i)){s=8;do t+=1,i=this.value.charCodeAt(e+t);while(ec.isDigitCharacter(i));return this.pos+=t,{type:s,pos:e,len:t}}if(ec.isVariableCharacter(i)){s=9;do i=this.value.charCodeAt(e+ ++t);while(ec.isVariableCharacter(i)||ec.isDigitCharacter(i));return this.pos+=t,{type:s,pos:e,len:t}}s=10;do t+=1,i=this.value.charCodeAt(e+t);while(!isNaN(i)&&typeof ec._table[i]>"u"&&!ec.isDigitCharacter(i)&&!ec.isVariableCharacter(i));return this.pos+=t,{type:s,pos:e,len:t}}}ec._table={36:0,58:1,44:2,123:3,125:4,92:5,47:6,124:7,43:11,45:12,63:13};class HC{constructor(){this._children=[]}appendChild(e){return e instanceof to&&this._children[this._children.length-1]instanceof to?this._children[this._children.length-1].value+=e.value:(e.parent=this,this._children.push(e)),this}replace(e,t){const{parent:i}=e,s=i.children.indexOf(e),r=i.children.slice(0);r.splice(s,1,...t),i._children=r,function o(a,l){for(const c of a)c.parent=l,o(c.children,c)}(t,i)}get children(){return this._children}get rightMostDescendant(){return this._children.length>0?this._children[this._children.length-1].rightMostDescendant:this}get snippet(){let e=this;for(;;){if(!e)return;if(e instanceof GE)return e;e=e.parent}}toString(){return this.children.reduce((e,t)=>e+t.toString(),"")}len(){return 0}}class to extends HC{constructor(e){super(),this.value=e}toString(){return this.value}len(){return this.value.length}clone(){return new to(this.value)}}class Rve extends HC{}class fl extends Rve{static compareByIndex(e,t){return e.index===t.index?0:e.isFinalTabstop?1:t.isFinalTabstop||e.index<t.index?-1:e.index>t.index?1:0}constructor(e){super(),this.index=e}get isFinalTabstop(){return this.index===0}get choice(){return this._children.length===1&&this._children[0]instanceof $C?this._children[0]:void 0}clone(){const e=new fl(this.index);return this.transform&&(e.transform=this.transform.clone()),e._children=this.children.map(t=>t.clone()),e}}class $C extends HC{constructor(){super(...arguments),this.options=[]}appendChild(e){return e instanceof to&&(e.parent=this,this.options.push(e)),this}toString(){return this.options[0].value}len(){return this.options[0].len()}clone(){const e=new $C;return this.options.forEach(e.appendChild,e),e}}class gG extends HC{constructor(){super(...arguments),this.regexp=new RegExp("")}resolve(e){const t=this;let i=!1,s=e.replace(this.regexp,function(){return i=!0,t._replace(Array.prototype.slice.call(arguments,0,-2))});return!i&&this._children.some(r=>r instanceof tu&&!!r.elseValue)&&(s=this._replace([])),s}_replace(e){let t="";for(const i of this._children)if(i instanceof tu){let s=e[i.index]||"";s=i.resolve(s),t+=s}else t+=i.toString();return t}toString(){return""}clone(){const e=new gG;return e.regexp=new RegExp(this.regexp.source,(this.regexp.ignoreCase?"i":"")+(this.regexp.global?"g":"")),e._children=this.children.map(t=>t.clone()),e}}class tu extends HC{constructor(e,t,i,s){super(),this.index=e,this.shorthandName=t,this.ifValue=i,this.elseValue=s}resolve(e){return this.shorthandName==="upcase"?e?e.toLocaleUpperCase():"":this.shorthandName==="downcase"?e?e.toLocaleLowerCase():"":this.shorthandName==="capitalize"?e?e[0].toLocaleUpperCase()+e.substr(1):"":this.shorthandName==="pascalcase"?e?this._toPascalCase(e):"":this.shorthandName==="camelcase"?e?this._toCamelCase(e):"":e&&typeof this.ifValue=="string"?this.ifValue:!e&&typeof this.elseValue=="string"?this.elseValue:e||""}_toPascalCase(e){const t=e.match(/[a-z0-9]+/gi);return t?t.map(i=>i.charAt(0).toUpperCase()+i.substr(1)).join(""):e}_toCamelCase(e){const t=e.match(/[a-z0-9]+/gi);return t?t.map((i,s)=>s===0?i.charAt(0).toLowerCase()+i.substr(1):i.charAt(0).toUpperCase()+i.substr(1)).join(""):e}clone(){return new tu(this.index,this.shorthandName,this.ifValue,this.elseValue)}}class gx extends Rve{constructor(e){super(),this.name=e}resolve(e){let t=e.resolve(this);return this.transform&&(t=this.transform.resolve(t||"")),t!==void 0?(this._children=[new to(t)],!0):!1}clone(){const e=new gx(this.name);return this.transform&&(e.transform=this.transform.clone()),e._children=this.children.map(t=>t.clone()),e}}function xne(n,e){const t=[...n];for(;t.length>0;){const i=t.shift();if(!e(i))break;t.unshift(...i.children)}}class GE extends HC{get placeholderInfo(){if(!this._placeholders){const e=[];let t;this.walk(function(i){return i instanceof fl&&(e.push(i),t=!t||t.index<i.index?i:t),!0}),this._placeholders={all:e,last:t}}return this._placeholders}get placeholders(){const{all:e}=this.placeholderInfo;return e}offset(e){let t=0,i=!1;return this.walk(s=>s===e?(i=!0,!1):(t+=s.len(),!0)),i?t:-1}fullLen(e){let t=0;return xne([e],i=>(t+=i.len(),!0)),t}enclosingPlaceholders(e){const t=[];let{parent:i}=e;for(;i;)i instanceof fl&&t.push(i),i=i.parent;return t}resolveVariables(e){return this.walk(t=>(t instanceof gx&&t.resolve(e)&&(this._placeholders=void 0),!0)),this}appendChild(e){return this._placeholders=void 0,super.appendChild(e)}replace(e,t){return this._placeholders=void 0,super.replace(e,t)}clone(){const e=new GE;return this._children=this.children.map(t=>t.clone()),e}walk(e){xne(this.children,e)}}class Hy{constructor(){this._scanner=new ec,this._token={type:14,pos:0,len:0}}static escape(e){return e.replace(/\$|}|\\/g,"\\$&")}static guessNeedsClipboard(e){return/\${?CLIPBOARD/.test(e)}parse(e,t,i){const s=new GE;return this.parseFragment(e,s),this.ensureFinalTabstop(s,i??!1,t??!1),s}parseFragment(e,t){const i=t.children.length;for(this._scanner.text(e),this._token=this._scanner.next();this._parse(t););const s=new Map,r=[];t.walk(l=>(l instanceof fl&&(l.isFinalTabstop?s.set(0,void 0):!s.has(l.index)&&l.children.length>0?s.set(l.index,l.children):r.push(l)),!0));const o=(l,c)=>{const u=s.get(l.index);if(!u)return;const h=new fl(l.index);h.transform=l.transform;for(const d of u){const f=d.clone();h.appendChild(f),f instanceof fl&&s.has(f.index)&&!c.has(f.index)&&(c.add(f.index),o(f,c),c.delete(f.index))}t.replace(l,[h])},a=new Set;for(const l of r)o(l,a);return t.children.slice(i)}ensureFinalTabstop(e,t,i){(t||i&&e.placeholders.length>0)&&(e.placeholders.find(r=>r.index===0)||e.appendChild(new fl(0)))}_accept(e,t){if(e===void 0||this._token.type===e){const i=t?this._scanner.tokenText(this._token):!0;return this._token=this._scanner.next(),i}return!1}_backTo(e){return this._scanner.pos=e.pos+e.len,this._token=e,!1}_until(e){const t=this._token;for(;this._token.type!==e;){if(this._token.type===14)return!1;if(this._token.type===5){const s=this._scanner.next();if(s.type!==0&&s.type!==4&&s.type!==5)return!1}this._token=this._scanner.next()}const i=this._scanner.value.substring(t.pos,this._token.pos).replace(/\\(\$|}|\\)/g,"$1");return this._token=this._scanner.next(),i}_parse(e){return this._parseEscaped(e)||this._parseTabstopOrVariableName(e)||this._parseComplexPlaceholder(e)||this._parseComplexVariable(e)||this._parseAnything(e)}_parseEscaped(e){let t;return(t=this._accept(5,!0))?(t=this._accept(0,!0)||this._accept(4,!0)||this._accept(5,!0)||t,e.appendChild(new to(t)),!0):!1}_parseTabstopOrVariableName(e){let t;const i=this._token;return this._accept(0)&&(t=this._accept(9,!0)||this._accept(8,!0))?(e.appendChild(/^\d+$/.test(t)?new fl(Number(t)):new gx(t)),!0):this._backTo(i)}_parseComplexPlaceholder(e){let t;const i=this._token;if(!(this._accept(0)&&this._accept(3)&&(t=this._accept(8,!0))))return this._backTo(i);const r=new fl(Number(t));if(this._accept(1))for(;;){if(this._accept(4))return e.appendChild(r),!0;if(!this._parse(r))return e.appendChild(new to("${"+t+":")),r.children.forEach(e.appendChild,e),!0}else if(r.index>0&&this._accept(7)){const o=new $C;for(;;){if(this._parseChoiceElement(o)){if(this._accept(2))continue;if(this._accept(7)&&(r.appendChild(o),this._accept(4)))return e.appendChild(r),!0}return this._backTo(i),!1}}else return this._accept(6)?this._parseTransform(r)?(e.appendChild(r),!0):(this._backTo(i),!1):this._accept(4)?(e.appendChild(r),!0):this._backTo(i)}_parseChoiceElement(e){const t=this._token,i=[];for(;!(this._token.type===2||this._token.type===7);){let s;if((s=this._accept(5,!0))?s=this._accept(2,!0)||this._accept(7,!0)||this._accept(5,!0)||s:s=this._accept(void 0,!0),!s)return this._backTo(t),!1;i.push(s)}return i.length===0?(this._backTo(t),!1):(e.appendChild(new to(i.join(""))),!0)}_parseComplexVariable(e){let t;const i=this._token;if(!(this._accept(0)&&this._accept(3)&&(t=this._accept(9,!0))))return this._backTo(i);const r=new gx(t);if(this._accept(1))for(;;){if(this._accept(4))return e.appendChild(r),!0;if(!this._parse(r))return e.appendChild(new to("${"+t+":")),r.children.forEach(e.appendChild,e),!0}else return this._accept(6)?this._parseTransform(r)?(e.appendChild(r),!0):(this._backTo(i),!1):this._accept(4)?(e.appendChild(r),!0):this._backTo(i)}_parseTransform(e){const t=new gG;let i="",s="";for(;!this._accept(6);){let r;if(r=this._accept(5,!0)){r=this._accept(6,!0)||r,i+=r;continue}if(this._token.type!==14){i+=this._accept(void 0,!0);continue}return!1}for(;!this._accept(6);){let r;if(r=this._accept(5,!0)){r=this._accept(5,!0)||this._accept(6,!0)||r,t.appendChild(new to(r));continue}if(!(this._parseFormatString(t)||this._parseAnything(t)))return!1}for(;!this._accept(4);){if(this._token.type!==14){s+=this._accept(void 0,!0);continue}return!1}try{t.regexp=new RegExp(i,s)}catch{return!1}return e.transform=t,!0}_parseFormatString(e){const t=this._token;if(!this._accept(0))return!1;let i=!1;this._accept(3)&&(i=!0);const s=this._accept(8,!0);if(s)if(i){if(this._accept(4))return e.appendChild(new tu(Number(s))),!0;if(!this._accept(1))return this._backTo(t),!1}else return e.appendChild(new tu(Number(s))),!0;else return this._backTo(t),!1;if(this._accept(6)){const r=this._accept(9,!0);return!r||!this._accept(4)?(this._backTo(t),!1):(e.appendChild(new tu(Number(s),r)),!0)}else if(this._accept(11)){const r=this._until(4);if(r)return e.appendChild(new tu(Number(s),void 0,r,void 0)),!0}else if(this._accept(12)){const r=this._until(4);if(r)return e.appendChild(new tu(Number(s),void 0,void 0,r)),!0}else if(this._accept(13)){const r=this._until(1);if(r){const o=this._until(4);if(o)return e.appendChild(new tu(Number(s),void 0,r,o)),!0}}else{const r=this._until(4);if(r)return e.appendChild(new tu(Number(s),void 0,void 0,r)),!0}return this._backTo(t),!1}_parseAnything(e){return this._token.type!==14?(e.appendChild(new to(this._scanner.tokenText(this._token))),this._accept(void 0),!0):!1}}async function Dst(n,e,t,i,s=Ft.None,r){const o=Nst(e,t),a=n.all(t),l=new Yq;for(const _ of a)_.groupId&&l.add(_.groupId,_);function c(_){if(!_.yieldsToGroupIds)return[];const b=[];for(const y of _.yieldsToGroupIds||[]){const w=l.get(y);for(const S of w)b.push(S)}return b}const u=new Map,h=new Set;function d(_,b){if(b=[...b,_],h.has(_))return b;h.add(_);try{const y=c(_);for(const w of y){const S=d(w,b);if(S)return S}}finally{h.delete(_)}}function f(_){const b=u.get(_);if(b)return b;const y=d(_,[]);y&&Jn(new Error(`Inline completions: cyclic yield-to dependency detected. Path: ${y.map(S=>S.toString?S.toString():""+S).join(" -> ")}`));const w=new cO;return u.set(_,w.p),(async()=>{if(!y){const S=c(_);for(const E of S){const L=await f(E);if(L&&L.items.length>0)return}}try{return await _.provideInlineCompletions(t,e,i,s)}catch(S){Jn(S);return}})().then(S=>w.complete(S),S=>w.error(S)),w.p}const g=await Promise.all(a.map(async _=>({provider:_,completions:await f(_)}))),p=new Map,m=[];for(const _ of g){const b=_.completions;if(!b)continue;const y=new Tst(b,_.provider);m.push(y);for(const w of b.items){const S=sR.from(w,y,o,t,r);p.set(S.hash(),S)}}return new Ist(Array.from(p.values()),new Set(p.keys()),m)}class Ist{constructor(e,t,i){this.completions=e,this.hashs=t,this.providerResults=i}has(e){return this.hashs.has(e.hash())}dispose(){for(const e of this.providerResults)e.removeRef()}}class Tst{constructor(e,t){this.inlineCompletions=e,this.provider=t,this.refCount=1}addRef(){this.refCount++}removeRef(){this.refCount--,this.refCount===0&&this.provider.freeInlineCompletions(this.inlineCompletions)}}class sR{static from(e,t,i,s,r){let o,a,l=e.range?M.lift(e.range):i;if(typeof e.insertText=="string"){if(o=e.insertText,r&&e.completeBracketPairs){o=Ene(o,l.getStartPosition(),s,r);const c=o.length-e.insertText.length;c!==0&&(l=new M(l.startLineNumber,l.startColumn,l.endLineNumber,l.endColumn+c))}a=void 0}else if("snippet"in e.insertText){const c=e.insertText.snippet.length;if(r&&e.completeBracketPairs){e.insertText.snippet=Ene(e.insertText.snippet,l.getStartPosition(),s,r);const h=e.insertText.snippet.length-c;h!==0&&(l=new M(l.startLineNumber,l.startColumn,l.endLineNumber,l.endColumn+h))}const u=new Hy().parse(e.insertText.snippet);u.children.length===1&&u.children[0]instanceof to?(o=u.children[0].value,a=void 0):(o=u.toString(),a={snippet:e.insertText.snippet,range:l})}else SO(e.insertText);return new sR(o,e.command,l,o,a,e.additionalTextEdits||bst(),e,t)}constructor(e,t,i,s,r,o,a,l){this.filterText=e,this.command=t,this.range=i,this.insertText=s,this.snippetInfo=r,this.additionalTextEdits=o,this.sourceInlineCompletion=a,this.source=l,e=e.replace(/\r\n|\r/g,` +`),s=e.replace(/\r\n|\r/g,` +`)}withRange(e){return new sR(this.filterText,this.command,e,this.insertText,this.snippetInfo,this.additionalTextEdits,this.sourceInlineCompletion,this.source)}hash(){return JSON.stringify({insertText:this.insertText,range:this.range.toString()})}}function Nst(n,e){const t=e.getWordAtPosition(n),i=e.getLineMaxColumn(n.lineNumber);return t?new M(n.lineNumber,t.startColumn,n.lineNumber,i):M.fromPositions(n,n.with(void 0,i))}function Ene(n,e,t,i){const r=t.getLineContent(e.lineNumber).substring(0,e.column-1)+n,o=t.tokenization.tokenizeLineWithEdit(e,r.length-(e.column-1),n),a=o==null?void 0:o.sliceAndInflate(e.column-1,r.length,0);return a?xst(a,i):n}class $y{constructor(e,t){this.range=e,this.text=t}removeCommonPrefix(e,t){const i=t?this.range.intersectRanges(t):this.range;if(!i)return this;const s=e.getValueInRange(i,1),r=T_(s,this.text),o=uV(this.range.getStartPosition(),hV(s.substring(0,r))),a=this.text.substring(r),l=M.fromPositions(o,this.range.getEndPosition());return new $y(l,a)}augments(e){return this.text.startsWith(e.text)&&Ast(this.range,e.range)}computeGhostText(e,t,i,s=0){let r=this.removeCommonPrefix(e);if(r.range.endLineNumber!==r.range.startLineNumber)return;const o=e.getLineContent(r.range.startLineNumber),a=Ni(o).length;if(r.range.startColumn-1<=a){const g=Ni(r.text).length,p=o.substring(r.range.startColumn-1,a),[m,_]=[r.range.getStartPosition(),r.range.getEndPosition()],b=m.column+p.length<=_.column?m.delta(0,p.length):_,y=M.fromPositions(b,_),w=r.text.startsWith(p)?r.text.substring(p.length):r.text.substring(g);r=new $y(y,w)}const c=e.getValueInRange(r.range),u=Pst(c,r.text);if(!u)return;const h=r.range.startLineNumber,d=new Array;if(t==="prefix"){const g=u.filter(p=>p.originalLength===0);if(g.length>1||g.length===1&&g[0].originalStart!==c.length)return}const f=r.text.length-s;for(const g of u){const p=r.range.startColumn+g.originalStart+g.originalLength;if(t==="subwordSmart"&&i&&i.lineNumber===r.range.startLineNumber&&p<i.column||g.originalLength>0)return;if(g.modifiedLength===0)continue;const m=g.modifiedStart+g.modifiedLength,_=Math.max(g.modifiedStart,Math.min(m,f)),b=r.text.substring(g.modifiedStart,_),y=r.text.substring(_,Math.max(g.modifiedStart,m));if(b.length>0){const w=fd(b);d.push(new dV(p,w,!1))}if(y.length>0){const w=fd(y);d.push(new dV(p,w,!0))}}return new nR(h,d)}}function Ast(n,e){return e.getStartPosition().equals(n.getStartPosition())&&e.getEndPosition().isBeforeOrEqual(n.getEndPosition())}let Ju;function Pst(n,e){if((Ju==null?void 0:Ju.originalValue)===n&&(Ju==null?void 0:Ju.newValue)===e)return Ju==null?void 0:Ju.changes;{let t=Ine(n,e,!0);if(t){const i=Dne(t);if(i>0){const s=Ine(n,e,!1);s&&Dne(s)<i&&(t=s)}}return Ju={originalValue:n,newValue:e,changes:t},t}}function Dne(n){let e=0;for(const t of n)e+=t.originalLength;return e}function Ine(n,e,t){if(n.length>5e3||e.length>5e3)return;function i(c){let u=0;for(let h=0,d=c.length;h<d;h++){const f=c.charCodeAt(h);f>u&&(u=f)}return u}const s=Math.max(i(n),i(e));function r(c){if(c<0)throw new Error("unexpected");return s+c+1}function o(c){let u=0,h=0;const d=new Int32Array(c.length);for(let f=0,g=c.length;f<g;f++)if(t&&c[f]==="("){const p=h*100+u;d[f]=r(2*p),u++}else if(t&&c[f]===")"){u=Math.max(u-1,0);const p=h*100+u;d[f]=r(2*p+1),u===0&&h++}else d[f]=c.charCodeAt(f);return d}const a=o(n),l=o(e);return new kh({getElements:()=>a},{getElements:()=>l}).ComputeDiff(!1).changes}var Rst=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},Tne=function(n,e){return function(t,i){e(t,i,n)}};let pV=class extends pe{constructor(e,t,i,s,r){super(),this.textModel=e,this.versionId=t,this._debounceValue=i,this.languageFeaturesService=s,this.languageConfigurationService=r,this._updateOperation=this._register(new qs),this.inlineCompletions=fP("inlineCompletions",void 0),this.suggestWidgetInlineCompletions=fP("suggestWidgetInlineCompletions",void 0),this._register(this.textModel.onDidChangeContent(()=>{this._updateOperation.clear()}))}fetch(e,t,i){var s,r;const o=new Ost(e,t,this.textModel.getVersionId()),a=t.selectedSuggestionInfo?this.suggestWidgetInlineCompletions:this.inlineCompletions;if(!((s=this._updateOperation.value)===null||s===void 0)&&s.request.satisfies(o))return this._updateOperation.value.promise;if(!((r=a.get())===null||r===void 0)&&r.request.satisfies(o))return Promise.resolve(!0);const l=!!this._updateOperation.value;this._updateOperation.clear();const c=new es,u=(async()=>{if((l||t.triggerKind===Rf.Automatic)&&await Mst(this._debounceValue.get(this.textModel)),c.token.isCancellationRequested||this.textModel.getVersionId()!==o.versionId)return!1;const f=new Date,g=await Dst(this.languageFeaturesService.inlineCompletionsProvider,e,this.textModel,t,c.token,this.languageConfigurationService);if(c.token.isCancellationRequested||this.textModel.getVersionId()!==o.versionId)return!1;const p=new Date;this._debounceValue.update(this.textModel,p.getTime()-f.getTime());const m=new Wst(g,o,this.textModel,this.versionId);if(i){const _=i.toInlineCompletion(void 0);i.canBeReused(this.textModel,e)&&!g.has(_)&&m.prepend(i.inlineCompletion,_.range,!0)}return this._updateOperation.clear(),ln(_=>{a.set(m,_)}),!0})(),h=new Bst(o,c,u);return this._updateOperation.value=h,u}clear(e){this._updateOperation.clear(),this.inlineCompletions.set(void 0,e),this.suggestWidgetInlineCompletions.set(void 0,e)}clearSuggestWidgetInlineCompletions(e){var t;!((t=this._updateOperation.value)===null||t===void 0)&&t.request.context.selectedSuggestionInfo&&this._updateOperation.clear(),this.suggestWidgetInlineCompletions.set(void 0,e)}cancelUpdate(){this._updateOperation.clear()}};pV=Rst([Tne(3,Ge),Tne(4,Bi)],pV);function Mst(n,e){return new Promise(t=>{let i;const s=setTimeout(()=>{i&&i.dispose(),t()},n);e&&(i=e.onCancellationRequested(()=>{clearTimeout(s),i&&i.dispose(),t()}))})}class Ost{constructor(e,t,i){this.position=e,this.context=t,this.versionId=i}satisfies(e){return this.position.equals(e.position)&&Fst(this.context.selectedSuggestionInfo,e.context.selectedSuggestionInfo,(t,i)=>t.equals(i))&&(e.context.triggerKind===Rf.Automatic||this.context.triggerKind===Rf.Explicit)&&this.versionId===e.versionId}}function Fst(n,e,t){return!n||!e?n===e:t(n,e)}class Bst{constructor(e,t,i){this.request=e,this.cancellationTokenSource=t,this.promise=i}dispose(){this.cancellationTokenSource.cancel()}}class Wst{get inlineCompletions(){return this._inlineCompletions}constructor(e,t,i,s){this.inlineCompletionProviderResult=e,this.request=t,this.textModel=i,this.versionId=s,this._refCount=1,this._prependedInlineCompletionItems=[],this._rangeVersionIdValue=0,this._rangeVersionId=St(this,o=>{this.versionId.read(o);let a=!1;for(const l of this._inlineCompletions)a=a||l._updateRange(this.textModel);return a&&this._rangeVersionIdValue++,this._rangeVersionIdValue});const r=i.deltaDecorations([],e.completions.map(o=>({range:o.range,options:{description:"inline-completion-tracking-range"}})));this._inlineCompletions=e.completions.map((o,a)=>new Nne(o,r[a],this._rangeVersionId))}clone(){return this._refCount++,this}dispose(){if(this._refCount--,this._refCount===0){setTimeout(()=>{this.textModel.isDisposed()||this.textModel.deltaDecorations(this._inlineCompletions.map(e=>e.decorationId),[])},0),this.inlineCompletionProviderResult.dispose();for(const e of this._prependedInlineCompletionItems)e.source.removeRef()}}prepend(e,t,i){i&&e.source.addRef();const s=this.textModel.deltaDecorations([],[{range:t,options:{description:"inline-completion-tracking-range"}}])[0];this._inlineCompletions.unshift(new Nne(e,s,this._rangeVersionId,t)),this._prependedInlineCompletionItems.push(e)}}class Nne{get forwardStable(){var e;return(e=this.inlineCompletion.source.inlineCompletions.enableForwardStability)!==null&&e!==void 0?e:!1}constructor(e,t,i,s){this.inlineCompletion=e,this.decorationId=t,this.rangeVersion=i,this.semanticId=JSON.stringify([this.inlineCompletion.filterText,this.inlineCompletion.insertText,this.inlineCompletion.range.getStartPosition().toString()]),this._isValid=!0,this._updatedRange=s??e.range}toInlineCompletion(e){return this.inlineCompletion.withRange(this._getUpdatedRange(e))}toSingleTextEdit(e){return new $y(this._getUpdatedRange(e),this.inlineCompletion.insertText)}isVisible(e,t,i){const s=this._toFilterTextReplacement(i).removeCommonPrefix(e);if(!this._isValid||!this.inlineCompletion.range.getStartPosition().equals(this._getUpdatedRange(i).getStartPosition())||t.lineNumber!==s.range.startLineNumber)return!1;const r=e.getValueInRange(s.range,1),o=s.text,a=Math.max(0,t.column-s.range.startColumn);let l=o.substring(0,a),c=o.substring(a),u=r.substring(0,a),h=r.substring(a);const d=e.getLineIndentColumn(s.range.startLineNumber);return s.range.startColumn<=d&&(u=u.trimStart(),u.length===0&&(h=h.trimStart()),l=l.trimStart(),l.length===0&&(c=c.trimStart())),l.startsWith(u)&&!!Ame(h,c)}canBeReused(e,t){return this._isValid&&this._getUpdatedRange(void 0).containsPosition(t)&&this.isVisible(e,t,void 0)&&!this._isSmallerThanOriginal(void 0)}_toFilterTextReplacement(e){return new $y(this._getUpdatedRange(e),this.inlineCompletion.filterText)}_isSmallerThanOriginal(e){return Ane(this._getUpdatedRange(e)).isBefore(Ane(this.inlineCompletion.range))}_getUpdatedRange(e){return this.rangeVersion.read(e),this._updatedRange}_updateRange(e){const t=e.getDecorationRange(this.decorationId);return t?this._updatedRange.equalsRange(t)?!1:(this._updatedRange=t,!0):(this._isValid=!1,!0)}}function Ane(n){return n.startLineNumber===n.endLineNumber?new he(1,1+n.endColumn-n.startColumn):new he(1+n.endLineNumber-n.startLineNumber,n.endColumn)}const Et={Visible:aG,HasFocusedSuggestion:new ze("suggestWidgetHasFocusedSuggestion",!1,v("suggestWidgetHasSelection","Whether any suggestion is focused")),DetailsVisible:new ze("suggestWidgetDetailsVisible",!1,v("suggestWidgetDetailsVisible","Whether suggestion details are visible")),MultipleSuggestions:new ze("suggestWidgetMultipleSuggestions",!1,v("suggestWidgetMultipleSuggestions","Whether there are multiple suggestions to pick from")),MakesTextEdit:new ze("suggestionMakesTextEdit",!0,v("suggestionMakesTextEdit","Whether inserting the current suggestion yields in a change or has everything already been typed")),AcceptSuggestionsOnEnter:new ze("acceptSuggestionOnEnter",!0,v("acceptSuggestionOnEnter","Whether suggestions are inserted when pressing Enter")),HasInsertAndReplaceRange:new ze("suggestionHasInsertAndReplaceRange",!1,v("suggestionHasInsertAndReplaceRange","Whether the current suggestion has insert and replace behaviour")),InsertMode:new ze("suggestionInsertMode",void 0,{type:"string",description:v("suggestionInsertMode","Whether the default behaviour is to insert or replace")}),CanResolve:new ze("suggestionCanResolve",!1,v("suggestionCanResolve","Whether the current suggestion supports to resolve further details"))},Pp=new B("suggestWidgetStatusBar");class Vst{constructor(e,t,i,s){var r;this.position=e,this.completion=t,this.container=i,this.provider=s,this.isInvalid=!1,this.score=Lu.Default,this.distance=0,this.textLabel=typeof t.label=="string"?t.label:(r=t.label)===null||r===void 0?void 0:r.label,this.labelLow=this.textLabel.toLowerCase(),this.isInvalid=!this.textLabel,this.sortTextLow=t.sortText&&t.sortText.toLowerCase(),this.filterTextLow=t.filterText&&t.filterText.toLowerCase(),this.extensionId=t.extensionId,M.isIRange(t.range)?(this.editStart=new he(t.range.startLineNumber,t.range.startColumn),this.editInsertEnd=new he(t.range.endLineNumber,t.range.endColumn),this.editReplaceEnd=new he(t.range.endLineNumber,t.range.endColumn),this.isInvalid=this.isInvalid||M.spansMultipleLines(t.range)||t.range.startLineNumber!==e.lineNumber):(this.editStart=new he(t.range.insert.startLineNumber,t.range.insert.startColumn),this.editInsertEnd=new he(t.range.insert.endLineNumber,t.range.insert.endColumn),this.editReplaceEnd=new he(t.range.replace.endLineNumber,t.range.replace.endColumn),this.isInvalid=this.isInvalid||M.spansMultipleLines(t.range.insert)||M.spansMultipleLines(t.range.replace)||t.range.insert.startLineNumber!==e.lineNumber||t.range.replace.startLineNumber!==e.lineNumber||t.range.insert.startColumn!==t.range.replace.startColumn),typeof s.resolveCompletionItem!="function"&&(this._resolveCache=Promise.resolve(),this._resolveDuration=0)}get isResolved(){return this._resolveDuration!==void 0}get resolveDuration(){return this._resolveDuration!==void 0?this._resolveDuration:-1}async resolve(e){if(!this._resolveCache){const t=e.onCancellationRequested(()=>{this._resolveCache=void 0,this._resolveDuration=void 0}),i=new Nr(!0);this._resolveCache=Promise.resolve(this.provider.resolveCompletionItem(this.completion,e)).then(s=>{Object.assign(this.completion,s),this._resolveDuration=i.elapsed()},s=>{Wu(s)&&(this._resolveCache=void 0,this._resolveDuration=void 0)}).finally(()=>{t.dispose()})}return this._resolveCache}}class px{constructor(e=2,t=new Set,i=new Set,s=new Map,r=!0){this.snippetSortOrder=e,this.kindFilter=t,this.providerFilter=i,this.providerItemsToReuse=s,this.showDeprecated=r}}px.default=new px;let Hst;function $st(){return Hst}class zst{constructor(e,t,i,s){this.items=e,this.needsClipboard=t,this.durations=i,this.disposable=s}}async function pG(n,e,t,i=px.default,s={triggerKind:0},r=Ft.None){const o=new Nr;t=t.clone();const a=e.getWordAtPosition(t),l=a?new M(t.lineNumber,a.startColumn,t.lineNumber,a.endColumn):M.fromPositions(t),c={replace:l,insert:l.setEndPosition(t.lineNumber,t.column)},u=[],h=new xe,d=[];let f=!1;const g=(m,_,b)=>{var y,w,S;let E=!1;if(!_)return E;for(const L of _.suggestions)if(!i.kindFilter.has(L.kind)){if(!i.showDeprecated&&(!((y=L==null?void 0:L.tags)===null||y===void 0)&&y.includes(1)))continue;L.range||(L.range=c),L.sortText||(L.sortText=typeof L.label=="string"?L.label:L.label.label),!f&&L.insertTextRules&&L.insertTextRules&4&&(f=Hy.guessNeedsClipboard(L.insertText)),u.push(new Vst(t,L,_,m)),E=!0}return Lj(_)&&h.add(_),d.push({providerName:(w=m._debugDisplayName)!==null&&w!==void 0?w:"unknown_provider",elapsedProvider:(S=_.duration)!==null&&S!==void 0?S:-1,elapsedOverall:b.elapsed()}),E},p=(async()=>{})();for(const m of n.orderedGroups(e)){let _=!1;if(await Promise.all(m.map(async b=>{if(i.providerItemsToReuse.has(b)){const y=i.providerItemsToReuse.get(b);y.forEach(w=>u.push(w)),_=_||y.length>0;return}if(!(i.providerFilter.size>0&&!i.providerFilter.has(b)))try{const y=new Nr,w=await b.provideCompletionItems(e,t,s,r);_=g(b,w,y)||_}catch(y){Jn(y)}})),_||r.isCancellationRequested)break}return await p,r.isCancellationRequested?(h.dispose(),Promise.reject(new Em)):new zst(u.sort(qst(i.snippetSortOrder)),f,{entries:d,elapsed:o.elapsed()},h)}function mG(n,e){if(n.sortTextLow&&e.sortTextLow){if(n.sortTextLow<e.sortTextLow)return-1;if(n.sortTextLow>e.sortTextLow)return 1}return n.textLabel<e.textLabel?-1:n.textLabel>e.textLabel?1:n.completion.kind-e.completion.kind}function Ust(n,e){if(n.completion.kind!==e.completion.kind){if(n.completion.kind===27)return-1;if(e.completion.kind===27)return 1}return mG(n,e)}function jst(n,e){if(n.completion.kind!==e.completion.kind){if(n.completion.kind===27)return 1;if(e.completion.kind===27)return-1}return mG(n,e)}const W2=new Map;W2.set(0,Ust);W2.set(2,jst);W2.set(1,mG);function qst(n){return W2.get(n)}Yt.registerCommand("_executeCompletionItemProvider",async(n,...e)=>{const[t,i,s,r]=e;Si(it.isUri(t)),Si(he.isIPosition(i)),Si(typeof s=="string"||!s),Si(typeof r=="number"||!r);const{completionProvider:o}=n.get(Ge),a=await n.get(Bo).createModelReference(t);try{const l={incomplete:!1,suggestions:[]},c=[],u=a.object.textEditorModel.validatePosition(i),h=await pG(o,a.object.textEditorModel,u,void 0,{triggerCharacter:s??void 0,triggerKind:s?1:0});for(const d of h.items)c.length<(r??0)&&c.push(d.resolve(Ft.None)),l.incomplete=l.incomplete||d.container.incomplete,l.suggestions.push(d.completion);try{return await Promise.all(c),l}finally{setTimeout(()=>h.disposable.dispose(),100)}}finally{a.dispose()}});function Kst(n,e){var t;(t=n.getContribution("editor.contrib.suggestController"))===null||t===void 0||t.triggerSuggest(new Set().add(e),void 0,!0)}class J0{static isAllOff(e){return e.other==="off"&&e.comments==="off"&&e.strings==="off"}static isAllOn(e){return e.other==="on"&&e.comments==="on"&&e.strings==="on"}static valueFor(e,t){switch(t){case 1:return e.comments;case 2:return e.strings;default:return e.other}}}function Pne(n,e=yr){return bje(n,e)?n.charAt(0).toUpperCase()+n.slice(1):n}var Gst=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},Yst=function(n,e){return function(t,i){e(t,i,n)}};class Rne{constructor(e){this._delegates=e}resolve(e){for(const t of this._delegates){const i=t.resolve(e);if(i!==void 0)return i}}}class Mne{constructor(e,t,i,s){this._model=e,this._selection=t,this._selectionIdx=i,this._overtypingCapturer=s}resolve(e){const{name:t}=e;if(t==="SELECTION"||t==="TM_SELECTED_TEXT"){let i=this._model.getValueInRange(this._selection)||void 0,s=this._selection.startLineNumber!==this._selection.endLineNumber;if(!i&&this._overtypingCapturer){const r=this._overtypingCapturer.getLastOvertypedInfo(this._selectionIdx);r&&(i=r.value,s=r.multiline)}if(i&&s&&e.snippet){const r=this._model.getLineContent(this._selection.startLineNumber),o=Ni(r,0,this._selection.startColumn-1);let a=o;e.snippet.walk(c=>c===e?!1:(c instanceof to&&(a=Ni(fd(c.value).pop())),!0));const l=T_(a,o);i=i.replace(/(\r\n|\r|\n)(.*)/g,(c,u,h)=>`${u}${a.substr(l)}${h}`)}return i}else{if(t==="TM_CURRENT_LINE")return this._model.getLineContent(this._selection.positionLineNumber);if(t==="TM_CURRENT_WORD"){const i=this._model.getWordAtPosition({lineNumber:this._selection.positionLineNumber,column:this._selection.positionColumn});return i&&i.word||void 0}else{if(t==="TM_LINE_INDEX")return String(this._selection.positionLineNumber-1);if(t==="TM_LINE_NUMBER")return String(this._selection.positionLineNumber);if(t==="CURSOR_INDEX")return String(this._selectionIdx);if(t==="CURSOR_NUMBER")return String(this._selectionIdx+1)}}}}class One{constructor(e,t){this._labelService=e,this._model=t}resolve(e){const{name:t}=e;if(t==="TM_FILENAME")return Cp(this._model.uri.fsPath);if(t==="TM_FILENAME_BASE"){const i=Cp(this._model.uri.fsPath),s=i.lastIndexOf(".");return s<=0?i:i.slice(0,s)}else{if(t==="TM_DIRECTORY")return dge(this._model.uri.fsPath)==="."?"":this._labelService.getUriLabel(KO(this._model.uri));if(t==="TM_FILEPATH")return this._labelService.getUriLabel(this._model.uri);if(t==="RELATIVE_FILEPATH")return this._labelService.getUriLabel(this._model.uri,{relative:!0,noPrefix:!0})}}}class Fne{constructor(e,t,i,s){this._readClipboardText=e,this._selectionIdx=t,this._selectionCount=i,this._spread=s}resolve(e){if(e.name!=="CLIPBOARD")return;const t=this._readClipboardText();if(t){if(this._spread){const i=t.split(/\r\n|\n|\r/).filter(s=>!tge(s));if(i.length===this._selectionCount)return i[this._selectionIdx]}return t}}}let rR=class{constructor(e,t,i){this._model=e,this._selection=t,this._languageConfigurationService=i}resolve(e){const{name:t}=e,i=this._model.getLanguageIdAtPosition(this._selection.selectionStartLineNumber,this._selection.selectionStartColumn),s=this._languageConfigurationService.getLanguageConfiguration(i).comments;if(s){if(t==="LINE_COMMENT")return s.lineCommentToken||void 0;if(t==="BLOCK_COMMENT_START")return s.blockCommentStartToken||void 0;if(t==="BLOCK_COMMENT_END")return s.blockCommentEndToken||void 0}}};rR=Gst([Yst(2,Bi)],rR);class vu{constructor(){this._date=new Date}resolve(e){const{name:t}=e;if(t==="CURRENT_YEAR")return String(this._date.getFullYear());if(t==="CURRENT_YEAR_SHORT")return String(this._date.getFullYear()).slice(-2);if(t==="CURRENT_MONTH")return String(this._date.getMonth().valueOf()+1).padStart(2,"0");if(t==="CURRENT_DATE")return String(this._date.getDate().valueOf()).padStart(2,"0");if(t==="CURRENT_HOUR")return String(this._date.getHours().valueOf()).padStart(2,"0");if(t==="CURRENT_MINUTE")return String(this._date.getMinutes().valueOf()).padStart(2,"0");if(t==="CURRENT_SECOND")return String(this._date.getSeconds().valueOf()).padStart(2,"0");if(t==="CURRENT_DAY_NAME")return vu.dayNames[this._date.getDay()];if(t==="CURRENT_DAY_NAME_SHORT")return vu.dayNamesShort[this._date.getDay()];if(t==="CURRENT_MONTH_NAME")return vu.monthNames[this._date.getMonth()];if(t==="CURRENT_MONTH_NAME_SHORT")return vu.monthNamesShort[this._date.getMonth()];if(t==="CURRENT_SECONDS_UNIX")return String(Math.floor(this._date.getTime()/1e3));if(t==="CURRENT_TIMEZONE_OFFSET"){const i=this._date.getTimezoneOffset(),s=i>0?"-":"+",r=Math.trunc(Math.abs(i/60)),o=r<10?"0"+r:r,a=Math.abs(i)-r*60,l=a<10?"0"+a:a;return s+o+":"+l}}}vu.dayNames=[v("Sunday","Sunday"),v("Monday","Monday"),v("Tuesday","Tuesday"),v("Wednesday","Wednesday"),v("Thursday","Thursday"),v("Friday","Friday"),v("Saturday","Saturday")];vu.dayNamesShort=[v("SundayShort","Sun"),v("MondayShort","Mon"),v("TuesdayShort","Tue"),v("WednesdayShort","Wed"),v("ThursdayShort","Thu"),v("FridayShort","Fri"),v("SaturdayShort","Sat")];vu.monthNames=[v("January","January"),v("February","February"),v("March","March"),v("April","April"),v("May","May"),v("June","June"),v("July","July"),v("August","August"),v("September","September"),v("October","October"),v("November","November"),v("December","December")];vu.monthNamesShort=[v("JanuaryShort","Jan"),v("FebruaryShort","Feb"),v("MarchShort","Mar"),v("AprilShort","Apr"),v("MayShort","May"),v("JuneShort","Jun"),v("JulyShort","Jul"),v("AugustShort","Aug"),v("SeptemberShort","Sep"),v("OctoberShort","Oct"),v("NovemberShort","Nov"),v("DecemberShort","Dec")];class Bne{constructor(e){this._workspaceService=e}resolve(e){if(!this._workspaceService)return;const t=cit(this._workspaceService.getWorkspace());if(!oit(t)){if(e.name==="WORKSPACE_NAME")return this._resolveWorkspaceName(t);if(e.name==="WORKSPACE_FOLDER")return this._resoveWorkspacePath(t)}}_resolveWorkspaceName(e){if(YW(e))return Cp(e.uri.path);let t=Cp(e.configPath.path);return t.endsWith(ZW)&&(t=t.substr(0,t.length-ZW.length-1)),t}_resoveWorkspacePath(e){if(YW(e))return Pne(e.uri.fsPath);const t=Cp(e.configPath.path);let i=e.configPath.fsPath;return i.endsWith(t)&&(i=i.substr(0,i.length-t.length-1)),i?Pne(i):"/"}}class Wne{resolve(e){const{name:t}=e;if(t==="RANDOM")return Math.random().toString().slice(-6);if(t==="RANDOM_HEX")return Math.random().toString(16).slice(-6);if(t==="UUID")return T2()}}var Zst=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},Xst=function(n,e){return function(t,i){e(t,i,n)}},jc;class hl{constructor(e,t,i){this._editor=e,this._snippet=t,this._snippetLineLeadingWhitespace=i,this._offset=-1,this._nestingLevel=1,this._placeholderGroups=RJ(t.placeholders,fl.compareByIndex),this._placeholderGroupsIdx=-1}initialize(e){this._offset=e.newPosition}dispose(){this._placeholderDecorations&&this._editor.removeDecorations([...this._placeholderDecorations.values()]),this._placeholderGroups.length=0}_initDecorations(){if(this._offset===-1)throw new Error("Snippet not initialized!");if(this._placeholderDecorations)return;this._placeholderDecorations=new Map;const e=this._editor.getModel();this._editor.changeDecorations(t=>{for(const i of this._snippet.placeholders){const s=this._snippet.offset(i),r=this._snippet.fullLen(i),o=M.fromPositions(e.getPositionAt(this._offset+s),e.getPositionAt(this._offset+s+r)),a=i.isFinalTabstop?hl._decor.inactiveFinal:hl._decor.inactive,l=t.addDecoration(o,a);this._placeholderDecorations.set(i,l)}})}move(e){if(!this._editor.hasModel())return[];if(this._initDecorations(),this._placeholderGroupsIdx>=0){const s=[];for(const r of this._placeholderGroups[this._placeholderGroupsIdx])if(r.transform){const o=this._placeholderDecorations.get(r),a=this._editor.getModel().getDecorationRange(o),l=this._editor.getModel().getValueInRange(a),c=r.transform.resolve(l).split(/\r\n|\r|\n/);for(let u=1;u<c.length;u++)c[u]=this._editor.getModel().normalizeIndentation(this._snippetLineLeadingWhitespace+c[u]);s.push(un.replace(a,c.join(this._editor.getModel().getEOL())))}s.length>0&&this._editor.executeEdits("snippet.placeholderTransform",s)}let t=!1;e===!0&&this._placeholderGroupsIdx<this._placeholderGroups.length-1?(this._placeholderGroupsIdx+=1,t=!0):e===!1&&this._placeholderGroupsIdx>0&&(this._placeholderGroupsIdx-=1,t=!0);const i=this._editor.getModel().changeDecorations(s=>{const r=new Set,o=[];for(const a of this._placeholderGroups[this._placeholderGroupsIdx]){const l=this._placeholderDecorations.get(a),c=this._editor.getModel().getDecorationRange(l);o.push(new Ze(c.startLineNumber,c.startColumn,c.endLineNumber,c.endColumn)),t=t&&this._hasPlaceholderBeenCollapsed(a),s.changeDecorationOptions(l,a.isFinalTabstop?hl._decor.activeFinal:hl._decor.active),r.add(a);for(const u of this._snippet.enclosingPlaceholders(a)){const h=this._placeholderDecorations.get(u);s.changeDecorationOptions(h,u.isFinalTabstop?hl._decor.activeFinal:hl._decor.active),r.add(u)}}for(const[a,l]of this._placeholderDecorations)r.has(a)||s.changeDecorationOptions(l,a.isFinalTabstop?hl._decor.inactiveFinal:hl._decor.inactive);return o});return t?this.move(e):i??[]}_hasPlaceholderBeenCollapsed(e){let t=e;for(;t;){if(t instanceof fl){const i=this._placeholderDecorations.get(t);if(this._editor.getModel().getDecorationRange(i).isEmpty()&&t.toString().length>0)return!0}t=t.parent}return!1}get isAtFirstPlaceholder(){return this._placeholderGroupsIdx<=0||this._placeholderGroups.length===0}get isAtLastPlaceholder(){return this._placeholderGroupsIdx===this._placeholderGroups.length-1}get hasPlaceholder(){return this._snippet.placeholders.length>0}get isTrivialSnippet(){if(this._snippet.placeholders.length===0)return!0;if(this._snippet.placeholders.length===1){const[e]=this._snippet.placeholders;if(e.isFinalTabstop&&this._snippet.rightMostDescendant===e)return!0}return!1}computePossibleSelections(){const e=new Map;for(const t of this._placeholderGroups){let i;for(const s of t){if(s.isFinalTabstop)break;i||(i=[],e.set(s.index,i));const r=this._placeholderDecorations.get(s),o=this._editor.getModel().getDecorationRange(r);if(!o){e.delete(s.index);break}i.push(o)}}return e}get activeChoice(){if(!this._placeholderDecorations)return;const e=this._placeholderGroups[this._placeholderGroupsIdx][0];if(!(e!=null&&e.choice))return;const t=this._placeholderDecorations.get(e);if(!t)return;const i=this._editor.getModel().getDecorationRange(t);if(i)return{range:i,choice:e.choice}}get hasChoice(){let e=!1;return this._snippet.walk(t=>(e=t instanceof $C,!e)),e}merge(e){const t=this._editor.getModel();this._nestingLevel*=10,this._editor.changeDecorations(i=>{for(const s of this._placeholderGroups[this._placeholderGroupsIdx]){const r=e.shift();console.assert(r._offset!==-1),console.assert(!r._placeholderDecorations);const o=r._snippet.placeholderInfo.last.index;for(const l of r._snippet.placeholderInfo.all)l.isFinalTabstop?l.index=s.index+(o+1)/this._nestingLevel:l.index=s.index+l.index/this._nestingLevel;this._snippet.replace(s,r._snippet.children);const a=this._placeholderDecorations.get(s);i.removeDecoration(a),this._placeholderDecorations.delete(s);for(const l of r._snippet.placeholders){const c=r._snippet.offset(l),u=r._snippet.fullLen(l),h=M.fromPositions(t.getPositionAt(r._offset+c),t.getPositionAt(r._offset+c+u)),d=i.addDecoration(h,hl._decor.inactive);this._placeholderDecorations.set(l,d)}}this._placeholderGroups=RJ(this._snippet.placeholders,fl.compareByIndex)})}}hl._decor={active:yt.register({description:"snippet-placeholder-1",stickiness:0,className:"snippet-placeholder"}),inactive:yt.register({description:"snippet-placeholder-2",stickiness:1,className:"snippet-placeholder"}),activeFinal:yt.register({description:"snippet-placeholder-3",stickiness:1,className:"finish-snippet-placeholder"}),inactiveFinal:yt.register({description:"snippet-placeholder-4",stickiness:1,className:"finish-snippet-placeholder"})};const Vne={overwriteBefore:0,overwriteAfter:0,adjustWhitespace:!0,clipboardText:void 0,overtypingCapturer:void 0};let oR=jc=class{static adjustWhitespace(e,t,i,s,r){const o=e.getLineContent(t.lineNumber),a=Ni(o,0,t.column-1);let l;return s.walk(c=>{if(!(c instanceof to)||c.parent instanceof $C||r&&!r.has(c))return!0;const u=c.value.split(/\r\n|\r|\n/);if(i){const d=s.offset(c);if(d===0)u[0]=e.normalizeIndentation(u[0]);else{l=l??s.toString();const f=l.charCodeAt(d-1);(f===10||f===13)&&(u[0]=e.normalizeIndentation(a+u[0]))}for(let f=1;f<u.length;f++)u[f]=e.normalizeIndentation(a+u[f])}const h=u.join(e.getEOL());return h!==c.value&&(c.parent.replace(c,[new to(h)]),l=void 0),!0}),a}static adjustSelection(e,t,i,s){if(i!==0||s!==0){const{positionLineNumber:r,positionColumn:o}=t,a=o-i,l=o+s,c=e.validateRange({startLineNumber:r,startColumn:a,endLineNumber:r,endColumn:l});t=Ze.createWithDirection(c.startLineNumber,c.startColumn,c.endLineNumber,c.endColumn,t.getDirection())}return t}static createEditsAndSnippetsFromSelections(e,t,i,s,r,o,a,l,c){const u=[],h=[];if(!e.hasModel())return{edits:u,snippets:h};const d=e.getModel(),f=e.invokeWithinContext(w=>w.get(K_)),g=e.invokeWithinContext(w=>new One(w.get(Ry),d)),p=()=>a,m=d.getValueInRange(jc.adjustSelection(d,e.getSelection(),i,0)),_=d.getValueInRange(jc.adjustSelection(d,e.getSelection(),0,s)),b=d.getLineFirstNonWhitespaceColumn(e.getSelection().positionLineNumber),y=e.getSelections().map((w,S)=>({selection:w,idx:S})).sort((w,S)=>M.compareRangesUsingStarts(w.selection,S.selection));for(const{selection:w,idx:S}of y){let E=jc.adjustSelection(d,w,i,0),L=jc.adjustSelection(d,w,0,s);m!==d.getValueInRange(E)&&(E=w),_!==d.getValueInRange(L)&&(L=w);const k=w.setStartPosition(E.startLineNumber,E.startColumn).setEndPosition(L.endLineNumber,L.endColumn),x=new Hy().parse(t,!0,r),I=k.getStartPosition(),N=jc.adjustWhitespace(d,I,o||S>0&&b!==d.getLineFirstNonWhitespaceColumn(w.positionLineNumber),x);x.resolveVariables(new Rne([g,new Fne(p,S,y.length,e.getOption(78)==="spread"),new Mne(d,w,S,l),new rR(d,w,c),new vu,new Bne(f),new Wne])),u[S]=un.replace(k,x.toString()),u[S].identifier={major:S,minor:0},u[S]._isTracked=!0,h[S]=new hl(e,x,N)}return{edits:u,snippets:h}}static createEditsAndSnippetsFromEdits(e,t,i,s,r,o,a){if(!e.hasModel()||t.length===0)return{edits:[],snippets:[]};const l=[],c=e.getModel(),u=new Hy,h=new GE,d=new Rne([e.invokeWithinContext(g=>new One(g.get(Ry),c)),new Fne(()=>r,0,e.getSelections().length,e.getOption(78)==="spread"),new Mne(c,e.getSelection(),0,o),new rR(c,e.getSelection(),a),new vu,new Bne(e.invokeWithinContext(g=>g.get(K_))),new Wne]);t=t.sort((g,p)=>M.compareRangesUsingStarts(g.range,p.range));let f=0;for(let g=0;g<t.length;g++){const{range:p,template:m}=t[g];if(g>0){const S=t[g-1].range,E=M.fromPositions(S.getEndPosition(),p.getStartPosition()),L=new to(c.getValueInRange(E));h.appendChild(L),f+=L.value.length}const _=u.parseFragment(m,h);jc.adjustWhitespace(c,p.getStartPosition(),!0,h,new Set(_)),h.resolveVariables(d);const b=h.toString(),y=b.slice(f);f=b.length;const w=un.replace(p,y);w.identifier={major:g,minor:0},w._isTracked=!0,l.push(w)}return u.ensureFinalTabstop(h,i,!0),{edits:l,snippets:[new hl(e,h,"")]}}constructor(e,t,i=Vne,s){this._editor=e,this._template=t,this._options=i,this._languageConfigurationService=s,this._templateMerges=[],this._snippets=[]}dispose(){yi(this._snippets)}_logInfo(){return`template="${this._template}", merged_templates="${this._templateMerges.join(" -> ")}"`}insert(){if(!this._editor.hasModel())return;const{edits:e,snippets:t}=typeof this._template=="string"?jc.createEditsAndSnippetsFromSelections(this._editor,this._template,this._options.overwriteBefore,this._options.overwriteAfter,!1,this._options.adjustWhitespace,this._options.clipboardText,this._options.overtypingCapturer,this._languageConfigurationService):jc.createEditsAndSnippetsFromEdits(this._editor,this._template,!1,this._options.adjustWhitespace,this._options.clipboardText,this._options.overtypingCapturer,this._languageConfigurationService);this._snippets=t,this._editor.executeEdits("snippet",e,i=>{const s=i.filter(r=>!!r.identifier);for(let r=0;r<t.length;r++)t[r].initialize(s[r].textChange);return this._snippets[0].hasPlaceholder?this._move(!0):s.map(r=>Ze.fromPositions(r.range.getEndPosition()))}),this._editor.revealRange(this._editor.getSelections()[0])}merge(e,t=Vne){if(!this._editor.hasModel())return;this._templateMerges.push([this._snippets[0]._nestingLevel,this._snippets[0]._placeholderGroupsIdx,e]);const{edits:i,snippets:s}=jc.createEditsAndSnippetsFromSelections(this._editor,e,t.overwriteBefore,t.overwriteAfter,!0,t.adjustWhitespace,t.clipboardText,t.overtypingCapturer,this._languageConfigurationService);this._editor.executeEdits("snippet",i,r=>{const o=r.filter(l=>!!l.identifier);for(let l=0;l<s.length;l++)s[l].initialize(o[l].textChange);const a=s[0].isTrivialSnippet;if(!a){for(const l of this._snippets)l.merge(s);console.assert(s.length===0)}return this._snippets[0].hasPlaceholder&&!a?this._move(void 0):o.map(l=>Ze.fromPositions(l.range.getEndPosition()))})}next(){const e=this._move(!0);this._editor.setSelections(e),this._editor.revealPositionInCenterIfOutsideViewport(e[0].getPosition())}prev(){const e=this._move(!1);this._editor.setSelections(e),this._editor.revealPositionInCenterIfOutsideViewport(e[0].getPosition())}_move(e){const t=[];for(const i of this._snippets){const s=i.move(e);t.push(...s)}return t}get isAtFirstPlaceholder(){return this._snippets[0].isAtFirstPlaceholder}get isAtLastPlaceholder(){return this._snippets[0].isAtLastPlaceholder}get hasPlaceholder(){return this._snippets[0].hasPlaceholder}get hasChoice(){return this._snippets[0].hasChoice}get activeChoice(){return this._snippets[0].activeChoice}isSelectionWithinPlaceholders(){if(!this.hasPlaceholder)return!1;const e=this._editor.getSelections();if(e.length<this._snippets.length)return!1;const t=new Map;for(const i of this._snippets){const s=i.computePossibleSelections();if(t.size===0)for(const[r,o]of s){o.sort(M.compareRangesUsingStarts);for(const a of e)if(o[0].containsRange(a)){t.set(r,[]);break}}if(t.size===0)return!1;t.forEach((r,o)=>{r.push(...s.get(o))})}e.sort(M.compareRangesUsingStarts);for(const[i,s]of t){if(s.length!==e.length){t.delete(i);continue}s.sort(M.compareRangesUsingStarts);for(let r=0;r<s.length;r++)if(!s[r].containsRange(e[r])){t.delete(i);continue}}return t.size>0}};oR=jc=Zst([Xst(3,Bi)],oR);var Qst=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},qI=function(n,e){return function(t,i){e(t,i,n)}},x0;const Hne={overwriteBefore:0,overwriteAfter:0,undoStopBefore:!0,undoStopAfter:!0,adjustWhitespace:!0,clipboardText:void 0,overtypingCapturer:void 0};let sr=x0=class{static get(e){return e.getContribution(x0.ID)}constructor(e,t,i,s,r){this._editor=e,this._logService=t,this._languageFeaturesService=i,this._languageConfigurationService=r,this._snippetListener=new xe,this._modelVersionId=-1,this._inSnippet=x0.InSnippetMode.bindTo(s),this._hasNextTabstop=x0.HasNextTabstop.bindTo(s),this._hasPrevTabstop=x0.HasPrevTabstop.bindTo(s)}dispose(){var e;this._inSnippet.reset(),this._hasPrevTabstop.reset(),this._hasNextTabstop.reset(),(e=this._session)===null||e===void 0||e.dispose(),this._snippetListener.dispose()}insert(e,t){try{this._doInsert(e,typeof t>"u"?Hne:{...Hne,...t})}catch(i){this.cancel(),this._logService.error(i),this._logService.error("snippet_error"),this._logService.error("insert_template=",e),this._logService.error("existing_template=",this._session?this._session._logInfo():"<no_session>")}}_doInsert(e,t){var i;if(this._editor.hasModel()){if(this._snippetListener.clear(),t.undoStopBefore&&this._editor.getModel().pushStackElement(),this._session&&typeof e!="string"&&this.cancel(),this._session?(Si(typeof e=="string"),this._session.merge(e,t)):(this._modelVersionId=this._editor.getModel().getAlternativeVersionId(),this._session=new oR(this._editor,e,t,this._languageConfigurationService),this._session.insert()),t.undoStopAfter&&this._editor.getModel().pushStackElement(),!((i=this._session)===null||i===void 0)&&i.hasChoice){const s={_debugDisplayName:"snippetChoiceCompletions",provideCompletionItems:(u,h)=>{if(!this._session||u!==this._editor.getModel()||!he.equals(this._editor.getPosition(),h))return;const{activeChoice:d}=this._session;if(!d||d.choice.options.length===0)return;const f=u.getValueInRange(d.range),g=!!d.choice.options.find(m=>m.value===f),p=[];for(let m=0;m<d.choice.options.length;m++){const _=d.choice.options[m];p.push({kind:13,label:_.value,insertText:_.value,sortText:"a".repeat(m+1),range:d.range,filterText:g?`${f}_${_.value}`:void 0,command:{id:"jumpToNextSnippetPlaceholder",title:v("next","Go to next placeholder...")}})}return{suggestions:p}}},r=this._editor.getModel();let o,a=!1;const l=()=>{o==null||o.dispose(),a=!1},c=()=>{a||(o=this._languageFeaturesService.completionProvider.register({language:r.getLanguageId(),pattern:r.uri.fsPath,scheme:r.uri.scheme,exclusive:!0},s),this._snippetListener.add(o),a=!0)};this._choiceCompletions={provider:s,enable:c,disable:l}}this._updateState(),this._snippetListener.add(this._editor.onDidChangeModelContent(s=>s.isFlush&&this.cancel())),this._snippetListener.add(this._editor.onDidChangeModel(()=>this.cancel())),this._snippetListener.add(this._editor.onDidChangeCursorSelection(()=>this._updateState()))}}_updateState(){if(!(!this._session||!this._editor.hasModel())){if(this._modelVersionId===this._editor.getModel().getAlternativeVersionId())return this.cancel();if(!this._session.hasPlaceholder)return this.cancel();if(this._session.isAtLastPlaceholder||!this._session.isSelectionWithinPlaceholders())return this._editor.getModel().pushStackElement(),this.cancel();this._inSnippet.set(!0),this._hasPrevTabstop.set(!this._session.isAtFirstPlaceholder),this._hasNextTabstop.set(!this._session.isAtLastPlaceholder),this._handleChoice()}}_handleChoice(){var e;if(!this._session||!this._editor.hasModel()){this._currentChoice=void 0;return}const{activeChoice:t}=this._session;if(!t||!this._choiceCompletions){(e=this._choiceCompletions)===null||e===void 0||e.disable(),this._currentChoice=void 0;return}this._currentChoice!==t.choice&&(this._currentChoice=t.choice,this._choiceCompletions.enable(),queueMicrotask(()=>{Kst(this._editor,this._choiceCompletions.provider)}))}finish(){for(;this._inSnippet.get();)this.next()}cancel(e=!1){var t;this._inSnippet.reset(),this._hasPrevTabstop.reset(),this._hasNextTabstop.reset(),this._snippetListener.clear(),this._currentChoice=void 0,(t=this._session)===null||t===void 0||t.dispose(),this._session=void 0,this._modelVersionId=-1,e&&this._editor.setSelections([this._editor.getSelection()])}prev(){var e;(e=this._session)===null||e===void 0||e.prev(),this._updateState()}next(){var e;(e=this._session)===null||e===void 0||e.next(),this._updateState()}isInSnippet(){return!!this._inSnippet.get()}};sr.ID="snippetController2";sr.InSnippetMode=new ze("inSnippetMode",!1,v("inSnippetMode","Whether the editor in current in snippet mode"));sr.HasNextTabstop=new ze("hasNextTabstop",!1,v("hasNextTabstop","Whether there is a next tab stop when in snippet mode"));sr.HasPrevTabstop=new ze("hasPrevTabstop",!1,v("hasPrevTabstop","Whether there is a previous tab stop when in snippet mode"));sr=x0=Qst([qI(1,ga),qI(2,Ge),qI(3,ft),qI(4,Bi)],sr);ti(sr.ID,sr,4);const V2=Ks.bindToContribution(sr.get);Be(new V2({id:"jumpToNextSnippetPlaceholder",precondition:ke.and(sr.InSnippetMode,sr.HasNextTabstop),handler:n=>n.next(),kbOpts:{weight:130,kbExpr:$.editorTextFocus,primary:2}}));Be(new V2({id:"jumpToPrevSnippetPlaceholder",precondition:ke.and(sr.InSnippetMode,sr.HasPrevTabstop),handler:n=>n.prev(),kbOpts:{weight:130,kbExpr:$.editorTextFocus,primary:1026}}));Be(new V2({id:"leaveSnippet",precondition:sr.InSnippetMode,handler:n=>n.cancel(!0),kbOpts:{weight:130,kbExpr:$.editorTextFocus,primary:9,secondary:[1033]}}));Be(new V2({id:"acceptSnippet",precondition:sr.InSnippetMode,handler:n=>n.finish()}));var Jst=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},$3=function(n,e){return function(t,i){e(t,i,n)}},Ta;(function(n){n[n.Undo=0]="Undo",n[n.Redo=1]="Redo",n[n.AcceptWord=2]="AcceptWord",n[n.Other=3]="Other"})(Ta||(Ta={}));let mV=class extends pe{get isAcceptingPartially(){return this._isAcceptingPartially}constructor(e,t,i,s,r,o,a,l,c,u,h,d){super(),this.textModel=e,this.selectedSuggestItem=t,this.cursorPosition=i,this.textModelVersionId=s,this._debounceValue=r,this._suggestPreviewEnabled=o,this._suggestPreviewMode=a,this._inlineSuggestMode=l,this._enabled=c,this._instantiationService=u,this._commandService=h,this._languageConfigurationService=d,this._source=this._register(this._instantiationService.createInstance(pV,this.textModel,this.textModelVersionId,this._debounceValue)),this._isActive=si(this,!1),this._forceUpdateSignal=Gq("forceUpdate"),this._selectedInlineCompletionId=si(this,void 0),this._isAcceptingPartially=!1,this._preserveCurrentCompletionReasons=new Set([Ta.Redo,Ta.Undo,Ta.AcceptWord]),this._fetchInlineCompletions=jKe({owner:this,createEmptyChangeSummary:()=>({preserveCurrentCompletion:!1,inlineCompletionTriggerKind:Rf.Automatic}),handleChange:(g,p)=>(g.didChange(this.textModelVersionId)&&this._preserveCurrentCompletionReasons.has(g.change)?p.preserveCurrentCompletion=!0:g.didChange(this._forceUpdateSignal)&&(p.inlineCompletionTriggerKind=g.change),!0)},(g,p)=>{if(this._forceUpdateSignal.read(g),!(this._enabled.read(g)&&this.selectedSuggestItem.read(g)||this._isActive.read(g))){this._source.cancelUpdate();return}this.textModelVersionId.read(g);const _=this.selectedInlineCompletion.get(),b=p.preserveCurrentCompletion||_!=null&&_.forwardStable?_:void 0,y=this._source.suggestWidgetInlineCompletions.get(),w=this.selectedSuggestItem.read(g);if(y&&!w){const L=this._source.inlineCompletions.get();ln(k=>{(!L||y.request.versionId>L.request.versionId)&&this._source.inlineCompletions.set(y.clone(),k),this._source.clearSuggestWidgetInlineCompletions(k)})}const S=this.cursorPosition.read(g),E={triggerKind:p.inlineCompletionTriggerKind,selectedSuggestionInfo:w==null?void 0:w.toSelectedSuggestionInfo()};return this._source.fetch(S,E,b)}),this._filteredInlineCompletionItems=St(this,g=>{const p=this._source.inlineCompletions.read(g);if(!p)return[];const m=this.cursorPosition.read(g);return p.inlineCompletions.filter(b=>b.isVisible(this.textModel,m,g))}),this.selectedInlineCompletionIndex=St(this,g=>{const p=this._selectedInlineCompletionId.read(g),m=this._filteredInlineCompletionItems.read(g),_=this._selectedInlineCompletionId===void 0?-1:m.findIndex(b=>b.semanticId===p);return _===-1?(this._selectedInlineCompletionId.set(void 0,void 0),0):_}),this.selectedInlineCompletion=St(this,g=>{const p=this._filteredInlineCompletionItems.read(g),m=this.selectedInlineCompletionIndex.read(g);return p[m]}),this.lastTriggerKind=this._source.inlineCompletions.map(this,g=>g==null?void 0:g.request.context.triggerKind),this.inlineCompletionsCount=St(this,g=>{if(this.lastTriggerKind.read(g)===Rf.Explicit)return this._filteredInlineCompletionItems.read(g).length}),this.state=j9({owner:this,equalityComparer:(g,p)=>!g||!p?g===p:Sne(g.ghostText,p.ghostText)&&g.inlineCompletion===p.inlineCompletion&&g.suggestItem===p.suggestItem},g=>{var p;const m=this.textModel,_=this.selectedSuggestItem.read(g);if(_){const b=_.toSingleTextEdit().removeCommonPrefix(m),y=this._computeAugmentedCompletion(b,g);if(!this._suggestPreviewEnabled.read(g)&&!y)return;const S=(p=y==null?void 0:y.edit)!==null&&p!==void 0?p:b,E=y?y.edit.text.length-b.text.length:0,L=this._suggestPreviewMode.read(g),k=this.cursorPosition.read(g),x=S.computeGhostText(m,L,k,E);return{ghostText:x??new nR(S.range.endLineNumber,[]),inlineCompletion:y==null?void 0:y.completion,suggestItem:_}}else{if(!this._isActive.read(g))return;const b=this.selectedInlineCompletion.read(g);if(!b)return;const y=b.toSingleTextEdit(g),w=this._inlineSuggestMode.read(g),S=this.cursorPosition.read(g),E=y.computeGhostText(m,w,S);return E?{ghostText:E,inlineCompletion:b,suggestItem:void 0}:void 0}}),this.ghostText=j9({owner:this,equalityComparer:Sne},g=>{const p=this.state.read(g);if(p)return p.ghostText}),this._register(NE(this._fetchInlineCompletions));let f;this._register(pi(g=>{var p,m;const _=this.state.read(g),b=_==null?void 0:_.inlineCompletion;if((b==null?void 0:b.semanticId)!==(f==null?void 0:f.semanticId)&&(f=b,b)){const y=b.inlineCompletion,w=y.source;(m=(p=w.provider).handleItemDidShow)===null||m===void 0||m.call(p,w.inlineCompletions,y.sourceInlineCompletion,y.insertText)}}))}async trigger(e){this._isActive.set(!0,e),await this._fetchInlineCompletions.get()}async triggerExplicitly(e){KL(e,t=>{this._isActive.set(!0,t),this._forceUpdateSignal.trigger(t,Rf.Explicit)}),await this._fetchInlineCompletions.get()}stop(e){KL(e,t=>{this._isActive.set(!1,t),this._source.clear(t)})}_computeAugmentedCompletion(e,t){const i=this.textModel,s=this._source.suggestWidgetInlineCompletions.read(t),r=s?s.inlineCompletions:[this.selectedInlineCompletion.read(t)].filter(hL);return iUe(r,a=>{let l=a.toSingleTextEdit(t);return l=l.removeCommonPrefix(i,M.fromPositions(l.range.getStartPosition(),e.range.getEndPosition())),l.augments(e)?{edit:l,completion:a}:void 0})}async _deltaSelectedInlineCompletionIndex(e){await this.triggerExplicitly();const t=this._filteredInlineCompletionItems.get()||[];if(t.length>0){const i=(this.selectedInlineCompletionIndex.get()+e+t.length)%t.length;this._selectedInlineCompletionId.set(t[i].semanticId,void 0)}else this._selectedInlineCompletionId.set(void 0,void 0)}async next(){await this._deltaSelectedInlineCompletionIndex(1)}async previous(){await this._deltaSelectedInlineCompletionIndex(-1)}async accept(e){var t;if(e.getModel()!==this.textModel)throw new an;const i=this.state.get();if(!i||i.ghostText.isEmpty()||!i.inlineCompletion)return;const s=i.inlineCompletion.toInlineCompletion(void 0);e.pushUndoStop(),s.snippetInfo?(e.executeEdits("inlineSuggestion.accept",[un.replaceMove(s.range,""),...s.additionalTextEdits]),e.setPosition(s.snippetInfo.range.getStartPosition()),(t=sr.get(e))===null||t===void 0||t.insert(s.snippetInfo.snippet,{undoStopBefore:!1})):e.executeEdits("inlineSuggestion.accept",[un.replaceMove(s.range,s.insertText),...s.additionalTextEdits]),s.command&&s.source.addRef(),ln(r=>{this._source.clear(r),this._isActive.set(!1,r)}),s.command&&(await this._commandService.executeCommand(s.command.id,...s.command.arguments||[]).then(void 0,Jn),s.source.removeRef())}async acceptNextWord(e){await this._acceptNext(e,(t,i)=>{const s=this.textModel.getLanguageIdAtPosition(t.lineNumber,t.column),r=this._languageConfigurationService.getLanguageConfiguration(s),o=new RegExp(r.wordDefinition.source,r.wordDefinition.flags.replace("g","")),a=i.match(o);let l=0;a&&a.index!==void 0?a.index===0?l=a[0].length:l=a.index:l=i.length;const u=/\s+/g.exec(i);return u&&u.index!==void 0&&u.index+u[0].length<l&&(l=u.index+u[0].length),l})}async acceptNextLine(e){await this._acceptNext(e,(t,i)=>{const s=i.match(/\n/);return s&&s.index!==void 0?s.index+1:i.length})}async _acceptNext(e,t){if(e.getModel()!==this.textModel)throw new an;const i=this.state.get();if(!i||i.ghostText.isEmpty()||!i.inlineCompletion)return;const s=i.ghostText,r=i.inlineCompletion.toInlineCompletion(void 0);if(r.snippetInfo||r.filterText!==r.insertText){await this.accept(e);return}const o=s.parts[0],a=new he(s.lineNumber,o.column),l=o.lines.join(` +`),c=t(a,l);if(c===l.length&&s.parts.length===1){this.accept(e);return}const u=l.substring(0,c);r.source.addRef();try{this._isAcceptingPartially=!0;try{e.pushUndoStop(),e.executeEdits("inlineSuggestion.accept",[un.replace(M.fromPositions(a),u)]);const h=hV(u);e.setPosition(uV(a,h))}finally{this._isAcceptingPartially=!1}if(r.source.provider.handlePartialAccept){const h=M.fromPositions(r.range.getStartPosition(),uV(a,hV(u))),d=e.getModel().getValueInRange(h,1);r.source.provider.handlePartialAccept(r.source.inlineCompletions,r.sourceInlineCompletion,d.length)}}finally{r.source.removeRef()}}handleSuggestAccepted(e){var t,i;const s=e.toSingleTextEdit().removeCommonPrefix(this.textModel),r=this._computeAugmentedCompletion(s,void 0);if(!r)return;const o=r.completion.inlineCompletion;(i=(t=o.source.provider).handlePartialAccept)===null||i===void 0||i.call(t,o.source.inlineCompletions,o.sourceInlineCompletion,s.text.length)}};mV=Jst([$3(9,at),$3(10,Dn),$3(11,Bi)],mV);var ert=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},$ne=function(n,e){return function(t,i){e(t,i,n)}},ES;class _G{constructor(e){this.name=e}select(e,t,i){if(i.length===0)return 0;const s=i[0].score[0];for(let r=0;r<i.length;r++){const{score:o,completion:a}=i[r];if(o[0]!==s)break;if(a.preselect)return r}return 0}}class Mve extends _G{constructor(){super("first")}memorize(e,t,i){}toJSON(){}fromJSON(){}}class trt extends _G{constructor(){super("recentlyUsed"),this._cache=new Rm(300,.66),this._seq=0}memorize(e,t,i){const s=`${e.getLanguageId()}/${i.textLabel}`;this._cache.set(s,{touch:this._seq++,type:i.completion.kind,insertText:i.completion.insertText})}select(e,t,i){if(i.length===0)return 0;const s=e.getLineContent(t.lineNumber).substr(t.column-10,t.column-1);if(/\s$/.test(s))return super.select(e,t,i);const r=i[0].score[0];let o=-1,a=-1,l=-1;for(let c=0;c<i.length&&i[c].score[0]===r;c++){const u=`${e.getLanguageId()}/${i[c].textLabel}`,h=this._cache.peek(u);if(h&&h.touch>l&&h.type===i[c].completion.kind&&h.insertText===i[c].completion.insertText&&(l=h.touch,a=c),i[c].completion.preselect&&o===-1)return o=c}return a!==-1?a:o!==-1?o:0}toJSON(){return this._cache.toJSON()}fromJSON(e){this._cache.clear();const t=0;for(const[i,s]of e)s.touch=t,s.type=typeof s.type=="number"?s.type:TL.fromString(s.type),this._cache.set(i,s);this._seq=this._cache.size}}class irt extends _G{constructor(){super("recentlyUsedByPrefix"),this._trie=Rb.forStrings(),this._seq=0}memorize(e,t,i){const{word:s}=e.getWordUntilPosition(t),r=`${e.getLanguageId()}/${s}`;this._trie.set(r,{type:i.completion.kind,insertText:i.completion.insertText,touch:this._seq++})}select(e,t,i){const{word:s}=e.getWordUntilPosition(t);if(!s)return super.select(e,t,i);const r=`${e.getLanguageId()}/${s}`;let o=this._trie.get(r);if(o||(o=this._trie.findSubstr(r)),o)for(let a=0;a<i.length;a++){const{kind:l,insertText:c}=i[a].completion;if(l===o.type&&c===o.insertText)return a}return super.select(e,t,i)}toJSON(){const e=[];return this._trie.forEach((t,i)=>e.push([i,t])),e.sort((t,i)=>-(t[1].touch-i[1].touch)).forEach((t,i)=>t[1].touch=i),e.slice(0,200)}fromJSON(e){if(this._trie.clear(),e.length>0){this._seq=e[0][1].touch+1;for(const[t,i]of e)i.type=typeof i.type=="number"?i.type:TL.fromString(i.type),this._trie.set(t,i)}}}let mx=ES=class{constructor(e,t){this._storageService=e,this._configService=t,this._disposables=new xe,this._persistSoon=new Ei(()=>this._saveState(),500),this._disposables.add(e.onWillSaveState(i=>{i.reason===QL.SHUTDOWN&&this._saveState()}))}dispose(){this._disposables.dispose(),this._persistSoon.dispose()}memorize(e,t,i){this._withStrategy(e,t).memorize(e,t,i),this._persistSoon.schedule()}select(e,t,i){return this._withStrategy(e,t).select(e,t,i)}_withStrategy(e,t){var i;const s=this._configService.getValue("editor.suggestSelection",{overrideIdentifier:e.getLanguageIdAtPosition(t.lineNumber,t.column),resource:e.uri});if(((i=this._strategy)===null||i===void 0?void 0:i.name)!==s){this._saveState();const r=ES._strategyCtors.get(s)||Mve;this._strategy=new r;try{const a=this._configService.getValue("editor.suggest.shareSuggestSelections")?0:1,l=this._storageService.get(`${ES._storagePrefix}/${s}`,a);l&&this._strategy.fromJSON(JSON.parse(l))}catch{}}return this._strategy}_saveState(){if(this._strategy){const t=this._configService.getValue("editor.suggest.shareSuggestSelections")?0:1,i=JSON.stringify(this._strategy);this._storageService.store(`${ES._storagePrefix}/${this._strategy.name}`,i,t,1)}}};mx._strategyCtors=new Map([["recentlyUsedByPrefix",irt],["recentlyUsed",trt],["first",Mve]]);mx._storagePrefix="suggest/memories";mx=ES=ert([$ne(0,Rc),$ne(1,Ut)],mx);const H2=Bt("ISuggestMemories");jt(H2,mx,1);var nrt=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},srt=function(n,e){return function(t,i){e(t,i,n)}},_V;let _x=_V=class{constructor(e,t){this._editor=e,this._enabled=!1,this._ckAtEnd=_V.AtEnd.bindTo(t),this._configListener=this._editor.onDidChangeConfiguration(i=>i.hasChanged(122)&&this._update()),this._update()}dispose(){var e;this._configListener.dispose(),(e=this._selectionListener)===null||e===void 0||e.dispose(),this._ckAtEnd.reset()}_update(){const e=this._editor.getOption(122)==="on";if(this._enabled!==e)if(this._enabled=e,this._enabled){const t=()=>{if(!this._editor.hasModel()){this._ckAtEnd.set(!1);return}const i=this._editor.getModel(),s=this._editor.getSelection(),r=i.getWordAtPosition(s.getStartPosition());if(!r){this._ckAtEnd.set(!1);return}this._ckAtEnd.set(r.endColumn===s.getStartPosition().column)};this._selectionListener=this._editor.onDidChangeCursorSelection(t),t()}else this._selectionListener&&(this._ckAtEnd.reset(),this._selectionListener.dispose(),this._selectionListener=void 0)}};_x.AtEnd=new ze("atEndOfWord",!1);_x=_V=nrt([srt(1,ft)],_x);var rrt=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},ort=function(n,e){return function(t,i){e(t,i,n)}},DS;let Q_=DS=class{constructor(e,t){this._editor=e,this._index=0,this._ckOtherSuggestions=DS.OtherSuggestions.bindTo(t)}dispose(){this.reset()}reset(){var e;this._ckOtherSuggestions.reset(),(e=this._listener)===null||e===void 0||e.dispose(),this._model=void 0,this._acceptNext=void 0,this._ignore=!1}set({model:e,index:t},i){if(e.items.length===0){this.reset();return}if(DS._moveIndex(!0,e,t)===t){this.reset();return}this._acceptNext=i,this._model=e,this._index=t,this._listener=this._editor.onDidChangeCursorPosition(()=>{this._ignore||this.reset()}),this._ckOtherSuggestions.set(!0)}static _moveIndex(e,t,i){let s=i;for(let r=t.items.length;r>0&&(s=(s+t.items.length+(e?1:-1))%t.items.length,!(s===i||!t.items[s].completion.additionalTextEdits));r--);return s}next(){this._move(!0)}prev(){this._move(!1)}_move(e){if(this._model)try{this._ignore=!0,this._index=DS._moveIndex(e,this._model,this._index),this._acceptNext({index:this._index,item:this._model.items[this._index],model:this._model})}finally{this._ignore=!1}}};Q_.OtherSuggestions=new ze("hasOtherSuggestions",!1);Q_=DS=rrt([ort(1,ft)],Q_);class art{constructor(e,t,i,s){this._disposables=new xe,this._disposables.add(i.onDidSuggest(r=>{r.completionModel.items.length===0&&this.reset()})),this._disposables.add(i.onDidCancel(r=>{this.reset()})),this._disposables.add(t.onDidShow(()=>this._onItem(t.getFocusedItem()))),this._disposables.add(t.onDidFocus(this._onItem,this)),this._disposables.add(t.onDidHide(this.reset,this)),this._disposables.add(e.onWillType(r=>{if(this._active&&!t.isFrozen()&&i.state!==0){const o=r.charCodeAt(r.length-1);this._active.acceptCharacters.has(o)&&e.getOption(0)&&s(this._active.item)}}))}_onItem(e){if(!e||!Ir(e.item.completion.commitCharacters)){this.reset();return}if(this._active&&this._active.item.item===e.item)return;const t=new UA;for(const i of e.item.completion.commitCharacters)i.length>0&&t.add(i.charCodeAt(0));this._active={acceptCharacters:t,item:e}}reset(){this._active=void 0}dispose(){this._disposables.dispose()}}class Na{async provideSelectionRanges(e,t){const i=[];for(const s of t){const r=[];i.push(r);const o=new Map;await new Promise(a=>Na._bracketsRightYield(a,0,e,s,o)),await new Promise(a=>Na._bracketsLeftYield(a,0,e,s,o,r))}return i}static _bracketsRightYield(e,t,i,s,r){const o=new Map,a=Date.now();for(;;){if(t>=Na._maxRounds){e();break}if(!s){e();break}const l=i.bracketPairs.findNextBracket(s);if(!l){e();break}if(Date.now()-a>Na._maxDuration){setTimeout(()=>Na._bracketsRightYield(e,t+1,i,s,r));break}if(l.bracketInfo.isOpeningBracket){const u=l.bracketInfo.bracketText,h=o.has(u)?o.get(u):0;o.set(u,h+1)}else{const u=l.bracketInfo.getOpeningBrackets()[0].bracketText;let h=o.has(u)?o.get(u):0;if(h-=1,o.set(u,Math.max(0,h)),h<0){let d=r.get(u);d||(d=new oo,r.set(u,d)),d.push(l.range)}}s=l.range.getEndPosition()}}static _bracketsLeftYield(e,t,i,s,r,o){const a=new Map,l=Date.now();for(;;){if(t>=Na._maxRounds&&r.size===0){e();break}if(!s){e();break}const c=i.bracketPairs.findPrevBracket(s);if(!c){e();break}if(Date.now()-l>Na._maxDuration){setTimeout(()=>Na._bracketsLeftYield(e,t+1,i,s,r,o));break}if(c.bracketInfo.isOpeningBracket){const h=c.bracketInfo.bracketText;let d=a.has(h)?a.get(h):0;if(d-=1,a.set(h,Math.max(0,d)),d<0){const f=r.get(h);if(f){const g=f.shift();f.size===0&&r.delete(h);const p=M.fromPositions(c.range.getEndPosition(),g.getStartPosition()),m=M.fromPositions(c.range.getStartPosition(),g.getEndPosition());o.push({range:p}),o.push({range:m}),Na._addBracketLeading(i,m,o)}}}else{const h=c.bracketInfo.getOpeningBrackets()[0].bracketText,d=a.has(h)?a.get(h):0;a.set(h,d+1)}s=c.range.getStartPosition()}}static _addBracketLeading(e,t,i){if(t.startLineNumber===t.endLineNumber)return;const s=t.startLineNumber,r=e.getLineFirstNonWhitespaceColumn(s);r!==0&&r!==t.startColumn&&(i.push({range:M.fromPositions(new he(s,r),t.getEndPosition())}),i.push({range:M.fromPositions(new he(s,1),t.getEndPosition())}));const o=s-1;if(o>0){const a=e.getLineFirstNonWhitespaceColumn(o);a===t.startColumn&&a!==e.getLineLastNonWhitespaceColumn(o)&&(i.push({range:M.fromPositions(new he(o,a),t.getEndPosition())}),i.push({range:M.fromPositions(new he(o,1),t.getEndPosition())}))}}}Na._maxDuration=30;Na._maxRounds=2;class ru{static async create(e,t){if(!t.getOption(117).localityBonus||!t.hasModel())return ru.None;const i=t.getModel(),s=t.getPosition();if(!e.canComputeWordRanges(i.uri))return ru.None;const[r]=await new Na().provideSelectionRanges(i,[s]);if(r.length===0)return ru.None;const o=await e.computeWordRanges(i.uri,r[0].range);if(!o)return ru.None;const a=i.getWordUntilPosition(s);return delete o[a.word],new class extends ru{distance(l,c){if(!s.equals(t.getPosition()))return 0;if(c.kind===17)return 2<<20;const u=typeof c.label=="string"?c.label:c.label.label,h=o[u];if(jge(h))return 2<<20;const d=CL(h,M.fromPositions(l),M.compareRangesUsingStarts),f=d>=0?h[d]:h[Math.max(0,~d-1)];let g=r.length;for(const p of r){if(!M.containsRange(p.range,f))break;g-=1}return g}}}}ru.None=new class extends ru{distance(){return 0}};let zne=class{constructor(e,t){this.leadingLineContent=e,this.characterCountDelta=t}};class Kg{constructor(e,t,i,s,r,o,a=t2.default,l=void 0){this.clipboardText=l,this._snippetCompareFn=Kg._compareCompletionItems,this._items=e,this._column=t,this._wordDistance=s,this._options=r,this._refilterKind=1,this._lineContext=i,this._fuzzyScoreOptions=a,o==="top"?this._snippetCompareFn=Kg._compareCompletionItemsSnippetsUp:o==="bottom"&&(this._snippetCompareFn=Kg._compareCompletionItemsSnippetsDown)}get lineContext(){return this._lineContext}set lineContext(e){(this._lineContext.leadingLineContent!==e.leadingLineContent||this._lineContext.characterCountDelta!==e.characterCountDelta)&&(this._refilterKind=this._lineContext.characterCountDelta<e.characterCountDelta&&this._filteredItems?2:1,this._lineContext=e)}get items(){return this._ensureCachedState(),this._filteredItems}getItemsByProvider(){return this._ensureCachedState(),this._itemsByProvider}getIncompleteProvider(){this._ensureCachedState();const e=new Set;for(const[t,i]of this.getItemsByProvider())i.length>0&&i[0].container.incomplete&&e.add(t);return e}get stats(){return this._ensureCachedState(),this._stats}_ensureCachedState(){this._refilterKind!==0&&this._createCachedState()}_createCachedState(){this._itemsByProvider=new Map;const e=[],{leadingLineContent:t,characterCountDelta:i}=this._lineContext;let s="",r="";const o=this._refilterKind===1?this._items:this._filteredItems,a=[],l=!this._options.filterGraceful||o.length>2e3?F_:mGe;for(let c=0;c<o.length;c++){const u=o[c];if(u.isInvalid)continue;const h=this._itemsByProvider.get(u.provider);h?h.push(u):this._itemsByProvider.set(u.provider,[u]);const d=u.position.column-u.editStart.column,f=d+i-(u.position.column-this._column);if(s.length!==f&&(s=f===0?"":t.slice(-f),r=s.toLowerCase()),u.word=s,f===0)u.score=Lu.Default;else{let g=0;for(;g<d;){const p=s.charCodeAt(g);if(p===32||p===9)g+=1;else break}if(g>=f)u.score=Lu.Default;else if(typeof u.completion.filterText=="string"){const p=l(s,r,g,u.completion.filterText,u.filterTextLow,0,this._fuzzyScoreOptions);if(!p)continue;G8(u.completion.filterText,u.textLabel)===0?u.score=p:(u.score=dGe(s,r,g,u.textLabel,u.labelLow,0),u.score[0]=p[0])}else{const p=l(s,r,g,u.textLabel,u.labelLow,0,this._fuzzyScoreOptions);if(!p)continue;u.score=p}}u.idx=c,u.distance=this._wordDistance.distance(u.position,u.completion),a.push(u),e.push(u.textLabel.length)}this._filteredItems=a.sort(this._snippetCompareFn),this._refilterKind=0,this._stats={pLabelLen:e.length?s9(e.length-.85,e,(c,u)=>c-u):0}}static _compareCompletionItems(e,t){return e.score[0]>t.score[0]?-1:e.score[0]<t.score[0]?1:e.distance<t.distance?-1:e.distance>t.distance?1:e.idx<t.idx?-1:e.idx>t.idx?1:0}static _compareCompletionItemsSnippetsDown(e,t){if(e.completion.kind!==t.completion.kind){if(e.completion.kind===27)return 1;if(t.completion.kind===27)return-1}return Kg._compareCompletionItems(e,t)}static _compareCompletionItemsSnippetsUp(e,t){if(e.completion.kind!==t.completion.kind){if(e.completion.kind===27)return-1;if(t.completion.kind===27)return 1}return Kg._compareCompletionItems(e,t)}}var lrt=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},Lg=function(n,e){return function(t,i){e(t,i,n)}},vV;class t1{static shouldAutoTrigger(e){if(!e.hasModel())return!1;const t=e.getModel(),i=e.getPosition();t.tokenization.tokenizeIfCheap(i.lineNumber);const s=t.getWordAtPosition(i);return!(!s||s.endColumn!==i.column&&s.startColumn+1!==i.column||!isNaN(Number(s.word)))}constructor(e,t,i){this.leadingLineContent=e.getLineContent(t.lineNumber).substr(0,t.column-1),this.leadingWord=e.getWordUntilPosition(t),this.lineNumber=t.lineNumber,this.column=t.column,this.triggerOptions=i}}function crt(n,e,t){if(!e.getContextKeyValue(zs.inlineSuggestionVisible.key))return!0;const i=e.getContextKeyValue(zs.suppressSuggestions.key);return i!==void 0?!i:!n.getOption(62).suppressSuggestions}function urt(n,e,t){if(!e.getContextKeyValue("inlineSuggestionVisible"))return!0;const i=e.getContextKeyValue(zs.suppressSuggestions.key);return i!==void 0?!i:!n.getOption(62).suppressSuggestions}let bV=vV=class{constructor(e,t,i,s,r,o,a,l,c){this._editor=e,this._editorWorkerService=t,this._clipboardService=i,this._telemetryService=s,this._logService=r,this._contextKeyService=o,this._configurationService=a,this._languageFeaturesService=l,this._envService=c,this._toDispose=new xe,this._triggerCharacterListener=new xe,this._triggerQuickSuggest=new Ic,this._triggerState=void 0,this._completionDisposables=new xe,this._onDidCancel=new ue,this._onDidTrigger=new ue,this._onDidSuggest=new ue,this.onDidCancel=this._onDidCancel.event,this.onDidTrigger=this._onDidTrigger.event,this.onDidSuggest=this._onDidSuggest.event,this._telemetryGate=0,this._currentSelection=this._editor.getSelection()||new Ze(1,1,1,1),this._toDispose.add(this._editor.onDidChangeModel(()=>{this._updateTriggerCharacters(),this.cancel()})),this._toDispose.add(this._editor.onDidChangeModelLanguage(()=>{this._updateTriggerCharacters(),this.cancel()})),this._toDispose.add(this._editor.onDidChangeConfiguration(()=>{this._updateTriggerCharacters()})),this._toDispose.add(this._languageFeaturesService.completionProvider.onDidChange(()=>{this._updateTriggerCharacters(),this._updateActiveSuggestSession()}));let u=!1;this._toDispose.add(this._editor.onDidCompositionStart(()=>{u=!0})),this._toDispose.add(this._editor.onDidCompositionEnd(()=>{u=!1,this._onCompositionEnd()})),this._toDispose.add(this._editor.onDidChangeCursorSelection(h=>{u||this._onCursorChange(h)})),this._toDispose.add(this._editor.onDidChangeModelContent(()=>{!u&&this._triggerState!==void 0&&this._refilterCompletionItems()})),this._updateTriggerCharacters()}dispose(){yi(this._triggerCharacterListener),yi([this._onDidCancel,this._onDidSuggest,this._onDidTrigger,this._triggerQuickSuggest]),this._toDispose.dispose(),this._completionDisposables.dispose(),this.cancel()}_updateTriggerCharacters(){if(this._triggerCharacterListener.clear(),this._editor.getOption(90)||!this._editor.hasModel()||!this._editor.getOption(120))return;const e=new Map;for(const i of this._languageFeaturesService.completionProvider.all(this._editor.getModel()))for(const s of i.triggerCharacters||[]){let r=e.get(s);r||(r=new Set,r.add($st()),e.set(s,r)),r.add(i)}const t=i=>{var s;if(!urt(this._editor,this._contextKeyService,this._configurationService)||t1.shouldAutoTrigger(this._editor))return;if(!i){const a=this._editor.getPosition();i=this._editor.getModel().getLineContent(a.lineNumber).substr(0,a.column-1)}let r="";N_(i.charCodeAt(i.length-1))?As(i.charCodeAt(i.length-2))&&(r=i.substr(i.length-2)):r=i.charAt(i.length-1);const o=e.get(r);if(o){const a=new Map;if(this._completionModel)for(const[l,c]of this._completionModel.getItemsByProvider())o.has(l)||a.set(l,c);this.trigger({auto:!0,triggerKind:1,triggerCharacter:r,retrigger:!!this._completionModel,clipboardText:(s=this._completionModel)===null||s===void 0?void 0:s.clipboardText,completionOptions:{providerFilter:o,providerItemsToReuse:a}})}};this._triggerCharacterListener.add(this._editor.onDidType(t)),this._triggerCharacterListener.add(this._editor.onDidCompositionEnd(()=>t()))}get state(){return this._triggerState?this._triggerState.auto?2:1:0}cancel(e=!1){var t;this._triggerState!==void 0&&(this._triggerQuickSuggest.cancel(),(t=this._requestToken)===null||t===void 0||t.cancel(),this._requestToken=void 0,this._triggerState=void 0,this._completionModel=void 0,this._context=void 0,this._onDidCancel.fire({retrigger:e}))}clear(){this._completionDisposables.clear()}_updateActiveSuggestSession(){this._triggerState!==void 0&&(!this._editor.hasModel()||!this._languageFeaturesService.completionProvider.has(this._editor.getModel())?this.cancel():this.trigger({auto:this._triggerState.auto,retrigger:!0}))}_onCursorChange(e){if(!this._editor.hasModel())return;const t=this._currentSelection;if(this._currentSelection=this._editor.getSelection(),!e.selection.isEmpty()||e.reason!==0&&e.reason!==3||e.source!=="keyboard"&&e.source!=="deleteLeft"){this.cancel();return}this._triggerState===void 0&&e.reason===0?(t.containsRange(this._currentSelection)||t.getEndPosition().isBeforeOrEqual(this._currentSelection.getPosition()))&&this._doTriggerQuickSuggest():this._triggerState!==void 0&&e.reason===3&&this._refilterCompletionItems()}_onCompositionEnd(){this._triggerState===void 0?this._doTriggerQuickSuggest():this._refilterCompletionItems()}_doTriggerQuickSuggest(){var e;J0.isAllOff(this._editor.getOption(88))||this._editor.getOption(117).snippetsPreventQuickSuggestions&&(!((e=sr.get(this._editor))===null||e===void 0)&&e.isInSnippet())||(this.cancel(),this._triggerQuickSuggest.cancelAndSet(()=>{if(this._triggerState!==void 0||!t1.shouldAutoTrigger(this._editor)||!this._editor.hasModel()||!this._editor.hasWidgetFocus())return;const t=this._editor.getModel(),i=this._editor.getPosition(),s=this._editor.getOption(88);if(!J0.isAllOff(s)){if(!J0.isAllOn(s)){t.tokenization.tokenizeIfCheap(i.lineNumber);const r=t.tokenization.getLineTokens(i.lineNumber),o=r.getStandardTokenType(r.findTokenIndexAtOffset(Math.max(i.column-1-1,0)));if(J0.valueFor(s,o)!=="on")return}crt(this._editor,this._contextKeyService,this._configurationService)&&this._languageFeaturesService.completionProvider.has(t)&&this.trigger({auto:!0})}},this._editor.getOption(89)))}_refilterCompletionItems(){Si(this._editor.hasModel()),Si(this._triggerState!==void 0);const e=this._editor.getModel(),t=this._editor.getPosition(),i=new t1(e,t,{...this._triggerState,refilter:!0});this._onNewContext(i)}trigger(e){var t,i,s,r,o,a;if(!this._editor.hasModel())return;const l=this._editor.getModel(),c=new t1(l,this._editor.getPosition(),e);this.cancel(e.retrigger),this._triggerState=e,this._onDidTrigger.fire({auto:e.auto,shy:(t=e.shy)!==null&&t!==void 0?t:!1,position:this._editor.getPosition()}),this._context=c;let u={triggerKind:(i=e.triggerKind)!==null&&i!==void 0?i:0};e.triggerCharacter&&(u={triggerKind:1,triggerCharacter:e.triggerCharacter}),this._requestToken=new es;const h=this._editor.getOption(111);let d=1;switch(h){case"top":d=0;break;case"bottom":d=2;break}const{itemKind:f,showDeprecated:g}=vV._createSuggestFilter(this._editor),p=new px(d,(r=(s=e.completionOptions)===null||s===void 0?void 0:s.kindFilter)!==null&&r!==void 0?r:f,(o=e.completionOptions)===null||o===void 0?void 0:o.providerFilter,(a=e.completionOptions)===null||a===void 0?void 0:a.providerItemsToReuse,g),m=ru.create(this._editorWorkerService,this._editor),_=pG(this._languageFeaturesService.completionProvider,l,this._editor.getPosition(),p,u,this._requestToken.token);Promise.all([_,m]).then(async([b,y])=>{var w;if((w=this._requestToken)===null||w===void 0||w.dispose(),!this._editor.hasModel())return;let S=e==null?void 0:e.clipboardText;if(!S&&b.needsClipboard&&(S=await this._clipboardService.readText()),this._triggerState===void 0)return;const E=this._editor.getModel(),L=new t1(E,this._editor.getPosition(),e),k={...t2.default,firstMatchCanBeWeak:!this._editor.getOption(117).matchOnWordStartOnly};if(this._completionModel=new Kg(b.items,this._context.column,{leadingLineContent:L.leadingLineContent,characterCountDelta:L.column-this._context.column},y,this._editor.getOption(117),this._editor.getOption(111),k,S),this._completionDisposables.add(b.disposable),this._onNewContext(L),this._reportDurationsTelemetry(b.durations),!this._envService.isBuilt||this._envService.isExtensionDevelopment)for(const x of b.items)x.isInvalid&&this._logService.warn(`[suggest] did IGNORE invalid completion item from ${x.provider._debugDisplayName}`,x.completion)}).catch(vt)}_reportDurationsTelemetry(e){this._telemetryGate++%230===0&&setTimeout(()=>{this._telemetryService.publicLog2("suggest.durations.json",{data:JSON.stringify(e)}),this._logService.debug("suggest.durations.json",e)})}static _createSuggestFilter(e){const t=new Set;e.getOption(111)==="none"&&t.add(27);const s=e.getOption(117);return s.showMethods||t.add(0),s.showFunctions||t.add(1),s.showConstructors||t.add(2),s.showFields||t.add(3),s.showVariables||t.add(4),s.showClasses||t.add(5),s.showStructs||t.add(6),s.showInterfaces||t.add(7),s.showModules||t.add(8),s.showProperties||t.add(9),s.showEvents||t.add(10),s.showOperators||t.add(11),s.showUnits||t.add(12),s.showValues||t.add(13),s.showConstants||t.add(14),s.showEnums||t.add(15),s.showEnumMembers||t.add(16),s.showKeywords||t.add(17),s.showWords||t.add(18),s.showColors||t.add(19),s.showFiles||t.add(20),s.showReferences||t.add(21),s.showColors||t.add(22),s.showFolders||t.add(23),s.showTypeParameters||t.add(24),s.showSnippets||t.add(27),s.showUsers||t.add(25),s.showIssues||t.add(26),{itemKind:t,showDeprecated:s.showDeprecated}}_onNewContext(e){if(this._context){if(e.lineNumber!==this._context.lineNumber){this.cancel();return}if(Ni(e.leadingLineContent)!==Ni(this._context.leadingLineContent)){this.cancel();return}if(e.column<this._context.column){e.leadingWord.word?this.trigger({auto:this._context.triggerOptions.auto,retrigger:!0}):this.cancel();return}if(this._completionModel){if(e.leadingWord.word.length!==0&&e.leadingWord.startColumn>this._context.leadingWord.startColumn){if(t1.shouldAutoTrigger(this._editor)&&this._context){const i=this._completionModel.getItemsByProvider();this.trigger({auto:this._context.triggerOptions.auto,retrigger:!0,clipboardText:this._completionModel.clipboardText,completionOptions:{providerItemsToReuse:i}})}return}if(e.column>this._context.column&&this._completionModel.getIncompleteProvider().size>0&&e.leadingWord.word.length!==0){const t=new Map,i=new Set;for(const[s,r]of this._completionModel.getItemsByProvider())r.length>0&&r[0].container.incomplete?i.add(s):t.set(s,r);this.trigger({auto:this._context.triggerOptions.auto,triggerKind:2,retrigger:!0,clipboardText:this._completionModel.clipboardText,completionOptions:{providerFilter:i,providerItemsToReuse:t}})}else{const t=this._completionModel.lineContext;let i=!1;if(this._completionModel.lineContext={leadingLineContent:e.leadingLineContent,characterCountDelta:e.column-this._context.column},this._completionModel.items.length===0){const s=t1.shouldAutoTrigger(this._editor);if(!this._context){this.cancel();return}if(s&&this._context.leadingWord.endColumn<e.leadingWord.startColumn){this.trigger({auto:this._context.triggerOptions.auto,retrigger:!0});return}if(this._context.triggerOptions.auto){this.cancel();return}else if(this._completionModel.lineContext=t,i=this._completionModel.items.length>0,i&&e.leadingWord.word.length===0){this.cancel();return}}this._onDidSuggest.fire({completionModel:this._completionModel,triggerOptions:e.triggerOptions,isFrozen:i})}}}}};bV=vV=lrt([Lg(1,Pc),Lg(2,ag),Lg(3,fa),Lg(4,ga),Lg(5,ft),Lg(6,Ut),Lg(7,Ge),Lg(8,SK)],bV);class $2{constructor(e,t){this._disposables=new xe,this._lastOvertyped=[],this._locked=!1,this._disposables.add(e.onWillType(()=>{if(this._locked||!e.hasModel())return;const i=e.getSelections(),s=i.length;let r=!1;for(let a=0;a<s;a++)if(!i[a].isEmpty()){r=!0;break}if(!r){this._lastOvertyped.length!==0&&(this._lastOvertyped.length=0);return}this._lastOvertyped=[];const o=e.getModel();for(let a=0;a<s;a++){const l=i[a];if(o.getValueLengthInRange(l)>$2._maxSelectionLength)return;this._lastOvertyped[a]={value:o.getValueInRange(l),multiline:l.startLineNumber!==l.endLineNumber}}})),this._disposables.add(t.onDidTrigger(i=>{this._locked=!0})),this._disposables.add(t.onDidCancel(i=>{this._locked=!1}))}getLastOvertypedInfo(e){if(e>=0&&e<this._lastOvertyped.length)return this._lastOvertyped[e]}dispose(){this._disposables.dispose()}}$2._maxSelectionLength=51200;var hrt=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},z3=function(n,e){return function(t,i){e(t,i,n)}};class vG extends z_{updateLabel(){const e=this._keybindingService.lookupKeybinding(this._action.id,this._contextKeyService);if(!e)return super.updateLabel();this.label&&(this.label.textContent=v({key:"content",comment:["A label","A keybinding"]},"{0} ({1})",this._action.label,vG.symbolPrintEnter(e)))}static symbolPrintEnter(e){var t;return(t=e.getLabel())===null||t===void 0?void 0:t.replace(/\benter\b/gi,"⏎")}}let yV=class{constructor(e,t,i,s,r){this._menuId=t,this._menuService=s,this._contextKeyService=r,this._menuDisposables=new xe,this.element=Le(e,Te(".suggest-status-bar"));const o=a=>a instanceof Lc?i.createInstance(vG,a,void 0):void 0;this._leftActions=new Vl(this.element,{actionViewItemProvider:o}),this._rightActions=new Vl(this.element,{actionViewItemProvider:o}),this._leftActions.domNode.classList.add("left"),this._rightActions.domNode.classList.add("right")}dispose(){this._menuDisposables.dispose(),this._leftActions.dispose(),this._rightActions.dispose(),this.element.remove()}show(){const e=this._menuService.createMenu(this._menuId,this._contextKeyService),t=()=>{const i=[],s=[];for(const[r,o]of e.getActions())r==="left"?i.push(...o):s.push(...o);this._leftActions.clear(),this._leftActions.push(i),this._rightActions.clear(),this._rightActions.push(s)};this._menuDisposables.add(e.onDidChange(()=>t())),this._menuDisposables.add(e)}hide(){this._menuDisposables.clear()}};yV=hrt([z3(2,at),z3(3,Vu),z3(4,ft)],yV);var drt=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},frt=function(n,e){return function(t,i){e(t,i,n)}};function bG(n){return!!n&&!!(n.completion.documentation||n.completion.detail&&n.completion.detail!==n.completion.label)}let CV=class{constructor(e,t){this._editor=e,this._onDidClose=new ue,this.onDidClose=this._onDidClose.event,this._onDidChangeContents=new ue,this.onDidChangeContents=this._onDidChangeContents.event,this._disposables=new xe,this._renderDisposeable=new xe,this._borderWidth=1,this._size=new ni(330,0),this.domNode=Te(".suggest-details"),this.domNode.classList.add("no-docs"),this._markdownRenderer=t.createInstance(Qf,{editor:e}),this._body=Te(".body"),this._scrollbar=new CE(this._body,{alwaysConsumeMouseWheel:!0}),Le(this.domNode,this._scrollbar.getDomNode()),this._disposables.add(this._scrollbar),this._header=Le(this._body,Te(".header")),this._close=Le(this._header,Te("span"+nt.asCSSSelector(Pe.close))),this._close.title=v("details.close","Close"),this._type=Le(this._header,Te("p.type")),this._docs=Le(this._body,Te("p.docs")),this._configureFont(),this._disposables.add(this._editor.onDidChangeConfiguration(i=>{i.hasChanged(50)&&this._configureFont()}))}dispose(){this._disposables.dispose(),this._renderDisposeable.dispose()}_configureFont(){const e=this._editor.getOptions(),t=e.get(50),i=t.getMassagedFontFamily(),s=e.get(118)||t.fontSize,r=e.get(119)||t.lineHeight,o=t.fontWeight,a=`${s}px`,l=`${r}px`;this.domNode.style.fontSize=a,this.domNode.style.lineHeight=`${r/s}`,this.domNode.style.fontWeight=o,this.domNode.style.fontFeatureSettings=t.fontFeatureSettings,this._type.style.fontFamily=i,this._close.style.height=l,this._close.style.width=l}getLayoutInfo(){const e=this._editor.getOption(119)||this._editor.getOption(50).lineHeight,t=this._borderWidth,i=t*2;return{lineHeight:e,borderWidth:t,borderHeight:i,verticalPadding:22,horizontalPadding:14}}renderLoading(){this._type.textContent=v("loading","Loading..."),this._docs.textContent="",this.domNode.classList.remove("no-docs","no-type"),this.layout(this.size.width,this.getLayoutInfo().lineHeight*2),this._onDidChangeContents.fire(this)}renderItem(e,t){var i,s;this._renderDisposeable.clear();let{detail:r,documentation:o}=e.completion;if(t){let a="";a+=`score: ${e.score[0]} +`,a+=`prefix: ${(i=e.word)!==null&&i!==void 0?i:"(no prefix)"} +`,a+=`word: ${e.completion.filterText?e.completion.filterText+" (filterText)":e.textLabel} +`,a+=`distance: ${e.distance} (localityBonus-setting) +`,a+=`index: ${e.idx}, based on ${e.completion.sortText&&`sortText: "${e.completion.sortText}"`||"label"} +`,a+=`commit_chars: ${(s=e.completion.commitCharacters)===null||s===void 0?void 0:s.join("")} +`,o=new xr().appendCodeblock("empty",a),r=`Provider: ${e.provider._debugDisplayName}`}if(!t&&!bG(e)){this.clearContents();return}if(this.domNode.classList.remove("no-docs","no-type"),r){const a=r.length>1e5?`${r.substr(0,1e5)}…`:r;this._type.textContent=a,this._type.title=a,Xo(this._type),this._type.classList.toggle("auto-wrap",!/\r?\n^\s+/gmi.test(a))}else ir(this._type),this._type.title="",Jr(this._type),this.domNode.classList.add("no-type");if(ir(this._docs),typeof o=="string")this._docs.classList.remove("markdown-docs"),this._docs.textContent=o;else if(o){this._docs.classList.add("markdown-docs"),ir(this._docs);const a=this._markdownRenderer.render(o);this._docs.appendChild(a.element),this._renderDisposeable.add(a),this._renderDisposeable.add(this._markdownRenderer.onDidRenderAsync(()=>{this.layout(this._size.width,this._type.clientHeight+this._docs.clientHeight),this._onDidChangeContents.fire(this)}))}this.domNode.style.userSelect="text",this.domNode.tabIndex=-1,this._close.onmousedown=a=>{a.preventDefault(),a.stopPropagation()},this._close.onclick=a=>{a.preventDefault(),a.stopPropagation(),this._onDidClose.fire()},this._body.scrollTop=0,this.layout(this._size.width,this._type.clientHeight+this._docs.clientHeight),this._onDidChangeContents.fire(this)}clearContents(){this.domNode.classList.add("no-docs"),this._type.textContent="",this._docs.textContent=""}get size(){return this._size}layout(e,t){const i=new ni(e,t);ni.equals(i,this._size)||(this._size=i,f9e(this.domNode,e,t)),this._scrollbar.scanDomNode()}scrollDown(e=8){this._body.scrollTop+=e}scrollUp(e=8){this._body.scrollTop-=e}scrollTop(){this._body.scrollTop=0}scrollBottom(){this._body.scrollTop=this._body.scrollHeight}pageDown(){this.scrollDown(80)}pageUp(){this.scrollUp(80)}set borderWidth(e){this._borderWidth=e}get borderWidth(){return this._borderWidth}};CV=drt([frt(1,at)],CV);class grt{constructor(e,t){this.widget=e,this._editor=t,this._disposables=new xe,this._added=!1,this._preferAlignAtTop=!0,this._resizable=new XK,this._resizable.domNode.classList.add("suggest-details-container"),this._resizable.domNode.appendChild(e.domNode),this._resizable.enableSashes(!1,!0,!0,!1);let i,s,r=0,o=0;this._disposables.add(this._resizable.onDidWillResize(()=>{i=this._topLeft,s=this._resizable.size})),this._disposables.add(this._resizable.onDidResize(a=>{if(i&&s){this.widget.layout(a.dimension.width,a.dimension.height);let l=!1;a.west&&(o=s.width-a.dimension.width,l=!0),a.north&&(r=s.height-a.dimension.height,l=!0),l&&this._applyTopLeft({top:i.top+r,left:i.left+o})}a.done&&(i=void 0,s=void 0,r=0,o=0,this._userSize=a.dimension)})),this._disposables.add(this.widget.onDidChangeContents(()=>{var a;this._anchorBox&&this._placeAtAnchor(this._anchorBox,(a=this._userSize)!==null&&a!==void 0?a:this.widget.size,this._preferAlignAtTop)}))}dispose(){this._resizable.dispose(),this._disposables.dispose(),this.hide()}getId(){return"suggest.details"}getDomNode(){return this._resizable.domNode}getPosition(){return null}show(){this._added||(this._editor.addOverlayWidget(this),this.getDomNode().style.position="fixed",this._added=!0)}hide(e=!1){this._resizable.clearSashHoverState(),this._added&&(this._editor.removeOverlayWidget(this),this._added=!1,this._anchorBox=void 0,this._topLeft=void 0),e&&(this._userSize=void 0,this.widget.clearContents())}placeAtAnchor(e,t){var i;const s=e.getBoundingClientRect();this._anchorBox=s,this._preferAlignAtTop=t,this._placeAtAnchor(this._anchorBox,(i=this._userSize)!==null&&i!==void 0?i:this.widget.size,t)}_placeAtAnchor(e,t,i){var s;const r=Zp(this.getDomNode().ownerDocument.body),o=this.widget.getLayoutInfo(),a=new ni(220,2*o.lineHeight),l=e.top,c=function(){const y=r.width-(e.left+e.width+o.borderWidth+o.horizontalPadding),w=-o.borderWidth+e.left+e.width,S=new ni(y,r.height-e.top-o.borderHeight-o.verticalPadding),E=S.with(void 0,e.top+e.height-o.borderHeight-o.verticalPadding);return{top:l,left:w,fit:y-t.width,maxSizeTop:S,maxSizeBottom:E,minSize:a.with(Math.min(y,a.width))}}(),u=function(){const y=e.left-o.borderWidth-o.horizontalPadding,w=Math.max(o.horizontalPadding,e.left-t.width-o.borderWidth),S=new ni(y,r.height-e.top-o.borderHeight-o.verticalPadding),E=S.with(void 0,e.top+e.height-o.borderHeight-o.verticalPadding);return{top:l,left:w,fit:y-t.width,maxSizeTop:S,maxSizeBottom:E,minSize:a.with(Math.min(y,a.width))}}(),h=function(){const y=e.left,w=-o.borderWidth+e.top+e.height,S=new ni(e.width-o.borderHeight,r.height-e.top-e.height-o.verticalPadding);return{top:w,left:y,fit:S.height-t.height,maxSizeBottom:S,maxSizeTop:S,minSize:a.with(S.width)}}(),d=[c,u,h],f=(s=d.find(y=>y.fit>=0))!==null&&s!==void 0?s:d.sort((y,w)=>w.fit-y.fit)[0],g=e.top+e.height-o.borderHeight;let p,m=t.height;const _=Math.max(f.maxSizeTop.height,f.maxSizeBottom.height);m>_&&(m=_);let b;i?m<=f.maxSizeTop.height?(p=!0,b=f.maxSizeTop):(p=!1,b=f.maxSizeBottom):m<=f.maxSizeBottom.height?(p=!1,b=f.maxSizeBottom):(p=!0,b=f.maxSizeTop),this._applyTopLeft({left:f.left,top:p?f.top:g-m}),this.getDomNode().style.position="fixed",this._resizable.enableSashes(!p,f===c,p,f!==c),this._resizable.minSize=f.minSize,this._resizable.maxSize=b,this._resizable.layout(m,Math.min(b.width,t.width)),this.widget.layout(this._resizable.size.width,this._resizable.size.height)}_applyTopLeft(e){this._topLeft=e,this.getDomNode().style.left=`${this._topLeft.left}px`,this.getDomNode().style.top=`${this._topLeft.top}px`}}var Hh;(function(n){n[n.FILE=0]="FILE",n[n.FOLDER=1]="FOLDER",n[n.ROOT_FOLDER=2]="ROOT_FOLDER"})(Hh||(Hh={}));const prt=/(?:\/|^)(?:([^\/]+)\/)?([^\/]+)$/;function KI(n,e,t,i){const s=i===Hh.ROOT_FOLDER?["rootfolder-icon"]:i===Hh.FOLDER?["folder-icon"]:["file-icon"];if(t){let r;if(t.scheme===wt.data)r=nm.parseMetaData(t).get(nm.META_DATA_LABEL);else{const o=t.path.match(prt);o?(r=GI(o[2].toLowerCase()),o[1]&&s.push(`${GI(o[1].toLowerCase())}-name-dir-icon`)):r=GI(t.authority.toLowerCase())}if(i===Hh.ROOT_FOLDER)s.push(`${r}-root-name-folder-icon`);else if(i===Hh.FOLDER)s.push(`${r}-name-folder-icon`);else{if(r){if(s.push(`${r}-name-file-icon`),s.push("name-file-icon"),r.length<=255){const a=r.split(".");for(let l=1;l<a.length;l++)s.push(`${a.slice(l).join(".")}-ext-file-icon`)}s.push("ext-file-icon")}const o=mrt(n,e,t);o&&s.push(`${GI(o)}-lang-file-icon`)}}return s}function mrt(n,e,t){if(!t)return null;let i=null;if(t.scheme===wt.data){const r=nm.parseMetaData(t).get(nm.META_DATA_MIME);r&&(i=e.getLanguageIdByMimeType(r))}else{const s=n.getModel(t);s&&(i=s.getLanguageId())}return i&&i!==Ga?i:e.guessLanguageIdByFilepathOrFirstLine(t)}function GI(n){return n.replace(/[\11\12\14\15\40]/g,"/")}var _rt=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},U3=function(n,e){return function(t,i){e(t,i,n)}},xg;function Ove(n){return`suggest-aria-id:${n}`}const vrt=Gn("suggest-more-info",Pe.chevronRight,v("suggestMoreInfoIcon","Icon for more information in the suggest widget.")),brt=new(xg=class{extract(e,t){if(e.textLabel.match(xg._regexStrict))return t[0]=e.textLabel,!0;if(e.completion.detail&&e.completion.detail.match(xg._regexStrict))return t[0]=e.completion.detail,!0;if(typeof e.completion.documentation=="string"){const i=xg._regexRelaxed.exec(e.completion.documentation);if(i&&(i.index===0||i.index+i[0].length===e.completion.documentation.length))return t[0]=i[0],!0}return!1}},xg._regexRelaxed=/(#([\da-fA-F]{3}){1,2}|(rgb|hsl)a\(\s*(\d{1,3}%?\s*,\s*){3}(1|0?\.\d+)\)|(rgb|hsl)\(\s*\d{1,3}%?(\s*,\s*\d{1,3}%?){2}\s*\))/,xg._regexStrict=new RegExp(`^${xg._regexRelaxed.source}$`,"i"),xg);let wV=class{constructor(e,t,i,s){this._editor=e,this._modelService=t,this._languageService=i,this._themeService=s,this._onDidToggleDetails=new ue,this.onDidToggleDetails=this._onDidToggleDetails.event,this.templateId="suggestion"}dispose(){this._onDidToggleDetails.dispose()}renderTemplate(e){const t=new xe,i=e;i.classList.add("show-file-icons");const s=Le(e,Te(".icon")),r=Le(s,Te("span.colorspan")),o=Le(e,Te(".contents")),a=Le(o,Te(".main")),l=Le(a,Te(".icon-label.codicon")),c=Le(a,Te("span.left")),u=Le(a,Te("span.right")),h=new zP(c,{supportHighlights:!0,supportIcons:!0});t.add(h);const d=Le(c,Te("span.signature-label")),f=Le(c,Te("span.qualifier-label")),g=Le(u,Te("span.details-label")),p=Le(u,Te("span.readMore"+nt.asCSSSelector(vrt)));p.title=v("readMore","Read More");const m=()=>{const _=this._editor.getOptions(),b=_.get(50),y=b.getMassagedFontFamily(),w=b.fontFeatureSettings,S=_.get(118)||b.fontSize,E=_.get(119)||b.lineHeight,L=b.fontWeight,k=b.letterSpacing,x=`${S}px`,I=`${E}px`,N=`${k}px`;i.style.fontSize=x,i.style.fontWeight=L,i.style.letterSpacing=N,a.style.fontFamily=y,a.style.fontFeatureSettings=w,a.style.lineHeight=I,s.style.height=I,s.style.width=I,p.style.height=I,p.style.width=I};return m(),t.add(this._editor.onDidChangeConfiguration(_=>{(_.hasChanged(50)||_.hasChanged(118)||_.hasChanged(119))&&m()})),{root:i,left:c,right:u,icon:s,colorspan:r,iconLabel:h,iconContainer:l,parametersLabel:d,qualifierLabel:f,detailsLabel:g,readMore:p,disposables:t}}renderElement(e,t,i){const{completion:s}=e;i.root.id=Ove(t),i.colorspan.style.backgroundColor="";const r={labelEscapeNewLines:!0,matches:AE(e.score)},o=[];if(s.kind===19&&brt.extract(e,o))i.icon.className="icon customcolor",i.iconContainer.className="icon hide",i.colorspan.style.backgroundColor=o[0];else if(s.kind===20&&this._themeService.getFileIconTheme().hasFileIcons){i.icon.className="icon hide",i.iconContainer.className="icon hide";const a=KI(this._modelService,this._languageService,it.from({scheme:"fake",path:e.textLabel}),Hh.FILE),l=KI(this._modelService,this._languageService,it.from({scheme:"fake",path:s.detail}),Hh.FILE);r.extraClasses=a.length>l.length?a:l}else s.kind===23&&this._themeService.getFileIconTheme().hasFolderIcons?(i.icon.className="icon hide",i.iconContainer.className="icon hide",r.extraClasses=[KI(this._modelService,this._languageService,it.from({scheme:"fake",path:e.textLabel}),Hh.FOLDER),KI(this._modelService,this._languageService,it.from({scheme:"fake",path:s.detail}),Hh.FOLDER)].flat()):(i.icon.className="icon hide",i.iconContainer.className="",i.iconContainer.classList.add("suggest-icon",...nt.asClassNameArray(TL.toIcon(s.kind))));s.tags&&s.tags.indexOf(1)>=0&&(r.extraClasses=(r.extraClasses||[]).concat(["deprecated"]),r.matches=[]),i.iconLabel.setLabel(e.textLabel,void 0,r),typeof s.label=="string"?(i.parametersLabel.textContent="",i.detailsLabel.textContent=j3(s.detail||""),i.root.classList.add("string-label")):(i.parametersLabel.textContent=j3(s.label.detail||""),i.detailsLabel.textContent=j3(s.label.description||""),i.root.classList.remove("string-label")),this._editor.getOption(117).showInlineDetails?Xo(i.detailsLabel):Jr(i.detailsLabel),bG(e)?(i.right.classList.add("can-expand-details"),Xo(i.readMore),i.readMore.onmousedown=a=>{a.stopPropagation(),a.preventDefault()},i.readMore.onclick=a=>{a.stopPropagation(),a.preventDefault(),this._onDidToggleDetails.fire()}):(i.right.classList.remove("can-expand-details"),Jr(i.readMore),i.readMore.onmousedown=null,i.readMore.onclick=null)}disposeTemplate(e){e.disposables.dispose()}};wV=_rt([U3(1,fn),U3(2,sn),U3(3,Ms)],wV);function j3(n){return n.replace(/\r\n|\r|\n/g,"")}var yrt=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},YI=function(n,e){return function(t,i){e(t,i,n)}},E0;U("editorSuggestWidget.background",{dark:Rn,light:Rn,hcDark:Rn,hcLight:Rn},v("editorSuggestWidgetBackground","Background color of the suggest widget."));U("editorSuggestWidget.border",{dark:Oh,light:Oh,hcDark:Oh,hcLight:Oh},v("editorSuggestWidgetBorder","Border color of the suggest widget."));const ZI=U("editorSuggestWidget.foreground",{dark:uc,light:uc,hcDark:uc,hcLight:uc},v("editorSuggestWidgetForeground","Foreground color of the suggest widget."));U("editorSuggestWidget.selectedForeground",{dark:B1,light:B1,hcDark:B1,hcLight:B1},v("editorSuggestWidgetSelectedForeground","Foreground color of the selected entry in the suggest widget."));U("editorSuggestWidget.selectedIconForeground",{dark:V0,light:V0,hcDark:V0,hcLight:V0},v("editorSuggestWidgetSelectedIconForeground","Icon foreground color of the selected entry in the suggest widget."));const Crt=U("editorSuggestWidget.selectedBackground",{dark:W1,light:W1,hcDark:W1,hcLight:W1},v("editorSuggestWidgetSelectedBackground","Background color of the selected entry in the suggest widget."));U("editorSuggestWidget.highlightForeground",{dark:hc,light:hc,hcDark:hc,hcLight:hc},v("editorSuggestWidgetHighlightForeground","Color of the match highlights in the suggest widget."));U("editorSuggestWidget.focusHighlightForeground",{dark:nI,light:nI,hcDark:nI,hcLight:nI},v("editorSuggestWidgetFocusHighlightForeground","Color of the match highlights in the suggest widget when an item is focused."));U("editorSuggestWidgetStatus.foreground",{dark:Je(ZI,.5),light:Je(ZI,.5),hcDark:Je(ZI,.5),hcLight:Je(ZI,.5)},v("editorSuggestWidgetStatusForeground","Foreground color of the suggest widget status."));class wrt{constructor(e,t){this._service=e,this._key=`suggestWidget.size/${t.getEditorType()}/${t instanceof hm}`}restore(){var e;const t=(e=this._service.get(this._key,0))!==null&&e!==void 0?e:"";try{const i=JSON.parse(t);if(ni.is(i))return ni.lift(i)}catch{}}store(e){this._service.store(this._key,JSON.stringify(e),0,1)}reset(){this._service.remove(this._key,0)}}let vx=E0=class{constructor(e,t,i,s,r){this.editor=e,this._storageService=t,this._state=0,this._isAuto=!1,this._pendingLayout=new qs,this._pendingShowDetails=new qs,this._ignoreFocusEvents=!1,this._forceRenderingAbove=!1,this._explainMode=!1,this._showTimeout=new Ic,this._disposables=new xe,this._onDidSelect=new E_,this._onDidFocus=new E_,this._onDidHide=new ue,this._onDidShow=new ue,this.onDidSelect=this._onDidSelect.event,this.onDidFocus=this._onDidFocus.event,this.onDidHide=this._onDidHide.event,this.onDidShow=this._onDidShow.event,this._onDetailsKeydown=new ue,this.onDetailsKeyDown=this._onDetailsKeydown.event,this.element=new XK,this.element.domNode.classList.add("editor-widget","suggest-widget"),this._contentWidget=new Srt(this,e),this._persistedSize=new wrt(t,e);class o{constructor(f,g,p=!1,m=!1){this.persistedSize=f,this.currentSize=g,this.persistHeight=p,this.persistWidth=m}}let a;this._disposables.add(this.element.onDidWillResize(()=>{this._contentWidget.lockPreference(),a=new o(this._persistedSize.restore(),this.element.size)})),this._disposables.add(this.element.onDidResize(d=>{var f,g,p,m;if(this._resize(d.dimension.width,d.dimension.height),a&&(a.persistHeight=a.persistHeight||!!d.north||!!d.south,a.persistWidth=a.persistWidth||!!d.east||!!d.west),!!d.done){if(a){const{itemHeight:_,defaultSize:b}=this.getLayoutInfo(),y=Math.round(_/2);let{width:w,height:S}=this.element.size;(!a.persistHeight||Math.abs(a.currentSize.height-S)<=y)&&(S=(g=(f=a.persistedSize)===null||f===void 0?void 0:f.height)!==null&&g!==void 0?g:b.height),(!a.persistWidth||Math.abs(a.currentSize.width-w)<=y)&&(w=(m=(p=a.persistedSize)===null||p===void 0?void 0:p.width)!==null&&m!==void 0?m:b.width),this._persistedSize.store(new ni(w,S))}this._contentWidget.unlockPreference(),a=void 0}})),this._messageElement=Le(this.element.domNode,Te(".message")),this._listElement=Le(this.element.domNode,Te(".tree"));const l=this._disposables.add(r.createInstance(CV,this.editor));l.onDidClose(this.toggleDetails,this,this._disposables),this._details=new grt(l,this.editor);const c=()=>this.element.domNode.classList.toggle("no-icons",!this.editor.getOption(117).showIcons);c();const u=r.createInstance(wV,this.editor);this._disposables.add(u),this._disposables.add(u.onDidToggleDetails(()=>this.toggleDetails())),this._list=new Ac("SuggestWidget",this._listElement,{getHeight:d=>this.getLayoutInfo().itemHeight,getTemplateId:d=>"suggestion"},[u],{alwaysConsumeMouseWheel:!0,useShadows:!1,mouseSupport:!1,multipleSelectionSupport:!1,accessibilityProvider:{getRole:()=>"option",getWidgetAriaLabel:()=>v("suggest","Suggest"),getWidgetRole:()=>"listbox",getAriaLabel:d=>{let f=d.textLabel;if(typeof d.completion.label!="string"){const{detail:_,description:b}=d.completion.label;_&&b?f=v("label.full","{0} {1}, {2}",f,_,b):_?f=v("label.detail","{0} {1}",f,_):b&&(f=v("label.desc","{0}, {1}",f,b))}if(!d.isResolved||!this._isDetailsVisible())return f;const{documentation:g,detail:p}=d.completion,m=I_("{0}{1}",p||"",g?typeof g=="string"?g:g.value:"");return v("ariaCurrenttSuggestionReadDetails","{0}, docs: {1}",f,m)}}}),this._list.style(BC({listInactiveFocusBackground:Crt,listInactiveFocusOutline:Gi})),this._status=r.createInstance(yV,this.element.domNode,Pp);const h=()=>this.element.domNode.classList.toggle("with-status-bar",this.editor.getOption(117).showStatusBar);h(),this._disposables.add(s.onDidColorThemeChange(d=>this._onThemeChange(d))),this._onThemeChange(s.getColorTheme()),this._disposables.add(this._list.onMouseDown(d=>this._onListMouseDownOrTap(d))),this._disposables.add(this._list.onTap(d=>this._onListMouseDownOrTap(d))),this._disposables.add(this._list.onDidChangeSelection(d=>this._onListSelection(d))),this._disposables.add(this._list.onDidChangeFocus(d=>this._onListFocus(d))),this._disposables.add(this.editor.onDidChangeCursorSelection(()=>this._onCursorSelectionChanged())),this._disposables.add(this.editor.onDidChangeConfiguration(d=>{d.hasChanged(117)&&(h(),c())})),this._ctxSuggestWidgetVisible=Et.Visible.bindTo(i),this._ctxSuggestWidgetDetailsVisible=Et.DetailsVisible.bindTo(i),this._ctxSuggestWidgetMultipleSuggestions=Et.MultipleSuggestions.bindTo(i),this._ctxSuggestWidgetHasFocusedSuggestion=Et.HasFocusedSuggestion.bindTo(i),this._disposables.add(Mn(this._details.widget.domNode,"keydown",d=>{this._onDetailsKeydown.fire(d)})),this._disposables.add(this.editor.onMouseDown(d=>this._onEditorMouseDown(d)))}dispose(){var e;this._details.widget.dispose(),this._details.dispose(),this._list.dispose(),this._status.dispose(),this._disposables.dispose(),(e=this._loadingTimeout)===null||e===void 0||e.dispose(),this._pendingLayout.dispose(),this._pendingShowDetails.dispose(),this._showTimeout.dispose(),this._contentWidget.dispose(),this.element.dispose()}_onEditorMouseDown(e){this._details.widget.domNode.contains(e.target.element)?this._details.widget.domNode.focus():this.element.domNode.contains(e.target.element)&&this.editor.focus()}_onCursorSelectionChanged(){this._state!==0&&this._contentWidget.layout()}_onListMouseDownOrTap(e){typeof e.element>"u"||typeof e.index>"u"||(e.browserEvent.preventDefault(),e.browserEvent.stopPropagation(),this._select(e.element,e.index))}_onListSelection(e){e.elements.length&&this._select(e.elements[0],e.indexes[0])}_select(e,t){const i=this._completionModel;i&&(this._onDidSelect.fire({item:e,index:t,model:i}),this.editor.focus())}_onThemeChange(e){this._details.widget.borderWidth=ku(e.type)?2:1}_onListFocus(e){var t;if(this._ignoreFocusEvents)return;if(!e.elements.length){this._currentSuggestionDetails&&(this._currentSuggestionDetails.cancel(),this._currentSuggestionDetails=void 0,this._focusedItem=void 0),this.editor.setAriaOptions({activeDescendant:void 0}),this._ctxSuggestWidgetHasFocusedSuggestion.set(!1);return}if(!this._completionModel)return;this._ctxSuggestWidgetHasFocusedSuggestion.set(!0);const i=e.elements[0],s=e.indexes[0];i!==this._focusedItem&&((t=this._currentSuggestionDetails)===null||t===void 0||t.cancel(),this._currentSuggestionDetails=void 0,this._focusedItem=i,this._list.reveal(s),this._currentSuggestionDetails=Ns(async r=>{const o=Gp(()=>{this._isDetailsVisible()&&this.showDetails(!0)},250),a=r.onCancellationRequested(()=>o.dispose());try{return await i.resolve(r)}finally{o.dispose(),a.dispose()}}),this._currentSuggestionDetails.then(()=>{s>=this._list.length||i!==this._list.element(s)||(this._ignoreFocusEvents=!0,this._list.splice(s,1,[i]),this._list.setFocus([s]),this._ignoreFocusEvents=!1,this._isDetailsVisible()?this.showDetails(!1):this.element.domNode.classList.remove("docs-side"),this.editor.setAriaOptions({activeDescendant:Ove(s)}))}).catch(vt)),this._onDidFocus.fire({item:i,index:s,model:this._completionModel})}_setState(e){if(this._state!==e)switch(this._state=e,this.element.domNode.classList.toggle("frozen",e===4),this.element.domNode.classList.remove("message"),e){case 0:Jr(this._messageElement,this._listElement,this._status.element),this._details.hide(!0),this._status.hide(),this._contentWidget.hide(),this._ctxSuggestWidgetVisible.reset(),this._ctxSuggestWidgetMultipleSuggestions.reset(),this._ctxSuggestWidgetHasFocusedSuggestion.reset(),this._showTimeout.cancel(),this.element.domNode.classList.remove("visible"),this._list.splice(0,this._list.length),this._focusedItem=void 0,this._cappedHeight=void 0,this._explainMode=!1;break;case 1:this.element.domNode.classList.add("message"),this._messageElement.textContent=E0.LOADING_MESSAGE,Jr(this._listElement,this._status.element),Xo(this._messageElement),this._details.hide(),this._show(),this._focusedItem=void 0,Qp(E0.LOADING_MESSAGE);break;case 2:this.element.domNode.classList.add("message"),this._messageElement.textContent=E0.NO_SUGGESTIONS_MESSAGE,Jr(this._listElement,this._status.element),Xo(this._messageElement),this._details.hide(),this._show(),this._focusedItem=void 0,Qp(E0.NO_SUGGESTIONS_MESSAGE);break;case 3:Jr(this._messageElement),Xo(this._listElement,this._status.element),this._show();break;case 4:Jr(this._messageElement),Xo(this._listElement,this._status.element),this._show();break;case 5:Jr(this._messageElement),Xo(this._listElement,this._status.element),this._details.show(),this._show();break}}_show(){this._status.show(),this._contentWidget.show(),this._layout(this._persistedSize.restore()),this._ctxSuggestWidgetVisible.set(!0),this._showTimeout.cancelAndSet(()=>{this.element.domNode.classList.add("visible"),this._onDidShow.fire(this)},100)}showTriggered(e,t){this._state===0&&(this._contentWidget.setPosition(this.editor.getPosition()),this._isAuto=!!e,this._isAuto||(this._loadingTimeout=Gp(()=>this._setState(1),t)))}showSuggestions(e,t,i,s,r){var o,a;if(this._contentWidget.setPosition(this.editor.getPosition()),(o=this._loadingTimeout)===null||o===void 0||o.dispose(),(a=this._currentSuggestionDetails)===null||a===void 0||a.cancel(),this._currentSuggestionDetails=void 0,this._completionModel!==e&&(this._completionModel=e),i&&this._state!==2&&this._state!==0){this._setState(4);return}const l=this._completionModel.items.length,c=l===0;if(this._ctxSuggestWidgetMultipleSuggestions.set(l>1),c){this._setState(s?0:2),this._completionModel=void 0;return}this._focusedItem=void 0,this._onDidFocus.pause(),this._onDidSelect.pause();try{this._list.splice(0,this._list.length,this._completionModel.items),this._setState(i?4:3),this._list.reveal(t,0),this._list.setFocus(r?[]:[t])}finally{this._onDidFocus.resume(),this._onDidSelect.resume()}this._pendingLayout.value=FA(pt(this.element.domNode),()=>{this._pendingLayout.clear(),this._layout(this.element.size),this._details.widget.domNode.classList.remove("focused")})}focusSelected(){this._list.length>0&&this._list.setFocus([0])}selectNextPage(){switch(this._state){case 0:return!1;case 5:return this._details.widget.pageDown(),!0;case 1:return!this._isAuto;default:return this._list.focusNextPage(),!0}}selectNext(){switch(this._state){case 0:return!1;case 1:return!this._isAuto;default:return this._list.focusNext(1,!0),!0}}selectLast(){switch(this._state){case 0:return!1;case 5:return this._details.widget.scrollBottom(),!0;case 1:return!this._isAuto;default:return this._list.focusLast(),!0}}selectPreviousPage(){switch(this._state){case 0:return!1;case 5:return this._details.widget.pageUp(),!0;case 1:return!this._isAuto;default:return this._list.focusPreviousPage(),!0}}selectPrevious(){switch(this._state){case 0:return!1;case 1:return!this._isAuto;default:return this._list.focusPrevious(1,!0),!1}}selectFirst(){switch(this._state){case 0:return!1;case 5:return this._details.widget.scrollTop(),!0;case 1:return!this._isAuto;default:return this._list.focusFirst(),!0}}getFocusedItem(){if(this._state!==0&&this._state!==2&&this._state!==1&&this._completionModel&&this._list.getFocus().length>0)return{item:this._list.getFocusedElements()[0],index:this._list.getFocus()[0],model:this._completionModel}}toggleDetailsFocus(){this._state===5?(this._setState(3),this._details.widget.domNode.classList.remove("focused")):this._state===3&&this._isDetailsVisible()&&(this._setState(5),this._details.widget.domNode.classList.add("focused"))}toggleDetails(){this._isDetailsVisible()?(this._pendingShowDetails.clear(),this._ctxSuggestWidgetDetailsVisible.set(!1),this._setDetailsVisible(!1),this._details.hide(),this.element.domNode.classList.remove("shows-details")):(bG(this._list.getFocusedElements()[0])||this._explainMode)&&(this._state===3||this._state===5||this._state===4)&&(this._ctxSuggestWidgetDetailsVisible.set(!0),this._setDetailsVisible(!0),this.showDetails(!1))}showDetails(e){this._pendingShowDetails.value=FA(pt(this.element.domNode),()=>{this._pendingShowDetails.clear(),this._details.show(),e?this._details.widget.renderLoading():this._details.widget.renderItem(this._list.getFocusedElements()[0],this._explainMode),this._positionDetails(),this.editor.focus(),this.element.domNode.classList.add("shows-details")})}toggleExplainMode(){this._list.getFocusedElements()[0]&&(this._explainMode=!this._explainMode,this._isDetailsVisible()?this.showDetails(!1):this.toggleDetails())}resetPersistedSize(){this._persistedSize.reset()}hideWidget(){var e;this._pendingLayout.clear(),this._pendingShowDetails.clear(),(e=this._loadingTimeout)===null||e===void 0||e.dispose(),this._setState(0),this._onDidHide.fire(this),this.element.clearSashHoverState();const t=this._persistedSize.restore(),i=Math.ceil(this.getLayoutInfo().itemHeight*4.3);t&&t.height<i&&this._persistedSize.store(t.with(void 0,i))}isFrozen(){return this._state===4}_afterRender(e){if(e===null){this._isDetailsVisible()&&this._details.hide();return}this._state===2||this._state===1||(this._isDetailsVisible()&&this._details.show(),this._positionDetails())}_layout(e){var t,i,s;if(!this.editor.hasModel()||!this.editor.getDomNode())return;const r=Zp(this.element.domNode.ownerDocument.body),o=this.getLayoutInfo();e||(e=o.defaultSize);let a=e.height,l=e.width;if(this._status.element.style.height=`${o.itemHeight}px`,this._state===2||this._state===1)a=o.itemHeight+o.borderHeight,l=o.defaultSize.width/2,this.element.enableSashes(!1,!1,!1,!1),this.element.minSize=this.element.maxSize=new ni(l,a),this._contentWidget.setPreference(2);else{const c=r.width-o.borderHeight-2*o.horizontalPadding;l>c&&(l=c);const u=this._completionModel?this._completionModel.stats.pLabelLen*o.typicalHalfwidthCharacterWidth:l,h=o.statusBarHeight+this._list.contentHeight+o.borderHeight,d=o.itemHeight+o.statusBarHeight,f=ys(this.editor.getDomNode()),g=this.editor.getScrolledVisiblePosition(this.editor.getPosition()),p=f.top+g.top+g.height,m=Math.min(r.height-p-o.verticalPadding,h),_=f.top+g.top-o.verticalPadding,b=Math.min(_,h);let y=Math.min(Math.max(b,m)+o.borderHeight,h);a===((t=this._cappedHeight)===null||t===void 0?void 0:t.capped)&&(a=this._cappedHeight.wanted),a<d&&(a=d),a>y&&(a=y);const w=150;a>m||this._forceRenderingAbove&&_>w?(this._contentWidget.setPreference(1),this.element.enableSashes(!0,!0,!1,!1),y=b):(this._contentWidget.setPreference(2),this.element.enableSashes(!1,!0,!0,!1),y=m),this.element.preferredSize=new ni(u,o.defaultSize.height),this.element.maxSize=new ni(c,y),this.element.minSize=new ni(220,d),this._cappedHeight=a===h?{wanted:(s=(i=this._cappedHeight)===null||i===void 0?void 0:i.wanted)!==null&&s!==void 0?s:e.height,capped:a}:void 0}this._resize(l,a)}_resize(e,t){const{width:i,height:s}=this.element.maxSize;e=Math.min(i,e),t=Math.min(s,t);const{statusBarHeight:r}=this.getLayoutInfo();this._list.layout(t-r,e),this._listElement.style.height=`${t-r}px`,this.element.layout(t,e),this._contentWidget.layout(),this._positionDetails()}_positionDetails(){var e;this._isDetailsVisible()&&this._details.placeAtAnchor(this.element.domNode,((e=this._contentWidget.getPosition())===null||e===void 0?void 0:e.preference[0])===2)}getLayoutInfo(){const e=this.editor.getOption(50),t=qo(this.editor.getOption(119)||e.lineHeight,8,1e3),i=!this.editor.getOption(117).showStatusBar||this._state===2||this._state===1?0:t,s=this._details.widget.borderWidth,r=2*s;return{itemHeight:t,statusBarHeight:i,borderWidth:s,borderHeight:r,typicalHalfwidthCharacterWidth:e.typicalHalfwidthCharacterWidth,verticalPadding:22,horizontalPadding:14,defaultSize:new ni(430,i+12*t+r)}}_isDetailsVisible(){return this._storageService.getBoolean("expandSuggestionDocs",0,!1)}_setDetailsVisible(e){this._storageService.store("expandSuggestionDocs",e,0,0)}forceRenderingAbove(){this._forceRenderingAbove||(this._forceRenderingAbove=!0,this._layout(this._persistedSize.restore()))}stopForceRenderingAbove(){this._forceRenderingAbove=!1}};vx.LOADING_MESSAGE=v("suggestWidget.loading","Loading...");vx.NO_SUGGESTIONS_MESSAGE=v("suggestWidget.noSuggestions","No suggestions.");vx=E0=yrt([YI(1,Rc),YI(2,ft),YI(3,Ms),YI(4,at)],vx);class Srt{constructor(e,t){this._widget=e,this._editor=t,this.allowEditorOverflow=!0,this.suppressMouseDown=!1,this._preferenceLocked=!1,this._added=!1,this._hidden=!1}dispose(){this._added&&(this._added=!1,this._editor.removeContentWidget(this))}getId(){return"editor.widget.suggestWidget"}getDomNode(){return this._widget.element.domNode}show(){this._hidden=!1,this._added||(this._added=!0,this._editor.addContentWidget(this))}hide(){this._hidden||(this._hidden=!0,this.layout())}layout(){this._editor.layoutContentWidget(this)}getPosition(){return this._hidden||!this._position||!this._preference?null:{position:this._position,preference:[this._preference]}}beforeRender(){const{height:e,width:t}=this._widget.element.size,{borderWidth:i,horizontalPadding:s}=this._widget.getLayoutInfo();return new ni(t+2*i+s,e+2*i)}afterRender(e){this._widget._afterRender(e)}setPreference(e){this._preferenceLocked||(this._preference=e)}lockPreference(){this._preferenceLocked=!0}unlockPreference(){this._preferenceLocked=!1}setPosition(e){this._position=e}}var krt=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},u0=function(n,e){return function(t,i){e(t,i,n)}},SV;class Lrt{constructor(e,t){if(this._model=e,this._position=t,e.getLineMaxColumn(t.lineNumber)!==t.column){const s=e.getOffsetAt(t),r=e.getPositionAt(s+1);this._marker=e.deltaDecorations([],[{range:M.fromPositions(t,r),options:{description:"suggest-line-suffix",stickiness:1}}])}}dispose(){this._marker&&!this._model.isDisposed()&&this._model.deltaDecorations(this._marker,[])}delta(e){if(this._model.isDisposed()||this._position.lineNumber!==e.lineNumber)return 0;if(this._marker){const t=this._model.getDecorationRange(this._marker[0]);return this._model.getOffsetAt(t.getStartPosition())-this._model.getOffsetAt(e)}else return this._model.getLineMaxColumn(e.lineNumber)-e.column}}let fc=SV=class{static get(e){return e.getContribution(SV.ID)}constructor(e,t,i,s,r,o,a){this._memoryService=t,this._commandService=i,this._contextKeyService=s,this._instantiationService=r,this._logService=o,this._telemetryService=a,this._lineSuffix=new qs,this._toDispose=new xe,this._selectors=new xrt(h=>h.priority),this._onWillInsertSuggestItem=new ue,this.onWillInsertSuggestItem=this._onWillInsertSuggestItem.event,this.editor=e,this.model=r.createInstance(bV,this.editor),this._selectors.register({priority:0,select:(h,d,f)=>this._memoryService.select(h,d,f)});const l=Et.InsertMode.bindTo(s);l.set(e.getOption(117).insertMode),this._toDispose.add(this.model.onDidTrigger(()=>l.set(e.getOption(117).insertMode))),this.widget=this._toDispose.add(new y5(pt(e.getDomNode()),()=>{const h=this._instantiationService.createInstance(vx,this.editor);this._toDispose.add(h),this._toDispose.add(h.onDidSelect(m=>this._insertSuggestion(m,0),this));const d=new art(this.editor,h,this.model,m=>this._insertSuggestion(m,2));this._toDispose.add(d);const f=Et.MakesTextEdit.bindTo(this._contextKeyService),g=Et.HasInsertAndReplaceRange.bindTo(this._contextKeyService),p=Et.CanResolve.bindTo(this._contextKeyService);return this._toDispose.add(st(()=>{f.reset(),g.reset(),p.reset()})),this._toDispose.add(h.onDidFocus(({item:m})=>{const _=this.editor.getPosition(),b=m.editStart.column,y=_.column;let w=!0;this.editor.getOption(1)==="smart"&&this.model.state===2&&!m.completion.additionalTextEdits&&!(m.completion.insertTextRules&4)&&y-b===m.completion.insertText.length&&(w=this.editor.getModel().getValueInRange({startLineNumber:_.lineNumber,startColumn:b,endLineNumber:_.lineNumber,endColumn:y})!==m.completion.insertText),f.set(w),g.set(!he.equals(m.editInsertEnd,m.editReplaceEnd)),p.set(!!m.provider.resolveCompletionItem||!!m.completion.documentation||m.completion.detail!==m.completion.label)})),this._toDispose.add(h.onDetailsKeyDown(m=>{if(m.toKeyCodeChord().equals(new Yf(!0,!1,!1,!1,33))||Gt&&m.toKeyCodeChord().equals(new Yf(!1,!1,!1,!0,33))){m.stopPropagation();return}m.toKeyCodeChord().isModifierKey()||this.editor.focus()})),h})),this._overtypingCapturer=this._toDispose.add(new y5(pt(e.getDomNode()),()=>this._toDispose.add(new $2(this.editor,this.model)))),this._alternatives=this._toDispose.add(new y5(pt(e.getDomNode()),()=>this._toDispose.add(new Q_(this.editor,this._contextKeyService)))),this._toDispose.add(r.createInstance(_x,e)),this._toDispose.add(this.model.onDidTrigger(h=>{this.widget.value.showTriggered(h.auto,h.shy?250:50),this._lineSuffix.value=new Lrt(this.editor.getModel(),h.position)})),this._toDispose.add(this.model.onDidSuggest(h=>{if(h.triggerOptions.shy)return;let d=-1;for(const g of this._selectors.itemsOrderedByPriorityDesc)if(d=g.select(this.editor.getModel(),this.editor.getPosition(),h.completionModel.items),d!==-1)break;d===-1&&(d=0);let f=!1;if(h.triggerOptions.auto){const g=this.editor.getOption(117);g.selectionMode==="never"||g.selectionMode==="always"?f=g.selectionMode==="never":g.selectionMode==="whenTriggerCharacter"?f=h.triggerOptions.triggerKind!==1:g.selectionMode==="whenQuickSuggestion"&&(f=h.triggerOptions.triggerKind===1&&!h.triggerOptions.refilter)}this.widget.value.showSuggestions(h.completionModel,d,h.isFrozen,h.triggerOptions.auto,f)})),this._toDispose.add(this.model.onDidCancel(h=>{h.retrigger||this.widget.value.hideWidget()})),this._toDispose.add(this.editor.onDidBlurEditorWidget(()=>{this.model.cancel(),this.model.clear()}));const c=Et.AcceptSuggestionsOnEnter.bindTo(s),u=()=>{const h=this.editor.getOption(1);c.set(h==="on"||h==="smart")};this._toDispose.add(this.editor.onDidChangeConfiguration(()=>u())),u()}dispose(){this._alternatives.dispose(),this._toDispose.dispose(),this.widget.dispose(),this.model.dispose(),this._lineSuffix.dispose(),this._onWillInsertSuggestItem.dispose()}_insertSuggestion(e,t){if(!e||!e.item){this._alternatives.value.reset(),this.model.cancel(),this.model.clear();return}if(!this.editor.hasModel())return;const i=sr.get(this.editor);if(!i)return;this._onWillInsertSuggestItem.fire({item:e.item});const s=this.editor.getModel(),r=s.getAlternativeVersionId(),{item:o}=e,a=[],l=new es;t&1||this.editor.pushUndoStop();const c=this.getOverwriteInfo(o,!!(t&8));this._memoryService.memorize(s,this.editor.getPosition(),o);const u=o.isResolved;let h=-1,d=-1;if(Array.isArray(o.completion.additionalTextEdits)){this.model.cancel();const g=Au.capture(this.editor);this.editor.executeEdits("suggestController.additionalTextEdits.sync",o.completion.additionalTextEdits.map(p=>un.replaceMove(M.lift(p.range),p.text))),g.restoreRelativeVerticalPositionOfCursor(this.editor)}else if(!u){const g=new Nr;let p;const m=s.onDidChangeContent(w=>{if(w.isFlush){l.cancel(),m.dispose();return}for(const S of w.changes){const E=M.getEndPosition(S.range);(!p||he.isBefore(E,p))&&(p=E)}}),_=t;t|=2;let b=!1;const y=this.editor.onWillType(()=>{y.dispose(),b=!0,_&2||this.editor.pushUndoStop()});a.push(o.resolve(l.token).then(()=>{if(!o.completion.additionalTextEdits||l.token.isCancellationRequested)return;if(p&&o.completion.additionalTextEdits.some(S=>he.isBefore(p,M.getStartPosition(S.range))))return!1;b&&this.editor.pushUndoStop();const w=Au.capture(this.editor);return this.editor.executeEdits("suggestController.additionalTextEdits.async",o.completion.additionalTextEdits.map(S=>un.replaceMove(M.lift(S.range),S.text))),w.restoreRelativeVerticalPositionOfCursor(this.editor),(b||!(_&2))&&this.editor.pushUndoStop(),!0}).then(w=>{this._logService.trace("[suggest] async resolving of edits DONE (ms, applied?)",g.elapsed(),w),d=w===!0?1:w===!1?0:-2}).finally(()=>{m.dispose(),y.dispose()}))}let{insertText:f}=o.completion;if(o.completion.insertTextRules&4||(f=Hy.escape(f)),this.model.cancel(),i.insert(f,{overwriteBefore:c.overwriteBefore,overwriteAfter:c.overwriteAfter,undoStopBefore:!1,undoStopAfter:!1,adjustWhitespace:!(o.completion.insertTextRules&1),clipboardText:e.model.clipboardText,overtypingCapturer:this._overtypingCapturer.value}),t&2||this.editor.pushUndoStop(),o.completion.command)if(o.completion.command.id===YE.id)this.model.trigger({auto:!0,retrigger:!0});else{const g=new Nr;a.push(this._commandService.executeCommand(o.completion.command.id,...o.completion.command.arguments?[...o.completion.command.arguments]:[]).catch(p=>{o.completion.extensionId?Jn(p):vt(p)}).finally(()=>{h=g.elapsed()}))}t&4&&this._alternatives.value.set(e,g=>{for(l.cancel();s.canUndo();){r!==s.getAlternativeVersionId()&&s.undo(),this._insertSuggestion(g,3|(t&8?8:0));break}}),this._alertCompletionItem(o),Promise.all(a).finally(()=>{this._reportSuggestionAcceptedTelemetry(o,s,u,h,d),this.model.clear(),l.dispose()})}_reportSuggestionAcceptedTelemetry(e,t,i,s,r){var o,a,l;Math.floor(Math.random()*100)!==0&&this._telemetryService.publicLog2("suggest.acceptedSuggestion",{extensionId:(a=(o=e.extensionId)===null||o===void 0?void 0:o.value)!==null&&a!==void 0?a:"unknown",providerId:(l=e.provider._debugDisplayName)!==null&&l!==void 0?l:"unknown",kind:e.completion.kind,basenameHash:jj(Wl(t.uri)).toString(16),languageId:t.getLanguageId(),fileExtension:wje(t.uri),resolveInfo:e.provider.resolveCompletionItem?i?1:0:-1,resolveDuration:e.resolveDuration,commandDuration:s,additionalEditsAsync:r})}getOverwriteInfo(e,t){Si(this.editor.hasModel());let i=this.editor.getOption(117).insertMode==="replace";t&&(i=!i);const s=e.position.column-e.editStart.column,r=(i?e.editReplaceEnd.column:e.editInsertEnd.column)-e.position.column,o=this.editor.getPosition().column-e.position.column,a=this._lineSuffix.value?this._lineSuffix.value.delta(this.editor.getPosition()):0;return{overwriteBefore:s+o,overwriteAfter:r+a}}_alertCompletionItem(e){if(Ir(e.completion.additionalTextEdits)){const t=v("aria.alert.snippet","Accepting '{0}' made {1} additional edits",e.textLabel,e.completion.additionalTextEdits.length);ha(t)}}triggerSuggest(e,t,i){this.editor.hasModel()&&(this.model.trigger({auto:t??!1,completionOptions:{providerFilter:e,kindFilter:i?new Set:void 0}}),this.editor.revealPosition(this.editor.getPosition(),0),this.editor.focus())}triggerSuggestAndAcceptBest(e){if(!this.editor.hasModel())return;const t=this.editor.getPosition(),i=()=>{t.equals(this.editor.getPosition())&&this._commandService.executeCommand(e.fallback)},s=r=>{if(r.completion.insertTextRules&4||r.completion.additionalTextEdits)return!0;const o=this.editor.getPosition(),a=r.editStart.column,l=o.column;return l-a!==r.completion.insertText.length?!0:this.editor.getModel().getValueInRange({startLineNumber:o.lineNumber,startColumn:a,endLineNumber:o.lineNumber,endColumn:l})!==r.completion.insertText};Ve.once(this.model.onDidTrigger)(r=>{const o=[];Ve.any(this.model.onDidTrigger,this.model.onDidCancel)(()=>{yi(o),i()},void 0,o),this.model.onDidSuggest(({completionModel:a})=>{if(yi(o),a.items.length===0){i();return}const l=this._memoryService.select(this.editor.getModel(),this.editor.getPosition(),a.items),c=a.items[l];if(!s(c)){i();return}this.editor.pushUndoStop(),this._insertSuggestion({index:l,item:c,model:a},7)},void 0,o)}),this.model.trigger({auto:!1,shy:!0}),this.editor.revealPosition(t,0),this.editor.focus()}acceptSelectedSuggestion(e,t){const i=this.widget.value.getFocusedItem();let s=0;e&&(s|=4),t&&(s|=8),this._insertSuggestion(i,s)}acceptNextSuggestion(){this._alternatives.value.next()}acceptPrevSuggestion(){this._alternatives.value.prev()}cancelSuggestWidget(){this.model.cancel(),this.model.clear(),this.widget.value.hideWidget()}focusSuggestion(){this.widget.value.focusSelected()}selectNextSuggestion(){this.widget.value.selectNext()}selectNextPageSuggestion(){this.widget.value.selectNextPage()}selectLastSuggestion(){this.widget.value.selectLast()}selectPrevSuggestion(){this.widget.value.selectPrevious()}selectPrevPageSuggestion(){this.widget.value.selectPreviousPage()}selectFirstSuggestion(){this.widget.value.selectFirst()}toggleSuggestionDetails(){this.widget.value.toggleDetails()}toggleExplainMode(){this.widget.value.toggleExplainMode()}toggleSuggestionFocus(){this.widget.value.toggleDetailsFocus()}resetWidgetSize(){this.widget.value.resetPersistedSize()}forceRenderingAbove(){this.widget.value.forceRenderingAbove()}stopForceRenderingAbove(){this.widget.isInitialized&&this.widget.value.stopForceRenderingAbove()}registerSelector(e){return this._selectors.register(e)}};fc.ID="editor.contrib.suggestController";fc=SV=krt([u0(1,H2),u0(2,Dn),u0(3,ft),u0(4,at),u0(5,ga),u0(6,fa)],fc);class xrt{constructor(e){this.prioritySelector=e,this._items=new Array}register(e){if(this._items.indexOf(e)!==-1)throw new Error("Value is already registered");return this._items.push(e),this._items.sort((t,i)=>this.prioritySelector(i)-this.prioritySelector(t)),{dispose:()=>{const t=this._items.indexOf(e);t>=0&&this._items.splice(t,1)}}}get itemsOrderedByPriorityDesc(){return this._items}}class YE extends qe{constructor(){super({id:YE.id,label:v("suggest.trigger.label","Trigger Suggest"),alias:"Trigger Suggest",precondition:ke.and($.writable,$.hasCompletionItemProvider,Et.Visible.toNegated()),kbOpts:{kbExpr:$.textInputFocus,primary:2058,secondary:[2087],mac:{primary:266,secondary:[521,2087]},weight:100}})}run(e,t,i){const s=fc.get(t);if(!s)return;let r;i&&typeof i=="object"&&i.auto===!0&&(r=!0),s.triggerSuggest(void 0,r,void 0)}}YE.id="editor.action.triggerSuggest";ti(fc.ID,fc,2);Ae(YE);const tl=190,bo=Ks.bindToContribution(fc.get);Be(new bo({id:"acceptSelectedSuggestion",precondition:ke.and(Et.Visible,Et.HasFocusedSuggestion),handler(n){n.acceptSelectedSuggestion(!0,!1)},kbOpts:[{primary:2,kbExpr:ke.and(Et.Visible,$.textInputFocus),weight:tl},{primary:3,kbExpr:ke.and(Et.Visible,$.textInputFocus,Et.AcceptSuggestionsOnEnter,Et.MakesTextEdit),weight:tl}],menuOpts:[{menuId:Pp,title:v("accept.insert","Insert"),group:"left",order:1,when:Et.HasInsertAndReplaceRange.toNegated()},{menuId:Pp,title:v("accept.insert","Insert"),group:"left",order:1,when:ke.and(Et.HasInsertAndReplaceRange,Et.InsertMode.isEqualTo("insert"))},{menuId:Pp,title:v("accept.replace","Replace"),group:"left",order:1,when:ke.and(Et.HasInsertAndReplaceRange,Et.InsertMode.isEqualTo("replace"))}]}));Be(new bo({id:"acceptAlternativeSelectedSuggestion",precondition:ke.and(Et.Visible,$.textInputFocus,Et.HasFocusedSuggestion),kbOpts:{weight:tl,kbExpr:$.textInputFocus,primary:1027,secondary:[1026]},handler(n){n.acceptSelectedSuggestion(!1,!0)},menuOpts:[{menuId:Pp,group:"left",order:2,when:ke.and(Et.HasInsertAndReplaceRange,Et.InsertMode.isEqualTo("insert")),title:v("accept.replace","Replace")},{menuId:Pp,group:"left",order:2,when:ke.and(Et.HasInsertAndReplaceRange,Et.InsertMode.isEqualTo("replace")),title:v("accept.insert","Insert")}]}));Yt.registerCommandAlias("acceptSelectedSuggestionOnEnter","acceptSelectedSuggestion");Be(new bo({id:"hideSuggestWidget",precondition:Et.Visible,handler:n=>n.cancelSuggestWidget(),kbOpts:{weight:tl,kbExpr:$.textInputFocus,primary:9,secondary:[1033]}}));Be(new bo({id:"selectNextSuggestion",precondition:ke.and(Et.Visible,ke.or(Et.MultipleSuggestions,Et.HasFocusedSuggestion.negate())),handler:n=>n.selectNextSuggestion(),kbOpts:{weight:tl,kbExpr:$.textInputFocus,primary:18,secondary:[2066],mac:{primary:18,secondary:[2066,300]}}}));Be(new bo({id:"selectNextPageSuggestion",precondition:ke.and(Et.Visible,ke.or(Et.MultipleSuggestions,Et.HasFocusedSuggestion.negate())),handler:n=>n.selectNextPageSuggestion(),kbOpts:{weight:tl,kbExpr:$.textInputFocus,primary:12,secondary:[2060]}}));Be(new bo({id:"selectLastSuggestion",precondition:ke.and(Et.Visible,ke.or(Et.MultipleSuggestions,Et.HasFocusedSuggestion.negate())),handler:n=>n.selectLastSuggestion()}));Be(new bo({id:"selectPrevSuggestion",precondition:ke.and(Et.Visible,ke.or(Et.MultipleSuggestions,Et.HasFocusedSuggestion.negate())),handler:n=>n.selectPrevSuggestion(),kbOpts:{weight:tl,kbExpr:$.textInputFocus,primary:16,secondary:[2064],mac:{primary:16,secondary:[2064,302]}}}));Be(new bo({id:"selectPrevPageSuggestion",precondition:ke.and(Et.Visible,ke.or(Et.MultipleSuggestions,Et.HasFocusedSuggestion.negate())),handler:n=>n.selectPrevPageSuggestion(),kbOpts:{weight:tl,kbExpr:$.textInputFocus,primary:11,secondary:[2059]}}));Be(new bo({id:"selectFirstSuggestion",precondition:ke.and(Et.Visible,ke.or(Et.MultipleSuggestions,Et.HasFocusedSuggestion.negate())),handler:n=>n.selectFirstSuggestion()}));Be(new bo({id:"focusSuggestion",precondition:ke.and(Et.Visible,Et.HasFocusedSuggestion.negate()),handler:n=>n.focusSuggestion(),kbOpts:{weight:tl,kbExpr:$.textInputFocus,primary:2058,secondary:[2087],mac:{primary:266,secondary:[2087]}}}));Be(new bo({id:"focusAndAcceptSuggestion",precondition:ke.and(Et.Visible,Et.HasFocusedSuggestion.negate()),handler:n=>{n.focusSuggestion(),n.acceptSelectedSuggestion(!0,!1)}}));Be(new bo({id:"toggleSuggestionDetails",precondition:ke.and(Et.Visible,Et.HasFocusedSuggestion),handler:n=>n.toggleSuggestionDetails(),kbOpts:{weight:tl,kbExpr:$.textInputFocus,primary:2058,secondary:[2087],mac:{primary:266,secondary:[2087]}},menuOpts:[{menuId:Pp,group:"right",order:1,when:ke.and(Et.DetailsVisible,Et.CanResolve),title:v("detail.more","show less")},{menuId:Pp,group:"right",order:1,when:ke.and(Et.DetailsVisible.toNegated(),Et.CanResolve),title:v("detail.less","show more")}]}));Be(new bo({id:"toggleExplainMode",precondition:Et.Visible,handler:n=>n.toggleExplainMode(),kbOpts:{weight:100,primary:2138}}));Be(new bo({id:"toggleSuggestionFocus",precondition:Et.Visible,handler:n=>n.toggleSuggestionFocus(),kbOpts:{weight:tl,kbExpr:$.textInputFocus,primary:2570,mac:{primary:778}}}));Be(new bo({id:"insertBestCompletion",precondition:ke.and($.textInputFocus,ke.equals("config.editor.tabCompletion","on"),_x.AtEnd,Et.Visible.toNegated(),Q_.OtherSuggestions.toNegated(),sr.InSnippetMode.toNegated()),handler:(n,e)=>{n.triggerSuggestAndAcceptBest(ao(e)?{fallback:"tab",...e}:{fallback:"tab"})},kbOpts:{weight:tl,primary:2}}));Be(new bo({id:"insertNextSuggestion",precondition:ke.and($.textInputFocus,ke.equals("config.editor.tabCompletion","on"),Q_.OtherSuggestions,Et.Visible.toNegated(),sr.InSnippetMode.toNegated()),handler:n=>n.acceptNextSuggestion(),kbOpts:{weight:tl,kbExpr:$.textInputFocus,primary:2}}));Be(new bo({id:"insertPrevSuggestion",precondition:ke.and($.textInputFocus,ke.equals("config.editor.tabCompletion","on"),Q_.OtherSuggestions,Et.Visible.toNegated(),sr.InSnippetMode.toNegated()),handler:n=>n.acceptPrevSuggestion(),kbOpts:{weight:tl,kbExpr:$.textInputFocus,primary:1026}}));Ae(class extends qe{constructor(){super({id:"editor.action.resetSuggestSize",label:v("suggest.reset.label","Reset Suggest Widget Size"),alias:"Reset Suggest Widget Size",precondition:void 0})}run(n,e){var t;(t=fc.get(e))===null||t===void 0||t.resetWidgetSize()}});class Ert extends pe{get selectedItem(){return this._selectedItem}constructor(e,t,i,s){super(),this.editor=e,this.suggestControllerPreselector=t,this.checkModelVersion=i,this.onWillAccept=s,this.isSuggestWidgetVisible=!1,this.isShiftKeyPressed=!1,this._isActive=!1,this._currentSuggestItemInfo=void 0,this._selectedItem=si(this,void 0),this._register(e.onKeyDown(o=>{o.shiftKey&&!this.isShiftKeyPressed&&(this.isShiftKeyPressed=!0,this.update(this._isActive))})),this._register(e.onKeyUp(o=>{o.shiftKey&&this.isShiftKeyPressed&&(this.isShiftKeyPressed=!1,this.update(this._isActive))}));const r=fc.get(this.editor);if(r){this._register(r.registerSelector({priority:100,select:(l,c,u)=>{var h;ln(_=>this.checkModelVersion(_));const d=this.editor.getModel();if(!d)return-1;const f=(h=this.suggestControllerPreselector())===null||h===void 0?void 0:h.removeCommonPrefix(d);if(!f)return-1;const g=he.lift(c),p=u.map((_,b)=>{const w=bk.fromSuggestion(r,d,g,_,this.isShiftKeyPressed).toSingleTextEdit().removeCommonPrefix(d),S=f.augments(w);return{index:b,valid:S,prefixLength:w.text.length,suggestItem:_}}).filter(_=>_&&_.valid&&_.prefixLength>0),m=Cq(p,Nl(_=>_.prefixLength,Pf));return m?m.index:-1}}));let o=!1;const a=()=>{o||(o=!0,this._register(r.widget.value.onDidShow(()=>{this.isSuggestWidgetVisible=!0,this.update(!0)})),this._register(r.widget.value.onDidHide(()=>{this.isSuggestWidgetVisible=!1,this.update(!1)})),this._register(r.widget.value.onDidFocus(()=>{this.isSuggestWidgetVisible=!0,this.update(!0)})))};this._register(Ve.once(r.model.onDidTrigger)(l=>{a()})),this._register(r.onWillInsertSuggestItem(l=>{const c=this.editor.getPosition(),u=this.editor.getModel();if(!c||!u)return;const h=bk.fromSuggestion(r,u,c,l.item,this.isShiftKeyPressed);this.onWillAccept(h)}))}this.update(this._isActive)}update(e){const t=this.getSuggestItemInfo();(this._isActive!==e||!Drt(this._currentSuggestItemInfo,t))&&(this._isActive=e,this._currentSuggestItemInfo=t,ln(i=>{this.checkModelVersion(i),this._selectedItem.set(this._isActive?this._currentSuggestItemInfo:void 0,i)}))}getSuggestItemInfo(){const e=fc.get(this.editor);if(!e||!this.isSuggestWidgetVisible)return;const t=e.widget.value.getFocusedItem(),i=this.editor.getPosition(),s=this.editor.getModel();if(!(!t||!i||!s))return bk.fromSuggestion(e,s,i,t.item,this.isShiftKeyPressed)}stopForceRenderingAbove(){const e=fc.get(this.editor);e==null||e.stopForceRenderingAbove()}forceRenderingAbove(){const e=fc.get(this.editor);e==null||e.forceRenderingAbove()}}class bk{static fromSuggestion(e,t,i,s,r){let{insertText:o}=s.completion,a=!1;if(s.completion.insertTextRules&4){const c=new Hy().parse(o);c.children.length<100&&oR.adjustWhitespace(t,i,!0,c),o=c.toString(),a=!0}const l=e.getOverwriteInfo(s,r);return new bk(M.fromPositions(i.delta(0,-l.overwriteBefore),i.delta(0,Math.max(l.overwriteAfter,0))),o,s.completion.kind,a)}constructor(e,t,i,s){this.range=e,this.insertText=t,this.completionItemKind=i,this.isSnippetText=s}equals(e){return this.range.equalsRange(e.range)&&this.insertText===e.insertText&&this.completionItemKind===e.completionItemKind&&this.isSnippetText===e.isSnippetText}toSelectedSuggestionInfo(){return new Upe(this.range,this.insertText,this.completionItemKind,this.isSnippetText)}toSingleTextEdit(){return new $y(this.range,this.insertText)}}function Drt(n,e){return n===e?!0:!n||!e?!1:n.equals(e)}var Irt=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},Eg=function(n,e){return function(t,i){e(t,i,n)}},kV;let il=kV=class extends pe{static get(e){return e.getContribution(kV.ID)}constructor(e,t,i,s,r,o,a,l,c){super(),this.editor=e,this._instantiationService=t,this._contextKeyService=i,this._configurationService=s,this._commandService=r,this._debounceService=o,this._languageFeaturesService=a,this._audioCueService=l,this._keybindingService=c,this.model=fP("inlineCompletionModel",void 0),this._textModelVersionId=si(this,-1),this._cursorPosition=si(this,new he(1,1)),this._suggestWidgetAdaptor=this._register(new Ert(this.editor,()=>{var d,f;return(f=(d=this.model.get())===null||d===void 0?void 0:d.selectedInlineCompletion.get())===null||f===void 0?void 0:f.toSingleTextEdit(void 0)},d=>this.updateObservables(d,Ta.Other),d=>{ln(f=>{var g;this.updateObservables(f,Ta.Other),(g=this.model.get())===null||g===void 0||g.handleSuggestAccepted(d)})})),this._enabled=Pn(this.editor.onDidChangeConfiguration,()=>this.editor.getOption(62).enabled),this._ghostTextWidget=this._register(this._instantiationService.createInstance(gV,this.editor,{ghostText:this.model.map((d,f)=>d==null?void 0:d.ghostText.read(f)),minReservedLineCount:gP(0),targetTextModel:this.model.map(d=>d==null?void 0:d.textModel)})),this._debounceValue=this._debounceService.for(this._languageFeaturesService.inlineCompletionsProvider,"InlineCompletionsDebounce",{min:50,max:50}),this._playAudioCueSignal=Gq(this),this._isReadonly=Pn(this.editor.onDidChangeConfiguration,()=>this.editor.getOption(90)),this._textModel=Pn(this.editor.onDidChangeModel,()=>this.editor.getModel()),this._textModelIfWritable=St(d=>this._isReadonly.read(d)?void 0:this._textModel.read(d)),this._register(new zs(this._contextKeyService,this.model)),this._register(pi(d=>{const f=this._textModelIfWritable.read(d);ln(g=>{if(this.model.set(void 0,g),this.updateObservables(g,Ta.Other),f){const p=t.createInstance(mV,f,this._suggestWidgetAdaptor.selectedItem,this._cursorPosition,this._textModelVersionId,this._debounceValue,Pn(e.onDidChangeConfiguration,()=>e.getOption(117).preview),Pn(e.onDidChangeConfiguration,()=>e.getOption(117).previewMode),Pn(e.onDidChangeConfiguration,()=>e.getOption(62).mode),this._enabled);this.model.set(p,g)}})}));const u=d=>{var f;return d.isUndoing?Ta.Undo:d.isRedoing?Ta.Redo:!((f=this.model.get())===null||f===void 0)&&f.isAcceptingPartially?Ta.AcceptWord:Ta.Other};this._register(e.onDidChangeModelContent(d=>ln(f=>this.updateObservables(f,u(d))))),this._register(e.onDidChangeCursorPosition(d=>ln(f=>{var g;this.updateObservables(f,Ta.Other),(d.reason===3||d.source==="api")&&((g=this.model.get())===null||g===void 0||g.stop(f))}))),this._register(e.onDidType(()=>ln(d=>{var f;this.updateObservables(d,Ta.Other),this._enabled.get()&&((f=this.model.get())===null||f===void 0||f.trigger(d))}))),this._register(this._commandService.onDidExecuteCommand(d=>{new Set([yb.Tab.id,yb.DeleteLeft.id,yb.DeleteRight.id,j_e,"acceptSelectedSuggestion"]).has(d.commandId)&&e.hasTextFocus()&&this._enabled.get()&&ln(g=>{var p;(p=this.model.get())===null||p===void 0||p.trigger(g)})})),this._register(this.editor.onDidBlurEditorWidget(()=>{this._contextKeyService.getContextKeyValue("accessibleViewIsShown")||this._configurationService.getValue("editor.inlineSuggest.keepOnBlur")||e.getOption(62).keepOnBlur||pm.dropDownVisible||ln(d=>{var f;(f=this.model.get())===null||f===void 0||f.stop(d)})})),this._register(pi(d=>{var f;const g=(f=this.model.read(d))===null||f===void 0?void 0:f.state.read(d);g!=null&&g.suggestItem?g.ghostText.lineCount>=2&&this._suggestWidgetAdaptor.forceRenderingAbove():this._suggestWidgetAdaptor.stopForceRenderingAbove()})),this._register(st(()=>{this._suggestWidgetAdaptor.stopForceRenderingAbove()}));let h;this._register(TE({handleChange:(d,f)=>(d.didChange(this._playAudioCueSignal)&&(h=void 0),!0)},async d=>{this._playAudioCueSignal.read(d);const f=this.model.read(d),g=f==null?void 0:f.state.read(d);if(!f||!g||!g.inlineCompletion){h=void 0;return}if(g.inlineCompletion.semanticId!==h){h=g.inlineCompletion.semanticId;const p=f.textModel.getLineContent(g.ghostText.lineNumber);this._audioCueService.playAudioCue(Pt.inlineSuggestion).then(()=>{this.editor.getOption(8)&&this.provideScreenReaderUpdate(g.ghostText.renderForScreenReader(p))})}})),this._register(new zW(this.editor,this.model,this._instantiationService)),this._register(this._configurationService.onDidChangeConfiguration(d=>{d.affectsConfiguration("accessibility.verbosity.inlineCompletions")&&this.editor.updateOptions({inlineCompletionsAccessibilityVerbose:this._configurationService.getValue("accessibility.verbosity.inlineCompletions")})})),this.editor.updateOptions({inlineCompletionsAccessibilityVerbose:this._configurationService.getValue("accessibility.verbosity.inlineCompletions")})}playAudioCue(e){this._playAudioCueSignal.trigger(e)}provideScreenReaderUpdate(e){const t=this._contextKeyService.getContextKeyValue("accessibleViewIsShown"),i=this._keybindingService.lookupKeybinding("editor.action.accessibleView");let s;!t&&i&&this.editor.getOption(147)&&(s=v("showAccessibleViewHint","Inspect this in the accessible view ({0})",i.getAriaLabel())),ha(s?e+", "+s:e)}updateObservables(e,t){var i,s;const r=this.editor.getModel();this._textModelVersionId.set((i=r==null?void 0:r.getVersionId())!==null&&i!==void 0?i:-1,e,t),this._cursorPosition.set((s=this.editor.getPosition())!==null&&s!==void 0?s:new he(1,1),e)}shouldShowHoverAt(e){var t;const i=(t=this.model.get())===null||t===void 0?void 0:t.ghostText.get();return i?i.parts.some(s=>e.containsPosition(new he(i.lineNumber,s.column))):!1}shouldShowHoverAtViewZone(e){return this._ghostTextWidget.ownsViewZone(e)}};il.ID="editor.contrib.inlineCompletionsController";il=kV=Irt([Eg(1,at),Eg(2,ft),Eg(3,Ut),Eg(4,Dn),Eg(5,Ul),Eg(6,Ge),Eg(7,ME),Eg(8,Di)],il);class z2 extends qe{constructor(){super({id:z2.ID,label:v("action.inlineSuggest.showNext","Show Next Inline Suggestion"),alias:"Show Next Inline Suggestion",precondition:ke.and($.writable,zs.inlineSuggestionVisible),kbOpts:{weight:100,primary:606}})}async run(e,t){var i;const s=il.get(t);(i=s==null?void 0:s.model.get())===null||i===void 0||i.next()}}z2.ID=K_e;class U2 extends qe{constructor(){super({id:U2.ID,label:v("action.inlineSuggest.showPrevious","Show Previous Inline Suggestion"),alias:"Show Previous Inline Suggestion",precondition:ke.and($.writable,zs.inlineSuggestionVisible),kbOpts:{weight:100,primary:604}})}async run(e,t){var i;const s=il.get(t);(i=s==null?void 0:s.model.get())===null||i===void 0||i.previous()}}U2.ID=q_e;class Trt extends qe{constructor(){super({id:"editor.action.inlineSuggest.trigger",label:v("action.inlineSuggest.trigger","Trigger Inline Suggestion"),alias:"Trigger Inline Suggestion",precondition:$.writable})}async run(e,t){const i=il.get(t);await HKe(async s=>{var r;await((r=i==null?void 0:i.model.get())===null||r===void 0?void 0:r.triggerExplicitly(s)),i==null||i.playAudioCue(s)})}}class Nrt extends qe{constructor(){super({id:"editor.action.inlineSuggest.acceptNextWord",label:v("action.inlineSuggest.acceptNextWord","Accept Next Word Of Inline Suggestion"),alias:"Accept Next Word Of Inline Suggestion",precondition:ke.and($.writable,zs.inlineSuggestionVisible),kbOpts:{weight:101,primary:2065,kbExpr:ke.and($.writable,zs.inlineSuggestionVisible)},menuOpts:[{menuId:B.InlineSuggestionToolbar,title:v("acceptWord","Accept Word"),group:"primary",order:2}]})}async run(e,t){var i;const s=il.get(t);await((i=s==null?void 0:s.model.get())===null||i===void 0?void 0:i.acceptNextWord(s.editor))}}class Art extends qe{constructor(){super({id:"editor.action.inlineSuggest.acceptNextLine",label:v("action.inlineSuggest.acceptNextLine","Accept Next Line Of Inline Suggestion"),alias:"Accept Next Line Of Inline Suggestion",precondition:ke.and($.writable,zs.inlineSuggestionVisible),kbOpts:{weight:101},menuOpts:[{menuId:B.InlineSuggestionToolbar,title:v("acceptLine","Accept Line"),group:"secondary",order:2}]})}async run(e,t){var i;const s=il.get(t);await((i=s==null?void 0:s.model.get())===null||i===void 0?void 0:i.acceptNextLine(s.editor))}}class Prt extends qe{constructor(){super({id:j_e,label:v("action.inlineSuggest.accept","Accept Inline Suggestion"),alias:"Accept Inline Suggestion",precondition:zs.inlineSuggestionVisible,menuOpts:[{menuId:B.InlineSuggestionToolbar,title:v("accept","Accept"),group:"primary",order:1}],kbOpts:{primary:2,weight:200,kbExpr:ke.and(zs.inlineSuggestionVisible,$.tabMovesFocus.toNegated(),zs.inlineSuggestionHasIndentationLessThanTabSize,Et.Visible.toNegated(),$.hoverFocused.toNegated())}})}async run(e,t){var i;const s=il.get(t);s&&((i=s.model.get())===null||i===void 0||i.accept(s.editor),s.editor.focus())}}class j2 extends qe{constructor(){super({id:j2.ID,label:v("action.inlineSuggest.hide","Hide Inline Suggestion"),alias:"Hide Inline Suggestion",precondition:zs.inlineSuggestionVisible,kbOpts:{weight:100,primary:9}})}async run(e,t){const i=il.get(t);ln(s=>{var r;(r=i==null?void 0:i.model.get())===null||r===void 0||r.stop(s)})}}j2.ID="editor.action.inlineSuggest.hide";class q2 extends sl{constructor(){super({id:q2.ID,title:v("action.inlineSuggest.alwaysShowToolbar","Always Show Toolbar"),f1:!1,precondition:void 0,menu:[{id:B.InlineSuggestionToolbar,group:"secondary",order:10}],toggled:ke.equals("config.editor.inlineSuggest.showToolbar","always")})}async run(e,t){const i=e.get(Ut),r=i.getValue("editor.inlineSuggest.showToolbar")==="always"?"onHover":"always";i.updateValue("editor.inlineSuggest.showToolbar",r)}}q2.ID="editor.action.inlineSuggest.toggleAlwaysShowToolbar";var Rrt=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},qw=function(n,e){return function(t,i){e(t,i,n)}};class Mrt{constructor(e,t,i){this.owner=e,this.range=t,this.controller=i}isValidForHoverAnchor(e){return e.type===1&&this.range.startColumn<=e.range.startColumn&&this.range.endColumn>=e.range.endColumn}}let LV=class{constructor(e,t,i,s,r,o){this._editor=e,this._languageService=t,this._openerService=i,this.accessibilityService=s,this._instantiationService=r,this._telemetryService=o,this.hoverOrdinal=4}suggestHoverAnchor(e){const t=il.get(this._editor);if(!t)return null;const i=e.target;if(i.type===8){const s=i.detail;if(t.shouldShowHoverAtViewZone(s.viewZoneId))return new CN(1e3,this,M.fromPositions(this._editor.getModel().validatePosition(s.positionBefore||s.position)),e.event.posx,e.event.posy,!1)}return i.type===7&&t.shouldShowHoverAt(i.range)?new CN(1e3,this,i.range,e.event.posx,e.event.posy,!1):i.type===6&&i.detail.mightBeForeignElement&&t.shouldShowHoverAt(i.range)?new CN(1e3,this,i.range,e.event.posx,e.event.posy,!1):null}computeSync(e,t){if(this._editor.getOption(62).showToolbar!=="onHover")return[];const i=il.get(this._editor);return i&&i.shouldShowHoverAt(e.range)?[new Mrt(this,e.range,i)]:[]}renderHoverParts(e,t){const i=new xe,s=t[0];this._telemetryService.publicLog2("inlineCompletionHover.shown"),this.accessibilityService.isScreenReaderOptimized()&&!this._editor.getOption(8)&&this.renderScreenReaderText(e,s,i);const r=s.controller.model.get(),o=this._instantiationService.createInstance(pm,this._editor,!1,gP(null),r.selectedInlineCompletionIndex,r.inlineCompletionsCount,r.selectedInlineCompletion.map(a=>{var l;return(l=a==null?void 0:a.inlineCompletion.source.inlineCompletions.commands)!==null&&l!==void 0?l:[]}));return e.fragment.appendChild(o.getDomNode()),r.triggerExplicitly(),i.add(o),i}renderScreenReaderText(e,t,i){const s=Te,r=s("div.hover-row.markdown-hover"),o=Le(r,s("div.hover-contents",{"aria-live":"assertive"})),a=i.add(new Qf({editor:this._editor},this._languageService,this._openerService)),l=c=>{i.add(a.onDidRenderAsync(()=>{o.className="hover-contents code-hover-contents",e.onContentsChanged()}));const u=v("inlineSuggestionFollows","Suggestion:"),h=i.add(a.render(new xr().appendText(u).appendCodeblock("text",c)));o.replaceChildren(h.element)};i.add(pi(c=>{var u;const h=(u=t.controller.model.read(c))===null||u===void 0?void 0:u.ghostText.read(c);if(h){const d=this._editor.getModel().getLineContent(h.lineNumber);l(h.renderForScreenReader(d))}else mr(o)})),e.fragment.appendChild(r)}};LV=Rrt([qw(1,sn),qw(2,_a),qw(3,Dd),qw(4,at),qw(5,fa)],LV);ti(il.ID,il,3);Ae(Trt);Ae(z2);Ae(U2);Ae(Nrt);Ae(Art);Ae(Prt);Ae(j2);Zi(q2);Fv.register(LV);function jo(n,e){let t=0;for(let i=0;i<n.length;i++)n.charAt(i)===" "?t+=e:t++;return t}function yk(n,e,t){n=n<0?0:n;let i="";if(!t){const s=Math.floor(n/e);n=n%e;for(let r=0;r<s;r++)i+=" "}for(let s=0;s<n;s++)i+=" ";return i}var Ort=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},Frt=function(n,e){return function(t,i){e(t,i,n)}};function Fve(n,e,t,i,s){if(n.getLineCount()===1&&n.getLineMaxColumn(1)===1)return[];const r=e.getLanguageConfiguration(n.getLanguageId()).indentationRules;if(!r)return[];for(i=Math.min(i,n.getLineCount());t<=i&&r.unIndentedLinePattern;){const m=n.getLineContent(t);if(!r.unIndentedLinePattern.test(m))break;t++}if(t>i-1)return[];const{tabSize:o,indentSize:a,insertSpaces:l}=n.getOptions(),c=(m,_)=>(_=_||1,ml.shiftIndent(m,m.length+_,o,a,l)),u=(m,_)=>(_=_||1,ml.unshiftIndent(m,m.length+_,o,a,l)),h=[];let d;const f=n.getLineContent(t);let g=f;if(s!=null){d=s;const m=Ni(f);g=d+f.substring(m.length),r.decreaseIndentPattern&&r.decreaseIndentPattern.test(g)&&(d=u(d),g=d+f.substring(m.length)),f!==g&&h.push(un.replaceMove(new Ze(t,1,t,m.length+1),$A(d,a,l)))}else d=Ni(f);let p=d;r.increaseIndentPattern&&r.increaseIndentPattern.test(g)?(p=c(p),d=c(d)):r.indentNextLinePattern&&r.indentNextLinePattern.test(g)&&(p=c(p)),t++;for(let m=t;m<=i;m++){const _=n.getLineContent(m),b=Ni(_),y=p+_.substring(b.length);r.decreaseIndentPattern&&r.decreaseIndentPattern.test(y)&&(p=u(p),d=u(d)),b!==p&&h.push(un.replaceMove(new Ze(m,1,m,b.length+1),$A(p,a,l))),!(r.unIndentedLinePattern&&r.unIndentedLinePattern.test(_))&&(r.increaseIndentPattern&&r.increaseIndentPattern.test(y)?(d=c(d),p=d):r.indentNextLinePattern&&r.indentNextLinePattern.test(y)?p=c(p):p=d)}return h}class K2 extends qe{constructor(){super({id:K2.ID,label:v("indentationToSpaces","Convert Indentation to Spaces"),alias:"Convert Indentation to Spaces",precondition:$.writable})}run(e,t){const i=t.getModel();if(!i)return;const s=i.getOptions(),r=t.getSelection();if(!r)return;const o=new Hrt(r,s.tabSize);t.pushUndoStop(),t.executeCommands(this.id,[o]),t.pushUndoStop(),i.updateOptions({insertSpaces:!0})}}K2.ID="editor.action.indentationToSpaces";class G2 extends qe{constructor(){super({id:G2.ID,label:v("indentationToTabs","Convert Indentation to Tabs"),alias:"Convert Indentation to Tabs",precondition:$.writable})}run(e,t){const i=t.getModel();if(!i)return;const s=i.getOptions(),r=t.getSelection();if(!r)return;const o=new $rt(r,s.tabSize);t.pushUndoStop(),t.executeCommands(this.id,[o]),t.pushUndoStop(),i.updateOptions({insertSpaces:!1})}}G2.ID="editor.action.indentationToTabs";class yG extends qe{constructor(e,t,i){super(i),this.insertSpaces=e,this.displaySizeOnly=t}run(e,t){const i=e.get(Uu),s=e.get(fn),r=t.getModel();if(!r)return;const o=s.getCreationOptions(r.getLanguageId(),r.uri,r.isForSimpleWidget),a=r.getOptions(),l=[1,2,3,4,5,6,7,8].map(u=>({id:u.toString(),label:u.toString(),description:u===o.tabSize&&u===a.tabSize?v("configuredTabSize","Configured Tab Size"):u===o.tabSize?v("defaultTabSize","Default Tab Size"):u===a.tabSize?v("currentTabSize","Current Tab Size"):void 0})),c=Math.min(r.getOptions().tabSize-1,7);setTimeout(()=>{i.pick(l,{placeHolder:v({key:"selectTabWidth",comment:["Tab corresponds to the tab key"]},"Select Tab Size for Current File"),activeItem:l[c]}).then(u=>{if(u&&r&&!r.isDisposed()){const h=parseInt(u.label,10);this.displaySizeOnly?r.updateOptions({tabSize:h}):r.updateOptions({tabSize:h,indentSize:h,insertSpaces:this.insertSpaces})}})},50)}}class Y2 extends yG{constructor(){super(!1,!1,{id:Y2.ID,label:v("indentUsingTabs","Indent Using Tabs"),alias:"Indent Using Tabs",precondition:void 0})}}Y2.ID="editor.action.indentUsingTabs";class Z2 extends yG{constructor(){super(!0,!1,{id:Z2.ID,label:v("indentUsingSpaces","Indent Using Spaces"),alias:"Indent Using Spaces",precondition:void 0})}}Z2.ID="editor.action.indentUsingSpaces";class X2 extends yG{constructor(){super(!0,!0,{id:X2.ID,label:v("changeTabDisplaySize","Change Tab Display Size"),alias:"Change Tab Display Size",precondition:void 0})}}X2.ID="editor.action.changeTabDisplaySize";class Q2 extends qe{constructor(){super({id:Q2.ID,label:v("detectIndentation","Detect Indentation from Content"),alias:"Detect Indentation from Content",precondition:void 0})}run(e,t){const i=e.get(fn),s=t.getModel();if(!s)return;const r=i.getCreationOptions(s.getLanguageId(),s.uri,s.isForSimpleWidget);s.detectIndentation(r.insertSpaces,r.tabSize)}}Q2.ID="editor.action.detectIndentation";class Brt extends qe{constructor(){super({id:"editor.action.reindentlines",label:v("editor.reindentlines","Reindent Lines"),alias:"Reindent Lines",precondition:$.writable})}run(e,t){const i=e.get(Bi),s=t.getModel();if(!s)return;const r=Fve(s,i,1,s.getLineCount());r.length>0&&(t.pushUndoStop(),t.executeEdits(this.id,r),t.pushUndoStop())}}class Wrt extends qe{constructor(){super({id:"editor.action.reindentselectedlines",label:v("editor.reindentselectedlines","Reindent Selected Lines"),alias:"Reindent Selected Lines",precondition:$.writable})}run(e,t){const i=e.get(Bi),s=t.getModel();if(!s)return;const r=t.getSelections();if(r===null)return;const o=[];for(const a of r){let l=a.startLineNumber,c=a.endLineNumber;if(l!==c&&a.endColumn===1&&c--,l===1){if(l===c)continue}else l--;const u=Fve(s,i,l,c);o.push(...u)}o.length>0&&(t.pushUndoStop(),t.executeEdits(this.id,o),t.pushUndoStop())}}class Vrt{constructor(e,t){this._initialSelection=t,this._edits=[],this._selectionId=null;for(const i of e)i.range&&typeof i.text=="string"&&this._edits.push(i)}getEditOperations(e,t){for(const s of this._edits)t.addEditOperation(M.lift(s.range),s.text);let i=!1;Array.isArray(this._edits)&&this._edits.length===1&&this._initialSelection.isEmpty()&&(this._edits[0].range.startColumn===this._initialSelection.endColumn&&this._edits[0].range.startLineNumber===this._initialSelection.endLineNumber?(i=!0,this._selectionId=t.trackSelection(this._initialSelection,!0)):this._edits[0].range.endColumn===this._initialSelection.startColumn&&this._edits[0].range.endLineNumber===this._initialSelection.startLineNumber&&(i=!0,this._selectionId=t.trackSelection(this._initialSelection,!1))),i||(this._selectionId=t.trackSelection(this._initialSelection))}computeCursorState(e,t){return t.getTrackedSelection(this._selectionId)}}let bx=class{constructor(e,t){this.editor=e,this._languageConfigurationService=t,this.callOnDispose=new xe,this.callOnModel=new xe,this.callOnDispose.add(e.onDidChangeConfiguration(()=>this.update())),this.callOnDispose.add(e.onDidChangeModel(()=>this.update())),this.callOnDispose.add(e.onDidChangeModelLanguage(()=>this.update()))}update(){this.callOnModel.clear(),!(this.editor.getOption(12)<4||this.editor.getOption(55))&&this.editor.hasModel()&&this.callOnModel.add(this.editor.onDidPaste(({range:e})=>{this.trigger(e)}))}trigger(e){const t=this.editor.getSelections();if(t===null||t.length>1)return;const i=this.editor.getModel();if(!i||!i.tokenization.isCheapToTokenize(e.getStartPosition().lineNumber))return;const s=this.editor.getOption(12),{tabSize:r,indentSize:o,insertSpaces:a}=i.getOptions(),l=[],c={shiftIndent:f=>ml.shiftIndent(f,f.length+1,r,o,a),unshiftIndent:f=>ml.unshiftIndent(f,f.length+1,r,o,a)};let u=e.startLineNumber;for(;u<=e.endLineNumber;){if(this.shouldIgnoreLine(i,u)){u++;continue}break}if(u>e.endLineNumber)return;let h=i.getLineContent(u);if(!/\S/.test(h.substring(0,e.startColumn-1))){const f=QS(s,i,i.getLanguageId(),u,c,this._languageConfigurationService);if(f!==null){const g=Ni(h),p=jo(f,r),m=jo(g,r);if(p!==m){const _=yk(p,r,a);l.push({range:new M(u,1,u,g.length+1),text:_}),h=_+h.substr(g.length)}else{const _=rpe(i,u,this._languageConfigurationService);if(_===0||_===8)return}}}const d=u;for(;u<e.endLineNumber;){if(!/\S/.test(i.getLineContent(u+1))){u++;continue}break}if(u!==e.endLineNumber){const g=QS(s,{tokenization:{getLineTokens:p=>i.tokenization.getLineTokens(p),getLanguageId:()=>i.getLanguageId(),getLanguageIdAtPosition:(p,m)=>i.getLanguageIdAtPosition(p,m)},getLineContent:p=>p===d?h:i.getLineContent(p)},i.getLanguageId(),u+1,c,this._languageConfigurationService);if(g!==null){const p=jo(g,r),m=jo(Ni(i.getLineContent(u+1)),r);if(p!==m){const _=p-m;for(let b=u+1;b<=e.endLineNumber;b++){const y=i.getLineContent(b),w=Ni(y),E=jo(w,r)+_,L=yk(E,r,a);L!==w&&l.push({range:new M(b,1,b,w.length+1),text:L})}}}}if(l.length>0){this.editor.pushUndoStop();const f=new Vrt(l,this.editor.getSelection());this.editor.executeCommand("autoIndentOnPaste",f),this.editor.pushUndoStop()}}shouldIgnoreLine(e,t){e.tokenization.forceTokenization(t);const i=e.getLineFirstNonWhitespaceColumn(t);if(i===0)return!0;const s=e.tokenization.getLineTokens(t);if(s.getCount()>0){const r=s.findTokenIndexAtOffset(i);if(r>=0&&s.getStandardTokenType(r)===1)return!0}return!1}dispose(){this.callOnDispose.dispose(),this.callOnModel.dispose()}};bx.ID="editor.contrib.autoIndentOnPaste";bx=Ort([Frt(1,Bi)],bx);function Bve(n,e,t,i){if(n.getLineCount()===1&&n.getLineMaxColumn(1)===1)return;let s="";for(let o=0;o<t;o++)s+=" ";const r=new RegExp(s,"gi");for(let o=1,a=n.getLineCount();o<=a;o++){let l=n.getLineFirstNonWhitespaceColumn(o);if(l===0&&(l=n.getLineMaxColumn(o)),l===1)continue;const c=new M(o,1,o,l),u=n.getValueInRange(c),h=i?u.replace(/\t/ig,s):u.replace(r," ");e.addEditOperation(c,h)}}class Hrt{constructor(e,t){this.selection=e,this.tabSize=t,this.selectionId=null}getEditOperations(e,t){this.selectionId=t.trackSelection(this.selection),Bve(e,t,this.tabSize,!0)}computeCursorState(e,t){return t.getTrackedSelection(this.selectionId)}}class $rt{constructor(e,t){this.selection=e,this.tabSize=t,this.selectionId=null}getEditOperations(e,t){this.selectionId=t.trackSelection(this.selection),Bve(e,t,this.tabSize,!1)}computeCursorState(e,t){return t.getTrackedSelection(this.selectionId)}}ti(bx.ID,bx,2);Ae(K2);Ae(G2);Ae(Y2);Ae(Z2);Ae(X2);Ae(Q2);Ae(Brt);Ae(Wrt);class Wve{constructor(e,t){this.range=e,this.direction=t}}class CG{constructor(e,t,i){this.hint=e,this.anchor=t,this.provider=i,this._isResolved=!1}with(e){const t=new CG(this.hint,e.anchor,this.provider);return t._isResolved=this._isResolved,t._currentResolve=this._currentResolve,t}async resolve(e){if(typeof this.provider.resolveInlayHint=="function"){if(this._currentResolve)return await this._currentResolve,e.isCancellationRequested?void 0:this.resolve(e);this._isResolved||(this._currentResolve=this._doResolve(e).finally(()=>this._currentResolve=void 0)),await this._currentResolve}}async _doResolve(e){var t,i;try{const s=await Promise.resolve(this.provider.resolveInlayHint(this.hint,e));this.hint.tooltip=(t=s==null?void 0:s.tooltip)!==null&&t!==void 0?t:this.hint.tooltip,this.hint.label=(i=s==null?void 0:s.label)!==null&&i!==void 0?i:this.hint.label,this._isResolved=!0}catch(s){Jn(s),this._isResolved=!1}}}class yx{static async create(e,t,i,s){const r=[],o=e.ordered(t).reverse().map(a=>i.map(async l=>{try{const c=await a.provideInlayHints(t,l,s);c!=null&&c.hints.length&&r.push([c,a])}catch(c){Jn(c)}}));if(await Promise.all(o.flat()),s.isCancellationRequested||t.isDisposed())throw new Em;return new yx(i,r,t)}constructor(e,t,i){this._disposables=new xe,this.ranges=e,this.provider=new Set;const s=[];for(const[r,o]of t){this._disposables.add(r),this.provider.add(o);for(const a of r.hints){const l=i.validatePosition(a.position);let c="before";const u=yx._getRangeAtPosition(i,l);let h;u.getStartPosition().isBefore(l)?(h=M.fromPositions(u.getStartPosition(),l),c="after"):(h=M.fromPositions(l,u.getEndPosition()),c="before"),s.push(new CG(a,new Wve(h,c),o))}}this.items=s.sort((r,o)=>he.compare(r.hint.position,o.hint.position))}dispose(){this._disposables.dispose()}static _getRangeAtPosition(e,t){const i=t.lineNumber,s=e.getWordAtPosition(t);if(s)return new M(i,s.startColumn,i,s.endColumn);e.tokenization.tokenizeIfCheap(i);const r=e.tokenization.getLineTokens(i),o=t.column-1,a=r.findTokenIndexAtOffset(o);let l=r.getStartOffset(a),c=r.getEndOffset(a);return c-l===1&&(l===o&&a>1?(l=r.getStartOffset(a-1),c=r.getEndOffset(a-1)):c===o&&a<r.getCount()-1&&(l=r.getStartOffset(a+1),c=r.getEndOffset(a+1))),new M(i,l+1,i,c+1)}}function zrt(n){return it.from({scheme:wt.command,path:n.id,query:n.arguments&&encodeURIComponent(JSON.stringify(n.arguments))}).toString()}async function Urt(n,e,t,i){var s;const r=n.get(Bo),o=n.get(zl),a=n.get(Dn),l=n.get(at),c=n.get(is);if(await i.item.resolve(Ft.None),!i.part.location)return;const u=i.part.location,h=[],d=new Set(tr.getMenuItems(B.EditorContext).map(g=>M0(g)?g.command.id:T2()));for(const g of Vr.all())d.has(g.desc.id)&&h.push(new ho(g.desc.id,Lc.label(g.desc,{renderShortTitle:!0}),void 0,!0,async()=>{const p=await r.createModelReference(u.uri);try{const m=new My(p.object.textEditorModel,M.getStartPosition(u.range)),_=i.item.anchor.range;await l.invokeFunction(g.runEditorCommand.bind(g),e,m,_)}finally{p.dispose()}}));if(i.part.command){const{command:g}=i.part;h.push(new js),h.push(new ho(g.id,g.title,void 0,!0,async()=>{var p;try{await a.executeCommand(g.id,...(p=g.arguments)!==null&&p!==void 0?p:[])}catch(m){c.notify({severity:ZO.Error,source:i.item.provider.displayName,message:m})}}))}const f=e.getOption(126);o.showContextMenu({domForShadowRoot:f&&(s=e.getDomNode())!==null&&s!==void 0?s:void 0,getAnchor:()=>{const g=ys(t);return{x:g.left,y:g.top+g.height+8}},getActions:()=>h,onHide:()=>{e.focus()},autoSelectFirstItem:!0})}async function Vve(n,e,t,i){const r=await n.get(Bo).createModelReference(i.uri);await t.invokeWithinContext(async o=>{const a=e.hasSideBySideModifier,l=o.get(ft),c=Oo.inPeekEditor.getValue(l),u=!a&&t.getOption(87)&&!c;return new KE({openToSide:a,openInPeek:u,muteMessage:!0},{title:{value:"",original:""},id:"",precondition:void 0}).run(o,new My(r.object.textEditorModel,M.getStartPosition(i.range)),M.lift(i.range))}),r.dispose()}var jrt=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},h0=function(n,e){return function(t,i){e(t,i,n)}},LN;class aR{constructor(){this._entries=new Rm(50)}get(e){const t=aR._key(e);return this._entries.get(t)}set(e,t){const i=aR._key(e);this._entries.set(i,t)}static _key(e){return`${e.uri.toString()}/${e.getVersionId()}`}}const Hve=Bt("IInlayHintsCache");jt(Hve,aR,1);class xV{constructor(e,t){this.item=e,this.index=t}get part(){const e=this.item.hint.label;return typeof e=="string"?{label:e}:e[this.index]}}class qrt{constructor(e,t){this.part=e,this.hasTriggerModifier=t}}let J_=LN=class{static get(e){var t;return(t=e.getContribution(LN.ID))!==null&&t!==void 0?t:void 0}constructor(e,t,i,s,r,o,a){this._editor=e,this._languageFeaturesService=t,this._inlayHintsCache=s,this._commandService=r,this._notificationService=o,this._instaService=a,this._disposables=new xe,this._sessionDisposables=new xe,this._decorationsMetadata=new Map,this._ruleFactory=new vE(this._editor),this._activeRenderMode=0,this._debounceInfo=i.for(t.inlayHintsProvider,"InlayHint",{min:25}),this._disposables.add(t.inlayHintsProvider.onDidChange(()=>this._update())),this._disposables.add(e.onDidChangeModel(()=>this._update())),this._disposables.add(e.onDidChangeModelLanguage(()=>this._update())),this._disposables.add(e.onDidChangeConfiguration(l=>{l.hasChanged(139)&&this._update()})),this._update()}dispose(){this._sessionDisposables.dispose(),this._removeAllDecorations(),this._disposables.dispose()}_update(){this._sessionDisposables.clear(),this._removeAllDecorations();const e=this._editor.getOption(139);if(e.enabled==="off")return;const t=this._editor.getModel();if(!t||!this._languageFeaturesService.inlayHintsProvider.has(t))return;const i=this._inlayHintsCache.get(t);i&&this._updateHintsDecorators([t.getFullModelRange()],i),this._sessionDisposables.add(st(()=>{t.isDisposed()||this._cacheHintsForFastRestore(t)}));let s;const r=new Set,o=new Ei(async()=>{const a=Date.now();s==null||s.dispose(!0),s=new es;const l=t.onWillDispose(()=>s==null?void 0:s.cancel());try{const c=s.token,u=await yx.create(this._languageFeaturesService.inlayHintsProvider,t,this._getHintsRanges(),c);if(o.delay=this._debounceInfo.update(t,Date.now()-a),c.isCancellationRequested){u.dispose();return}for(const h of u.provider)typeof h.onDidChangeInlayHints=="function"&&!r.has(h)&&(r.add(h),this._sessionDisposables.add(h.onDidChangeInlayHints(()=>{o.isScheduled()||o.schedule()})));this._sessionDisposables.add(u),this._updateHintsDecorators(u.ranges,u.items),this._cacheHintsForFastRestore(t)}catch(c){vt(c)}finally{s.dispose(),l.dispose()}},this._debounceInfo.get(t));if(this._sessionDisposables.add(o),this._sessionDisposables.add(st(()=>s==null?void 0:s.dispose(!0))),o.schedule(0),this._sessionDisposables.add(this._editor.onDidScrollChange(a=>{(a.scrollTopChanged||!o.isScheduled())&&o.schedule()})),this._sessionDisposables.add(this._editor.onDidChangeModelContent(a=>{const l=Math.max(o.delay,1250);o.schedule(l)})),e.enabled==="on")this._activeRenderMode=0;else{let a,l;e.enabled==="onUnlessPressed"?(a=0,l=1):(a=1,l=0),this._activeRenderMode=a,this._sessionDisposables.add(Cf.getInstance().event(c=>{if(!this._editor.hasModel())return;const u=c.altKey&&c.ctrlKey&&!(c.shiftKey||c.metaKey)?l:a;if(u!==this._activeRenderMode){this._activeRenderMode=u;const h=this._editor.getModel(),d=this._copyInlayHintsWithCurrentAnchor(h);this._updateHintsDecorators([h.getFullModelRange()],d),o.schedule(0)}}))}this._sessionDisposables.add(this._installDblClickGesture(()=>o.schedule(0))),this._sessionDisposables.add(this._installLinkGesture()),this._sessionDisposables.add(this._installContextMenu())}_installLinkGesture(){const e=new xe,t=e.add(new f2(this._editor)),i=new xe;return e.add(i),e.add(t.onMouseMoveOrRelevantKeyDown(s=>{const[r]=s,o=this._getInlayHintLabelPart(r),a=this._editor.getModel();if(!o||!a){i.clear();return}const l=new es;i.add(st(()=>l.dispose(!0))),o.item.resolve(l.token),this._activeInlayHintPart=o.part.command||o.part.location?new qrt(o,r.hasTriggerModifier):void 0;const c=a.validatePosition(o.item.hint.position).lineNumber,u=new M(c,1,c,a.getLineMaxColumn(c)),h=this._getInlineHintsForRange(u);this._updateHintsDecorators([u],h),i.add(st(()=>{this._activeInlayHintPart=void 0,this._updateHintsDecorators([u],h)}))})),e.add(t.onCancel(()=>i.clear())),e.add(t.onExecute(async s=>{const r=this._getInlayHintLabelPart(s);if(r){const o=r.part;o.location?this._instaService.invokeFunction(Vve,s,this._editor,o.location):S9.is(o.command)&&await this._invokeCommand(o.command,r.item)}})),e}_getInlineHintsForRange(e){const t=new Set;for(const i of this._decorationsMetadata.values())e.containsRange(i.item.anchor.range)&&t.add(i.item);return Array.from(t)}_installDblClickGesture(e){return this._editor.onMouseUp(async t=>{if(t.event.detail!==2)return;const i=this._getInlayHintLabelPart(t);if(i&&(t.event.preventDefault(),await i.item.resolve(Ft.None),Ir(i.item.hint.textEdits))){const s=i.item.hint.textEdits.map(r=>un.replace(M.lift(r.range),r.text));this._editor.executeEdits("inlayHint.default",s),e()}})}_installContextMenu(){return this._editor.onContextMenu(async e=>{if(!(e.event.target instanceof HTMLElement))return;const t=this._getInlayHintLabelPart(e);t&&await this._instaService.invokeFunction(Urt,this._editor,e.event.target,t)})}_getInlayHintLabelPart(e){var t;if(e.target.type!==6)return;const i=(t=e.target.detail.injectedText)===null||t===void 0?void 0:t.options;if(i instanceof rm&&(i==null?void 0:i.attachedData)instanceof xV)return i.attachedData}async _invokeCommand(e,t){var i;try{await this._commandService.executeCommand(e.id,...(i=e.arguments)!==null&&i!==void 0?i:[])}catch(s){this._notificationService.notify({severity:ZO.Error,source:t.provider.displayName,message:s})}}_cacheHintsForFastRestore(e){const t=this._copyInlayHintsWithCurrentAnchor(e);this._inlayHintsCache.set(e,t)}_copyInlayHintsWithCurrentAnchor(e){const t=new Map;for(const[i,s]of this._decorationsMetadata){if(t.has(s.item))continue;const r=e.getDecorationRange(i);if(r){const o=new Wve(r,s.item.anchor.direction),a=s.item.with({anchor:o});t.set(s.item,a)}}return Array.from(t.values())}_getHintsRanges(){const t=this._editor.getModel(),i=this._editor.getVisibleRangesPlusViewportAboveBelow(),s=[];for(const r of i.sort(M.compareRangesUsingStarts)){const o=t.validateRange(new M(r.startLineNumber-30,r.startColumn,r.endLineNumber+30,r.endColumn));s.length===0||!M.areIntersectingOrTouching(s[s.length-1],o)?s.push(o):s[s.length-1]=M.plusRange(s[s.length-1],o)}return s}_updateHintsDecorators(e,t){var i,s;const r=[],o=(p,m,_,b,y)=>{const w={content:_,inlineClassNameAffectsLetterSpacing:!0,inlineClassName:m.className,cursorStops:b,attachedData:y};r.push({item:p,classNameRef:m,decoration:{range:p.anchor.range,options:{description:"InlayHint",showIfCollapsed:p.anchor.range.isEmpty(),collapseOnReplaceEdit:!p.anchor.range.isEmpty(),stickiness:0,[p.anchor.direction]:this._activeRenderMode===0?w:void 0}}})},a=(p,m)=>{const _=this._ruleFactory.createClassNameRef({width:`${l/3|0}px`,display:"inline-block"});o(p,_," ",m?_u.Right:_u.None)},{fontSize:l,fontFamily:c,padding:u,isUniform:h}=this._getLayoutInfo(),d="--code-editorInlayHintsFontFamily";this._editor.getContainerDomNode().style.setProperty(d,c);for(const p of t){p.hint.paddingLeft&&a(p,!1);const m=typeof p.hint.label=="string"?[{label:p.hint.label}]:p.hint.label;for(let _=0;_<m.length;_++){const b=m[_],y=_===0,w=_===m.length-1,S={fontSize:`${l}px`,fontFamily:`var(${d}), ${na.fontFamily}`,verticalAlign:h?"baseline":"middle",unicodeBidi:"isolate"};Ir(p.hint.textEdits)&&(S.cursor="default"),this._fillInColors(S,p.hint),(b.command||b.location)&&((i=this._activeInlayHintPart)===null||i===void 0?void 0:i.part.item)===p&&this._activeInlayHintPart.part.index===_&&(S.textDecoration="underline",this._activeInlayHintPart.hasTriggerModifier&&(S.color=Sn(rHe),S.cursor="pointer")),u&&(y&&w?(S.padding=`1px ${Math.max(1,l/4)|0}px`,S.borderRadius=`${l/4|0}px`):y?(S.padding=`1px 0 1px ${Math.max(1,l/4)|0}px`,S.borderRadius=`${l/4|0}px 0 0 ${l/4|0}px`):w?(S.padding=`1px ${Math.max(1,l/4)|0}px 1px 0`,S.borderRadius=`0 ${l/4|0}px ${l/4|0}px 0`):S.padding="1px 0 1px 0"),o(p,this._ruleFactory.createClassNameRef(S),Krt(b.label),w&&!p.hint.paddingRight?_u.Right:_u.None,new xV(p,_))}if(p.hint.paddingRight&&a(p,!0),r.length>LN._MAX_DECORATORS)break}const f=[];for(const p of e)for(const{id:m}of(s=this._editor.getDecorationsInRange(p))!==null&&s!==void 0?s:[]){const _=this._decorationsMetadata.get(m);_&&(f.push(m),_.classNameRef.dispose(),this._decorationsMetadata.delete(m))}const g=Au.capture(this._editor);this._editor.changeDecorations(p=>{const m=p.deltaDecorations(f,r.map(_=>_.decoration));for(let _=0;_<m.length;_++){const b=r[_];this._decorationsMetadata.set(m[_],b)}}),g.restore(this._editor)}_fillInColors(e,t){t.kind===tP.Parameter?(e.backgroundColor=Sn(cHe),e.color=Sn(lHe)):t.kind===tP.Type?(e.backgroundColor=Sn(aHe),e.color=Sn(oHe)):(e.backgroundColor=Sn(kf),e.color=Sn(Sf))}_getLayoutInfo(){const e=this._editor.getOption(139),t=e.padding,i=this._editor.getOption(52),s=this._editor.getOption(49);let r=e.fontSize;(!r||r<5||r>i)&&(r=i);const o=e.fontFamily||s;return{fontSize:r,fontFamily:o,padding:t,isUniform:!t&&o===s&&r===i}}_removeAllDecorations(){this._editor.removeDecorations(Array.from(this._decorationsMetadata.keys()));for(const e of this._decorationsMetadata.values())e.classNameRef.dispose();this._decorationsMetadata.clear()}};J_.ID="editor.contrib.InlayHints";J_._MAX_DECORATORS=1500;J_=LN=jrt([h0(1,Ge),h0(2,Ul),h0(3,Hve),h0(4,Dn),h0(5,is),h0(6,at)],J_);function Krt(n){const e=" ";return n.replace(/[ \t]/g,e)}Yt.registerCommand("_executeInlayHintProvider",async(n,...e)=>{const[t,i]=e;Si(it.isUri(t)),Si(M.isIRange(i));const{inlayHintsProvider:s}=n.get(Ge),r=await n.get(Bo).createModelReference(t);try{const o=await yx.create(s,r.object.textEditorModel,[M.lift(i)],Ft.None),a=o.items.map(l=>l.hint);return setTimeout(()=>o.dispose(),0),a}finally{r.dispose()}});var Grt=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},Kw=function(n,e){return function(t,i){e(t,i,n)}};class Une extends CN{constructor(e,t,i,s){super(10,t,e.item.anchor.range,i,s,!0),this.part=e}}let EV=class extends KP{constructor(e,t,i,s,r,o){super(e,t,i,s,o),this._resolverService=r,this.hoverOrdinal=6}suggestHoverAnchor(e){var t;if(!J_.get(this._editor)||e.target.type!==6)return null;const s=(t=e.target.detail.injectedText)===null||t===void 0?void 0:t.options;return s instanceof rm&&s.attachedData instanceof xV?new Une(s.attachedData,this,e.event.posx,e.event.posy):null}computeSync(){return[]}computeAsync(e,t,i){return e instanceof Une?new rs(async s=>{const{part:r}=e;if(await r.item.resolve(i),i.isCancellationRequested)return;let o;typeof r.item.hint.tooltip=="string"?o=new xr().appendText(r.item.hint.tooltip):r.item.hint.tooltip&&(o=r.item.hint.tooltip),o&&s.emitOne(new uu(this,e.range,[o],!1,0)),Ir(r.item.hint.textEdits)&&s.emitOne(new uu(this,e.range,[new xr().appendText(v("hint.dbl","Double-click to insert"))],!1,10001));let a;if(typeof r.part.tooltip=="string"?a=new xr().appendText(r.part.tooltip):r.part.tooltip&&(a=r.part.tooltip),a&&s.emitOne(new uu(this,e.range,[a],!1,1)),r.part.location||r.part.command){let c;const h=this._editor.getOption(77)==="altKey"?Gt?v("links.navigate.kb.meta.mac","cmd + click"):v("links.navigate.kb.meta","ctrl + click"):Gt?v("links.navigate.kb.alt.mac","option + click"):v("links.navigate.kb.alt","alt + click");r.part.location&&r.part.command?c=new xr().appendText(v("hint.defAndCommand","Go to Definition ({0}), right click for more",h)):r.part.location?c=new xr().appendText(v("hint.def","Go to Definition ({0})",h)):r.part.command&&(c=new xr(`[${v("hint.cmd","Execute Command")}](${zrt(r.part.command)} "${r.part.command.title}") (${h})`,{isTrusted:!0})),c&&s.emitOne(new uu(this,e.range,[c],!1,1e4))}const l=await this._resolveInlayHintLabelPartHover(r,i);for await(const c of l)s.emitOne(c)}):rs.EMPTY}async _resolveInlayHintLabelPartHover(e,t){if(!e.part.location)return rs.EMPTY;const{uri:i,range:s}=e.part.location,r=await this._resolverService.createModelReference(i);try{const o=r.object.textEditorModel;return this._languageFeaturesService.hoverProvider.has(o)?JK(this._languageFeaturesService.hoverProvider,o,new he(s.startLineNumber,s.startColumn),t).filter(a=>!Ty(a.hover.contents)).map(a=>new uu(this,e.item.anchor.range,a.hover.contents,!1,2+a.ordinal)):rs.EMPTY}finally{r.dispose()}}};EV=Grt([Kw(1,sn),Kw(2,_a),Kw(3,Ut),Kw(4,Bo),Kw(5,Ge)],EV);ti(J_.ID,J_,1);Fv.register(EV);class Yrt{constructor(e,t,i){this._editRange=e,this._originalSelection=t,this._text=i}getEditOperations(e,t){t.addTrackedEditOperation(this._editRange,this._text)}computeCursorState(e,t){const s=t.getInverseEditOperations()[0].range;return this._originalSelection.isEmpty()?new Ze(s.endLineNumber,Math.min(this._originalSelection.positionColumn,s.endColumn),s.endLineNumber,Math.min(this._originalSelection.positionColumn,s.endColumn)):new Ze(s.endLineNumber,s.endColumn-this._text.length,s.endLineNumber,s.endColumn)}}var Zrt=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},Xrt=function(n,e){return function(t,i){e(t,i,n)}},xN;let _m=xN=class{static get(e){return e.getContribution(xN.ID)}constructor(e,t){this.editor=e,this.editorWorkerService=t,this.decorations=this.editor.createDecorationsCollection()}dispose(){}run(e,t){var i;(i=this.currentRequest)===null||i===void 0||i.cancel();const s=this.editor.getSelection(),r=this.editor.getModel();if(!r||!s)return;let o=s;if(o.startLineNumber!==o.endLineNumber)return;const a=new C1e(this.editor,5),l=r.uri;return this.editorWorkerService.canNavigateValueSet(l)?(this.currentRequest=Ns(c=>this.editorWorkerService.navigateValueSet(l,o,t)),this.currentRequest.then(c=>{var u;if(!c||!c.range||!c.value||!a.validate(this.editor))return;const h=M.lift(c.range);let d=c.range;const f=c.value.length-(o.endColumn-o.startColumn);d={startLineNumber:d.startLineNumber,startColumn:d.startColumn,endLineNumber:d.endLineNumber,endColumn:d.startColumn+c.value.length},f>1&&(o=new Ze(o.startLineNumber,o.startColumn,o.endLineNumber,o.endColumn+f-1));const g=new Yrt(h,o,c.value);this.editor.pushUndoStop(),this.editor.executeCommand(e,g),this.editor.pushUndoStop(),this.decorations.set([{range:d,options:xN.DECORATION}]),(u=this.decorationRemover)===null||u===void 0||u.cancel(),this.decorationRemover=Kp(350),this.decorationRemover.then(()=>this.decorations.clear()).catch(vt)}).catch(vt)):Promise.resolve(void 0)}};_m.ID="editor.contrib.inPlaceReplaceController";_m.DECORATION=yt.register({description:"in-place-replace",className:"valueSetReplacement"});_m=xN=Zrt([Xrt(1,Pc)],_m);class Qrt extends qe{constructor(){super({id:"editor.action.inPlaceReplace.up",label:v("InPlaceReplaceAction.previous.label","Replace with Previous Value"),alias:"Replace with Previous Value",precondition:$.writable,kbOpts:{kbExpr:$.editorTextFocus,primary:3159,weight:100}})}run(e,t){const i=_m.get(t);return i?i.run(this.id,!1):Promise.resolve(void 0)}}class Jrt extends qe{constructor(){super({id:"editor.action.inPlaceReplace.down",label:v("InPlaceReplaceAction.next.label","Replace with Next Value"),alias:"Replace with Next Value",precondition:$.writable,kbOpts:{kbExpr:$.editorTextFocus,primary:3161,weight:100}})}run(e,t){const i=_m.get(t);return i?i.run(this.id,!0):Promise.resolve(void 0)}}ti(_m.ID,_m,4);Ae(Qrt);Ae(Jrt);class eot extends qe{constructor(){super({id:"expandLineSelection",label:v("expandLineSelection","Expand Line Selection"),alias:"Expand Line Selection",precondition:void 0,kbOpts:{weight:0,kbExpr:$.textInputFocus,primary:2090}})}run(e,t,i){if(i=i||{},!t.hasModel())return;const s=t._getViewModel();s.model.pushStackElement(),s.setCursorStates(i.source,3,Ys.expandLineSelection(s,s.getCursorStates())),s.revealPrimaryCursor(i.source,!0)}}Ae(eot);class tot{constructor(e,t){this._selection=e,this._cursors=t,this._selectionId=null}getEditOperations(e,t){const i=iot(e,this._cursors);for(let s=0,r=i.length;s<r;s++){const o=i[s];t.addEditOperation(o.range,o.text)}this._selectionId=t.trackSelection(this._selection)}computeCursorState(e,t){return t.getTrackedSelection(this._selectionId)}}function iot(n,e){e.sort((o,a)=>o.lineNumber===a.lineNumber?o.column-a.column:o.lineNumber-a.lineNumber);for(let o=e.length-2;o>=0;o--)e[o].lineNumber===e[o+1].lineNumber&&e.splice(o,1);const t=[];let i=0,s=0;const r=e.length;for(let o=1,a=n.getLineCount();o<=a;o++){const l=n.getLineContent(o),c=l.length+1;let u=0;if(s<r&&e[s].lineNumber===o&&(u=e[s].column,s++,u===c)||l.length===0)continue;const h=wu(l);let d=0;if(h===-1)d=1;else if(h!==l.length-1)d=h+2;else continue;d=Math.max(u,d),t[i++]=un.delete(new M(o,d,o,c))}return t}class $ve{constructor(e,t,i){this._selection=e,this._isCopyingDown=t,this._noop=i||!1,this._selectionDirection=0,this._selectionId=null,this._startLineNumberDelta=0,this._endLineNumberDelta=0}getEditOperations(e,t){let i=this._selection;this._startLineNumberDelta=0,this._endLineNumberDelta=0,i.startLineNumber<i.endLineNumber&&i.endColumn===1&&(this._endLineNumberDelta=1,i=i.setEndPosition(i.endLineNumber-1,e.getLineMaxColumn(i.endLineNumber-1)));const s=[];for(let o=i.startLineNumber;o<=i.endLineNumber;o++)s.push(e.getLineContent(o));const r=s.join(` +`);r===""&&this._isCopyingDown&&(this._startLineNumberDelta++,this._endLineNumberDelta++),this._noop?t.addEditOperation(new M(i.endLineNumber,e.getLineMaxColumn(i.endLineNumber),i.endLineNumber+1,1),i.endLineNumber===e.getLineCount()?"":` +`):this._isCopyingDown?t.addEditOperation(new M(i.startLineNumber,1,i.startLineNumber,1),r+` +`):t.addEditOperation(new M(i.endLineNumber,e.getLineMaxColumn(i.endLineNumber),i.endLineNumber,e.getLineMaxColumn(i.endLineNumber)),` +`+r),this._selectionId=t.trackSelection(i),this._selectionDirection=this._selection.getDirection()}computeCursorState(e,t){let i=t.getTrackedSelection(this._selectionId);if(this._startLineNumberDelta!==0||this._endLineNumberDelta!==0){let s=i.startLineNumber,r=i.startColumn,o=i.endLineNumber,a=i.endColumn;this._startLineNumberDelta!==0&&(s=s+this._startLineNumberDelta,r=1),this._endLineNumberDelta!==0&&(o=o+this._endLineNumberDelta,a=1),i=Ze.createWithDirection(s,r,o,a,this._selectionDirection)}return i}}var not=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},sot=function(n,e){return function(t,i){e(t,i,n)}};let DV=class{constructor(e,t,i,s){this._languageConfigurationService=s,this._selection=e,this._isMovingDown=t,this._autoIndent=i,this._selectionId=null,this._moveEndLineSelectionShrink=!1}getEditOperations(e,t){const i=e.getLineCount();if(this._isMovingDown&&this._selection.endLineNumber===i){this._selectionId=t.trackSelection(this._selection);return}if(!this._isMovingDown&&this._selection.startLineNumber===1){this._selectionId=t.trackSelection(this._selection);return}this._moveEndPositionDown=!1;let s=this._selection;s.startLineNumber<s.endLineNumber&&s.endColumn===1&&(this._moveEndPositionDown=!0,s=s.setEndPosition(s.endLineNumber-1,e.getLineMaxColumn(s.endLineNumber-1)));const{tabSize:r,indentSize:o,insertSpaces:a}=e.getOptions(),l=this.buildIndentConverter(r,o,a),c={tokenization:{getLineTokens:u=>e.tokenization.getLineTokens(u),getLanguageId:()=>e.getLanguageId(),getLanguageIdAtPosition:(u,h)=>e.getLanguageIdAtPosition(u,h)},getLineContent:null};if(s.startLineNumber===s.endLineNumber&&e.getLineMaxColumn(s.startLineNumber)===1){const u=s.startLineNumber,h=this._isMovingDown?u+1:u-1;e.getLineMaxColumn(h)===1?t.addEditOperation(new M(1,1,1,1),null):(t.addEditOperation(new M(u,1,u,1),e.getLineContent(h)),t.addEditOperation(new M(h,1,h,e.getLineMaxColumn(h)),null)),s=new Ze(h,1,h,1)}else{let u,h;if(this._isMovingDown){u=s.endLineNumber+1,h=e.getLineContent(u),t.addEditOperation(new M(u-1,e.getLineMaxColumn(u-1),u,e.getLineMaxColumn(u)),null);let d=h;if(this.shouldAutoIndent(e,s)){const f=this.matchEnterRule(e,l,r,u,s.startLineNumber-1);if(f!==null){const p=Ni(e.getLineContent(u)),m=f+jo(p,r);d=yk(m,r,a)+this.trimStart(h)}else{c.getLineContent=m=>m===s.startLineNumber?e.getLineContent(u):e.getLineContent(m);const p=QS(this._autoIndent,c,e.getLanguageIdAtPosition(u,1),s.startLineNumber,l,this._languageConfigurationService);if(p!==null){const m=Ni(e.getLineContent(u)),_=jo(p,r),b=jo(m,r);_!==b&&(d=yk(_,r,a)+this.trimStart(h))}}t.addEditOperation(new M(s.startLineNumber,1,s.startLineNumber,1),d+` +`);const g=this.matchEnterRuleMovingDown(e,l,r,s.startLineNumber,u,d);if(g!==null)g!==0&&this.getIndentEditsOfMovingBlock(e,t,s,r,a,g);else{c.getLineContent=m=>m===s.startLineNumber?d:m>=s.startLineNumber+1&&m<=s.endLineNumber+1?e.getLineContent(m-1):e.getLineContent(m);const p=QS(this._autoIndent,c,e.getLanguageIdAtPosition(u,1),s.startLineNumber+1,l,this._languageConfigurationService);if(p!==null){const m=Ni(e.getLineContent(s.startLineNumber)),_=jo(p,r),b=jo(m,r);if(_!==b){const y=_-b;this.getIndentEditsOfMovingBlock(e,t,s,r,a,y)}}}}else t.addEditOperation(new M(s.startLineNumber,1,s.startLineNumber,1),d+` +`)}else if(u=s.startLineNumber-1,h=e.getLineContent(u),t.addEditOperation(new M(u,1,u+1,1),null),t.addEditOperation(new M(s.endLineNumber,e.getLineMaxColumn(s.endLineNumber),s.endLineNumber,e.getLineMaxColumn(s.endLineNumber)),` +`+h),this.shouldAutoIndent(e,s)){c.getLineContent=f=>f===u?e.getLineContent(s.startLineNumber):e.getLineContent(f);const d=this.matchEnterRule(e,l,r,s.startLineNumber,s.startLineNumber-2);if(d!==null)d!==0&&this.getIndentEditsOfMovingBlock(e,t,s,r,a,d);else{const f=QS(this._autoIndent,c,e.getLanguageIdAtPosition(s.startLineNumber,1),u,l,this._languageConfigurationService);if(f!==null){const g=Ni(e.getLineContent(s.startLineNumber)),p=jo(f,r),m=jo(g,r);if(p!==m){const _=p-m;this.getIndentEditsOfMovingBlock(e,t,s,r,a,_)}}}}}this._selectionId=t.trackSelection(s)}buildIndentConverter(e,t,i){return{shiftIndent:s=>ml.shiftIndent(s,s.length+1,e,t,i),unshiftIndent:s=>ml.unshiftIndent(s,s.length+1,e,t,i)}}parseEnterResult(e,t,i,s,r){if(r){let o=r.indentation;r.indentAction===os.None||r.indentAction===os.Indent?o=r.indentation+r.appendText:r.indentAction===os.IndentOutdent?o=r.indentation:r.indentAction===os.Outdent&&(o=t.unshiftIndent(r.indentation)+r.appendText);const a=e.getLineContent(s);if(this.trimStart(a).indexOf(this.trimStart(o))>=0){const l=Ni(e.getLineContent(s));let c=Ni(o);const u=rpe(e,s,this._languageConfigurationService);u!==null&&u&2&&(c=t.unshiftIndent(c));const h=jo(c,i),d=jo(l,i);return h-d}}return null}matchEnterRuleMovingDown(e,t,i,s,r,o){if(wu(o)>=0){const a=e.getLineMaxColumn(r),l=bb(this._autoIndent,e,new M(r,a,r,a),this._languageConfigurationService);return this.parseEnterResult(e,t,i,s,l)}else{let a=s-1;for(;a>=1;){const u=e.getLineContent(a);if(wu(u)>=0)break;a--}if(a<1||s>e.getLineCount())return null;const l=e.getLineMaxColumn(a),c=bb(this._autoIndent,e,new M(a,l,a,l),this._languageConfigurationService);return this.parseEnterResult(e,t,i,s,c)}}matchEnterRule(e,t,i,s,r,o){let a=r;for(;a>=1;){let u;if(a===r&&o!==void 0?u=o:u=e.getLineContent(a),wu(u)>=0)break;a--}if(a<1||s>e.getLineCount())return null;const l=e.getLineMaxColumn(a),c=bb(this._autoIndent,e,new M(a,l,a,l),this._languageConfigurationService);return this.parseEnterResult(e,t,i,s,c)}trimStart(e){return e.replace(/^\s+/,"")}shouldAutoIndent(e,t){if(this._autoIndent<4||!e.tokenization.isCheapToTokenize(t.startLineNumber))return!1;const i=e.getLanguageIdAtPosition(t.startLineNumber,1),s=e.getLanguageIdAtPosition(t.endLineNumber,1);return!(i!==s||this._languageConfigurationService.getLanguageConfiguration(i).indentRulesSupport===null)}getIndentEditsOfMovingBlock(e,t,i,s,r,o){for(let a=i.startLineNumber;a<=i.endLineNumber;a++){const l=e.getLineContent(a),c=Ni(l),h=jo(c,s)+o,d=yk(h,s,r);d!==c&&(t.addEditOperation(new M(a,1,a,c.length+1),d),a===i.endLineNumber&&i.endColumn<=c.length+1&&d===""&&(this._moveEndLineSelectionShrink=!0))}}computeCursorState(e,t){let i=t.getTrackedSelection(this._selectionId);return this._moveEndPositionDown&&(i=i.setEndPosition(i.endLineNumber+1,1)),this._moveEndLineSelectionShrink&&i.startLineNumber<i.endLineNumber&&(i=i.setEndPosition(i.endLineNumber,2)),i}};DV=not([sot(3,Bi)],DV);class Rp{static getCollator(){return Rp._COLLATOR||(Rp._COLLATOR=new Intl.Collator),Rp._COLLATOR}constructor(e,t){this.selection=e,this.descending=t,this.selectionId=null}getEditOperations(e,t){const i=rot(e,this.selection,this.descending);i&&t.addEditOperation(i.range,i.text),this.selectionId=t.trackSelection(this.selection)}computeCursorState(e,t){return t.getTrackedSelection(this.selectionId)}static canRun(e,t,i){if(e===null)return!1;const s=zve(e,t,i);if(!s)return!1;for(let r=0,o=s.before.length;r<o;r++)if(s.before[r]!==s.after[r])return!0;return!1}}Rp._COLLATOR=null;function zve(n,e,t){const i=e.startLineNumber;let s=e.endLineNumber;if(e.endColumn===1&&s--,i>=s)return null;const r=[];for(let a=i;a<=s;a++)r.push(n.getLineContent(a));let o=r.slice(0);return o.sort(Rp.getCollator().compare),t===!0&&(o=o.reverse()),{startLineNumber:i,endLineNumber:s,before:r,after:o}}function rot(n,e,t){const i=zve(n,e,t);return i?un.replace(new M(i.startLineNumber,1,i.endLineNumber,n.getLineMaxColumn(i.endLineNumber)),i.after.join(` +`)):null}class Uve extends qe{constructor(e,t){super(t),this.down=e}run(e,t){if(!t.hasModel())return;const i=t.getSelections().map((o,a)=>({selection:o,index:a,ignore:!1}));i.sort((o,a)=>M.compareRangesUsingStarts(o.selection,a.selection));let s=i[0];for(let o=1;o<i.length;o++){const a=i[o];s.selection.endLineNumber===a.selection.startLineNumber&&(s.index<a.index?a.ignore=!0:(s.ignore=!0,s=a))}const r=[];for(const o of i)r.push(new $ve(o.selection,this.down,o.ignore));t.pushUndoStop(),t.executeCommands(this.id,r),t.pushUndoStop()}}class oot extends Uve{constructor(){super(!1,{id:"editor.action.copyLinesUpAction",label:v("lines.copyUp","Copy Line Up"),alias:"Copy Line Up",precondition:$.writable,kbOpts:{kbExpr:$.editorTextFocus,primary:1552,linux:{primary:3600},weight:100},menuOpts:{menuId:B.MenubarSelectionMenu,group:"2_line",title:v({key:"miCopyLinesUp",comment:["&& denotes a mnemonic"]},"&&Copy Line Up"),order:1}})}}class aot extends Uve{constructor(){super(!0,{id:"editor.action.copyLinesDownAction",label:v("lines.copyDown","Copy Line Down"),alias:"Copy Line Down",precondition:$.writable,kbOpts:{kbExpr:$.editorTextFocus,primary:1554,linux:{primary:3602},weight:100},menuOpts:{menuId:B.MenubarSelectionMenu,group:"2_line",title:v({key:"miCopyLinesDown",comment:["&& denotes a mnemonic"]},"Co&&py Line Down"),order:2}})}}class lot extends qe{constructor(){super({id:"editor.action.duplicateSelection",label:v("duplicateSelection","Duplicate Selection"),alias:"Duplicate Selection",precondition:$.writable,menuOpts:{menuId:B.MenubarSelectionMenu,group:"2_line",title:v({key:"miDuplicateSelection",comment:["&& denotes a mnemonic"]},"&&Duplicate Selection"),order:5}})}run(e,t,i){if(!t.hasModel())return;const s=[],r=t.getSelections(),o=t.getModel();for(const a of r)if(a.isEmpty())s.push(new $ve(a,!0));else{const l=new Ze(a.endLineNumber,a.endColumn,a.endLineNumber,a.endColumn);s.push(new h7e(l,o.getValueInRange(a)))}t.pushUndoStop(),t.executeCommands(this.id,s),t.pushUndoStop()}}class jve extends qe{constructor(e,t){super(t),this.down=e}run(e,t){const i=e.get(Bi),s=[],r=t.getSelections()||[],o=t.getOption(12);for(const a of r)s.push(new DV(a,this.down,o,i));t.pushUndoStop(),t.executeCommands(this.id,s),t.pushUndoStop()}}class cot extends jve{constructor(){super(!1,{id:"editor.action.moveLinesUpAction",label:v("lines.moveUp","Move Line Up"),alias:"Move Line Up",precondition:$.writable,kbOpts:{kbExpr:$.editorTextFocus,primary:528,linux:{primary:528},weight:100},menuOpts:{menuId:B.MenubarSelectionMenu,group:"2_line",title:v({key:"miMoveLinesUp",comment:["&& denotes a mnemonic"]},"Mo&&ve Line Up"),order:3}})}}class uot extends jve{constructor(){super(!0,{id:"editor.action.moveLinesDownAction",label:v("lines.moveDown","Move Line Down"),alias:"Move Line Down",precondition:$.writable,kbOpts:{kbExpr:$.editorTextFocus,primary:530,linux:{primary:530},weight:100},menuOpts:{menuId:B.MenubarSelectionMenu,group:"2_line",title:v({key:"miMoveLinesDown",comment:["&& denotes a mnemonic"]},"Move &&Line Down"),order:4}})}}class qve extends qe{constructor(e,t){super(t),this.descending=e}run(e,t){const i=t.getSelections()||[];for(const r of i)if(!Rp.canRun(t.getModel(),r,this.descending))return;const s=[];for(let r=0,o=i.length;r<o;r++)s[r]=new Rp(i[r],this.descending);t.pushUndoStop(),t.executeCommands(this.id,s),t.pushUndoStop()}}class hot extends qve{constructor(){super(!1,{id:"editor.action.sortLinesAscending",label:v("lines.sortAscending","Sort Lines Ascending"),alias:"Sort Lines Ascending",precondition:$.writable})}}class dot extends qve{constructor(){super(!0,{id:"editor.action.sortLinesDescending",label:v("lines.sortDescending","Sort Lines Descending"),alias:"Sort Lines Descending",precondition:$.writable})}}class fot extends qe{constructor(){super({id:"editor.action.removeDuplicateLines",label:v("lines.deleteDuplicates","Delete Duplicate Lines"),alias:"Delete Duplicate Lines",precondition:$.writable})}run(e,t){if(!t.hasModel())return;const i=t.getModel();if(i.getLineCount()===1&&i.getLineMaxColumn(1)===1)return;const s=[],r=[];let o=0;for(const a of t.getSelections()){const l=new Set,c=[];for(let f=a.startLineNumber;f<=a.endLineNumber;f++){const g=i.getLineContent(f);l.has(g)||(c.push(g),l.add(g))}const u=new Ze(a.startLineNumber,1,a.endLineNumber,i.getLineMaxColumn(a.endLineNumber)),h=a.startLineNumber-o,d=new Ze(h,1,h+c.length-1,c[c.length-1].length);s.push(un.replace(u,c.join(` +`))),r.push(d),o+=a.endLineNumber-a.startLineNumber+1-c.length}t.pushUndoStop(),t.executeEdits(this.id,s,r),t.pushUndoStop()}}class J2 extends qe{constructor(){super({id:J2.ID,label:v("lines.trimTrailingWhitespace","Trim Trailing Whitespace"),alias:"Trim Trailing Whitespace",precondition:$.writable,kbOpts:{kbExpr:$.editorTextFocus,primary:ws(2089,2102),weight:100}})}run(e,t,i){let s=[];i.reason==="auto-save"&&(s=(t.getSelections()||[]).map(a=>new he(a.positionLineNumber,a.positionColumn)));const r=t.getSelection();if(r===null)return;const o=new tot(r,s);t.pushUndoStop(),t.executeCommands(this.id,[o]),t.pushUndoStop()}}J2.ID="editor.action.trimTrailingWhitespace";class got extends qe{constructor(){super({id:"editor.action.deleteLines",label:v("lines.delete","Delete Line"),alias:"Delete Line",precondition:$.writable,kbOpts:{kbExpr:$.textInputFocus,primary:3113,weight:100}})}run(e,t){if(!t.hasModel())return;const i=this._getLinesToRemove(t),s=t.getModel();if(s.getLineCount()===1&&s.getLineMaxColumn(1)===1)return;let r=0;const o=[],a=[];for(let l=0,c=i.length;l<c;l++){const u=i[l];let h=u.startLineNumber,d=u.endLineNumber,f=1,g=s.getLineMaxColumn(d);d<s.getLineCount()?(d+=1,g=1):h>1&&(h-=1,f=s.getLineMaxColumn(h)),o.push(un.replace(new Ze(h,f,d,g),"")),a.push(new Ze(h-r,u.positionColumn,h-r,u.positionColumn)),r+=u.endLineNumber-u.startLineNumber+1}t.pushUndoStop(),t.executeEdits(this.id,o,a),t.pushUndoStop()}_getLinesToRemove(e){const t=e.getSelections().map(r=>{let o=r.endLineNumber;return r.startLineNumber<r.endLineNumber&&r.endColumn===1&&(o-=1),{startLineNumber:r.startLineNumber,selectionStartColumn:r.selectionStartColumn,endLineNumber:o,positionColumn:r.positionColumn}});t.sort((r,o)=>r.startLineNumber===o.startLineNumber?r.endLineNumber-o.endLineNumber:r.startLineNumber-o.startLineNumber);const i=[];let s=t[0];for(let r=1;r<t.length;r++)s.endLineNumber+1>=t[r].startLineNumber?s.endLineNumber=t[r].endLineNumber:(i.push(s),s=t[r]);return i.push(s),i}}class pot extends qe{constructor(){super({id:"editor.action.indentLines",label:v("lines.indent","Indent Line"),alias:"Indent Line",precondition:$.writable,kbOpts:{kbExpr:$.editorTextFocus,primary:2142,weight:100}})}run(e,t){const i=t._getViewModel();i&&(t.pushUndoStop(),t.executeCommands(this.id,gn.indent(i.cursorConfig,t.getModel(),t.getSelections())),t.pushUndoStop())}}class mot extends qe{constructor(){super({id:"editor.action.outdentLines",label:v("lines.outdent","Outdent Line"),alias:"Outdent Line",precondition:$.writable,kbOpts:{kbExpr:$.editorTextFocus,primary:2140,weight:100}})}run(e,t){yb.Outdent.runEditorCommand(e,t,null)}}class _ot extends qe{constructor(){super({id:"editor.action.insertLineBefore",label:v("lines.insertBefore","Insert Line Above"),alias:"Insert Line Above",precondition:$.writable,kbOpts:{kbExpr:$.editorTextFocus,primary:3075,weight:100}})}run(e,t){const i=t._getViewModel();i&&(t.pushUndoStop(),t.executeCommands(this.id,gn.lineInsertBefore(i.cursorConfig,t.getModel(),t.getSelections())))}}class vot extends qe{constructor(){super({id:"editor.action.insertLineAfter",label:v("lines.insertAfter","Insert Line Below"),alias:"Insert Line Below",precondition:$.writable,kbOpts:{kbExpr:$.editorTextFocus,primary:2051,weight:100}})}run(e,t){const i=t._getViewModel();i&&(t.pushUndoStop(),t.executeCommands(this.id,gn.lineInsertAfter(i.cursorConfig,t.getModel(),t.getSelections())))}}class Kve extends qe{run(e,t){if(!t.hasModel())return;const i=t.getSelection(),s=this._getRangesToDelete(t),r=[];for(let l=0,c=s.length-1;l<c;l++){const u=s[l],h=s[l+1];M.intersectRanges(u,h)===null?r.push(u):s[l+1]=M.plusRange(u,h)}r.push(s[s.length-1]);const o=this._getEndCursorState(i,r),a=r.map(l=>un.replace(l,""));t.pushUndoStop(),t.executeEdits(this.id,a,o),t.pushUndoStop()}}class bot extends Kve{constructor(){super({id:"deleteAllLeft",label:v("lines.deleteAllLeft","Delete All Left"),alias:"Delete All Left",precondition:$.writable,kbOpts:{kbExpr:$.textInputFocus,primary:0,mac:{primary:2049},weight:100}})}_getEndCursorState(e,t){let i=null;const s=[];let r=0;return t.forEach(o=>{let a;if(o.endColumn===1&&r>0){const l=o.startLineNumber-r;a=new Ze(l,o.startColumn,l,o.startColumn)}else a=new Ze(o.startLineNumber,o.startColumn,o.startLineNumber,o.startColumn);r+=o.endLineNumber-o.startLineNumber,o.intersectRanges(e)?i=a:s.push(a)}),i&&s.unshift(i),s}_getRangesToDelete(e){const t=e.getSelections();if(t===null)return[];let i=t;const s=e.getModel();return s===null?[]:(i.sort(M.compareRangesUsingStarts),i=i.map(r=>{if(r.isEmpty())if(r.startColumn===1){const o=Math.max(1,r.startLineNumber-1),a=r.startLineNumber===1?1:s.getLineLength(o)+1;return new M(o,a,r.startLineNumber,1)}else return new M(r.startLineNumber,1,r.startLineNumber,r.startColumn);else return new M(r.startLineNumber,1,r.endLineNumber,r.endColumn)}),i)}}class yot extends Kve{constructor(){super({id:"deleteAllRight",label:v("lines.deleteAllRight","Delete All Right"),alias:"Delete All Right",precondition:$.writable,kbOpts:{kbExpr:$.textInputFocus,primary:0,mac:{primary:297,secondary:[2068]},weight:100}})}_getEndCursorState(e,t){let i=null;const s=[];for(let r=0,o=t.length,a=0;r<o;r++){const l=t[r],c=new Ze(l.startLineNumber-a,l.startColumn,l.startLineNumber-a,l.startColumn);l.intersectRanges(e)?i=c:s.push(c)}return i&&s.unshift(i),s}_getRangesToDelete(e){const t=e.getModel();if(t===null)return[];const i=e.getSelections();if(i===null)return[];const s=i.map(r=>{if(r.isEmpty()){const o=t.getLineMaxColumn(r.startLineNumber);return r.startColumn===o?new M(r.startLineNumber,r.startColumn,r.startLineNumber+1,1):new M(r.startLineNumber,r.startColumn,r.startLineNumber,o)}return r});return s.sort(M.compareRangesUsingStarts),s}}class Cot extends qe{constructor(){super({id:"editor.action.joinLines",label:v("lines.joinLines","Join Lines"),alias:"Join Lines",precondition:$.writable,kbOpts:{kbExpr:$.editorTextFocus,primary:0,mac:{primary:296},weight:100}})}run(e,t){const i=t.getSelections();if(i===null)return;let s=t.getSelection();if(s===null)return;i.sort(M.compareRangesUsingStarts);const r=[],o=i.reduce((d,f)=>d.isEmpty()?d.endLineNumber===f.startLineNumber?(s.equalsSelection(d)&&(s=f),f):f.startLineNumber>d.endLineNumber+1?(r.push(d),f):new Ze(d.startLineNumber,d.startColumn,f.endLineNumber,f.endColumn):f.startLineNumber>d.endLineNumber?(r.push(d),f):new Ze(d.startLineNumber,d.startColumn,f.endLineNumber,f.endColumn));r.push(o);const a=t.getModel();if(a===null)return;const l=[],c=[];let u=s,h=0;for(let d=0,f=r.length;d<f;d++){const g=r[d],p=g.startLineNumber,m=1;let _=0,b,y;const w=a.getLineLength(g.endLineNumber)-g.endColumn;if(g.isEmpty()||g.startLineNumber===g.endLineNumber){const L=g.getStartPosition();L.lineNumber<a.getLineCount()?(b=p+1,y=a.getLineMaxColumn(b)):(b=L.lineNumber,y=a.getLineMaxColumn(L.lineNumber))}else b=g.endLineNumber,y=a.getLineMaxColumn(b);let S=a.getLineContent(p);for(let L=p+1;L<=b;L++){const k=a.getLineContent(L),x=a.getLineFirstNonWhitespaceColumn(L);if(x>=1){let I=!0;S===""&&(I=!1),I&&(S.charAt(S.length-1)===" "||S.charAt(S.length-1)===" ")&&(I=!1,S=S.replace(/[\s\uFEFF\xA0]+$/g," "));const N=k.substr(x-1);S+=(I?" ":"")+N,I?_=N.length+1:_=N.length}else _=0}const E=new M(p,m,b,y);if(!E.isEmpty()){let L;g.isEmpty()?(l.push(un.replace(E,S)),L=new Ze(E.startLineNumber-h,S.length-_+1,p-h,S.length-_+1)):g.startLineNumber===g.endLineNumber?(l.push(un.replace(E,S)),L=new Ze(g.startLineNumber-h,g.startColumn,g.endLineNumber-h,g.endColumn)):(l.push(un.replace(E,S)),L=new Ze(g.startLineNumber-h,g.startColumn,g.startLineNumber-h,S.length-w)),M.intersectRanges(E,s)!==null?u=L:c.push(L)}h+=E.endLineNumber-E.startLineNumber}c.unshift(u),t.pushUndoStop(),t.executeEdits(this.id,l,c),t.pushUndoStop()}}class wot extends qe{constructor(){super({id:"editor.action.transpose",label:v("editor.transpose","Transpose Characters around the Cursor"),alias:"Transpose Characters around the Cursor",precondition:$.writable})}run(e,t){const i=t.getSelections();if(i===null)return;const s=t.getModel();if(s===null)return;const r=[];for(let o=0,a=i.length;o<a;o++){const l=i[o];if(!l.isEmpty())continue;const c=l.getStartPosition(),u=s.getLineMaxColumn(c.lineNumber);if(c.column>=u){if(c.lineNumber===s.getLineCount())continue;const h=new M(c.lineNumber,Math.max(1,c.column-1),c.lineNumber+1,1),d=s.getValueInRange(h).split("").reverse().join("");r.push(new cr(new Ze(c.lineNumber,Math.max(1,c.column-1),c.lineNumber+1,1),d))}else{const h=new M(c.lineNumber,Math.max(1,c.column-1),c.lineNumber,c.column+1),d=s.getValueInRange(h).split("").reverse().join("");r.push(new Jj(h,d,new Ze(c.lineNumber,c.column+1,c.lineNumber,c.column+1)))}}t.pushUndoStop(),t.executeCommands(this.id,r),t.pushUndoStop()}}class zC extends qe{run(e,t){const i=t.getSelections();if(i===null)return;const s=t.getModel();if(s===null)return;const r=t.getOption(129),o=[];for(const a of i)if(a.isEmpty()){const l=a.getStartPosition(),c=t.getConfiguredWordAtPosition(l);if(!c)continue;const u=new M(l.lineNumber,c.startColumn,l.lineNumber,c.endColumn),h=s.getValueInRange(u);o.push(un.replace(u,this._modifyText(h,r)))}else{const l=s.getValueInRange(a);o.push(un.replace(a,this._modifyText(l,r)))}t.pushUndoStop(),t.executeEdits(this.id,o),t.pushUndoStop()}}class Sot extends zC{constructor(){super({id:"editor.action.transformToUppercase",label:v("editor.transformToUppercase","Transform to Uppercase"),alias:"Transform to Uppercase",precondition:$.writable})}_modifyText(e,t){return e.toLocaleUpperCase()}}class kot extends zC{constructor(){super({id:"editor.action.transformToLowercase",label:v("editor.transformToLowercase","Transform to Lowercase"),alias:"Transform to Lowercase",precondition:$.writable})}_modifyText(e,t){return e.toLocaleLowerCase()}}class Bv{constructor(e,t){this._pattern=e,this._flags=t,this._actual=null,this._evaluated=!1}get(){if(!this._evaluated){this._evaluated=!0;try{this._actual=new RegExp(this._pattern,this._flags)}catch{}}return this._actual}isSupported(){return this.get()!==null}}class Cx extends zC{constructor(){super({id:"editor.action.transformToTitlecase",label:v("editor.transformToTitlecase","Transform to Title Case"),alias:"Transform to Title Case",precondition:$.writable})}_modifyText(e,t){const i=Cx.titleBoundary.get();return i?e.toLocaleLowerCase().replace(i,s=>s.toLocaleUpperCase()):e}}Cx.titleBoundary=new Bv("(^|[^\\p{L}\\p{N}']|((^|\\P{L})'))\\p{L}","gmu");class Mp extends zC{constructor(){super({id:"editor.action.transformToSnakecase",label:v("editor.transformToSnakecase","Transform to Snake Case"),alias:"Transform to Snake Case",precondition:$.writable})}_modifyText(e,t){const i=Mp.caseBoundary.get(),s=Mp.singleLetters.get();return!i||!s?e:e.replace(i,"$1_$2").replace(s,"$1_$2$3").toLocaleLowerCase()}}Mp.caseBoundary=new Bv("(\\p{Ll})(\\p{Lu})","gmu");Mp.singleLetters=new Bv("(\\p{Lu}|\\p{N})(\\p{Lu})(\\p{Ll})","gmu");class wx extends zC{constructor(){super({id:"editor.action.transformToCamelcase",label:v("editor.transformToCamelcase","Transform to Camel Case"),alias:"Transform to Camel Case",precondition:$.writable})}_modifyText(e,t){const i=wx.wordBoundary.get();if(!i)return e;const s=e.split(i);return s.shift()+s.map(o=>o.substring(0,1).toLocaleUpperCase()+o.substring(1)).join("")}}wx.wordBoundary=new Bv("[_\\s-]","gm");class Vf extends zC{static isSupported(){return[this.caseBoundary,this.singleLetters,this.underscoreBoundary].every(t=>t.isSupported())}constructor(){super({id:"editor.action.transformToKebabcase",label:v("editor.transformToKebabcase","Transform to Kebab Case"),alias:"Transform to Kebab Case",precondition:$.writable})}_modifyText(e,t){const i=Vf.caseBoundary.get(),s=Vf.singleLetters.get(),r=Vf.underscoreBoundary.get();return!i||!s||!r?e:e.replace(r,"$1-$3").replace(i,"$1-$2").replace(s,"$1-$2").toLocaleLowerCase()}}Vf.caseBoundary=new Bv("(\\p{Ll})(\\p{Lu})","gmu");Vf.singleLetters=new Bv("(\\p{Lu}|\\p{N})(\\p{Lu}\\p{Ll})","gmu");Vf.underscoreBoundary=new Bv("(\\S)(_)(\\S)","gm");Ae(oot);Ae(aot);Ae(lot);Ae(cot);Ae(uot);Ae(hot);Ae(dot);Ae(fot);Ae(J2);Ae(got);Ae(pot);Ae(mot);Ae(_ot);Ae(vot);Ae(bot);Ae(yot);Ae(Cot);Ae(wot);Ae(Sot);Ae(kot);Mp.caseBoundary.isSupported()&&Mp.singleLetters.isSupported()&&Ae(Mp);wx.wordBoundary.isSupported()&&Ae(wx);Cx.titleBoundary.isSupported()&&Ae(Cx);Vf.isSupported()&&Ae(Vf);var Lot=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},XI=function(n,e){return function(t,i){e(t,i,n)}},EN;const Gve=new ze("LinkedEditingInputVisible",!1),xot="linked-editing-decoration";let vm=EN=class extends pe{static get(e){return e.getContribution(EN.ID)}constructor(e,t,i,s,r){super(),this.languageConfigurationService=s,this._syncRangesToken=0,this._localToDispose=this._register(new xe),this._editor=e,this._providers=i.linkedEditingRangeProvider,this._enabled=!1,this._visibleContextKey=Gve.bindTo(t),this._debounceInformation=r.for(this._providers,"Linked Editing",{max:200}),this._currentDecorations=this._editor.createDecorationsCollection(),this._languageWordPattern=null,this._currentWordPattern=null,this._ignoreChangeEvent=!1,this._localToDispose=this._register(new xe),this._rangeUpdateTriggerPromise=null,this._rangeSyncTriggerPromise=null,this._currentRequest=null,this._currentRequestPosition=null,this._currentRequestModelVersion=null,this._register(this._editor.onDidChangeModel(()=>this.reinitialize(!0))),this._register(this._editor.onDidChangeConfiguration(o=>{(o.hasChanged(69)||o.hasChanged(92))&&this.reinitialize(!1)})),this._register(this._providers.onDidChange(()=>this.reinitialize(!1))),this._register(this._editor.onDidChangeModelLanguage(()=>this.reinitialize(!0))),this.reinitialize(!0)}reinitialize(e){const t=this._editor.getModel(),i=t!==null&&(this._editor.getOption(69)||this._editor.getOption(92))&&this._providers.has(t);if(i===this._enabled&&!e||(this._enabled=i,this.clearRanges(),this._localToDispose.clear(),!i||t===null))return;this._localToDispose.add(Ve.runAndSubscribe(t.onDidChangeLanguageConfiguration,()=>{this._languageWordPattern=this.languageConfigurationService.getLanguageConfiguration(t.getLanguageId()).getWordDefinition()}));const s=new Sc(this._debounceInformation.get(t)),r=()=>{var l;this._rangeUpdateTriggerPromise=s.trigger(()=>this.updateRanges(),(l=this._debounceDuration)!==null&&l!==void 0?l:this._debounceInformation.get(t))},o=new Sc(0),a=l=>{this._rangeSyncTriggerPromise=o.trigger(()=>this._syncRanges(l))};this._localToDispose.add(this._editor.onDidChangeCursorPosition(()=>{r()})),this._localToDispose.add(this._editor.onDidChangeModelContent(l=>{if(!this._ignoreChangeEvent&&this._currentDecorations.length>0){const c=this._currentDecorations.getRange(0);if(c&&l.changes.every(u=>c.intersectRanges(u.range))){a(this._syncRangesToken);return}}r()})),this._localToDispose.add({dispose:()=>{s.dispose(),o.dispose()}}),this.updateRanges()}_syncRanges(e){if(!this._editor.hasModel()||e!==this._syncRangesToken||this._currentDecorations.length===0)return;const t=this._editor.getModel(),i=this._currentDecorations.getRange(0);if(!i||i.startLineNumber!==i.endLineNumber)return this.clearRanges();const s=t.getValueInRange(i);if(this._currentWordPattern){const o=s.match(this._currentWordPattern);if((o?o[0].length:0)!==s.length)return this.clearRanges()}const r=[];for(let o=1,a=this._currentDecorations.length;o<a;o++){const l=this._currentDecorations.getRange(o);if(l)if(l.startLineNumber!==l.endLineNumber)r.push({range:l,text:s});else{let c=t.getValueInRange(l),u=s,h=l.startColumn,d=l.endColumn;const f=T_(c,u);h+=f,c=c.substr(f),u=u.substr(f);const g=TA(c,u);d-=g,c=c.substr(0,c.length-g),u=u.substr(0,u.length-g),(h!==d||u.length!==0)&&r.push({range:new M(l.startLineNumber,h,l.endLineNumber,d),text:u})}}if(r.length!==0)try{this._editor.popUndoStop(),this._ignoreChangeEvent=!0;const o=this._editor._getViewModel().getPrevEditOperationType();this._editor.executeEdits("linkedEditing",r),this._editor._getViewModel().setPrevEditOperationType(o)}finally{this._ignoreChangeEvent=!1}}dispose(){this.clearRanges(),super.dispose()}clearRanges(){this._visibleContextKey.set(!1),this._currentDecorations.clear(),this._currentRequest&&(this._currentRequest.cancel(),this._currentRequest=null,this._currentRequestPosition=null)}async updateRanges(e=!1){if(!this._editor.hasModel()){this.clearRanges();return}const t=this._editor.getPosition();if(!this._enabled&&!e||this._editor.getSelections().length>1){this.clearRanges();return}const i=this._editor.getModel(),s=i.getVersionId();if(this._currentRequestPosition&&this._currentRequestModelVersion===s){if(t.equals(this._currentRequestPosition))return;if(this._currentDecorations.length>0){const o=this._currentDecorations.getRange(0);if(o&&o.containsPosition(t))return}}this.clearRanges(),this._currentRequestPosition=t,this._currentRequestModelVersion=s;const r=Ns(async o=>{try{const a=new Nr(!1),l=await Yve(this._providers,i,t,o);if(this._debounceInformation.update(i,a.elapsed()),r!==this._currentRequest||(this._currentRequest=null,s!==i.getVersionId()))return;let c=[];l!=null&&l.ranges&&(c=l.ranges),this._currentWordPattern=(l==null?void 0:l.wordPattern)||this._languageWordPattern;let u=!1;for(let d=0,f=c.length;d<f;d++)if(M.containsPosition(c[d],t)){if(u=!0,d!==0){const g=c[d];c.splice(d,1),c.unshift(g)}break}if(!u){this.clearRanges();return}const h=c.map(d=>({range:d,options:EN.DECORATION}));this._visibleContextKey.set(!0),this._currentDecorations.set(h),this._syncRangesToken++}catch(a){Wu(a)||vt(a),(this._currentRequest===r||!this._currentRequest)&&this.clearRanges()}});return this._currentRequest=r,r}};vm.ID="editor.contrib.linkedEditing";vm.DECORATION=yt.register({description:"linked-editing",stickiness:0,className:xot});vm=EN=Lot([XI(1,ft),XI(2,Ge),XI(3,Bi),XI(4,Ul)],vm);class Eot extends qe{constructor(){super({id:"editor.action.linkedEditing",label:v("linkedEditing.label","Start Linked Editing"),alias:"Start Linked Editing",precondition:ke.and($.writable,$.hasRenameProvider),kbOpts:{kbExpr:$.editorTextFocus,primary:3132,weight:100}})}runCommand(e,t){const i=e.get(ri),[s,r]=Array.isArray(t)&&t||[void 0,void 0];return it.isUri(s)&&he.isIPosition(r)?i.openCodeEditor({resource:s},i.getActiveCodeEditor()).then(o=>{o&&(o.setPosition(r),o.invokeWithinContext(a=>(this.reportTelemetry(a,o),this.run(a,o))))},vt):super.runCommand(e,t)}run(e,t){const i=vm.get(t);return i?Promise.resolve(i.updateRanges(!0)):Promise.resolve()}}const Dot=Ks.bindToContribution(vm.get);Be(new Dot({id:"cancelLinkedEditingInput",precondition:Gve,handler:n=>n.clearRanges(),kbOpts:{kbExpr:$.editorTextFocus,weight:199,primary:9,secondary:[1033]}}));function Yve(n,e,t,i){const s=n.ordered(e);return Mj(s.map(r=>async()=>{try{return await r.provideLinkedEditingRanges(e,t,i)}catch(o){Jn(o);return}}),r=>!!r&&Ir(r==null?void 0:r.ranges))}U("editor.linkedEditingBackground",{dark:me.fromHex("#f00").transparent(.3),light:me.fromHex("#f00").transparent(.3),hcDark:me.fromHex("#f00").transparent(.3),hcLight:me.white},v("editorLinkedEditingBackground","Background color when the editor auto renames on type."));xd("_executeLinkedEditingProvider",(n,e,t)=>{const{linkedEditingRangeProvider:i}=n.get(Ge);return Yve(i,e,t,Ft.None)});ti(vm.ID,vm,1);Ae(Eot);let Iot=class{constructor(e,t){this._link=e,this._provider=t}toJSON(){return{range:this.range,url:this.url,tooltip:this.tooltip}}get range(){return this._link.range}get url(){return this._link.url}get tooltip(){return this._link.tooltip}async resolve(e){return this._link.url?this._link.url:typeof this._provider.resolveLink=="function"?Promise.resolve(this._provider.resolveLink(this._link,e)).then(t=>(this._link=t||this._link,this._link.url?this.resolve(e):Promise.reject(new Error("missing")))):Promise.reject(new Error("missing"))}};class lR{constructor(e){this._disposables=new xe;let t=[];for(const[i,s]of e){const r=i.links.map(o=>new Iot(o,s));t=lR._union(t,r),Lj(i)&&this._disposables.add(i)}this.links=t}dispose(){this._disposables.dispose(),this.links.length=0}static _union(e,t){const i=[];let s,r,o,a;for(s=0,o=0,r=e.length,a=t.length;s<r&&o<a;){const l=e[s],c=t[o];if(M.areIntersectingOrTouching(l.range,c.range)){s++;continue}M.compareRangesUsingStarts(l.range,c.range)<0?(i.push(l),s++):(i.push(c),o++)}for(;s<r;s++)i.push(e[s]);for(;o<a;o++)i.push(t[o]);return i}}function Zve(n,e,t){const i=[],s=n.ordered(e).reverse().map((r,o)=>Promise.resolve(r.provideLinks(e,t)).then(a=>{a&&(i[o]=[a,r])},Jn));return Promise.all(s).then(()=>{const r=new lR(Tu(i));return t.isCancellationRequested?(r.dispose(),new lR([])):r})}Yt.registerCommand("_executeLinkProvider",async(n,...e)=>{let[t,i]=e;Si(t instanceof it),typeof i!="number"&&(i=0);const{linkProvider:s}=n.get(Ge),r=n.get(fn).getModel(t);if(!r)return[];const o=await Zve(s,r,Ft.None);if(!o)return[];for(let l=0;l<Math.min(i,o.links.length);l++)await o.links[l].resolve(Ft.None);const a=o.links.slice(0);return o.dispose(),a});var Tot=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},QI=function(n,e){return function(t,i){e(t,i,n)}},IV;let zy=IV=class extends pe{static get(e){return e.getContribution(IV.ID)}constructor(e,t,i,s,r){super(),this.editor=e,this.openerService=t,this.notificationService=i,this.languageFeaturesService=s,this.providers=this.languageFeaturesService.linkProvider,this.debounceInformation=r.for(this.providers,"Links",{min:1e3,max:4e3}),this.computeLinks=this._register(new Ei(()=>this.computeLinksNow(),1e3)),this.computePromise=null,this.activeLinksList=null,this.currentOccurrences={},this.activeLinkDecorationId=null;const o=this._register(new f2(e));this._register(o.onMouseMoveOrRelevantKeyDown(([a,l])=>{this._onEditorMouseMove(a,l)})),this._register(o.onExecute(a=>{this.onEditorMouseUp(a)})),this._register(o.onCancel(a=>{this.cleanUpActiveLinkDecoration()})),this._register(e.onDidChangeConfiguration(a=>{a.hasChanged(70)&&(this.updateDecorations([]),this.stop(),this.computeLinks.schedule(0))})),this._register(e.onDidChangeModelContent(a=>{this.editor.hasModel()&&this.computeLinks.schedule(this.debounceInformation.get(this.editor.getModel()))})),this._register(e.onDidChangeModel(a=>{this.currentOccurrences={},this.activeLinkDecorationId=null,this.stop(),this.computeLinks.schedule(0)})),this._register(e.onDidChangeModelLanguage(a=>{this.stop(),this.computeLinks.schedule(0)})),this._register(this.providers.onDidChange(a=>{this.stop(),this.computeLinks.schedule(0)})),this.computeLinks.schedule(0)}async computeLinksNow(){if(!this.editor.hasModel()||!this.editor.getOption(70))return;const e=this.editor.getModel();if(!e.isTooLargeForSyncing()&&this.providers.has(e)){this.activeLinksList&&(this.activeLinksList.dispose(),this.activeLinksList=null),this.computePromise=Ns(t=>Zve(this.providers,e,t));try{const t=new Nr(!1);if(this.activeLinksList=await this.computePromise,this.debounceInformation.update(e,t.elapsed()),e.isDisposed())return;this.updateDecorations(this.activeLinksList.links)}catch(t){vt(t)}finally{this.computePromise=null}}}updateDecorations(e){const t=this.editor.getOption(77)==="altKey",i=[],s=Object.keys(this.currentOccurrences);for(const o of s){const a=this.currentOccurrences[o];i.push(a.decorationId)}const r=[];if(e)for(const o of e)r.push(Mb.decoration(o,t));this.editor.changeDecorations(o=>{const a=o.deltaDecorations(i,r);this.currentOccurrences={},this.activeLinkDecorationId=null;for(let l=0,c=a.length;l<c;l++){const u=new Mb(e[l],a[l]);this.currentOccurrences[u.decorationId]=u}})}_onEditorMouseMove(e,t){const i=this.editor.getOption(77)==="altKey";if(this.isEnabled(e,t)){this.cleanUpActiveLinkDecoration();const s=this.getLinkOccurrence(e.target.position);s&&this.editor.changeDecorations(r=>{s.activate(r,i),this.activeLinkDecorationId=s.decorationId})}else this.cleanUpActiveLinkDecoration()}cleanUpActiveLinkDecoration(){const e=this.editor.getOption(77)==="altKey";if(this.activeLinkDecorationId){const t=this.currentOccurrences[this.activeLinkDecorationId];t&&this.editor.changeDecorations(i=>{t.deactivate(i,e)}),this.activeLinkDecorationId=null}}onEditorMouseUp(e){if(!this.isEnabled(e))return;const t=this.getLinkOccurrence(e.target.position);t&&this.openLinkOccurrence(t,e.hasSideBySideModifier,!0)}openLinkOccurrence(e,t,i=!1){if(!this.openerService)return;const{link:s}=e;s.resolve(Ft.None).then(r=>{if(typeof r=="string"&&this.editor.hasModel()){const o=this.editor.getModel().uri;if(o.scheme===wt.file&&r.startsWith(`${wt.file}:`)){const a=it.parse(r);if(a.scheme===wt.file){const l=nh(a);let c=null;l.startsWith("/./")?c=`.${l.substr(1)}`:l.startsWith("//./")&&(c=`.${l.substr(2)}`),c&&(r=Sje(o,c))}}}return this.openerService.open(r,{openToSide:t,fromUserGesture:i,allowContributedOpeners:!0,allowCommands:!0,fromWorkspace:!0})},r=>{const o=r instanceof Error?r.message:r;o==="invalid"?this.notificationService.warn(v("invalid.url","Failed to open this link because it is not well-formed: {0}",s.url.toString())):o==="missing"?this.notificationService.warn(v("missing.url","Failed to open this link because its target is missing.")):vt(r)})}getLinkOccurrence(e){if(!this.editor.hasModel()||!e)return null;const t=this.editor.getModel().getDecorationsInRange({startLineNumber:e.lineNumber,startColumn:e.column,endLineNumber:e.lineNumber,endColumn:e.column},0,!0);for(const i of t){const s=this.currentOccurrences[i.id];if(s)return s}return null}isEnabled(e,t){return!!(e.target.type===6&&(e.hasTriggerModifier||t&&t.keyCodeIsTriggerKey))}stop(){var e;this.computeLinks.cancel(),this.activeLinksList&&((e=this.activeLinksList)===null||e===void 0||e.dispose(),this.activeLinksList=null),this.computePromise&&(this.computePromise.cancel(),this.computePromise=null)}dispose(){super.dispose(),this.stop()}};zy.ID="editor.linkDetector";zy=IV=Tot([QI(1,_a),QI(2,is),QI(3,Ge),QI(4,Ul)],zy);const jne={general:yt.register({description:"detected-link",stickiness:1,collapseOnReplaceEdit:!0,inlineClassName:"detected-link"}),active:yt.register({description:"detected-link-active",stickiness:1,collapseOnReplaceEdit:!0,inlineClassName:"detected-link-active"})};class Mb{static decoration(e,t){return{range:e.range,options:Mb._getOptions(e,t,!1)}}static _getOptions(e,t,i){const s={...i?jne.active:jne.general};return s.hoverMessage=Not(e,t),s}constructor(e,t){this.link=e,this.decorationId=t}activate(e,t){e.changeDecorationOptions(this.decorationId,Mb._getOptions(this.link,t,!0))}deactivate(e,t){e.changeDecorationOptions(this.decorationId,Mb._getOptions(this.link,t,!1))}}function Not(n,e){const t=n.url&&/^command:/i.test(n.url.toString()),i=n.tooltip?n.tooltip:t?v("links.navigate.executeCmd","Execute command"):v("links.navigate.follow","Follow link"),s=e?Gt?v("links.navigate.kb.meta.mac","cmd + click"):v("links.navigate.kb.meta","ctrl + click"):Gt?v("links.navigate.kb.alt.mac","option + click"):v("links.navigate.kb.alt","alt + click");if(n.url){let r="";if(/^command:/i.test(n.url.toString())){const a=n.url.toString().match(/^command:([^?#]+)/);if(a){const l=a[1];r=v("tooltip.explanation","Execute command {0}",l)}}return new xr("",!0).appendLink(n.url.toString(!0).replace(/ /g,"%20"),i,r).appendMarkdown(` (${s})`)}else return new xr().appendText(`${i} (${s})`)}class Aot extends qe{constructor(){super({id:"editor.action.openLink",label:v("label","Open Link"),alias:"Open Link",precondition:void 0})}run(e,t){const i=zy.get(t);if(!i||!t.hasModel())return;const s=t.getSelections();for(const r of s){const o=i.getLinkOccurrence(r.getEndPosition());o&&i.openLinkOccurrence(o,!1)}}}ti(zy.ID,zy,1);Ae(Aot);class TV extends pe{constructor(e){super(),this._editor=e,this._register(this._editor.onMouseDown(t=>{const i=this._editor.getOption(116);i>=0&&t.target.type===6&&t.target.position.column>=i&&this._editor.updateOptions({stopRenderingLineAfter:-1})}))}}TV.ID="editor.contrib.longLinesHelper";ti(TV.ID,TV,2);const JI=U("editor.wordHighlightBackground",{dark:"#575757B8",light:"#57575740",hcDark:null,hcLight:null},v("wordHighlight","Background color of a symbol during read-access, like reading a variable. The color must not be opaque so as not to hide underlying decorations."),!0);U("editor.wordHighlightStrongBackground",{dark:"#004972B8",light:"#0e639c40",hcDark:null,hcLight:null},v("wordHighlightStrong","Background color of a symbol during write-access, like writing to a variable. The color must not be opaque so as not to hide underlying decorations."),!0);U("editor.wordHighlightTextBackground",{light:JI,dark:JI,hcDark:JI,hcLight:JI},v("wordHighlightText","Background color of a textual occurrence for a symbol. The color must not be opaque so as not to hide underlying decorations."),!0);const eT=U("editor.wordHighlightBorder",{light:null,dark:null,hcDark:Gi,hcLight:Gi},v("wordHighlightBorder","Border color of a symbol during read-access, like reading a variable."));U("editor.wordHighlightStrongBorder",{light:null,dark:null,hcDark:Gi,hcLight:Gi},v("wordHighlightStrongBorder","Border color of a symbol during write-access, like writing to a variable."));U("editor.wordHighlightTextBorder",{light:eT,dark:eT,hcDark:eT,hcLight:eT},v("wordHighlightTextBorder","Border color of a textual occurrence for a symbol."));const Pot=U("editorOverviewRuler.wordHighlightForeground",{dark:"#A0A0A0CC",light:"#A0A0A0CC",hcDark:"#A0A0A0CC",hcLight:"#A0A0A0CC"},v("overviewRulerWordHighlightForeground","Overview ruler marker color for symbol highlights. The color must not be opaque so as not to hide underlying decorations."),!0),Rot=U("editorOverviewRuler.wordHighlightStrongForeground",{dark:"#C0A0C0CC",light:"#C0A0C0CC",hcDark:"#C0A0C0CC",hcLight:"#C0A0C0CC"},v("overviewRulerWordHighlightStrongForeground","Overview ruler marker color for write-access symbol highlights. The color must not be opaque so as not to hide underlying decorations."),!0),Mot=U("editorOverviewRuler.wordHighlightTextForeground",{dark:vS,light:vS,hcDark:vS,hcLight:vS},v("overviewRulerWordHighlightTextForeground","Overview ruler marker color of a textual occurrence for a symbol. The color must not be opaque so as not to hide underlying decorations."),!0),Oot=yt.register({description:"word-highlight-strong",stickiness:1,className:"wordHighlightStrong",overviewRuler:{color:Sn(Rot),position:el.Center},minimap:{color:Sn(FO),position:sa.Inline}}),Fot=yt.register({description:"word-highlight-text",stickiness:1,className:"wordHighlightText",overviewRuler:{color:Sn(Mot),position:el.Center},minimap:{color:Sn(FO),position:sa.Inline}}),Bot=yt.register({description:"selection-highlight-overview",stickiness:1,className:"selectionHighlight",overviewRuler:{color:Sn(vS),position:el.Center},minimap:{color:Sn(FO),position:sa.Inline}}),Wot=yt.register({description:"selection-highlight",stickiness:1,className:"selectionHighlight"}),Vot=yt.register({description:"word-highlight",stickiness:1,className:"wordHighlight",overviewRuler:{color:Sn(Pot),position:el.Center},minimap:{color:Sn(FO),position:sa.Inline}});function Hot(n){return n===NL.Write?Oot:n===NL.Text?Fot:Vot}function $ot(n){return n?Wot:Bot}Nc((n,e)=>{const t=n.getColor(dq);t&&e.addRule(`.monaco-editor .selectionHighlight { background-color: ${t.transparent(.5)}; }`)});var zot=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},Uot=function(n,e){return function(t,i){e(t,i,n)}},NV;function Om(n,e){const t=e.filter(i=>!n.find(s=>s.equals(i)));if(t.length>=1){const i=t.map(r=>`line ${r.viewState.position.lineNumber} column ${r.viewState.position.column}`).join(", "),s=t.length===1?v("cursorAdded","Cursor added: {0}",i):v("cursorsAdded","Cursors added: {0}",i);Qp(s)}}class jot extends qe{constructor(){super({id:"editor.action.insertCursorAbove",label:v("mutlicursor.insertAbove","Add Cursor Above"),alias:"Add Cursor Above",precondition:void 0,kbOpts:{kbExpr:$.editorTextFocus,primary:2576,linux:{primary:1552,secondary:[3088]},weight:100},menuOpts:{menuId:B.MenubarSelectionMenu,group:"3_multi",title:v({key:"miInsertCursorAbove",comment:["&& denotes a mnemonic"]},"&&Add Cursor Above"),order:2}})}run(e,t,i){if(!t.hasModel())return;let s=!0;i&&i.logicalLine===!1&&(s=!1);const r=t._getViewModel();if(r.cursorConfig.readOnly)return;r.model.pushStackElement();const o=r.getCursorStates();r.setCursorStates(i.source,3,Ys.addCursorUp(r,o,s)),r.revealTopMostCursor(i.source),Om(o,r.getCursorStates())}}class qot extends qe{constructor(){super({id:"editor.action.insertCursorBelow",label:v("mutlicursor.insertBelow","Add Cursor Below"),alias:"Add Cursor Below",precondition:void 0,kbOpts:{kbExpr:$.editorTextFocus,primary:2578,linux:{primary:1554,secondary:[3090]},weight:100},menuOpts:{menuId:B.MenubarSelectionMenu,group:"3_multi",title:v({key:"miInsertCursorBelow",comment:["&& denotes a mnemonic"]},"A&&dd Cursor Below"),order:3}})}run(e,t,i){if(!t.hasModel())return;let s=!0;i&&i.logicalLine===!1&&(s=!1);const r=t._getViewModel();if(r.cursorConfig.readOnly)return;r.model.pushStackElement();const o=r.getCursorStates();r.setCursorStates(i.source,3,Ys.addCursorDown(r,o,s)),r.revealBottomMostCursor(i.source),Om(o,r.getCursorStates())}}class Kot extends qe{constructor(){super({id:"editor.action.insertCursorAtEndOfEachLineSelected",label:v("mutlicursor.insertAtEndOfEachLineSelected","Add Cursors to Line Ends"),alias:"Add Cursors to Line Ends",precondition:void 0,kbOpts:{kbExpr:$.editorTextFocus,primary:1575,weight:100},menuOpts:{menuId:B.MenubarSelectionMenu,group:"3_multi",title:v({key:"miInsertCursorAtEndOfEachLineSelected",comment:["&& denotes a mnemonic"]},"Add C&&ursors to Line Ends"),order:4}})}getCursorsForSelection(e,t,i){if(!e.isEmpty()){for(let s=e.startLineNumber;s<e.endLineNumber;s++){const r=t.getLineMaxColumn(s);i.push(new Ze(s,r,s,r))}e.endColumn>1&&i.push(new Ze(e.endLineNumber,e.endColumn,e.endLineNumber,e.endColumn))}}run(e,t){if(!t.hasModel())return;const i=t.getModel(),s=t.getSelections(),r=t._getViewModel(),o=r.getCursorStates(),a=[];s.forEach(l=>this.getCursorsForSelection(l,i,a)),a.length>0&&t.setSelections(a),Om(o,r.getCursorStates())}}class Got extends qe{constructor(){super({id:"editor.action.addCursorsToBottom",label:v("mutlicursor.addCursorsToBottom","Add Cursors To Bottom"),alias:"Add Cursors To Bottom",precondition:void 0})}run(e,t){if(!t.hasModel())return;const i=t.getSelections(),s=t.getModel().getLineCount(),r=[];for(let l=i[0].startLineNumber;l<=s;l++)r.push(new Ze(l,i[0].startColumn,l,i[0].endColumn));const o=t._getViewModel(),a=o.getCursorStates();r.length>0&&t.setSelections(r),Om(a,o.getCursorStates())}}class Yot extends qe{constructor(){super({id:"editor.action.addCursorsToTop",label:v("mutlicursor.addCursorsToTop","Add Cursors To Top"),alias:"Add Cursors To Top",precondition:void 0})}run(e,t){if(!t.hasModel())return;const i=t.getSelections(),s=[];for(let a=i[0].startLineNumber;a>=1;a--)s.push(new Ze(a,i[0].startColumn,a,i[0].endColumn));const r=t._getViewModel(),o=r.getCursorStates();s.length>0&&t.setSelections(s),Om(o,r.getCursorStates())}}class tT{constructor(e,t,i){this.selections=e,this.revealRange=t,this.revealScrollType=i}}class Sx{static create(e,t){if(!e.hasModel())return null;const i=t.getState();if(!e.hasTextFocus()&&i.isRevealed&&i.searchString.length>0)return new Sx(e,t,!1,i.searchString,i.wholeWord,i.matchCase,null);let s=!1,r,o;const a=e.getSelections();a.length===1&&a[0].isEmpty()?(s=!0,r=!0,o=!0):(r=i.wholeWord,o=i.matchCase);const l=e.getSelection();let c,u=null;if(l.isEmpty()){const h=e.getConfiguredWordAtPosition(l.getStartPosition());if(!h)return null;c=h.word,u=new Ze(l.startLineNumber,h.startColumn,l.startLineNumber,h.endColumn)}else c=e.getModel().getValueInRange(l).replace(/\r\n/g,` +`);return new Sx(e,t,s,c,r,o,u)}constructor(e,t,i,s,r,o,a){this._editor=e,this.findController=t,this.isDisconnectedFromFindController=i,this.searchText=s,this.wholeWord=r,this.matchCase=o,this.currentMatch=a}addSelectionToNextFindMatch(){if(!this._editor.hasModel())return null;const e=this._getNextMatch();if(!e)return null;const t=this._editor.getSelections();return new tT(t.concat(e),e,0)}moveSelectionToNextFindMatch(){if(!this._editor.hasModel())return null;const e=this._getNextMatch();if(!e)return null;const t=this._editor.getSelections();return new tT(t.slice(0,t.length-1).concat(e),e,0)}_getNextMatch(){if(!this._editor.hasModel())return null;if(this.currentMatch){const s=this.currentMatch;return this.currentMatch=null,s}this.findController.highlightFindOptions();const e=this._editor.getSelections(),t=e[e.length-1],i=this._editor.getModel().findNextMatch(this.searchText,t.getEndPosition(),!1,this.matchCase,this.wholeWord?this._editor.getOption(129):null,!1);return i?new Ze(i.range.startLineNumber,i.range.startColumn,i.range.endLineNumber,i.range.endColumn):null}addSelectionToPreviousFindMatch(){if(!this._editor.hasModel())return null;const e=this._getPreviousMatch();if(!e)return null;const t=this._editor.getSelections();return new tT(t.concat(e),e,0)}moveSelectionToPreviousFindMatch(){if(!this._editor.hasModel())return null;const e=this._getPreviousMatch();if(!e)return null;const t=this._editor.getSelections();return new tT(t.slice(0,t.length-1).concat(e),e,0)}_getPreviousMatch(){if(!this._editor.hasModel())return null;if(this.currentMatch){const s=this.currentMatch;return this.currentMatch=null,s}this.findController.highlightFindOptions();const e=this._editor.getSelections(),t=e[e.length-1],i=this._editor.getModel().findPreviousMatch(this.searchText,t.getStartPosition(),!1,this.matchCase,this.wholeWord?this._editor.getOption(129):null,!1);return i?new Ze(i.range.startLineNumber,i.range.startColumn,i.range.endLineNumber,i.range.endColumn):null}selectAll(e){if(!this._editor.hasModel())return[];this.findController.highlightFindOptions();const t=this._editor.getModel();return e?t.findMatches(this.searchText,e,!1,this.matchCase,this.wholeWord?this._editor.getOption(129):null,!1,1073741824):t.findMatches(this.searchText,!0,!1,this.matchCase,this.wholeWord?this._editor.getOption(129):null,!1,1073741824)}}class ev extends pe{static get(e){return e.getContribution(ev.ID)}constructor(e){super(),this._sessionDispose=this._register(new xe),this._editor=e,this._ignoreSelectionChange=!1,this._session=null}dispose(){this._endSession(),super.dispose()}_beginSessionIfNeeded(e){if(!this._session){const t=Sx.create(this._editor,e);if(!t)return;this._session=t;const i={searchString:this._session.searchText};this._session.isDisconnectedFromFindController&&(i.wholeWordOverride=1,i.matchCaseOverride=1,i.isRegexOverride=2),e.getState().change(i,!1),this._sessionDispose.add(this._editor.onDidChangeCursorSelection(s=>{this._ignoreSelectionChange||this._endSession()})),this._sessionDispose.add(this._editor.onDidBlurEditorText(()=>{this._endSession()})),this._sessionDispose.add(e.getState().onFindReplaceStateChange(s=>{(s.matchCase||s.wholeWord)&&this._endSession()}))}}_endSession(){if(this._sessionDispose.clear(),this._session&&this._session.isDisconnectedFromFindController){const e={wholeWordOverride:0,matchCaseOverride:0,isRegexOverride:0};this._session.findController.getState().change(e,!1)}this._session=null}_setSelections(e){this._ignoreSelectionChange=!0,this._editor.setSelections(e),this._ignoreSelectionChange=!1}_expandEmptyToWord(e,t){if(!t.isEmpty())return t;const i=this._editor.getConfiguredWordAtPosition(t.getStartPosition());return i?new Ze(t.startLineNumber,i.startColumn,t.startLineNumber,i.endColumn):t}_applySessionResult(e){e&&(this._setSelections(e.selections),e.revealRange&&this._editor.revealRangeInCenterIfOutsideViewport(e.revealRange,e.revealScrollType))}getSession(e){return this._session}addSelectionToNextFindMatch(e){if(this._editor.hasModel()){if(!this._session){const t=this._editor.getSelections();if(t.length>1){const s=e.getState().matchCase;if(!Xve(this._editor.getModel(),t,s)){const o=this._editor.getModel(),a=[];for(let l=0,c=t.length;l<c;l++)a[l]=this._expandEmptyToWord(o,t[l]);this._editor.setSelections(a);return}}}this._beginSessionIfNeeded(e),this._session&&this._applySessionResult(this._session.addSelectionToNextFindMatch())}}addSelectionToPreviousFindMatch(e){this._beginSessionIfNeeded(e),this._session&&this._applySessionResult(this._session.addSelectionToPreviousFindMatch())}moveSelectionToNextFindMatch(e){this._beginSessionIfNeeded(e),this._session&&this._applySessionResult(this._session.moveSelectionToNextFindMatch())}moveSelectionToPreviousFindMatch(e){this._beginSessionIfNeeded(e),this._session&&this._applySessionResult(this._session.moveSelectionToPreviousFindMatch())}selectAll(e){if(!this._editor.hasModel())return;let t=null;const i=e.getState();if(i.isRevealed&&i.searchString.length>0&&i.isRegex){const s=this._editor.getModel();i.searchScope?t=s.findMatches(i.searchString,i.searchScope,i.isRegex,i.matchCase,i.wholeWord?this._editor.getOption(129):null,!1,1073741824):t=s.findMatches(i.searchString,!0,i.isRegex,i.matchCase,i.wholeWord?this._editor.getOption(129):null,!1,1073741824)}else{if(this._beginSessionIfNeeded(e),!this._session)return;t=this._session.selectAll(i.searchScope)}if(t.length>0){const s=this._editor.getSelection();for(let r=0,o=t.length;r<o;r++){const a=t[r];if(a.range.intersectRanges(s)){t[r]=t[0],t[0]=a;break}}this._setSelections(t.map(r=>new Ze(r.range.startLineNumber,r.range.startColumn,r.range.endLineNumber,r.range.endColumn)))}}}ev.ID="editor.contrib.multiCursorController";class UC extends qe{run(e,t){const i=ev.get(t);if(!i)return;const s=t._getViewModel();if(s){const r=s.getCursorStates(),o=mo.get(t);if(o)this._run(i,o);else{const a=e.get(at).createInstance(mo,t);this._run(i,a),a.dispose()}Om(r,s.getCursorStates())}}}class Zot extends UC{constructor(){super({id:"editor.action.addSelectionToNextFindMatch",label:v("addSelectionToNextFindMatch","Add Selection To Next Find Match"),alias:"Add Selection To Next Find Match",precondition:void 0,kbOpts:{kbExpr:$.focus,primary:2082,weight:100},menuOpts:{menuId:B.MenubarSelectionMenu,group:"3_multi",title:v({key:"miAddSelectionToNextFindMatch",comment:["&& denotes a mnemonic"]},"Add &&Next Occurrence"),order:5}})}_run(e,t){e.addSelectionToNextFindMatch(t)}}class Xot extends UC{constructor(){super({id:"editor.action.addSelectionToPreviousFindMatch",label:v("addSelectionToPreviousFindMatch","Add Selection To Previous Find Match"),alias:"Add Selection To Previous Find Match",precondition:void 0,menuOpts:{menuId:B.MenubarSelectionMenu,group:"3_multi",title:v({key:"miAddSelectionToPreviousFindMatch",comment:["&& denotes a mnemonic"]},"Add P&&revious Occurrence"),order:6}})}_run(e,t){e.addSelectionToPreviousFindMatch(t)}}class Qot extends UC{constructor(){super({id:"editor.action.moveSelectionToNextFindMatch",label:v("moveSelectionToNextFindMatch","Move Last Selection To Next Find Match"),alias:"Move Last Selection To Next Find Match",precondition:void 0,kbOpts:{kbExpr:$.focus,primary:ws(2089,2082),weight:100}})}_run(e,t){e.moveSelectionToNextFindMatch(t)}}class Jot extends UC{constructor(){super({id:"editor.action.moveSelectionToPreviousFindMatch",label:v("moveSelectionToPreviousFindMatch","Move Last Selection To Previous Find Match"),alias:"Move Last Selection To Previous Find Match",precondition:void 0})}_run(e,t){e.moveSelectionToPreviousFindMatch(t)}}class eat extends UC{constructor(){super({id:"editor.action.selectHighlights",label:v("selectAllOccurrencesOfFindMatch","Select All Occurrences of Find Match"),alias:"Select All Occurrences of Find Match",precondition:void 0,kbOpts:{kbExpr:$.focus,primary:3114,weight:100},menuOpts:{menuId:B.MenubarSelectionMenu,group:"3_multi",title:v({key:"miSelectHighlights",comment:["&& denotes a mnemonic"]},"Select All &&Occurrences"),order:7}})}_run(e,t){e.selectAll(t)}}class tat extends UC{constructor(){super({id:"editor.action.changeAll",label:v("changeAll.label","Change All Occurrences"),alias:"Change All Occurrences",precondition:ke.and($.writable,$.editorTextFocus),kbOpts:{kbExpr:$.editorTextFocus,primary:2108,weight:100},contextMenuOpts:{group:"1_modification",order:1.2}})}_run(e,t){e.selectAll(t)}}class iat{constructor(e,t,i,s,r){this._model=e,this._searchText=t,this._matchCase=i,this._wordSeparators=s,this._modelVersionId=this._model.getVersionId(),this._cachedFindMatches=null,r&&this._model===r._model&&this._searchText===r._searchText&&this._matchCase===r._matchCase&&this._wordSeparators===r._wordSeparators&&this._modelVersionId===r._modelVersionId&&(this._cachedFindMatches=r._cachedFindMatches)}findMatches(){return this._cachedFindMatches===null&&(this._cachedFindMatches=this._model.findMatches(this._searchText,!0,!1,this._matchCase,this._wordSeparators,!1).map(e=>e.range),this._cachedFindMatches.sort(M.compareRangesUsingStarts)),this._cachedFindMatches}}let kx=NV=class extends pe{constructor(e,t){super(),this._languageFeaturesService=t,this.editor=e,this._isEnabled=e.getOption(107),this._decorations=e.createDecorationsCollection(),this.updateSoon=this._register(new Ei(()=>this._update(),300)),this.state=null,this._register(e.onDidChangeConfiguration(s=>{this._isEnabled=e.getOption(107)})),this._register(e.onDidChangeCursorSelection(s=>{this._isEnabled&&(s.selection.isEmpty()?s.reason===3?(this.state&&this._setState(null),this.updateSoon.schedule()):this._setState(null):this._update())})),this._register(e.onDidChangeModel(s=>{this._setState(null)})),this._register(e.onDidChangeModelContent(s=>{this._isEnabled&&this.updateSoon.schedule()}));const i=mo.get(e);i&&this._register(i.getState().onFindReplaceStateChange(s=>{this._update()})),this.updateSoon.schedule()}_update(){this._setState(NV._createState(this.state,this._isEnabled,this.editor))}static _createState(e,t,i){if(!t||!i.hasModel())return null;const s=i.getSelection();if(s.startLineNumber!==s.endLineNumber)return null;const r=ev.get(i);if(!r)return null;const o=mo.get(i);if(!o)return null;let a=r.getSession(o);if(!a){const u=i.getSelections();if(u.length>1){const d=o.getState().matchCase;if(!Xve(i.getModel(),u,d))return null}a=Sx.create(i,o)}if(!a||a.currentMatch||/^[ \t]+$/.test(a.searchText)||a.searchText.length>200)return null;const l=o.getState(),c=l.matchCase;if(l.isRevealed){let u=l.searchString;c||(u=u.toLowerCase());let h=a.searchText;if(c||(h=h.toLowerCase()),u===h&&a.matchCase===l.matchCase&&a.wholeWord===l.wholeWord&&!l.isRegex)return null}return new iat(i.getModel(),a.searchText,a.matchCase,a.wholeWord?i.getOption(129):null,e)}_setState(e){if(this.state=e,!this.state){this._decorations.clear();return}if(!this.editor.hasModel())return;const t=this.editor.getModel();if(t.isTooLargeForTokenization())return;const i=this.state.findMatches(),s=this.editor.getSelections();s.sort(M.compareRangesUsingStarts);const r=[];for(let c=0,u=0,h=i.length,d=s.length;c<h;){const f=i[c];if(u>=d)r.push(f),c++;else{const g=M.compareRangesUsingStarts(f,s[u]);g<0?((s[u].isEmpty()||!M.areIntersecting(f,s[u]))&&r.push(f),c++):(g>0||c++,u++)}}const o=this.editor.getOption(80)!=="off",a=this._languageFeaturesService.documentHighlightProvider.has(t)&&o,l=r.map(c=>({range:c,options:$ot(a)}));this._decorations.set(l)}dispose(){this._setState(null),super.dispose()}};kx.ID="editor.contrib.selectionHighlighter";kx=NV=zot([Uot(1,Ge)],kx);function Xve(n,e,t){const i=qne(n,e[0],!t);for(let s=1,r=e.length;s<r;s++){const o=e[s];if(o.isEmpty())return!1;const a=qne(n,o,!t);if(i!==a)return!1}return!0}function qne(n,e,t){const i=n.getValueInRange(e);return t?i.toLowerCase():i}class nat extends qe{constructor(){super({id:"editor.action.focusNextCursor",label:v("mutlicursor.focusNextCursor","Focus Next Cursor"),metadata:{description:v("mutlicursor.focusNextCursor.description","Focuses the next cursor"),args:[]},alias:"Focus Next Cursor",precondition:void 0})}run(e,t,i){if(!t.hasModel())return;const s=t._getViewModel();if(s.cursorConfig.readOnly)return;s.model.pushStackElement();const r=Array.from(s.getCursorStates()),o=r.shift();o&&(r.push(o),s.setCursorStates(i.source,3,r),s.revealPrimaryCursor(i.source,!0),Om(r,s.getCursorStates()))}}class sat extends qe{constructor(){super({id:"editor.action.focusPreviousCursor",label:v("mutlicursor.focusPreviousCursor","Focus Previous Cursor"),metadata:{description:v("mutlicursor.focusPreviousCursor.description","Focuses the previous cursor"),args:[]},alias:"Focus Previous Cursor",precondition:void 0})}run(e,t,i){if(!t.hasModel())return;const s=t._getViewModel();if(s.cursorConfig.readOnly)return;s.model.pushStackElement();const r=Array.from(s.getCursorStates()),o=r.pop();o&&(r.unshift(o),s.setCursorStates(i.source,3,r),s.revealPrimaryCursor(i.source,!0),Om(r,s.getCursorStates()))}}ti(ev.ID,ev,4);ti(kx.ID,kx,1);Ae(jot);Ae(qot);Ae(Kot);Ae(Zot);Ae(Xot);Ae(Qot);Ae(Jot);Ae(eat);Ae(tat);Ae(Got);Ae(Yot);Ae(nat);Ae(sat);const tv={Visible:new ze("parameterHintsVisible",!1),MultipleSignatures:new ze("parameterHintsMultipleSignatures",!1)};async function Qve(n,e,t,i,s){const r=n.ordered(e);for(const o of r)try{const a=await o.provideSignatureHelp(e,t,s,i);if(a)return a}catch(a){Jn(a)}}Yt.registerCommand("_executeSignatureHelpProvider",async(n,...e)=>{const[t,i,s]=e;Si(it.isUri(t)),Si(he.isIPosition(i)),Si(typeof s=="string"||!s);const r=n.get(Ge),o=await n.get(Bo).createModelReference(t);try{const a=await Qve(r.signatureHelpProvider,o.object.textEditorModel,he.lift(i),{triggerKind:ed.Invoke,isRetrigger:!1,triggerCharacter:s},Ft.None);return a?(setTimeout(()=>a.dispose(),0),a.value):void 0}finally{o.dispose()}});var $g;(function(n){n.Default={type:0};class e{constructor(s,r){this.request=s,this.previouslyActiveHints=r,this.type=2}}n.Pending=e;class t{constructor(s){this.hints=s,this.type=1}}n.Active=t})($g||($g={}));class eF extends pe{constructor(e,t,i=eF.DEFAULT_DELAY){super(),this._onChangedHints=this._register(new ue),this.onChangedHints=this._onChangedHints.event,this.triggerOnType=!1,this._state=$g.Default,this._pendingTriggers=[],this._lastSignatureHelpResult=this._register(new qs),this.triggerChars=new UA,this.retriggerChars=new UA,this.triggerId=0,this.editor=e,this.providers=t,this.throttledDelayer=new Sc(i),this._register(this.editor.onDidBlurEditorWidget(()=>this.cancel())),this._register(this.editor.onDidChangeConfiguration(()=>this.onEditorConfigurationChange())),this._register(this.editor.onDidChangeModel(s=>this.onModelChanged())),this._register(this.editor.onDidChangeModelLanguage(s=>this.onModelChanged())),this._register(this.editor.onDidChangeCursorSelection(s=>this.onCursorChange(s))),this._register(this.editor.onDidChangeModelContent(s=>this.onModelContentChange())),this._register(this.providers.onDidChange(this.onModelChanged,this)),this._register(this.editor.onDidType(s=>this.onDidType(s))),this.onEditorConfigurationChange(),this.onModelChanged()}get state(){return this._state}set state(e){this._state.type===2&&this._state.request.cancel(),this._state=e}cancel(e=!1){this.state=$g.Default,this.throttledDelayer.cancel(),e||this._onChangedHints.fire(void 0)}trigger(e,t){const i=this.editor.getModel();if(!i||!this.providers.has(i))return;const s=++this.triggerId;this._pendingTriggers.push(e),this.throttledDelayer.trigger(()=>this.doTrigger(s),t).catch(vt)}next(){if(this.state.type!==1)return;const e=this.state.hints.signatures.length,t=this.state.hints.activeSignature,i=t%e===e-1,s=this.editor.getOption(85).cycle;if((e<2||i)&&!s){this.cancel();return}this.updateActiveSignature(i&&s?0:t+1)}previous(){if(this.state.type!==1)return;const e=this.state.hints.signatures.length,t=this.state.hints.activeSignature,i=t===0,s=this.editor.getOption(85).cycle;if((e<2||i)&&!s){this.cancel();return}this.updateActiveSignature(i&&s?e-1:t-1)}updateActiveSignature(e){this.state.type===1&&(this.state=new $g.Active({...this.state.hints,activeSignature:e}),this._onChangedHints.fire(this.state.hints))}async doTrigger(e){const t=this.state.type===1||this.state.type===2,i=this.getLastActiveHints();if(this.cancel(!0),this._pendingTriggers.length===0)return!1;const s=this._pendingTriggers.reduce(rat);this._pendingTriggers=[];const r={triggerKind:s.triggerKind,triggerCharacter:s.triggerCharacter,isRetrigger:t,activeSignatureHelp:i};if(!this.editor.hasModel())return!1;const o=this.editor.getModel(),a=this.editor.getPosition();this.state=new $g.Pending(Ns(l=>Qve(this.providers,o,a,r,l)),i);try{const l=await this.state.request;return e!==this.triggerId?(l==null||l.dispose(),!1):!l||!l.value.signatures||l.value.signatures.length===0?(l==null||l.dispose(),this._lastSignatureHelpResult.clear(),this.cancel(),!1):(this.state=new $g.Active(l.value),this._lastSignatureHelpResult.value=l,this._onChangedHints.fire(this.state.hints),!0)}catch(l){return e===this.triggerId&&(this.state=$g.Default),vt(l),!1}}getLastActiveHints(){switch(this.state.type){case 1:return this.state.hints;case 2:return this.state.previouslyActiveHints;default:return}}get isTriggered(){return this.state.type===1||this.state.type===2||this.throttledDelayer.isTriggered()}onModelChanged(){this.cancel(),this.triggerChars.clear(),this.retriggerChars.clear();const e=this.editor.getModel();if(e)for(const t of this.providers.ordered(e)){for(const i of t.signatureHelpTriggerCharacters||[])if(i.length){const s=i.charCodeAt(0);this.triggerChars.add(s),this.retriggerChars.add(s)}for(const i of t.signatureHelpRetriggerCharacters||[])i.length&&this.retriggerChars.add(i.charCodeAt(0))}}onDidType(e){if(!this.triggerOnType)return;const t=e.length-1,i=e.charCodeAt(t);(this.triggerChars.has(i)||this.isTriggered&&this.retriggerChars.has(i))&&this.trigger({triggerKind:ed.TriggerCharacter,triggerCharacter:e.charAt(t)})}onCursorChange(e){e.source==="mouse"?this.cancel():this.isTriggered&&this.trigger({triggerKind:ed.ContentChange})}onModelContentChange(){this.isTriggered&&this.trigger({triggerKind:ed.ContentChange})}onEditorConfigurationChange(){this.triggerOnType=this.editor.getOption(85).enabled,this.triggerOnType||this.cancel()}dispose(){this.cancel(!0),super.dispose()}}eF.DEFAULT_DELAY=120;function rat(n,e){switch(e.triggerKind){case ed.Invoke:return e;case ed.ContentChange:return n;case ed.TriggerCharacter:default:return e}}var oat=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},q3=function(n,e){return function(t,i){e(t,i,n)}},AV;const wa=Te,aat=Gn("parameter-hints-next",Pe.chevronDown,v("parameterHintsNextIcon","Icon for show next parameter hint.")),lat=Gn("parameter-hints-previous",Pe.chevronUp,v("parameterHintsPreviousIcon","Icon for show previous parameter hint."));let cR=AV=class extends pe{constructor(e,t,i,s,r){super(),this.editor=e,this.model=t,this.renderDisposeables=this._register(new xe),this.visible=!1,this.announcedLabel=null,this.allowEditorOverflow=!0,this.markdownRenderer=this._register(new Qf({editor:e},r,s)),this.keyVisible=tv.Visible.bindTo(i),this.keyMultipleSignatures=tv.MultipleSignatures.bindTo(i)}createParameterHintDOMNodes(){const e=wa(".editor-widget.parameter-hints-widget"),t=Le(e,wa(".phwrapper"));t.tabIndex=-1;const i=Le(t,wa(".controls")),s=Le(i,wa(".button"+nt.asCSSSelector(lat))),r=Le(i,wa(".overloads")),o=Le(i,wa(".button"+nt.asCSSSelector(aat)));this._register(Ce(s,"click",d=>{Tt.stop(d),this.previous()})),this._register(Ce(o,"click",d=>{Tt.stop(d),this.next()}));const a=wa(".body"),l=new CE(a,{alwaysConsumeMouseWheel:!0});this._register(l),t.appendChild(l.getDomNode());const c=Le(a,wa(".signature")),u=Le(a,wa(".docs"));e.style.userSelect="text",this.domNodes={element:e,signature:c,overloads:r,docs:u,scrollbar:l},this.editor.addContentWidget(this),this.hide(),this._register(this.editor.onDidChangeCursorSelection(d=>{this.visible&&this.editor.layoutContentWidget(this)}));const h=()=>{if(!this.domNodes)return;const d=this.editor.getOption(50);this.domNodes.element.style.fontSize=`${d.fontSize}px`,this.domNodes.element.style.lineHeight=`${d.lineHeight/d.fontSize}`};h(),this._register(Ve.chain(this.editor.onDidChangeConfiguration.bind(this.editor),d=>d.filter(f=>f.hasChanged(50)))(h)),this._register(this.editor.onDidLayoutChange(d=>this.updateMaxHeight())),this.updateMaxHeight()}show(){this.visible||(this.domNodes||this.createParameterHintDOMNodes(),this.keyVisible.set(!0),this.visible=!0,setTimeout(()=>{var e;(e=this.domNodes)===null||e===void 0||e.element.classList.add("visible")},100),this.editor.layoutContentWidget(this))}hide(){var e;this.renderDisposeables.clear(),this.visible&&(this.keyVisible.reset(),this.visible=!1,this.announcedLabel=null,(e=this.domNodes)===null||e===void 0||e.element.classList.remove("visible"),this.editor.layoutContentWidget(this))}getPosition(){return this.visible?{position:this.editor.getPosition(),preference:[1,2]}:null}render(e){var t;if(this.renderDisposeables.clear(),!this.domNodes)return;const i=e.signatures.length>1;this.domNodes.element.classList.toggle("multiple",i),this.keyMultipleSignatures.set(i),this.domNodes.signature.innerText="",this.domNodes.docs.innerText="";const s=e.signatures[e.activeSignature];if(!s)return;const r=Le(this.domNodes.signature,wa(".code")),o=this.editor.getOption(50);r.style.fontSize=`${o.fontSize}px`,r.style.fontFamily=o.fontFamily;const a=s.parameters.length>0,l=(t=s.activeParameter)!==null&&t!==void 0?t:e.activeParameter;if(a)this.renderParameters(r,s,l);else{const h=Le(r,wa("span"));h.textContent=s.label}const c=s.parameters[l];if(c!=null&&c.documentation){const h=wa("span.documentation");if(typeof c.documentation=="string")h.textContent=c.documentation;else{const d=this.renderMarkdownDocs(c.documentation);h.appendChild(d.element)}Le(this.domNodes.docs,wa("p",{},h))}if(s.documentation!==void 0)if(typeof s.documentation=="string")Le(this.domNodes.docs,wa("p",{},s.documentation));else{const h=this.renderMarkdownDocs(s.documentation);Le(this.domNodes.docs,h.element)}const u=this.hasDocs(s,c);if(this.domNodes.signature.classList.toggle("has-docs",u),this.domNodes.docs.classList.toggle("empty",!u),this.domNodes.overloads.textContent=String(e.activeSignature+1).padStart(e.signatures.length.toString().length,"0")+"/"+e.signatures.length,c){let h="";const d=s.parameters[l];Array.isArray(d.label)?h=s.label.substring(d.label[0],d.label[1]):h=d.label,d.documentation&&(h+=typeof d.documentation=="string"?`, ${d.documentation}`:`, ${d.documentation.value}`),s.documentation&&(h+=typeof s.documentation=="string"?`, ${s.documentation}`:`, ${s.documentation.value}`),this.announcedLabel!==h&&(ha(v("hint","{0}, hint",h)),this.announcedLabel=h)}this.editor.layoutContentWidget(this),this.domNodes.scrollbar.scanDomNode()}renderMarkdownDocs(e){const t=this.renderDisposeables.add(this.markdownRenderer.render(e,{asyncRenderCallback:()=>{var i;(i=this.domNodes)===null||i===void 0||i.scrollbar.scanDomNode()}}));return t.element.classList.add("markdown-docs"),t}hasDocs(e,t){return!!(t&&typeof t.documentation=="string"&&Xg(t.documentation).length>0||t&&typeof t.documentation=="object"&&Xg(t.documentation).value.length>0||e.documentation&&typeof e.documentation=="string"&&Xg(e.documentation).length>0||e.documentation&&typeof e.documentation=="object"&&Xg(e.documentation.value).length>0)}renderParameters(e,t,i){const[s,r]=this.getParameterLabelOffsets(t,i),o=document.createElement("span");o.textContent=t.label.substring(0,s);const a=document.createElement("span");a.textContent=t.label.substring(s,r),a.className="parameter active";const l=document.createElement("span");l.textContent=t.label.substring(r),Le(e,o,a,l)}getParameterLabelOffsets(e,t){const i=e.parameters[t];if(i){if(Array.isArray(i.label))return i.label;if(i.label.length){const s=new RegExp(`(\\W|^)${Qa(i.label)}(?=\\W|$)`,"g");s.test(e.label);const r=s.lastIndex-i.label.length;return r>=0?[r,s.lastIndex]:[0,0]}else return[0,0]}else return[0,0]}next(){this.editor.focus(),this.model.next()}previous(){this.editor.focus(),this.model.previous()}getDomNode(){return this.domNodes||this.createParameterHintDOMNodes(),this.domNodes.element}getId(){return AV.ID}updateMaxHeight(){if(!this.domNodes)return;const t=`${Math.max(this.editor.getLayoutInfo().height/4,250)}px`;this.domNodes.element.style.maxHeight=t;const i=this.domNodes.element.getElementsByClassName("phwrapper");i.length&&(i[0].style.maxHeight=t)}};cR.ID="editor.widget.parameterHintsWidget";cR=AV=oat([q3(2,ft),q3(3,_a),q3(4,sn)],cR);U("editorHoverWidget.highlightForeground",{dark:hc,light:hc,hcDark:hc,hcLight:hc},v("editorHoverWidgetHighlightForeground","Foreground color of the active item in the parameter hint."));var cat=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},Kne=function(n,e){return function(t,i){e(t,i,n)}},PV;let iv=PV=class extends pe{static get(e){return e.getContribution(PV.ID)}constructor(e,t,i){super(),this.editor=e,this.model=this._register(new eF(e,i.signatureHelpProvider)),this._register(this.model.onChangedHints(s=>{var r;s?(this.widget.value.show(),this.widget.value.render(s)):(r=this.widget.rawValue)===null||r===void 0||r.hide()})),this.widget=new Im(()=>this._register(t.createInstance(cR,this.editor,this.model)))}cancel(){this.model.cancel()}previous(){var e;(e=this.widget.rawValue)===null||e===void 0||e.previous()}next(){var e;(e=this.widget.rawValue)===null||e===void 0||e.next()}trigger(e){this.model.trigger(e,0)}};iv.ID="editor.controller.parameterHints";iv=PV=cat([Kne(1,at),Kne(2,Ge)],iv);class uat extends qe{constructor(){super({id:"editor.action.triggerParameterHints",label:v("parameterHints.trigger.label","Trigger Parameter Hints"),alias:"Trigger Parameter Hints",precondition:$.hasSignatureHelpProvider,kbOpts:{kbExpr:$.editorTextFocus,primary:3082,weight:100}})}run(e,t){const i=iv.get(t);i==null||i.trigger({triggerKind:ed.Invoke})}}ti(iv.ID,iv,2);Ae(uat);const wG=175,SG=Ks.bindToContribution(iv.get);Be(new SG({id:"closeParameterHints",precondition:tv.Visible,handler:n=>n.cancel(),kbOpts:{weight:wG,kbExpr:$.focus,primary:9,secondary:[1033]}}));Be(new SG({id:"showPrevParameterHint",precondition:ke.and(tv.Visible,tv.MultipleSignatures),handler:n=>n.previous(),kbOpts:{weight:wG,kbExpr:$.focus,primary:16,secondary:[528],mac:{primary:16,secondary:[528,302]}}}));Be(new SG({id:"showNextParameterHint",precondition:ke.and(tv.Visible,tv.MultipleSignatures),handler:n=>n.next(),kbOpts:{weight:wG,kbExpr:$.focus,primary:18,secondary:[530],mac:{primary:18,secondary:[530,300]}}}));var hat=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},K3=function(n,e){return function(t,i){e(t,i,n)}};const tF=new ze("renameInputVisible",!1,v("renameInputVisible","Whether the rename input widget is visible"));let RV=class{constructor(e,t,i,s,r){this._editor=e,this._acceptKeybindings=t,this._themeService=i,this._keybindingService=s,this._disposables=new xe,this.allowEditorOverflow=!0,this._visibleContextKey=tF.bindTo(r),this._editor.addContentWidget(this),this._disposables.add(this._editor.onDidChangeConfiguration(o=>{o.hasChanged(50)&&this._updateFont()})),this._disposables.add(i.onDidColorThemeChange(this._updateStyles,this))}dispose(){this._disposables.dispose(),this._editor.removeContentWidget(this)}getId(){return"__renameInputWidget"}getDomNode(){return this._domNode||(this._domNode=document.createElement("div"),this._domNode.className="monaco-editor rename-box",this._input=document.createElement("input"),this._input.className="rename-input",this._input.type="text",this._input.setAttribute("aria-label",v("renameAriaLabel","Rename input. Type new name and press Enter to commit.")),this._domNode.appendChild(this._input),this._label=document.createElement("div"),this._label.className="rename-label",this._domNode.appendChild(this._label),this._updateFont(),this._updateStyles(this._themeService.getColorTheme())),this._domNode}_updateStyles(e){var t,i,s,r;if(!this._input||!this._domNode)return;const o=e.getColor(Ah),a=e.getColor(cq);this._domNode.style.backgroundColor=String((t=e.getColor(Rn))!==null&&t!==void 0?t:""),this._domNode.style.boxShadow=o?` 0 0 8px 2px ${o}`:"",this._domNode.style.border=a?`1px solid ${a}`:"",this._domNode.style.color=String((i=e.getColor(ppe))!==null&&i!==void 0?i:""),this._input.style.backgroundColor=String((s=e.getColor(gpe))!==null&&s!==void 0?s:"");const l=e.getColor(mpe);this._input.style.borderWidth=l?"1px":"0px",this._input.style.borderStyle=l?"solid":"none",this._input.style.borderColor=(r=l==null?void 0:l.toString())!==null&&r!==void 0?r:"none"}_updateFont(){if(!this._input||!this._label)return;const e=this._editor.getOption(50);this._input.style.fontFamily=e.fontFamily,this._input.style.fontWeight=e.fontWeight,this._input.style.fontSize=`${e.fontSize}px`,this._label.style.fontSize=`${e.fontSize*.8}px`}getPosition(){return this._visible?{position:this._position,preference:[2,1]}:null}beforeRender(){var e,t;const[i,s]=this._acceptKeybindings;return this._label.innerText=v({key:"label",comment:['placeholders are keybindings, e.g "F2 to Rename, Shift+F2 to Preview"']},"{0} to Rename, {1} to Preview",(e=this._keybindingService.lookupKeybinding(i))===null||e===void 0?void 0:e.getLabel(),(t=this._keybindingService.lookupKeybinding(s))===null||t===void 0?void 0:t.getLabel()),null}afterRender(e){e||this.cancelInput(!0)}acceptInput(e){var t;(t=this._currentAcceptInput)===null||t===void 0||t.call(this,e)}cancelInput(e){var t;(t=this._currentCancelInput)===null||t===void 0||t.call(this,e)}getInput(e,t,i,s,r,o){this._domNode.classList.toggle("preview",r),this._position=new he(e.startLineNumber,e.startColumn),this._input.value=t,this._input.setAttribute("selectionStart",i.toString()),this._input.setAttribute("selectionEnd",s.toString()),this._input.size=Math.max((e.endColumn-e.startColumn)*1.1,20);const a=new xe;return new Promise(l=>{this._currentCancelInput=c=>(this._currentAcceptInput=void 0,this._currentCancelInput=void 0,l(c),!0),this._currentAcceptInput=c=>{if(this._input.value.trim().length===0||this._input.value===t){this.cancelInput(!0);return}this._currentAcceptInput=void 0,this._currentCancelInput=void 0,l({newName:this._input.value,wantsPreview:r&&c})},a.add(o.onCancellationRequested(()=>this.cancelInput(!0))),a.add(this._editor.onDidBlurEditorWidget(()=>{var c;return this.cancelInput(!(!((c=this._domNode)===null||c===void 0)&&c.ownerDocument.hasFocus()))})),this._show()}).finally(()=>{a.dispose(),this._hide()})}_show(){this._editor.revealLineInCenterIfOutsideViewport(this._position.lineNumber,0),this._visible=!0,this._visibleContextKey.set(!0),this._editor.layoutContentWidget(this),setTimeout(()=>{this._input.focus(),this._input.setSelectionRange(parseInt(this._input.getAttribute("selectionStart")),parseInt(this._input.getAttribute("selectionEnd")))},100)}_hide(){this._visible=!1,this._visibleContextKey.reset(),this._editor.layoutContentWidget(this)}};RV=hat([K3(2,Ms),K3(3,Di),K3(4,ft)],RV);var dat=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},i1=function(n,e){return function(t,i){e(t,i,n)}},MV;class kG{constructor(e,t,i){this.model=e,this.position=t,this._providerRenameIdx=0,this._providers=i.ordered(e)}hasProvider(){return this._providers.length>0}async resolveRenameLocation(e){const t=[];for(this._providerRenameIdx=0;this._providerRenameIdx<this._providers.length;this._providerRenameIdx++){const s=this._providers[this._providerRenameIdx];if(!s.resolveRenameLocation)break;const r=await s.resolveRenameLocation(this.model,this.position,e);if(r){if(r.rejectReason){t.push(r.rejectReason);continue}return r}}this._providerRenameIdx=0;const i=this.model.getWordAtPosition(this.position);return i?{range:new M(this.position.lineNumber,i.startColumn,this.position.lineNumber,i.endColumn),text:i.word,rejectReason:t.length>0?t.join(` +`):void 0}:{range:M.fromPositions(this.position),text:"",rejectReason:t.length>0?t.join(` +`):void 0}}async provideRenameEdits(e,t){return this._provideRenameEdits(e,this._providerRenameIdx,[],t)}async _provideRenameEdits(e,t,i,s){const r=this._providers[t];if(!r)return{edits:[],rejectReason:i.join(` +`)};const o=await r.provideRenameEdits(this.model,this.position,e,s);if(o){if(o.rejectReason)return this._provideRenameEdits(e,t+1,i.concat(o.rejectReason),s)}else return this._provideRenameEdits(e,t+1,i.concat(v("no result","No result.")),s);return o}}async function fat(n,e,t,i){const s=new kG(e,t,n),r=await s.resolveRenameLocation(Ft.None);return r!=null&&r.rejectReason?{edits:[],rejectReason:r.rejectReason}:s.provideRenameEdits(i,Ft.None)}let nv=MV=class{static get(e){return e.getContribution(MV.ID)}constructor(e,t,i,s,r,o,a,l){this.editor=e,this._instaService=t,this._notificationService=i,this._bulkEditService=s,this._progressService=r,this._logService=o,this._configService=a,this._languageFeaturesService=l,this._disposableStore=new xe,this._cts=new es,this._renameInputField=this._disposableStore.add(this._instaService.createInstance(RV,this.editor,["acceptRenameInput","acceptRenameInputWithPreview"]))}dispose(){this._disposableStore.dispose(),this._cts.dispose(!0)}async run(){var e,t;if(this._cts.dispose(!0),this._cts=new es,!this.editor.hasModel())return;const i=this.editor.getPosition(),s=new kG(this.editor.getModel(),i,this._languageFeaturesService.renameProvider);if(!s.hasProvider())return;const r=new lm(this.editor,5,void 0,this._cts.token);let o;try{const g=s.resolveRenameLocation(r.token);this._progressService.showWhile(g,250),o=await g}catch(g){(e=ra.get(this.editor))===null||e===void 0||e.showMessage(g||v("resolveRenameLocationFailed","An unknown error occurred while resolving rename location"),i);return}finally{r.dispose()}if(!o)return;if(o.rejectReason){(t=ra.get(this.editor))===null||t===void 0||t.showMessage(o.rejectReason,i);return}if(r.token.isCancellationRequested)return;const a=new lm(this.editor,5,o.range,this._cts.token),l=this.editor.getSelection();let c=0,u=o.text.length;!M.isEmpty(l)&&!M.spansMultipleLines(l)&&M.containsRange(o.range,l)&&(c=Math.max(0,l.startColumn-o.range.startColumn),u=Math.min(o.range.endColumn,l.endColumn)-o.range.startColumn);const h=this._bulkEditService.hasPreviewHandler()&&this._configService.getValue(this.editor.getModel().uri,"editor.rename.enablePreview"),d=await this._renameInputField.getInput(o.range,o.text,c,u,h,a.token);if(typeof d=="boolean"){d&&this.editor.focus(),a.dispose();return}this.editor.focus();const f=lO(s.provideRenameEdits(d.newName,a.token),a.token).then(async g=>{if(!(!g||!this.editor.hasModel())){if(g.rejectReason){this._notificationService.info(g.rejectReason);return}this.editor.setSelection(M.fromPositions(this.editor.getSelection().getPosition())),this._bulkEditService.apply(g,{editor:this.editor,showPreview:d.wantsPreview,label:v("label","Renaming '{0}' to '{1}'",o==null?void 0:o.text,d.newName),code:"undoredo.rename",quotableLabel:v("quotableLabel","Renaming {0} to {1}",o==null?void 0:o.text,d.newName),respectAutoSaveConfig:!0}).then(p=>{p.ariaSummary&&ha(v("aria","Successfully renamed '{0}' to '{1}'. Summary: {2}",o.text,d.newName,p.ariaSummary))}).catch(p=>{this._notificationService.error(v("rename.failedApply","Rename failed to apply edits")),this._logService.error(p)})}},g=>{this._notificationService.error(v("rename.failed","Rename failed to compute edits")),this._logService.error(g)}).finally(()=>{a.dispose()});return this._progressService.showWhile(f,250),f}acceptRenameInput(e){this._renameInputField.acceptInput(e)}cancelRenameInput(){this._renameInputField.cancelInput(!0)}};nv.ID="editor.contrib.renameController";nv=MV=dat([i1(1,at),i1(2,is),i1(3,FE),i1(4,Mm),i1(5,ga),i1(6,xK),i1(7,Ge)],nv);class gat extends qe{constructor(){super({id:"editor.action.rename",label:v("rename.label","Rename Symbol"),alias:"Rename Symbol",precondition:ke.and($.writable,$.hasRenameProvider),kbOpts:{kbExpr:$.editorTextFocus,primary:60,weight:100},contextMenuOpts:{group:"1_modification",order:1.1}})}runCommand(e,t){const i=e.get(ri),[s,r]=Array.isArray(t)&&t||[void 0,void 0];return it.isUri(s)&&he.isIPosition(r)?i.openCodeEditor({resource:s},i.getActiveCodeEditor()).then(o=>{o&&(o.setPosition(r),o.invokeWithinContext(a=>(this.reportTelemetry(a,o),this.run(a,o))))},vt):super.runCommand(e,t)}run(e,t){const i=nv.get(t);return i?i.run():Promise.resolve()}}ti(nv.ID,nv,4);Ae(gat);const LG=Ks.bindToContribution(nv.get);Be(new LG({id:"acceptRenameInput",precondition:tF,handler:n=>n.acceptRenameInput(!1),kbOpts:{weight:199,kbExpr:ke.and($.focus,ke.not("isComposing")),primary:3}}));Be(new LG({id:"acceptRenameInputWithPreview",precondition:ke.and(tF,ke.has("config.editor.rename.enablePreview")),handler:n=>n.acceptRenameInput(!0),kbOpts:{weight:199,kbExpr:ke.and($.focus,ke.not("isComposing")),primary:1027}}));Be(new LG({id:"cancelRenameInput",precondition:tF,handler:n=>n.cancelRenameInput(),kbOpts:{weight:199,kbExpr:$.focus,primary:9,secondary:[1033]}}));xd("_executeDocumentRenameProvider",function(n,e,t,...i){const[s]=i;Si(typeof s=="string");const{renameProvider:r}=n.get(Ge);return fat(r,e,t,s)});xd("_executePrepareRename",async function(n,e,t){const{renameProvider:i}=n.get(Ge),r=await new kG(e,t,i).resolveRenameLocation(Ft.None);if(r!=null&&r.rejectReason)throw new Error(r.rejectReason);return r});vn.as($u.Configuration).registerConfiguration({id:"editor",properties:{"editor.rename.enablePreview":{scope:5,description:v("enablePreview","Enable/disable the ability to preview changes before renaming"),default:!0,type:"boolean"}}});class Ck{static create(e,t){return new Ck(e,new uR(t))}get startLineNumber(){return this._startLineNumber}get endLineNumber(){return this._endLineNumber}constructor(e,t){this._startLineNumber=e,this._tokens=t,this._endLineNumber=this._startLineNumber+this._tokens.getMaxDeltaLine()}toString(){return this._tokens.toString(this._startLineNumber)}_updateEndLineNumber(){this._endLineNumber=this._startLineNumber+this._tokens.getMaxDeltaLine()}isEmpty(){return this._tokens.isEmpty()}getLineTokens(e){return this._startLineNumber<=e&&e<=this._endLineNumber?this._tokens.getLineTokens(e-this._startLineNumber):null}getRange(){const e=this._tokens.getRange();return e&&new M(this._startLineNumber+e.startLineNumber,e.startColumn,this._startLineNumber+e.endLineNumber,e.endColumn)}removeTokens(e){const t=e.startLineNumber-this._startLineNumber,i=e.endLineNumber-this._startLineNumber;this._startLineNumber+=this._tokens.removeTokens(t,e.startColumn-1,i,e.endColumn-1),this._updateEndLineNumber()}split(e){const t=e.startLineNumber-this._startLineNumber,i=e.endLineNumber-this._startLineNumber,[s,r,o]=this._tokens.split(t,e.startColumn-1,i,e.endColumn-1);return[new Ck(this._startLineNumber,s),new Ck(this._startLineNumber+o,r)]}applyEdit(e,t){const[i,s,r]=im(t);this.acceptEdit(e,i,s,r,t.length>0?t.charCodeAt(0):0)}acceptEdit(e,t,i,s,r){this._acceptDeleteRange(e),this._acceptInsertText(new he(e.startLineNumber,e.startColumn),t,i,s,r),this._updateEndLineNumber()}_acceptDeleteRange(e){if(e.startLineNumber===e.endLineNumber&&e.startColumn===e.endColumn)return;const t=e.startLineNumber-this._startLineNumber,i=e.endLineNumber-this._startLineNumber;if(i<0){const r=i-t;this._startLineNumber-=r;return}const s=this._tokens.getMaxDeltaLine();if(!(t>=s+1)){if(t<0&&i>=s+1){this._startLineNumber=0,this._tokens.clear();return}if(t<0){const r=-t;this._startLineNumber-=r,this._tokens.acceptDeleteRange(e.startColumn-1,0,0,i,e.endColumn-1)}else this._tokens.acceptDeleteRange(0,t,e.startColumn-1,i,e.endColumn-1)}}_acceptInsertText(e,t,i,s,r){if(t===0&&i===0)return;const o=e.lineNumber-this._startLineNumber;if(o<0){this._startLineNumber+=t;return}const a=this._tokens.getMaxDeltaLine();o>=a+1||this._tokens.acceptInsertText(o,e.column-1,t,i,s,r)}}class uR{constructor(e){this._tokens=e,this._tokenCount=e.length/4}toString(e){const t=[];for(let i=0;i<this._tokenCount;i++)t.push(`(${this._getDeltaLine(i)+e},${this._getStartCharacter(i)}-${this._getEndCharacter(i)})`);return`[${t.join(",")}]`}getMaxDeltaLine(){const e=this._getTokenCount();return e===0?-1:this._getDeltaLine(e-1)}getRange(){const e=this._getTokenCount();if(e===0)return null;const t=this._getStartCharacter(0),i=this._getDeltaLine(e-1),s=this._getEndCharacter(e-1);return new M(0,t+1,i,s+1)}_getTokenCount(){return this._tokenCount}_getDeltaLine(e){return this._tokens[4*e]}_getStartCharacter(e){return this._tokens[4*e+1]}_getEndCharacter(e){return this._tokens[4*e+2]}isEmpty(){return this._getTokenCount()===0}getLineTokens(e){let t=0,i=this._getTokenCount()-1;for(;t<i;){const s=t+Math.floor((i-t)/2),r=this._getDeltaLine(s);if(r<e)t=s+1;else if(r>e)i=s-1;else{let o=s;for(;o>t&&this._getDeltaLine(o-1)===e;)o--;let a=s;for(;a<i&&this._getDeltaLine(a+1)===e;)a++;return new Gne(this._tokens.subarray(4*o,4*a+4))}}return this._getDeltaLine(t)===e?new Gne(this._tokens.subarray(4*t,4*t+4)):null}clear(){this._tokenCount=0}removeTokens(e,t,i,s){const r=this._tokens,o=this._tokenCount;let a=0,l=!1,c=0;for(let u=0;u<o;u++){const h=4*u,d=r[h],f=r[h+1],g=r[h+2],p=r[h+3];if((d>e||d===e&&g>=t)&&(d<i||d===i&&f<=s))l=!0;else{if(a===0&&(c=d),l){const m=4*a;r[m]=d-c,r[m+1]=f,r[m+2]=g,r[m+3]=p}a++}}return this._tokenCount=a,c}split(e,t,i,s){const r=this._tokens,o=this._tokenCount,a=[],l=[];let c=a,u=0,h=0;for(let d=0;d<o;d++){const f=4*d,g=r[f],p=r[f+1],m=r[f+2],_=r[f+3];if(g>e||g===e&&m>=t){if(g<i||g===i&&p<=s)continue;c!==l&&(c=l,u=0,h=g)}c[u++]=g-h,c[u++]=p,c[u++]=m,c[u++]=_}return[new uR(new Uint32Array(a)),new uR(new Uint32Array(l)),h]}acceptDeleteRange(e,t,i,s,r){const o=this._tokens,a=this._tokenCount,l=s-t;let c=0,u=!1;for(let h=0;h<a;h++){const d=4*h;let f=o[d],g=o[d+1],p=o[d+2];const m=o[d+3];if(f<t||f===t&&p<=i){c++;continue}else if(f===t&&g<i)f===s&&p>r?p-=r-i:p=i;else if(f===t&&g===i)if(f===s&&p>r)p-=r-i;else{u=!0;continue}else if(f<s||f===s&&g<r)if(f===s&&p>r)f=t,g=i,p=g+(p-r);else{u=!0;continue}else if(f>s){if(l===0&&!u){c=a;break}f-=l}else if(f===s&&g>=r)e&&f===0&&(g+=e,p+=e),f-=l,g-=r-i,p-=r-i;else throw new Error("Not possible!");const _=4*c;o[_]=f,o[_+1]=g,o[_+2]=p,o[_+3]=m,c++}this._tokenCount=c}acceptInsertText(e,t,i,s,r,o){const a=i===0&&s===1&&(o>=48&&o<=57||o>=65&&o<=90||o>=97&&o<=122),l=this._tokens,c=this._tokenCount;for(let u=0;u<c;u++){const h=4*u;let d=l[h],f=l[h+1],g=l[h+2];if(!(d<e||d===e&&g<t)){if(d===e&&g===t)if(a)g+=1;else continue;else if(d===e&&f<t&&t<g)i===0?g+=s:g=t;else{if(d===e&&f===t&&a)continue;if(d===e)if(d+=i,i===0)f+=s,g+=s;else{const p=g-f;f=r+(f-t),g=f+p}else d+=i}l[h]=d,l[h+1]=f,l[h+2]=g}}}}class Gne{constructor(e){this._tokens=e}getCount(){return this._tokens.length/4}getStartCharacter(e){return this._tokens[4*e+1]}getEndCharacter(e){return this._tokens[4*e+2]}getMetadata(e){return this._tokens[4*e+3]}}var pat=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},G3=function(n,e){return function(t,i){e(t,i,n)}};let OV=class{constructor(e,t,i,s){this._legend=e,this._themeService=t,this._languageService=i,this._logService=s,this._hasWarnedOverlappingTokens=!1,this._hasWarnedInvalidLengthTokens=!1,this._hasWarnedInvalidEditStart=!1,this._hashTable=new rf}getMetadata(e,t,i){const s=this._languageService.languageIdCodec.encodeLanguageId(i),r=this._hashTable.get(e,t,s);let o;if(r)o=r.metadata,this._logService.getLevel()===hr.Trace&&this._logService.trace(`SemanticTokensProviderStyling [CACHED] ${e} / ${t}: foreground ${dr.getForeground(o)}, fontStyle ${dr.getFontStyle(o).toString(2)}`);else{let a=this._legend.tokenTypes[e];const l=[];if(a){let c=t;for(let h=0;c>0&&h<this._legend.tokenModifiers.length;h++)c&1&&l.push(this._legend.tokenModifiers[h]),c=c>>1;c>0&&this._logService.getLevel()===hr.Trace&&(this._logService.trace(`SemanticTokensProviderStyling: unknown token modifier index: ${t.toString(2)} for legend: ${JSON.stringify(this._legend.tokenModifiers)}`),l.push("not-in-legend"));const u=this._themeService.getColorTheme().getTokenStyleMetadata(a,l,i);if(typeof u>"u")o=2147483647;else{if(o=0,typeof u.italic<"u"){const h=(u.italic?1:0)<<11;o|=h|1}if(typeof u.bold<"u"){const h=(u.bold?2:0)<<11;o|=h|2}if(typeof u.underline<"u"){const h=(u.underline?4:0)<<11;o|=h|4}if(typeof u.strikethrough<"u"){const h=(u.strikethrough?8:0)<<11;o|=h|8}if(u.foreground){const h=u.foreground<<15;o|=h|16}o===0&&(o=2147483647)}}else this._logService.getLevel()===hr.Trace&&this._logService.trace(`SemanticTokensProviderStyling: unknown token type index: ${e} for legend: ${JSON.stringify(this._legend.tokenTypes)}`),o=2147483647,a="not-in-legend";this._hashTable.add(e,t,s,o),this._logService.getLevel()===hr.Trace&&this._logService.trace(`SemanticTokensProviderStyling ${e} (${a}) / ${t} (${l.join(" ")}): foreground ${dr.getForeground(o)}, fontStyle ${dr.getFontStyle(o).toString(2)}`)}return o}warnOverlappingSemanticTokens(e,t){this._hasWarnedOverlappingTokens||(this._hasWarnedOverlappingTokens=!0,console.warn(`Overlapping semantic tokens detected at lineNumber ${e}, column ${t}`))}warnInvalidLengthSemanticTokens(e,t){this._hasWarnedInvalidLengthTokens||(this._hasWarnedInvalidLengthTokens=!0,console.warn(`Semantic token with invalid length detected at lineNumber ${e}, column ${t}`))}warnInvalidEditStart(e,t,i,s,r){this._hasWarnedInvalidEditStart||(this._hasWarnedInvalidEditStart=!0,console.warn(`Invalid semantic tokens edit detected (previousResultId: ${e}, resultId: ${t}) at edit #${i}: The provided start offset ${s} is outside the previous data (length ${r}).`))}};OV=pat([G3(1,Ms),G3(2,sn),G3(3,ga)],OV);function Jve(n,e,t){const i=n.data,s=n.data.length/5|0,r=Math.max(Math.ceil(s/1024),400),o=[];let a=0,l=1,c=0;for(;a<s;){const u=a;let h=Math.min(u+r,s);if(h<s){let b=h;for(;b-1>u&&i[5*b]===0;)b--;if(b-1===u){let y=h;for(;y+1<s&&i[5*y]===0;)y++;h=y}else h=b}let d=new Uint32Array((h-u)*4),f=0,g=0,p=0,m=0;for(;a<h;){const b=5*a,y=i[b],w=i[b+1],S=l+y|0,E=y===0?c+w|0:w,L=i[b+2],k=E+L|0,x=i[b+3],I=i[b+4];if(k<=E)e.warnInvalidLengthSemanticTokens(S,E+1);else if(p===S&&m>E)e.warnOverlappingSemanticTokens(S,E+1);else{const N=e.getMetadata(x,I,t);N!==2147483647&&(g===0&&(g=S),d[f]=S-g,d[f+1]=E,d[f+2]=k,d[f+3]=N,f+=4,p=S,m=k)}l=S,c=E,a++}f!==d.length&&(d=d.subarray(0,f));const _=Ck.create(g,d);o.push(_)}return o}class mat{constructor(e,t,i,s){this.tokenTypeIndex=e,this.tokenModifierSet=t,this.languageId=i,this.metadata=s,this.next=null}}class rf{constructor(){this._elementsCount=0,this._currentLengthIndex=0,this._currentLength=rf._SIZES[this._currentLengthIndex],this._growCount=Math.round(this._currentLengthIndex+1<rf._SIZES.length?2/3*this._currentLength:0),this._elements=[],rf._nullOutEntries(this._elements,this._currentLength)}static _nullOutEntries(e,t){for(let i=0;i<t;i++)e[i]=null}_hash2(e,t){return(e<<5)-e+t|0}_hashFunc(e,t,i){return this._hash2(this._hash2(e,t),i)%this._currentLength}get(e,t,i){const s=this._hashFunc(e,t,i);let r=this._elements[s];for(;r;){if(r.tokenTypeIndex===e&&r.tokenModifierSet===t&&r.languageId===i)return r;r=r.next}return null}add(e,t,i,s){if(this._elementsCount++,this._growCount!==0&&this._elementsCount>=this._growCount){const r=this._elements;this._currentLengthIndex++,this._currentLength=rf._SIZES[this._currentLengthIndex],this._growCount=Math.round(this._currentLengthIndex+1<rf._SIZES.length?2/3*this._currentLength:0),this._elements=[],rf._nullOutEntries(this._elements,this._currentLength);for(const o of r){let a=o;for(;a;){const l=a.next;a.next=null,this._add(a),a=l}}}this._add(new mat(e,t,i,s))}_add(e){const t=this._hashFunc(e.tokenTypeIndex,e.tokenModifierSet,e.languageId);e.next=this._elements[t],this._elements[t]=e}}rf._SIZES=[3,7,13,31,61,127,251,509,1021,2039,4093,8191,16381,32749,65521,131071,262139,524287,1048573,2097143];function _at(n){for(let e=0,t=n.length;e<t;e+=4){const i=n[e+0],s=n[e+1],r=n[e+2],o=n[e+3];n[e+0]=o,n[e+1]=r,n[e+2]=s,n[e+3]=i}}function vat(n){const e=new Uint8Array(n.buffer,n.byteOffset,n.length*4);return Vfe()||_at(e),DO.wrap(e)}function e0e(n){const e=new Uint32Array(bat(n));let t=0;if(e[t++]=n.id,n.type==="full")e[t++]=1,e[t++]=n.data.length,e.set(n.data,t),t+=n.data.length;else{e[t++]=2,e[t++]=n.deltas.length;for(const i of n.deltas)e[t++]=i.start,e[t++]=i.deleteCount,i.data?(e[t++]=i.data.length,e.set(i.data,t),t+=i.data.length):e[t++]=0}return vat(e)}function bat(n){let e=0;if(e+=2,n.type==="full")e+=1+n.data.length;else{e+=1,e+=3*n.deltas.length;for(const t of n.deltas)t.data&&(e+=t.data.length)}return e}function iF(n){return n&&!!n.data}function t0e(n){return n&&Array.isArray(n.edits)}class yat{constructor(e,t,i){this.provider=e,this.tokens=t,this.error=i}}function i0e(n,e){return n.has(e)}function Cat(n,e){const t=n.orderedGroups(e);return t.length>0?t[0]:[]}async function n0e(n,e,t,i,s){const r=Cat(n,e),o=await Promise.all(r.map(async a=>{let l,c=null;try{l=await a.provideDocumentSemanticTokens(e,a===t?i:null,s)}catch(u){c=u,l=null}return(!l||!iF(l)&&!t0e(l))&&(l=null),new yat(a,l,c)}));for(const a of o){if(a.error)throw a.error;if(a.tokens)return a}return o.length>0?o[0]:null}function wat(n,e){const t=n.orderedGroups(e);return t.length>0?t[0]:null}class Sat{constructor(e,t){this.provider=e,this.tokens=t}}function kat(n,e){return n.has(e)}function s0e(n,e){const t=n.orderedGroups(e);return t.length>0?t[0]:[]}async function xG(n,e,t,i){const s=s0e(n,e),r=await Promise.all(s.map(async o=>{let a;try{a=await o.provideDocumentRangeSemanticTokens(e,t,i)}catch(l){Jn(l),a=null}return(!a||!iF(a))&&(a=null),new Sat(o,a)}));for(const o of r)if(o.tokens)return o;return r.length>0?r[0]:null}Yt.registerCommand("_provideDocumentSemanticTokensLegend",async(n,...e)=>{const[t]=e;Si(t instanceof it);const i=n.get(fn).getModel(t);if(!i)return;const{documentSemanticTokensProvider:s}=n.get(Ge),r=wat(s,i);return r?r[0].getLegend():n.get(Dn).executeCommand("_provideDocumentRangeSemanticTokensLegend",t)});Yt.registerCommand("_provideDocumentSemanticTokens",async(n,...e)=>{const[t]=e;Si(t instanceof it);const i=n.get(fn).getModel(t);if(!i)return;const{documentSemanticTokensProvider:s}=n.get(Ge);if(!i0e(s,i))return n.get(Dn).executeCommand("_provideDocumentRangeSemanticTokens",t,i.getFullModelRange());const r=await n0e(s,i,null,null,Ft.None);if(!r)return;const{provider:o,tokens:a}=r;if(!a||!iF(a))return;const l=e0e({id:0,type:"full",data:a.data});return a.resultId&&o.releaseDocumentSemanticTokens(a.resultId),l});Yt.registerCommand("_provideDocumentRangeSemanticTokensLegend",async(n,...e)=>{const[t,i]=e;Si(t instanceof it);const s=n.get(fn).getModel(t);if(!s)return;const{documentRangeSemanticTokensProvider:r}=n.get(Ge),o=s0e(r,s);if(o.length===0)return;if(o.length===1)return o[0].getLegend();if(!i||!M.isIRange(i))return console.warn("provideDocumentRangeSemanticTokensLegend might be out-of-sync with provideDocumentRangeSemanticTokens unless a range argument is passed in"),o[0].getLegend();const a=await xG(r,s,M.lift(i),Ft.None);if(a)return a.provider.getLegend()});Yt.registerCommand("_provideDocumentRangeSemanticTokens",async(n,...e)=>{const[t,i]=e;Si(t instanceof it),Si(M.isIRange(i));const s=n.get(fn).getModel(t);if(!s)return;const{documentRangeSemanticTokensProvider:r}=n.get(Ge),o=await xG(r,s,M.lift(i),Ft.None);if(!(!o||!o.tokens))return e0e({id:0,type:"full",data:o.tokens.data})});const nF=Bt("semanticTokensStylingService"),EG="editor.semanticHighlighting";function FV(n,e,t){var i;const s=(i=t.getValue(EG,{overrideIdentifier:n.getLanguageId(),resource:n.uri}))===null||i===void 0?void 0:i.enabled;return typeof s=="boolean"?s:e.getColorTheme().semanticHighlighting}var r0e=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},fh=function(n,e){return function(t,i){e(t,i,n)}},Bg;let BV=class extends pe{constructor(e,t,i,s,r,o){super(),this._watchers=Object.create(null);const a=u=>{this._watchers[u.uri.toString()]=new Lx(u,e,i,r,o)},l=(u,h)=>{h.dispose(),delete this._watchers[u.uri.toString()]},c=()=>{for(const u of t.getModels()){const h=this._watchers[u.uri.toString()];FV(u,i,s)?h||a(u):h&&l(u,h)}};this._register(t.onModelAdded(u=>{FV(u,i,s)&&a(u)})),this._register(t.onModelRemoved(u=>{const h=this._watchers[u.uri.toString()];h&&l(u,h)})),this._register(s.onDidChangeConfiguration(u=>{u.affectsConfiguration(EG)&&c()})),this._register(i.onDidColorThemeChange(c))}dispose(){for(const e of Object.values(this._watchers))e.dispose();super.dispose()}};BV=r0e([fh(0,nF),fh(1,fn),fh(2,Ms),fh(3,Ut),fh(4,Ul),fh(5,Ge)],BV);let Lx=Bg=class extends pe{constructor(e,t,i,s,r){super(),this._semanticTokensStylingService=t,this._isDisposed=!1,this._model=e,this._provider=r.documentSemanticTokensProvider,this._debounceInformation=s.for(this._provider,"DocumentSemanticTokens",{min:Bg.REQUEST_MIN_DELAY,max:Bg.REQUEST_MAX_DELAY}),this._fetchDocumentSemanticTokens=this._register(new Ei(()=>this._fetchDocumentSemanticTokensNow(),Bg.REQUEST_MIN_DELAY)),this._currentDocumentResponse=null,this._currentDocumentRequestCancellationTokenSource=null,this._documentProvidersChangeListeners=[],this._providersChangedDuringRequest=!1,this._register(this._model.onDidChangeContent(()=>{this._fetchDocumentSemanticTokens.isScheduled()||this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model))})),this._register(this._model.onDidChangeAttached(()=>{this._fetchDocumentSemanticTokens.isScheduled()||this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model))})),this._register(this._model.onDidChangeLanguage(()=>{this._currentDocumentResponse&&(this._currentDocumentResponse.dispose(),this._currentDocumentResponse=null),this._currentDocumentRequestCancellationTokenSource&&(this._currentDocumentRequestCancellationTokenSource.cancel(),this._currentDocumentRequestCancellationTokenSource=null),this._setDocumentSemanticTokens(null,null,null,[]),this._fetchDocumentSemanticTokens.schedule(0)}));const o=()=>{yi(this._documentProvidersChangeListeners),this._documentProvidersChangeListeners=[];for(const a of this._provider.all(e))typeof a.onDidChange=="function"&&this._documentProvidersChangeListeners.push(a.onDidChange(()=>{if(this._currentDocumentRequestCancellationTokenSource){this._providersChangedDuringRequest=!0;return}this._fetchDocumentSemanticTokens.schedule(0)}))};o(),this._register(this._provider.onDidChange(()=>{o(),this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model))})),this._register(i.onDidColorThemeChange(a=>{this._setDocumentSemanticTokens(null,null,null,[]),this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model))})),this._fetchDocumentSemanticTokens.schedule(0)}dispose(){this._currentDocumentResponse&&(this._currentDocumentResponse.dispose(),this._currentDocumentResponse=null),this._currentDocumentRequestCancellationTokenSource&&(this._currentDocumentRequestCancellationTokenSource.cancel(),this._currentDocumentRequestCancellationTokenSource=null),yi(this._documentProvidersChangeListeners),this._documentProvidersChangeListeners=[],this._setDocumentSemanticTokens(null,null,null,[]),this._isDisposed=!0,super.dispose()}_fetchDocumentSemanticTokensNow(){if(this._currentDocumentRequestCancellationTokenSource)return;if(!i0e(this._provider,this._model)){this._currentDocumentResponse&&this._model.tokenization.setSemanticTokens(null,!1);return}if(!this._model.isAttachedToEditor())return;const e=new es,t=this._currentDocumentResponse?this._currentDocumentResponse.provider:null,i=this._currentDocumentResponse&&this._currentDocumentResponse.resultId||null,s=n0e(this._provider,this._model,t,i,e.token);this._currentDocumentRequestCancellationTokenSource=e,this._providersChangedDuringRequest=!1;const r=[],o=this._model.onDidChangeContent(l=>{r.push(l)}),a=new Nr(!1);s.then(l=>{if(this._debounceInformation.update(this._model,a.elapsed()),this._currentDocumentRequestCancellationTokenSource=null,o.dispose(),!l)this._setDocumentSemanticTokens(null,null,null,r);else{const{provider:c,tokens:u}=l,h=this._semanticTokensStylingService.getStyling(c);this._setDocumentSemanticTokens(c,u||null,h,r)}},l=>{l&&(Wu(l)||typeof l.message=="string"&&l.message.indexOf("busy")!==-1)||vt(l),this._currentDocumentRequestCancellationTokenSource=null,o.dispose(),(r.length>0||this._providersChangedDuringRequest)&&(this._fetchDocumentSemanticTokens.isScheduled()||this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model)))})}static _copy(e,t,i,s,r){r=Math.min(r,i.length-s,e.length-t);for(let o=0;o<r;o++)i[s+o]=e[t+o]}_setDocumentSemanticTokens(e,t,i,s){const r=this._currentDocumentResponse,o=()=>{(s.length>0||this._providersChangedDuringRequest)&&!this._fetchDocumentSemanticTokens.isScheduled()&&this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model))};if(this._currentDocumentResponse&&(this._currentDocumentResponse.dispose(),this._currentDocumentResponse=null),this._isDisposed){e&&t&&e.releaseDocumentSemanticTokens(t.resultId);return}if(!e||!i){this._model.tokenization.setSemanticTokens(null,!1);return}if(!t){this._model.tokenization.setSemanticTokens(null,!0),o();return}if(t0e(t)){if(!r){this._model.tokenization.setSemanticTokens(null,!0);return}if(t.edits.length===0)t={resultId:t.resultId,data:r.data};else{let a=0;for(const d of t.edits)a+=(d.data?d.data.length:0)-d.deleteCount;const l=r.data,c=new Uint32Array(l.length+a);let u=l.length,h=c.length;for(let d=t.edits.length-1;d>=0;d--){const f=t.edits[d];if(f.start>l.length){i.warnInvalidEditStart(r.resultId,t.resultId,d,f.start,l.length),this._model.tokenization.setSemanticTokens(null,!0);return}const g=u-(f.start+f.deleteCount);g>0&&(Bg._copy(l,u-g,c,h-g,g),h-=g),f.data&&(Bg._copy(f.data,0,c,h-f.data.length,f.data.length),h-=f.data.length),u=f.start}u>0&&Bg._copy(l,0,c,0,u),t={resultId:t.resultId,data:c}}}if(iF(t)){this._currentDocumentResponse=new Lat(e,t.resultId,t.data);const a=Jve(t,i,this._model.getLanguageId());if(s.length>0)for(const l of s)for(const c of a)for(const u of l.changes)c.applyEdit(u.range,u.text);this._model.tokenization.setSemanticTokens(a,!0)}else this._model.tokenization.setSemanticTokens(null,!0);o()}};Lx.REQUEST_MIN_DELAY=300;Lx.REQUEST_MAX_DELAY=2e3;Lx=Bg=r0e([fh(1,nF),fh(2,Ms),fh(3,Ul),fh(4,Ge)],Lx);class Lat{constructor(e,t,i){this.provider=e,this.resultId=t,this.data=i}dispose(){this.provider.releaseDocumentSemanticTokens(this.resultId)}}d2(BV);var xat=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},Gw=function(n,e){return function(t,i){e(t,i,n)}};let xx=class extends pe{constructor(e,t,i,s,r,o){super(),this._semanticTokensStylingService=t,this._themeService=i,this._configurationService=s,this._editor=e,this._provider=o.documentRangeSemanticTokensProvider,this._debounceInformation=r.for(this._provider,"DocumentRangeSemanticTokens",{min:100,max:500}),this._tokenizeViewport=this._register(new Ei(()=>this._tokenizeViewportNow(),100)),this._outstandingRequests=[];const a=()=>{this._editor.hasModel()&&this._tokenizeViewport.schedule(this._debounceInformation.get(this._editor.getModel()))};this._register(this._editor.onDidScrollChange(()=>{a()})),this._register(this._editor.onDidChangeModel(()=>{this._cancelAll(),a()})),this._register(this._editor.onDidChangeModelContent(l=>{this._cancelAll(),a()})),this._register(this._provider.onDidChange(()=>{this._cancelAll(),a()})),this._register(this._configurationService.onDidChangeConfiguration(l=>{l.affectsConfiguration(EG)&&(this._cancelAll(),a())})),this._register(this._themeService.onDidColorThemeChange(()=>{this._cancelAll(),a()})),a()}_cancelAll(){for(const e of this._outstandingRequests)e.cancel();this._outstandingRequests=[]}_removeOutstandingRequest(e){for(let t=0,i=this._outstandingRequests.length;t<i;t++)if(this._outstandingRequests[t]===e){this._outstandingRequests.splice(t,1);return}}_tokenizeViewportNow(){if(!this._editor.hasModel())return;const e=this._editor.getModel();if(e.tokenization.hasCompleteSemanticTokens())return;if(!FV(e,this._themeService,this._configurationService)){e.tokenization.hasSomeSemanticTokens()&&e.tokenization.setSemanticTokens(null,!1);return}if(!kat(this._provider,e)){e.tokenization.hasSomeSemanticTokens()&&e.tokenization.setSemanticTokens(null,!1);return}const t=this._editor.getVisibleRangesPlusViewportAboveBelow();this._outstandingRequests=this._outstandingRequests.concat(t.map(i=>this._requestRange(e,i)))}_requestRange(e,t){const i=e.getVersionId(),s=Ns(o=>Promise.resolve(xG(this._provider,e,t,o))),r=new Nr(!1);return s.then(o=>{if(this._debounceInformation.update(e,r.elapsed()),!o||!o.tokens||e.isDisposed()||e.getVersionId()!==i)return;const{provider:a,tokens:l}=o,c=this._semanticTokensStylingService.getStyling(a);e.tokenization.setPartialSemanticTokens(t,Jve(l,c,e.getLanguageId()))}).then(()=>this._removeOutstandingRequest(s),()=>this._removeOutstandingRequest(s)),s}};xx.ID="editor.contrib.viewportSemanticTokens";xx=xat([Gw(1,nF),Gw(2,Ms),Gw(3,Ut),Gw(4,Ul),Gw(5,Ge)],xx);ti(xx.ID,xx,1);class Eat{constructor(e=!0){this.selectSubwords=e}provideSelectionRanges(e,t){const i=[];for(const s of t){const r=[];i.push(r),this.selectSubwords&&this._addInWordRanges(r,e,s),this._addWordRanges(r,e,s),this._addWhitespaceLine(r,e,s),r.push({range:e.getFullModelRange()})}return i}_addInWordRanges(e,t,i){const s=t.getWordAtPosition(i);if(!s)return;const{word:r,startColumn:o}=s,a=i.column-o;let l=a,c=a,u=0;for(;l>=0;l--){const h=r.charCodeAt(l);if(l!==a&&(h===95||h===45))break;if(Qg(h)&&ch(u))break;u=h}for(l+=1;c<r.length;c++){const h=r.charCodeAt(c);if(ch(h)&&Qg(u))break;if(h===95||h===45)break;u=h}l<c&&e.push({range:new M(i.lineNumber,o+l,i.lineNumber,o+c)})}_addWordRanges(e,t,i){const s=t.getWordAtPosition(i);s&&e.push({range:new M(i.lineNumber,s.startColumn,i.lineNumber,s.endColumn)})}_addWhitespaceLine(e,t,i){t.getLineLength(i.lineNumber)>0&&t.getLineFirstNonWhitespaceColumn(i.lineNumber)===0&&t.getLineLastNonWhitespaceColumn(i.lineNumber)===0&&e.push({range:new M(i.lineNumber,1,i.lineNumber,t.getLineMaxColumn(i.lineNumber))})}}var Dat=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},Iat=function(n,e){return function(t,i){e(t,i,n)}},WV;class DG{constructor(e,t){this.index=e,this.ranges=t}mov(e){const t=this.index+(e?1:-1);if(t<0||t>=this.ranges.length)return this;const i=new DG(t,this.ranges);return i.ranges[t].equalsRange(this.ranges[this.index])?i.mov(e):i}}let Uy=WV=class{static get(e){return e.getContribution(WV.ID)}constructor(e,t){this._editor=e,this._languageFeaturesService=t,this._ignoreSelection=!1}dispose(){var e;(e=this._selectionListener)===null||e===void 0||e.dispose()}async run(e){if(!this._editor.hasModel())return;const t=this._editor.getSelections(),i=this._editor.getModel();if(this._state||await a0e(this._languageFeaturesService.selectionRangeProvider,i,t.map(r=>r.getPosition()),this._editor.getOption(112),Ft.None).then(r=>{var o;if(!(!Ir(r)||r.length!==t.length)&&!(!this._editor.hasModel()||!On(this._editor.getSelections(),t,(a,l)=>a.equalsSelection(l)))){for(let a=0;a<r.length;a++)r[a]=r[a].filter(l=>l.containsPosition(t[a].getStartPosition())&&l.containsPosition(t[a].getEndPosition())),r[a].unshift(t[a]);this._state=r.map(a=>new DG(0,a)),(o=this._selectionListener)===null||o===void 0||o.dispose(),this._selectionListener=this._editor.onDidChangeCursorPosition(()=>{var a;this._ignoreSelection||((a=this._selectionListener)===null||a===void 0||a.dispose(),this._state=void 0)})}}),!this._state)return;this._state=this._state.map(r=>r.mov(e));const s=this._state.map(r=>Ze.fromPositions(r.ranges[r.index].getStartPosition(),r.ranges[r.index].getEndPosition()));this._ignoreSelection=!0;try{this._editor.setSelections(s)}finally{this._ignoreSelection=!1}}};Uy.ID="editor.contrib.smartSelectController";Uy=WV=Dat([Iat(1,Ge)],Uy);class o0e extends qe{constructor(e,t){super(t),this._forward=e}async run(e,t){const i=Uy.get(t);i&&await i.run(this._forward)}}class Tat extends o0e{constructor(){super(!0,{id:"editor.action.smartSelect.expand",label:v("smartSelect.expand","Expand Selection"),alias:"Expand Selection",precondition:void 0,kbOpts:{kbExpr:$.editorTextFocus,primary:1553,mac:{primary:3345,secondary:[1297]},weight:100},menuOpts:{menuId:B.MenubarSelectionMenu,group:"1_basic",title:v({key:"miSmartSelectGrow",comment:["&& denotes a mnemonic"]},"&&Expand Selection"),order:2}})}}Yt.registerCommandAlias("editor.action.smartSelect.grow","editor.action.smartSelect.expand");class Nat extends o0e{constructor(){super(!1,{id:"editor.action.smartSelect.shrink",label:v("smartSelect.shrink","Shrink Selection"),alias:"Shrink Selection",precondition:void 0,kbOpts:{kbExpr:$.editorTextFocus,primary:1551,mac:{primary:3343,secondary:[1295]},weight:100},menuOpts:{menuId:B.MenubarSelectionMenu,group:"1_basic",title:v({key:"miSmartSelectShrink",comment:["&& denotes a mnemonic"]},"&&Shrink Selection"),order:3}})}}ti(Uy.ID,Uy,4);Ae(Tat);Ae(Nat);async function a0e(n,e,t,i,s){const r=n.all(e).concat(new Eat(i.selectSubwords));r.length===1&&r.unshift(new Na);const o=[],a=[];for(const l of r)o.push(Promise.resolve(l.provideSelectionRanges(e,t,s)).then(c=>{if(Ir(c)&&c.length===t.length)for(let u=0;u<t.length;u++){a[u]||(a[u]=[]);for(const h of c[u])M.isIRange(h.range)&&M.containsPosition(h.range,t[u])&&a[u].push(M.lift(h.range))}},Jn));return await Promise.all(o),a.map(l=>{if(l.length===0)return[];l.sort((d,f)=>he.isBefore(d.getStartPosition(),f.getStartPosition())?1:he.isBefore(f.getStartPosition(),d.getStartPosition())||he.isBefore(d.getEndPosition(),f.getEndPosition())?-1:he.isBefore(f.getEndPosition(),d.getEndPosition())?1:0);const c=[];let u;for(const d of l)(!u||M.containsRange(d,u)&&!M.equalsRange(d,u))&&(c.push(d),u=d);if(!i.selectLeadingAndTrailingWhitespace)return c;const h=[c[0]];for(let d=1;d<c.length;d++){const f=c[d-1],g=c[d];if(g.startLineNumber!==f.startLineNumber||g.endLineNumber!==f.endLineNumber){const p=new M(f.startLineNumber,e.getLineFirstNonWhitespaceColumn(f.startLineNumber),f.endLineNumber,e.getLineLastNonWhitespaceColumn(f.endLineNumber));p.containsRange(f)&&!p.equalsRange(f)&&g.containsRange(p)&&!g.equalsRange(p)&&h.push(p);const m=new M(f.startLineNumber,1,f.endLineNumber,e.getLineMaxColumn(f.endLineNumber));m.containsRange(f)&&!m.equalsRange(p)&&g.containsRange(m)&&!g.equalsRange(m)&&h.push(m)}h.push(g)}return h})}Yt.registerCommand("_executeSelectionRangeProvider",async function(n,...e){const[t,i]=e;Si(it.isUri(t));const s=n.get(Ge).selectionRangeProvider,r=await n.get(Bo).createModelReference(t);try{return a0e(s,r.object.textEditorModel,i,{selectLeadingAndTrailingWhitespace:!0,selectSubwords:!0},Ft.None)}finally{r.dispose()}});const Aat=Object.freeze({View:{value:v("view","View"),original:"View"},Help:{value:v("help","Help"),original:"Help"},Test:{value:v("test","Test"),original:"Test"},File:{value:v("file","File"),original:"File"},Preferences:{value:v("preferences","Preferences"),original:"Preferences"},Developer:{value:v({key:"developer",comment:["A developer on Code itself or someone diagnosing issues in Code"]},"Developer"),original:"Developer"}});class Yne{constructor(e,t,i,s=null){this.startLineNumbers=e,this.endLineNumbers=t,this.lastLineRelativePosition=i,this.showEndForLine=s}equals(e){return!!e&&this.lastLineRelativePosition===e.lastLineRelativePosition&&this.showEndForLine===e.showEndForLine&&On(this.startLineNumbers,e.startLineNumbers)&&On(this.endLineNumbers,e.endLineNumbers)}}const Zne=sg("stickyScrollViewLayer",{createHTML:n=>n}),Y3="data-sticky-line-index",Xne="data-sticky-is-line",Pat="data-sticky-is-line-number",Qne="data-sticky-is-folding-icon";class Rat extends pe{constructor(e){super(),this._editor=e,this._foldingIconStore=new xe,this._rootDomNode=document.createElement("div"),this._lineNumbersDomNode=document.createElement("div"),this._linesDomNodeScrollable=document.createElement("div"),this._linesDomNode=document.createElement("div"),this._lineHeight=this._editor.getOption(66),this._stickyLines=[],this._lineNumbers=[],this._lastLineRelativePosition=0,this._minContentWidthInPx=0,this._isOnGlyphMargin=!1,this._lineNumbersDomNode.className="sticky-widget-line-numbers",this._lineNumbersDomNode.setAttribute("role","none"),this._linesDomNode.className="sticky-widget-lines",this._linesDomNode.setAttribute("role","list"),this._linesDomNodeScrollable.className="sticky-widget-lines-scrollable",this._linesDomNodeScrollable.appendChild(this._linesDomNode),this._rootDomNode.className="sticky-widget",this._rootDomNode.classList.toggle("peek",e instanceof hm),this._rootDomNode.appendChild(this._lineNumbersDomNode),this._rootDomNode.appendChild(this._linesDomNodeScrollable);const t=()=>{this._linesDomNode.style.left=this._editor.getOption(114).scrollWithEditor?`-${this._editor.getScrollLeft()}px`:"0px"};this._register(this._editor.onDidChangeConfiguration(i=>{i.hasChanged(114)&&t(),i.hasChanged(66)&&(this._lineHeight=this._editor.getOption(66))})),this._register(this._editor.onDidScrollChange(i=>{i.scrollLeftChanged&&t(),i.scrollWidthChanged&&this._updateWidgetWidth()})),this._register(this._editor.onDidChangeModel(()=>{t(),this._updateWidgetWidth()})),this._register(this._foldingIconStore),t(),this._register(this._editor.onDidLayoutChange(i=>{this._updateWidgetWidth()})),this._updateWidgetWidth()}get lineNumbers(){return this._lineNumbers}get lineNumberCount(){return this._lineNumbers.length}getStickyLineForLine(e){return this._stickyLines.find(t=>t.lineNumber===e)}getCurrentLines(){return this._lineNumbers}setState(e,t,i=1/0){if((!this._previousState&&!e||this._previousState&&this._previousState.equals(e))&&i===1/0)return;this._previousState=e;const s=this._stickyLines;if(this._clearStickyWidget(),!e||!this._editor._getViewModel())return;if(e.startLineNumbers.length*this._lineHeight+e.lastLineRelativePosition>0){this._lastLineRelativePosition=e.lastLineRelativePosition;const o=[...e.startLineNumbers];e.showEndForLine!==null&&(o[e.showEndForLine]=e.endLineNumbers[e.showEndForLine]),this._lineNumbers=o}else this._lastLineRelativePosition=0,this._lineNumbers=[];this._renderRootNode(s,t,i)}_updateWidgetWidth(){const e=this._editor.getLayoutInfo(),t=e.contentLeft;this._lineNumbersDomNode.style.width=`${t}px`,this._linesDomNodeScrollable.style.setProperty("--vscode-editorStickyScroll-scrollableWidth",`${this._editor.getScrollWidth()-e.verticalScrollbarWidth}px`),this._rootDomNode.style.width=`${e.width-e.verticalScrollbarWidth}px`}_clearStickyWidget(){this._stickyLines=[],this._foldingIconStore.clear(),ir(this._lineNumbersDomNode),ir(this._linesDomNode),this._rootDomNode.style.display="none"}_useFoldingOpacityTransition(e){this._lineNumbersDomNode.style.setProperty("--vscode-editorStickyScroll-foldingOpacityTransition",`opacity ${e?.5:0}s`)}_setFoldingIconsVisibility(e){for(const t of this._stickyLines){const i=t.foldingIcon;i&&i.setVisible(e?!0:i.isCollapsed)}}async _renderRootNode(e,t,i=1/0){const s=this._editor.getLayoutInfo();for(const[o,a]of this._lineNumbers.entries()){const l=e[o],c=a>=i||(l==null?void 0:l.lineNumber)!==a?this._renderChildNode(o,a,t,s):this._updateTopAndZIndexOfStickyLine(l);c&&(this._linesDomNode.appendChild(c.lineDomNode),this._lineNumbersDomNode.appendChild(c.lineNumberDomNode),this._stickyLines.push(c))}t&&(this._setFoldingHoverListeners(),this._useFoldingOpacityTransition(!this._isOnGlyphMargin));const r=this._lineNumbers.length*this._lineHeight+this._lastLineRelativePosition;if(r===0){this._clearStickyWidget();return}this._rootDomNode.style.display="block",this._lineNumbersDomNode.style.height=`${r}px`,this._linesDomNodeScrollable.style.height=`${r}px`,this._rootDomNode.style.height=`${r}px`,this._rootDomNode.style.marginLeft="0px",this._updateMinContentWidth(),this._editor.layoutOverlayWidget(this)}_setFoldingHoverListeners(){this._editor.getOption(109)==="mouseover"&&(this._foldingIconStore.add(Ce(this._lineNumbersDomNode,We.MOUSE_ENTER,t=>{this._isOnGlyphMargin=!0,this._setFoldingIconsVisibility(!0)})),this._foldingIconStore.add(Ce(this._lineNumbersDomNode,We.MOUSE_LEAVE,()=>{this._isOnGlyphMargin=!1,this._useFoldingOpacityTransition(!0),this._setFoldingIconsVisibility(!1)})))}_renderChildNode(e,t,i,s){const r=this._editor._getViewModel();if(!r)return;const o=r.coordinatesConverter.convertModelPositionToViewPosition(new he(t,1)).lineNumber,a=r.getViewLineRenderingData(o),l=this._editor.getOption(67);let c;try{c=ia.filter(a.inlineDecorations,o,a.minColumn,a.maxColumn)}catch{c=[]}const u=new Am(!0,!0,a.content,a.continuesWithWrappedLine,a.isBasicASCII,a.containsRTL,0,a.tokens,c,a.tabSize,a.startVisibleColumn,1,1,1,500,"none",!0,!0,null),h=new IC(2e3),d=yE(u,h);let f;Zne?f=Zne.createHTML(h.build()):f=h.build();const g=document.createElement("span");g.setAttribute(Y3,String(e)),g.setAttribute(Xne,""),g.setAttribute("role","listitem"),g.tabIndex=0,g.className="sticky-line-content",g.classList.add(`stickyLine${t}`),g.style.lineHeight=`${this._lineHeight}px`,g.innerHTML=f;const p=document.createElement("span");p.setAttribute(Y3,String(e)),p.setAttribute(Pat,""),p.className="sticky-line-number",p.style.lineHeight=`${this._lineHeight}px`;const m=s.contentLeft;p.style.width=`${m}px`;const _=document.createElement("span");l.renderType===1||l.renderType===3&&t%10===0?_.innerText=t.toString():l.renderType===2&&(_.innerText=Math.abs(t-this._editor.getPosition().lineNumber).toString()),_.className="sticky-line-number-inner",_.style.lineHeight=`${this._lineHeight}px`,_.style.width=`${s.lineNumbersWidth}px`,_.style.paddingLeft=`${s.lineNumbersLeft}px`,p.appendChild(_);const b=this._renderFoldingIconForLine(i,t);b&&p.appendChild(b.domNode),this._editor.applyFontInfo(g),this._editor.applyFontInfo(_),p.style.lineHeight=`${this._lineHeight}px`,g.style.lineHeight=`${this._lineHeight}px`,p.style.height=`${this._lineHeight}px`,g.style.height=`${this._lineHeight}px`;const y=new Mat(e,t,g,p,b,d.characterMapping);return this._updateTopAndZIndexOfStickyLine(y)}_updateTopAndZIndexOfStickyLine(e){var t;const i=e.index,s=e.lineDomNode,r=e.lineNumberDomNode,o=i===this._lineNumbers.length-1,a="0",l="1";s.style.zIndex=o?a:l,r.style.zIndex=o?a:l;const c=`${i*this._lineHeight+this._lastLineRelativePosition+(!((t=e.foldingIcon)===null||t===void 0)&&t.isCollapsed?1:0)}px`,u=`${i*this._lineHeight}px`;return s.style.top=o?c:u,r.style.top=o?c:u,e}_renderFoldingIconForLine(e,t){const i=this._editor.getOption(109);if(!e||i==="never")return;const s=e.regions,r=s.findRange(t),o=s.getStartLineNumber(r);if(!(t===o))return;const l=s.isCollapsed(r),c=new Oat(l,o,s.getEndLineNumber(r),this._lineHeight);return c.setVisible(this._isOnGlyphMargin?!0:l||i==="always"),c.domNode.setAttribute(Qne,""),c}_updateMinContentWidth(){this._minContentWidthInPx=0;for(const e of this._stickyLines)e.lineDomNode.scrollWidth>this._minContentWidthInPx&&(this._minContentWidthInPx=e.lineDomNode.scrollWidth);this._minContentWidthInPx+=this._editor.getLayoutInfo().verticalScrollbarWidth}getId(){return"editor.contrib.stickyScrollWidget"}getDomNode(){return this._rootDomNode}getPosition(){return{preference:null}}getMinContentWidthInPx(){return this._minContentWidthInPx}focusLineWithIndex(e){0<=e&&e<this._stickyLines.length&&this._stickyLines[e].lineDomNode.focus()}getEditorPositionFromNode(e){if(!e||e.children.length>0)return null;const t=this._getRenderedStickyLineFromChildDomNode(e);if(!t)return null;const i=mq(t.characterMapping,e,0);return new he(t.lineNumber,i)}getLineNumberFromChildDomNode(e){var t,i;return(i=(t=this._getRenderedStickyLineFromChildDomNode(e))===null||t===void 0?void 0:t.lineNumber)!==null&&i!==void 0?i:null}_getRenderedStickyLineFromChildDomNode(e){const t=this.getLineIndexFromChildDomNode(e);return t===null||t<0||t>=this._stickyLines.length?null:this._stickyLines[t]}getLineIndexFromChildDomNode(e){const t=this._getAttributeValue(e,Y3);return t?parseInt(t,10):null}isInStickyLine(e){return this._getAttributeValue(e,Xne)!==void 0}isInFoldingIconDomNode(e){return this._getAttributeValue(e,Qne)!==void 0}_getAttributeValue(e,t){for(;e&&e!==this._rootDomNode;){const i=e.getAttribute(t);if(i!==null)return i;e=e.parentElement}}}class Mat{constructor(e,t,i,s,r,o){this.index=e,this.lineNumber=t,this.lineDomNode=i,this.lineNumberDomNode=s,this.foldingIcon=r,this.characterMapping=o}}class Oat{constructor(e,t,i,s){this.isCollapsed=e,this.foldingStartLine=t,this.foldingEndLine=i,this.dimension=s,this.domNode=document.createElement("div"),this.domNode.style.width=`${s}px`,this.domNode.style.height=`${s}px`,this.domNode.className=nt.asClassName(e?F2:O2)}setVisible(e){this.domNode.style.cursor=e?"pointer":"default",this.domNode.style.opacity=e?"1":"0"}}class wk{constructor(e,t){this.startLineNumber=e,this.endLineNumber=t}}class hR{constructor(e,t,i){this.range=e,this.children=t,this.parent=i}}class l0e{constructor(e,t,i,s){this.uri=e,this.version=t,this.element=i,this.outlineProviderId=s}}var sF=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},Ex=function(n,e){return function(t,i){e(t,i,n)}},Sk;(function(n){n.OUTLINE_MODEL="outlineModel",n.FOLDING_PROVIDER_MODEL="foldingProviderModel",n.INDENTATION_MODEL="indentationModel"})(Sk||(Sk={}));var up;(function(n){n[n.VALID=0]="VALID",n[n.INVALID=1]="INVALID",n[n.CANCELED=2]="CANCELED"})(up||(up={}));let VV=class extends pe{constructor(e,t,i,s){super(),this._editor=e,this._languageConfigurationService=t,this._languageFeaturesService=i,this._modelProviders=[],this._modelPromise=null,this._updateScheduler=this._register(new Sc(300)),this._updateOperation=this._register(new xe);const r=new HV(i),o=new zV(this._editor,i),a=new $V(this._editor,t);switch(s){case Sk.OUTLINE_MODEL:this._modelProviders.push(r),this._modelProviders.push(o),this._modelProviders.push(a);break;case Sk.FOLDING_PROVIDER_MODEL:this._modelProviders.push(o),this._modelProviders.push(a);break;case Sk.INDENTATION_MODEL:this._modelProviders.push(a);break}}_cancelModelPromise(){this._modelPromise&&(this._modelPromise.cancel(),this._modelPromise=null)}async update(e,t,i){return this._updateOperation.clear(),this._updateOperation.add({dispose:()=>{this._cancelModelPromise(),this._updateScheduler.cancel()}}),this._cancelModelPromise(),await this._updateScheduler.trigger(async()=>{for(const s of this._modelProviders){const{statusPromise:r,modelPromise:o}=s.computeStickyModel(e,t,i);this._modelPromise=o;const a=await r;if(this._modelPromise!==o)return null;switch(a){case up.CANCELED:return this._updateOperation.clear(),null;case up.VALID:return s.stickyModel}}return null}).catch(s=>(vt(s),null))}};VV=sF([Ex(1,Bi),Ex(2,Ge)],VV);class c0e{constructor(){this._stickyModel=null}get stickyModel(){return this._stickyModel}_invalid(){return this._stickyModel=null,up.INVALID}computeStickyModel(e,t,i){if(i.isCancellationRequested||!this.isProviderValid(e))return{statusPromise:this._invalid(),modelPromise:null};const s=Ns(r=>this.createModelFromProvider(e,t,r));return{statusPromise:s.then(r=>this.isModelValid(r)?i.isCancellationRequested?up.CANCELED:(this._stickyModel=this.createStickyModel(e,t,i,r),up.VALID):this._invalid()).then(void 0,r=>(vt(r),up.CANCELED)),modelPromise:s}}isModelValid(e){return!0}isProviderValid(e){return!0}}let HV=class extends c0e{constructor(e){super(),this._languageFeaturesService=e}createModelFromProvider(e,t,i){return sf.create(this._languageFeaturesService.documentSymbolProvider,e,i)}createStickyModel(e,t,i,s){var r;const{stickyOutlineElement:o,providerID:a}=this._stickyModelFromOutlineModel(s,(r=this._stickyModel)===null||r===void 0?void 0:r.outlineProviderId);return new l0e(e.uri,t,o,a)}isModelValid(e){return e&&e.children.size>0}_stickyModelFromOutlineModel(e,t){let i;if(Vt.first(e.children.values())instanceof Pve){const a=Vt.find(e.children.values(),l=>l.id===t);if(a)i=a.children;else{let l="",c=-1,u;for(const[h,d]of e.children.entries()){const f=this._findSumOfRangesOfGroup(d);f>c&&(u=d,c=f,l=d.id)}t=l,i=u.children}}else i=e.children;const s=[],r=Array.from(i.values()).sort((a,l)=>{const c=new wk(a.symbol.range.startLineNumber,a.symbol.range.endLineNumber),u=new wk(l.symbol.range.startLineNumber,l.symbol.range.endLineNumber);return this._comparator(c,u)});for(const a of r)s.push(this._stickyModelFromOutlineElement(a,a.symbol.selectionRange.startLineNumber));return{stickyOutlineElement:new hR(void 0,s,void 0),providerID:t}}_stickyModelFromOutlineElement(e,t){const i=[];for(const r of e.children.values())if(r.symbol.selectionRange.startLineNumber!==r.symbol.range.endLineNumber)if(r.symbol.selectionRange.startLineNumber!==t)i.push(this._stickyModelFromOutlineElement(r,r.symbol.selectionRange.startLineNumber));else for(const o of r.children.values())i.push(this._stickyModelFromOutlineElement(o,r.symbol.selectionRange.startLineNumber));i.sort((r,o)=>this._comparator(r.range,o.range));const s=new wk(e.symbol.selectionRange.startLineNumber,e.symbol.range.endLineNumber);return new hR(s,i,void 0)}_comparator(e,t){return e.startLineNumber!==t.startLineNumber?e.startLineNumber-t.startLineNumber:t.endLineNumber-e.endLineNumber}_findSumOfRangesOfGroup(e){let t=0;for(const i of e.children.values())t+=this._findSumOfRangesOfGroup(i);return e instanceof lV?t+e.symbol.range.endLineNumber-e.symbol.selectionRange.startLineNumber:t}};HV=sF([Ex(0,Ge)],HV);class u0e extends c0e{constructor(e){super(),this._foldingLimitReporter=new Eve(e)}createStickyModel(e,t,i,s){const r=this._fromFoldingRegions(s);return new l0e(e.uri,t,r,void 0)}isModelValid(e){return e!==null}_fromFoldingRegions(e){const t=e.length,i=[],s=new hR(void 0,[],void 0);for(let r=0;r<t;r++){const o=e.getParentIndex(r);let a;o!==-1?a=i[o]:a=s;const l=new hR(new wk(e.getStartLineNumber(r),e.getEndLineNumber(r)+1),[],a);a.children.push(l),i.push(l)}return s}}let $V=class extends u0e{constructor(e,t){super(e),this._languageConfigurationService=t}createModelFromProvider(e,t,i){return new hG(e,this._languageConfigurationService,this._foldingLimitReporter).compute(i)}};$V=sF([Ex(1,Bi)],$V);let zV=class extends u0e{constructor(e,t){super(e),this._languageFeaturesService=t}isProviderValid(e){return Sd.getFoldingRangeProviders(this._languageFeaturesService,e).length>0}createModelFromProvider(e,t,i){const s=Sd.getFoldingRangeProviders(this._languageFeaturesService,e);return new fG(e,s,()=>this.createModelFromProvider(e,t,i),this._foldingLimitReporter,void 0).compute(i)}};zV=sF([Ex(1,Ge)],zV);var Fat=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},Jne=function(n,e){return function(t,i){e(t,i,n)}};class Bat{constructor(e,t,i){this.startLineNumber=e,this.endLineNumber=t,this.nestingDepth=i}}let UV=class extends pe{constructor(e,t,i){super(),this._languageFeaturesService=t,this._languageConfigurationService=i,this._onDidChangeStickyScroll=this._register(new ue),this.onDidChangeStickyScroll=this._onDidChangeStickyScroll.event,this._options=null,this._model=null,this._cts=null,this._stickyModelProvider=null,this._editor=e,this._sessionStore=this._register(new xe),this._updateSoon=this._register(new Ei(()=>this.update(),50)),this._register(this._editor.onDidChangeConfiguration(s=>{s.hasChanged(114)&&this.readConfiguration()})),this.readConfiguration()}readConfiguration(){this._stickyModelProvider=null,this._sessionStore.clear(),this._options=this._editor.getOption(114),this._options.enabled&&(this._stickyModelProvider=this._sessionStore.add(new VV(this._editor,this._languageConfigurationService,this._languageFeaturesService,this._options.defaultModel)),this._sessionStore.add(this._editor.onDidChangeModel(()=>{this._model=null,this._onDidChangeStickyScroll.fire(),this.update()})),this._sessionStore.add(this._editor.onDidChangeHiddenAreas(()=>this.update())),this._sessionStore.add(this._editor.onDidChangeModelContent(()=>this._updateSoon.schedule())),this._sessionStore.add(this._languageFeaturesService.documentSymbolProvider.onDidChange(()=>this.update())),this.update())}getVersionId(){var e;return(e=this._model)===null||e===void 0?void 0:e.version}async update(){var e;(e=this._cts)===null||e===void 0||e.dispose(!0),this._cts=new es,await this.updateStickyModel(this._cts.token),this._onDidChangeStickyScroll.fire()}async updateStickyModel(e){if(!this._editor.hasModel()||!this._stickyModelProvider||this._editor.getModel().isTooLargeForTokenization()){this._model=null;return}const t=this._editor.getModel(),i=t.getVersionId(),s=await this._stickyModelProvider.update(t,i,e);e.isCancellationRequested||(this._model=s)}updateIndex(e){return e===-1?e=0:e<0&&(e=-e-2),e}getCandidateStickyLinesIntersectingFromStickyModel(e,t,i,s,r){if(t.children.length===0)return;let o=r;const a=[];for(let u=0;u<t.children.length;u++){const h=t.children[u];h.range&&a.push(h.range.startLineNumber)}const l=this.updateIndex(CL(a,e.startLineNumber,(u,h)=>u-h)),c=this.updateIndex(CL(a,e.startLineNumber+s,(u,h)=>u-h));for(let u=l;u<=c;u++){const h=t.children[u];if(!h)return;if(h.range){const d=h.range.startLineNumber,f=h.range.endLineNumber;e.startLineNumber<=f+1&&d-1<=e.endLineNumber&&d!==o&&(o=d,i.push(new Bat(d,f-1,s+1)),this.getCandidateStickyLinesIntersectingFromStickyModel(e,h,i,s+1,d))}else this.getCandidateStickyLinesIntersectingFromStickyModel(e,h,i,s,r)}}getCandidateStickyLinesIntersecting(e){var t,i;if(!(!((t=this._model)===null||t===void 0)&&t.element))return[];let s=[];this.getCandidateStickyLinesIntersectingFromStickyModel(e,this._model.element,s,0,-1);const r=(i=this._editor._getViewModel())===null||i===void 0?void 0:i.getHiddenAreas();if(r)for(const o of r)s=s.filter(a=>!(a.startLineNumber>=o.startLineNumber&&a.endLineNumber<=o.endLineNumber+1));return s}};UV=Fat([Jne(1,Ge),Jne(2,Bi)],UV);var Wat=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},d0=function(n,e){return function(t,i){e(t,i,n)}},jV;let kd=jV=class extends pe{constructor(e,t,i,s,r,o,a){super(),this._editor=e,this._contextMenuService=t,this._languageFeaturesService=i,this._instaService=s,this._contextKeyService=a,this._sessionStore=new xe,this._foldingModel=null,this._maxStickyLines=Number.MAX_SAFE_INTEGER,this._candidateDefinitionsLength=-1,this._focusedStickyElementIndex=-1,this._enabled=!1,this._focused=!1,this._positionRevealed=!1,this._onMouseDown=!1,this._endLineNumbers=[],this._showEndForLine=null,this._stickyScrollWidget=new Rat(this._editor),this._stickyLineCandidateProvider=new UV(this._editor,i,r),this._register(this._stickyScrollWidget),this._register(this._stickyLineCandidateProvider),this._widgetState=new Yne([],[],0),this._readConfiguration();const l=this._stickyScrollWidget.getDomNode();this._register(this._editor.onDidChangeConfiguration(u=>{(u.hasChanged(114)||u.hasChanged(72)||u.hasChanged(66)||u.hasChanged(109))&&this._readConfiguration()})),this._register(Ce(l,We.CONTEXT_MENU,async u=>{this._onContextMenu(pt(l),u)})),this._stickyScrollFocusedContextKey=$.stickyScrollFocused.bindTo(this._contextKeyService),this._stickyScrollVisibleContextKey=$.stickyScrollVisible.bindTo(this._contextKeyService);const c=this._register(gd(l));this._register(c.onDidBlur(u=>{this._positionRevealed===!1&&l.clientHeight===0?(this._focusedStickyElementIndex=-1,this.focus()):this._disposeFocusStickyScrollStore()})),this._register(c.onDidFocus(u=>{this.focus()})),this._registerMouseListeners(),this._register(Ce(l,We.MOUSE_DOWN,u=>{this._onMouseDown=!0}))}static get(e){return e.getContribution(jV.ID)}_disposeFocusStickyScrollStore(){var e;this._stickyScrollFocusedContextKey.set(!1),(e=this._focusDisposableStore)===null||e===void 0||e.dispose(),this._focused=!1,this._positionRevealed=!1,this._onMouseDown=!1}focus(){if(this._onMouseDown){this._onMouseDown=!1,this._editor.focus();return}this._stickyScrollFocusedContextKey.get()!==!0&&(this._focused=!0,this._focusDisposableStore=new xe,this._stickyScrollFocusedContextKey.set(!0),this._focusedStickyElementIndex=this._stickyScrollWidget.lineNumbers.length-1,this._stickyScrollWidget.focusLineWithIndex(this._focusedStickyElementIndex))}focusNext(){this._focusedStickyElementIndex<this._stickyScrollWidget.lineNumberCount-1&&this._focusNav(!0)}focusPrevious(){this._focusedStickyElementIndex>0&&this._focusNav(!1)}selectEditor(){this._editor.focus()}_focusNav(e){this._focusedStickyElementIndex=e?this._focusedStickyElementIndex+1:this._focusedStickyElementIndex-1,this._stickyScrollWidget.focusLineWithIndex(this._focusedStickyElementIndex)}goToFocused(){const e=this._stickyScrollWidget.lineNumbers;this._disposeFocusStickyScrollStore(),this._revealPosition({lineNumber:e[this._focusedStickyElementIndex],column:1})}_revealPosition(e){this._reveaInEditor(e,()=>this._editor.revealPosition(e))}_revealLineInCenterIfOutsideViewport(e){this._reveaInEditor(e,()=>this._editor.revealLineInCenterIfOutsideViewport(e.lineNumber,0))}_reveaInEditor(e,t){this._focused&&this._disposeFocusStickyScrollStore(),this._positionRevealed=!0,t(),this._editor.setSelection(M.fromPositions(e)),this._editor.focus()}_registerMouseListeners(){const e=this._register(new xe),t=this._register(new f2(this._editor,{extractLineNumberFromMouseEvent:r=>{const o=this._stickyScrollWidget.getEditorPositionFromNode(r.target.element);return o?o.lineNumber:0}})),i=r=>{if(!this._editor.hasModel()||r.target.type!==12||r.target.detail!==this._stickyScrollWidget.getId())return null;const o=r.target.element;if(!o||o.innerText!==o.innerHTML)return null;const a=this._stickyScrollWidget.getEditorPositionFromNode(o);return a?{range:new M(a.lineNumber,a.column,a.lineNumber,a.column+o.innerText.length),textElement:o}:null},s=this._stickyScrollWidget.getDomNode();this._register(Mn(s,We.CLICK,r=>{if(r.ctrlKey||r.altKey||r.metaKey||!r.leftButton)return;if(r.shiftKey){const c=this._stickyScrollWidget.getLineIndexFromChildDomNode(r.target);if(c===null)return;const u=new he(this._endLineNumbers[c],1);this._revealLineInCenterIfOutsideViewport(u);return}if(this._stickyScrollWidget.isInFoldingIconDomNode(r.target)){const c=this._stickyScrollWidget.getLineNumberFromChildDomNode(r.target);this._toggleFoldingRegionForLine(c);return}if(!this._stickyScrollWidget.isInStickyLine(r.target))return;let l=this._stickyScrollWidget.getEditorPositionFromNode(r.target);if(!l){const c=this._stickyScrollWidget.getLineNumberFromChildDomNode(r.target);if(c===null)return;l=new he(c,1)}this._revealPosition(l)})),this._register(Mn(s,We.MOUSE_MOVE,r=>{if(r.shiftKey){const o=this._stickyScrollWidget.getLineIndexFromChildDomNode(r.target);if(o===null||this._showEndForLine!==null&&this._showEndForLine===o)return;this._showEndForLine=o,this._renderStickyScroll();return}this._showEndForLine!==null&&(this._showEndForLine=null,this._renderStickyScroll())})),this._register(Ce(s,We.MOUSE_LEAVE,r=>{this._showEndForLine!==null&&(this._showEndForLine=null,this._renderStickyScroll())})),this._register(t.onMouseMoveOrRelevantKeyDown(([r,o])=>{const a=i(r);if(!a||!r.hasTriggerModifier||!this._editor.hasModel()){e.clear();return}const{range:l,textElement:c}=a;if(!l.equalsRange(this._stickyRangeProjectedOnEditor))this._stickyRangeProjectedOnEditor=l,e.clear();else if(c.style.textDecoration==="underline")return;const u=new es;e.add(st(()=>u.dispose(!0)));let h;E2(this._languageFeaturesService.definitionProvider,this._editor.getModel(),new he(l.startLineNumber,l.startColumn+1),u.token).then(d=>{if(!u.token.isCancellationRequested)if(d.length!==0){this._candidateDefinitionsLength=d.length;const f=c;h!==f?(e.clear(),h=f,h.style.textDecoration="underline",e.add(st(()=>{h.style.textDecoration="none"}))):h||(h=f,h.style.textDecoration="underline",e.add(st(()=>{h.style.textDecoration="none"})))}else e.clear()})})),this._register(t.onCancel(()=>{e.clear()})),this._register(t.onExecute(async r=>{if(r.target.type!==12||r.target.detail!==this._stickyScrollWidget.getId())return;const o=this._stickyScrollWidget.getEditorPositionFromNode(r.target.element);o&&(this._candidateDefinitionsLength>1&&(this._focused&&this._disposeFocusStickyScrollStore(),this._revealPosition({lineNumber:o.lineNumber,column:1})),this._instaService.invokeFunction(Vve,r,this._editor,{uri:this._editor.getModel().uri,range:this._stickyRangeProjectedOnEditor}))}))}_onContextMenu(e,t){const i=new ac(e,t);this._contextMenuService.showContextMenu({menuId:B.StickyScrollContext,getAnchor:()=>i})}_toggleFoldingRegionForLine(e){if(!this._foldingModel||e===null)return;const t=this._stickyScrollWidget.getStickyLineForLine(e),i=t==null?void 0:t.foldingIcon;if(!i)return;wve(this._foldingModel,Number.MAX_VALUE,[e]),i.isCollapsed=!i.isCollapsed;const s=(i.isCollapsed?this._editor.getTopForLineNumber(i.foldingEndLine):this._editor.getTopForLineNumber(i.foldingStartLine))-this._editor.getOption(66)*t.index+1;this._editor.setScrollTop(s),this._renderStickyScroll(e)}_readConfiguration(){const e=this._editor.getOption(114);if(e.enabled===!1){this._editor.removeOverlayWidget(this._stickyScrollWidget),this._sessionStore.clear(),this._enabled=!1;return}else e.enabled&&!this._enabled&&(this._editor.addOverlayWidget(this._stickyScrollWidget),this._sessionStore.add(this._editor.onDidScrollChange(i=>{i.scrollTopChanged&&(this._showEndForLine=null,this._renderStickyScroll())})),this._sessionStore.add(this._editor.onDidLayoutChange(()=>this._onDidResize())),this._sessionStore.add(this._editor.onDidChangeModelTokens(i=>this._onTokensChange(i))),this._sessionStore.add(this._stickyLineCandidateProvider.onDidChangeStickyScroll(()=>{this._showEndForLine=null,this._renderStickyScroll()})),this._enabled=!0);this._editor.getOption(67).renderType===2&&this._sessionStore.add(this._editor.onDidChangeCursorPosition(()=>{this._showEndForLine=null,this._renderStickyScroll(-1)}))}_needsUpdate(e){const t=this._stickyScrollWidget.getCurrentLines();for(const i of t)for(const s of e.ranges)if(i>=s.fromLineNumber&&i<=s.toLineNumber)return!0;return!1}_onTokensChange(e){this._needsUpdate(e)&&this._renderStickyScroll(-1)}_onDidResize(){const t=this._editor.getLayoutInfo().height/this._editor.getOption(66);this._maxStickyLines=Math.round(t*.25)}async _renderStickyScroll(e=1/0){var t,i;const s=this._editor.getModel();if(!s||s.isTooLargeForTokenization()){this._foldingModel=null,this._stickyScrollWidget.setState(void 0,null,e);return}const r=this._stickyLineCandidateProvider.getVersionId();if(r===void 0||r===s.getVersionId())if(this._foldingModel=(i=await((t=Sd.get(this._editor))===null||t===void 0?void 0:t.getFoldingModel()))!==null&&i!==void 0?i:null,this._widgetState=this.findScrollWidgetState(),this._stickyScrollVisibleContextKey.set(this._widgetState.startLineNumbers.length!==0),!this._focused)this._stickyScrollWidget.setState(this._widgetState,this._foldingModel,e);else if(this._focusedStickyElementIndex===-1)this._stickyScrollWidget.setState(this._widgetState,this._foldingModel,e),this._focusedStickyElementIndex=this._stickyScrollWidget.lineNumberCount-1,this._focusedStickyElementIndex!==-1&&this._stickyScrollWidget.focusLineWithIndex(this._focusedStickyElementIndex);else{const o=this._stickyScrollWidget.lineNumbers[this._focusedStickyElementIndex];this._stickyScrollWidget.setState(this._widgetState,this._foldingModel,e),this._stickyScrollWidget.lineNumberCount===0?this._focusedStickyElementIndex=-1:(this._stickyScrollWidget.lineNumbers.includes(o)||(this._focusedStickyElementIndex=this._stickyScrollWidget.lineNumberCount-1),this._stickyScrollWidget.focusLineWithIndex(this._focusedStickyElementIndex))}}findScrollWidgetState(){const e=this._editor.getOption(66),t=Math.min(this._maxStickyLines,this._editor.getOption(114).maxLineCount),i=this._editor.getScrollTop();let s=0;const r=[],o=[],a=this._editor.getVisibleRanges();if(a.length!==0){const l=new wk(a[0].startLineNumber,a[a.length-1].endLineNumber),c=this._stickyLineCandidateProvider.getCandidateStickyLinesIntersecting(l);for(const u of c){const h=u.startLineNumber,d=u.endLineNumber,f=u.nestingDepth;if(d-h>0){const g=(f-1)*e,p=f*e,m=this._editor.getBottomForLineNumber(h)-i,_=this._editor.getTopForLineNumber(d)-i,b=this._editor.getBottomForLineNumber(d)-i;if(g>_&&g<=b){r.push(h),o.push(d+1),s=b-p;break}else p>m&&p<=b&&(r.push(h),o.push(d+1));if(r.length===t)break}}}return this._endLineNumbers=o,new Yne(r,o,s,this._showEndForLine)}dispose(){super.dispose(),this._sessionStore.dispose()}};kd.ID="store.contrib.stickyScrollController";kd=jV=Wat([d0(1,zl),d0(2,Ge),d0(3,at),d0(4,Bi),d0(5,Ul),d0(6,ft)],kd);class Vat extends sl{constructor(){super({id:"editor.action.toggleStickyScroll",title:{value:v("toggleStickyScroll","Toggle Sticky Scroll"),mnemonicTitle:v({key:"mitoggleStickyScroll",comment:["&& denotes a mnemonic"]},"&&Toggle Sticky Scroll"),original:"Toggle Sticky Scroll"},category:Aat.View,toggled:{condition:ke.equals("config.editor.stickyScroll.enabled",!0),title:v("stickyScroll","Sticky Scroll"),mnemonicTitle:v({key:"miStickyScroll",comment:["&& denotes a mnemonic"]},"&&Sticky Scroll")},menu:[{id:B.CommandPalette},{id:B.MenubarAppearanceMenu,group:"4_editor",order:3},{id:B.StickyScrollContext}]})}async run(e){const t=e.get(Ut),i=!t.getValue("editor.stickyScroll.enabled");return t.updateValue("editor.stickyScroll.enabled",i)}}const rF=100;class Hat extends Hu{constructor(){super({id:"editor.action.focusStickyScroll",title:{value:v("focusStickyScroll","Focus Sticky Scroll"),mnemonicTitle:v({key:"mifocusStickyScroll",comment:["&& denotes a mnemonic"]},"&&Focus Sticky Scroll"),original:"Focus Sticky Scroll"},precondition:ke.and(ke.has("config.editor.stickyScroll.enabled"),$.stickyScrollVisible),menu:[{id:B.CommandPalette}]})}runEditorCommand(e,t){var i;(i=kd.get(t))===null||i===void 0||i.focus()}}class $at extends Hu{constructor(){super({id:"editor.action.selectNextStickyScrollLine",title:{value:v("selectNextStickyScrollLine.title","Select next sticky scroll line"),original:"Select next sticky scroll line"},precondition:$.stickyScrollFocused.isEqualTo(!0),keybinding:{weight:rF,primary:18}})}runEditorCommand(e,t){var i;(i=kd.get(t))===null||i===void 0||i.focusNext()}}class zat extends Hu{constructor(){super({id:"editor.action.selectPreviousStickyScrollLine",title:{value:v("selectPreviousStickyScrollLine.title","Select previous sticky scroll line"),original:"Select previous sticky scroll line"},precondition:$.stickyScrollFocused.isEqualTo(!0),keybinding:{weight:rF,primary:16}})}runEditorCommand(e,t){var i;(i=kd.get(t))===null||i===void 0||i.focusPrevious()}}class Uat extends Hu{constructor(){super({id:"editor.action.goToFocusedStickyScrollLine",title:{value:v("goToFocusedStickyScrollLine.title","Go to focused sticky scroll line"),original:"Go to focused sticky scroll line"},precondition:$.stickyScrollFocused.isEqualTo(!0),keybinding:{weight:rF,primary:3}})}runEditorCommand(e,t){var i;(i=kd.get(t))===null||i===void 0||i.goToFocused()}}class jat extends Hu{constructor(){super({id:"editor.action.selectEditor",title:{value:v("selectEditor.title","Select Editor"),original:"Select Editor"},precondition:$.stickyScrollFocused.isEqualTo(!0),keybinding:{weight:rF,primary:9}})}runEditorCommand(e,t){var i;(i=kd.get(t))===null||i===void 0||i.selectEditor()}}ti(kd.ID,kd,1);Zi(Vat);Zi(Hat);Zi(zat);Zi($at);Zi(Uat);Zi(jat);var IG=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},f_=function(n,e){return function(t,i){e(t,i,n)}},d1;class qat{constructor(e,t,i,s,r,o){this.range=e,this.insertText=t,this.filterText=i,this.additionalTextEdits=s,this.command=r,this.completion=o}}let qV=class extends lBe{constructor(e,t,i,s,r,o){super(r.disposable),this.model=e,this.line=t,this.word=i,this.completionModel=s,this._suggestMemoryService=o}canBeReused(e,t,i){return this.model===e&&this.line===t&&this.word.word.length>0&&this.word.startColumn===i.startColumn&&this.word.endColumn<i.endColumn&&this.completionModel.getIncompleteProvider().size===0}get items(){var e;const t=[],{items:i}=this.completionModel,s=this._suggestMemoryService.select(this.model,{lineNumber:this.line,column:this.word.endColumn+this.completionModel.lineContext.characterCountDelta},i),r=Vt.slice(i,s),o=Vt.slice(i,0,s);let a=5;for(const l of Vt.concat(r,o)){if(l.score===Lu.Default)continue;const c=new M(l.editStart.lineNumber,l.editStart.column,l.editInsertEnd.lineNumber,l.editInsertEnd.column+this.completionModel.lineContext.characterCountDelta),u=l.completion.insertTextRules&&l.completion.insertTextRules&4?{snippet:l.completion.insertText}:l.completion.insertText;t.push(new qat(c,u,(e=l.filterTextLow)!==null&&e!==void 0?e:l.labelLow,l.completion.additionalTextEdits,l.completion.command,l)),a-->=0&&l.resolve(Ft.None)}return t}};qV=IG([f_(5,H2)],qV);let KV=class{constructor(e,t,i,s){this._getEditorOption=e,this._languageFeatureService=t,this._clipboardService=i,this._suggestMemoryService=s}async provideInlineCompletions(e,t,i,s){var r;if(i.selectedSuggestionInfo)return;const o=this._getEditorOption(88,e);if(J0.isAllOff(o))return;e.tokenization.tokenizeIfCheap(t.lineNumber);const a=e.tokenization.getLineTokens(t.lineNumber),l=a.getStandardTokenType(a.findTokenIndexAtOffset(Math.max(t.column-1-1,0)));if(J0.valueFor(o,l)!=="inline")return;let c=e.getWordAtPosition(t),u;if(c!=null&&c.word||(u=this._getTriggerCharacterInfo(e,t)),!(c!=null&&c.word)&&!u||(c||(c=e.getWordUntilPosition(t)),c.endColumn!==t.column))return;let h;const d=e.getValueInRange(new M(t.lineNumber,1,t.lineNumber,t.column));if(!u&&(!((r=this._lastResult)===null||r===void 0)&&r.canBeReused(e,t.lineNumber,c))){const f=new zne(d,t.column-this._lastResult.word.endColumn);this._lastResult.completionModel.lineContext=f,this._lastResult.acquire(),h=this._lastResult}else{const f=await pG(this._languageFeatureService.completionProvider,e,t,new px(void 0,void 0,u==null?void 0:u.providers),u&&{triggerKind:1,triggerCharacter:u.ch},s);let g;f.needsClipboard&&(g=await this._clipboardService.readText());const p=new Kg(f.items,t.column,new zne(d,0),ru.None,this._getEditorOption(117,e),this._getEditorOption(111,e),{boostFullMatch:!1,firstMatchCanBeWeak:!1},g);h=new qV(e,t.lineNumber,c,p,f,this._suggestMemoryService)}return this._lastResult=h,h}handleItemDidShow(e,t){t.completion.resolve(Ft.None)}freeInlineCompletions(e){e.release()}_getTriggerCharacterInfo(e,t){var i;const s=e.getValueInRange(M.fromPositions({lineNumber:t.lineNumber,column:t.column-1},t)),r=new Set;for(const o of this._languageFeatureService.completionProvider.all(e))!((i=o.triggerCharacters)===null||i===void 0)&&i.includes(s)&&r.add(o);if(r.size!==0)return{providers:r,ch:s}}};KV=IG([f_(1,Ge),f_(2,ag),f_(3,H2)],KV);let dR=d1=class{constructor(e,t,i,s){if(++d1._counter===1){const r=s.createInstance(KV,(o,a)=>{var l;return((l=i.listCodeEditors().find(u=>u.getModel()===a))!==null&&l!==void 0?l:e).getOption(o)});d1._disposable=t.inlineCompletionsProvider.register("*",r)}}dispose(){var e;--d1._counter===0&&((e=d1._disposable)===null||e===void 0||e.dispose(),d1._disposable=void 0)}};dR._counter=0;dR=d1=IG([f_(1,Ge),f_(2,ri),f_(3,at)],dR);ti("suggest.inlineCompletionsProvider",dR,0);class Kat extends qe{constructor(){super({id:"editor.action.forceRetokenize",label:v("forceRetokenize","Developer: Force Retokenize"),alias:"Developer: Force Retokenize",precondition:void 0})}run(e,t){if(!t.hasModel())return;const i=t.getModel();i.tokenization.resetTokenization();const s=new Nr;i.tokenization.forceTokenization(i.getLineCount()),s.stop(),console.log(`tokenization took ${s.elapsed()}`)}}Ae(Kat);class oF extends sl{constructor(){super({id:oF.ID,title:{value:v({key:"toggle.tabMovesFocus",comment:["Turn on/off use of tab key for moving focus around VS Code"]},"Toggle Tab Key Moves Focus"),original:"Toggle Tab Key Moves Focus"},precondition:void 0,keybinding:{primary:2091,mac:{primary:1323},weight:100},f1:!0})}run(){const t=!_y.getTabFocusMode();_y.setTabFocusMode(t),ha(t?v("toggle.tabMovesFocus.on","Pressing Tab will now move focus to the next focusable element"):v("toggle.tabMovesFocus.off","Pressing Tab will now insert the tab character"))}}oF.ID="editor.action.toggleTabFocusMode";Zi(oF);var Gat=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},Yat=function(n,e){return function(t,i){e(t,i,n)}};let GV=class extends pe{get enabled(){return this._enabled}set enabled(e){e?(this.el.setAttribute("aria-disabled","false"),this.el.tabIndex=0,this.el.style.pointerEvents="auto",this.el.style.opacity="1",this.el.style.cursor="pointer",this._enabled=!1):(this.el.setAttribute("aria-disabled","true"),this.el.tabIndex=-1,this.el.style.pointerEvents="none",this.el.style.opacity="0.4",this.el.style.cursor="default",this._enabled=!0),this._enabled=e}constructor(e,t,i={},s){var r;super(),this._link=t,this._enabled=!0,this.el=Le(e,Te("a.monaco-link",{tabIndex:(r=t.tabIndex)!==null&&r!==void 0?r:0,href:t.href,title:t.title},t.label)),this.el.setAttribute("role","button");const o=this._register(new Ht(this.el,"click")),a=this._register(new Ht(this.el,"keypress")),l=Ve.chain(a.event,h=>h.map(d=>new Ki(d)).filter(d=>d.keyCode===3)),c=this._register(new Ht(this.el,Oi.Tap)).event;this._register(Ri.addTarget(this.el));const u=Ve.any(o.event,l,c);this._register(u(h=>{this.enabled&&(Tt.stop(h,!0),i!=null&&i.opener?i.opener(this._link.href):s.open(this._link.href,{allowCommands:!0}))})),this.enabled=!0}};GV=Gat([Yat(3,_a)],GV);var h0e=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},d0e=function(n,e){return function(t,i){e(t,i,n)}};const Zat=26;let YV=class extends pe{constructor(e,t){super(),this._editor=e,this.instantiationService=t,this.banner=this._register(this.instantiationService.createInstance(ZV))}hide(){this._editor.setBanner(null,0),this.banner.clear()}show(e){this.banner.show({...e,onClose:()=>{var t;this.hide(),(t=e.onClose)===null||t===void 0||t.call(e)}}),this._editor.setBanner(this.banner.element,Zat)}};YV=h0e([d0e(1,at)],YV);let ZV=class extends pe{constructor(e){super(),this.instantiationService=e,this.markdownRenderer=this.instantiationService.createInstance(Qf,{}),this.element=Te("div.editor-banner"),this.element.tabIndex=0}getAriaLabel(e){if(e.ariaLabel)return e.ariaLabel;if(typeof e.message=="string")return e.message}getBannerMessage(e){if(typeof e=="string"){const t=Te("span");return t.innerText=e,t}return this.markdownRenderer.render(e).element}clear(){ir(this.element)}show(e){ir(this.element);const t=this.getAriaLabel(e);t&&this.element.setAttribute("aria-label",t);const i=Le(this.element,Te("div.icon-container"));i.setAttribute("aria-hidden","true"),e.icon&&i.appendChild(Te(`div${nt.asCSSSelector(e.icon)}`));const s=Le(this.element,Te("div.message-container"));if(s.setAttribute("aria-hidden","true"),s.appendChild(this.getBannerMessage(e.message)),this.messageActionsContainer=Le(this.element,Te("div.message-actions-container")),e.actions)for(const o of e.actions)this._register(this.instantiationService.createInstance(GV,this.messageActionsContainer,{...o,tabIndex:-1},{}));const r=Le(this.element,Te("div.action-container"));this.actionBar=this._register(new Vl(r)),this.actionBar.push(this._register(new ho("banner.close","Close Banner",nt.asClassName(n1e),!0,()=>{typeof e.onClose=="function"&&e.onClose()})),{icon:!0,label:!1}),this.actionBar.setFocusable(!1)}};ZV=h0e([d0e(0,at)],ZV);const f0e=Bt("workspaceTrustManagementService");var TG=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},Ob=function(n,e){return function(t,i){e(t,i,n)}};const Xat=Gn("extensions-warning-message",Pe.warning,v("warningIcon","Icon shown with a warning message in the extensions editor."));let jy=class extends pe{constructor(e,t,i,s){super(),this._editor=e,this._editorWorkerService=t,this._workspaceTrustService=i,this._highlighter=null,this._bannerClosed=!1,this._updateState=r=>{if(r&&r.hasMore){if(this._bannerClosed)return;const o=Math.max(r.ambiguousCharacterCount,r.nonBasicAsciiCharacterCount,r.invisibleCharacterCount);let a;if(r.nonBasicAsciiCharacterCount>=o)a={message:v("unicodeHighlighting.thisDocumentHasManyNonBasicAsciiUnicodeCharacters","This document contains many non-basic ASCII unicode characters"),command:new qC};else if(r.ambiguousCharacterCount>=o)a={message:v("unicodeHighlighting.thisDocumentHasManyAmbiguousUnicodeCharacters","This document contains many ambiguous unicode characters"),command:new Fm};else if(r.invisibleCharacterCount>=o)a={message:v("unicodeHighlighting.thisDocumentHasManyInvisibleUnicodeCharacters","This document contains many invisible unicode characters"),command:new jC};else throw new Error("Unreachable");this._bannerController.show({id:"unicodeHighlightBanner",message:a.message,icon:Xat,actions:[{label:a.command.shortLabel,href:`command:${a.command.id}`}],onClose:()=>{this._bannerClosed=!0}})}else this._bannerController.hide()},this._bannerController=this._register(s.createInstance(YV,e)),this._register(this._editor.onDidChangeModel(()=>{this._bannerClosed=!1,this._updateHighlighter()})),this._options=e.getOption(124),this._register(i.onDidChangeTrust(r=>{this._updateHighlighter()})),this._register(e.onDidChangeConfiguration(r=>{r.hasChanged(124)&&(this._options=e.getOption(124),this._updateHighlighter())})),this._updateHighlighter()}dispose(){this._highlighter&&(this._highlighter.dispose(),this._highlighter=null),super.dispose()}_updateHighlighter(){if(this._updateState(null),this._highlighter&&(this._highlighter.dispose(),this._highlighter=null),!this._editor.hasModel())return;const e=Qat(this._workspaceTrustService.isWorkspaceTrusted(),this._options);if([e.nonBasicASCII,e.ambiguousCharacters,e.invisibleCharacters].every(i=>i===!1))return;const t={nonBasicASCII:e.nonBasicASCII,ambiguousCharacters:e.ambiguousCharacters,invisibleCharacters:e.invisibleCharacters,includeComments:e.includeComments,includeStrings:e.includeStrings,allowedCodePoints:Object.keys(e.allowedCharacters).map(i=>i.codePointAt(0)),allowedLocales:Object.keys(e.allowedLocales).map(i=>i==="_os"?new Intl.NumberFormat().resolvedOptions().locale:i==="_vscode"?NBe:i)};this._editorWorkerService.canComputeUnicodeHighlights(this._editor.getModel().uri)?this._highlighter=new XV(this._editor,t,this._updateState,this._editorWorkerService):this._highlighter=new Jat(this._editor,t,this._updateState)}getDecorationInfo(e){return this._highlighter?this._highlighter.getDecorationInfo(e):null}};jy.ID="editor.contrib.unicodeHighlighter";jy=TG([Ob(1,Pc),Ob(2,f0e),Ob(3,at)],jy);function Qat(n,e){return{nonBasicASCII:e.nonBasicASCII===Ea?!n:e.nonBasicASCII,ambiguousCharacters:e.ambiguousCharacters,invisibleCharacters:e.invisibleCharacters,includeComments:e.includeComments===Ea?!n:e.includeComments,includeStrings:e.includeStrings===Ea?!n:e.includeStrings,allowedCharacters:e.allowedCharacters,allowedLocales:e.allowedLocales}}let XV=class extends pe{constructor(e,t,i,s){super(),this._editor=e,this._options=t,this._updateState=i,this._editorWorkerService=s,this._model=this._editor.getModel(),this._decorations=this._editor.createDecorationsCollection(),this._updateSoon=this._register(new Ei(()=>this._update(),250)),this._register(this._editor.onDidChangeModelContent(()=>{this._updateSoon.schedule()})),this._updateSoon.schedule()}dispose(){this._decorations.clear(),super.dispose()}_update(){if(this._model.isDisposed())return;if(!this._model.mightContainNonBasicASCII()){this._decorations.clear();return}const e=this._model.getVersionId();this._editorWorkerService.computedUnicodeHighlights(this._model.uri,this._options).then(t=>{if(this._model.isDisposed()||this._model.getVersionId()!==e)return;this._updateState(t);const i=[];if(!t.hasMore)for(const s of t.ranges)i.push({range:s,options:fR.instance.getDecorationFromOptions(this._options)});this._decorations.set(i)})}getDecorationInfo(e){if(!this._decorations.has(e))return null;const t=this._editor.getModel();if(!Hq(t,e))return null;const i=t.getValueInRange(e.range);return{reason:g0e(i,this._options),inComment:$q(t,e),inString:zq(t,e)}}};XV=TG([Ob(3,Pc)],XV);class Jat extends pe{constructor(e,t,i){super(),this._editor=e,this._options=t,this._updateState=i,this._model=this._editor.getModel(),this._decorations=this._editor.createDecorationsCollection(),this._updateSoon=this._register(new Ei(()=>this._update(),250)),this._register(this._editor.onDidLayoutChange(()=>{this._updateSoon.schedule()})),this._register(this._editor.onDidScrollChange(()=>{this._updateSoon.schedule()})),this._register(this._editor.onDidChangeHiddenAreas(()=>{this._updateSoon.schedule()})),this._register(this._editor.onDidChangeModelContent(()=>{this._updateSoon.schedule()})),this._updateSoon.schedule()}dispose(){this._decorations.clear(),super.dispose()}_update(){if(this._model.isDisposed())return;if(!this._model.mightContainNonBasicASCII()){this._decorations.clear();return}const e=this._editor.getVisibleRanges(),t=[],i={ranges:[],ambiguousCharacterCount:0,invisibleCharacterCount:0,nonBasicAsciiCharacterCount:0,hasMore:!1};for(const s of e){const r=kK.computeUnicodeHighlights(this._model,this._options,s);for(const o of r.ranges)i.ranges.push(o);i.ambiguousCharacterCount+=i.ambiguousCharacterCount,i.invisibleCharacterCount+=i.invisibleCharacterCount,i.nonBasicAsciiCharacterCount+=i.nonBasicAsciiCharacterCount,i.hasMore=i.hasMore||r.hasMore}if(!i.hasMore)for(const s of i.ranges)t.push({range:s,options:fR.instance.getDecorationFromOptions(this._options)});this._updateState(i),this._decorations.set(t)}getDecorationInfo(e){if(!this._decorations.has(e))return null;const t=this._editor.getModel(),i=t.getValueInRange(e.range);return Hq(t,e)?{reason:g0e(i,this._options),inComment:$q(t,e),inString:zq(t,e)}:null}}let QV=class{constructor(e,t,i){this._editor=e,this._languageService=t,this._openerService=i,this.hoverOrdinal=5}computeSync(e,t){if(!this._editor.hasModel()||e.type!==1)return[];const i=this._editor.getModel(),s=this._editor.getContribution(jy.ID);if(!s)return[];const r=[],o=new Set;let a=300;for(const l of t){const c=s.getDecorationInfo(l);if(!c)continue;const h=i.getValueInRange(l.range).codePointAt(0),d=Z3(h);let f;switch(c.reason.kind){case 0:{gE(c.reason.confusableWith)?f=v("unicodeHighlight.characterIsAmbiguousASCII","The character {0} could be confused with the ASCII character {1}, which is more common in source code.",d,Z3(c.reason.confusableWith.codePointAt(0))):f=v("unicodeHighlight.characterIsAmbiguous","The character {0} could be confused with the character {1}, which is more common in source code.",d,Z3(c.reason.confusableWith.codePointAt(0)));break}case 1:f=v("unicodeHighlight.characterIsInvisible","The character {0} is invisible.",d);break;case 2:f=v("unicodeHighlight.characterIsNonBasicAscii","The character {0} is not a basic ASCII character.",d);break}if(o.has(f))continue;o.add(f);const g={codePoint:h,reason:c.reason,inComment:c.inComment,inString:c.inString},p=v("unicodeHighlight.adjustSettings","Adjust settings"),m=`command:${ZE.ID}?${encodeURIComponent(JSON.stringify(g))}`,_=new xr("",!0).appendMarkdown(f).appendText(" ").appendLink(m,p);r.push(new uu(this,l.range,[_],!1,a++))}return r}renderHoverParts(e,t){return H_e(e,t,this._editor,this._languageService,this._openerService)}};QV=TG([Ob(1,sn),Ob(2,_a)],QV);function JV(n){return`U+${n.toString(16).padStart(4,"0")}`}function Z3(n){let e=`\`${JV(n)}\``;return Qh.isInvisibleCharacter(n)||(e+=` "${`${elt(n)}`}"`),e}function elt(n){return n===96?"`` ` ``":"`"+String.fromCodePoint(n)+"`"}function g0e(n,e){return kK.computeUnicodeHighlightReason(n,e)}class fR{constructor(){this.map=new Map}getDecorationFromOptions(e){return this.getDecoration(!e.includeComments,!e.includeStrings)}getDecoration(e,t){const i=`${e}${t}`;let s=this.map.get(i);return s||(s=yt.createDynamic({description:"unicode-highlight",stickiness:1,className:"unicode-highlight",showIfCollapsed:!0,overviewRuler:null,minimap:null,hideInCommentTokens:e,hideInStringTokens:t}),this.map.set(i,s)),s}}fR.instance=new fR;class tlt extends qe{constructor(){super({id:Fm.ID,label:v("action.unicodeHighlight.disableHighlightingInComments","Disable highlighting of characters in comments"),alias:"Disable highlighting of characters in comments",precondition:void 0}),this.shortLabel=v("unicodeHighlight.disableHighlightingInComments.shortLabel","Disable Highlight In Comments")}async run(e,t,i){const s=e==null?void 0:e.get(Ut);s&&this.runAction(s)}async runAction(e){await e.updateValue(Eo.includeComments,!1,2)}}class ilt extends qe{constructor(){super({id:Fm.ID,label:v("action.unicodeHighlight.disableHighlightingInStrings","Disable highlighting of characters in strings"),alias:"Disable highlighting of characters in strings",precondition:void 0}),this.shortLabel=v("unicodeHighlight.disableHighlightingInStrings.shortLabel","Disable Highlight In Strings")}async run(e,t,i){const s=e==null?void 0:e.get(Ut);s&&this.runAction(s)}async runAction(e){await e.updateValue(Eo.includeStrings,!1,2)}}class Fm extends qe{constructor(){super({id:Fm.ID,label:v("action.unicodeHighlight.disableHighlightingOfAmbiguousCharacters","Disable highlighting of ambiguous characters"),alias:"Disable highlighting of ambiguous characters",precondition:void 0}),this.shortLabel=v("unicodeHighlight.disableHighlightingOfAmbiguousCharacters.shortLabel","Disable Ambiguous Highlight")}async run(e,t,i){const s=e==null?void 0:e.get(Ut);s&&this.runAction(s)}async runAction(e){await e.updateValue(Eo.ambiguousCharacters,!1,2)}}Fm.ID="editor.action.unicodeHighlight.disableHighlightingOfAmbiguousCharacters";class jC extends qe{constructor(){super({id:jC.ID,label:v("action.unicodeHighlight.disableHighlightingOfInvisibleCharacters","Disable highlighting of invisible characters"),alias:"Disable highlighting of invisible characters",precondition:void 0}),this.shortLabel=v("unicodeHighlight.disableHighlightingOfInvisibleCharacters.shortLabel","Disable Invisible Highlight")}async run(e,t,i){const s=e==null?void 0:e.get(Ut);s&&this.runAction(s)}async runAction(e){await e.updateValue(Eo.invisibleCharacters,!1,2)}}jC.ID="editor.action.unicodeHighlight.disableHighlightingOfInvisibleCharacters";class qC extends qe{constructor(){super({id:qC.ID,label:v("action.unicodeHighlight.disableHighlightingOfNonBasicAsciiCharacters","Disable highlighting of non basic ASCII characters"),alias:"Disable highlighting of non basic ASCII characters",precondition:void 0}),this.shortLabel=v("unicodeHighlight.disableHighlightingOfNonBasicAsciiCharacters.shortLabel","Disable Non ASCII Highlight")}async run(e,t,i){const s=e==null?void 0:e.get(Ut);s&&this.runAction(s)}async runAction(e){await e.updateValue(Eo.nonBasicASCII,!1,2)}}qC.ID="editor.action.unicodeHighlight.disableHighlightingOfNonBasicAsciiCharacters";class ZE extends qe{constructor(){super({id:ZE.ID,label:v("action.unicodeHighlight.showExcludeOptions","Show Exclude Options"),alias:"Show Exclude Options",precondition:void 0})}async run(e,t,i){const{codePoint:s,reason:r,inString:o,inComment:a}=i,l=String.fromCodePoint(s),c=e.get(Uu),u=e.get(Ut);function h(g){return Qh.isInvisibleCharacter(g)?v("unicodeHighlight.excludeInvisibleCharFromBeingHighlighted","Exclude {0} (invisible character) from being highlighted",JV(g)):v("unicodeHighlight.excludeCharFromBeingHighlighted","Exclude {0} from being highlighted",`${JV(g)} "${l}"`)}const d=[];if(r.kind===0)for(const g of r.notAmbiguousInLocales)d.push({label:v("unicodeHighlight.allowCommonCharactersInLanguage",'Allow unicode characters that are more common in the language "{0}".',g),run:async()=>{slt(u,[g])}});if(d.push({label:h(s),run:()=>nlt(u,[s])}),a){const g=new tlt;d.push({label:g.label,run:async()=>g.runAction(u)})}else if(o){const g=new ilt;d.push({label:g.label,run:async()=>g.runAction(u)})}if(r.kind===0){const g=new Fm;d.push({label:g.label,run:async()=>g.runAction(u)})}else if(r.kind===1){const g=new jC;d.push({label:g.label,run:async()=>g.runAction(u)})}else if(r.kind===2){const g=new qC;d.push({label:g.label,run:async()=>g.runAction(u)})}else rlt(r);const f=await c.pick(d,{title:v("unicodeHighlight.configureUnicodeHighlightOptions","Configure Unicode Highlight Options")});f&&await f.run()}}ZE.ID="editor.action.unicodeHighlight.showExcludeOptions";async function nlt(n,e){const t=n.getValue(Eo.allowedCharacters);let i;typeof t=="object"&&t?i=t:i={};for(const s of e)i[String.fromCodePoint(s)]=!0;await n.updateValue(Eo.allowedCharacters,i,2)}async function slt(n,e){var t;const i=(t=n.inspect(Eo.allowedLocales).user)===null||t===void 0?void 0:t.value;let s;typeof i=="object"&&i?s=Object.assign({},i):s={};for(const r of e)s[r]=!0;await n.updateValue(Eo.allowedLocales,s,2)}function rlt(n){throw new Error(`Unexpected value: ${n}`)}Ae(Fm);Ae(jC);Ae(qC);Ae(ZE);ti(jy.ID,jy,1);Fv.register(QV);const XE=Bt("dialogService");var olt=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},ese=function(n,e){return function(t,i){e(t,i,n)}};const p0e="ignoreUnusualLineTerminators";function alt(n,e,t){n.setModelProperty(e.uri,p0e,t)}function llt(n,e){return n.getModelProperty(e.uri,p0e)}let Dx=class extends pe{constructor(e,t,i){super(),this._editor=e,this._dialogService=t,this._codeEditorService=i,this._isPresentingDialog=!1,this._config=this._editor.getOption(125),this._register(this._editor.onDidChangeConfiguration(s=>{s.hasChanged(125)&&(this._config=this._editor.getOption(125),this._checkForUnusualLineTerminators())})),this._register(this._editor.onDidChangeModel(()=>{this._checkForUnusualLineTerminators()})),this._register(this._editor.onDidChangeModelContent(s=>{s.isUndoing||this._checkForUnusualLineTerminators()})),this._checkForUnusualLineTerminators()}async _checkForUnusualLineTerminators(){if(this._config==="off"||!this._editor.hasModel())return;const e=this._editor.getModel();if(!e.mightContainUnusualLineTerminators()||llt(this._codeEditorService,e)===!0||this._editor.getOption(90))return;if(this._config==="auto"){e.removeUnusualLineTerminators(this._editor.getSelections());return}if(this._isPresentingDialog)return;let i;try{this._isPresentingDialog=!0,i=await this._dialogService.confirm({title:v("unusualLineTerminators.title","Unusual Line Terminators"),message:v("unusualLineTerminators.message","Detected unusual line terminators"),detail:v("unusualLineTerminators.detail","The file '{0}' contains one or more unusual line terminator characters, like Line Separator (LS) or Paragraph Separator (PS).\n\nIt is recommended to remove them from the file. This can be configured via `editor.unusualLineTerminators`.",Wl(e.uri)),primaryButton:v({key:"unusualLineTerminators.fix",comment:["&& denotes a mnemonic"]},"&&Remove Unusual Line Terminators"),cancelButton:v("unusualLineTerminators.ignore","Ignore")})}finally{this._isPresentingDialog=!1}if(!i.confirmed){alt(this._codeEditorService,e,!0);return}e.removeUnusualLineTerminators(this._editor.getSelections())}};Dx.ID="editor.contrib.unusualLineTerminatorsDetector";Dx=olt([ese(1,XE),ese(2,ri)],Dx);ti(Dx.ID,Dx,1);const iT="**",tse="/",DN="[/\\\\]",IN="[^/\\\\]",clt=/\//g;function ise(n,e){switch(n){case 0:return"";case 1:return`${IN}*?`;default:return`(?:${DN}|${IN}+${DN}${e?`|${DN}${IN}+`:""})*?`}}function nse(n,e){if(!n)return[];const t=[];let i=!1,s=!1,r="";for(const o of n){switch(o){case e:if(!i&&!s){t.push(r),r="";continue}break;case"{":i=!0;break;case"}":i=!1;break;case"[":s=!0;break;case"]":s=!1;break}r+=o}return r&&t.push(r),t}function m0e(n){if(!n)return"";let e="";const t=nse(n,tse);if(t.every(i=>i===iT))e=".*";else{let i=!1;t.forEach((s,r)=>{if(s===iT){if(i)return;e+=ise(2,r===t.length-1)}else{let o=!1,a="",l=!1,c="";for(const u of s){if(u!=="}"&&o){a+=u;continue}if(l&&(u!=="]"||!c)){let h;u==="-"?h=u:(u==="^"||u==="!")&&!c?h="^":u===tse?h="":h=Qa(u),c+=h;continue}switch(u){case"{":o=!0;continue;case"[":l=!0;continue;case"}":{const d=`(?:${nse(a,",").map(f=>m0e(f)).join("|")})`;e+=d,o=!1,a="";break}case"]":{e+="["+c+"]",l=!1,c="";break}case"?":e+=IN;continue;case"*":e+=ise(1);continue;default:e+=Qa(u)}}r<t.length-1&&(t[r+1]!==iT||r+2<t.length)&&(e+=DN)}i=s===iT})}return e}const ult=/^\*\*\/\*\.[\w\.-]+$/,hlt=/^\*\*\/([\w\.-]+)\/?$/,dlt=/^{\*\*\/\*?[\w\.-]+\/?(,\*\*\/\*?[\w\.-]+\/?)*}$/,flt=/^{\*\*\/\*?[\w\.-]+(\/(\*\*)?)?(,\*\*\/\*?[\w\.-]+(\/(\*\*)?)?)*}$/,glt=/^\*\*((\/[\w\.-]+)+)\/?$/,plt=/^([\w\.-]+(\/[\w\.-]+)*)\/?$/,sse=new Rm(1e4),rse=function(){return!1},id=function(){return null};function NG(n,e){if(!n)return id;let t;typeof n!="string"?t=n.pattern:t=n,t=t.trim();const i=`${t}_${!!e.trimForExclusions}`;let s=sse.get(i);if(s)return ose(s,n);let r;return ult.test(t)?s=mlt(t.substr(4),t):(r=hlt.exec(X3(t,e)))?s=_lt(r[1],t):(e.trimForExclusions?flt:dlt).test(t)?s=vlt(t,e):(r=glt.exec(X3(t,e)))?s=ase(r[1].substr(1),t,!0):(r=plt.exec(X3(t,e)))?s=ase(r[1],t,!1):s=blt(t),sse.set(i,s),ose(s,n)}function ose(n,e){if(typeof e=="string")return n;const t=function(i,s){return N9(i,e.base,!Kr)?n(dE(i.substr(e.base.length),Su),s):null};return t.allBasenames=n.allBasenames,t.allPaths=n.allPaths,t.basenames=n.basenames,t.patterns=n.patterns,t}function X3(n,e){return e.trimForExclusions&&n.endsWith("/**")?n.substr(0,n.length-2):n}function mlt(n,e){return function(t,i){return typeof t=="string"&&t.endsWith(n)?e:null}}function _lt(n,e){const t=`/${n}`,i=`\\${n}`,s=function(o,a){return typeof o!="string"?null:a?a===n?e:null:o===n||o.endsWith(t)||o.endsWith(i)?e:null},r=[n];return s.basenames=r,s.patterns=[e],s.allBasenames=r,s}function vlt(n,e){const t=v0e(n.slice(1,-1).split(",").map(a=>NG(a,e)).filter(a=>a!==id),n),i=t.length;if(!i)return id;if(i===1)return t[0];const s=function(a,l){for(let c=0,u=t.length;c<u;c++)if(t[c](a,l))return n;return null},r=t.find(a=>!!a.allBasenames);r&&(s.allBasenames=r.allBasenames);const o=t.reduce((a,l)=>l.allPaths?a.concat(l.allPaths):a,[]);return o.length&&(s.allPaths=o),s}function ase(n,e,t){const i=Su===ps.sep,s=i?n:n.replace(clt,Su),r=Su+s,o=ps.sep+n;let a;return t?a=function(l,c){return typeof l=="string"&&(l===s||l.endsWith(r)||!i&&(l===n||l.endsWith(o)))?e:null}:a=function(l,c){return typeof l=="string"&&(l===s||!i&&l===n)?e:null},a.allPaths=[(t?"*/":"./")+n],a}function blt(n){try{const e=new RegExp(`^${m0e(n)}$`);return function(t){return e.lastIndex=0,typeof t=="string"&&e.test(t)?n:null}}catch{return id}}function ylt(n,e,t){return!n||typeof e!="string"?!1:_0e(n)(e,void 0,t)}function _0e(n,e={}){if(!n)return rse;if(typeof n=="string"||Clt(n)){const t=NG(n,e);if(t===id)return rse;const i=function(s,r){return!!t(s,r)};return t.allBasenames&&(i.allBasenames=t.allBasenames),t.allPaths&&(i.allPaths=t.allPaths),i}return wlt(n,e)}function Clt(n){const e=n;return e?typeof e.base=="string"&&typeof e.pattern=="string":!1}function wlt(n,e){const t=v0e(Object.getOwnPropertyNames(n).map(a=>Slt(a,n[a],e)).filter(a=>a!==id)),i=t.length;if(!i)return id;if(!t.some(a=>!!a.requiresSiblings)){if(i===1)return t[0];const a=function(u,h){let d;for(let f=0,g=t.length;f<g;f++){const p=t[f](u,h);if(typeof p=="string")return p;U8(p)&&(d||(d=[]),d.push(p))}return d?(async()=>{for(const f of d){const g=await f;if(typeof g=="string")return g}return null})():null},l=t.find(u=>!!u.allBasenames);l&&(a.allBasenames=l.allBasenames);const c=t.reduce((u,h)=>h.allPaths?u.concat(h.allPaths):u,[]);return c.length&&(a.allPaths=c),a}const s=function(a,l,c){let u,h;for(let d=0,f=t.length;d<f;d++){const g=t[d];g.requiresSiblings&&c&&(l||(l=Cp(a)),u||(u=l.substr(0,l.length-j8e(a).length)));const p=g(a,l,u,c);if(typeof p=="string")return p;U8(p)&&(h||(h=[]),h.push(p))}return h?(async()=>{for(const d of h){const f=await d;if(typeof f=="string")return f}return null})():null},r=t.find(a=>!!a.allBasenames);r&&(s.allBasenames=r.allBasenames);const o=t.reduce((a,l)=>l.allPaths?a.concat(l.allPaths):a,[]);return o.length&&(s.allPaths=o),s}function Slt(n,e,t){if(e===!1)return id;const i=NG(n,t);if(i===id)return id;if(typeof e=="boolean")return i;if(e){const s=e.when;if(typeof s=="string"){const r=(o,a,l,c)=>{if(!c||!i(o,a))return null;const u=s.replace("$(basename)",()=>l),h=c(u);return U8(h)?h.then(d=>d?n:null):h?n:null};return r.requiresSiblings=!0,r}}return i}function v0e(n,e){const t=n.filter(a=>!!a.basenames);if(t.length<2)return n;const i=t.reduce((a,l)=>{const c=l.basenames;return c?a.concat(c):a},[]);let s;if(e){s=[];for(let a=0,l=i.length;a<l;a++)s.push(e)}else s=t.reduce((a,l)=>{const c=l.patterns;return c?a.concat(c):a},[]);const r=function(a,l){if(typeof a!="string")return null;if(!l){let u;for(u=a.length;u>0;u--){const h=a.charCodeAt(u-1);if(h===47||h===92)break}l=a.substr(u)}const c=i.indexOf(l);return c!==-1?s[c]:null};r.basenames=i,r.patterns=s,r.allBasenames=i;const o=n.filter(a=>!a.basenames);return o.push(r),o}function AG(n,e,t,i,s,r){if(Array.isArray(n)){let o=0;for(const a of n){const l=AG(a,e,t,i,s,r);if(l===10)return l;l>o&&(o=l)}return o}else{if(typeof n=="string")return i?n==="*"?5:n===t?10:0:0;if(n){const{language:o,pattern:a,scheme:l,hasAccessToAllModels:c,notebookType:u}=n;if(!i&&!c)return 0;u&&s&&(e=s);let h=0;if(l)if(l===e.scheme)h=10;else if(l==="*")h=5;else return 0;if(o)if(o===t)h=10;else if(o==="*")h=Math.max(h,5);else return 0;if(u)if(u===r)h=10;else if(u==="*"&&r!==void 0)h=Math.max(h,5);else return 0;if(a){let d;if(typeof a=="string"?d=a:d={...a,base:hge(a.base)},d===e.fsPath||ylt(d,e.fsPath))h=10;else return 0}return h}else return 0}}var b0e=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},TN=function(n,e){return function(t,i){e(t,i,n)}},Zn,eH;const aF=new ze("hasWordHighlights",!1);function y0e(n,e,t,i){const s=n.ordered(e);return Mj(s.map(r=>()=>Promise.resolve(r.provideDocumentHighlights(e,t,i)).then(void 0,Jn)),Ir).then(r=>{if(r){const o=new qn;return o.set(e.uri,r),o}return new qn})}function klt(n,e,t,i,s,r){const o=n.ordered(e);return Mj(o.map(a=>()=>{const l=r.filter(c=>AG(a.selector,c.uri,c.getLanguageId(),!0,void 0,void 0)>0);return Promise.resolve(a.provideMultiDocumentHighlights(e,t,l,s)).then(void 0,Jn)}),a=>a instanceof qn&&a.size>0)}class PG{constructor(e,t,i){this._model=e,this._selection=t,this._wordSeparators=i,this._wordRange=this._getCurrentWordRange(e,t),this._result=null}get result(){return this._result||(this._result=Ns(e=>this._compute(this._model,this._selection,this._wordSeparators,e))),this._result}_getCurrentWordRange(e,t){const i=e.getWordAtPosition(t.getPosition());return i?new M(t.startLineNumber,i.startColumn,t.startLineNumber,i.endColumn):null}isValid(e,t,i){const s=t.startLineNumber,r=t.startColumn,o=t.endColumn,a=this._getCurrentWordRange(e,t);let l=!!(this._wordRange&&this._wordRange.equalsRange(a));for(let c=0,u=i.length;!l&&c<u;c++){const h=i.getRange(c);h&&h.startLineNumber===s&&h.startColumn<=r&&h.endColumn>=o&&(l=!0)}return l}cancel(){this.result.cancel()}}class Llt extends PG{constructor(e,t,i,s){super(e,t,i),this._providers=s}_compute(e,t,i,s){return y0e(this._providers,e,t.getPosition(),s).then(r=>r||new qn)}}class xlt extends PG{constructor(e,t,i,s,r){super(e,t,i),this._providers=s,this._otherModels=r}_compute(e,t,i,s){return klt(this._providers,e,t.getPosition(),i,s,this._otherModels).then(r=>r||new qn)}}class C0e extends PG{constructor(e,t,i,s,r){super(e,t,s),this._otherModels=r,this._selectionIsEmpty=t.isEmpty(),this._word=i}_compute(e,t,i,s){return Kp(250,s).then(()=>{const r=new qn;let o;if(this._word?o=this._word:o=e.getWordAtPosition(t.getPosition()),!o)return new qn;const a=[e,...this._otherModels];for(const l of a){if(l.isDisposed())continue;const u=l.findMatches(o.word,!0,!1,!0,i,!1).map(h=>({range:h.range,kind:NL.Text}));u&&r.set(l.uri,u)}return r})}isValid(e,t,i){const s=t.isEmpty();return this._selectionIsEmpty!==s?!1:super.isValid(e,t,i)}}function Elt(n,e,t,i,s){return n.has(e)?new Llt(e,t,s,n):new C0e(e,t,i,s,[])}function Dlt(n,e,t,i,s,r){return n.has(e)?new xlt(e,t,s,n,r):new C0e(e,t,i,s,r)}xd("_executeDocumentHighlights",async(n,e,t)=>{const i=n.get(Ge),s=await y0e(i.documentHighlightProvider,e,t,Ft.None);return s==null?void 0:s.get(e.uri)});let Ix=Zn=class{constructor(e,t,i,s,r){this.toUnhook=new xe,this.workerRequestTokenId=0,this.workerRequestCompleted=!1,this.workerRequestValue=new qn,this.lastCursorPositionChangeTime=0,this.renderDecorationsTimer=-1,this.editor=e,this.providers=t,this.multiDocumentProviders=i,this.codeEditorService=r,this._hasWordHighlights=aF.bindTo(s),this._ignorePositionChangeEvent=!1,this.occurrencesHighlight=this.editor.getOption(80),this.model=this.editor.getModel(),this.toUnhook.add(e.onDidChangeCursorPosition(o=>{this._ignorePositionChangeEvent||this.occurrencesHighlight!=="off"&&this._onPositionChanged(o)})),this.toUnhook.add(e.onDidChangeModelContent(o=>{this._stopAll()})),this.toUnhook.add(e.onDidChangeModel(o=>{!o.newModelUrl&&o.oldModelUrl?this._stopSingular():Zn.query&&this._run()})),this.toUnhook.add(e.onDidChangeConfiguration(o=>{const a=this.editor.getOption(80);this.occurrencesHighlight!==a&&(this.occurrencesHighlight=a,this._stopAll())})),this.decorations=this.editor.createDecorationsCollection(),this.workerRequestTokenId=0,this.workerRequest=null,this.workerRequestCompleted=!1,this.lastCursorPositionChangeTime=0,this.renderDecorationsTimer=-1,Zn.query&&this._run()}hasDecorations(){return this.decorations.length>0}restore(){this.occurrencesHighlight!=="off"&&this._run()}_getSortedHighlights(){return this.decorations.getRanges().sort(M.compareRangesUsingStarts)}moveNext(){const e=this._getSortedHighlights(),i=(e.findIndex(r=>r.containsPosition(this.editor.getPosition()))+1)%e.length,s=e[i];try{this._ignorePositionChangeEvent=!0,this.editor.setPosition(s.getStartPosition()),this.editor.revealRangeInCenterIfOutsideViewport(s);const r=this._getWord();if(r){const o=this.editor.getModel().getLineContent(s.startLineNumber);ha(`${o}, ${i+1} of ${e.length} for '${r.word}'`)}}finally{this._ignorePositionChangeEvent=!1}}moveBack(){const e=this._getSortedHighlights(),i=(e.findIndex(r=>r.containsPosition(this.editor.getPosition()))-1+e.length)%e.length,s=e[i];try{this._ignorePositionChangeEvent=!0,this.editor.setPosition(s.getStartPosition()),this.editor.revealRangeInCenterIfOutsideViewport(s);const r=this._getWord();if(r){const o=this.editor.getModel().getLineContent(s.startLineNumber);ha(`${o}, ${i+1} of ${e.length} for '${r.word}'`)}}finally{this._ignorePositionChangeEvent=!1}}_removeSingleDecorations(){if(!this.editor.hasModel())return;const e=Zn.storedDecorations.get(this.editor.getModel().uri);e&&(this.editor.removeDecorations(e),Zn.storedDecorations.delete(this.editor.getModel().uri),this.decorations.length>0&&(this.decorations.clear(),this._hasWordHighlights.set(!1)))}_removeAllDecorations(){const e=this.codeEditorService.listCodeEditors();for(const t of e){if(!t.hasModel())continue;const i=Zn.storedDecorations.get(t.getModel().uri);if(!i)continue;t.removeDecorations(i),Zn.storedDecorations.delete(t.getModel().uri);const s=Jf.get(t);s!=null&&s.wordHighlighter&&s.wordHighlighter.decorations.length>0&&(s.wordHighlighter.decorations.clear(),s.wordHighlighter._hasWordHighlights.set(!1))}}_stopSingular(){var e,t,i,s;this._removeSingleDecorations(),this.editor.hasWidgetFocus()&&(((e=this.editor.getModel())===null||e===void 0?void 0:e.uri.scheme)!==wt.vscodeNotebookCell&&((i=(t=Zn.query)===null||t===void 0?void 0:t.modelInfo)===null||i===void 0?void 0:i.model.uri.scheme)!==wt.vscodeNotebookCell?(Zn.query=null,this._run()):!((s=Zn.query)===null||s===void 0)&&s.modelInfo&&(Zn.query.modelInfo=null)),this.renderDecorationsTimer!==-1&&(clearTimeout(this.renderDecorationsTimer),this.renderDecorationsTimer=-1),this.workerRequest!==null&&(this.workerRequest.cancel(),this.workerRequest=null),this.workerRequestCompleted||(this.workerRequestTokenId++,this.workerRequestCompleted=!0)}_stopAll(){this._removeAllDecorations(),this.renderDecorationsTimer!==-1&&(clearTimeout(this.renderDecorationsTimer),this.renderDecorationsTimer=-1),this.workerRequest!==null&&(this.workerRequest.cancel(),this.workerRequest=null),this.workerRequestCompleted||(this.workerRequestTokenId++,this.workerRequestCompleted=!0)}_onPositionChanged(e){var t;if(this.occurrencesHighlight==="off"){this._stopAll();return}if(e.reason!==3&&((t=this.editor.getModel())===null||t===void 0?void 0:t.uri.scheme)!==wt.vscodeNotebookCell){this._stopAll();return}this._run()}_getWord(){const e=this.editor.getSelection(),t=e.startLineNumber,i=e.startColumn;return this.model.isDisposed()?null:this.model.getWordAtPosition({lineNumber:t,column:i})}getOtherModelsToHighlight(e){if(!e)return[];if(e.uri.scheme===wt.vscodeNotebookCell){const r=[],o=this.codeEditorService.listCodeEditors();for(const a of o){const l=a.getModel();l&&l!==e&&l.uri.scheme===wt.vscodeNotebookCell&&r.push(l)}return r}const i=[],s=this.codeEditorService.listCodeEditors();for(const r of s){if(!NK(r))continue;const o=r.getModel();o&&e===o.modified&&i.push(o.modified)}if(i.length)return i;if(this.occurrencesHighlight==="singleFile")return[];for(const r of s){const o=r.getModel();o&&o!==e&&i.push(o)}return i}_run(){var e,t;let i;if(this.editor.hasWidgetFocus()){const s=this.editor.getSelection();if(!s||s.startLineNumber!==s.endLineNumber){this._stopAll();return}const r=s.startColumn,o=s.endColumn,a=this._getWord();if(!a||a.startColumn>r||a.endColumn<o){Zn.query=null,this._stopAll();return}i=this.workerRequest&&this.workerRequest.isValid(this.model,s,this.decorations),Zn.query={modelInfo:{model:this.model,selection:s},word:a}}else if(Zn.query===null)return;if(this.lastCursorPositionChangeTime=new Date().getTime(),i)this.workerRequestCompleted&&this.renderDecorationsTimer!==-1&&(clearTimeout(this.renderDecorationsTimer),this.renderDecorationsTimer=-1,this._beginRenderDecorations());else{this._stopAll();const s=++this.workerRequestTokenId;this.workerRequestCompleted=!1;const r=this.getOtherModelsToHighlight(this.editor.getModel()),o=!!(!Zn.query.modelInfo&&Zn.query.word||((e=Zn.query.modelInfo)===null||e===void 0?void 0:e.model.uri)!==this.model.uri);!Zn.query.modelInfo||Zn.query.modelInfo.model.uri!==this.model.uri?this.workerRequest=this.computeWithModel(this.model,this.editor.getSelection(),o?Zn.query.word:null,r):this.workerRequest=this.computeWithModel(Zn.query.modelInfo.model,Zn.query.modelInfo.selection,Zn.query.word,r),(t=this.workerRequest)===null||t===void 0||t.result.then(a=>{s===this.workerRequestTokenId&&(this.workerRequestCompleted=!0,this.workerRequestValue=a||[],this._beginRenderDecorations())},vt)}}computeWithModel(e,t,i,s){return s.length?Dlt(this.multiDocumentProviders,e,t,i,this.editor.getOption(129),s):Elt(this.providers,e,t,i,this.editor.getOption(129))}_beginRenderDecorations(){const e=new Date().getTime(),t=this.lastCursorPositionChangeTime+250;e>=t?(this.renderDecorationsTimer=-1,this.renderDecorations()):this.renderDecorationsTimer=setTimeout(()=>{this.renderDecorations()},t-e)}renderDecorations(){var e,t,i;this.renderDecorationsTimer=-1;const s=this.codeEditorService.listCodeEditors();for(const r of s){const o=Jf.get(r);if(!o)continue;const a=[],l=(e=r.getModel())===null||e===void 0?void 0:e.uri;if(l&&this.workerRequestValue.has(l)){const c=Zn.storedDecorations.get(l),u=this.workerRequestValue.get(l);if(u)for(const d of u)a.push({range:d.range,options:Hot(d.kind)});let h=[];r.changeDecorations(d=>{h=d.deltaDecorations(c??[],a)}),Zn.storedDecorations=Zn.storedDecorations.set(l,h),a.length>0&&((t=o.wordHighlighter)===null||t===void 0||t.decorations.set(a),(i=o.wordHighlighter)===null||i===void 0||i._hasWordHighlights.set(!0))}}}dispose(){this._stopSingular(),this.toUnhook.dispose()}};Ix.storedDecorations=new qn;Ix.query=null;Ix=Zn=b0e([TN(4,ri)],Ix);let Jf=eH=class extends pe{static get(e){return e.getContribution(eH.ID)}constructor(e,t,i,s){super(),this._wordHighlighter=null;const r=()=>{e.hasModel()&&!e.getModel().isTooLargeForTokenization()&&(this._wordHighlighter=new Ix(e,i.documentHighlightProvider,i.multiDocumentHighlightProvider,t,s))};this._register(e.onDidChangeModel(o=>{this._wordHighlighter&&(this._wordHighlighter.dispose(),this._wordHighlighter=null),r()})),r()}get wordHighlighter(){return this._wordHighlighter}saveViewState(){return!!(this._wordHighlighter&&this._wordHighlighter.hasDecorations())}moveNext(){var e;(e=this._wordHighlighter)===null||e===void 0||e.moveNext()}moveBack(){var e;(e=this._wordHighlighter)===null||e===void 0||e.moveBack()}restoreViewState(e){this._wordHighlighter&&e&&this._wordHighlighter.restore()}dispose(){this._wordHighlighter&&(this._wordHighlighter.dispose(),this._wordHighlighter=null),super.dispose()}};Jf.ID="editor.contrib.wordHighlighter";Jf=eH=b0e([TN(1,ft),TN(2,Ge),TN(3,ri)],Jf);class w0e extends qe{constructor(e,t){super(t),this._isNext=e}run(e,t){const i=Jf.get(t);i&&(this._isNext?i.moveNext():i.moveBack())}}class Ilt extends w0e{constructor(){super(!0,{id:"editor.action.wordHighlight.next",label:v("wordHighlight.next.label","Go to Next Symbol Highlight"),alias:"Go to Next Symbol Highlight",precondition:aF,kbOpts:{kbExpr:$.editorTextFocus,primary:65,weight:100}})}}class Tlt extends w0e{constructor(){super(!1,{id:"editor.action.wordHighlight.prev",label:v("wordHighlight.previous.label","Go to Previous Symbol Highlight"),alias:"Go to Previous Symbol Highlight",precondition:aF,kbOpts:{kbExpr:$.editorTextFocus,primary:1089,weight:100}})}}class Nlt extends qe{constructor(){super({id:"editor.action.wordHighlight.trigger",label:v("wordHighlight.trigger.label","Trigger Symbol Highlight"),alias:"Trigger Symbol Highlight",precondition:aF.toNegated(),kbOpts:{kbExpr:$.editorTextFocus,primary:0,weight:100}})}run(e,t,i){const s=Jf.get(t);s&&s.restoreViewState(!0)}}ti(Jf.ID,Jf,0);Ae(Ilt);Ae(Tlt);Ae(Nlt);class lF extends Ks{constructor(e){super(e),this._inSelectionMode=e.inSelectionMode,this._wordNavigationType=e.wordNavigationType}runEditorCommand(e,t,i){if(!t.hasModel())return;const s=Bl(t.getOption(129)),r=t.getModel(),a=t.getSelections().map(l=>{const c=new he(l.positionLineNumber,l.positionColumn),u=this._move(s,r,c,this._wordNavigationType);return this._moveTo(l,u,this._inSelectionMode)});if(r.pushStackElement(),t._getViewModel().setCursorStates("moveWordCommand",3,a.map(l=>Xt.fromModelSelection(l))),a.length===1){const l=new he(a[0].positionLineNumber,a[0].positionColumn);t.revealPosition(l,0)}}_moveTo(e,t,i){return i?new Ze(e.selectionStartLineNumber,e.selectionStartColumn,t.lineNumber,t.column):new Ze(t.lineNumber,t.column,t.lineNumber,t.column)}}class Bm extends lF{_move(e,t,i,s){return ui.moveWordLeft(e,t,i,s)}}class Wm extends lF{_move(e,t,i,s){return ui.moveWordRight(e,t,i,s)}}class Alt extends Bm{constructor(){super({inSelectionMode:!1,wordNavigationType:0,id:"cursorWordStartLeft",precondition:void 0})}}class Plt extends Bm{constructor(){super({inSelectionMode:!1,wordNavigationType:2,id:"cursorWordEndLeft",precondition:void 0})}}class Rlt extends Bm{constructor(){var e;super({inSelectionMode:!1,wordNavigationType:1,id:"cursorWordLeft",precondition:void 0,kbOpts:{kbExpr:ke.and($.textInputFocus,(e=ke.and(_E,_2))===null||e===void 0?void 0:e.negate()),primary:2063,mac:{primary:527},weight:100}})}}class Mlt extends Bm{constructor(){super({inSelectionMode:!0,wordNavigationType:0,id:"cursorWordStartLeftSelect",precondition:void 0})}}class Olt extends Bm{constructor(){super({inSelectionMode:!0,wordNavigationType:2,id:"cursorWordEndLeftSelect",precondition:void 0})}}class Flt extends Bm{constructor(){var e;super({inSelectionMode:!0,wordNavigationType:1,id:"cursorWordLeftSelect",precondition:void 0,kbOpts:{kbExpr:ke.and($.textInputFocus,(e=ke.and(_E,_2))===null||e===void 0?void 0:e.negate()),primary:3087,mac:{primary:1551},weight:100}})}}class Blt extends Bm{constructor(){super({inSelectionMode:!1,wordNavigationType:3,id:"cursorWordAccessibilityLeft",precondition:void 0})}_move(e,t,i,s){return super._move(Bl(zu.wordSeparators.defaultValue),t,i,s)}}class Wlt extends Bm{constructor(){super({inSelectionMode:!0,wordNavigationType:3,id:"cursorWordAccessibilityLeftSelect",precondition:void 0})}_move(e,t,i,s){return super._move(Bl(zu.wordSeparators.defaultValue),t,i,s)}}class Vlt extends Wm{constructor(){super({inSelectionMode:!1,wordNavigationType:0,id:"cursorWordStartRight",precondition:void 0})}}class Hlt extends Wm{constructor(){var e;super({inSelectionMode:!1,wordNavigationType:2,id:"cursorWordEndRight",precondition:void 0,kbOpts:{kbExpr:ke.and($.textInputFocus,(e=ke.and(_E,_2))===null||e===void 0?void 0:e.negate()),primary:2065,mac:{primary:529},weight:100}})}}class $lt extends Wm{constructor(){super({inSelectionMode:!1,wordNavigationType:2,id:"cursorWordRight",precondition:void 0})}}class zlt extends Wm{constructor(){super({inSelectionMode:!0,wordNavigationType:0,id:"cursorWordStartRightSelect",precondition:void 0})}}class Ult extends Wm{constructor(){var e;super({inSelectionMode:!0,wordNavigationType:2,id:"cursorWordEndRightSelect",precondition:void 0,kbOpts:{kbExpr:ke.and($.textInputFocus,(e=ke.and(_E,_2))===null||e===void 0?void 0:e.negate()),primary:3089,mac:{primary:1553},weight:100}})}}class jlt extends Wm{constructor(){super({inSelectionMode:!0,wordNavigationType:2,id:"cursorWordRightSelect",precondition:void 0})}}class qlt extends Wm{constructor(){super({inSelectionMode:!1,wordNavigationType:3,id:"cursorWordAccessibilityRight",precondition:void 0})}_move(e,t,i,s){return super._move(Bl(zu.wordSeparators.defaultValue),t,i,s)}}class Klt extends Wm{constructor(){super({inSelectionMode:!0,wordNavigationType:3,id:"cursorWordAccessibilityRightSelect",precondition:void 0})}_move(e,t,i,s){return super._move(Bl(zu.wordSeparators.defaultValue),t,i,s)}}class cF extends Ks{constructor(e){super(e),this._whitespaceHeuristics=e.whitespaceHeuristics,this._wordNavigationType=e.wordNavigationType}runEditorCommand(e,t,i){const s=e.get(Bi);if(!t.hasModel())return;const r=Bl(t.getOption(129)),o=t.getModel(),a=t.getSelections(),l=t.getOption(6),c=t.getOption(11),u=s.getLanguageConfiguration(o.getLanguageId()).getAutoClosingPairs(),h=t._getViewModel(),d=a.map(f=>{const g=this._delete({wordSeparators:r,model:o,selection:f,whitespaceHeuristics:this._whitespaceHeuristics,autoClosingDelete:t.getOption(9),autoClosingBrackets:l,autoClosingQuotes:c,autoClosingPairs:u,autoClosedCharacters:h.getCursorAutoClosedCharacters()},this._wordNavigationType);return new cr(g,"")});t.pushUndoStop(),t.executeCommands(this.id,d),t.pushUndoStop()}}class RG extends cF{_delete(e,t){const i=ui.deleteWordLeft(e,t);return i||new M(1,1,1,1)}}class MG extends cF{_delete(e,t){const i=ui.deleteWordRight(e,t);if(i)return i;const s=e.model.getLineCount(),r=e.model.getLineMaxColumn(s);return new M(s,r,s,r)}}class Glt extends RG{constructor(){super({whitespaceHeuristics:!1,wordNavigationType:0,id:"deleteWordStartLeft",precondition:$.writable})}}class Ylt extends RG{constructor(){super({whitespaceHeuristics:!1,wordNavigationType:2,id:"deleteWordEndLeft",precondition:$.writable})}}class Zlt extends RG{constructor(){super({whitespaceHeuristics:!0,wordNavigationType:0,id:"deleteWordLeft",precondition:$.writable,kbOpts:{kbExpr:$.textInputFocus,primary:2049,mac:{primary:513},weight:100}})}}class Xlt extends MG{constructor(){super({whitespaceHeuristics:!1,wordNavigationType:0,id:"deleteWordStartRight",precondition:$.writable})}}class Qlt extends MG{constructor(){super({whitespaceHeuristics:!1,wordNavigationType:2,id:"deleteWordEndRight",precondition:$.writable})}}class Jlt extends MG{constructor(){super({whitespaceHeuristics:!0,wordNavigationType:2,id:"deleteWordRight",precondition:$.writable,kbOpts:{kbExpr:$.textInputFocus,primary:2068,mac:{primary:532},weight:100}})}}class ect extends qe{constructor(){super({id:"deleteInsideWord",precondition:$.writable,label:v("deleteInsideWord","Delete Word"),alias:"Delete Word"})}run(e,t,i){if(!t.hasModel())return;const s=Bl(t.getOption(129)),r=t.getModel(),a=t.getSelections().map(l=>{const c=ui.deleteInsideWord(s,r,l);return new cr(c,"")});t.pushUndoStop(),t.executeCommands(this.id,a),t.pushUndoStop()}}Be(new Alt);Be(new Plt);Be(new Rlt);Be(new Mlt);Be(new Olt);Be(new Flt);Be(new Vlt);Be(new Hlt);Be(new $lt);Be(new zlt);Be(new Ult);Be(new jlt);Be(new Blt);Be(new Wlt);Be(new qlt);Be(new Klt);Be(new Glt);Be(new Ylt);Be(new Zlt);Be(new Xlt);Be(new Qlt);Be(new Jlt);Ae(ect);class tct extends cF{constructor(){super({whitespaceHeuristics:!0,wordNavigationType:0,id:"deleteWordPartLeft",precondition:$.writable,kbOpts:{kbExpr:$.textInputFocus,primary:0,mac:{primary:769},weight:100}})}_delete(e,t){const i=xO.deleteWordPartLeft(e);return i||new M(1,1,1,1)}}class ict extends cF{constructor(){super({whitespaceHeuristics:!0,wordNavigationType:2,id:"deleteWordPartRight",precondition:$.writable,kbOpts:{kbExpr:$.textInputFocus,primary:0,mac:{primary:788},weight:100}})}_delete(e,t){const i=xO.deleteWordPartRight(e);if(i)return i;const s=e.model.getLineCount(),r=e.model.getLineMaxColumn(s);return new M(s,r,s,r)}}class S0e extends lF{_move(e,t,i,s){return xO.moveWordPartLeft(e,t,i)}}class nct extends S0e{constructor(){super({inSelectionMode:!1,wordNavigationType:0,id:"cursorWordPartLeft",precondition:void 0,kbOpts:{kbExpr:$.textInputFocus,primary:0,mac:{primary:783},weight:100}})}}Yt.registerCommandAlias("cursorWordPartStartLeft","cursorWordPartLeft");class sct extends S0e{constructor(){super({inSelectionMode:!0,wordNavigationType:0,id:"cursorWordPartLeftSelect",precondition:void 0,kbOpts:{kbExpr:$.textInputFocus,primary:0,mac:{primary:1807},weight:100}})}}Yt.registerCommandAlias("cursorWordPartStartLeftSelect","cursorWordPartLeftSelect");class k0e extends lF{_move(e,t,i,s){return xO.moveWordPartRight(e,t,i)}}class rct extends k0e{constructor(){super({inSelectionMode:!1,wordNavigationType:2,id:"cursorWordPartRight",precondition:void 0,kbOpts:{kbExpr:$.textInputFocus,primary:0,mac:{primary:785},weight:100}})}}class oct extends k0e{constructor(){super({inSelectionMode:!0,wordNavigationType:2,id:"cursorWordPartRightSelect",precondition:void 0,kbOpts:{kbExpr:$.textInputFocus,primary:0,mac:{primary:1809},weight:100}})}}Be(new tct);Be(new ict);Be(new nct);Be(new sct);Be(new rct);Be(new oct);class tH extends pe{constructor(e){super(),this.editor=e,this._register(this.editor.onDidAttemptReadOnlyEdit(()=>this._onDidAttemptReadOnlyEdit()))}_onDidAttemptReadOnlyEdit(){const e=ra.get(this.editor);if(e&&this.editor.hasModel()){let t=this.editor.getOptions().get(91);t||(this.editor.isSimpleWidget?t=new xr(v("editor.simple.readonly","Cannot edit in read-only input")):t=new xr(v("editor.readonly","Cannot edit in read-only editor"))),e.showMessage(t,this.editor.getPosition())}}}tH.ID="editor.contrib.readOnlyMessageController";ti(tH.ID,tH,2);var iH;(function(n){n.inspectTokensAction=v("inspectTokens","Developer: Inspect Tokens")})(iH||(iH={}));var gR;(function(n){n.gotoLineActionLabel=v("gotoLineActionLabel","Go to Line/Column...")})(gR||(gR={}));var nH;(function(n){n.helpQuickAccessActionLabel=v("helpQuickAccess","Show all Quick Access Providers")})(nH||(nH={}));var pR;(function(n){n.quickCommandActionLabel=v("quickCommandActionLabel","Command Palette"),n.quickCommandHelp=v("quickCommandActionHelp","Show And Run Commands")})(pR||(pR={}));var Tx;(function(n){n.quickOutlineActionLabel=v("quickOutlineActionLabel","Go to Symbol..."),n.quickOutlineByCategoryActionLabel=v("quickOutlineByCategoryActionLabel","Go to Symbol by Category...")})(Tx||(Tx={}));var mR;(function(n){n.editorViewAccessibleLabel=v("editorViewAccessibleLabel","Editor content"),n.accessibilityHelpMessage=v("accessibilityHelpMessage","Press Alt+F1 for Accessibility Options.")})(mR||(mR={}));var sH;(function(n){n.toggleHighContrast=v("toggleHighContrast","Toggle High Contrast Theme")})(sH||(sH={}));var rH;(function(n){n.bulkEditServiceSummary=v("bulkEditServiceSummary","Made {0} edits in {1} files")})(rH||(rH={}));class oH extends pe{constructor(e){super(),this.editor=e,this.widget=null,Du&&(this._register(e.onDidChangeConfiguration(()=>this.update())),this.update())}update(){const e=!this.editor.getOption(90);!this.widget&&e?this.widget=new uF(this.editor):this.widget&&!e&&(this.widget.dispose(),this.widget=null)}dispose(){super.dispose(),this.widget&&(this.widget.dispose(),this.widget=null)}}oH.ID="editor.contrib.iPadShowKeyboard";class uF extends pe{constructor(e){super(),this.editor=e,this._domNode=document.createElement("textarea"),this._domNode.className="iPadShowKeyboard",this._register(Ce(this._domNode,"touchstart",t=>{this.editor.focus()})),this._register(Ce(this._domNode,"focus",t=>{this.editor.focus()})),this.editor.addOverlayWidget(this)}dispose(){this.editor.removeOverlayWidget(this),super.dispose()}getId(){return uF.ID}getDomNode(){return this._domNode}getPosition(){return{preference:1}}}uF.ID="editor.contrib.ShowKeyboardWidget";ti(oH.ID,oH,3);const rl=Bt("themeService");var act=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},lse=function(n,e){return function(t,i){e(t,i,n)}},aH;let qy=aH=class extends pe{static get(e){return e.getContribution(aH.ID)}constructor(e,t,i){super(),this._editor=e,this._languageService=i,this._widget=null,this._register(this._editor.onDidChangeModel(s=>this.stop())),this._register(this._editor.onDidChangeModelLanguage(s=>this.stop())),this._register(kn.onDidChange(s=>this.stop())),this._register(this._editor.onKeyUp(s=>s.keyCode===9&&this.stop()))}dispose(){this.stop(),super.dispose()}launch(){this._widget||this._editor.hasModel()&&(this._widget=new hF(this._editor,this._languageService))}stop(){this._widget&&(this._widget.dispose(),this._widget=null)}};qy.ID="editor.contrib.inspectTokens";qy=aH=act([lse(1,rl),lse(2,sn)],qy);class lct extends qe{constructor(){super({id:"editor.action.inspectTokens",label:iH.inspectTokensAction,alias:"Developer: Inspect Tokens",precondition:void 0})}run(e,t){const i=qy.get(t);i==null||i.launch()}}function cct(n){let e="";for(let t=0,i=n.length;t<i;t++){const s=n.charCodeAt(t);switch(s){case 9:e+="→";break;case 32:e+="·";break;default:e+=String.fromCharCode(s)}}return e}function uct(n,e){const t=kn.get(e);if(t)return t;const i=n.encodeLanguageId(e);return{getInitialState:()=>Ly,tokenize:(s,r,o)=>Mq(e,o),tokenizeEncoded:(s,r,o)=>GO(i,o)}}class hF extends pe{constructor(e,t){super(),this.allowEditorOverflow=!0,this._editor=e,this._languageService=t,this._model=this._editor.getModel(),this._domNode=document.createElement("div"),this._domNode.className="tokens-inspect-widget",this._tokenizationSupport=uct(this._languageService.languageIdCodec,this._model.getLanguageId()),this._compute(this._editor.getPosition()),this._register(this._editor.onDidChangeCursorPosition(i=>this._compute(this._editor.getPosition()))),this._editor.addContentWidget(this)}dispose(){this._editor.removeContentWidget(this),super.dispose()}getId(){return hF._ID}_compute(e){const t=this._getTokensAtLine(e.lineNumber);let i=0;for(let l=t.tokens1.length-1;l>=0;l--){const c=t.tokens1[l];if(e.column-1>=c.offset){i=l;break}}let s=0;for(let l=t.tokens2.length>>>1;l>=0;l--)if(e.column-1>=t.tokens2[l<<1]){s=l;break}const r=this._model.getLineContent(e.lineNumber);let o="";if(i<t.tokens1.length){const l=t.tokens1[i].offset,c=i+1<t.tokens1.length?t.tokens1[i+1].offset:r.length;o=r.substring(l,c)}mr(this._domNode,Te("h2.tm-token",void 0,cct(o),Te("span.tm-token-length",void 0,`${o.length} ${o.length===1?"char":"chars"}`))),Le(this._domNode,Te("hr.tokens-inspect-separator",{style:"clear:both"}));const a=(s<<1)+1<t.tokens2.length?this._decodeMetadata(t.tokens2[(s<<1)+1]):null;Le(this._domNode,Te("table.tm-metadata-table",void 0,Te("tbody",void 0,Te("tr",void 0,Te("td.tm-metadata-key",void 0,"language"),Te("td.tm-metadata-value",void 0,`${a?a.languageId:"-?-"}`)),Te("tr",void 0,Te("td.tm-metadata-key",void 0,"token type"),Te("td.tm-metadata-value",void 0,`${a?this._tokenTypeToString(a.tokenType):"-?-"}`)),Te("tr",void 0,Te("td.tm-metadata-key",void 0,"font style"),Te("td.tm-metadata-value",void 0,`${a?this._fontStyleToString(a.fontStyle):"-?-"}`)),Te("tr",void 0,Te("td.tm-metadata-key",void 0,"foreground"),Te("td.tm-metadata-value",void 0,`${a?me.Format.CSS.formatHex(a.foreground):"-?-"}`)),Te("tr",void 0,Te("td.tm-metadata-key",void 0,"background"),Te("td.tm-metadata-value",void 0,`${a?me.Format.CSS.formatHex(a.background):"-?-"}`))))),Le(this._domNode,Te("hr.tokens-inspect-separator")),i<t.tokens1.length&&Le(this._domNode,Te("span.tm-token-type",void 0,t.tokens1[i].type)),this._editor.layoutContentWidget(this)}_decodeMetadata(e){const t=kn.getColorMap(),i=dr.getLanguageId(e),s=dr.getTokenType(e),r=dr.getFontStyle(e),o=dr.getForeground(e),a=dr.getBackground(e);return{languageId:this._languageService.languageIdCodec.decodeLanguageId(i),tokenType:s,fontStyle:r,foreground:t[o],background:t[a]}}_tokenTypeToString(e){switch(e){case 0:return"Other";case 1:return"Comment";case 2:return"String";case 3:return"RegEx";default:return"??"}}_fontStyleToString(e){let t="";return e&1&&(t+="italic "),e&2&&(t+="bold "),e&4&&(t+="underline "),e&8&&(t+="strikethrough "),t.length===0&&(t="---"),t}_getTokensAtLine(e){const t=this._getStateBeforeLine(e),i=this._tokenizationSupport.tokenize(this._model.getLineContent(e),!0,t),s=this._tokenizationSupport.tokenizeEncoded(this._model.getLineContent(e),!0,t);return{startState:t,tokens1:i.tokens,tokens2:s.tokens,endState:i.endState}}_getStateBeforeLine(e){let t=this._tokenizationSupport.getInitialState();for(let i=1;i<e;i++)t=this._tokenizationSupport.tokenize(this._model.getLineContent(i),!0,t).endState;return t}getDomNode(){return this._domNode}getPosition(){return{position:this._editor.getPosition(),preference:[2,1]}}}hF._ID="editor.contrib.inspectTokensWidget";ti(qy.ID,qy,4);Ae(lct);var lH;(function(n){n[n.PRESERVE=0]="PRESERVE",n[n.LAST=1]="LAST"})(lH||(lH={}));const Wv={Quickaccess:"workbench.contributions.quickaccess"};class hct{constructor(){this.providers=[],this.defaultProvider=void 0}registerQuickAccessProvider(e){return e.prefix.length===0?this.defaultProvider=e:this.providers.push(e),this.providers.sort((t,i)=>i.prefix.length-t.prefix.length),st(()=>{this.providers.splice(this.providers.indexOf(e),1),this.defaultProvider===e&&(this.defaultProvider=void 0)})}getQuickAccessProviders(){return Tu([this.defaultProvider,...this.providers])}getQuickAccessProvider(e){return e&&this.providers.find(i=>e.startsWith(i.prefix))||void 0||this.defaultProvider}}vn.add(Wv.Quickaccess,new hct);var dct=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},cse=function(n,e){return function(t,i){e(t,i,n)}},IS;let _R=IS=class{constructor(e,t){this.quickInputService=e,this.keybindingService=t,this.registry=vn.as(Wv.Quickaccess)}provide(e){const t=new xe;return t.add(e.onDidAccept(()=>{const[i]=e.selectedItems;i&&this.quickInputService.quickAccess.show(i.prefix,{preserveValue:!0})})),t.add(e.onDidChangeValue(i=>{const s=this.registry.getQuickAccessProvider(i.substr(IS.PREFIX.length));s&&s.prefix&&s.prefix!==IS.PREFIX&&this.quickInputService.quickAccess.show(s.prefix,{preserveValue:!0})})),e.items=this.getQuickAccessProviders().filter(i=>i.prefix!==IS.PREFIX),t}getQuickAccessProviders(){return this.registry.getQuickAccessProviders().sort((t,i)=>t.prefix.localeCompare(i.prefix)).flatMap(t=>this.createPicks(t))}createPicks(e){return e.helpEntries.map(t=>{const i=t.prefix||e.prefix,s=i||"…";return{prefix:i,label:s,keybinding:t.commandId?this.keybindingService.lookupKeybinding(t.commandId):void 0,ariaLabel:v("helpPickAriaLabel","{0}, {1}",s,t.description),description:t.description}})}};_R.PREFIX="?";_R=IS=dct([cse(0,Uu),cse(1,Di)],_R);vn.as(Wv.Quickaccess).registerQuickAccessProvider({ctor:_R,prefix:"",helpEntries:[{description:nH.helpQuickAccessActionLabel}]});class L0e{constructor(e){this.options=e,this.rangeHighlightDecorationId=void 0}provide(e,t){var i;const s=new xe;e.canAcceptInBackground=!!(!((i=this.options)===null||i===void 0)&&i.canAcceptInBackground),e.matchOnLabel=e.matchOnDescription=e.matchOnDetail=e.sortByLabel=!1;const r=s.add(new qs);return r.value=this.doProvide(e,t),s.add(this.onDidActiveTextEditorControlChange(()=>{r.value=void 0,r.value=this.doProvide(e,t)})),s}doProvide(e,t){var i;const s=new xe,r=this.activeTextEditorControl;if(r&&this.canProvideWithTextEditor(r)){const o={editor:r},a=a_e(r);if(a){let l=(i=r.saveViewState())!==null&&i!==void 0?i:void 0;s.add(a.onDidChangeCursorPosition(()=>{var c;l=(c=r.saveViewState())!==null&&c!==void 0?c:void 0})),o.restoreViewState=()=>{l&&r===this.activeTextEditorControl&&r.restoreViewState(l)},s.add(jp(t.onCancellationRequested)(()=>{var c;return(c=o.restoreViewState)===null||c===void 0?void 0:c.call(o)}))}s.add(st(()=>this.clearDecorations(r))),s.add(this.provideWithTextEditor(o,e,t))}else s.add(this.provideWithoutTextEditor(e,t));return s}canProvideWithTextEditor(e){return!0}gotoLocation({editor:e},t){e.setSelection(t.range),e.revealRangeInCenter(t.range,0),t.preserveFocus||e.focus();const i=e.getModel();i&&"getLineContent"in i&&Qp(`${i.getLineContent(t.range.startLineNumber)}`)}getModel(e){var t;return NK(e)?(t=e.getModel())===null||t===void 0?void 0:t.modified:e.getModel()}addDecorations(e,t){e.changeDecorations(i=>{const s=[];this.rangeHighlightDecorationId&&(s.push(this.rangeHighlightDecorationId.overviewRulerDecorationId),s.push(this.rangeHighlightDecorationId.rangeHighlightId),this.rangeHighlightDecorationId=void 0);const r=[{range:t,options:{description:"quick-access-range-highlight",className:"rangeHighlight",isWholeLine:!0}},{range:t,options:{description:"quick-access-range-highlight-overview",overviewRuler:{color:Sn(Fpe),position:el.Full}}}],[o,a]=i.deltaDecorations(s,r);this.rangeHighlightDecorationId={rangeHighlightId:o,overviewRulerDecorationId:a}})}clearDecorations(e){const t=this.rangeHighlightDecorationId;t&&(e.changeDecorations(i=>{i.deltaDecorations([t.overviewRulerDecorationId,t.rangeHighlightId],[])}),this.rangeHighlightDecorationId=void 0)}}class dF extends L0e{constructor(){super({canAcceptInBackground:!0})}provideWithoutTextEditor(e){const t=v("cannotRunGotoLine","Open a text editor first to go to a line.");return e.items=[{label:t}],e.ariaLabel=t,pe.None}provideWithTextEditor(e,t,i){const s=e.editor,r=new xe;r.add(t.onDidAccept(l=>{const[c]=t.selectedItems;if(c){if(!this.isValidLineNumber(s,c.lineNumber))return;this.gotoLocation(e,{range:this.toRange(c.lineNumber,c.column),keyMods:t.keyMods,preserveFocus:l.inBackground}),l.inBackground||t.hide()}}));const o=()=>{const l=this.parsePosition(s,t.value.trim().substr(dF.PREFIX.length)),c=this.getPickLabel(s,l.lineNumber,l.column);if(t.items=[{lineNumber:l.lineNumber,column:l.column,label:c}],t.ariaLabel=c,!this.isValidLineNumber(s,l.lineNumber)){this.clearDecorations(s);return}const u=this.toRange(l.lineNumber,l.column);s.revealRangeInCenter(u,0),this.addDecorations(s,u)};o(),r.add(t.onDidChangeValue(()=>o()));const a=a_e(s);return a&&a.getOptions().get(67).renderType===2&&(a.updateOptions({lineNumbers:"on"}),r.add(st(()=>a.updateOptions({lineNumbers:"relative"})))),r}toRange(e=1,t=1){return{startLineNumber:e,startColumn:t,endLineNumber:e,endColumn:t}}parsePosition(e,t){const i=t.split(/,|:|#/).map(r=>parseInt(r,10)).filter(r=>!isNaN(r)),s=this.lineCount(e)+1;return{lineNumber:i[0]>0?i[0]:s+i[0],column:i[1]}}getPickLabel(e,t,i){if(this.isValidLineNumber(e,t))return this.isValidColumn(e,t,i)?v("gotoLineColumnLabel","Go to line {0} and character {1}.",t,i):v("gotoLineLabel","Go to line {0}.",t);const s=e.getPosition()||{lineNumber:1,column:1},r=this.lineCount(e);return r>1?v("gotoLineLabelEmptyWithLimit","Current Line: {0}, Character: {1}. Type a line number between 1 and {2} to navigate to.",s.lineNumber,s.column,r):v("gotoLineLabelEmpty","Current Line: {0}, Character: {1}. Type a line number to navigate to.",s.lineNumber,s.column)}isValidLineNumber(e,t){return!t||typeof t!="number"?!1:t>0&&t<=this.lineCount(e)}isValidColumn(e,t,i){if(!i||typeof i!="number")return!1;const s=this.getModel(e);if(!s)return!1;const r={lineNumber:t,column:i};return s.validatePosition(r).equals(r)}lineCount(e){var t,i;return(i=(t=this.getModel(e))===null||t===void 0?void 0:t.getLineCount())!==null&&i!==void 0?i:0}}dF.PREFIX=":";var fct=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},gct=function(n,e){return function(t,i){e(t,i,n)}};let Nx=class extends dF{constructor(e){super(),this.editorService=e,this.onDidActiveTextEditorControlChange=Ve.None}get activeTextEditorControl(){var e;return(e=this.editorService.getFocusedCodeEditor())!==null&&e!==void 0?e:void 0}};Nx=fct([gct(0,ri)],Nx);let OG=class x0e extends qe{constructor(){super({id:x0e.ID,label:gR.gotoLineActionLabel,alias:"Go to Line/Column...",precondition:void 0,kbOpts:{kbExpr:$.focus,primary:2085,mac:{primary:293},weight:100}})}run(e){e.get(Uu).quickAccess.show(Nx.PREFIX)}};OG.ID="editor.action.gotoLine";Ae(OG);vn.as(Wv.Quickaccess).registerQuickAccessProvider({ctor:Nx,prefix:Nx.PREFIX,helpEntries:[{description:gR.gotoLineActionLabel,commandId:OG.ID}]});const E0e=[void 0,[]];function Q3(n,e,t=0,i=0){const s=e;return s.values&&s.values.length>1?pct(n,s.values,t,i):D0e(n,e,t,i)}function pct(n,e,t,i){let s=0;const r=[];for(const o of e){const[a,l]=D0e(n,o,t,i);if(typeof a!="number")return E0e;s+=a,r.push(...l)}return[s,mct(r)]}function D0e(n,e,t,i){const s=F_(e.original,e.originalLowercase,t,n,n.toLowerCase(),i,{firstMatchCanBeWeak:!0,boostFullMatch:!0});return s?[s[0],AE(s)]:E0e}function mct(n){const e=n.sort((s,r)=>s.start-r.start),t=[];let i;for(const s of e)!i||!_ct(i,s)?(i=s,t.push(s)):(i.start=Math.min(i.start,s.start),i.end=Math.max(i.end,s.end));return t}function _ct(n,e){return!(n.end<e.start||e.end<n.start)}function use(n){return n.startsWith('"')&&n.endsWith('"')}const I0e=" ";function cH(n){typeof n!="string"&&(n="");const e=n.toLowerCase(),{pathNormalized:t,normalized:i,normalizedLowercase:s}=hse(n),r=t.indexOf(Su)>=0,o=use(n);let a;const l=n.split(I0e);if(l.length>1)for(const c of l){const u=use(c),{pathNormalized:h,normalized:d,normalizedLowercase:f}=hse(c);d&&(a||(a=[]),a.push({original:c,originalLowercase:c.toLowerCase(),pathNormalized:h,normalized:d,normalizedLowercase:f,expectContiguousMatch:u}))}return{original:n,originalLowercase:e,pathNormalized:t,normalized:i,normalizedLowercase:s,values:a,containsPathSeparator:r,expectContiguousMatch:o}}function hse(n){let e;yr?e=n.replace(/\//g,Su):e=n.replace(/\\/g,Su);const t=S8e(e).replace(/\s|"/g,"");return{pathNormalized:e,normalized:t,normalizedLowercase:t.toLowerCase()}}function dse(n){return Array.isArray(n)?cH(n.map(e=>e.original).join(I0e)):cH(n.original)}var vct=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},fse=function(n,e){return function(t,i){e(t,i,n)}},Fb;let nd=Fb=class extends L0e{constructor(e,t,i=Object.create(null)){super(i),this._languageFeaturesService=e,this._outlineModelService=t,this.options=i,this.options.canAcceptInBackground=!0}provideWithoutTextEditor(e){return this.provideLabelPick(e,v("cannotRunGotoSymbolWithoutEditor","To go to a symbol, first open a text editor with symbol information.")),pe.None}provideWithTextEditor(e,t,i){const s=e.editor,r=this.getModel(s);return r?this._languageFeaturesService.documentSymbolProvider.has(r)?this.doProvideWithEditorSymbols(e,r,t,i):this.doProvideWithoutEditorSymbols(e,r,t,i):pe.None}doProvideWithoutEditorSymbols(e,t,i,s){const r=new xe;return this.provideLabelPick(i,v("cannotRunGotoSymbolWithoutSymbolProvider","The active text editor does not provide symbol information.")),(async()=>!await this.waitForLanguageSymbolRegistry(t,r)||s.isCancellationRequested||r.add(this.doProvideWithEditorSymbols(e,t,i,s)))(),r}provideLabelPick(e,t){e.items=[{label:t,index:0,kind:14}],e.ariaLabel=t}async waitForLanguageSymbolRegistry(e,t){if(this._languageFeaturesService.documentSymbolProvider.has(e))return!0;const i=new cO,s=t.add(this._languageFeaturesService.documentSymbolProvider.onDidChange(()=>{this._languageFeaturesService.documentSymbolProvider.has(e)&&(s.dispose(),i.complete(!0))}));return t.add(st(()=>i.complete(!1))),i.p}doProvideWithEditorSymbols(e,t,i,s){var r;const o=e.editor,a=new xe;a.add(i.onDidAccept(h=>{const[d]=i.selectedItems;d&&d.range&&(this.gotoLocation(e,{range:d.range.selection,keyMods:i.keyMods,preserveFocus:h.inBackground}),h.inBackground||i.hide())})),a.add(i.onDidTriggerItemButton(({item:h})=>{h&&h.range&&(this.gotoLocation(e,{range:h.range.selection,keyMods:i.keyMods,forceSideBySide:!0}),i.hide())}));const l=this.getDocumentSymbols(t,s);let c;const u=async h=>{c==null||c.dispose(!0),i.busy=!1,c=new es(s),i.busy=!0;try{const d=cH(i.value.substr(Fb.PREFIX.length).trim()),f=await this.doGetSymbolPicks(l,d,void 0,c.token);if(s.isCancellationRequested)return;if(f.length>0){if(i.items=f,h&&d.original.length===0){const g=AL(f,p=>!!(p.type!=="separator"&&p.range&&M.containsPosition(p.range.decoration,h)));g&&(i.activeItems=[g])}}else d.original.length>0?this.provideLabelPick(i,v("noMatchingSymbolResults","No matching editor symbols")):this.provideLabelPick(i,v("noSymbolResults","No editor symbols"))}finally{s.isCancellationRequested||(i.busy=!1)}};return a.add(i.onDidChangeValue(()=>u(void 0))),u((r=o.getSelection())===null||r===void 0?void 0:r.getPosition()),a.add(i.onDidChangeActive(()=>{const[h]=i.activeItems;h&&h.range&&(o.revealRangeInCenter(h.range.selection,0),this.addDecorations(o,h.range.decoration))})),a}async doGetSymbolPicks(e,t,i,s){var r,o;const a=await e;if(s.isCancellationRequested)return[];const l=t.original.indexOf(Fb.SCOPE_PREFIX)===0,c=l?1:0;let u,h;t.values&&t.values.length>1?(u=dse(t.values[0]),h=dse(t.values.slice(1))):u=t;let d;const f=(o=(r=this.options)===null||r===void 0?void 0:r.openSideBySideDirection)===null||o===void 0?void 0:o.call(r);f&&(d=[{iconClass:f==="right"?nt.asClassName(Pe.splitHorizontal):nt.asClassName(Pe.splitVertical),tooltip:f==="right"?v("openToSide","Open to the Side"):v("openToBottom","Open to the Bottom")}]);const g=[];for(let _=0;_<a.length;_++){const b=a[_],y=C8e(b.name),w=`$(${eP.toIcon(b.kind).id}) ${y}`,S=w.length-y.length;let E=b.containerName;i!=null&&i.extraContainerLabel&&(E?E=`${i.extraContainerLabel} • ${E}`:E=i.extraContainerLabel);let L,k,x,I;if(t.original.length>c){let T=!1;if(u!==t&&([L,k]=Q3(w,{...t,values:void 0},c,S),typeof L=="number"&&(T=!0)),typeof L!="number"&&([L,k]=Q3(w,u,c,S),typeof L!="number"))continue;if(!T&&h){if(E&&h.original.length>0&&([x,I]=Q3(E,h)),typeof x!="number")continue;typeof L=="number"&&(L+=x)}}const N=b.tags&&b.tags.indexOf(1)>=0;g.push({index:_,kind:b.kind,score:L,label:w,ariaLabel:Mze(b.name,b.kind),description:E,highlights:N?void 0:{label:k,description:I},range:{selection:M.collapseToStart(b.selectionRange),decoration:b.range},strikethrough:N,buttons:d})}const p=g.sort((_,b)=>l?this.compareByKindAndScore(_,b):this.compareByScore(_,b));let m=[];if(l){let _=function(){y&&typeof b=="number"&&w>0&&(y.label=I_(e6[b]||J3,w))},b,y,w=0;for(const S of p)b!==S.kind?(_(),b=S.kind,w=1,y={type:"separator"},m.push(y)):w++,m.push(S);_()}else p.length>0&&(m=[{label:v("symbols","symbols ({0})",g.length),type:"separator"},...p]);return m}compareByScore(e,t){if(typeof e.score!="number"&&typeof t.score=="number")return 1;if(typeof e.score=="number"&&typeof t.score!="number")return-1;if(typeof e.score=="number"&&typeof t.score=="number"){if(e.score>t.score)return-1;if(e.score<t.score)return 1}return e.index<t.index?-1:e.index>t.index?1:0}compareByKindAndScore(e,t){const i=e6[e.kind]||J3,s=e6[t.kind]||J3,r=i.localeCompare(s);return r===0?this.compareByScore(e,t):r}async getDocumentSymbols(e,t){const i=await this._outlineModelService.getOrCreate(e,t);return t.isCancellationRequested?[]:i.asListOfDocumentSymbols()}};nd.PREFIX="@";nd.SCOPE_PREFIX=":";nd.PREFIX_BY_CATEGORY=`${Fb.PREFIX}${Fb.SCOPE_PREFIX}`;nd=Fb=vct([fse(0,Ge),fse(1,B2)],nd);const J3=v("property","properties ({0})"),e6={5:v("method","methods ({0})"),11:v("function","functions ({0})"),8:v("_constructor","constructors ({0})"),12:v("variable","variables ({0})"),4:v("class","classes ({0})"),22:v("struct","structs ({0})"),23:v("event","events ({0})"),24:v("operator","operators ({0})"),10:v("interface","interfaces ({0})"),2:v("namespace","namespaces ({0})"),3:v("package","packages ({0})"),25:v("typeParameter","type parameters ({0})"),1:v("modules","modules ({0})"),6:v("property","properties ({0})"),9:v("enum","enumerations ({0})"),21:v("enumMember","enumeration members ({0})"),14:v("string","strings ({0})"),0:v("file","files ({0})"),17:v("array","arrays ({0})"),15:v("number","numbers ({0})"),16:v("boolean","booleans ({0})"),18:v("object","objects ({0})"),19:v("key","keys ({0})"),7:v("field","fields ({0})"),13:v("constant","constants ({0})")};var bct=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},t6=function(n,e){return function(t,i){e(t,i,n)}};let uH=class extends nd{constructor(e,t,i){super(t,i),this.editorService=e,this.onDidActiveTextEditorControlChange=Ve.None}get activeTextEditorControl(){var e;return(e=this.editorService.getFocusedCodeEditor())!==null&&e!==void 0?e:void 0}};uH=bct([t6(0,ri),t6(1,Ge),t6(2,B2)],uH);class QE extends qe{constructor(){super({id:QE.ID,label:Tx.quickOutlineActionLabel,alias:"Go to Symbol...",precondition:$.hasDocumentSymbolProvider,kbOpts:{kbExpr:$.focus,primary:3117,weight:100},contextMenuOpts:{group:"navigation",order:3}})}run(e){e.get(Uu).quickAccess.show(nd.PREFIX,{itemActivation:Qc.NONE})}}QE.ID="editor.action.quickOutline";Ae(QE);vn.as(Wv.Quickaccess).registerQuickAccessProvider({ctor:uH,prefix:nd.PREFIX,helpEntries:[{description:Tx.quickOutlineActionLabel,prefix:nd.PREFIX,commandId:QE.ID},{description:Tx.quickOutlineByCategoryActionLabel,prefix:nd.PREFIX_BY_CATEGORY}]});function i6(n,e){return e&&(n.stack||n.stacktrace)?v("stackTrace.format","{0}: {1}",pse(n),gse(n.stack)||gse(n.stacktrace)):pse(n)}function gse(n){return Array.isArray(n)?n.join(` +`):n}function pse(n){return n.code==="ERR_UNC_HOST_NOT_ALLOWED"?`${n.message}. Please update the 'security.allowedUNCHosts' setting if you want to allow this host.`:typeof n.code=="string"&&typeof n.errno=="number"&&typeof n.syscall=="string"?v("nodeExceptionMessage","A system error occurred ({0})",n.message):n.message||v("error.defaultMessage","An unknown error occurred. Please consult the log for more details.")}function T0e(n=null,e=!1){if(!n)return v("error.defaultMessage","An unknown error occurred. Please consult the log for more details.");if(Array.isArray(n)){const t=Tu(n),i=T0e(t[0],e);return t.length>1?v("error.moreErrors","{0} ({1} errors in total)",i,t.length):i}if(uo(n))return n;if(n.detail){const t=n.detail;if(t.error)return i6(t.error,e);if(t.exception)return i6(t.exception,e)}return n.stack?i6(n,e):n.message?n.message:v("error.defaultMessage","An unknown error occurred. Please consult the log for more details.")}function yct(n){var e;const t=new Map;for(const i of n)t.set(i,((e=t.get(i))!==null&&e!==void 0?e:0)+1);return t}class kk{constructor(){this.chunkCount=0,this.chunkOccurrences=new Map,this.documents=new Map}calculateScores(e,t){const i=this.computeEmbedding(e),s=new Map,r=[];for(const[o,a]of this.documents){if(t.isCancellationRequested)return[];for(const l of a.chunks){const c=this.computeSimilarityScore(l,i,s);c>0&&r.push({key:o,score:c})}}return r}static termFrequencies(e){return yct(kk.splitTerms(e))}static*splitTerms(e){const t=i=>i.toLowerCase();for(const[i]of e.matchAll(new RegExp("\\b\\p{Letter}[\\p{Letter}\\d]{2,}\\b","gu"))){yield t(i);const s=i.replace(/([a-z])([A-Z])/g,"$1 $2").split(/\s+/g);if(s.length>1)for(const r of s)r.length>2&&new RegExp("\\p{Letter}{3,}","gu").test(r)&&(yield t(r))}}updateDocuments(e){var t;for(const{key:i}of e)this.deleteDocument(i);for(const i of e){const s=[];for(const r of i.textChunks){const o=kk.termFrequencies(r);for(const a of o.keys())this.chunkOccurrences.set(a,((t=this.chunkOccurrences.get(a))!==null&&t!==void 0?t:0)+1);s.push({text:r,tf:o})}this.chunkCount+=s.length,this.documents.set(i.key,{chunks:s})}return this}deleteDocument(e){const t=this.documents.get(e);if(t){this.documents.delete(e),this.chunkCount-=t.chunks.length;for(const i of t.chunks)for(const s of i.tf.keys()){const r=this.chunkOccurrences.get(s);if(typeof r=="number"){const o=r-1;o<=0?this.chunkOccurrences.delete(s):this.chunkOccurrences.set(s,o)}}}}computeSimilarityScore(e,t,i){let s=0;for(const[r,o]of Object.entries(t)){const a=e.tf.get(r);if(!a)continue;let l=i.get(r);typeof l!="number"&&(l=this.computeIdf(r),i.set(r,l));const c=a*l;s+=c*o}return s}computeEmbedding(e){const t=kk.termFrequencies(e);return this.computeTfidf(t)}computeIdf(e){var t;const i=(t=this.chunkOccurrences.get(e))!==null&&t!==void 0?t:0;return i>0?Math.log((this.chunkCount+1)/i):0}computeTfidf(e){const t=Object.create(null);for(const[i,s]of e){const r=this.computeIdf(i);r>0&&(t[i]=s*r)}return t}}function Cct(n){var e,t;const i=n.slice(0);i.sort((r,o)=>o.score-r.score);const s=(t=(e=i[0])===null||e===void 0?void 0:e.score)!==null&&t!==void 0?t:0;if(s>0)for(const r of i)r.score/=s;return i}var eb;(function(n){n[n.NO_ACTION=0]="NO_ACTION",n[n.CLOSE_PICKER=1]="CLOSE_PICKER",n[n.REFRESH_PICKER=2]="REFRESH_PICKER",n[n.REMOVE_ITEM=3]="REMOVE_ITEM"})(eb||(eb={}));function n6(n){const e=n;return Array.isArray(e.items)}function mse(n){const e=n;return!!e.picks&&e.additionalPicks instanceof Promise}class wct extends pe{constructor(e,t){super(),this.prefix=e,this.options=t}provide(e,t,i){var s;const r=new xe;e.canAcceptInBackground=!!(!((s=this.options)===null||s===void 0)&&s.canAcceptInBackground),e.matchOnLabel=e.matchOnDescription=e.matchOnDetail=e.sortByLabel=!1;let o;const a=r.add(new qs),l=async()=>{const c=a.value=new xe;o==null||o.dispose(!0),e.busy=!1,o=new es(t);const u=o.token,h=e.value.substr(this.prefix.length).trim(),d=this._getPicks(h,c,u,i),f=(p,m)=>{var _;let b,y;if(n6(p)?(b=p.items,y=p.active):b=p,b.length===0){if(m)return!1;(h.length>0||e.hideInput)&&(!((_=this.options)===null||_===void 0)&&_.noResultsPick)&&(dL(this.options.noResultsPick)?b=[this.options.noResultsPick(h)]:b=[this.options.noResultsPick])}return e.items=b,y&&(e.activeItems=[y]),!0},g=async p=>{let m=!1,_=!1;await Promise.all([(async()=>{typeof p.mergeDelay=="number"&&(await Kp(p.mergeDelay),u.isCancellationRequested)||_||(m=f(p.picks,!0))})(),(async()=>{e.busy=!0;try{const b=await p.additionalPicks;if(u.isCancellationRequested)return;let y,w;n6(p.picks)?(y=p.picks.items,w=p.picks.active):y=p.picks;let S,E;if(n6(b)?(S=b.items,E=b.active):S=b,S.length>0||!m){let L;if(!w&&!E){const k=e.activeItems[0];k&&y.indexOf(k)!==-1&&(L=k)}f({items:[...y,...S],active:w||E||L})}}finally{u.isCancellationRequested||(e.busy=!1),_=!0}})()])};if(d!==null)if(mse(d))await g(d);else if(!(d instanceof Promise))f(d);else{e.busy=!0;try{const p=await d;if(u.isCancellationRequested)return;mse(p)?await g(p):f(p)}finally{u.isCancellationRequested||(e.busy=!1)}}};return r.add(e.onDidChangeValue(()=>l())),l(),r.add(e.onDidAccept(c=>{const[u]=e.selectedItems;typeof(u==null?void 0:u.accept)=="function"&&(c.inBackground||e.hide(),u.accept(e.keyMods,c))})),r.add(e.onDidTriggerItemButton(async({button:c,item:u})=>{var h,d;if(typeof u.trigger=="function"){const f=(d=(h=u.buttons)===null||h===void 0?void 0:h.indexOf(c))!==null&&d!==void 0?d:-1;if(f>=0){const g=u.trigger(f,e.keyMods),p=typeof g=="number"?g:await g;if(t.isCancellationRequested)return;switch(p){case eb.NO_ACTION:break;case eb.CLOSE_PICKER:e.hide();break;case eb.REFRESH_PICKER:l();break;case eb.REMOVE_ITEM:{const m=e.items.indexOf(u);if(m!==-1){const _=e.items.slice(),b=_.splice(m,1),y=e.activeItems.filter(S=>S!==b[0]),w=e.keepScrollPosition;e.keepScrollPosition=!0,e.items=_,y&&(e.activeItems=y),e.keepScrollPosition=w}break}}}}})),r}}var N0e=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},D1=function(n,e){return function(t,i){e(t,i,n)}},f1,us;let sv=f1=class extends wct{constructor(e,t,i,s,r,o){super(f1.PREFIX,e),this.instantiationService=t,this.keybindingService=i,this.commandService=s,this.telemetryService=r,this.dialogService=o,this.commandsHistory=this._register(this.instantiationService.createInstance(bm)),this.options=e}async _getPicks(e,t,i,s){var r,o,a,l;const c=await this.getCommandPicks(i);if(i.isCancellationRequested)return[];const u=jp(()=>{const _=new kk;_.updateDocuments(c.map(y=>({key:y.commandId,textChunks:[this.getTfIdfChunk(y)]})));const b=_.calculateScores(e,i);return Cct(b).filter(y=>y.score>f1.TFIDF_THRESHOLD).slice(0,f1.TFIDF_MAX_RESULTS)}),h=[];for(const _ of c){const b=(r=f1.WORD_FILTER(e,_.label))!==null&&r!==void 0?r:void 0,y=_.commandAlias&&(o=f1.WORD_FILTER(e,_.commandAlias))!==null&&o!==void 0?o:void 0;if(b||y)_.highlights={label:b,detail:this.options.showAlias?y:void 0},h.push(_);else if(e===_.commandId)h.push(_);else if(e.length>=3){const w=u();if(i.isCancellationRequested)return[];const S=w.find(E=>E.key===_.commandId);S&&(_.tfIdfScore=S.score,h.push(_))}}const d=new Map;for(const _ of h){const b=d.get(_.label);b?(_.description=_.commandId,b.description=b.commandId):d.set(_.label,_)}h.sort((_,b)=>{if(_.tfIdfScore&&b.tfIdfScore)return _.tfIdfScore===b.tfIdfScore?_.label.localeCompare(b.label):b.tfIdfScore-_.tfIdfScore;if(_.tfIdfScore)return 1;if(b.tfIdfScore)return-1;const y=this.commandsHistory.peek(_.commandId),w=this.commandsHistory.peek(b.commandId);if(y&&w)return y>w?-1:1;if(y)return-1;if(w)return 1;if(this.options.suggestedCommandIds){const S=this.options.suggestedCommandIds.has(_.commandId),E=this.options.suggestedCommandIds.has(b.commandId);if(S&&E)return 0;if(S)return-1;if(E)return 1}return _.label.localeCompare(b.label)});const f=[];let g=!1,p=!0,m=!!this.options.suggestedCommandIds;for(let _=0;_<h.length;_++){const b=h[_];_===0&&this.commandsHistory.peek(b.commandId)&&(f.push({type:"separator",label:v("recentlyUsed","recently used")}),g=!0),p&&b.tfIdfScore!==void 0&&(f.push({type:"separator",label:v("suggested","similar commands")}),p=!1),m&&b.tfIdfScore===void 0&&!this.commandsHistory.peek(b.commandId)&&(!((a=this.options.suggestedCommandIds)===null||a===void 0)&&a.has(b.commandId))&&(f.push({type:"separator",label:v("commonlyUsed","commonly used")}),g=!0,m=!1),g&&b.tfIdfScore===void 0&&!this.commandsHistory.peek(b.commandId)&&!(!((l=this.options.suggestedCommandIds)===null||l===void 0)&&l.has(b.commandId))&&(f.push({type:"separator",label:v("morecCommands","other commands")}),g=!1),f.push(this.toCommandPick(b,s))}return this.hasAdditionalCommandPicks(e,i)?{picks:f,additionalPicks:(async()=>{var _;const b=await this.getAdditionalCommandPicks(c,h,e,i);if(i.isCancellationRequested)return[];const y=b.map(w=>this.toCommandPick(w,s));return p&&((_=y[0])===null||_===void 0?void 0:_.type)!=="separator"&&y.unshift({type:"separator",label:v("suggested","similar commands")}),y})()}:f}toCommandPick(e,t){if(e.type==="separator")return e;const i=this.keybindingService.lookupKeybinding(e.commandId),s=i?v("commandPickAriaLabelWithKeybinding","{0}, {1}",e.label,i.getAriaLabel()):e.label;return{...e,ariaLabel:s,detail:this.options.showAlias&&e.commandAlias!==e.label?e.commandAlias:void 0,keybinding:i,accept:async()=>{var r,o;this.commandsHistory.push(e.commandId),this.telemetryService.publicLog2("workbenchActionExecuted",{id:e.commandId,from:(r=t==null?void 0:t.from)!==null&&r!==void 0?r:"quick open"});try{!((o=e.args)===null||o===void 0)&&o.length?await this.commandService.executeCommand(e.commandId,...e.args):await this.commandService.executeCommand(e.commandId)}catch(a){Wu(a)||this.dialogService.error(v("canNotRun","Command '{0}' resulted in an error",e.label),T0e(a))}}}}getTfIdfChunk({label:e,commandAlias:t,commandDescription:i}){let s=e;return t&&t!==e&&(s+=` - ${t}`),i&&i.value!==e&&(s+=` - ${i.value===i.original?i.value:`${i.value} (${i.original})`}`),s}};sv.PREFIX=">";sv.TFIDF_THRESHOLD=.5;sv.TFIDF_MAX_RESULTS=5;sv.WORD_FILTER=Zq(YL,lGe,Nme);sv=f1=N0e([D1(1,at),D1(2,Di),D1(3,Dn),D1(4,fa),D1(5,XE)],sv);let bm=us=class extends pe{constructor(e,t){super(),this.storageService=e,this.configurationService=t,this.configuredCommandsHistoryLength=0,this.updateConfiguration(),this.load(),this.registerListeners()}registerListeners(){this._register(this.configurationService.onDidChangeConfiguration(e=>this.updateConfiguration(e))),this._register(this.storageService.onWillSaveState(e=>{e.reason===QL.SHUTDOWN&&this.saveState()}))}updateConfiguration(e){e&&!e.affectsConfiguration("workbench.commandPalette.history")||(this.configuredCommandsHistoryLength=us.getConfiguredCommandHistoryLength(this.configurationService),us.cache&&us.cache.limit!==this.configuredCommandsHistoryLength&&(us.cache.limit=this.configuredCommandsHistoryLength,us.hasChanges=!0))}load(){const e=this.storageService.get(us.PREF_KEY_CACHE,0);let t;if(e)try{t=JSON.parse(e)}catch{}const i=us.cache=new Rm(this.configuredCommandsHistoryLength,1);if(t){let s;t.usesLRU?s=t.entries:s=t.entries.sort((r,o)=>r.value-o.value),s.forEach(r=>i.set(r.key,r.value))}us.counter=this.storageService.getNumber(us.PREF_KEY_COUNTER,0,us.counter)}push(e){us.cache&&(us.cache.set(e,us.counter++),us.hasChanges=!0)}peek(e){var t;return(t=us.cache)===null||t===void 0?void 0:t.peek(e)}saveState(){if(!us.cache||!us.hasChanges)return;const e={usesLRU:!0,entries:[]};us.cache.forEach((t,i)=>e.entries.push({key:i,value:t})),this.storageService.store(us.PREF_KEY_CACHE,JSON.stringify(e),0,0),this.storageService.store(us.PREF_KEY_COUNTER,us.counter,0,0),us.hasChanges=!1}static getConfiguredCommandHistoryLength(e){var t,i;const r=(i=(t=e.getValue().workbench)===null||t===void 0?void 0:t.commandPalette)===null||i===void 0?void 0:i.history;return typeof r=="number"?r:us.DEFAULT_COMMANDS_HISTORY_LENGTH}};bm.DEFAULT_COMMANDS_HISTORY_LENGTH=50;bm.PREF_KEY_CACHE="commandPalette.mru.cache";bm.PREF_KEY_COUNTER="commandPalette.mru.counter";bm.counter=1;bm.hasChanges=!1;bm=us=N0e([D1(0,Rc),D1(1,Ut)],bm);class Sct extends sv{constructor(e,t,i,s,r,o){super(e,t,i,s,r,o)}getCodeEditorCommandPicks(){const e=this.activeTextEditorControl;if(!e)return[];const t=[];for(const i of e.getSupportedActions())t.push({commandId:i.id,commandAlias:i.alias,label:iK(i.label)||i.id});return t}}var kct=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},f0=function(n,e){return function(t,i){e(t,i,n)}};let Ax=class extends Sct{get activeTextEditorControl(){var e;return(e=this.codeEditorService.getFocusedCodeEditor())!==null&&e!==void 0?e:void 0}constructor(e,t,i,s,r,o){super({showAlias:!1},e,i,s,r,o),this.codeEditorService=t}async getCommandPicks(){return this.getCodeEditorCommandPicks()}hasAdditionalCommandPicks(){return!1}async getAdditionalCommandPicks(){return[]}};Ax=kct([f0(0,at),f0(1,ri),f0(2,Di),f0(3,Dn),f0(4,fa),f0(5,XE)],Ax);class JE extends qe{constructor(){super({id:JE.ID,label:pR.quickCommandActionLabel,alias:"Command Palette",precondition:void 0,kbOpts:{kbExpr:$.focus,primary:59,weight:100},contextMenuOpts:{group:"z_commands",order:1}})}run(e){e.get(Uu).quickAccess.show(Ax.PREFIX)}}JE.ID="editor.action.quickCommand";Ae(JE);vn.as(Wv.Quickaccess).registerQuickAccessProvider({ctor:Ax,prefix:Ax.PREFIX,helpEntries:[{description:pR.quickCommandHelp,commandId:JE.ID}]});var Lct=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},g0=function(n,e){return function(t,i){e(t,i,n)}};let hH=class extends fm{constructor(e,t,i,s,r,o,a){super(!0,e,t,i,s,r,o,a)}};hH=Lct([g0(1,ft),g0(2,ri),g0(3,is),g0(4,at),g0(5,Rc),g0(6,Ut)],hH);ti(fm.ID,hH,4);class xct{constructor(e,t,i,s,r){this._parsedThemeRuleBrand=void 0,this.token=e,this.index=t,this.fontStyle=i,this.foreground=s,this.background=r}}function Ect(n){if(!n||!Array.isArray(n))return[];const e=[];let t=0;for(let i=0,s=n.length;i<s;i++){const r=n[i];let o=-1;if(typeof r.fontStyle=="string"){o=0;const c=r.fontStyle.split(" ");for(let u=0,h=c.length;u<h;u++)switch(c[u]){case"italic":o=o|1;break;case"bold":o=o|2;break;case"underline":o=o|4;break;case"strikethrough":o=o|8;break}}let a=null;typeof r.foreground=="string"&&(a=r.foreground);let l=null;typeof r.background=="string"&&(l=r.background),e[t++]=new xct(r.token||"",i,o,a,l)}return e}function Dct(n,e){n.sort((u,h)=>{const d=Pct(u.token,h.token);return d!==0?d:u.index-h.index});let t=0,i="000000",s="ffffff";for(;n.length>=1&&n[0].token==="";){const u=n.shift();u.fontStyle!==-1&&(t=u.fontStyle),u.foreground!==null&&(i=u.foreground),u.background!==null&&(s=u.background)}const r=new Tct;for(const u of e)r.getId(u);const o=r.getId(i),a=r.getId(s),l=new FG(t,o,a),c=new BG(l);for(let u=0,h=n.length;u<h;u++){const d=n[u];c.insert(d.token,d.fontStyle,r.getId(d.foreground),r.getId(d.background))}return new A0e(r,c)}const Ict=/^#?([0-9A-Fa-f]{6})([0-9A-Fa-f]{2})?$/;class Tct{constructor(){this._lastColorId=0,this._id2color=[],this._color2id=new Map}getId(e){if(e===null)return 0;const t=e.match(Ict);if(!t)throw new Error("Illegal value for token color: "+e);e=t[1].toUpperCase();let i=this._color2id.get(e);return i||(i=++this._lastColorId,this._color2id.set(e,i),this._id2color[i]=me.fromHex("#"+e),i)}getColorMap(){return this._id2color.slice(0)}}class A0e{static createFromRawTokenTheme(e,t){return this.createFromParsedTokenTheme(Ect(e),t)}static createFromParsedTokenTheme(e,t){return Dct(e,t)}constructor(e,t){this._colorMap=e,this._root=t,this._cache=new Map}getColorMap(){return this._colorMap.getColorMap()}_match(e){return this._root.match(e)}match(e,t){let i=this._cache.get(t);if(typeof i>"u"){const s=this._match(t),r=Act(t);i=(s.metadata|r<<8)>>>0,this._cache.set(t,i)}return(i|e<<0)>>>0}}const Nct=/\b(comment|string|regex|regexp)\b/;function Act(n){const e=n.match(Nct);if(!e)return 0;switch(e[1]){case"comment":return 1;case"string":return 2;case"regex":return 3;case"regexp":return 3}throw new Error("Unexpected match for standard token type!")}function Pct(n,e){return n<e?-1:n>e?1:0}class FG{constructor(e,t,i){this._themeTrieElementRuleBrand=void 0,this._fontStyle=e,this._foreground=t,this._background=i,this.metadata=(this._fontStyle<<11|this._foreground<<15|this._background<<24)>>>0}clone(){return new FG(this._fontStyle,this._foreground,this._background)}acceptOverwrite(e,t,i){e!==-1&&(this._fontStyle=e),t!==0&&(this._foreground=t),i!==0&&(this._background=i),this.metadata=(this._fontStyle<<11|this._foreground<<15|this._background<<24)>>>0}}class BG{constructor(e){this._themeTrieElementBrand=void 0,this._mainRule=e,this._children=new Map}match(e){if(e==="")return this._mainRule;const t=e.indexOf(".");let i,s;t===-1?(i=e,s=""):(i=e.substring(0,t),s=e.substring(t+1));const r=this._children.get(i);return typeof r<"u"?r.match(s):this._mainRule}insert(e,t,i,s){if(e===""){this._mainRule.acceptOverwrite(t,i,s);return}const r=e.indexOf(".");let o,a;r===-1?(o=e,a=""):(o=e.substring(0,r),a=e.substring(r+1));let l=this._children.get(o);typeof l>"u"&&(l=new BG(this._mainRule.clone()),this._children.set(o,l)),l.insert(a,t,i,s)}}function Rct(n){const e=[];for(let t=1,i=n.length;t<i;t++){const s=n[t];e[t]=`.mtk${t} { color: ${s}; }`}return e.push(".mtki { font-style: italic; }"),e.push(".mtkb { font-weight: bold; }"),e.push(".mtku { text-decoration: underline; text-underline-position: under; }"),e.push(".mtks { text-decoration: line-through; }"),e.push(".mtks.mtku { text-decoration: underline line-through; text-underline-position: under; }"),e.join(` +`)}const Mct={base:"vs",inherit:!1,rules:[{token:"",foreground:"000000",background:"fffffe"},{token:"invalid",foreground:"cd3131"},{token:"emphasis",fontStyle:"italic"},{token:"strong",fontStyle:"bold"},{token:"variable",foreground:"001188"},{token:"variable.predefined",foreground:"4864AA"},{token:"constant",foreground:"dd0000"},{token:"comment",foreground:"008000"},{token:"number",foreground:"098658"},{token:"number.hex",foreground:"3030c0"},{token:"regexp",foreground:"800000"},{token:"annotation",foreground:"808080"},{token:"type",foreground:"008080"},{token:"delimiter",foreground:"000000"},{token:"delimiter.html",foreground:"383838"},{token:"delimiter.xml",foreground:"0000FF"},{token:"tag",foreground:"800000"},{token:"tag.id.pug",foreground:"4F76AC"},{token:"tag.class.pug",foreground:"4F76AC"},{token:"meta.scss",foreground:"800000"},{token:"metatag",foreground:"e00000"},{token:"metatag.content.html",foreground:"FF0000"},{token:"metatag.html",foreground:"808080"},{token:"metatag.xml",foreground:"808080"},{token:"metatag.php",fontStyle:"bold"},{token:"key",foreground:"863B00"},{token:"string.key.json",foreground:"A31515"},{token:"string.value.json",foreground:"0451A5"},{token:"attribute.name",foreground:"FF0000"},{token:"attribute.value",foreground:"0451A5"},{token:"attribute.value.number",foreground:"098658"},{token:"attribute.value.unit",foreground:"098658"},{token:"attribute.value.html",foreground:"0000FF"},{token:"attribute.value.xml",foreground:"0000FF"},{token:"string",foreground:"A31515"},{token:"string.html",foreground:"0000FF"},{token:"string.sql",foreground:"FF0000"},{token:"string.yaml",foreground:"0451A5"},{token:"keyword",foreground:"0000FF"},{token:"keyword.json",foreground:"0451A5"},{token:"keyword.flow",foreground:"AF00DB"},{token:"keyword.flow.scss",foreground:"0000FF"},{token:"operator.scss",foreground:"666666"},{token:"operator.sql",foreground:"778899"},{token:"operator.swift",foreground:"666666"},{token:"predefined.sql",foreground:"C700C7"}],colors:{[Rs]:"#FFFFFE",[uc]:"#000000",[vpe]:"#E5EBF1",[wE]:"#D3D3D3",[SE]:"#939393",[dq]:"#ADD6FF4D"}},Oct={base:"vs-dark",inherit:!1,rules:[{token:"",foreground:"D4D4D4",background:"1E1E1E"},{token:"invalid",foreground:"f44747"},{token:"emphasis",fontStyle:"italic"},{token:"strong",fontStyle:"bold"},{token:"variable",foreground:"74B0DF"},{token:"variable.predefined",foreground:"4864AA"},{token:"variable.parameter",foreground:"9CDCFE"},{token:"constant",foreground:"569CD6"},{token:"comment",foreground:"608B4E"},{token:"number",foreground:"B5CEA8"},{token:"number.hex",foreground:"5BB498"},{token:"regexp",foreground:"B46695"},{token:"annotation",foreground:"cc6666"},{token:"type",foreground:"3DC9B0"},{token:"delimiter",foreground:"DCDCDC"},{token:"delimiter.html",foreground:"808080"},{token:"delimiter.xml",foreground:"808080"},{token:"tag",foreground:"569CD6"},{token:"tag.id.pug",foreground:"4F76AC"},{token:"tag.class.pug",foreground:"4F76AC"},{token:"meta.scss",foreground:"A79873"},{token:"meta.tag",foreground:"CE9178"},{token:"metatag",foreground:"DD6A6F"},{token:"metatag.content.html",foreground:"9CDCFE"},{token:"metatag.html",foreground:"569CD6"},{token:"metatag.xml",foreground:"569CD6"},{token:"metatag.php",fontStyle:"bold"},{token:"key",foreground:"9CDCFE"},{token:"string.key.json",foreground:"9CDCFE"},{token:"string.value.json",foreground:"CE9178"},{token:"attribute.name",foreground:"9CDCFE"},{token:"attribute.value",foreground:"CE9178"},{token:"attribute.value.number.css",foreground:"B5CEA8"},{token:"attribute.value.unit.css",foreground:"B5CEA8"},{token:"attribute.value.hex.css",foreground:"D4D4D4"},{token:"string",foreground:"CE9178"},{token:"string.sql",foreground:"FF0000"},{token:"keyword",foreground:"569CD6"},{token:"keyword.flow",foreground:"C586C0"},{token:"keyword.json",foreground:"CE9178"},{token:"keyword.flow.scss",foreground:"569CD6"},{token:"operator.scss",foreground:"909090"},{token:"operator.sql",foreground:"778899"},{token:"operator.swift",foreground:"909090"},{token:"predefined.sql",foreground:"FF00FF"}],colors:{[Rs]:"#1E1E1E",[uc]:"#D4D4D4",[vpe]:"#3A3D41",[wE]:"#404040",[SE]:"#707070",[dq]:"#ADD6FF26"}},Fct={base:"hc-black",inherit:!1,rules:[{token:"",foreground:"FFFFFF",background:"000000"},{token:"invalid",foreground:"f44747"},{token:"emphasis",fontStyle:"italic"},{token:"strong",fontStyle:"bold"},{token:"variable",foreground:"1AEBFF"},{token:"variable.parameter",foreground:"9CDCFE"},{token:"constant",foreground:"569CD6"},{token:"comment",foreground:"608B4E"},{token:"number",foreground:"FFFFFF"},{token:"regexp",foreground:"C0C0C0"},{token:"annotation",foreground:"569CD6"},{token:"type",foreground:"3DC9B0"},{token:"delimiter",foreground:"FFFF00"},{token:"delimiter.html",foreground:"FFFF00"},{token:"tag",foreground:"569CD6"},{token:"tag.id.pug",foreground:"4F76AC"},{token:"tag.class.pug",foreground:"4F76AC"},{token:"meta",foreground:"D4D4D4"},{token:"meta.tag",foreground:"CE9178"},{token:"metatag",foreground:"569CD6"},{token:"metatag.content.html",foreground:"1AEBFF"},{token:"metatag.html",foreground:"569CD6"},{token:"metatag.xml",foreground:"569CD6"},{token:"metatag.php",fontStyle:"bold"},{token:"key",foreground:"9CDCFE"},{token:"string.key",foreground:"9CDCFE"},{token:"string.value",foreground:"CE9178"},{token:"attribute.name",foreground:"569CD6"},{token:"attribute.value",foreground:"3FF23F"},{token:"string",foreground:"CE9178"},{token:"string.sql",foreground:"FF0000"},{token:"keyword",foreground:"569CD6"},{token:"keyword.flow",foreground:"C586C0"},{token:"operator.sql",foreground:"778899"},{token:"operator.swift",foreground:"909090"},{token:"predefined.sql",foreground:"FF00FF"}],colors:{[Rs]:"#000000",[uc]:"#FFFFFF",[wE]:"#FFFFFF",[SE]:"#FFFFFF"}},Bct={base:"hc-light",inherit:!1,rules:[{token:"",foreground:"292929",background:"FFFFFF"},{token:"invalid",foreground:"B5200D"},{token:"emphasis",fontStyle:"italic"},{token:"strong",fontStyle:"bold"},{token:"variable",foreground:"264F70"},{token:"variable.predefined",foreground:"4864AA"},{token:"constant",foreground:"dd0000"},{token:"comment",foreground:"008000"},{token:"number",foreground:"098658"},{token:"number.hex",foreground:"3030c0"},{token:"regexp",foreground:"800000"},{token:"annotation",foreground:"808080"},{token:"type",foreground:"008080"},{token:"delimiter",foreground:"000000"},{token:"delimiter.html",foreground:"383838"},{token:"tag",foreground:"800000"},{token:"tag.id.pug",foreground:"4F76AC"},{token:"tag.class.pug",foreground:"4F76AC"},{token:"meta.scss",foreground:"800000"},{token:"metatag",foreground:"e00000"},{token:"metatag.content.html",foreground:"B5200D"},{token:"metatag.html",foreground:"808080"},{token:"metatag.xml",foreground:"808080"},{token:"metatag.php",fontStyle:"bold"},{token:"key",foreground:"863B00"},{token:"string.key.json",foreground:"A31515"},{token:"string.value.json",foreground:"0451A5"},{token:"attribute.name",foreground:"264F78"},{token:"attribute.value",foreground:"0451A5"},{token:"string",foreground:"A31515"},{token:"string.sql",foreground:"B5200D"},{token:"keyword",foreground:"0000FF"},{token:"keyword.flow",foreground:"AF00DB"},{token:"operator.sql",foreground:"778899"},{token:"operator.swift",foreground:"666666"},{token:"predefined.sql",foreground:"C700C7"}],colors:{[Rs]:"#FFFFFF",[uc]:"#292929",[wE]:"#292929",[SE]:"#292929"}};function Wct(n){const e=new xe,t=e.add(new ue),i=e1e();return e.add(i.onDidChange(()=>t.fire())),n&&e.add(n.onDidProductIconThemeChange(()=>t.fire())),{dispose:()=>e.dispose(),onDidChange:t.event,getCSS(){const s=n?n.getProductIconTheme():new P0e,r={},o=l=>{const c=s.getIcon(l);if(!c)return;const u=c.font;return u?(r[u.id]=u.definition,`.codicon-${l.id}:before { content: '${c.fontCharacter}'; font-family: ${EJ(u.id)}; }`):`.codicon-${l.id}:before { content: '${c.fontCharacter}'; }`},a=[];for(const l of i.getIcons()){const c=o(l);c&&a.push(c)}for(const l in r){const c=r[l],u=c.weight?`font-weight: ${c.weight};`:"",h=c.style?`font-style: ${c.style};`:"",d=c.src.map(f=>`${Xp(f.location)} format('${f.format}')`).join(", ");a.push(`@font-face { src: ${d}; font-family: ${EJ(l)};${u}${h} font-display: block; }`)}return a.join(` +`)}}}class P0e{getIcon(e){const t=e1e();let i=e.defaults;for(;nt.isThemeIcon(i);){const s=t.getIcon(i.id);if(!s)return;i=s.defaults}return i}}const gf="vs",Bb="vs-dark",g_="hc-black",p_="hc-light",R0e=vn.as(fpe.ColorContribution),Vct=vn.as(Ppe.ThemingContribution);class M0e{constructor(e,t){this.semanticHighlighting=!1,this.themeData=t;const i=t.base;e.length>0?(NN(e)?this.id=e:this.id=i+" "+e,this.themeName=e):(this.id=i,this.themeName=i),this.colors=null,this.defaultColors=Object.create(null),this._tokenTheme=null}get base(){return this.themeData.base}notifyBaseUpdated(){this.themeData.inherit&&(this.colors=null,this._tokenTheme=null)}getColors(){if(!this.colors){const e=new Map;for(const t in this.themeData.colors)e.set(t,me.fromHex(this.themeData.colors[t]));if(this.themeData.inherit){const t=dH(this.themeData.base);for(const i in t.colors)e.has(i)||e.set(i,me.fromHex(t.colors[i]))}this.colors=e}return this.colors}getColor(e,t){const i=this.getColors().get(e);if(i)return i;if(t!==!1)return this.getDefault(e)}getDefault(e){let t=this.defaultColors[e];return t||(t=R0e.resolveDefaultColor(e,this),this.defaultColors[e]=t,t)}defines(e){return this.getColors().has(e)}get type(){switch(this.base){case gf:return Sl.LIGHT;case g_:return Sl.HIGH_CONTRAST_DARK;case p_:return Sl.HIGH_CONTRAST_LIGHT;default:return Sl.DARK}}get tokenTheme(){if(!this._tokenTheme){let e=[],t=[];if(this.themeData.inherit){const r=dH(this.themeData.base);e=r.rules,r.encodedTokensColors&&(t=r.encodedTokensColors)}const i=this.themeData.colors["editor.foreground"],s=this.themeData.colors["editor.background"];if(i||s){const r={token:""};i&&(r.foreground=i),s&&(r.background=s),e.push(r)}e=e.concat(this.themeData.rules),this.themeData.encodedTokensColors&&(t=this.themeData.encodedTokensColors),this._tokenTheme=A0e.createFromRawTokenTheme(e,t)}return this._tokenTheme}getTokenStyleMetadata(e,t,i){const r=this.tokenTheme._match([e].concat(t).join(".")).metadata,o=dr.getForeground(r),a=dr.getFontStyle(r);return{foreground:o,italic:!!(a&1),bold:!!(a&2),underline:!!(a&4),strikethrough:!!(a&8)}}}function NN(n){return n===gf||n===Bb||n===g_||n===p_}function dH(n){switch(n){case gf:return Mct;case Bb:return Oct;case g_:return Fct;case p_:return Bct}}function nT(n){const e=dH(n);return new M0e(n,e)}class Hct extends pe{constructor(){super(),this._onColorThemeChange=this._register(new ue),this.onDidColorThemeChange=this._onColorThemeChange.event,this._onProductIconThemeChange=this._register(new ue),this.onDidProductIconThemeChange=this._onProductIconThemeChange.event,this._environment=Object.create(null),this._builtInProductIconTheme=new P0e,this._autoDetectHighContrast=!0,this._knownThemes=new Map,this._knownThemes.set(gf,nT(gf)),this._knownThemes.set(Bb,nT(Bb)),this._knownThemes.set(g_,nT(g_)),this._knownThemes.set(p_,nT(p_));const e=this._register(Wct(this));this._codiconCSS=e.getCSS(),this._themeCSS="",this._allCSS=`${this._codiconCSS} +${this._themeCSS}`,this._globalStyleElement=null,this._styleElements=[],this._colorMapOverride=null,this.setTheme(gf),this._onOSSchemeChanged(),this._register(e.onDidChange(()=>{this._codiconCSS=e.getCSS(),this._updateCSS()})),Rfe("(forced-colors: active)",()=>{this._onOSSchemeChanged()})}registerEditorContainer(e){return BA(e)?this._registerShadowDomContainer(e):this._registerRegularEditorContainer()}_registerRegularEditorContainer(){return this._globalStyleElement||(this._globalStyleElement=Fl(void 0,e=>{e.className="monaco-colors",e.textContent=this._allCSS}),this._styleElements.push(this._globalStyleElement)),pe.None}_registerShadowDomContainer(e){const t=Fl(e,i=>{i.className="monaco-colors",i.textContent=this._allCSS});return this._styleElements.push(t),{dispose:()=>{for(let i=0;i<this._styleElements.length;i++)if(this._styleElements[i]===t){this._styleElements.splice(i,1);return}}}}defineTheme(e,t){if(!/^[a-z0-9\-]+$/i.test(e))throw new Error("Illegal theme name!");if(!NN(t.base)&&!NN(e))throw new Error("Illegal theme base!");this._knownThemes.set(e,new M0e(e,t)),NN(e)&&this._knownThemes.forEach(i=>{i.base===e&&i.notifyBaseUpdated()}),this._theme.themeName===e&&this.setTheme(e)}getColorTheme(){return this._theme}setColorMapOverride(e){this._colorMapOverride=e,this._updateThemeOrColorMap()}setTheme(e){let t;this._knownThemes.has(e)?t=this._knownThemes.get(e):t=this._knownThemes.get(gf),this._updateActualTheme(t)}_updateActualTheme(e){!e||this._theme===e||(this._theme=e,this._updateThemeOrColorMap())}_onOSSchemeChanged(){if(this._autoDetectHighContrast){const e=mn.matchMedia("(forced-colors: active)").matches;if(e!==ku(this._theme.type)){let t;yy(this._theme.type)?t=e?g_:Bb:t=e?p_:gf,this._updateActualTheme(this._knownThemes.get(t))}}}setAutoDetectHighContrast(e){this._autoDetectHighContrast=e,this._onOSSchemeChanged()}_updateThemeOrColorMap(){const e=[],t={},i={addRule:o=>{t[o]||(e.push(o),t[o]=!0)}};Vct.getThemingParticipants().forEach(o=>o(this._theme,i,this._environment));const s=[];for(const o of R0e.getColors()){const a=this._theme.getColor(o.id,!0);a&&s.push(`${lq(o.id)}: ${a.toString()};`)}i.addRule(`.monaco-editor, .monaco-diff-editor, .monaco-component { ${s.join(` +`)} }`);const r=this._colorMapOverride||this._theme.tokenTheme.getColorMap();i.addRule(Rct(r)),this._themeCSS=e.join(` +`),this._updateCSS(),kn.setColorMap(r),this._onColorThemeChange.fire(this._theme)}_updateCSS(){this._allCSS=`${this._codiconCSS} +${this._themeCSS}`,this._styleElements.forEach(e=>e.textContent=this._allCSS)}getFileIconTheme(){return{hasFileIcons:!1,hasFolderIcons:!1,hidesExplorerArrows:!1}}getProductIconTheme(){return this._builtInProductIconTheme}}class $ct extends qe{constructor(){super({id:"editor.action.toggleHighContrast",label:sH.toggleHighContrast,alias:"Toggle High Contrast Theme",precondition:void 0}),this._originalThemeName=null}run(e,t){const i=e.get(rl),s=i.getColorTheme();ku(s.type)?(i.setTheme(this._originalThemeName||(yy(s.type)?Bb:gf)),this._originalThemeName=null):(i.setTheme(yy(s.type)?g_:p_),this._originalThemeName=s.themeName)}}Ae($ct);function zct(n,e,t){return new Uct(n,e,t)}class Uct extends EK{constructor(e,t,i){super(e,i.keepIdleModels||!1,i.label,t),this._foreignModuleId=i.moduleId,this._foreignModuleCreateData=i.createData||null,this._foreignModuleHost=i.host||null,this._foreignProxy=null}fhr(e,t){if(!this._foreignModuleHost||typeof this._foreignModuleHost[e]!="function")return Promise.reject(new Error("Missing method "+e+" or missing main thread foreign host."));try{return Promise.resolve(this._foreignModuleHost[e].apply(this._foreignModuleHost,t))}catch(i){return Promise.reject(i)}}_getForeignProxy(){return this._foreignProxy||(this._foreignProxy=this._getProxy().then(e=>{const t=this._foreignModuleHost?oq(this._foreignModuleHost):[];return e.loadForeignModule(this._foreignModuleId,this._foreignModuleCreateData,t).then(i=>{this._foreignModuleCreateData=null;const s=(a,l)=>e.fmr(a,l),r=(a,l)=>function(){const c=Array.prototype.slice.call(arguments,0);return l(a,c)},o={};for(const a of i)o[a]=r(a,s);return o})})),this._foreignProxy}getProxy(){return this._getForeignProxy()}withSyncedResources(e){return this._withSyncedResources(e).then(t=>this.getProxy())}}function jct(n){return Array.isArray(n)}function qct(n){return!jct(n)}function O0e(n){return typeof n=="string"}function _se(n){return!O0e(n)}function D0(n){return!n}function Op(n,e){return n.ignoreCase&&e?e.toLowerCase():e}function vse(n){return n.replace(/[&<>'"_]/g,"-")}function Kct(n,e){console.log(`${n.languageId}: ${e}`)}function qi(n,e){return new Error(`${n.languageId}: ${e}`)}function Gg(n,e,t,i,s){const r=/\$((\$)|(#)|(\d\d?)|[sS](\d\d?)|@(\w+))/g;let o=null;return e.replace(r,function(a,l,c,u,h,d,f,g,p){return D0(c)?D0(u)?!D0(h)&&h<i.length?Op(n,i[h]):!D0(f)&&n&&typeof n[f]=="string"?n[f]:(o===null&&(o=s.split("."),o.unshift(s)),!D0(d)&&d<o.length?Op(n,o[d]):""):Op(n,t):"$"})}function sT(n,e){let t=e;for(;t&&t.length>0;){const i=n.tokenizer[t];if(i)return i;const s=t.lastIndexOf(".");s<0?t=null:t=t.substr(0,s)}return null}function Gct(n,e){let t=e;for(;t&&t.length>0;){if(n.stateNames[t])return!0;const s=t.lastIndexOf(".");s<0?t=null:t=t.substr(0,s)}return!1}var Yct=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},Zct=function(n,e){return function(t,i){e(t,i,n)}},fH;const F0e=5;class Px{static create(e,t){return this._INSTANCE.create(e,t)}constructor(e){this._maxCacheDepth=e,this._entries=Object.create(null)}create(e,t){if(e!==null&&e.depth>=this._maxCacheDepth)return new Wb(e,t);let i=Wb.getStackElementId(e);i.length>0&&(i+="|"),i+=t;let s=this._entries[i];return s||(s=new Wb(e,t),this._entries[i]=s,s)}}Px._INSTANCE=new Px(F0e);class Wb{constructor(e,t){this.parent=e,this.state=t,this.depth=(this.parent?this.parent.depth:0)+1}static getStackElementId(e){let t="";for(;e!==null;)t.length>0&&(t+="|"),t+=e.state,e=e.parent;return t}static _equals(e,t){for(;e!==null&&t!==null;){if(e===t)return!0;if(e.state!==t.state)return!1;e=e.parent,t=t.parent}return e===null&&t===null}equals(e){return Wb._equals(this,e)}push(e){return Px.create(this,e)}pop(){return this.parent}popall(){let e=this;for(;e.parent;)e=e.parent;return e}switchTo(e){return Px.create(this.parent,e)}}class tb{constructor(e,t){this.languageId=e,this.state=t}equals(e){return this.languageId===e.languageId&&this.state.equals(e.state)}clone(){return this.state.clone()===this.state?this:new tb(this.languageId,this.state)}}class Yg{static create(e,t){return this._INSTANCE.create(e,t)}constructor(e){this._maxCacheDepth=e,this._entries=Object.create(null)}create(e,t){if(t!==null)return new Lk(e,t);if(e!==null&&e.depth>=this._maxCacheDepth)return new Lk(e,t);const i=Wb.getStackElementId(e);let s=this._entries[i];return s||(s=new Lk(e,null),this._entries[i]=s,s)}}Yg._INSTANCE=new Yg(F0e);class Lk{constructor(e,t){this.stack=e,this.embeddedLanguageData=t}clone(){return(this.embeddedLanguageData?this.embeddedLanguageData.clone():null)===this.embeddedLanguageData?this:Yg.create(this.stack,this.embeddedLanguageData)}equals(e){return!(e instanceof Lk)||!this.stack.equals(e.stack)?!1:this.embeddedLanguageData===null&&e.embeddedLanguageData===null?!0:this.embeddedLanguageData===null||e.embeddedLanguageData===null?!1:this.embeddedLanguageData.equals(e.embeddedLanguageData)}}class Xct{constructor(){this._tokens=[],this._languageId=null,this._lastTokenType=null,this._lastTokenLanguage=null}enterLanguage(e){this._languageId=e}emit(e,t){this._lastTokenType===t&&this._lastTokenLanguage===this._languageId||(this._lastTokenType=t,this._lastTokenLanguage=this._languageId,this._tokens.push(new IL(e,t,this._languageId)))}nestedLanguageTokenize(e,t,i,s){const r=i.languageId,o=i.state,a=kn.get(r);if(!a)return this.enterLanguage(r),this.emit(s,""),o;const l=a.tokenize(e,t,o);if(s!==0)for(const c of l.tokens)this._tokens.push(new IL(c.offset+s,c.type,c.language));else this._tokens=this._tokens.concat(l.tokens);return this._lastTokenType=null,this._lastTokenLanguage=null,this._languageId=null,l.endState}finalize(e){return new yq(this._tokens,e)}}class vR{constructor(e,t){this._languageService=e,this._theme=t,this._prependTokens=null,this._tokens=[],this._currentLanguageId=0,this._lastTokenMetadata=0}enterLanguage(e){this._currentLanguageId=this._languageService.languageIdCodec.encodeLanguageId(e)}emit(e,t){const i=this._theme.match(this._currentLanguageId,t)|1024;this._lastTokenMetadata!==i&&(this._lastTokenMetadata=i,this._tokens.push(e),this._tokens.push(i))}static _merge(e,t,i){const s=e!==null?e.length:0,r=t.length,o=i!==null?i.length:0;if(s===0&&r===0&&o===0)return new Uint32Array(0);if(s===0&&r===0)return i;if(r===0&&o===0)return e;const a=new Uint32Array(s+r+o);e!==null&&a.set(e);for(let l=0;l<r;l++)a[s+l]=t[l];return i!==null&&a.set(i,s+r),a}nestedLanguageTokenize(e,t,i,s){const r=i.languageId,o=i.state,a=kn.get(r);if(!a)return this.enterLanguage(r),this.emit(s,""),o;const l=a.tokenizeEncoded(e,t,o);if(s!==0)for(let c=0,u=l.tokens.length;c<u;c+=2)l.tokens[c]+=s;return this._prependTokens=vR._merge(this._prependTokens,this._tokens,l.tokens),this._tokens=[],this._currentLanguageId=0,this._lastTokenMetadata=0,l.endState}finalize(e){return new zO(vR._merge(this._prependTokens,this._tokens,null),e)}}let Rx=fH=class extends pe{constructor(e,t,i,s,r){super(),this._configurationService=r,this._languageService=e,this._standaloneThemeService=t,this._languageId=i,this._lexer=s,this._embeddedLanguages=Object.create(null),this.embeddedLoaded=Promise.resolve(void 0);let o=!1;this._register(kn.onDidChange(a=>{if(o)return;let l=!1;for(let c=0,u=a.changedLanguages.length;c<u;c++){const h=a.changedLanguages[c];if(this._embeddedLanguages[h]){l=!0;break}}l&&(o=!0,kn.handleChange([this._languageId]),o=!1)})),this._maxTokenizationLineLength=this._configurationService.getValue("editor.maxTokenizationLineLength",{overrideIdentifier:this._languageId}),this._register(this._configurationService.onDidChangeConfiguration(a=>{a.affectsConfiguration("editor.maxTokenizationLineLength")&&(this._maxTokenizationLineLength=this._configurationService.getValue("editor.maxTokenizationLineLength",{overrideIdentifier:this._languageId}))}))}getLoadStatus(){const e=[];for(const t in this._embeddedLanguages){const i=kn.get(t);if(i){if(i instanceof fH){const s=i.getLoadStatus();s.loaded===!1&&e.push(s.promise)}continue}kn.isResolved(t)||e.push(kn.getOrCreate(t))}return e.length===0?{loaded:!0}:{loaded:!1,promise:Promise.all(e).then(t=>{})}}getInitialState(){const e=Px.create(null,this._lexer.start);return Yg.create(e,null)}tokenize(e,t,i){if(e.length>=this._maxTokenizationLineLength)return Mq(this._languageId,i);const s=new Xct,r=this._tokenize(e,t,i,s);return s.finalize(r)}tokenizeEncoded(e,t,i){if(e.length>=this._maxTokenizationLineLength)return GO(this._languageService.languageIdCodec.encodeLanguageId(this._languageId),i);const s=new vR(this._languageService,this._standaloneThemeService.getColorTheme().tokenTheme),r=this._tokenize(e,t,i,s);return s.finalize(r)}_tokenize(e,t,i,s){return i.embeddedLanguageData?this._nestedTokenize(e,t,i,0,s):this._myTokenize(e,t,i,0,s)}_findLeavingNestedLanguageOffset(e,t){let i=this._lexer.tokenizer[t.stack.state];if(!i&&(i=sT(this._lexer,t.stack.state),!i))throw qi(this._lexer,"tokenizer state is not defined: "+t.stack.state);let s=-1,r=!1;for(const o of i){if(!_se(o.action)||o.action.nextEmbedded!=="@pop")continue;r=!0;let a=o.regex;const l=o.regex.source;if(l.substr(0,4)==="^(?:"&&l.substr(l.length-1,1)===")"){const u=(a.ignoreCase?"i":"")+(a.unicode?"u":"");a=new RegExp(l.substr(4,l.length-5),u)}const c=e.search(a);c===-1||c!==0&&o.matchOnlyAtLineStart||(s===-1||c<s)&&(s=c)}if(!r)throw qi(this._lexer,'no rule containing nextEmbedded: "@pop" in tokenizer embedded state: '+t.stack.state);return s}_nestedTokenize(e,t,i,s,r){const o=this._findLeavingNestedLanguageOffset(e,i);if(o===-1){const c=r.nestedLanguageTokenize(e,t,i.embeddedLanguageData,s);return Yg.create(i.stack,new tb(i.embeddedLanguageData.languageId,c))}const a=e.substring(0,o);a.length>0&&r.nestedLanguageTokenize(a,!1,i.embeddedLanguageData,s);const l=e.substring(o);return this._myTokenize(l,t,i,s+o,r)}_safeRuleName(e){return e?e.name:"(unknown)"}_myTokenize(e,t,i,s,r){r.enterLanguage(this._languageId);const o=e.length,a=t&&this._lexer.includeLF?e+` +`:e,l=a.length;let c=i.embeddedLanguageData,u=i.stack,h=0,d=null,f=!0;for(;f||h<l;){const g=h,p=u.depth,m=d?d.groups.length:0,_=u.state;let b=null,y=null,w=null,S=null,E=null;if(d){b=d.matches;const x=d.groups.shift();y=x.matched,w=x.action,S=d.rule,d.groups.length===0&&(d=null)}else{if(!f&&h>=l)break;f=!1;let x=this._lexer.tokenizer[_];if(!x&&(x=sT(this._lexer,_),!x))throw qi(this._lexer,"tokenizer state is not defined: "+_);const I=a.substr(h);for(const N of x)if((h===0||!N.matchOnlyAtLineStart)&&(b=I.match(N.regex),b)){y=b[0],w=N.action;break}}if(b||(b=[""],y=""),w||(h<l&&(b=[a.charAt(h)],y=b[0]),w=this._lexer.defaultToken),y===null)break;for(h+=y.length;qct(w)&&_se(w)&&w.test;)w=w.test(y,b,_,h===l);let L=null;if(typeof w=="string"||Array.isArray(w))L=w;else if(w.group)L=w.group;else if(w.token!==null&&w.token!==void 0){if(w.tokenSubst?L=Gg(this._lexer,w.token,y,b,_):L=w.token,w.nextEmbedded)if(w.nextEmbedded==="@pop"){if(!c)throw qi(this._lexer,"cannot pop embedded language if not inside one");c=null}else{if(c)throw qi(this._lexer,"cannot enter embedded language from within an embedded language");E=Gg(this._lexer,w.nextEmbedded,y,b,_)}if(w.goBack&&(h=Math.max(0,h-w.goBack)),w.switchTo&&typeof w.switchTo=="string"){let x=Gg(this._lexer,w.switchTo,y,b,_);if(x[0]==="@"&&(x=x.substr(1)),sT(this._lexer,x))u=u.switchTo(x);else throw qi(this._lexer,"trying to switch to a state '"+x+"' that is undefined in rule: "+this._safeRuleName(S))}else{if(w.transform&&typeof w.transform=="function")throw qi(this._lexer,"action.transform not supported");if(w.next)if(w.next==="@push"){if(u.depth>=this._lexer.maxStack)throw qi(this._lexer,"maximum tokenizer stack size reached: ["+u.state+","+u.parent.state+",...]");u=u.push(_)}else if(w.next==="@pop"){if(u.depth<=1)throw qi(this._lexer,"trying to pop an empty stack in rule: "+this._safeRuleName(S));u=u.pop()}else if(w.next==="@popall")u=u.popall();else{let x=Gg(this._lexer,w.next,y,b,_);if(x[0]==="@"&&(x=x.substr(1)),sT(this._lexer,x))u=u.push(x);else throw qi(this._lexer,"trying to set a next state '"+x+"' that is undefined in rule: "+this._safeRuleName(S))}}w.log&&typeof w.log=="string"&&Kct(this._lexer,this._lexer.languageId+": "+Gg(this._lexer,w.log,y,b,_))}if(L===null)throw qi(this._lexer,"lexer rule has no well-defined action in rule: "+this._safeRuleName(S));const k=x=>{const I=this._languageService.getLanguageIdByLanguageName(x)||this._languageService.getLanguageIdByMimeType(x)||x,N=this._getNestedEmbeddedLanguageData(I);if(h<l){const T=e.substr(h);return this._nestedTokenize(T,t,Yg.create(u,N),s+h,r)}else return Yg.create(u,N)};if(Array.isArray(L)){if(d&&d.groups.length>0)throw qi(this._lexer,"groups cannot be nested: "+this._safeRuleName(S));if(b.length!==L.length+1)throw qi(this._lexer,"matched number of groups does not match the number of actions in rule: "+this._safeRuleName(S));let x=0;for(let I=1;I<b.length;I++)x+=b[I].length;if(x!==y.length)throw qi(this._lexer,"with groups, all characters should be matched in consecutive groups in rule: "+this._safeRuleName(S));d={rule:S,matches:b,groups:[]};for(let I=0;I<L.length;I++)d.groups[I]={action:L[I],matched:b[I+1]};h-=y.length;continue}else{if(L==="@rematch"&&(h-=y.length,y="",b=null,L="",E!==null))return k(E);if(y.length===0){if(l===0||p!==u.depth||_!==u.state||(d?d.groups.length:0)!==m)continue;throw qi(this._lexer,"no progress in tokenizer in rule: "+this._safeRuleName(S))}let x=null;if(O0e(L)&&L.indexOf("@brackets")===0){const I=L.substr(9),N=Qct(this._lexer,y);if(!N)throw qi(this._lexer,"@brackets token returned but no bracket defined as: "+y);x=vse(N.token+I)}else{const I=L===""?"":L+this._lexer.tokenPostfix;x=vse(I)}g<o&&r.emit(g+s,x)}if(E!==null)return k(E)}return Yg.create(u,c)}_getNestedEmbeddedLanguageData(e){if(!this._languageService.isRegisteredLanguageId(e))return new tb(e,Ly);e!==this._languageId&&(this._languageService.requestBasicLanguageFeatures(e),kn.getOrCreate(e),this._embeddedLanguages[e]=!0);const t=kn.get(e);return t?new tb(e,t.getInitialState()):new tb(e,Ly)}};Rx=fH=Yct([Zct(4,Ut)],Rx);function Qct(n,e){if(!e)return null;e=Op(n,e);const t=n.brackets;for(const i of t){if(i.open===e)return{token:i.token,bracketType:1};if(i.close===e)return{token:i.token,bracketType:-1}}return null}const s6=sg("standaloneColorizer",{createHTML:n=>n});class WG{static colorizeElement(e,t,i,s){s=s||{};const r=s.theme||"vs",o=s.mimeType||i.getAttribute("lang")||i.getAttribute("data-lang");if(!o)return console.error("Mode not detected"),Promise.resolve();const a=t.getLanguageIdByMimeType(o)||o;e.setTheme(r);const l=i.firstChild?i.firstChild.nodeValue:"";i.className+=" "+r;const c=u=>{var h;const d=(h=s6==null?void 0:s6.createHTML(u))!==null&&h!==void 0?h:u;i.innerHTML=d};return this.colorize(t,l||"",a,s).then(c,u=>console.error(u))}static async colorize(e,t,i,s){const r=e.languageIdCodec;let o=4;s&&typeof s.tabSize=="number"&&(o=s.tabSize),zj(t)&&(t=t.substr(1));const a=fd(t);if(!e.isRegisteredLanguageId(i))return bse(a,o,r);const l=await kn.getOrCreate(i);return l?Jct(a,o,l,r):bse(a,o,r)}static colorizeLine(e,t,i,s,r=4){const o=Ja.isBasicASCII(e,t),a=Ja.containsRTL(e,o,i);return VO(new Am(!1,!0,e,!1,o,a,0,s,[],r,0,0,0,0,-1,"none",!1,!1,null)).html}static colorizeModelLine(e,t,i=4){const s=e.getLineContent(t);e.tokenization.forceTokenization(t);const o=e.tokenization.getLineTokens(t).inflate();return this.colorizeLine(s,e.mightContainNonBasicASCII(),e.mightContainRTL(),o,i)}}function Jct(n,e,t,i){return new Promise((s,r)=>{const o=()=>{const a=eut(n,e,t,i);if(t instanceof Rx){const l=t.getLoadStatus();if(l.loaded===!1){l.promise.then(o,r);return}}s(a)};o()})}function bse(n,e,t){let i=[];const r=new Uint32Array(2);r[0]=0,r[1]=33587200;for(let o=0,a=n.length;o<a;o++){const l=n[o];r[0]=l.length;const c=new Ps(r,l,t),u=Ja.isBasicASCII(l,!0),h=Ja.containsRTL(l,u,!0),d=VO(new Am(!1,!0,l,!1,u,h,0,c,[],e,0,0,0,0,-1,"none",!1,!1,null));i=i.concat(d.html),i.push("<br/>")}return i.join("")}function eut(n,e,t,i){let s=[],r=t.getInitialState();for(let o=0,a=n.length;o<a;o++){const l=n[o],c=t.tokenizeEncoded(l,!0,r);Ps.convertToEndOffset(c.tokens,l.length);const u=new Ps(c.tokens,l,i),h=Ja.isBasicASCII(l,!0),d=Ja.containsRTL(l,h,!0),f=VO(new Am(!1,!0,l,!1,h,d,0,u.inflate(),[],e,0,0,0,0,-1,"none",!1,!1,null));s=s.concat(f.html),s.push("<br/>"),r=c.endState}return s.join("")}var tut=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},iut=function(n,e){return function(t,i){e(t,i,n)}};let gH=class extends pe{constructor(e){super(),this._themeService=e,this._onWillCreateCodeEditor=this._register(new ue),this._onCodeEditorAdd=this._register(new ue),this.onCodeEditorAdd=this._onCodeEditorAdd.event,this._onCodeEditorRemove=this._register(new ue),this.onCodeEditorRemove=this._onCodeEditorRemove.event,this._onWillCreateDiffEditor=this._register(new ue),this._onDiffEditorAdd=this._register(new ue),this.onDiffEditorAdd=this._onDiffEditorAdd.event,this._onDiffEditorRemove=this._register(new ue),this.onDiffEditorRemove=this._onDiffEditorRemove.event,this._decorationOptionProviders=new Map,this._codeEditorOpenHandlers=new oo,this._modelProperties=new Map,this._codeEditors=Object.create(null),this._diffEditors=Object.create(null),this._globalStyleSheet=null}willCreateCodeEditor(){this._onWillCreateCodeEditor.fire()}addCodeEditor(e){this._codeEditors[e.getId()]=e,this._onCodeEditorAdd.fire(e)}removeCodeEditor(e){delete this._codeEditors[e.getId()]&&this._onCodeEditorRemove.fire(e)}listCodeEditors(){return Object.keys(this._codeEditors).map(e=>this._codeEditors[e])}willCreateDiffEditor(){this._onWillCreateDiffEditor.fire()}addDiffEditor(e){this._diffEditors[e.getId()]=e,this._onDiffEditorAdd.fire(e)}listDiffEditors(){return Object.keys(this._diffEditors).map(e=>this._diffEditors[e])}getFocusedCodeEditor(){let e=null;const t=this.listCodeEditors();for(const i of t){if(i.hasTextFocus())return i;i.hasWidgetFocus()&&(e=i)}return e}removeDecorationType(e){const t=this._decorationOptionProviders.get(e);t&&(t.refCount--,t.refCount<=0&&(this._decorationOptionProviders.delete(e),t.dispose(),this.listCodeEditors().forEach(i=>i.removeDecorationsByType(e))))}setModelProperty(e,t,i){const s=e.toString();let r;this._modelProperties.has(s)?r=this._modelProperties.get(s):(r=new Map,this._modelProperties.set(s,r)),r.set(t,i)}getModelProperty(e,t){const i=e.toString();if(this._modelProperties.has(i))return this._modelProperties.get(i).get(t)}async openCodeEditor(e,t,i){for(const s of this._codeEditorOpenHandlers){const r=await s(e,t,i);if(r!==null)return r}return null}registerCodeEditorOpenHandler(e){const t=this._codeEditorOpenHandlers.unshift(e);return st(t)}};gH=tut([iut(0,Ms)],gH);var nut=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},yse=function(n,e){return function(t,i){e(t,i,n)}};let bR=class extends gH{constructor(e,t){super(t),this._register(this.onCodeEditorAdd(()=>this._checkContextKey())),this._register(this.onCodeEditorRemove(()=>this._checkContextKey())),this._editorIsOpen=e.createKey("editorIsOpen",!1),this._activeCodeEditor=null,this._register(this.registerCodeEditorOpenHandler(async(i,s,r)=>s?this.doOpenEditor(s,i):null))}_checkContextKey(){let e=!1;for(const t of this.listCodeEditors())if(!t.isSimpleWidget){e=!0;break}this._editorIsOpen.set(e)}setActiveCodeEditor(e){this._activeCodeEditor=e}getActiveCodeEditor(){return this._activeCodeEditor}doOpenEditor(e,t){if(!this.findModel(e,t.resource)){if(t.resource){const r=t.resource.scheme;if(r===wt.http||r===wt.https)return Ege(t.resource.toString()),e}return null}const s=t.options?t.options.selection:null;if(s)if(typeof s.endLineNumber=="number"&&typeof s.endColumn=="number")e.setSelection(s),e.revealRangeInCenter(s,1);else{const r={lineNumber:s.startLineNumber,column:s.startColumn};e.setPosition(r),e.revealPositionInCenter(r,1)}return e}findModel(e,t){const i=e.getModel();return i&&i.uri.toString()!==t.toString()?null:i}};bR=nut([yse(0,ft),yse(1,Ms)],bR);jt(ri,bR,0);const KC=Bt("layoutService");var B0e=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},W0e=function(n,e){return function(t,i){e(t,i,n)}};let yR=class{get mainContainer(){var e,t;return(t=(e=iq(this._codeEditorService.listCodeEditors()))===null||e===void 0?void 0:e.getContainerDomNode())!==null&&t!==void 0?t:mn.document.body}get activeContainer(){var e,t;const i=(e=this._codeEditorService.getFocusedCodeEditor())!==null&&e!==void 0?e:this._codeEditorService.getActiveCodeEditor();return(t=i==null?void 0:i.getContainerDomNode())!==null&&t!==void 0?t:this.mainContainer}get mainContainerDimension(){return Zp(this.mainContainer)}get activeContainerDimension(){return Zp(this.activeContainer)}get containers(){return Tu(this._codeEditorService.listCodeEditors().map(e=>e.getContainerDomNode()))}getContainer(){return this.activeContainer}focus(){var e;(e=this._codeEditorService.getFocusedCodeEditor())===null||e===void 0||e.focus()}constructor(e){this._codeEditorService=e,this.onDidLayoutMainContainer=Ve.None,this.onDidLayoutActiveContainer=Ve.None,this.onDidLayoutContainer=Ve.None,this.onDidChangeActiveContainer=Ve.None,this.onDidAddContainer=Ve.None,this.mainContainerOffset={top:0,quickPickTop:0},this.activeContainerOffset={top:0,quickPickTop:0}}};yR=B0e([W0e(0,ri)],yR);let pH=class extends yR{get mainContainer(){return this._container}constructor(e,t){super(t),this._container=e}};pH=B0e([W0e(1,ri)],pH);jt(KC,yR,1);var sut=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},Cse=function(n,e){return function(t,i){e(t,i,n)}};function rT(n){return n.scheme===wt.file?n.fsPath:n.path}let V0e=0;class oT{constructor(e,t,i,s,r,o,a){this.id=++V0e,this.type=0,this.actual=e,this.label=e.label,this.confirmBeforeUndo=e.confirmBeforeUndo||!1,this.resourceLabel=t,this.strResource=i,this.resourceLabels=[this.resourceLabel],this.strResources=[this.strResource],this.groupId=s,this.groupOrder=r,this.sourceId=o,this.sourceOrder=a,this.isValid=!0}setValid(e){this.isValid=e}toString(){return`[id:${this.id}] [group:${this.groupId}] [${this.isValid?" VALID":"INVALID"}] ${this.actual.constructor.name} - ${this.actual}`}}class wse{constructor(e,t){this.resourceLabel=e,this.reason=t}}class Sse{constructor(){this.elements=new Map}createMessage(){const e=[],t=[];for(const[,s]of this.elements)(s.reason===0?e:t).push(s.resourceLabel);const i=[];return e.length>0&&i.push(v({key:"externalRemoval",comment:["{0} is a list of filenames"]},"The following files have been closed and modified on disk: {0}.",e.join(", "))),t.length>0&&i.push(v({key:"noParallelUniverses",comment:["{0} is a list of filenames"]},"The following files have been modified in an incompatible way: {0}.",t.join(", "))),i.join(` +`)}get size(){return this.elements.size}has(e){return this.elements.has(e)}set(e,t){this.elements.set(e,t)}delete(e){return this.elements.delete(e)}}class rut{constructor(e,t,i,s,r,o,a){this.id=++V0e,this.type=1,this.actual=e,this.label=e.label,this.confirmBeforeUndo=e.confirmBeforeUndo||!1,this.resourceLabels=t,this.strResources=i,this.groupId=s,this.groupOrder=r,this.sourceId=o,this.sourceOrder=a,this.removedResources=null,this.invalidatedResources=null}canSplit(){return typeof this.actual.split=="function"}removeResource(e,t,i){this.removedResources||(this.removedResources=new Sse),this.removedResources.has(t)||this.removedResources.set(t,new wse(e,i))}setValid(e,t,i){i?this.invalidatedResources&&(this.invalidatedResources.delete(t),this.invalidatedResources.size===0&&(this.invalidatedResources=null)):(this.invalidatedResources||(this.invalidatedResources=new Sse),this.invalidatedResources.has(t)||this.invalidatedResources.set(t,new wse(e,0)))}toString(){return`[id:${this.id}] [group:${this.groupId}] [${this.invalidatedResources?"INVALID":" VALID"}] ${this.actual.constructor.name} - ${this.actual}`}}class H0e{constructor(e,t){this.resourceLabel=e,this.strResource=t,this._past=[],this._future=[],this.locked=!1,this.versionId=1}dispose(){for(const e of this._past)e.type===1&&e.removeResource(this.resourceLabel,this.strResource,0);for(const e of this._future)e.type===1&&e.removeResource(this.resourceLabel,this.strResource,0);this.versionId++}toString(){const e=[];e.push(`* ${this.strResource}:`);for(let t=0;t<this._past.length;t++)e.push(` * [UNDO] ${this._past[t]}`);for(let t=this._future.length-1;t>=0;t--)e.push(` * [REDO] ${this._future[t]}`);return e.join(` +`)}flushAllElements(){this._past=[],this._future=[],this.versionId++}_setElementValidFlag(e,t){e.type===1?e.setValid(this.resourceLabel,this.strResource,t):e.setValid(t)}setElementsValidFlag(e,t){for(const i of this._past)t(i.actual)&&this._setElementValidFlag(i,e);for(const i of this._future)t(i.actual)&&this._setElementValidFlag(i,e)}pushElement(e){for(const t of this._future)t.type===1&&t.removeResource(this.resourceLabel,this.strResource,1);this._future=[],this._past.push(e),this.versionId++}createSnapshot(e){const t=[];for(let i=0,s=this._past.length;i<s;i++)t.push(this._past[i].id);for(let i=this._future.length-1;i>=0;i--)t.push(this._future[i].id);return new yme(e,t)}restoreSnapshot(e){const t=e.elements.length;let i=!0,s=0,r=-1;for(let a=0,l=this._past.length;a<l;a++,s++){const c=this._past[a];i&&(s>=t||c.id!==e.elements[s])&&(i=!1,r=0),!i&&c.type===1&&c.removeResource(this.resourceLabel,this.strResource,0)}let o=-1;for(let a=this._future.length-1;a>=0;a--,s++){const l=this._future[a];i&&(s>=t||l.id!==e.elements[s])&&(i=!1,o=a),!i&&l.type===1&&l.removeResource(this.resourceLabel,this.strResource,0)}r!==-1&&(this._past=this._past.slice(0,r)),o!==-1&&(this._future=this._future.slice(o+1)),this.versionId++}getElements(){const e=[],t=[];for(const i of this._past)e.push(i.actual);for(const i of this._future)t.push(i.actual);return{past:e,future:t}}getClosestPastElement(){return this._past.length===0?null:this._past[this._past.length-1]}getSecondClosestPastElement(){return this._past.length<2?null:this._past[this._past.length-2]}getClosestFutureElement(){return this._future.length===0?null:this._future[this._future.length-1]}hasPastElements(){return this._past.length>0}hasFutureElements(){return this._future.length>0}splitPastWorkspaceElement(e,t){for(let i=this._past.length-1;i>=0;i--)if(this._past[i]===e){t.has(this.strResource)?this._past[i]=t.get(this.strResource):this._past.splice(i,1);break}this.versionId++}splitFutureWorkspaceElement(e,t){for(let i=this._future.length-1;i>=0;i--)if(this._future[i]===e){t.has(this.strResource)?this._future[i]=t.get(this.strResource):this._future.splice(i,1);break}this.versionId++}moveBackward(e){this._past.pop(),this._future.push(e),this.versionId++}moveForward(e){this._future.pop(),this._past.push(e),this.versionId++}}class r6{constructor(e){this.editStacks=e,this._versionIds=[];for(let t=0,i=this.editStacks.length;t<i;t++)this._versionIds[t]=this.editStacks[t].versionId}isValid(){for(let e=0,t=this.editStacks.length;e<t;e++)if(this._versionIds[e]!==this.editStacks[e].versionId)return!1;return!0}}const $0e=new H0e("","");$0e.locked=!0;let mH=class{constructor(e,t){this._dialogService=e,this._notificationService=t,this._editStacks=new Map,this._uriComparisonKeyComputers=[]}getUriComparisonKey(e){for(const t of this._uriComparisonKeyComputers)if(t[0]===e.scheme)return t[1].getComparisonKey(e);return e.toString()}_print(e){console.log("------------------------------------"),console.log(`AFTER ${e}: `);const t=[];for(const i of this._editStacks)t.push(i[1].toString());console.log(t.join(` +`))}pushElement(e,t=xy.None,i=bh.None){if(e.type===0){const s=rT(e.resource),r=this.getUriComparisonKey(e.resource);this._pushElement(new oT(e,s,r,t.id,t.nextOrder(),i.id,i.nextOrder()))}else{const s=new Set,r=[],o=[];for(const a of e.resources){const l=rT(a),c=this.getUriComparisonKey(a);s.has(c)||(s.add(c),r.push(l),o.push(c))}r.length===1?this._pushElement(new oT(e,r[0],o[0],t.id,t.nextOrder(),i.id,i.nextOrder())):this._pushElement(new rut(e,r,o,t.id,t.nextOrder(),i.id,i.nextOrder()))}}_pushElement(e){for(let t=0,i=e.strResources.length;t<i;t++){const s=e.resourceLabels[t],r=e.strResources[t];let o;this._editStacks.has(r)?o=this._editStacks.get(r):(o=new H0e(s,r),this._editStacks.set(r,o)),o.pushElement(e)}}getLastElement(e){const t=this.getUriComparisonKey(e);if(this._editStacks.has(t)){const i=this._editStacks.get(t);if(i.hasFutureElements())return null;const s=i.getClosestPastElement();return s?s.actual:null}return null}_splitPastWorkspaceElement(e,t){const i=e.actual.split(),s=new Map;for(const r of i){const o=rT(r.resource),a=this.getUriComparisonKey(r.resource),l=new oT(r,o,a,0,0,0,0);s.set(l.strResource,l)}for(const r of e.strResources){if(t&&t.has(r))continue;this._editStacks.get(r).splitPastWorkspaceElement(e,s)}}_splitFutureWorkspaceElement(e,t){const i=e.actual.split(),s=new Map;for(const r of i){const o=rT(r.resource),a=this.getUriComparisonKey(r.resource),l=new oT(r,o,a,0,0,0,0);s.set(l.strResource,l)}for(const r of e.strResources){if(t&&t.has(r))continue;this._editStacks.get(r).splitFutureWorkspaceElement(e,s)}}removeElements(e){const t=typeof e=="string"?e:this.getUriComparisonKey(e);this._editStacks.has(t)&&(this._editStacks.get(t).dispose(),this._editStacks.delete(t))}setElementsValidFlag(e,t,i){const s=this.getUriComparisonKey(e);this._editStacks.has(s)&&this._editStacks.get(s).setElementsValidFlag(t,i)}createSnapshot(e){const t=this.getUriComparisonKey(e);return this._editStacks.has(t)?this._editStacks.get(t).createSnapshot(e):new yme(e,[])}restoreSnapshot(e){const t=this.getUriComparisonKey(e.resource);if(this._editStacks.has(t)){const i=this._editStacks.get(t);i.restoreSnapshot(e),!i.hasPastElements()&&!i.hasFutureElements()&&(i.dispose(),this._editStacks.delete(t))}}getElements(e){const t=this.getUriComparisonKey(e);return this._editStacks.has(t)?this._editStacks.get(t).getElements():{past:[],future:[]}}_findClosestUndoElementWithSource(e){if(!e)return[null,null];let t=null,i=null;for(const[s,r]of this._editStacks){const o=r.getClosestPastElement();o&&o.sourceId===e&&(!t||o.sourceOrder>t.sourceOrder)&&(t=o,i=s)}return[t,i]}canUndo(e){if(e instanceof bh){const[,i]=this._findClosestUndoElementWithSource(e.id);return!!i}const t=this.getUriComparisonKey(e);return this._editStacks.has(t)?this._editStacks.get(t).hasPastElements():!1}_onError(e,t){vt(e);for(const i of t.strResources)this.removeElements(i);this._notificationService.error(e)}_acquireLocks(e){for(const t of e.editStacks)if(t.locked)throw new Error("Cannot acquire edit stack lock");for(const t of e.editStacks)t.locked=!0;return()=>{for(const t of e.editStacks)t.locked=!1}}_safeInvokeWithLocks(e,t,i,s,r){const o=this._acquireLocks(i);let a;try{a=t()}catch(l){return o(),s.dispose(),this._onError(l,e)}return a?a.then(()=>(o(),s.dispose(),r()),l=>(o(),s.dispose(),this._onError(l,e))):(o(),s.dispose(),r())}async _invokeWorkspacePrepare(e){if(typeof e.actual.prepareUndoRedo>"u")return pe.None;const t=e.actual.prepareUndoRedo();return typeof t>"u"?pe.None:t}_invokeResourcePrepare(e,t){if(e.actual.type!==1||typeof e.actual.prepareUndoRedo>"u")return t(pe.None);const i=e.actual.prepareUndoRedo();return i?Lj(i)?t(i):i.then(s=>t(s)):t(pe.None)}_getAffectedEditStacks(e){const t=[];for(const i of e.strResources)t.push(this._editStacks.get(i)||$0e);return new r6(t)}_tryToSplitAndUndo(e,t,i,s){if(t.canSplit())return this._splitPastWorkspaceElement(t,i),this._notificationService.warn(s),new aT(this._undo(e,0,!0));for(const r of t.strResources)this.removeElements(r);return this._notificationService.warn(s),new aT}_checkWorkspaceUndo(e,t,i,s){if(t.removedResources)return this._tryToSplitAndUndo(e,t,t.removedResources,v({key:"cannotWorkspaceUndo",comment:["{0} is a label for an operation. {1} is another message."]},"Could not undo '{0}' across all files. {1}",t.label,t.removedResources.createMessage()));if(s&&t.invalidatedResources)return this._tryToSplitAndUndo(e,t,t.invalidatedResources,v({key:"cannotWorkspaceUndo",comment:["{0} is a label for an operation. {1} is another message."]},"Could not undo '{0}' across all files. {1}",t.label,t.invalidatedResources.createMessage()));const r=[];for(const a of i.editStacks)a.getClosestPastElement()!==t&&r.push(a.resourceLabel);if(r.length>0)return this._tryToSplitAndUndo(e,t,null,v({key:"cannotWorkspaceUndoDueToChanges",comment:["{0} is a label for an operation. {1} is a list of filenames."]},"Could not undo '{0}' across all files because changes were made to {1}",t.label,r.join(", ")));const o=[];for(const a of i.editStacks)a.locked&&o.push(a.resourceLabel);return o.length>0?this._tryToSplitAndUndo(e,t,null,v({key:"cannotWorkspaceUndoDueToInProgressUndoRedo",comment:["{0} is a label for an operation. {1} is a list of filenames."]},"Could not undo '{0}' across all files because there is already an undo or redo operation running on {1}",t.label,o.join(", "))):i.isValid()?null:this._tryToSplitAndUndo(e,t,null,v({key:"cannotWorkspaceUndoDueToInMeantimeUndoRedo",comment:["{0} is a label for an operation. {1} is a list of filenames."]},"Could not undo '{0}' across all files because an undo or redo operation occurred in the meantime",t.label))}_workspaceUndo(e,t,i){const s=this._getAffectedEditStacks(t),r=this._checkWorkspaceUndo(e,t,s,!1);return r?r.returnValue:this._confirmAndExecuteWorkspaceUndo(e,t,s,i)}_isPartOfUndoGroup(e){if(!e.groupId)return!1;for(const[,t]of this._editStacks){const i=t.getClosestPastElement();if(i){if(i===e){const s=t.getSecondClosestPastElement();if(s&&s.groupId===e.groupId)return!0}if(i.groupId===e.groupId)return!0}}return!1}async _confirmAndExecuteWorkspaceUndo(e,t,i,s){if(t.canSplit()&&!this._isPartOfUndoGroup(t)){let a;(function(u){u[u.All=0]="All",u[u.This=1]="This",u[u.Cancel=2]="Cancel"})(a||(a={}));const{result:l}=await this._dialogService.prompt({type:zn.Info,message:v("confirmWorkspace","Would you like to undo '{0}' across all files?",t.label),buttons:[{label:v({key:"ok",comment:["{0} denotes a number that is > 1, && denotes a mnemonic"]},"&&Undo in {0} Files",i.editStacks.length),run:()=>a.All},{label:v({key:"nok",comment:["&& denotes a mnemonic"]},"Undo this &&File"),run:()=>a.This}],cancelButton:{run:()=>a.Cancel}});if(l===a.Cancel)return;if(l===a.This)return this._splitPastWorkspaceElement(t,null),this._undo(e,0,!0);const c=this._checkWorkspaceUndo(e,t,i,!1);if(c)return c.returnValue;s=!0}let r;try{r=await this._invokeWorkspacePrepare(t)}catch(a){return this._onError(a,t)}const o=this._checkWorkspaceUndo(e,t,i,!0);if(o)return r.dispose(),o.returnValue;for(const a of i.editStacks)a.moveBackward(t);return this._safeInvokeWithLocks(t,()=>t.actual.undo(),i,r,()=>this._continueUndoInGroup(t.groupId,s))}_resourceUndo(e,t,i){if(!t.isValid){e.flushAllElements();return}if(e.locked){const s=v({key:"cannotResourceUndoDueToInProgressUndoRedo",comment:["{0} is a label for an operation."]},"Could not undo '{0}' because there is already an undo or redo operation running.",t.label);this._notificationService.warn(s);return}return this._invokeResourcePrepare(t,s=>(e.moveBackward(t),this._safeInvokeWithLocks(t,()=>t.actual.undo(),new r6([e]),s,()=>this._continueUndoInGroup(t.groupId,i))))}_findClosestUndoElementInGroup(e){if(!e)return[null,null];let t=null,i=null;for(const[s,r]of this._editStacks){const o=r.getClosestPastElement();o&&o.groupId===e&&(!t||o.groupOrder>t.groupOrder)&&(t=o,i=s)}return[t,i]}_continueUndoInGroup(e,t){if(!e)return;const[,i]=this._findClosestUndoElementInGroup(e);if(i)return this._undo(i,0,t)}undo(e){if(e instanceof bh){const[,t]=this._findClosestUndoElementWithSource(e.id);return t?this._undo(t,e.id,!1):void 0}return typeof e=="string"?this._undo(e,0,!1):this._undo(this.getUriComparisonKey(e),0,!1)}_undo(e,t=0,i){if(!this._editStacks.has(e))return;const s=this._editStacks.get(e),r=s.getClosestPastElement();if(!r)return;if(r.groupId){const[a,l]=this._findClosestUndoElementInGroup(r.groupId);if(r!==a&&l)return this._undo(l,t,i)}if((r.sourceId!==t||r.confirmBeforeUndo)&&!i)return this._confirmAndContinueUndo(e,t,r);try{return r.type===1?this._workspaceUndo(e,r,i):this._resourceUndo(s,r,i)}finally{}}async _confirmAndContinueUndo(e,t,i){if((await this._dialogService.confirm({message:v("confirmDifferentSource","Would you like to undo '{0}'?",i.label),primaryButton:v({key:"confirmDifferentSource.yes",comment:["&& denotes a mnemonic"]},"&&Yes"),cancelButton:v("confirmDifferentSource.no","No")})).confirmed)return this._undo(e,t,!0)}_findClosestRedoElementWithSource(e){if(!e)return[null,null];let t=null,i=null;for(const[s,r]of this._editStacks){const o=r.getClosestFutureElement();o&&o.sourceId===e&&(!t||o.sourceOrder<t.sourceOrder)&&(t=o,i=s)}return[t,i]}canRedo(e){if(e instanceof bh){const[,i]=this._findClosestRedoElementWithSource(e.id);return!!i}const t=this.getUriComparisonKey(e);return this._editStacks.has(t)?this._editStacks.get(t).hasFutureElements():!1}_tryToSplitAndRedo(e,t,i,s){if(t.canSplit())return this._splitFutureWorkspaceElement(t,i),this._notificationService.warn(s),new aT(this._redo(e));for(const r of t.strResources)this.removeElements(r);return this._notificationService.warn(s),new aT}_checkWorkspaceRedo(e,t,i,s){if(t.removedResources)return this._tryToSplitAndRedo(e,t,t.removedResources,v({key:"cannotWorkspaceRedo",comment:["{0} is a label for an operation. {1} is another message."]},"Could not redo '{0}' across all files. {1}",t.label,t.removedResources.createMessage()));if(s&&t.invalidatedResources)return this._tryToSplitAndRedo(e,t,t.invalidatedResources,v({key:"cannotWorkspaceRedo",comment:["{0} is a label for an operation. {1} is another message."]},"Could not redo '{0}' across all files. {1}",t.label,t.invalidatedResources.createMessage()));const r=[];for(const a of i.editStacks)a.getClosestFutureElement()!==t&&r.push(a.resourceLabel);if(r.length>0)return this._tryToSplitAndRedo(e,t,null,v({key:"cannotWorkspaceRedoDueToChanges",comment:["{0} is a label for an operation. {1} is a list of filenames."]},"Could not redo '{0}' across all files because changes were made to {1}",t.label,r.join(", ")));const o=[];for(const a of i.editStacks)a.locked&&o.push(a.resourceLabel);return o.length>0?this._tryToSplitAndRedo(e,t,null,v({key:"cannotWorkspaceRedoDueToInProgressUndoRedo",comment:["{0} is a label for an operation. {1} is a list of filenames."]},"Could not redo '{0}' across all files because there is already an undo or redo operation running on {1}",t.label,o.join(", "))):i.isValid()?null:this._tryToSplitAndRedo(e,t,null,v({key:"cannotWorkspaceRedoDueToInMeantimeUndoRedo",comment:["{0} is a label for an operation. {1} is a list of filenames."]},"Could not redo '{0}' across all files because an undo or redo operation occurred in the meantime",t.label))}_workspaceRedo(e,t){const i=this._getAffectedEditStacks(t),s=this._checkWorkspaceRedo(e,t,i,!1);return s?s.returnValue:this._executeWorkspaceRedo(e,t,i)}async _executeWorkspaceRedo(e,t,i){let s;try{s=await this._invokeWorkspacePrepare(t)}catch(o){return this._onError(o,t)}const r=this._checkWorkspaceRedo(e,t,i,!0);if(r)return s.dispose(),r.returnValue;for(const o of i.editStacks)o.moveForward(t);return this._safeInvokeWithLocks(t,()=>t.actual.redo(),i,s,()=>this._continueRedoInGroup(t.groupId))}_resourceRedo(e,t){if(!t.isValid){e.flushAllElements();return}if(e.locked){const i=v({key:"cannotResourceRedoDueToInProgressUndoRedo",comment:["{0} is a label for an operation."]},"Could not redo '{0}' because there is already an undo or redo operation running.",t.label);this._notificationService.warn(i);return}return this._invokeResourcePrepare(t,i=>(e.moveForward(t),this._safeInvokeWithLocks(t,()=>t.actual.redo(),new r6([e]),i,()=>this._continueRedoInGroup(t.groupId))))}_findClosestRedoElementInGroup(e){if(!e)return[null,null];let t=null,i=null;for(const[s,r]of this._editStacks){const o=r.getClosestFutureElement();o&&o.groupId===e&&(!t||o.groupOrder<t.groupOrder)&&(t=o,i=s)}return[t,i]}_continueRedoInGroup(e){if(!e)return;const[,t]=this._findClosestRedoElementInGroup(e);if(t)return this._redo(t)}redo(e){if(e instanceof bh){const[,t]=this._findClosestRedoElementWithSource(e.id);return t?this._redo(t):void 0}return typeof e=="string"?this._redo(e):this._redo(this.getUriComparisonKey(e))}_redo(e){if(!this._editStacks.has(e))return;const t=this._editStacks.get(e),i=t.getClosestFutureElement();if(i){if(i.groupId){const[s,r]=this._findClosestRedoElementInGroup(i.groupId);if(i!==s&&r)return this._redo(r)}try{return i.type===1?this._workspaceRedo(e,i):this._resourceRedo(t,i)}finally{}}}};mH=sut([Cse(0,XE),Cse(1,is)],mH);class aT{constructor(e){this.returnValue=e}}jt(YO,mH,1);var out=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},o6=function(n,e){return function(t,i){e(t,i,n)}};let _H=class extends pe{constructor(e,t,i){super(),this._themeService=e,this._logService=t,this._languageService=i,this._caches=new WeakMap,this._register(this._themeService.onDidColorThemeChange(()=>{this._caches=new WeakMap}))}getStyling(e){return this._caches.has(e)||this._caches.set(e,new OV(e.getLegend(),this._themeService,this._languageService,this._logService)),this._caches.get(e)}};_H=out([o6(0,Ms),o6(1,ga),o6(2,sn)],_H);jt(nF,_H,1);function z0e(n){return typeof n=="string"?!1:Array.isArray(n)?n.every(z0e):!!n.exclusive}class kse{constructor(e,t,i,s){this.uri=e,this.languageId=t,this.notebookUri=i,this.notebookType=s}equals(e){var t,i;return this.notebookType===e.notebookType&&this.languageId===e.languageId&&this.uri.toString()===e.uri.toString()&&((t=this.notebookUri)===null||t===void 0?void 0:t.toString())===((i=e.notebookUri)===null||i===void 0?void 0:i.toString())}}class Cn{constructor(e){this._notebookInfoResolver=e,this._clock=0,this._entries=[],this._onDidChange=new ue,this.onDidChange=this._onDidChange.event}register(e,t){let i={selector:e,provider:t,_score:-1,_time:this._clock++};return this._entries.push(i),this._lastCandidate=void 0,this._onDidChange.fire(this._entries.length),st(()=>{if(i){const s=this._entries.indexOf(i);s>=0&&(this._entries.splice(s,1),this._lastCandidate=void 0,this._onDidChange.fire(this._entries.length),i=void 0)}})}has(e){return this.all(e).length>0}all(e){if(!e)return[];this._updateScores(e);const t=[];for(const i of this._entries)i._score>0&&t.push(i.provider);return t}ordered(e){const t=[];return this._orderedForEach(e,i=>t.push(i.provider)),t}orderedGroups(e){const t=[];let i,s;return this._orderedForEach(e,r=>{i&&s===r._score?i.push(r.provider):(s=r._score,i=[r.provider],t.push(i))}),t}_orderedForEach(e,t){this._updateScores(e);for(const i of this._entries)i._score>0&&t(i)}_updateScores(e){var t,i;const s=(t=this._notebookInfoResolver)===null||t===void 0?void 0:t.call(this,e.uri),r=s?new kse(e.uri,e.getLanguageId(),s.uri,s.type):new kse(e.uri,e.getLanguageId(),void 0,void 0);if(!(!((i=this._lastCandidate)===null||i===void 0)&&i.equals(r))){this._lastCandidate=r;for(const o of this._entries)if(o._score=AG(o.selector,r.uri,r.languageId,SUe(e),r.notebookUri,r.notebookType),z0e(o.selector)&&o._score>0){for(const a of this._entries)a._score=0;o._score=1e3;break}this._entries.sort(Cn._compareByScoreAndTime)}}static _compareByScoreAndTime(e,t){return e._score<t._score?1:e._score>t._score?-1:TS(e.selector)&&!TS(t.selector)?1:!TS(e.selector)&&TS(t.selector)?-1:e._time<t._time?1:e._time>t._time?-1:0}}function TS(n){return typeof n=="string"?!1:Array.isArray(n)?n.some(TS):!!n.isBuiltin}class aut{constructor(){this.referenceProvider=new Cn(this._score.bind(this)),this.renameProvider=new Cn(this._score.bind(this)),this.codeActionProvider=new Cn(this._score.bind(this)),this.definitionProvider=new Cn(this._score.bind(this)),this.typeDefinitionProvider=new Cn(this._score.bind(this)),this.declarationProvider=new Cn(this._score.bind(this)),this.implementationProvider=new Cn(this._score.bind(this)),this.documentSymbolProvider=new Cn(this._score.bind(this)),this.inlayHintsProvider=new Cn(this._score.bind(this)),this.colorProvider=new Cn(this._score.bind(this)),this.codeLensProvider=new Cn(this._score.bind(this)),this.documentFormattingEditProvider=new Cn(this._score.bind(this)),this.documentRangeFormattingEditProvider=new Cn(this._score.bind(this)),this.onTypeFormattingEditProvider=new Cn(this._score.bind(this)),this.signatureHelpProvider=new Cn(this._score.bind(this)),this.hoverProvider=new Cn(this._score.bind(this)),this.documentHighlightProvider=new Cn(this._score.bind(this)),this.multiDocumentHighlightProvider=new Cn(this._score.bind(this)),this.selectionRangeProvider=new Cn(this._score.bind(this)),this.foldingRangeProvider=new Cn(this._score.bind(this)),this.linkProvider=new Cn(this._score.bind(this)),this.inlineCompletionsProvider=new Cn(this._score.bind(this)),this.completionProvider=new Cn(this._score.bind(this)),this.linkedEditingRangeProvider=new Cn(this._score.bind(this)),this.documentRangeSemanticTokensProvider=new Cn(this._score.bind(this)),this.documentSemanticTokensProvider=new Cn(this._score.bind(this)),this.documentOnDropEditProvider=new Cn(this._score.bind(this)),this.documentPasteEditProvider=new Cn(this._score.bind(this))}_score(e){var t;return(t=this._notebookTypeResolver)===null||t===void 0?void 0:t.call(this,e)}}jt(Ge,aut,1);function a6(n){return Object.isFrozen(n)?n:pWe(n)}class Sr{constructor(e={},t=[],i=[],s){this._contents=e,this._keys=t,this._overrides=i,this.raw=s,this.overrideConfigurations=new Map}get rawConfiguration(){var e;if(!this._rawConfiguration)if(!((e=this.raw)===null||e===void 0)&&e.length){const t=this.raw.map(i=>{if(i instanceof Sr)return i;const s=new lut("");return s.parseRaw(i),s.configurationModel});this._rawConfiguration=t.reduce((i,s)=>s===i?s:i.merge(s),t[0])}else this._rawConfiguration=this;return this._rawConfiguration}get contents(){return this._contents}get overrides(){return this._overrides}get keys(){return this._keys}isEmpty(){return this._keys.length===0&&Object.keys(this._contents).length===0&&this._overrides.length===0}getValue(e){return e?VJ(this.contents,e):this.contents}inspect(e,t){const i=this.rawConfiguration.getValue(e),s=t?this.rawConfiguration.getOverrideValue(e,t):void 0,r=t?this.rawConfiguration.override(t).getValue(e):i;return{value:i,override:s,merged:r}}getOverrideValue(e,t){const i=this.getContentsForOverrideIdentifer(t);return i?e?VJ(i,e):i:void 0}override(e){let t=this.overrideConfigurations.get(e);return t||(t=this.createOverrideConfigurationModel(e),this.overrideConfigurations.set(e,t)),t}merge(...e){var t,i;const s=ef(this.contents),r=ef(this.overrides),o=[...this.keys],a=!((t=this.raw)===null||t===void 0)&&t.length?[...this.raw]:[this];for(const l of e)if(a.push(...!((i=l.raw)===null||i===void 0)&&i.length?l.raw:[l]),!l.isEmpty()){this.mergeContents(s,l.contents);for(const c of l.overrides){const[u]=r.filter(h=>On(h.identifiers,c.identifiers));u?(this.mergeContents(u.contents,c.contents),u.keys.push(...c.keys),u.keys=Jp(u.keys)):r.push(ef(c))}for(const c of l.keys)o.indexOf(c)===-1&&o.push(c)}return new Sr(s,o,r,a.every(l=>l instanceof Sr)?void 0:a)}createOverrideConfigurationModel(e){const t=this.getContentsForOverrideIdentifer(e);if(!t||typeof t!="object"||!Object.keys(t).length)return this;const i={};for(const s of Jp([...Object.keys(this.contents),...Object.keys(t)])){let r=this.contents[s];const o=t[s];o&&(typeof r=="object"&&typeof o=="object"?(r=ef(r),this.mergeContents(r,o)):r=o),i[s]=r}return new Sr(i,this.keys,this.overrides)}mergeContents(e,t){for(const i of Object.keys(t)){if(i in e&&ao(e[i])&&ao(t[i])){this.mergeContents(e[i],t[i]);continue}e[i]=ef(t[i])}}getContentsForOverrideIdentifer(e){let t=null,i=null;const s=r=>{r&&(i?this.mergeContents(i,r):i=ef(r))};for(const r of this.overrides)r.identifiers.length===1&&r.identifiers[0]===e?t=r.contents:r.identifiers.includes(e)&&s(r.contents);return s(t),i}toJSON(){return{contents:this.contents,overrides:this.overrides,keys:this.keys}}addValue(e,t){this.updateValue(e,t,!0)}setValue(e,t){this.updateValue(e,t,!1)}removeValue(e){const t=this.keys.indexOf(e);t!==-1&&(this.keys.splice(t,1),B7e(this.contents,e),em.test(e)&&this.overrides.splice(this.overrides.findIndex(i=>On(i.identifiers,KA(e))),1))}updateValue(e,t,i){Qge(this.contents,e,t,s=>console.error(s)),i=i||this.keys.indexOf(e)===-1,i&&this.keys.push(e),em.test(e)&&this.overrides.push({identifiers:KA(e),keys:Object.keys(this.contents[e]),contents:o9(this.contents[e],s=>console.error(s))})}}class lut{constructor(e){this._name=e,this._raw=null,this._configurationModel=null,this._restrictedConfigurations=[]}get configurationModel(){return this._configurationModel||new Sr}parseRaw(e,t){this._raw=e;const{contents:i,keys:s,overrides:r,restricted:o,hasExcludedProperties:a}=this.doParseRaw(e,t);this._configurationModel=new Sr(i,s,r,a?[e]:void 0),this._restrictedConfigurations=o||[]}doParseRaw(e,t){const i=vn.as($u.Configuration).getConfigurationProperties(),s=this.filter(e,i,!0,t);e=s.raw;const r=o9(e,l=>console.error(`Conflict in settings file ${this._name}: ${l}`)),o=Object.keys(e),a=this.toOverrides(e,l=>console.error(`Conflict in settings file ${this._name}: ${l}`));return{contents:r,keys:o,overrides:a,restricted:s.restricted,hasExcludedProperties:s.hasExcludedProperties}}filter(e,t,i,s){var r,o,a;let l=!1;if(!(s!=null&&s.scopes)&&!(s!=null&&s.skipRestricted)&&!(!((r=s==null?void 0:s.exclude)===null||r===void 0)&&r.length))return{raw:e,restricted:[],hasExcludedProperties:l};const c={},u=[];for(const h in e)if(em.test(h)&&i){const d=this.filter(e[h],t,!1,s);c[h]=d.raw,l=l||d.hasExcludedProperties,u.push(...d.restricted)}else{const d=t[h],f=d?typeof d.scope<"u"?d.scope:3:void 0;d!=null&&d.restricted&&u.push(h),!(!((o=s.exclude)===null||o===void 0)&&o.includes(h))&&(!((a=s.include)===null||a===void 0)&&a.includes(h)||(f===void 0||s.scopes===void 0||s.scopes.includes(f))&&!(s.skipRestricted&&(d!=null&&d.restricted)))?c[h]=e[h]:l=!0}return{raw:c,restricted:u,hasExcludedProperties:l}}toOverrides(e,t){const i=[];for(const s of Object.keys(e))if(em.test(s)){const r={};for(const o in e[s])r[o]=e[s][o];i.push({identifiers:KA(s),keys:Object.keys(r),contents:o9(r,t)})}return i}}class cut{constructor(e,t,i,s,r,o,a,l,c,u,h,d,f){this.key=e,this.overrides=t,this._value=i,this.overrideIdentifiers=s,this.defaultConfiguration=r,this.policyConfiguration=o,this.applicationConfiguration=a,this.userConfiguration=l,this.localUserConfiguration=c,this.remoteUserConfiguration=u,this.workspaceConfiguration=h,this.folderConfigurationModel=d,this.memoryConfigurationModel=f}inspect(e,t,i){const s=e.inspect(t,i);return{get value(){return a6(s.value)},get override(){return a6(s.override)},get merged(){return a6(s.merged)}}}get userInspectValue(){return this._userInspectValue||(this._userInspectValue=this.inspect(this.userConfiguration,this.key,this.overrides.overrideIdentifier)),this._userInspectValue}get user(){return this.userInspectValue.value!==void 0||this.userInspectValue.override!==void 0?{value:this.userInspectValue.value,override:this.userInspectValue.override}:void 0}}class fF{constructor(e,t,i,s,r=new Sr,o=new Sr,a=new qn,l=new Sr,c=new qn){this._defaultConfiguration=e,this._policyConfiguration=t,this._applicationConfiguration=i,this._localUserConfiguration=s,this._remoteUserConfiguration=r,this._workspaceConfiguration=o,this._folderConfigurations=a,this._memoryConfiguration=l,this._memoryConfigurationByResource=c,this._workspaceConsolidatedConfiguration=null,this._foldersConsolidatedConfigurations=new qn,this._userConfiguration=null}getValue(e,t,i){return this.getConsolidatedConfigurationModel(e,t,i).getValue(e)}updateValue(e,t,i={}){let s;i.resource?(s=this._memoryConfigurationByResource.get(i.resource),s||(s=new Sr,this._memoryConfigurationByResource.set(i.resource,s))):s=this._memoryConfiguration,t===void 0?s.removeValue(e):s.setValue(e,t),i.resource||(this._workspaceConsolidatedConfiguration=null)}inspect(e,t,i){const s=this.getConsolidatedConfigurationModel(e,t,i),r=this.getFolderConfigurationModelForResource(t.resource,i),o=t.resource?this._memoryConfigurationByResource.get(t.resource)||this._memoryConfiguration:this._memoryConfiguration,a=new Set;for(const l of s.overrides)for(const c of l.identifiers)s.getOverrideValue(e,c)!==void 0&&a.add(c);return new cut(e,t,s.getValue(e),a.size?[...a]:void 0,this._defaultConfiguration,this._policyConfiguration.isEmpty()?void 0:this._policyConfiguration,this.applicationConfiguration.isEmpty()?void 0:this.applicationConfiguration,this.userConfiguration,this.localUserConfiguration,this.remoteUserConfiguration,i?this._workspaceConfiguration:void 0,r||void 0,o)}get applicationConfiguration(){return this._applicationConfiguration}get userConfiguration(){return this._userConfiguration||(this._userConfiguration=this._remoteUserConfiguration.isEmpty()?this._localUserConfiguration:this._localUserConfiguration.merge(this._remoteUserConfiguration)),this._userConfiguration}get localUserConfiguration(){return this._localUserConfiguration}get remoteUserConfiguration(){return this._remoteUserConfiguration}getConsolidatedConfigurationModel(e,t,i){let s=this.getConsolidatedConfigurationModelForResource(t,i);return t.overrideIdentifier&&(s=s.override(t.overrideIdentifier)),!this._policyConfiguration.isEmpty()&&this._policyConfiguration.getValue(e)!==void 0&&(s=s.merge(this._policyConfiguration)),s}getConsolidatedConfigurationModelForResource({resource:e},t){let i=this.getWorkspaceConsolidatedConfiguration();if(t&&e){const s=t.getFolder(e);s&&(i=this.getFolderConsolidatedConfiguration(s.uri)||i);const r=this._memoryConfigurationByResource.get(e);r&&(i=i.merge(r))}return i}getWorkspaceConsolidatedConfiguration(){return this._workspaceConsolidatedConfiguration||(this._workspaceConsolidatedConfiguration=this._defaultConfiguration.merge(this.applicationConfiguration,this.userConfiguration,this._workspaceConfiguration,this._memoryConfiguration)),this._workspaceConsolidatedConfiguration}getFolderConsolidatedConfiguration(e){let t=this._foldersConsolidatedConfigurations.get(e);if(!t){const i=this.getWorkspaceConsolidatedConfiguration(),s=this._folderConfigurations.get(e);s?(t=i.merge(s),this._foldersConsolidatedConfigurations.set(e,t)):t=i}return t}getFolderConfigurationModelForResource(e,t){if(t&&e){const i=t.getFolder(e);if(i)return this._folderConfigurations.get(i.uri)}}toData(){return{defaults:{contents:this._defaultConfiguration.contents,overrides:this._defaultConfiguration.overrides,keys:this._defaultConfiguration.keys},policy:{contents:this._policyConfiguration.contents,overrides:this._policyConfiguration.overrides,keys:this._policyConfiguration.keys},application:{contents:this.applicationConfiguration.contents,overrides:this.applicationConfiguration.overrides,keys:this.applicationConfiguration.keys},user:{contents:this.userConfiguration.contents,overrides:this.userConfiguration.overrides,keys:this.userConfiguration.keys},workspace:{contents:this._workspaceConfiguration.contents,overrides:this._workspaceConfiguration.overrides,keys:this._workspaceConfiguration.keys},folders:[...this._folderConfigurations.keys()].reduce((e,t)=>{const{contents:i,overrides:s,keys:r}=this._folderConfigurations.get(t);return e.push([t,{contents:i,overrides:s,keys:r}]),e},[])}}static parse(e){const t=this.parseConfigurationModel(e.defaults),i=this.parseConfigurationModel(e.policy),s=this.parseConfigurationModel(e.application),r=this.parseConfigurationModel(e.user),o=this.parseConfigurationModel(e.workspace),a=e.folders.reduce((l,c)=>(l.set(it.revive(c[0]),this.parseConfigurationModel(c[1])),l),new qn);return new fF(t,i,s,r,new Sr,o,a,new Sr,new qn)}static parseConfigurationModel(e){return new Sr(e.contents,e.keys,e.overrides)}}class uut{constructor(e,t,i,s){this.change=e,this.previous=t,this.currentConfiguraiton=i,this.currentWorkspace=s,this._marker=` +`,this._markerCode1=this._marker.charCodeAt(0),this._markerCode2=46,this.affectedKeys=new Set,this._previousConfiguration=void 0;for(const r of e.keys)this.affectedKeys.add(r);for(const[,r]of e.overrides)for(const o of r)this.affectedKeys.add(o);this._affectsConfigStr=this._marker;for(const r of this.affectedKeys)this._affectsConfigStr+=r+this._marker}get previousConfiguration(){return!this._previousConfiguration&&this.previous&&(this._previousConfiguration=fF.parse(this.previous.data)),this._previousConfiguration}affectsConfiguration(e,t){var i;const s=this._marker+e,r=this._affectsConfigStr.indexOf(s);if(r<0)return!1;const o=r+s.length;if(o>=this._affectsConfigStr.length)return!1;const a=this._affectsConfigStr.charCodeAt(o);if(a!==this._markerCode1&&a!==this._markerCode2)return!1;if(t){const l=this.previousConfiguration?this.previousConfiguration.getValue(e,t,(i=this.previous)===null||i===void 0?void 0:i.workspace):void 0,c=this.currentConfiguraiton.getValue(e,t,this.currentWorkspace);return!Ya(l,c)}return!0}}const CR={kind:0},hut={kind:1};function dut(n,e,t){return{kind:2,commandId:n,commandArgs:e,isBubble:t}}class xk{constructor(e,t,i){var s;this._log=i,this._defaultKeybindings=e,this._defaultBoundCommands=new Map;for(const r of e){const o=r.command;o&&o.charAt(0)!=="-"&&this._defaultBoundCommands.set(o,!0)}this._map=new Map,this._lookupMap=new Map,this._keybindings=xk.handleRemovals([].concat(e).concat(t));for(let r=0,o=this._keybindings.length;r<o;r++){const a=this._keybindings[r];if(a.chords.length===0)continue;const l=(s=a.when)===null||s===void 0?void 0:s.substituteConstants();l&&l.type===0||this._addKeyPress(a.chords[0],a)}}static _isTargetedForRemoval(e,t,i){if(t){for(let s=0;s<t.length;s++)if(t[s]!==e.chords[s])return!1}return!(i&&i.type!==1&&(!e.when||!q9e(i,e.when)))}static handleRemovals(e){const t=new Map;for(let s=0,r=e.length;s<r;s++){const o=e[s];if(o.command&&o.command.charAt(0)==="-"){const a=o.command.substring(1);t.has(a)?t.get(a).push(o):t.set(a,[o])}}if(t.size===0)return e;const i=[];for(let s=0,r=e.length;s<r;s++){const o=e[s];if(!o.command||o.command.length===0){i.push(o);continue}if(o.command.charAt(0)==="-")continue;const a=t.get(o.command);if(!a||!o.isDefault){i.push(o);continue}let l=!1;for(const c of a){const u=c.when;if(this._isTargetedForRemoval(o,c.chords,u)){l=!0;break}}if(!l){i.push(o);continue}}return i}_addKeyPress(e,t){const i=this._map.get(e);if(typeof i>"u"){this._map.set(e,[t]),this._addToLookupMap(t);return}for(let s=i.length-1;s>=0;s--){const r=i[s];if(r.command===t.command)continue;let o=!0;for(let a=1;a<r.chords.length&&a<t.chords.length;a++)if(r.chords[a]!==t.chords[a]){o=!1;break}o&&xk.whenIsEntirelyIncluded(r.when,t.when)&&this._removeFromLookupMap(r)}i.push(t),this._addToLookupMap(t)}_addToLookupMap(e){if(!e.command)return;let t=this._lookupMap.get(e.command);typeof t>"u"?(t=[e],this._lookupMap.set(e.command,t)):t.push(e)}_removeFromLookupMap(e){if(!e.command)return;const t=this._lookupMap.get(e.command);if(!(typeof t>"u")){for(let i=0,s=t.length;i<s;i++)if(t[i]===e){t.splice(i,1);return}}}static whenIsEntirelyIncluded(e,t){return!t||t.type===1?!0:!e||e.type===1?!1:n9(e,t)}getKeybindings(){return this._keybindings}lookupPrimaryKeybinding(e,t){const i=this._lookupMap.get(e);if(typeof i>"u"||i.length===0)return null;if(i.length===1)return i[0];for(let s=i.length-1;s>=0;s--){const r=i[s];if(t.contextMatchesRules(r.when))return r}return i[i.length-1]}resolve(e,t,i){const s=[...t,i];this._log(`| Resolving ${s}`);const r=this._map.get(s[0]);if(r===void 0)return this._log("\\ No keybinding entries."),CR;let o=null;if(s.length<2)o=r;else{o=[];for(let l=0,c=r.length;l<c;l++){const u=r[l];if(s.length>u.chords.length)continue;let h=!0;for(let d=1;d<s.length;d++)if(u.chords[d]!==s[d]){h=!1;break}h&&o.push(u)}}const a=this._findCommand(e,o);return a?s.length<a.chords.length?(this._log(`\\ From ${o.length} keybinding entries, awaiting ${a.chords.length-s.length} more chord(s), when: ${Lse(a.when)}, source: ${xse(a)}.`),hut):(this._log(`\\ From ${o.length} keybinding entries, matched ${a.command}, when: ${Lse(a.when)}, source: ${xse(a)}.`),dut(a.command,a.commandArgs,a.bubble)):(this._log(`\\ From ${o.length} keybinding entries, no when clauses matched the context.`),CR)}_findCommand(e,t){for(let i=t.length-1;i>=0;i--){const s=t[i];if(xk._contextMatchesRules(e,s.when))return s}return null}static _contextMatchesRules(e,t){return t?t.evaluate(e):!0}}function Lse(n){return n?`${n.serialize()}`:"no when condition"}function xse(n){return n.extensionId?n.isBuiltinExtension?`built-in extension ${n.extensionId}`:`user extension ${n.extensionId}`:n.isDefault?"built-in":"user"}const fut=/^(cursor|delete|undo|redo|tab|editor\.action\.clipboard)/;class gut extends pe{get onDidUpdateKeybindings(){return this._onDidUpdateKeybindings?this._onDidUpdateKeybindings.event:Ve.None}get inChordMode(){return this._currentChords.length>0}constructor(e,t,i,s,r){super(),this._contextKeyService=e,this._commandService=t,this._telemetryService=i,this._notificationService=s,this._logService=r,this._onDidUpdateKeybindings=this._register(new ue),this._currentChords=[],this._currentChordChecker=new Oj,this._currentChordStatusMessage=null,this._ignoreSingleModifiers=ib.EMPTY,this._currentSingleModifier=null,this._currentSingleModifierClearTimeout=new Ic,this._logging=!1}dispose(){super.dispose()}_log(e){this._logging&&this._logService.info(`[KeybindingService]: ${e}`)}getKeybindings(){return this._getResolver().getKeybindings()}lookupKeybinding(e,t){const i=this._getResolver().lookupPrimaryKeybinding(e,t||this._contextKeyService);if(i)return i.resolvedKeybinding}dispatchEvent(e,t){return this._dispatch(e,t)}softDispatch(e,t){this._log("/ Soft dispatching keyboard event");const i=this.resolveKeyboardEvent(e);if(i.hasMultipleChords())return console.warn("keyboard event should not be mapped to multiple chords"),CR;const[s]=i.getDispatchChords();if(s===null)return this._log("\\ Keyboard event cannot be dispatched"),CR;const r=this._contextKeyService.getContext(t),o=this._currentChords.map(({keypress:a})=>a);return this._getResolver().resolve(r,o,s)}_scheduleLeaveChordMode(){const e=Date.now();this._currentChordChecker.cancelAndSet(()=>{if(!this._documentHasFocus()){this._leaveChordMode();return}Date.now()-e>5e3&&this._leaveChordMode()},500)}_expectAnotherChord(e,t){switch(this._currentChords.push({keypress:e,label:t}),this._currentChords.length){case 0:throw kj("impossible");case 1:this._currentChordStatusMessage=this._notificationService.status(v("first.chord","({0}) was pressed. Waiting for second key of chord...",t));break;default:{const i=this._currentChords.map(({label:s})=>s).join(", ");this._currentChordStatusMessage=this._notificationService.status(v("next.chord","({0}) was pressed. Waiting for next key of chord...",i))}}this._scheduleLeaveChordMode(),ek.enabled&&ek.disable()}_leaveChordMode(){this._currentChordStatusMessage&&(this._currentChordStatusMessage.dispose(),this._currentChordStatusMessage=null),this._currentChordChecker.cancel(),this._currentChords=[],ek.enable()}_dispatch(e,t){return this._doDispatch(this.resolveKeyboardEvent(e),t,!1)}_singleModifierDispatch(e,t){const i=this.resolveKeyboardEvent(e),[s]=i.getSingleModifierDispatchChords();if(s)return this._ignoreSingleModifiers.has(s)?(this._log(`+ Ignoring single modifier ${s} due to it being pressed together with other keys.`),this._ignoreSingleModifiers=ib.EMPTY,this._currentSingleModifierClearTimeout.cancel(),this._currentSingleModifier=null,!1):(this._ignoreSingleModifiers=ib.EMPTY,this._currentSingleModifier===null?(this._log(`+ Storing single modifier for possible chord ${s}.`),this._currentSingleModifier=s,this._currentSingleModifierClearTimeout.cancelAndSet(()=>{this._log("+ Clearing single modifier due to 300ms elapsed."),this._currentSingleModifier=null},300),!1):s===this._currentSingleModifier?(this._log(`/ Dispatching single modifier chord ${s} ${s}`),this._currentSingleModifierClearTimeout.cancel(),this._currentSingleModifier=null,this._doDispatch(i,t,!0)):(this._log(`+ Clearing single modifier due to modifier mismatch: ${this._currentSingleModifier} ${s}`),this._currentSingleModifierClearTimeout.cancel(),this._currentSingleModifier=null,!1));const[r]=i.getChords();return this._ignoreSingleModifiers=new ib(r),this._currentSingleModifier!==null&&this._log("+ Clearing single modifier due to other key up."),this._currentSingleModifierClearTimeout.cancel(),this._currentSingleModifier=null,!1}_doDispatch(e,t,i=!1){var s;let r=!1;if(e.hasMultipleChords())return console.warn("Unexpected keyboard event mapped to multiple chords"),!1;let o=null,a=null;if(i){const[h]=e.getSingleModifierDispatchChords();o=h,a=h?[h]:[]}else[o]=e.getDispatchChords(),a=this._currentChords.map(({keypress:h})=>h);if(o===null)return this._log("\\ Keyboard event cannot be dispatched in keydown phase."),r;const l=this._contextKeyService.getContext(t),c=e.getLabel(),u=this._getResolver().resolve(l,a,o);switch(u.kind){case 0:{if(this._logService.trace("KeybindingService#dispatch",c,"[ No matching keybinding ]"),this.inChordMode){const h=this._currentChords.map(({label:d})=>d).join(", ");this._log(`+ Leaving multi-chord mode: Nothing bound to "${h}, ${c}".`),this._notificationService.status(v("missing.chord","The key combination ({0}, {1}) is not a command.",h,c),{hideAfter:10*1e3}),this._leaveChordMode(),r=!0}return r}case 1:return this._logService.trace("KeybindingService#dispatch",c,"[ Several keybindings match - more chords needed ]"),r=!0,this._expectAnotherChord(o,c),this._log(this._currentChords.length===1?"+ Entering multi-chord mode...":"+ Continuing multi-chord mode..."),r;case 2:{if(this._logService.trace("KeybindingService#dispatch",c,`[ Will dispatch command ${u.commandId} ]`),u.commandId===null||u.commandId===""){if(this.inChordMode){const h=this._currentChords.map(({label:d})=>d).join(", ");this._log(`+ Leaving chord mode: Nothing bound to "${h}, ${c}".`),this._notificationService.status(v("missing.chord","The key combination ({0}, {1}) is not a command.",h,c),{hideAfter:10*1e3}),this._leaveChordMode(),r=!0}}else this.inChordMode&&this._leaveChordMode(),u.isBubble||(r=!0),this._log(`+ Invoking command ${u.commandId}.`),typeof u.commandArgs>"u"?this._commandService.executeCommand(u.commandId).then(void 0,h=>this._notificationService.warn(h)):this._commandService.executeCommand(u.commandId,u.commandArgs).then(void 0,h=>this._notificationService.warn(h)),fut.test(u.commandId)||this._telemetryService.publicLog2("workbenchActionExecuted",{id:u.commandId,from:"keybinding",detail:(s=e.getUserSettingsLabel())!==null&&s!==void 0?s:void 0});return r}}}mightProducePrintableCharacter(e){return e.ctrlKey||e.metaKey?!1:e.keyCode>=31&&e.keyCode<=56||e.keyCode>=21&&e.keyCode<=30}}class ib{constructor(e){this._ctrlKey=e?e.ctrlKey:!1,this._shiftKey=e?e.shiftKey:!1,this._altKey=e?e.altKey:!1,this._metaKey=e?e.metaKey:!1}has(e){switch(e){case"ctrl":return this._ctrlKey;case"shift":return this._shiftKey;case"alt":return this._altKey;case"meta":return this._metaKey}}}ib.EMPTY=new ib(null);class Ese{constructor(e,t,i,s,r,o,a){this._resolvedKeybindingItemBrand=void 0,this.resolvedKeybinding=e,this.chords=e?vH(e.getDispatchChords()):[],e&&this.chords.length===0&&(this.chords=vH(e.getSingleModifierDispatchChords())),this.bubble=t?t.charCodeAt(0)===94:!1,this.command=this.bubble?t.substr(1):t,this.commandArgs=i,this.when=s,this.isDefault=r,this.extensionId=o,this.isBuiltinExtension=a}}function vH(n){const e=[];for(let t=0,i=n.length;t<i;t++){const s=n[t];if(!s)return[];e.push(s)}return e}class put extends WBe{constructor(e,t){if(super(),t.length===0)throw Tl("chords");this._os=e,this._chords=t}getLabel(){return CK.toLabel(this._os,this._chords,e=>this._getLabel(e))}getAriaLabel(){return zXe.toLabel(this._os,this._chords,e=>this._getAriaLabel(e))}getElectronAccelerator(){return this._chords.length>1||this._chords[0].isDuplicateModifierCase()?null:UXe.toLabel(this._os,this._chords,e=>this._getElectronAccelerator(e))}getUserSettingsLabel(){return jXe.toLabel(this._os,this._chords,e=>this._getUserSettingsLabel(e))}hasMultipleChords(){return this._chords.length>1}getChords(){return this._chords.map(e=>this._getChord(e))}_getChord(e){return new BBe(e.ctrlKey,e.shiftKey,e.altKey,e.metaKey,this._getLabel(e),this._getAriaLabel(e))}getDispatchChords(){return this._chords.map(e=>this._getChordDispatch(e))}getSingleModifierDispatchChords(){return this._chords.map(e=>this._getSingleModifierChordDispatch(e))}}class Mx extends put{constructor(e,t){super(t,e)}_keyCodeToUILabel(e){if(this._os===2)switch(e){case 15:return"←";case 16:return"↑";case 17:return"→";case 18:return"↓"}return cf.toString(e)}_getLabel(e){return e.isDuplicateModifierCase()?"":this._keyCodeToUILabel(e.keyCode)}_getAriaLabel(e){return e.isDuplicateModifierCase()?"":cf.toString(e.keyCode)}_getElectronAccelerator(e){return cf.toElectronAccelerator(e.keyCode)}_getUserSettingsLabel(e){if(e.isDuplicateModifierCase())return"";const t=cf.toUserSettingsUS(e.keyCode);return t&&t.toLowerCase()}_getChordDispatch(e){return Mx.getDispatchStr(e)}static getDispatchStr(e){if(e.isModifierKey())return null;let t="";return e.ctrlKey&&(t+="ctrl+"),e.shiftKey&&(t+="shift+"),e.altKey&&(t+="alt+"),e.metaKey&&(t+="meta+"),t+=cf.toString(e.keyCode),t}_getSingleModifierChordDispatch(e){return e.keyCode===5&&!e.shiftKey&&!e.altKey&&!e.metaKey?"ctrl":e.keyCode===4&&!e.ctrlKey&&!e.altKey&&!e.metaKey?"shift":e.keyCode===6&&!e.ctrlKey&&!e.shiftKey&&!e.metaKey?"alt":e.keyCode===57&&!e.ctrlKey&&!e.shiftKey&&!e.altKey?"meta":null}static _scanCodeToKeyCode(e){const t=Rj[e];if(t!==-1)return t;switch(e){case 10:return 31;case 11:return 32;case 12:return 33;case 13:return 34;case 14:return 35;case 15:return 36;case 16:return 37;case 17:return 38;case 18:return 39;case 19:return 40;case 20:return 41;case 21:return 42;case 22:return 43;case 23:return 44;case 24:return 45;case 25:return 46;case 26:return 47;case 27:return 48;case 28:return 49;case 29:return 50;case 30:return 51;case 31:return 52;case 32:return 53;case 33:return 54;case 34:return 55;case 35:return 56;case 36:return 22;case 37:return 23;case 38:return 24;case 39:return 25;case 40:return 26;case 41:return 27;case 42:return 28;case 43:return 29;case 44:return 30;case 45:return 21;case 51:return 88;case 52:return 86;case 53:return 92;case 54:return 94;case 55:return 93;case 56:return 0;case 57:return 85;case 58:return 95;case 59:return 91;case 60:return 87;case 61:return 89;case 62:return 90;case 106:return 97}return 0}static _toKeyCodeChord(e){if(!e)return null;if(e instanceof Yf)return e;const t=this._scanCodeToKeyCode(e.scanCode);return t===0?null:new Yf(e.ctrlKey,e.shiftKey,e.altKey,e.metaKey,t)}static resolveKeybinding(e,t){const i=vH(e.chords.map(s=>this._toKeyCodeChord(s)));return i.length>0?[new Mx(i,t)]:[]}}function mut(n){const e=n;return!!e&&typeof e.x=="number"&&typeof e.y=="number"}var hp;(function(n){n[n.AVOID=0]="AVOID",n[n.ALIGN=1]="ALIGN"})(hp||(hp={}));function nb(n,e,t){const i=t.mode===hp.ALIGN?t.offset:t.offset+t.size,s=t.mode===hp.ALIGN?t.offset+t.size:t.offset;return t.position===0?e<=n-i?i:e<=s?s-e:Math.max(n-e,0):e<=s?s-e:e<=n-i?i:0}class Ky extends pe{constructor(e,t){super(),this.container=null,this.useFixedPosition=!1,this.useShadowDOM=!1,this.delegate=null,this.toDisposeOnClean=pe.None,this.toDisposeOnSetContainer=pe.None,this.shadowRoot=null,this.shadowRootHostElement=null,this.view=Te(".context-view"),Jr(this.view),this.setContainer(e,t),this._register(st(()=>this.setContainer(null,1)))}setContainer(e,t){var i;this.useFixedPosition=t!==1;const s=this.useShadowDOM;if(this.useShadowDOM=t===3,!(e===this.container&&s!==this.useShadowDOM)&&(this.container&&(this.toDisposeOnSetContainer.dispose(),this.shadowRoot?(this.shadowRoot.removeChild(this.view),this.shadowRoot=null,(i=this.shadowRootHostElement)===null||i===void 0||i.remove(),this.shadowRootHostElement=null):this.container.removeChild(this.view),this.container=null),e)){if(this.container=e,this.useShadowDOM){this.shadowRootHostElement=Te(".shadow-root-host"),this.container.appendChild(this.shadowRootHostElement),this.shadowRoot=this.shadowRootHostElement.attachShadow({mode:"open"});const o=document.createElement("style");o.textContent=_ut,this.shadowRoot.appendChild(o),this.shadowRoot.appendChild(this.view),this.shadowRoot.appendChild(Te("slot"))}else this.container.appendChild(this.view);const r=new xe;Ky.BUBBLE_UP_EVENTS.forEach(o=>{r.add(Mn(this.container,o,a=>{this.onDOMEvent(a,!1)}))}),Ky.BUBBLE_DOWN_EVENTS.forEach(o=>{r.add(Mn(this.container,o,a=>{this.onDOMEvent(a,!0)},!0))}),this.toDisposeOnSetContainer=r}}show(e){var t,i;this.isVisible()&&this.hide(),ir(this.view),this.view.className="context-view",this.view.style.top="0px",this.view.style.left="0px",this.view.style.zIndex="2575",this.view.style.position=this.useFixedPosition?"fixed":"absolute",Xo(this.view),this.toDisposeOnClean=e.render(this.view)||pe.None,this.delegate=e,this.doLayout(),(i=(t=this.delegate).focus)===null||i===void 0||i.call(t)}getViewElement(){return this.view}layout(){if(this.isVisible()){if(this.delegate.canRelayout===!1&&!(Du&&Aj.pointerEvents)){this.hide();return}this.delegate.layout&&this.delegate.layout(),this.doLayout()}}doLayout(){if(!this.isVisible())return;const e=this.delegate.getAnchor();let t;if(e instanceof HTMLElement){const d=ys(e),f=g9e(e);t={top:d.top*f,left:d.left*f,width:d.width*f,height:d.height*f}}else mut(e)?t={top:e.y,left:e.x,width:e.width||1,height:e.height||2}:t={top:e.posy,left:e.posx,width:2,height:2};const i=Lo(this.view),s=M1(this.view),r=this.delegate.anchorPosition||0,o=this.delegate.anchorAlignment||0,a=this.delegate.anchorAxisAlignment||0;let l,c;const u=v9e();if(a===0){const d={offset:t.top-u.pageYOffset,size:t.height,position:r===0?0:1},f={offset:t.left,size:t.width,position:o===0?0:1,mode:hp.ALIGN};l=nb(u.innerHeight,s,d)+u.pageYOffset,Cr.intersects({start:l,end:l+s},{start:d.offset,end:d.offset+d.size})&&(f.mode=hp.AVOID),c=nb(u.innerWidth,i,f)}else{const d={offset:t.left,size:t.width,position:o===0?0:1},f={offset:t.top,size:t.height,position:r===0?0:1,mode:hp.ALIGN};c=nb(u.innerWidth,i,d),Cr.intersects({start:c,end:c+i},{start:d.offset,end:d.offset+d.size})&&(f.mode=hp.AVOID),l=nb(u.innerHeight,s,f)+u.pageYOffset}this.view.classList.remove("top","bottom","left","right"),this.view.classList.add(r===0?"bottom":"top"),this.view.classList.add(o===0?"left":"right"),this.view.classList.toggle("fixed",this.useFixedPosition);const h=ys(this.container);this.view.style.top=`${l-(this.useFixedPosition?ys(this.view).top:h.top)}px`,this.view.style.left=`${c-(this.useFixedPosition?ys(this.view).left:h.left)}px`,this.view.style.width="initial"}hide(e){const t=this.delegate;this.delegate=null,t!=null&&t.onHide&&t.onHide(e),this.toDisposeOnClean.dispose(),Jr(this.view)}isVisible(){return!!this.delegate}onDOMEvent(e,t){this.delegate&&(this.delegate.onDOMEvent?this.delegate.onDOMEvent(e,pt(e).document.activeElement):t&&!pr(e.target,this.container)&&this.hide())}dispose(){this.hide(),super.dispose()}}Ky.BUBBLE_UP_EVENTS=["click","keydown","focus","blur"];Ky.BUBBLE_DOWN_EVENTS=["click"];const _ut=` + :host { + all: initial; /* 1st rule so subsequent properties are reset. */ + } + + .codicon[class*='codicon-'] { + font: normal normal normal 16px/1 codicon; + display: inline-block; + text-decoration: none; + text-rendering: auto; + text-align: center; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + } + + :host { + font-family: -apple-system, BlinkMacSystemFont, "Segoe WPC", "Segoe UI", "HelveticaNeue-Light", system-ui, "Ubuntu", "Droid Sans", sans-serif; + } + + :host-context(.mac) { font-family: -apple-system, BlinkMacSystemFont, sans-serif; } + :host-context(.mac:lang(zh-Hans)) { font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", sans-serif; } + :host-context(.mac:lang(zh-Hant)) { font-family: -apple-system, BlinkMacSystemFont, "PingFang TC", sans-serif; } + :host-context(.mac:lang(ja)) { font-family: -apple-system, BlinkMacSystemFont, "Hiragino Kaku Gothic Pro", sans-serif; } + :host-context(.mac:lang(ko)) { font-family: -apple-system, BlinkMacSystemFont, "Nanum Gothic", "Apple SD Gothic Neo", "AppleGothic", sans-serif; } + + :host-context(.windows) { font-family: "Segoe WPC", "Segoe UI", sans-serif; } + :host-context(.windows:lang(zh-Hans)) { font-family: "Segoe WPC", "Segoe UI", "Microsoft YaHei", sans-serif; } + :host-context(.windows:lang(zh-Hant)) { font-family: "Segoe WPC", "Segoe UI", "Microsoft Jhenghei", sans-serif; } + :host-context(.windows:lang(ja)) { font-family: "Segoe WPC", "Segoe UI", "Yu Gothic UI", "Meiryo UI", sans-serif; } + :host-context(.windows:lang(ko)) { font-family: "Segoe WPC", "Segoe UI", "Malgun Gothic", "Dotom", sans-serif; } + + :host-context(.linux) { font-family: system-ui, "Ubuntu", "Droid Sans", sans-serif; } + :host-context(.linux:lang(zh-Hans)) { font-family: system-ui, "Ubuntu", "Droid Sans", "Source Han Sans SC", "Source Han Sans CN", "Source Han Sans", sans-serif; } + :host-context(.linux:lang(zh-Hant)) { font-family: system-ui, "Ubuntu", "Droid Sans", "Source Han Sans TC", "Source Han Sans TW", "Source Han Sans", sans-serif; } + :host-context(.linux:lang(ja)) { font-family: system-ui, "Ubuntu", "Droid Sans", "Source Han Sans J", "Source Han Sans JP", "Source Han Sans", sans-serif; } + :host-context(.linux:lang(ko)) { font-family: system-ui, "Ubuntu", "Droid Sans", "Source Han Sans K", "Source Han Sans JR", "Source Han Sans", "UnDotum", "FBaekmuk Gulim", sans-serif; } +`;var vut=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},but=function(n,e){return function(t,i){e(t,i,n)}};let bH=class extends pe{constructor(e){super(),this.layoutService=e,this.currentViewDisposable=pe.None,this.contextView=this._register(new Ky(this.layoutService.mainContainer,1)),this.layout(),this._register(e.onDidLayoutContainer(()=>this.layout()))}showContextView(e,t,i){let s;t?t===this.layoutService.getContainer(pt(t))?s=1:i?s=3:s=2:s=1,this.contextView.setContainer(t??this.layoutService.activeContainer,s),this.contextView.show(e);const r=st(()=>{this.currentViewDisposable===r&&this.hideContextView()});return this.currentViewDisposable=r,r}getContextViewElement(){return this.contextView.getViewElement()}layout(){this.contextView.layout()}hideContextView(e){this.contextView.hide(e)}dispose(){super.dispose(),this.currentViewDisposable.dispose(),this.currentViewDisposable=pe.None}};bH=vut([but(0,KC)],bH);let Gy=[],VG=[],U0e=[];function lT(n,e=!1){yut(n,!1,e)}function yut(n,e,t){const i=Cut(n,e);Gy.push(i),i.userConfigured?U0e.push(i):VG.push(i),t&&!i.userConfigured&&Gy.forEach(s=>{s.mime===i.mime||s.userConfigured||(i.extension&&s.extension===i.extension&&console.warn(`Overwriting extension <<${i.extension}>> to now point to mime <<${i.mime}>>`),i.filename&&s.filename===i.filename&&console.warn(`Overwriting filename <<${i.filename}>> to now point to mime <<${i.mime}>>`),i.filepattern&&s.filepattern===i.filepattern&&console.warn(`Overwriting filepattern <<${i.filepattern}>> to now point to mime <<${i.mime}>>`),i.firstline&&s.firstline===i.firstline&&console.warn(`Overwriting firstline <<${i.firstline}>> to now point to mime <<${i.mime}>>`))})}function Cut(n,e){return{id:n.id,mime:n.mime,filename:n.filename,extension:n.extension,filepattern:n.filepattern,firstline:n.firstline,userConfigured:e,filenameLowercase:n.filename?n.filename.toLowerCase():void 0,extensionLowercase:n.extension?n.extension.toLowerCase():void 0,filepatternLowercase:n.filepattern?_0e(n.filepattern.toLowerCase()):void 0,filepatternOnPath:n.filepattern?n.filepattern.indexOf(ps.sep)>=0:!1}}function wut(){Gy=Gy.filter(n=>n.userConfigured),VG=[]}function Sut(n,e){return kut(n,e).map(t=>t.id)}function kut(n,e){let t;if(n)switch(n.scheme){case wt.file:t=n.fsPath;break;case wt.data:{t=nm.parseMetaData(n).get(nm.META_DATA_LABEL);break}case wt.vscodeNotebookCell:t=void 0;break;default:t=n.path}if(!t)return[{id:"unknown",mime:jn.unknown}];t=t.toLowerCase();const i=Cp(t),s=Dse(t,i,U0e);if(s)return[s,{id:Ga,mime:jn.text}];const r=Dse(t,i,VG);if(r)return[r,{id:Ga,mime:jn.text}];if(e){const o=Lut(e);if(o)return[o,{id:Ga,mime:jn.text}]}return[{id:"unknown",mime:jn.unknown}]}function Dse(n,e,t){var i;let s,r,o;for(let a=t.length-1;a>=0;a--){const l=t[a];if(e===l.filenameLowercase){s=l;break}if(l.filepattern&&(!r||l.filepattern.length>r.filepattern.length)){const c=l.filepatternOnPath?n:e;!((i=l.filepatternLowercase)===null||i===void 0)&&i.call(l,c)&&(r=l)}l.extension&&(!o||l.extension.length>o.extension.length)&&e.endsWith(l.extensionLowercase)&&(o=l)}if(s)return s;if(r)return r;if(o)return o}function Lut(n){if(zj(n)&&(n=n.substr(1)),n.length>0)for(let e=Gy.length-1;e>=0;e--){const t=Gy[e];if(!t.firstline)continue;const i=n.match(t.firstline);if(i&&i.length>0)return t}}const cT=Object.prototype.hasOwnProperty,Ise="vs.editor.nullLanguage";class xut{constructor(){this._languageIdToLanguage=[],this._languageToLanguageId=new Map,this._register(Ise,0),this._register(Ga,1),this._nextLanguageId=2}_register(e,t){this._languageIdToLanguage[t]=e,this._languageToLanguageId.set(e,t)}register(e){if(this._languageToLanguageId.has(e))return;const t=this._nextLanguageId++;this._register(e,t)}encodeLanguageId(e){return this._languageToLanguageId.get(e)||0}decodeLanguageId(e){return this._languageIdToLanguage[e]||Ise}}class Ox extends pe{constructor(e=!0,t=!1){super(),this._onDidChange=this._register(new ue),this.onDidChange=this._onDidChange.event,Ox.instanceCount++,this._warnOnOverwrite=t,this.languageIdCodec=new xut,this._dynamicLanguages=[],this._languages={},this._mimeTypesMap={},this._nameMap={},this._lowercaseNameMap={},e&&(this._initializeFromRegistry(),this._register(my.onDidChangeLanguages(i=>{this._initializeFromRegistry()})))}dispose(){Ox.instanceCount--,super.dispose()}_initializeFromRegistry(){this._languages={},this._mimeTypesMap={},this._nameMap={},this._lowercaseNameMap={},wut();const e=[].concat(my.getLanguages()).concat(this._dynamicLanguages);this._registerLanguages(e)}_registerLanguages(e){for(const t of e)this._registerLanguage(t);this._mimeTypesMap={},this._nameMap={},this._lowercaseNameMap={},Object.keys(this._languages).forEach(t=>{const i=this._languages[t];i.name&&(this._nameMap[i.name]=i.identifier),i.aliases.forEach(s=>{this._lowercaseNameMap[s.toLowerCase()]=i.identifier}),i.mimetypes.forEach(s=>{this._mimeTypesMap[s]=i.identifier})}),vn.as($u.Configuration).registerOverrideIdentifiers(this.getRegisteredLanguageIds()),this._onDidChange.fire()}_registerLanguage(e){const t=e.id;let i;cT.call(this._languages,t)?i=this._languages[t]:(this.languageIdCodec.register(t),i={identifier:t,name:null,mimetypes:[],aliases:[],extensions:[],filenames:[],configurationFiles:[],icons:[]},this._languages[t]=i),this._mergeLanguage(i,e)}_mergeLanguage(e,t){const i=t.id;let s=null;if(Array.isArray(t.mimetypes)&&t.mimetypes.length>0&&(e.mimetypes.push(...t.mimetypes),s=t.mimetypes[0]),s||(s=`text/x-${i}`,e.mimetypes.push(s)),Array.isArray(t.extensions)){t.configuration?e.extensions=t.extensions.concat(e.extensions):e.extensions=e.extensions.concat(t.extensions);for(const a of t.extensions)lT({id:i,mime:s,extension:a},this._warnOnOverwrite)}if(Array.isArray(t.filenames))for(const a of t.filenames)lT({id:i,mime:s,filename:a},this._warnOnOverwrite),e.filenames.push(a);if(Array.isArray(t.filenamePatterns))for(const a of t.filenamePatterns)lT({id:i,mime:s,filepattern:a},this._warnOnOverwrite);if(typeof t.firstLine=="string"&&t.firstLine.length>0){let a=t.firstLine;a.charAt(0)!=="^"&&(a="^"+a);try{const l=new RegExp(a);k8e(l)||lT({id:i,mime:s,firstline:l},this._warnOnOverwrite)}catch(l){console.warn(`[${t.id}]: Invalid regular expression \`${a}\`: `,l)}}e.aliases.push(i);let r=null;if(typeof t.aliases<"u"&&Array.isArray(t.aliases)&&(t.aliases.length===0?r=[null]:r=t.aliases),r!==null)for(const a of r)!a||a.length===0||e.aliases.push(a);const o=r!==null&&r.length>0;if(!(o&&r[0]===null)){const a=(o?r[0]:null)||i;(o||!e.name)&&(e.name=a)}t.configuration&&e.configurationFiles.push(t.configuration),t.icon&&e.icons.push(t.icon)}isRegisteredLanguageId(e){return e?cT.call(this._languages,e):!1}getRegisteredLanguageIds(){return Object.keys(this._languages)}getLanguageIdByLanguageName(e){const t=e.toLowerCase();return cT.call(this._lowercaseNameMap,t)?this._lowercaseNameMap[t]:null}getLanguageIdByMimeType(e){return e&&cT.call(this._mimeTypesMap,e)?this._mimeTypesMap[e]:null}guessLanguageIdByFilepathOrFirstLine(e,t){return!e&&!t?[]:Sut(e,t)}}Ox.instanceCount=0;class Fx extends pe{constructor(e=!1){super(),this._onDidRequestBasicLanguageFeatures=this._register(new ue),this.onDidRequestBasicLanguageFeatures=this._onDidRequestBasicLanguageFeatures.event,this._onDidRequestRichLanguageFeatures=this._register(new ue),this.onDidRequestRichLanguageFeatures=this._onDidRequestRichLanguageFeatures.event,this._onDidChange=this._register(new ue({leakWarningThreshold:200})),this.onDidChange=this._onDidChange.event,this._requestedBasicLanguages=new Set,this._requestedRichLanguages=new Set,Fx.instanceCount++,this._registry=this._register(new Ox(!0,e)),this.languageIdCodec=this._registry.languageIdCodec,this._register(this._registry.onDidChange(()=>this._onDidChange.fire()))}dispose(){Fx.instanceCount--,super.dispose()}isRegisteredLanguageId(e){return this._registry.isRegisteredLanguageId(e)}getLanguageIdByLanguageName(e){return this._registry.getLanguageIdByLanguageName(e)}getLanguageIdByMimeType(e){return this._registry.getLanguageIdByMimeType(e)}guessLanguageIdByFilepathOrFirstLine(e,t){const i=this._registry.guessLanguageIdByFilepathOrFirstLine(e,t);return iq(i,null)}createById(e){return new Tse(this.onDidChange,()=>this._createAndGetLanguageIdentifier(e))}createByFilepathOrFirstLine(e,t){return new Tse(this.onDidChange,()=>{const i=this.guessLanguageIdByFilepathOrFirstLine(e,t);return this._createAndGetLanguageIdentifier(i)})}_createAndGetLanguageIdentifier(e){return(!e||!this.isRegisteredLanguageId(e))&&(e=Ga),e}requestBasicLanguageFeatures(e){this._requestedBasicLanguages.has(e)||(this._requestedBasicLanguages.add(e),this._onDidRequestBasicLanguageFeatures.fire(e))}requestRichLanguageFeatures(e){this._requestedRichLanguages.has(e)||(this._requestedRichLanguages.add(e),this.requestBasicLanguageFeatures(e),kn.getOrCreate(e),this._onDidRequestRichLanguageFeatures.fire(e))}}Fx.instanceCount=0;class Tse{constructor(e,t){this._onDidChangeLanguages=e,this._selector=t,this._listener=null,this._emitter=null,this.languageId=this._selector()}_dispose(){this._listener&&(this._listener.dispose(),this._listener=null),this._emitter&&(this._emitter.dispose(),this._emitter=null)}get onDidChange(){return this._listener||(this._listener=this._onDidChangeLanguages(()=>this._evaluate())),this._emitter||(this._emitter=new ue({onDidRemoveLastListener:()=>{this._dispose()}})),this._emitter.event}_evaluate(){var e;const t=this._selector();t!==this.languageId&&(this.languageId=t,(e=this._emitter)===null||e===void 0||e.fire(this.languageId))}}const yH=/\(&([^\s&])\)|(^|[^&])&([^\s&])/,l6=/(&)?(&)([^\s&])/g;var wR;(function(n){n[n.Right=0]="Right",n[n.Left=1]="Left"})(wR||(wR={}));class Vb extends Vl{constructor(e,t,i,s){e.classList.add("monaco-menu-container"),e.setAttribute("role","presentation");const r=document.createElement("div");r.classList.add("monaco-menu"),r.setAttribute("role","presentation"),super(r,{orientation:1,actionViewItemProvider:c=>this.doGetActionViewItem(c,i,o),context:i.context,actionRunner:i.actionRunner,ariaLabel:i.ariaLabel,ariaRole:"menu",focusOnlyEnabledItems:!0,triggerKeys:{keys:[3,...Gt||Kr?[10]:[]],keyDown:!0}}),this.menuStyles=s,this.menuElement=r,this.actionsList.tabIndex=0,this.initializeOrUpdateStyleSheet(e,s),this._register(Ri.addTarget(r)),this._register(Ce(r,We.KEY_DOWN,c=>{new Ki(c).equals(2)&&c.preventDefault()})),i.enableMnemonics&&this._register(Ce(r,We.KEY_DOWN,c=>{const u=c.key.toLocaleLowerCase();if(this.mnemonics.has(u)){Tt.stop(c,!0);const h=this.mnemonics.get(u);if(h.length===1&&(h[0]instanceof Nse&&h[0].container&&this.focusItemByElement(h[0].container),h[0].onClick(c)),h.length>1){const d=h.shift();d&&d.container&&(this.focusItemByElement(d.container),h.push(d)),this.mnemonics.set(u,h)}}})),Kr&&this._register(Ce(r,We.KEY_DOWN,c=>{const u=new Ki(c);u.equals(14)||u.equals(11)?(this.focusedItem=this.viewItems.length-1,this.focusNext(),Tt.stop(c,!0)):(u.equals(13)||u.equals(12))&&(this.focusedItem=0,this.focusPrevious(),Tt.stop(c,!0))})),this._register(Ce(this.domNode,We.MOUSE_OUT,c=>{const u=c.relatedTarget;pr(u,this.domNode)||(this.focusedItem=void 0,this.updateFocus(),c.stopPropagation())})),this._register(Ce(this.actionsList,We.MOUSE_OVER,c=>{let u=c.target;if(!(!u||!pr(u,this.actionsList)||u===this.actionsList)){for(;u.parentElement!==this.actionsList&&u.parentElement!==null;)u=u.parentElement;if(u.classList.contains("action-item")){const h=this.focusedItem;this.setFocusedItem(u),h!==this.focusedItem&&this.updateFocus()}}})),this._register(Ri.addTarget(this.actionsList)),this._register(Ce(this.actionsList,Oi.Tap,c=>{let u=c.initialTarget;if(!(!u||!pr(u,this.actionsList)||u===this.actionsList)){for(;u.parentElement!==this.actionsList&&u.parentElement!==null;)u=u.parentElement;if(u.classList.contains("action-item")){const h=this.focusedItem;this.setFocusedItem(u),h!==this.focusedItem&&this.updateFocus()}}}));const o={parent:this};this.mnemonics=new Map,this.scrollableElement=this._register(new CE(r,{alwaysConsumeMouseWheel:!0,horizontal:2,vertical:3,verticalScrollbarSize:7,handleMouseWheel:!0,useShadows:!0}));const a=this.scrollableElement.getDomNode();a.style.position="",this.styleScrollElement(a,s),this._register(Ce(r,Oi.Change,c=>{Tt.stop(c,!0);const u=this.scrollableElement.getScrollPosition().scrollTop;this.scrollableElement.setScrollPosition({scrollTop:u-c.translationY})})),this._register(Ce(a,We.MOUSE_UP,c=>{c.preventDefault()}));const l=pt(e);r.style.maxHeight=`${Math.max(10,l.innerHeight-e.getBoundingClientRect().top-35)}px`,t=t.filter(c=>{var u;return!((u=i.submenuIds)===null||u===void 0)&&u.has(c.id)?(console.warn(`Found submenu cycle: ${c.id}`),!1):!0}),this.push(t,{icon:!0,label:!0,isMenu:!0}),e.appendChild(this.scrollableElement.getDomNode()),this.scrollableElement.scanDomNode(),this.viewItems.filter(c=>!(c instanceof Ase)).forEach((c,u,h)=>{c.updatePositionInSet(u+1,h.length)})}initializeOrUpdateStyleSheet(e,t){this.styleSheet||(BA(e)?this.styleSheet=Fl(e):(Vb.globalStyleSheet||(Vb.globalStyleSheet=Fl()),this.styleSheet=Vb.globalStyleSheet)),this.styleSheet.textContent=Dut(t,BA(e))}styleScrollElement(e,t){var i,s;const r=(i=t.foregroundColor)!==null&&i!==void 0?i:"",o=(s=t.backgroundColor)!==null&&s!==void 0?s:"",a=t.borderColor?`1px solid ${t.borderColor}`:"",l="5px",c=t.shadowColor?`0 2px 8px ${t.shadowColor}`:"";e.style.outline=a,e.style.borderRadius=l,e.style.color=r,e.style.backgroundColor=o,e.style.boxShadow=c}getContainer(){return this.scrollableElement.getDomNode()}get onScroll(){return this.scrollableElement.onScroll}focusItemByElement(e){const t=this.focusedItem;this.setFocusedItem(e),t!==this.focusedItem&&this.updateFocus()}setFocusedItem(e){for(let t=0;t<this.actionsList.children.length;t++){const i=this.actionsList.children[t];if(e===i){this.focusedItem=t;break}}}updateFocus(e){super.updateFocus(e,!0,!0),typeof this.focusedItem<"u"&&this.scrollableElement.setScrollPosition({scrollTop:Math.round(this.menuElement.scrollTop)})}doGetActionViewItem(e,t,i){if(e instanceof js)return new Ase(t.context,e,{icon:!0},this.menuStyles);if(e instanceof gy){const s=new Nse(e,e.actions,i,{...t,submenuIds:new Set([...t.submenuIds||[],e.id])},this.menuStyles);if(t.enableMnemonics){const r=s.getMnemonic();if(r&&s.isEnabled()){let o=[];this.mnemonics.has(r)&&(o=this.mnemonics.get(r)),o.push(s),this.mnemonics.set(r,o)}}return s}else{const s={enableMnemonics:t.enableMnemonics,useEventAsContext:t.useEventAsContext};if(t.getKeyBinding){const o=t.getKeyBinding(e);if(o){const a=o.getLabel();a&&(s.keybinding=a)}}const r=new j0e(t.context,e,s,this.menuStyles);if(t.enableMnemonics){const o=r.getMnemonic();if(o&&r.isEnabled()){let a=[];this.mnemonics.has(o)&&(a=this.mnemonics.get(o)),a.push(r),this.mnemonics.set(o,a)}}return r}}}class j0e extends nu{constructor(e,t,i,s){if(i.isMenu=!0,super(t,t,i),this.menuStyle=s,this.options=i,this.options.icon=i.icon!==void 0?i.icon:!1,this.options.label=i.label!==void 0?i.label:!0,this.cssClass="",this.options.label&&i.enableMnemonics){const r=this.action.label;if(r){const o=yH.exec(r);o&&(this.mnemonic=(o[1]?o[1]:o[3]).toLocaleLowerCase())}}this.runOnceToEnableMouseUp=new Ei(()=>{this.element&&(this._register(Ce(this.element,We.MOUSE_UP,r=>{if(Tt.stop(r,!0),Ol){if(new ac(pt(this.element),r).rightButton)return;this.onClick(r)}else setTimeout(()=>{this.onClick(r)},0)})),this._register(Ce(this.element,We.CONTEXT_MENU,r=>{Tt.stop(r,!0)})))},100),this._register(this.runOnceToEnableMouseUp)}render(e){super.render(e),this.element&&(this.container=e,this.item=Le(this.element,Te("a.action-menu-item")),this._action.id===js.ID?this.item.setAttribute("role","presentation"):(this.item.setAttribute("role","menuitem"),this.mnemonic&&this.item.setAttribute("aria-keyshortcuts",`${this.mnemonic}`)),this.check=Le(this.item,Te("span.menu-item-check"+nt.asCSSSelector(Pe.menuSelection))),this.check.setAttribute("role","none"),this.label=Le(this.item,Te("span.action-label")),this.options.label&&this.options.keybinding&&(Le(this.item,Te("span.keybinding")).textContent=this.options.keybinding),this.runOnceToEnableMouseUp.schedule(),this.updateClass(),this.updateLabel(),this.updateTooltip(),this.updateEnabled(),this.updateChecked(),this.applyStyle())}blur(){super.blur(),this.applyStyle()}focus(){var e;super.focus(),(e=this.item)===null||e===void 0||e.focus(),this.applyStyle()}updatePositionInSet(e,t){this.item&&(this.item.setAttribute("aria-posinset",`${e}`),this.item.setAttribute("aria-setsize",`${t}`))}updateLabel(){var e;if(this.label&&this.options.label){ir(this.label);let t=iK(this.action.label);if(t){const i=Eut(t);this.options.enableMnemonics||(t=i),this.label.setAttribute("aria-label",i.replace(/&&/g,"&"));const s=yH.exec(t);if(s){t=IA(t),l6.lastIndex=0;let r=l6.exec(t);for(;r&&r[1];)r=l6.exec(t);const o=a=>a.replace(/&&/g,"&");r?this.label.append(dE(o(t.substr(0,r.index))," "),Te("u",{"aria-hidden":"true"},r[3]),ige(o(t.substr(r.index+r[0].length))," ")):this.label.innerText=o(t).trim(),(e=this.item)===null||e===void 0||e.setAttribute("aria-keyshortcuts",(s[1]?s[1]:s[3]).toLocaleLowerCase())}else this.label.innerText=t.replace(/&&/g,"&").trim()}}}updateTooltip(){}updateClass(){this.cssClass&&this.item&&this.item.classList.remove(...this.cssClass.split(" ")),this.options.icon&&this.label?(this.cssClass=this.action.class||"",this.label.classList.add("icon"),this.cssClass&&this.label.classList.add(...this.cssClass.split(" ")),this.updateEnabled()):this.label&&this.label.classList.remove("icon")}updateEnabled(){this.action.enabled?(this.element&&(this.element.classList.remove("disabled"),this.element.removeAttribute("aria-disabled")),this.item&&(this.item.classList.remove("disabled"),this.item.removeAttribute("aria-disabled"),this.item.tabIndex=0)):(this.element&&(this.element.classList.add("disabled"),this.element.setAttribute("aria-disabled","true")),this.item&&(this.item.classList.add("disabled"),this.item.setAttribute("aria-disabled","true")))}updateChecked(){if(!this.item)return;const e=this.action.checked;this.item.classList.toggle("checked",!!e),e!==void 0?(this.item.setAttribute("role","menuitemcheckbox"),this.item.setAttribute("aria-checked",e?"true":"false")):(this.item.setAttribute("role","menuitem"),this.item.setAttribute("aria-checked",""))}getMnemonic(){return this.mnemonic}applyStyle(){const e=this.element&&this.element.classList.contains("focused"),t=e&&this.menuStyle.selectionForegroundColor?this.menuStyle.selectionForegroundColor:this.menuStyle.foregroundColor,i=e&&this.menuStyle.selectionBackgroundColor?this.menuStyle.selectionBackgroundColor:void 0,s=e&&this.menuStyle.selectionBorderColor?`1px solid ${this.menuStyle.selectionBorderColor}`:"",r=e&&this.menuStyle.selectionBorderColor?"-1px":"";this.item&&(this.item.style.color=t??"",this.item.style.backgroundColor=i??"",this.item.style.outline=s,this.item.style.outlineOffset=r),this.check&&(this.check.style.color=t??"")}}class Nse extends j0e{constructor(e,t,i,s,r){super(e,e,s,r),this.submenuActions=t,this.parentData=i,this.submenuOptions=s,this.mysubmenu=null,this.submenuDisposables=this._register(new xe),this.mouseOver=!1,this.expandDirection=s&&s.expandDirection!==void 0?s.expandDirection:wR.Right,this.showScheduler=new Ei(()=>{this.mouseOver&&(this.cleanupExistingSubmenu(!1),this.createSubmenu(!1))},250),this.hideScheduler=new Ei(()=>{this.element&&!pr(Ka(),this.element)&&this.parentData.submenu===this.mysubmenu&&(this.parentData.parent.focus(!1),this.cleanupExistingSubmenu(!0))},750)}render(e){super.render(e),this.element&&(this.item&&(this.item.classList.add("monaco-submenu-item"),this.item.tabIndex=0,this.item.setAttribute("aria-haspopup","true"),this.updateAriaExpanded("false"),this.submenuIndicator=Le(this.item,Te("span.submenu-indicator"+nt.asCSSSelector(Pe.menuSubmenu))),this.submenuIndicator.setAttribute("aria-hidden","true")),this._register(Ce(this.element,We.KEY_UP,t=>{const i=new Ki(t);(i.equals(17)||i.equals(3))&&(Tt.stop(t,!0),this.createSubmenu(!0))})),this._register(Ce(this.element,We.KEY_DOWN,t=>{const i=new Ki(t);Ka()===this.item&&(i.equals(17)||i.equals(3))&&Tt.stop(t,!0)})),this._register(Ce(this.element,We.MOUSE_OVER,t=>{this.mouseOver||(this.mouseOver=!0,this.showScheduler.schedule())})),this._register(Ce(this.element,We.MOUSE_LEAVE,t=>{this.mouseOver=!1})),this._register(Ce(this.element,We.FOCUS_OUT,t=>{this.element&&!pr(Ka(),this.element)&&this.hideScheduler.schedule()})),this._register(this.parentData.parent.onScroll(()=>{this.parentData.submenu===this.mysubmenu&&(this.parentData.parent.focus(!1),this.cleanupExistingSubmenu(!0))})))}updateEnabled(){}onClick(e){Tt.stop(e,!0),this.cleanupExistingSubmenu(!1),this.createSubmenu(!0)}cleanupExistingSubmenu(e){if(this.parentData.submenu&&(e||this.parentData.submenu!==this.mysubmenu)){try{this.parentData.submenu.dispose()}catch{}this.parentData.submenu=void 0,this.updateAriaExpanded("false"),this.submenuContainer&&(this.submenuDisposables.clear(),this.submenuContainer=void 0)}}calculateSubmenuMenuLayout(e,t,i,s){const r={top:0,left:0};return r.left=nb(e.width,t.width,{position:s===wR.Right?0:1,offset:i.left,size:i.width}),r.left>=i.left&&r.left<i.left+i.width&&(i.left+10+t.width<=e.width&&(r.left=i.left+10),i.top+=10,i.height=0),r.top=nb(e.height,t.height,{position:0,offset:i.top,size:0}),r.top+t.height===i.top&&r.top+i.height+t.height<=e.height&&(r.top+=i.height),r}createSubmenu(e=!0){if(this.element)if(this.parentData.submenu)this.parentData.submenu.focus(!1);else{this.updateAriaExpanded("true"),this.submenuContainer=Le(this.element,Te("div.monaco-submenu")),this.submenuContainer.classList.add("menubar-menu-items-holder","context-view");const t=pt(this.parentData.parent.domNode).getComputedStyle(this.parentData.parent.domNode),i=parseFloat(t.paddingTop||"0")||0;this.submenuContainer.style.zIndex="1",this.submenuContainer.style.position="fixed",this.submenuContainer.style.top="0",this.submenuContainer.style.left="0",this.parentData.submenu=new Vb(this.submenuContainer,this.submenuActions.length?this.submenuActions:[new gO],this.submenuOptions,this.menuStyle);const s=this.element.getBoundingClientRect(),r={top:s.top-i,left:s.left,height:s.height+2*i,width:s.width},o=this.submenuContainer.getBoundingClientRect(),a=pt(this.element),{top:l,left:c}=this.calculateSubmenuMenuLayout(new ni(a.innerWidth,a.innerHeight),ni.lift(o),r,this.expandDirection);this.submenuContainer.style.left=`${c-o.left}px`,this.submenuContainer.style.top=`${l-o.top}px`,this.submenuDisposables.add(Ce(this.submenuContainer,We.KEY_UP,u=>{new Ki(u).equals(15)&&(Tt.stop(u,!0),this.parentData.parent.focus(),this.cleanupExistingSubmenu(!0))})),this.submenuDisposables.add(Ce(this.submenuContainer,We.KEY_DOWN,u=>{new Ki(u).equals(15)&&Tt.stop(u,!0)})),this.submenuDisposables.add(this.parentData.submenu.onDidCancel(()=>{this.parentData.parent.focus(),this.cleanupExistingSubmenu(!0)})),this.parentData.submenu.focus(e),this.mysubmenu=this.parentData.submenu}}updateAriaExpanded(e){var t;this.item&&((t=this.item)===null||t===void 0||t.setAttribute("aria-expanded",e))}applyStyle(){super.applyStyle();const t=this.element&&this.element.classList.contains("focused")&&this.menuStyle.selectionForegroundColor?this.menuStyle.selectionForegroundColor:this.menuStyle.foregroundColor;this.submenuIndicator&&(this.submenuIndicator.style.color=t??"")}dispose(){super.dispose(),this.hideScheduler.dispose(),this.mysubmenu&&(this.mysubmenu.dispose(),this.mysubmenu=null),this.submenuContainer&&(this.submenuContainer=void 0)}}class Ase extends Ny{constructor(e,t,i,s){super(e,t,i),this.menuStyles=s}render(e){super.render(e),this.label&&(this.label.style.borderBottomColor=this.menuStyles.separatorColor?`${this.menuStyles.separatorColor}`:"")}}function Eut(n){const e=yH,t=e.exec(n);if(!t)return n;const i=!t[1];return n.replace(e,i?"$2$3":"").trim()}function Pse(n){const e=Dge()[n.id];return`.codicon-${n.id}:before { content: '\\${e.toString(16)}'; }`}function Dut(n,e){let t=` +.monaco-menu { + font-size: 13px; + border-radius: 5px; + min-width: 160px; +} + +${Pse(Pe.menuSelection)} +${Pse(Pe.menuSubmenu)} + +.monaco-menu .monaco-action-bar { + text-align: right; + overflow: hidden; + white-space: nowrap; +} + +.monaco-menu .monaco-action-bar .actions-container { + display: flex; + margin: 0 auto; + padding: 0; + width: 100%; + justify-content: flex-end; +} + +.monaco-menu .monaco-action-bar.vertical .actions-container { + display: inline-block; +} + +.monaco-menu .monaco-action-bar.reverse .actions-container { + flex-direction: row-reverse; +} + +.monaco-menu .monaco-action-bar .action-item { + cursor: pointer; + display: inline-block; + transition: transform 50ms ease; + position: relative; /* DO NOT REMOVE - this is the key to preventing the ghosting icon bug in Chrome 42 */ +} + +.monaco-menu .monaco-action-bar .action-item.disabled { + cursor: default; +} + +.monaco-menu .monaco-action-bar.animated .action-item.active { + transform: scale(1.272019649, 1.272019649); /* 1.272019649 = √φ */ +} + +.monaco-menu .monaco-action-bar .action-item .icon, +.monaco-menu .monaco-action-bar .action-item .codicon { + display: inline-block; +} + +.monaco-menu .monaco-action-bar .action-item .codicon { + display: flex; + align-items: center; +} + +.monaco-menu .monaco-action-bar .action-label { + font-size: 11px; + margin-right: 4px; +} + +.monaco-menu .monaco-action-bar .action-item.disabled .action-label, +.monaco-menu .monaco-action-bar .action-item.disabled .action-label:hover { + color: var(--vscode-disabledForeground); +} + +/* Vertical actions */ + +.monaco-menu .monaco-action-bar.vertical { + text-align: left; +} + +.monaco-menu .monaco-action-bar.vertical .action-item { + display: block; +} + +.monaco-menu .monaco-action-bar.vertical .action-label.separator { + display: block; + border-bottom: 1px solid var(--vscode-menu-separatorBackground); + padding-top: 1px; + padding: 30px; +} + +.monaco-menu .secondary-actions .monaco-action-bar .action-label { + margin-left: 6px; +} + +/* Action Items */ +.monaco-menu .monaco-action-bar .action-item.select-container { + overflow: hidden; /* somehow the dropdown overflows its container, we prevent it here to not push */ + flex: 1; + max-width: 170px; + min-width: 60px; + display: flex; + align-items: center; + justify-content: center; + margin-right: 10px; +} + +.monaco-menu .monaco-action-bar.vertical { + margin-left: 0; + overflow: visible; +} + +.monaco-menu .monaco-action-bar.vertical .actions-container { + display: block; +} + +.monaco-menu .monaco-action-bar.vertical .action-item { + padding: 0; + transform: none; + display: flex; +} + +.monaco-menu .monaco-action-bar.vertical .action-item.active { + transform: none; +} + +.monaco-menu .monaco-action-bar.vertical .action-menu-item { + flex: 1 1 auto; + display: flex; + height: 2em; + align-items: center; + position: relative; + margin: 0 4px; + border-radius: 4px; +} + +.monaco-menu .monaco-action-bar.vertical .action-menu-item:hover .keybinding, +.monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .keybinding { + opacity: unset; +} + +.monaco-menu .monaco-action-bar.vertical .action-label { + flex: 1 1 auto; + text-decoration: none; + padding: 0 1em; + background: none; + font-size: 12px; + line-height: 1; +} + +.monaco-menu .monaco-action-bar.vertical .keybinding, +.monaco-menu .monaco-action-bar.vertical .submenu-indicator { + display: inline-block; + flex: 2 1 auto; + padding: 0 1em; + text-align: right; + font-size: 12px; + line-height: 1; +} + +.monaco-menu .monaco-action-bar.vertical .submenu-indicator { + height: 100%; +} + +.monaco-menu .monaco-action-bar.vertical .submenu-indicator.codicon { + font-size: 16px !important; + display: flex; + align-items: center; +} + +.monaco-menu .monaco-action-bar.vertical .submenu-indicator.codicon::before { + margin-left: auto; + margin-right: -20px; +} + +.monaco-menu .monaco-action-bar.vertical .action-item.disabled .keybinding, +.monaco-menu .monaco-action-bar.vertical .action-item.disabled .submenu-indicator { + opacity: 0.4; +} + +.monaco-menu .monaco-action-bar.vertical .action-label:not(.separator) { + display: inline-block; + box-sizing: border-box; + margin: 0; +} + +.monaco-menu .monaco-action-bar.vertical .action-item { + position: static; + overflow: visible; +} + +.monaco-menu .monaco-action-bar.vertical .action-item .monaco-submenu { + position: absolute; +} + +.monaco-menu .monaco-action-bar.vertical .action-label.separator { + width: 100%; + height: 0px !important; + opacity: 1; +} + +.monaco-menu .monaco-action-bar.vertical .action-label.separator.text { + padding: 0.7em 1em 0.1em 1em; + font-weight: bold; + opacity: 1; +} + +.monaco-menu .monaco-action-bar.vertical .action-label:hover { + color: inherit; +} + +.monaco-menu .monaco-action-bar.vertical .menu-item-check { + position: absolute; + visibility: hidden; + width: 1em; + height: 100%; +} + +.monaco-menu .monaco-action-bar.vertical .action-menu-item.checked .menu-item-check { + visibility: visible; + display: flex; + align-items: center; + justify-content: center; +} + +/* Context Menu */ + +.context-view.monaco-menu-container { + outline: 0; + border: none; + animation: fadeIn 0.083s linear; + -webkit-app-region: no-drag; +} + +.context-view.monaco-menu-container :focus, +.context-view.monaco-menu-container .monaco-action-bar.vertical:focus, +.context-view.monaco-menu-container .monaco-action-bar.vertical :focus { + outline: 0; +} + +.hc-black .context-view.monaco-menu-container, +.hc-light .context-view.monaco-menu-container, +:host-context(.hc-black) .context-view.monaco-menu-container, +:host-context(.hc-light) .context-view.monaco-menu-container { + box-shadow: none; +} + +.hc-black .monaco-menu .monaco-action-bar.vertical .action-item.focused, +.hc-light .monaco-menu .monaco-action-bar.vertical .action-item.focused, +:host-context(.hc-black) .monaco-menu .monaco-action-bar.vertical .action-item.focused, +:host-context(.hc-light) .monaco-menu .monaco-action-bar.vertical .action-item.focused { + background: none; +} + +/* Vertical Action Bar Styles */ + +.monaco-menu .monaco-action-bar.vertical { + padding: 4px 0; +} + +.monaco-menu .monaco-action-bar.vertical .action-menu-item { + height: 2em; +} + +.monaco-menu .monaco-action-bar.vertical .action-label:not(.separator), +.monaco-menu .monaco-action-bar.vertical .keybinding { + font-size: inherit; + padding: 0 2em; +} + +.monaco-menu .monaco-action-bar.vertical .menu-item-check { + font-size: inherit; + width: 2em; +} + +.monaco-menu .monaco-action-bar.vertical .action-label.separator { + font-size: inherit; + margin: 5px 0 !important; + padding: 0; + border-radius: 0; +} + +.linux .monaco-menu .monaco-action-bar.vertical .action-label.separator, +:host-context(.linux) .monaco-menu .monaco-action-bar.vertical .action-label.separator { + margin-left: 0; + margin-right: 0; +} + +.monaco-menu .monaco-action-bar.vertical .submenu-indicator { + font-size: 60%; + padding: 0 1.8em; +} + +.linux .monaco-menu .monaco-action-bar.vertical .submenu-indicator, +:host-context(.linux) .monaco-menu .monaco-action-bar.vertical .submenu-indicator { + height: 100%; + mask-size: 10px 10px; + -webkit-mask-size: 10px 10px; +} + +.monaco-menu .action-item { + cursor: default; +}`;if(e){t+=` + /* Arrows */ + .monaco-scrollable-element > .scrollbar > .scra { + cursor: pointer; + font-size: 11px !important; + } + + .monaco-scrollable-element > .visible { + opacity: 1; + + /* Background rule added for IE9 - to allow clicks on dom node */ + background:rgba(0,0,0,0); + + transition: opacity 100ms linear; + } + .monaco-scrollable-element > .invisible { + opacity: 0; + pointer-events: none; + } + .monaco-scrollable-element > .invisible.fade { + transition: opacity 800ms linear; + } + + /* Scrollable Content Inset Shadow */ + .monaco-scrollable-element > .shadow { + position: absolute; + display: none; + } + .monaco-scrollable-element > .shadow.top { + display: block; + top: 0; + left: 3px; + height: 3px; + width: 100%; + } + .monaco-scrollable-element > .shadow.left { + display: block; + top: 3px; + left: 0; + height: 100%; + width: 3px; + } + .monaco-scrollable-element > .shadow.top-left-corner { + display: block; + top: 0; + left: 0; + height: 3px; + width: 3px; + } + `;const i=n.scrollbarShadow;i&&(t+=` + .monaco-scrollable-element > .shadow.top { + box-shadow: ${i} 0 6px 6px -6px inset; + } + + .monaco-scrollable-element > .shadow.left { + box-shadow: ${i} 6px 0 6px -6px inset; + } + + .monaco-scrollable-element > .shadow.top.left { + box-shadow: ${i} 6px 6px 6px -6px inset; + } + `);const s=n.scrollbarSliderBackground;s&&(t+=` + .monaco-scrollable-element > .scrollbar > .slider { + background: ${s}; + } + `);const r=n.scrollbarSliderHoverBackground;r&&(t+=` + .monaco-scrollable-element > .scrollbar > .slider:hover { + background: ${r}; + } + `);const o=n.scrollbarSliderActiveBackground;o&&(t+=` + .monaco-scrollable-element > .scrollbar > .slider.active { + background: ${o}; + } + `)}return t}class Iut{constructor(e,t,i,s){this.contextViewService=e,this.telemetryService=t,this.notificationService=i,this.keybindingService=s,this.focusToReturn=null,this.lastContainer=null,this.block=null,this.blockDisposable=null,this.options={blockMouse:!0}}configure(e){this.options=e}showContextMenu(e){const t=e.getActions();if(!t.length)return;this.focusToReturn=Ka();let i;const s=e.domForShadowRoot instanceof HTMLElement?e.domForShadowRoot:void 0;this.contextViewService.showContextView({getAnchor:()=>e.getAnchor(),canRelayout:!1,anchorAlignment:e.anchorAlignment,anchorAxisAlignment:e.anchorAxisAlignment,render:r=>{var o;this.lastContainer=r;const a=e.getMenuClassName?e.getMenuClassName():"";a&&(r.className+=" "+a),this.options.blockMouse&&(this.block=r.appendChild(Te(".context-view-block")),this.block.style.position="fixed",this.block.style.cursor="initial",this.block.style.left="0",this.block.style.top="0",this.block.style.width="100%",this.block.style.height="100%",this.block.style.zIndex="-1",(o=this.blockDisposable)===null||o===void 0||o.dispose(),this.blockDisposable=Ce(this.block,We.MOUSE_DOWN,h=>h.stopPropagation()));const l=new xe,c=e.actionRunner||new R_;c.onWillRun(h=>this.onActionRun(h,!e.skipTelemetry),this,l),c.onDidRun(this.onDidActionRun,this,l),i=new Vb(r,t,{actionViewItemProvider:e.getActionViewItem,context:e.getActionsContext?e.getActionsContext():null,actionRunner:c,getKeyBinding:e.getKeyBinding?e.getKeyBinding:h=>this.keybindingService.lookupKeybinding(h.id)},eQe),i.onDidCancel(()=>this.contextViewService.hideContextView(!0),null,l),i.onDidBlur(()=>this.contextViewService.hideContextView(!0),null,l);const u=pt(r);return l.add(Ce(u,We.BLUR,()=>this.contextViewService.hideContextView(!0))),l.add(Ce(u,We.MOUSE_DOWN,h=>{if(h.defaultPrevented)return;const d=new ac(u,h);let f=d.target;if(!d.rightButton){for(;f;){if(f===r)return;f=f.parentElement}this.contextViewService.hideContextView(!0)}})),_c(l,i)},focus:()=>{i==null||i.focus(!!e.autoSelectFirstItem)},onHide:r=>{var o,a,l;(o=e.onHide)===null||o===void 0||o.call(e,!!r),this.block&&(this.block.remove(),this.block=null),(a=this.blockDisposable)===null||a===void 0||a.dispose(),this.blockDisposable=null,this.lastContainer&&(Ka()===this.lastContainer||pr(Ka(),this.lastContainer))&&((l=this.focusToReturn)===null||l===void 0||l.focus()),this.lastContainer=null}},s,!!s)}onActionRun(e,t){t&&this.telemetryService.publicLog2("workbenchActionExecuted",{id:e.action.id,from:"contextMenu"}),this.contextViewService.hideContextView(!1)}onDidActionRun(e){e.error&&!Wu(e.error)&&this.notificationService.error(e.error)}}var Tut=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},p0=function(n,e){return function(t,i){e(t,i,n)}};let CH=class extends pe{get contextMenuHandler(){return this._contextMenuHandler||(this._contextMenuHandler=new Iut(this.contextViewService,this.telemetryService,this.notificationService,this.keybindingService)),this._contextMenuHandler}constructor(e,t,i,s,r,o){super(),this.telemetryService=e,this.notificationService=t,this.contextViewService=i,this.keybindingService=s,this.menuService=r,this.contextKeyService=o,this._contextMenuHandler=void 0,this._onDidShowContextMenu=this._store.add(new ue),this._onDidHideContextMenu=this._store.add(new ue)}configure(e){this.contextMenuHandler.configure(e)}showContextMenu(e){e=wH.transform(e,this.menuService,this.contextKeyService),this.contextMenuHandler.showContextMenu({...e,onHide:t=>{var i;(i=e.onHide)===null||i===void 0||i.call(e,t),this._onDidHideContextMenu.fire()}}),Cf.getInstance().resetKeyStatus(),this._onDidShowContextMenu.fire()}};CH=Tut([p0(0,fa),p0(1,is),p0(2,lg),p0(3,Di),p0(4,Vu),p0(5,ft)],CH);var wH;(function(n){function e(i){return i&&i.menuId instanceof B}function t(i,s,r){if(!e(i))return i;const{menuId:o,menuActionOptions:a,contextKeyService:l}=i;return{...i,getActions:()=>{const c=[];if(o){const u=s.createMenu(o,l??r);NJe(u,a,c),u.dispose()}return i.getActions?js.join(i.getActions(),c):c}}}n.transform=t})(wH||(wH={}));var SR;(function(n){n[n.API=0]="API",n[n.USER=1]="USER"})(SR||(SR={}));var HG=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},kR=function(n,e){return function(t,i){e(t,i,n)}};let SH=class{constructor(e){this._commandService=e}async open(e,t){if(!Uj(e,wt.command))return!1;if(!(t!=null&&t.allowCommands)||(typeof e=="string"&&(e=it.parse(e)),Array.isArray(t.allowCommands)&&!t.allowCommands.includes(e.path)))return!0;let i=[];try{i=Q9(decodeURIComponent(e.query))}catch{try{i=Q9(e.query)}catch{}}return Array.isArray(i)||(i=[i]),await this._commandService.executeCommand(e.path,...i),!0}};SH=HG([kR(0,Dn)],SH);let kH=class{constructor(e){this._editorService=e}async open(e,t){typeof e=="string"&&(e=it.parse(e));const{selection:i,uri:s}=BXe(e);return e=s,e.scheme===wt.file&&(e=kje(e)),await this._editorService.openCodeEditor({resource:e,options:{selection:i,source:t!=null&&t.fromUserGesture?SR.USER:SR.API,...t==null?void 0:t.editorOptions}},this._editorService.getFocusedCodeEditor(),t==null?void 0:t.openToSide),!0}};kH=HG([kR(0,ri)],kH);let LH=class{constructor(e,t){this._openers=new oo,this._validators=new oo,this._resolvers=new oo,this._resolvedUriTargets=new qn(i=>i.with({path:null,fragment:null,query:null}).toString()),this._externalOpeners=new oo,this._defaultExternalOpener={openExternal:async i=>(wJ(i,wt.http,wt.https)?Ege(i):mn.location.href=i,!0)},this._openers.push({open:async(i,s)=>s!=null&&s.openExternal||wJ(i,wt.mailto,wt.http,wt.https,wt.vsls)?(await this._doOpenExternal(i,s),!0):!1}),this._openers.push(new SH(t)),this._openers.push(new kH(e))}registerOpener(e){return{dispose:this._openers.unshift(e)}}async open(e,t){var i;const s=typeof e=="string"?it.parse(e):e,r=(i=this._resolvedUriTargets.get(s))!==null&&i!==void 0?i:e;for(const o of this._validators)if(!await o.shouldOpen(r,t))return!1;for(const o of this._openers)if(await o.open(e,t))return!0;return!1}async resolveExternalUri(e,t){for(const i of this._resolvers)try{const s=await i.resolveExternalUri(e,t);if(s)return this._resolvedUriTargets.has(s.resolved)||this._resolvedUriTargets.set(s.resolved,e),s}catch{}throw new Error("Could not resolve external URI: "+e.toString())}async _doOpenExternal(e,t){const i=typeof e=="string"?it.parse(e):e;let s;try{s=(await this.resolveExternalUri(i,t)).resolved}catch{s=i}let r;if(typeof e=="string"&&i.toString()===s.toString()?r=e:r=encodeURI(s.toString(!0)),t!=null&&t.allowContributedOpeners){const o=typeof(t==null?void 0:t.allowContributedOpeners)=="string"?t==null?void 0:t.allowContributedOpeners:void 0;for(const a of this._externalOpeners)if(await a.openExternal(r,{sourceUri:i,preferredOpenerId:o},Ft.None))return!0}return this._defaultExternalOpener.openExternal(r,{sourceUri:i},Ft.None)}dispose(){this._validators.clear()}};LH=HG([kR(0,ri),kR(1,Dn)],LH);var Nut=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},Rse=function(n,e){return function(t,i){e(t,i,n)}};let xH=class extends pe{constructor(e,t){super(),this._markerService=t,this._onDidChangeMarker=this._register(new ue),this._markerDecorations=new qn,e.getModels().forEach(i=>this._onModelAdded(i)),this._register(e.onModelAdded(this._onModelAdded,this)),this._register(e.onModelRemoved(this._onModelRemoved,this)),this._register(this._markerService.onMarkerChanged(this._handleMarkerChange,this))}dispose(){super.dispose(),this._markerDecorations.forEach(e=>e.dispose()),this._markerDecorations.clear()}getMarker(e,t){const i=this._markerDecorations.get(e);return i&&i.getMarker(t)||null}_handleMarkerChange(e){e.forEach(t=>{const i=this._markerDecorations.get(t);i&&this._updateDecorations(i)})}_onModelAdded(e){const t=new Aut(e);this._markerDecorations.set(e.uri,t),this._updateDecorations(t)}_onModelRemoved(e){var t;const i=this._markerDecorations.get(e.uri);i&&(i.dispose(),this._markerDecorations.delete(e.uri)),(e.uri.scheme===wt.inMemory||e.uri.scheme===wt.internal||e.uri.scheme===wt.vscode)&&((t=this._markerService)===null||t===void 0||t.read({resource:e.uri}).map(s=>s.owner).forEach(s=>this._markerService.remove(s,[e.uri])))}_updateDecorations(e){const t=this._markerService.read({resource:e.model.uri,take:500});e.update(t)&&this._onDidChangeMarker.fire(e.model)}};xH=Nut([Rse(0,fn),Rse(1,Id)],xH);class Aut extends pe{constructor(e){super(),this.model=e,this._map=new eGe,this._register(st(()=>{this.model.deltaDecorations([...this._map.values()],[]),this._map.clear()}))}update(e){const{added:t,removed:i}=Itt(new Set(this._map.keys()),new Set(e));if(t.length===0&&i.length===0)return!1;const s=i.map(a=>this._map.get(a)),r=t.map(a=>({range:this._createDecorationRange(this.model,a),options:this._createDecorationOption(a)})),o=this.model.deltaDecorations(s,r);for(const a of i)this._map.delete(a);for(let a=0;a<o.length;a++)this._map.set(t[a],o[a]);return!0}getMarker(e){return this._map.getKey(e.id)}_createDecorationRange(e,t){let i=M.lift(t);if(t.severity===xn.Hint&&!this._hasMarkerTag(t,1)&&!this._hasMarkerTag(t,2)&&(i=i.setEndPosition(i.startLineNumber,i.startColumn+2)),i=e.validateRange(i),i.isEmpty()){const s=e.getLineLastNonWhitespaceColumn(i.startLineNumber)||e.getLineMaxColumn(i.startLineNumber);if(s===1||i.endColumn>=s)return i;const r=e.getWordAtPosition(i.getStartPosition());r&&(i=new M(i.startLineNumber,r.startColumn,i.endLineNumber,r.endColumn))}else if(t.endColumn===Number.MAX_VALUE&&t.startColumn===1&&i.startLineNumber===i.endLineNumber){const s=e.getLineFirstNonWhitespaceColumn(t.startLineNumber);s<i.endColumn&&(i=new M(i.startLineNumber,s,i.endLineNumber,i.endColumn),t.startColumn=s)}return i}_createDecorationOption(e){let t,i,s,r,o;switch(e.severity){case xn.Hint:this._hasMarkerTag(e,2)?t=void 0:this._hasMarkerTag(e,1)?t="squiggly-unnecessary":t="squiggly-hint",s=0;break;case xn.Info:t="squiggly-info",i=Sn(_ze),s=10,o={color:Sn(UHe),position:sa.Inline};break;case xn.Warning:t="squiggly-warning",i=Sn(mze),s=20,o={color:Sn(jHe),position:sa.Inline};break;case xn.Error:default:t="squiggly-error",i=Sn(pze),s=30,o={color:Sn(qHe),position:sa.Inline};break}return e.tags&&(e.tags.indexOf(1)!==-1&&(r="squiggly-inline-unnecessary"),e.tags.indexOf(2)!==-1&&(r="squiggly-inline-deprecated")),{description:"marker-decoration",stickiness:1,className:t,showIfCollapsed:!0,overviewRuler:{color:i,position:el.Right},minimap:o,zIndex:s,inlineClassName:r}}_hasMarkerTag(e,t){return e.tags?e.tags.indexOf(t)>=0:!1}}var Put=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},Yw=function(n,e){return function(t,i){e(t,i,n)}},I0;function n1(n){return n.toString()}class Rut{constructor(e,t,i){this.model=e,this._modelEventListeners=new xe,this.model=e,this._modelEventListeners.add(e.onWillDispose(()=>t(e))),this._modelEventListeners.add(e.onDidChangeLanguage(s=>i(e,s)))}dispose(){this._modelEventListeners.dispose()}}const Mut=Kr||Gt?1:2;class Out{constructor(e,t,i,s,r,o,a,l){this.uri=e,this.initialUndoRedoSnapshot=t,this.time=i,this.sharesUndoRedoStack=s,this.heapSize=r,this.sha1=o,this.versionId=a,this.alternativeVersionId=l}}let LR=I0=class extends pe{constructor(e,t,i,s,r){super(),this._configurationService=e,this._resourcePropertiesService=t,this._undoRedoService=i,this._languageService=s,this._languageConfigurationService=r,this._onModelAdded=this._register(new ue),this.onModelAdded=this._onModelAdded.event,this._onModelRemoved=this._register(new ue),this.onModelRemoved=this._onModelRemoved.event,this._onModelModeChanged=this._register(new ue),this.onModelLanguageChanged=this._onModelModeChanged.event,this._modelCreationOptionsByLanguageAndResource=Object.create(null),this._models={},this._disposedModels=new Map,this._disposedModelsHeapSize=0,this._register(this._configurationService.onDidChangeConfiguration(o=>this._updateModelOptions(o))),this._updateModelOptions(void 0)}static _readModelOptions(e,t){var i;let s=Lr.tabSize;if(e.editor&&typeof e.editor.tabSize<"u"){const f=parseInt(e.editor.tabSize,10);isNaN(f)||(s=f),s<1&&(s=1)}let r="tabSize";if(e.editor&&typeof e.editor.indentSize<"u"&&e.editor.indentSize!=="tabSize"){const f=parseInt(e.editor.indentSize,10);isNaN(f)||(r=Math.max(f,1))}let o=Lr.insertSpaces;e.editor&&typeof e.editor.insertSpaces<"u"&&(o=e.editor.insertSpaces==="false"?!1:!!e.editor.insertSpaces);let a=Mut;const l=e.eol;l===`\r +`?a=2:l===` +`&&(a=1);let c=Lr.trimAutoWhitespace;e.editor&&typeof e.editor.trimAutoWhitespace<"u"&&(c=e.editor.trimAutoWhitespace==="false"?!1:!!e.editor.trimAutoWhitespace);let u=Lr.detectIndentation;e.editor&&typeof e.editor.detectIndentation<"u"&&(u=e.editor.detectIndentation==="false"?!1:!!e.editor.detectIndentation);let h=Lr.largeFileOptimizations;e.editor&&typeof e.editor.largeFileOptimizations<"u"&&(h=e.editor.largeFileOptimizations==="false"?!1:!!e.editor.largeFileOptimizations);let d=Lr.bracketPairColorizationOptions;return!((i=e.editor)===null||i===void 0)&&i.bracketPairColorization&&typeof e.editor.bracketPairColorization=="object"&&(d={enabled:!!e.editor.bracketPairColorization.enabled,independentColorPoolPerBracketType:!!e.editor.bracketPairColorization.independentColorPoolPerBracketType}),{isForSimpleWidget:t,tabSize:s,indentSize:r,insertSpaces:o,detectIndentation:u,defaultEOL:a,trimAutoWhitespace:c,largeFileOptimizations:h,bracketPairColorizationOptions:d}}_getEOL(e,t){if(e)return this._resourcePropertiesService.getEOL(e,t);const i=this._configurationService.getValue("files.eol",{overrideIdentifier:t});return i&&typeof i=="string"&&i!=="auto"?i:Ha===3||Ha===2?` +`:`\r +`}_shouldRestoreUndoStack(){const e=this._configurationService.getValue("files.restoreUndoStack");return typeof e=="boolean"?e:!0}getCreationOptions(e,t,i){const s=typeof e=="string"?e:e.languageId;let r=this._modelCreationOptionsByLanguageAndResource[s+t];if(!r){const o=this._configurationService.getValue("editor",{overrideIdentifier:s,resource:t}),a=this._getEOL(t,s);r=I0._readModelOptions({editor:o,eol:a},i),this._modelCreationOptionsByLanguageAndResource[s+t]=r}return r}_updateModelOptions(e){const t=this._modelCreationOptionsByLanguageAndResource;this._modelCreationOptionsByLanguageAndResource=Object.create(null);const i=Object.keys(this._models);for(let s=0,r=i.length;s<r;s++){const o=i[s],a=this._models[o],l=a.model.getLanguageId(),c=a.model.uri;if(e&&!e.affectsConfiguration("editor",{overrideIdentifier:l,resource:c})&&!e.affectsConfiguration("files.eol",{overrideIdentifier:l,resource:c}))continue;const u=t[l+c],h=this.getCreationOptions(l,c,a.model.isForSimpleWidget);I0._setModelOptionsForModel(a.model,h,u)}}static _setModelOptionsForModel(e,t,i){i&&i.defaultEOL!==t.defaultEOL&&e.getLineCount()===1&&e.setEOL(t.defaultEOL===1?0:1),!(i&&i.detectIndentation===t.detectIndentation&&i.insertSpaces===t.insertSpaces&&i.tabSize===t.tabSize&&i.indentSize===t.indentSize&&i.trimAutoWhitespace===t.trimAutoWhitespace&&Ya(i.bracketPairColorizationOptions,t.bracketPairColorizationOptions))&&(t.detectIndentation?(e.detectIndentation(t.insertSpaces,t.tabSize),e.updateOptions({trimAutoWhitespace:t.trimAutoWhitespace,bracketColorizationOptions:t.bracketPairColorizationOptions})):e.updateOptions({insertSpaces:t.insertSpaces,tabSize:t.tabSize,indentSize:t.indentSize,trimAutoWhitespace:t.trimAutoWhitespace,bracketColorizationOptions:t.bracketPairColorizationOptions}))}_insertDisposedModel(e){this._disposedModels.set(n1(e.uri),e),this._disposedModelsHeapSize+=e.heapSize}_removeDisposedModel(e){const t=this._disposedModels.get(n1(e));return t&&(this._disposedModelsHeapSize-=t.heapSize),this._disposedModels.delete(n1(e)),t}_ensureDisposedModelsHeapSize(e){if(this._disposedModelsHeapSize>e){const t=[];for(this._disposedModels.forEach(i=>{i.sharesUndoRedoStack||t.push(i)}),t.sort((i,s)=>i.time-s.time);t.length>0&&this._disposedModelsHeapSize>e;){const i=t.shift();this._removeDisposedModel(i.uri),i.initialUndoRedoSnapshot!==null&&this._undoRedoService.restoreSnapshot(i.initialUndoRedoSnapshot)}}}_createModelData(e,t,i,s){const r=this.getCreationOptions(t,i,s),o=new _d(e,t,r,i,this._undoRedoService,this._languageService,this._languageConfigurationService);if(i&&this._disposedModels.has(n1(i))){const c=this._removeDisposedModel(i),u=this._undoRedoService.getElements(i),h=this._getSHA1Computer(),d=h.canComputeSHA1(o)?h.computeSHA1(o)===c.sha1:!1;if(d||c.sharesUndoRedoStack){for(const f of u.past)nf(f)&&f.matchesResource(i)&&f.setModel(o);for(const f of u.future)nf(f)&&f.matchesResource(i)&&f.setModel(o);this._undoRedoService.setElementsValidFlag(i,!0,f=>nf(f)&&f.matchesResource(i)),d&&(o._overwriteVersionId(c.versionId),o._overwriteAlternativeVersionId(c.alternativeVersionId),o._overwriteInitialUndoRedoSnapshot(c.initialUndoRedoSnapshot))}else c.initialUndoRedoSnapshot!==null&&this._undoRedoService.restoreSnapshot(c.initialUndoRedoSnapshot)}const a=n1(o.uri);if(this._models[a])throw new Error("ModelService: Cannot add model because it already exists!");const l=new Rut(o,c=>this._onWillDispose(c),(c,u)=>this._onDidChangeLanguage(c,u));return this._models[a]=l,l}createModel(e,t,i,s=!1){let r;return t?r=this._createModelData(e,t,i,s):r=this._createModelData(e,Ga,i,s),this._onModelAdded.fire(r.model),r.model}getModels(){const e=[],t=Object.keys(this._models);for(let i=0,s=t.length;i<s;i++){const r=t[i];e.push(this._models[r].model)}return e}getModel(e){const t=n1(e),i=this._models[t];return i?i.model:null}_schemaShouldMaintainUndoRedoElements(e){return e.scheme===wt.file||e.scheme===wt.vscodeRemote||e.scheme===wt.vscodeUserData||e.scheme===wt.vscodeNotebookCell||e.scheme==="fake-fs"}_onWillDispose(e){const t=n1(e.uri),i=this._models[t],s=this._undoRedoService.getUriComparisonKey(e.uri)!==e.uri.toString();let r=!1,o=0;if(s||this._shouldRestoreUndoStack()&&this._schemaShouldMaintainUndoRedoElements(e.uri)){const c=this._undoRedoService.getElements(e.uri);if(c.past.length>0||c.future.length>0){for(const u of c.past)nf(u)&&u.matchesResource(e.uri)&&(r=!0,o+=u.heapSize(e.uri),u.setModel(e.uri));for(const u of c.future)nf(u)&&u.matchesResource(e.uri)&&(r=!0,o+=u.heapSize(e.uri),u.setModel(e.uri))}}const a=I0.MAX_MEMORY_FOR_CLOSED_FILES_UNDO_STACK,l=this._getSHA1Computer();if(r)if(!s&&(o>a||!l.canComputeSHA1(e))){const c=i.model.getInitialUndoRedoSnapshot();c!==null&&this._undoRedoService.restoreSnapshot(c)}else this._ensureDisposedModelsHeapSize(a-o),this._undoRedoService.setElementsValidFlag(e.uri,!1,c=>nf(c)&&c.matchesResource(e.uri)),this._insertDisposedModel(new Out(e.uri,i.model.getInitialUndoRedoSnapshot(),Date.now(),s,o,l.computeSHA1(e),e.getVersionId(),e.getAlternativeVersionId()));else if(!s){const c=i.model.getInitialUndoRedoSnapshot();c!==null&&this._undoRedoService.restoreSnapshot(c)}delete this._models[t],i.dispose(),delete this._modelCreationOptionsByLanguageAndResource[e.getLanguageId()+e.uri],this._onModelRemoved.fire(e)}_onDidChangeLanguage(e,t){const i=t.oldLanguage,s=e.getLanguageId(),r=this.getCreationOptions(i,e.uri,e.isForSimpleWidget),o=this.getCreationOptions(s,e.uri,e.isForSimpleWidget);I0._setModelOptionsForModel(e,o,r),this._onModelModeChanged.fire({model:e,oldLanguageId:i})}_getSHA1Computer(){return new gF}};LR.MAX_MEMORY_FOR_CLOSED_FILES_UNDO_STACK=20*1024*1024;LR=I0=Put([Yw(0,Ut),Yw(1,z1e),Yw(2,YO),Yw(3,sn),Yw(4,Bi)],LR);class gF{canComputeSHA1(e){return e.getValueLength()<=gF.MAX_MODEL_SIZE}computeSHA1(e){const t=new hO,i=e.createSnapshot();let s;for(;s=i.read();)t.update(s);return t.digest()}}gF.MAX_MODEL_SIZE=10*1024*1024;var Fut=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},Mse=function(n,e){return function(t,i){e(t,i,n)}};let EH=class extends pe{constructor(e,t){super(),this.quickInputService=e,this.instantiationService=t,this.registry=vn.as(Wv.Quickaccess),this.mapProviderToDescriptor=new Map,this.lastAcceptedPickerValues=new Map,this.visibleQuickAccess=void 0}show(e="",t){this.doShowOrPick(e,!1,t)}doShowOrPick(e,t,i){var s;const[r,o]=this.getOrInstantiateProvider(e),a=this.visibleQuickAccess,l=a==null?void 0:a.descriptor;if(a&&o&&l===o){e!==o.prefix&&!(i!=null&&i.preserveValue)&&(a.picker.value=e),this.adjustValueSelection(a.picker,o,i);return}if(o&&!(i!=null&&i.preserveValue)){let f;if(a&&l&&l!==o){const g=a.value.substr(l.prefix.length);g&&(f=`${o.prefix}${g}`)}if(!f){const g=r==null?void 0:r.defaultFilterValue;g===lH.LAST?f=this.lastAcceptedPickerValues.get(o):typeof g=="string"&&(f=`${o.prefix}${g}`)}typeof f=="string"&&(e=f)}const c=new xe,u=c.add(this.quickInputService.createQuickPick());u.value=e,this.adjustValueSelection(u,o,i),u.placeholder=o==null?void 0:o.placeholder,u.quickNavigate=i==null?void 0:i.quickNavigateConfiguration,u.hideInput=!!u.quickNavigate&&!a,(typeof(i==null?void 0:i.itemActivation)=="number"||i!=null&&i.quickNavigateConfiguration)&&(u.itemActivation=(s=i==null?void 0:i.itemActivation)!==null&&s!==void 0?s:Qc.SECOND),u.contextKey=o==null?void 0:o.contextKey,u.filterValue=f=>f.substring(o?o.prefix.length:0);let h;t&&(h=new cO,c.add(Ve.once(u.onWillAccept)(f=>{f.veto(),u.hide()}))),c.add(this.registerPickerListeners(u,r,o,e,i==null?void 0:i.providerOptions));const d=c.add(new es);if(r&&c.add(r.provide(u,d.token,i==null?void 0:i.providerOptions)),Ve.once(u.onDidHide)(()=>{u.selectedItems.length===0&&d.cancel(),c.dispose(),h==null||h.complete(u.selectedItems.slice(0))}),u.show(),t)return h==null?void 0:h.p}adjustValueSelection(e,t,i){var s;let r;i!=null&&i.preserveValue?r=[e.value.length,e.value.length]:r=[(s=t==null?void 0:t.prefix.length)!==null&&s!==void 0?s:0,e.value.length],e.valueSelection=r}registerPickerListeners(e,t,i,s,r){const o=new xe,a=this.visibleQuickAccess={picker:e,descriptor:i,value:s};return o.add(st(()=>{a===this.visibleQuickAccess&&(this.visibleQuickAccess=void 0)})),o.add(e.onDidChangeValue(l=>{const[c]=this.getOrInstantiateProvider(l);c!==t?this.show(l,{preserveValue:!0,providerOptions:r}):a.value=l})),i&&o.add(e.onDidAccept(()=>{this.lastAcceptedPickerValues.set(i,e.value)})),o}getOrInstantiateProvider(e){const t=this.registry.getQuickAccessProvider(e);if(!t)return[void 0,void 0];let i=this.mapProviderToDescriptor.get(t);return i||(i=this.instantiationService.createInstance(t.ctor),this.mapProviderToDescriptor.set(t,i)),[i,t]}};EH=Fut([Mse(0,Uu),Mse(1,at)],EH);const Ose="done",Fse="active",c6="infinite",u6="infinite-long-running",Bse="discrete";class pF extends pe{constructor(e,t){super(),this.workedVal=0,this.showDelayedScheduler=this._register(new Ei(()=>Xo(this.element),0)),this.longRunningScheduler=this._register(new Ei(()=>this.infiniteLongRunning(),pF.LONG_RUNNING_INFINITE_THRESHOLD)),this.create(e,t)}create(e,t){this.element=document.createElement("div"),this.element.classList.add("monaco-progress-container"),this.element.setAttribute("role","progressbar"),this.element.setAttribute("aria-valuemin","0"),e.appendChild(this.element),this.bit=document.createElement("div"),this.bit.classList.add("progress-bit"),this.bit.style.backgroundColor=(t==null?void 0:t.progressBarBackground)||"#0E70C0",this.element.appendChild(this.bit)}off(){this.bit.style.width="inherit",this.bit.style.opacity="1",this.element.classList.remove(Fse,c6,u6,Bse),this.workedVal=0,this.totalWork=void 0,this.longRunningScheduler.cancel()}stop(){return this.doDone(!1)}doDone(e){return this.element.classList.add(Ose),this.element.classList.contains(c6)?(this.bit.style.opacity="0",e?setTimeout(()=>this.off(),200):this.off()):(this.bit.style.width="inherit",e?setTimeout(()=>this.off(),200):this.off()),this}infinite(){return this.bit.style.width="2%",this.bit.style.opacity="1",this.element.classList.remove(Bse,Ose,u6),this.element.classList.add(Fse,c6),this.longRunningScheduler.schedule(),this}infiniteLongRunning(){this.element.classList.add(u6)}getContainer(){return this.element}}pF.LONG_RUNNING_INFINITE_THRESHOLD=1e4;const But=Te;class Wut extends pe{constructor(e,t,i){super(),this.parent=e,this.onKeyDown=r=>Mn(this.findInput.inputBox.inputElement,We.KEY_DOWN,r),this.onMouseDown=r=>Mn(this.findInput.inputBox.inputElement,We.MOUSE_DOWN,r),this.onDidChange=r=>this.findInput.onDidChange(r),this.container=Le(this.parent,But(".quick-input-box")),this.findInput=this._register(new g_e(this.container,void 0,{label:"",inputBoxStyles:t,toggleStyles:i}));const s=this.findInput.inputBox.inputElement;s.role="combobox",s.ariaHasPopup="menu",s.ariaAutoComplete="list",s.ariaExpanded="true"}get value(){return this.findInput.getValue()}set value(e){this.findInput.setValue(e)}select(e=null){this.findInput.inputBox.select(e)}isSelectionAtEnd(){return this.findInput.inputBox.isSelectionAtEnd()}get placeholder(){return this.findInput.inputBox.inputElement.getAttribute("placeholder")||""}set placeholder(e){this.findInput.inputBox.setPlaceHolder(e)}get password(){return this.findInput.inputBox.inputElement.type==="password"}set password(e){this.findInput.inputBox.inputElement.type=e?"password":"text"}set enabled(e){this.findInput.inputBox.inputElement.toggleAttribute("readonly",!e)}set toggles(e){this.findInput.setAdditionalToggles(e)}setAttribute(e,t){this.findInput.inputBox.inputElement.setAttribute(e,t)}showDecoration(e){e===zn.Ignore?this.findInput.clearMessage():this.findInput.showMessage({type:e===zn.Info?1:e===zn.Warning?2:3,content:""})}stylesForType(e){return this.findInput.inputBox.stylesForType(e===zn.Info?1:e===zn.Warning?2:3)}setFocus(){this.findInput.focus()}layout(){this.findInput.inputBox.layout()}}const Wse=new Im(()=>{const n=new Intl.Collator(void 0,{numeric:!0,sensitivity:"base"});return{collator:n,collatorIsNumeric:n.resolvedOptions().numeric}});function Vut(n,e,t=!1){const i=n||"",s=e||"",r=Wse.value.collator.compare(i,s);return Wse.value.collatorIsNumeric&&r===0&&i!==s?i<s?-1:1:r}function Hut(n,e,t){const i=n.toLowerCase(),s=e.toLowerCase(),r=$ut(n,e,t);if(r)return r;const o=i.endsWith(t),a=s.endsWith(t);if(o!==a)return o?-1:1;const l=Vut(i,s);return l!==0?l:i.localeCompare(s)}function $ut(n,e,t){const i=n.toLowerCase(),s=e.toLowerCase(),r=i.startsWith(t),o=s.startsWith(t);if(r!==o)return r?-1:1;if(r&&o){if(i.length<s.length)return-1;if(i.length>s.length)return 1}return 0}var zut=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r};class q0e{constructor(e){this.nodes=e}toString(){return this.nodes.map(e=>typeof e=="string"?e:e.label).join("")}}zut([ts],q0e.prototype,"toString",null);const Uut=/\[([^\]]+)\]\(((?:https?:\/\/|command:|file:)[^\)\s]+)(?: (["'])(.+?)(\3))?\)/gi;function jut(n){const e=[];let t=0,i;for(;i=Uut.exec(n);){i.index-t>0&&e.push(n.substring(t,i.index));const[,s,r,,o]=i;o?e.push({label:s,href:r,title:o}):e.push({label:s,href:r}),t=i.index+i[0].length}return t<n.length&&e.push(n.substring(t)),new q0e(e)}const h6={},qut=new sK("quick-input-button-icon-");function DH(n){if(!n)return;let e;const t=n.dark.toString();return h6[t]?e=h6[t]:(e=qut.nextId(),WA(`.${e}, .hc-light .${e}`,`background-image: ${Xp(n.light||n.dark)}`),WA(`.vs-dark .${e}, .hc-black .${e}`,`background-image: ${Xp(n.dark)}`),h6[t]=e),e}function Kut(n,e,t){mr(e);const i=jut(n);let s=0;for(const r of i.nodes)if(typeof r=="string")e.append(...Lp(r));else{let o=r.title;!o&&r.href.startsWith("command:")?o=v("executeCommand","Click to execute command '{0}'",r.href.substring(8)):o||(o=r.href);const a=Te("a",{href:r.href,title:o,tabIndex:s++},r.label);a.style.textDecoration="underline";const l=f=>{w9e(f)&&Tt.stop(f,!0),t.callback(r.href)},c=t.disposables.add(new Ht(a,We.CLICK)).event,u=t.disposables.add(new Ht(a,We.KEY_DOWN)).event,h=Ve.chain(u,f=>f.filter(g=>{const p=new Ki(g);return p.equals(10)||p.equals(3)}));t.disposables.add(Ri.addTarget(a));const d=t.disposables.add(new Ht(a,Oi.Tap)).event;Ve.any(c,d,h)(l,null,t.disposables),e.appendChild(a)}}var K0e=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r};const qc=Te;class Gut{constructor(e,t,i,s,r,o,a){var l,c,u;this._checked=!1,this._hidden=!1,this.hasCheckbox=s,this.index=i,this.fireButtonTriggered=r,this.fireSeparatorButtonTriggered=o,this._onChecked=a,this.onChecked=s?Ve.map(Ve.filter(this._onChecked.event,h=>h.listElement===this),h=>h.checked):Ve.None,e.type==="separator"?this._separator=e:(this.item=e,t&&t.type==="separator"&&!t.buttons&&(this._separator=t),this.saneDescription=this.item.description,this.saneDetail=this.item.detail,this._labelHighlights=(l=this.item.highlights)===null||l===void 0?void 0:l.label,this._descriptionHighlights=(c=this.item.highlights)===null||c===void 0?void 0:c.description,this._detailHighlights=(u=this.item.highlights)===null||u===void 0?void 0:u.detail,this.saneTooltip=this.item.tooltip),this._init=new Im(()=>{var h;const d=(h=e.label)!==null&&h!==void 0?h:"",f=wS(d).text.trim(),g=e.ariaLabel||[d,this.saneDescription,this.saneDetail].map(p=>LGe(p)).filter(p=>!!p).join(", ");return{saneLabel:d,saneSortLabel:f,saneAriaLabel:g}})}get saneLabel(){return this._init.value.saneLabel}get saneSortLabel(){return this._init.value.saneSortLabel}get saneAriaLabel(){return this._init.value.saneAriaLabel}get element(){return this._element}set element(e){this._element=e}get hidden(){return this._hidden}set hidden(e){this._hidden=e}get checked(){return this._checked}set checked(e){e!==this._checked&&(this._checked=e,this._onChecked.fire({listElement:this,checked:e}))}get separator(){return this._separator}set separator(e){this._separator=e}get labelHighlights(){return this._labelHighlights}set labelHighlights(e){this._labelHighlights=e}get descriptionHighlights(){return this._descriptionHighlights}set descriptionHighlights(e){this._descriptionHighlights=e}get detailHighlights(){return this._detailHighlights}set detailHighlights(e){this._detailHighlights=e}}class eD{constructor(e){this.themeService=e}get templateId(){return eD.ID}renderTemplate(e){const t=Object.create(null);t.toDisposeElement=[],t.toDisposeTemplate=[],t.entry=Le(e,qc(".quick-input-list-entry"));const i=Le(t.entry,qc("label.quick-input-list-label"));t.toDisposeTemplate.push(Mn(i,We.CLICK,c=>{t.checkbox.offsetParent||c.preventDefault()})),t.checkbox=Le(i,qc("input.quick-input-list-checkbox")),t.checkbox.type="checkbox",t.toDisposeTemplate.push(Mn(t.checkbox,We.CHANGE,c=>{t.element.checked=t.checkbox.checked}));const s=Le(i,qc(".quick-input-list-rows")),r=Le(s,qc(".quick-input-list-row")),o=Le(s,qc(".quick-input-list-row"));t.label=new zP(r,{supportHighlights:!0,supportDescriptionHighlights:!0,supportIcons:!0}),t.toDisposeTemplate.push(t.label),t.icon=Lge(t.label.element,qc(".quick-input-list-icon"));const a=Le(r,qc(".quick-input-list-entry-keybinding"));t.keybinding=new BE(a,Ha);const l=Le(o,qc(".quick-input-list-label-meta"));return t.detail=new zP(l,{supportHighlights:!0,supportIcons:!0}),t.toDisposeTemplate.push(t.detail),t.separator=Le(t.entry,qc(".quick-input-list-separator")),t.actionBar=new Vl(t.entry),t.actionBar.domNode.classList.add("quick-input-list-entry-action-bar"),t.toDisposeTemplate.push(t.actionBar),t}renderElement(e,t,i){var s,r,o,a;i.element=e,e.element=(s=i.entry)!==null&&s!==void 0?s:void 0;const l=e.item?e.item:e.separator;i.checkbox.checked=e.checked,i.toDisposeElement.push(e.onChecked(g=>i.checkbox.checked=g));const{labelHighlights:c,descriptionHighlights:u,detailHighlights:h}=e;if(!((r=e.item)===null||r===void 0)&&r.iconPath){const g=yy(this.themeService.getColorTheme().type)?e.item.iconPath.dark:(o=e.item.iconPath.light)!==null&&o!==void 0?o:e.item.iconPath.dark,p=it.revive(g);i.icon.className="quick-input-list-icon",i.icon.style.backgroundImage=Xp(p)}else i.icon.style.backgroundImage="",i.icon.className=!((a=e.item)===null||a===void 0)&&a.iconClass?`quick-input-list-icon ${e.item.iconClass}`:"";const d={matches:c||[],descriptionTitle:e.saneDescription,descriptionMatches:u||[],labelEscapeNewLines:!0};l.type!=="separator"?(d.extraClasses=l.iconClasses,d.italic=l.italic,d.strikethrough=l.strikethrough,i.entry.classList.remove("quick-input-list-separator-as-item")):i.entry.classList.add("quick-input-list-separator-as-item"),i.label.setLabel(e.saneLabel,e.saneDescription,d),i.keybinding.set(l.type==="separator"?void 0:l.keybinding),e.saneDetail?(i.detail.element.style.display="",i.detail.setLabel(e.saneDetail,void 0,{matches:h,title:e.saneDetail,labelEscapeNewLines:!0})):i.detail.element.style.display="none",e.item&&e.separator&&e.separator.label?(i.separator.textContent=e.separator.label,i.separator.style.display=""):i.separator.style.display="none",i.entry.classList.toggle("quick-input-list-separator-border",!!e.separator);const f=l.buttons;f&&f.length?(i.actionBar.push(f.map((g,p)=>{let m=g.iconClass||(g.iconPath?DH(g.iconPath):void 0);return g.alwaysVisible&&(m=m?`${m} always-visible`:"always-visible"),{id:`id-${p}`,class:m,enabled:!0,label:"",tooltip:g.tooltip||"",run:()=>{l.type!=="separator"?e.fireButtonTriggered({button:g,item:l}):e.fireSeparatorButtonTriggered({button:g,separator:l})}}}),{icon:!0,label:!1}),i.entry.classList.add("has-actions")):i.entry.classList.remove("has-actions")}disposeElement(e,t,i){i.toDisposeElement=yi(i.toDisposeElement),i.actionBar.clear()}disposeTemplate(e){e.toDisposeElement=yi(e.toDisposeElement),e.toDisposeTemplate=yi(e.toDisposeTemplate)}}eD.ID="listelement";class Yut{getHeight(e){return e.item?e.saneDetail?44:22:24}getTemplateId(e){return eD.ID}}var Vs;(function(n){n[n.First=1]="First",n[n.Second=2]="Second",n[n.Last=3]="Last",n[n.Next=4]="Next",n[n.Previous=5]="Previous",n[n.NextPage=6]="NextPage",n[n.PreviousPage=7]="PreviousPage"})(Vs||(Vs={}));class $G{constructor(e,t,i,s){this.parent=e,this.options=i,this.inputElements=[],this.elements=[],this.elementsToIndexes=new Map,this.matchOnDescription=!1,this.matchOnDetail=!1,this.matchOnLabel=!0,this.matchOnLabelMode="fuzzy",this.sortByLabel=!0,this._onChangedAllVisibleChecked=new ue,this.onChangedAllVisibleChecked=this._onChangedAllVisibleChecked.event,this._onChangedCheckedCount=new ue,this.onChangedCheckedCount=this._onChangedCheckedCount.event,this._onChangedVisibleCount=new ue,this.onChangedVisibleCount=this._onChangedVisibleCount.event,this._onChangedCheckedElements=new ue,this.onChangedCheckedElements=this._onChangedCheckedElements.event,this._onButtonTriggered=new ue,this.onButtonTriggered=this._onButtonTriggered.event,this._onSeparatorButtonTriggered=new ue,this.onSeparatorButtonTriggered=this._onSeparatorButtonTriggered.event,this._onKeyDown=new ue,this.onKeyDown=this._onKeyDown.event,this._onLeave=new ue,this.onLeave=this._onLeave.event,this._listElementChecked=new ue,this._fireCheckedEvents=!0,this.elementDisposables=[],this.disposables=[],this.id=t,this.container=Le(this.parent,qc(".quick-input-list"));const r=new Yut,o=new Qut;if(this.list=i.createList("QuickInput",this.container,r,[new eD(s)],{identityProvider:{getId:a=>{var l,c,u,h,d,f,g,p;return(p=(f=(h=(c=(l=a.item)===null||l===void 0?void 0:l.id)!==null&&c!==void 0?c:(u=a.item)===null||u===void 0?void 0:u.label)!==null&&h!==void 0?h:(d=a.separator)===null||d===void 0?void 0:d.id)!==null&&f!==void 0?f:(g=a.separator)===null||g===void 0?void 0:g.label)!==null&&p!==void 0?p:""}},setRowLineHeight:!1,multipleSelectionSupport:!1,horizontalScrolling:!1,accessibilityProvider:o}),this.list.getHTMLElement().id=t,this.disposables.push(this.list),this.disposables.push(this.list.onKeyDown(a=>{const l=new Ki(a);switch(l.keyCode){case 10:this.toggleCheckbox();break;case 31:(Gt?a.metaKey:a.ctrlKey)&&this.list.setFocus(Zr(this.list.length));break;case 16:{const c=this.list.getFocus();c.length===1&&c[0]===0&&this._onLeave.fire();break}case 18:{const c=this.list.getFocus();c.length===1&&c[0]===this.list.length-1&&this._onLeave.fire();break}}this._onKeyDown.fire(l)})),this.disposables.push(this.list.onMouseDown(a=>{a.browserEvent.button!==2&&a.browserEvent.preventDefault()})),this.disposables.push(Ce(this.container,We.CLICK,a=>{(a.x||a.y)&&this._onLeave.fire()})),this.disposables.push(this.list.onMouseMiddleClick(a=>{this._onLeave.fire()})),this.disposables.push(this.list.onContextMenu(a=>{typeof a.index=="number"&&(a.browserEvent.preventDefault(),this.list.setSelection([a.index]))})),i.hoverDelegate){const a=new jfe(i.hoverDelegate.delay);this.disposables.push(this.list.onMouseOver(async l=>{var c;if(l.browserEvent.target instanceof HTMLAnchorElement){a.cancel();return}if(!(!(l.browserEvent.relatedTarget instanceof HTMLAnchorElement)&&pr(l.browserEvent.relatedTarget,(c=l.element)===null||c===void 0?void 0:c.element)))try{await a.trigger(async()=>{l.element&&this.showHover(l.element)})}catch(u){if(!Wu(u))throw u}})),this.disposables.push(this.list.onMouseOut(l=>{var c;pr(l.browserEvent.relatedTarget,(c=l.element)===null||c===void 0?void 0:c.element)||a.cancel()})),this.disposables.push(a)}this.disposables.push(this._listElementChecked.event(a=>this.fireCheckedEvents())),this.disposables.push(this._onChangedAllVisibleChecked,this._onChangedCheckedCount,this._onChangedVisibleCount,this._onChangedCheckedElements,this._onButtonTriggered,this._onSeparatorButtonTriggered,this._onLeave,this._onKeyDown)}get onDidChangeFocus(){return Ve.map(this.list.onDidChangeFocus,e=>e.elements.map(t=>t.item))}get onDidChangeSelection(){return Ve.map(this.list.onDidChangeSelection,e=>({items:e.elements.map(t=>t.item),event:e.browserEvent}))}get scrollTop(){return this.list.scrollTop}set scrollTop(e){this.list.scrollTop=e}get ariaLabel(){return this.list.getHTMLElement().ariaLabel}set ariaLabel(e){this.list.getHTMLElement().ariaLabel=e}getAllVisibleChecked(){return this.allVisibleChecked(this.elements,!1)}allVisibleChecked(e,t=!0){for(let i=0,s=e.length;i<s;i++){const r=e[i];if(!r.hidden)if(r.checked)t=!0;else return!1}return t}getCheckedCount(){let e=0;const t=this.elements;for(let i=0,s=t.length;i<s;i++)t[i].checked&&e++;return e}getVisibleCount(){let e=0;const t=this.elements;for(let i=0,s=t.length;i<s;i++)t[i].hidden||e++;return e}setAllVisibleChecked(e){try{this._fireCheckedEvents=!1,this.elements.forEach(t=>{t.hidden||(t.checked=e)})}finally{this._fireCheckedEvents=!0,this.fireCheckedEvents()}}setElements(e){this.elementDisposables=yi(this.elementDisposables);const t=o=>this.fireButtonTriggered(o),i=o=>this.fireSeparatorButtonTriggered(o);this.inputElements=e;const s=new Map,r=this.parent.classList.contains("show-checkboxes");this.elements=e.reduce((o,a,l)=>{var c;const u=l>0?e[l-1]:void 0;if(a.type==="separator"&&!a.buttons)return o;const h=new Gut(a,u,l,r,t,i,this._listElementChecked),d=o.length;return o.push(h),s.set((c=h.item)!==null&&c!==void 0?c:h.separator,d),o},[]),this.elementsToIndexes=s,this.list.splice(0,this.list.length),this.list.splice(0,this.list.length,this.elements),this._onChangedVisibleCount.fire(this.elements.length)}getFocusedElements(){return this.list.getFocusedElements().map(e=>e.item)}setFocusedElements(e){if(this.list.setFocus(e.filter(t=>this.elementsToIndexes.has(t)).map(t=>this.elementsToIndexes.get(t))),e.length>0){const t=this.list.getFocus()[0];typeof t=="number"&&this.list.reveal(t)}}getActiveDescendant(){return this.list.getHTMLElement().getAttribute("aria-activedescendant")}setSelectedElements(e){this.list.setSelection(e.filter(t=>this.elementsToIndexes.has(t)).map(t=>this.elementsToIndexes.get(t)))}getCheckedElements(){return this.elements.filter(e=>e.checked).map(e=>e.item).filter(e=>!!e)}setCheckedElements(e){try{this._fireCheckedEvents=!1;const t=new Set;for(const i of e)t.add(i);for(const i of this.elements)i.checked=t.has(i.item)}finally{this._fireCheckedEvents=!0,this.fireCheckedEvents()}}set enabled(e){this.list.getHTMLElement().style.pointerEvents=e?"":"none"}focus(e){if(!this.list.length)return;switch(e===Vs.Second&&this.list.length<2&&(e=Vs.First),e){case Vs.First:this.list.scrollTop=0,this.list.focusFirst(void 0,i=>!!i.item);break;case Vs.Second:this.list.scrollTop=0,this.list.focusNth(1,void 0,i=>!!i.item);break;case Vs.Last:this.list.scrollTop=this.list.scrollHeight,this.list.focusLast(void 0,i=>!!i.item);break;case Vs.Next:{this.list.focusNext(void 0,!0,void 0,s=>!!s.item);const i=this.list.getFocus()[0];i!==0&&!this.elements[i-1].item&&this.list.firstVisibleIndex>i-1&&this.list.reveal(i-1);break}case Vs.Previous:{this.list.focusPrevious(void 0,!0,void 0,s=>!!s.item);const i=this.list.getFocus()[0];i!==0&&!this.elements[i-1].item&&this.list.firstVisibleIndex>i-1&&this.list.reveal(i-1);break}case Vs.NextPage:this.list.focusNextPage(void 0,i=>!!i.item);break;case Vs.PreviousPage:this.list.focusPreviousPage(void 0,i=>!!i.item);break}const t=this.list.getFocus()[0];typeof t=="number"&&this.list.reveal(t)}clearFocus(){this.list.setFocus([])}domFocus(){this.list.domFocus()}showHover(e){var t,i,s;this.options.hoverDelegate!==void 0&&(this._lastHover&&!this._lastHover.isDisposed&&((i=(t=this.options.hoverDelegate).onDidHideHover)===null||i===void 0||i.call(t),(s=this._lastHover)===null||s===void 0||s.dispose()),!(!e.element||!e.saneTooltip)&&(this._lastHover=this.options.hoverDelegate.showHover({content:e.saneTooltip,target:e.element,linkHandler:r=>{this.options.linkOpenerDelegate(r)},appearance:{showPointer:!0},container:this.container,position:{hoverPosition:1}},!1)))}layout(e){this.list.getHTMLElement().style.maxHeight=e?`${Math.floor(e/44)*44+6}px`:"",this.list.layout()}filter(e){if(!(this.sortByLabel||this.matchOnLabel||this.matchOnDescription||this.matchOnDetail))return this.list.layout(),!1;const t=e;if(e=e.trim(),!e||!(this.matchOnLabel||this.matchOnDescription||this.matchOnDetail))this.elements.forEach(s=>{s.labelHighlights=void 0,s.descriptionHighlights=void 0,s.detailHighlights=void 0,s.hidden=!1;const r=s.index&&this.inputElements[s.index-1];s.item&&(s.separator=r&&r.type==="separator"&&!r.buttons?r:void 0)});else{let s;this.elements.forEach(r=>{var o,a,l,c;let u;this.matchOnLabelMode==="fuzzy"?u=this.matchOnLabel&&(o=u3(e,wS(r.saneLabel)))!==null&&o!==void 0?o:void 0:u=this.matchOnLabel&&(a=Zut(t,wS(r.saneLabel)))!==null&&a!==void 0?a:void 0;const h=this.matchOnDescription&&(l=u3(e,wS(r.saneDescription||"")))!==null&&l!==void 0?l:void 0,d=this.matchOnDetail&&(c=u3(e,wS(r.saneDetail||"")))!==null&&c!==void 0?c:void 0;if(u||h||d?(r.labelHighlights=u,r.descriptionHighlights=h,r.detailHighlights=d,r.hidden=!1):(r.labelHighlights=void 0,r.descriptionHighlights=void 0,r.detailHighlights=void 0,r.hidden=r.item?!r.item.alwaysShow:!0),r.item?r.separator=void 0:r.separator&&(r.hidden=!0),!this.sortByLabel){const f=r.index&&this.inputElements[r.index-1];s=f&&f.type==="separator"?f:s,s&&!r.hidden&&(r.separator=s,s=void 0)}})}const i=this.elements.filter(s=>!s.hidden);if(this.sortByLabel&&e){const s=e.toLowerCase();i.sort((r,o)=>Xut(r,o,s))}return this.elementsToIndexes=i.reduce((s,r,o)=>{var a;return s.set((a=r.item)!==null&&a!==void 0?a:r.separator,o),s},new Map),this.list.splice(0,this.list.length,i),this.list.setFocus([]),this.list.layout(),this._onChangedAllVisibleChecked.fire(this.getAllVisibleChecked()),this._onChangedVisibleCount.fire(i.length),!0}toggleCheckbox(){try{this._fireCheckedEvents=!1;const e=this.list.getFocusedElements(),t=this.allVisibleChecked(e);for(const i of e)i.checked=!t}finally{this._fireCheckedEvents=!0,this.fireCheckedEvents()}}display(e){this.container.style.display=e?"":"none"}isDisplayed(){return this.container.style.display!=="none"}dispose(){this.elementDisposables=yi(this.elementDisposables),this.disposables=yi(this.disposables)}fireCheckedEvents(){this._fireCheckedEvents&&(this._onChangedAllVisibleChecked.fire(this.getAllVisibleChecked()),this._onChangedCheckedCount.fire(this.getCheckedCount()),this._onChangedCheckedElements.fire(this.getCheckedElements()))}fireButtonTriggered(e){this._onButtonTriggered.fire(e)}fireSeparatorButtonTriggered(e){this._onSeparatorButtonTriggered.fire(e)}style(e){this.list.style(e)}toggleHover(){const e=this.list.getFocusedElements()[0];if(!(e!=null&&e.saneTooltip))return;if(this._lastHover&&!this._lastHover.isDisposed){this._lastHover.dispose();return}const t=this.list.getFocusedElements()[0];if(!t)return;this.showHover(t);const i=new xe;i.add(this.list.onDidChangeFocus(s=>{s.indexes.length&&this.showHover(s.elements[0])})),this._lastHover&&i.add(this._lastHover),this._toggleHover=i,this.elementDisposables.push(this._toggleHover)}}K0e([ts],$G.prototype,"onDidChangeFocus",null);K0e([ts],$G.prototype,"onDidChangeSelection",null);function Zut(n,e){const{text:t,iconOffsets:i}=e;if(!i||i.length===0)return Vse(n,t);const s=dE(t," "),r=t.length-s.length,o=Vse(n,s);if(o)for(const a of o){const l=i[a.start+r]+r;a.start+=l,a.end+=l}return o}function Vse(n,e){const t=e.toLowerCase().indexOf(n.toLowerCase());return t!==-1?[{start:t,end:t+n.length}]:null}function Xut(n,e,t){const i=n.labelHighlights||[],s=e.labelHighlights||[];return i.length&&!s.length?-1:!i.length&&s.length?1:i.length===0&&s.length===0?0:Hut(n.saneSortLabel,e.saneSortLabel,t)}class Qut{getWidgetAriaLabel(){return v("quickInput","Quick Input")}getAriaLabel(e){var t;return!((t=e.separator)===null||t===void 0)&&t.label?`${e.saneAriaLabel}, ${e.separator.label}`:e.saneAriaLabel}getWidgetRole(){return"listbox"}getRole(e){return e.hasCheckbox?"checkbox":"option"}isChecked(e){if(e.hasCheckbox)return{value:e.checked,onDidChange:e.onChecked}}}const IH={iconClass:nt.asClassName(Pe.quickInputBack),tooltip:v("quickInput.back","Back"),handle:-1};class tD extends pe{constructor(e){super(),this.ui=e,this._widgetUpdated=!1,this.visible=!1,this._enabled=!0,this._busy=!1,this._ignoreFocusOut=!1,this._buttons=[],this.buttonsUpdated=!1,this._toggles=[],this.togglesUpdated=!1,this.noValidationMessage=tD.noPromptMessage,this._severity=zn.Ignore,this.onDidTriggerButtonEmitter=this._register(new ue),this.onDidHideEmitter=this._register(new ue),this.onDisposeEmitter=this._register(new ue),this.visibleDisposables=this._register(new xe),this.onDidHide=this.onDidHideEmitter.event}get title(){return this._title}set title(e){this._title=e,this.update()}get description(){return this._description}set description(e){this._description=e,this.update()}get step(){return this._steps}set step(e){this._steps=e,this.update()}get totalSteps(){return this._totalSteps}set totalSteps(e){this._totalSteps=e,this.update()}get enabled(){return this._enabled}set enabled(e){this._enabled=e,this.update()}get contextKey(){return this._contextKey}set contextKey(e){this._contextKey=e,this.update()}get busy(){return this._busy}set busy(e){this._busy=e,this.update()}get ignoreFocusOut(){return this._ignoreFocusOut}set ignoreFocusOut(e){const t=this._ignoreFocusOut!==e&&!Du;this._ignoreFocusOut=e&&!Du,t&&this.update()}get buttons(){return this._buttons}set buttons(e){this._buttons=e,this.buttonsUpdated=!0,this.update()}get toggles(){return this._toggles}set toggles(e){this._toggles=e??[],this.togglesUpdated=!0,this.update()}get validationMessage(){return this._validationMessage}set validationMessage(e){this._validationMessage=e,this.update()}get severity(){return this._severity}set severity(e){this._severity=e,this.update()}show(){this.visible||(this.visibleDisposables.add(this.ui.onDidTriggerButton(e=>{this.buttons.indexOf(e)!==-1&&this.onDidTriggerButtonEmitter.fire(e)})),this.ui.show(this),this.visible=!0,this._lastValidationMessage=void 0,this._lastSeverity=void 0,this.buttons.length&&(this.buttonsUpdated=!0),this.toggles.length&&(this.togglesUpdated=!0),this.update())}hide(){this.visible&&this.ui.hide()}didHide(e=JL.Other){this.visible=!1,this.visibleDisposables.clear(),this.onDidHideEmitter.fire({reason:e})}update(){var e,t;if(!this.visible)return;const i=this.getTitle();i&&this.ui.title.textContent!==i?this.ui.title.textContent=i:!i&&this.ui.title.innerHTML!==" "&&(this.ui.title.innerText=" ");const s=this.getDescription();if(this.ui.description1.textContent!==s&&(this.ui.description1.textContent=s),this.ui.description2.textContent!==s&&(this.ui.description2.textContent=s),this._widgetUpdated&&(this._widgetUpdated=!1,this._widget?mr(this.ui.widget,this._widget):mr(this.ui.widget)),this.busy&&!this.busyDelay&&(this.busyDelay=new Ic,this.busyDelay.setIfNotSet(()=>{this.visible&&this.ui.progressBar.infinite()},800)),!this.busy&&this.busyDelay&&(this.ui.progressBar.stop(),this.busyDelay.cancel(),this.busyDelay=void 0),this.buttonsUpdated){this.buttonsUpdated=!1,this.ui.leftActionBar.clear();const o=this.buttons.filter(l=>l===IH);this.ui.leftActionBar.push(o.map((l,c)=>{const u=new ho(`id-${c}`,"",l.iconClass||DH(l.iconPath),!0,async()=>{this.onDidTriggerButtonEmitter.fire(l)});return u.tooltip=l.tooltip||"",u}),{icon:!0,label:!1}),this.ui.rightActionBar.clear();const a=this.buttons.filter(l=>l!==IH);this.ui.rightActionBar.push(a.map((l,c)=>{const u=new ho(`id-${c}`,"",l.iconClass||DH(l.iconPath),!0,async()=>{this.onDidTriggerButtonEmitter.fire(l)});return u.tooltip=l.tooltip||"",u}),{icon:!0,label:!1})}if(this.togglesUpdated){this.togglesUpdated=!1;const o=(t=(e=this.toggles)===null||e===void 0?void 0:e.filter(a=>a instanceof WC))!==null&&t!==void 0?t:[];this.ui.inputBox.toggles=o}this.ui.ignoreFocusOut=this.ignoreFocusOut,this.ui.setEnabled(this.enabled),this.ui.setContextKey(this.contextKey);const r=this.validationMessage||this.noValidationMessage;this._lastValidationMessage!==r&&(this._lastValidationMessage=r,mr(this.ui.message),Kut(r,this.ui.message,{callback:o=>{this.ui.linkOpenerDelegate(o)},disposables:this.visibleDisposables})),this._lastSeverity!==this.severity&&(this._lastSeverity=this.severity,this.showMessageDecoration(this.severity))}getTitle(){return this.title&&this.step?`${this.title} (${this.getSteps()})`:this.title?this.title:this.step?this.getSteps():""}getDescription(){return this.description||""}getSteps(){return this.step&&this.totalSteps?v("quickInput.steps","{0}/{1}",this.step,this.totalSteps):this.step?String(this.step):""}showMessageDecoration(e){if(this.ui.inputBox.showDecoration(e),e!==zn.Ignore){const t=this.ui.inputBox.stylesForType(e);this.ui.message.style.color=t.foreground?`${t.foreground}`:"",this.ui.message.style.backgroundColor=t.background?`${t.background}`:"",this.ui.message.style.border=t.border?`1px solid ${t.border}`:"",this.ui.message.style.marginBottom="-2px"}else this.ui.message.style.color="",this.ui.message.style.backgroundColor="",this.ui.message.style.border="",this.ui.message.style.marginBottom=""}dispose(){this.hide(),this.onDisposeEmitter.fire(),super.dispose()}}tD.noPromptMessage=v("inputModeEntry","Press 'Enter' to confirm your input or 'Escape' to cancel");class Bx extends tD{constructor(){super(...arguments),this._value="",this.onDidChangeValueEmitter=this._register(new ue),this.onWillAcceptEmitter=this._register(new ue),this.onDidAcceptEmitter=this._register(new ue),this.onDidCustomEmitter=this._register(new ue),this._items=[],this.itemsUpdated=!1,this._canSelectMany=!1,this._canAcceptInBackground=!1,this._matchOnDescription=!1,this._matchOnDetail=!1,this._matchOnLabel=!0,this._matchOnLabelMode="fuzzy",this._sortByLabel=!0,this._autoFocusOnList=!0,this._keepScrollPosition=!1,this._itemActivation=Qc.FIRST,this._activeItems=[],this.activeItemsUpdated=!1,this.activeItemsToConfirm=[],this.onDidChangeActiveEmitter=this._register(new ue),this._selectedItems=[],this.selectedItemsUpdated=!1,this.selectedItemsToConfirm=[],this.onDidChangeSelectionEmitter=this._register(new ue),this.onDidTriggerItemButtonEmitter=this._register(new ue),this.onDidTriggerSeparatorButtonEmitter=this._register(new ue),this.valueSelectionUpdated=!0,this._ok="default",this._customButton=!1,this.filterValue=e=>e,this.onDidChangeValue=this.onDidChangeValueEmitter.event,this.onWillAccept=this.onWillAcceptEmitter.event,this.onDidAccept=this.onDidAcceptEmitter.event,this.onDidChangeActive=this.onDidChangeActiveEmitter.event,this.onDidChangeSelection=this.onDidChangeSelectionEmitter.event,this.onDidTriggerItemButton=this.onDidTriggerItemButtonEmitter.event,this.onDidTriggerSeparatorButton=this.onDidTriggerSeparatorButtonEmitter.event}get quickNavigate(){return this._quickNavigate}set quickNavigate(e){this._quickNavigate=e,this.update()}get value(){return this._value}set value(e){this.doSetValue(e)}doSetValue(e,t){this._value!==e&&(this._value=e,t||this.update(),this.visible&&this.ui.list.filter(this.filterValue(this._value))&&this.trySelectFirst(),this.onDidChangeValueEmitter.fire(this._value))}set ariaLabel(e){this._ariaLabel=e,this.update()}get ariaLabel(){return this._ariaLabel}get placeholder(){return this._placeholder}set placeholder(e){this._placeholder=e,this.update()}get items(){return this._items}get scrollTop(){return this.ui.list.scrollTop}set scrollTop(e){this.ui.list.scrollTop=e}set items(e){this._items=e,this.itemsUpdated=!0,this.update()}get canSelectMany(){return this._canSelectMany}set canSelectMany(e){this._canSelectMany=e,this.update()}get canAcceptInBackground(){return this._canAcceptInBackground}set canAcceptInBackground(e){this._canAcceptInBackground=e}get matchOnDescription(){return this._matchOnDescription}set matchOnDescription(e){this._matchOnDescription=e,this.update()}get matchOnDetail(){return this._matchOnDetail}set matchOnDetail(e){this._matchOnDetail=e,this.update()}get matchOnLabel(){return this._matchOnLabel}set matchOnLabel(e){this._matchOnLabel=e,this.update()}get matchOnLabelMode(){return this._matchOnLabelMode}set matchOnLabelMode(e){this._matchOnLabelMode=e,this.update()}get sortByLabel(){return this._sortByLabel}set sortByLabel(e){this._sortByLabel=e,this.update()}get autoFocusOnList(){return this._autoFocusOnList}set autoFocusOnList(e){this._autoFocusOnList=e,this.update()}get keepScrollPosition(){return this._keepScrollPosition}set keepScrollPosition(e){this._keepScrollPosition=e}get itemActivation(){return this._itemActivation}set itemActivation(e){this._itemActivation=e}get activeItems(){return this._activeItems}set activeItems(e){this._activeItems=e,this.activeItemsUpdated=!0,this.update()}get selectedItems(){return this._selectedItems}set selectedItems(e){this._selectedItems=e,this.selectedItemsUpdated=!0,this.update()}get keyMods(){return this._quickNavigate?CQe:this.ui.keyMods}set valueSelection(e){this._valueSelection=e,this.valueSelectionUpdated=!0,this.update()}get customButton(){return this._customButton}set customButton(e){this._customButton=e,this.update()}get customLabel(){return this._customButtonLabel}set customLabel(e){this._customButtonLabel=e,this.update()}get customHover(){return this._customButtonHover}set customHover(e){this._customButtonHover=e,this.update()}get ok(){return this._ok}set ok(e){this._ok=e,this.update()}get hideInput(){return!!this._hideInput}set hideInput(e){this._hideInput=e,this.update()}trySelectFirst(){this.autoFocusOnList&&(this.canSelectMany||this.ui.list.focus(Vs.First))}show(){this.visible||(this.visibleDisposables.add(this.ui.inputBox.onDidChange(e=>{this.doSetValue(e,!0)})),this.visibleDisposables.add(this.ui.inputBox.onMouseDown(e=>{this.autoFocusOnList||this.ui.list.clearFocus()})),this.visibleDisposables.add((this._hideInput?this.ui.list:this.ui.inputBox).onKeyDown(e=>{switch(e.keyCode){case 18:this.ui.list.focus(Vs.Next),this.canSelectMany&&this.ui.list.domFocus(),Tt.stop(e,!0);break;case 16:this.ui.list.getFocusedElements().length?this.ui.list.focus(Vs.Previous):this.ui.list.focus(Vs.Last),this.canSelectMany&&this.ui.list.domFocus(),Tt.stop(e,!0);break;case 12:this.ui.list.focus(Vs.NextPage),this.canSelectMany&&this.ui.list.domFocus(),Tt.stop(e,!0);break;case 11:this.ui.list.focus(Vs.PreviousPage),this.canSelectMany&&this.ui.list.domFocus(),Tt.stop(e,!0);break;case 17:if(!this._canAcceptInBackground||!this.ui.inputBox.isSelectionAtEnd())return;this.activeItems[0]&&(this._selectedItems=[this.activeItems[0]],this.onDidChangeSelectionEmitter.fire(this.selectedItems),this.handleAccept(!0));break;case 14:(e.ctrlKey||e.metaKey)&&!e.shiftKey&&!e.altKey&&(this.ui.list.focus(Vs.First),Tt.stop(e,!0));break;case 13:(e.ctrlKey||e.metaKey)&&!e.shiftKey&&!e.altKey&&(this.ui.list.focus(Vs.Last),Tt.stop(e,!0));break}})),this.visibleDisposables.add(this.ui.onDidAccept(()=>{this.canSelectMany?this.ui.list.getCheckedElements().length||(this._selectedItems=[],this.onDidChangeSelectionEmitter.fire(this.selectedItems)):this.activeItems[0]&&(this._selectedItems=[this.activeItems[0]],this.onDidChangeSelectionEmitter.fire(this.selectedItems)),this.handleAccept(!1)})),this.visibleDisposables.add(this.ui.onDidCustom(()=>{this.onDidCustomEmitter.fire()})),this.visibleDisposables.add(this.ui.list.onDidChangeFocus(e=>{this.activeItemsUpdated||this.activeItemsToConfirm!==this._activeItems&&On(e,this._activeItems,(t,i)=>t===i)||(this._activeItems=e,this.onDidChangeActiveEmitter.fire(e))})),this.visibleDisposables.add(this.ui.list.onDidChangeSelection(({items:e,event:t})=>{if(this.canSelectMany){e.length&&this.ui.list.setSelectedElements([]);return}this.selectedItemsToConfirm!==this._selectedItems&&On(e,this._selectedItems,(i,s)=>i===s)||(this._selectedItems=e,this.onDidChangeSelectionEmitter.fire(e),e.length&&this.handleAccept(Zj(t)&&t.button===1))})),this.visibleDisposables.add(this.ui.list.onChangedCheckedElements(e=>{this.canSelectMany&&(this.selectedItemsToConfirm!==this._selectedItems&&On(e,this._selectedItems,(t,i)=>t===i)||(this._selectedItems=e,this.onDidChangeSelectionEmitter.fire(e)))})),this.visibleDisposables.add(this.ui.list.onButtonTriggered(e=>this.onDidTriggerItemButtonEmitter.fire(e))),this.visibleDisposables.add(this.ui.list.onSeparatorButtonTriggered(e=>this.onDidTriggerSeparatorButtonEmitter.fire(e))),this.visibleDisposables.add(this.registerQuickNavigation()),this.valueSelectionUpdated=!0),super.show()}handleAccept(e){let t=!1;this.onWillAcceptEmitter.fire({veto:()=>t=!0}),t||this.onDidAcceptEmitter.fire({inBackground:e})}registerQuickNavigation(){return Ce(this.ui.container,We.KEY_UP,e=>{if(this.canSelectMany||!this._quickNavigate)return;const t=new Ki(e),i=t.keyCode;this._quickNavigate.keybindings.some(o=>{const a=o.getChords();return a.length>1?!1:a[0].shiftKey&&i===4?!(t.ctrlKey||t.altKey||t.metaKey):!!(a[0].altKey&&i===6||a[0].ctrlKey&&i===5||a[0].metaKey&&i===57)})&&(this.activeItems[0]&&(this._selectedItems=[this.activeItems[0]],this.onDidChangeSelectionEmitter.fire(this.selectedItems),this.handleAccept(!1)),this._quickNavigate=void 0)})}update(){if(!this.visible)return;const e=this.keepScrollPosition?this.scrollTop:0,t=!!this.description,i={title:!!this.title||!!this.step||!!this.buttons.length,description:t,checkAll:this.canSelectMany&&!this._hideCheckAll,checkBox:this.canSelectMany,inputBox:!this._hideInput,progressBar:!this._hideInput||t,visibleCount:!0,count:this.canSelectMany&&!this._hideCountBadge,ok:this.ok==="default"?this.canSelectMany:this.ok,list:!0,message:!!this.validationMessage,customButton:this.customButton};this.ui.setVisibilities(i),super.update(),this.ui.inputBox.value!==this.value&&(this.ui.inputBox.value=this.value),this.valueSelectionUpdated&&(this.valueSelectionUpdated=!1,this.ui.inputBox.select(this._valueSelection&&{start:this._valueSelection[0],end:this._valueSelection[1]})),this.ui.inputBox.placeholder!==(this.placeholder||"")&&(this.ui.inputBox.placeholder=this.placeholder||"");let s=this.ariaLabel;if(!s&&i.inputBox&&(s=this.placeholder||Bx.DEFAULT_ARIA_LABEL,this.title&&(s+=` - ${this.title}`)),this.ui.list.ariaLabel!==s&&(this.ui.list.ariaLabel=s??null),this.ui.list.matchOnDescription=this.matchOnDescription,this.ui.list.matchOnDetail=this.matchOnDetail,this.ui.list.matchOnLabel=this.matchOnLabel,this.ui.list.matchOnLabelMode=this.matchOnLabelMode,this.ui.list.sortByLabel=this.sortByLabel,this.itemsUpdated)switch(this.itemsUpdated=!1,this.ui.list.setElements(this.items),this.ui.list.filter(this.filterValue(this.ui.inputBox.value)),this.ui.checkAll.checked=this.ui.list.getAllVisibleChecked(),this.ui.visibleCount.setCount(this.ui.list.getVisibleCount()),this.ui.count.setCount(this.ui.list.getCheckedCount()),this._itemActivation){case Qc.NONE:this._itemActivation=Qc.FIRST;break;case Qc.SECOND:this.ui.list.focus(Vs.Second),this._itemActivation=Qc.FIRST;break;case Qc.LAST:this.ui.list.focus(Vs.Last),this._itemActivation=Qc.FIRST;break;default:this.trySelectFirst();break}this.ui.container.classList.contains("show-checkboxes")!==!!this.canSelectMany&&(this.canSelectMany?this.ui.list.clearFocus():this.trySelectFirst()),this.activeItemsUpdated&&(this.activeItemsUpdated=!1,this.activeItemsToConfirm=this._activeItems,this.ui.list.setFocusedElements(this.activeItems),this.activeItemsToConfirm===this._activeItems&&(this.activeItemsToConfirm=null)),this.selectedItemsUpdated&&(this.selectedItemsUpdated=!1,this.selectedItemsToConfirm=this._selectedItems,this.canSelectMany?this.ui.list.setCheckedElements(this.selectedItems):this.ui.list.setSelectedElements(this.selectedItems),this.selectedItemsToConfirm===this._selectedItems&&(this.selectedItemsToConfirm=null)),this.ui.customButton.label=this.customLabel||"",this.ui.customButton.element.title=this.customHover||"",i.inputBox||(this.ui.list.domFocus(),this.canSelectMany&&this.ui.list.focus(Vs.First)),this.keepScrollPosition&&(this.scrollTop=e)}}Bx.DEFAULT_ARIA_LABEL=v("quickInputBox.ariaLabel","Type to narrow down results.");class Jut extends tD{constructor(){super(...arguments),this._value="",this.valueSelectionUpdated=!0,this._password=!1,this.onDidValueChangeEmitter=this._register(new ue),this.onDidAcceptEmitter=this._register(new ue),this.onDidChangeValue=this.onDidValueChangeEmitter.event,this.onDidAccept=this.onDidAcceptEmitter.event}get value(){return this._value}set value(e){this._value=e||"",this.update()}get placeholder(){return this._placeholder}set placeholder(e){this._placeholder=e,this.update()}get password(){return this._password}set password(e){this._password=e,this.update()}show(){this.visible||(this.visibleDisposables.add(this.ui.inputBox.onDidChange(e=>{e!==this.value&&(this._value=e,this.onDidValueChangeEmitter.fire(e))})),this.visibleDisposables.add(this.ui.onDidAccept(()=>this.onDidAcceptEmitter.fire())),this.valueSelectionUpdated=!0),super.show()}update(){if(!this.visible)return;this.ui.container.classList.remove("hidden-input");const e={title:!!this.title||!!this.step||!!this.buttons.length,description:!!this.description||!!this.step,inputBox:!0,message:!0,progressBar:!0};this.ui.setVisibilities(e),super.update(),this.ui.inputBox.value!==this.value&&(this.ui.inputBox.value=this.value),this.valueSelectionUpdated&&(this.valueSelectionUpdated=!1,this.ui.inputBox.select(this._valueSelection&&{start:this._valueSelection[0],end:this._valueSelection[1]})),this.ui.inputBox.placeholder!==(this.placeholder||"")&&(this.ui.inputBox.placeholder=this.placeholder||""),this.ui.inputBox.password!==this.password&&(this.ui.inputBox.password=this.password)}}const zo=Te;class mF extends pe{constructor(e,t,i){super(),this.options=e,this.themeService=t,this.layoutService=i,this.enabled=!0,this.onDidAcceptEmitter=this._register(new ue),this.onDidCustomEmitter=this._register(new ue),this.onDidTriggerButtonEmitter=this._register(new ue),this.keyMods={ctrlCmd:!1,alt:!1},this.controller=null,this.onShowEmitter=this._register(new ue),this.onShow=this.onShowEmitter.event,this.onHideEmitter=this._register(new ue),this.onHide=this.onHideEmitter.event,this.idPrefix=e.idPrefix,this.parentElement=e.container,this.styles=e.styles,this._register(Ve.runAndSubscribe(Kj,({window:s,disposables:r})=>this.registerKeyModsListeners(s,r),{window:mn,disposables:this._store})),this._register(l9e(s=>{this.ui&&pt(this.ui.container)===s&&this.reparentUI(this.layoutService.mainContainer)}))}registerKeyModsListeners(e,t){const i=s=>{this.keyMods.ctrlCmd=s.ctrlKey||s.metaKey,this.keyMods.alt=s.altKey};for(const s of[We.KEY_DOWN,We.KEY_UP,We.MOUSE_DOWN])t.add(Ce(e,s,i,!0))}getUI(e){if(this.ui)return e&&this.parentElement.ownerDocument!==this.layoutService.activeContainer.ownerDocument&&this.reparentUI(this.layoutService.activeContainer),this.ui;const t=Le(this.parentElement,zo(".quick-input-widget.show-file-icons"));t.tabIndex=-1,t.style.display="none";const i=Fl(t),s=Le(t,zo(".quick-input-titlebar")),r=this.options.hoverDelegate?{hoverDelegate:this.options.hoverDelegate}:void 0,o=this._register(new Vl(s,r));o.domNode.classList.add("quick-input-left-action-bar");const a=Le(s,zo(".quick-input-title")),l=this._register(new Vl(s,r));l.domNode.classList.add("quick-input-right-action-bar");const c=Le(t,zo(".quick-input-header")),u=Le(c,zo("input.quick-input-check-all"));u.type="checkbox",u.setAttribute("aria-label",v("quickInput.checkAll","Toggle all checkboxes")),this._register(Mn(u,We.CHANGE,R=>{const F=u.checked;T.setAllVisibleChecked(F)})),this._register(Ce(u,We.CLICK,R=>{(R.x||R.y)&&g.setFocus()}));const h=Le(c,zo(".quick-input-description")),d=Le(c,zo(".quick-input-and-message")),f=Le(d,zo(".quick-input-filter")),g=this._register(new Wut(f,this.styles.inputBox,this.styles.toggle));g.setAttribute("aria-describedby",`${this.idPrefix}message`);const p=Le(f,zo(".quick-input-visible-count"));p.setAttribute("aria-live","polite"),p.setAttribute("aria-atomic","true");const m=new EW(p,{countFormat:v({key:"quickInput.visibleCount",comment:["This tells the user how many items are shown in a list of items to select from. The items can be anything. Currently not visible, but read by screen readers."]},"{0} Results")},this.styles.countBadge),_=Le(f,zo(".quick-input-count"));_.setAttribute("aria-live","polite");const b=new EW(_,{countFormat:v({key:"quickInput.countSelected",comment:["This tells the user how many items are selected in a list of items to select from. The items can be anything."]},"{0} Selected")},this.styles.countBadge),y=Le(c,zo(".quick-input-action")),w=this._register(new JP(y,this.styles.button));w.label=v("ok","OK"),this._register(w.onDidClick(R=>{this.onDidAcceptEmitter.fire()}));const S=Le(c,zo(".quick-input-action")),E=this._register(new JP(S,this.styles.button));E.label=v("custom","Custom"),this._register(E.onDidClick(R=>{this.onDidCustomEmitter.fire()}));const L=Le(d,zo(`#${this.idPrefix}message.quick-input-message`)),k=this._register(new pF(t,this.styles.progressBar));k.getContainer().classList.add("quick-input-progress");const x=Le(t,zo(".quick-input-html-widget"));x.tabIndex=-1;const I=Le(t,zo(".quick-input-description")),N=this.idPrefix+"list",T=this._register(new $G(t,N,this.options,this.themeService));g.setAttribute("aria-controls",N),this._register(T.onDidChangeFocus(()=>{var R;g.setAttribute("aria-activedescendant",(R=T.getActiveDescendant())!==null&&R!==void 0?R:"")})),this._register(T.onChangedAllVisibleChecked(R=>{u.checked=R})),this._register(T.onChangedVisibleCount(R=>{m.setCount(R)})),this._register(T.onChangedCheckedCount(R=>{b.setCount(R)})),this._register(T.onLeave(()=>{setTimeout(()=>{g.setFocus(),this.controller instanceof Bx&&this.controller.canSelectMany&&T.clearFocus()},0)}));const P=gd(t);return this._register(P),this._register(Ce(t,We.FOCUS,R=>{pr(R.relatedTarget,t)||(this.previousFocusElement=R.relatedTarget instanceof HTMLElement?R.relatedTarget:void 0)},!0)),this._register(P.onDidBlur(()=>{!this.getUI().ignoreFocusOut&&!this.options.ignoreFocusOut()&&this.hide(JL.Blur),this.previousFocusElement=void 0})),this._register(Ce(t,We.FOCUS,R=>{g.setFocus()})),this._register(Mn(t,We.KEY_DOWN,R=>{if(!pr(R.target,x))switch(R.keyCode){case 3:Tt.stop(R,!0),this.enabled&&this.onDidAcceptEmitter.fire();break;case 9:Tt.stop(R,!0),this.hide(JL.Gesture);break;case 2:if(!R.altKey&&!R.ctrlKey&&!R.metaKey){const F=[".quick-input-list .monaco-action-bar .always-visible",".quick-input-list-entry:hover .monaco-action-bar",".monaco-list-row.focused .monaco-action-bar"];if(t.classList.contains("show-checkboxes")?F.push("input"):F.push("input[type=text]"),this.getUI().list.isDisplayed()&&F.push(".monaco-list"),this.getUI().message&&F.push(".quick-input-message a"),this.getUI().widget){if(pr(R.target,this.getUI().widget))break;F.push(".quick-input-html-widget")}const j=t.querySelectorAll(F.join(", "));R.shiftKey&&R.target===j[0]?(Tt.stop(R,!0),T.clearFocus()):!R.shiftKey&&pr(R.target,j[j.length-1])&&(Tt.stop(R,!0),j[0].focus())}break;case 10:R.ctrlKey&&(Tt.stop(R,!0),this.getUI().list.toggleHover());break}})),this.ui={container:t,styleSheet:i,leftActionBar:o,titleBar:s,title:a,description1:I,description2:h,widget:x,rightActionBar:l,checkAll:u,inputContainer:d,filterContainer:f,inputBox:g,visibleCountContainer:p,visibleCount:m,countContainer:_,count:b,okContainer:y,ok:w,message:L,customButtonContainer:S,customButton:E,list:T,progressBar:k,onDidAccept:this.onDidAcceptEmitter.event,onDidCustom:this.onDidCustomEmitter.event,onDidTriggerButton:this.onDidTriggerButtonEmitter.event,ignoreFocusOut:!1,keyMods:this.keyMods,show:R=>this.show(R),hide:()=>this.hide(),setVisibilities:R=>this.setVisibilities(R),setEnabled:R=>this.setEnabled(R),setContextKey:R=>this.options.setContextKey(R),linkOpenerDelegate:R=>this.options.linkOpenerDelegate(R)},this.updateStyles(),this.ui}reparentUI(e){this.ui&&(this.parentElement=e,Le(this.parentElement,this.ui.container))}pick(e,t={},i=Ft.None){return new Promise((s,r)=>{let o=u=>{var h;o=s,(h=t.onKeyMods)===null||h===void 0||h.call(t,a.keyMods),s(u)};if(i.isCancellationRequested){o(void 0);return}const a=this.createQuickPick();let l;const c=[a,a.onDidAccept(()=>{if(a.canSelectMany)o(a.selectedItems.slice()),a.hide();else{const u=a.activeItems[0];u&&(o(u),a.hide())}}),a.onDidChangeActive(u=>{const h=u[0];h&&t.onDidFocus&&t.onDidFocus(h)}),a.onDidChangeSelection(u=>{if(!a.canSelectMany){const h=u[0];h&&(o(h),a.hide())}}),a.onDidTriggerItemButton(u=>t.onDidTriggerItemButton&&t.onDidTriggerItemButton({...u,removeItem:()=>{const h=a.items.indexOf(u.item);if(h!==-1){const d=a.items.slice(),f=d.splice(h,1),g=a.activeItems.filter(m=>m!==f[0]),p=a.keepScrollPosition;a.keepScrollPosition=!0,a.items=d,g&&(a.activeItems=g),a.keepScrollPosition=p}}})),a.onDidTriggerSeparatorButton(u=>{var h;return(h=t.onDidTriggerSeparatorButton)===null||h===void 0?void 0:h.call(t,u)}),a.onDidChangeValue(u=>{l&&!u&&(a.activeItems.length!==1||a.activeItems[0]!==l)&&(a.activeItems=[l])}),i.onCancellationRequested(()=>{a.hide()}),a.onDidHide(()=>{yi(c),o(void 0)})];a.title=t.title,a.canSelectMany=!!t.canPickMany,a.placeholder=t.placeHolder,a.ignoreFocusOut=!!t.ignoreFocusLost,a.matchOnDescription=!!t.matchOnDescription,a.matchOnDetail=!!t.matchOnDetail,a.matchOnLabel=t.matchOnLabel===void 0||t.matchOnLabel,a.autoFocusOnList=t.autoFocusOnList===void 0||t.autoFocusOnList,a.quickNavigate=t.quickNavigate,a.hideInput=!!t.hideInput,a.contextKey=t.contextKey,a.busy=!0,Promise.all([e,t.activeItem]).then(([u,h])=>{l=h,a.busy=!1,a.items=u,a.canSelectMany&&(a.selectedItems=u.filter(d=>d.type!=="separator"&&d.picked)),l&&(a.activeItems=[l])}),a.show(),Promise.resolve(e).then(void 0,u=>{r(u),a.hide()})})}createQuickPick(){const e=this.getUI(!0);return new Bx(e)}createInputBox(){const e=this.getUI(!0);return new Jut(e)}show(e){const t=this.getUI(!0);this.onShowEmitter.fire();const i=this.controller;this.controller=e,i==null||i.didHide(),this.setEnabled(!0),t.leftActionBar.clear(),t.title.textContent="",t.description1.textContent="",t.description2.textContent="",mr(t.widget),t.rightActionBar.clear(),t.checkAll.checked=!1,t.inputBox.placeholder="",t.inputBox.password=!1,t.inputBox.showDecoration(zn.Ignore),t.visibleCount.setCount(0),t.count.setCount(0),mr(t.message),t.progressBar.stop(),t.list.setElements([]),t.list.matchOnDescription=!1,t.list.matchOnDetail=!1,t.list.matchOnLabel=!0,t.list.sortByLabel=!0,t.ignoreFocusOut=!1,t.inputBox.toggles=void 0;const s=this.options.backKeybindingLabel();IH.tooltip=s?v("quickInput.backWithKeybinding","Back ({0})",s):v("quickInput.back","Back"),t.container.style.display="",this.updateLayout(),t.inputBox.setFocus()}isVisible(){return!!this.ui&&this.ui.container.style.display!=="none"}setVisibilities(e){const t=this.getUI();t.title.style.display=e.title?"":"none",t.description1.style.display=e.description&&(e.inputBox||e.checkAll)?"":"none",t.description2.style.display=e.description&&!(e.inputBox||e.checkAll)?"":"none",t.checkAll.style.display=e.checkAll?"":"none",t.inputContainer.style.display=e.inputBox?"":"none",t.filterContainer.style.display=e.inputBox?"":"none",t.visibleCountContainer.style.display=e.visibleCount?"":"none",t.countContainer.style.display=e.count?"":"none",t.okContainer.style.display=e.ok?"":"none",t.customButtonContainer.style.display=e.customButton?"":"none",t.message.style.display=e.message?"":"none",t.progressBar.getContainer().style.display=e.progressBar?"":"none",t.list.display(!!e.list),t.container.classList.toggle("show-checkboxes",!!e.checkBox),t.container.classList.toggle("hidden-input",!e.inputBox&&!e.description),this.updateLayout()}setEnabled(e){if(e!==this.enabled){this.enabled=e;for(const t of this.getUI().leftActionBar.viewItems)t.action.enabled=e;for(const t of this.getUI().rightActionBar.viewItems)t.action.enabled=e;this.getUI().checkAll.disabled=!e,this.getUI().inputBox.enabled=e,this.getUI().ok.enabled=e,this.getUI().list.enabled=e}}hide(e){var t,i;const s=this.controller;if(!s)return;const r=(t=this.ui)===null||t===void 0?void 0:t.container,o=r&&!_9e(r);if(this.controller=null,this.onHideEmitter.fire(),r&&(r.style.display="none"),!o){let a=this.previousFocusElement;for(;a&&!a.offsetParent;)a=(i=a.parentElement)!==null&&i!==void 0?i:void 0;a!=null&&a.offsetParent?(a.focus(),this.previousFocusElement=void 0):this.options.returnFocus()}s.didHide(e)}layout(e,t){this.dimension=e,this.titleBarOffset=t,this.updateLayout()}updateLayout(){if(this.ui&&this.isVisible()){this.ui.container.style.top=`${this.titleBarOffset}px`;const e=this.ui.container.style,t=Math.min(this.dimension.width*.62,mF.MAX_WIDTH);e.width=t+"px",e.marginLeft="-"+t/2+"px",this.ui.inputBox.layout(),this.ui.list.layout(this.dimension&&this.dimension.height*.4)}}applyStyles(e){this.styles=e,this.updateStyles()}updateStyles(){if(this.ui){const{quickInputTitleBackground:e,quickInputBackground:t,quickInputForeground:i,widgetBorder:s,widgetShadow:r}=this.styles.widget;this.ui.titleBar.style.backgroundColor=e??"",this.ui.container.style.backgroundColor=t??"",this.ui.container.style.color=i??"",this.ui.container.style.border=s?`1px solid ${s}`:"",this.ui.container.style.boxShadow=r?`0 0 8px 2px ${r}`:"",this.ui.list.style(this.styles.list);const o=[];this.styles.pickerGroup.pickerGroupBorder&&o.push(`.quick-input-list .quick-input-list-entry { border-top-color: ${this.styles.pickerGroup.pickerGroupBorder}; }`),this.styles.pickerGroup.pickerGroupForeground&&o.push(`.quick-input-list .quick-input-list-separator { color: ${this.styles.pickerGroup.pickerGroupForeground}; }`),this.styles.pickerGroup.pickerGroupForeground&&o.push(".quick-input-list .quick-input-list-separator-as-item { color: var(--vscode-descriptionForeground); }"),(this.styles.keybindingLabel.keybindingLabelBackground||this.styles.keybindingLabel.keybindingLabelBorder||this.styles.keybindingLabel.keybindingLabelBottomBorder||this.styles.keybindingLabel.keybindingLabelShadow||this.styles.keybindingLabel.keybindingLabelForeground)&&(o.push(".quick-input-list .monaco-keybinding > .monaco-keybinding-key {"),this.styles.keybindingLabel.keybindingLabelBackground&&o.push(`background-color: ${this.styles.keybindingLabel.keybindingLabelBackground};`),this.styles.keybindingLabel.keybindingLabelBorder&&o.push(`border-color: ${this.styles.keybindingLabel.keybindingLabelBorder};`),this.styles.keybindingLabel.keybindingLabelBottomBorder&&o.push(`border-bottom-color: ${this.styles.keybindingLabel.keybindingLabelBottomBorder};`),this.styles.keybindingLabel.keybindingLabelShadow&&o.push(`box-shadow: inset 0 -1px 0 ${this.styles.keybindingLabel.keybindingLabelShadow};`),this.styles.keybindingLabel.keybindingLabelForeground&&o.push(`color: ${this.styles.keybindingLabel.keybindingLabelForeground};`),o.push("}"));const a=o.join(` +`);a!==this.ui.styleSheet.textContent&&(this.ui.styleSheet.textContent=a)}}}mF.MAX_WIDTH=600;var eht=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},uT=function(n,e){return function(t,i){e(t,i,n)}};let TH=class extends Q$e{get controller(){return this._controller||(this._controller=this._register(this.createController())),this._controller}get hasController(){return!!this._controller}get quickAccess(){return this._quickAccess||(this._quickAccess=this._register(this.instantiationService.createInstance(EH))),this._quickAccess}constructor(e,t,i,s){super(i),this.instantiationService=e,this.contextKeyService=t,this.layoutService=s,this._onShow=this._register(new ue),this._onHide=this._register(new ue),this.contexts=new Map}createController(e=this.layoutService,t){const i={idPrefix:"quickInput_",container:e.activeContainer,ignoreFocusOut:()=>!1,backKeybindingLabel:()=>{},setContextKey:r=>this.setContextKey(r),linkOpenerDelegate:r=>{this.instantiationService.invokeFunction(o=>{o.get(_a).open(r,{allowCommands:!0,fromUserGesture:!0})})},returnFocus:()=>e.focus(),createList:(r,o,a,l,c)=>this.instantiationService.createInstance(LW,r,o,a,l,c),styles:this.computeStyles()},s=this._register(new mF({...i,...t},this.themeService,this.layoutService));return s.layout(e.activeContainerDimension,e.activeContainerOffset.quickPickTop),this._register(e.onDidLayoutActiveContainer(r=>s.layout(r,e.activeContainerOffset.quickPickTop))),this._register(e.onDidChangeActiveContainer(()=>{s.isVisible()||s.layout(e.activeContainerDimension,e.activeContainerOffset.quickPickTop)})),this._register(s.onShow(()=>{this.resetContextKeys(),this._onShow.fire()})),this._register(s.onHide(()=>{this.resetContextKeys(),this._onHide.fire()})),s}setContextKey(e){let t;e&&(t=this.contexts.get(e),t||(t=new ze(e,!1).bindTo(this.contextKeyService),this.contexts.set(e,t))),!(t&&t.get())&&(this.resetContextKeys(),t==null||t.set(!0))}resetContextKeys(){this.contexts.forEach(e=>{e.get()&&e.reset()})}pick(e,t={},i=Ft.None){return this.controller.pick(e,t,i)}createQuickPick(){return this.controller.createQuickPick()}createInputBox(){return this.controller.createInputBox()}updateStyles(){this.hasController&&this.controller.applyStyles(this.computeStyles())}computeStyles(){return{widget:{quickInputBackground:Ue(iee),quickInputForeground:Ue(qVe),quickInputTitleBackground:Ue(KVe),widgetBorder:Ue(cq),widgetShadow:Ue(Ah)},inputBox:TP,toggle:IP,countBadge:I1e,button:ZXe,progressBar:XXe,keybindingLabel:YXe,list:BC({listBackground:iee,listFocusBackground:W1,listFocusForeground:B1,listInactiveFocusForeground:B1,listInactiveSelectionIconForeground:V0,listInactiveFocusBackground:W1,listFocusOutline:Gi,listInactiveFocusOutline:Gi}),pickerGroup:{pickerGroupBorder:Ue(GVe),pickerGroupForeground:Ue(_pe)}}}};TH=eht([uT(0,at),uT(1,ft),uT(2,Ms),uT(3,KC)],TH);var G0e=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},sb=function(n,e){return function(t,i){e(t,i,n)}};let NH=class extends TH{constructor(e,t,i,s,r){super(t,i,s,new pH(e.getContainerDomNode(),r)),this.host=void 0;const o=Yy.get(e);if(o){const a=o.widget;this.host={_serviceBrand:void 0,get mainContainer(){return a.getDomNode()},getContainer(){return a.getDomNode()},get containers(){return[a.getDomNode()]},get activeContainer(){return a.getDomNode()},get mainContainerDimension(){return e.getLayoutInfo()},get activeContainerDimension(){return e.getLayoutInfo()},get onDidLayoutMainContainer(){return e.onDidLayoutChange},get onDidLayoutActiveContainer(){return e.onDidLayoutChange},get onDidLayoutContainer(){return Ve.map(e.onDidLayoutChange,l=>({container:a.getDomNode(),dimension:l}))},get onDidChangeActiveContainer(){return Ve.None},get onDidAddContainer(){return Ve.None},get mainContainerOffset(){return{top:0,quickPickTop:0}},get activeContainerOffset(){return{top:0,quickPickTop:0}},focus:()=>e.focus()}}else this.host=void 0}createController(){return super.createController(this.host)}};NH=G0e([sb(1,at),sb(2,ft),sb(3,Ms),sb(4,ri)],NH);let AH=class{get activeService(){const e=this.codeEditorService.getFocusedCodeEditor();if(!e)throw new Error("Quick input service needs a focused editor to work.");let t=this.mapEditorToService.get(e);if(!t){const i=t=this.instantiationService.createInstance(NH,e);this.mapEditorToService.set(e,t),jp(e.onDidDispose)(()=>{i.dispose(),this.mapEditorToService.delete(e)})}return t}get quickAccess(){return this.activeService.quickAccess}constructor(e,t){this.instantiationService=e,this.codeEditorService=t,this.mapEditorToService=new Map}pick(e,t={},i=Ft.None){return this.activeService.pick(e,t,i)}createQuickPick(){return this.activeService.createQuickPick()}createInputBox(){return this.activeService.createInputBox()}};AH=G0e([sb(0,at),sb(1,ri)],AH);class Yy{static get(e){return e.getContribution(Yy.ID)}constructor(e){this.editor=e,this.widget=new _F(this.editor)}dispose(){this.widget.dispose()}}Yy.ID="editor.controller.quickInput";class _F{constructor(e){this.codeEditor=e,this.domNode=document.createElement("div"),this.codeEditor.addOverlayWidget(this)}getId(){return _F.ID}getDomNode(){return this.domNode}getPosition(){return{preference:2}}dispose(){this.codeEditor.removeOverlayWidget(this)}}_F.ID="editor.contrib.quickInputWidget";ti(Yy.ID,Yy,4);var tht=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},d6=function(n,e){return function(t,i){e(t,i,n)}};let PH=class extends pe{constructor(e,t,i){super(),this._contextKeyService=e,this._layoutService=t,this._configurationService=i,this._accessibilitySupport=0,this._onDidChangeScreenReaderOptimized=new ue,this._onDidChangeReducedMotion=new ue,this._accessibilityModeEnabledContext=_E.bindTo(this._contextKeyService);const s=()=>this._accessibilityModeEnabledContext.set(this.isScreenReaderOptimized());this._register(this._configurationService.onDidChangeConfiguration(o=>{o.affectsConfiguration("editor.accessibilitySupport")&&(s(),this._onDidChangeScreenReaderOptimized.fire()),o.affectsConfiguration("workbench.reduceMotion")&&(this._configMotionReduced=this._configurationService.getValue("workbench.reduceMotion"),this._onDidChangeReducedMotion.fire())})),s(),this._register(this.onDidChangeScreenReaderOptimized(()=>s()));const r=mn.matchMedia("(prefers-reduced-motion: reduce)");this._systemMotionReduced=r.matches,this._configMotionReduced=this._configurationService.getValue("workbench.reduceMotion"),this.initReducedMotionListeners(r)}initReducedMotionListeners(e){this._register(Ce(e,"change",()=>{this._systemMotionReduced=e.matches,this._configMotionReduced==="auto"&&this._onDidChangeReducedMotion.fire()}));const t=()=>{const i=this.isMotionReduced();this._layoutService.mainContainer.classList.toggle("reduce-motion",i),this._layoutService.mainContainer.classList.toggle("enable-motion",!i)};t(),this._register(this.onDidChangeReducedMotion(()=>t()))}get onDidChangeScreenReaderOptimized(){return this._onDidChangeScreenReaderOptimized.event}isScreenReaderOptimized(){const e=this._configurationService.getValue("editor.accessibilitySupport");return e==="on"||e==="auto"&&this._accessibilitySupport===2}get onDidChangeReducedMotion(){return this._onDidChangeReducedMotion.event}isMotionReduced(){const e=this._configMotionReduced;return e==="on"||e==="auto"&&this._systemMotionReduced}getAccessibilitySupport(){return this._accessibilitySupport}};PH=tht([d6(0,ft),d6(1,KC),d6(2,Ut)],PH);var vF=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},rv=function(n,e){return function(t,i){e(t,i,n)}},T0,Wg;let RH=class{constructor(e,t){this._commandService=e,this._hiddenStates=new xR(t)}createMenu(e,t,i){return new OH(e,this._hiddenStates,{emitEventsForSubmenuChanges:!1,eventDebounceDelay:50,...i},this._commandService,t)}resetHiddenStates(e){this._hiddenStates.reset(e)}};RH=vF([rv(0,Dn),rv(1,Rc)],RH);let xR=T0=class{constructor(e){this._storageService=e,this._disposables=new xe,this._onDidChange=new ue,this.onDidChange=this._onDidChange.event,this._ignoreChangeEvent=!1,this._hiddenByDefaultCache=new Map;try{const t=e.get(T0._key,0,"{}");this._data=JSON.parse(t)}catch{this._data=Object.create(null)}this._disposables.add(e.onDidChangeValue(0,T0._key,this._disposables)(()=>{if(!this._ignoreChangeEvent)try{const t=e.get(T0._key,0,"{}");this._data=JSON.parse(t)}catch(t){console.log("FAILED to read storage after UPDATE",t)}this._onDidChange.fire()}))}dispose(){this._onDidChange.dispose(),this._disposables.dispose()}_isHiddenByDefault(e,t){var i;return(i=this._hiddenByDefaultCache.get(`${e.id}/${t}`))!==null&&i!==void 0?i:!1}setDefaultState(e,t,i){this._hiddenByDefaultCache.set(`${e.id}/${t}`,i)}isHidden(e,t){var i,s;const r=this._isHiddenByDefault(e,t),o=(s=(i=this._data[e.id])===null||i===void 0?void 0:i.includes(t))!==null&&s!==void 0?s:!1;return r?!o:o}updateHidden(e,t,i){this._isHiddenByDefault(e,t)&&(i=!i);const r=this._data[e.id];if(i)r?r.indexOf(t)<0&&r.push(t):this._data[e.id]=[t];else if(r){const o=r.indexOf(t);o>=0&&v7e(r,o),r.length===0&&delete this._data[e.id]}this._persist()}reset(e){if(e===void 0)this._data=Object.create(null),this._persist();else{for(const{id:t}of e)this._data[t]&&delete this._data[t];this._persist()}}_persist(){try{this._ignoreChangeEvent=!0;const e=JSON.stringify(this._data);this._storageService.store(T0._key,e,0,0)}finally{this._ignoreChangeEvent=!1}}};xR._key="menu.hiddenCommands";xR=T0=vF([rv(0,Rc)],xR);let MH=Wg=class{constructor(e,t,i,s,r){this._id=e,this._hiddenStates=t,this._collectContextKeysForSubmenus=i,this._commandService=s,this._contextKeyService=r,this._menuGroups=[],this._structureContextKeys=new Set,this._preconditionContextKeys=new Set,this._toggledContextKeys=new Set,this.refresh()}get structureContextKeys(){return this._structureContextKeys}get preconditionContextKeys(){return this._preconditionContextKeys}get toggledContextKeys(){return this._toggledContextKeys}refresh(){this._menuGroups.length=0,this._structureContextKeys.clear(),this._preconditionContextKeys.clear(),this._toggledContextKeys.clear();const e=tr.getMenuItems(this._id);let t;e.sort(Wg._compareMenuItems);for(const i of e){const s=i.group||"";(!t||t[0]!==s)&&(t=[s,[]],this._menuGroups.push(t)),t[1].push(i),this._collectContextKeys(i)}}_collectContextKeys(e){if(Wg._fillInKbExprKeys(e.when,this._structureContextKeys),M0(e)){if(e.command.precondition&&Wg._fillInKbExprKeys(e.command.precondition,this._preconditionContextKeys),e.command.toggled){const t=e.command.toggled.condition||e.command.toggled;Wg._fillInKbExprKeys(t,this._toggledContextKeys)}}else this._collectContextKeysForSubmenus&&tr.getMenuItems(e.submenu).forEach(this._collectContextKeys,this)}createActionGroups(e){const t=[];for(const i of this._menuGroups){const[s,r]=i,o=[];for(const a of r)if(this._contextKeyService.contextMatchesRules(a.when)){const l=M0(a);l&&this._hiddenStates.setDefaultState(this._id,a.command.id,!!a.isHiddenByDefault);const c=iht(this._id,l?a.command:a,this._hiddenStates);if(l)o.push(new Lc(a.command,a.alt,e,c,this._contextKeyService,this._commandService));else{const u=new Wg(a.submenu,this._hiddenStates,this._collectContextKeysForSubmenus,this._commandService,this._contextKeyService).createActionGroups(e),h=js.join(...u.map(d=>d[1]));h.length>0&&o.push(new vL(a,c,h))}}o.length>0&&t.push([s,o])}return t}static _fillInKbExprKeys(e,t){if(e)for(const i of e.keys())t.add(i)}static _compareMenuItems(e,t){const i=e.group,s=t.group;if(i!==s){if(i){if(!s)return-1}else return 1;if(i==="navigation")return-1;if(s==="navigation")return 1;const a=i.localeCompare(s);if(a!==0)return a}const r=e.order||0,o=t.order||0;return r<o?-1:r>o?1:Wg._compareTitles(M0(e)?e.command.title:e.title,M0(t)?t.command.title:t.title)}static _compareTitles(e,t){const i=typeof e=="string"?e:e.original,s=typeof t=="string"?t:t.original;return i.localeCompare(s)}};MH=Wg=vF([rv(3,Dn),rv(4,ft)],MH);let OH=class{constructor(e,t,i,s,r){this._disposables=new xe,this._menuInfo=new MH(e,t,i.emitEventsForSubmenuChanges,s,r);const o=new Ei(()=>{this._menuInfo.refresh(),this._onDidChange.fire({menu:this,isStructuralChange:!0,isEnablementChange:!0,isToggleChange:!0})},i.eventDebounceDelay);this._disposables.add(o),this._disposables.add(tr.onDidChangeMenu(u=>{u.has(e)&&o.schedule()}));const a=this._disposables.add(new xe),l=u=>{let h=!1,d=!1,f=!1;for(const g of u)if(h=h||g.isStructuralChange,d=d||g.isEnablementChange,f=f||g.isToggleChange,h&&d&&f)break;return{menu:this,isStructuralChange:h,isEnablementChange:d,isToggleChange:f}},c=()=>{a.add(r.onDidChangeContext(u=>{const h=u.affectsSome(this._menuInfo.structureContextKeys),d=u.affectsSome(this._menuInfo.preconditionContextKeys),f=u.affectsSome(this._menuInfo.toggledContextKeys);(h||d||f)&&this._onDidChange.fire({menu:this,isStructuralChange:h,isEnablementChange:d,isToggleChange:f})})),a.add(t.onDidChange(u=>{this._onDidChange.fire({menu:this,isStructuralChange:!0,isEnablementChange:!1,isToggleChange:!1})}))};this._onDidChange=new Pfe({onWillAddFirstListener:c,onDidRemoveLastListener:a.clear.bind(a),delay:i.eventDebounceDelay,merge:l}),this.onDidChange=this._onDidChange.event}getActions(e){return this._menuInfo.createActionGroups(e)}dispose(){this._disposables.dispose(),this._onDidChange.dispose()}};OH=vF([rv(3,Dn),rv(4,ft)],OH);function iht(n,e,t){const i=X9e(e)?e.submenu.id:e.id,s=typeof e.title=="string"?e.title:e.title.value,r=pb({id:`hide/${n.id}/${i}`,label:v("hide.label","Hide '{0}'",s),run(){t.updateHidden(n,i,!0)}}),o=pb({id:`toggle/${n.id}/${i}`,label:s,get checked(){return!t.isHidden(n,i)},run(){t.updateHidden(n,i,!!this.checked)}});return{hide:r,toggle:o,get isHidden(){return!o.checked}}}var nht=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},Hse=function(n,e){return function(t,i){e(t,i,n)}};let FH=class extends pe{constructor(e,t){super(),this.layoutService=e,this.logService=t,this.mapTextToType=new Map,this.findText="",this.resources=[],(Gf||Mfe)&&this.installWebKitWriteTextWorkaround()}installWebKitWriteTextWorkaround(){const e=()=>{const t=new cO;this.webKitPendingClipboardWritePromise&&!this.webKitPendingClipboardWritePromise.isSettled&&this.webKitPendingClipboardWritePromise.cancel(),this.webKitPendingClipboardWritePromise=t,navigator.clipboard.write([new ClipboardItem({"text/plain":t.p})]).catch(async i=>{(!(i instanceof Error)||i.name!=="NotAllowedError"||!t.isRejected)&&this.logService.error(i)})};this._register(Ve.runAndSubscribe(this.layoutService.onDidAddContainer,({container:t,disposables:i})=>{i.add(Ce(t,"click",e)),i.add(Ce(t,"keydown",e))},{container:this.layoutService.mainContainer,disposables:this._store}))}async writeText(e,t){if(t){this.mapTextToType.set(t,e);return}if(this.webKitPendingClipboardWritePromise)return this.webKitPendingClipboardWritePromise.complete(e);try{return await navigator.clipboard.writeText(e)}catch(o){console.error(o)}const i=LC(),s=i.activeElement,r=i.body.appendChild(Te("textarea",{"aria-hidden":!0}));r.style.height="1px",r.style.width="1px",r.style.position="absolute",r.value=e,r.focus(),r.select(),i.execCommand("copy"),s instanceof HTMLElement&&s.focus(),i.body.removeChild(r)}async readText(e){if(e)return this.mapTextToType.get(e)||"";try{return await navigator.clipboard.readText()}catch(t){return console.error(t),""}}async readFindText(){return this.findText}async writeFindText(e){this.findText=e}async writeResources(e){this.resources=e}async readResources(){return this.resources}};FH=nht([Hse(0,KC),Hse(1,ga)],FH);var sht=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},rht=function(n,e){return function(t,i){e(t,i,n)}};const Ek="data-keybinding-context";class zG{constructor(e,t){this._id=e,this._parent=t,this._value=Object.create(null),this._value._contextId=e}get value(){return{...this._value}}setValue(e,t){return this._value[e]!==t?(this._value[e]=t,!0):!1}removeValue(e){return e in this._value?(delete this._value[e],!0):!1}getValue(e){const t=this._value[e];return typeof t>"u"&&this._parent?this._parent.getValue(e):t}}class Zy extends zG{constructor(){super(-1,null)}setValue(e,t){return!1}removeValue(e){return!1}getValue(e){}}Zy.INSTANCE=new Zy;class Wx extends zG{constructor(e,t,i){super(e,null),this._configurationService=t,this._values=Rb.forConfigKeys(),this._listener=this._configurationService.onDidChangeConfiguration(s=>{if(s.source===7){const r=Array.from(this._values,([o])=>o);this._values.clear(),i.fire(new zse(r))}else{const r=[];for(const o of s.affectedKeys){const a=`config.${o}`,l=this._values.findSuperstr(a);l!==void 0&&(r.push(...Vt.map(l,([c])=>c)),this._values.deleteSuperstr(a)),this._values.has(a)&&(r.push(a),this._values.delete(a))}i.fire(new zse(r))}})}dispose(){this._listener.dispose()}getValue(e){if(e.indexOf(Wx._keyPrefix)!==0)return super.getValue(e);if(this._values.has(e))return this._values.get(e);const t=e.substr(Wx._keyPrefix.length),i=this._configurationService.getValue(t);let s;switch(typeof i){case"number":case"boolean":case"string":s=i;break;default:Array.isArray(i)?s=JSON.stringify(i):s=i}return this._values.set(e,s),s}setValue(e,t){return super.setValue(e,t)}removeValue(e){return super.removeValue(e)}}Wx._keyPrefix="config.";class oht{constructor(e,t,i){this._service=e,this._key=t,this._defaultValue=i,this.reset()}set(e){this._service.setContext(this._key,e)}reset(){typeof this._defaultValue>"u"?this._service.removeContext(this._key):this._service.setContext(this._key,this._defaultValue)}get(){return this._service.getContextKeyValue(this._key)}}class $se{constructor(e){this.key=e}affectsSome(e){return e.has(this.key)}allKeysContainedIn(e){return this.affectsSome(e)}}class zse{constructor(e){this.keys=e}affectsSome(e){for(const t of this.keys)if(e.has(t))return!0;return!1}allKeysContainedIn(e){return this.keys.every(t=>e.has(t))}}class aht{constructor(e){this.events=e}affectsSome(e){for(const t of this.events)if(t.affectsSome(e))return!0;return!1}allKeysContainedIn(e){return this.events.every(t=>t.allKeysContainedIn(e))}}function lht(n,e){return n.allKeysContainedIn(new Set(Object.keys(e)))}class Y0e extends pe{constructor(e){super(),this._onDidChangeContext=this._register(new E_({merge:t=>new aht(t)})),this.onDidChangeContext=this._onDidChangeContext.event,this._isDisposed=!1,this._myContextId=e}createKey(e,t){if(this._isDisposed)throw new Error("AbstractContextKeyService has been disposed");return new oht(this,e,t)}bufferChangeEvents(e){this._onDidChangeContext.pause();try{e()}finally{this._onDidChangeContext.resume()}}createScoped(e){if(this._isDisposed)throw new Error("AbstractContextKeyService has been disposed");return new cht(this,e)}contextMatchesRules(e){if(this._isDisposed)throw new Error("AbstractContextKeyService has been disposed");const t=this.getContextValuesContainer(this._myContextId);return e?e.evaluate(t):!0}getContextKeyValue(e){if(!this._isDisposed)return this.getContextValuesContainer(this._myContextId).getValue(e)}setContext(e,t){if(this._isDisposed)return;const i=this.getContextValuesContainer(this._myContextId);i&&i.setValue(e,t)&&this._onDidChangeContext.fire(new $se(e))}removeContext(e){this._isDisposed||this.getContextValuesContainer(this._myContextId).removeValue(e)&&this._onDidChangeContext.fire(new $se(e))}getContext(e){return this._isDisposed?Zy.INSTANCE:this.getContextValuesContainer(uht(e))}dispose(){super.dispose(),this._isDisposed=!0}}let BH=class extends Y0e{constructor(e){super(0),this._contexts=new Map,this._lastContextId=0;const t=this._register(new Wx(this._myContextId,e,this._onDidChangeContext));this._contexts.set(this._myContextId,t)}getContextValuesContainer(e){return this._isDisposed?Zy.INSTANCE:this._contexts.get(e)||Zy.INSTANCE}createChildContext(e=this._myContextId){if(this._isDisposed)throw new Error("ContextKeyService has been disposed");const t=++this._lastContextId;return this._contexts.set(t,new zG(t,this.getContextValuesContainer(e))),t}disposeContext(e){this._isDisposed||this._contexts.delete(e)}};BH=sht([rht(0,Ut)],BH);class cht extends Y0e{constructor(e,t){if(super(e.createChildContext()),this._parentChangeListener=this._register(new qs),this._parent=e,this._updateParentChangeListener(),this._domNode=t,this._domNode.hasAttribute(Ek)){let i="";this._domNode.classList&&(i=Array.from(this._domNode.classList.values()).join(", ")),console.error(`Element already has context attribute${i?": "+i:""}`)}this._domNode.setAttribute(Ek,String(this._myContextId))}_updateParentChangeListener(){this._parentChangeListener.value=this._parent.onDidChangeContext(e=>{const i=this._parent.getContextValuesContainer(this._myContextId).value;lht(e,i)||this._onDidChangeContext.fire(e)})}dispose(){this._isDisposed||(this._parent.disposeContext(this._myContextId),this._domNode.removeAttribute(Ek),super.dispose())}getContextValuesContainer(e){return this._isDisposed?Zy.INSTANCE:this._parent.getContextValuesContainer(e)}createChildContext(e=this._myContextId){if(this._isDisposed)throw new Error("ScopedContextKeyService has been disposed");return this._parent.createChildContext(e)}disposeContext(e){this._isDisposed||this._parent.disposeContext(e)}}function uht(n){for(;n;){if(n.hasAttribute(Ek)){const e=n.getAttribute(Ek);return e?parseInt(e,10):NaN}n=n.parentElement}return 0}function hht(n,e,t){n.get(ft).createKey(String(e),dht(t))}function dht(n){return lpe(n,e=>{if(typeof e=="object"&&e.$mid===1)return it.revive(e).toString();if(e instanceof it)return e.toString()})}Yt.registerCommand("_setContext",hht);Yt.registerCommand({id:"getContextKeyInfo",handler(){return[...ze.all()].sort((n,e)=>n.key.localeCompare(e.key))},metadata:{description:v("getContextKeyInfo","A command that returns information about context keys"),args:[]}});Yt.registerCommand("_generateContextKeyInfo",function(){const n=[],e=new Set;for(const t of ze.all())e.has(t.key)||(e.add(t.key),n.push(t));n.sort((t,i)=>t.key.localeCompare(i.key)),console.log(JSON.stringify(n,void 0,2))});let fht=class{constructor(e,t){this.key=e,this.data=t,this.incoming=new Map,this.outgoing=new Map}};class Use{constructor(e){this._hashFn=e,this._nodes=new Map}roots(){const e=[];for(const t of this._nodes.values())t.outgoing.size===0&&e.push(t);return e}insertEdge(e,t){const i=this.lookupOrInsertNode(e),s=this.lookupOrInsertNode(t);i.outgoing.set(s.key,s),s.incoming.set(i.key,i)}removeNode(e){const t=this._hashFn(e);this._nodes.delete(t);for(const i of this._nodes.values())i.outgoing.delete(t),i.incoming.delete(t)}lookupOrInsertNode(e){const t=this._hashFn(e);let i=this._nodes.get(t);return i||(i=new fht(t,e),this._nodes.set(t,i)),i}isEmpty(){return this._nodes.size===0}toString(){const e=[];for(const[t,i]of this._nodes)e.push(`${t} + (-> incoming)[${[...i.incoming.keys()].join(", ")}] + (outgoing ->)[${[...i.outgoing.keys()].join(",")}] +`);return e.join(` +`)}findCycleSlow(){for(const[e,t]of this._nodes){const i=new Set([e]),s=this._findCycle(t,i);if(s)return s}}_findCycle(e,t){for(const[i,s]of e.outgoing){if(t.has(i))return[...t,i].join(" -> ");t.add(i);const r=this._findCycle(s,t);if(r)return r;t.delete(i)}}}const ght=!1;class jse extends Error{constructor(e){var t;super("cyclic dependency between services"),this.message=(t=e.findCycleSlow())!==null&&t!==void 0?t:`UNABLE to detect cycle, dumping graph: +${e.toString()}`}}class ER{constructor(e=new DE,t=!1,i,s=ght){var r;this._services=e,this._strict=t,this._parent=i,this._enableTracing=s,this._activeInstantiations=new Set,this._services.set(at,this),this._globalGraph=s?(r=i==null?void 0:i._globalGraph)!==null&&r!==void 0?r:new Use(o=>o):void 0}createChild(e){return new ER(e,this._strict,this,this._enableTracing)}invokeFunction(e,...t){const i=xo.traceInvocation(this._enableTracing,e);let s=!1;try{return e({get:o=>{if(s)throw kj("service accessor is only valid during the invocation of its target method");const a=this._getOrCreateServiceInstance(o,i);if(!a)throw new Error(`[invokeFunction] unknown service '${o}'`);return a}},...t)}finally{s=!0,i.stop()}}createInstance(e,...t){let i,s;return e instanceof uh?(i=xo.traceCreation(this._enableTracing,e.ctor),s=this._createInstance(e.ctor,e.staticArguments.concat(t),i)):(i=xo.traceCreation(this._enableTracing,e),s=this._createInstance(e,t,i)),i.stop(),s}_createInstance(e,t=[],i){const s=mu.getServiceDependencies(e).sort((a,l)=>a.index-l.index),r=[];for(const a of s){const l=this._getOrCreateServiceInstance(a.id,i);l||this._throwIfStrict(`[createInstance] ${e.name} depends on UNKNOWN service ${a.id}.`,!1),r.push(l)}const o=s.length>0?s[0].index:t.length;if(t.length!==o){console.trace(`[createInstance] First service dependency of ${e.name} at position ${o+1} conflicts with ${t.length} static arguments`);const a=o-t.length;a>0?t=t.concat(new Array(a)):t=t.slice(0,o)}return Reflect.construct(e,t.concat(r))}_setServiceInstance(e,t){if(this._services.get(e)instanceof uh)this._services.set(e,t);else if(this._parent)this._parent._setServiceInstance(e,t);else throw new Error("illegalState - setting UNKNOWN service instance")}_getServiceInstanceOrDescriptor(e){const t=this._services.get(e);return!t&&this._parent?this._parent._getServiceInstanceOrDescriptor(e):t}_getOrCreateServiceInstance(e,t){this._globalGraph&&this._globalGraphImplicitDependency&&this._globalGraph.insertEdge(this._globalGraphImplicitDependency,String(e));const i=this._getServiceInstanceOrDescriptor(e);return i instanceof uh?this._safeCreateAndCacheServiceInstance(e,i,t.branch(e,!0)):(t.branch(e,!1),i)}_safeCreateAndCacheServiceInstance(e,t,i){if(this._activeInstantiations.has(e))throw new Error(`illegal state - RECURSIVELY instantiating service '${e}'`);this._activeInstantiations.add(e);try{return this._createAndCacheServiceInstance(e,t,i)}finally{this._activeInstantiations.delete(e)}}_createAndCacheServiceInstance(e,t,i){var s;const r=new Use(l=>l.id.toString());let o=0;const a=[{id:e,desc:t,_trace:i}];for(;a.length;){const l=a.pop();if(r.lookupOrInsertNode(l),o++>1e3)throw new jse(r);for(const c of mu.getServiceDependencies(l.desc.ctor)){const u=this._getServiceInstanceOrDescriptor(c.id);if(u||this._throwIfStrict(`[createInstance] ${e} depends on ${c.id} which is NOT registered.`,!0),(s=this._globalGraph)===null||s===void 0||s.insertEdge(String(l.id),String(c.id)),u instanceof uh){const h={id:c.id,desc:u,_trace:l._trace.branch(c.id,!0)};r.insertEdge(l,h),a.push(h)}}}for(;;){const l=r.roots();if(l.length===0){if(!r.isEmpty())throw new jse(r);break}for(const{data:c}of l){if(this._getServiceInstanceOrDescriptor(c.id)instanceof uh){const h=this._createServiceInstanceWithOwner(c.id,c.desc.ctor,c.desc.staticArguments,c.desc.supportsDelayedInstantiation,c._trace);this._setServiceInstance(c.id,h)}r.removeNode(c)}}return this._getServiceInstanceOrDescriptor(e)}_createServiceInstanceWithOwner(e,t,i=[],s,r){if(this._services.get(e)instanceof uh)return this._createServiceInstance(e,t,i,s,r);if(this._parent)return this._parent._createServiceInstanceWithOwner(e,t,i,s,r);throw new Error(`illegalState - creating UNKNOWN service instance ${t.name}`)}_createServiceInstance(e,t,i=[],s,r){if(s){const o=new ER(void 0,this._strict,this,this._enableTracing);o._globalGraphImplicitDependency=String(e);const a=new Map,l=new ZBe(()=>{const c=o._createInstance(t,i,r);for(const[u,h]of a){const d=c[u];if(typeof d=="function")for(const f of h)d.apply(c,f)}return a.clear(),c});return new Proxy(Object.create(null),{get(c,u){if(!l.isInitialized&&typeof u=="string"&&(u.startsWith("onDid")||u.startsWith("onWill"))){let f=a.get(u);return f||(f=new oo,a.set(u,f)),(p,m,_)=>{const b=f.push([p,m,_]);return st(b)}}if(u in c)return c[u];const h=l.value;let d=h[u];return typeof d!="function"||(d=d.bind(h),c[u]=d),d},set(c,u,h){return l.value[u]=h,!0},getPrototypeOf(c){return t.prototype}})}else return this._createInstance(t,i,r)}_throwIfStrict(e,t){if(t&&console.warn(e),this._strict)throw new Error(e)}}class xo{static traceInvocation(e,t){return e?new xo(2,t.name||new Error().stack.split(` +`).slice(3,4).join(` +`)):xo._None}static traceCreation(e,t){return e?new xo(1,t.name):xo._None}constructor(e,t){this.type=e,this.name=t,this._start=Date.now(),this._dep=[]}branch(e,t){const i=new xo(3,e.toString());return this._dep.push([e,t,i]),i}stop(){const e=Date.now()-this._start;xo._totals+=e;let t=!1;function i(r,o){const a=[],l=new Array(r+1).join(" ");for(const[c,u,h]of o._dep)if(u&&h){t=!0,a.push(`${l}CREATES -> ${c}`);const d=i(r+1,h);d&&a.push(d)}else a.push(`${l}uses -> ${c}`);return a.join(` +`)}const s=[`${this.type===1?"CREATE":"CALL"} ${this.name}`,`${i(1,this)}`,`DONE, took ${e.toFixed(2)}ms (grand total ${xo._totals.toFixed(2)}ms)`];(e>2||t)&&xo.all.add(s.join(` +`))}}xo.all=new Set;xo._None=new class extends xo{constructor(){super(0,null)}stop(){}branch(){return this}};xo._totals=0;const pht=new Set([wt.inMemory,wt.vscodeSourceControl,wt.walkThrough,wt.walkThroughSnippet]);class mht{constructor(){this._byResource=new qn,this._byOwner=new Map}set(e,t,i){let s=this._byResource.get(e);s||(s=new Map,this._byResource.set(e,s)),s.set(t,i);let r=this._byOwner.get(t);r||(r=new qn,this._byOwner.set(t,r)),r.set(e,i)}get(e,t){const i=this._byResource.get(e);return i==null?void 0:i.get(t)}delete(e,t){let i=!1,s=!1;const r=this._byResource.get(e);r&&(i=r.delete(t));const o=this._byOwner.get(t);if(o&&(s=o.delete(e)),i!==s)throw new Error("illegal state");return i&&s}values(e){var t,i,s,r;return typeof e=="string"?(i=(t=this._byOwner.get(e))===null||t===void 0?void 0:t.values())!==null&&i!==void 0?i:Vt.empty():it.isUri(e)?(r=(s=this._byResource.get(e))===null||s===void 0?void 0:s.values())!==null&&r!==void 0?r:Vt.empty():Vt.map(Vt.concat(...this._byOwner.values()),o=>o[1])}}class _ht{constructor(e){this.errors=0,this.infos=0,this.warnings=0,this.unknowns=0,this._data=new qn,this._service=e,this._subscription=e.onMarkerChanged(this._update,this)}dispose(){this._subscription.dispose()}_update(e){for(const t of e){const i=this._data.get(t);i&&this._substract(i);const s=this._resourceStats(t);this._add(s),this._data.set(t,s)}}_resourceStats(e){const t={errors:0,warnings:0,infos:0,unknowns:0};if(pht.has(e.scheme))return t;for(const{severity:i}of this._service.read({resource:e}))i===xn.Error?t.errors+=1:i===xn.Warning?t.warnings+=1:i===xn.Info?t.infos+=1:t.unknowns+=1;return t}_substract(e){this.errors-=e.errors,this.warnings-=e.warnings,this.infos-=e.infos,this.unknowns-=e.unknowns}_add(e){this.errors+=e.errors,this.warnings+=e.warnings,this.infos+=e.infos,this.unknowns+=e.unknowns}}class zg{constructor(){this._onMarkerChanged=new Pfe({delay:0,merge:zg._merge}),this.onMarkerChanged=this._onMarkerChanged.event,this._data=new mht,this._stats=new _ht(this)}dispose(){this._stats.dispose(),this._onMarkerChanged.dispose()}remove(e,t){for(const i of t||[])this.changeOne(e,i,[])}changeOne(e,t,i){if(jge(i))this._data.delete(t,e)&&this._onMarkerChanged.fire([t]);else{const s=[];for(const r of i){const o=zg._toMarker(e,t,r);o&&s.push(o)}this._data.set(t,e,s),this._onMarkerChanged.fire([t])}}static _toMarker(e,t,i){let{code:s,severity:r,message:o,source:a,startLineNumber:l,startColumn:c,endLineNumber:u,endColumn:h,relatedInformation:d,tags:f}=i;if(o)return l=l>0?l:1,c=c>0?c:1,u=u>=l?u:l,h=h>0?h:c,{resource:t,owner:e,code:s,severity:r,message:o,source:a,startLineNumber:l,startColumn:c,endLineNumber:u,endColumn:h,relatedInformation:d,tags:f}}changeAll(e,t){const i=[],s=this._data.values(e);if(s)for(const r of s){const o=Vt.first(r);o&&(i.push(o.resource),this._data.delete(o.resource,e))}if(Ir(t)){const r=new qn;for(const{resource:o,marker:a}of t){const l=zg._toMarker(e,o,a);if(!l)continue;const c=r.get(o);c?c.push(l):(r.set(o,[l]),i.push(o))}for(const[o,a]of r)this._data.set(o,e,a)}i.length>0&&this._onMarkerChanged.fire(i)}read(e=Object.create(null)){let{owner:t,resource:i,severities:s,take:r}=e;if((!r||r<0)&&(r=-1),t&&i){const o=this._data.get(i,t);if(o){const a=[];for(const l of o)if(zg._accept(l,s)){const c=a.push(l);if(r>0&&c===r)break}return a}else return[]}else if(!t&&!i){const o=[];for(const a of this._data.values())for(const l of a)if(zg._accept(l,s)){const c=o.push(l);if(r>0&&c===r)return o}return o}else{const o=this._data.values(i??t),a=[];for(const l of o)for(const c of l)if(zg._accept(c,s)){const u=a.push(c);if(r>0&&u===r)return a}return a}}static _accept(e,t){return t===void 0||(t&e.severity)===e.severity}static _merge(e){const t=new qn;for(const i of e)for(const s of i)t.set(s,!0);return Array.from(t.keys())}}class vht extends pe{constructor(){super(...arguments),this._configurationModel=new Sr}get configurationModel(){return this._configurationModel}reload(){return this.resetConfigurationModel(),this.configurationModel}getConfigurationDefaultOverrides(){return{}}resetConfigurationModel(){this._configurationModel=new Sr;const e=vn.as($u.Configuration).getConfigurationProperties();this.updateConfigurationModel(Object.keys(e),e)}updateConfigurationModel(e,t){const i=this.getConfigurationDefaultOverrides();for(const s of e){const r=i[s],o=t[s];r!==void 0?this._configurationModel.addValue(s,r):o?this._configurationModel.addValue(s,o.default):this._configurationModel.removeValue(s)}}}class bht extends pe{constructor(e,t=[]){super(),this.logger=new J9e([e,...t]),this._register(e.onDidChangeLogLevel(i=>this.setLevel(i)))}get onDidChangeLogLevel(){return this.logger.onDidChangeLogLevel}setLevel(e){this.logger.setLevel(e)}getLevel(){return this.logger.getLevel()}trace(e,...t){this.logger.trace(e,...t)}debug(e,...t){this.logger.debug(e,...t)}info(e,...t){this.logger.info(e,...t)}warn(e,...t){this.logger.warn(e,...t)}error(e,...t){this.logger.error(e,...t)}}var Vm=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},er=function(n,e){return function(t,i){e(t,i,n)}};class yht{constructor(e){this.disposed=!1,this.model=e,this._onWillDispose=new ue}get textEditorModel(){return this.model}dispose(){this.disposed=!0,this._onWillDispose.fire()}}let WH=class{constructor(e){this.modelService=e}createModelReference(e){const t=this.modelService.getModel(e);return t?Promise.resolve(new cBe(new yht(t))):Promise.reject(new Error("Model not found"))}};WH=Vm([er(0,fn)],WH);class bF{show(){return bF.NULL_PROGRESS_RUNNER}async showWhile(e,t){await e}}bF.NULL_PROGRESS_RUNNER={done:()=>{},total:()=>{},worked:()=>{}};class Cht{withProgress(e,t,i){return t({report:()=>{}})}}class wht{constructor(){this.isExtensionDevelopment=!1,this.isBuilt=!1}}class Sht{async confirm(e){return{confirmed:this.doConfirm(e.message,e.detail),checkboxChecked:!1}}doConfirm(e,t){let i=e;return t&&(i=i+` + +`+t),mn.confirm(i)}async prompt(e){var t,i;let s;if(this.doConfirm(e.message,e.detail)){const o=[...(t=e.buttons)!==null&&t!==void 0?t:[]];e.cancelButton&&typeof e.cancelButton!="string"&&typeof e.cancelButton!="boolean"&&o.push(e.cancelButton),s=await((i=o[0])===null||i===void 0?void 0:i.run({checkboxChecked:!1}))}return{result:s}}async error(e,t){await this.prompt({type:zn.Error,message:e,detail:t})}}class Vx{info(e){return this.notify({severity:zn.Info,message:e})}warn(e){return this.notify({severity:zn.Warning,message:e})}error(e){return this.notify({severity:zn.Error,message:e})}notify(e){switch(e.severity){case zn.Error:console.error(e.message);break;case zn.Warning:console.warn(e.message);break;default:console.log(e.message);break}return Vx.NO_OP}prompt(e,t,i,s){return Vx.NO_OP}status(e,t){return pe.None}}Vx.NO_OP=new vKe;let VH=class{constructor(e){this._onWillExecuteCommand=new ue,this._onDidExecuteCommand=new ue,this.onDidExecuteCommand=this._onDidExecuteCommand.event,this._instantiationService=e}executeCommand(e,...t){const i=Yt.getCommand(e);if(!i)return Promise.reject(new Error(`command '${e}' not found`));try{this._onWillExecuteCommand.fire({commandId:e,args:t});const s=this._instantiationService.invokeFunction.apply(this._instantiationService,[i.handler,...t]);return this._onDidExecuteCommand.fire({commandId:e,args:t}),Promise.resolve(s)}catch(s){return Promise.reject(s)}}};VH=Vm([er(0,at)],VH);let Xy=class extends gut{constructor(e,t,i,s,r,o){super(e,t,i,s,r),this._cachedResolver=null,this._dynamicKeybindings=[],this._domNodeListeners=[];const a=f=>{const g=new xe;g.add(Ce(f,We.KEY_DOWN,p=>{const m=new Ki(p);this._dispatch(m,m.target)&&(m.preventDefault(),m.stopPropagation())})),g.add(Ce(f,We.KEY_UP,p=>{const m=new Ki(p);this._singleModifierDispatch(m,m.target)&&m.preventDefault()})),this._domNodeListeners.push(new kht(f,g))},l=f=>{for(let g=0;g<this._domNodeListeners.length;g++){const p=this._domNodeListeners[g];p.domNode===f&&(this._domNodeListeners.splice(g,1),p.dispose())}},c=f=>{f.getOption(61)||a(f.getContainerDomNode())},u=f=>{f.getOption(61)||l(f.getContainerDomNode())};this._register(o.onCodeEditorAdd(c)),this._register(o.onCodeEditorRemove(u)),o.listCodeEditors().forEach(c);const h=f=>{a(f.getContainerDomNode())},d=f=>{l(f.getContainerDomNode())};this._register(o.onDiffEditorAdd(h)),this._register(o.onDiffEditorRemove(d)),o.listDiffEditors().forEach(h)}addDynamicKeybinding(e,t,i,s){return _c(Yt.registerCommand(e,i),this.addDynamicKeybindings([{keybinding:t,command:e,when:s}]))}addDynamicKeybindings(e){const t=e.map(i=>{var s;return{keybinding:z8(i.keybinding,Ha),command:(s=i.command)!==null&&s!==void 0?s:null,commandArgs:i.commandArgs,when:i.when,weight1:1e3,weight2:0,extensionId:null,isBuiltinExtension:!1}});return this._dynamicKeybindings=this._dynamicKeybindings.concat(t),this.updateResolver(),st(()=>{for(let i=0;i<this._dynamicKeybindings.length;i++)if(this._dynamicKeybindings[i]===t[0]){this._dynamicKeybindings.splice(i,t.length),this.updateResolver();return}})}updateResolver(){this._cachedResolver=null,this._onDidUpdateKeybindings.fire()}_getResolver(){if(!this._cachedResolver){const e=this._toNormalizedKeybindingItems(Mo.getDefaultKeybindings(),!0),t=this._toNormalizedKeybindingItems(this._dynamicKeybindings,!1);this._cachedResolver=new xk(e,t,i=>this._log(i))}return this._cachedResolver}_documentHasFocus(){return mn.document.hasFocus()}_toNormalizedKeybindingItems(e,t){const i=[];let s=0;for(const r of e){const o=r.when||void 0,a=r.keybinding;if(!a)i[s++]=new Ese(void 0,r.command,r.commandArgs,o,t,null,!1);else{const l=Mx.resolveKeybinding(a,Ha);for(const c of l)i[s++]=new Ese(c,r.command,r.commandArgs,o,t,null,!1)}}return i}resolveKeyboardEvent(e){const t=new Yf(e.ctrlKey,e.shiftKey,e.altKey,e.metaKey,e.keyCode);return new Mx([t],Ha)}};Xy=Vm([er(0,ft),er(1,Dn),er(2,fa),er(3,is),er(4,ga),er(5,ri)],Xy);class kht extends pe{constructor(e,t){super(),this.domNode=e,this._register(t)}}function qse(n){return n&&typeof n=="object"&&(!n.overrideIdentifier||typeof n.overrideIdentifier=="string")&&(!n.resource||n.resource instanceof it)}class Z0e{constructor(){this._onDidChangeConfiguration=new ue,this.onDidChangeConfiguration=this._onDidChangeConfiguration.event;const e=new vht;this._configuration=new fF(e.reload(),new Sr,new Sr,new Sr),e.dispose()}getValue(e,t){const i=typeof e=="string"?e:void 0,s=qse(e)?e:qse(t)?t:{};return this._configuration.getValue(i,s,void 0)}updateValues(e){const t={data:this._configuration.toData()},i=[];for(const s of e){const[r,o]=s;this.getValue(r)!==o&&(this._configuration.updateValue(r,o),i.push(r))}if(i.length>0){const s=new uut({keys:i,overrides:[]},t,this._configuration);s.source=8,s.sourceConfig=null,this._onDidChangeConfiguration.fire(s)}return Promise.resolve()}updateValue(e,t,i,s){return this.updateValues([[e,t]])}inspect(e,t={}){return this._configuration.inspect(e,t,void 0)}}let HH=class{constructor(e,t,i){this.configurationService=e,this.modelService=t,this.languageService=i,this._onDidChangeConfiguration=new ue,this.configurationService.onDidChangeConfiguration(s=>{this._onDidChangeConfiguration.fire({affectedKeys:s.affectedKeys,affectsConfiguration:(r,o)=>s.affectsConfiguration(o)})})}getValue(e,t,i){const s=he.isIPosition(t)?t:null,r=s?typeof i=="string"?i:void 0:typeof t=="string"?t:void 0,o=e?this.getLanguage(e,s):void 0;return typeof r>"u"?this.configurationService.getValue({resource:e,overrideIdentifier:o}):this.configurationService.getValue(r,{resource:e,overrideIdentifier:o})}getLanguage(e,t){const i=this.modelService.getModel(e);return i?t?i.getLanguageIdAtPosition(t.lineNumber,t.column):i.getLanguageId():this.languageService.guessLanguageIdByFilepathOrFirstLine(e)}};HH=Vm([er(0,Ut),er(1,fn),er(2,sn)],HH);let $H=class{constructor(e){this.configurationService=e}getEOL(e,t){const i=this.configurationService.getValue("files.eol",{overrideIdentifier:t,resource:e});return i&&typeof i=="string"&&i!=="auto"?i:Kr||Gt?` +`:`\r +`}};$H=Vm([er(0,Ut)],$H);class Lht{publicLog2(){}}class Hx{constructor(){const e=it.from({scheme:Hx.SCHEME,authority:"model",path:"/"});this.workspace={id:Z_e,folders:[new hit({uri:e,name:"",index:0})]}}getWorkspace(){return this.workspace}getWorkspaceFolder(e){return e&&e.scheme===Hx.SCHEME?this.workspace.folders[0]:null}}Hx.SCHEME="inmemory";function DR(n,e,t){if(!e||!(n instanceof Z0e))return;const i=[];Object.keys(e).forEach(s=>{CXe(s)&&i.push([`editor.${s}`,e[s]]),t&&wXe(s)&&i.push([`diffEditor.${s}`,e[s]])}),i.length>0&&n.updateValues(i)}let zH=class{constructor(e){this._modelService=e}hasPreviewHandler(){return!1}async apply(e,t){const i=Array.isArray(e)?e:pK.convert(e),s=new Map;for(const a of i){if(!(a instanceof Ff))throw new Error("bad edit - only text edits are supported");const l=this._modelService.getModel(a.resource);if(!l)throw new Error("bad edit - model not found");if(typeof a.versionId=="number"&&l.getVersionId()!==a.versionId)throw new Error("bad state - model changed in the meantime");let c=s.get(l);c||(c=[],s.set(l,c)),c.push(un.replaceMove(M.lift(a.textEdit.range),a.textEdit.text))}let r=0,o=0;for(const[a,l]of s)a.pushStackElement(),a.pushEditOperations([],l,()=>[]),a.pushStackElement(),o+=1,r+=l.length;return{ariaSummary:I_(rH.bulkEditServiceSummary,r,o),isApplied:r>0}}};zH=Vm([er(0,fn)],zH);class xht{getUriLabel(e,t){return e.scheme==="file"?e.fsPath:e.path}getUriBasenameLabel(e){return Wl(e)}}let UH=class extends bH{constructor(e,t){super(e),this._codeEditorService=t}showContextView(e,t,i){if(!t){const s=this._codeEditorService.getFocusedCodeEditor()||this._codeEditorService.getActiveCodeEditor();s&&(t=s.getContainerDomNode())}return super.showContextView(e,t,i)}};UH=Vm([er(0,KC),er(1,ri)],UH);class Eht{constructor(){this._neverEmitter=new ue,this.onDidChangeTrust=this._neverEmitter.event}isWorkspaceTrusted(){return!0}}class Dht extends Fx{constructor(){super()}}class Iht extends bht{constructor(){super(new Q9e)}}let jH=class extends CH{constructor(e,t,i,s,r,o){super(e,t,i,s,r,o),this.configure({blockMouse:!1})}};jH=Vm([er(0,fa),er(1,is),er(2,lg),er(3,Di),er(4,Vu),er(5,ft)],jH);class Tht{async playAudioCue(e,t){}}class Nht{notify(e,t){}}jt(Ut,Z0e,0);jt(xK,HH,0);jt(z1e,$H,0);jt(K_,Hx,0);jt(Ry,xht,0);jt(fa,Lht,0);jt(XE,Sht,0);jt(SK,wht,0);jt(is,Vx,0);jt(Id,zg,0);jt(sn,Dht,0);jt(rl,Hct,0);jt(ga,Iht,0);jt(fn,LR,0);jt(rq,xH,0);jt(ft,BH,0);jt(d1e,Cht,0);jt(Mm,bF,0);jt(Rc,_Qe,0);jt(Pc,pW,0);jt(FE,zH,0);jt(f0e,Eht,0);jt(Bo,WH,0);jt(Dd,PH,0);jt(jl,Aet,0);jt(Dn,VH,0);jt(Di,Xy,0);jt(Uu,AH,0);jt(lg,UH,0);jt(_a,LH,0);jt(ag,FH,0);jt(zl,jH,0);jt(Vu,RH,0);jt(ME,Tht,0);jt(MO,Nht,0);var lt;(function(n){const e=new DE;for(const[l,c]of HJ())e.set(l,c);const t=new ER(e,!0);e.set(at,t);function i(l){s||o({});const c=e.get(l);if(!c)throw new Error("Missing service "+l);return c instanceof uh?t.invokeFunction(u=>u.get(l)):c}n.get=i;let s=!1;const r=new ue;function o(l){if(s)return t;s=!0;for(const[u,h]of HJ())e.get(u)||e.set(u,h);for(const u in l)if(l.hasOwnProperty(u)){const h=Bt(u);e.get(h)instanceof uh&&e.set(h,l[u])}const c=sJe();for(const u of c)try{t.createInstance(u)}catch(h){vt(h)}return r.fire(),t}n.initialize=o;function a(l){if(s)return l();const c=new xe,u=c.add(r.event(()=>{u.dispose(),c.add(l())}));return c}n.withServices=a})(lt||(lt={}));var UG=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},Ji=function(n,e){return function(t,i){e(t,i,n)}};let Aht=0,Kse=!1;function Pht(n){if(!n){if(Kse)return;Kse=!0}P9e(n||mn.document.body)}let IR=class extends Ey{constructor(e,t,i,s,r,o,a,l,c,u,h,d){const f={...t};f.ariaLabel=f.ariaLabel||mR.editorViewAccessibleLabel,f.ariaLabel=f.ariaLabel+";"+mR.accessibilityHelpMessage,super(e,f,{},i,s,r,o,l,c,u,h,d),a instanceof Xy?this._standaloneKeybindingService=a:this._standaloneKeybindingService=null,Pht(f.ariaContainerElement)}addCommand(e,t,i){if(!this._standaloneKeybindingService)return console.warn("Cannot add command because the editor is configured with an unrecognized KeybindingService"),null;const s="DYNAMIC_"+ ++Aht,r=ke.deserialize(i);return this._standaloneKeybindingService.addDynamicKeybinding(s,e,t,r),s}createContextKey(e,t){return this._contextKeyService.createKey(e,t)}addAction(e){if(typeof e.id!="string"||typeof e.label!="string"||typeof e.run!="function")throw new Error("Invalid action descriptor, `id`, `label` and `run` are required properties!");if(!this._standaloneKeybindingService)return console.warn("Cannot add keybinding because the editor is configured with an unrecognized KeybindingService"),pe.None;const t=e.id,i=e.label,s=ke.and(ke.equals("editorId",this.getId()),ke.deserialize(e.precondition)),r=e.keybindings,o=ke.and(s,ke.deserialize(e.keybindingContext)),a=e.contextMenuGroupId||null,l=e.contextMenuOrder||0,c=(f,...g)=>Promise.resolve(e.run(this,...g)),u=new xe,h=this.getId()+":"+t;if(u.add(Yt.registerCommand(h,c)),a){const f={command:{id:h,title:i},when:s,group:a,order:l};u.add(tr.appendMenuItem(B.EditorContext,f))}if(Array.isArray(r))for(const f of r)u.add(this._standaloneKeybindingService.addDynamicKeybinding(h,f,c,o));const d=new eme(h,i,i,void 0,s,(...f)=>Promise.resolve(e.run(this,...f)),this._contextKeyService);return this._actions.set(t,d),u.add(st(()=>{this._actions.delete(t)})),u}_triggerCommand(e,t){if(this._codeEditorService instanceof bR)try{this._codeEditorService.setActiveCodeEditor(this),super._triggerCommand(e,t)}finally{this._codeEditorService.setActiveCodeEditor(null)}else super._triggerCommand(e,t)}};IR=UG([Ji(2,at),Ji(3,ri),Ji(4,Dn),Ji(5,ft),Ji(6,Di),Ji(7,Ms),Ji(8,is),Ji(9,Dd),Ji(10,Bi),Ji(11,Ge)],IR);let qH=class extends IR{constructor(e,t,i,s,r,o,a,l,c,u,h,d,f,g,p){const m={...t};DR(u,m,!1);const _=l.registerEditorContainer(e);typeof m.theme=="string"&&l.setTheme(m.theme),typeof m.autoDetectHighContrast<"u"&&l.setAutoDetectHighContrast(!!m.autoDetectHighContrast);const b=m.model;delete m.model,super(e,m,i,s,r,o,a,l,c,h,g,p),this._configurationService=u,this._standaloneThemeService=l,this._register(_);let y;if(typeof b>"u"){const w=f.getLanguageIdByMimeType(m.language)||m.language||Ga;y=X0e(d,f,m.value||"",w,void 0),this._ownsModel=!0}else y=b,this._ownsModel=!1;if(this._attachModel(y),y){const w={oldModelUrl:null,newModelUrl:y.uri};this._onDidChangeModel.fire(w)}}dispose(){super.dispose()}updateOptions(e){DR(this._configurationService,e,!1),typeof e.theme=="string"&&this._standaloneThemeService.setTheme(e.theme),typeof e.autoDetectHighContrast<"u"&&this._standaloneThemeService.setAutoDetectHighContrast(!!e.autoDetectHighContrast),super.updateOptions(e)}_postDetachModelCleanup(e){super._postDetachModelCleanup(e),e&&this._ownsModel&&(e.dispose(),this._ownsModel=!1)}};qH=UG([Ji(2,at),Ji(3,ri),Ji(4,Dn),Ji(5,ft),Ji(6,Di),Ji(7,rl),Ji(8,is),Ji(9,Ut),Ji(10,Dd),Ji(11,fn),Ji(12,sn),Ji(13,Bi),Ji(14,Ge)],qH);let KH=class extends am{constructor(e,t,i,s,r,o,a,l,c,u,h,d){const f={...t};DR(l,f,!0);const g=o.registerEditorContainer(e);typeof f.theme=="string"&&o.setTheme(f.theme),typeof f.autoDetectHighContrast<"u"&&o.setAutoDetectHighContrast(!!f.autoDetectHighContrast),super(e,f,{},s,i,r,d,u),this._configurationService=l,this._standaloneThemeService=o,this._register(g)}dispose(){super.dispose()}updateOptions(e){DR(this._configurationService,e,!0),typeof e.theme=="string"&&this._standaloneThemeService.setTheme(e.theme),typeof e.autoDetectHighContrast<"u"&&this._standaloneThemeService.setAutoDetectHighContrast(!!e.autoDetectHighContrast),super.updateOptions(e)}_createInnerEditor(e,t,i){return e.createInstance(IR,t,i)}getOriginalEditor(){return super.getOriginalEditor()}getModifiedEditor(){return super.getModifiedEditor()}addCommand(e,t,i){return this.getModifiedEditor().addCommand(e,t,i)}createContextKey(e,t){return this.getModifiedEditor().createContextKey(e,t)}addAction(e){return this.getModifiedEditor().addAction(e)}};KH=UG([Ji(2,at),Ji(3,ft),Ji(4,ri),Ji(5,rl),Ji(6,is),Ji(7,Ut),Ji(8,zl),Ji(9,Mm),Ji(10,ag),Ji(11,ME)],KH);function X0e(n,e,t,i,s){if(t=t||"",!i){const r=t.indexOf(` +`);let o=t;return r!==-1&&(o=t.substring(0,r)),Gse(n,t,e.createByFilepathOrFirstLine(s||null,o),s)}return Gse(n,t,e.createById(i),s)}function Gse(n,e,t,i){return n.createModel(e,t,i)}class Rht extends R_{constructor(e){super(),this._getContext=e}runAction(e,t){return super.runAction(e,this._getContext())}}var Mht=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},Oht=function(n,e){return function(t,i){e(t,i,n)}};class Fht{constructor(e){this.viewModel=e}getId(){return this.viewModel}}let TR=class extends pe{constructor(e,t,i,s){super(),this._container=e,this._overflowWidgetsDomNode=t,this._workbenchUIElementFactory=i,this._instantiationService=s,this._viewModel=si(this,void 0),this._collapsed=St(this,o=>{var a;return(a=this._viewModel.read(o))===null||a===void 0?void 0:a.collapsed.read(o)}),this._contentHeight=si(this,500),this.height=St(this,o=>(this._collapsed.read(o)?0:this._contentHeight.read(o))+this._outerEditorHeight),this._modifiedContentWidth=si(this,0),this._modifiedWidth=si(this,0),this._originalContentWidth=si(this,0),this._originalWidth=si(this,0),this.maxScroll=St(this,o=>{const a=this._modifiedContentWidth.read(o)-this._modifiedWidth.read(o),l=this._originalContentWidth.read(o)-this._originalWidth.read(o);return a>l?{maxScroll:a,width:this._modifiedWidth.read(o)}:{maxScroll:l,width:this._originalWidth.read(o)}}),this._elements=en("div.multiDiffEntry",[en("div.content",{style:{display:"flex",flexDirection:"column",flex:"1",overflow:"hidden"}},[en("div.header@header",[en("div.collapse-button@collapseButton"),en("div.title.show-file-icons@title",[]),en("div.actions@actions")]),en("div.editorParent",{style:{flex:"1",display:"flex",flexDirection:"column"}},[en("div.editorContainer@editor",{style:{flex:"1"}})])])]),this.editor=this._register(this._instantiationService.createInstance(am,this._elements.editor,{overflowWidgetsDomNode:this._overflowWidgetsDomNode},{})),this.isModifedFocused=Yse(this.editor.getModifiedEditor()),this.isOriginalFocused=Yse(this.editor.getOriginalEditor()),this.isFocused=St(this,o=>this.isModifedFocused.read(o)||this.isOriginalFocused.read(o)),this._resourceLabel=this._workbenchUIElementFactory.createResourceLabel?this._register(this._workbenchUIElementFactory.createResourceLabel(this._elements.title)):void 0,this._dataStore=new xe,this._headerHeight=this._elements.header.clientHeight;const r=new JP(this._elements.collapseButton,{});this._register(pi(o=>{r.element.className="",r.icon=this._collapsed.read(o)?Pe.chevronRight:Pe.chevronDown})),this._register(r.onDidClick(()=>{var o;(o=this._viewModel.get())===null||o===void 0||o.collapsed.set(!this._collapsed.get(),void 0)})),this._register(pi(o=>{this._elements.editor.style.display=this._collapsed.read(o)?"none":"block"})),this.editor.getModifiedEditor().onDidLayoutChange(o=>{const a=this.editor.getModifiedEditor().getLayoutInfo().contentWidth;this._modifiedWidth.set(a,void 0)}),this.editor.getOriginalEditor().onDidLayoutChange(o=>{const a=this.editor.getOriginalEditor().getLayoutInfo().contentWidth;this._originalWidth.set(a,void 0)}),this._register(this.editor.onDidContentSizeChange(o=>{cN(a=>{this._contentHeight.set(o.contentHeight,a),this._modifiedContentWidth.set(this.editor.getModifiedEditor().getContentWidth(),a),this._originalContentWidth.set(this.editor.getOriginalEditor().getContentWidth(),a)})})),this._register(pi(o=>{const a=this.isFocused.read(o);this._elements.root.classList.toggle("focused",a)})),this._container.appendChild(this._elements.root),this._outerEditorHeight=38,this._register(this._instantiationService.createInstance($W,this._elements.actions,B.MultiDiffEditorFileToolbar,{actionRunner:this._register(new Rht(()=>{var o,a;return(a=(o=this._viewModel.get())===null||o===void 0?void 0:o.diffEditorViewModel)===null||a===void 0?void 0:a.model.modified.uri})),menuOptions:{shouldForwardArgs:!0}}))}setScrollLeft(e){this._modifiedContentWidth.get()-this._modifiedWidth.get()>this._originalContentWidth.get()-this._originalWidth.get()?this.editor.getModifiedEditor().setScrollLeft(e):this.editor.getOriginalEditor().setScrollLeft(e)}setData(e){function t(s){return{...s,scrollBeyondLastLine:!1,hideUnchangedRegions:{enabled:!0},scrollbar:{vertical:"hidden",horizontal:"hidden",handleMouseWheel:!1,useShadows:!1},renderOverviewRuler:!1,fixedOverflowWidgets:!0}}const i=e.viewModel.entry.value;i.onOptionsDidChange&&this._dataStore.add(i.onOptionsDidChange(()=>{var s;this.editor.updateOptions(t((s=i.options)!==null&&s!==void 0?s:{}))})),cN(s=>{var r,o;(r=this._resourceLabel)===null||r===void 0||r.setUri(e.viewModel.diffEditorViewModel.model.modified.uri),this._dataStore.clear(),this._viewModel.set(e.viewModel,s),this.editor.setModel(e.viewModel.diffEditorViewModel,s),this.editor.updateOptions(t((o=i.options)!==null&&o!==void 0?o:{}))})}render(e,t,i,s){this._elements.root.style.visibility="visible",this._elements.root.style.top=`${e.start}px`,this._elements.root.style.height=`${e.length}px`,this._elements.root.style.width=`${t}px`,this._elements.root.style.position="absolute";const r=Math.max(0,Math.min(e.length-this._headerHeight,s.start-e.start));this._elements.header.style.transform=`translateY(${r}px)`,cN(o=>{this.editor.layout({width:t,height:e.length-this._outerEditorHeight})}),this.editor.getOriginalEditor().setScrollTop(i),this._elements.header.classList.toggle("shadow",r>0||i>0)}hide(){this._elements.root.style.top="-100000px",this._elements.root.style.visibility="hidden"}};TR=Mht([Oht(3,at)],TR);function Yse(n){return Pn(e=>{const t=new xe;return t.add(n.onDidFocusEditorWidget(()=>e(!0))),t.add(n.onDidBlurEditorWidget(()=>e(!1))),t},()=>n.hasWidgetFocus())}class Bht{constructor(e){this._create=e,this._unused=new Set,this._used=new Set,this._itemData=new Map}getUnusedObj(e){var t;let i;if(this._unused.size===0)i=this._create(e),this._itemData.set(i,e);else{const s=[...this._unused.values()];i=(t=s.find(r=>this._itemData.get(r).getId()===e.getId()))!==null&&t!==void 0?t:s[0],this._unused.delete(i),this._itemData.set(i,e),i.setData(e)}return this._used.add(i),{object:i,dispose:()=>{this._used.delete(i),this._unused.size>5?i.dispose():this._unused.add(i)}}}dispose(){for(const e of this._used)e.dispose();for(const e of this._unused)e.dispose();this._used.clear(),this._unused.clear()}}var Wht=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},Zse=function(n,e){return function(t,i){e(t,i,n)}};let GH=class extends pe{constructor(e,t,i,s,r,o){super(),this._element=e,this._dimension=t,this._viewModel=i,this._workbenchUIElementFactory=s,this._parentContextKeyService=r,this._parentInstantiationService=o,this._elements=en("div",{style:{overflowY:"hidden"}},[en("div@content",{style:{overflow:"hidden"}}),en("div.monaco-editor@overflowWidgetsDomNode",{})]),this._sizeObserver=this._register(new Qme(this._element,void 0)),this._objectPool=this._register(new Bht(l=>{const c=this._instantiationService.createInstance(TR,this._elements.content,this._elements.overflowWidgetsDomNode,this._workbenchUIElementFactory);return c.setData(l),c})),this._scrollable=this._register(new PC({forceIntegerValues:!1,scheduleAtNextAnimationFrame:l=>ua(pt(this._element),l),smoothScrollDuration:100})),this._scrollableElement=this._register(new HO(this._elements.root,{vertical:1,horizontal:1,className:"monaco-component",useShadows:!1},this._scrollable)),this.scrollTop=Pn(this._scrollableElement.onScroll,()=>this._scrollableElement.getScrollPosition().scrollTop),this.scrollLeft=Pn(this._scrollableElement.onScroll,()=>this._scrollableElement.getScrollPosition().scrollLeft),this._viewItems=RC(this,(l,c)=>{const u=this._viewModel.read(l);return u?u.items.read(l).map(d=>c.add(new Vht(d,this._objectPool,this.scrollLeft))):[]}),this._totalHeight=this._viewItems.map(this,(l,c)=>l.reduce((u,h)=>u+h.contentHeight.read(c),0)),this.activeDiffItem=St(this,l=>this._viewItems.read(l).find(c=>{var u;return(u=c.template.read(l))===null||u===void 0?void 0:u.isFocused.read(l)})),this.lastActiveDiffItem=ZKe((l,c)=>{var u;return(u=this.activeDiffItem.read(l))!==null&&u!==void 0?u:c}),this._contextKeyService=this._register(this._parentContextKeyService.createScoped(this._element)),this._instantiationService=this._parentInstantiationService.createChild(new DE([ft,this._contextKeyService])),this._contextKeyService.createKey($.inMultiDiffEditor.key,!0);const a=this._parentContextKeyService.createKey($.multiDiffEditorAllCollapsed.key,!1);this._register(pi(l=>{const c=this._viewModel.read(l);if(c){const u=c.items.read(l).every(h=>h.collapsed.read(l));a.set(u)}})),this._register(pi(l=>{const c=this.lastActiveDiffItem.read(l);ln(u=>{var h;(h=this._viewModel.read(l))===null||h===void 0||h.activeDiffItem.set(c==null?void 0:c.viewModel,u)})})),this._register(pi(l=>{const c=this._dimension.read(l);this._sizeObserver.observe(c)})),this._elements.content.style.position="relative",this._register(pi(l=>{const c=this._sizeObserver.height.read(l);this._elements.root.style.height=`${c}px`;const u=this._totalHeight.read(l);this._elements.content.style.height=`${u}px`;const h=this._sizeObserver.width.read(l);let d=h;const f=this._viewItems.read(l),g=Cq(f,p=>p.maxScroll.read(l).maxScroll);if(g){const p=g.maxScroll.read(l);d=h+p.maxScroll}this._scrollableElement.setScrollDimensions({width:h,height:c,scrollHeight:u,scrollWidth:d})})),e.replaceChildren(this._scrollableElement.getDomNode()),this._register(st(()=>{e.replaceChildren()})),this._register(this._register(pi(l=>{cN(c=>{this.render(l)})})))}render(e){const t=this.scrollTop.read(e);let i=0,s=0,r=0;const o=this._sizeObserver.height.read(e),a=Nt.ofStartAndLength(t,o),l=this._sizeObserver.width.read(e);for(const c of this._viewItems.read(e)){const u=c.contentHeight.read(e),h=Math.min(u,o),d=Nt.ofStartAndLength(s,h),f=Nt.ofStartAndLength(r,u);if(f.isBefore(a))i-=u-h,c.hide();else if(f.isAfter(a))c.hide();else{const g=Math.max(0,Math.min(a.start-f.start,u-h));i-=g;const p=Nt.ofStartAndLength(t+i,o);c.render(d,g,l,p)}s+=h,r+=u}this._elements.content.style.transform=`translateY(${-(t+i)}px)`}};GH=Wht([Zse(4,ft),Zse(5,at)],GH);class Vht extends pe{constructor(e,t,i){super(),this.viewModel=e,this._objectPool=t,this._scrollLeft=i,this._lastTemplateData=si(this,{contentHeight:500,maxScroll:{maxScroll:0,width:0}}),this._templateRef=this._register(fP(this,void 0)),this.contentHeight=St(this,s=>{var r,o,a;return(a=(o=(r=this._templateRef.read(s))===null||r===void 0?void 0:r.object.height)===null||o===void 0?void 0:o.read(s))!==null&&a!==void 0?a:this._lastTemplateData.read(s).contentHeight}),this.maxScroll=St(this,s=>{var r,o;return(o=(r=this._templateRef.read(s))===null||r===void 0?void 0:r.object.maxScroll.read(s))!==null&&o!==void 0?o:this._lastTemplateData.read(s).maxScroll}),this.template=St(this,s=>{var r;return(r=this._templateRef.read(s))===null||r===void 0?void 0:r.object}),this._isHidden=si(this,!1),this._register(pi(s=>{var r;const o=this._scrollLeft.read(s);(r=this._templateRef.read(s))===null||r===void 0||r.object.setScrollLeft(o)})),this._register(pi(s=>{const r=this._templateRef.read(s);!r||!this._isHidden.read(s)||r.object.isFocused.read(s)||ln(l=>{this._lastTemplateData.set({contentHeight:r.object.height.get(),maxScroll:{maxScroll:0,width:0}},l),r.object.hide(),this._templateRef.set(void 0,l)})}))}dispose(){this.hide(),super.dispose()}toString(){return`VirtualViewItem(${this.viewModel.entry.value.title})`}hide(){this._isHidden.set(!0,void 0)}render(e,t,i,s){this._isHidden.set(!1,void 0);let r=this._templateRef.get();r||(r=this._objectPool.getUnusedObj(new Fht(this.viewModel)),this._templateRef.set(r,void 0)),r.object.render(e,i,t,s)}}U("multiDiffEditor.headerBackground",{dark:"#808080",light:"#b4b4b4",hcDark:"#808080",hcLight:"#b4b4b4"},v("multiDiffEditor.headerBackground","The background color of the diff editor's header"));var Hht=function(n,e,t,i){var s=arguments.length,r=s<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,e,t,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(e,t,r):o(e,t))||r);return s>3&&r&&Object.defineProperty(e,t,r),r},$ht=function(n,e){return function(t,i){e(t,i,n)}};let YH=class extends pe{constructor(e,t,i){super(),this._element=e,this._workbenchUIElementFactory=t,this._instantiationService=i,this._dimension=si(this,void 0),this._viewModel=si(this,void 0),this._widgetImpl=RC(this,(s,r)=>(dh(TR,s),r.add(this._instantiationService.createInstance(dh(GH,s),this._element,this._dimension,this._viewModel,this._workbenchUIElementFactory)))),this._register(NE(this._widgetImpl))}};YH=Hht([$ht(2,at)],YH);function zht(n,e,t){return lt.initialize(t||{}).createInstance(qH,n,e)}function Uht(n){return lt.get(ri).onCodeEditorAdd(t=>{n(t)})}function jht(n){return lt.get(ri).onDiffEditorAdd(t=>{n(t)})}function qht(){return lt.get(ri).listCodeEditors()}function Kht(){return lt.get(ri).listDiffEditors()}function Ght(n,e,t){return lt.initialize(t||{}).createInstance(KH,n,e)}function Yht(n,e){const t=lt.initialize(e||{});return new YH(n,{},t)}function Zht(n){if(typeof n.id!="string"||typeof n.run!="function")throw new Error("Invalid command descriptor, `id` and `run` are required properties!");return Yt.registerCommand(n.id,n.run)}function Xht(n){if(typeof n.id!="string"||typeof n.label!="string"||typeof n.run!="function")throw new Error("Invalid action descriptor, `id`, `label` and `run` are required properties!");const e=ke.deserialize(n.precondition),t=(s,...r)=>Ks.runEditorCommand(s,r,e,(o,a,l)=>Promise.resolve(n.run(a,...l))),i=new xe;if(i.add(Yt.registerCommand(n.id,t)),n.contextMenuGroupId){const s={command:{id:n.id,title:n.label},when:e,group:n.contextMenuGroupId,order:n.contextMenuOrder||0};i.add(tr.appendMenuItem(B.EditorContext,s))}if(Array.isArray(n.keybindings)){const s=lt.get(Di);if(!(s instanceof Xy))console.warn("Cannot add keybinding because the editor is configured with an unrecognized KeybindingService");else{const r=ke.and(e,ke.deserialize(n.keybindingContext));i.add(s.addDynamicKeybindings(n.keybindings.map(o=>({keybinding:o,command:n.id,when:r}))))}}return i}function Qht(n){return Q0e([n])}function Q0e(n){const e=lt.get(Di);return e instanceof Xy?e.addDynamicKeybindings(n.map(t=>({keybinding:t.keybinding,command:t.command,commandArgs:t.commandArgs,when:ke.deserialize(t.when)}))):(console.warn("Cannot add keybinding because the editor is configured with an unrecognized KeybindingService"),pe.None)}function Jht(n,e,t){const i=lt.get(sn),s=i.getLanguageIdByMimeType(e)||e;return X0e(lt.get(fn),i,n,s,t)}function edt(n,e){const t=lt.get(sn),i=t.getLanguageIdByMimeType(e)||e||Ga;n.setLanguage(t.createById(i))}function tdt(n,e,t){n&<.get(Id).changeOne(e,n.uri,t)}function idt(n){lt.get(Id).changeAll(n,[])}function ndt(n){return lt.get(Id).read(n)}function sdt(n){return lt.get(Id).onMarkerChanged(n)}function rdt(n){return lt.get(fn).getModel(n)}function odt(){return lt.get(fn).getModels()}function adt(n){return lt.get(fn).onModelAdded(n)}function ldt(n){return lt.get(fn).onModelRemoved(n)}function cdt(n){return lt.get(fn).onModelLanguageChanged(t=>{n({model:t.model,oldLanguage:t.oldLanguageId})})}function udt(n){return zct(lt.get(fn),lt.get(Bi),n)}function hdt(n,e){const t=lt.get(sn),i=lt.get(rl);return WG.colorizeElement(i,t,n,e).then(()=>{i.registerEditorContainer(n)})}function ddt(n,e,t){const i=lt.get(sn);return lt.get(rl).registerEditorContainer(mn.document.body),WG.colorize(i,n,e,t)}function fdt(n,e,t=4){return lt.get(rl).registerEditorContainer(mn.document.body),WG.colorizeModelLine(n,e,t)}function gdt(n){const e=kn.get(n);return e||{getInitialState:()=>Ly,tokenize:(t,i,s)=>Mq(n,s)}}function pdt(n,e){kn.getOrCreate(e);const t=gdt(e),i=fd(n),s=[];let r=t.getInitialState();for(let o=0,a=i.length;o<a;o++){const l=i[o],c=t.tokenize(l,!0,r);s[o]=c.tokens,r=c.endState}return s}function mdt(n,e){lt.get(rl).defineTheme(n,e)}function _dt(n){lt.get(rl).setTheme(n)}function vdt(){d9.clearAllFontInfos()}function bdt(n,e){return Yt.registerCommand({id:n,handler:e})}function ydt(n){return lt.get(_a).registerOpener({async open(t){return typeof t=="string"&&(t=it.parse(t)),n.open(t)}})}function Cdt(n){return lt.get(ri).registerCodeEditorOpenHandler(async(t,i,s)=>{var r;if(!i)return null;const o=(r=t.options)===null||r===void 0?void 0:r.selection;let a;return o&&typeof o.endLineNumber=="number"&&typeof o.endColumn=="number"?a=o:o&&(a={lineNumber:o.startLineNumber,column:o.startColumn}),await n.openCodeEditor(i,t.resource,a)?i:null})}function wdt(){return{create:zht,getEditors:qht,getDiffEditors:Kht,onDidCreateEditor:Uht,onDidCreateDiffEditor:jht,createDiffEditor:Ght,addCommand:Zht,addEditorAction:Xht,addKeybindingRule:Qht,addKeybindingRules:Q0e,createModel:Jht,setModelLanguage:edt,setModelMarkers:tdt,getModelMarkers:ndt,removeAllMarkers:idt,onDidChangeMarkers:sdt,getModels:odt,getModel:rdt,onDidCreateModel:adt,onWillDisposeModel:ldt,onDidChangeModelLanguage:cdt,createWebWorker:udt,colorizeElement:hdt,colorize:ddt,colorizeModelLine:fdt,tokenize:pdt,defineTheme:mdt,setTheme:_dt,remeasureFonts:vdt,registerCommand:bdt,registerLinkOpener:ydt,registerEditorOpener:Cdt,AccessibilitySupport:E7,ContentWidgetPositionPreference:P7,CursorChangeReason:R7,DefaultEndOfLine:M7,EditorAutoIndentStrategy:F7,EditorOption:B7,EndOfLinePreference:W7,EndOfLineSequence:V7,MinimapPosition:Y7,MouseTargetType:Z7,OverlayWidgetPositionPreference:X7,OverviewRulerLane:Q7,GlyphMarginLane:H7,RenderLineNumbersType:eW,RenderMinimap:tW,ScrollbarVisibility:nW,ScrollType:iW,TextEditorCursorBlinkingStyle:cW,TextEditorCursorStyle:uW,TrackedRangeStickiness:hW,WrappingIndent:dW,InjectedTextCursorStops:z7,PositionAffinity:J7,ShowAiIconMode:rW,ConfigurationChangedEvent:hpe,BareFontInfo:r_,FontInfo:h9,TextModelResolvedOptions:oN,FindMatch:FL,ApplyUpdateResult:JS,EditorZoom:_l,createMultiFileDiffEditor:Yht,EditorType:EE,EditorOptions:zu}}function Sdt(n,e){if(!e||!Array.isArray(e))return!1;for(const t of e)if(!n(t))return!1;return!0}function hT(n,e){return typeof n=="boolean"?n:e}function Xse(n,e){return typeof n=="string"?n:e}function kdt(n){const e={};for(const t of n)e[t]=!0;return e}function Qse(n,e=!1){e&&(n=n.map(function(i){return i.toLowerCase()}));const t=kdt(n);return e?function(i){return t[i.toLowerCase()]!==void 0&&t.hasOwnProperty(i.toLowerCase())}:function(i){return t[i]!==void 0&&t.hasOwnProperty(i)}}function ZH(n,e){e=e.replace(/@@/g,"");let t=0,i;do i=!1,e=e.replace(/@(\w+)/g,function(r,o){i=!0;let a="";if(typeof n[o]=="string")a=n[o];else if(n[o]&&n[o]instanceof RegExp)a=n[o].source;else throw n[o]===void 0?qi(n,"language definition does not contain attribute '"+o+"', used at: "+e):qi(n,"attribute reference '"+o+"' must be a string, used at: "+e);return D0(a)?"":"(?:"+a+")"}),t++;while(i&&t<5);e=e.replace(/\x01/g,"@");const s=(n.ignoreCase?"i":"")+(n.unicode?"u":"");return new RegExp(e,s)}function Ldt(n,e,t,i){if(i<0)return n;if(i<e.length)return e[i];if(i>=100){i=i-100;const s=t.split(".");if(s.unshift(t),i<s.length)return s[i]}return null}function xdt(n,e,t,i){let s=-1,r=t,o=t.match(/^\$(([sS]?)(\d\d?)|#)(.*)$/);o&&(o[3]&&(s=parseInt(o[3]),o[2]&&(s=s+100)),r=o[4]);let a="~",l=r;!r||r.length===0?(a="!=",l=""):/^\w*$/.test(l)?a="==":(o=r.match(/^(@|!@|~|!~|==|!=)(.*)$/),o&&(a=o[1],l=o[2]));let c;if((a==="~"||a==="!~")&&/^(\w|\|)*$/.test(l)){const u=Qse(l.split("|"),n.ignoreCase);c=function(h){return a==="~"?u(h):!u(h)}}else if(a==="@"||a==="!@"){const u=n[l];if(!u)throw qi(n,"the @ match target '"+l+"' is not defined, in rule: "+e);if(!Sdt(function(d){return typeof d=="string"},u))throw qi(n,"the @ match target '"+l+"' must be an array of strings, in rule: "+e);const h=Qse(u,n.ignoreCase);c=function(d){return a==="@"?h(d):!h(d)}}else if(a==="~"||a==="!~")if(l.indexOf("$")<0){const u=ZH(n,"^"+l+"$");c=function(h){return a==="~"?u.test(h):!u.test(h)}}else c=function(u,h,d,f){return ZH(n,"^"+Gg(n,l,h,d,f)+"$").test(u)};else if(l.indexOf("$")<0){const u=Op(n,l);c=function(h){return a==="=="?h===u:h!==u}}else{const u=Op(n,l);c=function(h,d,f,g,p){const m=Gg(n,u,d,f,g);return a==="=="?h===m:h!==m}}return s===-1?{name:t,value:i,test:function(u,h,d,f){return c(u,u,h,d,f)}}:{name:t,value:i,test:function(u,h,d,f){const g=Ldt(u,h,d,s);return c(g||"",u,h,d,f)}}}function XH(n,e,t){if(t){if(typeof t=="string")return t;if(t.token||t.token===""){if(typeof t.token!="string")throw qi(n,"a 'token' attribute must be of type string, in rule: "+e);{const i={token:t.token};if(t.token.indexOf("$")>=0&&(i.tokenSubst=!0),typeof t.bracket=="string")if(t.bracket==="@open")i.bracket=1;else if(t.bracket==="@close")i.bracket=-1;else throw qi(n,"a 'bracket' attribute must be either '@open' or '@close', in rule: "+e);if(t.next){if(typeof t.next!="string")throw qi(n,"the next state must be a string value in rule: "+e);{let s=t.next;if(!/^(@pop|@push|@popall)$/.test(s)&&(s[0]==="@"&&(s=s.substr(1)),s.indexOf("$")<0&&!Gct(n,Gg(n,s,"",[],""))))throw qi(n,"the next state '"+t.next+"' is not defined in rule: "+e);i.next=s}}return typeof t.goBack=="number"&&(i.goBack=t.goBack),typeof t.switchTo=="string"&&(i.switchTo=t.switchTo),typeof t.log=="string"&&(i.log=t.log),typeof t.nextEmbedded=="string"&&(i.nextEmbedded=t.nextEmbedded,n.usesEmbedded=!0),i}}else if(Array.isArray(t)){const i=[];for(let s=0,r=t.length;s<r;s++)i[s]=XH(n,e,t[s]);return{group:i}}else if(t.cases){const i=[];for(const r in t.cases)if(t.cases.hasOwnProperty(r)){const o=XH(n,e,t.cases[r]);r==="@default"||r==="@"||r===""?i.push({test:void 0,value:o,name:r}):r==="@eos"?i.push({test:function(a,l,c,u){return u},value:o,name:r}):i.push(xdt(n,e,r,o))}const s=n.defaultToken;return{test:function(r,o,a,l){for(const c of i)if(!c.test||c.test(r,o,a,l))return c.value;return s}}}else throw qi(n,"an action must be a string, an object with a 'token' or 'cases' attribute, or an array of actions; in rule: "+e)}else return{token:""}}class Edt{constructor(e){this.regex=new RegExp(""),this.action={token:""},this.matchOnlyAtLineStart=!1,this.name="",this.name=e}setRegex(e,t){let i;if(typeof t=="string")i=t;else if(t instanceof RegExp)i=t.source;else throw qi(e,"rules must start with a match string or regular expression: "+this.name);this.matchOnlyAtLineStart=i.length>0&&i[0]==="^",this.name=this.name+": "+i,this.regex=ZH(e,"^(?:"+(this.matchOnlyAtLineStart?i.substr(1):i)+")")}setAction(e,t){this.action=XH(e,this.name,t)}}function J0e(n,e){if(!e||typeof e!="object")throw new Error("Monarch: expecting a language definition object");const t={};t.languageId=n,t.includeLF=hT(e.includeLF,!1),t.noThrow=!1,t.maxStack=100,t.start=typeof e.start=="string"?e.start:null,t.ignoreCase=hT(e.ignoreCase,!1),t.unicode=hT(e.unicode,!1),t.tokenPostfix=Xse(e.tokenPostfix,"."+t.languageId),t.defaultToken=Xse(e.defaultToken,"source"),t.usesEmbedded=!1;const i=e;i.languageId=n,i.includeLF=t.includeLF,i.ignoreCase=t.ignoreCase,i.unicode=t.unicode,i.noThrow=t.noThrow,i.usesEmbedded=t.usesEmbedded,i.stateNames=e.tokenizer,i.defaultToken=t.defaultToken;function s(o,a,l){for(const c of l){let u=c.include;if(u){if(typeof u!="string")throw qi(t,"an 'include' attribute must be a string at: "+o);if(u[0]==="@"&&(u=u.substr(1)),!e.tokenizer[u])throw qi(t,"include target '"+u+"' is not defined at: "+o);s(o+"."+u,a,e.tokenizer[u])}else{const h=new Edt(o);if(Array.isArray(c)&&c.length>=1&&c.length<=3)if(h.setRegex(i,c[0]),c.length>=3)if(typeof c[1]=="string")h.setAction(i,{token:c[1],next:c[2]});else if(typeof c[1]=="object"){const d=c[1];d.next=c[2],h.setAction(i,d)}else throw qi(t,"a next state as the last element of a rule can only be given if the action is either an object or a string, at: "+o);else h.setAction(i,c[1]);else{if(!c.regex)throw qi(t,"a rule must either be an array, or an object with a 'regex' or 'include' field at: "+o);c.name&&typeof c.name=="string"&&(h.name=c.name),c.matchOnlyAtStart&&(h.matchOnlyAtLineStart=hT(c.matchOnlyAtLineStart,!1)),h.setRegex(i,c.regex),h.setAction(i,c.action)}a.push(h)}}}if(!e.tokenizer||typeof e.tokenizer!="object")throw qi(t,"a language definition must define the 'tokenizer' attribute as an object");t.tokenizer=[];for(const o in e.tokenizer)if(e.tokenizer.hasOwnProperty(o)){t.start||(t.start=o);const a=e.tokenizer[o];t.tokenizer[o]=new Array,s("tokenizer."+o,t.tokenizer[o],a)}if(t.usesEmbedded=i.usesEmbedded,e.brackets){if(!Array.isArray(e.brackets))throw qi(t,"the 'brackets' attribute must be defined as an array")}else e.brackets=[{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"},{open:"<",close:">",token:"delimiter.angle"}];const r=[];for(const o of e.brackets){let a=o;if(a&&Array.isArray(a)&&a.length===3&&(a={token:a[2],open:a[0],close:a[1]}),a.open===a.close)throw qi(t,"open and close brackets in a 'brackets' attribute must be different: "+a.open+` + hint: use the 'bracket' attribute if matching on equal brackets is required.`);if(typeof a.open=="string"&&typeof a.token=="string"&&typeof a.close=="string")r.push({token:a.token+t.tokenPostfix,open:Op(t,a.open),close:Op(t,a.close)});else throw qi(t,"every element in the 'brackets' array must be a '{open,close,token}' object or array")}return t.brackets=r,t.noThrow=!0,t}function Ddt(n){my.registerLanguage(n)}function Idt(){let n=[];return n=n.concat(my.getLanguages()),n}function Tdt(n){return lt.get(sn).languageIdCodec.encodeLanguageId(n)}function Ndt(n,e){return lt.withServices(()=>{const i=lt.get(sn).onDidRequestRichLanguageFeatures(s=>{s===n&&(i.dispose(),e())});return i})}function Adt(n,e){return lt.withServices(()=>{const i=lt.get(sn).onDidRequestBasicLanguageFeatures(s=>{s===n&&(i.dispose(),e())});return i})}function Pdt(n,e){if(!lt.get(sn).isRegisteredLanguageId(n))throw new Error(`Cannot set configuration for unknown language ${n}`);return lt.get(Bi).register(n,e,100)}class Rdt{constructor(e,t){this._languageId=e,this._actual=t}dispose(){}getInitialState(){return this._actual.getInitialState()}tokenize(e,t,i){if(typeof this._actual.tokenize=="function")return $x.adaptTokenize(this._languageId,this._actual,e,i);throw new Error("Not supported!")}tokenizeEncoded(e,t,i){const s=this._actual.tokenizeEncoded(e,i);return new zO(s.tokens,s.endState)}}class $x{constructor(e,t,i,s){this._languageId=e,this._actual=t,this._languageService=i,this._standaloneThemeService=s}dispose(){}getInitialState(){return this._actual.getInitialState()}static _toClassicTokens(e,t){const i=[];let s=0;for(let r=0,o=e.length;r<o;r++){const a=e[r];let l=a.startIndex;r===0?l=0:l<s&&(l=s),i[r]=new IL(l,a.scopes,t),s=l}return i}static adaptTokenize(e,t,i,s){const r=t.tokenize(i,s),o=$x._toClassicTokens(r.tokens,e);let a;return r.endState.equals(s)?a=s:a=r.endState,new yq(o,a)}tokenize(e,t,i){return $x.adaptTokenize(this._languageId,this._actual,e,i)}_toBinaryTokens(e,t){const i=e.encodeLanguageId(this._languageId),s=this._standaloneThemeService.getColorTheme().tokenTheme,r=[];let o=0,a=0;for(let c=0,u=t.length;c<u;c++){const h=t[c],d=s.match(i,h.scopes)|1024;if(o>0&&r[o-1]===d)continue;let f=h.startIndex;c===0?f=0:f<a&&(f=a),r[o++]=f,r[o++]=d,a=f}const l=new Uint32Array(o);for(let c=0;c<o;c++)l[c]=r[c];return l}tokenizeEncoded(e,t,i){const s=this._actual.tokenize(e,i),r=this._toBinaryTokens(this._languageService.languageIdCodec,s.tokens);let o;return s.endState.equals(i)?o=i:o=s.endState,new zO(r,o)}}function Mdt(n){return typeof n.getInitialState=="function"}function Odt(n){return"tokenizeEncoded"in n}function ebe(n){return n&&typeof n.then=="function"}function Fdt(n){const e=lt.get(rl);if(n){const t=[null];for(let i=1,s=n.length;i<s;i++)t[i]=me.fromHex(n[i]);e.setColorMapOverride(t)}else e.setColorMapOverride(null)}function tbe(n,e){return Odt(e)?new Rdt(n,e):new $x(n,e,lt.get(sn),lt.get(rl))}function jG(n,e){const t=new Oze(async()=>{const i=await Promise.resolve(e.create());return i?Mdt(i)?tbe(n,i):new Rx(lt.get(sn),lt.get(rl),n,J0e(n,i),lt.get(Ut)):null});return kn.registerFactory(n,t)}function Bdt(n,e){if(!lt.get(sn).isRegisteredLanguageId(n))throw new Error(`Cannot set tokens provider for unknown language ${n}`);return ebe(e)?jG(n,{create:()=>e}):kn.register(n,tbe(n,e))}function Wdt(n,e){const t=i=>new Rx(lt.get(sn),lt.get(rl),n,J0e(n,i),lt.get(Ut));return ebe(e)?jG(n,{create:()=>e}):kn.register(n,t(e))}function Vdt(n,e){return lt.get(Ge).referenceProvider.register(n,e)}function Hdt(n,e){return lt.get(Ge).renameProvider.register(n,e)}function $dt(n,e){return lt.get(Ge).signatureHelpProvider.register(n,e)}function zdt(n,e){return lt.get(Ge).hoverProvider.register(n,{provideHover:(i,s,r)=>{const o=i.getWordAtPosition(s);return Promise.resolve(e.provideHover(i,s,r)).then(a=>{if(a)return!a.range&&o&&(a.range=new M(s.lineNumber,o.startColumn,s.lineNumber,o.endColumn)),a.range||(a.range=new M(s.lineNumber,s.column,s.lineNumber,s.column)),a})}})}function Udt(n,e){return lt.get(Ge).documentSymbolProvider.register(n,e)}function jdt(n,e){return lt.get(Ge).documentHighlightProvider.register(n,e)}function qdt(n,e){return lt.get(Ge).linkedEditingRangeProvider.register(n,e)}function Kdt(n,e){return lt.get(Ge).definitionProvider.register(n,e)}function Gdt(n,e){return lt.get(Ge).implementationProvider.register(n,e)}function Ydt(n,e){return lt.get(Ge).typeDefinitionProvider.register(n,e)}function Zdt(n,e){return lt.get(Ge).codeLensProvider.register(n,e)}function Xdt(n,e,t){return lt.get(Ge).codeActionProvider.register(n,{providedCodeActionKinds:t==null?void 0:t.providedCodeActionKinds,documentation:t==null?void 0:t.documentation,provideCodeActions:(s,r,o,a)=>{const c=lt.get(Id).read({resource:s.uri}).filter(u=>M.areIntersectingOrTouching(u,r));return e.provideCodeActions(s,r,{markers:c,only:o.only,trigger:o.trigger},a)},resolveCodeAction:e.resolveCodeAction})}function Qdt(n,e){return lt.get(Ge).documentFormattingEditProvider.register(n,e)}function Jdt(n,e){return lt.get(Ge).documentRangeFormattingEditProvider.register(n,e)}function eft(n,e){return lt.get(Ge).onTypeFormattingEditProvider.register(n,e)}function tft(n,e){return lt.get(Ge).linkProvider.register(n,e)}function ift(n,e){return lt.get(Ge).completionProvider.register(n,e)}function nft(n,e){return lt.get(Ge).colorProvider.register(n,e)}function sft(n,e){return lt.get(Ge).foldingRangeProvider.register(n,e)}function rft(n,e){return lt.get(Ge).declarationProvider.register(n,e)}function oft(n,e){return lt.get(Ge).selectionRangeProvider.register(n,e)}function aft(n,e){return lt.get(Ge).documentSemanticTokensProvider.register(n,e)}function lft(n,e){return lt.get(Ge).documentRangeSemanticTokensProvider.register(n,e)}function cft(n,e){return lt.get(Ge).inlineCompletionsProvider.register(n,e)}function uft(n,e){return lt.get(Ge).inlayHintsProvider.register(n,e)}function hft(){return{register:Ddt,getLanguages:Idt,onLanguage:Ndt,onLanguageEncountered:Adt,getEncodedLanguageId:Tdt,setLanguageConfiguration:Pdt,setColorMap:Fdt,registerTokensProviderFactory:jG,setTokensProvider:Bdt,setMonarchTokensProvider:Wdt,registerReferenceProvider:Vdt,registerRenameProvider:Hdt,registerCompletionItemProvider:ift,registerSignatureHelpProvider:$dt,registerHoverProvider:zdt,registerDocumentSymbolProvider:Udt,registerDocumentHighlightProvider:jdt,registerLinkedEditingRangeProvider:qdt,registerDefinitionProvider:Kdt,registerImplementationProvider:Gdt,registerTypeDefinitionProvider:Ydt,registerCodeLensProvider:Zdt,registerCodeActionProvider:Xdt,registerDocumentFormattingEditProvider:Qdt,registerDocumentRangeFormattingEditProvider:Jdt,registerOnTypeFormattingEditProvider:eft,registerLinkProvider:tft,registerColorProvider:nft,registerFoldingRangeProvider:sft,registerDeclarationProvider:rft,registerSelectionRangeProvider:oft,registerDocumentSemanticTokensProvider:aft,registerDocumentRangeSemanticTokensProvider:lft,registerInlineCompletionsProvider:cft,registerInlayHintsProvider:uft,DocumentHighlightKind:O7,CompletionItemKind:T7,CompletionItemTag:N7,CompletionItemInsertTextRule:I7,SymbolKind:aW,SymbolTag:lW,IndentAction:$7,CompletionTriggerKind:A7,SignatureHelpTriggerKind:oW,InlayHintKind:U7,InlineCompletionTriggerKind:j7,CodeActionTriggerType:D7,FoldingRangeKind:lo,SelectedSuggestionInfo:Upe}}zu.wrappingIndent.defaultValue=0;zu.glyphMargin.defaultValue=!1;zu.autoIndent.defaultValue=3;zu.overviewRulerLanes.defaultValue=2;X_.setFormatterSelector((n,e,t)=>Promise.resolve(n[0]));const yo=V1e();yo.editor=wdt();yo.languages=hft();const Txt=yo.CancellationTokenSource,Nxt=yo.Emitter,dft=yo.KeyCode,fft=yo.KeyMod,Axt=yo.Position,Pxt=yo.Range,Rxt=yo.Selection,Mxt=yo.SelectionDirection,Oxt=yo.MarkerSeverity,Fxt=yo.MarkerTag,zx=yo.Uri,Bxt=yo.Token,sd=yo.editor,NS=yo.languages,f6=globalThis.MonacoEnvironment;(f6!=null&&f6.globalAPI||typeof define=="function"&&define.amd)&&(globalThis.monaco=yo);typeof globalThis.require<"u"&&typeof globalThis.require.config=="function"&&globalThis.require.config({ignoreDuplicateModules:["vscode-languageserver-types","vscode-languageserver-types/main","vscode-languageserver-textdocument","vscode-languageserver-textdocument/main","vscode-nls","vscode-nls/vscode-nls","jsonc-parser","jsonc-parser/main","vscode-uri","vscode-uri/index","vs/basic-languages/typescript/typescript"]});var QH={},ibe={};Object.defineProperty(ibe,"__esModule",{value:!0});var nbe={},ov={};Object.defineProperty(ov,"__esModule",{value:!0});ov.fetchJson=ov.fetchText=void 0;const g6=new Map,p6=new Map;async function gft(n){return g6.has(n)||g6.set(n,(async()=>{try{const e=await fetch(n);if(e.status===200)return await e.text()}catch{}})()),await g6.get(n)}ov.fetchText=gft;async function pft(n){return p6.has(n)||p6.set(n,(async()=>{try{const e=await fetch(n);if(e.status===200)return await e.json()}catch{}})()),await p6.get(n)}ov.fetchJson=pft;(function(n){Object.defineProperty(n,"__esModule",{value:!0}),n.getPackageName=n.createJsDelivrFs=n.createJsDelivrUriResolver=n.jsDelivrUriBase=void 0;const e=ov;n.jsDelivrUriBase="https://cdn.jsdelivr.net/npm";function t(r,o={}){return{uriToFileName:a,fileNameToUri:l};function a(c){if(c===n.jsDelivrUriBase)return r;if(c.startsWith(n.jsDelivrUriBase+"/")){const u=c.substring(n.jsDelivrUriBase.length),h=s(u);if(h!=null&&h.substring(1).includes("@")){const d=h.substring(0,h.lastIndexOf("@"));return`${r}${u.replace(h,d)}`}return`${r}${u}`}}function l(c){if(c===r)return n.jsDelivrUriBase;if(c.startsWith(r+"/")){const u=c.substring(r.length),h=s(u);if(h){const d=o[h]??"latest";return`${n.jsDelivrUriBase}/${h}@${d}${u.substring(1+h.length)}`}return`${n.jsDelivrUriBase}${u}`}}}n.createJsDelivrUriResolver=t;function i(r){const o=new Map,a=new Map;return{stat:l,readDirectory:c,readFile:u};async function l(f){if(f===n.jsDelivrUriBase)return{type:2,size:-1,ctime:-1,mtime:-1};if(f.startsWith(n.jsDelivrUriBase+"/")){const g=f.substring(n.jsDelivrUriBase.length),p=s(g);if(!p||!await d(p))return;a.has(p)||a.set(p,h(p));const m=await a.get(p),_=g.slice(`/${p}`.length),b=m.find(y=>y.name===_);if(b)return{type:1,ctime:new Date(b.time).valueOf(),mtime:new Date(b.time).valueOf(),size:b.size};if(m.some(y=>y.name.startsWith(_+"/")))return{type:2,ctime:-1,mtime:-1,size:-1}}}async function c(f){if(f.startsWith(n.jsDelivrUriBase+"/")){const g=f.substring(n.jsDelivrUriBase.length),p=s(g);if(!p||!await d(p))return[];a.has(p)||a.set(p,h(p));const m=await a.get(p),_=g.slice(`/${p}`.length),b=m.filter(w=>w.name.substring(0,w.name.lastIndexOf("/"))===_).map(w=>w.name.slice(_.length+1)),y=m.filter(w=>w.name.startsWith(_+"/")&&w.name.substring(_.length+1).split("/").length>=2).map(w=>w.name.slice(_.length+1).split("/")[0]);return[...b.map(w=>[w,1]),...[...new Set(y)].map(w=>[w,2])]}return[]}async function u(f){if(f.startsWith(n.jsDelivrUriBase+"/")){const g=f.substring(n.jsDelivrUriBase.length),p=s(g);return!p||!await d(p)?void 0:(o.has(g)||o.set(g,(async()=>{var _;if(((_=await l(f))==null?void 0:_.type)!==1)return;const m=await(0,e.fetchText)(f);return m!==void 0&&(r==null||r(f,m)),m})()),await o.get(g))}}async function h(f){let g=f,p="latest";if(f.substring(1).includes("@")&&(g=f.substring(0,f.lastIndexOf("@")),p=f.substring(f.lastIndexOf("@")+1)),p==="latest"){const _=await(0,e.fetchJson)(`https://data.jsdelivr.com/v1/package/resolve/npm/${g}@latest`);if(!(_!=null&&_.version))return[];p=_.version}const m=await(0,e.fetchJson)(`https://data.jsdelivr.com/v1/package/npm/${g}@${p}/flat`);return m?m.files:[]}async function d(f){if(f.substring(1).includes("@")&&(f=f.substring(0,f.lastIndexOf("@"))),f.indexOf(".")>=0||f.endsWith("/node_modules")||f.startsWith("@typescript/")||f.startsWith("@types/typescript__"))return!1;if(f.startsWith("@types/")){let g=f.slice(7);g.indexOf("__")>=0&&(g="@"+g.replace("__","/"));const p=await u(`${n.jsDelivrUriBase}/${g}/package.json`);if(p){const m=JSON.parse(p);if(m.types||m.typings)return!1;const _=await l(`${n.jsDelivrUriBase}/${g}/index.d.ts`);if((_==null?void 0:_.type)===1)return!1}}return!0}}n.createJsDelivrFs=i;function s(r){const o=r.split("/");let a=o[1];if(a.startsWith("@")){if(o.length<3||!o[2])return;a+="/"+o[2]}return a}n.getPackageName=s})(nbe);var Qy={};Object.defineProperty(Qy,"__esModule",{value:!0});Qy.createGitHubFs=Qy.createGitHubUriResolver=void 0;const Jse=ov;function mft(n,e,t,i){const s=sbe(e,t,i);return{uriToFileName:r,fileNameToUri:o};function r(a){if(a===s)return n;if(a.startsWith(s+"/")){const l=a.substring(s.length);return`${n}${l}`}}function o(a){if(a===n)return s;if(a.startsWith(n+"/")){const l=a.substring(n.length);return`${s}${l}`}}}Qy.createGitHubUriResolver=mft;function _ft(n,e,t,i){const s=sbe(n,e,t);return{stat:r,readDirectory:o,readFile:a};async function r(c){if(c===s)return{type:2,size:-1,ctime:-1,mtime:-1};if(c.startsWith(s+"/")){if(c.endsWith("/"))return{type:2,size:-1,ctime:-1,mtime:-1};const u=c.substring(s.length),h=u.substring(0,u.lastIndexOf("/")),d=u.substring(u.lastIndexOf("/")+1),f=await l(h),g=f.find(m=>m.name===d&&m.type==="file"),p=f.find(m=>m.name===d&&m.type==="dir");if(g)return{type:1,size:g.size,ctime:-1,mtime:-1};if(p)return{type:2,size:p.size,ctime:-1,mtime:-1}}}async function o(c){if(c===s||c.startsWith(s+"/")){const u=c.substring(s.length);return(await l(u)).map(f=>[f.name,f.type==="file"?1:f.type==="dir"?2:0])}return[]}async function a(c){if(c.startsWith(s+"/")){const u=await(0,Jse.fetchText)(c);return u!==void 0&&(i==null||i(c,u)),u}}async function l(c){return await(0,Jse.fetchJson)(`https://api.github.com/repos/${n}/${e}/contents${c}?ref=${t}`)??[]}}Qy.createGitHubFs=_ft;function sbe(n,e,t){return`https://raw.githubusercontent.com/${n}/${e}/${t}`}(function(n){var e=Fi&&Fi.__createBinding||(Object.create?function(s,r,o,a){a===void 0&&(a=o);var l=Object.getOwnPropertyDescriptor(r,o);(!l||("get"in l?!r.__esModule:l.writable||l.configurable))&&(l={enumerable:!0,get:function(){return r[o]}}),Object.defineProperty(s,a,l)}:function(s,r,o,a){a===void 0&&(a=o),s[a]=r[o]}),t=Fi&&Fi.__exportStar||function(s,r){for(var o in s)o!=="default"&&!Object.prototype.hasOwnProperty.call(r,o)&&e(r,s,o)};Object.defineProperty(n,"__esModule",{value:!0}),n.decorateServiceEnvironment=void 0,t(ibe,n),t(nbe,n),t(Qy,n);function i(s,r,o){const a=s.fileNameToUri,l=s.uriToFileName,c=s.fs;s.fileNameToUri=u=>r.fileNameToUri(u)??a(u),s.uriToFileName=u=>r.uriToFileName(u)??l(u),s.fs={stat(u){return r.uriToFileName(u)?o.stat(u):c==null?void 0:c.stat(u)},readDirectory(u){return r.uriToFileName(u)?o.readDirectory(u):(c==null?void 0:c.readDirectory(u))??[]},readFile(u){return r.uriToFileName(u)?o.readFile(u):c==null?void 0:c.readFile(u)}}}n.decorateServiceEnvironment=i})(QH);var AN={},yF={},iD={};Object.defineProperty(iD,"__esModule",{value:!0});iD.markers=void 0;iD.markers=new WeakMap;var dt={},rbe={exports:{}};(function(n,e){(function(t,i){n.exports=i()})(Fi,()=>(()=>{var t={470:o=>{function a(u){if(typeof u!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(u))}function l(u,h){for(var d,f="",g=0,p=-1,m=0,_=0;_<=u.length;++_){if(_<u.length)d=u.charCodeAt(_);else{if(d===47)break;d=47}if(d===47){if(!(p===_-1||m===1))if(p!==_-1&&m===2){if(f.length<2||g!==2||f.charCodeAt(f.length-1)!==46||f.charCodeAt(f.length-2)!==46){if(f.length>2){var b=f.lastIndexOf("/");if(b!==f.length-1){b===-1?(f="",g=0):g=(f=f.slice(0,b)).length-1-f.lastIndexOf("/"),p=_,m=0;continue}}else if(f.length===2||f.length===1){f="",g=0,p=_,m=0;continue}}h&&(f.length>0?f+="/..":f="..",g=2)}else f.length>0?f+="/"+u.slice(p+1,_):f=u.slice(p+1,_),g=_-p-1;p=_,m=0}else d===46&&m!==-1?++m:m=-1}return f}var c={resolve:function(){for(var u,h="",d=!1,f=arguments.length-1;f>=-1&&!d;f--){var g;f>=0?g=arguments[f]:(u===void 0&&(u=process.cwd()),g=u),a(g),g.length!==0&&(h=g+"/"+h,d=g.charCodeAt(0)===47)}return h=l(h,!d),d?h.length>0?"/"+h:"/":h.length>0?h:"."},normalize:function(u){if(a(u),u.length===0)return".";var h=u.charCodeAt(0)===47,d=u.charCodeAt(u.length-1)===47;return(u=l(u,!h)).length!==0||h||(u="."),u.length>0&&d&&(u+="/"),h?"/"+u:u},isAbsolute:function(u){return a(u),u.length>0&&u.charCodeAt(0)===47},join:function(){if(arguments.length===0)return".";for(var u,h=0;h<arguments.length;++h){var d=arguments[h];a(d),d.length>0&&(u===void 0?u=d:u+="/"+d)}return u===void 0?".":c.normalize(u)},relative:function(u,h){if(a(u),a(h),u===h||(u=c.resolve(u))===(h=c.resolve(h)))return"";for(var d=1;d<u.length&&u.charCodeAt(d)===47;++d);for(var f=u.length,g=f-d,p=1;p<h.length&&h.charCodeAt(p)===47;++p);for(var m=h.length-p,_=g<m?g:m,b=-1,y=0;y<=_;++y){if(y===_){if(m>_){if(h.charCodeAt(p+y)===47)return h.slice(p+y+1);if(y===0)return h.slice(p+y)}else g>_&&(u.charCodeAt(d+y)===47?b=y:y===0&&(b=0));break}var w=u.charCodeAt(d+y);if(w!==h.charCodeAt(p+y))break;w===47&&(b=y)}var S="";for(y=d+b+1;y<=f;++y)y!==f&&u.charCodeAt(y)!==47||(S.length===0?S+="..":S+="/..");return S.length>0?S+h.slice(p+b):(p+=b,h.charCodeAt(p)===47&&++p,h.slice(p))},_makeLong:function(u){return u},dirname:function(u){if(a(u),u.length===0)return".";for(var h=u.charCodeAt(0),d=h===47,f=-1,g=!0,p=u.length-1;p>=1;--p)if((h=u.charCodeAt(p))===47){if(!g){f=p;break}}else g=!1;return f===-1?d?"/":".":d&&f===1?"//":u.slice(0,f)},basename:function(u,h){if(h!==void 0&&typeof h!="string")throw new TypeError('"ext" argument must be a string');a(u);var d,f=0,g=-1,p=!0;if(h!==void 0&&h.length>0&&h.length<=u.length){if(h.length===u.length&&h===u)return"";var m=h.length-1,_=-1;for(d=u.length-1;d>=0;--d){var b=u.charCodeAt(d);if(b===47){if(!p){f=d+1;break}}else _===-1&&(p=!1,_=d+1),m>=0&&(b===h.charCodeAt(m)?--m==-1&&(g=d):(m=-1,g=_))}return f===g?g=_:g===-1&&(g=u.length),u.slice(f,g)}for(d=u.length-1;d>=0;--d)if(u.charCodeAt(d)===47){if(!p){f=d+1;break}}else g===-1&&(p=!1,g=d+1);return g===-1?"":u.slice(f,g)},extname:function(u){a(u);for(var h=-1,d=0,f=-1,g=!0,p=0,m=u.length-1;m>=0;--m){var _=u.charCodeAt(m);if(_!==47)f===-1&&(g=!1,f=m+1),_===46?h===-1?h=m:p!==1&&(p=1):h!==-1&&(p=-1);else if(!g){d=m+1;break}}return h===-1||f===-1||p===0||p===1&&h===f-1&&h===d+1?"":u.slice(h,f)},format:function(u){if(u===null||typeof u!="object")throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof u);return function(h,d){var f=d.dir||d.root,g=d.base||(d.name||"")+(d.ext||"");return f?f===d.root?f+g:f+"/"+g:g}(0,u)},parse:function(u){a(u);var h={root:"",dir:"",base:"",ext:"",name:""};if(u.length===0)return h;var d,f=u.charCodeAt(0),g=f===47;g?(h.root="/",d=1):d=0;for(var p=-1,m=0,_=-1,b=!0,y=u.length-1,w=0;y>=d;--y)if((f=u.charCodeAt(y))!==47)_===-1&&(b=!1,_=y+1),f===46?p===-1?p=y:w!==1&&(w=1):p!==-1&&(w=-1);else if(!b){m=y+1;break}return p===-1||_===-1||w===0||w===1&&p===_-1&&p===m+1?_!==-1&&(h.base=h.name=m===0&&g?u.slice(1,_):u.slice(m,_)):(m===0&&g?(h.name=u.slice(1,p),h.base=u.slice(1,_)):(h.name=u.slice(m,p),h.base=u.slice(m,_)),h.ext=u.slice(p,_)),m>0?h.dir=u.slice(0,m-1):g&&(h.dir="/"),h},sep:"/",delimiter:":",win32:null,posix:null};c.posix=c,o.exports=c},674:(o,a)=>{if(Object.defineProperty(a,"__esModule",{value:!0}),a.isWindows=void 0,typeof process=="object")a.isWindows=process.platform==="win32";else if(typeof navigator=="object"){let l=navigator.userAgent;a.isWindows=l.indexOf("Windows")>=0}},796:(o,a,l)=>{Object.defineProperty(a,"__esModule",{value:!0}),a.uriToFsPath=a.URI=void 0;const c=l(674),u=/^\w[\w\d+.-]*$/,h=/^\//,d=/^\/\//;function f(T,P){if(!T.scheme&&P)throw new Error(`[UriError]: Scheme is missing: {scheme: "", authority: "${T.authority}", path: "${T.path}", query: "${T.query}", fragment: "${T.fragment}"}`);if(T.scheme&&!u.test(T.scheme))throw new Error("[UriError]: Scheme contains illegal characters.");if(T.path){if(T.authority){if(!h.test(T.path))throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash ("/") character')}else if(d.test(T.path))throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")')}}const g="",p="/",m=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/;class _{constructor(P,R,F,j,K,Z=!1){gg(this,"scheme");gg(this,"authority");gg(this,"path");gg(this,"query");gg(this,"fragment");typeof P=="object"?(this.scheme=P.scheme||g,this.authority=P.authority||g,this.path=P.path||g,this.query=P.query||g,this.fragment=P.fragment||g):(this.scheme=function(q,re){return q||re?q:"file"}(P,Z),this.authority=R||g,this.path=function(q,re){switch(q){case"https":case"http":case"file":re?re[0]!==p&&(re=p+re):re=p}return re}(this.scheme,F||g),this.query=j||g,this.fragment=K||g,f(this,Z))}static isUri(P){return P instanceof _||!!P&&typeof P.authority=="string"&&typeof P.fragment=="string"&&typeof P.path=="string"&&typeof P.query=="string"&&typeof P.scheme=="string"&&typeof P.fsPath=="string"&&typeof P.with=="function"&&typeof P.toString=="function"}get fsPath(){return L(this,!1)}with(P){if(!P)return this;let{scheme:R,authority:F,path:j,query:K,fragment:Z}=P;return R===void 0?R=this.scheme:R===null&&(R=g),F===void 0?F=this.authority:F===null&&(F=g),j===void 0?j=this.path:j===null&&(j=g),K===void 0?K=this.query:K===null&&(K=g),Z===void 0?Z=this.fragment:Z===null&&(Z=g),R===this.scheme&&F===this.authority&&j===this.path&&K===this.query&&Z===this.fragment?this:new y(R,F,j,K,Z)}static parse(P,R=!1){const F=m.exec(P);return F?new y(F[2]||g,N(F[4]||g),N(F[5]||g),N(F[7]||g),N(F[9]||g),R):new y(g,g,g,g,g)}static file(P){let R=g;if(c.isWindows&&(P=P.replace(/\\/g,p)),P[0]===p&&P[1]===p){const F=P.indexOf(p,2);F===-1?(R=P.substring(2),P=p):(R=P.substring(2,F),P=P.substring(F)||p)}return new y("file",R,P,g,g)}static from(P){const R=new y(P.scheme,P.authority,P.path,P.query,P.fragment);return f(R,!0),R}toString(P=!1){return k(this,P)}toJSON(){return this}static revive(P){if(P){if(P instanceof _)return P;{const R=new y(P);return R._formatted=P.external,R._fsPath=P._sep===b?P.fsPath:null,R}}return P}}a.URI=_;const b=c.isWindows?1:void 0;class y extends _{constructor(){super(...arguments);gg(this,"_formatted",null);gg(this,"_fsPath",null)}get fsPath(){return this._fsPath||(this._fsPath=L(this,!1)),this._fsPath}toString(R=!1){return R?k(this,!0):(this._formatted||(this._formatted=k(this,!1)),this._formatted)}toJSON(){const R={$mid:1};return this._fsPath&&(R.fsPath=this._fsPath,R._sep=b),this._formatted&&(R.external=this._formatted),this.path&&(R.path=this.path),this.scheme&&(R.scheme=this.scheme),this.authority&&(R.authority=this.authority),this.query&&(R.query=this.query),this.fragment&&(R.fragment=this.fragment),R}}const w={58:"%3A",47:"%2F",63:"%3F",35:"%23",91:"%5B",93:"%5D",64:"%40",33:"%21",36:"%24",38:"%26",39:"%27",40:"%28",41:"%29",42:"%2A",43:"%2B",44:"%2C",59:"%3B",61:"%3D",32:"%20"};function S(T,P,R){let F,j=-1;for(let K=0;K<T.length;K++){const Z=T.charCodeAt(K);if(Z>=97&&Z<=122||Z>=65&&Z<=90||Z>=48&&Z<=57||Z===45||Z===46||Z===95||Z===126||P&&Z===47||R&&Z===91||R&&Z===93||R&&Z===58)j!==-1&&(F+=encodeURIComponent(T.substring(j,K)),j=-1),F!==void 0&&(F+=T.charAt(K));else{F===void 0&&(F=T.substr(0,K));const q=w[Z];q!==void 0?(j!==-1&&(F+=encodeURIComponent(T.substring(j,K)),j=-1),F+=q):j===-1&&(j=K)}}return j!==-1&&(F+=encodeURIComponent(T.substring(j))),F!==void 0?F:T}function E(T){let P;for(let R=0;R<T.length;R++){const F=T.charCodeAt(R);F===35||F===63?(P===void 0&&(P=T.substr(0,R)),P+=w[F]):P!==void 0&&(P+=T[R])}return P!==void 0?P:T}function L(T,P){let R;return R=T.authority&&T.path.length>1&&T.scheme==="file"?`//${T.authority}${T.path}`:T.path.charCodeAt(0)===47&&(T.path.charCodeAt(1)>=65&&T.path.charCodeAt(1)<=90||T.path.charCodeAt(1)>=97&&T.path.charCodeAt(1)<=122)&&T.path.charCodeAt(2)===58?P?T.path.substr(1):T.path[1].toLowerCase()+T.path.substr(2):T.path,c.isWindows&&(R=R.replace(/\//g,"\\")),R}function k(T,P){const R=P?E:S;let F="",{scheme:j,authority:K,path:Z,query:q,fragment:re}=T;if(j&&(F+=j,F+=":"),(K||j==="file")&&(F+=p,F+=p),K){let G=K.indexOf("@");if(G!==-1){const W=K.substr(0,G);K=K.substr(G+1),G=W.lastIndexOf(":"),G===-1?F+=R(W,!1,!1):(F+=R(W.substr(0,G),!1,!1),F+=":",F+=R(W.substr(G+1),!1,!0)),F+="@"}K=K.toLowerCase(),G=K.lastIndexOf(":"),G===-1?F+=R(K,!1,!0):(F+=R(K.substr(0,G),!1,!0),F+=K.substr(G))}if(Z){if(Z.length>=3&&Z.charCodeAt(0)===47&&Z.charCodeAt(2)===58){const G=Z.charCodeAt(1);G>=65&&G<=90&&(Z=`/${String.fromCharCode(G+32)}:${Z.substr(3)}`)}else if(Z.length>=2&&Z.charCodeAt(1)===58){const G=Z.charCodeAt(0);G>=65&&G<=90&&(Z=`${String.fromCharCode(G+32)}:${Z.substr(2)}`)}F+=R(Z,!0,!1)}return q&&(F+="?",F+=R(q,!1,!1)),re&&(F+="#",F+=P?re:S(re,!1,!1)),F}function x(T){try{return decodeURIComponent(T)}catch{return T.length>3?T.substr(0,3)+x(T.substr(3)):T}}a.uriToFsPath=L;const I=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function N(T){return T.match(I)?T.replace(I,P=>x(P)):T}},679:function(o,a,l){var c=this&&this.__createBinding||(Object.create?function(m,_,b,y){y===void 0&&(y=b);var w=Object.getOwnPropertyDescriptor(_,b);w&&!("get"in w?!_.__esModule:w.writable||w.configurable)||(w={enumerable:!0,get:function(){return _[b]}}),Object.defineProperty(m,y,w)}:function(m,_,b,y){y===void 0&&(y=b),m[y]=_[b]}),u=this&&this.__setModuleDefault||(Object.create?function(m,_){Object.defineProperty(m,"default",{enumerable:!0,value:_})}:function(m,_){m.default=_}),h=this&&this.__importStar||function(m){if(m&&m.__esModule)return m;var _={};if(m!=null)for(var b in m)b!=="default"&&Object.prototype.hasOwnProperty.call(m,b)&&c(_,m,b);return u(_,m),_};Object.defineProperty(a,"__esModule",{value:!0}),a.Utils=void 0;const d=h(l(470)),f=d.posix||d,g="/";var p;(function(m){m.joinPath=function(_,...b){return _.with({path:f.join(_.path,...b)})},m.resolvePath=function(_,...b){let y=_.path,w=!1;y[0]!==g&&(y=g+y,w=!0);let S=f.resolve(y,...b);return w&&S[0]===g&&!_.authority&&(S=S.substring(1)),_.with({path:S})},m.dirname=function(_){if(_.path.length===0||_.path===g)return _;let b=f.dirname(_.path);return b.length===1&&b.charCodeAt(0)===46&&(b=""),_.with({path:b})},m.basename=function(_){return f.basename(_.path)},m.extname=function(_){return f.extname(_.path)}})(p||(a.Utils=p={}))}},i={};function s(o){var a=i[o];if(a!==void 0)return a.exports;var l=i[o]={exports:{}};return t[o].call(l.exports,l,l.exports,s),l.exports}var r={};return(()=>{var o=r;Object.defineProperty(o,"__esModule",{value:!0}),o.Utils=o.URI=void 0;const a=s(796);Object.defineProperty(o,"URI",{enumerable:!0,get:function(){return a.URI}});const l=s(679);Object.defineProperty(o,"Utils",{enumerable:!0,get:function(){return l.Utils}})})(),r})())})(rbe);var obe=rbe.exports;Object.defineProperty(dt,"__esModule",{value:!0});dt.asPosition=dt.asInlayHintLabelPart=dt.asInlayHintLabel=dt.asInlayHintKind=dt.asInlayHint=dt.asSelectionRange=dt.asFoldingRange=dt.asColorPresentation=dt.asColorInformation=dt.asLink=dt.asCodeAction=dt.asCodeLens=dt.asDocumentHighlightKind=dt.asDocumentHighlight=dt.asSymbolKind=dt.asSymbolTag=dt.asDocumentSymbol=dt.asWorkspaceEdit=dt.asMarkerSeverity=dt.asRelatedInformation=dt.asMarkerTag=dt.asMarkerData=dt.asParameterInformation=dt.asSignatureInformation=dt.asSignatureHelp=dt.asUri=dt.asLocation=dt.asMarkdownString=dt.asHover=dt.asRange=dt.asCompletionItemRange=dt.asTextEdit=dt.asCommand=dt.asCompletionItem=dt.asCompletionItemKind=dt.asCompletionList=void 0;const vft=obe;function bft(n,e){return{incomplete:n.isIncomplete,suggestions:n.items.map(t=>lbe(t,e))}}dt.asCompletionList=bft;function abe(n){switch(n){case 2:return 0;case 3:return 1;case 4:return 2;case 5:return 3;case 6:return 4;case 7:return 5;case 8:return 7;case 9:return 8;case 10:return 9;case 11:return 12;case 12:return 13;case 13:return 15;case 14:return 17;case 15:return 27;case 1:return 18;case 16:return 19;case 17:return 20;case 18:return 21;case 19:return 23;case 20:return 16;case 21:return 14;case 22:return 6;case 23:return 10;case 24:return 11;case 25:return 24;default:return 18}}dt.asCompletionItemKind=abe;function lbe(n,e){var t,i;return{label:n.label,kind:abe(n.kind),tags:n.tags,detail:n.detail,documentation:n.documentation,sortText:n.sortText,filterText:n.filterText,preselect:n.preselect,insertText:((t=n.textEdit)==null?void 0:t.newText)??n.insertText??n.label,insertTextRules:0,range:n.textEdit?cbe(n.textEdit):Ur(e),commitCharacters:n.commitCharacters,additionalTextEdits:(i=n.additionalTextEdits)==null?void 0:i.map(Jy),command:n.command?nD(n.command):void 0}}dt.asCompletionItem=lbe;function nD(n){return{id:n.command,title:n.title,arguments:n.arguments}}dt.asCommand=nD;function Jy(n){return{range:Ur(n.range),text:n.newText}}dt.asTextEdit=Jy;function cbe(n){return"insert"in n&&"replace"in n?{insert:Ur(n.insert),replace:Ur(n.replace)}:Ur(n.range)}dt.asCompletionItemRange=cbe;function Ur(n){return{startLineNumber:n.start.line+1,startColumn:n.start.character+1,endLineNumber:n.end.line+1,endColumn:n.end.character+1}}dt.asRange=Ur;function yft(n){return{contents:qG(n.contents),range:n.range?Ur(n.range):void 0}}dt.asHover=yft;function qG(n){return typeof n=="string"?[{value:n}]:Array.isArray(n)?n.map(qG).flat():[n]}dt.asMarkdownString=qG;function ube(n){return"targetUri"in n&&"targetSelectionRange"in n?{uri:gh(n.targetUri),range:Ur(n.targetSelectionRange)}:{uri:gh(n.uri),range:Ur(n.range)}}dt.asLocation=ube;function gh(n){return vft.URI.parse(n)}dt.asUri=gh;function Cft(n){return{signatures:n.signatures.map(hbe),activeSignature:n.activeSignature??0,activeParameter:n.activeParameter??0}}dt.asSignatureHelp=Cft;function hbe(n){return{label:n.label,documentation:n.documentation,parameters:n.parameters?n.parameters.map(dbe):[],activeParameter:n.activeParameter}}dt.asSignatureInformation=hbe;function dbe(n){return{label:n.label,documentation:n.documentation}}dt.asParameterInformation=dbe;function fbe(n){var e,t,i;return{code:(e=n.code)==null?void 0:e.toString(),severity:mbe(n.severity),message:n.message,source:n.source,...Ur(n.range),relatedInformation:(t=n.relatedInformation)==null?void 0:t.map(pbe),tags:(i=n.tags)==null?void 0:i.map(gbe)}}dt.asMarkerData=fbe;function gbe(n){switch(n){case 1:return 1;case 2:return 2}}dt.asMarkerTag=gbe;function pbe(n){return{resource:gh(n.location.uri),message:n.message,...Ur(n.location.range)}}dt.asRelatedInformation=pbe;function mbe(n){switch(n){case 1:return 8;case 2:return 4;case 3:return 2;case 4:return 1;default:return 2}}dt.asMarkerSeverity=mbe;function _be(n){var t,i,s,r,o,a;const e={edits:[]};if(n.changes)for(const l in n.changes){const c=n.changes[l];for(const u of c)e.edits.push({resource:gh(l),textEdit:Jy(u),versionId:void 0})}if(n.documentChanges)for(const l of n.documentChanges)if("edits"in l)for(const c of l.edits)e.edits.push({resource:gh(l.textDocument.uri),textEdit:Jy(c),versionId:l.textDocument.version??void 0});else l.kind==="create"?e.edits.push({newResource:gh(l.uri),options:{overwrite:((t=l.options)==null?void 0:t.overwrite)??!1,ignoreIfExists:((i=l.options)==null?void 0:i.ignoreIfExists)??!1}}):l.kind==="rename"?e.edits.push({oldResource:gh(l.oldUri),newResource:gh(l.newUri),options:{overwrite:((s=l.options)==null?void 0:s.overwrite)??!1,ignoreIfExists:((r=l.options)==null?void 0:r.ignoreIfExists)??!1}}):l.kind==="delete"&&e.edits.push({oldResource:gh(l.uri),options:{recursive:((o=l.options)==null?void 0:o.recursive)??!1,ignoreIfNotExists:((a=l.options)==null?void 0:a.ignoreIfNotExists)??!1}});return e}dt.asWorkspaceEdit=_be;function vbe(n){var e;return{name:n.name,detail:"",kind:ybe(n.kind),tags:((e=n.tags)==null?void 0:e.map(bbe))??[],range:Ur(n.range),selectionRange:Ur(n.selectionRange),children:n.children?n.children.map(vbe):void 0}}dt.asDocumentSymbol=vbe;function bbe(n){switch(n){case 1:return 1}}dt.asSymbolTag=bbe;function ybe(n){switch(n){case 1:return 0;case 2:return 1;case 3:return 2;case 4:return 3;case 5:return 4;case 6:return 5;case 7:return 6;case 8:return 7;case 9:return 8;case 10:return 9;case 11:return 10;case 12:return 11;case 13:return 12;case 14:return 13;case 15:return 14;case 16:return 15;case 17:return 16;case 18:return 17;case 19:return 18;case 20:return 19;case 21:return 20;case 22:return 21;case 23:return 22;case 24:return 23;case 25:return 24;case 26:return 25;default:return 0}}dt.asSymbolKind=ybe;function wft(n){return{range:Ur(n.range),kind:Cbe(n.kind)}}dt.asDocumentHighlight=wft;function Cbe(n){switch(n){case 1:return 0;case 2:return 1;case 3:return 2;default:return 0}}dt.asDocumentHighlightKind=Cbe;function Sft(n){return{range:Ur(n.range),command:n.command?nD(n.command):void 0}}dt.asCodeLens=Sft;function kft(n){var e;return{title:n.title,command:n.command?nD(n.command):void 0,edit:n.edit?_be(n.edit):void 0,diagnostics:n.diagnostics?n.diagnostics.map(fbe):void 0,kind:n.kind,isPreferred:n.isPreferred,disabled:(e=n.disabled)==null?void 0:e.reason}}dt.asCodeAction=kft;function Lft(n){return{range:Ur(n.range),url:n.target,tooltip:n.tooltip}}dt.asLink=Lft;function xft(n){return{range:Ur(n.range),color:n.color}}dt.asColorInformation=xft;function Eft(n){return{label:n.label,textEdit:n.textEdit?Jy(n.textEdit):void 0,additionalTextEdits:n.additionalTextEdits?n.additionalTextEdits.map(Jy):void 0}}dt.asColorPresentation=Eft;function Dft(n){return{start:n.startLine+1,end:n.endLine+1,kind:{value:n.kind??""}}}dt.asFoldingRange=Dft;function Ift(n){return{range:Ur(n.range)}}dt.asSelectionRange=Ift;function Tft(n){return{label:Sbe(n.label),tooltip:n.tooltip,position:Lbe(n.position),kind:n.kind?wbe(n.kind):void 0,paddingLeft:n.paddingLeft,paddingRight:n.paddingRight}}dt.asInlayHint=Tft;function wbe(n){switch(n){case 2:return 2;case 1:return 1}}dt.asInlayHintKind=wbe;function Sbe(n){return typeof n=="string"?n:n.map(kbe)}dt.asInlayHintLabel=Sbe;function kbe(n){return{label:n.value,tooltip:n.tooltip,command:n.command?nD(n.command):void 0,location:n.location?ube(n.location):void 0}}dt.asInlayHintLabelPart=kbe;function Lbe(n){return{lineNumber:n.line+1,column:n.character+1}}dt.asPosition=Lbe;var ds={};Object.defineProperty(ds,"__esModule",{value:!0});ds.asFormattingOptions=ds.asTriggerKind=ds.asMarkdownString=ds.asParameterInformation=ds.asSignatureInformation=ds.asSignatureHelp=ds.asSignatureHelpTriggerKind=ds.asSignatureHelpContext=ds.asCompletionContext=ds.asRange=ds.asPosition=void 0;function JH(n){return{line:n.lineNumber-1,character:n.column-1}}ds.asPosition=JH;function Nft(n){return{start:JH({lineNumber:n.startLineNumber,column:n.startColumn}),end:JH({lineNumber:n.endLineNumber,column:n.endColumn})}}ds.asRange=Nft;function Aft(n){return{triggerKind:Tbe(n.triggerKind),triggerCharacter:n.triggerCharacter}}ds.asCompletionContext=Aft;function Pft(n){return{triggerKind:xbe(n.triggerKind),triggerCharacter:n.triggerCharacter,isRetrigger:n.isRetrigger,activeSignatureHelp:n.activeSignatureHelp?Ebe(n.activeSignatureHelp):void 0}}ds.asSignatureHelpContext=Pft;function xbe(n){switch(n){case 1:return 1;case 2:return 2;case 3:return 3}}ds.asSignatureHelpTriggerKind=xbe;function Ebe(n){return{signatures:n.signatures.map(Dbe),activeSignature:n.activeSignature,activeParameter:n.activeParameter}}ds.asSignatureHelp=Ebe;function Dbe(n){return{label:n.label,documentation:KG(n.documentation),parameters:n.parameters.map(Ibe),activeParameter:n.activeParameter}}ds.asSignatureInformation=Dbe;function Ibe(n){return{label:n.label,documentation:KG(n.documentation)}}ds.asParameterInformation=Ibe;function KG(n){if(n)return typeof n=="string"?n:{kind:"markdown",value:n.value}}ds.asMarkdownString=KG;function Tbe(n){switch(n){case 0:return 1;case 1:return 2;case 2:return 3}}ds.asTriggerKind=Tbe;function Rft(n){return{tabSize:n.tabSize,insertSpaces:n.insertSpaces}}ds.asFormattingOptions=Rft;Object.defineProperty(yF,"__esModule",{value:!0});yF.editor=void 0;const Mft=iD,ere=dt,tre=ds;var ire;(function(n){function e(i,s,r,o,a){const l=[],c=new Map;l.push(a.onDidCreateModel(f=>h(f)),a.onWillDisposeModel(u),a.onDidChangeModelLanguage(f=>{u(f.model),h(f.model)}),{dispose:()=>{for(const f of a.getModels())u(f)}});for(const f of a.getModels())h(f);return{dispose:()=>l.forEach(f=>f.dispose())};function u(f){var p;a.setModelMarkers(f,r,[]);const g=f.uri.toString();c.has(g)&&((p=c.get(g))==null||p.dispose(),c.delete(g))}function h(f){var _,b;if(!s.includes(((_=f.getLanguageId)==null?void 0:_.call(f))??((b=f.getModeId)==null?void 0:b.call(f))))return;let g;const p=f.onDidChangeContent(()=>{clearTimeout(g),g=setTimeout(()=>d(f),250)}),m=f.onDidChangeAttached(()=>{f.isAttachedToEditor()?d(f):a.setModelMarkers(f,r,[])});c.set(f.uri.toString(),{dispose:()=>{p.dispose(),m.dispose(),clearTimeout(g)}}),d(f)}async function d(f){if(f.isDisposed()||!f.isAttachedToEditor())return;const g=f.getVersionId(),m=await(await i.withSyncedResources(o())).doValidation(f.uri.toString(),"all");if(f.getVersionId()!==g)return;const _=m.map(b=>{const y=ere.asMarkerData(b);return Mft.markers.set(y,b),y});a.setModelMarkers(f,r,_)}}n.activateMarkers=e;function t(i,s,r,o){const a=[],l=new Map;let c;a.push(o.onDidCreateModel(f=>h(f)),o.onWillDisposeModel(u),o.onDidChangeModelLanguage(f=>{u(f.model),h(f.model)}),{dispose:()=>{for(const f of l.values())f.dispose();l.clear()}});for(const f of o.getModels())h(f);return{dispose:()=>a.forEach(f=>f.dispose())};function u(f){var g;l.has(f)&&((g=l.get(f))==null||g.dispose(),l.delete(f))}function h(f){var g,p;s.includes(((g=f.getLanguageId)==null?void 0:g.call(f))??((p=f.getModeId)==null?void 0:p.call(f)))&&l.set(f,f.onDidChangeContent(m=>{if(f.isDisposed()||!f.isAttachedToEditor()||m.changes.length===0||m.isUndoing||m.isRedoing)return;const _=m.changes[m.changes.length-1];d(f,_)}))}async function d(f,g){c&&(clearTimeout(c),c=void 0);const p=f.getVersionId();c=setTimeout(()=>{(async()=>{var y;if(f.getVersionId()!==p)return;const _=await(await i.withSyncedResources(r())).doAutoInsert(f.uri.toString(),tre.asPosition({lineNumber:g.range.startLineNumber,column:g.range.startColumn+g.text.length}),{lastChange:{range:tre.asRange(g.range),rangeLength:g.rangeLength,text:g.text,rangeOffset:g.rangeOffset}});if(f.getVersionId()!==p)return;const b=o.getEditors().find(w=>w.getModel()===f);b&&_&&f.getVersionId()===p&&(typeof _=="string"?(y=b==null?void 0:b.getContribution("snippetController2"))==null||y.insert(_):f.pushEditOperations([],[ere.asTextEdit(_)],()=>[]))})(),c=void 0},100)}}n.activateAutoInsertion=t})(ire||(yF.editor=ire={}));var CF={},wF={},Nbe={},GC={},Hf={},GG={},Abe={},SF={};Object.defineProperty(SF,"__esModule",{value:!0});SF.binarySearch=void 0;function Oft(n,e){let t=0,i=n.length-1;for(;t<=i;){const s=Math.floor((t+i)/2),r=n[s];if(r<e)t=s+1;else if(r>e)i=s-1;else{t=s,i=s;break}}return Math.max(Math.min(t,i,n.length-1),0)}SF.binarySearch=Oft;var bu={};Object.defineProperty(bu,"__esModule",{value:!0});bu.track=bu.resetOffsetStack=bu.offsetStack=bu.setTracking=void 0;let Pbe=!0,YG=0;function Fft(n){Pbe=n}bu.setTracking=Fft;function Bft(){YG++}bu.offsetStack=Bft;function Wft(){YG--}bu.resetOffsetStack=Wft;function Vft(n,e=[]){return[new Proxy(n,{get(u,h,d){if(Pbe){if(h==="push")return t;if(h==="pop")return i;if(h==="shift")return s;if(h==="unshift")return r;if(h==="splice")return o;if(h==="sort")return a;if(h==="reverse")return l}return Reflect.get(u,h,d)}}),e];function t(...u){return e.push({stack:c(),length:u.length}),n.push(...u)}function i(){if(e.length){const u=e[e.length-1];u.length>1?u.length--:e.pop()}return n.pop()}function s(){if(e.length){const u=e[0];u.length>1?u.length--:e.shift()}return n.shift()}function r(...u){return e.unshift({stack:c(),length:u.length}),n.unshift(...u)}function o(u,h,...d){h===void 0&&(h=n.length-u);let f=0,g;for(let m=0;m<e.length;m++){const _=e[m],b=f;if(f=b+_.length,u>=b){g=m+1;const w=_.length;_.length=u-b,e.splice(g,0,{stack:_.stack,length:w-_.length});break}}if(g===void 0)throw new Error("Invalid splice operation");let p=h;for(let m=g;m<e.length;m++){const _=e[m];for(;p>0&&_.length>0;)_.length--,p--;if(p===0)break}return e.splice(g,0,{stack:c(),length:d.length}),n.splice(u,h,...d)}function a(u){return e.splice(0,e.length,{stack:c(),length:n.length}),n.sort(u)}function l(){return e.splice(0,e.length,{stack:c(),length:n.length}),n.reverse()}function c(){let h=new Error().stack.split(` +`)[3+YG].trim();return h.endsWith(")")?h=h.slice(h.lastIndexOf("(")+1,-1):h=h.slice(h.lastIndexOf(" ")+1),h}}bu.track=Vft;var Rbe={};Object.defineProperty(Rbe,"__esModule",{value:!0});(function(n){var e=Fi&&Fi.__createBinding||(Object.create?function(m,_,b,y){y===void 0&&(y=b);var w=Object.getOwnPropertyDescriptor(_,b);(!w||("get"in w?!_.__esModule:w.writable||w.configurable))&&(w={enumerable:!0,get:function(){return _[b]}}),Object.defineProperty(m,y,w)}:function(m,_,b,y){y===void 0&&(y=b),m[y]=_[b]}),t=Fi&&Fi.__exportStar||function(m,_){for(var b in m)b!=="default"&&!Object.prototype.hasOwnProperty.call(_,b)&&e(_,m,b)};Object.defineProperty(n,"__esModule",{value:!0}),n.replaceRange=n.replaceSourceRange=n.replaceAll=n.replace=n.create=n.toString=n.getLength=void 0;const i=SF,s=bu;t(Rbe,n),t(bu,n);function r(m){let _=0;for(const b of m)_+=typeof b=="string"?b.length:b[0].length;return _}n.getLength=r;function o(m){return m.map(_=>typeof _=="string"?_:_[0]).join("")}n.toString=o;function a(m){return[[m,void 0,0]]}n.create=a;function l(m,_,...b){const w=o(m).match(_);if(w&&w.index!==void 0){const S=w.index,E=S+w[0].length;(0,s.offsetStack)(),h(m,S,E,...b.map(L=>typeof L=="function"?L(w[0]):L)),(0,s.resetOffsetStack)()}}n.replace=l;function c(m,_,...b){const y=o(m),w=y.matchAll(_);let S=y.length,E=0;for(const L of w)if(L.index!==void 0){const k=L.index+E,x=k+L[0].length;(0,s.offsetStack)(),h(m,k,x,...b.map(N=>typeof N=="function"?N(L[0]):N)),(0,s.resetOffsetStack)();const I=r(m);E+=I-S,S=I}}n.replaceAll=c;function u(m,_,b,y,...w){for(const S of m)if(typeof S!="string"&&S[1]===_){const E=typeof S[2]=="number"?S[2]:S[2][0],L=typeof S[2]=="number"?S[2]+S[0].length:S[2][1];if(E<=b&&L>=y){const k=[];b>E&&k.push(f(S,b-E));for(const x of w)k.push(x);return y<L&&k.push(g(S,y-L)),d(k),(0,s.offsetStack)(),m.splice(m.indexOf(S),1,...k),(0,s.resetOffsetStack)(),!0}}return!1}n.replaceSourceRange=u;function h(m,_,b,...y){const w=p(m),S=(0,i.binarySearch)(w,_),E=(0,i.binarySearch)(w,b),L=m[S],k=m[E],x=w[S],I=w[E],N=w[E]+(typeof k=="string"?k.length:k[0].length),T=[];_>x&&T.push(f(L,_-x));for(const P of y)T.push(P);b<N&&T.push(g(k,b-I)),d(T),(0,s.offsetStack)(),m.splice(S,E-S+1,...T),(0,s.resetOffsetStack)()}n.replaceRange=h;function d(m){for(let _=m.length-1;_>=1;_--)typeof m[_]=="string"&&typeof m[_-1]=="string"&&(m[_-1]=m[_-1]+m[_],(0,s.offsetStack)(),m.splice(_,1),(0,s.resetOffsetStack)())}function f(m,_){if(typeof m=="string")return m.slice(0,_);const b=m[0],y=m[2],w=b.slice(0,_),S=typeof y=="number"?y:[y[0],y[1]-(b.length-w.length)];return[w,m[1],S,...m.slice(3)]}function g(m,_){if(typeof m=="string")return m.slice(_);const b=m[0],y=m[2],w=b.slice(_);_<0&&(_+=b.length);const S=typeof y=="number"?y+_:[y[0]+_,y[1]];return[w,m[1],S,...m.slice(3)]}function p(m){const _=[];let b=0;for(const y of m)_.push(b),b+=typeof y=="string"?y.length:y[0].length;return _}})(Abe);(function(n){var e=Fi&&Fi.__createBinding||(Object.create?function(o,a,l,c){c===void 0&&(c=l);var u=Object.getOwnPropertyDescriptor(a,l);(!u||("get"in u?!a.__esModule:u.writable||u.configurable))&&(u={enumerable:!0,get:function(){return a[l]}}),Object.defineProperty(o,c,u)}:function(o,a,l,c){c===void 0&&(c=l),o[c]=a[l]}),t=Fi&&Fi.__exportStar||function(o,a){for(var l in o)l!=="default"&&!Object.prototype.hasOwnProperty.call(a,l)&&e(a,o,l)};Object.defineProperty(n,"__esModule",{value:!0}),n.buildStacks=n.buildMappings=n.SourceMap=void 0,t(Abe,n);class i{get memo(){if(!this._memo){let a=function(c){const u=new Set;for(const f of l.mappings)u.add(f[c][0]),u.add(f[c][1]);const h=[...u].sort((f,g)=>f-g).map(f=>({offset:f,mappings:new Set}));for(const f of l.mappings){const g=d(f[c][0]),p=d(f[c][1]);for(let m=g;m<=p;m++)h[m].mappings.add(f)}return h;function d(f){let g=0,p=h.length-1;for(;g<=p;){const m=Math.floor((g+p)/2),_=h[m];if(_.offset<f)g=m+1;else if(_.offset>f)p=m-1;else return m}}};const l=this;this._memo={sourceRange:a("sourceRange"),generatedRange:a("generatedRange")}}return this._memo}constructor(a){this.mappings=a}toSourceOffset(a,l=!1){for(const c of this.matching(a,"generatedRange","sourceRange",l))return c}toGeneratedOffset(a,l=!1){for(const c of this.matching(a,"sourceRange","generatedRange",l))return c}toSourceOffsets(a,l=!1){return this.matching(a,"generatedRange","sourceRange",l)}toGeneratedOffsets(a,l=!1){return this.matching(a,"sourceRange","generatedRange",l)}*matching(a,l,c,u){const h=this.memo[l];if(h.length===0)return;const{low:d,high:f}=this.binarySearchMemo(h,a),g=new Set;for(let p=d;p<=f;p++)for(const m of h[p].mappings){if(g.has(m))continue;g.add(m);const _=this.matchOffset(a,m[l],m[c],u);_!==void 0&&(yield[_,m])}}matchOffset(a,l,c,u){if(a>=l[0]&&a<=l[1]){let h=c[0]+a-l[0];if(u&&(h+=c[1]-c[0]-(l[1]-l[0])),h>=c[0]&&h<=c[1])return h}}binarySearchMemo(a,l){let c=0,u=a.length-1;for(;c<=u;){const h=Math.floor((c+u)/2),d=a[h];if(d.offset<l)c=h+1;else if(d.offset>l)u=h-1;else{c=h,u=h;break}}return{low:Math.max(Math.min(c,u,a.length-1),0),high:Math.min(Math.max(c,u,0),a.length-1)}}}n.SourceMap=i;function s(o){let a=0;const l=[];for(const c of o)typeof c=="string"?a+=c.length:(l.push({generatedRange:[a,a+c[0].length],source:c[1],sourceRange:typeof c[2]=="number"?[c[2],c[2]+c[0].length]:c[2],data:c[3]}),a+=c[0].length);return l}n.buildMappings=s;function r(o,a){let l=0,c=0;const u=[];for(const h of a){const d=l;for(let f=0;f<h.length;f++){const g=o[c+f];typeof g=="string"?l+=g.length:l+=g[0].length}c+=h.length,u.push({range:[d,l],source:h.stack})}return u}n.buildStacks=r})(GG);var sD={};Object.defineProperty(sD,"__esModule",{value:!0});sD.MirrorMap=void 0;const Hft=GG;class $ft extends Hft.SourceMap{*findMirrorOffsets(e){for(const t of this.toGeneratedOffsets(e))yield[t[0],t[1].data[1]];for(const t of this.toSourceOffsets(e))yield[t[0],t[1].data[0]]}}sD.MirrorMap=$ft;Object.defineProperty(Hf,"__esModule",{value:!0});Hf.forEachEmbeddedFile=Hf.updateVirtualFileMaps=Hf.createVirtualFiles=void 0;const zft=GG,Uft=sD;function jft(n){const e=new Map,t=new Map,i=new WeakMap,s=new WeakMap;return{allSources(){return Array.from(e.values())},updateSource(c,u,h){const d=eh(c),f=e.get(d);if(f)return f.languageId!==h?(this.deleteSource(c),this.updateSource(c,u,h)):(f.snapshot=u,r(f),f.language.updateVirtualFile(f.root,u),o(f),f.root);for(const g of n){const p=g.createVirtualFile(c,u,h);if(p){const m={fileName:c,languageId:h,snapshot:u,root:p,language:g};return e.set(d,m),o(m),p}}},deleteSource(c){var d,f;const u=eh(c),h=e.get(u);h&&((f=(d=h.language).deleteVirtualFile)==null||f.call(d,h.root),e.delete(u),r(h))},getSource(c){const u=eh(c);return e.get(u)},hasSource:c=>e.has(eh(c)),getMirrorMap:l,getMaps:a,hasVirtualFile(c){return!!t.get(eh(c))},getVirtualFile(c){const u=t.get(eh(c));return u?[u.virtualFile,u.source]:[void 0,void 0]}};function r(c){NR(c.root,u=>{t.delete(eh(u.fileName))})}function o(c){NR(c.root,u=>{t.set(eh(u.fileName),{virtualFile:u,source:c})})}function a(c){return i.has(c.snapshot)||i.set(c.snapshot,new Map),Mbe(c,u=>{if(u){const h=e.get(eh(u));return[u,h.snapshot]}else{const h=t.get(eh(c.fileName)).source;return[h.fileName,h.snapshot]}},i.get(c.snapshot)),i.get(c.snapshot)}function l(c){return s.has(c.snapshot)||s.set(c.snapshot,c.mirrorBehaviorMappings?new Uft.MirrorMap(c.mirrorBehaviorMappings):void 0),s.get(c.snapshot)}}Hf.createVirtualFiles=jft;function Mbe(n,e,t=new Map){const i=new Set;for(const s of n.mappings){if(i.has(s.source))continue;i.add(s.source);const r=e(s.source);r&&(!t.has(r[0])||t.get(r[0])[0]!==r[1])&&t.set(r[0],[r[1],new zft.SourceMap(n.mappings.filter(o=>o.source===s.source))])}return t}Hf.updateVirtualFileMaps=Mbe;function NR(n,e){e(n);for(const t of n.embeddedFiles)NR(t,e)}Hf.forEachEmbeddedFile=NR;function eh(n){return n.replace(/\\/g,"/").toLowerCase()}var kF={};Object.defineProperty(kF,"__esModule",{value:!0});kF.createLanguageContext=void 0;const qft=Hf;function Kft(n,e){let t=n,i=new Map,s;const r=(0,qft.createVirtualFiles)(e);for(const a of e.reverse())if(a.resolveHost){const l=t;let c=a.resolveHost(t);c===l&&(console.warn("[volar] language.resolveHost() should not return the same host instance."),c={...c}),t=new Proxy(c,{get(u,h){return h in u?u[h]:l[h]}})}return{rawHost:n,host:t,virtualFiles:new Proxy(r,{get:(a,l)=>(o(),a[l])})};function o(){var h;const a=t.getProjectVersion();if(!(a!==s))return;const c=new Map,u=new Set(i.keys());for(const d of t.getScriptFileNames())c.set(d,t.getScriptSnapshot(d));for(const[d,f]of c)u.delete(d),i.get(d)!==c.get(d)&&(f?r.updateSource(d,f,(h=t.getLanguageId)==null?void 0:h.call(t,d)):r.deleteSource(d));for(const d of u)r.deleteSource(d);i=c,s=a}}kF.createLanguageContext=Kft;var $h={};Object.defineProperty($h,"__esModule",{value:!0});$h.FileKind=$h.MirrorBehaviorCapabilities=$h.FileRangeCapabilities=$h.FileCapabilities=void 0;var nre;(function(n){n.full={diagnostic:!0,foldingRange:!0,documentFormatting:!0,documentSymbol:!0,codeAction:!0,inlayHint:!0}})(nre||($h.FileCapabilities=nre={}));var sre;(function(n){n.full={hover:!0,references:!0,definition:!0,rename:!0,completion:!0,diagnostic:!0,semanticTokens:!0}})(sre||($h.FileRangeCapabilities=sre={}));var rre;(function(n){n.full={references:!0,definition:!0,rename:!0}})(rre||($h.MirrorBehaviorCapabilities=rre={}));var ore;(function(n){n[n.TextFile=0]="TextFile",n[n.TypeScriptHostFile=1]="TypeScriptHostFile"})(ore||($h.FileKind=ore={}));(function(n){var e=Fi&&Fi.__createBinding||(Object.create?function(i,s,r,o){o===void 0&&(o=r);var a=Object.getOwnPropertyDescriptor(s,r);(!a||("get"in a?!s.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return s[r]}}),Object.defineProperty(i,o,a)}:function(i,s,r,o){o===void 0&&(o=r),i[o]=s[r]}),t=Fi&&Fi.__exportStar||function(i,s){for(var r in i)r!=="default"&&!Object.prototype.hasOwnProperty.call(s,r)&&e(s,i,r)};Object.defineProperty(n,"__esModule",{value:!0}),t(Hf,n),t(kF,n),t(sD,n),t($h,n)})(GC);var LF={};class Ux{constructor(e,t,i,s){this._uri=e,this._languageId=t,this._version=i,this._content=s,this._lineOffsets=void 0}get uri(){return this._uri}get languageId(){return this._languageId}get version(){return this._version}getText(e){if(e){const t=this.offsetAt(e.start),i=this.offsetAt(e.end);return this._content.substring(t,i)}return this._content}update(e,t){for(let i of e)if(Ux.isIncremental(i)){const s=Obe(i.range),r=this.offsetAt(s.start),o=this.offsetAt(s.end);this._content=this._content.substring(0,r)+i.text+this._content.substring(o,this._content.length);const a=Math.max(s.start.line,0),l=Math.max(s.end.line,0);let c=this._lineOffsets;const u=are(i.text,!1,r);if(l-a===u.length)for(let d=0,f=u.length;d<f;d++)c[d+a+1]=u[d];else u.length<1e4?c.splice(a+1,l-a,...u):this._lineOffsets=c=c.slice(0,a+1).concat(u,c.slice(l+1));const h=i.text.length-(o-r);if(h!==0)for(let d=a+1+u.length,f=c.length;d<f;d++)c[d]=c[d]+h}else if(Ux.isFull(i))this._content=i.text,this._lineOffsets=void 0;else throw new Error("Unknown change event received");this._version=t}getLineOffsets(){return this._lineOffsets===void 0&&(this._lineOffsets=are(this._content,!0)),this._lineOffsets}positionAt(e){e=Math.max(Math.min(e,this._content.length),0);let t=this.getLineOffsets(),i=0,s=t.length;if(s===0)return{line:0,character:e};for(;i<s;){let o=Math.floor((i+s)/2);t[o]>e?s=o:i=o+1}let r=i-1;return{line:r,character:e-t[r]}}offsetAt(e){let t=this.getLineOffsets();if(e.line>=t.length)return this._content.length;if(e.line<0)return 0;let i=t[e.line],s=e.line+1<t.length?t[e.line+1]:this._content.length;return Math.max(Math.min(i+e.character,s),i)}get lineCount(){return this.getLineOffsets().length}static isIncremental(e){let t=e;return t!=null&&typeof t.text=="string"&&t.range!==void 0&&(t.rangeLength===void 0||typeof t.rangeLength=="number")}static isFull(e){let t=e;return t!=null&&typeof t.text=="string"&&t.range===void 0&&t.rangeLength===void 0}}var e$;(function(n){function e(s,r,o,a){return new Ux(s,r,o,a)}n.create=e;function t(s,r,o){if(s instanceof Ux)return s.update(r,o),s;throw new Error("TextDocument.update: document must be created by TextDocument.create")}n.update=t;function i(s,r){let o=s.getText(),a=t$(r.map(Gft),(u,h)=>{let d=u.range.start.line-h.range.start.line;return d===0?u.range.start.character-h.range.start.character:d}),l=0;const c=[];for(const u of a){let h=s.offsetAt(u.range.start);if(h<l)throw new Error("Overlapping edit");h>l&&c.push(o.substring(l,h)),u.newText.length&&c.push(u.newText),l=s.offsetAt(u.range.end)}return c.push(o.substr(l)),c.join("")}n.applyEdits=i})(e$||(e$={}));function t$(n,e){if(n.length<=1)return n;const t=n.length/2|0,i=n.slice(0,t),s=n.slice(t);t$(i,e),t$(s,e);let r=0,o=0,a=0;for(;r<i.length&&o<s.length;)e(i[r],s[o])<=0?n[a++]=i[r++]:n[a++]=s[o++];for(;r<i.length;)n[a++]=i[r++];for(;o<s.length;)n[a++]=s[o++];return n}function are(n,e,t=0){const i=e?[t]:[];for(let s=0;s<n.length;s++){let r=n.charCodeAt(s);(r===13||r===10)&&(r===13&&s+1<n.length&&n.charCodeAt(s+1)===10&&s++,i.push(t+s+1))}return i}function Obe(n){const e=n.start,t=n.end;return e.line>t.line||e.line===t.line&&e.character>t.character?{start:t,end:e}:n}function Gft(n){const e=Obe(n.range);return e!==n.range?{newText:n.newText,range:e}:n}const Yft=Object.freeze(Object.defineProperty({__proto__:null,get TextDocument(){return e$}},Symbol.toStringTag,{value:"Module"})),ZG=s2e(Yft);var rd={},Ai={};Object.defineProperty(Ai,"__esModule",{value:!0});Ai.notEmpty=Ai.sleep=Ai.resolveCommonLanguageId=Ai.stringToSnapshot=Ai.isInsideRange=Ai.getOverlapRange=void 0;function Zft(n,e,t,i){const s=Math.max(n,t),r=Math.min(e,i);if(!(s>r))return{start:s,end:r}}Ai.getOverlapRange=Zft;function Xft(n,e){return!(e.start.line<n.start.line||e.end.line>n.end.line||e.start.line===n.start.line&&e.start.character<n.start.character||e.end.line===n.end.line&&e.end.character>n.end.character)}Ai.isInsideRange=Xft;function Qft(n){return{getText:(e,t)=>n.substring(e,t),getLength:()=>n.length,getChangeRange:()=>{}}}Ai.stringToSnapshot=Qft;function Jft(n){const e=n.split(".").pop();switch(e){case"js":return"javascript";case"cjs":return"javascript";case"mjs":return"javascript";case"ts":return"typescript";case"cts":return"typescript";case"mts":return"typescript";case"jsx":return"javascriptreact";case"tsx":return"typescriptreact";case"pug":return"jade";case"md":return"markdown"}return e}Ai.resolveCommonLanguageId=Jft;function egt(n){return new Promise(e=>setTimeout(e,n))}Ai.sleep=egt;function tgt(n){return n!=null}Ai.notEmpty=tgt;Object.defineProperty(rd,"__esModule",{value:!0});rd.createDocumentsAndSourceMaps=rd.MirrorMapWithDocument=rd.SourceMapWithDocuments=void 0;const igt=GC,ngt=ZG,sgt=Ai;class AR{constructor(e,t,i){this.sourceFileDocument=e,this.virtualFileDocument=t,this.map=i}toSourceRange(e,t=()=>!0){for(const i of this.toSourceRanges(e,t))return i}toGeneratedRange(e,t=()=>!0){for(const i of this.toGeneratedRanges(e,t))return i}*toSourceRanges(e,t=()=>!0){for(const i of this.toRanges(e,t,"toSourcePositionsBase","matchSourcePosition"))yield i}*toGeneratedRanges(e,t=()=>!0){for(const i of this.toRanges(e,t,"toGeneratedPositionsBase","matchGeneratedPosition"))yield i}*toRanges(e,t,i,s){const r=[];for(const o of this[i](e.start,t,"left")){const a=this[s](e.end,o[1],"right");a?yield{start:o[0],end:a}:r.push(o)}for(const o of r)for(const a of this[i](e.end,t,"right"))yield{start:o[0],end:a[0]}}toSourcePosition(e,t=()=>!0,i){for(const s of this.toSourcePositions(e,t,i))return s}toGeneratedPosition(e,t=()=>!0,i){for(const s of this.toGeneratedPositions(e,t,i))return s}*toSourcePositions(e,t=()=>!0,i){for(const s of this.toSourcePositionsBase(e,t,i))yield s[0]}*toGeneratedPositions(e,t=()=>!0,i){for(const s of this.toGeneratedPositionsBase(e,t,i))yield s[0]}*toSourcePositionsBase(e,t=()=>!0,i){let s=!1;for(const r of this.toPositions(e,t,this.virtualFileDocument,this.sourceFileDocument,"generatedRange","sourceRange",i??"left"))s=!0,yield r;if(!s&&i===void 0)for(const r of this.toPositions(e,t,this.virtualFileDocument,this.sourceFileDocument,"generatedRange","sourceRange","right"))yield r}*toGeneratedPositionsBase(e,t=()=>!0,i){let s=!1;for(const r of this.toPositions(e,t,this.sourceFileDocument,this.virtualFileDocument,"sourceRange","generatedRange",i??"left"))s=!0,yield r;if(!s&&i===void 0)for(const r of this.toPositions(e,t,this.sourceFileDocument,this.virtualFileDocument,"sourceRange","generatedRange","right"))yield r}*toPositions(e,t,i,s,r,o,a){for(const l of this.map.matching(i.offsetAt(e),r,o,a==="right"))t(l[1].data)&&(yield[s.positionAt(l[0]),l[1]])}matchSourcePosition(e,t,i){let s=this.map.matchOffset(this.virtualFileDocument.offsetAt(e),t.generatedRange,t.sourceRange,i==="right");if(s!==void 0)return this.sourceFileDocument.positionAt(s)}matchGeneratedPosition(e,t,i){let s=this.map.matchOffset(this.sourceFileDocument.offsetAt(e),t.sourceRange,t.generatedRange,i==="right");if(s!==void 0)return this.virtualFileDocument.positionAt(s)}}rd.SourceMapWithDocuments=AR;class Fbe extends AR{constructor(e,t){super(e,e,t),this.document=e}*findMirrorPositions(e){for(const t of this.toGeneratedPositionsBase(e))yield[t[0],t[1].data[1]];for(const t of this.toSourcePositionsBase(e))yield[t[0],t[1].data[0]]}}rd.MirrorMapWithDocument=Fbe;function rgt(n,e,t){let i=0;const s=new WeakMap,r=new WeakMap,o=new WeakMap;return{getSourceByUri(l){return t.getSource(n.uriToFileName(l))},isVirtualFileUri(l){return t.hasVirtualFile(n.uriToFileName(l))},getVirtualFileByUri(l){return t.getVirtualFile(n.uriToFileName(l))},getMirrorMapByUri(l){const c=n.uriToFileName(l),[u]=t.getVirtualFile(c);if(u){const h=t.getMirrorMap(u);if(h)return r.has(h)||r.set(h,new Fbe(a(u.snapshot,c),h)),[u,r.get(h)]}},getMapsBySourceFileUri(l){return this.getMapsBySourceFileName(n.uriToFileName(l))},getMapsBySourceFileName(l){const c=t.getSource(l);if(c){const u=[];return(0,igt.forEachEmbeddedFile)(c.root,h=>{for(const[d,[f,g]]of t.getMaps(h))f===c.snapshot&&(s.has(g)||s.set(g,new AR(a(f,d),a(h.snapshot,l),g)),u.push([h,s.get(g)]))}),{snapshot:c.snapshot,maps:u}}},getMapsByVirtualFileUri(l){return this.getMapsByVirtualFileName(n.uriToFileName(l))},*getMapsByVirtualFileName(l){const[c]=t.getVirtualFile(l);if(c)for(const[u,[h,d]]of t.getMaps(c))s.has(d)||s.set(d,new AR(a(h,u),a(c.snapshot,l),d)),yield[c,s.get(d)]},getDocumentByUri(l,c){return this.getDocumentByFileName(l,n.uriToFileName(c))},getDocumentByFileName:a};function a(l,c){var h;o.has(l)||o.set(l,new Map);const u=o.get(l);if(!u.has(c)){const d=n.fileNameToUri(c);u.set(c,ngt.TextDocument.create(d,((h=e.getLanguageId)==null?void 0:h.call(e,c))??(0,sgt.resolveCommonLanguageId)(d),i++,l.getText(0,l.getLength())))}return u.get(c)}}rd.createDocumentsAndSourceMaps=rgt;var xF={},_n={},rD={};Object.defineProperty(rD,"__esModule",{value:!0});rD.visitEmbedded=void 0;async function Bbe(n,e,t,i=e){var s;for(const r of e.embeddedFiles)if(!await Bbe(n,r,t,i))return!1;for(const[r,o]of n.getMapsByVirtualFileName(e.fileName))if(((s=n.getSourceByUri(o.sourceFileDocument.uri))==null?void 0:s.root)===i&&!await t(e,o))return!1;return!0}rD.visitEmbedded=Bbe;var ym={};Object.defineProperty(ym,"__esModule",{value:!0});ym.RuleType=ym.FileType=void 0;var lre;(function(n){n[n.Unknown=0]="Unknown",n[n.File=1]="File",n[n.Directory=2]="Directory",n[n.SymbolicLink=64]="SymbolicLink"})(lre||(ym.FileType=lre={}));var cre;(function(n){n[n.Format=0]="Format",n[n.Syntax=1]="Syntax",n[n.Semantic=2]="Semantic"})(cre||(ym.RuleType=cre={}));Object.defineProperty(_n,"__esModule",{value:!0});_n.safeCall=_n.ruleWorker=_n.languageFeatureWorker=_n.documentFeatureWorker=void 0;const Wbe=rD,ure=ym;async function ogt(n,e,t,i,s,r){return Vbe(n,e,void 0,(o,a,l)=>t(l,a)?[void 0]:[],i,s,r)}_n.documentFeatureWorker=ogt;async function Vbe(n,e,t,i,s,r,o,a){var h;const l=n.getTextDocument(e),c=(h=n.documents.getSourceByUri(e))==null?void 0:h.root;let u=[];if(c)await(0,Wbe.visitEmbedded)(n.documents,c,async(d,f)=>{for(const g of i(t,f,d))for(const[p,m]of Object.entries(n.services)){const _=await jx(()=>s(m,f.virtualFileDocument,g,f,d),"service "+p+" crashed on "+f.virtualFileDocument.uri);if(!_)continue;const b=r(_,f);if(!b)continue;if(u.push(b),!o)return!1;const y=Array.isArray(b)&&b.length===0;a&&!y&&a(o(u))}return!0});else if(l)for(const[d,f]of Object.entries(n.services)){const g=await jx(()=>s(f,l,t,void 0,void 0),"service "+d+" crashed on "+e);if(!g)continue;const p=r(g,void 0);if(!p)continue;if(u.push(p),!o)break;const m=Array.isArray(p)&&p.length===0;a&&!m&&a(o(u))}if(o&&u.length>0)return o(u);if(u.length>0)return u[0]}_n.languageFeatureWorker=Vbe;async function agt(n,e,t,i,s,r,o,a){var d;const l=n.getTextDocument(t),c=(d=n.documents.getSourceByUri(t))==null?void 0:d.root,u={env:n.env,inject:n.inject,report:()=>{}};let h=[];if(c)await(0,Wbe.visitEmbedded)(n.documents,c,async(f,g)=>{if(!i(f))return!0;for(const p in n.rules){const m=n.rules[p];if((m.type??ure.RuleType.Syntax)!==e)continue;const _=await jx(()=>s(p,m,g.virtualFileDocument,u),"rule "+p+" crashed on "+g.virtualFileDocument.uri);if(!_)continue;const b=r(_,g);if(!b)continue;if(h.push(b),!o)return!1;const y=Array.isArray(b)&&b.length===0;a&&!y&&a(o(h))}return!0});else if(l)for(const f in n.rules){const g=n.rules[f];if((g.type??ure.RuleType.Syntax)!==e)continue;const p=await jx(()=>s(f,g,l,u),"rule "+f+" crashed on "+l.uri);if(!p)continue;const m=r(p,void 0);if(!m)continue;if(h.push(m),!o)break;const _=Array.isArray(m)&&m.length===0;a&&!_&&a(o(h))}if(o&&h.length>0)return o(h);if(h.length>0)return h[0]}_n.ruleWorker=agt;async function jx(n,e){try{return await n()}catch(t){console.warn(e,t)}}_n.safeCall=jx;var Xi={};Object.defineProperty(Xi,"__esModule",{value:!0});Xi.NoneCancellationToken=void 0;Xi.NoneCancellationToken={isCancellationRequested:!1,onCancellationRequested:()=>({dispose:()=>{}})};Object.defineProperty(xF,"__esModule",{value:!0});xF.register=void 0;const lgt=_n,cgt=Xi;function ugt(n){return(e,t,i,s=cgt.NoneCancellationToken)=>(0,lgt.languageFeatureWorker)(n,e,{position:t,autoInsertContext:i},function*(r,o){var a;for(const l of o.toGeneratedPositions(r.position,c=>!!c.completion)){const c=(a=o.map.toGeneratedOffset(r.autoInsertContext.lastChange.rangeOffset))==null?void 0:a[0],u=o.toGeneratedRange(r.autoInsertContext.lastChange.range);if(c!==void 0&&u){yield{position:l,autoInsertContext:{lastChange:{...r.autoInsertContext.lastChange,rangeOffset:c,range:u}}};break}}},(r,o,a)=>{var l;if(!s.isCancellationRequested)return(l=r.provideAutoInsertionEdit)==null?void 0:l.call(r,o,a.position,a.autoInsertContext,s)},(r,o)=>{if(!o||typeof r=="string")return r;const a=o.toSourceRange(r.range);if(a)return r.range=a,r})}xF.register=ugt;var EF={},wn={};Object.defineProperty(wn,"__esModule",{value:!0});wn.withRanges=wn.withCallHierarchyOutgoingCalls=wn.withCallHierarchyIncomingCalls=wn.withLocationLinks=wn.withLocations=wn.withDiagnostics=wn.withDocumentChanges=wn.withTextEdits=wn.withCodeAction=wn.createLocationSet=void 0;function hgt(){const n=new Set;return{add:e,has:t};function e(s){return t(s)?!1:(n.add(i(s)),!0)}function t(s){return n.has(i(s))}function i(s){return[s.uri,s.range.start.line,s.range.start.character,s.range.end.line,s.range.end.character].join(":")}}wn.createLocationSet=hgt;function dgt(n){return hg(n,e=>[e.title].join(":"))}wn.withCodeAction=dgt;function fgt(n){return hg(n,e=>[e.range.start.line,e.range.start.character,e.range.end.line,e.range.end.character,e.newText].join(":"))}wn.withTextEdits=fgt;function ggt(n){return hg(n,e=>JSON.stringify(e))}wn.withDocumentChanges=ggt;function pgt(n){return hg(n,e=>[e.range.start.line,e.range.start.character,e.range.end.line,e.range.end.character,e.source,e.code,e.severity,e.message].join(":"))}wn.withDiagnostics=pgt;function mgt(n){return hg(n,e=>[e.uri,e.range.start.line,e.range.start.character,e.range.end.line,e.range.end.character].join(":"))}wn.withLocations=mgt;function _gt(n){return hg(n,e=>[e.targetUri,e.targetSelectionRange.start.line,e.targetSelectionRange.start.character,e.targetSelectionRange.end.line,e.targetSelectionRange.end.character].join(":"))}wn.withLocationLinks=_gt;function vgt(n){return hg(n,e=>[e.from.uri,e.from.range.start.line,e.from.range.start.character,e.from.range.end.line,e.from.range.end.character].join(":"))}wn.withCallHierarchyIncomingCalls=vgt;function bgt(n){return hg(n,e=>[e.to.uri,e.to.range.start.line,e.to.range.start.character,e.to.range.end.line,e.to.range.end.character].join(":"))}wn.withCallHierarchyOutgoingCalls=bgt;function ygt(n){return hg(n,e=>[e.start.line,e.start.character,e.end.line,e.end.character].join(":"))}wn.withRanges=ygt;function hg(n,e){const t=new Map;for(const i of n.reverse())t.set(e(i),i);return[...t.values()]}Object.defineProperty(EF,"__esModule",{value:!0});EF.register=void 0;const hre=Ai,m6=wn,Cgt=_n,wgt=Xi;function Sgt(n){return{doPrepare(t,i,s=wgt.NoneCancellationToken){return(0,Cgt.languageFeatureWorker)(n,t,i,(r,o)=>o.toGeneratedPositions(r,a=>!!a.references),async(r,o,a,l)=>{var u;if(s.isCancellationRequested)return;const c=await((u=r.provideCallHierarchyItems)==null?void 0:u.call(r,o,a,s));return c==null||c.forEach(h=>{h.data={uri:t,original:{data:h.data},serviceId:Object.keys(n.services).find(d=>n.services[d]===r),virtualDocumentUri:l==null?void 0:l.virtualFileDocument.uri}}),c},(r,o)=>o?r.map(a=>{var l;return(l=e(a,[]))==null?void 0:l[0]}).filter(hre.notEmpty):r,r=>m6.withLocations(r.flat()))},async getIncomingCalls(t,i){const s=t.data;let r=[];if(s){const o=n.services[s.serviceId];if(!o.provideCallHierarchyIncomingCalls)return r;if(Object.assign(t,s.original),s.virtualDocumentUri){if(n.documents.isVirtualFileUri(s.virtualDocumentUri)){const a=await o.provideCallHierarchyIncomingCalls(t,i);for(const l of a){const c=e(l.from,l.fromRanges);c&&r.push({from:c[0],fromRanges:c[1]})}}}else{const a=await o.provideCallHierarchyIncomingCalls(t,i);for(const l of a){const c=e(l.from,l.fromRanges);c&&r.push({from:c[0],fromRanges:c[1]})}}}return m6.withCallHierarchyIncomingCalls(r)},async getOutgoingCalls(t,i){const s=t.data;let r=[];if(s){const o=n.services[s.serviceId];if(!o.provideCallHierarchyOutgoingCalls)return r;if(Object.assign(t,s.original),s.virtualDocumentUri){if(n.documents.isVirtualFileUri(s.virtualDocumentUri)){const a=await o.provideCallHierarchyOutgoingCalls(t,i);for(const l of a){const c=e(l.to,l.fromRanges);c&&r.push({to:c[0],fromRanges:c[1]})}}}else{const a=await o.provideCallHierarchyOutgoingCalls(t,i);for(const l of a){const c=e(l.to,l.fromRanges);c&&r.push({to:c[0],fromRanges:c[1]})}}}return m6.withCallHierarchyOutgoingCalls(r)}};function e(t,i){if(!n.documents.isVirtualFileUri(t.uri))return[t,i];for(const[s,r]of n.documents.getMapsByVirtualFileUri(t.uri)){let o=r.toSourceRange(t.range);o||(o={start:r.sourceFileDocument.positionAt(0),end:r.sourceFileDocument.positionAt(r.sourceFileDocument.getText().length)});const a=r.toSourceRange(t.selectionRange);if(!a)continue;const l=i.map(u=>r.toSourceRange(u)).filter(hre.notEmpty),c={...t,name:t.name===r.virtualFileDocument.uri.substring(r.virtualFileDocument.uri.lastIndexOf("/")+1)?r.sourceFileDocument.uri.substring(r.sourceFileDocument.uri.lastIndexOf("/")+1):t.name,uri:r.sourceFileDocument.uri,range:{start:o.start,end:o.end},selectionRange:{start:a.start,end:a.end}};return a.end,[c,l]}}}EF.register=Sgt;var DF={},yc={};Object.defineProperty(yc,"__esModule",{value:!0});yc.embeddedEditToSourceEdit=yc.mergeWorkspaceEdits=yc.register=void 0;const kgt=_n,dre=wn,Lgt=Xi;function xgt(n){return(e,t,i,s=Lgt.NoneCancellationToken)=>{let r;return(0,kgt.languageFeatureWorker)(n,e,{position:t,newName:i},function*(o,a){for(const l of a.toGeneratedPositions(o.position,c=>(r=c,typeof c.rename=="object"?!!c.rename.normalize:!!c.rename))){let c=o.newName;r&&typeof r.rename=="object"&&r.rename.normalize&&(c=r.rename.normalize(o.newName)),yield{position:l,newName:c}}},async(o,a,l)=>{if(s.isCancellationRequested)return;const c=dre.createLocationSet();let u;return await h(a,l.position,l.newName),u;async function h(d,f,g){var m;if(!o.provideRenameEdits||c.has({uri:d.uri,range:{start:f,end:f}}))return;c.add({uri:d.uri,range:{start:f,end:f}});const p=await o.provideRenameEdits(d,f,g,s);if(p){if(u||(u={}),p.changes)for(const _ in p.changes){const b=p.changes[_];for(const y of b){let w=!1;c.add({uri:_,range:{start:y.range.start,end:y.range.start}});const S=(m=n.documents.getMirrorMapByUri(_))==null?void 0:m[1];if(S)for(const E of S.findMirrorPositions(y.range.start))E[1].rename&&(c.has({uri:S.document.uri,range:{start:E[0],end:E[0]}})||(w=!0,await h(S.document,E[0],g)));w||(u.changes||(u.changes={}),u.changes[_]||(u.changes[_]=[]),u.changes[_].push(y))}}if(p.changeAnnotations)for(const _ in p.changeAnnotations)u.changeAnnotations||(u.changeAnnotations={}),u.changeAnnotations[_]=p.changeAnnotations[_];p.documentChanges&&(u.documentChanges||(u.documentChanges=[]),u.documentChanges=u.documentChanges.concat(p.documentChanges))}}},o=>$be(o,n.documents,"rename"),o=>{const a=o[0],l=o.slice(1);if(Hbe(a,...l),a.changes)for(const c in a.changes)a.changes[c]=dre.withTextEdits(a.changes[c]);return o[0]})}}yc.register=xgt;function Hbe(n,...e){for(const t of e){for(const i in t.changeAnnotations)n.changeAnnotations||(n.changeAnnotations={}),n.changeAnnotations[i]=t.changeAnnotations[i];for(const i in t.changes){n.changes||(n.changes={}),n.changes[i]||(n.changes[i]=[]);const s=t.changes[i];n.changes[i]=n.changes[i].concat(s)}if(t.documentChanges){n.documentChanges||(n.documentChanges=[]);for(const i of t.documentChanges)zbe(n.documentChanges,i)}}}yc.mergeWorkspaceEdits=Hbe;function $be(n,e,t,i={}){var o,a,l,c;const s={};let r=!1;for(const u in n.changeAnnotations){s.changeAnnotations??(s.changeAnnotations={});const h=n.changeAnnotations[u];if(!e.isVirtualFileUri(u))s.changeAnnotations[u]=h;else for(const[d,f]of e.getMapsByVirtualFileUri(u)){const g=f.sourceFileDocument.uri;s.changeAnnotations[g]=h}}for(const u in n.changes){if(s.changes??(s.changes={}),!e.isVirtualFileUri(u)){s.changes[u]=n.changes[u],r=!0;continue}for(const[h,d]of e.getMapsByVirtualFileUri(u)){const f=n.changes[u];for(const g of f)if(t==="rename"||t==="fileName"||t==="codeAction"){let p;const m=d.toSourceRange(g.range,_=>(p=_,typeof _.rename=="object"?!!_.rename.apply:!!_.rename));if(m){let _=g.newText;p&&typeof p.rename=="object"&&p.rename.apply&&(_=p.rename.apply(g.newText)),(o=s.changes)[a=d.sourceFileDocument.uri]??(o[a]=[]),s.changes[d.sourceFileDocument.uri].push({newText:_,range:m}),r=!0}}else{const p=d.toSourceRange(g.range);p&&((l=s.changes)[c=d.sourceFileDocument.uri]??(l[c]=[]),s.changes[d.sourceFileDocument.uri].push({newText:g.newText,range:p}),r=!0)}}}if(n.documentChanges)for(const u of n.documentChanges){s.documentChanges??(s.documentChanges=[]);let h;if("textDocument"in u)if(e.isVirtualFileUri(u.textDocument.uri))for(const[d,f]of e.getMapsByVirtualFileUri(u.textDocument.uri)){h={textDocument:{uri:f.sourceFileDocument.uri,version:i[f.sourceFileDocument.uri]??null},edits:[]};for(const g of u.edits)if(t==="rename"||t==="fileName"||t==="codeAction"){let p;const m=f.toSourceRange(g.range,_=>(p=_,typeof _.rename=="object"?!!_.rename.apply:!!_.rename));if(m){let _=g.newText;p&&typeof p.rename=="object"&&p.rename.apply&&(_=p.rename.apply(g.newText)),h.edits.push({annotationId:"annotationId"in g?g.annotationId:void 0,newText:_,range:m})}}else{const p=f.toSourceRange(g.range);p&&h.edits.push({annotationId:"annotationId"in g?g.annotationId:void 0,newText:g.newText,range:p})}h.edits.length||(h=void 0)}else h=u;else if(u.kind==="create")h=u;else if(u.kind==="rename")if(!e.isVirtualFileUri(u.oldUri))h=u;else for(const[d,f]of e.getMapsByVirtualFileUri(u.oldUri))h={kind:"rename",oldUri:f.sourceFileDocument.uri,newUri:u.newUri,options:u.options,annotationId:u.annotationId};else if(u.kind==="delete")if(!e.isVirtualFileUri(u.uri))h=u;else for(const[d,f]of e.getMapsByVirtualFileUri(u.uri))h={kind:"delete",uri:f.sourceFileDocument.uri,options:u.options,annotationId:u.annotationId};h&&(zbe(s.documentChanges,h),r=!0)}if(r)return s}yc.embeddedEditToSourceEdit=$be;function zbe(n,e){const t=n.find(i=>"textDocument"in i&&"textDocument"in e&&i.textDocument.uri===e.textDocument.uri);t?t.edits.push(...e.edits):n.push(e)}Object.defineProperty(DF,"__esModule",{value:!0});DF.register=void 0;const fre=yc,Egt=Xi;function Dgt(n){return async(e,t=Egt.NoneCancellationToken)=>{var s,r,o,a,l,c;const i=e.data;if((i==null?void 0:i.type)==="service"){const u=n.services[i.serviceId];if(!u.resolveCodeAction)return e;Object.assign(e,i.original),e=await u.resolveCodeAction(e,t),e=((s=u.transformCodeAction)==null?void 0:s.call(u,e))??(e.edit?{...e,edit:(0,fre.embeddedEditToSourceEdit)(e.edit,n.documents,"codeAction",{[i.uri]:i.version})}:e)}if((i==null?void 0:i.type)==="rule"){const u=(a=(o=(r=n.ruleFixes)==null?void 0:r[i.documentUri])==null?void 0:o[i.ruleId])==null?void 0:a[i.ruleFixIndex],h=u==null?void 0:u[1][i.index];if(h){let d=await((l=h.getWorkspaceEdit)==null?void 0:l.call(h,u[0]))??void 0;if(!d){const f=await((c=h.getEdits)==null?void 0:c.call(h,u[0]));f&&(d={documentChanges:[{textDocument:{uri:i.documentUri,version:null},edits:f}]})}d&&(e.edit=(0,fre.embeddedEditToSourceEdit)(d,n.documents,i.isFormat?"format":"codeAction",{[i.uri]:i.version}))}}return e}}DF.register=Dgt;var IF={},Td={},oD={},aD={};Object.defineProperty(aD,"__esModule",{value:!0});aD.transform=void 0;function Igt(n,e,t){if("range"in n){let i=e(n.range);if(i)return{...n,range:i};const s=_6(e,n.range,n.newText,t);if(s)return{...n,range:s.range,newText:s.newText}}else if("replace"in n&&"insert"in n){const i=e(n.insert),s=i?e(n.replace):void 0;if(i&&s)return{...n,insert:i,replace:s};const r=_6(e,n.insert,n.newText,t),o=r?_6(e,n.replace,n.newText,t):void 0;if(r&&o&&r.newText===o.newText)return{...n,insert:r.range,replace:o.range,newText:r.newText}}}aD.transform=Igt;function _6(n,e,t,i){if(e.start.line===e.end.line&&e.end.character>e.start.character){let s=e.start.character;for(;t.length&&e.end.character>s;){const r={line:e.start.line,character:e.start.character+1};if(i.getText({start:e.start,end:r})===t[0]){t=t.slice(1),s++;const o=n({start:r,end:e.end});if(o)return{newText:t,range:o}}else break}}}Object.defineProperty(oD,"__esModule",{value:!0});oD.transform=void 0;const Tgt=Ai,gre=aD;function Ngt(n,e,t){var i;return{...n,additionalTextEdits:(i=n.additionalTextEdits)==null?void 0:i.map(s=>(0,gre.transform)(s,e,t)).filter(Tgt.notEmpty),textEdit:n.textEdit?(0,gre.transform)(n.textEdit,e,t):void 0}}oD.transform=Ngt;var TF={};Object.defineProperty(TF,"__esModule",{value:!0});TF.transform=void 0;const Agt=oD;function Pgt(n,e,t,i){return{isIncomplete:n.isIncomplete,itemDefaults:n.itemDefaults?{...n.itemDefaults,editRange:n.itemDefaults.editRange?"replace"in n.itemDefaults.editRange?{insert:e(n.itemDefaults.editRange.insert),replace:e(n.itemDefaults.editRange.replace)}:e(n.itemDefaults.editRange):void 0}:void 0,items:n.items.map(s=>{const r=(0,Agt.transform)(s,e,t);return i==null||i(r,s),r})}}TF.transform=Pgt;var NF={};Object.defineProperty(NF,"__esModule",{value:!0});NF.transform=void 0;function Rgt(n,e){const t=[];for(const i of n){const s=e({start:{line:i.startLine,character:i.startCharacter??0},end:{line:i.endLine,character:i.endCharacter??0}});s&&(i.startLine=s.start.line,i.endLine=s.end.line,i.startCharacter!==void 0&&(i.startCharacter=s.start.character),i.endCharacter!==void 0&&(i.endCharacter=s.end.character),t.push(i))}return t}NF.transform=Rgt;var AF={};Object.defineProperty(AF,"__esModule",{value:!0});AF.transform=void 0;function Mgt(n,e){if(!(n!=null&&n.range))return n;const t=e(n.range);if(t)return{...n,range:t}}AF.transform=Mgt;var lD={};Object.defineProperty(lD,"__esModule",{value:!0});lD.transform=void 0;function Ogt(n,e){const t=e(n.range);if(t)return{...n,range:t}}lD.transform=Ogt;var PF={};Object.defineProperty(PF,"__esModule",{value:!0});PF.transform=void 0;const Fgt=Ai,Bgt=lD;function Wgt(n,e){return n.map(t=>(0,Bgt.transform)(t,e)).filter(Fgt.notEmpty)}PF.transform=Wgt;var cD={};Object.defineProperty(cD,"__esModule",{value:!0});cD.transform=void 0;function Ube(n,e){const t=e(n.range);if(!t)return;const i=n.parent?Ube(n.parent,e):void 0;return{range:t,parent:i}}cD.transform=Ube;var RF={};Object.defineProperty(RF,"__esModule",{value:!0});RF.transform=void 0;const Vgt=Ai,Hgt=cD;function $gt(n,e){return n.map(t=>(0,Hgt.transform)(t,e)).filter(Vgt.notEmpty)}RF.transform=$gt;var MF={};Object.defineProperty(MF,"__esModule",{value:!0});MF.transform=void 0;const zgt=Ai;function jbe(n,e){var s;const t=e(n.range);if(!t)return;const i=e(n.selectionRange);if(i)return{...n,range:t,selectionRange:i,children:(s=n.children)==null?void 0:s.map(r=>jbe(r,e)).filter(zgt.notEmpty)}}MF.transform=jbe;var OF={};Object.defineProperty(OF,"__esModule",{value:!0});OF.transform=void 0;function Ugt(n,e){if(!("range"in n.location))return n;const t=e(n.location);if(t)return{...n,location:t}}OF.transform=Ugt;(function(n){Object.defineProperty(n,"__esModule",{value:!0}),n.asWorkspaceSymbol=n.asDocumentSymbol=n.asTextEdit=n.asSelectionRanges=n.asSelectionRange=n.asLocations=n.asLocation=n.asHover=n.asFoldingRanges=n.asCompletionList=n.asCompletionItem=void 0;var e=oD;Object.defineProperty(n,"asCompletionItem",{enumerable:!0,get:function(){return e.transform}});var t=TF;Object.defineProperty(n,"asCompletionList",{enumerable:!0,get:function(){return t.transform}});var i=NF;Object.defineProperty(n,"asFoldingRanges",{enumerable:!0,get:function(){return i.transform}});var s=AF;Object.defineProperty(n,"asHover",{enumerable:!0,get:function(){return s.transform}});var r=lD;Object.defineProperty(n,"asLocation",{enumerable:!0,get:function(){return r.transform}});var o=PF;Object.defineProperty(n,"asLocations",{enumerable:!0,get:function(){return o.transform}});var a=cD;Object.defineProperty(n,"asSelectionRange",{enumerable:!0,get:function(){return a.transform}});var l=RF;Object.defineProperty(n,"asSelectionRanges",{enumerable:!0,get:function(){return l.transform}});var c=aD;Object.defineProperty(n,"asTextEdit",{enumerable:!0,get:function(){return c.transform}});var u=MF;Object.defineProperty(n,"asDocumentSymbol",{enumerable:!0,get:function(){return u.transform}});var h=OF;Object.defineProperty(n,"asWorkspaceSymbol",{enumerable:!0,get:function(){return h.transform}})})(Td);Object.defineProperty(IF,"__esModule",{value:!0});IF.register=void 0;const jgt=Td,pre=Ai,qgt=wn,Kgt=_n,Ggt=yc,Ygt=Xi;function Zgt(n){return async(e,t,i,s=Ygt.NoneCancellationToken)=>{var u,h,d;const r=n.getTextDocument(e);if(!r)return;const o={start:r.offsetAt(t.start),end:r.offsetAt(t.end)},a=new WeakSet,l=await(0,Kgt.languageFeatureWorker)(n,e,{range:t,codeActionContext:i},(f,g,p)=>{var y,w;if(!p.capabilities.codeAction)return[];const m={diagnostics:jgt.asLocations(i.diagnostics,S=>g.toGeneratedRange(S)),only:i.only};let _,b;for(const S of g.map.mappings){const E=(0,pre.getOverlapRange)(o.start,o.end,S.sourceRange[0],S.sourceRange[1]);if(E){const L=(y=g.map.toGeneratedOffset(E.start))==null?void 0:y[0],k=(w=g.map.toGeneratedOffset(E.end))==null?void 0:w[0];L!==void 0&&k!==void 0&&(_=_===void 0?L:Math.min(L,_),b=b===void 0?k:Math.max(k,b))}}return _!==void 0&&b!==void 0?[{range:{start:g.virtualFileDocument.positionAt(_),end:g.virtualFileDocument.positionAt(b)},codeActionContext:m}]:[]},async(f,g,{range:p,codeActionContext:m},_)=>{var S;if(s.isCancellationRequested)return;const b=Object.keys(n.services).find(E=>n.services[E]===f),y=m.diagnostics.filter(E=>{const L=E.data;return L&&L.version!==r.version?!1:(L==null?void 0:L.type)==="service"&&(L==null?void 0:L.serviceOrRuleId)===b}).map(E=>{const L=E.data;return{...E,...L.original}}),w=await((S=f.provideCodeActions)==null?void 0:S.call(f,g,p,{...m,diagnostics:y},s));if(w==null||w.forEach(E=>{E.data={uri:e,version:r.version,type:"service",original:{data:E.data,edit:E.edit},serviceId:Object.keys(n.services).find(L=>n.services[L]===f)}}),w&&_&&f.transformCodeAction)for(let E=0;E<w.length;E++){const L=f.transformCodeAction(w[E]);L&&(w[E]=L,a.add(L))}return w},(f,g)=>f.map(p=>{if(a.has(p)||!g)return p;if(p.edit){const m=(0,Ggt.embeddedEditToSourceEdit)(p.edit,n.documents,"codeAction");if(!m)return;p.edit=m}return p}).filter(pre.notEmpty),f=>qgt.withCodeAction(f.flat())),c=[];for(const f of i.diagnostics){const g=f.data;if(!(g&&g.version!==r.version)&&(g==null?void 0:g.type)==="rule"){const p=(d=(h=(u=n.ruleFixes)==null?void 0:u[g.documentUri])==null?void 0:h[g.serviceOrRuleId])==null?void 0:d[g.ruleFixIndex];if(p)for(let m=0;m<p[1].length;m++){const _=p[1][m],b=[];if(!i.only)b.push(void 0);else for(const y of _.kinds??["quickfix"]){const w=Xgt(i.only,y);w&&b.push(w)}for(const y of b){const w={title:_.title??`Fix: ${f.message}`,kind:y,diagnostics:[f],data:{uri:e,type:"rule",version:g.version,isFormat:g.isFormat,ruleId:g.serviceOrRuleId,documentUri:g.documentUri,ruleFixIndex:g.ruleFixIndex,index:m}};c.push(w)}}}}return[...l??[],...c]}}IF.register=Zgt;function Xgt(n,e){const t=e.split(".");for(const i of n){const s=i.split(".");if(s.length<=t.length){let r=0;for(let o=0;o<s.length;o++)s[o]==t[o]&&r++;if(r===s.length)return i}}}var FF={};Object.defineProperty(FF,"__esModule",{value:!0});FF.register=void 0;const Qgt=_n,Jgt=Ai,ept=Xi;function tpt(n){return async(e,t=ept.NoneCancellationToken)=>await(0,Qgt.languageFeatureWorker)(n,e,void 0,i=>[i],async(i,s)=>{var c,u;if(t.isCancellationRequested)return;let r=await((c=i.provideCodeLenses)==null?void 0:c.call(i,s,t));const o=Object.keys(n.services).find(h=>n.services[h]===i);r==null||r.forEach(h=>{h.data={kind:"normal",uri:e,original:{data:h.data},serviceId:o}});const a=await((u=i.provideReferencesCodeLensRanges)==null?void 0:u.call(i,s,t)),l=a==null?void 0:a.map(h=>({range:h,data:{kind:"references",uri:e,range:h,serviceId:o}}));return r=[...r??[],...l??[]],r},(i,s)=>i.map(r=>{if(!s)return r;const o=s.toSourceRange(r.range);if(o)return{...r,range:o}}).filter(Jgt.notEmpty),i=>i.flat())??[]}FF.register=tpt;var BF={},uD={};Object.defineProperty(uD,"__esModule",{value:!0});uD.register=void 0;const ipt=_n,mre=wn,npt=Xi;function spt(n){return(e,t,i=npt.NoneCancellationToken)=>(0,ipt.languageFeatureWorker)(n,e,t,(s,r)=>r.toGeneratedPositions(s,o=>!!o.references),async(s,r,o)=>{if(i.isCancellationRequested)return;const a=mre.createLocationSet(),l=[];return await c(r,o),l;async function c(u,h){var f;if(!s.provideReferences||a.has({uri:u.uri,range:{start:h,end:h}}))return;a.add({uri:u.uri,range:{start:h,end:h}});const d=await s.provideReferences(u,h,i)??[];for(const g of d){let p=!1;a.add({uri:g.uri,range:{start:g.range.start,end:g.range.start}});const m=(f=n.documents.getMirrorMapByUri(g.uri))==null?void 0:f[1];if(m)for(const _ of m.findMirrorPositions(g.range.start))_[1].references&&(a.has({uri:m.document.uri,range:{start:_[0],end:_[0]}})||(p=!0,await c(m.document,_[0])));p||l.push(g)}}},s=>{const r=[];for(const o of s)if(n.documents.isVirtualFileUri(o.uri))for(const[a,l]of n.documents.getMapsByVirtualFileUri(o.uri)){const c=l.toSourceRange(o.range,u=>!!u.references);c&&r.push({uri:l.sourceFileDocument.uri,range:c})}else r.push(o);return r},s=>mre.withLocations(s.flat()))}uD.register=spt;Object.defineProperty(BF,"__esModule",{value:!0});BF.register=void 0;const rpt=uD,opt=Xi;function apt(n){const e=rpt.register(n);return async(t,i=opt.NoneCancellationToken)=>{const s=t.data;if((s==null?void 0:s.kind)==="normal"){const r=n.services[s.serviceId];if(!r.resolveCodeLens)return t;Object.assign(t,s.original),t=await r.resolveCodeLens(t,i)}if((s==null?void 0:s.kind)==="references"){let r=await e(s.uri,t.range.start,i)??[];const o=n.services[s.serviceId],a=n.getTextDocument(s.uri);a&&o.resolveReferencesCodeLensLocations&&(r=await o.resolveReferencesCodeLensLocations(a,s.range,r,i)),t.command=n.commands.showReferences.create(s.uri,s.range.start,r)}return t}}BF.register=apt;var WF={};Object.defineProperty(WF,"__esModule",{value:!0});WF.register=void 0;const _re=Td,lpt=rD,cpt=Xi;function upt(n){let e;return async(t,i,s={triggerKind:1},r=cpt.NoneCancellationToken)=>{var c,u;let o;if((s==null?void 0:s.triggerKind)===3&&(e==null?void 0:e.uri)===t){for(const h of e.data)if(h.list.isIncomplete){if(h.virtualDocumentUri)for(const[d,f]of n.documents.getMapsByVirtualFileUri(h.virtualDocumentUri))for(const g of f.toGeneratedPositions(i,p=>!!p.completion)){if(!h.service.provideCompletionItems)continue;const p=await h.service.provideCompletionItems(f.virtualFileDocument,g,s,r);if(!p){h.list.isIncomplete=!1;continue}h.list=_re.asCompletionList(p,m=>f.toSourceRange(m),f.virtualFileDocument,(m,_)=>m.data={uri:t,original:{additionalTextEdits:_.additionalTextEdits,textEdit:_.textEdit,data:_.data},serviceId:Object.keys(n.services).find(b=>n.services[b]===h.service),virtualDocumentUri:f.virtualFileDocument.uri})}else if(o=n.getTextDocument(t)){if(!h.service.provideCompletionItems)continue;const d=await h.service.provideCompletionItems(o,i,s,r);if(!d){h.list.isIncomplete=!1;continue}d.items.forEach(f=>{f.data={uri:t,original:{additionalTextEdits:f.additionalTextEdits,textEdit:f.textEdit,data:f.data},serviceId:Object.keys(n.services).find(g=>n.services[g]===h.service),virtualDocumentUri:void 0}})}}}else{const h=(c=n.documents.getSourceByUri(t))==null?void 0:c.root;e={uri:t,data:[],mainCompletion:void 0};let d=!0;if(h&&await(0,lpt.visitEmbedded)(n.documents,h,async(f,g)=>{var _;const p=Object.values(n.services).sort(a);let m;for(const b of g.toGeneratedPositions(i,y=>(m=y,!!y.completion))){for(const y of p){if(r.isCancellationRequested)break;if(!y.provideCompletionItems||y.isAdditionalCompletion&&!d||s!=null&&s.triggerCharacter&&!((_=y.triggerCharacters)!=null&&_.includes(s.triggerCharacter)))continue;const w=m&&typeof m.completion=="object"&&m.completion.additional||y.isAdditionalCompletion;if(e.mainCompletion&&(!w||(e==null?void 0:e.mainCompletion.documentUri)!==g.virtualFileDocument.uri)||y.isAdditionalCompletion&&(e!=null&&e.data.some(L=>L.service===y)))continue;const S=await y.provideCompletionItems(g.virtualFileDocument,b,s,r);if(!S||!S.items.length)continue;typeof(m==null?void 0:m.completion)=="object"&&m.completion.autoImportOnly&&(S.items=S.items.filter(L=>!!L.labelDetails)),w||(e.mainCompletion={documentUri:g.virtualFileDocument.uri});const E=_re.asCompletionList(S,L=>g.toSourceRange(L),g.virtualFileDocument,(L,k)=>L.data={uri:t,original:{additionalTextEdits:k.additionalTextEdits,textEdit:k.textEdit,data:k.data},serviceId:Object.keys(n.services).find(x=>n.services[x]===y),virtualDocumentUri:g.virtualFileDocument.uri});e.data.push({virtualDocumentUri:g.virtualFileDocument.uri,service:y,list:E})}d=!1}return!0}),o=n.getTextDocument(t)){const f=Object.values(n.services).sort(a);for(const g of f){if(r.isCancellationRequested)break;if(!g.provideCompletionItems||g.isAdditionalCompletion&&!d||s!=null&&s.triggerCharacter&&!((u=g.triggerCharacters)!=null&&u.includes(s.triggerCharacter))||e.mainCompletion&&(!g.isAdditionalCompletion||e.mainCompletion.documentUri!==o.uri)||g.isAdditionalCompletion&&(e!=null&&e.data.some(m=>m.service===g)))continue;const p=await g.provideCompletionItems(o,i,s,r);!p||!p.items.length||(g.isAdditionalCompletion||(e.mainCompletion={documentUri:o.uri}),p.items.forEach(m=>{m.data={uri:t,original:{additionalTextEdits:m.additionalTextEdits,textEdit:m.textEdit,data:m.data},serviceId:Object.keys(n.services).find(_=>n.services[_]===g),virtualDocumentUri:void 0}}),e.data.push({virtualDocumentUri:void 0,service:g,list:p}))}}}return l(e.data.map(h=>h.list));function a(h,d){return(d.isAdditionalCompletion?-1:1)-(h.isAdditionalCompletion?-1:1)}function l(h){var d;return{isIncomplete:h.some(f=>f.isIncomplete),itemDefaults:(d=h.find(f=>f.itemDefaults))==null?void 0:d.itemDefaults,items:h.map(f=>f.items).flat()}}}}WF.register=upt;var VF={};Object.defineProperty(VF,"__esModule",{value:!0});VF.register=void 0;const hpt=Td,dpt=Xi;function fpt(n){return async(e,t=dpt.NoneCancellationToken)=>{var s;const i=e.data;if(i){const r=n.services[i.serviceId];if(!r.resolveCompletionItem)return e;if(e=Object.assign(e,i.original),i.virtualDocumentUri)for(const[o,a]of n.documents.getMapsByVirtualFileUri(i.virtualDocumentUri))e=await r.resolveCompletionItem(e,t),e=((s=r.transformCompletionItem)==null?void 0:s.call(r,e))??hpt.asCompletionItem(e,l=>a.toSourceRange(l),a.virtualFileDocument);else e=await r.resolveCompletionItem(e,t)}return e.detail!==e.detail+".ts"&&(e.detail=e.detail),e}}VF.register=fpt;var HF={};Object.defineProperty(HF,"__esModule",{value:!0});HF.register=void 0;const gpt=_n,vre=wn,ppt=Ai,mpt=Xi;function _pt(n,e,t,i){return(s,r,o=mpt.NoneCancellationToken)=>(0,gpt.languageFeatureWorker)(n,s,r,(a,l)=>l.toGeneratedPositions(a,t),async(a,l,c)=>{if(o.isCancellationRequested)return;const u=vre.createLocationSet(),h=[];return await d(l,c,void 0),h;async function d(f,g,p){var b;const m=a[e];if(!m||u.has({uri:f.uri,range:{start:g,end:g}}))return;u.add({uri:f.uri,range:{start:g,end:g}});const _=await(m==null?void 0:m(f,g,o))??[];for(const y of _){let w=!1;u.add({uri:y.targetUri,range:{start:y.targetRange.start,end:y.targetRange.start}});const S=(b=n.documents.getMirrorMapByUri(y.targetUri))==null?void 0:b[1];if(S)for(const E of S.findMirrorPositions(y.targetSelectionRange.start))i(E[1])&&(u.has({uri:S.document.uri,range:{start:E[0],end:E[0]}})||(w=!0,await d(S.document,E[0],p??y)));w||(p?h.push({...y,originSelectionRange:p.originSelectionRange}):h.push(y))}}},(a,l)=>a.map(c=>{if(c.originSelectionRange&&l){const h=vpt(l,c.originSelectionRange,r);if(!h)return;c.originSelectionRange=h}let u=!1;for(const[h,d]of n.documents.getMapsByVirtualFileUri(c.targetUri)){const f=d.toSourceRange(c.targetSelectionRange);if(!f)continue;u=!0;let g=d.toSourceRange(c.targetRange);c.targetUri=d.sourceFileDocument.uri,c.targetRange=g??f,c.targetSelectionRange=f}if(e==="provideDefinition"&&n.documents.isVirtualFileUri(c.targetUri)&&!u){for(const[h,d]of n.documents.getMapsByVirtualFileUri(c.targetUri))if(d&&d.sourceFileDocument.uri!==s)return{...c,targetUri:d.sourceFileDocument.uri,targetRange:{start:{line:0,character:0},end:{line:0,character:0}},targetSelectionRange:{start:{line:0,character:0},end:{line:0,character:0}}};return}return c}).filter(ppt.notEmpty),a=>vre.withLocationLinks(a.flat()))}HF.register=_pt;function vpt(n,e,t){let i;for(const s of n.toSourceRanges(e))if(i||(i=s),(s.start.line<t.line||s.start.line===t.line&&s.start.character<=t.character)&&(s.end.line>t.line||s.end.line===t.line&&s.end.character>=t.character))return s;return i}var $F={};Object.defineProperty($F,"__esModule",{value:!0});$F.register=void 0;const bpt=_n,ypt=wn,Cpt=Ai,wpt=Xi;function Spt(n){return(e,t,i=wpt.NoneCancellationToken)=>(0,bpt.languageFeatureWorker)(n,e,t,(s,r)=>r.toGeneratedPositions(s,o=>typeof o.rename=="object"?!!o.rename.normalize:!!o.rename),async(s,r,o)=>{if(i.isCancellationRequested)return;const a=ypt.createLocationSet(),l=[];return await c(r,o),l;async function c(u,h){var f;if(!s.provideDocumentHighlights||a.has({uri:u.uri,range:{start:h,end:h}}))return;a.add({uri:u.uri,range:{start:h,end:h}});const d=await s.provideDocumentHighlights(u,h,i)??[];for(const g of d){let p=!1;a.add({uri:u.uri,range:{start:g.range.start,end:g.range.start}});const m=(f=n.documents.getMirrorMapByUri(u.uri))==null?void 0:f[1];if(m)for(const _ of m.findMirrorPositions(g.range.start))_[1].references&&(a.has({uri:m.document.uri,range:{start:_[0],end:_[0]}})||(p=!0,await c(m.document,_[0])));p||l.push(g)}}},(s,r)=>s.map(o=>{if(!r)return o;const a=r.toSourceRange(o.range);if(a)return{...o,range:a}}).filter(Cpt.notEmpty),s=>s.flat())}$F.register=Spt;var zF={},av={};Object.defineProperty(av,"__esModule",{value:!0});av.transformDocumentLinkTarget=av.register=void 0;const kpt=Xi,Lpt=obe;function xpt(n){return async(e,t=kpt.NoneCancellationToken)=>{const i=e.data;if(i){const s=n.services[i.serviceId];if(!s.resolveDocumentLink)return e;Object.assign(e,i.original),e=await s.resolveDocumentLink(e,t),e.target&&(e.target=qbe(e.target,n))}return e}}av.register=xpt;function qbe(n,e){const t=Lpt.URI.parse(n),i=t.with({fragment:""}).toString();if(e.documents.isVirtualFileUri(i))for(const[s,r]of e.documents.getMapsByVirtualFileUri(i)){if(!s.capabilities.documentSymbol)continue;n=r.sourceFileDocument.uri;const a=t.fragment.match(/^L(\d+)(,(\d+))?(-L(\d+)(,(\d+))?)?$/);if(a){const l=Number(a[1])-1,c=Number(a[3]??1)-1;if(a[5]!==void 0){const u=Number(a[5])-1,h=Number(a[7]??1)-1,d=r.toSourceRange({start:{line:l,character:c},end:{line:u,character:h}});if(d){n+="#L"+(d.start.line+1)+","+(d.start.character+1),n+="-L"+(d.end.line+1)+","+(d.end.character+1);break}}else{const u=r.toSourcePosition({line:l,character:c});if(u){n+="#L"+(u.line+1)+","+(u.character+1);break}}}}return n}av.transformDocumentLinkTarget=qbe;Object.defineProperty(zF,"__esModule",{value:!0});zF.register=void 0;const Ept=_n,Dpt=Ai,Ipt=Xi,Tpt=av;function Npt(n){return async(e,t=Ipt.NoneCancellationToken)=>{const i=await(0,Ept.documentFeatureWorker)(n,e,a=>!!a.capabilities.documentSymbol,async(a,l)=>{var u;if(t.isCancellationRequested)return;const c=await((u=a.provideDocumentLinks)==null?void 0:u.call(a,l,t));for(const h of c??[])h.data={uri:e,original:{data:h.data},serviceId:Object.keys(n.services).find(d=>n.services[d]===a)};return c},(a,l)=>a.map(c=>{if(!l)return c;const u=l.toSourceRange(c.range);if(u)return c={...c,range:u},c.target&&(c.target=(0,Tpt.transformDocumentLinkTarget)(c.target,n)),c}).filter(Dpt.notEmpty),a=>a.flat())??[],s=n.documents.getMapsBySourceFileUri(e),r=s?o(n.documents.getDocumentByUri(s.snapshot,e),s.maps):[];return[...i,...r];function o(a,l){const c=[];for(const[u,h]of l)for(const d of h.map.mappings)d.data.displayWithLink&&d.sourceRange[0]!==d.sourceRange[1]&&c.push({range:{start:a.positionAt(d.sourceRange[0]),end:a.positionAt(d.sourceRange[1])},target:e});return c}}}zF.register=Npt;var UF={},jF={};Object.defineProperty(jF,"__esModule",{value:!0});jF.SemanticTokensBuilder=void 0;class Apt{constructor(){this.initialize()}initialize(){this._id=Date.now(),this._prevLine=0,this._prevChar=0,this._data=[],this._dataLen=0}push(e,t,i,s,r){let o=e,a=t;this._dataLen>0&&(o-=this._prevLine,o===0&&(a-=this._prevChar)),this._data[this._dataLen++]=o,this._data[this._dataLen++]=a,this._data[this._dataLen++]=i,this._data[this._dataLen++]=s,this._data[this._dataLen++]=r,this._prevLine=e,this._prevChar=t}get id(){return this._id.toString()}build(){return{resultId:this.id,data:this._data}}}jF.SemanticTokensBuilder=Apt;Object.defineProperty(UF,"__esModule",{value:!0});UF.register=void 0;const Ppt=_n,Rpt=jF,Mpt=Ai,Opt=Xi;function Fpt(n){return async(e,t,i,s=Opt.NoneCancellationToken,r)=>{const o=n.getTextDocument(e);if(!o)return;const a=t?[o.offsetAt(t.start),o.offsetAt(t.end)]:[0,o.getText().length],l=await(0,Ppt.languageFeatureWorker)(n,e,a,function*(c,u){let h;for(const d of u.map.mappings)d.data.semanticTokens&&d.sourceRange[1]>c[0]&&d.sourceRange[0]<c[1]&&(h?(h[0]=Math.min(h[0],d.generatedRange[0]),h[1]=Math.max(h[1],d.generatedRange[1])):h=[...d.generatedRange]);h&&(yield h)},(c,u,h)=>{var d;if(!(s!=null&&s.isCancellationRequested))return(d=c.provideDocumentSemanticTokens)==null?void 0:d.call(c,u,{start:u.positionAt(h[0]),end:u.positionAt(h[1])},i,s)},(c,u)=>c.map(h=>{if(!u)return h;const d=u.toSourceRange({start:{line:h[0],character:h[1]},end:{line:h[0],character:h[1]+h[2]}},f=>!!f.semanticTokens);if(d)return[d.start.line,d.start.character,d.end.character-d.start.character,h[3],h[4]]}).filter(Mpt.notEmpty),c=>c.flat(),c=>r==null?void 0:r(bre(c)));if(l)return bre(l)}}UF.register=Fpt;function bre(n){const e=new Rpt.SemanticTokensBuilder,t=n.sort((i,s)=>i[0]-s[0]===0?i[1]-s[1]:i[0]-s[0]);for(const i of t)e.push(...i);return e.build()}var qF={};Object.defineProperty(qF,"__esModule",{value:!0});qF.register=void 0;const Bpt=_n,Wpt=wn,Vpt=Ai,Hpt=Xi;function $pt(n){return(e,t=Hpt.NoneCancellationToken)=>(0,Bpt.languageFeatureWorker)(n,e,void 0,function*(i){yield i},async(i,s)=>{var r;if(!t.isCancellationRequested)return await((r=i.provideFileReferences)==null?void 0:r.call(i,s,t))??[]},i=>i.map(s=>{if(!n.documents.isVirtualFileUri(s.uri))return s;for(const[r,o]of n.documents.getMapsByVirtualFileUri(s.uri)){const a=o.toSourceRange(s.range);if(a)return s.uri=o.sourceFileDocument.uri,s.range=a,s}}).filter(Vpt.notEmpty),i=>Wpt.withLocations(i.flat()))}qF.register=$pt;var KF={};Object.defineProperty(KF,"__esModule",{value:!0});KF.register=void 0;const zpt=yc,Upt=wn,yre=GC,jpt=Xi;function qpt(n){return async(e,t,i=jpt.NoneCancellationToken)=>{var r;const s=(r=n.documents.getSourceByUri(e))==null?void 0:r.root;if(s){let o;if((0,yre.forEachEmbeddedFile)(s,a=>{a.kind===yre.FileKind.TypeScriptHostFile&&a.fileName.replace(s.fileName,"").match(/^\.(js|ts)x?$/)&&(o=a.fileName.substring(a.fileName.lastIndexOf(".")))}),!o)return;e+=o,t+=o}for(const o of Object.values(n.services)){if(i.isCancellationRequested)break;if(!o.provideFileRenameEdits)continue;const a=await o.provideFileRenameEdits(e,t,i);if(a){const l=(0,zpt.embeddedEditToSourceEdit)(a,n.documents,"fileName");return l!=null&&l.documentChanges&&(l.documentChanges=Upt.withDocumentChanges(l.documentChanges)),l}}}}KF.register=qpt;var GF={},XG={};(function(n){Object.defineProperty(n,"__esModule",{value:!0}),n.register=n.errorMarkups=n.updateRange=void 0;const e=ym,t=Ai,i=wn,s=_n,r=Xi;function o(c,u){if(a(c.start,u,!1)&&a(c.end,u,!0))return c.end.line===c.start.line&&c.end.character<=c.start.character&&c.end.character++,c}n.updateRange=o;function a(c,u,h){if(u.range.end.line>c.line){if(u.newEnd.line>c.line)return!0;if(u.newEnd.line===c.line)return c.character=Math.min(c.character,u.newEnd.character),!0;if(u.newEnd.line<c.line)return c.line=u.newEnd.line,c.character=u.newEnd.character,!0}else if(u.range.end.line===c.line){const d=u.newEnd.character-u.range.end.character;if(c.character>=u.range.end.character){if(u.newEnd.line!==u.range.end.line)c.line=u.newEnd.line,c.character=u.newEnd.character+c.character-u.range.end.character;else if(h?u.range.end.character<c.character:u.range.end.character<=c.character)c.character+=d;else{const f=u.range.end.character-c.character;-d>f&&(c.character+=d+f)}return!0}else{if(u.newEnd.line===u.range.end.line){const f=u.range.end.character-c.character;-d>f&&(c.character+=d+f)}else u.newEnd.line<u.range.end.line&&(c.line=u.newEnd.line,c.character=u.newEnd.character);return!0}}else if(u.range.end.line<c.line)return c.line+=u.newEnd.line-u.range.end.line,!0;return!1}n.errorMarkups={};function l(c){const u=new Map,h={semantic:new Map,syntactic:new Map,semantic_rules:new Map,syntax_rules:new Map,format_rules:new Map};return async(p,m,_=r.NoneCancellationToken,b)=>{const y=c.getTextDocument(p);if(!y)return[];const w=u.get(p)??u.set(p,{semantic:{errors:[]},syntactic:{errors:[]},semantic_rules:{errors:[]},syntax_rules:{errors:[]},format_rules:{errors:[]}}).get(p),S=c.host.getScriptSnapshot(c.env.uriToFileName(p));let E=!1,L=!1,k=0;for(const P of Object.values(w)){const R=P.snapshot,F=P.document,j=R?S==null?void 0:S.getChangeRange(R):void 0;if(P.snapshot=S,P.document=y,!E&&y&&R&&F&&S&&j){const K={range:{start:F.positionAt(j.span.start),end:F.positionAt(j.span.start+j.span.length)},newEnd:y.positionAt(j.span.start+j.newLength)};for(const Z of P.errors)if(!o(Z.range,K)){E=!0;break}}}return(m==="all"||m==="syntactic")&&(await N(e.RuleType.Format,h.format_rules,w.format_rules),await x(),await N(e.RuleType.Syntax,h.syntax_rules,w.syntax_rules),await x(),await T("provideDiagnostics",h.syntactic,w.syntactic),await x()),(m==="all"||m==="semantic")&&(await N(e.RuleType.Semantic,h.semantic_rules,w.semantic_rules),await x(),await T("provideSemanticDiagnostics",h.semantic,w.semantic)),await I();async function x(){L&&!E&&(b==null||b(await I()),L=!1)}async function I(){var R;const P=Object.values(w).flatMap(({errors:F})=>F);n.errorMarkups[p]=[];for(const F of P)for(const j of Object.values(c.services)){const K=await((R=j.provideDiagnosticMarkupContent)==null?void 0:R.call(j,F,_));K&&n.errorMarkups[p].push({error:F,markup:K})}return P}async function N(P,R,F){const j=await(0,s.ruleWorker)(c,P,p,K=>P===e.RuleType.Format?!!K.capabilities.documentFormatting:!!K.capabilities.diagnostic,async(K,Z,q,re)=>{var le,J,be,fe,ge;if(_&&(Date.now()-k>=5&&(await(0,t.sleep)(5),k=Date.now()),_.isCancellationRequested))return;const G=R.get(K)??R.set(K,new Map).get(K),W=G.get(q.uri),Y=P===e.RuleType.Semantic?(J=(le=c.host).getProjectVersion)==null?void 0:J.call(le):void 0;if(P===e.RuleType.Semantic){if(W&&W.documentVersion===q.version&&W.projectVersion===Y)return W.errors}else if(W&&W.documentVersion===q.version)return W.errors;const X=[];re.report=(se,...H)=>{se.message||(se.message="No message."),se.source||(se.source="rule"),se.code||(se.code=K),X.push([se,...H])};try{await Z.run(q,re)}catch(se){console.warn(`[volar/rules-api] ${K} ${P} error.`),console.warn(se)}c.ruleFixes??(c.ruleFixes={}),(be=c.ruleFixes)[fe=q.uri]??(be[fe]={}),(ge=c.ruleFixes[q.uri])[K]??(ge[K]={}),X==null||X.forEach(([se,...H],te)=>{c.ruleFixes[q.uri][K][te]=[se,H],se.data={uri:p,version:y.version,type:"rule",isFormat:P===e.RuleType.Format,serviceOrRuleId:K,original:{data:se.data},ruleFixIndex:te,documentUri:q.uri}}),L=!0;const z=X.map(se=>se[0]);return G.set(q.uri,{documentVersion:q.version,errors:z,projectVersion:Y}),z},P===e.RuleType.Format?d:f,K=>K.flat());j&&(F.errors=j,F.snapshot=S)}async function T(P,R,F){const j=await(0,s.languageFeatureWorker)(c,p,!0,function*(K,Z,q){q.capabilities.diagnostic&&(yield K)},async(K,Z)=>{var X,z,le;if(_&&(Date.now()-k>=5&&(await(0,t.sleep)(5),k=Date.now()),_.isCancellationRequested))return;const q=Object.keys(c.services).find(J=>c.services[J]===K),re=R.get(q)??R.set(q,new Map).get(q),G=re.get(Z.uri),W=P==="provideSemanticDiagnostics"?(z=(X=c.host).getProjectVersion)==null?void 0:z.call(X):void 0;if(P==="provideSemanticDiagnostics"){if(G&&G.documentVersion===Z.version&&G.projectVersion===W)return G.errors}else if(G&&G.documentVersion===Z.version)return G.errors;const Y=await((le=K[P])==null?void 0:le.call(K,Z,_));return Y==null||Y.forEach(J=>{J.data={uri:p,version:y.version,type:"service",serviceOrRuleId:q,isFormat:!1,original:{data:J.data},ruleFixIndex:0,documentUri:Z.uri}}),L=!0,re.set(Z.uri,{documentVersion:Z.version,errors:Y,projectVersion:W}),Y},f,K=>i.withDiagnostics(K.flat()));j&&(F.errors=j,F.snapshot=S)}};function d(p,m){return g(p,m,()=>!0)}function f(p,m){return g(p,m,_=>typeof _.diagnostic=="object"?_.diagnostic.shouldReport():!!_.diagnostic)}function g(p,m,_){const b=[];for(const y of p){let w={...y};if(m){const S=m.toSourceRange(y.range,_);if(!S)continue;w.range=S}if(w.relatedInformation){const S=[];for(const E of w.relatedInformation)if(c.documents.isVirtualFileUri(E.location.uri))for(const[L,k]of c.documents.getMapsByVirtualFileUri(E.location.uri)){const x=k.toSourceRange(E.location.range,_);x&&S.push({location:{uri:k.sourceFileDocument.uri,range:x},message:E.message})}else S.push(E);w.relatedInformation=S}b.push(w)}return b}}n.register=l})(XG);Object.defineProperty(GF,"__esModule",{value:!0});GF.register=void 0;const Kpt=_n,Cre=Ai,Gpt=XG,Ypt=Xi;function Zpt(n){return async(e,t,i=Ypt.NoneCancellationToken)=>{let s=await(0,Kpt.languageFeatureWorker)(n,e,t,(o,a)=>a.toGeneratedPositions(o,l=>!!l.hover),(o,a,l)=>{var c;if(!i.isCancellationRequested)return(c=o.provideHover)==null?void 0:c.call(o,a,l,i)},(o,a)=>{if(!a||!o.range)return o;const l=a.toSourceRange(o.range);if(l)return o.range=l,o},o=>{var a;return{contents:{kind:"markdown",value:o.map(Xpt).flat().join(` + +--- + +`)},range:((a=o.find(l=>l.range&&(0,Cre.isInsideRange)(l.range,{start:t,end:t})))==null?void 0:a.range)??o[0].range}});const r=Gpt.errorMarkups[e];if(r)for(const o of r)(0,Cre.isInsideRange)(o.error.range,{start:t,end:t})&&(s??(s={contents:{kind:"markdown",value:""}}),s.range=o.error.range,(typeof s.contents!="object"||typeof s.contents!="string")&&(s.contents={kind:"markdown",value:s.contents}),s.contents.value&&(s.contents.value+=` + +--- + +`),s.contents.value+=o.markup.value);return s}}GF.register=Zpt;function Xpt(n){return typeof n.contents=="string"?[n.contents]:Array.isArray(n.contents)?n.contents.map(e=>typeof e=="string"?e:`\`\`\`${e.language} +${e.value} +\`\`\``):"kind"in n.contents?[n.contents.value]:[`\`\`\`${n.contents.language} +${n.contents.value} +\`\`\``]}var YF={};Object.defineProperty(YF,"__esModule",{value:!0});YF.register=void 0;const Qpt=Td,v6=Ai,Jpt=_n,emt=Xi;function tmt(n){return async(e,t,i=emt.NoneCancellationToken)=>{const s=n.getTextDocument(e);if(!s)return;const r={start:s.offsetAt(t.start),end:s.offsetAt(t.end)};return(0,Jpt.languageFeatureWorker)(n,e,t,(o,a,l)=>{var h,d;if(!l.capabilities.inlayHint)return[];let c,u;for(const f of a.map.mappings){const g=(0,v6.getOverlapRange)(r.start,r.end,f.sourceRange[0],f.sourceRange[1]);if(g){const p=(h=a.map.toGeneratedOffset(g.start))==null?void 0:h[0],m=(d=a.map.toGeneratedOffset(g.end))==null?void 0:d[0];p!==void 0&&m!==void 0&&(c=c===void 0?p:Math.min(p,c),u=u===void 0?m:Math.max(m,u))}}return c!==void 0&&u!==void 0?[{start:a.virtualFileDocument.positionAt(c),end:a.virtualFileDocument.positionAt(u)}]:[]},async(o,a,l)=>{var u;if(i.isCancellationRequested)return;const c=await((u=o.provideInlayHints)==null?void 0:u.call(o,a,l,i));return c==null||c.forEach(h=>{h.data={uri:e,original:{data:h.data},serviceId:Object.keys(n.services).find(d=>n.services[d]===o)}}),c},(o,a)=>o.map(l=>{var h;if(!a)return l;const c=a.toSourcePosition(l.position,d=>!!d.semanticTokens),u=(h=l.textEdits)==null?void 0:h.map(d=>Qpt.asTextEdit(d,f=>a.toSourceRange(f),a.virtualFileDocument)).filter(v6.notEmpty);if(c)return{...l,position:c,textEdits:u}}).filter(v6.notEmpty),o=>o.flat())}}YF.register=tmt;var ZF={};Object.defineProperty(ZF,"__esModule",{value:!0});ZF.register=void 0;const imt=Xi;function nmt(n){return async(e,t=imt.NoneCancellationToken)=>{const i=e.data;if(i){const s=n.services[i.serviceId];if(!s.resolveInlayHint)return e;Object.assign(e,i.original),e=await s.resolveInlayHint(e,t)}return e}}ZF.register=nmt;var XF={};Object.defineProperty(XF,"__esModule",{value:!0});XF.register=void 0;const smt=_n,rmt=Xi;function omt(n){return(e,t,i=rmt.NoneCancellationToken)=>(0,smt.languageFeatureWorker)(n,e,t,(s,r)=>r.toGeneratedPositions(s,o=>typeof o.rename=="object"?!!o.rename.normalize:!!o.rename),(s,r,o)=>{var a;if(!i.isCancellationRequested)return(a=s.provideRenameRange)==null?void 0:a.call(s,r,o,i)},(s,r)=>r&&"start"in s&&"end"in s?r.toSourceRange(s):s,s=>{for(const r of s)if("start"in r&&"end"in r)return r;return s[0]})}XF.register=omt;var QF={};Object.defineProperty(QF,"__esModule",{value:!0});QF.register=void 0;const amt=_n,lmt=Xi;function cmt(n){return(e,t,i={triggerKind:1,isRetrigger:!1},s=lmt.NoneCancellationToken)=>(0,amt.languageFeatureWorker)(n,e,t,(r,o)=>o.toGeneratedPositions(r,a=>!!a.completion),(r,o,a)=>{var l,c;if(!s.isCancellationRequested&&!((i==null?void 0:i.triggerKind)===2&&i.triggerCharacter&&!((l=i.isRetrigger?r.signatureHelpRetriggerCharacters:r.signatureHelpTriggerCharacters)!=null&&l.includes(i.triggerCharacter))))return(c=r.provideSignatureHelp)==null?void 0:c.call(r,o,a,i,s)},r=>r)}QF.register=cmt;var JF={};Object.defineProperty(JF,"__esModule",{value:!0});JF.register=void 0;const umt=Td,hmt=Ai,dmt=Xi;function fmt(n){return async(e,t=dmt.NoneCancellationToken)=>{const i=[];for(const s of Object.values(n.services)){if(t.isCancellationRequested)break;if(!s.provideWorkspaceSymbols)continue;const r=await s.provideWorkspaceSymbols(e,t);if(!r)continue;const o=r.map(a=>umt.asWorkspaceSymbol(a,l=>{if(n.documents.isVirtualFileUri(l.uri))for(const[c,u]of n.documents.getMapsByVirtualFileUri(l.uri)){const h=u.toSourceRange(l.range);if(h)return{uri:u.sourceFileDocument.uri,range:h}}else return l})).filter(hmt.notEmpty);i.push(o)}return i.flat()}}JF.register=fmt;var e4={};Object.defineProperty(e4,"__esModule",{value:!0});e4.register=void 0;const gmt=_n,pmt=Ai,mmt=Xi;function _mt(n){return(e,t,i,s=mmt.NoneCancellationToken)=>(0,gmt.languageFeatureWorker)(n,e,i,(r,o,a)=>a.capabilities.documentSymbol?o.toGeneratedRanges(r):[],(r,o,a)=>{var l;if(!s.isCancellationRequested)return(l=r.provideColorPresentations)==null?void 0:l.call(r,o,t,a,s)},(r,o)=>o?r.map(a=>{if(a.textEdit){const l=o.toSourceRange(a.textEdit.range);if(!l)return;a.textEdit.range=l}if(a.additionalTextEdits)for(const l of a.additionalTextEdits){const c=o.toSourceRange(l.range);if(!c)return;l.range=c}return a}).filter(pmt.notEmpty):r)}e4.register=_mt;var t4={};Object.defineProperty(t4,"__esModule",{value:!0});t4.register=void 0;const vmt=_n,bmt=Ai,ymt=Xi;function Cmt(n){return(e,t=ymt.NoneCancellationToken)=>(0,vmt.documentFeatureWorker)(n,e,i=>!!i.capabilities.documentSymbol,(i,s)=>{var r;if(!t.isCancellationRequested)return(r=i.provideDocumentColors)==null?void 0:r.call(i,s,t)},(i,s)=>s?i.map(r=>{const o=s.toSourceRange(r.range);if(o)return{range:o,color:r.color}}).filter(bmt.notEmpty):i,i=>i.flat())}t4.register=Cmt;var i4={};Object.defineProperty(i4,"__esModule",{value:!0});i4.register=void 0;const wmt=_n,Smt=Td,wre=Ai,kmt=Xi;function Lmt(n){return(e,t=kmt.NoneCancellationToken)=>(0,wmt.documentFeatureWorker)(n,e,i=>!!i.capabilities.documentSymbol,async(i,s)=>{var r;if(!t.isCancellationRequested)return(r=i.provideDocumentSymbols)==null?void 0:r.call(i,s,t)},(i,s)=>s?i.map(r=>Smt.asDocumentSymbol(r,o=>s.toSourceRange(o))).filter(wre.notEmpty):i,i=>{for(let s=0;s<i.length;s++)for(let r=0;r<i.length;r++)s!==r&&(i[s]=i[s].filter(o=>{for(const a of i[r])if((0,wre.isInsideRange)(a.range,o.range))return a.children??(a.children=[]),a.children.push(o),!1;return!0}));return i.flat()})}i4.register=Lmt;var n4={};Object.defineProperty(n4,"__esModule",{value:!0});n4.register=void 0;const xmt=_n,Emt=Td,Dmt=Xi;function Imt(n){return(e,t=Dmt.NoneCancellationToken)=>(0,xmt.documentFeatureWorker)(n,e,i=>!!i.capabilities.foldingRange,(i,s)=>{var r;if(!t.isCancellationRequested)return(r=i.provideFoldingRanges)==null?void 0:r.call(i,s,t)},(i,s)=>s?Emt.asFoldingRanges(i,r=>s.toSourceRange(r)):i,i=>i.flat())}n4.register=Imt;var s4={};Object.defineProperty(s4,"__esModule",{value:!0});s4.register=void 0;const Sre=GC,m0=ZG,_0=Ai,Tmt=Xi,Nmt=rd;function Amt(n){let e=0;return async(i,s,r,o,a=Tmt.NoneCancellationToken)=>{var y,w,S,E,L;let l=n.getTextDocument(i);if(!l)return;r??(r={start:l.positionAt(0),end:l.positionAt(l.getText().length)});const c=n.documents.getSourceByUri(l.uri);if(!c)return o?(y=await b(l,o.position,o.ch))==null?void 0:y.edits:(w=await b(l,r,void 0))==null?void 0:w.edits;const u=await((E=(S=n.env).getConfiguration)==null?void 0:E.call(S,"volar.format.initialIndent"))??{html:!0};let h=c.snapshot;const d=c.language.createVirtualFile(c.fileName,c.snapshot,c.languageId),f=l;let g=0;for(;;){const k=_(d,g++);if(k.length===0)break;let x=[];const I=[];for(const N of k){if(!N.capabilities.documentFormatting)continue;const T=N.mappings.length===1&&N.mappings[0].generatedRange[0]===0&&N.mappings[0].generatedRange[1]===N.snapshot.getLength();if(o&&!T)continue;const P=t(N,c.fileName,h);if(!P)continue;let R;if(o){const F=P.toGeneratedPosition(o.position);F&&(R=await b(P.virtualFileDocument,F,o.ch))}else R=await b(P.virtualFileDocument,{start:P.virtualFileDocument.positionAt(0),end:P.virtualFileDocument.positionAt(P.virtualFileDocument.getText().length)});if(R){I.push({virtualFileName:N.fileName,isCodeBlock:T,service:R.service});for(const F of R.edits){const j=P.toSourceRange(F.range);j&&x.push({newText:F.newText,range:j})}}}if(x=x.filter(N=>(0,_0.isInsideRange)(r,N.range)),x.length>0){const N=m0.TextDocument.applyEdits(l,x);l=m0.TextDocument.create(l.uri,l.languageId,l.version+1,N),h=(0,_0.stringToSnapshot)(N),c.language.updateVirtualFile(d,h)}if(g>1){const N=s.insertSpaces?" ".repeat(s.tabSize):" ",T=new Set;if(o)for(const P of x)for(let R=P.range.start.line;R<=P.range.end.line;R++)T.add(R);for(const P of I){let R;(0,Sre.forEachEmbeddedFile)(d,Z=>{Z.fileName===P.virtualFileName&&(R=Z)});const F=t(R,c.fileName,h);if(!F)continue;const j=new Set;for(const Z of P.service.provideFormattingIndentSensitiveLines?[P.service]:Object.values(n.services)){if(a.isCancellationRequested)break;if(Z.provideFormattingIndentSensitiveLines){const q=await Z.provideFormattingIndentSensitiveLines(F.virtualFileDocument,a);if(q)for(const re of q){const G=(L=F.toSourcePosition({line:re,character:0}))==null?void 0:L.line;G!==void 0&&j.add(G)}}}let K=Pmt(l,P.isCodeBlock,F.map,u[F.virtualFileDocument.languageId]?N:"");if(K=K.filter(Z=>{for(let q=Z.range.start.line;q<=Z.range.end.line;q++)if(j.has(q)&&!Z.newText.includes(` +`)||o&&!T.has(q)||!(0,_0.isInsideRange)(r,Z.range))return!1;return!0}),K.length>0){const Z=m0.TextDocument.applyEdits(l,K);l=m0.TextDocument.create(l.uri,l.languageId,l.version+1,Z),h=(0,_0.stringToSnapshot)(Z),c.language.updateVirtualFile(d,h)}}}}if(l.getText()===f.getText())return;return[{range:{start:f.positionAt(0),end:f.positionAt(f.getText().length)},newText:l.getText()}];function _(k,x){const I=[[k]];for(;;){if(I.length>x)return I[x];let N=[];for(const T of I[I.length-1])N=N.concat(T.embeddedFiles);I.push(N)}}async function b(k,x,I){var T,P,R;let N=x;for(const F of Object.values(n.services)){if(a.isCancellationRequested)break;let j;try{I!==void 0&&"line"in N&&"character"in N?(T=F.autoFormatTriggerCharacters)!=null&&T.includes(I)&&(j=await((P=F.provideOnTypeFormattingEdits)==null?void 0:P.call(F,k,N,I,s,a))):I===void 0&&"start"in N&&"end"in N&&(j=await((R=F.provideDocumentFormattingEdits)==null?void 0:R.call(F,k,N,s,a)))}catch(K){console.warn(K)}if(j)return{service:F,edits:j}}}};function t(i,s,r){var a,l,c,u;const o=(0,Sre.updateVirtualFileMaps)(i,h=>{if(!h)return[s,r]});if(o.has(s)&&o.get(s)[0]===r){const[h,d]=o.get(s),f=e++;return new Nmt.SourceMapWithDocuments(m0.TextDocument.create(n.env.fileNameToUri(s),((l=(a=n.host).getLanguageId)==null?void 0:l.call(a,s))??(0,_0.resolveCommonLanguageId)(n.env.fileNameToUri(s)),f,r.getText(0,r.getLength())),m0.TextDocument.create(n.env.fileNameToUri(i.fileName),((u=(c=n.host).getLanguageId)==null?void 0:u.call(c,i.fileName))??(0,_0.resolveCommonLanguageId)(n.env.fileNameToUri(i.fileName)),f,i.snapshot.getText(0,i.snapshot.getLength())),d)}}}s4.register=Amt;function Pmt(n,e,t,i){const s=[];e||(i="");for(let o=0;o<t.mappings.length;o++){const a=t.mappings[o],l=r(a.sourceRange[0]),c=n.getText().substring(a.sourceRange[0],a.sourceRange[1]),u=c.split(` +`),h=l+i;let d=u[0].length+1,f=!1;if(c.trim()&&(e&&c.trimStart().length===c.length&&s.push({newText:` +`+h,range:{start:n.positionAt(a.sourceRange[0]),end:n.positionAt(a.sourceRange[0])}}),e&&c.trimEnd().length===c.length&&(s.push({newText:` +`,range:{start:n.positionAt(a.sourceRange[1]),end:n.positionAt(a.sourceRange[1])}}),f=!0),h&&u.length>1))for(let g=1;g<u.length;g++){if(u[g].trim()||g===u.length-1){const p=g===u.length-1&&!f;s.push({newText:p?l:h,range:{start:n.positionAt(a.sourceRange[0]+d),end:n.positionAt(a.sourceRange[0]+d)}})}d+=u[g].length+1}}return s;function r(o){const a=n.positionAt(o),l=n.getText({start:{line:a.line,character:0},end:a});return l.substring(0,l.length-l.trimStart().length)}}var r4={};Object.defineProperty(r4,"__esModule",{value:!0});r4.register=void 0;const Rmt=_n,Mmt=Ai,Omt=Xi;function Fmt(n){return(e,t,i=Omt.NoneCancellationToken)=>(0,Rmt.languageFeatureWorker)(n,e,t,(s,r)=>r.toGeneratedPositions(s,o=>!!o.completion),(s,r,o)=>{var a;if(!i.isCancellationRequested)return(a=s.provideLinkedEditingRanges)==null?void 0:a.call(s,r,o,i)},(s,r)=>r?{wordPattern:s.wordPattern,ranges:s.ranges.map(o=>r.toSourceRange(o)).filter(Mmt.notEmpty)}:s)}r4.register=Fmt;var o4={};Object.defineProperty(o4,"__esModule",{value:!0});o4.register=void 0;const Bmt=_n,Wmt=Td,dT=Ai,Vmt=Xi;function Hmt(n){return(e,t,i=Vmt.NoneCancellationToken)=>(0,Bmt.languageFeatureWorker)(n,e,t,(s,r,o)=>{if(o.capabilities.documentFormatting){const a=s.map(l=>r.toGeneratedPosition(l)).filter(dT.notEmpty);if(a.length)return[a]}return[]},(s,r,o)=>{var a;if(!i.isCancellationRequested)return(a=s.provideSelectionRanges)==null?void 0:a.call(s,r,o,i)},(s,r)=>r?Wmt.asSelectionRanges(s,o=>r.toSourceRange(o)):s,s=>{const r=[];for(let o=0;o<t.length;o++){let a=[];for(const l of s)a.push(l[o]);a=a.sort((l,c)=>(0,dT.isInsideRange)(l.range,c.range)?1:(0,dT.isInsideRange)(c.range,l.range)?-1:0);for(let l=1;l<a.length;l++){let c=a[l-1];for(;c.parent;)c=c.parent;let u=a[l];for(;u&&!(0,dT.isInsideRange)(u.range,c.range);)u=u.parent;u&&(c.parent=u)}r.push(a[0])}return r})}o4.register=Hmt;Object.defineProperty(LF,"__esModule",{value:!0});LF.createLanguageService=void 0;const $mt=GC,zmt=ZG,Umt=rd,jmt=xF,qmt=EF,Kmt=DF,Gmt=IF,Ymt=FF,Zmt=BF,Xmt=WF,Qmt=VF,b6=HF,Jmt=$F,e1t=zF,t1t=av,i1t=UF,n1t=qF,s1t=KF,r1t=GF,o1t=YF,a1t=ZF,l1t=uD,c1t=yc,u1t=XF,h1t=QF,d1t=XG,f1t=JF,g1t=e4,p1t=t4,m1t=i4,_1t=n4,v1t=s4,b1t=r4,y1t=o4,Kbe=Ai;function C1t(n,e,t,i){if(i.workspacePath.indexOf("\\")>=0||i.rootPath.indexOf("\\")>=0)throw new Error("Volar: Current directory must be posix style.");if(i.getScriptFileNames().some(o=>o.indexOf("\\")>=0))throw new Error("Volar: Script file names must be posix style.");const s=(0,$mt.createLanguageContext)(i,Object.values(t.languages??{}).filter(Kbe.notEmpty)),r=w1t(n,e,t,i,s);return S1t(r)}LF.createLanguageService=C1t;function w1t(n,e,t,i,s){var h;const r=(0,Umt.createDocumentsAndSourceMaps)(e,i,s.virtualFiles),o=new WeakMap,a=new Map,l={...s,env:e,inject:(d,...f)=>{var g;for(const p of Object.values(l.services)){const m=(g=p.provide)==null?void 0:g[d];if(m)return m(...f)}throw`No service provide ${d}`},rules:t.rules??{},services:{},documents:r,commands:{rename:{create(d,f){const g=c(d,f,p=>typeof p.rename=="object"?!!p.rename.normalize:!!p.rename);if(g)return{title:"",command:"editor.action.rename",arguments:[g.uri,g.position]}},is(d){return d.command==="editor.action.rename"}},showReferences:{create(d,f,g){const p=c(d,f);if(!p)return;const m=[];for(const _ of g)if(l.documents.isVirtualFileUri(_.uri))for(const[b,y]of l.documents.getMapsByVirtualFileUri(_.uri)){const w=y.toSourceRange(_.range);w&&m.push({uri:y.sourceFileDocument.uri,range:w})}else m.push(_);return{title:g.length===1?"1 reference":`${g.length} references`,command:"editor.action.showReferences",arguments:[p.uri,p.position,m]}},is(d){return d.command==="editor.action.showReferences"}},setSelection:{create(d){return{title:"",command:"setSelection",arguments:[{selection:{selectionStartLineNumber:d.line+1,positionLineNumber:d.line+1,selectionStartColumn:d.character+1,positionColumn:d.character+1}}]}},is(d){return d.command==="setSelection"}}},getTextDocument:u};for(const d in t.services??{}){const f=(h=t.services)==null?void 0:h[d];f&&(l.services[d]=f(l,n))}return l;function c(d,f,g){if(!r.isVirtualFileUri(d))return{uri:d,position:f};if(r.getVirtualFileByUri(d))for(const[m,_]of l.documents.getMapsByVirtualFileUri(d)){const b=_.toSourcePosition(f,g);if(b)return{uri:_.sourceFileDocument.uri,position:b}}}function u(d){var p;for(const[m,_]of l.documents.getMapsByVirtualFileUri(d))return _.virtualFileDocument;const f=e.uriToFileName(d),g=i.getScriptSnapshot(f);if(g){let m=o.get(g);if(!m){const _=(a.get(d.toLowerCase())??0)+1;a.set(d.toLowerCase(),_),m=zmt.TextDocument.create(d,((p=i.getLanguageId)==null?void 0:p.call(i,f))??(0,Kbe.resolveCommonLanguageId)(d),_,g.getText(0,g.getLength())),o.set(g,m)}return m}}}function S1t(n){return{getTriggerCharacters:()=>Object.values(n.services).map(e=>(e==null?void 0:e.triggerCharacters)??[]).flat(),getAutoFormatTriggerCharacters:()=>Object.values(n.services).map(e=>(e==null?void 0:e.autoFormatTriggerCharacters)??[]).flat(),getSignatureHelpTriggerCharacters:()=>Object.values(n.services).map(e=>(e==null?void 0:e.signatureHelpTriggerCharacters)??[]).flat(),getSignatureHelpRetriggerCharacters:()=>Object.values(n.services).map(e=>(e==null?void 0:e.signatureHelpRetriggerCharacters)??[]).flat(),format:v1t.register(n),getFoldingRanges:_1t.register(n),getSelectionRanges:y1t.register(n),findLinkedEditingRanges:b1t.register(n),findDocumentSymbols:m1t.register(n),findDocumentColors:p1t.register(n),getColorPresentations:g1t.register(n),doValidation:d1t.register(n),findReferences:l1t.register(n),findFileReferences:n1t.register(n),findDefinition:b6.register(n,"provideDefinition",e=>!!e.definition,e=>!!e.definition),findTypeDefinition:b6.register(n,"provideTypeDefinition",e=>!!e.definition,e=>!!e.definition),findImplementations:b6.register(n,"provideImplementation",e=>!!e.references,()=>!1),prepareRename:u1t.register(n),doRename:c1t.register(n),getEditsForFileRename:s1t.register(n),getSemanticTokens:i1t.register(n),doHover:r1t.register(n),doComplete:Xmt.register(n),doCodeActions:Gmt.register(n),doCodeActionResolve:Kmt.register(n),doCompletionResolve:Qmt.register(n),getSignatureHelp:h1t.register(n),doCodeLens:Ymt.register(n),doCodeLensResolve:Zmt.register(n),findDocumentHighlights:Jmt.register(n),findDocumentLinks:e1t.register(n),doDocumentLinkResolve:t1t.register(n),findWorkspaceSymbols:f1t.register(n),doAutoInsert:jmt.register(n),getInlayHints:o1t.register(n),doInlayHintResolve:a1t.register(n),callHierarchy:qmt.register(n),dispose:()=>Object.values(n.services).forEach(e=>{var t;return(t=e.dispose)==null?void 0:t.call(e)}),context:n}}(function(n){var e=Fi&&Fi.__createBinding||(Object.create?function(s,r,o,a){a===void 0&&(a=o);var l=Object.getOwnPropertyDescriptor(r,o);(!l||("get"in l?!r.__esModule:l.writable||l.configurable))&&(l={enumerable:!0,get:function(){return r[o]}}),Object.defineProperty(s,a,l)}:function(s,r,o,a){a===void 0&&(a=o),s[a]=r[o]}),t=Fi&&Fi.__exportStar||function(s,r){for(var o in s)o!=="default"&&!Object.prototype.hasOwnProperty.call(r,o)&&e(r,s,o)};Object.defineProperty(n,"__esModule",{value:!0}),n.standardSemanticTokensLegend=n.transformer=n.mergeWorkspaceEdits=void 0,t(GC,n),t(LF,n),t(rd,n);var i=yc;Object.defineProperty(n,"mergeWorkspaceEdits",{enumerable:!0,get:function(){return i.mergeWorkspaceEdits}}),t(ym,n),n.transformer=Td,n.standardSemanticTokensLegend={tokenTypes:["namespace","class","enum","interface","struct","typeParameter","type","parameter","variable","property","enumMember","decorator","event","function","method","macro","label","comment","string","keyword","number","regexp","operator"],tokenModifiers:["declaration","definition","readonly","static","deprecated","abstract","async","modification","documentation","defaultLibrary"]}})(Nbe);Object.defineProperty(wF,"__esModule",{value:!0});wF.createLanguageFeaturesProvider=void 0;const y6=Nbe,k1t=iD,Wn=ds,Vn=dt;async function L1t(n,e){const t=new WeakMap,i=new WeakMap,s=new WeakMap,r=new WeakMap,o=new WeakMap,a=new WeakMap,l=await n.getProxy();return{triggerCharacters:await l.getTriggerCharacters(),autoFormatTriggerCharacters:await l.getAutoFormatTriggerCharacters(),signatureHelpTriggerCharacters:await l.getSignatureHelpTriggerCharacters(),signatureHelpRetriggerCharacters:await l.getSignatureHelpRetriggerCharacters(),getLegend(){return y6.standardSemanticTokensLegend},async provideDocumentSemanticTokens(c,u){const d=await(await n.withSyncedResources(e())).getSemanticTokens(c.uri.toString(),void 0,y6.standardSemanticTokensLegend);if(d)return{resultId:d.resultId,data:Uint32Array.from(d.data)}},async provideDocumentRangeSemanticTokens(c,u){const d=await(await n.withSyncedResources(e())).getSemanticTokens(c.uri.toString(),Wn.asRange(u),y6.standardSemanticTokensLegend);if(d)return{resultId:d.resultId,data:Uint32Array.from(d.data)}},releaseDocumentSemanticTokens(){},async provideDocumentSymbols(c){const h=await(await n.withSyncedResources(e())).findDocumentSymbols(c.uri.toString());if(h)return h.map(Vn.asDocumentSymbol)},async provideDocumentHighlights(c,u){const d=await(await n.withSyncedResources(e())).findDocumentHighlights(c.uri.toString(),Wn.asPosition(u));if(d)return d.map(Vn.asDocumentHighlight)},async provideLinkedEditingRanges(c,u){const d=await(await n.withSyncedResources(e())).findLinkedEditingRanges(c.uri.toString(),Wn.asPosition(u));if(d)return{ranges:d.ranges.map(Vn.asRange),wordPattern:d.wordPattern?new RegExp(d.wordPattern):void 0}},async provideDefinition(c,u){const d=await(await n.withSyncedResources(e())).findDefinition(c.uri.toString(),Wn.asPosition(u));if(d)return d.map(Vn.asLocation)},async provideImplementation(c,u){const d=await(await n.withSyncedResources(e())).findImplementations(c.uri.toString(),Wn.asPosition(u));if(d)return d.map(Vn.asLocation)},async provideTypeDefinition(c,u){const d=await(await n.withSyncedResources(e())).findTypeDefinition(c.uri.toString(),Wn.asPosition(u));if(d)return d.map(Vn.asLocation)},async provideCodeLenses(c){const h=await(await n.withSyncedResources(e())).doCodeLens(c.uri.toString());if(h){const d=h.map(Vn.asCodeLens);for(let f=0;f<d.length;f++)i.set(d[f],h[f]);return{lenses:d,dispose:()=>{}}}},async resolveCodeLens(c,u){let h=i.get(u);return h&&(h=await(await n.withSyncedResources(e())).doCodeLensResolve(h),h&&(u=Vn.asCodeLens(h),i.set(u,h))),u},async provideCodeActions(c,u,h){const d=[];for(const p of h.markers){const m=k1t.markers.get(p);m&&d.push(m)}const g=await(await n.withSyncedResources(e())).doCodeActions(c.uri.toString(),Wn.asRange(u),{diagnostics:d,only:h.only?[h.only]:void 0});if(g){const p=g.map(Vn.asCodeAction);for(let m=0;m<p.length;m++)s.set(p[m],g[m]);return{actions:p,dispose:()=>{}}}},async resolveCodeAction(c){let u=s.get(c);return u&&(u=await(await n.withSyncedResources(e())).doCodeActionResolve(u),u&&(c=Vn.asCodeAction(u),s.set(c,u))),c},async provideDocumentFormattingEdits(c,u){const d=await(await n.withSyncedResources(e())).format(c.uri.toString(),Wn.asFormattingOptions(u),void 0,void 0);if(d)return d.map(Vn.asTextEdit)},async provideDocumentRangeFormattingEdits(c,u,h){const f=await(await n.withSyncedResources(e())).format(c.uri.toString(),Wn.asFormattingOptions(h),Wn.asRange(u),void 0);if(f)return f.map(Vn.asTextEdit)},async provideOnTypeFormattingEdits(c,u,h,d){const g=await(await n.withSyncedResources(e())).format(c.uri.toString(),Wn.asFormattingOptions(d),void 0,{ch:h,position:Wn.asPosition(u)});if(g)return g.map(Vn.asTextEdit)},async provideLinks(c){const h=await(await n.withSyncedResources(e())).findDocumentLinks(c.uri.toString());if(h)return{links:h.map(d=>{const f=Vn.asLink(d);return o.set(f,d),f})}},async resolveLink(c){let u=o.get(c);return u?(u=await l.doDocumentLinkResolve(u),Vn.asLink(u)):c},async provideCompletionItems(c,u,h){const f=await(await n.withSyncedResources(e())).doComplete(c.uri.toString(),Wn.asPosition(u),Wn.asCompletionContext(h)),g={start:Wn.asPosition(u),end:Wn.asPosition(u)},p=Vn.asCompletionList(f,g);for(let m=0;m<f.items.length;m++)t.set(p.suggestions[m],f.items[m]);return p},async resolveCompletionItem(c){let u=t.get(c);if(u){u=await(await n.withSyncedResources(e())).doCompletionResolve(u);const d="replace"in c.range?Wn.asRange(c.range.replace):Wn.asRange(c.range);c=Vn.asCompletionItem(u,d),t.set(c,u)}return c},async provideDocumentColors(c){const h=await(await n.withSyncedResources(e())).findDocumentColors(c.uri.toString());if(h)return h.map(Vn.asColorInformation)},async provideColorPresentations(c,u){const h=await n.withSyncedResources(e()),d=r.get(u);if(d){const f=await h.getColorPresentations(c.uri.toString(),d.color,{start:Wn.asPosition(c.getPositionAt(0)),end:Wn.asPosition(c.getPositionAt(c.getValueLength()))});if(f)return f.map(Vn.asColorPresentation)}},async provideFoldingRanges(c,u){const d=await(await n.withSyncedResources(e())).getFoldingRanges(c.uri.toString());if(d)return d.map(Vn.asFoldingRange)},async provideDeclaration(c,u){const d=await(await n.withSyncedResources(e())).findDefinition(c.uri.toString(),Wn.asPosition(u));if(d)return d.map(Vn.asLocation)},async provideSelectionRanges(c,u){const h=await n.withSyncedResources(e());return(await Promise.all(u.map(f=>h.getSelectionRanges(c.uri.toString(),[Wn.asPosition(f)])))).map(f=>(f==null?void 0:f.map(Vn.asSelectionRange))??[])},async provideSignatureHelp(c,u,h,d){const g=await(await n.withSyncedResources(e())).getSignatureHelp(c.uri.toString(),Wn.asPosition(u),Wn.asSignatureHelpContext(d));if(g)return{value:Vn.asSignatureHelp(g),dispose:()=>{}}},async provideRenameEdits(c,u,h){const f=await(await n.withSyncedResources(e())).doRename(c.uri.toString(),Wn.asPosition(u),h);if(f)return Vn.asWorkspaceEdit(f)},async provideReferences(c,u,h){const f=await(await n.withSyncedResources(e())).findReferences(c.uri.toString(),Wn.asPosition(u));if(f)return f.map(Vn.asLocation)},async provideInlayHints(c,u){const d=await(await n.withSyncedResources(e())).getInlayHints(c.uri.toString(),Wn.asRange(u));if(d)return{hints:d.map(f=>{const g=Vn.asInlayHint(f);return a.set(g,f),g}),dispose:()=>{}}},async resolveInlayHint(c){const u=await n.withSyncedResources(e()),h=a.get(c);if(h){const d=await u.doInlayHintResolve(h);return Vn.asInlayHint(d)}return c},async provideHover(c,u){const d=await(await n.withSyncedResources(e())).doHover(c.uri.toString(),Wn.asPosition(u));if(d)return Vn.asHover(d)}}}wF.createLanguageFeaturesProvider=L1t;Object.defineProperty(CF,"__esModule",{value:!0});CF.languages=void 0;const x1t=wF;var kre;(function(n){n.registerProvides=e;async function e(t,i,s,r){const o=await(0,x1t.createLanguageFeaturesProvider)(t,s),a=[r.registerHoverProvider(i,o),r.registerReferenceProvider(i,o),r.registerRenameProvider(i,o),r.registerSignatureHelpProvider(i,o),r.registerDocumentSymbolProvider(i,o),r.registerDocumentHighlightProvider(i,o),r.registerLinkedEditingRangeProvider(i,o),r.registerDefinitionProvider(i,o),r.registerImplementationProvider(i,o),r.registerTypeDefinitionProvider(i,o),r.registerCodeLensProvider(i,o),r.registerCodeActionProvider(i,o),r.registerDocumentFormattingEditProvider(i,o),r.registerDocumentRangeFormattingEditProvider(i,o),r.registerOnTypeFormattingEditProvider(i,o),r.registerLinkProvider(i,o),r.registerCompletionItemProvider(i,o),r.registerColorProvider(i,o),r.registerFoldingRangeProvider(i,o),r.registerDeclarationProvider(i,o),r.registerSelectionRangeProvider(i,o),r.registerInlayHintsProvider(i,o),r.registerDocumentSemanticTokensProvider(i,o),r.registerDocumentRangeSemanticTokensProvider(i,o)];return{dispose:()=>a.forEach(l=>l.dispose())}}n.registerProviders=e})(kre||(CF.languages=kre={}));(function(n){var e=Fi&&Fi.__createBinding||(Object.create?function(i,s,r,o){o===void 0&&(o=r);var a=Object.getOwnPropertyDescriptor(s,r);(!a||("get"in a?!s.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return s[r]}}),Object.defineProperty(i,o,a)}:function(i,s,r,o){o===void 0&&(o=r),i[o]=s[r]}),t=Fi&&Fi.__exportStar||function(i,s){for(var r in i)r!=="default"&&!Object.prototype.hasOwnProperty.call(s,r)&&e(s,i,r)};Object.defineProperty(n,"__esModule",{value:!0}),t(yF,n),t(CF,n)})(AN);function E1t(n){return new Worker(""+new URL(""+new URL("editor.worker-GwjmF-eZ-90JFiUm3.js",import.meta.url).href,import.meta.url).href,{type:"module",name:n==null?void 0:n.name})}function QG(n,e,t){const i=sd.getModel(n);return i?(i.setValue(t),i):sd.createModel(t,e,n)}function D1t(n){return new Worker(""+new URL(""+new URL("vue.worker-t8qPTCzg-CUZqhcvh.js",import.meta.url).href,import.meta.url).href,{type:"module",name:n==null?void 0:n.name})}let Lre=!1;function I1t(n){Lre||(A1t(n),Kx(()=>{for(const e in n.state.files){const t=n.state.files[e];sd.getModel(zx.parse(`file:///${e}`))||QG(zx.parse(`file:///${e}`),t.language,t.code)}for(const e of sd.getModels()){const t=e.uri.toString();n.state.files[t.substring(8)]||t.startsWith(QH.jsDelivrUriBase+"/")||t.startsWith("inmemory://")||e.dispose()}}),sd.registerEditorOpener({openCodeEditor(e,t){if(t.toString().startsWith(QH.jsDelivrUriBase+"/"))return!0;const i=t.path;if(/^\//.test(i)){const s=i.replace("/","");if(s!==n.state.activeFile.filename)return n.setActive(s),!0}return!1}}),Lre=!0)}class T1t{onFetchCdnFile(e,t){QG(zx.parse(e),void 0,t)}}let fT;async function N1t(n){var l;fT==null||fT();let e={...n.state.dependencyVersion};n.vueVersion&&(e={...e,vue:n.vueVersion,"@vue/compiler-core":n.vueVersion,"@vue/compiler-dom":n.vueVersion,"@vue/compiler-sfc":n.vueVersion,"@vue/compiler-ssr":n.vueVersion,"@vue/reactivity":n.vueVersion,"@vue/runtime-core":n.vueVersion,"@vue/runtime-dom":n.vueVersion,"@vue/shared":n.vueVersion}),n.state.typescriptVersion&&(e={...e,typescript:n.state.typescriptVersion});const t=sd.createWebWorker({moduleId:"vs/language/vue/vueWorker",label:"vue",host:new T1t,createData:{tsconfig:((l=n.getTsConfig)==null?void 0:l.call(n))||{},dependencies:e}}),i=["vue","javascript","typescript"],s=()=>Object.keys(n.state.files).map(c=>zx.parse(`file:///${c}`)),{dispose:r}=AN.editor.activateMarkers(t,i,"vue",s,sd),{dispose:o}=AN.editor.activateAutoInsertion(t,i,s,sd),{dispose:a}=await AN.languages.registerProvides(t,i,s,NS);fT=()=>{r(),o(),a()}}function A1t(n){self.MonacoEnvironment={async getWorker(e,t){if(t==="vue"){const i=new D1t;return await new Promise(r=>{i.addEventListener("message",o=>{o.data==="inited"&&r()}),i.postMessage({event:"init",tsVersion:n.state.typescriptVersion,tsLocale:n.state.typescriptLocale||n.state.locale})}),i}return new E1t}},NS.register({id:"vue",extensions:[".vue"]}),NS.register({id:"javascript",extensions:[".js"]}),NS.register({id:"typescript",extensions:[".ts"]}),n.reloadLanguageTools=()=>N1t(n),NS.onLanguage("vue",()=>n.reloadLanguageTools())}const P1t=rr({__name:"Monaco",props:{filename:{},value:{},readonly:{type:Boolean,default:!1},mode:{}},emits:["change"],setup(n,{emit:e}){const t=n,i=e,s=Qt(),r=Qt(!1),o=AS(),a=$r("store");I1t(a);const l=Qn(()=>t.mode==="css"?"css":"javascript"),c=$r("theme");return tg(async()=>{const u=await _ae(()=>import("./highlight-tY_3qpIX-7pMUEdH0.js"),__vite__mapDeps([]),import.meta.url).then(f=>f.registerHighlighter());if(r.value=!0,await sC(),!s.value)throw new Error("Cannot find containerRef");const h=sd.create(s.value,{...t.readonly?{value:t.value,language:l.value}:{model:null},fontSize:13,tabSize:2,theme:c.value==="light"?u.light:u.dark,readOnly:t.readonly,automaticLayout:!0,scrollBeyondLastLine:!1,minimap:{enabled:!1},inlineSuggest:{enabled:!1},fixedOverflowWidgets:!0});o.value=h;const d=h._themeService._theme;d.getTokenStyleMetadata=(f,g,p)=>{const m=g.includes("readonly");switch(f){case"function":case"method":return{foreground:12};case"class":return{foreground:11};case"variable":case"property":return{foreground:m?21:9};default:return{foreground:0}}},Kn(()=>t.value,f=>{h.getValue()!==f&&h.setValue(f||"")},{immediate:!0}),Kn(l,f=>sd.setModelLanguage(h.getModel(),f)),t.readonly||Kn(()=>t.filename,(f,g)=>{if(!h)return;const p=a.state.files[t.filename];if(!p)return null;const m=QG(zx.parse(`file:///${t.filename}`),p.language,p.code),_=g?a.state.files[g]:null;_&&(_.editorViewState=h.saveViewState()),h.setModel(m),p.editorViewState&&(h.restoreViewState(p.editorViewState),h.focus())},{immediate:!0}),h.addCommand(fft.CtrlCmd|dft.KeyS,()=>{}),h.onDidChangeModelContent(()=>{i("change",h.getValue())}),Kn(c,f=>{h.updateOptions({theme:f==="light"?u.light:u.dark})})}),GR(()=>{var u;(u=o.value)==null||u.dispose()}),(u,h)=>(vi(),Mi("div",{class:"editor",ref_key:"containerRef",ref:s},null,512))}}),R1t=rr({editorType:"monaco",__name:"MonacoEditor",props:{value:{},filename:{},readonly:{type:Boolean},mode:{}},emits:["change"],setup(n,{emit:e}){const t=e,i=s=>{t("change",s)};return(s,r)=>(vi(),dv(P1t,{onChange:i,filename:s.filename,value:s.value,readonly:s.readonly,mode:s.mode},null,8,["filename","value","readonly","mode"]))}});function M1t(){}const Vv=Object.assign,Gbe=typeof window<"u",a4=n=>n!==null&&typeof n=="object",Cm=n=>n!=null,i$=n=>typeof n=="function",O1t=n=>a4(n)&&i$(n.then)&&i$(n.catch),Ybe=n=>typeof n=="number"||/^\d+(\.\d+)?$/.test(n),F1t=()=>Gbe?/ios|iphone|ipad|ipod/.test(navigator.userAgent.toLowerCase()):!1;function xre(n,e){const t=e.split(".");let i=n;return t.forEach(s=>{var r;i=a4(i)&&(r=i[s])!=null?r:""}),i}function B1t(n,e,t){return e.reduce((i,s)=>((!t||n[s]!==void 0)&&(i[s]=n[s]),i),{})}const PR=null,xc=[Number,String],q1={type:Boolean,default:!0},W1t=n=>({type:Number,default:n}),od=n=>({type:String,default:n});var JG=typeof window<"u";function Zbe(n){let e;tg(()=>{n(),sC(()=>{e=!0})}),x$(()=>{e&&n()})}function Xbe(n,e,t={}){if(!JG)return;const{target:i=window,passive:s=!1,capture:r=!1}=t;let o=!1,a;const l=h=>{if(o)return;const d=Ti(h);d&&!a&&(d.addEventListener(n,e,{capture:r,passive:s}),a=!0)},c=h=>{if(o)return;const d=Ti(h);d&&a&&(d.removeEventListener(n,e,r),a=!1)};Gx(()=>c(i)),qR(()=>c(i)),Zbe(()=>l(i));let u;return $s(i)&&(u=Kn(i,(h,d)=>{c(d),l(h)})),()=>{u==null||u(),c(i),o=!0}}var gT,C6;function V1t(){if(!gT&&(gT=Qt(0),C6=Qt(0),JG)){const n=()=>{gT.value=window.innerWidth,C6.value=window.innerHeight};n(),window.addEventListener("resize",n,{passive:!0}),window.addEventListener("orientationchange",n,{passive:!0})}return{width:gT,height:C6}}var H1t=/scroll|auto|overlay/i,$1t=JG?window:void 0;function z1t(n){return n.tagName!=="HTML"&&n.tagName!=="BODY"&&n.nodeType===1}function U1t(n,e=$1t){let t=n;for(;t&&t!==e&&z1t(t);){const{overflowY:i}=window.getComputedStyle(t);if(H1t.test(i))return t;t=t.parentNode}return e}F1t();const j1t=n=>n.stopPropagation();function Qbe(n,e){(typeof n.cancelable!="boolean"||n.cancelable)&&n.preventDefault(),e&&j1t(n)}V1t();function ou(n){if(Cm(n))return Ybe(n)?`${n}px`:String(n)}function q1t(n){if(Cm(n)){if(Array.isArray(n))return{width:ou(n[0]),height:ou(n[1])};const e=ou(n);return{width:e,height:e}}}function K1t(n){const e={};return n!==void 0&&(e.zIndex=+n),e}const G1t=/-(\w)/g,Jbe=n=>n.replace(G1t,(e,t)=>t.toUpperCase()),{hasOwnProperty:Y1t}=Object.prototype;function Z1t(n,e,t){const i=e[t];Cm(i)&&(!Y1t.call(n,t)||!a4(i)?n[t]=i:n[t]=eye(Object(n[t]),i))}function eye(n,e){return Object.keys(e).forEach(t=>{Z1t(n,e,t)}),n}var X1t={name:"姓名",tel:"电话",save:"保存",clear:"清空",cancel:"取消",confirm:"确认",delete:"删除",loading:"加载中...",noCoupon:"暂无优惠券",nameEmpty:"请填写姓名",addContact:"添加联系人",telInvalid:"请填写正确的电话",vanCalendar:{end:"结束",start:"开始",title:"日期选择",weekdays:["日","一","二","三","四","五","六"],monthTitle:(n,e)=>`${n}年${e}月`,rangePrompt:n=>`最多选择 ${n} 天`},vanCascader:{select:"请选择"},vanPagination:{prev:"上一页",next:"下一页"},vanPullRefresh:{pulling:"下拉即可刷新...",loosing:"释放即可刷新..."},vanSubmitBar:{label:"合计:"},vanCoupon:{unlimited:"无门槛",discount:n=>`${n}折`,condition:n=>`满${n}元可用`},vanCouponCell:{title:"优惠券",count:n=>`${n}张可用`},vanCouponList:{exchange:"兑换",close:"不使用",enable:"可用",disabled:"不可用",placeholder:"输入优惠码"},vanAddressEdit:{area:"地区",areaEmpty:"请选择地区",addressEmpty:"请填写详细地址",addressDetail:"详细地址",defaultAddress:"设为默认收货地址"},vanAddressList:{add:"新增地址"}};const Ere=Qt("zh-CN"),Dre=wm({"zh-CN":X1t}),Q1t={messages(){return Dre[Ere.value]},use(n,e){Ere.value=n,this.add({[n]:e})},add(n={}){eye(Dre,n)}};var J1t=Q1t;function e_t(n){const e=Jbe(n)+".";return(t,...i)=>{const s=J1t.messages(),r=xre(s,e+t)||xre(s,t);return i$(r)?r(...i):r}}function n$(n,e){return e?typeof e=="string"?` ${n}--${e}`:Array.isArray(e)?e.reduce((t,i)=>t+n$(n,i),""):Object.keys(e).reduce((t,i)=>t+(e[i]?n$(n,i):""),""):""}function t_t(n){return(e,t)=>(e&&typeof e!="string"&&(t=e,e=""),e=e?`${n}__${e}`:n,`${e}${n$(e,t)}`)}function Hv(n){const e=`van-${n}`;return[e,t_t(e),e_t(e)]}const i_t="van-haptics-feedback",Ire=5;function n_t(n,{args:e=[],done:t,canceled:i,error:s}){if(n){const r=n.apply(null,e);O1t(r)?r.then(o=>{o?t():i&&i()}).catch(s||M1t):r?t():i&&i()}else t()}function YC(n){return n.install=e=>{const{name:t}=n;t&&(e.component(t,n),e.component(Jbe(`-${t}`),n))},n}const s_t=Symbol();function tye(n){const e=fv();e&&Vv(e.proxy,n)}const[r_t,Tre]=Hv("badge"),o_t={dot:Boolean,max:xc,tag:od("div"),color:String,offset:Array,content:xc,showZero:q1,position:od("top-right")};var a_t=rr({name:r_t,props:o_t,setup(n,{slots:e}){const t=()=>{if(e.content)return!0;const{content:a,showZero:l}=n;return Cm(a)&&a!==""&&(l||a!==0&&a!=="0")},i=()=>{const{dot:a,max:l,content:c}=n;if(!a&&t())return e.content?e.content():Cm(l)&&Ybe(c)&&+c>+l?`${l}+`:c},s=a=>a.startsWith("-")?a.replace("-",""):`-${a}`,r=Qn(()=>{const a={background:n.color};if(n.offset){const[l,c]=n.offset,{position:u}=n,[h,d]=u.split("-");e.default?(typeof c=="number"?a[h]=ou(h==="top"?c:-c):a[h]=h==="top"?ou(c):s(c),typeof l=="number"?a[d]=ou(d==="left"?l:-l):a[d]=d==="left"?ou(l):s(l)):(a.marginTop=ou(c),a.marginLeft=ou(l))}return a}),o=()=>{if(t()||n.dot)return At("div",{class:Tre([n.position,{dot:n.dot,fixed:!!e.default}]),style:r.value},[i()])};return()=>{if(e.default){const{tag:a}=n;return At(a,{class:Tre("wrapper")},{default:()=>[e.default(),o()]})}return o()}}});const l_t=YC(a_t);let c_t=2e3;const u_t=()=>++c_t,[h_t,Wxt]=Hv("config-provider"),d_t=Symbol(h_t),[f_t,Nre]=Hv("icon"),g_t=n=>n==null?void 0:n.includes("/"),p_t={dot:Boolean,tag:od("i"),name:String,size:xc,badge:xc,color:String,badgeProps:Object,classPrefix:String};var m_t=rr({name:f_t,props:p_t,setup(n,{slots:e}){const t=$r(d_t,null),i=Qn(()=>n.classPrefix||(t==null?void 0:t.iconPrefix)||Nre());return()=>{const{tag:s,dot:r,name:o,size:a,badge:l,color:c}=n,u=g_t(o);return At(l_t,jb({dot:r,tag:s,class:[i.value,u?"":`${i.value}-${o}`],style:{color:c,fontSize:ou(a)},content:l},n.badgeProps),{default:()=>{var h;return[(h=e.default)==null?void 0:h.call(e),u&&At("img",{class:Nre("image"),src:o},null)]}})}}});const eY=YC(m_t),[__t,Dk]=Hv("loading"),v_t=Array(12).fill(null).map((n,e)=>At("i",{class:Dk("line",String(e+1))},null)),b_t=At("svg",{class:Dk("circular"),viewBox:"25 25 50 50"},[At("circle",{cx:"50",cy:"50",r:"20",fill:"none"},null)]),y_t={size:xc,type:od("circular"),color:String,vertical:Boolean,textSize:xc,textColor:String};var C_t=rr({name:__t,props:y_t,setup(n,{slots:e}){const t=Qn(()=>Vv({color:n.color},q1t(n.size))),i=()=>{const r=n.type==="spinner"?v_t:b_t;return At("span",{class:Dk("spinner",n.type),style:t.value},[e.icon?e.icon():r])},s=()=>{var r;if(e.default)return At("span",{class:Dk("text"),style:{fontSize:ou(n.textSize),color:(r=n.textColor)!=null?r:n.color}},[e.default()])};return()=>{const{type:r,vertical:o}=n;return At("div",{class:Dk([r,{vertical:o}]),"aria-live":"polite","aria-busy":!0},[i(),s()])}}});const w_t=YC(C_t),S_t={show:Boolean,zIndex:xc,overlay:q1,duration:xc,teleport:[String,Object],lockScroll:q1,lazyRender:q1,beforeClose:Function,overlayStyle:Object,overlayClass:PR,transitionAppear:Boolean,closeOnClickOverlay:q1};function k_t(n,e){return n>e?"horizontal":e>n?"vertical":""}function L_t(){const n=Qt(0),e=Qt(0),t=Qt(0),i=Qt(0),s=Qt(0),r=Qt(0),o=Qt(""),a=Qt(!0),l=()=>o.value==="vertical",c=()=>o.value==="horizontal",u=()=>{t.value=0,i.value=0,s.value=0,r.value=0,o.value="",a.value=!0};return{move:f=>{const g=f.touches[0];t.value=(g.clientX<0?0:g.clientX)-n.value,i.value=g.clientY-e.value,s.value=Math.abs(t.value),r.value=Math.abs(i.value);const p=10;(!o.value||s.value<p&&r.value<p)&&(o.value=k_t(s.value,r.value)),a.value&&(s.value>Ire||r.value>Ire)&&(a.value=!1)},start:f=>{u(),n.value=f.touches[0].clientX,e.value=f.touches[0].clientY},reset:u,startX:n,startY:e,deltaX:t,deltaY:i,offsetX:s,offsetY:r,direction:o,isVertical:l,isHorizontal:c,isTap:a}}let Zw=0;const Are="van-overflow-hidden";function x_t(n,e){const t=L_t(),i="01",s="10",r=u=>{t.move(u);const h=t.deltaY.value>0?s:i,d=U1t(u.target,n.value),{scrollHeight:f,offsetHeight:g,scrollTop:p}=d;let m="11";p===0?m=g>=f?"00":"01":p+g>=f&&(m="10"),m!=="11"&&t.isVertical()&&!(parseInt(m,2)&parseInt(h,2))&&Qbe(u,!0)},o=()=>{document.addEventListener("touchstart",t.start),document.addEventListener("touchmove",r,{passive:!1}),Zw||document.body.classList.add(Are),Zw++},a=()=>{Zw&&(document.removeEventListener("touchstart",t.start),document.removeEventListener("touchmove",r),Zw--,Zw||document.body.classList.remove(Are))},l=()=>e()&&o(),c=()=>e()&&a();Zbe(l),qR(c),GR(c),Kn(e,u=>{u?o():a()})}function iye(n){const e=Qt(!1);return Kn(n,t=>{t&&(e.value=t)},{immediate:!0}),t=>()=>e.value?t():null}const Pre=()=>{var n;const{scopeId:e}=((n=fv())==null?void 0:n.vnode)||{};return e?{[e]:""}:null},[E_t,D_t]=Hv("overlay"),I_t={show:Boolean,zIndex:xc,duration:xc,className:PR,lockScroll:q1,lazyRender:q1,customStyle:Object};var T_t=rr({name:E_t,props:I_t,setup(n,{slots:e}){const t=Qt(),i=iye(()=>n.show||!n.lazyRender),s=o=>{n.lockScroll&&Qbe(o,!0)},r=i(()=>{var o;const a=Vv(K1t(n.zIndex),n.customStyle);return Cm(n.duration)&&(a.animationDuration=`${n.duration}s`),__(At("div",{ref:t,style:a,class:[D_t(),n.className]},[(o=e.default)==null?void 0:o.call(e)]),[[Kb,n.show]])});return Xbe("touchmove",s,{target:t}),()=>At(rC,{name:"van-fade",appear:!0},{default:r})}});const N_t=YC(T_t),A_t=Vv({},S_t,{round:Boolean,position:od("center"),closeIcon:od("cross"),closeable:Boolean,transition:String,iconPrefix:String,closeOnPopstate:Boolean,closeIconPosition:od("top-right"),safeAreaInsetTop:Boolean,safeAreaInsetBottom:Boolean}),[P_t,Rre]=Hv("popup");var R_t=rr({name:P_t,inheritAttrs:!1,props:A_t,emits:["open","close","opened","closed","keydown","update:show","clickOverlay","clickCloseIcon"],setup(n,{emit:e,attrs:t,slots:i}){let s,r;const o=Qt(),a=Qt(),l=iye(()=>n.show||!n.lazyRender),c=Qn(()=>{const E={zIndex:o.value};if(Cm(n.duration)){const L=n.position==="center"?"animationDuration":"transitionDuration";E[L]=`${n.duration}s`}return E}),u=()=>{s||(s=!0,o.value=n.zIndex!==void 0?+n.zIndex:u_t(),e("open"))},h=()=>{s&&n_t(n.beforeClose,{done(){s=!1,e("close"),e("update:show",!1)}})},d=E=>{e("clickOverlay",E),n.closeOnClickOverlay&&h()},f=()=>{if(n.overlay)return At(N_t,jb({show:n.show,class:n.overlayClass,zIndex:o.value,duration:n.duration,customStyle:n.overlayStyle,role:n.closeOnClickOverlay?"button":void 0,tabindex:n.closeOnClickOverlay?0:void 0},Pre(),{onClick:d}),{default:i["overlay-content"]})},g=E=>{e("clickCloseIcon",E),h()},p=()=>{if(n.closeable)return At(eY,{role:"button",tabindex:0,name:n.closeIcon,class:[Rre("close-icon",n.closeIconPosition),i_t],classPrefix:n.iconPrefix,onClick:g},null)};let m;const _=()=>{m&&clearTimeout(m),m=setTimeout(()=>{e("opened")})},b=()=>e("closed"),y=E=>e("keydown",E),w=l(()=>{var E;const{round:L,position:k,safeAreaInsetTop:x,safeAreaInsetBottom:I}=n;return __(At("div",jb({ref:a,style:c.value,role:"dialog",tabindex:0,class:[Rre({round:L,[k]:k}),{"van-safe-area-top":x,"van-safe-area-bottom":I}],onKeydown:y},t,Pre()),[(E=i.default)==null?void 0:E.call(i),p()]),[[Kb,n.show]])}),S=()=>{const{position:E,transition:L,transitionAppear:k}=n,x=E==="center"?"van-fade":`van-popup-slide-${E}`;return At(rC,{name:L||x,appear:k,onAfterEnter:_,onAfterLeave:b},{default:w})};return Kn(()=>n.show,E=>{E&&!s&&(u(),t.tabindex===0&&sC(()=>{var L;(L=a.value)==null||L.focus()})),!E&&s&&(s=!1,e("close"))}),tye({popupRef:a}),x_t(a,()=>n.show&&n.lockScroll),Xbe("popstate",()=>{n.closeOnPopstate&&(h(),r=!1)}),tg(()=>{n.show&&u()}),x$(()=>{r&&(e("update:show",!0),r=!1)}),qR(()=>{n.show&&n.teleport&&(h(),r=!0)}),ic(s_t,()=>n.show),()=>n.teleport?At(Dwe,{to:n.teleport},{default:()=>[f(),S()]}):At(Es,null,[f(),S()])}});const M_t=YC(R_t);let Xw=0;function O_t(n){n?(Xw||document.body.classList.add("van-toast--unclickable"),Xw++):Xw&&(Xw--,Xw||document.body.classList.remove("van-toast--unclickable"))}const[F_t,v0]=Hv("toast"),B_t=["show","overlay","teleport","transition","overlayClass","overlayStyle","closeOnClickOverlay"],W_t={icon:String,show:Boolean,type:od("text"),overlay:Boolean,message:xc,iconSize:xc,duration:W1t(2e3),position:od("middle"),teleport:[String,Object],wordBreak:String,className:PR,iconPrefix:String,transition:od("van-fade"),loadingType:String,forbidClick:Boolean,overlayClass:PR,overlayStyle:Object,closeOnClick:Boolean,closeOnClickOverlay:Boolean};var nye=rr({name:F_t,props:W_t,emits:["update:show"],setup(n,{emit:e,slots:t}){let i,s=!1;const r=()=>{const h=n.show&&n.forbidClick;s!==h&&(s=h,O_t(s))},o=h=>e("update:show",h),a=()=>{n.closeOnClick&&o(!1)},l=()=>clearTimeout(i),c=()=>{const{icon:h,type:d,iconSize:f,iconPrefix:g,loadingType:p}=n;if(h||d==="success"||d==="fail")return At(eY,{name:h||d,size:f,class:v0("icon"),classPrefix:g},null);if(d==="loading")return At(w_t,{class:v0("loading"),size:f,type:p},null)},u=()=>{const{type:h,message:d}=n;if(t.message)return At("div",{class:v0("text")},[t.message()]);if(Cm(d)&&d!=="")return h==="html"?At("div",{key:0,class:v0("text"),innerHTML:String(d)},null):At("div",{class:v0("text")},[d])};return Kn(()=>[n.show,n.forbidClick],r),Kn(()=>[n.show,n.type,n.message,n.duration],()=>{l(),n.show&&n.duration>0&&(i=setTimeout(()=>{o(!1)},n.duration))}),tg(r),Gx(r),()=>At(M_t,jb({class:[v0([n.position,n.wordBreak==="normal"?"break-normal":n.wordBreak,{[n.type]:!n.icon}]),n.className],lockScroll:!1,onClick:a,onClosed:l,"onUpdate:show":o},B1t(n,B_t)),{default:()=>[c(),u()]})}});function V_t(){const n=wm({show:!1}),e=s=>{n.show=s},t=s=>{Vv(n,s,{transitionAppear:!0}),e(!0)},i=()=>e(!1);return tye({open:t,close:i,toggle:e}),{open:t,close:i,state:n,toggle:e}}function H_t(n){const e=mae(n),t=document.createElement("div");return document.body.appendChild(t),{instance:e.mount(t),unmount(){e.unmount(),document.body.removeChild(t)}}}const $_t={icon:"",type:"text",message:"",className:"",overlay:!1,onClose:void 0,onOpened:void 0,duration:2e3,teleport:"body",iconSize:void 0,iconPrefix:void 0,position:"middle",transition:"van-fade",forbidClick:!1,loadingType:void 0,overlayClass:"",overlayStyle:void 0,closeOnClick:!1,closeOnClickOverlay:!1};let pT=[],z_t=!1,Mre=Vv({},$_t);const U_t=new Map;function j_t(n){return a4(n)?n:{message:n}}function q_t(){const{instance:n,unmount:e}=H_t({setup(){const t=Qt(""),{open:i,state:s,close:r,toggle:o}=V_t(),a=()=>{},l=()=>At(nye,jb(s,{onClosed:a,"onUpdate:show":o}),null);return Kn(t,c=>{s.message=c}),fv().render=l,{open:i,close:r,message:t}}});return n}function K_t(){if(!pT.length||z_t){const n=q_t();pT.push(n)}return pT[pT.length-1]}function Ore(n={}){if(!Gbe)return{};const e=K_t(),t=j_t(n);return e.open(Vv({},Mre,U_t.get(t.type||Mre.type),t)),e}YC(nye);var s$={exports:{}};const G_t="2.0.0",sye=256,Y_t=Number.MAX_SAFE_INTEGER||9007199254740991,Z_t=16,X_t=sye-6,Q_t=["major","premajor","minor","preminor","patch","prepatch","prerelease"];var l4={MAX_LENGTH:sye,MAX_SAFE_COMPONENT_LENGTH:Z_t,MAX_SAFE_BUILD_LENGTH:X_t,MAX_SAFE_INTEGER:Y_t,RELEASE_TYPES:Q_t,SEMVER_SPEC_VERSION:G_t,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2},w6={};const J_t=typeof process=="object"&&w6&&w6.NODE_DEBUG&&/\bsemver\b/i.test(w6.NODE_DEBUG)?(...n)=>console.error("SEMVER",...n):()=>{};var c4=J_t;(function(n,e){const{MAX_SAFE_COMPONENT_LENGTH:t,MAX_SAFE_BUILD_LENGTH:i,MAX_LENGTH:s}=l4,r=c4;e=n.exports={};const o=e.re=[],a=e.safeRe=[],l=e.src=[],c=e.t={};let u=0;const h="[a-zA-Z0-9-]",d=[["\\s",1],["\\d",s],[h,i]],f=p=>{for(const[m,_]of d)p=p.split(`${m}*`).join(`${m}{0,${_}}`).split(`${m}+`).join(`${m}{1,${_}}`);return p},g=(p,m,_)=>{const b=f(m),y=u++;r(p,y,m),c[p]=y,l[y]=m,o[y]=new RegExp(m,_?"g":void 0),a[y]=new RegExp(b,_?"g":void 0)};g("NUMERICIDENTIFIER","0|[1-9]\\d*"),g("NUMERICIDENTIFIERLOOSE","\\d+"),g("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${h}*`),g("MAINVERSION",`(${l[c.NUMERICIDENTIFIER]})\\.(${l[c.NUMERICIDENTIFIER]})\\.(${l[c.NUMERICIDENTIFIER]})`),g("MAINVERSIONLOOSE",`(${l[c.NUMERICIDENTIFIERLOOSE]})\\.(${l[c.NUMERICIDENTIFIERLOOSE]})\\.(${l[c.NUMERICIDENTIFIERLOOSE]})`),g("PRERELEASEIDENTIFIER",`(?:${l[c.NUMERICIDENTIFIER]}|${l[c.NONNUMERICIDENTIFIER]})`),g("PRERELEASEIDENTIFIERLOOSE",`(?:${l[c.NUMERICIDENTIFIERLOOSE]}|${l[c.NONNUMERICIDENTIFIER]})`),g("PRERELEASE",`(?:-(${l[c.PRERELEASEIDENTIFIER]}(?:\\.${l[c.PRERELEASEIDENTIFIER]})*))`),g("PRERELEASELOOSE",`(?:-?(${l[c.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${l[c.PRERELEASEIDENTIFIERLOOSE]})*))`),g("BUILDIDENTIFIER",`${h}+`),g("BUILD",`(?:\\+(${l[c.BUILDIDENTIFIER]}(?:\\.${l[c.BUILDIDENTIFIER]})*))`),g("FULLPLAIN",`v?${l[c.MAINVERSION]}${l[c.PRERELEASE]}?${l[c.BUILD]}?`),g("FULL",`^${l[c.FULLPLAIN]}$`),g("LOOSEPLAIN",`[v=\\s]*${l[c.MAINVERSIONLOOSE]}${l[c.PRERELEASELOOSE]}?${l[c.BUILD]}?`),g("LOOSE",`^${l[c.LOOSEPLAIN]}$`),g("GTLT","((?:<|>)?=?)"),g("XRANGEIDENTIFIERLOOSE",`${l[c.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`),g("XRANGEIDENTIFIER",`${l[c.NUMERICIDENTIFIER]}|x|X|\\*`),g("XRANGEPLAIN",`[v=\\s]*(${l[c.XRANGEIDENTIFIER]})(?:\\.(${l[c.XRANGEIDENTIFIER]})(?:\\.(${l[c.XRANGEIDENTIFIER]})(?:${l[c.PRERELEASE]})?${l[c.BUILD]}?)?)?`),g("XRANGEPLAINLOOSE",`[v=\\s]*(${l[c.XRANGEIDENTIFIERLOOSE]})(?:\\.(${l[c.XRANGEIDENTIFIERLOOSE]})(?:\\.(${l[c.XRANGEIDENTIFIERLOOSE]})(?:${l[c.PRERELEASELOOSE]})?${l[c.BUILD]}?)?)?`),g("XRANGE",`^${l[c.GTLT]}\\s*${l[c.XRANGEPLAIN]}$`),g("XRANGELOOSE",`^${l[c.GTLT]}\\s*${l[c.XRANGEPLAINLOOSE]}$`),g("COERCE",`(^|[^\\d])(\\d{1,${t}})(?:\\.(\\d{1,${t}}))?(?:\\.(\\d{1,${t}}))?(?:$|[^\\d])`),g("COERCERTL",l[c.COERCE],!0),g("LONETILDE","(?:~>?)"),g("TILDETRIM",`(\\s*)${l[c.LONETILDE]}\\s+`,!0),e.tildeTrimReplace="$1~",g("TILDE",`^${l[c.LONETILDE]}${l[c.XRANGEPLAIN]}$`),g("TILDELOOSE",`^${l[c.LONETILDE]}${l[c.XRANGEPLAINLOOSE]}$`),g("LONECARET","(?:\\^)"),g("CARETTRIM",`(\\s*)${l[c.LONECARET]}\\s+`,!0),e.caretTrimReplace="$1^",g("CARET",`^${l[c.LONECARET]}${l[c.XRANGEPLAIN]}$`),g("CARETLOOSE",`^${l[c.LONECARET]}${l[c.XRANGEPLAINLOOSE]}$`),g("COMPARATORLOOSE",`^${l[c.GTLT]}\\s*(${l[c.LOOSEPLAIN]})$|^$`),g("COMPARATOR",`^${l[c.GTLT]}\\s*(${l[c.FULLPLAIN]})$|^$`),g("COMPARATORTRIM",`(\\s*)${l[c.GTLT]}\\s*(${l[c.LOOSEPLAIN]}|${l[c.XRANGEPLAIN]})`,!0),e.comparatorTrimReplace="$1$2$3",g("HYPHENRANGE",`^\\s*(${l[c.XRANGEPLAIN]})\\s+-\\s+(${l[c.XRANGEPLAIN]})\\s*$`),g("HYPHENRANGELOOSE",`^\\s*(${l[c.XRANGEPLAINLOOSE]})\\s+-\\s+(${l[c.XRANGEPLAINLOOSE]})\\s*$`),g("STAR","(<|>)?=?\\s*\\*"),g("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$"),g("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")})(s$,s$.exports);var hD=s$.exports;const evt=Object.freeze({loose:!0}),tvt=Object.freeze({}),ivt=n=>n?typeof n!="object"?evt:n:tvt;var tY=ivt;const Fre=/^[0-9]+$/,rye=(n,e)=>{const t=Fre.test(n),i=Fre.test(e);return t&&i&&(n=+n,e=+e),n===e?0:t&&!i?-1:i&&!t?1:n<e?-1:1},nvt=(n,e)=>rye(e,n);var oye={compareIdentifiers:rye,rcompareIdentifiers:nvt};const mT=c4,{MAX_LENGTH:Bre,MAX_SAFE_INTEGER:_T}=l4,{safeRe:Wre,t:Vre}=hD,svt=tY,{compareIdentifiers:b0}=oye;let rvt=class rh{constructor(e,t){if(t=svt(t),e instanceof rh){if(e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease)return e;e=e.version}else if(typeof e!="string")throw new TypeError(`Invalid version. Must be a string. Got type "${typeof e}".`);if(e.length>Bre)throw new TypeError(`version is longer than ${Bre} characters`);mT("SemVer",e,t),this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease;const i=e.trim().match(t.loose?Wre[Vre.LOOSE]:Wre[Vre.FULL]);if(!i)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+i[1],this.minor=+i[2],this.patch=+i[3],this.major>_T||this.major<0)throw new TypeError("Invalid major version");if(this.minor>_T||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>_T||this.patch<0)throw new TypeError("Invalid patch version");i[4]?this.prerelease=i[4].split(".").map(s=>{if(/^[0-9]+$/.test(s)){const r=+s;if(r>=0&&r<_T)return r}return s}):this.prerelease=[],this.build=i[5]?i[5].split("."):[],this.format()}format(){return this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length&&(this.version+=`-${this.prerelease.join(".")}`),this.version}toString(){return this.version}compare(e){if(mT("SemVer.compare",this.version,this.options,e),!(e instanceof rh)){if(typeof e=="string"&&e===this.version)return 0;e=new rh(e,this.options)}return e.version===this.version?0:this.compareMain(e)||this.comparePre(e)}compareMain(e){return e instanceof rh||(e=new rh(e,this.options)),b0(this.major,e.major)||b0(this.minor,e.minor)||b0(this.patch,e.patch)}comparePre(e){if(e instanceof rh||(e=new rh(e,this.options)),this.prerelease.length&&!e.prerelease.length)return-1;if(!this.prerelease.length&&e.prerelease.length)return 1;if(!this.prerelease.length&&!e.prerelease.length)return 0;let t=0;do{const i=this.prerelease[t],s=e.prerelease[t];if(mT("prerelease compare",t,i,s),i===void 0&&s===void 0)return 0;if(s===void 0)return 1;if(i===void 0)return-1;if(i===s)continue;return b0(i,s)}while(++t)}compareBuild(e){e instanceof rh||(e=new rh(e,this.options));let t=0;do{const i=this.build[t],s=e.build[t];if(mT("prerelease compare",t,i,s),i===void 0&&s===void 0)return 0;if(s===void 0)return 1;if(i===void 0)return-1;if(i===s)continue;return b0(i,s)}while(++t)}inc(e,t,i){switch(e){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",t,i);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",t,i);break;case"prepatch":this.prerelease.length=0,this.inc("patch",t,i),this.inc("pre",t,i);break;case"prerelease":this.prerelease.length===0&&this.inc("patch",t,i),this.inc("pre",t,i);break;case"major":(this.minor!==0||this.patch!==0||this.prerelease.length===0)&&this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":(this.patch!==0||this.prerelease.length===0)&&this.minor++,this.patch=0,this.prerelease=[];break;case"patch":this.prerelease.length===0&&this.patch++,this.prerelease=[];break;case"pre":{const s=Number(i)?1:0;if(!t&&i===!1)throw new Error("invalid increment argument: identifier is empty");if(this.prerelease.length===0)this.prerelease=[s];else{let r=this.prerelease.length;for(;--r>=0;)typeof this.prerelease[r]=="number"&&(this.prerelease[r]++,r=-2);if(r===-1){if(t===this.prerelease.join(".")&&i===!1)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(s)}}if(t){let r=[t,s];i===!1&&(r=[t]),b0(this.prerelease[0],t)===0?isNaN(this.prerelease[1])&&(this.prerelease=r):this.prerelease=r}break}default:throw new Error(`invalid increment argument: ${e}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}};var va=rvt;const Hre=va,ovt=(n,e,t=!1)=>{if(n instanceof Hre)return n;try{return new Hre(n,e)}catch(i){if(!t)return null;throw i}};var ZC=ovt;const avt=ZC,lvt=(n,e)=>{const t=avt(n,e);return t?t.version:null};var cvt=lvt;const uvt=ZC,hvt=(n,e)=>{const t=uvt(n.trim().replace(/^[=v]+/,""),e);return t?t.version:null};var dvt=hvt;const $re=va,fvt=(n,e,t,i,s)=>{typeof t=="string"&&(s=i,i=t,t=void 0);try{return new $re(n instanceof $re?n.version:n,t).inc(e,i,s).version}catch{return null}};var gvt=fvt;const zre=ZC,pvt=(n,e)=>{const t=zre(n,null,!0),i=zre(e,null,!0),s=t.compare(i);if(s===0)return null;const r=s>0,o=r?t:i,a=r?i:t,l=!!o.prerelease.length;if(!!a.prerelease.length&&!l)return!a.patch&&!a.minor?"major":o.patch?"patch":o.minor?"minor":"major";const u=l?"pre":"";return t.major!==i.major?u+"major":t.minor!==i.minor?u+"minor":t.patch!==i.patch?u+"patch":"prerelease"};var mvt=pvt;const _vt=va,vvt=(n,e)=>new _vt(n,e).major;var bvt=vvt;const yvt=va,Cvt=(n,e)=>new yvt(n,e).minor;var wvt=Cvt;const Svt=va,kvt=(n,e)=>new Svt(n,e).patch;var Lvt=kvt;const xvt=ZC,Evt=(n,e)=>{const t=xvt(n,e);return t&&t.prerelease.length?t.prerelease:null};var Dvt=Evt;const Ure=va,Ivt=(n,e,t)=>new Ure(n,t).compare(new Ure(e,t));var qu=Ivt;const Tvt=qu,Nvt=(n,e,t)=>Tvt(e,n,t);var Avt=Nvt;const Pvt=qu,Rvt=(n,e)=>Pvt(n,e,!0);var Mvt=Rvt;const jre=va,Ovt=(n,e,t)=>{const i=new jre(n,t),s=new jre(e,t);return i.compare(s)||i.compareBuild(s)};var iY=Ovt;const Fvt=iY,Bvt=(n,e)=>n.sort((t,i)=>Fvt(t,i,e));var Wvt=Bvt;const Vvt=iY,Hvt=(n,e)=>n.sort((t,i)=>Vvt(i,t,e));var $vt=Hvt;const zvt=qu,Uvt=(n,e,t)=>zvt(n,e,t)>0;var u4=Uvt;const jvt=qu,qvt=(n,e,t)=>jvt(n,e,t)<0;var nY=qvt;const Kvt=qu,Gvt=(n,e,t)=>Kvt(n,e,t)===0;var aye=Gvt;const Yvt=qu,Zvt=(n,e,t)=>Yvt(n,e,t)!==0;var lye=Zvt;const Xvt=qu,Qvt=(n,e,t)=>Xvt(n,e,t)>=0;var sY=Qvt;const Jvt=qu,e0t=(n,e,t)=>Jvt(n,e,t)<=0;var rY=e0t;const t0t=aye,i0t=lye,n0t=u4,s0t=sY,r0t=nY,o0t=rY,a0t=(n,e,t,i)=>{switch(e){case"===":return typeof n=="object"&&(n=n.version),typeof t=="object"&&(t=t.version),n===t;case"!==":return typeof n=="object"&&(n=n.version),typeof t=="object"&&(t=t.version),n!==t;case"":case"=":case"==":return t0t(n,t,i);case"!=":return i0t(n,t,i);case">":return n0t(n,t,i);case">=":return s0t(n,t,i);case"<":return r0t(n,t,i);case"<=":return o0t(n,t,i);default:throw new TypeError(`Invalid operator: ${e}`)}};var cye=a0t;const l0t=va,c0t=ZC,{safeRe:vT,t:bT}=hD,u0t=(n,e)=>{if(n instanceof l0t)return n;if(typeof n=="number"&&(n=String(n)),typeof n!="string")return null;e=e||{};let t=null;if(!e.rtl)t=n.match(vT[bT.COERCE]);else{let i;for(;(i=vT[bT.COERCERTL].exec(n))&&(!t||t.index+t[0].length!==n.length);)(!t||i.index+i[0].length!==t.index+t[0].length)&&(t=i),vT[bT.COERCERTL].lastIndex=i.index+i[1].length+i[2].length;vT[bT.COERCERTL].lastIndex=-1}return t===null?null:c0t(`${t[2]}.${t[3]||"0"}.${t[4]||"0"}`,e)};var h0t=u0t,S6,qre;function d0t(){return qre||(qre=1,S6=function(n){n.prototype[Symbol.iterator]=function*(){for(let e=this.head;e;e=e.next)yield e.value}}),S6}var f0t=dn;dn.Node=lv;dn.create=dn;function dn(n){var e=this;if(e instanceof dn||(e=new dn),e.tail=null,e.head=null,e.length=0,n&&typeof n.forEach=="function")n.forEach(function(s){e.push(s)});else if(arguments.length>0)for(var t=0,i=arguments.length;t<i;t++)e.push(arguments[t]);return e}dn.prototype.removeNode=function(n){if(n.list!==this)throw new Error("removing node which does not belong to this list");var e=n.next,t=n.prev;return e&&(e.prev=t),t&&(t.next=e),n===this.head&&(this.head=e),n===this.tail&&(this.tail=t),n.list.length--,n.next=null,n.prev=null,n.list=null,e};dn.prototype.unshiftNode=function(n){if(n!==this.head){n.list&&n.list.removeNode(n);var e=this.head;n.list=this,n.next=e,e&&(e.prev=n),this.head=n,this.tail||(this.tail=n),this.length++}};dn.prototype.pushNode=function(n){if(n!==this.tail){n.list&&n.list.removeNode(n);var e=this.tail;n.list=this,n.prev=e,e&&(e.next=n),this.tail=n,this.head||(this.head=n),this.length++}};dn.prototype.push=function(){for(var n=0,e=arguments.length;n<e;n++)p0t(this,arguments[n]);return this.length};dn.prototype.unshift=function(){for(var n=0,e=arguments.length;n<e;n++)m0t(this,arguments[n]);return this.length};dn.prototype.pop=function(){if(this.tail){var n=this.tail.value;return this.tail=this.tail.prev,this.tail?this.tail.next=null:this.head=null,this.length--,n}};dn.prototype.shift=function(){if(this.head){var n=this.head.value;return this.head=this.head.next,this.head?this.head.prev=null:this.tail=null,this.length--,n}};dn.prototype.forEach=function(n,e){e=e||this;for(var t=this.head,i=0;t!==null;i++)n.call(e,t.value,i,this),t=t.next};dn.prototype.forEachReverse=function(n,e){e=e||this;for(var t=this.tail,i=this.length-1;t!==null;i--)n.call(e,t.value,i,this),t=t.prev};dn.prototype.get=function(n){for(var e=0,t=this.head;t!==null&&e<n;e++)t=t.next;if(e===n&&t!==null)return t.value};dn.prototype.getReverse=function(n){for(var e=0,t=this.tail;t!==null&&e<n;e++)t=t.prev;if(e===n&&t!==null)return t.value};dn.prototype.map=function(n,e){e=e||this;for(var t=new dn,i=this.head;i!==null;)t.push(n.call(e,i.value,this)),i=i.next;return t};dn.prototype.mapReverse=function(n,e){e=e||this;for(var t=new dn,i=this.tail;i!==null;)t.push(n.call(e,i.value,this)),i=i.prev;return t};dn.prototype.reduce=function(n,e){var t,i=this.head;if(arguments.length>1)t=e;else if(this.head)i=this.head.next,t=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var s=0;i!==null;s++)t=n(t,i.value,s),i=i.next;return t};dn.prototype.reduceReverse=function(n,e){var t,i=this.tail;if(arguments.length>1)t=e;else if(this.tail)i=this.tail.prev,t=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(var s=this.length-1;i!==null;s--)t=n(t,i.value,s),i=i.prev;return t};dn.prototype.toArray=function(){for(var n=new Array(this.length),e=0,t=this.head;t!==null;e++)n[e]=t.value,t=t.next;return n};dn.prototype.toArrayReverse=function(){for(var n=new Array(this.length),e=0,t=this.tail;t!==null;e++)n[e]=t.value,t=t.prev;return n};dn.prototype.slice=function(n,e){e=e||this.length,e<0&&(e+=this.length),n=n||0,n<0&&(n+=this.length);var t=new dn;if(e<n||e<0)return t;n<0&&(n=0),e>this.length&&(e=this.length);for(var i=0,s=this.head;s!==null&&i<n;i++)s=s.next;for(;s!==null&&i<e;i++,s=s.next)t.push(s.value);return t};dn.prototype.sliceReverse=function(n,e){e=e||this.length,e<0&&(e+=this.length),n=n||0,n<0&&(n+=this.length);var t=new dn;if(e<n||e<0)return t;n<0&&(n=0),e>this.length&&(e=this.length);for(var i=this.length,s=this.tail;s!==null&&i>e;i--)s=s.prev;for(;s!==null&&i>n;i--,s=s.prev)t.push(s.value);return t};dn.prototype.splice=function(n,e,...t){n>this.length&&(n=this.length-1),n<0&&(n=this.length+n);for(var i=0,s=this.head;s!==null&&i<n;i++)s=s.next;for(var r=[],i=0;s&&i<e;i++)r.push(s.value),s=this.removeNode(s);s===null&&(s=this.tail),s!==this.head&&s!==this.tail&&(s=s.prev);for(var i=0;i<t.length;i++)s=g0t(this,s,t[i]);return r};dn.prototype.reverse=function(){for(var n=this.head,e=this.tail,t=n;t!==null;t=t.prev){var i=t.prev;t.prev=t.next,t.next=i}return this.head=e,this.tail=n,this};function g0t(n,e,t){var i=e===n.head?new lv(t,null,e,n):new lv(t,e,e.next,n);return i.next===null&&(n.tail=i),i.prev===null&&(n.head=i),n.length++,i}function p0t(n,e){n.tail=new lv(e,n.tail,null,n),n.head||(n.head=n.tail),n.length++}function m0t(n,e){n.head=new lv(e,null,n.head,n),n.tail||(n.tail=n.head),n.length++}function lv(n,e,t,i){if(!(this instanceof lv))return new lv(n,e,t,i);this.list=i,this.value=n,e?(e.next=this,this.prev=e):this.prev=null,t?(t.prev=this,this.next=t):this.next=null}try{d0t()(dn)}catch{}const _0t=f0t,I1=Symbol("max"),of=Symbol("length"),y0=Symbol("lengthCalculator"),Ik=Symbol("allowStale"),K1=Symbol("maxAge"),Qd=Symbol("dispose"),Kre=Symbol("noDisposeOnSet"),Fr=Symbol("lruList"),Gc=Symbol("cache"),uye=Symbol("updateAgeOnGet"),k6=()=>1;class v0t{constructor(e){if(typeof e=="number"&&(e={max:e}),e||(e={}),e.max&&(typeof e.max!="number"||e.max<0))throw new TypeError("max must be a non-negative number");this[I1]=e.max||1/0;const t=e.length||k6;if(this[y0]=typeof t!="function"?k6:t,this[Ik]=e.stale||!1,e.maxAge&&typeof e.maxAge!="number")throw new TypeError("maxAge must be a number");this[K1]=e.maxAge||0,this[Qd]=e.dispose,this[Kre]=e.noDisposeOnSet||!1,this[uye]=e.updateAgeOnGet||!1,this.reset()}set max(e){if(typeof e!="number"||e<0)throw new TypeError("max must be a non-negative number");this[I1]=e||1/0,Qw(this)}get max(){return this[I1]}set allowStale(e){this[Ik]=!!e}get allowStale(){return this[Ik]}set maxAge(e){if(typeof e!="number")throw new TypeError("maxAge must be a non-negative number");this[K1]=e,Qw(this)}get maxAge(){return this[K1]}set lengthCalculator(e){typeof e!="function"&&(e=k6),e!==this[y0]&&(this[y0]=e,this[of]=0,this[Fr].forEach(t=>{t.length=this[y0](t.value,t.key),this[of]+=t.length})),Qw(this)}get lengthCalculator(){return this[y0]}get length(){return this[of]}get itemCount(){return this[Fr].length}rforEach(e,t){t=t||this;for(let i=this[Fr].tail;i!==null;){const s=i.prev;Gre(this,e,i,t),i=s}}forEach(e,t){t=t||this;for(let i=this[Fr].head;i!==null;){const s=i.next;Gre(this,e,i,t),i=s}}keys(){return this[Fr].toArray().map(e=>e.key)}values(){return this[Fr].toArray().map(e=>e.value)}reset(){this[Qd]&&this[Fr]&&this[Fr].length&&this[Fr].forEach(e=>this[Qd](e.key,e.value)),this[Gc]=new Map,this[Fr]=new _0t,this[of]=0}dump(){return this[Fr].map(e=>RR(this,e)?!1:{k:e.key,v:e.value,e:e.now+(e.maxAge||0)}).toArray().filter(e=>e)}dumpLru(){return this[Fr]}set(e,t,i){if(i=i||this[K1],i&&typeof i!="number")throw new TypeError("maxAge must be a number");const s=i?Date.now():0,r=this[y0](t,e);if(this[Gc].has(e)){if(r>this[I1])return Hb(this,this[Gc].get(e)),!1;const l=this[Gc].get(e).value;return this[Qd]&&(this[Kre]||this[Qd](e,l.value)),l.now=s,l.maxAge=i,l.value=t,this[of]+=r-l.length,l.length=r,this.get(e),Qw(this),!0}const o=new b0t(e,t,r,s,i);return o.length>this[I1]?(this[Qd]&&this[Qd](e,t),!1):(this[of]+=o.length,this[Fr].unshift(o),this[Gc].set(e,this[Fr].head),Qw(this),!0)}has(e){if(!this[Gc].has(e))return!1;const t=this[Gc].get(e).value;return!RR(this,t)}get(e){return L6(this,e,!0)}peek(e){return L6(this,e,!1)}pop(){const e=this[Fr].tail;return e?(Hb(this,e),e.value):null}del(e){Hb(this,this[Gc].get(e))}load(e){this.reset();const t=Date.now();for(let i=e.length-1;i>=0;i--){const s=e[i],r=s.e||0;if(r===0)this.set(s.k,s.v);else{const o=r-t;o>0&&this.set(s.k,s.v,o)}}}prune(){this[Gc].forEach((e,t)=>L6(this,t,!1))}}const L6=(n,e,t)=>{const i=n[Gc].get(e);if(i){const s=i.value;if(RR(n,s)){if(Hb(n,i),!n[Ik])return}else t&&(n[uye]&&(i.value.now=Date.now()),n[Fr].unshiftNode(i));return s.value}},RR=(n,e)=>{if(!e||!e.maxAge&&!n[K1])return!1;const t=Date.now()-e.now;return e.maxAge?t>e.maxAge:n[K1]&&t>n[K1]},Qw=n=>{if(n[of]>n[I1])for(let e=n[Fr].tail;n[of]>n[I1]&&e!==null;){const t=e.prev;Hb(n,e),e=t}},Hb=(n,e)=>{if(e){const t=e.value;n[Qd]&&n[Qd](t.key,t.value),n[of]-=t.length,n[Gc].delete(t.key),n[Fr].removeNode(e)}};class b0t{constructor(e,t,i,s,r){this.key=e,this.value=t,this.length=i,this.now=s,this.maxAge=r||0}}const Gre=(n,e,t,i)=>{let s=t.value;RR(n,s)&&(Hb(n,t),n[Ik]||(s=void 0)),s&&e.call(i,s.value,s.key,n)};var y0t=v0t,x6,Yre;function Ku(){if(Yre)return x6;Yre=1;class n{constructor(R,F){if(F=i(F),R instanceof n)return R.loose===!!F.loose&&R.includePrerelease===!!F.includePrerelease?R:new n(R.raw,F);if(R instanceof s)return this.raw=R.value,this.set=[[R]],this.format(),this;if(this.options=F,this.loose=!!F.loose,this.includePrerelease=!!F.includePrerelease,this.raw=R.trim().split(/\s+/).join(" "),this.set=this.raw.split("||").map(j=>this.parseRange(j.trim())).filter(j=>j.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){const j=this.set[0];if(this.set=this.set.filter(K=>!g(K[0])),this.set.length===0)this.set=[j];else if(this.set.length>1){for(const K of this.set)if(K.length===1&&p(K[0])){this.set=[K];break}}}this.format()}format(){return this.range=this.set.map(R=>R.join(" ").trim()).join("||").trim(),this.range}toString(){return this.range}parseRange(R){const j=((this.options.includePrerelease&&d)|(this.options.loose&&f))+":"+R,K=t.get(j);if(K)return K;const Z=this.options.loose,q=Z?a[l.HYPHENRANGELOOSE]:a[l.HYPHENRANGE];R=R.replace(q,N(this.options.includePrerelease)),r("hyphen replace",R),R=R.replace(a[l.COMPARATORTRIM],c),r("comparator trim",R),R=R.replace(a[l.TILDETRIM],u),r("tilde trim",R),R=R.replace(a[l.CARETTRIM],h),r("caret trim",R);let re=R.split(" ").map(X=>_(X,this.options)).join(" ").split(/\s+/).map(X=>I(X,this.options));Z&&(re=re.filter(X=>(r("loose invalid filter",X,this.options),!!X.match(a[l.COMPARATORLOOSE])))),r("range list",re);const G=new Map,W=re.map(X=>new s(X,this.options));for(const X of W){if(g(X))return[X];G.set(X.value,X)}G.size>1&&G.has("")&&G.delete("");const Y=[...G.values()];return t.set(j,Y),Y}intersects(R,F){if(!(R instanceof n))throw new TypeError("a Range is required");return this.set.some(j=>m(j,F)&&R.set.some(K=>m(K,F)&&j.every(Z=>K.every(q=>Z.intersects(q,F)))))}test(R){if(!R)return!1;if(typeof R=="string")try{R=new o(R,this.options)}catch{return!1}for(let F=0;F<this.set.length;F++)if(T(this.set[F],R,this.options))return!0;return!1}}x6=n;const e=y0t,t=new e({max:1e3}),i=tY,s=h4(),r=c4,o=va,{safeRe:a,t:l,comparatorTrimReplace:c,tildeTrimReplace:u,caretTrimReplace:h}=hD,{FLAG_INCLUDE_PRERELEASE:d,FLAG_LOOSE:f}=l4,g=P=>P.value==="<0.0.0-0",p=P=>P.value==="",m=(P,R)=>{let F=!0;const j=P.slice();let K=j.pop();for(;F&&j.length;)F=j.every(Z=>K.intersects(Z,R)),K=j.pop();return F},_=(P,R)=>(r("comp",P,R),P=S(P,R),r("caret",P),P=y(P,R),r("tildes",P),P=L(P,R),r("xrange",P),P=x(P,R),r("stars",P),P),b=P=>!P||P.toLowerCase()==="x"||P==="*",y=(P,R)=>P.trim().split(/\s+/).map(F=>w(F,R)).join(" "),w=(P,R)=>{const F=R.loose?a[l.TILDELOOSE]:a[l.TILDE];return P.replace(F,(j,K,Z,q,re)=>{r("tilde",P,j,K,Z,q,re);let G;return b(K)?G="":b(Z)?G=`>=${K}.0.0 <${+K+1}.0.0-0`:b(q)?G=`>=${K}.${Z}.0 <${K}.${+Z+1}.0-0`:re?(r("replaceTilde pr",re),G=`>=${K}.${Z}.${q}-${re} <${K}.${+Z+1}.0-0`):G=`>=${K}.${Z}.${q} <${K}.${+Z+1}.0-0`,r("tilde return",G),G})},S=(P,R)=>P.trim().split(/\s+/).map(F=>E(F,R)).join(" "),E=(P,R)=>{r("caret",P,R);const F=R.loose?a[l.CARETLOOSE]:a[l.CARET],j=R.includePrerelease?"-0":"";return P.replace(F,(K,Z,q,re,G)=>{r("caret",P,K,Z,q,re,G);let W;return b(Z)?W="":b(q)?W=`>=${Z}.0.0${j} <${+Z+1}.0.0-0`:b(re)?Z==="0"?W=`>=${Z}.${q}.0${j} <${Z}.${+q+1}.0-0`:W=`>=${Z}.${q}.0${j} <${+Z+1}.0.0-0`:G?(r("replaceCaret pr",G),Z==="0"?q==="0"?W=`>=${Z}.${q}.${re}-${G} <${Z}.${q}.${+re+1}-0`:W=`>=${Z}.${q}.${re}-${G} <${Z}.${+q+1}.0-0`:W=`>=${Z}.${q}.${re}-${G} <${+Z+1}.0.0-0`):(r("no pr"),Z==="0"?q==="0"?W=`>=${Z}.${q}.${re}${j} <${Z}.${q}.${+re+1}-0`:W=`>=${Z}.${q}.${re}${j} <${Z}.${+q+1}.0-0`:W=`>=${Z}.${q}.${re} <${+Z+1}.0.0-0`),r("caret return",W),W})},L=(P,R)=>(r("replaceXRanges",P,R),P.split(/\s+/).map(F=>k(F,R)).join(" ")),k=(P,R)=>{P=P.trim();const F=R.loose?a[l.XRANGELOOSE]:a[l.XRANGE];return P.replace(F,(j,K,Z,q,re,G)=>{r("xRange",P,j,K,Z,q,re,G);const W=b(Z),Y=W||b(q),X=Y||b(re),z=X;return K==="="&&z&&(K=""),G=R.includePrerelease?"-0":"",W?K===">"||K==="<"?j="<0.0.0-0":j="*":K&&z?(Y&&(q=0),re=0,K===">"?(K=">=",Y?(Z=+Z+1,q=0,re=0):(q=+q+1,re=0)):K==="<="&&(K="<",Y?Z=+Z+1:q=+q+1),K==="<"&&(G="-0"),j=`${K+Z}.${q}.${re}${G}`):Y?j=`>=${Z}.0.0${G} <${+Z+1}.0.0-0`:X&&(j=`>=${Z}.${q}.0${G} <${Z}.${+q+1}.0-0`),r("xRange return",j),j})},x=(P,R)=>(r("replaceStars",P,R),P.trim().replace(a[l.STAR],"")),I=(P,R)=>(r("replaceGTE0",P,R),P.trim().replace(a[R.includePrerelease?l.GTE0PRE:l.GTE0],"")),N=P=>(R,F,j,K,Z,q,re,G,W,Y,X,z,le)=>(b(j)?F="":b(K)?F=`>=${j}.0.0${P?"-0":""}`:b(Z)?F=`>=${j}.${K}.0${P?"-0":""}`:q?F=`>=${F}`:F=`>=${F}${P?"-0":""}`,b(W)?G="":b(Y)?G=`<${+W+1}.0.0-0`:b(X)?G=`<${W}.${+Y+1}.0-0`:z?G=`<=${W}.${Y}.${X}-${z}`:P?G=`<${W}.${Y}.${+X+1}-0`:G=`<=${G}`,`${F} ${G}`.trim()),T=(P,R,F)=>{for(let j=0;j<P.length;j++)if(!P[j].test(R))return!1;if(R.prerelease.length&&!F.includePrerelease){for(let j=0;j<P.length;j++)if(r(P[j].semver),P[j].semver!==s.ANY&&P[j].semver.prerelease.length>0){const K=P[j].semver;if(K.major===R.major&&K.minor===R.minor&&K.patch===R.patch)return!0}return!1}return!0};return x6}var E6,Zre;function h4(){if(Zre)return E6;Zre=1;const n=Symbol("SemVer ANY");class e{static get ANY(){return n}constructor(u,h){if(h=t(h),u instanceof e){if(u.loose===!!h.loose)return u;u=u.value}u=u.trim().split(/\s+/).join(" "),o("comparator",u,h),this.options=h,this.loose=!!h.loose,this.parse(u),this.semver===n?this.value="":this.value=this.operator+this.semver.version,o("comp",this)}parse(u){const h=this.options.loose?i[s.COMPARATORLOOSE]:i[s.COMPARATOR],d=u.match(h);if(!d)throw new TypeError(`Invalid comparator: ${u}`);this.operator=d[1]!==void 0?d[1]:"",this.operator==="="&&(this.operator=""),d[2]?this.semver=new a(d[2],this.options.loose):this.semver=n}toString(){return this.value}test(u){if(o("Comparator.test",u,this.options.loose),this.semver===n||u===n)return!0;if(typeof u=="string")try{u=new a(u,this.options)}catch{return!1}return r(u,this.operator,this.semver,this.options)}intersects(u,h){if(!(u instanceof e))throw new TypeError("a Comparator is required");return this.operator===""?this.value===""?!0:new l(u.value,h).test(this.value):u.operator===""?u.value===""?!0:new l(this.value,h).test(u.semver):(h=t(h),h.includePrerelease&&(this.value==="<0.0.0-0"||u.value==="<0.0.0-0")||!h.includePrerelease&&(this.value.startsWith("<0.0.0")||u.value.startsWith("<0.0.0"))?!1:!!(this.operator.startsWith(">")&&u.operator.startsWith(">")||this.operator.startsWith("<")&&u.operator.startsWith("<")||this.semver.version===u.semver.version&&this.operator.includes("=")&&u.operator.includes("=")||r(this.semver,"<",u.semver,h)&&this.operator.startsWith(">")&&u.operator.startsWith("<")||r(this.semver,">",u.semver,h)&&this.operator.startsWith("<")&&u.operator.startsWith(">")))}}E6=e;const t=tY,{safeRe:i,t:s}=hD,r=cye,o=c4,a=va,l=Ku();return E6}const C0t=Ku(),w0t=(n,e,t)=>{try{e=new C0t(e,t)}catch{return!1}return e.test(n)};var d4=w0t;const S0t=Ku(),k0t=(n,e)=>new S0t(n,e).set.map(t=>t.map(i=>i.value).join(" ").trim().split(" "));var L0t=k0t;const x0t=va,E0t=Ku(),D0t=(n,e,t)=>{let i=null,s=null,r=null;try{r=new E0t(e,t)}catch{return null}return n.forEach(o=>{r.test(o)&&(!i||s.compare(o)===-1)&&(i=o,s=new x0t(i,t))}),i};var I0t=D0t;const T0t=va,N0t=Ku(),A0t=(n,e,t)=>{let i=null,s=null,r=null;try{r=new N0t(e,t)}catch{return null}return n.forEach(o=>{r.test(o)&&(!i||s.compare(o)===1)&&(i=o,s=new T0t(i,t))}),i};var P0t=A0t;const D6=va,R0t=Ku(),Xre=u4,M0t=(n,e)=>{n=new R0t(n,e);let t=new D6("0.0.0");if(n.test(t)||(t=new D6("0.0.0-0"),n.test(t)))return t;t=null;for(let i=0;i<n.set.length;++i){const s=n.set[i];let r=null;s.forEach(o=>{const a=new D6(o.semver.version);switch(o.operator){case">":a.prerelease.length===0?a.patch++:a.prerelease.push(0),a.raw=a.format();case"":case">=":(!r||Xre(a,r))&&(r=a);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${o.operator}`)}}),r&&(!t||Xre(t,r))&&(t=r)}return t&&n.test(t)?t:null};var O0t=M0t;const F0t=Ku(),B0t=(n,e)=>{try{return new F0t(n,e).range||"*"}catch{return null}};var W0t=B0t;const V0t=va,hye=h4(),{ANY:H0t}=hye,$0t=Ku(),z0t=d4,Qre=u4,Jre=nY,U0t=rY,j0t=sY,q0t=(n,e,t,i)=>{n=new V0t(n,i),e=new $0t(e,i);let s,r,o,a,l;switch(t){case">":s=Qre,r=U0t,o=Jre,a=">",l=">=";break;case"<":s=Jre,r=j0t,o=Qre,a="<",l="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(z0t(n,e,i))return!1;for(let c=0;c<e.set.length;++c){const u=e.set[c];let h=null,d=null;if(u.forEach(f=>{f.semver===H0t&&(f=new hye(">=0.0.0")),h=h||f,d=d||f,s(f.semver,h.semver,i)?h=f:o(f.semver,d.semver,i)&&(d=f)}),h.operator===a||h.operator===l||(!d.operator||d.operator===a)&&r(n,d.semver))return!1;if(d.operator===l&&o(n,d.semver))return!1}return!0};var oY=q0t;const K0t=oY,G0t=(n,e,t)=>K0t(n,e,">",t);var Y0t=G0t;const Z0t=oY,X0t=(n,e,t)=>Z0t(n,e,"<",t);var Q0t=X0t;const eoe=Ku(),J0t=(n,e,t)=>(n=new eoe(n,t),e=new eoe(e,t),n.intersects(e,t));var ebt=J0t;const tbt=d4,ibt=qu;var nbt=(n,e,t)=>{const i=[];let s=null,r=null;const o=n.sort((u,h)=>ibt(u,h,t));for(const u of o)tbt(u,e,t)?(r=u,s||(s=u)):(r&&i.push([s,r]),r=null,s=null);s&&i.push([s,null]);const a=[];for(const[u,h]of i)u===h?a.push(u):!h&&u===o[0]?a.push("*"):h?u===o[0]?a.push(`<=${h}`):a.push(`${u} - ${h}`):a.push(`>=${u}`);const l=a.join(" || "),c=typeof e.raw=="string"?e.raw:String(e);return l.length<c.length?l:e};const toe=Ku(),aY=h4(),{ANY:I6}=aY,Jw=d4,lY=qu,sbt=(n,e,t={})=>{if(n===e)return!0;n=new toe(n,t),e=new toe(e,t);let i=!1;e:for(const s of n.set){for(const r of e.set){const o=obt(s,r,t);if(i=i||o!==null,o)continue e}if(i)return!1}return!0},rbt=[new aY(">=0.0.0-0")],ioe=[new aY(">=0.0.0")],obt=(n,e,t)=>{if(n===e)return!0;if(n.length===1&&n[0].semver===I6){if(e.length===1&&e[0].semver===I6)return!0;t.includePrerelease?n=rbt:n=ioe}if(e.length===1&&e[0].semver===I6){if(t.includePrerelease)return!0;e=ioe}const i=new Set;let s,r;for(const f of n)f.operator===">"||f.operator===">="?s=noe(s,f,t):f.operator==="<"||f.operator==="<="?r=soe(r,f,t):i.add(f.semver);if(i.size>1)return null;let o;if(s&&r){if(o=lY(s.semver,r.semver,t),o>0)return null;if(o===0&&(s.operator!==">="||r.operator!=="<="))return null}for(const f of i){if(s&&!Jw(f,String(s),t)||r&&!Jw(f,String(r),t))return null;for(const g of e)if(!Jw(f,String(g),t))return!1;return!0}let a,l,c,u,h=r&&!t.includePrerelease&&r.semver.prerelease.length?r.semver:!1,d=s&&!t.includePrerelease&&s.semver.prerelease.length?s.semver:!1;h&&h.prerelease.length===1&&r.operator==="<"&&h.prerelease[0]===0&&(h=!1);for(const f of e){if(u=u||f.operator===">"||f.operator===">=",c=c||f.operator==="<"||f.operator==="<=",s){if(d&&f.semver.prerelease&&f.semver.prerelease.length&&f.semver.major===d.major&&f.semver.minor===d.minor&&f.semver.patch===d.patch&&(d=!1),f.operator===">"||f.operator===">="){if(a=noe(s,f,t),a===f&&a!==s)return!1}else if(s.operator===">="&&!Jw(s.semver,String(f),t))return!1}if(r){if(h&&f.semver.prerelease&&f.semver.prerelease.length&&f.semver.major===h.major&&f.semver.minor===h.minor&&f.semver.patch===h.patch&&(h=!1),f.operator==="<"||f.operator==="<="){if(l=soe(r,f,t),l===f&&l!==r)return!1}else if(r.operator==="<="&&!Jw(r.semver,String(f),t))return!1}if(!f.operator&&(r||s)&&o!==0)return!1}return!(s&&c&&!r&&o!==0||r&&u&&!s&&o!==0||d||h)},noe=(n,e,t)=>{if(!n)return e;const i=lY(n.semver,e.semver,t);return i>0?n:i<0||e.operator===">"&&n.operator===">="?e:n},soe=(n,e,t)=>{if(!n)return e;const i=lY(n.semver,e.semver,t);return i<0?n:i>0||e.operator==="<"&&n.operator==="<="?e:n};var abt=sbt;const T6=hD,roe=l4,lbt=va,ooe=oye,cbt=ZC,ubt=cvt,hbt=dvt,dbt=gvt,fbt=mvt,gbt=bvt,pbt=wvt,mbt=Lvt,_bt=Dvt,vbt=qu,bbt=Avt,ybt=Mvt,Cbt=iY,wbt=Wvt,Sbt=$vt,kbt=u4,Lbt=nY,xbt=aye,Ebt=lye,Dbt=sY,Ibt=rY,Tbt=cye,Nbt=h0t,Abt=h4(),Pbt=Ku(),Rbt=d4,Mbt=L0t,Obt=I0t,Fbt=P0t,Bbt=O0t,Wbt=W0t,Vbt=oY,Hbt=Y0t,$bt=Q0t,zbt=ebt,Ubt=nbt,jbt=abt;var qbt={parse:cbt,valid:ubt,clean:hbt,inc:dbt,diff:fbt,major:gbt,minor:pbt,patch:mbt,prerelease:_bt,compare:vbt,rcompare:bbt,compareLoose:ybt,compareBuild:Cbt,sort:wbt,rsort:Sbt,gt:kbt,lt:Lbt,eq:xbt,neq:Ebt,gte:Dbt,lte:Ibt,cmp:Tbt,coerce:Nbt,Comparator:Abt,Range:Pbt,satisfies:Rbt,toComparators:Mbt,maxSatisfying:Obt,minSatisfying:Fbt,minVersion:Bbt,validRange:Wbt,outside:Vbt,gtr:Hbt,ltr:$bt,intersects:zbt,simplifyRange:Ubt,subset:jbt,SemVer:lbt,re:T6.re,src:T6.src,tokens:T6.t,SEMVER_SPEC_VERSION:roe.SEMVER_SPEC_VERSION,RELEASE_TYPES:roe.RELEASE_TYPES,compareIdentifiers:ooe.compareIdentifiers,rcompareIdentifiers:ooe.rcompareIdentifiers};const Kbt={class:"van-doc-header__select"},Gbt={key:0,class:"van-doc-header__version-pop"},Ybt=["onClick"],Zbt=rr({__name:"VersionSelect",props:{modelValue:{},options:{},label:{}},emits:["update:modelValue"],setup(n,{emit:e}){const t=e,i=Qt(!1),s=()=>{i.value=!i.value},r=o=>{t("update:modelValue",o)};return(o,a)=>(vi(),Mi("div",Kbt,[hi("span",{class:"van-doc-header__cube van-doc-header__version",onClick:s},[uae(vl(o.label)+": "+vl(o.modelValue||"latest")+" ",1),At(rC,{name:"van-doc-dropdown"},{default:xh(()=>[i.value?(vi(),Mi("div",Gbt,[(vi(!0),Mi(Es,null,Ub(o.options,(l,c)=>(vi(),Mi("div",{key:c,class:"van-doc-header__version-pop-item",onClick:u=>r(l)},vl(l),9,Ybt))),128))])):rc("",!0)]),_:1})])]))}}),Xbt=(n,e)=>{const t=n.__vccOpts||n;for(const[i,s]of e)t[i]=s;return t},Qbt=Xbt(Zbt,[["__scopeId","data-v-1835229a"]]);function f4(n){return Loe()?(iCe(n),!0):!1}function N6(){const n=new Set,e=s=>{n.delete(s)};return{on:s=>{n.add(s);const r=()=>e(s);return f4(r),{off:r}},off:e,trigger:(...s)=>Promise.all(Array.from(n).map(r=>r(...s)))}}function Qo(n){return typeof n=="function"?n():Ti(n)}const cY=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const Jbt=Object.prototype.toString,eyt=n=>Jbt.call(n)==="[object Object]",dye=()=>{};function tyt(n,e){function t(...i){return new Promise((s,r)=>{Promise.resolve(n(()=>e.apply(this,i),{fn:e,thisArg:this,args:i})).then(s).catch(r)})}return t}const fye=n=>n();function iyt(n=fye){const e=Qt(!0);function t(){e.value=!1}function i(){e.value=!0}const s=(...r)=>{e.value&&n(...r)};return{isActive:qx(e),pause:t,resume:i,eventFilter:s}}function aoe(n,e=!1,t="Timeout"){return new Promise((i,s)=>{setTimeout(e?()=>s(t):i,n)})}function nyt(n){let e;function t(){return e||(e=n()),e}return t.reset=async()=>{const i=e;e=void 0,i&&await i},t}function syt(n,...e){return e.some(t=>t in n)}function ryt(n){return n||fv()}function PN(...n){if(n.length!==1)return nS(...n);const e=n[0];return typeof e=="function"?qx(DCe(()=>({get:e,set:dye}))):Qt(e)}function oyt(n,e,t={}){const{eventFilter:i=fye,...s}=t;return Kn(n,tyt(i,e),s)}function ayt(n,e,t={}){const{eventFilter:i,...s}=t,{eventFilter:r,pause:o,resume:a,isActive:l}=iyt(i);return{stop:oyt(n,e,{...s,eventFilter:r}),pause:o,resume:a,isActive:l}}function gye(n,e=!0,t){const i=ryt(t);i?tg(n,i):e?n():sC(n)}function r$(n,e=!1){function t(h,{flush:d="sync",deep:f=!1,timeout:g,throwOnTimeout:p}={}){let m=null;const b=[new Promise(y=>{m=Kn(n,w=>{h(w)!==e&&(m==null||m(),y(w))},{flush:d,deep:f,immediate:!0})})];return g!=null&&b.push(aoe(g,p).then(()=>Qo(n)).finally(()=>m==null?void 0:m())),Promise.race(b)}function i(h,d){if(!$s(h))return t(w=>w===h,d);const{flush:f="sync",deep:g=!1,timeout:p,throwOnTimeout:m}=d??{};let _=null;const y=[new Promise(w=>{_=Kn([n,h],([S,E])=>{e!==(S===E)&&(_==null||_(),w(S))},{flush:f,deep:g,immediate:!0})})];return p!=null&&y.push(aoe(p,m).then(()=>Qo(n)).finally(()=>(_==null||_(),Qo(n)))),Promise.race(y)}function s(h){return t(d=>!!d,h)}function r(h){return i(null,h)}function o(h){return i(void 0,h)}function a(h){return t(Number.isNaN,h)}function l(h,d){return t(f=>{const g=Array.from(f);return g.includes(h)||g.includes(Qo(h))},d)}function c(h){return u(1,h)}function u(h=1,d){let f=-1;return t(()=>(f+=1,f>=h),d)}return Array.isArray(Qo(n))?{toMatch:t,toContains:l,changed:c,changedTimes:u,get not(){return r$(n,!e)}}:{toMatch:t,toBe:i,toBeTruthy:s,toBeNull:r,toBeNaN:a,toBeUndefined:o,changed:c,changedTimes:u,get not(){return r$(n,!e)}}}function lyt(n){return r$(n)}function pye(n,e,t={}){const{immediate:i=!0}=t,s=Qt(!1);let r=null;function o(){r&&(clearTimeout(r),r=null)}function a(){s.value=!1,o()}function l(...c){o(),s.value=!0,r=setTimeout(()=>{s.value=!1,r=null,n(...c)},Qo(e))}return i&&(s.value=!0,cY&&l()),f4(a),{isPending:qx(s),start:l,stop:a}}function cyt(n=!1,e={}){const{truthyValue:t=!0,falsyValue:i=!1}=e,s=$s(n),r=Qt(n);function o(a){if(arguments.length)return r.value=a,r.value;{const l=Qo(t);return r.value=r.value===l?Qo(i):l,r.value}}return s?o:[r,o]}function mye(n){var e;const t=Qo(n);return(e=t==null?void 0:t.$el)!=null?e:t}const cv=cY?window:void 0,_ye=cY?window.navigator:void 0;function MR(...n){let e,t,i,s;if(typeof n[0]=="string"||Array.isArray(n[0])?([t,i,s]=n,e=cv):[e,t,i,s]=n,!e)return dye;Array.isArray(t)||(t=[t]),Array.isArray(i)||(i=[i]);const r=[],o=()=>{r.forEach(u=>u()),r.length=0},a=(u,h,d,f)=>(u.addEventListener(h,d,f),()=>u.removeEventListener(h,d,f)),l=Kn(()=>[mye(e),Qo(s)],([u,h])=>{if(o(),!u)return;const d=eyt(h)?{...h}:h;r.push(...t.flatMap(f=>i.map(g=>a(u,f,g,d))))},{immediate:!0,flush:"post"}),c=()=>{l(),o()};return f4(c),c}function uyt(){const n=Qt(!1);return fv()&&tg(()=>{n.value=!0}),n}function uY(n){const e=uyt();return Qn(()=>(e.value,!!n()))}function hyt(n,e={}){const{window:t=cv}=e,i=uY(()=>t&&"matchMedia"in t&&typeof t.matchMedia=="function");let s;const r=Qt(!1),o=c=>{r.value=c.matches},a=()=>{s&&("removeEventListener"in s?s.removeEventListener("change",o):s.removeListener(o))},l=Kx(()=>{i.value&&(a(),s=t.matchMedia(Qo(n)),"addEventListener"in s?s.addEventListener("change",o):s.addListener(o),r.value=s.matches)});return f4(()=>{l(),a(),s=void 0}),r}function loe(n,e={}){const{controls:t=!1,navigator:i=_ye}=e,s=uY(()=>i&&"permissions"in i);let r;const o=typeof n=="string"?{name:n}:n,a=Qt(),l=()=>{r&&(a.value=r.state)},c=nyt(async()=>{if(s.value){if(!r)try{r=await i.permissions.query(o),MR(r,"change",l),l()}catch{a.value="prompt"}return r}});return c(),t?{state:a,isSupported:s,query:c}:a}function dyt(n={}){const{navigator:e=_ye,read:t=!1,source:i,copiedDuring:s=1500,legacy:r=!1}=n,o=uY(()=>e&&"clipboard"in e),a=loe("clipboard-read"),l=loe("clipboard-write"),c=Qn(()=>o.value||r),u=Qt(""),h=Qt(!1),d=pye(()=>h.value=!1,s);function f(){o.value&&a.value!=="denied"?e.clipboard.readText().then(_=>{u.value=_}):u.value=m()}c.value&&t&&MR(["copy","cut"],f);async function g(_=Qo(i)){c.value&&_!=null&&(o.value&&l.value!=="denied"?await e.clipboard.writeText(_):p(_),u.value=_,h.value=!0,d.start())}function p(_){const b=document.createElement("textarea");b.value=_??"",b.style.position="absolute",b.style.opacity="0",document.body.appendChild(b),b.select(),document.execCommand("copy"),b.remove()}function m(){var _,b,y;return(y=(b=(_=document==null?void 0:document.getSelection)==null?void 0:_.call(document))==null?void 0:b.toString())!=null?y:""}return{isSupported:c,text:u,copied:h,copy:g}}const yT=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},CT="__vueuse_ssr_handlers__",fyt=gyt();function gyt(){return CT in yT||(yT[CT]=yT[CT]||{}),yT[CT]}function vye(n,e){return fyt[n]||e}function pyt(n){return n==null?"any":n instanceof Set?"set":n instanceof Map?"map":n instanceof Date?"date":typeof n=="boolean"?"boolean":typeof n=="string"?"string":typeof n=="object"?"object":Number.isNaN(n)?"any":"number"}const myt={boolean:{read:n=>n==="true",write:n=>String(n)},object:{read:n=>JSON.parse(n),write:n=>JSON.stringify(n)},number:{read:n=>Number.parseFloat(n),write:n=>String(n)},any:{read:n=>n,write:n=>String(n)},string:{read:n=>n,write:n=>String(n)},map:{read:n=>new Map(JSON.parse(n)),write:n=>JSON.stringify(Array.from(n.entries()))},set:{read:n=>new Set(JSON.parse(n)),write:n=>JSON.stringify(Array.from(n))},date:{read:n=>new Date(n),write:n=>n.toISOString()}},coe="vueuse-storage";function _yt(n,e,t,i={}){var s;const{flush:r="pre",deep:o=!0,listenToStorageChanges:a=!0,writeDefaults:l=!0,mergeDefaults:c=!1,shallow:u,window:h=cv,eventFilter:d,onError:f=x=>{console.error(x)},initOnMounted:g}=i,p=(u?AS:Qt)(typeof e=="function"?e():e);if(!t)try{t=vye("getDefaultStorage",()=>{var x;return(x=cv)==null?void 0:x.localStorage})()}catch(x){f(x)}if(!t)return p;const m=Qo(e),_=pyt(m),b=(s=i.serializer)!=null?s:myt[_],{pause:y,resume:w}=ayt(p,()=>S(p.value),{flush:r,deep:o,eventFilter:d});return h&&a&&gye(()=>{MR(h,"storage",k),MR(h,coe,L),g&&k()}),g||k(),p;function S(x){try{if(x==null)t.removeItem(n);else{const I=b.write(x),N=t.getItem(n);N!==I&&(t.setItem(n,I),h&&h.dispatchEvent(new CustomEvent(coe,{detail:{key:n,oldValue:N,newValue:I,storageArea:t}})))}}catch(I){f(I)}}function E(x){const I=x?x.newValue:t.getItem(n);if(I==null)return l&&m!=null&&t.setItem(n,b.write(m)),m;if(!x&&c){const N=b.read(I);return typeof c=="function"?c(N,m):_==="object"&&!Array.isArray(N)?{...m,...N}:N}else return typeof I!="string"?I:b.read(I)}function L(x){k(x.detail)}function k(x){if(!(x&&x.storageArea!==t)){if(x&&x.key==null){p.value=m;return}if(!(x&&x.key!==n)){y();try{(x==null?void 0:x.newValue)!==b.write(p.value)&&(p.value=E(x))}catch(I){f(I)}finally{x?sC(w):w()}}}}}function hY(n){return hyt("(prefers-color-scheme: dark)",n)}function vyt(n={}){const{selector:e="html",attribute:t="class",initialValue:i="auto",window:s=cv,storage:r,storageKey:o="vueuse-color-scheme",listenToStorageChanges:a=!0,storageRef:l,emitAuto:c,disableTransition:u=!0}=n,h={auto:"",light:"light",dark:"dark",...n.modes||{}},d=hY({window:s}),f=Qn(()=>d.value?"dark":"light"),g=l||(o==null?PN(i):_yt(o,i,r,{window:s,listenToStorageChanges:a})),p=Qn(()=>g.value==="auto"?f.value:g.value),m=vye("updateHTMLAttrs",(w,S,E)=>{const L=typeof w=="string"?s==null?void 0:s.document.querySelector(w):mye(w);if(!L)return;let k;if(u){k=s.document.createElement("style");const x="*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}";k.appendChild(document.createTextNode(x)),s.document.head.appendChild(k)}if(S==="class"){const x=E.split(/\s/g);Object.values(h).flatMap(I=>(I||"").split(/\s/g)).filter(Boolean).forEach(I=>{x.includes(I)?L.classList.add(I):L.classList.remove(I)})}else L.setAttribute(S,E);u&&(s.getComputedStyle(k).opacity,document.head.removeChild(k))});function _(w){var S;m(e,t,(S=h[w])!=null?S:w)}function b(w){n.onChanged?n.onChanged(w,_):_(w)}Kn(p,b,{flush:"post",immediate:!0}),gye(()=>b(p.value));const y=Qn({get(){return c?g.value:p.value},set(w){g.value=w}});try{return Object.assign(y,{store:g,system:f,state:p})}catch{return y}}function bye(n={}){const{valueDark:e="dark",valueLight:t="",window:i=cv}=n,s=vyt({...n,onChanged:(a,l)=>{var c;n.onChanged?(c=n.onChanged)==null||c.call(n,a==="dark",l,a):l(a)},modes:{dark:e,light:t}}),r=Qn(()=>s.system?s.system.value:hY({window:i}).value?"dark":"light");return Qn({get(){return s.value==="dark"},set(a){const l=a?"dark":"light";r.value===l?s.value="auto":s.value=l}})}const byt={json:"application/json",text:"text/plain"};function uoe(n){return n&&syt(n,"immediate","refetch","initialData","timeout","beforeFetch","afterFetch","onFetchError","fetch","updateDataOnError")}function A6(n){return typeof Headers<"u"&&n instanceof Headers?Object.fromEntries([...n.entries()]):n}function yyt(n,...e){var t;const i=typeof AbortController=="function";let s={},r={immediate:!0,refetch:!1,timeout:0,updateDataOnError:!1};const o={method:"GET",type:"text",payload:void 0};e.length>0&&(uoe(e[0])?r={...r,...e[0]}:s=e[0]),e.length>1&&uoe(e[1])&&(r={...r,...e[1]});const{fetch:a=(t=cv)==null?void 0:t.fetch,initialData:l,timeout:c}=r,u=N6(),h=N6(),d=N6(),f=Qt(!1),g=Qt(!1),p=Qt(!1),m=Qt(null),_=AS(null),b=AS(null),y=AS(l||null),w=Qn(()=>i&&g.value);let S,E;const L=()=>{i&&(S==null||S.abort(),S=new AbortController,S.signal.onabort=()=>p.value=!0,s={...s,signal:S.signal})},k=j=>{g.value=j,f.value=!j};c&&(E=pye(L,c,{immediate:!1}));let x=0;const I=async(j=!1)=>{var K,Z;L(),k(!0),b.value=null,m.value=null,p.value=!1,x+=1;const q=x,re={method:o.method,headers:{}};if(o.payload){const X=A6(re.headers),z=Qo(o.payload);!o.payloadType&&z&&Object.getPrototypeOf(z)===Object.prototype&&!(z instanceof FormData)&&(o.payloadType="json"),o.payloadType&&(X["Content-Type"]=(K=byt[o.payloadType])!=null?K:o.payloadType),re.body=o.payloadType==="json"?JSON.stringify(z):z}let G=!1;const W={url:Qo(n),options:{...re,...s},cancel:()=>{G=!0}};if(r.beforeFetch&&Object.assign(W,await r.beforeFetch(W)),G||!a)return k(!1),Promise.resolve(null);let Y=null;return E&&E.start(),a(W.url,{...re,...W.options,headers:{...A6(re.headers),...A6((Z=W.options)==null?void 0:Z.headers)}}).then(async X=>{if(_.value=X,m.value=X.status,Y=await X.clone()[o.type](),!X.ok)throw y.value=l||null,new Error(X.statusText);return r.afterFetch&&({data:Y}=await r.afterFetch({data:Y,response:X})),y.value=Y,u.trigger(X),X}).catch(async X=>{let z=X.message||X.name;if(r.onFetchError&&({error:z,data:Y}=await r.onFetchError({data:Y,error:X,response:_.value})),b.value=z,r.updateDataOnError&&(y.value=Y),h.trigger(X),j)throw X;return null}).finally(()=>{q===x&&k(!1),E&&E.stop(),d.trigger(null)})},N=PN(r.refetch);Kn([N,PN(n)],([j])=>j&&I(),{deep:!0});const T={isFinished:f,statusCode:m,response:_,error:b,data:y,isFetching:g,canAbort:w,aborted:p,abort:L,execute:I,onFetchResponse:u.on,onFetchError:h.on,onFetchFinally:d.on,get:P("GET"),put:P("PUT"),post:P("POST"),delete:P("DELETE"),patch:P("PATCH"),head:P("HEAD"),options:P("OPTIONS"),json:F("json"),text:F("text"),blob:F("blob"),arrayBuffer:F("arrayBuffer"),formData:F("formData")};function P(j){return(K,Z)=>{if(!g.value)return o.method=j,o.payload=K,o.payloadType=Z,$s(o.payload)&&Kn([N,PN(o.payload)],([q])=>q&&I(),{deep:!0}),{...T,then(q,re){return R().then(q,re)}}}}function R(){return new Promise((j,K)=>{lyt(f).toBe(!0).then(()=>j(T)).catch(Z=>K(Z))})}function F(j){return()=>{if(!g.value)return o.type=j,{...T,then(K,Z){return R().then(K,Z)}}}}return r.immediate&&Promise.resolve().then(()=>I()),{...T,then(j,K){return R().then(j,K)}}}var Za=Uint8Array,Ll=Uint16Array,dY=Int32Array,fY=new Za([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),gY=new Za([0,0,0,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,13,13,0,0]),hoe=new Za([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),yye=function(n,e){for(var t=new Ll(31),i=0;i<31;++i)t[i]=e+=1<<n[i-1];for(var s=new dY(t[30]),i=1;i<30;++i)for(var r=t[i];r<t[i+1];++r)s[r]=r-t[i]<<5|i;return{b:t,r:s}},Cye=yye(fY,2),Cyt=Cye.b,o$=Cye.r;Cyt[28]=258,o$[258]=28;var wyt=yye(gY,0),doe=wyt.r,a$=new Ll(32768);for(var _s=0;_s<32768;++_s){var Dg=(_s&43690)>>1|(_s&21845)<<1;Dg=(Dg&52428)>>2|(Dg&13107)<<2,Dg=(Dg&61680)>>4|(Dg&3855)<<4,a$[_s]=((Dg&65280)>>8|(Dg&255)<<8)>>1}var Tk=function(n,e,t){for(var i=n.length,s=0,r=new Ll(e);s<i;++s)n[s]&&++r[n[s]-1];var o=new Ll(e);for(s=1;s<e;++s)o[s]=o[s-1]+r[s-1]<<1;var a;if(t){a=new Ll(1<<e);var l=15-e;for(s=0;s<i;++s)if(n[s])for(var c=s<<4|n[s],u=e-n[s],h=o[n[s]-1]++<<u,d=h|(1<<u)-1;h<=d;++h)a[a$[h]>>l]=c}else for(a=new Ll(i),s=0;s<i;++s)n[s]&&(a[s]=a$[o[n[s]-1]++]>>15-n[s]);return a},uv=new Za(288);for(var _s=0;_s<144;++_s)uv[_s]=8;for(var _s=144;_s<256;++_s)uv[_s]=9;for(var _s=256;_s<280;++_s)uv[_s]=7;for(var _s=280;_s<288;++_s)uv[_s]=8;var OR=new Za(32);for(var _s=0;_s<32;++_s)OR[_s]=5;var Syt=Tk(uv,9,0),kyt=Tk(OR,5,0),wye=function(n){return(n+7)/8|0},pY=function(n,e,t){return(e==null||e<0)&&(e=0),(t==null||t>n.length)&&(t=n.length),new Za(n.subarray(e,t))},Lyt=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],Sye=function(n,e,t){var i=new Error(e||Lyt[n]);if(i.code=n,Error.captureStackTrace&&Error.captureStackTrace(i,Sye),!t)throw i;return i},zd=function(n,e,t){t<<=e&7;var i=e/8|0;n[i]|=t,n[i+1]|=t>>8},eS=function(n,e,t){t<<=e&7;var i=e/8|0;n[i]|=t,n[i+1]|=t>>8,n[i+2]|=t>>16},P6=function(n,e){for(var t=[],i=0;i<n.length;++i)n[i]&&t.push({s:i,f:n[i]});var s=t.length,r=t.slice();if(!s)return{t:Lye,l:0};if(s==1){var o=new Za(t[0].s+1);return o[t[0].s]=1,{t:o,l:1}}t.sort(function(S,E){return S.f-E.f}),t.push({s:-1,f:25001});var a=t[0],l=t[1],c=0,u=1,h=2;for(t[0]={s:-1,f:a.f+l.f,l:a,r:l};u!=s-1;)a=t[t[c].f<t[h].f?c++:h++],l=t[c!=u&&t[c].f<t[h].f?c++:h++],t[u++]={s:-1,f:a.f+l.f,l:a,r:l};for(var d=r[0].s,i=1;i<s;++i)r[i].s>d&&(d=r[i].s);var f=new Ll(d+1),g=l$(t[u-1],f,0);if(g>e){var i=0,p=0,m=g-e,_=1<<m;for(r.sort(function(E,L){return f[L.s]-f[E.s]||E.f-L.f});i<s;++i){var b=r[i].s;if(f[b]>e)p+=_-(1<<g-f[b]),f[b]=e;else break}for(p>>=m;p>0;){var y=r[i].s;f[y]<e?p-=1<<e-f[y]++-1:++i}for(;i>=0&&p;--i){var w=r[i].s;f[w]==e&&(--f[w],++p)}g=e}return{t:new Za(f),l:g}},l$=function(n,e,t){return n.s==-1?Math.max(l$(n.l,e,t+1),l$(n.r,e,t+1)):e[n.s]=t},foe=function(n){for(var e=n.length;e&&!n[--e];);for(var t=new Ll(++e),i=0,s=n[0],r=1,o=function(l){t[i++]=l},a=1;a<=e;++a)if(n[a]==s&&a!=e)++r;else{if(!s&&r>2){for(;r>138;r-=138)o(32754);r>2&&(o(r>10?r-11<<5|28690:r-3<<5|12305),r=0)}else if(r>3){for(o(s),--r;r>6;r-=6)o(8304);r>2&&(o(r-3<<5|8208),r=0)}for(;r--;)o(s);r=1,s=n[a]}return{c:t.subarray(0,i),n:e}},tS=function(n,e){for(var t=0,i=0;i<e.length;++i)t+=n[i]*e[i];return t},kye=function(n,e,t){var i=t.length,s=wye(e+2);n[s]=i&255,n[s+1]=i>>8,n[s+2]=n[s]^255,n[s+3]=n[s+1]^255;for(var r=0;r<i;++r)n[s+r+4]=t[r];return(s+4+i)*8},goe=function(n,e,t,i,s,r,o,a,l,c,u){zd(e,u++,t),++s[256];for(var h=P6(s,15),d=h.t,f=h.l,g=P6(r,15),p=g.t,m=g.l,_=foe(d),b=_.c,y=_.n,w=foe(p),S=w.c,E=w.n,L=new Ll(19),k=0;k<b.length;++k)++L[b[k]&31];for(var k=0;k<S.length;++k)++L[S[k]&31];for(var x=P6(L,7),I=x.t,N=x.l,T=19;T>4&&!I[hoe[T-1]];--T);var P=c+5<<3,R=tS(s,uv)+tS(r,OR)+o,F=tS(s,d)+tS(r,p)+o+14+3*T+tS(L,I)+2*L[16]+3*L[17]+7*L[18];if(l>=0&&P<=R&&P<=F)return kye(e,u,n.subarray(l,l+c));var j,K,Z,q;if(zd(e,u,1+(F<R)),u+=2,F<R){j=Tk(d,f,0),K=d,Z=Tk(p,m,0),q=p;var re=Tk(I,N,0);zd(e,u,y-257),zd(e,u+5,E-1),zd(e,u+10,T-4),u+=14;for(var k=0;k<T;++k)zd(e,u+3*k,I[hoe[k]]);u+=3*T;for(var G=[b,S],W=0;W<2;++W)for(var Y=G[W],k=0;k<Y.length;++k){var X=Y[k]&31;zd(e,u,re[X]),u+=I[X],X>15&&(zd(e,u,Y[k]>>5&127),u+=Y[k]>>12)}}else j=Syt,K=uv,Z=kyt,q=OR;for(var k=0;k<a;++k){var z=i[k];if(z>255){var X=z>>18&31;eS(e,u,j[X+257]),u+=K[X+257],X>7&&(zd(e,u,z>>23&31),u+=fY[X]);var le=z&31;eS(e,u,Z[le]),u+=q[le],le>3&&(eS(e,u,z>>5&8191),u+=gY[le])}else eS(e,u,j[z]),u+=K[z]}return eS(e,u,j[256]),u+K[256]},xyt=new dY([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),Lye=new Za(0),Eyt=function(n,e,t,i,s,r){var o=r.z||n.length,a=new Za(i+o+5*(1+Math.ceil(o/7e3))+s),l=a.subarray(i,a.length-s),c=r.l,u=(r.r||0)&7;if(e){u&&(l[0]=r.r>>3);for(var h=xyt[e-1],d=h>>13,f=h&8191,g=(1<<t)-1,p=r.p||new Ll(32768),m=r.h||new Ll(g+1),_=Math.ceil(t/3),b=2*_,y=function(ce){return(n[ce]^n[ce+1]<<_^n[ce+2]<<b)&g},w=new dY(25e3),S=new Ll(288),E=new Ll(32),L=0,k=0,x=r.i||0,I=0,N=r.w||0,T=0;x+2<o;++x){var P=y(x),R=x&32767,F=m[P];if(p[R]=F,m[P]=R,N<=x){var j=o-x;if((L>7e3||I>24576)&&(j>423||!c)){u=goe(n,l,0,w,S,E,k,I,T,x-T,u),I=L=k=0,T=x;for(var K=0;K<286;++K)S[K]=0;for(var K=0;K<30;++K)E[K]=0}var Z=2,q=0,re=f,G=R-F&32767;if(j>2&&P==y(x-G))for(var W=Math.min(d,j)-1,Y=Math.min(32767,x),X=Math.min(258,j);G<=Y&&--re&&R!=F;){if(n[x+Z]==n[x+Z-G]){for(var z=0;z<X&&n[x+z]==n[x+z-G];++z);if(z>Z){if(Z=z,q=G,z>W)break;for(var le=Math.min(G,z-2),J=0,K=0;K<le;++K){var be=x-G+K&32767,fe=p[be],ge=be-fe&32767;ge>J&&(J=ge,F=be)}}}R=F,F=p[R],G+=R-F&32767}if(q){w[I++]=268435456|o$[Z]<<18|doe[q];var se=o$[Z]&31,H=doe[q]&31;k+=fY[se]+gY[H],++S[257+se],++E[H],N=x+Z,++L}else w[I++]=n[x],++S[n[x]]}}for(x=Math.max(x,N);x<o;++x)w[I++]=n[x],++S[n[x]];u=goe(n,l,c,w,S,E,k,I,T,x-T,u),c||(r.r=u&7|l[u/8|0]<<3,u-=7,r.h=m,r.p=p,r.i=x,r.w=N)}else{for(var x=r.w||0;x<o+c;x+=65535){var te=x+65535;te>=o&&(l[u/8|0]=c,te=o),u=kye(l,u+1,n.subarray(x,te))}r.i=o}return pY(a,0,i+wye(u)+s)},xye=function(){var n=1,e=0;return{p:function(t){for(var i=n,s=e,r=t.length|0,o=0;o!=r;){for(var a=Math.min(o+2655,r);o<a;++o)s+=i+=t[o];i=(i&65535)+15*(i>>16),s=(s&65535)+15*(s>>16)}n=i,e=s},d:function(){return n%=65521,e%=65521,(n&255)<<24|(n&65280)<<8|(e&255)<<8|e>>8}}},Dyt=function(n,e,t,i,s){if(!s&&(s={l:1},e.dictionary)){var r=e.dictionary.subarray(-32768),o=new Za(r.length+n.length);o.set(r),o.set(n,r.length),n=o,s.w=r.length}return Eyt(n,e.level==null?6:e.level,e.mem==null?Math.ceil(Math.max(8,Math.min(13,Math.log(n.length)))*1.5):12+e.mem,t,i,s)},Eye=function(n,e,t){for(;t;++e)n[e]=t,t>>>=8},Iyt=function(n,e){var t=e.level,i=t==0?0:t<6?1:t==9?3:2;if(n[0]=120,n[1]=i<<6|(e.dictionary&&32),n[1]|=31-(n[0]<<8|n[1])%31,e.dictionary){var s=xye();s.p(e.dictionary),Eye(n,2,s.d())}};function Tyt(n,e){e||(e={});var t=xye();t.p(n);var i=Dyt(n,e,e.dictionary?6:2,4);return Iyt(i,e),Eye(i,i.length-4,t.d()),i}var poe=typeof TextEncoder<"u"&&new TextEncoder,c$=typeof TextDecoder<"u"&&new TextDecoder,Nyt=0;try{c$.decode(Lye,{stream:!0}),Nyt=1}catch{}var Ayt=function(n){for(var e="",t=0;;){var i=n[t++],s=(i>127)+(i>223)+(i>239);if(t+s>n.length)return{s:e,r:pY(n,t-1)};s?s==3?(i=((i&15)<<18|(n[t++]&63)<<12|(n[t++]&63)<<6|n[t++]&63)-65536,e+=String.fromCharCode(55296|i>>10,56320|i&1023)):s&1?e+=String.fromCharCode((i&31)<<6|n[t++]&63):e+=String.fromCharCode((i&15)<<12|(n[t++]&63)<<6|n[t++]&63):e+=String.fromCharCode(i)}};function Pyt(n,e){if(e){for(var t=new Za(n.length),i=0;i<n.length;++i)t[i]=n.charCodeAt(i);return t}if(poe)return poe.encode(n);for(var s=n.length,r=new Za(n.length+(n.length>>1)),o=0,a=function(u){r[o++]=u},i=0;i<s;++i){if(o+5>r.length){var l=new Za(o+8+(s-i<<1));l.set(r),r=l}var c=n.charCodeAt(i);c<128||e?a(c):c<2048?(a(192|c>>6),a(128|c&63)):c>55295&&c<57344?(c=65536+(c&1047552)|n.charCodeAt(++i)&1023,a(240|c>>18),a(128|c>>12&63),a(128|c>>6&63),a(128|c&63)):(a(224|c>>12),a(128|c>>6&63),a(128|c&63))}return pY(r,0,o)}function Ryt(n,e){if(e){for(var t="",i=0;i<n.length;i+=16384)t+=String.fromCharCode.apply(null,n.subarray(i,i+16384));return t}else{if(c$)return c$.decode(n);var s=Ayt(n),r=s.s,t=s.r;return t.length&&Sye(8),r}}const eC=(n,e,t)=>{switch(e=e?`@${e}`:"","jsdelivr"){case"jsdelivr":return`https://cdn.jsdelivr.net/npm/${n}${e}${t}`}};function Myt(n){const e=Pyt(n),t=Tyt(e,{level:9}),i=Ryt(t,!0);return btoa(i)}const Oyt={class:"van-doc-header"},Fyt={class:"van-doc-row"},Byt={class:"van-doc-header__top"},Wyt={class:"van-doc-header__logo"},Vyt=["src"],Hyt={class:"van-doc-header__title"},$yt={key:0,class:"van-doc-header__subtitle"},zyt={class:"van-doc-header__top-nav"},Uyt=["href"],jyt=["src"],qyt={key:1},Kyt={class:"van-doc-header__top-nav-item"},Gyt={class:"van-doc-header__top-nav-item"},Yyt=["src"],Zyt={key:0,class:"van-doc-header__top-nav-item"},moe="",Xyt=rr({__name:"Header",props:{lang:{},config:{},langConfigs:{}},setup(n){const e=$r("store"),t=(_,b)=>{o[_].active=b;let y;switch(_){case"vue":e.setVueVersion(b);break;case"vant":y=e.getImportMap(),y.imports[_]=eC(_,b,"/es/index.mjs"),y.imports["vant/lib/index.css"]=eC("vant",b,"/lib/index.css"),e.setImportMap(y);break}},i=_=>{const b=Qn(()=>`https://data.jsdelivr.com/v1/package/npm/${Ti(_)}`);return yyt(b,{initialData:[],afterFetch:y=>(y.data=y.data.versions,y),refetch:!0}).json().data},s=()=>{const _=i("vue");return Qn(()=>_.value.filter(b=>qbt.gte(b,"3.2.0")))},r=_=>{switch(_){case"vue":return e.getVueVersion();case"vant":return e.getVantVersion()}},o=wm({vant:{text:"Vant",published:i("vant"),active:r("vant")},vue:{text:"Vue",published:s(),active:r("vue")}}),a=bye(),l=hY(),c=cyt(a),u=()=>c();l.value!==a.value&&u();const{copy:h}=dyt(),d=()=>{h(location.href).then(()=>Ore("分享链接已复制到剪贴板")).catch(()=>Ore("复制失败,请手动复制链接"))},f=n,g=Qn(()=>{var b;const _=(b=f.langConfigs)==null?void 0:b.filter(y=>y.lang!==f.lang);return _!=null&&_.length?_[0]:{}}),p=Qn(()=>g.value.label),m=Qn(()=>a.value?"https://b.yzcdn.cn/vant/light-theme.svg":"https://b.yzcdn.cn/vant/dark-theme.svg");return(_,b)=>{const y=eY;return vi(),Mi("div",Oyt,[hi("div",Fyt,[hi("div",Byt,[hi("a",Wyt,[hi("img",{src:_.config.logo},null,8,Vyt),hi("span",Hyt,vl(_.config.title),1),_.config.subtitle?(vi(),Mi("span",$yt,vl(_.config.subtitle),1)):rc("",!0)]),hi("ul",zyt,[(vi(!0),Mi(Es,null,Ub(_.config.links,(w,S)=>(vi(),Mi("li",{key:S,class:"van-doc-header__top-nav-item"},[hi("a",{class:"van-doc-header__link",target:"_blank",href:w.url},[w.logo?(vi(),Mi("img",{key:0,src:w.logo},null,8,jyt)):w.text?(vi(),Mi("span",qyt,vl(w.text),1)):rc("",!0)],8,Uyt)]))),128)),hi("li",Kyt,[hi("a",{class:"van-doc-header__link",onClick:d},[hi("span",null,[At(y,{name:"share"})])])]),hi("li",Gyt,[hi("a",{class:"van-doc-header__link",target:"_blank",onClick:u},[hi("img",{src:m.value},null,8,Yyt)])]),(vi(!0),Mi(Es,null,Ub(o,(w,S)=>(vi(),Mi("li",{ref_for:!0,ref:"version",key:S,class:"van-doc-header__top-nav-item"},[At(Qbt,{"model-value":w.active,"onUpdate:modelValue":E=>t(S,E),label:w.text,options:w.published},null,8,["model-value","onUpdate:modelValue","label","options"])]))),128)),p.value&&moe?(vi(),Mi("li",Zyt,[hi("a",{class:"van-doc-header__cube",href:moe},vl(p.value),1)])):rc("",!0)])])])])}}}),Qyt={class:"van-message"},Jyt=rr({__name:"Message",props:{error:{default:""}},setup(n){const e=n,t=s=>{if(typeof s=="string")return s;{let r=s.message;const{loc:o}=s;return o&&o.start&&(r=`(${o.start.line}:${o.start.column}) `+r),r}},i=Qn(()=>t(e.error));return(s,r)=>(vi(),Mi("div",Qyt,vl(i.value),1))}}),eCt={class:"van-console"},tCt={class:"no-error"},iCt=rr({__name:"Console",setup(n){const e=$r("store");return(t,i)=>{const s=UCe("block");return vi(),Mi("div",eCt,[__(hi("div",tCt,"No error log :)",512),[[Kb,Ti(e).state.errors.length===0]]),__(At(s,null,{default:xh(()=>[(vi(!0),Mi(Es,null,Ub(Ti(e).state.errors,(r,o)=>(vi(),dv(Jyt,{key:o,error:r},null,8,["error"]))),128))]),_:1},512),[[Kb,Ti(e).state.errors.length!==0]])])}}}),nCt={name:"splitpanes",emits:["ready","resize","resized","pane-click","pane-maximize","pane-add","pane-remove","splitter-click"],props:{horizontal:{type:Boolean},pushOtherPanes:{type:Boolean,default:!0},dblClickSplitter:{type:Boolean,default:!0},rtl:{type:Boolean,default:!1},firstSplitter:{type:Boolean}},provide(){return{requestUpdate:this.requestUpdate,onPaneAdd:this.onPaneAdd,onPaneRemove:this.onPaneRemove,onPaneClick:this.onPaneClick}},data:()=>({container:null,ready:!1,panes:[],touch:{mouseDown:!1,dragging:!1,activeSplitter:null},splitterTaps:{splitter:null,timeoutId:null}}),computed:{panesCount(){return this.panes.length},indexedPanes(){return this.panes.reduce((n,e)=>(n[e.id]=e)&&n,{})}},methods:{updatePaneComponents(){this.panes.forEach(n=>{n.update&&n.update({[this.horizontal?"height":"width"]:`${this.indexedPanes[n.id].size}%`})})},bindEvents(){document.addEventListener("mousemove",this.onMouseMove,{passive:!1}),document.addEventListener("mouseup",this.onMouseUp),"ontouchstart"in window&&(document.addEventListener("touchmove",this.onMouseMove,{passive:!1}),document.addEventListener("touchend",this.onMouseUp))},unbindEvents(){document.removeEventListener("mousemove",this.onMouseMove,{passive:!1}),document.removeEventListener("mouseup",this.onMouseUp),"ontouchstart"in window&&(document.removeEventListener("touchmove",this.onMouseMove,{passive:!1}),document.removeEventListener("touchend",this.onMouseUp))},onMouseDown(n,e){this.bindEvents(),this.touch.mouseDown=!0,this.touch.activeSplitter=e},onMouseMove(n){this.touch.mouseDown&&(n.preventDefault(),this.touch.dragging=!0,this.calculatePanesSize(this.getCurrentMouseDrag(n)),this.$emit("resize",this.panes.map(e=>({min:e.min,max:e.max,size:e.size}))))},onMouseUp(){this.touch.dragging&&this.$emit("resized",this.panes.map(n=>({min:n.min,max:n.max,size:n.size}))),this.touch.mouseDown=!1,setTimeout(()=>{this.touch.dragging=!1,this.unbindEvents()},100)},onSplitterClick(n,e){"ontouchstart"in window&&(n.preventDefault(),this.dblClickSplitter&&(this.splitterTaps.splitter===e?(clearTimeout(this.splitterTaps.timeoutId),this.splitterTaps.timeoutId=null,this.onSplitterDblClick(n,e),this.splitterTaps.splitter=null):(this.splitterTaps.splitter=e,this.splitterTaps.timeoutId=setTimeout(()=>{this.splitterTaps.splitter=null},500)))),this.touch.dragging||this.$emit("splitter-click",this.panes[e])},onSplitterDblClick(n,e){let t=0;this.panes=this.panes.map((i,s)=>(i.size=s===e?i.max:i.min,s!==e&&(t+=i.min),i)),this.panes[e].size-=t,this.$emit("pane-maximize",this.panes[e]),this.$emit("resized",this.panes.map(i=>({min:i.min,max:i.max,size:i.size})))},onPaneClick(n,e){this.$emit("pane-click",this.indexedPanes[e])},getCurrentMouseDrag(n){const e=this.container.getBoundingClientRect(),{clientX:t,clientY:i}="ontouchstart"in window&&n.touches?n.touches[0]:n;return{x:t-e.left,y:i-e.top}},getCurrentDragPercentage(n){n=n[this.horizontal?"y":"x"];const e=this.container[this.horizontal?"clientHeight":"clientWidth"];return this.rtl&&!this.horizontal&&(n=e-n),n*100/e},calculatePanesSize(n){const e=this.touch.activeSplitter;let t={prevPanesSize:this.sumPrevPanesSize(e),nextPanesSize:this.sumNextPanesSize(e),prevReachedMinPanes:0,nextReachedMinPanes:0};const i=0+(this.pushOtherPanes?0:t.prevPanesSize),s=100-(this.pushOtherPanes?0:t.nextPanesSize),r=Math.max(Math.min(this.getCurrentDragPercentage(n),s),i);let o=[e,e+1],a=this.panes[o[0]]||null,l=this.panes[o[1]]||null;const c=a.max<100&&r>=a.max+t.prevPanesSize,u=l.max<100&&r<=100-(l.max+this.sumNextPanesSize(e+1));if(c||u){c?(a.size=a.max,l.size=Math.max(100-a.max-t.prevPanesSize-t.nextPanesSize,0)):(a.size=Math.max(100-l.max-t.prevPanesSize-this.sumNextPanesSize(e+1),0),l.size=l.max);return}if(this.pushOtherPanes){const h=this.doPushOtherPanes(t,r);if(!h)return;({sums:t,panesToResize:o}=h),a=this.panes[o[0]]||null,l=this.panes[o[1]]||null}a!==null&&(a.size=Math.min(Math.max(r-t.prevPanesSize-t.prevReachedMinPanes,a.min),a.max)),l!==null&&(l.size=Math.min(Math.max(100-r-t.nextPanesSize-t.nextReachedMinPanes,l.min),l.max))},doPushOtherPanes(n,e){const t=this.touch.activeSplitter,i=[t,t+1];return e<n.prevPanesSize+this.panes[i[0]].min&&(i[0]=this.findPrevExpandedPane(t).index,n.prevReachedMinPanes=0,i[0]<t&&this.panes.forEach((s,r)=>{r>i[0]&&r<=t&&(s.size=s.min,n.prevReachedMinPanes+=s.min)}),n.prevPanesSize=this.sumPrevPanesSize(i[0]),i[0]===void 0)?(n.prevReachedMinPanes=0,this.panes[0].size=this.panes[0].min,this.panes.forEach((s,r)=>{r>0&&r<=t&&(s.size=s.min,n.prevReachedMinPanes+=s.min)}),this.panes[i[1]].size=100-n.prevReachedMinPanes-this.panes[0].min-n.prevPanesSize-n.nextPanesSize,null):e>100-n.nextPanesSize-this.panes[i[1]].min&&(i[1]=this.findNextExpandedPane(t).index,n.nextReachedMinPanes=0,i[1]>t+1&&this.panes.forEach((s,r)=>{r>t&&r<i[1]&&(s.size=s.min,n.nextReachedMinPanes+=s.min)}),n.nextPanesSize=this.sumNextPanesSize(i[1]-1),i[1]===void 0)?(n.nextReachedMinPanes=0,this.panes[this.panesCount-1].size=this.panes[this.panesCount-1].min,this.panes.forEach((s,r)=>{r<this.panesCount-1&&r>=t+1&&(s.size=s.min,n.nextReachedMinPanes+=s.min)}),this.panes[i[0]].size=100-n.prevPanesSize-n.nextReachedMinPanes-this.panes[this.panesCount-1].min-n.nextPanesSize,null):{sums:n,panesToResize:i}},sumPrevPanesSize(n){return this.panes.reduce((e,t,i)=>e+(i<n?t.size:0),0)},sumNextPanesSize(n){return this.panes.reduce((e,t,i)=>e+(i>n+1?t.size:0),0)},findPrevExpandedPane(n){return[...this.panes].reverse().find(e=>e.index<n&&e.size>e.min)||{}},findNextExpandedPane(n){return this.panes.find(e=>e.index>n+1&&e.size>e.min)||{}},checkSplitpanesNodes(){Array.from(this.container.children).forEach(n=>{const e=n.classList.contains("splitpanes__pane"),t=n.classList.contains("splitpanes__splitter");!e&&!t&&(n.parentNode.removeChild(n),console.warn("Splitpanes: Only <pane> elements are allowed at the root of <splitpanes>. One of your DOM nodes was removed."))})},addSplitter(n,e,t=!1){const i=n-1,s=document.createElement("div");s.classList.add("splitpanes__splitter"),t||(s.onmousedown=r=>this.onMouseDown(r,i),typeof window<"u"&&"ontouchstart"in window&&(s.ontouchstart=r=>this.onMouseDown(r,i)),s.onclick=r=>this.onSplitterClick(r,i+1)),this.dblClickSplitter&&(s.ondblclick=r=>this.onSplitterDblClick(r,i+1)),e.parentNode.insertBefore(s,e)},removeSplitter(n){n.onmousedown=void 0,n.onclick=void 0,n.ondblclick=void 0,n.parentNode.removeChild(n)},redoSplitters(){const n=Array.from(this.container.children);n.forEach(t=>{t.className.includes("splitpanes__splitter")&&this.removeSplitter(t)});let e=0;n.forEach(t=>{t.className.includes("splitpanes__pane")&&(!e&&this.firstSplitter?this.addSplitter(e,t,!0):e&&this.addSplitter(e,t),e++)})},requestUpdate({target:n,...e}){const t=this.indexedPanes[n._.uid];Object.entries(e).forEach(([i,s])=>t[i]=s)},onPaneAdd(n){let e=-1;Array.from(n.$el.parentNode.children).some(s=>(s.className.includes("splitpanes__pane")&&e++,s===n.$el));const t=parseFloat(n.minSize),i=parseFloat(n.maxSize);this.panes.splice(e,0,{id:n._.uid,index:e,min:isNaN(t)?0:t,max:isNaN(i)?100:i,size:n.size===null?null:parseFloat(n.size),givenSize:n.size,update:n.update}),this.panes.forEach((s,r)=>s.index=r),this.ready&&this.$nextTick(()=>{this.redoSplitters(),this.resetPaneSizes({addedPane:this.panes[e]}),this.$emit("pane-add",{index:e,panes:this.panes.map(s=>({min:s.min,max:s.max,size:s.size}))})})},onPaneRemove(n){const e=this.panes.findIndex(i=>i.id===n._.uid),t=this.panes.splice(e,1)[0];this.panes.forEach((i,s)=>i.index=s),this.$nextTick(()=>{this.redoSplitters(),this.resetPaneSizes({removedPane:{...t,index:e}}),this.$emit("pane-remove",{removed:t,panes:this.panes.map(i=>({min:i.min,max:i.max,size:i.size}))})})},resetPaneSizes(n={}){!n.addedPane&&!n.removedPane?this.initialPanesSizing():this.panes.some(e=>e.givenSize!==null||e.min||e.max<100)?this.equalizeAfterAddOrRemove(n):this.equalize(),this.ready&&this.$emit("resized",this.panes.map(e=>({min:e.min,max:e.max,size:e.size})))},equalize(){const n=100/this.panesCount;let e=0;const t=[],i=[];this.panes.forEach(s=>{s.size=Math.max(Math.min(n,s.max),s.min),e-=s.size,s.size>=s.max&&t.push(s.id),s.size<=s.min&&i.push(s.id)}),e>.1&&this.readjustSizes(e,t,i)},initialPanesSizing(){let n=100;const e=[],t=[];let i=0;this.panes.forEach(r=>{n-=r.size,r.size!==null&&i++,r.size>=r.max&&e.push(r.id),r.size<=r.min&&t.push(r.id)});let s=100;n>.1&&(this.panes.forEach(r=>{r.size===null&&(r.size=Math.max(Math.min(n/(this.panesCount-i),r.max),r.min)),s-=r.size}),s>.1&&this.readjustSizes(n,e,t))},equalizeAfterAddOrRemove({addedPane:n,removedPane:e}={}){let t=100/this.panesCount,i=0;const s=[],r=[];n&&n.givenSize!==null&&(t=(100-n.givenSize)/(this.panesCount-1)),this.panes.forEach(o=>{i-=o.size,o.size>=o.max&&s.push(o.id),o.size<=o.min&&r.push(o.id)}),!(Math.abs(i)<.1)&&(this.panes.forEach(o=>{n&&n.givenSize!==null&&n.id===o.id||(o.size=Math.max(Math.min(t,o.max),o.min)),i-=o.size,o.size>=o.max&&s.push(o.id),o.size<=o.min&&r.push(o.id)}),i>.1&&this.readjustSizes(i,s,r))},readjustSizes(n,e,t){let i;n>0?i=n/(this.panesCount-e.length):i=n/(this.panesCount-t.length),this.panes.forEach((s,r)=>{if(n>0&&!e.includes(s.id)){const o=Math.max(Math.min(s.size+i,s.max),s.min),a=o-s.size;n-=a,s.size=o}else if(!t.includes(s.id)){const o=Math.max(Math.min(s.size+i,s.max),s.min),a=o-s.size;n-=a,s.size=o}s.update({[this.horizontal?"height":"width"]:`${this.indexedPanes[s.id].size}%`})}),Math.abs(n)>.1&&this.$nextTick(()=>{this.ready&&console.warn("Splitpanes: Could not resize panes correctly due to their constraints.")})}},watch:{panes:{deep:!0,immediate:!1,handler(){this.updatePaneComponents()}},horizontal(){this.updatePaneComponents()},firstSplitter(){this.redoSplitters()},dblClickSplitter(n){[...this.container.querySelectorAll(".splitpanes__splitter")].forEach((e,t)=>{e.ondblclick=n?i=>this.onSplitterDblClick(i,t):void 0})}},beforeUnmount(){this.ready=!1},mounted(){this.container=this.$refs.container,this.checkSplitpanesNodes(),this.redoSplitters(),this.resetPaneSizes(),this.$emit("ready"),this.ready=!0},render(){return fae("div",{ref:"container",class:["splitpanes",`splitpanes--${this.horizontal?"horizontal":"vertical"}`,{"splitpanes--dragging":this.touch.dragging}]},this.$slots.default())}},sCt=(n,e)=>{const t=n.__vccOpts||n;for(const[i,s]of e)t[i]=s;return t},rCt={name:"pane",inject:["requestUpdate","onPaneAdd","onPaneRemove","onPaneClick"],props:{size:{type:[Number,String],default:null},minSize:{type:[Number,String],default:0},maxSize:{type:[Number,String],default:100}},data:()=>({style:{}}),mounted(){this.onPaneAdd(this)},beforeUnmount(){this.onPaneRemove(this)},methods:{update(n){this.style=n}},computed:{sizeNumber(){return this.size||this.size===0?parseFloat(this.size):null},minSizeNumber(){return parseFloat(this.minSize)},maxSizeNumber(){return parseFloat(this.maxSize)}},watch:{sizeNumber(n){this.requestUpdate({target:this,size:n})},minSizeNumber(n){this.requestUpdate({target:this,min:n})},maxSizeNumber(n){this.requestUpdate({target:this,max:n})}}};function oCt(n,e,t,i,s,r){return vi(),Mi("div",{class:"splitpanes__pane",onClick:e[0]||(e[0]=o=>r.onPaneClick(o,n._.uid)),style:$b(n.style)},[U6(n.$slots,"default")],4)}const R6=sCt(rCt,[["render",oCt]]),aCt=`<script setup lang="ts"> +import { ref } from 'vue'; + +const msg = ref('Hello World!'); +<\/script> +<template> + <h1 style="text-align: center;">{{ msg }}</h1> + <van-form> + <van-cell-group inset> + <van-field + name="用户名" + label="用户名" + placeholder="用户名" + :rules="[{ required: true, message: '请填写用户名' }]" + /> + <van-field + type="password" + name="密码" + label="密码" + placeholder="密码" + :rules="[{ required: true, message: '请填写密码' }]" + /> + </van-cell-group> + <div style="margin: 16px"> + <van-button round block type="primary" native-type="submit"> + 提交 + </van-button> + </div> + </van-form> +</template> +`,lCt=`<script setup lang="ts"> +import App from './App.vue' +import { setupVant } from "./vant"; + +setupVant(); +<\/script> + +<template> + <App /> +</template> +`,cCt=`import { getCurrentInstance } from 'vue'; +import Vant from 'vant'; + +let installed = false; +await loadStyle(); + +export function setupVant() { + if (installed) return; + const instance = getCurrentInstance(); + instance.appContext.app.use(Vant); + installed = true; +} + +function loadStyle() { + return new Promise((resolve, reject) => { + const link = document.createElement('link'); + link.rel = 'stylesheet'; + link.href = '#STYLE#'; + link.addEventListener('load', resolve); + link.addEventListener('error', reject); + document.body.append(link); + }); +} +`,uCt=`{ + "compilerOptions": { + "target": "ESNext", + "jsx": "preserve", + "module": "ESNext", + "moduleResolution": "Bundler", + "types": [ + "vant/index.d.ts", + "vant/sfc-shim.d.ts", + "vant/tsc-shim.d.ts" + ], + "allowImportingTsExtensions": true, + "allowJs": true, + "checkJs": true + }, + "vueCompilerOptions": { + "target": 3.3 + } +}`,_oe="src/PlaygroundMain.vue",Dye="src/App.vue",hCt="src/vant.ts",dCt="tsconfig.json",fCt="import-map.json",gCt=()=>cCt.replace("#STYLE#",eC("vant","","/lib/index.css")),u$={vue:{pkg:"@vue/runtime-dom",version:"",path:"/dist/runtime-dom.esm-browser.js"},"vue/server-renderer":{pkg:"@vue/server-renderer",version:"",path:"/dist/server-renderer.esm-browser.js"},"@vue/shared":{pkg:"@vue/shared",version:"",path:"/dist/shared.esm-bundler.js"},"vant/lib/index.css":{version:"",path:""},vant:{pkg:"vant",version:"",path:"/es/index.mjs"},"@vant/use":{pkg:"@vant/use",version:"",path:"/dist/index.esm.mjs"},"@vant/popperjs":{pkg:"@vant/popperjs",version:"",path:"/dist/index.esm.mjs"}},pCt=()=>({imports:Object.fromEntries(Object.entries(u$).map(([e,t])=>[e,eC(t.pkg??e,t.version,t.path)]))}),mCt={[Dye]:aCt,[fCt]:JSON.stringify(pCt(),null,2),[dCt]:uCt},voe=location.hash.slice(1);class _Ct extends Efe{constructor(e={}){super(e),this.state.mainFile=_oe,this.addFile(new fb(_oe,lCt,!0)),this.addFile(new fb(hCt,gCt(),!0)),this.setActive(Dye)}async setVueVersion(e){super.setVueVersion(e),console.log("nemo set vue version",e),this.vueVersion=e}_getVersion(e){const t=this.getImportMap(),i=new RegExp(`.*${u$[e].pkg}|${u$[e].path}|@`,"g");return t.imports[e].replace(i,"")||""}getVueVersion(){return this._getVersion("vue")}getVantVersion(){return this._getVersion("vant")}}const M6=new _Ct({serializedState:voe||Myt(JSON.stringify(mCt))}),vCt="repl_show_error";localStorage.setItem(vCt,"false");const bCt={class:"van-repl"},yCt={class:"van-output"},CCt={class:"van-editor"},wCt=rr({__name:"App",setup(n,{expose:e}){const t={script:{reactivityTransform:!0,defineModel:!0}},i=u=>{if((u.ctrlKey||u.metaKey)&&u.code==="KeyS"){u.preventDefault();return}},s={logo:eC("@vant","","/assets/logo.png"),title:"Vant Playground",subtitle:"",links:[{url:"https://github.com/vant-ui/vant-playground",logo:eC("@vant","","/assets/github.svg")}]},r=[],o=bye(),a=Qn(()=>o.value?"dark":"light");ic("store",M6),ic("preview-options",{}),ic("clear-console",!1);const l=Qt();function c(){var u;(u=l.value)==null||u.reload()}return e({reload:c}),Kx(()=>history.replaceState({},"",M6.serialize())),(u,h)=>(vi(),Mi(Es,null,[At(Xyt,{config:s,"lang-configs":r,lang:"zh-CN"}),hi("div",bCt,[At(Ti(nCt),{class:"default-theme"},{default:xh(()=>[At(Ti(R6),{size:20,"min-size":20},{default:xh(()=>[hi("div",yCt,[At(Ti(fde),{ref_key:"previewRef",ref:l,show:!0,ssr:!1},null,512)])]),_:1}),At(Ti(R6),{size:40,"min-size":40},{default:xh(()=>[hi("div",CCt,[At(Ti(tBe),{ref:"replRef",store:Ti(M6),theme:a.value,editor:Ti(R1t),"show-compile-output":!1,"auto-resize":"","layout-reverse":!0,"sfc-options":t,"clear-console":!1,onKeydown:i},null,8,["store","theme","editor"])])]),_:1}),At(Ti(R6),{"min-size":20},{default:xh(()=>[At(iCt)]),_:1})]),_:1})])],64))}});mae(wCt).mount("#app");export{Txt as C,Nxt as E,dft as K,Oxt as M,Axt as P,Pxt as R,Rxt as S,Bxt as T,zx as U,_ae as _,fft as a,Fxt as b,Mxt as c,sd as e,NS as l}; +function __vite__mapDeps(indexes) { + if (!__vite__mapDeps.viteFileDeps) { + __vite__mapDeps.viteFileDeps = [] + } + return indexes.map((i) => __vite__mapDeps.viteFileDeps[i]) +} \ No newline at end of file diff --git a/playground/assets/index-nsOTQ9la.css b/playground/assets/index-nsOTQ9la.css new file mode 100644 index 00000000..e1743054 --- /dev/null +++ b/playground/assets/index-nsOTQ9la.css @@ -0,0 +1 @@ +*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:var(--un-default-border-color, #e5e7eb)}:before,:after{--un-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}.split-pane[data-v-efd91069]{display:flex;height:100%;position:relative}.split-pane.dragging[data-v-efd91069]{cursor:ew-resize}.dragging .left[data-v-efd91069],.dragging .right[data-v-efd91069]{pointer-events:none}.left[data-v-efd91069],.right[data-v-efd91069]{position:relative;height:100%}.left[data-v-efd91069]{border-right:1px solid var(--border)}.dragger[data-v-efd91069]{position:absolute;z-index:3;top:0;bottom:0;right:-5px;width:10px;cursor:ew-resize}.toggler[data-v-efd91069]{display:none;z-index:3;font-family:var(--font-code);color:var(--text-light);position:absolute;left:50%;bottom:20px;background-color:var(--bg);padding:8px 12px;border-radius:8px;transform:translate(-50%);box-shadow:0 3px 8px #00000040}.dark .toggler[data-v-efd91069]{background-color:var(--bg)}@media (min-width: 721px){.split-pane.vertical[data-v-efd91069]{display:block}.split-pane.vertical.dragging[data-v-efd91069]{cursor:ns-resize}.vertical .dragger[data-v-efd91069]{top:auto;height:10px;width:100%;left:0;right:0;bottom:-5px;cursor:ns-resize}.vertical .left[data-v-efd91069],.vertical .right[data-v-efd91069]{width:100%}.vertical .left[data-v-efd91069]{border-right:none;border-bottom:1px solid var(--border)}}@media (max-width: 720px){.left[data-v-efd91069],.right[data-v-efd91069]{position:absolute;top:0;right:0;bottom:0;left:0;width:auto!important;height:auto!important}.dragger[data-v-efd91069]{display:none}.split-pane .toggler[data-v-efd91069]{display:block}.split-pane .right[data-v-efd91069]{z-index:-1;pointer-events:none}.split-pane .left[data-v-efd91069],.split-pane.show-output .right[data-v-efd91069]{z-index:0;pointer-events:all}.split-pane.show-output .left[data-v-efd91069]{z-index:-1;pointer-events:none}}.msg.err[data-v-1a475595]{--color: #f56c6c;--bg-color: #fef0f0}.dark .msg.err[data-v-1a475595]{--bg-color: #2b1d1d}.msg.warn[data-v-1a475595]{--color: #e6a23c;--bg-color: #fdf6ec}.dark .msg.warn[data-v-1a475595]{--bg-color: #292218}pre[data-v-1a475595]{margin:0;padding:12px 20px;overflow:auto}.msg[data-v-1a475595]{position:absolute;bottom:0;left:8px;right:8px;z-index:20;border:2px solid transparent;border-radius:6px;font-family:var(--font-code);white-space:pre-wrap;margin-bottom:8px;max-height:calc(100% - 300px);min-height:40px;display:flex;align-items:stretch;color:var(--color);border-color:var(--color);background-color:var(--bg-color)}.dismiss[data-v-1a475595]{position:absolute;top:2px;right:2px;width:18px;height:18px;line-height:18px;border-radius:9px;text-align:center;display:block;font-size:9px;padding:0;color:var(--bg-color);background-color:var(--color)}@media (max-width: 720px){.dismiss[data-v-1a475595]{top:-9px;right:-9px}.msg[data-v-1a475595]{bottom:50px}}.fade-enter-active[data-v-1a475595],.fade-leave-active[data-v-1a475595]{transition:all .15s ease-out}.fade-enter-from[data-v-1a475595],.fade-leave-to[data-v-1a475595]{opacity:0;transform:translateY(10px)}.iframe-container[data-v-9d26c2ca],.iframe-container[data-v-9d26c2ca] iframe{width:100%;height:100%;border:none;background-color:#fff}.output-container[data-v-f221f6e0]{height:calc(100% - var(--header-height));overflow:hidden;position:relative}.tab-buttons[data-v-f221f6e0]{box-sizing:border-box;border-bottom:1px solid var(--border);background-color:var(--bg);height:var(--header-height);overflow:hidden}.tab-buttons button[data-v-f221f6e0]{padding:0;box-sizing:border-box}.tab-buttons span[data-v-f221f6e0]{font-size:13px;font-family:var(--font-code);text-transform:uppercase;color:var(--text-light);display:inline-block;padding:8px 16px 6px;line-height:20px}button.active[data-v-f221f6e0]{color:var(--color-branding-dark);border-bottom:3px solid var(--color-branding-dark)}.file-selector[data-v-b94833d2]{display:flex;box-sizing:border-box;border-bottom:1px solid var(--border);background-color:var(--bg);overflow-y:hidden;overflow-x:auto;white-space:nowrap;position:relative;height:var(--header-height)}.file-selector[data-v-b94833d2]::-webkit-scrollbar{height:1px}.file-selector[data-v-b94833d2]::-webkit-scrollbar-track{background-color:var(--border)}.file-selector[data-v-b94833d2]::-webkit-scrollbar-thumb{background-color:var(--color-branding)}.file-selector.has-import-map .add[data-v-b94833d2]{margin-right:10px}.file[data-v-b94833d2]{position:relative;display:inline-block;font-size:13px;font-family:var(--font-code);cursor:pointer;color:var(--text-light);box-sizing:border-box}.file.active[data-v-b94833d2]{color:var(--color-branding);border-bottom:3px solid var(--color-branding);cursor:text}.file span[data-v-b94833d2]{display:inline-block;padding:8px 10px 6px;line-height:20px}.file.pending span[data-v-b94833d2]{min-width:50px;min-height:34px;padding-right:32px;background-color:#c8c8c833;color:transparent}.file.pending input[data-v-b94833d2]{position:absolute;inset:8px 7px auto;font-size:13px;font-family:var(--font-code);line-height:20px;outline:none;border:none;padding:0 3px;min-width:1px;color:inherit;background-color:transparent}.file .remove[data-v-b94833d2]{display:inline-block;vertical-align:middle;line-height:12px;cursor:pointer;padding-left:0}.add[data-v-b94833d2]{font-size:18px;font-family:var(--font-code);color:#999;vertical-align:middle;margin-left:6px;position:relative;top:-1px}.add[data-v-b94833d2]:hover{color:var(--color-branding)}.icon[data-v-b94833d2]{margin-top:-1px}.import-map-wrapper[data-v-b94833d2]{position:sticky;margin-left:auto;top:0;right:0;padding-left:30px;background-color:var(--bg);background:linear-gradient(90deg,#fff0 0%,#fff 25%)}.dark .import-map-wrapper[data-v-b94833d2]{background:linear-gradient(90deg,#1a1a1a00 0%,#1a1a1a 25%)}.wrapper[data-v-70b24951]{position:absolute;bottom:8px;right:15px;z-index:11;display:flex;align-items:center;background-color:var(--bg);color:var(--text-light);cursor:pointer;padding:4px 8px;border-radius:2px;-webkit-user-select:none;user-select:none}.toggle[data-v-70b24951]{display:inline-block;margin-left:4px;width:32px;height:18px;border-radius:12px;position:relative;background-color:var(--border)}.indicator[data-v-70b24951]{font-size:12px;background-color:var(--text-light);width:14px;height:14px;border-radius:50%;transition:transform ease-in-out .2s;position:absolute;left:2px;top:2px;color:var(--bg);text-align:center}.active .indicator[data-v-70b24951]{background-color:var(--color-branding);transform:translate(14px);color:#fff}.editor-container[data-v-3500c8e7]{height:calc(100% - var(--header-height));overflow:hidden;position:relative}.vue-repl{--bg: #fff;--bg-soft: #f8f8f8;--border: #ddd;--text-light: #888;--font-code: Menlo, Monaco, Consolas, "Courier New", monospace;--color-branding: #42b883;--color-branding-dark: #416f9c;--header-height: 38px;height:100%;margin:0;overflow:hidden;font-size:13px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;background-color:var(--bg-soft)}.dark .vue-repl{--bg: #1a1a1a;--bg-soft: #242424;--border: #383838;--text-light: #aaa;--color-branding: #42d392;--color-branding-dark: #89ddff}.vue-repl button{border:none;outline:none;cursor:pointer;margin:0;background-color:transparent}.splitpanes{display:flex;width:100%;height:100%}.splitpanes--vertical{flex-direction:row}.splitpanes--horizontal{flex-direction:column}.splitpanes--dragging *{-webkit-user-select:none;user-select:none}.splitpanes__pane{width:100%;height:100%;overflow:hidden}.splitpanes--vertical .splitpanes__pane{transition:width .2s ease-out}.splitpanes--horizontal .splitpanes__pane{transition:height .2s ease-out}.splitpanes--dragging .splitpanes__pane{transition:none}.splitpanes__splitter{touch-action:none}.splitpanes--vertical>.splitpanes__splitter{min-width:1px;cursor:col-resize}.splitpanes--horizontal>.splitpanes__splitter{min-height:1px;cursor:row-resize}.splitpanes.default-theme .splitpanes__pane{background-color:#f2f2f2}.splitpanes.default-theme .splitpanes__splitter{background-color:#fff;box-sizing:border-box;position:relative;flex-shrink:0}.splitpanes.default-theme .splitpanes__splitter:before,.splitpanes.default-theme .splitpanes__splitter:after{content:"";position:absolute;top:50%;left:50%;background-color:#00000026;transition:background-color .3s}.splitpanes.default-theme .splitpanes__splitter:hover:before,.splitpanes.default-theme .splitpanes__splitter:hover:after{background-color:#00000040}.splitpanes.default-theme .splitpanes__splitter:first-child{cursor:auto}.default-theme.splitpanes .splitpanes .splitpanes__splitter{z-index:1}.default-theme.splitpanes--vertical>.splitpanes__splitter,.default-theme .splitpanes--vertical>.splitpanes__splitter{width:7px;border-left:1px solid #eee;margin-left:-1px}.default-theme.splitpanes--vertical>.splitpanes__splitter:before,.default-theme.splitpanes--vertical>.splitpanes__splitter:after,.default-theme .splitpanes--vertical>.splitpanes__splitter:before,.default-theme .splitpanes--vertical>.splitpanes__splitter:after{transform:translateY(-50%);width:1px;height:30px}.default-theme.splitpanes--vertical>.splitpanes__splitter:before,.default-theme .splitpanes--vertical>.splitpanes__splitter:before{margin-left:-2px}.default-theme.splitpanes--vertical>.splitpanes__splitter:after,.default-theme .splitpanes--vertical>.splitpanes__splitter:after{margin-left:1px}.default-theme.splitpanes--horizontal>.splitpanes__splitter,.default-theme .splitpanes--horizontal>.splitpanes__splitter{height:7px;border-top:1px solid #eee;margin-top:-1px}.default-theme.splitpanes--horizontal>.splitpanes__splitter:before,.default-theme.splitpanes--horizontal>.splitpanes__splitter:after,.default-theme .splitpanes--horizontal>.splitpanes__splitter:before,.default-theme .splitpanes--horizontal>.splitpanes__splitter:after{transform:translate(-50%);width:30px;height:1px}.default-theme.splitpanes--horizontal>.splitpanes__splitter:before,.default-theme .splitpanes--horizontal>.splitpanes__splitter:before{margin-top:-2px}.default-theme.splitpanes--horizontal>.splitpanes__splitter:after,.default-theme .splitpanes--horizontal>.splitpanes__splitter:after{margin-top:1px}:root{--van-doc-black: #000;--van-doc-white: #fff;--van-doc-gray-1: #f7f8fa;--van-doc-gray-2: #f2f3f5;--van-doc-gray-3: #ebedf0;--van-doc-gray-4: #dcdee0;--van-doc-gray-5: #c8c9cc;--van-doc-gray-6: #969799;--van-doc-gray-7: #646566;--van-doc-gray-8: #323233;--van-doc-blue: #1989fa;--van-doc-green: #07c160;--van-doc-purple: #8e69d3;--van-doc-padding: 32px;--van-doc-row-max-width: 1680px;--van-doc-nav-width: 220px;--van-doc-border-radius: 20px;--van-doc-simulator-width: 360px;--van-doc-simulator-height: 620px;--van-doc-header-top-height: 64px;--van-doc-code-font-family: "Menlo", "Source Code Pro", "Monaco", "Inconsolata", monospace;--van-doc-text-color-1: var(--van-doc-black);--van-doc-text-color-2: var(--van-doc-gray-8);--van-doc-text-color-3: #34495e;--van-doc-text-color-4: var(--van-doc-gray-6);--van-doc-link-color: var(--van-doc-blue);--van-doc-background: #eff2f5;--van-doc-background-2: var(--van-doc-white);--van-doc-background-3: var(--van-doc-white);--van-doc-header-background: #011f3c;--van-doc-border-color: var(--van-doc-gray-2);--van-doc-code-color: #58727e;--van-doc-code-comment-color: var(--van-doc-gray-6);--van-doc-code-background: var(--van-doc-gray-1);--van-doc-blockquote-color: #2f85da;--van-doc-blockquote-background: #ecf9ff}.dark{--van-doc-text-color-1: var(--van-doc-white);--van-doc-text-color-2: rgba(255, 255, 255, .9);--van-doc-text-color-3: rgba(255, 255, 255, .75);--van-doc-text-color-4: rgba(255, 255, 255, .6);--van-doc-link-color: #1bb5fe;--van-doc-background: #202124;--van-doc-background-2: rgba(255, 255, 255, .06);--van-doc-background-3: rgba(255, 255, 255, .1);--van-doc-border-color: #3a3a3c;--van-doc-code-color: rgba(200, 200, 200, .85);--van-doc-code-comment-color: var(--van-doc-gray-7);--van-doc-code-background: rgba(0, 0, 0, .24);--van-doc-blockquote-color: #bae6fd;--van-doc-blockquote-background: rgba(7, 89, 133, .25)}.monaco-aria-container{position:absolute;left:-999em}::-ms-clear{display:none}.monaco-editor .editor-widget input{color:inherit}.monaco-editor{position:relative;overflow:visible;-webkit-text-size-adjust:100%;color:var(--vscode-editor-foreground);background-color:var(--vscode-editor-background)}.monaco-editor-background{background-color:var(--vscode-editor-background)}.monaco-editor .rangeHighlight{background-color:var(--vscode-editor-rangeHighlightBackground);box-sizing:border-box;border:1px solid var(--vscode-editor-rangeHighlightBorder)}.monaco-editor.hc-black .rangeHighlight,.monaco-editor.hc-light .rangeHighlight{border-style:dotted}.monaco-editor .symbolHighlight{background-color:var(--vscode-editor-symbolHighlightBackground);box-sizing:border-box;border:1px solid var(--vscode-editor-symbolHighlightBorder)}.monaco-editor.hc-black .symbolHighlight,.monaco-editor.hc-light .symbolHighlight{border-style:dotted}.monaco-editor .overflow-guard{position:relative;overflow:hidden}.monaco-editor .view-overlays{position:absolute;top:0}.monaco-editor .squiggly-error{border-bottom:4px double var(--vscode-editorError-border)}.monaco-editor .squiggly-error:before{display:block;content:"";width:100%;height:100%;background:var(--vscode-editorError-background)}.monaco-editor .squiggly-warning{border-bottom:4px double var(--vscode-editorWarning-border)}.monaco-editor .squiggly-warning:before{display:block;content:"";width:100%;height:100%;background:var(--vscode-editorWarning-background)}.monaco-editor .squiggly-info{border-bottom:4px double var(--vscode-editorInfo-border)}.monaco-editor .squiggly-info:before{display:block;content:"";width:100%;height:100%;background:var(--vscode-editorInfo-background)}.monaco-editor .squiggly-hint{border-bottom:2px dotted var(--vscode-editorHint-border)}.monaco-editor.showUnused .squiggly-unnecessary{border-bottom:2px dashed var(--vscode-editorUnnecessaryCode-border)}.monaco-editor.showDeprecated .squiggly-inline-deprecated{text-decoration:line-through;text-decoration-color:var(--vscode-editor-foreground, inherit)}.monaco-scrollable-element>.scrollbar>.scra{cursor:pointer;font-size:11px!important}.monaco-scrollable-element>.visible{opacity:1;background:#0000;transition:opacity .1s linear;z-index:11}.monaco-scrollable-element>.invisible{opacity:0;pointer-events:none}.monaco-scrollable-element>.invisible.fade{transition:opacity .8s linear}.monaco-scrollable-element>.shadow{position:absolute;display:none}.monaco-scrollable-element>.shadow.top{display:block;top:0;left:3px;height:3px;width:100%;box-shadow:var(--vscode-scrollbar-shadow) 0 6px 6px -6px inset}.monaco-scrollable-element>.shadow.left{display:block;top:3px;left:0;height:100%;width:3px;box-shadow:var(--vscode-scrollbar-shadow) 6px 0 6px -6px inset}.monaco-scrollable-element>.shadow.top-left-corner{display:block;top:0;left:0;height:3px;width:3px}.monaco-scrollable-element>.shadow.top.left{box-shadow:var(--vscode-scrollbar-shadow) 6px 0 6px -6px inset}.monaco-scrollable-element>.scrollbar>.slider{background:var(--vscode-scrollbarSlider-background)}.monaco-scrollable-element>.scrollbar>.slider:hover{background:var(--vscode-scrollbarSlider-hoverBackground)}.monaco-scrollable-element>.scrollbar>.slider.active{background:var(--vscode-scrollbarSlider-activeBackground)}.monaco-editor .inputarea{min-width:0;min-height:0;margin:0;padding:0;position:absolute;outline:none!important;resize:none;border:none;overflow:hidden;color:transparent;background-color:transparent;z-index:-10}.monaco-editor .inputarea.ime-input{z-index:10;caret-color:var(--vscode-editorCursor-foreground);color:var(--vscode-editor-foreground)}.monaco-editor .margin-view-overlays .line-numbers{font-variant-numeric:tabular-nums;position:absolute;text-align:right;display:inline-block;vertical-align:middle;box-sizing:border-box;cursor:default;height:100%}.monaco-editor .relative-current-line-number{text-align:left;display:inline-block;width:100%}.monaco-editor .margin-view-overlays .line-numbers.lh-odd{margin-top:1px}.monaco-editor .line-numbers{color:var(--vscode-editorLineNumber-foreground)}.monaco-editor .line-numbers.active-line-number{color:var(--vscode-editorLineNumber-activeForeground)}.monaco-editor .margin{background-color:var(--vscode-editorGutter-background)}.monaco-mouse-cursor-text{cursor:text}.monaco-editor .view-overlays .current-line,.monaco-editor .margin-view-overlays .current-line{display:block;position:absolute;left:0;top:0;box-sizing:border-box}.monaco-editor .margin-view-overlays .current-line.current-line-margin.current-line-margin-both{border-right:0}.monaco-editor .lines-content .cdr{position:absolute}.monaco-editor .lines-content .core-guide{position:absolute;box-sizing:border-box}.mtkcontrol{color:#fff!important;background:#960000!important}.mtkoverflow{background-color:var(--vscode-button-background, var(--vscode-editor-background));color:var(--vscode-button-foreground, var(--vscode-editor-foreground));border-width:1px;border-style:solid;border-color:var(--vscode-contrastBorder);border-radius:2px;padding:4px;cursor:pointer}.mtkoverflow:hover{background-color:var(--vscode-button-hoverBackground)}.monaco-editor.no-user-select .lines-content,.monaco-editor.no-user-select .view-line,.monaco-editor.no-user-select .view-lines{user-select:none;-webkit-user-select:none}.monaco-editor.mac .lines-content:hover,.monaco-editor.mac .view-line:hover,.monaco-editor.mac .view-lines:hover{user-select:text;-webkit-user-select:text;-ms-user-select:text}.monaco-editor.enable-user-select{user-select:initial;-webkit-user-select:initial}.monaco-editor .view-lines{white-space:nowrap}.monaco-editor .view-line{position:absolute;width:100%}.monaco-editor .mtkw{color:var(--vscode-editorWhitespace-foreground)!important}.monaco-editor .mtkz{display:inline-block;color:var(--vscode-editorWhitespace-foreground)!important}.monaco-editor .lines-decorations{position:absolute;top:0;background:#fff}.monaco-editor .margin-view-overlays .cldr{position:absolute;height:100%}.monaco-editor .glyph-margin{position:absolute;top:0}.monaco-editor .glyph-margin-widgets .cgmr{position:absolute;display:flex;align-items:center;justify-content:center}.monaco-editor .glyph-margin-widgets .cgmr.codicon-modifier-spin:before{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.monaco-editor .margin-view-overlays .cmdr{position:absolute;left:0;width:100%;height:100%}.monaco-editor .minimap.slider-mouseover .minimap-slider{opacity:0;transition:opacity .1s linear}.monaco-editor .minimap.slider-mouseover:hover .minimap-slider,.monaco-editor .minimap.slider-mouseover .minimap-slider.active{opacity:1}.monaco-editor .minimap-slider .minimap-slider-horizontal{background:var(--vscode-minimapSlider-background)}.monaco-editor .minimap-slider:hover .minimap-slider-horizontal{background:var(--vscode-minimapSlider-hoverBackground)}.monaco-editor .minimap-slider.active .minimap-slider-horizontal{background:var(--vscode-minimapSlider-activeBackground)}.monaco-editor .minimap-shadow-visible{box-shadow:var(--vscode-scrollbar-shadow) -6px 0 6px -6px inset}.monaco-editor .minimap-shadow-hidden{position:absolute;width:0}.monaco-editor .minimap-shadow-visible{position:absolute;left:-6px;width:6px}.monaco-editor.no-minimap-shadow .minimap-shadow-visible{position:absolute;left:-1px;width:1px}.minimap.autohide{opacity:0;transition:opacity .5s}.minimap.autohide:hover{opacity:1}.monaco-editor .minimap{z-index:5}.monaco-editor .overlayWidgets{position:absolute;top:0;left:0}.monaco-editor .view-ruler{position:absolute;top:0;box-shadow:1px 0 0 0 var(--vscode-editorRuler-foreground) inset}.monaco-editor .scroll-decoration{position:absolute;top:0;left:0;height:6px;box-shadow:var(--vscode-scrollbar-shadow) 0 6px 6px -6px inset}.monaco-editor .lines-content .cslr{position:absolute}.monaco-editor .focused .selected-text{background-color:var(--vscode-editor-selectionBackground)}.monaco-editor .selected-text{background-color:var(--vscode-editor-inactiveSelectionBackground)}.monaco-editor .top-left-radius{border-top-left-radius:3px}.monaco-editor .bottom-left-radius{border-bottom-left-radius:3px}.monaco-editor .top-right-radius{border-top-right-radius:3px}.monaco-editor .bottom-right-radius{border-bottom-right-radius:3px}.monaco-editor.hc-black .top-left-radius{border-top-left-radius:0}.monaco-editor.hc-black .bottom-left-radius{border-bottom-left-radius:0}.monaco-editor.hc-black .top-right-radius{border-top-right-radius:0}.monaco-editor.hc-black .bottom-right-radius{border-bottom-right-radius:0}.monaco-editor.hc-light .top-left-radius{border-top-left-radius:0}.monaco-editor.hc-light .bottom-left-radius{border-bottom-left-radius:0}.monaco-editor.hc-light .top-right-radius{border-top-right-radius:0}.monaco-editor.hc-light .bottom-right-radius{border-bottom-right-radius:0}.monaco-editor .cursors-layer{position:absolute;top:0}.monaco-editor .cursors-layer>.cursor{position:absolute;overflow:hidden;box-sizing:border-box}.monaco-editor .cursors-layer.cursor-smooth-caret-animation>.cursor{transition:all 80ms}.monaco-editor .cursors-layer.cursor-block-outline-style>.cursor{background:transparent!important;border-style:solid;border-width:1px}.monaco-editor .cursors-layer.cursor-underline-style>.cursor{border-bottom-width:2px;border-bottom-style:solid;background:transparent!important}.monaco-editor .cursors-layer.cursor-underline-thin-style>.cursor{border-bottom-width:1px;border-bottom-style:solid;background:transparent!important}@keyframes monaco-cursor-smooth{0%,20%{opacity:1}60%,to{opacity:0}}@keyframes monaco-cursor-phase{0%,20%{opacity:1}90%,to{opacity:0}}@keyframes monaco-cursor-expand{0%,20%{transform:scaleY(1)}80%,to{transform:scaleY(0)}}.cursor-smooth{animation:monaco-cursor-smooth .5s ease-in-out 0s 20 alternate}.cursor-phase{animation:monaco-cursor-phase .5s ease-in-out 0s 20 alternate}.cursor-expand>.cursor{animation:monaco-cursor-expand .5s ease-in-out 0s 20 alternate}.monaco-editor .blockDecorations-container{position:absolute;top:0;pointer-events:none}.monaco-editor .blockDecorations-block{position:absolute;box-sizing:border-box}.monaco-editor .mwh{position:absolute;color:var(--vscode-editorWhitespace-foreground)!important}.monaco-editor .diff-hidden-lines-widget{width:100%}.monaco-editor .diff-hidden-lines{height:0px;transform:translateY(-10px);font-size:13px;line-height:14px}.monaco-editor .diff-hidden-lines:not(.dragging) .top:hover,.monaco-editor .diff-hidden-lines:not(.dragging) .bottom:hover,.monaco-editor .diff-hidden-lines .top.dragging,.monaco-editor .diff-hidden-lines .bottom.dragging{background-color:var(--vscode-focusBorder)}.monaco-editor .diff-hidden-lines .top,.monaco-editor .diff-hidden-lines .bottom{transition:background-color .1s ease-out;height:4px;background-color:transparent;background-clip:padding-box;border-bottom:2px solid transparent;border-top:4px solid transparent}.monaco-editor.draggingUnchangedRegion.canMoveTop:not(.canMoveBottom) *,.monaco-editor .diff-hidden-lines .top.canMoveTop:not(.canMoveBottom),.monaco-editor .diff-hidden-lines .bottom.canMoveTop:not(.canMoveBottom){cursor:n-resize!important}.monaco-editor.draggingUnchangedRegion:not(.canMoveTop).canMoveBottom *,.monaco-editor .diff-hidden-lines .top:not(.canMoveTop).canMoveBottom,.monaco-editor .diff-hidden-lines .bottom:not(.canMoveTop).canMoveBottom{cursor:s-resize!important}.monaco-editor.draggingUnchangedRegion.canMoveTop.canMoveBottom *,.monaco-editor .diff-hidden-lines .top.canMoveTop.canMoveBottom,.monaco-editor .diff-hidden-lines .bottom.canMoveTop.canMoveBottom{cursor:ns-resize!important}.monaco-editor .diff-hidden-lines .top{transform:translateY(4px)}.monaco-editor .diff-hidden-lines .bottom{transform:translateY(-6px)}.monaco-editor .diff-unchanged-lines{background:var(--vscode-diffEditor-unchangedCodeBackground)}.monaco-editor .noModificationsOverlay{z-index:1;background:var(--vscode-editor-background);display:flex;justify-content:center;align-items:center}.monaco-editor .diff-hidden-lines .center{background:var(--vscode-diffEditor-unchangedRegionBackground);color:var(--vscode-diffEditor-unchangedRegionForeground);overflow:hidden;display:block;text-overflow:ellipsis;white-space:nowrap;height:24px;box-shadow:inset 0 -5px 5px -7px var(--vscode-diffEditor-unchangedRegionShadow),inset 0 5px 5px -7px var(--vscode-diffEditor-unchangedRegionShadow)}.monaco-editor .diff-hidden-lines .center span.codicon{vertical-align:middle}.monaco-editor .diff-hidden-lines .center a:hover .codicon{cursor:pointer;color:var(--vscode-editorLink-activeForeground)!important}.monaco-editor .diff-hidden-lines div.breadcrumb-item{cursor:pointer}.monaco-editor .diff-hidden-lines div.breadcrumb-item:hover{color:var(--vscode-editorLink-activeForeground)}.monaco-editor .movedOriginal,.monaco-editor .movedModified{border:2px solid var(--vscode-diffEditor-move-border)}.monaco-editor .movedOriginal.currentMove,.monaco-editor .movedModified.currentMove{border:2px solid var(--vscode-diffEditor-moveActive-border)}.monaco-diff-editor .moved-blocks-lines path.currentMove{stroke:var(--vscode-diffEditor-moveActive-border)}.monaco-diff-editor .moved-blocks-lines path{pointer-events:visiblestroke}.monaco-diff-editor .moved-blocks-lines .arrow{fill:var(--vscode-diffEditor-move-border)}.monaco-diff-editor .moved-blocks-lines .arrow.currentMove{fill:var(--vscode-diffEditor-moveActive-border)}.monaco-diff-editor .moved-blocks-lines .arrow-rectangle{fill:var(--vscode-editor-background)}.monaco-diff-editor .moved-blocks-lines{position:absolute;pointer-events:none}.monaco-diff-editor .moved-blocks-lines path{fill:none;stroke:var(--vscode-diffEditor-move-border);stroke-width:2}.monaco-editor .char-delete.diff-range-empty{margin-left:-1px;border-left:solid var(--vscode-diffEditor-removedTextBackground) 3px}.monaco-editor .char-insert.diff-range-empty{border-left:solid var(--vscode-diffEditor-insertedTextBackground) 3px}.monaco-editor .fold-unchanged{cursor:pointer}.monaco-diff-editor .diff-moved-code-block{display:flex;justify-content:flex-end;margin-top:-4px}.monaco-diff-editor .diff-moved-code-block .action-bar .action-label.codicon{width:12px;height:12px;font-size:12px}.monaco-diff-editor .diffOverview{z-index:9}.monaco-diff-editor .diffOverview .diffViewport{z-index:10}.monaco-diff-editor.vs .diffOverview{background:#00000008}.monaco-diff-editor.vs-dark .diffOverview{background:#ffffff03}.monaco-scrollable-element.modified-in-monaco-diff-editor.vs .scrollbar,.monaco-scrollable-element.modified-in-monaco-diff-editor.vs-dark .scrollbar{background:#0000}.monaco-scrollable-element.modified-in-monaco-diff-editor.hc-black .scrollbar,.monaco-scrollable-element.modified-in-monaco-diff-editor.hc-light .scrollbar{background:none}.monaco-scrollable-element.modified-in-monaco-diff-editor .slider{z-index:10}.modified-in-monaco-diff-editor .slider.active{background:#ababab66}.modified-in-monaco-diff-editor.hc-black .slider.active,.modified-in-monaco-diff-editor.hc-light .slider.active{background:none}.monaco-editor .insert-sign,.monaco-diff-editor .insert-sign,.monaco-editor .delete-sign,.monaco-diff-editor .delete-sign{font-size:11px!important;opacity:.7!important;display:flex!important;align-items:center}.monaco-editor.hc-black .insert-sign,.monaco-diff-editor.hc-black .insert-sign,.monaco-editor.hc-black .delete-sign,.monaco-diff-editor.hc-black .delete-sign,.monaco-editor.hc-light .insert-sign,.monaco-diff-editor.hc-light .insert-sign,.monaco-editor.hc-light .delete-sign,.monaco-diff-editor.hc-light .delete-sign{opacity:1}.monaco-editor .inline-deleted-margin-view-zone,.monaco-editor .inline-added-margin-view-zone{text-align:right}.monaco-editor .arrow-revert-change{z-index:10;position:absolute}.monaco-editor .arrow-revert-change:hover{cursor:pointer}.monaco-editor .view-zones .view-lines .view-line span{display:inline-block}.monaco-editor .margin-view-zones .lightbulb-glyph:hover{cursor:pointer}.monaco-editor .char-insert,.monaco-diff-editor .char-insert{background-color:var(--vscode-diffEditor-insertedTextBackground)}.monaco-editor .line-insert,.monaco-diff-editor .line-insert{background-color:var(--vscode-diffEditor-insertedLineBackground, var(--vscode-diffEditor-insertedTextBackground))}.monaco-editor .line-insert,.monaco-editor .char-insert{box-sizing:border-box;border:1px solid var(--vscode-diffEditor-insertedTextBorder)}.monaco-editor.hc-black .line-insert,.monaco-editor.hc-light .line-insert,.monaco-editor.hc-black .char-insert,.monaco-editor.hc-light .char-insert{border-style:dashed}.monaco-editor .line-delete,.monaco-editor .char-delete{box-sizing:border-box;border:1px solid var(--vscode-diffEditor-removedTextBorder)}.monaco-editor.hc-black .line-delete,.monaco-editor.hc-light .line-delete,.monaco-editor.hc-black .char-delete,.monaco-editor.hc-light .char-delete{border-style:dashed}.monaco-editor .inline-added-margin-view-zone,.monaco-editor .gutter-insert,.monaco-diff-editor .gutter-insert{background-color:var(--vscode-diffEditorGutter-insertedLineBackground, var(--vscode-diffEditor-insertedLineBackground), var(--vscode-diffEditor-insertedTextBackground))}.monaco-editor .char-delete,.monaco-diff-editor .char-delete{background-color:var(--vscode-diffEditor-removedTextBackground)}.monaco-editor .line-delete,.monaco-diff-editor .line-delete{background-color:var(--vscode-diffEditor-removedLineBackground, var(--vscode-diffEditor-removedTextBackground))}.monaco-editor .inline-deleted-margin-view-zone,.monaco-editor .gutter-delete,.monaco-diff-editor .gutter-delete{background-color:var(--vscode-diffEditorGutter-removedLineBackground, var(--vscode-diffEditor-removedLineBackground), var(--vscode-diffEditor-removedTextBackground))}.monaco-diff-editor.side-by-side .editor.modified{box-shadow:-6px 0 5px -5px var(--vscode-scrollbar-shadow);border-left:1px solid var(--vscode-diffEditor-border)}.monaco-diff-editor .diffViewport{background:var(--vscode-scrollbarSlider-background)}.monaco-diff-editor .diffViewport:hover{background:var(--vscode-scrollbarSlider-hoverBackground)}.monaco-diff-editor .diffViewport:active{background:var(--vscode-scrollbarSlider-activeBackground)}.monaco-editor .diagonal-fill{background-image:linear-gradient(-45deg,var(--vscode-diffEditor-diagonalFill) 12.5%,#0000 12.5%,#0000 50%,var(--vscode-diffEditor-diagonalFill) 50%,var(--vscode-diffEditor-diagonalFill) 62.5%,#0000 62.5%,#0000 100%);background-size:8px 8px}.monaco-list{position:relative;height:100%;width:100%;white-space:nowrap}.monaco-list.mouse-support{user-select:none;-webkit-user-select:none}.monaco-list>.monaco-scrollable-element{height:100%}.monaco-list-rows{position:relative;width:100%;height:100%}.monaco-list.horizontal-scrolling .monaco-list-rows{width:auto;min-width:100%}.monaco-list-row{position:absolute;box-sizing:border-box;overflow:hidden;width:100%}.monaco-list.mouse-support .monaco-list-row{cursor:pointer;touch-action:none}.monaco-list .monaco-scrollable-element>.scrollbar.vertical,.monaco-pane-view>.monaco-split-view2.vertical>.monaco-scrollable-element>.scrollbar.vertical{z-index:14}.monaco-list-row.scrolling{display:none!important}.monaco-list.element-focused,.monaco-list.selection-single,.monaco-list.selection-multiple{outline:0!important}.monaco-drag-image{display:inline-block;padding:1px 7px;border-radius:10px;font-size:12px;position:absolute;z-index:1000}.monaco-list-type-filter-message{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;padding:40px 1em 1em;text-align:center;white-space:normal;opacity:.7;pointer-events:none}.monaco-list-type-filter-message:empty{display:none}.monaco-select-box-dropdown-padding{--dropdown-padding-top: 1px;--dropdown-padding-bottom: 1px}.hc-black .monaco-select-box-dropdown-padding,.hc-light .monaco-select-box-dropdown-padding{--dropdown-padding-top: 3px;--dropdown-padding-bottom: 4px}.monaco-select-box-dropdown-container{display:none;box-sizing:border-box}.monaco-select-box-dropdown-container>.select-box-details-pane>.select-box-description-markdown *{margin:0}.monaco-select-box-dropdown-container>.select-box-details-pane>.select-box-description-markdown a:focus{outline:1px solid -webkit-focus-ring-color;outline-offset:-1px}.monaco-select-box-dropdown-container>.select-box-details-pane>.select-box-description-markdown code{line-height:15px;font-family:var(--monaco-monospace-font)}.monaco-select-box-dropdown-container.visible{display:flex;flex-direction:column;text-align:left;width:1px;overflow:hidden;border-bottom-left-radius:3px;border-bottom-right-radius:3px}.monaco-select-box-dropdown-container>.select-box-dropdown-list-container{flex:0 0 auto;align-self:flex-start;padding-top:var(--dropdown-padding-top);padding-bottom:var(--dropdown-padding-bottom);padding-left:1px;padding-right:1px;width:100%;overflow:hidden;box-sizing:border-box}.monaco-select-box-dropdown-container>.select-box-details-pane{padding:5px}.hc-black .monaco-select-box-dropdown-container>.select-box-dropdown-list-container{padding-top:var(--dropdown-padding-top);padding-bottom:var(--dropdown-padding-bottom)}.monaco-select-box-dropdown-container>.select-box-dropdown-list-container .monaco-list .monaco-list-row{cursor:pointer}.monaco-select-box-dropdown-container>.select-box-dropdown-list-container .monaco-list .monaco-list-row>.option-text{text-overflow:ellipsis;overflow:hidden;padding-left:3.5px;white-space:nowrap;float:left}.monaco-select-box-dropdown-container>.select-box-dropdown-list-container .monaco-list .monaco-list-row>.option-detail{text-overflow:ellipsis;overflow:hidden;padding-left:3.5px;white-space:nowrap;float:left;opacity:.7}.monaco-select-box-dropdown-container>.select-box-dropdown-list-container .monaco-list .monaco-list-row>.option-decorator-right{text-overflow:ellipsis;overflow:hidden;padding-right:10px;white-space:nowrap;float:right}.monaco-select-box-dropdown-container>.select-box-dropdown-list-container .monaco-list .monaco-list-row>.visually-hidden{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}.monaco-select-box-dropdown-container>.select-box-dropdown-container-width-control{flex:1 1 auto;align-self:flex-start;opacity:0}.monaco-select-box-dropdown-container>.select-box-dropdown-container-width-control>.width-control-div{overflow:hidden;max-height:0px}.monaco-select-box-dropdown-container>.select-box-dropdown-container-width-control>.width-control-div>.option-text-width-control{padding-left:4px;padding-right:8px;white-space:nowrap}.monaco-select-box{width:100%;cursor:pointer;border-radius:2px}.monaco-select-box-dropdown-container{font-size:13px;font-weight:400;text-transform:none}.monaco-action-bar .action-item.select-container{cursor:default}.monaco-action-bar .action-item .monaco-select-box{cursor:pointer;min-width:100px;min-height:18px;padding:2px 23px 2px 8px}.mac .monaco-action-bar .action-item .monaco-select-box{font-size:11px;border-radius:5px}.monaco-action-bar{white-space:nowrap;height:100%}.monaco-action-bar .actions-container{display:flex;margin:0 auto;padding:0;height:100%;width:100%;align-items:center}.monaco-action-bar.vertical .actions-container{display:inline-block}.monaco-action-bar .action-item{display:block;align-items:center;justify-content:center;cursor:pointer;position:relative}.monaco-action-bar .action-item.disabled{cursor:default}.monaco-action-bar .action-item .icon,.monaco-action-bar .action-item .codicon{display:block}.monaco-action-bar .action-item .codicon{display:flex;align-items:center;width:16px;height:16px}.monaco-action-bar .action-label{display:flex;font-size:11px;padding:3px;border-radius:5px}.monaco-action-bar .action-item.disabled .action-label,.monaco-action-bar .action-item.disabled .action-label:before,.monaco-action-bar .action-item.disabled .action-label:hover{opacity:.6}.monaco-action-bar.vertical{text-align:left}.monaco-action-bar.vertical .action-item{display:block}.monaco-action-bar.vertical .action-label.separator{display:block;border-bottom:1px solid #bbb;padding-top:1px;margin-left:.8em;margin-right:.8em}.monaco-action-bar .action-item .action-label.separator{width:1px;height:16px;margin:5px 4px!important;cursor:default;min-width:1px;padding:0;background-color:#bbb}.secondary-actions .monaco-action-bar .action-label{margin-left:6px}.monaco-action-bar .action-item.select-container{overflow:hidden;flex:1;max-width:170px;min-width:60px;display:flex;align-items:center;justify-content:center;margin-right:10px}.monaco-action-bar .action-item.action-dropdown-item{display:flex}.monaco-action-bar .action-item.action-dropdown-item>.action-dropdown-item-separator{display:flex;align-items:center;cursor:default}.monaco-action-bar .action-item.action-dropdown-item>.action-dropdown-item-separator>div{width:1px}.monaco-diff-editor .diff-review-line-number{text-align:right;display:inline-block;color:var(--vscode-editorLineNumber-foreground)}.monaco-diff-editor .diff-review{position:absolute;user-select:none;-webkit-user-select:none;z-index:99}.monaco-diff-editor .diff-review-summary{padding-left:10px}.monaco-diff-editor .diff-review-shadow{position:absolute;box-shadow:var(--vscode-scrollbar-shadow) 0 -6px 6px -6px inset}.monaco-diff-editor .diff-review-row{white-space:pre}.monaco-diff-editor .diff-review-table{display:table;min-width:100%}.monaco-diff-editor .diff-review-row{display:table-row;width:100%}.monaco-diff-editor .diff-review-spacer{display:inline-block;width:10px;vertical-align:middle}.monaco-diff-editor .diff-review-spacer>.codicon{font-size:9px!important}.monaco-diff-editor .diff-review-actions{display:inline-block;position:absolute;right:10px;top:2px;z-index:100}.monaco-diff-editor .diff-review-actions .action-label{width:16px;height:16px;margin:2px 0}.monaco-diff-editor .revertButton{cursor:pointer}:root{--vscode-sash-size: 4px;--vscode-sash-hover-size: 4px}.monaco-sash{position:absolute;z-index:35;touch-action:none}.monaco-sash.disabled{pointer-events:none}.monaco-sash.mac.vertical{cursor:col-resize}.monaco-sash.vertical.minimum{cursor:e-resize}.monaco-sash.vertical.maximum{cursor:w-resize}.monaco-sash.mac.horizontal{cursor:row-resize}.monaco-sash.horizontal.minimum{cursor:s-resize}.monaco-sash.horizontal.maximum{cursor:n-resize}.monaco-sash.disabled{cursor:default!important;pointer-events:none!important}.monaco-sash.vertical{cursor:ew-resize;top:0;width:var(--vscode-sash-size);height:100%}.monaco-sash.horizontal{cursor:ns-resize;left:0;width:100%;height:var(--vscode-sash-size)}.monaco-sash:not(.disabled)>.orthogonal-drag-handle{content:" ";height:calc(var(--vscode-sash-size) * 2);width:calc(var(--vscode-sash-size) * 2);z-index:100;display:block;cursor:all-scroll;position:absolute}.monaco-sash.horizontal.orthogonal-edge-north:not(.disabled)>.orthogonal-drag-handle.start,.monaco-sash.horizontal.orthogonal-edge-south:not(.disabled)>.orthogonal-drag-handle.end{cursor:nwse-resize}.monaco-sash.horizontal.orthogonal-edge-north:not(.disabled)>.orthogonal-drag-handle.end,.monaco-sash.horizontal.orthogonal-edge-south:not(.disabled)>.orthogonal-drag-handle.start{cursor:nesw-resize}.monaco-sash.vertical>.orthogonal-drag-handle.start{left:calc(var(--vscode-sash-size) * -.5);top:calc(var(--vscode-sash-size) * -1)}.monaco-sash.vertical>.orthogonal-drag-handle.end{left:calc(var(--vscode-sash-size) * -.5);bottom:calc(var(--vscode-sash-size) * -1)}.monaco-sash.horizontal>.orthogonal-drag-handle.start{top:calc(var(--vscode-sash-size) * -.5);left:calc(var(--vscode-sash-size) * -1)}.monaco-sash.horizontal>.orthogonal-drag-handle.end{top:calc(var(--vscode-sash-size) * -.5);right:calc(var(--vscode-sash-size) * -1)}.monaco-sash:before{content:"";pointer-events:none;position:absolute;width:100%;height:100%;background:transparent}.monaco-workbench:not(.reduce-motion) .monaco-sash:before{transition:background-color .1s ease-out}.monaco-sash.hover:before,.monaco-sash.active:before{background:var(--vscode-sash-hoverBorder)}.monaco-sash.vertical:before{width:var(--vscode-sash-hover-size);left:calc(50% - (var(--vscode-sash-hover-size) / 2))}.monaco-sash.horizontal:before{height:var(--vscode-sash-hover-size);top:calc(50% - (var(--vscode-sash-hover-size) / 2))}.pointer-events-disabled{pointer-events:none!important}.monaco-sash.debug{background:#0ff}.monaco-sash.debug.disabled{background:#0ff3}.monaco-sash.debug:not(.disabled)>.orthogonal-drag-handle{background:red}.monaco-editor .selection-anchor{background-color:#007acc;width:2px!important}.monaco-editor .bracket-match{box-sizing:border-box;background-color:var(--vscode-editorBracketMatch-background);border:1px solid var(--vscode-editorBracketMatch-border)}@font-face{font-family:codicon;font-display:block;src:url(data:font/ttf;base64,AAEAAAALAIAAAwAwR1NVQiCLJXoAAAE4AAAAVE9TLzI3T0ZpAAABjAAAAGBjbWFw2WtCygAACNwAABnaZ2x5ZkUa1GQAACY0AADuCGhlYWRYl6BTAAAA4AAAADZoaGVhAlsC5wAAALwAAAAkaG10eAcp//oAAAHsAAAG8GxvY2Ec7eKIAAAiuAAAA3ptYXhwAt0BgQAAARgAAAAgbmFtZZP3uUsAARQ8AAAB+HBvc3TRsqgxAAEWNAAAGCMAAQAAASwAAAAAASz////+AS4AAQAAAAAAAAAAAAAAAAAAAbwAAQAAAAEAAKJbzxRfDzz1AAsBLAAAAAB8JbCAAAAAAHwlsID////9AS4BLQAAAAgAAgAAAAAAAAABAAABvAF1ABcAAAAAAAIAAAAKAAoAAAD/AAAAAAAAAAEAAAAKADAAPgACREZMVAAObGF0bgAaAAQAAAAAAAAAAQAAAAQAAAAAAAAAAQAAAAFsaWdhAAgAAAABAAAAAQAEAAQAAAABAAgAAQAGAAAAAQAAAAQBKwGQAAUAAADLANIAAAAqAMsA0gAAAJAADgBNAAACAAUDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBmRWQAwOpg7CMBLAAAABsBRwADAAAAAQAAAAAAAAAAAAAAAAACAAAAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLP//ASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLP//ASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEs//8BLAAAASwAAAEsAAABLAAAASz//wEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLP//ASwAAAEsAAABLAAAASz//wEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAAAAABQAAAAMAAAAsAAAABAAABPoAAQAAAAAD9AADAAEAAAAsAAMACgAABPoABAPIAAAAEAAQAAMAAOqI6ozqx+rJ6wnrTuwj//8AAOpg6orqj+rJ6szrC+tQ//8AAAAAAAAAAAAAAAAAAAABABAAYABkANQA1AFOAdQAAAADAOkBPgE7ALEBLAGFARoBXwEEAWUATAGxAVIBWwFaAI4ANQElAIMAxwD2AEABgwB2ABYBrgCYAIUBOAETAQoBCwGYAMEAowC1AZABcACIAYEBaQF4AXYBagF5AYABewF0ALcBbwF9AAIABAAFAAoACwAMAA0ADgAPABAAEgAaABwAHQAeAFkAWgBbAFwAXwBgACEAIgAjACQAJQAoACoAKwAsAC0ALgAvADEAMgAzADQAOwA4ADwAPQA+AD8AQQBCAEQARgBHAEkAUgBTAFQAVQBkAGYAaABrAG8AcQByAHMAdAB1AHcAeAB5AHoAewB8AH4AfwCBAIIAhACGAIkAjACNAJAAkQCSAJMAlACVAJYAlwCZAJsAnACdAJ4AnwCgAKIApQCmAKcAkQCoAKkAqwCyALMAtgC4ALwAvQDAAMIAwwDEAMUAywDMAM0AzgDPANAA0QDSAOcA6gDrAO4A8QDyAPMA9AD4APkA/AD9AP4BAwEFAQYBBwEJAQ0BDgERARIBFQEWAR0BIQEiASMBJAEmAScBKAEpASoBKwEwATEBMgEzATQBNQE2ATcBOQE6ATwBPQE/AUABQgFDAUQBRQFGAUsBTAFNAU4BTwFRAVYBVwFYAVkBXAFeAWIBYwFkAWYBZwFrAWwBbQFuAXEBcgFzAXUBdwF6AXwBfgGHAYgBkQGSAZQBlgGXAZkBmgGbAZwBnQGhAaMBpAGlAagBqQGqAawBrQGyAbMBtAG1AbYBugG7AOwA7QDvAPAAXQBeAG0AOQBuAGEBfwBsAHAAagBYACYAJwD/AIoAjwC+AaIAAQAXAGIA5gEUAUgBggEfALQBVQFUARgBaAEgAS4AVwGrAEMBAACLALkA9wEQAS8AKQEeARcANgA3AEgBhAGmAaABngGfAK0BRwFJAQ8AaQG3AbkBuAGKAYsBjAGNAY4BjwGJABEAUQEZAJoBsABnAMkA1QDUANMATwBOAE0AFADKAKwArgBWAGUBSgChAGMAFQC6ALsBHAAfACAA9QATAacBDADlANYA1wDcANoA2wDeAN8A4QDjAOQA2QDYAYYAxgEtAIcABgAHAAgACQDiAN0A4AAbAL8A+wD6ADoAGQAYAEsArwCwAVAASgFTAWEAyAECAZMBlQBFAV0ApAGvADABGwEIAQEAqgBQAOgBQQFgAIAAfQAAAQYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAU4AAAAAAAAAG8AADqYAAA6mAAAAADAADqYQAA6mEAAADpAADqYgAA6mIAAAE+AADqYwAA6mMAAAE7AADqZAAA6mQAAACxAADqZQAA6mUAAAEsAADqZgAA6mYAAAGFAADqZwAA6mcAAAEaAADqaAAA6mgAAAFfAADqaQAA6mkAAAEEAADqagAA6moAAAFlAADqawAA6msAAABMAADqbAAA6mwAAAGxAADqbQAA6m0AAAFSAADqbgAA6m4AAAFbAADqbwAA6m8AAAFaAADqcAAA6nAAAACOAADqcQAA6nEAAAA1AADqcgAA6nIAAAElAADqcwAA6nMAAACDAADqdAAA6nQAAADHAADqdQAA6nUAAAD2AADqdgAA6nYAAABAAADqdwAA6ncAAAGDAADqeAAA6ngAAAB2AADqeQAA6nkAAAAWAADqegAA6noAAAGuAADqewAA6nsAAACYAADqfAAA6nwAAACFAADqfQAA6n0AAAE4AADqfgAA6n4AAAETAADqfwAA6n8AAAEKAADqgAAA6oAAAAELAADqgQAA6oEAAAGYAADqggAA6oIAAADBAADqgwAA6oMAAACjAADqhAAA6oQAAAC1AADqhQAA6oUAAAGQAADqhgAA6oYAAAFwAADqhwAA6ocAAACIAADqiAAA6ogAAAGBAADqigAA6ooAAAFpAADqiwAA6osAAAF4AADqjAAA6owAAAF2AADqjwAA6o8AAAFqAADqkAAA6pAAAAF5AADqkQAA6pEAAAGAAADqkgAA6pIAAAF7AADqkwAA6pMAAAF0AADqlAAA6pQAAAC3AADqlQAA6pUAAAFvAADqlgAA6pYAAAF9AADqlwAA6pcAAAACAADqmAAA6pgAAAAEAADqmQAA6pkAAAAFAADqmgAA6poAAAAKAADqmwAA6psAAAALAADqnAAA6pwAAAAMAADqnQAA6p0AAAANAADqngAA6p4AAAAOAADqnwAA6p8AAAAPAADqoAAA6qAAAAAQAADqoQAA6qEAAAASAADqogAA6qIAAAAaAADqowAA6qMAAAAcAADqpAAA6qQAAAAdAADqpQAA6qUAAAAeAADqpgAA6qYAAABZAADqpwAA6qcAAABaAADqqAAA6qgAAABbAADqqQAA6qkAAABcAADqqgAA6qoAAABfAADqqwAA6qsAAABgAADqrAAA6qwAAAAhAADqrQAA6q0AAAAiAADqrgAA6q4AAAAjAADqrwAA6q8AAAAkAADqsAAA6rAAAAAlAADqsQAA6rEAAAAoAADqsgAA6rIAAAAqAADqswAA6rMAAAArAADqtAAA6rQAAAAsAADqtQAA6rUAAAAtAADqtgAA6rYAAAAuAADqtwAA6rcAAAAvAADquAAA6rgAAAAxAADquQAA6rkAAAAyAADqugAA6roAAAAzAADquwAA6rsAAAA0AADqvAAA6rwAAAA7AADqvQAA6r0AAAA4AADqvgAA6r4AAAA8AADqvwAA6r8AAAA9AADqwAAA6sAAAAA+AADqwQAA6sEAAAA/AADqwgAA6sIAAABBAADqwwAA6sMAAABCAADqxAAA6sQAAABEAADqxQAA6sUAAABGAADqxgAA6sYAAABHAADqxwAA6scAAABJAADqyQAA6skAAABSAADqzAAA6swAAABTAADqzQAA6s0AAABUAADqzgAA6s4AAABVAADqzwAA6s8AAABkAADq0AAA6tAAAABmAADq0QAA6tEAAABoAADq0gAA6tIAAABrAADq0wAA6tMAAABvAADq1AAA6tQAAABxAADq1QAA6tUAAAByAADq1gAA6tYAAABzAADq1wAA6tcAAAB0AADq2AAA6tgAAAB1AADq2QAA6tkAAAB3AADq2gAA6toAAAB4AADq2wAA6tsAAAB5AADq3AAA6twAAAB6AADq3QAA6t0AAAB7AADq3gAA6t4AAAB8AADq3wAA6t8AAAB+AADq4AAA6uAAAAB/AADq4QAA6uEAAACBAADq4gAA6uIAAACCAADq4wAA6uMAAACEAADq5AAA6uQAAACGAADq5QAA6uUAAACJAADq5gAA6uYAAACMAADq5wAA6ucAAACNAADq6AAA6ugAAACQAADq6QAA6ukAAACRAADq6gAA6uoAAACSAADq6wAA6usAAACTAADq7AAA6uwAAACUAADq7QAA6u0AAACVAADq7gAA6u4AAACWAADq7wAA6u8AAACXAADq8AAA6vAAAACZAADq8QAA6vEAAACbAADq8gAA6vIAAACcAADq8wAA6vMAAACdAADq9AAA6vQAAACeAADq9QAA6vUAAACfAADq9gAA6vYAAACgAADq9wAA6vcAAACiAADq+AAA6vgAAAClAADq+QAA6vkAAACmAADq+gAA6voAAACnAADq+wAA6vsAAACRAADq/AAA6vwAAACoAADq/QAA6v0AAACpAADq/gAA6v4AAACrAADq/wAA6v8AAACyAADrAAAA6wAAAACzAADrAQAA6wEAAAC2AADrAgAA6wIAAAC4AADrAwAA6wMAAAC8AADrBAAA6wQAAAC9AADrBQAA6wUAAADAAADrBgAA6wYAAADCAADrBwAA6wcAAADDAADrCAAA6wgAAADEAADrCQAA6wkAAADFAADrCwAA6wsAAADLAADrDAAA6wwAAADMAADrDQAA6w0AAADNAADrDgAA6w4AAADOAADrDwAA6w8AAADPAADrEAAA6xAAAADQAADrEQAA6xEAAADRAADrEgAA6xIAAADSAADrEwAA6xMAAADnAADrFAAA6xQAAADqAADrFQAA6xUAAADrAADrFgAA6xYAAADuAADrFwAA6xcAAADxAADrGAAA6xgAAADyAADrGQAA6xkAAADzAADrGgAA6xoAAAD0AADrGwAA6xsAAAD4AADrHAAA6xwAAAD5AADrHQAA6x0AAAD8AADrHgAA6x4AAAD9AADrHwAA6x8AAAD+AADrIAAA6yAAAAEDAADrIQAA6yEAAAEFAADrIgAA6yIAAAEGAADrIwAA6yMAAAEHAADrJAAA6yQAAAEJAADrJQAA6yUAAAENAADrJgAA6yYAAAEOAADrJwAA6ycAAAERAADrKAAA6ygAAAESAADrKQAA6ykAAAEVAADrKgAA6yoAAAEWAADrKwAA6ysAAAEdAADrLAAA6ywAAAEhAADrLQAA6y0AAAEiAADrLgAA6y4AAAEjAADrLwAA6y8AAAEkAADrMAAA6zAAAAEmAADrMQAA6zEAAAEnAADrMgAA6zIAAAEoAADrMwAA6zMAAAEpAADrNAAA6zQAAAEqAADrNQAA6zUAAAErAADrNgAA6zYAAAEwAADrNwAA6zcAAAExAADrOAAA6zgAAAEyAADrOQAA6zkAAAEzAADrOgAA6zoAAAE0AADrOwAA6zsAAAE1AADrPAAA6zwAAAE2AADrPQAA6z0AAAE3AADrPgAA6z4AAAE5AADrPwAA6z8AAAE6AADrQAAA60AAAAE8AADrQQAA60EAAAE9AADrQgAA60IAAAE/AADrQwAA60MAAAFAAADrRAAA60QAAAFCAADrRQAA60UAAAFDAADrRgAA60YAAAFEAADrRwAA60cAAAFFAADrSAAA60gAAAFGAADrSQAA60kAAAFLAADrSgAA60oAAAFMAADrSwAA60sAAAFNAADrTAAA60wAAAFOAADrTQAA600AAAFPAADrTgAA604AAAFRAADrUAAA61AAAAFWAADrUQAA61EAAAFXAADrUgAA61IAAAFYAADrUwAA61MAAAFZAADrVAAA61QAAAFcAADrVQAA61UAAAFeAADrVgAA61YAAAFiAADrVwAA61cAAAFjAADrWAAA61gAAAFkAADrWQAA61kAAAFmAADrWgAA61oAAAFnAADrWwAA61sAAAFrAADrXAAA61wAAAFsAADrXQAA610AAAFtAADrXgAA614AAAFuAADrXwAA618AAAFxAADrYAAA62AAAAFyAADrYQAA62EAAAFzAADrYgAA62IAAAF1AADrYwAA62MAAAF3AADrZAAA62QAAAF6AADrZQAA62UAAAF8AADrZgAA62YAAAF+AADrZwAA62cAAAGHAADraAAA62gAAAGIAADraQAA62kAAAGRAADragAA62oAAAGSAADrawAA62sAAAGUAADrbAAA62wAAAGWAADrbQAA620AAAGXAADrbgAA624AAAGZAADrbwAA628AAAGaAADrcAAA63AAAAGbAADrcQAA63EAAAGcAADrcgAA63IAAAGdAADrcwAA63MAAAGhAADrdAAA63QAAAGjAADrdQAA63UAAAGkAADrdgAA63YAAAGlAADrdwAA63cAAAGoAADreAAA63gAAAGpAADreQAA63kAAAGqAADregAA63oAAAGsAADrewAA63sAAAGtAADrfAAA63wAAAGyAADrfQAA630AAAGzAADrfgAA634AAAG0AADrfwAA638AAAG1AADrgAAA64AAAAG2AADrgQAA64EAAAG6AADrggAA64IAAAG7AADrgwAA64MAAADsAADrhAAA64QAAADtAADrhQAA64UAAADvAADrhgAA64YAAADwAADrhwAA64cAAABdAADriAAA64gAAABeAADriQAA64kAAABtAADrigAA64oAAAA5AADriwAA64sAAABuAADrjAAA64wAAABhAADrjQAA640AAAF/AADrjgAA644AAABsAADrjwAA648AAABwAADrkAAA65AAAABqAADrkQAA65EAAABYAADrkgAA65IAAAAmAADrkwAA65MAAAAnAADrlAAA65QAAAD/AADrlQAA65UAAACKAADrlgAA65YAAACPAADrlwAA65cAAAC+AADrmAAA65gAAAGiAADrmQAA65kAAAABAADrmgAA65oAAAAXAADrmwAA65sAAABiAADrnAAA65wAAADmAADrnQAA650AAAEUAADrngAA654AAAFIAADrnwAA658AAAGCAADroAAA66AAAAEfAADroQAA66EAAAC0AADrogAA66IAAAFVAADrowAA66MAAAFUAADrpAAA66QAAAEYAADrpQAA66UAAAFoAADrpgAA66YAAAEgAADrpwAA66cAAAEuAADrqAAA66gAAABXAADrqQAA66kAAAGrAADrqgAA66oAAABDAADrqwAA66sAAAEAAADrrAAA66wAAACLAADrrQAA660AAAC5AADrrgAA664AAAD3AADrrwAA668AAAEQAADrsAAA67AAAAEvAADrsQAA67EAAAApAADrsgAA67IAAAEeAADrswAA67MAAAEXAADrtAAA67QAAAA2AADrtQAA67UAAAA3AADrtgAA67YAAABIAADrtwAA67cAAAGEAADruAAA67gAAAGmAADruQAA67kAAAGgAADrugAA67oAAAGeAADruwAA67sAAAGfAADrvAAA67wAAACtAADrvQAA670AAAFHAADrvgAA674AAAFJAADrvwAA678AAAEPAADrwAAA68AAAABpAADrwQAA68EAAAG3AADrwgAA68IAAAG5AADrwwAA68MAAAG4AADrxAAA68QAAAGKAADrxQAA68UAAAGLAADrxgAA68YAAAGMAADrxwAA68cAAAGNAADryAAA68gAAAGOAADryQAA68kAAAGPAADrygAA68oAAAGJAADrywAA68sAAAARAADrzAAA68wAAABRAADrzQAA680AAAEZAADrzgAA684AAACaAADrzwAA688AAAGwAADr0AAA69AAAABnAADr0QAA69EAAADJAADr0gAA69IAAADVAADr0wAA69MAAADUAADr1AAA69QAAADTAADr1QAA69UAAABPAADr1gAA69YAAABOAADr1wAA69cAAABNAADr2AAA69gAAAAUAADr2QAA69kAAADKAADr2gAA69oAAACsAADr2wAA69sAAACuAADr3AAA69wAAABWAADr3QAA690AAABlAADr3gAA694AAAFKAADr3wAA698AAAChAADr4AAA6+AAAABjAADr4QAA6+EAAAAVAADr4gAA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AGQAaQBjAG8AbgBUAGgAZQAgAGkAYwBvAG4AIABmAG8AbgB0ACAAZgBvAHIAIABWAGkAcwB1AGEAbAAgAFMAdAB1AGQAaQBvACAAQwBvAGQAZQBoAHQAdABwADoALwAvAGYAbwBuAHQAZQBsAGwAbwAuAGMAbwBtAAIAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAABvAECAQMBBAEFAQYBBwEIAQkBCgELAQwBDQEOAQ8BEAERARIBEwEUARUBFgEXARgBGQEaARsBHAEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEpASoBKwEsAS0BLgEvATABMQEyATMBNAE1ATYBNwE4ATkBOgE7ATwBPQE+AT8BQAFBAUIBQwFEAUUBRgFHAUgBSQFKAUsBTAFNAU4BTwFQAVEBUgFTAVQBVQFWAVcBWAFZAVoBWwFcAV0BXgFfAWABYQFiAWMBZAFlAWYBZwFoAWkBagFrAWwBbQFuAW8BcAFxAXIBcwF0AXUBdgF3AXgBeQF6AXsBfAF9AX4BfwGAAYEBggGDAYQBhQGGAYcBiAGJAYoBiwGMAY0BjgGPAZABkQGSAZMBlAGVAZYBlwGYAZkBmgGbAZwBnQGeAZ8BoAGhAaIBowGkAaUBpgGnAagBqQGqAasBrAGtAa4BrwGwAbEBsgGzAbQBtQG2AbcBuAG5AboBuwG8Ab0BvgG/AcABwQHCAcMBxAHFAcYBxwHIAckBygHLAcwBzQHOAc8B0AHRAdIB0wHUAdUB1gHXAdgB2QHaAdsB3AHdAd4B3wHgAeEB4gHjAeQB5QHmAecB6AHpAeoB6wHsAe0B7gHvAfAB8QHyAfMB9AH1AfYB9wH4AfkB+gH7AfwB/QH+Af8CAAIBAgICAwIEAgUCBgIHAggCCQIKAgsCDAINAg4CDwIQAhECEgITAhQCFQIWAhcCGAIZAhoCGwIcAh0CHgIfAiACIQIiAiMCJAIlAiYCJwIoAikCKgIrAiwCLQIuAi8CMAIxAjICMwI0AjUCNgI3AjgCOQI6AjsCPAI9Aj4CPwJAAkECQgJDAkQCRQJGAkcCSAJJAkoCSwJMAk0CTgJPAlACUQJSAlMCVAJVAlYCVwJYAlkCWgJbAlwCXQJeAl8CYAJhAmICYwJkAmUCZgJnAmgCaQJqAmsCbAJtAm4CbwJwAnECcgJzAnQCdQJ2AncCeAJ5AnoCewJ8An0CfgJ/AoACgQKCAoMChAKFAoYChwKIAokCigKLAowCjQKOAo8CkAKRApICkwKUApUClgKXApgCmQKaApsCnAKdAp4CnwKgAqECogKjAqQCpQKmAqcCqAKpAqoCqwKsAq0CrgKvArACsQKyArMCtAK1ArYCtwK4ArkCugK7ArwCvQAHYWNjb3VudBRhY3RpdmF0ZS1icmVha3BvaW50cwNhZGQHYXJjaGl2ZQphcnJvdy1ib3RoEWFycm93LWNpcmNsZS1kb3duEWFycm93LWNpcmNsZS1sZWZ0EmFycm93LWNpcmNsZS1yaWdodA9hcnJvdy1jaXJjbGUtdXAKYXJyb3ctZG93bgphcnJvdy1sZWZ0C2Fycm93LXJpZ2h0EGFycm93LXNtYWxsLWRvd24QYXJyb3ctc21hbGwtbGVmdBFhcnJvdy1zbWFsbC1yaWdodA5hcnJvdy1zbWFsbC11cAphcnJvdy1zd2FwCGFycm93LXVwDGF6dXJlLWRldm9wcwVhenVyZQtiZWFrZXItc3RvcAZiZWFrZXIIYmVsbC1kb3QOYmVsbC1zbGFzaC1kb3QKYmVsbC1zbGFzaARiZWxsBWJsYW5rBGJvbGQEYm9vawhib29rbWFyawticmFja2V0LWRvdA1icmFja2V0LWVycm9yCWJyaWVmY2FzZQlicm9hZGNhc3QHYnJvd3NlcgNidWcIY2FsZW5kYXINY2FsbC1pbmNvbWluZw1jYWxsLW91dGdvaW5nDmNhc2Utc2Vuc2l0aXZlCWNoZWNrLWFsbAVjaGVjawljaGVja2xpc3QMY2hldnJvbi1kb3duDGNoZXZyb24tbGVmdA1jaGV2cm9uLXJpZ2h0CmNoZXZyb24tdXAEY2hpcAxjaHJvbWUtY2xvc2UPY2hyb21lLW1heGltaXplD2Nocm9tZS1taW5pbWl6ZQ5jaHJvbWUtcmVzdG9yZQ1jaXJjbGUtZmlsbGVkE2NpcmNsZS1sYXJnZS1maWxsZWQMY2lyY2xlLWxhcmdlDGNpcmNsZS1zbGFzaBNjaXJjbGUtc21hbGwtZmlsbGVkDGNpcmNsZS1zbWFsbAZjaXJjbGUNY2lyY3VpdC1ib2FyZAljbGVhci1hbGwGY2xpcHB5CWNsb3NlLWFsbAVjbG9zZQ5jbG91ZC1kb3dubG9hZAxjbG91ZC11cGxvYWQFY2xvdWQEY29kZQZjb2ZmZWUMY29sbGFwc2UtYWxsCmNvbG9yLW1vZGUHY29tYmluZRJjb21tZW50LWRpc2N1c3Npb24NY29tbWVudC1kcmFmdBJjb21tZW50LXVucmVzb2x2ZWQHY29tbWVudA5jb21wYXNzLWFjdGl2ZQtjb21wYXNzLWRvdAdjb21wYXNzB2NvcGlsb3QEY29weQtjcmVkaXQtY2FyZARkYXNoCWRhc2hib2FyZAhkYXRhYmFzZQlkZWJ1Zy1hbGwPZGVidWctYWx0LXNtYWxsCWRlYnVnLWFsdCdkZWJ1Zy1icmVha3BvaW50LWNvbmRpdGlvbmFsLXVudmVyaWZpZWQcZGVidWctYnJlYWtwb2ludC1jb25kaXRpb25hbCBkZWJ1Zy1icmVha3BvaW50LWRhdGEtdW52ZXJpZmllZBVkZWJ1Zy1icmVha3BvaW50LWRhdGEkZGVidWctYnJlYWtwb2ludC1mdW5jdGlvbi11bnZlcmlmaWVkGWRlYnVnLWJyZWFrcG9pbnQtZnVuY3Rpb24fZGVidWctYnJlYWtwb2ludC1sb2ctdW52ZXJpZmllZBRkZWJ1Zy1icmVha3BvaW50LWxvZxxkZWJ1Zy1icmVha3BvaW50LXVuc3VwcG9ydGVkDWRlYnVnLWNvbnNvbGUUZGVidWctY29udGludWUtc21hbGwOZGVidWctY29udGludWUOZGVidWctY292ZXJhZ2UQZGVidWctZGlzY29ubmVjdBJkZWJ1Zy1saW5lLWJ5LWxpbmULZGVidWctcGF1c2ULZGVidWctcmVydW4TZGVidWctcmVzdGFydC1mcmFtZQ1kZWJ1Zy1yZXN0YXJ0FmRlYnVnLXJldmVyc2UtY29udGludWUXZGVidWctc3RhY2tmcmFtZS1hY3RpdmUQZGVidWctc3RhY2tmcmFtZQtkZWJ1Zy1zdGFydA9kZWJ1Zy1zdGVwLWJhY2sPZGVidWctc3RlcC1pbnRvDmRlYnVnLXN0ZXAtb3V0D2RlYnVnLXN0ZXAtb3ZlcgpkZWJ1Zy1zdG9wBWRlYnVnEGRlc2t0b3AtZG93bmxvYWQTZGV2aWNlLWNhbWVyYS12aWRlbw1kZXZpY2UtY2FtZXJhDWRldmljZS1tb2JpbGUKZGlmZi1hZGRlZAxkaWZmLWlnbm9yZWQNZGlmZi1tb2RpZmllZA1kaWZmLW11bHRpcGxlDGRpZmYtcmVtb3ZlZAxkaWZmLXJlbmFtZWQLZGlmZi1zaW5nbGUEZGlmZgdkaXNjYXJkBGVkaXQNZWRpdG9yLWxheW91dAhlbGxpcHNpcwxlbXB0eS13aW5kb3cLZXJyb3Itc21hbGwFZXJyb3IHZXhjbHVkZQpleHBhbmQtYWxsBmV4cG9ydApleHRlbnNpb25zCmV5ZS1jbG9zZWQDZXllCGZlZWRiYWNrC2ZpbGUtYmluYXJ5CWZpbGUtY29kZQpmaWxlLW1lZGlhCGZpbGUtcGRmDmZpbGUtc3VibW9kdWxlFmZpbGUtc3ltbGluay1kaXJlY3RvcnkRZmlsZS1zeW1saW5rLWZpbGUIZmlsZS16aXAEZmlsZQVmaWxlcw1maWx0ZXItZmlsbGVkBmZpbHRlcgVmbGFtZQlmb2xkLWRvd24HZm9sZC11cARmb2xkDWZvbGRlci1hY3RpdmUOZm9sZGVyLWxpYnJhcnkNZm9sZGVyLW9wZW5lZAZmb2xkZXIEZ2FtZQRnZWFyBGdpZnQLZ2lzdC1zZWNyZXQKZ2l0LWNvbW1pdAtnaXQtY29tcGFyZQlnaXQtZmV0Y2gJZ2l0LW1lcmdlF2dpdC1wdWxsLXJlcXVlc3QtY2xvc2VkF2dpdC1wdWxsLXJlcXVlc3QtY3JlYXRlFmdpdC1wdWxsLXJlcXVlc3QtZHJhZnQeZ2l0LXB1bGwtcmVxdWVzdC1nby10by1jaGFuZ2VzHGdpdC1wdWxsLXJlcXVlc3QtbmV3LWNoYW5nZXMQZ2l0LXB1bGwtcmVxdWVzdA1naXRodWItYWN0aW9uCmdpdGh1Yi1hbHQPZ2l0aHViLWludmVydGVkBmdpdGh1YgVnbG9iZQpnby10by1maWxlB2dyYWJiZXIKZ3JhcGgtbGVmdApncmFwaC1saW5lDWdyYXBoLXNjYXR0ZXIFZ3JhcGgHZ3JpcHBlchFncm91cC1ieS1yZWYtdHlwZQxoZWFydC1maWxsZWQFaGVhcnQHaGlzdG9yeQRob21lD2hvcml6b250YWwtcnVsZQVodWJvdAVpbmJveAZpbmRlbnQEaW5mbwZpbnNlcnQHaW5zcGVjdAtpc3N1ZS1kcmFmdA5pc3N1ZS1yZW9wZW5lZAZpc3N1ZXMGaXRhbGljBmplcnNleQRqc29uDmtlYmFiLXZlcnRpY2FsA2tleQNsYXcNbGF5ZXJzLWFjdGl2ZQpsYXllcnMtZG90BmxheWVycxdsYXlvdXQtYWN0aXZpdHliYXItbGVmdBhsYXlvdXQtYWN0aXZpdHliYXItcmlnaHQPbGF5b3V0LWNlbnRlcmVkDmxheW91dC1tZW51YmFyE2xheW91dC1wYW5lbC1jZW50ZXIUbGF5b3V0LXBhbmVsLWp1c3RpZnkRbGF5b3V0LXBhbmVsLWxlZnQQbGF5b3V0LXBhbmVsLW9mZhJsYXlvdXQtcGFuZWwtcmlnaHQMbGF5b3V0LXBhbmVsF2xheW91dC1zaWRlYmFyLWxlZnQtb2ZmE2xheW91dC1zaWRlYmFyLWxlZnQYbGF5b3V0LXNpZGViYXItcmlnaHQtb2ZmFGxheW91dC1zaWRlYmFyLXJpZ2h0EGxheW91dC1zdGF0dXNiYXIGbGF5b3V0B2xpYnJhcnkRbGlnaHRidWxiLWF1dG9maXgRbGlnaHRidWxiLXNwYXJrbGUJbGlnaHRidWxiDWxpbmstZXh0ZXJuYWwEbGluawtsaXN0LWZpbHRlcglsaXN0LWZsYXQMbGlzdC1vcmRlcmVkDmxpc3Qtc2VsZWN0aW9uCWxpc3QtdHJlZQ5saXN0LXVub3JkZXJlZApsaXZlLXNoYXJlB2xvYWRpbmcIbG9jYXRpb24KbG9jay1zbWFsbARsb2NrBm1hZ25ldAltYWlsLXJlYWQEbWFpbAptYXAtZmlsbGVkA21hcAhtYXJrZG93bgltZWdhcGhvbmUHbWVudGlvbgRtZW51BW1lcmdlCm1pYy1maWxsZWQDbWljCW1pbGVzdG9uZQZtaXJyb3IMbW9ydGFyLWJvYXJkBG1vdmUQbXVsdGlwbGUtd2luZG93cwVtdXNpYwRtdXRlCG5ldy1maWxlCm5ldy1mb2xkZXIHbmV3bGluZQpuby1uZXdsaW5lBG5vdGURbm90ZWJvb2stdGVtcGxhdGUIbm90ZWJvb2sIb2N0b2ZhY2UMb3Blbi1wcmV2aWV3DG9yZ2FuaXphdGlvbgZvdXRwdXQHcGFja2FnZQhwYWludGNhbgtwYXNzLWZpbGxlZARwYXNzCnBlcnNvbi1hZGQGcGVyc29uBXBpYW5vCXBpZS1jaGFydANwaW4McGlubmVkLWRpcnR5BnBpbm5lZAtwbGF5LWNpcmNsZQRwbGF5BHBsdWcNcHJlc2VydmUtY2FzZQdwcmV2aWV3EHByaW1pdGl2ZS1zcXVhcmUHcHJvamVjdAVwdWxzZQhxdWVzdGlvbgVxdW90ZQtyYWRpby10b3dlcglyZWFjdGlvbnMLcmVjb3JkLWtleXMMcmVjb3JkLXNtYWxsBnJlY29yZARyZWRvCnJlZmVyZW5jZXMHcmVmcmVzaAVyZWdleA9yZW1vdGUtZXhwbG9yZXIGcmVtb3RlBnJlbW92ZQtyZXBsYWNlLWFsbAdyZXBsYWNlBXJlcGx5CnJlcG8tY2xvbmUPcmVwby1mb3JjZS1wdXNoC3JlcG8tZm9ya2VkCXJlcG8tcHVsbAlyZXBvLXB1c2gEcmVwbwZyZXBvcnQPcmVxdWVzdC1jaGFuZ2VzBXJvYm90BnJvY2tldBJyb290LWZvbGRlci1vcGVuZWQLcm9vdC1mb2xkZXIDcnNzBHJ1YnkJcnVuLWFib3ZlB3J1bi1hbGwJcnVuLWJlbG93CnJ1bi1lcnJvcnMIc2F2ZS1hbGwHc2F2ZS1hcwRzYXZlC3NjcmVlbi1mdWxsDXNjcmVlbi1ub3JtYWwMc2VhcmNoLWZ1enp5C3NlYXJjaC1zdG9wBnNlYXJjaARzZW5kEnNlcnZlci1lbnZpcm9ubWVudA5zZXJ2ZXItcHJvY2VzcwZzZXJ2ZXINc2V0dGluZ3MtZ2VhcghzZXR0aW5ncwZzaGllbGQHc2lnbi1pbghzaWduLW91dAZzbWlsZXkFc25ha2UPc29ydC1wcmVjZWRlbmNlDnNvdXJjZS1jb250cm9sDnNwYXJrbGUtZmlsbGVkB3NwYXJrbGUQc3BsaXQtaG9yaXpvbnRhbA5zcGxpdC12ZXJ0aWNhbAhzcXVpcnJlbApzdGFyLWVtcHR5CXN0YXItZnVsbAlzdGFyLWhhbGYLc3RvcC1jaXJjbGUMc3ltYm9sLWFycmF5DnN5bWJvbC1ib29sZWFuDHN5bWJvbC1jbGFzcwxzeW1ib2wtY29sb3IPc3ltYm9sLWNvbnN0YW50EnN5bWJvbC1lbnVtLW1lbWJlcgtzeW1ib2wtZW51bQxzeW1ib2wtZXZlbnQMc3ltYm9sLWZpZWxkC3N5bWJvbC1maWxlEHN5bWJvbC1pbnRlcmZhY2UKc3ltYm9sLWtleQ5zeW1ib2wta2V5d29yZA1zeW1ib2wtbWV0aG9kC3N5bWJvbC1taXNjEHN5bWJvbC1uYW1lc3BhY2UOc3ltYm9sLW51bWVyaWMPc3ltYm9sLW9wZXJhdG9yEHN5bWJvbC1wYXJhbWV0ZXIPc3ltYm9sLXByb3BlcnR5DHN5bWJvbC1ydWxlcg5zeW1ib2wtc25pcHBldA1zeW1ib2wtc3RyaW5nEHN5bWJvbC1zdHJ1Y3R1cmUPc3ltYm9sLXZhcmlhYmxlDHN5bmMtaWdub3JlZARzeW5jBXRhYmxlA3RhZwZ0YXJnZXQIdGFza2xpc3QJdGVsZXNjb3BlDXRlcm1pbmFsLWJhc2gMdGVybWluYWwtY21kD3Rlcm1pbmFsLWRlYmlhbg50ZXJtaW5hbC1saW51eBN0ZXJtaW5hbC1wb3dlcnNoZWxsDXRlcm1pbmFsLXRtdXgPdGVybWluYWwtdWJ1bnR1CHRlcm1pbmFsCXRleHQtc2l6ZQp0aHJlZS1iYXJzEXRodW1ic2Rvd24tZmlsbGVkCnRodW1ic2Rvd24PdGh1bWJzdXAtZmlsbGVkCHRodW1ic3VwBXRvb2xzBXRyYXNoDXRyaWFuZ2xlLWRvd24NdHJpYW5nbGUtbGVmdA50cmlhbmdsZS1yaWdodAt0cmlhbmdsZS11cAd0d2l0dGVyEnR5cGUtaGllcmFyY2h5LXN1YhR0eXBlLWhpZXJhcmNoeS1zdXBlcg50eXBlLWhpZXJhcmNoeQZ1bmZvbGQTdW5ncm91cC1ieS1yZWYtdHlwZQZ1bmxvY2sGdW5tdXRlCnVudmVyaWZpZWQOdmFyaWFibGUtZ3JvdXAPdmVyaWZpZWQtZmlsbGVkCHZlcmlmaWVkCHZlcnNpb25zCXZtLWFjdGl2ZQp2bS1jb25uZWN0CnZtLW91dGxpbmUKdm0tcnVubmluZwJ2bQJ2cgR3YW5kB3dhcm5pbmcFd2F0Y2gKd2hpdGVzcGFjZQp3aG9sZS13b3JkBndpbmRvdwl3b3JkLXdyYXARd29ya3NwYWNlLXRydXN0ZWQRd29ya3NwYWNlLXVua25vd24Td29ya3NwYWNlLXVudHJ1c3RlZAd6b29tLWluCHpvb20tb3V0AAAA) format("truetype")}.codicon[class*=codicon-]{font: 16px/1 codicon;display:inline-block;text-decoration:none;text-rendering:auto;text-align:center;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;user-select:none;-webkit-user-select:none}.codicon-wrench-subaction{opacity:.5}@keyframes codicon-spin{to{transform:rotate(360deg)}}.codicon-sync.codicon-modifier-spin,.codicon-loading.codicon-modifier-spin,.codicon-gear.codicon-modifier-spin,.codicon-notebook-state-executing.codicon-modifier-spin{animation:codicon-spin 1.5s steps(30) infinite}.codicon-modifier-disabled{opacity:.4}.codicon-loading,.codicon-tree-item-loading:before{animation-duration:1s!important;animation-timing-function:cubic-bezier(.53,.21,.29,.67)!important}.monaco-editor .codicon.codicon-symbol-array,.monaco-workbench .codicon.codicon-symbol-array{color:var(--vscode-symbolIcon-arrayForeground)}.monaco-editor .codicon.codicon-symbol-boolean,.monaco-workbench .codicon.codicon-symbol-boolean{color:var(--vscode-symbolIcon-booleanForeground)}.monaco-editor .codicon.codicon-symbol-class,.monaco-workbench .codicon.codicon-symbol-class{color:var(--vscode-symbolIcon-classForeground)}.monaco-editor .codicon.codicon-symbol-method,.monaco-workbench .codicon.codicon-symbol-method{color:var(--vscode-symbolIcon-methodForeground)}.monaco-editor .codicon.codicon-symbol-color,.monaco-workbench .codicon.codicon-symbol-color{color:var(--vscode-symbolIcon-colorForeground)}.monaco-editor .codicon.codicon-symbol-constant,.monaco-workbench .codicon.codicon-symbol-constant{color:var(--vscode-symbolIcon-constantForeground)}.monaco-editor .codicon.codicon-symbol-constructor,.monaco-workbench .codicon.codicon-symbol-constructor{color:var(--vscode-symbolIcon-constructorForeground)}.monaco-editor .codicon.codicon-symbol-value,.monaco-workbench .codicon.codicon-symbol-value,.monaco-editor .codicon.codicon-symbol-enum,.monaco-workbench .codicon.codicon-symbol-enum{color:var(--vscode-symbolIcon-enumeratorForeground)}.monaco-editor .codicon.codicon-symbol-enum-member,.monaco-workbench .codicon.codicon-symbol-enum-member{color:var(--vscode-symbolIcon-enumeratorMemberForeground)}.monaco-editor .codicon.codicon-symbol-event,.monaco-workbench .codicon.codicon-symbol-event{color:var(--vscode-symbolIcon-eventForeground)}.monaco-editor .codicon.codicon-symbol-field,.monaco-workbench .codicon.codicon-symbol-field{color:var(--vscode-symbolIcon-fieldForeground)}.monaco-editor .codicon.codicon-symbol-file,.monaco-workbench .codicon.codicon-symbol-file{color:var(--vscode-symbolIcon-fileForeground)}.monaco-editor .codicon.codicon-symbol-folder,.monaco-workbench .codicon.codicon-symbol-folder{color:var(--vscode-symbolIcon-folderForeground)}.monaco-editor .codicon.codicon-symbol-function,.monaco-workbench .codicon.codicon-symbol-function{color:var(--vscode-symbolIcon-functionForeground)}.monaco-editor .codicon.codicon-symbol-interface,.monaco-workbench .codicon.codicon-symbol-interface{color:var(--vscode-symbolIcon-interfaceForeground)}.monaco-editor .codicon.codicon-symbol-key,.monaco-workbench .codicon.codicon-symbol-key{color:var(--vscode-symbolIcon-keyForeground)}.monaco-editor .codicon.codicon-symbol-keyword,.monaco-workbench .codicon.codicon-symbol-keyword{color:var(--vscode-symbolIcon-keywordForeground)}.monaco-editor .codicon.codicon-symbol-module,.monaco-workbench .codicon.codicon-symbol-module{color:var(--vscode-symbolIcon-moduleForeground)}.monaco-editor .codicon.codicon-symbol-namespace,.monaco-workbench .codicon.codicon-symbol-namespace{color:var(--vscode-symbolIcon-namespaceForeground)}.monaco-editor .codicon.codicon-symbol-null,.monaco-workbench .codicon.codicon-symbol-null{color:var(--vscode-symbolIcon-nullForeground)}.monaco-editor .codicon.codicon-symbol-number,.monaco-workbench .codicon.codicon-symbol-number{color:var(--vscode-symbolIcon-numberForeground)}.monaco-editor .codicon.codicon-symbol-object,.monaco-workbench .codicon.codicon-symbol-object{color:var(--vscode-symbolIcon-objectForeground)}.monaco-editor .codicon.codicon-symbol-operator,.monaco-workbench .codicon.codicon-symbol-operator{color:var(--vscode-symbolIcon-operatorForeground)}.monaco-editor .codicon.codicon-symbol-package,.monaco-workbench .codicon.codicon-symbol-package{color:var(--vscode-symbolIcon-packageForeground)}.monaco-editor .codicon.codicon-symbol-property,.monaco-workbench .codicon.codicon-symbol-property{color:var(--vscode-symbolIcon-propertyForeground)}.monaco-editor .codicon.codicon-symbol-reference,.monaco-workbench .codicon.codicon-symbol-reference{color:var(--vscode-symbolIcon-referenceForeground)}.monaco-editor .codicon.codicon-symbol-snippet,.monaco-workbench .codicon.codicon-symbol-snippet{color:var(--vscode-symbolIcon-snippetForeground)}.monaco-editor .codicon.codicon-symbol-string,.monaco-workbench .codicon.codicon-symbol-string{color:var(--vscode-symbolIcon-stringForeground)}.monaco-editor .codicon.codicon-symbol-struct,.monaco-workbench .codicon.codicon-symbol-struct{color:var(--vscode-symbolIcon-structForeground)}.monaco-editor .codicon.codicon-symbol-text,.monaco-workbench .codicon.codicon-symbol-text{color:var(--vscode-symbolIcon-textForeground)}.monaco-editor .codicon.codicon-symbol-type-parameter,.monaco-workbench .codicon.codicon-symbol-type-parameter{color:var(--vscode-symbolIcon-typeParameterForeground)}.monaco-editor .codicon.codicon-symbol-unit,.monaco-workbench .codicon.codicon-symbol-unit{color:var(--vscode-symbolIcon-unitForeground)}.monaco-editor .codicon.codicon-symbol-variable,.monaco-workbench .codicon.codicon-symbol-variable{color:var(--vscode-symbolIcon-variableForeground)}.monaco-editor .lightBulbWidget{display:flex;align-items:center;justify-content:center}.monaco-editor .lightBulbWidget:hover{cursor:pointer}.monaco-editor .lightBulbWidget.codicon-light-bulb,.monaco-editor .lightBulbWidget.codicon-lightbulb-sparkle{color:var(--vscode-editorLightBulb-foreground)}.monaco-editor .lightBulbWidget.codicon-lightbulb-autofix,.monaco-editor .lightBulbWidget.codicon-lightbulb-sparkle-autofix{color:var(--vscode-editorLightBulbAutoFix-foreground, var(--vscode-editorLightBulb-foreground))}.monaco-editor .lightBulbWidget.codicon-sparkle-filled{color:var(--vscode-editorLightBulbAi-foreground, var(--vscode-icon-foreground))}.monaco-editor .lightBulbWidget:before{position:relative;z-index:2}.monaco-editor .lightBulbWidget:after{position:absolute;top:0;left:0;content:"";display:block;width:100%;height:100%;opacity:.3;background-color:var(--vscode-editor-background);z-index:1}.monaco-editor .monaco-editor-overlaymessage{padding-bottom:8px;z-index:10000}.monaco-editor .monaco-editor-overlaymessage.below{padding-bottom:0;padding-top:8px;z-index:10000}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.monaco-editor .monaco-editor-overlaymessage.fadeIn{animation:fadeIn .15s ease-out}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}.monaco-editor .monaco-editor-overlaymessage.fadeOut{animation:fadeOut .1s ease-out}.monaco-editor .monaco-editor-overlaymessage .message{padding:2px 4px;color:var(--vscode-editorHoverWidget-foreground);background-color:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-inputValidation-infoBorder);border-radius:3px}.monaco-editor .monaco-editor-overlaymessage .message p{margin-block:0px}.monaco-editor .monaco-editor-overlaymessage .message a{color:var(--vscode-textLink-foreground)}.monaco-editor .monaco-editor-overlaymessage .message a:hover{color:var(--vscode-textLink-activeForeground)}.monaco-editor.hc-black .monaco-editor-overlaymessage .message,.monaco-editor.hc-light .monaco-editor-overlaymessage .message{border-width:2px}.monaco-editor .monaco-editor-overlaymessage .anchor{width:0!important;height:0!important;border-color:transparent;border-style:solid;z-index:1000;border-width:8px;position:absolute;left:2px}.monaco-editor .monaco-editor-overlaymessage .anchor.top{border-bottom-color:var(--vscode-inputValidation-infoBorder)}.monaco-editor .monaco-editor-overlaymessage .anchor.below{border-top-color:var(--vscode-inputValidation-infoBorder)}.monaco-editor .monaco-editor-overlaymessage:not(.below) .anchor.top,.monaco-editor .monaco-editor-overlaymessage.below .anchor.below{display:none}.monaco-editor .monaco-editor-overlaymessage.below .anchor.top{display:inherit;top:-8px}.monaco-editor .rendered-markdown kbd{background-color:var(--vscode-keybindingLabel-background);color:var(--vscode-keybindingLabel-foreground);border-style:solid;border-width:1px;border-radius:3px;border-color:var(--vscode-keybindingLabel-border);border-bottom-color:var(--vscode-keybindingLabel-bottomBorder);box-shadow:inset 0 -1px 0 var(--vscode-widget-shadow);vertical-align:middle;padding:1px 3px}.action-widget{font-size:13px;min-width:160px;max-width:80vw;z-index:40;display:block;width:100%;border:1px solid var(--vscode-editorWidget-border)!important;border-radius:2px;background-color:var(--vscode-editorWidget-background);color:var(--vscode-editorWidget-foreground)}.context-view-block{position:fixed;cursor:initial;left:0;top:0;width:100%;height:100%;z-index:-1}.context-view-pointerBlock{position:fixed;cursor:initial;left:0;top:0;width:100%;height:100%;z-index:2}.action-widget .monaco-list{user-select:none;-webkit-user-select:none;border:none!important;border-width:0!important}.action-widget .monaco-list:focus:before{outline:0!important}.action-widget .monaco-list .monaco-scrollable-element{overflow:visible}.action-widget .monaco-list .monaco-list-row{padding:0 10px;white-space:nowrap;cursor:pointer;touch-action:none;width:100%}.action-widget .monaco-list .monaco-list-row.action.focused:not(.option-disabled){background-color:var(--vscode-quickInputList-focusBackground)!important;color:var(--vscode-quickInputList-focusForeground);outline:1px solid var(--vscode-menu-selectionBorder, transparent);outline-offset:-1px}.action-widget .monaco-list-row.group-header{color:var(--vscode-descriptionForeground)!important;font-weight:600}.action-widget .monaco-list .group-header,.action-widget .monaco-list .option-disabled,.action-widget .monaco-list .option-disabled:before,.action-widget .monaco-list .option-disabled .focused,.action-widget .monaco-list .option-disabled .focused:before{cursor:default!important;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;background-color:transparent!important;outline:0 solid!important}.action-widget .monaco-list-row.action{display:flex;gap:6px;align-items:center}.action-widget .monaco-list-row.action.option-disabled,.action-widget .monaco-list:focus .monaco-list-row.focused.action.option-disabled,.action-widget .monaco-list-row.action.option-disabled .codicon,.action-widget .monaco-list:not(.drop-target):not(.dragging) .monaco-list-row:hover:not(.selected):not(.focused).option-disabled{color:var(--vscode-disabledForeground)}.action-widget .monaco-list-row.action:not(.option-disabled) .codicon{color:inherit}.action-widget .monaco-list-row.action .title{flex:1;overflow:hidden;text-overflow:ellipsis}.action-widget .action-widget-action-bar{background-color:var(--vscode-editorHoverWidget-statusBarBackground);border-top:1px solid var(--vscode-editorHoverWidget-border)}.action-widget .action-widget-action-bar:before{display:block;content:"";width:100%}.action-widget .action-widget-action-bar .actions-container{padding:0 8px}.action-widget-action-bar .action-label{color:var(--vscode-textLink-activeForeground);font-size:12px;line-height:22px;padding:0;pointer-events:all}.action-widget-action-bar .action-item{margin-right:16px;pointer-events:none}.action-widget-action-bar .action-label:hover{background-color:transparent!important}.monaco-action-bar .actions-container.highlight-toggled .action-label.checked{background:var(--vscode-actionBar-toggledBackground)!important}.monaco-keybinding{display:flex;align-items:center;line-height:10px}.monaco-keybinding>.monaco-keybinding-key{display:inline-block;border-style:solid;border-width:1px;border-radius:3px;vertical-align:middle;font-size:11px;padding:3px 5px;margin:0 2px}.monaco-keybinding>.monaco-keybinding-key:first-child{margin-left:0}.monaco-keybinding>.monaco-keybinding-key:last-child{margin-right:0}.monaco-keybinding>.monaco-keybinding-key-separator{display:inline-block}.monaco-keybinding>.monaco-keybinding-key-chord-separator{width:6px}.monaco-editor .codelens-decoration{overflow:hidden;display:inline-block;text-overflow:ellipsis;white-space:nowrap;color:var(--vscode-editorCodeLens-foreground);line-height:var(--vscode-editorCodeLens-lineHeight);font-size:var(--vscode-editorCodeLens-fontSize);padding-right:calc(var(--vscode-editorCodeLens-fontSize)*.5);font-feature-settings:var(--vscode-editorCodeLens-fontFeatureSettings);font-family:var(--vscode-editorCodeLens-fontFamily),var(--vscode-editorCodeLens-fontFamilyDefault)}.monaco-editor .codelens-decoration>span,.monaco-editor .codelens-decoration>a{user-select:none;-webkit-user-select:none;white-space:nowrap;vertical-align:sub}.monaco-editor .codelens-decoration>a{text-decoration:none}.monaco-editor .codelens-decoration>a:hover{cursor:pointer;color:var(--vscode-editorLink-activeForeground)!important}.monaco-editor .codelens-decoration>a:hover .codicon{color:var(--vscode-editorLink-activeForeground)!important}.monaco-editor .codelens-decoration .codicon{vertical-align:middle;color:currentColor!important;color:var(--vscode-editorCodeLens-foreground);line-height:var(--vscode-editorCodeLens-lineHeight);font-size:var(--vscode-editorCodeLens-fontSize)}.monaco-editor .codelens-decoration>a:hover .codicon:before{cursor:pointer}@keyframes fadein{0%{opacity:0;visibility:visible}to{opacity:1}}.monaco-editor .codelens-decoration.fadein{animation:fadein .1s linear}.colorpicker-widget{height:190px;user-select:none;-webkit-user-select:none}.colorpicker-color-decoration,.hc-light .colorpicker-color-decoration{border:solid .1em #000;box-sizing:border-box;margin:.1em .2em 0;width:.8em;height:.8em;line-height:.8em;display:inline-block;cursor:pointer}.hc-black .colorpicker-color-decoration,.vs-dark .colorpicker-color-decoration{border:solid .1em #eee}.colorpicker-header{display:flex;height:24px;position:relative;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMTZEaa/1AAAAHUlEQVQYV2PYvXu3JAi7uLiAMaYAjAGTQBPYLQkAa/0Zef3qRswAAAAASUVORK5CYII=);background-size:9px 9px;image-rendering:pixelated}.colorpicker-header .picked-color{width:240px;display:flex;align-items:center;justify-content:center;line-height:24px;cursor:pointer;color:#fff;flex:1;white-space:nowrap;overflow:hidden}.colorpicker-header .picked-color .picked-color-presentation{white-space:nowrap;margin-left:5px;margin-right:5px}.colorpicker-header .picked-color .codicon{color:inherit;font-size:14px}.colorpicker-header .picked-color.light{color:#000}.colorpicker-header .original-color{width:74px;z-index:inherit;cursor:pointer}.standalone-colorpicker{color:var(--vscode-editorHoverWidget-foreground);background-color:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-editorHoverWidget-border)}.colorpicker-header.standalone-colorpicker{border-bottom:none}.colorpicker-header .close-button{cursor:pointer;background-color:var(--vscode-editorHoverWidget-background);border-left:1px solid var(--vscode-editorHoverWidget-border)}.colorpicker-header .close-button-inner-div{width:100%;height:100%;text-align:center}.colorpicker-header .close-button-inner-div:hover{background-color:var(--vscode-toolbar-hoverBackground)}.colorpicker-header .close-icon{padding:3px}.colorpicker-body{display:flex;padding:8px;position:relative}.colorpicker-body .saturation-wrap{overflow:hidden;height:150px;position:relative;min-width:220px;flex:1}.colorpicker-body .saturation-box{height:150px;position:absolute}.colorpicker-body .saturation-selection{width:9px;height:9px;margin:-5px 0 0 -5px;border:1px solid rgb(255,255,255);border-radius:100%;box-shadow:0 0 2px #000c;position:absolute}.colorpicker-body .strip{width:25px;height:150px}.colorpicker-body .standalone-strip{width:25px;height:122px}.colorpicker-body .hue-strip{position:relative;margin-left:8px;cursor:grab;background:linear-gradient(to bottom,red 0%,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%)}.colorpicker-body .opacity-strip{position:relative;margin-left:8px;cursor:grab;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMTZEaa/1AAAAHUlEQVQYV2PYvXu3JAi7uLiAMaYAjAGTQBPYLQkAa/0Zef3qRswAAAAASUVORK5CYII=);background-size:9px 9px;image-rendering:pixelated}.colorpicker-body .strip.grabbing{cursor:grabbing}.colorpicker-body .slider{position:absolute;top:0;left:-2px;width:calc(100% + 4px);height:4px;box-sizing:border-box;border:1px solid rgba(255,255,255,.71);box-shadow:0 0 1px #000000d9}.colorpicker-body .strip .overlay{height:150px;pointer-events:none}.colorpicker-body .standalone-strip .standalone-overlay{height:122px;pointer-events:none}.standalone-colorpicker-body{display:block;border:1px solid transparent;border-bottom:1px solid var(--vscode-editorHoverWidget-border);overflow:hidden}.colorpicker-body .insert-button{position:absolute;height:20px;width:58px;padding:0;right:8px;bottom:8px;background:var(--vscode-button-background);color:var(--vscode-button-foreground);border-radius:2px;border:none;cursor:pointer}.colorpicker-body .insert-button:hover{background:var(--vscode-button-hoverBackground)}.monaco-editor .goto-definition-link{text-decoration:underline;cursor:pointer;color:var(--vscode-editorLink-activeForeground)!important}.monaco-editor .peekview-widget .head{box-sizing:border-box;display:flex;justify-content:space-between;flex-wrap:nowrap}.monaco-editor .peekview-widget .head .peekview-title{display:flex;align-items:baseline;font-size:13px;margin-left:20px;min-width:0;text-overflow:ellipsis;overflow:hidden}.monaco-editor .peekview-widget .head .peekview-title.clickable{cursor:pointer}.monaco-editor .peekview-widget .head .peekview-title .dirname:not(:empty){font-size:.9em;margin-left:.5em}.monaco-editor .peekview-widget .head .peekview-title .meta{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.monaco-editor .peekview-widget .head .peekview-title .dirname,.monaco-editor .peekview-widget .head .peekview-title .filename{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.monaco-editor .peekview-widget .head .peekview-title .meta:not(:empty):before{content:"-";padding:0 .3em}.monaco-editor .peekview-widget .head .peekview-actions{flex:1;text-align:right;padding-right:2px}.monaco-editor .peekview-widget .head .peekview-actions>.monaco-action-bar{display:inline-block}.monaco-editor .peekview-widget .head .peekview-actions>.monaco-action-bar,.monaco-editor .peekview-widget .head .peekview-actions>.monaco-action-bar>.actions-container{height:100%}.monaco-editor .peekview-widget>.body{border-top:1px solid;position:relative}.monaco-editor .peekview-widget .head .peekview-title .codicon{margin-right:4px;align-self:center}.monaco-editor .peekview-widget .monaco-list .monaco-list-row.focused .codicon{color:inherit!important}.monaco-editor .zone-widget{position:absolute;z-index:10}.monaco-editor .zone-widget .zone-widget-container{border-top-style:solid;border-bottom-style:solid;border-top-width:0;border-bottom-width:0;position:relative}.monaco-dropdown{height:100%;padding:0}.monaco-dropdown>.dropdown-label{cursor:pointer;height:100%;display:flex;align-items:center;justify-content:center}.monaco-dropdown>.dropdown-label>.action-label.disabled{cursor:default}.monaco-dropdown-with-primary{display:flex!important;flex-direction:row;border-radius:5px}.monaco-dropdown-with-primary>.action-container>.action-label{margin-right:0}.monaco-dropdown-with-primary>.dropdown-action-container>.monaco-dropdown>.dropdown-label .codicon[class*=codicon-]{font-size:12px;padding-left:0;padding-right:0;line-height:16px;margin-left:-3px}.monaco-dropdown-with-primary>.dropdown-action-container>.monaco-dropdown>.dropdown-label>.action-label{display:block;background-size:16px;background-position:center center;background-repeat:no-repeat}.monaco-action-bar .action-item.menu-entry .action-label.icon{width:16px;height:16px;background-repeat:no-repeat;background-position:50%;background-size:16px}.monaco-dropdown-with-default{display:flex!important;flex-direction:row;border-radius:5px}.monaco-dropdown-with-default>.action-container>.action-label{margin-right:0}.monaco-dropdown-with-default>.action-container.menu-entry>.action-label.icon{width:16px;height:16px;background-repeat:no-repeat;background-position:50%;background-size:16px}.monaco-dropdown-with-default>.dropdown-action-container>.monaco-dropdown>.dropdown-label .codicon[class*=codicon-]{font-size:12px;padding-left:0;padding-right:0;line-height:16px;margin-left:-3px}.monaco-dropdown-with-default>.dropdown-action-container>.monaco-dropdown>.dropdown-label>.action-label{display:block;background-size:16px;background-position:center center;background-repeat:no-repeat}.monaco-split-view2{position:relative;width:100%;height:100%}.monaco-split-view2>.sash-container{position:absolute;width:100%;height:100%;pointer-events:none}.monaco-split-view2>.sash-container>.monaco-sash{pointer-events:initial}.monaco-split-view2>.monaco-scrollable-element{width:100%;height:100%}.monaco-split-view2>.monaco-scrollable-element>.split-view-container{width:100%;height:100%;white-space:nowrap;position:relative}.monaco-split-view2>.monaco-scrollable-element>.split-view-container>.split-view-view{white-space:initial;position:absolute}.monaco-split-view2>.monaco-scrollable-element>.split-view-container>.split-view-view:not(.visible){display:none}.monaco-split-view2.vertical>.monaco-scrollable-element>.split-view-container>.split-view-view{width:100%}.monaco-split-view2.horizontal>.monaco-scrollable-element>.split-view-container>.split-view-view{height:100%}.monaco-split-view2.separator-border>.monaco-scrollable-element>.split-view-container>.split-view-view:not(:first-child):before{content:" ";position:absolute;top:0;left:0;z-index:5;pointer-events:none;background-color:var(--separator-border)}.monaco-split-view2.separator-border.horizontal>.monaco-scrollable-element>.split-view-container>.split-view-view:not(:first-child):before{height:100%;width:1px}.monaco-split-view2.separator-border.vertical>.monaco-scrollable-element>.split-view-container>.split-view-view:not(:first-child):before{height:1px;width:100%}.monaco-table{display:flex;flex-direction:column;position:relative;height:100%;width:100%;white-space:nowrap;overflow:hidden}.monaco-table>.monaco-split-view2{border-bottom:1px solid transparent}.monaco-table>.monaco-list{flex:1}.monaco-table-tr{display:flex;height:100%}.monaco-table-th{width:100%;height:100%;font-weight:700;overflow:hidden;text-overflow:ellipsis}.monaco-table-th,.monaco-table-td{box-sizing:border-box;flex-shrink:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.monaco-table>.monaco-split-view2 .monaco-sash.vertical:before{content:"";position:absolute;left:calc(var(--vscode-sash-size) / 2);width:0;border-left:1px solid transparent}.monaco-workbench:not(.reduce-motion) .monaco-table>.monaco-split-view2,.monaco-workbench:not(.reduce-motion) .monaco-table>.monaco-split-view2 .monaco-sash.vertical:before{transition:border-color .2s ease-out}.monaco-custom-toggle{margin-left:2px;float:left;cursor:pointer;overflow:hidden;width:20px;height:20px;border-radius:3px;border:1px solid transparent;padding:1px;box-sizing:border-box;user-select:none;-webkit-user-select:none}.monaco-custom-toggle:hover{background-color:var(--vscode-inputOption-hoverBackground)}.hc-black .monaco-custom-toggle:hover,.hc-light .monaco-custom-toggle:hover{border:1px dashed var(--vscode-focusBorder)}.hc-black .monaco-custom-toggle,.hc-light .monaco-custom-toggle,.hc-black .monaco-custom-toggle:hover,.hc-light .monaco-custom-toggle:hover{background:none}.monaco-custom-toggle.monaco-checkbox{height:18px;width:18px;border:1px solid transparent;border-radius:3px;margin-right:9px;margin-left:0;padding:0;opacity:1;background-size:16px!important}.monaco-action-bar .checkbox-action-item{display:flex;align-items:center}.monaco-action-bar .checkbox-action-item>.monaco-custom-toggle.monaco-checkbox{margin-right:4px}.monaco-action-bar .checkbox-action-item>.checkbox-label{font-size:12px}.monaco-custom-toggle.monaco-checkbox:not(.checked):before{visibility:hidden}.monaco-inputbox{position:relative;display:block;padding:0;box-sizing:border-box;border-radius:2px;font-size:inherit}.monaco-inputbox>.ibwrapper>.input,.monaco-inputbox>.ibwrapper>.mirror{padding:4px 6px}.monaco-inputbox>.ibwrapper{position:relative;width:100%;height:100%}.monaco-inputbox>.ibwrapper>.input{display:inline-block;box-sizing:border-box;width:100%;height:100%;line-height:inherit;border:none;font-family:inherit;font-size:inherit;resize:none;color:inherit}.monaco-inputbox>.ibwrapper>input{text-overflow:ellipsis}.monaco-inputbox>.ibwrapper>textarea.input{display:block;scrollbar-width:none;outline:none}.monaco-inputbox>.ibwrapper>textarea.input::-webkit-scrollbar{display:none}.monaco-inputbox>.ibwrapper>textarea.input.empty{white-space:nowrap}.monaco-inputbox>.ibwrapper>.mirror{position:absolute;display:inline-block;width:100%;top:0;left:0;box-sizing:border-box;white-space:pre-wrap;visibility:hidden;word-wrap:break-word}.monaco-inputbox-container{text-align:right}.monaco-inputbox-container .monaco-inputbox-message{display:inline-block;overflow:hidden;text-align:left;width:100%;box-sizing:border-box;padding:.4em;font-size:12px;line-height:17px;margin-top:-1px;word-wrap:break-word}.monaco-inputbox .monaco-action-bar{position:absolute;right:2px;top:4px}.monaco-inputbox .monaco-action-bar .action-item{margin-left:2px}.monaco-inputbox .monaco-action-bar .action-item .codicon{background-repeat:no-repeat;width:16px;height:16px}.monaco-findInput{position:relative}.monaco-findInput .monaco-inputbox{font-size:13px;width:100%}.monaco-findInput>.controls{position:absolute;top:3px;right:2px}.vs .monaco-findInput.disabled{background-color:#e1e1e1}.vs-dark .monaco-findInput.disabled{background-color:#333}.monaco-findInput.highlight-0 .controls,.hc-light .monaco-findInput.highlight-0 .controls{animation:monaco-findInput-highlight-0 .1s linear 0s}.monaco-findInput.highlight-1 .controls,.hc-light .monaco-findInput.highlight-1 .controls{animation:monaco-findInput-highlight-1 .1s linear 0s}.hc-black .monaco-findInput.highlight-0 .controls,.vs-dark .monaco-findInput.highlight-0 .controls{animation:monaco-findInput-highlight-dark-0 .1s linear 0s}.hc-black .monaco-findInput.highlight-1 .controls,.vs-dark .monaco-findInput.highlight-1 .controls{animation:monaco-findInput-highlight-dark-1 .1s linear 0s}@keyframes monaco-findInput-highlight-0{0%{background:#fdff00cc}to{background:transparent}}@keyframes monaco-findInput-highlight-1{0%{background:#fdff00cc}99%{background:transparent}}@keyframes monaco-findInput-highlight-dark-0{0%{background:#ffffff70}to{background:transparent}}@keyframes monaco-findInput-highlight-dark-1{0%{background:#ffffff70}99%{background:transparent}}.monaco-tl-row{display:flex;height:100%;align-items:center;position:relative}.monaco-tl-row.disabled{cursor:default}.monaco-tl-indent{height:100%;position:absolute;top:0;left:16px;pointer-events:none}.hide-arrows .monaco-tl-indent{left:12px}.monaco-tl-indent>.indent-guide{display:inline-block;box-sizing:border-box;height:100%;border-left:1px solid transparent}.monaco-workbench:not(.reduce-motion) .monaco-tl-indent>.indent-guide{transition:border-color .1s linear}.monaco-tl-twistie,.monaco-tl-contents{height:100%}.monaco-tl-twistie{font-size:10px;text-align:right;padding-right:6px;flex-shrink:0;width:16px;display:flex!important;align-items:center;justify-content:center;transform:translate(3px)}.monaco-tl-contents{flex:1;overflow:hidden}.monaco-tl-twistie:before{border-radius:20px}.monaco-tl-twistie.collapsed:before{transform:rotate(-90deg)}.monaco-tl-twistie.codicon-tree-item-loading:before{animation:codicon-spin 1.25s steps(30) infinite}.monaco-tree-type-filter{position:absolute;top:0;display:flex;padding:3px;max-width:200px;z-index:100;margin:0 6px;border:1px solid var(--vscode-widget-border);border-bottom-left-radius:4px;border-bottom-right-radius:4px}.monaco-workbench:not(.reduce-motion) .monaco-tree-type-filter{transition:top .3s}.monaco-tree-type-filter.disabled{top:-40px!important}.monaco-tree-type-filter-grab{display:flex!important;align-items:center;justify-content:center;cursor:grab;margin-right:2px}.monaco-tree-type-filter-grab.grabbing{cursor:grabbing}.monaco-tree-type-filter-input{flex:1}.monaco-tree-type-filter-input .monaco-inputbox{height:23px}.monaco-tree-type-filter-input .monaco-inputbox>.ibwrapper>.input,.monaco-tree-type-filter-input .monaco-inputbox>.ibwrapper>.mirror{padding:2px 4px}.monaco-tree-type-filter-input .monaco-findInput>.controls{top:2px}.monaco-tree-type-filter-actionbar{margin-left:4px}.monaco-tree-type-filter-actionbar .monaco-action-bar .action-label{padding:2px}.monaco-list .monaco-scrollable-element .monaco-tree-sticky-container{position:absolute;top:0;left:0;width:100%;height:0;z-index:13;background-color:var(--vscode-sideBar-background)}.monaco-list .monaco-scrollable-element .monaco-tree-sticky-container .monaco-tree-sticky-row.monaco-list-row{position:absolute;width:100%;opacity:1!important;overflow:hidden;background-color:var(--vscode-sideBar-background)}.monaco-list .monaco-scrollable-element .monaco-tree-sticky-container .monaco-tree-sticky-row:hover{background-color:var(--vscode-list-hoverBackground)!important;cursor:pointer}.monaco-list .monaco-scrollable-element .monaco-tree-sticky-container .monaco-tree-sticky-container-shadow{position:absolute;bottom:-3px;left:0;height:3px;width:100%;box-shadow:var(--vscode-scrollbar-shadow) 0 6px 6px -6px inset}.monaco-editor .zone-widget .zone-widget-container.reference-zone-widget{border-top-width:1px;border-bottom-width:1px}.monaco-editor .reference-zone-widget .inline{display:inline-block;vertical-align:top}.monaco-editor .reference-zone-widget .messages{height:100%;width:100%;text-align:center;padding:3em 0}.monaco-editor .reference-zone-widget .ref-tree{line-height:23px;background-color:var(--vscode-peekViewResult-background);color:var(--vscode-peekViewResult-lineForeground)}.monaco-editor .reference-zone-widget .ref-tree .reference{text-overflow:ellipsis;overflow:hidden}.monaco-editor .reference-zone-widget .ref-tree .reference-file{display:inline-flex;width:100%;height:100%;color:var(--vscode-peekViewResult-fileForeground)}.monaco-editor .reference-zone-widget .ref-tree .monaco-list:focus .selected .reference-file{color:inherit!important}.monaco-editor .reference-zone-widget .ref-tree .monaco-list:focus .monaco-list-rows>.monaco-list-row.selected:not(.highlighted){background-color:var(--vscode-peekViewResult-selectionBackground);color:var(--vscode-peekViewResult-selectionForeground)!important}.monaco-editor .reference-zone-widget .ref-tree .reference-file .count{margin-right:12px;margin-left:auto}.monaco-editor .reference-zone-widget .ref-tree .referenceMatch .highlight{background-color:var(--vscode-peekViewResult-matchHighlightBackground)}.monaco-editor .reference-zone-widget .preview .reference-decoration{background-color:var(--vscode-peekViewEditor-matchHighlightBackground);border:2px solid var(--vscode-peekViewEditor-matchHighlightBorder);box-sizing:border-box}.monaco-editor .reference-zone-widget .preview .monaco-editor .monaco-editor-background,.monaco-editor .reference-zone-widget .preview .monaco-editor .inputarea.ime-input{background-color:var(--vscode-peekViewEditor-background)}.monaco-editor .reference-zone-widget .preview .monaco-editor .margin{background-color:var(--vscode-peekViewEditorGutter-background)}.monaco-editor.hc-black .reference-zone-widget .ref-tree .reference-file,.monaco-editor.hc-light .reference-zone-widget .ref-tree .reference-file{font-weight:700}.monaco-editor.hc-black .reference-zone-widget .ref-tree .referenceMatch .highlight,.monaco-editor.hc-light .reference-zone-widget .ref-tree .referenceMatch .highlight{border:1px dotted var(--vscode-contrastActiveBorder, transparent);box-sizing:border-box}.monaco-count-badge{padding:3px 6px;border-radius:11px;font-size:11px;min-width:18px;min-height:18px;line-height:11px;font-weight:400;text-align:center;display:inline-block;box-sizing:border-box}.monaco-count-badge.long{padding:2px 3px;border-radius:2px;min-height:auto;line-height:normal}.monaco-icon-label{display:flex;overflow:hidden;text-overflow:ellipsis}.monaco-icon-label:before{background-size:16px;background-position:left center;background-repeat:no-repeat;padding-right:6px;width:16px;height:22px;line-height:inherit!important;display:inline-block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:top;flex-shrink:0}.monaco-icon-label-container.disabled{color:var(--vscode-disabledForeground)}.monaco-icon-label>.monaco-icon-label-container{min-width:0;overflow:hidden;text-overflow:ellipsis;flex:1}.monaco-icon-label>.monaco-icon-label-container>.monaco-icon-name-container>.label-name{color:inherit;white-space:pre}.monaco-icon-label>.monaco-icon-label-container>.monaco-icon-name-container>.label-name>.label-separator{margin:0 2px;opacity:.5}.monaco-icon-label>.monaco-icon-label-container>.monaco-icon-suffix-container>.label-suffix{opacity:.7;white-space:pre}.monaco-icon-label>.monaco-icon-label-container>.monaco-icon-description-container>.label-description{opacity:.7;margin-left:.5em;font-size:.9em;white-space:pre}.monaco-icon-label.nowrap>.monaco-icon-label-container>.monaco-icon-description-container>.label-description{white-space:nowrap}.vs .monaco-icon-label>.monaco-icon-label-container>.monaco-icon-description-container>.label-description{opacity:.95}.monaco-icon-label.italic>.monaco-icon-label-container>.monaco-icon-name-container>.label-name,.monaco-icon-label.italic>.monaco-icon-label-container>.monaco-icon-description-container>.label-description{font-style:italic}.monaco-icon-label.deprecated{text-decoration:line-through;opacity:.66}.monaco-icon-label.italic:after{font-style:italic}.monaco-icon-label.strikethrough>.monaco-icon-label-container>.monaco-icon-name-container>.label-name,.monaco-icon-label.strikethrough>.monaco-icon-label-container>.monaco-icon-description-container>.label-description{text-decoration:line-through}.monaco-icon-label:after{opacity:.75;font-size:90%;font-weight:600;margin:auto 16px 0 5px;text-align:center}.monaco-list:focus .selected .monaco-icon-label,.monaco-list:focus .selected .monaco-icon-label:after{color:inherit!important}.monaco-list-row.focused.selected .label-description,.monaco-list-row.selected .label-description{opacity:.8}.monaco-hover{cursor:default;position:absolute;overflow:hidden;user-select:text;-webkit-user-select:text;box-sizing:border-box;animation:fadein .1s linear;line-height:1.5em;white-space:var(--vscode-hover-whiteSpace, normal)}.monaco-hover.hidden{display:none}.monaco-hover a:hover:not(.disabled){cursor:pointer}.monaco-hover .hover-contents:not(.html-hover-contents){padding:4px 8px}.monaco-hover .markdown-hover>.hover-contents:not(.code-hover-contents){max-width:var(--vscode-hover-maxWidth, 500px);word-wrap:break-word}.monaco-hover .markdown-hover>.hover-contents:not(.code-hover-contents) hr{min-width:100%}.monaco-hover p,.monaco-hover .code,.monaco-hover ul,.monaco-hover h1,.monaco-hover h2,.monaco-hover h3,.monaco-hover h4,.monaco-hover h5,.monaco-hover h6{margin:8px 0}.monaco-hover h1,.monaco-hover h2,.monaco-hover h3,.monaco-hover h4,.monaco-hover h5,.monaco-hover h6{line-height:1.1}.monaco-hover code{font-family:var(--monaco-monospace-font)}.monaco-hover hr{box-sizing:border-box;border-left:0px;border-right:0px;margin:4px -8px -4px;height:1px}.monaco-hover p:first-child,.monaco-hover .code:first-child,.monaco-hover ul:first-child{margin-top:0}.monaco-hover p:last-child,.monaco-hover .code:last-child,.monaco-hover ul:last-child{margin-bottom:0}.monaco-hover ul,.monaco-hover ol{padding-left:20px}.monaco-hover li>p{margin-bottom:0}.monaco-hover li>ul{margin-top:0}.monaco-hover code{border-radius:3px;padding:0 .4em}.monaco-hover .monaco-tokenized-source{white-space:var(--vscode-hover-sourceWhiteSpace, pre-wrap)}.monaco-hover .hover-row.status-bar{font-size:12px;line-height:22px}.monaco-hover .hover-row.status-bar .info{font-style:italic;padding:0 8px}.monaco-hover .hover-row.status-bar .actions{display:flex;padding:0 8px}.monaco-hover .hover-row.status-bar .actions .action-container{margin-right:16px;cursor:pointer}.monaco-hover .hover-row.status-bar .actions .action-container .action .icon{padding-right:4px}.monaco-hover .markdown-hover .hover-contents .codicon{color:inherit;font-size:inherit;vertical-align:middle}.monaco-hover .hover-contents a.code-link:hover,.monaco-hover .hover-contents a.code-link{color:inherit}.monaco-hover .hover-contents a.code-link:before{content:"("}.monaco-hover .hover-contents a.code-link:after{content:")"}.monaco-hover .hover-contents a.code-link>span{text-decoration:underline;border-bottom:1px solid transparent;text-underline-position:under;color:var(--vscode-textLink-foreground)}.monaco-hover .hover-contents a.code-link>span:hover{color:var(--vscode-textLink-activeForeground)}.monaco-hover .markdown-hover .hover-contents:not(.code-hover-contents):not(.html-hover-contents) span{margin-bottom:4px;display:inline-block}.monaco-hover-content .action-container a{-webkit-user-select:none;user-select:none}.monaco-hover-content .action-container.disabled{pointer-events:none;opacity:.4;cursor:default}.monaco-editor .peekview-widget .head .peekview-title .severity-icon{display:inline-block;vertical-align:text-top;margin-right:4px}.monaco-editor .marker-widget{text-overflow:ellipsis;white-space:nowrap}.monaco-editor .marker-widget>.stale{opacity:.6;font-style:italic}.monaco-editor .marker-widget .title{display:inline-block;padding-right:5px}.monaco-editor .marker-widget .descriptioncontainer{position:absolute;white-space:pre;user-select:text;-webkit-user-select:text;padding:8px 12px 0 20px}.monaco-editor .marker-widget .descriptioncontainer .message{display:flex;flex-direction:column}.monaco-editor .marker-widget .descriptioncontainer .message .details{padding-left:6px}.monaco-editor .marker-widget .descriptioncontainer .message .source,.monaco-editor .marker-widget .descriptioncontainer .message span.code{opacity:.6}.monaco-editor .marker-widget .descriptioncontainer .message a.code-link{opacity:.6;color:inherit}.monaco-editor .marker-widget .descriptioncontainer .message a.code-link:before{content:"("}.monaco-editor .marker-widget .descriptioncontainer .message a.code-link:after{content:")"}.monaco-editor .marker-widget .descriptioncontainer .message a.code-link>span{text-decoration:underline;border-bottom:1px solid transparent;text-underline-position:under;color:var(--vscode-textLink-foreground)}.monaco-editor .marker-widget .descriptioncontainer .message a.code-link>span{color:var(--vscode-textLink-activeForeground)}.monaco-editor .marker-widget .descriptioncontainer .filename{cursor:pointer}.monaco-editor .zone-widget .codicon.codicon-error,.markers-panel .marker-icon.error,.markers-panel .marker-icon .codicon.codicon-error,.text-search-provider-messages .providerMessage .codicon.codicon-error,.extensions-viewlet>.extensions .codicon.codicon-error,.extension-editor .codicon.codicon-error,.preferences-editor .codicon.codicon-error{color:var(--vscode-problemsErrorIcon-foreground)}.monaco-editor .zone-widget .codicon.codicon-warning,.markers-panel .marker-icon.warning,.markers-panel .marker-icon .codicon.codicon-warning,.text-search-provider-messages .providerMessage .codicon.codicon-warning,.extensions-viewlet>.extensions .codicon.codicon-warning,.extension-editor .codicon.codicon-warning,.preferences-editor .codicon.codicon-warning{color:var(--vscode-problemsWarningIcon-foreground)}.monaco-editor .zone-widget .codicon.codicon-info,.markers-panel .marker-icon.info,.markers-panel .marker-icon .codicon.codicon-info,.text-search-provider-messages .providerMessage .codicon.codicon-info,.extensions-viewlet>.extensions .codicon.codicon-info,.extension-editor .codicon.codicon-info,.preferences-editor .codicon.codicon-info{color:var(--vscode-problemsInfoIcon-foreground)}.monaco-editor .inlineSuggestionsHints.withBorder{z-index:39;color:var(--vscode-editorHoverWidget-foreground);background-color:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-editorHoverWidget-border)}.monaco-editor .inlineSuggestionsHints a,.monaco-editor .inlineSuggestionsHints a:hover{color:var(--vscode-foreground)}.monaco-editor .inlineSuggestionsHints .keybinding{display:flex;margin-left:4px;opacity:.6}.monaco-editor .inlineSuggestionsHints .keybinding .monaco-keybinding-key{font-size:8px;padding:2px 3px}.monaco-editor .inlineSuggestionsHints .availableSuggestionCount a{display:flex;min-width:19px;justify-content:center}.monaco-editor .inlineSuggestionStatusBarItemLabel{margin-right:2px}.monaco-toolbar{height:100%}.monaco-toolbar .toolbar-toggle-more{display:inline-block;padding:0}.monaco-editor .hoverHighlight{background-color:var(--vscode-editor-hoverHighlightBackground)}.monaco-editor .monaco-hover{color:var(--vscode-editorHoverWidget-foreground);background-color:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-editorHoverWidget-border);border-radius:3px}.monaco-editor .monaco-hover a{color:var(--vscode-textLink-foreground)}.monaco-editor .monaco-hover a:hover{color:var(--vscode-textLink-activeForeground)}.monaco-editor .monaco-hover .hover-row .actions{background-color:var(--vscode-editorHoverWidget-statusBarBackground)}.monaco-editor .monaco-hover code{background-color:var(--vscode-textCodeBlock-background)}.monaco-editor.vs .dnd-target,.monaco-editor.hc-light .dnd-target{border-right:2px dotted black;color:#fff}.monaco-editor.vs-dark .dnd-target{border-right:2px dotted #AEAFAD;color:#51504f}.monaco-editor.hc-black .dnd-target{border-right:2px dotted #fff;color:#000}.monaco-editor.mouse-default .view-lines,.monaco-editor.vs-dark.mac.mouse-default .view-lines,.monaco-editor.hc-black.mac.mouse-default .view-lines,.monaco-editor.hc-light.mac.mouse-default .view-lines{cursor:default}.monaco-editor.mouse-copy .view-lines,.monaco-editor.vs-dark.mac.mouse-copy .view-lines,.monaco-editor.hc-black.mac.mouse-copy .view-lines,.monaco-editor.hc-light.mac.mouse-copy .view-lines{cursor:copy}.inline-editor-progress-decoration{display:inline-block;width:1em;height:1em}.inline-progress-widget{display:flex!important;justify-content:center;align-items:center}.inline-progress-widget .icon{font-size:80%!important}.inline-progress-widget:hover .icon{font-size:90%!important;animation:none}.inline-progress-widget:hover .icon:before{content:""}.monaco-text-button{box-sizing:border-box;display:flex;width:100%;padding:4px;border-radius:2px;text-align:center;cursor:pointer;justify-content:center;align-items:center;border:1px solid var(--vscode-button-border, transparent);line-height:18px}.monaco-text-button:focus{outline-offset:2px!important}.monaco-text-button:hover{text-decoration:none!important}.monaco-button.disabled:focus,.monaco-button.disabled{opacity:.4!important;cursor:default}.monaco-text-button .codicon{margin:0 .2em;color:inherit!important}.monaco-text-button.monaco-text-button-with-short-label{flex-direction:row;flex-wrap:wrap;padding:0 4px;overflow:hidden;height:28px}.monaco-text-button.monaco-text-button-with-short-label>.monaco-button-label{flex-basis:100%}.monaco-text-button.monaco-text-button-with-short-label>.monaco-button-label-short{flex-grow:1;width:0;overflow:hidden}.monaco-text-button.monaco-text-button-with-short-label>.monaco-button-label,.monaco-text-button.monaco-text-button-with-short-label>.monaco-button-label-short{display:flex;justify-content:center;align-items:center;font-weight:400;font-style:inherit;padding:4px 0}.monaco-button-dropdown{display:flex;cursor:pointer}.monaco-button-dropdown.disabled{cursor:default}.monaco-button-dropdown>.monaco-button:focus{outline-offset:-1px!important}.monaco-button-dropdown.disabled>.monaco-button.disabled,.monaco-button-dropdown.disabled>.monaco-button.disabled:focus,.monaco-button-dropdown.disabled>.monaco-button-dropdown-separator{opacity:.4!important}.monaco-button-dropdown>.monaco-button.monaco-text-button{border-right-width:0!important}.monaco-button-dropdown .monaco-button-dropdown-separator{padding:4px 0;cursor:default}.monaco-button-dropdown .monaco-button-dropdown-separator>div{height:100%;width:1px}.monaco-button-dropdown>.monaco-button.monaco-dropdown-button{border:1px solid var(--vscode-button-border, transparent);border-left-width:0!important;border-radius:0 2px 2px 0;display:flex;align-items:center}.monaco-button-dropdown>.monaco-button.monaco-text-button{border-radius:2px 0 0 2px}.monaco-description-button{display:flex;flex-direction:column;align-items:center;margin:4px 5px}.monaco-description-button .monaco-button-description{font-style:italic;font-size:11px;padding:4px 20px}.monaco-description-button .monaco-button-label,.monaco-description-button .monaco-button-description{display:flex;justify-content:center;align-items:center}.monaco-description-button .monaco-button-label>.codicon,.monaco-description-button .monaco-button-description>.codicon{margin:0 .2em;color:inherit!important}.monaco-button.default-colors,.monaco-button-dropdown.default-colors>.monaco-button{color:var(--vscode-button-foreground);background-color:var(--vscode-button-background)}.monaco-button.default-colors:hover,.monaco-button-dropdown.default-colors>.monaco-button:hover{background-color:var(--vscode-button-hoverBackground)}.monaco-button.default-colors.secondary,.monaco-button-dropdown.default-colors>.monaco-button.secondary{color:var(--vscode-button-secondaryForeground);background-color:var(--vscode-button-secondaryBackground)}.monaco-button.default-colors.secondary:hover,.monaco-button-dropdown.default-colors>.monaco-button.secondary:hover{background-color:var(--vscode-button-secondaryHoverBackground)}.monaco-button-dropdown.default-colors .monaco-button-dropdown-separator{background-color:var(--vscode-button-background);border-top:1px solid var(--vscode-button-border);border-bottom:1px solid var(--vscode-button-border)}.monaco-button-dropdown.default-colors .monaco-button.secondary+.monaco-button-dropdown-separator{background-color:var(--vscode-button-secondaryBackground)}.monaco-button-dropdown.default-colors .monaco-button-dropdown-separator>div{background-color:var(--vscode-button-separator)}.post-edit-widget{box-shadow:0 0 8px 2px var(--vscode-widget-shadow);border:1px solid var(--vscode-widget-border, transparent);border-radius:4px;background-color:var(--vscode-editorWidget-background);overflow:hidden}.post-edit-widget .monaco-button{padding:2px;border:none;border-radius:0}.post-edit-widget .monaco-button:hover{background-color:var(--vscode-button-secondaryHoverBackground)!important}.post-edit-widget .monaco-button .codicon{margin:0}.monaco-editor .findOptionsWidget{background-color:var(--vscode-editorWidget-background);color:var(--vscode-editorWidget-foreground);box-shadow:0 0 8px 2px var(--vscode-widget-shadow);border:2px solid var(--vscode-contrastBorder)}.monaco-editor .find-widget{position:absolute;z-index:35;height:33px;overflow:hidden;line-height:19px;transition:transform .2s linear;padding:0 4px;box-sizing:border-box;transform:translateY(calc(-100% - 10px));border-bottom-left-radius:4px;border-bottom-right-radius:4px}.monaco-workbench.reduce-motion .monaco-editor .find-widget{transition:transform 0ms linear}.monaco-editor .find-widget textarea{margin:0}.monaco-editor .find-widget.hiddenEditor{display:none}.monaco-editor .find-widget.replaceToggled>.replace-part{display:flex}.monaco-editor .find-widget.visible{transform:translateY(0)}.monaco-editor .find-widget .monaco-inputbox.synthetic-focus{outline:1px solid -webkit-focus-ring-color;outline-offset:-1px}.monaco-editor .find-widget .monaco-inputbox .input{background-color:transparent;min-height:0}.monaco-editor .find-widget .monaco-findInput .input{font-size:13px}.monaco-editor .find-widget>.find-part,.monaco-editor .find-widget>.replace-part{margin:3px 25px 0 17px;font-size:12px;display:flex}.monaco-editor .find-widget>.find-part .monaco-inputbox,.monaco-editor .find-widget>.replace-part .monaco-inputbox{min-height:25px}.monaco-editor .find-widget>.replace-part .monaco-inputbox>.ibwrapper>.mirror{padding-right:22px}.monaco-editor .find-widget>.find-part .monaco-inputbox>.ibwrapper>.input,.monaco-editor .find-widget>.find-part .monaco-inputbox>.ibwrapper>.mirror,.monaco-editor .find-widget>.replace-part .monaco-inputbox>.ibwrapper>.input,.monaco-editor .find-widget>.replace-part .monaco-inputbox>.ibwrapper>.mirror{padding-top:2px;padding-bottom:2px}.monaco-editor .find-widget>.find-part .find-actions{height:25px;display:flex;align-items:center}.monaco-editor .find-widget>.replace-part .replace-actions{height:25px;display:flex;align-items:center}.monaco-editor .find-widget .monaco-findInput{vertical-align:middle;display:flex;flex:1}.monaco-editor .find-widget .monaco-findInput .monaco-scrollable-element{width:100%}.monaco-editor .find-widget .monaco-findInput .monaco-scrollable-element .scrollbar.vertical{opacity:0}.monaco-editor .find-widget .matchesCount{display:flex;flex:initial;margin:0 0 0 3px;padding:2px 0 0 2px;height:25px;vertical-align:middle;box-sizing:border-box;text-align:center;line-height:23px}.monaco-editor .find-widget .button{width:16px;height:16px;padding:3px;border-radius:5px;flex:initial;margin-left:3px;background-position:center center;background-repeat:no-repeat;cursor:pointer;display:flex;align-items:center;justify-content:center}.monaco-editor .find-widget .codicon-find-selection{width:22px;height:22px;padding:3px;border-radius:5px}.monaco-editor .find-widget .button.left{margin-left:0;margin-right:3px}.monaco-editor .find-widget .button.wide{width:auto;padding:1px 6px;top:-1px}.monaco-editor .find-widget .button.toggle{position:absolute;top:0;left:3px;width:18px;height:100%;border-radius:0;box-sizing:border-box}.monaco-editor .find-widget .button.toggle.disabled{display:none}.monaco-editor .find-widget .disabled{color:var(--vscode-disabledForeground);cursor:default}.monaco-editor .find-widget>.replace-part{display:none}.monaco-editor .find-widget>.replace-part>.monaco-findInput{position:relative;display:flex;vertical-align:middle;flex:auto;flex-grow:0;flex-shrink:0}.monaco-editor .find-widget>.replace-part>.monaco-findInput>.controls{position:absolute;top:3px;right:2px}.monaco-editor .find-widget.reduced-find-widget .matchesCount{display:none}.monaco-editor .find-widget.narrow-find-widget{max-width:257px!important}.monaco-editor .find-widget.collapsed-find-widget{max-width:170px!important}.monaco-editor .find-widget.collapsed-find-widget .button.previous,.monaco-editor .find-widget.collapsed-find-widget .button.next,.monaco-editor .find-widget.collapsed-find-widget .button.replace,.monaco-editor .find-widget.collapsed-find-widget .button.replace-all,.monaco-editor .find-widget.collapsed-find-widget>.find-part .monaco-findInput .controls{display:none}.monaco-editor .findMatch{animation-duration:0;animation-name:inherit!important}.monaco-editor .find-widget .monaco-sash{left:0!important}.monaco-editor.hc-black .find-widget .button:before{position:relative;top:1px;left:2px}.monaco-editor .find-widget>.button.codicon-widget-close{position:absolute;top:5px;right:4px}.monaco-editor .margin-view-overlays .codicon-folding-manual-collapsed,.monaco-editor .margin-view-overlays .codicon-folding-manual-expanded,.monaco-editor .margin-view-overlays .codicon-folding-expanded,.monaco-editor .margin-view-overlays .codicon-folding-collapsed{cursor:pointer;opacity:0;transition:opacity .5s;display:flex;align-items:center;justify-content:center;font-size:140%;margin-left:2px}.monaco-workbench.reduce-motion .monaco-editor .margin-view-overlays .codicon-folding-manual-collapsed,.monaco-workbench.reduce-motion .monaco-editor .margin-view-overlays .codicon-folding-manual-expanded,.monaco-workbench.reduce-motion .monaco-editor .margin-view-overlays .codicon-folding-expanded,.monaco-workbench.reduce-motion .monaco-editor .margin-view-overlays .codicon-folding-collapsed{transition:initial}.monaco-editor .margin-view-overlays:hover .codicon,.monaco-editor .margin-view-overlays .codicon.codicon-folding-collapsed,.monaco-editor .margin-view-overlays .codicon.codicon-folding-manual-collapsed,.monaco-editor .margin-view-overlays .codicon.alwaysShowFoldIcons{opacity:1}.monaco-editor .inline-folded:after{color:gray;margin:.1em .2em 0;content:"⋯";display:inline;line-height:1em;cursor:pointer}.monaco-editor .folded-background{background-color:var(--vscode-editor-foldBackground)}.monaco-editor .cldr.codicon.codicon-folding-expanded,.monaco-editor .cldr.codicon.codicon-folding-collapsed,.monaco-editor .cldr.codicon.codicon-folding-manual-expanded,.monaco-editor .cldr.codicon.codicon-folding-manual-collapsed{color:var(--vscode-editorGutter-foldingControlForeground)!important}.monaco-editor .suggest-preview-additional-widget{white-space:nowrap}.monaco-editor .suggest-preview-additional-widget .content-spacer{color:transparent;white-space:pre}.monaco-editor .suggest-preview-additional-widget .button{display:inline-block;cursor:pointer;text-decoration:underline;text-underline-position:under}.monaco-editor .ghost-text-hidden{opacity:0;font-size:0}.monaco-editor .ghost-text-decoration,.monaco-editor .suggest-preview-text .ghost-text{font-style:italic}.monaco-editor .inline-completion-text-to-replace{text-decoration:underline;text-underline-position:under}.monaco-editor .ghost-text-decoration,.monaco-editor .ghost-text-decoration-preview,.monaco-editor .suggest-preview-text .ghost-text{color:var(--vscode-editorGhostText-foreground)!important;background-color:var(--vscode-editorGhostText-background);border:1px solid var(--vscode-editorGhostText-border)}.monaco-editor .snippet-placeholder{min-width:2px;outline-style:solid;outline-width:1px;background-color:var(--vscode-editor-snippetTabstopHighlightBackground, transparent);outline-color:var(--vscode-editor-snippetTabstopHighlightBorder, transparent)}.monaco-editor .finish-snippet-placeholder{outline-style:solid;outline-width:1px;background-color:var(--vscode-editor-snippetFinalTabstopHighlightBackground, transparent);outline-color:var(--vscode-editor-snippetFinalTabstopHighlightBorder, transparent)}.monaco-editor .suggest-widget{width:430px;z-index:40;display:flex;flex-direction:column;border-radius:3px}.monaco-editor .suggest-widget.message{flex-direction:row;align-items:center}.monaco-editor .suggest-widget,.monaco-editor .suggest-details{flex:0 1 auto;width:100%;border-style:solid;border-width:1px;border-color:var(--vscode-editorSuggestWidget-border);background-color:var(--vscode-editorSuggestWidget-background)}.monaco-editor.hc-black .suggest-widget,.monaco-editor.hc-black .suggest-details,.monaco-editor.hc-light .suggest-widget,.monaco-editor.hc-light .suggest-details{border-width:2px}.monaco-editor .suggest-widget .suggest-status-bar{box-sizing:border-box;display:none;flex-flow:row nowrap;justify-content:space-between;width:100%;font-size:80%;padding:0 4px;border-top:1px solid var(--vscode-editorSuggestWidget-border);overflow:hidden}.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar{display:flex}.monaco-editor .suggest-widget .suggest-status-bar .left{padding-right:8px}.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar .action-label{color:var(--vscode-editorSuggestWidgetStatus-foreground)}.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar .action-item:not(:last-of-type) .action-label{margin-right:0}.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar .action-item:not(:last-of-type) .action-label:after{content:", ";margin-right:.3em}.monaco-editor .suggest-widget.with-status-bar .monaco-list .monaco-list-row>.contents>.main>.right>.readMore,.monaco-editor .suggest-widget.with-status-bar .monaco-list .monaco-list-row.focused.string-label>.contents>.main>.right>.readMore{display:none}.monaco-editor .suggest-widget.with-status-bar:not(.docs-side) .monaco-list .monaco-list-row:hover>.contents>.main>.right.can-expand-details>.details-label{width:100%}.monaco-editor .suggest-widget>.message{padding-left:22px}.monaco-editor .suggest-widget>.tree{height:100%;width:100%}.monaco-editor .suggest-widget .monaco-list{user-select:none;-webkit-user-select:none}.monaco-editor .suggest-widget .monaco-list .monaco-list-row{display:flex;-mox-box-sizing:border-box;box-sizing:border-box;padding-right:10px;background-repeat:no-repeat;background-position:2px 2px;white-space:nowrap;cursor:pointer;touch-action:none}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused{color:var(--vscode-editorSuggestWidget-selectedForeground)}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused .codicon{color:var(--vscode-editorSuggestWidget-selectedIconForeground)}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents{flex:1;height:100%;overflow:hidden;padding-left:2px}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main{display:flex;overflow:hidden;text-overflow:ellipsis;white-space:pre;justify-content:space-between}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left,.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right{display:flex}.monaco-editor .suggest-widget .monaco-list .monaco-list-row:not(.focused)>.contents>.main .monaco-icon-label{color:var(--vscode-editorSuggestWidget-foreground)}.monaco-editor .suggest-widget:not(.frozen) .monaco-highlighted-label .highlight{font-weight:700}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main .monaco-highlighted-label .highlight{color:var(--vscode-editorSuggestWidget-highlightForeground)}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused>.contents>.main .monaco-highlighted-label .highlight{color:var(--vscode-editorSuggestWidget-focusHighlightForeground)}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.codicon-close,.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.readMore:before{color:inherit;opacity:1;font-size:14px;cursor:pointer}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.codicon-close{position:absolute;top:6px;right:2px}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.codicon-close:hover,.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.readMore:hover{opacity:1}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.details-label{opacity:.7}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left>.signature-label{overflow:hidden;text-overflow:ellipsis;opacity:.6}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left>.qualifier-label{margin-left:12px;opacity:.4;font-size:85%;line-height:initial;text-overflow:ellipsis;overflow:hidden;align-self:center}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.details-label{font-size:85%;margin-left:1.1em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.details-label>.monaco-tokenized-source{display:inline}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.details-label{display:none}.monaco-editor .suggest-widget:not(.shows-details) .monaco-list .monaco-list-row.focused>.contents>.main>.right>.details-label{display:inline}.monaco-editor .suggest-widget .monaco-list .monaco-list-row:not(.string-label)>.contents>.main>.right>.details-label,.monaco-editor .suggest-widget.docs-side .monaco-list .monaco-list-row.focused:not(.string-label)>.contents>.main>.right>.details-label{display:inline}.monaco-editor .suggest-widget:not(.docs-side) .monaco-list .monaco-list-row.focused:hover>.contents>.main>.right.can-expand-details>.details-label{width:calc(100% - 26px)}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left{flex-shrink:1;flex-grow:1;overflow:hidden}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.left>.monaco-icon-label{flex-shrink:0}.monaco-editor .suggest-widget .monaco-list .monaco-list-row:not(.string-label)>.contents>.main>.left>.monaco-icon-label{max-width:100%}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.string-label>.contents>.main>.left>.monaco-icon-label{flex-shrink:1}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right{overflow:hidden;flex-shrink:4;max-width:70%}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.right>.readMore{display:inline-block;position:absolute;right:10px;width:18px;height:18px;visibility:hidden}.monaco-editor .suggest-widget.docs-side .monaco-list .monaco-list-row>.contents>.main>.right>.readMore{display:none!important}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.string-label>.contents>.main>.right>.readMore{display:none}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused.string-label>.contents>.main>.right>.readMore{display:inline-block}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused:hover>.contents>.main>.right>.readMore{visibility:visible}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .monaco-icon-label.deprecated{opacity:.66;text-decoration:unset}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .monaco-icon-label.deprecated>.monaco-icon-label-container>.monaco-icon-name-container{text-decoration:line-through}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .monaco-icon-label:before{height:100%}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .icon{display:block;height:16px;width:16px;margin-left:2px;background-repeat:no-repeat;background-size:80%;background-position:center}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .icon.hide{display:none}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .suggest-icon{display:flex;align-items:center;margin-right:4px}.monaco-editor .suggest-widget.no-icons .monaco-list .monaco-list-row .icon,.monaco-editor .suggest-widget.no-icons .monaco-list .monaco-list-row .suggest-icon:before{display:none}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .icon.customcolor .colorspan{margin:0 0 0 .3em;border:.1em solid #000;width:.7em;height:.7em;display:inline-block}.monaco-editor .suggest-details-container{z-index:41}.monaco-editor .suggest-details{display:flex;flex-direction:column;cursor:default;color:var(--vscode-editorSuggestWidget-foreground)}.monaco-editor .suggest-details.focused{border-color:var(--vscode-focusBorder)}.monaco-editor .suggest-details a{color:var(--vscode-textLink-foreground)}.monaco-editor .suggest-details a:hover{color:var(--vscode-textLink-activeForeground)}.monaco-editor .suggest-details code{background-color:var(--vscode-textCodeBlock-background)}.monaco-editor .suggest-details.no-docs{display:none}.monaco-editor .suggest-details>.monaco-scrollable-element{flex:1}.monaco-editor .suggest-details>.monaco-scrollable-element>.body{box-sizing:border-box;height:100%;width:100%}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.type{flex:2;overflow:hidden;text-overflow:ellipsis;opacity:.7;white-space:pre;margin:0 24px 0 0;padding:4px 0 12px 5px}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.header>.type.auto-wrap{white-space:normal;word-break:break-all}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs{margin:0;padding:4px 5px;white-space:pre-wrap}.monaco-editor .suggest-details.no-type>.monaco-scrollable-element>.body>.docs{margin-right:24px;overflow:hidden}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs{padding:0;white-space:initial;min-height:calc(1rem + 8px)}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs>div,.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs>span:not(:empty){padding:4px 5px}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs>div>p:first-child{margin-top:0}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs>div>p:last-child{margin-bottom:0}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs .monaco-tokenized-source{white-space:pre}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs .code{white-space:pre-wrap;word-wrap:break-word}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>.docs.markdown-docs .codicon{vertical-align:sub}.monaco-editor .suggest-details>.monaco-scrollable-element>.body>p:empty{display:none}.monaco-editor .suggest-details code{border-radius:3px;padding:0 .4em}.monaco-editor .suggest-details ul,.monaco-editor .suggest-details ol{padding-left:20px}.monaco-editor .suggest-details p code{font-family:var(--monaco-monospace-font)}.monaco-editor.vs .valueSetReplacement{outline:solid 2px var(--vscode-editorBracketMatch-border)}.monaco-editor .linked-editing-decoration{background-color:var(--vscode-editor-linkedEditingBackground);min-width:1px}.monaco-editor .detected-link,.monaco-editor .detected-link-active{text-decoration:underline;text-underline-position:under}.monaco-editor .detected-link-active{cursor:pointer;color:var(--vscode-editorLink-activeForeground)!important}.monaco-editor .focused .selectionHighlight{background-color:var(--vscode-editor-selectionHighlightBackground);box-sizing:border-box;border:1px solid var(--vscode-editor-selectionHighlightBorder)}.monaco-editor.hc-black .focused .selectionHighlight,.monaco-editor.hc-light .focused .selectionHighlight{border-style:dotted}.monaco-editor .wordHighlight{background-color:var(--vscode-editor-wordHighlightBackground);box-sizing:border-box;border:1px solid var(--vscode-editor-wordHighlightBorder)}.monaco-editor.hc-black .wordHighlight,.monaco-editor.hc-light .wordHighlight{border-style:dotted}.monaco-editor .wordHighlightStrong{background-color:var(--vscode-editor-wordHighlightStrongBackground);box-sizing:border-box;border:1px solid var(--vscode-editor-wordHighlightStrongBorder)}.monaco-editor.hc-black .wordHighlightStrong,.monaco-editor.hc-light .wordHighlightStrong{border-style:dotted}.monaco-editor .wordHighlightText{background-color:var(--vscode-editor-wordHighlightTextBackground);box-sizing:border-box;border:1px solid var(--vscode-editor-wordHighlightTextBorder)}.monaco-editor.hc-black .wordHighlightText,.monaco-editor.hc-light .wordHighlightText{border-style:dotted}.monaco-editor .parameter-hints-widget{z-index:39;display:flex;flex-direction:column;line-height:1.5em;cursor:default;color:var(--vscode-editorHoverWidget-foreground);background-color:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-editorHoverWidget-border)}.hc-black .monaco-editor .parameter-hints-widget,.hc-light .monaco-editor .parameter-hints-widget{border-width:2px}.monaco-editor .parameter-hints-widget>.phwrapper{max-width:440px;display:flex;flex-direction:row}.monaco-editor .parameter-hints-widget.multiple{min-height:3.3em;padding:0}.monaco-editor .parameter-hints-widget.multiple .body:before{content:"";display:block;height:100%;position:absolute;opacity:.5;border-left:1px solid var(--vscode-editorHoverWidget-border)}.monaco-editor .parameter-hints-widget p,.monaco-editor .parameter-hints-widget ul{margin:8px 0}.monaco-editor .parameter-hints-widget .monaco-scrollable-element,.monaco-editor .parameter-hints-widget .body{display:flex;flex:1;flex-direction:column;min-height:100%}.monaco-editor .parameter-hints-widget .signature{padding:4px 5px;position:relative}.monaco-editor .parameter-hints-widget .signature.has-docs:after{content:"";display:block;position:absolute;left:0;width:100%;padding-top:4px;opacity:.5;border-bottom:1px solid var(--vscode-editorHoverWidget-border)}.monaco-editor .parameter-hints-widget .docs{padding:0 10px 0 5px;white-space:pre-wrap}.monaco-editor .parameter-hints-widget .docs.empty{display:none}.monaco-editor .parameter-hints-widget .docs a{color:var(--vscode-textLink-foreground)}.monaco-editor .parameter-hints-widget .docs a:hover{color:var(--vscode-textLink-activeForeground);cursor:pointer}.monaco-editor .parameter-hints-widget .docs .markdown-docs{white-space:initial}.monaco-editor .parameter-hints-widget .docs code{font-family:var(--monaco-monospace-font);border-radius:3px;padding:0 .4em;background-color:var(--vscode-textCodeBlock-background)}.monaco-editor .parameter-hints-widget .docs .monaco-tokenized-source,.monaco-editor .parameter-hints-widget .docs .code{white-space:pre-wrap}.monaco-editor .parameter-hints-widget .controls{display:none;flex-direction:column;align-items:center;min-width:22px;justify-content:flex-end}.monaco-editor .parameter-hints-widget.multiple .controls{display:flex;padding:0 2px}.monaco-editor .parameter-hints-widget.multiple .button{width:16px;height:16px;background-repeat:no-repeat;cursor:pointer}.monaco-editor .parameter-hints-widget .button.previous{bottom:24px}.monaco-editor .parameter-hints-widget .overloads{text-align:center;height:12px;line-height:12px;font-family:var(--monaco-monospace-font)}.monaco-editor .parameter-hints-widget .signature .parameter.active{color:var(--vscode-editorHoverWidget-highlightForeground);font-weight:700}.monaco-editor .parameter-hints-widget .documentation-parameter>.parameter{font-weight:700;margin-right:.5em}.monaco-editor .rename-box{z-index:100;color:inherit;border-radius:4px}.monaco-editor .rename-box.preview{padding:4px 4px 0}.monaco-editor .rename-box .rename-input{padding:3px;border-radius:2px}.monaco-editor .rename-box .rename-label{display:none;opacity:.8}.monaco-editor .rename-box.preview .rename-label{display:inherit}.monaco-editor .sticky-widget{overflow:hidden}.monaco-editor .sticky-widget-line-numbers{float:left;background-color:inherit}.monaco-editor .sticky-widget-lines-scrollable{display:inline-block;position:absolute;overflow:hidden;width:var(--vscode-editorStickyScroll-scrollableWidth);background-color:inherit}.monaco-editor .sticky-widget-lines{position:absolute;background-color:inherit}.monaco-editor .sticky-line-number,.monaco-editor .sticky-line-content{color:var(--vscode-editorLineNumber-foreground);white-space:nowrap;display:inline-block;position:absolute;background-color:inherit}.monaco-editor .sticky-line-number .codicon-folding-expanded,.monaco-editor .sticky-line-number .codicon-folding-collapsed{float:right;transition:var(--vscode-editorStickyScroll-foldingOpacityTransition)}.monaco-editor .sticky-line-content{width:var(--vscode-editorStickyScroll-scrollableWidth);background-color:inherit;white-space:nowrap}.monaco-editor .sticky-line-number-inner{display:inline-block;text-align:right}.monaco-editor.hc-black .sticky-widget,.monaco-editor.hc-light .sticky-widget{border-bottom:1px solid var(--vscode-contrastBorder)}.monaco-editor .sticky-line-content:hover{background-color:var(--vscode-editorStickyScrollHover-background);cursor:pointer}.monaco-editor .sticky-widget{width:100%;box-shadow:var(--vscode-scrollbar-shadow) 0 3px 2px -2px;z-index:4;background-color:var(--vscode-editorStickyScroll-background)}.monaco-editor .sticky-widget.peek{background-color:var(--vscode-peekViewEditorStickyScroll-background)}.monaco-editor .unicode-highlight{border:1px solid var(--vscode-editorUnicodeHighlight-border);background-color:var(--vscode-editorUnicodeHighlight-background);box-sizing:border-box}.editor-banner{box-sizing:border-box;cursor:default;width:100%;font-size:12px;display:flex;overflow:visible;height:26px;background:var(--vscode-banner-background)}.editor-banner .icon-container{display:flex;flex-shrink:0;align-items:center;padding:0 6px 0 10px}.editor-banner .icon-container.custom-icon{background-repeat:no-repeat;background-position:center center;background-size:16px;width:16px;padding:0;margin:0 6px 0 10px}.editor-banner .message-container{display:flex;align-items:center;line-height:26px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.editor-banner .message-container p{margin-block-start:0;margin-block-end:0}.editor-banner .message-actions-container{flex-grow:1;flex-shrink:0;line-height:26px;margin:0 4px}.editor-banner .message-actions-container a.monaco-button{width:inherit;margin:2px 8px;padding:0 12px}.editor-banner .message-actions-container a{padding:3px;margin-left:12px;text-decoration:underline}.editor-banner .action-container{padding:0 10px 0 6px}.editor-banner{background-color:var(--vscode-banner-background)}.editor-banner,.editor-banner .action-container .codicon,.editor-banner .message-actions-container .monaco-link{color:var(--vscode-banner-foreground)}.editor-banner .icon-container .codicon{color:var(--vscode-banner-iconForeground)}.monaco-link{color:var(--vscode-textLink-foreground)}.monaco-link:hover{color:var(--vscode-textLink-activeForeground)}.monaco-editor .iPadShowKeyboard{width:58px;min-width:0;height:36px;min-height:0;margin:0;padding:0;position:absolute;resize:none;overflow:hidden;background:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTMiIGhlaWdodD0iMzYiIHZpZXdCb3g9IjAgMCA1MyAzNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwKSI+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNDguMDM2NCA0LjAxMDQySDQuMDA3NzlMNC4wMDc3OSAzMi4wMjg2SDQ4LjAzNjRWNC4wMTA0MlpNNC4wMDc3OSAwLjAwNzgxMjVDMS43OTcyMSAwLjAwNzgxMjUgMC4wMDUxODc5OSAxLjc5OTg0IDAuMDA1MTg3OTkgNC4wMTA0MlYzMi4wMjg2QzAuMDA1MTg3OTkgMzQuMjM5MiAxLjc5NzIxIDM2LjAzMTIgNC4wMDc3OSAzNi4wMzEySDQ4LjAzNjRDNTAuMjQ3IDM2LjAzMTIgNTIuMDM5IDM0LjIzOTIgNTIuMDM5IDMyLjAyODZWNC4wMTA0MkM1Mi4wMzkgMS43OTk4NCA1MC4yNDcgMC4wMDc4MTI1IDQ4LjAzNjQgMC4wMDc4MTI1SDQuMDA3NzlaTTguMDEwNDIgOC4wMTMwMkgxMi4wMTNWMTIuMDE1Nkg4LjAxMDQyVjguMDEzMDJaTTIwLjAxODIgOC4wMTMwMkgxNi4wMTU2VjEyLjAxNTZIMjAuMDE4MlY4LjAxMzAyWk0yNC4wMjA4IDguMDEzMDJIMjguMDIzNFYxMi4wMTU2SDI0LjAyMDhWOC4wMTMwMlpNMzYuMDI4NiA4LjAxMzAySDMyLjAyNlYxMi4wMTU2SDM2LjAyODZWOC4wMTMwMlpNNDAuMDMxMiA4LjAxMzAySDQ0LjAzMzlWMTIuMDE1Nkg0MC4wMzEyVjguMDEzMDJaTTE2LjAxNTYgMTYuMDE4Mkg4LjAxMDQyVjIwLjAyMDhIMTYuMDE1NlYxNi4wMTgyWk0yMC4wMTgyIDE2LjAxODJIMjQuMDIwOFYyMC4wMjA4SDIwLjAxODJWMTYuMDE4MlpNMzIuMDI2IDE2LjAxODJIMjguMDIzNFYyMC4wMjA4SDMyLjAyNlYxNi4wMTgyWk00NC4wMzM5IDE2LjAxODJWMjAuMDIwOEgzNi4wMjg2VjE2LjAxODJINDQuMDMzOVpNMTIuMDEzIDI0LjAyMzRIOC4wMTA0MlYyOC4wMjZIMTIuMDEzVjI0LjAyMzRaTTE2LjAxNTYgMjQuMDIzNEgzNi4wMjg2VjI4LjAyNkgxNi4wMTU2VjI0LjAyMzRaTTQ0LjAzMzkgMjQuMDIzNEg0MC4wMzEyVjI4LjAyNkg0NC4wMzM5VjI0LjAyMzRaIiBmaWxsPSIjNDI0MjQyIi8+CjwvZz4KPGRlZnM+CjxjbGlwUGF0aCBpZD0iY2xpcDAiPgo8cmVjdCB3aWR0aD0iNTMiIGhlaWdodD0iMzYiIGZpbGw9IndoaXRlIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg==) center center no-repeat;border:4px solid #F6F6F6;border-radius:4px}.monaco-editor.vs-dark .iPadShowKeyboard{background:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTMiIGhlaWdodD0iMzYiIHZpZXdCb3g9IjAgMCA1MyAzNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwKSI+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNDguMDM2NCA0LjAxMDQySDQuMDA3NzlMNC4wMDc3OSAzMi4wMjg2SDQ4LjAzNjRWNC4wMTA0MlpNNC4wMDc3OSAwLjAwNzgxMjVDMS43OTcyMSAwLjAwNzgxMjUgMC4wMDUxODc5OSAxLjc5OTg0IDAuMDA1MTg3OTkgNC4wMTA0MlYzMi4wMjg2QzAuMDA1MTg3OTkgMzQuMjM5MiAxLjc5NzIxIDM2LjAzMTIgNC4wMDc3OSAzNi4wMzEySDQ4LjAzNjRDNTAuMjQ3IDM2LjAzMTIgNTIuMDM5IDM0LjIzOTIgNTIuMDM5IDMyLjAyODZWNC4wMTA0MkM1Mi4wMzkgMS43OTk4NCA1MC4yNDcgMC4wMDc4MTI1IDQ4LjAzNjQgMC4wMDc4MTI1SDQuMDA3NzlaTTguMDEwNDIgOC4wMTMwMkgxMi4wMTNWMTIuMDE1Nkg4LjAxMDQyVjguMDEzMDJaTTIwLjAxODIgOC4wMTMwMkgxNi4wMTU2VjEyLjAxNTZIMjAuMDE4MlY4LjAxMzAyWk0yNC4wMjA4IDguMDEzMDJIMjguMDIzNFYxMi4wMTU2SDI0LjAyMDhWOC4wMTMwMlpNMzYuMDI4NiA4LjAxMzAySDMyLjAyNlYxMi4wMTU2SDM2LjAyODZWOC4wMTMwMlpNNDAuMDMxMiA4LjAxMzAySDQ0LjAzMzlWMTIuMDE1Nkg0MC4wMzEyVjguMDEzMDJaTTE2LjAxNTYgMTYuMDE4Mkg4LjAxMDQyVjIwLjAyMDhIMTYuMDE1NlYxNi4wMTgyWk0yMC4wMTgyIDE2LjAxODJIMjQuMDIwOFYyMC4wMjA4SDIwLjAxODJWMTYuMDE4MlpNMzIuMDI2IDE2LjAxODJIMjguMDIzNFYyMC4wMjA4SDMyLjAyNlYxNi4wMTgyWk00NC4wMzM5IDE2LjAxODJWMjAuMDIwOEgzNi4wMjg2VjE2LjAxODJINDQuMDMzOVpNMTIuMDEzIDI0LjAyMzRIOC4wMTA0MlYyOC4wMjZIMTIuMDEzVjI0LjAyMzRaTTE2LjAxNTYgMjQuMDIzNEgzNi4wMjg2VjI4LjAyNkgxNi4wMTU2VjI0LjAyMzRaTTQ0LjAzMzkgMjQuMDIzNEg0MC4wMzEyVjI4LjAyNkg0NC4wMzM5VjI0LjAyMzRaIiBmaWxsPSIjQzVDNUM1Ii8+CjwvZz4KPGRlZnM+CjxjbGlwUGF0aCBpZD0iY2xpcDAiPgo8cmVjdCB3aWR0aD0iNTMiIGhlaWdodD0iMzYiIGZpbGw9IndoaXRlIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg==) center center no-repeat;border:4px solid #252526}.monaco-editor .tokens-inspect-widget{z-index:50;user-select:text;-webkit-user-select:text;padding:10px;color:var(--vscode-editorHoverWidget-foreground);background-color:var(--vscode-editorHoverWidget-background);border:1px solid var(--vscode-editorHoverWidget-border)}.monaco-editor.hc-black .tokens-inspect-widget,.monaco-editor.hc-light .tokens-inspect-widget{border-width:2px}.monaco-editor .tokens-inspect-widget .tokens-inspect-separator{height:1px;border:0;background-color:var(--vscode-editorHoverWidget-border)}.monaco-editor .tokens-inspect-widget .tm-token{font-family:var(--monaco-monospace-font)}.monaco-editor .tokens-inspect-widget .tm-token-length{font-weight:400;font-size:60%;float:right}.monaco-editor .tokens-inspect-widget .tm-metadata-table{width:100%}.monaco-editor .tokens-inspect-widget .tm-metadata-value{font-family:var(--monaco-monospace-font);text-align:right}.monaco-editor .tokens-inspect-widget .tm-token-type{font-family:var(--monaco-monospace-font)}.monaco-editor{font-family:-apple-system,BlinkMacSystemFont,Segoe WPC,Segoe UI,HelveticaNeue-Light,system-ui,Ubuntu,Droid Sans,sans-serif;--monaco-monospace-font: "SF Mono", Monaco, Menlo, Consolas, "Ubuntu Mono", "Liberation Mono", "DejaVu Sans Mono", "Courier New", monospace}.monaco-menu .monaco-action-bar.vertical .action-item .action-menu-item:focus .action-label{stroke-width:1.2px}.monaco-editor.vs-dark .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label,.monaco-editor.hc-black .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label,.monaco-editor.hc-light .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label{stroke-width:1.2px}.monaco-hover p{margin:0}.monaco-aria-container{position:absolute!important;top:0;height:1px;width:1px;margin:-1px;overflow:hidden;padding:0;clip:rect(1px,1px,1px,1px);clip-path:inset(50%)}.context-view{position:absolute}.context-view.fixed{all:initial;font-family:inherit;font-size:13px;position:fixed;color:inherit}.quick-input-widget{font-size:13px}.quick-input-widget .monaco-highlighted-label .highlight{color:#0066bf}.vs .quick-input-widget .monaco-list-row.focused .monaco-highlighted-label .highlight{color:#9dddff}.vs-dark .quick-input-widget .monaco-highlighted-label .highlight{color:#0097fb}.hc-black .quick-input-widget .monaco-highlighted-label .highlight{color:#f38518}.hc-light .quick-input-widget .monaco-highlighted-label .highlight{color:#0f4a85}.monaco-keybinding>.monaco-keybinding-key{background-color:#ddd6;border:solid 1px rgba(204,204,204,.4);border-bottom-color:#bbb6;box-shadow:inset 0 -1px #bbb6;color:#555}.hc-black .monaco-keybinding>.monaco-keybinding-key{background-color:transparent;border:solid 1px rgb(111,195,223);box-shadow:none;color:#fff}.hc-light .monaco-keybinding>.monaco-keybinding-key{background-color:transparent;border:solid 1px #0F4A85;box-shadow:none;color:#292929}.vs-dark .monaco-keybinding>.monaco-keybinding-key{background-color:#8080802b;border:solid 1px rgba(51,51,51,.6);border-bottom-color:#4449;box-shadow:inset 0 -1px #4449;color:#ccc}.monaco-progress-container{width:100%;height:2px;overflow:hidden}.monaco-progress-container .progress-bit{width:2%;height:2px;position:absolute;left:0;display:none}.monaco-progress-container.active .progress-bit{display:inherit}.monaco-progress-container.discrete .progress-bit{left:0;transition:width .1s linear}.monaco-progress-container.discrete.done .progress-bit{width:100%}.monaco-progress-container.infinite .progress-bit{animation-name:progress;animation-duration:4s;animation-iteration-count:infinite;transform:translateZ(0);animation-timing-function:linear}.monaco-progress-container.infinite.infinite-long-running .progress-bit{animation-timing-function:steps(100)}@keyframes progress{0%{transform:translate(0) scaleX(1)}50%{transform:translate(2500%) scaleX(3)}to{transform:translate(4900%) scaleX(1)}}.quick-input-widget{position:absolute;width:600px;z-index:2550;left:50%;margin-left:-300px;-webkit-app-region:no-drag;border-radius:6px}.quick-input-titlebar{display:flex;align-items:center;border-top-left-radius:5px;border-top-right-radius:5px}.quick-input-left-action-bar{display:flex;margin-left:4px;flex:1}.quick-input-title{padding:3px 0;text-align:center;text-overflow:ellipsis;overflow:hidden}.quick-input-right-action-bar{display:flex;margin-right:4px;flex:1}.quick-input-right-action-bar>.actions-container{justify-content:flex-end}.quick-input-titlebar .monaco-action-bar .action-label.codicon{background-position:center;background-repeat:no-repeat;padding:2px}.quick-input-description{margin:6px 6px 6px 11px}.quick-input-header .quick-input-description{margin:4px 2px;flex:1}.quick-input-header{display:flex;padding:8px 6px 6px}.quick-input-widget.hidden-input .quick-input-header{padding:0;margin-bottom:0}.quick-input-and-message{display:flex;flex-direction:column;flex-grow:1;min-width:0;position:relative}.quick-input-check-all{align-self:center;margin:0}.quick-input-filter{flex-grow:1;display:flex;position:relative}.quick-input-box{flex-grow:1}.quick-input-widget.show-checkboxes .quick-input-box,.quick-input-widget.show-checkboxes .quick-input-message{margin-left:5px}.quick-input-visible-count{position:absolute;left:-10000px}.quick-input-count{align-self:center;position:absolute;right:4px;display:flex;align-items:center}.quick-input-count .monaco-count-badge{vertical-align:middle;padding:2px 4px;border-radius:2px;min-height:auto;line-height:normal}.quick-input-action{margin-left:6px}.quick-input-action .monaco-text-button{font-size:11px;padding:0 6px;display:flex;height:25px;align-items:center}.quick-input-message{margin-top:-1px;padding:5px;overflow-wrap:break-word}.quick-input-message>.codicon{margin:0 .2em;vertical-align:text-bottom}.quick-input-message a{color:inherit}.quick-input-progress.monaco-progress-container{position:relative}.quick-input-list{line-height:22px}.quick-input-widget.hidden-input .quick-input-list{margin-top:4px;padding-bottom:4px}.quick-input-list .monaco-list{overflow:hidden;max-height:440px;padding-bottom:5px}.quick-input-list .monaco-scrollable-element{padding:0 5px}.quick-input-list .quick-input-list-entry{box-sizing:border-box;overflow:hidden;display:flex;height:100%;padding:0 6px}.quick-input-list .quick-input-list-entry.quick-input-list-separator-border{border-top-width:1px;border-top-style:solid}.quick-input-list .monaco-list-row{border-radius:3px}.quick-input-list .monaco-list-row[data-index="0"] .quick-input-list-entry.quick-input-list-separator-border{border-top-style:none}.quick-input-list .quick-input-list-label{overflow:hidden;display:flex;height:100%;flex:1}.quick-input-list .quick-input-list-checkbox{align-self:center;margin:0}.quick-input-list .quick-input-list-icon{background-size:16px;background-position:left center;background-repeat:no-repeat;padding-right:6px;width:16px;height:22px;display:flex;align-items:center;justify-content:center}.quick-input-list .quick-input-list-rows{overflow:hidden;text-overflow:ellipsis;display:flex;flex-direction:column;height:100%;flex:1;margin-left:5px}.quick-input-widget.show-checkboxes .quick-input-list .quick-input-list-rows{margin-left:10px}.quick-input-widget .quick-input-list .quick-input-list-checkbox{display:none}.quick-input-widget.show-checkboxes .quick-input-list .quick-input-list-checkbox{display:inline}.quick-input-list .quick-input-list-rows>.quick-input-list-row{display:flex;align-items:center}.quick-input-list .quick-input-list-rows>.quick-input-list-row .monaco-icon-label,.quick-input-list .quick-input-list-rows>.quick-input-list-row .monaco-icon-label .monaco-icon-label-container>.monaco-icon-name-container{flex:1}.quick-input-list .quick-input-list-rows>.quick-input-list-row .codicon[class*=codicon-]{vertical-align:text-bottom}.quick-input-list .quick-input-list-rows .monaco-highlighted-label>span{opacity:1}.quick-input-list .quick-input-list-entry .quick-input-list-entry-keybinding{margin-right:8px}.quick-input-list .quick-input-list-label-meta{opacity:.7;line-height:normal;text-overflow:ellipsis;overflow:hidden}.quick-input-list .monaco-highlighted-label .highlight{font-weight:700}.quick-input-list .quick-input-list-entry .quick-input-list-separator{margin-right:4px}.quick-input-list .quick-input-list-entry-action-bar{display:flex;flex:0;overflow:visible}.quick-input-list .quick-input-list-entry-action-bar .action-label{display:none}.quick-input-list .quick-input-list-entry-action-bar .action-label.codicon{margin-right:4px;padding:0 2px 2px}.quick-input-list .quick-input-list-entry-action-bar{margin-top:1px}.quick-input-list .quick-input-list-entry-action-bar{margin-right:4px}.quick-input-list .quick-input-list-entry .quick-input-list-entry-action-bar .action-label.always-visible,.quick-input-list .quick-input-list-entry:hover .quick-input-list-entry-action-bar .action-label,.quick-input-list .monaco-list-row.focused .quick-input-list-entry-action-bar .action-label{display:flex}.quick-input-list .monaco-list-row.focused .monaco-keybinding-key,.quick-input-list .monaco-list-row.focused .quick-input-list-entry .quick-input-list-separator{color:inherit}.quick-input-list .monaco-list-row.focused .monaco-keybinding-key{background:none}.quick-input-list .quick-input-list-separator-as-item{font-weight:600;font-size:12px}.monaco-component .multiDiffEntry{display:flex;flex-direction:column}.monaco-component .multiDiffEntry .editorParent{border-left:2px var(--vscode-tab-inactiveBackground) solid}.monaco-component .multiDiffEntry.focused .editorParent{border-left:2px var(--vscode-notebook-focusedCellBorder) solid}.monaco-component .multiDiffEntry .editorParent .editorContainer{border-left:17px var(--vscode-tab-inactiveBackground) solid}.monaco-component .multiDiffEntry .collapse-button{margin:0 5px;cursor:pointer}.monaco-component .multiDiffEntry .collapse-button a{display:block}.monaco-component .multiDiffEntry .header{display:flex;align-items:center;padding:8px 5px;color:var(--vscode-foreground);background:var(--vscode-editor-background);z-index:1000;border-bottom:1px var(--vscode-sideBarSectionHeader-border) solid;border-top:1px var(--vscode-sideBarSectionHeader-border) solid;border-left:2px var(--vscode-editor-background) solid}.monaco-component .multiDiffEntry.focused .header{border-left:2px var(--vscode-notebook-focusedCellBorder) solid}.monaco-component .multiDiffEntry .header.shadow{box-shadow:var(--vscode-scrollbar-shadow) 0 6px 6px -6px}.monaco-component .multiDiffEntry .header .title{flex:1;font-size:14px;line-height:22px}.monaco-component .multiDiffEntry .header .actions{padding:0 8px}.editor{position:relative;height:100%;width:100%;overflow:hidden}@font-face{font-weight:400;font-family:vant-icon;font-style:normal;font-display:auto;src:url(data:font/woff2;charset=utf-8;base64,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) format("woff2"),url(//at.alicdn.com/t/c/font_2553510_kfwma2yq1rs.woff?t=1694918397022) format("woff")}.van-doc-header__cube[data-v-1835229a]{position:relative;display:block;padding:0 12px;color:#001938;background:#f7f8fa;font-size:14px;line-height:30px;text-align:center;border:1px solid rgba(255,255,255,.7);border-radius:20px;cursor:pointer;transition:.3s ease-in-out}.van-doc-header__version[data-v-1835229a]{padding-right:20px}.van-doc-header__version[data-v-1835229a]:after{position:absolute;top:10px;right:9px;width:5px;height:5px;color:#001938;border:1px solid;border-color:transparent transparent currentColor currentColor;transform:rotate(-45deg);content:""}.van-doc-header__version-pop[data-v-1835229a]{position:absolute;top:34px;left:0;width:100%;z-index:99;color:#333;line-height:36px;text-align:left;overflow:hidden;background-color:#fff;border-radius:8px;box-shadow:0 4px 12px #ebedf0;transform-origin:top;transition:.2s cubic-bezier(.215,.61,.355,1);height:500px;overflow-y:scroll}.van-doc-header__version-pop-item[data-v-1835229a]{padding-left:12px;transition:.2s}.van-doc-header__version-pop-item[data-v-1835229a]:hover{color:var(--van-doc-link-color);background-color:#f7f8fa}.van-doc-dropdown-enter[data-v-1835229a],.van-doc-dropdown-leave-active[data-v-1835229a]{transform:scaleY(0);opacity:0}.van-doc-header{width:100%;background-color:var(--van-doc-header-background);-webkit-user-select:none;user-select:none;position:relative;z-index:2}.van-doc-header__top{display:flex;align-items:center;height:var(--van-doc-header-top-height);padding:0 var(--van-doc-padding)}.van-doc-header__top-nav{flex:1;font-size:0;text-align:right}.van-doc-header__top-nav>li{position:relative;display:inline-block;vertical-align:middle}.van-doc-header__top-nav-item{margin-left:16px}.van-doc-header__top-nav-title{display:block;font-size:15px}.van-doc-header__logo{display:block}.van-doc-header__logo img{display:inline-block;width:28px;margin-right:12px;vertical-align:middle}.van-doc-header__title{display:inline-block;color:#fff;font-size:22px;vertical-align:middle}.van-doc-header__subtitle{display:inline-block;color:#999;margin-left:4px;vertical-align:-4px;font-size:13px}.van-doc-header__link{cursor:pointer}.van-doc-header__link span{width:30px;height:30px;background-color:#fff;font-size:22px;border-radius:30px;display:block;text-align:center;line-height:30px}.van-doc-header__link img{display:block;width:30px;height:30px;transition:.3s cubic-bezier(.175,.885,.32,1.275)}.van-doc-header__link img:hover{transform:scale(1.2)}.van-message{background-color:#fef0f0;color:#f56c6c;border:1px solid #f56c6c;margin-bottom:10px;border-radius:4px;width:100%;padding:10px}.van-console{width:100%;height:100%;padding:10px;background-color:#fff}.van-console .no-error{color:var(--van-doc-green);font-size:28px;text-align:center;position:absolute;top:50%;left:50%;transform:translate(-50%) translateY(-50%)}:root{--van-black: #000;--van-white: #fff;--van-gray-1: #f7f8fa;--van-gray-2: #f2f3f5;--van-gray-3: #ebedf0;--van-gray-4: #dcdee0;--van-gray-5: #c8c9cc;--van-gray-6: #969799;--van-gray-7: #646566;--van-gray-8: #323233;--van-red: #ee0a24;--van-blue: #1989fa;--van-orange: #ff976a;--van-orange-dark: #ed6a0c;--van-orange-light: #fffbe8;--van-green: #07c160;--van-gradient-red: linear-gradient(to right, #ff6034, #ee0a24);--van-gradient-orange: linear-gradient(to right, #ffd01e, #ff8917);--van-primary-color: var(--van-blue);--van-success-color: var(--van-green);--van-danger-color: var(--van-red);--van-warning-color: var(--van-orange);--van-text-color: var(--van-gray-8);--van-text-color-2: var(--van-gray-6);--van-text-color-3: var(--van-gray-5);--van-active-color: var(--van-gray-2);--van-active-opacity: .6;--van-disabled-opacity: .5;--van-background: var(--van-gray-1);--van-background-2: var(--van-white);--van-background-3: var(--van-white);--van-padding-base: 4px;--van-padding-xs: 8px;--van-padding-sm: 12px;--van-padding-md: 16px;--van-padding-lg: 24px;--van-padding-xl: 32px;--van-font-bold: 600;--van-font-size-xs: 10px;--van-font-size-sm: 12px;--van-font-size-md: 14px;--van-font-size-lg: 16px;--van-line-height-xs: 14px;--van-line-height-sm: 18px;--van-line-height-md: 20px;--van-line-height-lg: 22px;--van-base-font: -apple-system, BlinkMacSystemFont, "Helvetica Neue", Helvetica, Segoe UI, Arial, Roboto, "PingFang SC", "miui", "Hiragino Sans GB", "Microsoft Yahei", sans-serif;--van-price-font: avenir-heavy, "PingFang SC", helvetica neue, arial, sans-serif;--van-duration-base: .3s;--van-duration-fast: .2s;--van-ease-out: ease-out;--van-ease-in: ease-in;--van-border-color: var(--van-gray-3);--van-border-width: 1px;--van-radius-sm: 2px;--van-radius-md: 4px;--van-radius-lg: 8px;--van-radius-max: 999px}.van-theme-dark{--van-text-color: #f5f5f5;--van-text-color-2: #707070;--van-text-color-3: #4d4d4d;--van-border-color: #3a3a3c;--van-active-color: #3a3a3c;--van-background: #000;--van-background-2: #1c1c1e;--van-background-3: #37363b}html{-webkit-tap-highlight-color:transparent}body{margin:0;font-family:var(--van-base-font)}a{text-decoration:none}input,button,textarea{color:inherit;font:inherit}a:focus,input:focus,button:focus,textarea:focus,[class*=van-]:focus{outline:none}ol,ul{margin:0;padding:0;list-style:none}@keyframes van-slide-up-enter{0%{transform:translate3d(0,100%,0)}}@keyframes van-slide-up-leave{to{transform:translate3d(0,100%,0)}}@keyframes van-slide-down-enter{0%{transform:translate3d(0,-100%,0)}}@keyframes van-slide-down-leave{to{transform:translate3d(0,-100%,0)}}@keyframes van-slide-left-enter{0%{transform:translate3d(-100%,0,0)}}@keyframes van-slide-left-leave{to{transform:translate3d(-100%,0,0)}}@keyframes van-slide-right-enter{0%{transform:translate3d(100%,0,0)}}@keyframes van-slide-right-leave{to{transform:translate3d(100%,0,0)}}@keyframes van-fade-in{0%{opacity:0}to{opacity:1}}@keyframes van-fade-out{0%{opacity:1}to{opacity:0}}@keyframes van-rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.van-fade-enter-active{animation:var(--van-duration-base) van-fade-in both var(--van-ease-out)}.van-fade-leave-active{animation:var(--van-duration-base) van-fade-out both var(--van-ease-in)}.van-slide-up-enter-active{animation:van-slide-up-enter var(--van-duration-base) both var(--van-ease-out)}.van-slide-up-leave-active{animation:van-slide-up-leave var(--van-duration-base) both var(--van-ease-in)}.van-slide-down-enter-active{animation:van-slide-down-enter var(--van-duration-base) both var(--van-ease-out)}.van-slide-down-leave-active{animation:van-slide-down-leave var(--van-duration-base) both var(--van-ease-in)}.van-slide-left-enter-active{animation:van-slide-left-enter var(--van-duration-base) both var(--van-ease-out)}.van-slide-left-leave-active{animation:van-slide-left-leave var(--van-duration-base) both var(--van-ease-in)}.van-slide-right-enter-active{animation:van-slide-right-enter var(--van-duration-base) both var(--van-ease-out)}.van-slide-right-leave-active{animation:van-slide-right-leave var(--van-duration-base) both var(--van-ease-in)}.van-clearfix:after{display:table;clear:both;content:""}.van-ellipsis{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.van-multi-ellipsis--l2{display:-webkit-box;overflow:hidden;text-overflow:ellipsis;-webkit-line-clamp:2;line-break:anywhere;-webkit-box-orient:vertical}.van-multi-ellipsis--l3{display:-webkit-box;overflow:hidden;text-overflow:ellipsis;-webkit-line-clamp:3;line-break:anywhere;-webkit-box-orient:vertical}.van-safe-area-top{padding-top:constant(safe-area-inset-top);padding-top:env(safe-area-inset-top)}.van-safe-area-bottom{padding-bottom:constant(safe-area-inset-bottom);padding-bottom:env(safe-area-inset-bottom)}.van-haptics-feedback{cursor:pointer}.van-haptics-feedback:active{opacity:var(--van-active-opacity)}[class*=van-hairline]:after{position:absolute;box-sizing:border-box;content:" ";pointer-events:none;top:-50%;right:-50%;bottom:-50%;left:-50%;border:0 solid var(--van-border-color);transform:scale(.5)}.van-hairline,.van-hairline--top,.van-hairline--left,.van-hairline--right,.van-hairline--bottom,.van-hairline--surround,.van-hairline--top-bottom{position:relative}.van-hairline--top:after{border-top-width:var(--van-border-width)}.van-hairline--left:after{border-left-width:var(--van-border-width)}.van-hairline--right:after{border-right-width:var(--van-border-width)}.van-hairline--bottom:after{border-bottom-width:var(--van-border-width)}.van-hairline--top-bottom:after,.van-hairline-unset--top-bottom:after{border-width:var(--van-border-width) 0}.van-hairline--surround:after{border-width:var(--van-border-width)}:root{--van-action-bar-background: var(--van-background-2);--van-action-bar-height: 50px}.van-action-bar{position:fixed;right:0;bottom:0;left:0;display:flex;align-items:center;box-sizing:content-box;height:var(--van-action-bar-height);background:var(--van-action-bar-background)}:root{--van-badge-size: 16px;--van-badge-color: var(--van-white);--van-badge-padding: 0 3px;--van-badge-font-size: var(--van-font-size-sm);--van-badge-font-weight: var(--van-font-bold);--van-badge-border-width: var(--van-border-width);--van-badge-background: var(--van-danger-color);--van-badge-dot-color: var(--van-danger-color);--van-badge-dot-size: 8px;--van-badge-font: -apple-system-font, helvetica neue, arial, sans-serif}.van-badge{display:inline-block;box-sizing:border-box;min-width:var(--van-badge-size);padding:var(--van-badge-padding);color:var(--van-badge-color);font-weight:var(--van-badge-font-weight);font-size:var(--van-badge-font-size);font-family:var(--van-badge-font);line-height:1.2;text-align:center;background:var(--van-badge-background);border:var(--van-badge-border-width) solid var(--van-background-2);border-radius:var(--van-radius-max)}.van-badge--fixed{position:absolute;transform-origin:100%}.van-badge--top-left{top:0;left:0;transform:translate(-50%,-50%)}.van-badge--top-right{top:0;right:0;transform:translate(50%,-50%)}.van-badge--bottom-left{bottom:0;left:0;transform:translate(-50%,50%)}.van-badge--bottom-right{bottom:0;right:0;transform:translate(50%,50%)}.van-badge--dot{width:var(--van-badge-dot-size);min-width:0;height:var(--van-badge-dot-size);background:var(--van-badge-dot-color);border-radius:100%;border:none;padding:0}.van-badge__wrapper{position:relative;display:inline-block}.van-icon{position:relative;display:inline-block;font:14px/1 vant-icon;font:normal normal normal 14px/1 var(--van-icon-font-family, "vant-icon");font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased}.van-icon:before{display:inline-block}.van-icon-contact:before{content:""}.van-icon-notes:before{content:""}.van-icon-records:before{content:""}.van-icon-cash-back-record:before{content:""}.van-icon-newspaper:before{content:""}.van-icon-discount:before{content:""}.van-icon-completed:before{content:""}.van-icon-user:before{content:""}.van-icon-description:before{content:""}.van-icon-list-switch:before{content:""}.van-icon-list-switching:before{content:""}.van-icon-link-o:before{content:""}.van-icon-miniprogram-o:before{content:""}.van-icon-qq:before{content:""}.van-icon-wechat-moments:before{content:""}.van-icon-weibo:before{content:""}.van-icon-cash-o:before{content:""}.van-icon-guide-o:before{content:""}.van-icon-invitation:before{content:""}.van-icon-shield-o:before{content:""}.van-icon-exchange:before{content:""}.van-icon-eye:before{content:""}.van-icon-enlarge:before{content:""}.van-icon-expand-o:before{content:""}.van-icon-eye-o:before{content:""}.van-icon-expand:before{content:""}.van-icon-filter-o:before{content:""}.van-icon-fire:before{content:""}.van-icon-fail:before{content:""}.van-icon-failure:before{content:""}.van-icon-fire-o:before{content:""}.van-icon-flag-o:before{content:""}.van-icon-font:before{content:""}.van-icon-font-o:before{content:""}.van-icon-gem-o:before{content:""}.van-icon-flower-o:before{content:""}.van-icon-gem:before{content:""}.van-icon-gift-card:before{content:""}.van-icon-friends:before{content:""}.van-icon-friends-o:before{content:""}.van-icon-gold-coin:before{content:""}.van-icon-gold-coin-o:before{content:""}.van-icon-good-job-o:before{content:""}.van-icon-gift:before{content:""}.van-icon-gift-o:before{content:""}.van-icon-gift-card-o:before{content:""}.van-icon-good-job:before{content:""}.van-icon-home-o:before{content:""}.van-icon-goods-collect:before{content:""}.van-icon-graphic:before{content:""}.van-icon-goods-collect-o:before{content:""}.van-icon-hot-o:before{content:""}.van-icon-info:before{content:""}.van-icon-hotel-o:before{content:""}.van-icon-info-o:before{content:""}.van-icon-hot-sale-o:before{content:""}.van-icon-hot:before{content:""}.van-icon-like:before{content:""}.van-icon-idcard:before{content:""}.van-icon-like-o:before{content:""}.van-icon-hot-sale:before{content:""}.van-icon-location-o:before{content:""}.van-icon-location:before{content:""}.van-icon-label:before{content:""}.van-icon-lock:before{content:""}.van-icon-label-o:before{content:""}.van-icon-map-marked:before{content:""}.van-icon-logistics:before{content:""}.van-icon-manager:before{content:""}.van-icon-more:before{content:""}.van-icon-live:before{content:""}.van-icon-manager-o:before{content:""}.van-icon-medal:before{content:""}.van-icon-more-o:before{content:""}.van-icon-music-o:before{content:""}.van-icon-music:before{content:""}.van-icon-new-arrival-o:before{content:""}.van-icon-medal-o:before{content:""}.van-icon-new-o:before{content:""}.van-icon-free-postage:before{content:""}.van-icon-newspaper-o:before{content:""}.van-icon-new-arrival:before{content:""}.van-icon-minus:before{content:""}.van-icon-orders-o:before{content:""}.van-icon-new:before{content:""}.van-icon-paid:before{content:""}.van-icon-notes-o:before{content:""}.van-icon-other-pay:before{content:""}.van-icon-pause-circle:before{content:""}.van-icon-pause:before{content:""}.van-icon-pause-circle-o:before{content:""}.van-icon-peer-pay:before{content:""}.van-icon-pending-payment:before{content:""}.van-icon-passed:before{content:""}.van-icon-plus:before{content:""}.van-icon-phone-circle-o:before{content:""}.van-icon-phone-o:before{content:""}.van-icon-printer:before{content:""}.van-icon-photo-fail:before{content:""}.van-icon-phone:before{content:""}.van-icon-photo-o:before{content:""}.van-icon-play-circle:before{content:""}.van-icon-play:before{content:""}.van-icon-phone-circle:before{content:""}.van-icon-point-gift-o:before{content:""}.van-icon-point-gift:before{content:""}.van-icon-play-circle-o:before{content:""}.van-icon-shrink:before{content:""}.van-icon-photo:before{content:""}.van-icon-qr:before{content:""}.van-icon-qr-invalid:before{content:""}.van-icon-question-o:before{content:""}.van-icon-revoke:before{content:""}.van-icon-replay:before{content:""}.van-icon-service:before{content:""}.van-icon-question:before{content:""}.van-icon-search:before{content:""}.van-icon-refund-o:before{content:""}.van-icon-service-o:before{content:""}.van-icon-scan:before{content:""}.van-icon-share:before{content:""}.van-icon-send-gift-o:before{content:""}.van-icon-share-o:before{content:""}.van-icon-setting:before{content:""}.van-icon-points:before{content:""}.van-icon-photograph:before{content:""}.van-icon-shop:before{content:""}.van-icon-shop-o:before{content:""}.van-icon-shop-collect-o:before{content:""}.van-icon-shop-collect:before{content:""}.van-icon-smile:before{content:""}.van-icon-shopping-cart-o:before{content:""}.van-icon-sign:before{content:""}.van-icon-sort:before{content:""}.van-icon-star-o:before{content:""}.van-icon-smile-comment-o:before{content:""}.van-icon-stop:before{content:""}.van-icon-stop-circle-o:before{content:""}.van-icon-smile-o:before{content:""}.van-icon-star:before{content:""}.van-icon-success:before{content:""}.van-icon-stop-circle:before{content:""}.van-icon-records-o:before{content:""}.van-icon-shopping-cart:before{content:""}.van-icon-tosend:before{content:""}.van-icon-todo-list:before{content:""}.van-icon-thumb-circle-o:before{content:""}.van-icon-thumb-circle:before{content:""}.van-icon-umbrella-circle:before{content:""}.van-icon-underway:before{content:""}.van-icon-upgrade:before{content:""}.van-icon-todo-list-o:before{content:""}.van-icon-tv-o:before{content:""}.van-icon-underway-o:before{content:""}.van-icon-user-o:before{content:""}.van-icon-vip-card-o:before{content:""}.van-icon-vip-card:before{content:""}.van-icon-send-gift:before{content:""}.van-icon-wap-home:before{content:""}.van-icon-wap-nav:before{content:""}.van-icon-volume-o:before{content:""}.van-icon-video:before{content:""}.van-icon-wap-home-o:before{content:""}.van-icon-volume:before{content:""}.van-icon-warning:before{content:""}.van-icon-weapp-nav:before{content:""}.van-icon-wechat-pay:before{content:""}.van-icon-warning-o:before{content:""}.van-icon-wechat:before{content:""}.van-icon-setting-o:before{content:""}.van-icon-youzan-shield:before{content:""}.van-icon-warn-o:before{content:""}.van-icon-smile-comment:before{content:""}.van-icon-user-circle-o:before{content:""}.van-icon-video-o:before{content:""}.van-icon-add-square:before{content:""}.van-icon-add:before{content:""}.van-icon-arrow-down:before{content:""}.van-icon-arrow-up:before{content:""}.van-icon-arrow:before{content:""}.van-icon-after-sale:before{content:""}.van-icon-add-o:before{content:""}.van-icon-alipay:before{content:""}.van-icon-ascending:before{content:""}.van-icon-apps-o:before{content:""}.van-icon-aim:before{content:""}.van-icon-award:before{content:""}.van-icon-arrow-left:before{content:""}.van-icon-award-o:before{content:""}.van-icon-audio:before{content:""}.van-icon-bag-o:before{content:""}.van-icon-balance-list:before{content:""}.van-icon-back-top:before{content:""}.van-icon-bag:before{content:""}.van-icon-balance-pay:before{content:""}.van-icon-balance-o:before{content:""}.van-icon-bar-chart-o:before{content:""}.van-icon-bars:before{content:""}.van-icon-balance-list-o:before{content:""}.van-icon-birthday-cake-o:before{content:""}.van-icon-bookmark:before{content:""}.van-icon-bill:before{content:""}.van-icon-bell:before{content:""}.van-icon-browsing-history-o:before{content:""}.van-icon-browsing-history:before{content:""}.van-icon-bookmark-o:before{content:""}.van-icon-bulb-o:before{content:""}.van-icon-bullhorn-o:before{content:""}.van-icon-bill-o:before{content:""}.van-icon-calendar-o:before{content:""}.van-icon-brush-o:before{content:""}.van-icon-card:before{content:""}.van-icon-cart-o:before{content:""}.van-icon-cart-circle:before{content:""}.van-icon-cart-circle-o:before{content:""}.van-icon-cart:before{content:""}.van-icon-cash-on-deliver:before{content:""}.van-icon-cash-back-record-o:before{content:""}.van-icon-cashier-o:before{content:""}.van-icon-chart-trending-o:before{content:""}.van-icon-certificate:before{content:""}.van-icon-chat:before{content:""}.van-icon-clear:before{content:""}.van-icon-chat-o:before{content:""}.van-icon-checked:before{content:""}.van-icon-clock:before{content:""}.van-icon-clock-o:before{content:""}.van-icon-close:before{content:""}.van-icon-closed-eye:before{content:""}.van-icon-circle:before{content:""}.van-icon-cluster-o:before{content:""}.van-icon-column:before{content:""}.van-icon-comment-circle-o:before{content:""}.van-icon-cluster:before{content:""}.van-icon-comment:before{content:""}.van-icon-comment-o:before{content:""}.van-icon-comment-circle:before{content:""}.van-icon-completed-o:before{content:""}.van-icon-credit-pay:before{content:""}.van-icon-coupon:before{content:""}.van-icon-debit-pay:before{content:""}.van-icon-coupon-o:before{content:""}.van-icon-contact-o:before{content:""}.van-icon-descending:before{content:""}.van-icon-desktop-o:before{content:""}.van-icon-diamond-o:before{content:""}.van-icon-description-o:before{content:""}.van-icon-delete:before{content:""}.van-icon-diamond:before{content:""}.van-icon-delete-o:before{content:""}.van-icon-cross:before{content:""}.van-icon-edit:before{content:""}.van-icon-ellipsis:before{content:""}.van-icon-down:before{content:""}.van-icon-discount-o:before{content:""}.van-icon-ecard-pay:before{content:""}.van-icon-envelop-o:before{content:""}@font-face{font-weight:400;font-family:vant-icon;font-style:normal;font-display:auto;src:url(data:font/woff2;charset=utf-8;base64,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) format("woff2"),url(//at.alicdn.com/t/c/font_2553510_kfwma2yq1rs.woff?t=1694918397022) format("woff")}.van-icon__image{display:block;width:1em;height:1em;object-fit:contain}:root{--van-skeleton-image-size: 96px;--van-skeleton-image-radius: 24px}.van-skeleton-image{display:flex;width:var(--van-skeleton-image-size);height:var(--van-skeleton-image-size);align-items:center;justify-content:center;background:var(--van-active-color)}.van-skeleton-image--round{border-radius:var(--van-skeleton-image-radius)}.van-skeleton-image__icon{width:calc(var(--van-skeleton-image-size) / 2);height:calc(var(--van-skeleton-image-size) / 2);font-size:calc(var(--van-skeleton-image-size) / 2);color:var(--van-gray-5)}:root{--van-rate-icon-size: 20px;--van-rate-icon-gutter: var(--van-padding-base);--van-rate-icon-void-color: var(--van-gray-5);--van-rate-icon-full-color: var(--van-danger-color);--van-rate-icon-disabled-color: var(--van-gray-5)}.van-rate{display:inline-flex;cursor:pointer;-webkit-user-select:none;user-select:none;flex-wrap:wrap}.van-rate__item{position:relative}.van-rate__item:not(:last-child){padding-right:var(--van-rate-icon-gutter)}.van-rate__icon{display:block;width:1em;color:var(--van-rate-icon-void-color);font-size:var(--van-rate-icon-size)}.van-rate__icon--half{position:absolute;top:0;left:0;overflow:hidden;pointer-events:none}.van-rate__icon--full{color:var(--van-rate-icon-full-color)}.van-rate__icon--disabled{color:var(--van-rate-icon-disabled-color)}.van-rate--disabled{cursor:not-allowed}.van-rate--readonly{cursor:default}:root{--van-notice-bar-height: 40px;--van-notice-bar-padding: 0 var(--van-padding-md);--van-notice-bar-wrapable-padding: var(--van-padding-xs) var(--van-padding-md);--van-notice-bar-text-color: var(--van-orange-dark);--van-notice-bar-font-size: var(--van-font-size-md);--van-notice-bar-line-height: 24px;--van-notice-bar-background: var(--van-orange-light);--van-notice-bar-icon-size: 16px;--van-notice-bar-icon-min-width: 24px}.van-notice-bar{position:relative;display:flex;align-items:center;height:var(--van-notice-bar-height);padding:var(--van-notice-bar-padding);color:var(--van-notice-bar-text-color);font-size:var(--van-notice-bar-font-size);line-height:var(--van-notice-bar-line-height);background:var(--van-notice-bar-background)}.van-notice-bar__left-icon,.van-notice-bar__right-icon{min-width:var(--van-notice-bar-icon-min-width);font-size:var(--van-notice-bar-icon-size)}.van-notice-bar__right-icon{text-align:right;cursor:pointer}.van-notice-bar__wrap{position:relative;display:flex;flex:1;align-items:center;height:100%;overflow:hidden}.van-notice-bar__content{position:absolute;white-space:nowrap;transition-timing-function:linear}.van-notice-bar__content.van-ellipsis{max-width:100%}.van-notice-bar--wrapable{height:auto;padding:var(--van-notice-bar-wrapable-padding)}.van-notice-bar--wrapable .van-notice-bar__wrap{height:auto}.van-notice-bar--wrapable .van-notice-bar__content{position:relative;white-space:normal;word-wrap:break-word}:root{--van-nav-bar-height: 46px;--van-nav-bar-background: var(--van-background-2);--van-nav-bar-arrow-size: 16px;--van-nav-bar-icon-color: var(--van-primary-color);--van-nav-bar-text-color: var(--van-primary-color);--van-nav-bar-title-font-size: var(--van-font-size-lg);--van-nav-bar-title-text-color: var(--van-text-color);--van-nav-bar-z-index: 1;--van-nav-bar-disabled-opacity: var(--van-disabled-opacity)}.van-nav-bar{position:relative;z-index:var(--van-nav-bar-z-index);line-height:var(--van-line-height-lg);text-align:center;background:var(--van-nav-bar-background);-webkit-user-select:none;user-select:none}.van-nav-bar--fixed{position:fixed;top:0;left:0;width:100%}.van-nav-bar--safe-area-inset-top{padding-top:constant(safe-area-inset-top);padding-top:env(safe-area-inset-top)}.van-nav-bar .van-icon{color:var(--van-nav-bar-icon-color)}.van-nav-bar__content{position:relative;display:flex;align-items:center;height:var(--van-nav-bar-height)}.van-nav-bar__arrow{margin-right:var(--van-padding-base);font-size:var(--van-nav-bar-arrow-size)}.van-nav-bar__title{max-width:60%;margin:0 auto;color:var(--van-nav-bar-title-text-color);font-weight:var(--van-font-bold);font-size:var(--van-nav-bar-title-font-size)}.van-nav-bar__left,.van-nav-bar__right{position:absolute;top:0;bottom:0;display:flex;align-items:center;padding:0 var(--van-padding-md);font-size:var(--van-font-size-md)}.van-nav-bar__left--disabled,.van-nav-bar__right--disabled{cursor:not-allowed;opacity:var(--van-nav-bar-disabled-opacity)}.van-nav-bar__left{left:0}.van-nav-bar__right{right:0}.van-nav-bar__text{color:var(--van-nav-bar-text-color)}:root{--van-floating-bubble-size: 48px;--van-floating-bubble-initial-gap: 24px;--van-floating-bubble-icon-size: 28px;--van-floating-bubble-background: var(--van-primary-color);--van-floating-bubble-color: var(--van-background-2);--van-floating-bubble-z-index: 999;--van-floating-bubble-border-radius: var(--van-radius-max)}.van-floating-bubble{position:fixed;left:0;top:0;right:var(--van-floating-bubble-initial-gap);bottom:var(--van-floating-bubble-initial-gap);width:var(--van-floating-bubble-size);height:var(--van-floating-bubble-size);box-sizing:border-box;display:flex;justify-content:center;align-items:center;overflow:hidden;cursor:pointer;-webkit-user-select:none;user-select:none;touch-action:none;background:var(--van-floating-bubble-background);color:var(--van-floating-bubble-color);border-radius:var(--van-floating-bubble-border-radius);z-index:var(--van-floating-bubble-z-index);transition:transform var(--van-duration-base)}.van-floating-bubble:active{opacity:.8}.van-floating-bubble__icon{font-size:var(--van-floating-bubble-icon-size)}:root{--van-image-placeholder-text-color: var(--van-text-color-2);--van-image-placeholder-font-size: var(--van-font-size-md);--van-image-placeholder-background: var(--van-background);--van-image-loading-icon-size: 32px;--van-image-loading-icon-color: var(--van-gray-4);--van-image-error-icon-size: 32px;--van-image-error-icon-color: var(--van-gray-4)}.van-image{position:relative;display:inline-block}.van-image--round{overflow:hidden;border-radius:var(--van-radius-max)}.van-image--round .van-image__img{border-radius:inherit}.van-image--block{display:block}.van-image__img,.van-image__error,.van-image__loading{display:block;width:100%;height:100%}.van-image__error,.van-image__loading{position:absolute;top:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--van-image-placeholder-text-color);font-size:var(--van-image-placeholder-font-size);background:var(--van-image-placeholder-background)}.van-image__loading-icon{color:var(--van-image-loading-icon-color);font-size:var(--van-image-loading-icon-size)}.van-image__error-icon{color:var(--van-image-error-icon-color);font-size:var(--van-image-error-icon-size)}:root{--van-back-top-size: 40px;--van-back-top-right: 30px;--van-back-top-bottom: 40px;--van-back-top-z-index: 100;--van-back-top-icon-size: 20px;--van-back-top-text-color: #fff;--van-back-top-background: var(--van-blue)}.van-back-top{position:fixed;display:flex;align-items:center;justify-content:center;width:var(--van-back-top-size);height:var(--van-back-top-size);right:var(--van-back-top-right);bottom:var(--van-back-top-bottom);z-index:var(--van-back-top-z-index);cursor:pointer;color:var(--van-back-top-text-color);border-radius:var(--van-radius-max);box-shadow:0 2px 8px #0000001f;transform:scale(0);transition:var(--van-duration-base) cubic-bezier(.25,.8,.5,1);background-color:var(--van-back-top-background)}.van-back-top:active{opacity:var(--van-active-opacity)}.van-back-top__placeholder{display:none}.van-back-top--active{transform:scale(1)}.van-back-top__icon{font-size:var(--van-back-top-icon-size);font-weight:var(--van-font-bold)}:root{--van-tag-padding: 0 var(--van-padding-base);--van-tag-text-color: var(--van-white);--van-tag-font-size: var(--van-font-size-sm);--van-tag-radius: 2px;--van-tag-line-height: 16px;--van-tag-medium-padding: 2px 6px;--van-tag-large-padding: var(--van-padding-base) var(--van-padding-xs);--van-tag-large-radius: var(--van-radius-md);--van-tag-large-font-size: var(--van-font-size-md);--van-tag-round-radius: var(--van-radius-max);--van-tag-danger-color: var(--van-danger-color);--van-tag-primary-color: var(--van-primary-color);--van-tag-success-color: var(--van-success-color);--van-tag-warning-color: var(--van-warning-color);--van-tag-default-color: var(--van-gray-6);--van-tag-plain-background: var(--van-background-2)}.van-tag{position:relative;display:inline-flex;align-items:center;padding:var(--van-tag-padding);color:var(--van-tag-text-color);font-size:var(--van-tag-font-size);line-height:var(--van-tag-line-height);border-radius:var(--van-tag-radius)}.van-tag--default{background:var(--van-tag-default-color)}.van-tag--default.van-tag--plain{color:var(--van-tag-default-color)}.van-tag--danger{background:var(--van-tag-danger-color)}.van-tag--danger.van-tag--plain{color:var(--van-tag-danger-color)}.van-tag--primary{background:var(--van-tag-primary-color)}.van-tag--primary.van-tag--plain{color:var(--van-tag-primary-color)}.van-tag--success{background:var(--van-tag-success-color)}.van-tag--success.van-tag--plain{color:var(--van-tag-success-color)}.van-tag--warning{background:var(--van-tag-warning-color)}.van-tag--warning.van-tag--plain{color:var(--van-tag-warning-color)}.van-tag--plain{background:var(--van-tag-plain-background);border-color:currentColor}.van-tag--plain:before{position:absolute;top:0;right:0;bottom:0;left:0;border:1px solid;border-color:inherit;border-radius:inherit;content:"";pointer-events:none}.van-tag--medium{padding:var(--van-tag-medium-padding)}.van-tag--large{padding:var(--van-tag-large-padding);font-size:var(--van-tag-large-font-size);border-radius:var(--van-tag-large-radius)}.van-tag--mark{border-radius:0 var(--van-tag-round-radius) var(--van-tag-round-radius) 0}.van-tag--mark:after{display:block;width:2px;content:""}.van-tag--round{border-radius:var(--van-tag-round-radius)}.van-tag__close{margin-left:2px}:root{--van-card-padding: var(--van-padding-xs) var(--van-padding-md);--van-card-font-size: var(--van-font-size-sm);--van-card-text-color: var(--van-text-color);--van-card-background: var(--van-background);--van-card-thumb-size: 88px;--van-card-thumb-radius: var(--van-radius-lg);--van-card-title-line-height: 16px;--van-card-desc-color: var(--van-text-color-2);--van-card-desc-line-height: var(--van-line-height-md);--van-card-price-color: var(--van-text-color);--van-card-origin-price-color: var(--van-text-color-2);--van-card-num-color: var(--van-text-color-2);--van-card-origin-price-font-size: var(--van-font-size-xs);--van-card-price-font-size: var(--van-font-size-sm);--van-card-price-integer-font-size: var(--van-font-size-lg);--van-card-price-font: var(--van-price-font)}.van-card{position:relative;box-sizing:border-box;padding:var(--van-card-padding);color:var(--van-card-text-color);font-size:var(--van-card-font-size);background:var(--van-card-background)}.van-card:not(:first-child){margin-top:var(--van-padding-xs)}.van-card__header{display:flex}.van-card__thumb{position:relative;flex:none;width:var(--van-card-thumb-size);height:var(--van-card-thumb-size);margin-right:var(--van-padding-xs)}.van-card__thumb img{border-radius:var(--van-card-thumb-radius)}.van-card__content{position:relative;display:flex;flex:1;flex-direction:column;justify-content:space-between;min-width:0;min-height:var(--van-card-thumb-size)}.van-card__content--centered{justify-content:center}.van-card__title,.van-card__desc{word-wrap:break-word}.van-card__title{max-height:32px;font-weight:var(--van-font-bold);line-height:var(--van-card-title-line-height)}.van-card__desc{max-height:var(--van-card-desc-line-height);color:var(--van-card-desc-color);line-height:var(--van-card-desc-line-height)}.van-card__bottom{line-height:var(--van-line-height-md)}.van-card__price{display:inline-block;color:var(--van-card-price-color);font-weight:var(--van-font-bold);font-size:var(--van-card-price-font-size)}.van-card__price-integer{font-size:var(--van-card-price-integer-font-size);font-family:var(--van-card-price-font)}.van-card__price-decimal{font-family:var(--van-card-price-font)}.van-card__origin-price{display:inline-block;margin-left:5px;color:var(--van-card-origin-price-color);font-size:var(--van-card-origin-price-font-size);text-decoration:line-through}.van-card__num{float:right;color:var(--van-card-num-color)}.van-card__tag{position:absolute;top:2px;left:0}.van-card__footer{flex:none;text-align:right}.van-card__footer .van-button{margin-left:5px}:root{--van-cell-font-size: var(--van-font-size-md);--van-cell-line-height: 24px;--van-cell-vertical-padding: 10px;--van-cell-horizontal-padding: var(--van-padding-md);--van-cell-text-color: var(--van-text-color);--van-cell-background: var(--van-background-2);--van-cell-border-color: var(--van-border-color);--van-cell-active-color: var(--van-active-color);--van-cell-required-color: var(--van-danger-color);--van-cell-label-color: var(--van-text-color-2);--van-cell-label-font-size: var(--van-font-size-sm);--van-cell-label-line-height: var(--van-line-height-sm);--van-cell-label-margin-top: var(--van-padding-base);--van-cell-value-color: var(--van-text-color-2);--van-cell-value-font-size: inherit;--van-cell-icon-size: 16px;--van-cell-right-icon-color: var(--van-gray-6);--van-cell-large-vertical-padding: var(--van-padding-sm);--van-cell-large-title-font-size: var(--van-font-size-lg);--van-cell-large-label-font-size: var(--van-font-size-md);--van-cell-large-value-font-size: inherit}.van-cell{position:relative;display:flex;box-sizing:border-box;width:100%;padding:var(--van-cell-vertical-padding) var(--van-cell-horizontal-padding);overflow:hidden;color:var(--van-cell-text-color);font-size:var(--van-cell-font-size);line-height:var(--van-cell-line-height);background:var(--van-cell-background)}.van-cell:after{position:absolute;box-sizing:border-box;content:" ";pointer-events:none;right:var(--van-padding-md);bottom:0;left:var(--van-padding-md);border-bottom:1px solid var(--van-cell-border-color);transform:scaleY(.5)}.van-cell:last-child:after,.van-cell--borderless:after{display:none}.van-cell__label{margin-top:var(--van-cell-label-margin-top);color:var(--van-cell-label-color);font-size:var(--van-cell-label-font-size);line-height:var(--van-cell-label-line-height)}.van-cell__title,.van-cell__value{flex:1}.van-cell__value{position:relative;overflow:hidden;color:var(--van-cell-value-color);font-size:var(--van-cell-value-font-size);text-align:right;vertical-align:middle;word-wrap:break-word}.van-cell__left-icon,.van-cell__right-icon{height:var(--van-cell-line-height);font-size:var(--van-cell-icon-size);line-height:var(--van-cell-line-height)}.van-cell__left-icon{margin-right:var(--van-padding-base)}.van-cell__right-icon{margin-left:var(--van-padding-base);color:var(--van-cell-right-icon-color)}.van-cell--clickable{cursor:pointer}.van-cell--clickable:active{background-color:var(--van-cell-active-color)}.van-cell--required{overflow:visible}.van-cell--required:before{position:absolute;left:var(--van-padding-xs);color:var(--van-cell-required-color);font-size:var(--van-cell-font-size);content:"*"}.van-cell--center{align-items:center}.van-cell--large{padding-top:var(--van-cell-large-vertical-padding);padding-bottom:var(--van-cell-large-vertical-padding)}.van-cell--large .van-cell__title{font-size:var(--van-cell-large-title-font-size)}.van-cell--large .van-cell__label{font-size:var(--van-cell-large-label-font-size)}.van-cell--large .van-cell__value{font-size:var(--van-cell-large-value-font-size)}:root{--van-coupon-cell-selected-text-color: var(--van-text-color)}.van-coupon-cell__value--selected{color:var(--van-coupon-cell-selected-text-color)}:root{--van-contact-card-padding: var(--van-padding-md);--van-contact-card-add-icon-size: 40px;--van-contact-card-add-icon-color: var(--van-primary-color);--van-contact-card-title-line-height: var(--van-line-height-md)}.van-contact-card{padding:var(--van-contact-card-padding)}.van-contact-card__title{margin-left:5px;line-height:var(--van-contact-card-title-line-height)}.van-contact-card--add .van-contact-card__value{line-height:var(--van-contact-card-add-icon-size)}.van-contact-card--add .van-cell__left-icon{color:var(--van-contact-card-add-icon-color);font-size:var(--van-contact-card-add-icon-size)}.van-contact-card:before{position:absolute;right:0;bottom:0;left:0;height:2px;background:repeating-linear-gradient(-45deg,var(--van-warning-color) 0,var(--van-warning-color) 20%,transparent 0,transparent 25%,var(--van-primary-color) 0,var(--van-primary-color) 45%,transparent 0,transparent 50%);background-size:80px;content:""}:root{--van-collapse-item-duration: var(--van-duration-base);--van-collapse-item-content-padding: var(--van-padding-sm) var(--van-padding-md);--van-collapse-item-content-font-size: var(--van-font-size-md);--van-collapse-item-content-line-height: 1.5;--van-collapse-item-content-text-color: var(--van-text-color-2);--van-collapse-item-content-background: var(--van-background-2);--van-collapse-item-title-disabled-color: var(--van-text-color-3)}.van-collapse-item{position:relative}.van-collapse-item--border:after{position:absolute;box-sizing:border-box;content:" ";pointer-events:none;top:0;right:var(--van-padding-md);left:var(--van-padding-md);border-top:1px solid var(--van-border-color);transform:scaleY(.5)}.van-collapse-item__title .van-cell__right-icon:before{transform:rotate(90deg) translateZ(0);transition:transform var(--van-collapse-item-duration)}.van-collapse-item__title:after{right:var(--van-padding-md);display:none}.van-collapse-item__title--expanded .van-cell__right-icon:before{transform:rotate(-90deg)}.van-collapse-item__title--expanded:after{display:block}.van-collapse-item__title--borderless:after{display:none}.van-collapse-item__title--disabled{cursor:not-allowed}.van-collapse-item__title--disabled,.van-collapse-item__title--disabled .van-cell__right-icon{color:var(--van-collapse-item-title-disabled-color)}.van-collapse-item__wrapper{overflow:hidden;transition:height var(--van-collapse-item-duration) ease-in-out;will-change:height}.van-collapse-item__content{padding:var(--van-collapse-item-content-padding);color:var(--van-collapse-item-content-text-color);font-size:var(--van-collapse-item-content-font-size);line-height:var(--van-collapse-item-content-line-height);background:var(--van-collapse-item-content-background)}:root{--van-field-label-width: 6.2em;--van-field-label-color: var(--van-text-color);--van-field-label-margin-right: var(--van-padding-sm);--van-field-input-text-color: var(--van-text-color);--van-field-input-error-text-color: var(--van-danger-color);--van-field-input-disabled-text-color: var(--van-text-color-3);--van-field-placeholder-text-color: var(--van-text-color-3);--van-field-icon-size: 18px;--van-field-clear-icon-size: 18px;--van-field-clear-icon-color: var(--van-gray-5);--van-field-right-icon-color: var(--van-gray-6);--van-field-error-message-color: var(--van-danger-color);--van-field-error-message-font-size: 12px;--van-field-text-area-min-height: 60px;--van-field-word-limit-color: var(--van-gray-7);--van-field-word-limit-font-size: var(--van-font-size-sm);--van-field-word-limit-line-height: 16px;--van-field-disabled-text-color: var(--van-text-color-3);--van-field-required-mark-color: var(--van-red)}.van-field{flex-wrap:wrap}.van-field__label{flex:none;box-sizing:border-box;width:var(--van-field-label-width);margin-right:var(--van-field-label-margin-right);color:var(--van-field-label-color);text-align:left;word-wrap:break-word}.van-field__label--center{text-align:center}.van-field__label--right{text-align:right}.van-field__label--top{display:flex;width:100%;text-align:left;margin-bottom:var(--van-padding-base);overflow-wrap:break-word}.van-field__label--required:before{margin-right:2px;color:var(--van-field-required-mark-color);content:"*"}.van-field--disabled .van-field__label{color:var(--van-field-disabled-text-color)}.van-field__value{overflow:visible}.van-field__body{display:flex;align-items:center}.van-field__control{display:block;box-sizing:border-box;width:100%;min-width:0;margin:0;padding:0;color:var(--van-field-input-text-color);line-height:inherit;text-align:left;background-color:transparent;border:0;resize:none;-webkit-user-select:auto;user-select:auto}.van-field__control::-webkit-input-placeholder{color:var(--van-field-placeholder-text-color)}.van-field__control::placeholder{color:var(--van-field-placeholder-text-color)}.van-field__control:read-only{cursor:default}.van-field__control:disabled{color:var(--van-field-input-disabled-text-color);cursor:not-allowed;opacity:1;-webkit-text-fill-color:var(--van-field-input-disabled-text-color)}.van-field__control--center{justify-content:center;text-align:center}.van-field__control--right{justify-content:flex-end;text-align:right}.van-field__control--custom{display:flex;align-items:center;min-height:var(--van-cell-line-height)}.van-field__control--error::-webkit-input-placeholder{color:var(--van-field-input-error-text-color);-webkit-text-fill-color:currentColor}.van-field__control--error,.van-field__control--error::placeholder{color:var(--van-field-input-error-text-color);-webkit-text-fill-color:currentColor}.van-field__control--min-height{min-height:var(--van-field-text-area-min-height)}.van-field__control[type=date],.van-field__control[type=time],.van-field__control[type=datetime-local]{min-height:var(--van-cell-line-height)}.van-field__control[type=search]{-webkit-appearance:none}.van-field__clear,.van-field__icon,.van-field__button,.van-field__right-icon{flex-shrink:0}.van-field__clear,.van-field__right-icon{margin-right:calc(var(--van-padding-xs) * -1);padding:0 var(--van-padding-xs);line-height:inherit}.van-field__clear{color:var(--van-field-clear-icon-color);font-size:var(--van-field-clear-icon-size);cursor:pointer}.van-field__left-icon .van-icon,.van-field__right-icon .van-icon{display:block;font-size:var(--van-field-icon-size);line-height:inherit}.van-field__left-icon{margin-right:var(--van-padding-base)}.van-field__right-icon{color:var(--van-field-right-icon-color)}.van-field__button{padding-left:var(--van-padding-xs)}.van-field__error-message{color:var(--van-field-error-message-color);font-size:var(--van-field-error-message-font-size);text-align:left}.van-field__error-message--center{text-align:center}.van-field__error-message--right{text-align:right}.van-field__word-limit{margin-top:var(--van-padding-base);color:var(--van-field-word-limit-color);font-size:var(--van-field-word-limit-font-size);line-height:var(--van-field-word-limit-line-height);text-align:right}:root{--van-search-padding: 10px var(--van-padding-sm);--van-search-background: var(--van-background-2);--van-search-content-background: var(--van-background);--van-search-input-height: 34px;--van-search-label-padding: 0 5px;--van-search-label-color: var(--van-text-color);--van-search-label-font-size: var(--van-font-size-md);--van-search-left-icon-color: var(--van-gray-6);--van-search-action-padding: 0 var(--van-padding-xs);--van-search-action-text-color: var(--van-text-color);--van-search-action-font-size: var(--van-font-size-md)}.van-search{display:flex;align-items:center;box-sizing:border-box;padding:var(--van-search-padding);background:var(--van-search-background)}.van-search__content{display:flex;flex:1;padding-left:var(--van-padding-sm);background:var(--van-search-content-background);border-radius:var(--van-radius-sm)}.van-search__content--round{border-radius:var(--van-radius-max)}.van-search__label{padding:var(--van-search-label-padding);color:var(--van-search-label-color);font-size:var(--van-search-label-font-size);line-height:var(--van-search-input-height)}.van-search__field{flex:1;align-items:center;padding:0 var(--van-padding-xs) 0 0;height:var(--van-search-input-height);background-color:transparent}.van-search__field .van-field__left-icon{color:var(--van-search-left-icon-color)}.van-search__field--with-message{height:auto;align-items:flex-start;padding-top:5px;padding-bottom:5px}.van-search--show-action{padding-right:0}.van-search input::-webkit-search-decoration,.van-search input::-webkit-search-cancel-button,.van-search input::-webkit-search-results-button,.van-search input::-webkit-search-results-decoration{display:none}.van-search__action{padding:var(--van-search-action-padding);color:var(--van-search-action-text-color);font-size:var(--van-search-action-font-size);line-height:var(--van-search-input-height);cursor:pointer;-webkit-user-select:none;user-select:none}.van-search__action:active{background-color:var(--van-active-color)}:root{--van-action-bar-icon-width: 48px;--van-action-bar-icon-height: 100%;--van-action-bar-icon-color: var(--van-text-color);--van-action-bar-icon-size: 18px;--van-action-bar-icon-font-size: var(--van-font-size-xs);--van-action-bar-icon-active-color: var(--van-active-color);--van-action-bar-icon-text-color: var(--van-text-color);--van-action-bar-icon-background: var(--van-background-2)}.van-action-bar-icon{display:flex;flex-direction:column;justify-content:center;min-width:var(--van-action-bar-icon-width);height:var(--van-action-bar-icon-height);color:var(--van-action-bar-icon-text-color);font-size:var(--van-action-bar-icon-font-size);line-height:1;text-align:center;background:var(--van-action-bar-icon-background);cursor:pointer}.van-action-bar-icon:active{background-color:var(--van-action-bar-icon-active-color)}.van-action-bar-icon__icon{margin:0 auto var(--van-padding-base);color:var(--van-action-bar-icon-color);font-size:var(--van-action-bar-icon-size)}:root{--van-loading-text-color: var(--van-text-color-2);--van-loading-text-font-size: var(--van-font-size-md);--van-loading-spinner-color: var(--van-gray-5);--van-loading-spinner-size: 30px;--van-loading-spinner-duration: .8s}.van-loading{position:relative;color:var(--van-loading-spinner-color);font-size:0;vertical-align:middle}.van-loading__spinner{position:relative;display:inline-block;width:var(--van-loading-spinner-size);max-width:100%;height:var(--van-loading-spinner-size);max-height:100%;vertical-align:middle;animation:van-rotate var(--van-loading-spinner-duration) linear infinite}.van-loading__spinner--spinner{animation-timing-function:steps(12)}.van-loading__spinner--circular{animation-duration:2s}.van-loading__line{position:absolute;top:0;left:0;width:100%;height:100%}.van-loading__line:before{display:block;width:2px;height:25%;margin:0 auto;background-color:currentColor;border-radius:40%;content:" "}.van-loading__circular{display:block;width:100%;height:100%}.van-loading__circular circle{animation:van-circular 1.5s ease-in-out infinite;stroke:currentColor;stroke-width:3;stroke-linecap:round}.van-loading__text{display:inline-block;margin-left:var(--van-padding-xs);color:var(--van-loading-text-color);font-size:var(--van-loading-text-font-size);vertical-align:middle}.van-loading--vertical{display:flex;flex-direction:column;align-items:center}.van-loading--vertical .van-loading__text{margin:var(--van-padding-xs) 0 0}@keyframes van-circular{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40}to{stroke-dasharray:90,150;stroke-dashoffset:-120}}.van-loading__line--1{transform:rotate(30deg);opacity:1}.van-loading__line--2{transform:rotate(60deg);opacity:.9375}.van-loading__line--3{transform:rotate(90deg);opacity:.875}.van-loading__line--4{transform:rotate(120deg);opacity:.8125}.van-loading__line--5{transform:rotate(150deg);opacity:.75}.van-loading__line--6{transform:rotate(180deg);opacity:.6875}.van-loading__line--7{transform:rotate(210deg);opacity:.625}.van-loading__line--8{transform:rotate(240deg);opacity:.5625}.van-loading__line--9{transform:rotate(270deg);opacity:.5}.van-loading__line--10{transform:rotate(300deg);opacity:.4375}.van-loading__line--11{transform:rotate(330deg);opacity:.375}.van-loading__line--12{transform:rotate(360deg);opacity:.3125}:root{--van-pull-refresh-head-height: 50px;--van-pull-refresh-head-font-size: var(--van-font-size-md);--van-pull-refresh-head-text-color: var(--van-text-color-2);--van-pull-refresh-loading-icon-size: 16px}.van-pull-refresh{overflow:hidden}.van-pull-refresh__track{position:relative;height:100%;transition-property:transform}.van-pull-refresh__head{position:absolute;left:0;width:100%;height:var(--van-pull-refresh-head-height);overflow:hidden;color:var(--van-pull-refresh-head-text-color);font-size:var(--van-pull-refresh-head-font-size);line-height:var(--van-pull-refresh-head-height);text-align:center;transform:translateY(-100%)}.van-pull-refresh__loading .van-loading__spinner{width:var(--van-pull-refresh-loading-icon-size);height:var(--van-pull-refresh-loading-icon-size)}:root{--van-number-keyboard-background: var(--van-gray-2);--van-number-keyboard-key-height: 48px;--van-number-keyboard-key-font-size: 28px;--van-number-keyboard-key-active-color: var(--van-gray-3);--van-number-keyboard-key-background: var(--van-background-2);--van-number-keyboard-delete-font-size: var(--van-font-size-lg);--van-number-keyboard-title-color: var(--van-gray-7);--van-number-keyboard-title-height: 34px;--van-number-keyboard-title-font-size: var(--van-font-size-lg);--van-number-keyboard-close-padding: 0 var(--van-padding-md);--van-number-keyboard-close-color: var(--van-primary-color);--van-number-keyboard-close-font-size: var(--van-font-size-md);--van-number-keyboard-button-text-color: var(--van-white);--van-number-keyboard-button-background: var(--van-primary-color);--van-number-keyboard-z-index: 100}.van-theme-dark{--van-number-keyboard-background: var(--van-gray-8);--van-number-keyboard-key-background: var(--van-gray-7);--van-number-keyboard-key-active-color: var(--van-gray-6)}.van-number-keyboard{position:fixed;bottom:0;left:0;z-index:var(--van-number-keyboard-z-index);width:100%;padding-bottom:22px;background:var(--van-number-keyboard-background);-webkit-user-select:none;user-select:none}.van-number-keyboard--with-title{border-radius:20px 20px 0 0}.van-number-keyboard__header{position:relative;display:flex;align-items:center;justify-content:center;box-sizing:content-box;height:var(--van-number-keyboard-title-height);padding-top:6px;color:var(--van-number-keyboard-title-color);font-size:var(--van-number-keyboard-title-font-size)}.van-number-keyboard__title{display:inline-block;font-weight:400}.van-number-keyboard__title-left{position:absolute;left:0}.van-number-keyboard__body{display:flex;padding:6px 0 0 6px}.van-number-keyboard__keys{display:flex;flex:3;flex-wrap:wrap}.van-number-keyboard__close{position:absolute;right:0;height:100%;padding:var(--van-number-keyboard-close-padding);color:var(--van-number-keyboard-close-color);font-size:var(--van-number-keyboard-close-font-size);background-color:transparent;border:none}.van-number-keyboard__sidebar{display:flex;flex:1;flex-direction:column}.van-number-keyboard--unfit{padding-bottom:0}.van-key{display:flex;align-items:center;justify-content:center;height:var(--van-number-keyboard-key-height);font-size:var(--van-number-keyboard-key-font-size);line-height:1.5;background:var(--van-number-keyboard-key-background);border-radius:var(--van-radius-lg);cursor:pointer}.van-key--large{position:absolute;top:0;right:6px;bottom:6px;left:0;height:auto}.van-key--blue,.van-key--delete{font-size:var(--van-number-keyboard-delete-font-size)}.van-key--active{background-color:var(--van-number-keyboard-key-active-color)}.van-key--blue{color:var(--van-number-keyboard-button-text-color);background:var(--van-number-keyboard-button-background)}.van-key--blue.van-key--active{opacity:var(--van-active-opacity)}.van-key__wrapper{position:relative;flex:1;flex-basis:33%;box-sizing:border-box;padding:0 6px 6px 0}.van-key__wrapper--wider{flex-basis:66%}.van-key__delete-icon{width:32px;height:22px}.van-key__collapse-icon{width:30px;height:24px}.van-key__loading-icon{color:var(--van-number-keyboard-button-text-color)}:root{--van-list-text-color: var(--van-text-color-2);--van-list-text-font-size: var(--van-font-size-md);--van-list-text-line-height: 50px;--van-list-loading-icon-size: 16px}.van-list__loading,.van-list__finished-text,.van-list__error-text{color:var(--van-list-text-color);font-size:var(--van-list-text-font-size);line-height:var(--van-list-text-line-height);text-align:center}.van-list__placeholder{height:0;pointer-events:none}.van-list__loading-icon .van-loading__spinner{width:var(--van-list-loading-icon-size);height:var(--van-list-loading-icon-size)}:root{--van-switch-size: 26px;--van-switch-width: calc(1.8em + 4px) ;--van-switch-height: calc(1em + 4px) ;--van-switch-node-size: 1em;--van-switch-node-background: var(--van-white);--van-switch-node-shadow: 0 3px 1px 0 rgba(0, 0, 0, .05);--van-switch-background: rgba(120, 120, 128, .16);--van-switch-on-background: var(--van-primary-color);--van-switch-duration: var(--van-duration-base);--van-switch-disabled-opacity: var(--van-disabled-opacity)}.van-theme-dark{--van-switch-background: rgba(120, 120, 128, .32)}.van-switch{position:relative;display:inline-block;box-sizing:content-box;width:var(--van-switch-width);height:var(--van-switch-height);font-size:var(--van-switch-size);background:var(--van-switch-background);border-radius:var(--van-switch-node-size);cursor:pointer;transition:background-color var(--van-switch-duration)}.van-switch__node{position:absolute;top:2px;left:2px;width:var(--van-switch-node-size);height:var(--van-switch-node-size);font-size:inherit;background:var(--van-switch-node-background);border-radius:100%;box-shadow:var(--van-switch-node-shadow);transition:transform var(--van-switch-duration) cubic-bezier(.3,1.05,.4,1.05)}.van-switch__loading{top:25%;left:25%;width:50%;height:50%;line-height:1}.van-switch--on{background:var(--van-switch-on-background)}.van-switch--on .van-switch__node{transform:translate(calc(var(--van-switch-width) - var(--van-switch-node-size) - 4px))}.van-switch--on .van-switch__loading{color:var(--van-switch-on-background)}.van-switch--disabled{cursor:not-allowed;opacity:var(--van-switch-disabled-opacity)}.van-switch--loading{cursor:default}:root{--van-button-mini-height: 24px;--van-button-mini-padding: 0 var(--van-padding-base);--van-button-mini-font-size: var(--van-font-size-xs);--van-button-small-height: 32px;--van-button-small-padding: 0 var(--van-padding-xs);--van-button-small-font-size: var(--van-font-size-sm);--van-button-normal-padding: 0 15px;--van-button-normal-font-size: var(--van-font-size-md);--van-button-large-height: 50px;--van-button-default-height: 44px;--van-button-default-line-height: 1.2;--van-button-default-font-size: var(--van-font-size-lg);--van-button-default-color: var(--van-text-color);--van-button-default-background: var(--van-background-2);--van-button-default-border-color: var(--van-gray-4);--van-button-primary-color: var(--van-white);--van-button-primary-background: var(--van-primary-color);--van-button-primary-border-color: var(--van-primary-color);--van-button-success-color: var(--van-white);--van-button-success-background: var(--van-success-color);--van-button-success-border-color: var(--van-success-color);--van-button-danger-color: var(--van-white);--van-button-danger-background: var(--van-danger-color);--van-button-danger-border-color: var(--van-danger-color);--van-button-warning-color: var(--van-white);--van-button-warning-background: var(--van-warning-color);--van-button-warning-border-color: var(--van-warning-color);--van-button-border-width: var(--van-border-width);--van-button-radius: var(--van-radius-md);--van-button-round-radius: var(--van-radius-max);--van-button-plain-background: var(--van-white);--van-button-disabled-opacity: var(--van-disabled-opacity);--van-button-icon-size: 1.2em;--van-button-loading-icon-size: 20px}.van-theme-dark{--van-button-plain-background: transparent}.van-button{position:relative;display:inline-block;box-sizing:border-box;height:var(--van-button-default-height);margin:0;padding:0;font-size:var(--van-button-default-font-size);line-height:var(--van-button-default-line-height);text-align:center;border-radius:var(--van-button-radius);cursor:pointer;transition:opacity var(--van-duration-fast);-webkit-appearance:none;-webkit-font-smoothing:auto}.van-button:before{position:absolute;top:50%;left:50%;width:100%;height:100%;background:var(--van-black);border:inherit;border-color:var(--van-black);border-radius:inherit;transform:translate(-50%,-50%);opacity:0;content:" "}.van-button:active:before{opacity:.1}.van-button--loading:before,.van-button--disabled:before{display:none}.van-button--default{color:var(--van-button-default-color);background:var(--van-button-default-background);border:var(--van-button-border-width) solid var(--van-button-default-border-color)}.van-button--primary{color:var(--van-button-primary-color);background:var(--van-button-primary-background);border:var(--van-button-border-width) solid var(--van-button-primary-border-color)}.van-button--success{color:var(--van-button-success-color);background:var(--van-button-success-background);border:var(--van-button-border-width) solid var(--van-button-success-border-color)}.van-button--danger{color:var(--van-button-danger-color);background:var(--van-button-danger-background);border:var(--van-button-border-width) solid var(--van-button-danger-border-color)}.van-button--warning{color:var(--van-button-warning-color);background:var(--van-button-warning-background);border:var(--van-button-border-width) solid var(--van-button-warning-border-color)}.van-button--plain{background:var(--van-button-plain-background)}.van-button--plain.van-button--primary{color:var(--van-button-primary-background)}.van-button--plain.van-button--success{color:var(--van-button-success-background)}.van-button--plain.van-button--danger{color:var(--van-button-danger-background)}.van-button--plain.van-button--warning{color:var(--van-button-warning-background)}.van-button--large{width:100%;height:var(--van-button-large-height)}.van-button--normal{padding:var(--van-button-normal-padding);font-size:var(--van-button-normal-font-size)}.van-button--small{height:var(--van-button-small-height);padding:var(--van-button-small-padding);font-size:var(--van-button-small-font-size)}.van-button__loading{color:inherit;font-size:inherit}.van-button__loading .van-loading__spinner{color:currentColor;width:var(--van-button-loading-icon-size);height:var(--van-button-loading-icon-size)}.van-button--mini{height:var(--van-button-mini-height);padding:var(--van-button-mini-padding);font-size:var(--van-button-mini-font-size)}.van-button--mini+.van-button--mini{margin-left:var(--van-padding-base)}.van-button--block{display:block;width:100%}.van-button--disabled{cursor:not-allowed;opacity:var(--van-button-disabled-opacity)}.van-button--loading{cursor:default}.van-button--round{border-radius:var(--van-button-round-radius)}.van-button--square{border-radius:0}.van-button__content{display:flex;align-items:center;justify-content:center;height:100%}.van-button__content:before{content:" "}.van-button__icon{font-size:var(--van-button-icon-size);line-height:inherit}.van-button__icon+.van-button__text,.van-button__loading+.van-button__text,.van-button__text+.van-button__icon,.van-button__text+.van-button__loading{margin-left:var(--van-padding-base)}.van-button--hairline{border-width:0}.van-button--hairline:after{border-color:inherit;border-radius:calc(var(--van-button-radius) * 2)}.van-button--hairline.van-button--round:after{border-radius:var(--van-button-round-radius)}.van-button--hairline.van-button--square:after{border-radius:0}:root{--van-submit-bar-height: 50px;--van-submit-bar-z-index: 100;--van-submit-bar-background: var(--van-background-2);--van-submit-bar-button-width: 110px;--van-submit-bar-price-color: var(--van-danger-color);--van-submit-bar-price-font-size: var(--van-font-size-sm);--van-submit-bar-price-integer-font-size: 20px;--van-submit-bar-price-font: var(--van-price-font);--van-submit-bar-text-color: var(--van-text-color);--van-submit-bar-text-font-size: var(--van-font-size-md);--van-submit-bar-tip-padding: var(--van-padding-xs) var(--van-padding-sm);--van-submit-bar-tip-font-size: var(--van-font-size-sm);--van-submit-bar-tip-line-height: 1.5;--van-submit-bar-tip-color: var(--van-orange-dark);--van-submit-bar-tip-background: var(--van-orange-light);--van-submit-bar-tip-icon-size: 12px;--van-submit-bar-button-height: 40px;--van-submit-bar-padding: 0 var(--van-padding-md)}.van-submit-bar{position:fixed;bottom:0;left:0;z-index:var(--van-submit-bar-z-index);width:100%;background:var(--van-submit-bar-background);-webkit-user-select:none;user-select:none}.van-submit-bar__tip{padding:var(--van-submit-bar-tip-padding);color:var(--van-submit-bar-tip-color);font-size:var(--van-submit-bar-tip-font-size);line-height:var(--van-submit-bar-tip-line-height);background:var(--van-submit-bar-tip-background)}.van-submit-bar__tip-icon{margin-right:var(--van-padding-base);font-size:var(--van-submit-bar-tip-icon-size);vertical-align:middle}.van-submit-bar__tip-text{vertical-align:middle}.van-submit-bar__bar{display:flex;align-items:center;justify-content:flex-end;height:var(--van-submit-bar-height);padding:var(--van-submit-bar-padding);font-size:var(--van-submit-bar-text-font-size)}.van-submit-bar__text{flex:1;padding-right:var(--van-padding-sm);color:var(--van-submit-bar-text-color);text-align:right}.van-submit-bar__text span{display:inline-block}.van-submit-bar__suffix-label{margin-left:var(--van-padding-base);font-weight:var(--van-font-bold)}.van-submit-bar__price{color:var(--van-submit-bar-price-color);font-weight:var(--van-font-bold);font-size:var(--van-submit-bar-price-font-size);margin-left:var(--van-padding-base)}.van-submit-bar__price-integer{font-size:var(--van-submit-bar-price-integer-font-size);font-family:var(--van-submit-bar-price-font)}.van-submit-bar__button{width:var(--van-submit-bar-button-width);height:var(--van-submit-bar-button-height);font-weight:var(--van-font-bold);border:none}.van-submit-bar__button--danger{background:var(--van-gradient-red)}:root{--van-signature-padding: var(--van-padding-xs);--van-signature-content-height: 200px;--van-signature-content-background: var(--van-background-2);--van-signature-content-border: 1px dotted #dadada}.van-signature{padding:var(--van-signature-padding)}.van-signature__content{display:flex;justify-content:center;align-items:center;height:var(--van-signature-content-height);background-color:var(--van-signature-content-background);border:var(--van-signature-content-border);border-radius:var(--van-radius-lg);overflow:hidden}.van-signature__content canvas{width:100%;height:100%}.van-signature__footer{display:flex;justify-content:flex-end}.van-signature__footer .van-button{padding:0 var(--van-padding-md);margin-top:var(--van-padding-xs);margin-left:var(--van-padding-xs)}:root{--van-contact-edit-padding: var(--van-padding-md);--van-contact-edit-fields-radius: var(--van-radius-md);--van-contact-edit-buttons-padding: var(--van-padding-xl) 0;--van-contact-edit-button-margin-bottom: var(--van-padding-sm);--van-contact-edit-button-font-size: var(--van-font-size-lg);--van-contact-edit-field-label-width: 4.1em}.van-contact-edit{padding:var(--van-contact-edit-padding)}.van-contact-edit__fields{overflow:hidden;border-radius:var(--van-contact-edit-fields-radius)}.van-contact-edit__fields .van-field__label{width:var(--van-contact-edit-field-label-width)}.van-contact-edit__switch-cell{margin-top:10px;padding-top:9px;padding-bottom:9px;border-radius:var(--van-contact-edit-fields-radius)}.van-contact-edit__buttons{padding:var(--van-contact-edit-buttons-padding)}.van-contact-edit__button{margin-bottom:var(--van-contact-edit-button-margin-bottom);font-size:var(--van-contact-edit-button-font-size)}:root{--van-action-bar-button-height: 40px;--van-action-bar-button-warning-color: var(--van-gradient-orange);--van-action-bar-button-danger-color: var(--van-gradient-red)}.van-action-bar-button{flex:1;height:var(--van-action-bar-button-height);font-weight:var(--van-font-bold);font-size:var(--van-font-size-md);border:none;border-radius:0}.van-action-bar-button--first{margin-left:5px;border-top-left-radius:var(--van-radius-max);border-bottom-left-radius:var(--van-radius-max)}.van-action-bar-button--last{margin-right:5px;border-top-right-radius:var(--van-radius-max);border-bottom-right-radius:var(--van-radius-max)}.van-action-bar-button--warning{background:var(--van-action-bar-button-warning-color)}.van-action-bar-button--danger{background:var(--van-action-bar-button-danger-color)}@media (max-width: 321px){.van-action-bar-button{font-size:13px}}:root{--van-overlay-z-index: 1;--van-overlay-background: rgba(0, 0, 0, .7)}.van-overlay{position:fixed;top:0;left:0;z-index:var(--van-overlay-z-index);width:100%;height:100%;background:var(--van-overlay-background)}:root{--van-popup-background: var(--van-background-2);--van-popup-transition: transform var(--van-duration-base);--van-popup-round-radius: 16px;--van-popup-close-icon-size: 22px;--van-popup-close-icon-color: var(--van-gray-5);--van-popup-close-icon-margin: 16px;--van-popup-close-icon-z-index: 1}.van-overflow-hidden{overflow:hidden!important}.van-popup{position:fixed;max-height:100%;overflow-y:auto;box-sizing:border-box;background:var(--van-popup-background);transition:var(--van-popup-transition);-webkit-overflow-scrolling:touch}.van-popup--center{top:50%;left:0;right:0;width:-webkit-fit-content;width:fit-content;max-width:calc(100vw - var(--van-padding-md) * 2);margin:0 auto;transform:translateY(-50%)}.van-popup--center.van-popup--round{border-radius:var(--van-popup-round-radius)}.van-popup--top{top:0;left:0;width:100%}.van-popup--top.van-popup--round{border-radius:0 0 var(--van-popup-round-radius) var(--van-popup-round-radius)}.van-popup--right{top:50%;right:0;transform:translate3d(0,-50%,0)}.van-popup--right.van-popup--round{border-radius:var(--van-popup-round-radius) 0 0 var(--van-popup-round-radius)}.van-popup--bottom{bottom:0;left:0;width:100%}.van-popup--bottom.van-popup--round{border-radius:var(--van-popup-round-radius) var(--van-popup-round-radius) 0 0}.van-popup--left{top:50%;left:0;transform:translate3d(0,-50%,0)}.van-popup--left.van-popup--round{border-radius:0 var(--van-popup-round-radius) var(--van-popup-round-radius) 0}.van-popup-slide-top-enter-active,.van-popup-slide-left-enter-active,.van-popup-slide-right-enter-active,.van-popup-slide-bottom-enter-active{transition-timing-function:var(--van-ease-out)}.van-popup-slide-top-leave-active,.van-popup-slide-left-leave-active,.van-popup-slide-right-leave-active,.van-popup-slide-bottom-leave-active{transition-timing-function:var(--van-ease-in)}.van-popup-slide-top-enter-from,.van-popup-slide-top-leave-active{transform:translate3d(0,-100%,0)}.van-popup-slide-right-enter-from,.van-popup-slide-right-leave-active{transform:translate3d(100%,-50%,0)}.van-popup-slide-bottom-enter-from,.van-popup-slide-bottom-leave-active{transform:translate3d(0,100%,0)}.van-popup-slide-left-enter-from,.van-popup-slide-left-leave-active{transform:translate3d(-100%,-50%,0)}.van-popup__close-icon{position:absolute;z-index:var(--van-popup-close-icon-z-index);color:var(--van-popup-close-icon-color);font-size:var(--van-popup-close-icon-size)}.van-popup__close-icon--top-left{top:var(--van-popup-close-icon-margin);left:var(--van-popup-close-icon-margin)}.van-popup__close-icon--top-right{top:var(--van-popup-close-icon-margin);right:var(--van-popup-close-icon-margin)}.van-popup__close-icon--bottom-left{bottom:var(--van-popup-close-icon-margin);left:var(--van-popup-close-icon-margin)}.van-popup__close-icon--bottom-right{right:var(--van-popup-close-icon-margin);bottom:var(--van-popup-close-icon-margin)}:root{--van-share-sheet-header-padding: var(--van-padding-sm) var(--van-padding-md);--van-share-sheet-title-color: var(--van-text-color);--van-share-sheet-title-font-size: var(--van-font-size-md);--van-share-sheet-title-line-height: var(--van-line-height-md);--van-share-sheet-description-color: var(--van-text-color-2);--van-share-sheet-description-font-size: var(--van-font-size-sm);--van-share-sheet-description-line-height: 16px;--van-share-sheet-icon-size: 48px;--van-share-sheet-option-name-color: var(--van-gray-7);--van-share-sheet-option-name-font-size: var(--van-font-size-sm);--van-share-sheet-option-description-color: var(--van-text-color-3);--van-share-sheet-option-description-font-size: var(--van-font-size-sm);--van-share-sheet-cancel-button-font-size: var(--van-font-size-lg);--van-share-sheet-cancel-button-height: 48px;--van-share-sheet-cancel-button-background: var(--van-background-2)}.van-share-sheet__header{padding:var(--van-share-sheet-header-padding);text-align:center}.van-share-sheet__title{margin-top:var(--van-padding-xs);color:var(--van-share-sheet-title-color);font-weight:400;font-size:var(--van-share-sheet-title-font-size);line-height:var(--van-share-sheet-title-line-height)}.van-share-sheet__description{display:block;margin-top:var(--van-padding-xs);color:var(--van-share-sheet-description-color);font-size:var(--van-share-sheet-description-font-size);line-height:var(--van-share-sheet-description-line-height)}.van-share-sheet__options{position:relative;display:flex;padding:var(--van-padding-md) 0 var(--van-padding-md) var(--van-padding-xs);overflow-x:auto;overflow-y:visible;-webkit-overflow-scrolling:touch}.van-share-sheet__options--border:before{position:absolute;box-sizing:border-box;content:" ";pointer-events:none;top:0;right:0;left:var(--van-padding-md);border-top:1px solid var(--van-border-color);transform:scaleY(.5)}.van-share-sheet__options::-webkit-scrollbar{height:0}.van-share-sheet__option{display:flex;flex-direction:column;align-items:center;-webkit-user-select:none;user-select:none}.van-share-sheet__icon,.van-share-sheet__image-icon{width:var(--van-share-sheet-icon-size);height:var(--van-share-sheet-icon-size);margin:0 var(--van-padding-md)}.van-share-sheet__icon{display:flex;align-items:center;justify-content:center;color:var(--van-gray-7);border-radius:100%;background-color:var(--van-gray-2)}.van-share-sheet__icon--link,.van-share-sheet__icon--poster,.van-share-sheet__icon--qrcode{font-size:26px}.van-share-sheet__icon--weapp-qrcode{font-size:28px}.van-share-sheet__icon--qq,.van-share-sheet__icon--weibo,.van-share-sheet__icon--wechat,.van-share-sheet__icon--wechat-moments{font-size:30px;color:var(--van-white)}.van-share-sheet__icon--qq{background-color:#38b9fa}.van-share-sheet__icon--wechat{background-color:#0bc15f}.van-share-sheet__icon--weibo{background-color:#ee575e}.van-share-sheet__icon--wechat-moments{background-color:#7bc845}.van-share-sheet__name{margin-top:var(--van-padding-xs);padding:0 var(--van-padding-base);color:var(--van-share-sheet-option-name-color);font-size:var(--van-share-sheet-option-name-font-size)}.van-share-sheet__option-description{padding:0 var(--van-padding-base);color:var(--van-share-sheet-option-description-color);font-size:var(--van-share-sheet-option-description-font-size)}.van-share-sheet__cancel{display:block;width:100%;padding:0;font-size:var(--van-share-sheet-cancel-button-font-size);line-height:var(--van-share-sheet-cancel-button-height);text-align:center;background:var(--van-share-sheet-cancel-button-background);border:none;cursor:pointer}.van-share-sheet__cancel:before{display:block;height:var(--van-padding-xs);background-color:var(--van-background);content:" "}.van-share-sheet__cancel:active{background-color:var(--van-active-color)}:root{--van-popover-arrow-size: 6px;--van-popover-radius: var(--van-radius-lg);--van-popover-action-width: 128px;--van-popover-action-height: 44px;--van-popover-action-font-size: var(--van-font-size-md);--van-popover-action-line-height: var(--van-line-height-md);--van-popover-action-icon-size: 20px;--van-popover-horizontal-action-height: 34px;--van-popover-horizontal-action-icon-size: 16px;--van-popover-light-text-color: var(--van-text-color);--van-popover-light-background: var(--van-background-2);--van-popover-light-action-disabled-text-color: var(--van-text-color-3);--van-popover-dark-text-color: var(--van-white);--van-popover-dark-background: #4a4a4a;--van-popover-dark-action-disabled-text-color: var(--van-text-color-2)}.van-popover{position:absolute;overflow:visible;background-color:transparent;transition:opacity .15s,transform .15s}.van-popover__wrapper{display:inline-block}.van-popover__arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid;border-width:var(--van-popover-arrow-size)}.van-popover__content{overflow:hidden;border-radius:var(--van-popover-radius)}.van-popover__content--horizontal{display:flex;width:-webkit-max-content;width:max-content}.van-popover__content--horizontal .van-popover__action{flex:none;width:auto;height:var(--van-popover-horizontal-action-height);padding:0 var(--van-padding-sm)}.van-popover__content--horizontal .van-popover__action:last-child:after{display:none}.van-popover__content--horizontal .van-popover__action-icon{margin-right:var(--van-padding-base);font-size:var(--van-popover-horizontal-action-icon-size)}.van-popover__action{position:relative;display:flex;align-items:center;box-sizing:border-box;width:var(--van-popover-action-width);height:var(--van-popover-action-height);padding:0 var(--van-padding-md);font-size:var(--van-popover-action-font-size);line-height:var(--van-line-height-md);cursor:pointer}.van-popover__action:last-child .van-popover__action-text:after{display:none}.van-popover__action-text{display:flex;flex:1;align-items:center;justify-content:center;height:100%}.van-popover__action-icon{margin-right:var(--van-padding-xs);font-size:var(--van-popover-action-icon-size)}.van-popover__action--with-icon .van-popover__action-text{justify-content:flex-start}.van-popover[data-popper-placement^=top] .van-popover__arrow{bottom:0;border-top-color:currentColor;border-bottom-width:0;margin-bottom:calc(var(--van-popover-arrow-size) * -1)}.van-popover[data-popper-placement=top]{transform-origin:50% 100%}.van-popover[data-popper-placement=top] .van-popover__arrow{left:50%;transform:translate(-50%)}.van-popover[data-popper-placement=top-start]{transform-origin:0 100%}.van-popover[data-popper-placement=top-start] .van-popover__arrow{left:var(--van-padding-md)}.van-popover[data-popper-placement=top-end]{transform-origin:100% 100%}.van-popover[data-popper-placement=top-end] .van-popover__arrow{right:var(--van-padding-md)}.van-popover[data-popper-placement^=left] .van-popover__arrow{right:0;border-right-width:0;border-left-color:currentColor;margin-right:calc(var(--van-popover-arrow-size) * -1)}.van-popover[data-popper-placement=left]{transform-origin:100% 50%}.van-popover[data-popper-placement=left] .van-popover__arrow{top:50%;transform:translateY(-50%)}.van-popover[data-popper-placement=left-start]{transform-origin:100% 0}.van-popover[data-popper-placement=left-start] .van-popover__arrow{top:var(--van-padding-md)}.van-popover[data-popper-placement=left-end]{transform-origin:100% 100%}.van-popover[data-popper-placement=left-end] .van-popover__arrow{bottom:var(--van-padding-md)}.van-popover[data-popper-placement^=right] .van-popover__arrow{left:0;border-right-color:currentColor;border-left-width:0;margin-left:calc(var(--van-popover-arrow-size) * -1)}.van-popover[data-popper-placement=right]{transform-origin:0 50%}.van-popover[data-popper-placement=right] .van-popover__arrow{top:50%;transform:translateY(-50%)}.van-popover[data-popper-placement=right-start]{transform-origin:0 0}.van-popover[data-popper-placement=right-start] .van-popover__arrow{top:var(--van-padding-md)}.van-popover[data-popper-placement=right-end]{transform-origin:0 100%}.van-popover[data-popper-placement=right-end] .van-popover__arrow{bottom:var(--van-padding-md)}.van-popover[data-popper-placement^=bottom] .van-popover__arrow{top:0;border-top-width:0;border-bottom-color:currentColor;margin-top:calc(var(--van-popover-arrow-size) * -1)}.van-popover[data-popper-placement=bottom]{transform-origin:50% 0}.van-popover[data-popper-placement=bottom] .van-popover__arrow{left:50%;transform:translate(-50%)}.van-popover[data-popper-placement=bottom-start]{transform-origin:0 0}.van-popover[data-popper-placement=bottom-start] .van-popover__arrow{left:var(--van-padding-md)}.van-popover[data-popper-placement=bottom-end]{transform-origin:100% 0}.van-popover[data-popper-placement=bottom-end] .van-popover__arrow{right:var(--van-padding-md)}.van-popover--light{color:var(--van-popover-light-text-color)}.van-popover--light .van-popover__content{background:var(--van-popover-light-background);box-shadow:0 2px 12px #3232331f}.van-popover--light .van-popover__arrow{color:var(--van-popover-light-background)}.van-popover--light .van-popover__action:active{background-color:var(--van-active-color)}.van-popover--light .van-popover__action--disabled{color:var(--van-popover-light-action-disabled-text-color);cursor:not-allowed}.van-popover--light .van-popover__action--disabled:active{background-color:transparent}.van-popover--dark{color:var(--van-popover-dark-text-color)}.van-popover--dark .van-popover__content{background:var(--van-popover-dark-background)}.van-popover--dark .van-popover__arrow{color:var(--van-popover-dark-background)}.van-popover--dark .van-popover__action:active{background-color:#0003}.van-popover--dark .van-popover__action--disabled{color:var(--van-popover-dark-action-disabled-text-color)}.van-popover--dark .van-popover__action--disabled:active{background-color:transparent}.van-popover--dark .van-popover__action-text:after{border-color:var(--van-gray-7)}.van-popover-zoom-enter-from,.van-popover-zoom-leave-active{transform:scale(.8);opacity:0}.van-popover-zoom-enter-active{transition-timing-function:var(--van-ease-out)}.van-popover-zoom-leave-active{transition-timing-function:var(--van-ease-in)}:root{--van-notify-text-color: var(--van-white);--van-notify-padding: var(--van-padding-xs) var(--van-padding-md);--van-notify-font-size: var(--van-font-size-md);--van-notify-line-height: var(--van-line-height-md);--van-notify-primary-background: var(--van-primary-color);--van-notify-success-background: var(--van-success-color);--van-notify-danger-background: var(--van-danger-color);--van-notify-warning-background: var(--van-warning-color)}.van-notify{display:flex;align-items:center;justify-content:center;box-sizing:border-box;padding:var(--van-notify-padding);color:var(--van-notify-text-color);font-size:var(--van-notify-font-size);line-height:var(--van-notify-line-height);white-space:pre-wrap;text-align:center;word-wrap:break-word}.van-notify--primary{background:var(--van-notify-primary-background)}.van-notify--success{background:var(--van-notify-success-background)}.van-notify--danger{background:var(--van-notify-danger-background)}.van-notify--warning{background:var(--van-notify-warning-background)}:root{--van-dialog-width: 320px;--van-dialog-small-screen-width: 90%;--van-dialog-font-size: var(--van-font-size-lg);--van-dialog-transition: var(--van-duration-base);--van-dialog-radius: 16px;--van-dialog-background: var(--van-background-2);--van-dialog-header-font-weight: var(--van-font-bold);--van-dialog-header-line-height: 24px;--van-dialog-header-padding-top: 26px;--van-dialog-header-isolated-padding: var(--van-padding-lg) 0;--van-dialog-message-padding: var(--van-padding-lg);--van-dialog-message-font-size: var(--van-font-size-md);--van-dialog-message-line-height: var(--van-line-height-md);--van-dialog-message-max-height: 60vh;--van-dialog-has-title-message-text-color: var(--van-gray-7);--van-dialog-has-title-message-padding-top: var(--van-padding-xs);--van-dialog-button-height: 48px;--van-dialog-round-button-height: 36px;--van-dialog-confirm-button-text-color: var(--van-primary-color)}.van-dialog{top:45%;width:var(--van-dialog-width);overflow:hidden;font-size:var(--van-dialog-font-size);background:var(--van-dialog-background);border-radius:var(--van-dialog-radius);-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:var(--van-dialog-transition);transition-property:transform,opacity}@media (max-width: 321px){.van-dialog{width:var(--van-dialog-small-screen-width)}}.van-dialog__header{color:var(--van-text-color);padding-top:var(--van-dialog-header-padding-top);font-weight:var(--van-dialog-header-font-weight);line-height:var(--van-dialog-header-line-height);text-align:center}.van-dialog__header--isolated{padding:var(--van-dialog-header-isolated-padding)}.van-dialog__content--isolated{display:flex;align-items:center;min-height:104px}.van-dialog__message{color:var(--van-text-color);flex:1;max-height:var(--van-dialog-message-max-height);padding:26px var(--van-dialog-message-padding);overflow-y:auto;font-size:var(--van-dialog-message-font-size);line-height:var(--van-dialog-message-line-height);white-space:pre-wrap;text-align:center;word-wrap:break-word;-webkit-overflow-scrolling:touch}.van-dialog__message--has-title{padding-top:var(--van-dialog-has-title-message-padding-top);color:var(--van-dialog-has-title-message-text-color)}.van-dialog__message--left{text-align:left}.van-dialog__message--right{text-align:right}.van-dialog__message--justify{text-align:justify}.van-dialog__footer{display:flex;overflow:hidden;-webkit-user-select:none;user-select:none}.van-dialog__confirm,.van-dialog__cancel{flex:1;height:var(--van-dialog-button-height);margin:0;border:0;border-radius:0}.van-dialog__confirm,.van-dialog__confirm:active{color:var(--van-dialog-confirm-button-text-color)}.van-dialog--round-button .van-dialog__footer{position:relative;height:auto;padding:var(--van-padding-xs) var(--van-padding-lg) var(--van-padding-md)}.van-dialog--round-button .van-dialog__message{padding-bottom:var(--van-padding-md);color:var(--van-text-color)}.van-dialog--round-button .van-dialog__confirm,.van-dialog--round-button .van-dialog__cancel{height:var(--van-dialog-round-button-height)}.van-dialog--round-button .van-dialog__confirm{color:var(--van-white)}.van-dialog--round-button .van-action-bar-button--first{border-top-left-radius:var(--van-radius-max);border-bottom-left-radius:var(--van-radius-max)}.van-dialog--round-button .van-action-bar-button--last{border-top-right-radius:var(--van-radius-max);border-bottom-right-radius:var(--van-radius-max)}.van-dialog-bounce-enter-from{transform:translate3d(0,-50%,0) scale(.7);opacity:0}.van-dialog-bounce-leave-active{transform:translate3d(0,-50%,0) scale(.9);opacity:0}:root{--van-toast-max-width: 70%;--van-toast-font-size: var(--van-font-size-md);--van-toast-text-color: var(--van-white);--van-toast-loading-icon-color: var(--van-white);--van-toast-line-height: var(--van-line-height-md);--van-toast-radius: var(--van-radius-lg);--van-toast-background: rgba(0, 0, 0, .7);--van-toast-icon-size: 36px;--van-toast-text-min-width: 96px;--van-toast-text-padding: var(--van-padding-xs) var(--van-padding-sm);--van-toast-default-padding: var(--van-padding-md);--van-toast-default-width: 88px;--van-toast-default-min-height: 88px;--van-toast-position-top-distance: 20%;--van-toast-position-bottom-distance: 20%}.van-toast{display:flex;flex-direction:column;align-items:center;justify-content:center;box-sizing:content-box;transition:all var(--van-duration-fast);width:var(--van-toast-default-width);max-width:var(--van-toast-max-width);min-height:var(--van-toast-default-min-height);padding:var(--van-toast-default-padding);color:var(--van-toast-text-color);font-size:var(--van-toast-font-size);line-height:var(--van-toast-line-height);white-space:pre-wrap;word-break:break-all;text-align:center;background:var(--van-toast-background);border-radius:var(--van-toast-radius)}.van-toast--break-normal{word-break:normal;word-wrap:normal}.van-toast--break-word{word-break:normal;word-wrap:break-word}.van-toast--unclickable{overflow:hidden;cursor:not-allowed}.van-toast--unclickable *{pointer-events:none}.van-toast--text,.van-toast--html{width:-webkit-fit-content;width:fit-content;min-width:var(--van-toast-text-min-width);min-height:0;padding:var(--van-toast-text-padding)}.van-toast--text .van-toast__text,.van-toast--html .van-toast__text{margin-top:0}.van-toast--top{top:var(--van-toast-position-top-distance)}.van-toast--bottom{top:auto;bottom:var(--van-toast-position-bottom-distance)}.van-toast__icon{font-size:var(--van-toast-icon-size)}.van-toast__loading{padding:var(--van-padding-base);color:var(--van-toast-loading-icon-color)}.van-toast__text{margin-top:var(--van-padding-xs)}:root{--van-action-sheet-max-height: 80%;--van-action-sheet-header-height: 48px;--van-action-sheet-header-font-size: var(--van-font-size-lg);--van-action-sheet-description-color: var(--van-text-color-2);--van-action-sheet-description-font-size: var(--van-font-size-md);--van-action-sheet-description-line-height: var(--van-line-height-md);--van-action-sheet-item-background: var(--van-background-2);--van-action-sheet-item-font-size: var(--van-font-size-lg);--van-action-sheet-item-line-height: var(--van-line-height-lg);--van-action-sheet-item-text-color: var(--van-text-color);--van-action-sheet-item-disabled-text-color: var(--van-text-color-3);--van-action-sheet-subname-color: var(--van-text-color-2);--van-action-sheet-subname-font-size: var(--van-font-size-sm);--van-action-sheet-subname-line-height: var(--van-line-height-sm);--van-action-sheet-close-icon-size: 22px;--van-action-sheet-close-icon-color: var(--van-gray-5);--van-action-sheet-close-icon-padding: 0 var(--van-padding-md);--van-action-sheet-cancel-text-color: var(--van-gray-7);--van-action-sheet-cancel-padding-top: var(--van-padding-xs);--van-action-sheet-cancel-padding-color: var(--van-background);--van-action-sheet-loading-icon-size: 22px}.van-action-sheet{display:flex;flex-direction:column;max-height:var(--van-action-sheet-max-height);overflow:hidden;color:var(--van-action-sheet-item-text-color)}.van-action-sheet__content{flex:1 auto;overflow-y:auto;-webkit-overflow-scrolling:touch}.van-action-sheet__item,.van-action-sheet__cancel{display:block;width:100%;padding:14px var(--van-padding-md);font-size:var(--van-action-sheet-item-font-size);background:var(--van-action-sheet-item-background);border:none;cursor:pointer}.van-action-sheet__item:active,.van-action-sheet__cancel:active{background-color:var(--van-active-color)}.van-action-sheet__item{line-height:var(--van-action-sheet-item-line-height)}.van-action-sheet__item--loading,.van-action-sheet__item--disabled{color:var(--van-action-sheet-item-disabled-text-color)}.van-action-sheet__item--loading:active,.van-action-sheet__item--disabled:active{background-color:var(--van-action-sheet-item-background)}.van-action-sheet__item--disabled{cursor:not-allowed}.van-action-sheet__item--loading{cursor:default}.van-action-sheet__cancel{flex-shrink:0;box-sizing:border-box;color:var(--van-action-sheet-cancel-text-color)}.van-action-sheet__subname{margin-top:var(--van-padding-xs);color:var(--van-action-sheet-subname-color);font-size:var(--van-action-sheet-subname-font-size);line-height:var(--van-action-sheet-subname-line-height)}.van-action-sheet__gap{display:block;height:var(--van-action-sheet-cancel-padding-top);background:var(--van-action-sheet-cancel-padding-color)}.van-action-sheet__header{flex-shrink:0;font-weight:var(--van-font-bold);font-size:var(--van-action-sheet-header-font-size);line-height:var(--van-action-sheet-header-height);text-align:center}.van-action-sheet__description{position:relative;flex-shrink:0;padding:20px var(--van-padding-md);color:var(--van-action-sheet-description-color);font-size:var(--van-action-sheet-description-font-size);line-height:var(--van-action-sheet-description-line-height);text-align:center}.van-action-sheet__description:after{position:absolute;box-sizing:border-box;content:" ";pointer-events:none;right:var(--van-padding-md);bottom:0;left:var(--van-padding-md);border-bottom:1px solid var(--van-border-color);transform:scaleY(.5)}.van-action-sheet__loading-icon .van-loading__spinner{width:var(--van-action-sheet-loading-icon-size);height:var(--van-action-sheet-loading-icon-size)}.van-action-sheet__close{position:absolute;top:0;right:0;z-index:1;padding:var(--van-action-sheet-close-icon-padding);color:var(--van-action-sheet-close-icon-color);font-size:var(--van-action-sheet-close-icon-size);line-height:inherit}:root{--van-sticky-z-index: 99}.van-sticky--fixed{position:fixed;z-index:var(--van-sticky-z-index)}:root{--van-swipe-indicator-size: 6px;--van-swipe-indicator-margin: var(--van-padding-sm);--van-swipe-indicator-active-opacity: 1;--van-swipe-indicator-inactive-opacity: .3;--van-swipe-indicator-active-background: var(--van-primary-color);--van-swipe-indicator-inactive-background: var(--van-border-color)}.van-swipe{position:relative;overflow:hidden;transform:translateZ(0);cursor:-webkit-grab;cursor:grab;-webkit-user-select:none;user-select:none}.van-swipe__track{display:flex;height:100%;transition-property:transform}.van-swipe__track--vertical{flex-direction:column}.van-swipe__indicators{position:absolute;bottom:var(--van-swipe-indicator-margin);left:50%;display:flex;transform:translate(-50%)}.van-swipe__indicators--vertical{top:50%;bottom:auto;left:var(--van-swipe-indicator-margin);flex-direction:column;transform:translateY(-50%)}.van-swipe__indicators--vertical .van-swipe__indicator:not(:last-child){margin-bottom:var(--van-swipe-indicator-size)}.van-swipe__indicator{width:var(--van-swipe-indicator-size);height:var(--van-swipe-indicator-size);background-color:var(--van-swipe-indicator-inactive-background);border-radius:100%;opacity:var(--van-swipe-indicator-inactive-opacity);transition:opacity var(--van-duration-fast),background-color var(--van-duration-fast)}.van-swipe__indicator:not(:last-child){margin-right:var(--van-swipe-indicator-size)}.van-swipe__indicator--active{background-color:var(--van-swipe-indicator-active-background);opacity:var(--van-swipe-indicator-active-opacity)}.van-swipe-item{position:relative;flex-shrink:0;width:100%;height:100%}:root{--van-image-preview-index-text-color: var(--van-white);--van-image-preview-index-font-size: var(--van-font-size-md);--van-image-preview-index-line-height: var(--van-line-height-md);--van-image-preview-index-text-shadow: 0 1px 1px var(--van-gray-8);--van-image-preview-overlay-background: rgba(0, 0, 0, .9);--van-image-preview-close-icon-size: 22px;--van-image-preview-close-icon-color: var(--van-gray-5);--van-image-preview-close-icon-margin: var(--van-padding-md);--van-image-preview-close-icon-z-index: 1}.van-image-preview{position:fixed;top:0;left:0;width:100%;height:100%;max-width:none;background-color:transparent;transform:none}.van-image-preview__swipe{height:100%}.van-image-preview__swipe-item{display:flex;align-items:center;justify-content:center;overflow:hidden}.van-image-preview__cover{position:absolute;top:0;left:0}.van-image-preview__image,.van-image-preview__image-wrap{width:100%;transition-property:transform}.van-image-preview__image--vertical,.van-image-preview__image-wrap--vertical{width:auto;height:100%}.van-image-preview__image img,.van-image-preview__image-wrap img,.van-image-preview__image video,.van-image-preview__image-wrap video{-webkit-user-drag:none}.van-image-preview__image .van-image__error,.van-image-preview__image-wrap .van-image__error{top:30%;height:40%}.van-image-preview__image .van-image__error-icon,.van-image-preview__image-wrap .van-image__error-icon{font-size:36px}.van-image-preview__image .van-image__loading,.van-image-preview__image-wrap .van-image__loading{background-color:transparent}.van-image-preview__index{position:absolute;top:var(--van-padding-md);left:50%;color:var(--van-image-preview-index-text-color);font-size:var(--van-image-preview-index-font-size);line-height:var(--van-image-preview-index-line-height);text-shadow:var(--van-image-preview-index-text-shadow);transform:translate(-50%)}.van-image-preview__overlay{background:var(--van-image-preview-overlay-background)}.van-image-preview__close-icon{position:absolute;z-index:var(--van-image-preview-close-icon-z-index);color:var(--van-image-preview-close-icon-color);font-size:var(--van-image-preview-close-icon-size)}.van-image-preview__close-icon--top-left{top:var(--van-image-preview-close-icon-margin);left:var(--van-image-preview-close-icon-margin)}.van-image-preview__close-icon--top-right{top:var(--van-image-preview-close-icon-margin);right:var(--van-image-preview-close-icon-margin)}.van-image-preview__close-icon--bottom-left{bottom:var(--van-image-preview-close-icon-margin);left:var(--van-image-preview-close-icon-margin)}.van-image-preview__close-icon--bottom-right{right:var(--van-image-preview-close-icon-margin);bottom:var(--van-image-preview-close-icon-margin)}:root{--van-uploader-size: 80px;--van-uploader-icon-size: 24px;--van-uploader-icon-color: var(--van-gray-4);--van-uploader-text-color: var(--van-text-color-2);--van-uploader-text-font-size: var(--van-font-size-sm);--van-uploader-upload-background: var(--van-gray-1);--van-uploader-upload-active-color: var(--van-active-color);--van-uploader-delete-color: var(--van-white);--van-uploader-delete-icon-size: 14px;--van-uploader-delete-background: rgba(0, 0, 0, .7);--van-uploader-file-background: var(--van-background);--van-uploader-file-icon-size: 20px;--van-uploader-file-icon-color: var(--van-gray-7);--van-uploader-file-name-padding: 0 var(--van-padding-base);--van-uploader-file-name-margin-top: var(--van-padding-xs);--van-uploader-file-name-font-size: var(--van-font-size-sm);--van-uploader-file-name-text-color: var(--van-gray-7);--van-uploader-mask-text-color: var(--van-white);--van-uploader-mask-background: rgba(50, 50, 51, .88);--van-uploader-mask-icon-size: 22px;--van-uploader-mask-message-font-size: var(--van-font-size-sm);--van-uploader-mask-message-line-height: var(--van-line-height-xs);--van-uploader-loading-icon-size: 22px;--van-uploader-loading-icon-color: var(--van-white);--van-uploader-disabled-opacity: var(--van-disabled-opacity);--van-uploader-border-radius: 0px}.van-uploader{position:relative;display:inline-block}.van-uploader__wrapper{display:flex;flex-wrap:wrap}.van-uploader__wrapper--disabled{opacity:var(--van-uploader-disabled-opacity)}.van-uploader__input{position:absolute;top:0;left:0;width:100%;height:100%;overflow:hidden;cursor:pointer;opacity:0}.van-uploader__input-wrapper{position:relative}.van-uploader__input:disabled{cursor:not-allowed}.van-uploader__upload{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;box-sizing:border-box;width:var(--van-uploader-size);height:var(--van-uploader-size);margin:0 var(--van-padding-xs) var(--van-padding-xs) 0;background:var(--van-uploader-upload-background);border-radius:var(--van-uploader-border-radius)}.van-uploader__upload:active{background-color:var(--van-uploader-upload-active-color)}.van-uploader__upload--readonly:active{background-color:var(--van-uploader-upload-background)}.van-uploader__upload-icon{color:var(--van-uploader-icon-color);font-size:var(--van-uploader-icon-size)}.van-uploader__upload-text{margin-top:var(--van-padding-xs);color:var(--van-uploader-text-color);font-size:var(--van-uploader-text-font-size)}.van-uploader__preview{position:relative;margin:0 var(--van-padding-xs) var(--van-padding-xs) 0;cursor:pointer}.van-uploader__preview-image{display:block;width:var(--van-uploader-size);height:var(--van-uploader-size);overflow:hidden;border-radius:var(--van-uploader-border-radius)}.van-uploader__preview-delete{position:absolute;top:0;right:0}.van-uploader__preview-delete--shadow{width:var(--van-uploader-delete-icon-size);height:var(--van-uploader-delete-icon-size);background:var(--van-uploader-delete-background);border-radius:0 0 0 12px}.van-uploader__preview-delete-icon{position:absolute;top:0;right:0;color:var(--van-uploader-delete-color);font-size:var(--van-uploader-delete-icon-size);transform:scale(.7) translate(10%,-10%)}.van-uploader__preview-cover{position:absolute;top:0;right:0;bottom:0;left:0}.van-uploader__mask{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--van-uploader-mask-text-color);background:var(--van-uploader-mask-background);border-radius:var(--van-uploader-border-radius)}.van-uploader__mask-icon{font-size:var(--van-uploader-mask-icon-size)}.van-uploader__mask-message{margin-top:6px;padding:0 var(--van-padding-base);font-size:var(--van-uploader-mask-message-font-size);line-height:var(--van-uploader-mask-message-line-height)}.van-uploader__loading{width:var(--van-uploader-loading-icon-size);height:var(--van-uploader-loading-icon-size);color:var(--van-uploader-loading-icon-color)}.van-uploader__file{display:flex;flex-direction:column;align-items:center;justify-content:center;width:var(--van-uploader-size);height:var(--van-uploader-size);background:var(--van-uploader-file-background)}.van-uploader__file-icon{color:var(--van-uploader-file-icon-color);font-size:var(--van-uploader-file-icon-size)}.van-uploader__file-name{box-sizing:border-box;width:100%;margin-top:var(--van-uploader-file-name-margin-top);padding:var(--van-uploader-file-name-padding);color:var(--van-uploader-file-name-text-color);font-size:var(--van-uploader-file-name-font-size);text-align:center}:root{--van-tab-text-color: var(--van-gray-7);--van-tab-active-text-color: var(--van-text-color);--van-tab-disabled-text-color: var(--van-text-color-3);--van-tab-font-size: var(--van-font-size-md);--van-tab-line-height: var(--van-line-height-md);--van-tabs-default-color: var(--van-primary-color);--van-tabs-line-height: 44px;--van-tabs-card-height: 30px;--van-tabs-nav-background: var(--van-background-2);--van-tabs-bottom-bar-width: 40px;--van-tabs-bottom-bar-height: 3px;--van-tabs-bottom-bar-color: var(--van-primary-color)}.van-tab{position:relative;display:flex;flex:1;align-items:center;justify-content:center;box-sizing:border-box;padding:0 var(--van-padding-base);color:var(--van-tab-text-color);font-size:var(--van-tab-font-size);line-height:var(--van-tab-line-height);cursor:pointer}.van-tab--active{color:var(--van-tab-active-text-color);font-weight:var(--van-font-bold)}.van-tab--disabled{color:var(--van-tab-disabled-text-color);cursor:not-allowed}.van-tab--grow{flex:1 0 auto;padding:0 var(--van-padding-sm)}.van-tab--shrink{flex:none;padding:0 var(--van-padding-xs)}.van-tab--card{color:var(--van-tabs-default-color);border-right:var(--van-border-width) solid var(--van-tabs-default-color)}.van-tab--card:last-child{border-right:none}.van-tab--card.van-tab--active{color:var(--van-white);background-color:var(--van-tabs-default-color)}.van-tab--card--disabled{color:var(--van-tab-disabled-text-color)}.van-tab__text--ellipsis{display:-webkit-box;overflow:hidden;-webkit-line-clamp:1;-webkit-box-orient:vertical}.van-tabs{position:relative}.van-tabs__wrap{overflow:hidden}.van-tabs__wrap--page-top{position:fixed}.van-tabs__wrap--content-bottom{top:auto;bottom:0}.van-tabs__nav{position:relative;display:flex;background:var(--van-tabs-nav-background);-webkit-user-select:none;user-select:none}.van-tabs__nav--complete{overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch}.van-tabs__nav--complete::-webkit-scrollbar{display:none}.van-tabs__nav--line{box-sizing:content-box;height:100%;padding-bottom:15px}.van-tabs__nav--line.van-tabs__nav--shrink,.van-tabs__nav--line.van-tabs__nav--complete{padding-right:var(--van-padding-xs);padding-left:var(--van-padding-xs)}.van-tabs__nav--card{box-sizing:border-box;height:var(--van-tabs-card-height);margin:0 var(--van-padding-md);border:var(--van-border-width) solid var(--van-tabs-default-color);border-radius:var(--van-border-radius-sm)}.van-tabs__nav--card.van-tabs__nav--shrink{display:inline-flex}.van-tabs__line{position:absolute;bottom:15px;left:0;z-index:1;width:var(--van-tabs-bottom-bar-width);height:var(--van-tabs-bottom-bar-height);background:var(--van-tabs-bottom-bar-color);border-radius:var(--van-tabs-bottom-bar-height)}.van-tabs__track{position:relative;display:flex;width:100%;height:100%;will-change:left}.van-tabs__content--animated{overflow:hidden}.van-tabs--line .van-tabs__wrap{height:var(--van-tabs-line-height)}.van-tabs--card>.van-tabs__wrap{height:var(--van-tabs-card-height)}.van-tab__panel,.van-tab__panel-wrapper{flex-shrink:0;box-sizing:border-box;width:100%}.van-tab__panel-wrapper--inactive{height:0;overflow:visible}:root{--van-cascader-header-height: 48px;--van-cascader-header-padding: 0 var(--van-padding-md);--van-cascader-title-font-size: var(--van-font-size-lg);--van-cascader-title-line-height: 20px;--van-cascader-close-icon-size: 22px;--van-cascader-close-icon-color: var(--van-gray-5);--van-cascader-selected-icon-size: 18px;--van-cascader-tabs-height: 48px;--van-cascader-active-color: var(--van-primary-color);--van-cascader-options-height: 384px;--van-cascader-option-disabled-color: var(--van-text-color-3);--van-cascader-tab-color: var(--van-text-color);--van-cascader-unselected-tab-color: var(--van-text-color-2)}.van-cascader__header{display:flex;align-items:center;justify-content:space-between;height:var(--van-cascader-header-height);padding:var(--van-cascader-header-padding)}.van-cascader__title{font-weight:var(--van-font-bold);font-size:var(--van-cascader-title-font-size);line-height:var(--van-cascader-title-line-height)}.van-cascader__close-icon{color:var(--van-cascader-close-icon-color);font-size:var(--van-cascader-close-icon-size)}.van-cascader__tabs.van-tabs--line .van-tabs__wrap{height:var(--van-cascader-tabs-height)}.van-cascader__tab{color:var(--van-cascader-tab-color);font-weight:var(--van-font-bold)}.van-cascader__tab--unselected{color:var(--van-cascader-unselected-tab-color);font-weight:400}.van-cascader__option{display:flex;align-items:center;justify-content:space-between;padding:10px var(--van-padding-md);font-size:var(--van-font-size-md);line-height:var(--van-line-height-md);cursor:pointer}.van-cascader__option:active{background-color:var(--van-active-color)}.van-cascader__option--selected{color:var(--van-cascader-active-color);font-weight:var(--van-font-bold)}.van-cascader__option--disabled{color:var(--van-cascader-option-disabled-color);cursor:not-allowed}.van-cascader__option--disabled:active{background-color:transparent}.van-cascader__selected-icon{font-size:var(--van-cascader-selected-icon-size)}.van-cascader__options{box-sizing:border-box;height:var(--van-cascader-options-height);padding-top:6px;overflow-y:auto;-webkit-overflow-scrolling:touch}:root{--van-picker-background: var(--van-background-2);--van-picker-toolbar-height: 44px;--van-picker-title-font-size: var(--van-font-size-lg);--van-picker-title-line-height: var(--van-line-height-md);--van-picker-action-padding: 0 var(--van-padding-md);--van-picker-action-font-size: var(--van-font-size-md);--van-picker-confirm-action-color: var(--van-primary-color);--van-picker-cancel-action-color: var(--van-text-color-2);--van-picker-option-font-size: var(--van-font-size-lg);--van-picker-option-padding: 0 var(--van-padding-base);--van-picker-option-text-color: var(--van-text-color);--van-picker-option-disabled-opacity: .3;--van-picker-loading-icon-color: var(--van-primary-color);--van-picker-loading-mask-color: rgba(255, 255, 255, .9);--van-picker-mask-color: linear-gradient(180deg, rgba(255, 255, 255, .9), rgba(255, 255, 255, .4)), linear-gradient(0deg, rgba(255, 255, 255, .9), rgba(255, 255, 255, .4))}.van-theme-dark{--van-picker-loading-mask-color: rgba(0, 0, 0, .6);--van-picker-mask-color: linear-gradient(180deg, rgba(0, 0, 0, .6), rgba(0, 0, 0, .1)), linear-gradient(0deg, rgba(0, 0, 0, .6), rgba(0, 0, 0, .1))}.van-picker{position:relative;background:var(--van-picker-background);-webkit-user-select:none;user-select:none}.van-picker__toolbar{position:relative;display:flex;align-items:center;justify-content:space-between;height:var(--van-picker-toolbar-height)}.van-picker__cancel,.van-picker__confirm{height:100%;padding:var(--van-picker-action-padding);font-size:var(--van-picker-action-font-size);background-color:transparent;border:none}.van-picker__confirm{color:var(--van-picker-confirm-action-color)}.van-picker__cancel{color:var(--van-picker-cancel-action-color)}.van-picker__title{position:absolute;left:50%;color:var(--van-text-color);max-width:50%;font-weight:var(--van-font-bold);font-size:var(--van-picker-title-font-size);line-height:var(--van-picker-title-line-height);text-align:center;transform:translate(-50%)}.van-picker__columns{position:relative;display:flex;cursor:-webkit-grab;cursor:grab}.van-picker__loading{position:absolute;top:0;right:0;bottom:0;left:0;z-index:3;display:flex;align-items:center;justify-content:center;color:var(--van-picker-loading-icon-color);background:var(--van-picker-loading-mask-color)}.van-picker__frame{position:absolute;top:50%;right:var(--van-padding-md);left:var(--van-padding-md);z-index:2;transform:translateY(-50%);pointer-events:none}.van-picker__mask{position:absolute;top:0;left:0;z-index:1;width:100%;height:100%;background-image:var(--van-picker-mask-color);background-repeat:no-repeat;background-position:top,bottom;transform:translateZ(0);pointer-events:none}.van-picker-column{flex:1;overflow:hidden;font-size:var(--van-picker-option-font-size)}.van-picker-column__wrapper{transition-timing-function:cubic-bezier(.23,1,.68,1)}.van-picker-column__item{display:flex;align-items:center;justify-content:center;padding:var(--van-picker-option-padding);color:var(--van-picker-option-text-color)}.van-picker-column__item--disabled{cursor:not-allowed;opacity:var(--van-picker-option-disabled-opacity)}:root{--van-picker-group-background: var(--van-background-2)}.van-picker-group{background:var(--van-picker-group-background)}.van-picker-group__tabs{margin-top:var(--van-padding-base)}.van-picker-group__tab-title{margin-right:16px}:root{--van-calendar-background: var(--van-background-2);--van-calendar-popup-height: 80%;--van-calendar-header-shadow: 0 2px 10px rgba(125, 126, 128, .16);--van-calendar-header-title-height: 44px;--van-calendar-header-title-font-size: var(--van-font-size-lg);--van-calendar-header-subtitle-font-size: var(--van-font-size-md);--van-calendar-weekdays-height: 30px;--van-calendar-weekdays-font-size: var(--van-font-size-sm);--van-calendar-month-title-font-size: var(--van-font-size-md);--van-calendar-month-mark-color: rgba(242, 243, 245, .8);--van-calendar-month-mark-font-size: 160px;--van-calendar-day-height: 64px;--van-calendar-day-font-size: var(--van-font-size-lg);--van-calendar-day-margin-bottom: 4px;--van-calendar-range-edge-color: var(--van-white);--van-calendar-range-edge-background: var(--van-primary-color);--van-calendar-range-middle-color: var(--van-primary-color);--van-calendar-range-middle-background-opacity: .1;--van-calendar-selected-day-size: 54px;--van-calendar-selected-day-color: var(--van-white);--van-calendar-info-font-size: var(--van-font-size-xs);--van-calendar-info-line-height: var(--van-line-height-xs);--van-calendar-selected-day-background: var(--van-primary-color);--van-calendar-day-disabled-color: var(--van-text-color-3);--van-calendar-confirm-button-height: 36px;--van-calendar-confirm-button-margin: 7px 0}.van-theme-dark{--van-calendar-month-mark-color: rgba(100, 101, 102, .2);--van-calendar-day-disabled-color: var(--van-gray-7)}.van-calendar{display:flex;flex-direction:column;height:100%;background:var(--van-calendar-background)}.van-calendar__popup.van-popup--top,.van-calendar__popup.van-popup--bottom{height:var(--van-calendar-popup-height)}.van-calendar__popup.van-popup--left,.van-calendar__popup.van-popup--right{height:100%}.van-calendar__popup .van-popup__close-icon{top:11px}.van-calendar__header{flex-shrink:0;box-shadow:var(--van-calendar-header-shadow)}.van-calendar__month-title,.van-calendar__header-title,.van-calendar__header-subtitle{color:var(--van-text-color);height:var(--van-calendar-header-title-height);font-weight:var(--van-font-bold);line-height:var(--van-calendar-header-title-height);text-align:center}.van-calendar__header-title{font-size:var(--van-calendar-header-title-font-size)}.van-calendar__header-subtitle{font-size:var(--van-calendar-header-subtitle-font-size)}.van-calendar__month-title{font-size:var(--van-calendar-month-title-font-size)}.van-calendar__weekdays{display:flex}.van-calendar__weekday{flex:1;font-size:var(--van-calendar-weekdays-font-size);line-height:var(--van-calendar-weekdays-height);text-align:center}.van-calendar__body{flex:1;overflow:auto;-webkit-overflow-scrolling:touch}.van-calendar__days{position:relative;display:flex;flex-wrap:wrap;-webkit-user-select:none;user-select:none}.van-calendar__month-mark{position:absolute;top:50%;left:50%;z-index:0;color:var(--van-calendar-month-mark-color);font-size:var(--van-calendar-month-mark-font-size);transform:translate(-50%,-50%);pointer-events:none}.van-calendar__day,.van-calendar__selected-day{display:flex;align-items:center;justify-content:center;text-align:center}.van-calendar__day{position:relative;width:14.285%;height:var(--van-calendar-day-height);font-size:var(--van-calendar-day-font-size);margin-bottom:var(--van-calendar-day-margin-bottom);cursor:pointer}.van-calendar__day--end,.van-calendar__day--start,.van-calendar__day--start-end,.van-calendar__day--multiple-middle,.van-calendar__day--multiple-selected{color:var(--van-calendar-range-edge-color);background:var(--van-calendar-range-edge-background)}.van-calendar__day--start{border-radius:var(--van-radius-md) 0 0 var(--van-radius-md)}.van-calendar__day--end{border-radius:0 var(--van-radius-md) var(--van-radius-md) 0}.van-calendar__day--start-end,.van-calendar__day--multiple-selected{border-radius:var(--van-radius-md)}.van-calendar__day--middle{color:var(--van-calendar-range-middle-color)}.van-calendar__day--middle:after{position:absolute;top:0;right:0;bottom:0;left:0;background-color:currentColor;opacity:var(--van-calendar-range-middle-background-opacity);content:""}.van-calendar__day--disabled{color:var(--van-calendar-day-disabled-color);cursor:default}.van-calendar__top-info,.van-calendar__bottom-info{position:absolute;right:0;left:0;font-size:var(--van-calendar-info-font-size);line-height:var(--van-calendar-info-line-height)}@media (max-width: 350px){.van-calendar__top-info,.van-calendar__bottom-info{font-size:9px}}.van-calendar__top-info{top:6px}.van-calendar__bottom-info{bottom:6px}.van-calendar__selected-day{width:var(--van-calendar-selected-day-size);height:var(--van-calendar-selected-day-size);color:var(--van-calendar-selected-day-color);background:var(--van-calendar-selected-day-background);border-radius:var(--van-radius-md)}.van-calendar__footer{flex-shrink:0;padding-left:var(--van-padding-md);padding-right:var(--van-padding-md)}.van-calendar__confirm{height:var(--van-calendar-confirm-button-height);margin:var(--van-calendar-confirm-button-margin)}:root{--van-address-edit-padding: var(--van-padding-sm);--van-address-edit-buttons-padding: var(--van-padding-xl) var(--van-padding-base);--van-address-edit-button-margin-bottom: var(--van-padding-sm);--van-address-edit-button-font-size: var(--van-font-size-lg)}.van-address-edit{padding:var(--van-address-edit-padding)}.van-address-edit__fields{overflow:hidden;border-radius:var(--van-padding-xs)}.van-address-edit__fields .van-field__label{width:4.1em}.van-address-edit__default{margin-top:var(--van-padding-sm);overflow:hidden;border-radius:var(--van-padding-xs)}.van-address-edit__buttons{padding:var(--van-address-edit-buttons-padding)}.van-address-edit__button{margin-bottom:var(--van-address-edit-button-margin-bottom);font-size:var(--van-address-edit-button-font-size)}.van-address-edit-detail__search-item{background:var(--van-gray-2)}.van-radio-group--horizontal,.van-checkbox-group--horizontal{display:flex;flex-wrap:wrap}:root{--van-checkbox-size: 20px;--van-checkbox-border-color: var(--van-gray-5);--van-checkbox-duration: var(--van-duration-fast);--van-checkbox-label-margin: var(--van-padding-xs);--van-checkbox-label-color: var(--van-text-color);--van-checkbox-checked-icon-color: var(--van-primary-color);--van-checkbox-disabled-icon-color: var(--van-gray-5);--van-checkbox-disabled-label-color: var(--van-text-color-3);--van-checkbox-disabled-background: var(--van-border-color)}.van-checkbox{display:flex;align-items:center;overflow:hidden;cursor:pointer;-webkit-user-select:none;user-select:none}.van-checkbox--disabled{cursor:not-allowed}.van-checkbox--label-disabled{cursor:default}.van-checkbox--horizontal{margin-right:var(--van-padding-sm)}.van-checkbox__icon{flex:none;height:1em;font-size:var(--van-checkbox-size);line-height:1em;cursor:pointer}.van-checkbox__icon .van-icon{display:block;box-sizing:border-box;width:1.25em;height:1.25em;color:transparent;font-size:.8em;line-height:1.25;text-align:center;border:1px solid var(--van-checkbox-border-color);transition-duration:var(--van-checkbox-duration);transition-property:color,border-color,background-color}.van-checkbox__icon--round .van-icon{border-radius:100%}.van-checkbox__icon--indeterminate .van-icon{display:flex;align-items:center;justify-content:center;color:var(--van-white);border-color:var(--van-checkbox-checked-icon-color);background-color:var(--van-checkbox-checked-icon-color)}.van-checkbox__icon--checked .van-icon{color:var(--van-white);background-color:var(--van-checkbox-checked-icon-color);border-color:var(--van-checkbox-checked-icon-color)}.van-checkbox__icon--disabled{cursor:not-allowed}.van-checkbox__icon--disabled .van-icon{background-color:var(--van-checkbox-disabled-background);border-color:var(--van-checkbox-disabled-icon-color)}.van-checkbox__icon--disabled.van-checkbox__icon--checked .van-icon{color:var(--van-checkbox-disabled-icon-color)}.van-checkbox__label{margin-left:var(--van-checkbox-label-margin);color:var(--van-checkbox-label-color);line-height:var(--van-checkbox-size)}.van-checkbox__label--left{margin:0 var(--van-checkbox-label-margin) 0 0}.van-checkbox__label--disabled{color:var(--van-checkbox-disabled-label-color)}:root{--van-coupon-margin: 0 var(--van-padding-sm) var(--van-padding-sm);--van-coupon-content-height: 84px;--van-coupon-content-padding: 14px 0;--van-coupon-content-text-color: var(--van-text-color);--van-coupon-background: var(--van-background-2);--van-coupon-active-background: var(--van-active-color);--van-coupon-radius: var(--van-radius-lg);--van-coupon-shadow: 0 0 4px rgba(0, 0, 0, .1);--van-coupon-head-width: 96px;--van-coupon-amount-color: var(--van-primary-color);--van-coupon-amount-font-size: 30px;--van-coupon-currency-font-size: 40%;--van-coupon-name-font-size: var(--van-font-size-md);--van-coupon-disabled-text-color: var(--van-text-color-2);--van-coupon-description-padding: var(--van-padding-xs) var(--van-padding-md);--van-coupon-description-border-color: var(--van-border-color);--van-coupon-checkbox-color: var(--van-primary-color)}.van-coupon{margin:var(--van-coupon-margin);overflow:hidden;background:var(--van-coupon-background);border-radius:var(--van-coupon-radius);box-shadow:var(--van-coupon-shadow)}.van-coupon:active{background-color:var(--van-coupon-active-background)}.van-coupon__content{display:flex;align-items:center;box-sizing:border-box;min-height:var(--van-coupon-content-height);padding:var(--van-coupon-content-padding);color:var(--van-coupon-content-text-color)}.van-coupon__head{position:relative;min-width:var(--van-coupon-head-width);padding:0 var(--van-padding-xs);color:var(--van-coupon-amount-color);text-align:center}.van-coupon__amount,.van-coupon__condition,.van-coupon__name,.van-coupon__valid{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.van-coupon__amount{margin-bottom:6px;font-weight:var(--van-font-bold);font-size:var(--van-coupon-amount-font-size);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.van-coupon__amount span{font-size:var(--van-coupon-currency-font-size)}.van-coupon__amount span:not(:empty){margin-left:2px}.van-coupon__condition{font-size:var(--van-font-size-sm);line-height:16px;white-space:pre-wrap}.van-coupon__body{position:relative;flex:1}.van-coupon__name{margin-bottom:10px;font-weight:var(--van-font-bold);font-size:var(--van-coupon-name-font-size);line-height:var(--van-line-height-md)}.van-coupon__valid{font-size:var(--van-font-size-sm)}.van-coupon__corner{position:absolute;top:0;right:var(--van-padding-md);bottom:0}.van-coupon__corner .van-checkbox__icon--checked .van-icon{background-color:var(--van-coupon-checkbox-color);border-color:var(--van-coupon-checkbox-color)}.van-coupon__description{padding:var(--van-coupon-description-padding);font-size:var(--van-font-size-sm);border-top:1px dashed var(--van-coupon-description-border-color)}.van-coupon--disabled:active{background-color:var(--van-coupon-background)}.van-coupon--disabled .van-coupon-item__content{height:calc(var(--van-coupon-content-height) - 10px)}.van-coupon--disabled .van-coupon__head{color:inherit}:root{--van-radio-size: 20px;--van-radio-dot-size: 8px;--van-radio-border-color: var(--van-gray-5);--van-radio-duration: var(--van-duration-fast);--van-radio-label-margin: var(--van-padding-xs);--van-radio-label-color: var(--van-text-color);--van-radio-checked-icon-color: var(--van-primary-color);--van-radio-disabled-icon-color: var(--van-gray-5);--van-radio-disabled-label-color: var(--van-text-color-3);--van-radio-disabled-background: var(--van-border-color)}.van-radio{display:flex;align-items:center;overflow:hidden;cursor:pointer;-webkit-user-select:none;user-select:none}.van-radio--disabled{cursor:not-allowed}.van-radio--label-disabled{cursor:default}.van-radio--horizontal{margin-right:var(--van-padding-sm)}.van-radio__icon{flex:none;height:1em;font-size:var(--van-radio-size);line-height:1em;cursor:pointer}.van-radio__icon .van-icon{display:block;box-sizing:border-box;width:1.25em;height:1.25em;color:transparent;font-size:.8em;line-height:1.25;text-align:center;border:1px solid var(--van-radio-border-color);transition-duration:var(--van-radio-duration);transition-property:color,border-color,background-color}.van-radio__icon--round .van-icon{border-radius:100%}.van-radio__icon--dot{position:relative;border-radius:100%;box-sizing:border-box;width:var(--van-radio-size);height:var(--van-radio-size);border:1px solid var(--van-radio-border-color);transition-duration:var(--van-radio-duration);transition-property:border-color}.van-radio__icon--dot__icon{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);border-radius:100%;height:calc(100% - var(--van-radio-dot-size));width:calc(100% - var(--van-radio-dot-size));transition-duration:var(--van-radio-duration);transition-property:background-color}.van-radio__icon--checked .van-icon{color:var(--van-white);background-color:var(--van-radio-checked-icon-color);border-color:var(--van-radio-checked-icon-color)}.van-radio__icon--checked.van-radio__icon--dot{border-color:var(--van-radio-checked-icon-color)}.van-radio__icon--checked.van-radio__icon--dot .van-radio__icon--dot__icon{background:var(--van-radio-checked-icon-color)}.van-radio__icon--disabled{cursor:not-allowed}.van-radio__icon--disabled .van-icon{background-color:var(--van-radio-disabled-background);border-color:var(--van-radio-disabled-icon-color)}.van-radio__icon--disabled.van-radio__icon--checked .van-icon{color:var(--van-radio-disabled-icon-color)}.van-radio__label{margin-left:var(--van-radio-label-margin);color:var(--van-radio-label-color);line-height:var(--van-radio-size)}.van-radio__label--left{margin:0 var(--van-radio-label-margin) 0 0}.van-radio__label--disabled{color:var(--van-radio-disabled-label-color)}:root{--van-contact-list-padding: var(--van-padding-sm) var(--van-padding-sm) 80px;--van-contact-list-edit-icon-size: 16px;--van-contact-list-add-button-z-index: 999;--van-contact-list-radio-color: var(--van-primary-color);--van-contact-list-item-padding: var(--van-padding-md)}.van-contact-list{box-sizing:border-box;height:100%;padding:var(--van-contact-list-padding)}.van-contact-list__item{padding:var(--van-contact-list-item-padding)}.van-contact-list__item-title{display:flex;align-items:center;padding-right:var(--van-padding-xl);padding-left:var(--van-padding-xs)}.van-contact-list__item-tag{flex:none;margin-left:var(--van-padding-xs);padding-top:0;padding-bottom:0;line-height:1.4em}.van-contact-list__group{box-sizing:border-box;height:100%;overflow-y:scroll;-webkit-overflow-scrolling:touch;border-radius:var(--van-radius-lg)}.van-contact-list__edit{font-size:var(--van-contact-list-edit-icon-size)}.van-contact-list__radio .van-radio__icon--checked .van-icon{background-color:var(--van-contact-list-radio-color);border-color:var(--van-contact-list-radio-color)}.van-contact-list__bottom{position:fixed;right:0;bottom:0;left:0;z-index:var(--van-contact-list-add-button-z-index);padding-left:var(--van-padding-md);padding-right:var(--van-padding-md);background-color:var(--van-background-2)}.van-contact-list__add{height:40px;margin:5px 0}:root{--van-address-list-padding: var(--van-padding-sm) var(--van-padding-sm) 80px;--van-address-list-disabled-text-color: var(--van-text-color-2);--van-address-list-disabled-text-padding: calc(var(--van-padding-base) * 5) 0;--van-address-list-disabled-text-font-size: var(--van-font-size-md);--van-address-list-disabled-text-line-height: var(--van-line-height-md);--van-address-list-add-button-z-index: 999;--van-address-list-item-padding: var(--van-padding-sm);--van-address-list-item-text-color: var(--van-text-color);--van-address-list-item-disabled-text-color: var(--van-text-color-3);--van-address-list-item-font-size: 13px;--van-address-list-item-line-height: var(--van-line-height-sm);--van-address-list-radio-color: var(--van-primary-color);--van-address-list-edit-icon-size: 20px}.van-address-list{box-sizing:border-box;height:100%;padding:var(--van-address-list-padding)}.van-address-list__bottom{position:fixed;bottom:0;left:0;z-index:var(--van-address-list-add-button-z-index);box-sizing:border-box;width:100%;padding-left:var(--van-padding-md);padding-right:var(--van-padding-md);background-color:var(--van-background-2)}.van-address-list__add{height:40px;margin:5px 0}.van-address-list__disabled-text{padding:var(--van-address-list-disabled-text-padding);color:var(--van-address-list-disabled-text-color);font-size:var(--van-address-list-disabled-text-font-size);line-height:var(--van-address-list-disabled-text-line-height)}.van-address-item{padding:var(--van-address-list-item-padding);background-color:var(--van-background-2);border-radius:var(--van-radius-lg)}.van-address-item:not(:last-child){margin-bottom:var(--van-padding-sm)}.van-address-item__title{padding-right:44px}.van-address-item__name{display:flex;align-items:center;margin-bottom:var(--van-padding-xs);font-size:var(--van-font-size-lg);line-height:var(--van-line-height-lg)}.van-address-item__tag{flex:none;margin-left:var(--van-padding-xs);padding-top:0;padding-bottom:0;line-height:1.4em}.van-address-item__address{color:var(--van-address-list-item-text-color);font-size:var(--van-address-list-item-font-size);line-height:var(--van-address-list-item-line-height)}.van-address-item--disabled .van-address-item__name,.van-address-item--disabled .van-address-item__address{color:var(--van-address-list-item-disabled-text-color)}.van-address-item__edit{position:absolute;top:50%;right:var(--van-padding-md);color:var(--van-gray-6);font-size:var(--van-address-list-edit-icon-size);transform:translateY(-50%)}.van-address-item .van-cell{padding:0}.van-address-item .van-radio__label{margin-left:var(--van-padding-sm)}.van-address-item .van-radio__icon--checked .van-icon{background-color:var(--van-address-list-radio-color);border-color:var(--van-address-list-radio-color)}:root{--van-barrage-font-size: 16px;--van-barrage-space: 10px;--van-barrage-font: inherit;--van-barrage-color: var(--van-white)}.van-barrage{position:relative;overflow:hidden}.van-barrage__item{position:absolute;top:0;right:0;z-index:99;padding-bottom:var(--van-barrage-space);opacity:.75;line-height:1;font-size:var(--van-barrage-font-size);font-family:var(--van-barrage-font);font-weight:700;white-space:nowrap;color:var(--van-barrage-color);text-shadow:1px 0 1px #000000,0 1px 1px #000000,0 -1px 1px #000000,-1px 0 1px #000000;-webkit-user-select:none;user-select:none;will-change:transform;transform:translate(110%)}@keyframes van-barrage{0%{transform:translate(110%)}to{transform:translate(var(--move-distance))}}:root{--van-cell-group-background: var(--van-background-2);--van-cell-group-title-color: var(--van-text-color-2);--van-cell-group-title-padding: var(--van-padding-md) var(--van-padding-md);--van-cell-group-title-font-size: var(--van-font-size-md);--van-cell-group-title-line-height: 16px;--van-cell-group-inset-padding: 0 var(--van-padding-md);--van-cell-group-inset-radius: var(--van-radius-lg);--van-cell-group-inset-title-padding: var(--van-padding-md) var(--van-padding-md)}.van-cell-group{background:var(--van-cell-group-background)}.van-cell-group--inset{margin:var(--van-cell-group-inset-padding);border-radius:var(--van-cell-group-inset-radius);overflow:hidden}.van-cell-group__title{padding:var(--van-cell-group-title-padding);color:var(--van-cell-group-title-color);font-size:var(--van-cell-group-title-font-size);line-height:var(--van-cell-group-title-line-height)}.van-cell-group__title--inset{padding:var(--van-cell-group-inset-title-padding)}:root{--van-circle-size: 100px;--van-circle-color: var(--van-primary-color);--van-circle-layer-color: var(--van-white);--van-circle-text-color: var(--van-text-color);--van-circle-text-font-weight: var(--van-font-bold);--van-circle-text-font-size: var(--van-font-size-md);--van-circle-text-line-height: var(--van-line-height-md)}.van-circle{position:relative;display:inline-block;width:var(--van-circle-size);height:var(--van-circle-size);text-align:center}.van-circle svg{position:absolute;top:0;left:0;width:100%;height:100%}.van-circle__layer{stroke:var(--van-circle-layer-color)}.van-circle__hover{fill:none;stroke:var(--van-circle-color);stroke-linecap:round}.van-circle__text{position:absolute;top:50%;left:0;box-sizing:border-box;width:100%;padding:0 var(--van-padding-base);color:var(--van-circle-text-color);font-weight:var(--van-circle-text-font-weight);font-size:var(--van-circle-text-font-size);line-height:var(--van-circle-text-line-height);transform:translateY(-50%)}.van-row{display:flex;flex-wrap:wrap}.van-row--nowrap{flex-wrap:nowrap}.van-row--justify-center{justify-content:center}.van-row--justify-end{justify-content:flex-end}.van-row--justify-space-between{justify-content:space-between}.van-row--justify-space-around{justify-content:space-around}.van-row--align-center{align-items:center}.van-row--align-bottom{align-items:flex-end}.van-col{display:block;box-sizing:border-box;min-height:1px}.van-col--1{flex:0 0 4.16666667%;max-width:4.16666667%}.van-col--offset-1{margin-left:4.16666667%}.van-col--2{flex:0 0 8.33333333%;max-width:8.33333333%}.van-col--offset-2{margin-left:8.33333333%}.van-col--3{flex:0 0 12.5%;max-width:12.5%}.van-col--offset-3{margin-left:12.5%}.van-col--4{flex:0 0 16.66666667%;max-width:16.66666667%}.van-col--offset-4{margin-left:16.66666667%}.van-col--5{flex:0 0 20.83333333%;max-width:20.83333333%}.van-col--offset-5{margin-left:20.83333333%}.van-col--6{flex:0 0 25%;max-width:25%}.van-col--offset-6{margin-left:25%}.van-col--7{flex:0 0 29.16666667%;max-width:29.16666667%}.van-col--offset-7{margin-left:29.16666667%}.van-col--8{flex:0 0 33.33333333%;max-width:33.33333333%}.van-col--offset-8{margin-left:33.33333333%}.van-col--9{flex:0 0 37.5%;max-width:37.5%}.van-col--offset-9{margin-left:37.5%}.van-col--10{flex:0 0 41.66666667%;max-width:41.66666667%}.van-col--offset-10{margin-left:41.66666667%}.van-col--11{flex:0 0 45.83333333%;max-width:45.83333333%}.van-col--offset-11{margin-left:45.83333333%}.van-col--12{flex:0 0 50%;max-width:50%}.van-col--offset-12{margin-left:50%}.van-col--13{flex:0 0 54.16666667%;max-width:54.16666667%}.van-col--offset-13{margin-left:54.16666667%}.van-col--14{flex:0 0 58.33333333%;max-width:58.33333333%}.van-col--offset-14{margin-left:58.33333333%}.van-col--15{flex:0 0 62.5%;max-width:62.5%}.van-col--offset-15{margin-left:62.5%}.van-col--16{flex:0 0 66.66666667%;max-width:66.66666667%}.van-col--offset-16{margin-left:66.66666667%}.van-col--17{flex:0 0 70.83333333%;max-width:70.83333333%}.van-col--offset-17{margin-left:70.83333333%}.van-col--18{flex:0 0 75%;max-width:75%}.van-col--offset-18{margin-left:75%}.van-col--19{flex:0 0 79.16666667%;max-width:79.16666667%}.van-col--offset-19{margin-left:79.16666667%}.van-col--20{flex:0 0 83.33333333%;max-width:83.33333333%}.van-col--offset-20{margin-left:83.33333333%}.van-col--21{flex:0 0 87.5%;max-width:87.5%}.van-col--offset-21{margin-left:87.5%}.van-col--22{flex:0 0 91.66666667%;max-width:91.66666667%}.van-col--offset-22{margin-left:91.66666667%}.van-col--23{flex:0 0 95.83333333%;max-width:95.83333333%}.van-col--offset-23{margin-left:95.83333333%}.van-col--24{flex:0 0 100%;max-width:100%}.van-col--offset-24{margin-left:100%}:root{--van-count-down-text-color: var(--van-text-color);--van-count-down-font-size: var(--van-font-size-md);--van-count-down-line-height: var(--van-line-height-md)}.van-count-down{color:var(--van-count-down-text-color);font-size:var(--van-count-down-font-size);line-height:var(--van-count-down-line-height)}:root{--van-empty-padding: var(--van-padding-xl) 0;--van-empty-image-size: 160px;--van-empty-description-margin-top: var(--van-padding-md);--van-empty-description-padding: 0 60px;--van-empty-description-color: var(--van-text-color-2);--van-empty-description-font-size: var(--van-font-size-md);--van-empty-description-line-height: var(--van-line-height-md);--van-empty-bottom-margin-top: 24px}.van-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;box-sizing:border-box;padding:var(--van-empty-padding)}.van-empty__image{width:var(--van-empty-image-size);height:var(--van-empty-image-size)}.van-empty__image img{width:100%;height:100%}.van-empty__description{margin-top:var(--van-empty-description-margin-top);padding:var(--van-empty-description-padding);color:var(--van-empty-description-color);font-size:var(--van-empty-description-font-size);line-height:var(--van-empty-description-line-height)}.van-empty__bottom{margin-top:var(--van-empty-bottom-margin-top)}.van-theme-dark .van-empty{opacity:.5}:root{--van-coupon-list-background: var(--van-background);--van-coupon-list-field-padding: 5px 0 5px var(--van-padding-md);--van-coupon-list-exchange-button-height: 32px;--van-coupon-list-close-button-height: 40px;--van-coupon-list-empty-tip-color: var(--van-text-color-2);--van-coupon-list-empty-tip-font-size: var(--van-font-size-md);--van-coupon-list-empty-tip-line-height: var(--van-line-height-md)}.van-coupon-list{position:relative;height:100%;background:var(--van-coupon-list-background)}.van-coupon-list__field{padding:var(--van-coupon-list-field-padding)}.van-coupon-list__field .van-field__body{height:34px;padding-left:var(--van-padding-sm);line-height:34px;background:var(--van-background);border-radius:var(--van-radius-max)}.van-coupon-list__field .van-field__body::-webkit-input-placeholder{color:var(--van-text-color-3)}.van-coupon-list__field .van-field__body::placeholder{color:var(--van-text-color-3)}.van-coupon-list__field .van-field__clear{margin-right:0}.van-coupon-list__exchange-bar{display:flex;align-items:center;background-color:var(--van-background-2)}.van-coupon-list__exchange{flex:none;height:var(--van-coupon-list-exchange-button-height);font-size:var(--van-font-size-lg);line-height:calc(var(--van-coupon-list-exchange-button-height) - 2px);border:0}.van-coupon-list .van-tabs__wrap{box-shadow:0 6px 12px -12px var(--van-gray-6)}.van-coupon-list__list{box-sizing:border-box;padding:var(--van-padding-md) 0 var(--van-padding-lg);overflow-y:auto;-webkit-overflow-scrolling:touch}.van-coupon-list__list--with-bottom{padding-bottom:50px}.van-coupon-list__bottom{position:absolute;bottom:0;left:0;z-index:999;box-sizing:border-box;width:100%;padding:5px var(--van-padding-md);font-weight:var(--van-font-bold);background-color:var(--van-background-2)}.van-coupon-list__close{height:var(--van-coupon-list-close-button-height)}.van-coupon-list__empty-tip{color:var(--van-coupon-list-empty-tip-color);font-size:var(--van-coupon-list-empty-tip-font-size);line-height:var(--van-coupon-list-empty-tip-line-height)}:root{--van-divider-margin: var(--van-padding-md) 0;--van-divider-vertical-margin: 0 var(--van-padding-xs);--van-divider-text-color: var(--van-text-color-2);--van-divider-font-size: var(--van-font-size-md);--van-divider-line-height: 24px;--van-divider-border-color: var(--van-border-color);--van-divider-content-padding: var(--van-padding-md);--van-divider-content-left-width: 10%;--van-divider-content-right-width: 10%}.van-divider{display:flex;align-items:center;margin:var(--van-divider-margin);color:var(--van-divider-text-color);font-size:var(--van-divider-font-size);line-height:var(--van-divider-line-height);border-color:var(--van-divider-border-color);border-style:solid;border-width:0}.van-divider:before,.van-divider:after{display:block;flex:1;box-sizing:border-box;height:1px;border-color:inherit;border-style:inherit;border-width:var(--van-border-width) 0 0}.van-divider:before{content:""}.van-divider--hairline:before,.van-divider--hairline:after{transform:scaleY(.5)}.van-divider--dashed{border-style:dashed}.van-divider--content-center:before,.van-divider--content-left:before,.van-divider--content-right:before{margin-right:var(--van-divider-content-padding)}.van-divider--content-center:after,.van-divider--content-left:after,.van-divider--content-right:after{margin-left:var(--van-divider-content-padding);content:""}.van-divider--content-left:before{max-width:var(--van-divider-content-left-width)}.van-divider--content-right:after{max-width:var(--van-divider-content-right-width)}.van-divider--vertical{display:inline-block;width:var(--van-border-width);height:1em;margin:var(--van-divider-vertical-margin);vertical-align:middle}.van-divider--vertical:before{height:100%;border-width:0 0 0 var(--van-border-width)}.van-divider--vertical:after{display:none}.van-divider--vertical.van-divider--hairline:before{transform:scaleX(.5)}:root{--van-dropdown-menu-height: 48px;--van-dropdown-menu-background: var(--van-background-2);--van-dropdown-menu-shadow: 0 2px 12px rgba(100, 101, 102, .12);--van-dropdown-menu-title-font-size: 15px;--van-dropdown-menu-title-text-color: var(--van-text-color);--van-dropdown-menu-title-active-text-color: var(--van-primary-color);--van-dropdown-menu-title-disabled-text-color: var(--van-text-color-2);--van-dropdown-menu-title-padding: 0 var(--van-padding-xs);--van-dropdown-menu-title-line-height: var(--van-line-height-lg);--van-dropdown-menu-option-active-color: var(--van-primary-color);--van-dropdown-menu-content-max-height: 80%}.van-dropdown-menu{-webkit-user-select:none;user-select:none}.van-dropdown-menu__bar{position:relative;display:flex;height:var(--van-dropdown-menu-height);background:var(--van-dropdown-menu-background);box-shadow:var(--van-dropdown-menu-shadow)}.van-dropdown-menu__bar--opened{z-index:calc(var(--van-dropdown-item-z-index) + 1)}.van-dropdown-menu__bar--scrollable{padding-left:var(--van-padding-base);padding-right:var(--van-padding-xs);overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch}.van-dropdown-menu__bar--scrollable::-webkit-scrollbar{display:none}.van-dropdown-menu__item{display:flex;flex:1;align-items:center;justify-content:center;min-width:0}.van-dropdown-menu__item--disabled .van-dropdown-menu__title{color:var(--van-dropdown-menu-title-disabled-text-color)}.van-dropdown-menu__item--grow{flex:1 0 auto;padding-left:var(--van-padding-base);padding-right:var(--van-padding-sm)}.van-dropdown-menu__title{position:relative;box-sizing:border-box;max-width:100%;padding:var(--van-dropdown-menu-title-padding);color:var(--van-dropdown-menu-title-text-color);font-size:var(--van-dropdown-menu-title-font-size);line-height:var(--van-dropdown-menu-title-line-height)}.van-dropdown-menu__title:after{position:absolute;top:50%;right:-4px;margin-top:-5px;border:3px solid;border-color:transparent transparent var(--van-gray-4) var(--van-gray-4);transform:rotate(-45deg);opacity:.8;content:""}.van-dropdown-menu__title--active{color:var(--van-dropdown-menu-title-active-text-color)}.van-dropdown-menu__title--active:after{border-color:transparent transparent currentColor currentColor}.van-dropdown-menu__title--down:after{margin-top:-1px;transform:rotate(135deg)}:root{--van-dropdown-item-z-index: 10}.van-dropdown-item{position:fixed;right:0;left:0;z-index:var(--van-dropdown-item-z-index);overflow:hidden}.van-dropdown-item__icon{display:block;line-height:inherit}.van-dropdown-item__option{text-align:left}.van-dropdown-item__option--active,.van-dropdown-item__option--active .van-dropdown-item__icon{color:var(--van-dropdown-menu-option-active-color)}.van-dropdown-item--up{top:0}.van-dropdown-item--down{bottom:0}.van-dropdown-item__content{position:absolute;max-height:var(--van-dropdown-menu-content-max-height)}:root{--van-floating-panel-border-radius: 16px;--van-floating-panel-header-height: 30px;--van-floating-panel-z-index: 999;--van-floating-panel-background: var(--van-background-2);--van-floating-panel-bar-width: 20px;--van-floating-panel-bar-height: 3px;--van-floating-panel-bar-color: var(--van-gray-5)}.van-floating-panel{position:fixed;left:0;bottom:0;width:100vw;z-index:var(--van-floating-panel-z-index);display:flex;flex-direction:column;touch-action:none;border-top-left-radius:var(--van-floating-panel-border-radius);border-top-right-radius:var(--van-floating-panel-border-radius);background:var(--van-floating-panel-background);will-change:transform}.van-floating-panel:after{content:"";display:block;position:absolute;bottom:-100vh;height:100vh;width:100vw;background-color:inherit}.van-floating-panel__header{height:var(--van-floating-panel-header-height);display:flex;justify-content:center;align-items:center;cursor:-webkit-grab;cursor:grab;-webkit-user-select:none;user-select:none}.van-floating-panel__header-bar{height:var(--van-floating-panel-bar-height);width:var(--van-floating-panel-bar-width);border-radius:var(--van-radius-md);background:var(--van-floating-panel-bar-color)}.van-floating-panel__content{flex:1;overflow-y:auto;background-color:var(--van-floating-panel-background)}.van-grid{display:flex;flex-wrap:wrap}:root{--van-grid-item-content-padding: var(--van-padding-md) var(--van-padding-xs);--van-grid-item-content-background: var(--van-background-2);--van-grid-item-content-active-color: var(--van-active-color);--van-grid-item-icon-size: 28px;--van-grid-item-text-color: var(--van-text-color);--van-grid-item-text-font-size: var(--van-font-size-sm)}.van-grid-item{position:relative;box-sizing:border-box}.van-grid-item--square{height:0}.van-grid-item__icon{font-size:var(--van-grid-item-icon-size)}.van-grid-item__text{color:var(--van-grid-item-text-color);font-size:var(--van-grid-item-text-font-size);line-height:1.5;word-break:break-all}.van-grid-item__icon+.van-grid-item__text{margin-top:var(--van-padding-xs)}.van-grid-item__content{display:flex;flex-direction:column;box-sizing:border-box;height:100%;padding:var(--van-grid-item-content-padding);background:var(--van-grid-item-content-background)}.van-grid-item__content:after{z-index:1;border-width:0 var(--van-border-width) var(--van-border-width) 0}.van-grid-item__content--square{position:absolute;top:0;right:0;left:0}.van-grid-item__content--center{align-items:center;justify-content:center}.van-grid-item__content--horizontal{flex-direction:row}.van-grid-item__content--horizontal .van-grid-item__text{margin:0 0 0 var(--van-padding-xs)}.van-grid-item__content--reverse{flex-direction:column-reverse}.van-grid-item__content--reverse .van-grid-item__text{margin:0 0 var(--van-padding-xs)}.van-grid-item__content--horizontal.van-grid-item__content--reverse{flex-direction:row-reverse}.van-grid-item__content--horizontal.van-grid-item__content--reverse .van-grid-item__text{margin:0 var(--van-padding-xs) 0 0}.van-grid-item__content--surround:after{border-width:var(--van-border-width)}.van-grid-item__content--clickable{cursor:pointer}.van-grid-item__content--clickable:active{background-color:var(--van-grid-item-content-active-color)}:root{--van-highlight-tag-color: var(--van-primary-color)}.van-highlight__tag{color:var(--van-highlight-tag-color)}:root{--van-index-bar-sidebar-z-index: 2;--van-index-bar-index-font-size: var(--van-font-size-xs);--van-index-bar-index-line-height: var(--van-line-height-xs);--van-index-bar-index-active-color: var(--van-primary-color)}.van-index-bar__sidebar{position:fixed;top:50%;right:0;z-index:var(--van-index-bar-sidebar-z-index);display:flex;flex-direction:column;text-align:center;transform:translateY(-50%);cursor:pointer;-webkit-user-select:none;user-select:none}.van-index-bar__index{padding:0 var(--van-padding-xs) 0 var(--van-padding-md);font-weight:var(--van-font-bold);font-size:var(--van-index-bar-index-font-size);line-height:var(--van-index-bar-index-line-height)}.van-index-bar__index--active{color:var(--van-index-bar-index-active-color);font-weight:700}:root{--van-index-anchor-z-index: 1;--van-index-anchor-padding: 0 var(--van-padding-md);--van-index-anchor-text-color: var(--van-text-color);--van-index-anchor-font-weight: var(--van-font-bold);--van-index-anchor-font-size: var(--van-font-size-md);--van-index-anchor-line-height: 32px;--van-index-anchor-background: transparent;--van-index-anchor-sticky-text-color: var(--van-primary-color);--van-index-anchor-sticky-background: var(--van-background-2)}.van-index-anchor{z-index:var(--van-index-anchor-z-index);box-sizing:border-box;padding:var(--van-index-anchor-padding);color:var(--van-index-anchor-text-color);font-weight:var(--van-index-anchor-font-weight);font-size:var(--van-index-anchor-font-size);line-height:var(--van-index-anchor-line-height);background:var(--van-index-anchor-background)}.van-index-anchor--sticky{position:fixed;top:0;right:0;left:0;color:var(--van-index-anchor-sticky-text-color);background:var(--van-index-anchor-sticky-background)}:root{--van-pagination-height: 40px;--van-pagination-font-size: var(--van-font-size-md);--van-pagination-item-width: 36px;--van-pagination-item-default-color: var(--van-primary-color);--van-pagination-item-disabled-color: var(--van-gray-7);--van-pagination-item-disabled-background: var(--van-background);--van-pagination-background: var(--van-background-2);--van-pagination-desc-color: var(--van-gray-7);--van-pagination-disabled-opacity: var(--van-disabled-opacity)}.van-pagination{font-size:var(--van-pagination-font-size)}.van-pagination__items{display:flex}.van-pagination__item,.van-pagination__page-desc{display:flex;align-items:center;justify-content:center}.van-pagination__item{flex:1;box-sizing:border-box;min-width:var(--van-pagination-item-width);height:var(--van-pagination-height);color:var(--van-pagination-item-default-color);background:var(--van-pagination-background);cursor:pointer;-webkit-user-select:none;user-select:none}.van-pagination__item button{flex:1;height:100%;border:none;padding:0;background:transparent}.van-pagination__item button[disabled]{cursor:not-allowed}.van-pagination__item:active{color:var(--van-white);background-color:var(--van-pagination-item-default-color)}.van-pagination__item:not(:last-child):after{border-right-width:0}.van-pagination__item--active{color:var(--van-white);background-color:var(--van-pagination-item-default-color)}.van-pagination__item--page{flex-grow:0}.van-pagination__item--prev,.van-pagination__item--next{padding:0 var(--van-padding-base);cursor:pointer}.van-pagination__item--border:first-child:after{border-right-width:var(--van-border-width)}.van-pagination__item--disabled,.van-pagination__item--disabled:active{color:var(--van-pagination-item-disabled-color);background-color:var(--van-pagination-item-disabled-background);opacity:var(--van-pagination-disabled-opacity)}.van-pagination__page-desc{flex:1;height:var(--van-pagination-height);color:var(--van-pagination-desc-color)}:root{--van-password-input-height: 50px;--van-password-input-margin: 0 var(--van-padding-md);--van-password-input-font-size: 20px;--van-password-input-radius: 6px;--van-password-input-background: var(--van-background-2);--van-password-input-info-color: var(--van-text-color-2);--van-password-input-info-font-size: var(--van-font-size-md);--van-password-input-error-info-color: var(--van-danger-color);--van-password-input-dot-size: 10px;--van-password-input-dot-color: var(--van-text-color);--van-password-input-text-color: var(--van-text-color);--van-password-input-cursor-color: var(--van-text-color);--van-password-input-cursor-width: 1px;--van-password-input-cursor-height: 40%;--van-password-input-cursor-duration: 1s}.van-password-input{position:relative;margin:var(--van-password-input-margin);-webkit-user-select:none;user-select:none}.van-password-input__info,.van-password-input__error-info{margin-top:var(--van-padding-md);font-size:var(--van-password-input-info-font-size);text-align:center}.van-password-input__info{color:var(--van-password-input-info-color)}.van-password-input__error-info{color:var(--van-password-input-error-info-color)}.van-password-input__security{display:flex;width:100%;height:var(--van-password-input-height);cursor:pointer}.van-password-input__security:after{border-radius:var(--van-password-input-radius)}.van-password-input__security li{position:relative;display:flex;flex:1;align-items:center;justify-content:center;height:100%;color:var(--van-password-input-text-color);font-size:var(--van-password-input-font-size);line-height:1.2;background:var(--van-password-input-background)}.van-password-input__security i{position:absolute;top:50%;left:50%;width:var(--van-password-input-dot-size);height:var(--van-password-input-dot-size);background:var(--van-password-input-dot-color);border-radius:100%;transform:translate(-50%,-50%);visibility:hidden}.van-password-input__cursor{position:absolute;top:50%;left:50%;width:var(--van-password-input-cursor-width);height:var(--van-password-input-cursor-height);background:var(--van-password-input-cursor-color);transform:translate(-50%,-50%);animation:var(--van-password-input-cursor-duration) van-cursor-flicker infinite}@keyframes van-cursor-flicker{0%{opacity:0}50%{opacity:1}to{opacity:0}}:root{--van-progress-height: 4px;--van-progress-color: var(--van-primary-color);--van-progress-inactive-color: var(--van-gray-5);--van-progress-background: var(--van-gray-3);--van-progress-pivot-padding: 0 5px;--van-progress-pivot-text-color: var(--van-white);--van-progress-pivot-font-size: var(--van-font-size-xs);--van-progress-pivot-line-height: 1.6;--van-progress-pivot-background: var(--van-primary-color)}.van-progress{position:relative;height:var(--van-progress-height);background:var(--van-progress-background);border-radius:var(--van-progress-height)}.van-progress__portion{position:absolute;left:0;width:100%;height:100%;background:var(--van-progress-color);border-radius:inherit;transform-origin:0;transition:all var(--van-duration-base) var(--van-ease-out)}.van-progress__portion--inactive{background:var(--van-progress-inactive-color)}.van-progress__pivot{position:absolute;top:50%;box-sizing:border-box;min-width:3.6em;padding:var(--van-progress-pivot-padding);color:var(--van-progress-pivot-text-color);font-size:var(--van-progress-pivot-font-size);line-height:var(--van-progress-pivot-line-height);text-align:center;word-break:keep-all;background:var(--van-progress-pivot-background);border-radius:1em;transition:all var(--van-duration-base) var(--van-ease-out)}.van-progress__pivot--inactive{background:var(--van-progress-inactive-color)}:root{--van-rolling-text-background: inherit;--van-rolling-text-color: var(--van-text-color);--van-rolling-text-font-size: var(--van-font-size-md);--van-rolling-text-gap: 0px;--van-rolling-text-item-width: 15px;--van-rolling-text-item-border-radius: 0px}.van-rolling-text{display:inline-flex;justify-content:center;align-items:center;font-size:var(--van-rolling-text-font-size);color:var(--van-rolling-text-color)}.van-rolling-text-item{margin-right:var(--van-rolling-text-gap);width:var(--van-rolling-text-item-width);border-radius:var(--van-rolling-text-item-border-radius);background:var(--van-rolling-text-background);overflow:hidden}.van-rolling-text-item:last-child{margin-right:0}.van-rolling-text-item__box{overflow:hidden}.van-rolling-text-item__box--animate{animation:van-up var(--van-duration) ease-in-out var(--van-delay);animation-iteration-count:1;animation-fill-mode:both}.van-rolling-text-item__item{text-align:center}.van-rolling-text-item--down .van-rolling-text-item__box{transform:translateY(var(--van-translate))}.van-rolling-text-item--down .van-rolling-text-item__box--animate{animation-name:van-down}@keyframes van-down{0%{transform:translateY(var(--van-translate))}to{transform:translateY(0)}}@keyframes van-up{0%{transform:translateY(0)}to{transform:translateY(var(--van-translate))}}:root{--van-sidebar-width: 80px}.van-sidebar{width:var(--van-sidebar-width);overflow-y:auto;-webkit-overflow-scrolling:touch}:root{--van-sidebar-font-size: var(--van-font-size-md);--van-sidebar-line-height: var(--van-line-height-md);--van-sidebar-text-color: var(--van-text-color);--van-sidebar-disabled-text-color: var(--van-text-color-3);--van-sidebar-padding: 20px var(--van-padding-sm);--van-sidebar-active-color: var(--van-active-color);--van-sidebar-background: var(--van-background);--van-sidebar-selected-font-weight: var(--van-font-bold);--van-sidebar-selected-text-color: var(--van-text-color);--van-sidebar-selected-border-width: 4px;--van-sidebar-selected-border-height: 16px;--van-sidebar-selected-border-color: var(--van-primary-color);--van-sidebar-selected-background: var(--van-background-2)}.van-sidebar-item{position:relative;display:block;box-sizing:border-box;padding:var(--van-sidebar-padding);overflow:hidden;color:var(--van-sidebar-text-color);font-size:var(--van-sidebar-font-size);line-height:var(--van-sidebar-line-height);background:var(--van-sidebar-background);cursor:pointer;-webkit-user-select:none;user-select:none}.van-sidebar-item:active{background-color:var(--van-sidebar-active-color)}.van-sidebar-item:not(:last-child):after{border-bottom-width:1px}.van-sidebar-item__text{word-break:break-all}.van-sidebar-item--select{color:var(--van-sidebar-selected-text-color);font-weight:var(--van-sidebar-selected-font-weight)}.van-sidebar-item--select,.van-sidebar-item--select:active{background-color:var(--van-sidebar-selected-background)}.van-sidebar-item--select:before{position:absolute;top:50%;left:0;width:var(--van-sidebar-selected-border-width);height:var(--van-sidebar-selected-border-height);background-color:var(--van-sidebar-selected-border-color);transform:translateY(-50%);content:""}.van-sidebar-item--disabled{color:var(--van-sidebar-disabled-text-color);cursor:not-allowed}.van-sidebar-item--disabled:active{background-color:var(--van-sidebar-background)}:root{--van-tree-select-font-size: var(--van-font-size-md);--van-tree-select-nav-background: var(--van-background);--van-tree-select-content-background: var(--van-background-2);--van-tree-select-nav-item-padding: 14px var(--van-padding-sm);--van-tree-select-item-height: 48px;--van-tree-select-item-active-color: var(--van-primary-color);--van-tree-select-item-disabled-color: var(--van-gray-5);--van-tree-select-item-selected-size: 16px}.van-tree-select{position:relative;display:flex;font-size:var(--van-tree-select-font-size)}.van-tree-select__nav{flex:1;overflow-y:auto;background:var(--van-tree-select-nav-background);-webkit-overflow-scrolling:touch}.van-tree-select__nav-item{padding:var(--van-tree-select-nav-item-padding)}.van-tree-select__content{flex:2;overflow-y:auto;background:var(--van-tree-select-content-background);-webkit-overflow-scrolling:touch}.van-tree-select__item{position:relative;padding:0 32px 0 var(--van-padding-md);font-weight:var(--van-font-bold);line-height:var(--van-tree-select-item-height);-webkit-user-select:none;user-select:none;cursor:pointer}.van-tree-select__item--active{color:var(--van-tree-select-item-active-color)}.van-tree-select__item:active{background-color:var(--van-active-color)}.van-tree-select__item--disabled{color:var(--van-tree-select-item-disabled-color);cursor:not-allowed}.van-tree-select__item--disabled:active{background-color:transparent}.van-tree-select__selected{position:absolute;top:50%;right:var(--van-padding-md);margin-top:calc(var(--van-padding-xs) * -1);font-size:var(--van-tree-select-item-selected-size)}:root{--van-skeleton-title-width: 40%}.van-skeleton-title{height:var(--van-skeleton-paragraph-height);background:var(--van-skeleton-paragraph-background)}.van-skeleton-title--round{border-radius:var(--van-radius-max)}.van-skeleton-title{width:var(--van-skeleton-title-width);margin:0}.van-skeleton-title+.van-skeleton-paragraph{margin-top:20px}:root{--van-skeleton-avatar-size: 32px;--van-skeleton-avatar-background: var(--van-active-color)}.van-skeleton-avatar{flex-shrink:0;width:var(--van-skeleton-avatar-size);height:var(--van-skeleton-avatar-size);margin-right:var(--van-padding-md);background:var(--van-skeleton-avatar-background)}.van-skeleton-avatar--round{border-radius:var(--van-radius-max)}.van-skeleton-avatar+.van-skeleton__content{padding-top:var(--van-padding-xs)}:root{--van-skeleton-paragraph-height: 16px;--van-skeleton-paragraph-background: var(--van-active-color);--van-skeleton-paragraph-margin-top: var(--van-padding-sm)}.van-skeleton-paragraph{height:var(--van-skeleton-paragraph-height);background:var(--van-skeleton-paragraph-background)}.van-skeleton-paragraph--round{border-radius:var(--van-radius-max)}.van-skeleton-paragraph:not(:first-child){margin-top:var(--van-skeleton-paragraph-margin-top)}:root{--van-skeleton-duration: 1.2s}.van-skeleton{display:flex;padding:0 var(--van-padding-md)}.van-skeleton__content{width:100%}.van-skeleton--animate{animation:van-skeleton-blink var(--van-skeleton-duration) ease-in-out infinite}@keyframes van-skeleton-blink{50%{opacity:.6}}:root{--van-slider-active-background: var(--van-primary-color);--van-slider-inactive-background: var(--van-gray-3);--van-slider-disabled-opacity: var(--van-disabled-opacity);--van-slider-bar-height: 2px;--van-slider-button-width: 24px;--van-slider-button-height: 24px;--van-slider-button-radius: 50%;--van-slider-button-background: var(--van-white);--van-slider-button-shadow: 0 1px 2px rgba(0, 0, 0, .5)}.van-theme-dark{--van-slider-inactive-background: var(--van-background-3)}.van-slider{position:relative;width:100%;height:var(--van-slider-bar-height);background:var(--van-slider-inactive-background);border-radius:var(--van-radius-max);cursor:pointer}.van-slider:before{position:absolute;top:calc(var(--van-padding-xs) * -1);right:0;bottom:calc(var(--van-padding-xs) * -1);left:0;content:""}.van-slider__bar{position:absolute;width:100%;height:100%;background:var(--van-slider-active-background);border-radius:inherit;transition:all var(--van-duration-fast)}.van-slider__button{width:var(--van-slider-button-width);height:var(--van-slider-button-height);background:var(--van-slider-button-background);border-radius:var(--van-slider-button-radius);box-shadow:var(--van-slider-button-shadow)}.van-slider__button-wrapper{position:absolute;cursor:-webkit-grab;cursor:grab;top:50%}.van-slider__button-wrapper--right{right:0;transform:translate3d(50%,-50%,0)}.van-slider__button-wrapper--left{left:0;transform:translate3d(-50%,-50%,0)}.van-slider--disabled{cursor:not-allowed;opacity:var(--van-slider-disabled-opacity)}.van-slider--disabled .van-slider__button-wrapper{cursor:not-allowed}.van-slider--vertical{display:inline-block;width:var(--van-slider-bar-height);height:100%}.van-slider--vertical .van-slider__button-wrapper--right{top:auto;right:50%;bottom:0;transform:translate3d(50%,50%,0)}.van-slider--vertical .van-slider__button-wrapper--left{top:0;right:50%;left:auto;transform:translate3d(50%,-50%,0)}.van-slider--vertical:before{top:0;right:calc(var(--van-padding-xs) * -1);bottom:0;left:calc(var(--van-padding-xs) * -1)}.van-space{display:inline-flex}.van-space--horizontal .van-space-item{display:flex;align-items:center}.van-space--vertical{flex-direction:column}.van-space--align-baseline{align-items:baseline}.van-space--align-start{align-items:flex-start}.van-space--align-end{align-items:flex-end}.van-space--align-center{align-items:center}.van-space--wrap{flex-wrap:wrap}.van-space--fill{display:flex}:root{--van-steps-background: var(--van-background-2)}.van-steps{overflow:hidden;background-color:var(--van-steps-background)}.van-steps--horizontal{padding:10px 10px 0}.van-steps--horizontal .van-steps__items{position:relative;display:flex;margin:0 0 10px;padding-bottom:22px}.van-steps--vertical{padding:0 0 0 var(--van-padding-xl)}:root{--van-step-text-color: var(--van-text-color-2);--van-step-active-color: var(--van-primary-color);--van-step-process-text-color: var(--van-text-color);--van-step-font-size: var(--van-font-size-md);--van-step-line-color: var(--van-border-color);--van-step-finish-line-color: var(--van-primary-color);--van-step-finish-text-color: var(--van-text-color);--van-step-icon-size: 12px;--van-step-circle-size: 5px;--van-step-circle-color: var(--van-gray-6);--van-step-horizontal-title-font-size: var(--van-font-size-sm)}.van-step{position:relative;flex:1;color:var(--van-step-text-color);font-size:var(--van-step-font-size)}.van-step__circle{display:block;width:var(--van-step-circle-size);height:var(--van-step-circle-size);background-color:var(--van-step-circle-color);border-radius:50%}.van-step__line{position:absolute;background-color:var(--van-step-line-color);transition:background-color var(--van-duration-base)}.van-step--horizontal{float:left}.van-step--horizontal:first-child .van-step__title{margin-left:0;transform:none}.van-step--horizontal:last-child:not(:first-child){position:absolute;right:1px;width:auto}.van-step--horizontal:last-child:not(:first-child) .van-step__title{margin-left:0;transform:none}.van-step--horizontal:last-child:not(:first-child) .van-step__circle-container{right:-9px;left:auto}.van-step--horizontal .van-step__circle-container{position:absolute;top:30px;left:calc(var(--van-padding-xs) * -1);z-index:1;padding:0 var(--van-padding-xs);background-color:var(--van-background-2);transform:translateY(-50%)}.van-step--horizontal .van-step__title{display:inline-block;margin-left:3px;font-size:var(--van-step-horizontal-title-font-size);transform:translate(-50%)}.van-step--horizontal .van-step__line{top:30px;left:0;width:100%;height:1px}.van-step--horizontal .van-step__icon{display:block;font-size:var(--van-step-icon-size)}.van-step--horizontal .van-step--process{color:var(--van-step-process-text-color)}.van-step--vertical{display:block;float:none;padding:10px 10px 10px 0;line-height:var(--van-line-height-sm)}.van-step--vertical:not(:last-child):after{border-bottom-width:1px}.van-step--vertical .van-step__circle-container{position:absolute;top:19px;left:-15px;z-index:1;font-size:var(--van-step-icon-size);line-height:1;transform:translate(-50%,-50%)}.van-step--vertical .van-step__line{top:16px;left:-15px;width:1px;height:100%}.van-step:last-child .van-step__line{width:0}.van-step--finish{color:var(--van-step-finish-text-color)}.van-step--finish .van-step__circle,.van-step--finish .van-step__line{background-color:var(--van-step-finish-line-color)}.van-step__icon,.van-step__title{transition:color var(--van-duration-base)}.van-step__icon--active,.van-step__title--active,.van-step__icon--finish,.van-step__title--finish{color:var(--van-step-active-color)}:root{--van-stepper-background: var(--van-active-color);--van-stepper-button-icon-color: var(--van-text-color);--van-stepper-button-disabled-color: var(--van-background);--van-stepper-button-disabled-icon-color: var(--van-gray-5);--van-stepper-button-round-theme-color: var(--van-primary-color);--van-stepper-input-width: 32px;--van-stepper-input-height: 28px;--van-stepper-input-font-size: var(--van-font-size-md);--van-stepper-input-line-height: normal;--van-stepper-input-text-color: var(--van-text-color);--van-stepper-input-disabled-text-color: var(--van-text-color-3);--van-stepper-input-disabled-background: var(--van-active-color);--van-stepper-radius: var(--van-radius-md)}.van-stepper{display:inline-block;-webkit-user-select:none;user-select:none}.van-stepper__minus,.van-stepper__plus{position:relative;box-sizing:border-box;width:var(--van-stepper-input-height);height:var(--van-stepper-input-height);margin:0;padding:0;color:var(--van-stepper-button-icon-color);vertical-align:middle;background:var(--van-stepper-background);border:0}.van-stepper__minus:before,.van-stepper__plus:before{width:50%;height:1px}.van-stepper__minus:after,.van-stepper__plus:after{width:1px;height:50%}.van-stepper__minus:before,.van-stepper__plus:before,.van-stepper__minus:after,.van-stepper__plus:after{position:absolute;top:50%;left:50%;background-color:currentColor;transform:translate(-50%,-50%);content:""}.van-stepper__minus--disabled,.van-stepper__plus--disabled{color:var(--van-stepper-button-disabled-icon-color);background-color:var(--van-stepper-button-disabled-color);cursor:not-allowed}.van-stepper__minus{border-radius:var(--van-stepper-radius) 0 0 var(--van-stepper-radius)}.van-stepper__minus:after{display:none}.van-stepper__plus{border-radius:0 var(--van-stepper-radius) var(--van-stepper-radius) 0}.van-stepper__input{box-sizing:border-box;width:var(--van-stepper-input-width);height:var(--van-stepper-input-height);margin:0 2px;padding:0;color:var(--van-stepper-input-text-color);font-size:var(--van-stepper-input-font-size);line-height:var(--van-stepper-input-line-height);text-align:center;vertical-align:middle;background:var(--van-stepper-background);border:0;border-width:1px 0;border-radius:0;-webkit-appearance:none}.van-stepper__input:disabled{color:var(--van-stepper-input-disabled-text-color);background-color:var(--van-stepper-input-disabled-background);-webkit-text-fill-color:var(--van-stepper-input-disabled-text-color);opacity:1}.van-stepper__input:read-only{cursor:default}.van-stepper--round .van-stepper__input{background-color:transparent}.van-stepper--round .van-stepper__plus,.van-stepper--round .van-stepper__minus{border-radius:100%}.van-stepper--round .van-stepper__plus--disabled,.van-stepper--round .van-stepper__minus--disabled{opacity:.3;cursor:not-allowed}.van-stepper--round .van-stepper__plus{color:var(--van-white);background:var(--van-stepper-button-round-theme-color)}.van-stepper--round .van-stepper__minus{color:var(--van-stepper-button-round-theme-color);background-color:var(--van-background-2);border:1px solid var(--van-stepper-button-round-theme-color)}.van-swipe-cell{position:relative;overflow:hidden;cursor:-webkit-grab;cursor:grab}.van-swipe-cell__wrapper{transition-timing-function:cubic-bezier(.18,.89,.32,1);transition-property:transform}.van-swipe-cell__left,.van-swipe-cell__right{position:absolute;top:0;height:100%}.van-swipe-cell__left{left:0;transform:translate3d(-100%,0,0)}.van-swipe-cell__right{right:0;transform:translate3d(100%,0,0)}:root{--van-tabbar-height: 50px;--van-tabbar-z-index: 1;--van-tabbar-background: var(--van-background-2)}.van-tabbar{z-index:var(--van-tabbar-z-index);display:flex;box-sizing:content-box;width:100%;height:var(--van-tabbar-height);background:var(--van-tabbar-background)}.van-tabbar--fixed{position:fixed;bottom:0;left:0}:root{--van-tabbar-item-font-size: var(--van-font-size-sm);--van-tabbar-item-text-color: var(--van-text-color);--van-tabbar-item-active-color: var(--van-primary-color);--van-tabbar-item-active-background: var(--van-background-2);--van-tabbar-item-line-height: 1;--van-tabbar-item-icon-size: 22px;--van-tabbar-item-icon-margin-bottom: var(--van-padding-base)}.van-tabbar-item{display:flex;flex:1;flex-direction:column;align-items:center;justify-content:center;color:var(--van-tabbar-item-text-color);font-size:var(--van-tabbar-item-font-size);line-height:var(--van-tabbar-item-line-height);cursor:pointer}.van-tabbar-item__icon{margin-bottom:var(--van-tabbar-item-icon-margin-bottom);font-size:var(--van-tabbar-item-icon-size)}.van-tabbar-item__icon .van-icon{display:block}.van-tabbar-item__icon .van-badge{margin-top:var(--van-padding-base)}.van-tabbar-item__icon img{display:block;height:20px}.van-tabbar-item--active{color:var(--van-tabbar-item-active-color);background-color:var(--van-tabbar-item-active-background)}:root{--van-text-ellipsis-line-height: 1.6;--van-text-ellipsis-action-color: var(--van-blue)}.van-text-ellipsis{line-height:var(--van-text-ellipsis-line-height);white-space:pre-wrap;overflow-wrap:break-word}.van-text-ellipsis__action{cursor:pointer;color:var(--van-text-ellipsis-action-color)}.van-text-ellipsis__action:active{opacity:var(--van-active-opacity)}:root{--van-watermark-z-index: 100}.van-watermark{position:absolute;height:100%;width:100%;left:0;top:0;z-index:var(--van-watermark-z-index);background-repeat:repeat;pointer-events:none}.van-watermark__wrapper{display:none}.van-watermark--full{position:fixed}body{--at-apply: m-none text-13px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;--base: #444;--nav-height: 50px}.splitpanes__pane{justify-content:center;align-items:center;display:flex;position:relative;border-right:1px solid var(--van-doc-border-color);border-left:1px solid var(--van-doc-border-color)}.van-repl{height:calc(100vh - var(--van-doc-header-top-height))!important}.dark .vue-repl,.vue-repl{height:100%;flex:1;--color-branding: var(--van-doc-link-color) !important}.dark .vue-repl .right,.vue-repl .right{flex:1}.dark .vue-repl .right .wrapper,.vue-repl .right .wrapper,.dark .vue-repl .left,.dark .vue-repl .toggler,.vue-repl .left,.vue-repl .toggler{display:none}.van-output{width:100%;height:100%}.van-output .iframe-container{height:100%}.van-editor{width:100%;height:100%;flex:1;display:flex;flex-direction:row;align-items:center;justify-content:flex-start} diff --git a/playground/assets/onig-4quf_T-L-mBJmD8D5.js b/playground/assets/onig-4quf_T-L-mBJmD8D5.js new file mode 100644 index 00000000..ea5df5e0 --- /dev/null +++ b/playground/assets/onig-4quf_T-L-mBJmD8D5.js @@ -0,0 +1 @@ +var B=Uint8Array.from(atob("AGFzbQEAAAABoQEWYAJ/fwF/YAF/AX9gA39/fwF/YAR/f39/AX9gAX8AYAV/f39/fwF/YAN/f38AYAJ/fwBgBn9/f39/fwF/YAd/f39/f39/AX9gAAF/YAl/f39/f39/f38Bf2AIf39/f39/f38Bf2AAAGAEf39/fwBgA39+fwF+YAZ/fH9/f38Bf2AAAXxgBn9/f39/fwBgAnx/AXxgAn5/AX9gBX9/f39/AAJ1BANlbnYVZW1zY3JpcHRlbl9tZW1jcHlfYmlnAAYDZW52EmVtc2NyaXB0ZW5fZ2V0X25vdwARFndhc2lfc25hcHNob3RfcHJldmlldzEIZmRfd3JpdGUAAwNlbnYWZW1zY3JpcHRlbl9yZXNpemVfaGVhcAABA9MB0QENBAABAAECAgsCAAIEBAACAQEAAQMCAwkCBgUDBQgCAwwMAwkJAwgDAQIFAwMEAQUHCwgCAgsABQUBAgQCBgIAAQACBAIABwMHBgcAAwACAAICAAQBAgcAAgUCAAEBBgYABgQACAUICQsJDAAAAAAAAAACAgIDAAIDAgADAQABAAACBQICAAESAQEEAgIGAgUDAQUAAgEBAAoBAAEAAwMCAAACBgIOAgEPAQEBChMCBQkGAQ4UFRAHAwIBAAEECggCAQgIBwcNAQQABwABCgQBBQQFAXABMzMFBwEBgAKAgAIGDgJ/AUHQj9MCC38BQQALB5QCDwZtZW1vcnkCABFfX3dhc21fY2FsbF9jdG9ycwAEGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBABBfX2Vycm5vX2xvY2F0aW9uALABB29tYWxsb2MAwAEFb2ZyZWUAwQEQZ2V0TGFzdE9uaWdFcnJvcgDCARFjcmVhdGVPbmlnU2Nhbm5lcgDEAQ9mcmVlT25pZ1NjYW5uZXIAxQEYZmluZE5leHRPbmlnU2Nhbm5lck1hdGNoAMYBG2ZpbmROZXh0T25pZ1NjYW5uZXJNYXRjaERiZwDHAQlzdGFja1NhdmUA0QEMc3RhY2tSZXN0b3JlANIBCnN0YWNrQWxsb2MA0wEMZHluQ2FsbF9qaWppANQBCVIBAEEBCzIFCgsPHC9vcHRxcnN1ugG7Ab0BBgcICYABfoEBggGDAX97fIUBmwF9hAFvnAFvnQGeAZ8BoAGhAZIBogGYAZcBowGkAaUBqwGqAawB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ACADNgIEIA0oAgBBATYCCEEADwsgACgCDCABEE8iA0EASARAIAMPCyACIAIoAowBIgVBAWo2AowBIAFBOxBRIgQNCyABKAIIIANBBWo2AgQgAUHNABBRIgQNCyABKAIIIAU2AgQgASgCCEEANgIIIAAoAgwgASACEEIiBA0LIAFBPhBRIgAhBCAADQsgASgCCCAFNgIEIAFBPRBRIgAhBCAADQsgAUE5EFEPCyMAQRBrIgkkAAJAIAAoAhQgACgCGEYEQCACIAIoAowBIgdBAWo2AowBAkAgASgCDCIDIAEoAhAiBEkNACAERQ0AIARBAXQiBkEATARAQXUhAwwDC0F7IQMgASgCACAEQShsEM0BIgVFDQIgASAFNgIAIAEoAgQgBEEDdBDNASIERQ0CIAEgBjYCECABIAQ2AgQgASgCDCEDCyABIANBAWo2AgwgASABKAIAIANBFGxqIgM2AgggA0EANgIQIANCADcCCCADQgA3AgAgASgCBCABKAIIIAEoAgBrQRRtQQJ0akHNADYCACABKAIIIAc2AgQgASgCCEEANgIIAkAgASgCDCIDIAEoAhAiBEkNACAERQ0AIARBAXQiBkEATARAQXUhAwwDC0F7IQMgASgCACAEQShsEM0BIgVFDQIgASAFNgIAIAEoAgQgBEEDdBDNASIERQ0CIAEgBjYCECABIAQ2AgQgASgCDCEDCyABIANBAWo2AgwgASABKAIAIANBFGxqIgM2AgggA0EANgIQIANCADcCCCADQgA3AgAgASgCBCABKAIIIAEoAgBrQRRtQQJ0akHKADYCACABKAIIIAAoAhQ2AgQgASgCCEEANgIIIAEoAghBATYCDCAAKAIMIAEgAhBCIgMNAQJAIAEoAgwiACABKAIQIgJJDQAgAkUNACACQQF0IgBBAEwEQEF1IQMMAwtBeyEDIAEoAgAgAkEobBDNASIERQ0CIAEgBDYCACABKAIEIAJBA3QQzQEiAkUNAiABIAA2AhAgASACNgIEIAEoAgwhAAsgASAAQQFqNgIMIAEgASgCACAAQRRsaiIANgIIQQAhAyAAQQA2AhAgAEIANwIIIABCADcCACABKAIEIAEoAgggASgCAGtBFG1BAnRqQcwANgIAIAEoAgggBzYCBCABKAIIQQA2AggMAQsgACgCICIDBEAgAyABIAkgAkEAEF0iA0EASA0BAkAgASgCDCIDIAEoAhAiBEkNACAERQ0AIARBAXQiB0EATARAQXUhAwwDC0F7IQMgASgCACAEQShsEM0BIgZFDQIgASAGNgIAIAEoAgQgBEEDdBDNASIERQ0CIAEgBzYCECABIAQ2AgQgASgCDCEDCyABIANBAWo2AgwgASABKAIAIANBFGxqIgM2AgggA0EANgIQIANCADcCCCADQgA3AgAgASgCBCABKAIIIAEoAgBrQRRtQQJ0akHJADYCACABKAIIQQAgCSgCAGs2AgQgACgCICABIAIQQiIDDQELIAIgAigCjAEiB0EBajYCjAECQCABKAIMIgMgASgCECIESQ0AIARFDQAgBEEBdCIGQQBMBEBBdSEDDAILQXshAyABKAIAIARBKGwQzQEiBUUNASABIAU2AgAgASgCBCAEQQN0EM0BIgRFDQEgASAGNgIQIAEgBDYCBCABKAIMIQMLIAEgA0EBajYCDCABIAEoAgAgA0EUbGoiAzYCCCADQQA2AhAgA0IANwIIIANCADcCACABKAIEIAEoAgggASgCAGtBFG1BAnRqQc4ANgIAIAEoAghBAjYCBCABKAIIIAc2AggCQCABKAIMIgMgASgCECIESQ0AIARFDQAgBEEBdCIGQQBMBEBBdSEDDAILQXshAyABKAIAIARBKGwQzQEiBUUNASABIAU2AgAgASgCBCAEQQN0EM0BIgRFDQEgASAGNgIQIAEgBDYCBCABKAIMIQMLIAEgA0EBajYCDCABIAEoAgAgA0EUbGoiAzYCCCADQQA2AhAgA0IANwIIIANCADcCACABKAIEIAEoAgggASgCAGtBFG1BAnRqQc8ANgIAIAEoAghBBDYCBCACIAIoAowBIgZBAWo2AowBAkAgASgCDCIDIAEoAhAiBEkNACAERQ0AIARBAXQiBUEATARAQXUhAwwCC0F7IQMgASgCACAEQShsEM0BIghFDQEgASAINgIAIAEoAgQgBEEDdBDNASIERQ0BIAEgBTYCECABIAQ2AgQgASgCDCEDCyABIANBAWo2AgwgASABKAIAIANBFGxqIgM2AgggA0EANgIQIANCADcCCCADQgA3AgAgASgCBCABKAIIIAEoAgBrQRRtQQJ0akHNADYCACABKAIIIAY2AgQgASgCCEEANgIIAkAgASgCDCIDIAEoAhAiBEkNACAERQ0AIARBAXQiBUEATARAQXUhAwwCC0F7IQMgASgCACAEQShsEM0BIghFDQEgASAINgIAIAEoAgQgBEEDdBDNASIERQ0BIAEgBTYCECABIAQ2AgQgASgCDCEDCyABIANBAWo2AgwgASABKAIAIANBFGxqIgM2AgggA0EANgIQIANCADcCCCADQgA3AgAgASgCBCABKAIIIAEoAgBrQRRtQQJ0akE7NgIAIAEoAghBAjYCBAJAIAEoAgwiAyABKAIQIgRJDQAgBEUNACAEQQF0IgVBAEwEQEF1IQMMAgtBeyEDIAEoAgAgBEEobBDNASIIRQ0BIAEgCDYCACABKAIEIARBA3QQzQEiBEUNASABIAU2AhAgASAENgIEIAEoAgwhAwsgASADQQFqNgIMIAEgASgCACADQRRsaiIDNgIIIANBADYCECADQgA3AgggA0IANwIAIAEoAgQgASgCCCABKAIAa0EUbUECdGpBOjYCACABKAIIQQM2AgQCQCABKAIMIgMgASgCECIESQ0AIARFDQAgBEEBdCIFQQBMBEBBdSEDDAILQXshAyABKAIAIARBKGwQzQEiCEUNASABIAg2AgAgASgCBCAEQQN0EM0BIgRFDQEgASAFNgIQIAEgBDYCBCABKAIMIQMLIAEgA0EBajYCDCABIAEoAgAgA0EUbGoiAzYCCCADQQA2AhAgA0IANwIIIANCADcCACABKAIEIAEoAgggASgCAGtBFG1BAnRqQc8ANgIAIAEoAghBAjYCBCABKAIIIAc2AgggASgCCEEANgIMAkAgASgCDCIDIAEoAhAiBEkNACAERQ0AIARBAXQiBUEATARAQXUhAwwCC0F7IQMgASgCACAEQShsEM0BIghFDQEgASAINgIAIAEoAgQgBEEDdBDNASIERQ0BIAEgBTYCECABIAQ2AgQgASgCDCEDCyABIANBAWo2AgwgASABKAIAIANBFGxqIgM2AgggA0EANgIQIANCADcCCCADQgA3AgAgASgCBCABKAIIIAEoAgBrQRRtQQJ0akE5NgIAIAFBygAQUSIDDQAgACgCGCEDIAEoAgggACgCFCIENgIEIAEoAghBfyADIARrIANBf0YbNgIIIAEoAghBAjYCDCABQcsAEFEiAw0AIAAoAgwgASACEEIiAw0AIAFBKBBRIgMNACABKAIIQQE2AgQgAUHMABBRIgMNACABKAIIIAY2AgQgASgCCEEANgIIIAFBzwAQUSIDDQAgASgCCEECNgIEIAEoAgggBzYCCCABKAIIQQE2AgxBACEDCyAJQRBqJAAgAw8LIwBBEGsiCiQAIAAoAgwgARBPIQggACgCGCEGIAAoAhQhBSACIAIoAowBIgdBAWo2AowBIAEoAhAhBCABKAIMIQMCQCAFIAZGBEACQCADIARJDQAgBEUNACAEQQF0IgZBAEwEQEF1IQMMAwtBeyEDIAEoAgAgBEEobBDNASIFRQ0CIAEgBTYCACABKAIEIARBA3QQzQEiBEUNAiABIAY2AhAgASAENgIEIAEoAgwhAwsgASADQQFqNgIMIAEgASgCACADQRRsaiIDNgIIIANBADYCECADQgA3AgggA0IANwIAIAEoAgQgASgCCCABKAIAa0EUbUECdGpBzQA2AgAgASgCCCAHNgIEIAEoAghBADYCCAJAIAEoAgwiAyABKAIQIgRJDQAgBEUNACAEQQF0IgZBAEwEQEF1IQMMAwtBeyEDIAEoAgAgBEEobBDNASIFRQ0CIAEgBTYCACABKAIEIARBA3QQzQEiBEUNAiABIAY2AhAgASAENgIEIAEoAgwhAwsgASADQQFqNgIMIAEgASgCACADQRRsaiIDNgIIIANBADYCECADQgA3AgggA0IANwIAIAEoAgQgASgCCCABKAIAa0EUbUECdGpBOzYCACABKAIIIAhBBGo2AgQCQCABKAIMIgMgASgCECIESQ0AIARFDQAgBEEBdCIGQQBMBEBBdSEDDAMLQXshAyABKAIAIARBKGwQzQEiBUUNAiABIAU2AgAgASgCBCAEQQN0EM0BIgRFDQIgASAGNgIQIAEgBDYCBCABKAIMIQMLIAEgA0EBajYCDCABIAEoAgAgA0EUbGoiAzYCCCADQQA2AhAgA0IANwIIIANCADcCACABKAIEIAEoAgggASgCAGtBFG1BAnRqQcoANgIAIAEoAgggACgCFDYCBCABKAIIQQA2AgggASgCCEEBNgIMIAAoAgwgASACEEIiAw0BAkAgASgCDCIAIAEoAhAiAkkNACACRQ0AIAJBAXQiAEEATARAQXUhAwwDC0F7IQMgASgCACACQShsEM0BIgRFDQIgASAENgIAIAEoAgQgAkEDdBDNASICRQ0CIAEgADYCECABIAI2AgQgASgCDCEACyABIABBAWo2AgwgASABKAIAIABBFGxqIgA2AgggAEEANgIQIABCADcCCCAAQgA3AgAgASgCBCABKAIIIAEoAgBrQRRtQQJ0akE+NgIAIAEoAgggBzYCBAJAIAEoAgwiACABKAIQIgJJDQAgAkUNACACQQF0IgBBAEwEQEF1IQMMAwtBeyEDIAEoAgAgAkEobBDNASIERQ0CIAEgBDYCACABKAIEIAJBA3QQzQEiAkUNAiABIAA2AhAgASACNgIEIAEoAgwhAAsgASAAQQFqNgIMIAEgASgCACAAQRRsaiIANgIIIABBADYCECAAQgA3AgggAEIANwIAIAEoAgQgASgCCCABKAIAa0EUbUECdGpBOTYCAAJAIAEoAgwiACABKAIQIgJJDQAgAkUNACACQQF0IgBBAEwEQEF1IQMMAwtBeyEDIAEoAgAgAkEobBDNASIERQ0CIAEgBDYCACABKAIEIAJBA3QQzQEiAkUNAiABIAA2AhAgASACNgIEIAEoAgwhAAsgASAAQQFqNgIMIAEgASgCACAAQRRsaiIANgIIQQAhAyAAQQA2AhAgAEIANwIIIABCADcCACABKAIEIAEoAgggASgCAGtBFG1BAnRqQT02AgAMAQsCQCADIARJDQAgBEUNACAEQQF0IgZBAEwEQEF1IQMMAgtBeyEDIAEoAgAgBEEobBDNASIFRQ0BIAEgBTYCACABKAIEIARBA3QQzQEiBEUNASABIAY2AhAgASAENgIEIAEoAgwhAwsgASADQQFqNgIMIAEgASgCACADQRRsaiIDNgIIIANBADYCECADQgA3AgggA0IANwIAIAEoAgQgASgCCCABKAIAa0EUbUECdGpBzgA2AgAgASgCCEECNgIEIAEoAgggBzYCCAJAIAEoAgwiAyABKAIQIgRJDQAgBEUNACAEQQF0IgZBAEwEQEF1IQMMAgtBeyEDIAEoAgAgBEEobBDNASIFRQ0BIAEgBTYCACABKAIEIARBA3QQzQEiBEUNASABIAY2AhAgASAENgIEIAEoAgwhAwsgASADQQFqNgIMIAEgASgCACADQRRsaiIDNgIIIANBADYCECADQgA3AgggA0IANwIAIAEoAgQgASgCCCABKAIAa0EUbUECdGpBzwA2AgAgASgCCEEENgIEIAIgAigCjAEiBkEBajYCjAECQCABKAIMIgMgASgCECIESQ0AIARFDQAgBEEBdCIFQQBMBEBBdSEDDAILQXshAyABKAIAIARBKGwQzQEiCUUNASABIAk2AgAgASgCBCAEQQN0EM0BIgRFDQEgASAFNgIQIAEgBDYCBCABKAIMIQMLIAEgA0EBajYCDCABIAEoAgAgA0EUbGoiAzYCCCADQQA2AhAgA0IANwIIIANCADcCACABKAIEIAEoAgggASgCAGtBFG1BAnRqQc0ANgIAIAEoAgggBjYCBCABKAIIQQA2AggCQCABKAIMIgMgASgCECIESQ0AIARFDQAgBEEBdCIFQQBMBEBBdSEDDAILQXshAyABKAIAIARBKGwQzQEiCUUNASABIAk2AgAgASgCBCAEQQN0EM0BIgRFDQEgASAFNgIQIAEgBDYCBCABKAIMIQMLIAEgA0EBajYCDCABIAEoAgAgA0EUbGoiAzYCCCADQQA2AhAgA0IANwIIIANCADcCACABKAIEIAEoAgggASgCAGtBFG1BAnRqQTs2AgAgASgCCCAIQQhqNgIEIAAoAiAiAwRAIAMgARBPIQMgASgCCCIEIAMgBCgCBGpBAWo2AgQgACgCICABIAogAkEAEF0iA0EASA0BAkAgASgCDCIDIAEoAhAiBEkNACAERQ0AIARBAXQiBUEATARAQXUhAwwDC0F7IQMgASgCACAEQShsEM0BIghFDQIgASAINgIAIAEoAgQgBEEDdBDNASIERQ0CIAEgBTYCECABIAQ2AgQgASgCDCEDCyABIANBAWo2AgwgASABKAIAIANBFGxqIgM2AgggA0EANgIQIANCADcCCCADQgA3AgAgASgCBCABKAIIIAEoAgBrQRRtQQJ0akHJADYCACABKAIIQQAgCigCAGs2AgQgACgCICABIAIQQiIDDQELAkAgASgCDCIDIAEoAhAiBEkNACAERQ0AIARBAXQiBUEATARAQXUhAwwCC0F7IQMgASgCACAEQShsEM0BIghFDQEgASAINgIAIAEoAgQgBEEDdBDNASIERQ0BIAEgBTYCECABIAQ2AgQgASgCDCEDCyABIANBAWo2AgwgASABKAIAIANBFGxqIgM2AgggA0EANgIQIANCADcCCCADQgA3AgAgASgCBCABKAIIIAEoAgBrQRRtQQJ0akHKADYCACAAKAIYIQMgASgCCCAA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AgANACAAKAIwDQAgACgCDCECIAAgAEEYaiIENgIMIAAgBCAAKAIQIAJrajYCEAsgBSgCAA0BIAUoAjANASAFKAIMIQAgBSAFQRhqIgI2AgwgBSACIAUoAhAgAGtqNgIQIAMQEAwGCyAGQcACaiIFIABBMGoiAikCADcDACAGQbgCaiIEIABBKGoiASkCADcDACAGQbACaiIJIABBIGoiCykCADcDACAGQagCaiIHIABBGGoiCikCADcDACAGQaACaiIOIABBEGoiDSkCADcDACAGQZgCaiIQIABBCGoiDCkCADcDACAGIAApAgA3A5ACIAIgA0EwaiIVKQIANwIAIAEgA0EoaiICKQIANwIAIAsgA0EgaiIBKQIANwIAIAogA0EYaiILKQIANwIAIA0gA0EQaiIKKQIANwIAIAwgA0EIaiINKQIANwIAIAAgAykCADcCACAVIAUpAwA3AgAgAiAEKQMANwIAIAEgCSkDADcCACALIAcpAwA3AgAgCiAOKQMANwIAIA0gECkDADcCACADIAYpA5ACNwIAAkAgACgCAA0AIAAoAjANACAAKAIMIQUgACAAQRhqIgI2AgwgACACIAAoAhAgBWtqNgIQCyADKAIADQAgAygCMA0AIAMoAgwhBSADIANBGGoiADYCDCADIAAgAygCECAFa2o2AhALIAMQEAwECyAGQcACaiIFIABBMGoiAikCADcDACAGQbgCaiIEIABBKGoiAykCADcDACAGQbACaiIBIABBIGoiCSkCADcDACAGQagCaiILIABBGGoiBykCADcDACAGQaACaiIKIABBEGoiDikCADcDACAGQZgCaiINIABBCGoiECkCADcDACAGIAApAgA3A5ACIAIgCEEwaiIMKQIANwIAIAMgCEEoaiICKQIANwIAIAkgCEEgaiIDKQIANwIAIAcgCEEYaiIJKQIANwIAIA4gCEEQaiIHKQIANwIAIBAgCEEIaiIOKQIANwIAIAAgCCkCADcCACAMIAUpAwA3AgAgAiAEKQMANwIAIAMgASkDADcCACAJIAspAwA3AgAgByAKKQMANwIAIA4gDSkDADcCACAIIAYpA5ACNwIAAkAgACgCAA0AIAAoAjANACAAKAIMIQUgACAAQRhqIgI2AgwgACACIAAoAhAgBWtqNgIQCwJAIAgoAgANACAIKAIwDQAgCCgC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QQFrQQZ0aiIBKAIAIAUoAhhHBEAgAUIANwIAIAFCADcCOCABQgA3AjAgAUIANwIoIAFCADcCICABQgA3AhggAUIANwIQIAFCADcCCCABIAUoAhg2AgALIAEoAghBACABKAIEGyECCyAAKAIIIgFBAEwNACAAKAIoKAIoIgUoAhwiBiABQQFrIghBBnRqIgEoAgAgBSgCGEcEQCABQgA3AgAgAUIANwI4IAFCADcCMCABQgA3AiggAUIANwIgIAFCADcCGCABQgA3AhAgAUIANwIIIAEgBSgCGDYCAAsCQCABKAIERQRAIAAoAgwgACgCCBAOIgFFDQIgASgCBEEBRw0CIAEoAkQiAyABKAJIIgUgBygCRCgCFBEAACEIQQAhBiAFIAMgBygCRCgCABEBACADaiIBSwRAIAEgBSAHKAJEKAIUEQAAIQZBmH4hAyABIAcoAkQoAgARAQAgAWogBUcNAwtBmH4hAwJ/AkACQAJAAkAgCEEhaw4eAQcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHAgADBwtBACAGQT1GDQMaDAYLQQEgBkE9Rg0CGgwFC0EEIAZBPUYNARogBg0EQQIMAQtBBSAGQT1GDQAaIAYNA0EDCyEBQWIhAyAAKAIIIgdBAEwNAiAAKAIoKAIoIgMoAhwgB0EGdGpBQGoiAEEBNgIEIAAgBTYCDCAAIAE2AgggACADKAIYNgIADAELIAYgCEEGdGooAgghAQtBACEAAkACQAJAAkACQAJAAkAgAQ4GAAECAwQFBgsgAiAERiEADAULIAIgBEchAAwECyACIARKIQAMAwsgAiAESCEADAILIAIgBE4hAAwBCyACIARMIQALIABBAXMhAwsgAws/AQF/AkAgACgCDCIAIAIgAWsiA2oQywEiAkUNACACIAEgAxCmASEBIABBAEwNACABIANqQQAgABCoARoLIAILJgAgAiABIAIgACgCOBEAACIBSwR/IAEgACgCABEBACABagUgAQsLHgEBfyABIAJJBH8gASACQQFrIAAoAjgRAAAFIAMLCzsAAkAgAkUNAANAIANBAEwEQCACDwsgASACTw0BIANBAWshAyABIAJBAWsgACgCOBEAACICDQALC0EAC2gBBH8gASECA0ACQCACLQAADQAgACgCDCIDQQFHBEAgAiEEIANBAkgNAQNAIAQtAAENAiAEQQFqIQQgA0ECSiEFIANBAWshAyAFDQALCyACIAFrDwsgAiAAKAIAEQEAIAJqIQIMAAsAC3UBBH8jAEEQayIAJAACQANAIAAgBEEDdEHQJWoiAygCBCIFNgIMIAMoAgAiBiAAQQxqQQEgAiABEQMAIgMNASAAIAY2AgwgBSAAQQxqQQEgAiABEQMAIgMNASAEQQFqIgRBGkcNAAtBACEDCyAAQRBqJAAgAwtOAEEgIQACfyABLQAAIgJBwQBrQf8BcUEaTwRAQWAhAEEAIAJB4QBrQf8BcUEZSw0BGgsgA0KBgICAEDcCACADIAAgAS0AAGo2AghBAQsLBABBfgscAAJ/IAAgAUkEQEEBIAAtAABBCkYNARoLQQALCyUAIAMgASgCAC0AAEHQH2otAAA6AAAgASABKAIAQQFqNgIAQQELBABBAQsHACAALQAACw4AQQFB8HwgAEGAAkkbCwsAIAEgADoAAEEBCwQAIAELzgEBBn8gASACSQRAIAEhAwNAIAVBAWohBSADIAAoAgARAQAgA2oiAyACSQ0ACwtBAEHAmhFqIQMgBEHHCWohBANAAkAgBSADIgYuAQgiB0cNACAFIQggASEDAkAgB0EATA0AA0AgAiADSwRAIAMgAiAAKAIUEQAAIAQtAABHDQMgBEEBaiEEIAMgACgCABEBACADaiEDIAhBAUshByAIQQFrIQggBw0BDAILCyAELQAADQELIAYoAgQPCyAGQQxqIQMgBigCDCIEDQALQaF+C2gBAX8CQCAEQQBKBEADQCABIAJPBEAgAy0AAA8LIAEgAiAAKAIUEQAAIQUgAy0AACAFayIFDQIgA0EBaiEDIAEgACgCABEBACABaiEBIARBAUshBSAEQQFrIQQgBQ0ACwtBACEFCyAFCy4BAX8gASACIAAoAhQRAAAiAEH/AE0EfyAAQQF0QdAhai8BAEEMdkEBcQUgAwsLPgEDfwJAIAJBAEwNAANAIAAgA0ECdCIFaigCACABIAVqKAIARgRAIAIgA0EBaiIDRw0BDAILC0F/IQQLIAQLJwEBfyAAIAFBA20iAkECdGooAgBBECABIAJBA2xrQQN0a3ZB/wFxC7YIAQF/Qc0JIQECQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB9ANqDvQDTU5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTkxOTktKMzZOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTklIR0ZFRENCQUA/Pj08Ozo5ODc1NE4yMTAvLi0sKyopKE5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk4nJiUkIyIhIB8eHRwbGhkYThcWFRQTEhFOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk4QTk5OTk5ODw4NTgcGBQQDDAsKCU5OTk4IAk4BAE9OC0GzDA8LQbMNDwtBjQ4PC0GEDw8LQfAPDwtByRAPC0G+EQ8LQf8RDwtBwBIPC0HnEg8LQZYTDwtBuhMPC0HkEw8LQf4TDwtBvBQPC0GEFQ8LQZcVDwtBrhUPC0HNFQ8LQewVDwtBnhYPC0HyFg8LQYoXDwtBoBcPC0G5Fw8LQdUXDwtB9BcPC0GYGA8LQbsYDwtB7BgPC0GgJw8LQcUnDwtB3CcPC0H4Jw8LQZ8oDwtBtCgPC0HLKA8LQeAoDwtB+ygPC0GaKQ8LQb0pDwtBzCkPC0HsKQ8LQZgqDwtBsioPC0HlKg8LQZIrDwtBsisPC0HJKw8LQeUrDwtBliwPC0GoLA8LQcAsDwtB2SwPC0HsLA8LQYUtDwtBmS0P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AUYNAQsLIAILoQEBBH9BASEEAkAgACABTw0AA0BBACEEIAAtAAAiAkHAAXFBgAFGDQEgAEEBaiEDAkAgAkHAAWtBNEsEQCADIQAMAQsgAEECIAJBAnRBkIoRaigCACICIAJBAkwbIgVqIQBBASECA0AgASADRg0DIAMtAABBwAFxQYABRw0DIANBAWohAyACQQFqIgIgBUcNAAsLIAAgAUkNAAtBASEECyAEC4AEAQN/IAJBgARPBEAgACABIAIQACAADwsgACACaiEDAkAgACABc0EDcUUEQAJAIABBA3FFBEAgACECDAELIAJFBEAgACECDAELIAAhAgNAIAIgAS0AADoAACABQQFqIQEgAkEBaiICQQNxRQ0BIAIgA0kNAAsLAkAgA0F8cSIEQcAASQ0AIAIgBEFAaiIFSw0AA0AgAiABKAIANgIAIAIgASgCBDYCBCACIAEoAgg2AgggAiABKAIMNgIMIAIgASgCEDYCECACIAEoAhQ2AhQgAiABKAIYNgIYIAIgASgCHDYCHCACIAEoAiA2AiAgAiABKAIkNgIkIAIgASgCKDYCKCACIAEoAiw2AiwgAiABKAIwNgIwIAIgASgCNDYCNCACIAEoAjg2AjggAiABKAI8NgI8IAFBQGshASACQUBrIgIgBU0NAAsLIAIgBE8NAQNAIAIgASgCADYCACABQQRqIQEgAkEEaiICIARJDQALDAELIANBBEkEQCAAIQIMAQsgACADQQRrIgRLBEAgACECDAELIAAhAgNAIAIgAS0AADoAACACIAEtAAE6AAEgAiABLQACOgACIAIgAS0AAzoAAyABQQRqIQEgAkEEaiICIARNDQALCyACIANJBEADQCACIAEtAAA6AAAgAUEBaiEBIAJBAWoiAiADRw0ACwsgAAvoAgECfwJAIAAgAUYNACABIAAgAmoiA2tBACACQQF0a00EQCAAIAEgAhCmARoPCyAAIAFzQQNxIQQCQAJAIAAgAUkEQCAEBEAgACEDDAMLIABBA3FFBEAgACEDDAILIAAhAwNAIAJFDQQgAyABLQAAOgAAIAFBAWohASACQQFrIQIgA0EBaiIDQQNxDQALDAELAkAgBA0AIANBA3EEQANAIAJFDQUgACACQQFrIgJqIgMgASACai0AADoAACADQQNxDQALCyACQQNNDQADQCAAIAJBBGsi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AmogASACQf////8Hc0obIQELIAAgA0EBajYCACABIQIgAywAARCvAQ0ACyABC7YEAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAFBCWsOEgABAgUDBAYHCAkKCwwNDg8QERILIAIgAigCACIBQQRqNgIAIAAgASgCADYCAA8LIAIgAigCACIBQQRqNgIAIAAgATQCADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATUCADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATQCADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATUCADcDAA8LIAIgAigCAEEHakF4cSIBQQhqNgIAIAAgASkDADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATIBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATMBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATAAADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATEAADcDAA8LIAIgAigCAEEHakF4cSIBQQhqNgIAIAAgASkDADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATUCADcDAA8LIAIgAigCAEEHakF4cSIBQQhqNgIAIAAgASkDADcDAA8LIAIgAigCAEEHakF4cSIBQQhqNgIAIAAgASkDADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATQCADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATUCADcDAA8LIAIgAigCAEEHakF4cSIBQQhqNgIAIAAgASsDADkDAA8LIAAgAiADEQcACwuDAQIDfwF+AkAgAEKAgICAEFQEQCAAIQUMAQsDQCABQQFrIgEgACAAQgqAIgVCCn59p0EwcjoAACAAQv////+fAVYhAiAFIQAgAg0ACwsgBaciAgRAA0AgAUEBayIBIAIgAkEKbiIDQQpsa0EwcjoAACACQQlLIQQgAyECIAQNAAsLIAELcgEBfyMAQYACayIFJAACQCACIANMDQAgBEGAwARxDQAgBSABQf8BcSACIANrIgNBgAIgA0GAAkkiAhsQqAEaIAJFBEADQCAAIAVBgAIQtQEgA0GAAmsiA0H/AUsNAAsLIAAgBSADELUBCyAFQYACaiQAC8kYAxJ/AXwCfiMAQbAEayIKJAAgCkEANgIsAkAgAb0iGUIAUwRAQQEhEUH6DSETIAGaIgG9IRkMAQsgBEGAEHEEQEEBIRFB/Q0hEwwBC0GADkH7DSAEQQFxIhEbIRMgEUUhFwsCQCAZQoCAgICAgID4/wCDQoCAgICAgID4/wBRBEAgAEEgIAIgEUEDaiIGIARB//97cRC5ASAAIBMgERC1ASAAQeMQQeMRIAVBIHEiBxtBoQ9BohAgBxsgASABYhtBAxC1ASAAQSAgAiAGIARBgMAAcxC5ASAGIAIgAiAGSBshCQwBCyAKQRBqIRICQAJ/AkAgASAKQSxqELEBIgEgAaAiAUQAAAAAAAAAAGIEQCAKIAooAiwiBkEBazYCLCAFQSByIhVB4QBHDQEMAwsgBUEgciIVQeEARg0CIAooAiwhFEEGIAMgA0EASBsMAQsgCiAGQR1rIhQ2AiwgAUQAAAAAAACwQaIhAUEGIAMgA0EASBsLIQwgCkEwakGgAkEAIBRBAE4baiIPIQcDQCAHAn8gAUQAAAAAAADwQWMgAUQAAAAAAAAAAGZxBEAgAasMAQtBAAsiBjYCACAHQQRqIQcgASAGuKFEAAAAAGXNzUGiIgFEAAAAAAAAAABiDQALAkAgFEEATARAIBQhAyAHIQYgDyEIDAELIA8hCCAUIQMDQEEdIAMgA0EdThshAwJAIAdBBGsiBiAISQ0AIAOtIRpCACEZA0AgBiAZQv////8PgyAGNQIAIBqGfCIZIBlCgJTr3AOAIhlCgJTr3AN+fT4CACAGQQRrIgYgCE8NAAsgGaciBkUNACAIQQRrIgggBjYCAAsDQCAIIAciBkkEQCAGQQRrIgcoAgBFDQELCyAKIAooAiwgA2siAzYCLCAGIQcgA0EASg0ACwsgA0EASARAIAxBGWpBCW5BAWohECAVQeYARiEWA0BBCUEAIANrIgcgB0EJThshCwJAIAYgCE0EQCAIKAIAIQcMAQtBgJTr3AMgC3YhDUF/IAt0QX9zIQ5BACEDIAghBwNAIAcgBygCACIJIAt2IANqNgIAIAkgDnEgDWwhAyAHQQRqIgcgBkkNAAsgCCgCACEHIANFDQAgBiADNgIAIAZBBGohBgsgCiAKKAIsIAtqIgM2AiwgDyAIIAdFQQJ0aiIIIBYbIgcgEEECdGogBiAGIAdrQQJ1IBBKGyEGIANBAEgNAAsLQQAhAwJAIAYgCE0NACAPIAhrQQJ1QQlsIQNBCiEHIAgoAgAiCUEKSQ0AA0AgA0EBaiEDIAkgB0EKbCIHTw0ACwsgDCADQQAgFUHmAEcbayAVQecARiAMQQBHcWsiByAGIA9rQQJ1QQlsQQlrSARAQQRBpAIgFEEASBsgCmogB0GAyABqIglBCW0iDUECdGpB0B9rIQtBCiEHIAkgDUEJbGsiCUEHTARAA0AgB0EKbCEHIAlBAWoiCUEIRw0ACwsCQCALKAIAIgkgCSAHbiIQIAdsayINRSALQQRqIg4gBkZxDQACQCAQQQFxRQRARAAAAAAAAEBDIQEgB0GAlOvcA0cNASAIIAtPDQEgC0EEay0AAEEBcUUNAQtEAQAAAAAAQEMhAQtEAAAAAAAA4D9EAAAAAAAA8D9EAAAAAAAA+D8gBiAORhtEAAAAAAAA+D8gDSAHQQF2Ig5GGyANIA5JGyEYAkAgFw0AIBMtAABBLUcNACAYmiEYIAGaIQELIAsgCSANayIJNgIAIAEgGKAgAWENACALIAcgCWoiBzYCACAHQYCU69wDTwRAA0AgC0EANgIAIAggC0EEayILSwRAIAhBBGsiCEEANgIACyALIAsoAgBBAWoiBzYCACAHQf+T69wDSw0ACwsgDyAIa0ECdUEJbCEDQQohByAIKAIAIglBCkkNAANAIANBAWohAyAJIAdBCmwiB08NAAsLIAtBBGoiByAGIAYgB0sbIQYLA0AgBiIHIAhNIglFBEAgB0EEayIGKAIARQ0BCwsCQCAVQecARwRAIARBCHEhCwwBCyADQX9zQX8gDEEBIAwbIgYgA0ogA0F7SnEiCxsgBmohDEF/QX4gCxsgBWohBSAEQQhxIgsNAEF3IQYCQCAJDQAgB0EEaygCACILRQ0AQQohCUEAIQYgC0EKcA0AA0AgBiINQQFqIQYgCyAJQQpsIglwRQ0ACyANQX9zIQYLIAcgD2tBAnVBCWwhCSAFQV9xQcYARgRAQQAhCyAMIAYgCWpBCWsiBkEAIAZBAEobIgYgBiAMShshDAwBC0EAIQsgDCADIAlqIAZqQQlrIgZBACAGQQBKGyIGIAYgDEobIQwLQX8hCSAMQf3///8HQf7///8HIAsgDHIiDRtKDQEgDCANQQBHakEBaiEOAkAgBUFfcSIWQcYARgRAIAMgDkH/////B3NKDQMgA0EAIANBAEobIQYMAQsgEiADIANBH3UiBnMgBmutIBIQuAEiBmtBAUwEQANAIAZBAWsiBkEwOgAAIBIgBmtBAkgNAAsLIAZBAmsiECAFOgAAIAZBAWtBLUErIANBAEgbOgAAIBIgEGsiBiAOQf////8Hc0oNAgsgBiAOaiIGIBFB/////wdzSg0BIABBICACIAYgEWoiDiAEELkBIAAgEyARELUBIABBMCACIA4gBEGAgARzELkBAkACQAJAIBZBxgBGBEAgCkEQakEIciELIApBEGpBCXIhAyAPIAggCCAPSxsiCSEIA0AgCDUCACADELgBIQYCQCAIIAlHBEAgBiAKQRBqTQ0BA0AgBkEBayIGQTA6AAAgBiAKQRBqSw0ACwwBCyADIAZHDQAgCkEwOgAYIAshBgsgACAGIAMgBmsQtQEgCEEEaiIIIA9NDQALIA0EQCAAQawSQQEQtQELIAcgCE0NASAMQQBMDQEDQCAINQIAIAMQuAEiBiAKQRBqSwRAA0AgBkEBayIGQTA6AAAgBiAKQRBqSw0ACwsgACAGQQkgDCAMQQlOGxC1ASAMQQlrIQYgCEEEaiIIIAdPDQMgDEEJSiEJIAYhDCAJDQALDAILAkAgDEEASA0AIAcgCEEEaiAHIAhLGyENIApBEGpBCHIhDyAKQRBqQQlyIQMgCCEHA0AgAyAHNQIAIAMQuAEiBkYEQCAKQTA6ABggDyEGCwJAIAcgCEcEQCAGIApBEGpNDQEDQCAGQQFrIgZBMDoAACAGIApBEGpLDQALDAELIAAgBkEBELUBIAZBAWohBiALIAxyRQ0AIABBrBJBARC1AQsgACAGIAwgAyAGayIJIAkgDEobELUBIAwgCWshDCAHQQRqIgcgDU8NASAMQQBODQALCyAAQTAgDEESakESQQAQuQEgACAQIBIgEGsQtQEMAgsgDCEGCyAAQTAgBkEJakEJQQAQuQELIABBICACIA4gBEGAwABzELkBIA4gAiACIA5IGyEJDAELIBMgBUEadEEfdUEJcWohDgJAIANBC0sNAEEMIANrIQZEAAAAAAAAMEAhGANAIBhEAAAAAAAAMECiIRggBkEBayIGDQALIA4tAABBLUYEQCAYIAGaIBihoJohAQwBCyABIBigIBihIQELIBIgCigCLCIGIAZBH3UiBnMgBmutIBIQuAEiBkYEQCAKQTA6AA8gCkEPaiEGCyARQQJyIQsgBUEgcSEIIAooAiwhByAGQQJrIg0gBUEPajoAACAGQQFrQS1BKyAHQQBIGzoAACAEQQhxIQkgCkEQaiEHA0AgByIGAn8gAZlEAAAAAAAA4EFjBEAgAaoMAQtBgICAgHgLIgdB4JURai0AACAIcjoAACABIAe3oUQAAAAAAAAwQKIhAQJAIAZBAWoiByAKQRBqa0EBRw0AAkAgCQ0AIANBAEoNACABRAAAAAAAAAAAYQ0BCyAGQS46AAEgBkECaiEHCyABRAAAAAAAAAAAYg0AC0F/IQlB/f///wcgCyASIA1rIhBqIgZrIANIDQAgAEEgIAICfwJAIANFDQAgByAKQRBqayIIQQJrIANODQAgA0ECagwBCyAHIApBEGprIggLIgcgBmoiBiAEELkBIAAgDiALELUBIABBMCACIAYgBEGAgARzELkBIAAgCkEQaiAIELUBIABBMCAHIAhrQQBBABC5ASAAIA0gEBC1ASAAQSAgAiAGIARBgMAAcxC5ASAGIAIgAiAGSBshCQsgCkGwBGokACAJC40FAgZ+An8gASABKAIAQQdqQXhxIgFBEGo2AgAgACABKQMAIQQgASkDCCEFIwBBIGsiACQAAkAgBUL///////////8AgyIDQoCAgICAgMCAPH0gA0KAgICAgIDA/8MAfVQEQCAFQgSGIARCPIiEIQMgBEL//////////w+DIgRCgYCAgICAgIAIWgRAIANCgYCAgICAgIDAAHwhAgwCCyADQoCAgICAgICAQH0hAiAEQoCAgICAgICACFINASACIANCAYN8IQIMAQsgBFAgA0KAgICAgIDA//8AVCADQoCAgICAgMD//wBRG0UEQCAFQgSGIARCPIiEQv////////8Dg0KAgICAgICA/P8AhCECDAELQoCAgICAgID4/wAhAiADQv///////7//wwBWDQBCACECIANCMIinIgFBkfcASQ0AIABBEGohCSAEIQIgBUL///////8/g0KAgICAgIDAAIQiAyEGAkAgAUGB9wBrIghBwABxBEAgAiAIQUBqrYYhBkIAIQIMAQsgCEUNACAGIAitIgeGIAJBwAAgCGutiIQhBiACIAeGIQILIAkgAjcDACAJIAY3AwgCQEGB+AAgAWsiAUHAAHEEQCADIAFBQGqtiCEEQgAhAwwBCyABRQ0AIANBwAAgAWuthiAEIAGtIgKIhCEEIAMgAoghAwsgACAENwMAIAAgAzcDCCAAKQMIQgSGIAApAwAiA0I8iIQhAiAAKQMQIAApAxiEQgBSrSADQv//////////D4OEIgNCgYCAgICAgIAIWgRAIAJCAXwhAgwBCyADQoCAgICAgICACFINACACQgGDIAJ8IQILIABBIGokACACIAVCgICAgICAgICAf4OEvzkDAAugAQECfyMAQaABayIEJABBfyEFIAQgAUEBa0EAIAEbNgKUASAEIAAgBEGeAWogARsiADYCkAEgBEEAQZABEKgBIgRBfzYCTCAEQRA2AiQgBEF/NgJQIAQgBEGfAWo2AiwgBCAEQZABajYCVAJAIAFBAEgEQEHoyhJBPTYCAAwBCyAAQQA6AAAgBCACIANBDkEPELMBIQULIARBoAFqJAAgBQurAQEEfyAAKAJUIgMoAgQiBSAAKAIUIAAoAhwiBmsiBCAEIAVLGyIEBEAgAygCACAGIAQQpgEaIAMgAygCACAEajYCACADIAMoAgQgBGsiBTYCBAsgAygCACEEIAUgAiACIAVLGyIFBEAgBCABIAUQpgEaIAMgAygCACAFaiIENgIAIAMgAygCBCAFazYCBAsgBEEAOgAAIAAgACgCLCIDNgIcIAAgAzYCFCACCxYAIABFBEBBAA8LQejKEiAANgIAQX8LogIAIABFBEBBAA8LAn8CQCAABH8gAUH/AE0NAQJAQfzLEigCACgCAEUEQCABQYB/cUGAvwNGDQNB6MoSQRk2AgAMAQsgAUH/D00EQCAAIAFBP3FBgAFyOgABIAAgAUEGdkHAAXI6AABBAgwECyABQYBAcUGAwANHIAFBgLADT3FFBEAgACABQT9xQYABcjoAAiAAIAFBDHZB4AFyOgAAIAAgAUEGdkE/cUGAAXI6AAFBAwwECyABQYCABGtB//8/TQRAIAAgAUE/cUGAAXI6AAMgACABQRJ2QfABcjoAACAAIAFBBnZBP3FBgAFyOgACIAAgAUEMdkE/cUGAAXI6AAFBBAwEC0HoyhJBGTYCAAtBfwVBAQsMAQsgACABOgAAQQELCwcAIAAQywELBwAgABDMAQu9BQEJfyMAQRBrIggkACAIQZjMEjYCAEGUzBIoAgAhByMAQYABayIBJAAgASAINgJcAkAgB0GhfkcgB0HcAWpBBk9xRQRAIAEgASgCXCICQQRqNgJcAn9BACACKAIAIgAoAgQiAkUNABogACgCCCEEIAAoAgAiBigCDEECTgRAA0ACQCACIARPDQACfyACIAQgBigCFBEAACIAQYABTwRAAkAgAEGAgARJDQAgA0ERSg0AIAEgAEEYdjYCMCABQeAAaiADaiIFQQVBqzIgAUEwahCpASABIABBEHZB/wFxNgIgIAVBBGpBA0GmMiABQSBqEKkBIAEgAEEIdkH/AXE2AhAgBUEGakEDQaYyIAFBEGoQqQEgASAAQf8BcTYCACAFQQhqQQNBpjIgARCpASADQQpqDAILIANBFUoNAiABIABBCHZB/wFxNgJQIAFB4ABqIANqIgVBBUGrMiABQdAAahCpASABIABB/wFxNgJAIAVBBGpBA0GmMiABQUBrEKkBIANBBmoMAQsgAUHgAGogA2ogADoAACADQQFqCyEDIAIgBigCABEBACACaiECIANBG0gNAQsLIAIgBEkMAQsgAUHgAGogAkEbIAQgAmsiACAAQRtOGyIDEKYBGiAAQRtKCyEFIAcQigEhAkGwzBIhAANAAkACQCACLQAAIgRBJUcEQCAERQ0BDAILIAJBAWohBiACLQABIgRB7gBHBEAgBiECDAILIAAgAUHgAGogAxCmASADaiEAIAUEQCAAQaIyLwAAOwAAIABBpDItAAA6AAIgAEEDaiEACyAGQQFqIQIMAgsgAEEAOgAADAMLIAAgBDoAACAAQQFqIQAgAkEBaiECDAALAAtBlL0SIAcQigEiABB6IQJBsMwSIAAgAhCmASACakEAOgAACyABQYABaiQAIAhBEGokAEGwzBIL4wEBAX8CQAJAAkACfyAALQAQBEBBACEBIABBDGogACgCCCACIAIgA2oiBiACIARqIAYgACgCDCAFEG1BAE4NARpBACEGDAMLAkAgACgCFCABRw0AIAAoAhwgBUcNACAAKAIYIARKDQAgAC0AIEUEQEEADwsgACgCDCIGKAIIKAIAIARODQQLIAAgBTYCHCAAIAQ2AhggACABNgIUQQAhASAAKAIIIAIgAiADaiIGIAIgBGogBiAAKAIMIAUQbUEASA0BIABBDGoLKAIAIQZBASEBDAELQQAhBgsgACABOgAgCyAGC7gzARp/IwBBEGsiGCQAIAJBAnQiChDLASEbIAoQywEhGSACQQBK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JyB3aXRob3V0IGVzY2FwZQBXb3JkAEFscGhhAEVVQy1DTgBGQUlMAChudWxsKQAARgBBAEkATAAAAEYAQQBJAEwAAAAAYWJvcnQAQmxhbmsAIyVkAEFscGhhAFsATUlTTUFUQ0gAAE0ASQBTAE0AQQBUAEMASAAAAE0ASQBTAE0AQQBUAEMASAAAAAAtMFgrMFggMFgtMHgrMHggMHgAZmFpbCB0byBtZW1vcnkgYWxsb2NhdGlvbgBDbnRybABIaXJhZ2FuYQBNQVgALQBPTklHLU1PTklUT1I6ICUtNHMgJXMgYXQ6ICVkIFslZCAtICVkXSBsZW46ICVkCgAATQBBAFgAAABNAEEAWAAAAABEaWdpdABtYXRjaC1zdGFjayBsaW1pdCBvdmVyAEFsbnVtAGluZgBjaGFyYWN0ZXIgY2xhc3MgaGFzICclcycgd2l0aG91dCBlc2NhcGUARVJST1IAPT4AAEUAUgBSAE8AUgAAAEUAUgBSAE8AUgAAAABwYXJzZSBkZXB0aCBsaW1pdCBvdmVyAGFsbnVtAEdyYXBoAEthdGFrYW5hAENPVU5UAElORgA8PQAAQwBPAFUATgBUAAAAQwBPAFUATgBUAAAAAExvd2VyAHJldHJ5LWxpbWl0LWluLW1hdGNoIG92ZXIAbmFuAGFscGhhAFRPVEFMX0NPVU5UAEFTQ0lJAABUAE8AVABBAEwAXwBDAE8AVQBOAFQAAABUAE8AVABBAEwAXwBDAE8AVQBOAFQAAAAAUHJpbnQAWERpZ2l0AHJldHJ5LWxpbWl0LWluLXNlYXJjaCBvdmVyAGJsYW5rAENNUABOQU4AAEMATQBQAAAAQwBNAFAAAAAAUHVuY3QAc3ViZXhwLWNhbGwtbGltaXQtaW4tc2VhcmNoIG92ZXIAY250cmwAQ250cmwALgBkaWdpdABCbGFuawBTcGFjZQB1bmRlZmluZWQgdHlwZSAoYnVnKQBQdW5jdABVcHBlcgBncmFwaABpbnRlcm5hbCBwYXJzZXIgZXJyb3IgKGJ1ZykAUHJpbnQAWERpZ2l0AGxvd2VyAHN0YWNrIGVycm9yIChidWcpAHByaW50AFVwcGVyAEFTQ0lJAHVuZGVmaW5lZCBieXRlY29kZSAoYnVnKQBwdW5jdABTcGFjZQBXb3JkAHVuZXhwZWN0ZWQgYnl0ZWNvZGUgKGJ1ZykAZGVmYXVsdCBtdWx0aWJ5dGUtZW5jb2RpbmcgaXMgbm90IHNldABMb3dlcgBzcGFjZQB1cHBlcgBHcmFwaABjYW4ndCBjb252ZXJ0IHRvIHdpZGUtY2hhciBvbiBzcGVjaWZpZWQgbXVsdGlieXRlLWVuY29kaW5nAHhkaWdpdABEaWdpdABmYWlsIHRvIGluaXRpYWxpemUAaW52YWxpZCBhcmd1bWVudABhc2NpaQBlbmQgcGF0dGVybiBhdCBsZWZ0IGJyYWNlAHdvcmQAZW5kIHBhdHRlcm4gYXQgbGVmdCBicmFja2V0ADpdAGVtcHR5IGNoYXItY2xhc3MAcmVkdW5kYW50IG5lc3RlZCByZXBlYXQgb3BlcmF0b3IAcHJlbWF0dXJlIGVuZCBvZiBjaGFyLWNsYXNzAG5lc3RlZCByZXBlYXQgb3BlcmF0b3IgJXMgYW5kICVzIHdhcyByZXBsYWNlZCB3aXRoICclcycAZW5kIHBhdHRlcm4gYXQgZXNjYXBlAD8AZW5kIHBhdHRlcm4gYXQgbWV0YQAqAGVuZCBwYXR0ZXJuIGF0IGNvbnRyb2wAKwBpbnZhbGlkIG1ldGEtY29kZSBzeW50YXgAPz8AaW52YWxpZCBjb250cm9sLWNvZGUgc3ludGF4ACo/AGNoYXItY2xhc3MgdmFsdWUgYXQgZW5kIG9mIHJhbmdlACs/AGNoYXItY2xhc3MgdmFsdWUgYXQgc3RhcnQgb2YgcmFuZ2UAdW5tYXRjaGVkIHJhbmdlIHNwZWNpZmllciBpbiBjaGFyLWNsYXNzACsgYW5kID8/AHRhcmdldCBvZiByZXBlYXQgb3BlcmF0b3IgaXMgbm90IHNwZWNpZmllZAArPyBhbmQgPwAPAAAADgAAAHQ+AwB8PgMA6AP0AU0B+gDIAKcAjwB9AG8AZABbAFMATQBHAEMAPwA7ADgANQAyADAALQArACoAKAAmACUAJAAiACEAIAAfAB4AHQAdABwAGwAaABoAGQAYABgAFwAXABYAFgAVABUAFAAUABQAEwATABMAEgASABIAEQARABEAEAAQABAAEAAPAA8ADwAPAA4ADgAOAA4ADgAOAA0ADQANAA0ADQANAAwADAAMAAwADAAMAAsACwALAAsACwALAAsACwALAAoACgAKAAoA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b2RlIHJhbmdlcyBhcmUgc3BlY2lmaWVkAHRvbyBzaG9ydCBtdWx0aWJ5dGUgY29kZSBzdHJpbmcAdG9vIGJpZyBiYWNrcmVmIG51bWJlcgBpbnZhbGlkIGJhY2tyZWYgbnVtYmVyL25hbWUAbnVtYmVyZWQgYmFja3JlZi9jYWxsIGlzIG5vdCBhbGxvd2VkLiAodXNlIG5hbWUpAHRvbyBtYW55IGNhcHR1cmVzAHRvbyBiaWcgd2lkZS1jaGFyIHZhbHVlAHRvbyBsb25nIHdpZGUtY2hhciB2YWx1ZQB1bmRlZmluZWQgb3BlcmF0b3IAaW52YWxpZCBjb2RlIHBvaW50IHZhbHVlAGdyb3VwIG5hbWUgaXMgZW1wdHkAaW52YWxpZCBncm91cCBuYW1lIDwlbj4AaW52YWxpZCBjaGFyIGluIGdyb3VwIG5hbWUgPCVuPgB1bmRlZmluZWQgbmFtZSA8JW4+IHJlZmVyZW5jZQB1bmRlZmluZWQgZ3JvdXAgPCVuPiByZWZlcmVuY2UAbXVsdGlwbGV4IGRlZmluZWQgbmFtZSA8JW4+AG11bHRpcGxleCBkZWZpbml0aW9uIG5hbWUgPCVuPiBjYWxsAG5ldmVyIGVuZGluZyByZWN1cnNpb24AZ3JvdXAgbnVtYmVyIGlzIHRvbyBiaWcgZm9yIGNhcHR1cmUgaGlzdG9yeQBpbnZhbGlkIGNoYXJhY3RlciBwcm9wZXJ0eSBuYW1lIHslbn0AaW52YWxpZCBpZi1lbHNlIHN5bnRheABpbnZhbGlkIGFic2VudCBncm91cCBwYXR0ZXJuAGludmFsaWQgYWJzZW50IGdyb3VwIGdlbmVyYXRvciBwYXR0ZXJuAGludmFsaWQgY2FsbG91dCBwYXR0ZXJuAGludmFsaWQgY2FsbG91dCBuYW1lAHVuZGVmaW5lZCBjYWxsb3V0IG5hbWUAaW52YWxpZCBjYWxsb3V0IGJvZHkAaW52YWxpZCBjYWxsb3V0IHRhZyBuYW1lAGludmFsaWQgY2FsbG91dCBhcmcAbm90IHN1cHBvcnRlZCBlbmNvZGluZyBjb21iaW5hdGlvbgBpbnZhbGlkIGNvbWJpbmF0aW9uIG9mIG9wdGlvbnMAdmVyeSBpbmVmZmljaWVudCBwYXR0ZXJuAGxpYnJhcnkgaXMg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ALYJAAC5CQAAvAkAAMQJAADHCQAAyAkAAMsJAADOCQAA1wkAANcJAADcCQAA3QkAAN8JAADjCQAA5gkAAP4JAAABCgAAAwoAAAUKAAAKCgAADwoAABAKAAATCgAAKAoAACoKAAAwCgAAMgoAADMKAAA1CgAANgoAADgKAAA5CgAAPAoAADwKAAA+CgAAQgoAAEcKAABICgAASwoAAE0KAABRCgAAUQoAAFkKAABcCgAAXgoAAF4KAABmCgAAdgoAAIEKAACDCgAAhQoAAI0KAACPCgAAkQoAAJMKAACoCgAAqgoAALAKAACyCgAAswoAALUKAAC5CgAAvAoAAMUKAADHCgAAyQoAAMsKAADNCgAA0AoAANAKAADgCgAA4woAAOYKAADxCgAA+QoAAP8KAAABCwAAAwsAAAULAAAMCwAADwsAABALAAATCwAAKAsAACoLAAAwCwAAMgsAADMLAAA1CwAAOQsAADwLAABECwAARwsAAEgLAABLCwAATQsAAFULAABXCwAAXAsAAF0LAABfCwAAYwsAAGYLAAB3CwAAggsAAIMLAACFCwAAigsAAI4LAACQCwAAkgsAAJULAACZCwAAmgsAAJwLAACcCwAAngsAAJ8LAACjCwAApAsAAKgLAACqCwAArgsAALkLAAC+CwAAwgsAAMYLAADICwAAygsAAM0LAADQCwAA0AsAANcLAADXCwAA5gsAAPoLAAAADAAADAwAAA4MAAAQDAAAEgwAACgMAAAqDAAAOQwAADwMAABEDAAARgwAAEgMAABKDAAATQwAAFUMAABWDAAAWAwAAFoMAABdDAAAXQwAAGAMAABjDAAAZgwAAG8MAAB3DAAAjAwAAI4MAACQDAAAkgwAAKgMAACqDAAAswwAALUMAAC5DAAAvAwAAMQMAADGDAAAyAwAAMoMAADNDAAA1QwAANYMAADdDAAA3gwAAOAMAADjDAAA5gwAAO8MAADxDAAA8gwAAAANAAAMDQAADg0AABANAAASDQAARA0AAEYNAABIDQAASg0AAE8NAABUDQAAYw0AAGYNAAB/DQAAgQ0AAIMNAACFDQAAlg0AAJoNAACxDQAAsw0AALsNAAC9DQAAvQ0AAMANAADGDQAAyg0AAMoNAADPDQAA1A0AANYNAADWDQAA2A0AAN8NAADmDQAA7w0AAPINAAD0DQAAAQ4A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AKoAAACqAAAAtQAAALUAAAC6AAAAugAAAN8AAAD2AAAA+AAAAP8AAAABAQAAAQEAAAMBAAADAQAABQEAAAUBAAAHAQAABwEAAAkBAAAJAQAACwEAAAsBAAANAQAADQEAAA8BAAAPAQAAEQEAABEBAAATAQAAEwEAABUBAAAVAQAAFwEAABcBAAAZAQAAGQEAABsBAAAbAQAAHQEAAB0BAAAfAQAAHwEAACEBAAAhAQAAIwEAACMBAAAlAQAAJQEAACcBAAAnAQAAKQEAACkBAAArAQAAKwEAAC0BAAAtAQAALwEAAC8BAAAxAQAAMQEAADMBAAAzAQAANQEAADUBAAA3AQAAOAEAADoBAAA6AQAAPAEAADwBAAA+AQAAPgEAAEABAABAAQAAQgEAAEIBAABEAQAARAEAAEYBAABGAQAASAEAAEkBAABLAQAASwEAAE0BAABNAQAATwEAAE8BAABRAQAAUQEAAFMBAABTAQAAVQEAAFUBAABXAQAAVwEAAFkBAABZAQAAWwEAAFsBAABdAQAAXQEAAF8BAABfAQAAYQEAAGEBAABjAQAAYwEAAGUBAABlAQAAZwEAAGcBAABpAQAAaQEAAGsBAABrAQAAbQEAAG0BAABvAQAAbwEAAHEBAABxAQAAcwEAAHMBAAB1AQAAdQEAAHcBAAB3AQAAegEAAHoBAAB8AQAAfAEAAH4BAACAAQAAgwEAAIMBAACFAQAAhQEAAIgBAACIAQAAjAEAAI0BAACSAQAAkgEAAJUBAACVAQAAmQEAAJsBAACeAQAAngEAAKEBAAChAQAAowEAAKMBAAClAQAApQEAAKgBAACoAQAAqgEAAKsBAACtAQAArQEAALABAACwAQAAtAEAALQBAAC2AQAAtgEAALkBAAC6AQAAvQEAAL8BAADGAQAAxgEAAMkBAADJAQAAzAEAAMwBAADOAQAAzgEAANABAADQAQAA0gEAANIBAADUAQAA1AEAANYBAADWAQAA2AEAANgBAADaAQAA2gEAANwBAADdAQAA3wEAAN8BAADhAQAA4QEAAOMBAADjAQAA5QEAAOUBAADnAQAA5wEAAOkBAADpAQAA6wEAAOsBAADtAQAA7QEAAO8BAADwAQAA8wEAAPMBAAD1AQAA9QEAAPkBAAD5AQAA+wEAAPsBAAD9AQAA/QEAAP8BAAD/AQAAAQIAAAECAAADAgAAAwIAAAUCAAAFAgAABwIAAAcCAAAJAgAACQIAAAsCAAALAgAADQIAAA0CAAAPAgAADwIAABECAAARAgAAEwIAABMCAAAVAgAAFQIAABcCAAAXAgAAGQIAABkCAAAbAgAAGwIAAB0CAAAdAgAAHwIAAB8CAAAhAgAAIQIAACMCAAAjAgAAJQIAACUCAAAnAgAAJwIAACkCAAApAgAAKwIAACsCAAAtAgAALQIAAC8CAAAvAgAAMQIAADECAAAzAgAAOQIAADwCAAA8AgAAPwIAAEACAABCAgAAQgIAAEcCAABHAgAASQIAAEkCAABLAgAASwIAAE0CAABNAgAATwIAAJMCAACVAgAAuAIAAMACAADBAgAA4AIAAOQCAABFAwAARQMAAHEDAABxAwAAcwMAAHMDAAB3AwAAdwMAAHoDAAB9AwAAkAMAAJADAACsAwAAzgMAANADAADRAwAA1QMAANcDAADZAwAA2QMAANsDAADbAwAA3QMAAN0DAADfAwAA3wMAAOEDAADhAwAA4wMAAOMDAADlAwAA5QMAAOcDAADnAwAA6QMAAOkDAADrAwAA6wMAAO0DAADtAwAA7wMAAPMDAAD1AwAA9QMAAPgDAAD4AwAA+wMAAPwDAAAwBAAAXwQAAGEEAABhBAAAYwQAAGMEAABlBAAAZQQAAGcEAABnBAAAaQQAAGkEAABrBAAAawQAAG0EAABtBAAAbwQAAG8EAABxBAAAcQQAAHMEAABzBAAAdQQAAHUEAAB3BAAAdwQAAHkEAAB5BAAAewQAAHsEAAB9BAAAfQQAAH8EAAB/BAAAgQQAAIEEAACLBAAAiwQAAI0EAACNBAAAjwQAAI8EAACRBAAAkQQAAJMEAACTBAAAlQQAAJUEAACXBAAAlwQAAJkEAACZBAAAmwQAAJsEAACdBAAAnQQAAJ8EAACfBAAAoQQAAKEEAACjBAAAowQAAKUEAAClBAAApwQAAKcEAACpBAAAqQQAAKsEAACrBAAArQQAAK0EAACvBAAArwQAALEEAACxBAAAswQAALMEAAC1BAAAtQQAALcEAAC3BAAAuQQAALkEAAC7BAAAuwQAAL0EAAC9BAAAvwQAAL8EAADCBAAAwgQAAMQEAADEBAAAxgQAAMYEAADIBAAAyAQAAMoEAADKBAAAzAQAAMwEAADOBAAAzwQAANEEAADRBAAA0wQAANMEAADVBAAA1QQAANcEAADXBAAA2QQAANkEAADbBAAA2wQAAN0EAADdBAAA3wQAAN8EAADhBAAA4QQAAOMEAADjBAAA5QQAAOUEAADnBAAA5wQAAOkEAADpBAAA6wQAAOsEAADtBAAA7QQAAO8EAADvBAAA8QQAAPEEAADzBAAA8wQAAPUEAAD1BAAA9wQAAPcEAAD5BAAA+QQAAPsEAAD7BAAA/QQAAP0EAAD/BAAA/wQAAAEFAAABBQAAAwUAAAMFAAAFBQAABQUAAAcFAAAHBQAACQUAAAkFAAALBQAACwUAAA0FAAANBQAADwUAAA8FAAARBQAAEQUAABMFAAATBQAAFQUAABUFAAAXBQAAFwUAABkFAAAZBQAAGwUAABsFAAAdBQAAHQUAAB8FAAAfBQAAIQUAACEFAAAjBQAAIwUAACUFAAAlBQAAJwUAACcFAAApBQAAKQUAACsFAAArBQAALQUAAC0FAAAvBQAALwUAAGAFAACIBQAA0BAAAPoQAAD9EAAA/xAAAPgTAAD9EwAAgBwAAIgcAAAAHQAAvx0AAAEeAAABHgAAAx4AAAMeAAAFHgAABR4AAAceAAAHHgAACR4AAAkeAAALHgAACx4AAA0eAAANHgAADx4AAA8eAAARHgAAER4AABMeAAATHgAAFR4AABUeAAAXHgAAFx4AABkeAAAZHgAAGx4AABseAAAdHgAAHR4AAB8eAAAfHgAAIR4AACEeAAAjHgAAIx4AACUeAAAlHgAAJx4AACceAAApHgAAKR4AACseAAArHgAALR4AAC0eAAAvHgAALx4AADEeAAAxHgAAMx4AADMeAAA1HgAANR4AADceAAA3HgAAOR4AADkeAAA7HgAAOx4AAD0eAAA9HgAAPx4AAD8eAABBHgAAQR4AAEMeAABDHgAARR4AAEUeAABHHgAARx4AAEkeAABJHgAASx4AAEseAABNHgAATR4AAE8eAABPHgAAUR4AAFEeAABTHgAAUx4AAFUeAABVHgAAVx4AAFceAABZHgAAWR4AAFseAABbHgAAXR4AAF0eAABfHgAAXx4AAGEeAABhHgAAYx4AAGMeAABlHgAAZR4AAGceAABnHgAAaR4AAGkeAABrHgAAax4AAG0eAABtHgAAbx4AAG8eAABxHgAAcR4AAHMeAABzHgAAdR4AAHUeAAB3HgAAdx4AAHkeAAB5HgAAex4AAHseAAB9HgAAfR4AAH8eAAB/HgAAgR4AAIEeAACDHgAAgx4AAIUeAACFHgAAhx4AAIceAACJHgAAiR4AAIseAACLHgAAjR4AAI0eAACPHgAAjx4AAJEeAACRHgAAkx4AAJMeAACVHgAAnR4AAJ8eAACfHgAAoR4AAKEeAACjHgAAox4AAKUeAAClHgAApx4AAKceAACpHgAAqR4AAKseAACrHgAArR4AAK0eAACvHgAArx4AALEeAACxHgAAsx4AALMeAAC1HgAAtR4AALceAAC3HgAAuR4AALkeAAC7HgAAux4AAL0eAAC9HgAAvx4AAL8eAADBHgAAwR4AAMMeAADDHgAAxR4AAMUeAADHHgAAxx4AAMkeAADJHgAAyx4AAMseAADNHgAAzR4AAM8eAADPHgAA0R4AANEeAADTHgAA0x4AANUeAADVHgAA1x4AANceAADZHgAA2R4AANseAADbHgAA3R4AAN0eAADfHgAA3x4AAOEeAADhHgAA4x4AAOMeAADlHgAA5R4AAOceAADnHgAA6R4AAOkeAADrHgAA6x4AAO0eAADtHgAA7x4AAO8eAADxHgAA8R4AAPMeAADzHgAA9R4AAPUeAAD3HgAA9x4AAPkeAAD5HgAA+x4AAPseAAD9HgAA/R4AAP8eAAAHHwAAEB8AABUfAAAgHwAAJx8AADAfAAA3HwAAQB8AAEUfAABQHwAAVx8AAGAfAABnHwAAcB8AAH0fAACAHwAAhx8AAJAfAACXHwAAoB8AAKcfAACwHwAAtB8AALYfAAC3HwAAvh8AAL4fAADCHwAAxB8AAMYfAADHHwAA0B8AANMfAADWHwAA1x8AAOAfAADnHwAA8h8AAPQfAAD2HwAA9x8AAHEgAABxIAAAfyAAAH8gAACQIAAAnCAAAAohAAAKIQAADiEAAA8hAAATIQAAEyEAAC8hAAAvIQAANCEAADQhAAA5IQAAOSEAADwhAAA9IQAARiEAAEkhAABOIQAATiEAAHAhAAB/IQAAhCEAAIQhAADQJAAA6SQAADAsAABfLAAAYSwAAGEsAABlLAAAZiwAAGgsAABoLAAAaiwAAGosAABsLAAAbCwAAHEsAABxLAAAcywAAHQsAAB2LAAAfSwAAIEsAACBLAAAgywAAIMsAACFLAAAhSwAAIcsAACHLAAAiSwAAIksAACLLAAAiywAAI0sAACNLAAAjywAAI8sAACRLAAAkSwAAJMsAACTLAAAlSwAAJUsAACXLAAAlywAAJksAACZLAAAmywAAJssAACdLAAAnSwAAJ8sAACfLAAAoSwAAKEsAACjLAAAoywAAKUsAAClLAAApywAAKcsAACpLAAAqSwAAKssAACrLAAArSwAAK0sAACvLAAArywAALEsAACxLAAAsywAALMsAAC1LAAAtSwAALcsAAC3LAAAuSwAALksAAC7LAAAuywAAL0sAAC9LAAAvywAAL8sAADBLAAAwSwAAMMsAADDLAAAxSwAAMUsAADHLAAAxywAAMksAADJLAAAyywAAMssAADNLAAAzSwAAM8sAADPLAAA0SwAANEsAADTLAAA0ywAANUsAADVLAAA1ywAANcsAADZLAAA2SwAANssAADbLAAA3SwAAN0sAADfLAAA3ywAAOEsAADhLAAA4ywAAOQsAADsLAAA7CwAAO4sAADuLAAA8ywAAPMsAAAALQAAJS0AACctAAAnLQAALS0AAC0tAABBpgAAQaYAAEOmAABDpgAARaYAAEWmAABHpgAAR6YAAEmmAABJpgAAS6YAAEumAABNpgAATaYAAE+mAABPpgAAUaYAAFGmAABTpgAAU6YAAFWmAABVpgAAV6YAAFemAABZpgAAWaYAAFumAABbpgAAXaYAAF2mAABfpgAAX6YAAGGmAABhpgAAY6YAAGOmAABlpgAAZaYAAGemAABnpgAAaaYAAGmmAABrpgAAa6YAAG2mAABtpgAAgaYAAIGmAACDpgAAg6YAAIWmAACFpgAAh6YAAIemAACJpgAAiaYAAIumAACLpgAAjaYAAI2mAACPpgAAj6YAAJGmAACRpgAAk6YAAJOmAACVpgAAlaYAAJemAACXpgAAmaYAAJmmAACbpgAAnaYAACOnAAAjpwAAJacAACWnAAAnpwAAJ6cAACmnAAAppwAAK6cAACunAAAtpwAALacAAC+nAAAxpwAAM6cAADOnAAA1pwAANacAADenAAA3pwAAOacAADmnAAA7pwAAO6cAAD2nAAA9pwAAP6cAAD+nAABBpwAAQacAAEOnAABDpwAARacAAEWnAABHpwAAR6cAAEmnAABJpwAAS6cAAEunAABNpwAATacAAE+nAABPpwAAUacA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XR8AAF8fAAB9HwAAgB8AALQfAAC2HwAAxB8AAMYfAADTHwAA1h8AANsfAADdHwAA7x8AAPIfAAD0HwAA9h8AAP4fAAAAIAAAJyAAACogAABkIAAAZiAAAHEgAAB0IAAAjiAAAJAgAACcIAAAoCAAAMAgAADQIAAA8CAAAAAhAACLIQAAkCEAACYkAABAJAAASiQAAGAkAABzKwAAdisAAJUrAACXKwAA8ywAAPksAAAlLQAAJy0AACctAAAtLQAALS0AADAtAABnLQAAby0AAHAtAAB/LQAAli0AAKAtAACmLQAAqC0AAK4tAACwLQAAti0AALgtAAC+LQAAwC0AAMYtAADILQAAzi0AANAtAADWLQAA2C0AAN4tAADgLQAAXS4AAIAuAACZLgAAmy4AAPMuAAAALwAA1S8AAPAvAAD7LwAAADAAAD8wAABBMAAAljAAAJkwAAD/MAAABTEAAC8xAAAxMQAAjjEAAJAxAADjMQAA8DEAAB4yAAAgMgAAjKQAAJCkAADGpAAA0KQAACumAABApgAA96YAAACnAADKpwAA0KcAANGnAADTpwAA06cAANWnAADZpwAA8qcAACyoAAAwqAAAOagAAECoAAB3qAAAgKgAAMWoAADOqAAA2agAAOCoAABTqQAAX6kAAHypAACAqQAAzakAAM+pAADZqQAA3qkAAP6pAAAAqgAANqoAAECqAABNqgAAUKoAAFmqAABcqgAAwqoAANuqAAD2qgAAAasAAAarAAAJqwAADqsAABGrAAAWqwAAIKsAACarAAAoqwAALqsAADCrAABrqwAAcKsAAO2rAADwqwAA+asAAACsAACj1wAAsNcAAMbXAADL1wAA+9cAAADgAABt+gAAcPoAANn6AAAA+wAABvsAABP7AAAX+wAAHfsAADb7AAA4+wAAPPsAAD77AAA++wAAQPsAAEH7AABD+wAARPsAAEb7AADC+wAA0/sAAI/9AACS/QAAx/0AAM/9AADP/QAA8P0AABn+AAAg/gAAUv4AAFT+AABm/gAAaP4AAGv+AABw/gAAdP4AAHb+AAD8/gAA//4AAP/+AAAB/wAAvv8AAML/AADH/wAAyv8AAM//AADS/wAA1/8AANr/AADc/wAA4P8AAOb/AADo/wAA7v8AAPn/AAD9/wAAAAABAAsAAQANAAEAJgABACgAAQA6AAEA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AAIBAAACAQAABAEAAAQBAAAGAQAABgEAAAgBAAAIAQAACgEAAAoBAAAMAQAADAEAAA4BAAAOAQAAEAEAABABAAASAQAAEgEAABQBAAAUAQAAFgEAABYBAAAYAQAAGAEAABoBAAAaAQAAHAEAABwBAAAeAQAAHgEAACABAAAgAQAAIgEAACIBAAAkAQAAJAEAACYBAAAmAQAAKAEAACgBAAAqAQAAKgEAACwBAAAsAQAALgEAAC4BAAAwAQAAMAEAADIBAAAyAQAANAEAADQBAAA2AQAANgEAADkBAAA5AQAAOwEAADsBAAA9AQAAPQEAAD8BAAA/AQAAQQEAAEEBAABDAQAAQwEAAEUBAABFAQAARwEAAEcBAABKAQAASgEAAEwBAABMAQAATgEAAE4BAABQAQAAUAEAAFIBAABSAQAAVAEAAFQBAABWAQAAVgEAAFgBAABYAQAAWgEAAFoBAABcAQAAXAEAAF4BAABeAQAAYAEAAGABAABiAQAAYgEAAGQBAABkAQAAZgEAAGYBAABoAQAAaAEAAGoBAABqAQAAbAEAAGwBAABuAQAAbgEAAHABAABwAQAAcgEAAHIBAAB0AQAAdAEAAHYBAAB2AQAAeAEAAHkBAAB7AQAAewEAAH0BAAB9AQAAgQEAAIIBAACEAQAAhAEAAIYBAACHAQAAiQEAAIsBAACOAQAAkQEAAJMBAACUAQAAlgEAAJgBAACcAQAAnQEAAJ8BAACgAQAAogEAAKIBAACkAQAApAEAAKYBAACnAQAAqQEAAKkBAACsAQAArAEAAK4BAACvAQAAsQEAALMBAAC1AQAAtQEAALcBAAC4AQAAvAEAALwBAADEAQAAxAEAAMcBAADHAQAAygEAAMoBAADNAQAAzQEAAM8BAADPAQAA0QEAANEBAADTAQAA0wEAANUBAADVAQAA1wEAANcBAADZAQAA2QEAANsBAADbAQAA3gEAAN4BAADgAQAA4AEAAOIBAADiAQAA5AEAAOQBAADmAQAA5gEAAOgBAADoAQAA6gEAAOoBAADsAQAA7AEAAO4BAADuAQAA8QEAAPEBAAD0AQAA9AEAAPYBAAD4AQAA+gEAAPoBAAD8AQAA/AEAAP4BAAD+AQAAAAIAAAACAAACAgAAAgIAAAQCAAAEAgAABgIAAAYCAAAIAgAACAIAAAoCAAAKAgAADAIAAAwCAAAOAgAADgIAABACAAAQAgAAEgIAABICAAAUAgAAFAIAABYCAAAWAgAAGAIAABgCAAAaAgAAGgIAABwCAAAcAgAAHgIAAB4CAAAgAgAAIAIAACICAAAiAgAAJAIAACQCAAAmAgAAJgIAACgCAAAoAgAAKgIAACoCAAAsAgAALAIAAC4CAAAuAgAAMAIAADACAAAyAgAAMgIAADoCAAA7AgAAPQIAAD4CAABBAgAAQQIAAEMCAABGAgAASAIAAEgCAABKAgAASgIAAEwCAABMAgAATgIAAE4CAABwAwAAcAMAAHIDAAByAwAAdgMAAHYDAAB/AwAAfwMAAIYDAACGAwAAiAMAAIoDAACMAwAAjAMAAI4DAACPAwAAkQMAAKEDAACjAwAAqwMAAM8DAADPAwAA0gMAANQDAADYAwAA2AMAANoDAADaAwAA3AMAANwDAADeAwAA3gMAAOADAADgAwAA4gMAAOIDAADkAwAA5AMAAOYDAADmAwAA6AMAAOgDAADqAwAA6gMAAOwDAADsAwAA7gMAAO4DAAD0AwAA9AMAAPcDAAD3AwAA+QMAAPoDAAD9AwAALwQAAGAEAABgBAAAYgQAAGIEAABkBAAAZAQAAGYEAABmBAAAaAQAAGgEAABqBAAAagQAAGwEAABsBAAAbgQAAG4EAABwBAAAcAQAAHIEAAByBAAAdAQAAHQEAAB2BAAAdgQAAHgEAAB4BAAAegQAAHoEAAB8BAAAfAQAAH4EAAB+BAAAgAQAAIAEAACKBAAAigQAAIwEAACMBAAAjgQAAI4EAACQBAAAkAQAAJIEAACSBAAAlAQAAJQEAACWBAAAlgQAAJgEAACYBAAAmgQAAJoEAACcBAAAnAQAAJ4EAACeBAAAoAQAAKAEAACiBAAAogQAAKQEAACkBAAApgQAAKYEAACoBAAAqAQAAKoEAACqBAAArAQAAKwEAACuBAAArgQAALAEAACwBAAAsgQAALIEAAC0BAAAtAQAALYEAAC2BAAAuAQAALgEAAC6BAAAugQAALwEAAC8BAAAvgQAAL4EAADABAAAwQQAAMMEAADDBAAAxQQAAMUEAADHBAAAxwQAAMkEAADJBAAAywQAAMsEAADNBAAAzQQAANAEAADQBAAA0gQAANIEAADUBAAA1AQAANYEAADWBAAA2AQAANgEAADaBAAA2gQAANwEAADcBAAA3gQAAN4EAADgBAAA4AQAAOIEAADiBAAA5AQAAOQEAADmBAAA5gQAAOgEAADoBAAA6gQAAOoEAADsBAAA7AQAAO4EAADuBAAA8AQAAPAEAADyBAAA8gQAAPQEAAD0BAAA9gQAAPYEAAD4BAAA+AQAAPoEAAD6BAAA/AQAAPwEAAD+BAAA/gQAAAAFAAAABQAAAgUAAAIFAAAEBQAABAUAAAYFAAAGBQAACAUAAAgFAAAKBQAACgUAAAwFAAAMBQAADgUAAA4FAAAQBQAAEAUAABIFAAASBQAAFAUAABQFAAAWBQAAFgUAABgFAAAYBQAAGgUAABoFAAAcBQAAHAUAAB4FAAAeBQAAIAUAACAFAAAiBQAAIgUAACQFAAAkBQAAJgUAACYFAAAoBQAAKAUAACoFAAAqBQAALAUAACwFAAAuBQAALgUAADEFAABWBQAAoBAAAMUQAADHEAAAxxAAAM0QAADNEAAAoBMAAPUTAACQHAAAuhwAAL0cAAC/HAAAAB4AAAAeAAACHgAAAh4AAAQeAAAEHgAABh4AAAYeAAAIHgAACB4AAAoeAAAKHgAADB4AAAweAAAOHgAADh4AABAeAAAQHgAAEh4AABIeAAAUHgAAFB4AABYeAAAWHgAAGB4AABgeAAAaHgAAGh4AABweAAAcHgAAHh4AAB4eAAAgHgAAIB4AACIeAAAiHgAAJB4AACQeAAAmHgAAJh4AACgeAAAoHgAAKh4AACoeAAAsHgAALB4AAC4eAAAuHgAAMB4AADAeAAAyHgAAMh4AADQeAAA0HgAANh4AADYeAAA4HgAAOB4AADoeAAA6HgAAPB4AADweAAA+HgAAPh4AAEAeAABAHgAAQh4AAEIeAABEHgAARB4AAEYeAABGHgAASB4AAEgeAABKHgAASh4AAEweAABMHgAATh4AAE4eAABQHgAAUB4AAFIeAABSHgAAVB4AAFQeAABWHgAAVh4AAFgeAABYHgAAWh4AAFoeAABcHgAAXB4AAF4eAABeHgAAYB4AAGAeAABiHgAAYh4AAGQeAABkHgAAZh4AAGYeAABoHgAAaB4AAGoeAABqHgAAbB4AAGweAABuHgAAbh4AAHAeAABwHgAAch4AAHIeAAB0HgAAdB4AAHYeAAB2HgAAeB4AAHgeAAB6HgAAeh4AAHweAAB8HgAAfh4AAH4eAACAHgAAgB4AAIIeAACCHgAAhB4AAIQeAACGHgAAhh4AAIgeAACIHgAAih4AAIoeAACMHgAAjB4AAI4eAACOHgAAkB4AAJAeAACSHgAAkh4AAJQeAACUHgAAnh4AAJ4eAACgHgAAoB4AAKIeAACiHgAApB4AAKQeAACmHgAAph4AAKgeAACoHgAAqh4AAKoeAACsHgAArB4AAK4eAACuHgAAsB4AALAeAACyHgAAsh4AALQeAAC0HgAAth4AALYeAAC4HgAAuB4AALoeAAC6HgAAvB4AALweAAC+HgAAvh4AAMAeAADAHgAAwh4AAMIeAADEHgAAxB4AAMYeAADGHgAAyB4AAMgeAADKHgAAyh4AAMweAADMHgAAzh4AAM4eAADQHgAA0B4AANIeAADSHgAA1B4AANQeAADWHgAA1h4AANgeAADYHgAA2h4AANoeAADcHgAA3B4AAN4eAADeHgAA4B4AAOAeAADiHgAA4h4AAOQeAADkHgAA5h4AAOYeAADoHgAA6B4AAOoeAADqHgAA7B4AAOweAADuHgAA7h4AAPAeAADwHgAA8h4AAPIeAAD0HgAA9B4AAPYeAAD2HgAA+B4AAPgeAAD6HgAA+h4AAPweAAD8HgAA/h4AAP4eAAAIHwAADx8AABgfAAAdHwAAKB8AAC8fAAA4HwAAPx8AAEgfAABNHwAAWR8AAFkfAABbHwAAWx8AAF0fAABdHwAAXx8AAF8fAABoHwAAbx8AALgfAAC7HwAAyB8AAMsfAADYHwAA2x8AAOgfAADsHwAA+B8AAPsfAAACIQAAAiEAAAchAAAHIQAACyEAAA0hAAAQIQAAEiEAABUhAAAVIQAAGSEAAB0hAAAkIQAAJCEAACYhAAAmIQAAKCEAACghAAAqIQAALSEAADAhAAAzIQAAPiEAAD8hAABFIQAARSEAAGAhAABvIQAAgyEAAIMhAAC2JAAAzyQAAAAsAAAvLAAAYCwAAGAsAABiLAAAZCwAAGcsAABnLAAAaSwAAGksAABrLAAAaywAAG0sAABwLAAAciwAAHIsAAB1LAAAdSwAAH4sAACALAAAgiwAAIIsAACELAAAhCwAAIYsAACGLAAAiCwAAIgsAACKLAAAiiwAAIwsAACMLAAAjiwAAI4sAACQLAAAkCwAAJIsAACSLAAAlCwAAJQsAACWLAAAliwAAJgsAACYLAAAmiwAAJosAACcLAAAnCwAAJ4sAACeLAAAoCwAAKAsAACiLAAAoiwAAKQsAACkLAAApiwAAKYsAACoLAAAqCwAAKosAACqLAAArCwAAKwsAACuLAAAriwAALAsAACwLAAAsiwAALIsAAC0LAAAtCwAALYsAAC2LAAAuCwAALgsAAC6LAAAuiwAALwsAAC8LAAAviwAAL4sAADALAAAwCwAAMIsAADCLAAAxCwAAMQsAADGLAAAxiwAAMgsAADILAAAyiwAAMosAADMLAAAzCwAAM4sAADOLAAA0CwAANAsAADSLAAA0iwAANQsAADULAAA1iwAANYsAADYLAAA2CwAANosAADaLAAA3CwAANwsAADeLAAA3iwAAOAsAADgLAAA4iwAAOIsAADrLAAA6ywAAO0sAADtLAAA8iwAAPIsAABApgAAQKYAAEKmAABCpgAARKYAAESmAABGpgAARqYAAEimAABIpgAASqYAAEqmAABMpgAATKYAAE6mAABOpgAAUKYAAFCmAABSpgAAUqYAAFSmAABUpgAAVqYAAFamAABYpgAAWKYAAFqmAABapgAAXKYAAFymAABepgAAXqYAAGCmAABgpgAAYqYAAGKmAABkpgAAZKYAAGamAABmpgAAaKYAAGimAABqpgAAaqYAAGymAABspgAAgKYAAICmAACCpgAAgqYAAISmAACEpgAAhqYAAIamAACIpgAAiKYAAIqmAACKpgAAjKYAAIymAACOpgAAjqYAAJCmAACQpgAAkqYAAJKmAACUpgAAlKYAAJamAACWpgAAmKYAAJimAACapgAAmqYAACKnAAAipwAAJKcAACSnAAAmpwAAJqcAACinAAAopwAAKqcAACqnAAAspwAALKcAAC6nAAAupwAAMqcAADKnAAA0pwAANKcAADanAAA2pwAAOKcAADinAAA6pwAAOqcAADynAAA8pwAAPqcAAD6nAABApwAAQKcAAEKnAABCpwAARKcAAESnAABGpwAARqcAAEinAABIpwAASqcAAEqnAABMpwAATKcAAE6nAABOpwAAUKcAAFCnAABSpwAAUqcAAFSnAABUpwAAVqcAAFanAABYpwAAWKcAAFqnAABapwAAXKcAAFynAABepwAAXqcAAGCnAABgpwAAYqcAAGKnAABkpwAAZKcAAGanAABmpwAAaKcAAGinAABqpwAAaqcAAGynAABspwAAbqcAAG6nAAB5pwAAeacAAHunAAB7pwAAfacAAH6nAACApwAAgKcAAIKnAACCpwAAhKcAAISnAACGpwAAhqcAAIunAACLpwAAjacAAI2nAACQpwAAkKcAAJKnAACSpwAAlqcAAJanAACYpwAAmKcAAJqnAACapwAAnKcAAJynAACepwAAnqcAAKCnAACgpwAAoqcAAKKnAACkpwAApKcAAKanAACmpwAAqKcAAKinAACqpwAArqcAALCnAAC0pwAAtqcAALanAAC4pwAAuKcAALqnAAC6pwAAvKcAALynAAC+pwAAvqcAAMCnAADApwAAwqcAAMKnAADEpwAAx6cAAMmnAADJpwAA0KcAANCnAADWpwAA1qcAANinAADYpwAA9acAAPWnAAAh/wAAOv8AAAAEAQAnBAEAsAQBANMEAQBwBQEAegUBAHwFAQCKBQEAjAUBAJIFAQCUBQEAlQUBAIAMAQCyDAEAoBgBAL8YAQBAbgEAX24BAADUAQAZ1AEANNQBAE3UAQBo1AEAgdQBAJzUAQCc1AEAntQBAJ/UAQCi1AEAotQBAKXUAQCm1AEAqdQBAKzUAQCu1AEAtdQBANDUAQDp1AEABNUBAAXVAQAH1QEACtUBAA3VAQAU1QEAFtUBABzVAQA41QEAOdUBADvVAQA+1QEAQNUBAETVAQBG1QEARtUBAErVAQBQ1QEAbNUBAIXVAQCg1QEAudUBANTVAQDt1QEACNYBACHWAQA81gEAVdYBAHDWAQCJ1gEAqNYBAMDWAQDi1gEA+tYBABzXAQA01wEAVtcBAG7XAQCQ1wEAqNcBAMrXAQDK1wEAAOkBACHpAQAw8QEASfEBAFDxAQBp8QEAcPEBAInxAQAAAAAAAwAAADAAAAA5AAAAQQAAAEYAAABhAAAAZgAAAAAAAAD2AgAAMAAAADkAAABBAAAAWgAAAF8AAABfAAAAYQAAAHoAAACqAAAAqgAAALUAAAC1AAAAugAAALoAAADAAAAA1gAAANgAAAD2AAAA+AAAAMECAADGAgAA0QIAAOACAADkAgAA7AIAAOwCAADuAgAA7gIAAAADAAB0AwAAdgMAAHcDAAB6AwAAfQMAAH8DAAB/AwAAhgMAAIYDAACIAwAAigMAAIwDAACMAwAAjgMAAKEDAACjAwAA9QMAAPcDAACBBAAAgwQAAC8FAAAxBQAAVgUAAFkFAABZBQAAYAUAAIgFAACRBQAAvQUAAL8FAAC/BQAAwQUAAMIFAADEBQAAxQUAAMcFAADHBQAA0AUAAOoFAADvBQAA8gUAABAGAAAaBgAAIAYAAGkGAABuBgAA0wYAANUGAADcBgAA3wYAAOgGAADqBgAA/AYAAP8GAAD/BgAAEAcAAEoHAABNBwAAsQcAAMAHAAD1BwAA+gcAAPoHAAD9BwAA/QcAAAAIAAAtCAAAQAgAAFsIAABgCAAAaggAAHAIAACHCAAAiQgAAI4IAACYCAAA4QgAAOMIAABjCQAAZgkAAG8JAABxCQAAgwkAAIUJAACMCQAAjwkAAJAJAACTCQAAqAkAAKoJAACwCQAAsgkAALIJAAC2CQAAuQkAALwJAADECQAAxwkAAMgJAADLCQAAzgkAANcJAADXCQAA3AkAAN0JAADfCQAA4wkAAOYJAADxCQAA/AkAAPwJAAD+CQAA/gkAAAEKAAADCgAABQoAAAoKAAAPCgAAEAoAABMKAAAoCgAAKgoAADAKAAAyCgAAMwoAADUKAAA2CgAAOAoAADkKAAA8CgAAPAoAAD4KAABCCgAARwoAAEgKAABLCgAATQoAAFEKAABRCgAAWQoAAFwKAABeCgAAXgoAAGYKAAB1CgAAgQoAAIMKAACFCgAAjQoAAI8KAACRCgAAkwoAAKgKAACqCgAAsAoAALIKAACzCgAAtQoAALkKAAC8CgAAxQoAAMcKAADJCgAAywoAAM0KAADQCgAA0AoAAOAKAADjCgAA5goAAO8KAAD5CgAA/woAAAELAAADCwAABQsAAAwLAAAPCwAAEAsAABMLAAAoCwAAKgsAADALAAAyCwAAMwsAADULAAA5CwAAPAsAAEQLAABHCwAASAsAAEsLAABNCwAAVQsAAFcLAABcCwAAXQsAAF8LAABjCwAAZgsAAG8LAABxCwAAcQsAAIILAACDCwAAhQsAAIoLAACOCwAAkAsAAJILAACVCwAAmQsAAJoLAACcCwAAnAsAAJ4LAACfCwAAowsAAKQLAACoCwAAqgsAAK4LAAC5CwAAvgsAAMILAADGCwAAyAsAAMoLAADNCwAA0AsAANALAADXCwAA1wsAAOYLAADvCwAAAAwAAAwMAAAODAAAEAwAABIMAAAoDAAAKgwAADkMAAA8DAAARAwAAEYMAABIDAAASgwAAE0MAABVDAAAVgwAAFgMAABaDAAAXQwAAF0MAABgDAAAYwwAAGYMAABvDAAAgAwAAIMMAACFDAAAjAwAAI4MAACQDAAAkgwAAKgMAACqDAAAswwAALUMAAC5DAAAvAwAAMQMAADGDAAAyAwAAMoMAADNDAAA1QwAANYMAADdDAAA3gwAAOAMAADjDAAA5gwAAO8MAADxDAAA8gwAAAANAAAMDQAADg0AABANAAASDQAARA0AAEYNAABIDQAASg0AAE4NAABUDQAAVw0AAF8NAABjDQAAZg0AAG8NAAB6DQAAfw0AAIENAACDDQAAhQ0AAJYNAACaDQAAsQ0AALMNAAC7DQAAvQ0AAL0NAADADQAAxg0AAMoNAADKDQAAzw0AANQNAADWDQAA1g0AANgNAADfDQAA5g0AAO8NAADyDQAA8w0AAAEOAAA6DgAAQA4AAE4OAABQDgAAWQ4AAIEOAACCDgAAhA4AAIQOAACGDgAAig4AAIwOAACjDgAApQ4AAKUOAACnDgAAvQ4AAMAOAADEDgAAxg4AAMYOAADIDgAAzQ4AANAOAADZDgAA3A4AAN8OAAAADwAAAA8AABgPAAAZDwAAIA8AACkPAAA1DwAANQ8AADcPAAA3DwAAOQ8AADkPAAA+DwAARw8AAEkPAABsDwAAcQ8AAIQPAACGDwAAlw8AAJkPAAC8DwAAxg8AAMYPAAAAEAAASRAAAFAQAACdEAAAoBAAAMUQAADHEAAAxxAAAM0QAADNEAAA0BAAAPoQAAD8EAAASBIAAEoSAABNEgAAUBIAAFYSAABYEgAAWBIAAFoSAABdEgAAYBIAAIgSAACKEgAAjRIAAJASAACwEgAAshIAALUSAAC4EgAAvhIAAMASAADAEgAAwhIAAMUSAADIEgAA1hIAANgSAAAQEwAAEhMAABUTAAAYEwAAWhMAAF0TAABfEwAAgBMAAI8TAACgEwAA9RMAAPgTAAD9EwAAARQAAGwWAABvFgAAfxYAAIEWAACaFgAAoBYAAOoWAADuFgAA+BYAAAAXAAAVFwAAHxcAADQXAABAFwAAUxcAAGAXAABsFwAAbhcAAHAXAAByFwAAcxcAAIAXAADTFwAA1xcAANcXAADcFwAA3RcAAOAXAADpFwAACxgAAA0YAAAPGAAAGRgAACAYAAB4GAAAgBgAAKoYAACwGAAA9RgAAAAZAAAeGQAAIBkAACsZAAAwGQAAOxkAAEYZAABtGQAAcBkAAHQZAACAGQAAqxkAALAZAADJGQAA0BkAANkZAAAAGgAAGxoAACAaAABeGgAAYBoAAHwaAAB/GgAAiRoAAJAaAACZGgAApxoAAKcaAACwGgAAzhoAAAAbAABMGwAAUBsAAFkbAABrGwAAcxsAAIAbAADzGwAAABwAADccAABAHAAASRwAAE0cAAB9HAAAgBwAAIgcAACQHAAAuhwAAL0cAAC/HAAA0BwAANIcAADUHAAA+hwAAAAdAAAVHwAAGB8AAB0fAAAgHwAARR8AAEgfAABNHwAAUB8AAFcfAABZHwAAWR8AAFsfAABbHwAAXR8AAF0fAABfHwAAfR8AAIAfAAC0HwAAth8AALwfAAC+HwAAvh8AAMIfAADEHwAAxh8AAMwfAADQHwAA0x8AANYfAADbHwAA4B8AAOwfAADyHwAA9B8AAPYfAAD8HwAAPyAAAEAgAABUIAAAVCAAAHEgAABxIAAAfyAAAH8gAACQIAAAnCAAANAgAADwIAAAAiEAAAIhAAAHIQAAByEAAAohAAATIQAAFSEAABUhAAAZIQAAHSEAACQhAAAkIQAAJiEAACYhAAAoIQAAKCEAACohAAAtIQAALyEAADkhAAA8IQAAPyEAAEUhAABJIQAATiEAAE4hAABgIQAAiCEAALYkAADpJAAAACwAAOQsAADrLAAA8ywAAAAtAAAlLQAAJy0AACctAAAtLQAALS0AADAtAABnLQAAby0AAG8tAAB/LQAAli0AAKAtAACmLQAAqC0AAK4tAACwLQAAti0AALgtAAC+LQAAwC0AAMYtAADILQAAzi0AANAtAADWLQAA2C0AAN4tAADgLQAA/y0AAC8uAAAvLgAABTAAAAcwAAAhMAAALzAAADEwAAA1MAAAODAAADwwAABBMAAAljAAAJkwAACaMAAAnTAAAJ8wAAChMAAA+jAAAPwwAAD/MAAABTEAAC8xAAAxMQAAjjEAAKAxAAC/MQAA8DEAAP8xAAAANAAAv00AAABOAACMpAAA0KQAAP2kAAAApQAADKYAABCmAAArpgAAQKYAAHKmAAB0pgAAfaYAAH+mAADxpgAAF6cAAB+nAAAipwAAiKcAAIunAADKpwAA0KcAANGnAADTpwAA06cAANWnAADZpwAA8qcAACeoAAAsqAAALKgAAECoAABzqAAAgKgAAMWoAADQqAAA2agAAOCoAAD3qAAA+6gAAPuoAAD9qAAALakAADCpAABTqQAAYKkAAHypAACAqQAAwKkAAM+pAADZqQAA4KkAAP6pAAAAqgAANqoAAECqAABNqgAAUKoAAFmqAABgqgAAdqoAAHqqAADCqgAA26oAAN2qAADgqgAA76oAAPKqAAD2qgAAAasAAAarAAAJqwAADqsAABGrAAAWqwAAIKsAACarAAAoqwAALqsAADCrAABaqwAAXKsAAGmrAABwqwAA6qsAAOyrAADtqwAA8KsAAPmrAAAArAAAo9cAALDXAADG1wAAy9cAAPvXAAAA+QAAbfoAAHD6AADZ+gAAAPsAAAb7AAAT+wAAF/sAAB37AAAo+wAAKvsAADb7AAA4+wAAPPsAAD77AAA++wAAQPsAAEH7AABD+wAARPsAAEb7AACx+wAA0/sAAD39AABQ/QAAj/0AAJL9AADH/QAA8P0AAPv9AAAA/gAAD/4AACD+AAAv/gAAM/4AADT+AABN/gAAT/4AAHD+AAB0/gAAdv4AAPz+AAAQ/wAAGf8AACH/AAA6/wAAP/8AAD//AABB/wAAWv8AAGb/AAC+/wAAwv8AAMf/AADK/wAAz/8AANL/AADX/wAA2v8AANz/AAAAAAEACwABAA0AAQAmAAEAKAABADoAAQA8AAEAPQABAD8AAQBNAAEAUAABAF0AAQCAAAEA+gABAEABAQB0AQEA/QEBAP0BAQCAAgEAnAIBAKACAQDQAgEA4AIBAOACAQAAAwEAHwMBAC0DAQBKAwEAUAMBAHoDAQCAAwEAnQMBAKADAQDDAwEAyAMBAM8DAQDRAwEA1QMBAAAEAQCdBAEAoAQBAKkEAQCwBAEA0wQBANgEAQD7BAEAAAUBACcFAQAwBQEAYwUBAHAFAQB6BQEAfAUBAIoFAQCMBQEAkgUBAJQFAQCVBQEAlwUBAKEFAQCjBQEAsQUBALMFAQC5BQEAuwUBALwFAQAABgEANgcBAEAHAQBVBwEAYAcBAGcHAQCABwEAhQcBAIcHAQCwBwEAsgcBALoHAQAACAEABQgBAAgIAQAICAEACggBADUIAQA3CAEAOAgBADwIAQA8CAEAPwgBAFUIAQBgCAEAdggBAIAIAQCeCAEA4AgBAPIIAQD0CAEA9QgBAAAJAQAVCQEAIAkBADkJAQCACQEAtwkBAL4JAQC/CQEAAAoBAAMKAQAFCgEABgoBAAwKAQATCgEAFQoBABcKAQAZCgEANQoBADgKAQA6CgEAPwoBAD8KAQBgCgEAfAoBAIAKAQCcCgEAwAoBAMcKAQDJCgEA5goBAAALAQA1CwEAQAsBAFULAQBgCwEAcgsBAIALAQCRCwEAAAwBAEgMAQCADAEAsgwBAMAMAQDyDAEAAA0BACcNAQAwDQEAOQ0BAIAOAQCpDgEAqw4BAKwOAQCwDgEAsQ4BAAAPAQAcDwEAJw8BACcPAQAwDwEAUA8BAHAPAQCFDwEAsA8BAMQPAQDgDwEA9g8BAAAQAQBGEAEAZhABAHUQAQB/EAEAuhABAMIQAQDCEAEA0BABAOgQAQDwEAEA+RABAAARAQA0EQEANhEBAD8RAQBEEQEARxEBAFARAQBzEQEAdhEBAHYRAQCAEQEAxBEBAMkRAQDMEQEAzhEBANoRAQDcEQEA3BEBAAASAQAREgEAExIBADcSAQA+EgEAPhIBAIASAQCGEgEAiBIBAIgSAQCKEgEAjRIBAI8SAQCdEgEAnxIBAKgSAQCwEgEA6hIBAPASAQD5EgEAABMBAAMTAQAFEwEADBMBAA8TAQAQEwEAExMBACgTAQAqEwEAMBMBADITAQAzEwEANRMBADkTAQA7EwEARBMBAEcTAQBIEwEASxMBAE0TAQBQEwEAUBMBAFcTAQBXEwEAXRMBAGMTAQBmEwEAbBMBAHATAQB0EwEAABQBAEoUAQBQFAEAWRQBAF4UAQBhFAEAgBQBAMUUAQDHFAEAxxQBANAUAQDZFAEAgBUBALUVAQC4FQEAwBUBANgVAQDdFQEAABYBAEAWAQBEFgEARBYBAFAWAQBZFgEAgBYBALgWAQDAFgEAyRYBAAAXAQAaFwEAHRcBACsXAQAwFwEAORcBAEAXAQBGFwEAABgBADoYAQCgGAEA6RgBAP8YAQAGGQEACRkBAAkZAQAMGQEAExkBABUZAQAWGQEAGBkBADUZAQA3GQEAOBkBADsZAQBDGQEAUBkBAFkZAQCgGQEApxkBAKoZAQDXGQEA2hkBAOEZAQDjGQEA5BkBAAAaAQA+GgEARxoBAEcaAQBQGgEAmRoBAJ0aAQCdGgEAsBoBAPgaAQAAHAEACBwBAAocAQA2HAEAOBwBAEAcAQBQHAEAWRwBAHIcAQCPHAEAkhwBAKccAQCpHAEAthwBAAAdAQAGHQEACB0BAAkdAQALHQEANh0BADodAQA6HQEAPB0BAD0dAQA/HQEARx0BAFAdAQBZHQEAYB0BAGUdAQBnHQEAaB0BAGodAQCOHQEAkB0BAJEdAQCTHQEAmB0BAKAdAQCpHQEA4B4BAPYeAQCwHwEAsB8BAAAgAQCZIwEAACQBAG4kAQCAJAEAQyUBAJAvAQDwLwEAADABAC40AQAARAEARkYBAABoAQA4agEAQGoBAF5qAQBgagEAaWoBAHBqAQC+agEAwGoBAMlqAQDQagEA7WoBAPBqAQD0agEAAGsBADZrAQBAawEAQ2sBAFBrAQBZawEAY2sBAHdrAQB9awEAj2sBAEBuAQB/bgEAAG8BAEpvAQBPbwEAh28BAI9vAQCfbwEA4G8BAOFvAQDjbwEA5G8BAPBvAQDxbwEAAHABAPeHAQAAiAEA1YwBAACNAQAIjQEA8K8BAPOvAQD1rwEA+68BAP2vAQD+rwEAALABACKxAQBQsQEAUrEBAGSxAQBnsQEAcLEBAPuyAQAAvAEAarwBAHC8AQB8vAEAgLwBAIi8AQCQvAEAmbwBAJ28AQCevAEAAM8BAC3PAQAwzwEARs8BAGXRAQBp0QEAbdEBAHLRAQB70QEAgtEBAIXRAQCL0QEAqtEBAK3RAQBC0gEARNIBAADUAQBU1AEAVtQBAJzUAQCe1AEAn9QBAKLUAQCi1AEApdQBAKbUAQCp1AEArNQBAK7UAQC51AEAu9QBALvUAQC91AEAw9QBAMXUAQAF1QEAB9UBAArVAQAN1QEAFNUBABbVAQAc1QEAHtUBADnVAQA71QEAPtUBAEDVAQBE1QEARtUBAEbVAQBK1QEAUNUBAFLVAQCl1gEAqNYBAMDWAQDC1gEA2tYBANzWAQD61gEA/NYBABTXAQAW1wEANNcBADbXAQBO1wEAUNcBAG7XAQBw1wEAiNcBAIrXAQCo1wEAqtcBAMLXAQDE1wEAy9cBAM7XAQD/1wEAANoBADbaAQA72gEAbNoBAHXaAQB12gEAhNoBAITaAQCb2gEAn9oBAKHaAQCv2gEAAN8BAB7fAQAA4AEABuABAAjgAQAY4AEAG+ABACHgAQAj4AEAJOABACbgAQAq4AEAAOEBACzhAQAw4QEAPeEBAEDhAQBJ4QEATuEBAE7hAQCQ4gEAruIBAMDiAQD54gEA4OcBAObnAQDo5wEA6+cBAO3nAQDu5wEA8OcBAP7nAQAA6AEAxOgBANDoAQDW6AEAAOkBAEvpAQBQ6QEAWekBAADuAQAD7gEABe4BAB/uAQAh7gEAIu4BACTuAQAk7gEAJ+4BACfuAQAp7gEAMu4BADTuAQA37gEAOe4BADnuAQA77gEAO+4BAELuAQBC7gEAR+4BAEfuAQBJ7gEASe4BAEvuAQBL7gEATe4BAE/uAQBR7gEAUu4BAFTuAQBU7gEAV+4BAFfuAQBZ7gEAWe4BAFvuAQBb7gEAXe4BAF3uAQBf7gEAX+4BAGHuAQBi7gEAZO4BAGTuAQBn7gEAau4BAGzuAQBy7gEAdO4BAHfuAQB57gEAfO4BAH7uAQB+7gEAgO4BAInuAQCL7gEAm+4BAKHuAQCj7gEApe4BAKnuAQCr7gEAu+4BADDxAQBJ8QEAUPEBAGnxAQBw8QEAifEBAPD7AQD5+wEAAAACAN+mAgAApwIAOLcCAEC3AgAduAIAILgCAKHOAgCwzgIA4OsCAAD4AgAd+gIAAAADAEoTAwAAAQ4A7wEOAEHQsAQLozD4AgAAMAAAADkAAABBAAAAWgAAAGEAAAB6AAAAqgAAAKoAAAC1AAAAtQAAALoAAAC6AAAAwAAAANYAAADYAAAA9gAAAPgAAADBAgAAxgIAANECAADgAgAA5AIAAOwCAADsAgAA7gIAAO4CAABFAwAARQMAAHADAAB0AwAAdgMAAHcDAAB6AwAAfQMAAH8DAAB/AwAAhgMAAIYDAACIAwAAigMAAIwDAACMAwAAjgMAAKEDAACjAwAA9QMAAPcDAACBBAAAigQAAC8FAAAxBQAAVgUAAFkFAABZBQAAYAUAAIgFAACwBQAAvQUAAL8FAAC/BQAAwQUAAMIFAADEBQAAxQUAAMcFAADHBQAA0AUAAOoFAADvBQAA8gUAABAGAAAaBgAAIAYAAFcGAABZBgAAaQYAAG4GAADTBgAA1QYAANwGAADhBgAA6AYAAO0GAAD8BgAA/wYAAP8GAAAQBwAAPwcAAE0HAACxBwAAwAcAAOoHAAD0BwAA9QcAAPoHAAD6BwAAAAgAABcIAAAaCAAALAgAAEAIAABYCAAAYAgAAGoIAABwCAAAhwgAAIkIAACOCAAAoAgAAMkIAADUCAAA3wgAAOMIAADpCAAA8AgAADsJAAA9CQAATAkAAE4JAABQCQAAVQkAAGMJAABmCQAAbwkAAHEJAACDCQAAhQkAAIwJAACPCQAAkAkAAJMJAACoCQAAqgkAALAJAACyCQAAsgkAALYJAAC5CQAAvQkAAMQJAADHCQAAyAkAAMsJAADMCQAAzgkAAM4JAADXCQAA1wkAANwJAADdCQAA3wkAAOMJAADmCQAA8QkAAPwJAAD8CQAAAQoAAAMKAAAFCgAACgoAAA8KAAAQCgAAEwoAACgKAAAqCgAAMAoAADIKAAAzCgAANQoAADYKAAA4CgAAOQoAAD4KAABCCgAARwoAAEgKAABLCgAATAoAAFEKAABRCgAAWQoAAFwKAABeCgAAXgoAAGYKAAB1CgAAgQoAAIMKAACFCgAAjQoAAI8KAACRCgAAkwoAAKgKAACqCgAAsAoAALIKAACzCgAAtQoAALkKAAC9CgAAxQoAAMcKAADJCgAAywoAAMwKAADQCgAA0AoAAOAKAADjCgAA5goAAO8KAAD5CgAA/AoAAAELAAADCwAABQsAAAwLAAAPCwAAEAsAABMLAAAoCwAAKgsAADALAAAyCwAAMwsAADULAAA5CwAAPQsAAEQLAABHCwAASAsAAEsLAABMCwAAVgsAAFcLAABcCwAAXQsAAF8LAABjCwAAZgsAAG8LAABxCwAAcQsAAIILAACDCwAAhQsAAIoLAACOCwAAkAsAAJILAACVCwAAmQsAAJoLAACcCwAAnAsAAJ4LAACfCwAAowsAAKQLAACoCwAAqgsAAK4LAAC5CwAAvgsAAMILAADGCwAAyAsAAMoLAADMCwAA0AsAANALAADXCwAA1wsAAOYLAADvCwAAAAwAAAMMAAAFDAAADAwAAA4MAAAQDAAAEgwAACgMAAAqDAAAOQwAAD0MAABEDAAARgwAAEgMAABKDAAATAwAAFUMAABWDAAAWAwAAFoMAABdDAAAXQwAAGAMAABjDAAAZgwAAG8MAACADAAAgwwAAIUMAACMDAAAjgwAAJAMAACSDAAAqAwAAKoMAACzDAAAtQwAALkMAAC9DAAAxAwAAMYMAADIDAAAygwAAMwMAADVDAAA1gwAAN0MAADeDAAA4AwAAOMMAADmDAAA7wwAAPEMAADyDAAAAA0AAAwNAAAODQAAEA0AABINAAA6DQAAPQ0AAEQNAABGDQAASA0AAEoNAABMDQAATg0AAE4NAABUDQAAVw0AAF8NAABjDQAAZg0AAG8NAAB6DQAAfw0AAIENAACDDQAAhQ0AAJYNAACaDQAAsQ0AALMNAAC7DQAAvQ0AAL0NAADADQAAxg0AAM8NAADUDQAA1g0AANYNAADYDQAA3w0AAOYNAADvDQAA8g0AAPMNAAABDgAAOg4AAEAOAABGDgAATQ4AAE0OAABQDgAAWQ4AAIEOAACCDgAAhA4AAIQOAACGDgAAig4AAIwOAACjDgAApQ4AAKUOAACnDgAAuQ4AALsOAAC9DgAAwA4AAMQOAADGDgAAxg4AAM0OAADNDgAA0A4AANkOAADcDgAA3w4AAAAPAAAADwAAIA8AACkPAABADwAARw8AAEkPAABsDwAAcQ8AAIEPAACIDwAAlw8AAJkPAAC8DwAAABAAADYQAAA4EAAAOBAAADsQAABJEAAAUBAAAJ0QAACgEAAAxRAAAMcQAADHEAAAzRAAAM0QAADQEAAA+hAAAPwQAABIEgAAShIAAE0SAABQEgAAVhIAAFgSAABYEgAAWhIAAF0SAABgEgAAiBIAAIoSAACNEgAAkBIAALASAACyEgAAtRIAALgSAAC+EgAAwBIAAMASAADCEgAAxRIAAMgSAADWEgAA2BIAABATAAASEwAAFRMAABgTAABaEwAAgBMAAI8TAACgEwAA9RMAAPgTAAD9EwAAARQAAGwWAABvFgAAfxYAAIEWAACaFgAAoBYAAOoWAADuFgAA+BYAAAAXAAATFwAAHxcAADMXAABAFwAAUxcAAGAXAABsFwAAbhcAAHAXAAByFwAAcxcAAIAXAACzFwAAthcAAMgXAADXFwAA1xcAANwXAADcFwAA4BcAAOkXAAAQGAAAGRgAACAYAAB4GAAAgBgAAKoYAACwGAAA9RgAAAAZAAAeGQAAIBkAACsZAAAwGQAAOBkAAEYZAABtGQAAcBkAAHQZAACAGQAAqxkAALAZAADJGQAA0BkAANkZAAAAGgAAGxoAACAaAABeGgAAYRoAAHQaAACAGgAAiRoAAJAaAACZGgAApxoAAKcaAAC/GgAAwBoAAMwaAADOGgAAABsAADMbAAA1GwAAQxsAAEUbAABMGwAAUBsAAFkbAACAGwAAqRsAAKwbAADlGwAA5xsAAPEbAAAAHAAANhwAAEAcAABJHAAATRwAAH0cAACAHAAAiBwAAJAcAAC6HAAAvRwAAL8cAADpHAAA7BwAAO4cAADzHAAA9RwAAPYcAAD6HAAA+hwAAAAdAAC/HQAA5x0AAPQdAAAAHgAAFR8AABgfAAAdHwAAIB8AAEUfAABIHwAATR8AAFAfAABXHwAAWR8AAFkfAABbHwAAWx8AAF0fAABdHwAAXx8AAH0fAACAHwAAtB8AALYfAAC8HwAAvh8AAL4fAADCHwAAxB8AAMYfAADMHwAA0B8AANMfAADWHwAA2x8AAOAfAADsHwAA8h8AAPQfAAD2HwAA/B8AAHEgAABxIAAAfyAAAH8gAACQIAAAnCAAAAIhAAACIQAAByEAAAchAAAKIQAAEyEAABUhAAAVIQAAGSEAAB0hAAAkIQAAJCEAACYhAAAmIQAAKCEAACghAAAqIQAALSEAAC8hAAA5IQAAPCEAAD8hAABFIQAASSEAAE4hAABOIQAAYCEAAIghAAC2JAAA6SQAAAAsAADkLAAA6ywAAO4sAADyLAAA8ywAAAAtAAAlLQAAJy0AACctAAAtLQAALS0AADAtAABnLQAAby0AAG8tAACALQAAli0AAKAtAACmLQAAqC0AAK4tAACwLQAAti0AALgtAAC+LQAAwC0AAMYtAADILQAAzi0AANAtAADWLQAA2C0AAN4tAADgLQAA/y0AAC8uAAAvLgAABTAAAAcwAAAhMAAAKTAAADEwAAA1MAAAODAAADwwAABBMAAAljAAAJ0wAACfMAAAoTAAAPowAAD8MAAA/zAAAAUxAAAvMQAAMTEAAI4xAACgMQAAvzEAAPAxAAD/MQAAADQAAL9NAAAATgAAjKQAANCkAAD9pAAAAKUAAAymAAAQpgAAK6YAAECmAABupgAAdKYAAHumAAB/pgAA76YAABenAAAfpwAAIqcAAIinAACLpwAAyqcAANCnAADRpwAA06cAANOnAADVpwAA2acAAPKnAAAFqAAAB6gAACeoAABAqAAAc6gAAICoAADDqAAAxagAAMWoAADQqAAA2agAAPKoAAD3qAAA+6gAAPuoAAD9qAAAKqkAADCpAABSqQAAYKkAAHypAACAqQAAsqkAALSpAAC/qQAAz6kAANmpAADgqQAA/qkAAACqAAA2qgAAQKoAAE2qAABQqgAAWaoAAGCqAAB2qgAAeqoAAL6qAADAqgAAwKoAAMKqAADCqgAA26oAAN2qAADgqgAA76oAAPKqAAD1qgAAAasAAAarAAAJqwAADqsAABGrAAAWqwAAIKsAACarAAAoqwAALqsAADCrAABaqwAAXKsAAGmrAABwqwAA6qsAAPCrAAD5qwAAAKwAAKPXAACw1wAAxtcAAMvXAAD71wAAAPkAAG36AABw+gAA2foAAAD7AAAG+wAAE/sAABf7AAAd+wAAKPsAACr7AAA2+wAAOPsAADz7AAA++wAAPvsAAED7AABB+wAAQ/sAAET7AABG+wAAsfsAANP7AAA9/QAAUP0AAI/9AACS/QAAx/0AAPD9AAD7/QAAcP4AAHT+AAB2/gAA/P4AABD/AAAZ/wAAIf8AADr/AABB/wAAWv8AAGb/AAC+/wAAwv8AAMf/AADK/wAAz/8AANL/AADX/wAA2v8AANz/AAAAAAEACwABAA0AAQAmAAEAKAABADoAAQA8AAEAPQABAD8AAQBNAAEAUAABAF0AAQCAAAEA+gABAEABAQB0AQEAgAIBAJwCAQCgAgEA0AIBAAADAQAfAwEALQMBAEoDAQBQAwEAegMBAIADAQCdAwEAoAMBAMMDAQDIAwEAzwMBANEDAQDVAwEAAAQBAJ0EAQCgBAEAqQQBALAEAQDTBAEA2AQBAPsEAQAABQEAJwUBADAFAQBjBQEAcAUBAHoFAQB8BQEAigUBAIwFAQCSBQEAlAUBAJUFAQCXBQEAoQUBAKMFAQCxBQEAswUBALkFAQC7BQEAvAUBAAAGAQA2BwEAQAcBAFUHAQBgBwEAZwcBAIAHAQCFBwEAhwcBALAHAQCyBwEAugcBAAAIAQAFCAEACAgBAAgIAQAKCAEANQgBADcIAQA4CAEAPAgBADwIAQA/CAEAVQgBAGAIAQB2CAEAgAgBAJ4IAQDgCAEA8ggBAPQIAQD1CAEAAAkBABUJAQAgCQEAOQkBAIAJAQC3CQEAvgkBAL8JAQAACgEAAwoBAAUKAQAGCgEADAoBABMKAQAVCgEAFwoBABkKAQA1CgEAYAoBAHwKAQCACgEAnAoBAMAKAQDHCgEAyQoBAOQKAQAACwEANQsBAEALAQBVCwEAYAsBAHILAQCACwEAkQsBAAAMAQBIDAEAgAwBALIMAQDADAEA8gwBAAANAQAnDQEAMA0BADkNAQCADgEAqQ4BAKsOAQCsDgEAsA4BALEOAQAADwEAHA8BACcPAQAnDwEAMA8BAEUPAQBwDwEAgQ8BALAPAQDEDwEA4A8BAPYPAQAAEAEARRABAGYQAQBvEAEAcRABAHUQAQCCEAEAuBABAMIQAQDCEAEA0BABAOgQAQDwEAEA+RABAAARAQAyEQEANhEBAD8RAQBEEQEARxEBAFARAQByEQEAdhEBAHYRAQCAEQEAvxEBAMERAQDEEQEAzhEBANoRAQDcEQEA3BEBAAASAQAREgEAExIBADQSAQA3EgEANxIBAD4SAQA+EgEAgBIBAIYSAQCIEgEAiBIBAIoSAQCNEgEAjxIBAJ0SAQCfEgEAqBIBALASAQDoEgEA8BIBAPkSAQAAEwEAAxMBAAUTAQAMEwEADxMBABATAQATEwEAKBMBACoTAQAwEwEAMhMBADMTAQA1EwEAORMBAD0TAQBEEwEARxMBAEgTAQBLEwEATBMBAFATAQBQEwEAVxMBAFcTAQBdEwEAYxMBAAAUAQBBFAEAQxQBAEUUAQBHFAEAShQBAFAUAQBZFAEAXxQBAGEUAQCAFAEAwRQBAMQUAQDFFAEAxxQBAMcUAQDQFAEA2RQBAIAVAQC1FQEAuBUBAL4VAQDYFQEA3RUBAAAWAQA+FgEAQBYBAEAWAQBEFgEARBYBAFAWAQBZFgEAgBYBALUWAQC4FgEAuBYBAMAWAQDJFgEAABcBABoXAQAdFwEAKhcBADAXAQA5FwEAQBcBAEYXAQAAGAEAOBgBAKAYAQDpGAEA/xgBAAYZAQAJGQEACRkBAAwZAQATGQEAFRkBABYZAQAYGQEANRkBADcZAQA4GQEAOxkBADwZAQA/GQEAQhkBAFAZAQBZGQEAoBkBAKcZAQCqGQEA1xkBANoZAQDfGQEA4RkBAOEZAQDjGQEA5BkBAAAaAQAyGgEANRoBAD4aAQBQGgEAlxoBAJ0aAQCdGgEAsBoBAPgaAQAAHAEACBwBAAocAQA2HAEAOBwBAD4cAQBAHAEAQBwBAFAcAQBZHAEAchwBAI8cAQCSHAEApxwBAKkcAQC2HAEAAB0BAAYdAQAIHQEACR0BAAsdAQA2HQEAOh0BADodAQA8HQEAPR0BAD8dAQBBHQEAQx0BAEMdAQBGHQEARx0BAFAdAQBZHQEAYB0BAGUdAQBnHQEAaB0BAGodAQCOHQEAkB0BAJEdAQCTHQEAlh0BAJgdAQCYHQEAoB0BAKkdAQDgHgEA9h4BALAfAQCwHwEAACABAJkjAQAAJAEAbiQBAIAkAQBDJQEAkC8BAPAvAQAAMAEALjQBAABEAQBGRgEAAGgBADhqAQBAagEAXmoBAGBqAQBpagEAcGoBAL5qAQDAagEAyWoBANBqAQDtagEAAGsBAC9rAQBAawEAQ2sBAFBrAQBZawEAY2sBAHdrAQB9awEAj2sBAEBuAQB/bgEAAG8BAEpvAQBPbwEAh28BAI9vAQCfbwEA4G8BAOFvAQDjbwEA428BAPBvAQDxbwEAAHABAPeHAQAAiAEA1YwBAACNAQAIjQEA8K8BAPOvAQD1rwEA+68BAP2vAQD+rwEAALABACKxAQBQsQEAUrEBAGSxAQBnsQEAcLEBAPuyAQAAvAEAarwBAHC8AQB8vAEAgLwBAIi8AQCQvAEAmbwBAJ68AQCevAEAANQBAFTUAQBW1AEAnNQBAJ7UAQCf1AEAotQBAKLUAQCl1AEAptQBAKnUAQCs1AEArtQBALnUAQC71AEAu9QBAL3UAQDD1AEAxdQBAAXVAQAH1QEACtUBAA3VAQAU1QEAFtUBABzVAQAe1QEAOdUBADvVAQA+1QEAQNUBAETVAQBG1QEARtUBAErVAQBQ1QEAUtUBAKXWAQCo1gEAwNYBAMLWAQDa1gEA3NYBAPrWAQD81gEAFNcBABbXAQA01wEANtcBAE7XAQBQ1wEAbtcBAHDXAQCI1wEAitcBAKjXAQCq1wEAwtcBAMTXAQDL1wEAztcBAP/XAQAA3wEAHt8BAADgAQAG4AEACOABABjgAQAb4AEAIeABACPgAQAk4AEAJuABACrgAQAA4QEALOEBADfhAQA94QEAQOEBAEnhAQBO4QEATuEBAJDiAQCt4gEAwOIBAOviAQDw4gEA+eIBAODnAQDm5wEA6OcBAOvnAQDt5wEA7ucBAPDnAQD+5wEAAOgBAMToAQAA6QEAQ+kBAEfpAQBH6QEAS+kBAEvpAQBQ6QEAWekBAADuAQAD7gEABe4BAB/uAQAh7gEAIu4BACTuAQAk7gEAJ+4BACfuAQAp7gEAMu4BADTuAQA37gEAOe4BADnuAQA77gEAO+4BAELuAQBC7gEAR+4BAEfuAQBJ7gEASe4BAEvuAQBL7gEATe4BAE/uAQBR7gEAUu4BAFTuAQBU7gEAV+4BAFfuAQBZ7gEAWe4BAFvuAQBb7gEAXe4BAF3uAQBf7gEAX+4BAGHuAQBi7gEAZO4BAGTuAQBn7gEAau4BAGzuAQBy7gEAdO4BAHfuAQB57gEAfO4BAH7uAQB+7gEAgO4BAInuAQCL7gEAm+4BAKHuAQCj7gEApe4BAKnuAQCr7gEAu+4BADDxAQBJ8QEAUPEBAGnxAQBw8QEAifEBAPD7AQD5+wEAAAACAN+mAgAApwIAOLcCAEC3AgAduAIAILgCAKHOAgCwzgIA4OsCAAD4AgAd+gIAAAADAEoTAwABAAAAAAAAAH8AAAADAAAAAOkBAEvpAQBQ6QEAWekBAF7pAQBf6QEAAAAAAAMAAAAAFwEAGhcBAB0XAQArFwEAMBcBAEYXAQABAAAAAEQBAEZGAQABAAAAAAAAAP//EABBgOEEC/IDOQAAAAAGAAAEBgAABgYAAAsGAAANBgAAGgYAABwGAAAeBgAAIAYAAD8GAABBBgAASgYAAFYGAABvBgAAcQYAANwGAADeBgAA/wYAAFAHAAB/BwAAcAgAAI4IAACQCAAAkQgAAJgIAADhCAAA4wgAAP8IAABQ+wAAwvsAANP7AAA9/QAAQP0AAI/9AACS/QAAx/0AAM/9AADP/QAA8P0AAP/9AABw/gAAdP4AAHb+AAD8/gAAYA4BAH4OAQAA7gEAA+4BAAXuAQAf7gEAIe4BACLuAQAk7gEAJO4BACfuAQAn7gEAKe4BADLuAQA07gEAN+4BADnuAQA57gEAO+4BADvuAQBC7gEAQu4BAEfuAQBH7gEASe4BAEnuAQBL7gEAS+4BAE3uAQBP7gEAUe4BAFLuAQBU7gEAVO4BAFfuAQBX7gEAWe4BAFnuAQBb7gEAW+4BAF3uAQBd7gEAX+4BAF/uAQBh7gEAYu4BAGTuAQBk7gEAZ+4BAGruAQBs7gEAcu4BAHTuAQB37gEAee4BAHzuAQB+7gEAfu4BAIDuAQCJ7gEAi+4BAJvuAQCh7gEAo+4BAKXuAQCp7gEAq+4BALvuAQDw7gEA8e4BAAAAAAAEAAAAMQUAAFYFAABZBQAAigUAAI0FAACPBQAAE/sAABf7AEGA5QQL0yu6AgAAAAAAAHcDAAB6AwAAfwMAAIQDAACKAwAAjAMAAIwDAACOAwAAoQMAAKMDAAAvBQAAMQUAAFYFAABZBQAAigUAAI0FAACPBQAAkQUAAMcFAADQBQAA6gUAAO8FAAD0BQAAAAYAAA0HAAAPBwAASgcAAE0HAACxBwAAwAcAAPoHAAD9BwAALQgAADAIAAA+CAAAQAgAAFsIAABeCAAAXggAAGAIAABqCAAAcAgAAI4IAACQCAAAkQgAAJgIAACDCQAAhQkAAIwJAACPCQAAkAkAAJMJAACoCQAAqgkAALAJAACyCQAAsgkAALYJAAC5CQAAvAkAAMQJAADHCQAAyAkAAMsJAADOCQAA1wkAANcJAADcCQAA3QkAAN8JAADjCQAA5gkAAP4JAAABCgAAAwoAAAUKAAAKCgAADwoAABAKAAATCgAAKAoAACoKAAAwCgAAMgoAADMKAAA1CgAANgoAADgKAAA5CgAAPAoAADwKAAA+CgAAQgoAAEcKAABICgAASwoAAE0KAABRCgAAUQoAAFkKAABcCgAAXgoAAF4KAABmCgAAdgoAAIEKAACDCgAAhQoAAI0KAACPCgAAkQoAAJMKAACoCgAAqgoAALAKAACyCgAAswoAALUKAAC5CgAAvAoAAMUKAADHCgAAyQoAAMsKAADNCgAA0AoAANAKAADgCgAA4woAAOYKAADxCgAA+QoAAP8KAAABCwAAAwsAAAULAAAMCwAADwsAABALAAATCwAAKAsAACoLAAAwCwAAMgsAADMLAAA1CwAAOQsAADwLAABECwAARwsAAEgLAABLCwAATQsAAFULAABXCwAAXAsAAF0LAABfCwAAYwsAAGYLAAB3CwAAggsAAIMLAACFCwAAigsAAI4LAACQCwAAkgsAAJULAACZCwAAmgsAAJwLAACcCwAAngsAAJ8LAACjCwAApAsAAKgLAACqCwAArgsAALkLAAC+CwAAwgsAAMYLAADICwAAygsAAM0LAADQCwAA0AsAANcLAADXCwAA5gsAAPoLAAAADAAADAwAAA4MAAAQDAAAEgwAACgMAAAqDAAAOQwAADwMAABEDAAARgwAAEgMAABKDAAATQwAAFUMAABWDAAAWAwAAFoMAABdDAAAXQwAAGAMAABjDAAAZgwAAG8MAAB3DAAAjAwAAI4MAACQDAAAkgwAAKgMAACqDAAAswwAALUMAAC5DAAAvAwA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AMUJAADGCQAAyQkAAMoJAADPCQAA1gkAANgJAADbCQAA3gkAAN4JAADkCQAA5QkAAP8JAAAACgAABAoAAAQKAAALCgAADgoAABEKAAASCgAAKQoAACkKAAAxCgAAMQoAADQKAAA0CgAANwoAADcKAAA6CgAAOwoAAD0KAAA9CgAAQwoAAEYKAABJCgAASgoAAE4KAABQCgAAUgoAAFgKAABdCgAAXQoAAF8KAABlCgAAdwoAAIAKAACECgAAhAoAAI4KAACOCgAAkgoAAJIKAACpCgAAqQoAALEKAACxCgAAtAoAALQKAAC6CgAAuwoAAMYKAADGCgAAygoAAMoKAADOCgAAzwoAANEKAADfCgAA5AoAAOUKAADyCgAA+AoAAAALAAAACwAABAsAAAQLAAANCwAADgsAABELAAASCwAAKQsAACkLAAAxCwAAMQsAADQLAAA0CwAAOgsAADsLAABFCwAARgsAAEkLAABKCwAATgsAAFQLAABYCwAAWwsAAF4LAABeCwAAZAsAAGULAAB4CwAAgQsAAIQLAACECwAAiwsAAI0LAACRCwAAkQsAAJYLAACYCwAAmwsAAJsLAACdCwAAnQsAAKALAACiCwAApQsAAKcLAACrCwAArQsAALoLAAC9CwAAwwsAAMULAADJCwAAyQsAAM4LAADPCwAA0QsAANYLAADYCwAA5QsAAPsLAAD/CwAADQwAAA0MAAARDAAAEQwAACkMAAApDAAAOgwAADsMAABFDAAARQwAAEkMAABJDAAATgwAAFQMAABXDAAAVwwAAFsMAABcDAAAXgwAAF8MAABkDAAAZQwAAHAMAAB2DAAAjQwAAI0MAACRDAAAkQwAAKkMAACpDAAAtAwAALQMAAC6DAAAuwwAAMUMAADFDAAAyQwAAMkMAADODAAA1AwAANcMAADcDAAA3wwAAN8MAADkDAAA5QwAAPAMAADwDAAA8wwAAP8MAAANDQAADQ0AABENAAARDQAARQ0AAEUNAABJDQAASQ0AAFANAABTDQAAZA0AAGUNAACADQAAgA0AAIQNAACEDQAAlw0AAJkNAACyDQAAsg0AALwNAAC8DQAAvg0AAL8NAADHDQAAyQ0AAMsNAADODQAA1Q0AANUNAADXDQAA1w0AAOANAADlDQAA8A0AAPENAAD1DQAAAA4AADsOAAA+DgAAXA4A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AQAAcAEAAHIBAAByAQAAdAEAAHQBAAB2AQAAdgEAAHgBAAB5AQAAewEAAHsBAAB9AQAAfQEAAH8BAAB/AQAAgQEAAIIBAACEAQAAhAEAAIYBAACHAQAAiQEAAIsBAACOAQAAkQEAAJMBAACUAQAAlgEAAJgBAACcAQAAnQEAAJ8BAACgAQAAogEAAKIBAACkAQAApAEAAKYBAACnAQAAqQEAAKkBAACsAQAArAEAAK4BAACvAQAAsQEAALMBAAC1AQAAtQEAALcBAAC4AQAAvAEAALwBAADEAQAAxQEAAMcBAADIAQAAygEAAMsBAADNAQAAzQEAAM8BAADPAQAA0QEAANEBAADTAQAA0wEAANUBAADVAQAA1wEAANcBAADZAQAA2QEAANsBAADbAQAA3gEAAN4BAADgAQAA4AEAAOIBAADiAQAA5AEAAOQBAADmAQAA5gEAAOgBAADoAQAA6gEAAOoBAADsAQAA7AEAAO4BAADuAQAA8QEAAPIBAAD0AQAA9AEAAPYBAAD4AQAA+gEAAPoBAAD8AQAA/AEAAP4BAAD+AQAAAAIAAAACAAACAgAAAgIAAAQCAAAEAgAABgIAAAYCAAAIAgAACAIAAAoCAAAKAgAADAIAAAwCAAAOAgAADgIAABACAAAQAgAAEgIAABICAAAUAgAAFAIAABYCAAAWAgAAGAIAABgCAAAaAgAAGgIAABwCAAAcAgAAHgIAAB4CAAAgAgAAIAIAACICAAAiAgAAJAIAACQCAAAmAgAAJgIAACgCAAAoAgAAKgIAACoCAAAsAgAALAIAAC4CAAAuAgAAMAIAADACAAAyAgAAMgIAADoCAAA7AgAAPQIAAD4CAABBAgAAQQIAAEMCAABGAgAASAIAAEgCAABKAgAASgIAAEwCAABMAgAATgIAAE4CAABFAwAARQMAAHADAABwAwAAcgMAAHIDAAB2AwAAdgMAAH8DAAB/AwAAhgMAAIYDAACIAwAAigMAAIwDAACMAwAAjgMAAI8DAACRAwAAoQMAAKMDAACrAwAAwgMAAMIDAADPAwAA0QMAANUDAADWAwAA2AMAANgDAADaAwAA2gMAANwDAADcAwAA3gMAAN4DAADgAwAA4AMAAOIDAADiAwAA5AMAAOQDAADmAwAA5gMAAOgDAADoAwAA6gMAAOoDAADsAwAA7AMAAO4DAADuAwAA8AMAAPEDAAD0AwAA9QMAAPcDAAD3AwAA+QMAAPoDAAD9AwAALwQAAGAEAABgBAAAYgQAAGIEAABkBAAAZAQAAGYEAABmBAAAaAQAAGgEAABqBAAAagQAAGwEAABsBAAAbgQAAG4EAABwBAAAcAQAAHIEAAByBAAAdAQAAHQEAAB2BAAAdgQAAHgEAAB4BAAAegQAAHoEAAB8BAAAfAQAAH4EAAB+BAAAgAQAAIAEAACKBAAAigQAAIwEAACMBAAAjgQAAI4EAACQBAAAkAQAAJIEAACSBAAAlAQAAJQEAACWBAAAlgQAAJgEAACYBAAAmgQAAJoEAACcBAAAnAQAAJ4EAACeBAAAoAQAAKAEAACiBAAAogQAAKQEAACkBAAApgQAAKYEAACoBAAAqAQAAKoEAACqBAAArAQAAKwEAACuBAAArgQAALAEAACwBAAAsgQAALIEAAC0BAAAtAQAALYEAAC2BAAAuAQAALgEAAC6BAAAugQAALwEAAC8BAAAvgQAAL4EAADABAAAwQQAAMMEAADDBAAAxQQAAMUEAADHBAAAxwQAAMkEAADJBAAAywQAAMsEAADNBAAAzQQAANAEAADQBAAA0gQAANIEAADUBAAA1AQAANYEAADWBAAA2AQAANgEAADaBAAA2gQAANwEAADcBAAA3gQAAN4EAADgBAAA4AQAAOIEAADiBAAA5AQAAOQEAADmBAAA5gQAAOgEAADoBAAA6gQAAOoEAADsBAAA7AQAAO4EAADuBAAA8AQAAPAEAADyBAAA8gQAAPQEAAD0BAAA9gQAAPYEAAD4BAAA+AQAAPoEAAD6BAAA/AQAAPwEAAD+BAAA/gQAAAAFAAAABQAAAgUAAAIFAAAEBQAABAUAAAYFAAAGBQAACAUAAAgFAAAKBQAACgUAAAwFAAAMBQAADgUAAA4FAAAQBQAAEAUAABIFAAASBQAAFAUAABQFAAAWBQAAFgUAABgFAAAYBQAAGgUAABoFAAAcBQAAHAUAAB4FAAAeBQAAIAUAACAFAAAiBQAAIgUAACQFAAAkBQAAJgUAACYFAAAoBQAAKAUAACoFAAAqBQAALAUAACwFAAAuBQAALgUAADEFAABWBQAAhwUAAIcFAACgEAAAxRAAAMcQAADHEAAAzRAAAM0QAAD4EwAA/RMAAIAcAACIHAAAkBwAALocAAC9HAAAvxwAAAAeAAAAHgAAAh4AAAIeAAAEHgAABB4AAAYeAAAGHgAACB4AAAgeAAAKHgAACh4AAAweAAAMHgAADh4AAA4eAAAQHgAAEB4AABIeAAASHgAAFB4AABQeAAAWHgAAFh4AABgeAAAYHgAAGh4AABoeAAAcHgAAHB4AAB4eAAAeHgAAIB4AACAeAAAiHgAAIh4AACQeAAAkHgAAJh4AACYeAAAoHgAAKB4AACoeAAAqHgAALB4AACweAAAuHgAALh4AADAeAAAwHgAAMh4AADIeAAA0HgAANB4AADYeAAA2HgAAOB4AADgeAAA6HgAAOh4AADweAAA8HgAAPh4AAD4eAABAHgAAQB4AAEIeAABCHgAARB4AAEQeAABGHgAARh4AAEgeAABIHgAASh4AAEoeAABMHgAATB4AAE4eAABOHgAAUB4AAFAeAABSHgAAUh4AAFQeAABUHgAAVh4AAFYeAABYHgAAWB4AAFoeAABaHgAAXB4AAFweAABeHgAAXh4AAGAeAABgHgAAYh4AAGIeAABkHgAAZB4AAGYeAABmHgAAaB4AAGgeAABqHgAAah4AAGweAABsHgAAbh4AAG4eAABwHgAAcB4AAHIeAAByHgAAdB4AAHQeAAB2HgAAdh4AAHgeAAB4HgAAeh4AAHoeAAB8HgAAfB4AAH4eAAB+HgAAgB4AAIAeAACCHgAAgh4AAIQeAACEHgAAhh4AAIYeAACIHgAAiB4AAIoeAACKHgAAjB4AAIweAACOHgAAjh4AAJAeAACQHgAAkh4AAJIeAACUHgAAlB4AAJoeAACbHgAAnh4AAJ4eAACgHgAAoB4AAKIeAACiHgAApB4AAKQeAACmHgAAph4AAKgeAACoHgAAqh4AAKoeAACsHgAArB4AAK4eAACuHgAAsB4AALAeAACyHgAAsh4AALQeAAC0HgAAth4AALYeAAC4HgAAuB4AALoeAAC6HgAAvB4AALweAAC+HgAAvh4AAMAeAADAHgAAwh4AAMIeAADEHgAAxB4AAMYeAADGHgAAyB4AAMgeAADKHgAAyh4AAMweAADMHgAAzh4AAM4eAADQHgAA0B4AANIeAADSHgAA1B4AANQeAADWHgAA1h4AANgeAADYHgAA2h4AANoeAADcHgAA3B4AAN4eAADeHgAA4B4AAOAeAADiHgAA4h4AAOQeAADkHgAA5h4AAOYeAADoHgAA6B4AAOoeAADqHgAA7B4AAOweAADuHgAA7h4AAPAeAADwHgAA8h4AAPIeAAD0HgAA9B4AAPYeAAD2HgAA+B4AAPgeAAD6HgAA+h4AAPweAAD8HgAA/h4AAP4eAAAIHwAADx8AABgfAAAdHwAAKB8AAC8fAAA4HwAAPx8AAEgfAABNHwAAWR8AAFkfAABbHwAAWx8AAF0fAABdHwAAXx8AAF8fAABoHwAAbx8AAIAfAACvHwAAsh8AALQfAAC3HwAAvB8AAMIfAADEHwAAxx8AAMwfAADYHwAA2x8AAOgfAADsHwAA8h8AAPQfAAD3HwAA/B8AACYhAAAmIQAAKiEAACshAAAyIQAAMiEAAGAhAABvIQAAgyEAAIMhAAC2JAAAzyQAAAAsAAAvLAAAYCwAAGAsAABiLAAAZCwAAGcsAABnLAAAaSwAAGksAABrLAAAaywAAG0sAABwLAAAciwAAHIsAAB1LAAAdSwAAH4sAACALAAAgiwAAIIsAACELAAAhCwAAIYsAACGLAAAiCwAAIgsAACKLAAAiiwAAIwsAACMLAAAjiwAAI4sAACQLAAAkCwAAJIsAACSLAAAlCwAAJQsAACWLAAAliwAAJgsAACYLAAAmiwAAJosAACcLAAAnCwAAJ4sAACeLAAAoCwAAKAsAACiLAAAoiwAAKQsAACkLAAApiwAAKYsAACoLAAAqCwAAKosAACqLAAArCwAAKwsAACuLAAAriwAALAsAACwLAAAsiwAALIsAAC0LAAAtCwAALYsAAC2LAAAuCwAALgsAAC6LAAAuiwAALwsAAC8LAAAviwAAL4sAADALAAAwCwAAMIsAADCLAAAxCwAAMQsAADGLAAAxiwAAMgsAADILAAAyiwAAMosAADMLAAAzCwAAM4sAADOLAAA0CwAANAsAADSLAAA0iwAANQsAADULAAA1iwAANYsAADYLAAA2CwAANosAADaLAAA3CwAANwsAADeLAAA3iwAAOAsAADgLAAA4iwAAOIsAADrLAAA6ywAAO0sAADtLAAA8iwAAPIsAABApgAAQKYAAEKmAABCpgAARKYAAESmAABGpgAARqYAAEimAABIpgAASqYAAEqmAABMpgAATKYAAE6mAABOpgAAUKYAAFCmAABSpgAAUqYAAFSmAABUpgAAVqYAAFamAABYpgAAWKYAAFqmAABapgAAXKYAAFymAABepgAAXqYAAGCmAABgpgAAYqYAAGKmAABkpgAAZKYAAGamAABmpgAAaKYAAGimAABqpgAAaqYAAGymAABspgAAgKYAAICmAACCpgAAgqYAAISmAACEpgAAhqYAAIamAACIpgAAiKYAAIqmAACKpgAAjKYAAIymAACOpgAAjqYAAJCmAACQpgAAkqYAAJKmAACUpgAAlKYAAJamAACWpgAAmKYAAJimAACapgAAmqYAACKnAAAipwAAJKcAACSnAAAmpwAAJqcAACinAAAopwAAKqcAACqnAAAspwAALKcAAC6nAAAupwAAMqcAADKnAAA0pwAANKcAADanAAA2pwAAOKcAADinAAA6pwAAOqcAADynAAA8pwAAPqcAAD6nAABApwAAQKcAAEKnAABCpwAARKcAAESnAABGpwAARqcAAEinAABIpwAASqcAAEqnAABMpwAATKcAAE6nAABOpwAAUKcAAFCnAABSpwAAUqcAAFSnAABUpwAAVqcAAFanAABYpwAAWKcAAFqnAABapwAAXKcAAFynAABepwAAXqcAAGCnAABgpwAAYqcAAGKnAABkpwAAZKcAAGanAABmpwAAaKcAAGinAABqpwAAaqcAAGynAABspwAAbqcAAG6nAAB5pwAAeacAAHunAAB7pwAAfacAAH6nAACApwAAgKcAAIKnAACCpwAAhKcAAISnAACGpwAAhqcAAIunAACLpwAAjacAAI2nAACQpwAAkKcAAJKnAACSpwAAlqcAAJanAACYpwAAmKcAAJqnAACapwAAnKcAAJynAACepwAAnqcAAKCnAACgpwAAoqcAAKKnAACkpwAApKcAAKanAACmpwAAqKcAAKinAACqpwAArqcAALCnAAC0pwAAtqcAALanAAC4pwAAuKcAALqnAAC6pwAAvKcAALynAAC+pwAAvqcAAMCnAADApwAAwqcAAMKnAADEpwAAx6cAAMmnAADJpwAA0KcAANCnAADWpwAA1qcAANinAADYpwAA9acAAPWnAABwqwAAv6sAAAD7AAAG+wAAE/sAABf7AAAh/wAAOv8AAAAEAQAnBAEAsAQBANMEAQBwBQEAegUBAHwFAQCKBQEAjAUBAJIFAQCUBQEAlQUBAIAMAQCyDAEAoBgBAL8YAQBAbgEAX24BAADpAQAh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AABOHgAAUB4AAFAeAABSHgAAUh4AAFQeAABUHgAAVh4AAFYeAABYHgAAWB4AAFoeAABaHgAAXB4AAFweAABeHgAAXh4AAGAeAABgHgAAYh4AAGIeAABkHgAAZB4AAGYeAABmHgAAaB4AAGgeAABqHgAAah4AAGweAABsHgAAbh4AAG4eAABwHgAAcB4AAHIeAAByHgAAdB4AAHQeAAB2HgAAdh4AAHgeAAB4HgAAeh4AAHoeAAB8HgAAfB4AAH4eAAB+HgAAgB4AAIAeAACCHgAAgh4AAIQeAACEHgAAhh4AAIYeAACIHgAAiB4AAIoeAACKHgAAjB4AAIweAACOHgAAjh4AAJAeAACQHgAAkh4AAJIeAACUHgAAlB4AAJ4eAACeHgAAoB4AAKAeAACiHgAAoh4AAKQeAACkHgAAph4AAKYeAACoHgAAqB4AAKoeAACqHgAArB4AAKweAACuHgAArh4AALAeAACwHgAAsh4AALIeAAC0HgAAtB4AALYeAAC2HgAAuB4AALgeAAC6HgAAuh4AALweAAC8HgAAvh4AAL4eAADAHgAAwB4AAMIeAADCHgAAxB4AAMQeAADGHgAAxh4AAMgeAADIHgAAyh4AAMoeAADMHgAAzB4AAM4eAADOHgAA0B4AANAeAADSHgAA0h4AANQeAADUHgAA1h4AANYeAADYHgAA2B4AANoeAADaHgAA3B4AANweAADeHgAA3h4AAOAeAADgHgAA4h4AAOIeAADkHgAA5B4AAOYeAADmHgAA6B4AAOgeAADqHgAA6h4AAOweAADsHgAA7h4AAO4eAADwHgAA8B4AAPIeAADyHgAA9B4AAPQeAAD2HgAA9h4AAPgeAAD4HgAA+h4AAPoeAAD8HgAA/B4AAP4eAAD+HgAACB8AAA8fAAAYHwAAHR8AACgfAAAvHwAAOB8AAD8fAABIHwAATR8AAFkfAABZHwAAWx8AAFsfAABdHwAAXR8AAF8fAABfHwAAaB8AAG8fAACIHwAAjx8AAJgfAACfHwAAqB8AAK8fAAC4HwAAvB8AAMgfAADMHwAA2B8AANsfAADoHwAA7B8AAPgfAAD8HwAAJiEAACYhAAAqIQAAKyEAADIhAAAyIQAAYCEAAG8hAACDIQAAgyEAALYkAADPJAAAACwAAC8sAABgLAAAYCwAAGIsAABkLAAAZywAAGcsAABpLAAAaSwAAGssAABrLAAAbSwAAHAsAAByLAAAciwAAHUsAAB1LAAAfiwAAIAsAACCLAAAgiwAAIQsAACELAAAhiwAAIYsAACILAAAiCwAAIosAACKLAAAjCwAAIwsAACOLAAAjiwAAJAsAACQLAAAkiwAAJIsAACULAAAlCwAAJYsAACWLAAAmCwAAJgsAACaLAAAmiwAAJwsAACcLAAAniwAAJ4sAACgLAAAoCwAAKIsAACiLAAApCwAAKQsAACmLAAApiwAAKgsAACoLAAAqiwAAKosAACsLAAArCwAAK4sAACuLAAAsCwAALAsAACyLAAAsiwAALQsAAC0LAAAtiwAALYsAAC4LAAAuCwAALosAAC6LAAAvCwAALwsAAC+LAAAviwAAMAsAADALAAAwiwAAMIsAADELAAAxCwAAMYsAADGLAAAyCwAAMgsAADKLAAAyiwAAMwsAADMLAAAziwAAM4sAADQLAAA0CwAANIsAADSLAAA1CwAANQsAADWLAAA1iwAANgsAADYLAAA2iwAANosAADcLAAA3CwAAN4sAADeLAAA4CwAAOAsAADiLAAA4iwAAOssAADrLAAA7SwAAO0sAADyLAAA8iwAAECmAABApgAAQqYAAEKmAABEpgAARKYAAEamAABGpgAASKYAAEimAABKpgAASqYAAEymAABMpgAATqYAAE6mAABQpgAAUKYAAFKmAABSpgAAVKYAAFSmAABWpgAAVqYAAFimAABYpgAAWqYAAFqmAABcpgAAXKYAAF6mAABepgAAYKYAAGCmAABipgAAYqYAAGSmAABkpgAAZqYAAGamAABopgAAaKYAAGqmAABqpgAAbKYAAGymAACApgAAgKYAAIKmAACCpgAAhKYAAISmAACGpgAAhqYAAIimAACIpgAAiqYAAIqmAACMpgAAjKYAAI6mAACOpgAAkKYAAJCmAACSpgAAkqYAAJSmAACUpgAAlqYAAJamAACYpgAAmKYAAJqmAACapgAAIqcAACKnAAAkpwAAJKcAACanAAAmpwAAKKcAACinAAAqpwAAKqcAACynAAAspwAALqcAAC6nAAAypwAAMqcAADSnAAA0pwAANqcAADanAAA4pwAAOKcAADqnAAA6pwAAPKcAADynAAA+pwAAPqcAAECnAABApwAAQqcAAEKnAABEpwAARKcAAEan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AAC/HgAAwR4AAMEeAADDHgAAwx4AAMUeAADFHgAAxx4AAMceAADJHgAAyR4AAMseAADLHgAAzR4AAM0eAADPHgAAzx4AANEeAADRHgAA0x4AANMeAADVHgAA1R4AANceAADXHgAA2R4AANkeAADbHgAA2x4AAN0eAADdHgAA3x4AAN8eAADhHgAA4R4AAOMeAADjHgAA5R4AAOUeAADnHgAA5x4AAOkeAADpHgAA6x4AAOseAADtHgAA7R4AAO8eAADvHgAA8R4AAPEeAADzHgAA8x4AAPUeAAD1HgAA9x4AAPceAAD5HgAA+R4AAPseAAD7HgAA/R4AAP0eAAD/HgAABx8AABAfAAAVHwAAIB8AACcfAAAwHwAANx8AAEAfAABFHwAAUB8AAFcfAABgHwAAZx8AAHAfAAB9HwAAgB8AAIcfAACQHwAAlx8AAKAfAACnHwAAsB8AALQfAAC2HwAAtx8AAL4fAAC+HwAAwh8AAMQfAADGHwAAxx8AANAfAADTHwAA1h8AANcfAADgHwAA5x8AAPIfAAD0HwAA9h8AAPcfAABOIQAATiEAAHAhAAB/IQAAhCEAAIQhAADQJAAA6SQAADAsAABfLAAAYSwAAGEsAABlLAAAZiwAAGgsAABoLAAAaiwAAGosAABsLAAAbCwAAHMsAABzLAAAdiwAAHYsAACBLAAAgSwAAIMsAACDLAAAhSwAAIUsAACHLAAAhywAAIksAACJLAAAiywAAIssAACNLAAAjSwAAI8sAACPLAAAkSwAAJEsAACTLAAAkywAAJUsAACVLAAAlywAAJcsAACZLAAAmSwAAJssAACbLAAAnSwAAJ0sAACfLAAAnywAAKEsAAChLAAAoywAAKMsAAClLAAApSwAAKcsAACnLAAAqSwAAKksAACrLAAAqywAAK0sAACtLAAArywAAK8sAACxLAAAsSwAALMsAACzLAAAtSwAALUsAAC3LAAAtywAALksAAC5LAAAuywAALssAAC9LAAAvSwAAL8sAAC/LAAAwSwAAMEsAADDLAAAwywAAMUsAADFLAAAxywAAMcsAADJLAAAySwAAMssAADLLAAAzSwAAM0sAADPLAAAzywAANEsAADRLAAA0ywAANMsAADVLAAA1SwAANcsAADXLAAA2SwAANksAADbLAAA2ywAAN0sAADdLAAA3ywAAN8sAADhLAAA4SwAAOMsAADjLAAA7CwAAOwsAADuLAAA7iwAAPMsAADzLAAAAC0AACUtAAAnLQAAJy0AAC0tAAAtLQAAQaYAAEGmAABDpgAAQ6YAAEWmAABFpgAAR6YAAEemAABJpgAASaYAAEumAABLpgAATaYAAE2mAABPpgAAT6YAAFGmAABRpgAAU6YAAFOmAABVpgAAVaYAAFemAABXpgAAWaYAAFmmAABbpgAAW6YAAF2mAABdpgAAX6YAAF+mAABhpgAAYaYAAGOmAABjpgAAZaYAAGWmAABnpgAAZ6YAAGmmAABppgAAa6YAAGumAABtpgAAbaYAAIGmAACBpgAAg6YAAIOmAACFpgAAhaYAAIemAACHpgAAiaYAAImmAACLpgAAi6YAAI2mAACNpgAAj6YAAI+mAACRpgAAkaYAAJOmAACTpgAAlaYAAJWmAACXpgAAl6YAAJmmAACZpgAAm6YAAJumAAAjpwAAI6cAACWnAAAlpwAAJ6cAACenAAAppwAAKacAACunAAArpwAALacAAC2nAAAvpwAAL6cAADOnAAAzpwAANacAADWnAAA3pwAAN6cAADmnAAA5pwAAO6cAADunAAA9pwAAPacAAD+nAAA/pwAAQacAAEGnAABDpwAAQ6cAAEWnAABFpwAAR6cAAEenAABJpwAASacAAEunAABLpwAATacAAE2nAABPpwAAT6cAAFGnAABRpwAAU6cAAFOnAABVpwAAVacAAFenAABXpwAAWacAAFmnAABbpwAAW6cAAF2nAABdpwAAX6cAAF+nAABhpwAAYacAAGOnAABjpwAAZacAAGWnAABnpwAAZ6cAAGmnAABppwAAa6cAAGunAABtpwAAbacAAG+nAABvpwAAeqcAAHqnAAB8pwAAfKcAAH+nAAB/pwAAgacAAIGnAACDpwAAg6cAAIWnAACFpwAAh6cAAIenAACMpwAAjKcAAJGnAACRpwAAk6cAAJSnAACXpwAAl6cAAJmnAACZpwAAm6cAAJunAACdpwAAnacAAJ+nAACfpwAAoacAAKGnAACjpwAAo6cAAKWnAAClpwAAp6cAAKenAACppwAAqacAALWnAAC1pwAAt6cAALenAAC5pwAAuacAALunAAC7pwAAvacAAL2nAAC/pwAAv6cAAMGnAADBpwAAw6cAAMOnAADIpwAAyKcAAMqnAADKpwAA0acAANGnAADXpwAA16cAANmnAADZpwAA9qcAAPanAABTqwAAU6sAAHCrAAC/qwAAAPsAAAb7AAAT+wAAF/sAAEH/AABa/wAAKAQBAE8EAQDYBAEA+wQBAJcFAQChBQEAowUBALEFAQCzBQEAuQUBALsFAQC8BQEAwAwBAPIMAQDAGAEA3xgBAGBuAQB/bgEAIukBAEPpAQBBoOQGC8cncwIAAGEAAAB6AAAAtQAAALUAAADfAAAA9gAAAPgAAAD/AAAAAQEAAAEBAAADAQAAAwEAAAUBAAAFAQAABwEAAAcBAAAJAQAACQEAAAsBAAALAQAADQEAAA0BAAAPAQAADwEAABEBAAARAQAAEwEAABMBAAAVAQAAFQEAABcBAAAXAQAAGQEAABkBAAAbAQAAGwEAAB0BAAAdAQAAHwEAAB8BAAAhAQAAIQEAACMBAAAjAQAAJQEAACUBAAAnAQAAJwEAACkBAAApAQAAKwEAACsBAAAtAQAALQEAAC8BAAAvAQAAMQEAADEBAAAzAQAAMwEAADUBAAA1AQAANwEAADcBAAA6AQAAOgEAADwBAAA8AQAAPgEAAD4BAABAAQAAQAEAAEIBAABCAQAARAEAAEQBAABGAQAARgEAAEgBAABJAQAASwEAAEsBAABNAQAATQEAAE8BAABPAQAAUQEAAFEBAABTAQAAUwEAAFUBAABVAQAAVwEAAFcBAABZAQAAWQEAAFsBAABbAQAAXQEAAF0BAABfAQAAXwEAAGEBAABhAQAAYwEAAGMBAABlAQAAZQEAAGcBAABnAQAAaQEAAGkBAABrAQAAawEAAG0BAABtAQAAbwEAAG8BAABxAQAAcQEAAHMBAABzAQAAdQEAAHUBAAB3AQAAdwEAAHoBAAB6AQAAfAEAAHwBAAB+AQAAgAEAAIMBAACDAQAAhQEAAIUBAACIAQAAiAEAAIwBAACMAQAAkgEAAJIBAACVAQAAlQEAAJkBAACaAQAAngEAAJ4BAAChAQAAoQEAAKMBAACjAQAApQEAAKUBAACoAQAAqAEAAK0BAACtAQAAsAEAALABAAC0AQAAtAEAALYBAAC2AQAAuQEAALkBAAC9AQAAvQEAAL8BAAC/AQAAxQEAAMYBAADIAQAAyQEAAMsBAADMAQAAzgEAAM4BAADQAQAA0AEAANIBAADSAQAA1AEAANQBAADWAQAA1gEAANgBAADYAQAA2gEAANoBAADcAQAA3QEAAN8BAADfAQAA4QEAAOEBAADjAQAA4wEAAOUBAADlAQAA5wEAAOcBAADpAQAA6QEAAOsBAADrAQAA7QEAAO0BAADvAQAA8AEAAPIBAADzAQAA9QEAAPUBAAD5AQAA+QEAAPsBAAD7AQAA/QEAAP0BAAD/AQAA/wEAAAECAAABAgAAAwIAAAMCAAAFAgAABQIAAAcCAAAHAgAACQIAAAkCAAALAgAACwIAAA0CAAANAgAADwIAAA8CAAARAgAAEQIAABMCAAATAgAAFQIAABUCAAAXAgAAFwIAABkCAAAZAgAAGwIAABsCAAAdAgAAHQIAAB8CAAAfAgAAIwIAACMCAAAlAgAAJQIAACcCAAAnAgAAKQIAACkCAAArAgAAKwIAAC0CAAAtAgAALwIAAC8CAAAxAgAAMQIAADMCAAAzAgAAPAIAADwCAAA/AgAAQAIAAEICAABCAgAARwIAAEcCAABJAgAASQIAAEsCAABLAgAATQIAAE0CAABPAgAAVAIAAFYCAABXAgAAWQIAAFkCAABbAgAAXAIAAGACAABhAgAAYwIAAGMCAABlAgAAZgIAAGgCAABsAgAAbwIAAG8CAABxAgAAcgIAAHUCAAB1AgAAfQIAAH0CAACAAgAAgAIAAIICAACDAgAAhwIAAIwCAACSAgAAkgIAAJ0CAACeAgAARQMAAEUDAABxAwAAcQMAAHMDAABzAwAAdwMAAHcDAAB7AwAAfQMAAJADAACQAwAArAMAAM4DAADQAwAA0QMAANUDAADXAwAA2QMAANkDAADbAwAA2wMAAN0DAADdAwAA3wMAAN8DAADhAwAA4QMAAOMDAADjAwAA5QMAAOUDAADnAwAA5wMAAOkDAADpAwAA6wMAAOsDAADtAwAA7QMAAO8DAADzAwAA9QMAAPUDAAD4AwAA+AMAAPsDAAD7AwAAMAQAAF8EAABhBAAAYQQAAGMEAABjBAAAZQQAAGUEAABnBAAAZwQAAGkEAABpBAAAawQAAGsEAABtBAAAbQQAAG8EAABvBAAAcQQAAHEEAABzBAAAcwQAAHUEAAB1BAAAdwQAAHcEAAB5BAAAeQQAAHsEAAB7BAAAfQQAAH0EAAB/BAAAfwQAAIEEAACBBAAAiwQAAIsEAACNBAAAjQQAAI8EAACPBAAAkQQAAJEEAACTBAAAkwQAAJUEAACVBAAAlwQAAJcEAACZBAAAmQQAAJsEAACbBAAAnQQAAJ0EAACfBAAAnwQAAKEEAAChBAAAowQAAKMEAAClBAAApQQAAKcEAACnBAAAqQQAAKkEAACrBAAAqwQAAK0EAACtBAAArwQAAK8EAACxBAAAsQQAALMEAACzBAAAtQQAALUEAAC3BAAAtwQAALkEAAC5BAAAuwQAALsEAAC9BAAAvQQAAL8EAAC/BAAAwgQAAMIEAADEBAAAxAQAAMYEAADGBAAAyAQAAMgEAADKBAAAygQAAMwEAADMBAAAzgQAAM8EAADRBAAA0QQAANMEAADTBAAA1QQAANUEAADXBAAA1wQAANkEAADZBAAA2wQAANsEAADdBAAA3QQAAN8EAADfBAAA4QQAAOEEAADjBAAA4wQAAOUEAADlBAAA5wQAAOcEAADpBAAA6QQAAOsEAADrBAAA7QQAAO0EAADvBAAA7wQAAPEEAADxBAAA8wQAAPMEAAD1BAAA9QQAAPcEAAD3BAAA+QQAAPkEAAD7BAAA+wQAAP0EAAD9BAAA/wQAAP8EAAABBQAAAQUAAAMFAAADBQAABQUAAAUFAAAHBQAABwUAAAkFAAAJBQAACwUAAAsFAAANBQAADQUAAA8FAAAPBQAAEQUAABEFAAATBQAAEwUAABUFAAAVBQAAFwUAABcFAAAZBQAAGQUAABsFAAAbBQAAHQUAAB0FAAAfBQAAHwUAACEFAAAhBQAAIwUAACMFAAAlBQAAJQUAACcFAAAnBQAAKQUAACkFAAArBQAAKwUAAC0FAAAtBQAALwUAAC8FAABhBQAAhwUAANAQAAD6EAAA/RAAAP8QAAD4EwAA/RMAAIAcAACIHAAAeR0AAHkdAAB9HQAAfR0AAI4dAACOHQAAAR4AAAEeAAADHgAAAx4AAAUeAAAFHgAABx4AAAceAAAJHgAACR4AAAseAAALHgAADR4AAA0eAAAPHgAADx4AABEeAAARHgAAEx4AABMeAAAVHgAAFR4AABceAAAXHgAAGR4AABkeAAAbHgAAGx4AAB0eAAAdHgAAHx4AAB8eAAAhHgAAIR4AACMeAAAjHgAAJR4AACUeAAAnHgAAJx4AACkeAAApHgAAKx4AACseAAAtHgAALR4AAC8eAAAvHgAAMR4AADEeAAAzHgAAMx4AADUeAAA1HgAANx4AADceAAA5HgAAOR4AADseAAA7HgAAPR4AAD0eAAA/HgAAPx4AAEEeAABBHgAAQx4AAEMeAABFHgAARR4AAEceAABHHgAASR4AAEkeAABLHgAASx4AAE0eAABNHgAATx4AAE8eAABRHgAAUR4AAFMeAABTHgAAVR4AAFUeAABXHgAAVx4AAFkeAABZHgAAWx4AAFseAABdHgAAXR4AAF8eAABfHgAAYR4AAGEeAABjHgAAYx4AAGUeAABlHgAAZx4AAGceAABpHgAAaR4AAGseAABrHgAAbR4AAG0eAABvHgAAbx4AAHEeAABxHgAAcx4AAHMeAAB1HgAAdR4AAHceAAB3HgAAeR4AAHkeAAB7HgAAex4AAH0eAAB9HgAAfx4AAH8eAACBHgAAgR4AAIMeAACDHgAAhR4AAIUeAACHHgAAhx4AAIkeAACJHgAAix4AAIseAACNHgAAjR4AAI8eAACPHgAAkR4AAJEeAACTHgAAkx4AAJUeAACbHgAAoR4AAKEeAACjHgAAox4AAKUeAAClHgAApx4AAKceAACpHgAAqR4AAKseAACrHgAArR4AAK0eAACvHgAArx4AALEeAACxHgAAsx4AALMeAAC1HgAAtR4AALceAAC3HgAAuR4AALkeAAC7HgAAux4AAL0eAAC9HgAAvx4AAL8eAADBHgAAwR4AAMMeAADDHgAAxR4AAMUeAADHHgAAxx4AAMkeAADJHgAAyx4AAMseAADNHgAAzR4AAM8eAADPHgAA0R4AANEeAADTHgAA0x4AANUeAADVHgAA1x4AANceAADZHgAA2R4AANseAADbHgAA3R4AAN0eAADfHgAA3x4AAOEeAADhHgAA4x4AAOMeAADlHgAA5R4AAOceAADnHgAA6R4AAOkeAADrHgAA6x4AAO0eAADtHgAA7x4AAO8eAADxHgAA8R4AAPMeAADzHgAA9R4AAPUeAAD3HgAA9x4AAPkeAAD5HgAA+x4AAPseAAD9HgAA/R4AAP8eAAAHHwAAEB8AABUfAAAgHwAAJx8AADAfAAA3HwAAQB8AAEUfAABQHwAAVx8AAGAfAABnHwAAcB8AAH0fAACAHwAAtB8AALYfAAC3HwAAvB8AALwfAAC+HwAAvh8AAMIfAADEHwAAxh8AAMcfAADMHwAAzB8AANAfAADTHwAA1h8AANcfAADgHwAA5x8AAPIfAAD0HwAA9h8AAPcfAAD8HwAA/B8AAE4hAABOIQAAcCEAAH8hAACEIQAAhCEAANAkAADpJAAAMCwAAF8sAABhLAAAYSwAAGUsAABmLAAAaCwAAGgsAABqLAAAaiwAAGwsAABsLAAAcywAAHMsAAB2LAAAdiwAAIEsAACBLAAAgywAAIMsAACFLAAAhSwAAIcsAACHLAAAiSwAAIksAACLLAAAiywAAI0sAACNLAAAjywAAI8sAACRLAAAkSwAAJMsAACTLAAAlSwAAJUsAACXLAAAlywAAJksAACZLAAAmywAAJssAACdLAAAnSwAAJ8sAACfLAAAoSwAAKEsAACjLAAAoywAAKUsAAClLAAApywAAKcsAACpLAAAqSwAAKssAACrLAAArSwAAK0sAACvLAAArywAALEsAACxLAAAsywAALMsAAC1LAAAtSwAALcsAAC3LAAAuSwAALksAAC7LAAAuywAAL0sAAC9LAAAvywAAL8sAADBLAAAwSwAAMMsAADDLAAAxSwAAMUsAADHLAAAxywAAMksAADJLAAAyywAAMssAADNLAAAzSwAAM8sAADPLAAA0SwAANEsAADTLAAA0ywAANUsAADVLAAA1ywAANcsAADZLAAA2SwAANssAADbLAAA3SwAAN0sAADfLAAA3ywAAOEsAADhLAAA4ywAAOMsAADsLAAA7CwAAO4sAADuLAAA8ywAAPMsAAAALQAAJS0AACctAAAnLQAALS0AAC0tAABBpgAAQaYAAEOmAABDpgAARaYAAEWmAABHpgAAR6YAAEmmAABJpgAAS6YAAEumAABNpgAATaYAAE+mAABPpgAAUaYAAFGmAABTpgAAU6YAAFWmAABVpgAAV6YAAFemAABZpgAAWaYAAFumAABbpgAAXaYAAF2mAABfpgAAX6YAAGGmAABhpgAAY6YAAGOmAABlpgAAZaYAAGemAABnpgAAaaYAAGmmAABrpgAAa6YAAG2mAABtpgAAgaYAAIGmAACDpgAAg6YAAIWmAACFpgAAh6YAAIemAACJpgAAiaYAAIumAACLpgAAjaYAAI2mAACPpgAAj6YAAJGmAACRpgAAk6YAAJOmAACVpgAAlaYAAJemAACXpgAAmaYAAJmmAACbpgAAm6YAACOnAAAjpwAAJacAACWnAAAnpwAAJ6cAACmnAAAppwAAK6cAACunAAAtpwAALacAAC+nAAAvpwAAM6cAADOnAAA1pwAANacAADenAAA3pwAAOacAADmnAAA7pwAAO6cAAD2nAAA9pwAAP6cAAD+nAABBpwAAQacAAEOnAABDpwAARacAAEWnAABHpwAAR6cAAEmnAABJpwAAS6cAAEunAABNpwAATacAAE+nAABPpwAAUacAAFGnAABTpwAAU6cAAFWnAABVpwAAV6cAAFenAABZpwAAWacAAFunAABbpwAAXacAAF2nAABfpwAAX6cAAGGnAABhpwAAY6cAAGOnAABlpwAAZacAAGenAABnpwAAaacAAGmnAABrpwAAa6cAAG2nAABtpwAAb6cAAG+nAAB6pwAAeqcAAHynAAB8pwAAf6cAAH+nAACBpwAAgacAAIOnAACDpwAAhacAAIWnAACHpwAAh6cAAIynAACMpwAAkacAAJGnAACTpwAAlKcAAJenAACXpwAAmacAAJmnAACbpwAAm6cAAJ2nAACdpwAAn6cAAJ+nAAChpwAAoacAAKOnAACjpwAApacAAKWnAACnpwAAp6cAAKmnAACppwAAtacAALWnAAC3pwAAt6cAALmnAAC5pwAAu6cAALunAAC9pwAAvacAAL+nAAC/pwAAwacAAMGnAADDpwAAw6cAAMinAADIpwAAyqcAAMqnAADRpwAA0acAANenAADXpwAA2acAANmnAAD2pwAA9qcAAFOrAABTqwAAcKsAAL+rAAAA+wAABvsAABP7AAAX+wAAQf8AAFr/AAAoBAEATwQBANgEAQD7BAEAlwUBAKEFAQCjBQEAsQUBALMFAQC5BQEAuwUBALwFAQDADAEA8gwBAMAYAQDfGAEAYG4BAH9uAQAi6QEAQ+kBAAAAAAADAAAAoBMAAPUTAAD4EwAA/RMAAHCrAAC/qwAAAQAAALAPAQDLDwEAQfCLBwvTK7oCAAB4AwAAeQMAAIADAACDAwAAiwMAAIsDAACNAwAAjQMAAKIDAACiAwAAMAUAADAFAABXBQAAWAUAAIsFAACMBQAAkAUAAJAFAADIBQAAzwUAAOsFAADuBQAA9QUAAP8FAAAOBwAADgcAAEsHAABMBwAAsgcAAL8HAAD7BwAA/AcAAC4IAAAvCAAAPwgAAD8IAABcCAAAXQgAAF8IAABfCAAA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CQAAggkAAIMJAACFCQAAjAkAAI8JAACQCQAAkwkAAKgJAACqCQAAsAkAALIJAACyCQAAtgkAALkJAAC9CQAAvQkAAL8JAADACQAAxwkAAMgJAADLCQAAzAkAAM4JAADOCQAA3AkAAN0JAADfCQAA4QkAAOYJAAD9CQAAAwoAAAMKAAAFCgAACgoAAA8KAAAQCgAAEwoAACgKAAAqCgAAMAoAADIKAAAzCgAANQoAADYKAAA4CgAAOQoAAD4KAABACgAAWQoAAFwKAABeCgAAXgoAAGYKAABvCgAAcgoAAHQKAAB2CgAAdgoAAIMKAACDCgAAhQoAAI0KAACPCgAAkQoAAJMKAACoCgAAqgoAALAKAACyCgAAswoAALUKAAC5CgAAvQoAAMAKAADJCgAAyQoAAMsKAADMCgAA0AoAANAKAADgCgAA4QoAAOYKAADxCgAA+QoAAPkKAAACCwAAAwsAAAULAAAMCwAADwsAABALAAATCwAAKAsAACoLAAAwCwAAMgsAADMLAAA1CwAAOQsAAD0LAAA9CwAAQAsAAEALAABHCwAASAsAAEsLAABMCwAAXAsAAF0LAABfCwAAYQsAAGYLAAB3CwAAgwsAAIMLAACFCwAAigsAAI4LAACQCwAAkgsAAJULAACZCwAAmgsAAJwLAACcCwAAngsAAJ8LAACjCwAApAsAAKgLAACqCwAArgsAALkLAAC/CwAAvwsAAMELAADCCwAAxgsAAMgLAADKCwAAzAsAANALAADQCwAA5gsAAPoLAAABDAAAAwwAAAUMAAAMDAAADgwAABAMAAASDAAAKAwAACoMAAA5DAAAPQwAAD0MAABBDAAARAwAAFgMAABaDAAAXQwAAF0MAABgDAAAYQwAAGYMAABvDAAAdwwAAIAMAACCDAAAjAwAAI4MAACQDAAAkgwAAKgMAACqDAAAswwAALUMAAC5DAAAvQwAAL4MAADADAAAwQwAAMMMAADEDAAAxwwAAMgMAADKDAAAywwAAN0MAADeDAAA4AwAAOEMAADmDAAA7wwAAPEMAADyDAAAAg0AAAwNAAAODQAAEA0AABINAAA6DQAAPQ0AAD0NAAA/DQAAQA0AAEYNAABIDQAASg0AAEwNAABODQAATw0AAFQNAABWDQAAWA0AAGENAABmDQAAfw0AAIINAACDDQAAhQ0AAJYNAACa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CgAANgoAADgKAAA5CgAAPAoAADwKAAA+CgAAQgoAAEcKAABICgAASwoAAE0KAABRCgAAUQoAAFkKAABcCgAAXgoAAF4KAABmCgAAdQoAAIEKAACDCgAAhQoAAI0KAACPCgAAkQoAAJMKAACoCgAAqgoAALAKAACyCgAAswoAALUKAAC5CgAAvAoAAMUKAADHCgAAyQoAAMsKAADNCgAA0AoAANAKAADgCgAA4woAAOYKAADvCgAA+QoAAP8KAAABCwAAAwsAAAULAAAMCwAADwsAABALAAATCwAAKAsAACoLAAAwCwAAMgsAADMLAAA1CwAAOQsAADwLAABECwAARwsAAEgLAABLCwAATQsAAFULAABXCwAAXAsAAF0LAABfCwAAYwsAAGYLAABvCwAAcQsAAHELAACCCwAAgwsAAIULAACKCwAAjgsAAJALAACSCwAAlQsAAJkLAACaCwAAnAsAAJwLAACeCwAAnwsAAKMLAACkCwAAqAsAAKoLAACuCwAAuQsAAL4LAADCCwAAxgsAAMgLAADKCwAAzQsAANALAADQCwAA1wsAANcLAADmCwAA7wsAAAAMAAAMDAAADgwAABAMAAASDAAAKAwAACoMAAA5DAAAPAwAAEQMAABGDAAASAwAAEoMAABNDAAAVQwAAFYMAABYDAAAWgwAAF0MAABdDAAAYAwAAGMMAABmDAAAbwwAAIAMAACDDAAAhQwAAIwMAACODAAAkAwAAJIMAACoDAAAqgwAALMMAAC1DAAAuQwAALwMAADEDAAAxgwAAMgMAADKDAAAzQwAANUMAADWDAAA3QwAAN4MAADgDAAA4wwAAOYMAADvDAAA8QwAAPIMAAAADQAADA0AAA4NAAAQDQAAEg0AAEQNAABGDQAASA0AAEoNAABODQAAVA0AAFcNAABfDQAAYw0AAGYNAABvDQAAeg0AAH8NAACBDQAAgw0AAIUNAACWDQAAmg0AALENAACzDQAAuw0AAL0NAAC9DQAAwA0AAMYNAADKDQAAyg0AAM8NAADUDQAA1g0AANYNAADYDQAA3w0AAOYNAADvDQAA8g0AAPMNAAABDgAAOg4AAEAOAABODgAAUA4AAFkOAACBDgAAgg4AAIQOAACEDgAAhg4AAIoOAACMDgAAow4AAKUOAAClDgAApw4AAL0OAADADgAAxA4AAMYOAADGDgAAyA4AAM0OAADQDgAA2Q4AANwOAADfDgAAAA8AAAAPAAAYDwAAGQ8AACAPAAApDwAANQ8AADUPAAA3DwAANw8AADkPAAA5DwAAPg8AAEcPAABJDwAAbA8AAHEPAACEDwAAhg8AAJcPAACZDwAAvA8AAMYPAADGDwAAABAAAEkQAABQEAAAnRAAAKAQAADFEAAAxxAAAMcQAADNEAAAzRAAANAQAAD6EAAA/BAAAEgSAABKEgAATRIAAFASAABWEgAAWBIAAFgSAABaEgAAXRIAAGASAACIEgAAihIAAI0SAACQEgAAsBIAALISAAC1EgAAuBIAAL4SAADAEgAAwBIAAMISAADFEgAAyBIAANYSAADYEgAAEBMAABITAAAVEwAAGBMAAFoTAABdEwAAXxMAAGkTAABxEwAAgBMAAI8TAACgEwAA9RMAAPgTAAD9EwAAARQAAGwWAABvFgAAfxYAAIEWAACaFgAAoBYAAOoWAADuFgAA+BYAAAAXAAAVFwAAHxcAADQXAABAFwAAUxcAAGAXAABsFwAAbhcAAHAXAAByFwAAcxcAAIAXAADTFwAA1xcAANcXAADcFwAA3RcAAOAXAADpFwAACxgAAA0YAAAPGAAAGRgAACAYAAB4GAAAgBgAAKoYAACwGAAA9RgAAAAZAAAeGQAAIBkAACsZAAAwGQAAOxkAAEYZAABtGQAAcBkAAHQZAACAGQAAqxkAALAZAADJGQAA0BkAANoZAAAAGgAAGxoAACAaAABeGgAAYBoAAHwaAAB/GgAAiRoAAJAaAACZGgAApxoAAKcaAACwGgAAvRoAAL8aAADOGgAAABsAAEwbAABQGwAAWRsAAGsbAABzGwAAgBsAAPMbAAAAHAAANxwAAEAcAABJHAAATRwAAH0cAACAHAAAiBwAAJAcAAC6HAAAvRwAAL8cAADQHAAA0hwAANQcAAD6HAAAAB0AABUfAAAYHwAAHR8AACAfAABFHwAASB8AAE0fAABQHwAAVx8AAFkfAABZHwAAWx8AAFsfAABdHwAAXR8AAF8fAAB9HwAAgB8AALQfAAC2HwAAvB8AAL4fAAC+HwAAwh8AAMQfAADGHwAAzB8AANAfAADTHwAA1h8AANsfAADgHwAA7B8AAPIfAAD0HwAA9h8AAPwfAAA/IAAAQCAAAFQgAABUIAAAcSAAAHEgAAB/IAAAfyAAAJAgAACcIAAA0CAAANwgAADhIAAA4SAAAOUgAADwIAAAAiEAAAIhAAAHIQAAByEAAAohAAATIQAAFSEAABUhAAAYIQAAHSEAACQhAAAkIQAAJiEAACYhAAAoIQAAKCEAACohAAA5IQAAPCEAAD8hAABFIQAASSEAAE4hAABOIQAAYCEAAIghAAAALAAA5CwAAOssAADzLAAAAC0AACUtAAAnLQAAJy0AAC0tAAAtLQAAMC0AAGctAABvLQAAby0AAH8tAACWLQAAoC0AAKYtAACoLQAAri0AALAtAAC2LQAAuC0AAL4tAADALQAAxi0AAMgtAADOLQAA0C0AANYtAADYLQAA3i0AAOAtAAD/LQAABTAAAAcwAAAhMAAALzAAADEwAAA1MAAAODAAADwwAABBMAAAljAAAJkwAACfMAAAoTAAAPowAAD8MAAA/zAAAAUxAAAvMQAAMTEAAI4xAACgMQAAvzEAAPAxAAD/MQAAADQAAL9NAAAATgAAjKQAANCkAAD9pAAAAKUAAAymAAAQpgAAK6YAAECmAABvpgAAdKYAAH2mAAB/pgAA8aYAABenAAAfpwAAIqcAAIinAACLpwAAyqcAANCnAADRpwAA06cAANOnAADVpwAA2acAAPKnAAAnqAAALKgAACyoAABAqAAAc6gAAICoAADFqAAA0KgAANmoAADgqAAA96gAAPuoAAD7qAAA/agAAC2pAAAwqQAAU6kAAGCpAAB8qQAAgKkAAMCpAADPqQAA2akAAOCpAAD+qQAAAKoAADaqAABAqgAATaoAAFCqAABZqgAAYKoAAHaqAAB6qgAAwqoAANuqAADdqgAA4KoAAO+qAADyqgAA9qoAAAGrAAAGqwAACasAAA6rAAARqwAAFqsAACCrAAAmqwAAKKsAAC6rAAAwqwAAWqsAAFyrAABpqwAAcKsAAOqrAADsqwAA7asAAPCrAAD5qwAAAKwAAKPXAACw1wAAxtcAAMvXAAD71wAAAPkAAG36AABw+gAA2foAAAD7AAAG+wAAE/sAABf7AAAd+wAAKPsAACr7AAA2+wAAOPsAADz7AAA++wAAPvsAAED7AABB+wAAQ/sAAET7AABG+wAAsfsAANP7AAA9/QAAUP0AAI/9AACS/QAAx/0AAPD9AAD7/QAAAP4AAA/+AAAg/gAAL/4AADP+AAA0/gAATf4AAE/+AABw/gAAdP4AAHb+AAD8/gAAEP8AABn/AAAh/wAAOv8AAD//AAA//wAAQf8AAFr/AABm/wAAvv8AAML/AADH/wAAyv8AAM//AADS/wAA1/8AANr/AADc/wAAAAABAAsAAQANAAEAJgABACgAAQA6AAEAPAABAD0AAQA/AAEATQABAFAAAQBdAAEAgAABAPoAAQBAAQEAdAEBAP0BAQD9AQEAgAIBAJwCAQCgAgEA0AIBAOACAQDgAgEAAAMBAB8DAQAtAwEASgMBAFADAQB6AwEAgAMBAJ0DAQCgAwEAwwMBAMgDAQDPAwEA0QMBANUDAQAABAEAnQQBAKAEAQCpBAEAsAQBANMEAQDYBAEA+wQBAAAFAQAnBQEAMAUBAGMFAQBwBQEAegUBAHwFAQCKBQEAjAUBAJIFAQCUBQEAlQUBAJcFAQChBQEAowUBALEFAQCzBQEAuQUBALsFAQC8BQEAAAYBADYHAQBABwEAVQcBAGAHAQBnBwEAgAcBAIUHAQCHBwEAsAcBALIHAQC6BwEAAAgBAAUIAQAICAEACAgBAAoIAQA1CAEANwgBADgIAQA8CAEAPAgBAD8IAQBVCAEAYAgBAHYIAQCACAEAnggBAOAIAQDyCAEA9AgBAPUIAQAACQEAFQkBACAJAQA5CQEAgAkBALcJAQC+CQEAvwkBAAAKAQADCgEABQoBAAYKAQAMCgEAEwoBABUKAQAXCgEAGQoBADUKAQA4CgEAOgoBAD8KAQA/CgEAYAoBAHwKAQCACgEAnAoBAMAKAQDHCgEAyQoBAOYKAQAACwEANQsBAEALAQBVCwEAYAsBAHILAQCACwEAkQsBAAAMAQBIDAEAgAwBALIMAQDADAEA8gwBAAANAQAnDQEAMA0BADkNAQCADgEAqQ4BAKsOAQCsDgEAsA4BALEOAQAADwEAHA8BACcPAQAnDwEAMA8BAFAPAQBwDwEAhQ8BALAPAQDEDwEA4A8BAPYPAQAAEAEARhABAGYQAQB1EAEAfxABALoQAQDCEAEAwhABANAQAQDoEAEA8BABAPkQAQAAEQEANBEBADYRAQA/EQEARBEBAEcRAQBQEQEAcxEBAHYRAQB2EQEAgBEBAMQRAQDJEQEAzBEBAM4RAQDaEQEA3BEBANwRAQAAEgEAERIBABMSAQA3EgEAPhIBAD4SAQCAEgEAhhIBAIgSAQCIEgEAihIBAI0SAQCPEgEAnRIBAJ8SAQCoEgEAsBIBAOoSAQDwEgEA+RIBAAATAQADEwEABRMBAAwTAQAPEwEAEBMBABMTAQAoEwEAKhMBADATAQAyEwEAMxMBADUTAQA5EwEAOxMBAEQTAQBHEwEASBMBAEsTAQBNEwEAUBMBAFATAQBXEwEAVxMBAF0TAQBjEwEAZhMBAGwTAQBwEwEAdBMBAAAUAQBKFAEAUBQBAFkUAQBeFAEAYRQBAIAUAQDFFAEAxxQBAMcUAQDQFAEA2RQBAIAVAQC1FQEAuBUBAMAVAQDYFQEA3RUBAAAWAQBAFgEARBYBAEQWAQBQFgEAWRYBAIAWAQC4FgEAwBYBAMkWAQAAFwEAGhcBAB0XAQArFwEAMBcBADkXAQBAFwEARhcBAAAYAQA6GAEAoBgBAOkYAQD/GAEABhkBAAkZAQAJGQEADBkBABMZAQAVGQEAFhkBABgZAQA1GQEANxkBADgZAQA7GQEAQxkBAFAZAQBZGQEAoBkBAKcZAQCqGQEA1xkBANoZAQDhGQEA4xkBAOQZAQAAGgEAPhoBAEcaAQBHGgEAUBoBAJkaAQCdGgEAnRoBALAaAQD4GgEAABwBAAgcAQAKHAEANhwBADgcAQBAHAEAUBwBAFkcAQByHAEAjxwBAJIcAQCnHAEAqRwBALYcAQAAHQEABh0BAAgdAQAJHQEACx0BADYdAQA6HQEAOh0BADwdAQA9HQEAPx0BAEcdAQBQHQEAWR0BAGAdAQBlHQEAZx0BAGgdAQBqHQEAjh0BAJAdAQCRHQEAkx0BAJgdAQCgHQEAqR0BAOAeAQD2HgEAsB8BALAfAQAAIAEAmSMBAAAkAQBuJAEAgCQBAEMlAQCQLwEA8C8BAAAwAQAuNAEAAEQBAEZGAQAAaAEAOGoBAEBqAQBeagEAYGoBAGlqAQBwagEAvmoBAMBqAQDJagEA0GoBAO1qAQDwagEA9GoBAABrAQA2awEAQGsBAENrAQBQawEAWWsBAGNrAQB3awEAfWsBAI9rAQBAbgEAf24BAABvAQBKbwEAT28BAIdvAQCPbwEAn28BAOBvAQDhbwEA428BAORvAQDwbwEA8W8BAABwAQD3hwEAAIgBANWMAQAAjQEACI0BAPCvAQDzrwEA9a8BAPuvAQD9rwEA/q8BAACwAQAisQEAULEBAFKxAQBksQEAZ7EBAHCxAQD7sgEAALwBAGq8AQBwvAEAfLwBAIC8AQCIvAEAkLwBAJm8AQCdvAEAnrwBAADPAQAtzwEAMM8BAEbPAQBl0QEAadEBAG3RAQBy0QEAe9EBAILRAQCF0QEAi9EBAKrRAQCt0QEAQtIBAETSAQAA1AEAVNQBAFbUAQCc1AEAntQBAJ/UAQCi1AEAotQBAKXUAQCm1AEAqdQBAKzUAQCu1AEAudQBALvUAQC71AEAvdQBAMPUAQDF1AEABdUBAAfVAQAK1QEADdUBABTVAQAW1QEAHNUBAB7VAQA51QEAO9UBAD7VAQBA1QEARNUBAEbVAQBG1QEAStUBAFDVAQBS1QEApdYBAKjWAQDA1gEAwtYBANrWAQDc1gEA+tYBAPzWAQAU1wEAFtcBADTXAQA21wEATtcBAFDXAQBu1wEAcNcBAIjXAQCK1wEAqNcBAKrXAQDC1wEAxNcBAMvXAQDO1wEA/9cBAADaAQA22gEAO9oBAGzaAQB12gEAddoBAITaAQCE2gEAm9oBAJ/aAQCh2gEAr9oBAADfAQAe3wEAAOABAAbgAQAI4AEAGOABABvgAQAh4AEAI+ABACTgAQAm4AEAKuABAADhAQAs4QEAMOEBAD3hAQBA4QEASeEBAE7hAQBO4QEAkOIBAK7iAQDA4gEA+eIBAODnAQDm5wEA6OcBAOvnAQDt5wEA7ucBAPDnAQD+5wEAAOgBAMToAQDQ6AEA1ugBAADpAQBL6QEAUOkBAFnpAQAA7gEAA+4BAAXuAQAf7gEAIe4BACLuAQAk7gEAJO4BACfuAQAn7gEAKe4BADLuAQA07gEAN+4BADnuAQA57gEAO+4BADvuAQBC7gEAQu4BAEfuAQBH7gEASe4BAEnuAQBL7gEAS+4BAE3uAQBP7gEAUe4BAFLuAQBU7gEAVO4BAFfuAQBX7gEAWe4BAFnuAQBb7gEAW+4BAF3uAQBd7gEAX+4BAF/uAQBh7gEAYu4BAGTuAQBk7gEAZ+4BAGruAQBs7gEAcu4BAHTuAQB37gEAee4BAHzuAQB+7gEAfu4BAIDuAQCJ7gEAi+4BAJvuAQCh7gEAo+4BAKXuAQCp7gEAq+4BALvuAQDw+wEA+fsBAAAAAgDfpgIAAKcCADi3AgBAtwIAHbgCACC4AgChzgIAsM4CAODrAgAA+AIAHfoCAAAAAwBKEwMAAAEOAO8BDgBBsP0IC8MoiAIAAEEAAABaAAAAYQAAAHoAAACqAAAAqgAAALUAAAC1AAAAugAAALoAAADAAAAA1gAAANgAAAD2AAAA+AAAAMECAADGAgAA0QIAAOACAADkAgAA7AIAAOwCAADuAgAA7gIAAHADAAB0AwAAdgMAAHcDAAB6AwAAfQMAAH8DAAB/AwAAhgMAAIYDAACIAwAAigMAAIwDAACMAwAAjgMAAKEDAACjAwAA9QMAAPcDAACBBAAAigQAAC8FAAAxBQAAVgUAAFkFAABZBQAAYAUAAIgFAADQBQAA6gUAAO8FAADyBQAAIAYAAEoGAABuBgAAbwYAAHEGAADTBgAA1QYAANUGAADlBgAA5gYAAO4GAADvBgAA+gYAAPwGAAD/BgAA/wYAABAHAAAQBwAAEgcAAC8HAABNBwAApQcAALEHAACxBwAAygcAAOoHAAD0BwAA9QcAAPoHAAD6BwAAAAgAABUIAAAaCAAAGggAACQIAAAkCAAAKAgAACgIAABACAAAWAgAAGAIAABqCAAAcAgAAIcIAACJCAAAjggAAKAIAADJCAAABAkAADkJAAA9CQAAPQkAAFAJAABQCQAAWAkAAGEJAABxCQAAgAkAAIUJAACMCQAAjwkAAJAJAACTCQAAqAkAAKoJAACwCQAAsgkAALIJAAC2CQAAuQkAAL0JAAC9CQAAzgkAAM4JAADcCQAA3QkAAN8JAADhCQAA8AkAAPEJAAD8CQAA/AkAAAUKAAAKCgAADwoAABAKAAATCgAAKAoAACoKAAAwCgAAMgoAADMKAAA1CgAANgoAADgKAAA5CgAAWQoAAFwKAABeCgAAXgoAAHIKAAB0CgAAhQoAAI0KAACPCgAAkQoAAJMKAACoCgAAqgoAALAKAACyCgAAswoAALUKAAC5CgAAvQoAAL0KAADQCgAA0AoAAOAKAADhCgAA+QoAAPkKAAAFCwAADAsAAA8LAAAQCwAAEwsAACgLAAAqCwAAMAsAADILAAAzCwAANQsAADkLAAA9CwAAPQsAAFwLAABdCwAAXwsAAGELAABxCwAAcQsAAIMLAACDCwAAhQsAAIoLAACOCwAAkAsAAJILAACVCwAAmQsAAJoLAACcCwAAnAsAAJ4LAACfCwAAowsAAKQLAACoCwAAqgsAAK4LAAC5CwAA0AsAANALAAAFDAAADAwAAA4MAAAQDAAAEgwAACgMAAAqDAAAOQwAAD0MAAA9DAAAWAwAAFoMAABdDAAAXQwAAGAMAABhDAAAgAwAAIAMAACFDAAAjAwAAI4MAACQDAAAkgwAAKgMAACqDAAAswwAALUMAAC5DAAAvQwAAL0MAADdDAAA3gwAAOAMAADhDAAA8QwAAPIMAAAEDQAADA0AAA4NAAAQDQAAEg0AADoNAAA9DQAAPQ0AAE4NAABODQAAVA0AAFYNAABfDQAAYQ0AAHoNAAB/DQAAhQ0AAJYNAACaDQAAsQ0AALMNAAC7DQAAvQ0AAL0NAADADQAAxg0AAAEOAAAwDgAAMg4AADMOAABADgAARg4AAIEOAACCDgAAhA4AAIQOAACGDgAAig4AAIwOAACjDgAApQ4AAKUOAACnDgAAsA4AALIOAACzDgAAvQ4AAL0OAADADgAAxA4AAMYOAADGDgAA3A4AAN8OAAAADwAAAA8AAEAPAABHDwAASQ8AAGwPAACIDwAAjA8AAAAQAAAqEAAAPxAAAD8QAABQEAAAVRAAAFoQAABdEAAAYRAAAGEQAABlEAAAZhAAAG4QAABwEAAAdRAAAIEQAACOEAAAjhAAAKAQAADFEAAAxxAAAMcQAADNEAAAzRAAANAQAAD6EAAA/BAAAEgSAABKEgAATRIAAFASAABWEgAAWBIAAFgSAABaEgAAXRIAAGASAACIEgAAihIAAI0SAACQEgAAsBIAALISAAC1EgAAuBIAAL4SAADAEgAAwBIAAMISAADFEgAAyBIAANYSAADYEgAAEBMAABITAAAVEwAAGBMAAFoTAACAEwAAjxMAAKATAAD1EwAA+BMAAP0TAAABFAAAbBYAAG8WAAB/FgAAgRYAAJoWAACgFgAA6hYAAO4WAAD4FgAAABcAABEXAAAfFwAAMRcAAEAXAABRFwAAYBcAAGwXAABuFwAAcBcAAIAXAACzFwAA1xcAANcXAADcFwAA3BcAACAYAAB4GAAAgBgAAKgYAACqGAAAqhgAALAYAAD1GAAAABkAAB4ZAABQGQAAbRkAAHAZAAB0GQAAgBkAAKsZAACwGQAAyRkAAAAaAAAWGgAAIBoAAFQaAACnGgAApxoAAAUbAAAzGwAARRsAAEwbAACDGwAAoBsAAK4bAACvGwAAuhsAAOUbAAAAHAAAIxwAAE0cAABPHAAAWhwAAH0cAACAHAAAiBwAAJAcAAC6HAAAvRwAAL8cAADpHAAA7BwAAO4cAADzHAAA9RwAAPYcAAD6HAAA+hwAAAAdAAC/HQAAAB4AABUfAAAYHwAAHR8AACAfAABFHwAASB8AAE0fAABQHwAAVx8AAFkfAABZHwAAWx8AAFsfAABdHwAAXR8AAF8fAAB9HwAAgB8AALQfAAC2HwAAvB8AAL4fAAC+HwAAwh8AAMQfAADGHwAAzB8AANAfAADTHwAA1h8AANsfAADgHwAA7B8AAPIfAAD0HwAA9h8AAPwfAABxIAAAcSAAAH8gAAB/IAAAkCAAAJwgAAACIQAAAiEAAAchAAAHIQAACiEAABMhAAAVIQAAFSEAABghAAAdIQAAJCEAACQhAAAmIQAAJiEAACghAAAoIQAAKiEAADkhAAA8IQAAPyEAAEUhAABJIQAATiEAAE4hAABgIQAAiCEAAAAsAADkLAAA6ywAAO4sAADyLAAA8ywAAAAtAAAlLQAAJy0AACctAAAtLQAALS0AADAtAABnLQAAby0AAG8tAACALQAAli0AAKAtAACmLQAAqC0AAK4tAACwLQAAti0AALgtAAC+LQAAwC0AAMYtAADILQAAzi0AANAtAADWLQAA2C0AAN4tAAAFMAAABzAAACEwAAApMAAAMTAAADUwAAA4MAAAPDAAAEEwAACWMAAAmzAAAJ8wAAChMAAA+jAAAPwwAAD/MAAABTEAAC8xAAAxMQAAjjEAAKAxAAC/MQAA8DEAAP8xAAAANAAAv00AAABOAACMpAAA0KQAAP2kAAAApQAADKYAABCmAAAfpgAAKqYAACumAABApgAAbqYAAH+mAACdpgAAoKYAAO+mAAAXpwAAH6cAACKnAACIpwAAi6cAAMqnAADQpwAA0acAANOnAADTpwAA1acAANmnAADypwAAAagAAAOoAAAFqAAAB6gAAAqoAAAMqAAAIqgAAECoAABzqAAAgqgAALOoAADyqAAA96gAAPuoAAD7qAAA/agAAP6oAAAKqQAAJakAADCpAABGqQAAYKkAAHypAACEqQAAsqkAAM+pAADPqQAA4KkAAOSpAADmqQAA76kAAPqpAAD+qQAAAKoAACiqAABAqgAAQqoAAESqAABLqgAAYKoAAHaqAAB6qgAAeqoAAH6qAACvqgAAsaoAALGqAAC1qgAAtqoAALmqAAC9qgAAwKoAAMCqAADCqgAAwqoAANuqAADdqgAA4KoAAOqqAADyqgAA9KoAAAGrAAAGqwAACasAAA6rAAARqwAAFqsAACCrAAAmqwAAKKsAAC6rAAAwqwAAWqsAAFyrAABpqwAAcKsAAOKrAAAArAAAo9cAALDXAADG1wAAy9cAAPvXAAAA+QAAbfoAAHD6AADZ+gAAAPsAAAb7AAAT+wAAF/sAAB37AAAd+wAAH/sAACj7AAAq+wAANvsAADj7AAA8+wAAPvsAAD77AABA+wAAQfsAAEP7AABE+wAARvsAALH7AADT+wAAPf0AAFD9AACP/QAAkv0AAMf9AADw/QAA+/0AAHD+AAB0/gAAdv4AAPz+AAAh/wAAOv8AAEH/AABa/wAAZv8AAL7/AADC/wAAx/8AAMr/AADP/wAA0v8AANf/AADa/wAA3P8AAAAAAQALAAEADQABACYAAQAoAAEAOgABADwAAQA9AAEAPwABAE0AAQBQAAEAXQABAIAAAQD6AAEAQAEBAHQBAQCAAgEAnAIBAKACAQDQAgEAAAMBAB8DAQAtAwEASgMBAFADAQB1AwEAgAMBAJ0DAQCgAwEAwwMBAMgDAQDPAwEA0QMBANUDAQAABAEAnQQBALAEAQDTBAEA2AQBAPsEAQAABQEAJwUBADAFAQBjBQEAcAUBAHoFAQB8BQEAigUBAIwFAQCSBQEAlAUBAJUFAQCXBQEAoQUBAKMFAQCxBQEAswUBALkFAQC7BQEAvAUBAAAGAQA2BwEAQAcBAFUHAQBgBwEAZwcBAIAHAQCFBwEAhwcBALAHAQCyBwEAugcBAAAIAQAFCAEACAgBAAgIAQAKCAEANQgBADcIAQA4CAEAPAgBADwIAQA/CAEAVQgBAGAIAQB2CAEAgAgBAJ4IAQDgCAEA8ggBAPQIAQD1CAEAAAkBABUJAQAgCQEAOQkBAIAJAQC3CQEAvgkBAL8JAQAACgEAAAoBABAKAQATCgEAFQoBABcKAQAZCgEANQoBAGAKAQB8CgEAgAoBAJwKAQDACgEAxwoBAMkKAQDkCgEAAAsBADULAQBACwEAVQsBAGALAQByCwEAgAsBAJELAQAADAEASAwBAIAMAQCyDAEAwAwBAPIMAQAADQEAIw0BAIAOAQCpDgEAsA4BALEOAQAADwEAHA8BACcPAQAnDwEAMA8BAEUPAQBwDwEAgQ8BALAPAQDEDwEA4A8BAPYPAQADEAEANxABAHEQAQByEAEAdRABAHUQAQCDEAEArxABANAQAQDoEAEAAxEBACYRAQBEEQEARBEBAEcRAQBHEQEAUBEBAHIRAQB2EQEAdhEBAIMRAQCyEQEAwREBAMQRAQDaEQEA2hEBANwRAQDcEQEAABIBABESAQATEgEAKxIBAIASAQCGEgEAiBIBAIgSAQCKEgEAjRIBAI8SAQCdEgEAnxIBAKgSAQCwEgEA3hIBAAUTAQAMEwEADxMBABATAQATEwEAKBMBACoTAQAwEwEAMhMBADMTAQA1EwEAORMBAD0TAQA9EwEAUBMBAFATAQBdEwEAYRMBAAAUAQA0FAEARxQBAEoUAQBfFAEAYRQBAIAUAQCvFAEAxBQBAMUUAQDHFAEAxxQBAIAVAQCuFQEA2BUBANsVAQAAFgEALxYBAEQWAQBEFgEAgBYBAKoWAQC4FgEAuBYBAAAXAQAaFwEAQBcBAEYXAQAAGAEAKxgBAKAYAQDfGAEA/xgBAAYZAQAJGQEACRkBAAwZAQATGQEAFRkBABYZAQAYGQEALxkBAD8ZAQA/GQEAQRkBAEEZAQCgGQEApxkBAKoZAQDQGQEA4RkBAOEZAQDjGQEA4xkBAAAaAQAAGgEACxoBADIaAQA6GgEAOhoBAFAaAQBQGgEAXBoBAIkaAQCdGgEAnRoBALAaAQD4GgEAABwBAAgcAQAKHAEALhwBAEAcAQBAHAEAchwBAI8cAQAAHQEABh0BAAgdAQAJHQEACx0BADAdAQBGHQEARh0BAGAdAQBlHQEAZx0BAGgdAQBqHQEAiR0BAJgdAQCYHQEA4B4BAPIeAQCwHwEAsB8BAAAgAQCZIwEAACQBAG4kAQCAJAEAQyUBAJAvAQDwLwEAADABAC40AQAARAEARkYBAABoAQA4agEAQGoBAF5qAQBwagEAvmoBANBqAQDtagEAAGsBAC9rAQBAawEAQ2sBAGNrAQB3awEAfWsBAI9rAQBAbgEAf24BAABvAQBKbwEAUG8BAFBvAQCTbwEAn28BAOBvAQDhbwEA428BAONvAQAAcAEA94cBAACIAQDVjAEAAI0BAAiNAQDwrwEA868BAPWvAQD7rwEA/a8BAP6vAQAAsAEAIrEBAFCxAQBSsQEAZLEBAGexAQBwsQEA+7IBAAC8AQBqvAEAcLwBAHy8AQCAvAEAiLwBAJC8AQCZvAEAANQBAFTUAQBW1AEAnNQBAJ7UAQCf1AEAotQBAKLUAQCl1AEAptQBAKnUAQCs1AEArtQBALnUAQC71AEAu9QBAL3UAQDD1AEAxdQBAAXVAQAH1QEACtUBAA3VAQAU1QEAFtUBABzVAQAe1QEAOdUBADvVAQA+1QEAQNUBAETVAQBG1QEARtUBAErVAQBQ1QEAUtUBAKXWAQCo1gEAwNYBAMLWAQDa1gEA3NYBAPrWAQD81gEAFNcBABbXAQA01wEANtcBAE7XAQBQ1wEAbtcBAHDXAQCI1wEAitcBAKjXAQCq1wEAwtcBAMTXAQDL1wEAAN8BAB7fAQAA4QEALOEBADfhAQA94QEATuEBAE7hAQCQ4gEAreIBAMDiAQDr4gEA4OcBAObnAQDo5wEA6+cBAO3nAQDu5wEA8OcBAP7nAQAA6AEAxOgBAADpAQBD6QEAS+kBAEvpAQAA7gEAA+4BAAXuAQAf7gEAIe4BACLuAQAk7gEAJO4BACfuAQAn7gEAKe4BADLuAQA07gEAN+4BADnuAQA57gEAO+4BADvuAQBC7gEAQu4BAEfuAQBH7gEASe4BAEnuAQBL7gEAS+4BAE3uAQBP7gEAUe4BAFLuAQBU7gEAVO4BAFfuAQBX7gEAWe4BAFnuAQBb7gEAW+4BAF3uAQBd7gEAX+4BAF/uAQBh7gEAYu4BAGTuAQBk7gEAZ+4BAGruAQBs7gEAcu4BAHTuAQB37gEAee4BAHzuAQB+7gEAfu4BAIDuAQCJ7gEAi+4BAJvuAQCh7gEAo+4BAKXuAQCp7gEAq+4BALvuAQAAAAIA36YCAACnAgA4twIAQLcCAB24AgAguAIAoc4CALDOAgDg6wIAAPgCAB36AgAAAAMAShMDAEGApgkLswETAAAABjAAAAcwAAAhMAAAKTAAADgwAAA6MAAAADQAAL9NAAAATgAA/58AAAD5AABt+gAAcPoAANn6AADkbwEA5G8BAABwAQD3hwEAAIgBANWMAQAAjQEACI0BAHCxAQD7sgEAAAACAN+mAgAApwIAOLcCAEC3AgAduAIAILgCAKHOAgCwzgIA4OsCAAD4AgAd+gIAAAADAEoTAwAAAAAAAgAAAEAIAQBVCAEAVwgBAF8IAQBBwKcJC4MCHQAAAAADAABvAwAAhQQAAIYEAABLBgAAVQYAAHAGAABwBgAAUQkAAFQJAACwGgAAzhoAANAcAADSHAAA1BwAAOAcAADiHAAA6BwAAO0cAADtHAAA9BwAAPQcAAD4HAAA+RwAAMAdAAD/HQAADCAAAA0gAADQIAAA8CAAACowAAAtMAAAmTAAAJowAAAA/gAAD/4AACD+AAAt/gAA/QEBAP0BAQDgAgEA4AIBADsTAQA7EwEAAM8BAC3PAQAwzwEARs8BAGfRAQBp0QEAe9EBAILRAQCF0QEAi9EBAKrRAQCt0QEAAAEOAO8BDgAAAAAAAgAAAGALAQByCwEAeAsBAH8LAQBB0KkJCxMCAAAAQAsBAFULAQBYCwEAXwsBAEHwqQkLJgMAAACAqQAAzakAANCpAADZqQAA3qkAAN+pAAABAAAADCAAAA0gAEGgqgkLEwIAAACAEAEAwhABAM0QAQDNEAEAQcCqCQuiAg0AAACADAAAjAwAAI4MAACQDAAAkgwAAKgMAACqDAAAswwAALUMAAC5DAAAvAwAAMQMAADGDAAAyAwAAMoMAADNDAAA1QwAANYMAADdDAAA3gwAAOAMAADjDAAA5gwAAO8MAADxDAAA8gwAAAAAAAANAAAAoTAAAPowAAD9MAAA/zAAAPAxAAD/MQAA0DIAAP4yAAAAMwAAVzMAAGb/AABv/wAAcf8AAJ3/AADwrwEA868BAPWvAQD7rwEA/a8BAP6vAQAAsAEAALABACCxAQAisQEAZLEBAGexAQAAAAAAAwAAAKGlAAD2pQAApqoAAK+qAACxqgAA3aoAAAAAAAAEAAAApgAAAK8AAACxAAAA3QAAAECDAAB+gwAAgIMAAJaDAEHwrAkLEgIAAAAAqQAALakAAC+pAAAvqQBBkK0JC0MIAAAAAAoBAAMKAQAFCgEABgoBAAwKAQATCgEAFQoBABcKAQAZCgEANQoBADgKAQA6CgEAPwoBAEgKAQBQCgEAWAoBAEHgrQkLEwIAAADkbwEA5G8BAACLAQDVjAEAQYCuCQsiBAAAAIAXAADdFwAA4BcAAOkXAADwFwAA+RcAAOAZAAD/GQBBsK4JCxMCAAAAABIBABESAQATEgEAPhIBAEHQrgkLEwIAAACwEgEA6hIBAPASAQD5EgEAQfCuCQvDKIgCAABBAAAAWgAAAGEAAAB6AAAAqgAAAKoAAAC1AAAAtQAAALoAAAC6AAAAwAAAANYAAADYAAAA9gAAAPgAAADBAgAAxgIAANECAADgAgAA5AIAAOwCAADsAgAA7gIAAO4CAABwAwAAdAMAAHYDAAB3AwAAegMAAH0DAAB/AwAAfwMAAIYDAACGAwAAiAMAAIoDAACMAwAAjAMAAI4DAAChAwAAowMAAPUDAAD3AwAAgQQAAIoEAAAvBQAAMQUAAFYFAABZBQAAWQUAAGAFAACIBQAA0AUAAOoFAADvBQAA8gUAACAGAABKBgAAbgYAAG8GAABxBgAA0wYAANUGAADVBgAA5QYAAOYGAADuBgAA7wYAAPoGAAD8BgAA/wYAAP8GAAAQBwAAEAcAABIHAAAvBwAATQcAAKUHAACxBwAAsQcAAMoHAADqBwAA9AcAAPUHAAD6BwAA+gcAAAAIAAAVCAAAGggAABoIAAAkCAAAJAgAACgIAAAoCAAAQAgAAFgIAABgCAAAaggAAHAIAACHCAAAiQgAAI4IAACgCAAAyQgAAAQJAAA5CQAAPQkAAD0JAABQCQAAUAkAAFgJAABhCQAAcQkAAIAJAACFCQAAjAkAAI8JAACQCQAAkwkAAKgJAACqCQAAsAkAALIJAACyCQAAtgkAALkJAAC9CQAAvQkAAM4JAADOCQAA3AkAAN0JAADfCQAA4QkAAPAJAADxCQAA/AkAAPwJAAAFCgAACgoAAA8KAAAQCgAAEwoAACgKAAAqCgAAMAoAADIKAAAzCgAANQoAADYKAAA4CgAAOQoAAFkKAABcCgAAXgoAAF4KAAByCgAAdAoAAIUKAACNCgAAjwoAAJEKAACTCgAAqAoAAKoKAACwCgAAsgoAALMKAAC1CgAAuQoAAL0KAAC9CgAA0AoAANAKAADgCgAA4QoAAPkKAAD5CgAABQsAAAwLAAAPCwAAEAsAABMLAAAoCwAAKgsAADALAAAyCwAAMwsAADULAAA5CwAAPQsAAD0LAABcCwAAXQsAAF8LAABhCwAAcQsAAHELAACDCwAAgwsAAIULAACKCwAAjgsAAJALAACSCwAAlQsAAJkLAACaCwAAnAsAAJwLAACeCwAAnwsAAKMLAACkCwAAqAsAAKoLAACuCwAAuQsAANALAADQCwAABQwAAAwMAAAODAAAEAwAABIMAAAoDAAAKgwAADkMAAA9DAAAPQwAAFgMAABaDAAAXQwAAF0MAABgDAAAYQwAAIAMAACADAAAhQwAAIwMAACODAAAkAwAAJIMAACoDAAAqgwAALMMAAC1DAAAuQwAAL0MAAC9DAAA3QwAAN4MAADgDAAA4QwAAPEMAADyDAAABA0AAAwNAAAODQAAEA0AABINAAA6DQAAPQ0AAD0NAABODQAATg0AAFQNAABWDQAAXw0AAGENAAB6DQAAfw0AAIUNAACWDQAAmg0AALENAACzDQAAuw0AAL0NAAC9DQAAwA0AAMYNAAABDgAAMA4AADIOAAAzDgAAQA4AAEYOAACBDgAAgg4AAIQOAACEDgAAhg4AAIoOAACMDgAAow4AAKUOAAClDgAApw4AALAOAACyDgAAsw4AAL0OAAC9DgAAwA4AAMQOAADGDgAAxg4AANwOAADfDgAAAA8AAAAPAABADwAARw8AAEkPAABsDwAAiA8AAIwPAAAAEAAAKhAAAD8QAAA/EAAAUBAAAFUQAABaEAAAXRAAAGEQAABhEAAAZRAAAGYQAABuEAAAcBAAAHUQAACBEAAAjhAAAI4QAACgEAAAxRAAAMcQAADHEAAAzRAAAM0QAADQEAAA+hAAAPwQAABIEgAAShIAAE0SAABQEgAAVhIAAFgSAABYEgAAWhIAAF0SAABgEgAAiBIAAIoSAACNEgAAkBIAALASAACyEgAAtRIAALgSAAC+EgAAwBIAAMASAADCEgAAxRIAAMgSAADWEgAA2BIAABATAAASEwAAFRMAABgTAABaEwAAgBMAAI8TAACgEwAA9RMAAPgTAAD9EwAAARQAAGwWAABvFgAAfxYAAIEWAACaFgAAoBYAAOoWAADxFgAA+BYAAAAXAAARFwAAHxcAADEXAABAFwAAURcAAGAXAABsFwAAbhcAAHAXAACAFwAAsxcAANcXAADXFwAA3BcAANwXAAAgGAAAeBgAAIAYAACEGAAAhxgAAKgYAACqGAAAqhgAALAYAAD1GAAAABkAAB4ZAABQGQAAbRkAAHAZAAB0GQAAgBkAAKsZAACwGQAAyRkAAAAaAAAWGgAAIBoAAFQaAACnGgAApxoAAAUbAAAzGwAARRsAAEwbAACDGwAAoBsAAK4bAACvGwAAuhsAAOUbAAAAHAAAIxwAAE0cAABPHAAAWhwAAH0cAACAHAAAiBwAAJAcAAC6HAAAvRwAAL8cAADpHAAA7BwAAO4cAADzHAAA9RwAAPYcAAD6HAAA+hwAAAAdAAC/HQAAAB4AABUfAAAYHwAAHR8AACAfAABFHwAASB8AAE0fAABQHwAAVx8AAFkfAABZHwAAWx8AAFsfAABdHwAAXR8AAF8fAAB9HwAAgB8AALQfAAC2HwAAvB8AAL4fAAC+HwAAwh8AAMQfAADGHwAAzB8AANAfAADTHwAA1h8AANsfAADgHwAA7B8AAPIfAAD0HwAA9h8AAPwfAABxIAAAcSAAAH8gAAB/IAAAkCAAAJwgAAACIQAAAiEAAAchAAAHIQAACiEAABMhAAAVIQAAFSEAABkhAAAdIQAAJCEAACQhAAAmIQAAJiEAACghAAAoIQAAKiEAAC0hAAAvIQAAOSEAADwhAAA/IQAARSEAAEkhAABOIQAATiEAAIMhAACEIQAAACwAAOQsAADrLAAA7iwAAPIsAADzLAAAAC0AACUtAAAnLQAAJy0AAC0tAAAtLQAAMC0AAGctAABvLQAAby0AAIAtAACWLQAAoC0AAKYtAACoLQAAri0AALAtAAC2LQAAuC0AAL4tAADALQAAxi0AAMgtAADOLQAA0C0AANYtAADYLQAA3i0AAC8uAAAvLgAABTAAAAYwAAAxMAAANTAAADswAAA8MAAAQTAAAJYwAACdMAAAnzAAAKEwAAD6MAAA/DAAAP8wAAAFMQAALzEAADExAACOMQAAoDEAAL8xAADwMQAA/zEAAAA0AAC/TQAAAE4AAIykAADQpAAA/aQAAAClAAAMpgAAEKYAAB+mAAAqpgAAK6YAAECmAABupgAAf6YAAJ2mAACgpgAA5aYAABenAAAfpwAAIqcAAIinAACLpwAAyqcAANCnAADRpwAA06cAANOnAADVpwAA2acAAPKnAAABqAAAA6gAAAWoAAAHqAAACqgAAAyoAAAiqAAAQKgAAHOoAACCqAAAs6gAAPKoAAD3qAAA+6gAAPuoAAD9qAAA/qgAAAqpAAAlqQAAMKkAAEapAABgqQAAfKkAAISpAACyqQAAz6kAAM+pAADgqQAA5KkAAOapAADvqQAA+qkAAP6pAAAAqgAAKKoAAECqAABCqgAARKoAAEuqAABgqgAAdqoAAHqqAAB6qgAAfqoAAK+qAACxqgAAsaoAALWqAAC2qgAAuaoAAL2qAADAqgAAwKoAAMKqAADCqgAA26oAAN2qAADgqgAA6qoAAPKqAAD0qgAAAasAAAarAAAJqwAADqsAABGrAAAWqwAAIKsAACarAAAoqwAALqsAADCrAABaqwAAXKsAAGmrAABwqwAA4qsAAACsAACj1wAAsNcAAMbXAADL1wAA+9cAAAD5AABt+gAAcPoAANn6AAAA+wAABvsAABP7AAAX+wAAHfsAAB37AAAf+wAAKPsAACr7AAA2+wAAOPsAADz7AAA++wAAPvsAAED7AABB+wAAQ/sAAET7AABG+wAAsfsAANP7AAA9/QAAUP0AAI/9AACS/QAAx/0AAPD9AAD7/QAAcP4AAHT+AAB2/gAA/P4AACH/AAA6/wAAQf8AAFr/AABm/wAAvv8AAML/AADH/wAAyv8AAM//AADS/wAA1/8AANr/AADc/wAAAAABAAsAAQANAAEAJgABACgAAQA6AAEAPAABAD0AAQA/AAEATQABAFAAAQBdAAEAgAABAPoAAQCAAgEAnAIBAKACAQDQAgEAAAMBAB8DAQAtAwEAQAMBAEIDAQBJAwEAUAMBAHUDAQCAAwEAnQMBAKADAQDDAwEAyAMBAM8DAQAABAEAnQQBALAEAQDTBAEA2AQBAPsEAQAABQEAJwUBADAFAQBjBQEAcAUBAHoFAQB8BQEAigUBAIwFAQCSBQEAlAUBAJUFAQCXBQEAoQUBAKMFAQCxBQEAswUBALkFAQC7BQEAvAUBAAAGAQA2BwEAQAcBAFUHAQBgBwEAZwcBAIAHAQCFBwEAhwcBALAHAQCyBwEAugcBAAAIAQAFCAEACAgBAAgIAQAKCAEANQgBADcIAQA4CAEAPAgBADwIAQA/CAEAVQgBAGAIAQB2CAEAgAgBAJ4IAQDgCAEA8ggBAPQIAQD1CAEAAAkBABUJAQAgCQEAOQkBAIAJAQC3CQEAvgkBAL8JAQAACgEAAAoBABAKAQATCgEAFQoBABcKAQAZCgEANQoBAGAKAQB8CgEAgAoBAJwKAQDACgEAxwoBAMkKAQDkCgEAAAsBADULAQBACwEAVQsBAGALAQByCwEAgAsBAJELAQAADAEASAwBAIAMAQCyDAEAwAwBAPIMAQAADQEAIw0BAIAOAQCpDgEAsA4BALEOAQAADwEAHA8BACcPAQAnDwEAMA8BAEUPAQBwDwEAgQ8BALAPAQDEDwEA4A8BAPYPAQADEAEANxABAHEQAQByEAEAdRABAHUQAQCDEAEArxABANAQAQDoEAEAAxEBACYRAQBEEQEARBEBAEcRAQBHEQEAUBEBAHIRAQB2EQEAdhEBAIMRAQCyEQEAwREBAMQRAQDaEQEA2hEBANwRAQDcEQEAABIBABESAQATEgEAKxIBAIASAQCGEgEAiBIBAIgSAQCKEgEAjRIBAI8SAQCdEgEAnxIBAKgSAQCwEgEA3hIBAAUTAQAMEwEADxMBABATAQATEwEAKBMBACoTAQAwEwEAMhMBADMTAQA1EwEAORMBAD0TAQA9EwEAUBMBAFATAQBdEwEAYRMBAAAUAQA0FAEARxQBAEoUAQBfFAEAYRQBAIAUAQCvFAEAxBQBAMUUAQDHFAEAxxQBAIAVAQCuFQEA2BUBANsVAQAAFgEALxYBAEQWAQBEFgEAgBYBAKoWAQC4FgEAuBYBAAAXAQAaFwEAQBcBAEYXAQAAGAEAKxgBAKAYAQDfGAEA/xgBAAYZAQAJGQEACRkBAAwZAQATGQEAFRkBABYZAQAYGQEALxkBAD8ZAQA/GQEAQRkBAEEZAQCgGQEApxkBAKoZAQDQGQEA4RkBAOEZAQDjGQEA4xkBAAAaAQAAGgEACxoBADIaAQA6GgEAOhoBAFAaAQBQGgEAXBoBAIkaAQCdGgEAnRoBALAaAQD4GgEAABwBAAgcAQAKHAEALhwBAEAcAQBAHAEAchwBAI8cAQAAHQEABh0BAAgdAQAJHQEACx0BADAdAQBGHQEARh0BAGAdAQBlHQEAZx0BAGgdAQBqHQEAiR0BAJgdAQCYHQEA4B4BAPIeAQCwHwEAsB8BAAAgAQCZIwEAgCQBAEMlAQCQLwEA8C8BAAAwAQAuNAEAAEQBAEZGAQAAaAEAOGoBAEBqAQBeagEAcGoBAL5qAQDQagEA7WoBAABrAQAvawEAQGsBAENrAQBjawEAd2sBAH1rAQCPawEAQG4BAH9uAQAAbwEASm8BAFBvAQBQbwEAk28BAJ9vAQDgbwEA4W8BAONvAQDjbwEAAHABAPeHAQAAiAEA1YwBAACNAQAIjQEA8K8BAPOvAQD1rwEA+68BAP2vAQD+rwEAALABACKxAQBQsQEAUrEBAGSxAQBnsQEAcLEBAPuyAQAAvAEAarwBAHC8AQB8vAEAgLwBAIi8AQCQvAEAmbwBAADUAQBU1AEAVtQBAJzUAQCe1AEAn9QBAKLUAQCi1AEApdQBAKbUAQCp1AEArNQBAK7UAQC51AEAu9QBALvUAQC91AEAw9QBAMXUAQAF1QEAB9UBAArVAQAN1QEAFNUBABbVAQAc1QEAHtUBADnVAQA71QEAPtUBAEDVAQBE1QEARtUBAEbVAQBK1QEAUNUBAFLVAQCl1gEAqNYBAMDWAQDC1gEA2tYBANzWAQD61gEA/NYBABTXAQAW1wEANNcBADbXAQBO1wEAUNcBAG7XAQBw1wEAiNcBAIrXAQCo1wEAqtcBAMLXAQDE1wEAy9cBAADfAQAe3wEAAOEBACzhAQA34QEAPeEBAE7hAQBO4QEAkOIBAK3iAQDA4gEA6+IBAODnAQDm5wEA6OcBAOvnAQDt5wEA7ucBAPDnAQD+5wEAAOgBAMToAQAA6QEAQ+kBAEvpAQBL6QEAAO4BAAPuAQAF7gEAH+4BACHuAQAi7gEAJO4BACTuAQAn7gEAJ+4BACnuAQAy7gEANO4BADfuAQA57gEAOe4BADvuAQA77gEAQu4BAELuAQBH7gEAR+4BAEnuAQBJ7gEAS+4BAEvuAQBN7gEAT+4BAFHuAQBS7gEAVO4BAFTuAQBX7gEAV+4BAFnuAQBZ7gEAW+4BAFvuAQBd7gEAXe4BAF/uAQBf7gEAYe4BAGLuAQBk7gEAZO4BAGfuAQBq7gEAbO4BAHLuAQB07gEAd+4BAHnuAQB87gEAfu4BAH7uAQCA7gEAie4BAIvuAQCb7gEAoe4BAKPuAQCl7gEAqe4BAKvuAQC77gEAAAACAN+mAgAApwIAOLcCAEC3AgAduAIAILgCAKHOAgCwzgIA4OsCAAD4AgAd+gIAAAADAEoTAwBBwNcJC/MIjgAAAEEAAABaAAAAYQAAAHoAAAC1AAAAtQAAAMAAAADWAAAA2AAAAPYAAAD4AAAAugEAALwBAAC/AQAAxAEAAJMCAACVAgAArwIAAHADAABzAwAAdgMAAHcDAAB7AwAAfQMAAH8DAAB/AwAAhgMAAIYDAACIAwAAigMAAIwDAACMAwAAjgMAAKEDAACjAwAA9QMAAPcDAACBBAAAigQAAC8FAAAxBQAAVgUAAGAFAACIBQAAoBAAAMUQAADHEAAAxxAAAM0QAADNEAAA0BAAAPoQAAD9EAAA/xAAAKATAAD1EwAA+BMAAP0TAACAHAAAiBwAAJAcAAC6HAAAvRwAAL8cAAAAHQAAKx0AAGsdAAB3HQAAeR0AAJodAAAAHgAAFR8AABgfAAAdHwAAIB8AAEUfAABIHwAATR8AAFAfAABXHwAAWR8AAFkfAABbHwAAWx8AAF0fAABdHwAAXx8AAH0fAACAHwAAtB8AALYfAAC8HwAAvh8AAL4fAADCHwAAxB8AAMYfAADMHwAA0B8AANMfAADWHwAA2x8AAOAfAADsHwAA8h8AAPQfAAD2HwAA/B8AAAIhAAACIQAAByEAAAchAAAKIQAAEyEAABUhAAAVIQAAGSEAAB0hAAAkIQAAJCEAACYhAAAmIQAAKCEAACghAAAqIQAALSEAAC8hAAA0IQAAOSEAADkhAAA8IQAAPyEAAEUhAABJIQAATiEAAE4hAACDIQAAhCEAAAAsAAB7LAAAfiwAAOQsAADrLAAA7iwAAPIsAADzLAAAAC0AACUtAAAnLQAAJy0AAC0tAAAtLQAAQKYAAG2mAACApgAAm6YAACKnAABvpwAAcacAAIenAACLpwAAjqcAAJCnAADKpwAA0KcAANGnAADTpwAA06cAANWnAADZpwAA9acAAPanAAD6pwAA+qcAADCrAABaqwAAYKsAAGirAABwqwAAv6sAAAD7AAAG+wAAE/sAABf7AAAh/wAAOv8AAEH/AABa/wAAAAQBAE8EAQCwBAEA0wQBANgEAQD7BAEAcAUBAHoFAQB8BQEAigUBAIwFAQCSBQEAlAUBAJUFAQCXBQEAoQUBAKMFAQCxBQEAswUBALkFAQC7BQEAvAUBAIAMAQCyDAEAwAwBAPIMAQCgGAEA3xgBAEBuAQB/bgEAANQBAFTUAQBW1AEAnNQBAJ7UAQCf1AEAotQBAKLUAQCl1AEAptQBAKnUAQCs1AEArtQBALnUAQC71AEAu9QBAL3UAQDD1AEAxdQBAAXVAQAH1QEACtUBAA3VAQAU1QEAFtUBABzVAQAe1QEAOdUBADvVAQA+1QEAQNUBAETVAQBG1QEARtUBAErVAQBQ1QEAUtUBAKXWAQCo1gEAwNYBAMLWAQDa1gEA3NYBAPrWAQD81gEAFNcBABbXAQA01wEANtcBAE7XAQBQ1wEAbtcBAHDXAQCI1wEAitcBAKjXAQCq1wEAwtcBAMTXAQDL1wEAAN8BAAnfAQAL3wEAHt8BAADpAQBD6QEAQcDgCQuTAwsAAACBDgAAgg4AAIQOAACEDgAAhg4AAIoOAACMDgAAow4AAKUOAAClDgAApw4AAL0OAADADgAAxA4AAMYOAADGDgAAyA4AAM0OAADQDgAA2Q4AANwOAADfDgAAAAAAACYAAABBAAAAWgAAAGEAAAB6AAAAqgAAAKoAAAC6AAAAugAAAMAAAADWAAAA2AAAAPYAAAD4AAAAuAIAAOACAADkAgAAAB0AACUdAAAsHQAAXB0AAGIdAABlHQAAax0AAHcdAAB5HQAAvh0AAAAeAAD/HgAAcSAAAHEgAAB/IAAAfyAAAJAgAACcIAAAKiEAACshAAAyIQAAMiEAAE4hAABOIQAAYCEAAIghAABgLAAAfywAACKnAACHpwAAi6cAAMqnAADQpwAA0acAANOnAADTpwAA1acAANmnAADypwAA/6cAADCrAABaqwAAXKsAAGSrAABmqwAAaasAAAD7AAAG+wAAIf8AADr/AABB/wAAWv8AAIAHAQCFBwEAhwcBALAHAQCyBwEAugcBAADfAQAe3wEAQeDjCQvDAQMAAAAAHAAANxwAADscAABJHAAATRwAAE8cAAAAAAAABQAAAAAZAAAeGQAAIBkAACsZAAAwGQAAOxkAAEAZAABAGQAARBkAAE8ZAAAAAAAAAwAAAAAGAQA2BwEAQAcBAFUHAQBgBwEAZwcBAAAAAAAHAAAAAAABAAsAAQANAAEAJgABACgAAQA6AAEAPAABAD0AAQA/AAEATQABAFAAAQBdAAEAgAABAPoAAQAAAAAAAgAAANCkAAD/pAAAsB8BALAfAQBBsOUJC4JOkQIAAGEAAAB6AAAAtQAAALUAAADfAAAA9gAAAPgAAAD/AAAAAQEAAAEBAAADAQAAAwEAAAUBAAAFAQAABwEAAAcBAAAJAQAACQEAAAsBAAALAQAADQEAAA0BAAAPAQAADwEAABEBAAARAQAAEwEAABMBAAAVAQAAFQEAABcBAAAXAQAAGQEAABkBAAAbAQAAGwEAAB0BAAAdAQAAHwEAAB8BAAAhAQAAIQEAACMBAAAjAQAAJQEAACUBAAAnAQAAJwEAACkBAAApAQAAKwEAACsBAAAtAQAALQEAAC8BAAAvAQAAMQEAADEBAAAzAQAAMwEAADUBAAA1AQAANwEAADgBAAA6AQAAOgEAADwBAAA8AQAAPgEAAD4BAABAAQAAQAEAAEIBAABCAQAARAEAAEQBAABGAQAARgEAAEgBAABJAQAASwEAAEsBAABNAQAATQEAAE8BAABPAQAAUQEAAFEBAABTAQAAUwEAAFUBAABVAQAAVwEAAFcBAABZAQAAWQEAAFsBAABbAQAAXQEAAF0BAABfAQAAXwEAAGEBAABhAQAAYwEAAGMBAABlAQAAZQEAAGcBAABnAQAAaQEAAGkBAABrAQAAawEAAG0BAABtAQAAbwEAAG8BAABxAQAAcQEAAHMBAABzAQAAdQEAAHUBAAB3AQAAdwEAAHoBAAB6AQAAfAEAAHwBAAB+AQAAgAEAAIMBAACDAQAAhQEAAIUBAACIAQAAiAEAAIwBAACNAQAAkgEAAJIBAACVAQAAlQEAAJkBAACbAQAAngEAAJ4BAAChAQAAoQEAAKMBAACjAQAApQEAAKUBAACoAQAAqAEAAKoBAACrAQAArQEAAK0BAACwAQAAsAEAALQBAAC0AQAAtgEAALYBAAC5AQAAugEAAL0BAAC/AQAAxgEAAMYBAADJAQAAyQEAAMwBAADMAQAAzgEAAM4BAADQAQAA0AEAANIBAADSAQAA1AEAANQBAADWAQAA1gEAANgBAADYAQAA2gEAANoBAADcAQAA3QEAAN8BAADfAQAA4QEAAOEBAADjAQAA4wEAAOUBAADlAQAA5wEAAOcBAADpAQAA6QEAAOsBAADrAQAA7QEAAO0BAADvAQAA8AEAAPMBAADzAQAA9QEAAPUBAAD5AQAA+QEAAPsBAAD7AQAA/QEAAP0BAAD/AQAA/wEAAAECAAABAgAAAwIAAAMCAAAFAgAABQIAAAcCAAAHAgAACQIAAAkCAAALAgAACwIAAA0CAAANAgAADwIAAA8CAAARAgAAEQIAABMCAAATAgAAFQIAABUCAAAXAgAAFwIAABkCAAAZAgAAGwIAABsCAAAdAgAAHQIAAB8CAAAfAgAAIQIAACECAAAjAgAAIwIAACUCAAAlAgAAJwIAACcCAAApAgAAKQIAACsCAAArAgAALQIAAC0CAAAvAgAALwIAADECAAAxAgAAMwIAADkCAAA8AgAAPAIAAD8CAABAAgAAQgIAAEICAABHAgAARwIAAEkCAABJAgAASwIAAEsCAABNAgAATQIAAE8CAACTAgAAlQIAAK8CAABxAwAAcQMAAHMDAABzAwAAdwMAAHcDAAB7AwAAfQMAAJADAACQAwAArAMAAM4DAADQAwAA0QMAANUDAADXAwAA2QMAANkDAADbAwAA2wMAAN0DAADdAwAA3wMAAN8DAADhAwAA4QMAAOMDAADjAwAA5QMAAOUDAADnAwAA5wMAAOkDAADpAwAA6wMAAOsDAADtAwAA7QMAAO8DAADzAwAA9QMAAPUDAAD4AwAA+AMAAPsDAAD8AwAAMAQAAF8EAABhBAAAYQQAAGMEAABjBAAAZQQAAGUEAABnBAAAZwQAAGkEAABpBAAAawQAAGsEAABtBAAAbQQAAG8EAABvBAAAcQQAAHEEAABzBAAAcwQAAHUEAAB1BAAAdwQAAHcEAAB5BAAAeQQAAHsEAAB7BAAAfQQAAH0EAAB/BAAAfwQAAIEEAACBBAAAiwQAAIsEAACNBAAAjQQAAI8EAACPBAAAkQQAAJEEAACTBAAAkwQAAJUEAACVBAAAlwQAAJcEAACZBAAAmQQAAJsEAACbBAAAnQQAAJ0EAACfBAAAnwQAAKEEAAChBAAAowQAAKMEAAClBAAApQQAAKcEAACnBAAAqQQAAKkEAACrBAAAqwQAAK0EAACtBAAArwQAAK8EAACxBAAAsQQAALMEAACzBAAAtQQAALUEAAC3BAAAtwQAALkEAAC5BAAAuwQAALsEAAC9BAAAvQQAAL8EAAC/BAAAwgQAAMIEAADEBAAAxAQAAMYEAADGBAAAyAQAAMgEAADKBAAAygQAAMwEAADMBAAAzgQAAM8EAADRBAAA0QQAANMEAADTBAAA1QQAANUEAADXBAAA1wQAANkEAADZBAAA2wQAANsEAADdBAAA3QQAAN8EAADfBAAA4QQAAOEEAADjBAAA4wQAAOUEAADlBAAA5wQAAOcEAADpBAAA6QQAAOsEAADrBAAA7QQAAO0EAADvBAAA7wQAAPEEAADxBAAA8wQAAPMEAAD1BAAA9QQAAPcEAAD3BAAA+QQAAPkEAAD7BAAA+wQAAP0EAAD9BAAA/wQAAP8EAAABBQAAAQUAAAMFAAADBQAABQUAAAUFAAAHBQAABwUAAAkFAAAJBQAACwUAAAsFAAANBQAADQUAAA8FAAAPBQAAEQUAABEFAAATBQAAEwUAABUFAAAVBQAAFwUAABcFAAAZBQAAGQUAABsFAAAbBQAAHQUAAB0FAAAfBQAAHwUAACEFAAAhBQAAIwUAACMFAAAlBQAAJQUAACcFAAAnBQAAKQUAACkFAAArBQAAKwUAAC0FAAAtBQAALwUAAC8FAABgBQAAiAUAANAQAAD6EAAA/RAAAP8QAAD4EwAA/RMAAIAcAACIHAAAAB0AACsdAABrHQAAdx0AAHkdAACaHQAAAR4AAAEeAAADHgAAAx4AAAUeAAAFHgAABx4AAAceAAAJHgAACR4AAAseAAALHgAADR4AAA0eAAAPHgAADx4AABEeAAARHgAAEx4AABMeAAAVHgAAFR4AABceAAAXHgAAGR4AABkeAAAbHgAAGx4AAB0eAAAdHgAAHx4AAB8eAAAhHgAAIR4AACMeAAAjHgAAJR4AACUeAAAnHgAAJx4AACkeAAApHgAAKx4AACseAAAtHgAALR4AAC8eAAAvHgAAMR4AADEeAAAzHgAAMx4AADUeAAA1HgAANx4AADceAAA5HgAAOR4AADseAAA7HgAAPR4AAD0eAAA/HgAAPx4AAEEeAABBHgAAQx4AAEMeAABFHgAARR4AAEceAABHHgAASR4AAEkeAABLHgAASx4AAE0eAABNHgAATx4AAE8eAABRHgAAUR4AAFMeAABTHgAAVR4AAFUeAABXHgAAVx4AAFkeAABZHgAAWx4AAFseAABdHgAAXR4AAF8eAABfHgAAYR4AAGEeAABjHgAAYx4AAGUeAABlHgAAZx4AAGceAABpHgAAaR4AAGseAABrHgAAbR4AAG0eAABvHgAAbx4AAHEeAABxHgAAcx4AAHMeAAB1HgAAdR4AAHceAAB3HgAAeR4AAHkeAAB7HgAAex4AAH0eAAB9HgAAfx4AAH8eAACBHgAAgR4AAIMeAACDHgAAhR4AAIUeAACHHgAAhx4AAIkeAACJHgAAix4AAIseAACNHgAAjR4AAI8eAACPHgAAkR4AAJEeAACTHgAAkx4AAJUeAACdHgAAnx4AAJ8eAAChHgAAoR4AAKMeAACjHgAApR4AAKUeAACnHgAApx4AAKkeAACpHgAAqx4AAKseAACtHgAArR4AAK8eAACvHgAAsR4AALEeAACzHgAAsx4AALUeAAC1HgAAtx4AALceAAC5HgAAuR4AALseAAC7HgAAvR4AAL0eAAC/HgAAvx4AAMEeAADBHgAAwx4AAMMeAADFHgAAxR4AAMceAADHHgAAyR4AAMkeAADLHgAAyx4AAM0eAADNHgAAzx4AAM8eAADRHgAA0R4AANMeAADTHgAA1R4AANUeAADXHgAA1x4AANkeAADZHgAA2x4AANseAADdHgAA3R4AAN8eAADfHgAA4R4AAOEeAADjHgAA4x4AAOUeAADlHgAA5x4AAOceAADpHgAA6R4AAOseAADrHgAA7R4AAO0eAADvHgAA7x4AAPEeAADxHgAA8x4AAPMeAAD1HgAA9R4AAPceAAD3HgAA+R4AAPkeAAD7HgAA+x4AAP0eAAD9HgAA/x4AAAcfAAAQHwAAFR8AACAfAAAnHwAAMB8AADcfAABAHwAARR8AAFAfAABXHwAAYB8AAGcfAABwHwAAfR8AAIAfAACHHwAAkB8AAJcfAACgHwAApx8AALAfAAC0HwAAth8AALcfAAC+HwAAvh8AAMIfAADEHwAAxh8AAMcfAADQHwAA0x8AANYfAADXHwAA4B8AAOcfAADyHwAA9B8AAPYfAAD3HwAACiEAAAohAAAOIQAADyEAABMhAAATIQAALyEAAC8hAAA0IQAANCEAADkhAAA5IQAAPCEAAD0hAABGIQAASSEAAE4hAABOIQAAhCEAAIQhAAAwLAAAXywAAGEsAABhLAAAZSwAAGYsAABoLAAAaCwAAGosAABqLAAAbCwAAGwsAABxLAAAcSwAAHMsAAB0LAAAdiwAAHssAACBLAAAgSwAAIMsAACDLAAAhSwAAIUsAACHLAAAhywAAIksAACJLAAAiywAAIssAACNLAAAjSwAAI8sAACPLAAAkSwAAJEsAACTLAAAkywAAJUsAACVLAAAlywAAJcsAACZLAAAmSwAAJssAACbLAAAnSwAAJ0sAACfLAAAnywAAKEsAAChLAAAoywAAKMsAAClLAAApSwAAKcsAACnLAAAqSwAAKksAACrLAAAqywAAK0sAACtLAAArywAAK8sAACxLAAAsSwAALMsAACzLAAAtSwAALUsAAC3LAAAtywAALksAAC5LAAAuywAALssAAC9LAAAvSwAAL8sAAC/LAAAwSwAAMEsAADDLAAAwywAAMUsAADFLAAAxywAAMcsAADJLAAAySwAAMssAADLLAAAzSwAAM0sAADPLAAAzywAANEsAADRLAAA0ywAANMsAADVLAAA1SwAANcsAADXLAAA2SwAANksAADbLAAA2ywAAN0sAADdLAAA3ywAAN8sAADhLAAA4SwAAOMsAADkLAAA7CwAAOwsAADuLAAA7iwAAPMsAADzLAAAAC0AACUtAAAnLQAAJy0AAC0tAAAtLQAAQaYAAEGmAABDpgAAQ6YAAEWmAABFpgAAR6YAAEemAABJpgAASaYAAEumAABLpgAATaYAAE2mAABPpgAAT6YAAFGmAABRpgAAU6YAAFOmAABVpgAAVaYAAFemAABXpgAAWaYAAFmmAABbpgAAW6YAAF2mAABdpgAAX6YAAF+mAABhpgAAYaYAAGOmAABjpgAAZaYAAGWmAABnpgAAZ6YAAGmmAABppgAAa6YAAGumAABtpgAAbaYAAIGmAACBpgAAg6YAAIOmAACFpgAAhaYAAIemAACHpgAAiaYAAImmAACLpgAAi6YAAI2mAACNpgAAj6YAAI+mAACRpgAAkaYAAJOmAACTpgAAlaYAAJWmAACXpgAAl6YAAJmmAACZpgAAm6YAAJumAAAjpwAAI6cAACWnAAAlpwAAJ6cAACenAAAppwAAKacAACunAAArpwAALacAAC2nAAAvpwAAMacAADOnAAAzpwAANacAADWnAAA3pwAAN6cAADmnAAA5pwAAO6cAADunAAA9pwAAPacAAD+nAAA/pwAAQacAAEGnAABDpwAAQ6cAAEWnAABFpwAAR6cAAEenAABJpwAASacAAEunAABLpwAATacAAE2nAABPpwAAT6cAAFGnAABRpwAAU6cAAFOnAABVpwAAVacAAFenAABXpwAAWacAAFmnAABbpwAAW6cAAF2nAABdpwAAX6cAAF+nAABhpwAAYacAAGOnAABjpwAAZacAAGWnAABnpwAAZ6cAAGmnAABppwAAa6cAAGunAABtpwAAbacAAG+nAABvpwAAcacAAHinAAB6pwAAeqcAAHynAAB8pwAAf6cAAH+nAACBpwAAgacAAIOnAACDpwAAhacAAIWnAACHpwAAh6cAAIynAACMpwAAjqcAAI6nAACRpwAAkacAAJOnAACVpwAAl6cAAJenAACZpwAAmacAAJunAACbpwAAnacAAJ2nAACfpwAAn6cAAKGnAAChpwAAo6cAAKOnAAClpwAApacAAKenAACnpwAAqacAAKmnAACvpwAA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AACmHgAAph4AAKgeAACoHgAAqh4AAKoeAACsHgAArB4AAK4eAACuHgAAsB4AALAeAACyHgAAsh4AALQeAAC0HgAAth4AALYeAAC4HgAAuB4AALoeAAC6HgAAvB4AALweAAC+HgAAvh4AAMAeAADAHgAAwh4AAMIeAADEHgAAxB4AAMYeAADGHgAAyB4AAMgeAADKHgAAyh4AAMweAADMHgAAzh4AAM4eAADQHgAA0B4AANIeAADSHgAA1B4AANQeAADWHgAA1h4AANgeAADYHgAA2h4AANoeAADcHgAA3B4AAN4eAADeHgAA4B4AAOAeAADiHgAA4h4AAOQeAADkHgAA5h4AAOYeAADoHgAA6B4AAOoeAADqHgAA7B4AAOweAADuHgAA7h4AAPAeAADwHgAA8h4AAPIeAAD0HgAA9B4AAPYeAAD2HgAA+B4AAPgeAAD6HgAA+h4AAPweAAD8HgAA/h4AAP4eAAAIHwAADx8AABgfAAAdHwAAKB8AAC8fAAA4HwAAPx8AAEgfAABNHwAAWR8AAFkfAABbHwAAWx8AAF0fAABdHwAAXx8AAF8fAABoHwAAbx8AALgfAAC7HwAAyB8AAMsfAADYHwAA2x8AAOgfAADsHwAA+B8AAPsfAAACIQAAAiEAAAchAAAHIQAACyEAAA0hAAAQIQAAEiEAABUhAAAVIQAAGSEAAB0hAAAkIQAAJCEAACYhAAAmIQAAKCEAACghAAAqIQAALSEAADAhAAAzIQAAPiEAAD8hAABFIQAARSEAAIMhAACDIQAAACwAAC8sAABgLAAAYCwAAGIsAABkLAAAZywAAGcsAABpLAAAaSwAAGssAABrLAAAbSwAAHAsAAByLAAAciwAAHUsAAB1LAAAfiwAAIAsAACCLAAAgiwAAIQsAACELAAAhiwAAIYsAACILAAAiCwAAIosAACKLAAAjCwAAIwsAACOLAAAjiwAAJAsAACQLAAAkiwAAJIsAACULAAAlCwAAJYsAACWLAAAmCwAAJgsAACaLAAAmiwAAJwsAACcLAAAniwAAJ4sAACgLAAAoCwAAKIsAACiLAAApCwAAKQsAACmLAAApiwAAKgsAACoLAAAqiwAAKosAACsLAAArCwAAK4sAACuLAAAsCwAALAsAACyLAAAsiwAALQsAAC0LAAAtiwAALYsAAC4LAAAuCwAALosAAC6LAAAvCwAALwsAAC+LAAAviwAAMAsAADALAAAwiwAAMIsAADELAAAxCwAAMYsAADGLAAAyCwAAMgsAADKLAAAyiwAAMwsAADMLAAAziwAAM4sAADQLAAA0CwAANIsAADSLAAA1CwAANQsAADWLAAA1iwAANgsAADYLAAA2iwAANosAADcLAAA3CwAAN4sAADeLAAA4CwAAOAsAADiLAAA4iwAAOssAADrLAAA7SwAAO0sAADyLAAA8iwAAECmAABApgAAQqYAAEKmAABEpgAARKYAAEamAABGpgAASKYAAEimAABKpgAASqYAAEymAABMpgAATqYAAE6mAABQpgAAUKYAAFKmAABSpgAAVKYAAFSmAABWpgAAVqYAAFimAABYpgAAWqYAAFqmAABcpgAAXKYAAF6mAABepgAAYKYAAGCmAABipgAAYqYAAGSmAABkpgAAZqYAAGamAABopgAAaKYAAGqmAABqpgAAbKYAAGymAACApgAAgKYAAIKmAACCpgAAhKYAAISmAACGpgAAhqYAAIimAACIpgAAiqYAAIqmAACMpgAAjKYAAI6mAACOpgAAkKYAAJCmAACSpgAAkqYAAJSmAACUpgAAlqYAAJamAACYpgAAmKYAAJqmAACapgAAIqcAACKnAAAkpwAAJKcAACanAAAmpwAAKKcAACinAAAqpwAAKqcAACynAAAspwAALqcAAC6nAAAypwAAMqcAADSnAAA0pwAANqcAADanAAA4pwAAOKcAADqnAAA6pwAAPKcAADynAAA+pwAAPqcAAECnAABApwAAQqcAAEKnAABEpwAARKcAAEanAABGpwAASKcAAEinAABKpwAASqcAAEynAABMpwAATqcAAE6nAABQpwAAUKcAAFKnAABSpwAAVKcAAFSnAABWpwAAVqcAAFinAABYpwAAWqcAAFqnAABcpwAAXKcAAF6nAABepwAAYKcAAGCnAABipwAAYqcAAGSnAABkpwAAZqcAAGanAABopwAAaKcAAGqnAABqpwAAbKcAAGynAABupwAAbqcAAHmnAAB5pwAAe6cAAHunAAB9pwAAfqcAAICnAACApwAAgqcAAIKnAACEpwAAhKcAAIanAACGpwAAi6cAAIunAACNpwAAjacAAJCnAACQpwAAkqcAAJKnAACWpwAAlqcAAJinAACYpwAAmqcAAJqn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ADAFAABXBQAAWAUAAIsFAACMBQAAkAUAAJAFAADIBQAAzwUAAOsFAADuBQAA9QUAAP8FAAAOBwAADgcAAEsHAABMBwAAsgcAAL8HAAD7BwAA/AcAAC4IAAAvCAAAPwgAAD8IAABcCAAAXQgAAF8IAABfCAAAawgAAG8IAACPCAAAjwgAAJIIAACXCAAAhAkAAIQJAACNCQAAjgkAAJEJAACSCQAAqQkAAKkJAACxCQAAsQkAALMJAAC1CQAAugkAALsJAADFCQAAxgkAAMkJAADKCQAAzwkAANYJAADYCQAA2wkAAN4JAADeCQAA5AkAAOUJAAD/CQAAAAoAAAQKAAAECgAACwoAAA4KAAARCgAAEgoAACkKAAApCgAAMQoAADEKAAA0CgAANAoAADcKAAA3CgAAOgoAADsKAAA9CgAAPQoAAEMKAABGCgAASQoAAEoKAABOCgAAUAoAAFIKAABYCgAAXQoAAF0KAABfCgAAZQoAAHcKAACACgAAhAoAAIQKAACOCgAAjgoAAJIKAACSCgAAqQoAAKkKAACxCgAAsQoAALQKAAC0CgAAugoAALsKAADGCgAAxgoAAMoKAADKCgAAzgoAAM8KAADRCgAA3woAAOQKAADlCgAA8goAAPgKAAAACwAAAAsAAAQLAAAECwAADQsAAA4LAAARCwAAEgsAACkLAAApCwAAMQsAADELAAA0CwAANAsAADoLAAA7CwAARQsAAEYLAABJCwAASgsAAE4LAABUCwAAWAsAAFsLAABeCwAAXgsAAGQLAABlCwAAeAsAAIELAACECwAAhAsAAIsLAACNCwAAkQsAAJELAACWCwAAmAsAAJsLAACbCwAAnQsAAJ0LAACgCwAAogsAAKULAACnCwAAqwsAAK0LAAC6CwAAvQsAAMMLAADFCwAAyQsAAMkLAADOCwAAzwsAANELAADWCwAA2AsAAOULAAD7CwAA/wsAAA0MAAANDAAAEQwAABEMAAApDAAAKQwAADoMAAA7DAAARQwAAEUMAABJDAAASQwAAE4MAABUDAAAVwwAAFcMAABbDAAAXAwAAF4MAABfDAAAZAwAAGUMAABwDAAAdgwAAI0MAACNDAAAkQwAAJEMAACpDAAAqQwAALQMAAC0DAAAugwAALsMAADFDAAAxQwAAMkMAADJDAAAzgwAANQMAADXDAAA3AwA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AD0AAwH//wAAQgCdAEcADQH//wAA//8AAP//AAD//wAA//8AAP//AABMACQB//8AAFIANwD//wAA//8AAFUAlwD//wAA//8AAP//AABYAIcA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAXABWAP//AABhANIA//8AAP//AAD//wAAZACBAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AABsAI0A//8AAHEAJwB2ACcA//8AAP//AAB9ANMAgACaAP//AAD//wAAjQBaAP//AACSAM4A//8AAP//AACVAJkA//8AAKEA2AGuAFMAswBaAP//AAD//wAA//8AALkAoQC9AKEA//8AAMIAdADHAJwA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AADMAI0A//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAzgCUANMALQD//wAA//8AAP//AAD//wAA2ADIAf//AAD//wAA4gDbAf//AAD//wAA//8AAO8AHgH//wAA//8AAP//AAD//wAA+gATAgABGAL//wAA//8AAP//AAAHASUA//8AAP//AAD//wAA//8AAP//AAD//wAACQHtAf//AAD//wAAEgE4AP//AAD//wAAGQGRAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AACEBNwH//wAA//8AAP//AAD//wAAKwEIAv//AAD//wAA//8AAP//AAA1AW0A//8AAP//AAD//wAA//8AAP//AAD//wAA//8AADoBGQL//wAA//8AAP//AABdAUQB//8AAP//AABlASYA//8AAGoB1AD//wAAhQGFAIgBkwD//wAA//8AAP//AAD//wAA//8AAP//AACNAcwAogE/AaoBvwH//wAAswHcAf//AAC9AY0AywEMAv//AAD//wAA//8AAP//AADsAZsA//8AAP//AAD//wAA//8AAP//AADxAegB/gG1AAMC+wEKAhgB//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AABoCPAH//wAA//8AAP//AAD//wAA//8AACUC7wH//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAALwKPAP//AAD//wAA//8AADcCYgH//wAA//8AAP//AAD//wAAQAJ8AP//AABDApQA//8AAP//AAD//wAAUAILAv//AAD//wAA//8AAP//AAD//wAA//8AAFwClgD//wAA//8AAF8CKwD//wAA//8AAP//AABiAgACdAIRAf//AAD//wAA//8AAIICFgD//wAA//8AAIcC1wCNAmwA//8AAP//AACSAiUB//8AAP//AAD//wAA//8AAP//AAD//wAAngIWAP//AACnAgUCsQIGAv//AADAAjkA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AADFAswA//8AAP//AAD//wAA//8AAMgCbwDeAn4A//8AAP//AAD//wAA4wJ+AP//AADpAtkA//8AAP//AADsAiMB//8AAP//AAD//wAA//8AAP//AAD//wAA9QJKAf//AAD//wAABAOBAQ8DHAEaAzQB//8AACEDnwH//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAKAPrAf//AAD//wAA//8AADEDEwE0A5kA//8AAP//AAD//wAA//8AAP//AAD//wAAOQPSAP//AAD//wAA//8AAEwDOgD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AABPAyEB//8AAFgD1AD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAXAP6Af//AAD//wAA//8AAP//AABkA9UA//8AAP//AABnA5EA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAGwDIAL//wAA//8AAP//AAD//wAAfAOaAIEDnwD//wAAhgN0AP//AACPA2sA//8AAJQDbwD//wAA//8AAP//AACZAw0B//8AAP//AACgA34B//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAwwMLAc8DIgD//wAA//8AAP//AAD//wAA1AMOAP//AADaAzcA//8AAP//AADlAxUA//8AAP//AADsA6AB/wPjAf//AAD//wAA//8AABQEewD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAGwT/Af//AAD//wAA//8AAP//AAD//wAAKQSmAf//AAD//wAA//8AAP//AAD//wAA//8AADcE2gH//wAA//8AAEkEswFhBHMA//8AAP//AABmBHMAbgStAf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAiwR7AP//AACNBPgB//8AAP//AAD//wAAlAS3Af//AAD//wAA//8AAP//AAD//wAA//8AAJ8EQQK4BDQCxwSrAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA1AQXAuIECwHnBEYC//8AAP//AAD//wAA//8AAP//AAD2BD8C//8AAP//AAD//wAA//8AAP//AAACBc0B//8AAP//AAD//wAA//8AAP//AAAMBTUB//8AAP//AAASBSEA//8AABkFwQH//wAA//8AAP//AAD//wAA//8AAP//AAAlBW0B//8AAP//AABJBaAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAFMFDAFYBdYA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAZwVZAP//AAD//wAA//8AAP//AABuBXcA//8AAP//AAD//wAAcwVPAX8F5QH//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAjAVVAJMFvAH//wAA//8AAP//AACkBZsA//8AAP//AAC0BXUA//8AAP//AAC5BSsA//8AAP//AADBBcoA0wU1Av//AAD//wAA//8AAP//AAD//wAA2wXmAP//AADeBYkA//8AAP//AAD//wAA//8AAOEFJgH//wAA//8AAP//AAD//wAA//8AAOsFlgEEBk4C//8AACsG6AD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAC4GaQAyBtkB//8AAP//AAD//wAA//8AAP//AAD//wAARAbIAP//AABJBr4B//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAFIGMQL//wAA//8AAP//AAD//wAA//8AAFkGZwD//wAAawYfAnwGhgH//wAA//8AAIkG6wCOBhoA//8AAP//AAD//wAAlAZmAf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AALIGOgL//wAA//8AAP//AADABhwAxQZYAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AADLBhwA//8AANEGygD//wAA//8AAP//AAD//wAA//8AAP//AADXBjIB//8AAOMGkwH//wAA//8AAP//AAD//wAA//8AAP//AAD5BiECDgcbAP//AAD//wAA//8AAP//AAD//wAA//8AABMHagD//wAA//8AABcHBwD//wAA//8AAB0HuQH//wAA//8AADAHTAE6BycC//8AAP//AAD//wAA//8AAP//AABLByUC//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAGUH3QD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAGoHlQH//wAAeAf1AX8H3QD//wAA//8AAP//AACJB9wA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AACLB3EAkQdlAf//AAD//wAAoweDAKgHywCtB2sB//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAMQHKALiB3MB//8AAAII5wD//wAA//8AAAUIPgL//wAAKgjEAf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAA1CM0A//8AAP//AAD//wAA//8AAP//AAD//wAA//8AADgIswD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAD0IDQD//wAA//8AAP//AAD//wAA//8AAP//AABDCG0A//8AAEgI/QH//wAA//8AAP//AABVCBYB//8AAP//AAD//wAA//8AAP//AABmCJgBcwhIAf//AAB7COAB//8AAIcIaQD//wAA//8AAP//AAD//wAA//8AAJII4gH//wAA//8AAKMI3wD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAApghoAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAKsIpAG8CAYA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AADCCBkA//8AAMcIgAH//wAA//8AAP//AADSCMsB5gjGAf//AAD//wAA8AgCAP//AAD//wAA9ggZAQ8JNAD//wAA//8AAP//AAAYCdUB//8AACEJ0QD//wAA//8AACwJNAD//wAAMQkdADkJkwD//wAA//8AAEEJMgL//wAA//8AAP//AAD//wAA//8AAEoJWQD//wAA//8AAFcJGQBgCWoA//8AAP//AAD//wAAaAkvAf//AABwCfIB//8AAP//AAD//wAA//8AAP//AAB6CS4A//8AAH8JLQD//wAAhglyAI0J7gGYCVcA//8AAP//AAD//wAA//8AAKUJPgH//wAA//8AAP//AACtCSkA//8AAP//AACzCaIB//8AAP//AADLCXkA0gm7Af//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AADoCdsA7Ql2AP//AAD//wAA//8AAP//AADyCZIA/QmIAAcKJgD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AABoKUgEkCp0A//8AAP//AAApCjoB//8AAP//AAD//wAANAp6AP//AAD//wAA//8AAP//AAA5CjAA//8AAD4KDQL//wAA//8AAFcKhAD//wAA//8AAP//AABaChEB//8AAP//AABdCjMB//8AAP//AAD//wAA//8AAP//AABnCvMB//8AAP//AABzCgwB//8AAP//AAD//wAA//8AAHwKCwD//wAAgwofAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAiQo1AP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AACUCvcB//8AAP//AAD//wAAngorAv//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAtAoRALkKNQD//wAA//8AAP//AAD//wAA//8AAL4KeADDCucB//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAM8K9AH//wAA2QoaAP//AADeCm4A//8AAP//AADzClwA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD4CqAA//8AAP//AAD//wAA//8AAP0KdQEOC0kB//8AAP//AAD//wAA//8AAP//AAD//wAAGgsQAB8LyQH//wAA//8AAP//AAD//wAA//8AACcLXAE8C1MA//8AAEULdgBQC+UA//8AAP//AAD//wAA//8AAFgLeAD//wAA//8AAP//AAD//wAA//8AAF4L4AD//wAAZAt8AP//AAD//wAAcAuiAP//AAD//wAAeAtcAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAhQuVAP//AACKCx0B//8AAP//AACfCzgB//8AAKoLVQD//wAA//8AAP//AAD//wAA//8AAP//AACvC6UBxAtUAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAzwvXAN0LAgH//wAA4wuKAf//AAAEDHEAEAzbAP//AAD//wAA//8AAP//AAD//wAA//8AABYMRQH//wAA//8AAP//AAD//wAA//8AAP//AAAiDEsA//8AACgMTAJJDFYA//8AAP//AAD//wAA//8AAP//AABRDPYB//8AAFsM0wH//wAA//8AAP//AAD//wAA//8AAP//AABkDBAA//8AAP//AAD//wAAagyKAP//AABtDBwC//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAIEMcgD//wAAhgwsAf//AACRDO0A//8AAP//AAD//wAA//8AAP//AAD//wAAmwzhAf//AAD//wAA//8AAP//AACqDPUAsAwKAsIMuwDIDJABzgwhAP//AAD//wAA//8AANMMZAH//wAA7AwFAfAMBQH//wAA//8AAPUM3gD//wAA//8AAP//AAD//wAA//8AAP//AAD6DF0A//8AAP8M8gD//wAA//8AAP//AAAFDW0A//8AAA8NywD//wAA//8AABkNEAEeDQgA//8AACQNggD//wAA//8AAP//AAD//wAAKQ1dADIN9QD//wAA//8AAP//AAD//wAANw3SAf//AAD//wAA//8AAP//AABDDYQB//8AAEwNhwBiDQQC//8AAG4NSgL//wAA//8AAI8NWACeDcoB//8AAP//AACoDewB//8AAP//AAC2DV4A//8AAP//AAD//wAA//8AALoNXgC/DYAA//8AAP//AADFDTYA//8AANAN2AD//wAA//8AANgNYQD//wAA3Q2EAP//AAD//wAA//8AAP//AAD//wAA//8AAO0NAwD//wAA8w2MAf//AAD//wAACg6CAP//AAD//wAA//8AAP//AAD//wAAEg4RAv//AAApDmEA//8AAP//AAD//wAA//8AADEO8QE6DloBVA5nAf//AABsDhMA//8AAP//AACBDqQA//8AAIMOTQD//wAA//8AAJEO6QD//wAA//8AAP//AAD//wAAlA5lAP//AAD//wAA//8AAJkO4wD//wAA//8AAP//AAD//wAA//8AAP//AACeDoAA//8AAKMOHgD//wAAqA5uAP//AACtDqYA//8AAP//AAC5DqwAvA7eAP//AADHDhQC0A4yANQOHgD//wAA//8AAN4OGwHvDqoA8w6qAPgO+gD//wAA//8AAP0OvAADD7YA//8AAAgP9wD//wAADQ/3ABQPmgH//wAA//8AAB4PxgD//wAA//8AACAPLgH//wAAKA/kATEPIAE6D9QB//8AAP//AABHD8cBUQ8fAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAXQ89Av//AAB9DwkB//8AAIIPogD//wAA//8AAIcP1gGdD+UA//8AAP//AACiD+IA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAKoPfQH//wAA//8AAP//AAD//wAA//8AALsPlwD//wAAyQ8VAM4P8AH//wAA//8AAOYPIgD//wAA7g9BAf//AAD4D70A//8AAP//AAD9Dx0A//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAAhAUAQ8QrwH//wAA//8AACoQPQD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAALxDZAP//AAD//wAA//8AAEEQPAJiEE4A//8AAHQQWwH//wAA//8AAP//AAD//wAA//8AAIQQfwCJEPwBkRAsAP//AAD//wAA//8AAP//AACYEIsAnRCLAP//AAD//wAApBBEAP//AACoEL0B//8AAP//AAD//wAAtxBAAP//AAD//wAAuhBFAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAL8QAwHHEFcA//8AAM4QowD//wAA//8AANMQowD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AANsQSwL//wAA/BBNAP//AAD//wAA//8AAP//AAABEWoB//8AABMRDgL//wAAIRFVAf//AAD//wAA//8AADcRAAH//wAA//8AADwRVABBEfQA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAEkRDwBXEb8A//8AAFsRxgD//wAA//8AAP//AABnEQYB//8AAP//AAD//wAAahHtAG8RAQJ5EdAB//8AAP//AAD//wAA//8AAP//AAD//wAAixFQAZMRlAH//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAKQRIgL//wAA//8AAKwRNgH//wAA//8AAP//AAC2EasB//8AAP//AAD//wAA//8AAMYRYgDNEWkB//8AAP//AAD//wAA//8AAP//AAD//wAA3RHmAecRbAH//wAA//8AAPIR6QH//wAA//8AAPwRKgH//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAAJEkwA//8AAP//AAD//wAAGBKHAf//AAD//wAA//8AAP//AAA1EmsAQRI5AP//AABIEmEB//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAFYSYgD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAFsSiQH//wAA//8AAG4SHgL//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAfhLJAIwSGACUEikB//8AAP//AAD//wAAphLqAP//AAD//wAArhK3ALMSGgL//wAAvBI5AMESBQD//wAA//8AAP//AAD//wAAxxLBAP//AAD//wAAzBImAv//AAD//wAA5hLdAf4SRAD//wAACBPeAf//AAD//wAA//8AAP//AAAfEykC//8AAP//AAAvE54B//8AAP//AAD//wAA//8AAP//AABCE1ACSRNwAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAE4TPAD//wAAUxOmAP//AAD//wAA//8AAP//AAD//wAAWBPJAF8T8gD//wAAZBPCAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAGkT4AD//wAAehNsAP//AAD//wAA//8AAIoT+gCeE4wAoxOMAP//AACqEyAA//8AAP//AAD//wAArxNwAP//AAC4EzEA//8AALwTQwLWE8UB//8AAP//AADjE0AC//8AAP//AAD//wAA//8AAPgTbwH//wAAChSwAR8UKAD//wAA//8AAP//AAAtFI4B//8AAP//AAD//wAA//8AAP//AAD//wAAOhRUAkQUsQH//wAA//8AAP//AAD//wAAVBQ7Af//AAD//wAA//8AAP//AABpFOEA//8AAP//AAD//wAA//8AAHEUTgH//wAAfBRWAf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAI4UDACTFHEB//8AALcU9gD//wAAvBSxAMEUZwD//wAA//8AAP//AADGFMMA//8AAP//AAD//wAAzRSnANsUGAD//wAA4BR6Af//AAD//wAA//8AAP//AAD0FLEA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAPwU4QD//wAA//8AAAEVKgL//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAFhWhASAVAQH//wAA//8AACUVfwH//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AABAFSAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAEkVjwH//wAA//8AAP//AABQFcMB//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAFwV4wBkFRAB//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAB0FRcA//8AAP//AAD//wAAfRWYAP//AACCFc4AkxW4AJgV6wD//wAA//8AAP//AACkFVECwxU5AdAVmADcFdAA4RUJAv//AAD//wAA8hV2AfsVJwH//wAA//8AAP//AAD//wAADhacAf//AAD//wAAJBY+AP//AAD//wAA//8AAP//AAD//wAA//8AACkWJAL//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAEMWUwH//wAA//8AAFcWWwD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAFwWMwD//wAAYBZbAP//AAD//wAA//8AAGkWlgD//wAA//8AAHUWAQB7FpAA//8AAIAW0QH//wAA//8AAIwWkAD//wAA//8AAP//AAD//wAAlhYJAP//AAD//wAAnBZRAf//AAD//wAA//8AAKUWyAD//wAA//8AAP//AAD//wAArxbsAP//AAD//wAA//8AAP//AAD//wAA//8AALQWnAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AADIFjsA//8AAM0WMAH//wAA//8AANYWmQH//wAA6xbXAf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD9FkIAAhf7AP//AAD//wAA//8AAP//AAAHF/sADhcjABMX/AD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAGBfqAP//AAAdF4kA//8AAP//AAD//wAALRcsAv//AAD//wAA//8AAE8XuQD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAFQXKgD//wAA//8AAP//AABmF5IB//8AAG4XQgD//wAA//8AAHYXdwGLFyMA//8AAJQXDwH//wAA//8AAP//AAD//wAA//8AAJ4XtAH//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAshf/AP//AAD//wAA//8AALcX6gH//wAA//8AAP//AADAF6cA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAMMX0QD//wAA//8AAP//AAD//wAA//8AAP//AADIF6kA//8AAP//AAD//wAA//8AAM0XGgH//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAOkXjgDuF18B//8AAP//AAD//wAA//8AAP//AAD//wAA//8AABQYtgD//wAAHxiOAP//AAAoGPMA//8AAP//AAD//wAAMBioADoYAAD//wAA//8AAEIY7wD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AABHGPkB//8AAP//AAD//wAAXRgCAv//AAD//wAAixjiAP//AAD//wAA//8AAP//AAD//wAAkBgkAJUYBwGeGKQA//8AAP//AAD//wAApRgtArkYBgH//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAyxhQAP//AADQGH8A//8AAP//AAD//wAA1xj/AP//AAD//wAA3xhgAP//AAD//wAA//8AAP//AAD//wAA//8AAOQYDwD//wAA//8AAP//AAD//wAA//8AAP//AADpGMAB//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP4YCAH//wAA//8AAP//AAD//wAABRlPAv//AAD//wAA//8AAP//AAAmGXkA//8AAP//AAD//wAA//8AAP//AAD//wAAKxk7AP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAA1GSMC//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAEAZAQFJGUcC//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAGoZtQD//wAA//8AAP//AAD//wAAdBlZAf//AAD//wAA//8AAP//AAD//wAA//8AAJoZegD//wAA//8AAP//AAD//wAApBn4AKkZ7wD//wAA//8AALAZ8QD//wAA//8AAP//AAD//wAAuRmFAP//AAD//wAA//8AAP//AAD//wAAyBleAf//AADaGTAC//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AADxGfYA//8AAP//AAD//wAA//8AAPcZqAD//wAA/BnCAf//AAD//wAA//8AAAUaPQEqGggB//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAALxpNAVMasABYGvkAXRpoAP//AAD//wAA//8AAP//AABwGisBehqrAP//AAD//wAA//8AAP//AAB9GjoA//8AAP//AAD//wAA//8AAP//AAD//wAAhxpOAP//AAD//wAAjRpfAJIaSwH//wAA//8AAP//AAD//wAA//8AAJ0a5wCoGswB//8AAP//AACzGgcB//8AAP//AAD//wAAuBp8Af//AAD//wAA//8AAP//AAD//wAA0BotAf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA2xp0AegaBwL//wAA//8AAP//AAD3GtAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP8aLwAEG60AChvBABobCgH//wAA//8AAP//AAD//wAA//8AAP//AAAlG7gBOBvkAP//AAD//wAA//8AAD0bJQD//wAA//8AAP//AAD//wAA//8AAEMbZQD//wAATBuXAVYbrABiG5sB//8AAP//AAD//wAA//8AAP//AABrG7wAcBtJAv//AAD//wAA//8AAP//AAD//wAAkRtAAZsbFQL//wAA//8AAP//AAD//wAA//8AAKYb+AD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAK0bxwCyG4gB//8AAP//AAD//wAA//8AAP//AAD//wAA0BvfAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAN8bRwH//wAA//8AAOcbQgH//wAA//8AAP//AAD//wAA//8AAO8bowEDHO4A//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAAgcPwD//wAADRwJAf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAAYHL4AHxyzAP//AAD//wAA//8AACkcNwL//wAA//8AAP//AAD//wAA//8AAD8cEwH//wAAThwVAf//AAD//wAA//8AAP//AABhHL4A//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAHEcMAD//wAAhxy6Af//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAlxxGAf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AADEHCQA//8AAP//AAD//wAAyhydAf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AADVHD4A//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AADeHEYA//8AAOQcrQD//wAA//8AAP//AAD//wAA//8AAP//AAD6HKcB//8AAP//AAD//wAADB0bAP//AAAVHWAB//8AAP//AAD//wAA//8AAP//AAD//wAA//8AACkdsgE+HTgC//8AAP//AAD//wAA//8AAP//AABkHbsA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAaR2sAf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAB6HTIAkB1GAP//AAD//wAA//8AAP//AAD//wAAlR1jAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAJodQwH//wAA//8AAP//AAD//wAA//8AAP//AAClHXgB//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAsB2CAf//AAD//wAA//8AAP//AAD//wAA//8AALsdtADAHdoA//8AAP//AADFHa4B4x1NAv//AAAEHkgC//8AAP//AAD//wAA//8AACAesgD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAALR7PAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAA+HgMCSh7fAf//AAD//wAA//8AAP//AAD//wAAWx4SAf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAF4e1gD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAGMetQH//wAA//8AAP//AAD//wAA//8AAP//AAB+Hp4A//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAI0eQwD//wAA//8AAP//AAD//wAA//8AAP//AACSHvQAlx6vAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AACcHkMA//8AAP//AAD//wAA//8AAP//AACnHncA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAC5HnUA//8AAP//AAD//wAA//8AAMEeEgL//wAA0x7uAP//AAD//wAA3x79AP//AAD//wAA//8AAOQeTwD//wAA6h79AP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA8h5JAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD3Hr0A//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD/Hv4B//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAAwfuQD//wAA//8AAP//AAD//wAA//8AABYfMQD//wAA//8AAP//AAD//wAALB89ADgfeQH//wAA//8AAP//AAD//wAASx9PAP//AAD//wAAXR8UAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAYR/DAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAcB+6AHUfHwF+H+kA//8AAIkfYwH//wAA//8AAKEfQgK1HzkCxB9fAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AADLH1IA//8AAP//AADPH8QA1R8bAv//AAD//wAA//8AAOgfhgD//wAA//8AAPQfpQD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA+R+lAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAAMgrgAIIBIB//8AAP//AAD//wAA//8AAP//AAAbICgB//8AAP//AAD//wAA//8AAP//AAAtIC4C//8AAP//AAD//wAA//8AAP//AAA+IDMA//8AAP//AAD//wAA//8AAFQgsgBZIDsCaCAiAf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAeyCLAf//AAD//wAA//8AAJMgVwH//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAKggxQC3IMIA//8AAP//AAD//wAA//8AAMQgSQD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAMwgSgD//wAA//8AAP//AADRICwA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA1CA2Av//AAD//wAA6CDoAP//AAD//wAA//8AAP//AAD0IFIA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD9IFEA//8AAP//AAD//wAA//8AAP//AAAFIQoB//8AAP//AAD//wAADCHPAP//AAAPIUoA//8AAP//AAD//wAA//8AAP//AAAXIR0C//8AACohPAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAAyIdwA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAOSGRAf//AABNIV0B//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AABpIY0B//8AAP//AAD//wAA//8AAP//AAD//wAAdyFYAf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AACWIbcA//8AAP//AAChIVQB//8AAP//AAD//wAA//8AAP//AAD//wAAtCETAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAuSEEAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAvyGoAf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AANUhqgH//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAPAhFgL//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA/iGwAP//AAD//wAA//8AAP//AAD//wAA//8AAAQibgH//wAA//8AABoixQD//wAA//8AACEiKgD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AACYixAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AADAirgD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AADYi7AA+IhcB//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAE8iEgD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AABaIkQC//8AAP//AABwInIB//8AAP//AAD//wAAlCK/AP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAsyJBAP//AAD//wAAviK0AP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAziLPAf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA4SJRAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD2IgIB//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAAHI8cA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAEyNFAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAB4j5AD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAKiPxAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAAvI/4A//8AAP//AAA4IwoA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAD4jtgH//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAWyMEAf//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAGUjUAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AABuI+YA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAfSPTAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AACOI9oA//8AAJUjMwL//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAqSP+AP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAK4jZAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AALIjewH//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAzCPwAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AADRI84B//8AAP//AAD//wAA//8AAOIj8AD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AADqI2AA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAPkjTAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP8jLwL//wAA//8AAP//AAD//wAA//8AABYkZAD//wAAHyQvAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAA1JM0A//8AAP//AAD//wAA//8AAP//AABFJLgAVSRHAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAAWiQPAv//AABwJPkA//8AAP//AAD//wAAdySKAP//AAD//wAA//8AAP//AAD//wAA//8AAIckEAL//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AACqJGYA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AACxJGMA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AALgkqQH//wAA//8AAMkkOAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAM4kwAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AADVJMAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAOkkQQD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAO0kcAH//wAA//8AAAMlQAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAAdJYMB//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAA3JboA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAEElUgL//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AABgJYUB//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AABzJUUC//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AACXJa8A//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAKwl1QD//wAA//8AAP//AAD//wAA//8AAP//AAC8JUgA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AADBJUcA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAMolaAH//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA1yVIAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAOslUwJsYW5hAGxpbmEAegB5aQBtbgBjbgBtYWthAHlpaWkAbWFuaQBpbmthbm5hZGEAY2kAbG8AbGFvAGxhb28Aenp6egBtaWFvAHllemkAaW5ua28AY28AbWUAbG9lAGdyYW4AcGkAbGluZWFyYQBtYXJrAGNhcmkAY2FyaWFuAHBvAG1lbmRla2lrYWt1aQBncmVrAHBlAG1lZXRlaW1heWVrAGlua2hhcm9zaHRoaQBnZW9yAGdyZWVrAG1ybwBtcm9vAGthbmEAbWVybwBtAGdvbm0AY2FrbQBpbm9zbWFueWEAaW5tYW5pY2hhZWFuAGluYXJtZW5pYW4AaW5tcm8AaW5taWFvAGMAaW5jaGFrbWEAY29tbW9uAG1hbmRhaWMAaW5teWFubWFyAGlubWFrYXNhcgBxYWFpAGluaWRlb2dyYXBoaWNzeW1ib2xzYW5kcHVuY3R1YXRpb24AaW5raG1lcgBjYW5zAHByZXBlbmRlZGNvbmNhdGVuYXRpb25tYXJrAGxtAG1hcmMAY29ubmVjdG9ycHVuY3R1YXRpb24AaW5ydW5pYwBpbmNhcmlhbgBpbmF2ZXN0YW4AY29tYmluaW5nbWFyawBpbmN1bmVpZm9ybW51bWJlcnNhbmRwdW5jdHVhdGlvbgBtZXJjAGluY2hvcmFzbWlhbgBwZXJtAGluYWhvbQBpbmlwYWV4dGVuc2lvbnMAaW5jaGVyb2tlZQBpbnNoYXJhZGEAbWFrYXNhcgBpbmFycm93cwBsYwBtYXNhcmFtZ29uZGkAaW5jdW5laWZvcm0AbWMAY2MAaW56YW5hYmF6YXJzcXVhcmUAbGluZXNlcGFyYXRvcgBhcm1uAHFtYXJrAGFybWkAaW5zYW1hcml0YW4AYXJtZW5pYW4AaW5tYXJjaGVuAGlubWFzYXJhbWdvbmRpAHFhYWMAcGMAaW5zY3JpcHRpb25hbHBhcnRoaWFuAGxhdG4AbGF0aW4AcmkAaW50aGFhbmEAaW5raG1lcnN5bWJvbHMAaW5rYXRha2FuYQBpbmN5cmlsbGljAGludGhhaQBpbmNoYW0AaW5rYWl0aGkAenMAbXRlaQBpbml0aWFscHVuY3R1YXRpb24AY3MAaW5zeXJpYWMAcGNtAGludGFrcmkAcHMAbWFuZABpbmthbmFleHRlbmRlZGEAbWVuZABtb2RpAGthdGFrYW5hAGlkZW8AcHJ0aQB5ZXppZGkAaW5pZGVvZ3JhcGhpY2Rlc2NyaXB0aW9uY2hhcmFjdGVycwB4aWRjb250aW51ZQBicmFpAGFzY2lpAHByaXZhdGV1c2UAYXJhYmljAGlubXlhbm1hcmV4dGVuZGVkYQBpbnJ1bWludW1lcmFsc3ltYm9scwBsZXR0ZXIAaW5uYW5kaW5hZ2FyaQBpbm1lZXRlaW1heWVrAGlub2xkbm9ydGhhcmFiaWFuAGluY2prY29tcGF0aWJpbGl0eWZvcm1zAGtuZGEAa2FubmFkYQBpbmNqa2NvbXBhdGliaWxpdHlpZGVvZ3JhcGhzAGwAaW5tb2RpAGluc3BlY2lhbHMAaW50cmFuc3BvcnRhbmRtYXBzeW1ib2xzAGlubWVuZGVraWtha3VpAGxldHRlcm51bWJlcgBpbm1lZGVmYWlkcmluAHhpZGMAaW5jaGVzc3N5bWJvbHMAaW5lbW90aWNvbnMAaW5saW5lYXJhAGlubGFvAGJyYWhtaQBpbm9sZGl0YWxpYwBpbm1pc2NlbGxhbmVvdXNtYXRoZW1hdGljYWxzeW1ib2xzYQBtb25nb2xpYW4AeGlkcwBwc2FsdGVycGFobGF2aQBncmxpbmsAa2l0cwBpbnN1bmRhbmVzZQBpbm9sZHNvZ2RpYW4AZ290aGljAGluYW5jaWVudHN5bWJvbHMAbWVyb2l0aWNjdXJzaXZlAGthbGkAY29udHJvbABwYXR0ZXJud2hpdGVzcGFjZQBpbmFkbGFtAHNrAGx0AGlubWFuZGFpYwBpbmNvbW1vbmluZGljbnVtYmVyZm9ybXMAaW5jamtjb21wYXRpYmlsaXR5aWRlb2dyYXBoc3N1cHBsZW1lbnQAc28AaWRjAGlub2xkc291dGhhcmFiaWFuAHBhbG0AaW5seWNpYW4AaW50b3RvAGlkc2JpbmFyeW9wZXJhdG9yAGlua2FuYXN1cHBsZW1lbnQAaW5jamtzdHJva2VzAHNvcmEAYmFtdW0AaW5vcHRpY2FsY2hhcmFjdGVycmVjb2duaXRpb24AaW5kb21pbm90aWxlcwBiYXRrAGdyZXh0AGJhdGFrAHBhdHdzAGlubWFsYXlhbGFtAGlubW9kaWZpZXJ0b25lbGV0dGVycwBpbnNtYWxsa2FuYWV4dGVuc2lvbgBiYXNzAGlkcwBwcmludABpbmxpbmVhcmJpZGVvZ3JhbXMAaW50YWl0aGFtAGlubXVzaWNhbHN5bWJvbHMAaW56bmFtZW5ueW11c2ljYWxub3RhdGlvbgBzYW1yAGluc3lsb3RpbmFncmkAaW5uZXdhAHNhbWFyaXRhbgBzAGpvaW5jAGluY29udHJvbHBpY3R1cmVzAGxpc3UAcGF1YwBpbm1pc2NlbGxhbmVvdXNzeW1ib2xzAGluYW5jaWVudGdyZWVrbXVzaWNhbG5vdGF0aW9uAGlubWlzY2VsbGFuZW91c3N5bWJvbHNhbmRhcnJvd3MAc20AaW5taXNjZWxsYW5lb3Vzc3ltYm9sc2FuZHBpY3RvZ3JhcGhzAGludWdhcml0aWMAcGQAaXRhbABhbG51bQB6aW5oAGlud2FyYW5nY2l0aQBpbmxhdGluZXh0ZW5kZWRhAGluc2F1cmFzaHRyYQBpbnRhaWxlAGlub2xkdHVya2ljAGlkY29udGludWUAaW5oYW5pZmlyb2hpbmd5YQBzYwBpZHN0AGlubGF0aW5leHRlbmRlZGUAbG93ZXIAYmFsaQBpbmhpcmFnYW5hAGluY2F1Y2FzaWFuYWxiYW5pYW4AaW5kZXNlcmV0AGJsYW5rAGluc3BhY2luZ21vZGlmaWVybGV0dGVycwBjaGVyb2tlZQBpbmx5ZGlhbgBwaG9lbmljaWFuAGNoZXIAYmVuZ2FsaQBtYXJjaGVuAGlud2FuY2hvAGdyYXBoZW1lbGluawBiYWxpbmVzZQBpZHN0YXJ0AGludGFtaWwAaW5tdWx0YW5pAGNoYW0AY2hha21hAGthaXRoaQBpbm1haGFqYW5pAGdyYXBoZW1lYmFzZQBpbm9naGFtAGNhc2VkAGlubWVldGVpbWF5ZWtleHRlbnNpb25zAGtob2praQBpbmFuY2llbnRncmVla251bWJlcnMAcnVucgBraGFyAG1hbmljaGFlYW4AbG93ZXJjYXNlAGNhbmFkaWFuYWJvcmlnaW5hbABpbm9sY2hpa2kAcGxyZABpbmV0aGlvcGljAHNpbmQAY3djbQBpbmVhcmx5ZHluYXN0aWNjdW5laWZvcm0AbGwAemwAaW5zaW5oYWxhAGlua2h1ZGF3YWRpAHhpZHN0YXJ0AHhkaWdpdABiaWRpYwBjaG9yYXNtaWFuAGluc2lkZGhhbQBpbmNvdW50aW5ncm9kbnVtZXJhbHMAYWhvbQBjaHJzAGtobXIAaW5vbGR1eWdodXIAaW5ncmFudGhhAGJhbXUAaW5zY3JpcHRpb25hbHBhaGxhdmkAZ29uZwBtb25nAGlubGF0aW5leHRlbmRlZGMAaW5uZXd0YWlsdWUAYWRsbQBpbm9zYWdlAGluZ2VuZXJhbHB1bmN0dWF0aW9uAGdlb3JnaWFuAGtoYXJvc2h0aGkAc2luaGFsYQBraG1lcgBzdGVybQBjYXNlZGxldHRlcgBtdWx0YW5pAGd1bmphbGFnb25kaQBtYXRoAGluY3lyaWxsaWNzdXBwbGVtZW50AGluZ2VvcmdpYW4AZ290aABpbmNoZXJva2Vlc3VwcGxlbWVudABnbGFnb2xpdGljAHF1b3RhdGlvbm1hcmsAdWlkZW8AaW5jamt1bmlmaWVkaWRlb2dyYXBoc2V4dGVuc2lvbmEAam9pbmNvbnRyb2wAcnVuaWMAaW5tb25nb2xpYW4AZW1vamkAaW5jamt1bmlmaWVkaWRlb2dyYXBoc2V4dGVuc2lvbmUAZ3JhbnRoYQBpbnRpcmh1dGEAaW5oYXRyYW4AYWRsYW0AbHUAaW5raGl0YW5zbWFsbHNjcmlwdABrdGhpAGluZ3VybXVraGkAc3VuZGFuZXNlAGlub2xkaHVuZ2FyaWFuAHRha3JpAGludGFtaWxzdXBwbGVtZW50AG9yaXlhAGludmFpAGJyYWgAaW5taXNjZWxsYW5lb3VzdGVjaG5pY2FsAHZhaQB2YWlpAHNhdXIAZ3VydQB0YWlsZQBpbmhlcml0ZWQAcGF1Y2luaGF1AHphbmIAcHVuY3QAbGluYgBndXJtdWtoaQB0YWtyAGlubmFiYXRhZWFuAGlua2FuYnVuAGxvZ2ljYWxvcmRlcmV4Y2VwdGlvbgBpbmJoYWlrc3VraQBpbmNqa3VuaWZpZWRpZGVvZ3JhcGhzZXh0ZW5zaW9uYwBncmFwaGVtZWV4dGVuZABpbmVsYmFzYW4AaW5zb3Jhc29tcGVuZwBoYW4AaGFuaQBsaW1idQB1bmFzc2lnbmVkAHJhZGljYWwAaGFubwBsb3dlcmNhc2VsZXR0ZXIAY250cmwAaW5jamt1bmlmaWVkaWRlb2dyYXBocwBsaW5lYXJiAGluYW5hdG9saWFuaGllcm9nbHlwaHMAaGFudW5vbwBpbmtob2praQBpbmxhdGluZXh0ZW5kZWRhZGRpdGlvbmFsAGluZW5jbG9zZWRhbHBoYW51bWVyaWNzAGFuYXRvbGlhbmhpZXJvZ2x5cGhzAG4AZW1vamltb2RpZmllcgBzZABoaXJhAHNpZGQAbGltYgBiaGtzAHBobGkAbmFuZGluYWdhcmkAbm8Ac2F1cmFzaHRyYQBpbnRhbmdzYQBjd3QAYmhhaWtzdWtpAGluZ3JlZWthbmRjb3B0aWMAbmtvAG5rb28AdGVybQBvc2FnZQB4cGVvAHRuc2EAdGFuZ3NhAGlua2F5YWhsaQBwAGlub3JpeWEAaW55ZXppZGkAaW5hcmFiaWMAaW5waG9lbmljaWFuAGluc2hhdmlhbgBiaWRpY29udHJvbABpbmVuY2xvc2VkaWRlb2dyYXBoaWNzdXBwbGVtZW50AHdhcmEAbXVsdABpbm1lcm9pdGljaGllcm9nbHlwaHMAc2luaABzaGF2aWFuAGlua2FuZ3hpcmFkaWNhbHMAZW5jbG9zaW5nbWFyawBhcmFiAGluc2luaGFsYWFyY2hhaWNudW1iZXJzAGJyYWlsbGUAaW5oYW51bm9vAG9zbWEAYmVuZwBpbmJhc2ljbGF0aW4AaW5hcmFiaWNwcmVzZW50YXRpb25mb3Jtc2EAY3BtbgByZWdpb25hbGluZGljYXRvcgBpbmVuY2xvc2VkYWxwaGFudW1lcmljc3VwcGxlbWVudABlbW9qaW1vZGlmaWVyYmFzZQBpbmdyZWVrZXh0ZW5kZWQAbGVwYwBpbmRvZ3JhAGZvcm1hdABseWNpAGx5Y2lhbgBkaWEAaW5waGFpc3Rvc2Rpc2MAZGkAZGlhawB1bmtub3duAGdyYmFzZQBteW1yAG15YW5tYXIAaW5jamt1bmlmaWVkaWRlb2dyYXBoc2V4dGVuc2lvbmQAZW1vZABpbmdlb21ldHJpY3NoYXBlcwBpbmN5cHJvbWlub2FuAGluc3VuZGFuZXNlc3VwcGxlbWVudAB0b3RvAGdsYWcAdGFpdmlldABhc2NpaWhleGRpZ2l0AG9kaQBwdW5jdHVhdGlvbgB2cwBzdW5kAGluc295b21ibwBpbmltcGVyaWFsYXJhbWFpYwBpbmJhdGFrAGlubGF0aW5leHRlbmRlZGQAaW5udXNodQBpbnRpYmV0YW4AaW5sb3dzdXJyb2dhdGVzAGhhdHJhbgBpbmJsb2NrZWxlbWVudHMAaW5zb2dkaWFuAGluZGluZ2JhdHMAaW5lbHltYWljAGluZGV2YW5hZ2FyaQBlbW9qaWNvbXBvbmVudABpbmthdGFrYW5hcGhvbmV0aWNleHRlbnNpb25zAGlkZW9ncmFwaGljAGNvcHRpYwBpbm51bWJlcmZvcm1zAGhhdHIAaW5jamtjb21wYXRpYmlsaXR5AGlua2FuYWV4dGVuZGVkYgBwYXR0ZXJuc3ludGF4AGF2ZXN0YW4AaW5hcmFiaWNleHRlbmRlZGEAc29nZGlhbgBzb2dvAGludGFuZ3V0AGNvcHQAZ3JhcGgAb2lkYwBpbmJ5emFudGluZW11c2ljYWxzeW1ib2xzAGluaW5zY3JpcHRpb25hbHBhcnRoaWFuAGRpYWNyaXRpYwBpbmluc2NyaXB0aW9uYWxwYWhsYXZpAGlubWF5YW5udW1lcmFscwBpbm15YW5tYXJleHRlbmRlZGIAaW50YWdzAGphdmEAY3BydABuYW5kAHBhdHN5bgB0YWxlAG9pZHMAc2VudGVuY2V0ZXJtaW5hbABpbXBlcmlhbGFyYW1haWMAdGVybWluYWxwdW5jdHVhdGlvbgBseWRpAGx5ZGlhbgBib3BvAGphdmFuZXNlAGN3bABpbmdlb21ldHJpY3NoYXBlc2V4dGVuZGVkAGlub2xkcGVyc2lhbgBpbm9ybmFtZW50YWxkaW5nYmF0cwBpbmJyYWlsbGVwYXR0ZXJucwBpbnZhcmlhdGlvbnNlbGVjdG9ycwBjYXNlaWdub3JhYmxlAGlueWlyYWRpY2FscwBpbm5vYmxvY2sAaW52ZXJ0aWNhbGZvcm1zAGluZXRoaW9waWNzdXBwbGVtZW50AHNoYXJhZGEAaW5iYWxpbmVzZQBpbnZlZGljZXh0ZW5zaW9ucwB3b3JkAGlubWlzY2VsbGFuZW91c21hdGhlbWF0aWNhbHN5bWJvbHNiAHRhbWwAb2xjawBpZHNiAG9sb3dlcgBkZWNpbWFsbnVtYmVyAGF2c3QAaW5jeXJpbGxpY2V4dGVuZGVkYQBvbGNoaWtpAHNocmQAaW50YWl4dWFuamluZ3N5bWJvbHMAaW50YWl2aWV0AHVnYXIAaW5jamtzeW1ib2xzYW5kcHVuY3R1YXRpb24AYm9wb21vZm8AaW5saXN1AGlub2xkcGVybWljAHNpZGRoYW0AemFuYWJhemFyc3F1YXJlAGFzc2lnbmVkAG1lZGYAY2xvc2VwdW5jdHVhdGlvbgBzYXJiAHNvcmFzb21wZW5nAGludmFyaWF0aW9uc2VsZWN0b3Jzc3VwcGxlbWVudABpbmhhbmd1bGphbW8AbWVkZWZhaWRyaW4AcGhhZwBpbmxpc3VzdXBwbGVtZW50AGluY29wdGljAGluc3lyaWFjc3VwcGxlbWVudABpbmhhbmd1bGphbW9leHRlbmRlZGEAY3lybABpbnNob3J0aGFuZGZvcm1hdGNvbnRyb2xzAGluY3lyaWxsaWNleHRlbmRlZGMAZ3VqcgBjd3UAZ3VqYXJhdGkAc3BhY2luZ21hcmsAYWxwaGEAbWx5bQBpbnBhbG15cmVuZQBtYWxheWFsYW0Ac3BhY2UAaW5sZXBjaGEAcGFsbXlyZW5lAHNveW8AbWVyb2l0aWNoaWVyb2dseXBocwB4c3V4AGludGVsdWd1AGluZGV2YW5hZ2FyaWV4dGVuZGVkAGlubWVyb2l0aWNjdXJzaXZlAGRzcnQAdGhhYQB0aGFhbmEAYnVnaQB0aGFpAHNvZ2QAdGl0bGVjYXNlbGV0dGVyAGlubWF0aGVtYXRpY2FsYWxwaGFudW1lcmljc3ltYm9scwBvcmtoAGNhdWNhc2lhbmFsYmFuaWFuAGluYmFtdW0AZGVzZXJldABpbmdlb3JnaWFuc3VwcGxlbWVudABidWdpbmVzZQBzZXBhcmF0b3IAaW5zbWFsbGZvcm12YXJpYW50cwB0aXJoAGluYnJhaG1pAG5kAHBobngAbmV3YQBpbmNvbWJpbmluZ2RpYWNyaXRpY2FsbWFya3MAbWFoagBpbmNvbWJpbmluZ2RpYWNyaXRpY2FsbWFya3Nmb3JzeW1ib2xzAG9sZHBlcnNpYW4AbWFoYWphbmkAdGFpdGhhbQBuZXd0YWlsdWUAbmV3bGluZQBzeXJjAGlubW9uZ29saWFuc3VwcGxlbWVudABpbnVuaWZpZWRjYW5hZGlhbmFib3JpZ2luYWxzeWxsYWJpY3NleHRlbmRlZGEAc2hhdwBidWhkAHZpdGhrdXFpAG51bWJlcgBpbnN1dHRvbnNpZ253cml0aW5nAHZhcmlhdGlvbnNlbGVjdG9yAGV0aGkAbGVwY2hhAHRpcmh1dGEAcm9oZwBhaGV4AGluY29wdGljZXBhY3RudW1iZXJzAHdhbmNobwBpbmNqa3VuaWZpZWRpZGVvZ3JhcGhzZXh0ZW5zaW9uZwBraG9qAGN1bmVpZm9ybQBpbmR1cGxveWFuAHVnYXJpdGljAGluc3ltYm9sc2FuZHBpY3RvZ3JhcGhzZXh0ZW5kZWRhAG9sZHBlcm1pYwBpbmNvbWJpbmluZ2RpYWNyaXRpY2FsbWFya3NzdXBwbGVtZW50AGtodWRhd2FkaQB0YW5nAHN5cmlhYwB0YWdiYW53YQBtb2RpZmllcmxldHRlcgBpbmN1cnJlbmN5c3ltYm9scwBpbm55aWFrZW5ncHVhY2h1ZWhtb25nAHRhbWlsAHRhbHUAaW5nb3RoaWMAaW51bmlmaWVkY2FuYWRpYW5hYm9yaWdpbmFsc3lsbGFiaWNzAHdjaG8AaW5jb21iaW5pbmdkaWFjcml0aWNhbG1hcmtzZXh0ZW5kZWQAb2dhbQB0ZWx1AGlkc3RyaW5hcnlvcGVyYXRvcgBpbmJlbmdhbGkAbmwAc3Vycm9nYXRlAGViYXNlAGhhbmcAaW5idWdpbmVzZQBtYXRoc3ltYm9sAGludml0aGt1cWkAdml0aABpbmNqa3JhZGljYWxzc3VwcGxlbWVudABpbmd1amFyYXRpAGluZ2xhZ29saXRpYwBpbmd1bmphbGFnb25kaQBwaGFnc3BhAGN3Y2YAbmNoYXIAb3RoZXJpZGNvbnRpbnVlAHdoaXRlc3BhY2UAaW5saW5lYXJic3lsbGFiYXJ5AHNnbncAb3RoZXIAaGlyYWdhbmEAaW5waGFnc3BhAG90aGVybnVtYmVyAGlucmVqYW5nAG9zZ2UAaW5jamt1bmlmaWVkaWRlb2dyYXBoc2V4dGVuc2lvbmIAaW50YWdhbG9nAGluYmFzc2F2YWgAdGFuZ3V0AGhtbmcAaW5lbmNsb3NlZGNqa2xldHRlcnNhbmRtb250aHMAY3VycmVuY3lzeW1ib2wAaW5saW1idQBpbmJ1aGlkAGluZXRoaW9waWNleHRlbmRlZGEAc3lsbwBkYXNoAHdhcmFuZ2NpdGkAb2FscGhhAG9sZGl0YWxpYwBpbm90dG9tYW5zaXlhcW51bWJlcnMAc3BhY2VzZXBhcmF0b3IAaW5sYXRpbjFzdXBwbGVtZW50AG90aGVyYWxwaGFiZXRpYwBjaGFuZ2Vzd2hlbmNhc2VtYXBwZWQAaW5hZWdlYW5udW1iZXJzAGludW5pZmllZGNhbmFkaWFuYWJvcmlnaW5hbHN5bGxhYmljc2V4dGVuZGVkAGJ1aGlkAGluamF2YW5lc2UAY3lyaWxsaWMAZG9ncmEAbm9uY2hhcmFjdGVyY29kZXBvaW50AGluaGFuZ3Vsc3lsbGFibGVzAGJhc3NhdmFoAGlubGV0dGVybGlrZXN5bWJvbHMAaW5jb21iaW5pbmdoYWxmbWFya3MAaW5hcmFiaWNtYXRoZW1hdGljYWxhbHBoYWJldGljc3ltYm9scwBvcnlhAGlucHJpdmF0ZXVzZWFyZWEAY2hhbmdlc3doZW50aXRsZWNhc2VkAGRvZ3IAaGVicgBpbnRhZ2JhbndhAGludGlmaW5hZ2gAaW5ib3BvbW9mbwBuYXJiAHJqbmcAaW5hbHBoYWJldGljcHJlc2VudGF0aW9uZm9ybXMAaW5jamt1bmlmaWVkaWRlb2dyYXBoc2V4dGVuc2lvbmYAaW5zeW1ib2xzZm9ybGVnYWN5Y29tcHV0aW5nAG9sZGh1bmdhcmlhbgBmaW5hbHB1bmN0dWF0aW9uAGlucGF1Y2luaGF1AGlucHNhbHRlcnBhaGxhdmkAenAAcGhscABpbmFyYWJpY3ByZXNlbnRhdGlvbmZvcm1zYgBub25zcGFjaW5nbWFyawBkZXZhAHRhdnQAaG1ucABkZXZhbmFnYXJpAGtoaXRhbnNtYWxsc2NyaXB0AGtheWFobGkAaW5iYW11bXN1cHBsZW1lbnQAc3lsb3RpbmFncmkAdGlidABlcHJlcwB0aWJldGFuAGVsYmEAb3NtYW55YQBpbmRpdmVzYWt1cnUAb2xkdHVya2ljAGNoYW5nZXN3aGVubG93ZXJjYXNlZABjeXByb21pbm9hbgBpbmV0aGlvcGljZXh0ZW5kZWQAZW1vamlwcmVzZW50YXRpb24AYW55AG90aGVybG93ZXJjYXNlAG91Z3IAaW5oZWJyZXcAc29mdGRvdHRlZABpbm1hdGhlbWF0aWNhbG9wZXJhdG9ycwBpbmFsY2hlbWljYWxzeW1ib2xzAGlubWFoam9uZ3RpbGVzAGhhbmd1bABleHQAb21hdGgAaW50YW5ndXRjb21wb25lbnRzAG90aGVybGV0dGVyAG5iYXQAbmFiYXRhZWFuAG5zaHUAcGFyYWdyYXBoc2VwYXJhdG9yAGluYXJhYmljZXh0ZW5kZWRiAGlubGF0aW5leHRlbmRlZGcAY2hhbmdlc3doZW51cHBlcmNhc2VkAGh1bmcAaW5wbGF5aW5nY2FyZHMAaW5hcmFiaWNzdXBwbGVtZW50AGlueWlqaW5naGV4YWdyYW1zeW1ib2xzAGlucGhvbmV0aWNleHRlbnNpb25zAG90aGVydXBwZXJjYXNlAG90aGVyaWRzdGFydABlbGJhc2FuAGVseW0AY2YAaW5pbmRpY3NpeWFxbnVtYmVycwBvdGhlcnN5bWJvbABleHRlbmRlcgBleHRwaWN0AHdzcGFjZQBwZgBlbHltYWljAGludGFuZ3V0c3VwcGxlbWVudABjeXByaW90AHN5bWJvbABpbmN5cmlsbGljZXh0ZW5kZWRiAGluc3VwZXJzY3JpcHRzYW5kc3Vic2NyaXB0cwBpbnlpc3lsbGFibGVzAGlucGhvbmV0aWNleHRlbnNpb25zc3VwcGxlbWVudABvbGRzb2dkaWFuAGluZ2VvcmdpYW5leHRlbmRlZABobHV3AGRpZ2l0AGluaGFuZ3VsamFtb2V4dGVuZGVkYgBpbmhpZ2hwcml2YXRldXNlc3Vycm9nYXRlcwBpbnBhaGF3aGhtb25nAG9naGFtAGluc3VwcGxlbWVudGFsYXJyb3dzYQBvdXBwZXIAYWdoYgBvdGhlcm1hdGgAbnVzaHUAc295b21ibwBpbmxhdGluZXh0ZW5kZWRiAGFscGhhYmV0aWMAaW5zdXBwbGVtZW50YWxhcnJvd3NjAGluc3VwcGxlbWVudGFsbWF0aGVtYXRpY2Fsb3BlcmF0b3JzAG90aGVyZGVmYXVsdGlnbm9yYWJsZWNvZGVwb2ludABkZXByZWNhdGVkAG9sZG5vcnRoYXJhYmlhbgBpbmN5cHJpb3RzeWxsYWJhcnkAZXh0ZW5kZWRwaWN0b2dyYXBoaWMAdW5pZmllZGlkZW9ncmFwaABwYWhhd2hobW9uZwBkaXZlc2FrdXJ1AHNpZ253cml0aW5nAHRhZ2IAdGlmaW5hZ2gAdXBwZXIAaW5oYWxmd2lkdGhhbmRmdWxsd2lkdGhmb3JtcwB1cHBlcmNhc2UAZXRoaW9waWMAbW9kaWZpZXJzeW1ib2wAb3RoZXJwdW5jdHVhdGlvbgByZWphbmcAaW5ldGhpb3BpY2V4dGVuZGVkYgB0Zm5nAGhleABpbnN1cHBsZW1lbnRhbHB1bmN0dWF0aW9uAHRnbGcAaW5sYXRpbmV4dGVuZGVkZgB0YWdhbG9nAGhhbmlmaXJvaGluZ3lhAGVjb21wAGluZ2xhZ29saXRpY3N1cHBsZW1lbnQAaGV4ZGlnaXQAY2hhbmdlc3doZW5jYXNlZm9sZGVkAGRhc2hwdW5jdHVhdGlvbgBvbGRzb3V0aGFyYWJpYW4AZHVwbABpbmVneXB0aWFuaGllcm9nbHlwaHMAdGVsdWd1AHVwcGVyY2FzZWxldHRlcgBpbmVneXB0aWFuaGllcm9nbHlwaGZvcm1hdGNvbnRyb2xzAGh5cGhlbgBoZWJyZXcAaW5oaWdoc3Vycm9nYXRlcwB6eXl5AG9ncmV4dABvdGhlcmdyYXBoZW1lZXh0ZW5kAGRlcABpbnN1cHBsZW1lbnRhbGFycm93c2IAZGVmYXVsdGlnbm9yYWJsZWNvZGVwb2ludABpbmhhbmd1bGNvbXBhdGliaWxpdHlqYW1vAG9sZHV5Z2h1cgBpbnN1cHBsZW1lbnRhcnlwcml2YXRldXNlYXJlYWEAaW5ib3BvbW9mb2V4dGVuZGVkAGluc3VwcGxlbWVudGFsc3ltYm9sc2FuZHBpY3RvZ3JhcGhzAG55aWFrZW5ncHVhY2h1ZWhtb25nAG9wZW5wdW5jdHVh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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7KBQnJiUOBSQUBxkiHSAQOx87OwIBOxkPOw47Oxw7Ajs7Ows7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Oxg7Fjs7Czs7Ozs7BzsAOzsQOwE7OxA7OzsPOzs7Bjs7OzsAOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OwYDDg4ODg4OAQ4ODg4ODg4ODg4ADg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODgAODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODgQODgUODgQODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODgoODg4ODgkOAQ4ODg4ODg4ODg4OAA4ODggODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg44ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4OAADChk4OB4AODgAFDg4OA84OBQ4HjgAADg4ODg4ODg4Dzg4ODg4GTgKODg4OAU4ADgAOAU4OBQ4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODgAAwoZODgeADg4ABQ4ODgPODgUOB44AAA4ODg4ODg4OA84ODg4OBk4Cjg4ODgFOAA4ADgFODgUODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4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AGwHAQBKbgEAzw8BABYBAADMAAEA2iwAAD8LAQDaBAAAwwQBANoeAACECAEA2h8AAF8JAQC8JAAA1AkBAJoDAAAKAwEAxBAAAMMLAQDaAAAAmQABABQEAQCnDQEAFCwAAEwKAQAUBAAAjQMBABQeAABpBwEAuiQAAM4JAQAUAQAAyQABAP///////wAAwhAAAL0LAQCOAwAARwMBABoEAQC5DQEAGiwAAF4KAQAaBAAAoAMBABoeAAByBwEAGh8AANsIAQAaAQAA0gABAP///////wAAtiQAAMIJAQD///////8AAP///////wAAigMAAOYCAQAYBAEAsw0BABgsAABYCgEAGAQAAJoDAQAYHgAAbwcBABgfAADVCAEAGAEAAM8AAQAOBAEAlQ0BAA4sAAA6CgEADgQAABEEAQAOHgAAYAcBAA4fAADPCAEADgEAAMAAAQAC6QEAFxABAP///////wAAxyQAAPUJAQAMBAEAjw0BAAwsAAA0CgEADAQAAAsEAQAMHgAAXQcBAAwfAADJCAEADAEAAL0AAQAIBAEAgw0BAAgsAAAoCgEACAQAAP8DAQAIHgAAVwcBAAgfAAC9CAEACAEAALcAAQAGBAEAfQ0BAAYsAAAiCgEABgQAAPkDAQAGHgAAVAcBAP///////wAABgEAALQAAQD///////8AAAIFAAD/BAEABAQBAHcNAQAELAAAHAoBAAQEAADzAwEABB4AAFEHAQD///////8AAAQBAACxAAEAAAQBAGsNAQAALAAAEAoBAAAEAADnAwEAAB4AAEsHAQD///////8AAAABAACrAAEA////////AAB1BQEAXg4BAJQFAQCyDgEAKiwAAI4KAQAqBAAA1AMBACoeAACKBwEAKh8AAO0IAQAqAQAA6gABACqnAABLDAEAwgMAACYDAQAmBAEA3Q0BACYsAACCCgEAJgQAAMgDAQAmHgAAhAcBALcEAQD4DQEAJgEAAOQAAQAmpwAARQwBAJ4DAAAYAwEAtx8AAAoAAwC3AQAAwgIBAJIFAQCvDgEAt6sAABUHAQD///////8AALccAAArBgEAewEAAFwBAQB7pwAAtAwBAHurAABhBgEAjAMAAEQDAQAuLAAAmgoBAC4EAADhAwEALh4AAJAHAQAuHwAA+QgBAC4BAADwAAEALqcAAFEMAQCPHwAApAACAI8BAABxAgEA////////AACPqwAAnQYBAAL7AAAMAAIAiAMAAOACAQCPDAEA5Q4BAP///////wAALCwAAJQKAQAsBAAA2wMBACweAACNBwEALB8AAPMIAQAsAQAA7QABACynAABODAEAKCwAAIgKAQAoBAAAzgMBACgeAACHBwEAKB8AAOcIAQAoAQAA5wABACinAABIDAEA////////AAD///////8AAIYFAQCODgEAJAQBANcNAQAkLAAAfAoBACQEAADCAwEAJB4AAIEHAQBHBQAAhgUBACQBAADhAAEAJKcAAEIMAQAiBAEA0Q0BACIsAAB2CgEAIgQAALoDAQAiHgAAfgcBADP/AABTDQEAIgEAAN4AAQAipwAAPwwBANoDAABTAwEAwAQBABMOAQDALAAAGAsBAMAEAACxBAEAwB4AAF0IAQAx/wAATQ0BADsCAABBAgEAwKcAAAINAQCzBAEA7A0BAMAAAABNAAEA////////AAAqIQAAGwABALMfAAA+AAIAswEAAJIBAQCzpwAAGg0BALOrAAAJBwEA////////AACzHAAAHwYBAP///////wAAJiEAADoDAQA1BQAAUAUBALcQAACcCwEAsQQBAOYNAQD///////8AALcYAQCWDwEASgIAAFMCAQCOBQEAow4BALEBAAC5AgEAsacAALACAQCxqwAAAwcBAP///////wAAsRwAABkGAQCxDAEASw8BADwFAABlBQEA////////AAAcAgAAIAIBAE4eAADABwEAigUBAJoOAQBOAQAAGgEBAE6nAAB+DAEAqx8AAOAAAgBOAAAAJQABAKunAAB3AgEAq6sAAPEGAQAWAgAAFwIBAKscAAAHBgEAqwwBADkPAQCXHgAAIgACAJcfAADMAAIAlwEAAIkCAQBOpgAA5QsBAJerAAC1BgEAggUBAIIOAQCXHAAAywUBAJcMAQD9DgEA////////AABObgEA2w8BAHEFAQBSDgEAFAIAABQCAQDEJAAA7AkBAH4sAABEAgEAfgQAAEUEAQB+HgAACQgBACr/AAA4DQEAgAUBAHwOAQB+pwAAtwwBAH6rAABqBgEAGgIAAB0CAQDCJAAA5gkBAKkfAADWAAIAqQEAAK0CAQAm/wAALA0BAKmrAADrBgEAjQUBAKAOAQCpHAAAAQYBAKkMAQAzDwEA////////AAD///////8AABgCAAAaAgEAwBAAALcLAQAgBAEAyw0BACAsAABwCgEAIAQAALMDAQAgHgAAewcBAA4CAAALAgEAIAEAANsAAQCzEAAAkAsBAP///////wAALv8AAEQNAQCzGAEAig8BAP///////wAAkR8AAK4AAgCRAQAAcQEBAAwCAAAIAgEAkasAAKMGAQD///////8AAJEcAAC5BQEAkQwBAOsOAQD///////8AAAgCAAACAgEAsRAAAIoLAQDVAQAAuQEBACz/AAA+DQEAsRgBAIQPAQDVAAAAjQABAAYCAAD/AQEAjwMAAEoDAQD///////8AACj/AAAyDQEA1CwAADYLAQDUBAAAugQBANQeAAB7CAEAjAUBAJ0OAQAEAgAA/AEBAKsQAAB4CwEAOwUAAGIFAQDUAAAAigABAKsYAQByDwEAJP8AACYNAQAAAgAA9gEBAP///////wAA////////AAAc6QEAZRABAP///////wAAiAUBAJQOAQAi/wAAIA0BAP///////wAAKgIAADICAQD///////8AAP4EAAD5BAEA/h4AALoIAQAW6QEAUxABAP4BAADzAQEA////////AABKBQAAjwUBACYCAAAsAgEAHgQBAMUNAQAeLAAAagoBAB4EAACsAwEAHh4AAHgHAQD///////8AAB4BAADYAAEA////////AACpEAAAcgsBABwFAAAmBQEAFOkBAE0QAQCpGAEAbA8BANIEAQBJDgEA0iwAADMLAQDSBAAAtwQBANIeAAB4CAEA0h8AABQAAwAuAgAAOAIBABYFAAAdBQEAGukBAF8QAQDSAAAAhAABAKcfAAD0AAIApwEAAIkBAQD///////8AAKerAADlBgEA////////AACnHAAA+wUBAKcMAQAtDwEA////////AAD///////8AABjpAQBZEAEALAIAADUCAQAUBQAAGgUBAHwEAABCBAEAfB4AAAYIAQAzBQAASgUBAA7pAQA7EAEAKAIAAC8CAQB8qwAAZAYBAEgeAAC3BwEASB8AABcJAQAaBQAAIwUBAEinAAB1DAEAMQUAAEQFAQBIAAAAFQABAAzpAQA1EAEAaywAAK8KAQAkAgAAKQIBAKsDAABBAwEAax8AAD4JAQD///////8AAAjpAQApEAEAGAUAACAFAQBIpgAA2wsBACICAAAmAgEA////////AACXAwAA/QIBAAbpAQAjEAEADgUAABEFAQBIbgEAyQ8BAP///////wAAVh4AAMwHAQBWHwAAPgADAFYBAAAmAQEAVqcAAIoMAQAE6QEAHRABAFYAAAA+AAEADAUAAA4FAQD///////8AABb7AAB9AAIA////////AAAA6QEAERABAP///////wAACAUAAAgFAQD///////8AAFamAADxCwEA////////AACpAwAAOgMBAP///////wAABgUAAAUFAQD///////8AAFZuAQDzDwEA////////AAAU+wAAbQACAP///////wAAtyQAAMUJAQD///////8AAAQFAAACBQEA4iwAAEsLAQDiBAAAzwQBAOIeAACQCAEA4h8AACQAAwDiAQAAzgEBAAAFAAD8BAEATgIAAFkCAQCnEAAAbAsBAP///////wAA////////AACnGAEAZg8BAJEDAADpAgEA////////AAAqBQAAOwUBAFQeAADJBwEAVB8AADkAAwBUAQAAIwEBAFSnAACHDAEA////////AABUAAAAOAABANUDAAAwAwEAJgUAADUFAQA5HwAAAgkBADkBAAD8AAEAEgQBAKENAQASLAAARgoBABIEAACGAwEAEh4AAGYHAQBUpgAA7gsBABIBAADGAAEAEAQBAJsNAQAQLAAAQAoBABAEAACAAwEAEB4AAGMHAQBUbgEA7Q8BABABAADDAAEA////////AABrIQAAsAkBAC4FAABBBQEAjwUBAKYOAQA/HwAAFAkBAD8BAAAFAQEABvsAAB0AAgBSHgAAxgcBAFIfAAA0AAMAUgEAACABAQBSpwAAhAwBAP///////wAAUgAAADEAAQD///////8AAAT7AAAFAAMA/gMAANcCAQAsBQAAPgUBACACAAB9AQEA////////AADAJAAA4AkBAAD7AAAEAAIAUqYAAOsLAQAoBQAAOAUBAFAeAADDBwEAUB8AAFQAAgBQAQAAHQEBAFCnAACBDAEAUm4BAOcPAQBQAAAAKwABAP///////wAAygQBADEOAQDKLAAAJwsBACQFAAAyBQEAyh4AAGwIAQDKHwAAWQkBAMoBAACpAQEA////////AABQpgAA6AsBAMoAAABsAAEAIgUAAC8FAQCnAwAANAMBAPAEAADkBAEA8B4AAKUIAQBQbgEA4Q8BAPABAAAUAAIA2CwAADwLAQDYBAAAwAQBANgeAACBCAEA2B8AAH0JAQD///////8AANinAAAUDQEA////////AADYAAAAkwABANYsAAA5CwEA1gQAAL0EAQDWHgAAfggBANYfAABMAAIA////////AADWpwAAEQ0BAP///////wAA1gAAAJAAAQDIBAEAKw4BAMgsAAAkCwEAuQQBAP4NAQDIHgAAaQgBAMgfAABTCQEAyAEAAKUBAQC5HwAAegkBAP///////wAAyAAAAGYAAQC5qwAAGwcBAP///////wAAuRwAADEGAQAeAgAAIwIBAMYEAQAlDgEAxiwAACELAQD///////8AAMYeAABmCAEAxh8AAEMAAgBOBQAAmwUBAManAABIBwEAxQQBACIOAQDGAAAAYAABAMUEAACiBAEAuwQBAAQOAQC1BAEA8g0BAMUBAAChAQEAxacAAKoCAQC7HwAAUAkBAMUAAABcAAEAtQEAAJUBAQC7qwAAIQcBALWrAAAPBwEAtQAAABEDAQC1HAAAJQYBAK8fAAD0AAIArwEAAI8BAQD///////8AAK+rAAD9BgEAaSwAAKwKAQCvHAAAEwYBAK8MAQBFDwEAaR8AADgJAQB+BQEAdg4BACDpAQBxEAEA////////AAClHwAA6gACAP///////wAASAIAAFACAQClqwAA3wYBAOIDAABfAwEApRwAAPUFAQClDAEAJw8BAP///////wAAOf8AAGUNAQCjHwAA4AACAP///////wAA////////AACjqwAA2QYBAKEfAADWAAIAoxwAAO8FAQCjDAEAIQ8BAKGrAADTBgEA////////AAChHAAA6QUBAKEMAQAbDwEAIAUAACwFAQCHHwAApAACAIcBAABrAQEA////////AACHqwAAhQYBAJEFAQCsDgEAhxwAABoEAQCHDAEAzQ4BAP///////wAA////////AAByLAAAsgoBAHIEAAAzBAEAch4AAPcHAQBNHwAAJgkBAHIBAABQAQEAuRAAAKILAQByqwAARgYBAE0AAAAiAAEAuRgBAJwPAQBwLAAAYgIBAHAEAAAwBAEAcB4AAPQHAQD///////8AAHABAABNAQEA////////AABwqwAAQAYBAG4sAACbAgEAbgQAAC0EAQBuHgAA8QcBAG4fAABHCQEAbgEAAEoBAQBupwAArgwBAE1uAQDYDwEAxRAAAMYLAQAe6QEAaxABAEUBAAAOAQEAuxAAAKgLAQC1EAAAlgsBAEUAAAAMAAEAuxgBAKIPAQC1GAEAkA8BAO4EAADhBAEA7h4AAKIIAQCvEAAAhAsBAO4BAADgAQEA////////AACvGAEAfg8BAGwEAAAqBAEAbB4AAO4HAQBsHwAAQQkBAGwBAABHAQEAbKcAAKsMAQBpIQAAqgkBAEVuAQDADwEApRAAAGYLAQD///////8AAB4FAAApBQEApRgBAGAPAQASAgAAEQIBAP///////wAA8AMAAAoDAQD///////8AAGymAAASDAEAoxAAAGALAQAQAgAADgIBANgDAABQAwEAoxgBAFoPAQChEAAAWgsBAP///////wAA////////AAChGAEAVA8BAP///////wAA////////AADWAwAAHgMBAGoEAAAnBAEAah4AAOsHAQBqHwAAOwkBAGoBAABEAQEAaqcAAKgMAQBoBAAAJAQBAGgeAADoBwEAaB8AADUJAQBoAQAAQQEBAGinAAClDAEAfAUBAHAOAQD///////8AAP///////wAARh4AALQHAQD///////8AAGqmAAAPDAEARqcAAHIMAQBIBQAAiQUBAEYAAAAPAAEA////////AABopgAADAwBAGQsAACkAgEAZAQAAB4EAQBkHgAA4gcBAP///////wAAZAEAADsBAQBkpwAAnwwBAEamAADYCwEA3iwAAEULAQDeBAAAyQQBAN4eAACKCAEAbiEAALkJAQDeAQAAyAEBAEZuAQDDDwEA////////AADeAAAApQABADAeAACTBwEAZKYAAAYMAQAwAQAABQECAFYFAACzBQEAYiwAAJICAQBiBAAAGgQBAGIeAADfBwEA////////AABiAQAAOAEBAGKnAACcDAEA////////AAD///////8AAP///////wAApQMAAC0DAQD///////8AAGwhAACzCQEARB4AALEHAQD///////8AAP///////wAARKcAAG8MAQBipgAAAwwBAEQAAAAJAAEAowMAACYDAQB5AQAAWQEBAHmnAACxDAEAeasAAFsGAQChAwAAIgMBAGAsAACgCgEAYAQAABcEAQBgHgAA2wcBAESmAADVCwEAYAEAADUBAQBgpwAAmQwBAP///////wAA////////AAAS6QEARxABAERuAQC9DwEAMh4AAJYHAQD///////8AADIBAADzAAEAMqcAAFQMAQAQ6QEAQRABAGohAACtCQEAYKYAAAAMAQBUBQAArQUBAP///////wAAcgMAAM4CAQBoIQAApwkBAM0EAQA6DgEA////////AADNBAAArgQBADkFAABcBQEA////////AADNAQAArQEBAP///////wAAcAMAAMsCAQDNAAAAdQABABIFAAAXBQEAzAQBADcOAQDMLAAAKgsBAM8EAQBADgEAzB4AAG8IAQDMHwAARwACABAFAAAUBQEAZCEAAJsJAQDPAQAAsAEBAMwAAAByAAEARQMAAAUDAQDPAAAAewABAD8FAABuBQEAywQBADQOAQDKJAAA/gkBAMsEAACrBAEAUgUAAKcFAQDLHwAAXAkBAMsBAACpAQEA7gMAAHEDAQDDBAEAHA4BAMsAAABvAAEAwwQAAJ8EAQDJBAEALg4BAMMfAABHAAIAyQQAAKgEAQBiIQAAlQkBAMkfAABWCQEAwwAAAFYAAQDJpwAACw0BAL8EAQAQDgEAyQAAAGkAAQBQBQAAoQUBAFUAAAA7AAEAvQQBAAoOAQB2BAAAOQQBAHYeAAD9BwEAv6sAAC0HAQB2AQAAVgEBAL8cAAA9BgEAdqsAAFIGAQC9qwAAJwcBAP///////wAAvRwAADcGAQD///////8AAMgkAAD4CQEA////////AAC5JAAAywkBAFVuAQDwDwEAYCEAAI8JAQCfHwAAzAACAJ8BAAChAgEAwQQBABYOAQCfqwAAzQYBAMEEAACcBAEAnxwAAOMFAQCfDAEAFQ8BADIhAACMCQEAxiQAAPIJAQBFAgAAvwIBAMEAAABQAAEAnR8AAMIAAgCdAQAAngIBAP///////wAAnasAAMcGAQDFJAAA7wkBAJ0cAADdBQEAnQwBAA8PAQC7JAAA0QkBAM0QAADMCwEAmx4AANsHAQCbHwAAuAACADD/AABKDQEA////////AACbqwAAwQYBAEMBAAALAQEAmxwAANcFAQCbDAEACQ8BAEMAAAAGAAEAmR4AACoAAgCZHwAArgACAN4DAABZAwEA////////AACZqwAAuwYBAJUfAADCAAIAmRwAANEFAQCZDAEAAw8B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ANEAAACBAAEA////////AAD0AwAAAAMBABUEAQCqDQEAFSwAAE8KAQAVBAAAkQMBABMEAQCkDQEAEywAAEkKAQATBAAAigMBAOwDAABuAwEAIf8AAB0NAQAPBAEAmA0BAA8sAAA9CgEADwQAABQEAQD///////8AAA8fAADSCAEA////////AADBJAAA4wkBAFUFAACwBQEA6gMAAGsDAQD///////8AAA0EAQCSDQEADSwAADcKAQANBAAADgQBAHYFAQBhDgEADR8AAMwIAQD///////8AAOgDAABoAwEA////////AAD///////8AADb/AABcDQEACwQBAIwNAQALLAAAMQoBAAsEAAAIBAEA////////AAALHwAAxggBAP///////wAA////////AADmAwAAZQMBAAkEAQCGDQEACSwAACsKAQAJBAAAAgQBAOQDAABiAwEACR8AAMAIAQAFBAEAeg0BAAUsAAAfCgEABQQAAPYDAQADBAEAdA0BAAMsAAAZCgEAAwQAAPADAQD///////8AANwDAABWAwEA////////AAArIQAAXAABAAEEAQBuDQEAASwAABMKAQABBAAA6gMBAPwEAAD2BAEA/B4AALcIAQD8HwAAYAACAPwBAADwAQEA////////AAD///////8AAEMFAAB6BQEA+AQAAPAEAQD4HgAAsQgBAPgfAABlCQEA+AEAAOoBAQAnBAEA4A0BACcsAACFCgEAJwQAAMsDAQCVBQEAtQ4BAPYEAADtBAEA9h4AAK4IAQD2HwAAXAACAPYBAAB0AQEAegQAAD8EAQB6HgAAAwgBAEsfAAAgCQEA////////AAA+AgAApgoBAHqrAABeBgEASwAAABsAAQAfBAEAyA0BAB8sAABtCgEAHwQAALADAQCDBQEAhQ4BAP///////wAAOP8AAGINAQD///////8AADoFAABfBQEALywAAJ0KAQAvBAAA5AMBAP///////wAALx8AAPwIAQBJBQAAjAUBAP///////wAAS24BANIPAQA0/wAAVg0BAC0sAACXCgEALQQAAN4DAQD///////8AAC0fAAD2CAEAgQUBAH8OAQB/BQEAeQ4BACv/AAA7DQEAKSwAAIsKAQApBAAA0QMBAP///////wAAKR8AAOoIAQAlBAEA2g0BACUsAAB/CgEAJQQAAMUDAQAjBAEA1A0BACMsAAB5CgEAIwQAAL8DAQARBAEAng0BABEsAABDCgEAEQQAAIMDAQAHBAEAgA0BAAcsAAAlCgEABwQAAPwDAQD///////8AAP///////wAAziQAAAoKAQD///////8AAEECAABKAgEA////////AAD///////8AAPwTAAA8BwEA////////AABCBQAAdwUBAP///////wAA////////AAD///////8AAP///////wAA+BMAADAHAQD///////8AAP///////wAA0QMAAAADAQD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAAh6QEAdBABAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAD4FAABrBQEA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAAn/wAALw0BAP///////wAA////////AAA2BQAAUwUBAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAAUwUAAKoFAQD///////8AAP///////wAA////////AABABQAAcQUBAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAC//AABHDQEA////////AAD///////8AAP///////wAAeAUBAGcOAQD///////8AABfpAQBWEAEA////////AAAt/wAAQQ0BAP///////wAAdAUBAFsOAQD///////8AAP///////wAAQQUAAHQFAQD///////8AACn/AAA1DQEA////////AAD///////8AAP///////wAA////////AAAl/wAAKQ0BAP///////wAA////////AAAj/wAAIw0BAB3pAQBoEAEA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAFEFAACkBQEA////////AAD///////8AAP///////wAA////////AAD///////8AADgFAABZBQEA////////AAD///////8AAP///////wAAG+kBAGIQAQD///////8AAP///////wAA////////AAD///////8AAP///////wAANAUAAE0FAQAZ6QEAXBABAP///////wAA////////AAD///////8AAE8FAACeBQEA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAAFekBAFAQAQD///////8AAP///////wAAE+kBAEoQAQD///////8AAP///////wAA////////AAD///////8AAA/pAQA+EAEA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAAF/sAAHUAAgD///////8AAP///////wAADekBADgQAQD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAAL6QEAMhABAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAACekBACwQAQD///////8AAP///////wAA////////AAD///////8AAAXpAQAgEAEA////////AAD///////8AAAPpAQAaEAEA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAAAekBABQQAQD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAAV+wAAcQACAP///////wAA////////AAAT+wAAeQACAP///////wAA////////AAD///////8AAB/pAQBuEAEA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAB6BQEAbQ4BAP///////wAASwUAAJIFAQD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8AABHpAQBEEAEABfsAAB0AAgD///////8AAAfpAQAmEAEAA/sAAAAAAwD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAAB+wAACAACAP//////////cgdLB9IAqwBuDYcHzwznAG4BIwX8BEgMxgxzDjgFHQL2ATAIbwSDAS8CvwLrCuQMcA7rBycERAHACBsA8wioDEwGMQBiBZUNwwiUA3cFnwCSAiIKDwxJBp4C4gceBDsB0g8MAKMKnwznD9UIUAVGBlMJQA6uCO0EgwKVCQYMEQleDtsHFwQ1AcAPAACgCpkMRAlSDkQF+A2KCMkEyAEFBH0CRQsADI4K/g2NCMwEywG0D1AASAtXBzgJtwBxDagLWgtxAcMLXQcIBb0A/QYRBF0L+QMCApoKDgWCCsICAweGCWgNCAIKDpMI0gTRAWsCXACHC6sLBA6QCM8EzgGxC1YASwuFDnsHawHbALkC8g2HCMYExQFcDSwFQgsPB4kJaQezAskACQB9DV4GCQe9CE0FGgXmDYEIwAQrBuoIFAI8CxQN9wZgBHcBFQ+9D9wK1QxVDkEJ5Ah+CL0EGw/jBacFOQsRDTkMegHrBqoCswXpBVgOcgsWDpkI2ATXAbUOaQC/DX4LwgMLAXcN5QZMClkDEA6WCNUE1AEnD2MA7wkLBFwDlAaaBpQKIQ8bB/UF9QmfC64PVwtcASMJdwLvBbQMDw+6C5UFFQcmDewNhAjDBAMA+QjdBT8LjgZHBZYLYgMFEAAIPAQDD3EJRwABCl8DrQWzCYwFtw+lANEF+wk7CfEGdQi0BFYD/Q6ZCzALDg38D4EL6QmoBGgJfQHLBb8JCw2qCWQOYwQzD6gPUAPfCtgMWw7IAtMGgAndCQEGvA2uB78DLQ88DL4GSQpsDE0DnA/fBxoEOAH7BQYA1wmcDEMO0gtKBREDGAOTAHsLaAOAApYPAwwgCScIVwQNCgkPug/TCswMIw0+CWUD9wczBFAB1wU0ALIKBwowDAoDegX0BzAETQF1Cy4A1wJvCz0O//90BesOOgaQAOoPFw2bAnkOVglTA9YOuQVvCJgJ5A///+MJKgtQCTQOqAjnBOMBkgmHAFQLUgaiDygOogjhBOABag57ACIOnwjeBN0BxwZ1ALoI+QTzAcUJqAA+AzkHHA6cCNsE2gFABm8A//+EDy0H6AckBEEBLgZ3ECcHpQxvD5UBXAXlByEEPgGmDhIAjAKiDAwMIQdWBQ0ONw4XEMwPJhBgAIoACQx6A8YH8AMgAYIGxg95CoQM7QhKCToOqwjqBOcBKAaNAGUC3w7rCxIHPAfOAv/////MB/wDJgFNECwJhQqKDMsCaw3//0UPHwZTDT8HoAZuAj8P8QuuBK0BEwb9BzkEVgHnCEEADQYyCUcDOQ+GBT0GwwfqAx0BXw13A3MKgQwHBv//sAH//8oG9g9xA3gPXwJiCegL//9uA70LpAngDcAH5AMaASoPKQltCn4MKRD//2sD0AZ9CU0N+AUiBlkC///lC9oNvQfeAxcBuA76AmcKewzUDboH2AMUAf//JQZhCngMVgJHDeILtwtMDrQI8wTtAVMCnADeCwQKtg2rB7YDXwElAOIOQwppDEENawWbBR4Dewi6BP//NRA7DTYLzwuMDZYHigPzANsPCxAZClQM6A4aCVEP+gc2BFMBuQk7AD4CHQ22Bd8GgAVKA3gItwT//9ECoQIzCwgJ//9RCJAEmAGsDvAPDAv2DK8OXAl7D/EHLQRKAZ4JKAAvEK4M///ZBm4FwgndDYgG4QMdEJgCiwZqCu4HKgRHAYEPIgDeD6sMdgb//2gFzwcCBCkB//9mBIsKjQwSDOIK2wxhDv/////YD/cOcQKMCfQLxQJEDckH9gMjAf//xQV/CocMhAf//+QAfQP/////RQxpBGUNNQXuC+UK3gxnDv//LALxDs4NtwfRAy8J/////1sKdQz//78F/AhZDdEJyA20B8sDUAL//9sLVQpyDPMDegKQD3QQfArCDbEHxQNNArEP2AtPCm8MNQloAjUNuQ0AA7oDCAHLCQUDRgrVCy4OpQjkBP//Lw2BAOwCig9KAiYJVg2PAZgNnAeXA/kAlw4pDSUKWgwdCUgH//+SDZkHkQP2ADMHIA0fClcMeg2NB8kL7QBwBncJgQdODOEAFAk+Bf//QgwGCEIEMgU1An4H///eAA4JKQKYBT8M+w3//y8F7w2kAk0AwgHpDSYC9gi/AeMNCBBpCLwBpQF0CWAIJAtiAfAItgkbCwUNRQiEBKEFAAeDCQAL9AaaDqcC/wPuBksPXQiICugGuwb//xgLAg2pBv//GQYREFoImQSeAXMGegkVC/8MpQtXCJYEmwFUCJMEEgv8DKMGDwv5DLIO//9iDeEITgiNBP//zAudBgkL8wypDsYLPwh+BIwBlwbtA/oKkQaODnYKWQHAC0oAGA+xDP//DA+PBYUGYgIGDyMQ///mBQAP0w7aBWcGSQ7BDtQF/w///5kAzgVrCdoCSwiKBFANrQn//wYL8AyjDrANqAewA7sO2wj//z0KZgznA///8gn//3AK5gmTCzoDRALgCX8GJgP//9oJXAL//6UP///pAs8Inw8zCHIEhgGZD2wP7grnDHYOWg8iAy0IbASAAUoN///oCuEMbQ7JCF0EGwMDCD8E2QrSDE8OTwZUDxUD//+SBQ4DDwiRDmUBNgxDBrsKvQz//24QqgX9Ao0LAhC5Af//rQJuCRgMQgfgAmoGsAk0BtIHCAQsATEORBCRCpAMsw2EALMDBQFpC///QAriBnQCJQ73C4YNkweDA3gAUQtHAhMK//+ADZAH///wADYHYwv2AlEMOwIXCUEFdA2KB/UN6gD//zgCKgdLDP//Agk7Bf//Rg6xCPAE6gEyApYAHw7//xMOBw62AXIATgtmAFkAAQ6zAfoG/////1MAcgixBKsEqQFsCC0LZgj6Dv//Jwv//yELJAfcBhgHDAebDcgFmgPWBtQCBgcoCk4P///jAs0GxAYgEKUEwQb//7UGHAYIDacNQg+mA/8A/////zQK//+iBKEBYwgQBgwISATUCR4LQQK4CroMuAaLDqQF//90AxIPkw///x8ArwoVDEgIhwRlBbIG4AUDC68GnQ6VAmQGPA/0DjAPJA8xBv//1Q/uDnEQHg8KBsIF/gXyBeUO3A55BrwF2Q7sBc0O//9CCIEE/////+wJ/QpQEJQO////////iQGqDaUHqQOrD38OShA3CmMM0A7OCQoK/gn//zIQbQbICUQD+AkaEEEDjQ80A8oOWAb//8cOhw8bCEsEFBD//ysOxwp+D3UP//9+AHIP//9mDzkIeAS8AjcDJAz0Cu0Mgg42CHUECQhFBP//8QrqDHwOtwwwAzAHngUtA2kPEgjdAmgB//9bBr4KwAz/////sAX//w4QVQZjDz4AtQpgDxsM8AKDBbwJDwCmCrcI9gTwAVMFogD//9gHFAQyAYYC8w+dCpYMZgdfCcYA///DD///oQn//0cJFwX9C9UHDgQvAeYCEQKXCpMMpA2iB6MD/////0gPMQpgDJ8E3gj6C54NnwedA2MHFgbDACsKXQxUBxkOtABRBxQFsQBsAP////8FBQ4CTgcCBa4ArAb/ATwIewT8Af///wT3CtgIiA5oEP//+QHSCB4H///MCCoIWgR0ASQIVATWCv//xgjQCskM//9hBv//////////FQgzDDcGRAAtDMEKwwz//4kFOADLDZALzgMRAX0FsAJYCh4M//8rAP//jw35D40DcQX//2UJHArtD///xA6nCVkJ//8YAKwK//+bCeEPXwX/////TQmKCzYPjwIyDY8JbAsLCf//ZgucBM8PBAYVAKkK/////2ALWQXFDf//yAMOASoDiQJSCmsQrQ3//6wDAgH//8kPOgr//6YGoQ0+EKAD/AD//10PLgoYCIkNOBCGA4MNxAqAAxYK//94BxAK2AAsDSwQ//+2Av//IQwpBXUH1w3VANsD//8jApIBZAr//yYFBQmgDm8H/wjPACACbAdgB8wAwABaByAFugAhCFEEHQURBRoCzQoLBXwGFwILAh4ITgQFAr4OPg3KCtENKgzUA///UxD//14K//////////8nDP////////////////////////////9fEEUH/////////////////////////////zgN////////////////////////tAv///////9XD/////////////+uC/////////////////////////////+iC////////5wLhAv/////eAv////////////////////////////////zAv//////////////////YhD/////////////Gg3//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1wQ//////////////////////////9WEP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////0cQ/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2UQ/////////////////////1kQ//////////////////9BEP////87EAAAAAAAAGUA/QBMAB0AGADvAGAARwBcAEMABAA+AAgAOgDqAG0ApABYAFQAUADWAAAANgAFATIAaQB5AH0AAQEqACYA+QAuAHUADABxAPQA5QDgANsA0QAQAMwAxwDCAL0AuACzAK4AqQAUACIAnwCaAJUAkACLAIYAgQBB8IkRC+EIPgAvAB8AOQApABkANAAkABQAQwAPAAoABQAAAAAAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAMAAAADAAAAAwAAAAMA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AAAABAUAAAcFAAABAAAABgUAAAkFAAABAAAACAUAAAsFAAABAAAACgUAAA0FAAABAAAADAUAAA8FAAABAAAADgUAABEFAAABAAAAEAUAABMFAAABAAAAEgUAABUFAAABAAAAFAUAABcFAAABAAAAFgUAABkFAAABAAAAGAUAABsFAAABAAAAGgUAAB0FAAABAAAAHAUAAB8FAAABAAAAHgUAACEFAAABAAAAIAUAACMFAAABAAAAIgUAACUFAAABAAAAJAUAACcFAAABAAAAJgUAACkFAAABAAAAKAUAACsFAAABAAAAKgUAAC0FAAABAAAALAUAAC8FAAABAAAALgUAAGEFAAABAAAAMQUAAGIFAAABAAAAMgUAAGMFAAABAAAAMwUAAGQFAAABAAAANAUAAGUFAAABAAAANQUAAGYFAAABAAAANgUAAGcFAAABAAAANwUAAGgFAAABAAAAOAUAAGkFAAABAAAAOQUAAGoFAAABAAAAOgUAAGsFAAABAAAAOwUAAGwFAAABAAAAPAUAAG0FAAABAAAAPQUAAG4FAAABAAAAPgUAAG8FAAABAAAAPwUAAHAFAAABAAAAQAUAAHEFAAABAAAAQQUAAHIFAAABAAAAQgUAAHMFAAABAAAAQwUAAHQFAAABAAAARAUAAHUFAAABAAAARQUAAHYFAAABAAAARgUAAHcFAAABAAAARwUAAHgFAAABAAAASAUAAHkFAAABAAAASQUAAHoFAAABAAAASgUAAHsFAAABAAAASwUAAHwFAAABAAAATAUAAH0FAAABAAAATQUAAH4FAAABAAAATgUAAH8FAAABAAAATwUAAIAFAAABAAAAUAUAAIEFAAABAAAAUQUAAIIFAAABAAAAUgUAAIMFAAABAAAAUwUAAIQFAAABAAAAVAUAAIUFAAABAAAAVQUAAIYFAAABAAAAVgUAANAQAAABAAAAkBwAANEQAAABAAAAkRwAANIQAAABAAAAkhwAANMQAAABAAAAkxwAANQQAAABAAAAlBwAANUQAAABAAAAlRwAANYQAAABAAAAlhwAANcQAAABAAAAlxwAANgQAAABAAAAmBwAANkQAAABAAAAmRwAANoQAAABAAAAmhwAANsQAAABAAAAmxwAANwQAAABAAAAnBwAAN0QAAABAAAAnRwAAN4QAAABAAAAnhwAAN8QAAABAAAAnxwAAOAQAAABAAAAoBwAAOEQAAABAAAAoRwAAOIQAAABAAAAohwAAOMQAAABAAAAoxwAAOQQAAABAAAApBwAAOUQAAABAAAApRwAAOYQAAABAAAAphwAAOcQAAABAAAApxwAAOgQAAABAAAAqBwAAOkQAAABAAAAqRwAAOoQAAABAAAAqhwAAOsQAAABAAAAqxwAAOwQAAABAAAArBwAAO0QAAABAAAArRwAAO4QAAABAAAArhwAAO8QAAABAAAArxwAAPAQAAABAAAAsBwAAPEQAAABAAAAsRwAAPIQAAABAAAAshwAAPMQAAABAAAAsxwAAPQQAAABAAAAtBwAAPUQAAABAAAAtRwAAPYQAAABAAAAthwAAPcQAAABAAAAtxwAAPgQAAABAAAAuBwAAPkQAAABAAAAuRwAAPoQAAABAAAAuhwAAP0QAAABAAAAvRwAAP4QAAABAAAAvhwAAP8QAAABAAAAvxwAAKATAAABAAAAcKsAAKETAAABAAAAcasAAKITAAABAAAAcqsAAKMTAAABAAAAc6sAAKQTAAABAAAAdKsAAKUTAAABAAAAdasAAKYTAAABAAAAdqsAAKcTAAABAAAAd6sAAKgTAAABAAAAeKsAAKkTAAABAAAAeasAAKoTAAABAAAAeqsAAKsTAAABAAAAe6sAAKwTAAABAAAAfKsAAK0TAAABAAAAfasAAK4TAAABAAAAfqsAAK8TAAABAAAAf6sAALATAAABAAAAgKsAALETAAABAAAAgasAALITAAABAAAAgqsAALMTAAABAAAAg6sAALQTAAABAAAAhKsAALUTAAABAAAAhasAALYTAAABAAAAhqsAALcTAAABAAAAh6sAALgTAAABAAAAiKsAALkTAAABAAAAiasAALoTAAABAAAAiqsAALsTAAABAAAAi6sAALwTAAABAAAAjKsAAL0TAAABAAAAjasAAL4TAAABAAAAjqsAAL8TAAABAAAAj6sAAMATAAABAAAAkKsAAMETAAABAAAAkasAAMITAAABAAAAkqsAAMMTAAABAAAAk6sAAMQTAAABAAAAlKsAAMUTAAABAAAAlasAAMYTAAABAAAAlqsAAMcTAAABAAAAl6sAAMgTAAABAAAAmKsAAMkTAAABAAAAmasAAMoTAAABAAAAmqsAAMsTAAABAAAAm6sAAMwTAAABAAAAnKsAAM0TAAABAAAAnasAAM4TAAABAAAAnqsAAM8TAAABAAAAn6sAANATAAABAAAAoKsAANETAAABAAAAoasAANITAAABAAAAoqsAANMTAAABAAAAo6sAANQTAAABAAAApKsAANUTAAABAAAApasAANYTAAABAAAApqsAANcTAAABAAAAp6sAANgTAAABAAAAqKsAANkTAAABAAAAqasAANoTAAABAAAAqqsAANsTAAABAAAAq6sAANwTAAABAAAArKsAAN0TAAABAAAArasAAN4TAAABAAAArqsAAN8TAAABAAAAr6sAAOATAAABAAAAsKsAAOETAAABAAAAsasAAOITAAABAAAAsqsAAOMTAAABAAAAs6sAAOQTAAABAAAAtKsAAOUTAAABAAAAtasAAOYTAAABAAAAtqsAAOcTAAABAAAAt6sAAOgTAAABAAAAuKsAAOkTAAABAAAAuasAAOoTAAABAAAAuqsAAOsTAAABAAAAu6sAAOwTAAABAAAAvKsAAO0TAAABAAAAvasAAO4TAAABAAAAvqsAAO8TAAABAAAAv6sAAPATAAABAAAA+BMAAPETAAABAAAA+RMAAPITAAABAAAA+hMAAPMTAAABAAAA+xMAAPQTAAABAAAA/BMAAPUTAAABAAAA/RMAAHkdAAABAAAAfacAAH0dAAABAAAAYywAAI4dAAABAAAAxqcAAAEeAAABAAAAAB4AAAMeAAABAAAAAh4AAAUeAAABAAAABB4AAAceAAABAAAABh4AAAkeAAABAAAACB4AAAseAAABAAAACh4AAA0eAAABAAAADB4AAA8eAAABAAAADh4AABEeAAABAAAAEB4AABMeAAABAAAAEh4AABUeAAABAAAAFB4AABceAAABAAAAFh4AABkeAAABAAAAGB4AABseAAABAAAAGh4AAB0eAAABAAAAHB4AAB8eAAABAAAAHh4AACEeAAABAAAAIB4AACMeAAABAAAAIh4AACUeAAABAAAAJB4AACceAAABAAAAJh4AACkeAAABAAAAKB4AACseAAABAAAAKh4AAC0eAAABAAAALB4AAC8eAAABAAAALh4AADEeAAABAAAAMB4AADMeAAABAAAAMh4AADUeAAABAAAANB4AADceAAABAAAANh4AADkeAAABAAAAOB4AADseAAABAAAAOh4AAD0eAAAB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LAAAAQAAABMsAABELAAAAQAAABQsAABFLAAAAQAAABUsAABGLAAAAQAAABYsAABHLAAAAQAAABcsAABILAAAAQAAABgsAABJLAAAAQAAABksAABKLAAAAQAAABosAABLLAAAAQAAABssAABMLAAAAQAAABwsAABNLAAAAQAAAB0sAABOLAAAAQAAAB4sAABPLAAAAQAAAB8sAABQLAAAAQAAACAsAABRLAAAAQAAACEsAABSLAAAAQAAACIsAABTLAAAAQAAACMsAABULAAAAQAAACQsAABVLAAAAQAAACUsAABWLAAAAQAAACYsAABXLAAAAQAAACcsAABYLAAAAQAAACgsAABZLAAAAQAAACksAABaLAAAAQAAACosAABbLAAAAQAAACssAABcLAAAAQAAACwsAABdLAAAAQAAAC0sAABeLAAAAQAAAC4sAABfLAAAAQAAAC8sAABhLAAAAQAAAGAsAABlLAAAAQAAADoCAABmLAAAAQAAAD4CAABoLAAAAQAAAGcsAABqLAAAAQAAAGksAABsLAAAAQAAAGssAABzLAAAAQAAAHIsAAB2LAAAAQAAAHUsAACBLAAAAQAAAIAsAACDLAAAAQAAAIIsAACFLAAAAQAAAIQsAACHLAAAAQAAAIYsAACJLAAAAQAAAIgsAACLLAAAAQAAAIosAACNLAAAAQAAAIwsAACPLAAAAQAAAI4sAACRLAAAAQAAAJAsAACTLAAAAQAAAJIsAACVLAAAAQAAAJQsAACXLAAAAQAAAJYsAACZLAAAAQAAAJgsAACbLAAAAQAAAJosAACdLAAAAQAAAJwsAACfLAAAAQAAAJ4sAAChLAAAAQAAAKAsAACjLAAAAQAAAKIsAAClLAAAAQAAAKQsAACnLAAAAQAAAKYsAACpLAAAAQAAAKgsAACrLAAAAQAAAKosAACtLAAAAQAAAKwsAACvLAAAAQAAAK4sAACxLAAAAQAAALAsAACzLAAAAQAAALIsAAC1LAAAAQAAALQsAAC3LAAAAQAAALYsAAC5LAAAAQAAALgsAAC7LAAAAQAAALosAAC9LAAAAQAAALwsAAC/LAAAAQAAAL4sAADBLAAAAQAAAMAsAADDLAAAAQAAAMIsAADFLAAAAQAAAMQsAADHLAAAAQAAAMYsAADJLAAAAQAAAMgsAADLLAAAAQAAAMosAADN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AgAwJgIAgCYCAOAmAgD0JgIAACcCALA+AgAAUwIAoFMCAMBTAgCwVAIA0FQCAPBUAgAMVQIAIFUCAEBVAgCwVQIAcFYCAJBWAgDgVgIAAFcCADBXAgBQVwIAcFcCAMBrAgBAcAIAoHACAOBxAgAAcgIAMHICAFByAgCQcgIAsHICAECHAgBwiQIAIJkCAOC6AABgmQIAwJkCAPStAgAArgIAIK4CAHy3AgCItwIAoLcCAOC3AgAAuAIAILgCAEC4AgCAuAIA4LwCAHDCAgCcwgIAsMICANDCAgDwwgIADMMCACDDAgBAwwIA0M0CAPDNAgAwzgIAUM4CAIDOAgCgzgIA4NICAADTAgDgogAAINMCAFDTAgBw0wIAkNMCAADUAgBA1gIA4NYCAADXAgAk1wIAMNcCAEDXAgBg1wIAdNcCAIDXAgCQ1wIApNcCALDXAgC81wIAyNcCAODXAgBg2AIAgNgCAKDYAgDw3wIAUOACACDhAgBQ4QIAgOECAFDiAgCQ5gIAwOUAAMDmAgDs5gIAAOcCAPDnAgAc6AIAMOgCAHDoAgAQ6QIAgOsCANTrAgDg6wIAAOwCAGDsAgAw8gIAcPICAPD0AgAQ9QIAgPUCAJz1AgCw9QIA0PUCAPD1AgBQ/QIAcP0CAJD9AgBA/gIAvAADAMgAAwDgAAMAAAEDACABAwCQAQMAkAIDAKAEAwCACgMAhAsDAJALAwCkCwMAsAsDAMQLAwDQCwMAAAwDACAMAwBADAMAYAwDAJAMAwCwDAMA0AwDAHANAwCQDQMAwA0DADAOAwCMEQMAoBEDAMARAwAAEgMAIBIDADQSAwBAEgMAYBIDAOASAwAQ7AAApCgDALAoAwDgKAMAMCkDAFApAwCw6wAAcCkDAFBBAwDQVQMA8FUDABBWAwBUVgMAYFYDAGxWAwCAVgMAFDABALxWAwDIVgMA1FYDAOBWAwDsVgMA+FYDAARXAwAQVwMAHFcDAChXAwA0VwMAQFcDAExXAwBYVwMAZFcDAHBXAwB8VwMAiFcDAJRXAwCgVwMArFcDALhXAwDEVwMA0FcDANxXAwDoVwMA9FcDAABYAwAMWAMAGFgDACRYAwAwWAMAPFgDAEhYAwBUWAMAYFgDAGxYAwB4WAMAhFgDAJBYAwCcWAMAqFgDALRYAwDAWAMAzFgDANhYAwDkWAMA8FgDAPxYAwAIWQMAFFkDACBZAwAsWQMAOFkDAERZAwBQWQMAXFkDAGhZAwB0WQMAgFkDAIxZAwAw1wIAmFkDAKRZAwCwWQMAvFkDAMhZAwDUWQMA4FkDAOxZAwD4WQMABFoDABBaAwAcWgMAKFoDADRaAwBAWgMATFoDAFhaAwBkWgMAcFoDAHxaAwCIWgMAlFoDAKBaAwCsWgMAuFoDAMRaAwDQWgMA3FoDABxKAQDoWgMA9FoDAABbAwAMWwMAGFsDACRbAwAwWwMAPFsDAEhbAwBUWwMAYFsDAGxbAwB4WwMAhFsDAJBbAwCcWwMAqFsDALRbAwDAWwMAzFsDANhbAwDkWwMA8FsDAPxbAwAIXAMAFFwDACBcAwAsXAMAOFwDAERcAwBQXAMAXFwDAGhcAwB0XAMAgFwDAIxcAwCYXAMApFwDALBcAwC8XAMAyFwDANRcAwDgXAMA7FwDAPhcAwAEXQMAEF0DABxdAwAoXQMANF0DAEBdAwBMXQMAWF0DAGRdAwBwXQMAfF0DAIhdAwCUXQMAoF0DAKxdAwC4XQMAxF0DANBdAwDcXQMA6F0DAPRdAwAAXgMADF4DABheAwAkXgMAMF4DADxeAwBIXgMAVF4DAGBeAwBsXgMAeF4DAIReAwCQXgMAnF4DAKheAwC0XgMAwF4DAMxeAwDYXgMA5F4DAPTjAQDIAAMA8F4DAPxeAwAIXwMAFF8DACBfAwAsXwMAOF8DAERfAwBQXwMA7OYCAFxfAwBoXwMAdF8DAIBfAwAMwwIAjF8DAJhfAwCw1wIAdNcCAKRfAwCwXwMAvF8DAMhfAwDUXwMA4F8DAOxfAwD4XwMABGADABBgAwAcYAMAKGADADRgAwBAYAMATGADAFhgAwBkYAMAcGADAHxgAwCIYAMAvAADAJRgAwCgYAMArGADALhgAwDEYAMA0GADANxgAwDoYAMA9GADAABhAwAMYQMAGGEDACRhAwAwYQMAPGEDAEhhAwBUYQMAYGEDAGxhAwB4YQMAhGEDAJBhAwCcYQMAqGEDALRhAwDAYQMAzGEDANhhAwDkYQMA8GEDAPxhAwAIYgMAFGIDACBiAwAsYgMAOGIDAERiAwBQYgMAXGIDAGhiAwB0YgMAgGIDAIxiAwCYYgMApGIDALBiAwC8YgMAyGIDANRiAwDgYgMA7GIDAPhiAwAEYwMAEGMDABxjAwAoYwMANGMDAEBjAwBMYwMAWGMDAGRjAwBwYwMAfGMDAIhjAwCUYwMAoGMDAKxjAwC4YwMAxGMDANBjAwDcYwMA6GMDAPRjAwAAZAMADGQDABhkAwAkZAMAMGQDADxkAwBIZAMAVGQDAGBkAwBsZAMAeGQDAIRkAwCQZAMAnGQDAKhkAwC0ZAMAwGQDAMxkAwDYZAMA5GQDAPBkAwD8ZAMACGUDABRlAwAgZQMALGUDADhlAwBQZQMAFQAAAAsFAAABAAAAAQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAAAAAAIwAAAAUAQey9Egs9JAAAAEMFAAAEAAAAAQAAABYAAAAlAAAAJgAAACcAAAAoAAAAKQAAACoAAAArAAAALAAAAC0AAAAuAAAAIQBBtL4SCwUvAAAAHwBByL4SCwEFAEHUvhILATAAQey+EgsOMQAAADIAAABooQQAAAQAQYS/EgsBAQBBlL8SCwX/////CgBB2L8SCwPQx1Q="),A=>A.charCodeAt(0));export{B as default}; diff --git a/playground/assets/vue.worker-t8qPTCzg-CUZqhcvh.js b/playground/assets/vue.worker-t8qPTCzg-CUZqhcvh.js new file mode 100644 index 00000000..95ed6521 --- /dev/null +++ b/playground/assets/vue.worker-t8qPTCzg-CUZqhcvh.js @@ -0,0 +1,151326 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +// Avoid circular dependency on EventEmitter by implementing a subset of the interface. +class ErrorHandler { + constructor() { + this.listeners = []; + this.unexpectedErrorHandler = function (e) { + setTimeout(() => { + if (e.stack) { + if (ErrorNoTelemetry.isErrorNoTelemetry(e)) { + throw new ErrorNoTelemetry(e.message + '\n\n' + e.stack); + } + throw new Error(e.message + '\n\n' + e.stack); + } + throw e; + }, 0); + }; + } + emit(e) { + this.listeners.forEach((listener) => { + listener(e); + }); + } + onUnexpectedError(e) { + this.unexpectedErrorHandler(e); + this.emit(e); + } + // For external errors, we don't want the listeners to be called + onUnexpectedExternalError(e) { + this.unexpectedErrorHandler(e); + } +} +const errorHandler = new ErrorHandler(); +function onUnexpectedError(e) { + // ignore errors from cancelled promises + if (!isCancellationError(e)) { + errorHandler.onUnexpectedError(e); + } + return undefined; +} +function transformErrorForSerialization(error) { + if (error instanceof Error) { + const { name, message } = error; + const stack = error.stacktrace || error.stack; + return { + $isError: true, + name, + message, + stack, + noTelemetry: ErrorNoTelemetry.isErrorNoTelemetry(error) + }; + } + // return as is + return error; +} +const canceledName = 'Canceled'; +/** + * Checks if the given error is a promise in canceled state + */ +function isCancellationError(error) { + if (error instanceof CancellationError) { + return true; + } + return error instanceof Error && error.name === canceledName && error.message === canceledName; +} +// !!!IMPORTANT!!! +// Do NOT change this class because it is also used as an API-type. +class CancellationError extends Error { + constructor() { + super(canceledName); + this.name = this.message; + } +} +/** + * Error that when thrown won't be logged in telemetry as an unhandled error. + */ +class ErrorNoTelemetry extends Error { + constructor(msg) { + super(msg); + this.name = 'CodeExpectedError'; + } + static fromError(err) { + if (err instanceof ErrorNoTelemetry) { + return err; + } + const result = new ErrorNoTelemetry(); + result.message = err.message; + result.stack = err.stack; + return result; + } + static isErrorNoTelemetry(err) { + return err.name === 'CodeExpectedError'; + } +} +/** + * This error indicates a bug. + * Do not throw this for invalid user input. + * Only catch this error to recover gracefully from bugs. + */ +class BugIndicatingError extends Error { + constructor(message) { + super(message || 'An unexpected bug occurred.'); + Object.setPrototypeOf(this, BugIndicatingError.prototype); + // Because we know for sure only buggy code throws this, + // we definitely want to break here and fix the bug. + // eslint-disable-next-line no-debugger + // debugger; + } +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +/** + * Given a function, returns a function that is only calling that function once. + */ +function createSingleCallFunction(fn, fnDidRunCallback) { + const _this = this; + let didCall = false; + let result; + return function () { + if (didCall) { + return result; + } + didCall = true; + if (fnDidRunCallback) { + try { + result = fn.apply(_this, arguments); + } + finally { + fnDidRunCallback(); + } + } + else { + result = fn.apply(_this, arguments); + } + return result; + }; +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +var Iterable; +(function (Iterable) { + function is(thing) { + return thing && typeof thing === 'object' && typeof thing[Symbol.iterator] === 'function'; + } + Iterable.is = is; + const _empty = Object.freeze([]); + function empty() { + return _empty; + } + Iterable.empty = empty; + function* single(element) { + yield element; + } + Iterable.single = single; + function wrap(iterableOrElement) { + if (is(iterableOrElement)) { + return iterableOrElement; + } + else { + return single(iterableOrElement); + } + } + Iterable.wrap = wrap; + function from(iterable) { + return iterable || _empty; + } + Iterable.from = from; + function* reverse(array) { + for (let i = array.length - 1; i >= 0; i--) { + yield array[i]; + } + } + Iterable.reverse = reverse; + function isEmpty(iterable) { + return !iterable || iterable[Symbol.iterator]().next().done === true; + } + Iterable.isEmpty = isEmpty; + function first(iterable) { + return iterable[Symbol.iterator]().next().value; + } + Iterable.first = first; + function some(iterable, predicate) { + for (const element of iterable) { + if (predicate(element)) { + return true; + } + } + return false; + } + Iterable.some = some; + function find(iterable, predicate) { + for (const element of iterable) { + if (predicate(element)) { + return element; + } + } + return undefined; + } + Iterable.find = find; + function* filter(iterable, predicate) { + for (const element of iterable) { + if (predicate(element)) { + yield element; + } + } + } + Iterable.filter = filter; + function* map(iterable, fn) { + let index = 0; + for (const element of iterable) { + yield fn(element, index++); + } + } + Iterable.map = map; + function* concat(...iterables) { + for (const iterable of iterables) { + yield* iterable; + } + } + Iterable.concat = concat; + function reduce(iterable, reducer, initialValue) { + let value = initialValue; + for (const element of iterable) { + value = reducer(value, element); + } + return value; + } + Iterable.reduce = reduce; + /** + * Returns an iterable slice of the array, with the same semantics as `array.slice()`. + */ + function* slice(arr, from, to = arr.length) { + if (from < 0) { + from += arr.length; + } + if (to < 0) { + to += arr.length; + } + else if (to > arr.length) { + to = arr.length; + } + for (; from < to; from++) { + yield arr[from]; + } + } + Iterable.slice = slice; + /** + * Consumes `atMost` elements from iterable and returns the consumed elements, + * and an iterable for the rest of the elements. + */ + function consume(iterable, atMost = Number.POSITIVE_INFINITY) { + const consumed = []; + if (atMost === 0) { + return [consumed, iterable]; + } + const iterator = iterable[Symbol.iterator](); + for (let i = 0; i < atMost; i++) { + const next = iterator.next(); + if (next.done) { + return [consumed, Iterable.empty()]; + } + consumed.push(next.value); + } + return [consumed, { [Symbol.iterator]() { return iterator; } }]; + } + Iterable.consume = consume; +})(Iterable || (Iterable = {})); + +function trackDisposable(x) { + return x; +} +function setParentOfDisposable(child, parent) { +} +function dispose(arg) { + if (Iterable.is(arg)) { + const errors = []; + for (const d of arg) { + if (d) { + try { + d.dispose(); + } + catch (e) { + errors.push(e); + } + } + } + if (errors.length === 1) { + throw errors[0]; + } + else if (errors.length > 1) { + throw new AggregateError(errors, 'Encountered errors while disposing of store'); + } + return Array.isArray(arg) ? [] : arg; + } + else if (arg) { + arg.dispose(); + return arg; + } +} +/** + * Combine multiple disposable values into a single {@link IDisposable}. + */ +function combinedDisposable(...disposables) { + const parent = toDisposable(() => dispose(disposables)); + return parent; +} +/** + * Turn a function that implements dispose into an {@link IDisposable}. + * + * @param fn Clean up function, guaranteed to be called only **once**. + */ +function toDisposable(fn) { + const self = trackDisposable({ + dispose: createSingleCallFunction(() => { + fn(); + }) + }); + return self; +} +/** + * Manages a collection of disposable values. + * + * This is the preferred way to manage multiple disposables. A `DisposableStore` is safer to work with than an + * `IDisposable[]` as it considers edge cases, such as registering the same value multiple times or adding an item to a + * store that has already been disposed of. + */ +class DisposableStore { + constructor() { + this._toDispose = new Set(); + this._isDisposed = false; + } + /** + * Dispose of all registered disposables and mark this object as disposed. + * + * Any future disposables added to this object will be disposed of on `add`. + */ + dispose() { + if (this._isDisposed) { + return; + } + this._isDisposed = true; + this.clear(); + } + /** + * @return `true` if this object has been disposed of. + */ + get isDisposed() { + return this._isDisposed; + } + /** + * Dispose of all registered disposables but do not mark this object as disposed. + */ + clear() { + if (this._toDispose.size === 0) { + return; + } + try { + dispose(this._toDispose); + } + finally { + this._toDispose.clear(); + } + } + /** + * Add a new {@link IDisposable disposable} to the collection. + */ + add(o) { + if (!o) { + return o; + } + if (o === this) { + throw new Error('Cannot register a disposable on itself!'); + } + if (this._isDisposed) { + if (!DisposableStore.DISABLE_DISPOSED_WARNING) { + console.warn(new Error('Trying to add a disposable to a DisposableStore that has already been disposed of. The added object will be leaked!').stack); + } + } + else { + this._toDispose.add(o); + } + return o; + } + /** + * Deletes the value from the store, but does not dispose it. + */ + deleteAndLeak(o) { + if (!o) { + return; + } + if (this._toDispose.has(o)) { + this._toDispose.delete(o); + } + } +} +DisposableStore.DISABLE_DISPOSED_WARNING = false; +/** + * Abstract base class for a {@link IDisposable disposable} object. + * + * Subclasses can {@linkcode _register} disposables that will be automatically cleaned up when this object is disposed of. + */ +class Disposable { + constructor() { + this._store = new DisposableStore(); + setParentOfDisposable(this._store); + } + dispose() { + this._store.dispose(); + } + /** + * Adds `o` to the collection of disposables managed by this object. + */ + _register(o) { + if (o === this) { + throw new Error('Cannot register a disposable on itself!'); + } + return this._store.add(o); + } +} +/** + * A disposable that does nothing when it is disposed of. + * + * TODO: This should not be a static property. + */ +Disposable.None = Object.freeze({ dispose() { } }); + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +let Node$4 = class Node { + constructor(element) { + this.element = element; + this.next = Node.Undefined; + this.prev = Node.Undefined; + } +}; +Node$4.Undefined = new Node$4(undefined); +class LinkedList { + constructor() { + this._first = Node$4.Undefined; + this._last = Node$4.Undefined; + this._size = 0; + } + get size() { + return this._size; + } + isEmpty() { + return this._first === Node$4.Undefined; + } + clear() { + let node = this._first; + while (node !== Node$4.Undefined) { + const next = node.next; + node.prev = Node$4.Undefined; + node.next = Node$4.Undefined; + node = next; + } + this._first = Node$4.Undefined; + this._last = Node$4.Undefined; + this._size = 0; + } + unshift(element) { + return this._insert(element, false); + } + push(element) { + return this._insert(element, true); + } + _insert(element, atTheEnd) { + const newNode = new Node$4(element); + if (this._first === Node$4.Undefined) { + this._first = newNode; + this._last = newNode; + } + else if (atTheEnd) { + // push + const oldLast = this._last; + this._last = newNode; + newNode.prev = oldLast; + oldLast.next = newNode; + } + else { + // unshift + const oldFirst = this._first; + this._first = newNode; + newNode.next = oldFirst; + oldFirst.prev = newNode; + } + this._size += 1; + let didRemove = false; + return () => { + if (!didRemove) { + didRemove = true; + this._remove(newNode); + } + }; + } + shift() { + if (this._first === Node$4.Undefined) { + return undefined; + } + else { + const res = this._first.element; + this._remove(this._first); + return res; + } + } + pop() { + if (this._last === Node$4.Undefined) { + return undefined; + } + else { + const res = this._last.element; + this._remove(this._last); + return res; + } + } + _remove(node) { + if (node.prev !== Node$4.Undefined && node.next !== Node$4.Undefined) { + // middle + const anchor = node.prev; + anchor.next = node.next; + node.next.prev = anchor; + } + else if (node.prev === Node$4.Undefined && node.next === Node$4.Undefined) { + // only node + this._first = Node$4.Undefined; + this._last = Node$4.Undefined; + } + else if (node.next === Node$4.Undefined) { + // last + this._last = this._last.prev; + this._last.next = Node$4.Undefined; + } + else if (node.prev === Node$4.Undefined) { + // first + this._first = this._first.next; + this._first.prev = Node$4.Undefined; + } + // done + this._size -= 1; + } + *[Symbol.iterator]() { + let node = this._first; + while (node !== Node$4.Undefined) { + yield node.element; + node = node.next; + } + } +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +const hasPerformanceNow = (globalThis.performance && typeof globalThis.performance.now === 'function'); +class StopWatch { + static create(highResolution) { + return new StopWatch(highResolution); + } + constructor(highResolution) { + this._now = hasPerformanceNow && highResolution === false ? Date.now : globalThis.performance.now.bind(globalThis.performance); + this._startTime = this._now(); + this._stopTime = -1; + } + stop() { + this._stopTime = this._now(); + } + elapsed() { + if (this._stopTime !== -1) { + return this._stopTime - this._startTime; + } + return this._now() - this._startTime; + } +} + +var Event; +(function (Event) { + Event.None = () => Disposable.None; + /** + * Given an event, returns another event which debounces calls and defers the listeners to a later task via a shared + * `setTimeout`. The event is converted into a signal (`Event<void>`) to avoid additional object creation as a + * result of merging events and to try prevent race conditions that could arise when using related deferred and + * non-deferred events. + * + * This is useful for deferring non-critical work (eg. general UI updates) to ensure it does not block critical work + * (eg. latency of keypress to text rendered). + * + * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned + * event is accessible to "third parties", e.g the event is a public property. Otherwise a leaked listener on the + * returned event causes this utility to leak a listener on the original event. + * + * @param event The event source for the new event. + * @param disposable A disposable store to add the new EventEmitter to. + */ + function defer(event, disposable) { + return debounce(event, () => void 0, 0, undefined, true, undefined, disposable); + } + Event.defer = defer; + /** + * Given an event, returns another event which only fires once. + * + * @param event The event source for the new event. + */ + function once(event) { + return (listener, thisArgs = null, disposables) => { + // we need this, in case the event fires during the listener call + let didFire = false; + let result = undefined; + result = event(e => { + if (didFire) { + return; + } + else if (result) { + result.dispose(); + } + else { + didFire = true; + } + return listener.call(thisArgs, e); + }, null, disposables); + if (didFire) { + result.dispose(); + } + return result; + }; + } + Event.once = once; + /** + * Maps an event of one type into an event of another type using a mapping function, similar to how + * `Array.prototype.map` works. + * + * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned + * event is accessible to "third parties", e.g the event is a public property. Otherwise a leaked listener on the + * returned event causes this utility to leak a listener on the original event. + * + * @param event The event source for the new event. + * @param map The mapping function. + * @param disposable A disposable store to add the new EventEmitter to. + */ + function map(event, map, disposable) { + return snapshot((listener, thisArgs = null, disposables) => event(i => listener.call(thisArgs, map(i)), null, disposables), disposable); + } + Event.map = map; + /** + * Wraps an event in another event that performs some function on the event object before firing. + * + * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned + * event is accessible to "third parties", e.g the event is a public property. Otherwise a leaked listener on the + * returned event causes this utility to leak a listener on the original event. + * + * @param event The event source for the new event. + * @param each The function to perform on the event object. + * @param disposable A disposable store to add the new EventEmitter to. + */ + function forEach(event, each, disposable) { + return snapshot((listener, thisArgs = null, disposables) => event(i => { each(i); listener.call(thisArgs, i); }, null, disposables), disposable); + } + Event.forEach = forEach; + function filter(event, filter, disposable) { + return snapshot((listener, thisArgs = null, disposables) => event(e => filter(e) && listener.call(thisArgs, e), null, disposables), disposable); + } + Event.filter = filter; + /** + * Given an event, returns the same event but typed as `Event<void>`. + */ + function signal(event) { + return event; + } + Event.signal = signal; + function any(...events) { + return (listener, thisArgs = null, disposables) => { + const disposable = combinedDisposable(...events.map(event => event(e => listener.call(thisArgs, e)))); + return addAndReturnDisposable(disposable, disposables); + }; + } + Event.any = any; + /** + * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned + * event is accessible to "third parties", e.g the event is a public property. Otherwise a leaked listener on the + * returned event causes this utility to leak a listener on the original event. + */ + function reduce(event, merge, initial, disposable) { + let output = initial; + return map(event, e => { + output = merge(output, e); + return output; + }, disposable); + } + Event.reduce = reduce; + function snapshot(event, disposable) { + let listener; + const options = { + onWillAddFirstListener() { + listener = event(emitter.fire, emitter); + }, + onDidRemoveLastListener() { + listener === null || listener === void 0 ? void 0 : listener.dispose(); + } + }; + const emitter = new Emitter(options); + disposable === null || disposable === void 0 ? void 0 : disposable.add(emitter); + return emitter.event; + } + /** + * Adds the IDisposable to the store if it's set, and returns it. Useful to + * Event function implementation. + */ + function addAndReturnDisposable(d, store) { + if (store instanceof Array) { + store.push(d); + } + else if (store) { + store.add(d); + } + return d; + } + function debounce(event, merge, delay = 100, leading = false, flushOnListenerRemove = false, leakWarningThreshold, disposable) { + let subscription; + let output = undefined; + let handle = undefined; + let numDebouncedCalls = 0; + let doFire; + const options = { + leakWarningThreshold, + onWillAddFirstListener() { + subscription = event(cur => { + numDebouncedCalls++; + output = merge(output, cur); + if (leading && !handle) { + emitter.fire(output); + output = undefined; + } + doFire = () => { + const _output = output; + output = undefined; + handle = undefined; + if (!leading || numDebouncedCalls > 1) { + emitter.fire(_output); + } + numDebouncedCalls = 0; + }; + if (typeof delay === 'number') { + clearTimeout(handle); + handle = setTimeout(doFire, delay); + } + else { + if (handle === undefined) { + handle = 0; + queueMicrotask(doFire); + } + } + }); + }, + onWillRemoveListener() { + if (flushOnListenerRemove && numDebouncedCalls > 0) { + doFire === null || doFire === void 0 ? void 0 : doFire(); + } + }, + onDidRemoveLastListener() { + doFire = undefined; + subscription.dispose(); + } + }; + const emitter = new Emitter(options); + disposable === null || disposable === void 0 ? void 0 : disposable.add(emitter); + return emitter.event; + } + Event.debounce = debounce; + /** + * Debounces an event, firing after some delay (default=0) with an array of all event original objects. + * + * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned + * event is accessible to "third parties", e.g the event is a public property. Otherwise a leaked listener on the + * returned event causes this utility to leak a listener on the original event. + */ + function accumulate(event, delay = 0, disposable) { + return Event.debounce(event, (last, e) => { + if (!last) { + return [e]; + } + last.push(e); + return last; + }, delay, undefined, true, undefined, disposable); + } + Event.accumulate = accumulate; + /** + * Filters an event such that some condition is _not_ met more than once in a row, effectively ensuring duplicate + * event objects from different sources do not fire the same event object. + * + * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned + * event is accessible to "third parties", e.g the event is a public property. Otherwise a leaked listener on the + * returned event causes this utility to leak a listener on the original event. + * + * @param event The event source for the new event. + * @param equals The equality condition. + * @param disposable A disposable store to add the new EventEmitter to. + * + * @example + * ``` + * // Fire only one time when a single window is opened or focused + * Event.latch(Event.any(onDidOpenWindow, onDidFocusWindow)) + * ``` + */ + function latch(event, equals = (a, b) => a === b, disposable) { + let firstCall = true; + let cache; + return filter(event, value => { + const shouldEmit = firstCall || !equals(value, cache); + firstCall = false; + cache = value; + return shouldEmit; + }, disposable); + } + Event.latch = latch; + /** + * Splits an event whose parameter is a union type into 2 separate events for each type in the union. + * + * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned + * event is accessible to "third parties", e.g the event is a public property. Otherwise a leaked listener on the + * returned event causes this utility to leak a listener on the original event. + * + * @example + * ``` + * const event = new EventEmitter<number | undefined>().event; + * const [numberEvent, undefinedEvent] = Event.split(event, isUndefined); + * ``` + * + * @param event The event source for the new event. + * @param isT A function that determines what event is of the first type. + * @param disposable A disposable store to add the new EventEmitter to. + */ + function split(event, isT, disposable) { + return [ + Event.filter(event, isT, disposable), + Event.filter(event, e => !isT(e), disposable), + ]; + } + Event.split = split; + /** + * Buffers an event until it has a listener attached. + * + * *NOTE* that this function returns an `Event` and it MUST be called with a `DisposableStore` whenever the returned + * event is accessible to "third parties", e.g the event is a public property. Otherwise a leaked listener on the + * returned event causes this utility to leak a listener on the original event. + * + * @param event The event source for the new event. + * @param flushAfterTimeout Determines whether to flush the buffer after a timeout immediately or after a + * `setTimeout` when the first event listener is added. + * @param _buffer Internal: A source event array used for tests. + * + * @example + * ``` + * // Start accumulating events, when the first listener is attached, flush + * // the event after a timeout such that multiple listeners attached before + * // the timeout would receive the event + * this.onInstallExtension = Event.buffer(service.onInstallExtension, true); + * ``` + */ + function buffer(event, flushAfterTimeout = false, _buffer = [], disposable) { + let buffer = _buffer.slice(); + let listener = event(e => { + if (buffer) { + buffer.push(e); + } + else { + emitter.fire(e); + } + }); + if (disposable) { + disposable.add(listener); + } + const flush = () => { + buffer === null || buffer === void 0 ? void 0 : buffer.forEach(e => emitter.fire(e)); + buffer = null; + }; + const emitter = new Emitter({ + onWillAddFirstListener() { + if (!listener) { + listener = event(e => emitter.fire(e)); + if (disposable) { + disposable.add(listener); + } + } + }, + onDidAddFirstListener() { + if (buffer) { + if (flushAfterTimeout) { + setTimeout(flush); + } + else { + flush(); + } + } + }, + onDidRemoveLastListener() { + if (listener) { + listener.dispose(); + } + listener = null; + } + }); + if (disposable) { + disposable.add(emitter); + } + return emitter.event; + } + Event.buffer = buffer; + /** + * Wraps the event in an {@link IChainableEvent}, allowing a more functional programming style. + * + * @example + * ``` + * // Normal + * const onEnterPressNormal = Event.filter( + * Event.map(onKeyPress.event, e => new StandardKeyboardEvent(e)), + * e.keyCode === KeyCode.Enter + * ).event; + * + * // Using chain + * const onEnterPressChain = Event.chain(onKeyPress.event, $ => $ + * .map(e => new StandardKeyboardEvent(e)) + * .filter(e => e.keyCode === KeyCode.Enter) + * ); + * ``` + */ + function chain(event, sythensize) { + const fn = (listener, thisArgs, disposables) => { + const cs = sythensize(new ChainableSynthesis()); + return event(function (value) { + const result = cs.evaluate(value); + if (result !== HaltChainable) { + listener.call(thisArgs, result); + } + }, undefined, disposables); + }; + return fn; + } + Event.chain = chain; + const HaltChainable = Symbol('HaltChainable'); + class ChainableSynthesis { + constructor() { + this.steps = []; + } + map(fn) { + this.steps.push(fn); + return this; + } + forEach(fn) { + this.steps.push(v => { + fn(v); + return v; + }); + return this; + } + filter(fn) { + this.steps.push(v => fn(v) ? v : HaltChainable); + return this; + } + reduce(merge, initial) { + let last = initial; + this.steps.push(v => { + last = merge(last, v); + return last; + }); + return this; + } + latch(equals = (a, b) => a === b) { + let firstCall = true; + let cache; + this.steps.push(value => { + const shouldEmit = firstCall || !equals(value, cache); + firstCall = false; + cache = value; + return shouldEmit ? value : HaltChainable; + }); + return this; + } + evaluate(value) { + for (const step of this.steps) { + value = step(value); + if (value === HaltChainable) { + break; + } + } + return value; + } + } + /** + * Creates an {@link Event} from a node event emitter. + */ + function fromNodeEventEmitter(emitter, eventName, map = id => id) { + const fn = (...args) => result.fire(map(...args)); + const onFirstListenerAdd = () => emitter.on(eventName, fn); + const onLastListenerRemove = () => emitter.removeListener(eventName, fn); + const result = new Emitter({ onWillAddFirstListener: onFirstListenerAdd, onDidRemoveLastListener: onLastListenerRemove }); + return result.event; + } + Event.fromNodeEventEmitter = fromNodeEventEmitter; + /** + * Creates an {@link Event} from a DOM event emitter. + */ + function fromDOMEventEmitter(emitter, eventName, map = id => id) { + const fn = (...args) => result.fire(map(...args)); + const onFirstListenerAdd = () => emitter.addEventListener(eventName, fn); + const onLastListenerRemove = () => emitter.removeEventListener(eventName, fn); + const result = new Emitter({ onWillAddFirstListener: onFirstListenerAdd, onDidRemoveLastListener: onLastListenerRemove }); + return result.event; + } + Event.fromDOMEventEmitter = fromDOMEventEmitter; + /** + * Creates a promise out of an event, using the {@link Event.once} helper. + */ + function toPromise(event) { + return new Promise(resolve => once(event)(resolve)); + } + Event.toPromise = toPromise; + /** + * Creates an event out of a promise that fires once when the promise is + * resolved with the result of the promise or `undefined`. + */ + function fromPromise(promise) { + const result = new Emitter(); + promise.then(res => { + result.fire(res); + }, () => { + result.fire(undefined); + }).finally(() => { + result.dispose(); + }); + return result.event; + } + Event.fromPromise = fromPromise; + function runAndSubscribe(event, handler, initial) { + handler(initial); + return event(e => handler(e)); + } + Event.runAndSubscribe = runAndSubscribe; + /** + * Adds a listener to an event and calls the listener immediately with undefined as the event object. A new + * {@link DisposableStore} is passed to the listener which is disposed when the returned disposable is disposed. + */ + function runAndSubscribeWithStore(event, handler) { + let store = null; + function run(e) { + store === null || store === void 0 ? void 0 : store.dispose(); + store = new DisposableStore(); + handler(e, store); + } + run(undefined); + const disposable = event(e => run(e)); + return toDisposable(() => { + disposable.dispose(); + store === null || store === void 0 ? void 0 : store.dispose(); + }); + } + Event.runAndSubscribeWithStore = runAndSubscribeWithStore; + class EmitterObserver { + constructor(_observable, store) { + this._observable = _observable; + this._counter = 0; + this._hasChanged = false; + const options = { + onWillAddFirstListener: () => { + _observable.addObserver(this); + }, + onDidRemoveLastListener: () => { + _observable.removeObserver(this); + } + }; + this.emitter = new Emitter(options); + if (store) { + store.add(this.emitter); + } + } + beginUpdate(_observable) { + // assert(_observable === this.obs); + this._counter++; + } + handlePossibleChange(_observable) { + // assert(_observable === this.obs); + } + handleChange(_observable, _change) { + // assert(_observable === this.obs); + this._hasChanged = true; + } + endUpdate(_observable) { + // assert(_observable === this.obs); + this._counter--; + if (this._counter === 0) { + this._observable.reportChanges(); + if (this._hasChanged) { + this._hasChanged = false; + this.emitter.fire(this._observable.get()); + } + } + } + } + /** + * Creates an event emitter that is fired when the observable changes. + * Each listeners subscribes to the emitter. + */ + function fromObservable(obs, store) { + const observer = new EmitterObserver(obs, store); + return observer.emitter.event; + } + Event.fromObservable = fromObservable; + /** + * Each listener is attached to the observable directly. + */ + function fromObservableLight(observable) { + return (listener, thisArgs, disposables) => { + let count = 0; + let didChange = false; + const observer = { + beginUpdate() { + count++; + }, + endUpdate() { + count--; + if (count === 0) { + observable.reportChanges(); + if (didChange) { + didChange = false; + listener.call(thisArgs); + } + } + }, + handlePossibleChange() { + // noop + }, + handleChange() { + didChange = true; + } + }; + observable.addObserver(observer); + observable.reportChanges(); + const disposable = { + dispose() { + observable.removeObserver(observer); + } + }; + if (disposables instanceof DisposableStore) { + disposables.add(disposable); + } + else if (Array.isArray(disposables)) { + disposables.push(disposable); + } + return disposable; + }; + } + Event.fromObservableLight = fromObservableLight; +})(Event || (Event = {})); +class EventProfiling { + constructor(name) { + this.listenerCount = 0; + this.invocationCount = 0; + this.elapsedOverall = 0; + this.durations = []; + this.name = `${name}_${EventProfiling._idPool++}`; + EventProfiling.all.add(this); + } + start(listenerCount) { + this._stopWatch = new StopWatch(); + this.listenerCount = listenerCount; + } + stop() { + if (this._stopWatch) { + const elapsed = this._stopWatch.elapsed(); + this.durations.push(elapsed); + this.elapsedOverall += elapsed; + this.invocationCount += 1; + this._stopWatch = undefined; + } + } +} +EventProfiling.all = new Set(); +EventProfiling._idPool = 0; +let _globalLeakWarningThreshold = -1; +class LeakageMonitor { + constructor(threshold, name = Math.random().toString(18).slice(2, 5)) { + this.threshold = threshold; + this.name = name; + this._warnCountdown = 0; + } + dispose() { + var _a; + (_a = this._stacks) === null || _a === void 0 ? void 0 : _a.clear(); + } + check(stack, listenerCount) { + const threshold = this.threshold; + if (threshold <= 0 || listenerCount < threshold) { + return undefined; + } + if (!this._stacks) { + this._stacks = new Map(); + } + const count = (this._stacks.get(stack.value) || 0); + this._stacks.set(stack.value, count + 1); + this._warnCountdown -= 1; + if (this._warnCountdown <= 0) { + // only warn on first exceed and then every time the limit + // is exceeded by 50% again + this._warnCountdown = threshold * 0.5; + // find most frequent listener and print warning + let topStack; + let topCount = 0; + for (const [stack, count] of this._stacks) { + if (!topStack || topCount < count) { + topStack = stack; + topCount = count; + } + } + console.warn(`[${this.name}] potential listener LEAK detected, having ${listenerCount} listeners already. MOST frequent listener (${topCount}):`); + console.warn(topStack); + } + return () => { + const count = (this._stacks.get(stack.value) || 0); + this._stacks.set(stack.value, count - 1); + }; + } +} +class Stacktrace { + static create() { + var _a; + return new Stacktrace((_a = new Error().stack) !== null && _a !== void 0 ? _a : ''); + } + constructor(value) { + this.value = value; + } + print() { + console.warn(this.value.split('\n').slice(2).join('\n')); + } +} +class UniqueContainer { + constructor(value) { + this.value = value; + } +} +const compactionThreshold = 2; +/** + * The Emitter can be used to expose an Event to the public + * to fire it from the insides. + * Sample: + class Document { + + private readonly _onDidChange = new Emitter<(value:string)=>any>(); + + public onDidChange = this._onDidChange.event; + + // getter-style + // get onDidChange(): Event<(value:string)=>any> { + // return this._onDidChange.event; + // } + + private _doIt() { + //... + this._onDidChange.fire(value); + } + } + */ +class Emitter { + constructor(options) { + var _a, _b, _c, _d, _e; + this._size = 0; + this._options = options; + this._leakageMon = ((_a = this._options) === null || _a === void 0 ? void 0 : _a.leakWarningThreshold) ? new LeakageMonitor((_c = (_b = this._options) === null || _b === void 0 ? void 0 : _b.leakWarningThreshold) !== null && _c !== void 0 ? _c : _globalLeakWarningThreshold) : undefined; + this._perfMon = ((_d = this._options) === null || _d === void 0 ? void 0 : _d._profName) ? new EventProfiling(this._options._profName) : undefined; + this._deliveryQueue = (_e = this._options) === null || _e === void 0 ? void 0 : _e.deliveryQueue; + } + dispose() { + var _a, _b, _c, _d; + if (!this._disposed) { + this._disposed = true; + // It is bad to have listeners at the time of disposing an emitter, it is worst to have listeners keep the emitter + // alive via the reference that's embedded in their disposables. Therefore we loop over all remaining listeners and + // unset their subscriptions/disposables. Looping and blaming remaining listeners is done on next tick because the + // the following programming pattern is very popular: + // + // const someModel = this._disposables.add(new ModelObject()); // (1) create and register model + // this._disposables.add(someModel.onDidChange(() => { ... }); // (2) subscribe and register model-event listener + // ...later... + // this._disposables.dispose(); disposes (1) then (2): don't warn after (1) but after the "overall dispose" is done + if (((_a = this._deliveryQueue) === null || _a === void 0 ? void 0 : _a.current) === this) { + this._deliveryQueue.reset(); + } + if (this._listeners) { + this._listeners = undefined; + this._size = 0; + } + (_c = (_b = this._options) === null || _b === void 0 ? void 0 : _b.onDidRemoveLastListener) === null || _c === void 0 ? void 0 : _c.call(_b); + (_d = this._leakageMon) === null || _d === void 0 ? void 0 : _d.dispose(); + } + } + /** + * For the public to allow to subscribe + * to events from this Emitter + */ + get event() { + var _a; + (_a = this._event) !== null && _a !== void 0 ? _a : (this._event = (callback, thisArgs, disposables) => { + var _a, _b, _c, _d, _e; + if (this._leakageMon && this._size > this._leakageMon.threshold * 3) { + console.warn(`[${this._leakageMon.name}] REFUSES to accept new listeners because it exceeded its threshold by far`); + return Disposable.None; + } + if (this._disposed) { + // todo: should we warn if a listener is added to a disposed emitter? This happens often + return Disposable.None; + } + if (thisArgs) { + callback = callback.bind(thisArgs); + } + const contained = new UniqueContainer(callback); + let removeMonitor; + if (this._leakageMon && this._size >= Math.ceil(this._leakageMon.threshold * 0.2)) { + // check and record this emitter for potential leakage + contained.stack = Stacktrace.create(); + removeMonitor = this._leakageMon.check(contained.stack, this._size + 1); + } + if (!this._listeners) { + (_b = (_a = this._options) === null || _a === void 0 ? void 0 : _a.onWillAddFirstListener) === null || _b === void 0 ? void 0 : _b.call(_a, this); + this._listeners = contained; + (_d = (_c = this._options) === null || _c === void 0 ? void 0 : _c.onDidAddFirstListener) === null || _d === void 0 ? void 0 : _d.call(_c, this); + } + else if (this._listeners instanceof UniqueContainer) { + (_e = this._deliveryQueue) !== null && _e !== void 0 ? _e : (this._deliveryQueue = new EventDeliveryQueuePrivate()); + this._listeners = [this._listeners, contained]; + } + else { + this._listeners.push(contained); + } + this._size++; + const result = toDisposable(() => { removeMonitor === null || removeMonitor === void 0 ? void 0 : removeMonitor(); this._removeListener(contained); }); + if (disposables instanceof DisposableStore) { + disposables.add(result); + } + else if (Array.isArray(disposables)) { + disposables.push(result); + } + return result; + }); + return this._event; + } + _removeListener(listener) { + var _a, _b, _c, _d; + (_b = (_a = this._options) === null || _a === void 0 ? void 0 : _a.onWillRemoveListener) === null || _b === void 0 ? void 0 : _b.call(_a, this); + if (!this._listeners) { + return; // expected if a listener gets disposed + } + if (this._size === 1) { + this._listeners = undefined; + (_d = (_c = this._options) === null || _c === void 0 ? void 0 : _c.onDidRemoveLastListener) === null || _d === void 0 ? void 0 : _d.call(_c, this); + this._size = 0; + return; + } + // size > 1 which requires that listeners be a list: + const listeners = this._listeners; + const index = listeners.indexOf(listener); + if (index === -1) { + console.log('disposed?', this._disposed); + console.log('size?', this._size); + console.log('arr?', JSON.stringify(this._listeners)); + throw new Error('Attempted to dispose unknown listener'); + } + this._size--; + listeners[index] = undefined; + const adjustDeliveryQueue = this._deliveryQueue.current === this; + if (this._size * compactionThreshold <= listeners.length) { + let n = 0; + for (let i = 0; i < listeners.length; i++) { + if (listeners[i]) { + listeners[n++] = listeners[i]; + } + else if (adjustDeliveryQueue) { + this._deliveryQueue.end--; + if (n < this._deliveryQueue.i) { + this._deliveryQueue.i--; + } + } + } + listeners.length = n; + } + } + _deliver(listener, value) { + var _a; + if (!listener) { + return; + } + const errorHandler = ((_a = this._options) === null || _a === void 0 ? void 0 : _a.onListenerError) || onUnexpectedError; + if (!errorHandler) { + listener.value(value); + return; + } + try { + listener.value(value); + } + catch (e) { + errorHandler(e); + } + } + /** Delivers items in the queue. Assumes the queue is ready to go. */ + _deliverQueue(dq) { + const listeners = dq.current._listeners; + while (dq.i < dq.end) { + // important: dq.i is incremented before calling deliver() because it might reenter deliverQueue() + this._deliver(listeners[dq.i++], dq.value); + } + dq.reset(); + } + /** + * To be kept private to fire an event to + * subscribers + */ + fire(event) { + var _a, _b, _c, _d; + if ((_a = this._deliveryQueue) === null || _a === void 0 ? void 0 : _a.current) { + this._deliverQueue(this._deliveryQueue); + (_b = this._perfMon) === null || _b === void 0 ? void 0 : _b.stop(); // last fire() will have starting perfmon, stop it before starting the next dispatch + } + (_c = this._perfMon) === null || _c === void 0 ? void 0 : _c.start(this._size); + if (!this._listeners) ; + else if (this._listeners instanceof UniqueContainer) { + this._deliver(this._listeners, event); + } + else { + const dq = this._deliveryQueue; + dq.enqueue(this, event, this._listeners.length); + this._deliverQueue(dq); + } + (_d = this._perfMon) === null || _d === void 0 ? void 0 : _d.stop(); + } + hasListeners() { + return this._size > 0; + } +} +class EventDeliveryQueuePrivate { + constructor() { + /** + * Index in current's listener list. + */ + this.i = -1; + /** + * The last index in the listener's list to deliver. + */ + this.end = 0; + } + enqueue(emitter, value, end) { + this.i = 0; + this.end = end; + this.current = emitter; + this.value = value; + } + reset() { + this.i = this.end; // force any current emission loop to stop, mainly for during dispose + this.current = undefined; + this.value = undefined; + } +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +/** + * @returns whether the provided parameter is a JavaScript String or not. + */ +function isString$2(str) { + return (typeof str === 'string'); +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +function getAllPropertyNames(obj) { + let res = []; + while (Object.prototype !== obj) { + res = res.concat(Object.getOwnPropertyNames(obj)); + obj = Object.getPrototypeOf(obj); + } + return res; +} +function getAllMethodNames(obj) { + const methods = []; + for (const prop of getAllPropertyNames(obj)) { + if (typeof obj[prop] === 'function') { + methods.push(prop); + } + } + return methods; +} +function createProxyObject$1(methodNames, invoke) { + const createProxyMethod = (method) => { + return function () { + const args = Array.prototype.slice.call(arguments, 0); + return invoke(method, args); + }; + }; + const result = {}; + for (const methodName of methodNames) { + result[methodName] = createProxyMethod(methodName); + } + return result; +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +let isPseudo = (typeof document !== 'undefined' && document.location && document.location.hash.indexOf('pseudo=true') >= 0); +function _format$2(message, args) { + let result; + if (args.length === 0) { + result = message; + } + else { + result = message.replace(/\{(\d+)\}/g, (match, rest) => { + const index = rest[0]; + const arg = args[index]; + let result = match; + if (typeof arg === 'string') { + result = arg; + } + else if (typeof arg === 'number' || typeof arg === 'boolean' || arg === void 0 || arg === null) { + result = String(arg); + } + return result; + }); + } + if (isPseudo) { + // FF3B and FF3D is the Unicode zenkaku representation for [ and ] + result = '\uFF3B' + result.replace(/[aouei]/g, '$&$&') + '\uFF3D'; + } + return result; +} +/** + * @skipMangle + */ +function localize$2(data, message, ...args) { + return _format$2(message, args); +} +/** + * @skipMangle + */ +function getConfiguredDefaultLocale(_) { + // This returns undefined because this implementation isn't used and is overwritten by the loader + // when loaded. + return undefined; +} + +var _a$3; +const LANGUAGE_DEFAULT = 'en'; +let _isWindows = false; +let _isMacintosh = false; +let _isLinux = false; +let _locale = undefined; +let _language = LANGUAGE_DEFAULT; +let _platformLocale = LANGUAGE_DEFAULT; +let _translationsConfigFile = undefined; +let _userAgent = undefined; +const $globalThis = globalThis; +let nodeProcess = undefined; +if (typeof $globalThis.vscode !== 'undefined' && typeof $globalThis.vscode.process !== 'undefined') { + // Native environment (sandboxed) + nodeProcess = $globalThis.vscode.process; +} +else if (typeof process !== 'undefined') { + // Native environment (non-sandboxed) + nodeProcess = process; +} +const isElectronProcess = typeof ((_a$3 = nodeProcess === null || nodeProcess === void 0 ? void 0 : nodeProcess.versions) === null || _a$3 === void 0 ? void 0 : _a$3.electron) === 'string'; +const isElectronRenderer = isElectronProcess && (nodeProcess === null || nodeProcess === void 0 ? void 0 : nodeProcess.type) === 'renderer'; +// Web environment +if (typeof navigator === 'object' && !isElectronRenderer) { + _userAgent = navigator.userAgent; + _isWindows = _userAgent.indexOf('Windows') >= 0; + _isMacintosh = _userAgent.indexOf('Macintosh') >= 0; + (_userAgent.indexOf('Macintosh') >= 0 || _userAgent.indexOf('iPad') >= 0 || _userAgent.indexOf('iPhone') >= 0) && !!navigator.maxTouchPoints && navigator.maxTouchPoints > 0; + _isLinux = _userAgent.indexOf('Linux') >= 0; + (_userAgent === null || _userAgent === void 0 ? void 0 : _userAgent.indexOf('Mobi')) >= 0; + getConfiguredDefaultLocale( + // This call _must_ be done in the file that calls `nls.getConfiguredDefaultLocale` + // to ensure that the NLS AMD Loader plugin has been loaded and configured. + // This is because the loader plugin decides what the default locale is based on + // how it's able to resolve the strings. + localize$2({ key: 'ensureLoaderPluginIsLoaded', comment: ['{Locked}'] }, '_')); + _locale = LANGUAGE_DEFAULT; + _language = _locale; + _platformLocale = navigator.language; +} +// Native environment +else if (typeof nodeProcess === 'object') { + _isWindows = (nodeProcess.platform === 'win32'); + _isMacintosh = (nodeProcess.platform === 'darwin'); + _isLinux = (nodeProcess.platform === 'linux'); + _isLinux && !!nodeProcess.env['SNAP'] && !!nodeProcess.env['SNAP_REVISION']; + !!nodeProcess.env['CI'] || !!nodeProcess.env['BUILD_ARTIFACTSTAGINGDIRECTORY']; + _locale = LANGUAGE_DEFAULT; + _language = LANGUAGE_DEFAULT; + const rawNlsConfig = nodeProcess.env['VSCODE_NLS_CONFIG']; + if (rawNlsConfig) { + try { + const nlsConfig = JSON.parse(rawNlsConfig); + const resolved = nlsConfig.availableLanguages['*']; + _locale = nlsConfig.locale; + _platformLocale = nlsConfig.osLocale; + // VSCode's default language is 'en' + _language = resolved ? resolved : LANGUAGE_DEFAULT; + _translationsConfigFile = nlsConfig._translationsConfigFile; + } + catch (e) { + } + } +} +// Unknown environment +else { + console.error('Unable to resolve platform.'); +} +const isWindows = _isWindows; +const isMacintosh = _isMacintosh; +const userAgent = _userAgent; +const setTimeout0IsFaster = (typeof $globalThis.postMessage === 'function' && !$globalThis.importScripts); +/** + * See https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#:~:text=than%204%2C%20then-,set%20timeout%20to%204,-. + * + * Works similarly to `setTimeout(0)` but doesn't suffer from the 4ms artificial delay + * that browsers set when the nesting level is > 5. + */ +(() => { + if (setTimeout0IsFaster) { + const pending = []; + $globalThis.addEventListener('message', (e) => { + if (e.data && e.data.vscodeScheduleAsyncWork) { + for (let i = 0, len = pending.length; i < len; i++) { + const candidate = pending[i]; + if (candidate.id === e.data.vscodeScheduleAsyncWork) { + pending.splice(i, 1); + candidate.callback(); + return; + } + } + } + }); + let lastId = 0; + return (callback) => { + const myId = ++lastId; + pending.push({ + id: myId, + callback: callback + }); + $globalThis.postMessage({ vscodeScheduleAsyncWork: myId }, '*'); + }; + } + return (callback) => setTimeout(callback); +})(); +const isChrome = !!(userAgent && userAgent.indexOf('Chrome') >= 0); +!!(userAgent && userAgent.indexOf('Firefox') >= 0); +!!(!isChrome && (userAgent && userAgent.indexOf('Safari') >= 0)); +!!(userAgent && userAgent.indexOf('Edg/') >= 0); +!!(userAgent && userAgent.indexOf('Android') >= 0); + +/** + * Uses a LRU cache to make a given parametrized function cached. + * Caches just the last value. + * The key must be JSON serializable. +*/ +class LRUCachedFunction { + constructor(fn) { + this.fn = fn; + this.lastCache = undefined; + this.lastArgKey = undefined; + } + get(arg) { + const key = JSON.stringify(arg); + if (this.lastArgKey !== key) { + this.lastArgKey = key; + this.lastCache = this.fn(arg); + } + return this.lastCache; + } +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +class Lazy { + constructor(executor) { + this.executor = executor; + this._didRun = false; + } + /** + * Get the wrapped value. + * + * This will force evaluation of the lazy value if it has not been resolved yet. Lazy values are only + * resolved once. `getValue` will re-throw exceptions that are hit while resolving the value + */ + get value() { + if (!this._didRun) { + try { + this._value = this.executor(); + } + catch (err) { + this._error = err; + } + finally { + this._didRun = true; + } + } + if (this._error) { + throw this._error; + } + return this._value; + } + /** + * Get the wrapped value without forcing evaluation. + */ + get rawValue() { return this._value; } +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +var _a$2; +/** + * Escapes regular expression characters in a given string + */ +function escapeRegExpCharacters(value) { + return value.replace(/[\\\{\}\*\+\?\|\^\$\.\[\]\(\)]/g, '\\$&'); +} +function splitLines(str) { + return str.split(/\r\n|\r|\n/); +} +/** + * Returns first index of the string that is not whitespace. + * If string is empty or contains only whitespaces, returns -1 + */ +function firstNonWhitespaceIndex(str) { + for (let i = 0, len = str.length; i < len; i++) { + const chCode = str.charCodeAt(i); + if (chCode !== 32 /* CharCode.Space */ && chCode !== 9 /* CharCode.Tab */) { + return i; + } + } + return -1; +} +/** + * Returns last index of the string that is not whitespace. + * If string is empty or contains only whitespaces, returns -1 + */ +function lastNonWhitespaceIndex(str, startIndex = str.length - 1) { + for (let i = startIndex; i >= 0; i--) { + const chCode = str.charCodeAt(i); + if (chCode !== 32 /* CharCode.Space */ && chCode !== 9 /* CharCode.Tab */) { + return i; + } + } + return -1; +} +function isUpperAsciiLetter(code) { + return code >= 65 /* CharCode.A */ && code <= 90 /* CharCode.Z */; +} +/** + * See http://en.wikipedia.org/wiki/Surrogate_pair + */ +function isHighSurrogate(charCode) { + return (0xD800 <= charCode && charCode <= 0xDBFF); +} +/** + * See http://en.wikipedia.org/wiki/Surrogate_pair + */ +function isLowSurrogate(charCode) { + return (0xDC00 <= charCode && charCode <= 0xDFFF); +} +/** + * See http://en.wikipedia.org/wiki/Surrogate_pair + */ +function computeCodePoint(highSurrogate, lowSurrogate) { + return ((highSurrogate - 0xD800) << 10) + (lowSurrogate - 0xDC00) + 0x10000; +} +/** + * get the code point that begins at offset `offset` + */ +function getNextCodePoint(str, len, offset) { + const charCode = str.charCodeAt(offset); + if (isHighSurrogate(charCode) && offset + 1 < len) { + const nextCharCode = str.charCodeAt(offset + 1); + if (isLowSurrogate(nextCharCode)) { + return computeCodePoint(charCode, nextCharCode); + } + } + return charCode; +} +const IS_BASIC_ASCII = /^[\t\n\r\x20-\x7E]*$/; +/** + * Returns true if `str` contains only basic ASCII characters in the range 32 - 126 (including 32 and 126) or \n, \r, \t + */ +function isBasicASCII(str) { + return IS_BASIC_ASCII.test(str); +} +class AmbiguousCharacters { + static getInstance(locales) { + return _a$2.cache.get(Array.from(locales)); + } + static getLocales() { + return _a$2._locales.value; + } + constructor(confusableDictionary) { + this.confusableDictionary = confusableDictionary; + } + isAmbiguous(codePoint) { + return this.confusableDictionary.has(codePoint); + } + /** + * Returns the non basic ASCII code point that the given code point can be confused, + * or undefined if such code point does note exist. + */ + getPrimaryConfusable(codePoint) { + return this.confusableDictionary.get(codePoint); + } + getConfusableCodePoints() { + return new Set(this.confusableDictionary.keys()); + } +} +_a$2 = AmbiguousCharacters; +AmbiguousCharacters.ambiguousCharacterData = new Lazy(() => { + // Generated using https://github.com/hediet/vscode-unicode-data + // Stored as key1, value1, key2, value2, ... + return JSON.parse('{\"_common\":[8232,32,8233,32,5760,32,8192,32,8193,32,8194,32,8195,32,8196,32,8197,32,8198,32,8200,32,8201,32,8202,32,8287,32,8199,32,8239,32,2042,95,65101,95,65102,95,65103,95,8208,45,8209,45,8210,45,65112,45,1748,45,8259,45,727,45,8722,45,10134,45,11450,45,1549,44,1643,44,8218,44,184,44,42233,44,894,59,2307,58,2691,58,1417,58,1795,58,1796,58,5868,58,65072,58,6147,58,6153,58,8282,58,1475,58,760,58,42889,58,8758,58,720,58,42237,58,451,33,11601,33,660,63,577,63,2429,63,5038,63,42731,63,119149,46,8228,46,1793,46,1794,46,42510,46,68176,46,1632,46,1776,46,42232,46,1373,96,65287,96,8219,96,8242,96,1370,96,1523,96,8175,96,65344,96,900,96,8189,96,8125,96,8127,96,8190,96,697,96,884,96,712,96,714,96,715,96,756,96,699,96,701,96,700,96,702,96,42892,96,1497,96,2036,96,2037,96,5194,96,5836,96,94033,96,94034,96,65339,91,10088,40,10098,40,12308,40,64830,40,65341,93,10089,41,10099,41,12309,41,64831,41,10100,123,119060,123,10101,125,65342,94,8270,42,1645,42,8727,42,66335,42,5941,47,8257,47,8725,47,8260,47,9585,47,10187,47,10744,47,119354,47,12755,47,12339,47,11462,47,20031,47,12035,47,65340,92,65128,92,8726,92,10189,92,10741,92,10745,92,119311,92,119355,92,12756,92,20022,92,12034,92,42872,38,708,94,710,94,5869,43,10133,43,66203,43,8249,60,10094,60,706,60,119350,60,5176,60,5810,60,5120,61,11840,61,12448,61,42239,61,8250,62,10095,62,707,62,119351,62,5171,62,94015,62,8275,126,732,126,8128,126,8764,126,65372,124,65293,45,120784,50,120794,50,120804,50,120814,50,120824,50,130034,50,42842,50,423,50,1000,50,42564,50,5311,50,42735,50,119302,51,120785,51,120795,51,120805,51,120815,51,120825,51,130035,51,42923,51,540,51,439,51,42858,51,11468,51,1248,51,94011,51,71882,51,120786,52,120796,52,120806,52,120816,52,120826,52,130036,52,5070,52,71855,52,120787,53,120797,53,120807,53,120817,53,120827,53,130037,53,444,53,71867,53,120788,54,120798,54,120808,54,120818,54,120828,54,130038,54,11474,54,5102,54,71893,54,119314,55,120789,55,120799,55,120809,55,120819,55,120829,55,130039,55,66770,55,71878,55,2819,56,2538,56,2666,56,125131,56,120790,56,120800,56,120810,56,120820,56,120830,56,130040,56,547,56,546,56,66330,56,2663,57,2920,57,2541,57,3437,57,120791,57,120801,57,120811,57,120821,57,120831,57,130041,57,42862,57,11466,57,71884,57,71852,57,71894,57,9082,97,65345,97,119834,97,119886,97,119938,97,119990,97,120042,97,120094,97,120146,97,120198,97,120250,97,120302,97,120354,97,120406,97,120458,97,593,97,945,97,120514,97,120572,97,120630,97,120688,97,120746,97,65313,65,119808,65,119860,65,119912,65,119964,65,120016,65,120068,65,120120,65,120172,65,120224,65,120276,65,120328,65,120380,65,120432,65,913,65,120488,65,120546,65,120604,65,120662,65,120720,65,5034,65,5573,65,42222,65,94016,65,66208,65,119835,98,119887,98,119939,98,119991,98,120043,98,120095,98,120147,98,120199,98,120251,98,120303,98,120355,98,120407,98,120459,98,388,98,5071,98,5234,98,5551,98,65314,66,8492,66,119809,66,119861,66,119913,66,120017,66,120069,66,120121,66,120173,66,120225,66,120277,66,120329,66,120381,66,120433,66,42932,66,914,66,120489,66,120547,66,120605,66,120663,66,120721,66,5108,66,5623,66,42192,66,66178,66,66209,66,66305,66,65347,99,8573,99,119836,99,119888,99,119940,99,119992,99,120044,99,120096,99,120148,99,120200,99,120252,99,120304,99,120356,99,120408,99,120460,99,7428,99,1010,99,11429,99,43951,99,66621,99,128844,67,71922,67,71913,67,65315,67,8557,67,8450,67,8493,67,119810,67,119862,67,119914,67,119966,67,120018,67,120174,67,120226,67,120278,67,120330,67,120382,67,120434,67,1017,67,11428,67,5087,67,42202,67,66210,67,66306,67,66581,67,66844,67,8574,100,8518,100,119837,100,119889,100,119941,100,119993,100,120045,100,120097,100,120149,100,120201,100,120253,100,120305,100,120357,100,120409,100,120461,100,1281,100,5095,100,5231,100,42194,100,8558,68,8517,68,119811,68,119863,68,119915,68,119967,68,120019,68,120071,68,120123,68,120175,68,120227,68,120279,68,120331,68,120383,68,120435,68,5024,68,5598,68,5610,68,42195,68,8494,101,65349,101,8495,101,8519,101,119838,101,119890,101,119942,101,120046,101,120098,101,120150,101,120202,101,120254,101,120306,101,120358,101,120410,101,120462,101,43826,101,1213,101,8959,69,65317,69,8496,69,119812,69,119864,69,119916,69,120020,69,120072,69,120124,69,120176,69,120228,69,120280,69,120332,69,120384,69,120436,69,917,69,120492,69,120550,69,120608,69,120666,69,120724,69,11577,69,5036,69,42224,69,71846,69,71854,69,66182,69,119839,102,119891,102,119943,102,119995,102,120047,102,120099,102,120151,102,120203,102,120255,102,120307,102,120359,102,120411,102,120463,102,43829,102,42905,102,383,102,7837,102,1412,102,119315,70,8497,70,119813,70,119865,70,119917,70,120021,70,120073,70,120125,70,120177,70,120229,70,120281,70,120333,70,120385,70,120437,70,42904,70,988,70,120778,70,5556,70,42205,70,71874,70,71842,70,66183,70,66213,70,66853,70,65351,103,8458,103,119840,103,119892,103,119944,103,120048,103,120100,103,120152,103,120204,103,120256,103,120308,103,120360,103,120412,103,120464,103,609,103,7555,103,397,103,1409,103,119814,71,119866,71,119918,71,119970,71,120022,71,120074,71,120126,71,120178,71,120230,71,120282,71,120334,71,120386,71,120438,71,1292,71,5056,71,5107,71,42198,71,65352,104,8462,104,119841,104,119945,104,119997,104,120049,104,120101,104,120153,104,120205,104,120257,104,120309,104,120361,104,120413,104,120465,104,1211,104,1392,104,5058,104,65320,72,8459,72,8460,72,8461,72,119815,72,119867,72,119919,72,120023,72,120179,72,120231,72,120283,72,120335,72,120387,72,120439,72,919,72,120494,72,120552,72,120610,72,120668,72,120726,72,11406,72,5051,72,5500,72,42215,72,66255,72,731,105,9075,105,65353,105,8560,105,8505,105,8520,105,119842,105,119894,105,119946,105,119998,105,120050,105,120102,105,120154,105,120206,105,120258,105,120310,105,120362,105,120414,105,120466,105,120484,105,618,105,617,105,953,105,8126,105,890,105,120522,105,120580,105,120638,105,120696,105,120754,105,1110,105,42567,105,1231,105,43893,105,5029,105,71875,105,65354,106,8521,106,119843,106,119895,106,119947,106,119999,106,120051,106,120103,106,120155,106,120207,106,120259,106,120311,106,120363,106,120415,106,120467,106,1011,106,1112,106,65322,74,119817,74,119869,74,119921,74,119973,74,120025,74,120077,74,120129,74,120181,74,120233,74,120285,74,120337,74,120389,74,120441,74,42930,74,895,74,1032,74,5035,74,5261,74,42201,74,119844,107,119896,107,119948,107,120000,107,120052,107,120104,107,120156,107,120208,107,120260,107,120312,107,120364,107,120416,107,120468,107,8490,75,65323,75,119818,75,119870,75,119922,75,119974,75,120026,75,120078,75,120130,75,120182,75,120234,75,120286,75,120338,75,120390,75,120442,75,922,75,120497,75,120555,75,120613,75,120671,75,120729,75,11412,75,5094,75,5845,75,42199,75,66840,75,1472,108,8739,73,9213,73,65512,73,1633,108,1777,73,66336,108,125127,108,120783,73,120793,73,120803,73,120813,73,120823,73,130033,73,65321,73,8544,73,8464,73,8465,73,119816,73,119868,73,119920,73,120024,73,120128,73,120180,73,120232,73,120284,73,120336,73,120388,73,120440,73,65356,108,8572,73,8467,108,119845,108,119897,108,119949,108,120001,108,120053,108,120105,73,120157,73,120209,73,120261,73,120313,73,120365,73,120417,73,120469,73,448,73,120496,73,120554,73,120612,73,120670,73,120728,73,11410,73,1030,73,1216,73,1493,108,1503,108,1575,108,126464,108,126592,108,65166,108,65165,108,1994,108,11599,73,5825,73,42226,73,93992,73,66186,124,66313,124,119338,76,8556,76,8466,76,119819,76,119871,76,119923,76,120027,76,120079,76,120131,76,120183,76,120235,76,120287,76,120339,76,120391,76,120443,76,11472,76,5086,76,5290,76,42209,76,93974,76,71843,76,71858,76,66587,76,66854,76,65325,77,8559,77,8499,77,119820,77,119872,77,119924,77,120028,77,120080,77,120132,77,120184,77,120236,77,120288,77,120340,77,120392,77,120444,77,924,77,120499,77,120557,77,120615,77,120673,77,120731,77,1018,77,11416,77,5047,77,5616,77,5846,77,42207,77,66224,77,66321,77,119847,110,119899,110,119951,110,120003,110,120055,110,120107,110,120159,110,120211,110,120263,110,120315,110,120367,110,120419,110,120471,110,1400,110,1404,110,65326,78,8469,78,119821,78,119873,78,119925,78,119977,78,120029,78,120081,78,120185,78,120237,78,120289,78,120341,78,120393,78,120445,78,925,78,120500,78,120558,78,120616,78,120674,78,120732,78,11418,78,42208,78,66835,78,3074,111,3202,111,3330,111,3458,111,2406,111,2662,111,2790,111,3046,111,3174,111,3302,111,3430,111,3664,111,3792,111,4160,111,1637,111,1781,111,65359,111,8500,111,119848,111,119900,111,119952,111,120056,111,120108,111,120160,111,120212,111,120264,111,120316,111,120368,111,120420,111,120472,111,7439,111,7441,111,43837,111,959,111,120528,111,120586,111,120644,111,120702,111,120760,111,963,111,120532,111,120590,111,120648,111,120706,111,120764,111,11423,111,4351,111,1413,111,1505,111,1607,111,126500,111,126564,111,126596,111,65259,111,65260,111,65258,111,65257,111,1726,111,64428,111,64429,111,64427,111,64426,111,1729,111,64424,111,64425,111,64423,111,64422,111,1749,111,3360,111,4125,111,66794,111,71880,111,71895,111,66604,111,1984,79,2534,79,2918,79,12295,79,70864,79,71904,79,120782,79,120792,79,120802,79,120812,79,120822,79,130032,79,65327,79,119822,79,119874,79,119926,79,119978,79,120030,79,120082,79,120134,79,120186,79,120238,79,120290,79,120342,79,120394,79,120446,79,927,79,120502,79,120560,79,120618,79,120676,79,120734,79,11422,79,1365,79,11604,79,4816,79,2848,79,66754,79,42227,79,71861,79,66194,79,66219,79,66564,79,66838,79,9076,112,65360,112,119849,112,119901,112,119953,112,120005,112,120057,112,120109,112,120161,112,120213,112,120265,112,120317,112,120369,112,120421,112,120473,112,961,112,120530,112,120544,112,120588,112,120602,112,120646,112,120660,112,120704,112,120718,112,120762,112,120776,112,11427,112,65328,80,8473,80,119823,80,119875,80,119927,80,119979,80,120031,80,120083,80,120187,80,120239,80,120291,80,120343,80,120395,80,120447,80,929,80,120504,80,120562,80,120620,80,120678,80,120736,80,11426,80,5090,80,5229,80,42193,80,66197,80,119850,113,119902,113,119954,113,120006,113,120058,113,120110,113,120162,113,120214,113,120266,113,120318,113,120370,113,120422,113,120474,113,1307,113,1379,113,1382,113,8474,81,119824,81,119876,81,119928,81,119980,81,120032,81,120084,81,120188,81,120240,81,120292,81,120344,81,120396,81,120448,81,11605,81,119851,114,119903,114,119955,114,120007,114,120059,114,120111,114,120163,114,120215,114,120267,114,120319,114,120371,114,120423,114,120475,114,43847,114,43848,114,7462,114,11397,114,43905,114,119318,82,8475,82,8476,82,8477,82,119825,82,119877,82,119929,82,120033,82,120189,82,120241,82,120293,82,120345,82,120397,82,120449,82,422,82,5025,82,5074,82,66740,82,5511,82,42211,82,94005,82,65363,115,119852,115,119904,115,119956,115,120008,115,120060,115,120112,115,120164,115,120216,115,120268,115,120320,115,120372,115,120424,115,120476,115,42801,115,445,115,1109,115,43946,115,71873,115,66632,115,65331,83,119826,83,119878,83,119930,83,119982,83,120034,83,120086,83,120138,83,120190,83,120242,83,120294,83,120346,83,120398,83,120450,83,1029,83,1359,83,5077,83,5082,83,42210,83,94010,83,66198,83,66592,83,119853,116,119905,116,119957,116,120009,116,120061,116,120113,116,120165,116,120217,116,120269,116,120321,116,120373,116,120425,116,120477,116,8868,84,10201,84,128872,84,65332,84,119827,84,119879,84,119931,84,119983,84,120035,84,120087,84,120139,84,120191,84,120243,84,120295,84,120347,84,120399,84,120451,84,932,84,120507,84,120565,84,120623,84,120681,84,120739,84,11430,84,5026,84,42196,84,93962,84,71868,84,66199,84,66225,84,66325,84,119854,117,119906,117,119958,117,120010,117,120062,117,120114,117,120166,117,120218,117,120270,117,120322,117,120374,117,120426,117,120478,117,42911,117,7452,117,43854,117,43858,117,651,117,965,117,120534,117,120592,117,120650,117,120708,117,120766,117,1405,117,66806,117,71896,117,8746,85,8899,85,119828,85,119880,85,119932,85,119984,85,120036,85,120088,85,120140,85,120192,85,120244,85,120296,85,120348,85,120400,85,120452,85,1357,85,4608,85,66766,85,5196,85,42228,85,94018,85,71864,85,8744,118,8897,118,65366,118,8564,118,119855,118,119907,118,119959,118,120011,118,120063,118,120115,118,120167,118,120219,118,120271,118,120323,118,120375,118,120427,118,120479,118,7456,118,957,118,120526,118,120584,118,120642,118,120700,118,120758,118,1141,118,1496,118,71430,118,43945,118,71872,118,119309,86,1639,86,1783,86,8548,86,119829,86,119881,86,119933,86,119985,86,120037,86,120089,86,120141,86,120193,86,120245,86,120297,86,120349,86,120401,86,120453,86,1140,86,11576,86,5081,86,5167,86,42719,86,42214,86,93960,86,71840,86,66845,86,623,119,119856,119,119908,119,119960,119,120012,119,120064,119,120116,119,120168,119,120220,119,120272,119,120324,119,120376,119,120428,119,120480,119,7457,119,1121,119,1309,119,1377,119,71434,119,71438,119,71439,119,43907,119,71919,87,71910,87,119830,87,119882,87,119934,87,119986,87,120038,87,120090,87,120142,87,120194,87,120246,87,120298,87,120350,87,120402,87,120454,87,1308,87,5043,87,5076,87,42218,87,5742,120,10539,120,10540,120,10799,120,65368,120,8569,120,119857,120,119909,120,119961,120,120013,120,120065,120,120117,120,120169,120,120221,120,120273,120,120325,120,120377,120,120429,120,120481,120,5441,120,5501,120,5741,88,9587,88,66338,88,71916,88,65336,88,8553,88,119831,88,119883,88,119935,88,119987,88,120039,88,120091,88,120143,88,120195,88,120247,88,120299,88,120351,88,120403,88,120455,88,42931,88,935,88,120510,88,120568,88,120626,88,120684,88,120742,88,11436,88,11613,88,5815,88,42219,88,66192,88,66228,88,66327,88,66855,88,611,121,7564,121,65369,121,119858,121,119910,121,119962,121,120014,121,120066,121,120118,121,120170,121,120222,121,120274,121,120326,121,120378,121,120430,121,120482,121,655,121,7935,121,43866,121,947,121,8509,121,120516,121,120574,121,120632,121,120690,121,120748,121,1199,121,4327,121,71900,121,65337,89,119832,89,119884,89,119936,89,119988,89,120040,89,120092,89,120144,89,120196,89,120248,89,120300,89,120352,89,120404,89,120456,89,933,89,978,89,120508,89,120566,89,120624,89,120682,89,120740,89,11432,89,1198,89,5033,89,5053,89,42220,89,94019,89,71844,89,66226,89,119859,122,119911,122,119963,122,120015,122,120067,122,120119,122,120171,122,120223,122,120275,122,120327,122,120379,122,120431,122,120483,122,7458,122,43923,122,71876,122,66293,90,71909,90,65338,90,8484,90,8488,90,119833,90,119885,90,119937,90,119989,90,120041,90,120197,90,120249,90,120301,90,120353,90,120405,90,120457,90,918,90,120493,90,120551,90,120609,90,120667,90,120725,90,5059,90,42204,90,71849,90,65282,34,65284,36,65285,37,65286,38,65290,42,65291,43,65294,46,65295,47,65296,48,65297,49,65298,50,65299,51,65300,52,65301,53,65302,54,65303,55,65304,56,65305,57,65308,60,65309,61,65310,62,65312,64,65316,68,65318,70,65319,71,65324,76,65329,81,65330,82,65333,85,65334,86,65335,87,65343,95,65346,98,65348,100,65350,102,65355,107,65357,109,65358,110,65361,113,65362,114,65364,116,65365,117,65367,119,65370,122,65371,123,65373,125,119846,109],\"_default\":[160,32,8211,45,65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"cs\":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"de\":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"es\":[8211,45,65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"fr\":[65374,126,65306,58,65281,33,8216,96,8245,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"it\":[160,32,8211,45,65374,126,65306,58,65281,33,8216,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"ja\":[8211,45,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65292,44,65307,59],\"ko\":[8211,45,65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"pl\":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"pt-BR\":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"qps-ploc\":[160,32,8211,45,65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"ru\":[65374,126,65306,58,65281,33,8216,96,8217,96,8245,96,180,96,12494,47,305,105,921,73,1009,112,215,120,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"tr\":[160,32,8211,45,65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65288,40,65289,41,65292,44,65307,59,65311,63],\"zh-hans\":[65374,126,65306,58,65281,33,8245,96,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65288,40,65289,41],\"zh-hant\":[8211,45,65374,126,180,96,12494,47,1047,51,1073,54,1072,97,1040,65,1068,98,1042,66,1089,99,1057,67,1077,101,1045,69,1053,72,305,105,1050,75,921,73,1052,77,1086,111,1054,79,1009,112,1088,112,1056,80,1075,114,1058,84,215,120,1093,120,1061,88,1091,121,1059,89,65283,35,65307,59]}'); +}); +AmbiguousCharacters.cache = new LRUCachedFunction((locales) => { + function arrayToMap(arr) { + const result = new Map(); + for (let i = 0; i < arr.length; i += 2) { + result.set(arr[i], arr[i + 1]); + } + return result; + } + function mergeMaps(map1, map2) { + const result = new Map(map1); + for (const [key, value] of map2) { + result.set(key, value); + } + return result; + } + function intersectMaps(map1, map2) { + if (!map1) { + return map2; + } + const result = new Map(); + for (const [key, value] of map1) { + if (map2.has(key)) { + result.set(key, value); + } + } + return result; + } + const data = _a$2.ambiguousCharacterData.value; + let filteredLocales = locales.filter((l) => !l.startsWith('_') && l in data); + if (filteredLocales.length === 0) { + filteredLocales = ['_default']; + } + let languageSpecificMap = undefined; + for (const locale of filteredLocales) { + const map = arrayToMap(data[locale]); + languageSpecificMap = intersectMaps(languageSpecificMap, map); + } + const commonMap = arrayToMap(data['_common']); + const map = mergeMaps(commonMap, languageSpecificMap); + return new _a$2(map); +}); +AmbiguousCharacters._locales = new Lazy(() => Object.keys(_a$2.ambiguousCharacterData.value).filter((k) => !k.startsWith('_'))); +class InvisibleCharacters { + static getRawData() { + // Generated using https://github.com/hediet/vscode-unicode-data + return JSON.parse('[9,10,11,12,13,32,127,160,173,847,1564,4447,4448,6068,6069,6155,6156,6157,6158,7355,7356,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8203,8204,8205,8206,8207,8234,8235,8236,8237,8238,8239,8287,8288,8289,8290,8291,8292,8293,8294,8295,8296,8297,8298,8299,8300,8301,8302,8303,10240,12288,12644,65024,65025,65026,65027,65028,65029,65030,65031,65032,65033,65034,65035,65036,65037,65038,65039,65279,65440,65520,65521,65522,65523,65524,65525,65526,65527,65528,65532,78844,119155,119156,119157,119158,119159,119160,119161,119162,917504,917505,917506,917507,917508,917509,917510,917511,917512,917513,917514,917515,917516,917517,917518,917519,917520,917521,917522,917523,917524,917525,917526,917527,917528,917529,917530,917531,917532,917533,917534,917535,917536,917537,917538,917539,917540,917541,917542,917543,917544,917545,917546,917547,917548,917549,917550,917551,917552,917553,917554,917555,917556,917557,917558,917559,917560,917561,917562,917563,917564,917565,917566,917567,917568,917569,917570,917571,917572,917573,917574,917575,917576,917577,917578,917579,917580,917581,917582,917583,917584,917585,917586,917587,917588,917589,917590,917591,917592,917593,917594,917595,917596,917597,917598,917599,917600,917601,917602,917603,917604,917605,917606,917607,917608,917609,917610,917611,917612,917613,917614,917615,917616,917617,917618,917619,917620,917621,917622,917623,917624,917625,917626,917627,917628,917629,917630,917631,917760,917761,917762,917763,917764,917765,917766,917767,917768,917769,917770,917771,917772,917773,917774,917775,917776,917777,917778,917779,917780,917781,917782,917783,917784,917785,917786,917787,917788,917789,917790,917791,917792,917793,917794,917795,917796,917797,917798,917799,917800,917801,917802,917803,917804,917805,917806,917807,917808,917809,917810,917811,917812,917813,917814,917815,917816,917817,917818,917819,917820,917821,917822,917823,917824,917825,917826,917827,917828,917829,917830,917831,917832,917833,917834,917835,917836,917837,917838,917839,917840,917841,917842,917843,917844,917845,917846,917847,917848,917849,917850,917851,917852,917853,917854,917855,917856,917857,917858,917859,917860,917861,917862,917863,917864,917865,917866,917867,917868,917869,917870,917871,917872,917873,917874,917875,917876,917877,917878,917879,917880,917881,917882,917883,917884,917885,917886,917887,917888,917889,917890,917891,917892,917893,917894,917895,917896,917897,917898,917899,917900,917901,917902,917903,917904,917905,917906,917907,917908,917909,917910,917911,917912,917913,917914,917915,917916,917917,917918,917919,917920,917921,917922,917923,917924,917925,917926,917927,917928,917929,917930,917931,917932,917933,917934,917935,917936,917937,917938,917939,917940,917941,917942,917943,917944,917945,917946,917947,917948,917949,917950,917951,917952,917953,917954,917955,917956,917957,917958,917959,917960,917961,917962,917963,917964,917965,917966,917967,917968,917969,917970,917971,917972,917973,917974,917975,917976,917977,917978,917979,917980,917981,917982,917983,917984,917985,917986,917987,917988,917989,917990,917991,917992,917993,917994,917995,917996,917997,917998,917999]'); + } + static getData() { + if (!this._data) { + this._data = new Set(InvisibleCharacters.getRawData()); + } + return this._data; + } + static isInvisibleCharacter(codePoint) { + return InvisibleCharacters.getData().has(codePoint); + } + static get codePoints() { + return InvisibleCharacters.getData(); + } +} +InvisibleCharacters._data = undefined; + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +const INITIALIZE = '$initialize'; +class RequestMessage { + constructor(vsWorker, req, method, args) { + this.vsWorker = vsWorker; + this.req = req; + this.method = method; + this.args = args; + this.type = 0 /* MessageType.Request */; + } +} +class ReplyMessage { + constructor(vsWorker, seq, res, err) { + this.vsWorker = vsWorker; + this.seq = seq; + this.res = res; + this.err = err; + this.type = 1 /* MessageType.Reply */; + } +} +class SubscribeEventMessage { + constructor(vsWorker, req, eventName, arg) { + this.vsWorker = vsWorker; + this.req = req; + this.eventName = eventName; + this.arg = arg; + this.type = 2 /* MessageType.SubscribeEvent */; + } +} +class EventMessage { + constructor(vsWorker, req, event) { + this.vsWorker = vsWorker; + this.req = req; + this.event = event; + this.type = 3 /* MessageType.Event */; + } +} +class UnsubscribeEventMessage { + constructor(vsWorker, req) { + this.vsWorker = vsWorker; + this.req = req; + this.type = 4 /* MessageType.UnsubscribeEvent */; + } +} +class SimpleWorkerProtocol { + constructor(handler) { + this._workerId = -1; + this._handler = handler; + this._lastSentReq = 0; + this._pendingReplies = Object.create(null); + this._pendingEmitters = new Map(); + this._pendingEvents = new Map(); + } + setWorkerId(workerId) { + this._workerId = workerId; + } + sendMessage(method, args) { + const req = String(++this._lastSentReq); + return new Promise((resolve, reject) => { + this._pendingReplies[req] = { + resolve: resolve, + reject: reject + }; + this._send(new RequestMessage(this._workerId, req, method, args)); + }); + } + listen(eventName, arg) { + let req = null; + const emitter = new Emitter({ + onWillAddFirstListener: () => { + req = String(++this._lastSentReq); + this._pendingEmitters.set(req, emitter); + this._send(new SubscribeEventMessage(this._workerId, req, eventName, arg)); + }, + onDidRemoveLastListener: () => { + this._pendingEmitters.delete(req); + this._send(new UnsubscribeEventMessage(this._workerId, req)); + req = null; + } + }); + return emitter.event; + } + handleMessage(message) { + if (!message || !message.vsWorker) { + return; + } + if (this._workerId !== -1 && message.vsWorker !== this._workerId) { + return; + } + this._handleMessage(message); + } + _handleMessage(msg) { + switch (msg.type) { + case 1 /* MessageType.Reply */: + return this._handleReplyMessage(msg); + case 0 /* MessageType.Request */: + return this._handleRequestMessage(msg); + case 2 /* MessageType.SubscribeEvent */: + return this._handleSubscribeEventMessage(msg); + case 3 /* MessageType.Event */: + return this._handleEventMessage(msg); + case 4 /* MessageType.UnsubscribeEvent */: + return this._handleUnsubscribeEventMessage(msg); + } + } + _handleReplyMessage(replyMessage) { + if (!this._pendingReplies[replyMessage.seq]) { + console.warn('Got reply to unknown seq'); + return; + } + const reply = this._pendingReplies[replyMessage.seq]; + delete this._pendingReplies[replyMessage.seq]; + if (replyMessage.err) { + let err = replyMessage.err; + if (replyMessage.err.$isError) { + err = new Error(); + err.name = replyMessage.err.name; + err.message = replyMessage.err.message; + err.stack = replyMessage.err.stack; + } + reply.reject(err); + return; + } + reply.resolve(replyMessage.res); + } + _handleRequestMessage(requestMessage) { + const req = requestMessage.req; + const result = this._handler.handleMessage(requestMessage.method, requestMessage.args); + result.then((r) => { + this._send(new ReplyMessage(this._workerId, req, r, undefined)); + }, (e) => { + if (e.detail instanceof Error) { + // Loading errors have a detail property that points to the actual error + e.detail = transformErrorForSerialization(e.detail); + } + this._send(new ReplyMessage(this._workerId, req, undefined, transformErrorForSerialization(e))); + }); + } + _handleSubscribeEventMessage(msg) { + const req = msg.req; + const disposable = this._handler.handleEvent(msg.eventName, msg.arg)((event) => { + this._send(new EventMessage(this._workerId, req, event)); + }); + this._pendingEvents.set(req, disposable); + } + _handleEventMessage(msg) { + if (!this._pendingEmitters.has(msg.req)) { + console.warn('Got event for unknown req'); + return; + } + this._pendingEmitters.get(msg.req).fire(msg.event); + } + _handleUnsubscribeEventMessage(msg) { + if (!this._pendingEvents.has(msg.req)) { + console.warn('Got unsubscribe for unknown req'); + return; + } + this._pendingEvents.get(msg.req).dispose(); + this._pendingEvents.delete(msg.req); + } + _send(msg) { + const transfer = []; + if (msg.type === 0 /* MessageType.Request */) { + for (let i = 0; i < msg.args.length; i++) { + if (msg.args[i] instanceof ArrayBuffer) { + transfer.push(msg.args[i]); + } + } + } + else if (msg.type === 1 /* MessageType.Reply */) { + if (msg.res instanceof ArrayBuffer) { + transfer.push(msg.res); + } + } + this._handler.sendMessage(msg, transfer); + } +} +function propertyIsEvent(name) { + // Assume a property is an event if it has a form of "onSomething" + return name[0] === 'o' && name[1] === 'n' && isUpperAsciiLetter(name.charCodeAt(2)); +} +function propertyIsDynamicEvent(name) { + // Assume a property is a dynamic event (a method that returns an event) if it has a form of "onDynamicSomething" + return /^onDynamic/.test(name) && isUpperAsciiLetter(name.charCodeAt(9)); +} +function createProxyObject(methodNames, invoke, proxyListen) { + const createProxyMethod = (method) => { + return function () { + const args = Array.prototype.slice.call(arguments, 0); + return invoke(method, args); + }; + }; + const createProxyDynamicEvent = (eventName) => { + return function (arg) { + return proxyListen(eventName, arg); + }; + }; + const result = {}; + for (const methodName of methodNames) { + if (propertyIsDynamicEvent(methodName)) { + result[methodName] = createProxyDynamicEvent(methodName); + continue; + } + if (propertyIsEvent(methodName)) { + result[methodName] = proxyListen(methodName, undefined); + continue; + } + result[methodName] = createProxyMethod(methodName); + } + return result; +} +/** + * Worker side + */ +class SimpleWorkerServer { + constructor(postMessage, requestHandlerFactory) { + this._requestHandlerFactory = requestHandlerFactory; + this._requestHandler = null; + this._protocol = new SimpleWorkerProtocol({ + sendMessage: (msg, transfer) => { + postMessage(msg, transfer); + }, + handleMessage: (method, args) => this._handleMessage(method, args), + handleEvent: (eventName, arg) => this._handleEvent(eventName, arg) + }); + } + onmessage(msg) { + this._protocol.handleMessage(msg); + } + _handleMessage(method, args) { + if (method === INITIALIZE) { + return this.initialize(args[0], args[1], args[2], args[3]); + } + if (!this._requestHandler || typeof this._requestHandler[method] !== 'function') { + return Promise.reject(new Error('Missing requestHandler or method: ' + method)); + } + try { + return Promise.resolve(this._requestHandler[method].apply(this._requestHandler, args)); + } + catch (e) { + return Promise.reject(e); + } + } + _handleEvent(eventName, arg) { + if (!this._requestHandler) { + throw new Error(`Missing requestHandler`); + } + if (propertyIsDynamicEvent(eventName)) { + const event = this._requestHandler[eventName].call(this._requestHandler, arg); + if (typeof event !== 'function') { + throw new Error(`Missing dynamic event ${eventName} on request handler.`); + } + return event; + } + if (propertyIsEvent(eventName)) { + const event = this._requestHandler[eventName]; + if (typeof event !== 'function') { + throw new Error(`Missing event ${eventName} on request handler.`); + } + return event; + } + throw new Error(`Malformed event name ${eventName}`); + } + initialize(workerId, loaderConfig, moduleId, hostMethods) { + this._protocol.setWorkerId(workerId); + const proxyMethodRequest = (method, args) => { + return this._protocol.sendMessage(method, args); + }; + const proxyListen = (eventName, arg) => { + return this._protocol.listen(eventName, arg); + }; + const hostProxy = createProxyObject(hostMethods, proxyMethodRequest, proxyListen); + if (this._requestHandlerFactory) { + // static request handler + this._requestHandler = this._requestHandlerFactory(hostProxy); + return Promise.resolve(getAllMethodNames(this._requestHandler)); + } + if (loaderConfig) { + // Remove 'baseUrl', handling it is beyond scope for now + if (typeof loaderConfig.baseUrl !== 'undefined') { + delete loaderConfig['baseUrl']; + } + if (typeof loaderConfig.paths !== 'undefined') { + if (typeof loaderConfig.paths.vs !== 'undefined') { + delete loaderConfig.paths['vs']; + } + } + if (typeof loaderConfig.trustedTypesPolicy !== undefined) { + // don't use, it has been destroyed during serialize + delete loaderConfig['trustedTypesPolicy']; + } + // Since this is in a web worker, enable catching errors + loaderConfig.catchError = true; + globalThis.require.config(loaderConfig); + } + return new Promise((resolve, reject) => { + // Use the global require to be sure to get the global config + // ESM-comment-begin + // const req = (globalThis.require || require); + // ESM-comment-end + // ESM-uncomment-begin + const req = globalThis.require; + // ESM-uncomment-end + req([moduleId], (module) => { + this._requestHandler = module.create(hostProxy); + if (!this._requestHandler) { + reject(new Error(`No RequestHandler!`)); + return; + } + resolve(getAllMethodNames(this._requestHandler)); + }, reject); + }); + } +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +/** + * Represents information about a specific difference between two sequences. + */ +class DiffChange { + /** + * Constructs a new DiffChange with the given sequence information + * and content. + */ + constructor(originalStart, originalLength, modifiedStart, modifiedLength) { + //Debug.Assert(originalLength > 0 || modifiedLength > 0, "originalLength and modifiedLength cannot both be <= 0"); + this.originalStart = originalStart; + this.originalLength = originalLength; + this.modifiedStart = modifiedStart; + this.modifiedLength = modifiedLength; + } + /** + * The end point (exclusive) of the change in the original sequence. + */ + getOriginalEnd() { + return this.originalStart + this.originalLength; + } + /** + * The end point (exclusive) of the change in the modified sequence. + */ + getModifiedEnd() { + return this.modifiedStart + this.modifiedLength; + } +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +function numberHash(val, initialHashVal) { + return (((initialHashVal << 5) - initialHashVal) + val) | 0; // hashVal * 31 + ch, keep as int32 +} +function stringHash(s, hashVal) { + hashVal = numberHash(149417, hashVal); + for (let i = 0, length = s.length; i < length; i++) { + hashVal = numberHash(s.charCodeAt(i), hashVal); + } + return hashVal; +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +class StringDiffSequence { + constructor(source) { + this.source = source; + } + getElements() { + const source = this.source; + const characters = new Int32Array(source.length); + for (let i = 0, len = source.length; i < len; i++) { + characters[i] = source.charCodeAt(i); + } + return characters; + } +} +function stringDiff(original, modified, pretty) { + return new LcsDiff(new StringDiffSequence(original), new StringDiffSequence(modified)).ComputeDiff(pretty).changes; +} +// +// The code below has been ported from a C# implementation in VS +// +class Debug { + static Assert(condition, message) { + if (!condition) { + throw new Error(message); + } + } +} +class MyArray { + /** + * Copies a range of elements from an Array starting at the specified source index and pastes + * them to another Array starting at the specified destination index. The length and the indexes + * are specified as 64-bit integers. + * sourceArray: + * The Array that contains the data to copy. + * sourceIndex: + * A 64-bit integer that represents the index in the sourceArray at which copying begins. + * destinationArray: + * The Array that receives the data. + * destinationIndex: + * A 64-bit integer that represents the index in the destinationArray at which storing begins. + * length: + * A 64-bit integer that represents the number of elements to copy. + */ + static Copy(sourceArray, sourceIndex, destinationArray, destinationIndex, length) { + for (let i = 0; i < length; i++) { + destinationArray[destinationIndex + i] = sourceArray[sourceIndex + i]; + } + } + static Copy2(sourceArray, sourceIndex, destinationArray, destinationIndex, length) { + for (let i = 0; i < length; i++) { + destinationArray[destinationIndex + i] = sourceArray[sourceIndex + i]; + } + } +} +/** + * A utility class which helps to create the set of DiffChanges from + * a difference operation. This class accepts original DiffElements and + * modified DiffElements that are involved in a particular change. The + * MarkNextChange() method can be called to mark the separation between + * distinct changes. At the end, the Changes property can be called to retrieve + * the constructed changes. + */ +class DiffChangeHelper { + /** + * Constructs a new DiffChangeHelper for the given DiffSequences. + */ + constructor() { + this.m_changes = []; + this.m_originalStart = 1073741824 /* Constants.MAX_SAFE_SMALL_INTEGER */; + this.m_modifiedStart = 1073741824 /* Constants.MAX_SAFE_SMALL_INTEGER */; + this.m_originalCount = 0; + this.m_modifiedCount = 0; + } + /** + * Marks the beginning of the next change in the set of differences. + */ + MarkNextChange() { + // Only add to the list if there is something to add + if (this.m_originalCount > 0 || this.m_modifiedCount > 0) { + // Add the new change to our list + this.m_changes.push(new DiffChange(this.m_originalStart, this.m_originalCount, this.m_modifiedStart, this.m_modifiedCount)); + } + // Reset for the next change + this.m_originalCount = 0; + this.m_modifiedCount = 0; + this.m_originalStart = 1073741824 /* Constants.MAX_SAFE_SMALL_INTEGER */; + this.m_modifiedStart = 1073741824 /* Constants.MAX_SAFE_SMALL_INTEGER */; + } + /** + * Adds the original element at the given position to the elements + * affected by the current change. The modified index gives context + * to the change position with respect to the original sequence. + * @param originalIndex The index of the original element to add. + * @param modifiedIndex The index of the modified element that provides corresponding position in the modified sequence. + */ + AddOriginalElement(originalIndex, modifiedIndex) { + // The 'true' start index is the smallest of the ones we've seen + this.m_originalStart = Math.min(this.m_originalStart, originalIndex); + this.m_modifiedStart = Math.min(this.m_modifiedStart, modifiedIndex); + this.m_originalCount++; + } + /** + * Adds the modified element at the given position to the elements + * affected by the current change. The original index gives context + * to the change position with respect to the modified sequence. + * @param originalIndex The index of the original element that provides corresponding position in the original sequence. + * @param modifiedIndex The index of the modified element to add. + */ + AddModifiedElement(originalIndex, modifiedIndex) { + // The 'true' start index is the smallest of the ones we've seen + this.m_originalStart = Math.min(this.m_originalStart, originalIndex); + this.m_modifiedStart = Math.min(this.m_modifiedStart, modifiedIndex); + this.m_modifiedCount++; + } + /** + * Retrieves all of the changes marked by the class. + */ + getChanges() { + if (this.m_originalCount > 0 || this.m_modifiedCount > 0) { + // Finish up on whatever is left + this.MarkNextChange(); + } + return this.m_changes; + } + /** + * Retrieves all of the changes marked by the class in the reverse order + */ + getReverseChanges() { + if (this.m_originalCount > 0 || this.m_modifiedCount > 0) { + // Finish up on whatever is left + this.MarkNextChange(); + } + this.m_changes.reverse(); + return this.m_changes; + } +} +/** + * An implementation of the difference algorithm described in + * "An O(ND) Difference Algorithm and its variations" by Eugene W. Myers + */ +class LcsDiff { + /** + * Constructs the DiffFinder + */ + constructor(originalSequence, modifiedSequence, continueProcessingPredicate = null) { + this.ContinueProcessingPredicate = continueProcessingPredicate; + this._originalSequence = originalSequence; + this._modifiedSequence = modifiedSequence; + const [originalStringElements, originalElementsOrHash, originalHasStrings] = LcsDiff._getElements(originalSequence); + const [modifiedStringElements, modifiedElementsOrHash, modifiedHasStrings] = LcsDiff._getElements(modifiedSequence); + this._hasStrings = (originalHasStrings && modifiedHasStrings); + this._originalStringElements = originalStringElements; + this._originalElementsOrHash = originalElementsOrHash; + this._modifiedStringElements = modifiedStringElements; + this._modifiedElementsOrHash = modifiedElementsOrHash; + this.m_forwardHistory = []; + this.m_reverseHistory = []; + } + static _isStringArray(arr) { + return (arr.length > 0 && typeof arr[0] === 'string'); + } + static _getElements(sequence) { + const elements = sequence.getElements(); + if (LcsDiff._isStringArray(elements)) { + const hashes = new Int32Array(elements.length); + for (let i = 0, len = elements.length; i < len; i++) { + hashes[i] = stringHash(elements[i], 0); + } + return [elements, hashes, true]; + } + if (elements instanceof Int32Array) { + return [[], elements, false]; + } + return [[], new Int32Array(elements), false]; + } + ElementsAreEqual(originalIndex, newIndex) { + if (this._originalElementsOrHash[originalIndex] !== this._modifiedElementsOrHash[newIndex]) { + return false; + } + return (this._hasStrings ? this._originalStringElements[originalIndex] === this._modifiedStringElements[newIndex] : true); + } + ElementsAreStrictEqual(originalIndex, newIndex) { + if (!this.ElementsAreEqual(originalIndex, newIndex)) { + return false; + } + const originalElement = LcsDiff._getStrictElement(this._originalSequence, originalIndex); + const modifiedElement = LcsDiff._getStrictElement(this._modifiedSequence, newIndex); + return (originalElement === modifiedElement); + } + static _getStrictElement(sequence, index) { + if (typeof sequence.getStrictElement === 'function') { + return sequence.getStrictElement(index); + } + return null; + } + OriginalElementsAreEqual(index1, index2) { + if (this._originalElementsOrHash[index1] !== this._originalElementsOrHash[index2]) { + return false; + } + return (this._hasStrings ? this._originalStringElements[index1] === this._originalStringElements[index2] : true); + } + ModifiedElementsAreEqual(index1, index2) { + if (this._modifiedElementsOrHash[index1] !== this._modifiedElementsOrHash[index2]) { + return false; + } + return (this._hasStrings ? this._modifiedStringElements[index1] === this._modifiedStringElements[index2] : true); + } + ComputeDiff(pretty) { + return this._ComputeDiff(0, this._originalElementsOrHash.length - 1, 0, this._modifiedElementsOrHash.length - 1, pretty); + } + /** + * Computes the differences between the original and modified input + * sequences on the bounded range. + * @returns An array of the differences between the two input sequences. + */ + _ComputeDiff(originalStart, originalEnd, modifiedStart, modifiedEnd, pretty) { + const quitEarlyArr = [false]; + let changes = this.ComputeDiffRecursive(originalStart, originalEnd, modifiedStart, modifiedEnd, quitEarlyArr); + if (pretty) { + // We have to clean up the computed diff to be more intuitive + // but it turns out this cannot be done correctly until the entire set + // of diffs have been computed + changes = this.PrettifyChanges(changes); + } + return { + quitEarly: quitEarlyArr[0], + changes: changes + }; + } + /** + * Private helper method which computes the differences on the bounded range + * recursively. + * @returns An array of the differences between the two input sequences. + */ + ComputeDiffRecursive(originalStart, originalEnd, modifiedStart, modifiedEnd, quitEarlyArr) { + quitEarlyArr[0] = false; + // Find the start of the differences + while (originalStart <= originalEnd && modifiedStart <= modifiedEnd && this.ElementsAreEqual(originalStart, modifiedStart)) { + originalStart++; + modifiedStart++; + } + // Find the end of the differences + while (originalEnd >= originalStart && modifiedEnd >= modifiedStart && this.ElementsAreEqual(originalEnd, modifiedEnd)) { + originalEnd--; + modifiedEnd--; + } + // In the special case where we either have all insertions or all deletions or the sequences are identical + if (originalStart > originalEnd || modifiedStart > modifiedEnd) { + let changes; + if (modifiedStart <= modifiedEnd) { + Debug.Assert(originalStart === originalEnd + 1, 'originalStart should only be one more than originalEnd'); + // All insertions + changes = [ + new DiffChange(originalStart, 0, modifiedStart, modifiedEnd - modifiedStart + 1) + ]; + } + else if (originalStart <= originalEnd) { + Debug.Assert(modifiedStart === modifiedEnd + 1, 'modifiedStart should only be one more than modifiedEnd'); + // All deletions + changes = [ + new DiffChange(originalStart, originalEnd - originalStart + 1, modifiedStart, 0) + ]; + } + else { + Debug.Assert(originalStart === originalEnd + 1, 'originalStart should only be one more than originalEnd'); + Debug.Assert(modifiedStart === modifiedEnd + 1, 'modifiedStart should only be one more than modifiedEnd'); + // Identical sequences - No differences + changes = []; + } + return changes; + } + // This problem can be solved using the Divide-And-Conquer technique. + const midOriginalArr = [0]; + const midModifiedArr = [0]; + const result = this.ComputeRecursionPoint(originalStart, originalEnd, modifiedStart, modifiedEnd, midOriginalArr, midModifiedArr, quitEarlyArr); + const midOriginal = midOriginalArr[0]; + const midModified = midModifiedArr[0]; + if (result !== null) { + // Result is not-null when there was enough memory to compute the changes while + // searching for the recursion point + return result; + } + else if (!quitEarlyArr[0]) { + // We can break the problem down recursively by finding the changes in the + // First Half: (originalStart, modifiedStart) to (midOriginal, midModified) + // Second Half: (midOriginal + 1, minModified + 1) to (originalEnd, modifiedEnd) + // NOTE: ComputeDiff() is inclusive, therefore the second range starts on the next point + const leftChanges = this.ComputeDiffRecursive(originalStart, midOriginal, modifiedStart, midModified, quitEarlyArr); + let rightChanges = []; + if (!quitEarlyArr[0]) { + rightChanges = this.ComputeDiffRecursive(midOriginal + 1, originalEnd, midModified + 1, modifiedEnd, quitEarlyArr); + } + else { + // We didn't have time to finish the first half, so we don't have time to compute this half. + // Consider the entire rest of the sequence different. + rightChanges = [ + new DiffChange(midOriginal + 1, originalEnd - (midOriginal + 1) + 1, midModified + 1, modifiedEnd - (midModified + 1) + 1) + ]; + } + return this.ConcatenateChanges(leftChanges, rightChanges); + } + // If we hit here, we quit early, and so can't return anything meaningful + return [ + new DiffChange(originalStart, originalEnd - originalStart + 1, modifiedStart, modifiedEnd - modifiedStart + 1) + ]; + } + WALKTRACE(diagonalForwardBase, diagonalForwardStart, diagonalForwardEnd, diagonalForwardOffset, diagonalReverseBase, diagonalReverseStart, diagonalReverseEnd, diagonalReverseOffset, forwardPoints, reversePoints, originalIndex, originalEnd, midOriginalArr, modifiedIndex, modifiedEnd, midModifiedArr, deltaIsEven, quitEarlyArr) { + let forwardChanges = null; + let reverseChanges = null; + // First, walk backward through the forward diagonals history + let changeHelper = new DiffChangeHelper(); + let diagonalMin = diagonalForwardStart; + let diagonalMax = diagonalForwardEnd; + let diagonalRelative = (midOriginalArr[0] - midModifiedArr[0]) - diagonalForwardOffset; + let lastOriginalIndex = -1073741824 /* Constants.MIN_SAFE_SMALL_INTEGER */; + let historyIndex = this.m_forwardHistory.length - 1; + do { + // Get the diagonal index from the relative diagonal number + const diagonal = diagonalRelative + diagonalForwardBase; + // Figure out where we came from + if (diagonal === diagonalMin || (diagonal < diagonalMax && forwardPoints[diagonal - 1] < forwardPoints[diagonal + 1])) { + // Vertical line (the element is an insert) + originalIndex = forwardPoints[diagonal + 1]; + modifiedIndex = originalIndex - diagonalRelative - diagonalForwardOffset; + if (originalIndex < lastOriginalIndex) { + changeHelper.MarkNextChange(); + } + lastOriginalIndex = originalIndex; + changeHelper.AddModifiedElement(originalIndex + 1, modifiedIndex); + diagonalRelative = (diagonal + 1) - diagonalForwardBase; //Setup for the next iteration + } + else { + // Horizontal line (the element is a deletion) + originalIndex = forwardPoints[diagonal - 1] + 1; + modifiedIndex = originalIndex - diagonalRelative - diagonalForwardOffset; + if (originalIndex < lastOriginalIndex) { + changeHelper.MarkNextChange(); + } + lastOriginalIndex = originalIndex - 1; + changeHelper.AddOriginalElement(originalIndex, modifiedIndex + 1); + diagonalRelative = (diagonal - 1) - diagonalForwardBase; //Setup for the next iteration + } + if (historyIndex >= 0) { + forwardPoints = this.m_forwardHistory[historyIndex]; + diagonalForwardBase = forwardPoints[0]; //We stored this in the first spot + diagonalMin = 1; + diagonalMax = forwardPoints.length - 1; + } + } while (--historyIndex >= -1); + // Ironically, we get the forward changes as the reverse of the + // order we added them since we technically added them backwards + forwardChanges = changeHelper.getReverseChanges(); + if (quitEarlyArr[0]) { + // TODO: Calculate a partial from the reverse diagonals. + // For now, just assume everything after the midOriginal/midModified point is a diff + let originalStartPoint = midOriginalArr[0] + 1; + let modifiedStartPoint = midModifiedArr[0] + 1; + if (forwardChanges !== null && forwardChanges.length > 0) { + const lastForwardChange = forwardChanges[forwardChanges.length - 1]; + originalStartPoint = Math.max(originalStartPoint, lastForwardChange.getOriginalEnd()); + modifiedStartPoint = Math.max(modifiedStartPoint, lastForwardChange.getModifiedEnd()); + } + reverseChanges = [ + new DiffChange(originalStartPoint, originalEnd - originalStartPoint + 1, modifiedStartPoint, modifiedEnd - modifiedStartPoint + 1) + ]; + } + else { + // Now walk backward through the reverse diagonals history + changeHelper = new DiffChangeHelper(); + diagonalMin = diagonalReverseStart; + diagonalMax = diagonalReverseEnd; + diagonalRelative = (midOriginalArr[0] - midModifiedArr[0]) - diagonalReverseOffset; + lastOriginalIndex = 1073741824 /* Constants.MAX_SAFE_SMALL_INTEGER */; + historyIndex = (deltaIsEven) ? this.m_reverseHistory.length - 1 : this.m_reverseHistory.length - 2; + do { + // Get the diagonal index from the relative diagonal number + const diagonal = diagonalRelative + diagonalReverseBase; + // Figure out where we came from + if (diagonal === diagonalMin || (diagonal < diagonalMax && reversePoints[diagonal - 1] >= reversePoints[diagonal + 1])) { + // Horizontal line (the element is a deletion)) + originalIndex = reversePoints[diagonal + 1] - 1; + modifiedIndex = originalIndex - diagonalRelative - diagonalReverseOffset; + if (originalIndex > lastOriginalIndex) { + changeHelper.MarkNextChange(); + } + lastOriginalIndex = originalIndex + 1; + changeHelper.AddOriginalElement(originalIndex + 1, modifiedIndex + 1); + diagonalRelative = (diagonal + 1) - diagonalReverseBase; //Setup for the next iteration + } + else { + // Vertical line (the element is an insertion) + originalIndex = reversePoints[diagonal - 1]; + modifiedIndex = originalIndex - diagonalRelative - diagonalReverseOffset; + if (originalIndex > lastOriginalIndex) { + changeHelper.MarkNextChange(); + } + lastOriginalIndex = originalIndex; + changeHelper.AddModifiedElement(originalIndex + 1, modifiedIndex + 1); + diagonalRelative = (diagonal - 1) - diagonalReverseBase; //Setup for the next iteration + } + if (historyIndex >= 0) { + reversePoints = this.m_reverseHistory[historyIndex]; + diagonalReverseBase = reversePoints[0]; //We stored this in the first spot + diagonalMin = 1; + diagonalMax = reversePoints.length - 1; + } + } while (--historyIndex >= -1); + // There are cases where the reverse history will find diffs that + // are correct, but not intuitive, so we need shift them. + reverseChanges = changeHelper.getChanges(); + } + return this.ConcatenateChanges(forwardChanges, reverseChanges); + } + /** + * Given the range to compute the diff on, this method finds the point: + * (midOriginal, midModified) + * that exists in the middle of the LCS of the two sequences and + * is the point at which the LCS problem may be broken down recursively. + * This method will try to keep the LCS trace in memory. If the LCS recursion + * point is calculated and the full trace is available in memory, then this method + * will return the change list. + * @param originalStart The start bound of the original sequence range + * @param originalEnd The end bound of the original sequence range + * @param modifiedStart The start bound of the modified sequence range + * @param modifiedEnd The end bound of the modified sequence range + * @param midOriginal The middle point of the original sequence range + * @param midModified The middle point of the modified sequence range + * @returns The diff changes, if available, otherwise null + */ + ComputeRecursionPoint(originalStart, originalEnd, modifiedStart, modifiedEnd, midOriginalArr, midModifiedArr, quitEarlyArr) { + let originalIndex = 0, modifiedIndex = 0; + let diagonalForwardStart = 0, diagonalForwardEnd = 0; + let diagonalReverseStart = 0, diagonalReverseEnd = 0; + // To traverse the edit graph and produce the proper LCS, our actual + // start position is just outside the given boundary + originalStart--; + modifiedStart--; + // We set these up to make the compiler happy, but they will + // be replaced before we return with the actual recursion point + midOriginalArr[0] = 0; + midModifiedArr[0] = 0; + // Clear out the history + this.m_forwardHistory = []; + this.m_reverseHistory = []; + // Each cell in the two arrays corresponds to a diagonal in the edit graph. + // The integer value in the cell represents the originalIndex of the furthest + // reaching point found so far that ends in that diagonal. + // The modifiedIndex can be computed mathematically from the originalIndex and the diagonal number. + const maxDifferences = (originalEnd - originalStart) + (modifiedEnd - modifiedStart); + const numDiagonals = maxDifferences + 1; + const forwardPoints = new Int32Array(numDiagonals); + const reversePoints = new Int32Array(numDiagonals); + // diagonalForwardBase: Index into forwardPoints of the diagonal which passes through (originalStart, modifiedStart) + // diagonalReverseBase: Index into reversePoints of the diagonal which passes through (originalEnd, modifiedEnd) + const diagonalForwardBase = (modifiedEnd - modifiedStart); + const diagonalReverseBase = (originalEnd - originalStart); + // diagonalForwardOffset: Geometric offset which allows modifiedIndex to be computed from originalIndex and the + // diagonal number (relative to diagonalForwardBase) + // diagonalReverseOffset: Geometric offset which allows modifiedIndex to be computed from originalIndex and the + // diagonal number (relative to diagonalReverseBase) + const diagonalForwardOffset = (originalStart - modifiedStart); + const diagonalReverseOffset = (originalEnd - modifiedEnd); + // delta: The difference between the end diagonal and the start diagonal. This is used to relate diagonal numbers + // relative to the start diagonal with diagonal numbers relative to the end diagonal. + // The Even/Oddn-ness of this delta is important for determining when we should check for overlap + const delta = diagonalReverseBase - diagonalForwardBase; + const deltaIsEven = (delta % 2 === 0); + // Here we set up the start and end points as the furthest points found so far + // in both the forward and reverse directions, respectively + forwardPoints[diagonalForwardBase] = originalStart; + reversePoints[diagonalReverseBase] = originalEnd; + // Remember if we quit early, and thus need to do a best-effort result instead of a real result. + quitEarlyArr[0] = false; + // A couple of points: + // --With this method, we iterate on the number of differences between the two sequences. + // The more differences there actually are, the longer this will take. + // --Also, as the number of differences increases, we have to search on diagonals further + // away from the reference diagonal (which is diagonalForwardBase for forward, diagonalReverseBase for reverse). + // --We extend on even diagonals (relative to the reference diagonal) only when numDifferences + // is even and odd diagonals only when numDifferences is odd. + for (let numDifferences = 1; numDifferences <= (maxDifferences / 2) + 1; numDifferences++) { + let furthestOriginalIndex = 0; + let furthestModifiedIndex = 0; + // Run the algorithm in the forward direction + diagonalForwardStart = this.ClipDiagonalBound(diagonalForwardBase - numDifferences, numDifferences, diagonalForwardBase, numDiagonals); + diagonalForwardEnd = this.ClipDiagonalBound(diagonalForwardBase + numDifferences, numDifferences, diagonalForwardBase, numDiagonals); + for (let diagonal = diagonalForwardStart; diagonal <= diagonalForwardEnd; diagonal += 2) { + // STEP 1: We extend the furthest reaching point in the present diagonal + // by looking at the diagonals above and below and picking the one whose point + // is further away from the start point (originalStart, modifiedStart) + if (diagonal === diagonalForwardStart || (diagonal < diagonalForwardEnd && forwardPoints[diagonal - 1] < forwardPoints[diagonal + 1])) { + originalIndex = forwardPoints[diagonal + 1]; + } + else { + originalIndex = forwardPoints[diagonal - 1] + 1; + } + modifiedIndex = originalIndex - (diagonal - diagonalForwardBase) - diagonalForwardOffset; + // Save the current originalIndex so we can test for false overlap in step 3 + const tempOriginalIndex = originalIndex; + // STEP 2: We can continue to extend the furthest reaching point in the present diagonal + // so long as the elements are equal. + while (originalIndex < originalEnd && modifiedIndex < modifiedEnd && this.ElementsAreEqual(originalIndex + 1, modifiedIndex + 1)) { + originalIndex++; + modifiedIndex++; + } + forwardPoints[diagonal] = originalIndex; + if (originalIndex + modifiedIndex > furthestOriginalIndex + furthestModifiedIndex) { + furthestOriginalIndex = originalIndex; + furthestModifiedIndex = modifiedIndex; + } + // STEP 3: If delta is odd (overlap first happens on forward when delta is odd) + // and diagonal is in the range of reverse diagonals computed for numDifferences-1 + // (the previous iteration; we haven't computed reverse diagonals for numDifferences yet) + // then check for overlap. + if (!deltaIsEven && Math.abs(diagonal - diagonalReverseBase) <= (numDifferences - 1)) { + if (originalIndex >= reversePoints[diagonal]) { + midOriginalArr[0] = originalIndex; + midModifiedArr[0] = modifiedIndex; + if (tempOriginalIndex <= reversePoints[diagonal] && 1447 /* LocalConstants.MaxDifferencesHistory */ > 0 && numDifferences <= (1447 /* LocalConstants.MaxDifferencesHistory */ + 1)) { + // BINGO! We overlapped, and we have the full trace in memory! + return this.WALKTRACE(diagonalForwardBase, diagonalForwardStart, diagonalForwardEnd, diagonalForwardOffset, diagonalReverseBase, diagonalReverseStart, diagonalReverseEnd, diagonalReverseOffset, forwardPoints, reversePoints, originalIndex, originalEnd, midOriginalArr, modifiedIndex, modifiedEnd, midModifiedArr, deltaIsEven, quitEarlyArr); + } + else { + // Either false overlap, or we didn't have enough memory for the full trace + // Just return the recursion point + return null; + } + } + } + } + // Check to see if we should be quitting early, before moving on to the next iteration. + const matchLengthOfLongest = ((furthestOriginalIndex - originalStart) + (furthestModifiedIndex - modifiedStart) - numDifferences) / 2; + if (this.ContinueProcessingPredicate !== null && !this.ContinueProcessingPredicate(furthestOriginalIndex, matchLengthOfLongest)) { + // We can't finish, so skip ahead to generating a result from what we have. + quitEarlyArr[0] = true; + // Use the furthest distance we got in the forward direction. + midOriginalArr[0] = furthestOriginalIndex; + midModifiedArr[0] = furthestModifiedIndex; + if (matchLengthOfLongest > 0 && 1447 /* LocalConstants.MaxDifferencesHistory */ > 0 && numDifferences <= (1447 /* LocalConstants.MaxDifferencesHistory */ + 1)) { + // Enough of the history is in memory to walk it backwards + return this.WALKTRACE(diagonalForwardBase, diagonalForwardStart, diagonalForwardEnd, diagonalForwardOffset, diagonalReverseBase, diagonalReverseStart, diagonalReverseEnd, diagonalReverseOffset, forwardPoints, reversePoints, originalIndex, originalEnd, midOriginalArr, modifiedIndex, modifiedEnd, midModifiedArr, deltaIsEven, quitEarlyArr); + } + else { + // We didn't actually remember enough of the history. + //Since we are quitting the diff early, we need to shift back the originalStart and modified start + //back into the boundary limits since we decremented their value above beyond the boundary limit. + originalStart++; + modifiedStart++; + return [ + new DiffChange(originalStart, originalEnd - originalStart + 1, modifiedStart, modifiedEnd - modifiedStart + 1) + ]; + } + } + // Run the algorithm in the reverse direction + diagonalReverseStart = this.ClipDiagonalBound(diagonalReverseBase - numDifferences, numDifferences, diagonalReverseBase, numDiagonals); + diagonalReverseEnd = this.ClipDiagonalBound(diagonalReverseBase + numDifferences, numDifferences, diagonalReverseBase, numDiagonals); + for (let diagonal = diagonalReverseStart; diagonal <= diagonalReverseEnd; diagonal += 2) { + // STEP 1: We extend the furthest reaching point in the present diagonal + // by looking at the diagonals above and below and picking the one whose point + // is further away from the start point (originalEnd, modifiedEnd) + if (diagonal === diagonalReverseStart || (diagonal < diagonalReverseEnd && reversePoints[diagonal - 1] >= reversePoints[diagonal + 1])) { + originalIndex = reversePoints[diagonal + 1] - 1; + } + else { + originalIndex = reversePoints[diagonal - 1]; + } + modifiedIndex = originalIndex - (diagonal - diagonalReverseBase) - diagonalReverseOffset; + // Save the current originalIndex so we can test for false overlap + const tempOriginalIndex = originalIndex; + // STEP 2: We can continue to extend the furthest reaching point in the present diagonal + // as long as the elements are equal. + while (originalIndex > originalStart && modifiedIndex > modifiedStart && this.ElementsAreEqual(originalIndex, modifiedIndex)) { + originalIndex--; + modifiedIndex--; + } + reversePoints[diagonal] = originalIndex; + // STEP 4: If delta is even (overlap first happens on reverse when delta is even) + // and diagonal is in the range of forward diagonals computed for numDifferences + // then check for overlap. + if (deltaIsEven && Math.abs(diagonal - diagonalForwardBase) <= numDifferences) { + if (originalIndex <= forwardPoints[diagonal]) { + midOriginalArr[0] = originalIndex; + midModifiedArr[0] = modifiedIndex; + if (tempOriginalIndex >= forwardPoints[diagonal] && 1447 /* LocalConstants.MaxDifferencesHistory */ > 0 && numDifferences <= (1447 /* LocalConstants.MaxDifferencesHistory */ + 1)) { + // BINGO! We overlapped, and we have the full trace in memory! + return this.WALKTRACE(diagonalForwardBase, diagonalForwardStart, diagonalForwardEnd, diagonalForwardOffset, diagonalReverseBase, diagonalReverseStart, diagonalReverseEnd, diagonalReverseOffset, forwardPoints, reversePoints, originalIndex, originalEnd, midOriginalArr, modifiedIndex, modifiedEnd, midModifiedArr, deltaIsEven, quitEarlyArr); + } + else { + // Either false overlap, or we didn't have enough memory for the full trace + // Just return the recursion point + return null; + } + } + } + } + // Save current vectors to history before the next iteration + if (numDifferences <= 1447 /* LocalConstants.MaxDifferencesHistory */) { + // We are allocating space for one extra int, which we fill with + // the index of the diagonal base index + let temp = new Int32Array(diagonalForwardEnd - diagonalForwardStart + 2); + temp[0] = diagonalForwardBase - diagonalForwardStart + 1; + MyArray.Copy2(forwardPoints, diagonalForwardStart, temp, 1, diagonalForwardEnd - diagonalForwardStart + 1); + this.m_forwardHistory.push(temp); + temp = new Int32Array(diagonalReverseEnd - diagonalReverseStart + 2); + temp[0] = diagonalReverseBase - diagonalReverseStart + 1; + MyArray.Copy2(reversePoints, diagonalReverseStart, temp, 1, diagonalReverseEnd - diagonalReverseStart + 1); + this.m_reverseHistory.push(temp); + } + } + // If we got here, then we have the full trace in history. We just have to convert it to a change list + // NOTE: This part is a bit messy + return this.WALKTRACE(diagonalForwardBase, diagonalForwardStart, diagonalForwardEnd, diagonalForwardOffset, diagonalReverseBase, diagonalReverseStart, diagonalReverseEnd, diagonalReverseOffset, forwardPoints, reversePoints, originalIndex, originalEnd, midOriginalArr, modifiedIndex, modifiedEnd, midModifiedArr, deltaIsEven, quitEarlyArr); + } + /** + * Shifts the given changes to provide a more intuitive diff. + * While the first element in a diff matches the first element after the diff, + * we shift the diff down. + * + * @param changes The list of changes to shift + * @returns The shifted changes + */ + PrettifyChanges(changes) { + // Shift all the changes down first + for (let i = 0; i < changes.length; i++) { + const change = changes[i]; + const originalStop = (i < changes.length - 1) ? changes[i + 1].originalStart : this._originalElementsOrHash.length; + const modifiedStop = (i < changes.length - 1) ? changes[i + 1].modifiedStart : this._modifiedElementsOrHash.length; + const checkOriginal = change.originalLength > 0; + const checkModified = change.modifiedLength > 0; + while (change.originalStart + change.originalLength < originalStop + && change.modifiedStart + change.modifiedLength < modifiedStop + && (!checkOriginal || this.OriginalElementsAreEqual(change.originalStart, change.originalStart + change.originalLength)) + && (!checkModified || this.ModifiedElementsAreEqual(change.modifiedStart, change.modifiedStart + change.modifiedLength))) { + const startStrictEqual = this.ElementsAreStrictEqual(change.originalStart, change.modifiedStart); + const endStrictEqual = this.ElementsAreStrictEqual(change.originalStart + change.originalLength, change.modifiedStart + change.modifiedLength); + if (endStrictEqual && !startStrictEqual) { + // moving the change down would create an equal change, but the elements are not strict equal + break; + } + change.originalStart++; + change.modifiedStart++; + } + const mergedChangeArr = [null]; + if (i < changes.length - 1 && this.ChangesOverlap(changes[i], changes[i + 1], mergedChangeArr)) { + changes[i] = mergedChangeArr[0]; + changes.splice(i + 1, 1); + i--; + continue; + } + } + // Shift changes back up until we hit empty or whitespace-only lines + for (let i = changes.length - 1; i >= 0; i--) { + const change = changes[i]; + let originalStop = 0; + let modifiedStop = 0; + if (i > 0) { + const prevChange = changes[i - 1]; + originalStop = prevChange.originalStart + prevChange.originalLength; + modifiedStop = prevChange.modifiedStart + prevChange.modifiedLength; + } + const checkOriginal = change.originalLength > 0; + const checkModified = change.modifiedLength > 0; + let bestDelta = 0; + let bestScore = this._boundaryScore(change.originalStart, change.originalLength, change.modifiedStart, change.modifiedLength); + for (let delta = 1;; delta++) { + const originalStart = change.originalStart - delta; + const modifiedStart = change.modifiedStart - delta; + if (originalStart < originalStop || modifiedStart < modifiedStop) { + break; + } + if (checkOriginal && !this.OriginalElementsAreEqual(originalStart, originalStart + change.originalLength)) { + break; + } + if (checkModified && !this.ModifiedElementsAreEqual(modifiedStart, modifiedStart + change.modifiedLength)) { + break; + } + const touchingPreviousChange = (originalStart === originalStop && modifiedStart === modifiedStop); + const score = ((touchingPreviousChange ? 5 : 0) + + this._boundaryScore(originalStart, change.originalLength, modifiedStart, change.modifiedLength)); + if (score > bestScore) { + bestScore = score; + bestDelta = delta; + } + } + change.originalStart -= bestDelta; + change.modifiedStart -= bestDelta; + const mergedChangeArr = [null]; + if (i > 0 && this.ChangesOverlap(changes[i - 1], changes[i], mergedChangeArr)) { + changes[i - 1] = mergedChangeArr[0]; + changes.splice(i, 1); + i++; + continue; + } + } + // There could be multiple longest common substrings. + // Give preference to the ones containing longer lines + if (this._hasStrings) { + for (let i = 1, len = changes.length; i < len; i++) { + const aChange = changes[i - 1]; + const bChange = changes[i]; + const matchedLength = bChange.originalStart - aChange.originalStart - aChange.originalLength; + const aOriginalStart = aChange.originalStart; + const bOriginalEnd = bChange.originalStart + bChange.originalLength; + const abOriginalLength = bOriginalEnd - aOriginalStart; + const aModifiedStart = aChange.modifiedStart; + const bModifiedEnd = bChange.modifiedStart + bChange.modifiedLength; + const abModifiedLength = bModifiedEnd - aModifiedStart; + // Avoid wasting a lot of time with these searches + if (matchedLength < 5 && abOriginalLength < 20 && abModifiedLength < 20) { + const t = this._findBetterContiguousSequence(aOriginalStart, abOriginalLength, aModifiedStart, abModifiedLength, matchedLength); + if (t) { + const [originalMatchStart, modifiedMatchStart] = t; + if (originalMatchStart !== aChange.originalStart + aChange.originalLength || modifiedMatchStart !== aChange.modifiedStart + aChange.modifiedLength) { + // switch to another sequence that has a better score + aChange.originalLength = originalMatchStart - aChange.originalStart; + aChange.modifiedLength = modifiedMatchStart - aChange.modifiedStart; + bChange.originalStart = originalMatchStart + matchedLength; + bChange.modifiedStart = modifiedMatchStart + matchedLength; + bChange.originalLength = bOriginalEnd - bChange.originalStart; + bChange.modifiedLength = bModifiedEnd - bChange.modifiedStart; + } + } + } + } + } + return changes; + } + _findBetterContiguousSequence(originalStart, originalLength, modifiedStart, modifiedLength, desiredLength) { + if (originalLength < desiredLength || modifiedLength < desiredLength) { + return null; + } + const originalMax = originalStart + originalLength - desiredLength + 1; + const modifiedMax = modifiedStart + modifiedLength - desiredLength + 1; + let bestScore = 0; + let bestOriginalStart = 0; + let bestModifiedStart = 0; + for (let i = originalStart; i < originalMax; i++) { + for (let j = modifiedStart; j < modifiedMax; j++) { + const score = this._contiguousSequenceScore(i, j, desiredLength); + if (score > 0 && score > bestScore) { + bestScore = score; + bestOriginalStart = i; + bestModifiedStart = j; + } + } + } + if (bestScore > 0) { + return [bestOriginalStart, bestModifiedStart]; + } + return null; + } + _contiguousSequenceScore(originalStart, modifiedStart, length) { + let score = 0; + for (let l = 0; l < length; l++) { + if (!this.ElementsAreEqual(originalStart + l, modifiedStart + l)) { + return 0; + } + score += this._originalStringElements[originalStart + l].length; + } + return score; + } + _OriginalIsBoundary(index) { + if (index <= 0 || index >= this._originalElementsOrHash.length - 1) { + return true; + } + return (this._hasStrings && /^\s*$/.test(this._originalStringElements[index])); + } + _OriginalRegionIsBoundary(originalStart, originalLength) { + if (this._OriginalIsBoundary(originalStart) || this._OriginalIsBoundary(originalStart - 1)) { + return true; + } + if (originalLength > 0) { + const originalEnd = originalStart + originalLength; + if (this._OriginalIsBoundary(originalEnd - 1) || this._OriginalIsBoundary(originalEnd)) { + return true; + } + } + return false; + } + _ModifiedIsBoundary(index) { + if (index <= 0 || index >= this._modifiedElementsOrHash.length - 1) { + return true; + } + return (this._hasStrings && /^\s*$/.test(this._modifiedStringElements[index])); + } + _ModifiedRegionIsBoundary(modifiedStart, modifiedLength) { + if (this._ModifiedIsBoundary(modifiedStart) || this._ModifiedIsBoundary(modifiedStart - 1)) { + return true; + } + if (modifiedLength > 0) { + const modifiedEnd = modifiedStart + modifiedLength; + if (this._ModifiedIsBoundary(modifiedEnd - 1) || this._ModifiedIsBoundary(modifiedEnd)) { + return true; + } + } + return false; + } + _boundaryScore(originalStart, originalLength, modifiedStart, modifiedLength) { + const originalScore = (this._OriginalRegionIsBoundary(originalStart, originalLength) ? 1 : 0); + const modifiedScore = (this._ModifiedRegionIsBoundary(modifiedStart, modifiedLength) ? 1 : 0); + return (originalScore + modifiedScore); + } + /** + * Concatenates the two input DiffChange lists and returns the resulting + * list. + * @param The left changes + * @param The right changes + * @returns The concatenated list + */ + ConcatenateChanges(left, right) { + const mergedChangeArr = []; + if (left.length === 0 || right.length === 0) { + return (right.length > 0) ? right : left; + } + else if (this.ChangesOverlap(left[left.length - 1], right[0], mergedChangeArr)) { + // Since we break the problem down recursively, it is possible that we + // might recurse in the middle of a change thereby splitting it into + // two changes. Here in the combining stage, we detect and fuse those + // changes back together + const result = new Array(left.length + right.length - 1); + MyArray.Copy(left, 0, result, 0, left.length - 1); + result[left.length - 1] = mergedChangeArr[0]; + MyArray.Copy(right, 1, result, left.length, right.length - 1); + return result; + } + else { + const result = new Array(left.length + right.length); + MyArray.Copy(left, 0, result, 0, left.length); + MyArray.Copy(right, 0, result, left.length, right.length); + return result; + } + } + /** + * Returns true if the two changes overlap and can be merged into a single + * change + * @param left The left change + * @param right The right change + * @param mergedChange The merged change if the two overlap, null otherwise + * @returns True if the two changes overlap + */ + ChangesOverlap(left, right, mergedChangeArr) { + Debug.Assert(left.originalStart <= right.originalStart, 'Left change is not less than or equal to right change'); + Debug.Assert(left.modifiedStart <= right.modifiedStart, 'Left change is not less than or equal to right change'); + if (left.originalStart + left.originalLength >= right.originalStart || left.modifiedStart + left.modifiedLength >= right.modifiedStart) { + const originalStart = left.originalStart; + let originalLength = left.originalLength; + const modifiedStart = left.modifiedStart; + let modifiedLength = left.modifiedLength; + if (left.originalStart + left.originalLength >= right.originalStart) { + originalLength = right.originalStart + right.originalLength - left.originalStart; + } + if (left.modifiedStart + left.modifiedLength >= right.modifiedStart) { + modifiedLength = right.modifiedStart + right.modifiedLength - left.modifiedStart; + } + mergedChangeArr[0] = new DiffChange(originalStart, originalLength, modifiedStart, modifiedLength); + return true; + } + else { + mergedChangeArr[0] = null; + return false; + } + } + /** + * Helper method used to clip a diagonal index to the range of valid + * diagonals. This also decides whether or not the diagonal index, + * if it exceeds the boundary, should be clipped to the boundary or clipped + * one inside the boundary depending on the Even/Odd status of the boundary + * and numDifferences. + * @param diagonal The index of the diagonal to clip. + * @param numDifferences The current number of differences being iterated upon. + * @param diagonalBaseIndex The base reference diagonal. + * @param numDiagonals The total number of diagonals. + * @returns The clipped diagonal index. + */ + ClipDiagonalBound(diagonal, numDifferences, diagonalBaseIndex, numDiagonals) { + if (diagonal >= 0 && diagonal < numDiagonals) { + // Nothing to clip, its in range + return diagonal; + } + // diagonalsBelow: The number of diagonals below the reference diagonal + // diagonalsAbove: The number of diagonals above the reference diagonal + const diagonalsBelow = diagonalBaseIndex; + const diagonalsAbove = numDiagonals - diagonalBaseIndex - 1; + const diffEven = (numDifferences % 2 === 0); + if (diagonal < 0) { + const lowerBoundEven = (diagonalsBelow % 2 === 0); + return (diffEven === lowerBoundEven) ? 0 : 1; + } + else { + const upperBoundEven = (diagonalsAbove % 2 === 0); + return (diffEven === upperBoundEven) ? numDiagonals - 1 : numDiagonals - 2; + } + } +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +let safeProcess; +// Native sandbox environment +const vscodeGlobal = globalThis.vscode; +if (typeof vscodeGlobal !== 'undefined' && typeof vscodeGlobal.process !== 'undefined') { + const sandboxProcess = vscodeGlobal.process; + safeProcess = { + get platform() { return sandboxProcess.platform; }, + get arch() { return sandboxProcess.arch; }, + get env() { return sandboxProcess.env; }, + cwd() { return sandboxProcess.cwd(); } + }; +} +// Native node.js environment +else if (typeof process !== 'undefined') { + safeProcess = { + get platform() { return process.platform; }, + get arch() { return process.arch; }, + get env() { return process.env; }, + cwd() { return process.env['VSCODE_CWD'] || process.cwd(); } + }; +} +// Web environment +else { + safeProcess = { + // Supported + get platform() { return isWindows ? 'win32' : isMacintosh ? 'darwin' : 'linux'; }, + get arch() { return undefined; /* arch is undefined in web */ }, + // Unsupported + get env() { return {}; }, + cwd() { return '/'; } + }; +} +/** + * Provides safe access to the `cwd` property in node.js, sandboxed or web + * environments. + * + * Note: in web, this property is hardcoded to be `/`. + * + * @skipMangle + */ +const cwd = safeProcess.cwd; +/** + * Provides safe access to the `env` property in node.js, sandboxed or web + * environments. + * + * Note: in web, this property is hardcoded to be `{}`. + */ +const env = safeProcess.env; +/** + * Provides safe access to the `platform` property in node.js, sandboxed or web + * environments. + */ +const platform = safeProcess.platform; + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +// NOTE: VSCode's copy of nodejs path library to be usable in common (non-node) namespace +// Copied from: https://github.com/nodejs/node/blob/v16.14.2/lib/path.js +/** + * Copyright Joyent, Inc. and other Node contributors. + * + * 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. + */ +const CHAR_UPPERCASE_A = 65; /* A */ +const CHAR_LOWERCASE_A = 97; /* a */ +const CHAR_UPPERCASE_Z = 90; /* Z */ +const CHAR_LOWERCASE_Z = 122; /* z */ +const CHAR_DOT = 46; /* . */ +const CHAR_FORWARD_SLASH = 47; /* / */ +const CHAR_BACKWARD_SLASH = 92; /* \ */ +const CHAR_COLON = 58; /* : */ +const CHAR_QUESTION_MARK = 63; /* ? */ +class ErrorInvalidArgType extends Error { + constructor(name, expected, actual) { + // determiner: 'must be' or 'must not be' + let determiner; + if (typeof expected === 'string' && expected.indexOf('not ') === 0) { + determiner = 'must not be'; + expected = expected.replace(/^not /, ''); + } + else { + determiner = 'must be'; + } + const type = name.indexOf('.') !== -1 ? 'property' : 'argument'; + let msg = `The "${name}" ${type} ${determiner} of type ${expected}`; + msg += `. Received type ${typeof actual}`; + super(msg); + this.code = 'ERR_INVALID_ARG_TYPE'; + } +} +function validateObject(pathObject, name) { + if (pathObject === null || typeof pathObject !== 'object') { + throw new ErrorInvalidArgType(name, 'Object', pathObject); + } +} +function validateString(value, name) { + if (typeof value !== 'string') { + throw new ErrorInvalidArgType(name, 'string', value); + } +} +const platformIsWin32 = (platform === 'win32'); +function isPathSeparator(code) { + return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH; +} +function isPosixPathSeparator(code) { + return code === CHAR_FORWARD_SLASH; +} +function isWindowsDeviceRoot(code) { + return (code >= CHAR_UPPERCASE_A && code <= CHAR_UPPERCASE_Z) || + (code >= CHAR_LOWERCASE_A && code <= CHAR_LOWERCASE_Z); +} +// Resolves . and .. elements in a path with directory names +function normalizeString(path, allowAboveRoot, separator, isPathSeparator) { + let res = ''; + let lastSegmentLength = 0; + let lastSlash = -1; + let dots = 0; + let code = 0; + for (let i = 0; i <= path.length; ++i) { + if (i < path.length) { + code = path.charCodeAt(i); + } + else if (isPathSeparator(code)) { + break; + } + else { + code = CHAR_FORWARD_SLASH; + } + if (isPathSeparator(code)) { + if (lastSlash === i - 1 || dots === 1) ; + else if (dots === 2) { + if (res.length < 2 || lastSegmentLength !== 2 || + res.charCodeAt(res.length - 1) !== CHAR_DOT || + res.charCodeAt(res.length - 2) !== CHAR_DOT) { + if (res.length > 2) { + const lastSlashIndex = res.lastIndexOf(separator); + if (lastSlashIndex === -1) { + res = ''; + lastSegmentLength = 0; + } + else { + res = res.slice(0, lastSlashIndex); + lastSegmentLength = res.length - 1 - res.lastIndexOf(separator); + } + lastSlash = i; + dots = 0; + continue; + } + else if (res.length !== 0) { + res = ''; + lastSegmentLength = 0; + lastSlash = i; + dots = 0; + continue; + } + } + if (allowAboveRoot) { + res += res.length > 0 ? `${separator}..` : '..'; + lastSegmentLength = 2; + } + } + else { + if (res.length > 0) { + res += `${separator}${path.slice(lastSlash + 1, i)}`; + } + else { + res = path.slice(lastSlash + 1, i); + } + lastSegmentLength = i - lastSlash - 1; + } + lastSlash = i; + dots = 0; + } + else if (code === CHAR_DOT && dots !== -1) { + ++dots; + } + else { + dots = -1; + } + } + return res; +} +function _format$1(sep, pathObject) { + validateObject(pathObject, 'pathObject'); + const dir = pathObject.dir || pathObject.root; + const base = pathObject.base || + `${pathObject.name || ''}${pathObject.ext || ''}`; + if (!dir) { + return base; + } + return dir === pathObject.root ? `${dir}${base}` : `${dir}${sep}${base}`; +} +const win32 = { + // path.resolve([from ...], to) + resolve(...pathSegments) { + let resolvedDevice = ''; + let resolvedTail = ''; + let resolvedAbsolute = false; + for (let i = pathSegments.length - 1; i >= -1; i--) { + let path; + if (i >= 0) { + path = pathSegments[i]; + validateString(path, 'path'); + // Skip empty entries + if (path.length === 0) { + continue; + } + } + else if (resolvedDevice.length === 0) { + path = cwd(); + } + else { + // Windows has the concept of drive-specific current working + // directories. If we've resolved a drive letter but not yet an + // absolute path, get cwd for that drive, or the process cwd if + // the drive cwd is not available. We're sure the device is not + // a UNC path at this points, because UNC paths are always absolute. + path = env[`=${resolvedDevice}`] || cwd(); + // Verify that a cwd was found and that it actually points + // to our drive. If not, default to the drive's root. + if (path === undefined || + (path.slice(0, 2).toLowerCase() !== resolvedDevice.toLowerCase() && + path.charCodeAt(2) === CHAR_BACKWARD_SLASH)) { + path = `${resolvedDevice}\\`; + } + } + const len = path.length; + let rootEnd = 0; + let device = ''; + let isAbsolute = false; + const code = path.charCodeAt(0); + // Try to match a root + if (len === 1) { + if (isPathSeparator(code)) { + // `path` contains just a path separator + rootEnd = 1; + isAbsolute = true; + } + } + else if (isPathSeparator(code)) { + // Possible UNC root + // If we started with a separator, we know we at least have an + // absolute path of some kind (UNC or otherwise) + isAbsolute = true; + if (isPathSeparator(path.charCodeAt(1))) { + // Matched double path separator at beginning + let j = 2; + let last = j; + // Match 1 or more non-path separators + while (j < len && !isPathSeparator(path.charCodeAt(j))) { + j++; + } + if (j < len && j !== last) { + const firstPart = path.slice(last, j); + // Matched! + last = j; + // Match 1 or more path separators + while (j < len && isPathSeparator(path.charCodeAt(j))) { + j++; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more non-path separators + while (j < len && !isPathSeparator(path.charCodeAt(j))) { + j++; + } + if (j === len || j !== last) { + // We matched a UNC root + device = `\\\\${firstPart}\\${path.slice(last, j)}`; + rootEnd = j; + } + } + } + } + else { + rootEnd = 1; + } + } + else if (isWindowsDeviceRoot(code) && + path.charCodeAt(1) === CHAR_COLON) { + // Possible device root + device = path.slice(0, 2); + rootEnd = 2; + if (len > 2 && isPathSeparator(path.charCodeAt(2))) { + // Treat separator following drive name as an absolute path + // indicator + isAbsolute = true; + rootEnd = 3; + } + } + if (device.length > 0) { + if (resolvedDevice.length > 0) { + if (device.toLowerCase() !== resolvedDevice.toLowerCase()) { + // This path points to another device so it is not applicable + continue; + } + } + else { + resolvedDevice = device; + } + } + if (resolvedAbsolute) { + if (resolvedDevice.length > 0) { + break; + } + } + else { + resolvedTail = `${path.slice(rootEnd)}\\${resolvedTail}`; + resolvedAbsolute = isAbsolute; + if (isAbsolute && resolvedDevice.length > 0) { + break; + } + } + } + // At this point the path should be resolved to a full absolute path, + // but handle relative paths to be safe (might happen when process.cwd() + // fails) + // Normalize the tail path + resolvedTail = normalizeString(resolvedTail, !resolvedAbsolute, '\\', isPathSeparator); + return resolvedAbsolute ? + `${resolvedDevice}\\${resolvedTail}` : + `${resolvedDevice}${resolvedTail}` || '.'; + }, + normalize(path) { + validateString(path, 'path'); + const len = path.length; + if (len === 0) { + return '.'; + } + let rootEnd = 0; + let device; + let isAbsolute = false; + const code = path.charCodeAt(0); + // Try to match a root + if (len === 1) { + // `path` contains just a single char, exit early to avoid + // unnecessary work + return isPosixPathSeparator(code) ? '\\' : path; + } + if (isPathSeparator(code)) { + // Possible UNC root + // If we started with a separator, we know we at least have an absolute + // path of some kind (UNC or otherwise) + isAbsolute = true; + if (isPathSeparator(path.charCodeAt(1))) { + // Matched double path separator at beginning + let j = 2; + let last = j; + // Match 1 or more non-path separators + while (j < len && !isPathSeparator(path.charCodeAt(j))) { + j++; + } + if (j < len && j !== last) { + const firstPart = path.slice(last, j); + // Matched! + last = j; + // Match 1 or more path separators + while (j < len && isPathSeparator(path.charCodeAt(j))) { + j++; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more non-path separators + while (j < len && !isPathSeparator(path.charCodeAt(j))) { + j++; + } + if (j === len) { + // We matched a UNC root only + // Return the normalized version of the UNC root since there + // is nothing left to process + return `\\\\${firstPart}\\${path.slice(last)}\\`; + } + if (j !== last) { + // We matched a UNC root with leftovers + device = `\\\\${firstPart}\\${path.slice(last, j)}`; + rootEnd = j; + } + } + } + } + else { + rootEnd = 1; + } + } + else if (isWindowsDeviceRoot(code) && path.charCodeAt(1) === CHAR_COLON) { + // Possible device root + device = path.slice(0, 2); + rootEnd = 2; + if (len > 2 && isPathSeparator(path.charCodeAt(2))) { + // Treat separator following drive name as an absolute path + // indicator + isAbsolute = true; + rootEnd = 3; + } + } + let tail = rootEnd < len ? + normalizeString(path.slice(rootEnd), !isAbsolute, '\\', isPathSeparator) : + ''; + if (tail.length === 0 && !isAbsolute) { + tail = '.'; + } + if (tail.length > 0 && isPathSeparator(path.charCodeAt(len - 1))) { + tail += '\\'; + } + if (device === undefined) { + return isAbsolute ? `\\${tail}` : tail; + } + return isAbsolute ? `${device}\\${tail}` : `${device}${tail}`; + }, + isAbsolute(path) { + validateString(path, 'path'); + const len = path.length; + if (len === 0) { + return false; + } + const code = path.charCodeAt(0); + return isPathSeparator(code) || + // Possible device root + (len > 2 && + isWindowsDeviceRoot(code) && + path.charCodeAt(1) === CHAR_COLON && + isPathSeparator(path.charCodeAt(2))); + }, + join(...paths) { + if (paths.length === 0) { + return '.'; + } + let joined; + let firstPart; + for (let i = 0; i < paths.length; ++i) { + const arg = paths[i]; + validateString(arg, 'path'); + if (arg.length > 0) { + if (joined === undefined) { + joined = firstPart = arg; + } + else { + joined += `\\${arg}`; + } + } + } + if (joined === undefined) { + return '.'; + } + // Make sure that the joined path doesn't start with two slashes, because + // normalize() will mistake it for a UNC path then. + // + // This step is skipped when it is very clear that the user actually + // intended to point at a UNC path. This is assumed when the first + // non-empty string arguments starts with exactly two slashes followed by + // at least one more non-slash character. + // + // Note that for normalize() to treat a path as a UNC path it needs to + // have at least 2 components, so we don't filter for that here. + // This means that the user can use join to construct UNC paths from + // a server name and a share name; for example: + // path.join('//server', 'share') -> '\\\\server\\share\\') + let needsReplace = true; + let slashCount = 0; + if (typeof firstPart === 'string' && isPathSeparator(firstPart.charCodeAt(0))) { + ++slashCount; + const firstLen = firstPart.length; + if (firstLen > 1 && isPathSeparator(firstPart.charCodeAt(1))) { + ++slashCount; + if (firstLen > 2) { + if (isPathSeparator(firstPart.charCodeAt(2))) { + ++slashCount; + } + else { + // We matched a UNC path in the first part + needsReplace = false; + } + } + } + } + if (needsReplace) { + // Find any more consecutive slashes we need to replace + while (slashCount < joined.length && + isPathSeparator(joined.charCodeAt(slashCount))) { + slashCount++; + } + // Replace the slashes if needed + if (slashCount >= 2) { + joined = `\\${joined.slice(slashCount)}`; + } + } + return win32.normalize(joined); + }, + // It will solve the relative path from `from` to `to`, for instance: + // from = 'C:\\orandea\\test\\aaa' + // to = 'C:\\orandea\\impl\\bbb' + // The output of the function should be: '..\\..\\impl\\bbb' + relative(from, to) { + validateString(from, 'from'); + validateString(to, 'to'); + if (from === to) { + return ''; + } + const fromOrig = win32.resolve(from); + const toOrig = win32.resolve(to); + if (fromOrig === toOrig) { + return ''; + } + from = fromOrig.toLowerCase(); + to = toOrig.toLowerCase(); + if (from === to) { + return ''; + } + // Trim any leading backslashes + let fromStart = 0; + while (fromStart < from.length && + from.charCodeAt(fromStart) === CHAR_BACKWARD_SLASH) { + fromStart++; + } + // Trim trailing backslashes (applicable to UNC paths only) + let fromEnd = from.length; + while (fromEnd - 1 > fromStart && + from.charCodeAt(fromEnd - 1) === CHAR_BACKWARD_SLASH) { + fromEnd--; + } + const fromLen = fromEnd - fromStart; + // Trim any leading backslashes + let toStart = 0; + while (toStart < to.length && + to.charCodeAt(toStart) === CHAR_BACKWARD_SLASH) { + toStart++; + } + // Trim trailing backslashes (applicable to UNC paths only) + let toEnd = to.length; + while (toEnd - 1 > toStart && + to.charCodeAt(toEnd - 1) === CHAR_BACKWARD_SLASH) { + toEnd--; + } + const toLen = toEnd - toStart; + // Compare paths to find the longest common path from root + const length = fromLen < toLen ? fromLen : toLen; + let lastCommonSep = -1; + let i = 0; + for (; i < length; i++) { + const fromCode = from.charCodeAt(fromStart + i); + if (fromCode !== to.charCodeAt(toStart + i)) { + break; + } + else if (fromCode === CHAR_BACKWARD_SLASH) { + lastCommonSep = i; + } + } + // We found a mismatch before the first common path separator was seen, so + // return the original `to`. + if (i !== length) { + if (lastCommonSep === -1) { + return toOrig; + } + } + else { + if (toLen > length) { + if (to.charCodeAt(toStart + i) === CHAR_BACKWARD_SLASH) { + // We get here if `from` is the exact base path for `to`. + // For example: from='C:\\foo\\bar'; to='C:\\foo\\bar\\baz' + return toOrig.slice(toStart + i + 1); + } + if (i === 2) { + // We get here if `from` is the device root. + // For example: from='C:\\'; to='C:\\foo' + return toOrig.slice(toStart + i); + } + } + if (fromLen > length) { + if (from.charCodeAt(fromStart + i) === CHAR_BACKWARD_SLASH) { + // We get here if `to` is the exact base path for `from`. + // For example: from='C:\\foo\\bar'; to='C:\\foo' + lastCommonSep = i; + } + else if (i === 2) { + // We get here if `to` is the device root. + // For example: from='C:\\foo\\bar'; to='C:\\' + lastCommonSep = 3; + } + } + if (lastCommonSep === -1) { + lastCommonSep = 0; + } + } + let out = ''; + // Generate the relative path based on the path difference between `to` and + // `from` + for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) { + if (i === fromEnd || from.charCodeAt(i) === CHAR_BACKWARD_SLASH) { + out += out.length === 0 ? '..' : '\\..'; + } + } + toStart += lastCommonSep; + // Lastly, append the rest of the destination (`to`) path that comes after + // the common path parts + if (out.length > 0) { + return `${out}${toOrig.slice(toStart, toEnd)}`; + } + if (toOrig.charCodeAt(toStart) === CHAR_BACKWARD_SLASH) { + ++toStart; + } + return toOrig.slice(toStart, toEnd); + }, + toNamespacedPath(path) { + // Note: this will *probably* throw somewhere. + if (typeof path !== 'string' || path.length === 0) { + return path; + } + const resolvedPath = win32.resolve(path); + if (resolvedPath.length <= 2) { + return path; + } + if (resolvedPath.charCodeAt(0) === CHAR_BACKWARD_SLASH) { + // Possible UNC root + if (resolvedPath.charCodeAt(1) === CHAR_BACKWARD_SLASH) { + const code = resolvedPath.charCodeAt(2); + if (code !== CHAR_QUESTION_MARK && code !== CHAR_DOT) { + // Matched non-long UNC root, convert the path to a long UNC path + return `\\\\?\\UNC\\${resolvedPath.slice(2)}`; + } + } + } + else if (isWindowsDeviceRoot(resolvedPath.charCodeAt(0)) && + resolvedPath.charCodeAt(1) === CHAR_COLON && + resolvedPath.charCodeAt(2) === CHAR_BACKWARD_SLASH) { + // Matched device root, convert the path to a long UNC path + return `\\\\?\\${resolvedPath}`; + } + return path; + }, + dirname(path) { + validateString(path, 'path'); + const len = path.length; + if (len === 0) { + return '.'; + } + let rootEnd = -1; + let offset = 0; + const code = path.charCodeAt(0); + if (len === 1) { + // `path` contains just a path separator, exit early to avoid + // unnecessary work or a dot. + return isPathSeparator(code) ? path : '.'; + } + // Try to match a root + if (isPathSeparator(code)) { + // Possible UNC root + rootEnd = offset = 1; + if (isPathSeparator(path.charCodeAt(1))) { + // Matched double path separator at beginning + let j = 2; + let last = j; + // Match 1 or more non-path separators + while (j < len && !isPathSeparator(path.charCodeAt(j))) { + j++; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more path separators + while (j < len && isPathSeparator(path.charCodeAt(j))) { + j++; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more non-path separators + while (j < len && !isPathSeparator(path.charCodeAt(j))) { + j++; + } + if (j === len) { + // We matched a UNC root only + return path; + } + if (j !== last) { + // We matched a UNC root with leftovers + // Offset by 1 to include the separator after the UNC root to + // treat it as a "normal root" on top of a (UNC) root + rootEnd = offset = j + 1; + } + } + } + } + // Possible device root + } + else if (isWindowsDeviceRoot(code) && path.charCodeAt(1) === CHAR_COLON) { + rootEnd = len > 2 && isPathSeparator(path.charCodeAt(2)) ? 3 : 2; + offset = rootEnd; + } + let end = -1; + let matchedSlash = true; + for (let i = len - 1; i >= offset; --i) { + if (isPathSeparator(path.charCodeAt(i))) { + if (!matchedSlash) { + end = i; + break; + } + } + else { + // We saw the first non-path separator + matchedSlash = false; + } + } + if (end === -1) { + if (rootEnd === -1) { + return '.'; + } + end = rootEnd; + } + return path.slice(0, end); + }, + basename(path, ext) { + if (ext !== undefined) { + validateString(ext, 'ext'); + } + validateString(path, 'path'); + let start = 0; + let end = -1; + let matchedSlash = true; + let i; + // Check for a drive letter prefix so as not to mistake the following + // path separator as an extra separator at the end of the path that can be + // disregarded + if (path.length >= 2 && + isWindowsDeviceRoot(path.charCodeAt(0)) && + path.charCodeAt(1) === CHAR_COLON) { + start = 2; + } + if (ext !== undefined && ext.length > 0 && ext.length <= path.length) { + if (ext === path) { + return ''; + } + let extIdx = ext.length - 1; + let firstNonSlashEnd = -1; + for (i = path.length - 1; i >= start; --i) { + const code = path.charCodeAt(i); + if (isPathSeparator(code)) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + start = i + 1; + break; + } + } + else { + if (firstNonSlashEnd === -1) { + // We saw the first non-path separator, remember this index in case + // we need it if the extension ends up not matching + matchedSlash = false; + firstNonSlashEnd = i + 1; + } + if (extIdx >= 0) { + // Try to match the explicit extension + if (code === ext.charCodeAt(extIdx)) { + if (--extIdx === -1) { + // We matched the extension, so mark this as the end of our path + // component + end = i; + } + } + else { + // Extension does not match, so our result is the entire path + // component + extIdx = -1; + end = firstNonSlashEnd; + } + } + } + } + if (start === end) { + end = firstNonSlashEnd; + } + else if (end === -1) { + end = path.length; + } + return path.slice(start, end); + } + for (i = path.length - 1; i >= start; --i) { + if (isPathSeparator(path.charCodeAt(i))) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + start = i + 1; + break; + } + } + else if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // path component + matchedSlash = false; + end = i + 1; + } + } + if (end === -1) { + return ''; + } + return path.slice(start, end); + }, + extname(path) { + validateString(path, 'path'); + let start = 0; + let startDot = -1; + let startPart = 0; + let end = -1; + let matchedSlash = true; + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + let preDotState = 0; + // Check for a drive letter prefix so as not to mistake the following + // path separator as an extra separator at the end of the path that can be + // disregarded + if (path.length >= 2 && + path.charCodeAt(1) === CHAR_COLON && + isWindowsDeviceRoot(path.charCodeAt(0))) { + start = startPart = 2; + } + for (let i = path.length - 1; i >= start; --i) { + const code = path.charCodeAt(i); + if (isPathSeparator(code)) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === CHAR_DOT) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) { + startDot = i; + } + else if (preDotState !== 1) { + preDotState = 1; + } + } + else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + if (startDot === -1 || + end === -1 || + // We saw a non-dot character immediately before the dot + preDotState === 0 || + // The (right-most) trimmed path component is exactly '..' + (preDotState === 1 && + startDot === end - 1 && + startDot === startPart + 1)) { + return ''; + } + return path.slice(startDot, end); + }, + format: _format$1.bind(null, '\\'), + parse(path) { + validateString(path, 'path'); + const ret = { root: '', dir: '', base: '', ext: '', name: '' }; + if (path.length === 0) { + return ret; + } + const len = path.length; + let rootEnd = 0; + let code = path.charCodeAt(0); + if (len === 1) { + if (isPathSeparator(code)) { + // `path` contains just a path separator, exit early to avoid + // unnecessary work + ret.root = ret.dir = path; + return ret; + } + ret.base = ret.name = path; + return ret; + } + // Try to match a root + if (isPathSeparator(code)) { + // Possible UNC root + rootEnd = 1; + if (isPathSeparator(path.charCodeAt(1))) { + // Matched double path separator at beginning + let j = 2; + let last = j; + // Match 1 or more non-path separators + while (j < len && !isPathSeparator(path.charCodeAt(j))) { + j++; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more path separators + while (j < len && isPathSeparator(path.charCodeAt(j))) { + j++; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more non-path separators + while (j < len && !isPathSeparator(path.charCodeAt(j))) { + j++; + } + if (j === len) { + // We matched a UNC root only + rootEnd = j; + } + else if (j !== last) { + // We matched a UNC root with leftovers + rootEnd = j + 1; + } + } + } + } + } + else if (isWindowsDeviceRoot(code) && path.charCodeAt(1) === CHAR_COLON) { + // Possible device root + if (len <= 2) { + // `path` contains just a drive root, exit early to avoid + // unnecessary work + ret.root = ret.dir = path; + return ret; + } + rootEnd = 2; + if (isPathSeparator(path.charCodeAt(2))) { + if (len === 3) { + // `path` contains just a drive root, exit early to avoid + // unnecessary work + ret.root = ret.dir = path; + return ret; + } + rootEnd = 3; + } + } + if (rootEnd > 0) { + ret.root = path.slice(0, rootEnd); + } + let startDot = -1; + let startPart = rootEnd; + let end = -1; + let matchedSlash = true; + let i = path.length - 1; + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + let preDotState = 0; + // Get non-dir info + for (; i >= rootEnd; --i) { + code = path.charCodeAt(i); + if (isPathSeparator(code)) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === CHAR_DOT) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) { + startDot = i; + } + else if (preDotState !== 1) { + preDotState = 1; + } + } + else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + if (end !== -1) { + if (startDot === -1 || + // We saw a non-dot character immediately before the dot + preDotState === 0 || + // The (right-most) trimmed path component is exactly '..' + (preDotState === 1 && + startDot === end - 1 && + startDot === startPart + 1)) { + ret.base = ret.name = path.slice(startPart, end); + } + else { + ret.name = path.slice(startPart, startDot); + ret.base = path.slice(startPart, end); + ret.ext = path.slice(startDot, end); + } + } + // If the directory is the root, use the entire root as the `dir` including + // the trailing slash if any (`C:\abc` -> `C:\`). Otherwise, strip out the + // trailing slash (`C:\abc\def` -> `C:\abc`). + if (startPart > 0 && startPart !== rootEnd) { + ret.dir = path.slice(0, startPart - 1); + } + else { + ret.dir = ret.root; + } + return ret; + }, + sep: '\\', + delimiter: ';', + win32: null, + posix: null +}; +const posixCwd = (() => { + if (platformIsWin32) { + // Converts Windows' backslash path separators to POSIX forward slashes + // and truncates any drive indicator + const regexp = /\\/g; + return () => { + const cwd$1 = cwd().replace(regexp, '/'); + return cwd$1.slice(cwd$1.indexOf('/')); + }; + } + // We're already on POSIX, no need for any transformations + return () => cwd(); +})(); +const posix$1 = { + // path.resolve([from ...], to) + resolve(...pathSegments) { + let resolvedPath = ''; + let resolvedAbsolute = false; + for (let i = pathSegments.length - 1; i >= -1 && !resolvedAbsolute; i--) { + const path = i >= 0 ? pathSegments[i] : posixCwd(); + validateString(path, 'path'); + // Skip empty entries + if (path.length === 0) { + continue; + } + resolvedPath = `${path}/${resolvedPath}`; + resolvedAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH; + } + // At this point the path should be resolved to a full absolute path, but + // handle relative paths to be safe (might happen when process.cwd() fails) + // Normalize the path + resolvedPath = normalizeString(resolvedPath, !resolvedAbsolute, '/', isPosixPathSeparator); + if (resolvedAbsolute) { + return `/${resolvedPath}`; + } + return resolvedPath.length > 0 ? resolvedPath : '.'; + }, + normalize(path) { + validateString(path, 'path'); + if (path.length === 0) { + return '.'; + } + const isAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH; + const trailingSeparator = path.charCodeAt(path.length - 1) === CHAR_FORWARD_SLASH; + // Normalize the path + path = normalizeString(path, !isAbsolute, '/', isPosixPathSeparator); + if (path.length === 0) { + if (isAbsolute) { + return '/'; + } + return trailingSeparator ? './' : '.'; + } + if (trailingSeparator) { + path += '/'; + } + return isAbsolute ? `/${path}` : path; + }, + isAbsolute(path) { + validateString(path, 'path'); + return path.length > 0 && path.charCodeAt(0) === CHAR_FORWARD_SLASH; + }, + join(...paths) { + if (paths.length === 0) { + return '.'; + } + let joined; + for (let i = 0; i < paths.length; ++i) { + const arg = paths[i]; + validateString(arg, 'path'); + if (arg.length > 0) { + if (joined === undefined) { + joined = arg; + } + else { + joined += `/${arg}`; + } + } + } + if (joined === undefined) { + return '.'; + } + return posix$1.normalize(joined); + }, + relative(from, to) { + validateString(from, 'from'); + validateString(to, 'to'); + if (from === to) { + return ''; + } + // Trim leading forward slashes. + from = posix$1.resolve(from); + to = posix$1.resolve(to); + if (from === to) { + return ''; + } + const fromStart = 1; + const fromEnd = from.length; + const fromLen = fromEnd - fromStart; + const toStart = 1; + const toLen = to.length - toStart; + // Compare paths to find the longest common path from root + const length = (fromLen < toLen ? fromLen : toLen); + let lastCommonSep = -1; + let i = 0; + for (; i < length; i++) { + const fromCode = from.charCodeAt(fromStart + i); + if (fromCode !== to.charCodeAt(toStart + i)) { + break; + } + else if (fromCode === CHAR_FORWARD_SLASH) { + lastCommonSep = i; + } + } + if (i === length) { + if (toLen > length) { + if (to.charCodeAt(toStart + i) === CHAR_FORWARD_SLASH) { + // We get here if `from` is the exact base path for `to`. + // For example: from='/foo/bar'; to='/foo/bar/baz' + return to.slice(toStart + i + 1); + } + if (i === 0) { + // We get here if `from` is the root + // For example: from='/'; to='/foo' + return to.slice(toStart + i); + } + } + else if (fromLen > length) { + if (from.charCodeAt(fromStart + i) === CHAR_FORWARD_SLASH) { + // We get here if `to` is the exact base path for `from`. + // For example: from='/foo/bar/baz'; to='/foo/bar' + lastCommonSep = i; + } + else if (i === 0) { + // We get here if `to` is the root. + // For example: from='/foo/bar'; to='/' + lastCommonSep = 0; + } + } + } + let out = ''; + // Generate the relative path based on the path difference between `to` + // and `from`. + for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) { + if (i === fromEnd || from.charCodeAt(i) === CHAR_FORWARD_SLASH) { + out += out.length === 0 ? '..' : '/..'; + } + } + // Lastly, append the rest of the destination (`to`) path that comes after + // the common path parts. + return `${out}${to.slice(toStart + lastCommonSep)}`; + }, + toNamespacedPath(path) { + // Non-op on posix systems + return path; + }, + dirname(path) { + validateString(path, 'path'); + if (path.length === 0) { + return '.'; + } + const hasRoot = path.charCodeAt(0) === CHAR_FORWARD_SLASH; + let end = -1; + let matchedSlash = true; + for (let i = path.length - 1; i >= 1; --i) { + if (path.charCodeAt(i) === CHAR_FORWARD_SLASH) { + if (!matchedSlash) { + end = i; + break; + } + } + else { + // We saw the first non-path separator + matchedSlash = false; + } + } + if (end === -1) { + return hasRoot ? '/' : '.'; + } + if (hasRoot && end === 1) { + return '//'; + } + return path.slice(0, end); + }, + basename(path, ext) { + if (ext !== undefined) { + validateString(ext, 'ext'); + } + validateString(path, 'path'); + let start = 0; + let end = -1; + let matchedSlash = true; + let i; + if (ext !== undefined && ext.length > 0 && ext.length <= path.length) { + if (ext === path) { + return ''; + } + let extIdx = ext.length - 1; + let firstNonSlashEnd = -1; + for (i = path.length - 1; i >= 0; --i) { + const code = path.charCodeAt(i); + if (code === CHAR_FORWARD_SLASH) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + start = i + 1; + break; + } + } + else { + if (firstNonSlashEnd === -1) { + // We saw the first non-path separator, remember this index in case + // we need it if the extension ends up not matching + matchedSlash = false; + firstNonSlashEnd = i + 1; + } + if (extIdx >= 0) { + // Try to match the explicit extension + if (code === ext.charCodeAt(extIdx)) { + if (--extIdx === -1) { + // We matched the extension, so mark this as the end of our path + // component + end = i; + } + } + else { + // Extension does not match, so our result is the entire path + // component + extIdx = -1; + end = firstNonSlashEnd; + } + } + } + } + if (start === end) { + end = firstNonSlashEnd; + } + else if (end === -1) { + end = path.length; + } + return path.slice(start, end); + } + for (i = path.length - 1; i >= 0; --i) { + if (path.charCodeAt(i) === CHAR_FORWARD_SLASH) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + start = i + 1; + break; + } + } + else if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // path component + matchedSlash = false; + end = i + 1; + } + } + if (end === -1) { + return ''; + } + return path.slice(start, end); + }, + extname(path) { + validateString(path, 'path'); + let startDot = -1; + let startPart = 0; + let end = -1; + let matchedSlash = true; + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + let preDotState = 0; + for (let i = path.length - 1; i >= 0; --i) { + const code = path.charCodeAt(i); + if (code === CHAR_FORWARD_SLASH) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === CHAR_DOT) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) { + startDot = i; + } + else if (preDotState !== 1) { + preDotState = 1; + } + } + else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + if (startDot === -1 || + end === -1 || + // We saw a non-dot character immediately before the dot + preDotState === 0 || + // The (right-most) trimmed path component is exactly '..' + (preDotState === 1 && + startDot === end - 1 && + startDot === startPart + 1)) { + return ''; + } + return path.slice(startDot, end); + }, + format: _format$1.bind(null, '/'), + parse(path) { + validateString(path, 'path'); + const ret = { root: '', dir: '', base: '', ext: '', name: '' }; + if (path.length === 0) { + return ret; + } + const isAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH; + let start; + if (isAbsolute) { + ret.root = '/'; + start = 1; + } + else { + start = 0; + } + let startDot = -1; + let startPart = 0; + let end = -1; + let matchedSlash = true; + let i = path.length - 1; + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + let preDotState = 0; + // Get non-dir info + for (; i >= start; --i) { + const code = path.charCodeAt(i); + if (code === CHAR_FORWARD_SLASH) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === CHAR_DOT) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) { + startDot = i; + } + else if (preDotState !== 1) { + preDotState = 1; + } + } + else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + if (end !== -1) { + const start = startPart === 0 && isAbsolute ? 1 : startPart; + if (startDot === -1 || + // We saw a non-dot character immediately before the dot + preDotState === 0 || + // The (right-most) trimmed path component is exactly '..' + (preDotState === 1 && + startDot === end - 1 && + startDot === startPart + 1)) { + ret.base = ret.name = path.slice(start, end); + } + else { + ret.name = path.slice(start, startDot); + ret.base = path.slice(start, end); + ret.ext = path.slice(startDot, end); + } + } + if (startPart > 0) { + ret.dir = path.slice(0, startPart - 1); + } + else if (isAbsolute) { + ret.dir = '/'; + } + return ret; + }, + sep: '/', + delimiter: ':', + win32: null, + posix: null +}; +posix$1.win32 = win32.win32 = win32; +posix$1.posix = win32.posix = posix$1; +(platformIsWin32 ? win32.normalize : posix$1.normalize); +(platformIsWin32 ? win32.resolve : posix$1.resolve); +(platformIsWin32 ? win32.relative : posix$1.relative); +(platformIsWin32 ? win32.dirname : posix$1.dirname); +(platformIsWin32 ? win32.basename : posix$1.basename); +(platformIsWin32 ? win32.extname : posix$1.extname); +(platformIsWin32 ? win32.sep : posix$1.sep); + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +const _schemePattern = /^\w[\w\d+.-]*$/; +const _singleSlashStart = /^\//; +const _doubleSlashStart = /^\/\//; +function _validateUri(ret, _strict) { + // scheme, must be set + if (!ret.scheme && _strict) { + throw new Error(`[UriError]: Scheme is missing: {scheme: "", authority: "${ret.authority}", path: "${ret.path}", query: "${ret.query}", fragment: "${ret.fragment}"}`); + } + // scheme, https://tools.ietf.org/html/rfc3986#section-3.1 + // ALPHA *( ALPHA / DIGIT / "+" / "-" / "." ) + if (ret.scheme && !_schemePattern.test(ret.scheme)) { + throw new Error('[UriError]: Scheme contains illegal characters.'); + } + // path, http://tools.ietf.org/html/rfc3986#section-3.3 + // If a URI contains an authority component, then the path component + // must either be empty or begin with a slash ("/") character. If a URI + // does not contain an authority component, then the path cannot begin + // with two slash characters ("//"). + if (ret.path) { + if (ret.authority) { + if (!_singleSlashStart.test(ret.path)) { + throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash ("/") character'); + } + } + else { + if (_doubleSlashStart.test(ret.path)) { + throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")'); + } + } + } +} +// for a while we allowed uris *without* schemes and this is the migration +// for them, e.g. an uri without scheme and without strict-mode warns and falls +// back to the file-scheme. that should cause the least carnage and still be a +// clear warning +function _schemeFix(scheme, _strict) { + if (!scheme && !_strict) { + return 'file'; + } + return scheme; +} +// implements a bit of https://tools.ietf.org/html/rfc3986#section-5 +function _referenceResolution(scheme, path) { + // the slash-character is our 'default base' as we don't + // support constructing URIs relative to other URIs. This + // also means that we alter and potentially break paths. + // see https://tools.ietf.org/html/rfc3986#section-5.1.4 + switch (scheme) { + case 'https': + case 'http': + case 'file': + if (!path) { + path = _slash; + } + else if (path[0] !== _slash) { + path = _slash + path; + } + break; + } + return path; +} +const _empty = ''; +const _slash = '/'; +const _regexp = /^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/; +/** + * Uniform Resource Identifier (URI) http://tools.ietf.org/html/rfc3986. + * This class is a simple parser which creates the basic component parts + * (http://tools.ietf.org/html/rfc3986#section-3) with minimal validation + * and encoding. + * + * ```txt + * foo://example.com:8042/over/there?name=ferret#nose + * \_/ \______________/\_________/ \_________/ \__/ + * | | | | | + * scheme authority path query fragment + * | _____________________|__ + * / \ / \ + * urn:example:animal:ferret:nose + * ``` + */ +let URI$2 = class URI { + static isUri(thing) { + if (thing instanceof URI) { + return true; + } + if (!thing) { + return false; + } + return typeof thing.authority === 'string' + && typeof thing.fragment === 'string' + && typeof thing.path === 'string' + && typeof thing.query === 'string' + && typeof thing.scheme === 'string' + && typeof thing.fsPath === 'string' + && typeof thing.with === 'function' + && typeof thing.toString === 'function'; + } + /** + * @internal + */ + constructor(schemeOrData, authority, path, query, fragment, _strict = false) { + if (typeof schemeOrData === 'object') { + this.scheme = schemeOrData.scheme || _empty; + this.authority = schemeOrData.authority || _empty; + this.path = schemeOrData.path || _empty; + this.query = schemeOrData.query || _empty; + this.fragment = schemeOrData.fragment || _empty; + // no validation because it's this URI + // that creates uri components. + // _validateUri(this); + } + else { + this.scheme = _schemeFix(schemeOrData, _strict); + this.authority = authority || _empty; + this.path = _referenceResolution(this.scheme, path || _empty); + this.query = query || _empty; + this.fragment = fragment || _empty; + _validateUri(this, _strict); + } + } + // ---- filesystem path ----------------------- + /** + * Returns a string representing the corresponding file system path of this URI. + * Will handle UNC paths, normalizes windows drive letters to lower-case, and uses the + * platform specific path separator. + * + * * Will *not* validate the path for invalid characters and semantics. + * * Will *not* look at the scheme of this URI. + * * The result shall *not* be used for display purposes but for accessing a file on disk. + * + * + * The *difference* to `URI#path` is the use of the platform specific separator and the handling + * of UNC paths. See the below sample of a file-uri with an authority (UNC path). + * + * ```ts + const u = URI.parse('file://server/c$/folder/file.txt') + u.authority === 'server' + u.path === '/shares/c$/file.txt' + u.fsPath === '\\server\c$\folder\file.txt' + ``` + * + * Using `URI#path` to read a file (using fs-apis) would not be enough because parts of the path, + * namely the server name, would be missing. Therefore `URI#fsPath` exists - it's sugar to ease working + * with URIs that represent files on disk (`file` scheme). + */ + get fsPath() { + // if (this.scheme !== 'file') { + // console.warn(`[UriError] calling fsPath with scheme ${this.scheme}`); + // } + return uriToFsPath(this, false); + } + // ---- modify to new ------------------------- + with(change) { + if (!change) { + return this; + } + let { scheme, authority, path, query, fragment } = change; + if (scheme === undefined) { + scheme = this.scheme; + } + else if (scheme === null) { + scheme = _empty; + } + if (authority === undefined) { + authority = this.authority; + } + else if (authority === null) { + authority = _empty; + } + if (path === undefined) { + path = this.path; + } + else if (path === null) { + path = _empty; + } + if (query === undefined) { + query = this.query; + } + else if (query === null) { + query = _empty; + } + if (fragment === undefined) { + fragment = this.fragment; + } + else if (fragment === null) { + fragment = _empty; + } + if (scheme === this.scheme + && authority === this.authority + && path === this.path + && query === this.query + && fragment === this.fragment) { + return this; + } + return new Uri(scheme, authority, path, query, fragment); + } + // ---- parse & validate ------------------------ + /** + * Creates a new URI from a string, e.g. `http://www.example.com/some/path`, + * `file:///usr/home`, or `scheme:with/path`. + * + * @param value A string which represents an URI (see `URI#toString`). + */ + static parse(value, _strict = false) { + const match = _regexp.exec(value); + if (!match) { + return new Uri(_empty, _empty, _empty, _empty, _empty); + } + return new Uri(match[2] || _empty, percentDecode(match[4] || _empty), percentDecode(match[5] || _empty), percentDecode(match[7] || _empty), percentDecode(match[9] || _empty), _strict); + } + /** + * Creates a new URI from a file system path, e.g. `c:\my\files`, + * `/usr/home`, or `\\server\share\some\path`. + * + * The *difference* between `URI#parse` and `URI#file` is that the latter treats the argument + * as path, not as stringified-uri. E.g. `URI.file(path)` is **not the same as** + * `URI.parse('file://' + path)` because the path might contain characters that are + * interpreted (# and ?). See the following sample: + * ```ts + const good = URI.file('/coding/c#/project1'); + good.scheme === 'file'; + good.path === '/coding/c#/project1'; + good.fragment === ''; + const bad = URI.parse('file://' + '/coding/c#/project1'); + bad.scheme === 'file'; + bad.path === '/coding/c'; // path is now broken + bad.fragment === '/project1'; + ``` + * + * @param path A file system path (see `URI#fsPath`) + */ + static file(path) { + let authority = _empty; + // normalize to fwd-slashes on windows, + // on other systems bwd-slashes are valid + // filename character, eg /f\oo/ba\r.txt + if (isWindows) { + path = path.replace(/\\/g, _slash); + } + // check for authority as used in UNC shares + // or use the path as given + if (path[0] === _slash && path[1] === _slash) { + const idx = path.indexOf(_slash, 2); + if (idx === -1) { + authority = path.substring(2); + path = _slash; + } + else { + authority = path.substring(2, idx); + path = path.substring(idx) || _slash; + } + } + return new Uri('file', authority, path, _empty, _empty); + } + /** + * Creates new URI from uri components. + * + * Unless `strict` is `true` the scheme is defaults to be `file`. This function performs + * validation and should be used for untrusted uri components retrieved from storage, + * user input, command arguments etc + */ + static from(components, strict) { + const result = new Uri(components.scheme, components.authority, components.path, components.query, components.fragment, strict); + return result; + } + /** + * Join a URI path with path fragments and normalizes the resulting path. + * + * @param uri The input URI. + * @param pathFragment The path fragment to add to the URI path. + * @returns The resulting URI. + */ + static joinPath(uri, ...pathFragment) { + if (!uri.path) { + throw new Error(`[UriError]: cannot call joinPath on URI without path`); + } + let newPath; + if (isWindows && uri.scheme === 'file') { + newPath = URI.file(win32.join(uriToFsPath(uri, true), ...pathFragment)).path; + } + else { + newPath = posix$1.join(uri.path, ...pathFragment); + } + return uri.with({ path: newPath }); + } + // ---- printing/externalize --------------------------- + /** + * Creates a string representation for this URI. It's guaranteed that calling + * `URI.parse` with the result of this function creates an URI which is equal + * to this URI. + * + * * The result shall *not* be used for display purposes but for externalization or transport. + * * The result will be encoded using the percentage encoding and encoding happens mostly + * ignore the scheme-specific encoding rules. + * + * @param skipEncoding Do not encode the result, default is `false` + */ + toString(skipEncoding = false) { + return _asFormatted(this, skipEncoding); + } + toJSON() { + return this; + } + static revive(data) { + var _a, _b; + if (!data) { + return data; + } + else if (data instanceof URI) { + return data; + } + else { + const result = new Uri(data); + result._formatted = (_a = data.external) !== null && _a !== void 0 ? _a : null; + result._fsPath = data._sep === _pathSepMarker ? (_b = data.fsPath) !== null && _b !== void 0 ? _b : null : null; + return result; + } + } +}; +const _pathSepMarker = isWindows ? 1 : undefined; +// This class exists so that URI is compatible with vscode.Uri (API). +class Uri extends URI$2 { + constructor() { + super(...arguments); + this._formatted = null; + this._fsPath = null; + } + get fsPath() { + if (!this._fsPath) { + this._fsPath = uriToFsPath(this, false); + } + return this._fsPath; + } + toString(skipEncoding = false) { + if (!skipEncoding) { + if (!this._formatted) { + this._formatted = _asFormatted(this, false); + } + return this._formatted; + } + else { + // we don't cache that + return _asFormatted(this, true); + } + } + toJSON() { + const res = { + $mid: 1 /* MarshalledId.Uri */ + }; + // cached state + if (this._fsPath) { + res.fsPath = this._fsPath; + res._sep = _pathSepMarker; + } + if (this._formatted) { + res.external = this._formatted; + } + //--- uri components + if (this.path) { + res.path = this.path; + } + // TODO + // this isn't correct and can violate the UriComponents contract but + // this is part of the vscode.Uri API and we shouldn't change how that + // works anymore + if (this.scheme) { + res.scheme = this.scheme; + } + if (this.authority) { + res.authority = this.authority; + } + if (this.query) { + res.query = this.query; + } + if (this.fragment) { + res.fragment = this.fragment; + } + return res; + } +} +// reserved characters: https://tools.ietf.org/html/rfc3986#section-2.2 +const encodeTable = { + [58 /* CharCode.Colon */]: '%3A', // gen-delims + [47 /* CharCode.Slash */]: '%2F', + [63 /* CharCode.QuestionMark */]: '%3F', + [35 /* CharCode.Hash */]: '%23', + [91 /* CharCode.OpenSquareBracket */]: '%5B', + [93 /* CharCode.CloseSquareBracket */]: '%5D', + [64 /* CharCode.AtSign */]: '%40', + [33 /* CharCode.ExclamationMark */]: '%21', // sub-delims + [36 /* CharCode.DollarSign */]: '%24', + [38 /* CharCode.Ampersand */]: '%26', + [39 /* CharCode.SingleQuote */]: '%27', + [40 /* CharCode.OpenParen */]: '%28', + [41 /* CharCode.CloseParen */]: '%29', + [42 /* CharCode.Asterisk */]: '%2A', + [43 /* CharCode.Plus */]: '%2B', + [44 /* CharCode.Comma */]: '%2C', + [59 /* CharCode.Semicolon */]: '%3B', + [61 /* CharCode.Equals */]: '%3D', + [32 /* CharCode.Space */]: '%20', +}; +function encodeURIComponentFast(uriComponent, isPath, isAuthority) { + let res = undefined; + let nativeEncodePos = -1; + for (let pos = 0; pos < uriComponent.length; pos++) { + const code = uriComponent.charCodeAt(pos); + // unreserved characters: https://tools.ietf.org/html/rfc3986#section-2.3 + if ((code >= 97 /* CharCode.a */ && code <= 122 /* CharCode.z */) + || (code >= 65 /* CharCode.A */ && code <= 90 /* CharCode.Z */) + || (code >= 48 /* CharCode.Digit0 */ && code <= 57 /* CharCode.Digit9 */) + || code === 45 /* CharCode.Dash */ + || code === 46 /* CharCode.Period */ + || code === 95 /* CharCode.Underline */ + || code === 126 /* CharCode.Tilde */ + || (isPath && code === 47 /* CharCode.Slash */) + || (isAuthority && code === 91 /* CharCode.OpenSquareBracket */) + || (isAuthority && code === 93 /* CharCode.CloseSquareBracket */) + || (isAuthority && code === 58 /* CharCode.Colon */)) { + // check if we are delaying native encode + if (nativeEncodePos !== -1) { + res += encodeURIComponent(uriComponent.substring(nativeEncodePos, pos)); + nativeEncodePos = -1; + } + // check if we write into a new string (by default we try to return the param) + if (res !== undefined) { + res += uriComponent.charAt(pos); + } + } + else { + // encoding needed, we need to allocate a new string + if (res === undefined) { + res = uriComponent.substr(0, pos); + } + // check with default table first + const escaped = encodeTable[code]; + if (escaped !== undefined) { + // check if we are delaying native encode + if (nativeEncodePos !== -1) { + res += encodeURIComponent(uriComponent.substring(nativeEncodePos, pos)); + nativeEncodePos = -1; + } + // append escaped variant to result + res += escaped; + } + else if (nativeEncodePos === -1) { + // use native encode only when needed + nativeEncodePos = pos; + } + } + } + if (nativeEncodePos !== -1) { + res += encodeURIComponent(uriComponent.substring(nativeEncodePos)); + } + return res !== undefined ? res : uriComponent; +} +function encodeURIComponentMinimal(path) { + let res = undefined; + for (let pos = 0; pos < path.length; pos++) { + const code = path.charCodeAt(pos); + if (code === 35 /* CharCode.Hash */ || code === 63 /* CharCode.QuestionMark */) { + if (res === undefined) { + res = path.substr(0, pos); + } + res += encodeTable[code]; + } + else { + if (res !== undefined) { + res += path[pos]; + } + } + } + return res !== undefined ? res : path; +} +/** + * Compute `fsPath` for the given uri + */ +function uriToFsPath(uri, keepDriveLetterCasing) { + let value; + if (uri.authority && uri.path.length > 1 && uri.scheme === 'file') { + // unc path: file://shares/c$/far/boo + value = `//${uri.authority}${uri.path}`; + } + else if (uri.path.charCodeAt(0) === 47 /* CharCode.Slash */ + && (uri.path.charCodeAt(1) >= 65 /* CharCode.A */ && uri.path.charCodeAt(1) <= 90 /* CharCode.Z */ || uri.path.charCodeAt(1) >= 97 /* CharCode.a */ && uri.path.charCodeAt(1) <= 122 /* CharCode.z */) + && uri.path.charCodeAt(2) === 58 /* CharCode.Colon */) { + if (!keepDriveLetterCasing) { + // windows drive letter: file:///c:/far/boo + value = uri.path[1].toLowerCase() + uri.path.substr(2); + } + else { + value = uri.path.substr(1); + } + } + else { + // other path + value = uri.path; + } + if (isWindows) { + value = value.replace(/\//g, '\\'); + } + return value; +} +/** + * Create the external version of a uri + */ +function _asFormatted(uri, skipEncoding) { + const encoder = !skipEncoding + ? encodeURIComponentFast + : encodeURIComponentMinimal; + let res = ''; + let { scheme, authority, path, query, fragment } = uri; + if (scheme) { + res += scheme; + res += ':'; + } + if (authority || scheme === 'file') { + res += _slash; + res += _slash; + } + if (authority) { + let idx = authority.indexOf('@'); + if (idx !== -1) { + // <user>@<auth> + const userinfo = authority.substr(0, idx); + authority = authority.substr(idx + 1); + idx = userinfo.lastIndexOf(':'); + if (idx === -1) { + res += encoder(userinfo, false, false); + } + else { + // <user>:<pass>@<auth> + res += encoder(userinfo.substr(0, idx), false, false); + res += ':'; + res += encoder(userinfo.substr(idx + 1), false, true); + } + res += '@'; + } + authority = authority.toLowerCase(); + idx = authority.lastIndexOf(':'); + if (idx === -1) { + res += encoder(authority, false, true); + } + else { + // <auth>:<port> + res += encoder(authority.substr(0, idx), false, true); + res += authority.substr(idx); + } + } + if (path) { + // lower-case windows drive letters in /C:/fff or C:/fff + if (path.length >= 3 && path.charCodeAt(0) === 47 /* CharCode.Slash */ && path.charCodeAt(2) === 58 /* CharCode.Colon */) { + const code = path.charCodeAt(1); + if (code >= 65 /* CharCode.A */ && code <= 90 /* CharCode.Z */) { + path = `/${String.fromCharCode(code + 32)}:${path.substr(3)}`; // "/c:".length === 3 + } + } + else if (path.length >= 2 && path.charCodeAt(1) === 58 /* CharCode.Colon */) { + const code = path.charCodeAt(0); + if (code >= 65 /* CharCode.A */ && code <= 90 /* CharCode.Z */) { + path = `${String.fromCharCode(code + 32)}:${path.substr(2)}`; // "/c:".length === 3 + } + } + // encode the rest of the path + res += encoder(path, true, false); + } + if (query) { + res += '?'; + res += encoder(query, false, false); + } + if (fragment) { + res += '#'; + res += !skipEncoding ? encodeURIComponentFast(fragment, false, false) : fragment; + } + return res; +} +// --- decode +function decodeURIComponentGraceful(str) { + try { + return decodeURIComponent(str); + } + catch (_a) { + if (str.length > 3) { + return str.substr(0, 3) + decodeURIComponentGraceful(str.substr(3)); + } + else { + return str; + } + } +} +const _rEncodedAsHex = /(%[0-9A-Za-z][0-9A-Za-z])+/g; +function percentDecode(str) { + if (!str.match(_rEncodedAsHex)) { + return str; + } + return str.replace(_rEncodedAsHex, (match) => decodeURIComponentGraceful(match)); +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +/** + * A position in the editor. + */ +let Position$2 = class Position { + constructor(lineNumber, column) { + this.lineNumber = lineNumber; + this.column = column; + } + /** + * Create a new position from this position. + * + * @param newLineNumber new line number + * @param newColumn new column + */ + with(newLineNumber = this.lineNumber, newColumn = this.column) { + if (newLineNumber === this.lineNumber && newColumn === this.column) { + return this; + } + else { + return new Position(newLineNumber, newColumn); + } + } + /** + * Derive a new position from this position. + * + * @param deltaLineNumber line number delta + * @param deltaColumn column delta + */ + delta(deltaLineNumber = 0, deltaColumn = 0) { + return this.with(this.lineNumber + deltaLineNumber, this.column + deltaColumn); + } + /** + * Test if this position equals other position + */ + equals(other) { + return Position.equals(this, other); + } + /** + * Test if position `a` equals position `b` + */ + static equals(a, b) { + if (!a && !b) { + return true; + } + return (!!a && + !!b && + a.lineNumber === b.lineNumber && + a.column === b.column); + } + /** + * Test if this position is before other position. + * If the two positions are equal, the result will be false. + */ + isBefore(other) { + return Position.isBefore(this, other); + } + /** + * Test if position `a` is before position `b`. + * If the two positions are equal, the result will be false. + */ + static isBefore(a, b) { + if (a.lineNumber < b.lineNumber) { + return true; + } + if (b.lineNumber < a.lineNumber) { + return false; + } + return a.column < b.column; + } + /** + * Test if this position is before other position. + * If the two positions are equal, the result will be true. + */ + isBeforeOrEqual(other) { + return Position.isBeforeOrEqual(this, other); + } + /** + * Test if position `a` is before position `b`. + * If the two positions are equal, the result will be true. + */ + static isBeforeOrEqual(a, b) { + if (a.lineNumber < b.lineNumber) { + return true; + } + if (b.lineNumber < a.lineNumber) { + return false; + } + return a.column <= b.column; + } + /** + * A function that compares positions, useful for sorting + */ + static compare(a, b) { + const aLineNumber = a.lineNumber | 0; + const bLineNumber = b.lineNumber | 0; + if (aLineNumber === bLineNumber) { + const aColumn = a.column | 0; + const bColumn = b.column | 0; + return aColumn - bColumn; + } + return aLineNumber - bLineNumber; + } + /** + * Clone this position. + */ + clone() { + return new Position(this.lineNumber, this.column); + } + /** + * Convert to a human-readable representation. + */ + toString() { + return '(' + this.lineNumber + ',' + this.column + ')'; + } + // --- + /** + * Create a `Position` from an `IPosition`. + */ + static lift(pos) { + return new Position(pos.lineNumber, pos.column); + } + /** + * Test if `obj` is an `IPosition`. + */ + static isIPosition(obj) { + return (obj + && (typeof obj.lineNumber === 'number') + && (typeof obj.column === 'number')); + } + toJSON() { + return { + lineNumber: this.lineNumber, + column: this.column + }; + } +}; + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +/** + * A range in the editor. (startLineNumber,startColumn) is <= (endLineNumber,endColumn) + */ +let Range$b = class Range { + constructor(startLineNumber, startColumn, endLineNumber, endColumn) { + if ((startLineNumber > endLineNumber) || (startLineNumber === endLineNumber && startColumn > endColumn)) { + this.startLineNumber = endLineNumber; + this.startColumn = endColumn; + this.endLineNumber = startLineNumber; + this.endColumn = startColumn; + } + else { + this.startLineNumber = startLineNumber; + this.startColumn = startColumn; + this.endLineNumber = endLineNumber; + this.endColumn = endColumn; + } + } + /** + * Test if this range is empty. + */ + isEmpty() { + return Range.isEmpty(this); + } + /** + * Test if `range` is empty. + */ + static isEmpty(range) { + return (range.startLineNumber === range.endLineNumber && range.startColumn === range.endColumn); + } + /** + * Test if position is in this range. If the position is at the edges, will return true. + */ + containsPosition(position) { + return Range.containsPosition(this, position); + } + /** + * Test if `position` is in `range`. If the position is at the edges, will return true. + */ + static containsPosition(range, position) { + if (position.lineNumber < range.startLineNumber || position.lineNumber > range.endLineNumber) { + return false; + } + if (position.lineNumber === range.startLineNumber && position.column < range.startColumn) { + return false; + } + if (position.lineNumber === range.endLineNumber && position.column > range.endColumn) { + return false; + } + return true; + } + /** + * Test if `position` is in `range`. If the position is at the edges, will return false. + * @internal + */ + static strictContainsPosition(range, position) { + if (position.lineNumber < range.startLineNumber || position.lineNumber > range.endLineNumber) { + return false; + } + if (position.lineNumber === range.startLineNumber && position.column <= range.startColumn) { + return false; + } + if (position.lineNumber === range.endLineNumber && position.column >= range.endColumn) { + return false; + } + return true; + } + /** + * Test if range is in this range. If the range is equal to this range, will return true. + */ + containsRange(range) { + return Range.containsRange(this, range); + } + /** + * Test if `otherRange` is in `range`. If the ranges are equal, will return true. + */ + static containsRange(range, otherRange) { + if (otherRange.startLineNumber < range.startLineNumber || otherRange.endLineNumber < range.startLineNumber) { + return false; + } + if (otherRange.startLineNumber > range.endLineNumber || otherRange.endLineNumber > range.endLineNumber) { + return false; + } + if (otherRange.startLineNumber === range.startLineNumber && otherRange.startColumn < range.startColumn) { + return false; + } + if (otherRange.endLineNumber === range.endLineNumber && otherRange.endColumn > range.endColumn) { + return false; + } + return true; + } + /** + * Test if `range` is strictly in this range. `range` must start after and end before this range for the result to be true. + */ + strictContainsRange(range) { + return Range.strictContainsRange(this, range); + } + /** + * Test if `otherRange` is strictly in `range` (must start after, and end before). If the ranges are equal, will return false. + */ + static strictContainsRange(range, otherRange) { + if (otherRange.startLineNumber < range.startLineNumber || otherRange.endLineNumber < range.startLineNumber) { + return false; + } + if (otherRange.startLineNumber > range.endLineNumber || otherRange.endLineNumber > range.endLineNumber) { + return false; + } + if (otherRange.startLineNumber === range.startLineNumber && otherRange.startColumn <= range.startColumn) { + return false; + } + if (otherRange.endLineNumber === range.endLineNumber && otherRange.endColumn >= range.endColumn) { + return false; + } + return true; + } + /** + * A reunion of the two ranges. + * The smallest position will be used as the start point, and the largest one as the end point. + */ + plusRange(range) { + return Range.plusRange(this, range); + } + /** + * A reunion of the two ranges. + * The smallest position will be used as the start point, and the largest one as the end point. + */ + static plusRange(a, b) { + let startLineNumber; + let startColumn; + let endLineNumber; + let endColumn; + if (b.startLineNumber < a.startLineNumber) { + startLineNumber = b.startLineNumber; + startColumn = b.startColumn; + } + else if (b.startLineNumber === a.startLineNumber) { + startLineNumber = b.startLineNumber; + startColumn = Math.min(b.startColumn, a.startColumn); + } + else { + startLineNumber = a.startLineNumber; + startColumn = a.startColumn; + } + if (b.endLineNumber > a.endLineNumber) { + endLineNumber = b.endLineNumber; + endColumn = b.endColumn; + } + else if (b.endLineNumber === a.endLineNumber) { + endLineNumber = b.endLineNumber; + endColumn = Math.max(b.endColumn, a.endColumn); + } + else { + endLineNumber = a.endLineNumber; + endColumn = a.endColumn; + } + return new Range(startLineNumber, startColumn, endLineNumber, endColumn); + } + /** + * A intersection of the two ranges. + */ + intersectRanges(range) { + return Range.intersectRanges(this, range); + } + /** + * A intersection of the two ranges. + */ + static intersectRanges(a, b) { + let resultStartLineNumber = a.startLineNumber; + let resultStartColumn = a.startColumn; + let resultEndLineNumber = a.endLineNumber; + let resultEndColumn = a.endColumn; + const otherStartLineNumber = b.startLineNumber; + const otherStartColumn = b.startColumn; + const otherEndLineNumber = b.endLineNumber; + const otherEndColumn = b.endColumn; + if (resultStartLineNumber < otherStartLineNumber) { + resultStartLineNumber = otherStartLineNumber; + resultStartColumn = otherStartColumn; + } + else if (resultStartLineNumber === otherStartLineNumber) { + resultStartColumn = Math.max(resultStartColumn, otherStartColumn); + } + if (resultEndLineNumber > otherEndLineNumber) { + resultEndLineNumber = otherEndLineNumber; + resultEndColumn = otherEndColumn; + } + else if (resultEndLineNumber === otherEndLineNumber) { + resultEndColumn = Math.min(resultEndColumn, otherEndColumn); + } + // Check if selection is now empty + if (resultStartLineNumber > resultEndLineNumber) { + return null; + } + if (resultStartLineNumber === resultEndLineNumber && resultStartColumn > resultEndColumn) { + return null; + } + return new Range(resultStartLineNumber, resultStartColumn, resultEndLineNumber, resultEndColumn); + } + /** + * Test if this range equals other. + */ + equalsRange(other) { + return Range.equalsRange(this, other); + } + /** + * Test if range `a` equals `b`. + */ + static equalsRange(a, b) { + if (!a && !b) { + return true; + } + return (!!a && + !!b && + a.startLineNumber === b.startLineNumber && + a.startColumn === b.startColumn && + a.endLineNumber === b.endLineNumber && + a.endColumn === b.endColumn); + } + /** + * Return the end position (which will be after or equal to the start position) + */ + getEndPosition() { + return Range.getEndPosition(this); + } + /** + * Return the end position (which will be after or equal to the start position) + */ + static getEndPosition(range) { + return new Position$2(range.endLineNumber, range.endColumn); + } + /** + * Return the start position (which will be before or equal to the end position) + */ + getStartPosition() { + return Range.getStartPosition(this); + } + /** + * Return the start position (which will be before or equal to the end position) + */ + static getStartPosition(range) { + return new Position$2(range.startLineNumber, range.startColumn); + } + /** + * Transform to a user presentable string representation. + */ + toString() { + return '[' + this.startLineNumber + ',' + this.startColumn + ' -> ' + this.endLineNumber + ',' + this.endColumn + ']'; + } + /** + * Create a new range using this range's start position, and using endLineNumber and endColumn as the end position. + */ + setEndPosition(endLineNumber, endColumn) { + return new Range(this.startLineNumber, this.startColumn, endLineNumber, endColumn); + } + /** + * Create a new range using this range's end position, and using startLineNumber and startColumn as the start position. + */ + setStartPosition(startLineNumber, startColumn) { + return new Range(startLineNumber, startColumn, this.endLineNumber, this.endColumn); + } + /** + * Create a new empty range using this range's start position. + */ + collapseToStart() { + return Range.collapseToStart(this); + } + /** + * Create a new empty range using this range's start position. + */ + static collapseToStart(range) { + return new Range(range.startLineNumber, range.startColumn, range.startLineNumber, range.startColumn); + } + /** + * Create a new empty range using this range's end position. + */ + collapseToEnd() { + return Range.collapseToEnd(this); + } + /** + * Create a new empty range using this range's end position. + */ + static collapseToEnd(range) { + return new Range(range.endLineNumber, range.endColumn, range.endLineNumber, range.endColumn); + } + /** + * Moves the range by the given amount of lines. + */ + delta(lineCount) { + return new Range(this.startLineNumber + lineCount, this.startColumn, this.endLineNumber + lineCount, this.endColumn); + } + // --- + static fromPositions(start, end = start) { + return new Range(start.lineNumber, start.column, end.lineNumber, end.column); + } + static lift(range) { + if (!range) { + return null; + } + return new Range(range.startLineNumber, range.startColumn, range.endLineNumber, range.endColumn); + } + /** + * Test if `obj` is an `IRange`. + */ + static isIRange(obj) { + return (obj + && (typeof obj.startLineNumber === 'number') + && (typeof obj.startColumn === 'number') + && (typeof obj.endLineNumber === 'number') + && (typeof obj.endColumn === 'number')); + } + /** + * Test if the two ranges are touching in any way. + */ + static areIntersectingOrTouching(a, b) { + // Check if `a` is before `b` + if (a.endLineNumber < b.startLineNumber || (a.endLineNumber === b.startLineNumber && a.endColumn < b.startColumn)) { + return false; + } + // Check if `b` is before `a` + if (b.endLineNumber < a.startLineNumber || (b.endLineNumber === a.startLineNumber && b.endColumn < a.startColumn)) { + return false; + } + // These ranges must intersect + return true; + } + /** + * Test if the two ranges are intersecting. If the ranges are touching it returns true. + */ + static areIntersecting(a, b) { + // Check if `a` is before `b` + if (a.endLineNumber < b.startLineNumber || (a.endLineNumber === b.startLineNumber && a.endColumn <= b.startColumn)) { + return false; + } + // Check if `b` is before `a` + if (b.endLineNumber < a.startLineNumber || (b.endLineNumber === a.startLineNumber && b.endColumn <= a.startColumn)) { + return false; + } + // These ranges must intersect + return true; + } + /** + * A function that compares ranges, useful for sorting ranges + * It will first compare ranges on the startPosition and then on the endPosition + */ + static compareRangesUsingStarts(a, b) { + if (a && b) { + const aStartLineNumber = a.startLineNumber | 0; + const bStartLineNumber = b.startLineNumber | 0; + if (aStartLineNumber === bStartLineNumber) { + const aStartColumn = a.startColumn | 0; + const bStartColumn = b.startColumn | 0; + if (aStartColumn === bStartColumn) { + const aEndLineNumber = a.endLineNumber | 0; + const bEndLineNumber = b.endLineNumber | 0; + if (aEndLineNumber === bEndLineNumber) { + const aEndColumn = a.endColumn | 0; + const bEndColumn = b.endColumn | 0; + return aEndColumn - bEndColumn; + } + return aEndLineNumber - bEndLineNumber; + } + return aStartColumn - bStartColumn; + } + return aStartLineNumber - bStartLineNumber; + } + const aExists = (a ? 1 : 0); + const bExists = (b ? 1 : 0); + return aExists - bExists; + } + /** + * A function that compares ranges, useful for sorting ranges + * It will first compare ranges on the endPosition and then on the startPosition + */ + static compareRangesUsingEnds(a, b) { + if (a.endLineNumber === b.endLineNumber) { + if (a.endColumn === b.endColumn) { + if (a.startLineNumber === b.startLineNumber) { + return a.startColumn - b.startColumn; + } + return a.startLineNumber - b.startLineNumber; + } + return a.endColumn - b.endColumn; + } + return a.endLineNumber - b.endLineNumber; + } + /** + * Test if the range spans multiple lines. + */ + static spansMultipleLines(range) { + return range.endLineNumber > range.startLineNumber; + } + toJSON() { + return this; + } +}; + +/** + * Returns the last element of an array. + * @param array The array. + * @param n Which element from the end (default is zero). + */ +function equals$1(one, other, itemEquals = (a, b) => a === b) { + if (one === other) { + return true; + } + if (!one || !other) { + return false; + } + if (one.length !== other.length) { + return false; + } + for (let i = 0, len = one.length; i < len; i++) { + if (!itemEquals(one[i], other[i])) { + return false; + } + } + return true; +} +/** + * Splits the given items into a list of (non-empty) groups. + * `shouldBeGrouped` is used to decide if two consecutive items should be in the same group. + * The order of the items is preserved. + */ +function* groupAdjacentBy(items, shouldBeGrouped) { + let currentGroup; + let last; + for (const item of items) { + if (last !== undefined && shouldBeGrouped(last, item)) { + currentGroup.push(item); + } + else { + if (currentGroup) { + yield currentGroup; + } + currentGroup = [item]; + } + last = item; + } + if (currentGroup) { + yield currentGroup; + } +} +function forEachAdjacent(arr, f) { + for (let i = 0; i <= arr.length; i++) { + f(i === 0 ? undefined : arr[i - 1], i === arr.length ? undefined : arr[i]); + } +} +function forEachWithNeighbors(arr, f) { + for (let i = 0; i < arr.length; i++) { + f(i === 0 ? undefined : arr[i - 1], arr[i], i + 1 === arr.length ? undefined : arr[i + 1]); + } +} +function pushMany(arr, items) { + for (const item of items) { + arr.push(item); + } +} +var CompareResult; +(function (CompareResult) { + function isLessThan(result) { + return result < 0; + } + CompareResult.isLessThan = isLessThan; + function isLessThanOrEqual(result) { + return result <= 0; + } + CompareResult.isLessThanOrEqual = isLessThanOrEqual; + function isGreaterThan(result) { + return result > 0; + } + CompareResult.isGreaterThan = isGreaterThan; + function isNeitherLessOrGreaterThan(result) { + return result === 0; + } + CompareResult.isNeitherLessOrGreaterThan = isNeitherLessOrGreaterThan; + CompareResult.greaterThan = 1; + CompareResult.lessThan = -1; + CompareResult.neitherLessOrGreaterThan = 0; +})(CompareResult || (CompareResult = {})); +function compareBy(selector, comparator) { + return (a, b) => comparator(selector(a), selector(b)); +} +/** + * The natural order on numbers. +*/ +const numberComparator = (a, b) => a - b; +function reverseOrder(comparator) { + return (a, b) => -comparator(a, b); +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +function toUint8(v) { + if (v < 0) { + return 0; + } + if (v > 255 /* Constants.MAX_UINT_8 */) { + return 255 /* Constants.MAX_UINT_8 */; + } + return v | 0; +} +function toUint32(v) { + if (v < 0) { + return 0; + } + if (v > 4294967295 /* Constants.MAX_UINT_32 */) { + return 4294967295 /* Constants.MAX_UINT_32 */; + } + return v | 0; +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +class PrefixSumComputer { + constructor(values) { + this.values = values; + this.prefixSum = new Uint32Array(values.length); + this.prefixSumValidIndex = new Int32Array(1); + this.prefixSumValidIndex[0] = -1; + } + insertValues(insertIndex, insertValues) { + insertIndex = toUint32(insertIndex); + const oldValues = this.values; + const oldPrefixSum = this.prefixSum; + const insertValuesLen = insertValues.length; + if (insertValuesLen === 0) { + return false; + } + this.values = new Uint32Array(oldValues.length + insertValuesLen); + this.values.set(oldValues.subarray(0, insertIndex), 0); + this.values.set(oldValues.subarray(insertIndex), insertIndex + insertValuesLen); + this.values.set(insertValues, insertIndex); + if (insertIndex - 1 < this.prefixSumValidIndex[0]) { + this.prefixSumValidIndex[0] = insertIndex - 1; + } + this.prefixSum = new Uint32Array(this.values.length); + if (this.prefixSumValidIndex[0] >= 0) { + this.prefixSum.set(oldPrefixSum.subarray(0, this.prefixSumValidIndex[0] + 1)); + } + return true; + } + setValue(index, value) { + index = toUint32(index); + value = toUint32(value); + if (this.values[index] === value) { + return false; + } + this.values[index] = value; + if (index - 1 < this.prefixSumValidIndex[0]) { + this.prefixSumValidIndex[0] = index - 1; + } + return true; + } + removeValues(startIndex, count) { + startIndex = toUint32(startIndex); + count = toUint32(count); + const oldValues = this.values; + const oldPrefixSum = this.prefixSum; + if (startIndex >= oldValues.length) { + return false; + } + const maxCount = oldValues.length - startIndex; + if (count >= maxCount) { + count = maxCount; + } + if (count === 0) { + return false; + } + this.values = new Uint32Array(oldValues.length - count); + this.values.set(oldValues.subarray(0, startIndex), 0); + this.values.set(oldValues.subarray(startIndex + count), startIndex); + this.prefixSum = new Uint32Array(this.values.length); + if (startIndex - 1 < this.prefixSumValidIndex[0]) { + this.prefixSumValidIndex[0] = startIndex - 1; + } + if (this.prefixSumValidIndex[0] >= 0) { + this.prefixSum.set(oldPrefixSum.subarray(0, this.prefixSumValidIndex[0] + 1)); + } + return true; + } + getTotalSum() { + if (this.values.length === 0) { + return 0; + } + return this._getPrefixSum(this.values.length - 1); + } + /** + * Returns the sum of the first `index + 1` many items. + * @returns `SUM(0 <= j <= index, values[j])`. + */ + getPrefixSum(index) { + if (index < 0) { + return 0; + } + index = toUint32(index); + return this._getPrefixSum(index); + } + _getPrefixSum(index) { + if (index <= this.prefixSumValidIndex[0]) { + return this.prefixSum[index]; + } + let startIndex = this.prefixSumValidIndex[0] + 1; + if (startIndex === 0) { + this.prefixSum[0] = this.values[0]; + startIndex++; + } + if (index >= this.values.length) { + index = this.values.length - 1; + } + for (let i = startIndex; i <= index; i++) { + this.prefixSum[i] = this.prefixSum[i - 1] + this.values[i]; + } + this.prefixSumValidIndex[0] = Math.max(this.prefixSumValidIndex[0], index); + return this.prefixSum[index]; + } + getIndexOf(sum) { + sum = Math.floor(sum); + // Compute all sums (to get a fully valid prefixSum) + this.getTotalSum(); + let low = 0; + let high = this.values.length - 1; + let mid = 0; + let midStop = 0; + let midStart = 0; + while (low <= high) { + mid = low + ((high - low) / 2) | 0; + midStop = this.prefixSum[mid]; + midStart = midStop - this.values[mid]; + if (sum < midStart) { + high = mid - 1; + } + else if (sum >= midStop) { + low = mid + 1; + } + else { + break; + } + } + return new PrefixSumIndexOfResult(mid, sum - midStart); + } +} +class PrefixSumIndexOfResult { + constructor(index, remainder) { + this.index = index; + this.remainder = remainder; + this._prefixSumIndexOfResultBrand = undefined; + this.index = index; + this.remainder = remainder; + } +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +class MirrorTextModel { + constructor(uri, lines, eol, versionId) { + this._uri = uri; + this._lines = lines; + this._eol = eol; + this._versionId = versionId; + this._lineStarts = null; + this._cachedTextValue = null; + } + dispose() { + this._lines.length = 0; + } + get version() { + return this._versionId; + } + getText() { + if (this._cachedTextValue === null) { + this._cachedTextValue = this._lines.join(this._eol); + } + return this._cachedTextValue; + } + onEvents(e) { + if (e.eol && e.eol !== this._eol) { + this._eol = e.eol; + this._lineStarts = null; + } + // Update my lines + const changes = e.changes; + for (const change of changes) { + this._acceptDeleteRange(change.range); + this._acceptInsertText(new Position$2(change.range.startLineNumber, change.range.startColumn), change.text); + } + this._versionId = e.versionId; + this._cachedTextValue = null; + } + _ensureLineStarts() { + if (!this._lineStarts) { + const eolLength = this._eol.length; + const linesLength = this._lines.length; + const lineStartValues = new Uint32Array(linesLength); + for (let i = 0; i < linesLength; i++) { + lineStartValues[i] = this._lines[i].length + eolLength; + } + this._lineStarts = new PrefixSumComputer(lineStartValues); + } + } + /** + * All changes to a line's text go through this method + */ + _setLineText(lineIndex, newValue) { + this._lines[lineIndex] = newValue; + if (this._lineStarts) { + // update prefix sum + this._lineStarts.setValue(lineIndex, this._lines[lineIndex].length + this._eol.length); + } + } + _acceptDeleteRange(range) { + if (range.startLineNumber === range.endLineNumber) { + if (range.startColumn === range.endColumn) { + // Nothing to delete + return; + } + // Delete text on the affected line + this._setLineText(range.startLineNumber - 1, this._lines[range.startLineNumber - 1].substring(0, range.startColumn - 1) + + this._lines[range.startLineNumber - 1].substring(range.endColumn - 1)); + return; + } + // Take remaining text on last line and append it to remaining text on first line + this._setLineText(range.startLineNumber - 1, this._lines[range.startLineNumber - 1].substring(0, range.startColumn - 1) + + this._lines[range.endLineNumber - 1].substring(range.endColumn - 1)); + // Delete middle lines + this._lines.splice(range.startLineNumber, range.endLineNumber - range.startLineNumber); + if (this._lineStarts) { + // update prefix sum + this._lineStarts.removeValues(range.startLineNumber, range.endLineNumber - range.startLineNumber); + } + } + _acceptInsertText(position, insertText) { + if (insertText.length === 0) { + // Nothing to insert + return; + } + const insertLines = splitLines(insertText); + if (insertLines.length === 1) { + // Inserting text on one line + this._setLineText(position.lineNumber - 1, this._lines[position.lineNumber - 1].substring(0, position.column - 1) + + insertLines[0] + + this._lines[position.lineNumber - 1].substring(position.column - 1)); + return; + } + // Append overflowing text from first line to the end of text to insert + insertLines[insertLines.length - 1] += this._lines[position.lineNumber - 1].substring(position.column - 1); + // Delete overflowing text from first line and insert text on first line + this._setLineText(position.lineNumber - 1, this._lines[position.lineNumber - 1].substring(0, position.column - 1) + + insertLines[0]); + // Insert new lines & store lengths + const newLengths = new Uint32Array(insertLines.length - 1); + for (let i = 1; i < insertLines.length; i++) { + this._lines.splice(position.lineNumber + i - 1, 0, insertLines[i]); + newLengths[i - 1] = insertLines[i].length + this._eol.length; + } + if (this._lineStarts) { + // update prefix sum + this._lineStarts.insertValues(position.lineNumber, newLengths); + } + } +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +const USUAL_WORD_SEPARATORS = '`~!@#$%^&*()-=+[{]}\\|;:\'",.<>/?'; +/** + * Create a word definition regular expression based on default word separators. + * Optionally provide allowed separators that should be included in words. + * + * The default would look like this: + * /(-?\d*\.\d\w*)|([^\`\~\!\@\#\$\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g + */ +function createWordRegExp(allowInWords = '') { + let source = '(-?\\d*\\.\\d\\w*)|([^'; + for (const sep of USUAL_WORD_SEPARATORS) { + if (allowInWords.indexOf(sep) >= 0) { + continue; + } + source += '\\' + sep; + } + source += '\\s]+)'; + return new RegExp(source, 'g'); +} +// catches numbers (including floating numbers) in the first group, and alphanum in the second +const DEFAULT_WORD_REGEXP = createWordRegExp(); +function ensureValidWordDefinition(wordDefinition) { + let result = DEFAULT_WORD_REGEXP; + if (wordDefinition && (wordDefinition instanceof RegExp)) { + if (!wordDefinition.global) { + let flags = 'g'; + if (wordDefinition.ignoreCase) { + flags += 'i'; + } + if (wordDefinition.multiline) { + flags += 'm'; + } + if (wordDefinition.unicode) { + flags += 'u'; + } + result = new RegExp(wordDefinition.source, flags); + } + else { + result = wordDefinition; + } + } + result.lastIndex = 0; + return result; +} +const _defaultConfig = new LinkedList(); +_defaultConfig.unshift({ + maxLen: 1000, + windowSize: 15, + timeBudget: 150 +}); +function getWordAtText(column, wordDefinition, text, textOffset, config) { + // Ensure the regex has the 'g' flag, otherwise this will loop forever + wordDefinition = ensureValidWordDefinition(wordDefinition); + if (!config) { + config = Iterable.first(_defaultConfig); + } + if (text.length > config.maxLen) { + // don't throw strings that long at the regexp + // but use a sub-string in which a word must occur + let start = column - config.maxLen / 2; + if (start < 0) { + start = 0; + } + else { + textOffset += start; + } + text = text.substring(start, column + config.maxLen / 2); + return getWordAtText(column, wordDefinition, text, textOffset, config); + } + const t1 = Date.now(); + const pos = column - 1 - textOffset; + let prevRegexIndex = -1; + let match = null; + for (let i = 1;; i++) { + // check time budget + if (Date.now() - t1 >= config.timeBudget) { + break; + } + // reset the index at which the regexp should start matching, also know where it + // should stop so that subsequent search don't repeat previous searches + const regexIndex = pos - config.windowSize * i; + wordDefinition.lastIndex = Math.max(0, regexIndex); + const thisMatch = _findRegexMatchEnclosingPosition(wordDefinition, text, pos, prevRegexIndex); + if (!thisMatch && match) { + // stop: we have something + break; + } + match = thisMatch; + // stop: searched at start + if (regexIndex <= 0) { + break; + } + prevRegexIndex = regexIndex; + } + if (match) { + const result = { + word: match[0], + startColumn: textOffset + 1 + match.index, + endColumn: textOffset + 1 + match.index + match[0].length + }; + wordDefinition.lastIndex = 0; + return result; + } + return null; +} +function _findRegexMatchEnclosingPosition(wordDefinition, text, pos, stopPos) { + let match; + while (match = wordDefinition.exec(text)) { + const matchIndex = match.index || 0; + if (matchIndex <= pos && wordDefinition.lastIndex >= pos) { + return match; + } + else if (stopPos > 0 && matchIndex > stopPos) { + return null; + } + } + return null; +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +/** + * A fast character classifier that uses a compact array for ASCII values. + */ +class CharacterClassifier { + constructor(_defaultValue) { + const defaultValue = toUint8(_defaultValue); + this._defaultValue = defaultValue; + this._asciiMap = CharacterClassifier._createAsciiMap(defaultValue); + this._map = new Map(); + } + static _createAsciiMap(defaultValue) { + const asciiMap = new Uint8Array(256); + asciiMap.fill(defaultValue); + return asciiMap; + } + set(charCode, _value) { + const value = toUint8(_value); + if (charCode >= 0 && charCode < 256) { + this._asciiMap[charCode] = value; + } + else { + this._map.set(charCode, value); + } + } + get(charCode) { + if (charCode >= 0 && charCode < 256) { + return this._asciiMap[charCode]; + } + else { + return (this._map.get(charCode) || this._defaultValue); + } + } + clear() { + this._asciiMap.fill(this._defaultValue); + this._map.clear(); + } +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +class Uint8Matrix { + constructor(rows, cols, defaultValue) { + const data = new Uint8Array(rows * cols); + for (let i = 0, len = rows * cols; i < len; i++) { + data[i] = defaultValue; + } + this._data = data; + this.rows = rows; + this.cols = cols; + } + get(row, col) { + return this._data[row * this.cols + col]; + } + set(row, col, value) { + this._data[row * this.cols + col] = value; + } +} +class StateMachine { + constructor(edges) { + let maxCharCode = 0; + let maxState = 0 /* State.Invalid */; + for (let i = 0, len = edges.length; i < len; i++) { + const [from, chCode, to] = edges[i]; + if (chCode > maxCharCode) { + maxCharCode = chCode; + } + if (from > maxState) { + maxState = from; + } + if (to > maxState) { + maxState = to; + } + } + maxCharCode++; + maxState++; + const states = new Uint8Matrix(maxState, maxCharCode, 0 /* State.Invalid */); + for (let i = 0, len = edges.length; i < len; i++) { + const [from, chCode, to] = edges[i]; + states.set(from, chCode, to); + } + this._states = states; + this._maxCharCode = maxCharCode; + } + nextState(currentState, chCode) { + if (chCode < 0 || chCode >= this._maxCharCode) { + return 0 /* State.Invalid */; + } + return this._states.get(currentState, chCode); + } +} +// State machine for http:// or https:// or file:// +let _stateMachine = null; +function getStateMachine() { + if (_stateMachine === null) { + _stateMachine = new StateMachine([ + [1 /* State.Start */, 104 /* CharCode.h */, 2 /* State.H */], + [1 /* State.Start */, 72 /* CharCode.H */, 2 /* State.H */], + [1 /* State.Start */, 102 /* CharCode.f */, 6 /* State.F */], + [1 /* State.Start */, 70 /* CharCode.F */, 6 /* State.F */], + [2 /* State.H */, 116 /* CharCode.t */, 3 /* State.HT */], + [2 /* State.H */, 84 /* CharCode.T */, 3 /* State.HT */], + [3 /* State.HT */, 116 /* CharCode.t */, 4 /* State.HTT */], + [3 /* State.HT */, 84 /* CharCode.T */, 4 /* State.HTT */], + [4 /* State.HTT */, 112 /* CharCode.p */, 5 /* State.HTTP */], + [4 /* State.HTT */, 80 /* CharCode.P */, 5 /* State.HTTP */], + [5 /* State.HTTP */, 115 /* CharCode.s */, 9 /* State.BeforeColon */], + [5 /* State.HTTP */, 83 /* CharCode.S */, 9 /* State.BeforeColon */], + [5 /* State.HTTP */, 58 /* CharCode.Colon */, 10 /* State.AfterColon */], + [6 /* State.F */, 105 /* CharCode.i */, 7 /* State.FI */], + [6 /* State.F */, 73 /* CharCode.I */, 7 /* State.FI */], + [7 /* State.FI */, 108 /* CharCode.l */, 8 /* State.FIL */], + [7 /* State.FI */, 76 /* CharCode.L */, 8 /* State.FIL */], + [8 /* State.FIL */, 101 /* CharCode.e */, 9 /* State.BeforeColon */], + [8 /* State.FIL */, 69 /* CharCode.E */, 9 /* State.BeforeColon */], + [9 /* State.BeforeColon */, 58 /* CharCode.Colon */, 10 /* State.AfterColon */], + [10 /* State.AfterColon */, 47 /* CharCode.Slash */, 11 /* State.AlmostThere */], + [11 /* State.AlmostThere */, 47 /* CharCode.Slash */, 12 /* State.End */], + ]); + } + return _stateMachine; +} +let _classifier = null; +function getClassifier() { + if (_classifier === null) { + _classifier = new CharacterClassifier(0 /* CharacterClass.None */); + // allow-any-unicode-next-line + const FORCE_TERMINATION_CHARACTERS = ' \t<>\'\"、。。、,.:;‘〈「『〔([{「」}])〕』」〉’`~…'; + for (let i = 0; i < FORCE_TERMINATION_CHARACTERS.length; i++) { + _classifier.set(FORCE_TERMINATION_CHARACTERS.charCodeAt(i), 1 /* CharacterClass.ForceTermination */); + } + const CANNOT_END_WITH_CHARACTERS = '.,;:'; + for (let i = 0; i < CANNOT_END_WITH_CHARACTERS.length; i++) { + _classifier.set(CANNOT_END_WITH_CHARACTERS.charCodeAt(i), 2 /* CharacterClass.CannotEndIn */); + } + } + return _classifier; +} +class LinkComputer { + static _createLink(classifier, line, lineNumber, linkBeginIndex, linkEndIndex) { + // Do not allow to end link in certain characters... + let lastIncludedCharIndex = linkEndIndex - 1; + do { + const chCode = line.charCodeAt(lastIncludedCharIndex); + const chClass = classifier.get(chCode); + if (chClass !== 2 /* CharacterClass.CannotEndIn */) { + break; + } + lastIncludedCharIndex--; + } while (lastIncludedCharIndex > linkBeginIndex); + // Handle links enclosed in parens, square brackets and curlys. + if (linkBeginIndex > 0) { + const charCodeBeforeLink = line.charCodeAt(linkBeginIndex - 1); + const lastCharCodeInLink = line.charCodeAt(lastIncludedCharIndex); + if ((charCodeBeforeLink === 40 /* CharCode.OpenParen */ && lastCharCodeInLink === 41 /* CharCode.CloseParen */) + || (charCodeBeforeLink === 91 /* CharCode.OpenSquareBracket */ && lastCharCodeInLink === 93 /* CharCode.CloseSquareBracket */) + || (charCodeBeforeLink === 123 /* CharCode.OpenCurlyBrace */ && lastCharCodeInLink === 125 /* CharCode.CloseCurlyBrace */)) { + // Do not end in ) if ( is before the link start + // Do not end in ] if [ is before the link start + // Do not end in } if { is before the link start + lastIncludedCharIndex--; + } + } + return { + range: { + startLineNumber: lineNumber, + startColumn: linkBeginIndex + 1, + endLineNumber: lineNumber, + endColumn: lastIncludedCharIndex + 2 + }, + url: line.substring(linkBeginIndex, lastIncludedCharIndex + 1) + }; + } + static computeLinks(model, stateMachine = getStateMachine()) { + const classifier = getClassifier(); + const result = []; + for (let i = 1, lineCount = model.getLineCount(); i <= lineCount; i++) { + const line = model.getLineContent(i); + const len = line.length; + let j = 0; + let linkBeginIndex = 0; + let linkBeginChCode = 0; + let state = 1 /* State.Start */; + let hasOpenParens = false; + let hasOpenSquareBracket = false; + let inSquareBrackets = false; + let hasOpenCurlyBracket = false; + while (j < len) { + let resetStateMachine = false; + const chCode = line.charCodeAt(j); + if (state === 13 /* State.Accept */) { + let chClass; + switch (chCode) { + case 40 /* CharCode.OpenParen */: + hasOpenParens = true; + chClass = 0 /* CharacterClass.None */; + break; + case 41 /* CharCode.CloseParen */: + chClass = (hasOpenParens ? 0 /* CharacterClass.None */ : 1 /* CharacterClass.ForceTermination */); + break; + case 91 /* CharCode.OpenSquareBracket */: + inSquareBrackets = true; + hasOpenSquareBracket = true; + chClass = 0 /* CharacterClass.None */; + break; + case 93 /* CharCode.CloseSquareBracket */: + inSquareBrackets = false; + chClass = (hasOpenSquareBracket ? 0 /* CharacterClass.None */ : 1 /* CharacterClass.ForceTermination */); + break; + case 123 /* CharCode.OpenCurlyBrace */: + hasOpenCurlyBracket = true; + chClass = 0 /* CharacterClass.None */; + break; + case 125 /* CharCode.CloseCurlyBrace */: + chClass = (hasOpenCurlyBracket ? 0 /* CharacterClass.None */ : 1 /* CharacterClass.ForceTermination */); + break; + // The following three rules make it that ' or " or ` are allowed inside links + // only if the link is wrapped by some other quote character + case 39 /* CharCode.SingleQuote */: + case 34 /* CharCode.DoubleQuote */: + case 96 /* CharCode.BackTick */: + if (linkBeginChCode === chCode) { + chClass = 1 /* CharacterClass.ForceTermination */; + } + else if (linkBeginChCode === 39 /* CharCode.SingleQuote */ || linkBeginChCode === 34 /* CharCode.DoubleQuote */ || linkBeginChCode === 96 /* CharCode.BackTick */) { + chClass = 0 /* CharacterClass.None */; + } + else { + chClass = 1 /* CharacterClass.ForceTermination */; + } + break; + case 42 /* CharCode.Asterisk */: + // `*` terminates a link if the link began with `*` + chClass = (linkBeginChCode === 42 /* CharCode.Asterisk */) ? 1 /* CharacterClass.ForceTermination */ : 0 /* CharacterClass.None */; + break; + case 124 /* CharCode.Pipe */: + // `|` terminates a link if the link began with `|` + chClass = (linkBeginChCode === 124 /* CharCode.Pipe */) ? 1 /* CharacterClass.ForceTermination */ : 0 /* CharacterClass.None */; + break; + case 32 /* CharCode.Space */: + // ` ` allow space in between [ and ] + chClass = (inSquareBrackets ? 0 /* CharacterClass.None */ : 1 /* CharacterClass.ForceTermination */); + break; + default: + chClass = classifier.get(chCode); + } + // Check if character terminates link + if (chClass === 1 /* CharacterClass.ForceTermination */) { + result.push(LinkComputer._createLink(classifier, line, i, linkBeginIndex, j)); + resetStateMachine = true; + } + } + else if (state === 12 /* State.End */) { + let chClass; + if (chCode === 91 /* CharCode.OpenSquareBracket */) { + // Allow for the authority part to contain ipv6 addresses which contain [ and ] + hasOpenSquareBracket = true; + chClass = 0 /* CharacterClass.None */; + } + else { + chClass = classifier.get(chCode); + } + // Check if character terminates link + if (chClass === 1 /* CharacterClass.ForceTermination */) { + resetStateMachine = true; + } + else { + state = 13 /* State.Accept */; + } + } + else { + state = stateMachine.nextState(state, chCode); + if (state === 0 /* State.Invalid */) { + resetStateMachine = true; + } + } + if (resetStateMachine) { + state = 1 /* State.Start */; + hasOpenParens = false; + hasOpenSquareBracket = false; + hasOpenCurlyBracket = false; + // Record where the link started + linkBeginIndex = j + 1; + linkBeginChCode = chCode; + } + j++; + } + if (state === 13 /* State.Accept */) { + result.push(LinkComputer._createLink(classifier, line, i, linkBeginIndex, len)); + } + } + return result; + } +} +/** + * Returns an array of all links contains in the provided + * document. *Note* that this operation is computational + * expensive and should not run in the UI thread. + */ +function computeLinks(model) { + if (!model || typeof model.getLineCount !== 'function' || typeof model.getLineContent !== 'function') { + // Unknown caller! + return []; + } + return LinkComputer.computeLinks(model); +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +class BasicInplaceReplace { + constructor() { + this._defaultValueSet = [ + ['true', 'false'], + ['True', 'False'], + ['Private', 'Public', 'Friend', 'ReadOnly', 'Partial', 'Protected', 'WriteOnly'], + ['public', 'protected', 'private'], + ]; + } + navigateValueSet(range1, text1, range2, text2, up) { + if (range1 && text1) { + const result = this.doNavigateValueSet(text1, up); + if (result) { + return { + range: range1, + value: result + }; + } + } + if (range2 && text2) { + const result = this.doNavigateValueSet(text2, up); + if (result) { + return { + range: range2, + value: result + }; + } + } + return null; + } + doNavigateValueSet(text, up) { + const numberResult = this.numberReplace(text, up); + if (numberResult !== null) { + return numberResult; + } + return this.textReplace(text, up); + } + numberReplace(value, up) { + const precision = Math.pow(10, value.length - (value.lastIndexOf('.') + 1)); + let n1 = Number(value); + const n2 = parseFloat(value); + if (!isNaN(n1) && !isNaN(n2) && n1 === n2) { + if (n1 === 0 && !up) { + return null; // don't do negative + // } else if(n1 === 9 && up) { + // return null; // don't insert 10 into a number + } + else { + n1 = Math.floor(n1 * precision); + n1 += up ? precision : -precision; + return String(n1 / precision); + } + } + return null; + } + textReplace(value, up) { + return this.valueSetsReplace(this._defaultValueSet, value, up); + } + valueSetsReplace(valueSets, value, up) { + let result = null; + for (let i = 0, len = valueSets.length; result === null && i < len; i++) { + result = this.valueSetReplace(valueSets[i], value, up); + } + return result; + } + valueSetReplace(valueSet, value, up) { + let idx = valueSet.indexOf(value); + if (idx >= 0) { + idx += up ? +1 : -1; + if (idx < 0) { + idx = valueSet.length - 1; + } + else { + idx %= valueSet.length; + } + return valueSet[idx]; + } + return null; + } +} +BasicInplaceReplace.INSTANCE = new BasicInplaceReplace(); + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +const shortcutEvent = Object.freeze(function (callback, context) { + const handle = setTimeout(callback.bind(context), 0); + return { dispose() { clearTimeout(handle); } }; +}); +var CancellationToken; +(function (CancellationToken) { + function isCancellationToken(thing) { + if (thing === CancellationToken.None || thing === CancellationToken.Cancelled) { + return true; + } + if (thing instanceof MutableToken) { + return true; + } + if (!thing || typeof thing !== 'object') { + return false; + } + return typeof thing.isCancellationRequested === 'boolean' + && typeof thing.onCancellationRequested === 'function'; + } + CancellationToken.isCancellationToken = isCancellationToken; + CancellationToken.None = Object.freeze({ + isCancellationRequested: false, + onCancellationRequested: Event.None + }); + CancellationToken.Cancelled = Object.freeze({ + isCancellationRequested: true, + onCancellationRequested: shortcutEvent + }); +})(CancellationToken || (CancellationToken = {})); +class MutableToken { + constructor() { + this._isCancelled = false; + this._emitter = null; + } + cancel() { + if (!this._isCancelled) { + this._isCancelled = true; + if (this._emitter) { + this._emitter.fire(undefined); + this.dispose(); + } + } + } + get isCancellationRequested() { + return this._isCancelled; + } + get onCancellationRequested() { + if (this._isCancelled) { + return shortcutEvent; + } + if (!this._emitter) { + this._emitter = new Emitter(); + } + return this._emitter.event; + } + dispose() { + if (this._emitter) { + this._emitter.dispose(); + this._emitter = null; + } + } +} +class CancellationTokenSource { + constructor(parent) { + this._token = undefined; + this._parentListener = undefined; + this._parentListener = parent && parent.onCancellationRequested(this.cancel, this); + } + get token() { + if (!this._token) { + // be lazy and create the token only when + // actually needed + this._token = new MutableToken(); + } + return this._token; + } + cancel() { + if (!this._token) { + // save an object by returning the default + // cancelled token when cancellation happens + // before someone asks for the token + this._token = CancellationToken.Cancelled; + } + else if (this._token instanceof MutableToken) { + // actually cancel + this._token.cancel(); + } + } + dispose(cancel = false) { + var _a; + if (cancel) { + this.cancel(); + } + (_a = this._parentListener) === null || _a === void 0 ? void 0 : _a.dispose(); + if (!this._token) { + // ensure to initialize with an empty token if we had none + this._token = CancellationToken.None; + } + else if (this._token instanceof MutableToken) { + // actually dispose + this._token.dispose(); + } + } +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +class KeyCodeStrMap { + constructor() { + this._keyCodeToStr = []; + this._strToKeyCode = Object.create(null); + } + define(keyCode, str) { + this._keyCodeToStr[keyCode] = str; + this._strToKeyCode[str.toLowerCase()] = keyCode; + } + keyCodeToStr(keyCode) { + return this._keyCodeToStr[keyCode]; + } + strToKeyCode(str) { + return this._strToKeyCode[str.toLowerCase()] || 0 /* KeyCode.Unknown */; + } +} +const uiMap = new KeyCodeStrMap(); +const userSettingsUSMap = new KeyCodeStrMap(); +const userSettingsGeneralMap = new KeyCodeStrMap(); +const EVENT_KEY_CODE_MAP = new Array(230); +const scanCodeStrToInt = Object.create(null); +const scanCodeLowerCaseStrToInt = Object.create(null); +(function () { + // See https://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx + // See https://github.com/microsoft/node-native-keymap/blob/88c0b0e5/deps/chromium/keyboard_codes_win.h + const empty = ''; + const mappings = [ + // immutable, scanCode, scanCodeStr, keyCode, keyCodeStr, eventKeyCode, vkey, usUserSettingsLabel, generalUserSettingsLabel + [1, 0 /* ScanCode.None */, 'None', 0 /* KeyCode.Unknown */, 'unknown', 0, 'VK_UNKNOWN', empty, empty], + [1, 1 /* ScanCode.Hyper */, 'Hyper', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 2 /* ScanCode.Super */, 'Super', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 3 /* ScanCode.Fn */, 'Fn', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 4 /* ScanCode.FnLock */, 'FnLock', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 5 /* ScanCode.Suspend */, 'Suspend', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 6 /* ScanCode.Resume */, 'Resume', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 7 /* ScanCode.Turbo */, 'Turbo', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 8 /* ScanCode.Sleep */, 'Sleep', 0 /* KeyCode.Unknown */, empty, 0, 'VK_SLEEP', empty, empty], + [1, 9 /* ScanCode.WakeUp */, 'WakeUp', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [0, 10 /* ScanCode.KeyA */, 'KeyA', 31 /* KeyCode.KeyA */, 'A', 65, 'VK_A', empty, empty], + [0, 11 /* ScanCode.KeyB */, 'KeyB', 32 /* KeyCode.KeyB */, 'B', 66, 'VK_B', empty, empty], + [0, 12 /* ScanCode.KeyC */, 'KeyC', 33 /* KeyCode.KeyC */, 'C', 67, 'VK_C', empty, empty], + [0, 13 /* ScanCode.KeyD */, 'KeyD', 34 /* KeyCode.KeyD */, 'D', 68, 'VK_D', empty, empty], + [0, 14 /* ScanCode.KeyE */, 'KeyE', 35 /* KeyCode.KeyE */, 'E', 69, 'VK_E', empty, empty], + [0, 15 /* ScanCode.KeyF */, 'KeyF', 36 /* KeyCode.KeyF */, 'F', 70, 'VK_F', empty, empty], + [0, 16 /* ScanCode.KeyG */, 'KeyG', 37 /* KeyCode.KeyG */, 'G', 71, 'VK_G', empty, empty], + [0, 17 /* ScanCode.KeyH */, 'KeyH', 38 /* KeyCode.KeyH */, 'H', 72, 'VK_H', empty, empty], + [0, 18 /* ScanCode.KeyI */, 'KeyI', 39 /* KeyCode.KeyI */, 'I', 73, 'VK_I', empty, empty], + [0, 19 /* ScanCode.KeyJ */, 'KeyJ', 40 /* KeyCode.KeyJ */, 'J', 74, 'VK_J', empty, empty], + [0, 20 /* ScanCode.KeyK */, 'KeyK', 41 /* KeyCode.KeyK */, 'K', 75, 'VK_K', empty, empty], + [0, 21 /* ScanCode.KeyL */, 'KeyL', 42 /* KeyCode.KeyL */, 'L', 76, 'VK_L', empty, empty], + [0, 22 /* ScanCode.KeyM */, 'KeyM', 43 /* KeyCode.KeyM */, 'M', 77, 'VK_M', empty, empty], + [0, 23 /* ScanCode.KeyN */, 'KeyN', 44 /* KeyCode.KeyN */, 'N', 78, 'VK_N', empty, empty], + [0, 24 /* ScanCode.KeyO */, 'KeyO', 45 /* KeyCode.KeyO */, 'O', 79, 'VK_O', empty, empty], + [0, 25 /* ScanCode.KeyP */, 'KeyP', 46 /* KeyCode.KeyP */, 'P', 80, 'VK_P', empty, empty], + [0, 26 /* ScanCode.KeyQ */, 'KeyQ', 47 /* KeyCode.KeyQ */, 'Q', 81, 'VK_Q', empty, empty], + [0, 27 /* ScanCode.KeyR */, 'KeyR', 48 /* KeyCode.KeyR */, 'R', 82, 'VK_R', empty, empty], + [0, 28 /* ScanCode.KeyS */, 'KeyS', 49 /* KeyCode.KeyS */, 'S', 83, 'VK_S', empty, empty], + [0, 29 /* ScanCode.KeyT */, 'KeyT', 50 /* KeyCode.KeyT */, 'T', 84, 'VK_T', empty, empty], + [0, 30 /* ScanCode.KeyU */, 'KeyU', 51 /* KeyCode.KeyU */, 'U', 85, 'VK_U', empty, empty], + [0, 31 /* ScanCode.KeyV */, 'KeyV', 52 /* KeyCode.KeyV */, 'V', 86, 'VK_V', empty, empty], + [0, 32 /* ScanCode.KeyW */, 'KeyW', 53 /* KeyCode.KeyW */, 'W', 87, 'VK_W', empty, empty], + [0, 33 /* ScanCode.KeyX */, 'KeyX', 54 /* KeyCode.KeyX */, 'X', 88, 'VK_X', empty, empty], + [0, 34 /* ScanCode.KeyY */, 'KeyY', 55 /* KeyCode.KeyY */, 'Y', 89, 'VK_Y', empty, empty], + [0, 35 /* ScanCode.KeyZ */, 'KeyZ', 56 /* KeyCode.KeyZ */, 'Z', 90, 'VK_Z', empty, empty], + [0, 36 /* ScanCode.Digit1 */, 'Digit1', 22 /* KeyCode.Digit1 */, '1', 49, 'VK_1', empty, empty], + [0, 37 /* ScanCode.Digit2 */, 'Digit2', 23 /* KeyCode.Digit2 */, '2', 50, 'VK_2', empty, empty], + [0, 38 /* ScanCode.Digit3 */, 'Digit3', 24 /* KeyCode.Digit3 */, '3', 51, 'VK_3', empty, empty], + [0, 39 /* ScanCode.Digit4 */, 'Digit4', 25 /* KeyCode.Digit4 */, '4', 52, 'VK_4', empty, empty], + [0, 40 /* ScanCode.Digit5 */, 'Digit5', 26 /* KeyCode.Digit5 */, '5', 53, 'VK_5', empty, empty], + [0, 41 /* ScanCode.Digit6 */, 'Digit6', 27 /* KeyCode.Digit6 */, '6', 54, 'VK_6', empty, empty], + [0, 42 /* ScanCode.Digit7 */, 'Digit7', 28 /* KeyCode.Digit7 */, '7', 55, 'VK_7', empty, empty], + [0, 43 /* ScanCode.Digit8 */, 'Digit8', 29 /* KeyCode.Digit8 */, '8', 56, 'VK_8', empty, empty], + [0, 44 /* ScanCode.Digit9 */, 'Digit9', 30 /* KeyCode.Digit9 */, '9', 57, 'VK_9', empty, empty], + [0, 45 /* ScanCode.Digit0 */, 'Digit0', 21 /* KeyCode.Digit0 */, '0', 48, 'VK_0', empty, empty], + [1, 46 /* ScanCode.Enter */, 'Enter', 3 /* KeyCode.Enter */, 'Enter', 13, 'VK_RETURN', empty, empty], + [1, 47 /* ScanCode.Escape */, 'Escape', 9 /* KeyCode.Escape */, 'Escape', 27, 'VK_ESCAPE', empty, empty], + [1, 48 /* ScanCode.Backspace */, 'Backspace', 1 /* KeyCode.Backspace */, 'Backspace', 8, 'VK_BACK', empty, empty], + [1, 49 /* ScanCode.Tab */, 'Tab', 2 /* KeyCode.Tab */, 'Tab', 9, 'VK_TAB', empty, empty], + [1, 50 /* ScanCode.Space */, 'Space', 10 /* KeyCode.Space */, 'Space', 32, 'VK_SPACE', empty, empty], + [0, 51 /* ScanCode.Minus */, 'Minus', 88 /* KeyCode.Minus */, '-', 189, 'VK_OEM_MINUS', '-', 'OEM_MINUS'], + [0, 52 /* ScanCode.Equal */, 'Equal', 86 /* KeyCode.Equal */, '=', 187, 'VK_OEM_PLUS', '=', 'OEM_PLUS'], + [0, 53 /* ScanCode.BracketLeft */, 'BracketLeft', 92 /* KeyCode.BracketLeft */, '[', 219, 'VK_OEM_4', '[', 'OEM_4'], + [0, 54 /* ScanCode.BracketRight */, 'BracketRight', 94 /* KeyCode.BracketRight */, ']', 221, 'VK_OEM_6', ']', 'OEM_6'], + [0, 55 /* ScanCode.Backslash */, 'Backslash', 93 /* KeyCode.Backslash */, '\\', 220, 'VK_OEM_5', '\\', 'OEM_5'], + [0, 56 /* ScanCode.IntlHash */, 'IntlHash', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], // has been dropped from the w3c spec + [0, 57 /* ScanCode.Semicolon */, 'Semicolon', 85 /* KeyCode.Semicolon */, ';', 186, 'VK_OEM_1', ';', 'OEM_1'], + [0, 58 /* ScanCode.Quote */, 'Quote', 95 /* KeyCode.Quote */, '\'', 222, 'VK_OEM_7', '\'', 'OEM_7'], + [0, 59 /* ScanCode.Backquote */, 'Backquote', 91 /* KeyCode.Backquote */, '`', 192, 'VK_OEM_3', '`', 'OEM_3'], + [0, 60 /* ScanCode.Comma */, 'Comma', 87 /* KeyCode.Comma */, ',', 188, 'VK_OEM_COMMA', ',', 'OEM_COMMA'], + [0, 61 /* ScanCode.Period */, 'Period', 89 /* KeyCode.Period */, '.', 190, 'VK_OEM_PERIOD', '.', 'OEM_PERIOD'], + [0, 62 /* ScanCode.Slash */, 'Slash', 90 /* KeyCode.Slash */, '/', 191, 'VK_OEM_2', '/', 'OEM_2'], + [1, 63 /* ScanCode.CapsLock */, 'CapsLock', 8 /* KeyCode.CapsLock */, 'CapsLock', 20, 'VK_CAPITAL', empty, empty], + [1, 64 /* ScanCode.F1 */, 'F1', 59 /* KeyCode.F1 */, 'F1', 112, 'VK_F1', empty, empty], + [1, 65 /* ScanCode.F2 */, 'F2', 60 /* KeyCode.F2 */, 'F2', 113, 'VK_F2', empty, empty], + [1, 66 /* ScanCode.F3 */, 'F3', 61 /* KeyCode.F3 */, 'F3', 114, 'VK_F3', empty, empty], + [1, 67 /* ScanCode.F4 */, 'F4', 62 /* KeyCode.F4 */, 'F4', 115, 'VK_F4', empty, empty], + [1, 68 /* ScanCode.F5 */, 'F5', 63 /* KeyCode.F5 */, 'F5', 116, 'VK_F5', empty, empty], + [1, 69 /* ScanCode.F6 */, 'F6', 64 /* KeyCode.F6 */, 'F6', 117, 'VK_F6', empty, empty], + [1, 70 /* ScanCode.F7 */, 'F7', 65 /* KeyCode.F7 */, 'F7', 118, 'VK_F7', empty, empty], + [1, 71 /* ScanCode.F8 */, 'F8', 66 /* KeyCode.F8 */, 'F8', 119, 'VK_F8', empty, empty], + [1, 72 /* ScanCode.F9 */, 'F9', 67 /* KeyCode.F9 */, 'F9', 120, 'VK_F9', empty, empty], + [1, 73 /* ScanCode.F10 */, 'F10', 68 /* KeyCode.F10 */, 'F10', 121, 'VK_F10', empty, empty], + [1, 74 /* ScanCode.F11 */, 'F11', 69 /* KeyCode.F11 */, 'F11', 122, 'VK_F11', empty, empty], + [1, 75 /* ScanCode.F12 */, 'F12', 70 /* KeyCode.F12 */, 'F12', 123, 'VK_F12', empty, empty], + [1, 76 /* ScanCode.PrintScreen */, 'PrintScreen', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 77 /* ScanCode.ScrollLock */, 'ScrollLock', 84 /* KeyCode.ScrollLock */, 'ScrollLock', 145, 'VK_SCROLL', empty, empty], + [1, 78 /* ScanCode.Pause */, 'Pause', 7 /* KeyCode.PauseBreak */, 'PauseBreak', 19, 'VK_PAUSE', empty, empty], + [1, 79 /* ScanCode.Insert */, 'Insert', 19 /* KeyCode.Insert */, 'Insert', 45, 'VK_INSERT', empty, empty], + [1, 80 /* ScanCode.Home */, 'Home', 14 /* KeyCode.Home */, 'Home', 36, 'VK_HOME', empty, empty], + [1, 81 /* ScanCode.PageUp */, 'PageUp', 11 /* KeyCode.PageUp */, 'PageUp', 33, 'VK_PRIOR', empty, empty], + [1, 82 /* ScanCode.Delete */, 'Delete', 20 /* KeyCode.Delete */, 'Delete', 46, 'VK_DELETE', empty, empty], + [1, 83 /* ScanCode.End */, 'End', 13 /* KeyCode.End */, 'End', 35, 'VK_END', empty, empty], + [1, 84 /* ScanCode.PageDown */, 'PageDown', 12 /* KeyCode.PageDown */, 'PageDown', 34, 'VK_NEXT', empty, empty], + [1, 85 /* ScanCode.ArrowRight */, 'ArrowRight', 17 /* KeyCode.RightArrow */, 'RightArrow', 39, 'VK_RIGHT', 'Right', empty], + [1, 86 /* ScanCode.ArrowLeft */, 'ArrowLeft', 15 /* KeyCode.LeftArrow */, 'LeftArrow', 37, 'VK_LEFT', 'Left', empty], + [1, 87 /* ScanCode.ArrowDown */, 'ArrowDown', 18 /* KeyCode.DownArrow */, 'DownArrow', 40, 'VK_DOWN', 'Down', empty], + [1, 88 /* ScanCode.ArrowUp */, 'ArrowUp', 16 /* KeyCode.UpArrow */, 'UpArrow', 38, 'VK_UP', 'Up', empty], + [1, 89 /* ScanCode.NumLock */, 'NumLock', 83 /* KeyCode.NumLock */, 'NumLock', 144, 'VK_NUMLOCK', empty, empty], + [1, 90 /* ScanCode.NumpadDivide */, 'NumpadDivide', 113 /* KeyCode.NumpadDivide */, 'NumPad_Divide', 111, 'VK_DIVIDE', empty, empty], + [1, 91 /* ScanCode.NumpadMultiply */, 'NumpadMultiply', 108 /* KeyCode.NumpadMultiply */, 'NumPad_Multiply', 106, 'VK_MULTIPLY', empty, empty], + [1, 92 /* ScanCode.NumpadSubtract */, 'NumpadSubtract', 111 /* KeyCode.NumpadSubtract */, 'NumPad_Subtract', 109, 'VK_SUBTRACT', empty, empty], + [1, 93 /* ScanCode.NumpadAdd */, 'NumpadAdd', 109 /* KeyCode.NumpadAdd */, 'NumPad_Add', 107, 'VK_ADD', empty, empty], + [1, 94 /* ScanCode.NumpadEnter */, 'NumpadEnter', 3 /* KeyCode.Enter */, empty, 0, empty, empty, empty], + [1, 95 /* ScanCode.Numpad1 */, 'Numpad1', 99 /* KeyCode.Numpad1 */, 'NumPad1', 97, 'VK_NUMPAD1', empty, empty], + [1, 96 /* ScanCode.Numpad2 */, 'Numpad2', 100 /* KeyCode.Numpad2 */, 'NumPad2', 98, 'VK_NUMPAD2', empty, empty], + [1, 97 /* ScanCode.Numpad3 */, 'Numpad3', 101 /* KeyCode.Numpad3 */, 'NumPad3', 99, 'VK_NUMPAD3', empty, empty], + [1, 98 /* ScanCode.Numpad4 */, 'Numpad4', 102 /* KeyCode.Numpad4 */, 'NumPad4', 100, 'VK_NUMPAD4', empty, empty], + [1, 99 /* ScanCode.Numpad5 */, 'Numpad5', 103 /* KeyCode.Numpad5 */, 'NumPad5', 101, 'VK_NUMPAD5', empty, empty], + [1, 100 /* ScanCode.Numpad6 */, 'Numpad6', 104 /* KeyCode.Numpad6 */, 'NumPad6', 102, 'VK_NUMPAD6', empty, empty], + [1, 101 /* ScanCode.Numpad7 */, 'Numpad7', 105 /* KeyCode.Numpad7 */, 'NumPad7', 103, 'VK_NUMPAD7', empty, empty], + [1, 102 /* ScanCode.Numpad8 */, 'Numpad8', 106 /* KeyCode.Numpad8 */, 'NumPad8', 104, 'VK_NUMPAD8', empty, empty], + [1, 103 /* ScanCode.Numpad9 */, 'Numpad9', 107 /* KeyCode.Numpad9 */, 'NumPad9', 105, 'VK_NUMPAD9', empty, empty], + [1, 104 /* ScanCode.Numpad0 */, 'Numpad0', 98 /* KeyCode.Numpad0 */, 'NumPad0', 96, 'VK_NUMPAD0', empty, empty], + [1, 105 /* ScanCode.NumpadDecimal */, 'NumpadDecimal', 112 /* KeyCode.NumpadDecimal */, 'NumPad_Decimal', 110, 'VK_DECIMAL', empty, empty], + [0, 106 /* ScanCode.IntlBackslash */, 'IntlBackslash', 97 /* KeyCode.IntlBackslash */, 'OEM_102', 226, 'VK_OEM_102', empty, empty], + [1, 107 /* ScanCode.ContextMenu */, 'ContextMenu', 58 /* KeyCode.ContextMenu */, 'ContextMenu', 93, empty, empty, empty], + [1, 108 /* ScanCode.Power */, 'Power', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 109 /* ScanCode.NumpadEqual */, 'NumpadEqual', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 110 /* ScanCode.F13 */, 'F13', 71 /* KeyCode.F13 */, 'F13', 124, 'VK_F13', empty, empty], + [1, 111 /* ScanCode.F14 */, 'F14', 72 /* KeyCode.F14 */, 'F14', 125, 'VK_F14', empty, empty], + [1, 112 /* ScanCode.F15 */, 'F15', 73 /* KeyCode.F15 */, 'F15', 126, 'VK_F15', empty, empty], + [1, 113 /* ScanCode.F16 */, 'F16', 74 /* KeyCode.F16 */, 'F16', 127, 'VK_F16', empty, empty], + [1, 114 /* ScanCode.F17 */, 'F17', 75 /* KeyCode.F17 */, 'F17', 128, 'VK_F17', empty, empty], + [1, 115 /* ScanCode.F18 */, 'F18', 76 /* KeyCode.F18 */, 'F18', 129, 'VK_F18', empty, empty], + [1, 116 /* ScanCode.F19 */, 'F19', 77 /* KeyCode.F19 */, 'F19', 130, 'VK_F19', empty, empty], + [1, 117 /* ScanCode.F20 */, 'F20', 78 /* KeyCode.F20 */, 'F20', 131, 'VK_F20', empty, empty], + [1, 118 /* ScanCode.F21 */, 'F21', 79 /* KeyCode.F21 */, 'F21', 132, 'VK_F21', empty, empty], + [1, 119 /* ScanCode.F22 */, 'F22', 80 /* KeyCode.F22 */, 'F22', 133, 'VK_F22', empty, empty], + [1, 120 /* ScanCode.F23 */, 'F23', 81 /* KeyCode.F23 */, 'F23', 134, 'VK_F23', empty, empty], + [1, 121 /* ScanCode.F24 */, 'F24', 82 /* KeyCode.F24 */, 'F24', 135, 'VK_F24', empty, empty], + [1, 122 /* ScanCode.Open */, 'Open', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 123 /* ScanCode.Help */, 'Help', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 124 /* ScanCode.Select */, 'Select', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 125 /* ScanCode.Again */, 'Again', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 126 /* ScanCode.Undo */, 'Undo', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 127 /* ScanCode.Cut */, 'Cut', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 128 /* ScanCode.Copy */, 'Copy', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 129 /* ScanCode.Paste */, 'Paste', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 130 /* ScanCode.Find */, 'Find', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 131 /* ScanCode.AudioVolumeMute */, 'AudioVolumeMute', 117 /* KeyCode.AudioVolumeMute */, 'AudioVolumeMute', 173, 'VK_VOLUME_MUTE', empty, empty], + [1, 132 /* ScanCode.AudioVolumeUp */, 'AudioVolumeUp', 118 /* KeyCode.AudioVolumeUp */, 'AudioVolumeUp', 175, 'VK_VOLUME_UP', empty, empty], + [1, 133 /* ScanCode.AudioVolumeDown */, 'AudioVolumeDown', 119 /* KeyCode.AudioVolumeDown */, 'AudioVolumeDown', 174, 'VK_VOLUME_DOWN', empty, empty], + [1, 134 /* ScanCode.NumpadComma */, 'NumpadComma', 110 /* KeyCode.NUMPAD_SEPARATOR */, 'NumPad_Separator', 108, 'VK_SEPARATOR', empty, empty], + [0, 135 /* ScanCode.IntlRo */, 'IntlRo', 115 /* KeyCode.ABNT_C1 */, 'ABNT_C1', 193, 'VK_ABNT_C1', empty, empty], + [1, 136 /* ScanCode.KanaMode */, 'KanaMode', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [0, 137 /* ScanCode.IntlYen */, 'IntlYen', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 138 /* ScanCode.Convert */, 'Convert', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 139 /* ScanCode.NonConvert */, 'NonConvert', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 140 /* ScanCode.Lang1 */, 'Lang1', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 141 /* ScanCode.Lang2 */, 'Lang2', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 142 /* ScanCode.Lang3 */, 'Lang3', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 143 /* ScanCode.Lang4 */, 'Lang4', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 144 /* ScanCode.Lang5 */, 'Lang5', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 145 /* ScanCode.Abort */, 'Abort', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 146 /* ScanCode.Props */, 'Props', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 147 /* ScanCode.NumpadParenLeft */, 'NumpadParenLeft', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 148 /* ScanCode.NumpadParenRight */, 'NumpadParenRight', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 149 /* ScanCode.NumpadBackspace */, 'NumpadBackspace', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 150 /* ScanCode.NumpadMemoryStore */, 'NumpadMemoryStore', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 151 /* ScanCode.NumpadMemoryRecall */, 'NumpadMemoryRecall', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 152 /* ScanCode.NumpadMemoryClear */, 'NumpadMemoryClear', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 153 /* ScanCode.NumpadMemoryAdd */, 'NumpadMemoryAdd', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 154 /* ScanCode.NumpadMemorySubtract */, 'NumpadMemorySubtract', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 155 /* ScanCode.NumpadClear */, 'NumpadClear', 131 /* KeyCode.Clear */, 'Clear', 12, 'VK_CLEAR', empty, empty], + [1, 156 /* ScanCode.NumpadClearEntry */, 'NumpadClearEntry', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 0 /* ScanCode.None */, empty, 5 /* KeyCode.Ctrl */, 'Ctrl', 17, 'VK_CONTROL', empty, empty], + [1, 0 /* ScanCode.None */, empty, 4 /* KeyCode.Shift */, 'Shift', 16, 'VK_SHIFT', empty, empty], + [1, 0 /* ScanCode.None */, empty, 6 /* KeyCode.Alt */, 'Alt', 18, 'VK_MENU', empty, empty], + [1, 0 /* ScanCode.None */, empty, 57 /* KeyCode.Meta */, 'Meta', 91, 'VK_COMMAND', empty, empty], + [1, 157 /* ScanCode.ControlLeft */, 'ControlLeft', 5 /* KeyCode.Ctrl */, empty, 0, 'VK_LCONTROL', empty, empty], + [1, 158 /* ScanCode.ShiftLeft */, 'ShiftLeft', 4 /* KeyCode.Shift */, empty, 0, 'VK_LSHIFT', empty, empty], + [1, 159 /* ScanCode.AltLeft */, 'AltLeft', 6 /* KeyCode.Alt */, empty, 0, 'VK_LMENU', empty, empty], + [1, 160 /* ScanCode.MetaLeft */, 'MetaLeft', 57 /* KeyCode.Meta */, empty, 0, 'VK_LWIN', empty, empty], + [1, 161 /* ScanCode.ControlRight */, 'ControlRight', 5 /* KeyCode.Ctrl */, empty, 0, 'VK_RCONTROL', empty, empty], + [1, 162 /* ScanCode.ShiftRight */, 'ShiftRight', 4 /* KeyCode.Shift */, empty, 0, 'VK_RSHIFT', empty, empty], + [1, 163 /* ScanCode.AltRight */, 'AltRight', 6 /* KeyCode.Alt */, empty, 0, 'VK_RMENU', empty, empty], + [1, 164 /* ScanCode.MetaRight */, 'MetaRight', 57 /* KeyCode.Meta */, empty, 0, 'VK_RWIN', empty, empty], + [1, 165 /* ScanCode.BrightnessUp */, 'BrightnessUp', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 166 /* ScanCode.BrightnessDown */, 'BrightnessDown', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 167 /* ScanCode.MediaPlay */, 'MediaPlay', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 168 /* ScanCode.MediaRecord */, 'MediaRecord', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 169 /* ScanCode.MediaFastForward */, 'MediaFastForward', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 170 /* ScanCode.MediaRewind */, 'MediaRewind', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 171 /* ScanCode.MediaTrackNext */, 'MediaTrackNext', 124 /* KeyCode.MediaTrackNext */, 'MediaTrackNext', 176, 'VK_MEDIA_NEXT_TRACK', empty, empty], + [1, 172 /* ScanCode.MediaTrackPrevious */, 'MediaTrackPrevious', 125 /* KeyCode.MediaTrackPrevious */, 'MediaTrackPrevious', 177, 'VK_MEDIA_PREV_TRACK', empty, empty], + [1, 173 /* ScanCode.MediaStop */, 'MediaStop', 126 /* KeyCode.MediaStop */, 'MediaStop', 178, 'VK_MEDIA_STOP', empty, empty], + [1, 174 /* ScanCode.Eject */, 'Eject', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 175 /* ScanCode.MediaPlayPause */, 'MediaPlayPause', 127 /* KeyCode.MediaPlayPause */, 'MediaPlayPause', 179, 'VK_MEDIA_PLAY_PAUSE', empty, empty], + [1, 176 /* ScanCode.MediaSelect */, 'MediaSelect', 128 /* KeyCode.LaunchMediaPlayer */, 'LaunchMediaPlayer', 181, 'VK_MEDIA_LAUNCH_MEDIA_SELECT', empty, empty], + [1, 177 /* ScanCode.LaunchMail */, 'LaunchMail', 129 /* KeyCode.LaunchMail */, 'LaunchMail', 180, 'VK_MEDIA_LAUNCH_MAIL', empty, empty], + [1, 178 /* ScanCode.LaunchApp2 */, 'LaunchApp2', 130 /* KeyCode.LaunchApp2 */, 'LaunchApp2', 183, 'VK_MEDIA_LAUNCH_APP2', empty, empty], + [1, 179 /* ScanCode.LaunchApp1 */, 'LaunchApp1', 0 /* KeyCode.Unknown */, empty, 0, 'VK_MEDIA_LAUNCH_APP1', empty, empty], + [1, 180 /* ScanCode.SelectTask */, 'SelectTask', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 181 /* ScanCode.LaunchScreenSaver */, 'LaunchScreenSaver', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 182 /* ScanCode.BrowserSearch */, 'BrowserSearch', 120 /* KeyCode.BrowserSearch */, 'BrowserSearch', 170, 'VK_BROWSER_SEARCH', empty, empty], + [1, 183 /* ScanCode.BrowserHome */, 'BrowserHome', 121 /* KeyCode.BrowserHome */, 'BrowserHome', 172, 'VK_BROWSER_HOME', empty, empty], + [1, 184 /* ScanCode.BrowserBack */, 'BrowserBack', 122 /* KeyCode.BrowserBack */, 'BrowserBack', 166, 'VK_BROWSER_BACK', empty, empty], + [1, 185 /* ScanCode.BrowserForward */, 'BrowserForward', 123 /* KeyCode.BrowserForward */, 'BrowserForward', 167, 'VK_BROWSER_FORWARD', empty, empty], + [1, 186 /* ScanCode.BrowserStop */, 'BrowserStop', 0 /* KeyCode.Unknown */, empty, 0, 'VK_BROWSER_STOP', empty, empty], + [1, 187 /* ScanCode.BrowserRefresh */, 'BrowserRefresh', 0 /* KeyCode.Unknown */, empty, 0, 'VK_BROWSER_REFRESH', empty, empty], + [1, 188 /* ScanCode.BrowserFavorites */, 'BrowserFavorites', 0 /* KeyCode.Unknown */, empty, 0, 'VK_BROWSER_FAVORITES', empty, empty], + [1, 189 /* ScanCode.ZoomToggle */, 'ZoomToggle', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 190 /* ScanCode.MailReply */, 'MailReply', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 191 /* ScanCode.MailForward */, 'MailForward', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + [1, 192 /* ScanCode.MailSend */, 'MailSend', 0 /* KeyCode.Unknown */, empty, 0, empty, empty, empty], + // See https://lists.w3.org/Archives/Public/www-dom/2010JulSep/att-0182/keyCode-spec.html + // If an Input Method Editor is processing key input and the event is keydown, return 229. + [1, 0 /* ScanCode.None */, empty, 114 /* KeyCode.KEY_IN_COMPOSITION */, 'KeyInComposition', 229, empty, empty, empty], + [1, 0 /* ScanCode.None */, empty, 116 /* KeyCode.ABNT_C2 */, 'ABNT_C2', 194, 'VK_ABNT_C2', empty, empty], + [1, 0 /* ScanCode.None */, empty, 96 /* KeyCode.OEM_8 */, 'OEM_8', 223, 'VK_OEM_8', empty, empty], + [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_KANA', empty, empty], + [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_HANGUL', empty, empty], + [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_JUNJA', empty, empty], + [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_FINAL', empty, empty], + [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_HANJA', empty, empty], + [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_KANJI', empty, empty], + [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_CONVERT', empty, empty], + [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_NONCONVERT', empty, empty], + [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_ACCEPT', empty, empty], + [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_MODECHANGE', empty, empty], + [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_SELECT', empty, empty], + [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_PRINT', empty, empty], + [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_EXECUTE', empty, empty], + [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_SNAPSHOT', empty, empty], + [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_HELP', empty, empty], + [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_APPS', empty, empty], + [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_PROCESSKEY', empty, empty], + [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_PACKET', empty, empty], + [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_DBE_SBCSCHAR', empty, empty], + [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_DBE_DBCSCHAR', empty, empty], + [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_ATTN', empty, empty], + [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_CRSEL', empty, empty], + [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_EXSEL', empty, empty], + [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_EREOF', empty, empty], + [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_PLAY', empty, empty], + [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_ZOOM', empty, empty], + [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_NONAME', empty, empty], + [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_PA1', empty, empty], + [1, 0 /* ScanCode.None */, empty, 0 /* KeyCode.Unknown */, empty, 0, 'VK_OEM_CLEAR', empty, empty], + ]; + const seenKeyCode = []; + const seenScanCode = []; + for (const mapping of mappings) { + const [immutable, scanCode, scanCodeStr, keyCode, keyCodeStr, eventKeyCode, vkey, usUserSettingsLabel, generalUserSettingsLabel] = mapping; + if (!seenScanCode[scanCode]) { + seenScanCode[scanCode] = true; + scanCodeStrToInt[scanCodeStr] = scanCode; + scanCodeLowerCaseStrToInt[scanCodeStr.toLowerCase()] = scanCode; + } + if (!seenKeyCode[keyCode]) { + seenKeyCode[keyCode] = true; + if (!keyCodeStr) { + throw new Error(`String representation missing for key code ${keyCode} around scan code ${scanCodeStr}`); + } + uiMap.define(keyCode, keyCodeStr); + userSettingsUSMap.define(keyCode, usUserSettingsLabel || keyCodeStr); + userSettingsGeneralMap.define(keyCode, generalUserSettingsLabel || usUserSettingsLabel || keyCodeStr); + } + if (eventKeyCode) { + EVENT_KEY_CODE_MAP[eventKeyCode] = keyCode; + } + } +})(); +var KeyCodeUtils; +(function (KeyCodeUtils) { + function toString(keyCode) { + return uiMap.keyCodeToStr(keyCode); + } + KeyCodeUtils.toString = toString; + function fromString(key) { + return uiMap.strToKeyCode(key); + } + KeyCodeUtils.fromString = fromString; + function toUserSettingsUS(keyCode) { + return userSettingsUSMap.keyCodeToStr(keyCode); + } + KeyCodeUtils.toUserSettingsUS = toUserSettingsUS; + function toUserSettingsGeneral(keyCode) { + return userSettingsGeneralMap.keyCodeToStr(keyCode); + } + KeyCodeUtils.toUserSettingsGeneral = toUserSettingsGeneral; + function fromUserSettings(key) { + return userSettingsUSMap.strToKeyCode(key) || userSettingsGeneralMap.strToKeyCode(key); + } + KeyCodeUtils.fromUserSettings = fromUserSettings; + function toElectronAccelerator(keyCode) { + if (keyCode >= 98 /* KeyCode.Numpad0 */ && keyCode <= 113 /* KeyCode.NumpadDivide */) { + // [Electron Accelerators] Electron is able to parse numpad keys, but unfortunately it + // renders them just as regular keys in menus. For example, num0 is rendered as "0", + // numdiv is rendered as "/", numsub is rendered as "-". + // + // This can lead to incredible confusion, as it makes numpad based keybindings indistinguishable + // from keybindings based on regular keys. + // + // We therefore need to fall back to custom rendering for numpad keys. + return null; + } + switch (keyCode) { + case 16 /* KeyCode.UpArrow */: + return 'Up'; + case 18 /* KeyCode.DownArrow */: + return 'Down'; + case 15 /* KeyCode.LeftArrow */: + return 'Left'; + case 17 /* KeyCode.RightArrow */: + return 'Right'; + } + return uiMap.keyCodeToStr(keyCode); + } + KeyCodeUtils.toElectronAccelerator = toElectronAccelerator; +})(KeyCodeUtils || (KeyCodeUtils = {})); +function KeyChord(firstPart, secondPart) { + const chordPart = ((secondPart & 0x0000FFFF) << 16) >>> 0; + return (firstPart | chordPart) >>> 0; +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +/** + * A selection in the editor. + * The selection is a range that has an orientation. + */ +class Selection extends Range$b { + constructor(selectionStartLineNumber, selectionStartColumn, positionLineNumber, positionColumn) { + super(selectionStartLineNumber, selectionStartColumn, positionLineNumber, positionColumn); + this.selectionStartLineNumber = selectionStartLineNumber; + this.selectionStartColumn = selectionStartColumn; + this.positionLineNumber = positionLineNumber; + this.positionColumn = positionColumn; + } + /** + * Transform to a human-readable representation. + */ + toString() { + return '[' + this.selectionStartLineNumber + ',' + this.selectionStartColumn + ' -> ' + this.positionLineNumber + ',' + this.positionColumn + ']'; + } + /** + * Test if equals other selection. + */ + equalsSelection(other) { + return (Selection.selectionsEqual(this, other)); + } + /** + * Test if the two selections are equal. + */ + static selectionsEqual(a, b) { + return (a.selectionStartLineNumber === b.selectionStartLineNumber && + a.selectionStartColumn === b.selectionStartColumn && + a.positionLineNumber === b.positionLineNumber && + a.positionColumn === b.positionColumn); + } + /** + * Get directions (LTR or RTL). + */ + getDirection() { + if (this.selectionStartLineNumber === this.startLineNumber && this.selectionStartColumn === this.startColumn) { + return 0 /* SelectionDirection.LTR */; + } + return 1 /* SelectionDirection.RTL */; + } + /** + * Create a new selection with a different `positionLineNumber` and `positionColumn`. + */ + setEndPosition(endLineNumber, endColumn) { + if (this.getDirection() === 0 /* SelectionDirection.LTR */) { + return new Selection(this.startLineNumber, this.startColumn, endLineNumber, endColumn); + } + return new Selection(endLineNumber, endColumn, this.startLineNumber, this.startColumn); + } + /** + * Get the position at `positionLineNumber` and `positionColumn`. + */ + getPosition() { + return new Position$2(this.positionLineNumber, this.positionColumn); + } + /** + * Get the position at the start of the selection. + */ + getSelectionStart() { + return new Position$2(this.selectionStartLineNumber, this.selectionStartColumn); + } + /** + * Create a new selection with a different `selectionStartLineNumber` and `selectionStartColumn`. + */ + setStartPosition(startLineNumber, startColumn) { + if (this.getDirection() === 0 /* SelectionDirection.LTR */) { + return new Selection(startLineNumber, startColumn, this.endLineNumber, this.endColumn); + } + return new Selection(this.endLineNumber, this.endColumn, startLineNumber, startColumn); + } + // ---- + /** + * Create a `Selection` from one or two positions + */ + static fromPositions(start, end = start) { + return new Selection(start.lineNumber, start.column, end.lineNumber, end.column); + } + /** + * Creates a `Selection` from a range, given a direction. + */ + static fromRange(range, direction) { + if (direction === 0 /* SelectionDirection.LTR */) { + return new Selection(range.startLineNumber, range.startColumn, range.endLineNumber, range.endColumn); + } + else { + return new Selection(range.endLineNumber, range.endColumn, range.startLineNumber, range.startColumn); + } + } + /** + * Create a `Selection` from an `ISelection`. + */ + static liftSelection(sel) { + return new Selection(sel.selectionStartLineNumber, sel.selectionStartColumn, sel.positionLineNumber, sel.positionColumn); + } + /** + * `a` equals `b`. + */ + static selectionsArrEqual(a, b) { + if (a && !b || !a && b) { + return false; + } + if (!a && !b) { + return true; + } + if (a.length !== b.length) { + return false; + } + for (let i = 0, len = a.length; i < len; i++) { + if (!this.selectionsEqual(a[i], b[i])) { + return false; + } + } + return true; + } + /** + * Test if `obj` is an `ISelection`. + */ + static isISelection(obj) { + return (obj + && (typeof obj.selectionStartLineNumber === 'number') + && (typeof obj.selectionStartColumn === 'number') + && (typeof obj.positionLineNumber === 'number') + && (typeof obj.positionColumn === 'number')); + } + /** + * Create with a direction. + */ + static createWithDirection(startLineNumber, startColumn, endLineNumber, endColumn, direction) { + if (direction === 0 /* SelectionDirection.LTR */) { + return new Selection(startLineNumber, startColumn, endLineNumber, endColumn); + } + return new Selection(endLineNumber, endColumn, startLineNumber, startColumn); + } +} + +const _codiconFontCharacters = Object.create(null); +function register$T(id, fontCharacter) { + if (isString$2(fontCharacter)) { + const val = _codiconFontCharacters[fontCharacter]; + if (val === undefined) { + throw new Error(`${id} references an unknown codicon: ${fontCharacter}`); + } + fontCharacter = val; + } + _codiconFontCharacters[id] = fontCharacter; + return { id }; +} +/** + * The Codicon library is a set of default icons that are built-in in VS Code. + * + * In the product (outside of base) Codicons should only be used as defaults. In order to have all icons in VS Code + * themeable, component should define new, UI component specific icons using `iconRegistry.registerIcon`. + * In that call a Codicon can be named as default. + */ +const Codicon = { + // built-in icons, with image name + add: register$T('add', 0xea60), + plus: register$T('plus', 0xea60), + gistNew: register$T('gist-new', 0xea60), + repoCreate: register$T('repo-create', 0xea60), + lightbulb: register$T('lightbulb', 0xea61), + lightBulb: register$T('light-bulb', 0xea61), + repo: register$T('repo', 0xea62), + repoDelete: register$T('repo-delete', 0xea62), + gistFork: register$T('gist-fork', 0xea63), + repoForked: register$T('repo-forked', 0xea63), + gitPullRequest: register$T('git-pull-request', 0xea64), + gitPullRequestAbandoned: register$T('git-pull-request-abandoned', 0xea64), + recordKeys: register$T('record-keys', 0xea65), + keyboard: register$T('keyboard', 0xea65), + tag: register$T('tag', 0xea66), + tagAdd: register$T('tag-add', 0xea66), + tagRemove: register$T('tag-remove', 0xea66), + gitPullRequestLabel: register$T('git-pull-request-label', 0xea66), + person: register$T('person', 0xea67), + personFollow: register$T('person-follow', 0xea67), + personOutline: register$T('person-outline', 0xea67), + personFilled: register$T('person-filled', 0xea67), + gitBranch: register$T('git-branch', 0xea68), + gitBranchCreate: register$T('git-branch-create', 0xea68), + gitBranchDelete: register$T('git-branch-delete', 0xea68), + sourceControl: register$T('source-control', 0xea68), + mirror: register$T('mirror', 0xea69), + mirrorPublic: register$T('mirror-public', 0xea69), + star: register$T('star', 0xea6a), + starAdd: register$T('star-add', 0xea6a), + starDelete: register$T('star-delete', 0xea6a), + starEmpty: register$T('star-empty', 0xea6a), + comment: register$T('comment', 0xea6b), + commentAdd: register$T('comment-add', 0xea6b), + alert: register$T('alert', 0xea6c), + warning: register$T('warning', 0xea6c), + search: register$T('search', 0xea6d), + searchSave: register$T('search-save', 0xea6d), + logOut: register$T('log-out', 0xea6e), + signOut: register$T('sign-out', 0xea6e), + logIn: register$T('log-in', 0xea6f), + signIn: register$T('sign-in', 0xea6f), + eye: register$T('eye', 0xea70), + eyeUnwatch: register$T('eye-unwatch', 0xea70), + eyeWatch: register$T('eye-watch', 0xea70), + circleFilled: register$T('circle-filled', 0xea71), + primitiveDot: register$T('primitive-dot', 0xea71), + closeDirty: register$T('close-dirty', 0xea71), + debugBreakpoint: register$T('debug-breakpoint', 0xea71), + debugBreakpointDisabled: register$T('debug-breakpoint-disabled', 0xea71), + debugHint: register$T('debug-hint', 0xea71), + primitiveSquare: register$T('primitive-square', 0xea72), + edit: register$T('edit', 0xea73), + pencil: register$T('pencil', 0xea73), + info: register$T('info', 0xea74), + issueOpened: register$T('issue-opened', 0xea74), + gistPrivate: register$T('gist-private', 0xea75), + gitForkPrivate: register$T('git-fork-private', 0xea75), + lock: register$T('lock', 0xea75), + mirrorPrivate: register$T('mirror-private', 0xea75), + close: register$T('close', 0xea76), + removeClose: register$T('remove-close', 0xea76), + x: register$T('x', 0xea76), + repoSync: register$T('repo-sync', 0xea77), + sync: register$T('sync', 0xea77), + clone: register$T('clone', 0xea78), + desktopDownload: register$T('desktop-download', 0xea78), + beaker: register$T('beaker', 0xea79), + microscope: register$T('microscope', 0xea79), + vm: register$T('vm', 0xea7a), + deviceDesktop: register$T('device-desktop', 0xea7a), + file: register$T('file', 0xea7b), + fileText: register$T('file-text', 0xea7b), + more: register$T('more', 0xea7c), + ellipsis: register$T('ellipsis', 0xea7c), + kebabHorizontal: register$T('kebab-horizontal', 0xea7c), + mailReply: register$T('mail-reply', 0xea7d), + reply: register$T('reply', 0xea7d), + organization: register$T('organization', 0xea7e), + organizationFilled: register$T('organization-filled', 0xea7e), + organizationOutline: register$T('organization-outline', 0xea7e), + newFile: register$T('new-file', 0xea7f), + fileAdd: register$T('file-add', 0xea7f), + newFolder: register$T('new-folder', 0xea80), + fileDirectoryCreate: register$T('file-directory-create', 0xea80), + trash: register$T('trash', 0xea81), + trashcan: register$T('trashcan', 0xea81), + history: register$T('history', 0xea82), + clock: register$T('clock', 0xea82), + folder: register$T('folder', 0xea83), + fileDirectory: register$T('file-directory', 0xea83), + symbolFolder: register$T('symbol-folder', 0xea83), + logoGithub: register$T('logo-github', 0xea84), + markGithub: register$T('mark-github', 0xea84), + github: register$T('github', 0xea84), + terminal: register$T('terminal', 0xea85), + console: register$T('console', 0xea85), + repl: register$T('repl', 0xea85), + zap: register$T('zap', 0xea86), + symbolEvent: register$T('symbol-event', 0xea86), + error: register$T('error', 0xea87), + stop: register$T('stop', 0xea87), + variable: register$T('variable', 0xea88), + symbolVariable: register$T('symbol-variable', 0xea88), + array: register$T('array', 0xea8a), + symbolArray: register$T('symbol-array', 0xea8a), + symbolModule: register$T('symbol-module', 0xea8b), + symbolPackage: register$T('symbol-package', 0xea8b), + symbolNamespace: register$T('symbol-namespace', 0xea8b), + symbolObject: register$T('symbol-object', 0xea8b), + symbolMethod: register$T('symbol-method', 0xea8c), + symbolFunction: register$T('symbol-function', 0xea8c), + symbolConstructor: register$T('symbol-constructor', 0xea8c), + symbolBoolean: register$T('symbol-boolean', 0xea8f), + symbolNull: register$T('symbol-null', 0xea8f), + symbolNumeric: register$T('symbol-numeric', 0xea90), + symbolNumber: register$T('symbol-number', 0xea90), + symbolStructure: register$T('symbol-structure', 0xea91), + symbolStruct: register$T('symbol-struct', 0xea91), + symbolParameter: register$T('symbol-parameter', 0xea92), + symbolTypeParameter: register$T('symbol-type-parameter', 0xea92), + symbolKey: register$T('symbol-key', 0xea93), + symbolText: register$T('symbol-text', 0xea93), + symbolReference: register$T('symbol-reference', 0xea94), + goToFile: register$T('go-to-file', 0xea94), + symbolEnum: register$T('symbol-enum', 0xea95), + symbolValue: register$T('symbol-value', 0xea95), + symbolRuler: register$T('symbol-ruler', 0xea96), + symbolUnit: register$T('symbol-unit', 0xea96), + activateBreakpoints: register$T('activate-breakpoints', 0xea97), + archive: register$T('archive', 0xea98), + arrowBoth: register$T('arrow-both', 0xea99), + arrowDown: register$T('arrow-down', 0xea9a), + arrowLeft: register$T('arrow-left', 0xea9b), + arrowRight: register$T('arrow-right', 0xea9c), + arrowSmallDown: register$T('arrow-small-down', 0xea9d), + arrowSmallLeft: register$T('arrow-small-left', 0xea9e), + arrowSmallRight: register$T('arrow-small-right', 0xea9f), + arrowSmallUp: register$T('arrow-small-up', 0xeaa0), + arrowUp: register$T('arrow-up', 0xeaa1), + bell: register$T('bell', 0xeaa2), + bold: register$T('bold', 0xeaa3), + book: register$T('book', 0xeaa4), + bookmark: register$T('bookmark', 0xeaa5), + debugBreakpointConditionalUnverified: register$T('debug-breakpoint-conditional-unverified', 0xeaa6), + debugBreakpointConditional: register$T('debug-breakpoint-conditional', 0xeaa7), + debugBreakpointConditionalDisabled: register$T('debug-breakpoint-conditional-disabled', 0xeaa7), + debugBreakpointDataUnverified: register$T('debug-breakpoint-data-unverified', 0xeaa8), + debugBreakpointData: register$T('debug-breakpoint-data', 0xeaa9), + debugBreakpointDataDisabled: register$T('debug-breakpoint-data-disabled', 0xeaa9), + debugBreakpointLogUnverified: register$T('debug-breakpoint-log-unverified', 0xeaaa), + debugBreakpointLog: register$T('debug-breakpoint-log', 0xeaab), + debugBreakpointLogDisabled: register$T('debug-breakpoint-log-disabled', 0xeaab), + briefcase: register$T('briefcase', 0xeaac), + broadcast: register$T('broadcast', 0xeaad), + browser: register$T('browser', 0xeaae), + bug: register$T('bug', 0xeaaf), + calendar: register$T('calendar', 0xeab0), + caseSensitive: register$T('case-sensitive', 0xeab1), + check: register$T('check', 0xeab2), + checklist: register$T('checklist', 0xeab3), + chevronDown: register$T('chevron-down', 0xeab4), + dropDownButton: register$T('drop-down-button', 0xeab4), + chevronLeft: register$T('chevron-left', 0xeab5), + chevronRight: register$T('chevron-right', 0xeab6), + chevronUp: register$T('chevron-up', 0xeab7), + chromeClose: register$T('chrome-close', 0xeab8), + chromeMaximize: register$T('chrome-maximize', 0xeab9), + chromeMinimize: register$T('chrome-minimize', 0xeaba), + chromeRestore: register$T('chrome-restore', 0xeabb), + circle: register$T('circle', 0xeabc), + circleOutline: register$T('circle-outline', 0xeabc), + debugBreakpointUnverified: register$T('debug-breakpoint-unverified', 0xeabc), + circleSlash: register$T('circle-slash', 0xeabd), + circuitBoard: register$T('circuit-board', 0xeabe), + clearAll: register$T('clear-all', 0xeabf), + clippy: register$T('clippy', 0xeac0), + closeAll: register$T('close-all', 0xeac1), + cloudDownload: register$T('cloud-download', 0xeac2), + cloudUpload: register$T('cloud-upload', 0xeac3), + code: register$T('code', 0xeac4), + collapseAll: register$T('collapse-all', 0xeac5), + colorMode: register$T('color-mode', 0xeac6), + commentDiscussion: register$T('comment-discussion', 0xeac7), + compareChanges: register$T('compare-changes', 0xeafd), + creditCard: register$T('credit-card', 0xeac9), + dash: register$T('dash', 0xeacc), + dashboard: register$T('dashboard', 0xeacd), + database: register$T('database', 0xeace), + debugContinue: register$T('debug-continue', 0xeacf), + debugDisconnect: register$T('debug-disconnect', 0xead0), + debugPause: register$T('debug-pause', 0xead1), + debugRestart: register$T('debug-restart', 0xead2), + debugStart: register$T('debug-start', 0xead3), + debugStepInto: register$T('debug-step-into', 0xead4), + debugStepOut: register$T('debug-step-out', 0xead5), + debugStepOver: register$T('debug-step-over', 0xead6), + debugStop: register$T('debug-stop', 0xead7), + debug: register$T('debug', 0xead8), + deviceCameraVideo: register$T('device-camera-video', 0xead9), + deviceCamera: register$T('device-camera', 0xeada), + deviceMobile: register$T('device-mobile', 0xeadb), + diffAdded: register$T('diff-added', 0xeadc), + diffIgnored: register$T('diff-ignored', 0xeadd), + diffModified: register$T('diff-modified', 0xeade), + diffRemoved: register$T('diff-removed', 0xeadf), + diffRenamed: register$T('diff-renamed', 0xeae0), + diff: register$T('diff', 0xeae1), + discard: register$T('discard', 0xeae2), + editorLayout: register$T('editor-layout', 0xeae3), + emptyWindow: register$T('empty-window', 0xeae4), + exclude: register$T('exclude', 0xeae5), + extensions: register$T('extensions', 0xeae6), + eyeClosed: register$T('eye-closed', 0xeae7), + fileBinary: register$T('file-binary', 0xeae8), + fileCode: register$T('file-code', 0xeae9), + fileMedia: register$T('file-media', 0xeaea), + filePdf: register$T('file-pdf', 0xeaeb), + fileSubmodule: register$T('file-submodule', 0xeaec), + fileSymlinkDirectory: register$T('file-symlink-directory', 0xeaed), + fileSymlinkFile: register$T('file-symlink-file', 0xeaee), + fileZip: register$T('file-zip', 0xeaef), + files: register$T('files', 0xeaf0), + filter: register$T('filter', 0xeaf1), + flame: register$T('flame', 0xeaf2), + foldDown: register$T('fold-down', 0xeaf3), + foldUp: register$T('fold-up', 0xeaf4), + fold: register$T('fold', 0xeaf5), + folderActive: register$T('folder-active', 0xeaf6), + folderOpened: register$T('folder-opened', 0xeaf7), + gear: register$T('gear', 0xeaf8), + gift: register$T('gift', 0xeaf9), + gistSecret: register$T('gist-secret', 0xeafa), + gist: register$T('gist', 0xeafb), + gitCommit: register$T('git-commit', 0xeafc), + gitCompare: register$T('git-compare', 0xeafd), + gitMerge: register$T('git-merge', 0xeafe), + githubAction: register$T('github-action', 0xeaff), + githubAlt: register$T('github-alt', 0xeb00), + globe: register$T('globe', 0xeb01), + grabber: register$T('grabber', 0xeb02), + graph: register$T('graph', 0xeb03), + gripper: register$T('gripper', 0xeb04), + heart: register$T('heart', 0xeb05), + home: register$T('home', 0xeb06), + horizontalRule: register$T('horizontal-rule', 0xeb07), + hubot: register$T('hubot', 0xeb08), + inbox: register$T('inbox', 0xeb09), + issueClosed: register$T('issue-closed', 0xeba4), + issueReopened: register$T('issue-reopened', 0xeb0b), + issues: register$T('issues', 0xeb0c), + italic: register$T('italic', 0xeb0d), + jersey: register$T('jersey', 0xeb0e), + json: register$T('json', 0xeb0f), + bracket: register$T('bracket', 0xeb0f), + kebabVertical: register$T('kebab-vertical', 0xeb10), + key: register$T('key', 0xeb11), + law: register$T('law', 0xeb12), + lightbulbAutofix: register$T('lightbulb-autofix', 0xeb13), + linkExternal: register$T('link-external', 0xeb14), + link: register$T('link', 0xeb15), + listOrdered: register$T('list-ordered', 0xeb16), + listUnordered: register$T('list-unordered', 0xeb17), + liveShare: register$T('live-share', 0xeb18), + loading: register$T('loading', 0xeb19), + location: register$T('location', 0xeb1a), + mailRead: register$T('mail-read', 0xeb1b), + mail: register$T('mail', 0xeb1c), + markdown: register$T('markdown', 0xeb1d), + megaphone: register$T('megaphone', 0xeb1e), + mention: register$T('mention', 0xeb1f), + milestone: register$T('milestone', 0xeb20), + gitPullRequestMilestone: register$T('git-pull-request-milestone', 0xeb20), + mortarBoard: register$T('mortar-board', 0xeb21), + move: register$T('move', 0xeb22), + multipleWindows: register$T('multiple-windows', 0xeb23), + mute: register$T('mute', 0xeb24), + noNewline: register$T('no-newline', 0xeb25), + note: register$T('note', 0xeb26), + octoface: register$T('octoface', 0xeb27), + openPreview: register$T('open-preview', 0xeb28), + package: register$T('package', 0xeb29), + paintcan: register$T('paintcan', 0xeb2a), + pin: register$T('pin', 0xeb2b), + play: register$T('play', 0xeb2c), + run: register$T('run', 0xeb2c), + plug: register$T('plug', 0xeb2d), + preserveCase: register$T('preserve-case', 0xeb2e), + preview: register$T('preview', 0xeb2f), + project: register$T('project', 0xeb30), + pulse: register$T('pulse', 0xeb31), + question: register$T('question', 0xeb32), + quote: register$T('quote', 0xeb33), + radioTower: register$T('radio-tower', 0xeb34), + reactions: register$T('reactions', 0xeb35), + references: register$T('references', 0xeb36), + refresh: register$T('refresh', 0xeb37), + regex: register$T('regex', 0xeb38), + remoteExplorer: register$T('remote-explorer', 0xeb39), + remote: register$T('remote', 0xeb3a), + remove: register$T('remove', 0xeb3b), + replaceAll: register$T('replace-all', 0xeb3c), + replace: register$T('replace', 0xeb3d), + repoClone: register$T('repo-clone', 0xeb3e), + repoForcePush: register$T('repo-force-push', 0xeb3f), + repoPull: register$T('repo-pull', 0xeb40), + repoPush: register$T('repo-push', 0xeb41), + report: register$T('report', 0xeb42), + requestChanges: register$T('request-changes', 0xeb43), + rocket: register$T('rocket', 0xeb44), + rootFolderOpened: register$T('root-folder-opened', 0xeb45), + rootFolder: register$T('root-folder', 0xeb46), + rss: register$T('rss', 0xeb47), + ruby: register$T('ruby', 0xeb48), + saveAll: register$T('save-all', 0xeb49), + saveAs: register$T('save-as', 0xeb4a), + save: register$T('save', 0xeb4b), + screenFull: register$T('screen-full', 0xeb4c), + screenNormal: register$T('screen-normal', 0xeb4d), + searchStop: register$T('search-stop', 0xeb4e), + server: register$T('server', 0xeb50), + settingsGear: register$T('settings-gear', 0xeb51), + settings: register$T('settings', 0xeb52), + shield: register$T('shield', 0xeb53), + smiley: register$T('smiley', 0xeb54), + sortPrecedence: register$T('sort-precedence', 0xeb55), + splitHorizontal: register$T('split-horizontal', 0xeb56), + splitVertical: register$T('split-vertical', 0xeb57), + squirrel: register$T('squirrel', 0xeb58), + starFull: register$T('star-full', 0xeb59), + starHalf: register$T('star-half', 0xeb5a), + symbolClass: register$T('symbol-class', 0xeb5b), + symbolColor: register$T('symbol-color', 0xeb5c), + symbolCustomColor: register$T('symbol-customcolor', 0xeb5c), + symbolConstant: register$T('symbol-constant', 0xeb5d), + symbolEnumMember: register$T('symbol-enum-member', 0xeb5e), + symbolField: register$T('symbol-field', 0xeb5f), + symbolFile: register$T('symbol-file', 0xeb60), + symbolInterface: register$T('symbol-interface', 0xeb61), + symbolKeyword: register$T('symbol-keyword', 0xeb62), + symbolMisc: register$T('symbol-misc', 0xeb63), + symbolOperator: register$T('symbol-operator', 0xeb64), + symbolProperty: register$T('symbol-property', 0xeb65), + wrench: register$T('wrench', 0xeb65), + wrenchSubaction: register$T('wrench-subaction', 0xeb65), + symbolSnippet: register$T('symbol-snippet', 0xeb66), + tasklist: register$T('tasklist', 0xeb67), + telescope: register$T('telescope', 0xeb68), + textSize: register$T('text-size', 0xeb69), + threeBars: register$T('three-bars', 0xeb6a), + thumbsdown: register$T('thumbsdown', 0xeb6b), + thumbsup: register$T('thumbsup', 0xeb6c), + tools: register$T('tools', 0xeb6d), + triangleDown: register$T('triangle-down', 0xeb6e), + triangleLeft: register$T('triangle-left', 0xeb6f), + triangleRight: register$T('triangle-right', 0xeb70), + triangleUp: register$T('triangle-up', 0xeb71), + twitter: register$T('twitter', 0xeb72), + unfold: register$T('unfold', 0xeb73), + unlock: register$T('unlock', 0xeb74), + unmute: register$T('unmute', 0xeb75), + unverified: register$T('unverified', 0xeb76), + verified: register$T('verified', 0xeb77), + versions: register$T('versions', 0xeb78), + vmActive: register$T('vm-active', 0xeb79), + vmOutline: register$T('vm-outline', 0xeb7a), + vmRunning: register$T('vm-running', 0xeb7b), + watch: register$T('watch', 0xeb7c), + whitespace: register$T('whitespace', 0xeb7d), + wholeWord: register$T('whole-word', 0xeb7e), + window: register$T('window', 0xeb7f), + wordWrap: register$T('word-wrap', 0xeb80), + zoomIn: register$T('zoom-in', 0xeb81), + zoomOut: register$T('zoom-out', 0xeb82), + listFilter: register$T('list-filter', 0xeb83), + listFlat: register$T('list-flat', 0xeb84), + listSelection: register$T('list-selection', 0xeb85), + selection: register$T('selection', 0xeb85), + listTree: register$T('list-tree', 0xeb86), + debugBreakpointFunctionUnverified: register$T('debug-breakpoint-function-unverified', 0xeb87), + debugBreakpointFunction: register$T('debug-breakpoint-function', 0xeb88), + debugBreakpointFunctionDisabled: register$T('debug-breakpoint-function-disabled', 0xeb88), + debugStackframeActive: register$T('debug-stackframe-active', 0xeb89), + circleSmallFilled: register$T('circle-small-filled', 0xeb8a), + debugStackframeDot: register$T('debug-stackframe-dot', 0xeb8a), + debugStackframe: register$T('debug-stackframe', 0xeb8b), + debugStackframeFocused: register$T('debug-stackframe-focused', 0xeb8b), + debugBreakpointUnsupported: register$T('debug-breakpoint-unsupported', 0xeb8c), + symbolString: register$T('symbol-string', 0xeb8d), + debugReverseContinue: register$T('debug-reverse-continue', 0xeb8e), + debugStepBack: register$T('debug-step-back', 0xeb8f), + debugRestartFrame: register$T('debug-restart-frame', 0xeb90), + callIncoming: register$T('call-incoming', 0xeb92), + callOutgoing: register$T('call-outgoing', 0xeb93), + menu: register$T('menu', 0xeb94), + expandAll: register$T('expand-all', 0xeb95), + feedback: register$T('feedback', 0xeb96), + gitPullRequestReviewer: register$T('git-pull-request-reviewer', 0xeb96), + groupByRefType: register$T('group-by-ref-type', 0xeb97), + ungroupByRefType: register$T('ungroup-by-ref-type', 0xeb98), + account: register$T('account', 0xeb99), + gitPullRequestAssignee: register$T('git-pull-request-assignee', 0xeb99), + bellDot: register$T('bell-dot', 0xeb9a), + debugConsole: register$T('debug-console', 0xeb9b), + library: register$T('library', 0xeb9c), + output: register$T('output', 0xeb9d), + runAll: register$T('run-all', 0xeb9e), + syncIgnored: register$T('sync-ignored', 0xeb9f), + pinned: register$T('pinned', 0xeba0), + githubInverted: register$T('github-inverted', 0xeba1), + debugAlt: register$T('debug-alt', 0xeb91), + serverProcess: register$T('server-process', 0xeba2), + serverEnvironment: register$T('server-environment', 0xeba3), + pass: register$T('pass', 0xeba4), + stopCircle: register$T('stop-circle', 0xeba5), + playCircle: register$T('play-circle', 0xeba6), + record: register$T('record', 0xeba7), + debugAltSmall: register$T('debug-alt-small', 0xeba8), + vmConnect: register$T('vm-connect', 0xeba9), + cloud: register$T('cloud', 0xebaa), + merge: register$T('merge', 0xebab), + exportIcon: register$T('export', 0xebac), + graphLeft: register$T('graph-left', 0xebad), + magnet: register$T('magnet', 0xebae), + notebook: register$T('notebook', 0xebaf), + redo: register$T('redo', 0xebb0), + checkAll: register$T('check-all', 0xebb1), + pinnedDirty: register$T('pinned-dirty', 0xebb2), + passFilled: register$T('pass-filled', 0xebb3), + circleLargeFilled: register$T('circle-large-filled', 0xebb4), + circleLarge: register$T('circle-large', 0xebb5), + circleLargeOutline: register$T('circle-large-outline', 0xebb5), + combine: register$T('combine', 0xebb6), + gather: register$T('gather', 0xebb6), + table: register$T('table', 0xebb7), + variableGroup: register$T('variable-group', 0xebb8), + typeHierarchy: register$T('type-hierarchy', 0xebb9), + typeHierarchySub: register$T('type-hierarchy-sub', 0xebba), + typeHierarchySuper: register$T('type-hierarchy-super', 0xebbb), + gitPullRequestCreate: register$T('git-pull-request-create', 0xebbc), + runAbove: register$T('run-above', 0xebbd), + runBelow: register$T('run-below', 0xebbe), + notebookTemplate: register$T('notebook-template', 0xebbf), + debugRerun: register$T('debug-rerun', 0xebc0), + workspaceTrusted: register$T('workspace-trusted', 0xebc1), + workspaceUntrusted: register$T('workspace-untrusted', 0xebc2), + workspaceUnspecified: register$T('workspace-unspecified', 0xebc3), + terminalCmd: register$T('terminal-cmd', 0xebc4), + terminalDebian: register$T('terminal-debian', 0xebc5), + terminalLinux: register$T('terminal-linux', 0xebc6), + terminalPowershell: register$T('terminal-powershell', 0xebc7), + terminalTmux: register$T('terminal-tmux', 0xebc8), + terminalUbuntu: register$T('terminal-ubuntu', 0xebc9), + terminalBash: register$T('terminal-bash', 0xebca), + arrowSwap: register$T('arrow-swap', 0xebcb), + copy: register$T('copy', 0xebcc), + personAdd: register$T('person-add', 0xebcd), + filterFilled: register$T('filter-filled', 0xebce), + wand: register$T('wand', 0xebcf), + debugLineByLine: register$T('debug-line-by-line', 0xebd0), + inspect: register$T('inspect', 0xebd1), + layers: register$T('layers', 0xebd2), + layersDot: register$T('layers-dot', 0xebd3), + layersActive: register$T('layers-active', 0xebd4), + compass: register$T('compass', 0xebd5), + compassDot: register$T('compass-dot', 0xebd6), + compassActive: register$T('compass-active', 0xebd7), + azure: register$T('azure', 0xebd8), + issueDraft: register$T('issue-draft', 0xebd9), + gitPullRequestClosed: register$T('git-pull-request-closed', 0xebda), + gitPullRequestDraft: register$T('git-pull-request-draft', 0xebdb), + debugAll: register$T('debug-all', 0xebdc), + debugCoverage: register$T('debug-coverage', 0xebdd), + runErrors: register$T('run-errors', 0xebde), + folderLibrary: register$T('folder-library', 0xebdf), + debugContinueSmall: register$T('debug-continue-small', 0xebe0), + beakerStop: register$T('beaker-stop', 0xebe1), + graphLine: register$T('graph-line', 0xebe2), + graphScatter: register$T('graph-scatter', 0xebe3), + pieChart: register$T('pie-chart', 0xebe4), + bracketDot: register$T('bracket-dot', 0xebe5), + bracketError: register$T('bracket-error', 0xebe6), + lockSmall: register$T('lock-small', 0xebe7), + azureDevops: register$T('azure-devops', 0xebe8), + verifiedFilled: register$T('verified-filled', 0xebe9), + newLine: register$T('newline', 0xebea), + layout: register$T('layout', 0xebeb), + layoutActivitybarLeft: register$T('layout-activitybar-left', 0xebec), + layoutActivitybarRight: register$T('layout-activitybar-right', 0xebed), + layoutPanelLeft: register$T('layout-panel-left', 0xebee), + layoutPanelCenter: register$T('layout-panel-center', 0xebef), + layoutPanelJustify: register$T('layout-panel-justify', 0xebf0), + layoutPanelRight: register$T('layout-panel-right', 0xebf1), + layoutPanel: register$T('layout-panel', 0xebf2), + layoutSidebarLeft: register$T('layout-sidebar-left', 0xebf3), + layoutSidebarRight: register$T('layout-sidebar-right', 0xebf4), + layoutStatusbar: register$T('layout-statusbar', 0xebf5), + layoutMenubar: register$T('layout-menubar', 0xebf6), + layoutCentered: register$T('layout-centered', 0xebf7), + layoutSidebarRightOff: register$T('layout-sidebar-right-off', 0xec00), + layoutPanelOff: register$T('layout-panel-off', 0xec01), + layoutSidebarLeftOff: register$T('layout-sidebar-left-off', 0xec02), + target: register$T('target', 0xebf8), + indent: register$T('indent', 0xebf9), + recordSmall: register$T('record-small', 0xebfa), + errorSmall: register$T('error-small', 0xebfb), + arrowCircleDown: register$T('arrow-circle-down', 0xebfc), + arrowCircleLeft: register$T('arrow-circle-left', 0xebfd), + arrowCircleRight: register$T('arrow-circle-right', 0xebfe), + arrowCircleUp: register$T('arrow-circle-up', 0xebff), + heartFilled: register$T('heart-filled', 0xec04), + map: register$T('map', 0xec05), + mapFilled: register$T('map-filled', 0xec06), + circleSmall: register$T('circle-small', 0xec07), + bellSlash: register$T('bell-slash', 0xec08), + bellSlashDot: register$T('bell-slash-dot', 0xec09), + commentUnresolved: register$T('comment-unresolved', 0xec0a), + gitPullRequestGoToChanges: register$T('git-pull-request-go-to-changes', 0xec0b), + gitPullRequestNewChanges: register$T('git-pull-request-new-changes', 0xec0c), + searchFuzzy: register$T('search-fuzzy', 0xec0d), + commentDraft: register$T('comment-draft', 0xec0e), + send: register$T('send', 0xec0f), + sparkle: register$T('sparkle', 0xec10), + insert: register$T('insert', 0xec11), + mic: register$T('mic', 0xec12), + thumbsDownFilled: register$T('thumbsdown-filled', 0xec13), + thumbsUpFilled: register$T('thumbsup-filled', 0xec14), + coffee: register$T('coffee', 0xec15), + snake: register$T('snake', 0xec16), + game: register$T('game', 0xec17), + vr: register$T('vr', 0xec18), + chip: register$T('chip', 0xec19), + piano: register$T('piano', 0xec1a), + music: register$T('music', 0xec1b), + micFilled: register$T('mic-filled', 0xec1c), + gitFetch: register$T('git-fetch', 0xec1d), + copilot: register$T('copilot', 0xec1e), + lightbulbSparkle: register$T('lightbulb-sparkle', 0xec1f), + lightbulbSparkleAutofix: register$T('lightbulb-sparkle-autofix', 0xec1f), + robot: register$T('robot', 0xec20), + sparkleFilled: register$T('sparkle-filled', 0xec21), + diffSingle: register$T('diff-single', 0xec22), + diffMultiple: register$T('diff-multiple', 0xec23), + // derived icons, that could become separate icons + dialogError: register$T('dialog-error', 'error'), + dialogWarning: register$T('dialog-warning', 'warning'), + dialogInfo: register$T('dialog-info', 'info'), + dialogClose: register$T('dialog-close', 'close'), + treeItemExpanded: register$T('tree-item-expanded', 'chevron-down'), // collapsed is done with rotation + treeFilterOnTypeOn: register$T('tree-filter-on-type-on', 'list-filter'), + treeFilterOnTypeOff: register$T('tree-filter-on-type-off', 'list-selection'), + treeFilterClear: register$T('tree-filter-clear', 'close'), + treeItemLoading: register$T('tree-item-loading', 'loading'), + menuSelection: register$T('menu-selection', 'check'), + menuSubmenu: register$T('menu-submenu', 'chevron-right'), + menuBarMore: register$T('menubar-more', 'more'), + scrollbarButtonLeft: register$T('scrollbar-button-left', 'triangle-left'), + scrollbarButtonRight: register$T('scrollbar-button-right', 'triangle-right'), + scrollbarButtonUp: register$T('scrollbar-button-up', 'triangle-up'), + scrollbarButtonDown: register$T('scrollbar-button-down', 'triangle-down'), + toolBarMore: register$T('toolbar-more', 'more'), + quickInputBack: register$T('quick-input-back', 'arrow-left') +}; + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +class TokenizationRegistry { + constructor() { + this._tokenizationSupports = new Map(); + this._factories = new Map(); + this._onDidChange = new Emitter(); + this.onDidChange = this._onDidChange.event; + this._colorMap = null; + } + handleChange(languageIds) { + this._onDidChange.fire({ + changedLanguages: languageIds, + changedColorMap: false + }); + } + register(languageId, support) { + this._tokenizationSupports.set(languageId, support); + this.handleChange([languageId]); + return toDisposable(() => { + if (this._tokenizationSupports.get(languageId) !== support) { + return; + } + this._tokenizationSupports.delete(languageId); + this.handleChange([languageId]); + }); + } + get(languageId) { + return this._tokenizationSupports.get(languageId) || null; + } + registerFactory(languageId, factory) { + var _a; + (_a = this._factories.get(languageId)) === null || _a === void 0 ? void 0 : _a.dispose(); + const myData = new TokenizationSupportFactoryData(this, languageId, factory); + this._factories.set(languageId, myData); + return toDisposable(() => { + const v = this._factories.get(languageId); + if (!v || v !== myData) { + return; + } + this._factories.delete(languageId); + v.dispose(); + }); + } + async getOrCreate(languageId) { + // check first if the support is already set + const tokenizationSupport = this.get(languageId); + if (tokenizationSupport) { + return tokenizationSupport; + } + const factory = this._factories.get(languageId); + if (!factory || factory.isResolved) { + // no factory or factory.resolve already finished + return null; + } + await factory.resolve(); + return this.get(languageId); + } + isResolved(languageId) { + const tokenizationSupport = this.get(languageId); + if (tokenizationSupport) { + return true; + } + const factory = this._factories.get(languageId); + if (!factory || factory.isResolved) { + return true; + } + return false; + } + setColorMap(colorMap) { + this._colorMap = colorMap; + this._onDidChange.fire({ + changedLanguages: Array.from(this._tokenizationSupports.keys()), + changedColorMap: true + }); + } + getColorMap() { + return this._colorMap; + } + getDefaultBackground() { + if (this._colorMap && this._colorMap.length > 2 /* ColorId.DefaultBackground */) { + return this._colorMap[2 /* ColorId.DefaultBackground */]; + } + return null; + } +} +class TokenizationSupportFactoryData extends Disposable { + get isResolved() { + return this._isResolved; + } + constructor(_registry, _languageId, _factory) { + super(); + this._registry = _registry; + this._languageId = _languageId; + this._factory = _factory; + this._isDisposed = false; + this._resolvePromise = null; + this._isResolved = false; + } + dispose() { + this._isDisposed = true; + super.dispose(); + } + async resolve() { + if (!this._resolvePromise) { + this._resolvePromise = this._create(); + } + return this._resolvePromise; + } + async _create() { + const value = await this._factory.tokenizationSupport; + this._isResolved = true; + if (value && !this._isDisposed) { + this._register(this._registry.register(this._languageId, value)); + } + } +} + +let Token$1 = class Token { + constructor(offset, type, language) { + this.offset = offset; + this.type = type; + this.language = language; + this._tokenBrand = undefined; + } + toString() { + return '(' + this.offset + ', ' + this.type + ')'; + } +}; +/** + * @internal + */ +var CompletionItemKinds; +(function (CompletionItemKinds) { + const byKind = new Map(); + byKind.set(0 /* CompletionItemKind.Method */, Codicon.symbolMethod); + byKind.set(1 /* CompletionItemKind.Function */, Codicon.symbolFunction); + byKind.set(2 /* CompletionItemKind.Constructor */, Codicon.symbolConstructor); + byKind.set(3 /* CompletionItemKind.Field */, Codicon.symbolField); + byKind.set(4 /* CompletionItemKind.Variable */, Codicon.symbolVariable); + byKind.set(5 /* CompletionItemKind.Class */, Codicon.symbolClass); + byKind.set(6 /* CompletionItemKind.Struct */, Codicon.symbolStruct); + byKind.set(7 /* CompletionItemKind.Interface */, Codicon.symbolInterface); + byKind.set(8 /* CompletionItemKind.Module */, Codicon.symbolModule); + byKind.set(9 /* CompletionItemKind.Property */, Codicon.symbolProperty); + byKind.set(10 /* CompletionItemKind.Event */, Codicon.symbolEvent); + byKind.set(11 /* CompletionItemKind.Operator */, Codicon.symbolOperator); + byKind.set(12 /* CompletionItemKind.Unit */, Codicon.symbolUnit); + byKind.set(13 /* CompletionItemKind.Value */, Codicon.symbolValue); + byKind.set(15 /* CompletionItemKind.Enum */, Codicon.symbolEnum); + byKind.set(14 /* CompletionItemKind.Constant */, Codicon.symbolConstant); + byKind.set(15 /* CompletionItemKind.Enum */, Codicon.symbolEnum); + byKind.set(16 /* CompletionItemKind.EnumMember */, Codicon.symbolEnumMember); + byKind.set(17 /* CompletionItemKind.Keyword */, Codicon.symbolKeyword); + byKind.set(27 /* CompletionItemKind.Snippet */, Codicon.symbolSnippet); + byKind.set(18 /* CompletionItemKind.Text */, Codicon.symbolText); + byKind.set(19 /* CompletionItemKind.Color */, Codicon.symbolColor); + byKind.set(20 /* CompletionItemKind.File */, Codicon.symbolFile); + byKind.set(21 /* CompletionItemKind.Reference */, Codicon.symbolReference); + byKind.set(22 /* CompletionItemKind.Customcolor */, Codicon.symbolCustomColor); + byKind.set(23 /* CompletionItemKind.Folder */, Codicon.symbolFolder); + byKind.set(24 /* CompletionItemKind.TypeParameter */, Codicon.symbolTypeParameter); + byKind.set(25 /* CompletionItemKind.User */, Codicon.account); + byKind.set(26 /* CompletionItemKind.Issue */, Codicon.issues); + /** + * @internal + */ + function toIcon(kind) { + let codicon = byKind.get(kind); + if (!codicon) { + console.info('No codicon found for CompletionItemKind ' + kind); + codicon = Codicon.symbolProperty; + } + return codicon; + } + CompletionItemKinds.toIcon = toIcon; + const data = new Map(); + data.set('method', 0 /* CompletionItemKind.Method */); + data.set('function', 1 /* CompletionItemKind.Function */); + data.set('constructor', 2 /* CompletionItemKind.Constructor */); + data.set('field', 3 /* CompletionItemKind.Field */); + data.set('variable', 4 /* CompletionItemKind.Variable */); + data.set('class', 5 /* CompletionItemKind.Class */); + data.set('struct', 6 /* CompletionItemKind.Struct */); + data.set('interface', 7 /* CompletionItemKind.Interface */); + data.set('module', 8 /* CompletionItemKind.Module */); + data.set('property', 9 /* CompletionItemKind.Property */); + data.set('event', 10 /* CompletionItemKind.Event */); + data.set('operator', 11 /* CompletionItemKind.Operator */); + data.set('unit', 12 /* CompletionItemKind.Unit */); + data.set('value', 13 /* CompletionItemKind.Value */); + data.set('constant', 14 /* CompletionItemKind.Constant */); + data.set('enum', 15 /* CompletionItemKind.Enum */); + data.set('enum-member', 16 /* CompletionItemKind.EnumMember */); + data.set('enumMember', 16 /* CompletionItemKind.EnumMember */); + data.set('keyword', 17 /* CompletionItemKind.Keyword */); + data.set('snippet', 27 /* CompletionItemKind.Snippet */); + data.set('text', 18 /* CompletionItemKind.Text */); + data.set('color', 19 /* CompletionItemKind.Color */); + data.set('file', 20 /* CompletionItemKind.File */); + data.set('reference', 21 /* CompletionItemKind.Reference */); + data.set('customcolor', 22 /* CompletionItemKind.Customcolor */); + data.set('folder', 23 /* CompletionItemKind.Folder */); + data.set('type-parameter', 24 /* CompletionItemKind.TypeParameter */); + data.set('typeParameter', 24 /* CompletionItemKind.TypeParameter */); + data.set('account', 25 /* CompletionItemKind.User */); + data.set('issue', 26 /* CompletionItemKind.Issue */); + /** + * @internal + */ + function fromString(value, strict) { + let res = data.get(value); + if (typeof res === 'undefined' && !strict) { + res = 9 /* CompletionItemKind.Property */; + } + return res; + } + CompletionItemKinds.fromString = fromString; +})(CompletionItemKinds || (CompletionItemKinds = {})); +/** + * How an {@link InlineCompletionsProvider inline completion provider} was triggered. + */ +var InlineCompletionTriggerKind$2; +(function (InlineCompletionTriggerKind) { + /** + * Completion was triggered automatically while editing. + * It is sufficient to return a single completion item in this case. + */ + InlineCompletionTriggerKind[InlineCompletionTriggerKind["Automatic"] = 0] = "Automatic"; + /** + * Completion was triggered explicitly by a user gesture. + * Return multiple completion items to enable cycling through them. + */ + InlineCompletionTriggerKind[InlineCompletionTriggerKind["Explicit"] = 1] = "Explicit"; +})(InlineCompletionTriggerKind$2 || (InlineCompletionTriggerKind$2 = {})); +var SignatureHelpTriggerKind$1; +(function (SignatureHelpTriggerKind) { + SignatureHelpTriggerKind[SignatureHelpTriggerKind["Invoke"] = 1] = "Invoke"; + SignatureHelpTriggerKind[SignatureHelpTriggerKind["TriggerCharacter"] = 2] = "TriggerCharacter"; + SignatureHelpTriggerKind[SignatureHelpTriggerKind["ContentChange"] = 3] = "ContentChange"; +})(SignatureHelpTriggerKind$1 || (SignatureHelpTriggerKind$1 = {})); +/** + * A document highlight kind. + */ +var DocumentHighlightKind$2; +(function (DocumentHighlightKind) { + /** + * A textual occurrence. + */ + DocumentHighlightKind[DocumentHighlightKind["Text"] = 0] = "Text"; + /** + * Read-access of a symbol, like reading a variable. + */ + DocumentHighlightKind[DocumentHighlightKind["Read"] = 1] = "Read"; + /** + * Write-access of a symbol, like writing to a variable. + */ + DocumentHighlightKind[DocumentHighlightKind["Write"] = 2] = "Write"; +})(DocumentHighlightKind$2 || (DocumentHighlightKind$2 = {})); +/** + * @internal + */ +({ + [17 /* SymbolKind.Array */]: localize$2('Array', "array"), + [16 /* SymbolKind.Boolean */]: localize$2('Boolean', "boolean"), + [4 /* SymbolKind.Class */]: localize$2('Class', "class"), + [13 /* SymbolKind.Constant */]: localize$2('Constant', "constant"), + [8 /* SymbolKind.Constructor */]: localize$2('Constructor', "constructor"), + [9 /* SymbolKind.Enum */]: localize$2('Enum', "enumeration"), + [21 /* SymbolKind.EnumMember */]: localize$2('EnumMember', "enumeration member"), + [23 /* SymbolKind.Event */]: localize$2('Event', "event"), + [7 /* SymbolKind.Field */]: localize$2('Field', "field"), + [0 /* SymbolKind.File */]: localize$2('File', "file"), + [11 /* SymbolKind.Function */]: localize$2('Function', "function"), + [10 /* SymbolKind.Interface */]: localize$2('Interface', "interface"), + [19 /* SymbolKind.Key */]: localize$2('Key', "key"), + [5 /* SymbolKind.Method */]: localize$2('Method', "method"), + [1 /* SymbolKind.Module */]: localize$2('Module', "module"), + [2 /* SymbolKind.Namespace */]: localize$2('Namespace', "namespace"), + [20 /* SymbolKind.Null */]: localize$2('Null', "null"), + [15 /* SymbolKind.Number */]: localize$2('Number', "number"), + [18 /* SymbolKind.Object */]: localize$2('Object', "object"), + [24 /* SymbolKind.Operator */]: localize$2('Operator', "operator"), + [3 /* SymbolKind.Package */]: localize$2('Package', "package"), + [6 /* SymbolKind.Property */]: localize$2('Property', "property"), + [14 /* SymbolKind.String */]: localize$2('String', "string"), + [22 /* SymbolKind.Struct */]: localize$2('Struct', "struct"), + [25 /* SymbolKind.TypeParameter */]: localize$2('TypeParameter', "type parameter"), + [12 /* SymbolKind.Variable */]: localize$2('Variable', "variable"), +}); +/** + * @internal + */ +var SymbolKinds; +(function (SymbolKinds) { + const byKind = new Map(); + byKind.set(0 /* SymbolKind.File */, Codicon.symbolFile); + byKind.set(1 /* SymbolKind.Module */, Codicon.symbolModule); + byKind.set(2 /* SymbolKind.Namespace */, Codicon.symbolNamespace); + byKind.set(3 /* SymbolKind.Package */, Codicon.symbolPackage); + byKind.set(4 /* SymbolKind.Class */, Codicon.symbolClass); + byKind.set(5 /* SymbolKind.Method */, Codicon.symbolMethod); + byKind.set(6 /* SymbolKind.Property */, Codicon.symbolProperty); + byKind.set(7 /* SymbolKind.Field */, Codicon.symbolField); + byKind.set(8 /* SymbolKind.Constructor */, Codicon.symbolConstructor); + byKind.set(9 /* SymbolKind.Enum */, Codicon.symbolEnum); + byKind.set(10 /* SymbolKind.Interface */, Codicon.symbolInterface); + byKind.set(11 /* SymbolKind.Function */, Codicon.symbolFunction); + byKind.set(12 /* SymbolKind.Variable */, Codicon.symbolVariable); + byKind.set(13 /* SymbolKind.Constant */, Codicon.symbolConstant); + byKind.set(14 /* SymbolKind.String */, Codicon.symbolString); + byKind.set(15 /* SymbolKind.Number */, Codicon.symbolNumber); + byKind.set(16 /* SymbolKind.Boolean */, Codicon.symbolBoolean); + byKind.set(17 /* SymbolKind.Array */, Codicon.symbolArray); + byKind.set(18 /* SymbolKind.Object */, Codicon.symbolObject); + byKind.set(19 /* SymbolKind.Key */, Codicon.symbolKey); + byKind.set(20 /* SymbolKind.Null */, Codicon.symbolNull); + byKind.set(21 /* SymbolKind.EnumMember */, Codicon.symbolEnumMember); + byKind.set(22 /* SymbolKind.Struct */, Codicon.symbolStruct); + byKind.set(23 /* SymbolKind.Event */, Codicon.symbolEvent); + byKind.set(24 /* SymbolKind.Operator */, Codicon.symbolOperator); + byKind.set(25 /* SymbolKind.TypeParameter */, Codicon.symbolTypeParameter); + /** + * @internal + */ + function toIcon(kind) { + let icon = byKind.get(kind); + if (!icon) { + console.info('No codicon found for SymbolKind ' + kind); + icon = Codicon.symbolProperty; + } + return icon; + } + SymbolKinds.toIcon = toIcon; +})(SymbolKinds || (SymbolKinds = {})); +/** + * @internal + */ +var Command$1; +(function (Command) { + /** + * @internal + */ + function is(obj) { + if (!obj || typeof obj !== 'object') { + return false; + } + return typeof obj.id === 'string' && + typeof obj.title === 'string'; + } + Command.is = is; +})(Command$1 || (Command$1 = {})); +var InlayHintKind$2; +(function (InlayHintKind) { + InlayHintKind[InlayHintKind["Type"] = 1] = "Type"; + InlayHintKind[InlayHintKind["Parameter"] = 2] = "Parameter"; +})(InlayHintKind$2 || (InlayHintKind$2 = {})); +/** + * @internal + */ +new TokenizationRegistry(); + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +// THIS IS A GENERATED FILE. DO NOT EDIT DIRECTLY. +var AccessibilitySupport; +(function (AccessibilitySupport) { + /** + * This should be the browser case where it is not known if a screen reader is attached or no. + */ + AccessibilitySupport[AccessibilitySupport["Unknown"] = 0] = "Unknown"; + AccessibilitySupport[AccessibilitySupport["Disabled"] = 1] = "Disabled"; + AccessibilitySupport[AccessibilitySupport["Enabled"] = 2] = "Enabled"; +})(AccessibilitySupport || (AccessibilitySupport = {})); +var CodeActionTriggerType; +(function (CodeActionTriggerType) { + CodeActionTriggerType[CodeActionTriggerType["Invoke"] = 1] = "Invoke"; + CodeActionTriggerType[CodeActionTriggerType["Auto"] = 2] = "Auto"; +})(CodeActionTriggerType || (CodeActionTriggerType = {})); +var CompletionItemInsertTextRule; +(function (CompletionItemInsertTextRule) { + CompletionItemInsertTextRule[CompletionItemInsertTextRule["None"] = 0] = "None"; + /** + * Adjust whitespace/indentation of multiline insert texts to + * match the current line indentation. + */ + CompletionItemInsertTextRule[CompletionItemInsertTextRule["KeepWhitespace"] = 1] = "KeepWhitespace"; + /** + * `insertText` is a snippet. + */ + CompletionItemInsertTextRule[CompletionItemInsertTextRule["InsertAsSnippet"] = 4] = "InsertAsSnippet"; +})(CompletionItemInsertTextRule || (CompletionItemInsertTextRule = {})); +var CompletionItemKind$1; +(function (CompletionItemKind) { + CompletionItemKind[CompletionItemKind["Method"] = 0] = "Method"; + CompletionItemKind[CompletionItemKind["Function"] = 1] = "Function"; + CompletionItemKind[CompletionItemKind["Constructor"] = 2] = "Constructor"; + CompletionItemKind[CompletionItemKind["Field"] = 3] = "Field"; + CompletionItemKind[CompletionItemKind["Variable"] = 4] = "Variable"; + CompletionItemKind[CompletionItemKind["Class"] = 5] = "Class"; + CompletionItemKind[CompletionItemKind["Struct"] = 6] = "Struct"; + CompletionItemKind[CompletionItemKind["Interface"] = 7] = "Interface"; + CompletionItemKind[CompletionItemKind["Module"] = 8] = "Module"; + CompletionItemKind[CompletionItemKind["Property"] = 9] = "Property"; + CompletionItemKind[CompletionItemKind["Event"] = 10] = "Event"; + CompletionItemKind[CompletionItemKind["Operator"] = 11] = "Operator"; + CompletionItemKind[CompletionItemKind["Unit"] = 12] = "Unit"; + CompletionItemKind[CompletionItemKind["Value"] = 13] = "Value"; + CompletionItemKind[CompletionItemKind["Constant"] = 14] = "Constant"; + CompletionItemKind[CompletionItemKind["Enum"] = 15] = "Enum"; + CompletionItemKind[CompletionItemKind["EnumMember"] = 16] = "EnumMember"; + CompletionItemKind[CompletionItemKind["Keyword"] = 17] = "Keyword"; + CompletionItemKind[CompletionItemKind["Text"] = 18] = "Text"; + CompletionItemKind[CompletionItemKind["Color"] = 19] = "Color"; + CompletionItemKind[CompletionItemKind["File"] = 20] = "File"; + CompletionItemKind[CompletionItemKind["Reference"] = 21] = "Reference"; + CompletionItemKind[CompletionItemKind["Customcolor"] = 22] = "Customcolor"; + CompletionItemKind[CompletionItemKind["Folder"] = 23] = "Folder"; + CompletionItemKind[CompletionItemKind["TypeParameter"] = 24] = "TypeParameter"; + CompletionItemKind[CompletionItemKind["User"] = 25] = "User"; + CompletionItemKind[CompletionItemKind["Issue"] = 26] = "Issue"; + CompletionItemKind[CompletionItemKind["Snippet"] = 27] = "Snippet"; +})(CompletionItemKind$1 || (CompletionItemKind$1 = {})); +var CompletionItemTag$1; +(function (CompletionItemTag) { + CompletionItemTag[CompletionItemTag["Deprecated"] = 1] = "Deprecated"; +})(CompletionItemTag$1 || (CompletionItemTag$1 = {})); +/** + * How a suggest provider was triggered. + */ +var CompletionTriggerKind; +(function (CompletionTriggerKind) { + CompletionTriggerKind[CompletionTriggerKind["Invoke"] = 0] = "Invoke"; + CompletionTriggerKind[CompletionTriggerKind["TriggerCharacter"] = 1] = "TriggerCharacter"; + CompletionTriggerKind[CompletionTriggerKind["TriggerForIncompleteCompletions"] = 2] = "TriggerForIncompleteCompletions"; +})(CompletionTriggerKind || (CompletionTriggerKind = {})); +/** + * A positioning preference for rendering content widgets. + */ +var ContentWidgetPositionPreference; +(function (ContentWidgetPositionPreference) { + /** + * Place the content widget exactly at a position + */ + ContentWidgetPositionPreference[ContentWidgetPositionPreference["EXACT"] = 0] = "EXACT"; + /** + * Place the content widget above a position + */ + ContentWidgetPositionPreference[ContentWidgetPositionPreference["ABOVE"] = 1] = "ABOVE"; + /** + * Place the content widget below a position + */ + ContentWidgetPositionPreference[ContentWidgetPositionPreference["BELOW"] = 2] = "BELOW"; +})(ContentWidgetPositionPreference || (ContentWidgetPositionPreference = {})); +/** + * Describes the reason the cursor has changed its position. + */ +var CursorChangeReason; +(function (CursorChangeReason) { + /** + * Unknown or not set. + */ + CursorChangeReason[CursorChangeReason["NotSet"] = 0] = "NotSet"; + /** + * A `model.setValue()` was called. + */ + CursorChangeReason[CursorChangeReason["ContentFlush"] = 1] = "ContentFlush"; + /** + * The `model` has been changed outside of this cursor and the cursor recovers its position from associated markers. + */ + CursorChangeReason[CursorChangeReason["RecoverFromMarkers"] = 2] = "RecoverFromMarkers"; + /** + * There was an explicit user gesture. + */ + CursorChangeReason[CursorChangeReason["Explicit"] = 3] = "Explicit"; + /** + * There was a Paste. + */ + CursorChangeReason[CursorChangeReason["Paste"] = 4] = "Paste"; + /** + * There was an Undo. + */ + CursorChangeReason[CursorChangeReason["Undo"] = 5] = "Undo"; + /** + * There was a Redo. + */ + CursorChangeReason[CursorChangeReason["Redo"] = 6] = "Redo"; +})(CursorChangeReason || (CursorChangeReason = {})); +/** + * The default end of line to use when instantiating models. + */ +var DefaultEndOfLine; +(function (DefaultEndOfLine) { + /** + * Use line feed (\n) as the end of line character. + */ + DefaultEndOfLine[DefaultEndOfLine["LF"] = 1] = "LF"; + /** + * Use carriage return and line feed (\r\n) as the end of line character. + */ + DefaultEndOfLine[DefaultEndOfLine["CRLF"] = 2] = "CRLF"; +})(DefaultEndOfLine || (DefaultEndOfLine = {})); +/** + * A document highlight kind. + */ +var DocumentHighlightKind$1; +(function (DocumentHighlightKind) { + /** + * A textual occurrence. + */ + DocumentHighlightKind[DocumentHighlightKind["Text"] = 0] = "Text"; + /** + * Read-access of a symbol, like reading a variable. + */ + DocumentHighlightKind[DocumentHighlightKind["Read"] = 1] = "Read"; + /** + * Write-access of a symbol, like writing to a variable. + */ + DocumentHighlightKind[DocumentHighlightKind["Write"] = 2] = "Write"; +})(DocumentHighlightKind$1 || (DocumentHighlightKind$1 = {})); +/** + * Configuration options for auto indentation in the editor + */ +var EditorAutoIndentStrategy; +(function (EditorAutoIndentStrategy) { + EditorAutoIndentStrategy[EditorAutoIndentStrategy["None"] = 0] = "None"; + EditorAutoIndentStrategy[EditorAutoIndentStrategy["Keep"] = 1] = "Keep"; + EditorAutoIndentStrategy[EditorAutoIndentStrategy["Brackets"] = 2] = "Brackets"; + EditorAutoIndentStrategy[EditorAutoIndentStrategy["Advanced"] = 3] = "Advanced"; + EditorAutoIndentStrategy[EditorAutoIndentStrategy["Full"] = 4] = "Full"; +})(EditorAutoIndentStrategy || (EditorAutoIndentStrategy = {})); +var EditorOption; +(function (EditorOption) { + EditorOption[EditorOption["acceptSuggestionOnCommitCharacter"] = 0] = "acceptSuggestionOnCommitCharacter"; + EditorOption[EditorOption["acceptSuggestionOnEnter"] = 1] = "acceptSuggestionOnEnter"; + EditorOption[EditorOption["accessibilitySupport"] = 2] = "accessibilitySupport"; + EditorOption[EditorOption["accessibilityPageSize"] = 3] = "accessibilityPageSize"; + EditorOption[EditorOption["ariaLabel"] = 4] = "ariaLabel"; + EditorOption[EditorOption["ariaRequired"] = 5] = "ariaRequired"; + EditorOption[EditorOption["autoClosingBrackets"] = 6] = "autoClosingBrackets"; + EditorOption[EditorOption["autoClosingComments"] = 7] = "autoClosingComments"; + EditorOption[EditorOption["screenReaderAnnounceInlineSuggestion"] = 8] = "screenReaderAnnounceInlineSuggestion"; + EditorOption[EditorOption["autoClosingDelete"] = 9] = "autoClosingDelete"; + EditorOption[EditorOption["autoClosingOvertype"] = 10] = "autoClosingOvertype"; + EditorOption[EditorOption["autoClosingQuotes"] = 11] = "autoClosingQuotes"; + EditorOption[EditorOption["autoIndent"] = 12] = "autoIndent"; + EditorOption[EditorOption["automaticLayout"] = 13] = "automaticLayout"; + EditorOption[EditorOption["autoSurround"] = 14] = "autoSurround"; + EditorOption[EditorOption["bracketPairColorization"] = 15] = "bracketPairColorization"; + EditorOption[EditorOption["guides"] = 16] = "guides"; + EditorOption[EditorOption["codeLens"] = 17] = "codeLens"; + EditorOption[EditorOption["codeLensFontFamily"] = 18] = "codeLensFontFamily"; + EditorOption[EditorOption["codeLensFontSize"] = 19] = "codeLensFontSize"; + EditorOption[EditorOption["colorDecorators"] = 20] = "colorDecorators"; + EditorOption[EditorOption["colorDecoratorsLimit"] = 21] = "colorDecoratorsLimit"; + EditorOption[EditorOption["columnSelection"] = 22] = "columnSelection"; + EditorOption[EditorOption["comments"] = 23] = "comments"; + EditorOption[EditorOption["contextmenu"] = 24] = "contextmenu"; + EditorOption[EditorOption["copyWithSyntaxHighlighting"] = 25] = "copyWithSyntaxHighlighting"; + EditorOption[EditorOption["cursorBlinking"] = 26] = "cursorBlinking"; + EditorOption[EditorOption["cursorSmoothCaretAnimation"] = 27] = "cursorSmoothCaretAnimation"; + EditorOption[EditorOption["cursorStyle"] = 28] = "cursorStyle"; + EditorOption[EditorOption["cursorSurroundingLines"] = 29] = "cursorSurroundingLines"; + EditorOption[EditorOption["cursorSurroundingLinesStyle"] = 30] = "cursorSurroundingLinesStyle"; + EditorOption[EditorOption["cursorWidth"] = 31] = "cursorWidth"; + EditorOption[EditorOption["disableLayerHinting"] = 32] = "disableLayerHinting"; + EditorOption[EditorOption["disableMonospaceOptimizations"] = 33] = "disableMonospaceOptimizations"; + EditorOption[EditorOption["domReadOnly"] = 34] = "domReadOnly"; + EditorOption[EditorOption["dragAndDrop"] = 35] = "dragAndDrop"; + EditorOption[EditorOption["dropIntoEditor"] = 36] = "dropIntoEditor"; + EditorOption[EditorOption["emptySelectionClipboard"] = 37] = "emptySelectionClipboard"; + EditorOption[EditorOption["experimentalWhitespaceRendering"] = 38] = "experimentalWhitespaceRendering"; + EditorOption[EditorOption["extraEditorClassName"] = 39] = "extraEditorClassName"; + EditorOption[EditorOption["fastScrollSensitivity"] = 40] = "fastScrollSensitivity"; + EditorOption[EditorOption["find"] = 41] = "find"; + EditorOption[EditorOption["fixedOverflowWidgets"] = 42] = "fixedOverflowWidgets"; + EditorOption[EditorOption["folding"] = 43] = "folding"; + EditorOption[EditorOption["foldingStrategy"] = 44] = "foldingStrategy"; + EditorOption[EditorOption["foldingHighlight"] = 45] = "foldingHighlight"; + EditorOption[EditorOption["foldingImportsByDefault"] = 46] = "foldingImportsByDefault"; + EditorOption[EditorOption["foldingMaximumRegions"] = 47] = "foldingMaximumRegions"; + EditorOption[EditorOption["unfoldOnClickAfterEndOfLine"] = 48] = "unfoldOnClickAfterEndOfLine"; + EditorOption[EditorOption["fontFamily"] = 49] = "fontFamily"; + EditorOption[EditorOption["fontInfo"] = 50] = "fontInfo"; + EditorOption[EditorOption["fontLigatures"] = 51] = "fontLigatures"; + EditorOption[EditorOption["fontSize"] = 52] = "fontSize"; + EditorOption[EditorOption["fontWeight"] = 53] = "fontWeight"; + EditorOption[EditorOption["fontVariations"] = 54] = "fontVariations"; + EditorOption[EditorOption["formatOnPaste"] = 55] = "formatOnPaste"; + EditorOption[EditorOption["formatOnType"] = 56] = "formatOnType"; + EditorOption[EditorOption["glyphMargin"] = 57] = "glyphMargin"; + EditorOption[EditorOption["gotoLocation"] = 58] = "gotoLocation"; + EditorOption[EditorOption["hideCursorInOverviewRuler"] = 59] = "hideCursorInOverviewRuler"; + EditorOption[EditorOption["hover"] = 60] = "hover"; + EditorOption[EditorOption["inDiffEditor"] = 61] = "inDiffEditor"; + EditorOption[EditorOption["inlineSuggest"] = 62] = "inlineSuggest"; + EditorOption[EditorOption["letterSpacing"] = 63] = "letterSpacing"; + EditorOption[EditorOption["lightbulb"] = 64] = "lightbulb"; + EditorOption[EditorOption["lineDecorationsWidth"] = 65] = "lineDecorationsWidth"; + EditorOption[EditorOption["lineHeight"] = 66] = "lineHeight"; + EditorOption[EditorOption["lineNumbers"] = 67] = "lineNumbers"; + EditorOption[EditorOption["lineNumbersMinChars"] = 68] = "lineNumbersMinChars"; + EditorOption[EditorOption["linkedEditing"] = 69] = "linkedEditing"; + EditorOption[EditorOption["links"] = 70] = "links"; + EditorOption[EditorOption["matchBrackets"] = 71] = "matchBrackets"; + EditorOption[EditorOption["minimap"] = 72] = "minimap"; + EditorOption[EditorOption["mouseStyle"] = 73] = "mouseStyle"; + EditorOption[EditorOption["mouseWheelScrollSensitivity"] = 74] = "mouseWheelScrollSensitivity"; + EditorOption[EditorOption["mouseWheelZoom"] = 75] = "mouseWheelZoom"; + EditorOption[EditorOption["multiCursorMergeOverlapping"] = 76] = "multiCursorMergeOverlapping"; + EditorOption[EditorOption["multiCursorModifier"] = 77] = "multiCursorModifier"; + EditorOption[EditorOption["multiCursorPaste"] = 78] = "multiCursorPaste"; + EditorOption[EditorOption["multiCursorLimit"] = 79] = "multiCursorLimit"; + EditorOption[EditorOption["occurrencesHighlight"] = 80] = "occurrencesHighlight"; + EditorOption[EditorOption["overviewRulerBorder"] = 81] = "overviewRulerBorder"; + EditorOption[EditorOption["overviewRulerLanes"] = 82] = "overviewRulerLanes"; + EditorOption[EditorOption["padding"] = 83] = "padding"; + EditorOption[EditorOption["pasteAs"] = 84] = "pasteAs"; + EditorOption[EditorOption["parameterHints"] = 85] = "parameterHints"; + EditorOption[EditorOption["peekWidgetDefaultFocus"] = 86] = "peekWidgetDefaultFocus"; + EditorOption[EditorOption["definitionLinkOpensInPeek"] = 87] = "definitionLinkOpensInPeek"; + EditorOption[EditorOption["quickSuggestions"] = 88] = "quickSuggestions"; + EditorOption[EditorOption["quickSuggestionsDelay"] = 89] = "quickSuggestionsDelay"; + EditorOption[EditorOption["readOnly"] = 90] = "readOnly"; + EditorOption[EditorOption["readOnlyMessage"] = 91] = "readOnlyMessage"; + EditorOption[EditorOption["renameOnType"] = 92] = "renameOnType"; + EditorOption[EditorOption["renderControlCharacters"] = 93] = "renderControlCharacters"; + EditorOption[EditorOption["renderFinalNewline"] = 94] = "renderFinalNewline"; + EditorOption[EditorOption["renderLineHighlight"] = 95] = "renderLineHighlight"; + EditorOption[EditorOption["renderLineHighlightOnlyWhenFocus"] = 96] = "renderLineHighlightOnlyWhenFocus"; + EditorOption[EditorOption["renderValidationDecorations"] = 97] = "renderValidationDecorations"; + EditorOption[EditorOption["renderWhitespace"] = 98] = "renderWhitespace"; + EditorOption[EditorOption["revealHorizontalRightPadding"] = 99] = "revealHorizontalRightPadding"; + EditorOption[EditorOption["roundedSelection"] = 100] = "roundedSelection"; + EditorOption[EditorOption["rulers"] = 101] = "rulers"; + EditorOption[EditorOption["scrollbar"] = 102] = "scrollbar"; + EditorOption[EditorOption["scrollBeyondLastColumn"] = 103] = "scrollBeyondLastColumn"; + EditorOption[EditorOption["scrollBeyondLastLine"] = 104] = "scrollBeyondLastLine"; + EditorOption[EditorOption["scrollPredominantAxis"] = 105] = "scrollPredominantAxis"; + EditorOption[EditorOption["selectionClipboard"] = 106] = "selectionClipboard"; + EditorOption[EditorOption["selectionHighlight"] = 107] = "selectionHighlight"; + EditorOption[EditorOption["selectOnLineNumbers"] = 108] = "selectOnLineNumbers"; + EditorOption[EditorOption["showFoldingControls"] = 109] = "showFoldingControls"; + EditorOption[EditorOption["showUnused"] = 110] = "showUnused"; + EditorOption[EditorOption["snippetSuggestions"] = 111] = "snippetSuggestions"; + EditorOption[EditorOption["smartSelect"] = 112] = "smartSelect"; + EditorOption[EditorOption["smoothScrolling"] = 113] = "smoothScrolling"; + EditorOption[EditorOption["stickyScroll"] = 114] = "stickyScroll"; + EditorOption[EditorOption["stickyTabStops"] = 115] = "stickyTabStops"; + EditorOption[EditorOption["stopRenderingLineAfter"] = 116] = "stopRenderingLineAfter"; + EditorOption[EditorOption["suggest"] = 117] = "suggest"; + EditorOption[EditorOption["suggestFontSize"] = 118] = "suggestFontSize"; + EditorOption[EditorOption["suggestLineHeight"] = 119] = "suggestLineHeight"; + EditorOption[EditorOption["suggestOnTriggerCharacters"] = 120] = "suggestOnTriggerCharacters"; + EditorOption[EditorOption["suggestSelection"] = 121] = "suggestSelection"; + EditorOption[EditorOption["tabCompletion"] = 122] = "tabCompletion"; + EditorOption[EditorOption["tabIndex"] = 123] = "tabIndex"; + EditorOption[EditorOption["unicodeHighlighting"] = 124] = "unicodeHighlighting"; + EditorOption[EditorOption["unusualLineTerminators"] = 125] = "unusualLineTerminators"; + EditorOption[EditorOption["useShadowDOM"] = 126] = "useShadowDOM"; + EditorOption[EditorOption["useTabStops"] = 127] = "useTabStops"; + EditorOption[EditorOption["wordBreak"] = 128] = "wordBreak"; + EditorOption[EditorOption["wordSeparators"] = 129] = "wordSeparators"; + EditorOption[EditorOption["wordWrap"] = 130] = "wordWrap"; + EditorOption[EditorOption["wordWrapBreakAfterCharacters"] = 131] = "wordWrapBreakAfterCharacters"; + EditorOption[EditorOption["wordWrapBreakBeforeCharacters"] = 132] = "wordWrapBreakBeforeCharacters"; + EditorOption[EditorOption["wordWrapColumn"] = 133] = "wordWrapColumn"; + EditorOption[EditorOption["wordWrapOverride1"] = 134] = "wordWrapOverride1"; + EditorOption[EditorOption["wordWrapOverride2"] = 135] = "wordWrapOverride2"; + EditorOption[EditorOption["wrappingIndent"] = 136] = "wrappingIndent"; + EditorOption[EditorOption["wrappingStrategy"] = 137] = "wrappingStrategy"; + EditorOption[EditorOption["showDeprecated"] = 138] = "showDeprecated"; + EditorOption[EditorOption["inlayHints"] = 139] = "inlayHints"; + EditorOption[EditorOption["editorClassName"] = 140] = "editorClassName"; + EditorOption[EditorOption["pixelRatio"] = 141] = "pixelRatio"; + EditorOption[EditorOption["tabFocusMode"] = 142] = "tabFocusMode"; + EditorOption[EditorOption["layoutInfo"] = 143] = "layoutInfo"; + EditorOption[EditorOption["wrappingInfo"] = 144] = "wrappingInfo"; + EditorOption[EditorOption["defaultColorDecorators"] = 145] = "defaultColorDecorators"; + EditorOption[EditorOption["colorDecoratorsActivatedOn"] = 146] = "colorDecoratorsActivatedOn"; + EditorOption[EditorOption["inlineCompletionsAccessibilityVerbose"] = 147] = "inlineCompletionsAccessibilityVerbose"; +})(EditorOption || (EditorOption = {})); +/** + * End of line character preference. + */ +var EndOfLinePreference; +(function (EndOfLinePreference) { + /** + * Use the end of line character identified in the text buffer. + */ + EndOfLinePreference[EndOfLinePreference["TextDefined"] = 0] = "TextDefined"; + /** + * Use line feed (\n) as the end of line character. + */ + EndOfLinePreference[EndOfLinePreference["LF"] = 1] = "LF"; + /** + * Use carriage return and line feed (\r\n) as the end of line character. + */ + EndOfLinePreference[EndOfLinePreference["CRLF"] = 2] = "CRLF"; +})(EndOfLinePreference || (EndOfLinePreference = {})); +/** + * End of line character preference. + */ +var EndOfLineSequence; +(function (EndOfLineSequence) { + /** + * Use line feed (\n) as the end of line character. + */ + EndOfLineSequence[EndOfLineSequence["LF"] = 0] = "LF"; + /** + * Use carriage return and line feed (\r\n) as the end of line character. + */ + EndOfLineSequence[EndOfLineSequence["CRLF"] = 1] = "CRLF"; +})(EndOfLineSequence || (EndOfLineSequence = {})); +/** + * Vertical Lane in the glyph margin of the editor. + */ +var GlyphMarginLane$1; +(function (GlyphMarginLane) { + GlyphMarginLane[GlyphMarginLane["Left"] = 1] = "Left"; + GlyphMarginLane[GlyphMarginLane["Right"] = 2] = "Right"; +})(GlyphMarginLane$1 || (GlyphMarginLane$1 = {})); +/** + * Describes what to do with the indentation when pressing Enter. + */ +var IndentAction; +(function (IndentAction) { + /** + * Insert new line and copy the previous line's indentation. + */ + IndentAction[IndentAction["None"] = 0] = "None"; + /** + * Insert new line and indent once (relative to the previous line's indentation). + */ + IndentAction[IndentAction["Indent"] = 1] = "Indent"; + /** + * Insert two new lines: + * - the first one indented which will hold the cursor + * - the second one at the same indentation level + */ + IndentAction[IndentAction["IndentOutdent"] = 2] = "IndentOutdent"; + /** + * Insert new line and outdent once (relative to the previous line's indentation). + */ + IndentAction[IndentAction["Outdent"] = 3] = "Outdent"; +})(IndentAction || (IndentAction = {})); +var InjectedTextCursorStops$1; +(function (InjectedTextCursorStops) { + InjectedTextCursorStops[InjectedTextCursorStops["Both"] = 0] = "Both"; + InjectedTextCursorStops[InjectedTextCursorStops["Right"] = 1] = "Right"; + InjectedTextCursorStops[InjectedTextCursorStops["Left"] = 2] = "Left"; + InjectedTextCursorStops[InjectedTextCursorStops["None"] = 3] = "None"; +})(InjectedTextCursorStops$1 || (InjectedTextCursorStops$1 = {})); +var InlayHintKind$1; +(function (InlayHintKind) { + InlayHintKind[InlayHintKind["Type"] = 1] = "Type"; + InlayHintKind[InlayHintKind["Parameter"] = 2] = "Parameter"; +})(InlayHintKind$1 || (InlayHintKind$1 = {})); +/** + * How an {@link InlineCompletionsProvider inline completion provider} was triggered. + */ +var InlineCompletionTriggerKind$1; +(function (InlineCompletionTriggerKind) { + /** + * Completion was triggered automatically while editing. + * It is sufficient to return a single completion item in this case. + */ + InlineCompletionTriggerKind[InlineCompletionTriggerKind["Automatic"] = 0] = "Automatic"; + /** + * Completion was triggered explicitly by a user gesture. + * Return multiple completion items to enable cycling through them. + */ + InlineCompletionTriggerKind[InlineCompletionTriggerKind["Explicit"] = 1] = "Explicit"; +})(InlineCompletionTriggerKind$1 || (InlineCompletionTriggerKind$1 = {})); +/** + * Virtual Key Codes, the value does not hold any inherent meaning. + * Inspired somewhat from https://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx + * But these are "more general", as they should work across browsers & OS`s. + */ +var KeyCode; +(function (KeyCode) { + KeyCode[KeyCode["DependsOnKbLayout"] = -1] = "DependsOnKbLayout"; + /** + * Placed first to cover the 0 value of the enum. + */ + KeyCode[KeyCode["Unknown"] = 0] = "Unknown"; + KeyCode[KeyCode["Backspace"] = 1] = "Backspace"; + KeyCode[KeyCode["Tab"] = 2] = "Tab"; + KeyCode[KeyCode["Enter"] = 3] = "Enter"; + KeyCode[KeyCode["Shift"] = 4] = "Shift"; + KeyCode[KeyCode["Ctrl"] = 5] = "Ctrl"; + KeyCode[KeyCode["Alt"] = 6] = "Alt"; + KeyCode[KeyCode["PauseBreak"] = 7] = "PauseBreak"; + KeyCode[KeyCode["CapsLock"] = 8] = "CapsLock"; + KeyCode[KeyCode["Escape"] = 9] = "Escape"; + KeyCode[KeyCode["Space"] = 10] = "Space"; + KeyCode[KeyCode["PageUp"] = 11] = "PageUp"; + KeyCode[KeyCode["PageDown"] = 12] = "PageDown"; + KeyCode[KeyCode["End"] = 13] = "End"; + KeyCode[KeyCode["Home"] = 14] = "Home"; + KeyCode[KeyCode["LeftArrow"] = 15] = "LeftArrow"; + KeyCode[KeyCode["UpArrow"] = 16] = "UpArrow"; + KeyCode[KeyCode["RightArrow"] = 17] = "RightArrow"; + KeyCode[KeyCode["DownArrow"] = 18] = "DownArrow"; + KeyCode[KeyCode["Insert"] = 19] = "Insert"; + KeyCode[KeyCode["Delete"] = 20] = "Delete"; + KeyCode[KeyCode["Digit0"] = 21] = "Digit0"; + KeyCode[KeyCode["Digit1"] = 22] = "Digit1"; + KeyCode[KeyCode["Digit2"] = 23] = "Digit2"; + KeyCode[KeyCode["Digit3"] = 24] = "Digit3"; + KeyCode[KeyCode["Digit4"] = 25] = "Digit4"; + KeyCode[KeyCode["Digit5"] = 26] = "Digit5"; + KeyCode[KeyCode["Digit6"] = 27] = "Digit6"; + KeyCode[KeyCode["Digit7"] = 28] = "Digit7"; + KeyCode[KeyCode["Digit8"] = 29] = "Digit8"; + KeyCode[KeyCode["Digit9"] = 30] = "Digit9"; + KeyCode[KeyCode["KeyA"] = 31] = "KeyA"; + KeyCode[KeyCode["KeyB"] = 32] = "KeyB"; + KeyCode[KeyCode["KeyC"] = 33] = "KeyC"; + KeyCode[KeyCode["KeyD"] = 34] = "KeyD"; + KeyCode[KeyCode["KeyE"] = 35] = "KeyE"; + KeyCode[KeyCode["KeyF"] = 36] = "KeyF"; + KeyCode[KeyCode["KeyG"] = 37] = "KeyG"; + KeyCode[KeyCode["KeyH"] = 38] = "KeyH"; + KeyCode[KeyCode["KeyI"] = 39] = "KeyI"; + KeyCode[KeyCode["KeyJ"] = 40] = "KeyJ"; + KeyCode[KeyCode["KeyK"] = 41] = "KeyK"; + KeyCode[KeyCode["KeyL"] = 42] = "KeyL"; + KeyCode[KeyCode["KeyM"] = 43] = "KeyM"; + KeyCode[KeyCode["KeyN"] = 44] = "KeyN"; + KeyCode[KeyCode["KeyO"] = 45] = "KeyO"; + KeyCode[KeyCode["KeyP"] = 46] = "KeyP"; + KeyCode[KeyCode["KeyQ"] = 47] = "KeyQ"; + KeyCode[KeyCode["KeyR"] = 48] = "KeyR"; + KeyCode[KeyCode["KeyS"] = 49] = "KeyS"; + KeyCode[KeyCode["KeyT"] = 50] = "KeyT"; + KeyCode[KeyCode["KeyU"] = 51] = "KeyU"; + KeyCode[KeyCode["KeyV"] = 52] = "KeyV"; + KeyCode[KeyCode["KeyW"] = 53] = "KeyW"; + KeyCode[KeyCode["KeyX"] = 54] = "KeyX"; + KeyCode[KeyCode["KeyY"] = 55] = "KeyY"; + KeyCode[KeyCode["KeyZ"] = 56] = "KeyZ"; + KeyCode[KeyCode["Meta"] = 57] = "Meta"; + KeyCode[KeyCode["ContextMenu"] = 58] = "ContextMenu"; + KeyCode[KeyCode["F1"] = 59] = "F1"; + KeyCode[KeyCode["F2"] = 60] = "F2"; + KeyCode[KeyCode["F3"] = 61] = "F3"; + KeyCode[KeyCode["F4"] = 62] = "F4"; + KeyCode[KeyCode["F5"] = 63] = "F5"; + KeyCode[KeyCode["F6"] = 64] = "F6"; + KeyCode[KeyCode["F7"] = 65] = "F7"; + KeyCode[KeyCode["F8"] = 66] = "F8"; + KeyCode[KeyCode["F9"] = 67] = "F9"; + KeyCode[KeyCode["F10"] = 68] = "F10"; + KeyCode[KeyCode["F11"] = 69] = "F11"; + KeyCode[KeyCode["F12"] = 70] = "F12"; + KeyCode[KeyCode["F13"] = 71] = "F13"; + KeyCode[KeyCode["F14"] = 72] = "F14"; + KeyCode[KeyCode["F15"] = 73] = "F15"; + KeyCode[KeyCode["F16"] = 74] = "F16"; + KeyCode[KeyCode["F17"] = 75] = "F17"; + KeyCode[KeyCode["F18"] = 76] = "F18"; + KeyCode[KeyCode["F19"] = 77] = "F19"; + KeyCode[KeyCode["F20"] = 78] = "F20"; + KeyCode[KeyCode["F21"] = 79] = "F21"; + KeyCode[KeyCode["F22"] = 80] = "F22"; + KeyCode[KeyCode["F23"] = 81] = "F23"; + KeyCode[KeyCode["F24"] = 82] = "F24"; + KeyCode[KeyCode["NumLock"] = 83] = "NumLock"; + KeyCode[KeyCode["ScrollLock"] = 84] = "ScrollLock"; + /** + * Used for miscellaneous characters; it can vary by keyboard. + * For the US standard keyboard, the ';:' key + */ + KeyCode[KeyCode["Semicolon"] = 85] = "Semicolon"; + /** + * For any country/region, the '+' key + * For the US standard keyboard, the '=+' key + */ + KeyCode[KeyCode["Equal"] = 86] = "Equal"; + /** + * For any country/region, the ',' key + * For the US standard keyboard, the ',<' key + */ + KeyCode[KeyCode["Comma"] = 87] = "Comma"; + /** + * For any country/region, the '-' key + * For the US standard keyboard, the '-_' key + */ + KeyCode[KeyCode["Minus"] = 88] = "Minus"; + /** + * For any country/region, the '.' key + * For the US standard keyboard, the '.>' key + */ + KeyCode[KeyCode["Period"] = 89] = "Period"; + /** + * Used for miscellaneous characters; it can vary by keyboard. + * For the US standard keyboard, the '/?' key + */ + KeyCode[KeyCode["Slash"] = 90] = "Slash"; + /** + * Used for miscellaneous characters; it can vary by keyboard. + * For the US standard keyboard, the '`~' key + */ + KeyCode[KeyCode["Backquote"] = 91] = "Backquote"; + /** + * Used for miscellaneous characters; it can vary by keyboard. + * For the US standard keyboard, the '[{' key + */ + KeyCode[KeyCode["BracketLeft"] = 92] = "BracketLeft"; + /** + * Used for miscellaneous characters; it can vary by keyboard. + * For the US standard keyboard, the '\|' key + */ + KeyCode[KeyCode["Backslash"] = 93] = "Backslash"; + /** + * Used for miscellaneous characters; it can vary by keyboard. + * For the US standard keyboard, the ']}' key + */ + KeyCode[KeyCode["BracketRight"] = 94] = "BracketRight"; + /** + * Used for miscellaneous characters; it can vary by keyboard. + * For the US standard keyboard, the ''"' key + */ + KeyCode[KeyCode["Quote"] = 95] = "Quote"; + /** + * Used for miscellaneous characters; it can vary by keyboard. + */ + KeyCode[KeyCode["OEM_8"] = 96] = "OEM_8"; + /** + * Either the angle bracket key or the backslash key on the RT 102-key keyboard. + */ + KeyCode[KeyCode["IntlBackslash"] = 97] = "IntlBackslash"; + KeyCode[KeyCode["Numpad0"] = 98] = "Numpad0"; + KeyCode[KeyCode["Numpad1"] = 99] = "Numpad1"; + KeyCode[KeyCode["Numpad2"] = 100] = "Numpad2"; + KeyCode[KeyCode["Numpad3"] = 101] = "Numpad3"; + KeyCode[KeyCode["Numpad4"] = 102] = "Numpad4"; + KeyCode[KeyCode["Numpad5"] = 103] = "Numpad5"; + KeyCode[KeyCode["Numpad6"] = 104] = "Numpad6"; + KeyCode[KeyCode["Numpad7"] = 105] = "Numpad7"; + KeyCode[KeyCode["Numpad8"] = 106] = "Numpad8"; + KeyCode[KeyCode["Numpad9"] = 107] = "Numpad9"; + KeyCode[KeyCode["NumpadMultiply"] = 108] = "NumpadMultiply"; + KeyCode[KeyCode["NumpadAdd"] = 109] = "NumpadAdd"; + KeyCode[KeyCode["NUMPAD_SEPARATOR"] = 110] = "NUMPAD_SEPARATOR"; + KeyCode[KeyCode["NumpadSubtract"] = 111] = "NumpadSubtract"; + KeyCode[KeyCode["NumpadDecimal"] = 112] = "NumpadDecimal"; + KeyCode[KeyCode["NumpadDivide"] = 113] = "NumpadDivide"; + /** + * Cover all key codes when IME is processing input. + */ + KeyCode[KeyCode["KEY_IN_COMPOSITION"] = 114] = "KEY_IN_COMPOSITION"; + KeyCode[KeyCode["ABNT_C1"] = 115] = "ABNT_C1"; + KeyCode[KeyCode["ABNT_C2"] = 116] = "ABNT_C2"; + KeyCode[KeyCode["AudioVolumeMute"] = 117] = "AudioVolumeMute"; + KeyCode[KeyCode["AudioVolumeUp"] = 118] = "AudioVolumeUp"; + KeyCode[KeyCode["AudioVolumeDown"] = 119] = "AudioVolumeDown"; + KeyCode[KeyCode["BrowserSearch"] = 120] = "BrowserSearch"; + KeyCode[KeyCode["BrowserHome"] = 121] = "BrowserHome"; + KeyCode[KeyCode["BrowserBack"] = 122] = "BrowserBack"; + KeyCode[KeyCode["BrowserForward"] = 123] = "BrowserForward"; + KeyCode[KeyCode["MediaTrackNext"] = 124] = "MediaTrackNext"; + KeyCode[KeyCode["MediaTrackPrevious"] = 125] = "MediaTrackPrevious"; + KeyCode[KeyCode["MediaStop"] = 126] = "MediaStop"; + KeyCode[KeyCode["MediaPlayPause"] = 127] = "MediaPlayPause"; + KeyCode[KeyCode["LaunchMediaPlayer"] = 128] = "LaunchMediaPlayer"; + KeyCode[KeyCode["LaunchMail"] = 129] = "LaunchMail"; + KeyCode[KeyCode["LaunchApp2"] = 130] = "LaunchApp2"; + /** + * VK_CLEAR, 0x0C, CLEAR key + */ + KeyCode[KeyCode["Clear"] = 131] = "Clear"; + /** + * Placed last to cover the length of the enum. + * Please do not depend on this value! + */ + KeyCode[KeyCode["MAX_VALUE"] = 132] = "MAX_VALUE"; +})(KeyCode || (KeyCode = {})); +var MarkerSeverity; +(function (MarkerSeverity) { + MarkerSeverity[MarkerSeverity["Hint"] = 1] = "Hint"; + MarkerSeverity[MarkerSeverity["Info"] = 2] = "Info"; + MarkerSeverity[MarkerSeverity["Warning"] = 4] = "Warning"; + MarkerSeverity[MarkerSeverity["Error"] = 8] = "Error"; +})(MarkerSeverity || (MarkerSeverity = {})); +var MarkerTag; +(function (MarkerTag) { + MarkerTag[MarkerTag["Unnecessary"] = 1] = "Unnecessary"; + MarkerTag[MarkerTag["Deprecated"] = 2] = "Deprecated"; +})(MarkerTag || (MarkerTag = {})); +/** + * Position in the minimap to render the decoration. + */ +var MinimapPosition$1; +(function (MinimapPosition) { + MinimapPosition[MinimapPosition["Inline"] = 1] = "Inline"; + MinimapPosition[MinimapPosition["Gutter"] = 2] = "Gutter"; +})(MinimapPosition$1 || (MinimapPosition$1 = {})); +/** + * Type of hit element with the mouse in the editor. + */ +var MouseTargetType; +(function (MouseTargetType) { + /** + * Mouse is on top of an unknown element. + */ + MouseTargetType[MouseTargetType["UNKNOWN"] = 0] = "UNKNOWN"; + /** + * Mouse is on top of the textarea used for input. + */ + MouseTargetType[MouseTargetType["TEXTAREA"] = 1] = "TEXTAREA"; + /** + * Mouse is on top of the glyph margin + */ + MouseTargetType[MouseTargetType["GUTTER_GLYPH_MARGIN"] = 2] = "GUTTER_GLYPH_MARGIN"; + /** + * Mouse is on top of the line numbers + */ + MouseTargetType[MouseTargetType["GUTTER_LINE_NUMBERS"] = 3] = "GUTTER_LINE_NUMBERS"; + /** + * Mouse is on top of the line decorations + */ + MouseTargetType[MouseTargetType["GUTTER_LINE_DECORATIONS"] = 4] = "GUTTER_LINE_DECORATIONS"; + /** + * Mouse is on top of the whitespace left in the gutter by a view zone. + */ + MouseTargetType[MouseTargetType["GUTTER_VIEW_ZONE"] = 5] = "GUTTER_VIEW_ZONE"; + /** + * Mouse is on top of text in the content. + */ + MouseTargetType[MouseTargetType["CONTENT_TEXT"] = 6] = "CONTENT_TEXT"; + /** + * Mouse is on top of empty space in the content (e.g. after line text or below last line) + */ + MouseTargetType[MouseTargetType["CONTENT_EMPTY"] = 7] = "CONTENT_EMPTY"; + /** + * Mouse is on top of a view zone in the content. + */ + MouseTargetType[MouseTargetType["CONTENT_VIEW_ZONE"] = 8] = "CONTENT_VIEW_ZONE"; + /** + * Mouse is on top of a content widget. + */ + MouseTargetType[MouseTargetType["CONTENT_WIDGET"] = 9] = "CONTENT_WIDGET"; + /** + * Mouse is on top of the decorations overview ruler. + */ + MouseTargetType[MouseTargetType["OVERVIEW_RULER"] = 10] = "OVERVIEW_RULER"; + /** + * Mouse is on top of a scrollbar. + */ + MouseTargetType[MouseTargetType["SCROLLBAR"] = 11] = "SCROLLBAR"; + /** + * Mouse is on top of an overlay widget. + */ + MouseTargetType[MouseTargetType["OVERLAY_WIDGET"] = 12] = "OVERLAY_WIDGET"; + /** + * Mouse is outside of the editor. + */ + MouseTargetType[MouseTargetType["OUTSIDE_EDITOR"] = 13] = "OUTSIDE_EDITOR"; +})(MouseTargetType || (MouseTargetType = {})); +/** + * A positioning preference for rendering overlay widgets. + */ +var OverlayWidgetPositionPreference; +(function (OverlayWidgetPositionPreference) { + /** + * Position the overlay widget in the top right corner + */ + OverlayWidgetPositionPreference[OverlayWidgetPositionPreference["TOP_RIGHT_CORNER"] = 0] = "TOP_RIGHT_CORNER"; + /** + * Position the overlay widget in the bottom right corner + */ + OverlayWidgetPositionPreference[OverlayWidgetPositionPreference["BOTTOM_RIGHT_CORNER"] = 1] = "BOTTOM_RIGHT_CORNER"; + /** + * Position the overlay widget in the top center + */ + OverlayWidgetPositionPreference[OverlayWidgetPositionPreference["TOP_CENTER"] = 2] = "TOP_CENTER"; +})(OverlayWidgetPositionPreference || (OverlayWidgetPositionPreference = {})); +/** + * Vertical Lane in the overview ruler of the editor. + */ +var OverviewRulerLane$1; +(function (OverviewRulerLane) { + OverviewRulerLane[OverviewRulerLane["Left"] = 1] = "Left"; + OverviewRulerLane[OverviewRulerLane["Center"] = 2] = "Center"; + OverviewRulerLane[OverviewRulerLane["Right"] = 4] = "Right"; + OverviewRulerLane[OverviewRulerLane["Full"] = 7] = "Full"; +})(OverviewRulerLane$1 || (OverviewRulerLane$1 = {})); +var PositionAffinity; +(function (PositionAffinity) { + /** + * Prefers the left most position. + */ + PositionAffinity[PositionAffinity["Left"] = 0] = "Left"; + /** + * Prefers the right most position. + */ + PositionAffinity[PositionAffinity["Right"] = 1] = "Right"; + /** + * No preference. + */ + PositionAffinity[PositionAffinity["None"] = 2] = "None"; + /** + * If the given position is on injected text, prefers the position left of it. + */ + PositionAffinity[PositionAffinity["LeftOfInjectedText"] = 3] = "LeftOfInjectedText"; + /** + * If the given position is on injected text, prefers the position right of it. + */ + PositionAffinity[PositionAffinity["RightOfInjectedText"] = 4] = "RightOfInjectedText"; +})(PositionAffinity || (PositionAffinity = {})); +var RenderLineNumbersType; +(function (RenderLineNumbersType) { + RenderLineNumbersType[RenderLineNumbersType["Off"] = 0] = "Off"; + RenderLineNumbersType[RenderLineNumbersType["On"] = 1] = "On"; + RenderLineNumbersType[RenderLineNumbersType["Relative"] = 2] = "Relative"; + RenderLineNumbersType[RenderLineNumbersType["Interval"] = 3] = "Interval"; + RenderLineNumbersType[RenderLineNumbersType["Custom"] = 4] = "Custom"; +})(RenderLineNumbersType || (RenderLineNumbersType = {})); +var RenderMinimap; +(function (RenderMinimap) { + RenderMinimap[RenderMinimap["None"] = 0] = "None"; + RenderMinimap[RenderMinimap["Text"] = 1] = "Text"; + RenderMinimap[RenderMinimap["Blocks"] = 2] = "Blocks"; +})(RenderMinimap || (RenderMinimap = {})); +var ScrollType; +(function (ScrollType) { + ScrollType[ScrollType["Smooth"] = 0] = "Smooth"; + ScrollType[ScrollType["Immediate"] = 1] = "Immediate"; +})(ScrollType || (ScrollType = {})); +var ScrollbarVisibility; +(function (ScrollbarVisibility) { + ScrollbarVisibility[ScrollbarVisibility["Auto"] = 1] = "Auto"; + ScrollbarVisibility[ScrollbarVisibility["Hidden"] = 2] = "Hidden"; + ScrollbarVisibility[ScrollbarVisibility["Visible"] = 3] = "Visible"; +})(ScrollbarVisibility || (ScrollbarVisibility = {})); +/** + * The direction of a selection. + */ +var SelectionDirection; +(function (SelectionDirection) { + /** + * The selection starts above where it ends. + */ + SelectionDirection[SelectionDirection["LTR"] = 0] = "LTR"; + /** + * The selection starts below where it ends. + */ + SelectionDirection[SelectionDirection["RTL"] = 1] = "RTL"; +})(SelectionDirection || (SelectionDirection = {})); +var ShowAiIconMode; +(function (ShowAiIconMode) { + ShowAiIconMode["Off"] = "off"; + ShowAiIconMode["OnCode"] = "onCode"; + ShowAiIconMode["On"] = "on"; +})(ShowAiIconMode || (ShowAiIconMode = {})); +var SignatureHelpTriggerKind; +(function (SignatureHelpTriggerKind) { + SignatureHelpTriggerKind[SignatureHelpTriggerKind["Invoke"] = 1] = "Invoke"; + SignatureHelpTriggerKind[SignatureHelpTriggerKind["TriggerCharacter"] = 2] = "TriggerCharacter"; + SignatureHelpTriggerKind[SignatureHelpTriggerKind["ContentChange"] = 3] = "ContentChange"; +})(SignatureHelpTriggerKind || (SignatureHelpTriggerKind = {})); +/** + * A symbol kind. + */ +var SymbolKind$2; +(function (SymbolKind) { + SymbolKind[SymbolKind["File"] = 0] = "File"; + SymbolKind[SymbolKind["Module"] = 1] = "Module"; + SymbolKind[SymbolKind["Namespace"] = 2] = "Namespace"; + SymbolKind[SymbolKind["Package"] = 3] = "Package"; + SymbolKind[SymbolKind["Class"] = 4] = "Class"; + SymbolKind[SymbolKind["Method"] = 5] = "Method"; + SymbolKind[SymbolKind["Property"] = 6] = "Property"; + SymbolKind[SymbolKind["Field"] = 7] = "Field"; + SymbolKind[SymbolKind["Constructor"] = 8] = "Constructor"; + SymbolKind[SymbolKind["Enum"] = 9] = "Enum"; + SymbolKind[SymbolKind["Interface"] = 10] = "Interface"; + SymbolKind[SymbolKind["Function"] = 11] = "Function"; + SymbolKind[SymbolKind["Variable"] = 12] = "Variable"; + SymbolKind[SymbolKind["Constant"] = 13] = "Constant"; + SymbolKind[SymbolKind["String"] = 14] = "String"; + SymbolKind[SymbolKind["Number"] = 15] = "Number"; + SymbolKind[SymbolKind["Boolean"] = 16] = "Boolean"; + SymbolKind[SymbolKind["Array"] = 17] = "Array"; + SymbolKind[SymbolKind["Object"] = 18] = "Object"; + SymbolKind[SymbolKind["Key"] = 19] = "Key"; + SymbolKind[SymbolKind["Null"] = 20] = "Null"; + SymbolKind[SymbolKind["EnumMember"] = 21] = "EnumMember"; + SymbolKind[SymbolKind["Struct"] = 22] = "Struct"; + SymbolKind[SymbolKind["Event"] = 23] = "Event"; + SymbolKind[SymbolKind["Operator"] = 24] = "Operator"; + SymbolKind[SymbolKind["TypeParameter"] = 25] = "TypeParameter"; +})(SymbolKind$2 || (SymbolKind$2 = {})); +var SymbolTag$1; +(function (SymbolTag) { + SymbolTag[SymbolTag["Deprecated"] = 1] = "Deprecated"; +})(SymbolTag$1 || (SymbolTag$1 = {})); +/** + * The kind of animation in which the editor's cursor should be rendered. + */ +var TextEditorCursorBlinkingStyle; +(function (TextEditorCursorBlinkingStyle) { + /** + * Hidden + */ + TextEditorCursorBlinkingStyle[TextEditorCursorBlinkingStyle["Hidden"] = 0] = "Hidden"; + /** + * Blinking + */ + TextEditorCursorBlinkingStyle[TextEditorCursorBlinkingStyle["Blink"] = 1] = "Blink"; + /** + * Blinking with smooth fading + */ + TextEditorCursorBlinkingStyle[TextEditorCursorBlinkingStyle["Smooth"] = 2] = "Smooth"; + /** + * Blinking with prolonged filled state and smooth fading + */ + TextEditorCursorBlinkingStyle[TextEditorCursorBlinkingStyle["Phase"] = 3] = "Phase"; + /** + * Expand collapse animation on the y axis + */ + TextEditorCursorBlinkingStyle[TextEditorCursorBlinkingStyle["Expand"] = 4] = "Expand"; + /** + * No-Blinking + */ + TextEditorCursorBlinkingStyle[TextEditorCursorBlinkingStyle["Solid"] = 5] = "Solid"; +})(TextEditorCursorBlinkingStyle || (TextEditorCursorBlinkingStyle = {})); +/** + * The style in which the editor's cursor should be rendered. + */ +var TextEditorCursorStyle; +(function (TextEditorCursorStyle) { + /** + * As a vertical line (sitting between two characters). + */ + TextEditorCursorStyle[TextEditorCursorStyle["Line"] = 1] = "Line"; + /** + * As a block (sitting on top of a character). + */ + TextEditorCursorStyle[TextEditorCursorStyle["Block"] = 2] = "Block"; + /** + * As a horizontal line (sitting under a character). + */ + TextEditorCursorStyle[TextEditorCursorStyle["Underline"] = 3] = "Underline"; + /** + * As a thin vertical line (sitting between two characters). + */ + TextEditorCursorStyle[TextEditorCursorStyle["LineThin"] = 4] = "LineThin"; + /** + * As an outlined block (sitting on top of a character). + */ + TextEditorCursorStyle[TextEditorCursorStyle["BlockOutline"] = 5] = "BlockOutline"; + /** + * As a thin horizontal line (sitting under a character). + */ + TextEditorCursorStyle[TextEditorCursorStyle["UnderlineThin"] = 6] = "UnderlineThin"; +})(TextEditorCursorStyle || (TextEditorCursorStyle = {})); +/** + * Describes the behavior of decorations when typing/editing near their edges. + * Note: Please do not edit the values, as they very carefully match `DecorationRangeBehavior` + */ +var TrackedRangeStickiness; +(function (TrackedRangeStickiness) { + TrackedRangeStickiness[TrackedRangeStickiness["AlwaysGrowsWhenTypingAtEdges"] = 0] = "AlwaysGrowsWhenTypingAtEdges"; + TrackedRangeStickiness[TrackedRangeStickiness["NeverGrowsWhenTypingAtEdges"] = 1] = "NeverGrowsWhenTypingAtEdges"; + TrackedRangeStickiness[TrackedRangeStickiness["GrowsOnlyWhenTypingBefore"] = 2] = "GrowsOnlyWhenTypingBefore"; + TrackedRangeStickiness[TrackedRangeStickiness["GrowsOnlyWhenTypingAfter"] = 3] = "GrowsOnlyWhenTypingAfter"; +})(TrackedRangeStickiness || (TrackedRangeStickiness = {})); +/** + * Describes how to indent wrapped lines. + */ +var WrappingIndent; +(function (WrappingIndent) { + /** + * No indentation => wrapped lines begin at column 1. + */ + WrappingIndent[WrappingIndent["None"] = 0] = "None"; + /** + * Same => wrapped lines get the same indentation as the parent. + */ + WrappingIndent[WrappingIndent["Same"] = 1] = "Same"; + /** + * Indent => wrapped lines get +1 indentation toward the parent. + */ + WrappingIndent[WrappingIndent["Indent"] = 2] = "Indent"; + /** + * DeepIndent => wrapped lines get +2 indentation toward the parent. + */ + WrappingIndent[WrappingIndent["DeepIndent"] = 3] = "DeepIndent"; +})(WrappingIndent || (WrappingIndent = {})); + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +class KeyMod { + static chord(firstPart, secondPart) { + return KeyChord(firstPart, secondPart); + } +} +KeyMod.CtrlCmd = 2048 /* ConstKeyMod.CtrlCmd */; +KeyMod.Shift = 1024 /* ConstKeyMod.Shift */; +KeyMod.Alt = 512 /* ConstKeyMod.Alt */; +KeyMod.WinCtrl = 256 /* ConstKeyMod.WinCtrl */; +function createMonacoBaseAPI() { + return { + editor: undefined, // undefined override expected here + languages: undefined, // undefined override expected here + CancellationTokenSource: CancellationTokenSource, + Emitter: Emitter, + KeyCode: KeyCode, + KeyMod: KeyMod, + Position: Position$2, + Range: Range$b, + Selection: Selection, + SelectionDirection: SelectionDirection, + MarkerSeverity: MarkerSeverity, + MarkerTag: MarkerTag, + Uri: URI$2, + Token: Token$1 + }; +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +/** + * Vertical Lane in the overview ruler of the editor. + */ +var OverviewRulerLane; +(function (OverviewRulerLane) { + OverviewRulerLane[OverviewRulerLane["Left"] = 1] = "Left"; + OverviewRulerLane[OverviewRulerLane["Center"] = 2] = "Center"; + OverviewRulerLane[OverviewRulerLane["Right"] = 4] = "Right"; + OverviewRulerLane[OverviewRulerLane["Full"] = 7] = "Full"; +})(OverviewRulerLane || (OverviewRulerLane = {})); +/** + * Vertical Lane in the glyph margin of the editor. + */ +var GlyphMarginLane; +(function (GlyphMarginLane) { + GlyphMarginLane[GlyphMarginLane["Left"] = 1] = "Left"; + GlyphMarginLane[GlyphMarginLane["Right"] = 2] = "Right"; +})(GlyphMarginLane || (GlyphMarginLane = {})); +/** + * Position in the minimap to render the decoration. + */ +var MinimapPosition; +(function (MinimapPosition) { + MinimapPosition[MinimapPosition["Inline"] = 1] = "Inline"; + MinimapPosition[MinimapPosition["Gutter"] = 2] = "Gutter"; +})(MinimapPosition || (MinimapPosition = {})); +var InjectedTextCursorStops; +(function (InjectedTextCursorStops) { + InjectedTextCursorStops[InjectedTextCursorStops["Both"] = 0] = "Both"; + InjectedTextCursorStops[InjectedTextCursorStops["Right"] = 1] = "Right"; + InjectedTextCursorStops[InjectedTextCursorStops["Left"] = 2] = "Left"; + InjectedTextCursorStops[InjectedTextCursorStops["None"] = 3] = "None"; +})(InjectedTextCursorStops || (InjectedTextCursorStops = {})); + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +function leftIsWordBounday(wordSeparators, text, textLength, matchStartIndex, matchLength) { + if (matchStartIndex === 0) { + // Match starts at start of string + return true; + } + const charBefore = text.charCodeAt(matchStartIndex - 1); + if (wordSeparators.get(charBefore) !== 0 /* WordCharacterClass.Regular */) { + // The character before the match is a word separator + return true; + } + if (charBefore === 13 /* CharCode.CarriageReturn */ || charBefore === 10 /* CharCode.LineFeed */) { + // The character before the match is line break or carriage return. + return true; + } + if (matchLength > 0) { + const firstCharInMatch = text.charCodeAt(matchStartIndex); + if (wordSeparators.get(firstCharInMatch) !== 0 /* WordCharacterClass.Regular */) { + // The first character inside the match is a word separator + return true; + } + } + return false; +} +function rightIsWordBounday(wordSeparators, text, textLength, matchStartIndex, matchLength) { + if (matchStartIndex + matchLength === textLength) { + // Match ends at end of string + return true; + } + const charAfter = text.charCodeAt(matchStartIndex + matchLength); + if (wordSeparators.get(charAfter) !== 0 /* WordCharacterClass.Regular */) { + // The character after the match is a word separator + return true; + } + if (charAfter === 13 /* CharCode.CarriageReturn */ || charAfter === 10 /* CharCode.LineFeed */) { + // The character after the match is line break or carriage return. + return true; + } + if (matchLength > 0) { + const lastCharInMatch = text.charCodeAt(matchStartIndex + matchLength - 1); + if (wordSeparators.get(lastCharInMatch) !== 0 /* WordCharacterClass.Regular */) { + // The last character in the match is a word separator + return true; + } + } + return false; +} +function isValidMatch(wordSeparators, text, textLength, matchStartIndex, matchLength) { + return (leftIsWordBounday(wordSeparators, text, textLength, matchStartIndex, matchLength) + && rightIsWordBounday(wordSeparators, text, textLength, matchStartIndex, matchLength)); +} +class Searcher { + constructor(wordSeparators, searchRegex) { + this._wordSeparators = wordSeparators; + this._searchRegex = searchRegex; + this._prevMatchStartIndex = -1; + this._prevMatchLength = 0; + } + reset(lastIndex) { + this._searchRegex.lastIndex = lastIndex; + this._prevMatchStartIndex = -1; + this._prevMatchLength = 0; + } + next(text) { + const textLength = text.length; + let m; + do { + if (this._prevMatchStartIndex + this._prevMatchLength === textLength) { + // Reached the end of the line + return null; + } + m = this._searchRegex.exec(text); + if (!m) { + return null; + } + const matchStartIndex = m.index; + const matchLength = m[0].length; + if (matchStartIndex === this._prevMatchStartIndex && matchLength === this._prevMatchLength) { + if (matchLength === 0) { + // the search result is an empty string and won't advance `regex.lastIndex`, so `regex.exec` will stuck here + // we attempt to recover from that by advancing by two if surrogate pair found and by one otherwise + if (getNextCodePoint(text, textLength, this._searchRegex.lastIndex) > 0xFFFF) { + this._searchRegex.lastIndex += 2; + } + else { + this._searchRegex.lastIndex += 1; + } + continue; + } + // Exit early if the regex matches the same range twice + return null; + } + this._prevMatchStartIndex = matchStartIndex; + this._prevMatchLength = matchLength; + if (!this._wordSeparators || isValidMatch(this._wordSeparators, text, textLength, matchStartIndex, matchLength)) { + return m; + } + } while (m); + return null; + } +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +function assertNever(value, message = 'Unreachable') { + throw new Error(message); +} +/** + * condition must be side-effect free! + */ +function assertFn(condition) { + if (!condition()) { + // eslint-disable-next-line no-debugger + debugger; + // Reevaluate `condition` again to make debugging easier + condition(); + onUnexpectedError(new BugIndicatingError('Assertion Failed')); + } +} +function checkAdjacentItems(items, predicate) { + let i = 0; + while (i < items.length - 1) { + const a = items[i]; + const b = items[i + 1]; + if (!predicate(a, b)) { + return false; + } + i++; + } + return true; +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +class UnicodeTextModelHighlighter { + static computeUnicodeHighlights(model, options, range) { + const startLine = range ? range.startLineNumber : 1; + const endLine = range ? range.endLineNumber : model.getLineCount(); + const codePointHighlighter = new CodePointHighlighter(options); + const candidates = codePointHighlighter.getCandidateCodePoints(); + let regex; + if (candidates === 'allNonBasicAscii') { + regex = new RegExp('[^\\t\\n\\r\\x20-\\x7E]', 'g'); + } + else { + regex = new RegExp(`${buildRegExpCharClassExpr(Array.from(candidates))}`, 'g'); + } + const searcher = new Searcher(null, regex); + const ranges = []; + let hasMore = false; + let m; + let ambiguousCharacterCount = 0; + let invisibleCharacterCount = 0; + let nonBasicAsciiCharacterCount = 0; + forLoop: for (let lineNumber = startLine, lineCount = endLine; lineNumber <= lineCount; lineNumber++) { + const lineContent = model.getLineContent(lineNumber); + const lineLength = lineContent.length; + // Reset regex to search from the beginning + searcher.reset(0); + do { + m = searcher.next(lineContent); + if (m) { + let startIndex = m.index; + let endIndex = m.index + m[0].length; + // Extend range to entire code point + if (startIndex > 0) { + const charCodeBefore = lineContent.charCodeAt(startIndex - 1); + if (isHighSurrogate(charCodeBefore)) { + startIndex--; + } + } + if (endIndex + 1 < lineLength) { + const charCodeBefore = lineContent.charCodeAt(endIndex - 1); + if (isHighSurrogate(charCodeBefore)) { + endIndex++; + } + } + const str = lineContent.substring(startIndex, endIndex); + let word = getWordAtText(startIndex + 1, DEFAULT_WORD_REGEXP, lineContent, 0); + if (word && word.endColumn <= startIndex + 1) { + // The word does not include the problematic character, ignore the word + word = null; + } + const highlightReason = codePointHighlighter.shouldHighlightNonBasicASCII(str, word ? word.word : null); + if (highlightReason !== 0 /* SimpleHighlightReason.None */) { + if (highlightReason === 3 /* SimpleHighlightReason.Ambiguous */) { + ambiguousCharacterCount++; + } + else if (highlightReason === 2 /* SimpleHighlightReason.Invisible */) { + invisibleCharacterCount++; + } + else if (highlightReason === 1 /* SimpleHighlightReason.NonBasicASCII */) { + nonBasicAsciiCharacterCount++; + } + else { + assertNever(); + } + const MAX_RESULT_LENGTH = 1000; + if (ranges.length >= MAX_RESULT_LENGTH) { + hasMore = true; + break forLoop; + } + ranges.push(new Range$b(lineNumber, startIndex + 1, lineNumber, endIndex + 1)); + } + } + } while (m); + } + return { + ranges, + hasMore, + ambiguousCharacterCount, + invisibleCharacterCount, + nonBasicAsciiCharacterCount + }; + } + static computeUnicodeHighlightReason(char, options) { + const codePointHighlighter = new CodePointHighlighter(options); + const reason = codePointHighlighter.shouldHighlightNonBasicASCII(char, null); + switch (reason) { + case 0 /* SimpleHighlightReason.None */: + return null; + case 2 /* SimpleHighlightReason.Invisible */: + return { kind: 1 /* UnicodeHighlighterReasonKind.Invisible */ }; + case 3 /* SimpleHighlightReason.Ambiguous */: { + const codePoint = char.codePointAt(0); + const primaryConfusable = codePointHighlighter.ambiguousCharacters.getPrimaryConfusable(codePoint); + const notAmbiguousInLocales = AmbiguousCharacters.getLocales().filter((l) => !AmbiguousCharacters.getInstance(new Set([...options.allowedLocales, l])).isAmbiguous(codePoint)); + return { kind: 0 /* UnicodeHighlighterReasonKind.Ambiguous */, confusableWith: String.fromCodePoint(primaryConfusable), notAmbiguousInLocales }; + } + case 1 /* SimpleHighlightReason.NonBasicASCII */: + return { kind: 2 /* UnicodeHighlighterReasonKind.NonBasicAscii */ }; + } + } +} +function buildRegExpCharClassExpr(codePoints, flags) { + const src = `[${escapeRegExpCharacters(codePoints.map((i) => String.fromCodePoint(i)).join(''))}]`; + return src; +} +class CodePointHighlighter { + constructor(options) { + this.options = options; + this.allowedCodePoints = new Set(options.allowedCodePoints); + this.ambiguousCharacters = AmbiguousCharacters.getInstance(new Set(options.allowedLocales)); + } + getCandidateCodePoints() { + if (this.options.nonBasicASCII) { + return 'allNonBasicAscii'; + } + const set = new Set(); + if (this.options.invisibleCharacters) { + for (const cp of InvisibleCharacters.codePoints) { + if (!isAllowedInvisibleCharacter(String.fromCodePoint(cp))) { + set.add(cp); + } + } + } + if (this.options.ambiguousCharacters) { + for (const cp of this.ambiguousCharacters.getConfusableCodePoints()) { + set.add(cp); + } + } + for (const cp of this.allowedCodePoints) { + set.delete(cp); + } + return set; + } + shouldHighlightNonBasicASCII(character, wordContext) { + const codePoint = character.codePointAt(0); + if (this.allowedCodePoints.has(codePoint)) { + return 0 /* SimpleHighlightReason.None */; + } + if (this.options.nonBasicASCII) { + return 1 /* SimpleHighlightReason.NonBasicASCII */; + } + let hasBasicASCIICharacters = false; + let hasNonConfusableNonBasicAsciiCharacter = false; + if (wordContext) { + for (const char of wordContext) { + const codePoint = char.codePointAt(0); + const isBasicASCII$1 = isBasicASCII(char); + hasBasicASCIICharacters = hasBasicASCIICharacters || isBasicASCII$1; + if (!isBasicASCII$1 && + !this.ambiguousCharacters.isAmbiguous(codePoint) && + !InvisibleCharacters.isInvisibleCharacter(codePoint)) { + hasNonConfusableNonBasicAsciiCharacter = true; + } + } + } + if ( + /* Don't allow mixing weird looking characters with ASCII */ !hasBasicASCIICharacters && + /* Is there an obviously weird looking character? */ hasNonConfusableNonBasicAsciiCharacter) { + return 0 /* SimpleHighlightReason.None */; + } + if (this.options.invisibleCharacters) { + // TODO check for emojis + if (!isAllowedInvisibleCharacter(character) && InvisibleCharacters.isInvisibleCharacter(codePoint)) { + return 2 /* SimpleHighlightReason.Invisible */; + } + } + if (this.options.ambiguousCharacters) { + if (this.ambiguousCharacters.isAmbiguous(codePoint)) { + return 3 /* SimpleHighlightReason.Ambiguous */; + } + } + return 0 /* SimpleHighlightReason.None */; + } +} +function isAllowedInvisibleCharacter(character) { + return character === ' ' || character === '\n' || character === '\t'; +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +class LinesDiff { + constructor(changes, + /** + * Sorted by original line ranges. + * The original line ranges and the modified line ranges must be disjoint (but can be touching). + */ + moves, + /** + * Indicates if the time out was reached. + * In that case, the diffs might be an approximation and the user should be asked to rerun the diff with more time. + */ + hitTimeout) { + this.changes = changes; + this.moves = moves; + this.hitTimeout = hitTimeout; + } +} +class MovedText { + constructor(lineRangeMapping, changes) { + this.lineRangeMapping = lineRangeMapping; + this.changes = changes; + } +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +/** + * A range of offsets (0-based). +*/ +class OffsetRange { + static addRange(range, sortedRanges) { + let i = 0; + while (i < sortedRanges.length && sortedRanges[i].endExclusive < range.start) { + i++; + } + let j = i; + while (j < sortedRanges.length && sortedRanges[j].start <= range.endExclusive) { + j++; + } + if (i === j) { + sortedRanges.splice(i, 0, range); + } + else { + const start = Math.min(range.start, sortedRanges[i].start); + const end = Math.max(range.endExclusive, sortedRanges[j - 1].endExclusive); + sortedRanges.splice(i, j - i, new OffsetRange(start, end)); + } + } + static tryCreate(start, endExclusive) { + if (start > endExclusive) { + return undefined; + } + return new OffsetRange(start, endExclusive); + } + static ofLength(length) { + return new OffsetRange(0, length); + } + static ofStartAndLength(start, length) { + return new OffsetRange(start, start + length); + } + constructor(start, endExclusive) { + this.start = start; + this.endExclusive = endExclusive; + if (start > endExclusive) { + throw new BugIndicatingError(`Invalid range: ${this.toString()}`); + } + } + get isEmpty() { + return this.start === this.endExclusive; + } + delta(offset) { + return new OffsetRange(this.start + offset, this.endExclusive + offset); + } + deltaStart(offset) { + return new OffsetRange(this.start + offset, this.endExclusive); + } + deltaEnd(offset) { + return new OffsetRange(this.start, this.endExclusive + offset); + } + get length() { + return this.endExclusive - this.start; + } + toString() { + return `[${this.start}, ${this.endExclusive})`; + } + equals(other) { + return this.start === other.start && this.endExclusive === other.endExclusive; + } + containsRange(other) { + return this.start <= other.start && other.endExclusive <= this.endExclusive; + } + contains(offset) { + return this.start <= offset && offset < this.endExclusive; + } + /** + * for all numbers n: range1.contains(n) or range2.contains(n) => range1.join(range2).contains(n) + * The joined range is the smallest range that contains both ranges. + */ + join(other) { + return new OffsetRange(Math.min(this.start, other.start), Math.max(this.endExclusive, other.endExclusive)); + } + /** + * for all numbers n: range1.contains(n) and range2.contains(n) <=> range1.intersect(range2).contains(n) + * + * The resulting range is empty if the ranges do not intersect, but touch. + * If the ranges don't even touch, the result is undefined. + */ + intersect(other) { + const start = Math.max(this.start, other.start); + const end = Math.min(this.endExclusive, other.endExclusive); + if (start <= end) { + return new OffsetRange(start, end); + } + return undefined; + } + isBefore(other) { + return this.endExclusive <= other.start; + } + isAfter(other) { + return this.start >= other.endExclusive; + } + slice(arr) { + return arr.slice(this.start, this.endExclusive); + } + /** + * Returns the given value if it is contained in this instance, otherwise the closest value that is contained. + * The range must not be empty. + */ + clip(value) { + if (this.isEmpty) { + throw new BugIndicatingError(`Invalid clipping range: ${this.toString()}`); + } + return Math.max(this.start, Math.min(this.endExclusive - 1, value)); + } + /** + * Returns `r := value + k * length` such that `r` is contained in this range. + * The range must not be empty. + * + * E.g. `[5, 10).clipCyclic(10) === 5`, `[5, 10).clipCyclic(11) === 6` and `[5, 10).clipCyclic(4) === 9`. + */ + clipCyclic(value) { + if (this.isEmpty) { + throw new BugIndicatingError(`Invalid clipping range: ${this.toString()}`); + } + if (value < this.start) { + return this.endExclusive - ((this.start - value) % this.length); + } + if (value >= this.endExclusive) { + return this.start + ((value - this.start) % this.length); + } + return value; + } + forEach(f) { + for (let i = this.start; i < this.endExclusive; i++) { + f(i); + } + } +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +/** + * Finds the last item where predicate is true using binary search. + * `predicate` must be monotonous, i.e. `arr.map(predicate)` must be like `[true, ..., true, false, ..., false]`! + * + * @returns `undefined` if no item matches, otherwise the last item that matches the predicate. + */ +function findLastMonotonous(array, predicate) { + const idx = findLastIdxMonotonous(array, predicate); + return idx === -1 ? undefined : array[idx]; +} +/** + * Finds the last item where predicate is true using binary search. + * `predicate` must be monotonous, i.e. `arr.map(predicate)` must be like `[true, ..., true, false, ..., false]`! + * + * @returns `startIdx - 1` if predicate is false for all items, otherwise the index of the last item that matches the predicate. + */ +function findLastIdxMonotonous(array, predicate, startIdx = 0, endIdxEx = array.length) { + let i = startIdx; + let j = endIdxEx; + while (i < j) { + const k = Math.floor((i + j) / 2); + if (predicate(array[k])) { + i = k + 1; + } + else { + j = k; + } + } + return i - 1; +} +/** + * Finds the first item where predicate is true using binary search. + * `predicate` must be monotonous, i.e. `arr.map(predicate)` must be like `[false, ..., false, true, ..., true]`! + * + * @returns `undefined` if no item matches, otherwise the first item that matches the predicate. + */ +function findFirstMonotonous(array, predicate) { + const idx = findFirstIdxMonotonousOrArrLen(array, predicate); + return idx === array.length ? undefined : array[idx]; +} +/** + * Finds the first item where predicate is true using binary search. + * `predicate` must be monotonous, i.e. `arr.map(predicate)` must be like `[false, ..., false, true, ..., true]`! + * + * @returns `endIdxEx` if predicate is false for all items, otherwise the index of the first item that matches the predicate. + */ +function findFirstIdxMonotonousOrArrLen(array, predicate, startIdx = 0, endIdxEx = array.length) { + let i = startIdx; + let j = endIdxEx; + while (i < j) { + const k = Math.floor((i + j) / 2); + if (predicate(array[k])) { + j = k; + } + else { + i = k + 1; + } + } + return i; +} +/** + * Use this when + * * You have a sorted array + * * You query this array with a monotonous predicate to find the last item that has a certain property. + * * You query this array multiple times with monotonous predicates that get weaker and weaker. + */ +class MonotonousArray { + constructor(_array) { + this._array = _array; + this._findLastMonotonousLastIdx = 0; + } + /** + * The predicate must be monotonous, i.e. `arr.map(predicate)` must be like `[true, ..., true, false, ..., false]`! + * For subsequent calls, current predicate must be weaker than (or equal to) the previous predicate, i.e. more entries must be `true`. + */ + findLastMonotonous(predicate) { + if (MonotonousArray.assertInvariants) { + if (this._prevFindLastPredicate) { + for (const item of this._array) { + if (this._prevFindLastPredicate(item) && !predicate(item)) { + throw new Error('MonotonousArray: current predicate must be weaker than (or equal to) the previous predicate.'); + } + } + } + this._prevFindLastPredicate = predicate; + } + const idx = findLastIdxMonotonous(this._array, predicate, this._findLastMonotonousLastIdx); + this._findLastMonotonousLastIdx = idx + 1; + return idx === -1 ? undefined : this._array[idx]; + } +} +MonotonousArray.assertInvariants = false; + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +/** + * A range of lines (1-based). + */ +class LineRange { + static fromRange(range) { + return new LineRange(range.startLineNumber, range.endLineNumber); + } + static fromRangeInclusive(range) { + return new LineRange(range.startLineNumber, range.endLineNumber + 1); + } + /** + * @param lineRanges An array of sorted line ranges. + */ + static joinMany(lineRanges) { + if (lineRanges.length === 0) { + return []; + } + let result = new LineRangeSet(lineRanges[0].slice()); + for (let i = 1; i < lineRanges.length; i++) { + result = result.getUnion(new LineRangeSet(lineRanges[i].slice())); + } + return result.ranges; + } + static ofLength(startLineNumber, length) { + return new LineRange(startLineNumber, startLineNumber + length); + } + /** + * @internal + */ + static deserialize(lineRange) { + return new LineRange(lineRange[0], lineRange[1]); + } + constructor(startLineNumber, endLineNumberExclusive) { + if (startLineNumber > endLineNumberExclusive) { + throw new BugIndicatingError(`startLineNumber ${startLineNumber} cannot be after endLineNumberExclusive ${endLineNumberExclusive}`); + } + this.startLineNumber = startLineNumber; + this.endLineNumberExclusive = endLineNumberExclusive; + } + /** + * Indicates if this line range contains the given line number. + */ + contains(lineNumber) { + return this.startLineNumber <= lineNumber && lineNumber < this.endLineNumberExclusive; + } + /** + * Indicates if this line range is empty. + */ + get isEmpty() { + return this.startLineNumber === this.endLineNumberExclusive; + } + /** + * Moves this line range by the given offset of line numbers. + */ + delta(offset) { + return new LineRange(this.startLineNumber + offset, this.endLineNumberExclusive + offset); + } + deltaLength(offset) { + return new LineRange(this.startLineNumber, this.endLineNumberExclusive + offset); + } + /** + * The number of lines this line range spans. + */ + get length() { + return this.endLineNumberExclusive - this.startLineNumber; + } + /** + * Creates a line range that combines this and the given line range. + */ + join(other) { + return new LineRange(Math.min(this.startLineNumber, other.startLineNumber), Math.max(this.endLineNumberExclusive, other.endLineNumberExclusive)); + } + toString() { + return `[${this.startLineNumber},${this.endLineNumberExclusive})`; + } + /** + * The resulting range is empty if the ranges do not intersect, but touch. + * If the ranges don't even touch, the result is undefined. + */ + intersect(other) { + const startLineNumber = Math.max(this.startLineNumber, other.startLineNumber); + const endLineNumberExclusive = Math.min(this.endLineNumberExclusive, other.endLineNumberExclusive); + if (startLineNumber <= endLineNumberExclusive) { + return new LineRange(startLineNumber, endLineNumberExclusive); + } + return undefined; + } + intersectsStrict(other) { + return this.startLineNumber < other.endLineNumberExclusive && other.startLineNumber < this.endLineNumberExclusive; + } + overlapOrTouch(other) { + return this.startLineNumber <= other.endLineNumberExclusive && other.startLineNumber <= this.endLineNumberExclusive; + } + equals(b) { + return this.startLineNumber === b.startLineNumber && this.endLineNumberExclusive === b.endLineNumberExclusive; + } + toInclusiveRange() { + if (this.isEmpty) { + return null; + } + return new Range$b(this.startLineNumber, 1, this.endLineNumberExclusive - 1, Number.MAX_SAFE_INTEGER); + } + toExclusiveRange() { + return new Range$b(this.startLineNumber, 1, this.endLineNumberExclusive, 1); + } + mapToLineArray(f) { + const result = []; + for (let lineNumber = this.startLineNumber; lineNumber < this.endLineNumberExclusive; lineNumber++) { + result.push(f(lineNumber)); + } + return result; + } + forEach(f) { + for (let lineNumber = this.startLineNumber; lineNumber < this.endLineNumberExclusive; lineNumber++) { + f(lineNumber); + } + } + /** + * @internal + */ + serialize() { + return [this.startLineNumber, this.endLineNumberExclusive]; + } + includes(lineNumber) { + return this.startLineNumber <= lineNumber && lineNumber < this.endLineNumberExclusive; + } + /** + * Converts this 1-based line range to a 0-based offset range (subtracts 1!). + * @internal + */ + toOffsetRange() { + return new OffsetRange(this.startLineNumber - 1, this.endLineNumberExclusive - 1); + } +} +class LineRangeSet { + constructor( + /** + * Sorted by start line number. + * No two line ranges are touching or intersecting. + */ + _normalizedRanges = []) { + this._normalizedRanges = _normalizedRanges; + } + get ranges() { + return this._normalizedRanges; + } + addRange(range) { + if (range.length === 0) { + return; + } + // Idea: Find joinRange such that: + // replaceRange = _normalizedRanges.replaceRange(joinRange, range.joinAll(joinRange.map(idx => this._normalizedRanges[idx]))) + // idx of first element that touches range or that is after range + const joinRangeStartIdx = findFirstIdxMonotonousOrArrLen(this._normalizedRanges, r => r.endLineNumberExclusive >= range.startLineNumber); + // idx of element after { last element that touches range or that is before range } + const joinRangeEndIdxExclusive = findLastIdxMonotonous(this._normalizedRanges, r => r.startLineNumber <= range.endLineNumberExclusive) + 1; + if (joinRangeStartIdx === joinRangeEndIdxExclusive) { + // If there is no element that touches range, then joinRangeStartIdx === joinRangeEndIdxExclusive and that value is the index of the element after range + this._normalizedRanges.splice(joinRangeStartIdx, 0, range); + } + else if (joinRangeStartIdx === joinRangeEndIdxExclusive - 1) { + // Else, there is an element that touches range and in this case it is both the first and last element. Thus we can replace it + const joinRange = this._normalizedRanges[joinRangeStartIdx]; + this._normalizedRanges[joinRangeStartIdx] = joinRange.join(range); + } + else { + // First and last element are different - we need to replace the entire range + const joinRange = this._normalizedRanges[joinRangeStartIdx].join(this._normalizedRanges[joinRangeEndIdxExclusive - 1]).join(range); + this._normalizedRanges.splice(joinRangeStartIdx, joinRangeEndIdxExclusive - joinRangeStartIdx, joinRange); + } + } + contains(lineNumber) { + const rangeThatStartsBeforeEnd = findLastMonotonous(this._normalizedRanges, r => r.startLineNumber <= lineNumber); + return !!rangeThatStartsBeforeEnd && rangeThatStartsBeforeEnd.endLineNumberExclusive > lineNumber; + } + intersects(range) { + const rangeThatStartsBeforeEnd = findLastMonotonous(this._normalizedRanges, r => r.startLineNumber < range.endLineNumberExclusive); + return !!rangeThatStartsBeforeEnd && rangeThatStartsBeforeEnd.endLineNumberExclusive > range.startLineNumber; + } + getUnion(other) { + if (this._normalizedRanges.length === 0) { + return other; + } + if (other._normalizedRanges.length === 0) { + return this; + } + const result = []; + let i1 = 0; + let i2 = 0; + let current = null; + while (i1 < this._normalizedRanges.length || i2 < other._normalizedRanges.length) { + let next = null; + if (i1 < this._normalizedRanges.length && i2 < other._normalizedRanges.length) { + const lineRange1 = this._normalizedRanges[i1]; + const lineRange2 = other._normalizedRanges[i2]; + if (lineRange1.startLineNumber < lineRange2.startLineNumber) { + next = lineRange1; + i1++; + } + else { + next = lineRange2; + i2++; + } + } + else if (i1 < this._normalizedRanges.length) { + next = this._normalizedRanges[i1]; + i1++; + } + else { + next = other._normalizedRanges[i2]; + i2++; + } + if (current === null) { + current = next; + } + else { + if (current.endLineNumberExclusive >= next.startLineNumber) { + // merge + current = new LineRange(current.startLineNumber, Math.max(current.endLineNumberExclusive, next.endLineNumberExclusive)); + } + else { + // push + result.push(current); + current = next; + } + } + } + if (current !== null) { + result.push(current); + } + return new LineRangeSet(result); + } + /** + * Subtracts all ranges in this set from `range` and returns the result. + */ + subtractFrom(range) { + // idx of first element that touches range or that is after range + const joinRangeStartIdx = findFirstIdxMonotonousOrArrLen(this._normalizedRanges, r => r.endLineNumberExclusive >= range.startLineNumber); + // idx of element after { last element that touches range or that is before range } + const joinRangeEndIdxExclusive = findLastIdxMonotonous(this._normalizedRanges, r => r.startLineNumber <= range.endLineNumberExclusive) + 1; + if (joinRangeStartIdx === joinRangeEndIdxExclusive) { + return new LineRangeSet([range]); + } + const result = []; + let startLineNumber = range.startLineNumber; + for (let i = joinRangeStartIdx; i < joinRangeEndIdxExclusive; i++) { + const r = this._normalizedRanges[i]; + if (r.startLineNumber > startLineNumber) { + result.push(new LineRange(startLineNumber, r.startLineNumber)); + } + startLineNumber = r.endLineNumberExclusive; + } + if (startLineNumber < range.endLineNumberExclusive) { + result.push(new LineRange(startLineNumber, range.endLineNumberExclusive)); + } + return new LineRangeSet(result); + } + toString() { + return this._normalizedRanges.map(r => r.toString()).join(', '); + } + getIntersection(other) { + const result = []; + let i1 = 0; + let i2 = 0; + while (i1 < this._normalizedRanges.length && i2 < other._normalizedRanges.length) { + const r1 = this._normalizedRanges[i1]; + const r2 = other._normalizedRanges[i2]; + const i = r1.intersect(r2); + if (i && !i.isEmpty) { + result.push(i); + } + if (r1.endLineNumberExclusive < r2.endLineNumberExclusive) { + i1++; + } + else { + i2++; + } + } + return new LineRangeSet(result); + } + getWithDelta(value) { + return new LineRangeSet(this._normalizedRanges.map(r => r.delta(value))); + } +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +/** + * Maps a line range in the original text model to a line range in the modified text model. + */ +class LineRangeMapping { + static inverse(mapping, originalLineCount, modifiedLineCount) { + const result = []; + let lastOriginalEndLineNumber = 1; + let lastModifiedEndLineNumber = 1; + for (const m of mapping) { + const r = new DetailedLineRangeMapping(new LineRange(lastOriginalEndLineNumber, m.original.startLineNumber), new LineRange(lastModifiedEndLineNumber, m.modified.startLineNumber), undefined); + if (!r.modified.isEmpty) { + result.push(r); + } + lastOriginalEndLineNumber = m.original.endLineNumberExclusive; + lastModifiedEndLineNumber = m.modified.endLineNumberExclusive; + } + const r = new DetailedLineRangeMapping(new LineRange(lastOriginalEndLineNumber, originalLineCount + 1), new LineRange(lastModifiedEndLineNumber, modifiedLineCount + 1), undefined); + if (!r.modified.isEmpty) { + result.push(r); + } + return result; + } + constructor(originalRange, modifiedRange) { + this.original = originalRange; + this.modified = modifiedRange; + } + toString() { + return `{${this.original.toString()}->${this.modified.toString()}}`; + } + flip() { + return new LineRangeMapping(this.modified, this.original); + } + join(other) { + return new LineRangeMapping(this.original.join(other.original), this.modified.join(other.modified)); + } +} +/** + * Maps a line range in the original text model to a line range in the modified text model. + * Also contains inner range mappings. + */ +class DetailedLineRangeMapping extends LineRangeMapping { + constructor(originalRange, modifiedRange, innerChanges) { + super(originalRange, modifiedRange); + this.innerChanges = innerChanges; + } + flip() { + var _a; + return new DetailedLineRangeMapping(this.modified, this.original, (_a = this.innerChanges) === null || _a === void 0 ? void 0 : _a.map(c => c.flip())); + } +} +/** + * Maps a range in the original text model to a range in the modified text model. + */ +class RangeMapping { + constructor(originalRange, modifiedRange) { + this.originalRange = originalRange; + this.modifiedRange = modifiedRange; + } + toString() { + return `{${this.originalRange.toString()}->${this.modifiedRange.toString()}}`; + } + flip() { + return new RangeMapping(this.modifiedRange, this.originalRange); + } +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +const MINIMUM_MATCHING_CHARACTER_LENGTH = 3; +class LegacyLinesDiffComputer { + computeDiff(originalLines, modifiedLines, options) { + var _a; + const diffComputer = new DiffComputer(originalLines, modifiedLines, { + maxComputationTime: options.maxComputationTimeMs, + shouldIgnoreTrimWhitespace: options.ignoreTrimWhitespace, + shouldComputeCharChanges: true, + shouldMakePrettyDiff: true, + shouldPostProcessCharChanges: true, + }); + const result = diffComputer.computeDiff(); + const changes = []; + let lastChange = null; + for (const c of result.changes) { + let originalRange; + if (c.originalEndLineNumber === 0) { + // Insertion + originalRange = new LineRange(c.originalStartLineNumber + 1, c.originalStartLineNumber + 1); + } + else { + originalRange = new LineRange(c.originalStartLineNumber, c.originalEndLineNumber + 1); + } + let modifiedRange; + if (c.modifiedEndLineNumber === 0) { + // Deletion + modifiedRange = new LineRange(c.modifiedStartLineNumber + 1, c.modifiedStartLineNumber + 1); + } + else { + modifiedRange = new LineRange(c.modifiedStartLineNumber, c.modifiedEndLineNumber + 1); + } + let change = new DetailedLineRangeMapping(originalRange, modifiedRange, (_a = c.charChanges) === null || _a === void 0 ? void 0 : _a.map(c => new RangeMapping(new Range$b(c.originalStartLineNumber, c.originalStartColumn, c.originalEndLineNumber, c.originalEndColumn), new Range$b(c.modifiedStartLineNumber, c.modifiedStartColumn, c.modifiedEndLineNumber, c.modifiedEndColumn)))); + if (lastChange) { + if (lastChange.modified.endLineNumberExclusive === change.modified.startLineNumber + || lastChange.original.endLineNumberExclusive === change.original.startLineNumber) { + // join touching diffs. Probably moving diffs up/down in the algorithm causes touching diffs. + change = new DetailedLineRangeMapping(lastChange.original.join(change.original), lastChange.modified.join(change.modified), lastChange.innerChanges && change.innerChanges ? + lastChange.innerChanges.concat(change.innerChanges) : undefined); + changes.pop(); + } + } + changes.push(change); + lastChange = change; + } + assertFn(() => { + return checkAdjacentItems(changes, (m1, m2) => m2.original.startLineNumber - m1.original.endLineNumberExclusive === m2.modified.startLineNumber - m1.modified.endLineNumberExclusive && + // There has to be an unchanged line in between (otherwise both diffs should have been joined) + m1.original.endLineNumberExclusive < m2.original.startLineNumber && + m1.modified.endLineNumberExclusive < m2.modified.startLineNumber); + }); + return new LinesDiff(changes, [], result.quitEarly); + } +} +function computeDiff(originalSequence, modifiedSequence, continueProcessingPredicate, pretty) { + const diffAlgo = new LcsDiff(originalSequence, modifiedSequence, continueProcessingPredicate); + return diffAlgo.ComputeDiff(pretty); +} +let LineSequence$1 = class LineSequence { + constructor(lines) { + const startColumns = []; + const endColumns = []; + for (let i = 0, length = lines.length; i < length; i++) { + startColumns[i] = getFirstNonBlankColumn(lines[i], 1); + endColumns[i] = getLastNonBlankColumn(lines[i], 1); + } + this.lines = lines; + this._startColumns = startColumns; + this._endColumns = endColumns; + } + getElements() { + const elements = []; + for (let i = 0, len = this.lines.length; i < len; i++) { + elements[i] = this.lines[i].substring(this._startColumns[i] - 1, this._endColumns[i] - 1); + } + return elements; + } + getStrictElement(index) { + return this.lines[index]; + } + getStartLineNumber(i) { + return i + 1; + } + getEndLineNumber(i) { + return i + 1; + } + createCharSequence(shouldIgnoreTrimWhitespace, startIndex, endIndex) { + const charCodes = []; + const lineNumbers = []; + const columns = []; + let len = 0; + for (let index = startIndex; index <= endIndex; index++) { + const lineContent = this.lines[index]; + const startColumn = (shouldIgnoreTrimWhitespace ? this._startColumns[index] : 1); + const endColumn = (shouldIgnoreTrimWhitespace ? this._endColumns[index] : lineContent.length + 1); + for (let col = startColumn; col < endColumn; col++) { + charCodes[len] = lineContent.charCodeAt(col - 1); + lineNumbers[len] = index + 1; + columns[len] = col; + len++; + } + if (!shouldIgnoreTrimWhitespace && index < endIndex) { + // Add \n if trim whitespace is not ignored + charCodes[len] = 10 /* CharCode.LineFeed */; + lineNumbers[len] = index + 1; + columns[len] = lineContent.length + 1; + len++; + } + } + return new CharSequence(charCodes, lineNumbers, columns); + } +}; +class CharSequence { + constructor(charCodes, lineNumbers, columns) { + this._charCodes = charCodes; + this._lineNumbers = lineNumbers; + this._columns = columns; + } + toString() { + return ('[' + this._charCodes.map((s, idx) => (s === 10 /* CharCode.LineFeed */ ? '\\n' : String.fromCharCode(s)) + `-(${this._lineNumbers[idx]},${this._columns[idx]})`).join(', ') + ']'); + } + _assertIndex(index, arr) { + if (index < 0 || index >= arr.length) { + throw new Error(`Illegal index`); + } + } + getElements() { + return this._charCodes; + } + getStartLineNumber(i) { + if (i > 0 && i === this._lineNumbers.length) { + // the start line number of the element after the last element + // is the end line number of the last element + return this.getEndLineNumber(i - 1); + } + this._assertIndex(i, this._lineNumbers); + return this._lineNumbers[i]; + } + getEndLineNumber(i) { + if (i === -1) { + // the end line number of the element before the first element + // is the start line number of the first element + return this.getStartLineNumber(i + 1); + } + this._assertIndex(i, this._lineNumbers); + if (this._charCodes[i] === 10 /* CharCode.LineFeed */) { + return this._lineNumbers[i] + 1; + } + return this._lineNumbers[i]; + } + getStartColumn(i) { + if (i > 0 && i === this._columns.length) { + // the start column of the element after the last element + // is the end column of the last element + return this.getEndColumn(i - 1); + } + this._assertIndex(i, this._columns); + return this._columns[i]; + } + getEndColumn(i) { + if (i === -1) { + // the end column of the element before the first element + // is the start column of the first element + return this.getStartColumn(i + 1); + } + this._assertIndex(i, this._columns); + if (this._charCodes[i] === 10 /* CharCode.LineFeed */) { + return 1; + } + return this._columns[i] + 1; + } +} +class CharChange { + constructor(originalStartLineNumber, originalStartColumn, originalEndLineNumber, originalEndColumn, modifiedStartLineNumber, modifiedStartColumn, modifiedEndLineNumber, modifiedEndColumn) { + this.originalStartLineNumber = originalStartLineNumber; + this.originalStartColumn = originalStartColumn; + this.originalEndLineNumber = originalEndLineNumber; + this.originalEndColumn = originalEndColumn; + this.modifiedStartLineNumber = modifiedStartLineNumber; + this.modifiedStartColumn = modifiedStartColumn; + this.modifiedEndLineNumber = modifiedEndLineNumber; + this.modifiedEndColumn = modifiedEndColumn; + } + static createFromDiffChange(diffChange, originalCharSequence, modifiedCharSequence) { + const originalStartLineNumber = originalCharSequence.getStartLineNumber(diffChange.originalStart); + const originalStartColumn = originalCharSequence.getStartColumn(diffChange.originalStart); + const originalEndLineNumber = originalCharSequence.getEndLineNumber(diffChange.originalStart + diffChange.originalLength - 1); + const originalEndColumn = originalCharSequence.getEndColumn(diffChange.originalStart + diffChange.originalLength - 1); + const modifiedStartLineNumber = modifiedCharSequence.getStartLineNumber(diffChange.modifiedStart); + const modifiedStartColumn = modifiedCharSequence.getStartColumn(diffChange.modifiedStart); + const modifiedEndLineNumber = modifiedCharSequence.getEndLineNumber(diffChange.modifiedStart + diffChange.modifiedLength - 1); + const modifiedEndColumn = modifiedCharSequence.getEndColumn(diffChange.modifiedStart + diffChange.modifiedLength - 1); + return new CharChange(originalStartLineNumber, originalStartColumn, originalEndLineNumber, originalEndColumn, modifiedStartLineNumber, modifiedStartColumn, modifiedEndLineNumber, modifiedEndColumn); + } +} +function postProcessCharChanges(rawChanges) { + if (rawChanges.length <= 1) { + return rawChanges; + } + const result = [rawChanges[0]]; + let prevChange = result[0]; + for (let i = 1, len = rawChanges.length; i < len; i++) { + const currChange = rawChanges[i]; + const originalMatchingLength = currChange.originalStart - (prevChange.originalStart + prevChange.originalLength); + const modifiedMatchingLength = currChange.modifiedStart - (prevChange.modifiedStart + prevChange.modifiedLength); + // Both of the above should be equal, but the continueProcessingPredicate may prevent this from being true + const matchingLength = Math.min(originalMatchingLength, modifiedMatchingLength); + if (matchingLength < MINIMUM_MATCHING_CHARACTER_LENGTH) { + // Merge the current change into the previous one + prevChange.originalLength = (currChange.originalStart + currChange.originalLength) - prevChange.originalStart; + prevChange.modifiedLength = (currChange.modifiedStart + currChange.modifiedLength) - prevChange.modifiedStart; + } + else { + // Add the current change + result.push(currChange); + prevChange = currChange; + } + } + return result; +} +class LineChange { + constructor(originalStartLineNumber, originalEndLineNumber, modifiedStartLineNumber, modifiedEndLineNumber, charChanges) { + this.originalStartLineNumber = originalStartLineNumber; + this.originalEndLineNumber = originalEndLineNumber; + this.modifiedStartLineNumber = modifiedStartLineNumber; + this.modifiedEndLineNumber = modifiedEndLineNumber; + this.charChanges = charChanges; + } + static createFromDiffResult(shouldIgnoreTrimWhitespace, diffChange, originalLineSequence, modifiedLineSequence, continueCharDiff, shouldComputeCharChanges, shouldPostProcessCharChanges) { + let originalStartLineNumber; + let originalEndLineNumber; + let modifiedStartLineNumber; + let modifiedEndLineNumber; + let charChanges = undefined; + if (diffChange.originalLength === 0) { + originalStartLineNumber = originalLineSequence.getStartLineNumber(diffChange.originalStart) - 1; + originalEndLineNumber = 0; + } + else { + originalStartLineNumber = originalLineSequence.getStartLineNumber(diffChange.originalStart); + originalEndLineNumber = originalLineSequence.getEndLineNumber(diffChange.originalStart + diffChange.originalLength - 1); + } + if (diffChange.modifiedLength === 0) { + modifiedStartLineNumber = modifiedLineSequence.getStartLineNumber(diffChange.modifiedStart) - 1; + modifiedEndLineNumber = 0; + } + else { + modifiedStartLineNumber = modifiedLineSequence.getStartLineNumber(diffChange.modifiedStart); + modifiedEndLineNumber = modifiedLineSequence.getEndLineNumber(diffChange.modifiedStart + diffChange.modifiedLength - 1); + } + if (shouldComputeCharChanges && diffChange.originalLength > 0 && diffChange.originalLength < 20 && diffChange.modifiedLength > 0 && diffChange.modifiedLength < 20 && continueCharDiff()) { + // Compute character changes for diff chunks of at most 20 lines... + const originalCharSequence = originalLineSequence.createCharSequence(shouldIgnoreTrimWhitespace, diffChange.originalStart, diffChange.originalStart + diffChange.originalLength - 1); + const modifiedCharSequence = modifiedLineSequence.createCharSequence(shouldIgnoreTrimWhitespace, diffChange.modifiedStart, diffChange.modifiedStart + diffChange.modifiedLength - 1); + if (originalCharSequence.getElements().length > 0 && modifiedCharSequence.getElements().length > 0) { + let rawChanges = computeDiff(originalCharSequence, modifiedCharSequence, continueCharDiff, true).changes; + if (shouldPostProcessCharChanges) { + rawChanges = postProcessCharChanges(rawChanges); + } + charChanges = []; + for (let i = 0, length = rawChanges.length; i < length; i++) { + charChanges.push(CharChange.createFromDiffChange(rawChanges[i], originalCharSequence, modifiedCharSequence)); + } + } + } + return new LineChange(originalStartLineNumber, originalEndLineNumber, modifiedStartLineNumber, modifiedEndLineNumber, charChanges); + } +} +class DiffComputer { + constructor(originalLines, modifiedLines, opts) { + this.shouldComputeCharChanges = opts.shouldComputeCharChanges; + this.shouldPostProcessCharChanges = opts.shouldPostProcessCharChanges; + this.shouldIgnoreTrimWhitespace = opts.shouldIgnoreTrimWhitespace; + this.shouldMakePrettyDiff = opts.shouldMakePrettyDiff; + this.originalLines = originalLines; + this.modifiedLines = modifiedLines; + this.original = new LineSequence$1(originalLines); + this.modified = new LineSequence$1(modifiedLines); + this.continueLineDiff = createContinueProcessingPredicate(opts.maxComputationTime); + this.continueCharDiff = createContinueProcessingPredicate(opts.maxComputationTime === 0 ? 0 : Math.min(opts.maxComputationTime, 5000)); // never run after 5s for character changes... + } + computeDiff() { + if (this.original.lines.length === 1 && this.original.lines[0].length === 0) { + // empty original => fast path + if (this.modified.lines.length === 1 && this.modified.lines[0].length === 0) { + return { + quitEarly: false, + changes: [] + }; + } + return { + quitEarly: false, + changes: [{ + originalStartLineNumber: 1, + originalEndLineNumber: 1, + modifiedStartLineNumber: 1, + modifiedEndLineNumber: this.modified.lines.length, + charChanges: undefined + }] + }; + } + if (this.modified.lines.length === 1 && this.modified.lines[0].length === 0) { + // empty modified => fast path + return { + quitEarly: false, + changes: [{ + originalStartLineNumber: 1, + originalEndLineNumber: this.original.lines.length, + modifiedStartLineNumber: 1, + modifiedEndLineNumber: 1, + charChanges: undefined + }] + }; + } + const diffResult = computeDiff(this.original, this.modified, this.continueLineDiff, this.shouldMakePrettyDiff); + const rawChanges = diffResult.changes; + const quitEarly = diffResult.quitEarly; + // The diff is always computed with ignoring trim whitespace + // This ensures we get the prettiest diff + if (this.shouldIgnoreTrimWhitespace) { + const lineChanges = []; + for (let i = 0, length = rawChanges.length; i < length; i++) { + lineChanges.push(LineChange.createFromDiffResult(this.shouldIgnoreTrimWhitespace, rawChanges[i], this.original, this.modified, this.continueCharDiff, this.shouldComputeCharChanges, this.shouldPostProcessCharChanges)); + } + return { + quitEarly: quitEarly, + changes: lineChanges + }; + } + // Need to post-process and introduce changes where the trim whitespace is different + // Note that we are looping starting at -1 to also cover the lines before the first change + const result = []; + let originalLineIndex = 0; + let modifiedLineIndex = 0; + for (let i = -1 /* !!!! */, len = rawChanges.length; i < len; i++) { + const nextChange = (i + 1 < len ? rawChanges[i + 1] : null); + const originalStop = (nextChange ? nextChange.originalStart : this.originalLines.length); + const modifiedStop = (nextChange ? nextChange.modifiedStart : this.modifiedLines.length); + while (originalLineIndex < originalStop && modifiedLineIndex < modifiedStop) { + const originalLine = this.originalLines[originalLineIndex]; + const modifiedLine = this.modifiedLines[modifiedLineIndex]; + if (originalLine !== modifiedLine) { + // These lines differ only in trim whitespace + // Check the leading whitespace + { + let originalStartColumn = getFirstNonBlankColumn(originalLine, 1); + let modifiedStartColumn = getFirstNonBlankColumn(modifiedLine, 1); + while (originalStartColumn > 1 && modifiedStartColumn > 1) { + const originalChar = originalLine.charCodeAt(originalStartColumn - 2); + const modifiedChar = modifiedLine.charCodeAt(modifiedStartColumn - 2); + if (originalChar !== modifiedChar) { + break; + } + originalStartColumn--; + modifiedStartColumn--; + } + if (originalStartColumn > 1 || modifiedStartColumn > 1) { + this._pushTrimWhitespaceCharChange(result, originalLineIndex + 1, 1, originalStartColumn, modifiedLineIndex + 1, 1, modifiedStartColumn); + } + } + // Check the trailing whitespace + { + let originalEndColumn = getLastNonBlankColumn(originalLine, 1); + let modifiedEndColumn = getLastNonBlankColumn(modifiedLine, 1); + const originalMaxColumn = originalLine.length + 1; + const modifiedMaxColumn = modifiedLine.length + 1; + while (originalEndColumn < originalMaxColumn && modifiedEndColumn < modifiedMaxColumn) { + const originalChar = originalLine.charCodeAt(originalEndColumn - 1); + const modifiedChar = originalLine.charCodeAt(modifiedEndColumn - 1); + if (originalChar !== modifiedChar) { + break; + } + originalEndColumn++; + modifiedEndColumn++; + } + if (originalEndColumn < originalMaxColumn || modifiedEndColumn < modifiedMaxColumn) { + this._pushTrimWhitespaceCharChange(result, originalLineIndex + 1, originalEndColumn, originalMaxColumn, modifiedLineIndex + 1, modifiedEndColumn, modifiedMaxColumn); + } + } + } + originalLineIndex++; + modifiedLineIndex++; + } + if (nextChange) { + // Emit the actual change + result.push(LineChange.createFromDiffResult(this.shouldIgnoreTrimWhitespace, nextChange, this.original, this.modified, this.continueCharDiff, this.shouldComputeCharChanges, this.shouldPostProcessCharChanges)); + originalLineIndex += nextChange.originalLength; + modifiedLineIndex += nextChange.modifiedLength; + } + } + return { + quitEarly: quitEarly, + changes: result + }; + } + _pushTrimWhitespaceCharChange(result, originalLineNumber, originalStartColumn, originalEndColumn, modifiedLineNumber, modifiedStartColumn, modifiedEndColumn) { + if (this._mergeTrimWhitespaceCharChange(result, originalLineNumber, originalStartColumn, originalEndColumn, modifiedLineNumber, modifiedStartColumn, modifiedEndColumn)) { + // Merged into previous + return; + } + let charChanges = undefined; + if (this.shouldComputeCharChanges) { + charChanges = [new CharChange(originalLineNumber, originalStartColumn, originalLineNumber, originalEndColumn, modifiedLineNumber, modifiedStartColumn, modifiedLineNumber, modifiedEndColumn)]; + } + result.push(new LineChange(originalLineNumber, originalLineNumber, modifiedLineNumber, modifiedLineNumber, charChanges)); + } + _mergeTrimWhitespaceCharChange(result, originalLineNumber, originalStartColumn, originalEndColumn, modifiedLineNumber, modifiedStartColumn, modifiedEndColumn) { + const len = result.length; + if (len === 0) { + return false; + } + const prevChange = result[len - 1]; + if (prevChange.originalEndLineNumber === 0 || prevChange.modifiedEndLineNumber === 0) { + // Don't merge with inserts/deletes + return false; + } + if (prevChange.originalEndLineNumber === originalLineNumber && prevChange.modifiedEndLineNumber === modifiedLineNumber) { + if (this.shouldComputeCharChanges && prevChange.charChanges) { + prevChange.charChanges.push(new CharChange(originalLineNumber, originalStartColumn, originalLineNumber, originalEndColumn, modifiedLineNumber, modifiedStartColumn, modifiedLineNumber, modifiedEndColumn)); + } + return true; + } + if (prevChange.originalEndLineNumber + 1 === originalLineNumber && prevChange.modifiedEndLineNumber + 1 === modifiedLineNumber) { + prevChange.originalEndLineNumber = originalLineNumber; + prevChange.modifiedEndLineNumber = modifiedLineNumber; + if (this.shouldComputeCharChanges && prevChange.charChanges) { + prevChange.charChanges.push(new CharChange(originalLineNumber, originalStartColumn, originalLineNumber, originalEndColumn, modifiedLineNumber, modifiedStartColumn, modifiedLineNumber, modifiedEndColumn)); + } + return true; + } + return false; + } +} +function getFirstNonBlankColumn(txt, defaultValue) { + const r = firstNonWhitespaceIndex(txt); + if (r === -1) { + return defaultValue; + } + return r + 1; +} +function getLastNonBlankColumn(txt, defaultValue) { + const r = lastNonWhitespaceIndex(txt); + if (r === -1) { + return defaultValue; + } + return r + 2; +} +function createContinueProcessingPredicate(maximumRuntime) { + if (maximumRuntime === 0) { + return () => true; + } + const startTime = Date.now(); + return () => { + return Date.now() - startTime < maximumRuntime; + }; +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +class DiffAlgorithmResult { + static trivial(seq1, seq2) { + return new DiffAlgorithmResult([new SequenceDiff(OffsetRange.ofLength(seq1.length), OffsetRange.ofLength(seq2.length))], false); + } + static trivialTimedOut(seq1, seq2) { + return new DiffAlgorithmResult([new SequenceDiff(OffsetRange.ofLength(seq1.length), OffsetRange.ofLength(seq2.length))], true); + } + constructor(diffs, + /** + * Indicates if the time out was reached. + * In that case, the diffs might be an approximation and the user should be asked to rerun the diff with more time. + */ + hitTimeout) { + this.diffs = diffs; + this.hitTimeout = hitTimeout; + } +} +class SequenceDiff { + static invert(sequenceDiffs, doc1Length) { + const result = []; + forEachAdjacent(sequenceDiffs, (a, b) => { + result.push(SequenceDiff.fromOffsetPairs(a ? a.getEndExclusives() : OffsetPair.zero, b ? b.getStarts() : new OffsetPair(doc1Length, (a ? a.seq2Range.endExclusive - a.seq1Range.endExclusive : 0) + doc1Length))); + }); + return result; + } + static fromOffsetPairs(start, endExclusive) { + return new SequenceDiff(new OffsetRange(start.offset1, endExclusive.offset1), new OffsetRange(start.offset2, endExclusive.offset2)); + } + constructor(seq1Range, seq2Range) { + this.seq1Range = seq1Range; + this.seq2Range = seq2Range; + } + swap() { + return new SequenceDiff(this.seq2Range, this.seq1Range); + } + toString() { + return `${this.seq1Range} <-> ${this.seq2Range}`; + } + join(other) { + return new SequenceDiff(this.seq1Range.join(other.seq1Range), this.seq2Range.join(other.seq2Range)); + } + delta(offset) { + if (offset === 0) { + return this; + } + return new SequenceDiff(this.seq1Range.delta(offset), this.seq2Range.delta(offset)); + } + deltaStart(offset) { + if (offset === 0) { + return this; + } + return new SequenceDiff(this.seq1Range.deltaStart(offset), this.seq2Range.deltaStart(offset)); + } + deltaEnd(offset) { + if (offset === 0) { + return this; + } + return new SequenceDiff(this.seq1Range.deltaEnd(offset), this.seq2Range.deltaEnd(offset)); + } + intersect(other) { + const i1 = this.seq1Range.intersect(other.seq1Range); + const i2 = this.seq2Range.intersect(other.seq2Range); + if (!i1 || !i2) { + return undefined; + } + return new SequenceDiff(i1, i2); + } + getStarts() { + return new OffsetPair(this.seq1Range.start, this.seq2Range.start); + } + getEndExclusives() { + return new OffsetPair(this.seq1Range.endExclusive, this.seq2Range.endExclusive); + } +} +class OffsetPair { + constructor(offset1, offset2) { + this.offset1 = offset1; + this.offset2 = offset2; + } + toString() { + return `${this.offset1} <-> ${this.offset2}`; + } +} +OffsetPair.zero = new OffsetPair(0, 0); +OffsetPair.max = new OffsetPair(Number.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER); +class InfiniteTimeout { + isValid() { + return true; + } +} +InfiniteTimeout.instance = new InfiniteTimeout(); +class DateTimeout { + constructor(timeout) { + this.timeout = timeout; + this.startTime = Date.now(); + this.valid = true; + if (timeout <= 0) { + throw new BugIndicatingError('timeout must be positive'); + } + } + // Recommendation: Set a log-point `{this.disable()}` in the body + isValid() { + const valid = Date.now() - this.startTime < this.timeout; + if (!valid && this.valid) { + this.valid = false; // timeout reached + // eslint-disable-next-line no-debugger + debugger; // WARNING: Most likely debugging caused the timeout. Call `this.disable()` to continue without timing out. + } + return this.valid; + } +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +class Array2D { + constructor(width, height) { + this.width = width; + this.height = height; + this.array = []; + this.array = new Array(width * height); + } + get(x, y) { + return this.array[x + y * this.width]; + } + set(x, y, value) { + this.array[x + y * this.width] = value; + } +} +function isSpace(charCode) { + return charCode === 32 /* CharCode.Space */ || charCode === 9 /* CharCode.Tab */; +} +class LineRangeFragment { + static getKey(chr) { + let key = this.chrKeys.get(chr); + if (key === undefined) { + key = this.chrKeys.size; + this.chrKeys.set(chr, key); + } + return key; + } + constructor(range, lines, source) { + this.range = range; + this.lines = lines; + this.source = source; + this.histogram = []; + let counter = 0; + for (let i = range.startLineNumber - 1; i < range.endLineNumberExclusive - 1; i++) { + const line = lines[i]; + for (let j = 0; j < line.length; j++) { + counter++; + const chr = line[j]; + const key = LineRangeFragment.getKey(chr); + this.histogram[key] = (this.histogram[key] || 0) + 1; + } + counter++; + const key = LineRangeFragment.getKey('\n'); + this.histogram[key] = (this.histogram[key] || 0) + 1; + } + this.totalCount = counter; + } + computeSimilarity(other) { + var _a, _b; + let sumDifferences = 0; + const maxLength = Math.max(this.histogram.length, other.histogram.length); + for (let i = 0; i < maxLength; i++) { + sumDifferences += Math.abs(((_a = this.histogram[i]) !== null && _a !== void 0 ? _a : 0) - ((_b = other.histogram[i]) !== null && _b !== void 0 ? _b : 0)); + } + return 1 - (sumDifferences / (this.totalCount + other.totalCount)); + } +} +LineRangeFragment.chrKeys = new Map(); + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +/** + * A O(MN) diffing algorithm that supports a score function. + * The algorithm can be improved by processing the 2d array diagonally. +*/ +class DynamicProgrammingDiffing { + compute(sequence1, sequence2, timeout = InfiniteTimeout.instance, equalityScore) { + if (sequence1.length === 0 || sequence2.length === 0) { + return DiffAlgorithmResult.trivial(sequence1, sequence2); + } + /** + * lcsLengths.get(i, j): Length of the longest common subsequence of sequence1.substring(0, i + 1) and sequence2.substring(0, j + 1). + */ + const lcsLengths = new Array2D(sequence1.length, sequence2.length); + const directions = new Array2D(sequence1.length, sequence2.length); + const lengths = new Array2D(sequence1.length, sequence2.length); + // ==== Initializing lcsLengths ==== + for (let s1 = 0; s1 < sequence1.length; s1++) { + for (let s2 = 0; s2 < sequence2.length; s2++) { + if (!timeout.isValid()) { + return DiffAlgorithmResult.trivialTimedOut(sequence1, sequence2); + } + const horizontalLen = s1 === 0 ? 0 : lcsLengths.get(s1 - 1, s2); + const verticalLen = s2 === 0 ? 0 : lcsLengths.get(s1, s2 - 1); + let extendedSeqScore; + if (sequence1.getElement(s1) === sequence2.getElement(s2)) { + if (s1 === 0 || s2 === 0) { + extendedSeqScore = 0; + } + else { + extendedSeqScore = lcsLengths.get(s1 - 1, s2 - 1); + } + if (s1 > 0 && s2 > 0 && directions.get(s1 - 1, s2 - 1) === 3) { + // Prefer consecutive diagonals + extendedSeqScore += lengths.get(s1 - 1, s2 - 1); + } + extendedSeqScore += (equalityScore ? equalityScore(s1, s2) : 1); + } + else { + extendedSeqScore = -1; + } + const newValue = Math.max(horizontalLen, verticalLen, extendedSeqScore); + if (newValue === extendedSeqScore) { + // Prefer diagonals + const prevLen = s1 > 0 && s2 > 0 ? lengths.get(s1 - 1, s2 - 1) : 0; + lengths.set(s1, s2, prevLen + 1); + directions.set(s1, s2, 3); + } + else if (newValue === horizontalLen) { + lengths.set(s1, s2, 0); + directions.set(s1, s2, 1); + } + else if (newValue === verticalLen) { + lengths.set(s1, s2, 0); + directions.set(s1, s2, 2); + } + lcsLengths.set(s1, s2, newValue); + } + } + // ==== Backtracking ==== + const result = []; + let lastAligningPosS1 = sequence1.length; + let lastAligningPosS2 = sequence2.length; + function reportDecreasingAligningPositions(s1, s2) { + if (s1 + 1 !== lastAligningPosS1 || s2 + 1 !== lastAligningPosS2) { + result.push(new SequenceDiff(new OffsetRange(s1 + 1, lastAligningPosS1), new OffsetRange(s2 + 1, lastAligningPosS2))); + } + lastAligningPosS1 = s1; + lastAligningPosS2 = s2; + } + let s1 = sequence1.length - 1; + let s2 = sequence2.length - 1; + while (s1 >= 0 && s2 >= 0) { + if (directions.get(s1, s2) === 3) { + reportDecreasingAligningPositions(s1, s2); + s1--; + s2--; + } + else { + if (directions.get(s1, s2) === 1) { + s1--; + } + else { + s2--; + } + } + } + reportDecreasingAligningPositions(-1, -1); + result.reverse(); + return new DiffAlgorithmResult(result, false); + } +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +/** + * An O(ND) diff algorithm that has a quadratic space worst-case complexity. +*/ +class MyersDiffAlgorithm { + compute(seq1, seq2, timeout = InfiniteTimeout.instance) { + // These are common special cases. + // The early return improves performance dramatically. + if (seq1.length === 0 || seq2.length === 0) { + return DiffAlgorithmResult.trivial(seq1, seq2); + } + const seqX = seq1; // Text on the x axis + const seqY = seq2; // Text on the y axis + function getXAfterSnake(x, y) { + while (x < seqX.length && y < seqY.length && seqX.getElement(x) === seqY.getElement(y)) { + x++; + y++; + } + return x; + } + let d = 0; + // V[k]: X value of longest d-line that ends in diagonal k. + // d-line: path from (0,0) to (x,y) that uses exactly d non-diagonals. + // diagonal k: Set of points (x,y) with x-y = k. + // k=1 -> (1,0),(2,1) + const V = new FastInt32Array(); + V.set(0, getXAfterSnake(0, 0)); + const paths = new FastArrayNegativeIndices(); + paths.set(0, V.get(0) === 0 ? null : new SnakePath(null, 0, 0, V.get(0))); + let k = 0; + loop: while (true) { + d++; + if (!timeout.isValid()) { + return DiffAlgorithmResult.trivialTimedOut(seqX, seqY); + } + // The paper has `for (k = -d; k <= d; k += 2)`, but we can ignore diagonals that cannot influence the result. + const lowerBound = -Math.min(d, seqY.length + (d % 2)); + const upperBound = Math.min(d, seqX.length + (d % 2)); + for (k = lowerBound; k <= upperBound; k += 2) { + // We can use the X values of (d-1)-lines to compute X value of the longest d-lines. + const maxXofDLineTop = k === upperBound ? -1 : V.get(k + 1); // We take a vertical non-diagonal (add a symbol in seqX) + const maxXofDLineLeft = k === lowerBound ? -1 : V.get(k - 1) + 1; // We take a horizontal non-diagonal (+1 x) (delete a symbol in seqX) + const x = Math.min(Math.max(maxXofDLineTop, maxXofDLineLeft), seqX.length); + const y = x - k; + if (x > seqX.length || y > seqY.length) { + // This diagonal is irrelevant for the result. + // TODO: Don't pay the cost for this in the next iteration. + continue; + } + const newMaxX = getXAfterSnake(x, y); + V.set(k, newMaxX); + const lastPath = x === maxXofDLineTop ? paths.get(k + 1) : paths.get(k - 1); + paths.set(k, newMaxX !== x ? new SnakePath(lastPath, x, y, newMaxX - x) : lastPath); + if (V.get(k) === seqX.length && V.get(k) - k === seqY.length) { + break loop; + } + } + } + let path = paths.get(k); + const result = []; + let lastAligningPosS1 = seqX.length; + let lastAligningPosS2 = seqY.length; + while (true) { + const endX = path ? path.x + path.length : 0; + const endY = path ? path.y + path.length : 0; + if (endX !== lastAligningPosS1 || endY !== lastAligningPosS2) { + result.push(new SequenceDiff(new OffsetRange(endX, lastAligningPosS1), new OffsetRange(endY, lastAligningPosS2))); + } + if (!path) { + break; + } + lastAligningPosS1 = path.x; + lastAligningPosS2 = path.y; + path = path.prev; + } + result.reverse(); + return new DiffAlgorithmResult(result, false); + } +} +class SnakePath { + constructor(prev, x, y, length) { + this.prev = prev; + this.x = x; + this.y = y; + this.length = length; + } +} +/** + * An array that supports fast negative indices. +*/ +class FastInt32Array { + constructor() { + this.positiveArr = new Int32Array(10); + this.negativeArr = new Int32Array(10); + } + get(idx) { + if (idx < 0) { + idx = -idx - 1; + return this.negativeArr[idx]; + } + else { + return this.positiveArr[idx]; + } + } + set(idx, value) { + if (idx < 0) { + idx = -idx - 1; + if (idx >= this.negativeArr.length) { + const arr = this.negativeArr; + this.negativeArr = new Int32Array(arr.length * 2); + this.negativeArr.set(arr); + } + this.negativeArr[idx] = value; + } + else { + if (idx >= this.positiveArr.length) { + const arr = this.positiveArr; + this.positiveArr = new Int32Array(arr.length * 2); + this.positiveArr.set(arr); + } + this.positiveArr[idx] = value; + } + } +} +/** + * An array that supports fast negative indices. +*/ +class FastArrayNegativeIndices { + constructor() { + this.positiveArr = []; + this.negativeArr = []; + } + get(idx) { + if (idx < 0) { + idx = -idx - 1; + return this.negativeArr[idx]; + } + else { + return this.positiveArr[idx]; + } + } + set(idx, value) { + if (idx < 0) { + idx = -idx - 1; + this.negativeArr[idx] = value; + } + else { + this.positiveArr[idx] = value; + } + } +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +class SetMap { + constructor() { + this.map = new Map(); + } + add(key, value) { + let values = this.map.get(key); + if (!values) { + values = new Set(); + this.map.set(key, values); + } + values.add(value); + } + delete(key, value) { + const values = this.map.get(key); + if (!values) { + return; + } + values.delete(value); + if (values.size === 0) { + this.map.delete(key); + } + } + forEach(key, fn) { + const values = this.map.get(key); + if (!values) { + return; + } + values.forEach(fn); + } + get(key) { + const values = this.map.get(key); + if (!values) { + return new Set(); + } + return values; + } +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +class LinesSliceCharSequence { + constructor(lines, lineRange, considerWhitespaceChanges) { + // This slice has to have lineRange.length many \n! (otherwise diffing against an empty slice will be problematic) + // (Unless it covers the entire document, in that case the other slice also has to cover the entire document ands it's okay) + this.lines = lines; + this.considerWhitespaceChanges = considerWhitespaceChanges; + this.elements = []; + this.firstCharOffsetByLine = []; + // To account for trimming + this.additionalOffsetByLine = []; + // If the slice covers the end, but does not start at the beginning, we include just the \n of the previous line. + let trimFirstLineFully = false; + if (lineRange.start > 0 && lineRange.endExclusive >= lines.length) { + lineRange = new OffsetRange(lineRange.start - 1, lineRange.endExclusive); + trimFirstLineFully = true; + } + this.lineRange = lineRange; + this.firstCharOffsetByLine[0] = 0; + for (let i = this.lineRange.start; i < this.lineRange.endExclusive; i++) { + let line = lines[i]; + let offset = 0; + if (trimFirstLineFully) { + offset = line.length; + line = ''; + trimFirstLineFully = false; + } + else if (!considerWhitespaceChanges) { + const trimmedStartLine = line.trimStart(); + offset = line.length - trimmedStartLine.length; + line = trimmedStartLine.trimEnd(); + } + this.additionalOffsetByLine.push(offset); + for (let i = 0; i < line.length; i++) { + this.elements.push(line.charCodeAt(i)); + } + // Don't add an \n that does not exist in the document. + if (i < lines.length - 1) { + this.elements.push('\n'.charCodeAt(0)); + this.firstCharOffsetByLine[i - this.lineRange.start + 1] = this.elements.length; + } + } + // To account for the last line + this.additionalOffsetByLine.push(0); + } + toString() { + return `Slice: "${this.text}"`; + } + get text() { + return this.getText(new OffsetRange(0, this.length)); + } + getText(range) { + return this.elements.slice(range.start, range.endExclusive).map(e => String.fromCharCode(e)).join(''); + } + getElement(offset) { + return this.elements[offset]; + } + get length() { + return this.elements.length; + } + getBoundaryScore(length) { + // a b c , d e f + // 11 0 0 12 15 6 13 0 0 11 + const prevCategory = getCategory(length > 0 ? this.elements[length - 1] : -1); + const nextCategory = getCategory(length < this.elements.length ? this.elements[length] : -1); + if (prevCategory === 7 /* CharBoundaryCategory.LineBreakCR */ && nextCategory === 8 /* CharBoundaryCategory.LineBreakLF */) { + // don't break between \r and \n + return 0; + } + let score = 0; + if (prevCategory !== nextCategory) { + score += 10; + if (prevCategory === 0 /* CharBoundaryCategory.WordLower */ && nextCategory === 1 /* CharBoundaryCategory.WordUpper */) { + score += 1; + } + } + score += getCategoryBoundaryScore(prevCategory); + score += getCategoryBoundaryScore(nextCategory); + return score; + } + translateOffset(offset) { + // find smallest i, so that lineBreakOffsets[i] <= offset using binary search + if (this.lineRange.isEmpty) { + return new Position$2(this.lineRange.start + 1, 1); + } + const i = findLastIdxMonotonous(this.firstCharOffsetByLine, (value) => value <= offset); + return new Position$2(this.lineRange.start + i + 1, offset - this.firstCharOffsetByLine[i] + this.additionalOffsetByLine[i] + 1); + } + translateRange(range) { + return Range$b.fromPositions(this.translateOffset(range.start), this.translateOffset(range.endExclusive)); + } + /** + * Finds the word that contains the character at the given offset + */ + findWordContaining(offset) { + if (offset < 0 || offset >= this.elements.length) { + return undefined; + } + if (!isWordChar(this.elements[offset])) { + return undefined; + } + // find start + let start = offset; + while (start > 0 && isWordChar(this.elements[start - 1])) { + start--; + } + // find end + let end = offset; + while (end < this.elements.length && isWordChar(this.elements[end])) { + end++; + } + return new OffsetRange(start, end); + } + countLinesIn(range) { + return this.translateOffset(range.endExclusive).lineNumber - this.translateOffset(range.start).lineNumber; + } + isStronglyEqual(offset1, offset2) { + return this.elements[offset1] === this.elements[offset2]; + } + extendToFullLines(range) { + var _a, _b; + const start = (_a = findLastMonotonous(this.firstCharOffsetByLine, x => x <= range.start)) !== null && _a !== void 0 ? _a : 0; + const end = (_b = findFirstMonotonous(this.firstCharOffsetByLine, x => range.endExclusive <= x)) !== null && _b !== void 0 ? _b : this.elements.length; + return new OffsetRange(start, end); + } +} +function isWordChar(charCode) { + return charCode >= 97 /* CharCode.a */ && charCode <= 122 /* CharCode.z */ + || charCode >= 65 /* CharCode.A */ && charCode <= 90 /* CharCode.Z */ + || charCode >= 48 /* CharCode.Digit0 */ && charCode <= 57 /* CharCode.Digit9 */; +} +const score = { + [0 /* CharBoundaryCategory.WordLower */]: 0, + [1 /* CharBoundaryCategory.WordUpper */]: 0, + [2 /* CharBoundaryCategory.WordNumber */]: 0, + [3 /* CharBoundaryCategory.End */]: 10, + [4 /* CharBoundaryCategory.Other */]: 2, + [5 /* CharBoundaryCategory.Separator */]: 3, + [6 /* CharBoundaryCategory.Space */]: 3, + [7 /* CharBoundaryCategory.LineBreakCR */]: 10, + [8 /* CharBoundaryCategory.LineBreakLF */]: 10, +}; +function getCategoryBoundaryScore(category) { + return score[category]; +} +function getCategory(charCode) { + if (charCode === 10 /* CharCode.LineFeed */) { + return 8 /* CharBoundaryCategory.LineBreakLF */; + } + else if (charCode === 13 /* CharCode.CarriageReturn */) { + return 7 /* CharBoundaryCategory.LineBreakCR */; + } + else if (isSpace(charCode)) { + return 6 /* CharBoundaryCategory.Space */; + } + else if (charCode >= 97 /* CharCode.a */ && charCode <= 122 /* CharCode.z */) { + return 0 /* CharBoundaryCategory.WordLower */; + } + else if (charCode >= 65 /* CharCode.A */ && charCode <= 90 /* CharCode.Z */) { + return 1 /* CharBoundaryCategory.WordUpper */; + } + else if (charCode >= 48 /* CharCode.Digit0 */ && charCode <= 57 /* CharCode.Digit9 */) { + return 2 /* CharBoundaryCategory.WordNumber */; + } + else if (charCode === -1) { + return 3 /* CharBoundaryCategory.End */; + } + else if (charCode === 44 /* CharCode.Comma */ || charCode === 59 /* CharCode.Semicolon */) { + return 5 /* CharBoundaryCategory.Separator */; + } + else { + return 4 /* CharBoundaryCategory.Other */; + } +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +function computeMovedLines(changes, originalLines, modifiedLines, hashedOriginalLines, hashedModifiedLines, timeout) { + let { moves, excludedChanges } = computeMovesFromSimpleDeletionsToSimpleInsertions(changes, originalLines, modifiedLines, timeout); + if (!timeout.isValid()) { + return []; + } + const filteredChanges = changes.filter(c => !excludedChanges.has(c)); + const unchangedMoves = computeUnchangedMoves(filteredChanges, hashedOriginalLines, hashedModifiedLines, originalLines, modifiedLines, timeout); + pushMany(moves, unchangedMoves); + moves = joinCloseConsecutiveMoves(moves); + // Ignore too short moves + moves = moves.filter(current => { + const lines = current.original.toOffsetRange().slice(originalLines).map(l => l.trim()); + const originalText = lines.join('\n'); + return originalText.length >= 15 && countWhere(lines, l => l.length >= 2) >= 2; + }); + moves = removeMovesInSameDiff(changes, moves); + return moves; +} +function countWhere(arr, predicate) { + let count = 0; + for (const t of arr) { + if (predicate(t)) { + count++; + } + } + return count; +} +function computeMovesFromSimpleDeletionsToSimpleInsertions(changes, originalLines, modifiedLines, timeout) { + const moves = []; + const deletions = changes + .filter(c => c.modified.isEmpty && c.original.length >= 3) + .map(d => new LineRangeFragment(d.original, originalLines, d)); + const insertions = new Set(changes + .filter(c => c.original.isEmpty && c.modified.length >= 3) + .map(d => new LineRangeFragment(d.modified, modifiedLines, d))); + const excludedChanges = new Set(); + for (const deletion of deletions) { + let highestSimilarity = -1; + let best; + for (const insertion of insertions) { + const similarity = deletion.computeSimilarity(insertion); + if (similarity > highestSimilarity) { + highestSimilarity = similarity; + best = insertion; + } + } + if (highestSimilarity > 0.90 && best) { + insertions.delete(best); + moves.push(new LineRangeMapping(deletion.range, best.range)); + excludedChanges.add(deletion.source); + excludedChanges.add(best.source); + } + if (!timeout.isValid()) { + return { moves, excludedChanges }; + } + } + return { moves, excludedChanges }; +} +function computeUnchangedMoves(changes, hashedOriginalLines, hashedModifiedLines, originalLines, modifiedLines, timeout) { + const moves = []; + const original3LineHashes = new SetMap(); + for (const change of changes) { + for (let i = change.original.startLineNumber; i < change.original.endLineNumberExclusive - 2; i++) { + const key = `${hashedOriginalLines[i - 1]}:${hashedOriginalLines[i + 1 - 1]}:${hashedOriginalLines[i + 2 - 1]}`; + original3LineHashes.add(key, { range: new LineRange(i, i + 3) }); + } + } + const possibleMappings = []; + changes.sort(compareBy(c => c.modified.startLineNumber, numberComparator)); + for (const change of changes) { + let lastMappings = []; + for (let i = change.modified.startLineNumber; i < change.modified.endLineNumberExclusive - 2; i++) { + const key = `${hashedModifiedLines[i - 1]}:${hashedModifiedLines[i + 1 - 1]}:${hashedModifiedLines[i + 2 - 1]}`; + const currentModifiedRange = new LineRange(i, i + 3); + const nextMappings = []; + original3LineHashes.forEach(key, ({ range }) => { + for (const lastMapping of lastMappings) { + // does this match extend some last match? + if (lastMapping.originalLineRange.endLineNumberExclusive + 1 === range.endLineNumberExclusive && + lastMapping.modifiedLineRange.endLineNumberExclusive + 1 === currentModifiedRange.endLineNumberExclusive) { + lastMapping.originalLineRange = new LineRange(lastMapping.originalLineRange.startLineNumber, range.endLineNumberExclusive); + lastMapping.modifiedLineRange = new LineRange(lastMapping.modifiedLineRange.startLineNumber, currentModifiedRange.endLineNumberExclusive); + nextMappings.push(lastMapping); + return; + } + } + const mapping = { + modifiedLineRange: currentModifiedRange, + originalLineRange: range, + }; + possibleMappings.push(mapping); + nextMappings.push(mapping); + }); + lastMappings = nextMappings; + } + if (!timeout.isValid()) { + return []; + } + } + possibleMappings.sort(reverseOrder(compareBy(m => m.modifiedLineRange.length, numberComparator))); + const modifiedSet = new LineRangeSet(); + const originalSet = new LineRangeSet(); + for (const mapping of possibleMappings) { + const diffOrigToMod = mapping.modifiedLineRange.startLineNumber - mapping.originalLineRange.startLineNumber; + const modifiedSections = modifiedSet.subtractFrom(mapping.modifiedLineRange); + const originalTranslatedSections = originalSet.subtractFrom(mapping.originalLineRange).getWithDelta(diffOrigToMod); + const modifiedIntersectedSections = modifiedSections.getIntersection(originalTranslatedSections); + for (const s of modifiedIntersectedSections.ranges) { + if (s.length < 3) { + continue; + } + const modifiedLineRange = s; + const originalLineRange = s.delta(-diffOrigToMod); + moves.push(new LineRangeMapping(originalLineRange, modifiedLineRange)); + modifiedSet.addRange(modifiedLineRange); + originalSet.addRange(originalLineRange); + } + } + moves.sort(compareBy(m => m.original.startLineNumber, numberComparator)); + const monotonousChanges = new MonotonousArray(changes); + for (let i = 0; i < moves.length; i++) { + const move = moves[i]; + const firstTouchingChangeOrig = monotonousChanges.findLastMonotonous(c => c.original.startLineNumber <= move.original.startLineNumber); + const firstTouchingChangeMod = findLastMonotonous(changes, c => c.modified.startLineNumber <= move.modified.startLineNumber); + const linesAbove = Math.max(move.original.startLineNumber - firstTouchingChangeOrig.original.startLineNumber, move.modified.startLineNumber - firstTouchingChangeMod.modified.startLineNumber); + const lastTouchingChangeOrig = monotonousChanges.findLastMonotonous(c => c.original.startLineNumber < move.original.endLineNumberExclusive); + const lastTouchingChangeMod = findLastMonotonous(changes, c => c.modified.startLineNumber < move.modified.endLineNumberExclusive); + const linesBelow = Math.max(lastTouchingChangeOrig.original.endLineNumberExclusive - move.original.endLineNumberExclusive, lastTouchingChangeMod.modified.endLineNumberExclusive - move.modified.endLineNumberExclusive); + let extendToTop; + for (extendToTop = 0; extendToTop < linesAbove; extendToTop++) { + const origLine = move.original.startLineNumber - extendToTop - 1; + const modLine = move.modified.startLineNumber - extendToTop - 1; + if (origLine > originalLines.length || modLine > modifiedLines.length) { + break; + } + if (modifiedSet.contains(modLine) || originalSet.contains(origLine)) { + break; + } + if (!areLinesSimilar(originalLines[origLine - 1], modifiedLines[modLine - 1], timeout)) { + break; + } + } + if (extendToTop > 0) { + originalSet.addRange(new LineRange(move.original.startLineNumber - extendToTop, move.original.startLineNumber)); + modifiedSet.addRange(new LineRange(move.modified.startLineNumber - extendToTop, move.modified.startLineNumber)); + } + let extendToBottom; + for (extendToBottom = 0; extendToBottom < linesBelow; extendToBottom++) { + const origLine = move.original.endLineNumberExclusive + extendToBottom; + const modLine = move.modified.endLineNumberExclusive + extendToBottom; + if (origLine > originalLines.length || modLine > modifiedLines.length) { + break; + } + if (modifiedSet.contains(modLine) || originalSet.contains(origLine)) { + break; + } + if (!areLinesSimilar(originalLines[origLine - 1], modifiedLines[modLine - 1], timeout)) { + break; + } + } + if (extendToBottom > 0) { + originalSet.addRange(new LineRange(move.original.endLineNumberExclusive, move.original.endLineNumberExclusive + extendToBottom)); + modifiedSet.addRange(new LineRange(move.modified.endLineNumberExclusive, move.modified.endLineNumberExclusive + extendToBottom)); + } + if (extendToTop > 0 || extendToBottom > 0) { + moves[i] = new LineRangeMapping(new LineRange(move.original.startLineNumber - extendToTop, move.original.endLineNumberExclusive + extendToBottom), new LineRange(move.modified.startLineNumber - extendToTop, move.modified.endLineNumberExclusive + extendToBottom)); + } + } + return moves; +} +function areLinesSimilar(line1, line2, timeout) { + if (line1.trim() === line2.trim()) { + return true; + } + if (line1.length > 300 && line2.length > 300) { + return false; + } + const myersDiffingAlgorithm = new MyersDiffAlgorithm(); + const result = myersDiffingAlgorithm.compute(new LinesSliceCharSequence([line1], new OffsetRange(0, 1), false), new LinesSliceCharSequence([line2], new OffsetRange(0, 1), false), timeout); + let commonNonSpaceCharCount = 0; + const inverted = SequenceDiff.invert(result.diffs, line1.length); + for (const seq of inverted) { + seq.seq1Range.forEach(idx => { + if (!isSpace(line1.charCodeAt(idx))) { + commonNonSpaceCharCount++; + } + }); + } + function countNonWsChars(str) { + let count = 0; + for (let i = 0; i < line1.length; i++) { + if (!isSpace(str.charCodeAt(i))) { + count++; + } + } + return count; + } + const longerLineLength = countNonWsChars(line1.length > line2.length ? line1 : line2); + const r = commonNonSpaceCharCount / longerLineLength > 0.6 && longerLineLength > 10; + return r; +} +function joinCloseConsecutiveMoves(moves) { + if (moves.length === 0) { + return moves; + } + moves.sort(compareBy(m => m.original.startLineNumber, numberComparator)); + const result = [moves[0]]; + for (let i = 1; i < moves.length; i++) { + const last = result[result.length - 1]; + const current = moves[i]; + const originalDist = current.original.startLineNumber - last.original.endLineNumberExclusive; + const modifiedDist = current.modified.startLineNumber - last.modified.endLineNumberExclusive; + const currentMoveAfterLast = originalDist >= 0 && modifiedDist >= 0; + if (currentMoveAfterLast && originalDist + modifiedDist <= 2) { + result[result.length - 1] = last.join(current); + continue; + } + result.push(current); + } + return result; +} +function removeMovesInSameDiff(changes, moves) { + const changesMonotonous = new MonotonousArray(changes); + moves = moves.filter(m => { + const diffBeforeEndOfMoveOriginal = changesMonotonous.findLastMonotonous(c => c.original.startLineNumber < m.original.endLineNumberExclusive) + || new LineRangeMapping(new LineRange(1, 1), new LineRange(1, 1)); + const diffBeforeEndOfMoveModified = findLastMonotonous(changes, c => c.modified.startLineNumber < m.modified.endLineNumberExclusive); + const differentDiffs = diffBeforeEndOfMoveOriginal !== diffBeforeEndOfMoveModified; + return differentDiffs; + }); + return moves; +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +function optimizeSequenceDiffs(sequence1, sequence2, sequenceDiffs) { + let result = sequenceDiffs; + result = joinSequenceDiffsByShifting(sequence1, sequence2, result); + // Sometimes, calling this function twice improves the result. + // Uncomment the second invocation and run the tests to see the difference. + result = joinSequenceDiffsByShifting(sequence1, sequence2, result); + result = shiftSequenceDiffs(sequence1, sequence2, result); + return result; +} +/** + * This function fixes issues like this: + * ``` + * import { Baz, Bar } from "foo"; + * ``` + * <-> + * ``` + * import { Baz, Bar, Foo } from "foo"; + * ``` + * Computed diff: [ {Add "," after Bar}, {Add "Foo " after space} } + * Improved diff: [{Add ", Foo" after Bar}] + */ +function joinSequenceDiffsByShifting(sequence1, sequence2, sequenceDiffs) { + if (sequenceDiffs.length === 0) { + return sequenceDiffs; + } + const result = []; + result.push(sequenceDiffs[0]); + // First move them all to the left as much as possible and join them if possible + for (let i = 1; i < sequenceDiffs.length; i++) { + const prevResult = result[result.length - 1]; + let cur = sequenceDiffs[i]; + if (cur.seq1Range.isEmpty || cur.seq2Range.isEmpty) { + const length = cur.seq1Range.start - prevResult.seq1Range.endExclusive; + let d; + for (d = 1; d <= length; d++) { + if (sequence1.getElement(cur.seq1Range.start - d) !== sequence1.getElement(cur.seq1Range.endExclusive - d) || + sequence2.getElement(cur.seq2Range.start - d) !== sequence2.getElement(cur.seq2Range.endExclusive - d)) { + break; + } + } + d--; + if (d === length) { + // Merge previous and current diff + result[result.length - 1] = new SequenceDiff(new OffsetRange(prevResult.seq1Range.start, cur.seq1Range.endExclusive - length), new OffsetRange(prevResult.seq2Range.start, cur.seq2Range.endExclusive - length)); + continue; + } + cur = cur.delta(-d); + } + result.push(cur); + } + const result2 = []; + // Then move them all to the right and join them again if possible + for (let i = 0; i < result.length - 1; i++) { + const nextResult = result[i + 1]; + let cur = result[i]; + if (cur.seq1Range.isEmpty || cur.seq2Range.isEmpty) { + const length = nextResult.seq1Range.start - cur.seq1Range.endExclusive; + let d; + for (d = 0; d < length; d++) { + if (!sequence1.isStronglyEqual(cur.seq1Range.start + d, cur.seq1Range.endExclusive + d) || + !sequence2.isStronglyEqual(cur.seq2Range.start + d, cur.seq2Range.endExclusive + d)) { + break; + } + } + if (d === length) { + // Merge previous and current diff, write to result! + result[i + 1] = new SequenceDiff(new OffsetRange(cur.seq1Range.start + length, nextResult.seq1Range.endExclusive), new OffsetRange(cur.seq2Range.start + length, nextResult.seq2Range.endExclusive)); + continue; + } + if (d > 0) { + cur = cur.delta(d); + } + } + result2.push(cur); + } + if (result.length > 0) { + result2.push(result[result.length - 1]); + } + return result2; +} +// align character level diffs at whitespace characters +// import { IBar } from "foo"; +// import { I[Arr, I]Bar } from "foo"; +// -> +// import { [IArr, ]IBar } from "foo"; +// import { ITransaction, observableValue, transaction } from 'vs/base/common/observable'; +// import { ITransaction, observable[FromEvent, observable]Value, transaction } from 'vs/base/common/observable'; +// -> +// import { ITransaction, [observableFromEvent, ]observableValue, transaction } from 'vs/base/common/observable'; +// collectBrackets(level + 1, levelPerBracketType); +// collectBrackets(level + 1, levelPerBracket[ + 1, levelPerBracket]Type); +// -> +// collectBrackets(level + 1, [levelPerBracket + 1, ]levelPerBracketType); +function shiftSequenceDiffs(sequence1, sequence2, sequenceDiffs) { + if (!sequence1.getBoundaryScore || !sequence2.getBoundaryScore) { + return sequenceDiffs; + } + for (let i = 0; i < sequenceDiffs.length; i++) { + const prevDiff = (i > 0 ? sequenceDiffs[i - 1] : undefined); + const diff = sequenceDiffs[i]; + const nextDiff = (i + 1 < sequenceDiffs.length ? sequenceDiffs[i + 1] : undefined); + const seq1ValidRange = new OffsetRange(prevDiff ? prevDiff.seq1Range.start + 1 : 0, nextDiff ? nextDiff.seq1Range.endExclusive - 1 : sequence1.length); + const seq2ValidRange = new OffsetRange(prevDiff ? prevDiff.seq2Range.start + 1 : 0, nextDiff ? nextDiff.seq2Range.endExclusive - 1 : sequence2.length); + if (diff.seq1Range.isEmpty) { + sequenceDiffs[i] = shiftDiffToBetterPosition(diff, sequence1, sequence2, seq1ValidRange, seq2ValidRange); + } + else if (diff.seq2Range.isEmpty) { + sequenceDiffs[i] = shiftDiffToBetterPosition(diff.swap(), sequence2, sequence1, seq2ValidRange, seq1ValidRange).swap(); + } + } + return sequenceDiffs; +} +function shiftDiffToBetterPosition(diff, sequence1, sequence2, seq1ValidRange, seq2ValidRange) { + const maxShiftLimit = 100; // To prevent performance issues + // don't touch previous or next! + let deltaBefore = 1; + while (diff.seq1Range.start - deltaBefore >= seq1ValidRange.start && + diff.seq2Range.start - deltaBefore >= seq2ValidRange.start && + sequence2.isStronglyEqual(diff.seq2Range.start - deltaBefore, diff.seq2Range.endExclusive - deltaBefore) && deltaBefore < maxShiftLimit) { + deltaBefore++; + } + deltaBefore--; + let deltaAfter = 0; + while (diff.seq1Range.start + deltaAfter < seq1ValidRange.endExclusive && + diff.seq2Range.endExclusive + deltaAfter < seq2ValidRange.endExclusive && + sequence2.isStronglyEqual(diff.seq2Range.start + deltaAfter, diff.seq2Range.endExclusive + deltaAfter) && deltaAfter < maxShiftLimit) { + deltaAfter++; + } + if (deltaBefore === 0 && deltaAfter === 0) { + return diff; + } + // Visualize `[sequence1.text, diff.seq1Range.start + deltaAfter]` + // and `[sequence2.text, diff.seq2Range.start + deltaAfter, diff.seq2Range.endExclusive + deltaAfter]` + let bestDelta = 0; + let bestScore = -1; + // find best scored delta + for (let delta = -deltaBefore; delta <= deltaAfter; delta++) { + const seq2OffsetStart = diff.seq2Range.start + delta; + const seq2OffsetEndExclusive = diff.seq2Range.endExclusive + delta; + const seq1Offset = diff.seq1Range.start + delta; + const score = sequence1.getBoundaryScore(seq1Offset) + sequence2.getBoundaryScore(seq2OffsetStart) + sequence2.getBoundaryScore(seq2OffsetEndExclusive); + if (score > bestScore) { + bestScore = score; + bestDelta = delta; + } + } + return diff.delta(bestDelta); +} +function removeShortMatches(sequence1, sequence2, sequenceDiffs) { + const result = []; + for (const s of sequenceDiffs) { + const last = result[result.length - 1]; + if (!last) { + result.push(s); + continue; + } + if (s.seq1Range.start - last.seq1Range.endExclusive <= 2 || s.seq2Range.start - last.seq2Range.endExclusive <= 2) { + result[result.length - 1] = new SequenceDiff(last.seq1Range.join(s.seq1Range), last.seq2Range.join(s.seq2Range)); + } + else { + result.push(s); + } + } + return result; +} +function extendDiffsToEntireWordIfAppropriate(sequence1, sequence2, sequenceDiffs) { + const additional = []; + let lastModifiedWord = undefined; + function maybePushWordToAdditional() { + if (!lastModifiedWord) { + return; + } + const originalLength1 = lastModifiedWord.s1Range.length - lastModifiedWord.deleted; + lastModifiedWord.s2Range.length - lastModifiedWord.added; + if (Math.max(lastModifiedWord.deleted, lastModifiedWord.added) + (lastModifiedWord.count - 1) > originalLength1) { + additional.push(new SequenceDiff(lastModifiedWord.s1Range, lastModifiedWord.s2Range)); + } + lastModifiedWord = undefined; + } + for (const s of sequenceDiffs) { + function processWord(s1Range, s2Range) { + var _a, _b, _c, _d; + if (!lastModifiedWord || !lastModifiedWord.s1Range.containsRange(s1Range) || !lastModifiedWord.s2Range.containsRange(s2Range)) { + if (lastModifiedWord && !(lastModifiedWord.s1Range.endExclusive < s1Range.start && lastModifiedWord.s2Range.endExclusive < s2Range.start)) { + const s1Added = OffsetRange.tryCreate(lastModifiedWord.s1Range.endExclusive, s1Range.start); + const s2Added = OffsetRange.tryCreate(lastModifiedWord.s2Range.endExclusive, s2Range.start); + lastModifiedWord.deleted += (_a = s1Added === null || s1Added === void 0 ? void 0 : s1Added.length) !== null && _a !== void 0 ? _a : 0; + lastModifiedWord.added += (_b = s2Added === null || s2Added === void 0 ? void 0 : s2Added.length) !== null && _b !== void 0 ? _b : 0; + lastModifiedWord.s1Range = lastModifiedWord.s1Range.join(s1Range); + lastModifiedWord.s2Range = lastModifiedWord.s2Range.join(s2Range); + } + else { + maybePushWordToAdditional(); + lastModifiedWord = { added: 0, deleted: 0, count: 0, s1Range: s1Range, s2Range: s2Range }; + } + } + const changedS1 = s1Range.intersect(s.seq1Range); + const changedS2 = s2Range.intersect(s.seq2Range); + lastModifiedWord.count++; + lastModifiedWord.deleted += (_c = changedS1 === null || changedS1 === void 0 ? void 0 : changedS1.length) !== null && _c !== void 0 ? _c : 0; + lastModifiedWord.added += (_d = changedS2 === null || changedS2 === void 0 ? void 0 : changedS2.length) !== null && _d !== void 0 ? _d : 0; + } + const w1Before = sequence1.findWordContaining(s.seq1Range.start - 1); + const w2Before = sequence2.findWordContaining(s.seq2Range.start - 1); + const w1After = sequence1.findWordContaining(s.seq1Range.endExclusive); + const w2After = sequence2.findWordContaining(s.seq2Range.endExclusive); + if (w1Before && w1After && w2Before && w2After && w1Before.equals(w1After) && w2Before.equals(w2After)) { + processWord(w1Before, w2Before); + } + else { + if (w1Before && w2Before) { + processWord(w1Before, w2Before); + } + if (w1After && w2After) { + processWord(w1After, w2After); + } + } + } + maybePushWordToAdditional(); + const merged = mergeSequenceDiffs(sequenceDiffs, additional); + return merged; +} +function mergeSequenceDiffs(sequenceDiffs1, sequenceDiffs2) { + const result = []; + while (sequenceDiffs1.length > 0 || sequenceDiffs2.length > 0) { + const sd1 = sequenceDiffs1[0]; + const sd2 = sequenceDiffs2[0]; + let next; + if (sd1 && (!sd2 || sd1.seq1Range.start < sd2.seq1Range.start)) { + next = sequenceDiffs1.shift(); + } + else { + next = sequenceDiffs2.shift(); + } + if (result.length > 0 && result[result.length - 1].seq1Range.endExclusive >= next.seq1Range.start) { + result[result.length - 1] = result[result.length - 1].join(next); + } + else { + result.push(next); + } + } + return result; +} +function removeVeryShortMatchingLinesBetweenDiffs(sequence1, _sequence2, sequenceDiffs) { + let diffs = sequenceDiffs; + if (diffs.length === 0) { + return diffs; + } + let counter = 0; + let shouldRepeat; + do { + shouldRepeat = false; + const result = [ + diffs[0] + ]; + for (let i = 1; i < diffs.length; i++) { + const cur = diffs[i]; + const lastResult = result[result.length - 1]; + function shouldJoinDiffs(before, after) { + const unchangedRange = new OffsetRange(lastResult.seq1Range.endExclusive, cur.seq1Range.start); + const unchangedText = sequence1.getText(unchangedRange); + const unchangedTextWithoutWs = unchangedText.replace(/\s/g, ''); + if (unchangedTextWithoutWs.length <= 4 + && (before.seq1Range.length + before.seq2Range.length > 5 || after.seq1Range.length + after.seq2Range.length > 5)) { + return true; + } + return false; + } + const shouldJoin = shouldJoinDiffs(lastResult, cur); + if (shouldJoin) { + shouldRepeat = true; + result[result.length - 1] = result[result.length - 1].join(cur); + } + else { + result.push(cur); + } + } + diffs = result; + } while (counter++ < 10 && shouldRepeat); + return diffs; +} +function removeVeryShortMatchingTextBetweenLongDiffs(sequence1, sequence2, sequenceDiffs) { + let diffs = sequenceDiffs; + if (diffs.length === 0) { + return diffs; + } + let counter = 0; + let shouldRepeat; + do { + shouldRepeat = false; + const result = [ + diffs[0] + ]; + for (let i = 1; i < diffs.length; i++) { + const cur = diffs[i]; + const lastResult = result[result.length - 1]; + function shouldJoinDiffs(before, after) { + const unchangedRange = new OffsetRange(lastResult.seq1Range.endExclusive, cur.seq1Range.start); + const unchangedLineCount = sequence1.countLinesIn(unchangedRange); + if (unchangedLineCount > 5 || unchangedRange.length > 500) { + return false; + } + const unchangedText = sequence1.getText(unchangedRange).trim(); + if (unchangedText.length > 20 || unchangedText.split(/\r\n|\r|\n/).length > 1) { + return false; + } + const beforeLineCount1 = sequence1.countLinesIn(before.seq1Range); + const beforeSeq1Length = before.seq1Range.length; + const beforeLineCount2 = sequence2.countLinesIn(before.seq2Range); + const beforeSeq2Length = before.seq2Range.length; + const afterLineCount1 = sequence1.countLinesIn(after.seq1Range); + const afterSeq1Length = after.seq1Range.length; + const afterLineCount2 = sequence2.countLinesIn(after.seq2Range); + const afterSeq2Length = after.seq2Range.length; + // TODO: Maybe a neural net can be used to derive the result from these numbers + const max = 2 * 40 + 50; + function cap(v) { + return Math.min(v, max); + } + if (Math.pow(Math.pow(cap(beforeLineCount1 * 40 + beforeSeq1Length), 1.5) + Math.pow(cap(beforeLineCount2 * 40 + beforeSeq2Length), 1.5), 1.5) + + Math.pow(Math.pow(cap(afterLineCount1 * 40 + afterSeq1Length), 1.5) + Math.pow(cap(afterLineCount2 * 40 + afterSeq2Length), 1.5), 1.5) > ((max ** 1.5) ** 1.5) * 1.3) { + return true; + } + return false; + } + const shouldJoin = shouldJoinDiffs(lastResult, cur); + if (shouldJoin) { + shouldRepeat = true; + result[result.length - 1] = result[result.length - 1].join(cur); + } + else { + result.push(cur); + } + } + diffs = result; + } while (counter++ < 10 && shouldRepeat); + const newDiffs = []; + // Remove short suffixes/prefixes + forEachWithNeighbors(diffs, (prev, cur, next) => { + let newDiff = cur; + function shouldMarkAsChanged(text) { + return text.length > 0 && text.trim().length <= 3 && cur.seq1Range.length + cur.seq2Range.length > 100; + } + const fullRange1 = sequence1.extendToFullLines(cur.seq1Range); + const prefix = sequence1.getText(new OffsetRange(fullRange1.start, cur.seq1Range.start)); + if (shouldMarkAsChanged(prefix)) { + newDiff = newDiff.deltaStart(-prefix.length); + } + const suffix = sequence1.getText(new OffsetRange(cur.seq1Range.endExclusive, fullRange1.endExclusive)); + if (shouldMarkAsChanged(suffix)) { + newDiff = newDiff.deltaEnd(suffix.length); + } + const availableSpace = SequenceDiff.fromOffsetPairs(prev ? prev.getEndExclusives() : OffsetPair.zero, next ? next.getStarts() : OffsetPair.max); + const result = newDiff.intersect(availableSpace); + newDiffs.push(result); + }); + return newDiffs; +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +class LineSequence { + constructor(trimmedHash, lines) { + this.trimmedHash = trimmedHash; + this.lines = lines; + } + getElement(offset) { + return this.trimmedHash[offset]; + } + get length() { + return this.trimmedHash.length; + } + getBoundaryScore(length) { + const indentationBefore = length === 0 ? 0 : getIndentation(this.lines[length - 1]); + const indentationAfter = length === this.lines.length ? 0 : getIndentation(this.lines[length]); + return 1000 - (indentationBefore + indentationAfter); + } + getText(range) { + return this.lines.slice(range.start, range.endExclusive).join('\n'); + } + isStronglyEqual(offset1, offset2) { + return this.lines[offset1] === this.lines[offset2]; + } +} +function getIndentation(str) { + let i = 0; + while (i < str.length && (str.charCodeAt(i) === 32 /* CharCode.Space */ || str.charCodeAt(i) === 9 /* CharCode.Tab */)) { + i++; + } + return i; +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +class DefaultLinesDiffComputer { + constructor() { + this.dynamicProgrammingDiffing = new DynamicProgrammingDiffing(); + this.myersDiffingAlgorithm = new MyersDiffAlgorithm(); + } + computeDiff(originalLines, modifiedLines, options) { + if (originalLines.length <= 1 && equals$1(originalLines, modifiedLines, (a, b) => a === b)) { + return new LinesDiff([], [], false); + } + if (originalLines.length === 1 && originalLines[0].length === 0 || modifiedLines.length === 1 && modifiedLines[0].length === 0) { + return new LinesDiff([ + new DetailedLineRangeMapping(new LineRange(1, originalLines.length + 1), new LineRange(1, modifiedLines.length + 1), [ + new RangeMapping(new Range$b(1, 1, originalLines.length, originalLines[0].length + 1), new Range$b(1, 1, modifiedLines.length, modifiedLines[0].length + 1)) + ]) + ], [], false); + } + const timeout = options.maxComputationTimeMs === 0 ? InfiniteTimeout.instance : new DateTimeout(options.maxComputationTimeMs); + const considerWhitespaceChanges = !options.ignoreTrimWhitespace; + const perfectHashes = new Map(); + function getOrCreateHash(text) { + let hash = perfectHashes.get(text); + if (hash === undefined) { + hash = perfectHashes.size; + perfectHashes.set(text, hash); + } + return hash; + } + const originalLinesHashes = originalLines.map((l) => getOrCreateHash(l.trim())); + const modifiedLinesHashes = modifiedLines.map((l) => getOrCreateHash(l.trim())); + const sequence1 = new LineSequence(originalLinesHashes, originalLines); + const sequence2 = new LineSequence(modifiedLinesHashes, modifiedLines); + const lineAlignmentResult = (() => { + if (sequence1.length + sequence2.length < 1700) { + // Use the improved algorithm for small files + return this.dynamicProgrammingDiffing.compute(sequence1, sequence2, timeout, (offset1, offset2) => originalLines[offset1] === modifiedLines[offset2] + ? modifiedLines[offset2].length === 0 + ? 0.1 + : 1 + Math.log(1 + modifiedLines[offset2].length) + : 0.99); + } + return this.myersDiffingAlgorithm.compute(sequence1, sequence2); + })(); + let lineAlignments = lineAlignmentResult.diffs; + let hitTimeout = lineAlignmentResult.hitTimeout; + lineAlignments = optimizeSequenceDiffs(sequence1, sequence2, lineAlignments); + lineAlignments = removeVeryShortMatchingLinesBetweenDiffs(sequence1, sequence2, lineAlignments); + const alignments = []; + const scanForWhitespaceChanges = (equalLinesCount) => { + if (!considerWhitespaceChanges) { + return; + } + for (let i = 0; i < equalLinesCount; i++) { + const seq1Offset = seq1LastStart + i; + const seq2Offset = seq2LastStart + i; + if (originalLines[seq1Offset] !== modifiedLines[seq2Offset]) { + // This is because of whitespace changes, diff these lines + const characterDiffs = this.refineDiff(originalLines, modifiedLines, new SequenceDiff(new OffsetRange(seq1Offset, seq1Offset + 1), new OffsetRange(seq2Offset, seq2Offset + 1)), timeout, considerWhitespaceChanges); + for (const a of characterDiffs.mappings) { + alignments.push(a); + } + if (characterDiffs.hitTimeout) { + hitTimeout = true; + } + } + } + }; + let seq1LastStart = 0; + let seq2LastStart = 0; + for (const diff of lineAlignments) { + assertFn(() => diff.seq1Range.start - seq1LastStart === diff.seq2Range.start - seq2LastStart); + const equalLinesCount = diff.seq1Range.start - seq1LastStart; + scanForWhitespaceChanges(equalLinesCount); + seq1LastStart = diff.seq1Range.endExclusive; + seq2LastStart = diff.seq2Range.endExclusive; + const characterDiffs = this.refineDiff(originalLines, modifiedLines, diff, timeout, considerWhitespaceChanges); + if (characterDiffs.hitTimeout) { + hitTimeout = true; + } + for (const a of characterDiffs.mappings) { + alignments.push(a); + } + } + scanForWhitespaceChanges(originalLines.length - seq1LastStart); + const changes = lineRangeMappingFromRangeMappings(alignments, originalLines, modifiedLines); + let moves = []; + if (options.computeMoves) { + moves = this.computeMoves(changes, originalLines, modifiedLines, originalLinesHashes, modifiedLinesHashes, timeout, considerWhitespaceChanges); + } + // Make sure all ranges are valid + assertFn(() => { + function validatePosition(pos, lines) { + if (pos.lineNumber < 1 || pos.lineNumber > lines.length) { + return false; + } + const line = lines[pos.lineNumber - 1]; + if (pos.column < 1 || pos.column > line.length + 1) { + return false; + } + return true; + } + function validateRange(range, lines) { + if (range.startLineNumber < 1 || range.startLineNumber > lines.length + 1) { + return false; + } + if (range.endLineNumberExclusive < 1 || range.endLineNumberExclusive > lines.length + 1) { + return false; + } + return true; + } + for (const c of changes) { + if (!c.innerChanges) { + return false; + } + for (const ic of c.innerChanges) { + const valid = validatePosition(ic.modifiedRange.getStartPosition(), modifiedLines) && validatePosition(ic.modifiedRange.getEndPosition(), modifiedLines) && + validatePosition(ic.originalRange.getStartPosition(), originalLines) && validatePosition(ic.originalRange.getEndPosition(), originalLines); + if (!valid) { + return false; + } + } + if (!validateRange(c.modified, modifiedLines) || !validateRange(c.original, originalLines)) { + return false; + } + } + return true; + }); + return new LinesDiff(changes, moves, hitTimeout); + } + computeMoves(changes, originalLines, modifiedLines, hashedOriginalLines, hashedModifiedLines, timeout, considerWhitespaceChanges) { + const moves = computeMovedLines(changes, originalLines, modifiedLines, hashedOriginalLines, hashedModifiedLines, timeout); + const movesWithDiffs = moves.map(m => { + const moveChanges = this.refineDiff(originalLines, modifiedLines, new SequenceDiff(m.original.toOffsetRange(), m.modified.toOffsetRange()), timeout, considerWhitespaceChanges); + const mappings = lineRangeMappingFromRangeMappings(moveChanges.mappings, originalLines, modifiedLines, true); + return new MovedText(m, mappings); + }); + return movesWithDiffs; + } + refineDiff(originalLines, modifiedLines, diff, timeout, considerWhitespaceChanges) { + const slice1 = new LinesSliceCharSequence(originalLines, diff.seq1Range, considerWhitespaceChanges); + const slice2 = new LinesSliceCharSequence(modifiedLines, diff.seq2Range, considerWhitespaceChanges); + const diffResult = slice1.length + slice2.length < 500 + ? this.dynamicProgrammingDiffing.compute(slice1, slice2, timeout) + : this.myersDiffingAlgorithm.compute(slice1, slice2, timeout); + let diffs = diffResult.diffs; + diffs = optimizeSequenceDiffs(slice1, slice2, diffs); + diffs = extendDiffsToEntireWordIfAppropriate(slice1, slice2, diffs); + diffs = removeShortMatches(slice1, slice2, diffs); + diffs = removeVeryShortMatchingTextBetweenLongDiffs(slice1, slice2, diffs); + const result = diffs.map((d) => new RangeMapping(slice1.translateRange(d.seq1Range), slice2.translateRange(d.seq2Range))); + // Assert: result applied on original should be the same as diff applied to original + return { + mappings: result, + hitTimeout: diffResult.hitTimeout, + }; + } +} +function lineRangeMappingFromRangeMappings(alignments, originalLines, modifiedLines, dontAssertStartLine = false) { + const changes = []; + for (const g of groupAdjacentBy(alignments.map(a => getLineRangeMapping(a, originalLines, modifiedLines)), (a1, a2) => a1.original.overlapOrTouch(a2.original) + || a1.modified.overlapOrTouch(a2.modified))) { + const first = g[0]; + const last = g[g.length - 1]; + changes.push(new DetailedLineRangeMapping(first.original.join(last.original), first.modified.join(last.modified), g.map(a => a.innerChanges[0]))); + } + assertFn(() => { + if (!dontAssertStartLine) { + if (changes.length > 0 && changes[0].original.startLineNumber !== changes[0].modified.startLineNumber) { + return false; + } + } + return checkAdjacentItems(changes, (m1, m2) => m2.original.startLineNumber - m1.original.endLineNumberExclusive === m2.modified.startLineNumber - m1.modified.endLineNumberExclusive && + // There has to be an unchanged line in between (otherwise both diffs should have been joined) + m1.original.endLineNumberExclusive < m2.original.startLineNumber && + m1.modified.endLineNumberExclusive < m2.modified.startLineNumber); + }); + return changes; +} +function getLineRangeMapping(rangeMapping, originalLines, modifiedLines) { + let lineStartDelta = 0; + let lineEndDelta = 0; + // rangeMapping describes the edit that replaces `rangeMapping.originalRange` with `newText := getText(modifiedLines, rangeMapping.modifiedRange)`. + // original: ]xxx \n <- this line is not modified + // modified: ]xx \n + if (rangeMapping.modifiedRange.endColumn === 1 && rangeMapping.originalRange.endColumn === 1 + && rangeMapping.originalRange.startLineNumber + lineStartDelta <= rangeMapping.originalRange.endLineNumber + && rangeMapping.modifiedRange.startLineNumber + lineStartDelta <= rangeMapping.modifiedRange.endLineNumber) { + // We can only do this if the range is not empty yet + lineEndDelta = -1; + } + // original: xxx[ \n <- this line is not modified + // modified: xxx[ \n + if (rangeMapping.modifiedRange.startColumn - 1 >= modifiedLines[rangeMapping.modifiedRange.startLineNumber - 1].length + && rangeMapping.originalRange.startColumn - 1 >= originalLines[rangeMapping.originalRange.startLineNumber - 1].length + && rangeMapping.originalRange.startLineNumber <= rangeMapping.originalRange.endLineNumber + lineEndDelta + && rangeMapping.modifiedRange.startLineNumber <= rangeMapping.modifiedRange.endLineNumber + lineEndDelta) { + // We can only do this if the range is not empty yet + lineStartDelta = 1; + } + const originalLineRange = new LineRange(rangeMapping.originalRange.startLineNumber + lineStartDelta, rangeMapping.originalRange.endLineNumber + 1 + lineEndDelta); + const modifiedLineRange = new LineRange(rangeMapping.modifiedRange.startLineNumber + lineStartDelta, rangeMapping.modifiedRange.endLineNumber + 1 + lineEndDelta); + return new DetailedLineRangeMapping(originalLineRange, modifiedLineRange, [rangeMapping]); +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +const linesDiffComputers = { + getLegacy: () => new LegacyLinesDiffComputer(), + getDefault: () => new DefaultLinesDiffComputer(), +}; + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +function roundFloat(number, decimalPoints) { + const decimal = Math.pow(10, decimalPoints); + return Math.round(number * decimal) / decimal; +} +class RGBA { + constructor(r, g, b, a = 1) { + this._rgbaBrand = undefined; + this.r = Math.min(255, Math.max(0, r)) | 0; + this.g = Math.min(255, Math.max(0, g)) | 0; + this.b = Math.min(255, Math.max(0, b)) | 0; + this.a = roundFloat(Math.max(Math.min(1, a), 0), 3); + } + static equals(a, b) { + return a.r === b.r && a.g === b.g && a.b === b.b && a.a === b.a; + } +} +class HSLA { + constructor(h, s, l, a) { + this._hslaBrand = undefined; + this.h = Math.max(Math.min(360, h), 0) | 0; + this.s = roundFloat(Math.max(Math.min(1, s), 0), 3); + this.l = roundFloat(Math.max(Math.min(1, l), 0), 3); + this.a = roundFloat(Math.max(Math.min(1, a), 0), 3); + } + static equals(a, b) { + return a.h === b.h && a.s === b.s && a.l === b.l && a.a === b.a; + } + /** + * Converts an RGB color value to HSL. Conversion formula + * adapted from http://en.wikipedia.org/wiki/HSL_color_space. + * Assumes r, g, and b are contained in the set [0, 255] and + * returns h in the set [0, 360], s, and l in the set [0, 1]. + */ + static fromRGBA(rgba) { + const r = rgba.r / 255; + const g = rgba.g / 255; + const b = rgba.b / 255; + const a = rgba.a; + const max = Math.max(r, g, b); + const min = Math.min(r, g, b); + let h = 0; + let s = 0; + const l = (min + max) / 2; + const chroma = max - min; + if (chroma > 0) { + s = Math.min((l <= 0.5 ? chroma / (2 * l) : chroma / (2 - (2 * l))), 1); + switch (max) { + case r: + h = (g - b) / chroma + (g < b ? 6 : 0); + break; + case g: + h = (b - r) / chroma + 2; + break; + case b: + h = (r - g) / chroma + 4; + break; + } + h *= 60; + h = Math.round(h); + } + return new HSLA(h, s, l, a); + } + static _hue2rgb(p, q, t) { + if (t < 0) { + t += 1; + } + if (t > 1) { + t -= 1; + } + if (t < 1 / 6) { + return p + (q - p) * 6 * t; + } + if (t < 1 / 2) { + return q; + } + if (t < 2 / 3) { + return p + (q - p) * (2 / 3 - t) * 6; + } + return p; + } + /** + * Converts an HSL color value to RGB. Conversion formula + * adapted from http://en.wikipedia.org/wiki/HSL_color_space. + * Assumes h in the set [0, 360] s, and l are contained in the set [0, 1] and + * returns r, g, and b in the set [0, 255]. + */ + static toRGBA(hsla) { + const h = hsla.h / 360; + const { s, l, a } = hsla; + let r, g, b; + if (s === 0) { + r = g = b = l; // achromatic + } + else { + const q = l < 0.5 ? l * (1 + s) : l + s - l * s; + const p = 2 * l - q; + r = HSLA._hue2rgb(p, q, h + 1 / 3); + g = HSLA._hue2rgb(p, q, h); + b = HSLA._hue2rgb(p, q, h - 1 / 3); + } + return new RGBA(Math.round(r * 255), Math.round(g * 255), Math.round(b * 255), a); + } +} +class HSVA { + constructor(h, s, v, a) { + this._hsvaBrand = undefined; + this.h = Math.max(Math.min(360, h), 0) | 0; + this.s = roundFloat(Math.max(Math.min(1, s), 0), 3); + this.v = roundFloat(Math.max(Math.min(1, v), 0), 3); + this.a = roundFloat(Math.max(Math.min(1, a), 0), 3); + } + static equals(a, b) { + return a.h === b.h && a.s === b.s && a.v === b.v && a.a === b.a; + } + // from http://www.rapidtables.com/convert/color/rgb-to-hsv.htm + static fromRGBA(rgba) { + const r = rgba.r / 255; + const g = rgba.g / 255; + const b = rgba.b / 255; + const cmax = Math.max(r, g, b); + const cmin = Math.min(r, g, b); + const delta = cmax - cmin; + const s = cmax === 0 ? 0 : (delta / cmax); + let m; + if (delta === 0) { + m = 0; + } + else if (cmax === r) { + m = ((((g - b) / delta) % 6) + 6) % 6; + } + else if (cmax === g) { + m = ((b - r) / delta) + 2; + } + else { + m = ((r - g) / delta) + 4; + } + return new HSVA(Math.round(m * 60), s, cmax, rgba.a); + } + // from http://www.rapidtables.com/convert/color/hsv-to-rgb.htm + static toRGBA(hsva) { + const { h, s, v, a } = hsva; + const c = v * s; + const x = c * (1 - Math.abs((h / 60) % 2 - 1)); + const m = v - c; + let [r, g, b] = [0, 0, 0]; + if (h < 60) { + r = c; + g = x; + } + else if (h < 120) { + r = x; + g = c; + } + else if (h < 180) { + g = c; + b = x; + } + else if (h < 240) { + g = x; + b = c; + } + else if (h < 300) { + r = x; + b = c; + } + else if (h <= 360) { + r = c; + b = x; + } + r = Math.round((r + m) * 255); + g = Math.round((g + m) * 255); + b = Math.round((b + m) * 255); + return new RGBA(r, g, b, a); + } +} +let Color$1 = class Color { + static fromHex(hex) { + return Color.Format.CSS.parseHex(hex) || Color.red; + } + static equals(a, b) { + if (!a && !b) { + return true; + } + if (!a || !b) { + return false; + } + return a.equals(b); + } + get hsla() { + if (this._hsla) { + return this._hsla; + } + else { + return HSLA.fromRGBA(this.rgba); + } + } + get hsva() { + if (this._hsva) { + return this._hsva; + } + return HSVA.fromRGBA(this.rgba); + } + constructor(arg) { + if (!arg) { + throw new Error('Color needs a value'); + } + else if (arg instanceof RGBA) { + this.rgba = arg; + } + else if (arg instanceof HSLA) { + this._hsla = arg; + this.rgba = HSLA.toRGBA(arg); + } + else if (arg instanceof HSVA) { + this._hsva = arg; + this.rgba = HSVA.toRGBA(arg); + } + else { + throw new Error('Invalid color ctor argument'); + } + } + equals(other) { + return !!other && RGBA.equals(this.rgba, other.rgba) && HSLA.equals(this.hsla, other.hsla) && HSVA.equals(this.hsva, other.hsva); + } + /** + * http://www.w3.org/TR/WCAG20/#relativeluminancedef + * Returns the number in the set [0, 1]. O => Darkest Black. 1 => Lightest white. + */ + getRelativeLuminance() { + const R = Color._relativeLuminanceForComponent(this.rgba.r); + const G = Color._relativeLuminanceForComponent(this.rgba.g); + const B = Color._relativeLuminanceForComponent(this.rgba.b); + const luminance = 0.2126 * R + 0.7152 * G + 0.0722 * B; + return roundFloat(luminance, 4); + } + static _relativeLuminanceForComponent(color) { + const c = color / 255; + return (c <= 0.03928) ? c / 12.92 : Math.pow(((c + 0.055) / 1.055), 2.4); + } + /** + * http://24ways.org/2010/calculating-color-contrast + * Return 'true' if lighter color otherwise 'false' + */ + isLighter() { + const yiq = (this.rgba.r * 299 + this.rgba.g * 587 + this.rgba.b * 114) / 1000; + return yiq >= 128; + } + isLighterThan(another) { + const lum1 = this.getRelativeLuminance(); + const lum2 = another.getRelativeLuminance(); + return lum1 > lum2; + } + isDarkerThan(another) { + const lum1 = this.getRelativeLuminance(); + const lum2 = another.getRelativeLuminance(); + return lum1 < lum2; + } + lighten(factor) { + return new Color(new HSLA(this.hsla.h, this.hsla.s, this.hsla.l + this.hsla.l * factor, this.hsla.a)); + } + darken(factor) { + return new Color(new HSLA(this.hsla.h, this.hsla.s, this.hsla.l - this.hsla.l * factor, this.hsla.a)); + } + transparent(factor) { + const { r, g, b, a } = this.rgba; + return new Color(new RGBA(r, g, b, a * factor)); + } + isTransparent() { + return this.rgba.a === 0; + } + isOpaque() { + return this.rgba.a === 1; + } + opposite() { + return new Color(new RGBA(255 - this.rgba.r, 255 - this.rgba.g, 255 - this.rgba.b, this.rgba.a)); + } + makeOpaque(opaqueBackground) { + if (this.isOpaque() || opaqueBackground.rgba.a !== 1) { + // only allow to blend onto a non-opaque color onto a opaque color + return this; + } + const { r, g, b, a } = this.rgba; + // https://stackoverflow.com/questions/12228548/finding-equivalent-color-with-opacity + return new Color(new RGBA(opaqueBackground.rgba.r - a * (opaqueBackground.rgba.r - r), opaqueBackground.rgba.g - a * (opaqueBackground.rgba.g - g), opaqueBackground.rgba.b - a * (opaqueBackground.rgba.b - b), 1)); + } + toString() { + if (!this._toString) { + this._toString = Color.Format.CSS.format(this); + } + return this._toString; + } + static getLighterColor(of, relative, factor) { + if (of.isLighterThan(relative)) { + return of; + } + factor = factor ? factor : 0.5; + const lum1 = of.getRelativeLuminance(); + const lum2 = relative.getRelativeLuminance(); + factor = factor * (lum2 - lum1) / lum2; + return of.lighten(factor); + } + static getDarkerColor(of, relative, factor) { + if (of.isDarkerThan(relative)) { + return of; + } + factor = factor ? factor : 0.5; + const lum1 = of.getRelativeLuminance(); + const lum2 = relative.getRelativeLuminance(); + factor = factor * (lum1 - lum2) / lum1; + return of.darken(factor); + } +}; +Color$1.white = new Color$1(new RGBA(255, 255, 255, 1)); +Color$1.black = new Color$1(new RGBA(0, 0, 0, 1)); +Color$1.red = new Color$1(new RGBA(255, 0, 0, 1)); +Color$1.blue = new Color$1(new RGBA(0, 0, 255, 1)); +Color$1.green = new Color$1(new RGBA(0, 255, 0, 1)); +Color$1.cyan = new Color$1(new RGBA(0, 255, 255, 1)); +Color$1.lightgrey = new Color$1(new RGBA(211, 211, 211, 1)); +Color$1.transparent = new Color$1(new RGBA(0, 0, 0, 0)); +(function (Color) { + (function (Format) { + (function (CSS) { + function formatRGB(color) { + if (color.rgba.a === 1) { + return `rgb(${color.rgba.r}, ${color.rgba.g}, ${color.rgba.b})`; + } + return Color.Format.CSS.formatRGBA(color); + } + CSS.formatRGB = formatRGB; + function formatRGBA(color) { + return `rgba(${color.rgba.r}, ${color.rgba.g}, ${color.rgba.b}, ${+(color.rgba.a).toFixed(2)})`; + } + CSS.formatRGBA = formatRGBA; + function formatHSL(color) { + if (color.hsla.a === 1) { + return `hsl(${color.hsla.h}, ${(color.hsla.s * 100).toFixed(2)}%, ${(color.hsla.l * 100).toFixed(2)}%)`; + } + return Color.Format.CSS.formatHSLA(color); + } + CSS.formatHSL = formatHSL; + function formatHSLA(color) { + return `hsla(${color.hsla.h}, ${(color.hsla.s * 100).toFixed(2)}%, ${(color.hsla.l * 100).toFixed(2)}%, ${color.hsla.a.toFixed(2)})`; + } + CSS.formatHSLA = formatHSLA; + function _toTwoDigitHex(n) { + const r = n.toString(16); + return r.length !== 2 ? '0' + r : r; + } + /** + * Formats the color as #RRGGBB + */ + function formatHex(color) { + return `#${_toTwoDigitHex(color.rgba.r)}${_toTwoDigitHex(color.rgba.g)}${_toTwoDigitHex(color.rgba.b)}`; + } + CSS.formatHex = formatHex; + /** + * Formats the color as #RRGGBBAA + * If 'compact' is set, colors without transparancy will be printed as #RRGGBB + */ + function formatHexA(color, compact = false) { + if (compact && color.rgba.a === 1) { + return Color.Format.CSS.formatHex(color); + } + return `#${_toTwoDigitHex(color.rgba.r)}${_toTwoDigitHex(color.rgba.g)}${_toTwoDigitHex(color.rgba.b)}${_toTwoDigitHex(Math.round(color.rgba.a * 255))}`; + } + CSS.formatHexA = formatHexA; + /** + * The default format will use HEX if opaque and RGBA otherwise. + */ + function format(color) { + if (color.isOpaque()) { + return Color.Format.CSS.formatHex(color); + } + return Color.Format.CSS.formatRGBA(color); + } + CSS.format = format; + /** + * Converts an Hex color value to a Color. + * returns r, g, and b are contained in the set [0, 255] + * @param hex string (#RGB, #RGBA, #RRGGBB or #RRGGBBAA). + */ + function parseHex(hex) { + const length = hex.length; + if (length === 0) { + // Invalid color + return null; + } + if (hex.charCodeAt(0) !== 35 /* CharCode.Hash */) { + // Does not begin with a # + return null; + } + if (length === 7) { + // #RRGGBB format + const r = 16 * _parseHexDigit(hex.charCodeAt(1)) + _parseHexDigit(hex.charCodeAt(2)); + const g = 16 * _parseHexDigit(hex.charCodeAt(3)) + _parseHexDigit(hex.charCodeAt(4)); + const b = 16 * _parseHexDigit(hex.charCodeAt(5)) + _parseHexDigit(hex.charCodeAt(6)); + return new Color(new RGBA(r, g, b, 1)); + } + if (length === 9) { + // #RRGGBBAA format + const r = 16 * _parseHexDigit(hex.charCodeAt(1)) + _parseHexDigit(hex.charCodeAt(2)); + const g = 16 * _parseHexDigit(hex.charCodeAt(3)) + _parseHexDigit(hex.charCodeAt(4)); + const b = 16 * _parseHexDigit(hex.charCodeAt(5)) + _parseHexDigit(hex.charCodeAt(6)); + const a = 16 * _parseHexDigit(hex.charCodeAt(7)) + _parseHexDigit(hex.charCodeAt(8)); + return new Color(new RGBA(r, g, b, a / 255)); + } + if (length === 4) { + // #RGB format + const r = _parseHexDigit(hex.charCodeAt(1)); + const g = _parseHexDigit(hex.charCodeAt(2)); + const b = _parseHexDigit(hex.charCodeAt(3)); + return new Color(new RGBA(16 * r + r, 16 * g + g, 16 * b + b)); + } + if (length === 5) { + // #RGBA format + const r = _parseHexDigit(hex.charCodeAt(1)); + const g = _parseHexDigit(hex.charCodeAt(2)); + const b = _parseHexDigit(hex.charCodeAt(3)); + const a = _parseHexDigit(hex.charCodeAt(4)); + return new Color(new RGBA(16 * r + r, 16 * g + g, 16 * b + b, (16 * a + a) / 255)); + } + // Invalid color + return null; + } + CSS.parseHex = parseHex; + function _parseHexDigit(charCode) { + switch (charCode) { + case 48 /* CharCode.Digit0 */: return 0; + case 49 /* CharCode.Digit1 */: return 1; + case 50 /* CharCode.Digit2 */: return 2; + case 51 /* CharCode.Digit3 */: return 3; + case 52 /* CharCode.Digit4 */: return 4; + case 53 /* CharCode.Digit5 */: return 5; + case 54 /* CharCode.Digit6 */: return 6; + case 55 /* CharCode.Digit7 */: return 7; + case 56 /* CharCode.Digit8 */: return 8; + case 57 /* CharCode.Digit9 */: return 9; + case 97 /* CharCode.a */: return 10; + case 65 /* CharCode.A */: return 10; + case 98 /* CharCode.b */: return 11; + case 66 /* CharCode.B */: return 11; + case 99 /* CharCode.c */: return 12; + case 67 /* CharCode.C */: return 12; + case 100 /* CharCode.d */: return 13; + case 68 /* CharCode.D */: return 13; + case 101 /* CharCode.e */: return 14; + case 69 /* CharCode.E */: return 14; + case 102 /* CharCode.f */: return 15; + case 70 /* CharCode.F */: return 15; + } + return 0; + } + })(Format.CSS || (Format.CSS = {})); + })(Color.Format || (Color.Format = {})); +})(Color$1 || (Color$1 = {})); + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +function _parseCaptureGroups(captureGroups) { + const values = []; + for (const captureGroup of captureGroups) { + const parsedNumber = Number(captureGroup); + if (parsedNumber || parsedNumber === 0 && captureGroup.replace(/\s/g, '') !== '') { + values.push(parsedNumber); + } + } + return values; +} +function _toIColor(r, g, b, a) { + return { + red: r / 255, + blue: b / 255, + green: g / 255, + alpha: a + }; +} +function _findRange(model, match) { + const index = match.index; + const length = match[0].length; + if (!index) { + return; + } + const startPosition = model.positionAt(index); + const range = { + startLineNumber: startPosition.lineNumber, + startColumn: startPosition.column, + endLineNumber: startPosition.lineNumber, + endColumn: startPosition.column + length + }; + return range; +} +function _findHexColorInformation(range, hexValue) { + if (!range) { + return; + } + const parsedHexColor = Color$1.Format.CSS.parseHex(hexValue); + if (!parsedHexColor) { + return; + } + return { + range: range, + color: _toIColor(parsedHexColor.rgba.r, parsedHexColor.rgba.g, parsedHexColor.rgba.b, parsedHexColor.rgba.a) + }; +} +function _findRGBColorInformation(range, matches, isAlpha) { + if (!range || matches.length !== 1) { + return; + } + const match = matches[0]; + const captureGroups = match.values(); + const parsedRegex = _parseCaptureGroups(captureGroups); + return { + range: range, + color: _toIColor(parsedRegex[0], parsedRegex[1], parsedRegex[2], isAlpha ? parsedRegex[3] : 1) + }; +} +function _findHSLColorInformation(range, matches, isAlpha) { + if (!range || matches.length !== 1) { + return; + } + const match = matches[0]; + const captureGroups = match.values(); + const parsedRegex = _parseCaptureGroups(captureGroups); + const colorEquivalent = new Color$1(new HSLA(parsedRegex[0], parsedRegex[1] / 100, parsedRegex[2] / 100, isAlpha ? parsedRegex[3] : 1)); + return { + range: range, + color: _toIColor(colorEquivalent.rgba.r, colorEquivalent.rgba.g, colorEquivalent.rgba.b, colorEquivalent.rgba.a) + }; +} +function _findMatches(model, regex) { + if (typeof model === 'string') { + return [...model.matchAll(regex)]; + } + else { + return model.findMatches(regex); + } +} +function computeColors(model) { + const result = []; + // Early validation for RGB and HSL + const initialValidationRegex = /\b(rgb|rgba|hsl|hsla)(\([0-9\s,.\%]*\))|(#)([A-Fa-f0-9]{3})\b|(#)([A-Fa-f0-9]{4})\b|(#)([A-Fa-f0-9]{6})\b|(#)([A-Fa-f0-9]{8})\b/gm; + const initialValidationMatches = _findMatches(model, initialValidationRegex); + // Potential colors have been found, validate the parameters + if (initialValidationMatches.length > 0) { + for (const initialMatch of initialValidationMatches) { + const initialCaptureGroups = initialMatch.filter(captureGroup => captureGroup !== undefined); + const colorScheme = initialCaptureGroups[1]; + const colorParameters = initialCaptureGroups[2]; + if (!colorParameters) { + continue; + } + let colorInformation; + if (colorScheme === 'rgb') { + const regexParameters = /^\(\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*,\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*,\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*\)$/gm; + colorInformation = _findRGBColorInformation(_findRange(model, initialMatch), _findMatches(colorParameters, regexParameters), false); + } + else if (colorScheme === 'rgba') { + const regexParameters = /^\(\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*,\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*,\s*(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\s*,\s*(0[.][0-9]+|[.][0-9]+|[01][.]|[01])\s*\)$/gm; + colorInformation = _findRGBColorInformation(_findRange(model, initialMatch), _findMatches(colorParameters, regexParameters), true); + } + else if (colorScheme === 'hsl') { + const regexParameters = /^\(\s*(36[0]|3[0-5][0-9]|[12][0-9][0-9]|[1-9]?[0-9])\s*,\s*(100|\d{1,2}[.]\d*|\d{1,2})%\s*,\s*(100|\d{1,2}[.]\d*|\d{1,2})%\s*\)$/gm; + colorInformation = _findHSLColorInformation(_findRange(model, initialMatch), _findMatches(colorParameters, regexParameters), false); + } + else if (colorScheme === 'hsla') { + const regexParameters = /^\(\s*(36[0]|3[0-5][0-9]|[12][0-9][0-9]|[1-9]?[0-9])\s*,\s*(100|\d{1,2}[.]\d*|\d{1,2})%\s*,\s*(100|\d{1,2}[.]\d*|\d{1,2})%\s*,\s*(0[.][0-9]+|[.][0-9]+|[01][.]|[01])\s*\)$/gm; + colorInformation = _findHSLColorInformation(_findRange(model, initialMatch), _findMatches(colorParameters, regexParameters), true); + } + else if (colorScheme === '#') { + colorInformation = _findHexColorInformation(_findRange(model, initialMatch), colorScheme + colorParameters); + } + if (colorInformation) { + result.push(colorInformation); + } + } + } + return result; +} +/** + * Returns an array of all default document colors in the provided document + */ +function computeDefaultDocumentColors(model) { + if (!model || typeof model.getValue !== 'function' || typeof model.positionAt !== 'function') { + // Unknown caller! + return []; + } + return computeColors(model); +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +/** + * @internal + */ +class MirrorModel extends MirrorTextModel { + get uri() { + return this._uri; + } + get eol() { + return this._eol; + } + getValue() { + return this.getText(); + } + findMatches(regex) { + const matches = []; + for (let i = 0; i < this._lines.length; i++) { + const line = this._lines[i]; + const offsetToAdd = this.offsetAt(new Position$2(i + 1, 1)); + const iteratorOverMatches = line.matchAll(regex); + for (const match of iteratorOverMatches) { + if (match.index || match.index === 0) { + match.index = match.index + offsetToAdd; + } + matches.push(match); + } + } + return matches; + } + getLinesContent() { + return this._lines.slice(0); + } + getLineCount() { + return this._lines.length; + } + getLineContent(lineNumber) { + return this._lines[lineNumber - 1]; + } + getWordAtPosition(position, wordDefinition) { + const wordAtText = getWordAtText(position.column, ensureValidWordDefinition(wordDefinition), this._lines[position.lineNumber - 1], 0); + if (wordAtText) { + return new Range$b(position.lineNumber, wordAtText.startColumn, position.lineNumber, wordAtText.endColumn); + } + return null; + } + words(wordDefinition) { + const lines = this._lines; + const wordenize = this._wordenize.bind(this); + let lineNumber = 0; + let lineText = ''; + let wordRangesIdx = 0; + let wordRanges = []; + return { + *[Symbol.iterator]() { + while (true) { + if (wordRangesIdx < wordRanges.length) { + const value = lineText.substring(wordRanges[wordRangesIdx].start, wordRanges[wordRangesIdx].end); + wordRangesIdx += 1; + yield value; + } + else { + if (lineNumber < lines.length) { + lineText = lines[lineNumber]; + wordRanges = wordenize(lineText, wordDefinition); + wordRangesIdx = 0; + lineNumber += 1; + } + else { + break; + } + } + } + } + }; + } + getLineWords(lineNumber, wordDefinition) { + const content = this._lines[lineNumber - 1]; + const ranges = this._wordenize(content, wordDefinition); + const words = []; + for (const range of ranges) { + words.push({ + word: content.substring(range.start, range.end), + startColumn: range.start + 1, + endColumn: range.end + 1 + }); + } + return words; + } + _wordenize(content, wordDefinition) { + const result = []; + let match; + wordDefinition.lastIndex = 0; // reset lastIndex just to be sure + while (match = wordDefinition.exec(content)) { + if (match[0].length === 0) { + // it did match the empty string + break; + } + result.push({ start: match.index, end: match.index + match[0].length }); + } + return result; + } + getValueInRange(range) { + range = this._validateRange(range); + if (range.startLineNumber === range.endLineNumber) { + return this._lines[range.startLineNumber - 1].substring(range.startColumn - 1, range.endColumn - 1); + } + const lineEnding = this._eol; + const startLineIndex = range.startLineNumber - 1; + const endLineIndex = range.endLineNumber - 1; + const resultLines = []; + resultLines.push(this._lines[startLineIndex].substring(range.startColumn - 1)); + for (let i = startLineIndex + 1; i < endLineIndex; i++) { + resultLines.push(this._lines[i]); + } + resultLines.push(this._lines[endLineIndex].substring(0, range.endColumn - 1)); + return resultLines.join(lineEnding); + } + offsetAt(position) { + position = this._validatePosition(position); + this._ensureLineStarts(); + return this._lineStarts.getPrefixSum(position.lineNumber - 2) + (position.column - 1); + } + positionAt(offset) { + offset = Math.floor(offset); + offset = Math.max(0, offset); + this._ensureLineStarts(); + const out = this._lineStarts.getIndexOf(offset); + const lineLength = this._lines[out.index].length; + // Ensure we return a valid position + return { + lineNumber: 1 + out.index, + column: 1 + Math.min(out.remainder, lineLength) + }; + } + _validateRange(range) { + const start = this._validatePosition({ lineNumber: range.startLineNumber, column: range.startColumn }); + const end = this._validatePosition({ lineNumber: range.endLineNumber, column: range.endColumn }); + if (start.lineNumber !== range.startLineNumber + || start.column !== range.startColumn + || end.lineNumber !== range.endLineNumber + || end.column !== range.endColumn) { + return { + startLineNumber: start.lineNumber, + startColumn: start.column, + endLineNumber: end.lineNumber, + endColumn: end.column + }; + } + return range; + } + _validatePosition(position) { + if (!Position$2.isIPosition(position)) { + throw new Error('bad position'); + } + let { lineNumber, column } = position; + let hasChanged = false; + if (lineNumber < 1) { + lineNumber = 1; + column = 1; + hasChanged = true; + } + else if (lineNumber > this._lines.length) { + lineNumber = this._lines.length; + column = this._lines[lineNumber - 1].length + 1; + hasChanged = true; + } + else { + const maxCharacter = this._lines[lineNumber - 1].length + 1; + if (column < 1) { + column = 1; + hasChanged = true; + } + else if (column > maxCharacter) { + column = maxCharacter; + hasChanged = true; + } + } + if (!hasChanged) { + return position; + } + else { + return { lineNumber, column }; + } + } +} +/** + * @internal + */ +class EditorSimpleWorker { + constructor(host, foreignModuleFactory) { + this._host = host; + this._models = Object.create(null); + this._foreignModuleFactory = foreignModuleFactory; + this._foreignModule = null; + } + dispose() { + this._models = Object.create(null); + } + _getModel(uri) { + return this._models[uri]; + } + _getModels() { + const all = []; + Object.keys(this._models).forEach((key) => all.push(this._models[key])); + return all; + } + acceptNewModel(data) { + this._models[data.url] = new MirrorModel(URI$2.parse(data.url), data.lines, data.EOL, data.versionId); + } + acceptModelChanged(strURL, e) { + if (!this._models[strURL]) { + return; + } + const model = this._models[strURL]; + model.onEvents(e); + } + acceptRemovedModel(strURL) { + if (!this._models[strURL]) { + return; + } + delete this._models[strURL]; + } + async computeUnicodeHighlights(url, options, range) { + const model = this._getModel(url); + if (!model) { + return { ranges: [], hasMore: false, ambiguousCharacterCount: 0, invisibleCharacterCount: 0, nonBasicAsciiCharacterCount: 0 }; + } + return UnicodeTextModelHighlighter.computeUnicodeHighlights(model, options, range); + } + // ---- BEGIN diff -------------------------------------------------------------------------- + async computeDiff(originalUrl, modifiedUrl, options, algorithm) { + const original = this._getModel(originalUrl); + const modified = this._getModel(modifiedUrl); + if (!original || !modified) { + return null; + } + return EditorSimpleWorker.computeDiff(original, modified, options, algorithm); + } + static computeDiff(originalTextModel, modifiedTextModel, options, algorithm) { + const diffAlgorithm = algorithm === 'advanced' ? linesDiffComputers.getDefault() : linesDiffComputers.getLegacy(); + const originalLines = originalTextModel.getLinesContent(); + const modifiedLines = modifiedTextModel.getLinesContent(); + const result = diffAlgorithm.computeDiff(originalLines, modifiedLines, options); + const identical = (result.changes.length > 0 ? false : this._modelsAreIdentical(originalTextModel, modifiedTextModel)); + function getLineChanges(changes) { + return changes.map(m => { + var _a; + return ([m.original.startLineNumber, m.original.endLineNumberExclusive, m.modified.startLineNumber, m.modified.endLineNumberExclusive, (_a = m.innerChanges) === null || _a === void 0 ? void 0 : _a.map(m => [ + m.originalRange.startLineNumber, + m.originalRange.startColumn, + m.originalRange.endLineNumber, + m.originalRange.endColumn, + m.modifiedRange.startLineNumber, + m.modifiedRange.startColumn, + m.modifiedRange.endLineNumber, + m.modifiedRange.endColumn, + ])]); + }); + } + return { + identical, + quitEarly: result.hitTimeout, + changes: getLineChanges(result.changes), + moves: result.moves.map(m => ([ + m.lineRangeMapping.original.startLineNumber, + m.lineRangeMapping.original.endLineNumberExclusive, + m.lineRangeMapping.modified.startLineNumber, + m.lineRangeMapping.modified.endLineNumberExclusive, + getLineChanges(m.changes) + ])), + }; + } + static _modelsAreIdentical(original, modified) { + const originalLineCount = original.getLineCount(); + const modifiedLineCount = modified.getLineCount(); + if (originalLineCount !== modifiedLineCount) { + return false; + } + for (let line = 1; line <= originalLineCount; line++) { + const originalLine = original.getLineContent(line); + const modifiedLine = modified.getLineContent(line); + if (originalLine !== modifiedLine) { + return false; + } + } + return true; + } + async computeMoreMinimalEdits(modelUrl, edits, pretty) { + const model = this._getModel(modelUrl); + if (!model) { + return edits; + } + const result = []; + let lastEol = undefined; + edits = edits.slice(0).sort((a, b) => { + if (a.range && b.range) { + return Range$b.compareRangesUsingStarts(a.range, b.range); + } + // eol only changes should go to the end + const aRng = a.range ? 0 : 1; + const bRng = b.range ? 0 : 1; + return aRng - bRng; + }); + // merge adjacent edits + let writeIndex = 0; + for (let readIndex = 1; readIndex < edits.length; readIndex++) { + if (Range$b.getEndPosition(edits[writeIndex].range).equals(Range$b.getStartPosition(edits[readIndex].range))) { + edits[writeIndex].range = Range$b.fromPositions(Range$b.getStartPosition(edits[writeIndex].range), Range$b.getEndPosition(edits[readIndex].range)); + edits[writeIndex].text += edits[readIndex].text; + } + else { + writeIndex++; + edits[writeIndex] = edits[readIndex]; + } + } + edits.length = writeIndex + 1; + for (let { range, text, eol } of edits) { + if (typeof eol === 'number') { + lastEol = eol; + } + if (Range$b.isEmpty(range) && !text) { + // empty change + continue; + } + const original = model.getValueInRange(range); + text = text.replace(/\r\n|\n|\r/g, model.eol); + if (original === text) { + // noop + continue; + } + // make sure diff won't take too long + if (Math.max(text.length, original.length) > EditorSimpleWorker._diffLimit) { + result.push({ range, text }); + continue; + } + // compute diff between original and edit.text + const changes = stringDiff(original, text, pretty); + const editOffset = model.offsetAt(Range$b.lift(range).getStartPosition()); + for (const change of changes) { + const start = model.positionAt(editOffset + change.originalStart); + const end = model.positionAt(editOffset + change.originalStart + change.originalLength); + const newEdit = { + text: text.substr(change.modifiedStart, change.modifiedLength), + range: { startLineNumber: start.lineNumber, startColumn: start.column, endLineNumber: end.lineNumber, endColumn: end.column } + }; + if (model.getValueInRange(newEdit.range) !== newEdit.text) { + result.push(newEdit); + } + } + } + if (typeof lastEol === 'number') { + result.push({ eol: lastEol, text: '', range: { startLineNumber: 0, startColumn: 0, endLineNumber: 0, endColumn: 0 } }); + } + return result; + } + // ---- END minimal edits --------------------------------------------------------------- + async computeLinks(modelUrl) { + const model = this._getModel(modelUrl); + if (!model) { + return null; + } + return computeLinks(model); + } + // --- BEGIN default document colors ----------------------------------------------------------- + async computeDefaultDocumentColors(modelUrl) { + const model = this._getModel(modelUrl); + if (!model) { + return null; + } + return computeDefaultDocumentColors(model); + } + async textualSuggest(modelUrls, leadingWord, wordDef, wordDefFlags) { + const sw = new StopWatch(); + const wordDefRegExp = new RegExp(wordDef, wordDefFlags); + const seen = new Set(); + outer: for (const url of modelUrls) { + const model = this._getModel(url); + if (!model) { + continue; + } + for (const word of model.words(wordDefRegExp)) { + if (word === leadingWord || !isNaN(Number(word))) { + continue; + } + seen.add(word); + if (seen.size > EditorSimpleWorker._suggestionsLimit) { + break outer; + } + } + } + return { words: Array.from(seen), duration: sw.elapsed() }; + } + // ---- END suggest -------------------------------------------------------------------------- + //#region -- word ranges -- + async computeWordRanges(modelUrl, range, wordDef, wordDefFlags) { + const model = this._getModel(modelUrl); + if (!model) { + return Object.create(null); + } + const wordDefRegExp = new RegExp(wordDef, wordDefFlags); + const result = Object.create(null); + for (let line = range.startLineNumber; line < range.endLineNumber; line++) { + const words = model.getLineWords(line, wordDefRegExp); + for (const word of words) { + if (!isNaN(Number(word.word))) { + continue; + } + let array = result[word.word]; + if (!array) { + array = []; + result[word.word] = array; + } + array.push({ + startLineNumber: line, + startColumn: word.startColumn, + endLineNumber: line, + endColumn: word.endColumn + }); + } + } + return result; + } + //#endregion + async navigateValueSet(modelUrl, range, up, wordDef, wordDefFlags) { + const model = this._getModel(modelUrl); + if (!model) { + return null; + } + const wordDefRegExp = new RegExp(wordDef, wordDefFlags); + if (range.startColumn === range.endColumn) { + range = { + startLineNumber: range.startLineNumber, + startColumn: range.startColumn, + endLineNumber: range.endLineNumber, + endColumn: range.endColumn + 1 + }; + } + const selectionText = model.getValueInRange(range); + const wordRange = model.getWordAtPosition({ lineNumber: range.startLineNumber, column: range.startColumn }, wordDefRegExp); + if (!wordRange) { + return null; + } + const word = model.getValueInRange(wordRange); + const result = BasicInplaceReplace.INSTANCE.navigateValueSet(range, selectionText, wordRange, word, up); + return result; + } + // ---- BEGIN foreign module support -------------------------------------------------------------------------- + loadForeignModule(moduleId, createData, foreignHostMethods) { + const proxyMethodRequest = (method, args) => { + return this._host.fhr(method, args); + }; + const foreignHost = createProxyObject$1(foreignHostMethods, proxyMethodRequest); + const ctx = { + host: foreignHost, + getMirrorModels: () => { + return this._getModels(); + } + }; + if (this._foreignModuleFactory) { + this._foreignModule = this._foreignModuleFactory(ctx, createData); + // static foreing module + return Promise.resolve(getAllMethodNames(this._foreignModule)); + } + // ESM-comment-begin + // return new Promise<any>((resolve, reject) => { + // require([moduleId], (foreignModule: { create: IForeignModuleFactory }) => { + // this._foreignModule = foreignModule.create(ctx, createData); + // + // resolve(getAllMethodNames(this._foreignModule)); + // + // }, reject); + // }); + // ESM-comment-end + // ESM-uncomment-begin + return Promise.reject(new Error(`Unexpected usage`)); + // ESM-uncomment-end + } + // foreign method request + fmr(method, args) { + if (!this._foreignModule || typeof this._foreignModule[method] !== 'function') { + return Promise.reject(new Error('Missing requestHandler or method: ' + method)); + } + try { + return Promise.resolve(this._foreignModule[method].apply(this._foreignModule, args)); + } + catch (e) { + return Promise.reject(e); + } + } +} +// ---- END diff -------------------------------------------------------------------------- +// ---- BEGIN minimal edits --------------------------------------------------------------- +EditorSimpleWorker._diffLimit = 100000; +// ---- BEGIN suggest -------------------------------------------------------------------------- +EditorSimpleWorker._suggestionsLimit = 10000; +if (typeof importScripts === 'function') { + // Running in a web worker + globalThis.monaco = createMonacoBaseAPI(); +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +let initialized = false; +function initialize(foreignModule) { + if (initialized) { + return; + } + initialized = true; + const simpleWorker = new SimpleWorkerServer((msg) => { + globalThis.postMessage(msg); + }, (host) => new EditorSimpleWorker(host, foreignModule)); + globalThis.onmessage = (e) => { + simpleWorker.onmessage(e.data); + }; +} +globalThis.onmessage = (e) => { + // Ignore first message in this case and initialize if not yet initialized + if (!initialized) { + initialize(null); + } +}; + +var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +function getAugmentedNamespace(n) { + if (n.__esModule) return n; + var f = n.default; + if (typeof f == "function") { + var a = function a () { + if (this instanceof a) { + return Reflect.construct(f, arguments, this.constructor); + } + return f.apply(this, arguments); + }; + a.prototype = f.prototype; + } else a = {}; + Object.defineProperty(a, '__esModule', {value: true}); + Object.keys(n).forEach(function (k) { + var d = Object.getOwnPropertyDescriptor(n, k); + Object.defineProperty(a, k, d.get ? d : { + enumerable: true, + get: function () { + return n[k]; + } + }); + }); + return a; +} + +var cdn = {}; + +var types$7 = {}; + +Object.defineProperty(types$7, "__esModule", { value: true }); + +var jsdelivr = {}; + +var utils = {}; + +Object.defineProperty(utils, "__esModule", { value: true }); +utils.fetchJson = utils.fetchText = void 0; +const textCache = new Map(); +const jsonCache = new Map(); +async function fetchText(url) { + if (!textCache.has(url)) { + textCache.set(url, (async () => { + try { + const res = await fetch(url); + if (res.status === 200) { + return await res.text(); + } + } + catch { + // ignore + } + })()); + } + return await textCache.get(url); +} +utils.fetchText = fetchText; +async function fetchJson$1(url) { + if (!jsonCache.has(url)) { + jsonCache.set(url, (async () => { + try { + const res = await fetch(url); + if (res.status === 200) { + return await res.json(); + } + } + catch { + // ignore + } + })()); + } + return await jsonCache.get(url); +} +utils.fetchJson = fetchJson$1; + +(function (exports) { + Object.defineProperty(exports, "__esModule", { value: true }); + exports.getPackageName = exports.createJsDelivrFs = exports.createJsDelivrUriResolver = exports.jsDelivrUriBase = void 0; + const utils_1 = utils; + exports.jsDelivrUriBase = 'https://cdn.jsdelivr.net/npm'; + function createJsDelivrUriResolver(fileNameBase, versions = {}) { + return { + uriToFileName, + fileNameToUri, + }; + function uriToFileName(uri) { + if (uri === exports.jsDelivrUriBase) { + return fileNameBase; + } + if (uri.startsWith(exports.jsDelivrUriBase + '/')) { + const path = uri.substring(exports.jsDelivrUriBase.length); + const pkgName = getPackageName(path); + if (pkgName?.substring(1).includes('@')) { + const trimedVersion = pkgName.substring(0, pkgName.lastIndexOf('@')); + return `${fileNameBase}${path.replace(pkgName, trimedVersion)}`; + } + return `${fileNameBase}${path}`; + } + } + function fileNameToUri(fileName) { + if (fileName === fileNameBase) { + return exports.jsDelivrUriBase; + } + if (fileName.startsWith(fileNameBase + '/')) { + const path = fileName.substring(fileNameBase.length); + const pkgName = getPackageName(path); + if (pkgName) { + const version = versions[pkgName] ?? 'latest'; + return `${exports.jsDelivrUriBase}/${pkgName}@${version}${path.substring(1 + pkgName.length)}`; + } + return `${exports.jsDelivrUriBase}${path}`; + } + } + } + exports.createJsDelivrUriResolver = createJsDelivrUriResolver; + function createJsDelivrFs(onReadFile) { + const fetchResults = new Map(); + const flatResults = new Map(); + return { + stat, + readDirectory, + readFile, + }; + async function stat(uri) { + if (uri === exports.jsDelivrUriBase) { + return { + type: 2, + size: -1, + ctime: -1, + mtime: -1, + }; + } + if (uri.startsWith(exports.jsDelivrUriBase + '/')) { + const path = uri.substring(exports.jsDelivrUriBase.length); + const pkgName = getPackageName(path); + if (!pkgName || !await isValidPackageName(pkgName)) { + return; + } + if (!flatResults.has(pkgName)) { + flatResults.set(pkgName, flat(pkgName)); + } + const flatResult = await flatResults.get(pkgName); + const filePath = path.slice(`/${pkgName}`.length); + const file = flatResult.find(file => file.name === filePath); + if (file) { + return { + type: 1, + ctime: new Date(file.time).valueOf(), + mtime: new Date(file.time).valueOf(), + size: file.size, + }; + } + else if (flatResult.some(file => file.name.startsWith(filePath + '/'))) { + return { + type: 2, + ctime: -1, + mtime: -1, + size: -1, + }; + } + } + } + async function readDirectory(uri) { + if (uri.startsWith(exports.jsDelivrUriBase + '/')) { + const path = uri.substring(exports.jsDelivrUriBase.length); + const pkgName = getPackageName(path); + if (!pkgName || !await isValidPackageName(pkgName)) { + return []; + } + if (!flatResults.has(pkgName)) { + flatResults.set(pkgName, flat(pkgName)); + } + const flatResult = await flatResults.get(pkgName); + const dirPath = path.slice(`/${pkgName}`.length); + const files = flatResult + .filter(f => f.name.substring(0, f.name.lastIndexOf('/')) === dirPath) + .map(f => f.name.slice(dirPath.length + 1)); + const dirs = flatResult + .filter(f => f.name.startsWith(dirPath + '/') && f.name.substring(dirPath.length + 1).split('/').length >= 2) + .map(f => f.name.slice(dirPath.length + 1).split('/')[0]); + return [ + ...files.map(f => [f, 1]), + ...[...new Set(dirs)].map(f => [f, 2]), + ]; + } + return []; + } + async function readFile(uri) { + if (uri.startsWith(exports.jsDelivrUriBase + '/')) { + const path = uri.substring(exports.jsDelivrUriBase.length); + const pkgName = getPackageName(path); + if (!pkgName || !await isValidPackageName(pkgName)) { + return; + } + if (!fetchResults.has(path)) { + fetchResults.set(path, (async () => { + if ((await stat(uri))?.type !== 1) { + return; + } + const text = await (0, utils_1.fetchText)(uri); + if (text !== undefined) { + onReadFile?.(uri, text); + } + return text; + })()); + } + return await fetchResults.get(path); + } + } + async function flat(pkgNameWithVersion) { + let pkgName = pkgNameWithVersion; + let version = 'latest'; + if (pkgNameWithVersion.substring(1).includes('@')) { + pkgName = pkgNameWithVersion.substring(0, pkgNameWithVersion.lastIndexOf('@')); + version = pkgNameWithVersion.substring(pkgNameWithVersion.lastIndexOf('@') + 1); + } + // resolve tag version + if (version === 'latest') { + const data = await (0, utils_1.fetchJson)(`https://data.jsdelivr.com/v1/package/resolve/npm/${pkgName}@latest`); + if (!data?.version) { + return []; + } + version = data.version; + } + const flat = await (0, utils_1.fetchJson)(`https://data.jsdelivr.com/v1/package/npm/${pkgName}@${version}/flat`); + if (!flat) { + return []; + } + return flat.files; + } + async function isValidPackageName(pkgName) { + if (pkgName.substring(1).includes('@')) { + pkgName = pkgName.substring(0, pkgName.lastIndexOf('@')); + } + if (pkgName.indexOf('.') >= 0 || pkgName.endsWith('/node_modules')) { + return false; + } + // hard code for known invalid package + if (pkgName.startsWith('@typescript/') || pkgName.startsWith('@types/typescript__')) { + return false; + } + // don't check @types if original package already having types + if (pkgName.startsWith('@types/')) { + let originalPkgName = pkgName.slice('@types/'.length); + if (originalPkgName.indexOf('__') >= 0) { + originalPkgName = '@' + originalPkgName.replace('__', '/'); + } + const packageJson = await readFile(`${exports.jsDelivrUriBase}/${originalPkgName}/package.json`); + if (packageJson) { + const packageJsonObj = JSON.parse(packageJson); + if (packageJsonObj.types || packageJsonObj.typings) { + return false; + } + const indexDts = await stat(`${exports.jsDelivrUriBase}/${originalPkgName}/index.d.ts`); + if (indexDts?.type === 1) { + return false; + } + } + } + return true; + } + } + exports.createJsDelivrFs = createJsDelivrFs; + /** + * @example + * "/a/b/c" -> "a" + * "/@a/b/c" -> "@a/b" + * "/@a/b@1.2.3/c" -> "@a/b@1.2.3" + */ + function getPackageName(path) { + const parts = path.split('/'); + let pkgName = parts[1]; + if (pkgName.startsWith('@')) { + if (parts.length < 3 || !parts[2]) { + return undefined; + } + pkgName += '/' + parts[2]; + } + return pkgName; + } + exports.getPackageName = getPackageName; + +} (jsdelivr)); + +var github = {}; + +Object.defineProperty(github, "__esModule", { value: true }); +github.createGitHubFs = github.createGitHubUriResolver = void 0; +const utils_1 = utils; +function createGitHubUriResolver(fileNameBase, owner, repo, branch) { + const gitHubUriBase = getGitHubUriBase(owner, repo, branch); + return { + uriToFileName, + fileNameToUri, + }; + function uriToFileName(uri) { + if (uri === gitHubUriBase) { + return fileNameBase; + } + if (uri.startsWith(gitHubUriBase + '/')) { + const path = uri.substring(gitHubUriBase.length); + return `${fileNameBase}${path}`; + } + } + function fileNameToUri(fileName) { + if (fileName === fileNameBase) { + return gitHubUriBase; + } + if (fileName.startsWith(fileNameBase + '/')) { + const path = fileName.substring(fileNameBase.length); + return `${gitHubUriBase}${path}`; + } + } +} +github.createGitHubUriResolver = createGitHubUriResolver; +function createGitHubFs(owner, repo, branch, onReadFile) { + const gitHubUriBase = getGitHubUriBase(owner, repo, branch); + return { + stat, + readDirectory, + readFile, + }; + async function stat(uri) { + if (uri === gitHubUriBase) { + return { + type: 2, + size: -1, + ctime: -1, + mtime: -1, + }; + } + if (uri.startsWith(gitHubUriBase + '/')) { + if (uri.endsWith('/')) { + return { + type: 2, + size: -1, + ctime: -1, + mtime: -1, + }; + } + const path = uri.substring(gitHubUriBase.length); + const dirName = path.substring(0, path.lastIndexOf('/')); + const baseName = path.substring(path.lastIndexOf('/') + 1); + const dirData = await fetchContents(dirName); + const file = dirData.find(entry => entry.name === baseName && entry.type === 'file'); + const dir = dirData.find(entry => entry.name === baseName && entry.type === 'dir'); + if (file) { + return { + type: 1, + size: file.size, + ctime: -1, + mtime: -1, + }; + } + if (dir) { + return { + type: 2, + size: dir.size, + ctime: -1, + mtime: -1, + }; + } + } + } + async function readDirectory(uri) { + if (uri === gitHubUriBase || uri.startsWith(gitHubUriBase + '/')) { + const path = uri.substring(gitHubUriBase.length); + const dirData = await fetchContents(path); + const result = dirData.map(entry => [ + entry.name, + entry.type === 'file' ? 1 + : entry.type === 'dir' ? 2 + : 0, + ]); + return result; + } + return []; + } + async function readFile(uri) { + if (uri.startsWith(gitHubUriBase + '/')) { + const text = await (0, utils_1.fetchText)(uri); + if (text !== undefined) { + onReadFile?.(uri, text); + } + return text; + } + } + async function fetchContents(dirName) { + return await (0, utils_1.fetchJson)(`https://api.github.com/repos/${owner}/${repo}/contents${dirName}?ref=${branch}`) ?? []; + } +} +github.createGitHubFs = createGitHubFs; +function getGitHubUriBase(owner, repo, branch) { + return `https://raw.githubusercontent.com/${owner}/${repo}/${branch}`; +} + +(function (exports) { + var __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); + }) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; + })); + var __exportStar = (commonjsGlobal && commonjsGlobal.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.decorateServiceEnvironment = void 0; + __exportStar(types$7, exports); + __exportStar(jsdelivr, exports); + __exportStar(github, exports); + function decorateServiceEnvironment(env, uriResolver, fs) { + const _fileNameToUri = env.fileNameToUri; + const _uriToFileName = env.uriToFileName; + const _fs = env.fs; + env.fileNameToUri = fileName => { + return uriResolver.fileNameToUri(fileName) ?? _fileNameToUri(fileName); + }; + env.uriToFileName = fileName => { + return uriResolver.uriToFileName(fileName) ?? _uriToFileName(fileName); + }; + env.fs = { + stat(uri) { + if (uriResolver.uriToFileName(uri)) { + return fs.stat(uri); + } + return _fs?.stat(uri); + }, + readDirectory(uri) { + if (uriResolver.uriToFileName(uri)) { + return fs.readDirectory(uri); + } + return _fs?.readDirectory(uri) ?? []; + }, + readFile(uri) { + if (uriResolver.uriToFileName(uri)) { + return fs.readFile(uri); + } + return _fs?.readFile(uri); + }, + }; + } + exports.decorateServiceEnvironment = decorateServiceEnvironment; + +} (cdn)); + +var out$a = {}; + +var languageService$2 = {}; + +var languageCore = {}; + +var virtualFiles = {}; + +var sourceMap$1 = {}; + +var out$9 = {}; + +var binarySearch$4 = {}; + +Object.defineProperty(binarySearch$4, "__esModule", { value: true }); +binarySearch$4.binarySearch = void 0; +function binarySearch$3(offsets, start) { + let low = 0; + let high = offsets.length - 1; + while (low <= high) { + const mid = Math.floor((low + high) / 2); + const midValue = offsets[mid]; + if (midValue < start) { + low = mid + 1; + } + else if (midValue > start) { + high = mid - 1; + } + else { + low = mid; + high = mid; + break; + } + } + return Math.max(Math.min(low, high, offsets.length - 1), 0); +} +binarySearch$4.binarySearch = binarySearch$3; + +var track$1 = {}; + +Object.defineProperty(track$1, "__esModule", { value: true }); +track$1.track = track$1.resetOffsetStack = track$1.offsetStack = track$1.setTracking = void 0; +let tracking = true; +let stackOffset = 0; +function setTracking(value) { + tracking = value; +} +track$1.setTracking = setTracking; +function offsetStack() { + stackOffset++; +} +track$1.offsetStack = offsetStack; +function resetOffsetStack() { + stackOffset--; +} +track$1.resetOffsetStack = resetOffsetStack; +function track(segments, stacks = []) { + return [ + new Proxy(segments, { + get(target, prop, receiver) { + if (tracking) { + if (prop === 'push') + return push; + if (prop === 'pop') + return pop; + if (prop === 'shift') + return shift; + if (prop === 'unshift') + return unshift; + if (prop === 'splice') + return splice; + if (prop === 'sort') + return sort; + if (prop === 'reverse') + return reverse; + } + return Reflect.get(target, prop, receiver); + } + }), + stacks, + ]; + function push(...items) { + stacks.push({ stack: getStack(), length: items.length }); + return segments.push(...items); + } + function pop() { + if (stacks.length) { + const last = stacks[stacks.length - 1]; + if (last.length > 1) { + last.length--; + } + else { + stacks.pop(); + } + } + return segments.pop(); + } + function shift() { + if (stacks.length) { + const first = stacks[0]; + if (first.length > 1) { + first.length--; + } + else { + stacks.shift(); + } + } + return segments.shift(); + } + function unshift(...items) { + stacks.unshift({ stack: getStack(), length: items.length }); + return segments.unshift(...items); + } + function splice(start, deleteCount, ...items) { + if (deleteCount === undefined) { + deleteCount = segments.length - start; + } + let _stackStart = 0; + let operateIndex; + for (let i = 0; i < stacks.length; i++) { + const stack = stacks[i]; + const stackStart = _stackStart; + const stackEnd = stackStart + stack.length; + _stackStart = stackEnd; + if (start >= stackStart) { + operateIndex = i + 1; + const originalLength = stack.length; + stack.length = start - stackStart; + stacks.splice(operateIndex, 0, { stack: stack.stack, length: originalLength - stack.length }); + break; + } + } + if (operateIndex === undefined) { + throw new Error('Invalid splice operation'); + } + let _deleteCount = deleteCount; + for (let i = operateIndex; i < stacks.length; i++) { + const stack = stacks[i]; + while (_deleteCount > 0 && stack.length > 0) { + stack.length--; + _deleteCount--; + } + if (_deleteCount === 0) { + break; + } + } + stacks.splice(operateIndex, 0, { stack: getStack(), length: items.length }); + return segments.splice(start, deleteCount, ...items); + } + function sort(compareFn) { + stacks.splice(0, stacks.length, { stack: getStack(), length: segments.length }); + return segments.sort(compareFn); + } + function reverse() { + stacks.splice(0, stacks.length, { stack: getStack(), length: segments.length }); + return segments.reverse(); + } + function getStack() { + const stack = new Error().stack; + let source = stack.split('\n')[3 + stackOffset].trim(); + if (source.endsWith(')')) { + source = source.slice(source.lastIndexOf('(') + 1, -1); + } + else { + source = source.slice(source.lastIndexOf(' ') + 1); + } + return source; + } +} +track$1.track = track; + +var types$6 = {}; + +Object.defineProperty(types$6, "__esModule", { value: true }); + +(function (exports) { + var __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); + }) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; + })); + var __exportStar = (commonjsGlobal && commonjsGlobal.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.replaceRange = exports.replaceSourceRange = exports.replaceAll = exports.replace = exports.create = exports.toString = exports.getLength = void 0; + const binarySearch_1 = binarySearch$4; + const track_1 = track$1; + __exportStar(types$6, exports); + __exportStar(track$1, exports); + function getLength(segments) { + let length = 0; + for (const segment of segments) { + length += typeof segment == 'string' ? segment.length : segment[0].length; + } + return length; + } + exports.getLength = getLength; + function toString(segments) { + return segments.map(s => typeof s === 'string' ? s : s[0]).join(''); + } + exports.toString = toString; + function create(source) { + return [[source, undefined, 0]]; + } + exports.create = create; + function replace(segments, pattern, ...replacers) { + const str = toString(segments); + const match = str.match(pattern); + if (match && match.index !== undefined) { + const startOffset = match.index; + const endOffset = startOffset + match[0].length; + (0, track_1.offsetStack)(); + replaceRange(segments, startOffset, endOffset, ...replacers.map(replacer => typeof replacer === 'function' ? replacer(match[0]) : replacer)); + (0, track_1.resetOffsetStack)(); + } + } + exports.replace = replace; + function replaceAll(segments, pattern, ...replacers) { + const str = toString(segments); + const allMatch = str.matchAll(pattern); + let length = str.length; + let lengthDiff = 0; + for (const match of allMatch) { + if (match.index !== undefined) { + const startOffset = match.index + lengthDiff; + const endOffset = startOffset + match[0].length; + (0, track_1.offsetStack)(); + replaceRange(segments, startOffset, endOffset, ...replacers.map(replacer => typeof replacer === 'function' ? replacer(match[0]) : replacer)); + (0, track_1.resetOffsetStack)(); + const newLength = getLength(segments); + lengthDiff += newLength - length; + length = newLength; + } + } + } + exports.replaceAll = replaceAll; + function replaceSourceRange(segments, source, startOffset, endOffset, ...newSegments) { + for (const segment of segments) { + if (typeof segment === 'string') { + continue; + } + if (segment[1] === source) { + const segmentStart = typeof segment[2] === 'number' ? segment[2] : segment[2][0]; + const segmentEnd = typeof segment[2] === 'number' ? segment[2] + segment[0].length : segment[2][1]; + if (segmentStart <= startOffset && segmentEnd >= endOffset) { + const inserts = []; + if (startOffset > segmentStart) { + inserts.push(trimSegmentEnd(segment, startOffset - segmentStart)); + } + for (const newSegment of newSegments) { + inserts.push(newSegment); + } + if (endOffset < segmentEnd) { + inserts.push(trimSegmentStart(segment, endOffset - segmentEnd)); + } + combineStrings(inserts); + (0, track_1.offsetStack)(); + segments.splice(segments.indexOf(segment), 1, ...inserts); + (0, track_1.resetOffsetStack)(); + return true; + } + } + } + return false; + } + exports.replaceSourceRange = replaceSourceRange; + function replaceRange(segments, startOffset, endOffset, ...newSegments) { + const offsets = toOffsets(segments); + const startIndex = (0, binarySearch_1.binarySearch)(offsets, startOffset); + const endIndex = (0, binarySearch_1.binarySearch)(offsets, endOffset); + const startSegment = segments[startIndex]; + const endSegment = segments[endIndex]; + const startSegmentStart = offsets[startIndex]; + const endSegmentStart = offsets[endIndex]; + const endSegmentEnd = offsets[endIndex] + (typeof endSegment === 'string' ? endSegment.length : endSegment[0].length); + const inserts = []; + if (startOffset > startSegmentStart) { + inserts.push(trimSegmentEnd(startSegment, startOffset - startSegmentStart)); + } + for (const newSegment of newSegments) { + inserts.push(newSegment); + } + if (endOffset < endSegmentEnd) { + inserts.push(trimSegmentStart(endSegment, endOffset - endSegmentStart)); + } + combineStrings(inserts); + (0, track_1.offsetStack)(); + segments.splice(startIndex, endIndex - startIndex + 1, ...inserts); + (0, track_1.resetOffsetStack)(); + } + exports.replaceRange = replaceRange; + function combineStrings(segments) { + for (let i = segments.length - 1; i >= 1; i--) { + if (typeof segments[i] === 'string' && typeof segments[i - 1] === 'string') { + segments[i - 1] = segments[i - 1] + segments[i]; + (0, track_1.offsetStack)(); + segments.splice(i, 1); + (0, track_1.resetOffsetStack)(); + } + } + } + function trimSegmentEnd(segment, trimEnd) { + if (typeof segment === 'string') { + return segment.slice(0, trimEnd); + } + const originalString = segment[0]; + const originalRange = segment[2]; + const newString = originalString.slice(0, trimEnd); + const newRange = typeof originalRange === 'number' ? originalRange : [originalRange[0], originalRange[1] - (originalString.length - newString.length)]; + return [ + newString, + segment[1], + newRange, + ...segment.slice(3), + ]; + } + function trimSegmentStart(segment, trimStart) { + if (typeof segment === 'string') { + return segment.slice(trimStart); + } + const originalString = segment[0]; + const originalRange = segment[2]; + const newString = originalString.slice(trimStart); + if (trimStart < 0) { + trimStart += originalString.length; + } + const newRange = typeof originalRange === 'number' ? originalRange + trimStart : [originalRange[0] + trimStart, originalRange[1]]; + return [ + newString, + segment[1], + newRange, + ...segment.slice(3), + ]; + } + function toOffsets(segments) { + const offsets = []; + let offset = 0; + for (const segment of segments) { + offsets.push(offset); + offset += typeof segment == 'string' ? segment.length : segment[0].length; + } + return offsets; + } + +} (out$9)); + +(function (exports) { + var __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); + }) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; + })); + var __exportStar = (commonjsGlobal && commonjsGlobal.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.buildStacks = exports.buildMappings = exports.SourceMap = void 0; + __exportStar(out$9, exports); + class SourceMap { + get memo() { + if (!this._memo) { + const self = this; + this._memo = { + sourceRange: createMemo('sourceRange'), + generatedRange: createMemo('generatedRange'), + }; + function createMemo(key) { + const offsets = new Set(); + for (const mapping of self.mappings) { + offsets.add(mapping[key][0]); + offsets.add(mapping[key][1]); + } + const arr = [...offsets].sort((a, b) => a - b).map(offset => ({ offset, mappings: new Set() })); + for (const mapping of self.mappings) { + const startIndex = binarySearch(mapping[key][0]); + const endIndex = binarySearch(mapping[key][1]); + for (let i = startIndex; i <= endIndex; i++) { + arr[i].mappings.add(mapping); + } + } + return arr; + function binarySearch(start) { + let low = 0; + let high = arr.length - 1; + while (low <= high) { + const mid = Math.floor((low + high) / 2); + const midValue = arr[mid]; + if (midValue.offset < start) { + low = mid + 1; + } + else if (midValue.offset > start) { + high = mid - 1; + } + else { + return mid; + } + } + } + } + } + return this._memo; + } + constructor(mappings) { + this.mappings = mappings; + } + toSourceOffset(start, baseOnRight = false) { + for (const mapped of this.matching(start, 'generatedRange', 'sourceRange', baseOnRight)) { + return mapped; + } + } + toGeneratedOffset(start, baseOnRight = false) { + for (const mapped of this.matching(start, 'sourceRange', 'generatedRange', baseOnRight)) { + return mapped; + } + } + toSourceOffsets(start, baseOnRight = false) { + return this.matching(start, 'generatedRange', 'sourceRange', baseOnRight); + } + toGeneratedOffsets(start, baseOnRight = false) { + return this.matching(start, 'sourceRange', 'generatedRange', baseOnRight); + } + *matching(startOffset, from, to, baseOnRight) { + const memo = this.memo[from]; + if (memo.length === 0) + return; + const { low: start, high: end, } = this.binarySearchMemo(memo, startOffset); + const skip = new Set(); + for (let i = start; i <= end; i++) { + for (const mapping of memo[i].mappings) { + if (skip.has(mapping)) { + continue; + } + skip.add(mapping); + const mapped = this.matchOffset(startOffset, mapping[from], mapping[to], baseOnRight); + if (mapped !== undefined) { + yield [mapped, mapping]; + } + } + } + } + matchOffset(start, mappedFromRange, mappedToRange, baseOnRight) { + if (start >= mappedFromRange[0] && start <= mappedFromRange[1]) { + let offset = mappedToRange[0] + start - mappedFromRange[0]; + if (baseOnRight) { + offset += (mappedToRange[1] - mappedToRange[0]) - (mappedFromRange[1] - mappedFromRange[0]); + } + if (offset >= mappedToRange[0] && offset <= mappedToRange[1]) { + return offset; + } + } + } + binarySearchMemo(array, start) { + let low = 0; + let high = array.length - 1; + while (low <= high) { + const mid = Math.floor((low + high) / 2); + const midValue = array[mid]; + if (midValue.offset < start) { + low = mid + 1; + } + else if (midValue.offset > start) { + high = mid - 1; + } + else { + low = mid; + high = mid; + break; + } + } + return { + low: Math.max(Math.min(low, high, array.length - 1), 0), + high: Math.min(Math.max(low, high, 0), array.length - 1), + }; + } + } + exports.SourceMap = SourceMap; + function buildMappings(chunks) { + let length = 0; + const mappings = []; + for (const segment of chunks) { + if (typeof segment === 'string') { + length += segment.length; + } + else { + mappings.push({ + generatedRange: [length, length + segment[0].length], + source: segment[1], + sourceRange: typeof segment[2] === 'number' ? [segment[2], segment[2] + segment[0].length] : segment[2], + // @ts-ignore + data: segment[3], + }); + length += segment[0].length; + } + } + return mappings; + } + exports.buildMappings = buildMappings; + function buildStacks(chunks, stacks) { + let offset = 0; + let index = 0; + const result = []; + for (const stack of stacks) { + const start = offset; + for (let i = 0; i < stack.length; i++) { + const segment = chunks[index + i]; + if (typeof segment === 'string') { + offset += segment.length; + } + else { + offset += segment[0].length; + } + } + index += stack.length; + result.push({ + range: [start, offset], + source: stack.stack, + }); + } + return result; + } + exports.buildStacks = buildStacks; + +} (sourceMap$1)); + +var sourceMaps = {}; + +Object.defineProperty(sourceMaps, "__esModule", { value: true }); +sourceMaps.MirrorMap = void 0; +const SourceMaps = sourceMap$1; +class MirrorMap extends SourceMaps.SourceMap { + *findMirrorOffsets(start) { + for (const mapped of this.toGeneratedOffsets(start)) { + yield [mapped[0], mapped[1].data[1]]; + } + for (const mapped of this.toSourceOffsets(start)) { + yield [mapped[0], mapped[1].data[0]]; + } + } +} +sourceMaps.MirrorMap = MirrorMap; + +Object.defineProperty(virtualFiles, "__esModule", { value: true }); +virtualFiles.forEachEmbeddedFile = virtualFiles.updateVirtualFileMaps = virtualFiles.createVirtualFiles = void 0; +const source_map_1$3 = sourceMap$1; +const sourceMaps_1 = sourceMaps; +function createVirtualFiles(languages) { + const sourceFiles = new Map(); + const virtualFiles = new Map(); + const virtualFileMaps = new WeakMap(); + const virtualFileToMirrorMap = new WeakMap(); + return { + allSources() { + return Array.from(sourceFiles.values()); + }, + updateSource(fileName, snapshot, languageId) { + const key = normalizePath$1(fileName); + const value = sourceFiles.get(key); + if (value) { + if (value.languageId !== languageId) { + // languageId changed + this.deleteSource(fileName); + return this.updateSource(fileName, snapshot, languageId); + } + else { + value.snapshot = snapshot; + deleteVirtualFiles(value); + value.language.updateVirtualFile(value.root, snapshot); + updateVirtualFiles(value); + return value.root; // updated + } + } + for (const language of languages) { + const virtualFile = language.createVirtualFile(fileName, snapshot, languageId); + if (virtualFile) { + const source = { fileName, languageId, snapshot, root: virtualFile, language }; + sourceFiles.set(key, source); + updateVirtualFiles(source); + return virtualFile; // created + } + } + }, + deleteSource(fileName) { + const key = normalizePath$1(fileName); + const value = sourceFiles.get(key); + if (value) { + value.language.deleteVirtualFile?.(value.root); + sourceFiles.delete(key); // deleted + deleteVirtualFiles(value); + } + }, + getSource(fileName) { + const key = normalizePath$1(fileName); + return sourceFiles.get(key); + }, + hasSource: (fileName) => sourceFiles.has(normalizePath$1(fileName)), + getMirrorMap: getMirrorMap, + getMaps: getMapsByVirtualFile, + hasVirtualFile(fileName) { + return !!virtualFiles.get(normalizePath$1(fileName)); + }, + getVirtualFile(fileName) { + const sourceAndVirtual = virtualFiles.get(normalizePath$1(fileName)); + if (sourceAndVirtual) { + return [sourceAndVirtual.virtualFile, sourceAndVirtual.source]; + } + return [undefined, undefined]; + }, + }; + function deleteVirtualFiles(source) { + forEachEmbeddedFile$1(source.root, file => { + virtualFiles.delete(normalizePath$1(file.fileName)); + }); + } + function updateVirtualFiles(source) { + forEachEmbeddedFile$1(source.root, file => { + virtualFiles.set(normalizePath$1(file.fileName), { virtualFile: file, source }); + }); + } + function getMapsByVirtualFile(virtualFile) { + if (!virtualFileMaps.has(virtualFile.snapshot)) { + virtualFileMaps.set(virtualFile.snapshot, new Map()); + } + updateVirtualFileMaps(virtualFile, sourceFileName => { + if (sourceFileName) { + const source = sourceFiles.get(normalizePath$1(sourceFileName)); + return [sourceFileName, source.snapshot]; + } + else { + const source = virtualFiles.get(normalizePath$1(virtualFile.fileName)).source; + return [source.fileName, source.snapshot]; + } + }, virtualFileMaps.get(virtualFile.snapshot)); + return virtualFileMaps.get(virtualFile.snapshot); + } + function getMirrorMap(file) { + if (!virtualFileToMirrorMap.has(file.snapshot)) { + virtualFileToMirrorMap.set(file.snapshot, file.mirrorBehaviorMappings ? new sourceMaps_1.MirrorMap(file.mirrorBehaviorMappings) : undefined); + } + return virtualFileToMirrorMap.get(file.snapshot); + } +} +virtualFiles.createVirtualFiles = createVirtualFiles; +function updateVirtualFileMaps(virtualFile, getSourceSnapshot, map = new Map()) { + const sources = new Set(); + for (const mapping of virtualFile.mappings) { + if (sources.has(mapping.source)) + continue; + sources.add(mapping.source); + const source = getSourceSnapshot(mapping.source); + if (!source) + continue; + if (!map.has(source[0]) || map.get(source[0])[0] !== source[1]) { + map.set(source[0], [source[1], new source_map_1$3.SourceMap(virtualFile.mappings.filter(mapping2 => mapping2.source === mapping.source))]); + } + } + return map; +} +virtualFiles.updateVirtualFileMaps = updateVirtualFileMaps; +function forEachEmbeddedFile$1(file, cb) { + cb(file); + for (const embeddedFile of file.embeddedFiles) { + forEachEmbeddedFile$1(embeddedFile, cb); + } +} +virtualFiles.forEachEmbeddedFile = forEachEmbeddedFile$1; +function normalizePath$1(fileName) { + return fileName.replace(/\\/g, '/').toLowerCase(); +} + +var languageContext = {}; + +Object.defineProperty(languageContext, "__esModule", { value: true }); +languageContext.createLanguageContext = void 0; +const virtualFiles_1 = virtualFiles; +function createLanguageContext(rawHost, languages) { + let host = rawHost; + let lastRootFiles = new Map(); + let lastProjectVersion; + const virtualFiles = (0, virtualFiles_1.createVirtualFiles)(languages); + for (const language of languages.reverse()) { + if (language.resolveHost) { + const pastHost = host; + let proxyHost = language.resolveHost(host); + if (proxyHost === pastHost) { + console.warn(`[volar] language.resolveHost() should not return the same host instance.`); + proxyHost = { ...proxyHost }; + } + host = new Proxy(proxyHost, { + get(target, p) { + if (p in target) { + return target[p]; + } + return pastHost[p]; + } + }); + } + } + return { + rawHost, + host, + virtualFiles: new Proxy(virtualFiles, { + get: (target, property) => { + syncVirtualFiles(); + return target[property]; + }, + }), + }; + function syncVirtualFiles() { + const newProjectVersion = host.getProjectVersion(); + const shouldUpdate = newProjectVersion !== lastProjectVersion; + if (!shouldUpdate) + return; + const nowRootFiles = new Map(); + const remainRootFiles = new Set(lastRootFiles.keys()); + for (const rootFileName of host.getScriptFileNames()) { + nowRootFiles.set(rootFileName, host.getScriptSnapshot(rootFileName)); + } + for (const [fileName, snapshot] of nowRootFiles) { + remainRootFiles.delete(fileName); + if (lastRootFiles.get(fileName) !== nowRootFiles.get(fileName)) { + if (snapshot) { + virtualFiles.updateSource(fileName, snapshot, host.getLanguageId?.(fileName)); + } + else { + virtualFiles.deleteSource(fileName); + } + } + } + for (const fileName of remainRootFiles) { + virtualFiles.deleteSource(fileName); + } + lastRootFiles = nowRootFiles; + lastProjectVersion = newProjectVersion; + } +} +languageContext.createLanguageContext = createLanguageContext; + +var types$5 = {}; + +Object.defineProperty(types$5, "__esModule", { value: true }); +types$5.FileKind = types$5.MirrorBehaviorCapabilities = types$5.FileRangeCapabilities = types$5.FileCapabilities = void 0; +var FileCapabilities; +(function (FileCapabilities) { + FileCapabilities.full = { + diagnostic: true, + foldingRange: true, + documentFormatting: true, + documentSymbol: true, + codeAction: true, + inlayHint: true, + }; +})(FileCapabilities || (types$5.FileCapabilities = FileCapabilities = {})); +var FileRangeCapabilities; +(function (FileRangeCapabilities) { + FileRangeCapabilities.full = { + hover: true, + references: true, + definition: true, + rename: true, + completion: true, + diagnostic: true, + semanticTokens: true, + }; +})(FileRangeCapabilities || (types$5.FileRangeCapabilities = FileRangeCapabilities = {})); +var MirrorBehaviorCapabilities; +(function (MirrorBehaviorCapabilities) { + MirrorBehaviorCapabilities.full = { + references: true, + definition: true, + rename: true, + }; +})(MirrorBehaviorCapabilities || (types$5.MirrorBehaviorCapabilities = MirrorBehaviorCapabilities = {})); +var FileKind; +(function (FileKind) { + FileKind[FileKind["TextFile"] = 0] = "TextFile"; + FileKind[FileKind["TypeScriptHostFile"] = 1] = "TypeScriptHostFile"; +})(FileKind || (types$5.FileKind = FileKind = {})); + +(function (exports) { + var __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); + }) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; + })); + var __exportStar = (commonjsGlobal && commonjsGlobal.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + __exportStar(virtualFiles, exports); + __exportStar(languageContext, exports); + __exportStar(sourceMaps, exports); + __exportStar(types$5, exports); + +} (languageCore)); + +var baseLanguageService = {}; + +/* -------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ +let FullTextDocument$1 = class FullTextDocument { + constructor(uri, languageId, version, content) { + this._uri = uri; + this._languageId = languageId; + this._version = version; + this._content = content; + this._lineOffsets = undefined; + } + get uri() { + return this._uri; + } + get languageId() { + return this._languageId; + } + get version() { + return this._version; + } + getText(range) { + if (range) { + const start = this.offsetAt(range.start); + const end = this.offsetAt(range.end); + return this._content.substring(start, end); + } + return this._content; + } + update(changes, version) { + for (let change of changes) { + if (FullTextDocument.isIncremental(change)) { + // makes sure start is before end + const range = getWellformedRange(change.range); + // update content + const startOffset = this.offsetAt(range.start); + const endOffset = this.offsetAt(range.end); + this._content = this._content.substring(0, startOffset) + change.text + this._content.substring(endOffset, this._content.length); + // update the offsets + const startLine = Math.max(range.start.line, 0); + const endLine = Math.max(range.end.line, 0); + let lineOffsets = this._lineOffsets; + const addedLineOffsets = computeLineOffsets(change.text, false, startOffset); + if (endLine - startLine === addedLineOffsets.length) { + for (let i = 0, len = addedLineOffsets.length; i < len; i++) { + lineOffsets[i + startLine + 1] = addedLineOffsets[i]; + } + } + else { + if (addedLineOffsets.length < 10000) { + lineOffsets.splice(startLine + 1, endLine - startLine, ...addedLineOffsets); + } + else { // avoid too many arguments for splice + this._lineOffsets = lineOffsets = lineOffsets.slice(0, startLine + 1).concat(addedLineOffsets, lineOffsets.slice(endLine + 1)); + } + } + const diff = change.text.length - (endOffset - startOffset); + if (diff !== 0) { + for (let i = startLine + 1 + addedLineOffsets.length, len = lineOffsets.length; i < len; i++) { + lineOffsets[i] = lineOffsets[i] + diff; + } + } + } + else if (FullTextDocument.isFull(change)) { + this._content = change.text; + this._lineOffsets = undefined; + } + else { + throw new Error('Unknown change event received'); + } + } + this._version = version; + } + getLineOffsets() { + if (this._lineOffsets === undefined) { + this._lineOffsets = computeLineOffsets(this._content, true); + } + return this._lineOffsets; + } + positionAt(offset) { + offset = Math.max(Math.min(offset, this._content.length), 0); + let lineOffsets = this.getLineOffsets(); + let low = 0, high = lineOffsets.length; + if (high === 0) { + return { line: 0, character: offset }; + } + while (low < high) { + let mid = Math.floor((low + high) / 2); + if (lineOffsets[mid] > offset) { + high = mid; + } + else { + low = mid + 1; + } + } + // low is the least x for which the line offset is larger than the current offset + // or array.length if no line offset is larger than the current offset + let line = low - 1; + return { line, character: offset - lineOffsets[line] }; + } + offsetAt(position) { + let lineOffsets = this.getLineOffsets(); + if (position.line >= lineOffsets.length) { + return this._content.length; + } + else if (position.line < 0) { + return 0; + } + let lineOffset = lineOffsets[position.line]; + let nextLineOffset = (position.line + 1 < lineOffsets.length) ? lineOffsets[position.line + 1] : this._content.length; + return Math.max(Math.min(lineOffset + position.character, nextLineOffset), lineOffset); + } + get lineCount() { + return this.getLineOffsets().length; + } + static isIncremental(event) { + let candidate = event; + return candidate !== undefined && candidate !== null && + typeof candidate.text === 'string' && candidate.range !== undefined && + (candidate.rangeLength === undefined || typeof candidate.rangeLength === 'number'); + } + static isFull(event) { + let candidate = event; + return candidate !== undefined && candidate !== null && + typeof candidate.text === 'string' && candidate.range === undefined && candidate.rangeLength === undefined; + } +}; +var TextDocument$1; +(function (TextDocument) { + /** + * Creates a new text document. + * + * @param uri The document's uri. + * @param languageId The document's language Id. + * @param version The document's initial version number. + * @param content The document's content. + */ + function create(uri, languageId, version, content) { + return new FullTextDocument$1(uri, languageId, version, content); + } + TextDocument.create = create; + /** + * Updates a TextDocument by modifying its content. + * + * @param document the document to update. Only documents created by TextDocument.create are valid inputs. + * @param changes the changes to apply to the document. + * @param version the changes version for the document. + * @returns The updated TextDocument. Note: That's the same document instance passed in as first parameter. + * + */ + function update(document, changes, version) { + if (document instanceof FullTextDocument$1) { + document.update(changes, version); + return document; + } + else { + throw new Error('TextDocument.update: document must be created by TextDocument.create'); + } + } + TextDocument.update = update; + function applyEdits(document, edits) { + let text = document.getText(); + let sortedEdits = mergeSort(edits.map(getWellformedEdit), (a, b) => { + let diff = a.range.start.line - b.range.start.line; + if (diff === 0) { + return a.range.start.character - b.range.start.character; + } + return diff; + }); + let lastModifiedOffset = 0; + const spans = []; + for (const e of sortedEdits) { + let startOffset = document.offsetAt(e.range.start); + if (startOffset < lastModifiedOffset) { + throw new Error('Overlapping edit'); + } + else if (startOffset > lastModifiedOffset) { + spans.push(text.substring(lastModifiedOffset, startOffset)); + } + if (e.newText.length) { + spans.push(e.newText); + } + lastModifiedOffset = document.offsetAt(e.range.end); + } + spans.push(text.substr(lastModifiedOffset)); + return spans.join(''); + } + TextDocument.applyEdits = applyEdits; +})(TextDocument$1 || (TextDocument$1 = {})); +function mergeSort(data, compare) { + if (data.length <= 1) { + // sorted + return data; + } + const p = (data.length / 2) | 0; + const left = data.slice(0, p); + const right = data.slice(p); + mergeSort(left, compare); + mergeSort(right, compare); + let leftIdx = 0; + let rightIdx = 0; + let i = 0; + while (leftIdx < left.length && rightIdx < right.length) { + let ret = compare(left[leftIdx], right[rightIdx]); + if (ret <= 0) { + // smaller_equal -> take left to preserve order + data[i++] = left[leftIdx++]; + } + else { + // greater -> take right + data[i++] = right[rightIdx++]; + } + } + while (leftIdx < left.length) { + data[i++] = left[leftIdx++]; + } + while (rightIdx < right.length) { + data[i++] = right[rightIdx++]; + } + return data; +} +function computeLineOffsets(text, isAtLineStart, textOffset = 0) { + const result = isAtLineStart ? [textOffset] : []; + for (let i = 0; i < text.length; i++) { + let ch = text.charCodeAt(i); + if (ch === 13 /* CharCode.CarriageReturn */ || ch === 10 /* CharCode.LineFeed */) { + if (ch === 13 /* CharCode.CarriageReturn */ && i + 1 < text.length && text.charCodeAt(i + 1) === 10 /* CharCode.LineFeed */) { + i++; + } + result.push(textOffset + i + 1); + } + } + return result; +} +function getWellformedRange(range) { + const start = range.start; + const end = range.end; + if (start.line > end.line || (start.line === end.line && start.character > end.character)) { + return { start: end, end: start }; + } + return range; +} +function getWellformedEdit(textEdit) { + const range = getWellformedRange(textEdit.range); + if (range !== textEdit.range) { + return { newText: textEdit.newText, range }; + } + return textEdit; +} + +var main$1 = /*#__PURE__*/Object.freeze({ + __proto__: null, + get TextDocument () { return TextDocument$1; } +}); + +var require$$2$2 = /*@__PURE__*/getAugmentedNamespace(main$1); + +var documents = {}; + +var common$1 = {}; + +Object.defineProperty(common$1, "__esModule", { value: true }); +common$1.notEmpty = common$1.sleep = common$1.resolveCommonLanguageId = common$1.stringToSnapshot = common$1.isInsideRange = common$1.getOverlapRange = void 0; +function getOverlapRange(range1Start, range1End, range2Start, range2End) { + const start = Math.max(range1Start, range2Start); + const end = Math.min(range1End, range2End); + if (start > end) + return undefined; + return { + start, + end, + }; +} +common$1.getOverlapRange = getOverlapRange; +function isInsideRange(parent, child) { + if (child.start.line < parent.start.line) + return false; + if (child.end.line > parent.end.line) + return false; + if (child.start.line === parent.start.line && child.start.character < parent.start.character) + return false; + if (child.end.line === parent.end.line && child.end.character > parent.end.character) + return false; + return true; +} +common$1.isInsideRange = isInsideRange; +function stringToSnapshot(str) { + return { + getText: (start, end) => str.substring(start, end), + getLength: () => str.length, + getChangeRange: () => undefined, + }; +} +common$1.stringToSnapshot = stringToSnapshot; +function resolveCommonLanguageId(uri) { + const ext = uri.split('.').pop(); + switch (ext) { + case 'js': return 'javascript'; + case 'cjs': return 'javascript'; + case 'mjs': return 'javascript'; + case 'ts': return 'typescript'; + case 'cts': return 'typescript'; + case 'mts': return 'typescript'; + case 'jsx': return 'javascriptreact'; + case 'tsx': return 'typescriptreact'; + case 'pug': return 'jade'; + case 'md': return 'markdown'; + } + return ext; +} +common$1.resolveCommonLanguageId = resolveCommonLanguageId; +function sleep(ms) { + return new Promise(resolve => setTimeout(resolve, ms)); +} +common$1.sleep = sleep; +function notEmpty$1(value) { + return value !== null && value !== undefined; +} +common$1.notEmpty = notEmpty$1; + +Object.defineProperty(documents, "__esModule", { value: true }); +documents.createDocumentsAndSourceMaps = documents.MirrorMapWithDocument = documents.SourceMapWithDocuments = void 0; +const language_core_1$m = languageCore; +const vscode_languageserver_textdocument_1$2 = require$$2$2; +const common_1$m = common$1; +class SourceMapWithDocuments { + constructor(sourceFileDocument, virtualFileDocument, map) { + this.sourceFileDocument = sourceFileDocument; + this.virtualFileDocument = virtualFileDocument; + this.map = map; + } + // Range APIs + toSourceRange(range, filter = () => true) { + for (const result of this.toSourceRanges(range, filter)) { + return result; + } + } + toGeneratedRange(range, filter = () => true) { + for (const result of this.toGeneratedRanges(range, filter)) { + return result; + } + } + *toSourceRanges(range, filter = () => true) { + for (const result of this.toRanges(range, filter, 'toSourcePositionsBase', 'matchSourcePosition')) { + yield result; + } + } + *toGeneratedRanges(range, filter = () => true) { + for (const result of this.toRanges(range, filter, 'toGeneratedPositionsBase', 'matchGeneratedPosition')) { + yield result; + } + } + *toRanges(range, filter, api, api2) { + const failedLookUps = []; + for (const mapped of this[api](range.start, filter, 'left')) { + const end = this[api2](range.end, mapped[1], 'right'); + if (end) { + yield { start: mapped[0], end }; + } + else { + failedLookUps.push(mapped); + } + } + for (const failedLookUp of failedLookUps) { + for (const mapped of this[api](range.end, filter, 'right')) { + yield { start: failedLookUp[0], end: mapped[0] }; + } + } + } + // Position APIs + toSourcePosition(position, filter = () => true, baseOffset) { + for (const mapped of this.toSourcePositions(position, filter, baseOffset)) { + return mapped; + } + } + toGeneratedPosition(position, filter = () => true, baseOffset) { + for (const mapped of this.toGeneratedPositions(position, filter, baseOffset)) { + return mapped; + } + } + *toSourcePositions(position, filter = () => true, baseOffset) { + for (const mapped of this.toSourcePositionsBase(position, filter, baseOffset)) { + yield mapped[0]; + } + } + *toGeneratedPositions(position, filter = () => true, baseOffset) { + for (const mapped of this.toGeneratedPositionsBase(position, filter, baseOffset)) { + yield mapped[0]; + } + } + *toSourcePositionsBase(position, filter = () => true, baseOffset) { + let hasResult = false; + for (const mapped of this.toPositions(position, filter, this.virtualFileDocument, this.sourceFileDocument, 'generatedRange', 'sourceRange', baseOffset ?? 'left')) { + hasResult = true; + yield mapped; + } + if (!hasResult && baseOffset === undefined) { + for (const mapped of this.toPositions(position, filter, this.virtualFileDocument, this.sourceFileDocument, 'generatedRange', 'sourceRange', 'right')) { + yield mapped; + } + } + } + *toGeneratedPositionsBase(position, filter = () => true, baseOffset) { + let hasResult = false; + for (const mapped of this.toPositions(position, filter, this.sourceFileDocument, this.virtualFileDocument, 'sourceRange', 'generatedRange', baseOffset ?? 'left')) { + hasResult = true; + yield mapped; + } + if (!hasResult && baseOffset === undefined) { + for (const mapped of this.toPositions(position, filter, this.sourceFileDocument, this.virtualFileDocument, 'sourceRange', 'generatedRange', 'right')) { + yield mapped; + } + } + } + *toPositions(position, filter, fromDoc, toDoc, from, to, baseOffset) { + for (const mapped of this.map.matching(fromDoc.offsetAt(position), from, to, baseOffset === 'right')) { + if (!filter(mapped[1].data)) { + continue; + } + yield [toDoc.positionAt(mapped[0]), mapped[1]]; + } + } + matchSourcePosition(position, mapping, baseOffset) { + let offset = this.map.matchOffset(this.virtualFileDocument.offsetAt(position), mapping['generatedRange'], mapping['sourceRange'], baseOffset === 'right'); + if (offset !== undefined) { + return this.sourceFileDocument.positionAt(offset); + } + } + matchGeneratedPosition(position, mapping, baseOffset) { + let offset = this.map.matchOffset(this.sourceFileDocument.offsetAt(position), mapping['sourceRange'], mapping['generatedRange'], baseOffset === 'right'); + if (offset !== undefined) { + return this.virtualFileDocument.positionAt(offset); + } + } +} +documents.SourceMapWithDocuments = SourceMapWithDocuments; +class MirrorMapWithDocument extends SourceMapWithDocuments { + constructor(document, map) { + super(document, document, map); + this.document = document; + } + *findMirrorPositions(start) { + for (const mapped of this.toGeneratedPositionsBase(start)) { + yield [mapped[0], mapped[1].data[1]]; + } + for (const mapped of this.toSourcePositionsBase(start)) { + yield [mapped[0], mapped[1].data[0]]; + } + } +} +documents.MirrorMapWithDocument = MirrorMapWithDocument; +function createDocumentsAndSourceMaps(env, host, mapper) { + let version = 0; + const map2DocMap = new WeakMap(); + const mirrorMap2DocMirrorMap = new WeakMap(); + const snapshot2Doc = new WeakMap(); + return { + getSourceByUri(sourceFileUri) { + return mapper.getSource(env.uriToFileName(sourceFileUri)); + }, + isVirtualFileUri(virtualFileUri) { + return mapper.hasVirtualFile(env.uriToFileName(virtualFileUri)); + }, + getVirtualFileByUri(virtualFileUri) { + return mapper.getVirtualFile(env.uriToFileName(virtualFileUri)); + }, + getMirrorMapByUri(virtualFileUri) { + const fileName = env.uriToFileName(virtualFileUri); + const [virtualFile] = mapper.getVirtualFile(fileName); + if (virtualFile) { + const map = mapper.getMirrorMap(virtualFile); + if (map) { + if (!mirrorMap2DocMirrorMap.has(map)) { + mirrorMap2DocMirrorMap.set(map, new MirrorMapWithDocument(getDocumentByFileName(virtualFile.snapshot, fileName), map)); + } + return [virtualFile, mirrorMap2DocMirrorMap.get(map)]; + } + } + }, + getMapsBySourceFileUri(uri) { + return this.getMapsBySourceFileName(env.uriToFileName(uri)); + }, + getMapsBySourceFileName(fileName) { + const source = mapper.getSource(fileName); + if (source) { + const result = []; + (0, language_core_1$m.forEachEmbeddedFile)(source.root, (virtualFile) => { + for (const [sourceFileName, [sourceSnapshot, map]] of mapper.getMaps(virtualFile)) { + if (sourceSnapshot === source.snapshot) { + if (!map2DocMap.has(map)) { + map2DocMap.set(map, new SourceMapWithDocuments(getDocumentByFileName(sourceSnapshot, sourceFileName), getDocumentByFileName(virtualFile.snapshot, fileName), map)); + } + result.push([virtualFile, map2DocMap.get(map)]); + } + } + }); + return { + snapshot: source.snapshot, + maps: result, + }; + } + }, + getMapsByVirtualFileUri(virtualFileUri) { + return this.getMapsByVirtualFileName(env.uriToFileName(virtualFileUri)); + }, + *getMapsByVirtualFileName(virtualFileName) { + const [virtualFile] = mapper.getVirtualFile(virtualFileName); + if (virtualFile) { + for (const [sourceFileName, [sourceSnapshot, map]] of mapper.getMaps(virtualFile)) { + if (!map2DocMap.has(map)) { + map2DocMap.set(map, new SourceMapWithDocuments(getDocumentByFileName(sourceSnapshot, sourceFileName), getDocumentByFileName(virtualFile.snapshot, virtualFileName), map)); + } + yield [virtualFile, map2DocMap.get(map)]; + } + } + }, + getDocumentByUri(snapshot, uri) { + return this.getDocumentByFileName(snapshot, env.uriToFileName(uri)); + }, + getDocumentByFileName, + }; + function getDocumentByFileName(snapshot, fileName) { + if (!snapshot2Doc.has(snapshot)) { + snapshot2Doc.set(snapshot, new Map()); + } + const map = snapshot2Doc.get(snapshot); + if (!map.has(fileName)) { + const uri = env.fileNameToUri(fileName); + map.set(fileName, vscode_languageserver_textdocument_1$2.TextDocument.create(uri, host.getLanguageId?.(fileName) ?? (0, common_1$m.resolveCommonLanguageId)(uri), version++, snapshot.getText(0, snapshot.getLength()))); + } + return map.get(fileName); + } +} +documents.createDocumentsAndSourceMaps = createDocumentsAndSourceMaps; + +var autoInsert$1 = {}; + +var featureWorkers = {}; + +var definePlugin = {}; + +Object.defineProperty(definePlugin, "__esModule", { value: true }); +definePlugin.visitEmbedded = void 0; +async function visitEmbedded(documents, current, cb, rootFile = current) { + for (const embedded of current.embeddedFiles) { + if (!await visitEmbedded(documents, embedded, cb, rootFile)) { + return false; + } + } + for (const [_, map] of documents.getMapsByVirtualFileName(current.fileName)) { + if (documents.getSourceByUri(map.sourceFileDocument.uri)?.root === rootFile) { + if (!await cb(current, map)) { + return false; + } + } + } + return true; +} +definePlugin.visitEmbedded = visitEmbedded; + +var types$4 = {}; + +Object.defineProperty(types$4, "__esModule", { value: true }); +types$4.RuleType = types$4.FileType = void 0; +var FileType$2; +(function (FileType) { + FileType[FileType["Unknown"] = 0] = "Unknown"; + FileType[FileType["File"] = 1] = "File"; + FileType[FileType["Directory"] = 2] = "Directory"; + FileType[FileType["SymbolicLink"] = 64] = "SymbolicLink"; +})(FileType$2 || (types$4.FileType = FileType$2 = {})); +var RuleType; +(function (RuleType) { + RuleType[RuleType["Format"] = 0] = "Format"; + RuleType[RuleType["Syntax"] = 1] = "Syntax"; + RuleType[RuleType["Semantic"] = 2] = "Semantic"; +})(RuleType || (types$4.RuleType = RuleType = {})); + +Object.defineProperty(featureWorkers, "__esModule", { value: true }); +featureWorkers.safeCall = featureWorkers.ruleWorker = featureWorkers.languageFeatureWorker = featureWorkers.documentFeatureWorker = void 0; +const definePlugin_1$1 = definePlugin; +const types_1$4 = types$4; +async function documentFeatureWorker(context, uri, isValidSourceMap, worker, transform, combineResult) { + return languageFeatureWorker(context, uri, undefined, (_, map, file) => { + if (isValidSourceMap(file, map)) { + return [undefined]; + } + return []; + }, worker, transform, combineResult); +} +featureWorkers.documentFeatureWorker = documentFeatureWorker; +async function languageFeatureWorker(context, uri, arg, transformArg, worker, transform, combineResult, reportProgress) { + const document = context.getTextDocument(uri); + const virtualFile = context.documents.getSourceByUri(uri)?.root; + let results = []; + if (virtualFile) { + await (0, definePlugin_1$1.visitEmbedded)(context.documents, virtualFile, async (file, map) => { + for (const mappedArg of transformArg(arg, map, file)) { + for (const [serviceId, service] of Object.entries(context.services)) { + const embeddedResult = await safeCall$1(() => worker(service, map.virtualFileDocument, mappedArg, map, file), 'service ' + serviceId + ' crashed on ' + map.virtualFileDocument.uri); + if (!embeddedResult) + continue; + const result = transform(embeddedResult, map); + if (!result) + continue; + results.push(result); + if (!combineResult) + return false; + const isEmptyArray = Array.isArray(result) && result.length === 0; + if (reportProgress && !isEmptyArray) { + reportProgress(combineResult(results)); + } + } + } + return true; + }); + } + else if (document) { + for (const [serviceId, service] of Object.entries(context.services)) { + const embeddedResult = await safeCall$1(() => worker(service, document, arg, undefined, undefined), 'service ' + serviceId + ' crashed on ' + uri); + if (!embeddedResult) + continue; + const result = transform(embeddedResult, undefined); + if (!result) + continue; + results.push(result); + if (!combineResult) + break; + const isEmptyArray = Array.isArray(result) && result.length === 0; + if (reportProgress && !isEmptyArray) { + reportProgress(combineResult(results)); + } + } + } + if (combineResult && results.length > 0) { + return combineResult(results); + } + else if (results.length > 0) { + return results[0]; + } +} +featureWorkers.languageFeatureWorker = languageFeatureWorker; +async function ruleWorker(context, ruleType, uri, isValidSourceMap, worker, transform, combineResult, reportProgress) { + const document = context.getTextDocument(uri); + const virtualFile = context.documents.getSourceByUri(uri)?.root; + const ruleCtx = { + env: context.env, + inject: context.inject, + report: () => { }, + }; + let results = []; + if (virtualFile) { + await (0, definePlugin_1$1.visitEmbedded)(context.documents, virtualFile, async (file, map) => { + if (!isValidSourceMap(file)) { + return true; + } + for (const ruleId in context.rules) { + const rule = context.rules[ruleId]; + if ((rule.type ?? types_1$4.RuleType.Syntax) !== ruleType) { + continue; + } + const embeddedResult = await safeCall$1(() => worker(ruleId, rule, map.virtualFileDocument, ruleCtx), 'rule ' + ruleId + ' crashed on ' + map.virtualFileDocument.uri); + if (!embeddedResult) + continue; + const result = transform(embeddedResult, map); + if (!result) + continue; + results.push(result); + if (!combineResult) + return false; + const isEmptyArray = Array.isArray(result) && result.length === 0; + if (reportProgress && !isEmptyArray) { + reportProgress(combineResult(results)); + } + } + return true; + }); + } + else if (document) { + for (const ruleId in context.rules) { + const rule = context.rules[ruleId]; + if ((rule.type ?? types_1$4.RuleType.Syntax) !== ruleType) { + continue; + } + const embeddedResult = await safeCall$1(() => worker(ruleId, rule, document, ruleCtx), 'rule ' + ruleId + ' crashed on ' + document.uri); + if (!embeddedResult) + continue; + const result = transform(embeddedResult, undefined); + if (!result) + continue; + results.push(result); + if (!combineResult) + break; + const isEmptyArray = Array.isArray(result) && result.length === 0; + if (reportProgress && !isEmptyArray) { + reportProgress(combineResult(results)); + } + } + } + if (combineResult && results.length > 0) { + return combineResult(results); + } + else if (results.length > 0) { + return results[0]; + } +} +featureWorkers.ruleWorker = ruleWorker; +async function safeCall$1(cb, errorMsg) { + try { + return await cb(); + } + catch (err) { + console.warn(errorMsg, err); + } +} +featureWorkers.safeCall = safeCall$1; + +var cancellation = {}; + +Object.defineProperty(cancellation, "__esModule", { value: true }); +cancellation.NoneCancellationToken = void 0; +cancellation.NoneCancellationToken = { + isCancellationRequested: false, + onCancellationRequested: () => ({ dispose: () => { } }), +}; + +Object.defineProperty(autoInsert$1, "__esModule", { value: true }); +autoInsert$1.register = void 0; +const featureWorkers_1$k = featureWorkers; +const cancellation_1$t = cancellation; +function register$S(context) { + return (uri, position, autoInsertContext, token = cancellation_1$t.NoneCancellationToken) => { + return (0, featureWorkers_1$k.languageFeatureWorker)(context, uri, { position, autoInsertContext }, function* (arg, map) { + for (const position of map.toGeneratedPositions(arg.position, data => !!data.completion)) { + const rangeOffset = map.map.toGeneratedOffset(arg.autoInsertContext.lastChange.rangeOffset)?.[0]; + const range = map.toGeneratedRange(arg.autoInsertContext.lastChange.range); + if (rangeOffset !== undefined && range) { + yield { + position, + autoInsertContext: { + lastChange: { + ...arg.autoInsertContext.lastChange, + rangeOffset, + range, + }, + }, + }; + break; + } + } + }, (service, document, arg) => { + if (token.isCancellationRequested) + return; + return service.provideAutoInsertionEdit?.(document, arg.position, arg.autoInsertContext, token); + }, (item, map) => { + if (!map || typeof item === 'string') + return item; + const range = map.toSourceRange(item.range); + if (range) { + item.range = range; + return item; + } + }); + }; +} +autoInsert$1.register = register$S; + +var callHierarchy$2 = {}; + +var dedupe$9 = {}; + +Object.defineProperty(dedupe$9, "__esModule", { value: true }); +dedupe$9.withRanges = dedupe$9.withCallHierarchyOutgoingCalls = dedupe$9.withCallHierarchyIncomingCalls = dedupe$9.withLocationLinks = dedupe$9.withLocations = dedupe$9.withDiagnostics = dedupe$9.withDocumentChanges = dedupe$9.withTextEdits = dedupe$9.withCodeAction = dedupe$9.createLocationSet = void 0; +function createLocationSet() { + const set = new Set(); + return { + add, + has, + }; + function add(item) { + if (has(item)) { + return false; + } + set.add(getKey(item)); + return true; + } + function has(item) { + return set.has(getKey(item)); + } + function getKey(item) { + return [ + item.uri, + item.range.start.line, + item.range.start.character, + item.range.end.line, + item.range.end.character, + ].join(':'); + } +} +dedupe$9.createLocationSet = createLocationSet; +function withCodeAction(items) { + return dedupe$8(items, item => [ + item.title + ].join(':')); +} +dedupe$9.withCodeAction = withCodeAction; +function withTextEdits(items) { + return dedupe$8(items, item => [ + item.range.start.line, + item.range.start.character, + item.range.end.line, + item.range.end.character, + item.newText, + ].join(':')); +} +dedupe$9.withTextEdits = withTextEdits; +function withDocumentChanges(items) { + return dedupe$8(items, item => JSON.stringify(item)); // TODO: improve this +} +dedupe$9.withDocumentChanges = withDocumentChanges; +function withDiagnostics(items) { + return dedupe$8(items, item => [ + item.range.start.line, + item.range.start.character, + item.range.end.line, + item.range.end.character, + item.source, + item.code, + item.severity, + item.message, + ].join(':')); +} +dedupe$9.withDiagnostics = withDiagnostics; +function withLocations(items) { + return dedupe$8(items, item => [ + item.uri, + item.range.start.line, + item.range.start.character, + item.range.end.line, + item.range.end.character, + ].join(':')); +} +dedupe$9.withLocations = withLocations; +function withLocationLinks(items) { + return dedupe$8(items, item => [ + item.targetUri, + item.targetSelectionRange.start.line, + item.targetSelectionRange.start.character, + item.targetSelectionRange.end.line, + item.targetSelectionRange.end.character, + // ignore difference targetRange + ].join(':')); +} +dedupe$9.withLocationLinks = withLocationLinks; +function withCallHierarchyIncomingCalls(items) { + return dedupe$8(items, item => [ + item.from.uri, + item.from.range.start.line, + item.from.range.start.character, + item.from.range.end.line, + item.from.range.end.character, + ].join(':')); +} +dedupe$9.withCallHierarchyIncomingCalls = withCallHierarchyIncomingCalls; +function withCallHierarchyOutgoingCalls(items) { + return dedupe$8(items, item => [ + item.to.uri, + item.to.range.start.line, + item.to.range.start.character, + item.to.range.end.line, + item.to.range.end.character, + ].join(':')); +} +dedupe$9.withCallHierarchyOutgoingCalls = withCallHierarchyOutgoingCalls; +function withRanges(items) { + return dedupe$8(items, item => [ + item.start.line, + item.start.character, + item.end.line, + item.end.character, + ].join(':')); +} +dedupe$9.withRanges = withRanges; +function dedupe$8(items, getKey) { + const map = new Map(); + for (const item of items.reverse()) { + map.set(getKey(item), item); + } + return [...map.values()]; +} + +Object.defineProperty(callHierarchy$2, "__esModule", { value: true }); +callHierarchy$2.register = void 0; +const common_1$l = common$1; +const dedupe$7 = dedupe$9; +const featureWorkers_1$j = featureWorkers; +const cancellation_1$s = cancellation; +function register$R(context) { + return { + doPrepare(uri, position, token = cancellation_1$s.NoneCancellationToken) { + return (0, featureWorkers_1$j.languageFeatureWorker)(context, uri, position, (position, map) => map.toGeneratedPositions(position, data => !!data.references), async (service, document, position, map) => { + if (token.isCancellationRequested) + return; + const items = await service.provideCallHierarchyItems?.(document, position, token); + items?.forEach(item => { + item.data = { + uri, + original: { + data: item.data, + }, + serviceId: Object.keys(context.services).find(key => context.services[key] === service), + virtualDocumentUri: map?.virtualFileDocument.uri, + }; + }); + return items; + }, (data, sourceMap) => !sourceMap ? data : data + .map(item => transformCallHierarchyItem(item, [])?.[0]) + .filter(common_1$l.notEmpty), arr => dedupe$7.withLocations(arr.flat())); + }, + async getIncomingCalls(item, token) { + const data = item.data; + let incomingItems = []; + if (data) { + const service = context.services[data.serviceId]; + if (!service.provideCallHierarchyIncomingCalls) + return incomingItems; + Object.assign(item, data.original); + if (data.virtualDocumentUri) { + if (context.documents.isVirtualFileUri(data.virtualDocumentUri)) { + const _calls = await service.provideCallHierarchyIncomingCalls(item, token); + for (const _call of _calls) { + const calls = transformCallHierarchyItem(_call.from, _call.fromRanges); + if (!calls) + continue; + incomingItems.push({ + from: calls[0], + fromRanges: calls[1], + }); + } + } + } + else { + const _calls = await service.provideCallHierarchyIncomingCalls(item, token); + for (const _call of _calls) { + const calls = transformCallHierarchyItem(_call.from, _call.fromRanges); + if (!calls) + continue; + incomingItems.push({ + from: calls[0], + fromRanges: calls[1], + }); + } + } + } + return dedupe$7.withCallHierarchyIncomingCalls(incomingItems); + }, + async getOutgoingCalls(item, token) { + const data = item.data; + let items = []; + if (data) { + const service = context.services[data.serviceId]; + if (!service.provideCallHierarchyOutgoingCalls) + return items; + Object.assign(item, data.original); + if (data.virtualDocumentUri) { + if (context.documents.isVirtualFileUri(data.virtualDocumentUri)) { + const _calls = await service.provideCallHierarchyOutgoingCalls(item, token); + for (const call of _calls) { + const calls = transformCallHierarchyItem(call.to, call.fromRanges); + if (!calls) + continue; + items.push({ + to: calls[0], + fromRanges: calls[1], + }); + } + } + } + else { + const _calls = await service.provideCallHierarchyOutgoingCalls(item, token); + for (const call of _calls) { + const calls = transformCallHierarchyItem(call.to, call.fromRanges); + if (!calls) + continue; + items.push({ + to: calls[0], + fromRanges: calls[1], + }); + } + } + } + return dedupe$7.withCallHierarchyOutgoingCalls(items); + }, + }; + function transformCallHierarchyItem(tsItem, tsRanges) { + if (!context.documents.isVirtualFileUri(tsItem.uri)) + return [tsItem, tsRanges]; + for (const [_, map] of context.documents.getMapsByVirtualFileUri(tsItem.uri)) { + let range = map.toSourceRange(tsItem.range); + if (!range) { + // TODO: <script> range + range = { + start: map.sourceFileDocument.positionAt(0), + end: map.sourceFileDocument.positionAt(map.sourceFileDocument.getText().length), + }; + } + const selectionRange = map.toSourceRange(tsItem.selectionRange); + if (!selectionRange) + continue; + const vueRanges = tsRanges.map(tsRange => map.toSourceRange(tsRange)).filter(common_1$l.notEmpty); + const vueItem = { + ...tsItem, + name: tsItem.name === map.virtualFileDocument.uri.substring(map.virtualFileDocument.uri.lastIndexOf('/') + 1) + ? map.sourceFileDocument.uri.substring(map.sourceFileDocument.uri.lastIndexOf('/') + 1) + : tsItem.name, + uri: map.sourceFileDocument.uri, + // TS Bug: `range: range` not works + range: { + start: range.start, + end: range.end, + }, + selectionRange: { + start: selectionRange.start, + end: selectionRange.end, + }, + }; + selectionRange.end; + return [vueItem, vueRanges]; + } + } +} +callHierarchy$2.register = register$R; + +var codeActionResolve$2 = {}; + +var rename$2 = {}; + +Object.defineProperty(rename$2, "__esModule", { value: true }); +rename$2.embeddedEditToSourceEdit = rename$2.mergeWorkspaceEdits = rename$2.register = void 0; +const featureWorkers_1$i = featureWorkers; +const dedupe$6 = dedupe$9; +const cancellation_1$r = cancellation; +function register$Q(context) { + return (uri, position, newName, token = cancellation_1$r.NoneCancellationToken) => { + let _data; + return (0, featureWorkers_1$i.languageFeatureWorker)(context, uri, { position, newName }, function* (arg, map) { + for (const mapped of map.toGeneratedPositions(arg.position, data => { + _data = data; + return typeof data.rename === 'object' ? !!data.rename.normalize : !!data.rename; + })) { + let newName = arg.newName; + if (_data && typeof _data.rename === 'object' && _data.rename.normalize) { + newName = _data.rename.normalize(arg.newName); + } + yield { position: mapped, newName }; + } + }, async (service, document, arg) => { + if (token.isCancellationRequested) + return; + const recursiveChecker = dedupe$6.createLocationSet(); + let result; + await withMirrors(document, arg.position, arg.newName); + return result; + async function withMirrors(document, position, newName) { + if (!service.provideRenameEdits) + return; + if (recursiveChecker.has({ uri: document.uri, range: { start: position, end: position } })) + return; + recursiveChecker.add({ uri: document.uri, range: { start: position, end: position } }); + const workspaceEdit = await service.provideRenameEdits(document, position, newName, token); + if (!workspaceEdit) + return; + if (!result) + result = {}; + if (workspaceEdit.changes) { + for (const editUri in workspaceEdit.changes) { + const textEdits = workspaceEdit.changes[editUri]; + for (const textEdit of textEdits) { + let foundMirrorPosition = false; + recursiveChecker.add({ uri: editUri, range: { start: textEdit.range.start, end: textEdit.range.start } }); + const mirrorMap = context.documents.getMirrorMapByUri(editUri)?.[1]; + if (mirrorMap) { + for (const mapped of mirrorMap.findMirrorPositions(textEdit.range.start)) { + if (!mapped[1].rename) + continue; + if (recursiveChecker.has({ uri: mirrorMap.document.uri, range: { start: mapped[0], end: mapped[0] } })) + continue; + foundMirrorPosition = true; + await withMirrors(mirrorMap.document, mapped[0], newName); + } + } + if (!foundMirrorPosition) { + if (!result.changes) + result.changes = {}; + if (!result.changes[editUri]) + result.changes[editUri] = []; + result.changes[editUri].push(textEdit); + } + } + } + } + if (workspaceEdit.changeAnnotations) { + for (const uri in workspaceEdit.changeAnnotations) { + if (!result.changeAnnotations) + result.changeAnnotations = {}; + result.changeAnnotations[uri] = workspaceEdit.changeAnnotations[uri]; + } + } + if (workspaceEdit.documentChanges) { + if (!result.documentChanges) + result.documentChanges = []; + result.documentChanges = result.documentChanges.concat(workspaceEdit.documentChanges); + } + } + }, (data) => { + return embeddedEditToSourceEdit(data, context.documents, 'rename'); + }, (workspaceEdits) => { + const mainEdit = workspaceEdits[0]; + const otherEdits = workspaceEdits.slice(1); + mergeWorkspaceEdits(mainEdit, ...otherEdits); + if (mainEdit.changes) { + for (const uri in mainEdit.changes) { + mainEdit.changes[uri] = dedupe$6.withTextEdits(mainEdit.changes[uri]); + } + } + return workspaceEdits[0]; + }); + }; +} +rename$2.register = register$Q; +function mergeWorkspaceEdits(original, ...others) { + for (const other of others) { + for (const uri in other.changeAnnotations) { + if (!original.changeAnnotations) { + original.changeAnnotations = {}; + } + original.changeAnnotations[uri] = other.changeAnnotations[uri]; + } + for (const uri in other.changes) { + if (!original.changes) { + original.changes = {}; + } + if (!original.changes[uri]) { + original.changes[uri] = []; + } + const edits = other.changes[uri]; + original.changes[uri] = original.changes[uri].concat(edits); + } + if (other.documentChanges) { + if (!original.documentChanges) { + original.documentChanges = []; + } + for (const docChange of other.documentChanges) { + pushEditToDocumentChanges(original.documentChanges, docChange); + } + } + } +} +rename$2.mergeWorkspaceEdits = mergeWorkspaceEdits; +function embeddedEditToSourceEdit(tsResult, documents, mode, versions = {}) { + const sourceResult = {}; + let hasResult = false; + for (const tsUri in tsResult.changeAnnotations) { + sourceResult.changeAnnotations ??= {}; + const tsAnno = tsResult.changeAnnotations[tsUri]; + if (!documents.isVirtualFileUri(tsUri)) { + sourceResult.changeAnnotations[tsUri] = tsAnno; + } + else { + for (const [_, map] of documents.getMapsByVirtualFileUri(tsUri)) { + // TODO: check capability? + const uri = map.sourceFileDocument.uri; + sourceResult.changeAnnotations[uri] = tsAnno; + } + } + } + for (const tsUri in tsResult.changes) { + sourceResult.changes ??= {}; + if (!documents.isVirtualFileUri(tsUri)) { + sourceResult.changes[tsUri] = tsResult.changes[tsUri]; + hasResult = true; + continue; + } + for (const [_, map] of documents.getMapsByVirtualFileUri(tsUri)) { + const tsEdits = tsResult.changes[tsUri]; + for (const tsEdit of tsEdits) { + if (mode === 'rename' || mode === 'fileName' || mode === 'codeAction') { + let _data; + const range = map.toSourceRange(tsEdit.range, data => { + _data = data; + return typeof data.rename === 'object' ? !!data.rename.apply : !!data.rename; + }); + if (range) { + let newText = tsEdit.newText; + if (_data && typeof _data.rename === 'object' && _data.rename.apply) { + newText = _data.rename.apply(tsEdit.newText); + } + sourceResult.changes[map.sourceFileDocument.uri] ??= []; + sourceResult.changes[map.sourceFileDocument.uri].push({ newText, range }); + hasResult = true; + } + } + else { + const range = map.toSourceRange(tsEdit.range); + if (range) { + sourceResult.changes[map.sourceFileDocument.uri] ??= []; + sourceResult.changes[map.sourceFileDocument.uri].push({ newText: tsEdit.newText, range }); + hasResult = true; + } + } + } + } + } + if (tsResult.documentChanges) { + for (const tsDocEdit of tsResult.documentChanges) { + sourceResult.documentChanges ??= []; + let sourceEdit; + if ('textDocument' in tsDocEdit) { + if (documents.isVirtualFileUri(tsDocEdit.textDocument.uri)) { + for (const [_, map] of documents.getMapsByVirtualFileUri(tsDocEdit.textDocument.uri)) { + sourceEdit = { + textDocument: { + uri: map.sourceFileDocument.uri, + version: versions[map.sourceFileDocument.uri] ?? null, + }, + edits: [], + }; + for (const tsEdit of tsDocEdit.edits) { + if (mode === 'rename' || mode === 'fileName' || mode === 'codeAction') { + let _data; + const range = map.toSourceRange(tsEdit.range, data => { + _data = data; + // fix https://github.com/johnsoncodehk/volar/issues/1091 + return typeof data.rename === 'object' ? !!data.rename.apply : !!data.rename; + }); + if (range) { + let newText = tsEdit.newText; + if (_data && typeof _data.rename === 'object' && _data.rename.apply) { + newText = _data.rename.apply(tsEdit.newText); + } + sourceEdit.edits.push({ + annotationId: 'annotationId' in tsEdit ? tsEdit.annotationId : undefined, + newText, + range, + }); + } + } + else { + const range = map.toSourceRange(tsEdit.range); + if (range) { + sourceEdit.edits.push({ + annotationId: 'annotationId' in tsEdit ? tsEdit.annotationId : undefined, + newText: tsEdit.newText, + range, + }); + } + } + } + if (!sourceEdit.edits.length) { + sourceEdit = undefined; + } + } + } + else { + sourceEdit = tsDocEdit; + } + } + else if (tsDocEdit.kind === 'create') { + sourceEdit = tsDocEdit; // TODO: remove .ts? + } + else if (tsDocEdit.kind === 'rename') { + if (!documents.isVirtualFileUri(tsDocEdit.oldUri)) { + sourceEdit = tsDocEdit; + } + else { + for (const [_, map] of documents.getMapsByVirtualFileUri(tsDocEdit.oldUri)) { + // TODO: check capability? + sourceEdit = { + kind: 'rename', + oldUri: map.sourceFileDocument.uri, + newUri: tsDocEdit.newUri /* TODO: remove .ts? */, + options: tsDocEdit.options, + annotationId: tsDocEdit.annotationId, + }; + } + } + } + else if (tsDocEdit.kind === 'delete') { + if (!documents.isVirtualFileUri(tsDocEdit.uri)) { + sourceEdit = tsDocEdit; + } + else { + for (const [_, map] of documents.getMapsByVirtualFileUri(tsDocEdit.uri)) { + // TODO: check capability? + sourceEdit = { + kind: 'delete', + uri: map.sourceFileDocument.uri, + options: tsDocEdit.options, + annotationId: tsDocEdit.annotationId, + }; + } + } + } + if (sourceEdit) { + pushEditToDocumentChanges(sourceResult.documentChanges, sourceEdit); + hasResult = true; + } + } + } + if (hasResult) { + return sourceResult; + } +} +rename$2.embeddedEditToSourceEdit = embeddedEditToSourceEdit; +function pushEditToDocumentChanges(arr, item) { + const current = arr.find(edit => 'textDocument' in edit + && 'textDocument' in item + && edit.textDocument.uri === item.textDocument.uri); + if (current) { + current.edits.push(...item.edits); + } + else { + arr.push(item); + } +} + +Object.defineProperty(codeActionResolve$2, "__esModule", { value: true }); +codeActionResolve$2.register = void 0; +const rename_1$5 = rename$2; +const cancellation_1$q = cancellation; +function register$P(context) { + return async (item, token = cancellation_1$q.NoneCancellationToken) => { + const data = item.data; + if (data?.type === 'service') { + const service = context.services[data.serviceId]; + if (!service.resolveCodeAction) + return item; + Object.assign(item, data.original); + item = await service.resolveCodeAction(item, token); + item = service.transformCodeAction?.(item) + ?? (item.edit + ? { + ...item, + edit: (0, rename_1$5.embeddedEditToSourceEdit)(item.edit, context.documents, 'codeAction', { [data.uri]: data.version }), + } + : item); + } + if (data?.type === 'rule') { + const fixes = context.ruleFixes?.[data.documentUri]?.[data.ruleId]?.[data.ruleFixIndex]; + const fix = fixes?.[1][data.index]; + if (fix) { + let edit = await fix.getWorkspaceEdit?.(fixes[0]) ?? undefined; + if (!edit) { + const edits = await fix.getEdits?.(fixes[0]); + if (edits) { + edit = { + documentChanges: [{ + textDocument: { + uri: data.documentUri, + version: null + }, + edits, + }], + }; + } + } + if (edit) { + item.edit = (0, rename_1$5.embeddedEditToSourceEdit)(edit, context.documents, data.isFormat ? 'format' : 'codeAction', { [data.uri]: data.version }); + } + } + } + return item; + }; +} +codeActionResolve$2.register = register$P; + +var codeActions$1 = {}; + +var transformer$8 = {}; + +var completionItem = {}; + +var textEdit = {}; + +Object.defineProperty(textEdit, "__esModule", { value: true }); +textEdit.transform = void 0; +function transform$c(textEdit, getOtherRange, document) { + if ('range' in textEdit) { + let range = getOtherRange(textEdit.range); + if (range) { + return { + ...textEdit, + range, + }; + } + const cover = tryRecover(getOtherRange, textEdit.range, textEdit.newText, document); + if (cover) { + return { + ...textEdit, + range: cover.range, + newText: cover.newText, + }; + } + } + else if ('replace' in textEdit && 'insert' in textEdit) { + const insert = getOtherRange(textEdit.insert); + const replace = insert ? getOtherRange(textEdit.replace) : undefined; + if (insert && replace) { + return { + ...textEdit, + insert, + replace, + }; + } + const recoverInsert = tryRecover(getOtherRange, textEdit.insert, textEdit.newText, document); + const recoverReplace = recoverInsert ? tryRecover(getOtherRange, textEdit.replace, textEdit.newText, document) : undefined; + if (recoverInsert && recoverReplace && recoverInsert.newText === recoverReplace.newText) { + return { + ...textEdit, + insert: recoverInsert.range, + replace: recoverReplace.range, + newText: recoverInsert.newText, + }; + } + } +} +textEdit.transform = transform$c; +/** + * update edit text from ". foo" to " foo" + * fix https://github.com/johnsoncodehk/volar/issues/2155 + */ +function tryRecover(getOtherRange, replaceRange, newText, document) { + if (replaceRange.start.line === replaceRange.end.line && replaceRange.end.character > replaceRange.start.character) { + let character = replaceRange.start.character; + while (newText.length && replaceRange.end.character > character) { + const newStart = { line: replaceRange.start.line, character: replaceRange.start.character + 1 }; + if (document.getText({ start: replaceRange.start, end: newStart }) === newText[0]) { + newText = newText.slice(1); + character++; + const otherRange = getOtherRange({ start: newStart, end: replaceRange.end }); + if (otherRange) { + return { + newText, + range: otherRange, + }; + } + } + else { + break; + } + } + } +} + +Object.defineProperty(completionItem, "__esModule", { value: true }); +completionItem.transform = void 0; +const common_1$k = common$1; +const textEdit_1 = textEdit; +function transform$b(item, getOtherRange, document) { + return { + ...item, + additionalTextEdits: item.additionalTextEdits + ?.map(edit => (0, textEdit_1.transform)(edit, getOtherRange, document)) + .filter(common_1$k.notEmpty), + textEdit: item.textEdit + ? (0, textEdit_1.transform)(item.textEdit, getOtherRange, document) + : undefined, + }; +} +completionItem.transform = transform$b; + +var completionList = {}; + +Object.defineProperty(completionList, "__esModule", { value: true }); +completionList.transform = void 0; +const completionItem_1 = completionItem; +function transform$a(completionList, getOtherRange, document, onItem) { + return { + isIncomplete: completionList.isIncomplete, + itemDefaults: completionList.itemDefaults ? { + ...completionList.itemDefaults, + editRange: completionList.itemDefaults.editRange + ? 'replace' in completionList.itemDefaults.editRange + ? { + insert: getOtherRange(completionList.itemDefaults.editRange.insert), + replace: getOtherRange(completionList.itemDefaults.editRange.replace), + } + : getOtherRange(completionList.itemDefaults.editRange) + : undefined, + } : undefined, + items: completionList.items.map(item => { + const newItem = (0, completionItem_1.transform)(item, getOtherRange, document); + onItem?.(newItem, item); + return newItem; + }), + }; +} +completionList.transform = transform$a; + +var foldingRanges$3 = {}; + +Object.defineProperty(foldingRanges$3, "__esModule", { value: true }); +foldingRanges$3.transform = void 0; +function transform$9(ranges, getOtherRange) { + const result = []; + for (const range of ranges) { + const otherRange = getOtherRange({ + start: { line: range.startLine, character: range.startCharacter ?? 0 }, + end: { line: range.endLine, character: range.endCharacter ?? 0 }, + }); + if (otherRange) { + range.startLine = otherRange.start.line; + range.endLine = otherRange.end.line; + if (range.startCharacter !== undefined) + range.startCharacter = otherRange.start.character; + if (range.endCharacter !== undefined) + range.endCharacter = otherRange.end.character; + result.push(range); + } + } + return result; +} +foldingRanges$3.transform = transform$9; + +var hover$3 = {}; + +Object.defineProperty(hover$3, "__esModule", { value: true }); +hover$3.transform = void 0; +function transform$8(hover, getOtherRange) { + if (!hover?.range) { + return hover; + } + const range = getOtherRange(hover.range); + if (!range) + return; + return { + ...hover, + range, + }; +} +hover$3.transform = transform$8; + +var locationLike = {}; + +Object.defineProperty(locationLike, "__esModule", { value: true }); +locationLike.transform = void 0; +function transform$7(location, getOtherRange) { + const range = getOtherRange(location.range); + if (!range) + return; + return { + ...location, + range, + }; +} +locationLike.transform = transform$7; + +var locationsLike = {}; + +Object.defineProperty(locationsLike, "__esModule", { value: true }); +locationsLike.transform = void 0; +const common_1$j = common$1; +const locationLike_1 = locationLike; +function transform$6(locations, getOtherRange) { + return locations + .map(location => (0, locationLike_1.transform)(location, getOtherRange)) + .filter(common_1$j.notEmpty); +} +locationsLike.transform = transform$6; + +var selectionRange = {}; + +Object.defineProperty(selectionRange, "__esModule", { value: true }); +selectionRange.transform = void 0; +function transform$5(location, getOtherRange) { + const range = getOtherRange(location.range); + if (!range) + return; + const parent = location.parent ? transform$5(location.parent, getOtherRange) : undefined; + return { + range, + parent, + }; +} +selectionRange.transform = transform$5; + +var selectionRanges$3 = {}; + +Object.defineProperty(selectionRanges$3, "__esModule", { value: true }); +selectionRanges$3.transform = void 0; +const common_1$i = common$1; +const selectionRange_1 = selectionRange; +function transform$4(locations, getOtherRange) { + return locations + .map(location => (0, selectionRange_1.transform)(location, getOtherRange)) + .filter(common_1$i.notEmpty); +} +selectionRanges$3.transform = transform$4; + +var documentSymbol$1 = {}; + +Object.defineProperty(documentSymbol$1, "__esModule", { value: true }); +documentSymbol$1.transform = void 0; +const common_1$h = common$1; +function transform$3(symbol, getOtherRange) { + const range = getOtherRange(symbol.range); + if (!range) { + return; + } + const selectionRange = getOtherRange(symbol.selectionRange); + if (!selectionRange) { + return; + } + return { + ...symbol, + range, + selectionRange, + children: symbol.children + ?.map(child => transform$3(child, getOtherRange)) + .filter(common_1$h.notEmpty), + }; +} +documentSymbol$1.transform = transform$3; + +var workspaceSymbol$2 = {}; + +Object.defineProperty(workspaceSymbol$2, "__esModule", { value: true }); +workspaceSymbol$2.transform = void 0; +function transform$2(symbol, getOtherLocation) { + if (!('range' in symbol.location)) { + return symbol; + } + const loc = getOtherLocation(symbol.location); + if (!loc) { + return; + } + return { + ...symbol, + location: loc, + }; +} +workspaceSymbol$2.transform = transform$2; + +(function (exports) { + Object.defineProperty(exports, "__esModule", { value: true }); + exports.asWorkspaceSymbol = exports.asDocumentSymbol = exports.asTextEdit = exports.asSelectionRanges = exports.asSelectionRange = exports.asLocations = exports.asLocation = exports.asHover = exports.asFoldingRanges = exports.asCompletionList = exports.asCompletionItem = void 0; + var completionItem_1 = completionItem; + Object.defineProperty(exports, "asCompletionItem", { enumerable: true, get: function () { return completionItem_1.transform; } }); + var completionList_1 = completionList; + Object.defineProperty(exports, "asCompletionList", { enumerable: true, get: function () { return completionList_1.transform; } }); + var foldingRanges_1 = foldingRanges$3; + Object.defineProperty(exports, "asFoldingRanges", { enumerable: true, get: function () { return foldingRanges_1.transform; } }); + var hover_1 = hover$3; + Object.defineProperty(exports, "asHover", { enumerable: true, get: function () { return hover_1.transform; } }); + var locationLike_1 = locationLike; + Object.defineProperty(exports, "asLocation", { enumerable: true, get: function () { return locationLike_1.transform; } }); + var locationsLike_1 = locationsLike; + Object.defineProperty(exports, "asLocations", { enumerable: true, get: function () { return locationsLike_1.transform; } }); + var selectionRange_1 = selectionRange; + Object.defineProperty(exports, "asSelectionRange", { enumerable: true, get: function () { return selectionRange_1.transform; } }); + var selectionRanges_1 = selectionRanges$3; + Object.defineProperty(exports, "asSelectionRanges", { enumerable: true, get: function () { return selectionRanges_1.transform; } }); + var textEdit_1 = textEdit; + Object.defineProperty(exports, "asTextEdit", { enumerable: true, get: function () { return textEdit_1.transform; } }); + var documentSymbol_1 = documentSymbol$1; + Object.defineProperty(exports, "asDocumentSymbol", { enumerable: true, get: function () { return documentSymbol_1.transform; } }); + var workspaceSymbol_1 = workspaceSymbol$2; + Object.defineProperty(exports, "asWorkspaceSymbol", { enumerable: true, get: function () { return workspaceSymbol_1.transform; } }); + +} (transformer$8)); + +Object.defineProperty(codeActions$1, "__esModule", { value: true }); +codeActions$1.register = void 0; +const transformer$7 = transformer$8; +const common_1$g = common$1; +const dedupe$5 = dedupe$9; +const featureWorkers_1$h = featureWorkers; +const rename_1$4 = rename$2; +const cancellation_1$p = cancellation; +function register$O(context) { + return async (uri, range, codeActionContext, token = cancellation_1$p.NoneCancellationToken) => { + const sourceDocument = context.getTextDocument(uri); + if (!sourceDocument) + return; + const offsetRange = { + start: sourceDocument.offsetAt(range.start), + end: sourceDocument.offsetAt(range.end), + }; + const transformedCodeActions = new WeakSet(); + const pluginActions = await (0, featureWorkers_1$h.languageFeatureWorker)(context, uri, { range, codeActionContext }, (_arg, map, file) => { + if (!file.capabilities.codeAction) + return []; + const _codeActionContext = { + diagnostics: transformer$7.asLocations(codeActionContext.diagnostics, range => map.toGeneratedRange(range)), + only: codeActionContext.only, + }; + let minStart; + let maxEnd; + for (const mapping of map.map.mappings) { + const overlapRange = (0, common_1$g.getOverlapRange)(offsetRange.start, offsetRange.end, mapping.sourceRange[0], mapping.sourceRange[1]); + if (overlapRange) { + const start = map.map.toGeneratedOffset(overlapRange.start)?.[0]; + const end = map.map.toGeneratedOffset(overlapRange.end)?.[0]; + if (start !== undefined && end !== undefined) { + minStart = minStart === undefined ? start : Math.min(start, minStart); + maxEnd = maxEnd === undefined ? end : Math.max(end, maxEnd); + } + } + } + if (minStart !== undefined && maxEnd !== undefined) { + return [{ + range: { + start: map.virtualFileDocument.positionAt(minStart), + end: map.virtualFileDocument.positionAt(maxEnd), + }, + codeActionContext: _codeActionContext, + }]; + } + return []; + }, async (service, document, { range, codeActionContext }, map) => { + if (token.isCancellationRequested) + return; + const serviceId = Object.keys(context.services).find(key => context.services[key] === service); + const diagnostics = codeActionContext.diagnostics.filter(diagnostic => { + const data = diagnostic.data; + if (data && data.version !== sourceDocument.version) { + return false; + } + return data?.type === 'service' && data?.serviceOrRuleId === serviceId; + }).map(diagnostic => { + const data = diagnostic.data; + return { + ...diagnostic, + ...data.original, + }; + }); + const codeActions = await service.provideCodeActions?.(document, range, { + ...codeActionContext, + diagnostics, + }, token); + codeActions?.forEach(codeAction => { + codeAction.data = { + uri, + version: sourceDocument.version, + type: 'service', + original: { + data: codeAction.data, + edit: codeAction.edit, + }, + serviceId: Object.keys(context.services).find(key => context.services[key] === service), + }; + }); + if (codeActions && map && service.transformCodeAction) { + for (let i = 0; i < codeActions.length; i++) { + const transformed = service.transformCodeAction(codeActions[i]); + if (transformed) { + codeActions[i] = transformed; + transformedCodeActions.add(transformed); + } + } + } + return codeActions; + }, (actions, map) => actions.map(action => { + if (transformedCodeActions.has(action)) + return action; + if (!map) + return action; + if (action.edit) { + const edit = (0, rename_1$4.embeddedEditToSourceEdit)(action.edit, context.documents, 'codeAction'); + if (!edit) { + return; + } + action.edit = edit; + } + return action; + }).filter(common_1$g.notEmpty), arr => dedupe$5.withCodeAction(arr.flat())); + const ruleActions = []; + for (const diagnostic of codeActionContext.diagnostics) { + const data = diagnostic.data; + if (data && data.version !== sourceDocument.version) { + // console.warn('[volar/rules-api] diagnostic version mismatch', data.version, sourceDocument.version); + continue; + } + if (data?.type === 'rule') { + const fixes = context.ruleFixes?.[data.documentUri]?.[data.serviceOrRuleId]?.[data.ruleFixIndex]; + if (fixes) { + for (let i = 0; i < fixes[1].length; i++) { + const fix = fixes[1][i]; + const matchKinds = []; + if (!codeActionContext.only) { + matchKinds.push(undefined); + } + else { + for (const kind of fix.kinds ?? ['quickfix']) { + const matchOnly = matchOnlyKind(codeActionContext.only, kind); + if (matchOnly) { + matchKinds.push(matchOnly); + } + } + } + for (const matchKind of matchKinds) { + const action = { + title: fix.title ?? `Fix: ${diagnostic.message}`, + kind: matchKind, + diagnostics: [diagnostic], + data: { + uri, + type: 'rule', + version: data.version, + isFormat: data.isFormat, + ruleId: data.serviceOrRuleId, + documentUri: data.documentUri, + ruleFixIndex: data.ruleFixIndex, + index: i, + }, + }; + ruleActions.push(action); + } + } + } + } + } + return [ + ...pluginActions ?? [], + ...ruleActions, + ]; + }; +} +codeActions$1.register = register$O; +function matchOnlyKind(only, kind) { + const b = kind.split('.'); + for (const onlyKind of only) { + const a = onlyKind.split('.'); + if (a.length <= b.length) { + let matchNum = 0; + for (let i = 0; i < a.length; i++) { + if (a[i] == b[i]) { + matchNum++; + } + } + if (matchNum === a.length) { + return onlyKind; + } + } + } +} + +var codeLens$1 = {}; + +Object.defineProperty(codeLens$1, "__esModule", { value: true }); +codeLens$1.register = void 0; +const featureWorkers_1$g = featureWorkers; +const common_1$f = common$1; +const cancellation_1$o = cancellation; +function register$N(context) { + return async (uri, token = cancellation_1$o.NoneCancellationToken) => { + return await (0, featureWorkers_1$g.languageFeatureWorker)(context, uri, undefined, (arg) => [arg], async (service, document) => { + if (token.isCancellationRequested) + return; + let codeLens = await service.provideCodeLenses?.(document, token); + const serviceId = Object.keys(context.services).find(key => context.services[key] === service); + codeLens?.forEach(codeLens => { + codeLens.data = { + kind: 'normal', + uri, + original: { + data: codeLens.data, + }, + serviceId: serviceId, + }; + }); + const ranges = await service.provideReferencesCodeLensRanges?.(document, token); + const referencesCodeLens = ranges?.map(range => ({ + range, + data: { + kind: 'references', + uri, + range, + serviceId: serviceId, + }, + })); + codeLens = [ + ...codeLens ?? [], + ...referencesCodeLens ?? [], + ]; + return codeLens; + }, (data, map) => data.map(codeLens => { + if (!map) + return codeLens; + const range = map.toSourceRange(codeLens.range); + if (range) { + return { + ...codeLens, + range, + }; + } + }).filter(common_1$f.notEmpty), arr => arr.flat()) ?? []; + }; +} +codeLens$1.register = register$N; + +var codeLensResolve$1 = {}; + +var references$3 = {}; + +Object.defineProperty(references$3, "__esModule", { value: true }); +references$3.register = void 0; +const featureWorkers_1$f = featureWorkers; +const dedupe$4 = dedupe$9; +const cancellation_1$n = cancellation; +function register$M(context) { + return (uri, position, token = cancellation_1$n.NoneCancellationToken) => { + return (0, featureWorkers_1$f.languageFeatureWorker)(context, uri, position, (position, map) => map.toGeneratedPositions(position, data => !!data.references), async (service, document, position) => { + if (token.isCancellationRequested) + return; + const recursiveChecker = dedupe$4.createLocationSet(); + const result = []; + await withMirrors(document, position); + return result; + async function withMirrors(document, position) { + if (!service.provideReferences) + return; + if (recursiveChecker.has({ uri: document.uri, range: { start: position, end: position } })) + return; + recursiveChecker.add({ uri: document.uri, range: { start: position, end: position } }); + const references = await service.provideReferences(document, position, token) ?? []; + for (const reference of references) { + let foundMirrorPosition = false; + recursiveChecker.add({ uri: reference.uri, range: { start: reference.range.start, end: reference.range.start } }); + const mirrorMap = context.documents.getMirrorMapByUri(reference.uri)?.[1]; + if (mirrorMap) { + for (const mapped of mirrorMap.findMirrorPositions(reference.range.start)) { + if (!mapped[1].references) + continue; + if (recursiveChecker.has({ uri: mirrorMap.document.uri, range: { start: mapped[0], end: mapped[0] } })) + continue; + foundMirrorPosition = true; + await withMirrors(mirrorMap.document, mapped[0]); + } + } + if (!foundMirrorPosition) { + result.push(reference); + } + } + } + }, (data) => { + const results = []; + for (const reference of data) { + if (context.documents.isVirtualFileUri(reference.uri)) { + for (const [_, map] of context.documents.getMapsByVirtualFileUri(reference.uri)) { + const range = map.toSourceRange(reference.range, data => !!data.references); + if (range) { + results.push({ + uri: map.sourceFileDocument.uri, + range, + }); + } + } + } + else { + results.push(reference); + } + } + return results; + }, arr => dedupe$4.withLocations(arr.flat())); + }; +} +references$3.register = register$M; + +Object.defineProperty(codeLensResolve$1, "__esModule", { value: true }); +codeLensResolve$1.register = void 0; +const references$2 = references$3; +const cancellation_1$m = cancellation; +function register$L(context) { + const findReferences = references$2.register(context); + return async (item, token = cancellation_1$m.NoneCancellationToken) => { + const data = item.data; + if (data?.kind === 'normal') { + const service = context.services[data.serviceId]; + if (!service.resolveCodeLens) + return item; + Object.assign(item, data.original); + item = await service.resolveCodeLens(item, token); + // item.range already transformed in codeLens request + } + if (data?.kind === 'references') { + let references = await findReferences(data.uri, item.range.start, token) ?? []; + const service = context.services[data.serviceId]; + const document = context.getTextDocument(data.uri); + if (document && service.resolveReferencesCodeLensLocations) { + references = await service.resolveReferencesCodeLensLocations(document, data.range, references, token); + } + item.command = context.commands.showReferences.create(data.uri, data.range.start, references); + } + return item; + }; +} +codeLensResolve$1.register = register$L; + +var complete = {}; + +Object.defineProperty(complete, "__esModule", { value: true }); +complete.register = void 0; +const transformer$6 = transformer$8; +const definePlugin_1 = definePlugin; +const cancellation_1$l = cancellation; +function register$K(context) { + let cache; + return async (uri, position, completionContext = { triggerKind: 1, }, token = cancellation_1$l.NoneCancellationToken) => { + let document; + if (completionContext?.triggerKind === 3 + && cache?.uri === uri) { + for (const cacheData of cache.data) { + if (!cacheData.list.isIncomplete) + continue; + if (cacheData.virtualDocumentUri) { + for (const [_, map] of context.documents.getMapsByVirtualFileUri(cacheData.virtualDocumentUri)) { + for (const mapped of map.toGeneratedPositions(position, data => !!data.completion)) { + if (!cacheData.service.provideCompletionItems) + continue; + const embeddedCompletionList = await cacheData.service.provideCompletionItems(map.virtualFileDocument, mapped, completionContext, token); + if (!embeddedCompletionList) { + cacheData.list.isIncomplete = false; + continue; + } + cacheData.list = transformer$6.asCompletionList(embeddedCompletionList, range => map.toSourceRange(range), map.virtualFileDocument, (newItem, oldItem) => newItem.data = { + uri, + original: { + additionalTextEdits: oldItem.additionalTextEdits, + textEdit: oldItem.textEdit, + data: oldItem.data, + }, + serviceId: Object.keys(context.services).find(key => context.services[key] === cacheData.service), + virtualDocumentUri: map.virtualFileDocument.uri, + }); + } + } + } + else if (document = context.getTextDocument(uri)) { + if (!cacheData.service.provideCompletionItems) + continue; + const completionList = await cacheData.service.provideCompletionItems(document, position, completionContext, token); + if (!completionList) { + cacheData.list.isIncomplete = false; + continue; + } + completionList.items.forEach(item => { + item.data = { + uri, + original: { + additionalTextEdits: item.additionalTextEdits, + textEdit: item.textEdit, + data: item.data, + }, + serviceId: Object.keys(context.services).find(key => context.services[key] === cacheData.service), + virtualDocumentUri: undefined, + }; + }); + } + } + } + else { + const rootFile = context.documents.getSourceByUri(uri)?.root; + cache = { + uri, + data: [], + mainCompletion: undefined, + }; + // monky fix https://github.com/johnsoncodehk/volar/issues/1358 + let isFirstMapping = true; + if (rootFile) { + await (0, definePlugin_1.visitEmbedded)(context.documents, rootFile, async (_, map) => { + const services = Object.values(context.services).sort(sortServices); + let _data; + for (const mapped of map.toGeneratedPositions(position, data => { + _data = data; + return !!data.completion; + })) { + for (const service of services) { + if (token.isCancellationRequested) + break; + if (!service.provideCompletionItems) + continue; + if (service.isAdditionalCompletion && !isFirstMapping) + continue; + if (completionContext?.triggerCharacter && !service.triggerCharacters?.includes(completionContext.triggerCharacter)) + continue; + const isAdditional = _data && typeof _data.completion === 'object' && _data.completion.additional || service.isAdditionalCompletion; + if (cache.mainCompletion && (!isAdditional || cache?.mainCompletion.documentUri !== map.virtualFileDocument.uri)) + continue; + // avoid duplicate items with .vue and .vue.html + if (service.isAdditionalCompletion && cache?.data.some(data => data.service === service)) + continue; + const embeddedCompletionList = await service.provideCompletionItems(map.virtualFileDocument, mapped, completionContext, token); + if (!embeddedCompletionList || !embeddedCompletionList.items.length) + continue; + if (typeof _data?.completion === 'object' && _data.completion.autoImportOnly) { + embeddedCompletionList.items = embeddedCompletionList.items.filter(item => !!item.labelDetails); + } + if (!isAdditional) { + cache.mainCompletion = { documentUri: map.virtualFileDocument.uri }; + } + const completionList = transformer$6.asCompletionList(embeddedCompletionList, range => map.toSourceRange(range), map.virtualFileDocument, (newItem, oldItem) => newItem.data = { + uri, + original: { + additionalTextEdits: oldItem.additionalTextEdits, + textEdit: oldItem.textEdit, + data: oldItem.data, + }, + serviceId: Object.keys(context.services).find(key => context.services[key] === service), + virtualDocumentUri: map.virtualFileDocument.uri, + }); + cache.data.push({ + virtualDocumentUri: map.virtualFileDocument.uri, + service: service, + list: completionList, + }); + } + isFirstMapping = false; + } + return true; + }); + } + if (document = context.getTextDocument(uri)) { + const services = Object.values(context.services).sort(sortServices); + for (const service of services) { + if (token.isCancellationRequested) + break; + if (!service.provideCompletionItems) + continue; + if (service.isAdditionalCompletion && !isFirstMapping) + continue; + if (completionContext?.triggerCharacter && !service.triggerCharacters?.includes(completionContext.triggerCharacter)) + continue; + if (cache.mainCompletion && (!service.isAdditionalCompletion || cache.mainCompletion.documentUri !== document.uri)) + continue; + // avoid duplicate items with .vue and .vue.html + if (service.isAdditionalCompletion && cache?.data.some(data => data.service === service)) + continue; + const completionList = await service.provideCompletionItems(document, position, completionContext, token); + if (!completionList || !completionList.items.length) + continue; + if (!service.isAdditionalCompletion) { + cache.mainCompletion = { documentUri: document.uri }; + } + completionList.items.forEach(item => { + item.data = { + uri, + original: { + additionalTextEdits: item.additionalTextEdits, + textEdit: item.textEdit, + data: item.data, + }, + serviceId: Object.keys(context.services).find(key => context.services[key] === service), + virtualDocumentUri: undefined, + }; + }); + cache.data.push({ + virtualDocumentUri: undefined, + service: service, + list: completionList, + }); + } + } + } + return combineCompletionList(cache.data.map(cacheData => cacheData.list)); + function sortServices(a, b) { + return (b.isAdditionalCompletion ? -1 : 1) - (a.isAdditionalCompletion ? -1 : 1); + } + function combineCompletionList(lists) { + return { + isIncomplete: lists.some(list => list.isIncomplete), + itemDefaults: lists.find(list => list.itemDefaults)?.itemDefaults, + items: lists.map(list => list.items).flat(), + }; + } + }; +} +complete.register = register$K; + +var completeResolve = {}; + +Object.defineProperty(completeResolve, "__esModule", { value: true }); +completeResolve.register = void 0; +const transformer$5 = transformer$8; +const cancellation_1$k = cancellation; +function register$J(context) { + return async (item, token = cancellation_1$k.NoneCancellationToken) => { + const data = item.data; + if (data) { + const service = context.services[data.serviceId]; + if (!service.resolveCompletionItem) + return item; + item = Object.assign(item, data.original); + if (data.virtualDocumentUri) { + for (const [_, map] of context.documents.getMapsByVirtualFileUri(data.virtualDocumentUri)) { + item = await service.resolveCompletionItem(item, token); + item = service.transformCompletionItem?.(item) ?? transformer$5.asCompletionItem(item, embeddedRange => map.toSourceRange(embeddedRange), map.virtualFileDocument); + } + } + else { + item = await service.resolveCompletionItem(item, token); + } + } + // TODO: monkey fix import ts file icon + if (item.detail !== item.detail + '.ts') { + item.detail = item.detail; + } + return item; + }; +} +completeResolve.register = register$J; + +var definition$2 = {}; + +Object.defineProperty(definition$2, "__esModule", { value: true }); +definition$2.register = void 0; +const featureWorkers_1$e = featureWorkers; +const dedupe$3 = dedupe$9; +const common_1$e = common$1; +const cancellation_1$j = cancellation; +function register$I(context, apiName, isValidMapping, isValidMirrorPosition) { + return (uri, position, token = cancellation_1$j.NoneCancellationToken) => { + return (0, featureWorkers_1$e.languageFeatureWorker)(context, uri, position, (position, map) => map.toGeneratedPositions(position, isValidMapping), async (service, document, position) => { + if (token.isCancellationRequested) + return; + const recursiveChecker = dedupe$3.createLocationSet(); + const result = []; + await withMirrors(document, position, undefined); + return result; + async function withMirrors(document, position, originDefinition) { + const api = service[apiName]; + if (!api) + return; + if (recursiveChecker.has({ uri: document.uri, range: { start: position, end: position } })) + return; + recursiveChecker.add({ uri: document.uri, range: { start: position, end: position } }); + const definitions = await api?.(document, position, token) ?? []; + for (const definition of definitions) { + let foundMirrorPosition = false; + recursiveChecker.add({ uri: definition.targetUri, range: { start: definition.targetRange.start, end: definition.targetRange.start } }); + const mirrorMap = context.documents.getMirrorMapByUri(definition.targetUri)?.[1]; + if (mirrorMap) { + for (const mapped of mirrorMap.findMirrorPositions(definition.targetSelectionRange.start)) { + if (!isValidMirrorPosition(mapped[1])) + continue; + if (recursiveChecker.has({ uri: mirrorMap.document.uri, range: { start: mapped[0], end: mapped[0] } })) + continue; + foundMirrorPosition = true; + await withMirrors(mirrorMap.document, mapped[0], originDefinition ?? definition); + } + } + if (!foundMirrorPosition) { + if (originDefinition) { + result.push({ + ...definition, + originSelectionRange: originDefinition.originSelectionRange, + }); + } + else { + result.push(definition); + } + } + } + } + }, (data, sourceMap) => data.map(link => { + if (link.originSelectionRange && sourceMap) { + const originSelectionRange = toSourcePositionPreferSurroundedPosition(sourceMap, link.originSelectionRange, position); + if (!originSelectionRange) + return; + link.originSelectionRange = originSelectionRange; + } + let foundTargetSelectionRange = false; + for (const [_, targetSourceMap] of context.documents.getMapsByVirtualFileUri(link.targetUri)) { + const targetSelectionRange = targetSourceMap.toSourceRange(link.targetSelectionRange); + if (!targetSelectionRange) + continue; + foundTargetSelectionRange = true; + let targetRange = targetSourceMap.toSourceRange(link.targetRange); + link.targetUri = targetSourceMap.sourceFileDocument.uri; + // loose range mapping to for template slots, slot properties + link.targetRange = targetRange ?? targetSelectionRange; + link.targetSelectionRange = targetSelectionRange; + } + if (apiName === 'provideDefinition' && context.documents.isVirtualFileUri(link.targetUri) && !foundTargetSelectionRange) { + for (const [_, targetMap] of context.documents.getMapsByVirtualFileUri(link.targetUri)) { + if (targetMap && targetMap.sourceFileDocument.uri !== uri) { + return { + ...link, + targetUri: targetMap.sourceFileDocument.uri, + targetRange: { + start: { line: 0, character: 0 }, + end: { line: 0, character: 0 }, + }, + targetSelectionRange: { + start: { line: 0, character: 0 }, + end: { line: 0, character: 0 }, + }, + }; + } + } + return; + } + return link; + }).filter(common_1$e.notEmpty), arr => dedupe$3.withLocationLinks(arr.flat())); + }; +} +definition$2.register = register$I; +function toSourcePositionPreferSurroundedPosition(map, mappedRange, position) { + let result; + for (const range of map.toSourceRanges(mappedRange)) { + if (!result) { + result = range; + } + if ((range.start.line < position.line || (range.start.line === position.line && range.start.character <= position.character)) + && (range.end.line > position.line || (range.end.line === position.line && range.end.character >= position.character))) { + return range; + } + } + return result; +} + +var documentHighlights = {}; + +Object.defineProperty(documentHighlights, "__esModule", { value: true }); +documentHighlights.register = void 0; +const featureWorkers_1$d = featureWorkers; +const dedupe$2 = dedupe$9; +const common_1$d = common$1; +const cancellation_1$i = cancellation; +function register$H(context) { + return (uri, position, token = cancellation_1$i.NoneCancellationToken) => { + return (0, featureWorkers_1$d.languageFeatureWorker)(context, uri, position, (position, map) => map.toGeneratedPositions(position, + // note https://github.com/johnsoncodehk/volar/issues/2009 + data => typeof data.rename === 'object' ? !!data.rename.normalize : !!data.rename), async (service, document, position) => { + if (token.isCancellationRequested) + return; + const recursiveChecker = dedupe$2.createLocationSet(); + const result = []; + await withMirrors(document, position); + return result; + async function withMirrors(document, position) { + if (!service.provideDocumentHighlights) + return; + if (recursiveChecker.has({ uri: document.uri, range: { start: position, end: position } })) + return; + recursiveChecker.add({ uri: document.uri, range: { start: position, end: position } }); + const references = await service.provideDocumentHighlights(document, position, token) ?? []; + for (const reference of references) { + let foundMirrorPosition = false; + recursiveChecker.add({ uri: document.uri, range: { start: reference.range.start, end: reference.range.start } }); + const mirrorMap = context.documents.getMirrorMapByUri(document.uri)?.[1]; + if (mirrorMap) { + for (const mapped of mirrorMap.findMirrorPositions(reference.range.start)) { + if (!mapped[1].references) + continue; + if (recursiveChecker.has({ uri: mirrorMap.document.uri, range: { start: mapped[0], end: mapped[0] } })) + continue; + foundMirrorPosition = true; + await withMirrors(mirrorMap.document, mapped[0]); + } + } + if (!foundMirrorPosition) { + result.push(reference); + } + } + } + }, (data, map) => data.map(highlight => { + if (!map) + return highlight; + const range = map.toSourceRange(highlight.range); + if (range) { + return { + ...highlight, + range, + }; + } + }).filter(common_1$d.notEmpty), arr => arr.flat()); + }; +} +documentHighlights.register = register$H; + +var documentLinks = {}; + +var documentLinkResolve$1 = {}; + +var umd = {exports: {}}; + +(function (module, exports) { + !function(t,e){module.exports=e();}(commonjsGlobal,(()=>(()=>{var t={470:t=>{function e(t){if("string"!=typeof t)throw new TypeError("Path must be a string. Received "+JSON.stringify(t))}function r(t,e){for(var r,n="",i=0,o=-1,s=0,a=0;a<=t.length;++a){if(a<t.length)r=t.charCodeAt(a);else {if(47===r)break;r=47;}if(47===r){if(o===a-1||1===s);else if(o!==a-1&&2===s){if(n.length<2||2!==i||46!==n.charCodeAt(n.length-1)||46!==n.charCodeAt(n.length-2))if(n.length>2){var h=n.lastIndexOf("/");if(h!==n.length-1){-1===h?(n="",i=0):i=(n=n.slice(0,h)).length-1-n.lastIndexOf("/"),o=a,s=0;continue}}else if(2===n.length||1===n.length){n="",i=0,o=a,s=0;continue}e&&(n.length>0?n+="/..":n="..",i=2);}else n.length>0?n+="/"+t.slice(o+1,a):n=t.slice(o+1,a),i=a-o-1;o=a,s=0;}else 46===r&&-1!==s?++s:s=-1;}return n}var n={resolve:function(){for(var t,n="",i=!1,o=arguments.length-1;o>=-1&&!i;o--){var s;o>=0?s=arguments[o]:(void 0===t&&(t=process.cwd()),s=t),e(s),0!==s.length&&(n=s+"/"+n,i=47===s.charCodeAt(0));}return n=r(n,!i),i?n.length>0?"/"+n:"/":n.length>0?n:"."},normalize:function(t){if(e(t),0===t.length)return ".";var n=47===t.charCodeAt(0),i=47===t.charCodeAt(t.length-1);return 0!==(t=r(t,!n)).length||n||(t="."),t.length>0&&i&&(t+="/"),n?"/"+t:t},isAbsolute:function(t){return e(t),t.length>0&&47===t.charCodeAt(0)},join:function(){if(0===arguments.length)return ".";for(var t,r=0;r<arguments.length;++r){var i=arguments[r];e(i),i.length>0&&(void 0===t?t=i:t+="/"+i);}return void 0===t?".":n.normalize(t)},relative:function(t,r){if(e(t),e(r),t===r)return "";if((t=n.resolve(t))===(r=n.resolve(r)))return "";for(var i=1;i<t.length&&47===t.charCodeAt(i);++i);for(var o=t.length,s=o-i,a=1;a<r.length&&47===r.charCodeAt(a);++a);for(var h=r.length-a,c=s<h?s:h,f=-1,u=0;u<=c;++u){if(u===c){if(h>c){if(47===r.charCodeAt(a+u))return r.slice(a+u+1);if(0===u)return r.slice(a+u)}else s>c&&(47===t.charCodeAt(i+u)?f=u:0===u&&(f=0));break}var l=t.charCodeAt(i+u);if(l!==r.charCodeAt(a+u))break;47===l&&(f=u);}var d="";for(u=i+f+1;u<=o;++u)u!==o&&47!==t.charCodeAt(u)||(0===d.length?d+="..":d+="/..");return d.length>0?d+r.slice(a+f):(a+=f,47===r.charCodeAt(a)&&++a,r.slice(a))},_makeLong:function(t){return t},dirname:function(t){if(e(t),0===t.length)return ".";for(var r=t.charCodeAt(0),n=47===r,i=-1,o=!0,s=t.length-1;s>=1;--s)if(47===(r=t.charCodeAt(s))){if(!o){i=s;break}}else o=!1;return -1===i?n?"/":".":n&&1===i?"//":t.slice(0,i)},basename:function(t,r){if(void 0!==r&&"string"!=typeof r)throw new TypeError('"ext" argument must be a string');e(t);var n,i=0,o=-1,s=!0;if(void 0!==r&&r.length>0&&r.length<=t.length){if(r.length===t.length&&r===t)return "";var a=r.length-1,h=-1;for(n=t.length-1;n>=0;--n){var c=t.charCodeAt(n);if(47===c){if(!s){i=n+1;break}}else -1===h&&(s=!1,h=n+1),a>=0&&(c===r.charCodeAt(a)?-1==--a&&(o=n):(a=-1,o=h));}return i===o?o=h:-1===o&&(o=t.length),t.slice(i,o)}for(n=t.length-1;n>=0;--n)if(47===t.charCodeAt(n)){if(!s){i=n+1;break}}else -1===o&&(s=!1,o=n+1);return -1===o?"":t.slice(i,o)},extname:function(t){e(t);for(var r=-1,n=0,i=-1,o=!0,s=0,a=t.length-1;a>=0;--a){var h=t.charCodeAt(a);if(47!==h)-1===i&&(o=!1,i=a+1),46===h?-1===r?r=a:1!==s&&(s=1):-1!==r&&(s=-1);else if(!o){n=a+1;break}}return -1===r||-1===i||0===s||1===s&&r===i-1&&r===n+1?"":t.slice(r,i)},format:function(t){if(null===t||"object"!=typeof t)throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof t);return function(t,e){var r=e.dir||e.root,n=e.base||(e.name||"")+(e.ext||"");return r?r===e.root?r+n:r+"/"+n:n}(0,t)},parse:function(t){e(t);var r={root:"",dir:"",base:"",ext:"",name:""};if(0===t.length)return r;var n,i=t.charCodeAt(0),o=47===i;o?(r.root="/",n=1):n=0;for(var s=-1,a=0,h=-1,c=!0,f=t.length-1,u=0;f>=n;--f)if(47!==(i=t.charCodeAt(f)))-1===h&&(c=!1,h=f+1),46===i?-1===s?s=f:1!==u&&(u=1):-1!==s&&(u=-1);else if(!c){a=f+1;break}return -1===s||-1===h||0===u||1===u&&s===h-1&&s===a+1?-1!==h&&(r.base=r.name=0===a&&o?t.slice(1,h):t.slice(a,h)):(0===a&&o?(r.name=t.slice(1,s),r.base=t.slice(1,h)):(r.name=t.slice(a,s),r.base=t.slice(a,h)),r.ext=t.slice(s,h)),a>0?r.dir=t.slice(0,a-1):o&&(r.dir="/"),r},sep:"/",delimiter:":",win32:null,posix:null};n.posix=n,t.exports=n;},674:(t,e)=>{if(Object.defineProperty(e,"__esModule",{value:!0}),e.isWindows=void 0,"object"==typeof process)e.isWindows="win32"===process.platform;else if("object"==typeof navigator){let t=navigator.userAgent;e.isWindows=t.indexOf("Windows")>=0;}},796:(t,e,r)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.uriToFsPath=e.URI=void 0;const n=r(674),i=/^\w[\w\d+.-]*$/,o=/^\//,s=/^\/\//;function a(t,e){if(!t.scheme&&e)throw new Error(`[UriError]: Scheme is missing: {scheme: "", authority: "${t.authority}", path: "${t.path}", query: "${t.query}", fragment: "${t.fragment}"}`);if(t.scheme&&!i.test(t.scheme))throw new Error("[UriError]: Scheme contains illegal characters.");if(t.path)if(t.authority){if(!o.test(t.path))throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash ("/") character')}else if(s.test(t.path))throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")')}const h="",c="/",f=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/;class u{static isUri(t){return t instanceof u||!!t&&"string"==typeof t.authority&&"string"==typeof t.fragment&&"string"==typeof t.path&&"string"==typeof t.query&&"string"==typeof t.scheme&&"string"==typeof t.fsPath&&"function"==typeof t.with&&"function"==typeof t.toString}scheme;authority;path;query;fragment;constructor(t,e,r,n,i,o=!1){"object"==typeof t?(this.scheme=t.scheme||h,this.authority=t.authority||h,this.path=t.path||h,this.query=t.query||h,this.fragment=t.fragment||h):(this.scheme=function(t,e){return t||e?t:"file"}(t,o),this.authority=e||h,this.path=function(t,e){switch(t){case"https":case"http":case"file":e?e[0]!==c&&(e=c+e):e=c;}return e}(this.scheme,r||h),this.query=n||h,this.fragment=i||h,a(this,o));}get fsPath(){return v(this,!1)}with(t){if(!t)return this;let{scheme:e,authority:r,path:n,query:i,fragment:o}=t;return void 0===e?e=this.scheme:null===e&&(e=h),void 0===r?r=this.authority:null===r&&(r=h),void 0===n?n=this.path:null===n&&(n=h),void 0===i?i=this.query:null===i&&(i=h),void 0===o?o=this.fragment:null===o&&(o=h),e===this.scheme&&r===this.authority&&n===this.path&&i===this.query&&o===this.fragment?this:new d(e,r,n,i,o)}static parse(t,e=!1){const r=f.exec(t);return r?new d(r[2]||h,w(r[4]||h),w(r[5]||h),w(r[7]||h),w(r[9]||h),e):new d(h,h,h,h,h)}static file(t){let e=h;if(n.isWindows&&(t=t.replace(/\\/g,c)),t[0]===c&&t[1]===c){const r=t.indexOf(c,2);-1===r?(e=t.substring(2),t=c):(e=t.substring(2,r),t=t.substring(r)||c);}return new d("file",e,t,h,h)}static from(t){const e=new d(t.scheme,t.authority,t.path,t.query,t.fragment);return a(e,!0),e}toString(t=!1){return y(this,t)}toJSON(){return this}static revive(t){if(t){if(t instanceof u)return t;{const e=new d(t);return e._formatted=t.external,e._fsPath=t._sep===l?t.fsPath:null,e}}return t}}e.URI=u;const l=n.isWindows?1:void 0;class d extends u{_formatted=null;_fsPath=null;get fsPath(){return this._fsPath||(this._fsPath=v(this,!1)),this._fsPath}toString(t=!1){return t?y(this,!0):(this._formatted||(this._formatted=y(this,!1)),this._formatted)}toJSON(){const t={$mid:1};return this._fsPath&&(t.fsPath=this._fsPath,t._sep=l),this._formatted&&(t.external=this._formatted),this.path&&(t.path=this.path),this.scheme&&(t.scheme=this.scheme),this.authority&&(t.authority=this.authority),this.query&&(t.query=this.query),this.fragment&&(t.fragment=this.fragment),t}}const p={58:"%3A",47:"%2F",63:"%3F",35:"%23",91:"%5B",93:"%5D",64:"%40",33:"%21",36:"%24",38:"%26",39:"%27",40:"%28",41:"%29",42:"%2A",43:"%2B",44:"%2C",59:"%3B",61:"%3D",32:"%20"};function g(t,e,r){let n,i=-1;for(let o=0;o<t.length;o++){const s=t.charCodeAt(o);if(s>=97&&s<=122||s>=65&&s<=90||s>=48&&s<=57||45===s||46===s||95===s||126===s||e&&47===s||r&&91===s||r&&93===s||r&&58===s)-1!==i&&(n+=encodeURIComponent(t.substring(i,o)),i=-1),void 0!==n&&(n+=t.charAt(o));else {void 0===n&&(n=t.substr(0,o));const e=p[s];void 0!==e?(-1!==i&&(n+=encodeURIComponent(t.substring(i,o)),i=-1),n+=e):-1===i&&(i=o);}}return -1!==i&&(n+=encodeURIComponent(t.substring(i))),void 0!==n?n:t}function m(t){let e;for(let r=0;r<t.length;r++){const n=t.charCodeAt(r);35===n||63===n?(void 0===e&&(e=t.substr(0,r)),e+=p[n]):void 0!==e&&(e+=t[r]);}return void 0!==e?e:t}function v(t,e){let r;return r=t.authority&&t.path.length>1&&"file"===t.scheme?`//${t.authority}${t.path}`:47===t.path.charCodeAt(0)&&(t.path.charCodeAt(1)>=65&&t.path.charCodeAt(1)<=90||t.path.charCodeAt(1)>=97&&t.path.charCodeAt(1)<=122)&&58===t.path.charCodeAt(2)?e?t.path.substr(1):t.path[1].toLowerCase()+t.path.substr(2):t.path,n.isWindows&&(r=r.replace(/\//g,"\\")),r}function y(t,e){const r=e?m:g;let n="",{scheme:i,authority:o,path:s,query:a,fragment:h}=t;if(i&&(n+=i,n+=":"),(o||"file"===i)&&(n+=c,n+=c),o){let t=o.indexOf("@");if(-1!==t){const e=o.substr(0,t);o=o.substr(t+1),t=e.lastIndexOf(":"),-1===t?n+=r(e,!1,!1):(n+=r(e.substr(0,t),!1,!1),n+=":",n+=r(e.substr(t+1),!1,!0)),n+="@";}o=o.toLowerCase(),t=o.lastIndexOf(":"),-1===t?n+=r(o,!1,!0):(n+=r(o.substr(0,t),!1,!0),n+=o.substr(t));}if(s){if(s.length>=3&&47===s.charCodeAt(0)&&58===s.charCodeAt(2)){const t=s.charCodeAt(1);t>=65&&t<=90&&(s=`/${String.fromCharCode(t+32)}:${s.substr(3)}`);}else if(s.length>=2&&58===s.charCodeAt(1)){const t=s.charCodeAt(0);t>=65&&t<=90&&(s=`${String.fromCharCode(t+32)}:${s.substr(2)}`);}n+=r(s,!0,!1);}return a&&(n+="?",n+=r(a,!1,!1)),h&&(n+="#",n+=e?h:g(h,!1,!1)),n}function b(t){try{return decodeURIComponent(t)}catch{return t.length>3?t.substr(0,3)+b(t.substr(3)):t}}e.uriToFsPath=v;const C=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function w(t){return t.match(C)?t.replace(C,(t=>b(t))):t}},679:function(t,e,r){var n=this&&this.__createBinding||(Object.create?function(t,e,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(e,r);i&&!("get"in i?!e.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,n,i);}:function(t,e,r,n){void 0===n&&(n=r),t[n]=e[r];}),i=this&&this.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e});}:function(t,e){t.default=e;}),o=this&&this.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)"default"!==r&&Object.prototype.hasOwnProperty.call(t,r)&&n(e,t,r);return i(e,t),e};Object.defineProperty(e,"__esModule",{value:!0}),e.Utils=void 0;const s=o(r(470)),a=s.posix||s,h="/";var c;!function(t){t.joinPath=function(t,...e){return t.with({path:a.join(t.path,...e)})},t.resolvePath=function(t,...e){let r=t.path,n=!1;r[0]!==h&&(r=h+r,n=!0);let i=a.resolve(r,...e);return n&&i[0]===h&&!t.authority&&(i=i.substring(1)),t.with({path:i})},t.dirname=function(t){if(0===t.path.length||t.path===h)return t;let e=a.dirname(t.path);return 1===e.length&&46===e.charCodeAt(0)&&(e=""),t.with({path:e})},t.basename=function(t){return a.basename(t.path)},t.extname=function(t){return a.extname(t.path)};}(c||(e.Utils=c={}));}},e={};function r(n){var i=e[n];if(void 0!==i)return i.exports;var o=e[n]={exports:{}};return t[n].call(o.exports,o,o.exports,r),o.exports}var n={};return (()=>{var t=n;Object.defineProperty(t,"__esModule",{value:!0}),t.Utils=t.URI=void 0;const e=r(796);Object.defineProperty(t,"URI",{enumerable:!0,get:function(){return e.URI}});const i=r(679);Object.defineProperty(t,"Utils",{enumerable:!0,get:function(){return i.Utils}});})(),n})())); + +} (umd)); + +var umdExports = umd.exports; + +Object.defineProperty(documentLinkResolve$1, "__esModule", { value: true }); +documentLinkResolve$1.transformDocumentLinkTarget = documentLinkResolve$1.register = void 0; +const cancellation_1$h = cancellation; +const vscode_uri_1$5 = umdExports; +function register$G(context) { + return async (item, token = cancellation_1$h.NoneCancellationToken) => { + const data = item.data; + if (data) { + const service = context.services[data.serviceId]; + if (!service.resolveDocumentLink) + return item; + Object.assign(item, data.original); + item = await service.resolveDocumentLink(item, token); + if (item.target) { + item.target = transformDocumentLinkTarget(item.target, context); + } + } + return item; + }; +} +documentLinkResolve$1.register = register$G; +function transformDocumentLinkTarget(target, context) { + const targetUri = vscode_uri_1$5.URI.parse(target); + const clearUri = targetUri.with({ fragment: '' }).toString(); + if (context.documents.isVirtualFileUri(clearUri)) { + for (const [virtualFile, map] of context.documents.getMapsByVirtualFileUri(clearUri)) { + if (!virtualFile.capabilities.documentSymbol) { + continue; + } + target = map.sourceFileDocument.uri; + const hash = targetUri.fragment; + const range = hash.match(/^L(\d+)(,(\d+))?(-L(\d+)(,(\d+))?)?$/); + if (range) { + const startLine = Number(range[1]) - 1; + const startCharacter = Number(range[3] ?? 1) - 1; + if (range[5] !== undefined) { + const endLine = Number(range[5]) - 1; + const endCharacter = Number(range[7] ?? 1) - 1; + const sourceRange = map.toSourceRange({ + start: { line: startLine, character: startCharacter }, + end: { line: endLine, character: endCharacter }, + }); + if (sourceRange) { + target += '#L' + (sourceRange.start.line + 1) + ',' + (sourceRange.start.character + 1); + target += '-L' + (sourceRange.end.line + 1) + ',' + (sourceRange.end.character + 1); + break; + } + } + else { + const sourcePos = map.toSourcePosition({ line: startLine, character: startCharacter }); + if (sourcePos) { + target += '#L' + (sourcePos.line + 1) + ',' + (sourcePos.character + 1); + break; + } + } + } + } + } + return target; +} +documentLinkResolve$1.transformDocumentLinkTarget = transformDocumentLinkTarget; + +Object.defineProperty(documentLinks, "__esModule", { value: true }); +documentLinks.register = void 0; +const featureWorkers_1$c = featureWorkers; +const common_1$c = common$1; +const cancellation_1$g = cancellation; +const documentLinkResolve_1 = documentLinkResolve$1; +function register$F(context) { + return async (uri, token = cancellation_1$g.NoneCancellationToken) => { + const pluginLinks = await (0, featureWorkers_1$c.documentFeatureWorker)(context, uri, file => !!file.capabilities.documentSymbol, async (service, document) => { + if (token.isCancellationRequested) + return; + const links = await service.provideDocumentLinks?.(document, token); + for (const link of links ?? []) { + link.data = { + uri, + original: { + data: link.data, + }, + serviceId: Object.keys(context.services).find(key => context.services[key] === service), + }; + } + return links; + }, (links, map) => links.map(link => { + if (!map) + return link; + const range = map.toSourceRange(link.range); + if (!range) + return; + link = { + ...link, + range, + }; + if (link.target) + link.target = (0, documentLinkResolve_1.transformDocumentLinkTarget)(link.target, context); + return link; + }).filter(common_1$c.notEmpty), arr => arr.flat()) ?? []; + const maps = context.documents.getMapsBySourceFileUri(uri); + const fictitiousLinks = maps ? getFictitiousLinks(context.documents.getDocumentByUri(maps.snapshot, uri), maps.maps) : []; + return [ + ...pluginLinks, + ...fictitiousLinks, + ]; + function getFictitiousLinks(document, maps) { + const result = []; + for (const [_, map] of maps) { + for (const mapped of map.map.mappings) { + if (!mapped.data.displayWithLink) + continue; + if (mapped.sourceRange[0] === mapped.sourceRange[1]) + continue; + result.push({ + range: { + start: document.positionAt(mapped.sourceRange[0]), + end: document.positionAt(mapped.sourceRange[1]), + }, + target: uri, // TODO + }); + } + } + return result; + } + }; +} +documentLinks.register = register$F; + +var documentSemanticTokens = {}; + +var SemanticTokensBuilder$1 = {}; + +Object.defineProperty(SemanticTokensBuilder$1, "__esModule", { value: true }); +SemanticTokensBuilder$1.SemanticTokensBuilder = void 0; +class SemanticTokensBuilder { + constructor() { + this.initialize(); + } + initialize() { + this._id = Date.now(); + this._prevLine = 0; + this._prevChar = 0; + this._data = []; + this._dataLen = 0; + } + push(line, char, length, tokenType, tokenModifiers) { + let pushLine = line; + let pushChar = char; + if (this._dataLen > 0) { + pushLine -= this._prevLine; + if (pushLine === 0) { + pushChar -= this._prevChar; + } + } + this._data[this._dataLen++] = pushLine; + this._data[this._dataLen++] = pushChar; + this._data[this._dataLen++] = length; + this._data[this._dataLen++] = tokenType; + this._data[this._dataLen++] = tokenModifiers; + this._prevLine = line; + this._prevChar = char; + } + get id() { + return this._id.toString(); + } + build() { + return { + resultId: this.id, + data: this._data, + }; + } +} +SemanticTokensBuilder$1.SemanticTokensBuilder = SemanticTokensBuilder; + +Object.defineProperty(documentSemanticTokens, "__esModule", { value: true }); +documentSemanticTokens.register = void 0; +const featureWorkers_1$b = featureWorkers; +const SemanticTokensBuilder_1 = SemanticTokensBuilder$1; +const common_1$b = common$1; +const cancellation_1$f = cancellation; +function register$E(context) { + return async (uri, range, legend, token = cancellation_1$f.NoneCancellationToken, reportProgress) => { + const document = context.getTextDocument(uri); + if (!document) + return; + const offsetRange = range ? [ + document.offsetAt(range.start), + document.offsetAt(range.end), + ] : [ + 0, + document.getText().length, + ]; + const tokens = await (0, featureWorkers_1$b.languageFeatureWorker)(context, uri, offsetRange, function* (offsetRange, map) { + let range; + for (const mapping of map.map.mappings) { + if (mapping.data.semanticTokens + && mapping.sourceRange[1] > offsetRange[0] + && mapping.sourceRange[0] < offsetRange[1]) { + if (!range) { + range = [...mapping.generatedRange]; + } + else { + range[0] = Math.min(range[0], mapping.generatedRange[0]); + range[1] = Math.max(range[1], mapping.generatedRange[1]); + } + } + } + if (range) { + yield range; + } + }, (service, document, offsetRange) => { + if (token?.isCancellationRequested) + return; + return service.provideDocumentSemanticTokens?.(document, { + start: document.positionAt(offsetRange[0]), + end: document.positionAt(offsetRange[1]), + }, legend, token); + }, (tokens, map) => tokens.map(_token => { + if (!map) + return _token; + const range = map.toSourceRange({ + start: { line: _token[0], character: _token[1] }, + end: { line: _token[0], character: _token[1] + _token[2] }, + }, data => !!data.semanticTokens); + if (range) { + return [range.start.line, range.start.character, range.end.character - range.start.character, _token[3], _token[4]]; + } + }).filter(common_1$b.notEmpty), tokens => tokens.flat(), tokens => reportProgress?.(buildTokens(tokens))); + if (tokens) { + return buildTokens(tokens); + } + }; +} +documentSemanticTokens.register = register$E; +function buildTokens(tokens) { + const builder = new SemanticTokensBuilder_1.SemanticTokensBuilder(); + const sortedTokens = tokens.sort((a, b) => a[0] - b[0] === 0 ? a[1] - b[1] : a[0] - b[0]); + for (const token of sortedTokens) { + builder.push(...token); + } + return builder.build(); +} + +var fileReferences$2 = {}; + +Object.defineProperty(fileReferences$2, "__esModule", { value: true }); +fileReferences$2.register = void 0; +const featureWorkers_1$a = featureWorkers; +const dedupe$1 = dedupe$9; +const common_1$a = common$1; +const cancellation_1$e = cancellation; +function register$D(context) { + return (uri, token = cancellation_1$e.NoneCancellationToken) => { + return (0, featureWorkers_1$a.languageFeatureWorker)(context, uri, undefined, function* (_) { + yield _; + }, async (service, document) => { + if (token.isCancellationRequested) + return; + return await service.provideFileReferences?.(document, token) ?? []; + }, (data) => data.map(reference => { + if (!context.documents.isVirtualFileUri(reference.uri)) { + return reference; + } + for (const [_, map] of context.documents.getMapsByVirtualFileUri(reference.uri)) { + const range = map.toSourceRange(reference.range); + if (range) { + reference.uri = map.sourceFileDocument.uri; + reference.range = range; + return reference; + } + } + }).filter(common_1$a.notEmpty), arr => dedupe$1.withLocations(arr.flat())); + }; +} +fileReferences$2.register = register$D; + +var fileRename$2 = {}; + +Object.defineProperty(fileRename$2, "__esModule", { value: true }); +fileRename$2.register = void 0; +const rename_1$3 = rename$2; +const dedupe = dedupe$9; +const language_core_1$l = languageCore; +const cancellation_1$d = cancellation; +function register$C(context) { + return async (oldUri, newUri, token = cancellation_1$d.NoneCancellationToken) => { + const rootFile = context.documents.getSourceByUri(oldUri)?.root; + if (rootFile) { + let tsExt; + (0, language_core_1$l.forEachEmbeddedFile)(rootFile, embedded => { + if (embedded.kind === language_core_1$l.FileKind.TypeScriptHostFile && embedded.fileName.replace(rootFile.fileName, '').match(/^\.(js|ts)x?$/)) { + tsExt = embedded.fileName.substring(embedded.fileName.lastIndexOf('.')); + } + }); + if (!tsExt) { + return; + } + oldUri += tsExt; + newUri += tsExt; + } + for (const service of Object.values(context.services)) { + if (token.isCancellationRequested) + break; + if (!service.provideFileRenameEdits) + continue; + const workspaceEdit = await service.provideFileRenameEdits(oldUri, newUri, token); + if (workspaceEdit) { + const result = (0, rename_1$3.embeddedEditToSourceEdit)(workspaceEdit, context.documents, 'fileName'); + if (result?.documentChanges) { + result.documentChanges = dedupe.withDocumentChanges(result.documentChanges); + } + return result; + } + } + }; +} +fileRename$2.register = register$C; + +var hover$2 = {}; + +var validation = {}; + +(function (exports) { + Object.defineProperty(exports, "__esModule", { value: true }); + exports.register = exports.errorMarkups = exports.updateRange = void 0; + const types_1 = types$4; + const common_1 = common$1; + const dedupe = dedupe$9; + const featureWorkers_1 = featureWorkers; + const cancellation_1 = cancellation; + function updateRange(range, change) { + if (!updatePosition(range.start, change, false)) { + return; + } + if (!updatePosition(range.end, change, true)) { + return; + } + if (range.end.line === range.start.line && range.end.character <= range.start.character) { + range.end.character++; + } + return range; + } + exports.updateRange = updateRange; + function updatePosition(position, change, isEnd) { + if (change.range.end.line > position.line) { + if (change.newEnd.line > position.line) { + // No change + return true; + } + else if (change.newEnd.line === position.line) { + position.character = Math.min(position.character, change.newEnd.character); + return true; + } + else if (change.newEnd.line < position.line) { + position.line = change.newEnd.line; + position.character = change.newEnd.character; + return true; + } + } + else if (change.range.end.line === position.line) { + const characterDiff = change.newEnd.character - change.range.end.character; + if (position.character >= change.range.end.character) { + if (change.newEnd.line !== change.range.end.line) { + position.line = change.newEnd.line; + position.character = change.newEnd.character + position.character - change.range.end.character; + } + else { + if (isEnd ? change.range.end.character < position.character : change.range.end.character <= position.character) { + position.character += characterDiff; + } + else { + const offset = change.range.end.character - position.character; + if (-characterDiff > offset) { + position.character += characterDiff + offset; + } + } + } + return true; + } + else { + if (change.newEnd.line === change.range.end.line) { + const offset = change.range.end.character - position.character; + if (-characterDiff > offset) { + position.character += characterDiff + offset; + } + } + else if (change.newEnd.line < change.range.end.line) { + position.line = change.newEnd.line; + position.character = change.newEnd.character; + } + else ; + return true; + } + } + else if (change.range.end.line < position.line) { + position.line += change.newEnd.line - change.range.end.line; + return true; + } + return false; + } + exports.errorMarkups = {}; + function register(context) { + const lastResponses = new Map(); + const cacheMaps = { + semantic: new Map(), + syntactic: new Map(), + semantic_rules: new Map(), + syntax_rules: new Map(), + format_rules: new Map(), + }; + return async (uri, mode, token = cancellation_1.NoneCancellationToken, response) => { + const newDocument = context.getTextDocument(uri); + if (!newDocument) { + return []; + } + const lastResponse = lastResponses.get(uri) ?? lastResponses.set(uri, { + semantic: { errors: [] }, + syntactic: { errors: [] }, + semantic_rules: { errors: [] }, + syntax_rules: { errors: [] }, + format_rules: { errors: [] }, + }).get(uri); + const newSnapshot = context.host.getScriptSnapshot(context.env.uriToFileName(uri)); + let updateCacheRangeFailed = false; + let errorsUpdated = false; + let lastCheckCancelAt = 0; + for (const cache of Object.values(lastResponse)) { + const oldSnapshot = cache.snapshot; + const oldDocument = cache.document; + const change = oldSnapshot ? newSnapshot?.getChangeRange(oldSnapshot) : undefined; + cache.snapshot = newSnapshot; + cache.document = newDocument; + if (!updateCacheRangeFailed && newDocument && oldSnapshot && oldDocument && newSnapshot && change) { + const changeRange = { + range: { + start: oldDocument.positionAt(change.span.start), + end: oldDocument.positionAt(change.span.start + change.span.length), + }, + newEnd: newDocument.positionAt(change.span.start + change.newLength), + }; + for (const error of cache.errors) { + if (!updateRange(error.range, changeRange)) { + updateCacheRangeFailed = true; + break; + } + } + } + } + if (mode === 'all' || mode === 'syntactic') { + await lintWorker(types_1.RuleType.Format, cacheMaps.format_rules, lastResponse.format_rules); + await doResponse(); + await lintWorker(types_1.RuleType.Syntax, cacheMaps.syntax_rules, lastResponse.syntax_rules); + await doResponse(); + await worker('provideDiagnostics', cacheMaps.syntactic, lastResponse.syntactic); + await doResponse(); + } + if (mode === 'all' || mode === 'semantic') { + await lintWorker(types_1.RuleType.Semantic, cacheMaps.semantic_rules, lastResponse.semantic_rules); + await doResponse(); + await worker('provideSemanticDiagnostics', cacheMaps.semantic, lastResponse.semantic); + } + return await collectErrors(); + async function doResponse() { + if (errorsUpdated && !updateCacheRangeFailed) { + response?.(await collectErrors()); + errorsUpdated = false; + } + } + async function collectErrors() { + const errors = Object.values(lastResponse).flatMap(({ errors }) => errors); + exports.errorMarkups[uri] = []; + for (const error of errors) { + for (const service of Object.values(context.services)) { + const markup = await service.provideDiagnosticMarkupContent?.(error, token); + if (markup) { + exports.errorMarkups[uri].push({ error, markup }); + } + } + } + return errors; + } + async function lintWorker(ruleType, cacheMap, cache) { + const result = await (0, featureWorkers_1.ruleWorker)(context, ruleType, uri, file => ruleType === types_1.RuleType.Format ? !!file.capabilities.documentFormatting : !!file.capabilities.diagnostic, async (ruleId, rule, lintDocument, ruleCtx) => { + if (token) { + if (Date.now() - lastCheckCancelAt >= 5) { + await (0, common_1.sleep)(5); // wait for LSP event polling + lastCheckCancelAt = Date.now(); + } + if (token.isCancellationRequested) { + return; + } + } + const pluginCache = cacheMap.get(ruleId) ?? cacheMap.set(ruleId, new Map()).get(ruleId); + const cache = pluginCache.get(lintDocument.uri); + const projectVersion = (ruleType === types_1.RuleType.Semantic) ? context.host.getProjectVersion?.() : undefined; + if (ruleType === types_1.RuleType.Semantic) { + if (cache && cache.documentVersion === lintDocument.version && cache.projectVersion === projectVersion) { + return cache.errors; + } + } + else { + if (cache && cache.documentVersion === lintDocument.version) { + return cache.errors; + } + } + const reportResults = []; + ruleCtx.report = (error, ...fixes) => { + error.message ||= 'No message.'; + error.source ||= 'rule'; + error.code ||= ruleId; + reportResults.push([error, ...fixes]); + }; + try { + await rule.run(lintDocument, ruleCtx); + } + catch (err) { + console.warn(`[volar/rules-api] ${ruleId} ${ruleType} error.`); + console.warn(err); + } + context.ruleFixes ??= {}; + context.ruleFixes[lintDocument.uri] ??= {}; + context.ruleFixes[lintDocument.uri][ruleId] ??= {}; + reportResults?.forEach(([error, ...fixes], index) => { + context.ruleFixes[lintDocument.uri][ruleId][index] = [error, fixes]; + error.data = { + uri, + version: newDocument.version, + type: 'rule', + isFormat: ruleType === types_1.RuleType.Format, + serviceOrRuleId: ruleId, + original: { + data: error.data, + }, + ruleFixIndex: index, + documentUri: lintDocument.uri, + }; + }); + errorsUpdated = true; + const errors = reportResults.map(reportResult => reportResult[0]); + pluginCache.set(lintDocument.uri, { + documentVersion: lintDocument.version, + errors, + projectVersion, + }); + return errors; + }, ruleType === types_1.RuleType.Format ? transformFormatErrorRange : transformErrorRange, arr => arr.flat()); + if (result) { + cache.errors = result; + cache.snapshot = newSnapshot; + } + } + async function worker(api, cacheMap, cache) { + const result = await (0, featureWorkers_1.languageFeatureWorker)(context, uri, true, function* (arg, _, file) { + if (file.capabilities.diagnostic) { + yield arg; + } + }, async (service, document) => { + if (token) { + if (Date.now() - lastCheckCancelAt >= 5) { + await (0, common_1.sleep)(5); // waiting LSP event polling + lastCheckCancelAt = Date.now(); + } + if (token.isCancellationRequested) { + return; + } + } + const serviceId = Object.keys(context.services).find(key => context.services[key] === service); + const serviceCache = cacheMap.get(serviceId) ?? cacheMap.set(serviceId, new Map()).get(serviceId); + const cache = serviceCache.get(document.uri); + const projectVersion = api === 'provideSemanticDiagnostics' ? context.host.getProjectVersion?.() : undefined; + if (api === 'provideSemanticDiagnostics') { + if (cache && cache.documentVersion === document.version && cache.projectVersion === projectVersion) { + return cache.errors; + } + } + else { + if (cache && cache.documentVersion === document.version) { + return cache.errors; + } + } + const errors = await service[api]?.(document, token); + errors?.forEach(error => { + error.data = { + uri, + version: newDocument.version, + type: 'service', + serviceOrRuleId: serviceId, + isFormat: false, + original: { + data: error.data, + }, + ruleFixIndex: 0, + documentUri: document.uri, + }; + }); + errorsUpdated = true; + serviceCache.set(document.uri, { + documentVersion: document.version, + errors, + projectVersion, + }); + return errors; + }, transformErrorRange, arr => dedupe.withDiagnostics(arr.flat())); + if (result) { + cache.errors = result; + cache.snapshot = newSnapshot; + } + } + }; + function transformFormatErrorRange(errors, map) { + return transformErrorRangeBase(errors, map, () => true); + } + function transformErrorRange(errors, map) { + return transformErrorRangeBase(errors, map, data => typeof data.diagnostic === 'object' ? data.diagnostic.shouldReport() : !!data.diagnostic); + } + function transformErrorRangeBase(errors, map, filter) { + const result = []; + for (const error of errors) { + // clone it to avoid modify cache + let _error = { ...error }; + if (map) { + const range = map.toSourceRange(error.range, filter); + if (!range) { + continue; + } + _error.range = range; + } + if (_error.relatedInformation) { + const relatedInfos = []; + for (const info of _error.relatedInformation) { + if (context.documents.isVirtualFileUri(info.location.uri)) { + for (const [_, map] of context.documents.getMapsByVirtualFileUri(info.location.uri)) { + const range = map.toSourceRange(info.location.range, filter); + if (range) { + relatedInfos.push({ + location: { + uri: map.sourceFileDocument.uri, + range, + }, + message: info.message, + }); + } + } + } + else { + relatedInfos.push(info); + } + } + _error.relatedInformation = relatedInfos; + } + result.push(_error); + } + return result; + } + } + exports.register = register; + +} (validation)); + +Object.defineProperty(hover$2, "__esModule", { value: true }); +hover$2.register = void 0; +const featureWorkers_1$9 = featureWorkers; +const common_1$9 = common$1; +const validation_1 = validation; +const cancellation_1$c = cancellation; +function register$B(context) { + return async (uri, position, token = cancellation_1$c.NoneCancellationToken) => { + let hover = await (0, featureWorkers_1$9.languageFeatureWorker)(context, uri, position, (position, map) => map.toGeneratedPositions(position, data => !!data.hover), (service, document, position) => { + if (token.isCancellationRequested) + return; + return service.provideHover?.(document, position, token); + }, (item, map) => { + if (!map || !item.range) + return item; + const range = map.toSourceRange(item.range); + if (range) { + item.range = range; + return item; + } + }, (hovers) => ({ + contents: { + kind: 'markdown', + value: hovers.map(getHoverTexts).flat().join('\n\n---\n\n'), + }, + range: hovers.find(hover => hover.range && (0, common_1$9.isInsideRange)(hover.range, { start: position, end: position }))?.range ?? hovers[0].range, + })); + const markups = validation_1.errorMarkups[uri]; + if (markups) { + for (const errorAndMarkup of markups) { + if ((0, common_1$9.isInsideRange)(errorAndMarkup.error.range, { start: position, end: position })) { + hover ??= { + contents: { + kind: 'markdown', + value: '', + }, + }; + hover.range = errorAndMarkup.error.range; + if (typeof hover.contents !== 'object' || typeof hover.contents !== 'string') { + hover.contents = { + kind: 'markdown', + value: hover.contents, + }; + } + if (hover.contents.value) { + hover.contents.value += '\n\n---\n\n'; + } + hover.contents.value += errorAndMarkup.markup.value; + } + } + } + return hover; + }; +} +hover$2.register = register$B; +function getHoverTexts(hover) { + if (typeof hover.contents === 'string') { + return [hover.contents]; + } + if (Array.isArray(hover.contents)) { + return hover.contents.map(content => { + if (typeof content === 'string') { + return content; + } + return `\`\`\`${content.language}\n${content.value}\n\`\`\``; + }); + } + if ('kind' in hover.contents) { + return [hover.contents.value]; + } + return [`\`\`\`${hover.contents.language}\n${hover.contents.value}\n\`\`\``]; +} + +var inlayHints$2 = {}; + +Object.defineProperty(inlayHints$2, "__esModule", { value: true }); +inlayHints$2.register = void 0; +const transformer$4 = transformer$8; +const common_1$8 = common$1; +const featureWorkers_1$8 = featureWorkers; +const cancellation_1$b = cancellation; +function register$A(context) { + return async (uri, range, token = cancellation_1$b.NoneCancellationToken) => { + const document = context.getTextDocument(uri); + if (!document) + return; + const offsetRange = { + start: document.offsetAt(range.start), + end: document.offsetAt(range.end), + }; + return (0, featureWorkers_1$8.languageFeatureWorker)(context, uri, range, (_arg, map, file) => { + /** + * copy from ./codeActions.ts + */ + if (!file.capabilities.inlayHint) + return []; + let minStart; + let maxEnd; + for (const mapping of map.map.mappings) { + const overlapRange = (0, common_1$8.getOverlapRange)(offsetRange.start, offsetRange.end, mapping.sourceRange[0], mapping.sourceRange[1]); + if (overlapRange) { + const start = map.map.toGeneratedOffset(overlapRange.start)?.[0]; + const end = map.map.toGeneratedOffset(overlapRange.end)?.[0]; + if (start !== undefined && end !== undefined) { + minStart = minStart === undefined ? start : Math.min(start, minStart); + maxEnd = maxEnd === undefined ? end : Math.max(end, maxEnd); + } + } + } + if (minStart !== undefined && maxEnd !== undefined) { + return [{ + start: map.virtualFileDocument.positionAt(minStart), + end: map.virtualFileDocument.positionAt(maxEnd), + }]; + } + return []; + }, async (service, document, arg) => { + if (token.isCancellationRequested) + return; + const hints = await service.provideInlayHints?.(document, arg, token); + hints?.forEach(link => { + link.data = { + uri, + original: { + data: link.data, + }, + serviceId: Object.keys(context.services).find(key => context.services[key] === service), + }; + }); + return hints; + }, (inlayHints, map) => inlayHints.map((_inlayHint) => { + if (!map) + return _inlayHint; + const position = map.toSourcePosition(_inlayHint.position, data => !!data.semanticTokens /* todo */); + const edits = _inlayHint.textEdits + ?.map(textEdit => transformer$4.asTextEdit(textEdit, range => map.toSourceRange(range), map.virtualFileDocument)) + .filter(common_1$8.notEmpty); + if (position) { + return { + ..._inlayHint, + position, + textEdits: edits, + }; + } + }).filter(common_1$8.notEmpty), arr => arr.flat()); + }; +} +inlayHints$2.register = register$A; + +var inlayHintResolve$1 = {}; + +Object.defineProperty(inlayHintResolve$1, "__esModule", { value: true }); +inlayHintResolve$1.register = void 0; +const cancellation_1$a = cancellation; +function register$z(context) { + return async (item, token = cancellation_1$a.NoneCancellationToken) => { + const data = item.data; + if (data) { + const service = context.services[data.serviceId]; + if (!service.resolveInlayHint) + return item; + Object.assign(item, data.original); + item = await service.resolveInlayHint(item, token); + } + return item; + }; +} +inlayHintResolve$1.register = register$z; + +var renamePrepare$1 = {}; + +Object.defineProperty(renamePrepare$1, "__esModule", { value: true }); +renamePrepare$1.register = void 0; +const featureWorkers_1$7 = featureWorkers; +const cancellation_1$9 = cancellation; +function register$y(context) { + return (uri, position, token = cancellation_1$9.NoneCancellationToken) => { + return (0, featureWorkers_1$7.languageFeatureWorker)(context, uri, position, (position, map) => map.toGeneratedPositions(position, data => typeof data.rename === 'object' ? !!data.rename.normalize : !!data.rename), (service, document, position) => { + if (token.isCancellationRequested) + return; + return service.provideRenameRange?.(document, position, token); + }, (item, map) => { + if (!map) { + return item; + } + if ('start' in item && 'end' in item) { + return map.toSourceRange(item); + } + return item; + }, prepares => { + for (const prepare of prepares) { + if ('start' in prepare && 'end' in prepare) { + return prepare; // if has any valid range, ignore other errors + } + } + return prepares[0]; + }); + }; +} +renamePrepare$1.register = register$y; + +var signatureHelp$2 = {}; + +Object.defineProperty(signatureHelp$2, "__esModule", { value: true }); +signatureHelp$2.register = void 0; +const featureWorkers_1$6 = featureWorkers; +const cancellation_1$8 = cancellation; +function register$x(context) { + return (uri, position, signatureHelpContext = { + triggerKind: 1, + isRetrigger: false, + }, token = cancellation_1$8.NoneCancellationToken) => { + return (0, featureWorkers_1$6.languageFeatureWorker)(context, uri, position, (position, map) => map.toGeneratedPositions(position, data => !!data.completion), (service, document, position) => { + if (token.isCancellationRequested) + return; + if (signatureHelpContext?.triggerKind === 2 + && signatureHelpContext.triggerCharacter + && !(signatureHelpContext.isRetrigger + ? service.signatureHelpRetriggerCharacters + : service.signatureHelpTriggerCharacters)?.includes(signatureHelpContext.triggerCharacter)) { + return; + } + return service.provideSignatureHelp?.(document, position, signatureHelpContext, token); + }, (data) => data); + }; +} +signatureHelp$2.register = register$x; + +var workspaceSymbols = {}; + +Object.defineProperty(workspaceSymbols, "__esModule", { value: true }); +workspaceSymbols.register = void 0; +const transformer$3 = transformer$8; +const common_1$7 = common$1; +const cancellation_1$7 = cancellation; +function register$w(context) { + return async (query, token = cancellation_1$7.NoneCancellationToken) => { + const symbolsList = []; + for (const service of Object.values(context.services)) { + if (token.isCancellationRequested) + break; + if (!service.provideWorkspaceSymbols) + continue; + const embeddedSymbols = await service.provideWorkspaceSymbols(query, token); + if (!embeddedSymbols) + continue; + const symbols = embeddedSymbols.map(symbol => transformer$3.asWorkspaceSymbol(symbol, loc => { + if (context.documents.isVirtualFileUri(loc.uri)) { + for (const [_, map] of context.documents.getMapsByVirtualFileUri(loc.uri)) { + const range = map.toSourceRange(loc.range); + if (range) { + return { uri: map.sourceFileDocument.uri, range }; + } + } + } + else { + return loc; + } + })).filter(common_1$7.notEmpty); + symbolsList.push(symbols); + } + return symbolsList.flat(); + }; +} +workspaceSymbols.register = register$w; + +var colorPresentations$1 = {}; + +Object.defineProperty(colorPresentations$1, "__esModule", { value: true }); +colorPresentations$1.register = void 0; +const featureWorkers_1$5 = featureWorkers; +const common_1$6 = common$1; +const cancellation_1$6 = cancellation; +function register$v(context) { + return (uri, color, range, token = cancellation_1$6.NoneCancellationToken) => { + return (0, featureWorkers_1$5.languageFeatureWorker)(context, uri, range, (range, map, file) => { + if (file.capabilities.documentSymbol) // TODO: add color capability setting + return map.toGeneratedRanges(range); + return []; + }, (service, document, range) => { + if (token.isCancellationRequested) + return; + return service.provideColorPresentations?.(document, color, range, token); + }, (data, map) => map ? data.map(cp => { + if (cp.textEdit) { + const range = map.toSourceRange(cp.textEdit.range); + if (!range) + return undefined; + cp.textEdit.range = range; + } + if (cp.additionalTextEdits) { + for (const textEdit of cp.additionalTextEdits) { + const range = map.toSourceRange(textEdit.range); + if (!range) + return undefined; + textEdit.range = range; + } + } + return cp; + }).filter(common_1$6.notEmpty) : data); + }; +} +colorPresentations$1.register = register$v; + +var documentColors$1 = {}; + +Object.defineProperty(documentColors$1, "__esModule", { value: true }); +documentColors$1.register = void 0; +const featureWorkers_1$4 = featureWorkers; +const common_1$5 = common$1; +const cancellation_1$5 = cancellation; +function register$u(context) { + return (uri, token = cancellation_1$5.NoneCancellationToken) => { + return (0, featureWorkers_1$4.documentFeatureWorker)(context, uri, file => !!file.capabilities.documentSymbol, // TODO: add color capability setting + (service, document) => { + if (token.isCancellationRequested) + return; + return service.provideDocumentColors?.(document, token); + }, (data, map) => map ? data.map(color => { + const range = map.toSourceRange(color.range); + if (range) { + return { + range, + color: color.color, + }; + } + }).filter(common_1$5.notEmpty) : data, arr => arr.flat()); + }; +} +documentColors$1.register = register$u; + +var documentSymbols$1 = {}; + +Object.defineProperty(documentSymbols$1, "__esModule", { value: true }); +documentSymbols$1.register = void 0; +const featureWorkers_1$3 = featureWorkers; +const transformer$2 = transformer$8; +const common_1$4 = common$1; +const cancellation_1$4 = cancellation; +function register$t(context) { + return (uri, token = cancellation_1$4.NoneCancellationToken) => { + return (0, featureWorkers_1$3.documentFeatureWorker)(context, uri, file => !!file.capabilities.documentSymbol, async (service, document) => { + if (token.isCancellationRequested) + return; + return service.provideDocumentSymbols?.(document, token); + }, (data, map) => map + ? data + .map(symbol => transformer$2.asDocumentSymbol(symbol, range => map.toSourceRange(range))) + .filter(common_1$4.notEmpty) + : data, results => { + for (let i = 0; i < results.length; i++) { + for (let j = 0; j < results.length; j++) { + if (i === j) + continue; + results[i] = results[i].filter(child => { + for (const parent of results[j]) { + if ((0, common_1$4.isInsideRange)(parent.range, child.range)) { + parent.children ??= []; + parent.children.push(child); + return false; + } + } + return true; + }); + } + } + return results.flat(); + }); + }; +} +documentSymbols$1.register = register$t; + +var foldingRanges$2 = {}; + +Object.defineProperty(foldingRanges$2, "__esModule", { value: true }); +foldingRanges$2.register = void 0; +const featureWorkers_1$2 = featureWorkers; +const transformer$1 = transformer$8; +const cancellation_1$3 = cancellation; +function register$s(context) { + return (uri, token = cancellation_1$3.NoneCancellationToken) => { + return (0, featureWorkers_1$2.documentFeatureWorker)(context, uri, file => !!file.capabilities.foldingRange, (service, document) => { + if (token.isCancellationRequested) + return; + return service.provideFoldingRanges?.(document, token); + }, (data, map) => map ? transformer$1.asFoldingRanges(data, range => map.toSourceRange(range)) : data, arr => arr.flat()); + }; +} +foldingRanges$2.register = register$s; + +var format$7 = {}; + +Object.defineProperty(format$7, "__esModule", { value: true }); +format$7.register = void 0; +const language_core_1$k = languageCore; +const vscode_languageserver_textdocument_1$1 = require$$2$2; +const common_1$3 = common$1; +const cancellation_1$2 = cancellation; +const documents_1$1 = documents; +function register$r(context) { + let fakeVersion = 0; + return async (uri, options, range, onTypeParams, token = cancellation_1$2.NoneCancellationToken) => { + let document = context.getTextDocument(uri); + if (!document) + return; + range ??= { + start: document.positionAt(0), + end: document.positionAt(document.getText().length), + }; + const source = context.documents.getSourceByUri(document.uri); + if (!source) { + return onTypeParams + ? (await tryFormat(document, onTypeParams.position, onTypeParams.ch))?.edits + : (await tryFormat(document, range, undefined))?.edits; + } + const initialIndentLanguageId = await context.env.getConfiguration?.('volar.format.initialIndent') ?? { html: true }; + let tempSourceSnapshot = source.snapshot; + const tempVirtualFile = source.language.createVirtualFile(source.fileName, source.snapshot, source.languageId); + const originalDocument = document; + let level = 0; + while (true) { + const embeddedFiles = getEmbeddedFilesByLevel(tempVirtualFile, level++); + if (embeddedFiles.length === 0) + break; + // if (level===2) continue; + let edits = []; + const toPatchIndent = []; + for (const file of embeddedFiles) { + if (!file.capabilities.documentFormatting) + continue; + const isCodeBlock = file.mappings.length === 1 && file.mappings[0].generatedRange[0] === 0 && file.mappings[0].generatedRange[1] === file.snapshot.getLength(); + if (onTypeParams && !isCodeBlock) + continue; + const docMap = createDocMap(file, source.fileName, tempSourceSnapshot); + if (!docMap) + continue; + let embeddedCodeResult; + if (onTypeParams) { + const embeddedPosition = docMap.toGeneratedPosition(onTypeParams.position); + if (embeddedPosition) { + embeddedCodeResult = await tryFormat(docMap.virtualFileDocument, embeddedPosition, onTypeParams.ch); + } + } + else { + embeddedCodeResult = await tryFormat(docMap.virtualFileDocument, { + start: docMap.virtualFileDocument.positionAt(0), + end: docMap.virtualFileDocument.positionAt(docMap.virtualFileDocument.getText().length), + }); + } + if (!embeddedCodeResult) + continue; + toPatchIndent.push({ + virtualFileName: file.fileName, + isCodeBlock, + service: embeddedCodeResult.service, + }); + for (const textEdit of embeddedCodeResult.edits) { + const range = docMap.toSourceRange(textEdit.range); + if (range) { + edits.push({ + newText: textEdit.newText, + range, + }); + } + } + } + edits = edits.filter(edit => (0, common_1$3.isInsideRange)(range, edit.range)); + if (edits.length > 0) { + const newText = vscode_languageserver_textdocument_1$1.TextDocument.applyEdits(document, edits); + document = vscode_languageserver_textdocument_1$1.TextDocument.create(document.uri, document.languageId, document.version + 1, newText); + tempSourceSnapshot = (0, common_1$3.stringToSnapshot)(newText); + source.language.updateVirtualFile(tempVirtualFile, tempSourceSnapshot); + } + if (level > 1) { + const baseIndent = options.insertSpaces ? ' '.repeat(options.tabSize) : '\t'; + const editLines = new Set(); + if (onTypeParams) { + for (const edit of edits) { + for (let line = edit.range.start.line; line <= edit.range.end.line; line++) { + editLines.add(line); + } + } + } + for (const item of toPatchIndent) { + let virtualFile; + (0, language_core_1$k.forEachEmbeddedFile)(tempVirtualFile, file => { + if (file.fileName === item.virtualFileName) { + virtualFile = file; + } + }); + const docMap = createDocMap(virtualFile, source.fileName, tempSourceSnapshot); + if (!docMap) + continue; + const indentSensitiveLines = new Set(); + for (const service of item.service.provideFormattingIndentSensitiveLines ? [item.service] : Object.values(context.services)) { + if (token.isCancellationRequested) + break; + if (service.provideFormattingIndentSensitiveLines) { + const lines = await service.provideFormattingIndentSensitiveLines(docMap.virtualFileDocument, token); + if (lines) { + for (const line of lines) { + const sourceLine = docMap.toSourcePosition({ line: line, character: 0 })?.line; + if (sourceLine !== undefined) { + indentSensitiveLines.add(sourceLine); + } + } + } + } + } + let indentEdits = patchIndents(document, item.isCodeBlock, docMap.map, initialIndentLanguageId[docMap.virtualFileDocument.languageId] ? baseIndent : ''); + indentEdits = indentEdits.filter(edit => { + for (let line = edit.range.start.line; line <= edit.range.end.line; line++) { + if (indentSensitiveLines.has(line) && !edit.newText.includes('\n')) { + return false; + } + if (onTypeParams && !editLines.has(line)) { + return false; + } + if (!(0, common_1$3.isInsideRange)(range, edit.range)) { + return false; + } + } + return true; + }); + if (indentEdits.length > 0) { + const newText = vscode_languageserver_textdocument_1$1.TextDocument.applyEdits(document, indentEdits); + document = vscode_languageserver_textdocument_1$1.TextDocument.create(document.uri, document.languageId, document.version + 1, newText); + tempSourceSnapshot = (0, common_1$3.stringToSnapshot)(newText); + source.language.updateVirtualFile(tempVirtualFile, tempSourceSnapshot); + } + } + } + } + if (document.getText() === originalDocument.getText()) + return; + const editRange = { + start: originalDocument.positionAt(0), + end: originalDocument.positionAt(originalDocument.getText().length), + }; + const textEdit = { + range: editRange, + newText: document.getText(), + }; + return [textEdit]; + function getEmbeddedFilesByLevel(rootFile, level) { + const embeddedFilesByLevel = [[rootFile]]; + while (true) { + if (embeddedFilesByLevel.length > level) + return embeddedFilesByLevel[level]; + let nextLevel = []; + for (const file of embeddedFilesByLevel[embeddedFilesByLevel.length - 1]) { + nextLevel = nextLevel.concat(file.embeddedFiles); + } + embeddedFilesByLevel.push(nextLevel); + } + } + async function tryFormat(document, range, ch) { + let formatRange = range; + for (const service of Object.values(context.services)) { + if (token.isCancellationRequested) + break; + let edits; + try { + if (ch !== undefined && 'line' in formatRange && 'character' in formatRange) { + if (service.autoFormatTriggerCharacters?.includes(ch)) { + edits = await service.provideOnTypeFormattingEdits?.(document, formatRange, ch, options, token); + } + } + else if (ch === undefined && 'start' in formatRange && 'end' in formatRange) { + edits = await service.provideDocumentFormattingEdits?.(document, formatRange, options, token); + } + } + catch (err) { + console.warn(err); + } + if (!edits) + continue; + return { + service, + edits, + }; + } + } + }; + function createDocMap(file, _sourceFileName, _sourceSnapshot) { + const maps = (0, language_core_1$k.updateVirtualFileMaps)(file, (sourceFileName) => { + if (!sourceFileName) { + return [_sourceFileName, _sourceSnapshot]; + } + }); + if (maps.has(_sourceFileName) && maps.get(_sourceFileName)[0] === _sourceSnapshot) { + const [_, map] = maps.get(_sourceFileName); + const version = fakeVersion++; + return new documents_1$1.SourceMapWithDocuments(vscode_languageserver_textdocument_1$1.TextDocument.create(context.env.fileNameToUri(_sourceFileName), context.host.getLanguageId?.(_sourceFileName) ?? (0, common_1$3.resolveCommonLanguageId)(context.env.fileNameToUri(_sourceFileName)), version, _sourceSnapshot.getText(0, _sourceSnapshot.getLength())), vscode_languageserver_textdocument_1$1.TextDocument.create(context.env.fileNameToUri(file.fileName), context.host.getLanguageId?.(file.fileName) ?? (0, common_1$3.resolveCommonLanguageId)(context.env.fileNameToUri(file.fileName)), version, file.snapshot.getText(0, file.snapshot.getLength())), map); + } + } +} +format$7.register = register$r; +function patchIndents(document, isCodeBlock, map, initialIndent) { + const indentTextEdits = []; + if (!isCodeBlock) { + initialIndent = ''; + } + for (let i = 0; i < map.mappings.length; i++) { + const mapping = map.mappings[i]; + const firstLineIndent = getBaseIndent(mapping.sourceRange[0]); + const text = document.getText().substring(mapping.sourceRange[0], mapping.sourceRange[1]); + const lines = text.split('\n'); + const baseIndent = firstLineIndent + initialIndent; + let lineOffset = lines[0].length + 1; + let insertedFinalNewLine = false; + if (!text.trim()) + continue; + if (isCodeBlock && text.trimStart().length === text.length) { + indentTextEdits.push({ + newText: '\n' + baseIndent, + range: { + start: document.positionAt(mapping.sourceRange[0]), + end: document.positionAt(mapping.sourceRange[0]), + }, + }); + } + if (isCodeBlock && text.trimEnd().length === text.length) { + indentTextEdits.push({ + newText: '\n', + range: { + start: document.positionAt(mapping.sourceRange[1]), + end: document.positionAt(mapping.sourceRange[1]), + }, + }); + insertedFinalNewLine = true; + } + if (baseIndent && lines.length > 1) { + for (let i = 1; i < lines.length; i++) { + if (lines[i].trim() || i === lines.length - 1) { + const isLastLine = i === lines.length - 1 && !insertedFinalNewLine; + indentTextEdits.push({ + newText: isLastLine ? firstLineIndent : baseIndent, + range: { + start: document.positionAt(mapping.sourceRange[0] + lineOffset), + end: document.positionAt(mapping.sourceRange[0] + lineOffset), + }, + }); + } + lineOffset += lines[i].length + 1; + } + } + } + return indentTextEdits; + function getBaseIndent(pos) { + const startPos = document.positionAt(pos); + const startLineText = document.getText({ start: { line: startPos.line, character: 0 }, end: startPos }); + return startLineText.substring(0, startLineText.length - startLineText.trimStart().length); + } +} + +var linkedEditingRanges$1 = {}; + +Object.defineProperty(linkedEditingRanges$1, "__esModule", { value: true }); +linkedEditingRanges$1.register = void 0; +const featureWorkers_1$1 = featureWorkers; +const common_1$2 = common$1; +const cancellation_1$1 = cancellation; +function register$q(context) { + return (uri, position, token = cancellation_1$1.NoneCancellationToken) => { + return (0, featureWorkers_1$1.languageFeatureWorker)(context, uri, position, (position, map) => map.toGeneratedPositions(position, data => !!data.completion), (service, document, position) => { + if (token.isCancellationRequested) + return; + return service.provideLinkedEditingRanges?.(document, position, token); + }, (data, map) => map ? ({ + wordPattern: data.wordPattern, + ranges: data.ranges.map(range => map.toSourceRange(range)).filter(common_1$2.notEmpty), + }) : data); + }; +} +linkedEditingRanges$1.register = register$q; + +var selectionRanges$2 = {}; + +Object.defineProperty(selectionRanges$2, "__esModule", { value: true }); +selectionRanges$2.register = void 0; +const featureWorkers_1 = featureWorkers; +const transformer = transformer$8; +const common_1$1 = common$1; +const cancellation_1 = cancellation; +function register$p(context) { + return (uri, positions, token = cancellation_1.NoneCancellationToken) => { + return (0, featureWorkers_1.languageFeatureWorker)(context, uri, positions, (positions, map, file) => { + if (file.capabilities.documentFormatting) { + const result = positions + .map(position => map.toGeneratedPosition(position)) + .filter(common_1$1.notEmpty); + if (result.length) { + return [result]; + } + } + return []; + }, (service, document, positions) => { + if (token.isCancellationRequested) + return; + return service.provideSelectionRanges?.(document, positions, token); + }, (item, map) => map ? transformer.asSelectionRanges(item, range => map.toSourceRange(range)) : item, results => { + const result = []; + for (let i = 0; i < positions.length; i++) { + let pluginResults = []; + for (const ranges of results) { + pluginResults.push(ranges[i]); + } + pluginResults = pluginResults.sort((a, b) => { + if ((0, common_1$1.isInsideRange)(a.range, b.range)) { + return 1; + } + if ((0, common_1$1.isInsideRange)(b.range, a.range)) { + return -1; + } + return 0; + }); + for (let i = 1; i < pluginResults.length; i++) { + let root = pluginResults[i - 1]; + while (root.parent) { + root = root.parent; + } + let parent = pluginResults[i]; + while (parent && !(0, common_1$1.isInsideRange)(parent.range, root.range)) { + parent = parent.parent; + } + if (parent) { + root.parent = parent; + } + } + result.push(pluginResults[0]); + } + return result; + }); + }; +} +selectionRanges$2.register = register$p; + +Object.defineProperty(baseLanguageService, "__esModule", { value: true }); +baseLanguageService.createLanguageService = void 0; +const language_core_1$j = languageCore; +const vscode_languageserver_textdocument_1 = require$$2$2; +const documents_1 = documents; +const autoInsert = autoInsert$1; +const callHierarchy$1 = callHierarchy$2; +const codeActionResolve$1 = codeActionResolve$2; +const codeActions = codeActions$1; +const codeLens = codeLens$1; +const codeLensResolve = codeLensResolve$1; +const completions = complete; +const completionResolve = completeResolve; +const definition$1 = definition$2; +const documentHighlight$1 = documentHighlights; +const documentLink = documentLinks; +const documentLinkResolve = documentLinkResolve$1; +const semanticTokens$1 = documentSemanticTokens; +const fileReferences$1 = fileReferences$2; +const fileRename$1 = fileRename$2; +const hover$1 = hover$2; +const inlayHints$1 = inlayHints$2; +const inlayHintResolve = inlayHintResolve$1; +const references$1 = references$3; +const rename$1 = rename$2; +const renamePrepare = renamePrepare$1; +const signatureHelp$1 = signatureHelp$2; +const diagnostics$1 = validation; +const workspaceSymbol$1 = workspaceSymbols; +const colorPresentations = colorPresentations$1; +const documentColors = documentColors$1; +const documentSymbols = documentSymbols$1; +const foldingRanges$1 = foldingRanges$2; +const format$6 = format$7; +const linkedEditingRanges = linkedEditingRanges$1; +const selectionRanges$1 = selectionRanges$2; +const common_1 = common$1; +function createLanguageService$2(modules, env, config, languageHost) { + if (languageHost.workspacePath.indexOf('\\') >= 0 || languageHost.rootPath.indexOf('\\') >= 0) { + throw new Error('Volar: Current directory must be posix style.'); + } + if (languageHost.getScriptFileNames().some(fileName => fileName.indexOf('\\') >= 0)) { + throw new Error('Volar: Script file names must be posix style.'); + } + const languageContext = (0, language_core_1$j.createLanguageContext)(languageHost, Object.values(config.languages ?? {}).filter(common_1.notEmpty)); + const context = createLanguageServicePluginContext(modules, env, config, languageHost, languageContext); + return createLanguageServiceBase(context); +} +baseLanguageService.createLanguageService = createLanguageService$2; +function createLanguageServicePluginContext(modules, env, config, host, languageContext) { + const textDocumentMapper = (0, documents_1.createDocumentsAndSourceMaps)(env, host, languageContext.virtualFiles); + const documents = new WeakMap(); + const documentVersions = new Map(); + const context = { + ...languageContext, + env, + inject: (key, ...args) => { + for (const service of Object.values(context.services)) { + const provide = service.provide?.[key]; + if (provide) { + return provide(...args); + } + } + throw `No service provide ${key}`; + }, + rules: config.rules ?? {}, + services: {}, + documents: textDocumentMapper, + commands: { + rename: { + create(uri, position) { + const source = toSourceLocation(uri, position, data => typeof data.rename === 'object' ? !!data.rename.normalize : !!data.rename); + if (!source) { + return; + } + return { + title: '', + command: 'editor.action.rename', + arguments: [ + source.uri, + source.position, + ], + }; + }, + is(command) { + return command.command === 'editor.action.rename'; + }, + }, + showReferences: { + create(uri, position, locations) { + const source = toSourceLocation(uri, position); + if (!source) { + return; + } + const sourceReferences = []; + for (const reference of locations) { + if (context.documents.isVirtualFileUri(reference.uri)) { + for (const [_, map] of context.documents.getMapsByVirtualFileUri(reference.uri)) { + const range = map.toSourceRange(reference.range); + if (range) { + sourceReferences.push({ uri: map.sourceFileDocument.uri, range }); + } + } + } + else { + sourceReferences.push(reference); + } + } + return { + title: locations.length === 1 ? '1 reference' : `${locations.length} references`, + command: 'editor.action.showReferences', + arguments: [ + source.uri, + source.position, + sourceReferences, + ], + }; + }, + is(command) { + return command.command === 'editor.action.showReferences'; + }, + }, + setSelection: { + create(position) { + return { + title: '', + command: 'setSelection', + arguments: [{ + selection: { + selectionStartLineNumber: position.line + 1, + positionLineNumber: position.line + 1, + selectionStartColumn: position.character + 1, + positionColumn: position.character + 1, + }, + }], + }; + }, + is(command) { + return command.command === 'setSelection'; + } + }, + }, + getTextDocument, + }; + for (const serviceId in config.services ?? {}) { + const service = config.services?.[serviceId]; + if (service) { + context.services[serviceId] = service(context, modules); + } + } + return context; + function toSourceLocation(uri, position, filter) { + if (!textDocumentMapper.isVirtualFileUri(uri)) { + return { uri, position }; + } + const map = textDocumentMapper.getVirtualFileByUri(uri); + if (map) { + for (const [_, map] of context.documents.getMapsByVirtualFileUri(uri)) { + const sourcePosition = map.toSourcePosition(position, filter); + if (sourcePosition) { + return { + uri: map.sourceFileDocument.uri, + position: sourcePosition, + }; + } + } + } + } + function getTextDocument(uri) { + for (const [_, map] of context.documents.getMapsByVirtualFileUri(uri)) { + return map.virtualFileDocument; + } + const fileName = env.uriToFileName(uri); + const scriptSnapshot = host.getScriptSnapshot(fileName); + if (scriptSnapshot) { + let document = documents.get(scriptSnapshot); + if (!document) { + const newVersion = (documentVersions.get(uri.toLowerCase()) ?? 0) + 1; + documentVersions.set(uri.toLowerCase(), newVersion); + document = vscode_languageserver_textdocument_1.TextDocument.create(uri, host.getLanguageId?.(fileName) ?? (0, common_1.resolveCommonLanguageId)(uri), newVersion, scriptSnapshot.getText(0, scriptSnapshot.getLength())); + documents.set(scriptSnapshot, document); + } + return document; + } + } +} +function createLanguageServiceBase(context) { + return { + getTriggerCharacters: () => Object.values(context.services).map(service => service?.triggerCharacters ?? []).flat(), + getAutoFormatTriggerCharacters: () => Object.values(context.services).map(service => service?.autoFormatTriggerCharacters ?? []).flat(), + getSignatureHelpTriggerCharacters: () => Object.values(context.services).map(service => service?.signatureHelpTriggerCharacters ?? []).flat(), + getSignatureHelpRetriggerCharacters: () => Object.values(context.services).map(service => service?.signatureHelpRetriggerCharacters ?? []).flat(), + format: format$6.register(context), + getFoldingRanges: foldingRanges$1.register(context), + getSelectionRanges: selectionRanges$1.register(context), + findLinkedEditingRanges: linkedEditingRanges.register(context), + findDocumentSymbols: documentSymbols.register(context), + findDocumentColors: documentColors.register(context), + getColorPresentations: colorPresentations.register(context), + doValidation: diagnostics$1.register(context), + findReferences: references$1.register(context), + findFileReferences: fileReferences$1.register(context), + findDefinition: definition$1.register(context, 'provideDefinition', data => !!data.definition, data => !!data.definition), + findTypeDefinition: definition$1.register(context, 'provideTypeDefinition', data => !!data.definition, data => !!data.definition), + findImplementations: definition$1.register(context, 'provideImplementation', data => !!data.references, () => false), + prepareRename: renamePrepare.register(context), + doRename: rename$1.register(context), + getEditsForFileRename: fileRename$1.register(context), + getSemanticTokens: semanticTokens$1.register(context), + doHover: hover$1.register(context), + doComplete: completions.register(context), + doCodeActions: codeActions.register(context), + doCodeActionResolve: codeActionResolve$1.register(context), + doCompletionResolve: completionResolve.register(context), + getSignatureHelp: signatureHelp$1.register(context), + doCodeLens: codeLens.register(context), + doCodeLensResolve: codeLensResolve.register(context), + findDocumentHighlights: documentHighlight$1.register(context), + findDocumentLinks: documentLink.register(context), + doDocumentLinkResolve: documentLinkResolve.register(context), + findWorkspaceSymbols: workspaceSymbol$1.register(context), + doAutoInsert: autoInsert.register(context), + getInlayHints: inlayHints$1.register(context), + doInlayHintResolve: inlayHintResolve.register(context), + callHierarchy: callHierarchy$1.register(context), + dispose: () => Object.values(context.services).forEach(service => service.dispose?.()), + context, + }; +} + +(function (exports) { + var __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); + }) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; + })); + var __exportStar = (commonjsGlobal && commonjsGlobal.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.standardSemanticTokensLegend = exports.transformer = exports.mergeWorkspaceEdits = void 0; + __exportStar(languageCore, exports); + __exportStar(baseLanguageService, exports); + __exportStar(documents, exports); + var rename_1 = rename$2; + Object.defineProperty(exports, "mergeWorkspaceEdits", { enumerable: true, get: function () { return rename_1.mergeWorkspaceEdits; } }); + __exportStar(types$4, exports); + exports.transformer = transformer$8; + // https://code.visualstudio.com/api/language-extensions/semantic-highlight-guide#standard-token-types-and-modifiers + exports.standardSemanticTokensLegend = { + tokenTypes: [ + 'namespace', + 'class', + 'enum', + 'interface', + 'struct', + 'typeParameter', + 'type', + 'parameter', + 'variable', + 'property', + 'enumMember', + 'decorator', + 'event', + 'function', + 'method', + 'macro', + 'label', + 'comment', + 'string', + 'keyword', + 'number', + 'regexp', + 'operator', + ], + tokenModifiers: [ + 'declaration', + 'definition', + 'readonly', + 'static', + 'deprecated', + 'abstract', + 'async', + 'modification', + 'documentation', + 'defaultLibrary', + ], + }; + +} (languageService$2)); + +var out$8 = {}; + +var template = {}; + +var compilerDom_cjs = {}; + +var compilerCore_cjs = {}; + +function makeMap$1(str, expectsLowerCase) { + const set = new Set(str.split(",")); + return expectsLowerCase ? (val) => set.has(val.toLowerCase()) : (val) => set.has(val); +} + +const EMPTY_OBJ = {}; +const EMPTY_ARR = []; +const NOOP = () => { +}; +const NO = () => false; +const isOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // uppercase letter +(key.charCodeAt(2) > 122 || key.charCodeAt(2) < 97); +const isModelListener = (key) => key.startsWith("onUpdate:"); +const extend$1 = Object.assign; +const remove$1 = (arr, el) => { + const i = arr.indexOf(el); + if (i > -1) { + arr.splice(i, 1); + } +}; +const hasOwnProperty$1 = Object.prototype.hasOwnProperty; +const hasOwn$1 = (val, key) => hasOwnProperty$1.call(val, key); +const isArray$2 = Array.isArray; +const isMap = (val) => toTypeString(val) === "[object Map]"; +const isSet = (val) => toTypeString(val) === "[object Set]"; +const isDate = (val) => toTypeString(val) === "[object Date]"; +const isRegExp = (val) => toTypeString(val) === "[object RegExp]"; +const isFunction$1 = (val) => typeof val === "function"; +const isString$1 = (val) => typeof val === "string"; +const isSymbol = (val) => typeof val === "symbol"; +const isObject$2 = (val) => val !== null && typeof val === "object"; +const isPromise$1 = (val) => { + return (isObject$2(val) || isFunction$1(val)) && isFunction$1(val.then) && isFunction$1(val.catch); +}; +const objectToString = Object.prototype.toString; +const toTypeString = (value) => objectToString.call(value); +const toRawType$1 = (value) => { + return toTypeString(value).slice(8, -1); +}; +const isPlainObject$1 = (val) => toTypeString(val) === "[object Object]"; +const isIntegerKey = (key) => isString$1(key) && key !== "NaN" && key[0] !== "-" && "" + parseInt(key, 10) === key; +const isReservedProp = /* @__PURE__ */ makeMap$1( + // the leading comma is intentional so empty string "" is also included + ",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted" +); +const isBuiltInDirective = /* @__PURE__ */ makeMap$1( + "bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo" +); +const cacheStringFunction = (fn) => { + const cache = /* @__PURE__ */ Object.create(null); + return (str) => { + const hit = cache[str]; + return hit || (cache[str] = fn(str)); + }; +}; +const camelizeRE$1 = /-(\w)/g; +const camelize$1 = cacheStringFunction((str) => { + return str.replace(camelizeRE$1, (_, c) => c ? c.toUpperCase() : ""); +}); +const hyphenateRE$1 = /\B([A-Z])/g; +const hyphenate$1 = cacheStringFunction( + (str) => str.replace(hyphenateRE$1, "-$1").toLowerCase() +); +const capitalize$1 = cacheStringFunction((str) => { + return str.charAt(0).toUpperCase() + str.slice(1); +}); +const toHandlerKey = cacheStringFunction((str) => { + const s = str ? `on${capitalize$1(str)}` : ``; + return s; +}); +const hasChanged$1 = (value, oldValue) => !Object.is(value, oldValue); +const invokeArrayFns = (fns, arg) => { + for (let i = 0; i < fns.length; i++) { + fns[i](arg); + } +}; +const def$1 = (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$1 = (val) => { + const n = isString$1(val) ? Number(val) : NaN; + return isNaN(n) ? val : n; +}; +let _globalThis; +const getGlobalThis = () => { + return _globalThis || (_globalThis = typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : {}); +}; +const identRE = /^[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*$/; +function genPropsAccessExp(name) { + return identRE.test(name) ? `__props.${name}` : `__props[${JSON.stringify(name)}]`; +} + +const PatchFlags = { + "TEXT": 1, + "1": "TEXT", + "CLASS": 2, + "2": "CLASS", + "STYLE": 4, + "4": "STYLE", + "PROPS": 8, + "8": "PROPS", + "FULL_PROPS": 16, + "16": "FULL_PROPS", + "NEED_HYDRATION": 32, + "32": "NEED_HYDRATION", + "STABLE_FRAGMENT": 64, + "64": "STABLE_FRAGMENT", + "KEYED_FRAGMENT": 128, + "128": "KEYED_FRAGMENT", + "UNKEYED_FRAGMENT": 256, + "256": "UNKEYED_FRAGMENT", + "NEED_PATCH": 512, + "512": "NEED_PATCH", + "DYNAMIC_SLOTS": 1024, + "1024": "DYNAMIC_SLOTS", + "DEV_ROOT_FRAGMENT": 2048, + "2048": "DEV_ROOT_FRAGMENT", + "HOISTED": -1, + "-1": "HOISTED", + "BAIL": -2, + "-2": "BAIL" +}; +const PatchFlagNames = { + [1]: `TEXT`, + [2]: `CLASS`, + [4]: `STYLE`, + [8]: `PROPS`, + [16]: `FULL_PROPS`, + [32]: `NEED_HYDRATION`, + [64]: `STABLE_FRAGMENT`, + [128]: `KEYED_FRAGMENT`, + [256]: `UNKEYED_FRAGMENT`, + [512]: `NEED_PATCH`, + [1024]: `DYNAMIC_SLOTS`, + [2048]: `DEV_ROOT_FRAGMENT`, + [-1]: `HOISTED`, + [-2]: `BAIL` +}; + +const ShapeFlags = { + "ELEMENT": 1, + "1": "ELEMENT", + "FUNCTIONAL_COMPONENT": 2, + "2": "FUNCTIONAL_COMPONENT", + "STATEFUL_COMPONENT": 4, + "4": "STATEFUL_COMPONENT", + "TEXT_CHILDREN": 8, + "8": "TEXT_CHILDREN", + "ARRAY_CHILDREN": 16, + "16": "ARRAY_CHILDREN", + "SLOTS_CHILDREN": 32, + "32": "SLOTS_CHILDREN", + "TELEPORT": 64, + "64": "TELEPORT", + "SUSPENSE": 128, + "128": "SUSPENSE", + "COMPONENT_SHOULD_KEEP_ALIVE": 256, + "256": "COMPONENT_SHOULD_KEEP_ALIVE", + "COMPONENT_KEPT_ALIVE": 512, + "512": "COMPONENT_KEPT_ALIVE", + "COMPONENT": 6, + "6": "COMPONENT" +}; + +const SlotFlags = { + "STABLE": 1, + "1": "STABLE", + "DYNAMIC": 2, + "2": "DYNAMIC", + "FORWARDED": 3, + "3": "FORWARDED" +}; +const slotFlagsText = { + [1]: "STABLE", + [2]: "DYNAMIC", + [3]: "FORWARDED" +}; + +const GLOBALS_ALLOWED = "Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console,Error"; +const isGloballyAllowed = /* @__PURE__ */ makeMap$1(GLOBALS_ALLOWED); +const isGloballyWhitelisted = isGloballyAllowed; + +const range$3 = 2; +function generateCodeFrame$1(source, start = 0, end = source.length) { + let lines = source.split(/(\r?\n)/); + const newlineSequences = lines.filter((_, idx) => idx % 2 === 1); + lines = lines.filter((_, idx) => idx % 2 === 0); + let count = 0; + const res = []; + for (let i = 0; i < lines.length; i++) { + count += lines[i].length + (newlineSequences[i] && newlineSequences[i].length || 0); + if (count >= start) { + for (let j = i - range$3; j <= i + range$3 || end > count; j++) { + if (j < 0 || j >= lines.length) + continue; + const line = j + 1; + res.push( + `${line}${" ".repeat(Math.max(3 - String(line).length, 0))}| ${lines[j]}` + ); + const lineLength = lines[j].length; + const newLineSeqLength = newlineSequences[j] && newlineSequences[j].length || 0; + if (j === i) { + const pad = start - (count - (lineLength + newLineSeqLength)); + const length = Math.max( + 1, + end > count ? lineLength - pad : end - start + ); + res.push(` | ` + " ".repeat(pad) + "^".repeat(length)); + } else if (j > i) { + if (end > count) { + const length = Math.max(Math.min(end - count, lineLength), 1); + res.push(` | ` + "^".repeat(length)); + } + count += lineLength + newLineSeqLength; + } + } + break; + } + } + return res.join("\n"); +} + +function normalizeStyle(value) { + if (isArray$2(value)) { + const res = {}; + for (let i = 0; i < value.length; i++) { + const item = value[i]; + const normalized = isString$1(item) ? parseStringStyle(item) : normalizeStyle(item); + if (normalized) { + for (const key in normalized) { + res[key] = normalized[key]; + } + } + } + return res; + } else if (isString$1(value) || isObject$2(value)) { + return value; + } +} +const listDelimiterRE = /;(?![^(]*\))/g; +const propertyDelimiterRE = /:([^]+)/; +const styleCommentRE = /\/\*[^]*?\*\//g; +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 stringifyStyle(styles) { + let ret = ""; + if (!styles || isString$1(styles)) { + return ret; + } + for (const key in styles) { + const value = styles[key]; + const normalizedKey = key.startsWith(`--`) ? key : hyphenate$1(key); + if (isString$1(value) || typeof value === "number") { + ret += `${normalizedKey}:${value};`; + } + } + return ret; +} +function normalizeClass(value) { + let res = ""; + if (isString$1(value)) { + res = value; + } else if (isArray$2(value)) { + for (let i = 0; i < value.length; i++) { + const normalized = normalizeClass(value[i]); + if (normalized) { + res += normalized + " "; + } + } + } else if (isObject$2(value)) { + for (const name in value) { + if (value[name]) { + res += name + " "; + } + } + } + return res.trim(); +} +function normalizeProps$1(props) { + if (!props) + return null; + let { class: klass, style } = props; + if (klass && !isString$1(klass)) { + props.class = normalizeClass(klass); + } + if (style) { + props.style = normalizeStyle(style); + } + return props; +} + +const HTML_TAGS$1 = "html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot"; +const SVG_TAGS$1 = "svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view"; +const MATH_TAGS = "annotation,annotation-xml,maction,maligngroup,malignmark,math,menclose,merror,mfenced,mfrac,mfraction,mglyph,mi,mlabeledtr,mlongdiv,mmultiscripts,mn,mo,mover,mpadded,mphantom,mprescripts,mroot,mrow,ms,mscarries,mscarry,msgroup,msline,mspace,msqrt,msrow,mstack,mstyle,msub,msubsup,msup,mtable,mtd,mtext,mtr,munder,munderover,none,semantics"; +const VOID_TAGS = "area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr"; +const isHTMLTag$1 = /* @__PURE__ */ makeMap$1(HTML_TAGS$1); +const isSVGTag = /* @__PURE__ */ makeMap$1(SVG_TAGS$1); +const isMathMLTag = /* @__PURE__ */ makeMap$1(MATH_TAGS); +const isVoidTag = /* @__PURE__ */ makeMap$1(VOID_TAGS); + +const specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`; +const isSpecialBooleanAttr = /* @__PURE__ */ makeMap$1(specialBooleanAttrs); +const isBooleanAttr$1 = /* @__PURE__ */ makeMap$1( + specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,inert,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected` +); +function includeBooleanAttr(value) { + return !!value || value === ""; +} +const unsafeAttrCharRE = /[>/="'\u0009\u000a\u000c\u0020]/; +const attrValidationCache = {}; +function isSSRSafeAttrName(name) { + if (attrValidationCache.hasOwnProperty(name)) { + return attrValidationCache[name]; + } + const isUnsafe = unsafeAttrCharRE.test(name); + if (isUnsafe) { + console.error(`unsafe attribute name: ${name}`); + } + return attrValidationCache[name] = !isUnsafe; +} +const propsToAttrMap$1 = { + acceptCharset: "accept-charset", + className: "class", + htmlFor: "for", + httpEquiv: "http-equiv" +}; +const isKnownHtmlAttr = /* @__PURE__ */ makeMap$1( + `accept,accept-charset,accesskey,action,align,allow,alt,async,autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,border,buffered,capture,challenge,charset,checked,cite,class,code,codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,formaction,formenctype,formmethod,formnovalidate,formtarget,headers,height,hidden,high,href,hreflang,http-equiv,icon,id,importance,inert,integrity,ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,target,title,translate,type,usemap,value,width,wrap` +); +const isKnownSvgAttr = /* @__PURE__ */ makeMap$1( + `xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,color-interpolation-filters,color-profile,color-rendering,contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,font-family,font-size,font-size-adjust,font-stretch,font-style,font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,overflow,overline-position,overline-thickness,panose-1,paint-order,path,pathLength,patternContentUnits,patternTransform,patternUnits,ping,pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,specularConstant,specularExponent,speed,spreadMethod,startOffset,stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,string,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,text-decoration,text-rendering,textLength,to,transform,transform-origin,type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xmlns:xlink,xml:base,xml:lang,xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan` +); + +const escapeRE = /["'&<>]/; +function escapeHtml(string) { + const str = "" + string; + const match = escapeRE.exec(str); + if (!match) { + return str; + } + let html = ""; + let escaped; + let index; + let lastIndex = 0; + for (index = match.index; index < str.length; index++) { + switch (str.charCodeAt(index)) { + case 34: + escaped = """; + break; + case 38: + escaped = "&"; + break; + case 39: + escaped = "'"; + break; + case 60: + escaped = "<"; + break; + case 62: + escaped = ">"; + break; + default: + continue; + } + if (lastIndex !== index) { + html += str.slice(lastIndex, index); + } + lastIndex = index + 1; + html += escaped; + } + return lastIndex !== index ? html + str.slice(lastIndex, index) : html; +} +const commentStripRE = /^-?>|<!--|-->|--!>|<!-$/g; +function escapeHtmlComment(src) { + return src.replace(commentStripRE, ""); +} + +function looseCompareArrays(a, b) { + if (a.length !== b.length) + return false; + let equal = true; + for (let i = 0; equal && i < a.length; i++) { + equal = looseEqual$1(a[i], b[i]); + } + return equal; +} +function looseEqual$1(a, b) { + if (a === b) + return true; + let aValidType = isDate(a); + let bValidType = isDate(b); + if (aValidType || bValidType) { + return aValidType && bValidType ? a.getTime() === b.getTime() : false; + } + aValidType = isSymbol(a); + bValidType = isSymbol(b); + if (aValidType || bValidType) { + return a === b; + } + aValidType = isArray$2(a); + bValidType = isArray$2(b); + if (aValidType || bValidType) { + return aValidType && bValidType ? looseCompareArrays(a, b) : false; + } + aValidType = isObject$2(a); + bValidType = isObject$2(b); + if (aValidType || bValidType) { + if (!aValidType || !bValidType) { + return false; + } + const aKeysCount = Object.keys(a).length; + const bKeysCount = Object.keys(b).length; + if (aKeysCount !== bKeysCount) { + return false; + } + for (const key in a) { + const aHasKey = a.hasOwnProperty(key); + const bHasKey = b.hasOwnProperty(key); + if (aHasKey && !bHasKey || !aHasKey && bHasKey || !looseEqual$1(a[key], b[key])) { + return false; + } + } + } + return String(a) === String(b); +} +function looseIndexOf$1(arr, val) { + return arr.findIndex((item) => looseEqual$1(item, val)); +} + +const toDisplayString$1 = (val) => { + return isString$1(val) ? val : val == null ? "" : isArray$2(val) || isObject$2(val) && (val.toString === objectToString || !isFunction$1(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], i) => { + entries[stringifySymbol(key, i) + " =>"] = val2; + return entries; + }, + {} + ) + }; + } else if (isSet(val)) { + return { + [`Set(${val.size})`]: [...val.values()].map((v) => stringifySymbol(v)) + }; + } else if (isSymbol(val)) { + return stringifySymbol(val); + } else if (isObject$2(val) && !isArray$2(val) && !isPlainObject$1(val)) { + return String(val); + } + return val; +}; +const stringifySymbol = (v, i = "") => { + var _a; + return isSymbol(v) ? `Symbol(${(_a = v.description) != null ? _a : i})` : v; +}; + +var shared_esmBundler = /*#__PURE__*/Object.freeze({ + __proto__: null, + EMPTY_ARR: EMPTY_ARR, + EMPTY_OBJ: EMPTY_OBJ, + NO: NO, + NOOP: NOOP, + PatchFlagNames: PatchFlagNames, + PatchFlags: PatchFlags, + ShapeFlags: ShapeFlags, + SlotFlags: SlotFlags, + camelize: camelize$1, + capitalize: capitalize$1, + def: def$1, + escapeHtml: escapeHtml, + escapeHtmlComment: escapeHtmlComment, + extend: extend$1, + genPropsAccessExp: genPropsAccessExp, + generateCodeFrame: generateCodeFrame$1, + getGlobalThis: getGlobalThis, + hasChanged: hasChanged$1, + hasOwn: hasOwn$1, + hyphenate: hyphenate$1, + includeBooleanAttr: includeBooleanAttr, + invokeArrayFns: invokeArrayFns, + isArray: isArray$2, + isBooleanAttr: isBooleanAttr$1, + isBuiltInDirective: isBuiltInDirective, + isDate: isDate, + isFunction: isFunction$1, + isGloballyAllowed: isGloballyAllowed, + isGloballyWhitelisted: isGloballyWhitelisted, + isHTMLTag: isHTMLTag$1, + isIntegerKey: isIntegerKey, + isKnownHtmlAttr: isKnownHtmlAttr, + isKnownSvgAttr: isKnownSvgAttr, + isMap: isMap, + isMathMLTag: isMathMLTag, + isModelListener: isModelListener, + isObject: isObject$2, + isOn: isOn, + isPlainObject: isPlainObject$1, + isPromise: isPromise$1, + isRegExp: isRegExp, + isReservedProp: isReservedProp, + isSSRSafeAttrName: isSSRSafeAttrName, + isSVGTag: isSVGTag, + isSet: isSet, + isSpecialBooleanAttr: isSpecialBooleanAttr, + isString: isString$1, + isSymbol: isSymbol, + isVoidTag: isVoidTag, + looseEqual: looseEqual$1, + looseIndexOf: looseIndexOf$1, + looseToNumber: looseToNumber, + makeMap: makeMap$1, + normalizeClass: normalizeClass, + normalizeProps: normalizeProps$1, + normalizeStyle: normalizeStyle, + objectToString: objectToString, + parseStringStyle: parseStringStyle, + propsToAttrMap: propsToAttrMap$1, + remove: remove$1, + slotFlagsText: slotFlagsText, + stringifyStyle: stringifyStyle, + toDisplayString: toDisplayString$1, + toHandlerKey: toHandlerKey, + toNumber: toNumber$1, + toRawType: toRawType$1, + toTypeString: toTypeString +}); + +var require$$1$1 = /*@__PURE__*/getAugmentedNamespace(shared_esmBundler); + +var decode = {}; + +var decodeDataHtml = {}; + +// Generated using scripts/write-decode-map.ts +Object.defineProperty(decodeDataHtml, "__esModule", { value: true }); +decodeDataHtml.default = new Uint16Array( +// prettier-ignore +"\u1d41<\xd5\u0131\u028a\u049d\u057b\u05d0\u0675\u06de\u07a2\u07d6\u080f\u0a4a\u0a91\u0da1\u0e6d\u0f09\u0f26\u10ca\u1228\u12e1\u1415\u149d\u14c3\u14df\u1525\0\0\0\0\0\0\u156b\u16cd\u198d\u1c12\u1ddd\u1f7e\u2060\u21b0\u228d\u23c0\u23fb\u2442\u2824\u2912\u2d08\u2e48\u2fce\u3016\u32ba\u3639\u37ac\u38fe\u3a28\u3a71\u3ae0\u3b2e\u0800EMabcfglmnoprstu\\bfms\x7f\x84\x8b\x90\x95\x98\xa6\xb3\xb9\xc8\xcflig\u803b\xc6\u40c6P\u803b&\u4026cute\u803b\xc1\u40c1reve;\u4102\u0100iyx}rc\u803b\xc2\u40c2;\u4410r;\uc000\ud835\udd04rave\u803b\xc0\u40c0pha;\u4391acr;\u4100d;\u6a53\u0100gp\x9d\xa1on;\u4104f;\uc000\ud835\udd38plyFunction;\u6061ing\u803b\xc5\u40c5\u0100cs\xbe\xc3r;\uc000\ud835\udc9cign;\u6254ilde\u803b\xc3\u40c3ml\u803b\xc4\u40c4\u0400aceforsu\xe5\xfb\xfe\u0117\u011c\u0122\u0127\u012a\u0100cr\xea\xf2kslash;\u6216\u0176\xf6\xf8;\u6ae7ed;\u6306y;\u4411\u0180crt\u0105\u010b\u0114ause;\u6235noullis;\u612ca;\u4392r;\uc000\ud835\udd05pf;\uc000\ud835\udd39eve;\u42d8c\xf2\u0113mpeq;\u624e\u0700HOacdefhilorsu\u014d\u0151\u0156\u0180\u019e\u01a2\u01b5\u01b7\u01ba\u01dc\u0215\u0273\u0278\u027ecy;\u4427PY\u803b\xa9\u40a9\u0180cpy\u015d\u0162\u017aute;\u4106\u0100;i\u0167\u0168\u62d2talDifferentialD;\u6145leys;\u612d\u0200aeio\u0189\u018e\u0194\u0198ron;\u410cdil\u803b\xc7\u40c7rc;\u4108nint;\u6230ot;\u410a\u0100dn\u01a7\u01adilla;\u40b8terDot;\u40b7\xf2\u017fi;\u43a7rcle\u0200DMPT\u01c7\u01cb\u01d1\u01d6ot;\u6299inus;\u6296lus;\u6295imes;\u6297o\u0100cs\u01e2\u01f8kwiseContourIntegral;\u6232eCurly\u0100DQ\u0203\u020foubleQuote;\u601duote;\u6019\u0200lnpu\u021e\u0228\u0247\u0255on\u0100;e\u0225\u0226\u6237;\u6a74\u0180git\u022f\u0236\u023aruent;\u6261nt;\u622fourIntegral;\u622e\u0100fr\u024c\u024e;\u6102oduct;\u6210nterClockwiseContourIntegral;\u6233oss;\u6a2fcr;\uc000\ud835\udc9ep\u0100;C\u0284\u0285\u62d3ap;\u624d\u0580DJSZacefios\u02a0\u02ac\u02b0\u02b4\u02b8\u02cb\u02d7\u02e1\u02e6\u0333\u048d\u0100;o\u0179\u02a5trahd;\u6911cy;\u4402cy;\u4405cy;\u440f\u0180grs\u02bf\u02c4\u02c7ger;\u6021r;\u61a1hv;\u6ae4\u0100ay\u02d0\u02d5ron;\u410e;\u4414l\u0100;t\u02dd\u02de\u6207a;\u4394r;\uc000\ud835\udd07\u0100af\u02eb\u0327\u0100cm\u02f0\u0322ritical\u0200ADGT\u0300\u0306\u0316\u031ccute;\u40b4o\u0174\u030b\u030d;\u42d9bleAcute;\u42ddrave;\u4060ilde;\u42dcond;\u62c4ferentialD;\u6146\u0470\u033d\0\0\0\u0342\u0354\0\u0405f;\uc000\ud835\udd3b\u0180;DE\u0348\u0349\u034d\u40a8ot;\u60dcqual;\u6250ble\u0300CDLRUV\u0363\u0372\u0382\u03cf\u03e2\u03f8ontourIntegra\xec\u0239o\u0274\u0379\0\0\u037b\xbb\u0349nArrow;\u61d3\u0100eo\u0387\u03a4ft\u0180ART\u0390\u0396\u03a1rrow;\u61d0ightArrow;\u61d4e\xe5\u02cang\u0100LR\u03ab\u03c4eft\u0100AR\u03b3\u03b9rrow;\u67f8ightArrow;\u67faightArrow;\u67f9ight\u0100AT\u03d8\u03derrow;\u61d2ee;\u62a8p\u0241\u03e9\0\0\u03efrrow;\u61d1ownArrow;\u61d5erticalBar;\u6225n\u0300ABLRTa\u0412\u042a\u0430\u045e\u047f\u037crrow\u0180;BU\u041d\u041e\u0422\u6193ar;\u6913pArrow;\u61f5reve;\u4311eft\u02d2\u043a\0\u0446\0\u0450ightVector;\u6950eeVector;\u695eector\u0100;B\u0459\u045a\u61bdar;\u6956ight\u01d4\u0467\0\u0471eeVector;\u695fector\u0100;B\u047a\u047b\u61c1ar;\u6957ee\u0100;A\u0486\u0487\u62a4rrow;\u61a7\u0100ct\u0492\u0497r;\uc000\ud835\udc9frok;\u4110\u0800NTacdfglmopqstux\u04bd\u04c0\u04c4\u04cb\u04de\u04e2\u04e7\u04ee\u04f5\u0521\u052f\u0536\u0552\u055d\u0560\u0565G;\u414aH\u803b\xd0\u40d0cute\u803b\xc9\u40c9\u0180aiy\u04d2\u04d7\u04dcron;\u411arc\u803b\xca\u40ca;\u442dot;\u4116r;\uc000\ud835\udd08rave\u803b\xc8\u40c8ement;\u6208\u0100ap\u04fa\u04fecr;\u4112ty\u0253\u0506\0\0\u0512mallSquare;\u65fberySmallSquare;\u65ab\u0100gp\u0526\u052aon;\u4118f;\uc000\ud835\udd3csilon;\u4395u\u0100ai\u053c\u0549l\u0100;T\u0542\u0543\u6a75ilde;\u6242librium;\u61cc\u0100ci\u0557\u055ar;\u6130m;\u6a73a;\u4397ml\u803b\xcb\u40cb\u0100ip\u056a\u056fsts;\u6203onentialE;\u6147\u0280cfios\u0585\u0588\u058d\u05b2\u05ccy;\u4424r;\uc000\ud835\udd09lled\u0253\u0597\0\0\u05a3mallSquare;\u65fcerySmallSquare;\u65aa\u0370\u05ba\0\u05bf\0\0\u05c4f;\uc000\ud835\udd3dAll;\u6200riertrf;\u6131c\xf2\u05cb\u0600JTabcdfgorst\u05e8\u05ec\u05ef\u05fa\u0600\u0612\u0616\u061b\u061d\u0623\u066c\u0672cy;\u4403\u803b>\u403emma\u0100;d\u05f7\u05f8\u4393;\u43dcreve;\u411e\u0180eiy\u0607\u060c\u0610dil;\u4122rc;\u411c;\u4413ot;\u4120r;\uc000\ud835\udd0a;\u62d9pf;\uc000\ud835\udd3eeater\u0300EFGLST\u0635\u0644\u064e\u0656\u065b\u0666qual\u0100;L\u063e\u063f\u6265ess;\u62dbullEqual;\u6267reater;\u6aa2ess;\u6277lantEqual;\u6a7eilde;\u6273cr;\uc000\ud835\udca2;\u626b\u0400Aacfiosu\u0685\u068b\u0696\u069b\u069e\u06aa\u06be\u06caRDcy;\u442a\u0100ct\u0690\u0694ek;\u42c7;\u405eirc;\u4124r;\u610clbertSpace;\u610b\u01f0\u06af\0\u06b2f;\u610dizontalLine;\u6500\u0100ct\u06c3\u06c5\xf2\u06a9rok;\u4126mp\u0144\u06d0\u06d8ownHum\xf0\u012fqual;\u624f\u0700EJOacdfgmnostu\u06fa\u06fe\u0703\u0707\u070e\u071a\u071e\u0721\u0728\u0744\u0778\u078b\u078f\u0795cy;\u4415lig;\u4132cy;\u4401cute\u803b\xcd\u40cd\u0100iy\u0713\u0718rc\u803b\xce\u40ce;\u4418ot;\u4130r;\u6111rave\u803b\xcc\u40cc\u0180;ap\u0720\u072f\u073f\u0100cg\u0734\u0737r;\u412ainaryI;\u6148lie\xf3\u03dd\u01f4\u0749\0\u0762\u0100;e\u074d\u074e\u622c\u0100gr\u0753\u0758ral;\u622bsection;\u62c2isible\u0100CT\u076c\u0772omma;\u6063imes;\u6062\u0180gpt\u077f\u0783\u0788on;\u412ef;\uc000\ud835\udd40a;\u4399cr;\u6110ilde;\u4128\u01eb\u079a\0\u079ecy;\u4406l\u803b\xcf\u40cf\u0280cfosu\u07ac\u07b7\u07bc\u07c2\u07d0\u0100iy\u07b1\u07b5rc;\u4134;\u4419r;\uc000\ud835\udd0dpf;\uc000\ud835\udd41\u01e3\u07c7\0\u07ccr;\uc000\ud835\udca5rcy;\u4408kcy;\u4404\u0380HJacfos\u07e4\u07e8\u07ec\u07f1\u07fd\u0802\u0808cy;\u4425cy;\u440cppa;\u439a\u0100ey\u07f6\u07fbdil;\u4136;\u441ar;\uc000\ud835\udd0epf;\uc000\ud835\udd42cr;\uc000\ud835\udca6\u0580JTaceflmost\u0825\u0829\u082c\u0850\u0863\u09b3\u09b8\u09c7\u09cd\u0a37\u0a47cy;\u4409\u803b<\u403c\u0280cmnpr\u0837\u083c\u0841\u0844\u084dute;\u4139bda;\u439bg;\u67ealacetrf;\u6112r;\u619e\u0180aey\u0857\u085c\u0861ron;\u413ddil;\u413b;\u441b\u0100fs\u0868\u0970t\u0500ACDFRTUVar\u087e\u08a9\u08b1\u08e0\u08e6\u08fc\u092f\u095b\u0390\u096a\u0100nr\u0883\u088fgleBracket;\u67e8row\u0180;BR\u0899\u089a\u089e\u6190ar;\u61e4ightArrow;\u61c6eiling;\u6308o\u01f5\u08b7\0\u08c3bleBracket;\u67e6n\u01d4\u08c8\0\u08d2eeVector;\u6961ector\u0100;B\u08db\u08dc\u61c3ar;\u6959loor;\u630aight\u0100AV\u08ef\u08f5rrow;\u6194ector;\u694e\u0100er\u0901\u0917e\u0180;AV\u0909\u090a\u0910\u62a3rrow;\u61a4ector;\u695aiangle\u0180;BE\u0924\u0925\u0929\u62b2ar;\u69cfqual;\u62b4p\u0180DTV\u0937\u0942\u094cownVector;\u6951eeVector;\u6960ector\u0100;B\u0956\u0957\u61bfar;\u6958ector\u0100;B\u0965\u0966\u61bcar;\u6952ight\xe1\u039cs\u0300EFGLST\u097e\u098b\u0995\u099d\u09a2\u09adqualGreater;\u62daullEqual;\u6266reater;\u6276ess;\u6aa1lantEqual;\u6a7dilde;\u6272r;\uc000\ud835\udd0f\u0100;e\u09bd\u09be\u62d8ftarrow;\u61daidot;\u413f\u0180npw\u09d4\u0a16\u0a1bg\u0200LRlr\u09de\u09f7\u0a02\u0a10eft\u0100AR\u09e6\u09ecrrow;\u67f5ightArrow;\u67f7ightArrow;\u67f6eft\u0100ar\u03b3\u0a0aight\xe1\u03bfight\xe1\u03caf;\uc000\ud835\udd43er\u0100LR\u0a22\u0a2ceftArrow;\u6199ightArrow;\u6198\u0180cht\u0a3e\u0a40\u0a42\xf2\u084c;\u61b0rok;\u4141;\u626a\u0400acefiosu\u0a5a\u0a5d\u0a60\u0a77\u0a7c\u0a85\u0a8b\u0a8ep;\u6905y;\u441c\u0100dl\u0a65\u0a6fiumSpace;\u605flintrf;\u6133r;\uc000\ud835\udd10nusPlus;\u6213pf;\uc000\ud835\udd44c\xf2\u0a76;\u439c\u0480Jacefostu\u0aa3\u0aa7\u0aad\u0ac0\u0b14\u0b19\u0d91\u0d97\u0d9ecy;\u440acute;\u4143\u0180aey\u0ab4\u0ab9\u0aberon;\u4147dil;\u4145;\u441d\u0180gsw\u0ac7\u0af0\u0b0eative\u0180MTV\u0ad3\u0adf\u0ae8ediumSpace;\u600bhi\u0100cn\u0ae6\u0ad8\xeb\u0ad9eryThi\xee\u0ad9ted\u0100GL\u0af8\u0b06reaterGreate\xf2\u0673essLes\xf3\u0a48Line;\u400ar;\uc000\ud835\udd11\u0200Bnpt\u0b22\u0b28\u0b37\u0b3areak;\u6060BreakingSpace;\u40a0f;\u6115\u0680;CDEGHLNPRSTV\u0b55\u0b56\u0b6a\u0b7c\u0ba1\u0beb\u0c04\u0c5e\u0c84\u0ca6\u0cd8\u0d61\u0d85\u6aec\u0100ou\u0b5b\u0b64ngruent;\u6262pCap;\u626doubleVerticalBar;\u6226\u0180lqx\u0b83\u0b8a\u0b9bement;\u6209ual\u0100;T\u0b92\u0b93\u6260ilde;\uc000\u2242\u0338ists;\u6204reater\u0380;EFGLST\u0bb6\u0bb7\u0bbd\u0bc9\u0bd3\u0bd8\u0be5\u626fqual;\u6271ullEqual;\uc000\u2267\u0338reater;\uc000\u226b\u0338ess;\u6279lantEqual;\uc000\u2a7e\u0338ilde;\u6275ump\u0144\u0bf2\u0bfdownHump;\uc000\u224e\u0338qual;\uc000\u224f\u0338e\u0100fs\u0c0a\u0c27tTriangle\u0180;BE\u0c1a\u0c1b\u0c21\u62eaar;\uc000\u29cf\u0338qual;\u62ecs\u0300;EGLST\u0c35\u0c36\u0c3c\u0c44\u0c4b\u0c58\u626equal;\u6270reater;\u6278ess;\uc000\u226a\u0338lantEqual;\uc000\u2a7d\u0338ilde;\u6274ested\u0100GL\u0c68\u0c79reaterGreater;\uc000\u2aa2\u0338essLess;\uc000\u2aa1\u0338recedes\u0180;ES\u0c92\u0c93\u0c9b\u6280qual;\uc000\u2aaf\u0338lantEqual;\u62e0\u0100ei\u0cab\u0cb9verseElement;\u620cghtTriangle\u0180;BE\u0ccb\u0ccc\u0cd2\u62ebar;\uc000\u29d0\u0338qual;\u62ed\u0100qu\u0cdd\u0d0cuareSu\u0100bp\u0ce8\u0cf9set\u0100;E\u0cf0\u0cf3\uc000\u228f\u0338qual;\u62e2erset\u0100;E\u0d03\u0d06\uc000\u2290\u0338qual;\u62e3\u0180bcp\u0d13\u0d24\u0d4eset\u0100;E\u0d1b\u0d1e\uc000\u2282\u20d2qual;\u6288ceeds\u0200;EST\u0d32\u0d33\u0d3b\u0d46\u6281qual;\uc000\u2ab0\u0338lantEqual;\u62e1ilde;\uc000\u227f\u0338erset\u0100;E\u0d58\u0d5b\uc000\u2283\u20d2qual;\u6289ilde\u0200;EFT\u0d6e\u0d6f\u0d75\u0d7f\u6241qual;\u6244ullEqual;\u6247ilde;\u6249erticalBar;\u6224cr;\uc000\ud835\udca9ilde\u803b\xd1\u40d1;\u439d\u0700Eacdfgmoprstuv\u0dbd\u0dc2\u0dc9\u0dd5\u0ddb\u0de0\u0de7\u0dfc\u0e02\u0e20\u0e22\u0e32\u0e3f\u0e44lig;\u4152cute\u803b\xd3\u40d3\u0100iy\u0dce\u0dd3rc\u803b\xd4\u40d4;\u441eblac;\u4150r;\uc000\ud835\udd12rave\u803b\xd2\u40d2\u0180aei\u0dee\u0df2\u0df6cr;\u414cga;\u43a9cron;\u439fpf;\uc000\ud835\udd46enCurly\u0100DQ\u0e0e\u0e1aoubleQuote;\u601cuote;\u6018;\u6a54\u0100cl\u0e27\u0e2cr;\uc000\ud835\udcaaash\u803b\xd8\u40d8i\u016c\u0e37\u0e3cde\u803b\xd5\u40d5es;\u6a37ml\u803b\xd6\u40d6er\u0100BP\u0e4b\u0e60\u0100ar\u0e50\u0e53r;\u603eac\u0100ek\u0e5a\u0e5c;\u63deet;\u63b4arenthesis;\u63dc\u0480acfhilors\u0e7f\u0e87\u0e8a\u0e8f\u0e92\u0e94\u0e9d\u0eb0\u0efcrtialD;\u6202y;\u441fr;\uc000\ud835\udd13i;\u43a6;\u43a0usMinus;\u40b1\u0100ip\u0ea2\u0eadncareplan\xe5\u069df;\u6119\u0200;eio\u0eb9\u0eba\u0ee0\u0ee4\u6abbcedes\u0200;EST\u0ec8\u0ec9\u0ecf\u0eda\u627aqual;\u6aaflantEqual;\u627cilde;\u627eme;\u6033\u0100dp\u0ee9\u0eeeuct;\u620fortion\u0100;a\u0225\u0ef9l;\u621d\u0100ci\u0f01\u0f06r;\uc000\ud835\udcab;\u43a8\u0200Ufos\u0f11\u0f16\u0f1b\u0f1fOT\u803b\"\u4022r;\uc000\ud835\udd14pf;\u611acr;\uc000\ud835\udcac\u0600BEacefhiorsu\u0f3e\u0f43\u0f47\u0f60\u0f73\u0fa7\u0faa\u0fad\u1096\u10a9\u10b4\u10bearr;\u6910G\u803b\xae\u40ae\u0180cnr\u0f4e\u0f53\u0f56ute;\u4154g;\u67ebr\u0100;t\u0f5c\u0f5d\u61a0l;\u6916\u0180aey\u0f67\u0f6c\u0f71ron;\u4158dil;\u4156;\u4420\u0100;v\u0f78\u0f79\u611cerse\u0100EU\u0f82\u0f99\u0100lq\u0f87\u0f8eement;\u620builibrium;\u61cbpEquilibrium;\u696fr\xbb\u0f79o;\u43a1ght\u0400ACDFTUVa\u0fc1\u0feb\u0ff3\u1022\u1028\u105b\u1087\u03d8\u0100nr\u0fc6\u0fd2gleBracket;\u67e9row\u0180;BL\u0fdc\u0fdd\u0fe1\u6192ar;\u61e5eftArrow;\u61c4eiling;\u6309o\u01f5\u0ff9\0\u1005bleBracket;\u67e7n\u01d4\u100a\0\u1014eeVector;\u695dector\u0100;B\u101d\u101e\u61c2ar;\u6955loor;\u630b\u0100er\u102d\u1043e\u0180;AV\u1035\u1036\u103c\u62a2rrow;\u61a6ector;\u695biangle\u0180;BE\u1050\u1051\u1055\u62b3ar;\u69d0qual;\u62b5p\u0180DTV\u1063\u106e\u1078ownVector;\u694feeVector;\u695cector\u0100;B\u1082\u1083\u61bear;\u6954ector\u0100;B\u1091\u1092\u61c0ar;\u6953\u0100pu\u109b\u109ef;\u611dndImplies;\u6970ightarrow;\u61db\u0100ch\u10b9\u10bcr;\u611b;\u61b1leDelayed;\u69f4\u0680HOacfhimoqstu\u10e4\u10f1\u10f7\u10fd\u1119\u111e\u1151\u1156\u1161\u1167\u11b5\u11bb\u11bf\u0100Cc\u10e9\u10eeHcy;\u4429y;\u4428FTcy;\u442ccute;\u415a\u0280;aeiy\u1108\u1109\u110e\u1113\u1117\u6abcron;\u4160dil;\u415erc;\u415c;\u4421r;\uc000\ud835\udd16ort\u0200DLRU\u112a\u1134\u113e\u1149ownArrow\xbb\u041eeftArrow\xbb\u089aightArrow\xbb\u0fddpArrow;\u6191gma;\u43a3allCircle;\u6218pf;\uc000\ud835\udd4a\u0272\u116d\0\0\u1170t;\u621aare\u0200;ISU\u117b\u117c\u1189\u11af\u65a1ntersection;\u6293u\u0100bp\u118f\u119eset\u0100;E\u1197\u1198\u628fqual;\u6291erset\u0100;E\u11a8\u11a9\u6290qual;\u6292nion;\u6294cr;\uc000\ud835\udcaear;\u62c6\u0200bcmp\u11c8\u11db\u1209\u120b\u0100;s\u11cd\u11ce\u62d0et\u0100;E\u11cd\u11d5qual;\u6286\u0100ch\u11e0\u1205eeds\u0200;EST\u11ed\u11ee\u11f4\u11ff\u627bqual;\u6ab0lantEqual;\u627dilde;\u627fTh\xe1\u0f8c;\u6211\u0180;es\u1212\u1213\u1223\u62d1rset\u0100;E\u121c\u121d\u6283qual;\u6287et\xbb\u1213\u0580HRSacfhiors\u123e\u1244\u1249\u1255\u125e\u1271\u1276\u129f\u12c2\u12c8\u12d1ORN\u803b\xde\u40deADE;\u6122\u0100Hc\u124e\u1252cy;\u440by;\u4426\u0100bu\u125a\u125c;\u4009;\u43a4\u0180aey\u1265\u126a\u126fron;\u4164dil;\u4162;\u4422r;\uc000\ud835\udd17\u0100ei\u127b\u1289\u01f2\u1280\0\u1287efore;\u6234a;\u4398\u0100cn\u128e\u1298kSpace;\uc000\u205f\u200aSpace;\u6009lde\u0200;EFT\u12ab\u12ac\u12b2\u12bc\u623cqual;\u6243ullEqual;\u6245ilde;\u6248pf;\uc000\ud835\udd4bipleDot;\u60db\u0100ct\u12d6\u12dbr;\uc000\ud835\udcafrok;\u4166\u0ae1\u12f7\u130e\u131a\u1326\0\u132c\u1331\0\0\0\0\0\u1338\u133d\u1377\u1385\0\u13ff\u1404\u140a\u1410\u0100cr\u12fb\u1301ute\u803b\xda\u40dar\u0100;o\u1307\u1308\u619fcir;\u6949r\u01e3\u1313\0\u1316y;\u440eve;\u416c\u0100iy\u131e\u1323rc\u803b\xdb\u40db;\u4423blac;\u4170r;\uc000\ud835\udd18rave\u803b\xd9\u40d9acr;\u416a\u0100di\u1341\u1369er\u0100BP\u1348\u135d\u0100ar\u134d\u1350r;\u405fac\u0100ek\u1357\u1359;\u63dfet;\u63b5arenthesis;\u63ddon\u0100;P\u1370\u1371\u62c3lus;\u628e\u0100gp\u137b\u137fon;\u4172f;\uc000\ud835\udd4c\u0400ADETadps\u1395\u13ae\u13b8\u13c4\u03e8\u13d2\u13d7\u13f3rrow\u0180;BD\u1150\u13a0\u13a4ar;\u6912ownArrow;\u61c5ownArrow;\u6195quilibrium;\u696eee\u0100;A\u13cb\u13cc\u62a5rrow;\u61a5own\xe1\u03f3er\u0100LR\u13de\u13e8eftArrow;\u6196ightArrow;\u6197i\u0100;l\u13f9\u13fa\u43d2on;\u43a5ing;\u416ecr;\uc000\ud835\udcb0ilde;\u4168ml\u803b\xdc\u40dc\u0480Dbcdefosv\u1427\u142c\u1430\u1433\u143e\u1485\u148a\u1490\u1496ash;\u62abar;\u6aeby;\u4412ash\u0100;l\u143b\u143c\u62a9;\u6ae6\u0100er\u1443\u1445;\u62c1\u0180bty\u144c\u1450\u147aar;\u6016\u0100;i\u144f\u1455cal\u0200BLST\u1461\u1465\u146a\u1474ar;\u6223ine;\u407ceparator;\u6758ilde;\u6240ThinSpace;\u600ar;\uc000\ud835\udd19pf;\uc000\ud835\udd4dcr;\uc000\ud835\udcb1dash;\u62aa\u0280cefos\u14a7\u14ac\u14b1\u14b6\u14bcirc;\u4174dge;\u62c0r;\uc000\ud835\udd1apf;\uc000\ud835\udd4ecr;\uc000\ud835\udcb2\u0200fios\u14cb\u14d0\u14d2\u14d8r;\uc000\ud835\udd1b;\u439epf;\uc000\ud835\udd4fcr;\uc000\ud835\udcb3\u0480AIUacfosu\u14f1\u14f5\u14f9\u14fd\u1504\u150f\u1514\u151a\u1520cy;\u442fcy;\u4407cy;\u442ecute\u803b\xdd\u40dd\u0100iy\u1509\u150drc;\u4176;\u442br;\uc000\ud835\udd1cpf;\uc000\ud835\udd50cr;\uc000\ud835\udcb4ml;\u4178\u0400Hacdefos\u1535\u1539\u153f\u154b\u154f\u155d\u1560\u1564cy;\u4416cute;\u4179\u0100ay\u1544\u1549ron;\u417d;\u4417ot;\u417b\u01f2\u1554\0\u155boWidt\xe8\u0ad9a;\u4396r;\u6128pf;\u6124cr;\uc000\ud835\udcb5\u0be1\u1583\u158a\u1590\0\u15b0\u15b6\u15bf\0\0\0\0\u15c6\u15db\u15eb\u165f\u166d\0\u1695\u169b\u16b2\u16b9\0\u16becute\u803b\xe1\u40e1reve;\u4103\u0300;Ediuy\u159c\u159d\u15a1\u15a3\u15a8\u15ad\u623e;\uc000\u223e\u0333;\u623frc\u803b\xe2\u40e2te\u80bb\xb4\u0306;\u4430lig\u803b\xe6\u40e6\u0100;r\xb2\u15ba;\uc000\ud835\udd1erave\u803b\xe0\u40e0\u0100ep\u15ca\u15d6\u0100fp\u15cf\u15d4sym;\u6135\xe8\u15d3ha;\u43b1\u0100ap\u15dfc\u0100cl\u15e4\u15e7r;\u4101g;\u6a3f\u0264\u15f0\0\0\u160a\u0280;adsv\u15fa\u15fb\u15ff\u1601\u1607\u6227nd;\u6a55;\u6a5clope;\u6a58;\u6a5a\u0380;elmrsz\u1618\u1619\u161b\u161e\u163f\u164f\u1659\u6220;\u69a4e\xbb\u1619sd\u0100;a\u1625\u1626\u6221\u0461\u1630\u1632\u1634\u1636\u1638\u163a\u163c\u163e;\u69a8;\u69a9;\u69aa;\u69ab;\u69ac;\u69ad;\u69ae;\u69aft\u0100;v\u1645\u1646\u621fb\u0100;d\u164c\u164d\u62be;\u699d\u0100pt\u1654\u1657h;\u6222\xbb\xb9arr;\u637c\u0100gp\u1663\u1667on;\u4105f;\uc000\ud835\udd52\u0380;Eaeiop\u12c1\u167b\u167d\u1682\u1684\u1687\u168a;\u6a70cir;\u6a6f;\u624ad;\u624bs;\u4027rox\u0100;e\u12c1\u1692\xf1\u1683ing\u803b\xe5\u40e5\u0180cty\u16a1\u16a6\u16a8r;\uc000\ud835\udcb6;\u402amp\u0100;e\u12c1\u16af\xf1\u0288ilde\u803b\xe3\u40e3ml\u803b\xe4\u40e4\u0100ci\u16c2\u16c8onin\xf4\u0272nt;\u6a11\u0800Nabcdefiklnoprsu\u16ed\u16f1\u1730\u173c\u1743\u1748\u1778\u177d\u17e0\u17e6\u1839\u1850\u170d\u193d\u1948\u1970ot;\u6aed\u0100cr\u16f6\u171ek\u0200ceps\u1700\u1705\u170d\u1713ong;\u624cpsilon;\u43f6rime;\u6035im\u0100;e\u171a\u171b\u623dq;\u62cd\u0176\u1722\u1726ee;\u62bded\u0100;g\u172c\u172d\u6305e\xbb\u172drk\u0100;t\u135c\u1737brk;\u63b6\u0100oy\u1701\u1741;\u4431quo;\u601e\u0280cmprt\u1753\u175b\u1761\u1764\u1768aus\u0100;e\u010a\u0109ptyv;\u69b0s\xe9\u170cno\xf5\u0113\u0180ahw\u176f\u1771\u1773;\u43b2;\u6136een;\u626cr;\uc000\ud835\udd1fg\u0380costuvw\u178d\u179d\u17b3\u17c1\u17d5\u17db\u17de\u0180aiu\u1794\u1796\u179a\xf0\u0760rc;\u65efp\xbb\u1371\u0180dpt\u17a4\u17a8\u17adot;\u6a00lus;\u6a01imes;\u6a02\u0271\u17b9\0\0\u17becup;\u6a06ar;\u6605riangle\u0100du\u17cd\u17d2own;\u65bdp;\u65b3plus;\u6a04e\xe5\u1444\xe5\u14adarow;\u690d\u0180ako\u17ed\u1826\u1835\u0100cn\u17f2\u1823k\u0180lst\u17fa\u05ab\u1802ozenge;\u69ebriangle\u0200;dlr\u1812\u1813\u1818\u181d\u65b4own;\u65beeft;\u65c2ight;\u65b8k;\u6423\u01b1\u182b\0\u1833\u01b2\u182f\0\u1831;\u6592;\u65914;\u6593ck;\u6588\u0100eo\u183e\u184d\u0100;q\u1843\u1846\uc000=\u20e5uiv;\uc000\u2261\u20e5t;\u6310\u0200ptwx\u1859\u185e\u1867\u186cf;\uc000\ud835\udd53\u0100;t\u13cb\u1863om\xbb\u13cctie;\u62c8\u0600DHUVbdhmptuv\u1885\u1896\u18aa\u18bb\u18d7\u18db\u18ec\u18ff\u1905\u190a\u1910\u1921\u0200LRlr\u188e\u1890\u1892\u1894;\u6557;\u6554;\u6556;\u6553\u0280;DUdu\u18a1\u18a2\u18a4\u18a6\u18a8\u6550;\u6566;\u6569;\u6564;\u6567\u0200LRlr\u18b3\u18b5\u18b7\u18b9;\u655d;\u655a;\u655c;\u6559\u0380;HLRhlr\u18ca\u18cb\u18cd\u18cf\u18d1\u18d3\u18d5\u6551;\u656c;\u6563;\u6560;\u656b;\u6562;\u655fox;\u69c9\u0200LRlr\u18e4\u18e6\u18e8\u18ea;\u6555;\u6552;\u6510;\u650c\u0280;DUdu\u06bd\u18f7\u18f9\u18fb\u18fd;\u6565;\u6568;\u652c;\u6534inus;\u629flus;\u629eimes;\u62a0\u0200LRlr\u1919\u191b\u191d\u191f;\u655b;\u6558;\u6518;\u6514\u0380;HLRhlr\u1930\u1931\u1933\u1935\u1937\u1939\u193b\u6502;\u656a;\u6561;\u655e;\u653c;\u6524;\u651c\u0100ev\u0123\u1942bar\u803b\xa6\u40a6\u0200ceio\u1951\u1956\u195a\u1960r;\uc000\ud835\udcb7mi;\u604fm\u0100;e\u171a\u171cl\u0180;bh\u1968\u1969\u196b\u405c;\u69c5sub;\u67c8\u016c\u1974\u197el\u0100;e\u1979\u197a\u6022t\xbb\u197ap\u0180;Ee\u012f\u1985\u1987;\u6aae\u0100;q\u06dc\u06db\u0ce1\u19a7\0\u19e8\u1a11\u1a15\u1a32\0\u1a37\u1a50\0\0\u1ab4\0\0\u1ac1\0\0\u1b21\u1b2e\u1b4d\u1b52\0\u1bfd\0\u1c0c\u0180cpr\u19ad\u19b2\u19ddute;\u4107\u0300;abcds\u19bf\u19c0\u19c4\u19ca\u19d5\u19d9\u6229nd;\u6a44rcup;\u6a49\u0100au\u19cf\u19d2p;\u6a4bp;\u6a47ot;\u6a40;\uc000\u2229\ufe00\u0100eo\u19e2\u19e5t;\u6041\xee\u0693\u0200aeiu\u19f0\u19fb\u1a01\u1a05\u01f0\u19f5\0\u19f8s;\u6a4don;\u410ddil\u803b\xe7\u40e7rc;\u4109ps\u0100;s\u1a0c\u1a0d\u6a4cm;\u6a50ot;\u410b\u0180dmn\u1a1b\u1a20\u1a26il\u80bb\xb8\u01adptyv;\u69b2t\u8100\xa2;e\u1a2d\u1a2e\u40a2r\xe4\u01b2r;\uc000\ud835\udd20\u0180cei\u1a3d\u1a40\u1a4dy;\u4447ck\u0100;m\u1a47\u1a48\u6713ark\xbb\u1a48;\u43c7r\u0380;Ecefms\u1a5f\u1a60\u1a62\u1a6b\u1aa4\u1aaa\u1aae\u65cb;\u69c3\u0180;el\u1a69\u1a6a\u1a6d\u42c6q;\u6257e\u0261\u1a74\0\0\u1a88rrow\u0100lr\u1a7c\u1a81eft;\u61baight;\u61bb\u0280RSacd\u1a92\u1a94\u1a96\u1a9a\u1a9f\xbb\u0f47;\u64c8st;\u629birc;\u629aash;\u629dnint;\u6a10id;\u6aefcir;\u69c2ubs\u0100;u\u1abb\u1abc\u6663it\xbb\u1abc\u02ec\u1ac7\u1ad4\u1afa\0\u1b0aon\u0100;e\u1acd\u1ace\u403a\u0100;q\xc7\xc6\u026d\u1ad9\0\0\u1ae2a\u0100;t\u1ade\u1adf\u402c;\u4040\u0180;fl\u1ae8\u1ae9\u1aeb\u6201\xee\u1160e\u0100mx\u1af1\u1af6ent\xbb\u1ae9e\xf3\u024d\u01e7\u1afe\0\u1b07\u0100;d\u12bb\u1b02ot;\u6a6dn\xf4\u0246\u0180fry\u1b10\u1b14\u1b17;\uc000\ud835\udd54o\xe4\u0254\u8100\xa9;s\u0155\u1b1dr;\u6117\u0100ao\u1b25\u1b29rr;\u61b5ss;\u6717\u0100cu\u1b32\u1b37r;\uc000\ud835\udcb8\u0100bp\u1b3c\u1b44\u0100;e\u1b41\u1b42\u6acf;\u6ad1\u0100;e\u1b49\u1b4a\u6ad0;\u6ad2dot;\u62ef\u0380delprvw\u1b60\u1b6c\u1b77\u1b82\u1bac\u1bd4\u1bf9arr\u0100lr\u1b68\u1b6a;\u6938;\u6935\u0270\u1b72\0\0\u1b75r;\u62dec;\u62dfarr\u0100;p\u1b7f\u1b80\u61b6;\u693d\u0300;bcdos\u1b8f\u1b90\u1b96\u1ba1\u1ba5\u1ba8\u622arcap;\u6a48\u0100au\u1b9b\u1b9ep;\u6a46p;\u6a4aot;\u628dr;\u6a45;\uc000\u222a\ufe00\u0200alrv\u1bb5\u1bbf\u1bde\u1be3rr\u0100;m\u1bbc\u1bbd\u61b7;\u693cy\u0180evw\u1bc7\u1bd4\u1bd8q\u0270\u1bce\0\0\u1bd2re\xe3\u1b73u\xe3\u1b75ee;\u62ceedge;\u62cfen\u803b\xa4\u40a4earrow\u0100lr\u1bee\u1bf3eft\xbb\u1b80ight\xbb\u1bbde\xe4\u1bdd\u0100ci\u1c01\u1c07onin\xf4\u01f7nt;\u6231lcty;\u632d\u0980AHabcdefhijlorstuwz\u1c38\u1c3b\u1c3f\u1c5d\u1c69\u1c75\u1c8a\u1c9e\u1cac\u1cb7\u1cfb\u1cff\u1d0d\u1d7b\u1d91\u1dab\u1dbb\u1dc6\u1dcdr\xf2\u0381ar;\u6965\u0200glrs\u1c48\u1c4d\u1c52\u1c54ger;\u6020eth;\u6138\xf2\u1133h\u0100;v\u1c5a\u1c5b\u6010\xbb\u090a\u016b\u1c61\u1c67arow;\u690fa\xe3\u0315\u0100ay\u1c6e\u1c73ron;\u410f;\u4434\u0180;ao\u0332\u1c7c\u1c84\u0100gr\u02bf\u1c81r;\u61catseq;\u6a77\u0180glm\u1c91\u1c94\u1c98\u803b\xb0\u40b0ta;\u43b4ptyv;\u69b1\u0100ir\u1ca3\u1ca8sht;\u697f;\uc000\ud835\udd21ar\u0100lr\u1cb3\u1cb5\xbb\u08dc\xbb\u101e\u0280aegsv\u1cc2\u0378\u1cd6\u1cdc\u1ce0m\u0180;os\u0326\u1cca\u1cd4nd\u0100;s\u0326\u1cd1uit;\u6666amma;\u43ddin;\u62f2\u0180;io\u1ce7\u1ce8\u1cf8\u40f7de\u8100\xf7;o\u1ce7\u1cf0ntimes;\u62c7n\xf8\u1cf7cy;\u4452c\u026f\u1d06\0\0\u1d0arn;\u631eop;\u630d\u0280lptuw\u1d18\u1d1d\u1d22\u1d49\u1d55lar;\u4024f;\uc000\ud835\udd55\u0280;emps\u030b\u1d2d\u1d37\u1d3d\u1d42q\u0100;d\u0352\u1d33ot;\u6251inus;\u6238lus;\u6214quare;\u62a1blebarwedg\xe5\xfan\u0180adh\u112e\u1d5d\u1d67ownarrow\xf3\u1c83arpoon\u0100lr\u1d72\u1d76ef\xf4\u1cb4igh\xf4\u1cb6\u0162\u1d7f\u1d85karo\xf7\u0f42\u026f\u1d8a\0\0\u1d8ern;\u631fop;\u630c\u0180cot\u1d98\u1da3\u1da6\u0100ry\u1d9d\u1da1;\uc000\ud835\udcb9;\u4455l;\u69f6rok;\u4111\u0100dr\u1db0\u1db4ot;\u62f1i\u0100;f\u1dba\u1816\u65bf\u0100ah\u1dc0\u1dc3r\xf2\u0429a\xf2\u0fa6angle;\u69a6\u0100ci\u1dd2\u1dd5y;\u445fgrarr;\u67ff\u0900Dacdefglmnopqrstux\u1e01\u1e09\u1e19\u1e38\u0578\u1e3c\u1e49\u1e61\u1e7e\u1ea5\u1eaf\u1ebd\u1ee1\u1f2a\u1f37\u1f44\u1f4e\u1f5a\u0100Do\u1e06\u1d34o\xf4\u1c89\u0100cs\u1e0e\u1e14ute\u803b\xe9\u40e9ter;\u6a6e\u0200aioy\u1e22\u1e27\u1e31\u1e36ron;\u411br\u0100;c\u1e2d\u1e2e\u6256\u803b\xea\u40ealon;\u6255;\u444dot;\u4117\u0100Dr\u1e41\u1e45ot;\u6252;\uc000\ud835\udd22\u0180;rs\u1e50\u1e51\u1e57\u6a9aave\u803b\xe8\u40e8\u0100;d\u1e5c\u1e5d\u6a96ot;\u6a98\u0200;ils\u1e6a\u1e6b\u1e72\u1e74\u6a99nters;\u63e7;\u6113\u0100;d\u1e79\u1e7a\u6a95ot;\u6a97\u0180aps\u1e85\u1e89\u1e97cr;\u4113ty\u0180;sv\u1e92\u1e93\u1e95\u6205et\xbb\u1e93p\u01001;\u1e9d\u1ea4\u0133\u1ea1\u1ea3;\u6004;\u6005\u6003\u0100gs\u1eaa\u1eac;\u414bp;\u6002\u0100gp\u1eb4\u1eb8on;\u4119f;\uc000\ud835\udd56\u0180als\u1ec4\u1ece\u1ed2r\u0100;s\u1eca\u1ecb\u62d5l;\u69e3us;\u6a71i\u0180;lv\u1eda\u1edb\u1edf\u43b5on\xbb\u1edb;\u43f5\u0200csuv\u1eea\u1ef3\u1f0b\u1f23\u0100io\u1eef\u1e31rc\xbb\u1e2e\u0269\u1ef9\0\0\u1efb\xed\u0548ant\u0100gl\u1f02\u1f06tr\xbb\u1e5dess\xbb\u1e7a\u0180aei\u1f12\u1f16\u1f1als;\u403dst;\u625fv\u0100;D\u0235\u1f20D;\u6a78parsl;\u69e5\u0100Da\u1f2f\u1f33ot;\u6253rr;\u6971\u0180cdi\u1f3e\u1f41\u1ef8r;\u612fo\xf4\u0352\u0100ah\u1f49\u1f4b;\u43b7\u803b\xf0\u40f0\u0100mr\u1f53\u1f57l\u803b\xeb\u40ebo;\u60ac\u0180cip\u1f61\u1f64\u1f67l;\u4021s\xf4\u056e\u0100eo\u1f6c\u1f74ctatio\xee\u0559nential\xe5\u0579\u09e1\u1f92\0\u1f9e\0\u1fa1\u1fa7\0\0\u1fc6\u1fcc\0\u1fd3\0\u1fe6\u1fea\u2000\0\u2008\u205allingdotse\xf1\u1e44y;\u4444male;\u6640\u0180ilr\u1fad\u1fb3\u1fc1lig;\u8000\ufb03\u0269\u1fb9\0\0\u1fbdg;\u8000\ufb00ig;\u8000\ufb04;\uc000\ud835\udd23lig;\u8000\ufb01lig;\uc000fj\u0180alt\u1fd9\u1fdc\u1fe1t;\u666dig;\u8000\ufb02ns;\u65b1of;\u4192\u01f0\u1fee\0\u1ff3f;\uc000\ud835\udd57\u0100ak\u05bf\u1ff7\u0100;v\u1ffc\u1ffd\u62d4;\u6ad9artint;\u6a0d\u0100ao\u200c\u2055\u0100cs\u2011\u2052\u03b1\u201a\u2030\u2038\u2045\u2048\0\u2050\u03b2\u2022\u2025\u2027\u202a\u202c\0\u202e\u803b\xbd\u40bd;\u6153\u803b\xbc\u40bc;\u6155;\u6159;\u615b\u01b3\u2034\0\u2036;\u6154;\u6156\u02b4\u203e\u2041\0\0\u2043\u803b\xbe\u40be;\u6157;\u615c5;\u6158\u01b6\u204c\0\u204e;\u615a;\u615d8;\u615el;\u6044wn;\u6322cr;\uc000\ud835\udcbb\u0880Eabcdefgijlnorstv\u2082\u2089\u209f\u20a5\u20b0\u20b4\u20f0\u20f5\u20fa\u20ff\u2103\u2112\u2138\u0317\u213e\u2152\u219e\u0100;l\u064d\u2087;\u6a8c\u0180cmp\u2090\u2095\u209dute;\u41f5ma\u0100;d\u209c\u1cda\u43b3;\u6a86reve;\u411f\u0100iy\u20aa\u20aerc;\u411d;\u4433ot;\u4121\u0200;lqs\u063e\u0642\u20bd\u20c9\u0180;qs\u063e\u064c\u20c4lan\xf4\u0665\u0200;cdl\u0665\u20d2\u20d5\u20e5c;\u6aa9ot\u0100;o\u20dc\u20dd\u6a80\u0100;l\u20e2\u20e3\u6a82;\u6a84\u0100;e\u20ea\u20ed\uc000\u22db\ufe00s;\u6a94r;\uc000\ud835\udd24\u0100;g\u0673\u061bmel;\u6137cy;\u4453\u0200;Eaj\u065a\u210c\u210e\u2110;\u6a92;\u6aa5;\u6aa4\u0200Eaes\u211b\u211d\u2129\u2134;\u6269p\u0100;p\u2123\u2124\u6a8arox\xbb\u2124\u0100;q\u212e\u212f\u6a88\u0100;q\u212e\u211bim;\u62e7pf;\uc000\ud835\udd58\u0100ci\u2143\u2146r;\u610am\u0180;el\u066b\u214e\u2150;\u6a8e;\u6a90\u8300>;cdlqr\u05ee\u2160\u216a\u216e\u2173\u2179\u0100ci\u2165\u2167;\u6aa7r;\u6a7aot;\u62d7Par;\u6995uest;\u6a7c\u0280adels\u2184\u216a\u2190\u0656\u219b\u01f0\u2189\0\u218epro\xf8\u209er;\u6978q\u0100lq\u063f\u2196les\xf3\u2088i\xed\u066b\u0100en\u21a3\u21adrtneqq;\uc000\u2269\ufe00\xc5\u21aa\u0500Aabcefkosy\u21c4\u21c7\u21f1\u21f5\u21fa\u2218\u221d\u222f\u2268\u227dr\xf2\u03a0\u0200ilmr\u21d0\u21d4\u21d7\u21dbrs\xf0\u1484f\xbb\u2024il\xf4\u06a9\u0100dr\u21e0\u21e4cy;\u444a\u0180;cw\u08f4\u21eb\u21efir;\u6948;\u61adar;\u610firc;\u4125\u0180alr\u2201\u220e\u2213rts\u0100;u\u2209\u220a\u6665it\xbb\u220alip;\u6026con;\u62b9r;\uc000\ud835\udd25s\u0100ew\u2223\u2229arow;\u6925arow;\u6926\u0280amopr\u223a\u223e\u2243\u225e\u2263rr;\u61fftht;\u623bk\u0100lr\u2249\u2253eftarrow;\u61a9ightarrow;\u61aaf;\uc000\ud835\udd59bar;\u6015\u0180clt\u226f\u2274\u2278r;\uc000\ud835\udcbdas\xe8\u21f4rok;\u4127\u0100bp\u2282\u2287ull;\u6043hen\xbb\u1c5b\u0ae1\u22a3\0\u22aa\0\u22b8\u22c5\u22ce\0\u22d5\u22f3\0\0\u22f8\u2322\u2367\u2362\u237f\0\u2386\u23aa\u23b4cute\u803b\xed\u40ed\u0180;iy\u0771\u22b0\u22b5rc\u803b\xee\u40ee;\u4438\u0100cx\u22bc\u22bfy;\u4435cl\u803b\xa1\u40a1\u0100fr\u039f\u22c9;\uc000\ud835\udd26rave\u803b\xec\u40ec\u0200;ino\u073e\u22dd\u22e9\u22ee\u0100in\u22e2\u22e6nt;\u6a0ct;\u622dfin;\u69dcta;\u6129lig;\u4133\u0180aop\u22fe\u231a\u231d\u0180cgt\u2305\u2308\u2317r;\u412b\u0180elp\u071f\u230f\u2313in\xe5\u078ear\xf4\u0720h;\u4131f;\u62b7ed;\u41b5\u0280;cfot\u04f4\u232c\u2331\u233d\u2341are;\u6105in\u0100;t\u2338\u2339\u621eie;\u69dddo\xf4\u2319\u0280;celp\u0757\u234c\u2350\u235b\u2361al;\u62ba\u0100gr\u2355\u2359er\xf3\u1563\xe3\u234darhk;\u6a17rod;\u6a3c\u0200cgpt\u236f\u2372\u2376\u237by;\u4451on;\u412ff;\uc000\ud835\udd5aa;\u43b9uest\u803b\xbf\u40bf\u0100ci\u238a\u238fr;\uc000\ud835\udcben\u0280;Edsv\u04f4\u239b\u239d\u23a1\u04f3;\u62f9ot;\u62f5\u0100;v\u23a6\u23a7\u62f4;\u62f3\u0100;i\u0777\u23aelde;\u4129\u01eb\u23b8\0\u23bccy;\u4456l\u803b\xef\u40ef\u0300cfmosu\u23cc\u23d7\u23dc\u23e1\u23e7\u23f5\u0100iy\u23d1\u23d5rc;\u4135;\u4439r;\uc000\ud835\udd27ath;\u4237pf;\uc000\ud835\udd5b\u01e3\u23ec\0\u23f1r;\uc000\ud835\udcbfrcy;\u4458kcy;\u4454\u0400acfghjos\u240b\u2416\u2422\u2427\u242d\u2431\u2435\u243bppa\u0100;v\u2413\u2414\u43ba;\u43f0\u0100ey\u241b\u2420dil;\u4137;\u443ar;\uc000\ud835\udd28reen;\u4138cy;\u4445cy;\u445cpf;\uc000\ud835\udd5ccr;\uc000\ud835\udcc0\u0b80ABEHabcdefghjlmnoprstuv\u2470\u2481\u2486\u248d\u2491\u250e\u253d\u255a\u2580\u264e\u265e\u2665\u2679\u267d\u269a\u26b2\u26d8\u275d\u2768\u278b\u27c0\u2801\u2812\u0180art\u2477\u247a\u247cr\xf2\u09c6\xf2\u0395ail;\u691barr;\u690e\u0100;g\u0994\u248b;\u6a8bar;\u6962\u0963\u24a5\0\u24aa\0\u24b1\0\0\0\0\0\u24b5\u24ba\0\u24c6\u24c8\u24cd\0\u24f9ute;\u413amptyv;\u69b4ra\xee\u084cbda;\u43bbg\u0180;dl\u088e\u24c1\u24c3;\u6991\xe5\u088e;\u6a85uo\u803b\xab\u40abr\u0400;bfhlpst\u0899\u24de\u24e6\u24e9\u24eb\u24ee\u24f1\u24f5\u0100;f\u089d\u24e3s;\u691fs;\u691d\xeb\u2252p;\u61abl;\u6939im;\u6973l;\u61a2\u0180;ae\u24ff\u2500\u2504\u6aabil;\u6919\u0100;s\u2509\u250a\u6aad;\uc000\u2aad\ufe00\u0180abr\u2515\u2519\u251drr;\u690crk;\u6772\u0100ak\u2522\u252cc\u0100ek\u2528\u252a;\u407b;\u405b\u0100es\u2531\u2533;\u698bl\u0100du\u2539\u253b;\u698f;\u698d\u0200aeuy\u2546\u254b\u2556\u2558ron;\u413e\u0100di\u2550\u2554il;\u413c\xec\u08b0\xe2\u2529;\u443b\u0200cqrs\u2563\u2566\u256d\u257da;\u6936uo\u0100;r\u0e19\u1746\u0100du\u2572\u2577har;\u6967shar;\u694bh;\u61b2\u0280;fgqs\u258b\u258c\u0989\u25f3\u25ff\u6264t\u0280ahlrt\u2598\u25a4\u25b7\u25c2\u25e8rrow\u0100;t\u0899\u25a1a\xe9\u24f6arpoon\u0100du\u25af\u25b4own\xbb\u045ap\xbb\u0966eftarrows;\u61c7ight\u0180ahs\u25cd\u25d6\u25derrow\u0100;s\u08f4\u08a7arpoon\xf3\u0f98quigarro\xf7\u21f0hreetimes;\u62cb\u0180;qs\u258b\u0993\u25falan\xf4\u09ac\u0280;cdgs\u09ac\u260a\u260d\u261d\u2628c;\u6aa8ot\u0100;o\u2614\u2615\u6a7f\u0100;r\u261a\u261b\u6a81;\u6a83\u0100;e\u2622\u2625\uc000\u22da\ufe00s;\u6a93\u0280adegs\u2633\u2639\u263d\u2649\u264bppro\xf8\u24c6ot;\u62d6q\u0100gq\u2643\u2645\xf4\u0989gt\xf2\u248c\xf4\u099bi\xed\u09b2\u0180ilr\u2655\u08e1\u265asht;\u697c;\uc000\ud835\udd29\u0100;E\u099c\u2663;\u6a91\u0161\u2669\u2676r\u0100du\u25b2\u266e\u0100;l\u0965\u2673;\u696alk;\u6584cy;\u4459\u0280;acht\u0a48\u2688\u268b\u2691\u2696r\xf2\u25c1orne\xf2\u1d08ard;\u696bri;\u65fa\u0100io\u269f\u26a4dot;\u4140ust\u0100;a\u26ac\u26ad\u63b0che\xbb\u26ad\u0200Eaes\u26bb\u26bd\u26c9\u26d4;\u6268p\u0100;p\u26c3\u26c4\u6a89rox\xbb\u26c4\u0100;q\u26ce\u26cf\u6a87\u0100;q\u26ce\u26bbim;\u62e6\u0400abnoptwz\u26e9\u26f4\u26f7\u271a\u272f\u2741\u2747\u2750\u0100nr\u26ee\u26f1g;\u67ecr;\u61fdr\xeb\u08c1g\u0180lmr\u26ff\u270d\u2714eft\u0100ar\u09e6\u2707ight\xe1\u09f2apsto;\u67fcight\xe1\u09fdparrow\u0100lr\u2725\u2729ef\xf4\u24edight;\u61ac\u0180afl\u2736\u2739\u273dr;\u6985;\uc000\ud835\udd5dus;\u6a2dimes;\u6a34\u0161\u274b\u274fst;\u6217\xe1\u134e\u0180;ef\u2757\u2758\u1800\u65cange\xbb\u2758ar\u0100;l\u2764\u2765\u4028t;\u6993\u0280achmt\u2773\u2776\u277c\u2785\u2787r\xf2\u08a8orne\xf2\u1d8car\u0100;d\u0f98\u2783;\u696d;\u600eri;\u62bf\u0300achiqt\u2798\u279d\u0a40\u27a2\u27ae\u27bbquo;\u6039r;\uc000\ud835\udcc1m\u0180;eg\u09b2\u27aa\u27ac;\u6a8d;\u6a8f\u0100bu\u252a\u27b3o\u0100;r\u0e1f\u27b9;\u601arok;\u4142\u8400<;cdhilqr\u082b\u27d2\u2639\u27dc\u27e0\u27e5\u27ea\u27f0\u0100ci\u27d7\u27d9;\u6aa6r;\u6a79re\xe5\u25f2mes;\u62c9arr;\u6976uest;\u6a7b\u0100Pi\u27f5\u27f9ar;\u6996\u0180;ef\u2800\u092d\u181b\u65c3r\u0100du\u2807\u280dshar;\u694ahar;\u6966\u0100en\u2817\u2821rtneqq;\uc000\u2268\ufe00\xc5\u281e\u0700Dacdefhilnopsu\u2840\u2845\u2882\u288e\u2893\u28a0\u28a5\u28a8\u28da\u28e2\u28e4\u0a83\u28f3\u2902Dot;\u623a\u0200clpr\u284e\u2852\u2863\u287dr\u803b\xaf\u40af\u0100et\u2857\u2859;\u6642\u0100;e\u285e\u285f\u6720se\xbb\u285f\u0100;s\u103b\u2868to\u0200;dlu\u103b\u2873\u2877\u287bow\xee\u048cef\xf4\u090f\xf0\u13d1ker;\u65ae\u0100oy\u2887\u288cmma;\u6a29;\u443cash;\u6014asuredangle\xbb\u1626r;\uc000\ud835\udd2ao;\u6127\u0180cdn\u28af\u28b4\u28c9ro\u803b\xb5\u40b5\u0200;acd\u1464\u28bd\u28c0\u28c4s\xf4\u16a7ir;\u6af0ot\u80bb\xb7\u01b5us\u0180;bd\u28d2\u1903\u28d3\u6212\u0100;u\u1d3c\u28d8;\u6a2a\u0163\u28de\u28e1p;\u6adb\xf2\u2212\xf0\u0a81\u0100dp\u28e9\u28eeels;\u62a7f;\uc000\ud835\udd5e\u0100ct\u28f8\u28fdr;\uc000\ud835\udcc2pos\xbb\u159d\u0180;lm\u2909\u290a\u290d\u43bctimap;\u62b8\u0c00GLRVabcdefghijlmoprstuvw\u2942\u2953\u297e\u2989\u2998\u29da\u29e9\u2a15\u2a1a\u2a58\u2a5d\u2a83\u2a95\u2aa4\u2aa8\u2b04\u2b07\u2b44\u2b7f\u2bae\u2c34\u2c67\u2c7c\u2ce9\u0100gt\u2947\u294b;\uc000\u22d9\u0338\u0100;v\u2950\u0bcf\uc000\u226b\u20d2\u0180elt\u295a\u2972\u2976ft\u0100ar\u2961\u2967rrow;\u61cdightarrow;\u61ce;\uc000\u22d8\u0338\u0100;v\u297b\u0c47\uc000\u226a\u20d2ightarrow;\u61cf\u0100Dd\u298e\u2993ash;\u62afash;\u62ae\u0280bcnpt\u29a3\u29a7\u29ac\u29b1\u29ccla\xbb\u02deute;\u4144g;\uc000\u2220\u20d2\u0280;Eiop\u0d84\u29bc\u29c0\u29c5\u29c8;\uc000\u2a70\u0338d;\uc000\u224b\u0338s;\u4149ro\xf8\u0d84ur\u0100;a\u29d3\u29d4\u666el\u0100;s\u29d3\u0b38\u01f3\u29df\0\u29e3p\u80bb\xa0\u0b37mp\u0100;e\u0bf9\u0c00\u0280aeouy\u29f4\u29fe\u2a03\u2a10\u2a13\u01f0\u29f9\0\u29fb;\u6a43on;\u4148dil;\u4146ng\u0100;d\u0d7e\u2a0aot;\uc000\u2a6d\u0338p;\u6a42;\u443dash;\u6013\u0380;Aadqsx\u0b92\u2a29\u2a2d\u2a3b\u2a41\u2a45\u2a50rr;\u61d7r\u0100hr\u2a33\u2a36k;\u6924\u0100;o\u13f2\u13f0ot;\uc000\u2250\u0338ui\xf6\u0b63\u0100ei\u2a4a\u2a4ear;\u6928\xed\u0b98ist\u0100;s\u0ba0\u0b9fr;\uc000\ud835\udd2b\u0200Eest\u0bc5\u2a66\u2a79\u2a7c\u0180;qs\u0bbc\u2a6d\u0be1\u0180;qs\u0bbc\u0bc5\u2a74lan\xf4\u0be2i\xed\u0bea\u0100;r\u0bb6\u2a81\xbb\u0bb7\u0180Aap\u2a8a\u2a8d\u2a91r\xf2\u2971rr;\u61aear;\u6af2\u0180;sv\u0f8d\u2a9c\u0f8c\u0100;d\u2aa1\u2aa2\u62fc;\u62facy;\u445a\u0380AEadest\u2ab7\u2aba\u2abe\u2ac2\u2ac5\u2af6\u2af9r\xf2\u2966;\uc000\u2266\u0338rr;\u619ar;\u6025\u0200;fqs\u0c3b\u2ace\u2ae3\u2aeft\u0100ar\u2ad4\u2ad9rro\xf7\u2ac1ightarro\xf7\u2a90\u0180;qs\u0c3b\u2aba\u2aealan\xf4\u0c55\u0100;s\u0c55\u2af4\xbb\u0c36i\xed\u0c5d\u0100;r\u0c35\u2afei\u0100;e\u0c1a\u0c25i\xe4\u0d90\u0100pt\u2b0c\u2b11f;\uc000\ud835\udd5f\u8180\xac;in\u2b19\u2b1a\u2b36\u40acn\u0200;Edv\u0b89\u2b24\u2b28\u2b2e;\uc000\u22f9\u0338ot;\uc000\u22f5\u0338\u01e1\u0b89\u2b33\u2b35;\u62f7;\u62f6i\u0100;v\u0cb8\u2b3c\u01e1\u0cb8\u2b41\u2b43;\u62fe;\u62fd\u0180aor\u2b4b\u2b63\u2b69r\u0200;ast\u0b7b\u2b55\u2b5a\u2b5flle\xec\u0b7bl;\uc000\u2afd\u20e5;\uc000\u2202\u0338lint;\u6a14\u0180;ce\u0c92\u2b70\u2b73u\xe5\u0ca5\u0100;c\u0c98\u2b78\u0100;e\u0c92\u2b7d\xf1\u0c98\u0200Aait\u2b88\u2b8b\u2b9d\u2ba7r\xf2\u2988rr\u0180;cw\u2b94\u2b95\u2b99\u619b;\uc000\u2933\u0338;\uc000\u219d\u0338ghtarrow\xbb\u2b95ri\u0100;e\u0ccb\u0cd6\u0380chimpqu\u2bbd\u2bcd\u2bd9\u2b04\u0b78\u2be4\u2bef\u0200;cer\u0d32\u2bc6\u0d37\u2bc9u\xe5\u0d45;\uc000\ud835\udcc3ort\u026d\u2b05\0\0\u2bd6ar\xe1\u2b56m\u0100;e\u0d6e\u2bdf\u0100;q\u0d74\u0d73su\u0100bp\u2beb\u2bed\xe5\u0cf8\xe5\u0d0b\u0180bcp\u2bf6\u2c11\u2c19\u0200;Ees\u2bff\u2c00\u0d22\u2c04\u6284;\uc000\u2ac5\u0338et\u0100;e\u0d1b\u2c0bq\u0100;q\u0d23\u2c00c\u0100;e\u0d32\u2c17\xf1\u0d38\u0200;Ees\u2c22\u2c23\u0d5f\u2c27\u6285;\uc000\u2ac6\u0338et\u0100;e\u0d58\u2c2eq\u0100;q\u0d60\u2c23\u0200gilr\u2c3d\u2c3f\u2c45\u2c47\xec\u0bd7lde\u803b\xf1\u40f1\xe7\u0c43iangle\u0100lr\u2c52\u2c5ceft\u0100;e\u0c1a\u2c5a\xf1\u0c26ight\u0100;e\u0ccb\u2c65\xf1\u0cd7\u0100;m\u2c6c\u2c6d\u43bd\u0180;es\u2c74\u2c75\u2c79\u4023ro;\u6116p;\u6007\u0480DHadgilrs\u2c8f\u2c94\u2c99\u2c9e\u2ca3\u2cb0\u2cb6\u2cd3\u2ce3ash;\u62adarr;\u6904p;\uc000\u224d\u20d2ash;\u62ac\u0100et\u2ca8\u2cac;\uc000\u2265\u20d2;\uc000>\u20d2nfin;\u69de\u0180Aet\u2cbd\u2cc1\u2cc5rr;\u6902;\uc000\u2264\u20d2\u0100;r\u2cca\u2ccd\uc000<\u20d2ie;\uc000\u22b4\u20d2\u0100At\u2cd8\u2cdcrr;\u6903rie;\uc000\u22b5\u20d2im;\uc000\u223c\u20d2\u0180Aan\u2cf0\u2cf4\u2d02rr;\u61d6r\u0100hr\u2cfa\u2cfdk;\u6923\u0100;o\u13e7\u13e5ear;\u6927\u1253\u1a95\0\0\0\0\0\0\0\0\0\0\0\0\0\u2d2d\0\u2d38\u2d48\u2d60\u2d65\u2d72\u2d84\u1b07\0\0\u2d8d\u2dab\0\u2dc8\u2dce\0\u2ddc\u2e19\u2e2b\u2e3e\u2e43\u0100cs\u2d31\u1a97ute\u803b\xf3\u40f3\u0100iy\u2d3c\u2d45r\u0100;c\u1a9e\u2d42\u803b\xf4\u40f4;\u443e\u0280abios\u1aa0\u2d52\u2d57\u01c8\u2d5alac;\u4151v;\u6a38old;\u69bclig;\u4153\u0100cr\u2d69\u2d6dir;\u69bf;\uc000\ud835\udd2c\u036f\u2d79\0\0\u2d7c\0\u2d82n;\u42dbave\u803b\xf2\u40f2;\u69c1\u0100bm\u2d88\u0df4ar;\u69b5\u0200acit\u2d95\u2d98\u2da5\u2da8r\xf2\u1a80\u0100ir\u2d9d\u2da0r;\u69beoss;\u69bbn\xe5\u0e52;\u69c0\u0180aei\u2db1\u2db5\u2db9cr;\u414dga;\u43c9\u0180cdn\u2dc0\u2dc5\u01cdron;\u43bf;\u69b6pf;\uc000\ud835\udd60\u0180ael\u2dd4\u2dd7\u01d2r;\u69b7rp;\u69b9\u0380;adiosv\u2dea\u2deb\u2dee\u2e08\u2e0d\u2e10\u2e16\u6228r\xf2\u1a86\u0200;efm\u2df7\u2df8\u2e02\u2e05\u6a5dr\u0100;o\u2dfe\u2dff\u6134f\xbb\u2dff\u803b\xaa\u40aa\u803b\xba\u40bagof;\u62b6r;\u6a56lope;\u6a57;\u6a5b\u0180clo\u2e1f\u2e21\u2e27\xf2\u2e01ash\u803b\xf8\u40f8l;\u6298i\u016c\u2e2f\u2e34de\u803b\xf5\u40f5es\u0100;a\u01db\u2e3as;\u6a36ml\u803b\xf6\u40f6bar;\u633d\u0ae1\u2e5e\0\u2e7d\0\u2e80\u2e9d\0\u2ea2\u2eb9\0\0\u2ecb\u0e9c\0\u2f13\0\0\u2f2b\u2fbc\0\u2fc8r\u0200;ast\u0403\u2e67\u2e72\u0e85\u8100\xb6;l\u2e6d\u2e6e\u40b6le\xec\u0403\u0269\u2e78\0\0\u2e7bm;\u6af3;\u6afdy;\u443fr\u0280cimpt\u2e8b\u2e8f\u2e93\u1865\u2e97nt;\u4025od;\u402eil;\u6030enk;\u6031r;\uc000\ud835\udd2d\u0180imo\u2ea8\u2eb0\u2eb4\u0100;v\u2ead\u2eae\u43c6;\u43d5ma\xf4\u0a76ne;\u660e\u0180;tv\u2ebf\u2ec0\u2ec8\u43c0chfork\xbb\u1ffd;\u43d6\u0100au\u2ecf\u2edfn\u0100ck\u2ed5\u2eddk\u0100;h\u21f4\u2edb;\u610e\xf6\u21f4s\u0480;abcdemst\u2ef3\u2ef4\u1908\u2ef9\u2efd\u2f04\u2f06\u2f0a\u2f0e\u402bcir;\u6a23ir;\u6a22\u0100ou\u1d40\u2f02;\u6a25;\u6a72n\u80bb\xb1\u0e9dim;\u6a26wo;\u6a27\u0180ipu\u2f19\u2f20\u2f25ntint;\u6a15f;\uc000\ud835\udd61nd\u803b\xa3\u40a3\u0500;Eaceinosu\u0ec8\u2f3f\u2f41\u2f44\u2f47\u2f81\u2f89\u2f92\u2f7e\u2fb6;\u6ab3p;\u6ab7u\xe5\u0ed9\u0100;c\u0ece\u2f4c\u0300;acens\u0ec8\u2f59\u2f5f\u2f66\u2f68\u2f7eppro\xf8\u2f43urlye\xf1\u0ed9\xf1\u0ece\u0180aes\u2f6f\u2f76\u2f7approx;\u6ab9qq;\u6ab5im;\u62e8i\xed\u0edfme\u0100;s\u2f88\u0eae\u6032\u0180Eas\u2f78\u2f90\u2f7a\xf0\u2f75\u0180dfp\u0eec\u2f99\u2faf\u0180als\u2fa0\u2fa5\u2faalar;\u632eine;\u6312urf;\u6313\u0100;t\u0efb\u2fb4\xef\u0efbrel;\u62b0\u0100ci\u2fc0\u2fc5r;\uc000\ud835\udcc5;\u43c8ncsp;\u6008\u0300fiopsu\u2fda\u22e2\u2fdf\u2fe5\u2feb\u2ff1r;\uc000\ud835\udd2epf;\uc000\ud835\udd62rime;\u6057cr;\uc000\ud835\udcc6\u0180aeo\u2ff8\u3009\u3013t\u0100ei\u2ffe\u3005rnion\xf3\u06b0nt;\u6a16st\u0100;e\u3010\u3011\u403f\xf1\u1f19\xf4\u0f14\u0a80ABHabcdefhilmnoprstux\u3040\u3051\u3055\u3059\u30e0\u310e\u312b\u3147\u3162\u3172\u318e\u3206\u3215\u3224\u3229\u3258\u326e\u3272\u3290\u32b0\u32b7\u0180art\u3047\u304a\u304cr\xf2\u10b3\xf2\u03ddail;\u691car\xf2\u1c65ar;\u6964\u0380cdenqrt\u3068\u3075\u3078\u307f\u308f\u3094\u30cc\u0100eu\u306d\u3071;\uc000\u223d\u0331te;\u4155i\xe3\u116emptyv;\u69b3g\u0200;del\u0fd1\u3089\u308b\u308d;\u6992;\u69a5\xe5\u0fd1uo\u803b\xbb\u40bbr\u0580;abcfhlpstw\u0fdc\u30ac\u30af\u30b7\u30b9\u30bc\u30be\u30c0\u30c3\u30c7\u30cap;\u6975\u0100;f\u0fe0\u30b4s;\u6920;\u6933s;\u691e\xeb\u225d\xf0\u272el;\u6945im;\u6974l;\u61a3;\u619d\u0100ai\u30d1\u30d5il;\u691ao\u0100;n\u30db\u30dc\u6236al\xf3\u0f1e\u0180abr\u30e7\u30ea\u30eer\xf2\u17e5rk;\u6773\u0100ak\u30f3\u30fdc\u0100ek\u30f9\u30fb;\u407d;\u405d\u0100es\u3102\u3104;\u698cl\u0100du\u310a\u310c;\u698e;\u6990\u0200aeuy\u3117\u311c\u3127\u3129ron;\u4159\u0100di\u3121\u3125il;\u4157\xec\u0ff2\xe2\u30fa;\u4440\u0200clqs\u3134\u3137\u313d\u3144a;\u6937dhar;\u6969uo\u0100;r\u020e\u020dh;\u61b3\u0180acg\u314e\u315f\u0f44l\u0200;ips\u0f78\u3158\u315b\u109cn\xe5\u10bbar\xf4\u0fa9t;\u65ad\u0180ilr\u3169\u1023\u316esht;\u697d;\uc000\ud835\udd2f\u0100ao\u3177\u3186r\u0100du\u317d\u317f\xbb\u047b\u0100;l\u1091\u3184;\u696c\u0100;v\u318b\u318c\u43c1;\u43f1\u0180gns\u3195\u31f9\u31fcht\u0300ahlrst\u31a4\u31b0\u31c2\u31d8\u31e4\u31eerrow\u0100;t\u0fdc\u31ada\xe9\u30c8arpoon\u0100du\u31bb\u31bfow\xee\u317ep\xbb\u1092eft\u0100ah\u31ca\u31d0rrow\xf3\u0feaarpoon\xf3\u0551ightarrows;\u61c9quigarro\xf7\u30cbhreetimes;\u62ccg;\u42daingdotse\xf1\u1f32\u0180ahm\u320d\u3210\u3213r\xf2\u0feaa\xf2\u0551;\u600foust\u0100;a\u321e\u321f\u63b1che\xbb\u321fmid;\u6aee\u0200abpt\u3232\u323d\u3240\u3252\u0100nr\u3237\u323ag;\u67edr;\u61fer\xeb\u1003\u0180afl\u3247\u324a\u324er;\u6986;\uc000\ud835\udd63us;\u6a2eimes;\u6a35\u0100ap\u325d\u3267r\u0100;g\u3263\u3264\u4029t;\u6994olint;\u6a12ar\xf2\u31e3\u0200achq\u327b\u3280\u10bc\u3285quo;\u603ar;\uc000\ud835\udcc7\u0100bu\u30fb\u328ao\u0100;r\u0214\u0213\u0180hir\u3297\u329b\u32a0re\xe5\u31f8mes;\u62cai\u0200;efl\u32aa\u1059\u1821\u32ab\u65b9tri;\u69celuhar;\u6968;\u611e\u0d61\u32d5\u32db\u32df\u332c\u3338\u3371\0\u337a\u33a4\0\0\u33ec\u33f0\0\u3428\u3448\u345a\u34ad\u34b1\u34ca\u34f1\0\u3616\0\0\u3633cute;\u415bqu\xef\u27ba\u0500;Eaceinpsy\u11ed\u32f3\u32f5\u32ff\u3302\u330b\u330f\u331f\u3326\u3329;\u6ab4\u01f0\u32fa\0\u32fc;\u6ab8on;\u4161u\xe5\u11fe\u0100;d\u11f3\u3307il;\u415frc;\u415d\u0180Eas\u3316\u3318\u331b;\u6ab6p;\u6abaim;\u62e9olint;\u6a13i\xed\u1204;\u4441ot\u0180;be\u3334\u1d47\u3335\u62c5;\u6a66\u0380Aacmstx\u3346\u334a\u3357\u335b\u335e\u3363\u336drr;\u61d8r\u0100hr\u3350\u3352\xeb\u2228\u0100;o\u0a36\u0a34t\u803b\xa7\u40a7i;\u403bwar;\u6929m\u0100in\u3369\xf0nu\xf3\xf1t;\u6736r\u0100;o\u3376\u2055\uc000\ud835\udd30\u0200acoy\u3382\u3386\u3391\u33a0rp;\u666f\u0100hy\u338b\u338fcy;\u4449;\u4448rt\u026d\u3399\0\0\u339ci\xe4\u1464ara\xec\u2e6f\u803b\xad\u40ad\u0100gm\u33a8\u33b4ma\u0180;fv\u33b1\u33b2\u33b2\u43c3;\u43c2\u0400;deglnpr\u12ab\u33c5\u33c9\u33ce\u33d6\u33de\u33e1\u33e6ot;\u6a6a\u0100;q\u12b1\u12b0\u0100;E\u33d3\u33d4\u6a9e;\u6aa0\u0100;E\u33db\u33dc\u6a9d;\u6a9fe;\u6246lus;\u6a24arr;\u6972ar\xf2\u113d\u0200aeit\u33f8\u3408\u340f\u3417\u0100ls\u33fd\u3404lsetm\xe9\u336ahp;\u6a33parsl;\u69e4\u0100dl\u1463\u3414e;\u6323\u0100;e\u341c\u341d\u6aaa\u0100;s\u3422\u3423\u6aac;\uc000\u2aac\ufe00\u0180flp\u342e\u3433\u3442tcy;\u444c\u0100;b\u3438\u3439\u402f\u0100;a\u343e\u343f\u69c4r;\u633ff;\uc000\ud835\udd64a\u0100dr\u344d\u0402es\u0100;u\u3454\u3455\u6660it\xbb\u3455\u0180csu\u3460\u3479\u349f\u0100au\u3465\u346fp\u0100;s\u1188\u346b;\uc000\u2293\ufe00p\u0100;s\u11b4\u3475;\uc000\u2294\ufe00u\u0100bp\u347f\u348f\u0180;es\u1197\u119c\u3486et\u0100;e\u1197\u348d\xf1\u119d\u0180;es\u11a8\u11ad\u3496et\u0100;e\u11a8\u349d\xf1\u11ae\u0180;af\u117b\u34a6\u05b0r\u0165\u34ab\u05b1\xbb\u117car\xf2\u1148\u0200cemt\u34b9\u34be\u34c2\u34c5r;\uc000\ud835\udcc8tm\xee\xf1i\xec\u3415ar\xe6\u11be\u0100ar\u34ce\u34d5r\u0100;f\u34d4\u17bf\u6606\u0100an\u34da\u34edight\u0100ep\u34e3\u34eapsilo\xee\u1ee0h\xe9\u2eafs\xbb\u2852\u0280bcmnp\u34fb\u355e\u1209\u358b\u358e\u0480;Edemnprs\u350e\u350f\u3511\u3515\u351e\u3523\u352c\u3531\u3536\u6282;\u6ac5ot;\u6abd\u0100;d\u11da\u351aot;\u6ac3ult;\u6ac1\u0100Ee\u3528\u352a;\u6acb;\u628alus;\u6abfarr;\u6979\u0180eiu\u353d\u3552\u3555t\u0180;en\u350e\u3545\u354bq\u0100;q\u11da\u350feq\u0100;q\u352b\u3528m;\u6ac7\u0100bp\u355a\u355c;\u6ad5;\u6ad3c\u0300;acens\u11ed\u356c\u3572\u3579\u357b\u3326ppro\xf8\u32faurlye\xf1\u11fe\xf1\u11f3\u0180aes\u3582\u3588\u331bppro\xf8\u331aq\xf1\u3317g;\u666a\u0680123;Edehlmnps\u35a9\u35ac\u35af\u121c\u35b2\u35b4\u35c0\u35c9\u35d5\u35da\u35df\u35e8\u35ed\u803b\xb9\u40b9\u803b\xb2\u40b2\u803b\xb3\u40b3;\u6ac6\u0100os\u35b9\u35bct;\u6abeub;\u6ad8\u0100;d\u1222\u35c5ot;\u6ac4s\u0100ou\u35cf\u35d2l;\u67c9b;\u6ad7arr;\u697bult;\u6ac2\u0100Ee\u35e4\u35e6;\u6acc;\u628blus;\u6ac0\u0180eiu\u35f4\u3609\u360ct\u0180;en\u121c\u35fc\u3602q\u0100;q\u1222\u35b2eq\u0100;q\u35e7\u35e4m;\u6ac8\u0100bp\u3611\u3613;\u6ad4;\u6ad6\u0180Aan\u361c\u3620\u362drr;\u61d9r\u0100hr\u3626\u3628\xeb\u222e\u0100;o\u0a2b\u0a29war;\u692alig\u803b\xdf\u40df\u0be1\u3651\u365d\u3660\u12ce\u3673\u3679\0\u367e\u36c2\0\0\0\0\0\u36db\u3703\0\u3709\u376c\0\0\0\u3787\u0272\u3656\0\0\u365bget;\u6316;\u43c4r\xeb\u0e5f\u0180aey\u3666\u366b\u3670ron;\u4165dil;\u4163;\u4442lrec;\u6315r;\uc000\ud835\udd31\u0200eiko\u3686\u369d\u36b5\u36bc\u01f2\u368b\0\u3691e\u01004f\u1284\u1281a\u0180;sv\u3698\u3699\u369b\u43b8ym;\u43d1\u0100cn\u36a2\u36b2k\u0100as\u36a8\u36aeppro\xf8\u12c1im\xbb\u12acs\xf0\u129e\u0100as\u36ba\u36ae\xf0\u12c1rn\u803b\xfe\u40fe\u01ec\u031f\u36c6\u22e7es\u8180\xd7;bd\u36cf\u36d0\u36d8\u40d7\u0100;a\u190f\u36d5r;\u6a31;\u6a30\u0180eps\u36e1\u36e3\u3700\xe1\u2a4d\u0200;bcf\u0486\u36ec\u36f0\u36f4ot;\u6336ir;\u6af1\u0100;o\u36f9\u36fc\uc000\ud835\udd65rk;\u6ada\xe1\u3362rime;\u6034\u0180aip\u370f\u3712\u3764d\xe5\u1248\u0380adempst\u3721\u374d\u3740\u3751\u3757\u375c\u375fngle\u0280;dlqr\u3730\u3731\u3736\u3740\u3742\u65b5own\xbb\u1dbbeft\u0100;e\u2800\u373e\xf1\u092e;\u625cight\u0100;e\u32aa\u374b\xf1\u105aot;\u65ecinus;\u6a3alus;\u6a39b;\u69cdime;\u6a3bezium;\u63e2\u0180cht\u3772\u377d\u3781\u0100ry\u3777\u377b;\uc000\ud835\udcc9;\u4446cy;\u445brok;\u4167\u0100io\u378b\u378ex\xf4\u1777head\u0100lr\u3797\u37a0eftarro\xf7\u084fightarrow\xbb\u0f5d\u0900AHabcdfghlmoprstuw\u37d0\u37d3\u37d7\u37e4\u37f0\u37fc\u380e\u381c\u3823\u3834\u3851\u385d\u386b\u38a9\u38cc\u38d2\u38ea\u38f6r\xf2\u03edar;\u6963\u0100cr\u37dc\u37e2ute\u803b\xfa\u40fa\xf2\u1150r\u01e3\u37ea\0\u37edy;\u445eve;\u416d\u0100iy\u37f5\u37farc\u803b\xfb\u40fb;\u4443\u0180abh\u3803\u3806\u380br\xf2\u13adlac;\u4171a\xf2\u13c3\u0100ir\u3813\u3818sht;\u697e;\uc000\ud835\udd32rave\u803b\xf9\u40f9\u0161\u3827\u3831r\u0100lr\u382c\u382e\xbb\u0957\xbb\u1083lk;\u6580\u0100ct\u3839\u384d\u026f\u383f\0\0\u384arn\u0100;e\u3845\u3846\u631cr\xbb\u3846op;\u630fri;\u65f8\u0100al\u3856\u385acr;\u416b\u80bb\xa8\u0349\u0100gp\u3862\u3866on;\u4173f;\uc000\ud835\udd66\u0300adhlsu\u114b\u3878\u387d\u1372\u3891\u38a0own\xe1\u13b3arpoon\u0100lr\u3888\u388cef\xf4\u382digh\xf4\u382fi\u0180;hl\u3899\u389a\u389c\u43c5\xbb\u13faon\xbb\u389aparrows;\u61c8\u0180cit\u38b0\u38c4\u38c8\u026f\u38b6\0\0\u38c1rn\u0100;e\u38bc\u38bd\u631dr\xbb\u38bdop;\u630eng;\u416fri;\u65f9cr;\uc000\ud835\udcca\u0180dir\u38d9\u38dd\u38e2ot;\u62f0lde;\u4169i\u0100;f\u3730\u38e8\xbb\u1813\u0100am\u38ef\u38f2r\xf2\u38a8l\u803b\xfc\u40fcangle;\u69a7\u0780ABDacdeflnoprsz\u391c\u391f\u3929\u392d\u39b5\u39b8\u39bd\u39df\u39e4\u39e8\u39f3\u39f9\u39fd\u3a01\u3a20r\xf2\u03f7ar\u0100;v\u3926\u3927\u6ae8;\u6ae9as\xe8\u03e1\u0100nr\u3932\u3937grt;\u699c\u0380eknprst\u34e3\u3946\u394b\u3952\u395d\u3964\u3996app\xe1\u2415othin\xe7\u1e96\u0180hir\u34eb\u2ec8\u3959op\xf4\u2fb5\u0100;h\u13b7\u3962\xef\u318d\u0100iu\u3969\u396dgm\xe1\u33b3\u0100bp\u3972\u3984setneq\u0100;q\u397d\u3980\uc000\u228a\ufe00;\uc000\u2acb\ufe00setneq\u0100;q\u398f\u3992\uc000\u228b\ufe00;\uc000\u2acc\ufe00\u0100hr\u399b\u399fet\xe1\u369ciangle\u0100lr\u39aa\u39afeft\xbb\u0925ight\xbb\u1051y;\u4432ash\xbb\u1036\u0180elr\u39c4\u39d2\u39d7\u0180;be\u2dea\u39cb\u39cfar;\u62bbq;\u625alip;\u62ee\u0100bt\u39dc\u1468a\xf2\u1469r;\uc000\ud835\udd33tr\xe9\u39aesu\u0100bp\u39ef\u39f1\xbb\u0d1c\xbb\u0d59pf;\uc000\ud835\udd67ro\xf0\u0efbtr\xe9\u39b4\u0100cu\u3a06\u3a0br;\uc000\ud835\udccb\u0100bp\u3a10\u3a18n\u0100Ee\u3980\u3a16\xbb\u397en\u0100Ee\u3992\u3a1e\xbb\u3990igzag;\u699a\u0380cefoprs\u3a36\u3a3b\u3a56\u3a5b\u3a54\u3a61\u3a6airc;\u4175\u0100di\u3a40\u3a51\u0100bg\u3a45\u3a49ar;\u6a5fe\u0100;q\u15fa\u3a4f;\u6259erp;\u6118r;\uc000\ud835\udd34pf;\uc000\ud835\udd68\u0100;e\u1479\u3a66at\xe8\u1479cr;\uc000\ud835\udccc\u0ae3\u178e\u3a87\0\u3a8b\0\u3a90\u3a9b\0\0\u3a9d\u3aa8\u3aab\u3aaf\0\0\u3ac3\u3ace\0\u3ad8\u17dc\u17dftr\xe9\u17d1r;\uc000\ud835\udd35\u0100Aa\u3a94\u3a97r\xf2\u03c3r\xf2\u09f6;\u43be\u0100Aa\u3aa1\u3aa4r\xf2\u03b8r\xf2\u09eba\xf0\u2713is;\u62fb\u0180dpt\u17a4\u3ab5\u3abe\u0100fl\u3aba\u17a9;\uc000\ud835\udd69im\xe5\u17b2\u0100Aa\u3ac7\u3acar\xf2\u03cer\xf2\u0a01\u0100cq\u3ad2\u17b8r;\uc000\ud835\udccd\u0100pt\u17d6\u3adcr\xe9\u17d4\u0400acefiosu\u3af0\u3afd\u3b08\u3b0c\u3b11\u3b15\u3b1b\u3b21c\u0100uy\u3af6\u3afbte\u803b\xfd\u40fd;\u444f\u0100iy\u3b02\u3b06rc;\u4177;\u444bn\u803b\xa5\u40a5r;\uc000\ud835\udd36cy;\u4457pf;\uc000\ud835\udd6acr;\uc000\ud835\udcce\u0100cm\u3b26\u3b29y;\u444el\u803b\xff\u40ff\u0500acdefhiosw\u3b42\u3b48\u3b54\u3b58\u3b64\u3b69\u3b6d\u3b74\u3b7a\u3b80cute;\u417a\u0100ay\u3b4d\u3b52ron;\u417e;\u4437ot;\u417c\u0100et\u3b5d\u3b61tr\xe6\u155fa;\u43b6r;\uc000\ud835\udd37cy;\u4436grarr;\u61ddpf;\uc000\ud835\udd6bcr;\uc000\ud835\udccf\u0100jn\u3b85\u3b87;\u600dj;\u600c" + .split("") + .map(function (c) { return c.charCodeAt(0); })); + +var decodeDataXml = {}; + +// Generated using scripts/write-decode-map.ts +Object.defineProperty(decodeDataXml, "__esModule", { value: true }); +decodeDataXml.default = new Uint16Array( +// prettier-ignore +"\u0200aglq\t\x15\x18\x1b\u026d\x0f\0\0\x12p;\u4026os;\u4027t;\u403et;\u403cuot;\u4022" + .split("") + .map(function (c) { return c.charCodeAt(0); })); + +var decode_codepoint = {}; + +(function (exports) { + // Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134 + var _a; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.replaceCodePoint = exports.fromCodePoint = void 0; + var decodeMap = new Map([ + [0, 65533], + // C1 Unicode control character reference replacements + [128, 8364], + [130, 8218], + [131, 402], + [132, 8222], + [133, 8230], + [134, 8224], + [135, 8225], + [136, 710], + [137, 8240], + [138, 352], + [139, 8249], + [140, 338], + [142, 381], + [145, 8216], + [146, 8217], + [147, 8220], + [148, 8221], + [149, 8226], + [150, 8211], + [151, 8212], + [152, 732], + [153, 8482], + [154, 353], + [155, 8250], + [156, 339], + [158, 382], + [159, 376], + ]); + /** + * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point. + */ + exports.fromCodePoint = + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins + (_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function (codePoint) { + var output = ""; + if (codePoint > 0xffff) { + codePoint -= 0x10000; + output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800); + codePoint = 0xdc00 | (codePoint & 0x3ff); + } + output += String.fromCharCode(codePoint); + return output; + }; + /** + * Replace the given code point with a replacement character if it is a + * surrogate or is outside the valid range. Otherwise return the code + * point unchanged. + */ + function replaceCodePoint(codePoint) { + var _a; + if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) { + return 0xfffd; + } + return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint; + } + exports.replaceCodePoint = replaceCodePoint; + /** + * Replace the code point if relevant, then convert it to a string. + * + * @deprecated Use `fromCodePoint(replaceCodePoint(codePoint))` instead. + * @param codePoint The code point to decode. + * @returns The decoded code point. + */ + function decodeCodePoint(codePoint) { + return (0, exports.fromCodePoint)(replaceCodePoint(codePoint)); + } + exports.default = decodeCodePoint; + +} (decode_codepoint)); + +(function (exports) { + var __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); + }) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; + })); + var __setModuleDefault = (commonjsGlobal && commonjsGlobal.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + }) : function(o, v) { + o["default"] = v; + }); + var __importStar = (commonjsGlobal && commonjsGlobal.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; + }; + var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.decodeXML = exports.decodeHTMLStrict = exports.decodeHTMLAttribute = exports.decodeHTML = exports.determineBranch = exports.EntityDecoder = exports.DecodingMode = exports.BinTrieFlags = exports.fromCodePoint = exports.replaceCodePoint = exports.decodeCodePoint = exports.xmlDecodeTree = exports.htmlDecodeTree = void 0; + var decode_data_html_js_1 = __importDefault(decodeDataHtml); + exports.htmlDecodeTree = decode_data_html_js_1.default; + var decode_data_xml_js_1 = __importDefault(decodeDataXml); + exports.xmlDecodeTree = decode_data_xml_js_1.default; + var decode_codepoint_js_1 = __importStar(decode_codepoint); + exports.decodeCodePoint = decode_codepoint_js_1.default; + var decode_codepoint_js_2 = decode_codepoint; + Object.defineProperty(exports, "replaceCodePoint", { enumerable: true, get: function () { return decode_codepoint_js_2.replaceCodePoint; } }); + Object.defineProperty(exports, "fromCodePoint", { enumerable: true, get: function () { return decode_codepoint_js_2.fromCodePoint; } }); + var CharCodes; + (function (CharCodes) { + CharCodes[CharCodes["NUM"] = 35] = "NUM"; + CharCodes[CharCodes["SEMI"] = 59] = "SEMI"; + CharCodes[CharCodes["EQUALS"] = 61] = "EQUALS"; + CharCodes[CharCodes["ZERO"] = 48] = "ZERO"; + CharCodes[CharCodes["NINE"] = 57] = "NINE"; + CharCodes[CharCodes["LOWER_A"] = 97] = "LOWER_A"; + CharCodes[CharCodes["LOWER_F"] = 102] = "LOWER_F"; + CharCodes[CharCodes["LOWER_X"] = 120] = "LOWER_X"; + CharCodes[CharCodes["LOWER_Z"] = 122] = "LOWER_Z"; + CharCodes[CharCodes["UPPER_A"] = 65] = "UPPER_A"; + CharCodes[CharCodes["UPPER_F"] = 70] = "UPPER_F"; + CharCodes[CharCodes["UPPER_Z"] = 90] = "UPPER_Z"; + })(CharCodes || (CharCodes = {})); + /** Bit that needs to be set to convert an upper case ASCII character to lower case */ + var TO_LOWER_BIT = 32; + var BinTrieFlags; + (function (BinTrieFlags) { + BinTrieFlags[BinTrieFlags["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH"; + BinTrieFlags[BinTrieFlags["BRANCH_LENGTH"] = 16256] = "BRANCH_LENGTH"; + BinTrieFlags[BinTrieFlags["JUMP_TABLE"] = 127] = "JUMP_TABLE"; + })(BinTrieFlags = exports.BinTrieFlags || (exports.BinTrieFlags = {})); + function isNumber(code) { + return code >= CharCodes.ZERO && code <= CharCodes.NINE; + } + function isHexadecimalCharacter(code) { + return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F) || + (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F)); + } + function isAsciiAlphaNumeric(code) { + return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z) || + (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z) || + isNumber(code)); + } + /** + * Checks if the given character is a valid end character for an entity in an attribute. + * + * Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error. + * See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state + */ + function isEntityInAttributeInvalidEnd(code) { + return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code); + } + var EntityDecoderState; + (function (EntityDecoderState) { + EntityDecoderState[EntityDecoderState["EntityStart"] = 0] = "EntityStart"; + EntityDecoderState[EntityDecoderState["NumericStart"] = 1] = "NumericStart"; + EntityDecoderState[EntityDecoderState["NumericDecimal"] = 2] = "NumericDecimal"; + EntityDecoderState[EntityDecoderState["NumericHex"] = 3] = "NumericHex"; + EntityDecoderState[EntityDecoderState["NamedEntity"] = 4] = "NamedEntity"; + })(EntityDecoderState || (EntityDecoderState = {})); + var DecodingMode; + (function (DecodingMode) { + /** Entities in text nodes that can end with any character. */ + DecodingMode[DecodingMode["Legacy"] = 0] = "Legacy"; + /** Only allow entities terminated with a semicolon. */ + DecodingMode[DecodingMode["Strict"] = 1] = "Strict"; + /** Entities in attributes have limitations on ending characters. */ + DecodingMode[DecodingMode["Attribute"] = 2] = "Attribute"; + })(DecodingMode = exports.DecodingMode || (exports.DecodingMode = {})); + /** + * Token decoder with support of writing partial entities. + */ + var EntityDecoder = /** @class */ (function () { + function EntityDecoder( + /** The tree used to decode entities. */ + decodeTree, + /** + * The function that is called when a codepoint is decoded. + * + * For multi-byte named entities, this will be called multiple times, + * with the second codepoint, and the same `consumed` value. + * + * @param codepoint The decoded codepoint. + * @param consumed The number of bytes consumed by the decoder. + */ + emitCodePoint, + /** An object that is used to produce errors. */ + errors) { + this.decodeTree = decodeTree; + this.emitCodePoint = emitCodePoint; + this.errors = errors; + /** The current state of the decoder. */ + this.state = EntityDecoderState.EntityStart; + /** Characters that were consumed while parsing an entity. */ + this.consumed = 1; + /** + * The result of the entity. + * + * Either the result index of a numeric entity, or the codepoint of a + * numeric entity. + */ + this.result = 0; + /** The current index in the decode tree. */ + this.treeIndex = 0; + /** The number of characters that were consumed in excess. */ + this.excess = 1; + /** The mode in which the decoder is operating. */ + this.decodeMode = DecodingMode.Strict; + } + /** Resets the instance to make it reusable. */ + EntityDecoder.prototype.startEntity = function (decodeMode) { + this.decodeMode = decodeMode; + this.state = EntityDecoderState.EntityStart; + this.result = 0; + this.treeIndex = 0; + this.excess = 1; + this.consumed = 1; + }; + /** + * Write an entity to the decoder. This can be called multiple times with partial entities. + * If the entity is incomplete, the decoder will return -1. + * + * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the + * entity is incomplete, and resume when the next string is written. + * + * @param string The string containing the entity (or a continuation of the entity). + * @param offset The offset at which the entity begins. Should be 0 if this is not the first call. + * @returns The number of characters that were consumed, or -1 if the entity is incomplete. + */ + EntityDecoder.prototype.write = function (str, offset) { + switch (this.state) { + case EntityDecoderState.EntityStart: { + if (str.charCodeAt(offset) === CharCodes.NUM) { + this.state = EntityDecoderState.NumericStart; + this.consumed += 1; + return this.stateNumericStart(str, offset + 1); + } + this.state = EntityDecoderState.NamedEntity; + return this.stateNamedEntity(str, offset); + } + case EntityDecoderState.NumericStart: { + return this.stateNumericStart(str, offset); + } + case EntityDecoderState.NumericDecimal: { + return this.stateNumericDecimal(str, offset); + } + case EntityDecoderState.NumericHex: { + return this.stateNumericHex(str, offset); + } + case EntityDecoderState.NamedEntity: { + return this.stateNamedEntity(str, offset); + } + } + }; + /** + * Switches between the numeric decimal and hexadecimal states. + * + * Equivalent to the `Numeric character reference state` in the HTML spec. + * + * @param str The string containing the entity (or a continuation of the entity). + * @param offset The current offset. + * @returns The number of characters that were consumed, or -1 if the entity is incomplete. + */ + EntityDecoder.prototype.stateNumericStart = function (str, offset) { + if (offset >= str.length) { + return -1; + } + if ((str.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) { + this.state = EntityDecoderState.NumericHex; + this.consumed += 1; + return this.stateNumericHex(str, offset + 1); + } + this.state = EntityDecoderState.NumericDecimal; + return this.stateNumericDecimal(str, offset); + }; + EntityDecoder.prototype.addToNumericResult = function (str, start, end, base) { + if (start !== end) { + var digitCount = end - start; + this.result = + this.result * Math.pow(base, digitCount) + + parseInt(str.substr(start, digitCount), base); + this.consumed += digitCount; + } + }; + /** + * Parses a hexadecimal numeric entity. + * + * Equivalent to the `Hexademical character reference state` in the HTML spec. + * + * @param str The string containing the entity (or a continuation of the entity). + * @param offset The current offset. + * @returns The number of characters that were consumed, or -1 if the entity is incomplete. + */ + EntityDecoder.prototype.stateNumericHex = function (str, offset) { + var startIdx = offset; + while (offset < str.length) { + var char = str.charCodeAt(offset); + if (isNumber(char) || isHexadecimalCharacter(char)) { + offset += 1; + } + else { + this.addToNumericResult(str, startIdx, offset, 16); + return this.emitNumericEntity(char, 3); + } + } + this.addToNumericResult(str, startIdx, offset, 16); + return -1; + }; + /** + * Parses a decimal numeric entity. + * + * Equivalent to the `Decimal character reference state` in the HTML spec. + * + * @param str The string containing the entity (or a continuation of the entity). + * @param offset The current offset. + * @returns The number of characters that were consumed, or -1 if the entity is incomplete. + */ + EntityDecoder.prototype.stateNumericDecimal = function (str, offset) { + var startIdx = offset; + while (offset < str.length) { + var char = str.charCodeAt(offset); + if (isNumber(char)) { + offset += 1; + } + else { + this.addToNumericResult(str, startIdx, offset, 10); + return this.emitNumericEntity(char, 2); + } + } + this.addToNumericResult(str, startIdx, offset, 10); + return -1; + }; + /** + * Validate and emit a numeric entity. + * + * Implements the logic from the `Hexademical character reference start + * state` and `Numeric character reference end state` in the HTML spec. + * + * @param lastCp The last code point of the entity. Used to see if the + * entity was terminated with a semicolon. + * @param expectedLength The minimum number of characters that should be + * consumed. Used to validate that at least one digit + * was consumed. + * @returns The number of characters that were consumed. + */ + EntityDecoder.prototype.emitNumericEntity = function (lastCp, expectedLength) { + var _a; + // Ensure we consumed at least one digit. + if (this.consumed <= expectedLength) { + (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed); + return 0; + } + // Figure out if this is a legit end of the entity + if (lastCp === CharCodes.SEMI) { + this.consumed += 1; + } + else if (this.decodeMode === DecodingMode.Strict) { + return 0; + } + this.emitCodePoint((0, decode_codepoint_js_1.replaceCodePoint)(this.result), this.consumed); + if (this.errors) { + if (lastCp !== CharCodes.SEMI) { + this.errors.missingSemicolonAfterCharacterReference(); + } + this.errors.validateNumericCharacterReference(this.result); + } + return this.consumed; + }; + /** + * Parses a named entity. + * + * Equivalent to the `Named character reference state` in the HTML spec. + * + * @param str The string containing the entity (or a continuation of the entity). + * @param offset The current offset. + * @returns The number of characters that were consumed, or -1 if the entity is incomplete. + */ + EntityDecoder.prototype.stateNamedEntity = function (str, offset) { + var decodeTree = this.decodeTree; + var current = decodeTree[this.treeIndex]; + // The mask is the number of bytes of the value, including the current byte. + var valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14; + for (; offset < str.length; offset++, this.excess++) { + var char = str.charCodeAt(offset); + this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char); + if (this.treeIndex < 0) { + return this.result === 0 || + // If we are parsing an attribute + (this.decodeMode === DecodingMode.Attribute && + // We shouldn't have consumed any characters after the entity, + (valueLength === 0 || + // And there should be no invalid characters. + isEntityInAttributeInvalidEnd(char))) + ? 0 + : this.emitNotTerminatedNamedEntity(); + } + current = decodeTree[this.treeIndex]; + valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14; + // If the branch is a value, store it and continue + if (valueLength !== 0) { + // If the entity is terminated by a semicolon, we are done. + if (char === CharCodes.SEMI) { + return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess); + } + // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it. + if (this.decodeMode !== DecodingMode.Strict) { + this.result = this.treeIndex; + this.consumed += this.excess; + this.excess = 0; + } + } + } + return -1; + }; + /** + * Emit a named entity that was not terminated with a semicolon. + * + * @returns The number of characters consumed. + */ + EntityDecoder.prototype.emitNotTerminatedNamedEntity = function () { + var _a; + var _b = this, result = _b.result, decodeTree = _b.decodeTree; + var valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14; + this.emitNamedEntityData(result, valueLength, this.consumed); + (_a = this.errors) === null || _a === void 0 ? void 0 : _a.missingSemicolonAfterCharacterReference(); + return this.consumed; + }; + /** + * Emit a named entity. + * + * @param result The index of the entity in the decode tree. + * @param valueLength The number of bytes in the entity. + * @param consumed The number of characters consumed. + * + * @returns The number of characters consumed. + */ + EntityDecoder.prototype.emitNamedEntityData = function (result, valueLength, consumed) { + var decodeTree = this.decodeTree; + this.emitCodePoint(valueLength === 1 + ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH + : decodeTree[result + 1], consumed); + if (valueLength === 3) { + // For multi-byte values, we need to emit the second byte. + this.emitCodePoint(decodeTree[result + 2], consumed); + } + return consumed; + }; + /** + * Signal to the parser that the end of the input was reached. + * + * Remaining data will be emitted and relevant errors will be produced. + * + * @returns The number of characters consumed. + */ + EntityDecoder.prototype.end = function () { + var _a; + switch (this.state) { + case EntityDecoderState.NamedEntity: { + // Emit a named entity if we have one. + return this.result !== 0 && + (this.decodeMode !== DecodingMode.Attribute || + this.result === this.treeIndex) + ? this.emitNotTerminatedNamedEntity() + : 0; + } + // Otherwise, emit a numeric entity if we have one. + case EntityDecoderState.NumericDecimal: { + return this.emitNumericEntity(0, 2); + } + case EntityDecoderState.NumericHex: { + return this.emitNumericEntity(0, 3); + } + case EntityDecoderState.NumericStart: { + (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed); + return 0; + } + case EntityDecoderState.EntityStart: { + // Return 0 if we have no entity. + return 0; + } + } + }; + return EntityDecoder; + }()); + exports.EntityDecoder = EntityDecoder; + /** + * Creates a function that decodes entities in a string. + * + * @param decodeTree The decode tree. + * @returns A function that decodes entities in a string. + */ + function getDecoder(decodeTree) { + var ret = ""; + var decoder = new EntityDecoder(decodeTree, function (str) { return (ret += (0, decode_codepoint_js_1.fromCodePoint)(str)); }); + return function decodeWithTrie(str, decodeMode) { + var lastIndex = 0; + var offset = 0; + while ((offset = str.indexOf("&", offset)) >= 0) { + ret += str.slice(lastIndex, offset); + decoder.startEntity(decodeMode); + var len = decoder.write(str, + // Skip the "&" + offset + 1); + if (len < 0) { + lastIndex = offset + decoder.end(); + break; + } + lastIndex = offset + len; + // If `len` is 0, skip the current `&` and continue. + offset = len === 0 ? lastIndex + 1 : lastIndex; + } + var result = ret + str.slice(lastIndex); + // Make sure we don't keep a reference to the final string. + ret = ""; + return result; + }; + } + /** + * Determines the branch of the current node that is taken given the current + * character. This function is used to traverse the trie. + * + * @param decodeTree The trie. + * @param current The current node. + * @param nodeIdx The index right after the current node and its value. + * @param char The current character. + * @returns The index of the next node, or -1 if no branch is taken. + */ + function determineBranch(decodeTree, current, nodeIdx, char) { + var branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7; + var jumpOffset = current & BinTrieFlags.JUMP_TABLE; + // Case 1: Single branch encoded in jump offset + if (branchCount === 0) { + return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1; + } + // Case 2: Multiple branches encoded in jump table + if (jumpOffset) { + var value = char - jumpOffset; + return value < 0 || value >= branchCount + ? -1 + : decodeTree[nodeIdx + value] - 1; + } + // Case 3: Multiple branches encoded in dictionary + // Binary search for the character. + var lo = nodeIdx; + var hi = lo + branchCount - 1; + while (lo <= hi) { + var mid = (lo + hi) >>> 1; + var midVal = decodeTree[mid]; + if (midVal < char) { + lo = mid + 1; + } + else if (midVal > char) { + hi = mid - 1; + } + else { + return decodeTree[mid + branchCount]; + } + } + return -1; + } + exports.determineBranch = determineBranch; + var htmlDecoder = getDecoder(decode_data_html_js_1.default); + var xmlDecoder = getDecoder(decode_data_xml_js_1.default); + /** + * Decodes an HTML string. + * + * @param str The string to decode. + * @param mode The decoding mode. + * @returns The decoded string. + */ + function decodeHTML(str, mode) { + if (mode === void 0) { mode = DecodingMode.Legacy; } + return htmlDecoder(str, mode); + } + exports.decodeHTML = decodeHTML; + /** + * Decodes an HTML string in an attribute. + * + * @param str The string to decode. + * @returns The decoded string. + */ + function decodeHTMLAttribute(str) { + return htmlDecoder(str, DecodingMode.Attribute); + } + exports.decodeHTMLAttribute = decodeHTMLAttribute; + /** + * Decodes an HTML string, requiring all entities to be terminated by a semicolon. + * + * @param str The string to decode. + * @returns The decoded string. + */ + function decodeHTMLStrict(str) { + return htmlDecoder(str, DecodingMode.Strict); + } + exports.decodeHTMLStrict = decodeHTMLStrict; + /** + * Decodes an XML string, requiring all entities to be terminated by a semicolon. + * + * @param str The string to decode. + * @returns The decoded string. + */ + function decodeXML(str) { + return xmlDecoder(str, DecodingMode.Strict); + } + exports.decodeXML = decodeXML; + +} (decode)); + +var lib = {}; + +Object.defineProperty(lib, '__esModule', { + value: true +}); +function _objectWithoutPropertiesLoose(source, excluded) { + if (source == null) return {}; + var target = {}; + var sourceKeys = Object.keys(source); + var key, i; + for (i = 0; i < sourceKeys.length; i++) { + key = sourceKeys[i]; + if (excluded.indexOf(key) >= 0) continue; + target[key] = source[key]; + } + return target; +} +let Position$1 = class Position { + constructor(line, col, index) { + this.line = void 0; + this.column = void 0; + this.index = void 0; + this.line = line; + this.column = col; + this.index = index; + } +}; +class SourceLocation { + constructor(start, end) { + this.start = void 0; + this.end = void 0; + this.filename = void 0; + this.identifierName = void 0; + this.start = start; + this.end = end; + } +} +function createPositionWithColumnOffset(position, columnOffset) { + const { + line, + column, + index + } = position; + return new Position$1(line, column + columnOffset, index + columnOffset); +} +const code = "BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED"; +var ModuleErrors = { + ImportMetaOutsideModule: { + message: `import.meta may appear only with 'sourceType: "module"'`, + code + }, + ImportOutsideModule: { + message: `'import' and 'export' may appear only with 'sourceType: "module"'`, + code + } +}; +const NodeDescriptions = { + ArrayPattern: "array destructuring pattern", + AssignmentExpression: "assignment expression", + AssignmentPattern: "assignment expression", + ArrowFunctionExpression: "arrow function expression", + ConditionalExpression: "conditional expression", + CatchClause: "catch clause", + ForOfStatement: "for-of statement", + ForInStatement: "for-in statement", + ForStatement: "for-loop", + FormalParameters: "function parameter list", + Identifier: "identifier", + ImportSpecifier: "import specifier", + ImportDefaultSpecifier: "import default specifier", + ImportNamespaceSpecifier: "import namespace specifier", + ObjectPattern: "object destructuring pattern", + ParenthesizedExpression: "parenthesized expression", + RestElement: "rest element", + UpdateExpression: { + true: "prefix operation", + false: "postfix operation" + }, + VariableDeclarator: "variable declaration", + YieldExpression: "yield expression" +}; +const toNodeDescription = ({ + type, + prefix +}) => type === "UpdateExpression" ? NodeDescriptions.UpdateExpression[String(prefix)] : NodeDescriptions[type]; +var StandardErrors = { + AccessorIsGenerator: ({ + kind + }) => `A ${kind}ter cannot be a generator.`, + ArgumentsInClass: "'arguments' is only allowed in functions and class methods.", + AsyncFunctionInSingleStatementContext: "Async functions can only be declared at the top level or inside a block.", + AwaitBindingIdentifier: "Can not use 'await' as identifier inside an async function.", + AwaitBindingIdentifierInStaticBlock: "Can not use 'await' as identifier inside a static block.", + AwaitExpressionFormalParameter: "'await' is not allowed in async function parameters.", + AwaitUsingNotInAsyncContext: "'await using' is only allowed within async functions and at the top levels of modules.", + AwaitNotInAsyncContext: "'await' is only allowed within async functions and at the top levels of modules.", + AwaitNotInAsyncFunction: "'await' is only allowed within async functions.", + BadGetterArity: "A 'get' accessor must not have any formal parameters.", + BadSetterArity: "A 'set' accessor must have exactly one formal parameter.", + BadSetterRestParameter: "A 'set' accessor function argument must not be a rest parameter.", + ConstructorClassField: "Classes may not have a field named 'constructor'.", + ConstructorClassPrivateField: "Classes may not have a private field named '#constructor'.", + ConstructorIsAccessor: "Class constructor may not be an accessor.", + ConstructorIsAsync: "Constructor can't be an async function.", + ConstructorIsGenerator: "Constructor can't be a generator.", + DeclarationMissingInitializer: ({ + kind + }) => `Missing initializer in ${kind} declaration.`, + DecoratorArgumentsOutsideParentheses: "Decorator arguments must be moved inside parentheses: use '@(decorator(args))' instead of '@(decorator)(args)'.", + DecoratorBeforeExport: "Decorators must be placed *before* the 'export' keyword. Remove the 'decoratorsBeforeExport: true' option to use the 'export @decorator class {}' syntax.", + DecoratorsBeforeAfterExport: "Decorators can be placed *either* before or after the 'export' keyword, but not in both locations at the same time.", + DecoratorConstructor: "Decorators can't be used with a constructor. Did you mean '@dec class { ... }'?", + DecoratorExportClass: "Decorators must be placed *after* the 'export' keyword. Remove the 'decoratorsBeforeExport: false' option to use the '@decorator export class {}' syntax.", + DecoratorSemicolon: "Decorators must not be followed by a semicolon.", + DecoratorStaticBlock: "Decorators can't be used with a static block.", + DeferImportRequiresNamespace: 'Only `import defer * as x from "./module"` is valid.', + DeletePrivateField: "Deleting a private field is not allowed.", + DestructureNamedImport: "ES2015 named imports do not destructure. Use another statement for destructuring after the import.", + DuplicateConstructor: "Duplicate constructor in the same class.", + DuplicateDefaultExport: "Only one default export allowed per module.", + DuplicateExport: ({ + exportName + }) => `\`${exportName}\` has already been exported. Exported identifiers must be unique.`, + DuplicateProto: "Redefinition of __proto__ property.", + DuplicateRegExpFlags: "Duplicate regular expression flag.", + DynamicImportPhaseRequiresImportExpressions: ({ + phase + }) => `'import.${phase}(...)' can only be parsed when using the 'createImportExpressions' option.`, + ElementAfterRest: "Rest element must be last element.", + EscapedCharNotAnIdentifier: "Invalid Unicode escape.", + ExportBindingIsString: ({ + localName, + exportName + }) => `A string literal cannot be used as an exported binding without \`from\`.\n- Did you mean \`export { '${localName}' as '${exportName}' } from 'some-module'\`?`, + ExportDefaultFromAsIdentifier: "'from' is not allowed as an identifier after 'export default'.", + ForInOfLoopInitializer: ({ + type + }) => `'${type === "ForInStatement" ? "for-in" : "for-of"}' loop variable declaration may not have an initializer.`, + ForInUsing: "For-in loop may not start with 'using' declaration.", + ForOfAsync: "The left-hand side of a for-of loop may not be 'async'.", + ForOfLet: "The left-hand side of a for-of loop may not start with 'let'.", + GeneratorInSingleStatementContext: "Generators can only be declared at the top level or inside a block.", + IllegalBreakContinue: ({ + type + }) => `Unsyntactic ${type === "BreakStatement" ? "break" : "continue"}.`, + IllegalLanguageModeDirective: "Illegal 'use strict' directive in function with non-simple parameter list.", + IllegalReturn: "'return' outside of function.", + ImportAttributesUseAssert: "The `assert` keyword in import attributes is deprecated and it has been replaced by the `with` keyword. You can enable the `deprecatedAssertSyntax: true` option in the import attributes plugin to suppress this error.", + ImportBindingIsString: ({ + importName + }) => `A string literal cannot be used as an imported binding.\n- Did you mean \`import { "${importName}" as foo }\`?`, + ImportCallArgumentTrailingComma: "Trailing comma is disallowed inside import(...) arguments.", + ImportCallArity: ({ + maxArgumentCount + }) => `\`import()\` requires exactly ${maxArgumentCount === 1 ? "one argument" : "one or two arguments"}.`, + ImportCallNotNewExpression: "Cannot use new with import(...).", + ImportCallSpreadArgument: "`...` is not allowed in `import()`.", + ImportJSONBindingNotDefault: "A JSON module can only be imported with `default`.", + ImportReflectionHasAssertion: "`import module x` cannot have assertions.", + ImportReflectionNotBinding: 'Only `import module x from "./module"` is valid.', + IncompatibleRegExpUVFlags: "The 'u' and 'v' regular expression flags cannot be enabled at the same time.", + InvalidBigIntLiteral: "Invalid BigIntLiteral.", + InvalidCodePoint: "Code point out of bounds.", + InvalidCoverInitializedName: "Invalid shorthand property initializer.", + InvalidDecimal: "Invalid decimal.", + InvalidDigit: ({ + radix + }) => `Expected number in radix ${radix}.`, + InvalidEscapeSequence: "Bad character escape sequence.", + InvalidEscapeSequenceTemplate: "Invalid escape sequence in template.", + InvalidEscapedReservedWord: ({ + reservedWord + }) => `Escape sequence in keyword ${reservedWord}.`, + InvalidIdentifier: ({ + identifierName + }) => `Invalid identifier ${identifierName}.`, + InvalidLhs: ({ + ancestor + }) => `Invalid left-hand side in ${toNodeDescription(ancestor)}.`, + InvalidLhsBinding: ({ + ancestor + }) => `Binding invalid left-hand side in ${toNodeDescription(ancestor)}.`, + InvalidLhsOptionalChaining: ({ + ancestor + }) => `Invalid optional chaining in the left-hand side of ${toNodeDescription(ancestor)}.`, + InvalidNumber: "Invalid number.", + InvalidOrMissingExponent: "Floating-point numbers require a valid exponent after the 'e'.", + InvalidOrUnexpectedToken: ({ + unexpected + }) => `Unexpected character '${unexpected}'.`, + InvalidParenthesizedAssignment: "Invalid parenthesized assignment pattern.", + InvalidPrivateFieldResolution: ({ + identifierName + }) => `Private name #${identifierName} is not defined.`, + InvalidPropertyBindingPattern: "Binding member expression.", + InvalidRecordProperty: "Only properties and spread elements are allowed in record definitions.", + InvalidRestAssignmentPattern: "Invalid rest operator's argument.", + LabelRedeclaration: ({ + labelName + }) => `Label '${labelName}' is already declared.`, + LetInLexicalBinding: "'let' is disallowed as a lexically bound name.", + LineTerminatorBeforeArrow: "No line break is allowed before '=>'.", + MalformedRegExpFlags: "Invalid regular expression flag.", + MissingClassName: "A class name is required.", + MissingEqInAssignment: "Only '=' operator can be used for specifying default value.", + MissingSemicolon: "Missing semicolon.", + MissingPlugin: ({ + missingPlugin + }) => `This experimental syntax requires enabling the parser plugin: ${missingPlugin.map(name => JSON.stringify(name)).join(", ")}.`, + MissingOneOfPlugins: ({ + missingPlugin + }) => `This experimental syntax requires enabling one of the following parser plugin(s): ${missingPlugin.map(name => JSON.stringify(name)).join(", ")}.`, + MissingUnicodeEscape: "Expecting Unicode escape sequence \\uXXXX.", + MixingCoalesceWithLogical: "Nullish coalescing operator(??) requires parens when mixing with logical operators.", + ModuleAttributeDifferentFromType: "The only accepted module attribute is `type`.", + ModuleAttributeInvalidValue: "Only string literals are allowed as module attribute values.", + ModuleAttributesWithDuplicateKeys: ({ + key + }) => `Duplicate key "${key}" is not allowed in module attributes.`, + ModuleExportNameHasLoneSurrogate: ({ + surrogateCharCode + }) => `An export name cannot include a lone surrogate, found '\\u${surrogateCharCode.toString(16)}'.`, + ModuleExportUndefined: ({ + localName + }) => `Export '${localName}' is not defined.`, + MultipleDefaultsInSwitch: "Multiple default clauses.", + NewlineAfterThrow: "Illegal newline after throw.", + NoCatchOrFinally: "Missing catch or finally clause.", + NumberIdentifier: "Identifier directly after number.", + NumericSeparatorInEscapeSequence: "Numeric separators are not allowed inside unicode escape sequences or hex escape sequences.", + ObsoleteAwaitStar: "'await*' has been removed from the async functions proposal. Use Promise.all() instead.", + OptionalChainingNoNew: "Constructors in/after an Optional Chain are not allowed.", + OptionalChainingNoTemplate: "Tagged Template Literals are not allowed in optionalChain.", + OverrideOnConstructor: "'override' modifier cannot appear on a constructor declaration.", + ParamDupe: "Argument name clash.", + PatternHasAccessor: "Object pattern can't contain getter or setter.", + PatternHasMethod: "Object pattern can't contain methods.", + PrivateInExpectedIn: ({ + identifierName + }) => `Private names are only allowed in property accesses (\`obj.#${identifierName}\`) or in \`in\` expressions (\`#${identifierName} in obj\`).`, + PrivateNameRedeclaration: ({ + identifierName + }) => `Duplicate private name #${identifierName}.`, + RecordExpressionBarIncorrectEndSyntaxType: "Record expressions ending with '|}' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.", + RecordExpressionBarIncorrectStartSyntaxType: "Record expressions starting with '{|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.", + RecordExpressionHashIncorrectStartSyntaxType: "Record expressions starting with '#{' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'.", + RecordNoProto: "'__proto__' is not allowed in Record expressions.", + RestTrailingComma: "Unexpected trailing comma after rest element.", + SloppyFunction: "In non-strict mode code, functions can only be declared at top level or inside a block.", + SloppyFunctionAnnexB: "In non-strict mode code, functions can only be declared at top level, inside a block, or as the body of an if statement.", + SourcePhaseImportRequiresDefault: 'Only `import source x from "./module"` is valid.', + StaticPrototype: "Classes may not have static property named prototype.", + SuperNotAllowed: "`super()` is only valid inside a class constructor of a subclass. Maybe a typo in the method name ('constructor') or not extending another class?", + SuperPrivateField: "Private fields can't be accessed on super.", + TrailingDecorator: "Decorators must be attached to a class element.", + TupleExpressionBarIncorrectEndSyntaxType: "Tuple expressions ending with '|]' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.", + TupleExpressionBarIncorrectStartSyntaxType: "Tuple expressions starting with '[|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.", + TupleExpressionHashIncorrectStartSyntaxType: "Tuple expressions starting with '#[' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'.", + UnexpectedArgumentPlaceholder: "Unexpected argument placeholder.", + UnexpectedAwaitAfterPipelineBody: 'Unexpected "await" after pipeline body; await must have parentheses in minimal proposal.', + UnexpectedDigitAfterHash: "Unexpected digit after hash token.", + UnexpectedImportExport: "'import' and 'export' may only appear at the top level.", + UnexpectedKeyword: ({ + keyword + }) => `Unexpected keyword '${keyword}'.`, + UnexpectedLeadingDecorator: "Leading decorators must be attached to a class declaration.", + UnexpectedLexicalDeclaration: "Lexical declaration cannot appear in a single-statement context.", + UnexpectedNewTarget: "`new.target` can only be used in functions or class properties.", + UnexpectedNumericSeparator: "A numeric separator is only allowed between two digits.", + UnexpectedPrivateField: "Unexpected private name.", + UnexpectedReservedWord: ({ + reservedWord + }) => `Unexpected reserved word '${reservedWord}'.`, + UnexpectedSuper: "'super' is only allowed in object methods and classes.", + UnexpectedToken: ({ + expected, + unexpected + }) => `Unexpected token${unexpected ? ` '${unexpected}'.` : ""}${expected ? `, expected "${expected}"` : ""}`, + UnexpectedTokenUnaryExponentiation: "Illegal expression. Wrap left hand side or entire exponentiation in parentheses.", + UnexpectedUsingDeclaration: "Using declaration cannot appear in the top level when source type is `script`.", + UnsupportedBind: "Binding should be performed on object property.", + UnsupportedDecoratorExport: "A decorated export must export a class declaration.", + UnsupportedDefaultExport: "Only expressions, functions or classes are allowed as the `default` export.", + UnsupportedImport: "`import` can only be used in `import()` or `import.meta`.", + UnsupportedMetaProperty: ({ + target, + onlyValidPropertyName + }) => `The only valid meta property for ${target} is ${target}.${onlyValidPropertyName}.`, + UnsupportedParameterDecorator: "Decorators cannot be used to decorate parameters.", + UnsupportedPropertyDecorator: "Decorators cannot be used to decorate object literal properties.", + UnsupportedSuper: "'super' can only be used with function calls (i.e. super()) or in property accesses (i.e. super.prop or super[prop]).", + UnterminatedComment: "Unterminated comment.", + UnterminatedRegExp: "Unterminated regular expression.", + UnterminatedString: "Unterminated string constant.", + UnterminatedTemplate: "Unterminated template.", + UsingDeclarationHasBindingPattern: "Using declaration cannot have destructuring patterns.", + VarRedeclaration: ({ + identifierName + }) => `Identifier '${identifierName}' has already been declared.`, + YieldBindingIdentifier: "Can not use 'yield' as identifier inside a generator.", + YieldInParameter: "Yield expression is not allowed in formal parameters.", + ZeroDigitNumericSeparator: "Numeric separator can not be used after leading 0." +}; +var StrictModeErrors = { + StrictDelete: "Deleting local variable in strict mode.", + StrictEvalArguments: ({ + referenceName + }) => `Assigning to '${referenceName}' in strict mode.`, + StrictEvalArgumentsBinding: ({ + bindingName + }) => `Binding '${bindingName}' in strict mode.`, + StrictFunction: "In strict mode code, functions can only be declared at top level or inside a block.", + StrictNumericEscape: "The only valid numeric escape in strict mode is '\\0'.", + StrictOctalLiteral: "Legacy octal literals are not allowed in strict mode.", + StrictWith: "'with' in strict mode." +}; +const UnparenthesizedPipeBodyDescriptions = new Set(["ArrowFunctionExpression", "AssignmentExpression", "ConditionalExpression", "YieldExpression"]); +var PipelineOperatorErrors = { + PipeBodyIsTighter: "Unexpected yield after pipeline body; any yield expression acting as Hack-style pipe body must be parenthesized due to its loose operator precedence.", + PipeTopicRequiresHackPipes: 'Topic reference is used, but the pipelineOperator plugin was not passed a "proposal": "hack" or "smart" option.', + PipeTopicUnbound: "Topic reference is unbound; it must be inside a pipe body.", + PipeTopicUnconfiguredToken: ({ + token + }) => `Invalid topic token ${token}. In order to use ${token} as a topic reference, the pipelineOperator plugin must be configured with { "proposal": "hack", "topicToken": "${token}" }.`, + PipeTopicUnused: "Hack-style pipe body does not contain a topic reference; Hack-style pipes must use topic at least once.", + PipeUnparenthesizedBody: ({ + type + }) => `Hack-style pipe body cannot be an unparenthesized ${toNodeDescription({ + type + })}; please wrap it in parentheses.`, + PipelineBodyNoArrow: 'Unexpected arrow "=>" after pipeline body; arrow function in pipeline body must be parenthesized.', + PipelineBodySequenceExpression: "Pipeline body may not be a comma-separated sequence expression.", + PipelineHeadSequenceExpression: "Pipeline head should not be a comma-separated sequence expression.", + PipelineTopicUnused: "Pipeline is in topic style but does not use topic reference.", + PrimaryTopicNotAllowed: "Topic reference was used in a lexical context without topic binding.", + PrimaryTopicRequiresSmartPipeline: 'Topic reference is used, but the pipelineOperator plugin was not passed a "proposal": "hack" or "smart" option.' +}; +const _excluded$1 = ["toMessage"], + _excluded2$1 = ["message"]; +function defineHidden(obj, key, value) { + Object.defineProperty(obj, key, { + enumerable: false, + configurable: true, + value + }); +} +function toParseErrorConstructor(_ref) { + let { + toMessage + } = _ref, + properties = _objectWithoutPropertiesLoose(_ref, _excluded$1); + return function constructor({ + loc, + details + }) { + const error = new SyntaxError(); + Object.assign(error, properties, { + loc, + pos: loc.index + }); + if ("missingPlugin" in details) { + Object.assign(error, { + missingPlugin: details.missingPlugin + }); + } + defineHidden(error, "clone", function clone(overrides = {}) { + var _overrides$loc; + const { + line, + column, + index + } = (_overrides$loc = overrides.loc) != null ? _overrides$loc : loc; + return constructor({ + loc: new Position$1(line, column, index), + details: Object.assign({}, details, overrides.details) + }); + }); + defineHidden(error, "details", details); + Object.defineProperty(error, "message", { + configurable: true, + get() { + const message = `${toMessage(details)} (${loc.line}:${loc.column})`; + this.message = message; + return message; + }, + set(value) { + Object.defineProperty(this, "message", { + value, + writable: true + }); + } + }); + return error; + }; +} +function ParseErrorEnum(argument, syntaxPlugin) { + if (Array.isArray(argument)) { + return parseErrorTemplates => ParseErrorEnum(parseErrorTemplates, argument[0]); + } + const ParseErrorConstructors = {}; + for (const reasonCode of Object.keys(argument)) { + const template = argument[reasonCode]; + const _ref2 = typeof template === "string" ? { + message: () => template + } : typeof template === "function" ? { + message: template + } : template, + { + message + } = _ref2, + rest = _objectWithoutPropertiesLoose(_ref2, _excluded2$1); + const toMessage = typeof message === "string" ? () => message : message; + ParseErrorConstructors[reasonCode] = toParseErrorConstructor(Object.assign({ + code: "BABEL_PARSER_SYNTAX_ERROR", + reasonCode, + toMessage + }, syntaxPlugin ? { + syntaxPlugin + } : {}, rest)); + } + return ParseErrorConstructors; +} +const Errors = Object.assign({}, ParseErrorEnum(ModuleErrors), ParseErrorEnum(StandardErrors), ParseErrorEnum(StrictModeErrors), ParseErrorEnum`pipelineOperator`(PipelineOperatorErrors)); +const { + defineProperty +} = Object; +const toUnenumerable = (object, key) => defineProperty(object, key, { + enumerable: false, + value: object[key] +}); +function toESTreeLocation(node) { + node.loc.start && toUnenumerable(node.loc.start, "index"); + node.loc.end && toUnenumerable(node.loc.end, "index"); + return node; +} +var estree = superClass => class ESTreeParserMixin extends superClass { + parse() { + const file = toESTreeLocation(super.parse()); + if (this.options.tokens) { + file.tokens = file.tokens.map(toESTreeLocation); + } + return file; + } + parseRegExpLiteral({ + pattern, + flags + }) { + let regex = null; + try { + regex = new RegExp(pattern, flags); + } catch (e) {} + const node = this.estreeParseLiteral(regex); + node.regex = { + pattern, + flags + }; + return node; + } + parseBigIntLiteral(value) { + let bigInt; + try { + bigInt = BigInt(value); + } catch (_unused) { + bigInt = null; + } + const node = this.estreeParseLiteral(bigInt); + node.bigint = String(node.value || value); + return node; + } + parseDecimalLiteral(value) { + const decimal = null; + const node = this.estreeParseLiteral(decimal); + node.decimal = String(node.value || value); + return node; + } + estreeParseLiteral(value) { + return this.parseLiteral(value, "Literal"); + } + parseStringLiteral(value) { + return this.estreeParseLiteral(value); + } + parseNumericLiteral(value) { + return this.estreeParseLiteral(value); + } + parseNullLiteral() { + return this.estreeParseLiteral(null); + } + parseBooleanLiteral(value) { + return this.estreeParseLiteral(value); + } + directiveToStmt(directive) { + const expression = directive.value; + delete directive.value; + expression.type = "Literal"; + expression.raw = expression.extra.raw; + expression.value = expression.extra.expressionValue; + const stmt = directive; + stmt.type = "ExpressionStatement"; + stmt.expression = expression; + stmt.directive = expression.extra.rawValue; + delete expression.extra; + return stmt; + } + initFunction(node, isAsync) { + super.initFunction(node, isAsync); + node.expression = false; + } + checkDeclaration(node) { + if (node != null && this.isObjectProperty(node)) { + this.checkDeclaration(node.value); + } else { + super.checkDeclaration(node); + } + } + getObjectOrClassMethodParams(method) { + return method.value.params; + } + isValidDirective(stmt) { + var _stmt$expression$extr; + return stmt.type === "ExpressionStatement" && stmt.expression.type === "Literal" && typeof stmt.expression.value === "string" && !((_stmt$expression$extr = stmt.expression.extra) != null && _stmt$expression$extr.parenthesized); + } + parseBlockBody(node, allowDirectives, topLevel, end, afterBlockParse) { + super.parseBlockBody(node, allowDirectives, topLevel, end, afterBlockParse); + const directiveStatements = node.directives.map(d => this.directiveToStmt(d)); + node.body = directiveStatements.concat(node.body); + delete node.directives; + } + pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) { + this.parseMethod(method, isGenerator, isAsync, isConstructor, allowsDirectSuper, "ClassMethod", true); + if (method.typeParameters) { + method.value.typeParameters = method.typeParameters; + delete method.typeParameters; + } + classBody.body.push(method); + } + parsePrivateName() { + const node = super.parsePrivateName(); + { + if (!this.getPluginOption("estree", "classFeatures")) { + return node; + } + } + return this.convertPrivateNameToPrivateIdentifier(node); + } + convertPrivateNameToPrivateIdentifier(node) { + const name = super.getPrivateNameSV(node); + node = node; + delete node.id; + node.name = name; + node.type = "PrivateIdentifier"; + return node; + } + isPrivateName(node) { + { + if (!this.getPluginOption("estree", "classFeatures")) { + return super.isPrivateName(node); + } + } + return node.type === "PrivateIdentifier"; + } + getPrivateNameSV(node) { + { + if (!this.getPluginOption("estree", "classFeatures")) { + return super.getPrivateNameSV(node); + } + } + return node.name; + } + parseLiteral(value, type) { + const node = super.parseLiteral(value, type); + node.raw = node.extra.raw; + delete node.extra; + return node; + } + parseFunctionBody(node, allowExpression, isMethod = false) { + super.parseFunctionBody(node, allowExpression, isMethod); + node.expression = node.body.type !== "BlockStatement"; + } + parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope = false) { + let funcNode = this.startNode(); + funcNode.kind = node.kind; + funcNode = super.parseMethod(funcNode, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope); + funcNode.type = "FunctionExpression"; + delete funcNode.kind; + node.value = funcNode; + if (type === "ClassPrivateMethod") { + node.computed = false; + } + return this.finishNode(node, "MethodDefinition"); + } + parseClassProperty(...args) { + const propertyNode = super.parseClassProperty(...args); + { + if (!this.getPluginOption("estree", "classFeatures")) { + return propertyNode; + } + } + propertyNode.type = "PropertyDefinition"; + return propertyNode; + } + parseClassPrivateProperty(...args) { + const propertyNode = super.parseClassPrivateProperty(...args); + { + if (!this.getPluginOption("estree", "classFeatures")) { + return propertyNode; + } + } + propertyNode.type = "PropertyDefinition"; + propertyNode.computed = false; + return propertyNode; + } + parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor) { + const node = super.parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor); + if (node) { + node.type = "Property"; + if (node.kind === "method") { + node.kind = "init"; + } + node.shorthand = false; + } + return node; + } + parseObjectProperty(prop, startLoc, isPattern, refExpressionErrors) { + const node = super.parseObjectProperty(prop, startLoc, isPattern, refExpressionErrors); + if (node) { + node.kind = "init"; + node.type = "Property"; + } + return node; + } + isValidLVal(type, isUnparenthesizedInAssign, binding) { + return type === "Property" ? "value" : super.isValidLVal(type, isUnparenthesizedInAssign, binding); + } + isAssignable(node, isBinding) { + if (node != null && this.isObjectProperty(node)) { + return this.isAssignable(node.value, isBinding); + } + return super.isAssignable(node, isBinding); + } + toAssignable(node, isLHS = false) { + if (node != null && this.isObjectProperty(node)) { + const { + key, + value + } = node; + if (this.isPrivateName(key)) { + this.classScope.usePrivateName(this.getPrivateNameSV(key), key.loc.start); + } + this.toAssignable(value, isLHS); + } else { + super.toAssignable(node, isLHS); + } + } + toAssignableObjectExpressionProp(prop, isLast, isLHS) { + if (prop.kind === "get" || prop.kind === "set") { + this.raise(Errors.PatternHasAccessor, { + at: prop.key + }); + } else if (prop.method) { + this.raise(Errors.PatternHasMethod, { + at: prop.key + }); + } else { + super.toAssignableObjectExpressionProp(prop, isLast, isLHS); + } + } + finishCallExpression(unfinished, optional) { + const node = super.finishCallExpression(unfinished, optional); + if (node.callee.type === "Import") { + node.type = "ImportExpression"; + node.source = node.arguments[0]; + if (this.hasPlugin("importAttributes") || this.hasPlugin("importAssertions")) { + var _node$arguments$, _node$arguments$2; + node.options = (_node$arguments$ = node.arguments[1]) != null ? _node$arguments$ : null; + node.attributes = (_node$arguments$2 = node.arguments[1]) != null ? _node$arguments$2 : null; + } + delete node.arguments; + delete node.callee; + } + return node; + } + toReferencedArguments(node) { + if (node.type === "ImportExpression") { + return; + } + super.toReferencedArguments(node); + } + parseExport(unfinished, decorators) { + const exportStartLoc = this.state.lastTokStartLoc; + const node = super.parseExport(unfinished, decorators); + switch (node.type) { + case "ExportAllDeclaration": + node.exported = null; + break; + case "ExportNamedDeclaration": + if (node.specifiers.length === 1 && node.specifiers[0].type === "ExportNamespaceSpecifier") { + node.type = "ExportAllDeclaration"; + node.exported = node.specifiers[0].exported; + delete node.specifiers; + } + case "ExportDefaultDeclaration": + { + var _declaration$decorato; + const { + declaration + } = node; + if ((declaration == null ? void 0 : declaration.type) === "ClassDeclaration" && ((_declaration$decorato = declaration.decorators) == null ? void 0 : _declaration$decorato.length) > 0 && declaration.start === node.start) { + this.resetStartLocation(node, exportStartLoc); + } + } + break; + } + return node; + } + parseSubscript(base, startLoc, noCalls, state) { + const node = super.parseSubscript(base, startLoc, noCalls, state); + if (state.optionalChainMember) { + if (node.type === "OptionalMemberExpression" || node.type === "OptionalCallExpression") { + node.type = node.type.substring(8); + } + if (state.stop) { + const chain = this.startNodeAtNode(node); + chain.expression = node; + return this.finishNode(chain, "ChainExpression"); + } + } else if (node.type === "MemberExpression" || node.type === "CallExpression") { + node.optional = false; + } + return node; + } + isOptionalMemberExpression(node) { + if (node.type === "ChainExpression") { + return node.expression.type === "MemberExpression"; + } + return super.isOptionalMemberExpression(node); + } + hasPropertyAsPrivateName(node) { + if (node.type === "ChainExpression") { + node = node.expression; + } + return super.hasPropertyAsPrivateName(node); + } + isObjectProperty(node) { + return node.type === "Property" && node.kind === "init" && !node.method; + } + isObjectMethod(node) { + return node.method || node.kind === "get" || node.kind === "set"; + } + finishNodeAt(node, type, endLoc) { + return toESTreeLocation(super.finishNodeAt(node, type, endLoc)); + } + resetStartLocation(node, startLoc) { + super.resetStartLocation(node, startLoc); + toESTreeLocation(node); + } + resetEndLocation(node, endLoc = this.state.lastTokEndLoc) { + super.resetEndLocation(node, endLoc); + toESTreeLocation(node); + } +}; +class TokContext { + constructor(token, preserveSpace) { + this.token = void 0; + this.preserveSpace = void 0; + this.token = token; + this.preserveSpace = !!preserveSpace; + } +} +const types$3 = { + brace: new TokContext("{"), + j_oTag: new TokContext("<tag"), + j_cTag: new TokContext("</tag"), + j_expr: new TokContext("<tag>...</tag>", true) +}; +{ + types$3.template = new TokContext("`", true); +} +const beforeExpr = true; +const startsExpr = true; +const isLoop = true; +const isAssign = true; +const prefix = true; +const postfix = true; +class ExportedTokenType { + constructor(label, conf = {}) { + this.label = void 0; + this.keyword = void 0; + this.beforeExpr = void 0; + this.startsExpr = void 0; + this.rightAssociative = void 0; + this.isLoop = void 0; + this.isAssign = void 0; + this.prefix = void 0; + this.postfix = void 0; + this.binop = void 0; + this.label = label; + this.keyword = conf.keyword; + this.beforeExpr = !!conf.beforeExpr; + this.startsExpr = !!conf.startsExpr; + this.rightAssociative = !!conf.rightAssociative; + this.isLoop = !!conf.isLoop; + this.isAssign = !!conf.isAssign; + this.prefix = !!conf.prefix; + this.postfix = !!conf.postfix; + this.binop = conf.binop != null ? conf.binop : null; + { + this.updateContext = null; + } + } +} +const keywords$1 = new Map(); +function createKeyword(name, options = {}) { + options.keyword = name; + const token = createToken(name, options); + keywords$1.set(name, token); + return token; +} +function createBinop(name, binop) { + return createToken(name, { + beforeExpr, + binop + }); +} +let tokenTypeCounter = -1; +const tokenTypes$1 = []; +const tokenLabels = []; +const tokenBinops = []; +const tokenBeforeExprs = []; +const tokenStartsExprs = []; +const tokenPrefixes = []; +function createToken(name, options = {}) { + var _options$binop, _options$beforeExpr, _options$startsExpr, _options$prefix; + ++tokenTypeCounter; + tokenLabels.push(name); + tokenBinops.push((_options$binop = options.binop) != null ? _options$binop : -1); + tokenBeforeExprs.push((_options$beforeExpr = options.beforeExpr) != null ? _options$beforeExpr : false); + tokenStartsExprs.push((_options$startsExpr = options.startsExpr) != null ? _options$startsExpr : false); + tokenPrefixes.push((_options$prefix = options.prefix) != null ? _options$prefix : false); + tokenTypes$1.push(new ExportedTokenType(name, options)); + return tokenTypeCounter; +} +function createKeywordLike(name, options = {}) { + var _options$binop2, _options$beforeExpr2, _options$startsExpr2, _options$prefix2; + ++tokenTypeCounter; + keywords$1.set(name, tokenTypeCounter); + tokenLabels.push(name); + tokenBinops.push((_options$binop2 = options.binop) != null ? _options$binop2 : -1); + tokenBeforeExprs.push((_options$beforeExpr2 = options.beforeExpr) != null ? _options$beforeExpr2 : false); + tokenStartsExprs.push((_options$startsExpr2 = options.startsExpr) != null ? _options$startsExpr2 : false); + tokenPrefixes.push((_options$prefix2 = options.prefix) != null ? _options$prefix2 : false); + tokenTypes$1.push(new ExportedTokenType("name", options)); + return tokenTypeCounter; +} +const tt = { + bracketL: createToken("[", { + beforeExpr, + startsExpr + }), + bracketHashL: createToken("#[", { + beforeExpr, + startsExpr + }), + bracketBarL: createToken("[|", { + beforeExpr, + startsExpr + }), + bracketR: createToken("]"), + bracketBarR: createToken("|]"), + braceL: createToken("{", { + beforeExpr, + startsExpr + }), + braceBarL: createToken("{|", { + beforeExpr, + startsExpr + }), + braceHashL: createToken("#{", { + beforeExpr, + startsExpr + }), + braceR: createToken("}"), + braceBarR: createToken("|}"), + parenL: createToken("(", { + beforeExpr, + startsExpr + }), + parenR: createToken(")"), + comma: createToken(",", { + beforeExpr + }), + semi: createToken(";", { + beforeExpr + }), + colon: createToken(":", { + beforeExpr + }), + doubleColon: createToken("::", { + beforeExpr + }), + dot: createToken("."), + question: createToken("?", { + beforeExpr + }), + questionDot: createToken("?."), + arrow: createToken("=>", { + beforeExpr + }), + template: createToken("template"), + ellipsis: createToken("...", { + beforeExpr + }), + backQuote: createToken("`", { + startsExpr + }), + dollarBraceL: createToken("${", { + beforeExpr, + startsExpr + }), + templateTail: createToken("...`", { + startsExpr + }), + templateNonTail: createToken("...${", { + beforeExpr, + startsExpr + }), + at: createToken("@"), + hash: createToken("#", { + startsExpr + }), + interpreterDirective: createToken("#!..."), + eq: createToken("=", { + beforeExpr, + isAssign + }), + assign: createToken("_=", { + beforeExpr, + isAssign + }), + slashAssign: createToken("_=", { + beforeExpr, + isAssign + }), + xorAssign: createToken("_=", { + beforeExpr, + isAssign + }), + moduloAssign: createToken("_=", { + beforeExpr, + isAssign + }), + incDec: createToken("++/--", { + prefix, + postfix, + startsExpr + }), + bang: createToken("!", { + beforeExpr, + prefix, + startsExpr + }), + tilde: createToken("~", { + beforeExpr, + prefix, + startsExpr + }), + doubleCaret: createToken("^^", { + startsExpr + }), + doubleAt: createToken("@@", { + startsExpr + }), + pipeline: createBinop("|>", 0), + nullishCoalescing: createBinop("??", 1), + logicalOR: createBinop("||", 1), + logicalAND: createBinop("&&", 2), + bitwiseOR: createBinop("|", 3), + bitwiseXOR: createBinop("^", 4), + bitwiseAND: createBinop("&", 5), + equality: createBinop("==/!=/===/!==", 6), + lt: createBinop("</>/<=/>=", 7), + gt: createBinop("</>/<=/>=", 7), + relational: createBinop("</>/<=/>=", 7), + bitShift: createBinop("<</>>/>>>", 8), + bitShiftL: createBinop("<</>>/>>>", 8), + bitShiftR: createBinop("<</>>/>>>", 8), + plusMin: createToken("+/-", { + beforeExpr, + binop: 9, + prefix, + startsExpr + }), + modulo: createToken("%", { + binop: 10, + startsExpr + }), + star: createToken("*", { + binop: 10 + }), + slash: createBinop("/", 10), + exponent: createToken("**", { + beforeExpr, + binop: 11, + rightAssociative: true + }), + _in: createKeyword("in", { + beforeExpr, + binop: 7 + }), + _instanceof: createKeyword("instanceof", { + beforeExpr, + binop: 7 + }), + _break: createKeyword("break"), + _case: createKeyword("case", { + beforeExpr + }), + _catch: createKeyword("catch"), + _continue: createKeyword("continue"), + _debugger: createKeyword("debugger"), + _default: createKeyword("default", { + beforeExpr + }), + _else: createKeyword("else", { + beforeExpr + }), + _finally: createKeyword("finally"), + _function: createKeyword("function", { + startsExpr + }), + _if: createKeyword("if"), + _return: createKeyword("return", { + beforeExpr + }), + _switch: createKeyword("switch"), + _throw: createKeyword("throw", { + beforeExpr, + prefix, + startsExpr + }), + _try: createKeyword("try"), + _var: createKeyword("var"), + _const: createKeyword("const"), + _with: createKeyword("with"), + _new: createKeyword("new", { + beforeExpr, + startsExpr + }), + _this: createKeyword("this", { + startsExpr + }), + _super: createKeyword("super", { + startsExpr + }), + _class: createKeyword("class", { + startsExpr + }), + _extends: createKeyword("extends", { + beforeExpr + }), + _export: createKeyword("export"), + _import: createKeyword("import", { + startsExpr + }), + _null: createKeyword("null", { + startsExpr + }), + _true: createKeyword("true", { + startsExpr + }), + _false: createKeyword("false", { + startsExpr + }), + _typeof: createKeyword("typeof", { + beforeExpr, + prefix, + startsExpr + }), + _void: createKeyword("void", { + beforeExpr, + prefix, + startsExpr + }), + _delete: createKeyword("delete", { + beforeExpr, + prefix, + startsExpr + }), + _do: createKeyword("do", { + isLoop, + beforeExpr + }), + _for: createKeyword("for", { + isLoop + }), + _while: createKeyword("while", { + isLoop + }), + _as: createKeywordLike("as", { + startsExpr + }), + _assert: createKeywordLike("assert", { + startsExpr + }), + _async: createKeywordLike("async", { + startsExpr + }), + _await: createKeywordLike("await", { + startsExpr + }), + _defer: createKeywordLike("defer", { + startsExpr + }), + _from: createKeywordLike("from", { + startsExpr + }), + _get: createKeywordLike("get", { + startsExpr + }), + _let: createKeywordLike("let", { + startsExpr + }), + _meta: createKeywordLike("meta", { + startsExpr + }), + _of: createKeywordLike("of", { + startsExpr + }), + _sent: createKeywordLike("sent", { + startsExpr + }), + _set: createKeywordLike("set", { + startsExpr + }), + _source: createKeywordLike("source", { + startsExpr + }), + _static: createKeywordLike("static", { + startsExpr + }), + _using: createKeywordLike("using", { + startsExpr + }), + _yield: createKeywordLike("yield", { + startsExpr + }), + _asserts: createKeywordLike("asserts", { + startsExpr + }), + _checks: createKeywordLike("checks", { + startsExpr + }), + _exports: createKeywordLike("exports", { + startsExpr + }), + _global: createKeywordLike("global", { + startsExpr + }), + _implements: createKeywordLike("implements", { + startsExpr + }), + _intrinsic: createKeywordLike("intrinsic", { + startsExpr + }), + _infer: createKeywordLike("infer", { + startsExpr + }), + _is: createKeywordLike("is", { + startsExpr + }), + _mixins: createKeywordLike("mixins", { + startsExpr + }), + _proto: createKeywordLike("proto", { + startsExpr + }), + _require: createKeywordLike("require", { + startsExpr + }), + _satisfies: createKeywordLike("satisfies", { + startsExpr + }), + _keyof: createKeywordLike("keyof", { + startsExpr + }), + _readonly: createKeywordLike("readonly", { + startsExpr + }), + _unique: createKeywordLike("unique", { + startsExpr + }), + _abstract: createKeywordLike("abstract", { + startsExpr + }), + _declare: createKeywordLike("declare", { + startsExpr + }), + _enum: createKeywordLike("enum", { + startsExpr + }), + _module: createKeywordLike("module", { + startsExpr + }), + _namespace: createKeywordLike("namespace", { + startsExpr + }), + _interface: createKeywordLike("interface", { + startsExpr + }), + _type: createKeywordLike("type", { + startsExpr + }), + _opaque: createKeywordLike("opaque", { + startsExpr + }), + name: createToken("name", { + startsExpr + }), + string: createToken("string", { + startsExpr + }), + num: createToken("num", { + startsExpr + }), + bigint: createToken("bigint", { + startsExpr + }), + decimal: createToken("decimal", { + startsExpr + }), + regexp: createToken("regexp", { + startsExpr + }), + privateName: createToken("#name", { + startsExpr + }), + eof: createToken("eof"), + jsxName: createToken("jsxName"), + jsxText: createToken("jsxText", { + beforeExpr: true + }), + jsxTagStart: createToken("jsxTagStart", { + startsExpr: true + }), + jsxTagEnd: createToken("jsxTagEnd"), + placeholder: createToken("%%", { + startsExpr: true + }) +}; +function tokenIsIdentifier(token) { + return token >= 93 && token <= 132; +} +function tokenKeywordOrIdentifierIsKeyword(token) { + return token <= 92; +} +function tokenIsKeywordOrIdentifier(token) { + return token >= 58 && token <= 132; +} +function tokenIsLiteralPropertyName(token) { + return token >= 58 && token <= 136; +} +function tokenComesBeforeExpression(token) { + return tokenBeforeExprs[token]; +} +function tokenCanStartExpression(token) { + return tokenStartsExprs[token]; +} +function tokenIsAssignment(token) { + return token >= 29 && token <= 33; +} +function tokenIsFlowInterfaceOrTypeOrOpaque(token) { + return token >= 129 && token <= 131; +} +function tokenIsLoop(token) { + return token >= 90 && token <= 92; +} +function tokenIsKeyword(token) { + return token >= 58 && token <= 92; +} +function tokenIsOperator(token) { + return token >= 39 && token <= 59; +} +function tokenIsPostfix(token) { + return token === 34; +} +function tokenIsPrefix(token) { + return tokenPrefixes[token]; +} +function tokenIsTSTypeOperator(token) { + return token >= 121 && token <= 123; +} +function tokenIsTSDeclarationStart(token) { + return token >= 124 && token <= 130; +} +function tokenLabelName(token) { + return tokenLabels[token]; +} +function tokenOperatorPrecedence(token) { + return tokenBinops[token]; +} +function tokenIsRightAssociative(token) { + return token === 57; +} +function tokenIsTemplate(token) { + return token >= 24 && token <= 25; +} +function getExportedToken(token) { + return tokenTypes$1[token]; +} +{ + tokenTypes$1[8].updateContext = context => { + context.pop(); + }; + tokenTypes$1[5].updateContext = tokenTypes$1[7].updateContext = tokenTypes$1[23].updateContext = context => { + context.push(types$3.brace); + }; + tokenTypes$1[22].updateContext = context => { + if (context[context.length - 1] === types$3.template) { + context.pop(); + } else { + context.push(types$3.template); + } + }; + tokenTypes$1[142].updateContext = context => { + context.push(types$3.j_expr, types$3.j_oTag); + }; +} +let nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u0870-\u0887\u0889-\u088e\u08a0-\u08c9\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c5d\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cdd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u1711\u171f-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4c\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c88\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31bf\u31f0-\u31ff\u3400-\u4dbf\u4e00-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7ca\ua7d0\ua7d1\ua7d3\ua7d5-\ua7d9\ua7f2-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab69\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc"; +let nonASCIIidentifierChars = "\u200c\u200d\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0898-\u089f\u08ca-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b55-\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3c\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0cf3\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d81-\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0ebc\u0ec8-\u0ece\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u180f-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1abf-\u1ace\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf4\u1cf7-\u1cf9\u1dc0-\u1dff\u200c\u200d\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\u30fb\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua82c\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f\uff65"; +const nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]"); +const nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]"); +nonASCIIidentifierStartChars = nonASCIIidentifierChars = null; +const astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 68, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 349, 41, 7, 1, 79, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 20, 1, 64, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 159, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 264, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 16, 0, 2, 12, 2, 33, 125, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1071, 18, 5, 4026, 582, 8634, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 689, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 43, 8, 8936, 3, 2, 6, 2, 1, 2, 290, 16, 0, 30, 2, 3, 0, 15, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 7, 5, 262, 61, 147, 44, 11, 6, 17, 0, 322, 29, 19, 43, 485, 27, 757, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4153, 7, 221, 3, 5761, 15, 7472, 16, 621, 2467, 541, 1507, 4938, 6, 4191]; +const astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 370, 1, 81, 2, 71, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 3, 0, 158, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 193, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 84, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 406, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 10, 1, 2, 0, 49, 6, 4, 4, 14, 9, 5351, 0, 7, 14, 13835, 9, 87, 9, 39, 4, 60, 6, 26, 9, 1014, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4706, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 101, 0, 161, 6, 10, 9, 357, 0, 62, 13, 499, 13, 983, 6, 110, 6, 6, 9, 4759, 9, 787719, 239]; +function isInAstralSet(code, set) { + let pos = 0x10000; + for (let i = 0, length = set.length; i < length; i += 2) { + pos += set[i]; + if (pos > code) return false; + pos += set[i + 1]; + if (pos >= code) return true; + } + return false; +} +function isIdentifierStart(code) { + if (code < 65) return code === 36; + if (code <= 90) return true; + if (code < 97) return code === 95; + if (code <= 122) return true; + if (code <= 0xffff) { + return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code)); + } + return isInAstralSet(code, astralIdentifierStartCodes); +} +function isIdentifierChar(code) { + if (code < 48) return code === 36; + if (code < 58) return true; + if (code < 65) return false; + if (code <= 90) return true; + if (code < 97) return code === 95; + if (code <= 122) return true; + if (code <= 0xffff) { + return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code)); + } + return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes); +} +const reservedWords = { + keyword: ["break", "case", "catch", "continue", "debugger", "default", "do", "else", "finally", "for", "function", "if", "return", "switch", "throw", "try", "var", "const", "while", "with", "new", "this", "super", "class", "extends", "export", "import", "null", "true", "false", "in", "instanceof", "typeof", "void", "delete"], + strict: ["implements", "interface", "let", "package", "private", "protected", "public", "static", "yield"], + strictBind: ["eval", "arguments"] +}; +const keywords = new Set(reservedWords.keyword); +const reservedWordsStrictSet = new Set(reservedWords.strict); +const reservedWordsStrictBindSet = new Set(reservedWords.strictBind); +function isReservedWord(word, inModule) { + return inModule && word === "await" || word === "enum"; +} +function isStrictReservedWord(word, inModule) { + return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word); +} +function isStrictBindOnlyReservedWord(word) { + return reservedWordsStrictBindSet.has(word); +} +function isStrictBindReservedWord(word, inModule) { + return isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word); +} +function isKeyword(word) { + return keywords.has(word); +} +function isIteratorStart(current, next, next2) { + return current === 64 && next === 64 && isIdentifierStart(next2); +} +const reservedWordLikeSet = new Set(["break", "case", "catch", "continue", "debugger", "default", "do", "else", "finally", "for", "function", "if", "return", "switch", "throw", "try", "var", "const", "while", "with", "new", "this", "super", "class", "extends", "export", "import", "null", "true", "false", "in", "instanceof", "typeof", "void", "delete", "implements", "interface", "let", "package", "private", "protected", "public", "static", "yield", "eval", "arguments", "enum", "await"]); +function canBeReservedWord(word) { + return reservedWordLikeSet.has(word); +} +let Scope$1 = class Scope { + constructor(flags) { + this.var = new Set(); + this.lexical = new Set(); + this.functions = new Set(); + this.flags = flags; + } +}; +class ScopeHandler { + constructor(parser, inModule) { + this.parser = void 0; + this.scopeStack = []; + this.inModule = void 0; + this.undefinedExports = new Map(); + this.parser = parser; + this.inModule = inModule; + } + get inTopLevel() { + return (this.currentScope().flags & 1) > 0; + } + get inFunction() { + return (this.currentVarScopeFlags() & 2) > 0; + } + get allowSuper() { + return (this.currentThisScopeFlags() & 16) > 0; + } + get allowDirectSuper() { + return (this.currentThisScopeFlags() & 32) > 0; + } + get inClass() { + return (this.currentThisScopeFlags() & 64) > 0; + } + get inClassAndNotInNonArrowFunction() { + const flags = this.currentThisScopeFlags(); + return (flags & 64) > 0 && (flags & 2) === 0; + } + get inStaticBlock() { + for (let i = this.scopeStack.length - 1;; i--) { + const { + flags + } = this.scopeStack[i]; + if (flags & 128) { + return true; + } + if (flags & (387 | 64)) { + return false; + } + } + } + get inNonArrowFunction() { + return (this.currentThisScopeFlags() & 2) > 0; + } + get treatFunctionsAsVar() { + return this.treatFunctionsAsVarInScope(this.currentScope()); + } + createScope(flags) { + return new Scope$1(flags); + } + enter(flags) { + this.scopeStack.push(this.createScope(flags)); + } + exit() { + const scope = this.scopeStack.pop(); + return scope.flags; + } + treatFunctionsAsVarInScope(scope) { + return !!(scope.flags & (2 | 128) || !this.parser.inModule && scope.flags & 1); + } + declareName(name, bindingType, loc) { + let scope = this.currentScope(); + if (bindingType & 8 || bindingType & 16) { + this.checkRedeclarationInScope(scope, name, bindingType, loc); + if (bindingType & 16) { + scope.functions.add(name); + } else { + scope.lexical.add(name); + } + if (bindingType & 8) { + this.maybeExportDefined(scope, name); + } + } else if (bindingType & 4) { + for (let i = this.scopeStack.length - 1; i >= 0; --i) { + scope = this.scopeStack[i]; + this.checkRedeclarationInScope(scope, name, bindingType, loc); + scope.var.add(name); + this.maybeExportDefined(scope, name); + if (scope.flags & 387) break; + } + } + if (this.parser.inModule && scope.flags & 1) { + this.undefinedExports.delete(name); + } + } + maybeExportDefined(scope, name) { + if (this.parser.inModule && scope.flags & 1) { + this.undefinedExports.delete(name); + } + } + checkRedeclarationInScope(scope, name, bindingType, loc) { + if (this.isRedeclaredInScope(scope, name, bindingType)) { + this.parser.raise(Errors.VarRedeclaration, { + at: loc, + identifierName: name + }); + } + } + isRedeclaredInScope(scope, name, bindingType) { + if (!(bindingType & 1)) return false; + if (bindingType & 8) { + return scope.lexical.has(name) || scope.functions.has(name) || scope.var.has(name); + } + if (bindingType & 16) { + return scope.lexical.has(name) || !this.treatFunctionsAsVarInScope(scope) && scope.var.has(name); + } + return scope.lexical.has(name) && !(scope.flags & 8 && scope.lexical.values().next().value === name) || !this.treatFunctionsAsVarInScope(scope) && scope.functions.has(name); + } + checkLocalExport(id) { + const { + name + } = id; + const topLevelScope = this.scopeStack[0]; + if (!topLevelScope.lexical.has(name) && !topLevelScope.var.has(name) && !topLevelScope.functions.has(name)) { + this.undefinedExports.set(name, id.loc.start); + } + } + currentScope() { + return this.scopeStack[this.scopeStack.length - 1]; + } + currentVarScopeFlags() { + for (let i = this.scopeStack.length - 1;; i--) { + const { + flags + } = this.scopeStack[i]; + if (flags & 387) { + return flags; + } + } + } + currentThisScopeFlags() { + for (let i = this.scopeStack.length - 1;; i--) { + const { + flags + } = this.scopeStack[i]; + if (flags & (387 | 64) && !(flags & 4)) { + return flags; + } + } + } +} +class FlowScope extends Scope$1 { + constructor(...args) { + super(...args); + this.declareFunctions = new Set(); + } +} +class FlowScopeHandler extends ScopeHandler { + createScope(flags) { + return new FlowScope(flags); + } + declareName(name, bindingType, loc) { + const scope = this.currentScope(); + if (bindingType & 2048) { + this.checkRedeclarationInScope(scope, name, bindingType, loc); + this.maybeExportDefined(scope, name); + scope.declareFunctions.add(name); + return; + } + super.declareName(name, bindingType, loc); + } + isRedeclaredInScope(scope, name, bindingType) { + if (super.isRedeclaredInScope(scope, name, bindingType)) return true; + if (bindingType & 2048) { + return !scope.declareFunctions.has(name) && (scope.lexical.has(name) || scope.functions.has(name)); + } + return false; + } + checkLocalExport(id) { + if (!this.scopeStack[0].declareFunctions.has(id.name)) { + super.checkLocalExport(id); + } + } +} +class BaseParser { + constructor() { + this.sawUnambiguousESM = false; + this.ambiguousScriptDifferentAst = false; + } + hasPlugin(pluginConfig) { + if (typeof pluginConfig === "string") { + return this.plugins.has(pluginConfig); + } else { + const [pluginName, pluginOptions] = pluginConfig; + if (!this.hasPlugin(pluginName)) { + return false; + } + const actualOptions = this.plugins.get(pluginName); + for (const key of Object.keys(pluginOptions)) { + if ((actualOptions == null ? void 0 : actualOptions[key]) !== pluginOptions[key]) { + return false; + } + } + return true; + } + } + getPluginOption(plugin, name) { + var _this$plugins$get; + return (_this$plugins$get = this.plugins.get(plugin)) == null ? void 0 : _this$plugins$get[name]; + } +} +function setTrailingComments(node, comments) { + if (node.trailingComments === undefined) { + node.trailingComments = comments; + } else { + node.trailingComments.unshift(...comments); + } +} +function setLeadingComments(node, comments) { + if (node.leadingComments === undefined) { + node.leadingComments = comments; + } else { + node.leadingComments.unshift(...comments); + } +} +function setInnerComments(node, comments) { + if (node.innerComments === undefined) { + node.innerComments = comments; + } else { + node.innerComments.unshift(...comments); + } +} +function adjustInnerComments(node, elements, commentWS) { + let lastElement = null; + let i = elements.length; + while (lastElement === null && i > 0) { + lastElement = elements[--i]; + } + if (lastElement === null || lastElement.start > commentWS.start) { + setInnerComments(node, commentWS.comments); + } else { + setTrailingComments(lastElement, commentWS.comments); + } +} +class CommentsParser extends BaseParser { + addComment(comment) { + if (this.filename) comment.loc.filename = this.filename; + this.state.comments.push(comment); + } + processComment(node) { + const { + commentStack + } = this.state; + const commentStackLength = commentStack.length; + if (commentStackLength === 0) return; + let i = commentStackLength - 1; + const lastCommentWS = commentStack[i]; + if (lastCommentWS.start === node.end) { + lastCommentWS.leadingNode = node; + i--; + } + const { + start: nodeStart + } = node; + for (; i >= 0; i--) { + const commentWS = commentStack[i]; + const commentEnd = commentWS.end; + if (commentEnd > nodeStart) { + commentWS.containingNode = node; + this.finalizeComment(commentWS); + commentStack.splice(i, 1); + } else { + if (commentEnd === nodeStart) { + commentWS.trailingNode = node; + } + break; + } + } + } + finalizeComment(commentWS) { + const { + comments + } = commentWS; + if (commentWS.leadingNode !== null || commentWS.trailingNode !== null) { + if (commentWS.leadingNode !== null) { + setTrailingComments(commentWS.leadingNode, comments); + } + if (commentWS.trailingNode !== null) { + setLeadingComments(commentWS.trailingNode, comments); + } + } else { + const { + containingNode: node, + start: commentStart + } = commentWS; + if (this.input.charCodeAt(commentStart - 1) === 44) { + switch (node.type) { + case "ObjectExpression": + case "ObjectPattern": + case "RecordExpression": + adjustInnerComments(node, node.properties, commentWS); + break; + case "CallExpression": + case "OptionalCallExpression": + adjustInnerComments(node, node.arguments, commentWS); + break; + case "FunctionDeclaration": + case "FunctionExpression": + case "ArrowFunctionExpression": + case "ObjectMethod": + case "ClassMethod": + case "ClassPrivateMethod": + adjustInnerComments(node, node.params, commentWS); + break; + case "ArrayExpression": + case "ArrayPattern": + case "TupleExpression": + adjustInnerComments(node, node.elements, commentWS); + break; + case "ExportNamedDeclaration": + case "ImportDeclaration": + adjustInnerComments(node, node.specifiers, commentWS); + break; + default: + { + setInnerComments(node, comments); + } + } + } else { + setInnerComments(node, comments); + } + } + } + finalizeRemainingComments() { + const { + commentStack + } = this.state; + for (let i = commentStack.length - 1; i >= 0; i--) { + this.finalizeComment(commentStack[i]); + } + this.state.commentStack = []; + } + resetPreviousNodeTrailingComments(node) { + const { + commentStack + } = this.state; + const { + length + } = commentStack; + if (length === 0) return; + const commentWS = commentStack[length - 1]; + if (commentWS.leadingNode === node) { + commentWS.leadingNode = null; + } + } + resetPreviousIdentifierLeadingComments(node) { + const { + commentStack + } = this.state; + const { + length + } = commentStack; + if (length === 0) return; + if (commentStack[length - 1].trailingNode === node) { + commentStack[length - 1].trailingNode = null; + } else if (length >= 2 && commentStack[length - 2].trailingNode === node) { + commentStack[length - 2].trailingNode = null; + } + } + takeSurroundingComments(node, start, end) { + const { + commentStack + } = this.state; + const commentStackLength = commentStack.length; + if (commentStackLength === 0) return; + let i = commentStackLength - 1; + for (; i >= 0; i--) { + const commentWS = commentStack[i]; + const commentEnd = commentWS.end; + const commentStart = commentWS.start; + if (commentStart === end) { + commentWS.leadingNode = node; + } else if (commentEnd === start) { + commentWS.trailingNode = node; + } else if (commentEnd < start) { + break; + } + } + } +} +const lineBreak = /\r\n?|[\n\u2028\u2029]/; +const lineBreakG = new RegExp(lineBreak.source, "g"); +function isNewLine(code) { + switch (code) { + case 10: + case 13: + case 8232: + case 8233: + return true; + default: + return false; + } +} +const skipWhiteSpace = /(?:\s|\/\/.*|\/\*[^]*?\*\/)*/g; +const skipWhiteSpaceInLine = /(?:[^\S\n\r\u2028\u2029]|\/\/.*|\/\*.*?\*\/)*/g; +const skipWhiteSpaceToLineBreak = new RegExp("(?=(" + skipWhiteSpaceInLine.source + "))\\1" + /(?=[\n\r\u2028\u2029]|\/\*(?!.*?\*\/)|$)/.source, "y"); +function isWhitespace$4(code) { + switch (code) { + case 0x0009: + case 0x000b: + case 0x000c: + case 32: + case 160: + case 5760: + case 0x2000: + case 0x2001: + case 0x2002: + case 0x2003: + case 0x2004: + case 0x2005: + case 0x2006: + case 0x2007: + case 0x2008: + case 0x2009: + case 0x200a: + case 0x202f: + case 0x205f: + case 0x3000: + case 0xfeff: + return true; + default: + return false; + } +} +class State { + constructor() { + this.strict = void 0; + this.curLine = void 0; + this.lineStart = void 0; + this.startLoc = void 0; + this.endLoc = void 0; + this.errors = []; + this.potentialArrowAt = -1; + this.noArrowAt = []; + this.noArrowParamsConversionAt = []; + this.maybeInArrowParameters = false; + this.inType = false; + this.noAnonFunctionType = false; + this.hasFlowComment = false; + this.isAmbientContext = false; + this.inAbstractClass = false; + this.inDisallowConditionalTypesContext = false; + this.topicContext = { + maxNumOfResolvableTopics: 0, + maxTopicIndex: null + }; + this.soloAwait = false; + this.inFSharpPipelineDirectBody = false; + this.labels = []; + this.comments = []; + this.commentStack = []; + this.pos = 0; + this.type = 139; + this.value = null; + this.start = 0; + this.end = 0; + this.lastTokEndLoc = null; + this.lastTokStartLoc = null; + this.lastTokStart = 0; + this.context = [types$3.brace]; + this.canStartJSXElement = true; + this.containsEsc = false; + this.firstInvalidTemplateEscapePos = null; + this.strictErrors = new Map(); + this.tokensLength = 0; + } + init({ + strictMode, + sourceType, + startLine, + startColumn + }) { + this.strict = strictMode === false ? false : strictMode === true ? true : sourceType === "module"; + this.curLine = startLine; + this.lineStart = -startColumn; + this.startLoc = this.endLoc = new Position$1(startLine, startColumn, 0); + } + curPosition() { + return new Position$1(this.curLine, this.pos - this.lineStart, this.pos); + } + clone(skipArrays) { + const state = new State(); + const keys = Object.keys(this); + for (let i = 0, length = keys.length; i < length; i++) { + const key = keys[i]; + let val = this[key]; + if (!skipArrays && Array.isArray(val)) { + val = val.slice(); + } + state[key] = val; + } + return state; + } +} +var _isDigit = function isDigit(code) { + return code >= 48 && code <= 57; +}; +const forbiddenNumericSeparatorSiblings = { + decBinOct: new Set([46, 66, 69, 79, 95, 98, 101, 111]), + hex: new Set([46, 88, 95, 120]) +}; +const isAllowedNumericSeparatorSibling = { + bin: ch => ch === 48 || ch === 49, + oct: ch => ch >= 48 && ch <= 55, + dec: ch => ch >= 48 && ch <= 57, + hex: ch => ch >= 48 && ch <= 57 || ch >= 65 && ch <= 70 || ch >= 97 && ch <= 102 +}; +function readStringContents(type, input, pos, lineStart, curLine, errors) { + const initialPos = pos; + const initialLineStart = lineStart; + const initialCurLine = curLine; + let out = ""; + let firstInvalidLoc = null; + let chunkStart = pos; + const { + length + } = input; + for (;;) { + if (pos >= length) { + errors.unterminated(initialPos, initialLineStart, initialCurLine); + out += input.slice(chunkStart, pos); + break; + } + const ch = input.charCodeAt(pos); + if (isStringEnd(type, ch, input, pos)) { + out += input.slice(chunkStart, pos); + break; + } + if (ch === 92) { + out += input.slice(chunkStart, pos); + const res = readEscapedChar(input, pos, lineStart, curLine, type === "template", errors); + if (res.ch === null && !firstInvalidLoc) { + firstInvalidLoc = { + pos, + lineStart, + curLine + }; + } else { + out += res.ch; + } + ({ + pos, + lineStart, + curLine + } = res); + chunkStart = pos; + } else if (ch === 8232 || ch === 8233) { + ++pos; + ++curLine; + lineStart = pos; + } else if (ch === 10 || ch === 13) { + if (type === "template") { + out += input.slice(chunkStart, pos) + "\n"; + ++pos; + if (ch === 13 && input.charCodeAt(pos) === 10) { + ++pos; + } + ++curLine; + chunkStart = lineStart = pos; + } else { + errors.unterminated(initialPos, initialLineStart, initialCurLine); + } + } else { + ++pos; + } + } + return { + pos, + str: out, + firstInvalidLoc, + lineStart, + curLine, + containsInvalid: !!firstInvalidLoc + }; +} +function isStringEnd(type, ch, input, pos) { + if (type === "template") { + return ch === 96 || ch === 36 && input.charCodeAt(pos + 1) === 123; + } + return ch === (type === "double" ? 34 : 39); +} +function readEscapedChar(input, pos, lineStart, curLine, inTemplate, errors) { + const throwOnInvalid = !inTemplate; + pos++; + const res = ch => ({ + pos, + ch, + lineStart, + curLine + }); + const ch = input.charCodeAt(pos++); + switch (ch) { + case 110: + return res("\n"); + case 114: + return res("\r"); + case 120: + { + let code; + ({ + code, + pos + } = readHexChar(input, pos, lineStart, curLine, 2, false, throwOnInvalid, errors)); + return res(code === null ? null : String.fromCharCode(code)); + } + case 117: + { + let code; + ({ + code, + pos + } = readCodePoint(input, pos, lineStart, curLine, throwOnInvalid, errors)); + return res(code === null ? null : String.fromCodePoint(code)); + } + case 116: + return res("\t"); + case 98: + return res("\b"); + case 118: + return res("\u000b"); + case 102: + return res("\f"); + case 13: + if (input.charCodeAt(pos) === 10) { + ++pos; + } + case 10: + lineStart = pos; + ++curLine; + case 8232: + case 8233: + return res(""); + case 56: + case 57: + if (inTemplate) { + return res(null); + } else { + errors.strictNumericEscape(pos - 1, lineStart, curLine); + } + default: + if (ch >= 48 && ch <= 55) { + const startPos = pos - 1; + const match = input.slice(startPos, pos + 2).match(/^[0-7]+/); + let octalStr = match[0]; + let octal = parseInt(octalStr, 8); + if (octal > 255) { + octalStr = octalStr.slice(0, -1); + octal = parseInt(octalStr, 8); + } + pos += octalStr.length - 1; + const next = input.charCodeAt(pos); + if (octalStr !== "0" || next === 56 || next === 57) { + if (inTemplate) { + return res(null); + } else { + errors.strictNumericEscape(startPos, lineStart, curLine); + } + } + return res(String.fromCharCode(octal)); + } + return res(String.fromCharCode(ch)); + } +} +function readHexChar(input, pos, lineStart, curLine, len, forceLen, throwOnInvalid, errors) { + const initialPos = pos; + let n; + ({ + n, + pos + } = readInt(input, pos, lineStart, curLine, 16, len, forceLen, false, errors, !throwOnInvalid)); + if (n === null) { + if (throwOnInvalid) { + errors.invalidEscapeSequence(initialPos, lineStart, curLine); + } else { + pos = initialPos - 1; + } + } + return { + code: n, + pos + }; +} +function readInt(input, pos, lineStart, curLine, radix, len, forceLen, allowNumSeparator, errors, bailOnError) { + const start = pos; + const forbiddenSiblings = radix === 16 ? forbiddenNumericSeparatorSiblings.hex : forbiddenNumericSeparatorSiblings.decBinOct; + const isAllowedSibling = radix === 16 ? isAllowedNumericSeparatorSibling.hex : radix === 10 ? isAllowedNumericSeparatorSibling.dec : radix === 8 ? isAllowedNumericSeparatorSibling.oct : isAllowedNumericSeparatorSibling.bin; + let invalid = false; + let total = 0; + for (let i = 0, e = len == null ? Infinity : len; i < e; ++i) { + const code = input.charCodeAt(pos); + let val; + if (code === 95 && allowNumSeparator !== "bail") { + const prev = input.charCodeAt(pos - 1); + const next = input.charCodeAt(pos + 1); + if (!allowNumSeparator) { + if (bailOnError) return { + n: null, + pos + }; + errors.numericSeparatorInEscapeSequence(pos, lineStart, curLine); + } else if (Number.isNaN(next) || !isAllowedSibling(next) || forbiddenSiblings.has(prev) || forbiddenSiblings.has(next)) { + if (bailOnError) return { + n: null, + pos + }; + errors.unexpectedNumericSeparator(pos, lineStart, curLine); + } + ++pos; + continue; + } + if (code >= 97) { + val = code - 97 + 10; + } else if (code >= 65) { + val = code - 65 + 10; + } else if (_isDigit(code)) { + val = code - 48; + } else { + val = Infinity; + } + if (val >= radix) { + if (val <= 9 && bailOnError) { + return { + n: null, + pos + }; + } else if (val <= 9 && errors.invalidDigit(pos, lineStart, curLine, radix)) { + val = 0; + } else if (forceLen) { + val = 0; + invalid = true; + } else { + break; + } + } + ++pos; + total = total * radix + val; + } + if (pos === start || len != null && pos - start !== len || invalid) { + return { + n: null, + pos + }; + } + return { + n: total, + pos + }; +} +function readCodePoint(input, pos, lineStart, curLine, throwOnInvalid, errors) { + const ch = input.charCodeAt(pos); + let code; + if (ch === 123) { + ++pos; + ({ + code, + pos + } = readHexChar(input, pos, lineStart, curLine, input.indexOf("}", pos) - pos, true, throwOnInvalid, errors)); + ++pos; + if (code !== null && code > 0x10ffff) { + if (throwOnInvalid) { + errors.invalidCodePoint(pos, lineStart, curLine); + } else { + return { + code: null, + pos + }; + } + } + } else { + ({ + code, + pos + } = readHexChar(input, pos, lineStart, curLine, 4, false, throwOnInvalid, errors)); + } + return { + code, + pos + }; +} +const _excluded = ["at"], + _excluded2 = ["at"]; +function buildPosition(pos, lineStart, curLine) { + return new Position$1(curLine, pos - lineStart, pos); +} +const VALID_REGEX_FLAGS = new Set([103, 109, 115, 105, 121, 117, 100, 118]); +class Token { + constructor(state) { + this.type = state.type; + this.value = state.value; + this.start = state.start; + this.end = state.end; + this.loc = new SourceLocation(state.startLoc, state.endLoc); + } +} +let Tokenizer$1 = class Tokenizer extends CommentsParser { + constructor(options, input) { + super(); + this.isLookahead = void 0; + this.tokens = []; + this.errorHandlers_readInt = { + invalidDigit: (pos, lineStart, curLine, radix) => { + if (!this.options.errorRecovery) return false; + this.raise(Errors.InvalidDigit, { + at: buildPosition(pos, lineStart, curLine), + radix + }); + return true; + }, + numericSeparatorInEscapeSequence: this.errorBuilder(Errors.NumericSeparatorInEscapeSequence), + unexpectedNumericSeparator: this.errorBuilder(Errors.UnexpectedNumericSeparator) + }; + this.errorHandlers_readCodePoint = Object.assign({}, this.errorHandlers_readInt, { + invalidEscapeSequence: this.errorBuilder(Errors.InvalidEscapeSequence), + invalidCodePoint: this.errorBuilder(Errors.InvalidCodePoint) + }); + this.errorHandlers_readStringContents_string = Object.assign({}, this.errorHandlers_readCodePoint, { + strictNumericEscape: (pos, lineStart, curLine) => { + this.recordStrictModeErrors(Errors.StrictNumericEscape, { + at: buildPosition(pos, lineStart, curLine) + }); + }, + unterminated: (pos, lineStart, curLine) => { + throw this.raise(Errors.UnterminatedString, { + at: buildPosition(pos - 1, lineStart, curLine) + }); + } + }); + this.errorHandlers_readStringContents_template = Object.assign({}, this.errorHandlers_readCodePoint, { + strictNumericEscape: this.errorBuilder(Errors.StrictNumericEscape), + unterminated: (pos, lineStart, curLine) => { + throw this.raise(Errors.UnterminatedTemplate, { + at: buildPosition(pos, lineStart, curLine) + }); + } + }); + this.state = new State(); + this.state.init(options); + this.input = input; + this.length = input.length; + this.isLookahead = false; + } + pushToken(token) { + this.tokens.length = this.state.tokensLength; + this.tokens.push(token); + ++this.state.tokensLength; + } + next() { + this.checkKeywordEscapes(); + if (this.options.tokens) { + this.pushToken(new Token(this.state)); + } + this.state.lastTokStart = this.state.start; + this.state.lastTokEndLoc = this.state.endLoc; + this.state.lastTokStartLoc = this.state.startLoc; + this.nextToken(); + } + eat(type) { + if (this.match(type)) { + this.next(); + return true; + } else { + return false; + } + } + match(type) { + return this.state.type === type; + } + createLookaheadState(state) { + return { + pos: state.pos, + value: null, + type: state.type, + start: state.start, + end: state.end, + context: [this.curContext()], + inType: state.inType, + startLoc: state.startLoc, + lastTokEndLoc: state.lastTokEndLoc, + curLine: state.curLine, + lineStart: state.lineStart, + curPosition: state.curPosition + }; + } + lookahead() { + const old = this.state; + this.state = this.createLookaheadState(old); + this.isLookahead = true; + this.nextToken(); + this.isLookahead = false; + const curr = this.state; + this.state = old; + return curr; + } + nextTokenStart() { + return this.nextTokenStartSince(this.state.pos); + } + nextTokenStartSince(pos) { + skipWhiteSpace.lastIndex = pos; + return skipWhiteSpace.test(this.input) ? skipWhiteSpace.lastIndex : pos; + } + lookaheadCharCode() { + return this.input.charCodeAt(this.nextTokenStart()); + } + nextTokenInLineStart() { + return this.nextTokenInLineStartSince(this.state.pos); + } + nextTokenInLineStartSince(pos) { + skipWhiteSpaceInLine.lastIndex = pos; + return skipWhiteSpaceInLine.test(this.input) ? skipWhiteSpaceInLine.lastIndex : pos; + } + lookaheadInLineCharCode() { + return this.input.charCodeAt(this.nextTokenInLineStart()); + } + codePointAtPos(pos) { + let cp = this.input.charCodeAt(pos); + if ((cp & 0xfc00) === 0xd800 && ++pos < this.input.length) { + const trail = this.input.charCodeAt(pos); + if ((trail & 0xfc00) === 0xdc00) { + cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff); + } + } + return cp; + } + setStrict(strict) { + this.state.strict = strict; + if (strict) { + this.state.strictErrors.forEach(([toParseError, at]) => this.raise(toParseError, { + at + })); + this.state.strictErrors.clear(); + } + } + curContext() { + return this.state.context[this.state.context.length - 1]; + } + nextToken() { + this.skipSpace(); + this.state.start = this.state.pos; + if (!this.isLookahead) this.state.startLoc = this.state.curPosition(); + if (this.state.pos >= this.length) { + this.finishToken(139); + return; + } + this.getTokenFromCode(this.codePointAtPos(this.state.pos)); + } + skipBlockComment(commentEnd) { + let startLoc; + if (!this.isLookahead) startLoc = this.state.curPosition(); + const start = this.state.pos; + const end = this.input.indexOf(commentEnd, start + 2); + if (end === -1) { + throw this.raise(Errors.UnterminatedComment, { + at: this.state.curPosition() + }); + } + this.state.pos = end + commentEnd.length; + lineBreakG.lastIndex = start + 2; + while (lineBreakG.test(this.input) && lineBreakG.lastIndex <= end) { + ++this.state.curLine; + this.state.lineStart = lineBreakG.lastIndex; + } + if (this.isLookahead) return; + const comment = { + type: "CommentBlock", + value: this.input.slice(start + 2, end), + start, + end: end + commentEnd.length, + loc: new SourceLocation(startLoc, this.state.curPosition()) + }; + if (this.options.tokens) this.pushToken(comment); + return comment; + } + skipLineComment(startSkip) { + const start = this.state.pos; + let startLoc; + if (!this.isLookahead) startLoc = this.state.curPosition(); + let ch = this.input.charCodeAt(this.state.pos += startSkip); + if (this.state.pos < this.length) { + while (!isNewLine(ch) && ++this.state.pos < this.length) { + ch = this.input.charCodeAt(this.state.pos); + } + } + if (this.isLookahead) return; + const end = this.state.pos; + const value = this.input.slice(start + startSkip, end); + const comment = { + type: "CommentLine", + value, + start, + end, + loc: new SourceLocation(startLoc, this.state.curPosition()) + }; + if (this.options.tokens) this.pushToken(comment); + return comment; + } + skipSpace() { + const spaceStart = this.state.pos; + const comments = []; + loop: while (this.state.pos < this.length) { + const ch = this.input.charCodeAt(this.state.pos); + switch (ch) { + case 32: + case 160: + case 9: + ++this.state.pos; + break; + case 13: + if (this.input.charCodeAt(this.state.pos + 1) === 10) { + ++this.state.pos; + } + case 10: + case 8232: + case 8233: + ++this.state.pos; + ++this.state.curLine; + this.state.lineStart = this.state.pos; + break; + case 47: + switch (this.input.charCodeAt(this.state.pos + 1)) { + case 42: + { + const comment = this.skipBlockComment("*/"); + if (comment !== undefined) { + this.addComment(comment); + if (this.options.attachComment) comments.push(comment); + } + break; + } + case 47: + { + const comment = this.skipLineComment(2); + if (comment !== undefined) { + this.addComment(comment); + if (this.options.attachComment) comments.push(comment); + } + break; + } + default: + break loop; + } + break; + default: + if (isWhitespace$4(ch)) { + ++this.state.pos; + } else if (ch === 45 && !this.inModule && this.options.annexB) { + const pos = this.state.pos; + if (this.input.charCodeAt(pos + 1) === 45 && this.input.charCodeAt(pos + 2) === 62 && (spaceStart === 0 || this.state.lineStart > spaceStart)) { + const comment = this.skipLineComment(3); + if (comment !== undefined) { + this.addComment(comment); + if (this.options.attachComment) comments.push(comment); + } + } else { + break loop; + } + } else if (ch === 60 && !this.inModule && this.options.annexB) { + const pos = this.state.pos; + if (this.input.charCodeAt(pos + 1) === 33 && this.input.charCodeAt(pos + 2) === 45 && this.input.charCodeAt(pos + 3) === 45) { + const comment = this.skipLineComment(4); + if (comment !== undefined) { + this.addComment(comment); + if (this.options.attachComment) comments.push(comment); + } + } else { + break loop; + } + } else { + break loop; + } + } + } + if (comments.length > 0) { + const end = this.state.pos; + const commentWhitespace = { + start: spaceStart, + end, + comments, + leadingNode: null, + trailingNode: null, + containingNode: null + }; + this.state.commentStack.push(commentWhitespace); + } + } + finishToken(type, val) { + this.state.end = this.state.pos; + this.state.endLoc = this.state.curPosition(); + const prevType = this.state.type; + this.state.type = type; + this.state.value = val; + if (!this.isLookahead) { + this.updateContext(prevType); + } + } + replaceToken(type) { + this.state.type = type; + this.updateContext(); + } + readToken_numberSign() { + if (this.state.pos === 0 && this.readToken_interpreter()) { + return; + } + const nextPos = this.state.pos + 1; + const next = this.codePointAtPos(nextPos); + if (next >= 48 && next <= 57) { + throw this.raise(Errors.UnexpectedDigitAfterHash, { + at: this.state.curPosition() + }); + } + if (next === 123 || next === 91 && this.hasPlugin("recordAndTuple")) { + this.expectPlugin("recordAndTuple"); + if (this.getPluginOption("recordAndTuple", "syntaxType") === "bar") { + throw this.raise(next === 123 ? Errors.RecordExpressionHashIncorrectStartSyntaxType : Errors.TupleExpressionHashIncorrectStartSyntaxType, { + at: this.state.curPosition() + }); + } + this.state.pos += 2; + if (next === 123) { + this.finishToken(7); + } else { + this.finishToken(1); + } + } else if (isIdentifierStart(next)) { + ++this.state.pos; + this.finishToken(138, this.readWord1(next)); + } else if (next === 92) { + ++this.state.pos; + this.finishToken(138, this.readWord1()); + } else { + this.finishOp(27, 1); + } + } + readToken_dot() { + const next = this.input.charCodeAt(this.state.pos + 1); + if (next >= 48 && next <= 57) { + this.readNumber(true); + return; + } + if (next === 46 && this.input.charCodeAt(this.state.pos + 2) === 46) { + this.state.pos += 3; + this.finishToken(21); + } else { + ++this.state.pos; + this.finishToken(16); + } + } + readToken_slash() { + const next = this.input.charCodeAt(this.state.pos + 1); + if (next === 61) { + this.finishOp(31, 2); + } else { + this.finishOp(56, 1); + } + } + readToken_interpreter() { + if (this.state.pos !== 0 || this.length < 2) return false; + let ch = this.input.charCodeAt(this.state.pos + 1); + if (ch !== 33) return false; + const start = this.state.pos; + this.state.pos += 1; + while (!isNewLine(ch) && ++this.state.pos < this.length) { + ch = this.input.charCodeAt(this.state.pos); + } + const value = this.input.slice(start + 2, this.state.pos); + this.finishToken(28, value); + return true; + } + readToken_mult_modulo(code) { + let type = code === 42 ? 55 : 54; + let width = 1; + let next = this.input.charCodeAt(this.state.pos + 1); + if (code === 42 && next === 42) { + width++; + next = this.input.charCodeAt(this.state.pos + 2); + type = 57; + } + if (next === 61 && !this.state.inType) { + width++; + type = code === 37 ? 33 : 30; + } + this.finishOp(type, width); + } + readToken_pipe_amp(code) { + const next = this.input.charCodeAt(this.state.pos + 1); + if (next === code) { + if (this.input.charCodeAt(this.state.pos + 2) === 61) { + this.finishOp(30, 3); + } else { + this.finishOp(code === 124 ? 41 : 42, 2); + } + return; + } + if (code === 124) { + if (next === 62) { + this.finishOp(39, 2); + return; + } + if (this.hasPlugin("recordAndTuple") && next === 125) { + if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") { + throw this.raise(Errors.RecordExpressionBarIncorrectEndSyntaxType, { + at: this.state.curPosition() + }); + } + this.state.pos += 2; + this.finishToken(9); + return; + } + if (this.hasPlugin("recordAndTuple") && next === 93) { + if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") { + throw this.raise(Errors.TupleExpressionBarIncorrectEndSyntaxType, { + at: this.state.curPosition() + }); + } + this.state.pos += 2; + this.finishToken(4); + return; + } + } + if (next === 61) { + this.finishOp(30, 2); + return; + } + this.finishOp(code === 124 ? 43 : 45, 1); + } + readToken_caret() { + const next = this.input.charCodeAt(this.state.pos + 1); + if (next === 61 && !this.state.inType) { + this.finishOp(32, 2); + } else if (next === 94 && this.hasPlugin(["pipelineOperator", { + proposal: "hack", + topicToken: "^^" + }])) { + this.finishOp(37, 2); + const lookaheadCh = this.input.codePointAt(this.state.pos); + if (lookaheadCh === 94) { + this.unexpected(); + } + } else { + this.finishOp(44, 1); + } + } + readToken_atSign() { + const next = this.input.charCodeAt(this.state.pos + 1); + if (next === 64 && this.hasPlugin(["pipelineOperator", { + proposal: "hack", + topicToken: "@@" + }])) { + this.finishOp(38, 2); + } else { + this.finishOp(26, 1); + } + } + readToken_plus_min(code) { + const next = this.input.charCodeAt(this.state.pos + 1); + if (next === code) { + this.finishOp(34, 2); + return; + } + if (next === 61) { + this.finishOp(30, 2); + } else { + this.finishOp(53, 1); + } + } + readToken_lt() { + const { + pos + } = this.state; + const next = this.input.charCodeAt(pos + 1); + if (next === 60) { + if (this.input.charCodeAt(pos + 2) === 61) { + this.finishOp(30, 3); + return; + } + this.finishOp(51, 2); + return; + } + if (next === 61) { + this.finishOp(49, 2); + return; + } + this.finishOp(47, 1); + } + readToken_gt() { + const { + pos + } = this.state; + const next = this.input.charCodeAt(pos + 1); + if (next === 62) { + const size = this.input.charCodeAt(pos + 2) === 62 ? 3 : 2; + if (this.input.charCodeAt(pos + size) === 61) { + this.finishOp(30, size + 1); + return; + } + this.finishOp(52, size); + return; + } + if (next === 61) { + this.finishOp(49, 2); + return; + } + this.finishOp(48, 1); + } + readToken_eq_excl(code) { + const next = this.input.charCodeAt(this.state.pos + 1); + if (next === 61) { + this.finishOp(46, this.input.charCodeAt(this.state.pos + 2) === 61 ? 3 : 2); + return; + } + if (code === 61 && next === 62) { + this.state.pos += 2; + this.finishToken(19); + return; + } + this.finishOp(code === 61 ? 29 : 35, 1); + } + readToken_question() { + const next = this.input.charCodeAt(this.state.pos + 1); + const next2 = this.input.charCodeAt(this.state.pos + 2); + if (next === 63) { + if (next2 === 61) { + this.finishOp(30, 3); + } else { + this.finishOp(40, 2); + } + } else if (next === 46 && !(next2 >= 48 && next2 <= 57)) { + this.state.pos += 2; + this.finishToken(18); + } else { + ++this.state.pos; + this.finishToken(17); + } + } + getTokenFromCode(code) { + switch (code) { + case 46: + this.readToken_dot(); + return; + case 40: + ++this.state.pos; + this.finishToken(10); + return; + case 41: + ++this.state.pos; + this.finishToken(11); + return; + case 59: + ++this.state.pos; + this.finishToken(13); + return; + case 44: + ++this.state.pos; + this.finishToken(12); + return; + case 91: + if (this.hasPlugin("recordAndTuple") && this.input.charCodeAt(this.state.pos + 1) === 124) { + if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") { + throw this.raise(Errors.TupleExpressionBarIncorrectStartSyntaxType, { + at: this.state.curPosition() + }); + } + this.state.pos += 2; + this.finishToken(2); + } else { + ++this.state.pos; + this.finishToken(0); + } + return; + case 93: + ++this.state.pos; + this.finishToken(3); + return; + case 123: + if (this.hasPlugin("recordAndTuple") && this.input.charCodeAt(this.state.pos + 1) === 124) { + if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") { + throw this.raise(Errors.RecordExpressionBarIncorrectStartSyntaxType, { + at: this.state.curPosition() + }); + } + this.state.pos += 2; + this.finishToken(6); + } else { + ++this.state.pos; + this.finishToken(5); + } + return; + case 125: + ++this.state.pos; + this.finishToken(8); + return; + case 58: + if (this.hasPlugin("functionBind") && this.input.charCodeAt(this.state.pos + 1) === 58) { + this.finishOp(15, 2); + } else { + ++this.state.pos; + this.finishToken(14); + } + return; + case 63: + this.readToken_question(); + return; + case 96: + this.readTemplateToken(); + return; + case 48: + { + const next = this.input.charCodeAt(this.state.pos + 1); + if (next === 120 || next === 88) { + this.readRadixNumber(16); + return; + } + if (next === 111 || next === 79) { + this.readRadixNumber(8); + return; + } + if (next === 98 || next === 66) { + this.readRadixNumber(2); + return; + } + } + case 49: + case 50: + case 51: + case 52: + case 53: + case 54: + case 55: + case 56: + case 57: + this.readNumber(false); + return; + case 34: + case 39: + this.readString(code); + return; + case 47: + this.readToken_slash(); + return; + case 37: + case 42: + this.readToken_mult_modulo(code); + return; + case 124: + case 38: + this.readToken_pipe_amp(code); + return; + case 94: + this.readToken_caret(); + return; + case 43: + case 45: + this.readToken_plus_min(code); + return; + case 60: + this.readToken_lt(); + return; + case 62: + this.readToken_gt(); + return; + case 61: + case 33: + this.readToken_eq_excl(code); + return; + case 126: + this.finishOp(36, 1); + return; + case 64: + this.readToken_atSign(); + return; + case 35: + this.readToken_numberSign(); + return; + case 92: + this.readWord(); + return; + default: + if (isIdentifierStart(code)) { + this.readWord(code); + return; + } + } + throw this.raise(Errors.InvalidOrUnexpectedToken, { + at: this.state.curPosition(), + unexpected: String.fromCodePoint(code) + }); + } + finishOp(type, size) { + const str = this.input.slice(this.state.pos, this.state.pos + size); + this.state.pos += size; + this.finishToken(type, str); + } + readRegexp() { + const startLoc = this.state.startLoc; + const start = this.state.start + 1; + let escaped, inClass; + let { + pos + } = this.state; + for (;; ++pos) { + if (pos >= this.length) { + throw this.raise(Errors.UnterminatedRegExp, { + at: createPositionWithColumnOffset(startLoc, 1) + }); + } + const ch = this.input.charCodeAt(pos); + if (isNewLine(ch)) { + throw this.raise(Errors.UnterminatedRegExp, { + at: createPositionWithColumnOffset(startLoc, 1) + }); + } + if (escaped) { + escaped = false; + } else { + if (ch === 91) { + inClass = true; + } else if (ch === 93 && inClass) { + inClass = false; + } else if (ch === 47 && !inClass) { + break; + } + escaped = ch === 92; + } + } + const content = this.input.slice(start, pos); + ++pos; + let mods = ""; + const nextPos = () => createPositionWithColumnOffset(startLoc, pos + 2 - start); + while (pos < this.length) { + const cp = this.codePointAtPos(pos); + const char = String.fromCharCode(cp); + if (VALID_REGEX_FLAGS.has(cp)) { + if (cp === 118) { + if (mods.includes("u")) { + this.raise(Errors.IncompatibleRegExpUVFlags, { + at: nextPos() + }); + } + } else if (cp === 117) { + if (mods.includes("v")) { + this.raise(Errors.IncompatibleRegExpUVFlags, { + at: nextPos() + }); + } + } + if (mods.includes(char)) { + this.raise(Errors.DuplicateRegExpFlags, { + at: nextPos() + }); + } + } else if (isIdentifierChar(cp) || cp === 92) { + this.raise(Errors.MalformedRegExpFlags, { + at: nextPos() + }); + } else { + break; + } + ++pos; + mods += char; + } + this.state.pos = pos; + this.finishToken(137, { + pattern: content, + flags: mods + }); + } + readInt(radix, len, forceLen = false, allowNumSeparator = true) { + const { + n, + pos + } = readInt(this.input, this.state.pos, this.state.lineStart, this.state.curLine, radix, len, forceLen, allowNumSeparator, this.errorHandlers_readInt, false); + this.state.pos = pos; + return n; + } + readRadixNumber(radix) { + const startLoc = this.state.curPosition(); + let isBigInt = false; + this.state.pos += 2; + const val = this.readInt(radix); + if (val == null) { + this.raise(Errors.InvalidDigit, { + at: createPositionWithColumnOffset(startLoc, 2), + radix + }); + } + const next = this.input.charCodeAt(this.state.pos); + if (next === 110) { + ++this.state.pos; + isBigInt = true; + } else if (next === 109) { + throw this.raise(Errors.InvalidDecimal, { + at: startLoc + }); + } + if (isIdentifierStart(this.codePointAtPos(this.state.pos))) { + throw this.raise(Errors.NumberIdentifier, { + at: this.state.curPosition() + }); + } + if (isBigInt) { + const str = this.input.slice(startLoc.index, this.state.pos).replace(/[_n]/g, ""); + this.finishToken(135, str); + return; + } + this.finishToken(134, val); + } + readNumber(startsWithDot) { + const start = this.state.pos; + const startLoc = this.state.curPosition(); + let isFloat = false; + let isBigInt = false; + let isDecimal = false; + let hasExponent = false; + let isOctal = false; + if (!startsWithDot && this.readInt(10) === null) { + this.raise(Errors.InvalidNumber, { + at: this.state.curPosition() + }); + } + const hasLeadingZero = this.state.pos - start >= 2 && this.input.charCodeAt(start) === 48; + if (hasLeadingZero) { + const integer = this.input.slice(start, this.state.pos); + this.recordStrictModeErrors(Errors.StrictOctalLiteral, { + at: startLoc + }); + if (!this.state.strict) { + const underscorePos = integer.indexOf("_"); + if (underscorePos > 0) { + this.raise(Errors.ZeroDigitNumericSeparator, { + at: createPositionWithColumnOffset(startLoc, underscorePos) + }); + } + } + isOctal = hasLeadingZero && !/[89]/.test(integer); + } + let next = this.input.charCodeAt(this.state.pos); + if (next === 46 && !isOctal) { + ++this.state.pos; + this.readInt(10); + isFloat = true; + next = this.input.charCodeAt(this.state.pos); + } + if ((next === 69 || next === 101) && !isOctal) { + next = this.input.charCodeAt(++this.state.pos); + if (next === 43 || next === 45) { + ++this.state.pos; + } + if (this.readInt(10) === null) { + this.raise(Errors.InvalidOrMissingExponent, { + at: startLoc + }); + } + isFloat = true; + hasExponent = true; + next = this.input.charCodeAt(this.state.pos); + } + if (next === 110) { + if (isFloat || hasLeadingZero) { + this.raise(Errors.InvalidBigIntLiteral, { + at: startLoc + }); + } + ++this.state.pos; + isBigInt = true; + } + if (next === 109) { + this.expectPlugin("decimal", this.state.curPosition()); + if (hasExponent || hasLeadingZero) { + this.raise(Errors.InvalidDecimal, { + at: startLoc + }); + } + ++this.state.pos; + isDecimal = true; + } + if (isIdentifierStart(this.codePointAtPos(this.state.pos))) { + throw this.raise(Errors.NumberIdentifier, { + at: this.state.curPosition() + }); + } + const str = this.input.slice(start, this.state.pos).replace(/[_mn]/g, ""); + if (isBigInt) { + this.finishToken(135, str); + return; + } + if (isDecimal) { + this.finishToken(136, str); + return; + } + const val = isOctal ? parseInt(str, 8) : parseFloat(str); + this.finishToken(134, val); + } + readCodePoint(throwOnInvalid) { + const { + code, + pos + } = readCodePoint(this.input, this.state.pos, this.state.lineStart, this.state.curLine, throwOnInvalid, this.errorHandlers_readCodePoint); + this.state.pos = pos; + return code; + } + readString(quote) { + const { + str, + pos, + curLine, + lineStart + } = readStringContents(quote === 34 ? "double" : "single", this.input, this.state.pos + 1, this.state.lineStart, this.state.curLine, this.errorHandlers_readStringContents_string); + this.state.pos = pos + 1; + this.state.lineStart = lineStart; + this.state.curLine = curLine; + this.finishToken(133, str); + } + readTemplateContinuation() { + if (!this.match(8)) { + this.unexpected(null, 8); + } + this.state.pos--; + this.readTemplateToken(); + } + readTemplateToken() { + const opening = this.input[this.state.pos]; + const { + str, + firstInvalidLoc, + pos, + curLine, + lineStart + } = readStringContents("template", this.input, this.state.pos + 1, this.state.lineStart, this.state.curLine, this.errorHandlers_readStringContents_template); + this.state.pos = pos + 1; + this.state.lineStart = lineStart; + this.state.curLine = curLine; + if (firstInvalidLoc) { + this.state.firstInvalidTemplateEscapePos = new Position$1(firstInvalidLoc.curLine, firstInvalidLoc.pos - firstInvalidLoc.lineStart, firstInvalidLoc.pos); + } + if (this.input.codePointAt(pos) === 96) { + this.finishToken(24, firstInvalidLoc ? null : opening + str + "`"); + } else { + this.state.pos++; + this.finishToken(25, firstInvalidLoc ? null : opening + str + "${"); + } + } + recordStrictModeErrors(toParseError, { + at + }) { + const index = at.index; + if (this.state.strict && !this.state.strictErrors.has(index)) { + this.raise(toParseError, { + at + }); + } else { + this.state.strictErrors.set(index, [toParseError, at]); + } + } + readWord1(firstCode) { + this.state.containsEsc = false; + let word = ""; + const start = this.state.pos; + let chunkStart = this.state.pos; + if (firstCode !== undefined) { + this.state.pos += firstCode <= 0xffff ? 1 : 2; + } + while (this.state.pos < this.length) { + const ch = this.codePointAtPos(this.state.pos); + if (isIdentifierChar(ch)) { + this.state.pos += ch <= 0xffff ? 1 : 2; + } else if (ch === 92) { + this.state.containsEsc = true; + word += this.input.slice(chunkStart, this.state.pos); + const escStart = this.state.curPosition(); + const identifierCheck = this.state.pos === start ? isIdentifierStart : isIdentifierChar; + if (this.input.charCodeAt(++this.state.pos) !== 117) { + this.raise(Errors.MissingUnicodeEscape, { + at: this.state.curPosition() + }); + chunkStart = this.state.pos - 1; + continue; + } + ++this.state.pos; + const esc = this.readCodePoint(true); + if (esc !== null) { + if (!identifierCheck(esc)) { + this.raise(Errors.EscapedCharNotAnIdentifier, { + at: escStart + }); + } + word += String.fromCodePoint(esc); + } + chunkStart = this.state.pos; + } else { + break; + } + } + return word + this.input.slice(chunkStart, this.state.pos); + } + readWord(firstCode) { + const word = this.readWord1(firstCode); + const type = keywords$1.get(word); + if (type !== undefined) { + this.finishToken(type, tokenLabelName(type)); + } else { + this.finishToken(132, word); + } + } + checkKeywordEscapes() { + const { + type + } = this.state; + if (tokenIsKeyword(type) && this.state.containsEsc) { + this.raise(Errors.InvalidEscapedReservedWord, { + at: this.state.startLoc, + reservedWord: tokenLabelName(type) + }); + } + } + raise(toParseError, raiseProperties) { + const { + at + } = raiseProperties, + details = _objectWithoutPropertiesLoose(raiseProperties, _excluded); + const loc = at instanceof Position$1 ? at : at.loc.start; + const error = toParseError({ + loc, + details + }); + if (!this.options.errorRecovery) throw error; + if (!this.isLookahead) this.state.errors.push(error); + return error; + } + raiseOverwrite(toParseError, raiseProperties) { + const { + at + } = raiseProperties, + details = _objectWithoutPropertiesLoose(raiseProperties, _excluded2); + const loc = at instanceof Position$1 ? at : at.loc.start; + const pos = loc.index; + const errors = this.state.errors; + for (let i = errors.length - 1; i >= 0; i--) { + const error = errors[i]; + if (error.loc.index === pos) { + return errors[i] = toParseError({ + loc, + details + }); + } + if (error.loc.index < pos) break; + } + return this.raise(toParseError, raiseProperties); + } + updateContext(prevType) {} + unexpected(loc, type) { + throw this.raise(Errors.UnexpectedToken, { + expected: type ? tokenLabelName(type) : null, + at: loc != null ? loc : this.state.startLoc + }); + } + expectPlugin(pluginName, loc) { + if (this.hasPlugin(pluginName)) { + return true; + } + throw this.raise(Errors.MissingPlugin, { + at: loc != null ? loc : this.state.startLoc, + missingPlugin: [pluginName] + }); + } + expectOnePlugin(pluginNames) { + if (!pluginNames.some(name => this.hasPlugin(name))) { + throw this.raise(Errors.MissingOneOfPlugins, { + at: this.state.startLoc, + missingPlugin: pluginNames + }); + } + } + errorBuilder(error) { + return (pos, lineStart, curLine) => { + this.raise(error, { + at: buildPosition(pos, lineStart, curLine) + }); + }; + } +}; +class ClassScope { + constructor() { + this.privateNames = new Set(); + this.loneAccessors = new Map(); + this.undefinedPrivateNames = new Map(); + } +} +class ClassScopeHandler { + constructor(parser) { + this.parser = void 0; + this.stack = []; + this.undefinedPrivateNames = new Map(); + this.parser = parser; + } + current() { + return this.stack[this.stack.length - 1]; + } + enter() { + this.stack.push(new ClassScope()); + } + exit() { + const oldClassScope = this.stack.pop(); + const current = this.current(); + for (const [name, loc] of Array.from(oldClassScope.undefinedPrivateNames)) { + if (current) { + if (!current.undefinedPrivateNames.has(name)) { + current.undefinedPrivateNames.set(name, loc); + } + } else { + this.parser.raise(Errors.InvalidPrivateFieldResolution, { + at: loc, + identifierName: name + }); + } + } + } + declarePrivateName(name, elementType, loc) { + const { + privateNames, + loneAccessors, + undefinedPrivateNames + } = this.current(); + let redefined = privateNames.has(name); + if (elementType & 3) { + const accessor = redefined && loneAccessors.get(name); + if (accessor) { + const oldStatic = accessor & 4; + const newStatic = elementType & 4; + const oldKind = accessor & 3; + const newKind = elementType & 3; + redefined = oldKind === newKind || oldStatic !== newStatic; + if (!redefined) loneAccessors.delete(name); + } else if (!redefined) { + loneAccessors.set(name, elementType); + } + } + if (redefined) { + this.parser.raise(Errors.PrivateNameRedeclaration, { + at: loc, + identifierName: name + }); + } + privateNames.add(name); + undefinedPrivateNames.delete(name); + } + usePrivateName(name, loc) { + let classScope; + for (classScope of this.stack) { + if (classScope.privateNames.has(name)) return; + } + if (classScope) { + classScope.undefinedPrivateNames.set(name, loc); + } else { + this.parser.raise(Errors.InvalidPrivateFieldResolution, { + at: loc, + identifierName: name + }); + } + } +} +class ExpressionScope { + constructor(type = 0) { + this.type = type; + } + canBeArrowParameterDeclaration() { + return this.type === 2 || this.type === 1; + } + isCertainlyParameterDeclaration() { + return this.type === 3; + } +} +class ArrowHeadParsingScope extends ExpressionScope { + constructor(type) { + super(type); + this.declarationErrors = new Map(); + } + recordDeclarationError(ParsingErrorClass, { + at + }) { + const index = at.index; + this.declarationErrors.set(index, [ParsingErrorClass, at]); + } + clearDeclarationError(index) { + this.declarationErrors.delete(index); + } + iterateErrors(iterator) { + this.declarationErrors.forEach(iterator); + } +} +class ExpressionScopeHandler { + constructor(parser) { + this.parser = void 0; + this.stack = [new ExpressionScope()]; + this.parser = parser; + } + enter(scope) { + this.stack.push(scope); + } + exit() { + this.stack.pop(); + } + recordParameterInitializerError(toParseError, { + at: node + }) { + const origin = { + at: node.loc.start + }; + const { + stack + } = this; + let i = stack.length - 1; + let scope = stack[i]; + while (!scope.isCertainlyParameterDeclaration()) { + if (scope.canBeArrowParameterDeclaration()) { + scope.recordDeclarationError(toParseError, origin); + } else { + return; + } + scope = stack[--i]; + } + this.parser.raise(toParseError, origin); + } + recordArrowParameterBindingError(error, { + at: node + }) { + const { + stack + } = this; + const scope = stack[stack.length - 1]; + const origin = { + at: node.loc.start + }; + if (scope.isCertainlyParameterDeclaration()) { + this.parser.raise(error, origin); + } else if (scope.canBeArrowParameterDeclaration()) { + scope.recordDeclarationError(error, origin); + } else { + return; + } + } + recordAsyncArrowParametersError({ + at + }) { + const { + stack + } = this; + let i = stack.length - 1; + let scope = stack[i]; + while (scope.canBeArrowParameterDeclaration()) { + if (scope.type === 2) { + scope.recordDeclarationError(Errors.AwaitBindingIdentifier, { + at + }); + } + scope = stack[--i]; + } + } + validateAsPattern() { + const { + stack + } = this; + const currentScope = stack[stack.length - 1]; + if (!currentScope.canBeArrowParameterDeclaration()) return; + currentScope.iterateErrors(([toParseError, loc]) => { + this.parser.raise(toParseError, { + at: loc + }); + let i = stack.length - 2; + let scope = stack[i]; + while (scope.canBeArrowParameterDeclaration()) { + scope.clearDeclarationError(loc.index); + scope = stack[--i]; + } + }); + } +} +function newParameterDeclarationScope() { + return new ExpressionScope(3); +} +function newArrowHeadScope() { + return new ArrowHeadParsingScope(1); +} +function newAsyncArrowScope() { + return new ArrowHeadParsingScope(2); +} +function newExpressionScope() { + return new ExpressionScope(); +} +class ProductionParameterHandler { + constructor() { + this.stacks = []; + } + enter(flags) { + this.stacks.push(flags); + } + exit() { + this.stacks.pop(); + } + currentFlags() { + return this.stacks[this.stacks.length - 1]; + } + get hasAwait() { + return (this.currentFlags() & 2) > 0; + } + get hasYield() { + return (this.currentFlags() & 1) > 0; + } + get hasReturn() { + return (this.currentFlags() & 4) > 0; + } + get hasIn() { + return (this.currentFlags() & 8) > 0; + } +} +function functionFlags(isAsync, isGenerator) { + return (isAsync ? 2 : 0) | (isGenerator ? 1 : 0); +} +class UtilParser extends Tokenizer$1 { + addExtra(node, key, value, enumerable = true) { + if (!node) return; + const extra = node.extra = node.extra || {}; + if (enumerable) { + extra[key] = value; + } else { + Object.defineProperty(extra, key, { + enumerable, + value + }); + } + } + isContextual(token) { + return this.state.type === token && !this.state.containsEsc; + } + isUnparsedContextual(nameStart, name) { + const nameEnd = nameStart + name.length; + if (this.input.slice(nameStart, nameEnd) === name) { + const nextCh = this.input.charCodeAt(nameEnd); + return !(isIdentifierChar(nextCh) || (nextCh & 0xfc00) === 0xd800); + } + return false; + } + isLookaheadContextual(name) { + const next = this.nextTokenStart(); + return this.isUnparsedContextual(next, name); + } + eatContextual(token) { + if (this.isContextual(token)) { + this.next(); + return true; + } + return false; + } + expectContextual(token, toParseError) { + if (!this.eatContextual(token)) { + if (toParseError != null) { + throw this.raise(toParseError, { + at: this.state.startLoc + }); + } + this.unexpected(null, token); + } + } + canInsertSemicolon() { + return this.match(139) || this.match(8) || this.hasPrecedingLineBreak(); + } + hasPrecedingLineBreak() { + return lineBreak.test(this.input.slice(this.state.lastTokEndLoc.index, this.state.start)); + } + hasFollowingLineBreak() { + skipWhiteSpaceToLineBreak.lastIndex = this.state.end; + return skipWhiteSpaceToLineBreak.test(this.input); + } + isLineTerminator() { + return this.eat(13) || this.canInsertSemicolon(); + } + semicolon(allowAsi = true) { + if (allowAsi ? this.isLineTerminator() : this.eat(13)) return; + this.raise(Errors.MissingSemicolon, { + at: this.state.lastTokEndLoc + }); + } + expect(type, loc) { + this.eat(type) || this.unexpected(loc, type); + } + tryParse(fn, oldState = this.state.clone()) { + const abortSignal = { + node: null + }; + try { + const node = fn((node = null) => { + abortSignal.node = node; + throw abortSignal; + }); + if (this.state.errors.length > oldState.errors.length) { + const failState = this.state; + this.state = oldState; + this.state.tokensLength = failState.tokensLength; + return { + node, + error: failState.errors[oldState.errors.length], + thrown: false, + aborted: false, + failState + }; + } + return { + node, + error: null, + thrown: false, + aborted: false, + failState: null + }; + } catch (error) { + const failState = this.state; + this.state = oldState; + if (error instanceof SyntaxError) { + return { + node: null, + error, + thrown: true, + aborted: false, + failState + }; + } + if (error === abortSignal) { + return { + node: abortSignal.node, + error: null, + thrown: false, + aborted: true, + failState + }; + } + throw error; + } + } + checkExpressionErrors(refExpressionErrors, andThrow) { + if (!refExpressionErrors) return false; + const { + shorthandAssignLoc, + doubleProtoLoc, + privateKeyLoc, + optionalParametersLoc + } = refExpressionErrors; + const hasErrors = !!shorthandAssignLoc || !!doubleProtoLoc || !!optionalParametersLoc || !!privateKeyLoc; + if (!andThrow) { + return hasErrors; + } + if (shorthandAssignLoc != null) { + this.raise(Errors.InvalidCoverInitializedName, { + at: shorthandAssignLoc + }); + } + if (doubleProtoLoc != null) { + this.raise(Errors.DuplicateProto, { + at: doubleProtoLoc + }); + } + if (privateKeyLoc != null) { + this.raise(Errors.UnexpectedPrivateField, { + at: privateKeyLoc + }); + } + if (optionalParametersLoc != null) { + this.unexpected(optionalParametersLoc); + } + } + isLiteralPropertyName() { + return tokenIsLiteralPropertyName(this.state.type); + } + isPrivateName(node) { + return node.type === "PrivateName"; + } + getPrivateNameSV(node) { + return node.id.name; + } + hasPropertyAsPrivateName(node) { + return (node.type === "MemberExpression" || node.type === "OptionalMemberExpression") && this.isPrivateName(node.property); + } + isObjectProperty(node) { + return node.type === "ObjectProperty"; + } + isObjectMethod(node) { + return node.type === "ObjectMethod"; + } + initializeScopes(inModule = this.options.sourceType === "module") { + const oldLabels = this.state.labels; + this.state.labels = []; + const oldExportedIdentifiers = this.exportedIdentifiers; + this.exportedIdentifiers = new Set(); + const oldInModule = this.inModule; + this.inModule = inModule; + const oldScope = this.scope; + const ScopeHandler = this.getScopeHandler(); + this.scope = new ScopeHandler(this, inModule); + const oldProdParam = this.prodParam; + this.prodParam = new ProductionParameterHandler(); + const oldClassScope = this.classScope; + this.classScope = new ClassScopeHandler(this); + const oldExpressionScope = this.expressionScope; + this.expressionScope = new ExpressionScopeHandler(this); + return () => { + this.state.labels = oldLabels; + this.exportedIdentifiers = oldExportedIdentifiers; + this.inModule = oldInModule; + this.scope = oldScope; + this.prodParam = oldProdParam; + this.classScope = oldClassScope; + this.expressionScope = oldExpressionScope; + }; + } + enterInitialScopes() { + let paramFlags = 0; + if (this.inModule) { + paramFlags |= 2; + } + this.scope.enter(1); + this.prodParam.enter(paramFlags); + } + checkDestructuringPrivate(refExpressionErrors) { + const { + privateKeyLoc + } = refExpressionErrors; + if (privateKeyLoc !== null) { + this.expectPlugin("destructuringPrivate", privateKeyLoc); + } + } +} +class ExpressionErrors { + constructor() { + this.shorthandAssignLoc = null; + this.doubleProtoLoc = null; + this.privateKeyLoc = null; + this.optionalParametersLoc = null; + } +} +let Node$3 = class Node { + constructor(parser, pos, loc) { + this.type = ""; + this.start = pos; + this.end = 0; + this.loc = new SourceLocation(loc); + if (parser != null && parser.options.ranges) this.range = [pos, 0]; + if (parser != null && parser.filename) this.loc.filename = parser.filename; + } +}; +const NodePrototype = Node$3.prototype; +{ + NodePrototype.__clone = function () { + const newNode = new Node$3(undefined, this.start, this.loc.start); + const keys = Object.keys(this); + for (let i = 0, length = keys.length; i < length; i++) { + const key = keys[i]; + if (key !== "leadingComments" && key !== "trailingComments" && key !== "innerComments") { + newNode[key] = this[key]; + } + } + return newNode; + }; +} +function clonePlaceholder(node) { + return cloneIdentifier(node); +} +function cloneIdentifier(node) { + const { + type, + start, + end, + loc, + range, + extra, + name + } = node; + const cloned = Object.create(NodePrototype); + cloned.type = type; + cloned.start = start; + cloned.end = end; + cloned.loc = loc; + cloned.range = range; + cloned.extra = extra; + cloned.name = name; + if (type === "Placeholder") { + cloned.expectedNode = node.expectedNode; + } + return cloned; +} +function cloneStringLiteral(node) { + const { + type, + start, + end, + loc, + range, + extra + } = node; + if (type === "Placeholder") { + return clonePlaceholder(node); + } + const cloned = Object.create(NodePrototype); + cloned.type = type; + cloned.start = start; + cloned.end = end; + cloned.loc = loc; + cloned.range = range; + if (node.raw !== undefined) { + cloned.raw = node.raw; + } else { + cloned.extra = extra; + } + cloned.value = node.value; + return cloned; +} +class NodeUtils extends UtilParser { + startNode() { + return new Node$3(this, this.state.start, this.state.startLoc); + } + startNodeAt(loc) { + return new Node$3(this, loc.index, loc); + } + startNodeAtNode(type) { + return this.startNodeAt(type.loc.start); + } + finishNode(node, type) { + return this.finishNodeAt(node, type, this.state.lastTokEndLoc); + } + finishNodeAt(node, type, endLoc) { + node.type = type; + node.end = endLoc.index; + node.loc.end = endLoc; + if (this.options.ranges) node.range[1] = endLoc.index; + if (this.options.attachComment) this.processComment(node); + return node; + } + resetStartLocation(node, startLoc) { + node.start = startLoc.index; + node.loc.start = startLoc; + if (this.options.ranges) node.range[0] = startLoc.index; + } + resetEndLocation(node, endLoc = this.state.lastTokEndLoc) { + node.end = endLoc.index; + node.loc.end = endLoc; + if (this.options.ranges) node.range[1] = endLoc.index; + } + resetStartLocationFromNode(node, locationNode) { + this.resetStartLocation(node, locationNode.loc.start); + } +} +const reservedTypes = new Set(["_", "any", "bool", "boolean", "empty", "extends", "false", "interface", "mixed", "null", "number", "static", "string", "true", "typeof", "void"]); +const FlowErrors = ParseErrorEnum`flow`({ + AmbiguousConditionalArrow: "Ambiguous expression: wrap the arrow functions in parentheses to disambiguate.", + AmbiguousDeclareModuleKind: "Found both `declare module.exports` and `declare export` in the same module. Modules can only have 1 since they are either an ES module or they are a CommonJS module.", + AssignReservedType: ({ + reservedType + }) => `Cannot overwrite reserved type ${reservedType}.`, + DeclareClassElement: "The `declare` modifier can only appear on class fields.", + DeclareClassFieldInitializer: "Initializers are not allowed in fields with the `declare` modifier.", + DuplicateDeclareModuleExports: "Duplicate `declare module.exports` statement.", + EnumBooleanMemberNotInitialized: ({ + memberName, + enumName + }) => `Boolean enum members need to be initialized. Use either \`${memberName} = true,\` or \`${memberName} = false,\` in enum \`${enumName}\`.`, + EnumDuplicateMemberName: ({ + memberName, + enumName + }) => `Enum member names need to be unique, but the name \`${memberName}\` has already been used before in enum \`${enumName}\`.`, + EnumInconsistentMemberValues: ({ + enumName + }) => `Enum \`${enumName}\` has inconsistent member initializers. Either use no initializers, or consistently use literals (either booleans, numbers, or strings) for all member initializers.`, + EnumInvalidExplicitType: ({ + invalidEnumType, + enumName + }) => `Enum type \`${invalidEnumType}\` is not valid. Use one of \`boolean\`, \`number\`, \`string\`, or \`symbol\` in enum \`${enumName}\`.`, + EnumInvalidExplicitTypeUnknownSupplied: ({ + enumName + }) => `Supplied enum type is not valid. Use one of \`boolean\`, \`number\`, \`string\`, or \`symbol\` in enum \`${enumName}\`.`, + EnumInvalidMemberInitializerPrimaryType: ({ + enumName, + memberName, + explicitType + }) => `Enum \`${enumName}\` has type \`${explicitType}\`, so the initializer of \`${memberName}\` needs to be a ${explicitType} literal.`, + EnumInvalidMemberInitializerSymbolType: ({ + enumName, + memberName + }) => `Symbol enum members cannot be initialized. Use \`${memberName},\` in enum \`${enumName}\`.`, + EnumInvalidMemberInitializerUnknownType: ({ + enumName, + memberName + }) => `The enum member initializer for \`${memberName}\` needs to be a literal (either a boolean, number, or string) in enum \`${enumName}\`.`, + EnumInvalidMemberName: ({ + enumName, + memberName, + suggestion + }) => `Enum member names cannot start with lowercase 'a' through 'z'. Instead of using \`${memberName}\`, consider using \`${suggestion}\`, in enum \`${enumName}\`.`, + EnumNumberMemberNotInitialized: ({ + enumName, + memberName + }) => `Number enum members need to be initialized, e.g. \`${memberName} = 1\` in enum \`${enumName}\`.`, + EnumStringMemberInconsistentlyInitialized: ({ + enumName + }) => `String enum members need to consistently either all use initializers, or use no initializers, in enum \`${enumName}\`.`, + GetterMayNotHaveThisParam: "A getter cannot have a `this` parameter.", + ImportReflectionHasImportType: "An `import module` declaration can not use `type` or `typeof` keyword.", + ImportTypeShorthandOnlyInPureImport: "The `type` and `typeof` keywords on named imports can only be used on regular `import` statements. It cannot be used with `import type` or `import typeof` statements.", + InexactInsideExact: "Explicit inexact syntax cannot appear inside an explicit exact object type.", + InexactInsideNonObject: "Explicit inexact syntax cannot appear in class or interface definitions.", + InexactVariance: "Explicit inexact syntax cannot have variance.", + InvalidNonTypeImportInDeclareModule: "Imports within a `declare module` body must always be `import type` or `import typeof`.", + MissingTypeParamDefault: "Type parameter declaration needs a default, since a preceding type parameter declaration has a default.", + NestedDeclareModule: "`declare module` cannot be used inside another `declare module`.", + NestedFlowComment: "Cannot have a flow comment inside another flow comment.", + PatternIsOptional: Object.assign({ + message: "A binding pattern parameter cannot be optional in an implementation signature." + }, { + reasonCode: "OptionalBindingPattern" + }), + SetterMayNotHaveThisParam: "A setter cannot have a `this` parameter.", + SpreadVariance: "Spread properties cannot have variance.", + ThisParamAnnotationRequired: "A type annotation is required for the `this` parameter.", + ThisParamBannedInConstructor: "Constructors cannot have a `this` parameter; constructors don't bind `this` like other functions.", + ThisParamMayNotBeOptional: "The `this` parameter cannot be optional.", + ThisParamMustBeFirst: "The `this` parameter must be the first function parameter.", + ThisParamNoDefault: "The `this` parameter may not have a default value.", + TypeBeforeInitializer: "Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`.", + TypeCastInPattern: "The type cast expression is expected to be wrapped with parenthesis.", + UnexpectedExplicitInexactInObject: "Explicit inexact syntax must appear at the end of an inexact object.", + UnexpectedReservedType: ({ + reservedType + }) => `Unexpected reserved type ${reservedType}.`, + UnexpectedReservedUnderscore: "`_` is only allowed as a type argument to call or new.", + UnexpectedSpaceBetweenModuloChecks: "Spaces between `%` and `checks` are not allowed here.", + UnexpectedSpreadType: "Spread operator cannot appear in class or interface definitions.", + UnexpectedSubtractionOperand: 'Unexpected token, expected "number" or "bigint".', + UnexpectedTokenAfterTypeParameter: "Expected an arrow function after this type parameter declaration.", + UnexpectedTypeParameterBeforeAsyncArrowFunction: "Type parameters must come after the async keyword, e.g. instead of `<T> async () => {}`, use `async <T>() => {}`.", + UnsupportedDeclareExportKind: ({ + unsupportedExportKind, + suggestion + }) => `\`declare export ${unsupportedExportKind}\` is not supported. Use \`${suggestion}\` instead.`, + UnsupportedStatementInDeclareModule: "Only declares and type imports are allowed inside declare module.", + UnterminatedFlowComment: "Unterminated flow-comment." +}); +function isEsModuleType(bodyElement) { + return bodyElement.type === "DeclareExportAllDeclaration" || bodyElement.type === "DeclareExportDeclaration" && (!bodyElement.declaration || bodyElement.declaration.type !== "TypeAlias" && bodyElement.declaration.type !== "InterfaceDeclaration"); +} +function hasTypeImportKind(node) { + return node.importKind === "type" || node.importKind === "typeof"; +} +const exportSuggestions = { + const: "declare export var", + let: "declare export var", + type: "export type", + interface: "export interface" +}; +function partition(list, test) { + const list1 = []; + const list2 = []; + for (let i = 0; i < list.length; i++) { + (test(list[i], i, list) ? list1 : list2).push(list[i]); + } + return [list1, list2]; +} +const FLOW_PRAGMA_REGEX = /\*?\s*@((?:no)?flow)\b/; +var flow = superClass => class FlowParserMixin extends superClass { + constructor(...args) { + super(...args); + this.flowPragma = undefined; + } + getScopeHandler() { + return FlowScopeHandler; + } + shouldParseTypes() { + return this.getPluginOption("flow", "all") || this.flowPragma === "flow"; + } + shouldParseEnums() { + return !!this.getPluginOption("flow", "enums"); + } + finishToken(type, val) { + if (type !== 133 && type !== 13 && type !== 28) { + if (this.flowPragma === undefined) { + this.flowPragma = null; + } + } + super.finishToken(type, val); + } + addComment(comment) { + if (this.flowPragma === undefined) { + const matches = FLOW_PRAGMA_REGEX.exec(comment.value); + if (!matches) ;else if (matches[1] === "flow") { + this.flowPragma = "flow"; + } else if (matches[1] === "noflow") { + this.flowPragma = "noflow"; + } else { + throw new Error("Unexpected flow pragma"); + } + } + super.addComment(comment); + } + flowParseTypeInitialiser(tok) { + const oldInType = this.state.inType; + this.state.inType = true; + this.expect(tok || 14); + const type = this.flowParseType(); + this.state.inType = oldInType; + return type; + } + flowParsePredicate() { + const node = this.startNode(); + const moduloLoc = this.state.startLoc; + this.next(); + this.expectContextual(110); + if (this.state.lastTokStart > moduloLoc.index + 1) { + this.raise(FlowErrors.UnexpectedSpaceBetweenModuloChecks, { + at: moduloLoc + }); + } + if (this.eat(10)) { + node.value = super.parseExpression(); + this.expect(11); + return this.finishNode(node, "DeclaredPredicate"); + } else { + return this.finishNode(node, "InferredPredicate"); + } + } + flowParseTypeAndPredicateInitialiser() { + const oldInType = this.state.inType; + this.state.inType = true; + this.expect(14); + let type = null; + let predicate = null; + if (this.match(54)) { + this.state.inType = oldInType; + predicate = this.flowParsePredicate(); + } else { + type = this.flowParseType(); + this.state.inType = oldInType; + if (this.match(54)) { + predicate = this.flowParsePredicate(); + } + } + return [type, predicate]; + } + flowParseDeclareClass(node) { + this.next(); + this.flowParseInterfaceish(node, true); + return this.finishNode(node, "DeclareClass"); + } + flowParseDeclareFunction(node) { + this.next(); + const id = node.id = this.parseIdentifier(); + const typeNode = this.startNode(); + const typeContainer = this.startNode(); + if (this.match(47)) { + typeNode.typeParameters = this.flowParseTypeParameterDeclaration(); + } else { + typeNode.typeParameters = null; + } + this.expect(10); + const tmp = this.flowParseFunctionTypeParams(); + typeNode.params = tmp.params; + typeNode.rest = tmp.rest; + typeNode.this = tmp._this; + this.expect(11); + [typeNode.returnType, node.predicate] = this.flowParseTypeAndPredicateInitialiser(); + typeContainer.typeAnnotation = this.finishNode(typeNode, "FunctionTypeAnnotation"); + id.typeAnnotation = this.finishNode(typeContainer, "TypeAnnotation"); + this.resetEndLocation(id); + this.semicolon(); + this.scope.declareName(node.id.name, 2048, node.id.loc.start); + return this.finishNode(node, "DeclareFunction"); + } + flowParseDeclare(node, insideModule) { + if (this.match(80)) { + return this.flowParseDeclareClass(node); + } else if (this.match(68)) { + return this.flowParseDeclareFunction(node); + } else if (this.match(74)) { + return this.flowParseDeclareVariable(node); + } else if (this.eatContextual(127)) { + if (this.match(16)) { + return this.flowParseDeclareModuleExports(node); + } else { + if (insideModule) { + this.raise(FlowErrors.NestedDeclareModule, { + at: this.state.lastTokStartLoc + }); + } + return this.flowParseDeclareModule(node); + } + } else if (this.isContextual(130)) { + return this.flowParseDeclareTypeAlias(node); + } else if (this.isContextual(131)) { + return this.flowParseDeclareOpaqueType(node); + } else if (this.isContextual(129)) { + return this.flowParseDeclareInterface(node); + } else if (this.match(82)) { + return this.flowParseDeclareExportDeclaration(node, insideModule); + } else { + this.unexpected(); + } + } + flowParseDeclareVariable(node) { + this.next(); + node.id = this.flowParseTypeAnnotatableIdentifier(true); + this.scope.declareName(node.id.name, 5, node.id.loc.start); + this.semicolon(); + return this.finishNode(node, "DeclareVariable"); + } + flowParseDeclareModule(node) { + this.scope.enter(0); + if (this.match(133)) { + node.id = super.parseExprAtom(); + } else { + node.id = this.parseIdentifier(); + } + const bodyNode = node.body = this.startNode(); + const body = bodyNode.body = []; + this.expect(5); + while (!this.match(8)) { + let bodyNode = this.startNode(); + if (this.match(83)) { + this.next(); + if (!this.isContextual(130) && !this.match(87)) { + this.raise(FlowErrors.InvalidNonTypeImportInDeclareModule, { + at: this.state.lastTokStartLoc + }); + } + super.parseImport(bodyNode); + } else { + this.expectContextual(125, FlowErrors.UnsupportedStatementInDeclareModule); + bodyNode = this.flowParseDeclare(bodyNode, true); + } + body.push(bodyNode); + } + this.scope.exit(); + this.expect(8); + this.finishNode(bodyNode, "BlockStatement"); + let kind = null; + let hasModuleExport = false; + body.forEach(bodyElement => { + if (isEsModuleType(bodyElement)) { + if (kind === "CommonJS") { + this.raise(FlowErrors.AmbiguousDeclareModuleKind, { + at: bodyElement + }); + } + kind = "ES"; + } else if (bodyElement.type === "DeclareModuleExports") { + if (hasModuleExport) { + this.raise(FlowErrors.DuplicateDeclareModuleExports, { + at: bodyElement + }); + } + if (kind === "ES") { + this.raise(FlowErrors.AmbiguousDeclareModuleKind, { + at: bodyElement + }); + } + kind = "CommonJS"; + hasModuleExport = true; + } + }); + node.kind = kind || "CommonJS"; + return this.finishNode(node, "DeclareModule"); + } + flowParseDeclareExportDeclaration(node, insideModule) { + this.expect(82); + if (this.eat(65)) { + if (this.match(68) || this.match(80)) { + node.declaration = this.flowParseDeclare(this.startNode()); + } else { + node.declaration = this.flowParseType(); + this.semicolon(); + } + node.default = true; + return this.finishNode(node, "DeclareExportDeclaration"); + } else { + if (this.match(75) || this.isLet() || (this.isContextual(130) || this.isContextual(129)) && !insideModule) { + const label = this.state.value; + throw this.raise(FlowErrors.UnsupportedDeclareExportKind, { + at: this.state.startLoc, + unsupportedExportKind: label, + suggestion: exportSuggestions[label] + }); + } + if (this.match(74) || this.match(68) || this.match(80) || this.isContextual(131)) { + node.declaration = this.flowParseDeclare(this.startNode()); + node.default = false; + return this.finishNode(node, "DeclareExportDeclaration"); + } else if (this.match(55) || this.match(5) || this.isContextual(129) || this.isContextual(130) || this.isContextual(131)) { + node = this.parseExport(node, null); + if (node.type === "ExportNamedDeclaration") { + node.type = "ExportDeclaration"; + node.default = false; + delete node.exportKind; + } + node.type = "Declare" + node.type; + return node; + } + } + this.unexpected(); + } + flowParseDeclareModuleExports(node) { + this.next(); + this.expectContextual(111); + node.typeAnnotation = this.flowParseTypeAnnotation(); + this.semicolon(); + return this.finishNode(node, "DeclareModuleExports"); + } + flowParseDeclareTypeAlias(node) { + this.next(); + const finished = this.flowParseTypeAlias(node); + finished.type = "DeclareTypeAlias"; + return finished; + } + flowParseDeclareOpaqueType(node) { + this.next(); + const finished = this.flowParseOpaqueType(node, true); + finished.type = "DeclareOpaqueType"; + return finished; + } + flowParseDeclareInterface(node) { + this.next(); + this.flowParseInterfaceish(node, false); + return this.finishNode(node, "DeclareInterface"); + } + flowParseInterfaceish(node, isClass) { + node.id = this.flowParseRestrictedIdentifier(!isClass, true); + this.scope.declareName(node.id.name, isClass ? 17 : 8201, node.id.loc.start); + if (this.match(47)) { + node.typeParameters = this.flowParseTypeParameterDeclaration(); + } else { + node.typeParameters = null; + } + node.extends = []; + if (this.eat(81)) { + do { + node.extends.push(this.flowParseInterfaceExtends()); + } while (!isClass && this.eat(12)); + } + if (isClass) { + node.implements = []; + node.mixins = []; + if (this.eatContextual(117)) { + do { + node.mixins.push(this.flowParseInterfaceExtends()); + } while (this.eat(12)); + } + if (this.eatContextual(113)) { + do { + node.implements.push(this.flowParseInterfaceExtends()); + } while (this.eat(12)); + } + } + node.body = this.flowParseObjectType({ + allowStatic: isClass, + allowExact: false, + allowSpread: false, + allowProto: isClass, + allowInexact: false + }); + } + flowParseInterfaceExtends() { + const node = this.startNode(); + node.id = this.flowParseQualifiedTypeIdentifier(); + if (this.match(47)) { + node.typeParameters = this.flowParseTypeParameterInstantiation(); + } else { + node.typeParameters = null; + } + return this.finishNode(node, "InterfaceExtends"); + } + flowParseInterface(node) { + this.flowParseInterfaceish(node, false); + return this.finishNode(node, "InterfaceDeclaration"); + } + checkNotUnderscore(word) { + if (word === "_") { + this.raise(FlowErrors.UnexpectedReservedUnderscore, { + at: this.state.startLoc + }); + } + } + checkReservedType(word, startLoc, declaration) { + if (!reservedTypes.has(word)) return; + this.raise(declaration ? FlowErrors.AssignReservedType : FlowErrors.UnexpectedReservedType, { + at: startLoc, + reservedType: word + }); + } + flowParseRestrictedIdentifier(liberal, declaration) { + this.checkReservedType(this.state.value, this.state.startLoc, declaration); + return this.parseIdentifier(liberal); + } + flowParseTypeAlias(node) { + node.id = this.flowParseRestrictedIdentifier(false, true); + this.scope.declareName(node.id.name, 8201, node.id.loc.start); + if (this.match(47)) { + node.typeParameters = this.flowParseTypeParameterDeclaration(); + } else { + node.typeParameters = null; + } + node.right = this.flowParseTypeInitialiser(29); + this.semicolon(); + return this.finishNode(node, "TypeAlias"); + } + flowParseOpaqueType(node, declare) { + this.expectContextual(130); + node.id = this.flowParseRestrictedIdentifier(true, true); + this.scope.declareName(node.id.name, 8201, node.id.loc.start); + if (this.match(47)) { + node.typeParameters = this.flowParseTypeParameterDeclaration(); + } else { + node.typeParameters = null; + } + node.supertype = null; + if (this.match(14)) { + node.supertype = this.flowParseTypeInitialiser(14); + } + node.impltype = null; + if (!declare) { + node.impltype = this.flowParseTypeInitialiser(29); + } + this.semicolon(); + return this.finishNode(node, "OpaqueType"); + } + flowParseTypeParameter(requireDefault = false) { + const nodeStartLoc = this.state.startLoc; + const node = this.startNode(); + const variance = this.flowParseVariance(); + const ident = this.flowParseTypeAnnotatableIdentifier(); + node.name = ident.name; + node.variance = variance; + node.bound = ident.typeAnnotation; + if (this.match(29)) { + this.eat(29); + node.default = this.flowParseType(); + } else { + if (requireDefault) { + this.raise(FlowErrors.MissingTypeParamDefault, { + at: nodeStartLoc + }); + } + } + return this.finishNode(node, "TypeParameter"); + } + flowParseTypeParameterDeclaration() { + const oldInType = this.state.inType; + const node = this.startNode(); + node.params = []; + this.state.inType = true; + if (this.match(47) || this.match(142)) { + this.next(); + } else { + this.unexpected(); + } + let defaultRequired = false; + do { + const typeParameter = this.flowParseTypeParameter(defaultRequired); + node.params.push(typeParameter); + if (typeParameter.default) { + defaultRequired = true; + } + if (!this.match(48)) { + this.expect(12); + } + } while (!this.match(48)); + this.expect(48); + this.state.inType = oldInType; + return this.finishNode(node, "TypeParameterDeclaration"); + } + flowParseTypeParameterInstantiation() { + const node = this.startNode(); + const oldInType = this.state.inType; + node.params = []; + this.state.inType = true; + this.expect(47); + const oldNoAnonFunctionType = this.state.noAnonFunctionType; + this.state.noAnonFunctionType = false; + while (!this.match(48)) { + node.params.push(this.flowParseType()); + if (!this.match(48)) { + this.expect(12); + } + } + this.state.noAnonFunctionType = oldNoAnonFunctionType; + this.expect(48); + this.state.inType = oldInType; + return this.finishNode(node, "TypeParameterInstantiation"); + } + flowParseTypeParameterInstantiationCallOrNew() { + const node = this.startNode(); + const oldInType = this.state.inType; + node.params = []; + this.state.inType = true; + this.expect(47); + while (!this.match(48)) { + node.params.push(this.flowParseTypeOrImplicitInstantiation()); + if (!this.match(48)) { + this.expect(12); + } + } + this.expect(48); + this.state.inType = oldInType; + return this.finishNode(node, "TypeParameterInstantiation"); + } + flowParseInterfaceType() { + const node = this.startNode(); + this.expectContextual(129); + node.extends = []; + if (this.eat(81)) { + do { + node.extends.push(this.flowParseInterfaceExtends()); + } while (this.eat(12)); + } + node.body = this.flowParseObjectType({ + allowStatic: false, + allowExact: false, + allowSpread: false, + allowProto: false, + allowInexact: false + }); + return this.finishNode(node, "InterfaceTypeAnnotation"); + } + flowParseObjectPropertyKey() { + return this.match(134) || this.match(133) ? super.parseExprAtom() : this.parseIdentifier(true); + } + flowParseObjectTypeIndexer(node, isStatic, variance) { + node.static = isStatic; + if (this.lookahead().type === 14) { + node.id = this.flowParseObjectPropertyKey(); + node.key = this.flowParseTypeInitialiser(); + } else { + node.id = null; + node.key = this.flowParseType(); + } + this.expect(3); + node.value = this.flowParseTypeInitialiser(); + node.variance = variance; + return this.finishNode(node, "ObjectTypeIndexer"); + } + flowParseObjectTypeInternalSlot(node, isStatic) { + node.static = isStatic; + node.id = this.flowParseObjectPropertyKey(); + this.expect(3); + this.expect(3); + if (this.match(47) || this.match(10)) { + node.method = true; + node.optional = false; + node.value = this.flowParseObjectTypeMethodish(this.startNodeAt(node.loc.start)); + } else { + node.method = false; + if (this.eat(17)) { + node.optional = true; + } + node.value = this.flowParseTypeInitialiser(); + } + return this.finishNode(node, "ObjectTypeInternalSlot"); + } + flowParseObjectTypeMethodish(node) { + node.params = []; + node.rest = null; + node.typeParameters = null; + node.this = null; + if (this.match(47)) { + node.typeParameters = this.flowParseTypeParameterDeclaration(); + } + this.expect(10); + if (this.match(78)) { + node.this = this.flowParseFunctionTypeParam(true); + node.this.name = null; + if (!this.match(11)) { + this.expect(12); + } + } + while (!this.match(11) && !this.match(21)) { + node.params.push(this.flowParseFunctionTypeParam(false)); + if (!this.match(11)) { + this.expect(12); + } + } + if (this.eat(21)) { + node.rest = this.flowParseFunctionTypeParam(false); + } + this.expect(11); + node.returnType = this.flowParseTypeInitialiser(); + return this.finishNode(node, "FunctionTypeAnnotation"); + } + flowParseObjectTypeCallProperty(node, isStatic) { + const valueNode = this.startNode(); + node.static = isStatic; + node.value = this.flowParseObjectTypeMethodish(valueNode); + return this.finishNode(node, "ObjectTypeCallProperty"); + } + flowParseObjectType({ + allowStatic, + allowExact, + allowSpread, + allowProto, + allowInexact + }) { + const oldInType = this.state.inType; + this.state.inType = true; + const nodeStart = this.startNode(); + nodeStart.callProperties = []; + nodeStart.properties = []; + nodeStart.indexers = []; + nodeStart.internalSlots = []; + let endDelim; + let exact; + let inexact = false; + if (allowExact && this.match(6)) { + this.expect(6); + endDelim = 9; + exact = true; + } else { + this.expect(5); + endDelim = 8; + exact = false; + } + nodeStart.exact = exact; + while (!this.match(endDelim)) { + let isStatic = false; + let protoStartLoc = null; + let inexactStartLoc = null; + const node = this.startNode(); + if (allowProto && this.isContextual(118)) { + const lookahead = this.lookahead(); + if (lookahead.type !== 14 && lookahead.type !== 17) { + this.next(); + protoStartLoc = this.state.startLoc; + allowStatic = false; + } + } + if (allowStatic && this.isContextual(106)) { + const lookahead = this.lookahead(); + if (lookahead.type !== 14 && lookahead.type !== 17) { + this.next(); + isStatic = true; + } + } + const variance = this.flowParseVariance(); + if (this.eat(0)) { + if (protoStartLoc != null) { + this.unexpected(protoStartLoc); + } + if (this.eat(0)) { + if (variance) { + this.unexpected(variance.loc.start); + } + nodeStart.internalSlots.push(this.flowParseObjectTypeInternalSlot(node, isStatic)); + } else { + nodeStart.indexers.push(this.flowParseObjectTypeIndexer(node, isStatic, variance)); + } + } else if (this.match(10) || this.match(47)) { + if (protoStartLoc != null) { + this.unexpected(protoStartLoc); + } + if (variance) { + this.unexpected(variance.loc.start); + } + nodeStart.callProperties.push(this.flowParseObjectTypeCallProperty(node, isStatic)); + } else { + let kind = "init"; + if (this.isContextual(99) || this.isContextual(104)) { + const lookahead = this.lookahead(); + if (tokenIsLiteralPropertyName(lookahead.type)) { + kind = this.state.value; + this.next(); + } + } + const propOrInexact = this.flowParseObjectTypeProperty(node, isStatic, protoStartLoc, variance, kind, allowSpread, allowInexact != null ? allowInexact : !exact); + if (propOrInexact === null) { + inexact = true; + inexactStartLoc = this.state.lastTokStartLoc; + } else { + nodeStart.properties.push(propOrInexact); + } + } + this.flowObjectTypeSemicolon(); + if (inexactStartLoc && !this.match(8) && !this.match(9)) { + this.raise(FlowErrors.UnexpectedExplicitInexactInObject, { + at: inexactStartLoc + }); + } + } + this.expect(endDelim); + if (allowSpread) { + nodeStart.inexact = inexact; + } + const out = this.finishNode(nodeStart, "ObjectTypeAnnotation"); + this.state.inType = oldInType; + return out; + } + flowParseObjectTypeProperty(node, isStatic, protoStartLoc, variance, kind, allowSpread, allowInexact) { + if (this.eat(21)) { + const isInexactToken = this.match(12) || this.match(13) || this.match(8) || this.match(9); + if (isInexactToken) { + if (!allowSpread) { + this.raise(FlowErrors.InexactInsideNonObject, { + at: this.state.lastTokStartLoc + }); + } else if (!allowInexact) { + this.raise(FlowErrors.InexactInsideExact, { + at: this.state.lastTokStartLoc + }); + } + if (variance) { + this.raise(FlowErrors.InexactVariance, { + at: variance + }); + } + return null; + } + if (!allowSpread) { + this.raise(FlowErrors.UnexpectedSpreadType, { + at: this.state.lastTokStartLoc + }); + } + if (protoStartLoc != null) { + this.unexpected(protoStartLoc); + } + if (variance) { + this.raise(FlowErrors.SpreadVariance, { + at: variance + }); + } + node.argument = this.flowParseType(); + return this.finishNode(node, "ObjectTypeSpreadProperty"); + } else { + node.key = this.flowParseObjectPropertyKey(); + node.static = isStatic; + node.proto = protoStartLoc != null; + node.kind = kind; + let optional = false; + if (this.match(47) || this.match(10)) { + node.method = true; + if (protoStartLoc != null) { + this.unexpected(protoStartLoc); + } + if (variance) { + this.unexpected(variance.loc.start); + } + node.value = this.flowParseObjectTypeMethodish(this.startNodeAt(node.loc.start)); + if (kind === "get" || kind === "set") { + this.flowCheckGetterSetterParams(node); + } + if (!allowSpread && node.key.name === "constructor" && node.value.this) { + this.raise(FlowErrors.ThisParamBannedInConstructor, { + at: node.value.this + }); + } + } else { + if (kind !== "init") this.unexpected(); + node.method = false; + if (this.eat(17)) { + optional = true; + } + node.value = this.flowParseTypeInitialiser(); + node.variance = variance; + } + node.optional = optional; + return this.finishNode(node, "ObjectTypeProperty"); + } + } + flowCheckGetterSetterParams(property) { + const paramCount = property.kind === "get" ? 0 : 1; + const length = property.value.params.length + (property.value.rest ? 1 : 0); + if (property.value.this) { + this.raise(property.kind === "get" ? FlowErrors.GetterMayNotHaveThisParam : FlowErrors.SetterMayNotHaveThisParam, { + at: property.value.this + }); + } + if (length !== paramCount) { + this.raise(property.kind === "get" ? Errors.BadGetterArity : Errors.BadSetterArity, { + at: property + }); + } + if (property.kind === "set" && property.value.rest) { + this.raise(Errors.BadSetterRestParameter, { + at: property + }); + } + } + flowObjectTypeSemicolon() { + if (!this.eat(13) && !this.eat(12) && !this.match(8) && !this.match(9)) { + this.unexpected(); + } + } + flowParseQualifiedTypeIdentifier(startLoc, id) { + var _startLoc; + (_startLoc = startLoc) != null ? _startLoc : startLoc = this.state.startLoc; + let node = id || this.flowParseRestrictedIdentifier(true); + while (this.eat(16)) { + const node2 = this.startNodeAt(startLoc); + node2.qualification = node; + node2.id = this.flowParseRestrictedIdentifier(true); + node = this.finishNode(node2, "QualifiedTypeIdentifier"); + } + return node; + } + flowParseGenericType(startLoc, id) { + const node = this.startNodeAt(startLoc); + node.typeParameters = null; + node.id = this.flowParseQualifiedTypeIdentifier(startLoc, id); + if (this.match(47)) { + node.typeParameters = this.flowParseTypeParameterInstantiation(); + } + return this.finishNode(node, "GenericTypeAnnotation"); + } + flowParseTypeofType() { + const node = this.startNode(); + this.expect(87); + node.argument = this.flowParsePrimaryType(); + return this.finishNode(node, "TypeofTypeAnnotation"); + } + flowParseTupleType() { + const node = this.startNode(); + node.types = []; + this.expect(0); + while (this.state.pos < this.length && !this.match(3)) { + node.types.push(this.flowParseType()); + if (this.match(3)) break; + this.expect(12); + } + this.expect(3); + return this.finishNode(node, "TupleTypeAnnotation"); + } + flowParseFunctionTypeParam(first) { + let name = null; + let optional = false; + let typeAnnotation = null; + const node = this.startNode(); + const lh = this.lookahead(); + const isThis = this.state.type === 78; + if (lh.type === 14 || lh.type === 17) { + if (isThis && !first) { + this.raise(FlowErrors.ThisParamMustBeFirst, { + at: node + }); + } + name = this.parseIdentifier(isThis); + if (this.eat(17)) { + optional = true; + if (isThis) { + this.raise(FlowErrors.ThisParamMayNotBeOptional, { + at: node + }); + } + } + typeAnnotation = this.flowParseTypeInitialiser(); + } else { + typeAnnotation = this.flowParseType(); + } + node.name = name; + node.optional = optional; + node.typeAnnotation = typeAnnotation; + return this.finishNode(node, "FunctionTypeParam"); + } + reinterpretTypeAsFunctionTypeParam(type) { + const node = this.startNodeAt(type.loc.start); + node.name = null; + node.optional = false; + node.typeAnnotation = type; + return this.finishNode(node, "FunctionTypeParam"); + } + flowParseFunctionTypeParams(params = []) { + let rest = null; + let _this = null; + if (this.match(78)) { + _this = this.flowParseFunctionTypeParam(true); + _this.name = null; + if (!this.match(11)) { + this.expect(12); + } + } + while (!this.match(11) && !this.match(21)) { + params.push(this.flowParseFunctionTypeParam(false)); + if (!this.match(11)) { + this.expect(12); + } + } + if (this.eat(21)) { + rest = this.flowParseFunctionTypeParam(false); + } + return { + params, + rest, + _this + }; + } + flowIdentToTypeAnnotation(startLoc, node, id) { + switch (id.name) { + case "any": + return this.finishNode(node, "AnyTypeAnnotation"); + case "bool": + case "boolean": + return this.finishNode(node, "BooleanTypeAnnotation"); + case "mixed": + return this.finishNode(node, "MixedTypeAnnotation"); + case "empty": + return this.finishNode(node, "EmptyTypeAnnotation"); + case "number": + return this.finishNode(node, "NumberTypeAnnotation"); + case "string": + return this.finishNode(node, "StringTypeAnnotation"); + case "symbol": + return this.finishNode(node, "SymbolTypeAnnotation"); + default: + this.checkNotUnderscore(id.name); + return this.flowParseGenericType(startLoc, id); + } + } + flowParsePrimaryType() { + const startLoc = this.state.startLoc; + const node = this.startNode(); + let tmp; + let type; + let isGroupedType = false; + const oldNoAnonFunctionType = this.state.noAnonFunctionType; + switch (this.state.type) { + case 5: + return this.flowParseObjectType({ + allowStatic: false, + allowExact: false, + allowSpread: true, + allowProto: false, + allowInexact: true + }); + case 6: + return this.flowParseObjectType({ + allowStatic: false, + allowExact: true, + allowSpread: true, + allowProto: false, + allowInexact: false + }); + case 0: + this.state.noAnonFunctionType = false; + type = this.flowParseTupleType(); + this.state.noAnonFunctionType = oldNoAnonFunctionType; + return type; + case 47: + node.typeParameters = this.flowParseTypeParameterDeclaration(); + this.expect(10); + tmp = this.flowParseFunctionTypeParams(); + node.params = tmp.params; + node.rest = tmp.rest; + node.this = tmp._this; + this.expect(11); + this.expect(19); + node.returnType = this.flowParseType(); + return this.finishNode(node, "FunctionTypeAnnotation"); + case 10: + this.next(); + if (!this.match(11) && !this.match(21)) { + if (tokenIsIdentifier(this.state.type) || this.match(78)) { + const token = this.lookahead().type; + isGroupedType = token !== 17 && token !== 14; + } else { + isGroupedType = true; + } + } + if (isGroupedType) { + this.state.noAnonFunctionType = false; + type = this.flowParseType(); + this.state.noAnonFunctionType = oldNoAnonFunctionType; + if (this.state.noAnonFunctionType || !(this.match(12) || this.match(11) && this.lookahead().type === 19)) { + this.expect(11); + return type; + } else { + this.eat(12); + } + } + if (type) { + tmp = this.flowParseFunctionTypeParams([this.reinterpretTypeAsFunctionTypeParam(type)]); + } else { + tmp = this.flowParseFunctionTypeParams(); + } + node.params = tmp.params; + node.rest = tmp.rest; + node.this = tmp._this; + this.expect(11); + this.expect(19); + node.returnType = this.flowParseType(); + node.typeParameters = null; + return this.finishNode(node, "FunctionTypeAnnotation"); + case 133: + return this.parseLiteral(this.state.value, "StringLiteralTypeAnnotation"); + case 85: + case 86: + node.value = this.match(85); + this.next(); + return this.finishNode(node, "BooleanLiteralTypeAnnotation"); + case 53: + if (this.state.value === "-") { + this.next(); + if (this.match(134)) { + return this.parseLiteralAtNode(-this.state.value, "NumberLiteralTypeAnnotation", node); + } + if (this.match(135)) { + return this.parseLiteralAtNode(-this.state.value, "BigIntLiteralTypeAnnotation", node); + } + throw this.raise(FlowErrors.UnexpectedSubtractionOperand, { + at: this.state.startLoc + }); + } + this.unexpected(); + return; + case 134: + return this.parseLiteral(this.state.value, "NumberLiteralTypeAnnotation"); + case 135: + return this.parseLiteral(this.state.value, "BigIntLiteralTypeAnnotation"); + case 88: + this.next(); + return this.finishNode(node, "VoidTypeAnnotation"); + case 84: + this.next(); + return this.finishNode(node, "NullLiteralTypeAnnotation"); + case 78: + this.next(); + return this.finishNode(node, "ThisTypeAnnotation"); + case 55: + this.next(); + return this.finishNode(node, "ExistsTypeAnnotation"); + case 87: + return this.flowParseTypeofType(); + default: + if (tokenIsKeyword(this.state.type)) { + const label = tokenLabelName(this.state.type); + this.next(); + return super.createIdentifier(node, label); + } else if (tokenIsIdentifier(this.state.type)) { + if (this.isContextual(129)) { + return this.flowParseInterfaceType(); + } + return this.flowIdentToTypeAnnotation(startLoc, node, this.parseIdentifier()); + } + } + this.unexpected(); + } + flowParsePostfixType() { + const startLoc = this.state.startLoc; + let type = this.flowParsePrimaryType(); + let seenOptionalIndexedAccess = false; + while ((this.match(0) || this.match(18)) && !this.canInsertSemicolon()) { + const node = this.startNodeAt(startLoc); + const optional = this.eat(18); + seenOptionalIndexedAccess = seenOptionalIndexedAccess || optional; + this.expect(0); + if (!optional && this.match(3)) { + node.elementType = type; + this.next(); + type = this.finishNode(node, "ArrayTypeAnnotation"); + } else { + node.objectType = type; + node.indexType = this.flowParseType(); + this.expect(3); + if (seenOptionalIndexedAccess) { + node.optional = optional; + type = this.finishNode(node, "OptionalIndexedAccessType"); + } else { + type = this.finishNode(node, "IndexedAccessType"); + } + } + } + return type; + } + flowParsePrefixType() { + const node = this.startNode(); + if (this.eat(17)) { + node.typeAnnotation = this.flowParsePrefixType(); + return this.finishNode(node, "NullableTypeAnnotation"); + } else { + return this.flowParsePostfixType(); + } + } + flowParseAnonFunctionWithoutParens() { + const param = this.flowParsePrefixType(); + if (!this.state.noAnonFunctionType && this.eat(19)) { + const node = this.startNodeAt(param.loc.start); + node.params = [this.reinterpretTypeAsFunctionTypeParam(param)]; + node.rest = null; + node.this = null; + node.returnType = this.flowParseType(); + node.typeParameters = null; + return this.finishNode(node, "FunctionTypeAnnotation"); + } + return param; + } + flowParseIntersectionType() { + const node = this.startNode(); + this.eat(45); + const type = this.flowParseAnonFunctionWithoutParens(); + node.types = [type]; + while (this.eat(45)) { + node.types.push(this.flowParseAnonFunctionWithoutParens()); + } + return node.types.length === 1 ? type : this.finishNode(node, "IntersectionTypeAnnotation"); + } + flowParseUnionType() { + const node = this.startNode(); + this.eat(43); + const type = this.flowParseIntersectionType(); + node.types = [type]; + while (this.eat(43)) { + node.types.push(this.flowParseIntersectionType()); + } + return node.types.length === 1 ? type : this.finishNode(node, "UnionTypeAnnotation"); + } + flowParseType() { + const oldInType = this.state.inType; + this.state.inType = true; + const type = this.flowParseUnionType(); + this.state.inType = oldInType; + return type; + } + flowParseTypeOrImplicitInstantiation() { + if (this.state.type === 132 && this.state.value === "_") { + const startLoc = this.state.startLoc; + const node = this.parseIdentifier(); + return this.flowParseGenericType(startLoc, node); + } else { + return this.flowParseType(); + } + } + flowParseTypeAnnotation() { + const node = this.startNode(); + node.typeAnnotation = this.flowParseTypeInitialiser(); + return this.finishNode(node, "TypeAnnotation"); + } + flowParseTypeAnnotatableIdentifier(allowPrimitiveOverride) { + const ident = allowPrimitiveOverride ? this.parseIdentifier() : this.flowParseRestrictedIdentifier(); + if (this.match(14)) { + ident.typeAnnotation = this.flowParseTypeAnnotation(); + this.resetEndLocation(ident); + } + return ident; + } + typeCastToParameter(node) { + node.expression.typeAnnotation = node.typeAnnotation; + this.resetEndLocation(node.expression, node.typeAnnotation.loc.end); + return node.expression; + } + flowParseVariance() { + let variance = null; + if (this.match(53)) { + variance = this.startNode(); + if (this.state.value === "+") { + variance.kind = "plus"; + } else { + variance.kind = "minus"; + } + this.next(); + return this.finishNode(variance, "Variance"); + } + return variance; + } + parseFunctionBody(node, allowExpressionBody, isMethod = false) { + if (allowExpressionBody) { + this.forwardNoArrowParamsConversionAt(node, () => super.parseFunctionBody(node, true, isMethod)); + return; + } + super.parseFunctionBody(node, false, isMethod); + } + parseFunctionBodyAndFinish(node, type, isMethod = false) { + if (this.match(14)) { + const typeNode = this.startNode(); + [typeNode.typeAnnotation, node.predicate] = this.flowParseTypeAndPredicateInitialiser(); + node.returnType = typeNode.typeAnnotation ? this.finishNode(typeNode, "TypeAnnotation") : null; + } + return super.parseFunctionBodyAndFinish(node, type, isMethod); + } + parseStatementLike(flags) { + if (this.state.strict && this.isContextual(129)) { + const lookahead = this.lookahead(); + if (tokenIsKeywordOrIdentifier(lookahead.type)) { + const node = this.startNode(); + this.next(); + return this.flowParseInterface(node); + } + } else if (this.shouldParseEnums() && this.isContextual(126)) { + const node = this.startNode(); + this.next(); + return this.flowParseEnumDeclaration(node); + } + const stmt = super.parseStatementLike(flags); + if (this.flowPragma === undefined && !this.isValidDirective(stmt)) { + this.flowPragma = null; + } + return stmt; + } + parseExpressionStatement(node, expr, decorators) { + if (expr.type === "Identifier") { + if (expr.name === "declare") { + if (this.match(80) || tokenIsIdentifier(this.state.type) || this.match(68) || this.match(74) || this.match(82)) { + return this.flowParseDeclare(node); + } + } else if (tokenIsIdentifier(this.state.type)) { + if (expr.name === "interface") { + return this.flowParseInterface(node); + } else if (expr.name === "type") { + return this.flowParseTypeAlias(node); + } else if (expr.name === "opaque") { + return this.flowParseOpaqueType(node, false); + } + } + } + return super.parseExpressionStatement(node, expr, decorators); + } + shouldParseExportDeclaration() { + const { + type + } = this.state; + if (tokenIsFlowInterfaceOrTypeOrOpaque(type) || this.shouldParseEnums() && type === 126) { + return !this.state.containsEsc; + } + return super.shouldParseExportDeclaration(); + } + isExportDefaultSpecifier() { + const { + type + } = this.state; + if (tokenIsFlowInterfaceOrTypeOrOpaque(type) || this.shouldParseEnums() && type === 126) { + return this.state.containsEsc; + } + return super.isExportDefaultSpecifier(); + } + parseExportDefaultExpression() { + if (this.shouldParseEnums() && this.isContextual(126)) { + const node = this.startNode(); + this.next(); + return this.flowParseEnumDeclaration(node); + } + return super.parseExportDefaultExpression(); + } + parseConditional(expr, startLoc, refExpressionErrors) { + if (!this.match(17)) return expr; + if (this.state.maybeInArrowParameters) { + const nextCh = this.lookaheadCharCode(); + if (nextCh === 44 || nextCh === 61 || nextCh === 58 || nextCh === 41) { + this.setOptionalParametersError(refExpressionErrors); + return expr; + } + } + this.expect(17); + const state = this.state.clone(); + const originalNoArrowAt = this.state.noArrowAt; + const node = this.startNodeAt(startLoc); + let { + consequent, + failed + } = this.tryParseConditionalConsequent(); + let [valid, invalid] = this.getArrowLikeExpressions(consequent); + if (failed || invalid.length > 0) { + const noArrowAt = [...originalNoArrowAt]; + if (invalid.length > 0) { + this.state = state; + this.state.noArrowAt = noArrowAt; + for (let i = 0; i < invalid.length; i++) { + noArrowAt.push(invalid[i].start); + } + ({ + consequent, + failed + } = this.tryParseConditionalConsequent()); + [valid, invalid] = this.getArrowLikeExpressions(consequent); + } + if (failed && valid.length > 1) { + this.raise(FlowErrors.AmbiguousConditionalArrow, { + at: state.startLoc + }); + } + if (failed && valid.length === 1) { + this.state = state; + noArrowAt.push(valid[0].start); + this.state.noArrowAt = noArrowAt; + ({ + consequent, + failed + } = this.tryParseConditionalConsequent()); + } + } + this.getArrowLikeExpressions(consequent, true); + this.state.noArrowAt = originalNoArrowAt; + this.expect(14); + node.test = expr; + node.consequent = consequent; + node.alternate = this.forwardNoArrowParamsConversionAt(node, () => this.parseMaybeAssign(undefined, undefined)); + return this.finishNode(node, "ConditionalExpression"); + } + tryParseConditionalConsequent() { + this.state.noArrowParamsConversionAt.push(this.state.start); + const consequent = this.parseMaybeAssignAllowIn(); + const failed = !this.match(14); + this.state.noArrowParamsConversionAt.pop(); + return { + consequent, + failed + }; + } + getArrowLikeExpressions(node, disallowInvalid) { + const stack = [node]; + const arrows = []; + while (stack.length !== 0) { + const node = stack.pop(); + if (node.type === "ArrowFunctionExpression") { + if (node.typeParameters || !node.returnType) { + this.finishArrowValidation(node); + } else { + arrows.push(node); + } + stack.push(node.body); + } else if (node.type === "ConditionalExpression") { + stack.push(node.consequent); + stack.push(node.alternate); + } + } + if (disallowInvalid) { + arrows.forEach(node => this.finishArrowValidation(node)); + return [arrows, []]; + } + return partition(arrows, node => node.params.every(param => this.isAssignable(param, true))); + } + finishArrowValidation(node) { + var _node$extra; + this.toAssignableList(node.params, (_node$extra = node.extra) == null ? void 0 : _node$extra.trailingCommaLoc, false); + this.scope.enter(2 | 4); + super.checkParams(node, false, true); + this.scope.exit(); + } + forwardNoArrowParamsConversionAt(node, parse) { + let result; + if (this.state.noArrowParamsConversionAt.indexOf(node.start) !== -1) { + this.state.noArrowParamsConversionAt.push(this.state.start); + result = parse(); + this.state.noArrowParamsConversionAt.pop(); + } else { + result = parse(); + } + return result; + } + parseParenItem(node, startLoc) { + node = super.parseParenItem(node, startLoc); + if (this.eat(17)) { + node.optional = true; + this.resetEndLocation(node); + } + if (this.match(14)) { + const typeCastNode = this.startNodeAt(startLoc); + typeCastNode.expression = node; + typeCastNode.typeAnnotation = this.flowParseTypeAnnotation(); + return this.finishNode(typeCastNode, "TypeCastExpression"); + } + return node; + } + assertModuleNodeAllowed(node) { + if (node.type === "ImportDeclaration" && (node.importKind === "type" || node.importKind === "typeof") || node.type === "ExportNamedDeclaration" && node.exportKind === "type" || node.type === "ExportAllDeclaration" && node.exportKind === "type") { + return; + } + super.assertModuleNodeAllowed(node); + } + parseExportDeclaration(node) { + if (this.isContextual(130)) { + node.exportKind = "type"; + const declarationNode = this.startNode(); + this.next(); + if (this.match(5)) { + node.specifiers = this.parseExportSpecifiers(true); + super.parseExportFrom(node); + return null; + } else { + return this.flowParseTypeAlias(declarationNode); + } + } else if (this.isContextual(131)) { + node.exportKind = "type"; + const declarationNode = this.startNode(); + this.next(); + return this.flowParseOpaqueType(declarationNode, false); + } else if (this.isContextual(129)) { + node.exportKind = "type"; + const declarationNode = this.startNode(); + this.next(); + return this.flowParseInterface(declarationNode); + } else if (this.shouldParseEnums() && this.isContextual(126)) { + node.exportKind = "value"; + const declarationNode = this.startNode(); + this.next(); + return this.flowParseEnumDeclaration(declarationNode); + } else { + return super.parseExportDeclaration(node); + } + } + eatExportStar(node) { + if (super.eatExportStar(node)) return true; + if (this.isContextual(130) && this.lookahead().type === 55) { + node.exportKind = "type"; + this.next(); + this.next(); + return true; + } + return false; + } + maybeParseExportNamespaceSpecifier(node) { + const { + startLoc + } = this.state; + const hasNamespace = super.maybeParseExportNamespaceSpecifier(node); + if (hasNamespace && node.exportKind === "type") { + this.unexpected(startLoc); + } + return hasNamespace; + } + parseClassId(node, isStatement, optionalId) { + super.parseClassId(node, isStatement, optionalId); + if (this.match(47)) { + node.typeParameters = this.flowParseTypeParameterDeclaration(); + } + } + parseClassMember(classBody, member, state) { + const { + startLoc + } = this.state; + if (this.isContextual(125)) { + if (super.parseClassMemberFromModifier(classBody, member)) { + return; + } + member.declare = true; + } + super.parseClassMember(classBody, member, state); + if (member.declare) { + if (member.type !== "ClassProperty" && member.type !== "ClassPrivateProperty" && member.type !== "PropertyDefinition") { + this.raise(FlowErrors.DeclareClassElement, { + at: startLoc + }); + } else if (member.value) { + this.raise(FlowErrors.DeclareClassFieldInitializer, { + at: member.value + }); + } + } + } + isIterator(word) { + return word === "iterator" || word === "asyncIterator"; + } + readIterator() { + const word = super.readWord1(); + const fullWord = "@@" + word; + if (!this.isIterator(word) || !this.state.inType) { + this.raise(Errors.InvalidIdentifier, { + at: this.state.curPosition(), + identifierName: fullWord + }); + } + this.finishToken(132, fullWord); + } + getTokenFromCode(code) { + const next = this.input.charCodeAt(this.state.pos + 1); + if (code === 123 && next === 124) { + this.finishOp(6, 2); + } else if (this.state.inType && (code === 62 || code === 60)) { + this.finishOp(code === 62 ? 48 : 47, 1); + } else if (this.state.inType && code === 63) { + if (next === 46) { + this.finishOp(18, 2); + } else { + this.finishOp(17, 1); + } + } else if (isIteratorStart(code, next, this.input.charCodeAt(this.state.pos + 2))) { + this.state.pos += 2; + this.readIterator(); + } else { + super.getTokenFromCode(code); + } + } + isAssignable(node, isBinding) { + if (node.type === "TypeCastExpression") { + return this.isAssignable(node.expression, isBinding); + } else { + return super.isAssignable(node, isBinding); + } + } + toAssignable(node, isLHS = false) { + if (!isLHS && node.type === "AssignmentExpression" && node.left.type === "TypeCastExpression") { + node.left = this.typeCastToParameter(node.left); + } + super.toAssignable(node, isLHS); + } + toAssignableList(exprList, trailingCommaLoc, isLHS) { + for (let i = 0; i < exprList.length; i++) { + const expr = exprList[i]; + if ((expr == null ? void 0 : expr.type) === "TypeCastExpression") { + exprList[i] = this.typeCastToParameter(expr); + } + } + super.toAssignableList(exprList, trailingCommaLoc, isLHS); + } + toReferencedList(exprList, isParenthesizedExpr) { + for (let i = 0; i < exprList.length; i++) { + var _expr$extra; + const expr = exprList[i]; + if (expr && expr.type === "TypeCastExpression" && !((_expr$extra = expr.extra) != null && _expr$extra.parenthesized) && (exprList.length > 1 || !isParenthesizedExpr)) { + this.raise(FlowErrors.TypeCastInPattern, { + at: expr.typeAnnotation + }); + } + } + return exprList; + } + parseArrayLike(close, canBePattern, isTuple, refExpressionErrors) { + const node = super.parseArrayLike(close, canBePattern, isTuple, refExpressionErrors); + if (canBePattern && !this.state.maybeInArrowParameters) { + this.toReferencedList(node.elements); + } + return node; + } + isValidLVal(type, isParenthesized, binding) { + return type === "TypeCastExpression" || super.isValidLVal(type, isParenthesized, binding); + } + parseClassProperty(node) { + if (this.match(14)) { + node.typeAnnotation = this.flowParseTypeAnnotation(); + } + return super.parseClassProperty(node); + } + parseClassPrivateProperty(node) { + if (this.match(14)) { + node.typeAnnotation = this.flowParseTypeAnnotation(); + } + return super.parseClassPrivateProperty(node); + } + isClassMethod() { + return this.match(47) || super.isClassMethod(); + } + isClassProperty() { + return this.match(14) || super.isClassProperty(); + } + isNonstaticConstructor(method) { + return !this.match(14) && super.isNonstaticConstructor(method); + } + pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) { + if (method.variance) { + this.unexpected(method.variance.loc.start); + } + delete method.variance; + if (this.match(47)) { + method.typeParameters = this.flowParseTypeParameterDeclaration(); + } + super.pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper); + if (method.params && isConstructor) { + const params = method.params; + if (params.length > 0 && this.isThisParam(params[0])) { + this.raise(FlowErrors.ThisParamBannedInConstructor, { + at: method + }); + } + } else if (method.type === "MethodDefinition" && isConstructor && method.value.params) { + const params = method.value.params; + if (params.length > 0 && this.isThisParam(params[0])) { + this.raise(FlowErrors.ThisParamBannedInConstructor, { + at: method + }); + } + } + } + pushClassPrivateMethod(classBody, method, isGenerator, isAsync) { + if (method.variance) { + this.unexpected(method.variance.loc.start); + } + delete method.variance; + if (this.match(47)) { + method.typeParameters = this.flowParseTypeParameterDeclaration(); + } + super.pushClassPrivateMethod(classBody, method, isGenerator, isAsync); + } + parseClassSuper(node) { + super.parseClassSuper(node); + if (node.superClass && this.match(47)) { + node.superTypeParameters = this.flowParseTypeParameterInstantiation(); + } + if (this.isContextual(113)) { + this.next(); + const implemented = node.implements = []; + do { + const node = this.startNode(); + node.id = this.flowParseRestrictedIdentifier(true); + if (this.match(47)) { + node.typeParameters = this.flowParseTypeParameterInstantiation(); + } else { + node.typeParameters = null; + } + implemented.push(this.finishNode(node, "ClassImplements")); + } while (this.eat(12)); + } + } + checkGetterSetterParams(method) { + super.checkGetterSetterParams(method); + const params = this.getObjectOrClassMethodParams(method); + if (params.length > 0) { + const param = params[0]; + if (this.isThisParam(param) && method.kind === "get") { + this.raise(FlowErrors.GetterMayNotHaveThisParam, { + at: param + }); + } else if (this.isThisParam(param)) { + this.raise(FlowErrors.SetterMayNotHaveThisParam, { + at: param + }); + } + } + } + parsePropertyNamePrefixOperator(node) { + node.variance = this.flowParseVariance(); + } + parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors) { + if (prop.variance) { + this.unexpected(prop.variance.loc.start); + } + delete prop.variance; + let typeParameters; + if (this.match(47) && !isAccessor) { + typeParameters = this.flowParseTypeParameterDeclaration(); + if (!this.match(10)) this.unexpected(); + } + const result = super.parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors); + if (typeParameters) { + (result.value || result).typeParameters = typeParameters; + } + return result; + } + parseAssignableListItemTypes(param) { + if (this.eat(17)) { + if (param.type !== "Identifier") { + this.raise(FlowErrors.PatternIsOptional, { + at: param + }); + } + if (this.isThisParam(param)) { + this.raise(FlowErrors.ThisParamMayNotBeOptional, { + at: param + }); + } + param.optional = true; + } + if (this.match(14)) { + param.typeAnnotation = this.flowParseTypeAnnotation(); + } else if (this.isThisParam(param)) { + this.raise(FlowErrors.ThisParamAnnotationRequired, { + at: param + }); + } + if (this.match(29) && this.isThisParam(param)) { + this.raise(FlowErrors.ThisParamNoDefault, { + at: param + }); + } + this.resetEndLocation(param); + return param; + } + parseMaybeDefault(startLoc, left) { + const node = super.parseMaybeDefault(startLoc, left); + if (node.type === "AssignmentPattern" && node.typeAnnotation && node.right.start < node.typeAnnotation.start) { + this.raise(FlowErrors.TypeBeforeInitializer, { + at: node.typeAnnotation + }); + } + return node; + } + checkImportReflection(node) { + super.checkImportReflection(node); + if (node.module && node.importKind !== "value") { + this.raise(FlowErrors.ImportReflectionHasImportType, { + at: node.specifiers[0].loc.start + }); + } + } + parseImportSpecifierLocal(node, specifier, type) { + specifier.local = hasTypeImportKind(node) ? this.flowParseRestrictedIdentifier(true, true) : this.parseIdentifier(); + node.specifiers.push(this.finishImportSpecifier(specifier, type)); + } + isPotentialImportPhase(isExport) { + if (super.isPotentialImportPhase(isExport)) return true; + if (this.isContextual(130)) { + if (!isExport) return true; + const ch = this.lookaheadCharCode(); + return ch === 123 || ch === 42; + } + return !isExport && this.isContextual(87); + } + applyImportPhase(node, isExport, phase, loc) { + super.applyImportPhase(node, isExport, phase, loc); + if (isExport) { + if (!phase && this.match(65)) { + return; + } + node.exportKind = phase === "type" ? phase : "value"; + } else { + if (phase === "type" && this.match(55)) this.unexpected(); + node.importKind = phase === "type" || phase === "typeof" ? phase : "value"; + } + } + parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly, bindingType) { + const firstIdent = specifier.imported; + let specifierTypeKind = null; + if (firstIdent.type === "Identifier") { + if (firstIdent.name === "type") { + specifierTypeKind = "type"; + } else if (firstIdent.name === "typeof") { + specifierTypeKind = "typeof"; + } + } + let isBinding = false; + if (this.isContextual(93) && !this.isLookaheadContextual("as")) { + const as_ident = this.parseIdentifier(true); + if (specifierTypeKind !== null && !tokenIsKeywordOrIdentifier(this.state.type)) { + specifier.imported = as_ident; + specifier.importKind = specifierTypeKind; + specifier.local = cloneIdentifier(as_ident); + } else { + specifier.imported = firstIdent; + specifier.importKind = null; + specifier.local = this.parseIdentifier(); + } + } else { + if (specifierTypeKind !== null && tokenIsKeywordOrIdentifier(this.state.type)) { + specifier.imported = this.parseIdentifier(true); + specifier.importKind = specifierTypeKind; + } else { + if (importedIsString) { + throw this.raise(Errors.ImportBindingIsString, { + at: specifier, + importName: firstIdent.value + }); + } + specifier.imported = firstIdent; + specifier.importKind = null; + } + if (this.eatContextual(93)) { + specifier.local = this.parseIdentifier(); + } else { + isBinding = true; + specifier.local = cloneIdentifier(specifier.imported); + } + } + const specifierIsTypeImport = hasTypeImportKind(specifier); + if (isInTypeOnlyImport && specifierIsTypeImport) { + this.raise(FlowErrors.ImportTypeShorthandOnlyInPureImport, { + at: specifier + }); + } + if (isInTypeOnlyImport || specifierIsTypeImport) { + this.checkReservedType(specifier.local.name, specifier.local.loc.start, true); + } + if (isBinding && !isInTypeOnlyImport && !specifierIsTypeImport) { + this.checkReservedWord(specifier.local.name, specifier.loc.start, true, true); + } + return this.finishImportSpecifier(specifier, "ImportSpecifier"); + } + parseBindingAtom() { + switch (this.state.type) { + case 78: + return this.parseIdentifier(true); + default: + return super.parseBindingAtom(); + } + } + parseFunctionParams(node, isConstructor) { + const kind = node.kind; + if (kind !== "get" && kind !== "set" && this.match(47)) { + node.typeParameters = this.flowParseTypeParameterDeclaration(); + } + super.parseFunctionParams(node, isConstructor); + } + parseVarId(decl, kind) { + super.parseVarId(decl, kind); + if (this.match(14)) { + decl.id.typeAnnotation = this.flowParseTypeAnnotation(); + this.resetEndLocation(decl.id); + } + } + parseAsyncArrowFromCallExpression(node, call) { + if (this.match(14)) { + const oldNoAnonFunctionType = this.state.noAnonFunctionType; + this.state.noAnonFunctionType = true; + node.returnType = this.flowParseTypeAnnotation(); + this.state.noAnonFunctionType = oldNoAnonFunctionType; + } + return super.parseAsyncArrowFromCallExpression(node, call); + } + shouldParseAsyncArrow() { + return this.match(14) || super.shouldParseAsyncArrow(); + } + parseMaybeAssign(refExpressionErrors, afterLeftParse) { + var _jsx; + let state = null; + let jsx; + if (this.hasPlugin("jsx") && (this.match(142) || this.match(47))) { + state = this.state.clone(); + jsx = this.tryParse(() => super.parseMaybeAssign(refExpressionErrors, afterLeftParse), state); + if (!jsx.error) return jsx.node; + const { + context + } = this.state; + const currentContext = context[context.length - 1]; + if (currentContext === types$3.j_oTag || currentContext === types$3.j_expr) { + context.pop(); + } + } + if ((_jsx = jsx) != null && _jsx.error || this.match(47)) { + var _jsx2, _jsx3; + state = state || this.state.clone(); + let typeParameters; + const arrow = this.tryParse(abort => { + var _arrowExpression$extr; + typeParameters = this.flowParseTypeParameterDeclaration(); + const arrowExpression = this.forwardNoArrowParamsConversionAt(typeParameters, () => { + const result = super.parseMaybeAssign(refExpressionErrors, afterLeftParse); + this.resetStartLocationFromNode(result, typeParameters); + return result; + }); + if ((_arrowExpression$extr = arrowExpression.extra) != null && _arrowExpression$extr.parenthesized) abort(); + const expr = this.maybeUnwrapTypeCastExpression(arrowExpression); + if (expr.type !== "ArrowFunctionExpression") abort(); + expr.typeParameters = typeParameters; + this.resetStartLocationFromNode(expr, typeParameters); + return arrowExpression; + }, state); + let arrowExpression = null; + if (arrow.node && this.maybeUnwrapTypeCastExpression(arrow.node).type === "ArrowFunctionExpression") { + if (!arrow.error && !arrow.aborted) { + if (arrow.node.async) { + this.raise(FlowErrors.UnexpectedTypeParameterBeforeAsyncArrowFunction, { + at: typeParameters + }); + } + return arrow.node; + } + arrowExpression = arrow.node; + } + if ((_jsx2 = jsx) != null && _jsx2.node) { + this.state = jsx.failState; + return jsx.node; + } + if (arrowExpression) { + this.state = arrow.failState; + return arrowExpression; + } + if ((_jsx3 = jsx) != null && _jsx3.thrown) throw jsx.error; + if (arrow.thrown) throw arrow.error; + throw this.raise(FlowErrors.UnexpectedTokenAfterTypeParameter, { + at: typeParameters + }); + } + return super.parseMaybeAssign(refExpressionErrors, afterLeftParse); + } + parseArrow(node) { + if (this.match(14)) { + const result = this.tryParse(() => { + const oldNoAnonFunctionType = this.state.noAnonFunctionType; + this.state.noAnonFunctionType = true; + const typeNode = this.startNode(); + [typeNode.typeAnnotation, node.predicate] = this.flowParseTypeAndPredicateInitialiser(); + this.state.noAnonFunctionType = oldNoAnonFunctionType; + if (this.canInsertSemicolon()) this.unexpected(); + if (!this.match(19)) this.unexpected(); + return typeNode; + }); + if (result.thrown) return null; + if (result.error) this.state = result.failState; + node.returnType = result.node.typeAnnotation ? this.finishNode(result.node, "TypeAnnotation") : null; + } + return super.parseArrow(node); + } + shouldParseArrow(params) { + return this.match(14) || super.shouldParseArrow(params); + } + setArrowFunctionParameters(node, params) { + if (this.state.noArrowParamsConversionAt.indexOf(node.start) !== -1) { + node.params = params; + } else { + super.setArrowFunctionParameters(node, params); + } + } + checkParams(node, allowDuplicates, isArrowFunction, strictModeChanged = true) { + if (isArrowFunction && this.state.noArrowParamsConversionAt.indexOf(node.start) !== -1) { + return; + } + for (let i = 0; i < node.params.length; i++) { + if (this.isThisParam(node.params[i]) && i > 0) { + this.raise(FlowErrors.ThisParamMustBeFirst, { + at: node.params[i] + }); + } + } + super.checkParams(node, allowDuplicates, isArrowFunction, strictModeChanged); + } + parseParenAndDistinguishExpression(canBeArrow) { + return super.parseParenAndDistinguishExpression(canBeArrow && this.state.noArrowAt.indexOf(this.state.start) === -1); + } + parseSubscripts(base, startLoc, noCalls) { + if (base.type === "Identifier" && base.name === "async" && this.state.noArrowAt.indexOf(startLoc.index) !== -1) { + this.next(); + const node = this.startNodeAt(startLoc); + node.callee = base; + node.arguments = super.parseCallExpressionArguments(11, false); + base = this.finishNode(node, "CallExpression"); + } else if (base.type === "Identifier" && base.name === "async" && this.match(47)) { + const state = this.state.clone(); + const arrow = this.tryParse(abort => this.parseAsyncArrowWithTypeParameters(startLoc) || abort(), state); + if (!arrow.error && !arrow.aborted) return arrow.node; + const result = this.tryParse(() => super.parseSubscripts(base, startLoc, noCalls), state); + if (result.node && !result.error) return result.node; + if (arrow.node) { + this.state = arrow.failState; + return arrow.node; + } + if (result.node) { + this.state = result.failState; + return result.node; + } + throw arrow.error || result.error; + } + return super.parseSubscripts(base, startLoc, noCalls); + } + parseSubscript(base, startLoc, noCalls, subscriptState) { + if (this.match(18) && this.isLookaheadToken_lt()) { + subscriptState.optionalChainMember = true; + if (noCalls) { + subscriptState.stop = true; + return base; + } + this.next(); + const node = this.startNodeAt(startLoc); + node.callee = base; + node.typeArguments = this.flowParseTypeParameterInstantiation(); + this.expect(10); + node.arguments = this.parseCallExpressionArguments(11, false); + node.optional = true; + return this.finishCallExpression(node, true); + } else if (!noCalls && this.shouldParseTypes() && this.match(47)) { + const node = this.startNodeAt(startLoc); + node.callee = base; + const result = this.tryParse(() => { + node.typeArguments = this.flowParseTypeParameterInstantiationCallOrNew(); + this.expect(10); + node.arguments = super.parseCallExpressionArguments(11, false); + if (subscriptState.optionalChainMember) { + node.optional = false; + } + return this.finishCallExpression(node, subscriptState.optionalChainMember); + }); + if (result.node) { + if (result.error) this.state = result.failState; + return result.node; + } + } + return super.parseSubscript(base, startLoc, noCalls, subscriptState); + } + parseNewCallee(node) { + super.parseNewCallee(node); + let targs = null; + if (this.shouldParseTypes() && this.match(47)) { + targs = this.tryParse(() => this.flowParseTypeParameterInstantiationCallOrNew()).node; + } + node.typeArguments = targs; + } + parseAsyncArrowWithTypeParameters(startLoc) { + const node = this.startNodeAt(startLoc); + this.parseFunctionParams(node, false); + if (!this.parseArrow(node)) return; + return super.parseArrowExpression(node, undefined, true); + } + readToken_mult_modulo(code) { + const next = this.input.charCodeAt(this.state.pos + 1); + if (code === 42 && next === 47 && this.state.hasFlowComment) { + this.state.hasFlowComment = false; + this.state.pos += 2; + this.nextToken(); + return; + } + super.readToken_mult_modulo(code); + } + readToken_pipe_amp(code) { + const next = this.input.charCodeAt(this.state.pos + 1); + if (code === 124 && next === 125) { + this.finishOp(9, 2); + return; + } + super.readToken_pipe_amp(code); + } + parseTopLevel(file, program) { + const fileNode = super.parseTopLevel(file, program); + if (this.state.hasFlowComment) { + this.raise(FlowErrors.UnterminatedFlowComment, { + at: this.state.curPosition() + }); + } + return fileNode; + } + skipBlockComment() { + if (this.hasPlugin("flowComments") && this.skipFlowComment()) { + if (this.state.hasFlowComment) { + throw this.raise(FlowErrors.NestedFlowComment, { + at: this.state.startLoc + }); + } + this.hasFlowCommentCompletion(); + const commentSkip = this.skipFlowComment(); + if (commentSkip) { + this.state.pos += commentSkip; + this.state.hasFlowComment = true; + } + return; + } + return super.skipBlockComment(this.state.hasFlowComment ? "*-/" : "*/"); + } + skipFlowComment() { + const { + pos + } = this.state; + let shiftToFirstNonWhiteSpace = 2; + while ([32, 9].includes(this.input.charCodeAt(pos + shiftToFirstNonWhiteSpace))) { + shiftToFirstNonWhiteSpace++; + } + const ch2 = this.input.charCodeAt(shiftToFirstNonWhiteSpace + pos); + const ch3 = this.input.charCodeAt(shiftToFirstNonWhiteSpace + pos + 1); + if (ch2 === 58 && ch3 === 58) { + return shiftToFirstNonWhiteSpace + 2; + } + if (this.input.slice(shiftToFirstNonWhiteSpace + pos, shiftToFirstNonWhiteSpace + pos + 12) === "flow-include") { + return shiftToFirstNonWhiteSpace + 12; + } + if (ch2 === 58 && ch3 !== 58) { + return shiftToFirstNonWhiteSpace; + } + return false; + } + hasFlowCommentCompletion() { + const end = this.input.indexOf("*/", this.state.pos); + if (end === -1) { + throw this.raise(Errors.UnterminatedComment, { + at: this.state.curPosition() + }); + } + } + flowEnumErrorBooleanMemberNotInitialized(loc, { + enumName, + memberName + }) { + this.raise(FlowErrors.EnumBooleanMemberNotInitialized, { + at: loc, + memberName, + enumName + }); + } + flowEnumErrorInvalidMemberInitializer(loc, enumContext) { + return this.raise(!enumContext.explicitType ? FlowErrors.EnumInvalidMemberInitializerUnknownType : enumContext.explicitType === "symbol" ? FlowErrors.EnumInvalidMemberInitializerSymbolType : FlowErrors.EnumInvalidMemberInitializerPrimaryType, Object.assign({ + at: loc + }, enumContext)); + } + flowEnumErrorNumberMemberNotInitialized(loc, { + enumName, + memberName + }) { + this.raise(FlowErrors.EnumNumberMemberNotInitialized, { + at: loc, + enumName, + memberName + }); + } + flowEnumErrorStringMemberInconsistentlyInitialized(node, { + enumName + }) { + this.raise(FlowErrors.EnumStringMemberInconsistentlyInitialized, { + at: node, + enumName + }); + } + flowEnumMemberInit() { + const startLoc = this.state.startLoc; + const endOfInit = () => this.match(12) || this.match(8); + switch (this.state.type) { + case 134: + { + const literal = this.parseNumericLiteral(this.state.value); + if (endOfInit()) { + return { + type: "number", + loc: literal.loc.start, + value: literal + }; + } + return { + type: "invalid", + loc: startLoc + }; + } + case 133: + { + const literal = this.parseStringLiteral(this.state.value); + if (endOfInit()) { + return { + type: "string", + loc: literal.loc.start, + value: literal + }; + } + return { + type: "invalid", + loc: startLoc + }; + } + case 85: + case 86: + { + const literal = this.parseBooleanLiteral(this.match(85)); + if (endOfInit()) { + return { + type: "boolean", + loc: literal.loc.start, + value: literal + }; + } + return { + type: "invalid", + loc: startLoc + }; + } + default: + return { + type: "invalid", + loc: startLoc + }; + } + } + flowEnumMemberRaw() { + const loc = this.state.startLoc; + const id = this.parseIdentifier(true); + const init = this.eat(29) ? this.flowEnumMemberInit() : { + type: "none", + loc + }; + return { + id, + init + }; + } + flowEnumCheckExplicitTypeMismatch(loc, context, expectedType) { + const { + explicitType + } = context; + if (explicitType === null) { + return; + } + if (explicitType !== expectedType) { + this.flowEnumErrorInvalidMemberInitializer(loc, context); + } + } + flowEnumMembers({ + enumName, + explicitType + }) { + const seenNames = new Set(); + const members = { + booleanMembers: [], + numberMembers: [], + stringMembers: [], + defaultedMembers: [] + }; + let hasUnknownMembers = false; + while (!this.match(8)) { + if (this.eat(21)) { + hasUnknownMembers = true; + break; + } + const memberNode = this.startNode(); + const { + id, + init + } = this.flowEnumMemberRaw(); + const memberName = id.name; + if (memberName === "") { + continue; + } + if (/^[a-z]/.test(memberName)) { + this.raise(FlowErrors.EnumInvalidMemberName, { + at: id, + memberName, + suggestion: memberName[0].toUpperCase() + memberName.slice(1), + enumName + }); + } + if (seenNames.has(memberName)) { + this.raise(FlowErrors.EnumDuplicateMemberName, { + at: id, + memberName, + enumName + }); + } + seenNames.add(memberName); + const context = { + enumName, + explicitType, + memberName + }; + memberNode.id = id; + switch (init.type) { + case "boolean": + { + this.flowEnumCheckExplicitTypeMismatch(init.loc, context, "boolean"); + memberNode.init = init.value; + members.booleanMembers.push(this.finishNode(memberNode, "EnumBooleanMember")); + break; + } + case "number": + { + this.flowEnumCheckExplicitTypeMismatch(init.loc, context, "number"); + memberNode.init = init.value; + members.numberMembers.push(this.finishNode(memberNode, "EnumNumberMember")); + break; + } + case "string": + { + this.flowEnumCheckExplicitTypeMismatch(init.loc, context, "string"); + memberNode.init = init.value; + members.stringMembers.push(this.finishNode(memberNode, "EnumStringMember")); + break; + } + case "invalid": + { + throw this.flowEnumErrorInvalidMemberInitializer(init.loc, context); + } + case "none": + { + switch (explicitType) { + case "boolean": + this.flowEnumErrorBooleanMemberNotInitialized(init.loc, context); + break; + case "number": + this.flowEnumErrorNumberMemberNotInitialized(init.loc, context); + break; + default: + members.defaultedMembers.push(this.finishNode(memberNode, "EnumDefaultedMember")); + } + } + } + if (!this.match(8)) { + this.expect(12); + } + } + return { + members, + hasUnknownMembers + }; + } + flowEnumStringMembers(initializedMembers, defaultedMembers, { + enumName + }) { + if (initializedMembers.length === 0) { + return defaultedMembers; + } else if (defaultedMembers.length === 0) { + return initializedMembers; + } else if (defaultedMembers.length > initializedMembers.length) { + for (const member of initializedMembers) { + this.flowEnumErrorStringMemberInconsistentlyInitialized(member, { + enumName + }); + } + return defaultedMembers; + } else { + for (const member of defaultedMembers) { + this.flowEnumErrorStringMemberInconsistentlyInitialized(member, { + enumName + }); + } + return initializedMembers; + } + } + flowEnumParseExplicitType({ + enumName + }) { + if (!this.eatContextual(102)) return null; + if (!tokenIsIdentifier(this.state.type)) { + throw this.raise(FlowErrors.EnumInvalidExplicitTypeUnknownSupplied, { + at: this.state.startLoc, + enumName + }); + } + const { + value + } = this.state; + this.next(); + if (value !== "boolean" && value !== "number" && value !== "string" && value !== "symbol") { + this.raise(FlowErrors.EnumInvalidExplicitType, { + at: this.state.startLoc, + enumName, + invalidEnumType: value + }); + } + return value; + } + flowEnumBody(node, id) { + const enumName = id.name; + const nameLoc = id.loc.start; + const explicitType = this.flowEnumParseExplicitType({ + enumName + }); + this.expect(5); + const { + members, + hasUnknownMembers + } = this.flowEnumMembers({ + enumName, + explicitType + }); + node.hasUnknownMembers = hasUnknownMembers; + switch (explicitType) { + case "boolean": + node.explicitType = true; + node.members = members.booleanMembers; + this.expect(8); + return this.finishNode(node, "EnumBooleanBody"); + case "number": + node.explicitType = true; + node.members = members.numberMembers; + this.expect(8); + return this.finishNode(node, "EnumNumberBody"); + case "string": + node.explicitType = true; + node.members = this.flowEnumStringMembers(members.stringMembers, members.defaultedMembers, { + enumName + }); + this.expect(8); + return this.finishNode(node, "EnumStringBody"); + case "symbol": + node.members = members.defaultedMembers; + this.expect(8); + return this.finishNode(node, "EnumSymbolBody"); + default: + { + const empty = () => { + node.members = []; + this.expect(8); + return this.finishNode(node, "EnumStringBody"); + }; + node.explicitType = false; + const boolsLen = members.booleanMembers.length; + const numsLen = members.numberMembers.length; + const strsLen = members.stringMembers.length; + const defaultedLen = members.defaultedMembers.length; + if (!boolsLen && !numsLen && !strsLen && !defaultedLen) { + return empty(); + } else if (!boolsLen && !numsLen) { + node.members = this.flowEnumStringMembers(members.stringMembers, members.defaultedMembers, { + enumName + }); + this.expect(8); + return this.finishNode(node, "EnumStringBody"); + } else if (!numsLen && !strsLen && boolsLen >= defaultedLen) { + for (const member of members.defaultedMembers) { + this.flowEnumErrorBooleanMemberNotInitialized(member.loc.start, { + enumName, + memberName: member.id.name + }); + } + node.members = members.booleanMembers; + this.expect(8); + return this.finishNode(node, "EnumBooleanBody"); + } else if (!boolsLen && !strsLen && numsLen >= defaultedLen) { + for (const member of members.defaultedMembers) { + this.flowEnumErrorNumberMemberNotInitialized(member.loc.start, { + enumName, + memberName: member.id.name + }); + } + node.members = members.numberMembers; + this.expect(8); + return this.finishNode(node, "EnumNumberBody"); + } else { + this.raise(FlowErrors.EnumInconsistentMemberValues, { + at: nameLoc, + enumName + }); + return empty(); + } + } + } + } + flowParseEnumDeclaration(node) { + const id = this.parseIdentifier(); + node.id = id; + node.body = this.flowEnumBody(this.startNode(), id); + return this.finishNode(node, "EnumDeclaration"); + } + isLookaheadToken_lt() { + const next = this.nextTokenStart(); + if (this.input.charCodeAt(next) === 60) { + const afterNext = this.input.charCodeAt(next + 1); + return afterNext !== 60 && afterNext !== 61; + } + return false; + } + maybeUnwrapTypeCastExpression(node) { + return node.type === "TypeCastExpression" ? node.expression : node; + } +}; +const entities$1 = { + __proto__: null, + quot: "\u0022", + amp: "&", + apos: "\u0027", + lt: "<", + gt: ">", + nbsp: "\u00A0", + iexcl: "\u00A1", + cent: "\u00A2", + pound: "\u00A3", + curren: "\u00A4", + yen: "\u00A5", + brvbar: "\u00A6", + sect: "\u00A7", + uml: "\u00A8", + copy: "\u00A9", + ordf: "\u00AA", + laquo: "\u00AB", + not: "\u00AC", + shy: "\u00AD", + reg: "\u00AE", + macr: "\u00AF", + deg: "\u00B0", + plusmn: "\u00B1", + sup2: "\u00B2", + sup3: "\u00B3", + acute: "\u00B4", + micro: "\u00B5", + para: "\u00B6", + middot: "\u00B7", + cedil: "\u00B8", + sup1: "\u00B9", + ordm: "\u00BA", + raquo: "\u00BB", + frac14: "\u00BC", + frac12: "\u00BD", + frac34: "\u00BE", + iquest: "\u00BF", + Agrave: "\u00C0", + Aacute: "\u00C1", + Acirc: "\u00C2", + Atilde: "\u00C3", + Auml: "\u00C4", + Aring: "\u00C5", + AElig: "\u00C6", + Ccedil: "\u00C7", + Egrave: "\u00C8", + Eacute: "\u00C9", + Ecirc: "\u00CA", + Euml: "\u00CB", + Igrave: "\u00CC", + Iacute: "\u00CD", + Icirc: "\u00CE", + Iuml: "\u00CF", + ETH: "\u00D0", + Ntilde: "\u00D1", + Ograve: "\u00D2", + Oacute: "\u00D3", + Ocirc: "\u00D4", + Otilde: "\u00D5", + Ouml: "\u00D6", + times: "\u00D7", + Oslash: "\u00D8", + Ugrave: "\u00D9", + Uacute: "\u00DA", + Ucirc: "\u00DB", + Uuml: "\u00DC", + Yacute: "\u00DD", + THORN: "\u00DE", + szlig: "\u00DF", + agrave: "\u00E0", + aacute: "\u00E1", + acirc: "\u00E2", + atilde: "\u00E3", + auml: "\u00E4", + aring: "\u00E5", + aelig: "\u00E6", + ccedil: "\u00E7", + egrave: "\u00E8", + eacute: "\u00E9", + ecirc: "\u00EA", + euml: "\u00EB", + igrave: "\u00EC", + iacute: "\u00ED", + icirc: "\u00EE", + iuml: "\u00EF", + eth: "\u00F0", + ntilde: "\u00F1", + ograve: "\u00F2", + oacute: "\u00F3", + ocirc: "\u00F4", + otilde: "\u00F5", + ouml: "\u00F6", + divide: "\u00F7", + oslash: "\u00F8", + ugrave: "\u00F9", + uacute: "\u00FA", + ucirc: "\u00FB", + uuml: "\u00FC", + yacute: "\u00FD", + thorn: "\u00FE", + yuml: "\u00FF", + OElig: "\u0152", + oelig: "\u0153", + Scaron: "\u0160", + scaron: "\u0161", + Yuml: "\u0178", + fnof: "\u0192", + circ: "\u02C6", + tilde: "\u02DC", + Alpha: "\u0391", + Beta: "\u0392", + Gamma: "\u0393", + Delta: "\u0394", + Epsilon: "\u0395", + Zeta: "\u0396", + Eta: "\u0397", + Theta: "\u0398", + Iota: "\u0399", + Kappa: "\u039A", + Lambda: "\u039B", + Mu: "\u039C", + Nu: "\u039D", + Xi: "\u039E", + Omicron: "\u039F", + Pi: "\u03A0", + Rho: "\u03A1", + Sigma: "\u03A3", + Tau: "\u03A4", + Upsilon: "\u03A5", + Phi: "\u03A6", + Chi: "\u03A7", + Psi: "\u03A8", + Omega: "\u03A9", + alpha: "\u03B1", + beta: "\u03B2", + gamma: "\u03B3", + delta: "\u03B4", + epsilon: "\u03B5", + zeta: "\u03B6", + eta: "\u03B7", + theta: "\u03B8", + iota: "\u03B9", + kappa: "\u03BA", + lambda: "\u03BB", + mu: "\u03BC", + nu: "\u03BD", + xi: "\u03BE", + omicron: "\u03BF", + pi: "\u03C0", + rho: "\u03C1", + sigmaf: "\u03C2", + sigma: "\u03C3", + tau: "\u03C4", + upsilon: "\u03C5", + phi: "\u03C6", + chi: "\u03C7", + psi: "\u03C8", + omega: "\u03C9", + thetasym: "\u03D1", + upsih: "\u03D2", + piv: "\u03D6", + ensp: "\u2002", + emsp: "\u2003", + thinsp: "\u2009", + zwnj: "\u200C", + zwj: "\u200D", + lrm: "\u200E", + rlm: "\u200F", + ndash: "\u2013", + mdash: "\u2014", + lsquo: "\u2018", + rsquo: "\u2019", + sbquo: "\u201A", + ldquo: "\u201C", + rdquo: "\u201D", + bdquo: "\u201E", + dagger: "\u2020", + Dagger: "\u2021", + bull: "\u2022", + hellip: "\u2026", + permil: "\u2030", + prime: "\u2032", + Prime: "\u2033", + lsaquo: "\u2039", + rsaquo: "\u203A", + oline: "\u203E", + frasl: "\u2044", + euro: "\u20AC", + image: "\u2111", + weierp: "\u2118", + real: "\u211C", + trade: "\u2122", + alefsym: "\u2135", + larr: "\u2190", + uarr: "\u2191", + rarr: "\u2192", + darr: "\u2193", + harr: "\u2194", + crarr: "\u21B5", + lArr: "\u21D0", + uArr: "\u21D1", + rArr: "\u21D2", + dArr: "\u21D3", + hArr: "\u21D4", + forall: "\u2200", + part: "\u2202", + exist: "\u2203", + empty: "\u2205", + nabla: "\u2207", + isin: "\u2208", + notin: "\u2209", + ni: "\u220B", + prod: "\u220F", + sum: "\u2211", + minus: "\u2212", + lowast: "\u2217", + radic: "\u221A", + prop: "\u221D", + infin: "\u221E", + ang: "\u2220", + and: "\u2227", + or: "\u2228", + cap: "\u2229", + cup: "\u222A", + int: "\u222B", + there4: "\u2234", + sim: "\u223C", + cong: "\u2245", + asymp: "\u2248", + ne: "\u2260", + equiv: "\u2261", + le: "\u2264", + ge: "\u2265", + sub: "\u2282", + sup: "\u2283", + nsub: "\u2284", + sube: "\u2286", + supe: "\u2287", + oplus: "\u2295", + otimes: "\u2297", + perp: "\u22A5", + sdot: "\u22C5", + lceil: "\u2308", + rceil: "\u2309", + lfloor: "\u230A", + rfloor: "\u230B", + lang: "\u2329", + rang: "\u232A", + loz: "\u25CA", + spades: "\u2660", + clubs: "\u2663", + hearts: "\u2665", + diams: "\u2666" +}; +const JsxErrors = ParseErrorEnum`jsx`({ + AttributeIsEmpty: "JSX attributes must only be assigned a non-empty expression.", + MissingClosingTagElement: ({ + openingTagName + }) => `Expected corresponding JSX closing tag for <${openingTagName}>.`, + MissingClosingTagFragment: "Expected corresponding JSX closing tag for <>.", + UnexpectedSequenceExpression: "Sequence expressions cannot be directly nested inside JSX. Did you mean to wrap it in parentheses (...)?", + UnexpectedToken: ({ + unexpected, + HTMLEntity + }) => `Unexpected token \`${unexpected}\`. Did you mean \`${HTMLEntity}\` or \`{'${unexpected}'}\`?`, + UnsupportedJsxValue: "JSX value should be either an expression or a quoted JSX text.", + UnterminatedJsxContent: "Unterminated JSX contents.", + UnwrappedAdjacentJSXElements: "Adjacent JSX elements must be wrapped in an enclosing tag. Did you want a JSX fragment <>...</>?" +}); +function isFragment(object) { + return object ? object.type === "JSXOpeningFragment" || object.type === "JSXClosingFragment" : false; +} +function getQualifiedJSXName(object) { + if (object.type === "JSXIdentifier") { + return object.name; + } + if (object.type === "JSXNamespacedName") { + return object.namespace.name + ":" + object.name.name; + } + if (object.type === "JSXMemberExpression") { + return getQualifiedJSXName(object.object) + "." + getQualifiedJSXName(object.property); + } + throw new Error("Node had unexpected type: " + object.type); +} +var jsx = superClass => class JSXParserMixin extends superClass { + jsxReadToken() { + let out = ""; + let chunkStart = this.state.pos; + for (;;) { + if (this.state.pos >= this.length) { + throw this.raise(JsxErrors.UnterminatedJsxContent, { + at: this.state.startLoc + }); + } + const ch = this.input.charCodeAt(this.state.pos); + switch (ch) { + case 60: + case 123: + if (this.state.pos === this.state.start) { + if (ch === 60 && this.state.canStartJSXElement) { + ++this.state.pos; + this.finishToken(142); + } else { + super.getTokenFromCode(ch); + } + return; + } + out += this.input.slice(chunkStart, this.state.pos); + this.finishToken(141, out); + return; + case 38: + out += this.input.slice(chunkStart, this.state.pos); + out += this.jsxReadEntity(); + chunkStart = this.state.pos; + break; + case 62: + case 125: + default: + if (isNewLine(ch)) { + out += this.input.slice(chunkStart, this.state.pos); + out += this.jsxReadNewLine(true); + chunkStart = this.state.pos; + } else { + ++this.state.pos; + } + } + } + } + jsxReadNewLine(normalizeCRLF) { + const ch = this.input.charCodeAt(this.state.pos); + let out; + ++this.state.pos; + if (ch === 13 && this.input.charCodeAt(this.state.pos) === 10) { + ++this.state.pos; + out = normalizeCRLF ? "\n" : "\r\n"; + } else { + out = String.fromCharCode(ch); + } + ++this.state.curLine; + this.state.lineStart = this.state.pos; + return out; + } + jsxReadString(quote) { + let out = ""; + let chunkStart = ++this.state.pos; + for (;;) { + if (this.state.pos >= this.length) { + throw this.raise(Errors.UnterminatedString, { + at: this.state.startLoc + }); + } + const ch = this.input.charCodeAt(this.state.pos); + if (ch === quote) break; + if (ch === 38) { + out += this.input.slice(chunkStart, this.state.pos); + out += this.jsxReadEntity(); + chunkStart = this.state.pos; + } else if (isNewLine(ch)) { + out += this.input.slice(chunkStart, this.state.pos); + out += this.jsxReadNewLine(false); + chunkStart = this.state.pos; + } else { + ++this.state.pos; + } + } + out += this.input.slice(chunkStart, this.state.pos++); + this.finishToken(133, out); + } + jsxReadEntity() { + const startPos = ++this.state.pos; + if (this.codePointAtPos(this.state.pos) === 35) { + ++this.state.pos; + let radix = 10; + if (this.codePointAtPos(this.state.pos) === 120) { + radix = 16; + ++this.state.pos; + } + const codePoint = this.readInt(radix, undefined, false, "bail"); + if (codePoint !== null && this.codePointAtPos(this.state.pos) === 59) { + ++this.state.pos; + return String.fromCodePoint(codePoint); + } + } else { + let count = 0; + let semi = false; + while (count++ < 10 && this.state.pos < this.length && !(semi = this.codePointAtPos(this.state.pos) == 59)) { + ++this.state.pos; + } + if (semi) { + const desc = this.input.slice(startPos, this.state.pos); + const entity = entities$1[desc]; + ++this.state.pos; + if (entity) { + return entity; + } + } + } + this.state.pos = startPos; + return "&"; + } + jsxReadWord() { + let ch; + const start = this.state.pos; + do { + ch = this.input.charCodeAt(++this.state.pos); + } while (isIdentifierChar(ch) || ch === 45); + this.finishToken(140, this.input.slice(start, this.state.pos)); + } + jsxParseIdentifier() { + const node = this.startNode(); + if (this.match(140)) { + node.name = this.state.value; + } else if (tokenIsKeyword(this.state.type)) { + node.name = tokenLabelName(this.state.type); + } else { + this.unexpected(); + } + this.next(); + return this.finishNode(node, "JSXIdentifier"); + } + jsxParseNamespacedName() { + const startLoc = this.state.startLoc; + const name = this.jsxParseIdentifier(); + if (!this.eat(14)) return name; + const node = this.startNodeAt(startLoc); + node.namespace = name; + node.name = this.jsxParseIdentifier(); + return this.finishNode(node, "JSXNamespacedName"); + } + jsxParseElementName() { + const startLoc = this.state.startLoc; + let node = this.jsxParseNamespacedName(); + if (node.type === "JSXNamespacedName") { + return node; + } + while (this.eat(16)) { + const newNode = this.startNodeAt(startLoc); + newNode.object = node; + newNode.property = this.jsxParseIdentifier(); + node = this.finishNode(newNode, "JSXMemberExpression"); + } + return node; + } + jsxParseAttributeValue() { + let node; + switch (this.state.type) { + case 5: + node = this.startNode(); + this.setContext(types$3.brace); + this.next(); + node = this.jsxParseExpressionContainer(node, types$3.j_oTag); + if (node.expression.type === "JSXEmptyExpression") { + this.raise(JsxErrors.AttributeIsEmpty, { + at: node + }); + } + return node; + case 142: + case 133: + return this.parseExprAtom(); + default: + throw this.raise(JsxErrors.UnsupportedJsxValue, { + at: this.state.startLoc + }); + } + } + jsxParseEmptyExpression() { + const node = this.startNodeAt(this.state.lastTokEndLoc); + return this.finishNodeAt(node, "JSXEmptyExpression", this.state.startLoc); + } + jsxParseSpreadChild(node) { + this.next(); + node.expression = this.parseExpression(); + this.setContext(types$3.j_expr); + this.state.canStartJSXElement = true; + this.expect(8); + return this.finishNode(node, "JSXSpreadChild"); + } + jsxParseExpressionContainer(node, previousContext) { + if (this.match(8)) { + node.expression = this.jsxParseEmptyExpression(); + } else { + const expression = this.parseExpression(); + node.expression = expression; + } + this.setContext(previousContext); + this.state.canStartJSXElement = true; + this.expect(8); + return this.finishNode(node, "JSXExpressionContainer"); + } + jsxParseAttribute() { + const node = this.startNode(); + if (this.match(5)) { + this.setContext(types$3.brace); + this.next(); + this.expect(21); + node.argument = this.parseMaybeAssignAllowIn(); + this.setContext(types$3.j_oTag); + this.state.canStartJSXElement = true; + this.expect(8); + return this.finishNode(node, "JSXSpreadAttribute"); + } + node.name = this.jsxParseNamespacedName(); + node.value = this.eat(29) ? this.jsxParseAttributeValue() : null; + return this.finishNode(node, "JSXAttribute"); + } + jsxParseOpeningElementAt(startLoc) { + const node = this.startNodeAt(startLoc); + if (this.eat(143)) { + return this.finishNode(node, "JSXOpeningFragment"); + } + node.name = this.jsxParseElementName(); + return this.jsxParseOpeningElementAfterName(node); + } + jsxParseOpeningElementAfterName(node) { + const attributes = []; + while (!this.match(56) && !this.match(143)) { + attributes.push(this.jsxParseAttribute()); + } + node.attributes = attributes; + node.selfClosing = this.eat(56); + this.expect(143); + return this.finishNode(node, "JSXOpeningElement"); + } + jsxParseClosingElementAt(startLoc) { + const node = this.startNodeAt(startLoc); + if (this.eat(143)) { + return this.finishNode(node, "JSXClosingFragment"); + } + node.name = this.jsxParseElementName(); + this.expect(143); + return this.finishNode(node, "JSXClosingElement"); + } + jsxParseElementAt(startLoc) { + const node = this.startNodeAt(startLoc); + const children = []; + const openingElement = this.jsxParseOpeningElementAt(startLoc); + let closingElement = null; + if (!openingElement.selfClosing) { + contents: for (;;) { + switch (this.state.type) { + case 142: + startLoc = this.state.startLoc; + this.next(); + if (this.eat(56)) { + closingElement = this.jsxParseClosingElementAt(startLoc); + break contents; + } + children.push(this.jsxParseElementAt(startLoc)); + break; + case 141: + children.push(this.parseExprAtom()); + break; + case 5: + { + const node = this.startNode(); + this.setContext(types$3.brace); + this.next(); + if (this.match(21)) { + children.push(this.jsxParseSpreadChild(node)); + } else { + children.push(this.jsxParseExpressionContainer(node, types$3.j_expr)); + } + break; + } + default: + this.unexpected(); + } + } + if (isFragment(openingElement) && !isFragment(closingElement) && closingElement !== null) { + this.raise(JsxErrors.MissingClosingTagFragment, { + at: closingElement + }); + } else if (!isFragment(openingElement) && isFragment(closingElement)) { + this.raise(JsxErrors.MissingClosingTagElement, { + at: closingElement, + openingTagName: getQualifiedJSXName(openingElement.name) + }); + } else if (!isFragment(openingElement) && !isFragment(closingElement)) { + if (getQualifiedJSXName(closingElement.name) !== getQualifiedJSXName(openingElement.name)) { + this.raise(JsxErrors.MissingClosingTagElement, { + at: closingElement, + openingTagName: getQualifiedJSXName(openingElement.name) + }); + } + } + } + if (isFragment(openingElement)) { + node.openingFragment = openingElement; + node.closingFragment = closingElement; + } else { + node.openingElement = openingElement; + node.closingElement = closingElement; + } + node.children = children; + if (this.match(47)) { + throw this.raise(JsxErrors.UnwrappedAdjacentJSXElements, { + at: this.state.startLoc + }); + } + return isFragment(openingElement) ? this.finishNode(node, "JSXFragment") : this.finishNode(node, "JSXElement"); + } + jsxParseElement() { + const startLoc = this.state.startLoc; + this.next(); + return this.jsxParseElementAt(startLoc); + } + setContext(newContext) { + const { + context + } = this.state; + context[context.length - 1] = newContext; + } + parseExprAtom(refExpressionErrors) { + if (this.match(141)) { + return this.parseLiteral(this.state.value, "JSXText"); + } else if (this.match(142)) { + return this.jsxParseElement(); + } else if (this.match(47) && this.input.charCodeAt(this.state.pos) !== 33) { + this.replaceToken(142); + return this.jsxParseElement(); + } else { + return super.parseExprAtom(refExpressionErrors); + } + } + skipSpace() { + const curContext = this.curContext(); + if (!curContext.preserveSpace) super.skipSpace(); + } + getTokenFromCode(code) { + const context = this.curContext(); + if (context === types$3.j_expr) { + this.jsxReadToken(); + return; + } + if (context === types$3.j_oTag || context === types$3.j_cTag) { + if (isIdentifierStart(code)) { + this.jsxReadWord(); + return; + } + if (code === 62) { + ++this.state.pos; + this.finishToken(143); + return; + } + if ((code === 34 || code === 39) && context === types$3.j_oTag) { + this.jsxReadString(code); + return; + } + } + if (code === 60 && this.state.canStartJSXElement && this.input.charCodeAt(this.state.pos + 1) !== 33) { + ++this.state.pos; + this.finishToken(142); + return; + } + super.getTokenFromCode(code); + } + updateContext(prevType) { + const { + context, + type + } = this.state; + if (type === 56 && prevType === 142) { + context.splice(-2, 2, types$3.j_cTag); + this.state.canStartJSXElement = false; + } else if (type === 142) { + context.push(types$3.j_oTag); + } else if (type === 143) { + const out = context[context.length - 1]; + if (out === types$3.j_oTag && prevType === 56 || out === types$3.j_cTag) { + context.pop(); + this.state.canStartJSXElement = context[context.length - 1] === types$3.j_expr; + } else { + this.setContext(types$3.j_expr); + this.state.canStartJSXElement = true; + } + } else { + this.state.canStartJSXElement = tokenComesBeforeExpression(type); + } + } +}; +class TypeScriptScope extends Scope$1 { + constructor(...args) { + super(...args); + this.types = new Set(); + this.enums = new Set(); + this.constEnums = new Set(); + this.classes = new Set(); + this.exportOnlyBindings = new Set(); + } +} +class TypeScriptScopeHandler extends ScopeHandler { + constructor(...args) { + super(...args); + this.importsStack = []; + } + createScope(flags) { + this.importsStack.push(new Set()); + return new TypeScriptScope(flags); + } + enter(flags) { + if (flags == 256) { + this.importsStack.push(new Set()); + } + super.enter(flags); + } + exit() { + const flags = super.exit(); + if (flags == 256) { + this.importsStack.pop(); + } + return flags; + } + hasImport(name, allowShadow) { + const len = this.importsStack.length; + if (this.importsStack[len - 1].has(name)) { + return true; + } + if (!allowShadow && len > 1) { + for (let i = 0; i < len - 1; i++) { + if (this.importsStack[i].has(name)) return true; + } + } + return false; + } + declareName(name, bindingType, loc) { + if (bindingType & 4096) { + if (this.hasImport(name, true)) { + this.parser.raise(Errors.VarRedeclaration, { + at: loc, + identifierName: name + }); + } + this.importsStack[this.importsStack.length - 1].add(name); + return; + } + const scope = this.currentScope(); + if (bindingType & 1024) { + this.maybeExportDefined(scope, name); + scope.exportOnlyBindings.add(name); + return; + } + super.declareName(name, bindingType, loc); + if (bindingType & 2) { + if (!(bindingType & 1)) { + this.checkRedeclarationInScope(scope, name, bindingType, loc); + this.maybeExportDefined(scope, name); + } + scope.types.add(name); + } + if (bindingType & 256) scope.enums.add(name); + if (bindingType & 512) { + scope.constEnums.add(name); + } + if (bindingType & 128) scope.classes.add(name); + } + isRedeclaredInScope(scope, name, bindingType) { + if (scope.enums.has(name)) { + if (bindingType & 256) { + const isConst = !!(bindingType & 512); + const wasConst = scope.constEnums.has(name); + return isConst !== wasConst; + } + return true; + } + if (bindingType & 128 && scope.classes.has(name)) { + if (scope.lexical.has(name)) { + return !!(bindingType & 1); + } else { + return false; + } + } + if (bindingType & 2 && scope.types.has(name)) { + return true; + } + return super.isRedeclaredInScope(scope, name, bindingType); + } + checkLocalExport(id) { + const { + name + } = id; + if (this.hasImport(name)) return; + const len = this.scopeStack.length; + for (let i = len - 1; i >= 0; i--) { + const scope = this.scopeStack[i]; + if (scope.types.has(name) || scope.exportOnlyBindings.has(name)) return; + } + super.checkLocalExport(id); + } +} +const getOwn$1 = (object, key) => Object.hasOwnProperty.call(object, key) && object[key]; +const unwrapParenthesizedExpression = node => { + return node.type === "ParenthesizedExpression" ? unwrapParenthesizedExpression(node.expression) : node; +}; +class LValParser extends NodeUtils { + toAssignable(node, isLHS = false) { + var _node$extra, _node$extra3; + let parenthesized = undefined; + if (node.type === "ParenthesizedExpression" || (_node$extra = node.extra) != null && _node$extra.parenthesized) { + parenthesized = unwrapParenthesizedExpression(node); + if (isLHS) { + if (parenthesized.type === "Identifier") { + this.expressionScope.recordArrowParameterBindingError(Errors.InvalidParenthesizedAssignment, { + at: node + }); + } else if (parenthesized.type !== "MemberExpression" && !this.isOptionalMemberExpression(parenthesized)) { + this.raise(Errors.InvalidParenthesizedAssignment, { + at: node + }); + } + } else { + this.raise(Errors.InvalidParenthesizedAssignment, { + at: node + }); + } + } + switch (node.type) { + case "Identifier": + case "ObjectPattern": + case "ArrayPattern": + case "AssignmentPattern": + case "RestElement": + break; + case "ObjectExpression": + node.type = "ObjectPattern"; + for (let i = 0, length = node.properties.length, last = length - 1; i < length; i++) { + var _node$extra2; + const prop = node.properties[i]; + const isLast = i === last; + this.toAssignableObjectExpressionProp(prop, isLast, isLHS); + if (isLast && prop.type === "RestElement" && (_node$extra2 = node.extra) != null && _node$extra2.trailingCommaLoc) { + this.raise(Errors.RestTrailingComma, { + at: node.extra.trailingCommaLoc + }); + } + } + break; + case "ObjectProperty": + { + const { + key, + value + } = node; + if (this.isPrivateName(key)) { + this.classScope.usePrivateName(this.getPrivateNameSV(key), key.loc.start); + } + this.toAssignable(value, isLHS); + break; + } + case "SpreadElement": + { + throw new Error("Internal @babel/parser error (this is a bug, please report it)." + " SpreadElement should be converted by .toAssignable's caller."); + } + case "ArrayExpression": + node.type = "ArrayPattern"; + this.toAssignableList(node.elements, (_node$extra3 = node.extra) == null ? void 0 : _node$extra3.trailingCommaLoc, isLHS); + break; + case "AssignmentExpression": + if (node.operator !== "=") { + this.raise(Errors.MissingEqInAssignment, { + at: node.left.loc.end + }); + } + node.type = "AssignmentPattern"; + delete node.operator; + this.toAssignable(node.left, isLHS); + break; + case "ParenthesizedExpression": + this.toAssignable(parenthesized, isLHS); + break; + } + } + toAssignableObjectExpressionProp(prop, isLast, isLHS) { + if (prop.type === "ObjectMethod") { + this.raise(prop.kind === "get" || prop.kind === "set" ? Errors.PatternHasAccessor : Errors.PatternHasMethod, { + at: prop.key + }); + } else if (prop.type === "SpreadElement") { + prop.type = "RestElement"; + const arg = prop.argument; + this.checkToRestConversion(arg, false); + this.toAssignable(arg, isLHS); + if (!isLast) { + this.raise(Errors.RestTrailingComma, { + at: prop + }); + } + } else { + this.toAssignable(prop, isLHS); + } + } + toAssignableList(exprList, trailingCommaLoc, isLHS) { + const end = exprList.length - 1; + for (let i = 0; i <= end; i++) { + const elt = exprList[i]; + if (!elt) continue; + if (elt.type === "SpreadElement") { + elt.type = "RestElement"; + const arg = elt.argument; + this.checkToRestConversion(arg, true); + this.toAssignable(arg, isLHS); + } else { + this.toAssignable(elt, isLHS); + } + if (elt.type === "RestElement") { + if (i < end) { + this.raise(Errors.RestTrailingComma, { + at: elt + }); + } else if (trailingCommaLoc) { + this.raise(Errors.RestTrailingComma, { + at: trailingCommaLoc + }); + } + } + } + } + isAssignable(node, isBinding) { + switch (node.type) { + case "Identifier": + case "ObjectPattern": + case "ArrayPattern": + case "AssignmentPattern": + case "RestElement": + return true; + case "ObjectExpression": + { + const last = node.properties.length - 1; + return node.properties.every((prop, i) => { + return prop.type !== "ObjectMethod" && (i === last || prop.type !== "SpreadElement") && this.isAssignable(prop); + }); + } + case "ObjectProperty": + return this.isAssignable(node.value); + case "SpreadElement": + return this.isAssignable(node.argument); + case "ArrayExpression": + return node.elements.every(element => element === null || this.isAssignable(element)); + case "AssignmentExpression": + return node.operator === "="; + case "ParenthesizedExpression": + return this.isAssignable(node.expression); + case "MemberExpression": + case "OptionalMemberExpression": + return !isBinding; + default: + return false; + } + } + toReferencedList(exprList, isParenthesizedExpr) { + return exprList; + } + toReferencedListDeep(exprList, isParenthesizedExpr) { + this.toReferencedList(exprList, isParenthesizedExpr); + for (const expr of exprList) { + if ((expr == null ? void 0 : expr.type) === "ArrayExpression") { + this.toReferencedListDeep(expr.elements); + } + } + } + parseSpread(refExpressionErrors) { + const node = this.startNode(); + this.next(); + node.argument = this.parseMaybeAssignAllowIn(refExpressionErrors, undefined); + return this.finishNode(node, "SpreadElement"); + } + parseRestBinding() { + const node = this.startNode(); + this.next(); + node.argument = this.parseBindingAtom(); + return this.finishNode(node, "RestElement"); + } + parseBindingAtom() { + switch (this.state.type) { + case 0: + { + const node = this.startNode(); + this.next(); + node.elements = this.parseBindingList(3, 93, 1); + return this.finishNode(node, "ArrayPattern"); + } + case 5: + return this.parseObjectLike(8, true); + } + return this.parseIdentifier(); + } + parseBindingList(close, closeCharCode, flags) { + const allowEmpty = flags & 1; + const elts = []; + let first = true; + while (!this.eat(close)) { + if (first) { + first = false; + } else { + this.expect(12); + } + if (allowEmpty && this.match(12)) { + elts.push(null); + } else if (this.eat(close)) { + break; + } else if (this.match(21)) { + elts.push(this.parseAssignableListItemTypes(this.parseRestBinding(), flags)); + if (!this.checkCommaAfterRest(closeCharCode)) { + this.expect(close); + break; + } + } else { + const decorators = []; + if (this.match(26) && this.hasPlugin("decorators")) { + this.raise(Errors.UnsupportedParameterDecorator, { + at: this.state.startLoc + }); + } + while (this.match(26)) { + decorators.push(this.parseDecorator()); + } + elts.push(this.parseAssignableListItem(flags, decorators)); + } + } + return elts; + } + parseBindingRestProperty(prop) { + this.next(); + prop.argument = this.parseIdentifier(); + this.checkCommaAfterRest(125); + return this.finishNode(prop, "RestElement"); + } + parseBindingProperty() { + const prop = this.startNode(); + const { + type, + startLoc + } = this.state; + if (type === 21) { + return this.parseBindingRestProperty(prop); + } else if (type === 138) { + this.expectPlugin("destructuringPrivate", startLoc); + this.classScope.usePrivateName(this.state.value, startLoc); + prop.key = this.parsePrivateName(); + } else { + this.parsePropertyName(prop); + } + prop.method = false; + return this.parseObjPropValue(prop, startLoc, false, false, true, false); + } + parseAssignableListItem(flags, decorators) { + const left = this.parseMaybeDefault(); + this.parseAssignableListItemTypes(left, flags); + const elt = this.parseMaybeDefault(left.loc.start, left); + if (decorators.length) { + left.decorators = decorators; + } + return elt; + } + parseAssignableListItemTypes(param, flags) { + return param; + } + parseMaybeDefault(startLoc, left) { + var _startLoc, _left; + (_startLoc = startLoc) != null ? _startLoc : startLoc = this.state.startLoc; + left = (_left = left) != null ? _left : this.parseBindingAtom(); + if (!this.eat(29)) return left; + const node = this.startNodeAt(startLoc); + node.left = left; + node.right = this.parseMaybeAssignAllowIn(); + return this.finishNode(node, "AssignmentPattern"); + } + isValidLVal(type, isUnparenthesizedInAssign, binding) { + return getOwn$1({ + AssignmentPattern: "left", + RestElement: "argument", + ObjectProperty: "value", + ParenthesizedExpression: "expression", + ArrayPattern: "elements", + ObjectPattern: "properties" + }, type); + } + isOptionalMemberExpression(expression) { + return expression.type === "OptionalMemberExpression"; + } + checkLVal(expression, { + in: ancestor, + binding = 64, + checkClashes = false, + strictModeChanged = false, + hasParenthesizedAncestor = false + }) { + var _expression$extra; + const type = expression.type; + if (this.isObjectMethod(expression)) return; + const isOptionalMemberExpression = this.isOptionalMemberExpression(expression); + if (isOptionalMemberExpression || type === "MemberExpression") { + if (isOptionalMemberExpression) { + this.expectPlugin("optionalChainingAssign", expression.loc.start); + if (ancestor.type !== "AssignmentExpression") { + this.raise(Errors.InvalidLhsOptionalChaining, { + at: expression, + ancestor + }); + } + } + if (binding !== 64) { + this.raise(Errors.InvalidPropertyBindingPattern, { + at: expression + }); + } + return; + } + if (type === "Identifier") { + this.checkIdentifier(expression, binding, strictModeChanged); + const { + name + } = expression; + if (checkClashes) { + if (checkClashes.has(name)) { + this.raise(Errors.ParamDupe, { + at: expression + }); + } else { + checkClashes.add(name); + } + } + return; + } + const validity = this.isValidLVal(type, !(hasParenthesizedAncestor || (_expression$extra = expression.extra) != null && _expression$extra.parenthesized) && ancestor.type === "AssignmentExpression", binding); + if (validity === true) return; + if (validity === false) { + const ParseErrorClass = binding === 64 ? Errors.InvalidLhs : Errors.InvalidLhsBinding; + this.raise(ParseErrorClass, { + at: expression, + ancestor + }); + return; + } + const [key, isParenthesizedExpression] = Array.isArray(validity) ? validity : [validity, type === "ParenthesizedExpression"]; + const nextAncestor = type === "ArrayPattern" || type === "ObjectPattern" ? { + type + } : ancestor; + for (const child of [].concat(expression[key])) { + if (child) { + this.checkLVal(child, { + in: nextAncestor, + binding, + checkClashes, + strictModeChanged, + hasParenthesizedAncestor: isParenthesizedExpression + }); + } + } + } + checkIdentifier(at, bindingType, strictModeChanged = false) { + if (this.state.strict && (strictModeChanged ? isStrictBindReservedWord(at.name, this.inModule) : isStrictBindOnlyReservedWord(at.name))) { + if (bindingType === 64) { + this.raise(Errors.StrictEvalArguments, { + at, + referenceName: at.name + }); + } else { + this.raise(Errors.StrictEvalArgumentsBinding, { + at, + bindingName: at.name + }); + } + } + if (bindingType & 8192 && at.name === "let") { + this.raise(Errors.LetInLexicalBinding, { + at + }); + } + if (!(bindingType & 64)) { + this.declareNameFromIdentifier(at, bindingType); + } + } + declareNameFromIdentifier(identifier, binding) { + this.scope.declareName(identifier.name, binding, identifier.loc.start); + } + checkToRestConversion(node, allowPattern) { + switch (node.type) { + case "ParenthesizedExpression": + this.checkToRestConversion(node.expression, allowPattern); + break; + case "Identifier": + case "MemberExpression": + break; + case "ArrayExpression": + case "ObjectExpression": + if (allowPattern) break; + default: + this.raise(Errors.InvalidRestAssignmentPattern, { + at: node + }); + } + } + checkCommaAfterRest(close) { + if (!this.match(12)) { + return false; + } + this.raise(this.lookaheadCharCode() === close ? Errors.RestTrailingComma : Errors.ElementAfterRest, { + at: this.state.startLoc + }); + return true; + } +} +const getOwn = (object, key) => Object.hasOwnProperty.call(object, key) && object[key]; +function nonNull(x) { + if (x == null) { + throw new Error(`Unexpected ${x} value.`); + } + return x; +} +function assert$1(x) { + if (!x) { + throw new Error("Assert fail"); + } +} +const TSErrors = ParseErrorEnum`typescript`({ + AbstractMethodHasImplementation: ({ + methodName + }) => `Method '${methodName}' cannot have an implementation because it is marked abstract.`, + AbstractPropertyHasInitializer: ({ + propertyName + }) => `Property '${propertyName}' cannot have an initializer because it is marked abstract.`, + AccesorCannotDeclareThisParameter: "'get' and 'set' accessors cannot declare 'this' parameters.", + AccesorCannotHaveTypeParameters: "An accessor cannot have type parameters.", + AccessorCannotBeOptional: "An 'accessor' property cannot be declared optional.", + ClassMethodHasDeclare: "Class methods cannot have the 'declare' modifier.", + ClassMethodHasReadonly: "Class methods cannot have the 'readonly' modifier.", + ConstInitiailizerMustBeStringOrNumericLiteralOrLiteralEnumReference: "A 'const' initializer in an ambient context must be a string or numeric literal or literal enum reference.", + ConstructorHasTypeParameters: "Type parameters cannot appear on a constructor declaration.", + DeclareAccessor: ({ + kind + }) => `'declare' is not allowed in ${kind}ters.`, + DeclareClassFieldHasInitializer: "Initializers are not allowed in ambient contexts.", + DeclareFunctionHasImplementation: "An implementation cannot be declared in ambient contexts.", + DuplicateAccessibilityModifier: ({ + modifier + }) => `Accessibility modifier already seen.`, + DuplicateModifier: ({ + modifier + }) => `Duplicate modifier: '${modifier}'.`, + EmptyHeritageClauseType: ({ + token + }) => `'${token}' list cannot be empty.`, + EmptyTypeArguments: "Type argument list cannot be empty.", + EmptyTypeParameters: "Type parameter list cannot be empty.", + ExpectedAmbientAfterExportDeclare: "'export declare' must be followed by an ambient declaration.", + ImportAliasHasImportType: "An import alias can not use 'import type'.", + ImportReflectionHasImportType: "An `import module` declaration can not use `type` modifier", + IncompatibleModifiers: ({ + modifiers + }) => `'${modifiers[0]}' modifier cannot be used with '${modifiers[1]}' modifier.`, + IndexSignatureHasAbstract: "Index signatures cannot have the 'abstract' modifier.", + IndexSignatureHasAccessibility: ({ + modifier + }) => `Index signatures cannot have an accessibility modifier ('${modifier}').`, + IndexSignatureHasDeclare: "Index signatures cannot have the 'declare' modifier.", + IndexSignatureHasOverride: "'override' modifier cannot appear on an index signature.", + IndexSignatureHasStatic: "Index signatures cannot have the 'static' modifier.", + InitializerNotAllowedInAmbientContext: "Initializers are not allowed in ambient contexts.", + InvalidModifierOnTypeMember: ({ + modifier + }) => `'${modifier}' modifier cannot appear on a type member.`, + InvalidModifierOnTypeParameter: ({ + modifier + }) => `'${modifier}' modifier cannot appear on a type parameter.`, + InvalidModifierOnTypeParameterPositions: ({ + modifier + }) => `'${modifier}' modifier can only appear on a type parameter of a class, interface or type alias.`, + InvalidModifiersOrder: ({ + orderedModifiers + }) => `'${orderedModifiers[0]}' modifier must precede '${orderedModifiers[1]}' modifier.`, + InvalidPropertyAccessAfterInstantiationExpression: "Invalid property access after an instantiation expression. " + "You can either wrap the instantiation expression in parentheses, or delete the type arguments.", + InvalidTupleMemberLabel: "Tuple members must be labeled with a simple identifier.", + MissingInterfaceName: "'interface' declarations must be followed by an identifier.", + NonAbstractClassHasAbstractMethod: "Abstract methods can only appear within an abstract class.", + NonClassMethodPropertyHasAbstractModifer: "'abstract' modifier can only appear on a class, method, or property declaration.", + OptionalTypeBeforeRequired: "A required element cannot follow an optional element.", + OverrideNotInSubClass: "This member cannot have an 'override' modifier because its containing class does not extend another class.", + PatternIsOptional: "A binding pattern parameter cannot be optional in an implementation signature.", + PrivateElementHasAbstract: "Private elements cannot have the 'abstract' modifier.", + PrivateElementHasAccessibility: ({ + modifier + }) => `Private elements cannot have an accessibility modifier ('${modifier}').`, + ReadonlyForMethodSignature: "'readonly' modifier can only appear on a property declaration or index signature.", + ReservedArrowTypeParam: "This syntax is reserved in files with the .mts or .cts extension. Add a trailing comma, as in `<T,>() => ...`.", + ReservedTypeAssertion: "This syntax is reserved in files with the .mts or .cts extension. Use an `as` expression instead.", + SetAccesorCannotHaveOptionalParameter: "A 'set' accessor cannot have an optional parameter.", + SetAccesorCannotHaveRestParameter: "A 'set' accessor cannot have rest parameter.", + SetAccesorCannotHaveReturnType: "A 'set' accessor cannot have a return type annotation.", + SingleTypeParameterWithoutTrailingComma: ({ + typeParameterName + }) => `Single type parameter ${typeParameterName} should have a trailing comma. Example usage: <${typeParameterName},>.`, + StaticBlockCannotHaveModifier: "Static class blocks cannot have any modifier.", + TupleOptionalAfterType: "A labeled tuple optional element must be declared using a question mark after the name and before the colon (`name?: type`), rather than after the type (`name: type?`).", + TypeAnnotationAfterAssign: "Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`.", + TypeImportCannotSpecifyDefaultAndNamed: "A type-only import can specify a default import or named bindings, but not both.", + TypeModifierIsUsedInTypeExports: "The 'type' modifier cannot be used on a named export when 'export type' is used on its export statement.", + TypeModifierIsUsedInTypeImports: "The 'type' modifier cannot be used on a named import when 'import type' is used on its import statement.", + UnexpectedParameterModifier: "A parameter property is only allowed in a constructor implementation.", + UnexpectedReadonly: "'readonly' type modifier is only permitted on array and tuple literal types.", + UnexpectedTypeAnnotation: "Did not expect a type annotation here.", + UnexpectedTypeCastInParameter: "Unexpected type cast in parameter position.", + UnsupportedImportTypeArgument: "Argument in a type import must be a string literal.", + UnsupportedParameterPropertyKind: "A parameter property may not be declared using a binding pattern.", + UnsupportedSignatureParameterKind: ({ + type + }) => `Name in a signature must be an Identifier, ObjectPattern or ArrayPattern, instead got ${type}.` +}); +function keywordTypeFromName(value) { + switch (value) { + case "any": + return "TSAnyKeyword"; + case "boolean": + return "TSBooleanKeyword"; + case "bigint": + return "TSBigIntKeyword"; + case "never": + return "TSNeverKeyword"; + case "number": + return "TSNumberKeyword"; + case "object": + return "TSObjectKeyword"; + case "string": + return "TSStringKeyword"; + case "symbol": + return "TSSymbolKeyword"; + case "undefined": + return "TSUndefinedKeyword"; + case "unknown": + return "TSUnknownKeyword"; + default: + return undefined; + } +} +function tsIsAccessModifier(modifier) { + return modifier === "private" || modifier === "public" || modifier === "protected"; +} +function tsIsVarianceAnnotations(modifier) { + return modifier === "in" || modifier === "out"; +} +var typescript$1 = superClass => class TypeScriptParserMixin extends superClass { + constructor(...args) { + super(...args); + this.tsParseInOutModifiers = this.tsParseModifiers.bind(this, { + allowedModifiers: ["in", "out"], + disallowedModifiers: ["const", "public", "private", "protected", "readonly", "declare", "abstract", "override"], + errorTemplate: TSErrors.InvalidModifierOnTypeParameter + }); + this.tsParseConstModifier = this.tsParseModifiers.bind(this, { + allowedModifiers: ["const"], + disallowedModifiers: ["in", "out"], + errorTemplate: TSErrors.InvalidModifierOnTypeParameterPositions + }); + this.tsParseInOutConstModifiers = this.tsParseModifiers.bind(this, { + allowedModifiers: ["in", "out", "const"], + disallowedModifiers: ["public", "private", "protected", "readonly", "declare", "abstract", "override"], + errorTemplate: TSErrors.InvalidModifierOnTypeParameter + }); + } + getScopeHandler() { + return TypeScriptScopeHandler; + } + tsIsIdentifier() { + return tokenIsIdentifier(this.state.type); + } + tsTokenCanFollowModifier() { + return (this.match(0) || this.match(5) || this.match(55) || this.match(21) || this.match(138) || this.isLiteralPropertyName()) && !this.hasPrecedingLineBreak(); + } + tsNextTokenCanFollowModifier() { + this.next(); + return this.tsTokenCanFollowModifier(); + } + tsParseModifier(allowedModifiers, stopOnStartOfClassStaticBlock) { + if (!tokenIsIdentifier(this.state.type) && this.state.type !== 58 && this.state.type !== 75) { + return undefined; + } + const modifier = this.state.value; + if (allowedModifiers.indexOf(modifier) !== -1) { + if (stopOnStartOfClassStaticBlock && this.tsIsStartOfStaticBlocks()) { + return undefined; + } + if (this.tsTryParse(this.tsNextTokenCanFollowModifier.bind(this))) { + return modifier; + } + } + return undefined; + } + tsParseModifiers({ + allowedModifiers, + disallowedModifiers, + stopOnStartOfClassStaticBlock, + errorTemplate = TSErrors.InvalidModifierOnTypeMember + }, modified) { + const enforceOrder = (loc, modifier, before, after) => { + if (modifier === before && modified[after]) { + this.raise(TSErrors.InvalidModifiersOrder, { + at: loc, + orderedModifiers: [before, after] + }); + } + }; + const incompatible = (loc, modifier, mod1, mod2) => { + if (modified[mod1] && modifier === mod2 || modified[mod2] && modifier === mod1) { + this.raise(TSErrors.IncompatibleModifiers, { + at: loc, + modifiers: [mod1, mod2] + }); + } + }; + for (;;) { + const { + startLoc + } = this.state; + const modifier = this.tsParseModifier(allowedModifiers.concat(disallowedModifiers != null ? disallowedModifiers : []), stopOnStartOfClassStaticBlock); + if (!modifier) break; + if (tsIsAccessModifier(modifier)) { + if (modified.accessibility) { + this.raise(TSErrors.DuplicateAccessibilityModifier, { + at: startLoc, + modifier + }); + } else { + enforceOrder(startLoc, modifier, modifier, "override"); + enforceOrder(startLoc, modifier, modifier, "static"); + enforceOrder(startLoc, modifier, modifier, "readonly"); + modified.accessibility = modifier; + } + } else if (tsIsVarianceAnnotations(modifier)) { + if (modified[modifier]) { + this.raise(TSErrors.DuplicateModifier, { + at: startLoc, + modifier + }); + } + modified[modifier] = true; + enforceOrder(startLoc, modifier, "in", "out"); + } else { + if (Object.hasOwnProperty.call(modified, modifier)) { + this.raise(TSErrors.DuplicateModifier, { + at: startLoc, + modifier + }); + } else { + enforceOrder(startLoc, modifier, "static", "readonly"); + enforceOrder(startLoc, modifier, "static", "override"); + enforceOrder(startLoc, modifier, "override", "readonly"); + enforceOrder(startLoc, modifier, "abstract", "override"); + incompatible(startLoc, modifier, "declare", "override"); + incompatible(startLoc, modifier, "static", "abstract"); + } + modified[modifier] = true; + } + if (disallowedModifiers != null && disallowedModifiers.includes(modifier)) { + this.raise(errorTemplate, { + at: startLoc, + modifier + }); + } + } + } + tsIsListTerminator(kind) { + switch (kind) { + case "EnumMembers": + case "TypeMembers": + return this.match(8); + case "HeritageClauseElement": + return this.match(5); + case "TupleElementTypes": + return this.match(3); + case "TypeParametersOrArguments": + return this.match(48); + } + } + tsParseList(kind, parseElement) { + const result = []; + while (!this.tsIsListTerminator(kind)) { + result.push(parseElement()); + } + return result; + } + tsParseDelimitedList(kind, parseElement, refTrailingCommaPos) { + return nonNull(this.tsParseDelimitedListWorker(kind, parseElement, true, refTrailingCommaPos)); + } + tsParseDelimitedListWorker(kind, parseElement, expectSuccess, refTrailingCommaPos) { + const result = []; + let trailingCommaPos = -1; + for (;;) { + if (this.tsIsListTerminator(kind)) { + break; + } + trailingCommaPos = -1; + const element = parseElement(); + if (element == null) { + return undefined; + } + result.push(element); + if (this.eat(12)) { + trailingCommaPos = this.state.lastTokStart; + continue; + } + if (this.tsIsListTerminator(kind)) { + break; + } + if (expectSuccess) { + this.expect(12); + } + return undefined; + } + if (refTrailingCommaPos) { + refTrailingCommaPos.value = trailingCommaPos; + } + return result; + } + tsParseBracketedList(kind, parseElement, bracket, skipFirstToken, refTrailingCommaPos) { + if (!skipFirstToken) { + if (bracket) { + this.expect(0); + } else { + this.expect(47); + } + } + const result = this.tsParseDelimitedList(kind, parseElement, refTrailingCommaPos); + if (bracket) { + this.expect(3); + } else { + this.expect(48); + } + return result; + } + tsParseImportType() { + const node = this.startNode(); + this.expect(83); + this.expect(10); + if (!this.match(133)) { + this.raise(TSErrors.UnsupportedImportTypeArgument, { + at: this.state.startLoc + }); + } + node.argument = super.parseExprAtom(); + this.expect(11); + if (this.eat(16)) { + node.qualifier = this.tsParseEntityName(); + } + if (this.match(47)) { + node.typeParameters = this.tsParseTypeArguments(); + } + return this.finishNode(node, "TSImportType"); + } + tsParseEntityName(allowReservedWords = true) { + let entity = this.parseIdentifier(allowReservedWords); + while (this.eat(16)) { + const node = this.startNodeAtNode(entity); + node.left = entity; + node.right = this.parseIdentifier(allowReservedWords); + entity = this.finishNode(node, "TSQualifiedName"); + } + return entity; + } + tsParseTypeReference() { + const node = this.startNode(); + node.typeName = this.tsParseEntityName(); + if (!this.hasPrecedingLineBreak() && this.match(47)) { + node.typeParameters = this.tsParseTypeArguments(); + } + return this.finishNode(node, "TSTypeReference"); + } + tsParseThisTypePredicate(lhs) { + this.next(); + const node = this.startNodeAtNode(lhs); + node.parameterName = lhs; + node.typeAnnotation = this.tsParseTypeAnnotation(false); + node.asserts = false; + return this.finishNode(node, "TSTypePredicate"); + } + tsParseThisTypeNode() { + const node = this.startNode(); + this.next(); + return this.finishNode(node, "TSThisType"); + } + tsParseTypeQuery() { + const node = this.startNode(); + this.expect(87); + if (this.match(83)) { + node.exprName = this.tsParseImportType(); + } else { + node.exprName = this.tsParseEntityName(); + } + if (!this.hasPrecedingLineBreak() && this.match(47)) { + node.typeParameters = this.tsParseTypeArguments(); + } + return this.finishNode(node, "TSTypeQuery"); + } + tsParseTypeParameter(parseModifiers) { + const node = this.startNode(); + parseModifiers(node); + node.name = this.tsParseTypeParameterName(); + node.constraint = this.tsEatThenParseType(81); + node.default = this.tsEatThenParseType(29); + return this.finishNode(node, "TSTypeParameter"); + } + tsTryParseTypeParameters(parseModifiers) { + if (this.match(47)) { + return this.tsParseTypeParameters(parseModifiers); + } + } + tsParseTypeParameters(parseModifiers) { + const node = this.startNode(); + if (this.match(47) || this.match(142)) { + this.next(); + } else { + this.unexpected(); + } + const refTrailingCommaPos = { + value: -1 + }; + node.params = this.tsParseBracketedList("TypeParametersOrArguments", this.tsParseTypeParameter.bind(this, parseModifiers), false, true, refTrailingCommaPos); + if (node.params.length === 0) { + this.raise(TSErrors.EmptyTypeParameters, { + at: node + }); + } + if (refTrailingCommaPos.value !== -1) { + this.addExtra(node, "trailingComma", refTrailingCommaPos.value); + } + return this.finishNode(node, "TSTypeParameterDeclaration"); + } + tsFillSignature(returnToken, signature) { + const returnTokenRequired = returnToken === 19; + const paramsKey = "parameters"; + const returnTypeKey = "typeAnnotation"; + signature.typeParameters = this.tsTryParseTypeParameters(this.tsParseConstModifier); + this.expect(10); + signature[paramsKey] = this.tsParseBindingListForSignature(); + if (returnTokenRequired) { + signature[returnTypeKey] = this.tsParseTypeOrTypePredicateAnnotation(returnToken); + } else if (this.match(returnToken)) { + signature[returnTypeKey] = this.tsParseTypeOrTypePredicateAnnotation(returnToken); + } + } + tsParseBindingListForSignature() { + const list = super.parseBindingList(11, 41, 2); + for (const pattern of list) { + const { + type + } = pattern; + if (type === "AssignmentPattern" || type === "TSParameterProperty") { + this.raise(TSErrors.UnsupportedSignatureParameterKind, { + at: pattern, + type + }); + } + } + return list; + } + tsParseTypeMemberSemicolon() { + if (!this.eat(12) && !this.isLineTerminator()) { + this.expect(13); + } + } + tsParseSignatureMember(kind, node) { + this.tsFillSignature(14, node); + this.tsParseTypeMemberSemicolon(); + return this.finishNode(node, kind); + } + tsIsUnambiguouslyIndexSignature() { + this.next(); + if (tokenIsIdentifier(this.state.type)) { + this.next(); + return this.match(14); + } + return false; + } + tsTryParseIndexSignature(node) { + if (!(this.match(0) && this.tsLookAhead(this.tsIsUnambiguouslyIndexSignature.bind(this)))) { + return; + } + this.expect(0); + const id = this.parseIdentifier(); + id.typeAnnotation = this.tsParseTypeAnnotation(); + this.resetEndLocation(id); + this.expect(3); + node.parameters = [id]; + const type = this.tsTryParseTypeAnnotation(); + if (type) node.typeAnnotation = type; + this.tsParseTypeMemberSemicolon(); + return this.finishNode(node, "TSIndexSignature"); + } + tsParsePropertyOrMethodSignature(node, readonly) { + if (this.eat(17)) node.optional = true; + const nodeAny = node; + if (this.match(10) || this.match(47)) { + if (readonly) { + this.raise(TSErrors.ReadonlyForMethodSignature, { + at: node + }); + } + const method = nodeAny; + if (method.kind && this.match(47)) { + this.raise(TSErrors.AccesorCannotHaveTypeParameters, { + at: this.state.curPosition() + }); + } + this.tsFillSignature(14, method); + this.tsParseTypeMemberSemicolon(); + const paramsKey = "parameters"; + const returnTypeKey = "typeAnnotation"; + if (method.kind === "get") { + if (method[paramsKey].length > 0) { + this.raise(Errors.BadGetterArity, { + at: this.state.curPosition() + }); + if (this.isThisParam(method[paramsKey][0])) { + this.raise(TSErrors.AccesorCannotDeclareThisParameter, { + at: this.state.curPosition() + }); + } + } + } else if (method.kind === "set") { + if (method[paramsKey].length !== 1) { + this.raise(Errors.BadSetterArity, { + at: this.state.curPosition() + }); + } else { + const firstParameter = method[paramsKey][0]; + if (this.isThisParam(firstParameter)) { + this.raise(TSErrors.AccesorCannotDeclareThisParameter, { + at: this.state.curPosition() + }); + } + if (firstParameter.type === "Identifier" && firstParameter.optional) { + this.raise(TSErrors.SetAccesorCannotHaveOptionalParameter, { + at: this.state.curPosition() + }); + } + if (firstParameter.type === "RestElement") { + this.raise(TSErrors.SetAccesorCannotHaveRestParameter, { + at: this.state.curPosition() + }); + } + } + if (method[returnTypeKey]) { + this.raise(TSErrors.SetAccesorCannotHaveReturnType, { + at: method[returnTypeKey] + }); + } + } else { + method.kind = "method"; + } + return this.finishNode(method, "TSMethodSignature"); + } else { + const property = nodeAny; + if (readonly) property.readonly = true; + const type = this.tsTryParseTypeAnnotation(); + if (type) property.typeAnnotation = type; + this.tsParseTypeMemberSemicolon(); + return this.finishNode(property, "TSPropertySignature"); + } + } + tsParseTypeMember() { + const node = this.startNode(); + if (this.match(10) || this.match(47)) { + return this.tsParseSignatureMember("TSCallSignatureDeclaration", node); + } + if (this.match(77)) { + const id = this.startNode(); + this.next(); + if (this.match(10) || this.match(47)) { + return this.tsParseSignatureMember("TSConstructSignatureDeclaration", node); + } else { + node.key = this.createIdentifier(id, "new"); + return this.tsParsePropertyOrMethodSignature(node, false); + } + } + this.tsParseModifiers({ + allowedModifiers: ["readonly"], + disallowedModifiers: ["declare", "abstract", "private", "protected", "public", "static", "override"] + }, node); + const idx = this.tsTryParseIndexSignature(node); + if (idx) { + return idx; + } + super.parsePropertyName(node); + if (!node.computed && node.key.type === "Identifier" && (node.key.name === "get" || node.key.name === "set") && this.tsTokenCanFollowModifier()) { + node.kind = node.key.name; + super.parsePropertyName(node); + } + return this.tsParsePropertyOrMethodSignature(node, !!node.readonly); + } + tsParseTypeLiteral() { + const node = this.startNode(); + node.members = this.tsParseObjectTypeMembers(); + return this.finishNode(node, "TSTypeLiteral"); + } + tsParseObjectTypeMembers() { + this.expect(5); + const members = this.tsParseList("TypeMembers", this.tsParseTypeMember.bind(this)); + this.expect(8); + return members; + } + tsIsStartOfMappedType() { + this.next(); + if (this.eat(53)) { + return this.isContextual(122); + } + if (this.isContextual(122)) { + this.next(); + } + if (!this.match(0)) { + return false; + } + this.next(); + if (!this.tsIsIdentifier()) { + return false; + } + this.next(); + return this.match(58); + } + tsParseMappedTypeParameter() { + const node = this.startNode(); + node.name = this.tsParseTypeParameterName(); + node.constraint = this.tsExpectThenParseType(58); + return this.finishNode(node, "TSTypeParameter"); + } + tsParseMappedType() { + const node = this.startNode(); + this.expect(5); + if (this.match(53)) { + node.readonly = this.state.value; + this.next(); + this.expectContextual(122); + } else if (this.eatContextual(122)) { + node.readonly = true; + } + this.expect(0); + node.typeParameter = this.tsParseMappedTypeParameter(); + node.nameType = this.eatContextual(93) ? this.tsParseType() : null; + this.expect(3); + if (this.match(53)) { + node.optional = this.state.value; + this.next(); + this.expect(17); + } else if (this.eat(17)) { + node.optional = true; + } + node.typeAnnotation = this.tsTryParseType(); + this.semicolon(); + this.expect(8); + return this.finishNode(node, "TSMappedType"); + } + tsParseTupleType() { + const node = this.startNode(); + node.elementTypes = this.tsParseBracketedList("TupleElementTypes", this.tsParseTupleElementType.bind(this), true, false); + let seenOptionalElement = false; + node.elementTypes.forEach(elementNode => { + const { + type + } = elementNode; + if (seenOptionalElement && type !== "TSRestType" && type !== "TSOptionalType" && !(type === "TSNamedTupleMember" && elementNode.optional)) { + this.raise(TSErrors.OptionalTypeBeforeRequired, { + at: elementNode + }); + } + seenOptionalElement || (seenOptionalElement = type === "TSNamedTupleMember" && elementNode.optional || type === "TSOptionalType"); + }); + return this.finishNode(node, "TSTupleType"); + } + tsParseTupleElementType() { + const { + startLoc + } = this.state; + const rest = this.eat(21); + let labeled; + let label; + let optional; + let type; + const isWord = tokenIsKeywordOrIdentifier(this.state.type); + const chAfterWord = isWord ? this.lookaheadCharCode() : null; + if (chAfterWord === 58) { + labeled = true; + optional = false; + label = this.parseIdentifier(true); + this.expect(14); + type = this.tsParseType(); + } else if (chAfterWord === 63) { + optional = true; + const startLoc = this.state.startLoc; + const wordName = this.state.value; + const typeOrLabel = this.tsParseNonArrayType(); + if (this.lookaheadCharCode() === 58) { + labeled = true; + label = this.createIdentifier(this.startNodeAt(startLoc), wordName); + this.expect(17); + this.expect(14); + type = this.tsParseType(); + } else { + labeled = false; + type = typeOrLabel; + this.expect(17); + } + } else { + type = this.tsParseType(); + optional = this.eat(17); + labeled = this.eat(14); + } + if (labeled) { + let labeledNode; + if (label) { + labeledNode = this.startNodeAtNode(label); + labeledNode.optional = optional; + labeledNode.label = label; + labeledNode.elementType = type; + if (this.eat(17)) { + labeledNode.optional = true; + this.raise(TSErrors.TupleOptionalAfterType, { + at: this.state.lastTokStartLoc + }); + } + } else { + labeledNode = this.startNodeAtNode(type); + labeledNode.optional = optional; + this.raise(TSErrors.InvalidTupleMemberLabel, { + at: type + }); + labeledNode.label = type; + labeledNode.elementType = this.tsParseType(); + } + type = this.finishNode(labeledNode, "TSNamedTupleMember"); + } else if (optional) { + const optionalTypeNode = this.startNodeAtNode(type); + optionalTypeNode.typeAnnotation = type; + type = this.finishNode(optionalTypeNode, "TSOptionalType"); + } + if (rest) { + const restNode = this.startNodeAt(startLoc); + restNode.typeAnnotation = type; + type = this.finishNode(restNode, "TSRestType"); + } + return type; + } + tsParseParenthesizedType() { + const node = this.startNode(); + this.expect(10); + node.typeAnnotation = this.tsParseType(); + this.expect(11); + return this.finishNode(node, "TSParenthesizedType"); + } + tsParseFunctionOrConstructorType(type, abstract) { + const node = this.startNode(); + if (type === "TSConstructorType") { + node.abstract = !!abstract; + if (abstract) this.next(); + this.next(); + } + this.tsInAllowConditionalTypesContext(() => this.tsFillSignature(19, node)); + return this.finishNode(node, type); + } + tsParseLiteralTypeNode() { + const node = this.startNode(); + switch (this.state.type) { + case 134: + case 135: + case 133: + case 85: + case 86: + node.literal = super.parseExprAtom(); + break; + default: + this.unexpected(); + } + return this.finishNode(node, "TSLiteralType"); + } + tsParseTemplateLiteralType() { + const node = this.startNode(); + node.literal = super.parseTemplate(false); + return this.finishNode(node, "TSLiteralType"); + } + parseTemplateSubstitution() { + if (this.state.inType) return this.tsParseType(); + return super.parseTemplateSubstitution(); + } + tsParseThisTypeOrThisTypePredicate() { + const thisKeyword = this.tsParseThisTypeNode(); + if (this.isContextual(116) && !this.hasPrecedingLineBreak()) { + return this.tsParseThisTypePredicate(thisKeyword); + } else { + return thisKeyword; + } + } + tsParseNonArrayType() { + switch (this.state.type) { + case 133: + case 134: + case 135: + case 85: + case 86: + return this.tsParseLiteralTypeNode(); + case 53: + if (this.state.value === "-") { + const node = this.startNode(); + const nextToken = this.lookahead(); + if (nextToken.type !== 134 && nextToken.type !== 135) { + this.unexpected(); + } + node.literal = this.parseMaybeUnary(); + return this.finishNode(node, "TSLiteralType"); + } + break; + case 78: + return this.tsParseThisTypeOrThisTypePredicate(); + case 87: + return this.tsParseTypeQuery(); + case 83: + return this.tsParseImportType(); + case 5: + return this.tsLookAhead(this.tsIsStartOfMappedType.bind(this)) ? this.tsParseMappedType() : this.tsParseTypeLiteral(); + case 0: + return this.tsParseTupleType(); + case 10: + return this.tsParseParenthesizedType(); + case 25: + case 24: + return this.tsParseTemplateLiteralType(); + default: + { + const { + type + } = this.state; + if (tokenIsIdentifier(type) || type === 88 || type === 84) { + const nodeType = type === 88 ? "TSVoidKeyword" : type === 84 ? "TSNullKeyword" : keywordTypeFromName(this.state.value); + if (nodeType !== undefined && this.lookaheadCharCode() !== 46) { + const node = this.startNode(); + this.next(); + return this.finishNode(node, nodeType); + } + return this.tsParseTypeReference(); + } + } + } + this.unexpected(); + } + tsParseArrayTypeOrHigher() { + let type = this.tsParseNonArrayType(); + while (!this.hasPrecedingLineBreak() && this.eat(0)) { + if (this.match(3)) { + const node = this.startNodeAtNode(type); + node.elementType = type; + this.expect(3); + type = this.finishNode(node, "TSArrayType"); + } else { + const node = this.startNodeAtNode(type); + node.objectType = type; + node.indexType = this.tsParseType(); + this.expect(3); + type = this.finishNode(node, "TSIndexedAccessType"); + } + } + return type; + } + tsParseTypeOperator() { + const node = this.startNode(); + const operator = this.state.value; + this.next(); + node.operator = operator; + node.typeAnnotation = this.tsParseTypeOperatorOrHigher(); + if (operator === "readonly") { + this.tsCheckTypeAnnotationForReadOnly(node); + } + return this.finishNode(node, "TSTypeOperator"); + } + tsCheckTypeAnnotationForReadOnly(node) { + switch (node.typeAnnotation.type) { + case "TSTupleType": + case "TSArrayType": + return; + default: + this.raise(TSErrors.UnexpectedReadonly, { + at: node + }); + } + } + tsParseInferType() { + const node = this.startNode(); + this.expectContextual(115); + const typeParameter = this.startNode(); + typeParameter.name = this.tsParseTypeParameterName(); + typeParameter.constraint = this.tsTryParse(() => this.tsParseConstraintForInferType()); + node.typeParameter = this.finishNode(typeParameter, "TSTypeParameter"); + return this.finishNode(node, "TSInferType"); + } + tsParseConstraintForInferType() { + if (this.eat(81)) { + const constraint = this.tsInDisallowConditionalTypesContext(() => this.tsParseType()); + if (this.state.inDisallowConditionalTypesContext || !this.match(17)) { + return constraint; + } + } + } + tsParseTypeOperatorOrHigher() { + const isTypeOperator = tokenIsTSTypeOperator(this.state.type) && !this.state.containsEsc; + return isTypeOperator ? this.tsParseTypeOperator() : this.isContextual(115) ? this.tsParseInferType() : this.tsInAllowConditionalTypesContext(() => this.tsParseArrayTypeOrHigher()); + } + tsParseUnionOrIntersectionType(kind, parseConstituentType, operator) { + const node = this.startNode(); + const hasLeadingOperator = this.eat(operator); + const types = []; + do { + types.push(parseConstituentType()); + } while (this.eat(operator)); + if (types.length === 1 && !hasLeadingOperator) { + return types[0]; + } + node.types = types; + return this.finishNode(node, kind); + } + tsParseIntersectionTypeOrHigher() { + return this.tsParseUnionOrIntersectionType("TSIntersectionType", this.tsParseTypeOperatorOrHigher.bind(this), 45); + } + tsParseUnionTypeOrHigher() { + return this.tsParseUnionOrIntersectionType("TSUnionType", this.tsParseIntersectionTypeOrHigher.bind(this), 43); + } + tsIsStartOfFunctionType() { + if (this.match(47)) { + return true; + } + return this.match(10) && this.tsLookAhead(this.tsIsUnambiguouslyStartOfFunctionType.bind(this)); + } + tsSkipParameterStart() { + if (tokenIsIdentifier(this.state.type) || this.match(78)) { + this.next(); + return true; + } + if (this.match(5)) { + const { + errors + } = this.state; + const previousErrorCount = errors.length; + try { + this.parseObjectLike(8, true); + return errors.length === previousErrorCount; + } catch (_unused) { + return false; + } + } + if (this.match(0)) { + this.next(); + const { + errors + } = this.state; + const previousErrorCount = errors.length; + try { + super.parseBindingList(3, 93, 1); + return errors.length === previousErrorCount; + } catch (_unused2) { + return false; + } + } + return false; + } + tsIsUnambiguouslyStartOfFunctionType() { + this.next(); + if (this.match(11) || this.match(21)) { + return true; + } + if (this.tsSkipParameterStart()) { + if (this.match(14) || this.match(12) || this.match(17) || this.match(29)) { + return true; + } + if (this.match(11)) { + this.next(); + if (this.match(19)) { + return true; + } + } + } + return false; + } + tsParseTypeOrTypePredicateAnnotation(returnToken) { + return this.tsInType(() => { + const t = this.startNode(); + this.expect(returnToken); + const node = this.startNode(); + const asserts = !!this.tsTryParse(this.tsParseTypePredicateAsserts.bind(this)); + if (asserts && this.match(78)) { + let thisTypePredicate = this.tsParseThisTypeOrThisTypePredicate(); + if (thisTypePredicate.type === "TSThisType") { + node.parameterName = thisTypePredicate; + node.asserts = true; + node.typeAnnotation = null; + thisTypePredicate = this.finishNode(node, "TSTypePredicate"); + } else { + this.resetStartLocationFromNode(thisTypePredicate, node); + thisTypePredicate.asserts = true; + } + t.typeAnnotation = thisTypePredicate; + return this.finishNode(t, "TSTypeAnnotation"); + } + const typePredicateVariable = this.tsIsIdentifier() && this.tsTryParse(this.tsParseTypePredicatePrefix.bind(this)); + if (!typePredicateVariable) { + if (!asserts) { + return this.tsParseTypeAnnotation(false, t); + } + node.parameterName = this.parseIdentifier(); + node.asserts = asserts; + node.typeAnnotation = null; + t.typeAnnotation = this.finishNode(node, "TSTypePredicate"); + return this.finishNode(t, "TSTypeAnnotation"); + } + const type = this.tsParseTypeAnnotation(false); + node.parameterName = typePredicateVariable; + node.typeAnnotation = type; + node.asserts = asserts; + t.typeAnnotation = this.finishNode(node, "TSTypePredicate"); + return this.finishNode(t, "TSTypeAnnotation"); + }); + } + tsTryParseTypeOrTypePredicateAnnotation() { + if (this.match(14)) { + return this.tsParseTypeOrTypePredicateAnnotation(14); + } + } + tsTryParseTypeAnnotation() { + if (this.match(14)) { + return this.tsParseTypeAnnotation(); + } + } + tsTryParseType() { + return this.tsEatThenParseType(14); + } + tsParseTypePredicatePrefix() { + const id = this.parseIdentifier(); + if (this.isContextual(116) && !this.hasPrecedingLineBreak()) { + this.next(); + return id; + } + } + tsParseTypePredicateAsserts() { + if (this.state.type !== 109) { + return false; + } + const containsEsc = this.state.containsEsc; + this.next(); + if (!tokenIsIdentifier(this.state.type) && !this.match(78)) { + return false; + } + if (containsEsc) { + this.raise(Errors.InvalidEscapedReservedWord, { + at: this.state.lastTokStartLoc, + reservedWord: "asserts" + }); + } + return true; + } + tsParseTypeAnnotation(eatColon = true, t = this.startNode()) { + this.tsInType(() => { + if (eatColon) this.expect(14); + t.typeAnnotation = this.tsParseType(); + }); + return this.finishNode(t, "TSTypeAnnotation"); + } + tsParseType() { + assert$1(this.state.inType); + const type = this.tsParseNonConditionalType(); + if (this.state.inDisallowConditionalTypesContext || this.hasPrecedingLineBreak() || !this.eat(81)) { + return type; + } + const node = this.startNodeAtNode(type); + node.checkType = type; + node.extendsType = this.tsInDisallowConditionalTypesContext(() => this.tsParseNonConditionalType()); + this.expect(17); + node.trueType = this.tsInAllowConditionalTypesContext(() => this.tsParseType()); + this.expect(14); + node.falseType = this.tsInAllowConditionalTypesContext(() => this.tsParseType()); + return this.finishNode(node, "TSConditionalType"); + } + isAbstractConstructorSignature() { + return this.isContextual(124) && this.lookahead().type === 77; + } + tsParseNonConditionalType() { + if (this.tsIsStartOfFunctionType()) { + return this.tsParseFunctionOrConstructorType("TSFunctionType"); + } + if (this.match(77)) { + return this.tsParseFunctionOrConstructorType("TSConstructorType"); + } else if (this.isAbstractConstructorSignature()) { + return this.tsParseFunctionOrConstructorType("TSConstructorType", true); + } + return this.tsParseUnionTypeOrHigher(); + } + tsParseTypeAssertion() { + if (this.getPluginOption("typescript", "disallowAmbiguousJSXLike")) { + this.raise(TSErrors.ReservedTypeAssertion, { + at: this.state.startLoc + }); + } + const node = this.startNode(); + node.typeAnnotation = this.tsInType(() => { + this.next(); + return this.match(75) ? this.tsParseTypeReference() : this.tsParseType(); + }); + this.expect(48); + node.expression = this.parseMaybeUnary(); + return this.finishNode(node, "TSTypeAssertion"); + } + tsParseHeritageClause(token) { + const originalStartLoc = this.state.startLoc; + const delimitedList = this.tsParseDelimitedList("HeritageClauseElement", () => { + const node = this.startNode(); + node.expression = this.tsParseEntityName(); + if (this.match(47)) { + node.typeParameters = this.tsParseTypeArguments(); + } + return this.finishNode(node, "TSExpressionWithTypeArguments"); + }); + if (!delimitedList.length) { + this.raise(TSErrors.EmptyHeritageClauseType, { + at: originalStartLoc, + token + }); + } + return delimitedList; + } + tsParseInterfaceDeclaration(node, properties = {}) { + if (this.hasFollowingLineBreak()) return null; + this.expectContextual(129); + if (properties.declare) node.declare = true; + if (tokenIsIdentifier(this.state.type)) { + node.id = this.parseIdentifier(); + this.checkIdentifier(node.id, 130); + } else { + node.id = null; + this.raise(TSErrors.MissingInterfaceName, { + at: this.state.startLoc + }); + } + node.typeParameters = this.tsTryParseTypeParameters(this.tsParseInOutConstModifiers); + if (this.eat(81)) { + node.extends = this.tsParseHeritageClause("extends"); + } + const body = this.startNode(); + body.body = this.tsInType(this.tsParseObjectTypeMembers.bind(this)); + node.body = this.finishNode(body, "TSInterfaceBody"); + return this.finishNode(node, "TSInterfaceDeclaration"); + } + tsParseTypeAliasDeclaration(node) { + node.id = this.parseIdentifier(); + this.checkIdentifier(node.id, 2); + node.typeAnnotation = this.tsInType(() => { + node.typeParameters = this.tsTryParseTypeParameters(this.tsParseInOutModifiers); + this.expect(29); + if (this.isContextual(114) && this.lookahead().type !== 16) { + const node = this.startNode(); + this.next(); + return this.finishNode(node, "TSIntrinsicKeyword"); + } + return this.tsParseType(); + }); + this.semicolon(); + return this.finishNode(node, "TSTypeAliasDeclaration"); + } + tsInNoContext(cb) { + const oldContext = this.state.context; + this.state.context = [oldContext[0]]; + try { + return cb(); + } finally { + this.state.context = oldContext; + } + } + tsInType(cb) { + const oldInType = this.state.inType; + this.state.inType = true; + try { + return cb(); + } finally { + this.state.inType = oldInType; + } + } + tsInDisallowConditionalTypesContext(cb) { + const oldInDisallowConditionalTypesContext = this.state.inDisallowConditionalTypesContext; + this.state.inDisallowConditionalTypesContext = true; + try { + return cb(); + } finally { + this.state.inDisallowConditionalTypesContext = oldInDisallowConditionalTypesContext; + } + } + tsInAllowConditionalTypesContext(cb) { + const oldInDisallowConditionalTypesContext = this.state.inDisallowConditionalTypesContext; + this.state.inDisallowConditionalTypesContext = false; + try { + return cb(); + } finally { + this.state.inDisallowConditionalTypesContext = oldInDisallowConditionalTypesContext; + } + } + tsEatThenParseType(token) { + if (this.match(token)) { + return this.tsNextThenParseType(); + } + } + tsExpectThenParseType(token) { + return this.tsInType(() => { + this.expect(token); + return this.tsParseType(); + }); + } + tsNextThenParseType() { + return this.tsInType(() => { + this.next(); + return this.tsParseType(); + }); + } + tsParseEnumMember() { + const node = this.startNode(); + node.id = this.match(133) ? super.parseStringLiteral(this.state.value) : this.parseIdentifier(true); + if (this.eat(29)) { + node.initializer = super.parseMaybeAssignAllowIn(); + } + return this.finishNode(node, "TSEnumMember"); + } + tsParseEnumDeclaration(node, properties = {}) { + if (properties.const) node.const = true; + if (properties.declare) node.declare = true; + this.expectContextual(126); + node.id = this.parseIdentifier(); + this.checkIdentifier(node.id, node.const ? 8971 : 8459); + this.expect(5); + node.members = this.tsParseDelimitedList("EnumMembers", this.tsParseEnumMember.bind(this)); + this.expect(8); + return this.finishNode(node, "TSEnumDeclaration"); + } + tsParseModuleBlock() { + const node = this.startNode(); + this.scope.enter(0); + this.expect(5); + super.parseBlockOrModuleBlockBody(node.body = [], undefined, true, 8); + this.scope.exit(); + return this.finishNode(node, "TSModuleBlock"); + } + tsParseModuleOrNamespaceDeclaration(node, nested = false) { + node.id = this.parseIdentifier(); + if (!nested) { + this.checkIdentifier(node.id, 1024); + } + if (this.eat(16)) { + const inner = this.startNode(); + this.tsParseModuleOrNamespaceDeclaration(inner, true); + node.body = inner; + } else { + this.scope.enter(256); + this.prodParam.enter(0); + node.body = this.tsParseModuleBlock(); + this.prodParam.exit(); + this.scope.exit(); + } + return this.finishNode(node, "TSModuleDeclaration"); + } + tsParseAmbientExternalModuleDeclaration(node) { + if (this.isContextual(112)) { + node.global = true; + node.id = this.parseIdentifier(); + } else if (this.match(133)) { + node.id = super.parseStringLiteral(this.state.value); + } else { + this.unexpected(); + } + if (this.match(5)) { + this.scope.enter(256); + this.prodParam.enter(0); + node.body = this.tsParseModuleBlock(); + this.prodParam.exit(); + this.scope.exit(); + } else { + this.semicolon(); + } + return this.finishNode(node, "TSModuleDeclaration"); + } + tsParseImportEqualsDeclaration(node, maybeDefaultIdentifier, isExport) { + node.isExport = isExport || false; + node.id = maybeDefaultIdentifier || this.parseIdentifier(); + this.checkIdentifier(node.id, 4096); + this.expect(29); + const moduleReference = this.tsParseModuleReference(); + if (node.importKind === "type" && moduleReference.type !== "TSExternalModuleReference") { + this.raise(TSErrors.ImportAliasHasImportType, { + at: moduleReference + }); + } + node.moduleReference = moduleReference; + this.semicolon(); + return this.finishNode(node, "TSImportEqualsDeclaration"); + } + tsIsExternalModuleReference() { + return this.isContextual(119) && this.lookaheadCharCode() === 40; + } + tsParseModuleReference() { + return this.tsIsExternalModuleReference() ? this.tsParseExternalModuleReference() : this.tsParseEntityName(false); + } + tsParseExternalModuleReference() { + const node = this.startNode(); + this.expectContextual(119); + this.expect(10); + if (!this.match(133)) { + this.unexpected(); + } + node.expression = super.parseExprAtom(); + this.expect(11); + this.sawUnambiguousESM = true; + return this.finishNode(node, "TSExternalModuleReference"); + } + tsLookAhead(f) { + const state = this.state.clone(); + const res = f(); + this.state = state; + return res; + } + tsTryParseAndCatch(f) { + const result = this.tryParse(abort => f() || abort()); + if (result.aborted || !result.node) return; + if (result.error) this.state = result.failState; + return result.node; + } + tsTryParse(f) { + const state = this.state.clone(); + const result = f(); + if (result !== undefined && result !== false) { + return result; + } + this.state = state; + } + tsTryParseDeclare(nany) { + if (this.isLineTerminator()) { + return; + } + let startType = this.state.type; + let kind; + if (this.isContextual(100)) { + startType = 74; + kind = "let"; + } + return this.tsInAmbientContext(() => { + switch (startType) { + case 68: + nany.declare = true; + return super.parseFunctionStatement(nany, false, false); + case 80: + nany.declare = true; + return this.parseClass(nany, true, false); + case 126: + return this.tsParseEnumDeclaration(nany, { + declare: true + }); + case 112: + return this.tsParseAmbientExternalModuleDeclaration(nany); + case 75: + case 74: + if (!this.match(75) || !this.isLookaheadContextual("enum")) { + nany.declare = true; + return this.parseVarStatement(nany, kind || this.state.value, true); + } + this.expect(75); + return this.tsParseEnumDeclaration(nany, { + const: true, + declare: true + }); + case 129: + { + const result = this.tsParseInterfaceDeclaration(nany, { + declare: true + }); + if (result) return result; + } + default: + if (tokenIsIdentifier(startType)) { + return this.tsParseDeclaration(nany, this.state.value, true, null); + } + } + }); + } + tsTryParseExportDeclaration() { + return this.tsParseDeclaration(this.startNode(), this.state.value, true, null); + } + tsParseExpressionStatement(node, expr, decorators) { + switch (expr.name) { + case "declare": + { + const declaration = this.tsTryParseDeclare(node); + if (declaration) { + declaration.declare = true; + } + return declaration; + } + case "global": + if (this.match(5)) { + this.scope.enter(256); + this.prodParam.enter(0); + const mod = node; + mod.global = true; + mod.id = expr; + mod.body = this.tsParseModuleBlock(); + this.scope.exit(); + this.prodParam.exit(); + return this.finishNode(mod, "TSModuleDeclaration"); + } + break; + default: + return this.tsParseDeclaration(node, expr.name, false, decorators); + } + } + tsParseDeclaration(node, value, next, decorators) { + switch (value) { + case "abstract": + if (this.tsCheckLineTerminator(next) && (this.match(80) || tokenIsIdentifier(this.state.type))) { + return this.tsParseAbstractDeclaration(node, decorators); + } + break; + case "module": + if (this.tsCheckLineTerminator(next)) { + if (this.match(133)) { + return this.tsParseAmbientExternalModuleDeclaration(node); + } else if (tokenIsIdentifier(this.state.type)) { + return this.tsParseModuleOrNamespaceDeclaration(node); + } + } + break; + case "namespace": + if (this.tsCheckLineTerminator(next) && tokenIsIdentifier(this.state.type)) { + return this.tsParseModuleOrNamespaceDeclaration(node); + } + break; + case "type": + if (this.tsCheckLineTerminator(next) && tokenIsIdentifier(this.state.type)) { + return this.tsParseTypeAliasDeclaration(node); + } + break; + } + } + tsCheckLineTerminator(next) { + if (next) { + if (this.hasFollowingLineBreak()) return false; + this.next(); + return true; + } + return !this.isLineTerminator(); + } + tsTryParseGenericAsyncArrowFunction(startLoc) { + if (!this.match(47)) return; + const oldMaybeInArrowParameters = this.state.maybeInArrowParameters; + this.state.maybeInArrowParameters = true; + const res = this.tsTryParseAndCatch(() => { + const node = this.startNodeAt(startLoc); + node.typeParameters = this.tsParseTypeParameters(this.tsParseConstModifier); + super.parseFunctionParams(node); + node.returnType = this.tsTryParseTypeOrTypePredicateAnnotation(); + this.expect(19); + return node; + }); + this.state.maybeInArrowParameters = oldMaybeInArrowParameters; + if (!res) return; + return super.parseArrowExpression(res, null, true); + } + tsParseTypeArgumentsInExpression() { + if (this.reScan_lt() !== 47) return; + return this.tsParseTypeArguments(); + } + tsParseTypeArguments() { + const node = this.startNode(); + node.params = this.tsInType(() => this.tsInNoContext(() => { + this.expect(47); + return this.tsParseDelimitedList("TypeParametersOrArguments", this.tsParseType.bind(this)); + })); + if (node.params.length === 0) { + this.raise(TSErrors.EmptyTypeArguments, { + at: node + }); + } else if (!this.state.inType && this.curContext() === types$3.brace) { + this.reScan_lt_gt(); + } + this.expect(48); + return this.finishNode(node, "TSTypeParameterInstantiation"); + } + tsIsDeclarationStart() { + return tokenIsTSDeclarationStart(this.state.type); + } + isExportDefaultSpecifier() { + if (this.tsIsDeclarationStart()) return false; + return super.isExportDefaultSpecifier(); + } + parseAssignableListItem(flags, decorators) { + const startLoc = this.state.startLoc; + const modified = {}; + this.tsParseModifiers({ + allowedModifiers: ["public", "private", "protected", "override", "readonly"] + }, modified); + const accessibility = modified.accessibility; + const override = modified.override; + const readonly = modified.readonly; + if (!(flags & 4) && (accessibility || readonly || override)) { + this.raise(TSErrors.UnexpectedParameterModifier, { + at: startLoc + }); + } + const left = this.parseMaybeDefault(); + this.parseAssignableListItemTypes(left, flags); + const elt = this.parseMaybeDefault(left.loc.start, left); + if (accessibility || readonly || override) { + const pp = this.startNodeAt(startLoc); + if (decorators.length) { + pp.decorators = decorators; + } + if (accessibility) pp.accessibility = accessibility; + if (readonly) pp.readonly = readonly; + if (override) pp.override = override; + if (elt.type !== "Identifier" && elt.type !== "AssignmentPattern") { + this.raise(TSErrors.UnsupportedParameterPropertyKind, { + at: pp + }); + } + pp.parameter = elt; + return this.finishNode(pp, "TSParameterProperty"); + } + if (decorators.length) { + left.decorators = decorators; + } + return elt; + } + isSimpleParameter(node) { + return node.type === "TSParameterProperty" && super.isSimpleParameter(node.parameter) || super.isSimpleParameter(node); + } + tsDisallowOptionalPattern(node) { + for (const param of node.params) { + if (param.type !== "Identifier" && param.optional && !this.state.isAmbientContext) { + this.raise(TSErrors.PatternIsOptional, { + at: param + }); + } + } + } + setArrowFunctionParameters(node, params, trailingCommaLoc) { + super.setArrowFunctionParameters(node, params, trailingCommaLoc); + this.tsDisallowOptionalPattern(node); + } + parseFunctionBodyAndFinish(node, type, isMethod = false) { + if (this.match(14)) { + node.returnType = this.tsParseTypeOrTypePredicateAnnotation(14); + } + const bodilessType = type === "FunctionDeclaration" ? "TSDeclareFunction" : type === "ClassMethod" || type === "ClassPrivateMethod" ? "TSDeclareMethod" : undefined; + if (bodilessType && !this.match(5) && this.isLineTerminator()) { + return this.finishNode(node, bodilessType); + } + if (bodilessType === "TSDeclareFunction" && this.state.isAmbientContext) { + this.raise(TSErrors.DeclareFunctionHasImplementation, { + at: node + }); + if (node.declare) { + return super.parseFunctionBodyAndFinish(node, bodilessType, isMethod); + } + } + this.tsDisallowOptionalPattern(node); + return super.parseFunctionBodyAndFinish(node, type, isMethod); + } + registerFunctionStatementId(node) { + if (!node.body && node.id) { + this.checkIdentifier(node.id, 1024); + } else { + super.registerFunctionStatementId(node); + } + } + tsCheckForInvalidTypeCasts(items) { + items.forEach(node => { + if ((node == null ? void 0 : node.type) === "TSTypeCastExpression") { + this.raise(TSErrors.UnexpectedTypeAnnotation, { + at: node.typeAnnotation + }); + } + }); + } + toReferencedList(exprList, isInParens) { + this.tsCheckForInvalidTypeCasts(exprList); + return exprList; + } + parseArrayLike(close, canBePattern, isTuple, refExpressionErrors) { + const node = super.parseArrayLike(close, canBePattern, isTuple, refExpressionErrors); + if (node.type === "ArrayExpression") { + this.tsCheckForInvalidTypeCasts(node.elements); + } + return node; + } + parseSubscript(base, startLoc, noCalls, state) { + if (!this.hasPrecedingLineBreak() && this.match(35)) { + this.state.canStartJSXElement = false; + this.next(); + const nonNullExpression = this.startNodeAt(startLoc); + nonNullExpression.expression = base; + return this.finishNode(nonNullExpression, "TSNonNullExpression"); + } + let isOptionalCall = false; + if (this.match(18) && this.lookaheadCharCode() === 60) { + if (noCalls) { + state.stop = true; + return base; + } + state.optionalChainMember = isOptionalCall = true; + this.next(); + } + if (this.match(47) || this.match(51)) { + let missingParenErrorLoc; + const result = this.tsTryParseAndCatch(() => { + if (!noCalls && this.atPossibleAsyncArrow(base)) { + const asyncArrowFn = this.tsTryParseGenericAsyncArrowFunction(startLoc); + if (asyncArrowFn) { + return asyncArrowFn; + } + } + const typeArguments = this.tsParseTypeArgumentsInExpression(); + if (!typeArguments) return; + if (isOptionalCall && !this.match(10)) { + missingParenErrorLoc = this.state.curPosition(); + return; + } + if (tokenIsTemplate(this.state.type)) { + const result = super.parseTaggedTemplateExpression(base, startLoc, state); + result.typeParameters = typeArguments; + return result; + } + if (!noCalls && this.eat(10)) { + const node = this.startNodeAt(startLoc); + node.callee = base; + node.arguments = this.parseCallExpressionArguments(11, false); + this.tsCheckForInvalidTypeCasts(node.arguments); + node.typeParameters = typeArguments; + if (state.optionalChainMember) { + node.optional = isOptionalCall; + } + return this.finishCallExpression(node, state.optionalChainMember); + } + const tokenType = this.state.type; + if (tokenType === 48 || tokenType === 52 || tokenType !== 10 && tokenCanStartExpression(tokenType) && !this.hasPrecedingLineBreak()) { + return; + } + const node = this.startNodeAt(startLoc); + node.expression = base; + node.typeParameters = typeArguments; + return this.finishNode(node, "TSInstantiationExpression"); + }); + if (missingParenErrorLoc) { + this.unexpected(missingParenErrorLoc, 10); + } + if (result) { + if (result.type === "TSInstantiationExpression" && (this.match(16) || this.match(18) && this.lookaheadCharCode() !== 40)) { + this.raise(TSErrors.InvalidPropertyAccessAfterInstantiationExpression, { + at: this.state.startLoc + }); + } + return result; + } + } + return super.parseSubscript(base, startLoc, noCalls, state); + } + parseNewCallee(node) { + var _callee$extra; + super.parseNewCallee(node); + const { + callee + } = node; + if (callee.type === "TSInstantiationExpression" && !((_callee$extra = callee.extra) != null && _callee$extra.parenthesized)) { + node.typeParameters = callee.typeParameters; + node.callee = callee.expression; + } + } + parseExprOp(left, leftStartLoc, minPrec) { + let isSatisfies; + if (tokenOperatorPrecedence(58) > minPrec && !this.hasPrecedingLineBreak() && (this.isContextual(93) || (isSatisfies = this.isContextual(120)))) { + const node = this.startNodeAt(leftStartLoc); + node.expression = left; + node.typeAnnotation = this.tsInType(() => { + this.next(); + if (this.match(75)) { + if (isSatisfies) { + this.raise(Errors.UnexpectedKeyword, { + at: this.state.startLoc, + keyword: "const" + }); + } + return this.tsParseTypeReference(); + } + return this.tsParseType(); + }); + this.finishNode(node, isSatisfies ? "TSSatisfiesExpression" : "TSAsExpression"); + this.reScan_lt_gt(); + return this.parseExprOp(node, leftStartLoc, minPrec); + } + return super.parseExprOp(left, leftStartLoc, minPrec); + } + checkReservedWord(word, startLoc, checkKeywords, isBinding) { + if (!this.state.isAmbientContext) { + super.checkReservedWord(word, startLoc, checkKeywords, isBinding); + } + } + checkImportReflection(node) { + super.checkImportReflection(node); + if (node.module && node.importKind !== "value") { + this.raise(TSErrors.ImportReflectionHasImportType, { + at: node.specifiers[0].loc.start + }); + } + } + checkDuplicateExports() {} + isPotentialImportPhase(isExport) { + if (super.isPotentialImportPhase(isExport)) return true; + if (this.isContextual(130)) { + const ch = this.lookaheadCharCode(); + return isExport ? ch === 123 || ch === 42 : ch !== 61; + } + return !isExport && this.isContextual(87); + } + applyImportPhase(node, isExport, phase, loc) { + super.applyImportPhase(node, isExport, phase, loc); + if (isExport) { + node.exportKind = phase === "type" ? "type" : "value"; + } else { + node.importKind = phase === "type" || phase === "typeof" ? phase : "value"; + } + } + parseImport(node) { + if (this.match(133)) { + node.importKind = "value"; + return super.parseImport(node); + } + let importNode; + if (tokenIsIdentifier(this.state.type) && this.lookaheadCharCode() === 61) { + node.importKind = "value"; + return this.tsParseImportEqualsDeclaration(node); + } else if (this.isContextual(130)) { + const maybeDefaultIdentifier = this.parseMaybeImportPhase(node, false); + if (this.lookaheadCharCode() === 61) { + return this.tsParseImportEqualsDeclaration(node, maybeDefaultIdentifier); + } else { + importNode = super.parseImportSpecifiersAndAfter(node, maybeDefaultIdentifier); + } + } else { + importNode = super.parseImport(node); + } + if (importNode.importKind === "type" && importNode.specifiers.length > 1 && importNode.specifiers[0].type === "ImportDefaultSpecifier") { + this.raise(TSErrors.TypeImportCannotSpecifyDefaultAndNamed, { + at: importNode + }); + } + return importNode; + } + parseExport(node, decorators) { + if (this.match(83)) { + this.next(); + let maybeDefaultIdentifier = null; + if (this.isContextual(130) && this.isPotentialImportPhase(false)) { + maybeDefaultIdentifier = this.parseMaybeImportPhase(node, false); + } else { + node.importKind = "value"; + } + return this.tsParseImportEqualsDeclaration(node, maybeDefaultIdentifier, true); + } else if (this.eat(29)) { + const assign = node; + assign.expression = super.parseExpression(); + this.semicolon(); + this.sawUnambiguousESM = true; + return this.finishNode(assign, "TSExportAssignment"); + } else if (this.eatContextual(93)) { + const decl = node; + this.expectContextual(128); + decl.id = this.parseIdentifier(); + this.semicolon(); + return this.finishNode(decl, "TSNamespaceExportDeclaration"); + } else { + return super.parseExport(node, decorators); + } + } + isAbstractClass() { + return this.isContextual(124) && this.lookahead().type === 80; + } + parseExportDefaultExpression() { + if (this.isAbstractClass()) { + const cls = this.startNode(); + this.next(); + cls.abstract = true; + return this.parseClass(cls, true, true); + } + if (this.match(129)) { + const result = this.tsParseInterfaceDeclaration(this.startNode()); + if (result) return result; + } + return super.parseExportDefaultExpression(); + } + parseVarStatement(node, kind, allowMissingInitializer = false) { + const { + isAmbientContext + } = this.state; + const declaration = super.parseVarStatement(node, kind, allowMissingInitializer || isAmbientContext); + if (!isAmbientContext) return declaration; + for (const { + id, + init + } of declaration.declarations) { + if (!init) continue; + if (kind !== "const" || !!id.typeAnnotation) { + this.raise(TSErrors.InitializerNotAllowedInAmbientContext, { + at: init + }); + } else if (!isValidAmbientConstInitializer(init, this.hasPlugin("estree"))) { + this.raise(TSErrors.ConstInitiailizerMustBeStringOrNumericLiteralOrLiteralEnumReference, { + at: init + }); + } + } + return declaration; + } + parseStatementContent(flags, decorators) { + if (this.match(75) && this.isLookaheadContextual("enum")) { + const node = this.startNode(); + this.expect(75); + return this.tsParseEnumDeclaration(node, { + const: true + }); + } + if (this.isContextual(126)) { + return this.tsParseEnumDeclaration(this.startNode()); + } + if (this.isContextual(129)) { + const result = this.tsParseInterfaceDeclaration(this.startNode()); + if (result) return result; + } + return super.parseStatementContent(flags, decorators); + } + parseAccessModifier() { + return this.tsParseModifier(["public", "protected", "private"]); + } + tsHasSomeModifiers(member, modifiers) { + return modifiers.some(modifier => { + if (tsIsAccessModifier(modifier)) { + return member.accessibility === modifier; + } + return !!member[modifier]; + }); + } + tsIsStartOfStaticBlocks() { + return this.isContextual(106) && this.lookaheadCharCode() === 123; + } + parseClassMember(classBody, member, state) { + const modifiers = ["declare", "private", "public", "protected", "override", "abstract", "readonly", "static"]; + this.tsParseModifiers({ + allowedModifiers: modifiers, + disallowedModifiers: ["in", "out"], + stopOnStartOfClassStaticBlock: true, + errorTemplate: TSErrors.InvalidModifierOnTypeParameterPositions + }, member); + const callParseClassMemberWithIsStatic = () => { + if (this.tsIsStartOfStaticBlocks()) { + this.next(); + this.next(); + if (this.tsHasSomeModifiers(member, modifiers)) { + this.raise(TSErrors.StaticBlockCannotHaveModifier, { + at: this.state.curPosition() + }); + } + super.parseClassStaticBlock(classBody, member); + } else { + this.parseClassMemberWithIsStatic(classBody, member, state, !!member.static); + } + }; + if (member.declare) { + this.tsInAmbientContext(callParseClassMemberWithIsStatic); + } else { + callParseClassMemberWithIsStatic(); + } + } + parseClassMemberWithIsStatic(classBody, member, state, isStatic) { + const idx = this.tsTryParseIndexSignature(member); + if (idx) { + classBody.body.push(idx); + if (member.abstract) { + this.raise(TSErrors.IndexSignatureHasAbstract, { + at: member + }); + } + if (member.accessibility) { + this.raise(TSErrors.IndexSignatureHasAccessibility, { + at: member, + modifier: member.accessibility + }); + } + if (member.declare) { + this.raise(TSErrors.IndexSignatureHasDeclare, { + at: member + }); + } + if (member.override) { + this.raise(TSErrors.IndexSignatureHasOverride, { + at: member + }); + } + return; + } + if (!this.state.inAbstractClass && member.abstract) { + this.raise(TSErrors.NonAbstractClassHasAbstractMethod, { + at: member + }); + } + if (member.override) { + if (!state.hadSuperClass) { + this.raise(TSErrors.OverrideNotInSubClass, { + at: member + }); + } + } + super.parseClassMemberWithIsStatic(classBody, member, state, isStatic); + } + parsePostMemberNameModifiers(methodOrProp) { + const optional = this.eat(17); + if (optional) methodOrProp.optional = true; + if (methodOrProp.readonly && this.match(10)) { + this.raise(TSErrors.ClassMethodHasReadonly, { + at: methodOrProp + }); + } + if (methodOrProp.declare && this.match(10)) { + this.raise(TSErrors.ClassMethodHasDeclare, { + at: methodOrProp + }); + } + } + parseExpressionStatement(node, expr, decorators) { + const decl = expr.type === "Identifier" ? this.tsParseExpressionStatement(node, expr, decorators) : undefined; + return decl || super.parseExpressionStatement(node, expr, decorators); + } + shouldParseExportDeclaration() { + if (this.tsIsDeclarationStart()) return true; + return super.shouldParseExportDeclaration(); + } + parseConditional(expr, startLoc, refExpressionErrors) { + if (!this.state.maybeInArrowParameters || !this.match(17)) { + return super.parseConditional(expr, startLoc, refExpressionErrors); + } + const result = this.tryParse(() => super.parseConditional(expr, startLoc)); + if (!result.node) { + if (result.error) { + super.setOptionalParametersError(refExpressionErrors, result.error); + } + return expr; + } + if (result.error) this.state = result.failState; + return result.node; + } + parseParenItem(node, startLoc) { + node = super.parseParenItem(node, startLoc); + if (this.eat(17)) { + node.optional = true; + this.resetEndLocation(node); + } + if (this.match(14)) { + const typeCastNode = this.startNodeAt(startLoc); + typeCastNode.expression = node; + typeCastNode.typeAnnotation = this.tsParseTypeAnnotation(); + return this.finishNode(typeCastNode, "TSTypeCastExpression"); + } + return node; + } + parseExportDeclaration(node) { + if (!this.state.isAmbientContext && this.isContextual(125)) { + return this.tsInAmbientContext(() => this.parseExportDeclaration(node)); + } + const startLoc = this.state.startLoc; + const isDeclare = this.eatContextual(125); + if (isDeclare && (this.isContextual(125) || !this.shouldParseExportDeclaration())) { + throw this.raise(TSErrors.ExpectedAmbientAfterExportDeclare, { + at: this.state.startLoc + }); + } + const isIdentifier = tokenIsIdentifier(this.state.type); + const declaration = isIdentifier && this.tsTryParseExportDeclaration() || super.parseExportDeclaration(node); + if (!declaration) return null; + if (declaration.type === "TSInterfaceDeclaration" || declaration.type === "TSTypeAliasDeclaration" || isDeclare) { + node.exportKind = "type"; + } + if (isDeclare) { + this.resetStartLocation(declaration, startLoc); + declaration.declare = true; + } + return declaration; + } + parseClassId(node, isStatement, optionalId, bindingType) { + if ((!isStatement || optionalId) && this.isContextual(113)) { + return; + } + super.parseClassId(node, isStatement, optionalId, node.declare ? 1024 : 8331); + const typeParameters = this.tsTryParseTypeParameters(this.tsParseInOutConstModifiers); + if (typeParameters) node.typeParameters = typeParameters; + } + parseClassPropertyAnnotation(node) { + if (!node.optional) { + if (this.eat(35)) { + node.definite = true; + } else if (this.eat(17)) { + node.optional = true; + } + } + const type = this.tsTryParseTypeAnnotation(); + if (type) node.typeAnnotation = type; + } + parseClassProperty(node) { + this.parseClassPropertyAnnotation(node); + if (this.state.isAmbientContext && !(node.readonly && !node.typeAnnotation) && this.match(29)) { + this.raise(TSErrors.DeclareClassFieldHasInitializer, { + at: this.state.startLoc + }); + } + if (node.abstract && this.match(29)) { + const { + key + } = node; + this.raise(TSErrors.AbstractPropertyHasInitializer, { + at: this.state.startLoc, + propertyName: key.type === "Identifier" && !node.computed ? key.name : `[${this.input.slice(key.start, key.end)}]` + }); + } + return super.parseClassProperty(node); + } + parseClassPrivateProperty(node) { + if (node.abstract) { + this.raise(TSErrors.PrivateElementHasAbstract, { + at: node + }); + } + if (node.accessibility) { + this.raise(TSErrors.PrivateElementHasAccessibility, { + at: node, + modifier: node.accessibility + }); + } + this.parseClassPropertyAnnotation(node); + return super.parseClassPrivateProperty(node); + } + parseClassAccessorProperty(node) { + this.parseClassPropertyAnnotation(node); + if (node.optional) { + this.raise(TSErrors.AccessorCannotBeOptional, { + at: node + }); + } + return super.parseClassAccessorProperty(node); + } + pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) { + const typeParameters = this.tsTryParseTypeParameters(this.tsParseConstModifier); + if (typeParameters && isConstructor) { + this.raise(TSErrors.ConstructorHasTypeParameters, { + at: typeParameters + }); + } + const { + declare = false, + kind + } = method; + if (declare && (kind === "get" || kind === "set")) { + this.raise(TSErrors.DeclareAccessor, { + at: method, + kind + }); + } + if (typeParameters) method.typeParameters = typeParameters; + super.pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper); + } + pushClassPrivateMethod(classBody, method, isGenerator, isAsync) { + const typeParameters = this.tsTryParseTypeParameters(this.tsParseConstModifier); + if (typeParameters) method.typeParameters = typeParameters; + super.pushClassPrivateMethod(classBody, method, isGenerator, isAsync); + } + declareClassPrivateMethodInScope(node, kind) { + if (node.type === "TSDeclareMethod") return; + if (node.type === "MethodDefinition" && !node.value.body) return; + super.declareClassPrivateMethodInScope(node, kind); + } + parseClassSuper(node) { + super.parseClassSuper(node); + if (node.superClass && (this.match(47) || this.match(51))) { + node.superTypeParameters = this.tsParseTypeArgumentsInExpression(); + } + if (this.eatContextual(113)) { + node.implements = this.tsParseHeritageClause("implements"); + } + } + parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors) { + const typeParameters = this.tsTryParseTypeParameters(this.tsParseConstModifier); + if (typeParameters) prop.typeParameters = typeParameters; + return super.parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors); + } + parseFunctionParams(node, isConstructor) { + const typeParameters = this.tsTryParseTypeParameters(this.tsParseConstModifier); + if (typeParameters) node.typeParameters = typeParameters; + super.parseFunctionParams(node, isConstructor); + } + parseVarId(decl, kind) { + super.parseVarId(decl, kind); + if (decl.id.type === "Identifier" && !this.hasPrecedingLineBreak() && this.eat(35)) { + decl.definite = true; + } + const type = this.tsTryParseTypeAnnotation(); + if (type) { + decl.id.typeAnnotation = type; + this.resetEndLocation(decl.id); + } + } + parseAsyncArrowFromCallExpression(node, call) { + if (this.match(14)) { + node.returnType = this.tsParseTypeAnnotation(); + } + return super.parseAsyncArrowFromCallExpression(node, call); + } + parseMaybeAssign(refExpressionErrors, afterLeftParse) { + var _jsx, _jsx2, _typeCast, _jsx3, _typeCast2; + let state; + let jsx; + let typeCast; + if (this.hasPlugin("jsx") && (this.match(142) || this.match(47))) { + state = this.state.clone(); + jsx = this.tryParse(() => super.parseMaybeAssign(refExpressionErrors, afterLeftParse), state); + if (!jsx.error) return jsx.node; + const { + context + } = this.state; + const currentContext = context[context.length - 1]; + if (currentContext === types$3.j_oTag || currentContext === types$3.j_expr) { + context.pop(); + } + } + if (!((_jsx = jsx) != null && _jsx.error) && !this.match(47)) { + return super.parseMaybeAssign(refExpressionErrors, afterLeftParse); + } + if (!state || state === this.state) state = this.state.clone(); + let typeParameters; + const arrow = this.tryParse(abort => { + var _expr$extra, _typeParameters; + typeParameters = this.tsParseTypeParameters(this.tsParseConstModifier); + const expr = super.parseMaybeAssign(refExpressionErrors, afterLeftParse); + if (expr.type !== "ArrowFunctionExpression" || (_expr$extra = expr.extra) != null && _expr$extra.parenthesized) { + abort(); + } + if (((_typeParameters = typeParameters) == null ? void 0 : _typeParameters.params.length) !== 0) { + this.resetStartLocationFromNode(expr, typeParameters); + } + expr.typeParameters = typeParameters; + return expr; + }, state); + if (!arrow.error && !arrow.aborted) { + if (typeParameters) this.reportReservedArrowTypeParam(typeParameters); + return arrow.node; + } + if (!jsx) { + assert$1(!this.hasPlugin("jsx")); + typeCast = this.tryParse(() => super.parseMaybeAssign(refExpressionErrors, afterLeftParse), state); + if (!typeCast.error) return typeCast.node; + } + if ((_jsx2 = jsx) != null && _jsx2.node) { + this.state = jsx.failState; + return jsx.node; + } + if (arrow.node) { + this.state = arrow.failState; + if (typeParameters) this.reportReservedArrowTypeParam(typeParameters); + return arrow.node; + } + if ((_typeCast = typeCast) != null && _typeCast.node) { + this.state = typeCast.failState; + return typeCast.node; + } + throw ((_jsx3 = jsx) == null ? void 0 : _jsx3.error) || arrow.error || ((_typeCast2 = typeCast) == null ? void 0 : _typeCast2.error); + } + reportReservedArrowTypeParam(node) { + var _node$extra; + if (node.params.length === 1 && !node.params[0].constraint && !((_node$extra = node.extra) != null && _node$extra.trailingComma) && this.getPluginOption("typescript", "disallowAmbiguousJSXLike")) { + this.raise(TSErrors.ReservedArrowTypeParam, { + at: node + }); + } + } + parseMaybeUnary(refExpressionErrors, sawUnary) { + if (!this.hasPlugin("jsx") && this.match(47)) { + return this.tsParseTypeAssertion(); + } + return super.parseMaybeUnary(refExpressionErrors, sawUnary); + } + parseArrow(node) { + if (this.match(14)) { + const result = this.tryParse(abort => { + const returnType = this.tsParseTypeOrTypePredicateAnnotation(14); + if (this.canInsertSemicolon() || !this.match(19)) abort(); + return returnType; + }); + if (result.aborted) return; + if (!result.thrown) { + if (result.error) this.state = result.failState; + node.returnType = result.node; + } + } + return super.parseArrow(node); + } + parseAssignableListItemTypes(param, flags) { + if (!(flags & 2)) return param; + if (this.eat(17)) { + param.optional = true; + } + const type = this.tsTryParseTypeAnnotation(); + if (type) param.typeAnnotation = type; + this.resetEndLocation(param); + return param; + } + isAssignable(node, isBinding) { + switch (node.type) { + case "TSTypeCastExpression": + return this.isAssignable(node.expression, isBinding); + case "TSParameterProperty": + return true; + default: + return super.isAssignable(node, isBinding); + } + } + toAssignable(node, isLHS = false) { + switch (node.type) { + case "ParenthesizedExpression": + this.toAssignableParenthesizedExpression(node, isLHS); + break; + case "TSAsExpression": + case "TSSatisfiesExpression": + case "TSNonNullExpression": + case "TSTypeAssertion": + if (isLHS) { + this.expressionScope.recordArrowParameterBindingError(TSErrors.UnexpectedTypeCastInParameter, { + at: node + }); + } else { + this.raise(TSErrors.UnexpectedTypeCastInParameter, { + at: node + }); + } + this.toAssignable(node.expression, isLHS); + break; + case "AssignmentExpression": + if (!isLHS && node.left.type === "TSTypeCastExpression") { + node.left = this.typeCastToParameter(node.left); + } + default: + super.toAssignable(node, isLHS); + } + } + toAssignableParenthesizedExpression(node, isLHS) { + switch (node.expression.type) { + case "TSAsExpression": + case "TSSatisfiesExpression": + case "TSNonNullExpression": + case "TSTypeAssertion": + case "ParenthesizedExpression": + this.toAssignable(node.expression, isLHS); + break; + default: + super.toAssignable(node, isLHS); + } + } + checkToRestConversion(node, allowPattern) { + switch (node.type) { + case "TSAsExpression": + case "TSSatisfiesExpression": + case "TSTypeAssertion": + case "TSNonNullExpression": + this.checkToRestConversion(node.expression, false); + break; + default: + super.checkToRestConversion(node, allowPattern); + } + } + isValidLVal(type, isUnparenthesizedInAssign, binding) { + return getOwn({ + TSTypeCastExpression: true, + TSParameterProperty: "parameter", + TSNonNullExpression: "expression", + TSAsExpression: (binding !== 64 || !isUnparenthesizedInAssign) && ["expression", true], + TSSatisfiesExpression: (binding !== 64 || !isUnparenthesizedInAssign) && ["expression", true], + TSTypeAssertion: (binding !== 64 || !isUnparenthesizedInAssign) && ["expression", true] + }, type) || super.isValidLVal(type, isUnparenthesizedInAssign, binding); + } + parseBindingAtom() { + if (this.state.type === 78) { + return this.parseIdentifier(true); + } + return super.parseBindingAtom(); + } + parseMaybeDecoratorArguments(expr) { + if (this.match(47) || this.match(51)) { + const typeArguments = this.tsParseTypeArgumentsInExpression(); + if (this.match(10)) { + const call = super.parseMaybeDecoratorArguments(expr); + call.typeParameters = typeArguments; + return call; + } + this.unexpected(null, 10); + } + return super.parseMaybeDecoratorArguments(expr); + } + checkCommaAfterRest(close) { + if (this.state.isAmbientContext && this.match(12) && this.lookaheadCharCode() === close) { + this.next(); + return false; + } + return super.checkCommaAfterRest(close); + } + isClassMethod() { + return this.match(47) || super.isClassMethod(); + } + isClassProperty() { + return this.match(35) || this.match(14) || super.isClassProperty(); + } + parseMaybeDefault(startLoc, left) { + const node = super.parseMaybeDefault(startLoc, left); + if (node.type === "AssignmentPattern" && node.typeAnnotation && node.right.start < node.typeAnnotation.start) { + this.raise(TSErrors.TypeAnnotationAfterAssign, { + at: node.typeAnnotation + }); + } + return node; + } + getTokenFromCode(code) { + if (this.state.inType) { + if (code === 62) { + this.finishOp(48, 1); + return; + } + if (code === 60) { + this.finishOp(47, 1); + return; + } + } + super.getTokenFromCode(code); + } + reScan_lt_gt() { + const { + type + } = this.state; + if (type === 47) { + this.state.pos -= 1; + this.readToken_lt(); + } else if (type === 48) { + this.state.pos -= 1; + this.readToken_gt(); + } + } + reScan_lt() { + const { + type + } = this.state; + if (type === 51) { + this.state.pos -= 2; + this.finishOp(47, 1); + return 47; + } + return type; + } + toAssignableList(exprList, trailingCommaLoc, isLHS) { + for (let i = 0; i < exprList.length; i++) { + const expr = exprList[i]; + if ((expr == null ? void 0 : expr.type) === "TSTypeCastExpression") { + exprList[i] = this.typeCastToParameter(expr); + } + } + super.toAssignableList(exprList, trailingCommaLoc, isLHS); + } + typeCastToParameter(node) { + node.expression.typeAnnotation = node.typeAnnotation; + this.resetEndLocation(node.expression, node.typeAnnotation.loc.end); + return node.expression; + } + shouldParseArrow(params) { + if (this.match(14)) { + return params.every(expr => this.isAssignable(expr, true)); + } + return super.shouldParseArrow(params); + } + shouldParseAsyncArrow() { + return this.match(14) || super.shouldParseAsyncArrow(); + } + canHaveLeadingDecorator() { + return super.canHaveLeadingDecorator() || this.isAbstractClass(); + } + jsxParseOpeningElementAfterName(node) { + if (this.match(47) || this.match(51)) { + const typeArguments = this.tsTryParseAndCatch(() => this.tsParseTypeArgumentsInExpression()); + if (typeArguments) node.typeParameters = typeArguments; + } + return super.jsxParseOpeningElementAfterName(node); + } + getGetterSetterExpectedParamCount(method) { + const baseCount = super.getGetterSetterExpectedParamCount(method); + const params = this.getObjectOrClassMethodParams(method); + const firstParam = params[0]; + const hasContextParam = firstParam && this.isThisParam(firstParam); + return hasContextParam ? baseCount + 1 : baseCount; + } + parseCatchClauseParam() { + const param = super.parseCatchClauseParam(); + const type = this.tsTryParseTypeAnnotation(); + if (type) { + param.typeAnnotation = type; + this.resetEndLocation(param); + } + return param; + } + tsInAmbientContext(cb) { + const oldIsAmbientContext = this.state.isAmbientContext; + this.state.isAmbientContext = true; + try { + return cb(); + } finally { + this.state.isAmbientContext = oldIsAmbientContext; + } + } + parseClass(node, isStatement, optionalId) { + const oldInAbstractClass = this.state.inAbstractClass; + this.state.inAbstractClass = !!node.abstract; + try { + return super.parseClass(node, isStatement, optionalId); + } finally { + this.state.inAbstractClass = oldInAbstractClass; + } + } + tsParseAbstractDeclaration(node, decorators) { + if (this.match(80)) { + node.abstract = true; + return this.maybeTakeDecorators(decorators, this.parseClass(node, true, false)); + } else if (this.isContextual(129)) { + if (!this.hasFollowingLineBreak()) { + node.abstract = true; + this.raise(TSErrors.NonClassMethodPropertyHasAbstractModifer, { + at: node + }); + return this.tsParseInterfaceDeclaration(node); + } + } else { + this.unexpected(null, 80); + } + } + parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope) { + const method = super.parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope); + if (method.abstract) { + const hasBody = this.hasPlugin("estree") ? !!method.value.body : !!method.body; + if (hasBody) { + const { + key + } = method; + this.raise(TSErrors.AbstractMethodHasImplementation, { + at: method, + methodName: key.type === "Identifier" && !method.computed ? key.name : `[${this.input.slice(key.start, key.end)}]` + }); + } + } + return method; + } + tsParseTypeParameterName() { + const typeName = this.parseIdentifier(); + return typeName.name; + } + shouldParseAsAmbientContext() { + return !!this.getPluginOption("typescript", "dts"); + } + parse() { + if (this.shouldParseAsAmbientContext()) { + this.state.isAmbientContext = true; + } + return super.parse(); + } + getExpression() { + if (this.shouldParseAsAmbientContext()) { + this.state.isAmbientContext = true; + } + return super.getExpression(); + } + parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly) { + if (!isString && isMaybeTypeOnly) { + this.parseTypeOnlyImportExportSpecifier(node, false, isInTypeExport); + return this.finishNode(node, "ExportSpecifier"); + } + node.exportKind = "value"; + return super.parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly); + } + parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly, bindingType) { + if (!importedIsString && isMaybeTypeOnly) { + this.parseTypeOnlyImportExportSpecifier(specifier, true, isInTypeOnlyImport); + return this.finishNode(specifier, "ImportSpecifier"); + } + specifier.importKind = "value"; + return super.parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly, isInTypeOnlyImport ? 4098 : 4096); + } + parseTypeOnlyImportExportSpecifier(node, isImport, isInTypeOnlyImportExport) { + const leftOfAsKey = isImport ? "imported" : "local"; + const rightOfAsKey = isImport ? "local" : "exported"; + let leftOfAs = node[leftOfAsKey]; + let rightOfAs; + let hasTypeSpecifier = false; + let canParseAsKeyword = true; + const loc = leftOfAs.loc.start; + if (this.isContextual(93)) { + const firstAs = this.parseIdentifier(); + if (this.isContextual(93)) { + const secondAs = this.parseIdentifier(); + if (tokenIsKeywordOrIdentifier(this.state.type)) { + hasTypeSpecifier = true; + leftOfAs = firstAs; + rightOfAs = isImport ? this.parseIdentifier() : this.parseModuleExportName(); + canParseAsKeyword = false; + } else { + rightOfAs = secondAs; + canParseAsKeyword = false; + } + } else if (tokenIsKeywordOrIdentifier(this.state.type)) { + canParseAsKeyword = false; + rightOfAs = isImport ? this.parseIdentifier() : this.parseModuleExportName(); + } else { + hasTypeSpecifier = true; + leftOfAs = firstAs; + } + } else if (tokenIsKeywordOrIdentifier(this.state.type)) { + hasTypeSpecifier = true; + if (isImport) { + leftOfAs = this.parseIdentifier(true); + if (!this.isContextual(93)) { + this.checkReservedWord(leftOfAs.name, leftOfAs.loc.start, true, true); + } + } else { + leftOfAs = this.parseModuleExportName(); + } + } + if (hasTypeSpecifier && isInTypeOnlyImportExport) { + this.raise(isImport ? TSErrors.TypeModifierIsUsedInTypeImports : TSErrors.TypeModifierIsUsedInTypeExports, { + at: loc + }); + } + node[leftOfAsKey] = leftOfAs; + node[rightOfAsKey] = rightOfAs; + const kindKey = isImport ? "importKind" : "exportKind"; + node[kindKey] = hasTypeSpecifier ? "type" : "value"; + if (canParseAsKeyword && this.eatContextual(93)) { + node[rightOfAsKey] = isImport ? this.parseIdentifier() : this.parseModuleExportName(); + } + if (!node[rightOfAsKey]) { + node[rightOfAsKey] = cloneIdentifier(node[leftOfAsKey]); + } + if (isImport) { + this.checkIdentifier(node[rightOfAsKey], hasTypeSpecifier ? 4098 : 4096); + } + } +}; +function isPossiblyLiteralEnum(expression) { + if (expression.type !== "MemberExpression") return false; + const { + computed, + property + } = expression; + if (computed && property.type !== "StringLiteral" && (property.type !== "TemplateLiteral" || property.expressions.length > 0)) { + return false; + } + return isUncomputedMemberExpressionChain(expression.object); +} +function isValidAmbientConstInitializer(expression, estree) { + var _expression$extra; + const { + type + } = expression; + if ((_expression$extra = expression.extra) != null && _expression$extra.parenthesized) { + return false; + } + if (estree) { + if (type === "Literal") { + const { + value + } = expression; + if (typeof value === "string" || typeof value === "boolean") { + return true; + } + } + } else { + if (type === "StringLiteral" || type === "BooleanLiteral") { + return true; + } + } + if (isNumber$1(expression, estree) || isNegativeNumber(expression, estree)) { + return true; + } + if (type === "TemplateLiteral" && expression.expressions.length === 0) { + return true; + } + if (isPossiblyLiteralEnum(expression)) { + return true; + } + return false; +} +function isNumber$1(expression, estree) { + if (estree) { + return expression.type === "Literal" && (typeof expression.value === "number" || "bigint" in expression); + } + return expression.type === "NumericLiteral" || expression.type === "BigIntLiteral"; +} +function isNegativeNumber(expression, estree) { + if (expression.type === "UnaryExpression") { + const { + operator, + argument + } = expression; + if (operator === "-" && isNumber$1(argument, estree)) { + return true; + } + } + return false; +} +function isUncomputedMemberExpressionChain(expression) { + if (expression.type === "Identifier") return true; + if (expression.type !== "MemberExpression" || expression.computed) { + return false; + } + return isUncomputedMemberExpressionChain(expression.object); +} +const PlaceholderErrors = ParseErrorEnum`placeholders`({ + ClassNameIsRequired: "A class name is required.", + UnexpectedSpace: "Unexpected space in placeholder." +}); +var placeholders = superClass => class PlaceholdersParserMixin extends superClass { + parsePlaceholder(expectedNode) { + if (this.match(144)) { + const node = this.startNode(); + this.next(); + this.assertNoSpace(); + node.name = super.parseIdentifier(true); + this.assertNoSpace(); + this.expect(144); + return this.finishPlaceholder(node, expectedNode); + } + } + finishPlaceholder(node, expectedNode) { + const isFinished = !!(node.expectedNode && node.type === "Placeholder"); + node.expectedNode = expectedNode; + return isFinished ? node : this.finishNode(node, "Placeholder"); + } + getTokenFromCode(code) { + if (code === 37 && this.input.charCodeAt(this.state.pos + 1) === 37) { + this.finishOp(144, 2); + } else { + super.getTokenFromCode(code); + } + } + parseExprAtom(refExpressionErrors) { + return this.parsePlaceholder("Expression") || super.parseExprAtom(refExpressionErrors); + } + parseIdentifier(liberal) { + return this.parsePlaceholder("Identifier") || super.parseIdentifier(liberal); + } + checkReservedWord(word, startLoc, checkKeywords, isBinding) { + if (word !== undefined) { + super.checkReservedWord(word, startLoc, checkKeywords, isBinding); + } + } + parseBindingAtom() { + return this.parsePlaceholder("Pattern") || super.parseBindingAtom(); + } + isValidLVal(type, isParenthesized, binding) { + return type === "Placeholder" || super.isValidLVal(type, isParenthesized, binding); + } + toAssignable(node, isLHS) { + if (node && node.type === "Placeholder" && node.expectedNode === "Expression") { + node.expectedNode = "Pattern"; + } else { + super.toAssignable(node, isLHS); + } + } + chStartsBindingIdentifier(ch, pos) { + if (super.chStartsBindingIdentifier(ch, pos)) { + return true; + } + const nextToken = this.lookahead(); + if (nextToken.type === 144) { + return true; + } + return false; + } + verifyBreakContinue(node, isBreak) { + if (node.label && node.label.type === "Placeholder") return; + super.verifyBreakContinue(node, isBreak); + } + parseExpressionStatement(node, expr) { + var _expr$extra; + if (expr.type !== "Placeholder" || (_expr$extra = expr.extra) != null && _expr$extra.parenthesized) { + return super.parseExpressionStatement(node, expr); + } + if (this.match(14)) { + const stmt = node; + stmt.label = this.finishPlaceholder(expr, "Identifier"); + this.next(); + stmt.body = super.parseStatementOrSloppyAnnexBFunctionDeclaration(); + return this.finishNode(stmt, "LabeledStatement"); + } + this.semicolon(); + node.name = expr.name; + return this.finishPlaceholder(node, "Statement"); + } + parseBlock(allowDirectives, createNewLexicalScope, afterBlockParse) { + return this.parsePlaceholder("BlockStatement") || super.parseBlock(allowDirectives, createNewLexicalScope, afterBlockParse); + } + parseFunctionId(requireId) { + return this.parsePlaceholder("Identifier") || super.parseFunctionId(requireId); + } + parseClass(node, isStatement, optionalId) { + const type = isStatement ? "ClassDeclaration" : "ClassExpression"; + this.next(); + const oldStrict = this.state.strict; + const placeholder = this.parsePlaceholder("Identifier"); + if (placeholder) { + if (this.match(81) || this.match(144) || this.match(5)) { + node.id = placeholder; + } else if (optionalId || !isStatement) { + node.id = null; + node.body = this.finishPlaceholder(placeholder, "ClassBody"); + return this.finishNode(node, type); + } else { + throw this.raise(PlaceholderErrors.ClassNameIsRequired, { + at: this.state.startLoc + }); + } + } else { + this.parseClassId(node, isStatement, optionalId); + } + super.parseClassSuper(node); + node.body = this.parsePlaceholder("ClassBody") || super.parseClassBody(!!node.superClass, oldStrict); + return this.finishNode(node, type); + } + parseExport(node, decorators) { + const placeholder = this.parsePlaceholder("Identifier"); + if (!placeholder) return super.parseExport(node, decorators); + if (!this.isContextual(98) && !this.match(12)) { + node.specifiers = []; + node.source = null; + node.declaration = this.finishPlaceholder(placeholder, "Declaration"); + return this.finishNode(node, "ExportNamedDeclaration"); + } + this.expectPlugin("exportDefaultFrom"); + const specifier = this.startNode(); + specifier.exported = placeholder; + node.specifiers = [this.finishNode(specifier, "ExportDefaultSpecifier")]; + return super.parseExport(node, decorators); + } + isExportDefaultSpecifier() { + if (this.match(65)) { + const next = this.nextTokenStart(); + if (this.isUnparsedContextual(next, "from")) { + if (this.input.startsWith(tokenLabelName(144), this.nextTokenStartSince(next + 4))) { + return true; + } + } + } + return super.isExportDefaultSpecifier(); + } + maybeParseExportDefaultSpecifier(node, maybeDefaultIdentifier) { + var _specifiers; + if ((_specifiers = node.specifiers) != null && _specifiers.length) { + return true; + } + return super.maybeParseExportDefaultSpecifier(node, maybeDefaultIdentifier); + } + checkExport(node) { + const { + specifiers + } = node; + if (specifiers != null && specifiers.length) { + node.specifiers = specifiers.filter(node => node.exported.type === "Placeholder"); + } + super.checkExport(node); + node.specifiers = specifiers; + } + parseImport(node) { + const placeholder = this.parsePlaceholder("Identifier"); + if (!placeholder) return super.parseImport(node); + node.specifiers = []; + if (!this.isContextual(98) && !this.match(12)) { + node.source = this.finishPlaceholder(placeholder, "StringLiteral"); + this.semicolon(); + return this.finishNode(node, "ImportDeclaration"); + } + const specifier = this.startNodeAtNode(placeholder); + specifier.local = placeholder; + node.specifiers.push(this.finishNode(specifier, "ImportDefaultSpecifier")); + if (this.eat(12)) { + const hasStarImport = this.maybeParseStarImportSpecifier(node); + if (!hasStarImport) this.parseNamedImportSpecifiers(node); + } + this.expectContextual(98); + node.source = this.parseImportSource(); + this.semicolon(); + return this.finishNode(node, "ImportDeclaration"); + } + parseImportSource() { + return this.parsePlaceholder("StringLiteral") || super.parseImportSource(); + } + assertNoSpace() { + if (this.state.start > this.state.lastTokEndLoc.index) { + this.raise(PlaceholderErrors.UnexpectedSpace, { + at: this.state.lastTokEndLoc + }); + } + } +}; +var v8intrinsic = superClass => class V8IntrinsicMixin extends superClass { + parseV8Intrinsic() { + if (this.match(54)) { + const v8IntrinsicStartLoc = this.state.startLoc; + const node = this.startNode(); + this.next(); + if (tokenIsIdentifier(this.state.type)) { + const name = this.parseIdentifierName(); + const identifier = this.createIdentifier(node, name); + identifier.type = "V8IntrinsicIdentifier"; + if (this.match(10)) { + return identifier; + } + } + this.unexpected(v8IntrinsicStartLoc); + } + } + parseExprAtom(refExpressionErrors) { + return this.parseV8Intrinsic() || super.parseExprAtom(refExpressionErrors); + } +}; +function hasPlugin(plugins, expectedConfig) { + const [expectedName, expectedOptions] = typeof expectedConfig === "string" ? [expectedConfig, {}] : expectedConfig; + const expectedKeys = Object.keys(expectedOptions); + const expectedOptionsIsEmpty = expectedKeys.length === 0; + return plugins.some(p => { + if (typeof p === "string") { + return expectedOptionsIsEmpty && p === expectedName; + } else { + const [pluginName, pluginOptions] = p; + if (pluginName !== expectedName) { + return false; + } + for (const key of expectedKeys) { + if (pluginOptions[key] !== expectedOptions[key]) { + return false; + } + } + return true; + } + }); +} +function getPluginOption(plugins, name, option) { + const plugin = plugins.find(plugin => { + if (Array.isArray(plugin)) { + return plugin[0] === name; + } else { + return plugin === name; + } + }); + if (plugin && Array.isArray(plugin) && plugin.length > 1) { + return plugin[1][option]; + } + return null; +} +const PIPELINE_PROPOSALS = ["minimal", "fsharp", "hack", "smart"]; +const TOPIC_TOKENS = ["^^", "@@", "^", "%", "#"]; +const RECORD_AND_TUPLE_SYNTAX_TYPES = ["hash", "bar"]; +function validatePlugins(plugins) { + if (hasPlugin(plugins, "decorators")) { + if (hasPlugin(plugins, "decorators-legacy")) { + throw new Error("Cannot use the decorators and decorators-legacy plugin together"); + } + const decoratorsBeforeExport = getPluginOption(plugins, "decorators", "decoratorsBeforeExport"); + if (decoratorsBeforeExport != null && typeof decoratorsBeforeExport !== "boolean") { + throw new Error("'decoratorsBeforeExport' must be a boolean, if specified."); + } + const allowCallParenthesized = getPluginOption(plugins, "decorators", "allowCallParenthesized"); + if (allowCallParenthesized != null && typeof allowCallParenthesized !== "boolean") { + throw new Error("'allowCallParenthesized' must be a boolean."); + } + } + if (hasPlugin(plugins, "flow") && hasPlugin(plugins, "typescript")) { + throw new Error("Cannot combine flow and typescript plugins."); + } + if (hasPlugin(plugins, "placeholders") && hasPlugin(plugins, "v8intrinsic")) { + throw new Error("Cannot combine placeholders and v8intrinsic plugins."); + } + if (hasPlugin(plugins, "pipelineOperator")) { + const proposal = getPluginOption(plugins, "pipelineOperator", "proposal"); + if (!PIPELINE_PROPOSALS.includes(proposal)) { + const proposalList = PIPELINE_PROPOSALS.map(p => `"${p}"`).join(", "); + throw new Error(`"pipelineOperator" requires "proposal" option whose value must be one of: ${proposalList}.`); + } + const tupleSyntaxIsHash = hasPlugin(plugins, ["recordAndTuple", { + syntaxType: "hash" + }]); + if (proposal === "hack") { + if (hasPlugin(plugins, "placeholders")) { + throw new Error("Cannot combine placeholders plugin and Hack-style pipes."); + } + if (hasPlugin(plugins, "v8intrinsic")) { + throw new Error("Cannot combine v8intrinsic plugin and Hack-style pipes."); + } + const topicToken = getPluginOption(plugins, "pipelineOperator", "topicToken"); + if (!TOPIC_TOKENS.includes(topicToken)) { + const tokenList = TOPIC_TOKENS.map(t => `"${t}"`).join(", "); + throw new Error(`"pipelineOperator" in "proposal": "hack" mode also requires a "topicToken" option whose value must be one of: ${tokenList}.`); + } + if (topicToken === "#" && tupleSyntaxIsHash) { + throw new Error('Plugin conflict between `["pipelineOperator", { proposal: "hack", topicToken: "#" }]` and `["recordAndtuple", { syntaxType: "hash"}]`.'); + } + } else if (proposal === "smart" && tupleSyntaxIsHash) { + throw new Error('Plugin conflict between `["pipelineOperator", { proposal: "smart" }]` and `["recordAndtuple", { syntaxType: "hash"}]`.'); + } + } + if (hasPlugin(plugins, "moduleAttributes")) { + { + if (hasPlugin(plugins, "importAssertions") || hasPlugin(plugins, "importAttributes")) { + throw new Error("Cannot combine importAssertions, importAttributes and moduleAttributes plugins."); + } + const moduleAttributesVersionPluginOption = getPluginOption(plugins, "moduleAttributes", "version"); + if (moduleAttributesVersionPluginOption !== "may-2020") { + throw new Error("The 'moduleAttributes' plugin requires a 'version' option," + " representing the last proposal update. Currently, the" + " only supported value is 'may-2020'."); + } + } + } + if (hasPlugin(plugins, "importAssertions") && hasPlugin(plugins, "importAttributes")) { + throw new Error("Cannot combine importAssertions and importAttributes plugins."); + } + if (hasPlugin(plugins, "recordAndTuple") && getPluginOption(plugins, "recordAndTuple", "syntaxType") != null && !RECORD_AND_TUPLE_SYNTAX_TYPES.includes(getPluginOption(plugins, "recordAndTuple", "syntaxType"))) { + throw new Error("The 'syntaxType' option of the 'recordAndTuple' plugin must be one of: " + RECORD_AND_TUPLE_SYNTAX_TYPES.map(p => `'${p}'`).join(", ")); + } + if (hasPlugin(plugins, "asyncDoExpressions") && !hasPlugin(plugins, "doExpressions")) { + const error = new Error("'asyncDoExpressions' requires 'doExpressions', please add 'doExpressions' to parser plugins."); + error.missingPlugins = "doExpressions"; + throw error; + } + if (hasPlugin(plugins, "optionalChainingAssign") && getPluginOption(plugins, "optionalChainingAssign", "version") !== "2023-07") { + throw new Error("The 'optionalChainingAssign' plugin requires a 'version' option," + " representing the last proposal update. Currently, the" + " only supported value is '2023-07'."); + } +} +const mixinPlugins = { + estree, + jsx, + flow, + typescript: typescript$1, + v8intrinsic, + placeholders +}; +const mixinPluginNames = Object.keys(mixinPlugins); +const defaultOptions = { + sourceType: "script", + sourceFilename: undefined, + startColumn: 0, + startLine: 1, + allowAwaitOutsideFunction: false, + allowReturnOutsideFunction: false, + allowNewTargetOutsideFunction: false, + allowImportExportEverywhere: false, + allowSuperOutsideMethod: false, + allowUndeclaredExports: false, + plugins: [], + strictMode: null, + ranges: false, + tokens: false, + createImportExpressions: false, + createParenthesizedExpressions: false, + errorRecovery: false, + attachComment: true, + annexB: true +}; +function getOptions(opts) { + if (opts == null) { + return Object.assign({}, defaultOptions); + } + if (opts.annexB != null && opts.annexB !== false) { + throw new Error("The `annexB` option can only be set to `false`."); + } + const options = {}; + for (const key of Object.keys(defaultOptions)) { + var _opts$key; + options[key] = (_opts$key = opts[key]) != null ? _opts$key : defaultOptions[key]; + } + return options; +} +class ExpressionParser extends LValParser { + checkProto(prop, isRecord, protoRef, refExpressionErrors) { + if (prop.type === "SpreadElement" || this.isObjectMethod(prop) || prop.computed || prop.shorthand) { + return; + } + const key = prop.key; + const name = key.type === "Identifier" ? key.name : key.value; + if (name === "__proto__") { + if (isRecord) { + this.raise(Errors.RecordNoProto, { + at: key + }); + return; + } + if (protoRef.used) { + if (refExpressionErrors) { + if (refExpressionErrors.doubleProtoLoc === null) { + refExpressionErrors.doubleProtoLoc = key.loc.start; + } + } else { + this.raise(Errors.DuplicateProto, { + at: key + }); + } + } + protoRef.used = true; + } + } + shouldExitDescending(expr, potentialArrowAt) { + return expr.type === "ArrowFunctionExpression" && expr.start === potentialArrowAt; + } + getExpression() { + this.enterInitialScopes(); + this.nextToken(); + const expr = this.parseExpression(); + if (!this.match(139)) { + this.unexpected(); + } + this.finalizeRemainingComments(); + expr.comments = this.state.comments; + expr.errors = this.state.errors; + if (this.options.tokens) { + expr.tokens = this.tokens; + } + return expr; + } + parseExpression(disallowIn, refExpressionErrors) { + if (disallowIn) { + return this.disallowInAnd(() => this.parseExpressionBase(refExpressionErrors)); + } + return this.allowInAnd(() => this.parseExpressionBase(refExpressionErrors)); + } + parseExpressionBase(refExpressionErrors) { + const startLoc = this.state.startLoc; + const expr = this.parseMaybeAssign(refExpressionErrors); + if (this.match(12)) { + const node = this.startNodeAt(startLoc); + node.expressions = [expr]; + while (this.eat(12)) { + node.expressions.push(this.parseMaybeAssign(refExpressionErrors)); + } + this.toReferencedList(node.expressions); + return this.finishNode(node, "SequenceExpression"); + } + return expr; + } + parseMaybeAssignDisallowIn(refExpressionErrors, afterLeftParse) { + return this.disallowInAnd(() => this.parseMaybeAssign(refExpressionErrors, afterLeftParse)); + } + parseMaybeAssignAllowIn(refExpressionErrors, afterLeftParse) { + return this.allowInAnd(() => this.parseMaybeAssign(refExpressionErrors, afterLeftParse)); + } + setOptionalParametersError(refExpressionErrors, resultError) { + var _resultError$loc; + refExpressionErrors.optionalParametersLoc = (_resultError$loc = resultError == null ? void 0 : resultError.loc) != null ? _resultError$loc : this.state.startLoc; + } + parseMaybeAssign(refExpressionErrors, afterLeftParse) { + const startLoc = this.state.startLoc; + if (this.isContextual(108)) { + if (this.prodParam.hasYield) { + let left = this.parseYield(); + if (afterLeftParse) { + left = afterLeftParse.call(this, left, startLoc); + } + return left; + } + } + let ownExpressionErrors; + if (refExpressionErrors) { + ownExpressionErrors = false; + } else { + refExpressionErrors = new ExpressionErrors(); + ownExpressionErrors = true; + } + const { + type + } = this.state; + if (type === 10 || tokenIsIdentifier(type)) { + this.state.potentialArrowAt = this.state.start; + } + let left = this.parseMaybeConditional(refExpressionErrors); + if (afterLeftParse) { + left = afterLeftParse.call(this, left, startLoc); + } + if (tokenIsAssignment(this.state.type)) { + const node = this.startNodeAt(startLoc); + const operator = this.state.value; + node.operator = operator; + if (this.match(29)) { + this.toAssignable(left, true); + node.left = left; + const startIndex = startLoc.index; + if (refExpressionErrors.doubleProtoLoc != null && refExpressionErrors.doubleProtoLoc.index >= startIndex) { + refExpressionErrors.doubleProtoLoc = null; + } + if (refExpressionErrors.shorthandAssignLoc != null && refExpressionErrors.shorthandAssignLoc.index >= startIndex) { + refExpressionErrors.shorthandAssignLoc = null; + } + if (refExpressionErrors.privateKeyLoc != null && refExpressionErrors.privateKeyLoc.index >= startIndex) { + this.checkDestructuringPrivate(refExpressionErrors); + refExpressionErrors.privateKeyLoc = null; + } + } else { + node.left = left; + } + this.next(); + node.right = this.parseMaybeAssign(); + this.checkLVal(left, { + in: this.finishNode(node, "AssignmentExpression") + }); + return node; + } else if (ownExpressionErrors) { + this.checkExpressionErrors(refExpressionErrors, true); + } + return left; + } + parseMaybeConditional(refExpressionErrors) { + const startLoc = this.state.startLoc; + const potentialArrowAt = this.state.potentialArrowAt; + const expr = this.parseExprOps(refExpressionErrors); + if (this.shouldExitDescending(expr, potentialArrowAt)) { + return expr; + } + return this.parseConditional(expr, startLoc, refExpressionErrors); + } + parseConditional(expr, startLoc, refExpressionErrors) { + if (this.eat(17)) { + const node = this.startNodeAt(startLoc); + node.test = expr; + node.consequent = this.parseMaybeAssignAllowIn(); + this.expect(14); + node.alternate = this.parseMaybeAssign(); + return this.finishNode(node, "ConditionalExpression"); + } + return expr; + } + parseMaybeUnaryOrPrivate(refExpressionErrors) { + return this.match(138) ? this.parsePrivateName() : this.parseMaybeUnary(refExpressionErrors); + } + parseExprOps(refExpressionErrors) { + const startLoc = this.state.startLoc; + const potentialArrowAt = this.state.potentialArrowAt; + const expr = this.parseMaybeUnaryOrPrivate(refExpressionErrors); + if (this.shouldExitDescending(expr, potentialArrowAt)) { + return expr; + } + return this.parseExprOp(expr, startLoc, -1); + } + parseExprOp(left, leftStartLoc, minPrec) { + if (this.isPrivateName(left)) { + const value = this.getPrivateNameSV(left); + if (minPrec >= tokenOperatorPrecedence(58) || !this.prodParam.hasIn || !this.match(58)) { + this.raise(Errors.PrivateInExpectedIn, { + at: left, + identifierName: value + }); + } + this.classScope.usePrivateName(value, left.loc.start); + } + const op = this.state.type; + if (tokenIsOperator(op) && (this.prodParam.hasIn || !this.match(58))) { + let prec = tokenOperatorPrecedence(op); + if (prec > minPrec) { + if (op === 39) { + this.expectPlugin("pipelineOperator"); + if (this.state.inFSharpPipelineDirectBody) { + return left; + } + this.checkPipelineAtInfixOperator(left, leftStartLoc); + } + const node = this.startNodeAt(leftStartLoc); + node.left = left; + node.operator = this.state.value; + const logical = op === 41 || op === 42; + const coalesce = op === 40; + if (coalesce) { + prec = tokenOperatorPrecedence(42); + } + this.next(); + if (op === 39 && this.hasPlugin(["pipelineOperator", { + proposal: "minimal" + }])) { + if (this.state.type === 96 && this.prodParam.hasAwait) { + throw this.raise(Errors.UnexpectedAwaitAfterPipelineBody, { + at: this.state.startLoc + }); + } + } + node.right = this.parseExprOpRightExpr(op, prec); + const finishedNode = this.finishNode(node, logical || coalesce ? "LogicalExpression" : "BinaryExpression"); + const nextOp = this.state.type; + if (coalesce && (nextOp === 41 || nextOp === 42) || logical && nextOp === 40) { + throw this.raise(Errors.MixingCoalesceWithLogical, { + at: this.state.startLoc + }); + } + return this.parseExprOp(finishedNode, leftStartLoc, minPrec); + } + } + return left; + } + parseExprOpRightExpr(op, prec) { + const startLoc = this.state.startLoc; + switch (op) { + case 39: + switch (this.getPluginOption("pipelineOperator", "proposal")) { + case "hack": + return this.withTopicBindingContext(() => { + return this.parseHackPipeBody(); + }); + case "smart": + return this.withTopicBindingContext(() => { + if (this.prodParam.hasYield && this.isContextual(108)) { + throw this.raise(Errors.PipeBodyIsTighter, { + at: this.state.startLoc + }); + } + return this.parseSmartPipelineBodyInStyle(this.parseExprOpBaseRightExpr(op, prec), startLoc); + }); + case "fsharp": + return this.withSoloAwaitPermittingContext(() => { + return this.parseFSharpPipelineBody(prec); + }); + } + default: + return this.parseExprOpBaseRightExpr(op, prec); + } + } + parseExprOpBaseRightExpr(op, prec) { + const startLoc = this.state.startLoc; + return this.parseExprOp(this.parseMaybeUnaryOrPrivate(), startLoc, tokenIsRightAssociative(op) ? prec - 1 : prec); + } + parseHackPipeBody() { + var _body$extra; + const { + startLoc + } = this.state; + const body = this.parseMaybeAssign(); + const requiredParentheses = UnparenthesizedPipeBodyDescriptions.has(body.type); + if (requiredParentheses && !((_body$extra = body.extra) != null && _body$extra.parenthesized)) { + this.raise(Errors.PipeUnparenthesizedBody, { + at: startLoc, + type: body.type + }); + } + if (!this.topicReferenceWasUsedInCurrentContext()) { + this.raise(Errors.PipeTopicUnused, { + at: startLoc + }); + } + return body; + } + checkExponentialAfterUnary(node) { + if (this.match(57)) { + this.raise(Errors.UnexpectedTokenUnaryExponentiation, { + at: node.argument + }); + } + } + parseMaybeUnary(refExpressionErrors, sawUnary) { + const startLoc = this.state.startLoc; + const isAwait = this.isContextual(96); + if (isAwait && this.isAwaitAllowed()) { + this.next(); + const expr = this.parseAwait(startLoc); + if (!sawUnary) this.checkExponentialAfterUnary(expr); + return expr; + } + const update = this.match(34); + const node = this.startNode(); + if (tokenIsPrefix(this.state.type)) { + node.operator = this.state.value; + node.prefix = true; + if (this.match(72)) { + this.expectPlugin("throwExpressions"); + } + const isDelete = this.match(89); + this.next(); + node.argument = this.parseMaybeUnary(null, true); + this.checkExpressionErrors(refExpressionErrors, true); + if (this.state.strict && isDelete) { + const arg = node.argument; + if (arg.type === "Identifier") { + this.raise(Errors.StrictDelete, { + at: node + }); + } else if (this.hasPropertyAsPrivateName(arg)) { + this.raise(Errors.DeletePrivateField, { + at: node + }); + } + } + if (!update) { + if (!sawUnary) { + this.checkExponentialAfterUnary(node); + } + return this.finishNode(node, "UnaryExpression"); + } + } + const expr = this.parseUpdate(node, update, refExpressionErrors); + if (isAwait) { + const { + type + } = this.state; + const startsExpr = this.hasPlugin("v8intrinsic") ? tokenCanStartExpression(type) : tokenCanStartExpression(type) && !this.match(54); + if (startsExpr && !this.isAmbiguousAwait()) { + this.raiseOverwrite(Errors.AwaitNotInAsyncContext, { + at: startLoc + }); + return this.parseAwait(startLoc); + } + } + return expr; + } + parseUpdate(node, update, refExpressionErrors) { + if (update) { + const updateExpressionNode = node; + this.checkLVal(updateExpressionNode.argument, { + in: this.finishNode(updateExpressionNode, "UpdateExpression") + }); + return node; + } + const startLoc = this.state.startLoc; + let expr = this.parseExprSubscripts(refExpressionErrors); + if (this.checkExpressionErrors(refExpressionErrors, false)) return expr; + while (tokenIsPostfix(this.state.type) && !this.canInsertSemicolon()) { + const node = this.startNodeAt(startLoc); + node.operator = this.state.value; + node.prefix = false; + node.argument = expr; + this.next(); + this.checkLVal(expr, { + in: expr = this.finishNode(node, "UpdateExpression") + }); + } + return expr; + } + parseExprSubscripts(refExpressionErrors) { + const startLoc = this.state.startLoc; + const potentialArrowAt = this.state.potentialArrowAt; + const expr = this.parseExprAtom(refExpressionErrors); + if (this.shouldExitDescending(expr, potentialArrowAt)) { + return expr; + } + return this.parseSubscripts(expr, startLoc); + } + parseSubscripts(base, startLoc, noCalls) { + const state = { + optionalChainMember: false, + maybeAsyncArrow: this.atPossibleAsyncArrow(base), + stop: false + }; + do { + base = this.parseSubscript(base, startLoc, noCalls, state); + state.maybeAsyncArrow = false; + } while (!state.stop); + return base; + } + parseSubscript(base, startLoc, noCalls, state) { + const { + type + } = this.state; + if (!noCalls && type === 15) { + return this.parseBind(base, startLoc, noCalls, state); + } else if (tokenIsTemplate(type)) { + return this.parseTaggedTemplateExpression(base, startLoc, state); + } + let optional = false; + if (type === 18) { + if (noCalls) { + this.raise(Errors.OptionalChainingNoNew, { + at: this.state.startLoc + }); + if (this.lookaheadCharCode() === 40) { + state.stop = true; + return base; + } + } + state.optionalChainMember = optional = true; + this.next(); + } + if (!noCalls && this.match(10)) { + return this.parseCoverCallAndAsyncArrowHead(base, startLoc, state, optional); + } else { + const computed = this.eat(0); + if (computed || optional || this.eat(16)) { + return this.parseMember(base, startLoc, state, computed, optional); + } else { + state.stop = true; + return base; + } + } + } + parseMember(base, startLoc, state, computed, optional) { + const node = this.startNodeAt(startLoc); + node.object = base; + node.computed = computed; + if (computed) { + node.property = this.parseExpression(); + this.expect(3); + } else if (this.match(138)) { + if (base.type === "Super") { + this.raise(Errors.SuperPrivateField, { + at: startLoc + }); + } + this.classScope.usePrivateName(this.state.value, this.state.startLoc); + node.property = this.parsePrivateName(); + } else { + node.property = this.parseIdentifier(true); + } + if (state.optionalChainMember) { + node.optional = optional; + return this.finishNode(node, "OptionalMemberExpression"); + } else { + return this.finishNode(node, "MemberExpression"); + } + } + parseBind(base, startLoc, noCalls, state) { + const node = this.startNodeAt(startLoc); + node.object = base; + this.next(); + node.callee = this.parseNoCallExpr(); + state.stop = true; + return this.parseSubscripts(this.finishNode(node, "BindExpression"), startLoc, noCalls); + } + parseCoverCallAndAsyncArrowHead(base, startLoc, state, optional) { + const oldMaybeInArrowParameters = this.state.maybeInArrowParameters; + let refExpressionErrors = null; + this.state.maybeInArrowParameters = true; + this.next(); + const node = this.startNodeAt(startLoc); + node.callee = base; + const { + maybeAsyncArrow, + optionalChainMember + } = state; + if (maybeAsyncArrow) { + this.expressionScope.enter(newAsyncArrowScope()); + refExpressionErrors = new ExpressionErrors(); + } + if (optionalChainMember) { + node.optional = optional; + } + if (optional) { + node.arguments = this.parseCallExpressionArguments(11); + } else { + node.arguments = this.parseCallExpressionArguments(11, base.type === "Import", base.type !== "Super", node, refExpressionErrors); + } + let finishedNode = this.finishCallExpression(node, optionalChainMember); + if (maybeAsyncArrow && this.shouldParseAsyncArrow() && !optional) { + state.stop = true; + this.checkDestructuringPrivate(refExpressionErrors); + this.expressionScope.validateAsPattern(); + this.expressionScope.exit(); + finishedNode = this.parseAsyncArrowFromCallExpression(this.startNodeAt(startLoc), finishedNode); + } else { + if (maybeAsyncArrow) { + this.checkExpressionErrors(refExpressionErrors, true); + this.expressionScope.exit(); + } + this.toReferencedArguments(finishedNode); + } + this.state.maybeInArrowParameters = oldMaybeInArrowParameters; + return finishedNode; + } + toReferencedArguments(node, isParenthesizedExpr) { + this.toReferencedListDeep(node.arguments, isParenthesizedExpr); + } + parseTaggedTemplateExpression(base, startLoc, state) { + const node = this.startNodeAt(startLoc); + node.tag = base; + node.quasi = this.parseTemplate(true); + if (state.optionalChainMember) { + this.raise(Errors.OptionalChainingNoTemplate, { + at: startLoc + }); + } + return this.finishNode(node, "TaggedTemplateExpression"); + } + atPossibleAsyncArrow(base) { + return base.type === "Identifier" && base.name === "async" && this.state.lastTokEndLoc.index === base.end && !this.canInsertSemicolon() && base.end - base.start === 5 && base.start === this.state.potentialArrowAt; + } + expectImportAttributesPlugin() { + if (!this.hasPlugin("importAssertions")) { + this.expectPlugin("importAttributes"); + } + } + finishCallExpression(node, optional) { + if (node.callee.type === "Import") { + if (node.arguments.length === 2) { + { + if (!this.hasPlugin("moduleAttributes")) { + this.expectImportAttributesPlugin(); + } + } + } + if (node.arguments.length === 0 || node.arguments.length > 2) { + this.raise(Errors.ImportCallArity, { + at: node, + maxArgumentCount: this.hasPlugin("importAttributes") || this.hasPlugin("importAssertions") || this.hasPlugin("moduleAttributes") ? 2 : 1 + }); + } else { + for (const arg of node.arguments) { + if (arg.type === "SpreadElement") { + this.raise(Errors.ImportCallSpreadArgument, { + at: arg + }); + } + } + } + } + return this.finishNode(node, optional ? "OptionalCallExpression" : "CallExpression"); + } + parseCallExpressionArguments(close, dynamicImport, allowPlaceholder, nodeForExtra, refExpressionErrors) { + const elts = []; + let first = true; + const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody; + this.state.inFSharpPipelineDirectBody = false; + while (!this.eat(close)) { + if (first) { + first = false; + } else { + this.expect(12); + if (this.match(close)) { + if (dynamicImport && !this.hasPlugin("importAttributes") && !this.hasPlugin("importAssertions") && !this.hasPlugin("moduleAttributes")) { + this.raise(Errors.ImportCallArgumentTrailingComma, { + at: this.state.lastTokStartLoc + }); + } + if (nodeForExtra) { + this.addTrailingCommaExtraToNode(nodeForExtra); + } + this.next(); + break; + } + } + elts.push(this.parseExprListItem(false, refExpressionErrors, allowPlaceholder)); + } + this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody; + return elts; + } + shouldParseAsyncArrow() { + return this.match(19) && !this.canInsertSemicolon(); + } + parseAsyncArrowFromCallExpression(node, call) { + var _call$extra; + this.resetPreviousNodeTrailingComments(call); + this.expect(19); + this.parseArrowExpression(node, call.arguments, true, (_call$extra = call.extra) == null ? void 0 : _call$extra.trailingCommaLoc); + if (call.innerComments) { + setInnerComments(node, call.innerComments); + } + if (call.callee.trailingComments) { + setInnerComments(node, call.callee.trailingComments); + } + return node; + } + parseNoCallExpr() { + const startLoc = this.state.startLoc; + return this.parseSubscripts(this.parseExprAtom(), startLoc, true); + } + parseExprAtom(refExpressionErrors) { + let node; + let decorators = null; + const { + type + } = this.state; + switch (type) { + case 79: + return this.parseSuper(); + case 83: + node = this.startNode(); + this.next(); + if (this.match(16)) { + return this.parseImportMetaProperty(node); + } + if (this.match(10)) { + if (this.options.createImportExpressions) { + return this.parseImportCall(node); + } else { + return this.finishNode(node, "Import"); + } + } else { + this.raise(Errors.UnsupportedImport, { + at: this.state.lastTokStartLoc + }); + return this.finishNode(node, "Import"); + } + case 78: + node = this.startNode(); + this.next(); + return this.finishNode(node, "ThisExpression"); + case 90: + { + return this.parseDo(this.startNode(), false); + } + case 56: + case 31: + { + this.readRegexp(); + return this.parseRegExpLiteral(this.state.value); + } + case 134: + return this.parseNumericLiteral(this.state.value); + case 135: + return this.parseBigIntLiteral(this.state.value); + case 136: + return this.parseDecimalLiteral(this.state.value); + case 133: + return this.parseStringLiteral(this.state.value); + case 84: + return this.parseNullLiteral(); + case 85: + return this.parseBooleanLiteral(true); + case 86: + return this.parseBooleanLiteral(false); + case 10: + { + const canBeArrow = this.state.potentialArrowAt === this.state.start; + return this.parseParenAndDistinguishExpression(canBeArrow); + } + case 2: + case 1: + { + return this.parseArrayLike(this.state.type === 2 ? 4 : 3, false, true); + } + case 0: + { + return this.parseArrayLike(3, true, false, refExpressionErrors); + } + case 6: + case 7: + { + return this.parseObjectLike(this.state.type === 6 ? 9 : 8, false, true); + } + case 5: + { + return this.parseObjectLike(8, false, false, refExpressionErrors); + } + case 68: + return this.parseFunctionOrFunctionSent(); + case 26: + decorators = this.parseDecorators(); + case 80: + return this.parseClass(this.maybeTakeDecorators(decorators, this.startNode()), false); + case 77: + return this.parseNewOrNewTarget(); + case 25: + case 24: + return this.parseTemplate(false); + case 15: + { + node = this.startNode(); + this.next(); + node.object = null; + const callee = node.callee = this.parseNoCallExpr(); + if (callee.type === "MemberExpression") { + return this.finishNode(node, "BindExpression"); + } else { + throw this.raise(Errors.UnsupportedBind, { + at: callee + }); + } + } + case 138: + { + this.raise(Errors.PrivateInExpectedIn, { + at: this.state.startLoc, + identifierName: this.state.value + }); + return this.parsePrivateName(); + } + case 33: + { + return this.parseTopicReferenceThenEqualsSign(54, "%"); + } + case 32: + { + return this.parseTopicReferenceThenEqualsSign(44, "^"); + } + case 37: + case 38: + { + return this.parseTopicReference("hack"); + } + case 44: + case 54: + case 27: + { + const pipeProposal = this.getPluginOption("pipelineOperator", "proposal"); + if (pipeProposal) { + return this.parseTopicReference(pipeProposal); + } + this.unexpected(); + break; + } + case 47: + { + const lookaheadCh = this.input.codePointAt(this.nextTokenStart()); + if (isIdentifierStart(lookaheadCh) || lookaheadCh === 62) { + this.expectOnePlugin(["jsx", "flow", "typescript"]); + } else { + this.unexpected(); + } + break; + } + default: + if (tokenIsIdentifier(type)) { + if (this.isContextual(127) && this.lookaheadInLineCharCode() === 123) { + return this.parseModuleExpression(); + } + const canBeArrow = this.state.potentialArrowAt === this.state.start; + const containsEsc = this.state.containsEsc; + const id = this.parseIdentifier(); + if (!containsEsc && id.name === "async" && !this.canInsertSemicolon()) { + const { + type + } = this.state; + if (type === 68) { + this.resetPreviousNodeTrailingComments(id); + this.next(); + return this.parseAsyncFunctionExpression(this.startNodeAtNode(id)); + } else if (tokenIsIdentifier(type)) { + if (this.lookaheadCharCode() === 61) { + return this.parseAsyncArrowUnaryFunction(this.startNodeAtNode(id)); + } else { + return id; + } + } else if (type === 90) { + this.resetPreviousNodeTrailingComments(id); + return this.parseDo(this.startNodeAtNode(id), true); + } + } + if (canBeArrow && this.match(19) && !this.canInsertSemicolon()) { + this.next(); + return this.parseArrowExpression(this.startNodeAtNode(id), [id], false); + } + return id; + } else { + this.unexpected(); + } + } + } + parseTopicReferenceThenEqualsSign(topicTokenType, topicTokenValue) { + const pipeProposal = this.getPluginOption("pipelineOperator", "proposal"); + if (pipeProposal) { + this.state.type = topicTokenType; + this.state.value = topicTokenValue; + this.state.pos--; + this.state.end--; + this.state.endLoc = createPositionWithColumnOffset(this.state.endLoc, -1); + return this.parseTopicReference(pipeProposal); + } else { + this.unexpected(); + } + } + parseTopicReference(pipeProposal) { + const node = this.startNode(); + const startLoc = this.state.startLoc; + const tokenType = this.state.type; + this.next(); + return this.finishTopicReference(node, startLoc, pipeProposal, tokenType); + } + finishTopicReference(node, startLoc, pipeProposal, tokenType) { + if (this.testTopicReferenceConfiguration(pipeProposal, startLoc, tokenType)) { + const nodeType = pipeProposal === "smart" ? "PipelinePrimaryTopicReference" : "TopicReference"; + if (!this.topicReferenceIsAllowedInCurrentContext()) { + this.raise(pipeProposal === "smart" ? Errors.PrimaryTopicNotAllowed : Errors.PipeTopicUnbound, { + at: startLoc + }); + } + this.registerTopicReference(); + return this.finishNode(node, nodeType); + } else { + throw this.raise(Errors.PipeTopicUnconfiguredToken, { + at: startLoc, + token: tokenLabelName(tokenType) + }); + } + } + testTopicReferenceConfiguration(pipeProposal, startLoc, tokenType) { + switch (pipeProposal) { + case "hack": + { + return this.hasPlugin(["pipelineOperator", { + topicToken: tokenLabelName(tokenType) + }]); + } + case "smart": + return tokenType === 27; + default: + throw this.raise(Errors.PipeTopicRequiresHackPipes, { + at: startLoc + }); + } + } + parseAsyncArrowUnaryFunction(node) { + this.prodParam.enter(functionFlags(true, this.prodParam.hasYield)); + const params = [this.parseIdentifier()]; + this.prodParam.exit(); + if (this.hasPrecedingLineBreak()) { + this.raise(Errors.LineTerminatorBeforeArrow, { + at: this.state.curPosition() + }); + } + this.expect(19); + return this.parseArrowExpression(node, params, true); + } + parseDo(node, isAsync) { + this.expectPlugin("doExpressions"); + if (isAsync) { + this.expectPlugin("asyncDoExpressions"); + } + node.async = isAsync; + this.next(); + const oldLabels = this.state.labels; + this.state.labels = []; + if (isAsync) { + this.prodParam.enter(2); + node.body = this.parseBlock(); + this.prodParam.exit(); + } else { + node.body = this.parseBlock(); + } + this.state.labels = oldLabels; + return this.finishNode(node, "DoExpression"); + } + parseSuper() { + const node = this.startNode(); + this.next(); + if (this.match(10) && !this.scope.allowDirectSuper && !this.options.allowSuperOutsideMethod) { + this.raise(Errors.SuperNotAllowed, { + at: node + }); + } else if (!this.scope.allowSuper && !this.options.allowSuperOutsideMethod) { + this.raise(Errors.UnexpectedSuper, { + at: node + }); + } + if (!this.match(10) && !this.match(0) && !this.match(16)) { + this.raise(Errors.UnsupportedSuper, { + at: node + }); + } + return this.finishNode(node, "Super"); + } + parsePrivateName() { + const node = this.startNode(); + const id = this.startNodeAt(createPositionWithColumnOffset(this.state.startLoc, 1)); + const name = this.state.value; + this.next(); + node.id = this.createIdentifier(id, name); + return this.finishNode(node, "PrivateName"); + } + parseFunctionOrFunctionSent() { + const node = this.startNode(); + this.next(); + if (this.prodParam.hasYield && this.match(16)) { + const meta = this.createIdentifier(this.startNodeAtNode(node), "function"); + this.next(); + if (this.match(103)) { + this.expectPlugin("functionSent"); + } else if (!this.hasPlugin("functionSent")) { + this.unexpected(); + } + return this.parseMetaProperty(node, meta, "sent"); + } + return this.parseFunction(node); + } + parseMetaProperty(node, meta, propertyName) { + node.meta = meta; + const containsEsc = this.state.containsEsc; + node.property = this.parseIdentifier(true); + if (node.property.name !== propertyName || containsEsc) { + this.raise(Errors.UnsupportedMetaProperty, { + at: node.property, + target: meta.name, + onlyValidPropertyName: propertyName + }); + } + return this.finishNode(node, "MetaProperty"); + } + parseImportMetaProperty(node) { + const id = this.createIdentifier(this.startNodeAtNode(node), "import"); + this.next(); + if (this.isContextual(101)) { + if (!this.inModule) { + this.raise(Errors.ImportMetaOutsideModule, { + at: id + }); + } + this.sawUnambiguousESM = true; + } else if (this.isContextual(105) || this.isContextual(97)) { + const isSource = this.isContextual(105); + if (!isSource) this.unexpected(); + this.expectPlugin(isSource ? "sourcePhaseImports" : "deferredImportEvaluation"); + if (!this.options.createImportExpressions) { + throw this.raise(Errors.DynamicImportPhaseRequiresImportExpressions, { + at: this.state.startLoc, + phase: this.state.value + }); + } + this.next(); + node.phase = isSource ? "source" : "defer"; + return this.parseImportCall(node); + } + return this.parseMetaProperty(node, id, "meta"); + } + parseLiteralAtNode(value, type, node) { + this.addExtra(node, "rawValue", value); + this.addExtra(node, "raw", this.input.slice(node.start, this.state.end)); + node.value = value; + this.next(); + return this.finishNode(node, type); + } + parseLiteral(value, type) { + const node = this.startNode(); + return this.parseLiteralAtNode(value, type, node); + } + parseStringLiteral(value) { + return this.parseLiteral(value, "StringLiteral"); + } + parseNumericLiteral(value) { + return this.parseLiteral(value, "NumericLiteral"); + } + parseBigIntLiteral(value) { + return this.parseLiteral(value, "BigIntLiteral"); + } + parseDecimalLiteral(value) { + return this.parseLiteral(value, "DecimalLiteral"); + } + parseRegExpLiteral(value) { + const node = this.parseLiteral(value.value, "RegExpLiteral"); + node.pattern = value.pattern; + node.flags = value.flags; + return node; + } + parseBooleanLiteral(value) { + const node = this.startNode(); + node.value = value; + this.next(); + return this.finishNode(node, "BooleanLiteral"); + } + parseNullLiteral() { + const node = this.startNode(); + this.next(); + return this.finishNode(node, "NullLiteral"); + } + parseParenAndDistinguishExpression(canBeArrow) { + const startLoc = this.state.startLoc; + let val; + this.next(); + this.expressionScope.enter(newArrowHeadScope()); + const oldMaybeInArrowParameters = this.state.maybeInArrowParameters; + const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody; + this.state.maybeInArrowParameters = true; + this.state.inFSharpPipelineDirectBody = false; + const innerStartLoc = this.state.startLoc; + const exprList = []; + const refExpressionErrors = new ExpressionErrors(); + let first = true; + let spreadStartLoc; + let optionalCommaStartLoc; + while (!this.match(11)) { + if (first) { + first = false; + } else { + this.expect(12, refExpressionErrors.optionalParametersLoc === null ? null : refExpressionErrors.optionalParametersLoc); + if (this.match(11)) { + optionalCommaStartLoc = this.state.startLoc; + break; + } + } + if (this.match(21)) { + const spreadNodeStartLoc = this.state.startLoc; + spreadStartLoc = this.state.startLoc; + exprList.push(this.parseParenItem(this.parseRestBinding(), spreadNodeStartLoc)); + if (!this.checkCommaAfterRest(41)) { + break; + } + } else { + exprList.push(this.parseMaybeAssignAllowIn(refExpressionErrors, this.parseParenItem)); + } + } + const innerEndLoc = this.state.lastTokEndLoc; + this.expect(11); + this.state.maybeInArrowParameters = oldMaybeInArrowParameters; + this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody; + let arrowNode = this.startNodeAt(startLoc); + if (canBeArrow && this.shouldParseArrow(exprList) && (arrowNode = this.parseArrow(arrowNode))) { + this.checkDestructuringPrivate(refExpressionErrors); + this.expressionScope.validateAsPattern(); + this.expressionScope.exit(); + this.parseArrowExpression(arrowNode, exprList, false); + return arrowNode; + } + this.expressionScope.exit(); + if (!exprList.length) { + this.unexpected(this.state.lastTokStartLoc); + } + if (optionalCommaStartLoc) this.unexpected(optionalCommaStartLoc); + if (spreadStartLoc) this.unexpected(spreadStartLoc); + this.checkExpressionErrors(refExpressionErrors, true); + this.toReferencedListDeep(exprList, true); + if (exprList.length > 1) { + val = this.startNodeAt(innerStartLoc); + val.expressions = exprList; + this.finishNode(val, "SequenceExpression"); + this.resetEndLocation(val, innerEndLoc); + } else { + val = exprList[0]; + } + return this.wrapParenthesis(startLoc, val); + } + wrapParenthesis(startLoc, expression) { + if (!this.options.createParenthesizedExpressions) { + this.addExtra(expression, "parenthesized", true); + this.addExtra(expression, "parenStart", startLoc.index); + this.takeSurroundingComments(expression, startLoc.index, this.state.lastTokEndLoc.index); + return expression; + } + const parenExpression = this.startNodeAt(startLoc); + parenExpression.expression = expression; + return this.finishNode(parenExpression, "ParenthesizedExpression"); + } + shouldParseArrow(params) { + return !this.canInsertSemicolon(); + } + parseArrow(node) { + if (this.eat(19)) { + return node; + } + } + parseParenItem(node, startLoc) { + return node; + } + parseNewOrNewTarget() { + const node = this.startNode(); + this.next(); + if (this.match(16)) { + const meta = this.createIdentifier(this.startNodeAtNode(node), "new"); + this.next(); + const metaProp = this.parseMetaProperty(node, meta, "target"); + if (!this.scope.inNonArrowFunction && !this.scope.inClass && !this.options.allowNewTargetOutsideFunction) { + this.raise(Errors.UnexpectedNewTarget, { + at: metaProp + }); + } + return metaProp; + } + return this.parseNew(node); + } + parseNew(node) { + this.parseNewCallee(node); + if (this.eat(10)) { + const args = this.parseExprList(11); + this.toReferencedList(args); + node.arguments = args; + } else { + node.arguments = []; + } + return this.finishNode(node, "NewExpression"); + } + parseNewCallee(node) { + const isImport = this.match(83); + const callee = this.parseNoCallExpr(); + node.callee = callee; + if (isImport && (callee.type === "Import" || callee.type === "ImportExpression")) { + this.raise(Errors.ImportCallNotNewExpression, { + at: callee + }); + } + } + parseTemplateElement(isTagged) { + const { + start, + startLoc, + end, + value + } = this.state; + const elemStart = start + 1; + const elem = this.startNodeAt(createPositionWithColumnOffset(startLoc, 1)); + if (value === null) { + if (!isTagged) { + this.raise(Errors.InvalidEscapeSequenceTemplate, { + at: createPositionWithColumnOffset(this.state.firstInvalidTemplateEscapePos, 1) + }); + } + } + const isTail = this.match(24); + const endOffset = isTail ? -1 : -2; + const elemEnd = end + endOffset; + elem.value = { + raw: this.input.slice(elemStart, elemEnd).replace(/\r\n?/g, "\n"), + cooked: value === null ? null : value.slice(1, endOffset) + }; + elem.tail = isTail; + this.next(); + const finishedNode = this.finishNode(elem, "TemplateElement"); + this.resetEndLocation(finishedNode, createPositionWithColumnOffset(this.state.lastTokEndLoc, endOffset)); + return finishedNode; + } + parseTemplate(isTagged) { + const node = this.startNode(); + node.expressions = []; + let curElt = this.parseTemplateElement(isTagged); + node.quasis = [curElt]; + while (!curElt.tail) { + node.expressions.push(this.parseTemplateSubstitution()); + this.readTemplateContinuation(); + node.quasis.push(curElt = this.parseTemplateElement(isTagged)); + } + return this.finishNode(node, "TemplateLiteral"); + } + parseTemplateSubstitution() { + return this.parseExpression(); + } + parseObjectLike(close, isPattern, isRecord, refExpressionErrors) { + if (isRecord) { + this.expectPlugin("recordAndTuple"); + } + const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody; + this.state.inFSharpPipelineDirectBody = false; + const propHash = Object.create(null); + let first = true; + const node = this.startNode(); + node.properties = []; + this.next(); + while (!this.match(close)) { + if (first) { + first = false; + } else { + this.expect(12); + if (this.match(close)) { + this.addTrailingCommaExtraToNode(node); + break; + } + } + let prop; + if (isPattern) { + prop = this.parseBindingProperty(); + } else { + prop = this.parsePropertyDefinition(refExpressionErrors); + this.checkProto(prop, isRecord, propHash, refExpressionErrors); + } + if (isRecord && !this.isObjectProperty(prop) && prop.type !== "SpreadElement") { + this.raise(Errors.InvalidRecordProperty, { + at: prop + }); + } + if (prop.shorthand) { + this.addExtra(prop, "shorthand", true); + } + node.properties.push(prop); + } + this.next(); + this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody; + let type = "ObjectExpression"; + if (isPattern) { + type = "ObjectPattern"; + } else if (isRecord) { + type = "RecordExpression"; + } + return this.finishNode(node, type); + } + addTrailingCommaExtraToNode(node) { + this.addExtra(node, "trailingComma", this.state.lastTokStart); + this.addExtra(node, "trailingCommaLoc", this.state.lastTokStartLoc, false); + } + maybeAsyncOrAccessorProp(prop) { + return !prop.computed && prop.key.type === "Identifier" && (this.isLiteralPropertyName() || this.match(0) || this.match(55)); + } + parsePropertyDefinition(refExpressionErrors) { + let decorators = []; + if (this.match(26)) { + if (this.hasPlugin("decorators")) { + this.raise(Errors.UnsupportedPropertyDecorator, { + at: this.state.startLoc + }); + } + while (this.match(26)) { + decorators.push(this.parseDecorator()); + } + } + const prop = this.startNode(); + let isAsync = false; + let isAccessor = false; + let startLoc; + if (this.match(21)) { + if (decorators.length) this.unexpected(); + return this.parseSpread(); + } + if (decorators.length) { + prop.decorators = decorators; + decorators = []; + } + prop.method = false; + if (refExpressionErrors) { + startLoc = this.state.startLoc; + } + let isGenerator = this.eat(55); + this.parsePropertyNamePrefixOperator(prop); + const containsEsc = this.state.containsEsc; + const key = this.parsePropertyName(prop, refExpressionErrors); + if (!isGenerator && !containsEsc && this.maybeAsyncOrAccessorProp(prop)) { + const keyName = key.name; + if (keyName === "async" && !this.hasPrecedingLineBreak()) { + isAsync = true; + this.resetPreviousNodeTrailingComments(key); + isGenerator = this.eat(55); + this.parsePropertyName(prop); + } + if (keyName === "get" || keyName === "set") { + isAccessor = true; + this.resetPreviousNodeTrailingComments(key); + prop.kind = keyName; + if (this.match(55)) { + isGenerator = true; + this.raise(Errors.AccessorIsGenerator, { + at: this.state.curPosition(), + kind: keyName + }); + this.next(); + } + this.parsePropertyName(prop); + } + } + return this.parseObjPropValue(prop, startLoc, isGenerator, isAsync, false, isAccessor, refExpressionErrors); + } + getGetterSetterExpectedParamCount(method) { + return method.kind === "get" ? 0 : 1; + } + getObjectOrClassMethodParams(method) { + return method.params; + } + checkGetterSetterParams(method) { + var _params; + const paramCount = this.getGetterSetterExpectedParamCount(method); + const params = this.getObjectOrClassMethodParams(method); + if (params.length !== paramCount) { + this.raise(method.kind === "get" ? Errors.BadGetterArity : Errors.BadSetterArity, { + at: method + }); + } + if (method.kind === "set" && ((_params = params[params.length - 1]) == null ? void 0 : _params.type) === "RestElement") { + this.raise(Errors.BadSetterRestParameter, { + at: method + }); + } + } + parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor) { + if (isAccessor) { + const finishedProp = this.parseMethod(prop, isGenerator, false, false, false, "ObjectMethod"); + this.checkGetterSetterParams(finishedProp); + return finishedProp; + } + if (isAsync || isGenerator || this.match(10)) { + if (isPattern) this.unexpected(); + prop.kind = "method"; + prop.method = true; + return this.parseMethod(prop, isGenerator, isAsync, false, false, "ObjectMethod"); + } + } + parseObjectProperty(prop, startLoc, isPattern, refExpressionErrors) { + prop.shorthand = false; + if (this.eat(14)) { + prop.value = isPattern ? this.parseMaybeDefault(this.state.startLoc) : this.parseMaybeAssignAllowIn(refExpressionErrors); + return this.finishNode(prop, "ObjectProperty"); + } + if (!prop.computed && prop.key.type === "Identifier") { + this.checkReservedWord(prop.key.name, prop.key.loc.start, true, false); + if (isPattern) { + prop.value = this.parseMaybeDefault(startLoc, cloneIdentifier(prop.key)); + } else if (this.match(29)) { + const shorthandAssignLoc = this.state.startLoc; + if (refExpressionErrors != null) { + if (refExpressionErrors.shorthandAssignLoc === null) { + refExpressionErrors.shorthandAssignLoc = shorthandAssignLoc; + } + } else { + this.raise(Errors.InvalidCoverInitializedName, { + at: shorthandAssignLoc + }); + } + prop.value = this.parseMaybeDefault(startLoc, cloneIdentifier(prop.key)); + } else { + prop.value = cloneIdentifier(prop.key); + } + prop.shorthand = true; + return this.finishNode(prop, "ObjectProperty"); + } + } + parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors) { + const node = this.parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor) || this.parseObjectProperty(prop, startLoc, isPattern, refExpressionErrors); + if (!node) this.unexpected(); + return node; + } + parsePropertyName(prop, refExpressionErrors) { + if (this.eat(0)) { + prop.computed = true; + prop.key = this.parseMaybeAssignAllowIn(); + this.expect(3); + } else { + const { + type, + value + } = this.state; + let key; + if (tokenIsKeywordOrIdentifier(type)) { + key = this.parseIdentifier(true); + } else { + switch (type) { + case 134: + key = this.parseNumericLiteral(value); + break; + case 133: + key = this.parseStringLiteral(value); + break; + case 135: + key = this.parseBigIntLiteral(value); + break; + case 136: + key = this.parseDecimalLiteral(value); + break; + case 138: + { + const privateKeyLoc = this.state.startLoc; + if (refExpressionErrors != null) { + if (refExpressionErrors.privateKeyLoc === null) { + refExpressionErrors.privateKeyLoc = privateKeyLoc; + } + } else { + this.raise(Errors.UnexpectedPrivateField, { + at: privateKeyLoc + }); + } + key = this.parsePrivateName(); + break; + } + default: + this.unexpected(); + } + } + prop.key = key; + if (type !== 138) { + prop.computed = false; + } + } + return prop.key; + } + initFunction(node, isAsync) { + node.id = null; + node.generator = false; + node.async = isAsync; + } + parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope = false) { + this.initFunction(node, isAsync); + node.generator = isGenerator; + this.scope.enter(2 | 16 | (inClassScope ? 64 : 0) | (allowDirectSuper ? 32 : 0)); + this.prodParam.enter(functionFlags(isAsync, node.generator)); + this.parseFunctionParams(node, isConstructor); + const finishedNode = this.parseFunctionBodyAndFinish(node, type, true); + this.prodParam.exit(); + this.scope.exit(); + return finishedNode; + } + parseArrayLike(close, canBePattern, isTuple, refExpressionErrors) { + if (isTuple) { + this.expectPlugin("recordAndTuple"); + } + const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody; + this.state.inFSharpPipelineDirectBody = false; + const node = this.startNode(); + this.next(); + node.elements = this.parseExprList(close, !isTuple, refExpressionErrors, node); + this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody; + return this.finishNode(node, isTuple ? "TupleExpression" : "ArrayExpression"); + } + parseArrowExpression(node, params, isAsync, trailingCommaLoc) { + this.scope.enter(2 | 4); + let flags = functionFlags(isAsync, false); + if (!this.match(5) && this.prodParam.hasIn) { + flags |= 8; + } + this.prodParam.enter(flags); + this.initFunction(node, isAsync); + const oldMaybeInArrowParameters = this.state.maybeInArrowParameters; + if (params) { + this.state.maybeInArrowParameters = true; + this.setArrowFunctionParameters(node, params, trailingCommaLoc); + } + this.state.maybeInArrowParameters = false; + this.parseFunctionBody(node, true); + this.prodParam.exit(); + this.scope.exit(); + this.state.maybeInArrowParameters = oldMaybeInArrowParameters; + return this.finishNode(node, "ArrowFunctionExpression"); + } + setArrowFunctionParameters(node, params, trailingCommaLoc) { + this.toAssignableList(params, trailingCommaLoc, false); + node.params = params; + } + parseFunctionBodyAndFinish(node, type, isMethod = false) { + this.parseFunctionBody(node, false, isMethod); + return this.finishNode(node, type); + } + parseFunctionBody(node, allowExpression, isMethod = false) { + const isExpression = allowExpression && !this.match(5); + this.expressionScope.enter(newExpressionScope()); + if (isExpression) { + node.body = this.parseMaybeAssign(); + this.checkParams(node, false, allowExpression, false); + } else { + const oldStrict = this.state.strict; + const oldLabels = this.state.labels; + this.state.labels = []; + this.prodParam.enter(this.prodParam.currentFlags() | 4); + node.body = this.parseBlock(true, false, hasStrictModeDirective => { + const nonSimple = !this.isSimpleParamList(node.params); + if (hasStrictModeDirective && nonSimple) { + this.raise(Errors.IllegalLanguageModeDirective, { + at: (node.kind === "method" || node.kind === "constructor") && !!node.key ? node.key.loc.end : node + }); + } + const strictModeChanged = !oldStrict && this.state.strict; + this.checkParams(node, !this.state.strict && !allowExpression && !isMethod && !nonSimple, allowExpression, strictModeChanged); + if (this.state.strict && node.id) { + this.checkIdentifier(node.id, 65, strictModeChanged); + } + }); + this.prodParam.exit(); + this.state.labels = oldLabels; + } + this.expressionScope.exit(); + } + isSimpleParameter(node) { + return node.type === "Identifier"; + } + isSimpleParamList(params) { + for (let i = 0, len = params.length; i < len; i++) { + if (!this.isSimpleParameter(params[i])) return false; + } + return true; + } + checkParams(node, allowDuplicates, isArrowFunction, strictModeChanged = true) { + const checkClashes = !allowDuplicates && new Set(); + const formalParameters = { + type: "FormalParameters" + }; + for (const param of node.params) { + this.checkLVal(param, { + in: formalParameters, + binding: 5, + checkClashes, + strictModeChanged + }); + } + } + parseExprList(close, allowEmpty, refExpressionErrors, nodeForExtra) { + const elts = []; + let first = true; + while (!this.eat(close)) { + if (first) { + first = false; + } else { + this.expect(12); + if (this.match(close)) { + if (nodeForExtra) { + this.addTrailingCommaExtraToNode(nodeForExtra); + } + this.next(); + break; + } + } + elts.push(this.parseExprListItem(allowEmpty, refExpressionErrors)); + } + return elts; + } + parseExprListItem(allowEmpty, refExpressionErrors, allowPlaceholder) { + let elt; + if (this.match(12)) { + if (!allowEmpty) { + this.raise(Errors.UnexpectedToken, { + at: this.state.curPosition(), + unexpected: "," + }); + } + elt = null; + } else if (this.match(21)) { + const spreadNodeStartLoc = this.state.startLoc; + elt = this.parseParenItem(this.parseSpread(refExpressionErrors), spreadNodeStartLoc); + } else if (this.match(17)) { + this.expectPlugin("partialApplication"); + if (!allowPlaceholder) { + this.raise(Errors.UnexpectedArgumentPlaceholder, { + at: this.state.startLoc + }); + } + const node = this.startNode(); + this.next(); + elt = this.finishNode(node, "ArgumentPlaceholder"); + } else { + elt = this.parseMaybeAssignAllowIn(refExpressionErrors, this.parseParenItem); + } + return elt; + } + parseIdentifier(liberal) { + const node = this.startNode(); + const name = this.parseIdentifierName(liberal); + return this.createIdentifier(node, name); + } + createIdentifier(node, name) { + node.name = name; + node.loc.identifierName = name; + return this.finishNode(node, "Identifier"); + } + parseIdentifierName(liberal) { + let name; + const { + startLoc, + type + } = this.state; + if (tokenIsKeywordOrIdentifier(type)) { + name = this.state.value; + } else { + this.unexpected(); + } + const tokenIsKeyword = tokenKeywordOrIdentifierIsKeyword(type); + if (liberal) { + if (tokenIsKeyword) { + this.replaceToken(132); + } + } else { + this.checkReservedWord(name, startLoc, tokenIsKeyword, false); + } + this.next(); + return name; + } + checkReservedWord(word, startLoc, checkKeywords, isBinding) { + if (word.length > 10) { + return; + } + if (!canBeReservedWord(word)) { + return; + } + if (checkKeywords && isKeyword(word)) { + this.raise(Errors.UnexpectedKeyword, { + at: startLoc, + keyword: word + }); + return; + } + const reservedTest = !this.state.strict ? isReservedWord : isBinding ? isStrictBindReservedWord : isStrictReservedWord; + if (reservedTest(word, this.inModule)) { + this.raise(Errors.UnexpectedReservedWord, { + at: startLoc, + reservedWord: word + }); + return; + } else if (word === "yield") { + if (this.prodParam.hasYield) { + this.raise(Errors.YieldBindingIdentifier, { + at: startLoc + }); + return; + } + } else if (word === "await") { + if (this.prodParam.hasAwait) { + this.raise(Errors.AwaitBindingIdentifier, { + at: startLoc + }); + return; + } + if (this.scope.inStaticBlock) { + this.raise(Errors.AwaitBindingIdentifierInStaticBlock, { + at: startLoc + }); + return; + } + this.expressionScope.recordAsyncArrowParametersError({ + at: startLoc + }); + } else if (word === "arguments") { + if (this.scope.inClassAndNotInNonArrowFunction) { + this.raise(Errors.ArgumentsInClass, { + at: startLoc + }); + return; + } + } + } + isAwaitAllowed() { + if (this.prodParam.hasAwait) return true; + if (this.options.allowAwaitOutsideFunction && !this.scope.inFunction) { + return true; + } + return false; + } + parseAwait(startLoc) { + const node = this.startNodeAt(startLoc); + this.expressionScope.recordParameterInitializerError(Errors.AwaitExpressionFormalParameter, { + at: node + }); + if (this.eat(55)) { + this.raise(Errors.ObsoleteAwaitStar, { + at: node + }); + } + if (!this.scope.inFunction && !this.options.allowAwaitOutsideFunction) { + if (this.isAmbiguousAwait()) { + this.ambiguousScriptDifferentAst = true; + } else { + this.sawUnambiguousESM = true; + } + } + if (!this.state.soloAwait) { + node.argument = this.parseMaybeUnary(null, true); + } + return this.finishNode(node, "AwaitExpression"); + } + isAmbiguousAwait() { + if (this.hasPrecedingLineBreak()) return true; + const { + type + } = this.state; + return type === 53 || type === 10 || type === 0 || tokenIsTemplate(type) || type === 102 && !this.state.containsEsc || type === 137 || type === 56 || this.hasPlugin("v8intrinsic") && type === 54; + } + parseYield() { + const node = this.startNode(); + this.expressionScope.recordParameterInitializerError(Errors.YieldInParameter, { + at: node + }); + this.next(); + let delegating = false; + let argument = null; + if (!this.hasPrecedingLineBreak()) { + delegating = this.eat(55); + switch (this.state.type) { + case 13: + case 139: + case 8: + case 11: + case 3: + case 9: + case 14: + case 12: + if (!delegating) break; + default: + argument = this.parseMaybeAssign(); + } + } + node.delegate = delegating; + node.argument = argument; + return this.finishNode(node, "YieldExpression"); + } + parseImportCall(node) { + this.next(); + node.source = this.parseMaybeAssignAllowIn(); + if (this.hasPlugin("importAttributes") || this.hasPlugin("importAssertions")) { + node.options = null; + } + if (this.eat(12)) { + this.expectImportAttributesPlugin(); + if (!this.match(11)) { + node.options = this.parseMaybeAssignAllowIn(); + this.eat(12); + } + } + this.expect(11); + return this.finishNode(node, "ImportExpression"); + } + checkPipelineAtInfixOperator(left, leftStartLoc) { + if (this.hasPlugin(["pipelineOperator", { + proposal: "smart" + }])) { + if (left.type === "SequenceExpression") { + this.raise(Errors.PipelineHeadSequenceExpression, { + at: leftStartLoc + }); + } + } + } + parseSmartPipelineBodyInStyle(childExpr, startLoc) { + if (this.isSimpleReference(childExpr)) { + const bodyNode = this.startNodeAt(startLoc); + bodyNode.callee = childExpr; + return this.finishNode(bodyNode, "PipelineBareFunction"); + } else { + const bodyNode = this.startNodeAt(startLoc); + this.checkSmartPipeTopicBodyEarlyErrors(startLoc); + bodyNode.expression = childExpr; + return this.finishNode(bodyNode, "PipelineTopicExpression"); + } + } + isSimpleReference(expression) { + switch (expression.type) { + case "MemberExpression": + return !expression.computed && this.isSimpleReference(expression.object); + case "Identifier": + return true; + default: + return false; + } + } + checkSmartPipeTopicBodyEarlyErrors(startLoc) { + if (this.match(19)) { + throw this.raise(Errors.PipelineBodyNoArrow, { + at: this.state.startLoc + }); + } + if (!this.topicReferenceWasUsedInCurrentContext()) { + this.raise(Errors.PipelineTopicUnused, { + at: startLoc + }); + } + } + withTopicBindingContext(callback) { + const outerContextTopicState = this.state.topicContext; + this.state.topicContext = { + maxNumOfResolvableTopics: 1, + maxTopicIndex: null + }; + try { + return callback(); + } finally { + this.state.topicContext = outerContextTopicState; + } + } + withSmartMixTopicForbiddingContext(callback) { + if (this.hasPlugin(["pipelineOperator", { + proposal: "smart" + }])) { + const outerContextTopicState = this.state.topicContext; + this.state.topicContext = { + maxNumOfResolvableTopics: 0, + maxTopicIndex: null + }; + try { + return callback(); + } finally { + this.state.topicContext = outerContextTopicState; + } + } else { + return callback(); + } + } + withSoloAwaitPermittingContext(callback) { + const outerContextSoloAwaitState = this.state.soloAwait; + this.state.soloAwait = true; + try { + return callback(); + } finally { + this.state.soloAwait = outerContextSoloAwaitState; + } + } + allowInAnd(callback) { + const flags = this.prodParam.currentFlags(); + const prodParamToSet = 8 & ~flags; + if (prodParamToSet) { + this.prodParam.enter(flags | 8); + try { + return callback(); + } finally { + this.prodParam.exit(); + } + } + return callback(); + } + disallowInAnd(callback) { + const flags = this.prodParam.currentFlags(); + const prodParamToClear = 8 & flags; + if (prodParamToClear) { + this.prodParam.enter(flags & ~8); + try { + return callback(); + } finally { + this.prodParam.exit(); + } + } + return callback(); + } + registerTopicReference() { + this.state.topicContext.maxTopicIndex = 0; + } + topicReferenceIsAllowedInCurrentContext() { + return this.state.topicContext.maxNumOfResolvableTopics >= 1; + } + topicReferenceWasUsedInCurrentContext() { + return this.state.topicContext.maxTopicIndex != null && this.state.topicContext.maxTopicIndex >= 0; + } + parseFSharpPipelineBody(prec) { + const startLoc = this.state.startLoc; + this.state.potentialArrowAt = this.state.start; + const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody; + this.state.inFSharpPipelineDirectBody = true; + const ret = this.parseExprOp(this.parseMaybeUnaryOrPrivate(), startLoc, prec); + this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody; + return ret; + } + parseModuleExpression() { + this.expectPlugin("moduleBlocks"); + const node = this.startNode(); + this.next(); + if (!this.match(5)) { + this.unexpected(null, 5); + } + const program = this.startNodeAt(this.state.endLoc); + this.next(); + const revertScopes = this.initializeScopes(true); + this.enterInitialScopes(); + try { + node.body = this.parseProgram(program, 8, "module"); + } finally { + revertScopes(); + } + return this.finishNode(node, "ModuleExpression"); + } + parsePropertyNamePrefixOperator(prop) {} +} +const loopLabel = { + kind: "loop" + }, + switchLabel = { + kind: "switch" + }; +const loneSurrogate = /[\uD800-\uDFFF]/u; +const keywordRelationalOperator = /in(?:stanceof)?/y; +function babel7CompatTokens(tokens, input) { + for (let i = 0; i < tokens.length; i++) { + const token = tokens[i]; + const { + type + } = token; + if (typeof type === "number") { + { + if (type === 138) { + const { + loc, + start, + value, + end + } = token; + const hashEndPos = start + 1; + const hashEndLoc = createPositionWithColumnOffset(loc.start, 1); + tokens.splice(i, 1, new Token({ + type: getExportedToken(27), + value: "#", + start: start, + end: hashEndPos, + startLoc: loc.start, + endLoc: hashEndLoc + }), new Token({ + type: getExportedToken(132), + value: value, + start: hashEndPos, + end: end, + startLoc: hashEndLoc, + endLoc: loc.end + })); + i++; + continue; + } + if (tokenIsTemplate(type)) { + const { + loc, + start, + value, + end + } = token; + const backquoteEnd = start + 1; + const backquoteEndLoc = createPositionWithColumnOffset(loc.start, 1); + let startToken; + if (input.charCodeAt(start) === 96) { + startToken = new Token({ + type: getExportedToken(22), + value: "`", + start: start, + end: backquoteEnd, + startLoc: loc.start, + endLoc: backquoteEndLoc + }); + } else { + startToken = new Token({ + type: getExportedToken(8), + value: "}", + start: start, + end: backquoteEnd, + startLoc: loc.start, + endLoc: backquoteEndLoc + }); + } + let templateValue, templateElementEnd, templateElementEndLoc, endToken; + if (type === 24) { + templateElementEnd = end - 1; + templateElementEndLoc = createPositionWithColumnOffset(loc.end, -1); + templateValue = value === null ? null : value.slice(1, -1); + endToken = new Token({ + type: getExportedToken(22), + value: "`", + start: templateElementEnd, + end: end, + startLoc: templateElementEndLoc, + endLoc: loc.end + }); + } else { + templateElementEnd = end - 2; + templateElementEndLoc = createPositionWithColumnOffset(loc.end, -2); + templateValue = value === null ? null : value.slice(1, -2); + endToken = new Token({ + type: getExportedToken(23), + value: "${", + start: templateElementEnd, + end: end, + startLoc: templateElementEndLoc, + endLoc: loc.end + }); + } + tokens.splice(i, 1, startToken, new Token({ + type: getExportedToken(20), + value: templateValue, + start: backquoteEnd, + end: templateElementEnd, + startLoc: backquoteEndLoc, + endLoc: templateElementEndLoc + }), endToken); + i += 2; + continue; + } + } + token.type = getExportedToken(type); + } + } + return tokens; +} +class StatementParser extends ExpressionParser { + parseTopLevel(file, program) { + file.program = this.parseProgram(program); + file.comments = this.state.comments; + if (this.options.tokens) { + file.tokens = babel7CompatTokens(this.tokens, this.input); + } + return this.finishNode(file, "File"); + } + parseProgram(program, end = 139, sourceType = this.options.sourceType) { + program.sourceType = sourceType; + program.interpreter = this.parseInterpreterDirective(); + this.parseBlockBody(program, true, true, end); + if (this.inModule && !this.options.allowUndeclaredExports && this.scope.undefinedExports.size > 0) { + for (const [localName, at] of Array.from(this.scope.undefinedExports)) { + this.raise(Errors.ModuleExportUndefined, { + at, + localName + }); + } + } + let finishedProgram; + if (end === 139) { + finishedProgram = this.finishNode(program, "Program"); + } else { + finishedProgram = this.finishNodeAt(program, "Program", createPositionWithColumnOffset(this.state.startLoc, -1)); + } + return finishedProgram; + } + stmtToDirective(stmt) { + const directive = stmt; + directive.type = "Directive"; + directive.value = directive.expression; + delete directive.expression; + const directiveLiteral = directive.value; + const expressionValue = directiveLiteral.value; + const raw = this.input.slice(directiveLiteral.start, directiveLiteral.end); + const val = directiveLiteral.value = raw.slice(1, -1); + this.addExtra(directiveLiteral, "raw", raw); + this.addExtra(directiveLiteral, "rawValue", val); + this.addExtra(directiveLiteral, "expressionValue", expressionValue); + directiveLiteral.type = "DirectiveLiteral"; + return directive; + } + parseInterpreterDirective() { + if (!this.match(28)) { + return null; + } + const node = this.startNode(); + node.value = this.state.value; + this.next(); + return this.finishNode(node, "InterpreterDirective"); + } + isLet() { + if (!this.isContextual(100)) { + return false; + } + return this.hasFollowingBindingAtom(); + } + chStartsBindingIdentifier(ch, pos) { + if (isIdentifierStart(ch)) { + keywordRelationalOperator.lastIndex = pos; + if (keywordRelationalOperator.test(this.input)) { + const endCh = this.codePointAtPos(keywordRelationalOperator.lastIndex); + if (!isIdentifierChar(endCh) && endCh !== 92) { + return false; + } + } + return true; + } else if (ch === 92) { + return true; + } else { + return false; + } + } + chStartsBindingPattern(ch) { + return ch === 91 || ch === 123; + } + hasFollowingBindingAtom() { + const next = this.nextTokenStart(); + const nextCh = this.codePointAtPos(next); + return this.chStartsBindingPattern(nextCh) || this.chStartsBindingIdentifier(nextCh, next); + } + hasInLineFollowingBindingIdentifier() { + const next = this.nextTokenInLineStart(); + const nextCh = this.codePointAtPos(next); + return this.chStartsBindingIdentifier(nextCh, next); + } + startsUsingForOf() { + const { + type, + containsEsc + } = this.lookahead(); + if (type === 102 && !containsEsc) { + return false; + } else if (tokenIsIdentifier(type) && !this.hasFollowingLineBreak()) { + this.expectPlugin("explicitResourceManagement"); + return true; + } + } + startsAwaitUsing() { + let next = this.nextTokenInLineStart(); + if (this.isUnparsedContextual(next, "using")) { + next = this.nextTokenInLineStartSince(next + 5); + const nextCh = this.codePointAtPos(next); + if (this.chStartsBindingIdentifier(nextCh, next)) { + this.expectPlugin("explicitResourceManagement"); + return true; + } + } + return false; + } + parseModuleItem() { + return this.parseStatementLike(1 | 2 | 4 | 8); + } + parseStatementListItem() { + return this.parseStatementLike(2 | 4 | (!this.options.annexB || this.state.strict ? 0 : 8)); + } + parseStatementOrSloppyAnnexBFunctionDeclaration(allowLabeledFunction = false) { + let flags = 0; + if (this.options.annexB && !this.state.strict) { + flags |= 4; + if (allowLabeledFunction) { + flags |= 8; + } + } + return this.parseStatementLike(flags); + } + parseStatement() { + return this.parseStatementLike(0); + } + parseStatementLike(flags) { + let decorators = null; + if (this.match(26)) { + decorators = this.parseDecorators(true); + } + return this.parseStatementContent(flags, decorators); + } + parseStatementContent(flags, decorators) { + const starttype = this.state.type; + const node = this.startNode(); + const allowDeclaration = !!(flags & 2); + const allowFunctionDeclaration = !!(flags & 4); + const topLevel = flags & 1; + switch (starttype) { + case 60: + return this.parseBreakContinueStatement(node, true); + case 63: + return this.parseBreakContinueStatement(node, false); + case 64: + return this.parseDebuggerStatement(node); + case 90: + return this.parseDoWhileStatement(node); + case 91: + return this.parseForStatement(node); + case 68: + if (this.lookaheadCharCode() === 46) break; + if (!allowFunctionDeclaration) { + this.raise(this.state.strict ? Errors.StrictFunction : this.options.annexB ? Errors.SloppyFunctionAnnexB : Errors.SloppyFunction, { + at: this.state.startLoc + }); + } + return this.parseFunctionStatement(node, false, !allowDeclaration && allowFunctionDeclaration); + case 80: + if (!allowDeclaration) this.unexpected(); + return this.parseClass(this.maybeTakeDecorators(decorators, node), true); + case 69: + return this.parseIfStatement(node); + case 70: + return this.parseReturnStatement(node); + case 71: + return this.parseSwitchStatement(node); + case 72: + return this.parseThrowStatement(node); + case 73: + return this.parseTryStatement(node); + case 96: + if (!this.state.containsEsc && this.startsAwaitUsing()) { + if (!this.isAwaitAllowed()) { + this.raise(Errors.AwaitUsingNotInAsyncContext, { + at: node + }); + } else if (!allowDeclaration) { + this.raise(Errors.UnexpectedLexicalDeclaration, { + at: node + }); + } + this.next(); + return this.parseVarStatement(node, "await using"); + } + break; + case 107: + if (this.state.containsEsc || !this.hasInLineFollowingBindingIdentifier()) { + break; + } + this.expectPlugin("explicitResourceManagement"); + if (!this.scope.inModule && this.scope.inTopLevel) { + this.raise(Errors.UnexpectedUsingDeclaration, { + at: this.state.startLoc + }); + } else if (!allowDeclaration) { + this.raise(Errors.UnexpectedLexicalDeclaration, { + at: this.state.startLoc + }); + } + return this.parseVarStatement(node, "using"); + case 100: + { + if (this.state.containsEsc) { + break; + } + const next = this.nextTokenStart(); + const nextCh = this.codePointAtPos(next); + if (nextCh !== 91) { + if (!allowDeclaration && this.hasFollowingLineBreak()) break; + if (!this.chStartsBindingIdentifier(nextCh, next) && nextCh !== 123) { + break; + } + } + } + case 75: + { + if (!allowDeclaration) { + this.raise(Errors.UnexpectedLexicalDeclaration, { + at: this.state.startLoc + }); + } + } + case 74: + { + const kind = this.state.value; + return this.parseVarStatement(node, kind); + } + case 92: + return this.parseWhileStatement(node); + case 76: + return this.parseWithStatement(node); + case 5: + return this.parseBlock(); + case 13: + return this.parseEmptyStatement(node); + case 83: + { + const nextTokenCharCode = this.lookaheadCharCode(); + if (nextTokenCharCode === 40 || nextTokenCharCode === 46) { + break; + } + } + case 82: + { + if (!this.options.allowImportExportEverywhere && !topLevel) { + this.raise(Errors.UnexpectedImportExport, { + at: this.state.startLoc + }); + } + this.next(); + let result; + if (starttype === 83) { + result = this.parseImport(node); + if (result.type === "ImportDeclaration" && (!result.importKind || result.importKind === "value")) { + this.sawUnambiguousESM = true; + } + } else { + result = this.parseExport(node, decorators); + if (result.type === "ExportNamedDeclaration" && (!result.exportKind || result.exportKind === "value") || result.type === "ExportAllDeclaration" && (!result.exportKind || result.exportKind === "value") || result.type === "ExportDefaultDeclaration") { + this.sawUnambiguousESM = true; + } + } + this.assertModuleNodeAllowed(result); + return result; + } + default: + { + if (this.isAsyncFunction()) { + if (!allowDeclaration) { + this.raise(Errors.AsyncFunctionInSingleStatementContext, { + at: this.state.startLoc + }); + } + this.next(); + return this.parseFunctionStatement(node, true, !allowDeclaration && allowFunctionDeclaration); + } + } + } + const maybeName = this.state.value; + const expr = this.parseExpression(); + if (tokenIsIdentifier(starttype) && expr.type === "Identifier" && this.eat(14)) { + return this.parseLabeledStatement(node, maybeName, expr, flags); + } else { + return this.parseExpressionStatement(node, expr, decorators); + } + } + assertModuleNodeAllowed(node) { + if (!this.options.allowImportExportEverywhere && !this.inModule) { + this.raise(Errors.ImportOutsideModule, { + at: node + }); + } + } + decoratorsEnabledBeforeExport() { + if (this.hasPlugin("decorators-legacy")) return true; + return this.hasPlugin("decorators") && this.getPluginOption("decorators", "decoratorsBeforeExport") !== false; + } + maybeTakeDecorators(maybeDecorators, classNode, exportNode) { + if (maybeDecorators) { + if (classNode.decorators && classNode.decorators.length > 0) { + if (typeof this.getPluginOption("decorators", "decoratorsBeforeExport") !== "boolean") { + this.raise(Errors.DecoratorsBeforeAfterExport, { + at: classNode.decorators[0] + }); + } + classNode.decorators.unshift(...maybeDecorators); + } else { + classNode.decorators = maybeDecorators; + } + this.resetStartLocationFromNode(classNode, maybeDecorators[0]); + if (exportNode) this.resetStartLocationFromNode(exportNode, classNode); + } + return classNode; + } + canHaveLeadingDecorator() { + return this.match(80); + } + parseDecorators(allowExport) { + const decorators = []; + do { + decorators.push(this.parseDecorator()); + } while (this.match(26)); + if (this.match(82)) { + if (!allowExport) { + this.unexpected(); + } + if (!this.decoratorsEnabledBeforeExport()) { + this.raise(Errors.DecoratorExportClass, { + at: this.state.startLoc + }); + } + } else if (!this.canHaveLeadingDecorator()) { + throw this.raise(Errors.UnexpectedLeadingDecorator, { + at: this.state.startLoc + }); + } + return decorators; + } + parseDecorator() { + this.expectOnePlugin(["decorators", "decorators-legacy"]); + const node = this.startNode(); + this.next(); + if (this.hasPlugin("decorators")) { + const startLoc = this.state.startLoc; + let expr; + if (this.match(10)) { + const startLoc = this.state.startLoc; + this.next(); + expr = this.parseExpression(); + this.expect(11); + expr = this.wrapParenthesis(startLoc, expr); + const paramsStartLoc = this.state.startLoc; + node.expression = this.parseMaybeDecoratorArguments(expr); + if (this.getPluginOption("decorators", "allowCallParenthesized") === false && node.expression !== expr) { + this.raise(Errors.DecoratorArgumentsOutsideParentheses, { + at: paramsStartLoc + }); + } + } else { + expr = this.parseIdentifier(false); + while (this.eat(16)) { + const node = this.startNodeAt(startLoc); + node.object = expr; + if (this.match(138)) { + this.classScope.usePrivateName(this.state.value, this.state.startLoc); + node.property = this.parsePrivateName(); + } else { + node.property = this.parseIdentifier(true); + } + node.computed = false; + expr = this.finishNode(node, "MemberExpression"); + } + node.expression = this.parseMaybeDecoratorArguments(expr); + } + } else { + node.expression = this.parseExprSubscripts(); + } + return this.finishNode(node, "Decorator"); + } + parseMaybeDecoratorArguments(expr) { + if (this.eat(10)) { + const node = this.startNodeAtNode(expr); + node.callee = expr; + node.arguments = this.parseCallExpressionArguments(11, false); + this.toReferencedList(node.arguments); + return this.finishNode(node, "CallExpression"); + } + return expr; + } + parseBreakContinueStatement(node, isBreak) { + this.next(); + if (this.isLineTerminator()) { + node.label = null; + } else { + node.label = this.parseIdentifier(); + this.semicolon(); + } + this.verifyBreakContinue(node, isBreak); + return this.finishNode(node, isBreak ? "BreakStatement" : "ContinueStatement"); + } + verifyBreakContinue(node, isBreak) { + let i; + for (i = 0; i < this.state.labels.length; ++i) { + const lab = this.state.labels[i]; + if (node.label == null || lab.name === node.label.name) { + if (lab.kind != null && (isBreak || lab.kind === "loop")) break; + if (node.label && isBreak) break; + } + } + if (i === this.state.labels.length) { + const type = isBreak ? "BreakStatement" : "ContinueStatement"; + this.raise(Errors.IllegalBreakContinue, { + at: node, + type + }); + } + } + parseDebuggerStatement(node) { + this.next(); + this.semicolon(); + return this.finishNode(node, "DebuggerStatement"); + } + parseHeaderExpression() { + this.expect(10); + const val = this.parseExpression(); + this.expect(11); + return val; + } + parseDoWhileStatement(node) { + this.next(); + this.state.labels.push(loopLabel); + node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement()); + this.state.labels.pop(); + this.expect(92); + node.test = this.parseHeaderExpression(); + this.eat(13); + return this.finishNode(node, "DoWhileStatement"); + } + parseForStatement(node) { + this.next(); + this.state.labels.push(loopLabel); + let awaitAt = null; + if (this.isAwaitAllowed() && this.eatContextual(96)) { + awaitAt = this.state.lastTokStartLoc; + } + this.scope.enter(0); + this.expect(10); + if (this.match(13)) { + if (awaitAt !== null) { + this.unexpected(awaitAt); + } + return this.parseFor(node, null); + } + const startsWithLet = this.isContextual(100); + { + const startsWithAwaitUsing = this.isContextual(96) && this.startsAwaitUsing(); + const starsWithUsingDeclaration = startsWithAwaitUsing || this.isContextual(107) && this.startsUsingForOf(); + const isLetOrUsing = startsWithLet && this.hasFollowingBindingAtom() || starsWithUsingDeclaration; + if (this.match(74) || this.match(75) || isLetOrUsing) { + const initNode = this.startNode(); + let kind; + if (startsWithAwaitUsing) { + kind = "await using"; + if (!this.isAwaitAllowed()) { + this.raise(Errors.AwaitUsingNotInAsyncContext, { + at: this.state.startLoc + }); + } + this.next(); + } else { + kind = this.state.value; + } + this.next(); + this.parseVar(initNode, true, kind); + const init = this.finishNode(initNode, "VariableDeclaration"); + const isForIn = this.match(58); + if (isForIn && starsWithUsingDeclaration) { + this.raise(Errors.ForInUsing, { + at: init + }); + } + if ((isForIn || this.isContextual(102)) && init.declarations.length === 1) { + return this.parseForIn(node, init, awaitAt); + } + if (awaitAt !== null) { + this.unexpected(awaitAt); + } + return this.parseFor(node, init); + } + } + const startsWithAsync = this.isContextual(95); + const refExpressionErrors = new ExpressionErrors(); + const init = this.parseExpression(true, refExpressionErrors); + const isForOf = this.isContextual(102); + if (isForOf) { + if (startsWithLet) { + this.raise(Errors.ForOfLet, { + at: init + }); + } + if (awaitAt === null && startsWithAsync && init.type === "Identifier") { + this.raise(Errors.ForOfAsync, { + at: init + }); + } + } + if (isForOf || this.match(58)) { + this.checkDestructuringPrivate(refExpressionErrors); + this.toAssignable(init, true); + const type = isForOf ? "ForOfStatement" : "ForInStatement"; + this.checkLVal(init, { + in: { + type + } + }); + return this.parseForIn(node, init, awaitAt); + } else { + this.checkExpressionErrors(refExpressionErrors, true); + } + if (awaitAt !== null) { + this.unexpected(awaitAt); + } + return this.parseFor(node, init); + } + parseFunctionStatement(node, isAsync, isHangingDeclaration) { + this.next(); + return this.parseFunction(node, 1 | (isHangingDeclaration ? 2 : 0) | (isAsync ? 8 : 0)); + } + parseIfStatement(node) { + this.next(); + node.test = this.parseHeaderExpression(); + node.consequent = this.parseStatementOrSloppyAnnexBFunctionDeclaration(); + node.alternate = this.eat(66) ? this.parseStatementOrSloppyAnnexBFunctionDeclaration() : null; + return this.finishNode(node, "IfStatement"); + } + parseReturnStatement(node) { + if (!this.prodParam.hasReturn && !this.options.allowReturnOutsideFunction) { + this.raise(Errors.IllegalReturn, { + at: this.state.startLoc + }); + } + this.next(); + if (this.isLineTerminator()) { + node.argument = null; + } else { + node.argument = this.parseExpression(); + this.semicolon(); + } + return this.finishNode(node, "ReturnStatement"); + } + parseSwitchStatement(node) { + this.next(); + node.discriminant = this.parseHeaderExpression(); + const cases = node.cases = []; + this.expect(5); + this.state.labels.push(switchLabel); + this.scope.enter(0); + let cur; + for (let sawDefault; !this.match(8);) { + if (this.match(61) || this.match(65)) { + const isCase = this.match(61); + if (cur) this.finishNode(cur, "SwitchCase"); + cases.push(cur = this.startNode()); + cur.consequent = []; + this.next(); + if (isCase) { + cur.test = this.parseExpression(); + } else { + if (sawDefault) { + this.raise(Errors.MultipleDefaultsInSwitch, { + at: this.state.lastTokStartLoc + }); + } + sawDefault = true; + cur.test = null; + } + this.expect(14); + } else { + if (cur) { + cur.consequent.push(this.parseStatementListItem()); + } else { + this.unexpected(); + } + } + } + this.scope.exit(); + if (cur) this.finishNode(cur, "SwitchCase"); + this.next(); + this.state.labels.pop(); + return this.finishNode(node, "SwitchStatement"); + } + parseThrowStatement(node) { + this.next(); + if (this.hasPrecedingLineBreak()) { + this.raise(Errors.NewlineAfterThrow, { + at: this.state.lastTokEndLoc + }); + } + node.argument = this.parseExpression(); + this.semicolon(); + return this.finishNode(node, "ThrowStatement"); + } + parseCatchClauseParam() { + const param = this.parseBindingAtom(); + this.scope.enter(this.options.annexB && param.type === "Identifier" ? 8 : 0); + this.checkLVal(param, { + in: { + type: "CatchClause" + }, + binding: 9 + }); + return param; + } + parseTryStatement(node) { + this.next(); + node.block = this.parseBlock(); + node.handler = null; + if (this.match(62)) { + const clause = this.startNode(); + this.next(); + if (this.match(10)) { + this.expect(10); + clause.param = this.parseCatchClauseParam(); + this.expect(11); + } else { + clause.param = null; + this.scope.enter(0); + } + clause.body = this.withSmartMixTopicForbiddingContext(() => this.parseBlock(false, false)); + this.scope.exit(); + node.handler = this.finishNode(clause, "CatchClause"); + } + node.finalizer = this.eat(67) ? this.parseBlock() : null; + if (!node.handler && !node.finalizer) { + this.raise(Errors.NoCatchOrFinally, { + at: node + }); + } + return this.finishNode(node, "TryStatement"); + } + parseVarStatement(node, kind, allowMissingInitializer = false) { + this.next(); + this.parseVar(node, false, kind, allowMissingInitializer); + this.semicolon(); + return this.finishNode(node, "VariableDeclaration"); + } + parseWhileStatement(node) { + this.next(); + node.test = this.parseHeaderExpression(); + this.state.labels.push(loopLabel); + node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement()); + this.state.labels.pop(); + return this.finishNode(node, "WhileStatement"); + } + parseWithStatement(node) { + if (this.state.strict) { + this.raise(Errors.StrictWith, { + at: this.state.startLoc + }); + } + this.next(); + node.object = this.parseHeaderExpression(); + node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement()); + return this.finishNode(node, "WithStatement"); + } + parseEmptyStatement(node) { + this.next(); + return this.finishNode(node, "EmptyStatement"); + } + parseLabeledStatement(node, maybeName, expr, flags) { + for (const label of this.state.labels) { + if (label.name === maybeName) { + this.raise(Errors.LabelRedeclaration, { + at: expr, + labelName: maybeName + }); + } + } + const kind = tokenIsLoop(this.state.type) ? "loop" : this.match(71) ? "switch" : null; + for (let i = this.state.labels.length - 1; i >= 0; i--) { + const label = this.state.labels[i]; + if (label.statementStart === node.start) { + label.statementStart = this.state.start; + label.kind = kind; + } else { + break; + } + } + this.state.labels.push({ + name: maybeName, + kind: kind, + statementStart: this.state.start + }); + node.body = flags & 8 ? this.parseStatementOrSloppyAnnexBFunctionDeclaration(true) : this.parseStatement(); + this.state.labels.pop(); + node.label = expr; + return this.finishNode(node, "LabeledStatement"); + } + parseExpressionStatement(node, expr, decorators) { + node.expression = expr; + this.semicolon(); + return this.finishNode(node, "ExpressionStatement"); + } + parseBlock(allowDirectives = false, createNewLexicalScope = true, afterBlockParse) { + const node = this.startNode(); + if (allowDirectives) { + this.state.strictErrors.clear(); + } + this.expect(5); + if (createNewLexicalScope) { + this.scope.enter(0); + } + this.parseBlockBody(node, allowDirectives, false, 8, afterBlockParse); + if (createNewLexicalScope) { + this.scope.exit(); + } + return this.finishNode(node, "BlockStatement"); + } + isValidDirective(stmt) { + return stmt.type === "ExpressionStatement" && stmt.expression.type === "StringLiteral" && !stmt.expression.extra.parenthesized; + } + parseBlockBody(node, allowDirectives, topLevel, end, afterBlockParse) { + const body = node.body = []; + const directives = node.directives = []; + this.parseBlockOrModuleBlockBody(body, allowDirectives ? directives : undefined, topLevel, end, afterBlockParse); + } + parseBlockOrModuleBlockBody(body, directives, topLevel, end, afterBlockParse) { + const oldStrict = this.state.strict; + let hasStrictModeDirective = false; + let parsedNonDirective = false; + while (!this.match(end)) { + const stmt = topLevel ? this.parseModuleItem() : this.parseStatementListItem(); + if (directives && !parsedNonDirective) { + if (this.isValidDirective(stmt)) { + const directive = this.stmtToDirective(stmt); + directives.push(directive); + if (!hasStrictModeDirective && directive.value.value === "use strict") { + hasStrictModeDirective = true; + this.setStrict(true); + } + continue; + } + parsedNonDirective = true; + this.state.strictErrors.clear(); + } + body.push(stmt); + } + afterBlockParse == null || afterBlockParse.call(this, hasStrictModeDirective); + if (!oldStrict) { + this.setStrict(false); + } + this.next(); + } + parseFor(node, init) { + node.init = init; + this.semicolon(false); + node.test = this.match(13) ? null : this.parseExpression(); + this.semicolon(false); + node.update = this.match(11) ? null : this.parseExpression(); + this.expect(11); + node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement()); + this.scope.exit(); + this.state.labels.pop(); + return this.finishNode(node, "ForStatement"); + } + parseForIn(node, init, awaitAt) { + const isForIn = this.match(58); + this.next(); + if (isForIn) { + if (awaitAt !== null) this.unexpected(awaitAt); + } else { + node.await = awaitAt !== null; + } + if (init.type === "VariableDeclaration" && init.declarations[0].init != null && (!isForIn || !this.options.annexB || this.state.strict || init.kind !== "var" || init.declarations[0].id.type !== "Identifier")) { + this.raise(Errors.ForInOfLoopInitializer, { + at: init, + type: isForIn ? "ForInStatement" : "ForOfStatement" + }); + } + if (init.type === "AssignmentPattern") { + this.raise(Errors.InvalidLhs, { + at: init, + ancestor: { + type: "ForStatement" + } + }); + } + node.left = init; + node.right = isForIn ? this.parseExpression() : this.parseMaybeAssignAllowIn(); + this.expect(11); + node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement()); + this.scope.exit(); + this.state.labels.pop(); + return this.finishNode(node, isForIn ? "ForInStatement" : "ForOfStatement"); + } + parseVar(node, isFor, kind, allowMissingInitializer = false) { + const declarations = node.declarations = []; + node.kind = kind; + for (;;) { + const decl = this.startNode(); + this.parseVarId(decl, kind); + decl.init = !this.eat(29) ? null : isFor ? this.parseMaybeAssignDisallowIn() : this.parseMaybeAssignAllowIn(); + if (decl.init === null && !allowMissingInitializer) { + if (decl.id.type !== "Identifier" && !(isFor && (this.match(58) || this.isContextual(102)))) { + this.raise(Errors.DeclarationMissingInitializer, { + at: this.state.lastTokEndLoc, + kind: "destructuring" + }); + } else if (kind === "const" && !(this.match(58) || this.isContextual(102))) { + this.raise(Errors.DeclarationMissingInitializer, { + at: this.state.lastTokEndLoc, + kind: "const" + }); + } + } + declarations.push(this.finishNode(decl, "VariableDeclarator")); + if (!this.eat(12)) break; + } + return node; + } + parseVarId(decl, kind) { + const id = this.parseBindingAtom(); + this.checkLVal(id, { + in: { + type: "VariableDeclarator" + }, + binding: kind === "var" ? 5 : 8201 + }); + decl.id = id; + } + parseAsyncFunctionExpression(node) { + return this.parseFunction(node, 8); + } + parseFunction(node, flags = 0) { + const hangingDeclaration = flags & 2; + const isDeclaration = !!(flags & 1); + const requireId = isDeclaration && !(flags & 4); + const isAsync = !!(flags & 8); + this.initFunction(node, isAsync); + if (this.match(55)) { + if (hangingDeclaration) { + this.raise(Errors.GeneratorInSingleStatementContext, { + at: this.state.startLoc + }); + } + this.next(); + node.generator = true; + } + if (isDeclaration) { + node.id = this.parseFunctionId(requireId); + } + const oldMaybeInArrowParameters = this.state.maybeInArrowParameters; + this.state.maybeInArrowParameters = false; + this.scope.enter(2); + this.prodParam.enter(functionFlags(isAsync, node.generator)); + if (!isDeclaration) { + node.id = this.parseFunctionId(); + } + this.parseFunctionParams(node, false); + this.withSmartMixTopicForbiddingContext(() => { + this.parseFunctionBodyAndFinish(node, isDeclaration ? "FunctionDeclaration" : "FunctionExpression"); + }); + this.prodParam.exit(); + this.scope.exit(); + if (isDeclaration && !hangingDeclaration) { + this.registerFunctionStatementId(node); + } + this.state.maybeInArrowParameters = oldMaybeInArrowParameters; + return node; + } + parseFunctionId(requireId) { + return requireId || tokenIsIdentifier(this.state.type) ? this.parseIdentifier() : null; + } + parseFunctionParams(node, isConstructor) { + this.expect(10); + this.expressionScope.enter(newParameterDeclarationScope()); + node.params = this.parseBindingList(11, 41, 2 | (isConstructor ? 4 : 0)); + this.expressionScope.exit(); + } + registerFunctionStatementId(node) { + if (!node.id) return; + this.scope.declareName(node.id.name, !this.options.annexB || this.state.strict || node.generator || node.async ? this.scope.treatFunctionsAsVar ? 5 : 8201 : 17, node.id.loc.start); + } + parseClass(node, isStatement, optionalId) { + this.next(); + const oldStrict = this.state.strict; + this.state.strict = true; + this.parseClassId(node, isStatement, optionalId); + this.parseClassSuper(node); + node.body = this.parseClassBody(!!node.superClass, oldStrict); + return this.finishNode(node, isStatement ? "ClassDeclaration" : "ClassExpression"); + } + isClassProperty() { + return this.match(29) || this.match(13) || this.match(8); + } + isClassMethod() { + return this.match(10); + } + isNonstaticConstructor(method) { + return !method.computed && !method.static && (method.key.name === "constructor" || method.key.value === "constructor"); + } + parseClassBody(hadSuperClass, oldStrict) { + this.classScope.enter(); + const state = { + hadConstructor: false, + hadSuperClass + }; + let decorators = []; + const classBody = this.startNode(); + classBody.body = []; + this.expect(5); + this.withSmartMixTopicForbiddingContext(() => { + while (!this.match(8)) { + if (this.eat(13)) { + if (decorators.length > 0) { + throw this.raise(Errors.DecoratorSemicolon, { + at: this.state.lastTokEndLoc + }); + } + continue; + } + if (this.match(26)) { + decorators.push(this.parseDecorator()); + continue; + } + const member = this.startNode(); + if (decorators.length) { + member.decorators = decorators; + this.resetStartLocationFromNode(member, decorators[0]); + decorators = []; + } + this.parseClassMember(classBody, member, state); + if (member.kind === "constructor" && member.decorators && member.decorators.length > 0) { + this.raise(Errors.DecoratorConstructor, { + at: member + }); + } + } + }); + this.state.strict = oldStrict; + this.next(); + if (decorators.length) { + throw this.raise(Errors.TrailingDecorator, { + at: this.state.startLoc + }); + } + this.classScope.exit(); + return this.finishNode(classBody, "ClassBody"); + } + parseClassMemberFromModifier(classBody, member) { + const key = this.parseIdentifier(true); + if (this.isClassMethod()) { + const method = member; + method.kind = "method"; + method.computed = false; + method.key = key; + method.static = false; + this.pushClassMethod(classBody, method, false, false, false, false); + return true; + } else if (this.isClassProperty()) { + const prop = member; + prop.computed = false; + prop.key = key; + prop.static = false; + classBody.body.push(this.parseClassProperty(prop)); + return true; + } + this.resetPreviousNodeTrailingComments(key); + return false; + } + parseClassMember(classBody, member, state) { + const isStatic = this.isContextual(106); + if (isStatic) { + if (this.parseClassMemberFromModifier(classBody, member)) { + return; + } + if (this.eat(5)) { + this.parseClassStaticBlock(classBody, member); + return; + } + } + this.parseClassMemberWithIsStatic(classBody, member, state, isStatic); + } + parseClassMemberWithIsStatic(classBody, member, state, isStatic) { + const publicMethod = member; + const privateMethod = member; + const publicProp = member; + const privateProp = member; + const accessorProp = member; + const method = publicMethod; + const publicMember = publicMethod; + member.static = isStatic; + this.parsePropertyNamePrefixOperator(member); + if (this.eat(55)) { + method.kind = "method"; + const isPrivateName = this.match(138); + this.parseClassElementName(method); + if (isPrivateName) { + this.pushClassPrivateMethod(classBody, privateMethod, true, false); + return; + } + if (this.isNonstaticConstructor(publicMethod)) { + this.raise(Errors.ConstructorIsGenerator, { + at: publicMethod.key + }); + } + this.pushClassMethod(classBody, publicMethod, true, false, false, false); + return; + } + const isContextual = tokenIsIdentifier(this.state.type) && !this.state.containsEsc; + const isPrivate = this.match(138); + const key = this.parseClassElementName(member); + const maybeQuestionTokenStartLoc = this.state.startLoc; + this.parsePostMemberNameModifiers(publicMember); + if (this.isClassMethod()) { + method.kind = "method"; + if (isPrivate) { + this.pushClassPrivateMethod(classBody, privateMethod, false, false); + return; + } + const isConstructor = this.isNonstaticConstructor(publicMethod); + let allowsDirectSuper = false; + if (isConstructor) { + publicMethod.kind = "constructor"; + if (state.hadConstructor && !this.hasPlugin("typescript")) { + this.raise(Errors.DuplicateConstructor, { + at: key + }); + } + if (isConstructor && this.hasPlugin("typescript") && member.override) { + this.raise(Errors.OverrideOnConstructor, { + at: key + }); + } + state.hadConstructor = true; + allowsDirectSuper = state.hadSuperClass; + } + this.pushClassMethod(classBody, publicMethod, false, false, isConstructor, allowsDirectSuper); + } else if (this.isClassProperty()) { + if (isPrivate) { + this.pushClassPrivateProperty(classBody, privateProp); + } else { + this.pushClassProperty(classBody, publicProp); + } + } else if (isContextual && key.name === "async" && !this.isLineTerminator()) { + this.resetPreviousNodeTrailingComments(key); + const isGenerator = this.eat(55); + if (publicMember.optional) { + this.unexpected(maybeQuestionTokenStartLoc); + } + method.kind = "method"; + const isPrivate = this.match(138); + this.parseClassElementName(method); + this.parsePostMemberNameModifiers(publicMember); + if (isPrivate) { + this.pushClassPrivateMethod(classBody, privateMethod, isGenerator, true); + } else { + if (this.isNonstaticConstructor(publicMethod)) { + this.raise(Errors.ConstructorIsAsync, { + at: publicMethod.key + }); + } + this.pushClassMethod(classBody, publicMethod, isGenerator, true, false, false); + } + } else if (isContextual && (key.name === "get" || key.name === "set") && !(this.match(55) && this.isLineTerminator())) { + this.resetPreviousNodeTrailingComments(key); + method.kind = key.name; + const isPrivate = this.match(138); + this.parseClassElementName(publicMethod); + if (isPrivate) { + this.pushClassPrivateMethod(classBody, privateMethod, false, false); + } else { + if (this.isNonstaticConstructor(publicMethod)) { + this.raise(Errors.ConstructorIsAccessor, { + at: publicMethod.key + }); + } + this.pushClassMethod(classBody, publicMethod, false, false, false, false); + } + this.checkGetterSetterParams(publicMethod); + } else if (isContextual && key.name === "accessor" && !this.isLineTerminator()) { + this.expectPlugin("decoratorAutoAccessors"); + this.resetPreviousNodeTrailingComments(key); + const isPrivate = this.match(138); + this.parseClassElementName(publicProp); + this.pushClassAccessorProperty(classBody, accessorProp, isPrivate); + } else if (this.isLineTerminator()) { + if (isPrivate) { + this.pushClassPrivateProperty(classBody, privateProp); + } else { + this.pushClassProperty(classBody, publicProp); + } + } else { + this.unexpected(); + } + } + parseClassElementName(member) { + const { + type, + value + } = this.state; + if ((type === 132 || type === 133) && member.static && value === "prototype") { + this.raise(Errors.StaticPrototype, { + at: this.state.startLoc + }); + } + if (type === 138) { + if (value === "constructor") { + this.raise(Errors.ConstructorClassPrivateField, { + at: this.state.startLoc + }); + } + const key = this.parsePrivateName(); + member.key = key; + return key; + } + return this.parsePropertyName(member); + } + parseClassStaticBlock(classBody, member) { + var _member$decorators; + this.scope.enter(64 | 128 | 16); + const oldLabels = this.state.labels; + this.state.labels = []; + this.prodParam.enter(0); + const body = member.body = []; + this.parseBlockOrModuleBlockBody(body, undefined, false, 8); + this.prodParam.exit(); + this.scope.exit(); + this.state.labels = oldLabels; + classBody.body.push(this.finishNode(member, "StaticBlock")); + if ((_member$decorators = member.decorators) != null && _member$decorators.length) { + this.raise(Errors.DecoratorStaticBlock, { + at: member + }); + } + } + pushClassProperty(classBody, prop) { + if (!prop.computed && (prop.key.name === "constructor" || prop.key.value === "constructor")) { + this.raise(Errors.ConstructorClassField, { + at: prop.key + }); + } + classBody.body.push(this.parseClassProperty(prop)); + } + pushClassPrivateProperty(classBody, prop) { + const node = this.parseClassPrivateProperty(prop); + classBody.body.push(node); + this.classScope.declarePrivateName(this.getPrivateNameSV(node.key), 0, node.key.loc.start); + } + pushClassAccessorProperty(classBody, prop, isPrivate) { + if (!isPrivate && !prop.computed) { + const key = prop.key; + if (key.name === "constructor" || key.value === "constructor") { + this.raise(Errors.ConstructorClassField, { + at: key + }); + } + } + const node = this.parseClassAccessorProperty(prop); + classBody.body.push(node); + if (isPrivate) { + this.classScope.declarePrivateName(this.getPrivateNameSV(node.key), 0, node.key.loc.start); + } + } + pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) { + classBody.body.push(this.parseMethod(method, isGenerator, isAsync, isConstructor, allowsDirectSuper, "ClassMethod", true)); + } + pushClassPrivateMethod(classBody, method, isGenerator, isAsync) { + const node = this.parseMethod(method, isGenerator, isAsync, false, false, "ClassPrivateMethod", true); + classBody.body.push(node); + const kind = node.kind === "get" ? node.static ? 6 : 2 : node.kind === "set" ? node.static ? 5 : 1 : 0; + this.declareClassPrivateMethodInScope(node, kind); + } + declareClassPrivateMethodInScope(node, kind) { + this.classScope.declarePrivateName(this.getPrivateNameSV(node.key), kind, node.key.loc.start); + } + parsePostMemberNameModifiers(methodOrProp) {} + parseClassPrivateProperty(node) { + this.parseInitializer(node); + this.semicolon(); + return this.finishNode(node, "ClassPrivateProperty"); + } + parseClassProperty(node) { + this.parseInitializer(node); + this.semicolon(); + return this.finishNode(node, "ClassProperty"); + } + parseClassAccessorProperty(node) { + this.parseInitializer(node); + this.semicolon(); + return this.finishNode(node, "ClassAccessorProperty"); + } + parseInitializer(node) { + this.scope.enter(64 | 16); + this.expressionScope.enter(newExpressionScope()); + this.prodParam.enter(0); + node.value = this.eat(29) ? this.parseMaybeAssignAllowIn() : null; + this.expressionScope.exit(); + this.prodParam.exit(); + this.scope.exit(); + } + parseClassId(node, isStatement, optionalId, bindingType = 8331) { + if (tokenIsIdentifier(this.state.type)) { + node.id = this.parseIdentifier(); + if (isStatement) { + this.declareNameFromIdentifier(node.id, bindingType); + } + } else { + if (optionalId || !isStatement) { + node.id = null; + } else { + throw this.raise(Errors.MissingClassName, { + at: this.state.startLoc + }); + } + } + } + parseClassSuper(node) { + node.superClass = this.eat(81) ? this.parseExprSubscripts() : null; + } + parseExport(node, decorators) { + const maybeDefaultIdentifier = this.parseMaybeImportPhase(node, true); + const hasDefault = this.maybeParseExportDefaultSpecifier(node, maybeDefaultIdentifier); + const parseAfterDefault = !hasDefault || this.eat(12); + const hasStar = parseAfterDefault && this.eatExportStar(node); + const hasNamespace = hasStar && this.maybeParseExportNamespaceSpecifier(node); + const parseAfterNamespace = parseAfterDefault && (!hasNamespace || this.eat(12)); + const isFromRequired = hasDefault || hasStar; + if (hasStar && !hasNamespace) { + if (hasDefault) this.unexpected(); + if (decorators) { + throw this.raise(Errors.UnsupportedDecoratorExport, { + at: node + }); + } + this.parseExportFrom(node, true); + return this.finishNode(node, "ExportAllDeclaration"); + } + const hasSpecifiers = this.maybeParseExportNamedSpecifiers(node); + if (hasDefault && parseAfterDefault && !hasStar && !hasSpecifiers) { + this.unexpected(null, 5); + } + if (hasNamespace && parseAfterNamespace) { + this.unexpected(null, 98); + } + let hasDeclaration; + if (isFromRequired || hasSpecifiers) { + hasDeclaration = false; + if (decorators) { + throw this.raise(Errors.UnsupportedDecoratorExport, { + at: node + }); + } + this.parseExportFrom(node, isFromRequired); + } else { + hasDeclaration = this.maybeParseExportDeclaration(node); + } + if (isFromRequired || hasSpecifiers || hasDeclaration) { + var _node2$declaration; + const node2 = node; + this.checkExport(node2, true, false, !!node2.source); + if (((_node2$declaration = node2.declaration) == null ? void 0 : _node2$declaration.type) === "ClassDeclaration") { + this.maybeTakeDecorators(decorators, node2.declaration, node2); + } else if (decorators) { + throw this.raise(Errors.UnsupportedDecoratorExport, { + at: node + }); + } + return this.finishNode(node2, "ExportNamedDeclaration"); + } + if (this.eat(65)) { + const node2 = node; + const decl = this.parseExportDefaultExpression(); + node2.declaration = decl; + if (decl.type === "ClassDeclaration") { + this.maybeTakeDecorators(decorators, decl, node2); + } else if (decorators) { + throw this.raise(Errors.UnsupportedDecoratorExport, { + at: node + }); + } + this.checkExport(node2, true, true); + return this.finishNode(node2, "ExportDefaultDeclaration"); + } + this.unexpected(null, 5); + } + eatExportStar(node) { + return this.eat(55); + } + maybeParseExportDefaultSpecifier(node, maybeDefaultIdentifier) { + if (maybeDefaultIdentifier || this.isExportDefaultSpecifier()) { + this.expectPlugin("exportDefaultFrom", maybeDefaultIdentifier == null ? void 0 : maybeDefaultIdentifier.loc.start); + const id = maybeDefaultIdentifier || this.parseIdentifier(true); + const specifier = this.startNodeAtNode(id); + specifier.exported = id; + node.specifiers = [this.finishNode(specifier, "ExportDefaultSpecifier")]; + return true; + } + return false; + } + maybeParseExportNamespaceSpecifier(node) { + if (this.isContextual(93)) { + if (!node.specifiers) node.specifiers = []; + const specifier = this.startNodeAt(this.state.lastTokStartLoc); + this.next(); + specifier.exported = this.parseModuleExportName(); + node.specifiers.push(this.finishNode(specifier, "ExportNamespaceSpecifier")); + return true; + } + return false; + } + maybeParseExportNamedSpecifiers(node) { + if (this.match(5)) { + if (!node.specifiers) node.specifiers = []; + const isTypeExport = node.exportKind === "type"; + node.specifiers.push(...this.parseExportSpecifiers(isTypeExport)); + node.source = null; + node.declaration = null; + if (this.hasPlugin("importAssertions")) { + node.assertions = []; + } + return true; + } + return false; + } + maybeParseExportDeclaration(node) { + if (this.shouldParseExportDeclaration()) { + node.specifiers = []; + node.source = null; + if (this.hasPlugin("importAssertions")) { + node.assertions = []; + } + node.declaration = this.parseExportDeclaration(node); + return true; + } + return false; + } + isAsyncFunction() { + if (!this.isContextual(95)) return false; + const next = this.nextTokenInLineStart(); + return this.isUnparsedContextual(next, "function"); + } + parseExportDefaultExpression() { + const expr = this.startNode(); + if (this.match(68)) { + this.next(); + return this.parseFunction(expr, 1 | 4); + } else if (this.isAsyncFunction()) { + this.next(); + this.next(); + return this.parseFunction(expr, 1 | 4 | 8); + } + if (this.match(80)) { + return this.parseClass(expr, true, true); + } + if (this.match(26)) { + if (this.hasPlugin("decorators") && this.getPluginOption("decorators", "decoratorsBeforeExport") === true) { + this.raise(Errors.DecoratorBeforeExport, { + at: this.state.startLoc + }); + } + return this.parseClass(this.maybeTakeDecorators(this.parseDecorators(false), this.startNode()), true, true); + } + if (this.match(75) || this.match(74) || this.isLet()) { + throw this.raise(Errors.UnsupportedDefaultExport, { + at: this.state.startLoc + }); + } + const res = this.parseMaybeAssignAllowIn(); + this.semicolon(); + return res; + } + parseExportDeclaration(node) { + if (this.match(80)) { + const node = this.parseClass(this.startNode(), true, false); + return node; + } + return this.parseStatementListItem(); + } + isExportDefaultSpecifier() { + const { + type + } = this.state; + if (tokenIsIdentifier(type)) { + if (type === 95 && !this.state.containsEsc || type === 100) { + return false; + } + if ((type === 130 || type === 129) && !this.state.containsEsc) { + const { + type: nextType + } = this.lookahead(); + if (tokenIsIdentifier(nextType) && nextType !== 98 || nextType === 5) { + this.expectOnePlugin(["flow", "typescript"]); + return false; + } + } + } else if (!this.match(65)) { + return false; + } + const next = this.nextTokenStart(); + const hasFrom = this.isUnparsedContextual(next, "from"); + if (this.input.charCodeAt(next) === 44 || tokenIsIdentifier(this.state.type) && hasFrom) { + return true; + } + if (this.match(65) && hasFrom) { + const nextAfterFrom = this.input.charCodeAt(this.nextTokenStartSince(next + 4)); + return nextAfterFrom === 34 || nextAfterFrom === 39; + } + return false; + } + parseExportFrom(node, expect) { + if (this.eatContextual(98)) { + node.source = this.parseImportSource(); + this.checkExport(node); + this.maybeParseImportAttributes(node); + this.checkJSONModuleImport(node); + } else if (expect) { + this.unexpected(); + } + this.semicolon(); + } + shouldParseExportDeclaration() { + const { + type + } = this.state; + if (type === 26) { + this.expectOnePlugin(["decorators", "decorators-legacy"]); + if (this.hasPlugin("decorators")) { + if (this.getPluginOption("decorators", "decoratorsBeforeExport") === true) { + this.raise(Errors.DecoratorBeforeExport, { + at: this.state.startLoc + }); + } + return true; + } + } + return type === 74 || type === 75 || type === 68 || type === 80 || this.isLet() || this.isAsyncFunction(); + } + checkExport(node, checkNames, isDefault, isFrom) { + if (checkNames) { + var _node$specifiers; + if (isDefault) { + this.checkDuplicateExports(node, "default"); + if (this.hasPlugin("exportDefaultFrom")) { + var _declaration$extra; + const declaration = node.declaration; + if (declaration.type === "Identifier" && declaration.name === "from" && declaration.end - declaration.start === 4 && !((_declaration$extra = declaration.extra) != null && _declaration$extra.parenthesized)) { + this.raise(Errors.ExportDefaultFromAsIdentifier, { + at: declaration + }); + } + } + } else if ((_node$specifiers = node.specifiers) != null && _node$specifiers.length) { + for (const specifier of node.specifiers) { + const { + exported + } = specifier; + const exportName = exported.type === "Identifier" ? exported.name : exported.value; + this.checkDuplicateExports(specifier, exportName); + if (!isFrom && specifier.local) { + const { + local + } = specifier; + if (local.type !== "Identifier") { + this.raise(Errors.ExportBindingIsString, { + at: specifier, + localName: local.value, + exportName + }); + } else { + this.checkReservedWord(local.name, local.loc.start, true, false); + this.scope.checkLocalExport(local); + } + } + } + } else if (node.declaration) { + if (node.declaration.type === "FunctionDeclaration" || node.declaration.type === "ClassDeclaration") { + const id = node.declaration.id; + if (!id) throw new Error("Assertion failure"); + this.checkDuplicateExports(node, id.name); + } else if (node.declaration.type === "VariableDeclaration") { + for (const declaration of node.declaration.declarations) { + this.checkDeclaration(declaration.id); + } + } + } + } + } + checkDeclaration(node) { + if (node.type === "Identifier") { + this.checkDuplicateExports(node, node.name); + } else if (node.type === "ObjectPattern") { + for (const prop of node.properties) { + this.checkDeclaration(prop); + } + } else if (node.type === "ArrayPattern") { + for (const elem of node.elements) { + if (elem) { + this.checkDeclaration(elem); + } + } + } else if (node.type === "ObjectProperty") { + this.checkDeclaration(node.value); + } else if (node.type === "RestElement") { + this.checkDeclaration(node.argument); + } else if (node.type === "AssignmentPattern") { + this.checkDeclaration(node.left); + } + } + checkDuplicateExports(node, exportName) { + if (this.exportedIdentifiers.has(exportName)) { + if (exportName === "default") { + this.raise(Errors.DuplicateDefaultExport, { + at: node + }); + } else { + this.raise(Errors.DuplicateExport, { + at: node, + exportName + }); + } + } + this.exportedIdentifiers.add(exportName); + } + parseExportSpecifiers(isInTypeExport) { + const nodes = []; + let first = true; + this.expect(5); + while (!this.eat(8)) { + if (first) { + first = false; + } else { + this.expect(12); + if (this.eat(8)) break; + } + const isMaybeTypeOnly = this.isContextual(130); + const isString = this.match(133); + const node = this.startNode(); + node.local = this.parseModuleExportName(); + nodes.push(this.parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly)); + } + return nodes; + } + parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly) { + if (this.eatContextual(93)) { + node.exported = this.parseModuleExportName(); + } else if (isString) { + node.exported = cloneStringLiteral(node.local); + } else if (!node.exported) { + node.exported = cloneIdentifier(node.local); + } + return this.finishNode(node, "ExportSpecifier"); + } + parseModuleExportName() { + if (this.match(133)) { + const result = this.parseStringLiteral(this.state.value); + const surrogate = result.value.match(loneSurrogate); + if (surrogate) { + this.raise(Errors.ModuleExportNameHasLoneSurrogate, { + at: result, + surrogateCharCode: surrogate[0].charCodeAt(0) + }); + } + return result; + } + return this.parseIdentifier(true); + } + isJSONModuleImport(node) { + if (node.assertions != null) { + return node.assertions.some(({ + key, + value + }) => { + return value.value === "json" && (key.type === "Identifier" ? key.name === "type" : key.value === "type"); + }); + } + return false; + } + checkImportReflection(node) { + const { + specifiers + } = node; + const singleBindingType = specifiers.length === 1 ? specifiers[0].type : null; + if (node.phase === "source") { + if (singleBindingType !== "ImportDefaultSpecifier") { + this.raise(Errors.SourcePhaseImportRequiresDefault, { + at: specifiers[0].loc.start + }); + } + } else if (node.phase === "defer") { + if (singleBindingType !== "ImportNamespaceSpecifier") { + this.raise(Errors.DeferImportRequiresNamespace, { + at: specifiers[0].loc.start + }); + } + } else if (node.module) { + var _node$assertions; + if (singleBindingType !== "ImportDefaultSpecifier") { + this.raise(Errors.ImportReflectionNotBinding, { + at: specifiers[0].loc.start + }); + } + if (((_node$assertions = node.assertions) == null ? void 0 : _node$assertions.length) > 0) { + this.raise(Errors.ImportReflectionHasAssertion, { + at: node.specifiers[0].loc.start + }); + } + } + } + checkJSONModuleImport(node) { + if (this.isJSONModuleImport(node) && node.type !== "ExportAllDeclaration") { + const { + specifiers + } = node; + if (specifiers != null) { + const nonDefaultNamedSpecifier = specifiers.find(specifier => { + let imported; + if (specifier.type === "ExportSpecifier") { + imported = specifier.local; + } else if (specifier.type === "ImportSpecifier") { + imported = specifier.imported; + } + if (imported !== undefined) { + return imported.type === "Identifier" ? imported.name !== "default" : imported.value !== "default"; + } + }); + if (nonDefaultNamedSpecifier !== undefined) { + this.raise(Errors.ImportJSONBindingNotDefault, { + at: nonDefaultNamedSpecifier.loc.start + }); + } + } + } + } + isPotentialImportPhase(isExport) { + if (isExport) return false; + return this.isContextual(105) || this.isContextual(97) || this.isContextual(127); + } + applyImportPhase(node, isExport, phase, loc) { + if (isExport) { + return; + } + if (phase === "module") { + this.expectPlugin("importReflection", loc); + node.module = true; + } else if (this.hasPlugin("importReflection")) { + node.module = false; + } + if (phase === "source") { + this.expectPlugin("sourcePhaseImports", loc); + node.phase = "source"; + } else if (phase === "defer") { + this.expectPlugin("deferredImportEvaluation", loc); + node.phase = "defer"; + } else if (this.hasPlugin("sourcePhaseImports")) { + node.phase = null; + } + } + parseMaybeImportPhase(node, isExport) { + if (!this.isPotentialImportPhase(isExport)) { + this.applyImportPhase(node, isExport, null); + return null; + } + const phaseIdentifier = this.parseIdentifier(true); + const { + type + } = this.state; + const isImportPhase = tokenIsKeywordOrIdentifier(type) ? type !== 98 || this.lookaheadCharCode() === 102 : type !== 12; + if (isImportPhase) { + this.resetPreviousIdentifierLeadingComments(phaseIdentifier); + this.applyImportPhase(node, isExport, phaseIdentifier.name, phaseIdentifier.loc.start); + return null; + } else { + this.applyImportPhase(node, isExport, null); + return phaseIdentifier; + } + } + isPrecedingIdImportPhase(phase) { + const { + type + } = this.state; + return tokenIsIdentifier(type) ? type !== 98 || this.lookaheadCharCode() === 102 : type !== 12; + } + parseImport(node) { + if (this.match(133)) { + return this.parseImportSourceAndAttributes(node); + } + return this.parseImportSpecifiersAndAfter(node, this.parseMaybeImportPhase(node, false)); + } + parseImportSpecifiersAndAfter(node, maybeDefaultIdentifier) { + node.specifiers = []; + const hasDefault = this.maybeParseDefaultImportSpecifier(node, maybeDefaultIdentifier); + const parseNext = !hasDefault || this.eat(12); + const hasStar = parseNext && this.maybeParseStarImportSpecifier(node); + if (parseNext && !hasStar) this.parseNamedImportSpecifiers(node); + this.expectContextual(98); + return this.parseImportSourceAndAttributes(node); + } + parseImportSourceAndAttributes(node) { + var _node$specifiers2; + (_node$specifiers2 = node.specifiers) != null ? _node$specifiers2 : node.specifiers = []; + node.source = this.parseImportSource(); + this.maybeParseImportAttributes(node); + this.checkImportReflection(node); + this.checkJSONModuleImport(node); + this.semicolon(); + return this.finishNode(node, "ImportDeclaration"); + } + parseImportSource() { + if (!this.match(133)) this.unexpected(); + return this.parseExprAtom(); + } + parseImportSpecifierLocal(node, specifier, type) { + specifier.local = this.parseIdentifier(); + node.specifiers.push(this.finishImportSpecifier(specifier, type)); + } + finishImportSpecifier(specifier, type, bindingType = 8201) { + this.checkLVal(specifier.local, { + in: { + type + }, + binding: bindingType + }); + return this.finishNode(specifier, type); + } + parseImportAttributes() { + this.expect(5); + const attrs = []; + const attrNames = new Set(); + do { + if (this.match(8)) { + break; + } + const node = this.startNode(); + const keyName = this.state.value; + if (attrNames.has(keyName)) { + this.raise(Errors.ModuleAttributesWithDuplicateKeys, { + at: this.state.startLoc, + key: keyName + }); + } + attrNames.add(keyName); + if (this.match(133)) { + node.key = this.parseStringLiteral(keyName); + } else { + node.key = this.parseIdentifier(true); + } + this.expect(14); + if (!this.match(133)) { + throw this.raise(Errors.ModuleAttributeInvalidValue, { + at: this.state.startLoc + }); + } + node.value = this.parseStringLiteral(this.state.value); + attrs.push(this.finishNode(node, "ImportAttribute")); + } while (this.eat(12)); + this.expect(8); + return attrs; + } + parseModuleAttributes() { + const attrs = []; + const attributes = new Set(); + do { + const node = this.startNode(); + node.key = this.parseIdentifier(true); + if (node.key.name !== "type") { + this.raise(Errors.ModuleAttributeDifferentFromType, { + at: node.key + }); + } + if (attributes.has(node.key.name)) { + this.raise(Errors.ModuleAttributesWithDuplicateKeys, { + at: node.key, + key: node.key.name + }); + } + attributes.add(node.key.name); + this.expect(14); + if (!this.match(133)) { + throw this.raise(Errors.ModuleAttributeInvalidValue, { + at: this.state.startLoc + }); + } + node.value = this.parseStringLiteral(this.state.value); + attrs.push(this.finishNode(node, "ImportAttribute")); + } while (this.eat(12)); + return attrs; + } + maybeParseImportAttributes(node) { + let attributes; + let useWith = false; + if (this.match(76)) { + if (this.hasPrecedingLineBreak() && this.lookaheadCharCode() === 40) { + return; + } + this.next(); + { + if (this.hasPlugin("moduleAttributes")) { + attributes = this.parseModuleAttributes(); + } else { + this.expectImportAttributesPlugin(); + attributes = this.parseImportAttributes(); + } + } + useWith = true; + } else if (this.isContextual(94) && !this.hasPrecedingLineBreak()) { + if (this.hasPlugin("importAttributes")) { + if (this.getPluginOption("importAttributes", "deprecatedAssertSyntax") !== true) { + this.raise(Errors.ImportAttributesUseAssert, { + at: this.state.startLoc + }); + } + this.addExtra(node, "deprecatedAssertSyntax", true); + } else { + this.expectOnePlugin(["importAttributes", "importAssertions"]); + } + this.next(); + attributes = this.parseImportAttributes(); + } else if (this.hasPlugin("importAttributes") || this.hasPlugin("importAssertions")) { + attributes = []; + } else { + if (this.hasPlugin("moduleAttributes")) { + attributes = []; + } else return; + } + if (!useWith && this.hasPlugin("importAssertions")) { + node.assertions = attributes; + } else { + node.attributes = attributes; + } + } + maybeParseDefaultImportSpecifier(node, maybeDefaultIdentifier) { + if (maybeDefaultIdentifier) { + const specifier = this.startNodeAtNode(maybeDefaultIdentifier); + specifier.local = maybeDefaultIdentifier; + node.specifiers.push(this.finishImportSpecifier(specifier, "ImportDefaultSpecifier")); + return true; + } else if (tokenIsKeywordOrIdentifier(this.state.type)) { + this.parseImportSpecifierLocal(node, this.startNode(), "ImportDefaultSpecifier"); + return true; + } + return false; + } + maybeParseStarImportSpecifier(node) { + if (this.match(55)) { + const specifier = this.startNode(); + this.next(); + this.expectContextual(93); + this.parseImportSpecifierLocal(node, specifier, "ImportNamespaceSpecifier"); + return true; + } + return false; + } + parseNamedImportSpecifiers(node) { + let first = true; + this.expect(5); + while (!this.eat(8)) { + if (first) { + first = false; + } else { + if (this.eat(14)) { + throw this.raise(Errors.DestructureNamedImport, { + at: this.state.startLoc + }); + } + this.expect(12); + if (this.eat(8)) break; + } + const specifier = this.startNode(); + const importedIsString = this.match(133); + const isMaybeTypeOnly = this.isContextual(130); + specifier.imported = this.parseModuleExportName(); + const importSpecifier = this.parseImportSpecifier(specifier, importedIsString, node.importKind === "type" || node.importKind === "typeof", isMaybeTypeOnly, undefined); + node.specifiers.push(importSpecifier); + } + } + parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly, bindingType) { + if (this.eatContextual(93)) { + specifier.local = this.parseIdentifier(); + } else { + const { + imported + } = specifier; + if (importedIsString) { + throw this.raise(Errors.ImportBindingIsString, { + at: specifier, + importName: imported.value + }); + } + this.checkReservedWord(imported.name, specifier.loc.start, true, true); + if (!specifier.local) { + specifier.local = cloneIdentifier(imported); + } + } + return this.finishImportSpecifier(specifier, "ImportSpecifier", bindingType); + } + isThisParam(param) { + return param.type === "Identifier" && param.name === "this"; + } +} +let Parser$1 = class Parser extends StatementParser { + constructor(options, input) { + options = getOptions(options); + super(options, input); + this.options = options; + this.initializeScopes(); + this.plugins = pluginsMap(this.options.plugins); + this.filename = options.sourceFilename; + } + getScopeHandler() { + return ScopeHandler; + } + parse() { + this.enterInitialScopes(); + const file = this.startNode(); + const program = this.startNode(); + this.nextToken(); + file.errors = null; + this.parseTopLevel(file, program); + file.errors = this.state.errors; + return file; + } +}; +function pluginsMap(plugins) { + const pluginMap = new Map(); + for (const plugin of plugins) { + const [name, options] = Array.isArray(plugin) ? plugin : [plugin, {}]; + if (!pluginMap.has(name)) pluginMap.set(name, options || {}); + } + return pluginMap; +} +function parse$c(input, options) { + var _options; + if (((_options = options) == null ? void 0 : _options.sourceType) === "unambiguous") { + options = Object.assign({}, options); + try { + options.sourceType = "module"; + const parser = getParser(options, input); + const ast = parser.parse(); + if (parser.sawUnambiguousESM) { + return ast; + } + if (parser.ambiguousScriptDifferentAst) { + try { + options.sourceType = "script"; + return getParser(options, input).parse(); + } catch (_unused) {} + } else { + ast.program.sourceType = "script"; + } + return ast; + } catch (moduleError) { + try { + options.sourceType = "script"; + return getParser(options, input).parse(); + } catch (_unused2) {} + throw moduleError; + } + } else { + return getParser(options, input).parse(); + } +} +function parseExpression(input, options) { + const parser = getParser(options, input); + if (parser.options.strictMode) { + parser.state.strict = true; + } + return parser.getExpression(); +} +function generateExportedTokenTypes(internalTokenTypes) { + const tokenTypes = {}; + for (const typeName of Object.keys(internalTokenTypes)) { + tokenTypes[typeName] = getExportedToken(internalTokenTypes[typeName]); + } + return tokenTypes; +} +const tokTypes = generateExportedTokenTypes(tt); +function getParser(options, input) { + let cls = Parser$1; + if (options != null && options.plugins) { + validatePlugins(options.plugins); + cls = getParserClass(options.plugins); + } + return new cls(options, input); +} +const parserClassCache = {}; +function getParserClass(pluginsFromOptions) { + const pluginList = mixinPluginNames.filter(name => hasPlugin(pluginsFromOptions, name)); + const key = pluginList.join("/"); + let cls = parserClassCache[key]; + if (!cls) { + cls = Parser$1; + for (const plugin of pluginList) { + cls = mixinPlugins[plugin](cls); + } + parserClassCache[key] = cls; + } + return cls; +} +lib.parse = parse$c; +lib.parseExpression = parseExpression; +lib.tokTypes = tokTypes; + +var estreeWalker$1 = {exports: {}}; + +(function (module, exports) { + (function (global, factory) { + factory(exports) ; + }(commonjsGlobal, (function (exports) { + // @ts-check + /** @typedef { import('estree').BaseNode} BaseNode */ + + /** @typedef {{ + skip: () => void; + remove: () => void; + replace: (node: BaseNode) => void; + }} WalkerContext */ + + class WalkerBase { + constructor() { + /** @type {boolean} */ + this.should_skip = false; + + /** @type {boolean} */ + this.should_remove = false; + + /** @type {BaseNode | null} */ + this.replacement = null; + + /** @type {WalkerContext} */ + this.context = { + skip: () => (this.should_skip = true), + remove: () => (this.should_remove = true), + replace: (node) => (this.replacement = node) + }; + } + + /** + * + * @param {any} parent + * @param {string} prop + * @param {number} index + * @param {BaseNode} node + */ + replace(parent, prop, index, node) { + if (parent) { + if (index !== null) { + parent[prop][index] = node; + } else { + parent[prop] = node; + } + } + } + + /** + * + * @param {any} parent + * @param {string} prop + * @param {number} index + */ + remove(parent, prop, index) { + if (parent) { + if (index !== null) { + parent[prop].splice(index, 1); + } else { + delete parent[prop]; + } + } + } + } + + // @ts-check + + /** @typedef { import('estree').BaseNode} BaseNode */ + /** @typedef { import('./walker.js').WalkerContext} WalkerContext */ + + /** @typedef {( + * this: WalkerContext, + * node: BaseNode, + * parent: BaseNode, + * key: string, + * index: number + * ) => void} SyncHandler */ + + class SyncWalker extends WalkerBase { + /** + * + * @param {SyncHandler} enter + * @param {SyncHandler} leave + */ + constructor(enter, leave) { + super(); + + /** @type {SyncHandler} */ + this.enter = enter; + + /** @type {SyncHandler} */ + this.leave = leave; + } + + /** + * + * @param {BaseNode} node + * @param {BaseNode} parent + * @param {string} [prop] + * @param {number} [index] + * @returns {BaseNode} + */ + visit(node, parent, prop, index) { + if (node) { + if (this.enter) { + const _should_skip = this.should_skip; + const _should_remove = this.should_remove; + const _replacement = this.replacement; + this.should_skip = false; + this.should_remove = false; + this.replacement = null; + + this.enter.call(this.context, node, parent, prop, index); + + if (this.replacement) { + node = this.replacement; + this.replace(parent, prop, index, node); + } + + if (this.should_remove) { + this.remove(parent, prop, index); + } + + const skipped = this.should_skip; + const removed = this.should_remove; + + this.should_skip = _should_skip; + this.should_remove = _should_remove; + this.replacement = _replacement; + + if (skipped) return node; + if (removed) return null; + } + + for (const key in node) { + const value = node[key]; + + if (typeof value !== "object") { + continue; + } else if (Array.isArray(value)) { + for (let i = 0; i < value.length; i += 1) { + if (value[i] !== null && typeof value[i].type === 'string') { + if (!this.visit(value[i], node, key, i)) { + // removed + i--; + } + } + } + } else if (value !== null && typeof value.type === "string") { + this.visit(value, node, key, null); + } + } + + if (this.leave) { + const _replacement = this.replacement; + const _should_remove = this.should_remove; + this.replacement = null; + this.should_remove = false; + + this.leave.call(this.context, node, parent, prop, index); + + if (this.replacement) { + node = this.replacement; + this.replace(parent, prop, index, node); + } + + if (this.should_remove) { + this.remove(parent, prop, index); + } + + const removed = this.should_remove; + + this.replacement = _replacement; + this.should_remove = _should_remove; + + if (removed) return null; + } + } + + return node; + } + } + + // @ts-check + + /** @typedef { import('estree').BaseNode} BaseNode */ + /** @typedef { import('./walker').WalkerContext} WalkerContext */ + + /** @typedef {( + * this: WalkerContext, + * node: BaseNode, + * parent: BaseNode, + * key: string, + * index: number + * ) => Promise<void>} AsyncHandler */ + + class AsyncWalker extends WalkerBase { + /** + * + * @param {AsyncHandler} enter + * @param {AsyncHandler} leave + */ + constructor(enter, leave) { + super(); + + /** @type {AsyncHandler} */ + this.enter = enter; + + /** @type {AsyncHandler} */ + this.leave = leave; + } + + /** + * + * @param {BaseNode} node + * @param {BaseNode} parent + * @param {string} [prop] + * @param {number} [index] + * @returns {Promise<BaseNode>} + */ + async visit(node, parent, prop, index) { + if (node) { + if (this.enter) { + const _should_skip = this.should_skip; + const _should_remove = this.should_remove; + const _replacement = this.replacement; + this.should_skip = false; + this.should_remove = false; + this.replacement = null; + + await this.enter.call(this.context, node, parent, prop, index); + + if (this.replacement) { + node = this.replacement; + this.replace(parent, prop, index, node); + } + + if (this.should_remove) { + this.remove(parent, prop, index); + } + + const skipped = this.should_skip; + const removed = this.should_remove; + + this.should_skip = _should_skip; + this.should_remove = _should_remove; + this.replacement = _replacement; + + if (skipped) return node; + if (removed) return null; + } + + for (const key in node) { + const value = node[key]; + + if (typeof value !== "object") { + continue; + } else if (Array.isArray(value)) { + for (let i = 0; i < value.length; i += 1) { + if (value[i] !== null && typeof value[i].type === 'string') { + if (!(await this.visit(value[i], node, key, i))) { + // removed + i--; + } + } + } + } else if (value !== null && typeof value.type === "string") { + await this.visit(value, node, key, null); + } + } + + if (this.leave) { + const _replacement = this.replacement; + const _should_remove = this.should_remove; + this.replacement = null; + this.should_remove = false; + + await this.leave.call(this.context, node, parent, prop, index); + + if (this.replacement) { + node = this.replacement; + this.replace(parent, prop, index, node); + } + + if (this.should_remove) { + this.remove(parent, prop, index); + } + + const removed = this.should_remove; + + this.replacement = _replacement; + this.should_remove = _should_remove; + + if (removed) return null; + } + } + + return node; + } + } + + // @ts-check + + /** @typedef { import('estree').BaseNode} BaseNode */ + /** @typedef { import('./sync.js').SyncHandler} SyncHandler */ + /** @typedef { import('./async.js').AsyncHandler} AsyncHandler */ + + /** + * + * @param {BaseNode} ast + * @param {{ + * enter?: SyncHandler + * leave?: SyncHandler + * }} walker + * @returns {BaseNode} + */ + function walk(ast, { enter, leave }) { + const instance = new SyncWalker(enter, leave); + return instance.visit(ast, null); + } + + /** + * + * @param {BaseNode} ast + * @param {{ + * enter?: AsyncHandler + * leave?: AsyncHandler + * }} walker + * @returns {Promise<BaseNode>} + */ + async function asyncWalk(ast, { enter, leave }) { + const instance = new AsyncWalker(enter, leave); + return await instance.visit(ast, null); + } + + exports.asyncWalk = asyncWalk; + exports.walk = walk; + + Object.defineProperty(exports, '__esModule', { value: true }); + + }))); +} (estreeWalker$1, estreeWalker$1.exports)); + +var estreeWalkerExports = estreeWalker$1.exports; + +var sourceMap = {}; + +var sourceMapGenerator = {}; + +var base64Vlq = {}; + +var base64$1 = {}; + +/* -*- Mode: js; js-indent-level: 2; -*- */ + +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +var intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split(''); + +/** + * Encode an integer in the range of 0 to 63 to a single base 64 digit. + */ +base64$1.encode = function (number) { + if (0 <= number && number < intToCharMap.length) { + return intToCharMap[number]; + } + throw new TypeError("Must be between 0 and 63: " + number); +}; + +/** + * Decode a single base 64 character code digit to an integer. Returns -1 on + * failure. + */ +base64$1.decode = function (charCode) { + var bigA = 65; // 'A' + var bigZ = 90; // 'Z' + + var littleA = 97; // 'a' + var littleZ = 122; // 'z' + + var zero = 48; // '0' + var nine = 57; // '9' + + var plus = 43; // '+' + var slash = 47; // '/' + + var littleOffset = 26; + var numberOffset = 52; + + // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ + if (bigA <= charCode && charCode <= bigZ) { + return (charCode - bigA); + } + + // 26 - 51: abcdefghijklmnopqrstuvwxyz + if (littleA <= charCode && charCode <= littleZ) { + return (charCode - littleA + littleOffset); + } + + // 52 - 61: 0123456789 + if (zero <= charCode && charCode <= nine) { + return (charCode - zero + numberOffset); + } + + // 62: + + if (charCode == plus) { + return 62; + } + + // 63: / + if (charCode == slash) { + return 63; + } + + // Invalid base64 digit. + return -1; +}; + +/* -*- Mode: js; js-indent-level: 2; -*- */ + +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + * + * Based on the Base 64 VLQ implementation in Closure Compiler: + * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java + * + * Copyright 2011 The Closure Compiler Authors. All rights reserved. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +var base64 = base64$1; + +// A single base 64 digit can contain 6 bits of data. For the base 64 variable +// length quantities we use in the source map spec, the first bit is the sign, +// the next four bits are the actual value, and the 6th bit is the +// continuation bit. The continuation bit tells us whether there are more +// digits in this value following this digit. +// +// Continuation +// | Sign +// | | +// V V +// 101011 + +var VLQ_BASE_SHIFT = 5; + +// binary: 100000 +var VLQ_BASE = 1 << VLQ_BASE_SHIFT; + +// binary: 011111 +var VLQ_BASE_MASK = VLQ_BASE - 1; + +// binary: 100000 +var VLQ_CONTINUATION_BIT = VLQ_BASE; + +/** + * Converts from a two-complement value to a value where the sign bit is + * placed in the least significant bit. For example, as decimals: + * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary) + * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary) + */ +function toVLQSigned(aValue) { + return aValue < 0 + ? ((-aValue) << 1) + 1 + : (aValue << 1) + 0; +} + +/** + * Converts to a two-complement value from a value where the sign bit is + * placed in the least significant bit. For example, as decimals: + * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1 + * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2 + */ +function fromVLQSigned(aValue) { + var isNegative = (aValue & 1) === 1; + var shifted = aValue >> 1; + return isNegative + ? -shifted + : shifted; +} + +/** + * Returns the base 64 VLQ encoded value. + */ +base64Vlq.encode = function base64VLQ_encode(aValue) { + var encoded = ""; + var digit; + + var vlq = toVLQSigned(aValue); + + do { + digit = vlq & VLQ_BASE_MASK; + vlq >>>= VLQ_BASE_SHIFT; + if (vlq > 0) { + // There are still more digits in this value, so we must make sure the + // continuation bit is marked. + digit |= VLQ_CONTINUATION_BIT; + } + encoded += base64.encode(digit); + } while (vlq > 0); + + return encoded; +}; + +/** + * Decodes the next base 64 VLQ value from the given string and returns the + * value and the rest of the string via the out parameter. + */ +base64Vlq.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) { + var strLen = aStr.length; + var result = 0; + var shift = 0; + var continuation, digit; + + do { + if (aIndex >= strLen) { + throw new Error("Expected more digits in base 64 VLQ value."); + } + + digit = base64.decode(aStr.charCodeAt(aIndex++)); + if (digit === -1) { + throw new Error("Invalid base64 digit: " + aStr.charAt(aIndex - 1)); + } + + continuation = !!(digit & VLQ_CONTINUATION_BIT); + digit &= VLQ_BASE_MASK; + result = result + (digit << shift); + shift += VLQ_BASE_SHIFT; + } while (continuation); + + aOutParam.value = fromVLQSigned(result); + aOutParam.rest = aIndex; +}; + +var util$5 = {}; + +/* -*- Mode: js; js-indent-level: 2; -*- */ + +(function (exports) { + /* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + + /** + * This is a helper function for getting values from parameter/options + * objects. + * + * @param args The object we are extracting values from + * @param name The name of the property we are getting. + * @param defaultValue An optional value to return if the property is missing + * from the object. If this is not specified and the property is missing, an + * error will be thrown. + */ + function getArg(aArgs, aName, aDefaultValue) { + if (aName in aArgs) { + return aArgs[aName]; + } else if (arguments.length === 3) { + return aDefaultValue; + } else { + throw new Error('"' + aName + '" is a required argument.'); + } + } + exports.getArg = getArg; + + var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/; + var dataUrlRegexp = /^data:.+\,.+$/; + + function urlParse(aUrl) { + var match = aUrl.match(urlRegexp); + if (!match) { + return null; + } + return { + scheme: match[1], + auth: match[2], + host: match[3], + port: match[4], + path: match[5] + }; + } + exports.urlParse = urlParse; + + function urlGenerate(aParsedUrl) { + var url = ''; + if (aParsedUrl.scheme) { + url += aParsedUrl.scheme + ':'; + } + url += '//'; + if (aParsedUrl.auth) { + url += aParsedUrl.auth + '@'; + } + if (aParsedUrl.host) { + url += aParsedUrl.host; + } + if (aParsedUrl.port) { + url += ":" + aParsedUrl.port; + } + if (aParsedUrl.path) { + url += aParsedUrl.path; + } + return url; + } + exports.urlGenerate = urlGenerate; + + var MAX_CACHED_INPUTS = 32; + + /** + * Takes some function `f(input) -> result` and returns a memoized version of + * `f`. + * + * We keep at most `MAX_CACHED_INPUTS` memoized results of `f` alive. The + * memoization is a dumb-simple, linear least-recently-used cache. + */ + function lruMemoize(f) { + var cache = []; + + return function(input) { + for (var i = 0; i < cache.length; i++) { + if (cache[i].input === input) { + var temp = cache[0]; + cache[0] = cache[i]; + cache[i] = temp; + return cache[0].result; + } + } + + var result = f(input); + + cache.unshift({ + input, + result, + }); + + if (cache.length > MAX_CACHED_INPUTS) { + cache.pop(); + } + + return result; + }; + } + + /** + * Normalizes a path, or the path portion of a URL: + * + * - Replaces consecutive slashes with one slash. + * - Removes unnecessary '.' parts. + * - Removes unnecessary '<dir>/..' parts. + * + * Based on code in the Node.js 'path' core module. + * + * @param aPath The path or url to normalize. + */ + var normalize = lruMemoize(function normalize(aPath) { + var path = aPath; + var url = urlParse(aPath); + if (url) { + if (!url.path) { + return aPath; + } + path = url.path; + } + var isAbsolute = exports.isAbsolute(path); + // Split the path into parts between `/` characters. This is much faster than + // using `.split(/\/+/g)`. + var parts = []; + var start = 0; + var i = 0; + while (true) { + start = i; + i = path.indexOf("/", start); + if (i === -1) { + parts.push(path.slice(start)); + break; + } else { + parts.push(path.slice(start, i)); + while (i < path.length && path[i] === "/") { + i++; + } + } + } + + for (var part, up = 0, i = parts.length - 1; i >= 0; i--) { + part = parts[i]; + if (part === '.') { + parts.splice(i, 1); + } else if (part === '..') { + up++; + } else if (up > 0) { + if (part === '') { + // The first part is blank if the path is absolute. Trying to go + // above the root is a no-op. Therefore we can remove all '..' parts + // directly after the root. + parts.splice(i + 1, up); + up = 0; + } else { + parts.splice(i, 2); + up--; + } + } + } + path = parts.join('/'); + + if (path === '') { + path = isAbsolute ? '/' : '.'; + } + + if (url) { + url.path = path; + return urlGenerate(url); + } + return path; + }); + exports.normalize = normalize; + + /** + * Joins two paths/URLs. + * + * @param aRoot The root path or URL. + * @param aPath The path or URL to be joined with the root. + * + * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a + * scheme-relative URL: Then the scheme of aRoot, if any, is prepended + * first. + * - Otherwise aPath is a path. If aRoot is a URL, then its path portion + * is updated with the result and aRoot is returned. Otherwise the result + * is returned. + * - If aPath is absolute, the result is aPath. + * - Otherwise the two paths are joined with a slash. + * - Joining for example 'http://' and 'www.example.com' is also supported. + */ + function join(aRoot, aPath) { + if (aRoot === "") { + aRoot = "."; + } + if (aPath === "") { + aPath = "."; + } + var aPathUrl = urlParse(aPath); + var aRootUrl = urlParse(aRoot); + if (aRootUrl) { + aRoot = aRootUrl.path || '/'; + } + + // `join(foo, '//www.example.org')` + if (aPathUrl && !aPathUrl.scheme) { + if (aRootUrl) { + aPathUrl.scheme = aRootUrl.scheme; + } + return urlGenerate(aPathUrl); + } + + if (aPathUrl || aPath.match(dataUrlRegexp)) { + return aPath; + } + + // `join('http://', 'www.example.com')` + if (aRootUrl && !aRootUrl.host && !aRootUrl.path) { + aRootUrl.host = aPath; + return urlGenerate(aRootUrl); + } + + var joined = aPath.charAt(0) === '/' + ? aPath + : normalize(aRoot.replace(/\/+$/, '') + '/' + aPath); + + if (aRootUrl) { + aRootUrl.path = joined; + return urlGenerate(aRootUrl); + } + return joined; + } + exports.join = join; + + exports.isAbsolute = function (aPath) { + return aPath.charAt(0) === '/' || urlRegexp.test(aPath); + }; + + /** + * Make a path relative to a URL or another path. + * + * @param aRoot The root path or URL. + * @param aPath The path or URL to be made relative to aRoot. + */ + function relative(aRoot, aPath) { + if (aRoot === "") { + aRoot = "."; + } + + aRoot = aRoot.replace(/\/$/, ''); + + // It is possible for the path to be above the root. In this case, simply + // checking whether the root is a prefix of the path won't work. Instead, we + // need to remove components from the root one by one, until either we find + // a prefix that fits, or we run out of components to remove. + var level = 0; + while (aPath.indexOf(aRoot + '/') !== 0) { + var index = aRoot.lastIndexOf("/"); + if (index < 0) { + return aPath; + } + + // If the only part of the root that is left is the scheme (i.e. http://, + // file:///, etc.), one or more slashes (/), or simply nothing at all, we + // have exhausted all components, so the path is not relative to the root. + aRoot = aRoot.slice(0, index); + if (aRoot.match(/^([^\/]+:\/)?\/*$/)) { + return aPath; + } + + ++level; + } + + // Make sure we add a "../" for each component we removed from the root. + return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1); + } + exports.relative = relative; + + var supportsNullProto = (function () { + var obj = Object.create(null); + return !('__proto__' in obj); + }()); + + function identity (s) { + return s; + } + + /** + * Because behavior goes wacky when you set `__proto__` on objects, we + * have to prefix all the strings in our set with an arbitrary character. + * + * See https://github.com/mozilla/source-map/pull/31 and + * https://github.com/mozilla/source-map/issues/30 + * + * @param String aStr + */ + function toSetString(aStr) { + if (isProtoString(aStr)) { + return '$' + aStr; + } + + return aStr; + } + exports.toSetString = supportsNullProto ? identity : toSetString; + + function fromSetString(aStr) { + if (isProtoString(aStr)) { + return aStr.slice(1); + } + + return aStr; + } + exports.fromSetString = supportsNullProto ? identity : fromSetString; + + function isProtoString(s) { + if (!s) { + return false; + } + + var length = s.length; + + if (length < 9 /* "__proto__".length */) { + return false; + } + + if (s.charCodeAt(length - 1) !== 95 /* '_' */ || + s.charCodeAt(length - 2) !== 95 /* '_' */ || + s.charCodeAt(length - 3) !== 111 /* 'o' */ || + s.charCodeAt(length - 4) !== 116 /* 't' */ || + s.charCodeAt(length - 5) !== 111 /* 'o' */ || + s.charCodeAt(length - 6) !== 114 /* 'r' */ || + s.charCodeAt(length - 7) !== 112 /* 'p' */ || + s.charCodeAt(length - 8) !== 95 /* '_' */ || + s.charCodeAt(length - 9) !== 95 /* '_' */) { + return false; + } + + for (var i = length - 10; i >= 0; i--) { + if (s.charCodeAt(i) !== 36 /* '$' */) { + return false; + } + } + + return true; + } + + /** + * Comparator between two mappings where the original positions are compared. + * + * Optionally pass in `true` as `onlyCompareGenerated` to consider two + * mappings with the same original source/line/column, but different generated + * line and column the same. Useful when searching for a mapping with a + * stubbed out mapping. + */ + function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) { + var cmp = strcmp(mappingA.source, mappingB.source); + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0 || onlyCompareOriginal) { + return cmp; + } + + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } + + return strcmp(mappingA.name, mappingB.name); + } + exports.compareByOriginalPositions = compareByOriginalPositions; + + function compareByOriginalPositionsNoSource(mappingA, mappingB, onlyCompareOriginal) { + var cmp; + + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0 || onlyCompareOriginal) { + return cmp; + } + + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } + + return strcmp(mappingA.name, mappingB.name); + } + exports.compareByOriginalPositionsNoSource = compareByOriginalPositionsNoSource; + + /** + * Comparator between two mappings with deflated source and name indices where + * the generated positions are compared. + * + * Optionally pass in `true` as `onlyCompareGenerated` to consider two + * mappings with the same generated line and column, but different + * source/name/original line and column the same. Useful when searching for a + * mapping with a stubbed out mapping. + */ + function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) { + var cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0 || onlyCompareGenerated) { + return cmp; + } + + cmp = strcmp(mappingA.source, mappingB.source); + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0) { + return cmp; + } + + return strcmp(mappingA.name, mappingB.name); + } + exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated; + + function compareByGeneratedPositionsDeflatedNoLine(mappingA, mappingB, onlyCompareGenerated) { + var cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0 || onlyCompareGenerated) { + return cmp; + } + + cmp = strcmp(mappingA.source, mappingB.source); + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0) { + return cmp; + } + + return strcmp(mappingA.name, mappingB.name); + } + exports.compareByGeneratedPositionsDeflatedNoLine = compareByGeneratedPositionsDeflatedNoLine; + + function strcmp(aStr1, aStr2) { + if (aStr1 === aStr2) { + return 0; + } + + if (aStr1 === null) { + return 1; // aStr2 !== null + } + + if (aStr2 === null) { + return -1; // aStr1 !== null + } + + if (aStr1 > aStr2) { + return 1; + } + + return -1; + } + + /** + * Comparator between two mappings with inflated source and name strings where + * the generated positions are compared. + */ + function compareByGeneratedPositionsInflated(mappingA, mappingB) { + var cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0) { + return cmp; + } + + cmp = strcmp(mappingA.source, mappingB.source); + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0) { + return cmp; + } + + return strcmp(mappingA.name, mappingB.name); + } + exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated; + + /** + * Strip any JSON XSSI avoidance prefix from the string (as documented + * in the source maps specification), and then parse the string as + * JSON. + */ + function parseSourceMapInput(str) { + return JSON.parse(str.replace(/^\)]}'[^\n]*\n/, '')); + } + exports.parseSourceMapInput = parseSourceMapInput; + + /** + * Compute the URL of a source given the the source root, the source's + * URL, and the source map's URL. + */ + function computeSourceURL(sourceRoot, sourceURL, sourceMapURL) { + sourceURL = sourceURL || ''; + + if (sourceRoot) { + // This follows what Chrome does. + if (sourceRoot[sourceRoot.length - 1] !== '/' && sourceURL[0] !== '/') { + sourceRoot += '/'; + } + // The spec says: + // Line 4: An optional source root, useful for relocating source + // files on a server or removing repeated values in the + // “sources” entry. This value is prepended to the individual + // entries in the “source” field. + sourceURL = sourceRoot + sourceURL; + } + + // Historically, SourceMapConsumer did not take the sourceMapURL as + // a parameter. This mode is still somewhat supported, which is why + // this code block is conditional. However, it's preferable to pass + // the source map URL to SourceMapConsumer, so that this function + // can implement the source URL resolution algorithm as outlined in + // the spec. This block is basically the equivalent of: + // new URL(sourceURL, sourceMapURL).toString() + // ... except it avoids using URL, which wasn't available in the + // older releases of node still supported by this library. + // + // The spec says: + // If the sources are not absolute URLs after prepending of the + // “sourceRoot”, the sources are resolved relative to the + // SourceMap (like resolving script src in a html document). + if (sourceMapURL) { + var parsed = urlParse(sourceMapURL); + if (!parsed) { + throw new Error("sourceMapURL could not be parsed"); + } + if (parsed.path) { + // Strip the last path component, but keep the "/". + var index = parsed.path.lastIndexOf('/'); + if (index >= 0) { + parsed.path = parsed.path.substring(0, index + 1); + } + } + sourceURL = join(urlGenerate(parsed), sourceURL); + } + + return normalize(sourceURL); + } + exports.computeSourceURL = computeSourceURL; +} (util$5)); + +var arraySet = {}; + +/* -*- Mode: js; js-indent-level: 2; -*- */ + +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +var util$4 = util$5; +var has = Object.prototype.hasOwnProperty; +var hasNativeMap = typeof Map !== "undefined"; + +/** + * A data structure which is a combination of an array and a set. Adding a new + * member is O(1), testing for membership is O(1), and finding the index of an + * element is O(1). Removing elements from the set is not supported. Only + * strings are supported for membership. + */ +function ArraySet$2() { + this._array = []; + this._set = hasNativeMap ? new Map() : Object.create(null); +} + +/** + * Static method for creating ArraySet instances from an existing array. + */ +ArraySet$2.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) { + var set = new ArraySet$2(); + for (var i = 0, len = aArray.length; i < len; i++) { + set.add(aArray[i], aAllowDuplicates); + } + return set; +}; + +/** + * Return how many unique items are in this ArraySet. If duplicates have been + * added, than those do not count towards the size. + * + * @returns Number + */ +ArraySet$2.prototype.size = function ArraySet_size() { + return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length; +}; + +/** + * Add the given string to this set. + * + * @param String aStr + */ +ArraySet$2.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) { + var sStr = hasNativeMap ? aStr : util$4.toSetString(aStr); + var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr); + var idx = this._array.length; + if (!isDuplicate || aAllowDuplicates) { + this._array.push(aStr); + } + if (!isDuplicate) { + if (hasNativeMap) { + this._set.set(aStr, idx); + } else { + this._set[sStr] = idx; + } + } +}; + +/** + * Is the given string a member of this set? + * + * @param String aStr + */ +ArraySet$2.prototype.has = function ArraySet_has(aStr) { + if (hasNativeMap) { + return this._set.has(aStr); + } else { + var sStr = util$4.toSetString(aStr); + return has.call(this._set, sStr); + } +}; + +/** + * What is the index of the given string in the array? + * + * @param String aStr + */ +ArraySet$2.prototype.indexOf = function ArraySet_indexOf(aStr) { + if (hasNativeMap) { + var idx = this._set.get(aStr); + if (idx >= 0) { + return idx; + } + } else { + var sStr = util$4.toSetString(aStr); + if (has.call(this._set, sStr)) { + return this._set[sStr]; + } + } + + throw new Error('"' + aStr + '" is not in the set.'); +}; + +/** + * What is the element at the given index? + * + * @param Number aIdx + */ +ArraySet$2.prototype.at = function ArraySet_at(aIdx) { + if (aIdx >= 0 && aIdx < this._array.length) { + return this._array[aIdx]; + } + throw new Error('No element indexed by ' + aIdx); +}; + +/** + * Returns the array representation of this set (which has the proper indices + * indicated by indexOf). Note that this is a copy of the internal array used + * for storing the members so that no one can mess with internal state. + */ +ArraySet$2.prototype.toArray = function ArraySet_toArray() { + return this._array.slice(); +}; + +arraySet.ArraySet = ArraySet$2; + +var mappingList = {}; + +/* -*- Mode: js; js-indent-level: 2; -*- */ + +/* + * Copyright 2014 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +var util$3 = util$5; + +/** + * Determine whether mappingB is after mappingA with respect to generated + * position. + */ +function generatedPositionAfter(mappingA, mappingB) { + // Optimized for most common case + var lineA = mappingA.generatedLine; + var lineB = mappingB.generatedLine; + var columnA = mappingA.generatedColumn; + var columnB = mappingB.generatedColumn; + return lineB > lineA || lineB == lineA && columnB >= columnA || + util$3.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0; +} + +/** + * A data structure to provide a sorted view of accumulated mappings in a + * performance conscious manner. It trades a neglibable overhead in general + * case for a large speedup in case of mappings being added in order. + */ +function MappingList$1() { + this._array = []; + this._sorted = true; + // Serves as infimum + this._last = {generatedLine: -1, generatedColumn: 0}; +} + +/** + * Iterate through internal items. This method takes the same arguments that + * `Array.prototype.forEach` takes. + * + * NOTE: The order of the mappings is NOT guaranteed. + */ +MappingList$1.prototype.unsortedForEach = + function MappingList_forEach(aCallback, aThisArg) { + this._array.forEach(aCallback, aThisArg); + }; + +/** + * Add the given source mapping. + * + * @param Object aMapping + */ +MappingList$1.prototype.add = function MappingList_add(aMapping) { + if (generatedPositionAfter(this._last, aMapping)) { + this._last = aMapping; + this._array.push(aMapping); + } else { + this._sorted = false; + this._array.push(aMapping); + } +}; + +/** + * Returns the flat, sorted array of mappings. The mappings are sorted by + * generated position. + * + * WARNING: This method returns internal data without copying, for + * performance. The return value must NOT be mutated, and should be treated as + * an immutable borrow. If you want to take ownership, you must make your own + * copy. + */ +MappingList$1.prototype.toArray = function MappingList_toArray() { + if (!this._sorted) { + this._array.sort(util$3.compareByGeneratedPositionsInflated); + this._sorted = true; + } + return this._array; +}; + +mappingList.MappingList = MappingList$1; + +/* -*- Mode: js; js-indent-level: 2; -*- */ + +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +var base64VLQ$1 = base64Vlq; +var util$2 = util$5; +var ArraySet$1 = arraySet.ArraySet; +var MappingList = mappingList.MappingList; + +/** + * An instance of the SourceMapGenerator represents a source map which is + * being built incrementally. You may pass an object with the following + * properties: + * + * - file: The filename of the generated source. + * - sourceRoot: A root for all relative URLs in this source map. + */ +function SourceMapGenerator$1(aArgs) { + if (!aArgs) { + aArgs = {}; + } + this._file = util$2.getArg(aArgs, 'file', null); + this._sourceRoot = util$2.getArg(aArgs, 'sourceRoot', null); + this._skipValidation = util$2.getArg(aArgs, 'skipValidation', false); + this._sources = new ArraySet$1(); + this._names = new ArraySet$1(); + this._mappings = new MappingList(); + this._sourcesContents = null; +} + +SourceMapGenerator$1.prototype._version = 3; + +/** + * Creates a new SourceMapGenerator based on a SourceMapConsumer + * + * @param aSourceMapConsumer The SourceMap. + */ +SourceMapGenerator$1.fromSourceMap = + function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) { + var sourceRoot = aSourceMapConsumer.sourceRoot; + var generator = new SourceMapGenerator$1({ + file: aSourceMapConsumer.file, + sourceRoot: sourceRoot + }); + aSourceMapConsumer.eachMapping(function (mapping) { + var newMapping = { + generated: { + line: mapping.generatedLine, + column: mapping.generatedColumn + } + }; + + if (mapping.source != null) { + newMapping.source = mapping.source; + if (sourceRoot != null) { + newMapping.source = util$2.relative(sourceRoot, newMapping.source); + } + + newMapping.original = { + line: mapping.originalLine, + column: mapping.originalColumn + }; + + if (mapping.name != null) { + newMapping.name = mapping.name; + } + } + + generator.addMapping(newMapping); + }); + aSourceMapConsumer.sources.forEach(function (sourceFile) { + var sourceRelative = sourceFile; + if (sourceRoot !== null) { + sourceRelative = util$2.relative(sourceRoot, sourceFile); + } + + if (!generator._sources.has(sourceRelative)) { + generator._sources.add(sourceRelative); + } + + var content = aSourceMapConsumer.sourceContentFor(sourceFile); + if (content != null) { + generator.setSourceContent(sourceFile, content); + } + }); + return generator; + }; + +/** + * Add a single mapping from original source line and column to the generated + * source's line and column for this source map being created. The mapping + * object should have the following properties: + * + * - generated: An object with the generated line and column positions. + * - original: An object with the original line and column positions. + * - source: The original source file (relative to the sourceRoot). + * - name: An optional original token name for this mapping. + */ +SourceMapGenerator$1.prototype.addMapping = + function SourceMapGenerator_addMapping(aArgs) { + var generated = util$2.getArg(aArgs, 'generated'); + var original = util$2.getArg(aArgs, 'original', null); + var source = util$2.getArg(aArgs, 'source', null); + var name = util$2.getArg(aArgs, 'name', null); + + if (!this._skipValidation) { + this._validateMapping(generated, original, source, name); + } + + if (source != null) { + source = String(source); + if (!this._sources.has(source)) { + this._sources.add(source); + } + } + + if (name != null) { + name = String(name); + if (!this._names.has(name)) { + this._names.add(name); + } + } + + this._mappings.add({ + generatedLine: generated.line, + generatedColumn: generated.column, + originalLine: original != null && original.line, + originalColumn: original != null && original.column, + source: source, + name: name + }); + }; + +/** + * Set the source content for a source file. + */ +SourceMapGenerator$1.prototype.setSourceContent = + function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) { + var source = aSourceFile; + if (this._sourceRoot != null) { + source = util$2.relative(this._sourceRoot, source); + } + + if (aSourceContent != null) { + // Add the source content to the _sourcesContents map. + // Create a new _sourcesContents map if the property is null. + if (!this._sourcesContents) { + this._sourcesContents = Object.create(null); + } + this._sourcesContents[util$2.toSetString(source)] = aSourceContent; + } else if (this._sourcesContents) { + // Remove the source file from the _sourcesContents map. + // If the _sourcesContents map is empty, set the property to null. + delete this._sourcesContents[util$2.toSetString(source)]; + if (Object.keys(this._sourcesContents).length === 0) { + this._sourcesContents = null; + } + } + }; + +/** + * Applies the mappings of a sub-source-map for a specific source file to the + * source map being generated. Each mapping to the supplied source file is + * rewritten using the supplied source map. Note: The resolution for the + * resulting mappings is the minimium of this map and the supplied map. + * + * @param aSourceMapConsumer The source map to be applied. + * @param aSourceFile Optional. The filename of the source file. + * If omitted, SourceMapConsumer's file property will be used. + * @param aSourceMapPath Optional. The dirname of the path to the source map + * to be applied. If relative, it is relative to the SourceMapConsumer. + * This parameter is needed when the two source maps aren't in the same + * directory, and the source map to be applied contains relative source + * paths. If so, those relative source paths need to be rewritten + * relative to the SourceMapGenerator. + */ +SourceMapGenerator$1.prototype.applySourceMap = + function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) { + var sourceFile = aSourceFile; + // If aSourceFile is omitted, we will use the file property of the SourceMap + if (aSourceFile == null) { + if (aSourceMapConsumer.file == null) { + throw new Error( + 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' + + 'or the source map\'s "file" property. Both were omitted.' + ); + } + sourceFile = aSourceMapConsumer.file; + } + var sourceRoot = this._sourceRoot; + // Make "sourceFile" relative if an absolute Url is passed. + if (sourceRoot != null) { + sourceFile = util$2.relative(sourceRoot, sourceFile); + } + // Applying the SourceMap can add and remove items from the sources and + // the names array. + var newSources = new ArraySet$1(); + var newNames = new ArraySet$1(); + + // Find mappings for the "sourceFile" + this._mappings.unsortedForEach(function (mapping) { + if (mapping.source === sourceFile && mapping.originalLine != null) { + // Check if it can be mapped by the source map, then update the mapping. + var original = aSourceMapConsumer.originalPositionFor({ + line: mapping.originalLine, + column: mapping.originalColumn + }); + if (original.source != null) { + // Copy mapping + mapping.source = original.source; + if (aSourceMapPath != null) { + mapping.source = util$2.join(aSourceMapPath, mapping.source); + } + if (sourceRoot != null) { + mapping.source = util$2.relative(sourceRoot, mapping.source); + } + mapping.originalLine = original.line; + mapping.originalColumn = original.column; + if (original.name != null) { + mapping.name = original.name; + } + } + } + + var source = mapping.source; + if (source != null && !newSources.has(source)) { + newSources.add(source); + } + + var name = mapping.name; + if (name != null && !newNames.has(name)) { + newNames.add(name); + } + + }, this); + this._sources = newSources; + this._names = newNames; + + // Copy sourcesContents of applied map. + aSourceMapConsumer.sources.forEach(function (sourceFile) { + var content = aSourceMapConsumer.sourceContentFor(sourceFile); + if (content != null) { + if (aSourceMapPath != null) { + sourceFile = util$2.join(aSourceMapPath, sourceFile); + } + if (sourceRoot != null) { + sourceFile = util$2.relative(sourceRoot, sourceFile); + } + this.setSourceContent(sourceFile, content); + } + }, this); + }; + +/** + * A mapping can have one of the three levels of data: + * + * 1. Just the generated position. + * 2. The Generated position, original position, and original source. + * 3. Generated and original position, original source, as well as a name + * token. + * + * To maintain consistency, we validate that any new mapping being added falls + * in to one of these categories. + */ +SourceMapGenerator$1.prototype._validateMapping = + function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource, + aName) { + // When aOriginal is truthy but has empty values for .line and .column, + // it is most likely a programmer error. In this case we throw a very + // specific error message to try to guide them the right way. + // For example: https://github.com/Polymer/polymer-bundler/pull/519 + if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') { + throw new Error( + 'original.line and original.column are not numbers -- you probably meant to omit ' + + 'the original mapping entirely and only map the generated position. If so, pass ' + + 'null for the original mapping instead of an object with empty or null values.' + ); + } + + if (aGenerated && 'line' in aGenerated && 'column' in aGenerated + && aGenerated.line > 0 && aGenerated.column >= 0 + && !aOriginal && !aSource && !aName) { + // Case 1. + return; + } + else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated + && aOriginal && 'line' in aOriginal && 'column' in aOriginal + && aGenerated.line > 0 && aGenerated.column >= 0 + && aOriginal.line > 0 && aOriginal.column >= 0 + && aSource) { + // Cases 2 and 3. + return; + } + else { + throw new Error('Invalid mapping: ' + JSON.stringify({ + generated: aGenerated, + source: aSource, + original: aOriginal, + name: aName + })); + } + }; + +/** + * Serialize the accumulated mappings in to the stream of base 64 VLQs + * specified by the source map format. + */ +SourceMapGenerator$1.prototype._serializeMappings = + function SourceMapGenerator_serializeMappings() { + var previousGeneratedColumn = 0; + var previousGeneratedLine = 1; + var previousOriginalColumn = 0; + var previousOriginalLine = 0; + var previousName = 0; + var previousSource = 0; + var result = ''; + var next; + var mapping; + var nameIdx; + var sourceIdx; + + var mappings = this._mappings.toArray(); + for (var i = 0, len = mappings.length; i < len; i++) { + mapping = mappings[i]; + next = ''; + + if (mapping.generatedLine !== previousGeneratedLine) { + previousGeneratedColumn = 0; + while (mapping.generatedLine !== previousGeneratedLine) { + next += ';'; + previousGeneratedLine++; + } + } + else { + if (i > 0) { + if (!util$2.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) { + continue; + } + next += ','; + } + } + + next += base64VLQ$1.encode(mapping.generatedColumn + - previousGeneratedColumn); + previousGeneratedColumn = mapping.generatedColumn; + + if (mapping.source != null) { + sourceIdx = this._sources.indexOf(mapping.source); + next += base64VLQ$1.encode(sourceIdx - previousSource); + previousSource = sourceIdx; + + // lines are stored 0-based in SourceMap spec version 3 + next += base64VLQ$1.encode(mapping.originalLine - 1 + - previousOriginalLine); + previousOriginalLine = mapping.originalLine - 1; + + next += base64VLQ$1.encode(mapping.originalColumn + - previousOriginalColumn); + previousOriginalColumn = mapping.originalColumn; + + if (mapping.name != null) { + nameIdx = this._names.indexOf(mapping.name); + next += base64VLQ$1.encode(nameIdx - previousName); + previousName = nameIdx; + } + } + + result += next; + } + + return result; + }; + +SourceMapGenerator$1.prototype._generateSourcesContent = + function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) { + return aSources.map(function (source) { + if (!this._sourcesContents) { + return null; + } + if (aSourceRoot != null) { + source = util$2.relative(aSourceRoot, source); + } + var key = util$2.toSetString(source); + return Object.prototype.hasOwnProperty.call(this._sourcesContents, key) + ? this._sourcesContents[key] + : null; + }, this); + }; + +/** + * Externalize the source map. + */ +SourceMapGenerator$1.prototype.toJSON = + function SourceMapGenerator_toJSON() { + var map = { + version: this._version, + sources: this._sources.toArray(), + names: this._names.toArray(), + mappings: this._serializeMappings() + }; + if (this._file != null) { + map.file = this._file; + } + if (this._sourceRoot != null) { + map.sourceRoot = this._sourceRoot; + } + if (this._sourcesContents) { + map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot); + } + + return map; + }; + +/** + * Render the source map being generated to a string. + */ +SourceMapGenerator$1.prototype.toString = + function SourceMapGenerator_toString() { + return JSON.stringify(this.toJSON()); + }; + +sourceMapGenerator.SourceMapGenerator = SourceMapGenerator$1; + +var sourceMapConsumer = {}; + +var binarySearch$2 = {}; + +/* -*- Mode: js; js-indent-level: 2; -*- */ + +(function (exports) { + /* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + + exports.GREATEST_LOWER_BOUND = 1; + exports.LEAST_UPPER_BOUND = 2; + + /** + * Recursive implementation of binary search. + * + * @param aLow Indices here and lower do not contain the needle. + * @param aHigh Indices here and higher do not contain the needle. + * @param aNeedle The element being searched for. + * @param aHaystack The non-empty array being searched. + * @param aCompare Function which takes two elements and returns -1, 0, or 1. + * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or + * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + */ + function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) { + // This function terminates when one of the following is true: + // + // 1. We find the exact element we are looking for. + // + // 2. We did not find the exact element, but we can return the index of + // the next-closest element. + // + // 3. We did not find the exact element, and there is no next-closest + // element than the one we are searching for, so we return -1. + var mid = Math.floor((aHigh - aLow) / 2) + aLow; + var cmp = aCompare(aNeedle, aHaystack[mid], true); + if (cmp === 0) { + // Found the element we are looking for. + return mid; + } + else if (cmp > 0) { + // Our needle is greater than aHaystack[mid]. + if (aHigh - mid > 1) { + // The element is in the upper half. + return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias); + } + + // The exact needle element was not found in this haystack. Determine if + // we are in termination case (3) or (2) and return the appropriate thing. + if (aBias == exports.LEAST_UPPER_BOUND) { + return aHigh < aHaystack.length ? aHigh : -1; + } else { + return mid; + } + } + else { + // Our needle is less than aHaystack[mid]. + if (mid - aLow > 1) { + // The element is in the lower half. + return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias); + } + + // we are in termination case (3) or (2) and return the appropriate thing. + if (aBias == exports.LEAST_UPPER_BOUND) { + return mid; + } else { + return aLow < 0 ? -1 : aLow; + } + } + } + + /** + * This is an implementation of binary search which will always try and return + * the index of the closest element if there is no exact hit. This is because + * mappings between original and generated line/col pairs are single points, + * and there is an implicit region between each of them, so a miss just means + * that you aren't on the very start of a region. + * + * @param aNeedle The element you are looking for. + * @param aHaystack The array that is being searched. + * @param aCompare A function which takes the needle and an element in the + * array and returns -1, 0, or 1 depending on whether the needle is less + * than, equal to, or greater than the element, respectively. + * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or + * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'. + */ + exports.search = function search(aNeedle, aHaystack, aCompare, aBias) { + if (aHaystack.length === 0) { + return -1; + } + + var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack, + aCompare, aBias || exports.GREATEST_LOWER_BOUND); + if (index < 0) { + return -1; + } + + // We have found either the exact element, or the next-closest element than + // the one we are searching for. However, there may be more than one such + // element. Make sure we always return the smallest of these. + while (index - 1 >= 0) { + if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) { + break; + } + --index; + } + + return index; + }; +} (binarySearch$2)); + +var quickSort$1 = {}; + +/* -*- Mode: js; js-indent-level: 2; -*- */ + +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +// It turns out that some (most?) JavaScript engines don't self-host +// `Array.prototype.sort`. This makes sense because C++ will likely remain +// faster than JS when doing raw CPU-intensive sorting. However, when using a +// custom comparator function, calling back and forth between the VM's C++ and +// JIT'd JS is rather slow *and* loses JIT type information, resulting in +// worse generated code for the comparator function than would be optimal. In +// fact, when sorting with a comparator, these costs outweigh the benefits of +// sorting in C++. By using our own JS-implemented Quick Sort (below), we get +// a ~3500ms mean speed-up in `bench/bench.html`. + +function SortTemplate(comparator) { + +/** + * Swap the elements indexed by `x` and `y` in the array `ary`. + * + * @param {Array} ary + * The array. + * @param {Number} x + * The index of the first item. + * @param {Number} y + * The index of the second item. + */ +function swap(ary, x, y) { + var temp = ary[x]; + ary[x] = ary[y]; + ary[y] = temp; +} + +/** + * Returns a random integer within the range `low .. high` inclusive. + * + * @param {Number} low + * The lower bound on the range. + * @param {Number} high + * The upper bound on the range. + */ +function randomIntInRange(low, high) { + return Math.round(low + (Math.random() * (high - low))); +} + +/** + * The Quick Sort algorithm. + * + * @param {Array} ary + * An array to sort. + * @param {function} comparator + * Function to use to compare two items. + * @param {Number} p + * Start index of the array + * @param {Number} r + * End index of the array + */ +function doQuickSort(ary, comparator, p, r) { + // If our lower bound is less than our upper bound, we (1) partition the + // array into two pieces and (2) recurse on each half. If it is not, this is + // the empty array and our base case. + + if (p < r) { + // (1) Partitioning. + // + // The partitioning chooses a pivot between `p` and `r` and moves all + // elements that are less than or equal to the pivot to the before it, and + // all the elements that are greater than it after it. The effect is that + // once partition is done, the pivot is in the exact place it will be when + // the array is put in sorted order, and it will not need to be moved + // again. This runs in O(n) time. + + // Always choose a random pivot so that an input array which is reverse + // sorted does not cause O(n^2) running time. + var pivotIndex = randomIntInRange(p, r); + var i = p - 1; + + swap(ary, pivotIndex, r); + var pivot = ary[r]; + + // Immediately after `j` is incremented in this loop, the following hold + // true: + // + // * Every element in `ary[p .. i]` is less than or equal to the pivot. + // + // * Every element in `ary[i+1 .. j-1]` is greater than the pivot. + for (var j = p; j < r; j++) { + if (comparator(ary[j], pivot, false) <= 0) { + i += 1; + swap(ary, i, j); + } + } + + swap(ary, i + 1, j); + var q = i + 1; + + // (2) Recurse on each half. + + doQuickSort(ary, comparator, p, q - 1); + doQuickSort(ary, comparator, q + 1, r); + } +} + + return doQuickSort; +} + +function cloneSort(comparator) { + let template = SortTemplate.toString(); + let templateFn = new Function(`return ${template}`)(); + return templateFn(comparator); +} + +/** + * Sort the given array in-place with the given comparator function. + * + * @param {Array} ary + * An array to sort. + * @param {function} comparator + * Function to use to compare two items. + */ + +let sortCache = new WeakMap(); +quickSort$1.quickSort = function (ary, comparator, start = 0) { + let doQuickSort = sortCache.get(comparator); + if (doQuickSort === void 0) { + doQuickSort = cloneSort(comparator); + sortCache.set(comparator, doQuickSort); + } + doQuickSort(ary, comparator, start, ary.length - 1); +}; + +/* -*- Mode: js; js-indent-level: 2; -*- */ + +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +var util$1 = util$5; +var binarySearch$1 = binarySearch$2; +var ArraySet = arraySet.ArraySet; +var base64VLQ = base64Vlq; +var quickSort = quickSort$1.quickSort; + +function SourceMapConsumer(aSourceMap, aSourceMapURL) { + var sourceMap = aSourceMap; + if (typeof aSourceMap === 'string') { + sourceMap = util$1.parseSourceMapInput(aSourceMap); + } + + return sourceMap.sections != null + ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL) + : new BasicSourceMapConsumer(sourceMap, aSourceMapURL); +} + +SourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) { + return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL); +}; + +/** + * The version of the source mapping spec that we are consuming. + */ +SourceMapConsumer.prototype._version = 3; + +// `__generatedMappings` and `__originalMappings` are arrays that hold the +// parsed mapping coordinates from the source map's "mappings" attribute. They +// are lazily instantiated, accessed via the `_generatedMappings` and +// `_originalMappings` getters respectively, and we only parse the mappings +// and create these arrays once queried for a source location. We jump through +// these hoops because there can be many thousands of mappings, and parsing +// them is expensive, so we only want to do it if we must. +// +// Each object in the arrays is of the form: +// +// { +// generatedLine: The line number in the generated code, +// generatedColumn: The column number in the generated code, +// source: The path to the original source file that generated this +// chunk of code, +// originalLine: The line number in the original source that +// corresponds to this chunk of generated code, +// originalColumn: The column number in the original source that +// corresponds to this chunk of generated code, +// name: The name of the original symbol which generated this chunk of +// code. +// } +// +// All properties except for `generatedLine` and `generatedColumn` can be +// `null`. +// +// `_generatedMappings` is ordered by the generated positions. +// +// `_originalMappings` is ordered by the original positions. + +SourceMapConsumer.prototype.__generatedMappings = null; +Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', { + configurable: true, + enumerable: true, + get: function () { + if (!this.__generatedMappings) { + this._parseMappings(this._mappings, this.sourceRoot); + } + + return this.__generatedMappings; + } +}); + +SourceMapConsumer.prototype.__originalMappings = null; +Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', { + configurable: true, + enumerable: true, + get: function () { + if (!this.__originalMappings) { + this._parseMappings(this._mappings, this.sourceRoot); + } + + return this.__originalMappings; + } +}); + +SourceMapConsumer.prototype._charIsMappingSeparator = + function SourceMapConsumer_charIsMappingSeparator(aStr, index) { + var c = aStr.charAt(index); + return c === ";" || c === ","; + }; + +/** + * Parse the mappings in a string in to a data structure which we can easily + * query (the ordered arrays in the `this.__generatedMappings` and + * `this.__originalMappings` properties). + */ +SourceMapConsumer.prototype._parseMappings = + function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { + throw new Error("Subclasses must implement _parseMappings"); + }; + +SourceMapConsumer.GENERATED_ORDER = 1; +SourceMapConsumer.ORIGINAL_ORDER = 2; + +SourceMapConsumer.GREATEST_LOWER_BOUND = 1; +SourceMapConsumer.LEAST_UPPER_BOUND = 2; + +/** + * Iterate over each mapping between an original source/line/column and a + * generated line/column in this source map. + * + * @param Function aCallback + * The function that is called with each mapping. + * @param Object aContext + * Optional. If specified, this object will be the value of `this` every + * time that `aCallback` is called. + * @param aOrder + * Either `SourceMapConsumer.GENERATED_ORDER` or + * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to + * iterate over the mappings sorted by the generated file's line/column + * order or the original's source/line/column order, respectively. Defaults to + * `SourceMapConsumer.GENERATED_ORDER`. + */ +SourceMapConsumer.prototype.eachMapping = + function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) { + var context = aContext || null; + var order = aOrder || SourceMapConsumer.GENERATED_ORDER; + + var mappings; + switch (order) { + case SourceMapConsumer.GENERATED_ORDER: + mappings = this._generatedMappings; + break; + case SourceMapConsumer.ORIGINAL_ORDER: + mappings = this._originalMappings; + break; + default: + throw new Error("Unknown order of iteration."); + } + + var sourceRoot = this.sourceRoot; + var boundCallback = aCallback.bind(context); + var names = this._names; + var sources = this._sources; + var sourceMapURL = this._sourceMapURL; + + for (var i = 0, n = mappings.length; i < n; i++) { + var mapping = mappings[i]; + var source = mapping.source === null ? null : sources.at(mapping.source); + source = util$1.computeSourceURL(sourceRoot, source, sourceMapURL); + boundCallback({ + source: source, + generatedLine: mapping.generatedLine, + generatedColumn: mapping.generatedColumn, + originalLine: mapping.originalLine, + originalColumn: mapping.originalColumn, + name: mapping.name === null ? null : names.at(mapping.name) + }); + } + }; + +/** + * Returns all generated line and column information for the original source, + * line, and column provided. If no column is provided, returns all mappings + * corresponding to a either the line we are searching for or the next + * closest line that has any mappings. Otherwise, returns all mappings + * corresponding to the given line and either the column we are searching for + * or the next closest column that has any offsets. + * + * The only argument is an object with the following properties: + * + * - source: The filename of the original source. + * - line: The line number in the original source. The line number is 1-based. + * - column: Optional. the column number in the original source. + * The column number is 0-based. + * + * and an array of objects is returned, each with the following properties: + * + * - line: The line number in the generated source, or null. The + * line number is 1-based. + * - column: The column number in the generated source, or null. + * The column number is 0-based. + */ +SourceMapConsumer.prototype.allGeneratedPositionsFor = + function SourceMapConsumer_allGeneratedPositionsFor(aArgs) { + var line = util$1.getArg(aArgs, 'line'); + + // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping + // returns the index of the closest mapping less than the needle. By + // setting needle.originalColumn to 0, we thus find the last mapping for + // the given line, provided such a mapping exists. + var needle = { + source: util$1.getArg(aArgs, 'source'), + originalLine: line, + originalColumn: util$1.getArg(aArgs, 'column', 0) + }; + + needle.source = this._findSourceIndex(needle.source); + if (needle.source < 0) { + return []; + } + + var mappings = []; + + var index = this._findMapping(needle, + this._originalMappings, + "originalLine", + "originalColumn", + util$1.compareByOriginalPositions, + binarySearch$1.LEAST_UPPER_BOUND); + if (index >= 0) { + var mapping = this._originalMappings[index]; + + if (aArgs.column === undefined) { + var originalLine = mapping.originalLine; + + // Iterate until either we run out of mappings, or we run into + // a mapping for a different line than the one we found. Since + // mappings are sorted, this is guaranteed to find all mappings for + // the line we found. + while (mapping && mapping.originalLine === originalLine) { + mappings.push({ + line: util$1.getArg(mapping, 'generatedLine', null), + column: util$1.getArg(mapping, 'generatedColumn', null), + lastColumn: util$1.getArg(mapping, 'lastGeneratedColumn', null) + }); + + mapping = this._originalMappings[++index]; + } + } else { + var originalColumn = mapping.originalColumn; + + // Iterate until either we run out of mappings, or we run into + // a mapping for a different line than the one we were searching for. + // Since mappings are sorted, this is guaranteed to find all mappings for + // the line we are searching for. + while (mapping && + mapping.originalLine === line && + mapping.originalColumn == originalColumn) { + mappings.push({ + line: util$1.getArg(mapping, 'generatedLine', null), + column: util$1.getArg(mapping, 'generatedColumn', null), + lastColumn: util$1.getArg(mapping, 'lastGeneratedColumn', null) + }); + + mapping = this._originalMappings[++index]; + } + } + } + + return mappings; + }; + +sourceMapConsumer.SourceMapConsumer = SourceMapConsumer; + +/** + * A BasicSourceMapConsumer instance represents a parsed source map which we can + * query for information about the original file positions by giving it a file + * position in the generated source. + * + * The first parameter is the raw source map (either as a JSON string, or + * already parsed to an object). According to the spec, source maps have the + * following attributes: + * + * - version: Which version of the source map spec this map is following. + * - sources: An array of URLs to the original source files. + * - names: An array of identifiers which can be referrenced by individual mappings. + * - sourceRoot: Optional. The URL root from which all sources are relative. + * - sourcesContent: Optional. An array of contents of the original source files. + * - mappings: A string of base64 VLQs which contain the actual mappings. + * - file: Optional. The generated file this source map is associated with. + * + * Here is an example source map, taken from the source map spec[0]: + * + * { + * version : 3, + * file: "out.js", + * sourceRoot : "", + * sources: ["foo.js", "bar.js"], + * names: ["src", "maps", "are", "fun"], + * mappings: "AA,AB;;ABCDE;" + * } + * + * The second parameter, if given, is a string whose value is the URL + * at which the source map was found. This URL is used to compute the + * sources array. + * + * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1# + */ +function BasicSourceMapConsumer(aSourceMap, aSourceMapURL) { + var sourceMap = aSourceMap; + if (typeof aSourceMap === 'string') { + sourceMap = util$1.parseSourceMapInput(aSourceMap); + } + + var version = util$1.getArg(sourceMap, 'version'); + var sources = util$1.getArg(sourceMap, 'sources'); + // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which + // requires the array) to play nice here. + var names = util$1.getArg(sourceMap, 'names', []); + var sourceRoot = util$1.getArg(sourceMap, 'sourceRoot', null); + var sourcesContent = util$1.getArg(sourceMap, 'sourcesContent', null); + var mappings = util$1.getArg(sourceMap, 'mappings'); + var file = util$1.getArg(sourceMap, 'file', null); + + // Once again, Sass deviates from the spec and supplies the version as a + // string rather than a number, so we use loose equality checking here. + if (version != this._version) { + throw new Error('Unsupported version: ' + version); + } + + if (sourceRoot) { + sourceRoot = util$1.normalize(sourceRoot); + } + + sources = sources + .map(String) + // Some source maps produce relative source paths like "./foo.js" instead of + // "foo.js". Normalize these first so that future comparisons will succeed. + // See bugzil.la/1090768. + .map(util$1.normalize) + // Always ensure that absolute sources are internally stored relative to + // the source root, if the source root is absolute. Not doing this would + // be particularly problematic when the source root is a prefix of the + // source (valid, but why??). See github issue #199 and bugzil.la/1188982. + .map(function (source) { + return sourceRoot && util$1.isAbsolute(sourceRoot) && util$1.isAbsolute(source) + ? util$1.relative(sourceRoot, source) + : source; + }); + + // Pass `true` below to allow duplicate names and sources. While source maps + // are intended to be compressed and deduplicated, the TypeScript compiler + // sometimes generates source maps with duplicates in them. See Github issue + // #72 and bugzil.la/889492. + this._names = ArraySet.fromArray(names.map(String), true); + this._sources = ArraySet.fromArray(sources, true); + + this._absoluteSources = this._sources.toArray().map(function (s) { + return util$1.computeSourceURL(sourceRoot, s, aSourceMapURL); + }); + + this.sourceRoot = sourceRoot; + this.sourcesContent = sourcesContent; + this._mappings = mappings; + this._sourceMapURL = aSourceMapURL; + this.file = file; +} + +BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); +BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer; + +/** + * Utility function to find the index of a source. Returns -1 if not + * found. + */ +BasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) { + var relativeSource = aSource; + if (this.sourceRoot != null) { + relativeSource = util$1.relative(this.sourceRoot, relativeSource); + } + + if (this._sources.has(relativeSource)) { + return this._sources.indexOf(relativeSource); + } + + // Maybe aSource is an absolute URL as returned by |sources|. In + // this case we can't simply undo the transform. + var i; + for (i = 0; i < this._absoluteSources.length; ++i) { + if (this._absoluteSources[i] == aSource) { + return i; + } + } + + return -1; +}; + +/** + * Create a BasicSourceMapConsumer from a SourceMapGenerator. + * + * @param SourceMapGenerator aSourceMap + * The source map that will be consumed. + * @param String aSourceMapURL + * The URL at which the source map can be found (optional) + * @returns BasicSourceMapConsumer + */ +BasicSourceMapConsumer.fromSourceMap = + function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) { + var smc = Object.create(BasicSourceMapConsumer.prototype); + + var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true); + var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true); + smc.sourceRoot = aSourceMap._sourceRoot; + smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(), + smc.sourceRoot); + smc.file = aSourceMap._file; + smc._sourceMapURL = aSourceMapURL; + smc._absoluteSources = smc._sources.toArray().map(function (s) { + return util$1.computeSourceURL(smc.sourceRoot, s, aSourceMapURL); + }); + + // Because we are modifying the entries (by converting string sources and + // names to indices into the sources and names ArraySets), we have to make + // a copy of the entry or else bad things happen. Shared mutable state + // strikes again! See github issue #191. + + var generatedMappings = aSourceMap._mappings.toArray().slice(); + var destGeneratedMappings = smc.__generatedMappings = []; + var destOriginalMappings = smc.__originalMappings = []; + + for (var i = 0, length = generatedMappings.length; i < length; i++) { + var srcMapping = generatedMappings[i]; + var destMapping = new Mapping; + destMapping.generatedLine = srcMapping.generatedLine; + destMapping.generatedColumn = srcMapping.generatedColumn; + + if (srcMapping.source) { + destMapping.source = sources.indexOf(srcMapping.source); + destMapping.originalLine = srcMapping.originalLine; + destMapping.originalColumn = srcMapping.originalColumn; + + if (srcMapping.name) { + destMapping.name = names.indexOf(srcMapping.name); + } + + destOriginalMappings.push(destMapping); + } + + destGeneratedMappings.push(destMapping); + } + + quickSort(smc.__originalMappings, util$1.compareByOriginalPositions); + + return smc; + }; + +/** + * The version of the source mapping spec that we are consuming. + */ +BasicSourceMapConsumer.prototype._version = 3; + +/** + * The list of original sources. + */ +Object.defineProperty(BasicSourceMapConsumer.prototype, 'sources', { + get: function () { + return this._absoluteSources.slice(); + } +}); + +/** + * Provide the JIT with a nice shape / hidden class. + */ +function Mapping() { + this.generatedLine = 0; + this.generatedColumn = 0; + this.source = null; + this.originalLine = null; + this.originalColumn = null; + this.name = null; +} + +/** + * Parse the mappings in a string in to a data structure which we can easily + * query (the ordered arrays in the `this.__generatedMappings` and + * `this.__originalMappings` properties). + */ + +const compareGenerated = util$1.compareByGeneratedPositionsDeflatedNoLine; +function sortGenerated(array, start) { + let l = array.length; + let n = array.length - start; + if (n <= 1) { + return; + } else if (n == 2) { + let a = array[start]; + let b = array[start + 1]; + if (compareGenerated(a, b) > 0) { + array[start] = b; + array[start + 1] = a; + } + } else if (n < 20) { + for (let i = start; i < l; i++) { + for (let j = i; j > start; j--) { + let a = array[j - 1]; + let b = array[j]; + if (compareGenerated(a, b) <= 0) { + break; + } + array[j - 1] = b; + array[j] = a; + } + } + } else { + quickSort(array, compareGenerated, start); + } +} +BasicSourceMapConsumer.prototype._parseMappings = + function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { + var generatedLine = 1; + var previousGeneratedColumn = 0; + var previousOriginalLine = 0; + var previousOriginalColumn = 0; + var previousSource = 0; + var previousName = 0; + var length = aStr.length; + var index = 0; + var temp = {}; + var originalMappings = []; + var generatedMappings = []; + var mapping, segment, end, value; + + let subarrayStart = 0; + while (index < length) { + if (aStr.charAt(index) === ';') { + generatedLine++; + index++; + previousGeneratedColumn = 0; + + sortGenerated(generatedMappings, subarrayStart); + subarrayStart = generatedMappings.length; + } + else if (aStr.charAt(index) === ',') { + index++; + } + else { + mapping = new Mapping(); + mapping.generatedLine = generatedLine; + + for (end = index; end < length; end++) { + if (this._charIsMappingSeparator(aStr, end)) { + break; + } + } + aStr.slice(index, end); + + segment = []; + while (index < end) { + base64VLQ.decode(aStr, index, temp); + value = temp.value; + index = temp.rest; + segment.push(value); + } + + if (segment.length === 2) { + throw new Error('Found a source, but no line and column'); + } + + if (segment.length === 3) { + throw new Error('Found a source and line, but no column'); + } + + // Generated column. + mapping.generatedColumn = previousGeneratedColumn + segment[0]; + previousGeneratedColumn = mapping.generatedColumn; + + if (segment.length > 1) { + // Original source. + mapping.source = previousSource + segment[1]; + previousSource += segment[1]; + + // Original line. + mapping.originalLine = previousOriginalLine + segment[2]; + previousOriginalLine = mapping.originalLine; + // Lines are stored 0-based + mapping.originalLine += 1; + + // Original column. + mapping.originalColumn = previousOriginalColumn + segment[3]; + previousOriginalColumn = mapping.originalColumn; + + if (segment.length > 4) { + // Original name. + mapping.name = previousName + segment[4]; + previousName += segment[4]; + } + } + + generatedMappings.push(mapping); + if (typeof mapping.originalLine === 'number') { + let currentSource = mapping.source; + while (originalMappings.length <= currentSource) { + originalMappings.push(null); + } + if (originalMappings[currentSource] === null) { + originalMappings[currentSource] = []; + } + originalMappings[currentSource].push(mapping); + } + } + } + + sortGenerated(generatedMappings, subarrayStart); + this.__generatedMappings = generatedMappings; + + for (var i = 0; i < originalMappings.length; i++) { + if (originalMappings[i] != null) { + quickSort(originalMappings[i], util$1.compareByOriginalPositionsNoSource); + } + } + this.__originalMappings = [].concat(...originalMappings); + }; + +/** + * Find the mapping that best matches the hypothetical "needle" mapping that + * we are searching for in the given "haystack" of mappings. + */ +BasicSourceMapConsumer.prototype._findMapping = + function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName, + aColumnName, aComparator, aBias) { + // To return the position we are searching for, we must first find the + // mapping for the given position and then return the opposite position it + // points to. Because the mappings are sorted, we can use binary search to + // find the best mapping. + + if (aNeedle[aLineName] <= 0) { + throw new TypeError('Line must be greater than or equal to 1, got ' + + aNeedle[aLineName]); + } + if (aNeedle[aColumnName] < 0) { + throw new TypeError('Column must be greater than or equal to 0, got ' + + aNeedle[aColumnName]); + } + + return binarySearch$1.search(aNeedle, aMappings, aComparator, aBias); + }; + +/** + * Compute the last column for each generated mapping. The last column is + * inclusive. + */ +BasicSourceMapConsumer.prototype.computeColumnSpans = + function SourceMapConsumer_computeColumnSpans() { + for (var index = 0; index < this._generatedMappings.length; ++index) { + var mapping = this._generatedMappings[index]; + + // Mappings do not contain a field for the last generated columnt. We + // can come up with an optimistic estimate, however, by assuming that + // mappings are contiguous (i.e. given two consecutive mappings, the + // first mapping ends where the second one starts). + if (index + 1 < this._generatedMappings.length) { + var nextMapping = this._generatedMappings[index + 1]; + + if (mapping.generatedLine === nextMapping.generatedLine) { + mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1; + continue; + } + } + + // The last mapping for each line spans the entire line. + mapping.lastGeneratedColumn = Infinity; + } + }; + +/** + * Returns the original source, line, and column information for the generated + * source's line and column positions provided. The only argument is an object + * with the following properties: + * + * - line: The line number in the generated source. The line number + * is 1-based. + * - column: The column number in the generated source. The column + * number is 0-based. + * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or + * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. + * + * and an object is returned with the following properties: + * + * - source: The original source file, or null. + * - line: The line number in the original source, or null. The + * line number is 1-based. + * - column: The column number in the original source, or null. The + * column number is 0-based. + * - name: The original identifier, or null. + */ +BasicSourceMapConsumer.prototype.originalPositionFor = + function SourceMapConsumer_originalPositionFor(aArgs) { + var needle = { + generatedLine: util$1.getArg(aArgs, 'line'), + generatedColumn: util$1.getArg(aArgs, 'column') + }; + + var index = this._findMapping( + needle, + this._generatedMappings, + "generatedLine", + "generatedColumn", + util$1.compareByGeneratedPositionsDeflated, + util$1.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) + ); + + if (index >= 0) { + var mapping = this._generatedMappings[index]; + + if (mapping.generatedLine === needle.generatedLine) { + var source = util$1.getArg(mapping, 'source', null); + if (source !== null) { + source = this._sources.at(source); + source = util$1.computeSourceURL(this.sourceRoot, source, this._sourceMapURL); + } + var name = util$1.getArg(mapping, 'name', null); + if (name !== null) { + name = this._names.at(name); + } + return { + source: source, + line: util$1.getArg(mapping, 'originalLine', null), + column: util$1.getArg(mapping, 'originalColumn', null), + name: name + }; + } + } + + return { + source: null, + line: null, + column: null, + name: null + }; + }; + +/** + * Return true if we have the source content for every source in the source + * map, false otherwise. + */ +BasicSourceMapConsumer.prototype.hasContentsOfAllSources = + function BasicSourceMapConsumer_hasContentsOfAllSources() { + if (!this.sourcesContent) { + return false; + } + return this.sourcesContent.length >= this._sources.size() && + !this.sourcesContent.some(function (sc) { return sc == null; }); + }; + +/** + * Returns the original source content. The only argument is the url of the + * original source file. Returns null if no original source content is + * available. + */ +BasicSourceMapConsumer.prototype.sourceContentFor = + function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { + if (!this.sourcesContent) { + return null; + } + + var index = this._findSourceIndex(aSource); + if (index >= 0) { + return this.sourcesContent[index]; + } + + var relativeSource = aSource; + if (this.sourceRoot != null) { + relativeSource = util$1.relative(this.sourceRoot, relativeSource); + } + + var url; + if (this.sourceRoot != null + && (url = util$1.urlParse(this.sourceRoot))) { + // XXX: file:// URIs and absolute paths lead to unexpected behavior for + // many users. We can help them out when they expect file:// URIs to + // behave like it would if they were running a local HTTP server. See + // https://bugzilla.mozilla.org/show_bug.cgi?id=885597. + var fileUriAbsPath = relativeSource.replace(/^file:\/\//, ""); + if (url.scheme == "file" + && this._sources.has(fileUriAbsPath)) { + return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)] + } + + if ((!url.path || url.path == "/") + && this._sources.has("/" + relativeSource)) { + return this.sourcesContent[this._sources.indexOf("/" + relativeSource)]; + } + } + + // This function is used recursively from + // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we + // don't want to throw if we can't find the source - we just want to + // return null, so we provide a flag to exit gracefully. + if (nullOnMissing) { + return null; + } + else { + throw new Error('"' + relativeSource + '" is not in the SourceMap.'); + } + }; + +/** + * Returns the generated line and column information for the original source, + * line, and column positions provided. The only argument is an object with + * the following properties: + * + * - source: The filename of the original source. + * - line: The line number in the original source. The line number + * is 1-based. + * - column: The column number in the original source. The column + * number is 0-based. + * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or + * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. + * + * and an object is returned with the following properties: + * + * - line: The line number in the generated source, or null. The + * line number is 1-based. + * - column: The column number in the generated source, or null. + * The column number is 0-based. + */ +BasicSourceMapConsumer.prototype.generatedPositionFor = + function SourceMapConsumer_generatedPositionFor(aArgs) { + var source = util$1.getArg(aArgs, 'source'); + source = this._findSourceIndex(source); + if (source < 0) { + return { + line: null, + column: null, + lastColumn: null + }; + } + + var needle = { + source: source, + originalLine: util$1.getArg(aArgs, 'line'), + originalColumn: util$1.getArg(aArgs, 'column') + }; + + var index = this._findMapping( + needle, + this._originalMappings, + "originalLine", + "originalColumn", + util$1.compareByOriginalPositions, + util$1.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) + ); + + if (index >= 0) { + var mapping = this._originalMappings[index]; + + if (mapping.source === needle.source) { + return { + line: util$1.getArg(mapping, 'generatedLine', null), + column: util$1.getArg(mapping, 'generatedColumn', null), + lastColumn: util$1.getArg(mapping, 'lastGeneratedColumn', null) + }; + } + } + + return { + line: null, + column: null, + lastColumn: null + }; + }; + +sourceMapConsumer.BasicSourceMapConsumer = BasicSourceMapConsumer; + +/** + * An IndexedSourceMapConsumer instance represents a parsed source map which + * we can query for information. It differs from BasicSourceMapConsumer in + * that it takes "indexed" source maps (i.e. ones with a "sections" field) as + * input. + * + * The first parameter is a raw source map (either as a JSON string, or already + * parsed to an object). According to the spec for indexed source maps, they + * have the following attributes: + * + * - version: Which version of the source map spec this map is following. + * - file: Optional. The generated file this source map is associated with. + * - sections: A list of section definitions. + * + * Each value under the "sections" field has two fields: + * - offset: The offset into the original specified at which this section + * begins to apply, defined as an object with a "line" and "column" + * field. + * - map: A source map definition. This source map could also be indexed, + * but doesn't have to be. + * + * Instead of the "map" field, it's also possible to have a "url" field + * specifying a URL to retrieve a source map from, but that's currently + * unsupported. + * + * Here's an example source map, taken from the source map spec[0], but + * modified to omit a section which uses the "url" field. + * + * { + * version : 3, + * file: "app.js", + * sections: [{ + * offset: {line:100, column:10}, + * map: { + * version : 3, + * file: "section.js", + * sources: ["foo.js", "bar.js"], + * names: ["src", "maps", "are", "fun"], + * mappings: "AAAA,E;;ABCDE;" + * } + * }], + * } + * + * The second parameter, if given, is a string whose value is the URL + * at which the source map was found. This URL is used to compute the + * sources array. + * + * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt + */ +function IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) { + var sourceMap = aSourceMap; + if (typeof aSourceMap === 'string') { + sourceMap = util$1.parseSourceMapInput(aSourceMap); + } + + var version = util$1.getArg(sourceMap, 'version'); + var sections = util$1.getArg(sourceMap, 'sections'); + + if (version != this._version) { + throw new Error('Unsupported version: ' + version); + } + + this._sources = new ArraySet(); + this._names = new ArraySet(); + + var lastOffset = { + line: -1, + column: 0 + }; + this._sections = sections.map(function (s) { + if (s.url) { + // The url field will require support for asynchronicity. + // See https://github.com/mozilla/source-map/issues/16 + throw new Error('Support for url field in sections not implemented.'); + } + var offset = util$1.getArg(s, 'offset'); + var offsetLine = util$1.getArg(offset, 'line'); + var offsetColumn = util$1.getArg(offset, 'column'); + + if (offsetLine < lastOffset.line || + (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) { + throw new Error('Section offsets must be ordered and non-overlapping.'); + } + lastOffset = offset; + + return { + generatedOffset: { + // The offset fields are 0-based, but we use 1-based indices when + // encoding/decoding from VLQ. + generatedLine: offsetLine + 1, + generatedColumn: offsetColumn + 1 + }, + consumer: new SourceMapConsumer(util$1.getArg(s, 'map'), aSourceMapURL) + } + }); +} + +IndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); +IndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer; + +/** + * The version of the source mapping spec that we are consuming. + */ +IndexedSourceMapConsumer.prototype._version = 3; + +/** + * The list of original sources. + */ +Object.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', { + get: function () { + var sources = []; + for (var i = 0; i < this._sections.length; i++) { + for (var j = 0; j < this._sections[i].consumer.sources.length; j++) { + sources.push(this._sections[i].consumer.sources[j]); + } + } + return sources; + } +}); + +/** + * Returns the original source, line, and column information for the generated + * source's line and column positions provided. The only argument is an object + * with the following properties: + * + * - line: The line number in the generated source. The line number + * is 1-based. + * - column: The column number in the generated source. The column + * number is 0-based. + * + * and an object is returned with the following properties: + * + * - source: The original source file, or null. + * - line: The line number in the original source, or null. The + * line number is 1-based. + * - column: The column number in the original source, or null. The + * column number is 0-based. + * - name: The original identifier, or null. + */ +IndexedSourceMapConsumer.prototype.originalPositionFor = + function IndexedSourceMapConsumer_originalPositionFor(aArgs) { + var needle = { + generatedLine: util$1.getArg(aArgs, 'line'), + generatedColumn: util$1.getArg(aArgs, 'column') + }; + + // Find the section containing the generated position we're trying to map + // to an original position. + var sectionIndex = binarySearch$1.search(needle, this._sections, + function(needle, section) { + var cmp = needle.generatedLine - section.generatedOffset.generatedLine; + if (cmp) { + return cmp; + } + + return (needle.generatedColumn - + section.generatedOffset.generatedColumn); + }); + var section = this._sections[sectionIndex]; + + if (!section) { + return { + source: null, + line: null, + column: null, + name: null + }; + } + + return section.consumer.originalPositionFor({ + line: needle.generatedLine - + (section.generatedOffset.generatedLine - 1), + column: needle.generatedColumn - + (section.generatedOffset.generatedLine === needle.generatedLine + ? section.generatedOffset.generatedColumn - 1 + : 0), + bias: aArgs.bias + }); + }; + +/** + * Return true if we have the source content for every source in the source + * map, false otherwise. + */ +IndexedSourceMapConsumer.prototype.hasContentsOfAllSources = + function IndexedSourceMapConsumer_hasContentsOfAllSources() { + return this._sections.every(function (s) { + return s.consumer.hasContentsOfAllSources(); + }); + }; + +/** + * Returns the original source content. The only argument is the url of the + * original source file. Returns null if no original source content is + * available. + */ +IndexedSourceMapConsumer.prototype.sourceContentFor = + function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { + for (var i = 0; i < this._sections.length; i++) { + var section = this._sections[i]; + + var content = section.consumer.sourceContentFor(aSource, true); + if (content) { + return content; + } + } + if (nullOnMissing) { + return null; + } + else { + throw new Error('"' + aSource + '" is not in the SourceMap.'); + } + }; + +/** + * Returns the generated line and column information for the original source, + * line, and column positions provided. The only argument is an object with + * the following properties: + * + * - source: The filename of the original source. + * - line: The line number in the original source. The line number + * is 1-based. + * - column: The column number in the original source. The column + * number is 0-based. + * + * and an object is returned with the following properties: + * + * - line: The line number in the generated source, or null. The + * line number is 1-based. + * - column: The column number in the generated source, or null. + * The column number is 0-based. + */ +IndexedSourceMapConsumer.prototype.generatedPositionFor = + function IndexedSourceMapConsumer_generatedPositionFor(aArgs) { + for (var i = 0; i < this._sections.length; i++) { + var section = this._sections[i]; + + // Only consider this section if the requested source is in the list of + // sources of the consumer. + if (section.consumer._findSourceIndex(util$1.getArg(aArgs, 'source')) === -1) { + continue; + } + var generatedPosition = section.consumer.generatedPositionFor(aArgs); + if (generatedPosition) { + var ret = { + line: generatedPosition.line + + (section.generatedOffset.generatedLine - 1), + column: generatedPosition.column + + (section.generatedOffset.generatedLine === generatedPosition.line + ? section.generatedOffset.generatedColumn - 1 + : 0) + }; + return ret; + } + } + + return { + line: null, + column: null + }; + }; + +/** + * Parse the mappings in a string in to a data structure which we can easily + * query (the ordered arrays in the `this.__generatedMappings` and + * `this.__originalMappings` properties). + */ +IndexedSourceMapConsumer.prototype._parseMappings = + function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) { + this.__generatedMappings = []; + this.__originalMappings = []; + for (var i = 0; i < this._sections.length; i++) { + var section = this._sections[i]; + var sectionMappings = section.consumer._generatedMappings; + for (var j = 0; j < sectionMappings.length; j++) { + var mapping = sectionMappings[j]; + + var source = section.consumer._sources.at(mapping.source); + source = util$1.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL); + this._sources.add(source); + source = this._sources.indexOf(source); + + var name = null; + if (mapping.name) { + name = section.consumer._names.at(mapping.name); + this._names.add(name); + name = this._names.indexOf(name); + } + + // The mappings coming from the consumer for the section have + // generated positions relative to the start of the section, so we + // need to offset them to be relative to the start of the concatenated + // generated file. + var adjustedMapping = { + source: source, + generatedLine: mapping.generatedLine + + (section.generatedOffset.generatedLine - 1), + generatedColumn: mapping.generatedColumn + + (section.generatedOffset.generatedLine === mapping.generatedLine + ? section.generatedOffset.generatedColumn - 1 + : 0), + originalLine: mapping.originalLine, + originalColumn: mapping.originalColumn, + name: name + }; + + this.__generatedMappings.push(adjustedMapping); + if (typeof adjustedMapping.originalLine === 'number') { + this.__originalMappings.push(adjustedMapping); + } + } + } + + quickSort(this.__generatedMappings, util$1.compareByGeneratedPositionsDeflated); + quickSort(this.__originalMappings, util$1.compareByOriginalPositions); + }; + +sourceMapConsumer.IndexedSourceMapConsumer = IndexedSourceMapConsumer; + +var sourceNode = {}; + +/* -*- Mode: js; js-indent-level: 2; -*- */ + +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +var SourceMapGenerator = sourceMapGenerator.SourceMapGenerator; +var util = util$5; + +// Matches a Windows-style `\r\n` newline or a `\n` newline used by all other +// operating systems these days (capturing the result). +var REGEX_NEWLINE = /(\r?\n)/; + +// Newline character code for charCodeAt() comparisons +var NEWLINE_CODE = 10; + +// Private symbol for identifying `SourceNode`s when multiple versions of +// the source-map library are loaded. This MUST NOT CHANGE across +// versions! +var isSourceNode = "$$$isSourceNode$$$"; + +/** + * SourceNodes provide a way to abstract over interpolating/concatenating + * snippets of generated JavaScript source code while maintaining the line and + * column information associated with the original source code. + * + * @param aLine The original line number. + * @param aColumn The original column number. + * @param aSource The original source's filename. + * @param aChunks Optional. An array of strings which are snippets of + * generated JS, or other SourceNodes. + * @param aName The original identifier. + */ +function SourceNode(aLine, aColumn, aSource, aChunks, aName) { + this.children = []; + this.sourceContents = {}; + this.line = aLine == null ? null : aLine; + this.column = aColumn == null ? null : aColumn; + this.source = aSource == null ? null : aSource; + this.name = aName == null ? null : aName; + this[isSourceNode] = true; + if (aChunks != null) this.add(aChunks); +} + +/** + * Creates a SourceNode from generated code and a SourceMapConsumer. + * + * @param aGeneratedCode The generated code + * @param aSourceMapConsumer The SourceMap for the generated code + * @param aRelativePath Optional. The path that relative sources in the + * SourceMapConsumer should be relative to. + */ +SourceNode.fromStringWithSourceMap = + function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) { + // The SourceNode we want to fill with the generated code + // and the SourceMap + var node = new SourceNode(); + + // All even indices of this array are one line of the generated code, + // while all odd indices are the newlines between two adjacent lines + // (since `REGEX_NEWLINE` captures its match). + // Processed fragments are accessed by calling `shiftNextLine`. + var remainingLines = aGeneratedCode.split(REGEX_NEWLINE); + var remainingLinesIndex = 0; + var shiftNextLine = function() { + var lineContents = getNextLine(); + // The last line of a file might not have a newline. + var newLine = getNextLine() || ""; + return lineContents + newLine; + + function getNextLine() { + return remainingLinesIndex < remainingLines.length ? + remainingLines[remainingLinesIndex++] : undefined; + } + }; + + // We need to remember the position of "remainingLines" + var lastGeneratedLine = 1, lastGeneratedColumn = 0; + + // The generate SourceNodes we need a code range. + // To extract it current and last mapping is used. + // Here we store the last mapping. + var lastMapping = null; + + aSourceMapConsumer.eachMapping(function (mapping) { + if (lastMapping !== null) { + // We add the code from "lastMapping" to "mapping": + // First check if there is a new line in between. + if (lastGeneratedLine < mapping.generatedLine) { + // Associate first line with "lastMapping" + addMappingWithCode(lastMapping, shiftNextLine()); + lastGeneratedLine++; + lastGeneratedColumn = 0; + // The remaining code is added without mapping + } else { + // There is no new line in between. + // Associate the code between "lastGeneratedColumn" and + // "mapping.generatedColumn" with "lastMapping" + var nextLine = remainingLines[remainingLinesIndex] || ''; + var code = nextLine.substr(0, mapping.generatedColumn - + lastGeneratedColumn); + remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn - + lastGeneratedColumn); + lastGeneratedColumn = mapping.generatedColumn; + addMappingWithCode(lastMapping, code); + // No more remaining code, continue + lastMapping = mapping; + return; + } + } + // We add the generated code until the first mapping + // to the SourceNode without any mapping. + // Each line is added as separate string. + while (lastGeneratedLine < mapping.generatedLine) { + node.add(shiftNextLine()); + lastGeneratedLine++; + } + if (lastGeneratedColumn < mapping.generatedColumn) { + var nextLine = remainingLines[remainingLinesIndex] || ''; + node.add(nextLine.substr(0, mapping.generatedColumn)); + remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn); + lastGeneratedColumn = mapping.generatedColumn; + } + lastMapping = mapping; + }, this); + // We have processed all mappings. + if (remainingLinesIndex < remainingLines.length) { + if (lastMapping) { + // Associate the remaining code in the current line with "lastMapping" + addMappingWithCode(lastMapping, shiftNextLine()); + } + // and add the remaining lines without any mapping + node.add(remainingLines.splice(remainingLinesIndex).join("")); + } + + // Copy sourcesContent into SourceNode + aSourceMapConsumer.sources.forEach(function (sourceFile) { + var content = aSourceMapConsumer.sourceContentFor(sourceFile); + if (content != null) { + if (aRelativePath != null) { + sourceFile = util.join(aRelativePath, sourceFile); + } + node.setSourceContent(sourceFile, content); + } + }); + + return node; + + function addMappingWithCode(mapping, code) { + if (mapping === null || mapping.source === undefined) { + node.add(code); + } else { + var source = aRelativePath + ? util.join(aRelativePath, mapping.source) + : mapping.source; + node.add(new SourceNode(mapping.originalLine, + mapping.originalColumn, + source, + code, + mapping.name)); + } + } + }; + +/** + * Add a chunk of generated JS to this source node. + * + * @param aChunk A string snippet of generated JS code, another instance of + * SourceNode, or an array where each member is one of those things. + */ +SourceNode.prototype.add = function SourceNode_add(aChunk) { + if (Array.isArray(aChunk)) { + aChunk.forEach(function (chunk) { + this.add(chunk); + }, this); + } + else if (aChunk[isSourceNode] || typeof aChunk === "string") { + if (aChunk) { + this.children.push(aChunk); + } + } + else { + throw new TypeError( + "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk + ); + } + return this; +}; + +/** + * Add a chunk of generated JS to the beginning of this source node. + * + * @param aChunk A string snippet of generated JS code, another instance of + * SourceNode, or an array where each member is one of those things. + */ +SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) { + if (Array.isArray(aChunk)) { + for (var i = aChunk.length-1; i >= 0; i--) { + this.prepend(aChunk[i]); + } + } + else if (aChunk[isSourceNode] || typeof aChunk === "string") { + this.children.unshift(aChunk); + } + else { + throw new TypeError( + "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk + ); + } + return this; +}; + +/** + * Walk over the tree of JS snippets in this node and its children. The + * walking function is called once for each snippet of JS and is passed that + * snippet and the its original associated source's line/column location. + * + * @param aFn The traversal function. + */ +SourceNode.prototype.walk = function SourceNode_walk(aFn) { + var chunk; + for (var i = 0, len = this.children.length; i < len; i++) { + chunk = this.children[i]; + if (chunk[isSourceNode]) { + chunk.walk(aFn); + } + else { + if (chunk !== '') { + aFn(chunk, { source: this.source, + line: this.line, + column: this.column, + name: this.name }); + } + } + } +}; + +/** + * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between + * each of `this.children`. + * + * @param aSep The separator. + */ +SourceNode.prototype.join = function SourceNode_join(aSep) { + var newChildren; + var i; + var len = this.children.length; + if (len > 0) { + newChildren = []; + for (i = 0; i < len-1; i++) { + newChildren.push(this.children[i]); + newChildren.push(aSep); + } + newChildren.push(this.children[i]); + this.children = newChildren; + } + return this; +}; + +/** + * Call String.prototype.replace on the very right-most source snippet. Useful + * for trimming whitespace from the end of a source node, etc. + * + * @param aPattern The pattern to replace. + * @param aReplacement The thing to replace the pattern with. + */ +SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) { + var lastChild = this.children[this.children.length - 1]; + if (lastChild[isSourceNode]) { + lastChild.replaceRight(aPattern, aReplacement); + } + else if (typeof lastChild === 'string') { + this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement); + } + else { + this.children.push(''.replace(aPattern, aReplacement)); + } + return this; +}; + +/** + * Set the source content for a source file. This will be added to the SourceMapGenerator + * in the sourcesContent field. + * + * @param aSourceFile The filename of the source file + * @param aSourceContent The content of the source file + */ +SourceNode.prototype.setSourceContent = + function SourceNode_setSourceContent(aSourceFile, aSourceContent) { + this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent; + }; + +/** + * Walk over the tree of SourceNodes. The walking function is called for each + * source file content and is passed the filename and source content. + * + * @param aFn The traversal function. + */ +SourceNode.prototype.walkSourceContents = + function SourceNode_walkSourceContents(aFn) { + for (var i = 0, len = this.children.length; i < len; i++) { + if (this.children[i][isSourceNode]) { + this.children[i].walkSourceContents(aFn); + } + } + + var sources = Object.keys(this.sourceContents); + for (var i = 0, len = sources.length; i < len; i++) { + aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]); + } + }; + +/** + * Return the string representation of this source node. Walks over the tree + * and concatenates all the various snippets together to one string. + */ +SourceNode.prototype.toString = function SourceNode_toString() { + var str = ""; + this.walk(function (chunk) { + str += chunk; + }); + return str; +}; + +/** + * Returns the string representation of this source node along with a source + * map. + */ +SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) { + var generated = { + code: "", + line: 1, + column: 0 + }; + var map = new SourceMapGenerator(aArgs); + var sourceMappingActive = false; + var lastOriginalSource = null; + var lastOriginalLine = null; + var lastOriginalColumn = null; + var lastOriginalName = null; + this.walk(function (chunk, original) { + generated.code += chunk; + if (original.source !== null + && original.line !== null + && original.column !== null) { + if(lastOriginalSource !== original.source + || lastOriginalLine !== original.line + || lastOriginalColumn !== original.column + || lastOriginalName !== original.name) { + map.addMapping({ + source: original.source, + original: { + line: original.line, + column: original.column + }, + generated: { + line: generated.line, + column: generated.column + }, + name: original.name + }); + } + lastOriginalSource = original.source; + lastOriginalLine = original.line; + lastOriginalColumn = original.column; + lastOriginalName = original.name; + sourceMappingActive = true; + } else if (sourceMappingActive) { + map.addMapping({ + generated: { + line: generated.line, + column: generated.column + } + }); + lastOriginalSource = null; + sourceMappingActive = false; + } + for (var idx = 0, length = chunk.length; idx < length; idx++) { + if (chunk.charCodeAt(idx) === NEWLINE_CODE) { + generated.line++; + generated.column = 0; + // Mappings end at eol + if (idx + 1 === length) { + lastOriginalSource = null; + sourceMappingActive = false; + } else if (sourceMappingActive) { + map.addMapping({ + source: original.source, + original: { + line: original.line, + column: original.column + }, + generated: { + line: generated.line, + column: generated.column + }, + name: original.name + }); + } + } else { + generated.column++; + } + } + }); + this.walkSourceContents(function (sourceFile, sourceContent) { + map.setSourceContent(sourceFile, sourceContent); + }); + + return { code: generated.code, map: map }; +}; + +sourceNode.SourceNode = SourceNode; + +/* + * Copyright 2009-2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE.txt or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +sourceMap.SourceMapGenerator = sourceMapGenerator.SourceMapGenerator; +sourceMap.SourceMapConsumer = sourceMapConsumer.SourceMapConsumer; +sourceMap.SourceNode = sourceNode.SourceNode; + +Object.defineProperty(compilerCore_cjs, '__esModule', { value: true }); + +var shared$2 = require$$1$1; +var decode_js = decode; +var parser = lib; +var estreeWalker = estreeWalkerExports; +var sourceMapJs = sourceMap; + +const FRAGMENT = Symbol(`Fragment` ); +const TELEPORT = Symbol(`Teleport` ); +const SUSPENSE = Symbol(`Suspense` ); +const KEEP_ALIVE = Symbol(`KeepAlive` ); +const BASE_TRANSITION = Symbol(`BaseTransition` ); +const OPEN_BLOCK = Symbol(`openBlock` ); +const CREATE_BLOCK = Symbol(`createBlock` ); +const CREATE_ELEMENT_BLOCK = Symbol(`createElementBlock` ); +const CREATE_VNODE = Symbol(`createVNode` ); +const CREATE_ELEMENT_VNODE = Symbol(`createElementVNode` ); +const CREATE_COMMENT = Symbol(`createCommentVNode` ); +const CREATE_TEXT = Symbol(`createTextVNode` ); +const CREATE_STATIC = Symbol(`createStaticVNode` ); +const RESOLVE_COMPONENT = Symbol(`resolveComponent` ); +const RESOLVE_DYNAMIC_COMPONENT = Symbol( + `resolveDynamicComponent` +); +const RESOLVE_DIRECTIVE = Symbol(`resolveDirective` ); +const RESOLVE_FILTER = Symbol(`resolveFilter` ); +const WITH_DIRECTIVES = Symbol(`withDirectives` ); +const RENDER_LIST = Symbol(`renderList` ); +const RENDER_SLOT = Symbol(`renderSlot` ); +const CREATE_SLOTS = Symbol(`createSlots` ); +const TO_DISPLAY_STRING = Symbol(`toDisplayString` ); +const MERGE_PROPS = Symbol(`mergeProps` ); +const NORMALIZE_CLASS = Symbol(`normalizeClass` ); +const NORMALIZE_STYLE = Symbol(`normalizeStyle` ); +const NORMALIZE_PROPS = Symbol(`normalizeProps` ); +const GUARD_REACTIVE_PROPS = Symbol(`guardReactiveProps` ); +const TO_HANDLERS = Symbol(`toHandlers` ); +const CAMELIZE = Symbol(`camelize` ); +const CAPITALIZE = Symbol(`capitalize` ); +const TO_HANDLER_KEY = Symbol(`toHandlerKey` ); +const SET_BLOCK_TRACKING = Symbol(`setBlockTracking` ); +const PUSH_SCOPE_ID = Symbol(`pushScopeId` ); +const POP_SCOPE_ID = Symbol(`popScopeId` ); +const WITH_CTX = Symbol(`withCtx` ); +const UNREF = Symbol(`unref` ); +const IS_REF = Symbol(`isRef` ); +const WITH_MEMO = Symbol(`withMemo` ); +const IS_MEMO_SAME = Symbol(`isMemoSame` ); +const helperNameMap = { + [FRAGMENT]: `Fragment`, + [TELEPORT]: `Teleport`, + [SUSPENSE]: `Suspense`, + [KEEP_ALIVE]: `KeepAlive`, + [BASE_TRANSITION]: `BaseTransition`, + [OPEN_BLOCK]: `openBlock`, + [CREATE_BLOCK]: `createBlock`, + [CREATE_ELEMENT_BLOCK]: `createElementBlock`, + [CREATE_VNODE]: `createVNode`, + [CREATE_ELEMENT_VNODE]: `createElementVNode`, + [CREATE_COMMENT]: `createCommentVNode`, + [CREATE_TEXT]: `createTextVNode`, + [CREATE_STATIC]: `createStaticVNode`, + [RESOLVE_COMPONENT]: `resolveComponent`, + [RESOLVE_DYNAMIC_COMPONENT]: `resolveDynamicComponent`, + [RESOLVE_DIRECTIVE]: `resolveDirective`, + [RESOLVE_FILTER]: `resolveFilter`, + [WITH_DIRECTIVES]: `withDirectives`, + [RENDER_LIST]: `renderList`, + [RENDER_SLOT]: `renderSlot`, + [CREATE_SLOTS]: `createSlots`, + [TO_DISPLAY_STRING]: `toDisplayString`, + [MERGE_PROPS]: `mergeProps`, + [NORMALIZE_CLASS]: `normalizeClass`, + [NORMALIZE_STYLE]: `normalizeStyle`, + [NORMALIZE_PROPS]: `normalizeProps`, + [GUARD_REACTIVE_PROPS]: `guardReactiveProps`, + [TO_HANDLERS]: `toHandlers`, + [CAMELIZE]: `camelize`, + [CAPITALIZE]: `capitalize`, + [TO_HANDLER_KEY]: `toHandlerKey`, + [SET_BLOCK_TRACKING]: `setBlockTracking`, + [PUSH_SCOPE_ID]: `pushScopeId`, + [POP_SCOPE_ID]: `popScopeId`, + [WITH_CTX]: `withCtx`, + [UNREF]: `unref`, + [IS_REF]: `isRef`, + [WITH_MEMO]: `withMemo`, + [IS_MEMO_SAME]: `isMemoSame` +}; +function registerRuntimeHelpers(helpers) { + Object.getOwnPropertySymbols(helpers).forEach((s) => { + helperNameMap[s] = helpers[s]; + }); +} + +const Namespaces = { + "HTML": 0, + "0": "HTML", + "SVG": 1, + "1": "SVG", + "MATH_ML": 2, + "2": "MATH_ML" +}; +const NodeTypes = { + "ROOT": 0, + "0": "ROOT", + "ELEMENT": 1, + "1": "ELEMENT", + "TEXT": 2, + "2": "TEXT", + "COMMENT": 3, + "3": "COMMENT", + "SIMPLE_EXPRESSION": 4, + "4": "SIMPLE_EXPRESSION", + "INTERPOLATION": 5, + "5": "INTERPOLATION", + "ATTRIBUTE": 6, + "6": "ATTRIBUTE", + "DIRECTIVE": 7, + "7": "DIRECTIVE", + "COMPOUND_EXPRESSION": 8, + "8": "COMPOUND_EXPRESSION", + "IF": 9, + "9": "IF", + "IF_BRANCH": 10, + "10": "IF_BRANCH", + "FOR": 11, + "11": "FOR", + "TEXT_CALL": 12, + "12": "TEXT_CALL", + "VNODE_CALL": 13, + "13": "VNODE_CALL", + "JS_CALL_EXPRESSION": 14, + "14": "JS_CALL_EXPRESSION", + "JS_OBJECT_EXPRESSION": 15, + "15": "JS_OBJECT_EXPRESSION", + "JS_PROPERTY": 16, + "16": "JS_PROPERTY", + "JS_ARRAY_EXPRESSION": 17, + "17": "JS_ARRAY_EXPRESSION", + "JS_FUNCTION_EXPRESSION": 18, + "18": "JS_FUNCTION_EXPRESSION", + "JS_CONDITIONAL_EXPRESSION": 19, + "19": "JS_CONDITIONAL_EXPRESSION", + "JS_CACHE_EXPRESSION": 20, + "20": "JS_CACHE_EXPRESSION", + "JS_BLOCK_STATEMENT": 21, + "21": "JS_BLOCK_STATEMENT", + "JS_TEMPLATE_LITERAL": 22, + "22": "JS_TEMPLATE_LITERAL", + "JS_IF_STATEMENT": 23, + "23": "JS_IF_STATEMENT", + "JS_ASSIGNMENT_EXPRESSION": 24, + "24": "JS_ASSIGNMENT_EXPRESSION", + "JS_SEQUENCE_EXPRESSION": 25, + "25": "JS_SEQUENCE_EXPRESSION", + "JS_RETURN_STATEMENT": 26, + "26": "JS_RETURN_STATEMENT" +}; +const ElementTypes = { + "ELEMENT": 0, + "0": "ELEMENT", + "COMPONENT": 1, + "1": "COMPONENT", + "SLOT": 2, + "2": "SLOT", + "TEMPLATE": 3, + "3": "TEMPLATE" +}; +const ConstantTypes = { + "NOT_CONSTANT": 0, + "0": "NOT_CONSTANT", + "CAN_SKIP_PATCH": 1, + "1": "CAN_SKIP_PATCH", + "CAN_HOIST": 2, + "2": "CAN_HOIST", + "CAN_STRINGIFY": 3, + "3": "CAN_STRINGIFY" +}; +const locStub = { + start: { line: 1, column: 1, offset: 0 }, + end: { line: 1, column: 1, offset: 0 }, + source: "" +}; +function createRoot(children, source = "") { + return { + type: 0, + source, + children, + helpers: /* @__PURE__ */ new Set(), + components: [], + directives: [], + hoists: [], + imports: [], + cached: 0, + temps: 0, + codegenNode: void 0, + loc: locStub + }; +} +function createVNodeCall(context, tag, props, children, patchFlag, dynamicProps, directives, isBlock = false, disableTracking = false, isComponent = false, loc = locStub) { + if (context) { + if (isBlock) { + context.helper(OPEN_BLOCK); + context.helper(getVNodeBlockHelper(context.inSSR, isComponent)); + } else { + context.helper(getVNodeHelper(context.inSSR, isComponent)); + } + if (directives) { + context.helper(WITH_DIRECTIVES); + } + } + return { + type: 13, + tag, + props, + children, + patchFlag, + dynamicProps, + directives, + isBlock, + disableTracking, + isComponent, + loc + }; +} +function createArrayExpression(elements, loc = locStub) { + return { + type: 17, + loc, + elements + }; +} +function createObjectExpression(properties, loc = locStub) { + return { + type: 15, + loc, + properties + }; +} +function createObjectProperty(key, value) { + return { + type: 16, + loc: locStub, + key: shared$2.isString(key) ? createSimpleExpression(key, true) : key, + value + }; +} +function createSimpleExpression(content, isStatic = false, loc = locStub, constType = 0) { + return { + type: 4, + loc, + content, + isStatic, + constType: isStatic ? 3 : constType + }; +} +function createInterpolation(content, loc) { + return { + type: 5, + loc, + content: shared$2.isString(content) ? createSimpleExpression(content, false, loc) : content + }; +} +function createCompoundExpression(children, loc = locStub) { + return { + type: 8, + loc, + children + }; +} +function createCallExpression(callee, args = [], loc = locStub) { + return { + type: 14, + loc, + callee, + arguments: args + }; +} +function createFunctionExpression(params, returns = void 0, newline = false, isSlot = false, loc = locStub) { + return { + type: 18, + params, + returns, + newline, + isSlot, + loc + }; +} +function createConditionalExpression(test, consequent, alternate, newline = true) { + return { + type: 19, + test, + consequent, + alternate, + newline, + loc: locStub + }; +} +function createCacheExpression(index, value, isVNode = false) { + return { + type: 20, + index, + value, + isVNode, + loc: locStub + }; +} +function createBlockStatement(body) { + return { + type: 21, + body, + loc: locStub + }; +} +function createTemplateLiteral(elements) { + return { + type: 22, + elements, + loc: locStub + }; +} +function createIfStatement(test, consequent, alternate) { + return { + type: 23, + test, + consequent, + alternate, + loc: locStub + }; +} +function createAssignmentExpression(left, right) { + return { + type: 24, + left, + right, + loc: locStub + }; +} +function createSequenceExpression(expressions) { + return { + type: 25, + expressions, + loc: locStub + }; +} +function createReturnStatement(returns) { + return { + type: 26, + returns, + loc: locStub + }; +} +function getVNodeHelper(ssr, isComponent) { + return ssr || isComponent ? CREATE_VNODE : CREATE_ELEMENT_VNODE; +} +function getVNodeBlockHelper(ssr, isComponent) { + return ssr || isComponent ? CREATE_BLOCK : CREATE_ELEMENT_BLOCK; +} +function convertToBlock(node, { helper, removeHelper, inSSR }) { + if (!node.isBlock) { + node.isBlock = true; + removeHelper(getVNodeHelper(inSSR, node.isComponent)); + helper(OPEN_BLOCK); + helper(getVNodeBlockHelper(inSSR, node.isComponent)); + } +} + +const defaultDelimitersOpen = new Uint8Array([123, 123]); +const defaultDelimitersClose = new Uint8Array([125, 125]); +function isTagStartChar(c) { + return c >= 97 && c <= 122 || c >= 65 && c <= 90; +} +function isWhitespace$3(c) { + return c === 32 || c === 10 || c === 9 || c === 12 || c === 13; +} +function isEndOfTagSection(c) { + return c === 47 || c === 62 || isWhitespace$3(c); +} +function toCharCodes(str) { + const ret = new Uint8Array(str.length); + for (let i = 0; i < str.length; i++) { + ret[i] = str.charCodeAt(i); + } + return ret; +} +const Sequences = { + Cdata: new Uint8Array([67, 68, 65, 84, 65, 91]), + // CDATA[ + CdataEnd: new Uint8Array([93, 93, 62]), + // ]]> + CommentEnd: new Uint8Array([45, 45, 62]), + // `-->` + ScriptEnd: new Uint8Array([60, 47, 115, 99, 114, 105, 112, 116]), + // `<\/script` + StyleEnd: new Uint8Array([60, 47, 115, 116, 121, 108, 101]), + // `</style` + TitleEnd: new Uint8Array([60, 47, 116, 105, 116, 108, 101]), + // `</title` + TextareaEnd: new Uint8Array([ + 60, + 47, + 116, + 101, + 120, + 116, + 97, + 114, + 101, + 97 + ]) + // `</textarea +}; +class Tokenizer { + constructor(stack, cbs) { + this.stack = stack; + this.cbs = cbs; + /** The current state the tokenizer is in. */ + this.state = 1; + /** The read buffer. */ + this.buffer = ""; + /** The beginning of the section that is currently being read. */ + this.sectionStart = 0; + /** The index within the buffer that we are currently looking at. */ + this.index = 0; + /** The start of the last entity. */ + this.entityStart = 0; + /** Some behavior, eg. when decoding entities, is done while we are in another state. This keeps track of the other state type. */ + this.baseState = 1; + /** For special parsing behavior inside of script and style tags. */ + this.inRCDATA = false; + /** For disabling RCDATA tags handling */ + this.inXML = false; + /** For disabling interpolation parsing in v-pre */ + this.inVPre = false; + /** Record newline positions for fast line / column calculation */ + this.newlines = []; + this.mode = 0; + this.delimiterOpen = defaultDelimitersOpen; + this.delimiterClose = defaultDelimitersClose; + this.delimiterIndex = -1; + this.currentSequence = void 0; + this.sequenceIndex = 0; + { + this.entityDecoder = new decode_js.EntityDecoder( + decode_js.htmlDecodeTree, + (cp, consumed) => this.emitCodePoint(cp, consumed) + ); + } + } + get inSFCRoot() { + return this.mode === 2 && this.stack.length === 0; + } + reset() { + this.state = 1; + this.mode = 0; + this.buffer = ""; + this.sectionStart = 0; + this.index = 0; + this.baseState = 1; + this.inRCDATA = false; + this.currentSequence = void 0; + this.newlines.length = 0; + this.delimiterOpen = defaultDelimitersOpen; + this.delimiterClose = defaultDelimitersClose; + } + /** + * Generate Position object with line / column information using recorded + * newline positions. We know the index is always going to be an already + * processed index, so all the newlines up to this index should have been + * recorded. + */ + getPos(index) { + let line = 1; + let column = index + 1; + for (let i = this.newlines.length - 1; i >= 0; i--) { + const newlineIndex = this.newlines[i]; + if (index > newlineIndex) { + line = i + 2; + column = index - newlineIndex; + break; + } + } + return { + column, + line, + offset: index + }; + } + peek() { + return this.buffer.charCodeAt(this.index + 1); + } + stateText(c) { + if (c === 60) { + if (this.index > this.sectionStart) { + this.cbs.ontext(this.sectionStart, this.index); + } + this.state = 5; + this.sectionStart = this.index; + } else if (c === 38) { + this.startEntity(); + } else if (!this.inVPre && c === this.delimiterOpen[0]) { + this.state = 2; + this.delimiterIndex = 0; + this.stateInterpolationOpen(c); + } + } + stateInterpolationOpen(c) { + if (c === this.delimiterOpen[this.delimiterIndex]) { + if (this.delimiterIndex === this.delimiterOpen.length - 1) { + const start = this.index + 1 - this.delimiterOpen.length; + if (start > this.sectionStart) { + this.cbs.ontext(this.sectionStart, start); + } + this.state = 3; + this.sectionStart = start; + } else { + this.delimiterIndex++; + } + } else if (this.inRCDATA) { + this.state = 32; + this.stateInRCDATA(c); + } else { + this.state = 1; + this.stateText(c); + } + } + stateInterpolation(c) { + if (c === this.delimiterClose[0]) { + this.state = 4; + this.delimiterIndex = 0; + this.stateInterpolationClose(c); + } + } + stateInterpolationClose(c) { + if (c === this.delimiterClose[this.delimiterIndex]) { + if (this.delimiterIndex === this.delimiterClose.length - 1) { + this.cbs.oninterpolation(this.sectionStart, this.index + 1); + if (this.inRCDATA) { + this.state = 32; + } else { + this.state = 1; + } + this.sectionStart = this.index + 1; + } else { + this.delimiterIndex++; + } + } else { + this.state = 3; + this.stateInterpolation(c); + } + } + stateSpecialStartSequence(c) { + const isEnd = this.sequenceIndex === this.currentSequence.length; + const isMatch = isEnd ? ( + // If we are at the end of the sequence, make sure the tag name has ended + isEndOfTagSection(c) + ) : ( + // Otherwise, do a case-insensitive comparison + (c | 32) === this.currentSequence[this.sequenceIndex] + ); + if (!isMatch) { + this.inRCDATA = false; + } else if (!isEnd) { + this.sequenceIndex++; + return; + } + this.sequenceIndex = 0; + this.state = 6; + this.stateInTagName(c); + } + /** Look for an end tag. For <title> and <textarea>, also decode entities. */ + stateInRCDATA(c) { + if (this.sequenceIndex === this.currentSequence.length) { + if (c === 62 || isWhitespace$3(c)) { + const endOfText = this.index - this.currentSequence.length; + if (this.sectionStart < endOfText) { + const actualIndex = this.index; + this.index = endOfText; + this.cbs.ontext(this.sectionStart, endOfText); + this.index = actualIndex; + } + this.sectionStart = endOfText + 2; + this.stateInClosingTagName(c); + this.inRCDATA = false; + return; + } + this.sequenceIndex = 0; + } + if ((c | 32) === this.currentSequence[this.sequenceIndex]) { + this.sequenceIndex += 1; + } else if (this.sequenceIndex === 0) { + if (this.currentSequence === Sequences.TitleEnd || this.currentSequence === Sequences.TextareaEnd && !this.inSFCRoot) { + if (c === 38) { + this.startEntity(); + } else if (c === this.delimiterOpen[0]) { + this.state = 2; + this.delimiterIndex = 0; + this.stateInterpolationOpen(c); + } + } else if (this.fastForwardTo(60)) { + this.sequenceIndex = 1; + } + } else { + this.sequenceIndex = Number(c === 60); + } + } + stateCDATASequence(c) { + if (c === Sequences.Cdata[this.sequenceIndex]) { + if (++this.sequenceIndex === Sequences.Cdata.length) { + this.state = 28; + this.currentSequence = Sequences.CdataEnd; + this.sequenceIndex = 0; + this.sectionStart = this.index + 1; + } + } else { + this.sequenceIndex = 0; + this.state = 23; + this.stateInDeclaration(c); + } + } + /** + * When we wait for one specific character, we can speed things up + * by skipping through the buffer until we find it. + * + * @returns Whether the character was found. + */ + fastForwardTo(c) { + while (++this.index < this.buffer.length) { + const cc = this.buffer.charCodeAt(this.index); + if (cc === 10) { + this.newlines.push(this.index); + } + if (cc === c) { + return true; + } + } + this.index = this.buffer.length - 1; + return false; + } + /** + * Comments and CDATA end with `-->` and `]]>`. + * + * Their common qualities are: + * - Their end sequences have a distinct character they start with. + * - That character is then repeated, so we have to check multiple repeats. + * - All characters but the start character of the sequence can be skipped. + */ + stateInCommentLike(c) { + if (c === this.currentSequence[this.sequenceIndex]) { + if (++this.sequenceIndex === this.currentSequence.length) { + if (this.currentSequence === Sequences.CdataEnd) { + this.cbs.oncdata(this.sectionStart, this.index - 2); + } else { + this.cbs.oncomment(this.sectionStart, this.index - 2); + } + this.sequenceIndex = 0; + this.sectionStart = this.index + 1; + this.state = 1; + } + } else if (this.sequenceIndex === 0) { + if (this.fastForwardTo(this.currentSequence[0])) { + this.sequenceIndex = 1; + } + } else if (c !== this.currentSequence[this.sequenceIndex - 1]) { + this.sequenceIndex = 0; + } + } + startSpecial(sequence, offset) { + this.enterRCDATA(sequence, offset); + this.state = 31; + } + enterRCDATA(sequence, offset) { + this.inRCDATA = true; + this.currentSequence = sequence; + this.sequenceIndex = offset; + } + stateBeforeTagName(c) { + if (c === 33) { + this.state = 22; + this.sectionStart = this.index + 1; + } else if (c === 63) { + this.state = 24; + this.sectionStart = this.index + 1; + } else if (isTagStartChar(c)) { + this.sectionStart = this.index; + if (this.mode === 0) { + this.state = 6; + } else if (this.inSFCRoot) { + this.state = 34; + } else if (!this.inXML) { + const lower = c | 32; + if (lower === 116) { + this.state = 30; + } else { + this.state = lower === 115 ? 29 : 6; + } + } else { + this.state = 6; + } + } else if (c === 47) { + this.state = 8; + } else { + this.state = 1; + this.stateText(c); + } + } + stateInTagName(c) { + if (isEndOfTagSection(c)) { + this.handleTagName(c); + } + } + stateInSFCRootTagName(c) { + if (isEndOfTagSection(c)) { + const tag = this.buffer.slice(this.sectionStart, this.index); + if (tag !== "template") { + this.enterRCDATA(toCharCodes(`</` + tag), 0); + } + this.handleTagName(c); + } + } + handleTagName(c) { + this.cbs.onopentagname(this.sectionStart, this.index); + this.sectionStart = -1; + this.state = 11; + this.stateBeforeAttrName(c); + } + stateBeforeClosingTagName(c) { + if (isWhitespace$3(c)) ; else if (c === 62) { + { + this.cbs.onerr(14, this.index); + } + this.state = 1; + this.sectionStart = this.index + 1; + } else { + this.state = isTagStartChar(c) ? 9 : 27; + this.sectionStart = this.index; + } + } + stateInClosingTagName(c) { + if (c === 62 || isWhitespace$3(c)) { + this.cbs.onclosetag(this.sectionStart, this.index); + this.sectionStart = -1; + this.state = 10; + this.stateAfterClosingTagName(c); + } + } + stateAfterClosingTagName(c) { + if (c === 62) { + this.state = 1; + this.sectionStart = this.index + 1; + } + } + stateBeforeAttrName(c) { + if (c === 62) { + this.cbs.onopentagend(this.index); + if (this.inRCDATA) { + this.state = 32; + } else { + this.state = 1; + } + this.sectionStart = this.index + 1; + } else if (c === 47) { + this.state = 7; + if (this.peek() !== 62) { + this.cbs.onerr(22, this.index); + } + } else if (c === 60 && this.peek() === 47) { + this.cbs.onopentagend(this.index); + this.state = 5; + this.sectionStart = this.index; + } else if (!isWhitespace$3(c)) { + if (c === 61) { + this.cbs.onerr( + 19, + this.index + ); + } + this.handleAttrStart(c); + } + } + handleAttrStart(c) { + if (c === 118 && this.peek() === 45) { + this.state = 13; + this.sectionStart = this.index; + } else if (c === 46 || c === 58 || c === 64 || c === 35) { + this.cbs.ondirname(this.index, this.index + 1); + this.state = 14; + this.sectionStart = this.index + 1; + } else { + this.state = 12; + this.sectionStart = this.index; + } + } + stateInSelfClosingTag(c) { + if (c === 62) { + this.cbs.onselfclosingtag(this.index); + this.state = 1; + this.sectionStart = this.index + 1; + this.inRCDATA = false; + } else if (!isWhitespace$3(c)) { + this.state = 11; + this.stateBeforeAttrName(c); + } + } + stateInAttrName(c) { + if (c === 61 || isEndOfTagSection(c)) { + this.cbs.onattribname(this.sectionStart, this.index); + this.handleAttrNameEnd(c); + } else if (c === 34 || c === 39 || c === 60) { + this.cbs.onerr( + 17, + this.index + ); + } + } + stateInDirName(c) { + if (c === 61 || isEndOfTagSection(c)) { + this.cbs.ondirname(this.sectionStart, this.index); + this.handleAttrNameEnd(c); + } else if (c === 58) { + this.cbs.ondirname(this.sectionStart, this.index); + this.state = 14; + this.sectionStart = this.index + 1; + } else if (c === 46) { + this.cbs.ondirname(this.sectionStart, this.index); + this.state = 16; + this.sectionStart = this.index + 1; + } + } + stateInDirArg(c) { + if (c === 61 || isEndOfTagSection(c)) { + this.cbs.ondirarg(this.sectionStart, this.index); + this.handleAttrNameEnd(c); + } else if (c === 91) { + this.state = 15; + } else if (c === 46) { + this.cbs.ondirarg(this.sectionStart, this.index); + this.state = 16; + this.sectionStart = this.index + 1; + } + } + stateInDynamicDirArg(c) { + if (c === 93) { + this.state = 14; + } else if (c === 61 || isEndOfTagSection(c)) { + this.cbs.ondirarg(this.sectionStart, this.index + 1); + this.handleAttrNameEnd(c); + { + this.cbs.onerr( + 27, + this.index + ); + } + } + } + stateInDirModifier(c) { + if (c === 61 || isEndOfTagSection(c)) { + this.cbs.ondirmodifier(this.sectionStart, this.index); + this.handleAttrNameEnd(c); + } else if (c === 46) { + this.cbs.ondirmodifier(this.sectionStart, this.index); + this.sectionStart = this.index + 1; + } + } + handleAttrNameEnd(c) { + this.sectionStart = this.index; + this.state = 17; + this.cbs.onattribnameend(this.index); + this.stateAfterAttrName(c); + } + stateAfterAttrName(c) { + if (c === 61) { + this.state = 18; + } else if (c === 47 || c === 62) { + this.cbs.onattribend(0, this.sectionStart); + this.sectionStart = -1; + this.state = 11; + this.stateBeforeAttrName(c); + } else if (!isWhitespace$3(c)) { + this.cbs.onattribend(0, this.sectionStart); + this.handleAttrStart(c); + } + } + stateBeforeAttrValue(c) { + if (c === 34) { + this.state = 19; + this.sectionStart = this.index + 1; + } else if (c === 39) { + this.state = 20; + this.sectionStart = this.index + 1; + } else if (!isWhitespace$3(c)) { + this.sectionStart = this.index; + this.state = 21; + this.stateInAttrValueNoQuotes(c); + } + } + handleInAttrValue(c, quote) { + if (c === quote || false) { + this.cbs.onattribdata(this.sectionStart, this.index); + this.sectionStart = -1; + this.cbs.onattribend( + quote === 34 ? 3 : 2, + this.index + 1 + ); + this.state = 11; + } else if (c === 38) { + this.startEntity(); + } + } + stateInAttrValueDoubleQuotes(c) { + this.handleInAttrValue(c, 34); + } + stateInAttrValueSingleQuotes(c) { + this.handleInAttrValue(c, 39); + } + stateInAttrValueNoQuotes(c) { + if (isWhitespace$3(c) || c === 62) { + this.cbs.onattribdata(this.sectionStart, this.index); + this.sectionStart = -1; + this.cbs.onattribend(1, this.index); + this.state = 11; + this.stateBeforeAttrName(c); + } else if (c === 34 || c === 39 || c === 60 || c === 61 || c === 96) { + this.cbs.onerr( + 18, + this.index + ); + } else if (c === 38) { + this.startEntity(); + } + } + stateBeforeDeclaration(c) { + if (c === 91) { + this.state = 26; + this.sequenceIndex = 0; + } else { + this.state = c === 45 ? 25 : 23; + } + } + stateInDeclaration(c) { + if (c === 62 || this.fastForwardTo(62)) { + this.state = 1; + this.sectionStart = this.index + 1; + } + } + stateInProcessingInstruction(c) { + if (c === 62 || this.fastForwardTo(62)) { + this.cbs.onprocessinginstruction(this.sectionStart, this.index); + this.state = 1; + this.sectionStart = this.index + 1; + } + } + stateBeforeComment(c) { + if (c === 45) { + this.state = 28; + this.currentSequence = Sequences.CommentEnd; + this.sequenceIndex = 2; + this.sectionStart = this.index + 1; + } else { + this.state = 23; + } + } + stateInSpecialComment(c) { + if (c === 62 || this.fastForwardTo(62)) { + this.cbs.oncomment(this.sectionStart, this.index); + this.state = 1; + this.sectionStart = this.index + 1; + } + } + stateBeforeSpecialS(c) { + const lower = c | 32; + if (lower === Sequences.ScriptEnd[3]) { + this.startSpecial(Sequences.ScriptEnd, 4); + } else if (lower === Sequences.StyleEnd[3]) { + this.startSpecial(Sequences.StyleEnd, 4); + } else { + this.state = 6; + this.stateInTagName(c); + } + } + stateBeforeSpecialT(c) { + const lower = c | 32; + if (lower === Sequences.TitleEnd[3]) { + this.startSpecial(Sequences.TitleEnd, 4); + } else if (lower === Sequences.TextareaEnd[3]) { + this.startSpecial(Sequences.TextareaEnd, 4); + } else { + this.state = 6; + this.stateInTagName(c); + } + } + startEntity() { + { + this.baseState = this.state; + this.state = 33; + this.entityStart = this.index; + this.entityDecoder.startEntity( + this.baseState === 1 || this.baseState === 32 ? decode_js.DecodingMode.Legacy : decode_js.DecodingMode.Attribute + ); + } + } + stateInEntity() { + { + const length = this.entityDecoder.write(this.buffer, this.index); + if (length >= 0) { + this.state = this.baseState; + if (length === 0) { + this.index = this.entityStart; + } + } else { + this.index = this.buffer.length - 1; + } + } + } + /** + * Iterates through the buffer, calling the function corresponding to the current state. + * + * States that are more likely to be hit are higher up, as a performance improvement. + */ + parse(input) { + this.buffer = input; + while (this.index < this.buffer.length) { + const c = this.buffer.charCodeAt(this.index); + if (c === 10) { + this.newlines.push(this.index); + } + switch (this.state) { + case 1: { + this.stateText(c); + break; + } + case 2: { + this.stateInterpolationOpen(c); + break; + } + case 3: { + this.stateInterpolation(c); + break; + } + case 4: { + this.stateInterpolationClose(c); + break; + } + case 31: { + this.stateSpecialStartSequence(c); + break; + } + case 32: { + this.stateInRCDATA(c); + break; + } + case 26: { + this.stateCDATASequence(c); + break; + } + case 19: { + this.stateInAttrValueDoubleQuotes(c); + break; + } + case 12: { + this.stateInAttrName(c); + break; + } + case 13: { + this.stateInDirName(c); + break; + } + case 14: { + this.stateInDirArg(c); + break; + } + case 15: { + this.stateInDynamicDirArg(c); + break; + } + case 16: { + this.stateInDirModifier(c); + break; + } + case 28: { + this.stateInCommentLike(c); + break; + } + case 27: { + this.stateInSpecialComment(c); + break; + } + case 11: { + this.stateBeforeAttrName(c); + break; + } + case 6: { + this.stateInTagName(c); + break; + } + case 34: { + this.stateInSFCRootTagName(c); + break; + } + case 9: { + this.stateInClosingTagName(c); + break; + } + case 5: { + this.stateBeforeTagName(c); + break; + } + case 17: { + this.stateAfterAttrName(c); + break; + } + case 20: { + this.stateInAttrValueSingleQuotes(c); + break; + } + case 18: { + this.stateBeforeAttrValue(c); + break; + } + case 8: { + this.stateBeforeClosingTagName(c); + break; + } + case 10: { + this.stateAfterClosingTagName(c); + break; + } + case 29: { + this.stateBeforeSpecialS(c); + break; + } + case 30: { + this.stateBeforeSpecialT(c); + break; + } + case 21: { + this.stateInAttrValueNoQuotes(c); + break; + } + case 7: { + this.stateInSelfClosingTag(c); + break; + } + case 23: { + this.stateInDeclaration(c); + break; + } + case 22: { + this.stateBeforeDeclaration(c); + break; + } + case 25: { + this.stateBeforeComment(c); + break; + } + case 24: { + this.stateInProcessingInstruction(c); + break; + } + case 33: { + this.stateInEntity(); + break; + } + } + this.index++; + } + this.cleanup(); + this.finish(); + } + /** + * Remove data that has already been consumed from the buffer. + */ + cleanup() { + if (this.sectionStart !== this.index) { + if (this.state === 1 || this.state === 32 && this.sequenceIndex === 0) { + this.cbs.ontext(this.sectionStart, this.index); + this.sectionStart = this.index; + } else if (this.state === 19 || this.state === 20 || this.state === 21) { + this.cbs.onattribdata(this.sectionStart, this.index); + this.sectionStart = this.index; + } + } + } + finish() { + if (this.state === 33) { + this.entityDecoder.end(); + this.state = this.baseState; + } + this.handleTrailingData(); + this.cbs.onend(); + } + /** Handle any trailing data. */ + handleTrailingData() { + const endIndex = this.buffer.length; + if (this.sectionStart >= endIndex) { + return; + } + if (this.state === 28) { + if (this.currentSequence === Sequences.CdataEnd) { + this.cbs.oncdata(this.sectionStart, endIndex); + } else { + this.cbs.oncomment(this.sectionStart, endIndex); + } + } else if (this.state === 6 || this.state === 11 || this.state === 18 || this.state === 17 || this.state === 12 || this.state === 13 || this.state === 14 || this.state === 15 || this.state === 16 || this.state === 20 || this.state === 19 || this.state === 21 || this.state === 9) ; else { + this.cbs.ontext(this.sectionStart, endIndex); + } + } + emitCodePoint(cp, consumed) { + { + if (this.baseState !== 1 && this.baseState !== 32) { + if (this.sectionStart < this.entityStart) { + this.cbs.onattribdata(this.sectionStart, this.entityStart); + } + this.sectionStart = this.entityStart + consumed; + this.index = this.sectionStart - 1; + this.cbs.onattribentity( + decode_js.fromCodePoint(cp), + this.entityStart, + this.sectionStart + ); + } else { + if (this.sectionStart < this.entityStart) { + this.cbs.ontext(this.sectionStart, this.entityStart); + } + this.sectionStart = this.entityStart + consumed; + this.index = this.sectionStart - 1; + this.cbs.ontextentity( + decode_js.fromCodePoint(cp), + this.entityStart, + this.sectionStart + ); + } + } + } +} + +const CompilerDeprecationTypes = { + "COMPILER_IS_ON_ELEMENT": "COMPILER_IS_ON_ELEMENT", + "COMPILER_V_BIND_SYNC": "COMPILER_V_BIND_SYNC", + "COMPILER_V_BIND_OBJECT_ORDER": "COMPILER_V_BIND_OBJECT_ORDER", + "COMPILER_V_ON_NATIVE": "COMPILER_V_ON_NATIVE", + "COMPILER_V_IF_V_FOR_PRECEDENCE": "COMPILER_V_IF_V_FOR_PRECEDENCE", + "COMPILER_NATIVE_TEMPLATE": "COMPILER_NATIVE_TEMPLATE", + "COMPILER_INLINE_TEMPLATE": "COMPILER_INLINE_TEMPLATE", + "COMPILER_FILTERS": "COMPILER_FILTERS" +}; +const deprecationData = { + ["COMPILER_IS_ON_ELEMENT"]: { + message: `Platform-native elements with "is" prop will no longer be treated as components in Vue 3 unless the "is" value is explicitly prefixed with "vue:".`, + link: `https://v3-migration.vuejs.org/breaking-changes/custom-elements-interop.html` + }, + ["COMPILER_V_BIND_SYNC"]: { + message: (key) => `.sync modifier for v-bind has been removed. Use v-model with argument instead. \`v-bind:${key}.sync\` should be changed to \`v-model:${key}\`.`, + link: `https://v3-migration.vuejs.org/breaking-changes/v-model.html` + }, + ["COMPILER_V_BIND_OBJECT_ORDER"]: { + message: `v-bind="obj" usage is now order sensitive and behaves like JavaScript object spread: it will now overwrite an existing non-mergeable attribute that appears before v-bind in the case of conflict. To retain 2.x behavior, move v-bind to make it the first attribute. You can also suppress this warning if the usage is intended.`, + link: `https://v3-migration.vuejs.org/breaking-changes/v-bind.html` + }, + ["COMPILER_V_ON_NATIVE"]: { + message: `.native modifier for v-on has been removed as is no longer necessary.`, + link: `https://v3-migration.vuejs.org/breaking-changes/v-on-native-modifier-removed.html` + }, + ["COMPILER_V_IF_V_FOR_PRECEDENCE"]: { + message: `v-if / v-for precedence when used on the same element has changed in Vue 3: v-if now takes higher precedence and will no longer have access to v-for scope variables. It is best to avoid the ambiguity with <template> tags or use a computed property that filters v-for data source.`, + link: `https://v3-migration.vuejs.org/breaking-changes/v-if-v-for.html` + }, + ["COMPILER_NATIVE_TEMPLATE"]: { + message: `<template> with no special directives will render as a native template element instead of its inner content in Vue 3.` + }, + ["COMPILER_INLINE_TEMPLATE"]: { + message: `"inline-template" has been removed in Vue 3.`, + link: `https://v3-migration.vuejs.org/breaking-changes/inline-template-attribute.html` + }, + ["COMPILER_FILTERS"]: { + message: `filters have been removed in Vue 3. The "|" symbol will be treated as native JavaScript bitwise OR operator. Use method calls or computed properties instead.`, + link: `https://v3-migration.vuejs.org/breaking-changes/filters.html` + } +}; +function getCompatValue(key, { compatConfig }) { + const value = compatConfig && compatConfig[key]; + if (key === "MODE") { + return value || 3; + } else { + return value; + } +} +function isCompatEnabled(key, context) { + const mode = getCompatValue("MODE", context); + const value = getCompatValue(key, context); + return mode === 3 ? value === true : value !== false; +} +function checkCompatEnabled(key, context, loc, ...args) { + const enabled = isCompatEnabled(key, context); + if (enabled) { + warnDeprecation(key, context, loc, ...args); + } + return enabled; +} +function warnDeprecation(key, context, loc, ...args) { + const val = getCompatValue(key, context); + if (val === "suppress-warning") { + return; + } + const { message, link } = deprecationData[key]; + const msg = `(deprecation ${key}) ${typeof message === "function" ? message(...args) : message}${link ? ` + Details: ${link}` : ``}`; + const err = new SyntaxError(msg); + err.code = key; + if (loc) + err.loc = loc; + context.onWarn(err); +} + +function defaultOnError(error) { + throw error; +} +function defaultOnWarn(msg) { + console.warn(`[Vue warn] ${msg.message}`); +} +function createCompilerError(code, loc, messages, additionalMessage) { + const msg = (messages || errorMessages)[code] + (additionalMessage || ``) ; + const error = new SyntaxError(String(msg)); + error.code = code; + error.loc = loc; + return error; +} +const ErrorCodes = { + "ABRUPT_CLOSING_OF_EMPTY_COMMENT": 0, + "0": "ABRUPT_CLOSING_OF_EMPTY_COMMENT", + "CDATA_IN_HTML_CONTENT": 1, + "1": "CDATA_IN_HTML_CONTENT", + "DUPLICATE_ATTRIBUTE": 2, + "2": "DUPLICATE_ATTRIBUTE", + "END_TAG_WITH_ATTRIBUTES": 3, + "3": "END_TAG_WITH_ATTRIBUTES", + "END_TAG_WITH_TRAILING_SOLIDUS": 4, + "4": "END_TAG_WITH_TRAILING_SOLIDUS", + "EOF_BEFORE_TAG_NAME": 5, + "5": "EOF_BEFORE_TAG_NAME", + "EOF_IN_CDATA": 6, + "6": "EOF_IN_CDATA", + "EOF_IN_COMMENT": 7, + "7": "EOF_IN_COMMENT", + "EOF_IN_SCRIPT_HTML_COMMENT_LIKE_TEXT": 8, + "8": "EOF_IN_SCRIPT_HTML_COMMENT_LIKE_TEXT", + "EOF_IN_TAG": 9, + "9": "EOF_IN_TAG", + "INCORRECTLY_CLOSED_COMMENT": 10, + "10": "INCORRECTLY_CLOSED_COMMENT", + "INCORRECTLY_OPENED_COMMENT": 11, + "11": "INCORRECTLY_OPENED_COMMENT", + "INVALID_FIRST_CHARACTER_OF_TAG_NAME": 12, + "12": "INVALID_FIRST_CHARACTER_OF_TAG_NAME", + "MISSING_ATTRIBUTE_VALUE": 13, + "13": "MISSING_ATTRIBUTE_VALUE", + "MISSING_END_TAG_NAME": 14, + "14": "MISSING_END_TAG_NAME", + "MISSING_WHITESPACE_BETWEEN_ATTRIBUTES": 15, + "15": "MISSING_WHITESPACE_BETWEEN_ATTRIBUTES", + "NESTED_COMMENT": 16, + "16": "NESTED_COMMENT", + "UNEXPECTED_CHARACTER_IN_ATTRIBUTE_NAME": 17, + "17": "UNEXPECTED_CHARACTER_IN_ATTRIBUTE_NAME", + "UNEXPECTED_CHARACTER_IN_UNQUOTED_ATTRIBUTE_VALUE": 18, + "18": "UNEXPECTED_CHARACTER_IN_UNQUOTED_ATTRIBUTE_VALUE", + "UNEXPECTED_EQUALS_SIGN_BEFORE_ATTRIBUTE_NAME": 19, + "19": "UNEXPECTED_EQUALS_SIGN_BEFORE_ATTRIBUTE_NAME", + "UNEXPECTED_NULL_CHARACTER": 20, + "20": "UNEXPECTED_NULL_CHARACTER", + "UNEXPECTED_QUESTION_MARK_INSTEAD_OF_TAG_NAME": 21, + "21": "UNEXPECTED_QUESTION_MARK_INSTEAD_OF_TAG_NAME", + "UNEXPECTED_SOLIDUS_IN_TAG": 22, + "22": "UNEXPECTED_SOLIDUS_IN_TAG", + "X_INVALID_END_TAG": 23, + "23": "X_INVALID_END_TAG", + "X_MISSING_END_TAG": 24, + "24": "X_MISSING_END_TAG", + "X_MISSING_INTERPOLATION_END": 25, + "25": "X_MISSING_INTERPOLATION_END", + "X_MISSING_DIRECTIVE_NAME": 26, + "26": "X_MISSING_DIRECTIVE_NAME", + "X_MISSING_DYNAMIC_DIRECTIVE_ARGUMENT_END": 27, + "27": "X_MISSING_DYNAMIC_DIRECTIVE_ARGUMENT_END", + "X_V_IF_NO_EXPRESSION": 28, + "28": "X_V_IF_NO_EXPRESSION", + "X_V_IF_SAME_KEY": 29, + "29": "X_V_IF_SAME_KEY", + "X_V_ELSE_NO_ADJACENT_IF": 30, + "30": "X_V_ELSE_NO_ADJACENT_IF", + "X_V_FOR_NO_EXPRESSION": 31, + "31": "X_V_FOR_NO_EXPRESSION", + "X_V_FOR_MALFORMED_EXPRESSION": 32, + "32": "X_V_FOR_MALFORMED_EXPRESSION", + "X_V_FOR_TEMPLATE_KEY_PLACEMENT": 33, + "33": "X_V_FOR_TEMPLATE_KEY_PLACEMENT", + "X_V_BIND_NO_EXPRESSION": 34, + "34": "X_V_BIND_NO_EXPRESSION", + "X_V_ON_NO_EXPRESSION": 35, + "35": "X_V_ON_NO_EXPRESSION", + "X_V_SLOT_UNEXPECTED_DIRECTIVE_ON_SLOT_OUTLET": 36, + "36": "X_V_SLOT_UNEXPECTED_DIRECTIVE_ON_SLOT_OUTLET", + "X_V_SLOT_MIXED_SLOT_USAGE": 37, + "37": "X_V_SLOT_MIXED_SLOT_USAGE", + "X_V_SLOT_DUPLICATE_SLOT_NAMES": 38, + "38": "X_V_SLOT_DUPLICATE_SLOT_NAMES", + "X_V_SLOT_EXTRANEOUS_DEFAULT_SLOT_CHILDREN": 39, + "39": "X_V_SLOT_EXTRANEOUS_DEFAULT_SLOT_CHILDREN", + "X_V_SLOT_MISPLACED": 40, + "40": "X_V_SLOT_MISPLACED", + "X_V_MODEL_NO_EXPRESSION": 41, + "41": "X_V_MODEL_NO_EXPRESSION", + "X_V_MODEL_MALFORMED_EXPRESSION": 42, + "42": "X_V_MODEL_MALFORMED_EXPRESSION", + "X_V_MODEL_ON_SCOPE_VARIABLE": 43, + "43": "X_V_MODEL_ON_SCOPE_VARIABLE", + "X_V_MODEL_ON_PROPS": 44, + "44": "X_V_MODEL_ON_PROPS", + "X_INVALID_EXPRESSION": 45, + "45": "X_INVALID_EXPRESSION", + "X_KEEP_ALIVE_INVALID_CHILDREN": 46, + "46": "X_KEEP_ALIVE_INVALID_CHILDREN", + "X_PREFIX_ID_NOT_SUPPORTED": 47, + "47": "X_PREFIX_ID_NOT_SUPPORTED", + "X_MODULE_MODE_NOT_SUPPORTED": 48, + "48": "X_MODULE_MODE_NOT_SUPPORTED", + "X_CACHE_HANDLER_NOT_SUPPORTED": 49, + "49": "X_CACHE_HANDLER_NOT_SUPPORTED", + "X_SCOPE_ID_NOT_SUPPORTED": 50, + "50": "X_SCOPE_ID_NOT_SUPPORTED", + "X_VNODE_HOOKS": 51, + "51": "X_VNODE_HOOKS", + "__EXTEND_POINT__": 52, + "52": "__EXTEND_POINT__" +}; +const errorMessages = { + // parse errors + [0]: "Illegal comment.", + [1]: "CDATA section is allowed only in XML context.", + [2]: "Duplicate attribute.", + [3]: "End tag cannot have attributes.", + [4]: "Illegal '/' in tags.", + [5]: "Unexpected EOF in tag.", + [6]: "Unexpected EOF in CDATA section.", + [7]: "Unexpected EOF in comment.", + [8]: "Unexpected EOF in script.", + [9]: "Unexpected EOF in tag.", + [10]: "Incorrectly closed comment.", + [11]: "Incorrectly opened comment.", + [12]: "Illegal tag name. Use '<' to print '<'.", + [13]: "Attribute value was expected.", + [14]: "End tag name was expected.", + [15]: "Whitespace was expected.", + [16]: "Unexpected '<!--' in comment.", + [17]: `Attribute name cannot contain U+0022 ("), U+0027 ('), and U+003C (<).`, + [18]: "Unquoted attribute value cannot contain U+0022 (\"), U+0027 ('), U+003C (<), U+003D (=), and U+0060 (`).", + [19]: "Attribute name cannot start with '='.", + [21]: "'<?' is allowed only in XML context.", + [20]: `Unexpected null character.`, + [22]: "Illegal '/' in tags.", + // Vue-specific parse errors + [23]: "Invalid end tag.", + [24]: "Element is missing end tag.", + [25]: "Interpolation end sign was not found.", + [27]: "End bracket for dynamic directive argument was not found. Note that dynamic directive argument cannot contain spaces.", + [26]: "Legal directive name was expected.", + // transform errors + [28]: `v-if/v-else-if is missing expression.`, + [29]: `v-if/else branches must use unique keys.`, + [30]: `v-else/v-else-if has no adjacent v-if or v-else-if.`, + [31]: `v-for is missing expression.`, + [32]: `v-for has invalid expression.`, + [33]: `<template v-for> key should be placed on the <template> tag.`, + [34]: `v-bind is missing expression.`, + [35]: `v-on is missing expression.`, + [36]: `Unexpected custom directive on <slot> outlet.`, + [37]: `Mixed v-slot usage on both the component and nested <template>. When there are multiple named slots, all slots should use <template> syntax to avoid scope ambiguity.`, + [38]: `Duplicate slot names found. `, + [39]: `Extraneous children found when component already has explicitly named default slot. These children will be ignored.`, + [40]: `v-slot can only be used on components or <template> tags.`, + [41]: `v-model is missing expression.`, + [42]: `v-model value must be a valid JavaScript member expression.`, + [43]: `v-model cannot be used on v-for or v-slot scope variables because they are not writable.`, + [44]: `v-model cannot be used on a prop, because local prop bindings are not writable. +Use a v-bind binding combined with a v-on listener that emits update:x event instead.`, + [45]: `Error parsing JavaScript expression: `, + [46]: `<KeepAlive> expects exactly one child component.`, + [51]: `@vnode-* hooks in templates are no longer supported. Use the vue: prefix instead. For example, @vnode-mounted should be changed to @vue:mounted. @vnode-* hooks support has been removed in 3.4.`, + // generic errors + [47]: `"prefixIdentifiers" option is not supported in this build of compiler.`, + [48]: `ES module mode is not supported in this build of compiler.`, + [49]: `"cacheHandlers" option is only supported when the "prefixIdentifiers" option is enabled.`, + [50]: `"scopeId" option is only supported in module mode.`, + // just to fulfill types + [52]: `` +}; + +function walkIdentifiers$1(root, onIdentifier, includeAll = false, parentStack = [], knownIds = /* @__PURE__ */ Object.create(null)) { + const rootExp = root.type === "Program" ? root.body[0].type === "ExpressionStatement" && root.body[0].expression : root; + estreeWalker.walk(root, { + enter(node, parent) { + parent && parentStack.push(parent); + if (parent && parent.type.startsWith("TS") && !TS_NODE_TYPES.includes(parent.type)) { + return this.skip(); + } + if (node.type === "Identifier") { + const isLocal = !!knownIds[node.name]; + const isRefed = isReferencedIdentifier(node, parent, parentStack); + if (includeAll || isRefed && !isLocal) { + onIdentifier(node, parent, parentStack, isRefed, isLocal); + } + } else if (node.type === "ObjectProperty" && parent.type === "ObjectPattern") { + node.inPattern = true; + } else if (isFunctionType(node)) { + if (node.scopeIds) { + node.scopeIds.forEach((id) => markKnownIds(id, knownIds)); + } else { + walkFunctionParams( + node, + (id) => markScopeIdentifier(node, id, knownIds) + ); + } + } else if (node.type === "BlockStatement") { + if (node.scopeIds) { + node.scopeIds.forEach((id) => markKnownIds(id, knownIds)); + } else { + walkBlockDeclarations( + node, + (id) => markScopeIdentifier(node, id, knownIds) + ); + } + } + }, + leave(node, parent) { + parent && parentStack.pop(); + if (node !== rootExp && node.scopeIds) { + for (const id of node.scopeIds) { + knownIds[id]--; + if (knownIds[id] === 0) { + delete knownIds[id]; + } + } + } + } + }); +} +function isReferencedIdentifier(id, parent, parentStack) { + if (!parent) { + return true; + } + if (id.name === "arguments") { + return false; + } + if (isReferenced(id, parent)) { + return true; + } + switch (parent.type) { + case "AssignmentExpression": + case "AssignmentPattern": + return true; + case "ObjectPattern": + case "ArrayPattern": + return isInDestructureAssignment(parent, parentStack); + } + return false; +} +function isInDestructureAssignment(parent, parentStack) { + if (parent && (parent.type === "ObjectProperty" || parent.type === "ArrayPattern")) { + let i = parentStack.length; + while (i--) { + const p = parentStack[i]; + if (p.type === "AssignmentExpression") { + return true; + } else if (p.type !== "ObjectProperty" && !p.type.endsWith("Pattern")) { + break; + } + } + } + return false; +} +function walkFunctionParams(node, onIdent) { + for (const p of node.params) { + for (const id of extractIdentifiers(p)) { + onIdent(id); + } + } +} +function walkBlockDeclarations(block, onIdent) { + for (const stmt of block.body) { + if (stmt.type === "VariableDeclaration") { + if (stmt.declare) + continue; + for (const decl of stmt.declarations) { + for (const id of extractIdentifiers(decl.id)) { + onIdent(id); + } + } + } else if (stmt.type === "FunctionDeclaration" || stmt.type === "ClassDeclaration") { + if (stmt.declare || !stmt.id) + continue; + onIdent(stmt.id); + } else if (stmt.type === "ForOfStatement" || stmt.type === "ForInStatement" || stmt.type === "ForStatement") { + const variable = stmt.type === "ForStatement" ? stmt.init : stmt.left; + if (variable && variable.type === "VariableDeclaration") { + for (const decl of variable.declarations) { + for (const id of extractIdentifiers(decl.id)) { + onIdent(id); + } + } + } + } + } +} +function extractIdentifiers(param, nodes = []) { + switch (param.type) { + case "Identifier": + nodes.push(param); + break; + case "MemberExpression": + let object = param; + while (object.type === "MemberExpression") { + object = object.object; + } + nodes.push(object); + break; + case "ObjectPattern": + for (const prop of param.properties) { + if (prop.type === "RestElement") { + extractIdentifiers(prop.argument, nodes); + } else { + extractIdentifiers(prop.value, nodes); + } + } + break; + case "ArrayPattern": + param.elements.forEach((element) => { + if (element) + extractIdentifiers(element, nodes); + }); + break; + case "RestElement": + extractIdentifiers(param.argument, nodes); + break; + case "AssignmentPattern": + extractIdentifiers(param.left, nodes); + break; + } + return nodes; +} +function markKnownIds(name, knownIds) { + if (name in knownIds) { + knownIds[name]++; + } else { + knownIds[name] = 1; + } +} +function markScopeIdentifier(node, child, knownIds) { + const { name } = child; + if (node.scopeIds && node.scopeIds.has(name)) { + return; + } + markKnownIds(name, knownIds); + (node.scopeIds || (node.scopeIds = /* @__PURE__ */ new Set())).add(name); +} +const isFunctionType = (node) => { + return /Function(?:Expression|Declaration)$|Method$/.test(node.type); +}; +const isStaticProperty = (node) => node && (node.type === "ObjectProperty" || node.type === "ObjectMethod") && !node.computed; +const isStaticPropertyKey = (node, parent) => isStaticProperty(parent) && parent.key === node; +function isReferenced(node, parent, grandparent) { + switch (parent.type) { + case "MemberExpression": + case "OptionalMemberExpression": + if (parent.property === node) { + return !!parent.computed; + } + return parent.object === node; + case "JSXMemberExpression": + return parent.object === node; + case "VariableDeclarator": + return parent.init === node; + case "ArrowFunctionExpression": + return parent.body === node; + case "PrivateName": + return false; + case "ClassMethod": + case "ClassPrivateMethod": + case "ObjectMethod": + if (parent.key === node) { + return !!parent.computed; + } + return false; + case "ObjectProperty": + if (parent.key === node) { + return !!parent.computed; + } + return !grandparent || grandparent.type !== "ObjectPattern"; + case "ClassProperty": + if (parent.key === node) { + return !!parent.computed; + } + return true; + case "ClassPrivateProperty": + return parent.key !== node; + case "ClassDeclaration": + case "ClassExpression": + return parent.superClass === node; + case "AssignmentExpression": + return parent.right === node; + case "AssignmentPattern": + return parent.right === node; + case "LabeledStatement": + return false; + case "CatchClause": + return false; + case "RestElement": + return false; + case "BreakStatement": + case "ContinueStatement": + return false; + case "FunctionDeclaration": + case "FunctionExpression": + return false; + case "ExportNamespaceSpecifier": + case "ExportDefaultSpecifier": + return false; + case "ExportSpecifier": + if (grandparent == null ? void 0 : grandparent.source) { + return false; + } + return parent.local === node; + case "ImportDefaultSpecifier": + case "ImportNamespaceSpecifier": + case "ImportSpecifier": + return false; + case "ImportAttribute": + return false; + case "JSXAttribute": + return false; + case "ObjectPattern": + case "ArrayPattern": + return false; + case "MetaProperty": + return false; + case "ObjectTypeProperty": + return parent.key !== node; + case "TSEnumMember": + return parent.id !== node; + case "TSPropertySignature": + if (parent.key === node) { + return !!parent.computed; + } + return true; + } + return true; +} +const TS_NODE_TYPES = [ + "TSAsExpression", + // foo as number + "TSTypeAssertion", + // (<number>foo) + "TSNonNullExpression", + // foo! + "TSInstantiationExpression", + // foo<string> + "TSSatisfiesExpression" + // foo satisfies T +]; +function unwrapTSNode(node) { + if (TS_NODE_TYPES.includes(node.type)) { + return unwrapTSNode(node.expression); + } else { + return node; + } +} + +const isStaticExp = (p) => p.type === 4 && p.isStatic; +function isCoreComponent(tag) { + switch (tag) { + case "Teleport": + case "teleport": + return TELEPORT; + case "Suspense": + case "suspense": + return SUSPENSE; + case "KeepAlive": + case "keep-alive": + return KEEP_ALIVE; + case "BaseTransition": + case "base-transition": + return BASE_TRANSITION; + } +} +const nonIdentifierRE = /^\d|[^\$\w]/; +const isSimpleIdentifier = (name) => !nonIdentifierRE.test(name); +const validFirstIdentCharRE = /[A-Za-z_$\xA0-\uFFFF]/; +const validIdentCharRE = /[\.\?\w$\xA0-\uFFFF]/; +const whitespaceRE$1 = /\s+[.[]\s*|\s*[.[]\s+/g; +const isMemberExpressionBrowser = (path) => { + path = path.trim().replace(whitespaceRE$1, (s) => s.trim()); + let state = 0 /* inMemberExp */; + let stateStack = []; + let currentOpenBracketCount = 0; + let currentOpenParensCount = 0; + let currentStringType = null; + for (let i = 0; i < path.length; i++) { + const char = path.charAt(i); + switch (state) { + case 0 /* inMemberExp */: + if (char === "[") { + stateStack.push(state); + state = 1 /* inBrackets */; + currentOpenBracketCount++; + } else if (char === "(") { + stateStack.push(state); + state = 2 /* inParens */; + currentOpenParensCount++; + } else if (!(i === 0 ? validFirstIdentCharRE : validIdentCharRE).test(char)) { + return false; + } + break; + case 1 /* inBrackets */: + if (char === `'` || char === `"` || char === "`") { + stateStack.push(state); + state = 3 /* inString */; + currentStringType = char; + } else if (char === `[`) { + currentOpenBracketCount++; + } else if (char === `]`) { + if (!--currentOpenBracketCount) { + state = stateStack.pop(); + } + } + break; + case 2 /* inParens */: + if (char === `'` || char === `"` || char === "`") { + stateStack.push(state); + state = 3 /* inString */; + currentStringType = char; + } else if (char === `(`) { + currentOpenParensCount++; + } else if (char === `)`) { + if (i === path.length - 1) { + return false; + } + if (!--currentOpenParensCount) { + state = stateStack.pop(); + } + } + break; + case 3 /* inString */: + if (char === currentStringType) { + state = stateStack.pop(); + currentStringType = null; + } + break; + } + } + return !currentOpenBracketCount && !currentOpenParensCount; +}; +const isMemberExpressionNode = (path, context) => { + try { + let ret = parser.parseExpression(path, { + plugins: context.expressionPlugins + }); + ret = unwrapTSNode(ret); + return ret.type === "MemberExpression" || ret.type === "OptionalMemberExpression" || ret.type === "Identifier" && ret.name !== "undefined"; + } catch (e) { + return false; + } +}; +const isMemberExpression = isMemberExpressionNode; +function advancePositionWithClone(pos, source, numberOfCharacters = source.length) { + return advancePositionWithMutation( + { + offset: pos.offset, + line: pos.line, + column: pos.column + }, + source, + numberOfCharacters + ); +} +function advancePositionWithMutation(pos, source, numberOfCharacters = source.length) { + let linesCount = 0; + let lastNewLinePos = -1; + for (let i = 0; i < numberOfCharacters; i++) { + if (source.charCodeAt(i) === 10) { + linesCount++; + lastNewLinePos = i; + } + } + pos.offset += numberOfCharacters; + pos.line += linesCount; + pos.column = lastNewLinePos === -1 ? pos.column + numberOfCharacters : numberOfCharacters - lastNewLinePos; + return pos; +} +function assert(condition, msg) { + if (!condition) { + throw new Error(msg || `unexpected compiler condition`); + } +} +function findDir(node, name, allowEmpty = false) { + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 7 && (allowEmpty || p.exp) && (shared$2.isString(name) ? p.name === name : name.test(p.name))) { + return p; + } + } +} +function findProp(node, name, dynamicOnly = false, allowEmpty = false) { + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 6) { + if (dynamicOnly) + continue; + if (p.name === name && (p.value || allowEmpty)) { + return p; + } + } else if (p.name === "bind" && (p.exp || allowEmpty) && isStaticArgOf(p.arg, name)) { + return p; + } + } +} +function isStaticArgOf(arg, name) { + return !!(arg && isStaticExp(arg) && arg.content === name); +} +function hasDynamicKeyVBind(node) { + return node.props.some( + (p) => p.type === 7 && p.name === "bind" && (!p.arg || // v-bind="obj" + p.arg.type !== 4 || // v-bind:[_ctx.foo] + !p.arg.isStatic) + // v-bind:[foo] + ); +} +function isText$1(node) { + return node.type === 5 || node.type === 2; +} +function isVSlot(p) { + return p.type === 7 && p.name === "slot"; +} +function isTemplateNode(node) { + return node.type === 1 && node.tagType === 3; +} +function isSlotOutlet(node) { + return node.type === 1 && node.tagType === 2; +} +const propsHelperSet = /* @__PURE__ */ new Set([NORMALIZE_PROPS, GUARD_REACTIVE_PROPS]); +function getUnnormalizedProps(props, callPath = []) { + if (props && !shared$2.isString(props) && props.type === 14) { + const callee = props.callee; + if (!shared$2.isString(callee) && propsHelperSet.has(callee)) { + return getUnnormalizedProps( + props.arguments[0], + callPath.concat(props) + ); + } + } + return [props, callPath]; +} +function injectProp(node, prop, context) { + let propsWithInjection; + let props = node.type === 13 ? node.props : node.arguments[2]; + let callPath = []; + let parentCall; + if (props && !shared$2.isString(props) && props.type === 14) { + const ret = getUnnormalizedProps(props); + props = ret[0]; + callPath = ret[1]; + parentCall = callPath[callPath.length - 1]; + } + if (props == null || shared$2.isString(props)) { + propsWithInjection = createObjectExpression([prop]); + } else if (props.type === 14) { + const first = props.arguments[0]; + if (!shared$2.isString(first) && first.type === 15) { + if (!hasProp(prop, first)) { + first.properties.unshift(prop); + } + } else { + if (props.callee === TO_HANDLERS) { + propsWithInjection = createCallExpression(context.helper(MERGE_PROPS), [ + createObjectExpression([prop]), + props + ]); + } else { + props.arguments.unshift(createObjectExpression([prop])); + } + } + !propsWithInjection && (propsWithInjection = props); + } else if (props.type === 15) { + if (!hasProp(prop, props)) { + props.properties.unshift(prop); + } + propsWithInjection = props; + } else { + propsWithInjection = createCallExpression(context.helper(MERGE_PROPS), [ + createObjectExpression([prop]), + props + ]); + if (parentCall && parentCall.callee === GUARD_REACTIVE_PROPS) { + parentCall = callPath[callPath.length - 2]; + } + } + if (node.type === 13) { + if (parentCall) { + parentCall.arguments[0] = propsWithInjection; + } else { + node.props = propsWithInjection; + } + } else { + if (parentCall) { + parentCall.arguments[0] = propsWithInjection; + } else { + node.arguments[2] = propsWithInjection; + } + } +} +function hasProp(prop, props) { + let result = false; + if (prop.key.type === 4) { + const propKeyName = prop.key.content; + result = props.properties.some( + (p) => p.key.type === 4 && p.key.content === propKeyName + ); + } + return result; +} +function toValidAssetId(name, type) { + return `_${type}_${name.replace(/[^\w]/g, (searchValue, replaceValue) => { + return searchValue === "-" ? "_" : name.charCodeAt(replaceValue).toString(); + })}`; +} +function hasScopeRef(node, ids) { + if (!node || Object.keys(ids).length === 0) { + return false; + } + switch (node.type) { + case 1: + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 7 && (hasScopeRef(p.arg, ids) || hasScopeRef(p.exp, ids))) { + return true; + } + } + return node.children.some((c) => hasScopeRef(c, ids)); + case 11: + if (hasScopeRef(node.source, ids)) { + return true; + } + return node.children.some((c) => hasScopeRef(c, ids)); + case 9: + return node.branches.some((b) => hasScopeRef(b, ids)); + case 10: + if (hasScopeRef(node.condition, ids)) { + return true; + } + return node.children.some((c) => hasScopeRef(c, ids)); + case 4: + return !node.isStatic && isSimpleIdentifier(node.content) && !!ids[node.content]; + case 8: + return node.children.some((c) => shared$2.isObject(c) && hasScopeRef(c, ids)); + case 5: + case 12: + return hasScopeRef(node.content, ids); + case 2: + case 3: + return false; + default: + return false; + } +} +function getMemoedVNodeCall(node) { + if (node.type === 14 && node.callee === WITH_MEMO) { + return node.arguments[1].returns; + } else { + return node; + } +} +const forAliasRE$1 = /([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/; + +const defaultParserOptions = { + parseMode: "base", + ns: 0, + delimiters: [`{{`, `}}`], + getNamespace: () => 0, + isVoidTag: shared$2.NO, + isPreTag: shared$2.NO, + isCustomElement: shared$2.NO, + onError: defaultOnError, + onWarn: defaultOnWarn, + comments: true, + prefixIdentifiers: false +}; +let currentOptions = defaultParserOptions; +let currentRoot = null; +let currentInput = ""; +let currentOpenTag = null; +let currentProp = null; +let currentAttrValue = ""; +let currentAttrStartIndex = -1; +let currentAttrEndIndex = -1; +let inPre = 0; +let inVPre = false; +let currentVPreBoundary = null; +const stack = []; +const tokenizer = new Tokenizer(stack, { + onerr: emitError, + ontext(start, end) { + onText(getSlice(start, end), start, end); + }, + ontextentity(char, start, end) { + onText(char, start, end); + }, + oninterpolation(start, end) { + if (inVPre) { + return onText(getSlice(start, end), start, end); + } + let innerStart = start + tokenizer.delimiterOpen.length; + let innerEnd = end - tokenizer.delimiterClose.length; + while (isWhitespace$3(currentInput.charCodeAt(innerStart))) { + innerStart++; + } + while (isWhitespace$3(currentInput.charCodeAt(innerEnd - 1))) { + innerEnd--; + } + let exp = getSlice(innerStart, innerEnd); + if (exp.includes("&")) { + { + exp = decode_js.decodeHTML(exp); + } + } + addNode({ + type: 5, + content: createExp(exp, false, getLoc(innerStart, innerEnd)), + loc: getLoc(start, end) + }); + }, + onopentagname(start, end) { + const name = getSlice(start, end); + currentOpenTag = { + type: 1, + tag: name, + ns: currentOptions.getNamespace(name, stack[0], currentOptions.ns), + tagType: 0, + // will be refined on tag close + props: [], + children: [], + loc: getLoc(start - 1, end), + codegenNode: void 0 + }; + }, + onopentagend(end) { + endOpenTag(end); + }, + onclosetag(start, end) { + const name = getSlice(start, end); + if (!currentOptions.isVoidTag(name)) { + let found = false; + for (let i = 0; i < stack.length; i++) { + const e = stack[i]; + if (e.tag.toLowerCase() === name.toLowerCase()) { + found = true; + if (i > 0) { + emitError(24, stack[0].loc.start.offset); + } + for (let j = 0; j <= i; j++) { + const el = stack.shift(); + onCloseTag(el, end, j < i); + } + break; + } + } + if (!found) { + emitError(23, backTrack(start, 60)); + } + } + }, + onselfclosingtag(end) { + var _a; + const name = currentOpenTag.tag; + currentOpenTag.isSelfClosing = true; + endOpenTag(end); + if (((_a = stack[0]) == null ? void 0 : _a.tag) === name) { + onCloseTag(stack.shift(), end); + } + }, + onattribname(start, end) { + currentProp = { + type: 6, + name: getSlice(start, end), + nameLoc: getLoc(start, end), + value: void 0, + loc: getLoc(start) + }; + }, + ondirname(start, end) { + const raw = getSlice(start, end); + const name = raw === "." || raw === ":" ? "bind" : raw === "@" ? "on" : raw === "#" ? "slot" : raw.slice(2); + if (!inVPre && name === "") { + emitError(26, start); + } + if (inVPre || name === "") { + currentProp = { + type: 6, + name: raw, + nameLoc: getLoc(start, end), + value: void 0, + loc: getLoc(start) + }; + } else { + currentProp = { + type: 7, + name, + rawName: raw, + exp: void 0, + arg: void 0, + modifiers: raw === "." ? ["prop"] : [], + loc: getLoc(start) + }; + if (name === "pre") { + inVPre = tokenizer.inVPre = true; + currentVPreBoundary = currentOpenTag; + const props = currentOpenTag.props; + for (let i = 0; i < props.length; i++) { + if (props[i].type === 7) { + props[i] = dirToAttr(props[i]); + } + } + } + } + }, + ondirarg(start, end) { + if (start === end) + return; + const arg = getSlice(start, end); + if (inVPre) { + currentProp.name += arg; + setLocEnd(currentProp.nameLoc, end); + } else { + const isStatic = arg[0] !== `[`; + currentProp.arg = createExp( + isStatic ? arg : arg.slice(1, -1), + isStatic, + getLoc(start, end), + isStatic ? 3 : 0 + ); + } + }, + ondirmodifier(start, end) { + const mod = getSlice(start, end); + if (inVPre) { + currentProp.name += "." + mod; + setLocEnd(currentProp.nameLoc, end); + } else if (currentProp.name === "slot") { + const arg = currentProp.arg; + if (arg) { + arg.content += "." + mod; + setLocEnd(arg.loc, end); + } + } else { + currentProp.modifiers.push(mod); + } + }, + onattribdata(start, end) { + currentAttrValue += getSlice(start, end); + if (currentAttrStartIndex < 0) + currentAttrStartIndex = start; + currentAttrEndIndex = end; + }, + onattribentity(char, start, end) { + currentAttrValue += char; + if (currentAttrStartIndex < 0) + currentAttrStartIndex = start; + currentAttrEndIndex = end; + }, + onattribnameend(end) { + const start = currentProp.loc.start.offset; + const name = getSlice(start, end); + if (currentProp.type === 7) { + currentProp.rawName = name; + } + if (currentOpenTag.props.some( + (p) => (p.type === 7 ? p.rawName : p.name) === name + )) { + emitError(2, start); + } + }, + onattribend(quote, end) { + if (currentOpenTag && currentProp) { + setLocEnd(currentProp.loc, end); + if (quote !== 0) { + if (currentProp.type === 6) { + if (currentProp.name === "class") { + currentAttrValue = condense(currentAttrValue).trim(); + } + if (quote === 1 && !currentAttrValue) { + emitError(13, end); + } + currentProp.value = { + type: 2, + content: currentAttrValue, + loc: quote === 1 ? getLoc(currentAttrStartIndex, currentAttrEndIndex) : getLoc(currentAttrStartIndex - 1, currentAttrEndIndex + 1) + }; + if (tokenizer.inSFCRoot && currentOpenTag.tag === "template" && currentProp.name === "lang" && currentAttrValue && currentAttrValue !== "html") { + tokenizer.enterRCDATA(toCharCodes(`</template`), 0); + } + } else { + let expParseMode = 0 /* Normal */; + { + if (currentProp.name === "for") { + expParseMode = 3 /* Skip */; + } else if (currentProp.name === "slot") { + expParseMode = 1 /* Params */; + } else if (currentProp.name === "on" && currentAttrValue.includes(";")) { + expParseMode = 2 /* Statements */; + } + } + currentProp.exp = createExp( + currentAttrValue, + false, + getLoc(currentAttrStartIndex, currentAttrEndIndex), + 0, + expParseMode + ); + if (currentProp.name === "for") { + currentProp.forParseResult = parseForExpression(currentProp.exp); + } + let syncIndex = -1; + if (currentProp.name === "bind" && (syncIndex = currentProp.modifiers.indexOf("sync")) > -1 && checkCompatEnabled( + "COMPILER_V_BIND_SYNC", + currentOptions, + currentProp.loc, + currentProp.rawName + )) { + currentProp.name = "model"; + currentProp.modifiers.splice(syncIndex, 1); + } + } + } + if (currentProp.type !== 7 || currentProp.name !== "pre") { + currentOpenTag.props.push(currentProp); + } + } + currentAttrValue = ""; + currentAttrStartIndex = currentAttrEndIndex = -1; + }, + oncomment(start, end) { + if (currentOptions.comments) { + addNode({ + type: 3, + content: getSlice(start, end), + loc: getLoc(start - 4, end + 3) + }); + } + }, + onend() { + const end = currentInput.length; + if (tokenizer.state !== 1) { + switch (tokenizer.state) { + case 5: + case 8: + emitError(5, end); + break; + case 3: + case 4: + emitError( + 25, + tokenizer.sectionStart + ); + break; + case 28: + if (tokenizer.currentSequence === Sequences.CdataEnd) { + emitError(6, end); + } else { + emitError(7, end); + } + break; + case 6: + case 7: + case 9: + case 11: + case 12: + case 13: + case 14: + case 15: + case 16: + case 17: + case 18: + case 19: + case 20: + case 21: + emitError(9, end); + break; + } + } + for (let index = 0; index < stack.length; index++) { + onCloseTag(stack[index], end - 1); + emitError(24, stack[index].loc.start.offset); + } + }, + oncdata(start, end) { + if (stack[0].ns !== 0) { + onText(getSlice(start, end), start, end); + } else { + emitError(1, start - 9); + } + }, + onprocessinginstruction(start) { + if ((stack[0] ? stack[0].ns : currentOptions.ns) === 0) { + emitError( + 21, + start - 1 + ); + } + } +}); +const forIteratorRE$1 = /,([^,\}\]]*)(?:,([^,\}\]]*))?$/; +const stripParensRE$1 = /^\(|\)$/g; +function parseForExpression(input) { + const loc = input.loc; + const exp = input.content; + const inMatch = exp.match(forAliasRE$1); + if (!inMatch) + return; + const [, LHS, RHS] = inMatch; + const createAliasExpression = (content, offset, asParam = false) => { + const start = loc.start.offset + offset; + const end = start + content.length; + return createExp( + content, + false, + getLoc(start, end), + 0, + asParam ? 1 /* Params */ : 0 /* Normal */ + ); + }; + const result = { + source: createAliasExpression(RHS.trim(), exp.indexOf(RHS, LHS.length)), + value: void 0, + key: void 0, + index: void 0, + finalized: false + }; + let valueContent = LHS.trim().replace(stripParensRE$1, "").trim(); + const trimmedOffset = LHS.indexOf(valueContent); + const iteratorMatch = valueContent.match(forIteratorRE$1); + if (iteratorMatch) { + valueContent = valueContent.replace(forIteratorRE$1, "").trim(); + const keyContent = iteratorMatch[1].trim(); + let keyOffset; + if (keyContent) { + keyOffset = exp.indexOf(keyContent, trimmedOffset + valueContent.length); + result.key = createAliasExpression(keyContent, keyOffset, true); + } + if (iteratorMatch[2]) { + const indexContent = iteratorMatch[2].trim(); + if (indexContent) { + result.index = createAliasExpression( + indexContent, + exp.indexOf( + indexContent, + result.key ? keyOffset + keyContent.length : trimmedOffset + valueContent.length + ), + true + ); + } + } + } + if (valueContent) { + result.value = createAliasExpression(valueContent, trimmedOffset, true); + } + return result; +} +function getSlice(start, end) { + return currentInput.slice(start, end); +} +function endOpenTag(end) { + if (tokenizer.inSFCRoot) { + currentOpenTag.innerLoc = getLoc(end + 1, end + 1); + } + addNode(currentOpenTag); + const { tag, ns } = currentOpenTag; + if (ns === 0 && currentOptions.isPreTag(tag)) { + inPre++; + } + if (currentOptions.isVoidTag(tag)) { + onCloseTag(currentOpenTag, end); + } else { + stack.unshift(currentOpenTag); + if (ns === 1 || ns === 2) { + tokenizer.inXML = true; + } + } + currentOpenTag = null; +} +function onText(content, start, end) { + const parent = stack[0] || currentRoot; + const lastNode = parent.children[parent.children.length - 1]; + if ((lastNode == null ? void 0 : lastNode.type) === 2) { + lastNode.content += content; + setLocEnd(lastNode.loc, end); + } else { + parent.children.push({ + type: 2, + content, + loc: getLoc(start, end) + }); + } +} +function onCloseTag(el, end, isImplied = false) { + if (isImplied) { + setLocEnd(el.loc, backTrack(end, 60)); + } else { + setLocEnd(el.loc, end + 1); + } + if (tokenizer.inSFCRoot) { + if (el.children.length) { + el.innerLoc.end = shared$2.extend({}, el.children[el.children.length - 1].loc.end); + } else { + el.innerLoc.end = shared$2.extend({}, el.innerLoc.start); + } + el.innerLoc.source = getSlice( + el.innerLoc.start.offset, + el.innerLoc.end.offset + ); + } + const { tag, ns } = el; + if (!inVPre) { + if (tag === "slot") { + el.tagType = 2; + } else if (isFragmentTemplate(el)) { + el.tagType = 3; + } else if (isComponent(el)) { + el.tagType = 1; + } + } + if (!tokenizer.inRCDATA) { + el.children = condenseWhitespace(el.children, el.tag); + } + if (ns === 0 && currentOptions.isPreTag(tag)) { + inPre--; + } + if (currentVPreBoundary === el) { + inVPre = tokenizer.inVPre = false; + currentVPreBoundary = null; + } + if (tokenizer.inXML && (stack[0] ? stack[0].ns : currentOptions.ns) === 0) { + tokenizer.inXML = false; + } + { + const props = el.props; + if (isCompatEnabled( + "COMPILER_V_IF_V_FOR_PRECEDENCE", + currentOptions + )) { + let hasIf = false; + let hasFor = false; + for (let i = 0; i < props.length; i++) { + const p = props[i]; + if (p.type === 7) { + if (p.name === "if") { + hasIf = true; + } else if (p.name === "for") { + hasFor = true; + } + } + if (hasIf && hasFor) { + warnDeprecation( + "COMPILER_V_IF_V_FOR_PRECEDENCE", + currentOptions, + el.loc + ); + break; + } + } + } + if (isCompatEnabled( + "COMPILER_NATIVE_TEMPLATE", + currentOptions + ) && el.tag === "template" && !isFragmentTemplate(el)) { + warnDeprecation( + "COMPILER_NATIVE_TEMPLATE", + currentOptions, + el.loc + ); + const parent = stack[0] || currentRoot; + const index = parent.children.indexOf(el); + parent.children.splice(index, 1, ...el.children); + } + const inlineTemplateProp = props.find( + (p) => p.type === 6 && p.name === "inline-template" + ); + if (inlineTemplateProp && checkCompatEnabled( + "COMPILER_INLINE_TEMPLATE", + currentOptions, + inlineTemplateProp.loc + ) && el.children.length) { + inlineTemplateProp.value = { + type: 2, + content: getSlice( + el.children[0].loc.start.offset, + el.children[el.children.length - 1].loc.end.offset + ), + loc: inlineTemplateProp.loc + }; + } + } +} +function backTrack(index, c) { + let i = index; + while (currentInput.charCodeAt(i) !== c && i >= 0) + i--; + return i; +} +const specialTemplateDir = /* @__PURE__ */ new Set(["if", "else", "else-if", "for", "slot"]); +function isFragmentTemplate({ tag, props }) { + if (tag === "template") { + for (let i = 0; i < props.length; i++) { + if (props[i].type === 7 && specialTemplateDir.has(props[i].name)) { + return true; + } + } + } + return false; +} +function isComponent({ tag, props }) { + var _a; + if (currentOptions.isCustomElement(tag)) { + return false; + } + if (tag === "component" || isUpperCase(tag.charCodeAt(0)) || isCoreComponent(tag) || ((_a = currentOptions.isBuiltInComponent) == null ? void 0 : _a.call(currentOptions, tag)) || currentOptions.isNativeTag && !currentOptions.isNativeTag(tag)) { + return true; + } + for (let i = 0; i < props.length; i++) { + const p = props[i]; + if (p.type === 6) { + if (p.name === "is" && p.value) { + if (p.value.content.startsWith("vue:")) { + return true; + } else if (checkCompatEnabled( + "COMPILER_IS_ON_ELEMENT", + currentOptions, + p.loc + )) { + return true; + } + } + } else if (// :is on plain element - only treat as component in compat mode + p.name === "bind" && isStaticArgOf(p.arg, "is") && checkCompatEnabled( + "COMPILER_IS_ON_ELEMENT", + currentOptions, + p.loc + )) { + return true; + } + } + return false; +} +function isUpperCase(c) { + return c > 64 && c < 91; +} +const windowsNewlineRE = /\r\n/g; +function condenseWhitespace(nodes, tag) { + var _a, _b; + const shouldCondense = currentOptions.whitespace !== "preserve"; + let removedWhitespace = false; + for (let i = 0; i < nodes.length; i++) { + const node = nodes[i]; + if (node.type === 2) { + if (!inPre) { + if (isAllWhitespace(node.content)) { + const prev = (_a = nodes[i - 1]) == null ? void 0 : _a.type; + const next = (_b = nodes[i + 1]) == null ? void 0 : _b.type; + if (!prev || !next || shouldCondense && (prev === 3 && (next === 3 || next === 1) || prev === 1 && (next === 3 || next === 1 && hasNewlineChar(node.content)))) { + removedWhitespace = true; + nodes[i] = null; + } else { + node.content = " "; + } + } else if (shouldCondense) { + node.content = condense(node.content); + } + } else { + node.content = node.content.replace(windowsNewlineRE, "\n"); + } + } + } + if (inPre && tag && currentOptions.isPreTag(tag)) { + const first = nodes[0]; + if (first && first.type === 2) { + first.content = first.content.replace(/^\r?\n/, ""); + } + } + return removedWhitespace ? nodes.filter(Boolean) : nodes; +} +function isAllWhitespace(str) { + for (let i = 0; i < str.length; i++) { + if (!isWhitespace$3(str.charCodeAt(i))) { + return false; + } + } + return true; +} +function hasNewlineChar(str) { + for (let i = 0; i < str.length; i++) { + const c = str.charCodeAt(i); + if (c === 10 || c === 13) { + return true; + } + } + return false; +} +function condense(str) { + let ret = ""; + let prevCharIsWhitespace = false; + for (let i = 0; i < str.length; i++) { + if (isWhitespace$3(str.charCodeAt(i))) { + if (!prevCharIsWhitespace) { + ret += " "; + prevCharIsWhitespace = true; + } + } else { + ret += str[i]; + prevCharIsWhitespace = false; + } + } + return ret; +} +function addNode(node) { + (stack[0] || currentRoot).children.push(node); +} +function getLoc(start, end) { + return { + start: tokenizer.getPos(start), + // @ts-expect-error allow late attachment + end: end == null ? end : tokenizer.getPos(end), + // @ts-expect-error allow late attachment + source: end == null ? end : getSlice(start, end) + }; +} +function setLocEnd(loc, end) { + loc.end = tokenizer.getPos(end); + loc.source = getSlice(loc.start.offset, end); +} +function dirToAttr(dir) { + const attr = { + type: 6, + name: dir.rawName, + nameLoc: getLoc( + dir.loc.start.offset, + dir.loc.start.offset + dir.rawName.length + ), + value: void 0, + loc: dir.loc + }; + if (dir.exp) { + const loc = dir.exp.loc; + if (loc.end.offset < dir.loc.end.offset) { + loc.start.offset--; + loc.start.column--; + loc.end.offset++; + loc.end.column++; + } + attr.value = { + type: 2, + content: dir.exp.content, + loc + }; + } + return attr; +} +function createExp(content, isStatic = false, loc, constType = 0, parseMode = 0 /* Normal */) { + const exp = createSimpleExpression(content, isStatic, loc, constType); + if (!isStatic && currentOptions.prefixIdentifiers && parseMode !== 3 /* Skip */ && content.trim()) { + if (isSimpleIdentifier(content)) { + exp.ast = null; + return exp; + } + try { + const plugins = currentOptions.expressionPlugins; + const options = { + plugins: plugins ? [...plugins, "typescript"] : ["typescript"] + }; + if (parseMode === 2 /* Statements */) { + exp.ast = parser.parse(` ${content} `, options).program; + } else if (parseMode === 1 /* Params */) { + exp.ast = parser.parseExpression(`(${content})=>{}`, options); + } else { + exp.ast = parser.parseExpression(`(${content})`, options); + } + } catch (e) { + exp.ast = false; + emitError(45, loc.start.offset, e.message); + } + } + return exp; +} +function emitError(code, index, message) { + currentOptions.onError( + createCompilerError(code, getLoc(index, index), void 0, message) + ); +} +function reset() { + tokenizer.reset(); + currentOpenTag = null; + currentProp = null; + currentAttrValue = ""; + currentAttrStartIndex = -1; + currentAttrEndIndex = -1; + stack.length = 0; +} +function baseParse(input, options) { + reset(); + currentInput = input; + currentOptions = shared$2.extend({}, defaultParserOptions); + if (options) { + let key; + for (key in options) { + if (options[key] != null) { + currentOptions[key] = options[key]; + } + } + } + { + if (currentOptions.decodeEntities) { + console.warn( + `[@vue/compiler-core] decodeEntities option is passed but will be ignored in non-browser builds.` + ); + } + } + tokenizer.mode = currentOptions.parseMode === "html" ? 1 : currentOptions.parseMode === "sfc" ? 2 : 0; + tokenizer.inXML = currentOptions.ns === 1 || currentOptions.ns === 2; + const delimiters = options == null ? void 0 : options.delimiters; + if (delimiters) { + tokenizer.delimiterOpen = toCharCodes(delimiters[0]); + tokenizer.delimiterClose = toCharCodes(delimiters[1]); + } + const root = currentRoot = createRoot([], input); + tokenizer.parse(currentInput); + root.loc = getLoc(0, input.length); + root.children = condenseWhitespace(root.children); + currentRoot = null; + return root; +} + +function hoistStatic(root, context) { + walk$1( + root, + context, + // Root node is unfortunately non-hoistable due to potential parent + // fallthrough attributes. + isSingleElementRoot(root, root.children[0]) + ); +} +function isSingleElementRoot(root, child) { + const { children } = root; + return children.length === 1 && child.type === 1 && !isSlotOutlet(child); +} +function walk$1(node, context, doNotHoistNode = false) { + const { children } = node; + const originalCount = children.length; + let hoistedCount = 0; + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (child.type === 1 && child.tagType === 0) { + const constantType = doNotHoistNode ? 0 : getConstantType(child, context); + if (constantType > 0) { + if (constantType >= 2) { + child.codegenNode.patchFlag = -1 + (` /* HOISTED */` ); + child.codegenNode = context.hoist(child.codegenNode); + hoistedCount++; + continue; + } + } else { + const codegenNode = child.codegenNode; + if (codegenNode.type === 13) { + const flag = getPatchFlag(codegenNode); + if ((!flag || flag === 512 || flag === 1) && getGeneratedPropsConstantType(child, context) >= 2) { + const props = getNodeProps(child); + if (props) { + codegenNode.props = context.hoist(props); + } + } + if (codegenNode.dynamicProps) { + codegenNode.dynamicProps = context.hoist(codegenNode.dynamicProps); + } + } + } + } + if (child.type === 1) { + const isComponent = child.tagType === 1; + if (isComponent) { + context.scopes.vSlot++; + } + walk$1(child, context); + if (isComponent) { + context.scopes.vSlot--; + } + } else if (child.type === 11) { + walk$1(child, context, child.children.length === 1); + } else if (child.type === 9) { + for (let i2 = 0; i2 < child.branches.length; i2++) { + walk$1( + child.branches[i2], + context, + child.branches[i2].children.length === 1 + ); + } + } + } + if (hoistedCount && context.transformHoist) { + context.transformHoist(children, context, node); + } + if (hoistedCount && hoistedCount === originalCount && node.type === 1 && node.tagType === 0 && node.codegenNode && node.codegenNode.type === 13 && shared$2.isArray(node.codegenNode.children)) { + const hoisted = context.hoist( + createArrayExpression(node.codegenNode.children) + ); + if (context.hmr) { + hoisted.content = `[...${hoisted.content}]`; + } + node.codegenNode.children = hoisted; + } +} +function getConstantType(node, context) { + const { constantCache } = context; + switch (node.type) { + case 1: + if (node.tagType !== 0) { + return 0; + } + const cached = constantCache.get(node); + if (cached !== void 0) { + return cached; + } + const codegenNode = node.codegenNode; + if (codegenNode.type !== 13) { + return 0; + } + if (codegenNode.isBlock && node.tag !== "svg" && node.tag !== "foreignObject") { + return 0; + } + const flag = getPatchFlag(codegenNode); + if (!flag) { + let returnType2 = 3; + const generatedPropsType = getGeneratedPropsConstantType(node, context); + if (generatedPropsType === 0) { + constantCache.set(node, 0); + return 0; + } + if (generatedPropsType < returnType2) { + returnType2 = generatedPropsType; + } + for (let i = 0; i < node.children.length; i++) { + const childType = getConstantType(node.children[i], context); + if (childType === 0) { + constantCache.set(node, 0); + return 0; + } + if (childType < returnType2) { + returnType2 = childType; + } + } + if (returnType2 > 1) { + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 7 && p.name === "bind" && p.exp) { + const expType = getConstantType(p.exp, context); + if (expType === 0) { + constantCache.set(node, 0); + return 0; + } + if (expType < returnType2) { + returnType2 = expType; + } + } + } + } + if (codegenNode.isBlock) { + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 7) { + constantCache.set(node, 0); + return 0; + } + } + context.removeHelper(OPEN_BLOCK); + context.removeHelper( + getVNodeBlockHelper(context.inSSR, codegenNode.isComponent) + ); + codegenNode.isBlock = false; + context.helper(getVNodeHelper(context.inSSR, codegenNode.isComponent)); + } + constantCache.set(node, returnType2); + return returnType2; + } else { + constantCache.set(node, 0); + return 0; + } + case 2: + case 3: + return 3; + case 9: + case 11: + case 10: + return 0; + case 5: + case 12: + return getConstantType(node.content, context); + case 4: + return node.constType; + case 8: + let returnType = 3; + for (let i = 0; i < node.children.length; i++) { + const child = node.children[i]; + if (shared$2.isString(child) || shared$2.isSymbol(child)) { + continue; + } + const childType = getConstantType(child, context); + if (childType === 0) { + return 0; + } else if (childType < returnType) { + returnType = childType; + } + } + return returnType; + default: + return 0; + } +} +const allowHoistedHelperSet = /* @__PURE__ */ new Set([ + NORMALIZE_CLASS, + NORMALIZE_STYLE, + NORMALIZE_PROPS, + GUARD_REACTIVE_PROPS +]); +function getConstantTypeOfHelperCall(value, context) { + if (value.type === 14 && !shared$2.isString(value.callee) && allowHoistedHelperSet.has(value.callee)) { + const arg = value.arguments[0]; + if (arg.type === 4) { + return getConstantType(arg, context); + } else if (arg.type === 14) { + return getConstantTypeOfHelperCall(arg, context); + } + } + return 0; +} +function getGeneratedPropsConstantType(node, context) { + let returnType = 3; + const props = getNodeProps(node); + if (props && props.type === 15) { + const { properties } = props; + for (let i = 0; i < properties.length; i++) { + const { key, value } = properties[i]; + const keyType = getConstantType(key, context); + if (keyType === 0) { + return keyType; + } + if (keyType < returnType) { + returnType = keyType; + } + let valueType; + if (value.type === 4) { + valueType = getConstantType(value, context); + } else if (value.type === 14) { + valueType = getConstantTypeOfHelperCall(value, context); + } else { + valueType = 0; + } + if (valueType === 0) { + return valueType; + } + if (valueType < returnType) { + returnType = valueType; + } + } + } + return returnType; +} +function getNodeProps(node) { + const codegenNode = node.codegenNode; + if (codegenNode.type === 13) { + return codegenNode.props; + } +} +function getPatchFlag(node) { + const flag = node.patchFlag; + return flag ? parseInt(flag, 10) : void 0; +} + +function createTransformContext(root, { + filename = "", + prefixIdentifiers = false, + hoistStatic: hoistStatic2 = false, + hmr = false, + cacheHandlers = false, + nodeTransforms = [], + directiveTransforms = {}, + transformHoist = null, + isBuiltInComponent = shared$2.NOOP, + isCustomElement = shared$2.NOOP, + expressionPlugins = [], + scopeId = null, + slotted = true, + ssr = false, + inSSR = false, + ssrCssVars = ``, + bindingMetadata = shared$2.EMPTY_OBJ, + inline = false, + isTS = false, + onError = defaultOnError, + onWarn = defaultOnWarn, + compatConfig +}) { + const nameMatch = filename.replace(/\?.*$/, "").match(/([^/\\]+)\.\w+$/); + const context = { + // options + filename, + selfName: nameMatch && shared$2.capitalize(shared$2.camelize(nameMatch[1])), + prefixIdentifiers, + hoistStatic: hoistStatic2, + hmr, + cacheHandlers, + nodeTransforms, + directiveTransforms, + transformHoist, + isBuiltInComponent, + isCustomElement, + expressionPlugins, + scopeId, + slotted, + ssr, + inSSR, + ssrCssVars, + bindingMetadata, + inline, + isTS, + onError, + onWarn, + compatConfig, + // state + root, + helpers: /* @__PURE__ */ new Map(), + components: /* @__PURE__ */ new Set(), + directives: /* @__PURE__ */ new Set(), + hoists: [], + imports: [], + constantCache: /* @__PURE__ */ new WeakMap(), + temps: 0, + cached: 0, + identifiers: /* @__PURE__ */ Object.create(null), + scopes: { + vFor: 0, + vSlot: 0, + vPre: 0, + vOnce: 0 + }, + parent: null, + currentNode: root, + childIndex: 0, + inVOnce: false, + // methods + helper(name) { + const count = context.helpers.get(name) || 0; + context.helpers.set(name, count + 1); + return name; + }, + removeHelper(name) { + const count = context.helpers.get(name); + if (count) { + const currentCount = count - 1; + if (!currentCount) { + context.helpers.delete(name); + } else { + context.helpers.set(name, currentCount); + } + } + }, + helperString(name) { + return `_${helperNameMap[context.helper(name)]}`; + }, + replaceNode(node) { + { + if (!context.currentNode) { + throw new Error(`Node being replaced is already removed.`); + } + if (!context.parent) { + throw new Error(`Cannot replace root node.`); + } + } + context.parent.children[context.childIndex] = context.currentNode = node; + }, + removeNode(node) { + if (!context.parent) { + throw new Error(`Cannot remove root node.`); + } + const list = context.parent.children; + const removalIndex = node ? list.indexOf(node) : context.currentNode ? context.childIndex : -1; + if (removalIndex < 0) { + throw new Error(`node being removed is not a child of current parent`); + } + if (!node || node === context.currentNode) { + context.currentNode = null; + context.onNodeRemoved(); + } else { + if (context.childIndex > removalIndex) { + context.childIndex--; + context.onNodeRemoved(); + } + } + context.parent.children.splice(removalIndex, 1); + }, + onNodeRemoved: () => { + }, + addIdentifiers(exp) { + { + if (shared$2.isString(exp)) { + addId(exp); + } else if (exp.identifiers) { + exp.identifiers.forEach(addId); + } else if (exp.type === 4) { + addId(exp.content); + } + } + }, + removeIdentifiers(exp) { + { + if (shared$2.isString(exp)) { + removeId(exp); + } else if (exp.identifiers) { + exp.identifiers.forEach(removeId); + } else if (exp.type === 4) { + removeId(exp.content); + } + } + }, + hoist(exp) { + if (shared$2.isString(exp)) + exp = createSimpleExpression(exp); + context.hoists.push(exp); + const identifier = createSimpleExpression( + `_hoisted_${context.hoists.length}`, + false, + exp.loc, + 2 + ); + identifier.hoisted = exp; + return identifier; + }, + cache(exp, isVNode = false) { + return createCacheExpression(context.cached++, exp, isVNode); + } + }; + { + context.filters = /* @__PURE__ */ new Set(); + } + function addId(id) { + const { identifiers } = context; + if (identifiers[id] === void 0) { + identifiers[id] = 0; + } + identifiers[id]++; + } + function removeId(id) { + context.identifiers[id]--; + } + return context; +} +function transform$1(root, options) { + const context = createTransformContext(root, options); + traverseNode(root, context); + if (options.hoistStatic) { + hoistStatic(root, context); + } + if (!options.ssr) { + createRootCodegen(root, context); + } + root.helpers = /* @__PURE__ */ new Set([...context.helpers.keys()]); + root.components = [...context.components]; + root.directives = [...context.directives]; + root.imports = context.imports; + root.hoists = context.hoists; + root.temps = context.temps; + root.cached = context.cached; + root.transformed = true; + { + root.filters = [...context.filters]; + } +} +function createRootCodegen(root, context) { + const { helper } = context; + const { children } = root; + if (children.length === 1) { + const child = children[0]; + if (isSingleElementRoot(root, child) && child.codegenNode) { + const codegenNode = child.codegenNode; + if (codegenNode.type === 13) { + convertToBlock(codegenNode, context); + } + root.codegenNode = codegenNode; + } else { + root.codegenNode = child; + } + } else if (children.length > 1) { + let patchFlag = 64; + let patchFlagText = shared$2.PatchFlagNames[64]; + if (children.filter((c) => c.type !== 3).length === 1) { + patchFlag |= 2048; + patchFlagText += `, ${shared$2.PatchFlagNames[2048]}`; + } + root.codegenNode = createVNodeCall( + context, + helper(FRAGMENT), + void 0, + root.children, + patchFlag + (` /* ${patchFlagText} */` ), + void 0, + void 0, + true, + void 0, + false + ); + } else ; +} +function traverseChildren(parent, context) { + let i = 0; + const nodeRemoved = () => { + i--; + }; + for (; i < parent.children.length; i++) { + const child = parent.children[i]; + if (shared$2.isString(child)) + continue; + context.parent = parent; + context.childIndex = i; + context.onNodeRemoved = nodeRemoved; + traverseNode(child, context); + } +} +function traverseNode(node, context) { + context.currentNode = node; + const { nodeTransforms } = context; + const exitFns = []; + for (let i2 = 0; i2 < nodeTransforms.length; i2++) { + const onExit = nodeTransforms[i2](node, context); + if (onExit) { + if (shared$2.isArray(onExit)) { + exitFns.push(...onExit); + } else { + exitFns.push(onExit); + } + } + if (!context.currentNode) { + return; + } else { + node = context.currentNode; + } + } + switch (node.type) { + case 3: + if (!context.ssr) { + context.helper(CREATE_COMMENT); + } + break; + case 5: + if (!context.ssr) { + context.helper(TO_DISPLAY_STRING); + } + break; + case 9: + for (let i2 = 0; i2 < node.branches.length; i2++) { + traverseNode(node.branches[i2], context); + } + break; + case 10: + case 11: + case 1: + case 0: + traverseChildren(node, context); + break; + } + context.currentNode = node; + let i = exitFns.length; + while (i--) { + exitFns[i](); + } +} +function createStructuralDirectiveTransform(name, fn) { + const matches = shared$2.isString(name) ? (n) => n === name : (n) => name.test(n); + return (node, context) => { + if (node.type === 1) { + const { props } = node; + if (node.tagType === 3 && props.some(isVSlot)) { + return; + } + const exitFns = []; + for (let i = 0; i < props.length; i++) { + const prop = props[i]; + if (prop.type === 7 && matches(prop.name)) { + props.splice(i, 1); + i--; + const onExit = fn(node, prop, context); + if (onExit) + exitFns.push(onExit); + } + } + return exitFns; + } + }; +} + +const PURE_ANNOTATION = `/*#__PURE__*/`; +const aliasHelper = (s) => `${helperNameMap[s]}: _${helperNameMap[s]}`; +function createCodegenContext(ast, { + mode = "function", + prefixIdentifiers = mode === "module", + sourceMap = false, + filename = `template.vue.html`, + scopeId = null, + optimizeImports = false, + runtimeGlobalName = `Vue`, + runtimeModuleName = `vue`, + ssrRuntimeModuleName = "vue/server-renderer", + ssr = false, + isTS = false, + inSSR = false +}) { + const context = { + mode, + prefixIdentifiers, + sourceMap, + filename, + scopeId, + optimizeImports, + runtimeGlobalName, + runtimeModuleName, + ssrRuntimeModuleName, + ssr, + isTS, + inSSR, + source: ast.source, + code: ``, + column: 1, + line: 1, + offset: 0, + indentLevel: 0, + pure: false, + map: void 0, + helper(key) { + return `_${helperNameMap[key]}`; + }, + push(code, newlineIndex = -2 /* None */, node) { + context.code += code; + if (context.map) { + if (node) { + let name; + if (node.type === 4 && !node.isStatic) { + const content = node.content.replace(/^_ctx\./, ""); + if (content !== node.content && isSimpleIdentifier(content)) { + name = content; + } + } + addMapping(node.loc.start, name); + } + if (newlineIndex === -3 /* Unknown */) { + advancePositionWithMutation(context, code); + } else { + context.offset += code.length; + if (newlineIndex === -2 /* None */) { + context.column += code.length; + } else { + if (newlineIndex === -1 /* End */) { + newlineIndex = code.length - 1; + } + context.line++; + context.column = code.length - newlineIndex; + } + } + if (node && node.loc !== locStub) { + addMapping(node.loc.end); + } + } + }, + indent() { + newline(++context.indentLevel); + }, + deindent(withoutNewLine = false) { + if (withoutNewLine) { + --context.indentLevel; + } else { + newline(--context.indentLevel); + } + }, + newline() { + newline(context.indentLevel); + } + }; + function newline(n) { + context.push("\n" + ` `.repeat(n), 0 /* Start */); + } + function addMapping(loc, name = null) { + const { _names, _mappings } = context.map; + if (name !== null && !_names.has(name)) + _names.add(name); + _mappings.add({ + originalLine: loc.line, + originalColumn: loc.column - 1, + // source-map column is 0 based + generatedLine: context.line, + generatedColumn: context.column - 1, + source: filename, + // @ts-expect-error it is possible to be null + name + }); + } + if (sourceMap) { + context.map = new sourceMapJs.SourceMapGenerator(); + context.map.setSourceContent(filename, context.source); + context.map._sources.add(filename); + } + return context; +} +function generate$4(ast, options = {}) { + const context = createCodegenContext(ast, options); + if (options.onContextCreated) + options.onContextCreated(context); + const { + mode, + push, + prefixIdentifiers, + indent, + deindent, + newline, + scopeId, + ssr + } = context; + const helpers = Array.from(ast.helpers); + const hasHelpers = helpers.length > 0; + const useWithBlock = !prefixIdentifiers && mode !== "module"; + const genScopeId = scopeId != null && mode === "module"; + const isSetupInlined = !!options.inline; + const preambleContext = isSetupInlined ? createCodegenContext(ast, options) : context; + if (mode === "module") { + genModulePreamble(ast, preambleContext, genScopeId, isSetupInlined); + } else { + genFunctionPreamble(ast, preambleContext); + } + const functionName = ssr ? `ssrRender` : `render`; + const args = ssr ? ["_ctx", "_push", "_parent", "_attrs"] : ["_ctx", "_cache"]; + if (options.bindingMetadata && !options.inline) { + args.push("$props", "$setup", "$data", "$options"); + } + const signature = options.isTS ? args.map((arg) => `${arg}: any`).join(",") : args.join(", "); + if (isSetupInlined) { + push(`(${signature}) => {`); + } else { + push(`function ${functionName}(${signature}) {`); + } + indent(); + if (useWithBlock) { + push(`with (_ctx) {`); + indent(); + if (hasHelpers) { + push( + `const { ${helpers.map(aliasHelper).join(", ")} } = _Vue +`, + -1 /* End */ + ); + newline(); + } + } + if (ast.components.length) { + genAssets(ast.components, "component", context); + if (ast.directives.length || ast.temps > 0) { + newline(); + } + } + if (ast.directives.length) { + genAssets(ast.directives, "directive", context); + if (ast.temps > 0) { + newline(); + } + } + if (ast.filters && ast.filters.length) { + newline(); + genAssets(ast.filters, "filter", context); + newline(); + } + if (ast.temps > 0) { + push(`let `); + for (let i = 0; i < ast.temps; i++) { + push(`${i > 0 ? `, ` : ``}_temp${i}`); + } + } + if (ast.components.length || ast.directives.length || ast.temps) { + push(` +`, 0 /* Start */); + newline(); + } + if (!ssr) { + push(`return `); + } + if (ast.codegenNode) { + genNode$1(ast.codegenNode, context); + } else { + push(`null`); + } + if (useWithBlock) { + deindent(); + push(`}`); + } + deindent(); + push(`}`); + return { + ast, + code: context.code, + preamble: isSetupInlined ? preambleContext.code : ``, + map: context.map ? context.map.toJSON() : void 0 + }; +} +function genFunctionPreamble(ast, context) { + const { + ssr, + prefixIdentifiers, + push, + newline, + runtimeModuleName, + runtimeGlobalName, + ssrRuntimeModuleName + } = context; + const VueBinding = ssr ? `require(${JSON.stringify(runtimeModuleName)})` : runtimeGlobalName; + const helpers = Array.from(ast.helpers); + if (helpers.length > 0) { + if (prefixIdentifiers) { + push( + `const { ${helpers.map(aliasHelper).join(", ")} } = ${VueBinding} +`, + -1 /* End */ + ); + } else { + push(`const _Vue = ${VueBinding} +`, -1 /* End */); + if (ast.hoists.length) { + const staticHelpers = [ + CREATE_VNODE, + CREATE_ELEMENT_VNODE, + CREATE_COMMENT, + CREATE_TEXT, + CREATE_STATIC + ].filter((helper) => helpers.includes(helper)).map(aliasHelper).join(", "); + push(`const { ${staticHelpers} } = _Vue +`, -1 /* End */); + } + } + } + if (ast.ssrHelpers && ast.ssrHelpers.length) { + push( + `const { ${ast.ssrHelpers.map(aliasHelper).join(", ")} } = require("${ssrRuntimeModuleName}") +`, + -1 /* End */ + ); + } + genHoists(ast.hoists, context); + newline(); + push(`return `); +} +function genModulePreamble(ast, context, genScopeId, inline) { + const { + push, + newline, + optimizeImports, + runtimeModuleName, + ssrRuntimeModuleName + } = context; + if (genScopeId && ast.hoists.length) { + ast.helpers.add(PUSH_SCOPE_ID); + ast.helpers.add(POP_SCOPE_ID); + } + if (ast.helpers.size) { + const helpers = Array.from(ast.helpers); + if (optimizeImports) { + push( + `import { ${helpers.map((s) => helperNameMap[s]).join(", ")} } from ${JSON.stringify(runtimeModuleName)} +`, + -1 /* End */ + ); + push( + ` +// Binding optimization for webpack code-split +const ${helpers.map((s) => `_${helperNameMap[s]} = ${helperNameMap[s]}`).join(", ")} +`, + -1 /* End */ + ); + } else { + push( + `import { ${helpers.map((s) => `${helperNameMap[s]} as _${helperNameMap[s]}`).join(", ")} } from ${JSON.stringify(runtimeModuleName)} +`, + -1 /* End */ + ); + } + } + if (ast.ssrHelpers && ast.ssrHelpers.length) { + push( + `import { ${ast.ssrHelpers.map((s) => `${helperNameMap[s]} as _${helperNameMap[s]}`).join(", ")} } from "${ssrRuntimeModuleName}" +`, + -1 /* End */ + ); + } + if (ast.imports.length) { + genImports(ast.imports, context); + newline(); + } + genHoists(ast.hoists, context); + newline(); + if (!inline) { + push(`export `); + } +} +function genAssets(assets, type, { helper, push, newline, isTS }) { + const resolver = helper( + type === "filter" ? RESOLVE_FILTER : type === "component" ? RESOLVE_COMPONENT : RESOLVE_DIRECTIVE + ); + for (let i = 0; i < assets.length; i++) { + let id = assets[i]; + const maybeSelfReference = id.endsWith("__self"); + if (maybeSelfReference) { + id = id.slice(0, -6); + } + push( + `const ${toValidAssetId(id, type)} = ${resolver}(${JSON.stringify(id)}${maybeSelfReference ? `, true` : ``})${isTS ? `!` : ``}` + ); + if (i < assets.length - 1) { + newline(); + } + } +} +function genHoists(hoists, context) { + if (!hoists.length) { + return; + } + context.pure = true; + const { push, newline, helper, scopeId, mode } = context; + const genScopeId = scopeId != null && mode !== "function"; + newline(); + if (genScopeId) { + push( + `const _withScopeId = n => (${helper( + PUSH_SCOPE_ID + )}("${scopeId}"),n=n(),${helper(POP_SCOPE_ID)}(),n)` + ); + newline(); + } + for (let i = 0; i < hoists.length; i++) { + const exp = hoists[i]; + if (exp) { + const needScopeIdWrapper = genScopeId && exp.type === 13; + push( + `const _hoisted_${i + 1} = ${needScopeIdWrapper ? `${PURE_ANNOTATION} _withScopeId(() => ` : ``}` + ); + genNode$1(exp, context); + if (needScopeIdWrapper) { + push(`)`); + } + newline(); + } + } + context.pure = false; +} +function genImports(importsOptions, context) { + if (!importsOptions.length) { + return; + } + importsOptions.forEach((imports) => { + context.push(`import `); + genNode$1(imports.exp, context); + context.push(` from '${imports.path}'`); + context.newline(); + }); +} +function isText(n) { + return shared$2.isString(n) || n.type === 4 || n.type === 2 || n.type === 5 || n.type === 8; +} +function genNodeListAsArray(nodes, context) { + const multilines = nodes.length > 3 || nodes.some((n) => shared$2.isArray(n) || !isText(n)); + context.push(`[`); + multilines && context.indent(); + genNodeList(nodes, context, multilines); + multilines && context.deindent(); + context.push(`]`); +} +function genNodeList(nodes, context, multilines = false, comma = true) { + const { push, newline } = context; + for (let i = 0; i < nodes.length; i++) { + const node = nodes[i]; + if (shared$2.isString(node)) { + push(node, -3 /* Unknown */); + } else if (shared$2.isArray(node)) { + genNodeListAsArray(node, context); + } else { + genNode$1(node, context); + } + if (i < nodes.length - 1) { + if (multilines) { + comma && push(","); + newline(); + } else { + comma && push(", "); + } + } + } +} +function genNode$1(node, context) { + if (shared$2.isString(node)) { + context.push(node, -3 /* Unknown */); + return; + } + if (shared$2.isSymbol(node)) { + context.push(context.helper(node)); + return; + } + switch (node.type) { + case 1: + case 9: + case 11: + assert( + node.codegenNode != null, + `Codegen node is missing for element/if/for node. Apply appropriate transforms first.` + ); + genNode$1(node.codegenNode, context); + break; + case 2: + genText$1(node, context); + break; + case 4: + genExpression(node, context); + break; + case 5: + genInterpolation(node, context); + break; + case 12: + genNode$1(node.codegenNode, context); + break; + case 8: + genCompoundExpression(node, context); + break; + case 3: + genComment$1(node, context); + break; + case 13: + genVNodeCall(node, context); + break; + case 14: + genCallExpression(node, context); + break; + case 15: + genObjectExpression(node, context); + break; + case 17: + genArrayExpression(node, context); + break; + case 18: + genFunctionExpression(node, context); + break; + case 19: + genConditionalExpression(node, context); + break; + case 20: + genCacheExpression(node, context); + break; + case 21: + genNodeList(node.body, context, true, false); + break; + case 22: + genTemplateLiteral(node, context); + break; + case 23: + genIfStatement(node, context); + break; + case 24: + genAssignmentExpression(node, context); + break; + case 25: + genSequenceExpression(node, context); + break; + case 26: + genReturnStatement(node, context); + break; + case 10: + break; + default: + { + assert(false, `unhandled codegen node type: ${node.type}`); + const exhaustiveCheck = node; + return exhaustiveCheck; + } + } +} +function genText$1(node, context) { + context.push(JSON.stringify(node.content), -3 /* Unknown */, node); +} +function genExpression(node, context) { + const { content, isStatic } = node; + context.push( + isStatic ? JSON.stringify(content) : content, + -3 /* Unknown */, + node + ); +} +function genInterpolation(node, context) { + const { push, helper, pure } = context; + if (pure) + push(PURE_ANNOTATION); + push(`${helper(TO_DISPLAY_STRING)}(`); + genNode$1(node.content, context); + push(`)`); +} +function genCompoundExpression(node, context) { + for (let i = 0; i < node.children.length; i++) { + const child = node.children[i]; + if (shared$2.isString(child)) { + context.push(child, -3 /* Unknown */); + } else { + genNode$1(child, context); + } + } +} +function genExpressionAsPropertyKey(node, context) { + const { push } = context; + if (node.type === 8) { + push(`[`); + genCompoundExpression(node, context); + push(`]`); + } else if (node.isStatic) { + const text = isSimpleIdentifier(node.content) ? node.content : JSON.stringify(node.content); + push(text, -2 /* None */, node); + } else { + push(`[${node.content}]`, -3 /* Unknown */, node); + } +} +function genComment$1(node, context) { + const { push, helper, pure } = context; + if (pure) { + push(PURE_ANNOTATION); + } + push( + `${helper(CREATE_COMMENT)}(${JSON.stringify(node.content)})`, + -3 /* Unknown */, + node + ); +} +function genVNodeCall(node, context) { + const { push, helper, pure } = context; + const { + tag, + props, + children, + patchFlag, + dynamicProps, + directives, + isBlock, + disableTracking, + isComponent + } = node; + if (directives) { + push(helper(WITH_DIRECTIVES) + `(`); + } + if (isBlock) { + push(`(${helper(OPEN_BLOCK)}(${disableTracking ? `true` : ``}), `); + } + if (pure) { + push(PURE_ANNOTATION); + } + const callHelper = isBlock ? getVNodeBlockHelper(context.inSSR, isComponent) : getVNodeHelper(context.inSSR, isComponent); + push(helper(callHelper) + `(`, -2 /* None */, node); + genNodeList( + genNullableArgs([tag, props, children, patchFlag, dynamicProps]), + context + ); + push(`)`); + if (isBlock) { + push(`)`); + } + if (directives) { + push(`, `); + genNode$1(directives, context); + push(`)`); + } +} +function genNullableArgs(args) { + let i = args.length; + while (i--) { + if (args[i] != null) + break; + } + return args.slice(0, i + 1).map((arg) => arg || `null`); +} +function genCallExpression(node, context) { + const { push, helper, pure } = context; + const callee = shared$2.isString(node.callee) ? node.callee : helper(node.callee); + if (pure) { + push(PURE_ANNOTATION); + } + push(callee + `(`, -2 /* None */, node); + genNodeList(node.arguments, context); + push(`)`); +} +function genObjectExpression(node, context) { + const { push, indent, deindent, newline } = context; + const { properties } = node; + if (!properties.length) { + push(`{}`, -2 /* None */, node); + return; + } + const multilines = properties.length > 1 || properties.some((p) => p.value.type !== 4); + push(multilines ? `{` : `{ `); + multilines && indent(); + for (let i = 0; i < properties.length; i++) { + const { key, value } = properties[i]; + genExpressionAsPropertyKey(key, context); + push(`: `); + genNode$1(value, context); + if (i < properties.length - 1) { + push(`,`); + newline(); + } + } + multilines && deindent(); + push(multilines ? `}` : ` }`); +} +function genArrayExpression(node, context) { + genNodeListAsArray(node.elements, context); +} +function genFunctionExpression(node, context) { + const { push, indent, deindent } = context; + const { params, returns, body, newline, isSlot } = node; + if (isSlot) { + push(`_${helperNameMap[WITH_CTX]}(`); + } + push(`(`, -2 /* None */, node); + if (shared$2.isArray(params)) { + genNodeList(params, context); + } else if (params) { + genNode$1(params, context); + } + push(`) => `); + if (newline || body) { + push(`{`); + indent(); + } + if (returns) { + if (newline) { + push(`return `); + } + if (shared$2.isArray(returns)) { + genNodeListAsArray(returns, context); + } else { + genNode$1(returns, context); + } + } else if (body) { + genNode$1(body, context); + } + if (newline || body) { + deindent(); + push(`}`); + } + if (isSlot) { + if (node.isNonScopedSlot) { + push(`, undefined, true`); + } + push(`)`); + } +} +function genConditionalExpression(node, context) { + const { test, consequent, alternate, newline: needNewline } = node; + const { push, indent, deindent, newline } = context; + if (test.type === 4) { + const needsParens = !isSimpleIdentifier(test.content); + needsParens && push(`(`); + genExpression(test, context); + needsParens && push(`)`); + } else { + push(`(`); + genNode$1(test, context); + push(`)`); + } + needNewline && indent(); + context.indentLevel++; + needNewline || push(` `); + push(`? `); + genNode$1(consequent, context); + context.indentLevel--; + needNewline && newline(); + needNewline || push(` `); + push(`: `); + const isNested = alternate.type === 19; + if (!isNested) { + context.indentLevel++; + } + genNode$1(alternate, context); + if (!isNested) { + context.indentLevel--; + } + needNewline && deindent( + true + /* without newline */ + ); +} +function genCacheExpression(node, context) { + const { push, helper, indent, deindent, newline } = context; + push(`_cache[${node.index}] || (`); + if (node.isVNode) { + indent(); + push(`${helper(SET_BLOCK_TRACKING)}(-1),`); + newline(); + } + push(`_cache[${node.index}] = `); + genNode$1(node.value, context); + if (node.isVNode) { + push(`,`); + newline(); + push(`${helper(SET_BLOCK_TRACKING)}(1),`); + newline(); + push(`_cache[${node.index}]`); + deindent(); + } + push(`)`); +} +function genTemplateLiteral(node, context) { + const { push, indent, deindent } = context; + push("`"); + const l = node.elements.length; + const multilines = l > 3; + for (let i = 0; i < l; i++) { + const e = node.elements[i]; + if (shared$2.isString(e)) { + push(e.replace(/(`|\$|\\)/g, "\\$1"), -3 /* Unknown */); + } else { + push("${"); + if (multilines) + indent(); + genNode$1(e, context); + if (multilines) + deindent(); + push("}"); + } + } + push("`"); +} +function genIfStatement(node, context) { + const { push, indent, deindent } = context; + const { test, consequent, alternate } = node; + push(`if (`); + genNode$1(test, context); + push(`) {`); + indent(); + genNode$1(consequent, context); + deindent(); + push(`}`); + if (alternate) { + push(` else `); + if (alternate.type === 23) { + genIfStatement(alternate, context); + } else { + push(`{`); + indent(); + genNode$1(alternate, context); + deindent(); + push(`}`); + } + } +} +function genAssignmentExpression(node, context) { + genNode$1(node.left, context); + context.push(` = `); + genNode$1(node.right, context); +} +function genSequenceExpression(node, context) { + context.push(`(`); + genNodeList(node.expressions, context); + context.push(`)`); +} +function genReturnStatement({ returns }, context) { + context.push(`return `); + if (shared$2.isArray(returns)) { + genNodeListAsArray(returns, context); + } else { + genNode$1(returns, context); + } +} + +const isLiteralWhitelisted = /* @__PURE__ */ shared$2.makeMap("true,false,null,this"); +const constantBailRE = /\w\s*\(|\.[^\d]/; +const transformExpression = (node, context) => { + if (node.type === 5) { + node.content = processExpression( + node.content, + context + ); + } else if (node.type === 1) { + for (let i = 0; i < node.props.length; i++) { + const dir = node.props[i]; + if (dir.type === 7 && dir.name !== "for") { + const exp = dir.exp; + const arg = dir.arg; + if (exp && exp.type === 4 && !(dir.name === "on" && arg)) { + dir.exp = processExpression( + exp, + context, + // slot args must be processed as function params + dir.name === "slot" + ); + } + if (arg && arg.type === 4 && !arg.isStatic) { + dir.arg = processExpression(arg, context); + } + } + } + } +}; +function processExpression(node, context, asParams = false, asRawStatements = false, localVars = Object.create(context.identifiers)) { + if (!context.prefixIdentifiers || !node.content.trim()) { + return node; + } + const { inline, bindingMetadata } = context; + const rewriteIdentifier = (raw, parent, id) => { + const type = shared$2.hasOwn(bindingMetadata, raw) && bindingMetadata[raw]; + if (inline) { + const isAssignmentLVal = parent && parent.type === "AssignmentExpression" && parent.left === id; + const isUpdateArg = parent && parent.type === "UpdateExpression" && parent.argument === id; + const isDestructureAssignment = parent && isInDestructureAssignment(parent, parentStack); + if (isConst(type) || type === "setup-reactive-const" || localVars[raw]) { + return raw; + } else if (type === "setup-ref") { + return `${raw}.value`; + } else if (type === "setup-maybe-ref") { + return isAssignmentLVal || isUpdateArg || isDestructureAssignment ? `${raw}.value` : `${context.helperString(UNREF)}(${raw})`; + } else if (type === "setup-let") { + if (isAssignmentLVal) { + const { right: rVal, operator } = parent; + const rExp = rawExp.slice(rVal.start - 1, rVal.end - 1); + const rExpString = stringifyExpression( + processExpression( + createSimpleExpression(rExp, false), + context, + false, + false, + knownIds + ) + ); + return `${context.helperString(IS_REF)}(${raw})${context.isTS ? ` //@ts-ignore +` : ``} ? ${raw}.value ${operator} ${rExpString} : ${raw}`; + } else if (isUpdateArg) { + id.start = parent.start; + id.end = parent.end; + const { prefix: isPrefix, operator } = parent; + const prefix = isPrefix ? operator : ``; + const postfix = isPrefix ? `` : operator; + return `${context.helperString(IS_REF)}(${raw})${context.isTS ? ` //@ts-ignore +` : ``} ? ${prefix}${raw}.value${postfix} : ${prefix}${raw}${postfix}`; + } else if (isDestructureAssignment) { + return raw; + } else { + return `${context.helperString(UNREF)}(${raw})`; + } + } else if (type === "props") { + return shared$2.genPropsAccessExp(raw); + } else if (type === "props-aliased") { + return shared$2.genPropsAccessExp(bindingMetadata.__propsAliases[raw]); + } + } else { + if (type && type.startsWith("setup") || type === "literal-const") { + return `$setup.${raw}`; + } else if (type === "props-aliased") { + return `$props['${bindingMetadata.__propsAliases[raw]}']`; + } else if (type) { + return `$${type}.${raw}`; + } + } + return `_ctx.${raw}`; + }; + const rawExp = node.content; + const bailConstant = constantBailRE.test(rawExp); + let ast = node.ast; + if (ast === false) { + return node; + } + if (ast === null || !ast && isSimpleIdentifier(rawExp)) { + const isScopeVarReference = context.identifiers[rawExp]; + const isAllowedGlobal = shared$2.isGloballyAllowed(rawExp); + const isLiteral = isLiteralWhitelisted(rawExp); + if (!asParams && !isScopeVarReference && !isLiteral && (!isAllowedGlobal || bindingMetadata[rawExp])) { + if (isConst(bindingMetadata[rawExp])) { + node.constType = 1; + } + node.content = rewriteIdentifier(rawExp); + } else if (!isScopeVarReference) { + if (isLiteral) { + node.constType = 3; + } else { + node.constType = 2; + } + } + return node; + } + if (!ast) { + const source = asRawStatements ? ` ${rawExp} ` : `(${rawExp})${asParams ? `=>{}` : ``}`; + try { + ast = parser.parse(source, { + plugins: context.expressionPlugins + }).program; + } catch (e) { + context.onError( + createCompilerError( + 45, + node.loc, + void 0, + e.message + ) + ); + return node; + } + } + const ids = []; + const parentStack = []; + const knownIds = Object.create(context.identifiers); + walkIdentifiers$1( + ast, + (node2, parent, _, isReferenced, isLocal) => { + if (isStaticPropertyKey(node2, parent)) { + return; + } + if (node2.name.startsWith("_filter_")) { + return; + } + const needPrefix = isReferenced && canPrefix(node2); + if (needPrefix && !isLocal) { + if (isStaticProperty(parent) && parent.shorthand) { + node2.prefix = `${node2.name}: `; + } + node2.name = rewriteIdentifier(node2.name, parent, node2); + ids.push(node2); + } else { + if (!(needPrefix && isLocal) && !bailConstant) { + node2.isConstant = true; + } + ids.push(node2); + } + }, + true, + // invoke on ALL identifiers + parentStack, + knownIds + ); + const children = []; + ids.sort((a, b) => a.start - b.start); + ids.forEach((id, i) => { + const start = id.start - 1; + const end = id.end - 1; + const last = ids[i - 1]; + const leadingText = rawExp.slice(last ? last.end - 1 : 0, start); + if (leadingText.length || id.prefix) { + children.push(leadingText + (id.prefix || ``)); + } + const source = rawExp.slice(start, end); + children.push( + createSimpleExpression( + id.name, + false, + { + start: advancePositionWithClone(node.loc.start, source, start), + end: advancePositionWithClone(node.loc.start, source, end), + source + }, + id.isConstant ? 3 : 0 + ) + ); + if (i === ids.length - 1 && end < rawExp.length) { + children.push(rawExp.slice(end)); + } + }); + let ret; + if (children.length) { + ret = createCompoundExpression(children, node.loc); + ret.ast = ast; + } else { + ret = node; + ret.constType = bailConstant ? 0 : 3; + } + ret.identifiers = Object.keys(knownIds); + return ret; +} +function canPrefix(id) { + if (shared$2.isGloballyAllowed(id.name)) { + return false; + } + if (id.name === "require") { + return false; + } + return true; +} +function stringifyExpression(exp) { + if (shared$2.isString(exp)) { + return exp; + } else if (exp.type === 4) { + return exp.content; + } else { + return exp.children.map(stringifyExpression).join(""); + } +} +function isConst(type) { + return type === "setup-const" || type === "literal-const"; +} + +const transformIf = createStructuralDirectiveTransform( + /^(if|else|else-if)$/, + (node, dir, context) => { + return processIf$1(node, dir, context, (ifNode, branch, isRoot) => { + const siblings = context.parent.children; + let i = siblings.indexOf(ifNode); + let key = 0; + while (i-- >= 0) { + const sibling = siblings[i]; + if (sibling && sibling.type === 9) { + key += sibling.branches.length; + } + } + return () => { + if (isRoot) { + ifNode.codegenNode = createCodegenNodeForBranch( + branch, + key, + context + ); + } else { + const parentCondition = getParentCondition(ifNode.codegenNode); + parentCondition.alternate = createCodegenNodeForBranch( + branch, + key + ifNode.branches.length - 1, + context + ); + } + }; + }); + } +); +function processIf$1(node, dir, context, processCodegen) { + if (dir.name !== "else" && (!dir.exp || !dir.exp.content.trim())) { + const loc = dir.exp ? dir.exp.loc : node.loc; + context.onError( + createCompilerError(28, dir.loc) + ); + dir.exp = createSimpleExpression(`true`, false, loc); + } + if (context.prefixIdentifiers && dir.exp) { + dir.exp = processExpression(dir.exp, context); + } + if (dir.name === "if") { + const branch = createIfBranch(node, dir); + const ifNode = { + type: 9, + loc: node.loc, + branches: [branch] + }; + context.replaceNode(ifNode); + if (processCodegen) { + return processCodegen(ifNode, branch, true); + } + } else { + const siblings = context.parent.children; + const comments = []; + let i = siblings.indexOf(node); + while (i-- >= -1) { + const sibling = siblings[i]; + if (sibling && sibling.type === 3) { + context.removeNode(sibling); + comments.unshift(sibling); + continue; + } + if (sibling && sibling.type === 2 && !sibling.content.trim().length) { + context.removeNode(sibling); + continue; + } + if (sibling && sibling.type === 9) { + if (dir.name === "else-if" && sibling.branches[sibling.branches.length - 1].condition === void 0) { + context.onError( + createCompilerError(30, node.loc) + ); + } + context.removeNode(); + const branch = createIfBranch(node, dir); + if (comments.length && // #3619 ignore comments if the v-if is direct child of <transition> + !(context.parent && context.parent.type === 1 && (context.parent.tag === "transition" || context.parent.tag === "Transition"))) { + branch.children = [...comments, ...branch.children]; + } + { + const key = branch.userKey; + if (key) { + sibling.branches.forEach(({ userKey }) => { + if (isSameKey(userKey, key)) { + context.onError( + createCompilerError( + 29, + branch.userKey.loc + ) + ); + } + }); + } + } + sibling.branches.push(branch); + const onExit = processCodegen && processCodegen(sibling, branch, false); + traverseNode(branch, context); + if (onExit) + onExit(); + context.currentNode = null; + } else { + context.onError( + createCompilerError(30, node.loc) + ); + } + break; + } + } +} +function createIfBranch(node, dir) { + const isTemplateIf = node.tagType === 3; + return { + type: 10, + loc: node.loc, + condition: dir.name === "else" ? void 0 : dir.exp, + children: isTemplateIf && !findDir(node, "for") ? node.children : [node], + userKey: findProp(node, `key`), + isTemplateIf + }; +} +function createCodegenNodeForBranch(branch, keyIndex, context) { + if (branch.condition) { + return createConditionalExpression( + branch.condition, + createChildrenCodegenNode(branch, keyIndex, context), + // make sure to pass in asBlock: true so that the comment node call + // closes the current block. + createCallExpression(context.helper(CREATE_COMMENT), [ + '"v-if"' , + "true" + ]) + ); + } else { + return createChildrenCodegenNode(branch, keyIndex, context); + } +} +function createChildrenCodegenNode(branch, keyIndex, context) { + const { helper } = context; + const keyProperty = createObjectProperty( + `key`, + createSimpleExpression( + `${keyIndex}`, + false, + locStub, + 2 + ) + ); + const { children } = branch; + const firstChild = children[0]; + const needFragmentWrapper = children.length !== 1 || firstChild.type !== 1; + if (needFragmentWrapper) { + if (children.length === 1 && firstChild.type === 11) { + const vnodeCall = firstChild.codegenNode; + injectProp(vnodeCall, keyProperty, context); + return vnodeCall; + } else { + let patchFlag = 64; + let patchFlagText = shared$2.PatchFlagNames[64]; + if (!branch.isTemplateIf && children.filter((c) => c.type !== 3).length === 1) { + patchFlag |= 2048; + patchFlagText += `, ${shared$2.PatchFlagNames[2048]}`; + } + return createVNodeCall( + context, + helper(FRAGMENT), + createObjectExpression([keyProperty]), + children, + patchFlag + (` /* ${patchFlagText} */` ), + void 0, + void 0, + true, + false, + false, + branch.loc + ); + } + } else { + const ret = firstChild.codegenNode; + const vnodeCall = getMemoedVNodeCall(ret); + if (vnodeCall.type === 13) { + convertToBlock(vnodeCall, context); + } + injectProp(vnodeCall, keyProperty, context); + return ret; + } +} +function isSameKey(a, b) { + if (!a || a.type !== b.type) { + return false; + } + if (a.type === 6) { + if (a.value.content !== b.value.content) { + return false; + } + } else { + const exp = a.exp; + const branchExp = b.exp; + if (exp.type !== branchExp.type) { + return false; + } + if (exp.type !== 4 || exp.isStatic !== branchExp.isStatic || exp.content !== branchExp.content) { + return false; + } + } + return true; +} +function getParentCondition(node) { + while (true) { + if (node.type === 19) { + if (node.alternate.type === 19) { + node = node.alternate; + } else { + return node; + } + } else if (node.type === 20) { + node = node.value; + } + } +} + +const transformFor = createStructuralDirectiveTransform( + "for", + (node, dir, context) => { + const { helper, removeHelper } = context; + return processFor$1(node, dir, context, (forNode) => { + const renderExp = createCallExpression(helper(RENDER_LIST), [ + forNode.source + ]); + const isTemplate = isTemplateNode(node); + const memo = findDir(node, "memo"); + const keyProp = findProp(node, `key`); + const keyExp = keyProp && (keyProp.type === 6 ? createSimpleExpression(keyProp.value.content, true) : keyProp.exp); + const keyProperty = keyProp ? createObjectProperty(`key`, keyExp) : null; + if (isTemplate) { + if (memo) { + memo.exp = processExpression( + memo.exp, + context + ); + } + if (keyProperty && keyProp.type !== 6) { + keyProperty.value = processExpression( + keyProperty.value, + context + ); + } + } + const isStableFragment = forNode.source.type === 4 && forNode.source.constType > 0; + const fragmentFlag = isStableFragment ? 64 : keyProp ? 128 : 256; + forNode.codegenNode = createVNodeCall( + context, + helper(FRAGMENT), + void 0, + renderExp, + fragmentFlag + (` /* ${shared$2.PatchFlagNames[fragmentFlag]} */` ), + void 0, + void 0, + true, + !isStableFragment, + false, + node.loc + ); + return () => { + let childBlock; + const { children } = forNode; + if (isTemplate) { + node.children.some((c) => { + if (c.type === 1) { + const key = findProp(c, "key"); + if (key) { + context.onError( + createCompilerError( + 33, + key.loc + ) + ); + return true; + } + } + }); + } + const needFragmentWrapper = children.length !== 1 || children[0].type !== 1; + const slotOutlet = isSlotOutlet(node) ? node : isTemplate && node.children.length === 1 && isSlotOutlet(node.children[0]) ? node.children[0] : null; + if (slotOutlet) { + childBlock = slotOutlet.codegenNode; + if (isTemplate && keyProperty) { + injectProp(childBlock, keyProperty, context); + } + } else if (needFragmentWrapper) { + childBlock = createVNodeCall( + context, + helper(FRAGMENT), + keyProperty ? createObjectExpression([keyProperty]) : void 0, + node.children, + 64 + (` /* ${shared$2.PatchFlagNames[64]} */` ), + void 0, + void 0, + true, + void 0, + false + ); + } else { + childBlock = children[0].codegenNode; + if (isTemplate && keyProperty) { + injectProp(childBlock, keyProperty, context); + } + if (childBlock.isBlock !== !isStableFragment) { + if (childBlock.isBlock) { + removeHelper(OPEN_BLOCK); + removeHelper( + getVNodeBlockHelper(context.inSSR, childBlock.isComponent) + ); + } else { + removeHelper( + getVNodeHelper(context.inSSR, childBlock.isComponent) + ); + } + } + childBlock.isBlock = !isStableFragment; + if (childBlock.isBlock) { + helper(OPEN_BLOCK); + helper(getVNodeBlockHelper(context.inSSR, childBlock.isComponent)); + } else { + helper(getVNodeHelper(context.inSSR, childBlock.isComponent)); + } + } + if (memo) { + const loop = createFunctionExpression( + createForLoopParams(forNode.parseResult, [ + createSimpleExpression(`_cached`) + ]) + ); + loop.body = createBlockStatement([ + createCompoundExpression([`const _memo = (`, memo.exp, `)`]), + createCompoundExpression([ + `if (_cached`, + ...keyExp ? [` && _cached.key === `, keyExp] : [], + ` && ${context.helperString( + IS_MEMO_SAME + )}(_cached, _memo)) return _cached` + ]), + createCompoundExpression([`const _item = `, childBlock]), + createSimpleExpression(`_item.memo = _memo`), + createSimpleExpression(`return _item`) + ]); + renderExp.arguments.push( + loop, + createSimpleExpression(`_cache`), + createSimpleExpression(String(context.cached++)) + ); + } else { + renderExp.arguments.push( + createFunctionExpression( + createForLoopParams(forNode.parseResult), + childBlock, + true + ) + ); + } + }; + }); + } +); +function processFor$1(node, dir, context, processCodegen) { + if (!dir.exp) { + context.onError( + createCompilerError(31, dir.loc) + ); + return; + } + const parseResult = dir.forParseResult; + if (!parseResult) { + context.onError( + createCompilerError(32, dir.loc) + ); + return; + } + finalizeForParseResult(parseResult, context); + const { addIdentifiers, removeIdentifiers, scopes } = context; + const { source, value, key, index } = parseResult; + const forNode = { + type: 11, + loc: dir.loc, + source, + valueAlias: value, + keyAlias: key, + objectIndexAlias: index, + parseResult, + children: isTemplateNode(node) ? node.children : [node] + }; + context.replaceNode(forNode); + scopes.vFor++; + if (context.prefixIdentifiers) { + value && addIdentifiers(value); + key && addIdentifiers(key); + index && addIdentifiers(index); + } + const onExit = processCodegen && processCodegen(forNode); + return () => { + scopes.vFor--; + if (context.prefixIdentifiers) { + value && removeIdentifiers(value); + key && removeIdentifiers(key); + index && removeIdentifiers(index); + } + if (onExit) + onExit(); + }; +} +function finalizeForParseResult(result, context) { + if (result.finalized) + return; + if (context.prefixIdentifiers) { + result.source = processExpression( + result.source, + context + ); + if (result.key) { + result.key = processExpression( + result.key, + context, + true + ); + } + if (result.index) { + result.index = processExpression( + result.index, + context, + true + ); + } + if (result.value) { + result.value = processExpression( + result.value, + context, + true + ); + } + } + result.finalized = true; +} +function createForLoopParams({ value, key, index }, memoArgs = []) { + return createParamsList([value, key, index, ...memoArgs]); +} +function createParamsList(args) { + let i = args.length; + while (i--) { + if (args[i]) + break; + } + return args.slice(0, i + 1).map((arg, i2) => arg || createSimpleExpression(`_`.repeat(i2 + 1), false)); +} + +const defaultFallback = createSimpleExpression(`undefined`, false); +const trackSlotScopes = (node, context) => { + if (node.type === 1 && (node.tagType === 1 || node.tagType === 3)) { + const vSlot = findDir(node, "slot"); + if (vSlot) { + const slotProps = vSlot.exp; + if (context.prefixIdentifiers) { + slotProps && context.addIdentifiers(slotProps); + } + context.scopes.vSlot++; + return () => { + if (context.prefixIdentifiers) { + slotProps && context.removeIdentifiers(slotProps); + } + context.scopes.vSlot--; + }; + } + } +}; +const trackVForSlotScopes = (node, context) => { + let vFor; + if (isTemplateNode(node) && node.props.some(isVSlot) && (vFor = findDir(node, "for"))) { + const result = vFor.forParseResult; + if (result) { + finalizeForParseResult(result, context); + const { value, key, index } = result; + const { addIdentifiers, removeIdentifiers } = context; + value && addIdentifiers(value); + key && addIdentifiers(key); + index && addIdentifiers(index); + return () => { + value && removeIdentifiers(value); + key && removeIdentifiers(key); + index && removeIdentifiers(index); + }; + } + } +}; +const buildClientSlotFn = (props, _vForExp, children, loc) => createFunctionExpression( + props, + children, + false, + true, + children.length ? children[0].loc : loc +); +function buildSlots(node, context, buildSlotFn = buildClientSlotFn) { + context.helper(WITH_CTX); + const { children, loc } = node; + const slotsProperties = []; + const dynamicSlots = []; + let hasDynamicSlots = context.scopes.vSlot > 0 || context.scopes.vFor > 0; + if (!context.ssr && context.prefixIdentifiers) { + hasDynamicSlots = hasScopeRef(node, context.identifiers); + } + const onComponentSlot = findDir(node, "slot", true); + if (onComponentSlot) { + const { arg, exp } = onComponentSlot; + if (arg && !isStaticExp(arg)) { + hasDynamicSlots = true; + } + slotsProperties.push( + createObjectProperty( + arg || createSimpleExpression("default", true), + buildSlotFn(exp, void 0, children, loc) + ) + ); + } + let hasTemplateSlots = false; + let hasNamedDefaultSlot = false; + const implicitDefaultChildren = []; + const seenSlotNames = /* @__PURE__ */ new Set(); + let conditionalBranchIndex = 0; + for (let i = 0; i < children.length; i++) { + const slotElement = children[i]; + let slotDir; + if (!isTemplateNode(slotElement) || !(slotDir = findDir(slotElement, "slot", true))) { + if (slotElement.type !== 3) { + implicitDefaultChildren.push(slotElement); + } + continue; + } + if (onComponentSlot) { + context.onError( + createCompilerError(37, slotDir.loc) + ); + break; + } + hasTemplateSlots = true; + const { children: slotChildren, loc: slotLoc } = slotElement; + const { + arg: slotName = createSimpleExpression(`default`, true), + exp: slotProps, + loc: dirLoc + } = slotDir; + let staticSlotName; + if (isStaticExp(slotName)) { + staticSlotName = slotName ? slotName.content : `default`; + } else { + hasDynamicSlots = true; + } + const vFor = findDir(slotElement, "for"); + const slotFunction = buildSlotFn(slotProps, vFor, slotChildren, slotLoc); + let vIf; + let vElse; + if (vIf = findDir(slotElement, "if")) { + hasDynamicSlots = true; + dynamicSlots.push( + createConditionalExpression( + vIf.exp, + buildDynamicSlot(slotName, slotFunction, conditionalBranchIndex++), + defaultFallback + ) + ); + } else if (vElse = findDir( + slotElement, + /^else(-if)?$/, + true + /* allowEmpty */ + )) { + let j = i; + let prev; + while (j--) { + prev = children[j]; + if (prev.type !== 3) { + break; + } + } + if (prev && isTemplateNode(prev) && findDir(prev, "if")) { + children.splice(i, 1); + i--; + let conditional = dynamicSlots[dynamicSlots.length - 1]; + while (conditional.alternate.type === 19) { + conditional = conditional.alternate; + } + conditional.alternate = vElse.exp ? createConditionalExpression( + vElse.exp, + buildDynamicSlot( + slotName, + slotFunction, + conditionalBranchIndex++ + ), + defaultFallback + ) : buildDynamicSlot(slotName, slotFunction, conditionalBranchIndex++); + } else { + context.onError( + createCompilerError(30, vElse.loc) + ); + } + } else if (vFor) { + hasDynamicSlots = true; + const parseResult = vFor.forParseResult; + if (parseResult) { + finalizeForParseResult(parseResult, context); + dynamicSlots.push( + createCallExpression(context.helper(RENDER_LIST), [ + parseResult.source, + createFunctionExpression( + createForLoopParams(parseResult), + buildDynamicSlot(slotName, slotFunction), + true + ) + ]) + ); + } else { + context.onError( + createCompilerError( + 32, + vFor.loc + ) + ); + } + } else { + if (staticSlotName) { + if (seenSlotNames.has(staticSlotName)) { + context.onError( + createCompilerError( + 38, + dirLoc + ) + ); + continue; + } + seenSlotNames.add(staticSlotName); + if (staticSlotName === "default") { + hasNamedDefaultSlot = true; + } + } + slotsProperties.push(createObjectProperty(slotName, slotFunction)); + } + } + if (!onComponentSlot) { + const buildDefaultSlotProperty = (props, children2) => { + const fn = buildSlotFn(props, void 0, children2, loc); + if (context.compatConfig) { + fn.isNonScopedSlot = true; + } + return createObjectProperty(`default`, fn); + }; + if (!hasTemplateSlots) { + slotsProperties.push(buildDefaultSlotProperty(void 0, children)); + } else if (implicitDefaultChildren.length && // #3766 + // with whitespace: 'preserve', whitespaces between slots will end up in + // implicitDefaultChildren. Ignore if all implicit children are whitespaces. + implicitDefaultChildren.some((node2) => isNonWhitespaceContent(node2))) { + if (hasNamedDefaultSlot) { + context.onError( + createCompilerError( + 39, + implicitDefaultChildren[0].loc + ) + ); + } else { + slotsProperties.push( + buildDefaultSlotProperty(void 0, implicitDefaultChildren) + ); + } + } + } + const slotFlag = hasDynamicSlots ? 2 : hasForwardedSlots(node.children) ? 3 : 1; + let slots = createObjectExpression( + slotsProperties.concat( + createObjectProperty( + `_`, + // 2 = compiled but dynamic = can skip normalization, but must run diff + // 1 = compiled and static = can skip normalization AND diff as optimized + createSimpleExpression( + slotFlag + (` /* ${shared$2.slotFlagsText[slotFlag]} */` ), + false + ) + ) + ), + loc + ); + if (dynamicSlots.length) { + slots = createCallExpression(context.helper(CREATE_SLOTS), [ + slots, + createArrayExpression(dynamicSlots) + ]); + } + return { + slots, + hasDynamicSlots + }; +} +function buildDynamicSlot(name, fn, index) { + const props = [ + createObjectProperty(`name`, name), + createObjectProperty(`fn`, fn) + ]; + if (index != null) { + props.push( + createObjectProperty(`key`, createSimpleExpression(String(index), true)) + ); + } + return createObjectExpression(props); +} +function hasForwardedSlots(children) { + for (let i = 0; i < children.length; i++) { + const child = children[i]; + switch (child.type) { + case 1: + if (child.tagType === 2 || hasForwardedSlots(child.children)) { + return true; + } + break; + case 9: + if (hasForwardedSlots(child.branches)) + return true; + break; + case 10: + case 11: + if (hasForwardedSlots(child.children)) + return true; + break; + } + } + return false; +} +function isNonWhitespaceContent(node) { + if (node.type !== 2 && node.type !== 12) + return true; + return node.type === 2 ? !!node.content.trim() : isNonWhitespaceContent(node.content); +} + +const directiveImportMap = /* @__PURE__ */ new WeakMap(); +const transformElement = (node, context) => { + return function postTransformElement() { + node = context.currentNode; + if (!(node.type === 1 && (node.tagType === 0 || node.tagType === 1))) { + return; + } + const { tag, props } = node; + const isComponent = node.tagType === 1; + let vnodeTag = isComponent ? resolveComponentType(node, context) : `"${tag}"`; + const isDynamicComponent = shared$2.isObject(vnodeTag) && vnodeTag.callee === RESOLVE_DYNAMIC_COMPONENT; + let vnodeProps; + let vnodeChildren; + let vnodePatchFlag; + let patchFlag = 0; + let vnodeDynamicProps; + let dynamicPropNames; + let vnodeDirectives; + let shouldUseBlock = ( + // dynamic component may resolve to plain elements + isDynamicComponent || vnodeTag === TELEPORT || vnodeTag === SUSPENSE || !isComponent && // <svg> and <foreignObject> must be forced into blocks so that block + // updates inside get proper isSVG flag at runtime. (#639, #643) + // This is technically web-specific, but splitting the logic out of core + // leads to too much unnecessary complexity. + (tag === "svg" || tag === "foreignObject") + ); + if (props.length > 0) { + const propsBuildResult = buildProps( + node, + context, + void 0, + isComponent, + isDynamicComponent + ); + vnodeProps = propsBuildResult.props; + patchFlag = propsBuildResult.patchFlag; + dynamicPropNames = propsBuildResult.dynamicPropNames; + const directives = propsBuildResult.directives; + vnodeDirectives = directives && directives.length ? createArrayExpression( + directives.map((dir) => buildDirectiveArgs(dir, context)) + ) : void 0; + if (propsBuildResult.shouldUseBlock) { + shouldUseBlock = true; + } + } + if (node.children.length > 0) { + if (vnodeTag === KEEP_ALIVE) { + shouldUseBlock = true; + patchFlag |= 1024; + if (node.children.length > 1) { + context.onError( + createCompilerError(46, { + start: node.children[0].loc.start, + end: node.children[node.children.length - 1].loc.end, + source: "" + }) + ); + } + } + const shouldBuildAsSlots = isComponent && // Teleport is not a real component and has dedicated runtime handling + vnodeTag !== TELEPORT && // explained above. + vnodeTag !== KEEP_ALIVE; + if (shouldBuildAsSlots) { + const { slots, hasDynamicSlots } = buildSlots(node, context); + vnodeChildren = slots; + if (hasDynamicSlots) { + patchFlag |= 1024; + } + } else if (node.children.length === 1 && vnodeTag !== TELEPORT) { + const child = node.children[0]; + const type = child.type; + const hasDynamicTextChild = type === 5 || type === 8; + if (hasDynamicTextChild && getConstantType(child, context) === 0) { + patchFlag |= 1; + } + if (hasDynamicTextChild || type === 2) { + vnodeChildren = child; + } else { + vnodeChildren = node.children; + } + } else { + vnodeChildren = node.children; + } + } + if (patchFlag !== 0) { + { + if (patchFlag < 0) { + vnodePatchFlag = patchFlag + ` /* ${shared$2.PatchFlagNames[patchFlag]} */`; + } else { + const flagNames = Object.keys(shared$2.PatchFlagNames).map(Number).filter((n) => n > 0 && patchFlag & n).map((n) => shared$2.PatchFlagNames[n]).join(`, `); + vnodePatchFlag = patchFlag + ` /* ${flagNames} */`; + } + } + if (dynamicPropNames && dynamicPropNames.length) { + vnodeDynamicProps = stringifyDynamicPropNames(dynamicPropNames); + } + } + node.codegenNode = createVNodeCall( + context, + vnodeTag, + vnodeProps, + vnodeChildren, + vnodePatchFlag, + vnodeDynamicProps, + vnodeDirectives, + !!shouldUseBlock, + false, + isComponent, + node.loc + ); + }; +}; +function resolveComponentType(node, context, ssr = false) { + let { tag } = node; + const isExplicitDynamic = isComponentTag(tag); + const isProp = findProp(node, "is"); + if (isProp) { + if (isExplicitDynamic || isCompatEnabled( + "COMPILER_IS_ON_ELEMENT", + context + )) { + const exp = isProp.type === 6 ? isProp.value && createSimpleExpression(isProp.value.content, true) : isProp.exp; + if (exp) { + return createCallExpression(context.helper(RESOLVE_DYNAMIC_COMPONENT), [ + exp + ]); + } + } else if (isProp.type === 6 && isProp.value.content.startsWith("vue:")) { + tag = isProp.value.content.slice(4); + } + } + const builtIn = isCoreComponent(tag) || context.isBuiltInComponent(tag); + if (builtIn) { + if (!ssr) + context.helper(builtIn); + return builtIn; + } + { + const fromSetup = resolveSetupReference(tag, context); + if (fromSetup) { + return fromSetup; + } + const dotIndex = tag.indexOf("."); + if (dotIndex > 0) { + const ns = resolveSetupReference(tag.slice(0, dotIndex), context); + if (ns) { + return ns + tag.slice(dotIndex); + } + } + } + if (context.selfName && shared$2.capitalize(shared$2.camelize(tag)) === context.selfName) { + context.helper(RESOLVE_COMPONENT); + context.components.add(tag + `__self`); + return toValidAssetId(tag, `component`); + } + context.helper(RESOLVE_COMPONENT); + context.components.add(tag); + return toValidAssetId(tag, `component`); +} +function resolveSetupReference(name, context) { + const bindings = context.bindingMetadata; + if (!bindings || bindings.__isScriptSetup === false) { + return; + } + const camelName = shared$2.camelize(name); + const PascalName = shared$2.capitalize(camelName); + const checkType = (type) => { + if (bindings[name] === type) { + return name; + } + if (bindings[camelName] === type) { + return camelName; + } + if (bindings[PascalName] === type) { + return PascalName; + } + }; + const fromConst = checkType("setup-const") || checkType("setup-reactive-const") || checkType("literal-const"); + if (fromConst) { + return context.inline ? ( + // in inline mode, const setup bindings (e.g. imports) can be used as-is + fromConst + ) : `$setup[${JSON.stringify(fromConst)}]`; + } + const fromMaybeRef = checkType("setup-let") || checkType("setup-ref") || checkType("setup-maybe-ref"); + if (fromMaybeRef) { + return context.inline ? ( + // setup scope bindings that may be refs need to be unrefed + `${context.helperString(UNREF)}(${fromMaybeRef})` + ) : `$setup[${JSON.stringify(fromMaybeRef)}]`; + } + const fromProps = checkType("props"); + if (fromProps) { + return `${context.helperString(UNREF)}(${context.inline ? "__props" : "$props"}[${JSON.stringify(fromProps)}])`; + } +} +function buildProps(node, context, props = node.props, isComponent, isDynamicComponent, ssr = false) { + const { tag, loc: elementLoc, children } = node; + let properties = []; + const mergeArgs = []; + const runtimeDirectives = []; + const hasChildren = children.length > 0; + let shouldUseBlock = false; + let patchFlag = 0; + let hasRef = false; + let hasClassBinding = false; + let hasStyleBinding = false; + let hasHydrationEventBinding = false; + let hasDynamicKeys = false; + let hasVnodeHook = false; + const dynamicPropNames = []; + const pushMergeArg = (arg) => { + if (properties.length) { + mergeArgs.push( + createObjectExpression(dedupeProperties(properties), elementLoc) + ); + properties = []; + } + if (arg) + mergeArgs.push(arg); + }; + const analyzePatchFlag = ({ key, value }) => { + if (isStaticExp(key)) { + const name = key.content; + const isEventHandler = shared$2.isOn(name); + if (isEventHandler && (!isComponent || isDynamicComponent) && // omit the flag for click handlers because hydration gives click + // dedicated fast path. + name.toLowerCase() !== "onclick" && // omit v-model handlers + name !== "onUpdate:modelValue" && // omit onVnodeXXX hooks + !shared$2.isReservedProp(name)) { + hasHydrationEventBinding = true; + } + if (isEventHandler && shared$2.isReservedProp(name)) { + hasVnodeHook = true; + } + if (isEventHandler && value.type === 14) { + value = value.arguments[0]; + } + if (value.type === 20 || (value.type === 4 || value.type === 8) && getConstantType(value, context) > 0) { + return; + } + if (name === "ref") { + hasRef = true; + } else if (name === "class") { + hasClassBinding = true; + } else if (name === "style") { + hasStyleBinding = true; + } else if (name !== "key" && !dynamicPropNames.includes(name)) { + dynamicPropNames.push(name); + } + if (isComponent && (name === "class" || name === "style") && !dynamicPropNames.includes(name)) { + dynamicPropNames.push(name); + } + } else { + hasDynamicKeys = true; + } + }; + for (let i = 0; i < props.length; i++) { + const prop = props[i]; + if (prop.type === 6) { + const { loc, name, nameLoc, value } = prop; + let isStatic = true; + if (name === "ref") { + hasRef = true; + if (context.scopes.vFor > 0) { + properties.push( + createObjectProperty( + createSimpleExpression("ref_for", true), + createSimpleExpression("true") + ) + ); + } + if (value && context.inline) { + const binding = context.bindingMetadata[value.content]; + if (binding === "setup-let" || binding === "setup-ref" || binding === "setup-maybe-ref") { + isStatic = false; + properties.push( + createObjectProperty( + createSimpleExpression("ref_key", true), + createSimpleExpression(value.content, true, value.loc) + ) + ); + } + } + } + if (name === "is" && (isComponentTag(tag) || value && value.content.startsWith("vue:") || isCompatEnabled( + "COMPILER_IS_ON_ELEMENT", + context + ))) { + continue; + } + properties.push( + createObjectProperty( + createSimpleExpression(name, true, nameLoc), + createSimpleExpression( + value ? value.content : "", + isStatic, + value ? value.loc : loc + ) + ) + ); + } else { + const { name, arg, exp, loc, modifiers } = prop; + const isVBind = name === "bind"; + const isVOn = name === "on"; + if (name === "slot") { + if (!isComponent) { + context.onError( + createCompilerError(40, loc) + ); + } + continue; + } + if (name === "once" || name === "memo") { + continue; + } + if (name === "is" || isVBind && isStaticArgOf(arg, "is") && (isComponentTag(tag) || isCompatEnabled( + "COMPILER_IS_ON_ELEMENT", + context + ))) { + continue; + } + if (isVOn && ssr) { + continue; + } + if ( + // #938: elements with dynamic keys should be forced into blocks + isVBind && isStaticArgOf(arg, "key") || // inline before-update hooks need to force block so that it is invoked + // before children + isVOn && hasChildren && isStaticArgOf(arg, "vue:before-update") + ) { + shouldUseBlock = true; + } + if (isVBind && isStaticArgOf(arg, "ref") && context.scopes.vFor > 0) { + properties.push( + createObjectProperty( + createSimpleExpression("ref_for", true), + createSimpleExpression("true") + ) + ); + } + if (!arg && (isVBind || isVOn)) { + hasDynamicKeys = true; + if (exp) { + if (isVBind) { + pushMergeArg(); + { + { + const hasOverridableKeys = mergeArgs.some((arg2) => { + if (arg2.type === 15) { + return arg2.properties.some(({ key }) => { + if (key.type !== 4 || !key.isStatic) { + return true; + } + return key.content !== "class" && key.content !== "style" && !shared$2.isOn(key.content); + }); + } else { + return true; + } + }); + if (hasOverridableKeys) { + checkCompatEnabled( + "COMPILER_V_BIND_OBJECT_ORDER", + context, + loc + ); + } + } + if (isCompatEnabled( + "COMPILER_V_BIND_OBJECT_ORDER", + context + )) { + mergeArgs.unshift(exp); + continue; + } + } + mergeArgs.push(exp); + } else { + pushMergeArg({ + type: 14, + loc, + callee: context.helper(TO_HANDLERS), + arguments: isComponent ? [exp] : [exp, `true`] + }); + } + } else { + context.onError( + createCompilerError( + isVBind ? 34 : 35, + loc + ) + ); + } + continue; + } + if (isVBind && modifiers.includes("prop")) { + patchFlag |= 32; + } + const directiveTransform = context.directiveTransforms[name]; + if (directiveTransform) { + const { props: props2, needRuntime } = directiveTransform(prop, node, context); + !ssr && props2.forEach(analyzePatchFlag); + if (isVOn && arg && !isStaticExp(arg)) { + pushMergeArg(createObjectExpression(props2, elementLoc)); + } else { + properties.push(...props2); + } + if (needRuntime) { + runtimeDirectives.push(prop); + if (shared$2.isSymbol(needRuntime)) { + directiveImportMap.set(prop, needRuntime); + } + } + } else if (!shared$2.isBuiltInDirective(name)) { + runtimeDirectives.push(prop); + if (hasChildren) { + shouldUseBlock = true; + } + } + } + } + let propsExpression = void 0; + if (mergeArgs.length) { + pushMergeArg(); + if (mergeArgs.length > 1) { + propsExpression = createCallExpression( + context.helper(MERGE_PROPS), + mergeArgs, + elementLoc + ); + } else { + propsExpression = mergeArgs[0]; + } + } else if (properties.length) { + propsExpression = createObjectExpression( + dedupeProperties(properties), + elementLoc + ); + } + if (hasDynamicKeys) { + patchFlag |= 16; + } else { + if (hasClassBinding && !isComponent) { + patchFlag |= 2; + } + if (hasStyleBinding && !isComponent) { + patchFlag |= 4; + } + if (dynamicPropNames.length) { + patchFlag |= 8; + } + if (hasHydrationEventBinding) { + patchFlag |= 32; + } + } + if (!shouldUseBlock && (patchFlag === 0 || patchFlag === 32) && (hasRef || hasVnodeHook || runtimeDirectives.length > 0)) { + patchFlag |= 512; + } + if (!context.inSSR && propsExpression) { + switch (propsExpression.type) { + case 15: + let classKeyIndex = -1; + let styleKeyIndex = -1; + let hasDynamicKey = false; + for (let i = 0; i < propsExpression.properties.length; i++) { + const key = propsExpression.properties[i].key; + if (isStaticExp(key)) { + if (key.content === "class") { + classKeyIndex = i; + } else if (key.content === "style") { + styleKeyIndex = i; + } + } else if (!key.isHandlerKey) { + hasDynamicKey = true; + } + } + const classProp = propsExpression.properties[classKeyIndex]; + const styleProp = propsExpression.properties[styleKeyIndex]; + if (!hasDynamicKey) { + if (classProp && !isStaticExp(classProp.value)) { + classProp.value = createCallExpression( + context.helper(NORMALIZE_CLASS), + [classProp.value] + ); + } + if (styleProp && // the static style is compiled into an object, + // so use `hasStyleBinding` to ensure that it is a dynamic style binding + (hasStyleBinding || styleProp.value.type === 4 && styleProp.value.content.trim()[0] === `[` || // v-bind:style and style both exist, + // v-bind:style with static literal object + styleProp.value.type === 17)) { + styleProp.value = createCallExpression( + context.helper(NORMALIZE_STYLE), + [styleProp.value] + ); + } + } else { + propsExpression = createCallExpression( + context.helper(NORMALIZE_PROPS), + [propsExpression] + ); + } + break; + case 14: + break; + default: + propsExpression = createCallExpression( + context.helper(NORMALIZE_PROPS), + [ + createCallExpression(context.helper(GUARD_REACTIVE_PROPS), [ + propsExpression + ]) + ] + ); + break; + } + } + return { + props: propsExpression, + directives: runtimeDirectives, + patchFlag, + dynamicPropNames, + shouldUseBlock + }; +} +function dedupeProperties(properties) { + const knownProps = /* @__PURE__ */ new Map(); + const deduped = []; + for (let i = 0; i < properties.length; i++) { + const prop = properties[i]; + if (prop.key.type === 8 || !prop.key.isStatic) { + deduped.push(prop); + continue; + } + const name = prop.key.content; + const existing = knownProps.get(name); + if (existing) { + if (name === "style" || name === "class" || shared$2.isOn(name)) { + mergeAsArray(existing, prop); + } + } else { + knownProps.set(name, prop); + deduped.push(prop); + } + } + return deduped; +} +function mergeAsArray(existing, incoming) { + if (existing.value.type === 17) { + existing.value.elements.push(incoming.value); + } else { + existing.value = createArrayExpression( + [existing.value, incoming.value], + existing.loc + ); + } +} +function buildDirectiveArgs(dir, context) { + const dirArgs = []; + const runtime = directiveImportMap.get(dir); + if (runtime) { + dirArgs.push(context.helperString(runtime)); + } else { + const fromSetup = resolveSetupReference("v-" + dir.name, context); + if (fromSetup) { + dirArgs.push(fromSetup); + } else { + context.helper(RESOLVE_DIRECTIVE); + context.directives.add(dir.name); + dirArgs.push(toValidAssetId(dir.name, `directive`)); + } + } + const { loc } = dir; + if (dir.exp) + dirArgs.push(dir.exp); + if (dir.arg) { + if (!dir.exp) { + dirArgs.push(`void 0`); + } + dirArgs.push(dir.arg); + } + if (Object.keys(dir.modifiers).length) { + if (!dir.arg) { + if (!dir.exp) { + dirArgs.push(`void 0`); + } + dirArgs.push(`void 0`); + } + const trueExpression = createSimpleExpression(`true`, false, loc); + dirArgs.push( + createObjectExpression( + dir.modifiers.map( + (modifier) => createObjectProperty(modifier, trueExpression) + ), + loc + ) + ); + } + return createArrayExpression(dirArgs, dir.loc); +} +function stringifyDynamicPropNames(props) { + let propsNamesString = `[`; + for (let i = 0, l = props.length; i < l; i++) { + propsNamesString += JSON.stringify(props[i]); + if (i < l - 1) + propsNamesString += ", "; + } + return propsNamesString + `]`; +} +function isComponentTag(tag) { + return tag === "component" || tag === "Component"; +} + +const transformSlotOutlet = (node, context) => { + if (isSlotOutlet(node)) { + const { children, loc } = node; + const { slotName, slotProps } = processSlotOutlet$1(node, context); + const slotArgs = [ + context.prefixIdentifiers ? `_ctx.$slots` : `$slots`, + slotName, + "{}", + "undefined", + "true" + ]; + let expectedLen = 2; + if (slotProps) { + slotArgs[2] = slotProps; + expectedLen = 3; + } + if (children.length) { + slotArgs[3] = createFunctionExpression([], children, false, false, loc); + expectedLen = 4; + } + if (context.scopeId && !context.slotted) { + expectedLen = 5; + } + slotArgs.splice(expectedLen); + node.codegenNode = createCallExpression( + context.helper(RENDER_SLOT), + slotArgs, + loc + ); + } +}; +function processSlotOutlet$1(node, context) { + let slotName = `"default"`; + let slotProps = void 0; + const nonNameProps = []; + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 6) { + if (p.value) { + if (p.name === "name") { + slotName = JSON.stringify(p.value.content); + } else { + p.name = shared$2.camelize(p.name); + nonNameProps.push(p); + } + } + } else { + if (p.name === "bind" && isStaticArgOf(p.arg, "name")) { + if (p.exp) + slotName = p.exp; + } else { + if (p.name === "bind" && p.arg && isStaticExp(p.arg)) { + p.arg.content = shared$2.camelize(p.arg.content); + } + nonNameProps.push(p); + } + } + } + if (nonNameProps.length > 0) { + const { props, directives } = buildProps( + node, + context, + nonNameProps, + false, + false + ); + slotProps = props; + if (directives.length) { + context.onError( + createCompilerError( + 36, + directives[0].loc + ) + ); + } + } + return { + slotName, + slotProps + }; +} + +const fnExpRE$1 = /^\s*([\w$_]+|(async\s*)?\([^)]*?\))\s*(:[^=]+)?=>|^\s*(async\s+)?function(?:\s+[\w$]+)?\s*\(/; +const transformOn = (dir, node, context, augmentor) => { + const { loc, modifiers, arg } = dir; + if (!dir.exp && !modifiers.length) { + context.onError(createCompilerError(35, loc)); + } + let eventName; + if (arg.type === 4) { + if (arg.isStatic) { + let rawName = arg.content; + if (rawName.startsWith("vnode")) { + context.onError(createCompilerError(51, arg.loc)); + } + if (rawName.startsWith("vue:")) { + rawName = `vnode-${rawName.slice(4)}`; + } + const eventString = node.tagType !== 0 || rawName.startsWith("vnode") || !/[A-Z]/.test(rawName) ? ( + // for non-element and vnode lifecycle event listeners, auto convert + // it to camelCase. See issue #2249 + shared$2.toHandlerKey(shared$2.camelize(rawName)) + ) : ( + // preserve case for plain element listeners that have uppercase + // letters, as these may be custom elements' custom events + `on:${rawName}` + ); + eventName = createSimpleExpression(eventString, true, arg.loc); + } else { + eventName = createCompoundExpression([ + `${context.helperString(TO_HANDLER_KEY)}(`, + arg, + `)` + ]); + } + } else { + eventName = arg; + eventName.children.unshift(`${context.helperString(TO_HANDLER_KEY)}(`); + eventName.children.push(`)`); + } + let exp = dir.exp; + if (exp && !exp.content.trim()) { + exp = void 0; + } + let shouldCache = context.cacheHandlers && !exp && !context.inVOnce; + if (exp) { + const isMemberExp = isMemberExpression(exp.content, context); + const isInlineStatement = !(isMemberExp || fnExpRE$1.test(exp.content)); + const hasMultipleStatements = exp.content.includes(`;`); + if (context.prefixIdentifiers) { + isInlineStatement && context.addIdentifiers(`$event`); + exp = dir.exp = processExpression( + exp, + context, + false, + hasMultipleStatements + ); + isInlineStatement && context.removeIdentifiers(`$event`); + shouldCache = context.cacheHandlers && // unnecessary to cache inside v-once + !context.inVOnce && // runtime constants don't need to be cached + // (this is analyzed by compileScript in SFC <script setup>) + !(exp.type === 4 && exp.constType > 0) && // #1541 bail if this is a member exp handler passed to a component - + // we need to use the original function to preserve arity, + // e.g. <transition> relies on checking cb.length to determine + // transition end handling. Inline function is ok since its arity + // is preserved even when cached. + !(isMemberExp && node.tagType === 1) && // bail if the function references closure variables (v-for, v-slot) + // it must be passed fresh to avoid stale values. + !hasScopeRef(exp, context.identifiers); + if (shouldCache && isMemberExp) { + if (exp.type === 4) { + exp.content = `${exp.content} && ${exp.content}(...args)`; + } else { + exp.children = [...exp.children, ` && `, ...exp.children, `(...args)`]; + } + } + } + if (isInlineStatement || shouldCache && isMemberExp) { + exp = createCompoundExpression([ + `${isInlineStatement ? context.isTS ? `($event: any)` : `$event` : `${context.isTS ? ` +//@ts-ignore +` : ``}(...args)`} => ${hasMultipleStatements ? `{` : `(`}`, + exp, + hasMultipleStatements ? `}` : `)` + ]); + } + } + let ret = { + props: [ + createObjectProperty( + eventName, + exp || createSimpleExpression(`() => {}`, false, loc) + ) + ] + }; + if (augmentor) { + ret = augmentor(ret); + } + if (shouldCache) { + ret.props[0].value = context.cache(ret.props[0].value); + } + ret.props.forEach((p) => p.key.isHandlerKey = true); + return ret; +}; + +const transformBind = (dir, _node, context) => { + const { modifiers, loc } = dir; + const arg = dir.arg; + let { exp } = dir; + if (!exp && arg.type === 4) { + const propName = shared$2.camelize(arg.content); + exp = dir.exp = createSimpleExpression(propName, false, arg.loc); + { + exp = dir.exp = processExpression(exp, context); + } + } + if (arg.type !== 4) { + arg.children.unshift(`(`); + arg.children.push(`) || ""`); + } else if (!arg.isStatic) { + arg.content = `${arg.content} || ""`; + } + if (modifiers.includes("camel")) { + if (arg.type === 4) { + if (arg.isStatic) { + arg.content = shared$2.camelize(arg.content); + } else { + arg.content = `${context.helperString(CAMELIZE)}(${arg.content})`; + } + } else { + arg.children.unshift(`${context.helperString(CAMELIZE)}(`); + arg.children.push(`)`); + } + } + if (!context.inSSR) { + if (modifiers.includes("prop")) { + injectPrefix(arg, "."); + } + if (modifiers.includes("attr")) { + injectPrefix(arg, "^"); + } + } + if (!exp || exp.type === 4 && !exp.content.trim()) { + context.onError(createCompilerError(34, loc)); + return { + props: [createObjectProperty(arg, createSimpleExpression("", true, loc))] + }; + } + return { + props: [createObjectProperty(arg, exp)] + }; +}; +const injectPrefix = (arg, prefix) => { + if (arg.type === 4) { + if (arg.isStatic) { + arg.content = prefix + arg.content; + } else { + arg.content = `\`${prefix}\${${arg.content}}\``; + } + } else { + arg.children.unshift(`'${prefix}' + (`); + arg.children.push(`)`); + } +}; + +const transformText = (node, context) => { + if (node.type === 0 || node.type === 1 || node.type === 11 || node.type === 10) { + return () => { + const children = node.children; + let currentContainer = void 0; + let hasText = false; + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (isText$1(child)) { + hasText = true; + for (let j = i + 1; j < children.length; j++) { + const next = children[j]; + if (isText$1(next)) { + if (!currentContainer) { + currentContainer = children[i] = createCompoundExpression( + [child], + child.loc + ); + } + currentContainer.children.push(` + `, next); + children.splice(j, 1); + j--; + } else { + currentContainer = void 0; + break; + } + } + } + } + if (!hasText || // if this is a plain element with a single text child, leave it + // as-is since the runtime has dedicated fast path for this by directly + // setting textContent of the element. + // for component root it's always normalized anyway. + children.length === 1 && (node.type === 0 || node.type === 1 && node.tagType === 0 && // #3756 + // custom directives can potentially add DOM elements arbitrarily, + // we need to avoid setting textContent of the element at runtime + // to avoid accidentally overwriting the DOM elements added + // by the user through custom directives. + !node.props.find( + (p) => p.type === 7 && !context.directiveTransforms[p.name] + ) && // in compat mode, <template> tags with no special directives + // will be rendered as a fragment so its children must be + // converted into vnodes. + !(node.tag === "template"))) { + return; + } + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (isText$1(child) || child.type === 8) { + const callArgs = []; + if (child.type !== 2 || child.content !== " ") { + callArgs.push(child); + } + if (!context.ssr && getConstantType(child, context) === 0) { + callArgs.push( + 1 + (` /* ${shared$2.PatchFlagNames[1]} */` ) + ); + } + children[i] = { + type: 12, + content: child, + loc: child.loc, + codegenNode: createCallExpression( + context.helper(CREATE_TEXT), + callArgs + ) + }; + } + } + }; + } +}; + +const seen$1 = /* @__PURE__ */ new WeakSet(); +const transformOnce = (node, context) => { + if (node.type === 1 && findDir(node, "once", true)) { + if (seen$1.has(node) || context.inVOnce || context.inSSR) { + return; + } + seen$1.add(node); + context.inVOnce = true; + context.helper(SET_BLOCK_TRACKING); + return () => { + context.inVOnce = false; + const cur = context.currentNode; + if (cur.codegenNode) { + cur.codegenNode = context.cache( + cur.codegenNode, + true + /* isVNode */ + ); + } + }; + } +}; + +const transformModel$1 = (dir, node, context) => { + const { exp, arg } = dir; + if (!exp) { + context.onError( + createCompilerError(41, dir.loc) + ); + return createTransformProps(); + } + const rawExp = exp.loc.source; + const expString = exp.type === 4 ? exp.content : rawExp; + const bindingType = context.bindingMetadata[rawExp]; + if (bindingType === "props" || bindingType === "props-aliased") { + context.onError(createCompilerError(44, exp.loc)); + return createTransformProps(); + } + const maybeRef = context.inline && (bindingType === "setup-let" || bindingType === "setup-ref" || bindingType === "setup-maybe-ref"); + if (!expString.trim() || !isMemberExpression(expString, context) && !maybeRef) { + context.onError( + createCompilerError(42, exp.loc) + ); + return createTransformProps(); + } + if (context.prefixIdentifiers && isSimpleIdentifier(expString) && context.identifiers[expString]) { + context.onError( + createCompilerError(43, exp.loc) + ); + return createTransformProps(); + } + const propName = arg ? arg : createSimpleExpression("modelValue", true); + const eventName = arg ? isStaticExp(arg) ? `onUpdate:${shared$2.camelize(arg.content)}` : createCompoundExpression(['"onUpdate:" + ', arg]) : `onUpdate:modelValue`; + let assignmentExp; + const eventArg = context.isTS ? `($event: any)` : `$event`; + if (maybeRef) { + if (bindingType === "setup-ref") { + assignmentExp = createCompoundExpression([ + `${eventArg} => ((`, + createSimpleExpression(rawExp, false, exp.loc), + `).value = $event)` + ]); + } else { + const altAssignment = bindingType === "setup-let" ? `${rawExp} = $event` : `null`; + assignmentExp = createCompoundExpression([ + `${eventArg} => (${context.helperString(IS_REF)}(${rawExp}) ? (`, + createSimpleExpression(rawExp, false, exp.loc), + `).value = $event : ${altAssignment})` + ]); + } + } else { + assignmentExp = createCompoundExpression([ + `${eventArg} => ((`, + exp, + `) = $event)` + ]); + } + const props = [ + // modelValue: foo + createObjectProperty(propName, dir.exp), + // "onUpdate:modelValue": $event => (foo = $event) + createObjectProperty(eventName, assignmentExp) + ]; + if (context.prefixIdentifiers && !context.inVOnce && context.cacheHandlers && !hasScopeRef(exp, context.identifiers)) { + props[1].value = context.cache(props[1].value); + } + if (dir.modifiers.length && node.tagType === 1) { + const modifiers = dir.modifiers.map((m) => (isSimpleIdentifier(m) ? m : JSON.stringify(m)) + `: true`).join(`, `); + const modifiersKey = arg ? isStaticExp(arg) ? `${arg.content}Modifiers` : createCompoundExpression([arg, ' + "Modifiers"']) : `modelModifiers`; + props.push( + createObjectProperty( + modifiersKey, + createSimpleExpression( + `{ ${modifiers} }`, + false, + dir.loc, + 2 + ) + ) + ); + } + return createTransformProps(props); +}; +function createTransformProps(props = []) { + return { props }; +} + +const validDivisionCharRE$1 = /[\w).+\-_$\]]/; +const transformFilter = (node, context) => { + if (!isCompatEnabled("COMPILER_FILTERS", context)) { + return; + } + if (node.type === 5) { + rewriteFilter(node.content, context); + } + if (node.type === 1) { + node.props.forEach((prop) => { + if (prop.type === 7 && prop.name !== "for" && prop.exp) { + rewriteFilter(prop.exp, context); + } + }); + } +}; +function rewriteFilter(node, context) { + if (node.type === 4) { + parseFilter(node, context); + } else { + for (let i = 0; i < node.children.length; i++) { + const child = node.children[i]; + if (typeof child !== "object") + continue; + if (child.type === 4) { + parseFilter(child, context); + } else if (child.type === 8) { + rewriteFilter(node, context); + } else if (child.type === 5) { + rewriteFilter(child.content, context); + } + } + } +} +function parseFilter(node, context) { + const exp = node.content; + let inSingle = false; + let inDouble = false; + let inTemplateString = false; + let inRegex = false; + let curly = 0; + let square = 0; + let paren = 0; + let lastFilterIndex = 0; + let c, prev, i, expression, filters = []; + for (i = 0; i < exp.length; i++) { + prev = c; + c = exp.charCodeAt(i); + if (inSingle) { + if (c === 39 && prev !== 92) + inSingle = false; + } else if (inDouble) { + if (c === 34 && prev !== 92) + inDouble = false; + } else if (inTemplateString) { + if (c === 96 && prev !== 92) + inTemplateString = false; + } else if (inRegex) { + if (c === 47 && prev !== 92) + inRegex = false; + } else if (c === 124 && // pipe + exp.charCodeAt(i + 1) !== 124 && exp.charCodeAt(i - 1) !== 124 && !curly && !square && !paren) { + if (expression === void 0) { + lastFilterIndex = i + 1; + expression = exp.slice(0, i).trim(); + } else { + pushFilter(); + } + } else { + switch (c) { + case 34: + inDouble = true; + break; + case 39: + inSingle = true; + break; + case 96: + inTemplateString = true; + break; + case 40: + paren++; + break; + case 41: + paren--; + break; + case 91: + square++; + break; + case 93: + square--; + break; + case 123: + curly++; + break; + case 125: + curly--; + break; + } + if (c === 47) { + let j = i - 1; + let p; + for (; j >= 0; j--) { + p = exp.charAt(j); + if (p !== " ") + break; + } + if (!p || !validDivisionCharRE$1.test(p)) { + inRegex = true; + } + } + } + } + if (expression === void 0) { + expression = exp.slice(0, i).trim(); + } else if (lastFilterIndex !== 0) { + pushFilter(); + } + function pushFilter() { + filters.push(exp.slice(lastFilterIndex, i).trim()); + lastFilterIndex = i + 1; + } + if (filters.length) { + warnDeprecation( + "COMPILER_FILTERS", + context, + node.loc + ); + for (i = 0; i < filters.length; i++) { + expression = wrapFilter$1(expression, filters[i], context); + } + node.content = expression; + } +} +function wrapFilter$1(exp, filter, context) { + context.helper(RESOLVE_FILTER); + const i = filter.indexOf("("); + if (i < 0) { + context.filters.add(filter); + return `${toValidAssetId(filter, "filter")}(${exp})`; + } else { + const name = filter.slice(0, i); + const args = filter.slice(i + 1); + context.filters.add(name); + return `${toValidAssetId(name, "filter")}(${exp}${args !== ")" ? "," + args : args}`; + } +} + +const seen = /* @__PURE__ */ new WeakSet(); +const transformMemo = (node, context) => { + if (node.type === 1) { + const dir = findDir(node, "memo"); + if (!dir || seen.has(node)) { + return; + } + seen.add(node); + return () => { + const codegenNode = node.codegenNode || context.currentNode.codegenNode; + if (codegenNode && codegenNode.type === 13) { + if (node.tagType !== 1) { + convertToBlock(codegenNode, context); + } + node.codegenNode = createCallExpression(context.helper(WITH_MEMO), [ + dir.exp, + createFunctionExpression(void 0, codegenNode), + `_cache`, + String(context.cached++) + ]); + } + }; + } +}; + +function getBaseTransformPreset(prefixIdentifiers) { + return [ + [ + transformOnce, + transformIf, + transformMemo, + transformFor, + ...[transformFilter] , + ...prefixIdentifiers ? [ + // order is important + trackVForSlotScopes, + transformExpression + ] : [], + transformSlotOutlet, + transformElement, + trackSlotScopes, + transformText + ], + { + on: transformOn, + bind: transformBind, + model: transformModel$1 + } + ]; +} +function baseCompile$1(source, options = {}) { + const onError = options.onError || defaultOnError; + const isModuleMode = options.mode === "module"; + const prefixIdentifiers = options.prefixIdentifiers === true || isModuleMode; + if (!prefixIdentifiers && options.cacheHandlers) { + onError(createCompilerError(49)); + } + if (options.scopeId && !isModuleMode) { + onError(createCompilerError(50)); + } + const resolvedOptions = shared$2.extend({}, options, { + prefixIdentifiers + }); + const ast = shared$2.isString(source) ? baseParse(source, resolvedOptions) : source; + const [nodeTransforms, directiveTransforms] = getBaseTransformPreset(prefixIdentifiers); + if (options.isTS) { + const { expressionPlugins } = options; + if (!expressionPlugins || !expressionPlugins.includes("typescript")) { + options.expressionPlugins = [...expressionPlugins || [], "typescript"]; + } + } + transform$1( + ast, + shared$2.extend({}, resolvedOptions, { + nodeTransforms: [ + ...nodeTransforms, + ...options.nodeTransforms || [] + // user transforms + ], + directiveTransforms: shared$2.extend( + {}, + directiveTransforms, + options.directiveTransforms || {} + // user transforms + ) + }) + ); + return generate$4(ast, resolvedOptions); +} + +const BindingTypes = { + "DATA": "data", + "PROPS": "props", + "PROPS_ALIASED": "props-aliased", + "SETUP_LET": "setup-let", + "SETUP_CONST": "setup-const", + "SETUP_REACTIVE_CONST": "setup-reactive-const", + "SETUP_MAYBE_REF": "setup-maybe-ref", + "SETUP_REF": "setup-ref", + "OPTIONS": "options", + "LITERAL_CONST": "literal-const" +}; + +const noopDirectiveTransform = () => ({ props: [] }); + +compilerCore_cjs.generateCodeFrame = shared$2.generateCodeFrame; +compilerCore_cjs.BASE_TRANSITION = BASE_TRANSITION; +compilerCore_cjs.BindingTypes = BindingTypes; +compilerCore_cjs.CAMELIZE = CAMELIZE; +compilerCore_cjs.CAPITALIZE = CAPITALIZE; +compilerCore_cjs.CREATE_BLOCK = CREATE_BLOCK; +compilerCore_cjs.CREATE_COMMENT = CREATE_COMMENT; +compilerCore_cjs.CREATE_ELEMENT_BLOCK = CREATE_ELEMENT_BLOCK; +compilerCore_cjs.CREATE_ELEMENT_VNODE = CREATE_ELEMENT_VNODE; +compilerCore_cjs.CREATE_SLOTS = CREATE_SLOTS; +compilerCore_cjs.CREATE_STATIC = CREATE_STATIC; +compilerCore_cjs.CREATE_TEXT = CREATE_TEXT; +compilerCore_cjs.CREATE_VNODE = CREATE_VNODE; +compilerCore_cjs.CompilerDeprecationTypes = CompilerDeprecationTypes; +compilerCore_cjs.ConstantTypes = ConstantTypes; +compilerCore_cjs.ElementTypes = ElementTypes; +compilerCore_cjs.ErrorCodes = ErrorCodes; +compilerCore_cjs.FRAGMENT = FRAGMENT; +compilerCore_cjs.GUARD_REACTIVE_PROPS = GUARD_REACTIVE_PROPS; +compilerCore_cjs.IS_MEMO_SAME = IS_MEMO_SAME; +compilerCore_cjs.IS_REF = IS_REF; +compilerCore_cjs.KEEP_ALIVE = KEEP_ALIVE; +compilerCore_cjs.MERGE_PROPS = MERGE_PROPS; +compilerCore_cjs.NORMALIZE_CLASS = NORMALIZE_CLASS; +compilerCore_cjs.NORMALIZE_PROPS = NORMALIZE_PROPS; +compilerCore_cjs.NORMALIZE_STYLE = NORMALIZE_STYLE; +compilerCore_cjs.Namespaces = Namespaces; +compilerCore_cjs.NodeTypes = NodeTypes; +compilerCore_cjs.OPEN_BLOCK = OPEN_BLOCK; +compilerCore_cjs.POP_SCOPE_ID = POP_SCOPE_ID; +compilerCore_cjs.PUSH_SCOPE_ID = PUSH_SCOPE_ID; +compilerCore_cjs.RENDER_LIST = RENDER_LIST; +compilerCore_cjs.RENDER_SLOT = RENDER_SLOT; +compilerCore_cjs.RESOLVE_COMPONENT = RESOLVE_COMPONENT; +compilerCore_cjs.RESOLVE_DIRECTIVE = RESOLVE_DIRECTIVE; +compilerCore_cjs.RESOLVE_DYNAMIC_COMPONENT = RESOLVE_DYNAMIC_COMPONENT; +compilerCore_cjs.RESOLVE_FILTER = RESOLVE_FILTER; +compilerCore_cjs.SET_BLOCK_TRACKING = SET_BLOCK_TRACKING; +compilerCore_cjs.SUSPENSE = SUSPENSE; +compilerCore_cjs.TELEPORT = TELEPORT; +compilerCore_cjs.TO_DISPLAY_STRING = TO_DISPLAY_STRING; +compilerCore_cjs.TO_HANDLERS = TO_HANDLERS; +compilerCore_cjs.TO_HANDLER_KEY = TO_HANDLER_KEY; +compilerCore_cjs.TS_NODE_TYPES = TS_NODE_TYPES; +compilerCore_cjs.UNREF = UNREF; +compilerCore_cjs.WITH_CTX = WITH_CTX; +compilerCore_cjs.WITH_DIRECTIVES = WITH_DIRECTIVES; +compilerCore_cjs.WITH_MEMO = WITH_MEMO; +compilerCore_cjs.advancePositionWithClone = advancePositionWithClone; +compilerCore_cjs.advancePositionWithMutation = advancePositionWithMutation; +compilerCore_cjs.assert = assert; +compilerCore_cjs.baseCompile = baseCompile$1; +compilerCore_cjs.baseParse = baseParse; +compilerCore_cjs.buildDirectiveArgs = buildDirectiveArgs; +compilerCore_cjs.buildProps = buildProps; +compilerCore_cjs.buildSlots = buildSlots; +compilerCore_cjs.checkCompatEnabled = checkCompatEnabled; +compilerCore_cjs.convertToBlock = convertToBlock; +compilerCore_cjs.createArrayExpression = createArrayExpression; +compilerCore_cjs.createAssignmentExpression = createAssignmentExpression; +compilerCore_cjs.createBlockStatement = createBlockStatement; +compilerCore_cjs.createCacheExpression = createCacheExpression; +compilerCore_cjs.createCallExpression = createCallExpression; +compilerCore_cjs.createCompilerError = createCompilerError; +compilerCore_cjs.createCompoundExpression = createCompoundExpression; +compilerCore_cjs.createConditionalExpression = createConditionalExpression; +compilerCore_cjs.createForLoopParams = createForLoopParams; +compilerCore_cjs.createFunctionExpression = createFunctionExpression; +compilerCore_cjs.createIfStatement = createIfStatement; +compilerCore_cjs.createInterpolation = createInterpolation; +compilerCore_cjs.createObjectExpression = createObjectExpression; +compilerCore_cjs.createObjectProperty = createObjectProperty; +compilerCore_cjs.createReturnStatement = createReturnStatement; +compilerCore_cjs.createRoot = createRoot; +compilerCore_cjs.createSequenceExpression = createSequenceExpression; +compilerCore_cjs.createSimpleExpression = createSimpleExpression; +compilerCore_cjs.createStructuralDirectiveTransform = createStructuralDirectiveTransform; +compilerCore_cjs.createTemplateLiteral = createTemplateLiteral; +compilerCore_cjs.createTransformContext = createTransformContext; +compilerCore_cjs.createVNodeCall = createVNodeCall; +compilerCore_cjs.errorMessages = errorMessages; +compilerCore_cjs.extractIdentifiers = extractIdentifiers; +compilerCore_cjs.findDir = findDir; +compilerCore_cjs.findProp = findProp; +compilerCore_cjs.forAliasRE = forAliasRE$1; +compilerCore_cjs.generate = generate$4; +compilerCore_cjs.getBaseTransformPreset = getBaseTransformPreset; +compilerCore_cjs.getConstantType = getConstantType; +compilerCore_cjs.getMemoedVNodeCall = getMemoedVNodeCall; +compilerCore_cjs.getVNodeBlockHelper = getVNodeBlockHelper; +compilerCore_cjs.getVNodeHelper = getVNodeHelper; +compilerCore_cjs.hasDynamicKeyVBind = hasDynamicKeyVBind; +compilerCore_cjs.hasScopeRef = hasScopeRef; +compilerCore_cjs.helperNameMap = helperNameMap; +compilerCore_cjs.injectProp = injectProp; +compilerCore_cjs.isCoreComponent = isCoreComponent; +compilerCore_cjs.isFunctionType = isFunctionType; +compilerCore_cjs.isInDestructureAssignment = isInDestructureAssignment; +compilerCore_cjs.isMemberExpression = isMemberExpression; +compilerCore_cjs.isMemberExpressionBrowser = isMemberExpressionBrowser; +compilerCore_cjs.isMemberExpressionNode = isMemberExpressionNode; +compilerCore_cjs.isReferencedIdentifier = isReferencedIdentifier; +compilerCore_cjs.isSimpleIdentifier = isSimpleIdentifier; +compilerCore_cjs.isSlotOutlet = isSlotOutlet; +compilerCore_cjs.isStaticArgOf = isStaticArgOf; +compilerCore_cjs.isStaticExp = isStaticExp; +compilerCore_cjs.isStaticProperty = isStaticProperty; +compilerCore_cjs.isStaticPropertyKey = isStaticPropertyKey; +compilerCore_cjs.isTemplateNode = isTemplateNode; +compilerCore_cjs.isText = isText$1; +compilerCore_cjs.isVSlot = isVSlot; +compilerCore_cjs.locStub = locStub; +compilerCore_cjs.noopDirectiveTransform = noopDirectiveTransform; +compilerCore_cjs.processExpression = processExpression; +compilerCore_cjs.processFor = processFor$1; +compilerCore_cjs.processIf = processIf$1; +compilerCore_cjs.processSlotOutlet = processSlotOutlet$1; +compilerCore_cjs.registerRuntimeHelpers = registerRuntimeHelpers; +compilerCore_cjs.resolveComponentType = resolveComponentType; +compilerCore_cjs.stringifyExpression = stringifyExpression; +compilerCore_cjs.toValidAssetId = toValidAssetId; +compilerCore_cjs.trackSlotScopes = trackSlotScopes; +compilerCore_cjs.trackVForSlotScopes = trackVForSlotScopes; +compilerCore_cjs.transform = transform$1; +compilerCore_cjs.transformBind = transformBind; +compilerCore_cjs.transformElement = transformElement; +compilerCore_cjs.transformExpression = transformExpression; +compilerCore_cjs.transformModel = transformModel$1; +compilerCore_cjs.transformOn = transformOn; +compilerCore_cjs.traverseNode = traverseNode; +compilerCore_cjs.unwrapTSNode = unwrapTSNode; +compilerCore_cjs.walkBlockDeclarations = walkBlockDeclarations; +compilerCore_cjs.walkFunctionParams = walkFunctionParams; +compilerCore_cjs.walkIdentifiers = walkIdentifiers$1; +compilerCore_cjs.warnDeprecation = warnDeprecation; + +(function (exports) { + + Object.defineProperty(exports, '__esModule', { value: true }); + + var compilerCore = compilerCore_cjs; + var shared = require$$1$1; + + const V_MODEL_RADIO = Symbol(`vModelRadio` ); + const V_MODEL_CHECKBOX = Symbol(`vModelCheckbox` ); + const V_MODEL_TEXT = Symbol(`vModelText` ); + const V_MODEL_SELECT = Symbol(`vModelSelect` ); + const V_MODEL_DYNAMIC = Symbol(`vModelDynamic` ); + const V_ON_WITH_MODIFIERS = Symbol(`vOnModifiersGuard` ); + const V_ON_WITH_KEYS = Symbol(`vOnKeysGuard` ); + const V_SHOW = Symbol(`vShow` ); + const TRANSITION = Symbol(`Transition` ); + const TRANSITION_GROUP = Symbol(`TransitionGroup` ); + compilerCore.registerRuntimeHelpers({ + [V_MODEL_RADIO]: `vModelRadio`, + [V_MODEL_CHECKBOX]: `vModelCheckbox`, + [V_MODEL_TEXT]: `vModelText`, + [V_MODEL_SELECT]: `vModelSelect`, + [V_MODEL_DYNAMIC]: `vModelDynamic`, + [V_ON_WITH_MODIFIERS]: `withModifiers`, + [V_ON_WITH_KEYS]: `withKeys`, + [V_SHOW]: `vShow`, + [TRANSITION]: `Transition`, + [TRANSITION_GROUP]: `TransitionGroup` + }); + + const parserOptions = { + parseMode: "html", + isVoidTag: shared.isVoidTag, + isNativeTag: (tag) => shared.isHTMLTag(tag) || shared.isSVGTag(tag) || shared.isMathMLTag(tag), + isPreTag: (tag) => tag === "pre", + decodeEntities: void 0, + isBuiltInComponent: (tag) => { + if (tag === "Transition" || tag === "transition") { + return TRANSITION; + } else if (tag === "TransitionGroup" || tag === "transition-group") { + return TRANSITION_GROUP; + } + }, + // https://html.spec.whatwg.org/multipage/parsing.html#tree-construction-dispatcher + getNamespace(tag, parent, rootNamespace) { + let ns = parent ? parent.ns : rootNamespace; + if (parent && ns === 2) { + if (parent.tag === "annotation-xml") { + if (tag === "svg") { + return 1; + } + if (parent.props.some( + (a) => a.type === 6 && a.name === "encoding" && a.value != null && (a.value.content === "text/html" || a.value.content === "application/xhtml+xml") + )) { + ns = 0; + } + } else if (/^m(?:[ions]|text)$/.test(parent.tag) && tag !== "mglyph" && tag !== "malignmark") { + ns = 0; + } + } else if (parent && ns === 1) { + if (parent.tag === "foreignObject" || parent.tag === "desc" || parent.tag === "title") { + ns = 0; + } + } + if (ns === 0) { + if (tag === "svg") { + return 1; + } + if (tag === "math") { + return 2; + } + } + return ns; + } + }; + + const transformStyle = (node) => { + if (node.type === 1) { + node.props.forEach((p, i) => { + if (p.type === 6 && p.name === "style" && p.value) { + node.props[i] = { + type: 7, + name: `bind`, + arg: compilerCore.createSimpleExpression(`style`, true, p.loc), + exp: parseInlineCSS(p.value.content, p.loc), + modifiers: [], + loc: p.loc + }; + } + }); + } + }; + const parseInlineCSS = (cssText, loc) => { + const normalized = shared.parseStringStyle(cssText); + return compilerCore.createSimpleExpression( + JSON.stringify(normalized), + false, + loc, + 3 + ); + }; + + function createDOMCompilerError(code, loc) { + return compilerCore.createCompilerError( + code, + loc, + DOMErrorMessages + ); + } + const DOMErrorCodes = { + "X_V_HTML_NO_EXPRESSION": 53, + "53": "X_V_HTML_NO_EXPRESSION", + "X_V_HTML_WITH_CHILDREN": 54, + "54": "X_V_HTML_WITH_CHILDREN", + "X_V_TEXT_NO_EXPRESSION": 55, + "55": "X_V_TEXT_NO_EXPRESSION", + "X_V_TEXT_WITH_CHILDREN": 56, + "56": "X_V_TEXT_WITH_CHILDREN", + "X_V_MODEL_ON_INVALID_ELEMENT": 57, + "57": "X_V_MODEL_ON_INVALID_ELEMENT", + "X_V_MODEL_ARG_ON_ELEMENT": 58, + "58": "X_V_MODEL_ARG_ON_ELEMENT", + "X_V_MODEL_ON_FILE_INPUT_ELEMENT": 59, + "59": "X_V_MODEL_ON_FILE_INPUT_ELEMENT", + "X_V_MODEL_UNNECESSARY_VALUE": 60, + "60": "X_V_MODEL_UNNECESSARY_VALUE", + "X_V_SHOW_NO_EXPRESSION": 61, + "61": "X_V_SHOW_NO_EXPRESSION", + "X_TRANSITION_INVALID_CHILDREN": 62, + "62": "X_TRANSITION_INVALID_CHILDREN", + "X_IGNORED_SIDE_EFFECT_TAG": 63, + "63": "X_IGNORED_SIDE_EFFECT_TAG", + "__EXTEND_POINT__": 64, + "64": "__EXTEND_POINT__" + }; + const DOMErrorMessages = { + [53]: `v-html is missing expression.`, + [54]: `v-html will override element children.`, + [55]: `v-text is missing expression.`, + [56]: `v-text will override element children.`, + [57]: `v-model can only be used on <input>, <textarea> and <select> elements.`, + [58]: `v-model argument is not supported on plain elements.`, + [59]: `v-model cannot be used on file inputs since they are read-only. Use a v-on:change listener instead.`, + [60]: `Unnecessary value binding used alongside v-model. It will interfere with v-model's behavior.`, + [61]: `v-show is missing expression.`, + [62]: `<Transition> expects exactly one child element or component.`, + [63]: `Tags with side effect (<script> and <style>) are ignored in client component templates.` + }; + + const transformVHtml = (dir, node, context) => { + const { exp, loc } = dir; + if (!exp) { + context.onError( + createDOMCompilerError(53, loc) + ); + } + if (node.children.length) { + context.onError( + createDOMCompilerError(54, loc) + ); + node.children.length = 0; + } + return { + props: [ + compilerCore.createObjectProperty( + compilerCore.createSimpleExpression(`innerHTML`, true, loc), + exp || compilerCore.createSimpleExpression("", true) + ) + ] + }; + }; + + const transformVText = (dir, node, context) => { + const { exp, loc } = dir; + if (!exp) { + context.onError( + createDOMCompilerError(55, loc) + ); + } + if (node.children.length) { + context.onError( + createDOMCompilerError(56, loc) + ); + node.children.length = 0; + } + return { + props: [ + compilerCore.createObjectProperty( + compilerCore.createSimpleExpression(`textContent`, true), + exp ? compilerCore.getConstantType(exp, context) > 0 ? exp : compilerCore.createCallExpression( + context.helperString(compilerCore.TO_DISPLAY_STRING), + [exp], + loc + ) : compilerCore.createSimpleExpression("", true) + ) + ] + }; + }; + + const transformModel = (dir, node, context) => { + const baseResult = compilerCore.transformModel(dir, node, context); + if (!baseResult.props.length || node.tagType === 1) { + return baseResult; + } + if (dir.arg) { + context.onError( + createDOMCompilerError( + 58, + dir.arg.loc + ) + ); + } + function checkDuplicatedValue() { + const value = compilerCore.findDir(node, "bind"); + if (value && compilerCore.isStaticArgOf(value.arg, "value")) { + context.onError( + createDOMCompilerError( + 60, + value.loc + ) + ); + } + } + const { tag } = node; + const isCustomElement = context.isCustomElement(tag); + if (tag === "input" || tag === "textarea" || tag === "select" || isCustomElement) { + let directiveToUse = V_MODEL_TEXT; + let isInvalidType = false; + if (tag === "input" || isCustomElement) { + const type = compilerCore.findProp(node, `type`); + if (type) { + if (type.type === 7) { + directiveToUse = V_MODEL_DYNAMIC; + } else if (type.value) { + switch (type.value.content) { + case "radio": + directiveToUse = V_MODEL_RADIO; + break; + case "checkbox": + directiveToUse = V_MODEL_CHECKBOX; + break; + case "file": + isInvalidType = true; + context.onError( + createDOMCompilerError( + 59, + dir.loc + ) + ); + break; + default: + checkDuplicatedValue(); + break; + } + } + } else if (compilerCore.hasDynamicKeyVBind(node)) { + directiveToUse = V_MODEL_DYNAMIC; + } else { + checkDuplicatedValue(); + } + } else if (tag === "select") { + directiveToUse = V_MODEL_SELECT; + } else { + checkDuplicatedValue(); + } + if (!isInvalidType) { + baseResult.needRuntime = context.helper(directiveToUse); + } + } else { + context.onError( + createDOMCompilerError( + 57, + dir.loc + ) + ); + } + baseResult.props = baseResult.props.filter( + (p) => !(p.key.type === 4 && p.key.content === "modelValue") + ); + return baseResult; + }; + + const isEventOptionModifier = /* @__PURE__ */ shared.makeMap(`passive,once,capture`); + const isNonKeyModifier = /* @__PURE__ */ shared.makeMap( + // event propagation management + `stop,prevent,self,ctrl,shift,alt,meta,exact,middle` + ); + const maybeKeyModifier = /* @__PURE__ */ shared.makeMap("left,right"); + const isKeyboardEvent = /* @__PURE__ */ shared.makeMap( + `onkeyup,onkeydown,onkeypress`, + true + ); + const resolveModifiers = (key, modifiers, context, loc) => { + const keyModifiers = []; + const nonKeyModifiers = []; + const eventOptionModifiers = []; + for (let i = 0; i < modifiers.length; i++) { + const modifier = modifiers[i]; + if (modifier === "native" && compilerCore.checkCompatEnabled( + "COMPILER_V_ON_NATIVE", + context, + loc + )) { + eventOptionModifiers.push(modifier); + } else if (isEventOptionModifier(modifier)) { + eventOptionModifiers.push(modifier); + } else { + if (maybeKeyModifier(modifier)) { + if (compilerCore.isStaticExp(key)) { + if (isKeyboardEvent(key.content)) { + keyModifiers.push(modifier); + } else { + nonKeyModifiers.push(modifier); + } + } else { + keyModifiers.push(modifier); + nonKeyModifiers.push(modifier); + } + } else { + if (isNonKeyModifier(modifier)) { + nonKeyModifiers.push(modifier); + } else { + keyModifiers.push(modifier); + } + } + } + } + return { + keyModifiers, + nonKeyModifiers, + eventOptionModifiers + }; + }; + const transformClick = (key, event) => { + const isStaticClick = compilerCore.isStaticExp(key) && key.content.toLowerCase() === "onclick"; + return isStaticClick ? compilerCore.createSimpleExpression(event, true) : key.type !== 4 ? compilerCore.createCompoundExpression([ + `(`, + key, + `) === "onClick" ? "${event}" : (`, + key, + `)` + ]) : key; + }; + const transformOn = (dir, node, context) => { + return compilerCore.transformOn(dir, node, context, (baseResult) => { + const { modifiers } = dir; + if (!modifiers.length) + return baseResult; + let { key, value: handlerExp } = baseResult.props[0]; + const { keyModifiers, nonKeyModifiers, eventOptionModifiers } = resolveModifiers(key, modifiers, context, dir.loc); + if (nonKeyModifiers.includes("right")) { + key = transformClick(key, `onContextmenu`); + } + if (nonKeyModifiers.includes("middle")) { + key = transformClick(key, `onMouseup`); + } + if (nonKeyModifiers.length) { + handlerExp = compilerCore.createCallExpression(context.helper(V_ON_WITH_MODIFIERS), [ + handlerExp, + JSON.stringify(nonKeyModifiers) + ]); + } + if (keyModifiers.length && // if event name is dynamic, always wrap with keys guard + (!compilerCore.isStaticExp(key) || isKeyboardEvent(key.content))) { + handlerExp = compilerCore.createCallExpression(context.helper(V_ON_WITH_KEYS), [ + handlerExp, + JSON.stringify(keyModifiers) + ]); + } + if (eventOptionModifiers.length) { + const modifierPostfix = eventOptionModifiers.map(shared.capitalize).join(""); + key = compilerCore.isStaticExp(key) ? compilerCore.createSimpleExpression(`${key.content}${modifierPostfix}`, true) : compilerCore.createCompoundExpression([`(`, key, `) + "${modifierPostfix}"`]); + } + return { + props: [compilerCore.createObjectProperty(key, handlerExp)] + }; + }); + }; + + const transformShow = (dir, node, context) => { + const { exp, loc } = dir; + if (!exp) { + context.onError( + createDOMCompilerError(61, loc) + ); + } + return { + props: [], + needRuntime: context.helper(V_SHOW) + }; + }; + + const transformTransition = (node, context) => { + if (node.type === 1 && node.tagType === 1) { + const component = context.isBuiltInComponent(node.tag); + if (component === TRANSITION) { + return () => { + if (!node.children.length) { + return; + } + if (hasMultipleChildren(node)) { + context.onError( + createDOMCompilerError( + 62, + { + start: node.children[0].loc.start, + end: node.children[node.children.length - 1].loc.end, + source: "" + } + ) + ); + } + const child = node.children[0]; + if (child.type === 1) { + for (const p of child.props) { + if (p.type === 7 && p.name === "show") { + node.props.push({ + type: 6, + name: "persisted", + nameLoc: node.loc, + value: void 0, + loc: node.loc + }); + } + } + } + }; + } + } + }; + function hasMultipleChildren(node) { + const children = node.children = node.children.filter( + (c) => c.type !== 3 && !(c.type === 2 && !c.content.trim()) + ); + const child = children[0]; + return children.length !== 1 || child.type === 11 || child.type === 9 && child.branches.some(hasMultipleChildren); + } + + const expReplaceRE = /__VUE_EXP_START__(.*?)__VUE_EXP_END__/g; + const stringifyStatic = (children, context, parent) => { + if (context.scopes.vSlot > 0) { + return; + } + let nc = 0; + let ec = 0; + const currentChunk = []; + const stringifyCurrentChunk = (currentIndex) => { + if (nc >= 20 || ec >= 5) { + const staticCall = compilerCore.createCallExpression(context.helper(compilerCore.CREATE_STATIC), [ + JSON.stringify( + currentChunk.map((node) => stringifyNode(node, context)).join("") + ).replace(expReplaceRE, `" + $1 + "`), + // the 2nd argument indicates the number of DOM nodes this static vnode + // will insert / hydrate + String(currentChunk.length) + ]); + replaceHoist(currentChunk[0], staticCall, context); + if (currentChunk.length > 1) { + for (let i2 = 1; i2 < currentChunk.length; i2++) { + replaceHoist(currentChunk[i2], null, context); + } + const deleteCount = currentChunk.length - 1; + children.splice(currentIndex - currentChunk.length + 1, deleteCount); + return deleteCount; + } + } + return 0; + }; + let i = 0; + for (; i < children.length; i++) { + const child = children[i]; + const hoisted = getHoistedNode(child); + if (hoisted) { + const node = child; + const result = analyzeNode(node); + if (result) { + nc += result[0]; + ec += result[1]; + currentChunk.push(node); + continue; + } + } + i -= stringifyCurrentChunk(i); + nc = 0; + ec = 0; + currentChunk.length = 0; + } + stringifyCurrentChunk(i); + }; + const getHoistedNode = (node) => (node.type === 1 && node.tagType === 0 || node.type == 12) && node.codegenNode && node.codegenNode.type === 4 && node.codegenNode.hoisted; + const dataAriaRE = /^(data|aria)-/; + const isStringifiableAttr = (name, ns) => { + return (ns === 0 ? shared.isKnownHtmlAttr(name) : ns === 1 ? shared.isKnownSvgAttr(name) : false) || dataAriaRE.test(name); + }; + const replaceHoist = (node, replacement, context) => { + const hoistToReplace = node.codegenNode.hoisted; + context.hoists[context.hoists.indexOf(hoistToReplace)] = replacement; + }; + const isNonStringifiable = /* @__PURE__ */ shared.makeMap( + `caption,thead,tr,th,tbody,td,tfoot,colgroup,col` + ); + function analyzeNode(node) { + if (node.type === 1 && isNonStringifiable(node.tag)) { + return false; + } + if (node.type === 12) { + return [1, 0]; + } + let nc = 1; + let ec = node.props.length > 0 ? 1 : 0; + let bailed = false; + const bail = () => { + bailed = true; + return false; + }; + function walk(node2) { + for (let i = 0; i < node2.props.length; i++) { + const p = node2.props[i]; + if (p.type === 6 && !isStringifiableAttr(p.name, node2.ns)) { + return bail(); + } + if (p.type === 7 && p.name === "bind") { + if (p.arg && (p.arg.type === 8 || p.arg.isStatic && !isStringifiableAttr(p.arg.content, node2.ns))) { + return bail(); + } + if (p.exp && (p.exp.type === 8 || p.exp.constType < 3)) { + return bail(); + } + } + } + for (let i = 0; i < node2.children.length; i++) { + nc++; + const child = node2.children[i]; + if (child.type === 1) { + if (child.props.length > 0) { + ec++; + } + walk(child); + if (bailed) { + return false; + } + } + } + return true; + } + return walk(node) ? [nc, ec] : false; + } + function stringifyNode(node, context) { + if (shared.isString(node)) { + return node; + } + if (shared.isSymbol(node)) { + return ``; + } + switch (node.type) { + case 1: + return stringifyElement(node, context); + case 2: + return shared.escapeHtml(node.content); + case 3: + return `<!--${shared.escapeHtml(node.content)}-->`; + case 5: + return shared.escapeHtml(shared.toDisplayString(evaluateConstant(node.content))); + case 8: + return shared.escapeHtml(evaluateConstant(node)); + case 12: + return stringifyNode(node.content, context); + default: + return ""; + } + } + function stringifyElement(node, context) { + let res = `<${node.tag}`; + let innerHTML = ""; + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 6) { + res += ` ${p.name}`; + if (p.value) { + res += `="${shared.escapeHtml(p.value.content)}"`; + } + } else if (p.type === 7) { + if (p.name === "bind") { + const exp = p.exp; + if (exp.content[0] === "_") { + res += ` ${p.arg.content}="__VUE_EXP_START__${exp.content}__VUE_EXP_END__"`; + continue; + } + if (shared.isBooleanAttr(p.arg.content) && exp.content === "false") { + continue; + } + let evaluated = evaluateConstant(exp); + if (evaluated != null) { + const arg = p.arg && p.arg.content; + if (arg === "class") { + evaluated = shared.normalizeClass(evaluated); + } else if (arg === "style") { + evaluated = shared.stringifyStyle(shared.normalizeStyle(evaluated)); + } + res += ` ${p.arg.content}="${shared.escapeHtml( + evaluated + )}"`; + } + } else if (p.name === "html") { + innerHTML = evaluateConstant(p.exp); + } else if (p.name === "text") { + innerHTML = shared.escapeHtml( + shared.toDisplayString(evaluateConstant(p.exp)) + ); + } + } + } + if (context.scopeId) { + res += ` ${context.scopeId}`; + } + res += `>`; + if (innerHTML) { + res += innerHTML; + } else { + for (let i = 0; i < node.children.length; i++) { + res += stringifyNode(node.children[i], context); + } + } + if (!shared.isVoidTag(node.tag)) { + res += `</${node.tag}>`; + } + return res; + } + function evaluateConstant(exp) { + if (exp.type === 4) { + return new Function(`return (${exp.content})`)(); + } else { + let res = ``; + exp.children.forEach((c) => { + if (shared.isString(c) || shared.isSymbol(c)) { + return; + } + if (c.type === 2) { + res += c.content; + } else if (c.type === 5) { + res += shared.toDisplayString(evaluateConstant(c.content)); + } else { + res += evaluateConstant(c); + } + }); + return res; + } + } + + const ignoreSideEffectTags = (node, context) => { + if (node.type === 1 && node.tagType === 0 && (node.tag === "script" || node.tag === "style")) { + context.onError( + createDOMCompilerError( + 63, + node.loc + ) + ); + context.removeNode(); + } + }; + + const DOMNodeTransforms = [ + transformStyle, + ...[transformTransition] + ]; + const DOMDirectiveTransforms = { + cloak: compilerCore.noopDirectiveTransform, + html: transformVHtml, + text: transformVText, + model: transformModel, + // override compiler-core + on: transformOn, + // override compiler-core + show: transformShow + }; + function compile(src, options = {}) { + return compilerCore.baseCompile( + src, + shared.extend({}, parserOptions, options, { + nodeTransforms: [ + // ignore <script> and <tag> + // this is not put inside DOMNodeTransforms because that list is used + // by compiler-ssr to generate vnode fallback branches + ignoreSideEffectTags, + ...DOMNodeTransforms, + ...options.nodeTransforms || [] + ], + directiveTransforms: shared.extend( + {}, + DOMDirectiveTransforms, + options.directiveTransforms || {} + ), + transformHoist: stringifyStatic + }) + ); + } + function parse(template, options = {}) { + return compilerCore.baseParse(template, shared.extend({}, parserOptions, options)); + } + + exports.DOMDirectiveTransforms = DOMDirectiveTransforms; + exports.DOMErrorCodes = DOMErrorCodes; + exports.DOMErrorMessages = DOMErrorMessages; + exports.DOMNodeTransforms = DOMNodeTransforms; + exports.TRANSITION = TRANSITION; + exports.TRANSITION_GROUP = TRANSITION_GROUP; + exports.V_MODEL_CHECKBOX = V_MODEL_CHECKBOX; + exports.V_MODEL_DYNAMIC = V_MODEL_DYNAMIC; + exports.V_MODEL_RADIO = V_MODEL_RADIO; + exports.V_MODEL_SELECT = V_MODEL_SELECT; + exports.V_MODEL_TEXT = V_MODEL_TEXT; + exports.V_ON_WITH_KEYS = V_ON_WITH_KEYS; + exports.V_ON_WITH_MODIFIERS = V_ON_WITH_MODIFIERS; + exports.V_SHOW = V_SHOW; + exports.compile = compile; + exports.createDOMCompilerError = createDOMCompilerError; + exports.parse = parse; + exports.parserOptions = parserOptions; + exports.transformStyle = transformStyle; + Object.keys(compilerCore).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = compilerCore[k]; + }); +} (compilerDom_cjs)); + +var cjs = {}; + +var balancedMatch = balanced$1; +function balanced$1(a, b, str) { + if (a instanceof RegExp) a = maybeMatch(a, str); + if (b instanceof RegExp) b = maybeMatch(b, str); + + var r = range$2(a, b, str); + + return r && { + start: r[0], + end: r[1], + pre: str.slice(0, r[0]), + body: str.slice(r[0] + a.length, r[1]), + post: str.slice(r[1] + b.length) + }; +} + +function maybeMatch(reg, str) { + var m = str.match(reg); + return m ? m[0] : null; +} + +balanced$1.range = range$2; +function range$2(a, b, str) { + var begs, beg, left, right, result; + var ai = str.indexOf(a); + var bi = str.indexOf(b, ai + 1); + var i = ai; + + if (ai >= 0 && bi > 0) { + if(a===b) { + return [ai, bi]; + } + begs = []; + left = str.length; + + while (i >= 0 && !result) { + if (i == ai) { + begs.push(i); + ai = str.indexOf(a, i + 1); + } else if (begs.length == 1) { + result = [ begs.pop(), bi ]; + } else { + beg = begs.pop(); + if (beg < left) { + left = beg; + right = bi; + } + + bi = str.indexOf(b, i + 1); + } + + i = ai < bi && ai >= 0 ? ai : bi; + } + + if (begs.length) { + result = [ left, right ]; + } + } + + return result; +} + +var balanced = balancedMatch; + +var braceExpansion = expandTop; + +var escSlash = '\0SLASH'+Math.random()+'\0'; +var escOpen = '\0OPEN'+Math.random()+'\0'; +var escClose = '\0CLOSE'+Math.random()+'\0'; +var escComma = '\0COMMA'+Math.random()+'\0'; +var escPeriod = '\0PERIOD'+Math.random()+'\0'; + +function numeric$1(str) { + return parseInt(str, 10) == str + ? parseInt(str, 10) + : str.charCodeAt(0); +} + +function escapeBraces(str) { + return str.split('\\\\').join(escSlash) + .split('\\{').join(escOpen) + .split('\\}').join(escClose) + .split('\\,').join(escComma) + .split('\\.').join(escPeriod); +} + +function unescapeBraces(str) { + return str.split(escSlash).join('\\') + .split(escOpen).join('{') + .split(escClose).join('}') + .split(escComma).join(',') + .split(escPeriod).join('.'); +} + + +// Basically just str.split(","), but handling cases +// where we have nested braced sections, which should be +// treated as individual members, like {a,{b,c},d} +function parseCommaParts(str) { + if (!str) + return ['']; + + var parts = []; + var m = balanced('{', '}', str); + + if (!m) + return str.split(','); + + var pre = m.pre; + var body = m.body; + var post = m.post; + var p = pre.split(','); + + p[p.length-1] += '{' + body + '}'; + var postParts = parseCommaParts(post); + if (post.length) { + p[p.length-1] += postParts.shift(); + p.push.apply(p, postParts); + } + + parts.push.apply(parts, p); + + return parts; +} + +function expandTop(str) { + if (!str) + return []; + + // I don't know why Bash 4.3 does this, but it does. + // Anything starting with {} will have the first two bytes preserved + // but *only* at the top level, so {},a}b will not expand to anything, + // but a{},b}c will be expanded to [a}c,abc]. + // One could argue that this is a bug in Bash, but since the goal of + // this module is to match Bash's rules, we escape a leading {} + if (str.substr(0, 2) === '{}') { + str = '\\{\\}' + str.substr(2); + } + + return expand(escapeBraces(str), true).map(unescapeBraces); +} + +function embrace(str) { + return '{' + str + '}'; +} +function isPadded(el) { + return /^-?0\d/.test(el); +} + +function lte$4(i, y) { + return i <= y; +} +function gte$4(i, y) { + return i >= y; +} + +function expand(str, isTop) { + var expansions = []; + + var m = balanced('{', '}', str); + if (!m) return [str]; + + // no need to expand pre, since it is guaranteed to be free of brace-sets + var pre = m.pre; + var post = m.post.length + ? expand(m.post, false) + : ['']; + + if (/\$$/.test(m.pre)) { + for (var k = 0; k < post.length; k++) { + var expansion = pre+ '{' + m.body + '}' + post[k]; + expansions.push(expansion); + } + } else { + var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body); + var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body); + var isSequence = isNumericSequence || isAlphaSequence; + var isOptions = m.body.indexOf(',') >= 0; + if (!isSequence && !isOptions) { + // {a},b} + if (m.post.match(/,.*\}/)) { + str = m.pre + '{' + m.body + escClose + m.post; + return expand(str); + } + return [str]; + } + + var n; + if (isSequence) { + n = m.body.split(/\.\./); + } else { + n = parseCommaParts(m.body); + if (n.length === 1) { + // x{{a,b}}y ==> x{a}y x{b}y + n = expand(n[0], false).map(embrace); + if (n.length === 1) { + return post.map(function(p) { + return m.pre + n[0] + p; + }); + } + } + } + + // at this point, n is the parts, and we know it's not a comma set + // with a single entry. + var N; + + if (isSequence) { + var x = numeric$1(n[0]); + var y = numeric$1(n[1]); + var width = Math.max(n[0].length, n[1].length); + var incr = n.length == 3 + ? Math.abs(numeric$1(n[2])) + : 1; + var test = lte$4; + var reverse = y < x; + if (reverse) { + incr *= -1; + test = gte$4; + } + var pad = n.some(isPadded); + + N = []; + + for (var i = x; test(i, y); i += incr) { + var c; + if (isAlphaSequence) { + c = String.fromCharCode(i); + if (c === '\\') + c = ''; + } else { + c = String(i); + if (pad) { + var need = width - c.length; + if (need > 0) { + var z = new Array(need + 1).join('0'); + if (i < 0) + c = '-' + z + c.slice(1); + else + c = z + c; + } + } + } + N.push(c); + } + } else { + N = []; + + for (var j = 0; j < n.length; j++) { + N.push.apply(N, expand(n[j], false)); + } + } + + for (var j = 0; j < N.length; j++) { + for (var k = 0; k < post.length; k++) { + var expansion = pre + N[j] + post[k]; + if (!isTop || isSequence || expansion) + expansions.push(expansion); + } + } + } + + return expansions; +} + +var assertValidPattern$1 = {}; + +Object.defineProperty(assertValidPattern$1, "__esModule", { value: true }); +assertValidPattern$1.assertValidPattern = void 0; +const MAX_PATTERN_LENGTH = 1024 * 64; +const assertValidPattern = (pattern) => { + if (typeof pattern !== 'string') { + throw new TypeError('invalid pattern'); + } + if (pattern.length > MAX_PATTERN_LENGTH) { + throw new TypeError('pattern is too long'); + } +}; +assertValidPattern$1.assertValidPattern = assertValidPattern; + +var ast = {}; + +var braceExpressions = {}; + +// translate the various posix character classes into unicode properties +// this works across all unicode locales +Object.defineProperty(braceExpressions, "__esModule", { value: true }); +braceExpressions.parseClass = void 0; +// { <posix class>: [<translation>, /u flag required, negated] +const posixClasses = { + '[:alnum:]': ['\\p{L}\\p{Nl}\\p{Nd}', true], + '[:alpha:]': ['\\p{L}\\p{Nl}', true], + '[:ascii:]': ['\\x' + '00-\\x' + '7f', false], + '[:blank:]': ['\\p{Zs}\\t', true], + '[:cntrl:]': ['\\p{Cc}', true], + '[:digit:]': ['\\p{Nd}', true], + '[:graph:]': ['\\p{Z}\\p{C}', true, true], + '[:lower:]': ['\\p{Ll}', true], + '[:print:]': ['\\p{C}', true], + '[:punct:]': ['\\p{P}', true], + '[:space:]': ['\\p{Z}\\t\\r\\n\\v\\f', true], + '[:upper:]': ['\\p{Lu}', true], + '[:word:]': ['\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}', true], + '[:xdigit:]': ['A-Fa-f0-9', false], +}; +// only need to escape a few things inside of brace expressions +// escapes: [ \ ] - +const braceEscape = (s) => s.replace(/[[\]\\-]/g, '\\$&'); +// escape all regexp magic characters +const regexpEscape = (s) => s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&'); +// everything has already been escaped, we just have to join +const rangesToString = (ranges) => ranges.join(''); +// takes a glob string at a posix brace expression, and returns +// an equivalent regular expression source, and boolean indicating +// whether the /u flag needs to be applied, and the number of chars +// consumed to parse the character class. +// This also removes out of order ranges, and returns ($.) if the +// entire class just no good. +const parseClass = (glob, position) => { + const pos = position; + /* c8 ignore start */ + if (glob.charAt(pos) !== '[') { + throw new Error('not in a brace expression'); + } + /* c8 ignore stop */ + const ranges = []; + const negs = []; + let i = pos + 1; + let sawStart = false; + let uflag = false; + let escaping = false; + let negate = false; + let endPos = pos; + let rangeStart = ''; + WHILE: while (i < glob.length) { + const c = glob.charAt(i); + if ((c === '!' || c === '^') && i === pos + 1) { + negate = true; + i++; + continue; + } + if (c === ']' && sawStart && !escaping) { + endPos = i + 1; + break; + } + sawStart = true; + if (c === '\\') { + if (!escaping) { + escaping = true; + i++; + continue; + } + // escaped \ char, fall through and treat like normal char + } + if (c === '[' && !escaping) { + // either a posix class, a collation equivalent, or just a [ + for (const [cls, [unip, u, neg]] of Object.entries(posixClasses)) { + if (glob.startsWith(cls, i)) { + // invalid, [a-[] is fine, but not [a-[:alpha]] + if (rangeStart) { + return ['$.', false, glob.length - pos, true]; + } + i += cls.length; + if (neg) + negs.push(unip); + else + ranges.push(unip); + uflag = uflag || u; + continue WHILE; + } + } + } + // now it's just a normal character, effectively + escaping = false; + if (rangeStart) { + // throw this range away if it's not valid, but others + // can still match. + if (c > rangeStart) { + ranges.push(braceEscape(rangeStart) + '-' + braceEscape(c)); + } + else if (c === rangeStart) { + ranges.push(braceEscape(c)); + } + rangeStart = ''; + i++; + continue; + } + // now might be the start of a range. + // can be either c-d or c-] or c<more...>] or c] at this point + if (glob.startsWith('-]', i + 1)) { + ranges.push(braceEscape(c + '-')); + i += 2; + continue; + } + if (glob.startsWith('-', i + 1)) { + rangeStart = c; + i += 2; + continue; + } + // not the start of a range, just a single character + ranges.push(braceEscape(c)); + i++; + } + if (endPos < i) { + // didn't see the end of the class, not a valid class, + // but might still be valid as a literal match. + return ['', false, 0, false]; + } + // if we got no ranges and no negates, then we have a range that + // cannot possibly match anything, and that poisons the whole glob + if (!ranges.length && !negs.length) { + return ['$.', false, glob.length - pos, true]; + } + // if we got one positive range, and it's a single character, then that's + // not actually a magic pattern, it's just that one literal character. + // we should not treat that as "magic", we should just return the literal + // character. [_] is a perfectly valid way to escape glob magic chars. + if (negs.length === 0 && + ranges.length === 1 && + /^\\?.$/.test(ranges[0]) && + !negate) { + const r = ranges[0].length === 2 ? ranges[0].slice(-1) : ranges[0]; + return [regexpEscape(r), false, endPos - pos, false]; + } + const sranges = '[' + (negate ? '^' : '') + rangesToString(ranges) + ']'; + const snegs = '[' + (negate ? '' : '^') + rangesToString(negs) + ']'; + const comb = ranges.length && negs.length + ? '(' + sranges + '|' + snegs + ')' + : ranges.length + ? sranges + : snegs; + return [comb, uflag, endPos - pos, true]; +}; +braceExpressions.parseClass = parseClass; + +var _unescape = {}; + +Object.defineProperty(_unescape, "__esModule", { value: true }); +_unescape.unescape = void 0; +/** + * Un-escape a string that has been escaped with {@link escape}. + * + * If the {@link windowsPathsNoEscape} option is used, then square-brace + * escapes are removed, but not backslash escapes. For example, it will turn + * the string `'[*]'` into `*`, but it will not turn `'\\*'` into `'*'`, + * becuase `\` is a path separator in `windowsPathsNoEscape` mode. + * + * When `windowsPathsNoEscape` is not set, then both brace escapes and + * backslash escapes are removed. + * + * Slashes (and backslashes in `windowsPathsNoEscape` mode) cannot be escaped + * or unescaped. + */ +const unescape$3 = (s, { windowsPathsNoEscape = false, } = {}) => { + return windowsPathsNoEscape + ? s.replace(/\[([^\/\\])\]/g, '$1') + : s.replace(/((?!\\).|^)\[([^\/\\])\]/g, '$1$2').replace(/\\([^\/])/g, '$1'); +}; +_unescape.unescape = unescape$3; + +// parse a single path portion +Object.defineProperty(ast, "__esModule", { value: true }); +ast.AST = void 0; +const brace_expressions_js_1 = braceExpressions; +const unescape_js_1 = _unescape; +const types$2 = new Set(['!', '?', '+', '*', '@']); +const isExtglobType = (c) => types$2.has(c); +// Patterns that get prepended to bind to the start of either the +// entire string, or just a single path portion, to prevent dots +// and/or traversal patterns, when needed. +// Exts don't need the ^ or / bit, because the root binds that already. +const startNoTraversal = '(?!(?:^|/)\\.\\.?(?:$|/))'; +const startNoDot = '(?!\\.)'; +// characters that indicate a start of pattern needs the "no dots" bit, +// because a dot *might* be matched. ( is not in the list, because in +// the case of a child extglob, it will handle the prevention itself. +const addPatternStart = new Set(['[', '.']); +// cases where traversal is A-OK, no dot prevention needed +const justDots = new Set(['..', '.']); +const reSpecials = new Set('().*{}+?[]^$\\!'); +const regExpEscape = (s) => s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&'); +// any single thing other than / +const qmark = '[^/]'; +// * => any number of characters +const star = qmark + '*?'; +// use + when we need to ensure that *something* matches, because the * is +// the only thing in the path portion. +const starNoEmpty = qmark + '+?'; +// remove the \ chars that we added if we end up doing a nonmagic compare +// const deslash = (s: string) => s.replace(/\\(.)/g, '$1') +class AST { + type; + #root; + #hasMagic; + #uflag = false; + #parts = []; + #parent; + #parentIndex; + #negs; + #filledNegs = false; + #options; + #toString; + // set to true if it's an extglob with no children + // (which really means one child of '') + #emptyExt = false; + constructor(type, parent, options = {}) { + this.type = type; + // extglobs are inherently magical + if (type) + this.#hasMagic = true; + this.#parent = parent; + this.#root = this.#parent ? this.#parent.#root : this; + this.#options = this.#root === this ? options : this.#root.#options; + this.#negs = this.#root === this ? [] : this.#root.#negs; + if (type === '!' && !this.#root.#filledNegs) + this.#negs.push(this); + this.#parentIndex = this.#parent ? this.#parent.#parts.length : 0; + } + get hasMagic() { + /* c8 ignore start */ + if (this.#hasMagic !== undefined) + return this.#hasMagic; + /* c8 ignore stop */ + for (const p of this.#parts) { + if (typeof p === 'string') + continue; + if (p.type || p.hasMagic) + return (this.#hasMagic = true); + } + // note: will be undefined until we generate the regexp src and find out + return this.#hasMagic; + } + // reconstructs the pattern + toString() { + if (this.#toString !== undefined) + return this.#toString; + if (!this.type) { + return (this.#toString = this.#parts.map(p => String(p)).join('')); + } + else { + return (this.#toString = + this.type + '(' + this.#parts.map(p => String(p)).join('|') + ')'); + } + } + #fillNegs() { + /* c8 ignore start */ + if (this !== this.#root) + throw new Error('should only call on root'); + if (this.#filledNegs) + return this; + /* c8 ignore stop */ + // call toString() once to fill this out + this.toString(); + this.#filledNegs = true; + let n; + while ((n = this.#negs.pop())) { + if (n.type !== '!') + continue; + // walk up the tree, appending everthing that comes AFTER parentIndex + let p = n; + let pp = p.#parent; + while (pp) { + for (let i = p.#parentIndex + 1; !pp.type && i < pp.#parts.length; i++) { + for (const part of n.#parts) { + /* c8 ignore start */ + if (typeof part === 'string') { + throw new Error('string part in extglob AST??'); + } + /* c8 ignore stop */ + part.copyIn(pp.#parts[i]); + } + } + p = pp; + pp = p.#parent; + } + } + return this; + } + push(...parts) { + for (const p of parts) { + if (p === '') + continue; + /* c8 ignore start */ + if (typeof p !== 'string' && !(p instanceof AST && p.#parent === this)) { + throw new Error('invalid part: ' + p); + } + /* c8 ignore stop */ + this.#parts.push(p); + } + } + toJSON() { + const ret = this.type === null + ? this.#parts.slice().map(p => (typeof p === 'string' ? p : p.toJSON())) + : [this.type, ...this.#parts.map(p => p.toJSON())]; + if (this.isStart() && !this.type) + ret.unshift([]); + if (this.isEnd() && + (this === this.#root || + (this.#root.#filledNegs && this.#parent?.type === '!'))) { + ret.push({}); + } + return ret; + } + isStart() { + if (this.#root === this) + return true; + // if (this.type) return !!this.#parent?.isStart() + if (!this.#parent?.isStart()) + return false; + if (this.#parentIndex === 0) + return true; + // if everything AHEAD of this is a negation, then it's still the "start" + const p = this.#parent; + for (let i = 0; i < this.#parentIndex; i++) { + const pp = p.#parts[i]; + if (!(pp instanceof AST && pp.type === '!')) { + return false; + } + } + return true; + } + isEnd() { + if (this.#root === this) + return true; + if (this.#parent?.type === '!') + return true; + if (!this.#parent?.isEnd()) + return false; + if (!this.type) + return this.#parent?.isEnd(); + // if not root, it'll always have a parent + /* c8 ignore start */ + const pl = this.#parent ? this.#parent.#parts.length : 0; + /* c8 ignore stop */ + return this.#parentIndex === pl - 1; + } + copyIn(part) { + if (typeof part === 'string') + this.push(part); + else + this.push(part.clone(this)); + } + clone(parent) { + const c = new AST(this.type, parent); + for (const p of this.#parts) { + c.copyIn(p); + } + return c; + } + static #parseAST(str, ast, pos, opt) { + let escaping = false; + let inBrace = false; + let braceStart = -1; + let braceNeg = false; + if (ast.type === null) { + // outside of a extglob, append until we find a start + let i = pos; + let acc = ''; + while (i < str.length) { + const c = str.charAt(i++); + // still accumulate escapes at this point, but we do ignore + // starts that are escaped + if (escaping || c === '\\') { + escaping = !escaping; + acc += c; + continue; + } + if (inBrace) { + if (i === braceStart + 1) { + if (c === '^' || c === '!') { + braceNeg = true; + } + } + else if (c === ']' && !(i === braceStart + 2 && braceNeg)) { + inBrace = false; + } + acc += c; + continue; + } + else if (c === '[') { + inBrace = true; + braceStart = i; + braceNeg = false; + acc += c; + continue; + } + if (!opt.noext && isExtglobType(c) && str.charAt(i) === '(') { + ast.push(acc); + acc = ''; + const ext = new AST(c, ast); + i = AST.#parseAST(str, ext, i, opt); + ast.push(ext); + continue; + } + acc += c; + } + ast.push(acc); + return i; + } + // some kind of extglob, pos is at the ( + // find the next | or ) + let i = pos + 1; + let part = new AST(null, ast); + const parts = []; + let acc = ''; + while (i < str.length) { + const c = str.charAt(i++); + // still accumulate escapes at this point, but we do ignore + // starts that are escaped + if (escaping || c === '\\') { + escaping = !escaping; + acc += c; + continue; + } + if (inBrace) { + if (i === braceStart + 1) { + if (c === '^' || c === '!') { + braceNeg = true; + } + } + else if (c === ']' && !(i === braceStart + 2 && braceNeg)) { + inBrace = false; + } + acc += c; + continue; + } + else if (c === '[') { + inBrace = true; + braceStart = i; + braceNeg = false; + acc += c; + continue; + } + if (isExtglobType(c) && str.charAt(i) === '(') { + part.push(acc); + acc = ''; + const ext = new AST(c, part); + part.push(ext); + i = AST.#parseAST(str, ext, i, opt); + continue; + } + if (c === '|') { + part.push(acc); + acc = ''; + parts.push(part); + part = new AST(null, ast); + continue; + } + if (c === ')') { + if (acc === '' && ast.#parts.length === 0) { + ast.#emptyExt = true; + } + part.push(acc); + acc = ''; + ast.push(...parts, part); + return i; + } + acc += c; + } + // unfinished extglob + // if we got here, it was a malformed extglob! not an extglob, but + // maybe something else in there. + ast.type = null; + ast.#hasMagic = undefined; + ast.#parts = [str.substring(pos - 1)]; + return i; + } + static fromGlob(pattern, options = {}) { + const ast = new AST(null, undefined, options); + AST.#parseAST(pattern, ast, 0, options); + return ast; + } + // returns the regular expression if there's magic, or the unescaped + // string if not. + toMMPattern() { + // should only be called on root + /* c8 ignore start */ + if (this !== this.#root) + return this.#root.toMMPattern(); + /* c8 ignore stop */ + const glob = this.toString(); + const [re, body, hasMagic, uflag] = this.toRegExpSource(); + // if we're in nocase mode, and not nocaseMagicOnly, then we do + // still need a regular expression if we have to case-insensitively + // match capital/lowercase characters. + const anyMagic = hasMagic || + this.#hasMagic || + (this.#options.nocase && + !this.#options.nocaseMagicOnly && + glob.toUpperCase() !== glob.toLowerCase()); + if (!anyMagic) { + return body; + } + const flags = (this.#options.nocase ? 'i' : '') + (uflag ? 'u' : ''); + return Object.assign(new RegExp(`^${re}$`, flags), { + _src: re, + _glob: glob, + }); + } + // returns the string match, the regexp source, whether there's magic + // in the regexp (so a regular expression is required) and whether or + // not the uflag is needed for the regular expression (for posix classes) + // TODO: instead of injecting the start/end at this point, just return + // the BODY of the regexp, along with the start/end portions suitable + // for binding the start/end in either a joined full-path makeRe context + // (where we bind to (^|/), or a standalone matchPart context (where + // we bind to ^, and not /). Otherwise slashes get duped! + // + // In part-matching mode, the start is: + // - if not isStart: nothing + // - if traversal possible, but not allowed: ^(?!\.\.?$) + // - if dots allowed or not possible: ^ + // - if dots possible and not allowed: ^(?!\.) + // end is: + // - if not isEnd(): nothing + // - else: $ + // + // In full-path matching mode, we put the slash at the START of the + // pattern, so start is: + // - if first pattern: same as part-matching mode + // - if not isStart(): nothing + // - if traversal possible, but not allowed: /(?!\.\.?(?:$|/)) + // - if dots allowed or not possible: / + // - if dots possible and not allowed: /(?!\.) + // end is: + // - if last pattern, same as part-matching mode + // - else nothing + // + // Always put the (?:$|/) on negated tails, though, because that has to be + // there to bind the end of the negated pattern portion, and it's easier to + // just stick it in now rather than try to inject it later in the middle of + // the pattern. + // + // We can just always return the same end, and leave it up to the caller + // to know whether it's going to be used joined or in parts. + // And, if the start is adjusted slightly, can do the same there: + // - if not isStart: nothing + // - if traversal possible, but not allowed: (?:/|^)(?!\.\.?$) + // - if dots allowed or not possible: (?:/|^) + // - if dots possible and not allowed: (?:/|^)(?!\.) + // + // But it's better to have a simpler binding without a conditional, for + // performance, so probably better to return both start options. + // + // Then the caller just ignores the end if it's not the first pattern, + // and the start always gets applied. + // + // But that's always going to be $ if it's the ending pattern, or nothing, + // so the caller can just attach $ at the end of the pattern when building. + // + // So the todo is: + // - better detect what kind of start is needed + // - return both flavors of starting pattern + // - attach $ at the end of the pattern when creating the actual RegExp + // + // Ah, but wait, no, that all only applies to the root when the first pattern + // is not an extglob. If the first pattern IS an extglob, then we need all + // that dot prevention biz to live in the extglob portions, because eg + // +(*|.x*) can match .xy but not .yx. + // + // So, return the two flavors if it's #root and the first child is not an + // AST, otherwise leave it to the child AST to handle it, and there, + // use the (?:^|/) style of start binding. + // + // Even simplified further: + // - Since the start for a join is eg /(?!\.) and the start for a part + // is ^(?!\.), we can just prepend (?!\.) to the pattern (either root + // or start or whatever) and prepend ^ or / at the Regexp construction. + toRegExpSource(allowDot) { + const dot = allowDot ?? !!this.#options.dot; + if (this.#root === this) + this.#fillNegs(); + if (!this.type) { + const noEmpty = this.isStart() && this.isEnd(); + const src = this.#parts + .map(p => { + const [re, _, hasMagic, uflag] = typeof p === 'string' + ? AST.#parseGlob(p, this.#hasMagic, noEmpty) + : p.toRegExpSource(allowDot); + this.#hasMagic = this.#hasMagic || hasMagic; + this.#uflag = this.#uflag || uflag; + return re; + }) + .join(''); + let start = ''; + if (this.isStart()) { + if (typeof this.#parts[0] === 'string') { + // this is the string that will match the start of the pattern, + // so we need to protect against dots and such. + // '.' and '..' cannot match unless the pattern is that exactly, + // even if it starts with . or dot:true is set. + const dotTravAllowed = this.#parts.length === 1 && justDots.has(this.#parts[0]); + if (!dotTravAllowed) { + const aps = addPatternStart; + // check if we have a possibility of matching . or .., + // and prevent that. + const needNoTrav = + // dots are allowed, and the pattern starts with [ or . + (dot && aps.has(src.charAt(0))) || + // the pattern starts with \., and then [ or . + (src.startsWith('\\.') && aps.has(src.charAt(2))) || + // the pattern starts with \.\., and then [ or . + (src.startsWith('\\.\\.') && aps.has(src.charAt(4))); + // no need to prevent dots if it can't match a dot, or if a + // sub-pattern will be preventing it anyway. + const needNoDot = !dot && !allowDot && aps.has(src.charAt(0)); + start = needNoTrav ? startNoTraversal : needNoDot ? startNoDot : ''; + } + } + } + // append the "end of path portion" pattern to negation tails + let end = ''; + if (this.isEnd() && + this.#root.#filledNegs && + this.#parent?.type === '!') { + end = '(?:$|\\/)'; + } + const final = start + src + end; + return [ + final, + (0, unescape_js_1.unescape)(src), + (this.#hasMagic = !!this.#hasMagic), + this.#uflag, + ]; + } + // We need to calculate the body *twice* if it's a repeat pattern + // at the start, once in nodot mode, then again in dot mode, so a + // pattern like *(?) can match 'x.y' + const repeated = this.type === '*' || this.type === '+'; + // some kind of extglob + const start = this.type === '!' ? '(?:(?!(?:' : '(?:'; + let body = this.#partsToRegExp(dot); + if (this.isStart() && this.isEnd() && !body && this.type !== '!') { + // invalid extglob, has to at least be *something* present, if it's + // the entire path portion. + const s = this.toString(); + this.#parts = [s]; + this.type = null; + this.#hasMagic = undefined; + return [s, (0, unescape_js_1.unescape)(this.toString()), false, false]; + } + // XXX abstract out this map method + let bodyDotAllowed = !repeated || allowDot || dot || !startNoDot + ? '' + : this.#partsToRegExp(true); + if (bodyDotAllowed === body) { + bodyDotAllowed = ''; + } + if (bodyDotAllowed) { + body = `(?:${body})(?:${bodyDotAllowed})*?`; + } + // an empty !() is exactly equivalent to a starNoEmpty + let final = ''; + if (this.type === '!' && this.#emptyExt) { + final = (this.isStart() && !dot ? startNoDot : '') + starNoEmpty; + } + else { + const close = this.type === '!' + ? // !() must match something,but !(x) can match '' + '))' + + (this.isStart() && !dot && !allowDot ? startNoDot : '') + + star + + ')' + : this.type === '@' + ? ')' + : this.type === '?' + ? ')?' + : this.type === '+' && bodyDotAllowed + ? ')' + : this.type === '*' && bodyDotAllowed + ? `)?` + : `)${this.type}`; + final = start + body + close; + } + return [ + final, + (0, unescape_js_1.unescape)(body), + (this.#hasMagic = !!this.#hasMagic), + this.#uflag, + ]; + } + #partsToRegExp(dot) { + return this.#parts + .map(p => { + // extglob ASTs should only contain parent ASTs + /* c8 ignore start */ + if (typeof p === 'string') { + throw new Error('string type in extglob ast??'); + } + /* c8 ignore stop */ + // can ignore hasMagic, because extglobs are already always magic + const [re, _, _hasMagic, uflag] = p.toRegExpSource(dot); + this.#uflag = this.#uflag || uflag; + return re; + }) + .filter(p => !(this.isStart() && this.isEnd()) || !!p) + .join('|'); + } + static #parseGlob(glob, hasMagic, noEmpty = false) { + let escaping = false; + let re = ''; + let uflag = false; + for (let i = 0; i < glob.length; i++) { + const c = glob.charAt(i); + if (escaping) { + escaping = false; + re += (reSpecials.has(c) ? '\\' : '') + c; + continue; + } + if (c === '\\') { + if (i === glob.length - 1) { + re += '\\\\'; + } + else { + escaping = true; + } + continue; + } + if (c === '[') { + const [src, needUflag, consumed, magic] = (0, brace_expressions_js_1.parseClass)(glob, i); + if (consumed) { + re += src; + uflag = uflag || needUflag; + i += consumed - 1; + hasMagic = hasMagic || magic; + continue; + } + } + if (c === '*') { + if (noEmpty && glob === '*') + re += starNoEmpty; + else + re += star; + hasMagic = true; + continue; + } + if (c === '?') { + re += qmark; + hasMagic = true; + continue; + } + re += regExpEscape(c); + } + return [re, (0, unescape_js_1.unescape)(glob), !!hasMagic, uflag]; + } +} +ast.AST = AST; + +var _escape = {}; + +Object.defineProperty(_escape, "__esModule", { value: true }); +_escape.escape = void 0; +/** + * Escape all magic characters in a glob pattern. + * + * If the {@link windowsPathsNoEscape | GlobOptions.windowsPathsNoEscape} + * option is used, then characters are escaped by wrapping in `[]`, because + * a magic character wrapped in a character class can only be satisfied by + * that exact character. In this mode, `\` is _not_ escaped, because it is + * not interpreted as a magic character, but instead as a path separator. + */ +const escape$1 = (s, { windowsPathsNoEscape = false, } = {}) => { + // don't need to escape +@! because we escape the parens + // that make those magic, and escaping ! as [!] isn't valid, + // because [!]] is a valid glob class meaning not ']'. + return windowsPathsNoEscape + ? s.replace(/[?*()[\]]/g, '[$&]') + : s.replace(/[?*()[\]\\]/g, '\\$&'); +}; +_escape.escape = escape$1; + +(function (exports) { + var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.unescape = exports.escape = exports.AST = exports.Minimatch = exports.match = exports.makeRe = exports.braceExpand = exports.defaults = exports.filter = exports.GLOBSTAR = exports.sep = exports.minimatch = void 0; + const brace_expansion_1 = __importDefault(braceExpansion); + const assert_valid_pattern_js_1 = assertValidPattern$1; + const ast_js_1 = ast; + const escape_js_1 = _escape; + const unescape_js_1 = _unescape; + const minimatch = (p, pattern, options = {}) => { + (0, assert_valid_pattern_js_1.assertValidPattern)(pattern); + // shortcut: comments match nothing. + if (!options.nocomment && pattern.charAt(0) === '#') { + return false; + } + return new Minimatch(pattern, options).match(p); + }; + exports.minimatch = minimatch; + // Optimized checking for the most common glob patterns. + const starDotExtRE = /^\*+([^+@!?\*\[\(]*)$/; + const starDotExtTest = (ext) => (f) => !f.startsWith('.') && f.endsWith(ext); + const starDotExtTestDot = (ext) => (f) => f.endsWith(ext); + const starDotExtTestNocase = (ext) => { + ext = ext.toLowerCase(); + return (f) => !f.startsWith('.') && f.toLowerCase().endsWith(ext); + }; + const starDotExtTestNocaseDot = (ext) => { + ext = ext.toLowerCase(); + return (f) => f.toLowerCase().endsWith(ext); + }; + const starDotStarRE = /^\*+\.\*+$/; + const starDotStarTest = (f) => !f.startsWith('.') && f.includes('.'); + const starDotStarTestDot = (f) => f !== '.' && f !== '..' && f.includes('.'); + const dotStarRE = /^\.\*+$/; + const dotStarTest = (f) => f !== '.' && f !== '..' && f.startsWith('.'); + const starRE = /^\*+$/; + const starTest = (f) => f.length !== 0 && !f.startsWith('.'); + const starTestDot = (f) => f.length !== 0 && f !== '.' && f !== '..'; + const qmarksRE = /^\?+([^+@!?\*\[\(]*)?$/; + const qmarksTestNocase = ([$0, ext = '']) => { + const noext = qmarksTestNoExt([$0]); + if (!ext) + return noext; + ext = ext.toLowerCase(); + return (f) => noext(f) && f.toLowerCase().endsWith(ext); + }; + const qmarksTestNocaseDot = ([$0, ext = '']) => { + const noext = qmarksTestNoExtDot([$0]); + if (!ext) + return noext; + ext = ext.toLowerCase(); + return (f) => noext(f) && f.toLowerCase().endsWith(ext); + }; + const qmarksTestDot = ([$0, ext = '']) => { + const noext = qmarksTestNoExtDot([$0]); + return !ext ? noext : (f) => noext(f) && f.endsWith(ext); + }; + const qmarksTest = ([$0, ext = '']) => { + const noext = qmarksTestNoExt([$0]); + return !ext ? noext : (f) => noext(f) && f.endsWith(ext); + }; + const qmarksTestNoExt = ([$0]) => { + const len = $0.length; + return (f) => f.length === len && !f.startsWith('.'); + }; + const qmarksTestNoExtDot = ([$0]) => { + const len = $0.length; + return (f) => f.length === len && f !== '.' && f !== '..'; + }; + /* c8 ignore start */ + const defaultPlatform = (typeof process === 'object' && process + ? (typeof process.env === 'object' && + process.env && + process.env.__MINIMATCH_TESTING_PLATFORM__) || + process.platform + : 'posix'); + const path = { + win32: { sep: '\\' }, + posix: { sep: '/' }, + }; + /* c8 ignore stop */ + exports.sep = defaultPlatform === 'win32' ? path.win32.sep : path.posix.sep; + exports.minimatch.sep = exports.sep; + exports.GLOBSTAR = Symbol('globstar **'); + exports.minimatch.GLOBSTAR = exports.GLOBSTAR; + // any single thing other than / + // don't need to escape / when using new RegExp() + const qmark = '[^/]'; + // * => any number of characters + const star = qmark + '*?'; + // ** when dots are allowed. Anything goes, except .. and . + // not (^ or / followed by one or two dots followed by $ or /), + // followed by anything, any number of times. + const twoStarDot = '(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?'; + // not a ^ or / followed by a dot, + // followed by anything, any number of times. + const twoStarNoDot = '(?:(?!(?:\\/|^)\\.).)*?'; + const filter = (pattern, options = {}) => (p) => (0, exports.minimatch)(p, pattern, options); + exports.filter = filter; + exports.minimatch.filter = exports.filter; + const ext = (a, b = {}) => Object.assign({}, a, b); + const defaults = (def) => { + if (!def || typeof def !== 'object' || !Object.keys(def).length) { + return exports.minimatch; + } + const orig = exports.minimatch; + const m = (p, pattern, options = {}) => orig(p, pattern, ext(def, options)); + return Object.assign(m, { + Minimatch: class Minimatch extends orig.Minimatch { + constructor(pattern, options = {}) { + super(pattern, ext(def, options)); + } + static defaults(options) { + return orig.defaults(ext(def, options)).Minimatch; + } + }, + AST: class AST extends orig.AST { + /* c8 ignore start */ + constructor(type, parent, options = {}) { + super(type, parent, ext(def, options)); + } + /* c8 ignore stop */ + static fromGlob(pattern, options = {}) { + return orig.AST.fromGlob(pattern, ext(def, options)); + } + }, + unescape: (s, options = {}) => orig.unescape(s, ext(def, options)), + escape: (s, options = {}) => orig.escape(s, ext(def, options)), + filter: (pattern, options = {}) => orig.filter(pattern, ext(def, options)), + defaults: (options) => orig.defaults(ext(def, options)), + makeRe: (pattern, options = {}) => orig.makeRe(pattern, ext(def, options)), + braceExpand: (pattern, options = {}) => orig.braceExpand(pattern, ext(def, options)), + match: (list, pattern, options = {}) => orig.match(list, pattern, ext(def, options)), + sep: orig.sep, + GLOBSTAR: exports.GLOBSTAR, + }); + }; + exports.defaults = defaults; + exports.minimatch.defaults = exports.defaults; + // Brace expansion: + // a{b,c}d -> abd acd + // a{b,}c -> abc ac + // a{0..3}d -> a0d a1d a2d a3d + // a{b,c{d,e}f}g -> abg acdfg acefg + // a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg + // + // Invalid sets are not expanded. + // a{2..}b -> a{2..}b + // a{b}c -> a{b}c + const braceExpand = (pattern, options = {}) => { + (0, assert_valid_pattern_js_1.assertValidPattern)(pattern); + // Thanks to Yeting Li <https://github.com/yetingli> for + // improving this regexp to avoid a ReDOS vulnerability. + if (options.nobrace || !/\{(?:(?!\{).)*\}/.test(pattern)) { + // shortcut. no need to expand. + return [pattern]; + } + return (0, brace_expansion_1.default)(pattern); + }; + exports.braceExpand = braceExpand; + exports.minimatch.braceExpand = exports.braceExpand; + // parse a component of the expanded set. + // At this point, no pattern may contain "/" in it + // so we're going to return a 2d array, where each entry is the full + // pattern, split on '/', and then turned into a regular expression. + // A regexp is made at the end which joins each array with an + // escaped /, and another full one which joins each regexp with |. + // + // Following the lead of Bash 4.1, note that "**" only has special meaning + // when it is the *only* thing in a path portion. Otherwise, any series + // of * is equivalent to a single *. Globstar behavior is enabled by + // default, and can be disabled by setting options.noglobstar. + const makeRe = (pattern, options = {}) => new Minimatch(pattern, options).makeRe(); + exports.makeRe = makeRe; + exports.minimatch.makeRe = exports.makeRe; + const match = (list, pattern, options = {}) => { + const mm = new Minimatch(pattern, options); + list = list.filter(f => mm.match(f)); + if (mm.options.nonull && !list.length) { + list.push(pattern); + } + return list; + }; + exports.match = match; + exports.minimatch.match = exports.match; + // replace stuff like \* with * + const globMagic = /[?*]|[+@!]\(.*?\)|\[|\]/; + const regExpEscape = (s) => s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&'); + class Minimatch { + options; + set; + pattern; + windowsPathsNoEscape; + nonegate; + negate; + comment; + empty; + preserveMultipleSlashes; + partial; + globSet; + globParts; + nocase; + isWindows; + platform; + windowsNoMagicRoot; + regexp; + constructor(pattern, options = {}) { + (0, assert_valid_pattern_js_1.assertValidPattern)(pattern); + options = options || {}; + this.options = options; + this.pattern = pattern; + this.platform = options.platform || defaultPlatform; + this.isWindows = this.platform === 'win32'; + this.windowsPathsNoEscape = + !!options.windowsPathsNoEscape || options.allowWindowsEscape === false; + if (this.windowsPathsNoEscape) { + this.pattern = this.pattern.replace(/\\/g, '/'); + } + this.preserveMultipleSlashes = !!options.preserveMultipleSlashes; + this.regexp = null; + this.negate = false; + this.nonegate = !!options.nonegate; + this.comment = false; + this.empty = false; + this.partial = !!options.partial; + this.nocase = !!this.options.nocase; + this.windowsNoMagicRoot = + options.windowsNoMagicRoot !== undefined + ? options.windowsNoMagicRoot + : !!(this.isWindows && this.nocase); + this.globSet = []; + this.globParts = []; + this.set = []; + // make the set of regexps etc. + this.make(); + } + hasMagic() { + if (this.options.magicalBraces && this.set.length > 1) { + return true; + } + for (const pattern of this.set) { + for (const part of pattern) { + if (typeof part !== 'string') + return true; + } + } + return false; + } + debug(..._) { } + make() { + const pattern = this.pattern; + const options = this.options; + // empty patterns and comments match nothing. + if (!options.nocomment && pattern.charAt(0) === '#') { + this.comment = true; + return; + } + if (!pattern) { + this.empty = true; + return; + } + // step 1: figure out negation, etc. + this.parseNegate(); + // step 2: expand braces + this.globSet = [...new Set(this.braceExpand())]; + if (options.debug) { + this.debug = (...args) => console.error(...args); + } + this.debug(this.pattern, this.globSet); + // step 3: now we have a set, so turn each one into a series of + // path-portion matching patterns. + // These will be regexps, except in the case of "**", which is + // set to the GLOBSTAR object for globstar behavior, + // and will not contain any / characters + // + // First, we preprocess to make the glob pattern sets a bit simpler + // and deduped. There are some perf-killing patterns that can cause + // problems with a glob walk, but we can simplify them down a bit. + const rawGlobParts = this.globSet.map(s => this.slashSplit(s)); + this.globParts = this.preprocess(rawGlobParts); + this.debug(this.pattern, this.globParts); + // glob --> regexps + let set = this.globParts.map((s, _, __) => { + if (this.isWindows && this.windowsNoMagicRoot) { + // check if it's a drive or unc path. + const isUNC = s[0] === '' && + s[1] === '' && + (s[2] === '?' || !globMagic.test(s[2])) && + !globMagic.test(s[3]); + const isDrive = /^[a-z]:/i.test(s[0]); + if (isUNC) { + return [...s.slice(0, 4), ...s.slice(4).map(ss => this.parse(ss))]; + } + else if (isDrive) { + return [s[0], ...s.slice(1).map(ss => this.parse(ss))]; + } + } + return s.map(ss => this.parse(ss)); + }); + this.debug(this.pattern, set); + // filter out everything that didn't compile properly. + this.set = set.filter(s => s.indexOf(false) === -1); + // do not treat the ? in UNC paths as magic + if (this.isWindows) { + for (let i = 0; i < this.set.length; i++) { + const p = this.set[i]; + if (p[0] === '' && + p[1] === '' && + this.globParts[i][2] === '?' && + typeof p[3] === 'string' && + /^[a-z]:$/i.test(p[3])) { + p[2] = '?'; + } + } + } + this.debug(this.pattern, this.set); + } + // various transforms to equivalent pattern sets that are + // faster to process in a filesystem walk. The goal is to + // eliminate what we can, and push all ** patterns as far + // to the right as possible, even if it increases the number + // of patterns that we have to process. + preprocess(globParts) { + // if we're not in globstar mode, then turn all ** into * + if (this.options.noglobstar) { + for (let i = 0; i < globParts.length; i++) { + for (let j = 0; j < globParts[i].length; j++) { + if (globParts[i][j] === '**') { + globParts[i][j] = '*'; + } + } + } + } + const { optimizationLevel = 1 } = this.options; + if (optimizationLevel >= 2) { + // aggressive optimization for the purpose of fs walking + globParts = this.firstPhasePreProcess(globParts); + globParts = this.secondPhasePreProcess(globParts); + } + else if (optimizationLevel >= 1) { + // just basic optimizations to remove some .. parts + globParts = this.levelOneOptimize(globParts); + } + else { + globParts = this.adjascentGlobstarOptimize(globParts); + } + return globParts; + } + // just get rid of adjascent ** portions + adjascentGlobstarOptimize(globParts) { + return globParts.map(parts => { + let gs = -1; + while (-1 !== (gs = parts.indexOf('**', gs + 1))) { + let i = gs; + while (parts[i + 1] === '**') { + i++; + } + if (i !== gs) { + parts.splice(gs, i - gs); + } + } + return parts; + }); + } + // get rid of adjascent ** and resolve .. portions + levelOneOptimize(globParts) { + return globParts.map(parts => { + parts = parts.reduce((set, part) => { + const prev = set[set.length - 1]; + if (part === '**' && prev === '**') { + return set; + } + if (part === '..') { + if (prev && prev !== '..' && prev !== '.' && prev !== '**') { + set.pop(); + return set; + } + } + set.push(part); + return set; + }, []); + return parts.length === 0 ? [''] : parts; + }); + } + levelTwoFileOptimize(parts) { + if (!Array.isArray(parts)) { + parts = this.slashSplit(parts); + } + let didSomething = false; + do { + didSomething = false; + // <pre>/<e>/<rest> -> <pre>/<rest> + if (!this.preserveMultipleSlashes) { + for (let i = 1; i < parts.length - 1; i++) { + const p = parts[i]; + // don't squeeze out UNC patterns + if (i === 1 && p === '' && parts[0] === '') + continue; + if (p === '.' || p === '') { + didSomething = true; + parts.splice(i, 1); + i--; + } + } + if (parts[0] === '.' && + parts.length === 2 && + (parts[1] === '.' || parts[1] === '')) { + didSomething = true; + parts.pop(); + } + } + // <pre>/<p>/../<rest> -> <pre>/<rest> + let dd = 0; + while (-1 !== (dd = parts.indexOf('..', dd + 1))) { + const p = parts[dd - 1]; + if (p && p !== '.' && p !== '..' && p !== '**') { + didSomething = true; + parts.splice(dd - 1, 2); + dd -= 2; + } + } + } while (didSomething); + return parts.length === 0 ? [''] : parts; + } + // First phase: single-pattern processing + // <pre> is 1 or more portions + // <rest> is 1 or more portions + // <p> is any portion other than ., .., '', or ** + // <e> is . or '' + // + // **/.. is *brutal* for filesystem walking performance, because + // it effectively resets the recursive walk each time it occurs, + // and ** cannot be reduced out by a .. pattern part like a regexp + // or most strings (other than .., ., and '') can be. + // + // <pre>/**/../<p>/<p>/<rest> -> {<pre>/../<p>/<p>/<rest>,<pre>/**/<p>/<p>/<rest>} + // <pre>/<e>/<rest> -> <pre>/<rest> + // <pre>/<p>/../<rest> -> <pre>/<rest> + // **/**/<rest> -> **/<rest> + // + // **/*/<rest> -> */**/<rest> <== not valid because ** doesn't follow + // this WOULD be allowed if ** did follow symlinks, or * didn't + firstPhasePreProcess(globParts) { + let didSomething = false; + do { + didSomething = false; + // <pre>/**/../<p>/<p>/<rest> -> {<pre>/../<p>/<p>/<rest>,<pre>/**/<p>/<p>/<rest>} + for (let parts of globParts) { + let gs = -1; + while (-1 !== (gs = parts.indexOf('**', gs + 1))) { + let gss = gs; + while (parts[gss + 1] === '**') { + // <pre>/**/**/<rest> -> <pre>/**/<rest> + gss++; + } + // eg, if gs is 2 and gss is 4, that means we have 3 ** + // parts, and can remove 2 of them. + if (gss > gs) { + parts.splice(gs + 1, gss - gs); + } + let next = parts[gs + 1]; + const p = parts[gs + 2]; + const p2 = parts[gs + 3]; + if (next !== '..') + continue; + if (!p || + p === '.' || + p === '..' || + !p2 || + p2 === '.' || + p2 === '..') { + continue; + } + didSomething = true; + // edit parts in place, and push the new one + parts.splice(gs, 1); + const other = parts.slice(0); + other[gs] = '**'; + globParts.push(other); + gs--; + } + // <pre>/<e>/<rest> -> <pre>/<rest> + if (!this.preserveMultipleSlashes) { + for (let i = 1; i < parts.length - 1; i++) { + const p = parts[i]; + // don't squeeze out UNC patterns + if (i === 1 && p === '' && parts[0] === '') + continue; + if (p === '.' || p === '') { + didSomething = true; + parts.splice(i, 1); + i--; + } + } + if (parts[0] === '.' && + parts.length === 2 && + (parts[1] === '.' || parts[1] === '')) { + didSomething = true; + parts.pop(); + } + } + // <pre>/<p>/../<rest> -> <pre>/<rest> + let dd = 0; + while (-1 !== (dd = parts.indexOf('..', dd + 1))) { + const p = parts[dd - 1]; + if (p && p !== '.' && p !== '..' && p !== '**') { + didSomething = true; + const needDot = dd === 1 && parts[dd + 1] === '**'; + const splin = needDot ? ['.'] : []; + parts.splice(dd - 1, 2, ...splin); + if (parts.length === 0) + parts.push(''); + dd -= 2; + } + } + } + } while (didSomething); + return globParts; + } + // second phase: multi-pattern dedupes + // {<pre>/*/<rest>,<pre>/<p>/<rest>} -> <pre>/*/<rest> + // {<pre>/<rest>,<pre>/<rest>} -> <pre>/<rest> + // {<pre>/**/<rest>,<pre>/<rest>} -> <pre>/**/<rest> + // + // {<pre>/**/<rest>,<pre>/**/<p>/<rest>} -> <pre>/**/<rest> + // ^-- not valid because ** doens't follow symlinks + secondPhasePreProcess(globParts) { + for (let i = 0; i < globParts.length - 1; i++) { + for (let j = i + 1; j < globParts.length; j++) { + const matched = this.partsMatch(globParts[i], globParts[j], !this.preserveMultipleSlashes); + if (!matched) + continue; + globParts[i] = matched; + globParts[j] = []; + } + } + return globParts.filter(gs => gs.length); + } + partsMatch(a, b, emptyGSMatch = false) { + let ai = 0; + let bi = 0; + let result = []; + let which = ''; + while (ai < a.length && bi < b.length) { + if (a[ai] === b[bi]) { + result.push(which === 'b' ? b[bi] : a[ai]); + ai++; + bi++; + } + else if (emptyGSMatch && a[ai] === '**' && b[bi] === a[ai + 1]) { + result.push(a[ai]); + ai++; + } + else if (emptyGSMatch && b[bi] === '**' && a[ai] === b[bi + 1]) { + result.push(b[bi]); + bi++; + } + else if (a[ai] === '*' && + b[bi] && + (this.options.dot || !b[bi].startsWith('.')) && + b[bi] !== '**') { + if (which === 'b') + return false; + which = 'a'; + result.push(a[ai]); + ai++; + bi++; + } + else if (b[bi] === '*' && + a[ai] && + (this.options.dot || !a[ai].startsWith('.')) && + a[ai] !== '**') { + if (which === 'a') + return false; + which = 'b'; + result.push(b[bi]); + ai++; + bi++; + } + else { + return false; + } + } + // if we fall out of the loop, it means they two are identical + // as long as their lengths match + return a.length === b.length && result; + } + parseNegate() { + if (this.nonegate) + return; + const pattern = this.pattern; + let negate = false; + let negateOffset = 0; + for (let i = 0; i < pattern.length && pattern.charAt(i) === '!'; i++) { + negate = !negate; + negateOffset++; + } + if (negateOffset) + this.pattern = pattern.slice(negateOffset); + this.negate = negate; + } + // set partial to true to test if, for example, + // "/a/b" matches the start of "/*/b/*/d" + // Partial means, if you run out of file before you run + // out of pattern, then that's fine, as long as all + // the parts match. + matchOne(file, pattern, partial = false) { + const options = this.options; + // UNC paths like //?/X:/... can match X:/... and vice versa + // Drive letters in absolute drive or unc paths are always compared + // case-insensitively. + if (this.isWindows) { + const fileDrive = typeof file[0] === 'string' && /^[a-z]:$/i.test(file[0]); + const fileUNC = !fileDrive && + file[0] === '' && + file[1] === '' && + file[2] === '?' && + /^[a-z]:$/i.test(file[3]); + const patternDrive = typeof pattern[0] === 'string' && /^[a-z]:$/i.test(pattern[0]); + const patternUNC = !patternDrive && + pattern[0] === '' && + pattern[1] === '' && + pattern[2] === '?' && + typeof pattern[3] === 'string' && + /^[a-z]:$/i.test(pattern[3]); + const fdi = fileUNC ? 3 : fileDrive ? 0 : undefined; + const pdi = patternUNC ? 3 : patternDrive ? 0 : undefined; + if (typeof fdi === 'number' && typeof pdi === 'number') { + const [fd, pd] = [file[fdi], pattern[pdi]]; + if (fd.toLowerCase() === pd.toLowerCase()) { + pattern[pdi] = fd; + if (pdi > fdi) { + pattern = pattern.slice(pdi); + } + else if (fdi > pdi) { + file = file.slice(fdi); + } + } + } + } + // resolve and reduce . and .. portions in the file as well. + // dont' need to do the second phase, because it's only one string[] + const { optimizationLevel = 1 } = this.options; + if (optimizationLevel >= 2) { + file = this.levelTwoFileOptimize(file); + } + this.debug('matchOne', this, { file, pattern }); + this.debug('matchOne', file.length, pattern.length); + for (var fi = 0, pi = 0, fl = file.length, pl = pattern.length; fi < fl && pi < pl; fi++, pi++) { + this.debug('matchOne loop'); + var p = pattern[pi]; + var f = file[fi]; + this.debug(pattern, p, f); + // should be impossible. + // some invalid regexp stuff in the set. + /* c8 ignore start */ + if (p === false) { + return false; + } + /* c8 ignore stop */ + if (p === exports.GLOBSTAR) { + this.debug('GLOBSTAR', [pattern, p, f]); + // "**" + // a/**/b/**/c would match the following: + // a/b/x/y/z/c + // a/x/y/z/b/c + // a/b/x/b/x/c + // a/b/c + // To do this, take the rest of the pattern after + // the **, and see if it would match the file remainder. + // If so, return success. + // If not, the ** "swallows" a segment, and try again. + // This is recursively awful. + // + // a/**/b/**/c matching a/b/x/y/z/c + // - a matches a + // - doublestar + // - matchOne(b/x/y/z/c, b/**/c) + // - b matches b + // - doublestar + // - matchOne(x/y/z/c, c) -> no + // - matchOne(y/z/c, c) -> no + // - matchOne(z/c, c) -> no + // - matchOne(c, c) yes, hit + var fr = fi; + var pr = pi + 1; + if (pr === pl) { + this.debug('** at the end'); + // a ** at the end will just swallow the rest. + // We have found a match. + // however, it will not swallow /.x, unless + // options.dot is set. + // . and .. are *never* matched by **, for explosively + // exponential reasons. + for (; fi < fl; fi++) { + if (file[fi] === '.' || + file[fi] === '..' || + (!options.dot && file[fi].charAt(0) === '.')) + return false; + } + return true; + } + // ok, let's see if we can swallow whatever we can. + while (fr < fl) { + var swallowee = file[fr]; + this.debug('\nglobstar while', file, fr, pattern, pr, swallowee); + // XXX remove this slice. Just pass the start index. + if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) { + this.debug('globstar found match!', fr, fl, swallowee); + // found a match. + return true; + } + else { + // can't swallow "." or ".." ever. + // can only swallow ".foo" when explicitly asked. + if (swallowee === '.' || + swallowee === '..' || + (!options.dot && swallowee.charAt(0) === '.')) { + this.debug('dot detected!', file, fr, pattern, pr); + break; + } + // ** swallows a segment, and continue. + this.debug('globstar swallow a segment, and continue'); + fr++; + } + } + // no match was found. + // However, in partial mode, we can't say this is necessarily over. + /* c8 ignore start */ + if (partial) { + // ran out of file + this.debug('\n>>> no match, partial?', file, fr, pattern, pr); + if (fr === fl) { + return true; + } + } + /* c8 ignore stop */ + return false; + } + // something other than ** + // non-magic patterns just have to match exactly + // patterns with magic have been turned into regexps. + let hit; + if (typeof p === 'string') { + hit = f === p; + this.debug('string match', p, f, hit); + } + else { + hit = p.test(f); + this.debug('pattern match', p, f, hit); + } + if (!hit) + return false; + } + // Note: ending in / means that we'll get a final "" + // at the end of the pattern. This can only match a + // corresponding "" at the end of the file. + // If the file ends in /, then it can only match a + // a pattern that ends in /, unless the pattern just + // doesn't have any more for it. But, a/b/ should *not* + // match "a/b/*", even though "" matches against the + // [^/]*? pattern, except in partial mode, where it might + // simply not be reached yet. + // However, a/b/ should still satisfy a/* + // now either we fell off the end of the pattern, or we're done. + if (fi === fl && pi === pl) { + // ran out of pattern and filename at the same time. + // an exact hit! + return true; + } + else if (fi === fl) { + // ran out of file, but still had pattern left. + // this is ok if we're doing the match as part of + // a glob fs traversal. + return partial; + } + else if (pi === pl) { + // ran out of pattern, still have file left. + // this is only acceptable if we're on the very last + // empty segment of a file with a trailing slash. + // a/* should match a/b/ + return fi === fl - 1 && file[fi] === ''; + /* c8 ignore start */ + } + else { + // should be unreachable. + throw new Error('wtf?'); + } + /* c8 ignore stop */ + } + braceExpand() { + return (0, exports.braceExpand)(this.pattern, this.options); + } + parse(pattern) { + (0, assert_valid_pattern_js_1.assertValidPattern)(pattern); + const options = this.options; + // shortcuts + if (pattern === '**') + return exports.GLOBSTAR; + if (pattern === '') + return ''; + // far and away, the most common glob pattern parts are + // *, *.*, and *.<ext> Add a fast check method for those. + let m; + let fastTest = null; + if ((m = pattern.match(starRE))) { + fastTest = options.dot ? starTestDot : starTest; + } + else if ((m = pattern.match(starDotExtRE))) { + fastTest = (options.nocase + ? options.dot + ? starDotExtTestNocaseDot + : starDotExtTestNocase + : options.dot + ? starDotExtTestDot + : starDotExtTest)(m[1]); + } + else if ((m = pattern.match(qmarksRE))) { + fastTest = (options.nocase + ? options.dot + ? qmarksTestNocaseDot + : qmarksTestNocase + : options.dot + ? qmarksTestDot + : qmarksTest)(m); + } + else if ((m = pattern.match(starDotStarRE))) { + fastTest = options.dot ? starDotStarTestDot : starDotStarTest; + } + else if ((m = pattern.match(dotStarRE))) { + fastTest = dotStarTest; + } + const re = ast_js_1.AST.fromGlob(pattern, this.options).toMMPattern(); + return fastTest ? Object.assign(re, { test: fastTest }) : re; + } + makeRe() { + if (this.regexp || this.regexp === false) + return this.regexp; + // at this point, this.set is a 2d array of partial + // pattern strings, or "**". + // + // It's better to use .match(). This function shouldn't + // be used, really, but it's pretty convenient sometimes, + // when you just want to work with a regex. + const set = this.set; + if (!set.length) { + this.regexp = false; + return this.regexp; + } + const options = this.options; + const twoStar = options.noglobstar + ? star + : options.dot + ? twoStarDot + : twoStarNoDot; + const flags = new Set(options.nocase ? ['i'] : []); + // regexpify non-globstar patterns + // if ** is only item, then we just do one twoStar + // if ** is first, and there are more, prepend (\/|twoStar\/)? to next + // if ** is last, append (\/twoStar|) to previous + // if ** is in the middle, append (\/|\/twoStar\/) to previous + // then filter out GLOBSTAR symbols + let re = set + .map(pattern => { + const pp = pattern.map(p => { + if (p instanceof RegExp) { + for (const f of p.flags.split('')) + flags.add(f); + } + return typeof p === 'string' + ? regExpEscape(p) + : p === exports.GLOBSTAR + ? exports.GLOBSTAR + : p._src; + }); + pp.forEach((p, i) => { + const next = pp[i + 1]; + const prev = pp[i - 1]; + if (p !== exports.GLOBSTAR || prev === exports.GLOBSTAR) { + return; + } + if (prev === undefined) { + if (next !== undefined && next !== exports.GLOBSTAR) { + pp[i + 1] = '(?:\\/|' + twoStar + '\\/)?' + next; + } + else { + pp[i] = twoStar; + } + } + else if (next === undefined) { + pp[i - 1] = prev + '(?:\\/|' + twoStar + ')?'; + } + else if (next !== exports.GLOBSTAR) { + pp[i - 1] = prev + '(?:\\/|\\/' + twoStar + '\\/)' + next; + pp[i + 1] = exports.GLOBSTAR; + } + }); + return pp.filter(p => p !== exports.GLOBSTAR).join('/'); + }) + .join('|'); + // need to wrap in parens if we had more than one thing with |, + // otherwise only the first will be anchored to ^ and the last to $ + const [open, close] = set.length > 1 ? ['(?:', ')'] : ['', '']; + // must match entire pattern + // ending in a * or ** will make it less strict. + re = '^' + open + re + close + '$'; + // can match anything, as long as it's not this. + if (this.negate) + re = '^(?!' + re + ').+$'; + try { + this.regexp = new RegExp(re, [...flags].join('')); + /* c8 ignore start */ + } + catch (ex) { + // should be impossible + this.regexp = false; + } + /* c8 ignore stop */ + return this.regexp; + } + slashSplit(p) { + // if p starts with // on windows, we preserve that + // so that UNC paths aren't broken. Otherwise, any number of + // / characters are coalesced into one, unless + // preserveMultipleSlashes is set to true. + if (this.preserveMultipleSlashes) { + return p.split('/'); + } + else if (this.isWindows && /^\/\/[^\/]+/.test(p)) { + // add an extra '' for the one we lose + return ['', ...p.split(/\/+/)]; + } + else { + return p.split(/\/+/); + } + } + match(f, partial = this.partial) { + this.debug('match', f, this.pattern); + // short-circuit in the case of busted things. + // comments, etc. + if (this.comment) { + return false; + } + if (this.empty) { + return f === ''; + } + if (f === '/' && partial) { + return true; + } + const options = this.options; + // windows: need to use /, not \ + if (this.isWindows) { + f = f.split('\\').join('/'); + } + // treat the test path as a set of pathparts. + const ff = this.slashSplit(f); + this.debug(this.pattern, 'split', ff); + // just ONE of the pattern sets in this.set needs to match + // in order for it to be valid. If negating, then just one + // match means that we have failed. + // Either way, return on the first hit. + const set = this.set; + this.debug(this.pattern, 'set', set); + // Find the basename of the path by looking for the last non-empty segment + let filename = ff[ff.length - 1]; + if (!filename) { + for (let i = ff.length - 2; !filename && i >= 0; i--) { + filename = ff[i]; + } + } + for (let i = 0; i < set.length; i++) { + const pattern = set[i]; + let file = ff; + if (options.matchBase && pattern.length === 1) { + file = [filename]; + } + const hit = this.matchOne(file, pattern, partial); + if (hit) { + if (options.flipNegate) { + return true; + } + return !this.negate; + } + } + // didn't get any hits. this is success if it's a negative + // pattern, failure otherwise. + if (options.flipNegate) { + return false; + } + return this.negate; + } + static defaults(def) { + return exports.minimatch.defaults(def).Minimatch; + } + } + exports.Minimatch = Minimatch; + /* c8 ignore start */ + var ast_js_2 = ast; + Object.defineProperty(exports, "AST", { enumerable: true, get: function () { return ast_js_2.AST; } }); + var escape_js_2 = _escape; + Object.defineProperty(exports, "escape", { enumerable: true, get: function () { return escape_js_2.escape; } }); + var unescape_js_2 = _unescape; + Object.defineProperty(exports, "unescape", { enumerable: true, get: function () { return unescape_js_2.unescape; } }); + /* c8 ignore stop */ + exports.minimatch.AST = ast_js_1.AST; + exports.minimatch.Minimatch = Minimatch; + exports.minimatch.escape = escape_js_1.escape; + exports.minimatch.unescape = unescape_js_1.unescape; + +} (cjs)); + +var shared$1 = {}; + +(function (exports) { + Object.defineProperty(exports, "__esModule", { value: true }); + exports.hyphenateAttr = exports.hyphenateTag = exports.getSlotsPropertyName = void 0; + const shared_1 = require$$1$1; + function getSlotsPropertyName(vueVersion) { + return vueVersion < 3 ? '$scopedSlots' : '$slots'; + } + exports.getSlotsPropertyName = getSlotsPropertyName; + var shared_2 = require$$1$1; + Object.defineProperty(exports, "hyphenateTag", { enumerable: true, get: function () { return shared_2.hyphenate; } }); + function hyphenateAttr(str) { + let hyphencase = (0, shared_1.hyphenate)(str); + // fix https://github.com/vuejs/core/issues/8811 + if (str.length && str[0] !== str[0].toLowerCase()) { + hyphencase = '-' + hyphencase; + } + return hyphencase; + } + exports.hyphenateAttr = hyphenateAttr; + +} (shared$1)); + +var transform = {}; + +Object.defineProperty(transform, "__esModule", { value: true }); +transform.collectVars = transform.walkInterpolationFragment = void 0; +const shared_1$w = require$$1$1; +function walkInterpolationFragment(ts, code, ast, cb, localVars, identifiers, vueOptions) { + let ctxVars = []; + const varCb = (id, isShorthand) => { + if (localVars.get(id.text) || + // https://github.com/vuejs/core/blob/245230e135152900189f13a4281302de45fdcfaa/packages/compiler-core/src/transforms/transformExpression.ts#L342-L352 + (0, shared_1$w.isGloballyWhitelisted)(id.text) || + id.text === 'require' || + id.text.startsWith('__VLS_')) ; + else { + ctxVars.push({ + text: id.text, + isShorthand: isShorthand, + offset: id.getStart(ast), + }); + identifiers.add(id.text); + } + }; + ast.forEachChild(node => walkIdentifiers(ts, node, varCb, localVars)); + ctxVars = ctxVars.sort((a, b) => a.offset - b.offset); + if (ctxVars.length) { + if (ctxVars[0].isShorthand) { + cb(code.substring(0, ctxVars[0].offset + ctxVars[0].text.length), 0); + cb(': ', undefined); + } + else { + cb(code.substring(0, ctxVars[0].offset), 0); + } + for (let i = 0; i < ctxVars.length - 1; i++) { + // fix https://github.com/vuejs/language-tools/issues/1205 + // fix https://github.com/vuejs/language-tools/issues/1264 + cb('', ctxVars[i + 1].offset, true); + if (vueOptions.experimentalUseElementAccessInTemplate) { + const varStart = ctxVars[i].offset; + const varEnd = ctxVars[i].offset + ctxVars[i].text.length; + cb('__VLS_ctx[', undefined); + cb('', varStart, true); + cb("'", undefined); + cb(code.substring(varStart, varEnd), varStart); + cb("'", undefined); + cb('', varEnd, true); + cb(']', undefined); + if (ctxVars[i + 1].isShorthand) { + cb(code.substring(varEnd, ctxVars[i + 1].offset + ctxVars[i + 1].text.length), varEnd); + cb(': ', undefined); + } + else { + cb(code.substring(varEnd, ctxVars[i + 1].offset), varEnd); + } + } + else { + cb('__VLS_ctx.', undefined); + if (ctxVars[i + 1].isShorthand) { + cb(code.substring(ctxVars[i].offset, ctxVars[i + 1].offset + ctxVars[i + 1].text.length), ctxVars[i].offset); + cb(': ', undefined); + } + else { + cb(code.substring(ctxVars[i].offset, ctxVars[i + 1].offset), ctxVars[i].offset); + } + } + } + if (vueOptions.experimentalUseElementAccessInTemplate) { + const varStart = ctxVars[ctxVars.length - 1].offset; + const varEnd = ctxVars[ctxVars.length - 1].offset + ctxVars[ctxVars.length - 1].text.length; + cb('__VLS_ctx[', undefined); + cb('', varStart, true); + cb("'", undefined); + cb(code.substring(varStart, varEnd), varStart); + cb("'", undefined); + cb('', varEnd, true); + cb(']', undefined); + cb(code.substring(varEnd), varEnd); + } + else { + cb('', ctxVars[ctxVars.length - 1].offset, true); + cb('__VLS_ctx.', undefined); + cb(code.substring(ctxVars[ctxVars.length - 1].offset), ctxVars[ctxVars.length - 1].offset); + } + } + else { + cb(code, 0); + } + return ctxVars; +} +transform.walkInterpolationFragment = walkInterpolationFragment; +function walkIdentifiers(ts, node, cb, localVars, blockVars = [], isRoot = true) { + if (ts.isIdentifier(node)) { + cb(node, false); + } + else if (ts.isShorthandPropertyAssignment(node)) { + cb(node.name, true); + } + else if (ts.isPropertyAccessExpression(node)) { + walkIdentifiers(ts, node.expression, cb, localVars, blockVars, false); + } + else if (ts.isVariableDeclaration(node)) { + collectVars(ts, node.name, blockVars); + for (const varName of blockVars) { + localVars.set(varName, (localVars.get(varName) ?? 0) + 1); + } + if (node.initializer) + walkIdentifiers(ts, node.initializer, cb, localVars, blockVars, false); + } + else if (ts.isArrowFunction(node) || ts.isFunctionExpression(node)) { + const functionArgs = []; + for (const param of node.parameters) { + collectVars(ts, param.name, functionArgs); + if (param.type) { + walkIdentifiers(ts, param.type, cb, localVars, blockVars, false); + } + } + for (const varName of functionArgs) + localVars.set(varName, (localVars.get(varName) ?? 0) + 1); + walkIdentifiers(ts, node.body, cb, localVars, blockVars, false); + for (const varName of functionArgs) + localVars.set(varName, localVars.get(varName) - 1); + } + else if (ts.isObjectLiteralExpression(node)) { + for (const prop of node.properties) { + if (ts.isPropertyAssignment(prop)) { + // fix https://github.com/vuejs/language-tools/issues/1176 + if (ts.isComputedPropertyName(prop.name)) { + walkIdentifiers(ts, prop.name.expression, cb, localVars, blockVars, false); + } + walkIdentifiers(ts, prop.initializer, cb, localVars, blockVars, false); + } + // fix https://github.com/vuejs/language-tools/issues/1156 + else if (ts.isShorthandPropertyAssignment(prop)) { + walkIdentifiers(ts, prop, cb, localVars, blockVars, false); + } + // fix https://github.com/vuejs/language-tools/issues/1148#issuecomment-1094378126 + else if (ts.isSpreadAssignment(prop)) { + // TODO: cannot report "Spread types may only be created from object types.ts(2698)" + walkIdentifiers(ts, prop.expression, cb, localVars, blockVars, false); + } + } + } + else if (ts.isTypeReferenceNode(node)) { + // fix https://github.com/vuejs/language-tools/issues/1422 + node.forEachChild(node => walkIdentifiersInTypeReference(ts, node, cb)); + } + else { + const _blockVars = blockVars; + if (ts.isBlock(node)) { + blockVars = []; + } + node.forEachChild(node => walkIdentifiers(ts, node, cb, localVars, blockVars, false)); + if (ts.isBlock(node)) { + for (const varName of blockVars) { + localVars.set(varName, localVars.get(varName) - 1); + } + } + blockVars = _blockVars; + } + if (isRoot) { + for (const varName of blockVars) { + localVars.set(varName, localVars.get(varName) - 1); + } + } +} +function walkIdentifiersInTypeReference(ts, node, cb) { + if (ts.isTypeQueryNode(node) && ts.isIdentifier(node.exprName)) { + cb(node.exprName, false); + } + else { + node.forEachChild(node => walkIdentifiersInTypeReference(ts, node, cb)); + } +} +function collectVars(ts, node, result) { + if (ts.isIdentifier(node)) { + result.push(node.text); + } + else if (ts.isObjectBindingPattern(node)) { + for (const el of node.elements) { + collectVars(ts, el.name, result); + } + } + else if (ts.isArrayBindingPattern(node)) { + for (const el of node.elements) { + if (ts.isBindingElement(el)) { + collectVars(ts, el.name, result); + } + } + } + else { + node.forEachChild(node => collectVars(ts, node, result)); + } +} +transform.collectVars = collectVars; + +Object.defineProperty(template, "__esModule", { value: true }); +template.walkElementNodes = template.generate = void 0; +const language_core_1$i = languageCore; +const CompilerDOM$2 = compilerDom_cjs; +const shared_1$v = require$$1$1; +const minimatch_1 = cjs; +const muggle$3 = out$9; +const shared_2 = shared$1; +const transform_1$1 = transform; +const capabilitiesPresets = { + all: language_core_1$i.FileRangeCapabilities.full, + allWithHiddenParam: { + ...language_core_1$i.FileRangeCapabilities.full, __hint: { + setting: 'vue.inlayHints.inlineHandlerLeading', + label: '$event =>', + tooltip: [ + '`$event` is a hidden parameter, you can use it in this callback.', + 'To hide this hint, set `vue.inlayHints.inlineHandlerLeading` to `false` in IDE settings.', + '[More info](https://github.com/vuejs/language-tools/issues/2445#issuecomment-1444771420)', + ].join('\n\n'), + paddingRight: true, + } /* TODO */ + }, + noDiagnostic: { ...language_core_1$i.FileRangeCapabilities.full, diagnostic: false }, + diagnosticOnly: { diagnostic: true }, + tagHover: { hover: true }, + event: { hover: true, diagnostic: true }, + tagReference: { references: true, definition: true, rename: { normalize: undefined, apply: noEditApply } }, + attr: { hover: true, diagnostic: true, references: true, definition: true, rename: true }, + attrReference: { references: true, definition: true, rename: true }, + slotProp: { references: true, definition: true, rename: true, diagnostic: true }, + scopedClassName: { references: true, definition: true, rename: true, completion: true }, + slotName: { hover: true, diagnostic: true, references: true, definition: true, completion: true }, + slotNameExport: { hover: true, diagnostic: true, references: true, definition: true, /* referencesCodeLens: true */ }, + refAttr: { references: true, definition: true, rename: true }, +}; +const formatBrackets = { + normal: ['`${', '}`;'], + // fix https://github.com/vuejs/language-tools/issues/3572 + params: ['(', ') => {}'], + // fix https://github.com/vuejs/language-tools/issues/1210 + // fix https://github.com/vuejs/language-tools/issues/2305 + curly: ['0 +', '+ 0;'], + event: ['() => ', ';'], +}; +const validTsVarReg = /^[a-zA-Z_$][0-9a-zA-Z_$]*$/; +const colonReg = /:/g; +// @ts-ignore +const transformContext = { + onError: () => { }, + helperString: str => str.toString(), + replaceNode: () => { }, + cacheHandlers: false, + prefixIdentifiers: false, + scopes: { + vFor: 0, + vOnce: 0, + vPre: 0, + vSlot: 0, + }, + expressionPlugins: ['typescript'], +}; +function generate$3(ts, compilerOptions, vueCompilerOptions, template, shouldGenerateScopedClasses, stylesScopedClasses, hasScriptSetupSlots, slotsAssignName, propsAssignName, codegenStack) { + const nativeTags = new Set(vueCompilerOptions.nativeTags); + const [codes, codeStacks] = codegenStack ? muggle$3.track([]) : [[], []]; + const [formatCodes, formatCodeStacks] = codegenStack ? muggle$3.track([]) : [[], []]; + const [cssCodes, cssCodeStacks] = codegenStack ? muggle$3.track([]) : [[], []]; + const slots = new Map(); + const slotExps = new Map(); + const tagNames = collectTagOffsets(); + const localVars = new Map(); + const tempVars = []; + const accessedGlobalVariables = new Set(); + const scopedClasses = []; + const blockConditions = []; + const hasSlotElements = new Set(); + const componentCtxVar2EmitEventsVar = new Map(); + let hasSlot = false; + let elementIndex = 0; + let ignoreStart; + let expectedErrorStart; + let expectedErrorNode; + if (slotsAssignName) { + localVars.set(slotsAssignName, 1); + } + if (propsAssignName) { + localVars.set(propsAssignName, 1); + } + generatePreResolveComponents(); + if (template.ast) { + visitNode(template.ast, undefined, undefined, undefined); + } + generateStyleScopedClasses(); + if (!hasScriptSetupSlots) { + codes.push('var __VLS_slots!:', ...createSlotsTypeCode(), ';\n'); + } + generateAutoImportCompletionCode(); + return { + codes, + codeStacks, + formatCodes, + formatCodeStacks, + cssCodes, + cssCodeStacks, + tagNames, + accessedGlobalVariables, + hasSlot, + }; + function createSlotsTypeCode() { + const codes = []; + for (const [exp, slot] of slotExps) { + hasSlot = true; + codes.push(`Partial<Record<NonNullable<typeof ${exp}>, (_: typeof ${slot.varName}) => any>> &\n`); + } + codes.push(`{\n`); + for (const [name, slot] of slots) { + hasSlot = true; + codes.push(...createObjectPropertyCode([ + name, + 'template', + slot.loc, + { + ...capabilitiesPresets.slotNameExport, + referencesCodeLens: true, + }, + ], slot.nodeLoc)); + codes.push(`?(_: typeof ${slot.varName}): any,\n`); + } + codes.push(`}`); + return codes; + } + function generateStyleScopedClasses() { + codes.push(`if (typeof __VLS_styleScopedClasses === 'object' && !Array.isArray(__VLS_styleScopedClasses)) {\n`); + for (const { className, offset } of scopedClasses) { + codes.push(`__VLS_styleScopedClasses[`); + codes.push(...createStringLiteralKeyCode([ + className, + 'template', + offset, + { + ...capabilitiesPresets.scopedClassName, + displayWithLink: stylesScopedClasses.has(className), + }, + ])); + codes.push(`];\n`); + } + codes.push('}\n'); + } + function toCanonicalComponentName(tagText) { + return validTsVarReg.test(tagText) ? tagText : (0, shared_1$v.capitalize)((0, shared_1$v.camelize)(tagText.replace(colonReg, '-'))); + } + function getPossibleOriginalComponentName(tagText) { + return [...new Set([ + // order is important: https://github.com/vuejs/language-tools/issues/2010 + (0, shared_1$v.capitalize)((0, shared_1$v.camelize)(tagText)), + (0, shared_1$v.camelize)(tagText), + tagText, + ])]; + } + function generatePreResolveComponents() { + codes.push(`let __VLS_resolvedLocalAndGlobalComponents!: {}\n`); + for (const tagName in tagNames) { + if (nativeTags.has(tagName)) + continue; + const isNamespacedTag = tagName.indexOf('.') >= 0; + if (isNamespacedTag) + continue; + codes.push(`& __VLS_WithComponent<'${toCanonicalComponentName(tagName)}', typeof __VLS_localComponents, `, + // order is important: https://github.com/vuejs/language-tools/issues/2010 + `"${(0, shared_1$v.capitalize)((0, shared_1$v.camelize)(tagName))}", `, `"${(0, shared_1$v.camelize)(tagName)}", `, `"${tagName}"`, '>\n'); + } + codes.push(`;\n`); + for (const tagName in tagNames) { + const tagOffsets = tagNames[tagName]; + const tagRanges = tagOffsets.map(offset => [offset, offset + tagName.length]); + const names = nativeTags.has(tagName) ? [tagName] : getPossibleOriginalComponentName(tagName); + for (const name of names) { + for (const tagRange of tagRanges) { + codes.push(nativeTags.has(tagName) ? '__VLS_intrinsicElements' : '__VLS_components', ...createPropertyAccessCode([ + name, + 'template', + tagRange, + { + ...capabilitiesPresets.tagReference, + rename: { + normalize: tagName === name ? capabilitiesPresets.tagReference.rename.normalize : camelizeComponentName, + apply: getTagRenameApply(tagName), + }, + ...nativeTags.has(tagName) ? { + ...capabilitiesPresets.tagHover, + ...capabilitiesPresets.diagnosticOnly, + } : {}, + }, + ]), ';'); + } + } + codes.push('\n'); + if (nativeTags.has(tagName)) + continue; + const isNamespacedTag = tagName.indexOf('.') >= 0; + if (isNamespacedTag) + continue; + codes.push('// @ts-ignore\n', // #2304 + '['); + const validName = toCanonicalComponentName(tagName); + for (const tagRange of tagRanges) { + codes.push([ + validName, + 'template', + tagRange, + { + completion: { + additional: true, + autoImportOnly: true, + }, + }, + ]); + codes.push(','); + } + codes.push(`];\n`); + } + } + function collectTagOffsets() { + const tagOffsetsMap = {}; + if (!template.ast) { + return tagOffsetsMap; + } + walkElementNodes(template.ast, node => { + if (node.tag === 'slot') ; + else if (node.tag === 'component' || node.tag === 'Component') { + for (const prop of node.props) { + if (prop.type === 6 /* CompilerDOM.NodeTypes.ATTRIBUTE */ && prop.name === 'is' && prop.value) { + const tag = prop.value.content; + tagOffsetsMap[tag] ??= []; + tagOffsetsMap[tag].push(prop.value.loc.start.offset + prop.value.loc.source.lastIndexOf(tag)); + break; + } + } + } + else { + tagOffsetsMap[node.tag] ??= []; + const offsets = tagOffsetsMap[node.tag]; + const source = template.content.substring(node.loc.start.offset); + const startTagOffset = node.loc.start.offset + source.indexOf(node.tag); + offsets.push(startTagOffset); // start tag + if (!node.isSelfClosing && template.lang === 'html') { + const endTagOffset = node.loc.start.offset + node.loc.source.lastIndexOf(node.tag); + if (endTagOffset !== startTagOffset) { + offsets.push(endTagOffset); // end tag + } + } + } + }); + return tagOffsetsMap; + } + function resolveComment() { + if (ignoreStart !== undefined) { + for (let i = ignoreStart; i < codes.length; i++) { + const code = codes[i]; + if (typeof code === 'string') { + continue; + } + const cap = code[3]; + if (cap.diagnostic) { + code[3] = { + ...cap, + diagnostic: false, + }; + } + } + ignoreStart = undefined; + } + if (expectedErrorStart !== undefined && expectedErrorStart !== codes.length && expectedErrorNode) { + let errors = 0; + const suppressError = () => { + errors++; + return false; + }; + for (let i = expectedErrorStart; i < codes.length; i++) { + const code = codes[i]; + if (typeof code === 'string') { + continue; + } + const cap = code[3]; + if (cap.diagnostic) { + code[3] = { + ...cap, + diagnostic: { + shouldReport: suppressError, + }, + }; + } + } + codes.push([ + '// @ts-expect-error __VLS_TS_EXPECT_ERROR', + 'template', + [expectedErrorNode.loc.start.offset, expectedErrorNode.loc.end.offset], + { + diagnostic: { + shouldReport: () => errors === 0, + }, + }, + ], '\n;\n'); + expectedErrorStart = undefined; + expectedErrorNode = undefined; + } + } + function visitNode(node, parentEl, prevNode, componentCtxVar) { + resolveComment(); + if (prevNode?.type === 3 /* CompilerDOM.NodeTypes.COMMENT */) { + const commentText = prevNode.content.trim().split(' ')[0]; + if (commentText.match(/^@vue-skip\b[\s\S]*/)) { + return; + } + else if (commentText.match(/^@vue-ignore\b[\s\S]*/)) { + ignoreStart = codes.length; + } + else if (commentText.match(/^@vue-expect-error\b[\s\S]*/)) { + expectedErrorStart = codes.length; + expectedErrorNode = prevNode; + } + } + if (node.type === 0 /* CompilerDOM.NodeTypes.ROOT */) { + let prev; + for (const childNode of node.children) { + visitNode(childNode, parentEl, prev, componentCtxVar); + prev = childNode; + } + resolveComment(); + } + else if (node.type === 1 /* CompilerDOM.NodeTypes.ELEMENT */) { + const vForNode = getVForNode(node); + const vIfNode = getVIfNode(node); + if (vForNode) { + visitVForNode(vForNode, parentEl, componentCtxVar); + } + else if (vIfNode) { + visitVIfNode(vIfNode, parentEl, componentCtxVar); + } + else { + visitElementNode(node, parentEl, componentCtxVar); + } + } + else if (node.type === 12 /* CompilerDOM.NodeTypes.TEXT_CALL */) { + // {{ var }} + visitNode(node.content, parentEl, undefined, componentCtxVar); + } + else if (node.type === 8 /* CompilerDOM.NodeTypes.COMPOUND_EXPRESSION */) { + // {{ ... }} {{ ... }} + for (const childNode of node.children) { + if (typeof childNode === 'object') { + visitNode(childNode, parentEl, undefined, componentCtxVar); + } + } + } + else if (node.type === 5 /* CompilerDOM.NodeTypes.INTERPOLATION */) { + // {{ ... }} + let content = node.content.loc.source; + let start = node.content.loc.start.offset; + let leftCharacter; + let rightCharacter; + // fix https://github.com/vuejs/language-tools/issues/1787 + while ((leftCharacter = template.content.substring(start - 1, start)).trim() === '' && leftCharacter.length) { + start--; + content = leftCharacter + content; + } + while ((rightCharacter = template.content.substring(start + content.length, start + content.length + 1)).trim() === '' && rightCharacter.length) { + content = content + rightCharacter; + } + codes.push(...createInterpolationCode(content, node.content.loc, start, capabilitiesPresets.all, '(', ');\n')); + const lines = content.split('\n'); + formatCodes.push(...createFormatCode(content, start, lines.length <= 1 ? formatBrackets.curly : [ + formatBrackets.curly[0], + lines[lines.length - 1].trim() === '' ? '' : formatBrackets.curly[1], + ])); + } + else if (node.type === 9 /* CompilerDOM.NodeTypes.IF */) { + // v-if / v-else-if / v-else + visitVIfNode(node, parentEl, componentCtxVar); + } + else if (node.type === 11 /* CompilerDOM.NodeTypes.FOR */) { + // v-for + visitVForNode(node, parentEl, componentCtxVar); + } + else if (node.type === 2 /* CompilerDOM.NodeTypes.TEXT */) ; + } + function visitVIfNode(node, parentEl, componentCtxVar) { + let originalBlockConditionsLength = blockConditions.length; + for (let i = 0; i < node.branches.length; i++) { + const branch = node.branches[i]; + if (i === 0) + codes.push('if'); + else if (branch.condition) + codes.push('else if'); + else + codes.push('else'); + let addedBlockCondition = false; + if (branch.condition?.type === 4 /* CompilerDOM.NodeTypes.SIMPLE_EXPRESSION */) { + codes.push(` `); + const beforeCodeLength = codes.length; + codes.push(...createInterpolationCode(branch.condition.content, branch.condition.loc, branch.condition.loc.start.offset, capabilitiesPresets.all, '(', ')')); + const afterCodeLength = codes.length; + formatCodes.push(...createFormatCode(branch.condition.content, branch.condition.loc.start.offset, formatBrackets.normal)); + blockConditions.push(muggle$3.toString(codes.slice(beforeCodeLength, afterCodeLength))); + addedBlockCondition = true; + } + codes.push(` {\n`); + let prev; + for (const childNode of branch.children) { + visitNode(childNode, parentEl, prev, componentCtxVar); + prev = childNode; + } + resolveComment(); + generateAutoImportCompletionCode(); + codes.push('}\n'); + if (addedBlockCondition) { + blockConditions[blockConditions.length - 1] = `!(${blockConditions[blockConditions.length - 1]})`; + } + } + blockConditions.length = originalBlockConditionsLength; + } + function visitVForNode(node, parentEl, componentCtxVar) { + const { source, value, key, index } = node.parseResult; + const leftExpressionRange = value ? { start: (value ?? key ?? index).loc.start.offset, end: (index ?? key ?? value).loc.end.offset } : undefined; + const leftExpressionText = leftExpressionRange ? node.loc.source.substring(leftExpressionRange.start - node.loc.start.offset, leftExpressionRange.end - node.loc.start.offset) : undefined; + const forBlockVars = []; + codes.push(`for (const [`); + if (leftExpressionRange && leftExpressionText) { + const collectAst = createTsAst(node.parseResult, `const [${leftExpressionText}]`); + (0, transform_1$1.collectVars)(ts, collectAst, forBlockVars); + for (const varName of forBlockVars) + localVars.set(varName, (localVars.get(varName) ?? 0) + 1); + codes.push([leftExpressionText, 'template', leftExpressionRange.start, capabilitiesPresets.all]); + formatCodes.push(...createFormatCode(leftExpressionText, leftExpressionRange.start, formatBrackets.normal)); + } + codes.push(`] of __VLS_getVForSourceType`); + if (source.type === 4 /* CompilerDOM.NodeTypes.SIMPLE_EXPRESSION */) { + codes.push('(', ...createInterpolationCode(source.content, source.loc, source.loc.start.offset, capabilitiesPresets.all, '(', ')'), '!)', // #3102 + ') {\n'); + let prev; + for (const childNode of node.children) { + visitNode(childNode, parentEl, prev, componentCtxVar); + prev = childNode; + } + resolveComment(); + generateAutoImportCompletionCode(); + codes.push('}\n'); + formatCodes.push(...createFormatCode(source.content, source.loc.start.offset, formatBrackets.normal)); + } + for (const varName of forBlockVars) + localVars.set(varName, localVars.get(varName) - 1); + } + function visitElementNode(node, parentEl, componentCtxVar) { + codes.push(`{\n`); + const startTagOffset = node.loc.start.offset + template.content.substring(node.loc.start.offset).indexOf(node.tag); + let endTagOffset = !node.isSelfClosing && template.lang === 'html' ? node.loc.start.offset + node.loc.source.lastIndexOf(node.tag) : undefined; + if (endTagOffset === startTagOffset) { + endTagOffset = undefined; + } + let tag = node.tag; + let tagOffsets = endTagOffset !== undefined ? [startTagOffset, endTagOffset] : [startTagOffset]; + let props = node.props; + const propsFailedExps = []; + const isNamespacedTag = tag.indexOf('.') >= 0; + const var_originalComponent = `__VLS_${elementIndex++}`; + const var_functionalComponent = `__VLS_${elementIndex++}`; + const var_componentInstance = `__VLS_${elementIndex++}`; + let dynamicTagExp; + if (tag === 'slot') { + tagOffsets.length = 0; + } + else if (tag === 'component' || tag === 'Component') { + tagOffsets.length = 0; + for (const prop of node.props) { + if (prop.type === 6 /* CompilerDOM.NodeTypes.ATTRIBUTE */ && prop.name === 'is' && prop.value) { + tag = prop.value.content; + tagOffsets = [prop.value.loc.start.offset + prop.value.loc.source.lastIndexOf(tag)]; + props = props.filter(p => p !== prop); + break; + } + else if (prop.type === 7 /* CompilerDOM.NodeTypes.DIRECTIVE */ && prop.name === 'bind' && prop.arg?.loc.source === 'is' && prop.exp) { + dynamicTagExp = prop.exp; + props = props.filter(p => p !== prop); + break; + } + } + } + const isIntrinsicElement = nativeTags.has(tag) && tagOffsets.length; + if (isIntrinsicElement) { + codes.push('const ', var_originalComponent, ` = __VLS_intrinsicElements[`, ...createStringLiteralKeyCode([ + tag, + 'template', + tagOffsets[0], + capabilitiesPresets.diagnosticOnly, + ]), '];\n'); + } + else if (isNamespacedTag) { + codes.push(`const ${var_originalComponent} = `, ...createInterpolationCode(tag, node.loc, startTagOffset, capabilitiesPresets.all, '', ''), ';\n'); + } + else if (dynamicTagExp) { + codes.push(`const ${var_originalComponent} = `, ...createInterpolationCode(dynamicTagExp.loc.source, dynamicTagExp.loc, dynamicTagExp.loc.start.offset, capabilitiesPresets.all, '(', ')'), ';\n'); + } + else { + codes.push(`let ${var_originalComponent}!: `); + for (const componentName of getPossibleOriginalComponentName(tag)) { + codes.push(`'${componentName}' extends keyof typeof __VLS_ctx ? typeof __VLS_ctx${validTsVarReg.test(componentName) ? `.${componentName}` : `['${componentName}']`} : `); + } + codes.push(`typeof __VLS_resolvedLocalAndGlobalComponents['${toCanonicalComponentName(tag)}'];\n`); + } + if (isIntrinsicElement) { + codes.push(`const ${var_functionalComponent} = __VLS_elementAsFunctionalComponent(${var_originalComponent});\n`); + } + else { + codes.push(`const ${var_functionalComponent} = __VLS_asFunctionalComponent(`, `${var_originalComponent}, `, `new ${var_originalComponent}({`, ...createPropsCode(node, props, 'extraReferences'), '})', ');\n'); + } + for (const offset of tagOffsets) { + if (isNamespacedTag || dynamicTagExp || isIntrinsicElement) { + continue; + } + const key = toCanonicalComponentName(tag); + codes.push(`({} as { ${key}: typeof ${var_originalComponent} }).`); + codes.push([ + key, + 'template', + [offset, offset + tag.length], + { + ...capabilitiesPresets.tagHover, + ...capabilitiesPresets.diagnosticOnly, + }, + ], ';\n'); + } + if (vueCompilerOptions.strictTemplates) { + // with strictTemplates, generate once for props type-checking + instance type + codes.push(`const ${var_componentInstance} = ${var_functionalComponent}(`, + // diagnostic start + tagOffsets.length ? ['', 'template', tagOffsets[0], capabilitiesPresets.diagnosticOnly] + : dynamicTagExp ? ['', 'template', startTagOffset, capabilitiesPresets.diagnosticOnly] + : '', '{ ', ...createPropsCode(node, props, 'normal', propsFailedExps), '}', + // diagnostic end + tagOffsets.length ? ['', 'template', tagOffsets[0] + tag.length, capabilitiesPresets.diagnosticOnly] + : dynamicTagExp ? ['', 'template', startTagOffset + tag.length, capabilitiesPresets.diagnosticOnly] + : '', `, ...__VLS_functionalComponentArgsRest(${var_functionalComponent}));\n`); + } + else { + // without strictTemplates, this only for instacne type + codes.push(`const ${var_componentInstance} = ${var_functionalComponent}(`, '{ ', ...createPropsCode(node, props, 'extraReferences'), '}', `, ...__VLS_functionalComponentArgsRest(${var_functionalComponent}));\n`); + // and this for props type-checking + codes.push(`({} as (props: __VLS_FunctionalComponentProps<typeof ${var_originalComponent}, typeof ${var_componentInstance}> & Record<string, unknown>) => void)(`, + // diagnostic start + tagOffsets.length ? ['', 'template', tagOffsets[0], capabilitiesPresets.diagnosticOnly] + : dynamicTagExp ? ['', 'template', startTagOffset, capabilitiesPresets.diagnosticOnly] + : '', '{ ', ...createPropsCode(node, props, 'normal', propsFailedExps), '}', + // diagnostic end + tagOffsets.length ? ['', 'template', tagOffsets[0] + tag.length, capabilitiesPresets.diagnosticOnly] + : dynamicTagExp ? ['', 'template', startTagOffset + tag.length, capabilitiesPresets.diagnosticOnly] + : '', `);\n`); + } + if (tag !== 'template' && tag !== 'slot') { + componentCtxVar = `__VLS_${elementIndex++}`; + const componentEventsVar = `__VLS_${elementIndex++}`; + codes.push(`const ${componentCtxVar} = __VLS_pickFunctionalComponentCtx(${var_originalComponent}, ${var_componentInstance})!;\n`); + codes.push(`let ${componentEventsVar}!: __VLS_NormalizeEmits<typeof ${componentCtxVar}.emit>;\n`); + componentCtxVar2EmitEventsVar.set(componentCtxVar, componentEventsVar); + parentEl = node; + } + //#region + // fix https://github.com/vuejs/language-tools/issues/1775 + for (const failedExp of propsFailedExps) { + codes.push(...createInterpolationCode(failedExp.loc.source, failedExp.loc, failedExp.loc.start.offset, capabilitiesPresets.all, '(', ')'), ';\n'); + const fb = formatBrackets.normal; + if (fb) { + formatCodes.push(...createFormatCode(failedExp.loc.source, failedExp.loc.start.offset, fb)); + } + } + generateInlineCss(props); + const vScope = props.find(prop => prop.type === 7 /* CompilerDOM.NodeTypes.DIRECTIVE */ && (prop.name === 'scope' || prop.name === 'data')); + let inScope = false; + let originalConditionsNum = blockConditions.length; + if (vScope?.type === 7 /* CompilerDOM.NodeTypes.DIRECTIVE */ && vScope.exp) { + const scopeVar = `__VLS_${elementIndex++}`; + const condition = `__VLS_withScope(__VLS_ctx, ${scopeVar})`; + codes.push(`const ${scopeVar} = `); + codes.push([ + vScope.exp.loc.source, + 'template', + vScope.exp.loc.start.offset, + capabilitiesPresets.all, + ]); + codes.push(';\n'); + codes.push(`if (${condition}) {\n`); + blockConditions.push(condition); + inScope = true; + } + generateDirectives(node); + generateElReferences(node); // <el ref="foo" /> + if (shouldGenerateScopedClasses) { + generateClassScoped(node); + } + if (componentCtxVar) { + generateEvents(node, var_functionalComponent, var_componentInstance, componentCtxVar); + } + if (node.tag === 'slot') { + generateSlot(node, startTagOffset); + } + if (inScope) { + codes.push('}\n'); + blockConditions.length = originalConditionsNum; + } + //#endregion + const slotDir = node.props.find(p => p.type === 7 /* CompilerDOM.NodeTypes.DIRECTIVE */ && p.name === 'slot'); + if (slotDir && componentCtxVar) { + if (parentEl) { + hasSlotElements.add(parentEl); + } + const slotBlockVars = []; + codes.push(`{\n`); + let hasProps = false; + if (slotDir?.exp?.type === 4 /* CompilerDOM.NodeTypes.SIMPLE_EXPRESSION */) { + formatCodes.push(...createFormatCode(slotDir.exp.content, slotDir.exp.loc.start.offset, formatBrackets.params)); + const slotAst = createTsAst(slotDir, `(${slotDir.exp.content}) => {}`); + (0, transform_1$1.collectVars)(ts, slotAst, slotBlockVars); + hasProps = true; + if (slotDir.exp.content.indexOf(':') === -1) { + codes.push('const [', [ + slotDir.exp.content, + 'template', + slotDir.exp.loc.start.offset, + capabilitiesPresets.all, + ], `] = __VLS_getSlotParams(`); + } + else { + codes.push('const ', [ + slotDir.exp.content, + 'template', + slotDir.exp.loc.start.offset, + capabilitiesPresets.all, + ], ` = __VLS_getSlotParam(`); + } + } + codes.push(['', 'template', (slotDir.arg ?? slotDir).loc.start.offset, capabilitiesPresets.diagnosticOnly], `(${componentCtxVar}.slots!)`, ...((slotDir?.arg?.type === 4 /* CompilerDOM.NodeTypes.SIMPLE_EXPRESSION */ && slotDir.arg.content) + ? createPropertyAccessCode([ + slotDir.arg.loc.source, + 'template', + slotDir.arg.loc.start.offset, + slotDir.arg.isStatic ? capabilitiesPresets.slotName : capabilitiesPresets.all + ], slotDir.arg.loc) + : createPropertyAccessCode([ + 'default', + 'template', + [slotDir.loc.start.offset, slotDir.loc.start.offset + (slotDir.loc.source.startsWith('#') ? '#'.length : slotDir.loc.source.startsWith('v-slot:') ? 'v-slot:'.length : 0)], + { ...capabilitiesPresets.slotName, completion: false }, + ])), ['', 'template', (slotDir.arg ?? slotDir).loc.end.offset, capabilitiesPresets.diagnosticOnly]); + if (hasProps) { + codes.push(')'); + } + codes.push(';\n'); + slotBlockVars.forEach(varName => { + localVars.set(varName, (localVars.get(varName) ?? 0) + 1); + }); + let prev; + for (const childNode of node.children) { + visitNode(childNode, parentEl, prev, componentCtxVar); + prev = childNode; + } + resolveComment(); + generateAutoImportCompletionCode(); + slotBlockVars.forEach(varName => { + localVars.set(varName, localVars.get(varName) - 1); + }); + let isStatic = true; + if (slotDir?.arg?.type === 4 /* CompilerDOM.NodeTypes.SIMPLE_EXPRESSION */) { + isStatic = slotDir.arg.isStatic; + } + if (isStatic && slotDir && !slotDir.arg) { + codes.push(`${componentCtxVar}.slots!['`, [ + '', + 'template', + slotDir.loc.start.offset + (slotDir.loc.source.startsWith('#') ? '#'.length : slotDir.loc.source.startsWith('v-slot:') ? 'v-slot:'.length : 0), + { completion: true }, + ], `'/* empty slot name completion */]\n`); + } + codes.push(`}\n`); + } + else { + let prev; + for (const childNode of node.children) { + visitNode(childNode, parentEl, prev, componentCtxVar); + prev = childNode; + } + resolveComment(); + // fix https://github.com/vuejs/language-tools/issues/932 + if (!hasSlotElements.has(node) && node.children.length) { + codes.push(`(${componentCtxVar}.slots!)`, ...createPropertyAccessCode([ + 'default', + 'template', + [ + node.children[0].loc.start.offset, + node.children[node.children.length - 1].loc.end.offset, + ], + { references: true }, + ]), ';\n'); + } + } + codes.push(`}\n`); + } + function generateEvents(node, componentVar, componentInstanceVar, componentCtxVar) { + for (const prop of node.props) { + if (prop.type === 7 /* CompilerDOM.NodeTypes.DIRECTIVE */ + && prop.name === 'on' + && prop.arg?.type === 4 /* CompilerDOM.NodeTypes.SIMPLE_EXPRESSION */) { + const eventsVar = componentCtxVar2EmitEventsVar.get(componentCtxVar); + const eventVar = `__VLS_${elementIndex++}`; + codes.push(`let ${eventVar} = { '${prop.arg.loc.source}': `, `__VLS_pickEvent(${eventsVar}['${prop.arg.loc.source}'], ({} as __VLS_FunctionalComponentProps<typeof ${componentVar}, typeof ${componentInstanceVar}>)`, ...createPropertyAccessCode([ + (0, shared_1$v.camelize)('on-' + prop.arg.loc.source), + 'template', + [prop.arg.loc.start.offset, prop.arg.loc.end.offset], + { + ...capabilitiesPresets.attrReference, + rename: { + // @click-outside -> onClickOutside + normalize(newName) { + return (0, shared_1$v.camelize)('on-' + newName); + }, + // onClickOutside -> @click-outside + apply(newName) { + const hName = (0, shared_2.hyphenateAttr)(newName); + if ((0, shared_2.hyphenateAttr)(newName).startsWith('on-')) { + return (0, shared_1$v.camelize)(hName.slice('on-'.length)); + } + return newName; + }, + }, + }, + ]), `) };\n`, `${eventVar} = { `); + if (prop.arg.loc.source.startsWith('[') && prop.arg.loc.source.endsWith(']')) { + codes.push('[(', ...createInterpolationCode(prop.arg.loc.source.slice(1, -1), prop.arg.loc, prop.arg.loc.start.offset + 1, capabilitiesPresets.all, '', ''), ')!]'); + } + else { + codes.push(...createObjectPropertyCode([ + prop.arg.loc.source, + 'template', + prop.arg.loc.start.offset, + capabilitiesPresets.event, + ], prop.arg.loc)); + } + codes.push(`: `); + appendExpressionNode(prop); + codes.push(` };\n`); + } + else if (prop.type === 7 /* CompilerDOM.NodeTypes.DIRECTIVE */ + && prop.name === 'on' + && prop.exp?.type === 4 /* CompilerDOM.NodeTypes.SIMPLE_EXPRESSION */) { + // for vue 2 nameless event + // https://github.com/johnsoncodehk/vue-tsc/issues/67 + codes.push(...createInterpolationCode(prop.exp.content, prop.exp.loc, prop.exp.loc.start.offset, capabilitiesPresets.all, '$event => {(', ')}'), ';\n'); + formatCodes.push(...createFormatCode(prop.exp.content, prop.exp.loc.start.offset, formatBrackets.normal)); + } + function appendExpressionNode(prop) { + if (prop.exp?.type === 4 /* CompilerDOM.NodeTypes.SIMPLE_EXPRESSION */) { + const ast = createTsAst(prop.exp, prop.exp.content); + let isCompoundExpression = true; + if (ast.getChildCount() === 2) { // with EOF + ast.forEachChild(child_1 => { + if (ts.isExpressionStatement(child_1)) { + child_1.forEachChild(child_2 => { + if (ts.isArrowFunction(child_2)) { + isCompoundExpression = false; + } + else if (ts.isIdentifier(child_2)) { + isCompoundExpression = false; + } + }); + } + else if (ts.isFunctionDeclaration(child_1)) { + isCompoundExpression = false; + } + }); + } + let prefix = '('; + let suffix = ')'; + let isFirstMapping = true; + if (isCompoundExpression) { + codes.push('$event => {\n'); + localVars.set('$event', (localVars.get('$event') ?? 0) + 1); + prefix = ''; + suffix = ''; + for (const blockCondition of blockConditions) { + prefix += `if (!(${blockCondition})) return;\n`; + } + } + codes.push(...createInterpolationCode(prop.exp.content, prop.exp.loc, prop.exp.loc.start.offset, () => { + if (isCompoundExpression && isFirstMapping) { + isFirstMapping = false; + return capabilitiesPresets.allWithHiddenParam; + } + return capabilitiesPresets.all; + }, prefix, suffix)); + if (isCompoundExpression) { + localVars.set('$event', localVars.get('$event') - 1); + codes.push(';\n'); + generateAutoImportCompletionCode(); + codes.push('}\n'); + } + formatCodes.push(...createFormatCode(prop.exp.content, prop.exp.loc.start.offset, isCompoundExpression ? formatBrackets.event : formatBrackets.normal)); + } + else { + codes.push(`() => {}`); + } + } + } + } + function createPropsCode(node, props, mode, propsFailedExps) { + let styleAttrNum = 0; + let classAttrNum = 0; + if (props.some(prop => prop.type === 7 /* CompilerDOM.NodeTypes.DIRECTIVE */ + && prop.name === 'bind' + && !prop.arg + && prop.exp?.type === 4 /* CompilerDOM.NodeTypes.SIMPLE_EXPRESSION */)) { + // fix https://github.com/vuejs/language-tools/issues/2166 + styleAttrNum++; + classAttrNum++; + } + const codes = []; + let caps_all = capabilitiesPresets.all; + let caps_diagnosticOnly = capabilitiesPresets.diagnosticOnly; + let caps_attr = capabilitiesPresets.attr; + if (mode === 'extraReferences') { + caps_all = { + references: caps_all.references, + rename: caps_all.rename, + }; + caps_diagnosticOnly = { + references: caps_diagnosticOnly.references, + rename: caps_diagnosticOnly.rename, + }; + caps_attr = { + references: caps_attr.references, + rename: caps_attr.rename, + }; + } + codes.push(`...{ `); + for (const prop of props) { + if (prop.type === 7 /* CompilerDOM.NodeTypes.DIRECTIVE */ + && prop.name === 'on' + && prop.arg?.type === 4 /* CompilerDOM.NodeTypes.SIMPLE_EXPRESSION */) { + codes.push(...createObjectPropertyCode((0, shared_1$v.camelize)('on-' + prop.arg.loc.source)), ': {} as any, '); + } + } + codes.push(`}, `); + for (const prop of props) { + if (prop.type === 7 /* CompilerDOM.NodeTypes.DIRECTIVE */ + && (prop.name === 'bind' || prop.name === 'model') + && (prop.name === 'model' || prop.arg?.type === 4 /* CompilerDOM.NodeTypes.SIMPLE_EXPRESSION */) + && (!prop.exp || prop.exp.type === 4 /* CompilerDOM.NodeTypes.SIMPLE_EXPRESSION */)) { + let attrNameText = prop.arg?.type === 4 /* CompilerDOM.NodeTypes.SIMPLE_EXPRESSION */ + ? prop.arg.constType === 3 /* CompilerDOM.ConstantTypes.CAN_STRINGIFY */ + ? prop.arg.content + : prop.arg.loc.source + : getModelValuePropName(node, vueCompilerOptions.target, vueCompilerOptions); + if (prop.modifiers.some(m => m === 'prop' || m === 'attr')) { + attrNameText = attrNameText?.substring(1); + } + if (attrNameText === undefined + || vueCompilerOptions.dataAttributes.some(pattern => (0, minimatch_1.minimatch)(attrNameText, pattern)) + || (attrNameText === 'style' && ++styleAttrNum >= 2) + || (attrNameText === 'class' && ++classAttrNum >= 2) + || (attrNameText === 'name' && node.tag === 'slot') // #2308 + ) { + if (prop.exp && prop.exp.constType !== 3 /* CompilerDOM.ConstantTypes.CAN_STRINGIFY */) { + propsFailedExps?.push(prop.exp); + } + continue; + } + let camelized = false; + if ((!prop.arg || (prop.arg.type === 4 /* CompilerDOM.NodeTypes.SIMPLE_EXPRESSION */ && prop.arg.isStatic)) // isStatic + && (0, shared_2.hyphenateAttr)(attrNameText) === attrNameText + && !vueCompilerOptions.htmlAttributes.some(pattern => (0, minimatch_1.minimatch)(attrNameText, pattern))) { + attrNameText = (0, shared_1$v.camelize)(attrNameText); + camelized = true; + } + // camelize name + codes.push([ + '', + 'template', + prop.loc.start.offset, + caps_diagnosticOnly, + ]); + if (!prop.arg) { + codes.push(...createObjectPropertyCode([ + attrNameText, + 'template', + [prop.loc.start.offset, prop.loc.start.offset + prop.loc.source.indexOf('=')], + caps_attr, + ], prop.loc.name_1 ?? (prop.loc.name_1 = {}))); + } + else if (prop.exp?.constType === 3 /* CompilerDOM.ConstantTypes.CAN_STRINGIFY */) { + codes.push(...createObjectPropertyCode([ + attrNameText, + 'template', + [prop.arg.loc.start.offset, prop.arg.loc.start.offset + attrNameText.length], + { + ...caps_attr, + rename: { + normalize: shared_1$v.camelize, + apply: camelized ? shared_2.hyphenateAttr : noEditApply, + }, + }, + ], prop.loc.name_2 ?? (prop.loc.name_2 = {}))); + } + else { + codes.push(...createObjectPropertyCode([ + attrNameText, + 'template', + [prop.arg.loc.start.offset, prop.arg.loc.end.offset], + { + ...caps_attr, + rename: { + normalize: shared_1$v.camelize, + apply: camelized ? shared_2.hyphenateAttr : noEditApply, + }, + }, + ], prop.loc.name_2 ?? (prop.loc.name_2 = {}))); + } + codes.push(': ('); + if (prop.exp && !(prop.exp.constType === 3 /* CompilerDOM.ConstantTypes.CAN_STRINGIFY */)) { // style='z-index: 2' will compile to {'z-index':'2'} + codes.push(...createInterpolationCode(prop.exp.loc.source, prop.exp.loc, prop.exp.loc.start.offset, caps_all, '(', ')')); + if (mode === 'normal') { + formatCodes.push(...createFormatCode(prop.exp.loc.source, prop.exp.loc.start.offset, formatBrackets.normal)); + } + } + else { + codes.push('{}'); + } + codes.push(')'); + codes.push([ + '', + 'template', + prop.loc.end.offset, + caps_diagnosticOnly, + ]); + codes.push(', '); + } + else if (prop.type === 6 /* CompilerDOM.NodeTypes.ATTRIBUTE */) { + let attrNameText = prop.name; + if (vueCompilerOptions.dataAttributes.some(pattern => (0, minimatch_1.minimatch)(attrNameText, pattern)) + || (attrNameText === 'style' && ++styleAttrNum >= 2) + || (attrNameText === 'class' && ++classAttrNum >= 2) + || (attrNameText === 'name' && node.tag === 'slot') // #2308 + ) { + continue; + } + let camelized = false; + if ((0, shared_2.hyphenateAttr)(prop.name) === prop.name + && !vueCompilerOptions.htmlAttributes.some(pattern => (0, minimatch_1.minimatch)(attrNameText, pattern))) { + attrNameText = (0, shared_1$v.camelize)(prop.name); + camelized = true; + } + // camelize name + codes.push([ + '', + 'template', + prop.loc.start.offset, + caps_diagnosticOnly, + ]); + codes.push(...createObjectPropertyCode([ + attrNameText, + 'template', + [prop.loc.start.offset, prop.loc.start.offset + prop.name.length], + { + ...caps_attr, + rename: { + normalize: shared_1$v.camelize, + apply: camelized ? shared_2.hyphenateAttr : noEditApply, + }, + }, + ], prop.loc.name_1 ?? (prop.loc.name_1 = {}))); + codes.push(': ('); + if (prop.value) { + generateAttrValue(prop.value); + } + else { + codes.push('true'); + } + codes.push(')'); + codes.push([ + '', + 'template', + prop.loc.end.offset, + caps_diagnosticOnly, + ]); + codes.push(', '); + } + else if (prop.type === 7 /* CompilerDOM.NodeTypes.DIRECTIVE */ + && prop.name === 'bind' + && !prop.arg + && prop.exp?.type === 4 /* CompilerDOM.NodeTypes.SIMPLE_EXPRESSION */) { + codes.push(['', 'template', prop.exp.loc.start.offset, capabilitiesPresets.diagnosticOnly], '...', ...createInterpolationCode(prop.exp.content, prop.exp.loc, prop.exp.loc.start.offset, caps_all, '(', ')'), ['', 'template', prop.exp.loc.end.offset, capabilitiesPresets.diagnosticOnly], ', '); + if (mode === 'normal') { + formatCodes.push(...createFormatCode(prop.exp.content, prop.exp.loc.start.offset, formatBrackets.normal)); + } + } + else ; + } + return codes; + function generateAttrValue(attrNode) { + const char = attrNode.loc.source.startsWith("'") ? "'" : '"'; + codes.push(char); + let start = attrNode.loc.start.offset; + let end = attrNode.loc.end.offset; + let content = attrNode.loc.source; + if ((content.startsWith('"') && content.endsWith('"')) + || (content.startsWith("'") && content.endsWith("'"))) { + start++; + end--; + content = content.slice(1, -1); + } + codes.push([ + toUnicodeIfNeed(content), + 'template', + [start, end], + caps_all, + ]); + codes.push(char); + } + } + function generateInlineCss(props) { + for (const prop of props) { + if (prop.type === 7 /* CompilerDOM.NodeTypes.DIRECTIVE */ + && prop.name === 'bind' + && prop.arg?.type === 4 /* CompilerDOM.NodeTypes.SIMPLE_EXPRESSION */ + && prop.exp?.type === 4 /* CompilerDOM.NodeTypes.SIMPLE_EXPRESSION */ + && prop.arg.content === 'style' + && prop.exp.constType === 3 /* CompilerDOM.ConstantTypes.CAN_STRINGIFY */) { + const endCrt = prop.arg.loc.source[prop.arg.loc.source.length - 1]; // " | ' + const start = prop.arg.loc.source.indexOf(endCrt) + 1; + const end = prop.arg.loc.source.lastIndexOf(endCrt); + const content = prop.arg.loc.source.substring(start, end); + cssCodes.push(`x { `); + cssCodes.push([ + content, + 'template', + prop.arg.loc.start.offset + start, + capabilitiesPresets.all, + ]); + cssCodes.push(` }\n`); + } + } + } + function generateDirectives(node) { + for (const prop of node.props) { + if (prop.type === 7 /* CompilerDOM.NodeTypes.DIRECTIVE */ + && prop.name !== 'slot' + && prop.name !== 'on' + && prop.name !== 'model' + && prop.name !== 'bind' + && (prop.name !== 'scope' && prop.name !== 'data')) { + accessedGlobalVariables.add((0, shared_1$v.camelize)('v-' + prop.name)); + if (prop.arg?.type === 4 /* CompilerDOM.NodeTypes.SIMPLE_EXPRESSION */ && !prop.arg.isStatic) { + codes.push(...createInterpolationCode(prop.arg.content, prop.arg.loc, prop.arg.loc.start.offset + prop.arg.loc.source.indexOf(prop.arg.content), capabilitiesPresets.all, '(', ')'), ';\n'); + formatCodes.push(...createFormatCode(prop.arg.content, prop.arg.loc.start.offset, formatBrackets.normal)); + } + codes.push([ + '', + 'template', + prop.loc.start.offset, + capabilitiesPresets.diagnosticOnly, + ], `__VLS_directiveFunction(__VLS_ctx.`, [ + (0, shared_1$v.camelize)('v-' + prop.name), + 'template', + [prop.loc.start.offset, prop.loc.start.offset + 'v-'.length + prop.name.length], + { + ...capabilitiesPresets.noDiagnostic, + completion: { + // fix https://github.com/vuejs/language-tools/issues/1905 + additional: true, + }, + rename: { + normalize: shared_1$v.camelize, + apply: getPropRenameApply(prop.name), + }, + }, + ], ')', '('); + if (prop.exp?.type === 4 /* CompilerDOM.NodeTypes.SIMPLE_EXPRESSION */) { + codes.push(['', 'template', prop.exp.loc.start.offset, capabilitiesPresets.diagnosticOnly], ...createInterpolationCode(prop.exp.content, prop.exp.loc, prop.exp.loc.start.offset, capabilitiesPresets.all, '(', ')'), ['', 'template', prop.exp.loc.end.offset, capabilitiesPresets.diagnosticOnly]); + formatCodes.push(...createFormatCode(prop.exp.content, prop.exp.loc.start.offset, formatBrackets.normal)); + } + else { + codes.push('undefined'); + } + codes.push(')', ['', 'template', prop.loc.end.offset, capabilitiesPresets.diagnosticOnly], ';\n'); + } + } + } + function generateElReferences(node) { + for (const prop of node.props) { + if (prop.type === 6 /* CompilerDOM.NodeTypes.ATTRIBUTE */ + && prop.name === 'ref' + && prop.value) { + codes.push('// @ts-ignore\n', ...createInterpolationCode(prop.value.content, prop.value.loc, prop.value.loc.start.offset + 1, capabilitiesPresets.refAttr, '(', ')'), ';\n'); + } + } + } + function generateClassScoped(node) { + for (const prop of node.props) { + if (prop.type === 6 /* CompilerDOM.NodeTypes.ATTRIBUTE */ + && prop.name === 'class' + && prop.value) { + let startOffset = prop.value.loc.start.offset; + let tempClassName = ''; + for (const char of (prop.value.loc.source + ' ')) { + if (char.trim() === '' || char === '"' || char === "'") { + if (tempClassName !== '') { + scopedClasses.push({ className: tempClassName, offset: startOffset }); + startOffset += tempClassName.length; + tempClassName = ''; + } + startOffset += char.length; + } + else { + tempClassName += char; + } + } + } + else if (prop.type === 7 /* CompilerDOM.NodeTypes.DIRECTIVE */ + && prop.arg?.type === 4 /* CompilerDOM.NodeTypes.SIMPLE_EXPRESSION */ + && prop.exp?.type === 4 /* CompilerDOM.NodeTypes.SIMPLE_EXPRESSION */ + && prop.arg.content === 'class') { + codes.push(`__VLS_styleScopedClasses = (`); + codes.push([ + prop.exp.content, + 'template', + prop.exp.loc.start.offset, + capabilitiesPresets.scopedClassName, + ]); + codes.push(`);\n`); + } + } + } + function generateSlot(node, startTagOffset) { + const varSlot = `__VLS_${elementIndex++}`; + const slotNameExpNode = getSlotNameExpNode(); + if (hasScriptSetupSlots) { + codes.push('__VLS_normalizeSlot(', ['', 'template', node.loc.start.offset, capabilitiesPresets.diagnosticOnly], `${slotsAssignName ?? '__VLS_slots'}[`, ['', 'template', node.loc.start.offset, capabilitiesPresets.diagnosticOnly], slotNameExpNode?.content ?? `('${getSlotName()}' as const)`, ['', 'template', node.loc.end.offset, capabilitiesPresets.diagnosticOnly], ']', ['', 'template', node.loc.end.offset, capabilitiesPresets.diagnosticOnly], ')?.(', ['', 'template', startTagOffset, capabilitiesPresets.diagnosticOnly], '{\n'); + } + else { + codes.push(`var ${varSlot} = {\n`); + } + for (const prop of node.props) { + if (prop.type === 7 /* CompilerDOM.NodeTypes.DIRECTIVE */ + && !prop.arg + && prop.exp?.type === 4 /* CompilerDOM.NodeTypes.SIMPLE_EXPRESSION */) { + codes.push('...', ...createInterpolationCode(prop.exp.content, prop.exp.loc, prop.exp.loc.start.offset, capabilitiesPresets.attrReference, '(', ')'), ',\n'); + } + else if (prop.type === 7 /* CompilerDOM.NodeTypes.DIRECTIVE */ + && prop.arg?.type === 4 /* CompilerDOM.NodeTypes.SIMPLE_EXPRESSION */ + && prop.exp?.type === 4 /* CompilerDOM.NodeTypes.SIMPLE_EXPRESSION */ + && prop.arg.content !== 'name') { + codes.push(...createObjectPropertyCode([ + prop.arg.content, + 'template', + [prop.arg.loc.start.offset, prop.arg.loc.end.offset], + { + ...capabilitiesPresets.slotProp, + rename: { + normalize: shared_1$v.camelize, + apply: getPropRenameApply(prop.arg.content), + }, + }, + ], prop.arg.loc), ': ', ...createInterpolationCode(prop.exp.content, prop.exp.loc, prop.exp.loc.start.offset, capabilitiesPresets.attrReference, '(', ')'), ',\n'); + } + else if (prop.type === 6 /* CompilerDOM.NodeTypes.ATTRIBUTE */ + && prop.name !== 'name' // slot name + ) { + codes.push(...createObjectPropertyCode([ + prop.name, + 'template', + prop.loc.start.offset, + { + ...capabilitiesPresets.attr, + rename: { + normalize: shared_1$v.camelize, + apply: getPropRenameApply(prop.name), + }, + }, + ], prop.loc), ': (', prop.value !== undefined ? `"${toUnicodeIfNeed(prop.value.content)}"` : 'true', '),\n'); + } + } + codes.push('}', hasScriptSetupSlots ? ['', 'template', startTagOffset + node.tag.length, capabilitiesPresets.diagnosticOnly] : '', hasScriptSetupSlots ? `);\n` : `;\n`); + if (hasScriptSetupSlots) { + return; + } + if (slotNameExpNode) { + const varSlotExp = `__VLS_${elementIndex++}`; + codes.push(`var ${varSlotExp} = `); + if (typeof slotNameExpNode === 'string') { + codes.push(slotNameExpNode); + } + else { + codes.push(...createInterpolationCode(slotNameExpNode.content, slotNameExpNode, undefined, undefined, '(', ')')); + } + codes.push(` as const;\n`); + slotExps.set(varSlotExp, { + varName: varSlot, + }); + } + else { + const slotName = getSlotName(); + slots.set(slotName, { + varName: varSlot, + loc: [startTagOffset, startTagOffset + node.tag.length], + nodeLoc: node.loc, + }); + } + function getSlotName() { + for (const prop2 of node.props) { + if (prop2.name === 'name' && prop2.type === 6 /* CompilerDOM.NodeTypes.ATTRIBUTE */ && prop2.value) { + if (prop2.value.content) { + return prop2.value.content; + } + } + } + return 'default'; + } + function getSlotNameExpNode() { + for (const prop2 of node.props) { + if (prop2.type === 7 /* CompilerDOM.NodeTypes.DIRECTIVE */ && prop2.name === 'bind' && prop2.arg?.type === 4 /* CompilerDOM.NodeTypes.SIMPLE_EXPRESSION */ && prop2.arg.content === 'name') { + if (prop2.exp?.type === 4 /* CompilerDOM.NodeTypes.SIMPLE_EXPRESSION */) { + return prop2.exp; + } + } + } + } + } + function generateAutoImportCompletionCode() { + if (!tempVars.length) + return; + codes.push('// @ts-ignore\n'); // #2304 + codes.push('['); + for (const _vars of tempVars) { + for (const v of _vars) { + codes.push([v.text, 'template', v.offset, { completion: { additional: true } }]); + codes.push(','); + } + } + codes.push('];\n'); + tempVars.length = 0; + } + // functional like + function createFormatCode(mapCode, sourceOffset, formatWrapper) { + return [ + formatWrapper[0], + [mapCode, 'template', sourceOffset, { completion: true /* fix vue-autoinsert-parentheses not working */ }], + formatWrapper[1], + '\n', + ]; + } + function createObjectPropertyCode(a, astHolder) { + const aStr = typeof a === 'string' ? a : a[0]; + if (validTsVarReg.test(aStr)) { + return [a]; + } + else if (aStr.startsWith('[') && aStr.endsWith(']') && astHolder) { + const range = typeof a === 'object' ? a[2] : undefined; + const data = typeof a === 'object' ? a[3] : undefined; + return createInterpolationCode(aStr, astHolder, range && typeof range === 'object' ? range[0] : range, data, '', ''); + } + else { + return createStringLiteralKeyCode(a); + } + } + function createInterpolationCode(_code, astHolder, start, data, prefix, suffix) { + const code = prefix + _code + suffix; + const ast = createTsAst(astHolder, code); + const codes = []; + const vars = (0, transform_1$1.walkInterpolationFragment)(ts, code, ast, (frag, fragOffset, isJustForErrorMapping) => { + if (fragOffset === undefined) { + codes.push(frag); + } + else { + fragOffset -= prefix.length; + let addSuffix = ''; + const overLength = fragOffset + frag.length - _code.length; + if (overLength > 0) { + addSuffix = frag.substring(frag.length - overLength); + frag = frag.substring(0, frag.length - overLength); + } + if (fragOffset < 0) { + codes.push(frag.substring(0, -fragOffset)); + frag = frag.substring(-fragOffset); + fragOffset = 0; + } + if (start !== undefined && data !== undefined) { + codes.push([ + frag, + 'template', + start + fragOffset, + isJustForErrorMapping + ? capabilitiesPresets.diagnosticOnly + : typeof data === 'function' ? data() : data, + ]); + } + else { + codes.push(frag); + } + codes.push(addSuffix); + } + }, localVars, accessedGlobalVariables, vueCompilerOptions); + if (start !== undefined) { + for (const v of vars) { + v.offset = start + v.offset - prefix.length; + } + if (vars.length) { + tempVars.push(vars); + } + } + return codes; + } + function createTsAst(astHolder, text) { + if (astHolder.__volar_ast_text !== text) { + astHolder.__volar_ast_text = text; + astHolder.__volar_ast = ts.createSourceFile('/a.ts', text, ts.ScriptTarget.ESNext); + } + return astHolder.__volar_ast; + } + function createPropertyAccessCode(a, astHolder) { + const aStr = typeof a === 'string' ? a : a[0]; + if (!compilerOptions.noPropertyAccessFromIndexSignature && validTsVarReg.test(aStr)) { + return ['.', a]; + } + else if (aStr.startsWith('[') && aStr.endsWith(']')) { + if (typeof a === 'string' || !astHolder) { + return [a]; + } + else { + return createInterpolationCode(a[0], astHolder, typeof a[2] === 'number' ? a[2] : a[2][0], a[3], '', ''); + } + } + else { + return ['[', ...createStringLiteralKeyCode(a), ']']; + } + } + function createStringLiteralKeyCode(a) { + let codes = ['"', a, '"']; + if (typeof a === 'object') { + const start = typeof a[2] === 'number' ? a[2] : a[2][0]; + const end = typeof a[2] === 'number' ? a[2] : a[2][1]; + codes = [ + ['', 'template', start, a[3]], + ...codes, + ['', 'template', end, a[3]], + ]; + } + return codes; + } +} +template.generate = generate$3; +function walkElementNodes(node, cb) { + if (node.type === 0 /* CompilerDOM.NodeTypes.ROOT */) { + for (const child of node.children) { + walkElementNodes(child, cb); + } + } + else if (node.type === 1 /* CompilerDOM.NodeTypes.ELEMENT */) { + const patchForNode = getVForNode(node); + if (patchForNode) { + walkElementNodes(patchForNode, cb); + } + else { + cb(node); + for (const child of node.children) { + walkElementNodes(child, cb); + } + } + } + else if (node.type === 9 /* CompilerDOM.NodeTypes.IF */) { + // v-if / v-else-if / v-else + for (let i = 0; i < node.branches.length; i++) { + const branch = node.branches[i]; + for (const childNode of branch.children) { + walkElementNodes(childNode, cb); + } + } + } + else if (node.type === 11 /* CompilerDOM.NodeTypes.FOR */) { + // v-for + for (const child of node.children) { + walkElementNodes(child, cb); + } + } +} +template.walkElementNodes = walkElementNodes; +function toUnicodeIfNeed(str) { + if (str.indexOf('\\') === -1 && str.indexOf('\n') === -1) { + return str; + } + return toUnicode(str); +} +function toUnicode(str) { + return str.split('').map(value => { + const temp = value.charCodeAt(0).toString(16).padStart(4, '0'); + if (temp.length > 2) { + return '\\u' + temp; + } + return value; + }).join(''); +} +function camelizeComponentName(newName) { + return (0, shared_1$v.camelize)('-' + newName); +} +function getTagRenameApply(oldName) { + return oldName === (0, shared_2.hyphenateTag)(oldName) ? shared_2.hyphenateTag : noEditApply; +} +function getPropRenameApply(oldName) { + return oldName === (0, shared_2.hyphenateAttr)(oldName) ? shared_2.hyphenateAttr : noEditApply; +} +function noEditApply(n) { + return n; +} +function getModelValuePropName(node, vueVersion, vueCompilerOptions) { + for (const modelName in vueCompilerOptions.experimentalModelPropName) { + const tags = vueCompilerOptions.experimentalModelPropName[modelName]; + for (const tag in tags) { + if (node.tag === tag || node.tag === (0, shared_2.hyphenateTag)(tag)) { + const v = tags[tag]; + if (typeof v === 'object') { + const arr = Array.isArray(v) ? v : [v]; + for (const attrs of arr) { + let failed = false; + for (const attr in attrs) { + const attrNode = node.props.find(prop => prop.type === 6 /* CompilerDOM.NodeTypes.ATTRIBUTE */ && prop.name === attr); + if (!attrNode || attrNode.value?.content !== attrs[attr]) { + failed = true; + break; + } + } + if (!failed) { + // all match + return modelName || undefined; + } + } + } + } + } + } + for (const modelName in vueCompilerOptions.experimentalModelPropName) { + const tags = vueCompilerOptions.experimentalModelPropName[modelName]; + for (const tag in tags) { + if (node.tag === tag || node.tag === (0, shared_2.hyphenateTag)(tag)) { + const attrs = tags[tag]; + if (attrs === true) { + return modelName || undefined; + } + } + } + } + return vueVersion < 3 ? 'value' : 'modelValue'; +} +// TODO: track https://github.com/vuejs/vue-next/issues/3498 +function getVForNode(node) { + const forDirective = node.props.find((prop) => prop.type === 7 /* CompilerDOM.NodeTypes.DIRECTIVE */ + && prop.name === 'for'); + if (forDirective) { + let forNode; + CompilerDOM$2.processFor(node, forDirective, transformContext, _forNode => { + forNode = { ..._forNode }; + return undefined; + }); + if (forNode) { + forNode.children = [{ + ...node, + props: node.props.filter(prop => prop !== forDirective), + }]; + return forNode; + } + } +} +function getVIfNode(node) { + const forDirective = node.props.find((prop) => prop.type === 7 /* CompilerDOM.NodeTypes.DIRECTIVE */ + && prop.name === 'if'); + if (forDirective) { + let ifNode; + CompilerDOM$2.processIf(node, forDirective, transformContext, _ifNode => { + ifNode = { ..._ifNode }; + return undefined; + }); + if (ifNode) { + for (const branch of ifNode.branches) { + branch.children = [{ + ...node, + props: node.props.filter(prop => prop !== forDirective), + }]; + } + return ifNode; + } + } +} + +function commonjsRequire(path) { + throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.'); +} + +var languageModule = {}; + +function assertPath(path) { + if (typeof path !== 'string') { + throw new TypeError('Path must be a string. Received ' + JSON.stringify(path)); + } +} + +// Resolves . and .. elements in a path with directory names +function normalizeStringPosix(path, allowAboveRoot) { + var res = ''; + var lastSegmentLength = 0; + var lastSlash = -1; + var dots = 0; + var code; + for (var i = 0; i <= path.length; ++i) { + if (i < path.length) + code = path.charCodeAt(i); + else if (code === 47 /*/*/) + break; + else + code = 47 /*/*/; + if (code === 47 /*/*/) { + if (lastSlash === i - 1 || dots === 1) ; else if (lastSlash !== i - 1 && dots === 2) { + if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== 46 /*.*/ || res.charCodeAt(res.length - 2) !== 46 /*.*/) { + if (res.length > 2) { + var lastSlashIndex = res.lastIndexOf('/'); + if (lastSlashIndex !== res.length - 1) { + if (lastSlashIndex === -1) { + res = ''; + lastSegmentLength = 0; + } else { + res = res.slice(0, lastSlashIndex); + lastSegmentLength = res.length - 1 - res.lastIndexOf('/'); + } + lastSlash = i; + dots = 0; + continue; + } + } else if (res.length === 2 || res.length === 1) { + res = ''; + lastSegmentLength = 0; + lastSlash = i; + dots = 0; + continue; + } + } + if (allowAboveRoot) { + if (res.length > 0) + res += '/..'; + else + res = '..'; + lastSegmentLength = 2; + } + } else { + if (res.length > 0) + res += '/' + path.slice(lastSlash + 1, i); + else + res = path.slice(lastSlash + 1, i); + lastSegmentLength = i - lastSlash - 1; + } + lastSlash = i; + dots = 0; + } else if (code === 46 /*.*/ && dots !== -1) { + ++dots; + } else { + dots = -1; + } + } + return res; +} + +function _format(sep, pathObject) { + var dir = pathObject.dir || pathObject.root; + var base = pathObject.base || (pathObject.name || '') + (pathObject.ext || ''); + if (!dir) { + return base; + } + if (dir === pathObject.root) { + return dir + base; + } + return dir + sep + base; +} + +var posix = { + // path.resolve([from ...], to) + resolve: function resolve() { + var resolvedPath = ''; + var resolvedAbsolute = false; + var cwd; + + for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { + var path; + if (i >= 0) + path = arguments[i]; + else { + if (cwd === undefined) + cwd = process.cwd(); + path = cwd; + } + + assertPath(path); + + // Skip empty entries + if (path.length === 0) { + continue; + } + + resolvedPath = path + '/' + resolvedPath; + resolvedAbsolute = path.charCodeAt(0) === 47 /*/*/; + } + + // At this point the path should be resolved to a full absolute path, but + // handle relative paths to be safe (might happen when process.cwd() fails) + + // Normalize the path + resolvedPath = normalizeStringPosix(resolvedPath, !resolvedAbsolute); + + if (resolvedAbsolute) { + if (resolvedPath.length > 0) + return '/' + resolvedPath; + else + return '/'; + } else if (resolvedPath.length > 0) { + return resolvedPath; + } else { + return '.'; + } + }, + + normalize: function normalize(path) { + assertPath(path); + + if (path.length === 0) return '.'; + + var isAbsolute = path.charCodeAt(0) === 47 /*/*/; + var trailingSeparator = path.charCodeAt(path.length - 1) === 47 /*/*/; + + // Normalize the path + path = normalizeStringPosix(path, !isAbsolute); + + if (path.length === 0 && !isAbsolute) path = '.'; + if (path.length > 0 && trailingSeparator) path += '/'; + + if (isAbsolute) return '/' + path; + return path; + }, + + isAbsolute: function isAbsolute(path) { + assertPath(path); + return path.length > 0 && path.charCodeAt(0) === 47 /*/*/; + }, + + join: function join() { + if (arguments.length === 0) + return '.'; + var joined; + for (var i = 0; i < arguments.length; ++i) { + var arg = arguments[i]; + assertPath(arg); + if (arg.length > 0) { + if (joined === undefined) + joined = arg; + else + joined += '/' + arg; + } + } + if (joined === undefined) + return '.'; + return posix.normalize(joined); + }, + + relative: function relative(from, to) { + assertPath(from); + assertPath(to); + + if (from === to) return ''; + + from = posix.resolve(from); + to = posix.resolve(to); + + if (from === to) return ''; + + // Trim any leading backslashes + var fromStart = 1; + for (; fromStart < from.length; ++fromStart) { + if (from.charCodeAt(fromStart) !== 47 /*/*/) + break; + } + var fromEnd = from.length; + var fromLen = fromEnd - fromStart; + + // Trim any leading backslashes + var toStart = 1; + for (; toStart < to.length; ++toStart) { + if (to.charCodeAt(toStart) !== 47 /*/*/) + break; + } + var toEnd = to.length; + var toLen = toEnd - toStart; + + // Compare paths to find the longest common path from root + var length = fromLen < toLen ? fromLen : toLen; + var lastCommonSep = -1; + var i = 0; + for (; i <= length; ++i) { + if (i === length) { + if (toLen > length) { + if (to.charCodeAt(toStart + i) === 47 /*/*/) { + // We get here if `from` is the exact base path for `to`. + // For example: from='/foo/bar'; to='/foo/bar/baz' + return to.slice(toStart + i + 1); + } else if (i === 0) { + // We get here if `from` is the root + // For example: from='/'; to='/foo' + return to.slice(toStart + i); + } + } else if (fromLen > length) { + if (from.charCodeAt(fromStart + i) === 47 /*/*/) { + // We get here if `to` is the exact base path for `from`. + // For example: from='/foo/bar/baz'; to='/foo/bar' + lastCommonSep = i; + } else if (i === 0) { + // We get here if `to` is the root. + // For example: from='/foo'; to='/' + lastCommonSep = 0; + } + } + break; + } + var fromCode = from.charCodeAt(fromStart + i); + var toCode = to.charCodeAt(toStart + i); + if (fromCode !== toCode) + break; + else if (fromCode === 47 /*/*/) + lastCommonSep = i; + } + + var out = ''; + // Generate the relative path based on the path difference between `to` + // and `from` + for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) { + if (i === fromEnd || from.charCodeAt(i) === 47 /*/*/) { + if (out.length === 0) + out += '..'; + else + out += '/..'; + } + } + + // Lastly, append the rest of the destination (`to`) path that comes after + // the common path parts + if (out.length > 0) + return out + to.slice(toStart + lastCommonSep); + else { + toStart += lastCommonSep; + if (to.charCodeAt(toStart) === 47 /*/*/) + ++toStart; + return to.slice(toStart); + } + }, + + _makeLong: function _makeLong(path) { + return path; + }, + + dirname: function dirname(path) { + assertPath(path); + if (path.length === 0) return '.'; + var code = path.charCodeAt(0); + var hasRoot = code === 47 /*/*/; + var end = -1; + var matchedSlash = true; + for (var i = path.length - 1; i >= 1; --i) { + code = path.charCodeAt(i); + if (code === 47 /*/*/) { + if (!matchedSlash) { + end = i; + break; + } + } else { + // We saw the first non-path separator + matchedSlash = false; + } + } + + if (end === -1) return hasRoot ? '/' : '.'; + if (hasRoot && end === 1) return '//'; + return path.slice(0, end); + }, + + basename: function basename(path, ext) { + if (ext !== undefined && typeof ext !== 'string') throw new TypeError('"ext" argument must be a string'); + assertPath(path); + + var start = 0; + var end = -1; + var matchedSlash = true; + var i; + + if (ext !== undefined && ext.length > 0 && ext.length <= path.length) { + if (ext.length === path.length && ext === path) return ''; + var extIdx = ext.length - 1; + var firstNonSlashEnd = -1; + for (i = path.length - 1; i >= 0; --i) { + var code = path.charCodeAt(i); + if (code === 47 /*/*/) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + start = i + 1; + break; + } + } else { + if (firstNonSlashEnd === -1) { + // We saw the first non-path separator, remember this index in case + // we need it if the extension ends up not matching + matchedSlash = false; + firstNonSlashEnd = i + 1; + } + if (extIdx >= 0) { + // Try to match the explicit extension + if (code === ext.charCodeAt(extIdx)) { + if (--extIdx === -1) { + // We matched the extension, so mark this as the end of our path + // component + end = i; + } + } else { + // Extension does not match, so our result is the entire path + // component + extIdx = -1; + end = firstNonSlashEnd; + } + } + } + } + + if (start === end) end = firstNonSlashEnd;else if (end === -1) end = path.length; + return path.slice(start, end); + } else { + for (i = path.length - 1; i >= 0; --i) { + if (path.charCodeAt(i) === 47 /*/*/) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + start = i + 1; + break; + } + } else if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // path component + matchedSlash = false; + end = i + 1; + } + } + + if (end === -1) return ''; + return path.slice(start, end); + } + }, + + extname: function extname(path) { + assertPath(path); + var startDot = -1; + var startPart = 0; + var end = -1; + var matchedSlash = true; + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + var preDotState = 0; + for (var i = path.length - 1; i >= 0; --i) { + var code = path.charCodeAt(i); + if (code === 47 /*/*/) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === 46 /*.*/) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) + startDot = i; + else if (preDotState !== 1) + preDotState = 1; + } else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + + if (startDot === -1 || end === -1 || + // We saw a non-dot character immediately before the dot + preDotState === 0 || + // The (right-most) trimmed path component is exactly '..' + preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) { + return ''; + } + return path.slice(startDot, end); + }, + + format: function format(pathObject) { + if (pathObject === null || typeof pathObject !== 'object') { + throw new TypeError('The "pathObject" argument must be of type Object. Received type ' + typeof pathObject); + } + return _format('/', pathObject); + }, + + parse: function parse(path) { + assertPath(path); + + var ret = { root: '', dir: '', base: '', ext: '', name: '' }; + if (path.length === 0) return ret; + var code = path.charCodeAt(0); + var isAbsolute = code === 47 /*/*/; + var start; + if (isAbsolute) { + ret.root = '/'; + start = 1; + } else { + start = 0; + } + var startDot = -1; + var startPart = 0; + var end = -1; + var matchedSlash = true; + var i = path.length - 1; + + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + var preDotState = 0; + + // Get non-dir info + for (; i >= start; --i) { + code = path.charCodeAt(i); + if (code === 47 /*/*/) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === 46 /*.*/) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) startDot = i;else if (preDotState !== 1) preDotState = 1; + } else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + + if (startDot === -1 || end === -1 || + // We saw a non-dot character immediately before the dot + preDotState === 0 || + // The (right-most) trimmed path component is exactly '..' + preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) { + if (end !== -1) { + if (startPart === 0 && isAbsolute) ret.base = ret.name = path.slice(1, end);else ret.base = ret.name = path.slice(startPart, end); + } + } else { + if (startPart === 0 && isAbsolute) { + ret.name = path.slice(1, startDot); + ret.base = path.slice(1, end); + } else { + ret.name = path.slice(startPart, startDot); + ret.base = path.slice(startPart, end); + } + ret.ext = path.slice(startDot, end); + } + + if (startPart > 0) ret.dir = path.slice(0, startPart - 1);else if (isAbsolute) ret.dir = '/'; + + return ret; + }, + + sep: '/', + delimiter: ':', + win32: null, + posix: null +}; + +posix.posix = posix; + +var pathBrowserify = posix; + +var plugins = {}; + +var fileHtml = {}; + +Object.defineProperty(fileHtml, "__esModule", { value: true }); +const sfcBlockReg$1 = /\<(script|style)\b([\s\S]*?)\>([\s\S]*?)\<\/\1\>/g; +const langReg = /\blang\s*=\s*(['\"]?)(\S*)\b\1/; +const plugin$d = () => { + return { + version: 1, + parseSFC(fileName, content) { + if (fileName.endsWith('.html')) { + let sfc = { + descriptor: { + filename: fileName, + source: content, + template: null, + script: null, + scriptSetup: null, + styles: [], + customBlocks: [], + cssVars: [], + shouldForceReload: () => false, + slotted: false, + }, + errors: [], + }; + let templateContent = content; + for (const match of content.matchAll(sfcBlockReg$1)) { + const matchText = match[0]; + const tag = match[1]; + const attrs = match[2]; + const lang = attrs.match(langReg)?.[2]; + const content = match[3]; + const contentStart = match.index + matchText.indexOf(content); + if (tag === 'style') { + sfc.descriptor.styles.push({ + attrs: {}, + content, + loc: { + start: { column: -1, line: -1, offset: contentStart }, + end: { column: -1, line: -1, offset: contentStart + content.length }, + source: content, + }, + type: 'style', + lang, + }); + } + // ignore `<script src="...">` + else if (tag === 'script' && attrs.indexOf('src=') === -1) { + let type = attrs.indexOf('type=') >= 0 ? 'scriptSetup' : 'script'; + sfc.descriptor[type] = { + attrs: {}, + content, + loc: { + start: { column: -1, line: -1, offset: contentStart }, + end: { column: -1, line: -1, offset: contentStart + content.length }, + source: content, + }, + type: 'script', + lang, + }; + } + templateContent = templateContent.substring(0, match.index) + ' '.repeat(matchText.length) + templateContent.substring(match.index + matchText.length); + } + sfc.descriptor.template = { + attrs: {}, + content: templateContent, + loc: { + start: { column: -1, line: -1, offset: 0 }, + end: { column: -1, line: -1, offset: templateContent.length }, + source: templateContent, + }, + type: 'template', + ast: {}, + }; + return sfc; + } + } + }; +}; +fileHtml.default = plugin$d; + +var fileMd = {}; + +var parseSfc = {}; + +Object.defineProperty(parseSfc, "__esModule", { value: true }); +parseSfc.parse = void 0; +const compiler = compilerDom_cjs; +function parse$b(source) { + const errors = []; + const ast = compiler.parse(source, { + // there are no components at SFC parsing level + isNativeTag: () => true, + // preserve all whitespaces + isPreTag: () => true, + getTextMode: ({ tag, props }, parent) => { + if ((!parent && tag !== 'template') + || (tag === 'template' + && props.some(p => p.type === 6 /* compiler.NodeTypes.ATTRIBUTE */ && + p.name === 'lang' && + p.value && + p.value.content && + p.value.content !== 'html'))) { + return 2 /* compiler.TextModes.RAWTEXT */; + } + else { + return 0 /* compiler.TextModes.DATA */; + } + }, + onError: e => { + errors.push(e); + }, + comments: true, + }); + const descriptor = { + filename: 'anonymous.vue', + source, + template: null, + script: null, + scriptSetup: null, + styles: [], + customBlocks: [], + cssVars: [], + slotted: false, + shouldForceReload: () => false, + }; + ast.children.forEach(node => { + if (node.type !== 1 /* compiler.NodeTypes.ELEMENT */) { + return; + } + switch (node.tag) { + case 'template': + const templateBlock = (descriptor.template = createBlock(node, source)); + templateBlock.ast = node; + break; + case 'script': + const scriptBlock = createBlock(node, source); + const isSetup = !!scriptBlock.attrs.setup; + if (isSetup && !descriptor.scriptSetup) { + descriptor.scriptSetup = scriptBlock; + break; + } + if (!isSetup && !descriptor.script) { + descriptor.script = scriptBlock; + break; + } + break; + case 'style': + const styleBlock = createBlock(node, source); + descriptor.styles.push(styleBlock); + break; + default: + descriptor.customBlocks.push(createBlock(node, source)); + break; + } + }); + return { + descriptor, + errors, + }; +} +parseSfc.parse = parse$b; +function createBlock(node, source) { + const type = node.tag; + let { start, end } = node.loc; + let content = ''; + if (node.children.length) { + start = node.children[0].loc.start; + end = node.children[node.children.length - 1].loc.end; + content = source.slice(start.offset, end.offset); + } + else { + const offset = node.loc.source.indexOf(`</`); + if (offset > -1) { + start = { + line: start.line, + column: start.column + offset, + offset: start.offset + offset + }; + } + end = Object.assign({}, start); + } + const loc = { + source: content, + start, + end + }; + const attrs = {}; + const block = { + type, + content, + loc, + attrs + }; + node.props.forEach(p => { + if (p.type === 6 /* compiler.NodeTypes.ATTRIBUTE */) { + attrs[p.name] = p.value ? p.value.content || true : true; + if (p.name === 'lang') { + block.lang = p.value && p.value.content; + } + else if (p.name === 'src') { + block.src = p.value && p.value.content; + } + else if (type === 'style') { + if (p.name === 'scoped') { + block.scoped = true; + } + else if (p.name === 'module') { + block.module = attrs[p.name]; + } + } + else if (type === 'script' && p.name === 'setup') { + block.setup = attrs.setup; + } + } + }); + return block; +} + +Object.defineProperty(fileMd, "__esModule", { value: true }); +const source_map_1$2 = sourceMap$1; +const parseSfc_1$1 = parseSfc; +const codeblockReg = /```[\s\S]+?```/g; +const inlineCodeblockReg = /`[^\n`]+?`/g; +const scriptSetupReg = /\\\<[\s\S]+?\>\n?/g; +const sfcBlockReg = /\<(script|style)\b[\s\S]*?\>([\s\S]*?)\<\/\1\>/g; +const angleBracketReg = /\<\S*\:\S*\>/g; +const linkReg = /\[[\s\S]*?\]\([\s\S]*?\)/g; +const codeSnippetImportReg = /^\s*<<<\s*.+/gm; +const plugin$c = () => { + return { + version: 1, + parseSFC(fileName, content) { + if (fileName.endsWith('.md')) { + content = content + // code block + .replace(codeblockReg, match => '```' + ' '.repeat(match.length - 6) + '```') + // inline code block + .replace(inlineCodeblockReg, match => `\`${' '.repeat(match.length - 2)}\``) + // # \<script setup> + .replace(scriptSetupReg, match => ' '.repeat(match.length)) + // <<< https://vitepress.dev/guide/markdown#import-code-snippets + .replace(codeSnippetImportReg, match => ' '.repeat(match.length)); + const codes = []; + for (const match of content.matchAll(sfcBlockReg)) { + if (match.index !== undefined) { + const matchText = match[0]; + codes.push([matchText, undefined, match.index]); + codes.push('\n\n'); + content = content.substring(0, match.index) + ' '.repeat(matchText.length) + content.substring(match.index + matchText.length); + } + } + content = content + // angle bracket: <http://foo.com> + .replace(angleBracketReg, match => ' '.repeat(match.length)) + // [foo](http://foo.com) + .replace(linkReg, match => ' '.repeat(match.length)); + codes.push('<template>\n'); + codes.push([content, undefined, 0]); + codes.push('\n</template>'); + const file2VueSourceMap = new source_map_1$2.SourceMap((0, source_map_1$2.buildMappings)(codes)); + const sfc = (0, parseSfc_1$1.parse)((0, source_map_1$2.toString)(codes)); + if (sfc.descriptor.template) { + transformRange(sfc.descriptor.template); + } + if (sfc.descriptor.script) { + transformRange(sfc.descriptor.script); + } + if (sfc.descriptor.scriptSetup) { + transformRange(sfc.descriptor.scriptSetup); + } + for (const style of sfc.descriptor.styles) { + transformRange(style); + } + for (const customBlock of sfc.descriptor.customBlocks) { + transformRange(customBlock); + } + return sfc; + function transformRange(block) { + block.loc.start.offset = file2VueSourceMap.toSourceOffset(block.loc.start.offset)?.[0] ?? -1; + block.loc.end.offset = file2VueSourceMap.toSourceOffset(block.loc.end.offset)?.[0] ?? -1; + } + } + } + }; +}; +fileMd.default = plugin$c; + +var fileVue = {}; + +Object.defineProperty(fileVue, "__esModule", { value: true }); +const parseSfc_1 = parseSfc; +const plugin$b = (_ctx) => { + return { + version: 1, + parseSFC(_fileName, content) { + return (0, parseSfc_1.parse)(content); + }, + updateSFC(sfc, change) { + const blocks = [ + sfc.descriptor.template, + sfc.descriptor.script, + sfc.descriptor.scriptSetup, + ...sfc.descriptor.styles, + ...sfc.descriptor.customBlocks, + ].filter((block) => !!block); + const hitBlock = blocks.find(block => change.start >= block.loc.start.offset && change.end <= block.loc.end.offset); + if (!hitBlock) { + return; + } + hitBlock.content = + hitBlock.content.substring(0, change.start - hitBlock.loc.start.offset) + + change.newText + + hitBlock.content.substring(change.end - hitBlock.loc.start.offset); + const lengthDiff = change.newText.length - (change.end - change.start); + for (const block of blocks) { + if (block.loc.start.offset > change.end) { + block.loc.start.offset += lengthDiff; + } + if (block.loc.end.offset >= change.end) { + block.loc.end.offset += lengthDiff; + } + } + return sfc; + }, + }; +}; +fileVue.default = plugin$b; + +var vueSfcCustomblocks = {}; + +Object.defineProperty(vueSfcCustomblocks, "__esModule", { value: true }); +const language_core_1$h = languageCore; +const customBlockReg = /^(.*)\.customBlock_([^_]+)_(\d+)\.([^.]+)$/; +const plugin$a = () => { + return { + version: 1, + getEmbeddedFileNames(fileName, sfc) { + const names = []; + for (let i = 0; i < sfc.customBlocks.length; i++) { + const customBlock = sfc.customBlocks[i]; + names.push(fileName + '.customBlock_' + customBlock.type + '_' + i + '.' + customBlock.lang); + } + return names; + }, + resolveEmbeddedFile(_fileName, sfc, embeddedFile) { + const match = embeddedFile.fileName.match(customBlockReg); + if (match) { + const index = parseInt(match[3]); + const customBlock = sfc.customBlocks[index]; + embeddedFile.capabilities = language_core_1$h.FileCapabilities.full; + embeddedFile.content.push([ + customBlock.content, + customBlock.name, + 0, + language_core_1$h.FileRangeCapabilities.full, + ]); + } + }, + }; +}; +vueSfcCustomblocks.default = plugin$a; + +var vueSfcScripts = {}; + +Object.defineProperty(vueSfcScripts, "__esModule", { value: true }); +const language_core_1$g = languageCore; +const scriptFormatReg = /^(.*)\.script_format\.([^.]+)$/; +const scriptSetupFormatReg = /^(.*)\.scriptSetup_format\.([^.]+)$/; +const plugin$9 = () => { + return { + version: 1, + getEmbeddedFileNames(fileName, sfc) { + const names = []; + if (sfc.script) { + names.push(fileName + '.script_format.' + sfc.script.lang); + } + if (sfc.scriptSetup) { + names.push(fileName + '.scriptSetup_format.' + sfc.scriptSetup.lang); + } + return names; + }, + resolveEmbeddedFile(_fileName, sfc, embeddedFile) { + const scriptMatch = embeddedFile.fileName.match(scriptFormatReg); + const scriptSetupMatch = embeddedFile.fileName.match(scriptSetupFormatReg); + const script = scriptMatch ? sfc.script : scriptSetupMatch ? sfc.scriptSetup : undefined; + if (script) { + embeddedFile.kind = language_core_1$g.FileKind.TextFile; + embeddedFile.capabilities = { + ...language_core_1$g.FileCapabilities.full, + diagnostic: false, + codeAction: false, + inlayHint: false, + }; + embeddedFile.content.push([ + script.content, + script.name, + 0, + {}, + ]); + } + }, + }; +}; +vueSfcScripts.default = plugin$9; + +var vueSfcStyles = {}; + +Object.defineProperty(vueSfcStyles, "__esModule", { value: true }); +const language_core_1$f = languageCore; +const styleReg = /^(.*)\.style_(\d+)\.([^.]+)$/; +const plugin$8 = () => { + return { + version: 1, + getEmbeddedFileNames(fileName, sfc) { + const names = []; + for (let i = 0; i < sfc.styles.length; i++) { + const style = sfc.styles[i]; + names.push(fileName + '.style_' + i + '.' + style.lang); + } + return names; + }, + resolveEmbeddedFile(_fileName, sfc, embeddedFile) { + const match = embeddedFile.fileName.match(styleReg); + if (match) { + const index = parseInt(match[2]); + const style = sfc.styles[index]; + embeddedFile.capabilities = language_core_1$f.FileCapabilities.full; + embeddedFile.content.push([ + style.content, + style.name, + 0, + language_core_1$f.FileRangeCapabilities.full, + ]); + } + }, + }; +}; +vueSfcStyles.default = plugin$8; + +var vueSfcTemplate = {}; + +Object.defineProperty(vueSfcTemplate, "__esModule", { value: true }); +const language_core_1$e = languageCore; +const templateReg = /^(.*)\.template\.([^.]+)$/; +const plugin$7 = () => { + return { + version: 1, + getEmbeddedFileNames(fileName, sfc) { + if (sfc.template) { + return [fileName + '.template.' + sfc.template.lang]; + } + return []; + }, + resolveEmbeddedFile(_fileName, sfc, embeddedFile) { + const match = embeddedFile.fileName.match(templateReg); + if (match && sfc.template) { + embeddedFile.capabilities = language_core_1$e.FileCapabilities.full; + embeddedFile.content.push([ + sfc.template.content, + sfc.template.name, + 0, + language_core_1$e.FileRangeCapabilities.full, + ]); + } + }, + }; +}; +vueSfcTemplate.default = plugin$7; + +var vueTemplateHtml = {}; + +Object.defineProperty(vueTemplateHtml, "__esModule", { value: true }); +const plugin$6 = ({ modules }) => { + return { + version: 1, + compileSFCTemplate(lang, template, options) { + if (lang === 'html') { + const compiler = modules['@vue/compiler-dom']; + return compiler.compile(template, { + ...options, + comments: true, + }); + } + }, + updateSFCTemplate(oldResult, change) { + modules['@vue/compiler-dom']; + const lengthDiff = change.newText.length - (change.end - change.start); + let hitNodes = []; + if (tryUpdateNode(oldResult.ast) && hitNodes.length) { + hitNodes = hitNodes.sort((a, b) => a.loc.source.length - b.loc.source.length); + const hitNode = hitNodes[0]; + if (hitNode.type === 4 /* CompilerDOM.NodeTypes.SIMPLE_EXPRESSION */) { + return oldResult; + } + } + function tryUpdateNode(node) { + if (withinChangeRange(node.loc)) { + hitNodes.push(node); + } + if (tryUpdateNodeLoc(node.loc)) { + if (node.type === 0 /* CompilerDOM.NodeTypes.ROOT */) { + for (const child of node.children) { + if (!tryUpdateNode(child)) { + return false; + } + } + } + else if (node.type === 1 /* CompilerDOM.NodeTypes.ELEMENT */) { + if (withinChangeRange(node.loc)) { + // if not self closing, should not hit tag name + const start = node.loc.start.offset + 2; + const end = node.loc.start.offset + node.loc.source.lastIndexOf('</'); + if (!withinChangeRange({ start: { offset: start }, end: { offset: end }, source: '' })) { + return false; + } + } + for (const prop of node.props) { + if (!tryUpdateNode(prop)) { + return false; + } + } + for (const child of node.children) { + if (!tryUpdateNode(child)) { + return false; + } + } + } + else if (node.type === 6 /* CompilerDOM.NodeTypes.ATTRIBUTE */) { + if (node.value && !tryUpdateNode(node.value)) { + return false; + } + } + else if (node.type === 7 /* CompilerDOM.NodeTypes.DIRECTIVE */) { + if (node.arg && withinChangeRange(node.arg.loc) && node.name === 'slot') { + return false; + } + if (node.exp && withinChangeRange(node.exp.loc) && node.name === 'for') { // #2266 + return false; + } + if (node.arg && !tryUpdateNode(node.arg)) { + return false; + } + if (node.exp && !tryUpdateNode(node.exp)) { + return false; + } + } + else if (node.type === 12 /* CompilerDOM.NodeTypes.TEXT_CALL */) { + if (!tryUpdateNode(node.content)) { + return false; + } + } + else if (node.type === 8 /* CompilerDOM.NodeTypes.COMPOUND_EXPRESSION */) { + for (const childNode of node.children) { + if (typeof childNode === 'object') { + if (!tryUpdateNode(childNode)) { + return false; + } + } + } + } + else if (node.type === 9 /* CompilerDOM.NodeTypes.IF */) { + for (const branch of node.branches) { + if (branch.condition && !tryUpdateNode(branch.condition)) { + return false; + } + for (const child of branch.children) { + if (!tryUpdateNode(child)) { + return false; + } + } + } + } + else if (node.type === 11 /* CompilerDOM.NodeTypes.FOR */) { + for (const child of [ + node.parseResult.source, + node.parseResult.value, + node.parseResult.key, + node.parseResult.index, + ]) { + if (child && !tryUpdateNode(child)) { + return false; + } + } + for (const child of node.children) { + if (!tryUpdateNode(child)) { + return false; + } + } + } + else if (node.type === 5 /* CompilerDOM.NodeTypes.INTERPOLATION */) { + if (!tryUpdateNode(node.content)) { + return false; + } + } + else if (node.type === 4 /* CompilerDOM.NodeTypes.SIMPLE_EXPRESSION */) { + if (withinChangeRange(node.loc)) { // TODO: review this (slot name?) + if (node.isStatic) { + return false; + } + else { + node.content = node.loc.source; + } + } + } + return true; + } + return false; + } + function tryUpdateNodeLoc(loc) { + delete loc.__endOffset; + if (withinChangeRange(loc)) { + loc.source = + loc.source.substring(0, change.start - loc.start.offset) + + change.newText + + loc.source.substring(change.end - loc.start.offset); + loc.__endOffset = loc.end.offset; + loc.end.offset += lengthDiff; + return true; + } + else if (change.end <= loc.start.offset) { + loc.__endOffset = loc.end.offset; + loc.start.offset += lengthDiff; + loc.end.offset += lengthDiff; + return true; + } + else if (change.start >= loc.end.offset) { + return true; // no need update + } + return false; + } + function withinChangeRange(loc) { + const originalLocEnd = loc.__endOffset ?? loc.end.offset; + return change.start >= loc.start.offset && change.end <= originalLocEnd; + } + }, + }; +}; +vueTemplateHtml.default = plugin$6; + +var vueTsx = {}; + +var out$7 = {}; + +var computed$1 = {}; + +var tracker = {}; + +var system = {}; + +(function (exports) { + Object.defineProperty(exports, "__esModule", { value: true }); + exports.trigger = exports.cleanupDepEffect = exports.track = exports.depsMap = exports.resetEffect = exports.pauseEffect = exports.resetTracking = exports.pauseTracking = exports.activeTrackers = void 0; + exports.activeTrackers = []; + let pauseEffectStack = 0; + const pausedTrackers = []; + const pausedEffects = []; + function pauseTracking() { + pausedTrackers.push(exports.activeTrackers); + exports.activeTrackers = []; + } + exports.pauseTracking = pauseTracking; + function resetTracking() { + exports.activeTrackers = pausedTrackers.pop(); + } + exports.resetTracking = resetTracking; + function pauseEffect() { + pauseEffectStack++; + } + exports.pauseEffect = pauseEffect; + function resetEffect() { + pauseEffectStack--; + while (!pauseEffectStack && pausedEffects.length) { + pausedEffects.shift().effect(); + } + } + exports.resetEffect = resetEffect; + exports.depsMap = new WeakMap(); + const trackerRegistry = new FinalizationRegistry(trackToken => { + const deps = exports.depsMap.get(trackToken); + if (deps) { + for (const dep of deps) { + dep.delete(trackToken); + } + deps.length = 0; + } + }); + function track(dep) { + if (exports.activeTrackers.length) { + const tracker = exports.activeTrackers[exports.activeTrackers.length - 1]; + if (!tracker.trackToken) { + if (tracker.effect) { + tracker.trackToken = tracker; + } + else { + tracker.trackToken = new WeakRef(tracker); + trackerRegistry.register(tracker, tracker.trackToken, tracker); + } + exports.depsMap.set(tracker.trackToken, []); + } + const trackToken = tracker.trackToken; + const deps = exports.depsMap.get(trackToken); + if (deps) { + if (dep.get(tracker) !== tracker.trackId) { + dep.set(tracker, tracker.trackId); + const oldDep = deps[tracker.depsLength]; + if (oldDep !== dep) { + if (oldDep) { + cleanupDepEffect(oldDep, tracker); + } + deps[tracker.depsLength++] = dep; + } + else { + tracker.depsLength++; + } + } + } + } + } + exports.track = track; + function cleanupDepEffect(dep, tracker) { + const trackId = dep.get(tracker); + if (trackId !== undefined && tracker.trackId !== trackId) { + dep.delete(tracker); + } + } + exports.cleanupDepEffect = cleanupDepEffect; + function trigger(dep, dirtyLevel) { + pauseEffect(); + for (const trackToken of dep.keys()) { + const tracker = trackToken.deref(); + if (!tracker) { + continue; + } + if (tracker.dirtyLevel < dirtyLevel && + (!tracker.runnings || dirtyLevel !== 2 /* DirtyLevels.ComputedValueDirty */)) { + const lastDirtyLevel = tracker.dirtyLevel; + tracker.dirtyLevel = dirtyLevel; + if (lastDirtyLevel === 0 /* DirtyLevels.NotDirty */ && + (!tracker.queryings || dirtyLevel !== 2 /* DirtyLevels.ComputedValueDirty */)) { + tracker.spread(); + if (tracker.effect) { + pausedEffects.push(tracker); + } + } + } + } + resetEffect(); + } + exports.trigger = trigger; +} (system)); + +Object.defineProperty(tracker, "__esModule", { value: true }); +tracker.Tracker = void 0; +const system_1$2 = system; +class Tracker { + constructor(spread, effect) { + this.spread = spread; + this.effect = effect; + this.dirtyLevel = 3 /* DirtyLevels.Dirty */; + this.trackId = 0; + this.runnings = 0; + this.queryings = 0; + this.depsLength = 0; + } + get dirty() { + if (this.dirtyLevel === 1 /* DirtyLevels.ComputedValueMaybeDirty */) { + this.dirtyLevel = 0 /* DirtyLevels.NotDirty */; + if (this.trackToken) { + const deps = system_1$2.depsMap.get(this.trackToken); + if (deps) { + this.queryings++; + (0, system_1$2.pauseTracking)(); + for (const dep of deps) { + if (dep.computed) { + dep.computed(); + if (this.dirtyLevel >= 2 /* DirtyLevels.ComputedValueDirty */) { + break; + } + } + } + (0, system_1$2.resetTracking)(); + this.queryings--; + } + } + } + return this.dirtyLevel >= 2 /* DirtyLevels.ComputedValueDirty */; + } + track(fn) { + try { + system_1$2.activeTrackers.push(this); + this.runnings++; + preCleanup(this); + return fn(); + } + finally { + postCleanup(this); + this.runnings--; + system_1$2.activeTrackers.pop(); + if (!this.runnings) { + this.dirtyLevel = 0 /* DirtyLevels.NotDirty */; + } + } + } + reset() { + preCleanup(this); + postCleanup(this); + this.dirtyLevel = 3 /* DirtyLevels.Dirty */; + } + deref() { + return this; + } +} +tracker.Tracker = Tracker; +function preCleanup(tracker) { + tracker.trackId++; + tracker.depsLength = 0; +} +function postCleanup(tracker) { + if (tracker.trackToken) { + const deps = system_1$2.depsMap.get(tracker.trackToken); + if (deps && deps.length > tracker.depsLength) { + for (let i = tracker.depsLength; i < deps.length; i++) { + (0, system_1$2.cleanupDepEffect)(deps[i], tracker); + } + deps.length = tracker.depsLength; + } + } +} + +var dep = {}; + +Object.defineProperty(dep, "__esModule", { value: true }); +dep.Dep = void 0; +let Dep$1 = class Dep extends Map { + constructor(computed) { + super(); + this.computed = computed; + } +}; +dep.Dep = Dep$1; + +Object.defineProperty(computed$1, "__esModule", { value: true }); +computed$1.computed = void 0; +const tracker_1$1 = tracker; +const system_1$1 = system; +const dep_1$1 = dep; +function computed(getter) { + let oldValue; + const tracker = new tracker_1$1.Tracker(() => (0, system_1$1.trigger)(dep, 1 /* DirtyLevels.ComputedValueMaybeDirty */)); + const fn = () => { + (0, system_1$1.track)(dep); + if (tracker.dirty + && !Object.is(oldValue, oldValue = tracker.track(() => getter(oldValue)))) { + (0, system_1$1.trigger)(dep, 2 /* DirtyLevels.ComputedValueDirty */); + } + return oldValue; + }; + const dep = new dep_1$1.Dep(fn); + return fn; +} +computed$1.computed = computed; + +var effect$1 = {}; + +Object.defineProperty(effect$1, "__esModule", { value: true }); +effect$1.effect = void 0; +const tracker_1 = tracker; +function effect(fn) { + const tracker = new tracker_1.Tracker(() => { }, () => { + if (tracker.dirty) { + tracker.track(fn); + } + }); + tracker.track(fn); + return tracker; +} +effect$1.effect = effect; + +var signal$1 = {}; + +Object.defineProperty(signal$1, "__esModule", { value: true }); +signal$1.signal = void 0; +const system_1 = system; +const dep_1 = dep; +function signal(oldValue) { + const dep = new dep_1.Dep(); + const fn = (() => { + (0, system_1.track)(dep); + return oldValue; + }); + fn.markDirty = () => { + (0, system_1.trigger)(dep, 3 /* DirtyLevels.Dirty */); + }; + fn.set = (newValue) => { + if (!Object.is(oldValue, oldValue = newValue)) { + fn.markDirty(); + } + }; + return fn; +} +signal$1.signal = signal; + +var computedArray$1 = {}; + +Object.defineProperty(computedArray$1, "__esModule", { value: true }); +computedArray$1.computedArray = void 0; +const computed_1$1 = computed$1; +function computedArray(arr, computedItem) { + const length = (0, computed_1$1.computed)(() => arr().length); + const keys = (0, computed_1$1.computed)(() => { + const keys = []; + for (let i = 0; i < length(); i++) { + keys.push(String(i)); + } + return keys; + }); + const items = (0, computed_1$1.computed)((array) => { + array ??= []; + while (array.length < length()) { + const index = array.length; + const item = (0, computed_1$1.computed)(() => arr()[index]); + array.push(computedItem(item, index)); + } + if (array.length > length()) { + array.length = length(); + } + return array; + }); + return new Proxy({}, { + get(_, p, receiver) { + if (p === 'length') { + return length(); + } + if (typeof p === 'string' && !isNaN(Number(p))) { + return items()[Number(p)]?.(); + } + return Reflect.get(items(), p, receiver); + }, + has(_, p) { + return Reflect.has(items(), p); + }, + ownKeys() { + return keys(); + }, + }); +} +computedArray$1.computedArray = computedArray; + +var computedSet$1 = {}; + +Object.defineProperty(computedSet$1, "__esModule", { value: true }); +computedSet$1.computedSet = void 0; +const computed_1 = computed$1; +function computedSet(getter) { + return (0, computed_1.computed)((oldValue) => { + const newValue = getter(); + if (oldValue?.size === newValue.size && [...oldValue].every(c => newValue.has(c))) { + return oldValue; + } + return newValue; + }); +} +computedSet$1.computedSet = computedSet; + +(function (exports) { + var __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); + }) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; + })); + var __exportStar = (commonjsGlobal && commonjsGlobal.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + __exportStar(computed$1, exports); + __exportStar(effect$1, exports); + __exportStar(tracker, exports); + __exportStar(signal$1, exports); + __exportStar(system, exports); + __exportStar(computedArray$1, exports); + __exportStar(computedSet$1, exports); +} (out$7)); + +var script = {}; + +Object.defineProperty(script, "__esModule", { value: true }); +script.generate = void 0; +const language_core_1$d = languageCore; +const source_map_1$1 = sourceMap$1; +const muggle$2 = out$9; +const path$9 = pathBrowserify; +const shared_1$u = shared$1; +const transform_1 = transform; +function generate$2(ts, fileName, script, scriptSetup, styles, // TODO: computed it +lang, scriptRanges, scriptSetupRanges, htmlGen, compilerOptions, vueCompilerOptions, codegenStack) { + const [codes, codeStacks] = codegenStack ? muggle$2.track([]) : [[], []]; + const mirrorBehaviorMappings = []; + //#region monkey fix: https://github.com/vuejs/language-tools/pull/2113 + if (!script && !scriptSetup) { + scriptSetup = { + content: '', + lang: 'ts', + name: '', + start: 0, + end: 0, + startTagEnd: 0, + endTagStart: 0, + generic: undefined, + genericOffset: 0, + attrs: {}, + ast: ts.createSourceFile('', '', ts.ScriptTarget.Latest, false, ts.ScriptKind.TS), + }; + scriptSetupRanges = { + bindings: [], + props: {}, + emits: {}, + expose: {}, + slots: {}, + defineProp: [], + importSectionEndOffset: 0, + leadingCommentEndOffset: 0, + }; + } + //#endregion + const bindingNames = new Set([ + ...scriptRanges?.bindings.map(range => script.content.substring(range.start, range.end)) ?? [], + ...scriptSetupRanges?.bindings.map(range => scriptSetup.content.substring(range.start, range.end)) ?? [], + ]); + const bypassDefineComponent = lang === 'js' || lang === 'jsx'; + const usedHelperTypes = { + DefinePropsToOptions: false, + MergePropDefaults: false, + WithTemplateSlots: false, + PropsChildren: false, + }; + codes.push(`/* __placeholder__ */\n`); + let generatedTemplate = false; + generateSrc(); + generateScriptSetupImports(); + generateScriptContentBeforeExportDefault(); + generateScriptSetupAndTemplate(); + generateHelperTypes(); + generateScriptContentAfterExportDefault(); + if (!generatedTemplate) { + generateTemplate(false); + } + if (scriptSetup) { + // for code action edits + codes.push([ + '', + 'scriptSetup', + scriptSetup.content.length, + {}, + ]); + } + return { + codes, + codeStacks, + mirrorBehaviorMappings, + }; + function generateHelperTypes() { + if (usedHelperTypes.DefinePropsToOptions) { + if (compilerOptions.exactOptionalPropertyTypes) { + codes.push(`type __VLS_TypePropsToRuntimeProps<T> = { [K in keyof T]-?: {} extends Pick<T, K> ? { type: import('${vueCompilerOptions.lib}').PropType<T[K]> } : { type: import('${vueCompilerOptions.lib}').PropType<T[K]>, required: true } };\n`); + } + else { + codes.push(`type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;\n`); + codes.push(`type __VLS_TypePropsToRuntimeProps<T> = { [K in keyof T]-?: {} extends Pick<T, K> ? { type: import('${vueCompilerOptions.lib}').PropType<__VLS_NonUndefinedable<T[K]>> } : { type: import('${vueCompilerOptions.lib}').PropType<T[K]>, required: true } };\n`); + } + } + if (usedHelperTypes.MergePropDefaults) { + codes.push(`type __VLS_WithDefaults<P, D> = { + // use 'keyof Pick<P, keyof P>' instead of 'keyof P' to keep props jsdoc + [K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_Prettify<P[K] & { + default: D[K] + }> : P[K] + };\n`); + codes.push(`type __VLS_Prettify<T> = { [K in keyof T]: T[K]; } & {};\n`); + } + if (usedHelperTypes.WithTemplateSlots) { + codes.push(`type __VLS_WithTemplateSlots<T, S> = T & { new(): {\n`, `${(0, shared_1$u.getSlotsPropertyName)(vueCompilerOptions.target)}: S;\n`); + if (vueCompilerOptions.jsxSlots) { + usedHelperTypes.PropsChildren = true; + codes.push(`$props: __VLS_PropsChildren<S>;\n`); + } + codes.push(`} };\n`); + } + if (usedHelperTypes.PropsChildren) { + codes.push(`type __VLS_PropsChildren<S> = { [K in keyof (boolean extends (JSX.ElementChildrenAttribute extends never ? true : false) ? never : JSX.ElementChildrenAttribute)]?: S; };\n`); + } + } + function generateSrc() { + if (!script?.src) + return; + let src = script.src; + if (src.endsWith('.d.ts')) + src = src.substring(0, src.length - '.d.ts'.length); + else if (src.endsWith('.ts')) + src = src.substring(0, src.length - '.ts'.length); + else if (src.endsWith('.tsx')) + src = src.substring(0, src.length - '.tsx'.length) + '.jsx'; + if (!src.endsWith('.js') && !src.endsWith('.jsx')) + src = src + '.js'; + codes.push(`export * from `); + codes.push([ + `'${src}'`, + 'script', + [script.srcOffset - 1, script.srcOffset + script.src.length + 1], + { + ...language_core_1$d.FileRangeCapabilities.full, + rename: src === script.src ? true : { + normalize: undefined, + apply(newName) { + if (newName.endsWith('.jsx') + || newName.endsWith('.js')) { + newName = newName.split('.').slice(0, -1).join('.'); + } + if (script?.src?.endsWith('.d.ts')) { + newName = newName + '.d.ts'; + } + else if (script?.src?.endsWith('.ts')) { + newName = newName + '.ts'; + } + else if (script?.src?.endsWith('.tsx')) { + newName = newName + '.tsx'; + } + return newName; + }, + }, + }, + ]); + codes.push(`;\n`); + codes.push(`export { default } from '${src}';\n`); + } + function generateScriptContentBeforeExportDefault() { + if (!script) + return; + if (!!scriptSetup && scriptRanges?.exportDefault) { + addVirtualCode('script', 0, scriptRanges.exportDefault.expression.start); + } + else { + let isExportRawObject = false; + if (scriptRanges?.exportDefault) { + isExportRawObject = script.content.substring(scriptRanges.exportDefault.expression.start, scriptRanges.exportDefault.expression.end).startsWith('{'); + } + if (isExportRawObject && vueCompilerOptions.optionsWrapper.length === 2 && scriptRanges?.exportDefault) { + addVirtualCode('script', 0, scriptRanges.exportDefault.expression.start); + codes.push(vueCompilerOptions.optionsWrapper[0]); + { + codes.push(['', 'script', scriptRanges.exportDefault.expression.start, { + __hint: { + setting: 'vue.inlayHints.optionsWrapper', + label: vueCompilerOptions.optionsWrapper[0], + tooltip: [ + 'This is virtual code that is automatically wrapped for type support, it does not affect your runtime behavior, you can customize it via `vueCompilerOptions.optionsWrapper` option in tsconfig / jsconfig.', + 'To hide it, you can set `"vue.inlayHints.optionsWrapper": false` in IDE settings.', + ].join('\n\n'), + } + }]); + addVirtualCode('script', scriptRanges.exportDefault.expression.start, scriptRanges.exportDefault.expression.end); + codes.push(['', 'script', scriptRanges.exportDefault.expression.end, { + __hint: { + setting: 'vue.inlayHints.optionsWrapper', + label: vueCompilerOptions.optionsWrapper[1], + tooltip: '', + } + }]); + } + codes.push(vueCompilerOptions.optionsWrapper[1]); + addVirtualCode('script', scriptRanges.exportDefault.expression.end, script.content.length); + } + else { + addVirtualCode('script', 0, script.content.length); + } + } + } + function generateScriptContentAfterExportDefault() { + if (!script) + return; + if (!!scriptSetup && scriptRanges?.exportDefault) { + addVirtualCode('script', scriptRanges.exportDefault.end, script.content.length); + } + } + function generateScriptSetupImports() { + if (!scriptSetup) + return; + if (!scriptSetupRanges) + return; + codes.push([ + scriptSetup.content.substring(0, Math.max(scriptSetupRanges.importSectionEndOffset, scriptSetupRanges.leadingCommentEndOffset)) + '\n', + 'scriptSetup', + 0, + language_core_1$d.FileRangeCapabilities.full, + ]); + } + function generateExportDefaultEndMapping() { + if (!scriptSetup) { + return; + } + // fix https://github.com/vuejs/language-tools/issues/1127 + codes.push([ + '', + 'scriptSetup', + scriptSetup.content.length, + { diagnostic: true }, + ]); + codes.push(`\n`); + } + function generateScriptSetupAndTemplate() { + if (!scriptSetup || !scriptSetupRanges) { + return; + } + const definePropMirrors = {}; + let scriptSetupGeneratedOffset; + if (scriptSetup.generic) { + if (!scriptRanges?.exportDefault) { + codes.push('export default '); + } + codes.push(`(<`); + codes.push([ + scriptSetup.generic, + scriptSetup.name, + scriptSetup.genericOffset, + language_core_1$d.FileRangeCapabilities.full, + ]); + if (!scriptSetup.generic.endsWith(',')) { + codes.push(`,`); + } + codes.push(`>`); + codes.push('(\n'); + codes.push(`__VLS_props: Awaited<typeof __VLS_setup>['props'],\n`); + codes.push(`__VLS_ctx?: __VLS_Prettify<Pick<Awaited<typeof __VLS_setup>, 'attrs' | 'emit' | 'slots'>>,\n`); // use __VLS_Prettify for less dts code + codes.push(`__VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>['expose'],\n`); + codes.push('__VLS_setup = (async () => {\n'); + scriptSetupGeneratedOffset = generateSetupFunction(true, 'none', definePropMirrors); + //#region props + codes.push(`const __VLS_fnComponent = `); + codes.push(`(await import('${vueCompilerOptions.lib}')).defineComponent({\n`); + if (scriptSetupRanges.props.define?.arg) { + codes.push(`props: `); + addExtraReferenceVirtualCode('scriptSetup', scriptSetupRanges.props.define.arg.start, scriptSetupRanges.props.define.arg.end); + codes.push(`,\n`); + } + if (scriptSetupRanges.emits.define) { + codes.push(`emits: ({} as __VLS_NormalizeEmits<typeof `, scriptSetupRanges.emits.name ?? '__VLS_emit', `>),\n`); + } + codes.push(`});\n`); + if (scriptSetupRanges.defineProp.length) { + codes.push(`const __VLS_defaults = {\n`); + for (const defineProp of scriptSetupRanges.defineProp) { + if (defineProp.defaultValue) { + if (defineProp.name) { + codes.push(scriptSetup.content.substring(defineProp.name.start, defineProp.name.end)); + } + else { + codes.push('modelValue'); + } + codes.push(`: `); + codes.push(scriptSetup.content.substring(defineProp.defaultValue.start, defineProp.defaultValue.end)); + codes.push(`,\n`); + } + } + codes.push(`};\n`); + } + codes.push(`let __VLS_fnPropsTypeOnly!: {}`); // TODO: reuse __VLS_fnPropsTypeOnly even without generic, and remove __VLS_propsOption_defineProp + if (scriptSetupRanges.props.define?.typeArg) { + codes.push(` & `); + addVirtualCode('scriptSetup', scriptSetupRanges.props.define.typeArg.start, scriptSetupRanges.props.define.typeArg.end); + } + if (scriptSetupRanges.defineProp.length) { + codes.push(` & {\n`); + for (const defineProp of scriptSetupRanges.defineProp) { + let propName = 'modelValue'; + if (defineProp.name) { + propName = scriptSetup.content.substring(defineProp.name.start, defineProp.name.end); + const propMirrorStart = muggle$2.getLength(codes); + definePropMirrors[propName] = [propMirrorStart, propMirrorStart + propName.length]; + } + codes.push(`${propName}${defineProp.required ? '' : '?'}: `); + if (defineProp.type) { + codes.push(scriptSetup.content.substring(defineProp.type.start, defineProp.type.end)); + } + else if (defineProp.defaultValue) { + codes.push(`typeof __VLS_defaults['`); + codes.push(propName); + codes.push(`']`); + } + else { + codes.push(`any`); + } + codes.push(',\n'); + } + codes.push(`}`); + } + codes.push(`;\n`); + codes.push(`let __VLS_fnPropsDefineComponent!: InstanceType<typeof __VLS_fnComponent>['$props']`); + codes.push(`;\n`); + codes.push(`let __VLS_fnPropsSlots!: `); + if (scriptSetupRanges.slots.define && vueCompilerOptions.jsxSlots) { + usedHelperTypes.PropsChildren = true; + codes.push(`__VLS_PropsChildren<typeof __VLS_slots>`); + } + else { + codes.push(`{}`); + } + codes.push(`;\n`); + codes.push(`let __VLS_defaultProps!: `, `import('${vueCompilerOptions.lib}').VNodeProps`, `& import('${vueCompilerOptions.lib}').AllowedComponentProps`, `& import('${vueCompilerOptions.lib}').ComponentCustomProps`, `;\n`); + //#endregion + codes.push('return {} as {\n'); + codes.push(`props: __VLS_Prettify<__VLS_OmitKeepDiscriminatedUnion<typeof __VLS_fnPropsDefineComponent & typeof __VLS_fnPropsTypeOnly, keyof typeof __VLS_defaultProps>> & typeof __VLS_fnPropsSlots & typeof __VLS_defaultProps,\n`); + codes.push(`expose(exposed: import('${vueCompilerOptions.lib}').ShallowUnwrapRef<${scriptSetupRanges.expose.define ? 'typeof __VLS_exposed' : '{}'}>): void,\n`); + codes.push('attrs: any,\n'); + codes.push('slots: ReturnType<typeof __VLS_template>,\n'); + codes.push(`emit: typeof ${scriptSetupRanges.emits.name ?? '__VLS_emit'},\n`); + codes.push('};\n'); + codes.push('})(),\n'); + codes.push(`) => ({} as import('${vueCompilerOptions.lib}').VNode & { __ctx?: Awaited<typeof __VLS_setup> }))`); + } + else if (!script) { + // no script block, generate script setup code at root + scriptSetupGeneratedOffset = generateSetupFunction(false, 'export', definePropMirrors); + } + else { + if (!scriptRanges?.exportDefault) { + codes.push('export default '); + } + codes.push('await (async () => {\n'); + scriptSetupGeneratedOffset = generateSetupFunction(false, 'return', definePropMirrors); + codes.push(`})()`); + } + generateExportDefaultEndMapping(); + if (scriptSetupGeneratedOffset !== undefined) { + for (const defineProp of scriptSetupRanges.defineProp) { + if (!defineProp.name) { + continue; + } + const propName = scriptSetup.content.substring(defineProp.name.start, defineProp.name.end); + const propMirror = definePropMirrors[propName]; + if (propMirror) { + mirrorBehaviorMappings.push({ + sourceRange: [defineProp.name.start + scriptSetupGeneratedOffset, defineProp.name.end + scriptSetupGeneratedOffset], + generatedRange: propMirror, + data: [ + language_core_1$d.MirrorBehaviorCapabilities.full, + language_core_1$d.MirrorBehaviorCapabilities.full, + ], + }); + } + } + } + } + function generateSetupFunction(functional, mode, definePropMirrors) { + if (!scriptSetupRanges || !scriptSetup) { + return; + } + const definePropProposalA = scriptSetup.content.trimStart().startsWith('// @experimentalDefinePropProposal=kevinEdition') || vueCompilerOptions.experimentalDefinePropProposal === 'kevinEdition'; + const definePropProposalB = scriptSetup.content.trimStart().startsWith('// @experimentalDefinePropProposal=johnsonEdition') || vueCompilerOptions.experimentalDefinePropProposal === 'johnsonEdition'; + if (vueCompilerOptions.target >= 3.3) { + codes.push('const { '); + for (const macro of Object.keys(vueCompilerOptions.macros)) { + if (!bindingNames.has(macro)) { + codes.push(macro, ', '); + } + } + codes.push(`} = await import('${vueCompilerOptions.lib}');\n`); + } + if (definePropProposalA) { + codes.push(` +declare function defineProp<T>(name: string, options: { required: true } & Record<string, unknown>): import('${vueCompilerOptions.lib}').ComputedRef<T>; +declare function defineProp<T>(name: string, options: { default: any } & Record<string, unknown>): import('${vueCompilerOptions.lib}').ComputedRef<T>; +declare function defineProp<T>(name?: string, options?: any): import('${vueCompilerOptions.lib}').ComputedRef<T | undefined>; +`.trim() + '\n'); + } + if (definePropProposalB) { + codes.push(` +declare function defineProp<T>(value: T | (() => T), required?: boolean, rest?: any): import('${vueCompilerOptions.lib}').ComputedRef<T>; +declare function defineProp<T>(value: T | (() => T) | undefined, required: true, rest?: any): import('${vueCompilerOptions.lib}').ComputedRef<T>; +declare function defineProp<T>(value?: T | (() => T), required?: boolean, rest?: any): import('${vueCompilerOptions.lib}').ComputedRef<T | undefined>; +`.trim() + '\n'); + } + const scriptSetupGeneratedOffset = muggle$2.getLength(codes) - scriptSetupRanges.importSectionEndOffset; + let setupCodeModifies = []; + if (scriptSetupRanges.props.define && !scriptSetupRanges.props.name) { + const range = scriptSetupRanges.props.withDefaults ?? scriptSetupRanges.props.define; + const statement = scriptSetupRanges.props.define.statement; + if (statement.start === range.start && statement.end === range.end) { + setupCodeModifies.push([() => codes.push(`const __VLS_props = `), range.start, range.start]); + } + else { + setupCodeModifies.push([() => { + codes.push(`const __VLS_props = `); + addVirtualCode('scriptSetup', range.start, range.end); + codes.push(`;\n`); + addVirtualCode('scriptSetup', statement.start, range.start); + codes.push(`__VLS_props`); + }, statement.start, range.end]); + } + } + if (scriptSetupRanges.slots.define && !scriptSetupRanges.slots.name) { + setupCodeModifies.push([() => codes.push(`const __VLS_slots = `), scriptSetupRanges.slots.define.start, scriptSetupRanges.slots.define.start]); + } + if (scriptSetupRanges.emits.define && !scriptSetupRanges.emits.name) { + setupCodeModifies.push([() => codes.push(`const __VLS_emit = `), scriptSetupRanges.emits.define.start, scriptSetupRanges.emits.define.start]); + } + if (scriptSetupRanges.expose.define) { + setupCodeModifies.push([() => { + if (scriptSetupRanges?.expose.define?.typeArg) { + codes.push(`let __VLS_exposed!: `); + addExtraReferenceVirtualCode('scriptSetup', scriptSetupRanges.expose.define.typeArg.start, scriptSetupRanges.expose.define.typeArg.end); + codes.push(`;\n`); + } + else if (scriptSetupRanges?.expose.define?.arg) { + codes.push(`const __VLS_exposed = `); + addExtraReferenceVirtualCode('scriptSetup', scriptSetupRanges.expose.define.arg.start, scriptSetupRanges.expose.define.arg.end); + codes.push(`;\n`); + } + else { + codes.push(`const __VLS_exposed = {};\n`); + } + }, scriptSetupRanges.expose.define.start, scriptSetupRanges.expose.define.start]); + } + setupCodeModifies = setupCodeModifies.sort((a, b) => a[1] - b[1]); + if (setupCodeModifies.length) { + addVirtualCode('scriptSetup', scriptSetupRanges.importSectionEndOffset, setupCodeModifies[0][1]); + while (setupCodeModifies.length) { + const [generate, _, end] = setupCodeModifies.shift(); + generate(); + if (setupCodeModifies.length) { + const nextStart = setupCodeModifies[0][1]; + addVirtualCode('scriptSetup', end, nextStart); + } + else { + addVirtualCode('scriptSetup', end); + } + } + } + else { + addVirtualCode('scriptSetup', scriptSetupRanges.importSectionEndOffset); + } + if (scriptSetupRanges.props.define?.typeArg && scriptSetupRanges.props.withDefaults?.arg) { + // fix https://github.com/vuejs/language-tools/issues/1187 + codes.push(`const __VLS_withDefaultsArg = (function <T>(t: T) { return t })(`); + addExtraReferenceVirtualCode('scriptSetup', scriptSetupRanges.props.withDefaults.arg.start, scriptSetupRanges.props.withDefaults.arg.end); + codes.push(`);\n`); + } + if (!functional && scriptSetupRanges.defineProp.length) { + codes.push(`let __VLS_propsOption_defineProp!: {\n`); + for (const defineProp of scriptSetupRanges.defineProp) { + let propName = 'modelValue'; + if (defineProp.name && defineProp.nameIsString) { + // renaming support + addExtraReferenceVirtualCode('scriptSetup', defineProp.name.start, defineProp.name.end); + } + else if (defineProp.name) { + propName = scriptSetup.content.substring(defineProp.name.start, defineProp.name.end); + const start = muggle$2.getLength(codes); + definePropMirrors[propName] = [start, start + propName.length]; + codes.push(propName); + } + else { + codes.push(propName); + } + codes.push(`: `); + let type = 'any'; + if (!defineProp.nameIsString) { + type = `NonNullable<typeof ${propName}['value']>`; + } + else if (defineProp.type) { + type = scriptSetup.content.substring(defineProp.type.start, defineProp.type.end); + } + if (defineProp.required) { + codes.push(`{ required: true, type: import('${vueCompilerOptions.lib}').PropType<${type}> },\n`); + } + else { + codes.push(`import('${vueCompilerOptions.lib}').PropType<${type}>,\n`); + } + } + codes.push(`};\n`); + } + generateTemplate(functional); + if (mode === 'return' || mode === 'export') { + if (!vueCompilerOptions.skipTemplateCodegen && (htmlGen?.hasSlot || scriptSetupRanges?.slots.define)) { + usedHelperTypes.WithTemplateSlots = true; + codes.push(`const __VLS_component = `); + generateComponent(functional); + codes.push(`;\n`); + codes.push(mode === 'return' ? 'return ' : 'export default '); + codes.push(`{} as __VLS_WithTemplateSlots<typeof __VLS_component, ReturnType<typeof __VLS_template>>;\n`); + } + else { + codes.push(mode === 'return' ? 'return ' : 'export default '); + generateComponent(functional); + codes.push(`;\n`); + } + } + if (mode === 'export') { + generateExportDefaultEndMapping(); + } + return scriptSetupGeneratedOffset; + } + function generateComponent(functional) { + if (!scriptSetupRanges) + return; + if (scriptRanges?.exportDefault && scriptRanges.exportDefault.expression.start !== scriptRanges.exportDefault.args.start) { + // use defineComponent() from user space code if it exist + addVirtualCode('script', scriptRanges.exportDefault.expression.start, scriptRanges.exportDefault.args.start); + codes.push(`{\n`); + } + else { + codes.push(`(await import('${vueCompilerOptions.lib}')).defineComponent({\n`); + } + generateComponentOptions(functional); + codes.push(`setup() {\n`); + codes.push(`return {\n`); + generateSetupReturns(); + if (scriptSetupRanges.expose.define) { + codes.push(`...__VLS_exposed,\n`); + } + codes.push(`};\n`); + codes.push(`},\n`); + codes.push(`})`); + } + function generateComponentOptions(functional) { + if (scriptSetupRanges && !bypassDefineComponent) { + const ranges = scriptSetupRanges; + const propsCodegens = []; + if (ranges.props.define?.arg) { + const arg = ranges.props.define.arg; + propsCodegens.push(() => { + addExtraReferenceVirtualCode('scriptSetup', arg.start, arg.end); + }); + } + if (ranges.props.define?.typeArg) { + const typeArg = ranges.props.define.typeArg; + propsCodegens.push(() => { + usedHelperTypes.DefinePropsToOptions = true; + codes.push(`{} as `); + if (ranges.props.withDefaults?.arg) { + usedHelperTypes.MergePropDefaults = true; + codes.push(`__VLS_WithDefaults<`); + } + codes.push(`__VLS_TypePropsToRuntimeProps<`); + if (functional) { + codes.push(`typeof __VLS_fnPropsTypeOnly`); + } + else { + addExtraReferenceVirtualCode('scriptSetup', typeArg.start, typeArg.end); + } + codes.push(`>`); + if (ranges.props.withDefaults?.arg) { + codes.push(`, typeof __VLS_withDefaultsArg`); + codes.push(`>`); + } + }); + } + if (!functional && ranges.defineProp.length) { + propsCodegens.push(() => { + codes.push(`__VLS_propsOption_defineProp`); + }); + } + if (propsCodegens.length === 1) { + codes.push(`props: `); + for (const generate of propsCodegens) { + generate(); + } + codes.push(`,\n`); + } + else if (propsCodegens.length >= 2) { + codes.push(`props: {\n`); + for (const generate of propsCodegens) { + codes.push('...'); + generate(); + codes.push(',\n'); + } + codes.push(`},\n`); + } + if (ranges.emits.define) { + codes.push(`emits: ({} as __VLS_NormalizeEmits<typeof `, ranges.emits.name ?? '__VLS_emit', `>),\n`); + } + } + if (scriptRanges?.exportDefault?.args) { + addVirtualCode('script', scriptRanges.exportDefault.args.start + 1, scriptRanges.exportDefault.args.end - 1); + } + } + function generateSetupReturns() { + if (scriptSetupRanges && bypassDefineComponent) { + // fill $props + if (scriptSetupRanges.props.define) { + // NOTE: defineProps is inaccurate for $props + codes.push(`$props: __VLS_makeOptional(${scriptSetupRanges.props.name ?? `__VLS_props`}),\n`); + codes.push(`...${scriptSetupRanges.props.name ?? `__VLS_props`},\n`); + } + // fill $emit + if (scriptSetupRanges.emits.define) { + codes.push(`$emit: ${scriptSetupRanges.emits.name ?? '__VLS_emit'},\n`); + } + } + } + function generateTemplate(functional) { + generatedTemplate = true; + if (!vueCompilerOptions.skipTemplateCodegen) { + generateExportOptions(); + generateConstNameOption(); + codes.push(`function __VLS_template() {\n`); + const templateGened = generateTemplateContext(); + codes.push(`}\n`); + generateComponentForTemplateUsage(functional, templateGened.cssIds); + } + else { + codes.push(`function __VLS_template() {\n`); + const templateUsageVars = [...getTemplateUsageVars()]; + codes.push(`// @ts-ignore\n`); + codes.push(`[${templateUsageVars.join(', ')}]\n`); + codes.push(`return {};\n`); + codes.push(`}\n`); + } + } + function generateComponentForTemplateUsage(functional, cssIds) { + if (scriptSetup && scriptSetupRanges) { + codes.push(`const __VLS_internalComponent = (await import('${vueCompilerOptions.lib}')).defineComponent({\n`); + generateComponentOptions(functional); + codes.push(`setup() {\n`); + codes.push(`return {\n`); + generateSetupReturns(); + // bindings + const templateUsageVars = getTemplateUsageVars(); + for (const [content, bindings] of [ + [scriptSetup.content, scriptSetupRanges.bindings], + scriptRanges && script + ? [script.content, scriptRanges.bindings] + : ['', []], + ]) { + for (const expose of bindings) { + const varName = content.substring(expose.start, expose.end); + if (!templateUsageVars.has(varName) && !cssIds.has(varName)) { + continue; + } + const templateStart = (0, source_map_1$1.getLength)(codes); + codes.push(varName); + const templateEnd = (0, source_map_1$1.getLength)(codes); + codes.push(`: ${varName} as typeof `); + const scriptStart = (0, source_map_1$1.getLength)(codes); + codes.push(varName); + const scriptEnd = (0, source_map_1$1.getLength)(codes); + codes.push(',\n'); + mirrorBehaviorMappings.push({ + sourceRange: [scriptStart, scriptEnd], + generatedRange: [templateStart, templateEnd], + data: [ + language_core_1$d.MirrorBehaviorCapabilities.full, + language_core_1$d.MirrorBehaviorCapabilities.full, + ], + }); + } + } + codes.push(`};\n`); // return { + codes.push(`},\n`); // setup() { + codes.push(`});\n`); // defineComponent({ + } + else if (script) { + codes.push(`let __VLS_internalComponent!: typeof import('./${path$9.basename(fileName)}')['default'];\n`); + } + else { + codes.push(`const __VLS_internalComponent = (await import('${vueCompilerOptions.lib}')).defineComponent({});\n`); + } + } + function generateExportOptions() { + codes.push(`\n`); + codes.push(`const __VLS_componentsOption = `); + if (script && scriptRanges?.exportDefault?.componentsOption) { + const componentsOption = scriptRanges.exportDefault.componentsOption; + codes.push([ + script.content.substring(componentsOption.start, componentsOption.end), + 'script', + componentsOption.start, + { + references: true, + rename: true, + }, + ]); + } + else { + codes.push('{}'); + } + codes.push(`;\n`); + } + function generateConstNameOption() { + codes.push(`\n`); + if (script && scriptRanges?.exportDefault?.nameOption) { + const nameOption = scriptRanges.exportDefault.nameOption; + codes.push(`const __VLS_name = `); + codes.push(`${script.content.substring(nameOption.start, nameOption.end)} as const`); + codes.push(`;\n`); + } + else if (scriptSetup) { + codes.push(`let __VLS_name!: '${path$9.basename(fileName.substring(0, fileName.lastIndexOf('.')))}';\n`); + } + else { + codes.push(`const __VLS_name = undefined;\n`); + } + } + function generateTemplateContext() { + const useGlobalThisTypeInCtx = fileName.endsWith('.html'); + codes.push(`let __VLS_ctx!: ${useGlobalThisTypeInCtx ? 'typeof globalThis &' : ''}`); + codes.push(`InstanceType<__VLS_PickNotAny<typeof __VLS_internalComponent, new () => {}>> & {\n`); + /* CSS Module */ + for (let i = 0; i < styles.length; i++) { + const style = styles[i]; + if (style.module) { + codes.push(`${style.module}: Record<string, string> & __VLS_Prettify<{}`); + for (const className of style.classNames) { + generateCssClassProperty(i, className.text.substring(1), { start: className.offset, end: className.offset + className.text.length }, 'string', false, true); + } + codes.push('>;\n'); + } + } + codes.push(`};\n`); + /* Components */ + codes.push('/* Components */\n'); + codes.push(`let __VLS_otherComponents!: NonNullable<typeof __VLS_internalComponent extends { components: infer C } ? C : {}> & typeof __VLS_componentsOption;\n`); + codes.push(`let __VLS_own!: __VLS_SelfComponent<typeof __VLS_name, typeof __VLS_internalComponent & (new () => { ${(0, shared_1$u.getSlotsPropertyName)(vueCompilerOptions.target)}: typeof ${scriptSetupRanges?.slots?.name ?? '__VLS_slots'} })>;\n`); + codes.push(`let __VLS_localComponents!: typeof __VLS_otherComponents & Omit<typeof __VLS_own, keyof typeof __VLS_otherComponents>;\n`); + codes.push(`let __VLS_components!: typeof __VLS_localComponents & __VLS_GlobalComponents & typeof __VLS_ctx;\n`); // for html completion, TS references... + /* Style Scoped */ + codes.push('/* Style Scoped */\n'); + codes.push('type __VLS_StyleScopedClasses = {}'); + for (let i = 0; i < styles.length; i++) { + const style = styles[i]; + const option = vueCompilerOptions.experimentalResolveStyleCssClasses; + if (option === 'always' || (option === 'scoped' && style.scoped)) { + for (const className of style.classNames) { + generateCssClassProperty(i, className.text.substring(1), { start: className.offset, end: className.offset + className.text.length }, 'boolean', true, !style.module); + } + } + } + codes.push(';\n'); + codes.push('let __VLS_styleScopedClasses!: __VLS_StyleScopedClasses | keyof __VLS_StyleScopedClasses | (keyof __VLS_StyleScopedClasses)[];\n'); + codes.push(`/* CSS variable injection */\n`); + const cssIds = generateCssVars(); + codes.push(`/* CSS variable injection end */\n`); + if (htmlGen) { + muggle$2.setTracking(false); + for (const s of htmlGen.codes) { + codes.push(s); + } + muggle$2.setTracking(true); + for (const s of htmlGen.codeStacks) { + codeStacks.push(s); + } + } + if (!htmlGen) { + codes.push(`// no template\n`); + if (!scriptSetupRanges?.slots.define) { + codes.push(`const __VLS_slots = {};\n`); + } + } + codes.push(`return ${scriptSetupRanges?.slots.name ?? '__VLS_slots'};\n`); + return { cssIds }; + function generateCssClassProperty(styleIndex, className, classRange, propertyType, optional, referencesCodeLens) { + codes.push(`\n & { `); + codes.push([ + '', + 'style_' + styleIndex, + classRange.start, + { + references: true, + referencesCodeLens, + }, + ]); + codes.push(`'`); + codes.push([ + className, + 'style_' + styleIndex, + [classRange.start, classRange.end], + { + references: true, + rename: { + normalize: normalizeCssRename, + apply: applyCssRename, + }, + }, + ]); + codes.push(`'`); + codes.push([ + '', + 'style_' + styleIndex, + classRange.end, + {}, + ]); + codes.push(`${optional ? '?' : ''}: ${propertyType}`); + codes.push(` }`); + } + function generateCssVars() { + const emptyLocalVars = new Map(); + const identifiers = new Set(); + for (const style of styles) { + for (const cssBind of style.cssVars) { + (0, transform_1.walkInterpolationFragment)(ts, cssBind.text, ts.createSourceFile('/a.txt', cssBind.text, ts.ScriptTarget.ESNext), (frag, fragOffset, onlyForErrorMapping) => { + if (fragOffset === undefined) { + codes.push(frag); + } + else { + codes.push([ + frag, + style.name, + cssBind.offset + fragOffset, + onlyForErrorMapping + ? { diagnostic: true } + : language_core_1$d.FileRangeCapabilities.full, + ]); + } + }, emptyLocalVars, identifiers, vueCompilerOptions); + codes.push(';\n'); + } + } + return identifiers; + } + } + function getTemplateUsageVars() { + const usageVars = new Set(); + if (htmlGen) { + // fix import components unused report + for (const varName of bindingNames) { + if (!!htmlGen.tagNames[varName] || !!htmlGen.tagNames[(0, shared_1$u.hyphenateTag)(varName)]) { + usageVars.add(varName); + } + } + for (const tag of Object.keys(htmlGen.tagNames)) { + if (tag.indexOf('.') >= 0) { + usageVars.add(tag.split('.')[0]); + } + } + for (const _id of htmlGen.accessedGlobalVariables) { + usageVars.add(_id); + } + } + return usageVars; + } + function addVirtualCode(vueTag, start, end) { + muggle$2.offsetStack(); + codes.push([ + (vueTag === 'script' ? script : scriptSetup).content.substring(start, end), + vueTag, + start, + language_core_1$d.FileRangeCapabilities.full, // diagnostic also working for setup() returns unused in template checking + ]); + muggle$2.resetOffsetStack(); + } + function addExtraReferenceVirtualCode(vueTag, start, end) { + muggle$2.offsetStack(); + codes.push([ + (vueTag === 'script' ? script : scriptSetup).content.substring(start, end), + vueTag, + start, + { + references: true, + definition: true, + rename: true, + }, + ]); + muggle$2.resetOffsetStack(); + } +} +script.generate = generate$2; +function normalizeCssRename(newName) { + return newName.startsWith('.') ? newName.slice(1) : newName; +} +function applyCssRename(newName) { + return '.' + newName; +} + +var scriptRanges = {}; + +var scriptSetupRanges = {}; + +Object.defineProperty(scriptSetupRanges, "__esModule", { value: true }); +scriptSetupRanges.getStartEnd = scriptSetupRanges.findBindingVars = scriptSetupRanges.parseBindingRanges = scriptSetupRanges.parseScriptSetupRanges = void 0; +function parseScriptSetupRanges(ts, ast, vueCompilerOptions) { + let foundNonImportExportNode = false; + let importSectionEndOffset = 0; + const props = {}; + const slots = {}; + const emits = {}; + const expose = {}; + const definePropProposalA = vueCompilerOptions.experimentalDefinePropProposal === 'kevinEdition' || ast.getFullText().trimStart().startsWith('// @experimentalDefinePropProposal=kevinEdition'); + const definePropProposalB = vueCompilerOptions.experimentalDefinePropProposal === 'johnsonEdition' || ast.getFullText().trimStart().startsWith('// @experimentalDefinePropProposal=johnsonEdition'); + const defineProp = []; + const bindings = parseBindingRanges(ts, ast); + const text = ast.getFullText(); + const leadingCommentEndOffset = ts.getLeadingCommentRanges(text, 0)?.reverse()[0].end ?? 0; + ast.forEachChild(node => { + const isTypeExport = (ts.isTypeAliasDeclaration(node) || ts.isInterfaceDeclaration(node)) && node.modifiers?.some(mod => mod.kind === ts.SyntaxKind.ExportKeyword); + if (!foundNonImportExportNode + && !ts.isImportDeclaration(node) + && !isTypeExport + && !ts.isEmptyStatement(node) + // fix https://github.com/vuejs/language-tools/issues/1223 + && !ts.isImportEqualsDeclaration(node)) { + const commentRanges = ts.getLeadingCommentRanges(text, node.getFullStart()); + if (commentRanges?.length) { + const commentRange = commentRanges.sort((a, b) => a.pos - b.pos)[0]; + importSectionEndOffset = commentRange.pos; + } + else { + importSectionEndOffset = node.getStart(ast); + } + foundNonImportExportNode = true; + } + }); + ast.forEachChild(child => visitNode(child, [ast])); + return { + leadingCommentEndOffset, + importSectionEndOffset, + bindings, + props, + slots, + emits, + expose, + defineProp, + }; + function _getStartEnd(node) { + return getStartEnd(node, ast); + } + function visitNode(node, parents) { + const parent = parents[parents.length - 1]; + if (ts.isCallExpression(node) + && ts.isIdentifier(node.expression)) { + const callText = node.expression.getText(ast); + if (vueCompilerOptions.macros.defineModel.includes(callText)) { + let name; + let options; + if (node.arguments.length >= 2) { + name = _getStartEnd(node.arguments[0]); + options = node.arguments[1]; + } + else if (node.arguments.length >= 1) { + if (ts.isStringLiteral(node.arguments[0])) { + name = _getStartEnd(node.arguments[0]); + } + else { + options = node.arguments[0]; + } + } + let required = false; + if (options && ts.isObjectLiteralExpression(options)) { + for (const property of options.properties) { + if (ts.isPropertyAssignment(property) && ts.isIdentifier(property.name) && property.name.getText(ast) === 'required' && property.initializer.kind === ts.SyntaxKind.TrueKeyword) { + required = true; + break; + } + } + } + defineProp.push({ + name, + nameIsString: true, + type: node.typeArguments?.length ? _getStartEnd(node.typeArguments[0]) : undefined, + defaultValue: undefined, + required, + }); + } + else if (callText === 'defineProp') { + if (definePropProposalA) { + let required = false; + if (node.arguments.length >= 2) { + const secondArg = node.arguments[1]; + if (ts.isObjectLiteralExpression(secondArg)) { + for (const property of secondArg.properties) { + if (ts.isPropertyAssignment(property) && ts.isIdentifier(property.name) && property.name.getText(ast) === 'required' && property.initializer.kind === ts.SyntaxKind.TrueKeyword) { + required = true; + break; + } + } + } + } + if (node.arguments.length >= 1) { + defineProp.push({ + name: _getStartEnd(node.arguments[0]), + nameIsString: true, + type: node.typeArguments?.length ? _getStartEnd(node.typeArguments[0]) : undefined, + defaultValue: undefined, + required, + }); + } + else if (ts.isVariableDeclaration(parent)) { + defineProp.push({ + name: _getStartEnd(parent.name), + nameIsString: false, + type: node.typeArguments?.length ? _getStartEnd(node.typeArguments[0]) : undefined, + defaultValue: undefined, + required, + }); + } + } + else if (definePropProposalB && ts.isVariableDeclaration(parent)) { + defineProp.push({ + name: _getStartEnd(parent.name), + nameIsString: false, + defaultValue: node.arguments.length >= 1 ? _getStartEnd(node.arguments[0]) : undefined, + type: node.typeArguments?.length ? _getStartEnd(node.typeArguments[0]) : undefined, + required: node.arguments.length >= 2 && node.arguments[1].kind === ts.SyntaxKind.TrueKeyword, + }); + } + } + else if (vueCompilerOptions.macros.defineSlots.includes(callText)) { + slots.define = _getStartEnd(node); + if (ts.isVariableDeclaration(parent)) { + slots.name = parent.name.getText(ast); + } + } + else if (vueCompilerOptions.macros.defineEmits.includes(callText)) { + emits.define = _getStartEnd(node); + if (ts.isVariableDeclaration(parent)) { + emits.name = parent.name.getText(ast); + } + } + else if (vueCompilerOptions.macros.defineExpose.includes(callText)) { + expose.define = _getStartEnd(node); + if (node.arguments.length) { + expose.define.arg = _getStartEnd(node.arguments[0]); + } + if (node.typeArguments?.length) { + expose.define.typeArg = _getStartEnd(node.typeArguments[0]); + } + } + else if (vueCompilerOptions.macros.defineProps.includes(callText)) { + let statementRange; + for (let i = parents.length - 1; i >= 0; i--) { + if (ts.isStatement(parents[i])) { + const statement = parents[i]; + statement.forEachChild(child => { + const range = _getStartEnd(child); + statementRange ??= range; + statementRange.end = range.end; + }); + break; + } + } + if (!statementRange) { + statementRange = _getStartEnd(node); + } + props.define = { + ..._getStartEnd(node), + statement: statementRange, + }; + if (ts.isVariableDeclaration(parent)) { + props.name = parent.name.getText(ast); + } + if (node.arguments.length) { + props.define.arg = _getStartEnd(node.arguments[0]); + } + if (node.typeArguments?.length) { + props.define.typeArg = _getStartEnd(node.typeArguments[0]); + } + } + else if (vueCompilerOptions.macros.withDefaults.includes(callText)) { + props.withDefaults = _getStartEnd(node); + if (node.arguments.length >= 2) { + const arg = node.arguments[1]; + props.withDefaults.arg = _getStartEnd(arg); + } + if (ts.isVariableDeclaration(parent)) { + props.name = parent.name.getText(ast); + } + } + } + node.forEachChild(child => { + parents.push(node); + visitNode(child, parents); + parents.pop(); + }); + } +} +scriptSetupRanges.parseScriptSetupRanges = parseScriptSetupRanges; +function parseBindingRanges(ts, sourceFile) { + const bindings = []; + sourceFile.forEachChild(node => { + if (ts.isVariableStatement(node)) { + for (const node_2 of node.declarationList.declarations) { + const vars = _findBindingVars(node_2.name); + for (const _var of vars) { + bindings.push(_var); + } + } + } + else if (ts.isFunctionDeclaration(node)) { + if (node.name && ts.isIdentifier(node.name)) { + bindings.push(_getStartEnd(node.name)); + } + } + else if (ts.isClassDeclaration(node)) { + if (node.name) { + bindings.push(_getStartEnd(node.name)); + } + } + else if (ts.isEnumDeclaration(node)) { + bindings.push(_getStartEnd(node.name)); + } + if (ts.isImportDeclaration(node)) { + if (node.importClause && !node.importClause.isTypeOnly) { + if (node.importClause.name) { + bindings.push(_getStartEnd(node.importClause.name)); + } + if (node.importClause.namedBindings) { + if (ts.isNamedImports(node.importClause.namedBindings)) { + for (const element of node.importClause.namedBindings.elements) { + bindings.push(_getStartEnd(element.name)); + } + } + else if (ts.isNamespaceImport(node.importClause.namedBindings)) { + bindings.push(_getStartEnd(node.importClause.namedBindings.name)); + } + } + } + } + }); + return bindings; + function _getStartEnd(node) { + return getStartEnd(node, sourceFile); + } + function _findBindingVars(left) { + return findBindingVars(ts, left, sourceFile); + } +} +scriptSetupRanges.parseBindingRanges = parseBindingRanges; +function findBindingVars(ts, left, sourceFile) { + const vars = []; + worker(left); + return vars; + function worker(_node) { + if (ts.isIdentifier(_node)) { + vars.push(getStartEnd(_node, sourceFile)); + } + // { ? } = ... + // [ ? ] = ... + else if (ts.isObjectBindingPattern(_node) || ts.isArrayBindingPattern(_node)) { + for (const property of _node.elements) { + if (ts.isBindingElement(property)) { + worker(property.name); + } + } + } + // { foo: ? } = ... + else if (ts.isPropertyAssignment(_node)) { + worker(_node.initializer); + } + // { foo } = ... + else if (ts.isShorthandPropertyAssignment(_node)) { + vars.push(getStartEnd(_node.name, sourceFile)); + } + // { ...? } = ... + // [ ...? ] = ... + else if (ts.isSpreadAssignment(_node) || ts.isSpreadElement(_node)) { + worker(_node.expression); + } + } +} +scriptSetupRanges.findBindingVars = findBindingVars; +function getStartEnd(node, sourceFile) { + return { + start: node.getStart(sourceFile), + end: node.getEnd(), + }; +} +scriptSetupRanges.getStartEnd = getStartEnd; + +Object.defineProperty(scriptRanges, "__esModule", { value: true }); +scriptRanges.parseScriptRanges = void 0; +const scriptSetupRanges_1 = scriptSetupRanges; +function parseScriptRanges(ts, ast, hasScriptSetup, withNode) { + let exportDefault; + const bindings = hasScriptSetup ? (0, scriptSetupRanges_1.parseBindingRanges)(ts, ast) : []; + ast.forEachChild(raw => { + if (ts.isExportAssignment(raw)) { + let node = raw; + while (ts.isAsExpression(node.expression) || ts.isParenthesizedExpression(node.expression)) { // fix https://github.com/vuejs/language-tools/issues/1882 + node = node.expression; + } + let obj; + if (ts.isObjectLiteralExpression(node.expression)) { + obj = node.expression; + } + else if (ts.isCallExpression(node.expression) && node.expression.arguments.length) { + const arg0 = node.expression.arguments[0]; + if (ts.isObjectLiteralExpression(arg0)) { + obj = arg0; + } + } + if (obj) { + let componentsOptionNode; + let nameOptionNode; + obj.forEachChild(node => { + if (ts.isPropertyAssignment(node) && ts.isIdentifier(node.name)) { + if (node.name.escapedText === 'components' && ts.isObjectLiteralExpression(node.initializer)) { + componentsOptionNode = node.initializer; + } + if (node.name.escapedText === 'name') { + nameOptionNode = node.initializer; + } + } + }); + exportDefault = { + ..._getStartEnd(raw), + expression: _getStartEnd(node.expression), + args: _getStartEnd(obj), + argsNode: withNode ? obj : undefined, + componentsOption: componentsOptionNode ? _getStartEnd(componentsOptionNode) : undefined, + componentsOptionNode: withNode ? componentsOptionNode : undefined, + nameOption: nameOptionNode ? _getStartEnd(nameOptionNode) : undefined, + }; + } + } + }); + return { + exportDefault, + bindings, + }; + function _getStartEnd(node) { + return (0, scriptSetupRanges_1.getStartEnd)(node, ast); + } +} +scriptRanges.parseScriptRanges = parseScriptRanges; + +(function (exports) { + Object.defineProperty(exports, "__esModule", { value: true }); + exports.tsCodegen = void 0; + const computeds_1 = out$7; + const script_1 = script; + const template_1 = template; + const scriptRanges_1 = scriptRanges; + const scriptSetupRanges_1 = scriptSetupRanges; + const language_core_1 = languageCore; + const muggle = out$9; + const templateFormatReg = /^\.template_format\.ts$/; + const templateStyleCssReg = /^\.template_style\.css$/; + exports.tsCodegen = new WeakMap(); + const plugin = (ctx) => { + return { + version: 1, + requiredCompilerOptions: [ + 'noPropertyAccessFromIndexSignature', + 'exactOptionalPropertyTypes', + ], + getEmbeddedFileNames(fileName, sfc) { + const tsx = useTsx(fileName, sfc); + const fileNames = []; + if (['js', 'ts', 'jsx', 'tsx'].includes(tsx.lang())) { + fileNames.push(fileName + '.' + tsx.lang()); + } + if (sfc.template) { + fileNames.push(fileName + '.template_format.ts'); + fileNames.push(fileName + '.template_style.css'); + } + return fileNames; + }, + resolveEmbeddedFile(fileName, sfc, embeddedFile) { + const _tsx = useTsx(fileName, sfc); + const suffix = embeddedFile.fileName.replace(fileName, ''); + if (suffix === '.' + _tsx.lang()) { + embeddedFile.kind = language_core_1.FileKind.TypeScriptHostFile; + embeddedFile.capabilities = { + ...language_core_1.FileCapabilities.full, + foldingRange: false, + documentFormatting: false, + documentSymbol: false, + }; + const tsx = _tsx.generatedScript(); + if (tsx) { + const [content, contentStacks] = ctx.codegenStack ? muggle.track([...tsx.codes], [...tsx.codeStacks]) : [[...tsx.codes], [...tsx.codeStacks]]; + embeddedFile.content = content; + embeddedFile.contentStacks = contentStacks; + embeddedFile.mirrorBehaviorMappings = [...tsx.mirrorBehaviorMappings]; + } + } + else if (suffix.match(templateFormatReg)) { + embeddedFile.parentFileName = fileName + '.template.' + sfc.template?.lang; + embeddedFile.kind = language_core_1.FileKind.TextFile; + embeddedFile.capabilities = { + ...language_core_1.FileCapabilities.full, + diagnostic: false, + foldingRange: false, + codeAction: false, + inlayHint: false, + }; + const template = _tsx.generatedTemplate(); + if (template) { + const [content, contentStacks] = ctx.codegenStack + ? muggle.track([...template.formatCodes], [...template.formatCodeStacks]) + : [[...template.formatCodes], [...template.formatCodeStacks]]; + embeddedFile.content = content; + embeddedFile.contentStacks = contentStacks; + } + for (const style of sfc.styles) { + embeddedFile.content.push('\n\n'); + for (const cssVar of style.cssVars) { + embeddedFile.content.push('('); + embeddedFile.content.push([ + cssVar.text, + style.name, + cssVar.offset, + {}, + ]); + embeddedFile.content.push(');\n'); + } + } + } + else if (suffix.match(templateStyleCssReg)) { + embeddedFile.parentFileName = fileName + '.template.' + sfc.template?.lang; + const template = _tsx.generatedTemplate(); + if (template) { + const [content, contentStacks] = ctx.codegenStack + ? muggle.track([...template.cssCodes], [...template.cssCodeStacks]) + : [[...template.cssCodes], [...template.cssCodeStacks]]; + embeddedFile.content = content; + embeddedFile.contentStacks = contentStacks; + } + // for color pickers support + embeddedFile.capabilities.documentSymbol = true; + } + }, + }; + function useTsx(fileName, sfc) { + if (!exports.tsCodegen.has(sfc)) { + exports.tsCodegen.set(sfc, createTsx(fileName, sfc, ctx)); + } + return exports.tsCodegen.get(sfc); + } + }; + exports.default = plugin; + function createTsx(fileName, _sfc, { vueCompilerOptions, compilerOptions, codegenStack, modules }) { + const ts = modules.typescript; + const lang = (0, computeds_1.computed)(() => { + return !_sfc.script && !_sfc.scriptSetup ? 'ts' + : _sfc.scriptSetup && _sfc.scriptSetup.lang !== 'js' ? _sfc.scriptSetup.lang + : _sfc.script && _sfc.script.lang !== 'js' ? _sfc.script.lang + : 'js'; + }); + const scriptRanges = (0, computeds_1.computed)(() => _sfc.script + ? (0, scriptRanges_1.parseScriptRanges)(ts, _sfc.script.ast, !!_sfc.scriptSetup, false) + : undefined); + const scriptSetupRanges = (0, computeds_1.computed)(() => _sfc.scriptSetup + ? (0, scriptSetupRanges_1.parseScriptSetupRanges)(ts, _sfc.scriptSetup.ast, vueCompilerOptions) + : undefined); + const shouldGenerateScopedClasses = (0, computeds_1.computed)(() => { + const option = vueCompilerOptions.experimentalResolveStyleCssClasses; + return _sfc.styles.some(s => { + return option === 'always' || (option === 'scoped' && s.scoped); + }); + }); + const stylesScopedClasses = (0, computeds_1.computedSet)(() => { + const classes = new Set(); + if (!shouldGenerateScopedClasses()) { + return classes; + } + for (const style of _sfc.styles) { + const option = vueCompilerOptions.experimentalResolveStyleCssClasses; + if (option === 'always' || (option === 'scoped' && style.scoped)) { + for (const className of style.classNames) { + classes.add(className.text.substring(1)); + } + } + } + return classes; + }); + const generatedTemplate = (0, computeds_1.computed)(() => { + if (!_sfc.template) + return; + return (0, template_1.generate)(ts, compilerOptions, vueCompilerOptions, _sfc.template, shouldGenerateScopedClasses(), stylesScopedClasses(), hasScriptSetupSlots(), slotsAssignName(), propsAssignName(), codegenStack); + }); + const hasScriptSetupSlots = (0, computeds_1.computed)(() => !!scriptSetupRanges()?.slots.define); + const slotsAssignName = (0, computeds_1.computed)(() => scriptSetupRanges()?.slots.name); + const propsAssignName = (0, computeds_1.computed)(() => scriptSetupRanges()?.props.name); + const generatedScript = (0, computeds_1.computed)(() => (0, script_1.generate)(ts, fileName, _sfc.script, _sfc.scriptSetup, _sfc.styles, lang(), scriptRanges(), scriptSetupRanges(), generatedTemplate(), compilerOptions, vueCompilerOptions, codegenStack)); + return { + scriptRanges, + scriptSetupRanges, + lang, + generatedScript, + generatedTemplate, + }; + } + +} (vueTsx)); + +var vue2TemplateCompiler = {}; + +var build = {}; + +var splitRE$1 = /\r?\n/g; +var emptyRE = /^\s*$/; +var needFixRE = /^(\r?\n)*[\t\s]/; + +var deIndent = function deindent (str) { + if (!needFixRE.test(str)) { + return str + } + var lines = str.split(splitRE$1); + var min = Infinity; + var type, cur, c; + for (var i = 0; i < lines.length; i++) { + var line = lines[i]; + if (!emptyRE.test(line)) { + if (!type) { + c = line.charAt(0); + if (c === ' ' || c === '\t') { + type = c; + cur = count(line, type); + if (cur < min) { + min = cur; + } + } else { + return str + } + } else { + cur = count(line, type); + if (cur < min) { + min = cur; + } + } + } + } + return lines.map(function (line) { + return line.slice(min) + }).join('\n') +}; + +function count (line, type) { + var i = 0; + while (line.charAt(i) === type) { + i++; + } + return i +} + +var he$1 = {exports: {}}; + +/*! https://mths.be/he v1.2.0 by @mathias | MIT license */ +he$1.exports; + +(function (module, exports) { +(function(root) { + + // Detect free variables `exports`. + var freeExports = exports; + + // Detect free variable `module`. + var freeModule = module && + module.exports == freeExports && module; + + // Detect free variable `global`, from Node.js or Browserified code, + // and use it as `root`. + var freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal; + if (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) { + root = freeGlobal; + } + + /*--------------------------------------------------------------------------*/ + + // All astral symbols. + var regexAstralSymbols = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g; + // All ASCII symbols (not just printable ASCII) except those listed in the + // first column of the overrides table. + // https://html.spec.whatwg.org/multipage/syntax.html#table-charref-overrides + var regexAsciiWhitelist = /[\x01-\x7F]/g; + // All BMP symbols that are not ASCII newlines, printable ASCII symbols, or + // code points listed in the first column of the overrides table on + // https://html.spec.whatwg.org/multipage/syntax.html#table-charref-overrides. + var regexBmpWhitelist = /[\x01-\t\x0B\f\x0E-\x1F\x7F\x81\x8D\x8F\x90\x9D\xA0-\uFFFF]/g; + + var regexEncodeNonAscii = /<\u20D2|=\u20E5|>\u20D2|\u205F\u200A|\u219D\u0338|\u2202\u0338|\u2220\u20D2|\u2229\uFE00|\u222A\uFE00|\u223C\u20D2|\u223D\u0331|\u223E\u0333|\u2242\u0338|\u224B\u0338|\u224D\u20D2|\u224E\u0338|\u224F\u0338|\u2250\u0338|\u2261\u20E5|\u2264\u20D2|\u2265\u20D2|\u2266\u0338|\u2267\u0338|\u2268\uFE00|\u2269\uFE00|\u226A\u0338|\u226A\u20D2|\u226B\u0338|\u226B\u20D2|\u227F\u0338|\u2282\u20D2|\u2283\u20D2|\u228A\uFE00|\u228B\uFE00|\u228F\u0338|\u2290\u0338|\u2293\uFE00|\u2294\uFE00|\u22B4\u20D2|\u22B5\u20D2|\u22D8\u0338|\u22D9\u0338|\u22DA\uFE00|\u22DB\uFE00|\u22F5\u0338|\u22F9\u0338|\u2933\u0338|\u29CF\u0338|\u29D0\u0338|\u2A6D\u0338|\u2A70\u0338|\u2A7D\u0338|\u2A7E\u0338|\u2AA1\u0338|\u2AA2\u0338|\u2AAC\uFE00|\u2AAD\uFE00|\u2AAF\u0338|\u2AB0\u0338|\u2AC5\u0338|\u2AC6\u0338|\u2ACB\uFE00|\u2ACC\uFE00|\u2AFD\u20E5|[\xA0-\u0113\u0116-\u0122\u0124-\u012B\u012E-\u014D\u0150-\u017E\u0192\u01B5\u01F5\u0237\u02C6\u02C7\u02D8-\u02DD\u0311\u0391-\u03A1\u03A3-\u03A9\u03B1-\u03C9\u03D1\u03D2\u03D5\u03D6\u03DC\u03DD\u03F0\u03F1\u03F5\u03F6\u0401-\u040C\u040E-\u044F\u0451-\u045C\u045E\u045F\u2002-\u2005\u2007-\u2010\u2013-\u2016\u2018-\u201A\u201C-\u201E\u2020-\u2022\u2025\u2026\u2030-\u2035\u2039\u203A\u203E\u2041\u2043\u2044\u204F\u2057\u205F-\u2063\u20AC\u20DB\u20DC\u2102\u2105\u210A-\u2113\u2115-\u211E\u2122\u2124\u2127-\u2129\u212C\u212D\u212F-\u2131\u2133-\u2138\u2145-\u2148\u2153-\u215E\u2190-\u219B\u219D-\u21A7\u21A9-\u21AE\u21B0-\u21B3\u21B5-\u21B7\u21BA-\u21DB\u21DD\u21E4\u21E5\u21F5\u21FD-\u2205\u2207-\u2209\u220B\u220C\u220F-\u2214\u2216-\u2218\u221A\u221D-\u2238\u223A-\u2257\u2259\u225A\u225C\u225F-\u2262\u2264-\u228B\u228D-\u229B\u229D-\u22A5\u22A7-\u22B0\u22B2-\u22BB\u22BD-\u22DB\u22DE-\u22E3\u22E6-\u22F7\u22F9-\u22FE\u2305\u2306\u2308-\u2310\u2312\u2313\u2315\u2316\u231C-\u231F\u2322\u2323\u232D\u232E\u2336\u233D\u233F\u237C\u23B0\u23B1\u23B4-\u23B6\u23DC-\u23DF\u23E2\u23E7\u2423\u24C8\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2550-\u256C\u2580\u2584\u2588\u2591-\u2593\u25A1\u25AA\u25AB\u25AD\u25AE\u25B1\u25B3-\u25B5\u25B8\u25B9\u25BD-\u25BF\u25C2\u25C3\u25CA\u25CB\u25EC\u25EF\u25F8-\u25FC\u2605\u2606\u260E\u2640\u2642\u2660\u2663\u2665\u2666\u266A\u266D-\u266F\u2713\u2717\u2720\u2736\u2758\u2772\u2773\u27C8\u27C9\u27E6-\u27ED\u27F5-\u27FA\u27FC\u27FF\u2902-\u2905\u290C-\u2913\u2916\u2919-\u2920\u2923-\u292A\u2933\u2935-\u2939\u293C\u293D\u2945\u2948-\u294B\u294E-\u2976\u2978\u2979\u297B-\u297F\u2985\u2986\u298B-\u2996\u299A\u299C\u299D\u29A4-\u29B7\u29B9\u29BB\u29BC\u29BE-\u29C5\u29C9\u29CD-\u29D0\u29DC-\u29DE\u29E3-\u29E5\u29EB\u29F4\u29F6\u2A00-\u2A02\u2A04\u2A06\u2A0C\u2A0D\u2A10-\u2A17\u2A22-\u2A27\u2A29\u2A2A\u2A2D-\u2A31\u2A33-\u2A3C\u2A3F\u2A40\u2A42-\u2A4D\u2A50\u2A53-\u2A58\u2A5A-\u2A5D\u2A5F\u2A66\u2A6A\u2A6D-\u2A75\u2A77-\u2A9A\u2A9D-\u2AA2\u2AA4-\u2AB0\u2AB3-\u2AC8\u2ACB\u2ACC\u2ACF-\u2ADB\u2AE4\u2AE6-\u2AE9\u2AEB-\u2AF3\u2AFD\uFB00-\uFB04]|\uD835[\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDCCF\uDD04\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDD6B]/g; + var encodeMap = {'\xAD':'shy','\u200C':'zwnj','\u200D':'zwj','\u200E':'lrm','\u2063':'ic','\u2062':'it','\u2061':'af','\u200F':'rlm','\u200B':'ZeroWidthSpace','\u2060':'NoBreak','\u0311':'DownBreve','\u20DB':'tdot','\u20DC':'DotDot','\t':'Tab','\n':'NewLine','\u2008':'puncsp','\u205F':'MediumSpace','\u2009':'thinsp','\u200A':'hairsp','\u2004':'emsp13','\u2002':'ensp','\u2005':'emsp14','\u2003':'emsp','\u2007':'numsp','\xA0':'nbsp','\u205F\u200A':'ThickSpace','\u203E':'oline','_':'lowbar','\u2010':'dash','\u2013':'ndash','\u2014':'mdash','\u2015':'horbar',',':'comma',';':'semi','\u204F':'bsemi',':':'colon','\u2A74':'Colone','!':'excl','\xA1':'iexcl','?':'quest','\xBF':'iquest','.':'period','\u2025':'nldr','\u2026':'mldr','\xB7':'middot','\'':'apos','\u2018':'lsquo','\u2019':'rsquo','\u201A':'sbquo','\u2039':'lsaquo','\u203A':'rsaquo','"':'quot','\u201C':'ldquo','\u201D':'rdquo','\u201E':'bdquo','\xAB':'laquo','\xBB':'raquo','(':'lpar',')':'rpar','[':'lsqb',']':'rsqb','{':'lcub','}':'rcub','\u2308':'lceil','\u2309':'rceil','\u230A':'lfloor','\u230B':'rfloor','\u2985':'lopar','\u2986':'ropar','\u298B':'lbrke','\u298C':'rbrke','\u298D':'lbrkslu','\u298E':'rbrksld','\u298F':'lbrksld','\u2990':'rbrkslu','\u2991':'langd','\u2992':'rangd','\u2993':'lparlt','\u2994':'rpargt','\u2995':'gtlPar','\u2996':'ltrPar','\u27E6':'lobrk','\u27E7':'robrk','\u27E8':'lang','\u27E9':'rang','\u27EA':'Lang','\u27EB':'Rang','\u27EC':'loang','\u27ED':'roang','\u2772':'lbbrk','\u2773':'rbbrk','\u2016':'Vert','\xA7':'sect','\xB6':'para','@':'commat','*':'ast','/':'sol','undefined':null,'&':'amp','#':'num','%':'percnt','\u2030':'permil','\u2031':'pertenk','\u2020':'dagger','\u2021':'Dagger','\u2022':'bull','\u2043':'hybull','\u2032':'prime','\u2033':'Prime','\u2034':'tprime','\u2057':'qprime','\u2035':'bprime','\u2041':'caret','`':'grave','\xB4':'acute','\u02DC':'tilde','^':'Hat','\xAF':'macr','\u02D8':'breve','\u02D9':'dot','\xA8':'die','\u02DA':'ring','\u02DD':'dblac','\xB8':'cedil','\u02DB':'ogon','\u02C6':'circ','\u02C7':'caron','\xB0':'deg','\xA9':'copy','\xAE':'reg','\u2117':'copysr','\u2118':'wp','\u211E':'rx','\u2127':'mho','\u2129':'iiota','\u2190':'larr','\u219A':'nlarr','\u2192':'rarr','\u219B':'nrarr','\u2191':'uarr','\u2193':'darr','\u2194':'harr','\u21AE':'nharr','\u2195':'varr','\u2196':'nwarr','\u2197':'nearr','\u2198':'searr','\u2199':'swarr','\u219D':'rarrw','\u219D\u0338':'nrarrw','\u219E':'Larr','\u219F':'Uarr','\u21A0':'Rarr','\u21A1':'Darr','\u21A2':'larrtl','\u21A3':'rarrtl','\u21A4':'mapstoleft','\u21A5':'mapstoup','\u21A6':'map','\u21A7':'mapstodown','\u21A9':'larrhk','\u21AA':'rarrhk','\u21AB':'larrlp','\u21AC':'rarrlp','\u21AD':'harrw','\u21B0':'lsh','\u21B1':'rsh','\u21B2':'ldsh','\u21B3':'rdsh','\u21B5':'crarr','\u21B6':'cularr','\u21B7':'curarr','\u21BA':'olarr','\u21BB':'orarr','\u21BC':'lharu','\u21BD':'lhard','\u21BE':'uharr','\u21BF':'uharl','\u21C0':'rharu','\u21C1':'rhard','\u21C2':'dharr','\u21C3':'dharl','\u21C4':'rlarr','\u21C5':'udarr','\u21C6':'lrarr','\u21C7':'llarr','\u21C8':'uuarr','\u21C9':'rrarr','\u21CA':'ddarr','\u21CB':'lrhar','\u21CC':'rlhar','\u21D0':'lArr','\u21CD':'nlArr','\u21D1':'uArr','\u21D2':'rArr','\u21CF':'nrArr','\u21D3':'dArr','\u21D4':'iff','\u21CE':'nhArr','\u21D5':'vArr','\u21D6':'nwArr','\u21D7':'neArr','\u21D8':'seArr','\u21D9':'swArr','\u21DA':'lAarr','\u21DB':'rAarr','\u21DD':'zigrarr','\u21E4':'larrb','\u21E5':'rarrb','\u21F5':'duarr','\u21FD':'loarr','\u21FE':'roarr','\u21FF':'hoarr','\u2200':'forall','\u2201':'comp','\u2202':'part','\u2202\u0338':'npart','\u2203':'exist','\u2204':'nexist','\u2205':'empty','\u2207':'Del','\u2208':'in','\u2209':'notin','\u220B':'ni','\u220C':'notni','\u03F6':'bepsi','\u220F':'prod','\u2210':'coprod','\u2211':'sum','+':'plus','\xB1':'pm','\xF7':'div','\xD7':'times','<':'lt','\u226E':'nlt','<\u20D2':'nvlt','=':'equals','\u2260':'ne','=\u20E5':'bne','\u2A75':'Equal','>':'gt','\u226F':'ngt','>\u20D2':'nvgt','\xAC':'not','|':'vert','\xA6':'brvbar','\u2212':'minus','\u2213':'mp','\u2214':'plusdo','\u2044':'frasl','\u2216':'setmn','\u2217':'lowast','\u2218':'compfn','\u221A':'Sqrt','\u221D':'prop','\u221E':'infin','\u221F':'angrt','\u2220':'ang','\u2220\u20D2':'nang','\u2221':'angmsd','\u2222':'angsph','\u2223':'mid','\u2224':'nmid','\u2225':'par','\u2226':'npar','\u2227':'and','\u2228':'or','\u2229':'cap','\u2229\uFE00':'caps','\u222A':'cup','\u222A\uFE00':'cups','\u222B':'int','\u222C':'Int','\u222D':'tint','\u2A0C':'qint','\u222E':'oint','\u222F':'Conint','\u2230':'Cconint','\u2231':'cwint','\u2232':'cwconint','\u2233':'awconint','\u2234':'there4','\u2235':'becaus','\u2236':'ratio','\u2237':'Colon','\u2238':'minusd','\u223A':'mDDot','\u223B':'homtht','\u223C':'sim','\u2241':'nsim','\u223C\u20D2':'nvsim','\u223D':'bsim','\u223D\u0331':'race','\u223E':'ac','\u223E\u0333':'acE','\u223F':'acd','\u2240':'wr','\u2242':'esim','\u2242\u0338':'nesim','\u2243':'sime','\u2244':'nsime','\u2245':'cong','\u2247':'ncong','\u2246':'simne','\u2248':'ap','\u2249':'nap','\u224A':'ape','\u224B':'apid','\u224B\u0338':'napid','\u224C':'bcong','\u224D':'CupCap','\u226D':'NotCupCap','\u224D\u20D2':'nvap','\u224E':'bump','\u224E\u0338':'nbump','\u224F':'bumpe','\u224F\u0338':'nbumpe','\u2250':'doteq','\u2250\u0338':'nedot','\u2251':'eDot','\u2252':'efDot','\u2253':'erDot','\u2254':'colone','\u2255':'ecolon','\u2256':'ecir','\u2257':'cire','\u2259':'wedgeq','\u225A':'veeeq','\u225C':'trie','\u225F':'equest','\u2261':'equiv','\u2262':'nequiv','\u2261\u20E5':'bnequiv','\u2264':'le','\u2270':'nle','\u2264\u20D2':'nvle','\u2265':'ge','\u2271':'nge','\u2265\u20D2':'nvge','\u2266':'lE','\u2266\u0338':'nlE','\u2267':'gE','\u2267\u0338':'ngE','\u2268\uFE00':'lvnE','\u2268':'lnE','\u2269':'gnE','\u2269\uFE00':'gvnE','\u226A':'ll','\u226A\u0338':'nLtv','\u226A\u20D2':'nLt','\u226B':'gg','\u226B\u0338':'nGtv','\u226B\u20D2':'nGt','\u226C':'twixt','\u2272':'lsim','\u2274':'nlsim','\u2273':'gsim','\u2275':'ngsim','\u2276':'lg','\u2278':'ntlg','\u2277':'gl','\u2279':'ntgl','\u227A':'pr','\u2280':'npr','\u227B':'sc','\u2281':'nsc','\u227C':'prcue','\u22E0':'nprcue','\u227D':'sccue','\u22E1':'nsccue','\u227E':'prsim','\u227F':'scsim','\u227F\u0338':'NotSucceedsTilde','\u2282':'sub','\u2284':'nsub','\u2282\u20D2':'vnsub','\u2283':'sup','\u2285':'nsup','\u2283\u20D2':'vnsup','\u2286':'sube','\u2288':'nsube','\u2287':'supe','\u2289':'nsupe','\u228A\uFE00':'vsubne','\u228A':'subne','\u228B\uFE00':'vsupne','\u228B':'supne','\u228D':'cupdot','\u228E':'uplus','\u228F':'sqsub','\u228F\u0338':'NotSquareSubset','\u2290':'sqsup','\u2290\u0338':'NotSquareSuperset','\u2291':'sqsube','\u22E2':'nsqsube','\u2292':'sqsupe','\u22E3':'nsqsupe','\u2293':'sqcap','\u2293\uFE00':'sqcaps','\u2294':'sqcup','\u2294\uFE00':'sqcups','\u2295':'oplus','\u2296':'ominus','\u2297':'otimes','\u2298':'osol','\u2299':'odot','\u229A':'ocir','\u229B':'oast','\u229D':'odash','\u229E':'plusb','\u229F':'minusb','\u22A0':'timesb','\u22A1':'sdotb','\u22A2':'vdash','\u22AC':'nvdash','\u22A3':'dashv','\u22A4':'top','\u22A5':'bot','\u22A7':'models','\u22A8':'vDash','\u22AD':'nvDash','\u22A9':'Vdash','\u22AE':'nVdash','\u22AA':'Vvdash','\u22AB':'VDash','\u22AF':'nVDash','\u22B0':'prurel','\u22B2':'vltri','\u22EA':'nltri','\u22B3':'vrtri','\u22EB':'nrtri','\u22B4':'ltrie','\u22EC':'nltrie','\u22B4\u20D2':'nvltrie','\u22B5':'rtrie','\u22ED':'nrtrie','\u22B5\u20D2':'nvrtrie','\u22B6':'origof','\u22B7':'imof','\u22B8':'mumap','\u22B9':'hercon','\u22BA':'intcal','\u22BB':'veebar','\u22BD':'barvee','\u22BE':'angrtvb','\u22BF':'lrtri','\u22C0':'Wedge','\u22C1':'Vee','\u22C2':'xcap','\u22C3':'xcup','\u22C4':'diam','\u22C5':'sdot','\u22C6':'Star','\u22C7':'divonx','\u22C8':'bowtie','\u22C9':'ltimes','\u22CA':'rtimes','\u22CB':'lthree','\u22CC':'rthree','\u22CD':'bsime','\u22CE':'cuvee','\u22CF':'cuwed','\u22D0':'Sub','\u22D1':'Sup','\u22D2':'Cap','\u22D3':'Cup','\u22D4':'fork','\u22D5':'epar','\u22D6':'ltdot','\u22D7':'gtdot','\u22D8':'Ll','\u22D8\u0338':'nLl','\u22D9':'Gg','\u22D9\u0338':'nGg','\u22DA\uFE00':'lesg','\u22DA':'leg','\u22DB':'gel','\u22DB\uFE00':'gesl','\u22DE':'cuepr','\u22DF':'cuesc','\u22E6':'lnsim','\u22E7':'gnsim','\u22E8':'prnsim','\u22E9':'scnsim','\u22EE':'vellip','\u22EF':'ctdot','\u22F0':'utdot','\u22F1':'dtdot','\u22F2':'disin','\u22F3':'isinsv','\u22F4':'isins','\u22F5':'isindot','\u22F5\u0338':'notindot','\u22F6':'notinvc','\u22F7':'notinvb','\u22F9':'isinE','\u22F9\u0338':'notinE','\u22FA':'nisd','\u22FB':'xnis','\u22FC':'nis','\u22FD':'notnivc','\u22FE':'notnivb','\u2305':'barwed','\u2306':'Barwed','\u230C':'drcrop','\u230D':'dlcrop','\u230E':'urcrop','\u230F':'ulcrop','\u2310':'bnot','\u2312':'profline','\u2313':'profsurf','\u2315':'telrec','\u2316':'target','\u231C':'ulcorn','\u231D':'urcorn','\u231E':'dlcorn','\u231F':'drcorn','\u2322':'frown','\u2323':'smile','\u232D':'cylcty','\u232E':'profalar','\u2336':'topbot','\u233D':'ovbar','\u233F':'solbar','\u237C':'angzarr','\u23B0':'lmoust','\u23B1':'rmoust','\u23B4':'tbrk','\u23B5':'bbrk','\u23B6':'bbrktbrk','\u23DC':'OverParenthesis','\u23DD':'UnderParenthesis','\u23DE':'OverBrace','\u23DF':'UnderBrace','\u23E2':'trpezium','\u23E7':'elinters','\u2423':'blank','\u2500':'boxh','\u2502':'boxv','\u250C':'boxdr','\u2510':'boxdl','\u2514':'boxur','\u2518':'boxul','\u251C':'boxvr','\u2524':'boxvl','\u252C':'boxhd','\u2534':'boxhu','\u253C':'boxvh','\u2550':'boxH','\u2551':'boxV','\u2552':'boxdR','\u2553':'boxDr','\u2554':'boxDR','\u2555':'boxdL','\u2556':'boxDl','\u2557':'boxDL','\u2558':'boxuR','\u2559':'boxUr','\u255A':'boxUR','\u255B':'boxuL','\u255C':'boxUl','\u255D':'boxUL','\u255E':'boxvR','\u255F':'boxVr','\u2560':'boxVR','\u2561':'boxvL','\u2562':'boxVl','\u2563':'boxVL','\u2564':'boxHd','\u2565':'boxhD','\u2566':'boxHD','\u2567':'boxHu','\u2568':'boxhU','\u2569':'boxHU','\u256A':'boxvH','\u256B':'boxVh','\u256C':'boxVH','\u2580':'uhblk','\u2584':'lhblk','\u2588':'block','\u2591':'blk14','\u2592':'blk12','\u2593':'blk34','\u25A1':'squ','\u25AA':'squf','\u25AB':'EmptyVerySmallSquare','\u25AD':'rect','\u25AE':'marker','\u25B1':'fltns','\u25B3':'xutri','\u25B4':'utrif','\u25B5':'utri','\u25B8':'rtrif','\u25B9':'rtri','\u25BD':'xdtri','\u25BE':'dtrif','\u25BF':'dtri','\u25C2':'ltrif','\u25C3':'ltri','\u25CA':'loz','\u25CB':'cir','\u25EC':'tridot','\u25EF':'xcirc','\u25F8':'ultri','\u25F9':'urtri','\u25FA':'lltri','\u25FB':'EmptySmallSquare','\u25FC':'FilledSmallSquare','\u2605':'starf','\u2606':'star','\u260E':'phone','\u2640':'female','\u2642':'male','\u2660':'spades','\u2663':'clubs','\u2665':'hearts','\u2666':'diams','\u266A':'sung','\u2713':'check','\u2717':'cross','\u2720':'malt','\u2736':'sext','\u2758':'VerticalSeparator','\u27C8':'bsolhsub','\u27C9':'suphsol','\u27F5':'xlarr','\u27F6':'xrarr','\u27F7':'xharr','\u27F8':'xlArr','\u27F9':'xrArr','\u27FA':'xhArr','\u27FC':'xmap','\u27FF':'dzigrarr','\u2902':'nvlArr','\u2903':'nvrArr','\u2904':'nvHarr','\u2905':'Map','\u290C':'lbarr','\u290D':'rbarr','\u290E':'lBarr','\u290F':'rBarr','\u2910':'RBarr','\u2911':'DDotrahd','\u2912':'UpArrowBar','\u2913':'DownArrowBar','\u2916':'Rarrtl','\u2919':'latail','\u291A':'ratail','\u291B':'lAtail','\u291C':'rAtail','\u291D':'larrfs','\u291E':'rarrfs','\u291F':'larrbfs','\u2920':'rarrbfs','\u2923':'nwarhk','\u2924':'nearhk','\u2925':'searhk','\u2926':'swarhk','\u2927':'nwnear','\u2928':'toea','\u2929':'tosa','\u292A':'swnwar','\u2933':'rarrc','\u2933\u0338':'nrarrc','\u2935':'cudarrr','\u2936':'ldca','\u2937':'rdca','\u2938':'cudarrl','\u2939':'larrpl','\u293C':'curarrm','\u293D':'cularrp','\u2945':'rarrpl','\u2948':'harrcir','\u2949':'Uarrocir','\u294A':'lurdshar','\u294B':'ldrushar','\u294E':'LeftRightVector','\u294F':'RightUpDownVector','\u2950':'DownLeftRightVector','\u2951':'LeftUpDownVector','\u2952':'LeftVectorBar','\u2953':'RightVectorBar','\u2954':'RightUpVectorBar','\u2955':'RightDownVectorBar','\u2956':'DownLeftVectorBar','\u2957':'DownRightVectorBar','\u2958':'LeftUpVectorBar','\u2959':'LeftDownVectorBar','\u295A':'LeftTeeVector','\u295B':'RightTeeVector','\u295C':'RightUpTeeVector','\u295D':'RightDownTeeVector','\u295E':'DownLeftTeeVector','\u295F':'DownRightTeeVector','\u2960':'LeftUpTeeVector','\u2961':'LeftDownTeeVector','\u2962':'lHar','\u2963':'uHar','\u2964':'rHar','\u2965':'dHar','\u2966':'luruhar','\u2967':'ldrdhar','\u2968':'ruluhar','\u2969':'rdldhar','\u296A':'lharul','\u296B':'llhard','\u296C':'rharul','\u296D':'lrhard','\u296E':'udhar','\u296F':'duhar','\u2970':'RoundImplies','\u2971':'erarr','\u2972':'simrarr','\u2973':'larrsim','\u2974':'rarrsim','\u2975':'rarrap','\u2976':'ltlarr','\u2978':'gtrarr','\u2979':'subrarr','\u297B':'suplarr','\u297C':'lfisht','\u297D':'rfisht','\u297E':'ufisht','\u297F':'dfisht','\u299A':'vzigzag','\u299C':'vangrt','\u299D':'angrtvbd','\u29A4':'ange','\u29A5':'range','\u29A6':'dwangle','\u29A7':'uwangle','\u29A8':'angmsdaa','\u29A9':'angmsdab','\u29AA':'angmsdac','\u29AB':'angmsdad','\u29AC':'angmsdae','\u29AD':'angmsdaf','\u29AE':'angmsdag','\u29AF':'angmsdah','\u29B0':'bemptyv','\u29B1':'demptyv','\u29B2':'cemptyv','\u29B3':'raemptyv','\u29B4':'laemptyv','\u29B5':'ohbar','\u29B6':'omid','\u29B7':'opar','\u29B9':'operp','\u29BB':'olcross','\u29BC':'odsold','\u29BE':'olcir','\u29BF':'ofcir','\u29C0':'olt','\u29C1':'ogt','\u29C2':'cirscir','\u29C3':'cirE','\u29C4':'solb','\u29C5':'bsolb','\u29C9':'boxbox','\u29CD':'trisb','\u29CE':'rtriltri','\u29CF':'LeftTriangleBar','\u29CF\u0338':'NotLeftTriangleBar','\u29D0':'RightTriangleBar','\u29D0\u0338':'NotRightTriangleBar','\u29DC':'iinfin','\u29DD':'infintie','\u29DE':'nvinfin','\u29E3':'eparsl','\u29E4':'smeparsl','\u29E5':'eqvparsl','\u29EB':'lozf','\u29F4':'RuleDelayed','\u29F6':'dsol','\u2A00':'xodot','\u2A01':'xoplus','\u2A02':'xotime','\u2A04':'xuplus','\u2A06':'xsqcup','\u2A0D':'fpartint','\u2A10':'cirfnint','\u2A11':'awint','\u2A12':'rppolint','\u2A13':'scpolint','\u2A14':'npolint','\u2A15':'pointint','\u2A16':'quatint','\u2A17':'intlarhk','\u2A22':'pluscir','\u2A23':'plusacir','\u2A24':'simplus','\u2A25':'plusdu','\u2A26':'plussim','\u2A27':'plustwo','\u2A29':'mcomma','\u2A2A':'minusdu','\u2A2D':'loplus','\u2A2E':'roplus','\u2A2F':'Cross','\u2A30':'timesd','\u2A31':'timesbar','\u2A33':'smashp','\u2A34':'lotimes','\u2A35':'rotimes','\u2A36':'otimesas','\u2A37':'Otimes','\u2A38':'odiv','\u2A39':'triplus','\u2A3A':'triminus','\u2A3B':'tritime','\u2A3C':'iprod','\u2A3F':'amalg','\u2A40':'capdot','\u2A42':'ncup','\u2A43':'ncap','\u2A44':'capand','\u2A45':'cupor','\u2A46':'cupcap','\u2A47':'capcup','\u2A48':'cupbrcap','\u2A49':'capbrcup','\u2A4A':'cupcup','\u2A4B':'capcap','\u2A4C':'ccups','\u2A4D':'ccaps','\u2A50':'ccupssm','\u2A53':'And','\u2A54':'Or','\u2A55':'andand','\u2A56':'oror','\u2A57':'orslope','\u2A58':'andslope','\u2A5A':'andv','\u2A5B':'orv','\u2A5C':'andd','\u2A5D':'ord','\u2A5F':'wedbar','\u2A66':'sdote','\u2A6A':'simdot','\u2A6D':'congdot','\u2A6D\u0338':'ncongdot','\u2A6E':'easter','\u2A6F':'apacir','\u2A70':'apE','\u2A70\u0338':'napE','\u2A71':'eplus','\u2A72':'pluse','\u2A73':'Esim','\u2A77':'eDDot','\u2A78':'equivDD','\u2A79':'ltcir','\u2A7A':'gtcir','\u2A7B':'ltquest','\u2A7C':'gtquest','\u2A7D':'les','\u2A7D\u0338':'nles','\u2A7E':'ges','\u2A7E\u0338':'nges','\u2A7F':'lesdot','\u2A80':'gesdot','\u2A81':'lesdoto','\u2A82':'gesdoto','\u2A83':'lesdotor','\u2A84':'gesdotol','\u2A85':'lap','\u2A86':'gap','\u2A87':'lne','\u2A88':'gne','\u2A89':'lnap','\u2A8A':'gnap','\u2A8B':'lEg','\u2A8C':'gEl','\u2A8D':'lsime','\u2A8E':'gsime','\u2A8F':'lsimg','\u2A90':'gsiml','\u2A91':'lgE','\u2A92':'glE','\u2A93':'lesges','\u2A94':'gesles','\u2A95':'els','\u2A96':'egs','\u2A97':'elsdot','\u2A98':'egsdot','\u2A99':'el','\u2A9A':'eg','\u2A9D':'siml','\u2A9E':'simg','\u2A9F':'simlE','\u2AA0':'simgE','\u2AA1':'LessLess','\u2AA1\u0338':'NotNestedLessLess','\u2AA2':'GreaterGreater','\u2AA2\u0338':'NotNestedGreaterGreater','\u2AA4':'glj','\u2AA5':'gla','\u2AA6':'ltcc','\u2AA7':'gtcc','\u2AA8':'lescc','\u2AA9':'gescc','\u2AAA':'smt','\u2AAB':'lat','\u2AAC':'smte','\u2AAC\uFE00':'smtes','\u2AAD':'late','\u2AAD\uFE00':'lates','\u2AAE':'bumpE','\u2AAF':'pre','\u2AAF\u0338':'npre','\u2AB0':'sce','\u2AB0\u0338':'nsce','\u2AB3':'prE','\u2AB4':'scE','\u2AB5':'prnE','\u2AB6':'scnE','\u2AB7':'prap','\u2AB8':'scap','\u2AB9':'prnap','\u2ABA':'scnap','\u2ABB':'Pr','\u2ABC':'Sc','\u2ABD':'subdot','\u2ABE':'supdot','\u2ABF':'subplus','\u2AC0':'supplus','\u2AC1':'submult','\u2AC2':'supmult','\u2AC3':'subedot','\u2AC4':'supedot','\u2AC5':'subE','\u2AC5\u0338':'nsubE','\u2AC6':'supE','\u2AC6\u0338':'nsupE','\u2AC7':'subsim','\u2AC8':'supsim','\u2ACB\uFE00':'vsubnE','\u2ACB':'subnE','\u2ACC\uFE00':'vsupnE','\u2ACC':'supnE','\u2ACF':'csub','\u2AD0':'csup','\u2AD1':'csube','\u2AD2':'csupe','\u2AD3':'subsup','\u2AD4':'supsub','\u2AD5':'subsub','\u2AD6':'supsup','\u2AD7':'suphsub','\u2AD8':'supdsub','\u2AD9':'forkv','\u2ADA':'topfork','\u2ADB':'mlcp','\u2AE4':'Dashv','\u2AE6':'Vdashl','\u2AE7':'Barv','\u2AE8':'vBar','\u2AE9':'vBarv','\u2AEB':'Vbar','\u2AEC':'Not','\u2AED':'bNot','\u2AEE':'rnmid','\u2AEF':'cirmid','\u2AF0':'midcir','\u2AF1':'topcir','\u2AF2':'nhpar','\u2AF3':'parsim','\u2AFD':'parsl','\u2AFD\u20E5':'nparsl','\u266D':'flat','\u266E':'natur','\u266F':'sharp','\xA4':'curren','\xA2':'cent','$':'dollar','\xA3':'pound','\xA5':'yen','\u20AC':'euro','\xB9':'sup1','\xBD':'half','\u2153':'frac13','\xBC':'frac14','\u2155':'frac15','\u2159':'frac16','\u215B':'frac18','\xB2':'sup2','\u2154':'frac23','\u2156':'frac25','\xB3':'sup3','\xBE':'frac34','\u2157':'frac35','\u215C':'frac38','\u2158':'frac45','\u215A':'frac56','\u215D':'frac58','\u215E':'frac78','\uD835\uDCB6':'ascr','\uD835\uDD52':'aopf','\uD835\uDD1E':'afr','\uD835\uDD38':'Aopf','\uD835\uDD04':'Afr','\uD835\uDC9C':'Ascr','\xAA':'ordf','\xE1':'aacute','\xC1':'Aacute','\xE0':'agrave','\xC0':'Agrave','\u0103':'abreve','\u0102':'Abreve','\xE2':'acirc','\xC2':'Acirc','\xE5':'aring','\xC5':'angst','\xE4':'auml','\xC4':'Auml','\xE3':'atilde','\xC3':'Atilde','\u0105':'aogon','\u0104':'Aogon','\u0101':'amacr','\u0100':'Amacr','\xE6':'aelig','\xC6':'AElig','\uD835\uDCB7':'bscr','\uD835\uDD53':'bopf','\uD835\uDD1F':'bfr','\uD835\uDD39':'Bopf','\u212C':'Bscr','\uD835\uDD05':'Bfr','\uD835\uDD20':'cfr','\uD835\uDCB8':'cscr','\uD835\uDD54':'copf','\u212D':'Cfr','\uD835\uDC9E':'Cscr','\u2102':'Copf','\u0107':'cacute','\u0106':'Cacute','\u0109':'ccirc','\u0108':'Ccirc','\u010D':'ccaron','\u010C':'Ccaron','\u010B':'cdot','\u010A':'Cdot','\xE7':'ccedil','\xC7':'Ccedil','\u2105':'incare','\uD835\uDD21':'dfr','\u2146':'dd','\uD835\uDD55':'dopf','\uD835\uDCB9':'dscr','\uD835\uDC9F':'Dscr','\uD835\uDD07':'Dfr','\u2145':'DD','\uD835\uDD3B':'Dopf','\u010F':'dcaron','\u010E':'Dcaron','\u0111':'dstrok','\u0110':'Dstrok','\xF0':'eth','\xD0':'ETH','\u2147':'ee','\u212F':'escr','\uD835\uDD22':'efr','\uD835\uDD56':'eopf','\u2130':'Escr','\uD835\uDD08':'Efr','\uD835\uDD3C':'Eopf','\xE9':'eacute','\xC9':'Eacute','\xE8':'egrave','\xC8':'Egrave','\xEA':'ecirc','\xCA':'Ecirc','\u011B':'ecaron','\u011A':'Ecaron','\xEB':'euml','\xCB':'Euml','\u0117':'edot','\u0116':'Edot','\u0119':'eogon','\u0118':'Eogon','\u0113':'emacr','\u0112':'Emacr','\uD835\uDD23':'ffr','\uD835\uDD57':'fopf','\uD835\uDCBB':'fscr','\uD835\uDD09':'Ffr','\uD835\uDD3D':'Fopf','\u2131':'Fscr','\uFB00':'fflig','\uFB03':'ffilig','\uFB04':'ffllig','\uFB01':'filig','fj':'fjlig','\uFB02':'fllig','\u0192':'fnof','\u210A':'gscr','\uD835\uDD58':'gopf','\uD835\uDD24':'gfr','\uD835\uDCA2':'Gscr','\uD835\uDD3E':'Gopf','\uD835\uDD0A':'Gfr','\u01F5':'gacute','\u011F':'gbreve','\u011E':'Gbreve','\u011D':'gcirc','\u011C':'Gcirc','\u0121':'gdot','\u0120':'Gdot','\u0122':'Gcedil','\uD835\uDD25':'hfr','\u210E':'planckh','\uD835\uDCBD':'hscr','\uD835\uDD59':'hopf','\u210B':'Hscr','\u210C':'Hfr','\u210D':'Hopf','\u0125':'hcirc','\u0124':'Hcirc','\u210F':'hbar','\u0127':'hstrok','\u0126':'Hstrok','\uD835\uDD5A':'iopf','\uD835\uDD26':'ifr','\uD835\uDCBE':'iscr','\u2148':'ii','\uD835\uDD40':'Iopf','\u2110':'Iscr','\u2111':'Im','\xED':'iacute','\xCD':'Iacute','\xEC':'igrave','\xCC':'Igrave','\xEE':'icirc','\xCE':'Icirc','\xEF':'iuml','\xCF':'Iuml','\u0129':'itilde','\u0128':'Itilde','\u0130':'Idot','\u012F':'iogon','\u012E':'Iogon','\u012B':'imacr','\u012A':'Imacr','\u0133':'ijlig','\u0132':'IJlig','\u0131':'imath','\uD835\uDCBF':'jscr','\uD835\uDD5B':'jopf','\uD835\uDD27':'jfr','\uD835\uDCA5':'Jscr','\uD835\uDD0D':'Jfr','\uD835\uDD41':'Jopf','\u0135':'jcirc','\u0134':'Jcirc','\u0237':'jmath','\uD835\uDD5C':'kopf','\uD835\uDCC0':'kscr','\uD835\uDD28':'kfr','\uD835\uDCA6':'Kscr','\uD835\uDD42':'Kopf','\uD835\uDD0E':'Kfr','\u0137':'kcedil','\u0136':'Kcedil','\uD835\uDD29':'lfr','\uD835\uDCC1':'lscr','\u2113':'ell','\uD835\uDD5D':'lopf','\u2112':'Lscr','\uD835\uDD0F':'Lfr','\uD835\uDD43':'Lopf','\u013A':'lacute','\u0139':'Lacute','\u013E':'lcaron','\u013D':'Lcaron','\u013C':'lcedil','\u013B':'Lcedil','\u0142':'lstrok','\u0141':'Lstrok','\u0140':'lmidot','\u013F':'Lmidot','\uD835\uDD2A':'mfr','\uD835\uDD5E':'mopf','\uD835\uDCC2':'mscr','\uD835\uDD10':'Mfr','\uD835\uDD44':'Mopf','\u2133':'Mscr','\uD835\uDD2B':'nfr','\uD835\uDD5F':'nopf','\uD835\uDCC3':'nscr','\u2115':'Nopf','\uD835\uDCA9':'Nscr','\uD835\uDD11':'Nfr','\u0144':'nacute','\u0143':'Nacute','\u0148':'ncaron','\u0147':'Ncaron','\xF1':'ntilde','\xD1':'Ntilde','\u0146':'ncedil','\u0145':'Ncedil','\u2116':'numero','\u014B':'eng','\u014A':'ENG','\uD835\uDD60':'oopf','\uD835\uDD2C':'ofr','\u2134':'oscr','\uD835\uDCAA':'Oscr','\uD835\uDD12':'Ofr','\uD835\uDD46':'Oopf','\xBA':'ordm','\xF3':'oacute','\xD3':'Oacute','\xF2':'ograve','\xD2':'Ograve','\xF4':'ocirc','\xD4':'Ocirc','\xF6':'ouml','\xD6':'Ouml','\u0151':'odblac','\u0150':'Odblac','\xF5':'otilde','\xD5':'Otilde','\xF8':'oslash','\xD8':'Oslash','\u014D':'omacr','\u014C':'Omacr','\u0153':'oelig','\u0152':'OElig','\uD835\uDD2D':'pfr','\uD835\uDCC5':'pscr','\uD835\uDD61':'popf','\u2119':'Popf','\uD835\uDD13':'Pfr','\uD835\uDCAB':'Pscr','\uD835\uDD62':'qopf','\uD835\uDD2E':'qfr','\uD835\uDCC6':'qscr','\uD835\uDCAC':'Qscr','\uD835\uDD14':'Qfr','\u211A':'Qopf','\u0138':'kgreen','\uD835\uDD2F':'rfr','\uD835\uDD63':'ropf','\uD835\uDCC7':'rscr','\u211B':'Rscr','\u211C':'Re','\u211D':'Ropf','\u0155':'racute','\u0154':'Racute','\u0159':'rcaron','\u0158':'Rcaron','\u0157':'rcedil','\u0156':'Rcedil','\uD835\uDD64':'sopf','\uD835\uDCC8':'sscr','\uD835\uDD30':'sfr','\uD835\uDD4A':'Sopf','\uD835\uDD16':'Sfr','\uD835\uDCAE':'Sscr','\u24C8':'oS','\u015B':'sacute','\u015A':'Sacute','\u015D':'scirc','\u015C':'Scirc','\u0161':'scaron','\u0160':'Scaron','\u015F':'scedil','\u015E':'Scedil','\xDF':'szlig','\uD835\uDD31':'tfr','\uD835\uDCC9':'tscr','\uD835\uDD65':'topf','\uD835\uDCAF':'Tscr','\uD835\uDD17':'Tfr','\uD835\uDD4B':'Topf','\u0165':'tcaron','\u0164':'Tcaron','\u0163':'tcedil','\u0162':'Tcedil','\u2122':'trade','\u0167':'tstrok','\u0166':'Tstrok','\uD835\uDCCA':'uscr','\uD835\uDD66':'uopf','\uD835\uDD32':'ufr','\uD835\uDD4C':'Uopf','\uD835\uDD18':'Ufr','\uD835\uDCB0':'Uscr','\xFA':'uacute','\xDA':'Uacute','\xF9':'ugrave','\xD9':'Ugrave','\u016D':'ubreve','\u016C':'Ubreve','\xFB':'ucirc','\xDB':'Ucirc','\u016F':'uring','\u016E':'Uring','\xFC':'uuml','\xDC':'Uuml','\u0171':'udblac','\u0170':'Udblac','\u0169':'utilde','\u0168':'Utilde','\u0173':'uogon','\u0172':'Uogon','\u016B':'umacr','\u016A':'Umacr','\uD835\uDD33':'vfr','\uD835\uDD67':'vopf','\uD835\uDCCB':'vscr','\uD835\uDD19':'Vfr','\uD835\uDD4D':'Vopf','\uD835\uDCB1':'Vscr','\uD835\uDD68':'wopf','\uD835\uDCCC':'wscr','\uD835\uDD34':'wfr','\uD835\uDCB2':'Wscr','\uD835\uDD4E':'Wopf','\uD835\uDD1A':'Wfr','\u0175':'wcirc','\u0174':'Wcirc','\uD835\uDD35':'xfr','\uD835\uDCCD':'xscr','\uD835\uDD69':'xopf','\uD835\uDD4F':'Xopf','\uD835\uDD1B':'Xfr','\uD835\uDCB3':'Xscr','\uD835\uDD36':'yfr','\uD835\uDCCE':'yscr','\uD835\uDD6A':'yopf','\uD835\uDCB4':'Yscr','\uD835\uDD1C':'Yfr','\uD835\uDD50':'Yopf','\xFD':'yacute','\xDD':'Yacute','\u0177':'ycirc','\u0176':'Ycirc','\xFF':'yuml','\u0178':'Yuml','\uD835\uDCCF':'zscr','\uD835\uDD37':'zfr','\uD835\uDD6B':'zopf','\u2128':'Zfr','\u2124':'Zopf','\uD835\uDCB5':'Zscr','\u017A':'zacute','\u0179':'Zacute','\u017E':'zcaron','\u017D':'Zcaron','\u017C':'zdot','\u017B':'Zdot','\u01B5':'imped','\xFE':'thorn','\xDE':'THORN','\u0149':'napos','\u03B1':'alpha','\u0391':'Alpha','\u03B2':'beta','\u0392':'Beta','\u03B3':'gamma','\u0393':'Gamma','\u03B4':'delta','\u0394':'Delta','\u03B5':'epsi','\u03F5':'epsiv','\u0395':'Epsilon','\u03DD':'gammad','\u03DC':'Gammad','\u03B6':'zeta','\u0396':'Zeta','\u03B7':'eta','\u0397':'Eta','\u03B8':'theta','\u03D1':'thetav','\u0398':'Theta','\u03B9':'iota','\u0399':'Iota','\u03BA':'kappa','\u03F0':'kappav','\u039A':'Kappa','\u03BB':'lambda','\u039B':'Lambda','\u03BC':'mu','\xB5':'micro','\u039C':'Mu','\u03BD':'nu','\u039D':'Nu','\u03BE':'xi','\u039E':'Xi','\u03BF':'omicron','\u039F':'Omicron','\u03C0':'pi','\u03D6':'piv','\u03A0':'Pi','\u03C1':'rho','\u03F1':'rhov','\u03A1':'Rho','\u03C3':'sigma','\u03A3':'Sigma','\u03C2':'sigmaf','\u03C4':'tau','\u03A4':'Tau','\u03C5':'upsi','\u03A5':'Upsilon','\u03D2':'Upsi','\u03C6':'phi','\u03D5':'phiv','\u03A6':'Phi','\u03C7':'chi','\u03A7':'Chi','\u03C8':'psi','\u03A8':'Psi','\u03C9':'omega','\u03A9':'ohm','\u0430':'acy','\u0410':'Acy','\u0431':'bcy','\u0411':'Bcy','\u0432':'vcy','\u0412':'Vcy','\u0433':'gcy','\u0413':'Gcy','\u0453':'gjcy','\u0403':'GJcy','\u0434':'dcy','\u0414':'Dcy','\u0452':'djcy','\u0402':'DJcy','\u0435':'iecy','\u0415':'IEcy','\u0451':'iocy','\u0401':'IOcy','\u0454':'jukcy','\u0404':'Jukcy','\u0436':'zhcy','\u0416':'ZHcy','\u0437':'zcy','\u0417':'Zcy','\u0455':'dscy','\u0405':'DScy','\u0438':'icy','\u0418':'Icy','\u0456':'iukcy','\u0406':'Iukcy','\u0457':'yicy','\u0407':'YIcy','\u0439':'jcy','\u0419':'Jcy','\u0458':'jsercy','\u0408':'Jsercy','\u043A':'kcy','\u041A':'Kcy','\u045C':'kjcy','\u040C':'KJcy','\u043B':'lcy','\u041B':'Lcy','\u0459':'ljcy','\u0409':'LJcy','\u043C':'mcy','\u041C':'Mcy','\u043D':'ncy','\u041D':'Ncy','\u045A':'njcy','\u040A':'NJcy','\u043E':'ocy','\u041E':'Ocy','\u043F':'pcy','\u041F':'Pcy','\u0440':'rcy','\u0420':'Rcy','\u0441':'scy','\u0421':'Scy','\u0442':'tcy','\u0422':'Tcy','\u045B':'tshcy','\u040B':'TSHcy','\u0443':'ucy','\u0423':'Ucy','\u045E':'ubrcy','\u040E':'Ubrcy','\u0444':'fcy','\u0424':'Fcy','\u0445':'khcy','\u0425':'KHcy','\u0446':'tscy','\u0426':'TScy','\u0447':'chcy','\u0427':'CHcy','\u045F':'dzcy','\u040F':'DZcy','\u0448':'shcy','\u0428':'SHcy','\u0449':'shchcy','\u0429':'SHCHcy','\u044A':'hardcy','\u042A':'HARDcy','\u044B':'ycy','\u042B':'Ycy','\u044C':'softcy','\u042C':'SOFTcy','\u044D':'ecy','\u042D':'Ecy','\u044E':'yucy','\u042E':'YUcy','\u044F':'yacy','\u042F':'YAcy','\u2135':'aleph','\u2136':'beth','\u2137':'gimel','\u2138':'daleth'}; + + var regexEscape = /["&'<>`]/g; + var escapeMap = { + '"': '"', + '&': '&', + '\'': ''', + '<': '<', + // See https://mathiasbynens.be/notes/ambiguous-ampersands: in HTML, the + // following is not strictly necessary unless it’s part of a tag or an + // unquoted attribute value. We’re only escaping it to support those + // situations, and for XML support. + '>': '>', + // In Internet Explorer ≤ 8, the backtick character can be used + // to break out of (un)quoted attribute values or HTML comments. + // See http://html5sec.org/#102, http://html5sec.org/#108, and + // http://html5sec.org/#133. + '`': '`' + }; + + var regexInvalidEntity = /&#(?:[xX][^a-fA-F0-9]|[^0-9xX])/; + var regexInvalidRawCodePoint = /[\0-\x08\x0B\x0E-\x1F\x7F-\x9F\uFDD0-\uFDEF\uFFFE\uFFFF]|[\uD83F\uD87F\uD8BF\uD8FF\uD93F\uD97F\uD9BF\uD9FF\uDA3F\uDA7F\uDABF\uDAFF\uDB3F\uDB7F\uDBBF\uDBFF][\uDFFE\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/; + var regexDecode = /&(CounterClockwiseContourIntegral|DoubleLongLeftRightArrow|ClockwiseContourIntegral|NotNestedGreaterGreater|NotSquareSupersetEqual|DiacriticalDoubleAcute|NotRightTriangleEqual|NotSucceedsSlantEqual|NotPrecedesSlantEqual|CloseCurlyDoubleQuote|NegativeVeryThinSpace|DoubleContourIntegral|FilledVerySmallSquare|CapitalDifferentialD|OpenCurlyDoubleQuote|EmptyVerySmallSquare|NestedGreaterGreater|DoubleLongRightArrow|NotLeftTriangleEqual|NotGreaterSlantEqual|ReverseUpEquilibrium|DoubleLeftRightArrow|NotSquareSubsetEqual|NotDoubleVerticalBar|RightArrowLeftArrow|NotGreaterFullEqual|NotRightTriangleBar|SquareSupersetEqual|DownLeftRightVector|DoubleLongLeftArrow|leftrightsquigarrow|LeftArrowRightArrow|NegativeMediumSpace|blacktriangleright|RightDownVectorBar|PrecedesSlantEqual|RightDoubleBracket|SucceedsSlantEqual|NotLeftTriangleBar|RightTriangleEqual|SquareIntersection|RightDownTeeVector|ReverseEquilibrium|NegativeThickSpace|longleftrightarrow|Longleftrightarrow|LongLeftRightArrow|DownRightTeeVector|DownRightVectorBar|GreaterSlantEqual|SquareSubsetEqual|LeftDownVectorBar|LeftDoubleBracket|VerticalSeparator|rightleftharpoons|NotGreaterGreater|NotSquareSuperset|blacktriangleleft|blacktriangledown|NegativeThinSpace|LeftDownTeeVector|NotLessSlantEqual|leftrightharpoons|DoubleUpDownArrow|DoubleVerticalBar|LeftTriangleEqual|FilledSmallSquare|twoheadrightarrow|NotNestedLessLess|DownLeftTeeVector|DownLeftVectorBar|RightAngleBracket|NotTildeFullEqual|NotReverseElement|RightUpDownVector|DiacriticalTilde|NotSucceedsTilde|circlearrowright|NotPrecedesEqual|rightharpoondown|DoubleRightArrow|NotSucceedsEqual|NonBreakingSpace|NotRightTriangle|LessEqualGreater|RightUpTeeVector|LeftAngleBracket|GreaterFullEqual|DownArrowUpArrow|RightUpVectorBar|twoheadleftarrow|GreaterEqualLess|downharpoonright|RightTriangleBar|ntrianglerighteq|NotSupersetEqual|LeftUpDownVector|DiacriticalAcute|rightrightarrows|vartriangleright|UpArrowDownArrow|DiacriticalGrave|UnderParenthesis|EmptySmallSquare|LeftUpVectorBar|leftrightarrows|DownRightVector|downharpoonleft|trianglerighteq|ShortRightArrow|OverParenthesis|DoubleLeftArrow|DoubleDownArrow|NotSquareSubset|bigtriangledown|ntrianglelefteq|UpperRightArrow|curvearrowright|vartriangleleft|NotLeftTriangle|nleftrightarrow|LowerRightArrow|NotHumpDownHump|NotGreaterTilde|rightthreetimes|LeftUpTeeVector|NotGreaterEqual|straightepsilon|LeftTriangleBar|rightsquigarrow|ContourIntegral|rightleftarrows|CloseCurlyQuote|RightDownVector|LeftRightVector|nLeftrightarrow|leftharpoondown|circlearrowleft|SquareSuperset|OpenCurlyQuote|hookrightarrow|HorizontalLine|DiacriticalDot|NotLessGreater|ntriangleright|DoubleRightTee|InvisibleComma|InvisibleTimes|LowerLeftArrow|DownLeftVector|NotSubsetEqual|curvearrowleft|trianglelefteq|NotVerticalBar|TildeFullEqual|downdownarrows|NotGreaterLess|RightTeeVector|ZeroWidthSpace|looparrowright|LongRightArrow|doublebarwedge|ShortLeftArrow|ShortDownArrow|RightVectorBar|GreaterGreater|ReverseElement|rightharpoonup|LessSlantEqual|leftthreetimes|upharpoonright|rightarrowtail|LeftDownVector|Longrightarrow|NestedLessLess|UpperLeftArrow|nshortparallel|leftleftarrows|leftrightarrow|Leftrightarrow|LeftRightArrow|longrightarrow|upharpoonleft|RightArrowBar|ApplyFunction|LeftTeeVector|leftarrowtail|NotEqualTilde|varsubsetneqq|varsupsetneqq|RightTeeArrow|SucceedsEqual|SucceedsTilde|LeftVectorBar|SupersetEqual|hookleftarrow|DifferentialD|VerticalTilde|VeryThinSpace|blacktriangle|bigtriangleup|LessFullEqual|divideontimes|leftharpoonup|UpEquilibrium|ntriangleleft|RightTriangle|measuredangle|shortparallel|longleftarrow|Longleftarrow|LongLeftArrow|DoubleLeftTee|Poincareplane|PrecedesEqual|triangleright|DoubleUpArrow|RightUpVector|fallingdotseq|looparrowleft|PrecedesTilde|NotTildeEqual|NotTildeTilde|smallsetminus|Proportional|triangleleft|triangledown|UnderBracket|NotHumpEqual|exponentiale|ExponentialE|NotLessTilde|HilbertSpace|RightCeiling|blacklozenge|varsupsetneq|HumpDownHump|GreaterEqual|VerticalLine|LeftTeeArrow|NotLessEqual|DownTeeArrow|LeftTriangle|varsubsetneq|Intersection|NotCongruent|DownArrowBar|LeftUpVector|LeftArrowBar|risingdotseq|GreaterTilde|RoundImplies|SquareSubset|ShortUpArrow|NotSuperset|quaternions|precnapprox|backepsilon|preccurlyeq|OverBracket|blacksquare|MediumSpace|VerticalBar|circledcirc|circleddash|CircleMinus|CircleTimes|LessGreater|curlyeqprec|curlyeqsucc|diamondsuit|UpDownArrow|Updownarrow|RuleDelayed|Rrightarrow|updownarrow|RightVector|nRightarrow|nrightarrow|eqslantless|LeftCeiling|Equilibrium|SmallCircle|expectation|NotSucceeds|thickapprox|GreaterLess|SquareUnion|NotPrecedes|NotLessLess|straightphi|succnapprox|succcurlyeq|SubsetEqual|sqsupseteq|Proportion|Laplacetrf|ImaginaryI|supsetneqq|NotGreater|gtreqqless|NotElement|ThickSpace|TildeEqual|TildeTilde|Fouriertrf|rmoustache|EqualTilde|eqslantgtr|UnderBrace|LeftVector|UpArrowBar|nLeftarrow|nsubseteqq|subsetneqq|nsupseteqq|nleftarrow|succapprox|lessapprox|UpTeeArrow|upuparrows|curlywedge|lesseqqgtr|varepsilon|varnothing|RightFloor|complement|CirclePlus|sqsubseteq|Lleftarrow|circledast|RightArrow|Rightarrow|rightarrow|lmoustache|Bernoullis|precapprox|mapstoleft|mapstodown|longmapsto|dotsquare|downarrow|DoubleDot|nsubseteq|supsetneq|leftarrow|nsupseteq|subsetneq|ThinSpace|ngeqslant|subseteqq|HumpEqual|NotSubset|triangleq|NotCupCap|lesseqgtr|heartsuit|TripleDot|Leftarrow|Coproduct|Congruent|varpropto|complexes|gvertneqq|LeftArrow|LessTilde|supseteqq|MinusPlus|CircleDot|nleqslant|NotExists|gtreqless|nparallel|UnionPlus|LeftFloor|checkmark|CenterDot|centerdot|Mellintrf|gtrapprox|bigotimes|OverBrace|spadesuit|therefore|pitchfork|rationals|PlusMinus|Backslash|Therefore|DownBreve|backsimeq|backprime|DownArrow|nshortmid|Downarrow|lvertneqq|eqvparsl|imagline|imagpart|infintie|integers|Integral|intercal|LessLess|Uarrocir|intlarhk|sqsupset|angmsdaf|sqsubset|llcorner|vartheta|cupbrcap|lnapprox|Superset|SuchThat|succnsim|succneqq|angmsdag|biguplus|curlyvee|trpezium|Succeeds|NotTilde|bigwedge|angmsdah|angrtvbd|triminus|cwconint|fpartint|lrcorner|smeparsl|subseteq|urcorner|lurdshar|laemptyv|DDotrahd|approxeq|ldrushar|awconint|mapstoup|backcong|shortmid|triangle|geqslant|gesdotol|timesbar|circledR|circledS|setminus|multimap|naturals|scpolint|ncongdot|RightTee|boxminus|gnapprox|boxtimes|andslope|thicksim|angmsdaa|varsigma|cirfnint|rtriltri|angmsdab|rppolint|angmsdac|barwedge|drbkarow|clubsuit|thetasym|bsolhsub|capbrcup|dzigrarr|doteqdot|DotEqual|dotminus|UnderBar|NotEqual|realpart|otimesas|ulcorner|hksearow|hkswarow|parallel|PartialD|elinters|emptyset|plusacir|bbrktbrk|angmsdad|pointint|bigoplus|angmsdae|Precedes|bigsqcup|varkappa|notindot|supseteq|precneqq|precnsim|profalar|profline|profsurf|leqslant|lesdotor|raemptyv|subplus|notnivb|notnivc|subrarr|zigrarr|vzigzag|submult|subedot|Element|between|cirscir|larrbfs|larrsim|lotimes|lbrksld|lbrkslu|lozenge|ldrdhar|dbkarow|bigcirc|epsilon|simrarr|simplus|ltquest|Epsilon|luruhar|gtquest|maltese|npolint|eqcolon|npreceq|bigodot|ddagger|gtrless|bnequiv|harrcir|ddotseq|equivDD|backsim|demptyv|nsqsube|nsqsupe|Upsilon|nsubset|upsilon|minusdu|nsucceq|swarrow|nsupset|coloneq|searrow|boxplus|napprox|natural|asympeq|alefsym|congdot|nearrow|bigstar|diamond|supplus|tritime|LeftTee|nvinfin|triplus|NewLine|nvltrie|nvrtrie|nwarrow|nexists|Diamond|ruluhar|Implies|supmult|angzarr|suplarr|suphsub|questeq|because|digamma|Because|olcross|bemptyv|omicron|Omicron|rotimes|NoBreak|intprod|angrtvb|orderof|uwangle|suphsol|lesdoto|orslope|DownTee|realine|cudarrl|rdldhar|OverBar|supedot|lessdot|supdsub|topfork|succsim|rbrkslu|rbrksld|pertenk|cudarrr|isindot|planckh|lessgtr|pluscir|gesdoto|plussim|plustwo|lesssim|cularrp|rarrsim|Cayleys|notinva|notinvb|notinvc|UpArrow|Uparrow|uparrow|NotLess|dwangle|precsim|Product|curarrm|Cconint|dotplus|rarrbfs|ccupssm|Cedilla|cemptyv|notniva|quatint|frac35|frac38|frac45|frac56|frac58|frac78|tridot|xoplus|gacute|gammad|Gammad|lfisht|lfloor|bigcup|sqsupe|gbreve|Gbreve|lharul|sqsube|sqcups|Gcedil|apacir|llhard|lmidot|Lmidot|lmoust|andand|sqcaps|approx|Abreve|spades|circeq|tprime|divide|topcir|Assign|topbot|gesdot|divonx|xuplus|timesd|gesles|atilde|solbar|SOFTcy|loplus|timesb|lowast|lowbar|dlcorn|dlcrop|softcy|dollar|lparlt|thksim|lrhard|Atilde|lsaquo|smashp|bigvee|thinsp|wreath|bkarow|lsquor|lstrok|Lstrok|lthree|ltimes|ltlarr|DotDot|simdot|ltrPar|weierp|xsqcup|angmsd|sigmav|sigmaf|zeetrf|Zcaron|zcaron|mapsto|vsupne|thetav|cirmid|marker|mcomma|Zacute|vsubnE|there4|gtlPar|vsubne|bottom|gtrarr|SHCHcy|shchcy|midast|midcir|middot|minusb|minusd|gtrdot|bowtie|sfrown|mnplus|models|colone|seswar|Colone|mstpos|searhk|gtrsim|nacute|Nacute|boxbox|telrec|hairsp|Tcedil|nbumpe|scnsim|ncaron|Ncaron|ncedil|Ncedil|hamilt|Scedil|nearhk|hardcy|HARDcy|tcedil|Tcaron|commat|nequiv|nesear|tcaron|target|hearts|nexist|varrho|scedil|Scaron|scaron|hellip|Sacute|sacute|hercon|swnwar|compfn|rtimes|rthree|rsquor|rsaquo|zacute|wedgeq|homtht|barvee|barwed|Barwed|rpargt|horbar|conint|swarhk|roplus|nltrie|hslash|hstrok|Hstrok|rmoust|Conint|bprime|hybull|hyphen|iacute|Iacute|supsup|supsub|supsim|varphi|coprod|brvbar|agrave|Supset|supset|igrave|Igrave|notinE|Agrave|iiiint|iinfin|copysr|wedbar|Verbar|vangrt|becaus|incare|verbar|inodot|bullet|drcorn|intcal|drcrop|cularr|vellip|Utilde|bumpeq|cupcap|dstrok|Dstrok|CupCap|cupcup|cupdot|eacute|Eacute|supdot|iquest|easter|ecaron|Ecaron|ecolon|isinsv|utilde|itilde|Itilde|curarr|succeq|Bumpeq|cacute|ulcrop|nparsl|Cacute|nprcue|egrave|Egrave|nrarrc|nrarrw|subsup|subsub|nrtrie|jsercy|nsccue|Jsercy|kappav|kcedil|Kcedil|subsim|ulcorn|nsimeq|egsdot|veebar|kgreen|capand|elsdot|Subset|subset|curren|aacute|lacute|Lacute|emptyv|ntilde|Ntilde|lagran|lambda|Lambda|capcap|Ugrave|langle|subdot|emsp13|numero|emsp14|nvdash|nvDash|nVdash|nVDash|ugrave|ufisht|nvHarr|larrfs|nvlArr|larrhk|larrlp|larrpl|nvrArr|Udblac|nwarhk|larrtl|nwnear|oacute|Oacute|latail|lAtail|sstarf|lbrace|odblac|Odblac|lbrack|udblac|odsold|eparsl|lcaron|Lcaron|ograve|Ograve|lcedil|Lcedil|Aacute|ssmile|ssetmn|squarf|ldquor|capcup|ominus|cylcty|rharul|eqcirc|dagger|rfloor|rfisht|Dagger|daleth|equals|origof|capdot|equest|dcaron|Dcaron|rdquor|oslash|Oslash|otilde|Otilde|otimes|Otimes|urcrop|Ubreve|ubreve|Yacute|Uacute|uacute|Rcedil|rcedil|urcorn|parsim|Rcaron|Vdashl|rcaron|Tstrok|percnt|period|permil|Exists|yacute|rbrack|rbrace|phmmat|ccaron|Ccaron|planck|ccedil|plankv|tstrok|female|plusdo|plusdu|ffilig|plusmn|ffllig|Ccedil|rAtail|dfisht|bernou|ratail|Rarrtl|rarrtl|angsph|rarrpl|rarrlp|rarrhk|xwedge|xotime|forall|ForAll|Vvdash|vsupnE|preceq|bigcap|frac12|frac13|frac14|primes|rarrfs|prnsim|frac15|Square|frac16|square|lesdot|frac18|frac23|propto|prurel|rarrap|rangle|puncsp|frac25|Racute|qprime|racute|lesges|frac34|abreve|AElig|eqsim|utdot|setmn|urtri|Equal|Uring|seArr|uring|searr|dashv|Dashv|mumap|nabla|iogon|Iogon|sdote|sdotb|scsim|napid|napos|equiv|natur|Acirc|dblac|erarr|nbump|iprod|erDot|ucirc|awint|esdot|angrt|ncong|isinE|scnap|Scirc|scirc|ndash|isins|Ubrcy|nearr|neArr|isinv|nedot|ubrcy|acute|Ycirc|iukcy|Iukcy|xutri|nesim|caret|jcirc|Jcirc|caron|twixt|ddarr|sccue|exist|jmath|sbquo|ngeqq|angst|ccaps|lceil|ngsim|UpTee|delta|Delta|rtrif|nharr|nhArr|nhpar|rtrie|jukcy|Jukcy|kappa|rsquo|Kappa|nlarr|nlArr|TSHcy|rrarr|aogon|Aogon|fflig|xrarr|tshcy|ccirc|nleqq|filig|upsih|nless|dharl|nlsim|fjlig|ropar|nltri|dharr|robrk|roarr|fllig|fltns|roang|rnmid|subnE|subne|lAarr|trisb|Ccirc|acirc|ccups|blank|VDash|forkv|Vdash|langd|cedil|blk12|blk14|laquo|strns|diams|notin|vDash|larrb|blk34|block|disin|uplus|vdash|vBarv|aelig|starf|Wedge|check|xrArr|lates|lbarr|lBarr|notni|lbbrk|bcong|frasl|lbrke|frown|vrtri|vprop|vnsup|gamma|Gamma|wedge|xodot|bdquo|srarr|doteq|ldquo|boxdl|boxdL|gcirc|Gcirc|boxDl|boxDL|boxdr|boxdR|boxDr|TRADE|trade|rlhar|boxDR|vnsub|npart|vltri|rlarr|boxhd|boxhD|nprec|gescc|nrarr|nrArr|boxHd|boxHD|boxhu|boxhU|nrtri|boxHu|clubs|boxHU|times|colon|Colon|gimel|xlArr|Tilde|nsime|tilde|nsmid|nspar|THORN|thorn|xlarr|nsube|nsubE|thkap|xhArr|comma|nsucc|boxul|boxuL|nsupe|nsupE|gneqq|gnsim|boxUl|boxUL|grave|boxur|boxuR|boxUr|boxUR|lescc|angle|bepsi|boxvh|varpi|boxvH|numsp|Theta|gsime|gsiml|theta|boxVh|boxVH|boxvl|gtcir|gtdot|boxvL|boxVl|boxVL|crarr|cross|Cross|nvsim|boxvr|nwarr|nwArr|sqsup|dtdot|Uogon|lhard|lharu|dtrif|ocirc|Ocirc|lhblk|duarr|odash|sqsub|Hacek|sqcup|llarr|duhar|oelig|OElig|ofcir|boxvR|uogon|lltri|boxVr|csube|uuarr|ohbar|csupe|ctdot|olarr|olcir|harrw|oline|sqcap|omacr|Omacr|omega|Omega|boxVR|aleph|lneqq|lnsim|loang|loarr|rharu|lobrk|hcirc|operp|oplus|rhard|Hcirc|orarr|Union|order|ecirc|Ecirc|cuepr|szlig|cuesc|breve|reals|eDDot|Breve|hoarr|lopar|utrif|rdquo|Umacr|umacr|efDot|swArr|ultri|alpha|rceil|ovbar|swarr|Wcirc|wcirc|smtes|smile|bsemi|lrarr|aring|parsl|lrhar|bsime|uhblk|lrtri|cupor|Aring|uharr|uharl|slarr|rbrke|bsolb|lsime|rbbrk|RBarr|lsimg|phone|rBarr|rbarr|icirc|lsquo|Icirc|emacr|Emacr|ratio|simne|plusb|simlE|simgE|simeq|pluse|ltcir|ltdot|empty|xharr|xdtri|iexcl|Alpha|ltrie|rarrw|pound|ltrif|xcirc|bumpe|prcue|bumpE|asymp|amacr|cuvee|Sigma|sigma|iiint|udhar|iiota|ijlig|IJlig|supnE|imacr|Imacr|prime|Prime|image|prnap|eogon|Eogon|rarrc|mdash|mDDot|cuwed|imath|supne|imped|Amacr|udarr|prsim|micro|rarrb|cwint|raquo|infin|eplus|range|rangd|Ucirc|radic|minus|amalg|veeeq|rAarr|epsiv|ycirc|quest|sharp|quot|zwnj|Qscr|race|qscr|Qopf|qopf|qint|rang|Rang|Zscr|zscr|Zopf|zopf|rarr|rArr|Rarr|Pscr|pscr|prop|prod|prnE|prec|ZHcy|zhcy|prap|Zeta|zeta|Popf|popf|Zdot|plus|zdot|Yuml|yuml|phiv|YUcy|yucy|Yscr|yscr|perp|Yopf|yopf|part|para|YIcy|Ouml|rcub|yicy|YAcy|rdca|ouml|osol|Oscr|rdsh|yacy|real|oscr|xvee|andd|rect|andv|Xscr|oror|ordm|ordf|xscr|ange|aopf|Aopf|rHar|Xopf|opar|Oopf|xopf|xnis|rhov|oopf|omid|xmap|oint|apid|apos|ogon|ascr|Ascr|odot|odiv|xcup|xcap|ocir|oast|nvlt|nvle|nvgt|nvge|nvap|Wscr|wscr|auml|ntlg|ntgl|nsup|nsub|nsim|Nscr|nscr|nsce|Wopf|ring|npre|wopf|npar|Auml|Barv|bbrk|Nopf|nopf|nmid|nLtv|beta|ropf|Ropf|Beta|beth|nles|rpar|nleq|bnot|bNot|nldr|NJcy|rscr|Rscr|Vscr|vscr|rsqb|njcy|bopf|nisd|Bopf|rtri|Vopf|nGtv|ngtr|vopf|boxh|boxH|boxv|nges|ngeq|boxV|bscr|scap|Bscr|bsim|Vert|vert|bsol|bull|bump|caps|cdot|ncup|scnE|ncap|nbsp|napE|Cdot|cent|sdot|Vbar|nang|vBar|chcy|Mscr|mscr|sect|semi|CHcy|Mopf|mopf|sext|circ|cire|mldr|mlcp|cirE|comp|shcy|SHcy|vArr|varr|cong|copf|Copf|copy|COPY|malt|male|macr|lvnE|cscr|ltri|sime|ltcc|simg|Cscr|siml|csub|Uuml|lsqb|lsim|uuml|csup|Lscr|lscr|utri|smid|lpar|cups|smte|lozf|darr|Lopf|Uscr|solb|lopf|sopf|Sopf|lneq|uscr|spar|dArr|lnap|Darr|dash|Sqrt|LJcy|ljcy|lHar|dHar|Upsi|upsi|diam|lesg|djcy|DJcy|leqq|dopf|Dopf|dscr|Dscr|dscy|ldsh|ldca|squf|DScy|sscr|Sscr|dsol|lcub|late|star|Star|Uopf|Larr|lArr|larr|uopf|dtri|dzcy|sube|subE|Lang|lang|Kscr|kscr|Kopf|kopf|KJcy|kjcy|KHcy|khcy|DZcy|ecir|edot|eDot|Jscr|jscr|succ|Jopf|jopf|Edot|uHar|emsp|ensp|Iuml|iuml|eopf|isin|Iscr|iscr|Eopf|epar|sung|epsi|escr|sup1|sup2|sup3|Iota|iota|supe|supE|Iopf|iopf|IOcy|iocy|Escr|esim|Esim|imof|Uarr|QUOT|uArr|uarr|euml|IEcy|iecy|Idot|Euml|euro|excl|Hscr|hscr|Hopf|hopf|TScy|tscy|Tscr|hbar|tscr|flat|tbrk|fnof|hArr|harr|half|fopf|Fopf|tdot|gvnE|fork|trie|gtcc|fscr|Fscr|gdot|gsim|Gscr|gscr|Gopf|gopf|gneq|Gdot|tosa|gnap|Topf|topf|geqq|toea|GJcy|gjcy|tint|gesl|mid|Sfr|ggg|top|ges|gla|glE|glj|geq|gne|gEl|gel|gnE|Gcy|gcy|gap|Tfr|tfr|Tcy|tcy|Hat|Tau|Ffr|tau|Tab|hfr|Hfr|ffr|Fcy|fcy|icy|Icy|iff|ETH|eth|ifr|Ifr|Eta|eta|int|Int|Sup|sup|ucy|Ucy|Sum|sum|jcy|ENG|ufr|Ufr|eng|Jcy|jfr|els|ell|egs|Efr|efr|Jfr|uml|kcy|Kcy|Ecy|ecy|kfr|Kfr|lap|Sub|sub|lat|lcy|Lcy|leg|Dot|dot|lEg|leq|les|squ|div|die|lfr|Lfr|lgE|Dfr|dfr|Del|deg|Dcy|dcy|lne|lnE|sol|loz|smt|Cup|lrm|cup|lsh|Lsh|sim|shy|map|Map|mcy|Mcy|mfr|Mfr|mho|gfr|Gfr|sfr|cir|Chi|chi|nap|Cfr|vcy|Vcy|cfr|Scy|scy|ncy|Ncy|vee|Vee|Cap|cap|nfr|scE|sce|Nfr|nge|ngE|nGg|vfr|Vfr|ngt|bot|nGt|nis|niv|Rsh|rsh|nle|nlE|bne|Bfr|bfr|nLl|nlt|nLt|Bcy|bcy|not|Not|rlm|wfr|Wfr|npr|nsc|num|ocy|ast|Ocy|ofr|xfr|Xfr|Ofr|ogt|ohm|apE|olt|Rho|ape|rho|Rfr|rfr|ord|REG|ang|reg|orv|And|and|AMP|Rcy|amp|Afr|ycy|Ycy|yen|yfr|Yfr|rcy|par|pcy|Pcy|pfr|Pfr|phi|Phi|afr|Acy|acy|zcy|Zcy|piv|acE|acd|zfr|Zfr|pre|prE|psi|Psi|qfr|Qfr|zwj|Or|ge|Gg|gt|gg|el|oS|lt|Lt|LT|Re|lg|gl|eg|ne|Im|it|le|DD|wp|wr|nu|Nu|dd|lE|Sc|sc|pi|Pi|ee|af|ll|Ll|rx|gE|xi|pm|Xi|ic|pr|Pr|in|ni|mp|mu|ac|Mu|or|ap|Gt|GT|ii);|&(Aacute|Agrave|Atilde|Ccedil|Eacute|Egrave|Iacute|Igrave|Ntilde|Oacute|Ograve|Oslash|Otilde|Uacute|Ugrave|Yacute|aacute|agrave|atilde|brvbar|ccedil|curren|divide|eacute|egrave|frac12|frac14|frac34|iacute|igrave|iquest|middot|ntilde|oacute|ograve|oslash|otilde|plusmn|uacute|ugrave|yacute|AElig|Acirc|Aring|Ecirc|Icirc|Ocirc|THORN|Ucirc|acirc|acute|aelig|aring|cedil|ecirc|icirc|iexcl|laquo|micro|ocirc|pound|raquo|szlig|thorn|times|ucirc|Auml|COPY|Euml|Iuml|Ouml|QUOT|Uuml|auml|cent|copy|euml|iuml|macr|nbsp|ordf|ordm|ouml|para|quot|sect|sup1|sup2|sup3|uuml|yuml|AMP|ETH|REG|amp|deg|eth|not|reg|shy|uml|yen|GT|LT|gt|lt)(?!;)([=a-zA-Z0-9]?)|&#([0-9]+)(;?)|&#[xX]([a-fA-F0-9]+)(;?)|&([0-9a-zA-Z]+)/g; + var decodeMap = {'aacute':'\xE1','Aacute':'\xC1','abreve':'\u0103','Abreve':'\u0102','ac':'\u223E','acd':'\u223F','acE':'\u223E\u0333','acirc':'\xE2','Acirc':'\xC2','acute':'\xB4','acy':'\u0430','Acy':'\u0410','aelig':'\xE6','AElig':'\xC6','af':'\u2061','afr':'\uD835\uDD1E','Afr':'\uD835\uDD04','agrave':'\xE0','Agrave':'\xC0','alefsym':'\u2135','aleph':'\u2135','alpha':'\u03B1','Alpha':'\u0391','amacr':'\u0101','Amacr':'\u0100','amalg':'\u2A3F','amp':'&','AMP':'&','and':'\u2227','And':'\u2A53','andand':'\u2A55','andd':'\u2A5C','andslope':'\u2A58','andv':'\u2A5A','ang':'\u2220','ange':'\u29A4','angle':'\u2220','angmsd':'\u2221','angmsdaa':'\u29A8','angmsdab':'\u29A9','angmsdac':'\u29AA','angmsdad':'\u29AB','angmsdae':'\u29AC','angmsdaf':'\u29AD','angmsdag':'\u29AE','angmsdah':'\u29AF','angrt':'\u221F','angrtvb':'\u22BE','angrtvbd':'\u299D','angsph':'\u2222','angst':'\xC5','angzarr':'\u237C','aogon':'\u0105','Aogon':'\u0104','aopf':'\uD835\uDD52','Aopf':'\uD835\uDD38','ap':'\u2248','apacir':'\u2A6F','ape':'\u224A','apE':'\u2A70','apid':'\u224B','apos':'\'','ApplyFunction':'\u2061','approx':'\u2248','approxeq':'\u224A','aring':'\xE5','Aring':'\xC5','ascr':'\uD835\uDCB6','Ascr':'\uD835\uDC9C','Assign':'\u2254','ast':'*','asymp':'\u2248','asympeq':'\u224D','atilde':'\xE3','Atilde':'\xC3','auml':'\xE4','Auml':'\xC4','awconint':'\u2233','awint':'\u2A11','backcong':'\u224C','backepsilon':'\u03F6','backprime':'\u2035','backsim':'\u223D','backsimeq':'\u22CD','Backslash':'\u2216','Barv':'\u2AE7','barvee':'\u22BD','barwed':'\u2305','Barwed':'\u2306','barwedge':'\u2305','bbrk':'\u23B5','bbrktbrk':'\u23B6','bcong':'\u224C','bcy':'\u0431','Bcy':'\u0411','bdquo':'\u201E','becaus':'\u2235','because':'\u2235','Because':'\u2235','bemptyv':'\u29B0','bepsi':'\u03F6','bernou':'\u212C','Bernoullis':'\u212C','beta':'\u03B2','Beta':'\u0392','beth':'\u2136','between':'\u226C','bfr':'\uD835\uDD1F','Bfr':'\uD835\uDD05','bigcap':'\u22C2','bigcirc':'\u25EF','bigcup':'\u22C3','bigodot':'\u2A00','bigoplus':'\u2A01','bigotimes':'\u2A02','bigsqcup':'\u2A06','bigstar':'\u2605','bigtriangledown':'\u25BD','bigtriangleup':'\u25B3','biguplus':'\u2A04','bigvee':'\u22C1','bigwedge':'\u22C0','bkarow':'\u290D','blacklozenge':'\u29EB','blacksquare':'\u25AA','blacktriangle':'\u25B4','blacktriangledown':'\u25BE','blacktriangleleft':'\u25C2','blacktriangleright':'\u25B8','blank':'\u2423','blk12':'\u2592','blk14':'\u2591','blk34':'\u2593','block':'\u2588','bne':'=\u20E5','bnequiv':'\u2261\u20E5','bnot':'\u2310','bNot':'\u2AED','bopf':'\uD835\uDD53','Bopf':'\uD835\uDD39','bot':'\u22A5','bottom':'\u22A5','bowtie':'\u22C8','boxbox':'\u29C9','boxdl':'\u2510','boxdL':'\u2555','boxDl':'\u2556','boxDL':'\u2557','boxdr':'\u250C','boxdR':'\u2552','boxDr':'\u2553','boxDR':'\u2554','boxh':'\u2500','boxH':'\u2550','boxhd':'\u252C','boxhD':'\u2565','boxHd':'\u2564','boxHD':'\u2566','boxhu':'\u2534','boxhU':'\u2568','boxHu':'\u2567','boxHU':'\u2569','boxminus':'\u229F','boxplus':'\u229E','boxtimes':'\u22A0','boxul':'\u2518','boxuL':'\u255B','boxUl':'\u255C','boxUL':'\u255D','boxur':'\u2514','boxuR':'\u2558','boxUr':'\u2559','boxUR':'\u255A','boxv':'\u2502','boxV':'\u2551','boxvh':'\u253C','boxvH':'\u256A','boxVh':'\u256B','boxVH':'\u256C','boxvl':'\u2524','boxvL':'\u2561','boxVl':'\u2562','boxVL':'\u2563','boxvr':'\u251C','boxvR':'\u255E','boxVr':'\u255F','boxVR':'\u2560','bprime':'\u2035','breve':'\u02D8','Breve':'\u02D8','brvbar':'\xA6','bscr':'\uD835\uDCB7','Bscr':'\u212C','bsemi':'\u204F','bsim':'\u223D','bsime':'\u22CD','bsol':'\\','bsolb':'\u29C5','bsolhsub':'\u27C8','bull':'\u2022','bullet':'\u2022','bump':'\u224E','bumpe':'\u224F','bumpE':'\u2AAE','bumpeq':'\u224F','Bumpeq':'\u224E','cacute':'\u0107','Cacute':'\u0106','cap':'\u2229','Cap':'\u22D2','capand':'\u2A44','capbrcup':'\u2A49','capcap':'\u2A4B','capcup':'\u2A47','capdot':'\u2A40','CapitalDifferentialD':'\u2145','caps':'\u2229\uFE00','caret':'\u2041','caron':'\u02C7','Cayleys':'\u212D','ccaps':'\u2A4D','ccaron':'\u010D','Ccaron':'\u010C','ccedil':'\xE7','Ccedil':'\xC7','ccirc':'\u0109','Ccirc':'\u0108','Cconint':'\u2230','ccups':'\u2A4C','ccupssm':'\u2A50','cdot':'\u010B','Cdot':'\u010A','cedil':'\xB8','Cedilla':'\xB8','cemptyv':'\u29B2','cent':'\xA2','centerdot':'\xB7','CenterDot':'\xB7','cfr':'\uD835\uDD20','Cfr':'\u212D','chcy':'\u0447','CHcy':'\u0427','check':'\u2713','checkmark':'\u2713','chi':'\u03C7','Chi':'\u03A7','cir':'\u25CB','circ':'\u02C6','circeq':'\u2257','circlearrowleft':'\u21BA','circlearrowright':'\u21BB','circledast':'\u229B','circledcirc':'\u229A','circleddash':'\u229D','CircleDot':'\u2299','circledR':'\xAE','circledS':'\u24C8','CircleMinus':'\u2296','CirclePlus':'\u2295','CircleTimes':'\u2297','cire':'\u2257','cirE':'\u29C3','cirfnint':'\u2A10','cirmid':'\u2AEF','cirscir':'\u29C2','ClockwiseContourIntegral':'\u2232','CloseCurlyDoubleQuote':'\u201D','CloseCurlyQuote':'\u2019','clubs':'\u2663','clubsuit':'\u2663','colon':':','Colon':'\u2237','colone':'\u2254','Colone':'\u2A74','coloneq':'\u2254','comma':',','commat':'@','comp':'\u2201','compfn':'\u2218','complement':'\u2201','complexes':'\u2102','cong':'\u2245','congdot':'\u2A6D','Congruent':'\u2261','conint':'\u222E','Conint':'\u222F','ContourIntegral':'\u222E','copf':'\uD835\uDD54','Copf':'\u2102','coprod':'\u2210','Coproduct':'\u2210','copy':'\xA9','COPY':'\xA9','copysr':'\u2117','CounterClockwiseContourIntegral':'\u2233','crarr':'\u21B5','cross':'\u2717','Cross':'\u2A2F','cscr':'\uD835\uDCB8','Cscr':'\uD835\uDC9E','csub':'\u2ACF','csube':'\u2AD1','csup':'\u2AD0','csupe':'\u2AD2','ctdot':'\u22EF','cudarrl':'\u2938','cudarrr':'\u2935','cuepr':'\u22DE','cuesc':'\u22DF','cularr':'\u21B6','cularrp':'\u293D','cup':'\u222A','Cup':'\u22D3','cupbrcap':'\u2A48','cupcap':'\u2A46','CupCap':'\u224D','cupcup':'\u2A4A','cupdot':'\u228D','cupor':'\u2A45','cups':'\u222A\uFE00','curarr':'\u21B7','curarrm':'\u293C','curlyeqprec':'\u22DE','curlyeqsucc':'\u22DF','curlyvee':'\u22CE','curlywedge':'\u22CF','curren':'\xA4','curvearrowleft':'\u21B6','curvearrowright':'\u21B7','cuvee':'\u22CE','cuwed':'\u22CF','cwconint':'\u2232','cwint':'\u2231','cylcty':'\u232D','dagger':'\u2020','Dagger':'\u2021','daleth':'\u2138','darr':'\u2193','dArr':'\u21D3','Darr':'\u21A1','dash':'\u2010','dashv':'\u22A3','Dashv':'\u2AE4','dbkarow':'\u290F','dblac':'\u02DD','dcaron':'\u010F','Dcaron':'\u010E','dcy':'\u0434','Dcy':'\u0414','dd':'\u2146','DD':'\u2145','ddagger':'\u2021','ddarr':'\u21CA','DDotrahd':'\u2911','ddotseq':'\u2A77','deg':'\xB0','Del':'\u2207','delta':'\u03B4','Delta':'\u0394','demptyv':'\u29B1','dfisht':'\u297F','dfr':'\uD835\uDD21','Dfr':'\uD835\uDD07','dHar':'\u2965','dharl':'\u21C3','dharr':'\u21C2','DiacriticalAcute':'\xB4','DiacriticalDot':'\u02D9','DiacriticalDoubleAcute':'\u02DD','DiacriticalGrave':'`','DiacriticalTilde':'\u02DC','diam':'\u22C4','diamond':'\u22C4','Diamond':'\u22C4','diamondsuit':'\u2666','diams':'\u2666','die':'\xA8','DifferentialD':'\u2146','digamma':'\u03DD','disin':'\u22F2','div':'\xF7','divide':'\xF7','divideontimes':'\u22C7','divonx':'\u22C7','djcy':'\u0452','DJcy':'\u0402','dlcorn':'\u231E','dlcrop':'\u230D','dollar':'$','dopf':'\uD835\uDD55','Dopf':'\uD835\uDD3B','dot':'\u02D9','Dot':'\xA8','DotDot':'\u20DC','doteq':'\u2250','doteqdot':'\u2251','DotEqual':'\u2250','dotminus':'\u2238','dotplus':'\u2214','dotsquare':'\u22A1','doublebarwedge':'\u2306','DoubleContourIntegral':'\u222F','DoubleDot':'\xA8','DoubleDownArrow':'\u21D3','DoubleLeftArrow':'\u21D0','DoubleLeftRightArrow':'\u21D4','DoubleLeftTee':'\u2AE4','DoubleLongLeftArrow':'\u27F8','DoubleLongLeftRightArrow':'\u27FA','DoubleLongRightArrow':'\u27F9','DoubleRightArrow':'\u21D2','DoubleRightTee':'\u22A8','DoubleUpArrow':'\u21D1','DoubleUpDownArrow':'\u21D5','DoubleVerticalBar':'\u2225','downarrow':'\u2193','Downarrow':'\u21D3','DownArrow':'\u2193','DownArrowBar':'\u2913','DownArrowUpArrow':'\u21F5','DownBreve':'\u0311','downdownarrows':'\u21CA','downharpoonleft':'\u21C3','downharpoonright':'\u21C2','DownLeftRightVector':'\u2950','DownLeftTeeVector':'\u295E','DownLeftVector':'\u21BD','DownLeftVectorBar':'\u2956','DownRightTeeVector':'\u295F','DownRightVector':'\u21C1','DownRightVectorBar':'\u2957','DownTee':'\u22A4','DownTeeArrow':'\u21A7','drbkarow':'\u2910','drcorn':'\u231F','drcrop':'\u230C','dscr':'\uD835\uDCB9','Dscr':'\uD835\uDC9F','dscy':'\u0455','DScy':'\u0405','dsol':'\u29F6','dstrok':'\u0111','Dstrok':'\u0110','dtdot':'\u22F1','dtri':'\u25BF','dtrif':'\u25BE','duarr':'\u21F5','duhar':'\u296F','dwangle':'\u29A6','dzcy':'\u045F','DZcy':'\u040F','dzigrarr':'\u27FF','eacute':'\xE9','Eacute':'\xC9','easter':'\u2A6E','ecaron':'\u011B','Ecaron':'\u011A','ecir':'\u2256','ecirc':'\xEA','Ecirc':'\xCA','ecolon':'\u2255','ecy':'\u044D','Ecy':'\u042D','eDDot':'\u2A77','edot':'\u0117','eDot':'\u2251','Edot':'\u0116','ee':'\u2147','efDot':'\u2252','efr':'\uD835\uDD22','Efr':'\uD835\uDD08','eg':'\u2A9A','egrave':'\xE8','Egrave':'\xC8','egs':'\u2A96','egsdot':'\u2A98','el':'\u2A99','Element':'\u2208','elinters':'\u23E7','ell':'\u2113','els':'\u2A95','elsdot':'\u2A97','emacr':'\u0113','Emacr':'\u0112','empty':'\u2205','emptyset':'\u2205','EmptySmallSquare':'\u25FB','emptyv':'\u2205','EmptyVerySmallSquare':'\u25AB','emsp':'\u2003','emsp13':'\u2004','emsp14':'\u2005','eng':'\u014B','ENG':'\u014A','ensp':'\u2002','eogon':'\u0119','Eogon':'\u0118','eopf':'\uD835\uDD56','Eopf':'\uD835\uDD3C','epar':'\u22D5','eparsl':'\u29E3','eplus':'\u2A71','epsi':'\u03B5','epsilon':'\u03B5','Epsilon':'\u0395','epsiv':'\u03F5','eqcirc':'\u2256','eqcolon':'\u2255','eqsim':'\u2242','eqslantgtr':'\u2A96','eqslantless':'\u2A95','Equal':'\u2A75','equals':'=','EqualTilde':'\u2242','equest':'\u225F','Equilibrium':'\u21CC','equiv':'\u2261','equivDD':'\u2A78','eqvparsl':'\u29E5','erarr':'\u2971','erDot':'\u2253','escr':'\u212F','Escr':'\u2130','esdot':'\u2250','esim':'\u2242','Esim':'\u2A73','eta':'\u03B7','Eta':'\u0397','eth':'\xF0','ETH':'\xD0','euml':'\xEB','Euml':'\xCB','euro':'\u20AC','excl':'!','exist':'\u2203','Exists':'\u2203','expectation':'\u2130','exponentiale':'\u2147','ExponentialE':'\u2147','fallingdotseq':'\u2252','fcy':'\u0444','Fcy':'\u0424','female':'\u2640','ffilig':'\uFB03','fflig':'\uFB00','ffllig':'\uFB04','ffr':'\uD835\uDD23','Ffr':'\uD835\uDD09','filig':'\uFB01','FilledSmallSquare':'\u25FC','FilledVerySmallSquare':'\u25AA','fjlig':'fj','flat':'\u266D','fllig':'\uFB02','fltns':'\u25B1','fnof':'\u0192','fopf':'\uD835\uDD57','Fopf':'\uD835\uDD3D','forall':'\u2200','ForAll':'\u2200','fork':'\u22D4','forkv':'\u2AD9','Fouriertrf':'\u2131','fpartint':'\u2A0D','frac12':'\xBD','frac13':'\u2153','frac14':'\xBC','frac15':'\u2155','frac16':'\u2159','frac18':'\u215B','frac23':'\u2154','frac25':'\u2156','frac34':'\xBE','frac35':'\u2157','frac38':'\u215C','frac45':'\u2158','frac56':'\u215A','frac58':'\u215D','frac78':'\u215E','frasl':'\u2044','frown':'\u2322','fscr':'\uD835\uDCBB','Fscr':'\u2131','gacute':'\u01F5','gamma':'\u03B3','Gamma':'\u0393','gammad':'\u03DD','Gammad':'\u03DC','gap':'\u2A86','gbreve':'\u011F','Gbreve':'\u011E','Gcedil':'\u0122','gcirc':'\u011D','Gcirc':'\u011C','gcy':'\u0433','Gcy':'\u0413','gdot':'\u0121','Gdot':'\u0120','ge':'\u2265','gE':'\u2267','gel':'\u22DB','gEl':'\u2A8C','geq':'\u2265','geqq':'\u2267','geqslant':'\u2A7E','ges':'\u2A7E','gescc':'\u2AA9','gesdot':'\u2A80','gesdoto':'\u2A82','gesdotol':'\u2A84','gesl':'\u22DB\uFE00','gesles':'\u2A94','gfr':'\uD835\uDD24','Gfr':'\uD835\uDD0A','gg':'\u226B','Gg':'\u22D9','ggg':'\u22D9','gimel':'\u2137','gjcy':'\u0453','GJcy':'\u0403','gl':'\u2277','gla':'\u2AA5','glE':'\u2A92','glj':'\u2AA4','gnap':'\u2A8A','gnapprox':'\u2A8A','gne':'\u2A88','gnE':'\u2269','gneq':'\u2A88','gneqq':'\u2269','gnsim':'\u22E7','gopf':'\uD835\uDD58','Gopf':'\uD835\uDD3E','grave':'`','GreaterEqual':'\u2265','GreaterEqualLess':'\u22DB','GreaterFullEqual':'\u2267','GreaterGreater':'\u2AA2','GreaterLess':'\u2277','GreaterSlantEqual':'\u2A7E','GreaterTilde':'\u2273','gscr':'\u210A','Gscr':'\uD835\uDCA2','gsim':'\u2273','gsime':'\u2A8E','gsiml':'\u2A90','gt':'>','Gt':'\u226B','GT':'>','gtcc':'\u2AA7','gtcir':'\u2A7A','gtdot':'\u22D7','gtlPar':'\u2995','gtquest':'\u2A7C','gtrapprox':'\u2A86','gtrarr':'\u2978','gtrdot':'\u22D7','gtreqless':'\u22DB','gtreqqless':'\u2A8C','gtrless':'\u2277','gtrsim':'\u2273','gvertneqq':'\u2269\uFE00','gvnE':'\u2269\uFE00','Hacek':'\u02C7','hairsp':'\u200A','half':'\xBD','hamilt':'\u210B','hardcy':'\u044A','HARDcy':'\u042A','harr':'\u2194','hArr':'\u21D4','harrcir':'\u2948','harrw':'\u21AD','Hat':'^','hbar':'\u210F','hcirc':'\u0125','Hcirc':'\u0124','hearts':'\u2665','heartsuit':'\u2665','hellip':'\u2026','hercon':'\u22B9','hfr':'\uD835\uDD25','Hfr':'\u210C','HilbertSpace':'\u210B','hksearow':'\u2925','hkswarow':'\u2926','hoarr':'\u21FF','homtht':'\u223B','hookleftarrow':'\u21A9','hookrightarrow':'\u21AA','hopf':'\uD835\uDD59','Hopf':'\u210D','horbar':'\u2015','HorizontalLine':'\u2500','hscr':'\uD835\uDCBD','Hscr':'\u210B','hslash':'\u210F','hstrok':'\u0127','Hstrok':'\u0126','HumpDownHump':'\u224E','HumpEqual':'\u224F','hybull':'\u2043','hyphen':'\u2010','iacute':'\xED','Iacute':'\xCD','ic':'\u2063','icirc':'\xEE','Icirc':'\xCE','icy':'\u0438','Icy':'\u0418','Idot':'\u0130','iecy':'\u0435','IEcy':'\u0415','iexcl':'\xA1','iff':'\u21D4','ifr':'\uD835\uDD26','Ifr':'\u2111','igrave':'\xEC','Igrave':'\xCC','ii':'\u2148','iiiint':'\u2A0C','iiint':'\u222D','iinfin':'\u29DC','iiota':'\u2129','ijlig':'\u0133','IJlig':'\u0132','Im':'\u2111','imacr':'\u012B','Imacr':'\u012A','image':'\u2111','ImaginaryI':'\u2148','imagline':'\u2110','imagpart':'\u2111','imath':'\u0131','imof':'\u22B7','imped':'\u01B5','Implies':'\u21D2','in':'\u2208','incare':'\u2105','infin':'\u221E','infintie':'\u29DD','inodot':'\u0131','int':'\u222B','Int':'\u222C','intcal':'\u22BA','integers':'\u2124','Integral':'\u222B','intercal':'\u22BA','Intersection':'\u22C2','intlarhk':'\u2A17','intprod':'\u2A3C','InvisibleComma':'\u2063','InvisibleTimes':'\u2062','iocy':'\u0451','IOcy':'\u0401','iogon':'\u012F','Iogon':'\u012E','iopf':'\uD835\uDD5A','Iopf':'\uD835\uDD40','iota':'\u03B9','Iota':'\u0399','iprod':'\u2A3C','iquest':'\xBF','iscr':'\uD835\uDCBE','Iscr':'\u2110','isin':'\u2208','isindot':'\u22F5','isinE':'\u22F9','isins':'\u22F4','isinsv':'\u22F3','isinv':'\u2208','it':'\u2062','itilde':'\u0129','Itilde':'\u0128','iukcy':'\u0456','Iukcy':'\u0406','iuml':'\xEF','Iuml':'\xCF','jcirc':'\u0135','Jcirc':'\u0134','jcy':'\u0439','Jcy':'\u0419','jfr':'\uD835\uDD27','Jfr':'\uD835\uDD0D','jmath':'\u0237','jopf':'\uD835\uDD5B','Jopf':'\uD835\uDD41','jscr':'\uD835\uDCBF','Jscr':'\uD835\uDCA5','jsercy':'\u0458','Jsercy':'\u0408','jukcy':'\u0454','Jukcy':'\u0404','kappa':'\u03BA','Kappa':'\u039A','kappav':'\u03F0','kcedil':'\u0137','Kcedil':'\u0136','kcy':'\u043A','Kcy':'\u041A','kfr':'\uD835\uDD28','Kfr':'\uD835\uDD0E','kgreen':'\u0138','khcy':'\u0445','KHcy':'\u0425','kjcy':'\u045C','KJcy':'\u040C','kopf':'\uD835\uDD5C','Kopf':'\uD835\uDD42','kscr':'\uD835\uDCC0','Kscr':'\uD835\uDCA6','lAarr':'\u21DA','lacute':'\u013A','Lacute':'\u0139','laemptyv':'\u29B4','lagran':'\u2112','lambda':'\u03BB','Lambda':'\u039B','lang':'\u27E8','Lang':'\u27EA','langd':'\u2991','langle':'\u27E8','lap':'\u2A85','Laplacetrf':'\u2112','laquo':'\xAB','larr':'\u2190','lArr':'\u21D0','Larr':'\u219E','larrb':'\u21E4','larrbfs':'\u291F','larrfs':'\u291D','larrhk':'\u21A9','larrlp':'\u21AB','larrpl':'\u2939','larrsim':'\u2973','larrtl':'\u21A2','lat':'\u2AAB','latail':'\u2919','lAtail':'\u291B','late':'\u2AAD','lates':'\u2AAD\uFE00','lbarr':'\u290C','lBarr':'\u290E','lbbrk':'\u2772','lbrace':'{','lbrack':'[','lbrke':'\u298B','lbrksld':'\u298F','lbrkslu':'\u298D','lcaron':'\u013E','Lcaron':'\u013D','lcedil':'\u013C','Lcedil':'\u013B','lceil':'\u2308','lcub':'{','lcy':'\u043B','Lcy':'\u041B','ldca':'\u2936','ldquo':'\u201C','ldquor':'\u201E','ldrdhar':'\u2967','ldrushar':'\u294B','ldsh':'\u21B2','le':'\u2264','lE':'\u2266','LeftAngleBracket':'\u27E8','leftarrow':'\u2190','Leftarrow':'\u21D0','LeftArrow':'\u2190','LeftArrowBar':'\u21E4','LeftArrowRightArrow':'\u21C6','leftarrowtail':'\u21A2','LeftCeiling':'\u2308','LeftDoubleBracket':'\u27E6','LeftDownTeeVector':'\u2961','LeftDownVector':'\u21C3','LeftDownVectorBar':'\u2959','LeftFloor':'\u230A','leftharpoondown':'\u21BD','leftharpoonup':'\u21BC','leftleftarrows':'\u21C7','leftrightarrow':'\u2194','Leftrightarrow':'\u21D4','LeftRightArrow':'\u2194','leftrightarrows':'\u21C6','leftrightharpoons':'\u21CB','leftrightsquigarrow':'\u21AD','LeftRightVector':'\u294E','LeftTee':'\u22A3','LeftTeeArrow':'\u21A4','LeftTeeVector':'\u295A','leftthreetimes':'\u22CB','LeftTriangle':'\u22B2','LeftTriangleBar':'\u29CF','LeftTriangleEqual':'\u22B4','LeftUpDownVector':'\u2951','LeftUpTeeVector':'\u2960','LeftUpVector':'\u21BF','LeftUpVectorBar':'\u2958','LeftVector':'\u21BC','LeftVectorBar':'\u2952','leg':'\u22DA','lEg':'\u2A8B','leq':'\u2264','leqq':'\u2266','leqslant':'\u2A7D','les':'\u2A7D','lescc':'\u2AA8','lesdot':'\u2A7F','lesdoto':'\u2A81','lesdotor':'\u2A83','lesg':'\u22DA\uFE00','lesges':'\u2A93','lessapprox':'\u2A85','lessdot':'\u22D6','lesseqgtr':'\u22DA','lesseqqgtr':'\u2A8B','LessEqualGreater':'\u22DA','LessFullEqual':'\u2266','LessGreater':'\u2276','lessgtr':'\u2276','LessLess':'\u2AA1','lesssim':'\u2272','LessSlantEqual':'\u2A7D','LessTilde':'\u2272','lfisht':'\u297C','lfloor':'\u230A','lfr':'\uD835\uDD29','Lfr':'\uD835\uDD0F','lg':'\u2276','lgE':'\u2A91','lHar':'\u2962','lhard':'\u21BD','lharu':'\u21BC','lharul':'\u296A','lhblk':'\u2584','ljcy':'\u0459','LJcy':'\u0409','ll':'\u226A','Ll':'\u22D8','llarr':'\u21C7','llcorner':'\u231E','Lleftarrow':'\u21DA','llhard':'\u296B','lltri':'\u25FA','lmidot':'\u0140','Lmidot':'\u013F','lmoust':'\u23B0','lmoustache':'\u23B0','lnap':'\u2A89','lnapprox':'\u2A89','lne':'\u2A87','lnE':'\u2268','lneq':'\u2A87','lneqq':'\u2268','lnsim':'\u22E6','loang':'\u27EC','loarr':'\u21FD','lobrk':'\u27E6','longleftarrow':'\u27F5','Longleftarrow':'\u27F8','LongLeftArrow':'\u27F5','longleftrightarrow':'\u27F7','Longleftrightarrow':'\u27FA','LongLeftRightArrow':'\u27F7','longmapsto':'\u27FC','longrightarrow':'\u27F6','Longrightarrow':'\u27F9','LongRightArrow':'\u27F6','looparrowleft':'\u21AB','looparrowright':'\u21AC','lopar':'\u2985','lopf':'\uD835\uDD5D','Lopf':'\uD835\uDD43','loplus':'\u2A2D','lotimes':'\u2A34','lowast':'\u2217','lowbar':'_','LowerLeftArrow':'\u2199','LowerRightArrow':'\u2198','loz':'\u25CA','lozenge':'\u25CA','lozf':'\u29EB','lpar':'(','lparlt':'\u2993','lrarr':'\u21C6','lrcorner':'\u231F','lrhar':'\u21CB','lrhard':'\u296D','lrm':'\u200E','lrtri':'\u22BF','lsaquo':'\u2039','lscr':'\uD835\uDCC1','Lscr':'\u2112','lsh':'\u21B0','Lsh':'\u21B0','lsim':'\u2272','lsime':'\u2A8D','lsimg':'\u2A8F','lsqb':'[','lsquo':'\u2018','lsquor':'\u201A','lstrok':'\u0142','Lstrok':'\u0141','lt':'<','Lt':'\u226A','LT':'<','ltcc':'\u2AA6','ltcir':'\u2A79','ltdot':'\u22D6','lthree':'\u22CB','ltimes':'\u22C9','ltlarr':'\u2976','ltquest':'\u2A7B','ltri':'\u25C3','ltrie':'\u22B4','ltrif':'\u25C2','ltrPar':'\u2996','lurdshar':'\u294A','luruhar':'\u2966','lvertneqq':'\u2268\uFE00','lvnE':'\u2268\uFE00','macr':'\xAF','male':'\u2642','malt':'\u2720','maltese':'\u2720','map':'\u21A6','Map':'\u2905','mapsto':'\u21A6','mapstodown':'\u21A7','mapstoleft':'\u21A4','mapstoup':'\u21A5','marker':'\u25AE','mcomma':'\u2A29','mcy':'\u043C','Mcy':'\u041C','mdash':'\u2014','mDDot':'\u223A','measuredangle':'\u2221','MediumSpace':'\u205F','Mellintrf':'\u2133','mfr':'\uD835\uDD2A','Mfr':'\uD835\uDD10','mho':'\u2127','micro':'\xB5','mid':'\u2223','midast':'*','midcir':'\u2AF0','middot':'\xB7','minus':'\u2212','minusb':'\u229F','minusd':'\u2238','minusdu':'\u2A2A','MinusPlus':'\u2213','mlcp':'\u2ADB','mldr':'\u2026','mnplus':'\u2213','models':'\u22A7','mopf':'\uD835\uDD5E','Mopf':'\uD835\uDD44','mp':'\u2213','mscr':'\uD835\uDCC2','Mscr':'\u2133','mstpos':'\u223E','mu':'\u03BC','Mu':'\u039C','multimap':'\u22B8','mumap':'\u22B8','nabla':'\u2207','nacute':'\u0144','Nacute':'\u0143','nang':'\u2220\u20D2','nap':'\u2249','napE':'\u2A70\u0338','napid':'\u224B\u0338','napos':'\u0149','napprox':'\u2249','natur':'\u266E','natural':'\u266E','naturals':'\u2115','nbsp':'\xA0','nbump':'\u224E\u0338','nbumpe':'\u224F\u0338','ncap':'\u2A43','ncaron':'\u0148','Ncaron':'\u0147','ncedil':'\u0146','Ncedil':'\u0145','ncong':'\u2247','ncongdot':'\u2A6D\u0338','ncup':'\u2A42','ncy':'\u043D','Ncy':'\u041D','ndash':'\u2013','ne':'\u2260','nearhk':'\u2924','nearr':'\u2197','neArr':'\u21D7','nearrow':'\u2197','nedot':'\u2250\u0338','NegativeMediumSpace':'\u200B','NegativeThickSpace':'\u200B','NegativeThinSpace':'\u200B','NegativeVeryThinSpace':'\u200B','nequiv':'\u2262','nesear':'\u2928','nesim':'\u2242\u0338','NestedGreaterGreater':'\u226B','NestedLessLess':'\u226A','NewLine':'\n','nexist':'\u2204','nexists':'\u2204','nfr':'\uD835\uDD2B','Nfr':'\uD835\uDD11','nge':'\u2271','ngE':'\u2267\u0338','ngeq':'\u2271','ngeqq':'\u2267\u0338','ngeqslant':'\u2A7E\u0338','nges':'\u2A7E\u0338','nGg':'\u22D9\u0338','ngsim':'\u2275','ngt':'\u226F','nGt':'\u226B\u20D2','ngtr':'\u226F','nGtv':'\u226B\u0338','nharr':'\u21AE','nhArr':'\u21CE','nhpar':'\u2AF2','ni':'\u220B','nis':'\u22FC','nisd':'\u22FA','niv':'\u220B','njcy':'\u045A','NJcy':'\u040A','nlarr':'\u219A','nlArr':'\u21CD','nldr':'\u2025','nle':'\u2270','nlE':'\u2266\u0338','nleftarrow':'\u219A','nLeftarrow':'\u21CD','nleftrightarrow':'\u21AE','nLeftrightarrow':'\u21CE','nleq':'\u2270','nleqq':'\u2266\u0338','nleqslant':'\u2A7D\u0338','nles':'\u2A7D\u0338','nless':'\u226E','nLl':'\u22D8\u0338','nlsim':'\u2274','nlt':'\u226E','nLt':'\u226A\u20D2','nltri':'\u22EA','nltrie':'\u22EC','nLtv':'\u226A\u0338','nmid':'\u2224','NoBreak':'\u2060','NonBreakingSpace':'\xA0','nopf':'\uD835\uDD5F','Nopf':'\u2115','not':'\xAC','Not':'\u2AEC','NotCongruent':'\u2262','NotCupCap':'\u226D','NotDoubleVerticalBar':'\u2226','NotElement':'\u2209','NotEqual':'\u2260','NotEqualTilde':'\u2242\u0338','NotExists':'\u2204','NotGreater':'\u226F','NotGreaterEqual':'\u2271','NotGreaterFullEqual':'\u2267\u0338','NotGreaterGreater':'\u226B\u0338','NotGreaterLess':'\u2279','NotGreaterSlantEqual':'\u2A7E\u0338','NotGreaterTilde':'\u2275','NotHumpDownHump':'\u224E\u0338','NotHumpEqual':'\u224F\u0338','notin':'\u2209','notindot':'\u22F5\u0338','notinE':'\u22F9\u0338','notinva':'\u2209','notinvb':'\u22F7','notinvc':'\u22F6','NotLeftTriangle':'\u22EA','NotLeftTriangleBar':'\u29CF\u0338','NotLeftTriangleEqual':'\u22EC','NotLess':'\u226E','NotLessEqual':'\u2270','NotLessGreater':'\u2278','NotLessLess':'\u226A\u0338','NotLessSlantEqual':'\u2A7D\u0338','NotLessTilde':'\u2274','NotNestedGreaterGreater':'\u2AA2\u0338','NotNestedLessLess':'\u2AA1\u0338','notni':'\u220C','notniva':'\u220C','notnivb':'\u22FE','notnivc':'\u22FD','NotPrecedes':'\u2280','NotPrecedesEqual':'\u2AAF\u0338','NotPrecedesSlantEqual':'\u22E0','NotReverseElement':'\u220C','NotRightTriangle':'\u22EB','NotRightTriangleBar':'\u29D0\u0338','NotRightTriangleEqual':'\u22ED','NotSquareSubset':'\u228F\u0338','NotSquareSubsetEqual':'\u22E2','NotSquareSuperset':'\u2290\u0338','NotSquareSupersetEqual':'\u22E3','NotSubset':'\u2282\u20D2','NotSubsetEqual':'\u2288','NotSucceeds':'\u2281','NotSucceedsEqual':'\u2AB0\u0338','NotSucceedsSlantEqual':'\u22E1','NotSucceedsTilde':'\u227F\u0338','NotSuperset':'\u2283\u20D2','NotSupersetEqual':'\u2289','NotTilde':'\u2241','NotTildeEqual':'\u2244','NotTildeFullEqual':'\u2247','NotTildeTilde':'\u2249','NotVerticalBar':'\u2224','npar':'\u2226','nparallel':'\u2226','nparsl':'\u2AFD\u20E5','npart':'\u2202\u0338','npolint':'\u2A14','npr':'\u2280','nprcue':'\u22E0','npre':'\u2AAF\u0338','nprec':'\u2280','npreceq':'\u2AAF\u0338','nrarr':'\u219B','nrArr':'\u21CF','nrarrc':'\u2933\u0338','nrarrw':'\u219D\u0338','nrightarrow':'\u219B','nRightarrow':'\u21CF','nrtri':'\u22EB','nrtrie':'\u22ED','nsc':'\u2281','nsccue':'\u22E1','nsce':'\u2AB0\u0338','nscr':'\uD835\uDCC3','Nscr':'\uD835\uDCA9','nshortmid':'\u2224','nshortparallel':'\u2226','nsim':'\u2241','nsime':'\u2244','nsimeq':'\u2244','nsmid':'\u2224','nspar':'\u2226','nsqsube':'\u22E2','nsqsupe':'\u22E3','nsub':'\u2284','nsube':'\u2288','nsubE':'\u2AC5\u0338','nsubset':'\u2282\u20D2','nsubseteq':'\u2288','nsubseteqq':'\u2AC5\u0338','nsucc':'\u2281','nsucceq':'\u2AB0\u0338','nsup':'\u2285','nsupe':'\u2289','nsupE':'\u2AC6\u0338','nsupset':'\u2283\u20D2','nsupseteq':'\u2289','nsupseteqq':'\u2AC6\u0338','ntgl':'\u2279','ntilde':'\xF1','Ntilde':'\xD1','ntlg':'\u2278','ntriangleleft':'\u22EA','ntrianglelefteq':'\u22EC','ntriangleright':'\u22EB','ntrianglerighteq':'\u22ED','nu':'\u03BD','Nu':'\u039D','num':'#','numero':'\u2116','numsp':'\u2007','nvap':'\u224D\u20D2','nvdash':'\u22AC','nvDash':'\u22AD','nVdash':'\u22AE','nVDash':'\u22AF','nvge':'\u2265\u20D2','nvgt':'>\u20D2','nvHarr':'\u2904','nvinfin':'\u29DE','nvlArr':'\u2902','nvle':'\u2264\u20D2','nvlt':'<\u20D2','nvltrie':'\u22B4\u20D2','nvrArr':'\u2903','nvrtrie':'\u22B5\u20D2','nvsim':'\u223C\u20D2','nwarhk':'\u2923','nwarr':'\u2196','nwArr':'\u21D6','nwarrow':'\u2196','nwnear':'\u2927','oacute':'\xF3','Oacute':'\xD3','oast':'\u229B','ocir':'\u229A','ocirc':'\xF4','Ocirc':'\xD4','ocy':'\u043E','Ocy':'\u041E','odash':'\u229D','odblac':'\u0151','Odblac':'\u0150','odiv':'\u2A38','odot':'\u2299','odsold':'\u29BC','oelig':'\u0153','OElig':'\u0152','ofcir':'\u29BF','ofr':'\uD835\uDD2C','Ofr':'\uD835\uDD12','ogon':'\u02DB','ograve':'\xF2','Ograve':'\xD2','ogt':'\u29C1','ohbar':'\u29B5','ohm':'\u03A9','oint':'\u222E','olarr':'\u21BA','olcir':'\u29BE','olcross':'\u29BB','oline':'\u203E','olt':'\u29C0','omacr':'\u014D','Omacr':'\u014C','omega':'\u03C9','Omega':'\u03A9','omicron':'\u03BF','Omicron':'\u039F','omid':'\u29B6','ominus':'\u2296','oopf':'\uD835\uDD60','Oopf':'\uD835\uDD46','opar':'\u29B7','OpenCurlyDoubleQuote':'\u201C','OpenCurlyQuote':'\u2018','operp':'\u29B9','oplus':'\u2295','or':'\u2228','Or':'\u2A54','orarr':'\u21BB','ord':'\u2A5D','order':'\u2134','orderof':'\u2134','ordf':'\xAA','ordm':'\xBA','origof':'\u22B6','oror':'\u2A56','orslope':'\u2A57','orv':'\u2A5B','oS':'\u24C8','oscr':'\u2134','Oscr':'\uD835\uDCAA','oslash':'\xF8','Oslash':'\xD8','osol':'\u2298','otilde':'\xF5','Otilde':'\xD5','otimes':'\u2297','Otimes':'\u2A37','otimesas':'\u2A36','ouml':'\xF6','Ouml':'\xD6','ovbar':'\u233D','OverBar':'\u203E','OverBrace':'\u23DE','OverBracket':'\u23B4','OverParenthesis':'\u23DC','par':'\u2225','para':'\xB6','parallel':'\u2225','parsim':'\u2AF3','parsl':'\u2AFD','part':'\u2202','PartialD':'\u2202','pcy':'\u043F','Pcy':'\u041F','percnt':'%','period':'.','permil':'\u2030','perp':'\u22A5','pertenk':'\u2031','pfr':'\uD835\uDD2D','Pfr':'\uD835\uDD13','phi':'\u03C6','Phi':'\u03A6','phiv':'\u03D5','phmmat':'\u2133','phone':'\u260E','pi':'\u03C0','Pi':'\u03A0','pitchfork':'\u22D4','piv':'\u03D6','planck':'\u210F','planckh':'\u210E','plankv':'\u210F','plus':'+','plusacir':'\u2A23','plusb':'\u229E','pluscir':'\u2A22','plusdo':'\u2214','plusdu':'\u2A25','pluse':'\u2A72','PlusMinus':'\xB1','plusmn':'\xB1','plussim':'\u2A26','plustwo':'\u2A27','pm':'\xB1','Poincareplane':'\u210C','pointint':'\u2A15','popf':'\uD835\uDD61','Popf':'\u2119','pound':'\xA3','pr':'\u227A','Pr':'\u2ABB','prap':'\u2AB7','prcue':'\u227C','pre':'\u2AAF','prE':'\u2AB3','prec':'\u227A','precapprox':'\u2AB7','preccurlyeq':'\u227C','Precedes':'\u227A','PrecedesEqual':'\u2AAF','PrecedesSlantEqual':'\u227C','PrecedesTilde':'\u227E','preceq':'\u2AAF','precnapprox':'\u2AB9','precneqq':'\u2AB5','precnsim':'\u22E8','precsim':'\u227E','prime':'\u2032','Prime':'\u2033','primes':'\u2119','prnap':'\u2AB9','prnE':'\u2AB5','prnsim':'\u22E8','prod':'\u220F','Product':'\u220F','profalar':'\u232E','profline':'\u2312','profsurf':'\u2313','prop':'\u221D','Proportion':'\u2237','Proportional':'\u221D','propto':'\u221D','prsim':'\u227E','prurel':'\u22B0','pscr':'\uD835\uDCC5','Pscr':'\uD835\uDCAB','psi':'\u03C8','Psi':'\u03A8','puncsp':'\u2008','qfr':'\uD835\uDD2E','Qfr':'\uD835\uDD14','qint':'\u2A0C','qopf':'\uD835\uDD62','Qopf':'\u211A','qprime':'\u2057','qscr':'\uD835\uDCC6','Qscr':'\uD835\uDCAC','quaternions':'\u210D','quatint':'\u2A16','quest':'?','questeq':'\u225F','quot':'"','QUOT':'"','rAarr':'\u21DB','race':'\u223D\u0331','racute':'\u0155','Racute':'\u0154','radic':'\u221A','raemptyv':'\u29B3','rang':'\u27E9','Rang':'\u27EB','rangd':'\u2992','range':'\u29A5','rangle':'\u27E9','raquo':'\xBB','rarr':'\u2192','rArr':'\u21D2','Rarr':'\u21A0','rarrap':'\u2975','rarrb':'\u21E5','rarrbfs':'\u2920','rarrc':'\u2933','rarrfs':'\u291E','rarrhk':'\u21AA','rarrlp':'\u21AC','rarrpl':'\u2945','rarrsim':'\u2974','rarrtl':'\u21A3','Rarrtl':'\u2916','rarrw':'\u219D','ratail':'\u291A','rAtail':'\u291C','ratio':'\u2236','rationals':'\u211A','rbarr':'\u290D','rBarr':'\u290F','RBarr':'\u2910','rbbrk':'\u2773','rbrace':'}','rbrack':']','rbrke':'\u298C','rbrksld':'\u298E','rbrkslu':'\u2990','rcaron':'\u0159','Rcaron':'\u0158','rcedil':'\u0157','Rcedil':'\u0156','rceil':'\u2309','rcub':'}','rcy':'\u0440','Rcy':'\u0420','rdca':'\u2937','rdldhar':'\u2969','rdquo':'\u201D','rdquor':'\u201D','rdsh':'\u21B3','Re':'\u211C','real':'\u211C','realine':'\u211B','realpart':'\u211C','reals':'\u211D','rect':'\u25AD','reg':'\xAE','REG':'\xAE','ReverseElement':'\u220B','ReverseEquilibrium':'\u21CB','ReverseUpEquilibrium':'\u296F','rfisht':'\u297D','rfloor':'\u230B','rfr':'\uD835\uDD2F','Rfr':'\u211C','rHar':'\u2964','rhard':'\u21C1','rharu':'\u21C0','rharul':'\u296C','rho':'\u03C1','Rho':'\u03A1','rhov':'\u03F1','RightAngleBracket':'\u27E9','rightarrow':'\u2192','Rightarrow':'\u21D2','RightArrow':'\u2192','RightArrowBar':'\u21E5','RightArrowLeftArrow':'\u21C4','rightarrowtail':'\u21A3','RightCeiling':'\u2309','RightDoubleBracket':'\u27E7','RightDownTeeVector':'\u295D','RightDownVector':'\u21C2','RightDownVectorBar':'\u2955','RightFloor':'\u230B','rightharpoondown':'\u21C1','rightharpoonup':'\u21C0','rightleftarrows':'\u21C4','rightleftharpoons':'\u21CC','rightrightarrows':'\u21C9','rightsquigarrow':'\u219D','RightTee':'\u22A2','RightTeeArrow':'\u21A6','RightTeeVector':'\u295B','rightthreetimes':'\u22CC','RightTriangle':'\u22B3','RightTriangleBar':'\u29D0','RightTriangleEqual':'\u22B5','RightUpDownVector':'\u294F','RightUpTeeVector':'\u295C','RightUpVector':'\u21BE','RightUpVectorBar':'\u2954','RightVector':'\u21C0','RightVectorBar':'\u2953','ring':'\u02DA','risingdotseq':'\u2253','rlarr':'\u21C4','rlhar':'\u21CC','rlm':'\u200F','rmoust':'\u23B1','rmoustache':'\u23B1','rnmid':'\u2AEE','roang':'\u27ED','roarr':'\u21FE','robrk':'\u27E7','ropar':'\u2986','ropf':'\uD835\uDD63','Ropf':'\u211D','roplus':'\u2A2E','rotimes':'\u2A35','RoundImplies':'\u2970','rpar':')','rpargt':'\u2994','rppolint':'\u2A12','rrarr':'\u21C9','Rrightarrow':'\u21DB','rsaquo':'\u203A','rscr':'\uD835\uDCC7','Rscr':'\u211B','rsh':'\u21B1','Rsh':'\u21B1','rsqb':']','rsquo':'\u2019','rsquor':'\u2019','rthree':'\u22CC','rtimes':'\u22CA','rtri':'\u25B9','rtrie':'\u22B5','rtrif':'\u25B8','rtriltri':'\u29CE','RuleDelayed':'\u29F4','ruluhar':'\u2968','rx':'\u211E','sacute':'\u015B','Sacute':'\u015A','sbquo':'\u201A','sc':'\u227B','Sc':'\u2ABC','scap':'\u2AB8','scaron':'\u0161','Scaron':'\u0160','sccue':'\u227D','sce':'\u2AB0','scE':'\u2AB4','scedil':'\u015F','Scedil':'\u015E','scirc':'\u015D','Scirc':'\u015C','scnap':'\u2ABA','scnE':'\u2AB6','scnsim':'\u22E9','scpolint':'\u2A13','scsim':'\u227F','scy':'\u0441','Scy':'\u0421','sdot':'\u22C5','sdotb':'\u22A1','sdote':'\u2A66','searhk':'\u2925','searr':'\u2198','seArr':'\u21D8','searrow':'\u2198','sect':'\xA7','semi':';','seswar':'\u2929','setminus':'\u2216','setmn':'\u2216','sext':'\u2736','sfr':'\uD835\uDD30','Sfr':'\uD835\uDD16','sfrown':'\u2322','sharp':'\u266F','shchcy':'\u0449','SHCHcy':'\u0429','shcy':'\u0448','SHcy':'\u0428','ShortDownArrow':'\u2193','ShortLeftArrow':'\u2190','shortmid':'\u2223','shortparallel':'\u2225','ShortRightArrow':'\u2192','ShortUpArrow':'\u2191','shy':'\xAD','sigma':'\u03C3','Sigma':'\u03A3','sigmaf':'\u03C2','sigmav':'\u03C2','sim':'\u223C','simdot':'\u2A6A','sime':'\u2243','simeq':'\u2243','simg':'\u2A9E','simgE':'\u2AA0','siml':'\u2A9D','simlE':'\u2A9F','simne':'\u2246','simplus':'\u2A24','simrarr':'\u2972','slarr':'\u2190','SmallCircle':'\u2218','smallsetminus':'\u2216','smashp':'\u2A33','smeparsl':'\u29E4','smid':'\u2223','smile':'\u2323','smt':'\u2AAA','smte':'\u2AAC','smtes':'\u2AAC\uFE00','softcy':'\u044C','SOFTcy':'\u042C','sol':'/','solb':'\u29C4','solbar':'\u233F','sopf':'\uD835\uDD64','Sopf':'\uD835\uDD4A','spades':'\u2660','spadesuit':'\u2660','spar':'\u2225','sqcap':'\u2293','sqcaps':'\u2293\uFE00','sqcup':'\u2294','sqcups':'\u2294\uFE00','Sqrt':'\u221A','sqsub':'\u228F','sqsube':'\u2291','sqsubset':'\u228F','sqsubseteq':'\u2291','sqsup':'\u2290','sqsupe':'\u2292','sqsupset':'\u2290','sqsupseteq':'\u2292','squ':'\u25A1','square':'\u25A1','Square':'\u25A1','SquareIntersection':'\u2293','SquareSubset':'\u228F','SquareSubsetEqual':'\u2291','SquareSuperset':'\u2290','SquareSupersetEqual':'\u2292','SquareUnion':'\u2294','squarf':'\u25AA','squf':'\u25AA','srarr':'\u2192','sscr':'\uD835\uDCC8','Sscr':'\uD835\uDCAE','ssetmn':'\u2216','ssmile':'\u2323','sstarf':'\u22C6','star':'\u2606','Star':'\u22C6','starf':'\u2605','straightepsilon':'\u03F5','straightphi':'\u03D5','strns':'\xAF','sub':'\u2282','Sub':'\u22D0','subdot':'\u2ABD','sube':'\u2286','subE':'\u2AC5','subedot':'\u2AC3','submult':'\u2AC1','subne':'\u228A','subnE':'\u2ACB','subplus':'\u2ABF','subrarr':'\u2979','subset':'\u2282','Subset':'\u22D0','subseteq':'\u2286','subseteqq':'\u2AC5','SubsetEqual':'\u2286','subsetneq':'\u228A','subsetneqq':'\u2ACB','subsim':'\u2AC7','subsub':'\u2AD5','subsup':'\u2AD3','succ':'\u227B','succapprox':'\u2AB8','succcurlyeq':'\u227D','Succeeds':'\u227B','SucceedsEqual':'\u2AB0','SucceedsSlantEqual':'\u227D','SucceedsTilde':'\u227F','succeq':'\u2AB0','succnapprox':'\u2ABA','succneqq':'\u2AB6','succnsim':'\u22E9','succsim':'\u227F','SuchThat':'\u220B','sum':'\u2211','Sum':'\u2211','sung':'\u266A','sup':'\u2283','Sup':'\u22D1','sup1':'\xB9','sup2':'\xB2','sup3':'\xB3','supdot':'\u2ABE','supdsub':'\u2AD8','supe':'\u2287','supE':'\u2AC6','supedot':'\u2AC4','Superset':'\u2283','SupersetEqual':'\u2287','suphsol':'\u27C9','suphsub':'\u2AD7','suplarr':'\u297B','supmult':'\u2AC2','supne':'\u228B','supnE':'\u2ACC','supplus':'\u2AC0','supset':'\u2283','Supset':'\u22D1','supseteq':'\u2287','supseteqq':'\u2AC6','supsetneq':'\u228B','supsetneqq':'\u2ACC','supsim':'\u2AC8','supsub':'\u2AD4','supsup':'\u2AD6','swarhk':'\u2926','swarr':'\u2199','swArr':'\u21D9','swarrow':'\u2199','swnwar':'\u292A','szlig':'\xDF','Tab':'\t','target':'\u2316','tau':'\u03C4','Tau':'\u03A4','tbrk':'\u23B4','tcaron':'\u0165','Tcaron':'\u0164','tcedil':'\u0163','Tcedil':'\u0162','tcy':'\u0442','Tcy':'\u0422','tdot':'\u20DB','telrec':'\u2315','tfr':'\uD835\uDD31','Tfr':'\uD835\uDD17','there4':'\u2234','therefore':'\u2234','Therefore':'\u2234','theta':'\u03B8','Theta':'\u0398','thetasym':'\u03D1','thetav':'\u03D1','thickapprox':'\u2248','thicksim':'\u223C','ThickSpace':'\u205F\u200A','thinsp':'\u2009','ThinSpace':'\u2009','thkap':'\u2248','thksim':'\u223C','thorn':'\xFE','THORN':'\xDE','tilde':'\u02DC','Tilde':'\u223C','TildeEqual':'\u2243','TildeFullEqual':'\u2245','TildeTilde':'\u2248','times':'\xD7','timesb':'\u22A0','timesbar':'\u2A31','timesd':'\u2A30','tint':'\u222D','toea':'\u2928','top':'\u22A4','topbot':'\u2336','topcir':'\u2AF1','topf':'\uD835\uDD65','Topf':'\uD835\uDD4B','topfork':'\u2ADA','tosa':'\u2929','tprime':'\u2034','trade':'\u2122','TRADE':'\u2122','triangle':'\u25B5','triangledown':'\u25BF','triangleleft':'\u25C3','trianglelefteq':'\u22B4','triangleq':'\u225C','triangleright':'\u25B9','trianglerighteq':'\u22B5','tridot':'\u25EC','trie':'\u225C','triminus':'\u2A3A','TripleDot':'\u20DB','triplus':'\u2A39','trisb':'\u29CD','tritime':'\u2A3B','trpezium':'\u23E2','tscr':'\uD835\uDCC9','Tscr':'\uD835\uDCAF','tscy':'\u0446','TScy':'\u0426','tshcy':'\u045B','TSHcy':'\u040B','tstrok':'\u0167','Tstrok':'\u0166','twixt':'\u226C','twoheadleftarrow':'\u219E','twoheadrightarrow':'\u21A0','uacute':'\xFA','Uacute':'\xDA','uarr':'\u2191','uArr':'\u21D1','Uarr':'\u219F','Uarrocir':'\u2949','ubrcy':'\u045E','Ubrcy':'\u040E','ubreve':'\u016D','Ubreve':'\u016C','ucirc':'\xFB','Ucirc':'\xDB','ucy':'\u0443','Ucy':'\u0423','udarr':'\u21C5','udblac':'\u0171','Udblac':'\u0170','udhar':'\u296E','ufisht':'\u297E','ufr':'\uD835\uDD32','Ufr':'\uD835\uDD18','ugrave':'\xF9','Ugrave':'\xD9','uHar':'\u2963','uharl':'\u21BF','uharr':'\u21BE','uhblk':'\u2580','ulcorn':'\u231C','ulcorner':'\u231C','ulcrop':'\u230F','ultri':'\u25F8','umacr':'\u016B','Umacr':'\u016A','uml':'\xA8','UnderBar':'_','UnderBrace':'\u23DF','UnderBracket':'\u23B5','UnderParenthesis':'\u23DD','Union':'\u22C3','UnionPlus':'\u228E','uogon':'\u0173','Uogon':'\u0172','uopf':'\uD835\uDD66','Uopf':'\uD835\uDD4C','uparrow':'\u2191','Uparrow':'\u21D1','UpArrow':'\u2191','UpArrowBar':'\u2912','UpArrowDownArrow':'\u21C5','updownarrow':'\u2195','Updownarrow':'\u21D5','UpDownArrow':'\u2195','UpEquilibrium':'\u296E','upharpoonleft':'\u21BF','upharpoonright':'\u21BE','uplus':'\u228E','UpperLeftArrow':'\u2196','UpperRightArrow':'\u2197','upsi':'\u03C5','Upsi':'\u03D2','upsih':'\u03D2','upsilon':'\u03C5','Upsilon':'\u03A5','UpTee':'\u22A5','UpTeeArrow':'\u21A5','upuparrows':'\u21C8','urcorn':'\u231D','urcorner':'\u231D','urcrop':'\u230E','uring':'\u016F','Uring':'\u016E','urtri':'\u25F9','uscr':'\uD835\uDCCA','Uscr':'\uD835\uDCB0','utdot':'\u22F0','utilde':'\u0169','Utilde':'\u0168','utri':'\u25B5','utrif':'\u25B4','uuarr':'\u21C8','uuml':'\xFC','Uuml':'\xDC','uwangle':'\u29A7','vangrt':'\u299C','varepsilon':'\u03F5','varkappa':'\u03F0','varnothing':'\u2205','varphi':'\u03D5','varpi':'\u03D6','varpropto':'\u221D','varr':'\u2195','vArr':'\u21D5','varrho':'\u03F1','varsigma':'\u03C2','varsubsetneq':'\u228A\uFE00','varsubsetneqq':'\u2ACB\uFE00','varsupsetneq':'\u228B\uFE00','varsupsetneqq':'\u2ACC\uFE00','vartheta':'\u03D1','vartriangleleft':'\u22B2','vartriangleright':'\u22B3','vBar':'\u2AE8','Vbar':'\u2AEB','vBarv':'\u2AE9','vcy':'\u0432','Vcy':'\u0412','vdash':'\u22A2','vDash':'\u22A8','Vdash':'\u22A9','VDash':'\u22AB','Vdashl':'\u2AE6','vee':'\u2228','Vee':'\u22C1','veebar':'\u22BB','veeeq':'\u225A','vellip':'\u22EE','verbar':'|','Verbar':'\u2016','vert':'|','Vert':'\u2016','VerticalBar':'\u2223','VerticalLine':'|','VerticalSeparator':'\u2758','VerticalTilde':'\u2240','VeryThinSpace':'\u200A','vfr':'\uD835\uDD33','Vfr':'\uD835\uDD19','vltri':'\u22B2','vnsub':'\u2282\u20D2','vnsup':'\u2283\u20D2','vopf':'\uD835\uDD67','Vopf':'\uD835\uDD4D','vprop':'\u221D','vrtri':'\u22B3','vscr':'\uD835\uDCCB','Vscr':'\uD835\uDCB1','vsubne':'\u228A\uFE00','vsubnE':'\u2ACB\uFE00','vsupne':'\u228B\uFE00','vsupnE':'\u2ACC\uFE00','Vvdash':'\u22AA','vzigzag':'\u299A','wcirc':'\u0175','Wcirc':'\u0174','wedbar':'\u2A5F','wedge':'\u2227','Wedge':'\u22C0','wedgeq':'\u2259','weierp':'\u2118','wfr':'\uD835\uDD34','Wfr':'\uD835\uDD1A','wopf':'\uD835\uDD68','Wopf':'\uD835\uDD4E','wp':'\u2118','wr':'\u2240','wreath':'\u2240','wscr':'\uD835\uDCCC','Wscr':'\uD835\uDCB2','xcap':'\u22C2','xcirc':'\u25EF','xcup':'\u22C3','xdtri':'\u25BD','xfr':'\uD835\uDD35','Xfr':'\uD835\uDD1B','xharr':'\u27F7','xhArr':'\u27FA','xi':'\u03BE','Xi':'\u039E','xlarr':'\u27F5','xlArr':'\u27F8','xmap':'\u27FC','xnis':'\u22FB','xodot':'\u2A00','xopf':'\uD835\uDD69','Xopf':'\uD835\uDD4F','xoplus':'\u2A01','xotime':'\u2A02','xrarr':'\u27F6','xrArr':'\u27F9','xscr':'\uD835\uDCCD','Xscr':'\uD835\uDCB3','xsqcup':'\u2A06','xuplus':'\u2A04','xutri':'\u25B3','xvee':'\u22C1','xwedge':'\u22C0','yacute':'\xFD','Yacute':'\xDD','yacy':'\u044F','YAcy':'\u042F','ycirc':'\u0177','Ycirc':'\u0176','ycy':'\u044B','Ycy':'\u042B','yen':'\xA5','yfr':'\uD835\uDD36','Yfr':'\uD835\uDD1C','yicy':'\u0457','YIcy':'\u0407','yopf':'\uD835\uDD6A','Yopf':'\uD835\uDD50','yscr':'\uD835\uDCCE','Yscr':'\uD835\uDCB4','yucy':'\u044E','YUcy':'\u042E','yuml':'\xFF','Yuml':'\u0178','zacute':'\u017A','Zacute':'\u0179','zcaron':'\u017E','Zcaron':'\u017D','zcy':'\u0437','Zcy':'\u0417','zdot':'\u017C','Zdot':'\u017B','zeetrf':'\u2128','ZeroWidthSpace':'\u200B','zeta':'\u03B6','Zeta':'\u0396','zfr':'\uD835\uDD37','Zfr':'\u2128','zhcy':'\u0436','ZHcy':'\u0416','zigrarr':'\u21DD','zopf':'\uD835\uDD6B','Zopf':'\u2124','zscr':'\uD835\uDCCF','Zscr':'\uD835\uDCB5','zwj':'\u200D','zwnj':'\u200C'}; + var decodeMapLegacy = {'aacute':'\xE1','Aacute':'\xC1','acirc':'\xE2','Acirc':'\xC2','acute':'\xB4','aelig':'\xE6','AElig':'\xC6','agrave':'\xE0','Agrave':'\xC0','amp':'&','AMP':'&','aring':'\xE5','Aring':'\xC5','atilde':'\xE3','Atilde':'\xC3','auml':'\xE4','Auml':'\xC4','brvbar':'\xA6','ccedil':'\xE7','Ccedil':'\xC7','cedil':'\xB8','cent':'\xA2','copy':'\xA9','COPY':'\xA9','curren':'\xA4','deg':'\xB0','divide':'\xF7','eacute':'\xE9','Eacute':'\xC9','ecirc':'\xEA','Ecirc':'\xCA','egrave':'\xE8','Egrave':'\xC8','eth':'\xF0','ETH':'\xD0','euml':'\xEB','Euml':'\xCB','frac12':'\xBD','frac14':'\xBC','frac34':'\xBE','gt':'>','GT':'>','iacute':'\xED','Iacute':'\xCD','icirc':'\xEE','Icirc':'\xCE','iexcl':'\xA1','igrave':'\xEC','Igrave':'\xCC','iquest':'\xBF','iuml':'\xEF','Iuml':'\xCF','laquo':'\xAB','lt':'<','LT':'<','macr':'\xAF','micro':'\xB5','middot':'\xB7','nbsp':'\xA0','not':'\xAC','ntilde':'\xF1','Ntilde':'\xD1','oacute':'\xF3','Oacute':'\xD3','ocirc':'\xF4','Ocirc':'\xD4','ograve':'\xF2','Ograve':'\xD2','ordf':'\xAA','ordm':'\xBA','oslash':'\xF8','Oslash':'\xD8','otilde':'\xF5','Otilde':'\xD5','ouml':'\xF6','Ouml':'\xD6','para':'\xB6','plusmn':'\xB1','pound':'\xA3','quot':'"','QUOT':'"','raquo':'\xBB','reg':'\xAE','REG':'\xAE','sect':'\xA7','shy':'\xAD','sup1':'\xB9','sup2':'\xB2','sup3':'\xB3','szlig':'\xDF','thorn':'\xFE','THORN':'\xDE','times':'\xD7','uacute':'\xFA','Uacute':'\xDA','ucirc':'\xFB','Ucirc':'\xDB','ugrave':'\xF9','Ugrave':'\xD9','uml':'\xA8','uuml':'\xFC','Uuml':'\xDC','yacute':'\xFD','Yacute':'\xDD','yen':'\xA5','yuml':'\xFF'}; + var decodeMapNumeric = {'0':'\uFFFD','128':'\u20AC','130':'\u201A','131':'\u0192','132':'\u201E','133':'\u2026','134':'\u2020','135':'\u2021','136':'\u02C6','137':'\u2030','138':'\u0160','139':'\u2039','140':'\u0152','142':'\u017D','145':'\u2018','146':'\u2019','147':'\u201C','148':'\u201D','149':'\u2022','150':'\u2013','151':'\u2014','152':'\u02DC','153':'\u2122','154':'\u0161','155':'\u203A','156':'\u0153','158':'\u017E','159':'\u0178'}; + var invalidReferenceCodePoints = [1,2,3,4,5,6,7,8,11,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,64976,64977,64978,64979,64980,64981,64982,64983,64984,64985,64986,64987,64988,64989,64990,64991,64992,64993,64994,64995,64996,64997,64998,64999,65000,65001,65002,65003,65004,65005,65006,65007,65534,65535,131070,131071,196606,196607,262142,262143,327678,327679,393214,393215,458750,458751,524286,524287,589822,589823,655358,655359,720894,720895,786430,786431,851966,851967,917502,917503,983038,983039,1048574,1048575,1114110,1114111]; + + /*--------------------------------------------------------------------------*/ + + var stringFromCharCode = String.fromCharCode; + + var object = {}; + var hasOwnProperty = object.hasOwnProperty; + var has = function(object, propertyName) { + return hasOwnProperty.call(object, propertyName); + }; + + var contains = function(array, value) { + var index = -1; + var length = array.length; + while (++index < length) { + if (array[index] == value) { + return true; + } + } + return false; + }; + + var merge = function(options, defaults) { + if (!options) { + return defaults; + } + var result = {}; + var key; + for (key in defaults) { + // A `hasOwnProperty` check is not needed here, since only recognized + // option names are used anyway. Any others are ignored. + result[key] = has(options, key) ? options[key] : defaults[key]; + } + return result; + }; + + // Modified version of `ucs2encode`; see https://mths.be/punycode. + var codePointToSymbol = function(codePoint, strict) { + var output = ''; + if ((codePoint >= 0xD800 && codePoint <= 0xDFFF) || codePoint > 0x10FFFF) { + // See issue #4: + // “Otherwise, if the number is in the range 0xD800 to 0xDFFF or is + // greater than 0x10FFFF, then this is a parse error. Return a U+FFFD + // REPLACEMENT CHARACTER.” + if (strict) { + parseError('character reference outside the permissible Unicode range'); + } + return '\uFFFD'; + } + if (has(decodeMapNumeric, codePoint)) { + if (strict) { + parseError('disallowed character reference'); + } + return decodeMapNumeric[codePoint]; + } + if (strict && contains(invalidReferenceCodePoints, codePoint)) { + parseError('disallowed character reference'); + } + if (codePoint > 0xFFFF) { + codePoint -= 0x10000; + output += stringFromCharCode(codePoint >>> 10 & 0x3FF | 0xD800); + codePoint = 0xDC00 | codePoint & 0x3FF; + } + output += stringFromCharCode(codePoint); + return output; + }; + + var hexEscape = function(codePoint) { + return '&#x' + codePoint.toString(16).toUpperCase() + ';'; + }; + + var decEscape = function(codePoint) { + return '&#' + codePoint + ';'; + }; + + var parseError = function(message) { + throw Error('Parse error: ' + message); + }; + + /*--------------------------------------------------------------------------*/ + + var encode = function(string, options) { + options = merge(options, encode.options); + var strict = options.strict; + if (strict && regexInvalidRawCodePoint.test(string)) { + parseError('forbidden code point'); + } + var encodeEverything = options.encodeEverything; + var useNamedReferences = options.useNamedReferences; + var allowUnsafeSymbols = options.allowUnsafeSymbols; + var escapeCodePoint = options.decimal ? decEscape : hexEscape; + + var escapeBmpSymbol = function(symbol) { + return escapeCodePoint(symbol.charCodeAt(0)); + }; + + if (encodeEverything) { + // Encode ASCII symbols. + string = string.replace(regexAsciiWhitelist, function(symbol) { + // Use named references if requested & possible. + if (useNamedReferences && has(encodeMap, symbol)) { + return '&' + encodeMap[symbol] + ';'; + } + return escapeBmpSymbol(symbol); + }); + // Shorten a few escapes that represent two symbols, of which at least one + // is within the ASCII range. + if (useNamedReferences) { + string = string + .replace(/>\u20D2/g, '>⃒') + .replace(/<\u20D2/g, '<⃒') + .replace(/fj/g, 'fj'); + } + // Encode non-ASCII symbols. + if (useNamedReferences) { + // Encode non-ASCII symbols that can be replaced with a named reference. + string = string.replace(regexEncodeNonAscii, function(string) { + // Note: there is no need to check `has(encodeMap, string)` here. + return '&' + encodeMap[string] + ';'; + }); + } + // Note: any remaining non-ASCII symbols are handled outside of the `if`. + } else if (useNamedReferences) { + // Apply named character references. + // Encode `<>"'&` using named character references. + if (!allowUnsafeSymbols) { + string = string.replace(regexEscape, function(string) { + return '&' + encodeMap[string] + ';'; // no need to check `has()` here + }); + } + // Shorten escapes that represent two symbols, of which at least one is + // `<>"'&`. + string = string + .replace(/>\u20D2/g, '>⃒') + .replace(/<\u20D2/g, '<⃒'); + // Encode non-ASCII symbols that can be replaced with a named reference. + string = string.replace(regexEncodeNonAscii, function(string) { + // Note: there is no need to check `has(encodeMap, string)` here. + return '&' + encodeMap[string] + ';'; + }); + } else if (!allowUnsafeSymbols) { + // Encode `<>"'&` using hexadecimal escapes, now that they’re not handled + // using named character references. + string = string.replace(regexEscape, escapeBmpSymbol); + } + return string + // Encode astral symbols. + .replace(regexAstralSymbols, function($0) { + // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae + var high = $0.charCodeAt(0); + var low = $0.charCodeAt(1); + var codePoint = (high - 0xD800) * 0x400 + low - 0xDC00 + 0x10000; + return escapeCodePoint(codePoint); + }) + // Encode any remaining BMP symbols that are not printable ASCII symbols + // using a hexadecimal escape. + .replace(regexBmpWhitelist, escapeBmpSymbol); + }; + // Expose default options (so they can be overridden globally). + encode.options = { + 'allowUnsafeSymbols': false, + 'encodeEverything': false, + 'strict': false, + 'useNamedReferences': false, + 'decimal' : false + }; + + var decode = function(html, options) { + options = merge(options, decode.options); + var strict = options.strict; + if (strict && regexInvalidEntity.test(html)) { + parseError('malformed character reference'); + } + return html.replace(regexDecode, function($0, $1, $2, $3, $4, $5, $6, $7, $8) { + var codePoint; + var semicolon; + var decDigits; + var hexDigits; + var reference; + var next; + + if ($1) { + reference = $1; + // Note: there is no need to check `has(decodeMap, reference)`. + return decodeMap[reference]; + } + + if ($2) { + // Decode named character references without trailing `;`, e.g. `&`. + // This is only a parse error if it gets converted to `&`, or if it is + // followed by `=` in an attribute context. + reference = $2; + next = $3; + if (next && options.isAttributeValue) { + if (strict && next == '=') { + parseError('`&` did not start a character reference'); + } + return $0; + } else { + if (strict) { + parseError( + 'named character reference was not terminated by a semicolon' + ); + } + // Note: there is no need to check `has(decodeMapLegacy, reference)`. + return decodeMapLegacy[reference] + (next || ''); + } + } + + if ($4) { + // Decode decimal escapes, e.g. `𝌆`. + decDigits = $4; + semicolon = $5; + if (strict && !semicolon) { + parseError('character reference was not terminated by a semicolon'); + } + codePoint = parseInt(decDigits, 10); + return codePointToSymbol(codePoint, strict); + } + + if ($6) { + // Decode hexadecimal escapes, e.g. `𝌆`. + hexDigits = $6; + semicolon = $7; + if (strict && !semicolon) { + parseError('character reference was not terminated by a semicolon'); + } + codePoint = parseInt(hexDigits, 16); + return codePointToSymbol(codePoint, strict); + } + + // If we’re still here, `if ($7)` is implied; it’s an ambiguous + // ampersand for sure. https://mths.be/notes/ambiguous-ampersands + if (strict) { + parseError( + 'named character reference was not terminated by a semicolon' + ); + } + return $0; + }); + }; + // Expose default options (so they can be overridden globally). + decode.options = { + 'isAttributeValue': false, + 'strict': false + }; + + var escape = function(string) { + return string.replace(regexEscape, function($0) { + // Note: there is no need to check `has(escapeMap, $0)` here. + return escapeMap[$0]; + }); + }; + + /*--------------------------------------------------------------------------*/ + + var he = { + 'version': '1.2.0', + 'encode': encode, + 'decode': decode, + 'escape': escape, + 'unescape': decode + }; + + // Some AMD build optimizers, like r.js, check for specific condition patterns + // like the following: + if (freeExports && !freeExports.nodeType) { + if (freeModule) { // in Node.js, io.js, or RingoJS v0.8.0+ + freeModule.exports = he; + } else { // in Narwhal or RingoJS v0.7.0- + for (var key in he) { + has(he, key) && (freeExports[key] = he[key]); + } + } + } else { // in Rhino or a web browser + root.he = he; + } + + }(commonjsGlobal)); +} (he$1, he$1.exports)); + +var heExports = he$1.exports; + +Object.defineProperty(build, '__esModule', { value: true }); + +var deindent = deIndent; +var he = heExports; + +function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } + +var deindent__default = /*#__PURE__*/_interopDefaultLegacy(deindent); +var he__default = /*#__PURE__*/_interopDefaultLegacy(he); + +const emptyObject = Object.freeze({}); +const isArray$1 = Array.isArray; +// These helpers produce better VM code in JS engines due to their +// explicitness and function inlining. +function isUndef(v) { + return v === undefined || v === null; +} +function isDef(v) { + return v !== undefined && v !== null; +} +function isTrue(v) { + return v === true; +} +function isFalse(v) { + return v === false; +} +/** + * Check if value is primitive. + */ +function isPrimitive(value) { + return (typeof value === 'string' || + typeof value === 'number' || + // $flow-disable-line + typeof value === 'symbol' || + typeof value === 'boolean'); +} +function isFunction(value) { + return typeof value === 'function'; +} +/** + * Quick object check - this is primarily used to tell + * objects from primitive values when we know the value + * is a JSON-compliant type. + */ +function isObject$1(obj) { + return obj !== null && typeof obj === 'object'; +} +/** + * Get the raw type string of a value, e.g., [object Object]. + */ +const _toString = Object.prototype.toString; +function toRawType(value) { + return _toString.call(value).slice(8, -1); +} +/** + * Strict object type check. Only returns true + * for plain JavaScript objects. + */ +function isPlainObject(obj) { + return _toString.call(obj) === '[object Object]'; +} +/** + * Check if val is a valid array index. + */ +function isValidArrayIndex(val) { + const n = parseFloat(String(val)); + return n >= 0 && Math.floor(n) === n && isFinite(val); +} +function isPromise(val) { + return (isDef(val) && + typeof val.then === 'function' && + typeof val.catch === 'function'); +} +/** + * Convert a value to a string that is actually rendered. + */ +function toString(val) { + return val == null + ? '' + : Array.isArray(val) || (isPlainObject(val) && val.toString === _toString) + ? JSON.stringify(val, null, 2) + : String(val); +} +/** + * Convert an input value to a number for persistence. + * If the conversion fails, return original string. + */ +function toNumber(val) { + const n = parseFloat(val); + return isNaN(n) ? val : n; +} +/** + * Make a map and return a function for checking if a key + * is in that map. + */ +function makeMap(str, expectsLowerCase) { + const map = Object.create(null); + const list = str.split(','); + for (let i = 0; i < list.length; i++) { + map[list[i]] = true; + } + return expectsLowerCase ? val => map[val.toLowerCase()] : val => map[val]; +} +/** + * Check if a tag is a built-in tag. + */ +const isBuiltInTag = makeMap('slot,component', true); +/** + * Check if an attribute is a reserved attribute. + */ +const isReservedAttribute = makeMap('key,ref,slot,slot-scope,is'); +/** + * Check whether an object has the property. + */ +const hasOwnProperty = Object.prototype.hasOwnProperty; +function hasOwn(obj, key) { + return hasOwnProperty.call(obj, key); +} +/** + * Create a cached version of a pure function. + */ +function cached(fn) { + const cache = Object.create(null); + return function cachedFn(str) { + const hit = cache[str]; + return hit || (cache[str] = fn(str)); + }; +} +/** + * Camelize a hyphen-delimited string. + */ +const camelizeRE = /-(\w)/g; +const camelize = cached((str) => { + return str.replace(camelizeRE, (_, c) => (c ? c.toUpperCase() : '')); +}); +/** + * Capitalize a string. + */ +const capitalize = cached((str) => { + return str.charAt(0).toUpperCase() + str.slice(1); +}); +/** + * Hyphenate a camelCase string. + */ +const hyphenateRE = /\B([A-Z])/g; +const hyphenate = cached((str) => { + return str.replace(hyphenateRE, '-$1').toLowerCase(); +}); +/** + * Mix properties into target object. + */ +function extend(to, _from) { + for (const key in _from) { + to[key] = _from[key]; + } + return to; +} +/** + * Merge an Array of Objects into a single Object. + */ +function toObject(arr) { + const res = {}; + for (let i = 0; i < arr.length; i++) { + if (arr[i]) { + extend(res, arr[i]); + } + } + return res; +} +/* eslint-disable no-unused-vars */ +/** + * Perform no operation. + * Stubbing args to make Flow happy without leaving useless transpiled code + * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/). + */ +function noop(a, b, c) { } +/** + * Always return false. + */ +const no = (a, b, c) => false; +/* eslint-enable no-unused-vars */ +/** + * Return the same value. + */ +const identity$1 = (_) => _; +/** + * Generate a string containing static keys from compiler modules. + */ +function genStaticKeys$1(modules) { + return modules + .reduce((keys, m) => keys.concat(m.staticKeys || []), []) + .join(','); +} +/** + * Check if two values are loosely equal - that is, + * if they are plain objects, do they have the same shape? + */ +function looseEqual(a, b) { + if (a === b) + return true; + const isObjectA = isObject$1(a); + const isObjectB = isObject$1(b); + if (isObjectA && isObjectB) { + try { + const isArrayA = Array.isArray(a); + const isArrayB = Array.isArray(b); + if (isArrayA && isArrayB) { + return (a.length === b.length && + a.every((e, i) => { + return looseEqual(e, b[i]); + })); + } + else if (a instanceof Date && b instanceof Date) { + return a.getTime() === b.getTime(); + } + else if (!isArrayA && !isArrayB) { + const keysA = Object.keys(a); + const keysB = Object.keys(b); + return (keysA.length === keysB.length && + keysA.every(key => { + return looseEqual(a[key], b[key]); + })); + } + else { + /* istanbul ignore next */ + return false; + } + } + catch (e) { + /* istanbul ignore next */ + return false; + } + } + else if (!isObjectA && !isObjectB) { + return String(a) === String(b); + } + else { + return false; + } +} +/** + * Return the first index at which a loosely equal value can be + * found in the array (if value is a plain object, the array must + * contain an object of the same shape), or -1 if it is not present. + */ +function looseIndexOf(arr, val) { + for (let i = 0; i < arr.length; i++) { + if (looseEqual(arr[i], val)) + return i; + } + return -1; +} +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is#polyfill +function hasChanged(x, y) { + if (x === y) { + return x === 0 && 1 / x !== 1 / y; + } + else { + return x === x || y === y; + } +} + +const isUnaryTag = makeMap('area,base,br,col,embed,frame,hr,img,input,isindex,keygen,' + + 'link,meta,param,source,track,wbr'); +// Elements that you can, intentionally, leave open +// (and which close themselves) +const canBeLeftOpenTag = makeMap('colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source'); +// HTML5 tags https://html.spec.whatwg.org/multipage/indices.html#elements-3 +// Phrasing Content https://html.spec.whatwg.org/multipage/dom.html#phrasing-content +const isNonPhrasingTag = makeMap('address,article,aside,base,blockquote,body,caption,col,colgroup,dd,' + + 'details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,' + + 'h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,' + + 'optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,' + + 'title,tr,track'); + +/** + * unicode letters used for parsing html tags, component names and property paths. + * using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname + * skipping \u10000-\uEFFFF due to it freezing up PhantomJS + */ +const unicodeRegExp = /a-zA-Z\u00B7\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u037D\u037F-\u1FFF\u200C-\u200D\u203F-\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD/; +/** + * Define a property. + */ +function def(obj, key, val, enumerable) { + Object.defineProperty(obj, key, { + value: val, + enumerable: !!enumerable, + writable: true, + configurable: true + }); +} + +/** + * Not type-checking this file because it's mostly vendor code. + */ +// Regular Expressions for parsing tags and attributes +const attribute = /^\s*([^\s"'<>\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/; +const dynamicArgAttribute = /^\s*((?:v-[\w-]+:|@|:|#)\[[^=]+?\][^\s"'<>\/=]*)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/; +const ncname = `[a-zA-Z_][\\-\\.0-9_a-zA-Z${unicodeRegExp.source}]*`; +const qnameCapture = `((?:${ncname}\\:)?${ncname})`; +const startTagOpen = new RegExp(`^<${qnameCapture}`); +const startTagClose = /^\s*(\/?)>/; +const endTag = new RegExp(`^<\\/${qnameCapture}[^>]*>`); +const doctype = /^<!DOCTYPE [^>]+>/i; +// #7298: escape - to avoid being passed as HTML comment when inlined in page +const comment = /^<!\--/; +const conditionalComment = /^<!\[/; +// Special Elements (can contain anything) +const isPlainTextElement = makeMap('script,style,textarea', true); +const reCache = {}; +const decodingMap = { + '<': '<', + '>': '>', + '"': '"', + '&': '&', + ' ': '\n', + ' ': '\t', + ''': "'" +}; +const encodedAttr = /&(?:lt|gt|quot|amp|#39);/g; +const encodedAttrWithNewLines = /&(?:lt|gt|quot|amp|#39|#10|#9);/g; +// #5992 +const isIgnoreNewlineTag = makeMap('pre,textarea', true); +const shouldIgnoreFirstNewline = (tag, html) => tag && isIgnoreNewlineTag(tag) && html[0] === '\n'; +function decodeAttr(value, shouldDecodeNewlines) { + const re = shouldDecodeNewlines ? encodedAttrWithNewLines : encodedAttr; + return value.replace(re, match => decodingMap[match]); +} +function parseHTML(html, options) { + const stack = []; + const expectHTML = options.expectHTML; + const isUnaryTag = options.isUnaryTag || no; + const canBeLeftOpenTag = options.canBeLeftOpenTag || no; + let index = 0; + let last, lastTag; + while (html) { + last = html; + // Make sure we're not in a plaintext content element like script/style + if (!lastTag || !isPlainTextElement(lastTag)) { + let textEnd = html.indexOf('<'); + if (textEnd === 0) { + // Comment: + if (comment.test(html)) { + const commentEnd = html.indexOf('-->'); + if (commentEnd >= 0) { + if (options.shouldKeepComment && options.comment) { + options.comment(html.substring(4, commentEnd), index, index + commentEnd + 3); + } + advance(commentEnd + 3); + continue; + } + } + // https://en.wikipedia.org/wiki/Conditional_comment#Downlevel-revealed_conditional_comment + if (conditionalComment.test(html)) { + const conditionalEnd = html.indexOf(']>'); + if (conditionalEnd >= 0) { + advance(conditionalEnd + 2); + continue; + } + } + // Doctype: + const doctypeMatch = html.match(doctype); + if (doctypeMatch) { + advance(doctypeMatch[0].length); + continue; + } + // End tag: + const endTagMatch = html.match(endTag); + if (endTagMatch) { + const curIndex = index; + advance(endTagMatch[0].length); + parseEndTag(endTagMatch[1], curIndex, index); + continue; + } + // Start tag: + const startTagMatch = parseStartTag(); + if (startTagMatch) { + handleStartTag(startTagMatch); + if (shouldIgnoreFirstNewline(startTagMatch.tagName, html)) { + advance(1); + } + continue; + } + } + let text, rest, next; + if (textEnd >= 0) { + rest = html.slice(textEnd); + while (!endTag.test(rest) && + !startTagOpen.test(rest) && + !comment.test(rest) && + !conditionalComment.test(rest)) { + // < in plain text, be forgiving and treat it as text + next = rest.indexOf('<', 1); + if (next < 0) + break; + textEnd += next; + rest = html.slice(textEnd); + } + text = html.substring(0, textEnd); + } + if (textEnd < 0) { + text = html; + } + if (text) { + advance(text.length); + } + if (options.chars && text) { + options.chars(text, index - text.length, index); + } + } + else { + let endTagLength = 0; + const stackedTag = lastTag.toLowerCase(); + const reStackedTag = reCache[stackedTag] || + (reCache[stackedTag] = new RegExp('([\\s\\S]*?)(</' + stackedTag + '[^>]*>)', 'i')); + const rest = html.replace(reStackedTag, function (all, text, endTag) { + endTagLength = endTag.length; + if (!isPlainTextElement(stackedTag) && stackedTag !== 'noscript') { + text = text + .replace(/<!\--([\s\S]*?)-->/g, '$1') // #7298 + .replace(/<!\[CDATA\[([\s\S]*?)]]>/g, '$1'); + } + if (shouldIgnoreFirstNewline(stackedTag, text)) { + text = text.slice(1); + } + if (options.chars) { + options.chars(text); + } + return ''; + }); + index += html.length - rest.length; + html = rest; + parseEndTag(stackedTag, index - endTagLength, index); + } + if (html === last) { + options.chars && options.chars(html); + break; + } + } + // Clean up any remaining tags + parseEndTag(); + function advance(n) { + index += n; + html = html.substring(n); + } + function parseStartTag() { + const start = html.match(startTagOpen); + if (start) { + const match = { + tagName: start[1], + attrs: [], + start: index + }; + advance(start[0].length); + let end, attr; + while (!(end = html.match(startTagClose)) && + (attr = html.match(dynamicArgAttribute) || html.match(attribute))) { + attr.start = index; + advance(attr[0].length); + attr.end = index; + match.attrs.push(attr); + } + if (end) { + match.unarySlash = end[1]; + advance(end[0].length); + match.end = index; + return match; + } + } + } + function handleStartTag(match) { + const tagName = match.tagName; + const unarySlash = match.unarySlash; + if (expectHTML) { + if (lastTag === 'p' && isNonPhrasingTag(tagName)) { + parseEndTag(lastTag); + } + if (canBeLeftOpenTag(tagName) && lastTag === tagName) { + parseEndTag(tagName); + } + } + const unary = isUnaryTag(tagName) || !!unarySlash; + const l = match.attrs.length; + const attrs = new Array(l); + for (let i = 0; i < l; i++) { + const args = match.attrs[i]; + const value = args[3] || args[4] || args[5] || ''; + const shouldDecodeNewlines = tagName === 'a' && args[1] === 'href' + ? options.shouldDecodeNewlinesForHref + : options.shouldDecodeNewlines; + attrs[i] = { + name: args[1], + value: decodeAttr(value, shouldDecodeNewlines) + }; + } + if (!unary) { + stack.push({ + tag: tagName, + lowerCasedTag: tagName.toLowerCase(), + attrs: attrs, + start: match.start, + end: match.end + }); + lastTag = tagName; + } + if (options.start) { + options.start(tagName, attrs, unary, match.start, match.end); + } + } + function parseEndTag(tagName, start, end) { + let pos, lowerCasedTagName; + if (start == null) + start = index; + if (end == null) + end = index; + // Find the closest opened tag of the same type + if (tagName) { + lowerCasedTagName = tagName.toLowerCase(); + for (pos = stack.length - 1; pos >= 0; pos--) { + if (stack[pos].lowerCasedTag === lowerCasedTagName) { + break; + } + } + } + else { + // If no tag name is provided, clean shop + pos = 0; + } + if (pos >= 0) { + // Close all the open elements, up the stack + for (let i = stack.length - 1; i >= pos; i--) { + if (options.end) { + options.end(stack[i].tag, start, end); + } + } + // Remove the open elements from the stack + stack.length = pos; + lastTag = pos && stack[pos - 1].tag; + } + else if (lowerCasedTagName === 'br') { + if (options.start) { + options.start(tagName, [], true, start, end); + } + } + else if (lowerCasedTagName === 'p') { + if (options.start) { + options.start(tagName, [], false, start, end); + } + if (options.end) { + options.end(tagName, start, end); + } + } + } +} + +const DEFAULT_FILENAME = 'anonymous.vue'; +const splitRE = /\r?\n/g; +const replaceRE = /./g; +const isSpecialTag = makeMap('script,style,template', true); +/** + * Parse a single-file component (*.vue) file into an SFC Descriptor Object. + */ +function parseComponent(source, options = {}) { + const sfc = { + source, + filename: DEFAULT_FILENAME, + template: null, + script: null, + scriptSetup: null, + styles: [], + customBlocks: [], + cssVars: [], + errors: [], + shouldForceReload: null // attached in parse() by compiler-sfc + }; + let depth = 0; + let currentBlock = null; + let warn = msg => { + sfc.errors.push(msg); + }; + function start(tag, attrs, unary, start, end) { + if (depth === 0) { + currentBlock = { + type: tag, + content: '', + start: end, + end: 0, + attrs: attrs.reduce((cumulated, { name, value }) => { + cumulated[name] = value || true; + return cumulated; + }, {}) + }; + if (typeof currentBlock.attrs.src === 'string') { + currentBlock.src = currentBlock.attrs.src; + } + if (isSpecialTag(tag)) { + checkAttrs(currentBlock, attrs); + if (tag === 'script') { + const block = currentBlock; + if (block.attrs.setup) { + block.setup = currentBlock.attrs.setup; + sfc.scriptSetup = block; + } + else { + sfc.script = block; + } + } + else if (tag === 'style') { + sfc.styles.push(currentBlock); + } + else { + sfc[tag] = currentBlock; + } + } + else { + // custom blocks + sfc.customBlocks.push(currentBlock); + } + } + if (!unary) { + depth++; + } + } + function checkAttrs(block, attrs) { + for (let i = 0; i < attrs.length; i++) { + const attr = attrs[i]; + if (attr.name === 'lang') { + block.lang = attr.value; + } + if (attr.name === 'scoped') { + block.scoped = true; + } + if (attr.name === 'module') { + block.module = attr.value || true; + } + } + } + function end(tag, start) { + if (depth === 1 && currentBlock) { + currentBlock.end = start; + let text = source.slice(currentBlock.start, currentBlock.end); + if (options.deindent === true || + // by default, deindent unless it's script with default lang or (j/t)sx? + (options.deindent !== false && + !(currentBlock.type === 'script' && + (!currentBlock.lang || /^(j|t)sx?$/.test(currentBlock.lang))))) { + text = deindent__default["default"](text); + } + // pad content so that linters and pre-processors can output correct + // line numbers in errors and warnings + if (currentBlock.type !== 'template' && options.pad) { + text = padContent(currentBlock, options.pad) + text; + } + currentBlock.content = text; + currentBlock = null; + } + depth--; + } + function padContent(block, pad) { + if (pad === 'space') { + return source.slice(0, block.start).replace(replaceRE, ' '); + } + else { + const offset = source.slice(0, block.start).split(splitRE).length; + const padChar = block.type === 'script' && !block.lang ? '//\n' : '\n'; + return Array(offset).join(padChar); + } + } + parseHTML(source, { + warn, + start, + end, + outputSourceRange: options.outputSourceRange + }); + return sfc; +} + +// can we use __proto__? +const hasProto = '__proto__' in {}; +// Browser environment sniffing +const inBrowser = typeof window !== 'undefined'; +const UA = inBrowser && window.navigator.userAgent.toLowerCase(); +const isIE = UA && /msie|trident/.test(UA); +UA && UA.indexOf('msie 9.0') > 0; +UA && UA.indexOf('edge/') > 0; +UA && UA.indexOf('android') > 0; +UA && UA.match(/firefox\/(\d+)/); +// Firefox has a "watch" function on Object.prototype... +// @ts-expect-error firebox support +const nativeWatch = {}.watch; +let supportsPassive = false; +if (inBrowser) { + try { + const opts = {}; + Object.defineProperty(opts, 'passive', { + get() { + /* istanbul ignore next */ + supportsPassive = true; + } + }); // https://github.com/facebook/flow/issues/285 + window.addEventListener('test-passive', null, opts); + } + catch (e) { } +} +// this needs to be lazy-evaled because vue may be required before +// vue-server-renderer can set VUE_ENV +let _isServer; +const isServerRendering = () => { + if (_isServer === undefined) { + /* istanbul ignore if */ + if (!inBrowser && typeof commonjsGlobal !== 'undefined') { + // detect presence of vue-server-renderer and avoid + // Webpack shimming the process + _isServer = + commonjsGlobal['process'] && commonjsGlobal['process'].env.VUE_ENV === 'server'; + } + else { + _isServer = false; + } + } + return _isServer; +}; +/* istanbul ignore next */ +function isNative(Ctor) { + return typeof Ctor === 'function' && /native code/.test(Ctor.toString()); +} +const hasSymbol = typeof Symbol !== 'undefined' && + isNative(Symbol) && + typeof Reflect !== 'undefined' && + isNative(Reflect.ownKeys); +let _Set; // $flow-disable-line +/* istanbul ignore if */ if (typeof Set !== 'undefined' && isNative(Set)) { + // use native Set when available. + _Set = Set; +} +else { + // a non-standard Set polyfill that only works with primitive keys. + _Set = class Set { + constructor() { + this.set = Object.create(null); + } + has(key) { + return this.set[key] === true; + } + add(key) { + this.set[key] = true; + } + clear() { + this.set = Object.create(null); + } + }; +} + +const ASSET_TYPES = ['component', 'directive', 'filter']; +const LIFECYCLE_HOOKS = [ + 'beforeCreate', + 'created', + 'beforeMount', + 'mounted', + 'beforeUpdate', + 'updated', + 'beforeDestroy', + 'destroyed', + 'activated', + 'deactivated', + 'errorCaptured', + 'serverPrefetch', + 'renderTracked', + 'renderTriggered' +]; + +var config = { + /** + * Option merge strategies (used in core/util/options) + */ + // $flow-disable-line + optionMergeStrategies: Object.create(null), + /** + * Whether to suppress warnings. + */ + silent: false, + /** + * Show production mode tip message on boot? + */ + productionTip: "production" !== 'production', + /** + * Whether to enable devtools + */ + devtools: "production" !== 'production', + /** + * Whether to record perf + */ + performance: false, + /** + * Error handler for watcher errors + */ + errorHandler: null, + /** + * Warn handler for watcher warns + */ + warnHandler: null, + /** + * Ignore certain custom elements + */ + ignoredElements: [], + /** + * Custom user key aliases for v-on + */ + // $flow-disable-line + keyCodes: Object.create(null), + /** + * Check if a tag is reserved so that it cannot be registered as a + * component. This is platform-dependent and may be overwritten. + */ + isReservedTag: no, + /** + * Check if an attribute is reserved so that it cannot be used as a component + * prop. This is platform-dependent and may be overwritten. + */ + isReservedAttr: no, + /** + * Check if a tag is an unknown element. + * Platform-dependent. + */ + isUnknownElement: no, + /** + * Get the namespace of an element + */ + getTagNamespace: noop, + /** + * Parse the real tag name for the specific platform. + */ + parsePlatformTagName: identity$1, + /** + * Check if an attribute must be bound using property, e.g. value + * Platform-dependent. + */ + mustUseProp: no, + /** + * Perform updates asynchronously. Intended to be used by Vue Test Utils + * This will significantly reduce performance if set to false. + */ + async: true, + /** + * Exposed for legacy reasons + */ + _lifecycleHooks: LIFECYCLE_HOOKS +}; + +let currentInstance = null; +/** + * @internal + */ +function setCurrentInstance(vm = null) { + if (!vm) + currentInstance && currentInstance._scope.off(); + currentInstance = vm; + vm && vm._scope.on(); +} + +/** + * @internal + */ +class VNode { + constructor(tag, data, children, text, elm, context, componentOptions, asyncFactory) { + this.tag = tag; + this.data = data; + this.children = children; + this.text = text; + this.elm = elm; + this.ns = undefined; + this.context = context; + this.fnContext = undefined; + this.fnOptions = undefined; + this.fnScopeId = undefined; + this.key = data && data.key; + this.componentOptions = componentOptions; + this.componentInstance = undefined; + this.parent = undefined; + this.raw = false; + this.isStatic = false; + this.isRootInsert = true; + this.isComment = false; + this.isCloned = false; + this.isOnce = false; + this.asyncFactory = asyncFactory; + this.asyncMeta = undefined; + this.isAsyncPlaceholder = false; + } + // DEPRECATED: alias for componentInstance for backwards compat. + /* istanbul ignore next */ + get child() { + return this.componentInstance; + } +} +const createEmptyVNode = (text = '') => { + const node = new VNode(); + node.text = text; + node.isComment = true; + return node; +}; +function createTextVNode(val) { + return new VNode(undefined, undefined, undefined, String(val)); +} +// optimized shallow clone +// used for static nodes and slot nodes because they may be reused across +// multiple renders, cloning them avoids errors when DOM manipulations rely +// on their elm reference. +function cloneVNode(vnode) { + const cloned = new VNode(vnode.tag, vnode.data, + // #7975 + // clone children array to avoid mutating original in case of cloning + // a child. + vnode.children && vnode.children.slice(), vnode.text, vnode.elm, vnode.context, vnode.componentOptions, vnode.asyncFactory); + cloned.ns = vnode.ns; + cloned.isStatic = vnode.isStatic; + cloned.key = vnode.key; + cloned.isComment = vnode.isComment; + cloned.fnContext = vnode.fnContext; + cloned.fnOptions = vnode.fnOptions; + cloned.fnScopeId = vnode.fnScopeId; + cloned.asyncMeta = vnode.asyncMeta; + cloned.isCloned = true; + return cloned; +} + +let uid = 0; +/** + * A dep is an observable that can have multiple + * directives subscribing to it. + * @internal + */ +class Dep { + constructor() { + // pending subs cleanup + this._pending = false; + this.id = uid++; + this.subs = []; + } + addSub(sub) { + this.subs.push(sub); + } + removeSub(sub) { + // #12696 deps with massive amount of subscribers are extremely slow to + // clean up in Chromium + // to workaround this, we unset the sub for now, and clear them on + // next scheduler flush. + this.subs[this.subs.indexOf(sub)] = null; + if (!this._pending) { + this._pending = true; + } + } + depend(info) { + if (Dep.target) { + Dep.target.addDep(this); + } + } + notify(info) { + // stabilize the subscriber list first + const subs = this.subs.filter(s => s); + for (let i = 0, l = subs.length; i < l; i++) { + const sub = subs[i]; + sub.update(); + } + } +} +// The current target watcher being evaluated. +// This is globally unique because only one watcher +// can be evaluated at a time. +Dep.target = null; +const targetStack = []; +function pushTarget(target) { + targetStack.push(target); + Dep.target = target; +} +function popTarget() { + targetStack.pop(); + Dep.target = targetStack[targetStack.length - 1]; +} + +/* + * not type checking this file because flow doesn't play well with + * dynamically accessing methods on Array prototype + */ +const arrayProto = Array.prototype; +const arrayMethods = Object.create(arrayProto); +const methodsToPatch = [ + 'push', + 'pop', + 'shift', + 'unshift', + 'splice', + 'sort', + 'reverse' +]; +/** + * Intercept mutating methods and emit events + */ +methodsToPatch.forEach(function (method) { + // cache original method + const original = arrayProto[method]; + def(arrayMethods, method, function mutator(...args) { + const result = original.apply(this, args); + const ob = this.__ob__; + let inserted; + switch (method) { + case 'push': + case 'unshift': + inserted = args; + break; + case 'splice': + inserted = args.slice(2); + break; + } + if (inserted) + ob.observeArray(inserted); + // notify change + { + ob.dep.notify(); + } + return result; + }); +}); + +const arrayKeys = Object.getOwnPropertyNames(arrayMethods); +const NO_INITIAL_VALUE = {}; +/** + * In some cases we may want to disable observation inside a component's + * update computation. + */ +let shouldObserve = true; +function toggleObserving(value) { + shouldObserve = value; +} +// ssr mock dep +const mockDep = { + notify: noop, + depend: noop, + addSub: noop, + removeSub: noop +}; +/** + * Observer class that is attached to each observed + * object. Once attached, the observer converts the target + * object's property keys into getter/setters that + * collect dependencies and dispatch updates. + */ +class Observer { + constructor(value, shallow = false, mock = false) { + this.value = value; + this.shallow = shallow; + this.mock = mock; + // this.value = value + this.dep = mock ? mockDep : new Dep(); + this.vmCount = 0; + def(value, '__ob__', this); + if (isArray$1(value)) { + if (!mock) { + if (hasProto) { + value.__proto__ = arrayMethods; + /* eslint-enable no-proto */ + } + else { + for (let i = 0, l = arrayKeys.length; i < l; i++) { + const key = arrayKeys[i]; + def(value, key, arrayMethods[key]); + } + } + } + if (!shallow) { + this.observeArray(value); + } + } + else { + /** + * Walk through all properties and convert them into + * getter/setters. This method should only be called when + * value type is Object. + */ + const keys = Object.keys(value); + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + defineReactive(value, key, NO_INITIAL_VALUE, undefined, shallow, mock); + } + } + } + /** + * Observe a list of Array items. + */ + observeArray(value) { + for (let i = 0, l = value.length; i < l; i++) { + observe(value[i], false, this.mock); + } + } +} +// helpers +/** + * Attempt to create an observer instance for a value, + * returns the new observer if successfully observed, + * or the existing observer if the value already has one. + */ +function observe(value, shallow, ssrMockReactivity) { + if (value && hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) { + return value.__ob__; + } + if (shouldObserve && + (ssrMockReactivity || !isServerRendering()) && + (isArray$1(value) || isPlainObject(value)) && + Object.isExtensible(value) && + !value.__v_skip /* ReactiveFlags.SKIP */ && + !isRef(value) && + !(value instanceof VNode)) { + return new Observer(value, shallow, ssrMockReactivity); + } +} +/** + * Define a reactive property on an Object. + */ +function defineReactive(obj, key, val, customSetter, shallow, mock) { + const dep = new Dep(); + const property = Object.getOwnPropertyDescriptor(obj, key); + if (property && property.configurable === false) { + return; + } + // cater for pre-defined getter/setters + const getter = property && property.get; + const setter = property && property.set; + if ((!getter || setter) && + (val === NO_INITIAL_VALUE || arguments.length === 2)) { + val = obj[key]; + } + let childOb = !shallow && observe(val, false, mock); + Object.defineProperty(obj, key, { + enumerable: true, + configurable: true, + get: function reactiveGetter() { + const value = getter ? getter.call(obj) : val; + if (Dep.target) { + { + dep.depend(); + } + if (childOb) { + childOb.dep.depend(); + if (isArray$1(value)) { + dependArray(value); + } + } + } + return isRef(value) && !shallow ? value.value : value; + }, + set: function reactiveSetter(newVal) { + const value = getter ? getter.call(obj) : val; + if (!hasChanged(value, newVal)) { + return; + } + if (setter) { + setter.call(obj, newVal); + } + else if (getter) { + // #7981: for accessor properties without setter + return; + } + else if (!shallow && isRef(value) && !isRef(newVal)) { + value.value = newVal; + return; + } + else { + val = newVal; + } + childOb = !shallow && observe(newVal, false, mock); + { + dep.notify(); + } + } + }); + return dep; +} +function set(target, key, val) { + if (isReadonly(target)) { + return; + } + const ob = target.__ob__; + if (isArray$1(target) && isValidArrayIndex(key)) { + target.length = Math.max(target.length, key); + target.splice(key, 1, val); + // when mocking for SSR, array methods are not hijacked + if (ob && !ob.shallow && ob.mock) { + observe(val, false, true); + } + return val; + } + if (key in target && !(key in Object.prototype)) { + target[key] = val; + return val; + } + if (target._isVue || (ob && ob.vmCount)) { + return val; + } + if (!ob) { + target[key] = val; + return val; + } + defineReactive(ob.value, key, val, undefined, ob.shallow, ob.mock); + { + ob.dep.notify(); + } + return val; +} +/** + * Collect dependencies on array elements when the array is touched, since + * we cannot intercept array element access like property getters. + */ +function dependArray(value) { + for (let e, i = 0, l = value.length; i < l; i++) { + e = value[i]; + if (e && e.__ob__) { + e.__ob__.dep.depend(); + } + if (isArray$1(e)) { + dependArray(e); + } + } +} + +function isReadonly(value) { + return !!(value && value.__v_isReadonly); +} + +function isRef(r) { + return !!(r && r.__v_isRef === true); +} + +const normalizeEvent = cached((name) => { + const passive = name.charAt(0) === '&'; + name = passive ? name.slice(1) : name; + const once = name.charAt(0) === '~'; // Prefixed last, checked first + name = once ? name.slice(1) : name; + const capture = name.charAt(0) === '!'; + name = capture ? name.slice(1) : name; + return { + name, + once, + capture, + passive + }; +}); +function createFnInvoker(fns, vm) { + function invoker() { + const fns = invoker.fns; + if (isArray$1(fns)) { + const cloned = fns.slice(); + for (let i = 0; i < cloned.length; i++) { + invokeWithErrorHandling(cloned[i], null, arguments, vm, `v-on handler`); + } + } + else { + // return handler return value for single handlers + return invokeWithErrorHandling(fns, null, arguments, vm, `v-on handler`); + } + } + invoker.fns = fns; + return invoker; +} +function updateListeners(on, oldOn, add, remove, createOnceHandler, vm) { + let name, cur, old, event; + for (name in on) { + cur = on[name]; + old = oldOn[name]; + event = normalizeEvent(name); + if (isUndef(cur)) ; + else if (isUndef(old)) { + if (isUndef(cur.fns)) { + cur = on[name] = createFnInvoker(cur, vm); + } + if (isTrue(event.once)) { + cur = on[name] = createOnceHandler(event.name, cur, event.capture); + } + add(event.name, cur, event.capture, event.passive, event.params); + } + else if (cur !== old) { + old.fns = cur; + on[name] = old; + } + } + for (name in oldOn) { + if (isUndef(on[name])) { + event = normalizeEvent(name); + remove(event.name, oldOn[name], event.capture); + } + } +} + +function extractPropsFromVNodeData(data, Ctor, tag) { + // we are only extracting raw values here. + // validation and default values are handled in the child + // component itself. + const propOptions = Ctor.options.props; + if (isUndef(propOptions)) { + return; + } + const res = {}; + const { attrs, props } = data; + if (isDef(attrs) || isDef(props)) { + for (const key in propOptions) { + const altKey = hyphenate(key); + checkProp(res, props, key, altKey, true) || + checkProp(res, attrs, key, altKey, false); + } + } + return res; +} +function checkProp(res, hash, key, altKey, preserve) { + if (isDef(hash)) { + if (hasOwn(hash, key)) { + res[key] = hash[key]; + if (!preserve) { + delete hash[key]; + } + return true; + } + else if (hasOwn(hash, altKey)) { + res[key] = hash[altKey]; + if (!preserve) { + delete hash[altKey]; + } + return true; + } + } + return false; +} + +// The template compiler attempts to minimize the need for normalization by +// statically analyzing the template at compile time. +// +// For plain HTML markup, normalization can be completely skipped because the +// generated render function is guaranteed to return Array<VNode>. There are +// two cases where extra normalization is needed: +// 1. When the children contains components - because a functional component +// may return an Array instead of a single root. In this case, just a simple +// normalization is needed - if any child is an Array, we flatten the whole +// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep +// because functional components already normalize their own children. +function simpleNormalizeChildren(children) { + for (let i = 0; i < children.length; i++) { + if (isArray$1(children[i])) { + return Array.prototype.concat.apply([], children); + } + } + return children; +} +// 2. When the children contains constructs that always generated nested Arrays, +// e.g. <template>, <slot>, v-for, or when the children is provided by user +// with hand-written render functions / JSX. In such cases a full normalization +// is needed to cater to all possible types of children values. +function normalizeChildren(children) { + return isPrimitive(children) + ? [createTextVNode(children)] + : isArray$1(children) + ? normalizeArrayChildren(children) + : undefined; +} +function isTextNode(node) { + return isDef(node) && isDef(node.text) && isFalse(node.isComment); +} +function normalizeArrayChildren(children, nestedIndex) { + const res = []; + let i, c, lastIndex, last; + for (i = 0; i < children.length; i++) { + c = children[i]; + if (isUndef(c) || typeof c === 'boolean') + continue; + lastIndex = res.length - 1; + last = res[lastIndex]; + // nested + if (isArray$1(c)) { + if (c.length > 0) { + c = normalizeArrayChildren(c, `${nestedIndex || ''}_${i}`); + // merge adjacent text nodes + if (isTextNode(c[0]) && isTextNode(last)) { + res[lastIndex] = createTextVNode(last.text + c[0].text); + c.shift(); + } + res.push.apply(res, c); + } + } + else if (isPrimitive(c)) { + if (isTextNode(last)) { + // merge adjacent text nodes + // this is necessary for SSR hydration because text nodes are + // essentially merged when rendered to HTML strings + res[lastIndex] = createTextVNode(last.text + c); + } + else if (c !== '') { + // convert primitive to vnode + res.push(createTextVNode(c)); + } + } + else { + if (isTextNode(c) && isTextNode(last)) { + // merge adjacent text nodes + res[lastIndex] = createTextVNode(last.text + c.text); + } + else { + // default key for nested array children (likely generated by v-for) + if (isTrue(children._isVList) && + isDef(c.tag) && + isUndef(c.key) && + isDef(nestedIndex)) { + c.key = `__vlist${nestedIndex}_${i}__`; + } + res.push(c); + } + } + } + return res; +} + +const SIMPLE_NORMALIZE = 1; +const ALWAYS_NORMALIZE = 2; +// wrapper function for providing a more flexible interface +// without getting yelled at by flow +function createElement(context, tag, data, children, normalizationType, alwaysNormalize) { + if (isArray$1(data) || isPrimitive(data)) { + normalizationType = children; + children = data; + data = undefined; + } + if (isTrue(alwaysNormalize)) { + normalizationType = ALWAYS_NORMALIZE; + } + return _createElement(context, tag, data, children, normalizationType); +} +function _createElement(context, tag, data, children, normalizationType) { + if (isDef(data) && isDef(data.__ob__)) { + return createEmptyVNode(); + } + // object syntax in v-bind + if (isDef(data) && isDef(data.is)) { + tag = data.is; + } + if (!tag) { + // in case of component :is set to falsy value + return createEmptyVNode(); + } + // support single function children as default scoped slot + if (isArray$1(children) && isFunction(children[0])) { + data = data || {}; + data.scopedSlots = { default: children[0] }; + children.length = 0; + } + if (normalizationType === ALWAYS_NORMALIZE) { + children = normalizeChildren(children); + } + else if (normalizationType === SIMPLE_NORMALIZE) { + children = simpleNormalizeChildren(children); + } + let vnode, ns; + if (typeof tag === 'string') { + let Ctor; + ns = (context.$vnode && context.$vnode.ns) || config.getTagNamespace(tag); + if ((!data || !data.pre) && + isDef((Ctor = resolveAsset(context.$options, 'components', tag)))) { + // component + vnode = createComponent(Ctor, data, context, children, tag); + } + else { + // unknown or unlisted namespaced elements + // check at runtime because it may get assigned a namespace when its + // parent normalizes children + vnode = new VNode(tag, data, children, undefined, undefined, context); + } + } + else { + // direct component options / constructor + vnode = createComponent(tag, data, context, children); + } + if (isArray$1(vnode)) { + return vnode; + } + else if (isDef(vnode)) { + if (isDef(ns)) + applyNS(vnode, ns); + if (isDef(data)) + registerDeepBindings(data); + return vnode; + } + else { + return createEmptyVNode(); + } +} +function applyNS(vnode, ns, force) { + vnode.ns = ns; + if (vnode.tag === 'foreignObject') { + // use default namespace inside foreignObject + ns = undefined; + force = true; + } + if (isDef(vnode.children)) { + for (let i = 0, l = vnode.children.length; i < l; i++) { + const child = vnode.children[i]; + if (isDef(child.tag) && + (isUndef(child.ns) || (isTrue(force) && child.tag !== 'svg'))) { + applyNS(child, ns, force); + } + } + } +} +// ref #5318 +// necessary to ensure parent re-render when deep bindings like :style and +// :class are used on slot nodes +function registerDeepBindings(data) { + if (isObject$1(data.style)) { + traverse(data.style); + } + if (isObject$1(data.class)) { + traverse(data.class); + } +} + +/** + * Runtime helper for rendering v-for lists. + */ +function renderList(val, render) { + let ret = null, i, l, keys, key; + if (isArray$1(val) || typeof val === 'string') { + ret = new Array(val.length); + for (i = 0, l = val.length; i < l; i++) { + ret[i] = render(val[i], i); + } + } + else if (typeof val === 'number') { + ret = new Array(val); + for (i = 0; i < val; i++) { + ret[i] = render(i + 1, i); + } + } + else if (isObject$1(val)) { + if (hasSymbol && val[Symbol.iterator]) { + ret = []; + const iterator = val[Symbol.iterator](); + let result = iterator.next(); + while (!result.done) { + ret.push(render(result.value, ret.length)); + result = iterator.next(); + } + } + else { + keys = Object.keys(val); + ret = new Array(keys.length); + for (i = 0, l = keys.length; i < l; i++) { + key = keys[i]; + ret[i] = render(val[key], key, i); + } + } + } + if (!isDef(ret)) { + ret = []; + } + ret._isVList = true; + return ret; +} + +/** + * Runtime helper for rendering <slot> + */ +function renderSlot(name, fallbackRender, props, bindObject) { + const scopedSlotFn = this.$scopedSlots[name]; + let nodes; + if (scopedSlotFn) { + // scoped slot + props = props || {}; + if (bindObject) { + props = extend(extend({}, bindObject), props); + } + nodes = + scopedSlotFn(props) || + (isFunction(fallbackRender) ? fallbackRender() : fallbackRender); + } + else { + nodes = + this.$slots[name] || + (isFunction(fallbackRender) ? fallbackRender() : fallbackRender); + } + const target = props && props.slot; + if (target) { + return this.$createElement('template', { slot: target }, nodes); + } + else { + return nodes; + } +} + +/** + * Runtime helper for resolving filters + */ +function resolveFilter(id) { + return resolveAsset(this.$options, 'filters', id) || identity$1; +} + +function isKeyNotMatch(expect, actual) { + if (isArray$1(expect)) { + return expect.indexOf(actual) === -1; + } + else { + return expect !== actual; + } +} +/** + * Runtime helper for checking keyCodes from config. + * exposed as Vue.prototype._k + * passing in eventKeyName as last argument separately for backwards compat + */ +function checkKeyCodes(eventKeyCode, key, builtInKeyCode, eventKeyName, builtInKeyName) { + const mappedKeyCode = config.keyCodes[key] || builtInKeyCode; + if (builtInKeyName && eventKeyName && !config.keyCodes[key]) { + return isKeyNotMatch(builtInKeyName, eventKeyName); + } + else if (mappedKeyCode) { + return isKeyNotMatch(mappedKeyCode, eventKeyCode); + } + else if (eventKeyName) { + return hyphenate(eventKeyName) !== key; + } + return eventKeyCode === undefined; +} + +/** + * Runtime helper for merging v-bind="object" into a VNode's data. + */ +function bindObjectProps(data, tag, value, asProp, isSync) { + if (value) { + if (!isObject$1(value)) ; + else { + if (isArray$1(value)) { + value = toObject(value); + } + let hash; + for (const key in value) { + if (key === 'class' || key === 'style' || isReservedAttribute(key)) { + hash = data; + } + else { + const type = data.attrs && data.attrs.type; + hash = + asProp || config.mustUseProp(tag, type, key) + ? data.domProps || (data.domProps = {}) + : data.attrs || (data.attrs = {}); + } + const camelizedKey = camelize(key); + const hyphenatedKey = hyphenate(key); + if (!(camelizedKey in hash) && !(hyphenatedKey in hash)) { + hash[key] = value[key]; + if (isSync) { + const on = data.on || (data.on = {}); + on[`update:${key}`] = function ($event) { + value[key] = $event; + }; + } + } + } + } + } + return data; +} + +/** + * Runtime helper for rendering static trees. + */ +function renderStatic(index, isInFor) { + const cached = this._staticTrees || (this._staticTrees = []); + let tree = cached[index]; + // if has already-rendered static tree and not inside v-for, + // we can reuse the same tree. + if (tree && !isInFor) { + return tree; + } + // otherwise, render a fresh tree. + tree = cached[index] = this.$options.staticRenderFns[index].call(this._renderProxy, this._c, this // for render fns generated for functional component templates + ); + markStatic$1(tree, `__static__${index}`, false); + return tree; +} +/** + * Runtime helper for v-once. + * Effectively it means marking the node as static with a unique key. + */ +function markOnce(tree, index, key) { + markStatic$1(tree, `__once__${index}${key ? `_${key}` : ``}`, true); + return tree; +} +function markStatic$1(tree, key, isOnce) { + if (isArray$1(tree)) { + for (let i = 0; i < tree.length; i++) { + if (tree[i] && typeof tree[i] !== 'string') { + markStaticNode(tree[i], `${key}_${i}`, isOnce); + } + } + } + else { + markStaticNode(tree, key, isOnce); + } +} +function markStaticNode(node, key, isOnce) { + node.isStatic = true; + node.key = key; + node.isOnce = isOnce; +} + +function bindObjectListeners(data, value) { + if (value) { + if (!isPlainObject(value)) ; + else { + const on = (data.on = data.on ? extend({}, data.on) : {}); + for (const key in value) { + const existing = on[key]; + const ours = value[key]; + on[key] = existing ? [].concat(existing, ours) : ours; + } + } + } + return data; +} + +function resolveScopedSlots(fns, res, +// the following are added in 2.6 +hasDynamicKeys, contentHashKey) { + res = res || { $stable: !hasDynamicKeys }; + for (let i = 0; i < fns.length; i++) { + const slot = fns[i]; + if (isArray$1(slot)) { + resolveScopedSlots(slot, res, hasDynamicKeys); + } + else if (slot) { + // marker for reverse proxying v-slot without scope on this.$slots + // @ts-expect-error + if (slot.proxy) { + // @ts-expect-error + slot.fn.proxy = true; + } + res[slot.key] = slot.fn; + } + } + if (contentHashKey) { + res.$key = contentHashKey; + } + return res; +} + +// helper to process dynamic keys for dynamic arguments in v-bind and v-on. +function bindDynamicKeys(baseObj, values) { + for (let i = 0; i < values.length; i += 2) { + const key = values[i]; + if (typeof key === 'string' && key) { + baseObj[values[i]] = values[i + 1]; + } + } + return baseObj; +} +// helper to dynamically append modifier runtime markers to event names. +// ensure only append when value is already string, otherwise it will be cast +// to string and cause the type check to miss. +function prependModifier(value, symbol) { + return typeof value === 'string' ? symbol + value : value; +} + +function installRenderHelpers(target) { + target._o = markOnce; + target._n = toNumber; + target._s = toString; + target._l = renderList; + target._t = renderSlot; + target._q = looseEqual; + target._i = looseIndexOf; + target._m = renderStatic; + target._f = resolveFilter; + target._k = checkKeyCodes; + target._b = bindObjectProps; + target._v = createTextVNode; + target._e = createEmptyVNode; + target._u = resolveScopedSlots; + target._g = bindObjectListeners; + target._d = bindDynamicKeys; + target._p = prependModifier; +} + +/** + * Runtime helper for resolving raw children VNodes into a slot object. + */ +function resolveSlots(children, context) { + if (!children || !children.length) { + return {}; + } + const slots = {}; + for (let i = 0, l = children.length; i < l; i++) { + const child = children[i]; + const data = child.data; + // remove slot attribute if the node is resolved as a Vue slot node + if (data && data.attrs && data.attrs.slot) { + delete data.attrs.slot; + } + // named slots should only be respected if the vnode was rendered in the + // same context. + if ((child.context === context || child.fnContext === context) && + data && + data.slot != null) { + const name = data.slot; + const slot = slots[name] || (slots[name] = []); + if (child.tag === 'template') { + slot.push.apply(slot, child.children || []); + } + else { + slot.push(child); + } + } + else { + (slots.default || (slots.default = [])).push(child); + } + } + // ignore slots that contains only whitespace + for (const name in slots) { + if (slots[name].every(isWhitespace$2)) { + delete slots[name]; + } + } + return slots; +} +function isWhitespace$2(node) { + return (node.isComment && !node.asyncFactory) || node.text === ' '; +} + +function isAsyncPlaceholder(node) { + // @ts-expect-error not really boolean type + return node.isComment && node.asyncFactory; +} + +function normalizeScopedSlots(ownerVm, scopedSlots, normalSlots, prevScopedSlots) { + let res; + const hasNormalSlots = Object.keys(normalSlots).length > 0; + const isStable = scopedSlots ? !!scopedSlots.$stable : !hasNormalSlots; + const key = scopedSlots && scopedSlots.$key; + if (!scopedSlots) { + res = {}; + } + else if (scopedSlots._normalized) { + // fast path 1: child component re-render only, parent did not change + return scopedSlots._normalized; + } + else if (isStable && + prevScopedSlots && + prevScopedSlots !== emptyObject && + key === prevScopedSlots.$key && + !hasNormalSlots && + !prevScopedSlots.$hasNormal) { + // fast path 2: stable scoped slots w/ no normal slots to proxy, + // only need to normalize once + return prevScopedSlots; + } + else { + res = {}; + for (const key in scopedSlots) { + if (scopedSlots[key] && key[0] !== '$') { + res[key] = normalizeScopedSlot(ownerVm, normalSlots, key, scopedSlots[key]); + } + } + } + // expose normal slots on scopedSlots + for (const key in normalSlots) { + if (!(key in res)) { + res[key] = proxyNormalSlot(normalSlots, key); + } + } + // avoriaz seems to mock a non-extensible $scopedSlots object + // and when that is passed down this would cause an error + if (scopedSlots && Object.isExtensible(scopedSlots)) { + scopedSlots._normalized = res; + } + def(res, '$stable', isStable); + def(res, '$key', key); + def(res, '$hasNormal', hasNormalSlots); + return res; +} +function normalizeScopedSlot(vm, normalSlots, key, fn) { + const normalized = function () { + const cur = currentInstance; + setCurrentInstance(vm); + let res = arguments.length ? fn.apply(null, arguments) : fn({}); + res = + res && typeof res === 'object' && !isArray$1(res) + ? [res] // single vnode + : normalizeChildren(res); + const vnode = res && res[0]; + setCurrentInstance(cur); + return res && + (!vnode || + (res.length === 1 && vnode.isComment && !isAsyncPlaceholder(vnode))) // #9658, #10391 + ? undefined + : res; + }; + // this is a slot using the new v-slot syntax without scope. although it is + // compiled as a scoped slot, render fn users would expect it to be present + // on this.$slots because the usage is semantically a normal slot. + if (fn.proxy) { + Object.defineProperty(normalSlots, key, { + get: normalized, + enumerable: true, + configurable: true + }); + } + return normalized; +} +function proxyNormalSlot(slots, key) { + return () => slots[key]; +} + +function syncSetupProxy(to, from, prev, instance, type) { + let changed = false; + for (const key in from) { + if (!(key in to)) { + changed = true; + defineProxyAttr(to, key, instance, type); + } + else if (from[key] !== prev[key]) { + changed = true; + } + } + for (const key in to) { + if (!(key in from)) { + changed = true; + delete to[key]; + } + } + return changed; +} +function defineProxyAttr(proxy, key, instance, type) { + Object.defineProperty(proxy, key, { + enumerable: true, + configurable: true, + get() { + return instance[type][key]; + } + }); +} + +function createAsyncPlaceholder(factory, data, context, children, tag) { + const node = createEmptyVNode(); + node.asyncFactory = factory; + node.asyncMeta = { data, context, children, tag }; + return node; +} +function resolveAsyncComponent(factory, baseCtor) { + if (isTrue(factory.error) && isDef(factory.errorComp)) { + return factory.errorComp; + } + if (isDef(factory.resolved)) { + return factory.resolved; + } + if (isTrue(factory.loading) && isDef(factory.loadingComp)) { + return factory.loadingComp; + } +} + +let target; +function add(event, fn) { + target.$on(event, fn); +} +function remove(event, fn) { + target.$off(event, fn); +} +function createOnceHandler(event, fn) { + const _target = target; + return function onceHandler() { + const res = fn.apply(null, arguments); + if (res !== null) { + _target.$off(event, onceHandler); + } + }; +} +function updateComponentListeners(vm, listeners, oldListeners) { + target = vm; + updateListeners(listeners, oldListeners || {}, add, remove, createOnceHandler, vm); + target = undefined; +} + +let activeInstance = null; +function updateChildComponent(vm, propsData, listeners, parentVnode, renderChildren) { + // determine whether component has slot children + // we need to do this before overwriting $options._renderChildren. + // check if there are dynamic scopedSlots (hand-written or compiled but with + // dynamic slot names). Static scoped slots compiled from template has the + // "$stable" marker. + const newScopedSlots = parentVnode.data.scopedSlots; + const oldScopedSlots = vm.$scopedSlots; + const hasDynamicScopedSlot = !!((newScopedSlots && !newScopedSlots.$stable) || + (oldScopedSlots !== emptyObject && !oldScopedSlots.$stable) || + (newScopedSlots && vm.$scopedSlots.$key !== newScopedSlots.$key) || + (!newScopedSlots && vm.$scopedSlots.$key)); + // Any static slot children from the parent may have changed during parent's + // update. Dynamic scoped slots may also have changed. In such cases, a forced + // update is necessary to ensure correctness. + let needsForceUpdate = !!(renderChildren || // has new static slots + vm.$options._renderChildren || // has old static slots + hasDynamicScopedSlot); + const prevVNode = vm.$vnode; + vm.$options._parentVnode = parentVnode; + vm.$vnode = parentVnode; // update vm's placeholder node without re-render + if (vm._vnode) { + // update child tree's parent + vm._vnode.parent = parentVnode; + } + vm.$options._renderChildren = renderChildren; + // update $attrs and $listeners hash + // these are also reactive so they may trigger child update if the child + // used them during render + const attrs = parentVnode.data.attrs || emptyObject; + if (vm._attrsProxy) { + // force update if attrs are accessed and has changed since it may be + // passed to a child component. + if (syncSetupProxy(vm._attrsProxy, attrs, (prevVNode.data && prevVNode.data.attrs) || emptyObject, vm, '$attrs')) { + needsForceUpdate = true; + } + } + vm.$attrs = attrs; + // update listeners + listeners = listeners || emptyObject; + const prevListeners = vm.$options._parentListeners; + if (vm._listenersProxy) { + syncSetupProxy(vm._listenersProxy, listeners, prevListeners || emptyObject, vm, '$listeners'); + } + vm.$listeners = vm.$options._parentListeners = listeners; + updateComponentListeners(vm, listeners, prevListeners); + // update props + if (propsData && vm.$options.props) { + toggleObserving(false); + const props = vm._props; + const propKeys = vm.$options._propKeys || []; + for (let i = 0; i < propKeys.length; i++) { + const key = propKeys[i]; + const propOptions = vm.$options.props; // wtf flow? + props[key] = validateProp(key, propOptions, propsData, vm); + } + toggleObserving(true); + // keep a copy of raw propsData + vm.$options.propsData = propsData; + } + // resolve slots + force update if has children + if (needsForceUpdate) { + vm.$slots = resolveSlots(renderChildren, parentVnode.context); + vm.$forceUpdate(); + } +} +function isInInactiveTree(vm) { + while (vm && (vm = vm.$parent)) { + if (vm._inactive) + return true; + } + return false; +} +function activateChildComponent(vm, direct) { + if (direct) { + vm._directInactive = false; + if (isInInactiveTree(vm)) { + return; + } + } + else if (vm._directInactive) { + return; + } + if (vm._inactive || vm._inactive === null) { + vm._inactive = false; + for (let i = 0; i < vm.$children.length; i++) { + activateChildComponent(vm.$children[i]); + } + callHook(vm, 'activated'); + } +} +function deactivateChildComponent(vm, direct) { + if (direct) { + vm._directInactive = true; + if (isInInactiveTree(vm)) { + return; + } + } + if (!vm._inactive) { + vm._inactive = true; + for (let i = 0; i < vm.$children.length; i++) { + deactivateChildComponent(vm.$children[i]); + } + callHook(vm, 'deactivated'); + } +} +function callHook(vm, hook, args, setContext = true) { + // #7573 disable dep collection when invoking lifecycle hooks + pushTarget(); + const prevInst = currentInstance; + setContext && setCurrentInstance(vm); + const handlers = vm.$options[hook]; + const info = `${hook} hook`; + if (handlers) { + for (let i = 0, j = handlers.length; i < j; i++) { + invokeWithErrorHandling(handlers[i], vm, args || null, vm, info); + } + } + if (vm._hasHookEvent) { + vm.$emit('hook:' + hook); + } + if (setContext) { + setCurrentInstance(prevInst); + } + popTarget(); +} + +// Async edge case fix requires storing an event listener's attach timestamp. +let getNow = Date.now; +// Determine what event timestamp the browser is using. Annoyingly, the +// timestamp can either be hi-res (relative to page load) or low-res +// (relative to UNIX epoch), so in order to compare time we have to use the +// same timestamp type when saving the flush timestamp. +// All IE versions use low-res event timestamps, and have problematic clock +// implementations (#9632) +if (inBrowser && !isIE) { + const performance = window.performance; + if (performance && + typeof performance.now === 'function' && + getNow() > document.createEvent('Event').timeStamp) { + // if the event timestamp, although evaluated AFTER the Date.now(), is + // smaller than it, it means the event is using a hi-res timestamp, + // and we need to use the hi-res version for event listener timestamps as + // well. + getNow = () => performance.now(); + } +} +/** + * Queue a kept-alive component that was activated during patch. + * The queue will be processed after the entire tree has been patched. + */ +function queueActivatedComponent(vm) { + // setting _inactive to false here so that a render function can + // rely on checking whether it's in an inactive tree (e.g. router-view) + vm._inactive = false; +} + +function handleError(err, vm, info) { + // Deactivate deps tracking while processing error handler to avoid possible infinite rendering. + // See: https://github.com/vuejs/vuex/issues/1505 + pushTarget(); + try { + if (vm) { + let cur = vm; + while ((cur = cur.$parent)) { + const hooks = cur.$options.errorCaptured; + if (hooks) { + for (let i = 0; i < hooks.length; i++) { + try { + const capture = hooks[i].call(cur, err, vm, info) === false; + if (capture) + return; + } + catch (e) { + globalHandleError(e, cur, 'errorCaptured hook'); + } + } + } + } + } + globalHandleError(err, vm, info); + } + finally { + popTarget(); + } +} +function invokeWithErrorHandling(handler, context, args, vm, info) { + let res; + try { + res = args ? handler.apply(context, args) : handler.call(context); + if (res && !res._isVue && isPromise(res) && !res._handled) { + res.catch(e => handleError(e, vm, info + ` (Promise/async)`)); + res._handled = true; + } + } + catch (e) { + handleError(e, vm, info); + } + return res; +} +function globalHandleError(err, vm, info) { + logError(err); +} +function logError(err, vm, info) { + /* istanbul ignore else */ + if (inBrowser && typeof console !== 'undefined') { + console.error(err); + } + else { + throw err; + } +} + +/* globals MutationObserver */ +const callbacks = []; +function flushCallbacks() { + const copies = callbacks.slice(0); + callbacks.length = 0; + for (let i = 0; i < copies.length; i++) { + copies[i](); + } +} +// The nextTick behavior leverages the microtask queue, which can be accessed +// via either native Promise.then or MutationObserver. +// MutationObserver has wider support, however it is seriously bugged in +// UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It +// completely stops working after triggering a few times... so, if native +// Promise is available, we will use it: +/* istanbul ignore next, $flow-disable-line */ +if (typeof Promise !== 'undefined' && isNative(Promise)) { + Promise.resolve(); +} +else if (!isIE && + typeof MutationObserver !== 'undefined' && + (isNative(MutationObserver) || + // PhantomJS and iOS 7.x + MutationObserver.toString() === '[object MutationObserverConstructor]')) { + // Use MutationObserver where native Promise is not available, + // e.g. PhantomJS, iOS7, Android 4.4 + // (#6466 MutationObserver is unreliable in IE11) + let counter = 1; + const observer = new MutationObserver(flushCallbacks); + const textNode = document.createTextNode(String(counter)); + observer.observe(textNode, { + characterData: true + }); +} +else if (typeof setImmediate !== 'undefined' && isNative(setImmediate)) ; +else ; + +const seenObjects = new _Set(); +/** + * Recursively traverse an object to evoke all converted + * getters, so that every nested property inside the object + * is collected as a "deep" dependency. + */ +function traverse(val) { + _traverse(val, seenObjects); + seenObjects.clear(); + return val; +} +function _traverse(val, seen) { + let i, keys; + const isA = isArray$1(val); + if ((!isA && !isObject$1(val)) || + val.__v_skip /* ReactiveFlags.SKIP */ || + Object.isFrozen(val) || + val instanceof VNode) { + return; + } + if (val.__ob__) { + const depId = val.__ob__.dep.id; + if (seen.has(depId)) { + return; + } + seen.add(depId); + } + if (isA) { + i = val.length; + while (i--) + _traverse(val[i], seen); + } + else if (isRef(val)) { + _traverse(val.value, seen); + } + else { + keys = Object.keys(val); + i = keys.length; + while (i--) + _traverse(val[keys[i]], seen); + } +} + +function resolveInject(inject, vm) { + if (inject) { + // inject is :any because flow is not smart enough to figure out cached + const result = Object.create(null); + const keys = hasSymbol ? Reflect.ownKeys(inject) : Object.keys(inject); + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + // #6574 in case the inject object is observed... + if (key === '__ob__') + continue; + const provideKey = inject[key].from; + if (provideKey in vm._provided) { + result[key] = vm._provided[provideKey]; + } + else if ('default' in inject[key]) { + const provideDefault = inject[key].default; + result[key] = isFunction(provideDefault) + ? provideDefault.call(vm) + : provideDefault; + } + else ; + } + return result; + } +} + +function resolveConstructorOptions(Ctor) { + let options = Ctor.options; + if (Ctor.super) { + const superOptions = resolveConstructorOptions(Ctor.super); + const cachedSuperOptions = Ctor.superOptions; + if (superOptions !== cachedSuperOptions) { + // super option changed, + // need to resolve new options. + Ctor.superOptions = superOptions; + // check if there are any late-modified/attached options (#4976) + const modifiedOptions = resolveModifiedOptions(Ctor); + // update base extend options + if (modifiedOptions) { + extend(Ctor.extendOptions, modifiedOptions); + } + options = Ctor.options = mergeOptions(superOptions, Ctor.extendOptions); + if (options.name) { + options.components[options.name] = Ctor; + } + } + } + return options; +} +function resolveModifiedOptions(Ctor) { + let modified; + const latest = Ctor.options; + const sealed = Ctor.sealedOptions; + for (const key in latest) { + if (latest[key] !== sealed[key]) { + if (!modified) + modified = {}; + modified[key] = latest[key]; + } + } + return modified; +} + +function FunctionalRenderContext(data, props, children, parent, Ctor) { + const options = Ctor.options; + // ensure the createElement function in functional components + // gets a unique context - this is necessary for correct named slot check + let contextVm; + if (hasOwn(parent, '_uid')) { + contextVm = Object.create(parent); + contextVm._original = parent; + } + else { + // the context vm passed in is a functional context as well. + // in this case we want to make sure we are able to get a hold to the + // real context instance. + contextVm = parent; + // @ts-ignore + parent = parent._original; + } + const isCompiled = isTrue(options._compiled); + const needNormalization = !isCompiled; + this.data = data; + this.props = props; + this.children = children; + this.parent = parent; + this.listeners = data.on || emptyObject; + this.injections = resolveInject(options.inject, parent); + this.slots = () => { + if (!this.$slots) { + normalizeScopedSlots(parent, data.scopedSlots, (this.$slots = resolveSlots(children, parent))); + } + return this.$slots; + }; + Object.defineProperty(this, 'scopedSlots', { + enumerable: true, + get() { + return normalizeScopedSlots(parent, data.scopedSlots, this.slots()); + } + }); + // support for compiled functional template + if (isCompiled) { + // exposing $options for renderStatic() + this.$options = options; + // pre-resolve slots for renderSlot() + this.$slots = this.slots(); + this.$scopedSlots = normalizeScopedSlots(parent, data.scopedSlots, this.$slots); + } + if (options._scopeId) { + this._c = (a, b, c, d) => { + const vnode = createElement(contextVm, a, b, c, d, needNormalization); + if (vnode && !isArray$1(vnode)) { + vnode.fnScopeId = options._scopeId; + vnode.fnContext = parent; + } + return vnode; + }; + } + else { + this._c = (a, b, c, d) => createElement(contextVm, a, b, c, d, needNormalization); + } +} +installRenderHelpers(FunctionalRenderContext.prototype); +function createFunctionalComponent(Ctor, propsData, data, contextVm, children) { + const options = Ctor.options; + const props = {}; + const propOptions = options.props; + if (isDef(propOptions)) { + for (const key in propOptions) { + props[key] = validateProp(key, propOptions, propsData || emptyObject); + } + } + else { + if (isDef(data.attrs)) + mergeProps(props, data.attrs); + if (isDef(data.props)) + mergeProps(props, data.props); + } + const renderContext = new FunctionalRenderContext(data, props, children, contextVm, Ctor); + const vnode = options.render.call(null, renderContext._c, renderContext); + if (vnode instanceof VNode) { + return cloneAndMarkFunctionalResult(vnode, data, renderContext.parent, options); + } + else if (isArray$1(vnode)) { + const vnodes = normalizeChildren(vnode) || []; + const res = new Array(vnodes.length); + for (let i = 0; i < vnodes.length; i++) { + res[i] = cloneAndMarkFunctionalResult(vnodes[i], data, renderContext.parent, options); + } + return res; + } +} +function cloneAndMarkFunctionalResult(vnode, data, contextVm, options, renderContext) { + // #7817 clone node before setting fnContext, otherwise if the node is reused + // (e.g. it was from a cached normal slot) the fnContext causes named slots + // that should not be matched to match. + const clone = cloneVNode(vnode); + clone.fnContext = contextVm; + clone.fnOptions = options; + if (data.slot) { + (clone.data || (clone.data = {})).slot = data.slot; + } + return clone; +} +function mergeProps(to, from) { + for (const key in from) { + to[camelize(key)] = from[key]; + } +} + +function getComponentName(options) { + return options.name || options.__name || options._componentTag; +} +// inline hooks to be invoked on component VNodes during patch +const componentVNodeHooks = { + init(vnode, hydrating) { + if (vnode.componentInstance && + !vnode.componentInstance._isDestroyed && + vnode.data.keepAlive) { + // kept-alive components, treat as a patch + const mountedNode = vnode; // work around flow + componentVNodeHooks.prepatch(mountedNode, mountedNode); + } + else { + const child = (vnode.componentInstance = createComponentInstanceForVnode(vnode, activeInstance)); + child.$mount(hydrating ? vnode.elm : undefined, hydrating); + } + }, + prepatch(oldVnode, vnode) { + const options = vnode.componentOptions; + const child = (vnode.componentInstance = oldVnode.componentInstance); + updateChildComponent(child, options.propsData, // updated props + options.listeners, // updated listeners + vnode, // new parent vnode + options.children // new children + ); + }, + insert(vnode) { + const { context, componentInstance } = vnode; + if (!componentInstance._isMounted) { + componentInstance._isMounted = true; + callHook(componentInstance, 'mounted'); + } + if (vnode.data.keepAlive) { + if (context._isMounted) { + // vue-router#1212 + // During updates, a kept-alive component's child components may + // change, so directly walking the tree here may call activated hooks + // on incorrect children. Instead we push them into a queue which will + // be processed after the whole patch process ended. + queueActivatedComponent(componentInstance); + } + else { + activateChildComponent(componentInstance, true /* direct */); + } + } + }, + destroy(vnode) { + const { componentInstance } = vnode; + if (!componentInstance._isDestroyed) { + if (!vnode.data.keepAlive) { + componentInstance.$destroy(); + } + else { + deactivateChildComponent(componentInstance, true /* direct */); + } + } + } +}; +const hooksToMerge = Object.keys(componentVNodeHooks); +function createComponent(Ctor, data, context, children, tag) { + if (isUndef(Ctor)) { + return; + } + const baseCtor = context.$options._base; + // plain options object: turn it into a constructor + if (isObject$1(Ctor)) { + Ctor = baseCtor.extend(Ctor); + } + // if at this stage it's not a constructor or an async component factory, + // reject. + if (typeof Ctor !== 'function') { + return; + } + // async component + let asyncFactory; + // @ts-expect-error + if (isUndef(Ctor.cid)) { + asyncFactory = Ctor; + Ctor = resolveAsyncComponent(asyncFactory); + if (Ctor === undefined) { + // return a placeholder node for async component, which is rendered + // as a comment node but preserves all the raw information for the node. + // the information will be used for async server-rendering and hydration. + return createAsyncPlaceholder(asyncFactory, data, context, children, tag); + } + } + data = data || {}; + // resolve constructor options in case global mixins are applied after + // component constructor creation + resolveConstructorOptions(Ctor); + // transform component v-model data into props & events + if (isDef(data.model)) { + // @ts-expect-error + transformModel(Ctor.options, data); + } + // extract props + // @ts-expect-error + const propsData = extractPropsFromVNodeData(data, Ctor); + // functional component + // @ts-expect-error + if (isTrue(Ctor.options.functional)) { + return createFunctionalComponent(Ctor, propsData, data, context, children); + } + // extract listeners, since these needs to be treated as + // child component listeners instead of DOM listeners + const listeners = data.on; + // replace with listeners with .native modifier + // so it gets processed during parent component patch. + data.on = data.nativeOn; + // @ts-expect-error + if (isTrue(Ctor.options.abstract)) { + // abstract components do not keep anything + // other than props & listeners & slot + // work around flow + const slot = data.slot; + data = {}; + if (slot) { + data.slot = slot; + } + } + // install component management hooks onto the placeholder node + installComponentHooks(data); + // return a placeholder vnode + // @ts-expect-error + const name = getComponentName(Ctor.options) || tag; + const vnode = new VNode( + // @ts-expect-error + `vue-component-${Ctor.cid}${name ? `-${name}` : ''}`, data, undefined, undefined, undefined, context, + // @ts-expect-error + { Ctor, propsData, listeners, tag, children }, asyncFactory); + return vnode; +} +function createComponentInstanceForVnode( +// we know it's MountedComponentVNode but flow doesn't +vnode, +// activeInstance in lifecycle state +parent) { + const options = { + _isComponent: true, + _parentVnode: vnode, + parent + }; + // check inline-template render functions + const inlineTemplate = vnode.data.inlineTemplate; + if (isDef(inlineTemplate)) { + options.render = inlineTemplate.render; + options.staticRenderFns = inlineTemplate.staticRenderFns; + } + return new vnode.componentOptions.Ctor(options); +} +function installComponentHooks(data) { + const hooks = data.hook || (data.hook = {}); + for (let i = 0; i < hooksToMerge.length; i++) { + const key = hooksToMerge[i]; + const existing = hooks[key]; + const toMerge = componentVNodeHooks[key]; + // @ts-expect-error + if (existing !== toMerge && !(existing && existing._merged)) { + hooks[key] = existing ? mergeHook(toMerge, existing) : toMerge; + } + } +} +function mergeHook(f1, f2) { + const merged = (a, b) => { + // flow complains about extra args which is why we use any + f1(a, b); + f2(a, b); + }; + merged._merged = true; + return merged; +} +// transform component v-model info (value and callback) into +// prop and event handler respectively. +function transformModel(options, data) { + const prop = (options.model && options.model.prop) || 'value'; + const event = (options.model && options.model.event) || 'input'; + (data.attrs || (data.attrs = {}))[prop] = data.model.value; + const on = data.on || (data.on = {}); + const existing = on[event]; + const callback = data.model.callback; + if (isDef(existing)) { + if (isArray$1(existing) + ? existing.indexOf(callback) === -1 + : existing !== callback) { + on[event] = [callback].concat(existing); + } + } + else { + on[event] = callback; + } +} + +let warn$2 = noop; + +/** + * Option overwriting strategies are functions that handle + * how to merge a parent option value and a child option + * value into the final value. + */ +const strats = config.optionMergeStrategies; +/** + * Helper that recursively merges two data objects together. + */ +function mergeData(to, from, recursive = true) { + if (!from) + return to; + let key, toVal, fromVal; + const keys = hasSymbol + ? Reflect.ownKeys(from) + : Object.keys(from); + for (let i = 0; i < keys.length; i++) { + key = keys[i]; + // in case the object is already observed... + if (key === '__ob__') + continue; + toVal = to[key]; + fromVal = from[key]; + if (!recursive || !hasOwn(to, key)) { + set(to, key, fromVal); + } + else if (toVal !== fromVal && + isPlainObject(toVal) && + isPlainObject(fromVal)) { + mergeData(toVal, fromVal); + } + } + return to; +} +/** + * Data + */ +function mergeDataOrFn(parentVal, childVal, vm) { + if (!vm) { + // in a Vue.extend merge, both should be functions + if (!childVal) { + return parentVal; + } + if (!parentVal) { + return childVal; + } + // when parentVal & childVal are both present, + // we need to return a function that returns the + // merged result of both functions... no need to + // check if parentVal is a function here because + // it has to be a function to pass previous merges. + return function mergedDataFn() { + return mergeData(isFunction(childVal) ? childVal.call(this, this) : childVal, isFunction(parentVal) ? parentVal.call(this, this) : parentVal); + }; + } + else { + return function mergedInstanceDataFn() { + // instance merge + const instanceData = isFunction(childVal) + ? childVal.call(vm, vm) + : childVal; + const defaultData = isFunction(parentVal) + ? parentVal.call(vm, vm) + : parentVal; + if (instanceData) { + return mergeData(instanceData, defaultData); + } + else { + return defaultData; + } + }; + } +} +strats.data = function (parentVal, childVal, vm) { + if (!vm) { + if (childVal && typeof childVal !== 'function') { + return parentVal; + } + return mergeDataOrFn(parentVal, childVal); + } + return mergeDataOrFn(parentVal, childVal, vm); +}; +/** + * Hooks and props are merged as arrays. + */ +function mergeLifecycleHook(parentVal, childVal) { + const res = childVal + ? parentVal + ? parentVal.concat(childVal) + : isArray$1(childVal) + ? childVal + : [childVal] + : parentVal; + return res ? dedupeHooks(res) : res; +} +function dedupeHooks(hooks) { + const res = []; + for (let i = 0; i < hooks.length; i++) { + if (res.indexOf(hooks[i]) === -1) { + res.push(hooks[i]); + } + } + return res; +} +LIFECYCLE_HOOKS.forEach(hook => { + strats[hook] = mergeLifecycleHook; +}); +/** + * Assets + * + * When a vm is present (instance creation), we need to do + * a three-way merge between constructor options, instance + * options and parent options. + */ +function mergeAssets(parentVal, childVal, vm, key) { + const res = Object.create(parentVal || null); + if (childVal) { + return extend(res, childVal); + } + else { + return res; + } +} +ASSET_TYPES.forEach(function (type) { + strats[type + 's'] = mergeAssets; +}); +/** + * Watchers. + * + * Watchers hashes should not overwrite one + * another, so we merge them as arrays. + */ +strats.watch = function (parentVal, childVal, vm, key) { + // work around Firefox's Object.prototype.watch... + //@ts-expect-error work around + if (parentVal === nativeWatch) + parentVal = undefined; + //@ts-expect-error work around + if (childVal === nativeWatch) + childVal = undefined; + /* istanbul ignore if */ + if (!childVal) + return Object.create(parentVal || null); + if (!parentVal) + return childVal; + const ret = {}; + extend(ret, parentVal); + for (const key in childVal) { + let parent = ret[key]; + const child = childVal[key]; + if (parent && !isArray$1(parent)) { + parent = [parent]; + } + ret[key] = parent ? parent.concat(child) : isArray$1(child) ? child : [child]; + } + return ret; +}; +/** + * Other object hashes. + */ +strats.props = + strats.methods = + strats.inject = + strats.computed = + function (parentVal, childVal, vm, key) { + if (childVal && "production" !== 'production') { + assertObjectType(key, childVal); + } + if (!parentVal) + return childVal; + const ret = Object.create(null); + extend(ret, parentVal); + if (childVal) + extend(ret, childVal); + return ret; + }; +strats.provide = function (parentVal, childVal) { + if (!parentVal) + return childVal; + return function () { + const ret = Object.create(null); + mergeData(ret, isFunction(parentVal) ? parentVal.call(this) : parentVal); + if (childVal) { + mergeData(ret, isFunction(childVal) ? childVal.call(this) : childVal, false // non-recursive + ); + } + return ret; + }; +}; +/** + * Default strategy. + */ +const defaultStrat = function (parentVal, childVal) { + return childVal === undefined ? parentVal : childVal; +}; +/** + * Ensure all props option syntax are normalized into the + * Object-based format. + */ +function normalizeProps(options, vm) { + const props = options.props; + if (!props) + return; + const res = {}; + let i, val, name; + if (isArray$1(props)) { + i = props.length; + while (i--) { + val = props[i]; + if (typeof val === 'string') { + name = camelize(val); + res[name] = { type: null }; + } + } + } + else if (isPlainObject(props)) { + for (const key in props) { + val = props[key]; + name = camelize(key); + res[name] = isPlainObject(val) ? val : { type: val }; + } + } + else ; + options.props = res; +} +/** + * Normalize all injections into Object-based format + */ +function normalizeInject(options, vm) { + const inject = options.inject; + if (!inject) + return; + const normalized = (options.inject = {}); + if (isArray$1(inject)) { + for (let i = 0; i < inject.length; i++) { + normalized[inject[i]] = { from: inject[i] }; + } + } + else if (isPlainObject(inject)) { + for (const key in inject) { + const val = inject[key]; + normalized[key] = isPlainObject(val) + ? extend({ from: key }, val) + : { from: val }; + } + } + else ; +} +/** + * Normalize raw function directives into object format. + */ +function normalizeDirectives(options) { + const dirs = options.directives; + if (dirs) { + for (const key in dirs) { + const def = dirs[key]; + if (isFunction(def)) { + dirs[key] = { bind: def, update: def }; + } + } + } +} +function assertObjectType(name, value, vm) { + if (!isPlainObject(value)) { + warn$2(`Invalid value for option "${name}": expected an Object, ` + + `but got ${toRawType(value)}.`); + } +} +/** + * Merge two option objects into a new one. + * Core utility used in both instantiation and inheritance. + */ +function mergeOptions(parent, child, vm) { + if (isFunction(child)) { + // @ts-expect-error + child = child.options; + } + normalizeProps(child); + normalizeInject(child); + normalizeDirectives(child); + // Apply extends and mixins on the child options, + // but only if it is a raw options object that isn't + // the result of another mergeOptions call. + // Only merged options has the _base property. + if (!child._base) { + if (child.extends) { + parent = mergeOptions(parent, child.extends, vm); + } + if (child.mixins) { + for (let i = 0, l = child.mixins.length; i < l; i++) { + parent = mergeOptions(parent, child.mixins[i], vm); + } + } + } + const options = {}; + let key; + for (key in parent) { + mergeField(key); + } + for (key in child) { + if (!hasOwn(parent, key)) { + mergeField(key); + } + } + function mergeField(key) { + const strat = strats[key] || defaultStrat; + options[key] = strat(parent[key], child[key], vm, key); + } + return options; +} +/** + * Resolve an asset. + * This function is used because child instances need access + * to assets defined in its ancestor chain. + */ +function resolveAsset(options, type, id, warnMissing) { + /* istanbul ignore if */ + if (typeof id !== 'string') { + return; + } + const assets = options[type]; + // check local registration variations first + if (hasOwn(assets, id)) + return assets[id]; + const camelizedId = camelize(id); + if (hasOwn(assets, camelizedId)) + return assets[camelizedId]; + const PascalCaseId = capitalize(camelizedId); + if (hasOwn(assets, PascalCaseId)) + return assets[PascalCaseId]; + // fallback to prototype chain + const res = assets[id] || assets[camelizedId] || assets[PascalCaseId]; + return res; +} + +function validateProp(key, propOptions, propsData, vm) { + const prop = propOptions[key]; + const absent = !hasOwn(propsData, key); + let value = propsData[key]; + // boolean casting + const booleanIndex = getTypeIndex(Boolean, prop.type); + if (booleanIndex > -1) { + if (absent && !hasOwn(prop, 'default')) { + value = false; + } + else if (value === '' || value === hyphenate(key)) { + // only cast empty string / same name to boolean if + // boolean has higher priority + const stringIndex = getTypeIndex(String, prop.type); + if (stringIndex < 0 || booleanIndex < stringIndex) { + value = true; + } + } + } + // check default value + if (value === undefined) { + value = getPropDefaultValue(vm, prop, key); + // since the default value is a fresh copy, + // make sure to observe it. + const prevShouldObserve = shouldObserve; + toggleObserving(true); + observe(value); + toggleObserving(prevShouldObserve); + } + return value; +} +/** + * Get the default value of a prop. + */ +function getPropDefaultValue(vm, prop, key) { + // no default, return undefined + if (!hasOwn(prop, 'default')) { + return undefined; + } + const def = prop.default; + // the raw prop value was also undefined from previous render, + // return previous default value to avoid unnecessary watcher trigger + if (vm && + vm.$options.propsData && + vm.$options.propsData[key] === undefined && + vm._props[key] !== undefined) { + return vm._props[key]; + } + // call factory function for non-Function types + // a value is Function if its prototype is function even across different execution context + return isFunction(def) && getType(prop.type) !== 'Function' + ? def.call(vm) + : def; +} +const functionTypeCheckRE = /^\s*function (\w+)/; +/** + * Use function string name to check built-in types, + * because a simple equality check will fail when running + * across different vms / iframes. + */ +function getType(fn) { + const match = fn && fn.toString().match(functionTypeCheckRE); + return match ? match[1] : ''; +} +function isSameType(a, b) { + return getType(a) === getType(b); +} +function getTypeIndex(type, expectedTypes) { + if (!isArray$1(expectedTypes)) { + return isSameType(expectedTypes, type) ? 0 : -1; + } + for (let i = 0, len = expectedTypes.length; i < len; i++) { + if (isSameType(expectedTypes[i], type)) { + return i; + } + } + return -1; +} + +// these are reserved for web because they are directly compiled away +// during template compilation +makeMap('style,class'); +// attributes that should be using props for binding +const acceptValue = makeMap('input,textarea,option,select,progress'); +const mustUseProp = (tag, type, attr) => { + return ((attr === 'value' && acceptValue(tag) && type !== 'button') || + (attr === 'selected' && tag === 'option') || + (attr === 'checked' && tag === 'input') || + (attr === 'muted' && tag === 'video')); +}; +const isEnumeratedAttr = makeMap('contenteditable,draggable,spellcheck'); +makeMap('events,caret,typing,plaintext-only'); +const isBooleanAttr = makeMap('allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,' + + 'default,defaultchecked,defaultmuted,defaultselected,defer,disabled,' + + 'enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,' + + 'muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,' + + 'required,reversed,scoped,seamless,selected,sortable,' + + 'truespeed,typemustmatch,visible'); + +const isHTMLTag = makeMap('html,body,base,head,link,meta,style,title,' + + 'address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,' + + 'div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,' + + 'a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,' + + 's,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,' + + 'embed,object,param,source,canvas,script,noscript,del,ins,' + + 'caption,col,colgroup,table,thead,tbody,td,th,tr,' + + 'button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,' + + 'output,progress,select,textarea,' + + 'details,dialog,menu,menuitem,summary,' + + 'content,element,shadow,template,blockquote,iframe,tfoot'); +// this map is intentionally selective, only covering SVG elements that may +// contain child elements. +const isSVG = makeMap('svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,' + + 'foreignobject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,' + + 'polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view', true); +const isPreTag = (tag) => tag === 'pre'; +const isReservedTag = (tag) => { + return isHTMLTag(tag) || isSVG(tag); +}; +function getTagNamespace(tag) { + if (isSVG(tag)) { + return 'svg'; + } + // basic support for MathML + // note it doesn't support other MathML elements being component roots + if (tag === 'math') { + return 'math'; + } +} +makeMap('text,number,password,search,email,tel,url'); + +const validDivisionCharRE = /[\w).+\-_$\]]/; +function parseFilters(exp) { + let inSingle = false; + let inDouble = false; + let inTemplateString = false; + let inRegex = false; + let curly = 0; + let square = 0; + let paren = 0; + let lastFilterIndex = 0; + let c, prev, i, expression, filters; + for (i = 0; i < exp.length; i++) { + prev = c; + c = exp.charCodeAt(i); + if (inSingle) { + if (c === 0x27 && prev !== 0x5c) + inSingle = false; + } + else if (inDouble) { + if (c === 0x22 && prev !== 0x5c) + inDouble = false; + } + else if (inTemplateString) { + if (c === 0x60 && prev !== 0x5c) + inTemplateString = false; + } + else if (inRegex) { + if (c === 0x2f && prev !== 0x5c) + inRegex = false; + } + else if (c === 0x7c && // pipe + exp.charCodeAt(i + 1) !== 0x7c && + exp.charCodeAt(i - 1) !== 0x7c && + !curly && + !square && + !paren) { + if (expression === undefined) { + // first filter, end of expression + lastFilterIndex = i + 1; + expression = exp.slice(0, i).trim(); + } + else { + pushFilter(); + } + } + else { + switch (c) { + case 0x22: + inDouble = true; + break; // " + case 0x27: + inSingle = true; + break; // ' + case 0x60: + inTemplateString = true; + break; // ` + case 0x28: + paren++; + break; // ( + case 0x29: + paren--; + break; // ) + case 0x5b: + square++; + break; // [ + case 0x5d: + square--; + break; // ] + case 0x7b: + curly++; + break; // { + case 0x7d: + curly--; + break; // } + } + if (c === 0x2f) { + // / + let j = i - 1; + let p; + // find first non-whitespace prev char + for (; j >= 0; j--) { + p = exp.charAt(j); + if (p !== ' ') + break; + } + if (!p || !validDivisionCharRE.test(p)) { + inRegex = true; + } + } + } + } + if (expression === undefined) { + expression = exp.slice(0, i).trim(); + } + else if (lastFilterIndex !== 0) { + pushFilter(); + } + function pushFilter() { + (filters || (filters = [])).push(exp.slice(lastFilterIndex, i).trim()); + lastFilterIndex = i + 1; + } + if (filters) { + for (i = 0; i < filters.length; i++) { + expression = wrapFilter(expression, filters[i]); + } + } + return expression; +} +function wrapFilter(exp, filter) { + const i = filter.indexOf('('); + if (i < 0) { + // _f: resolveFilter + return `_f("${filter}")(${exp})`; + } + else { + const name = filter.slice(0, i); + const args = filter.slice(i + 1); + return `_f("${name}")(${exp}${args !== ')' ? ',' + args : args}`; + } +} + +const defaultTagRE = /\{\{((?:.|\r?\n)+?)\}\}/g; +const regexEscapeRE = /[-.*+?^${}()|[\]\/\\]/g; +const buildRegex = cached(delimiters => { + const open = delimiters[0].replace(regexEscapeRE, '\\$&'); + const close = delimiters[1].replace(regexEscapeRE, '\\$&'); + return new RegExp(open + '((?:.|\\n)+?)' + close, 'g'); +}); +function parseText(text, delimiters) { + //@ts-expect-error + const tagRE = delimiters ? buildRegex(delimiters) : defaultTagRE; + if (!tagRE.test(text)) { + return; + } + const tokens = []; + const rawTokens = []; + let lastIndex = (tagRE.lastIndex = 0); + let match, index, tokenValue; + while ((match = tagRE.exec(text))) { + index = match.index; + // push text token + if (index > lastIndex) { + rawTokens.push((tokenValue = text.slice(lastIndex, index))); + tokens.push(JSON.stringify(tokenValue)); + } + // tag token + const exp = parseFilters(match[1].trim()); + tokens.push(`_s(${exp})`); + rawTokens.push({ '@binding': exp }); + lastIndex = index + match[0].length; + } + if (lastIndex < text.length) { + rawTokens.push((tokenValue = text.slice(lastIndex))); + tokens.push(JSON.stringify(tokenValue)); + } + return { + expression: tokens.join('+'), + tokens: rawTokens + }; +} + +/* eslint-disable no-unused-vars */ +function baseWarn(msg, range) { + console.error(`[Vue compiler]: ${msg}`); +} +/* eslint-enable no-unused-vars */ +function pluckModuleFunction(modules, key) { + return modules ? modules.map(m => m[key]).filter(_ => _) : []; +} +function addProp(el, name, value, range, dynamic) { + (el.props || (el.props = [])).push(rangeSetItem({ name, value, dynamic }, range)); + el.plain = false; +} +function addAttr(el, name, value, range, dynamic) { + const attrs = dynamic + ? el.dynamicAttrs || (el.dynamicAttrs = []) + : el.attrs || (el.attrs = []); + attrs.push(rangeSetItem({ name, value, dynamic }, range)); + el.plain = false; +} +// add a raw attr (use this in preTransforms) +function addRawAttr(el, name, value, range) { + el.attrsMap[name] = value; + el.attrsList.push(rangeSetItem({ name, value }, range)); +} +function addDirective(el, name, rawName, value, arg, isDynamicArg, modifiers, range) { + (el.directives || (el.directives = [])).push(rangeSetItem({ + name, + rawName, + value, + arg, + isDynamicArg, + modifiers + }, range)); + el.plain = false; +} +function prependModifierMarker(symbol, name, dynamic) { + return dynamic ? `_p(${name},"${symbol}")` : symbol + name; // mark the event as captured +} +function addHandler(el, name, value, modifiers, important, warn, range, dynamic) { + modifiers = modifiers || emptyObject; + // normalize click.right and click.middle since they don't actually fire + // this is technically browser-specific, but at least for now browsers are + // the only target envs that have right/middle clicks. + if (modifiers.right) { + if (dynamic) { + name = `(${name})==='click'?'contextmenu':(${name})`; + } + else if (name === 'click') { + name = 'contextmenu'; + delete modifiers.right; + } + } + else if (modifiers.middle) { + if (dynamic) { + name = `(${name})==='click'?'mouseup':(${name})`; + } + else if (name === 'click') { + name = 'mouseup'; + } + } + // check capture modifier + if (modifiers.capture) { + delete modifiers.capture; + name = prependModifierMarker('!', name, dynamic); + } + if (modifiers.once) { + delete modifiers.once; + name = prependModifierMarker('~', name, dynamic); + } + /* istanbul ignore if */ + if (modifiers.passive) { + delete modifiers.passive; + name = prependModifierMarker('&', name, dynamic); + } + let events; + if (modifiers.native) { + delete modifiers.native; + events = el.nativeEvents || (el.nativeEvents = {}); + } + else { + events = el.events || (el.events = {}); + } + const newHandler = rangeSetItem({ value: value.trim(), dynamic }, range); + if (modifiers !== emptyObject) { + newHandler.modifiers = modifiers; + } + const handlers = events[name]; + /* istanbul ignore if */ + if (Array.isArray(handlers)) { + important ? handlers.unshift(newHandler) : handlers.push(newHandler); + } + else if (handlers) { + events[name] = important ? [newHandler, handlers] : [handlers, newHandler]; + } + else { + events[name] = newHandler; + } + el.plain = false; +} +function getRawBindingAttr(el, name) { + return (el.rawAttrsMap[':' + name] || + el.rawAttrsMap['v-bind:' + name] || + el.rawAttrsMap[name]); +} +function getBindingAttr(el, name, getStatic) { + const dynamicValue = getAndRemoveAttr(el, ':' + name) || getAndRemoveAttr(el, 'v-bind:' + name); + if (dynamicValue != null) { + return parseFilters(dynamicValue); + } + else if (getStatic !== false) { + const staticValue = getAndRemoveAttr(el, name); + if (staticValue != null) { + return JSON.stringify(staticValue); + } + } +} +// note: this only removes the attr from the Array (attrsList) so that it +// doesn't get processed by processAttrs. +// By default it does NOT remove it from the map (attrsMap) because the map is +// needed during codegen. +function getAndRemoveAttr(el, name, removeFromMap) { + let val; + if ((val = el.attrsMap[name]) != null) { + const list = el.attrsList; + for (let i = 0, l = list.length; i < l; i++) { + if (list[i].name === name) { + list.splice(i, 1); + break; + } + } + } + if (removeFromMap) { + delete el.attrsMap[name]; + } + return val; +} +function getAndRemoveAttrByRegex(el, name) { + const list = el.attrsList; + for (let i = 0, l = list.length; i < l; i++) { + const attr = list[i]; + if (name.test(attr.name)) { + list.splice(i, 1); + return attr; + } + } +} +function rangeSetItem(item, range) { + if (range) { + if (range.start != null) { + item.start = range.start; + } + if (range.end != null) { + item.end = range.end; + } + } + return item; +} + +function transformNode$1(el, options) { + options.warn || baseWarn; + const staticClass = getAndRemoveAttr(el, 'class'); + if (staticClass) { + el.staticClass = JSON.stringify(staticClass.replace(/\s+/g, ' ').trim()); + } + const classBinding = getBindingAttr(el, 'class', false /* getStatic */); + if (classBinding) { + el.classBinding = classBinding; + } +} +function genData$2(el) { + let data = ''; + if (el.staticClass) { + data += `staticClass:${el.staticClass},`; + } + if (el.classBinding) { + data += `class:${el.classBinding},`; + } + return data; +} +var klass = { + staticKeys: ['staticClass'], + transformNode: transformNode$1, + genData: genData$2 +}; + +const parseStyleText = cached(function (cssText) { + const res = {}; + const listDelimiter = /;(?![^(]*\))/g; + const propertyDelimiter = /:(.+)/; + cssText.split(listDelimiter).forEach(function (item) { + if (item) { + const tmp = item.split(propertyDelimiter); + tmp.length > 1 && (res[tmp[0].trim()] = tmp[1].trim()); + } + }); + return res; +}); + +function transformNode(el, options) { + options.warn || baseWarn; + const staticStyle = getAndRemoveAttr(el, 'style'); + if (staticStyle) { + el.staticStyle = JSON.stringify(parseStyleText(staticStyle)); + } + const styleBinding = getBindingAttr(el, 'style', false /* getStatic */); + if (styleBinding) { + el.styleBinding = styleBinding; + } +} +function genData$1(el) { + let data = ''; + if (el.staticStyle) { + data += `staticStyle:${el.staticStyle},`; + } + if (el.styleBinding) { + data += `style:(${el.styleBinding}),`; + } + return data; +} +var style = { + staticKeys: ['staticStyle'], + transformNode, + genData: genData$1 +}; + +/** + * Cross-platform code generation for component v-model + */ +function genComponentModel(el, value, modifiers) { + const { number, trim } = modifiers || {}; + const baseValueExpression = '$$v'; + let valueExpression = baseValueExpression; + if (trim) { + valueExpression = + `(typeof ${baseValueExpression} === 'string'` + + `? ${baseValueExpression}.trim()` + + `: ${baseValueExpression})`; + } + if (number) { + valueExpression = `_n(${valueExpression})`; + } + const assignment = genAssignmentCode(value, valueExpression); + el.model = { + value: `(${value})`, + expression: JSON.stringify(value), + callback: `function (${baseValueExpression}) {${assignment}}` + }; +} +/** + * Cross-platform codegen helper for generating v-model value assignment code. + */ +function genAssignmentCode(value, assignment) { + const res = parseModel(value); + if (res.key === null) { + return `${value}=${assignment}`; + } + else { + return `$set(${res.exp}, ${res.key}, ${assignment})`; + } +} +/** + * Parse a v-model expression into a base path and a final key segment. + * Handles both dot-path and possible square brackets. + * + * Possible cases: + * + * - test + * - test[key] + * - test[test1[key]] + * - test["a"][key] + * - xxx.test[a[a].test1[key]] + * - test.xxx.a["asa"][test1[key]] + * + */ +let len, str, chr, index, expressionPos, expressionEndPos; +function parseModel(val) { + // Fix https://github.com/vuejs/vue/pull/7730 + // allow v-model="obj.val " (trailing whitespace) + val = val.trim(); + len = val.length; + if (val.indexOf('[') < 0 || val.lastIndexOf(']') < len - 1) { + index = val.lastIndexOf('.'); + if (index > -1) { + return { + exp: val.slice(0, index), + key: '"' + val.slice(index + 1) + '"' + }; + } + else { + return { + exp: val, + key: null + }; + } + } + str = val; + index = expressionPos = expressionEndPos = 0; + while (!eof()) { + chr = next(); + /* istanbul ignore if */ + if (isStringStart(chr)) { + parseString(chr); + } + else if (chr === 0x5b) { + parseBracket(chr); + } + } + return { + exp: val.slice(0, expressionPos), + key: val.slice(expressionPos + 1, expressionEndPos) + }; +} +function next() { + return str.charCodeAt(++index); +} +function eof() { + return index >= len; +} +function isStringStart(chr) { + return chr === 0x22 || chr === 0x27; +} +function parseBracket(chr) { + let inBracket = 1; + expressionPos = index; + while (!eof()) { + chr = next(); + if (isStringStart(chr)) { + parseString(chr); + continue; + } + if (chr === 0x5b) + inBracket++; + if (chr === 0x5d) + inBracket--; + if (inBracket === 0) { + expressionEndPos = index; + break; + } + } +} +function parseString(chr) { + const stringQuote = chr; + while (!eof()) { + chr = next(); + if (chr === stringQuote) { + break; + } + } +} + +const onRE = /^@|^v-on:/; +const dirRE = /^v-|^@|^:|^#/; +const forAliasRE = /([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/; +const forIteratorRE = /,([^,\}\]]*)(?:,([^,\}\]]*))?$/; +const stripParensRE = /^\(|\)$/g; +const dynamicArgRE = /^\[.*\]$/; +const argRE = /:(.*)$/; +const bindRE = /^:|^\.|^v-bind:/; +const modifierRE = /\.[^.\]]+(?=[^\]]*$)/g; +const slotRE = /^v-slot(:|$)|^#/; +const lineBreakRE = /[\r\n]/; +const whitespaceRE = /[ \f\t\r\n]+/g; +const decodeHTMLCached = cached(he__default["default"].decode); +const emptySlotScopeToken = `_empty_`; +// configurable state +let warn$1; +let delimiters; +let transforms$1; +let preTransforms; +let postTransforms; +let platformIsPreTag; +let platformMustUseProp; +let platformGetTagNamespace; +function createASTElement(tag, attrs, parent) { + return { + type: 1, + tag, + attrsList: attrs, + attrsMap: makeAttrsMap(attrs), + rawAttrsMap: {}, + parent, + children: [] + }; +} +/** + * Convert HTML string to AST. + */ +function parse$a(template, options) { + warn$1 = options.warn || baseWarn; + platformIsPreTag = options.isPreTag || no; + platformMustUseProp = options.mustUseProp || no; + platformGetTagNamespace = options.getTagNamespace || no; + options.isReservedTag || no; + transforms$1 = pluckModuleFunction(options.modules, 'transformNode'); + preTransforms = pluckModuleFunction(options.modules, 'preTransformNode'); + postTransforms = pluckModuleFunction(options.modules, 'postTransformNode'); + delimiters = options.delimiters; + const stack = []; + const preserveWhitespace = options.preserveWhitespace !== false; + const whitespaceOption = options.whitespace; + let root; + let currentParent; + let inVPre = false; + let inPre = false; + function closeElement(element) { + trimEndingWhitespace(element); + if (!inVPre && !element.processed) { + element = processElement(element, options); + } + // tree management + if (!stack.length && element !== root) { + // allow root elements with v-if, v-else-if and v-else + if (root.if && (element.elseif || element.else)) { + addIfCondition(root, { + exp: element.elseif, + block: element + }); + } + } + if (currentParent && !element.forbidden) { + if (element.elseif || element.else) { + processIfConditions(element, currentParent); + } + else { + if (element.slotScope) { + // scoped slot + // keep it in the children list so that v-else(-if) conditions can + // find it as the prev node. + const name = element.slotTarget || '"default"'; + (currentParent.scopedSlots || (currentParent.scopedSlots = {}))[name] = element; + } + currentParent.children.push(element); + element.parent = currentParent; + } + } + // final children cleanup + // filter out scoped slots + element.children = element.children.filter(c => !c.slotScope); + // remove trailing whitespace node again + trimEndingWhitespace(element); + // check pre state + if (element.pre) { + inVPre = false; + } + if (platformIsPreTag(element.tag)) { + inPre = false; + } + // apply post-transforms + for (let i = 0; i < postTransforms.length; i++) { + postTransforms[i](element, options); + } + } + function trimEndingWhitespace(el) { + // remove trailing whitespace node + if (!inPre) { + let lastNode; + while ((lastNode = el.children[el.children.length - 1]) && + lastNode.type === 3 && + lastNode.text === ' ') { + el.children.pop(); + } + } + } + parseHTML(template, { + warn: warn$1, + expectHTML: options.expectHTML, + isUnaryTag: options.isUnaryTag, + canBeLeftOpenTag: options.canBeLeftOpenTag, + shouldDecodeNewlines: options.shouldDecodeNewlines, + shouldDecodeNewlinesForHref: options.shouldDecodeNewlinesForHref, + shouldKeepComment: options.comments, + outputSourceRange: options.outputSourceRange, + start(tag, attrs, unary, start, end) { + // check namespace. + // inherit parent ns if there is one + const ns = (currentParent && currentParent.ns) || platformGetTagNamespace(tag); + // handle IE svg bug + /* istanbul ignore if */ + if (isIE && ns === 'svg') { + attrs = guardIESVGBug(attrs); + } + let element = createASTElement(tag, attrs, currentParent); + if (ns) { + element.ns = ns; + } + if (isForbiddenTag(element) && !isServerRendering()) { + element.forbidden = true; + } + // apply pre-transforms + for (let i = 0; i < preTransforms.length; i++) { + element = preTransforms[i](element, options) || element; + } + if (!inVPre) { + processPre(element); + if (element.pre) { + inVPre = true; + } + } + if (platformIsPreTag(element.tag)) { + inPre = true; + } + if (inVPre) { + processRawAttrs(element); + } + else if (!element.processed) { + // structural directives + processFor(element); + processIf(element); + processOnce(element); + } + if (!root) { + root = element; + } + if (!unary) { + currentParent = element; + stack.push(element); + } + else { + closeElement(element); + } + }, + end(tag, start, end) { + const element = stack[stack.length - 1]; + // pop stack + stack.length -= 1; + currentParent = stack[stack.length - 1]; + closeElement(element); + }, + chars(text, start, end) { + if (!currentParent) { + return; + } + // IE textarea placeholder bug + /* istanbul ignore if */ + if (isIE && + currentParent.tag === 'textarea' && + currentParent.attrsMap.placeholder === text) { + return; + } + const children = currentParent.children; + if (inPre || text.trim()) { + text = isTextTag(currentParent) + ? text + : decodeHTMLCached(text); + } + else if (!children.length) { + // remove the whitespace-only node right after an opening tag + text = ''; + } + else if (whitespaceOption) { + if (whitespaceOption === 'condense') { + // in condense mode, remove the whitespace node if it contains + // line break, otherwise condense to a single space + text = lineBreakRE.test(text) ? '' : ' '; + } + else { + text = ' '; + } + } + else { + text = preserveWhitespace ? ' ' : ''; + } + if (text) { + if (!inPre && whitespaceOption === 'condense') { + // condense consecutive whitespaces into single space + text = text.replace(whitespaceRE, ' '); + } + let res; + let child; + if (!inVPre && text !== ' ' && (res = parseText(text, delimiters))) { + child = { + type: 2, + expression: res.expression, + tokens: res.tokens, + text + }; + } + else if (text !== ' ' || + !children.length || + children[children.length - 1].text !== ' ') { + child = { + type: 3, + text + }; + } + if (child) { + children.push(child); + } + } + }, + comment(text, start, end) { + // adding anything as a sibling to the root node is forbidden + // comments should still be allowed, but ignored + if (currentParent) { + const child = { + type: 3, + text, + isComment: true + }; + currentParent.children.push(child); + } + } + }); + return root; +} +function processPre(el) { + if (getAndRemoveAttr(el, 'v-pre') != null) { + el.pre = true; + } +} +function processRawAttrs(el) { + const list = el.attrsList; + const len = list.length; + if (len) { + const attrs = (el.attrs = new Array(len)); + for (let i = 0; i < len; i++) { + attrs[i] = { + name: list[i].name, + value: JSON.stringify(list[i].value) + }; + if (list[i].start != null) { + attrs[i].start = list[i].start; + attrs[i].end = list[i].end; + } + } + } + else if (!el.pre) { + // non root node in pre blocks with no attributes + el.plain = true; + } +} +function processElement(element, options) { + processKey(element); + // determine whether this is a plain element after + // removing structural attributes + element.plain = + !element.key && !element.scopedSlots && !element.attrsList.length; + processRef(element); + processSlotContent(element); + processSlotOutlet(element); + processComponent(element); + for (let i = 0; i < transforms$1.length; i++) { + element = transforms$1[i](element, options) || element; + } + processAttrs(element); + return element; +} +function processKey(el) { + const exp = getBindingAttr(el, 'key'); + if (exp) { + el.key = exp; + } +} +function processRef(el) { + const ref = getBindingAttr(el, 'ref'); + if (ref) { + el.ref = ref; + el.refInFor = checkInFor(el); + } +} +function processFor(el) { + let exp; + if ((exp = getAndRemoveAttr(el, 'v-for'))) { + const res = parseFor(exp); + if (res) { + extend(el, res); + } + } +} +function parseFor(exp) { + const inMatch = exp.match(forAliasRE); + if (!inMatch) + return; + const res = {}; + res.for = inMatch[2].trim(); + const alias = inMatch[1].trim().replace(stripParensRE, ''); + const iteratorMatch = alias.match(forIteratorRE); + if (iteratorMatch) { + res.alias = alias.replace(forIteratorRE, '').trim(); + res.iterator1 = iteratorMatch[1].trim(); + if (iteratorMatch[2]) { + res.iterator2 = iteratorMatch[2].trim(); + } + } + else { + res.alias = alias; + } + return res; +} +function processIf(el) { + const exp = getAndRemoveAttr(el, 'v-if'); + if (exp) { + el.if = exp; + addIfCondition(el, { + exp: exp, + block: el + }); + } + else { + if (getAndRemoveAttr(el, 'v-else') != null) { + el.else = true; + } + const elseif = getAndRemoveAttr(el, 'v-else-if'); + if (elseif) { + el.elseif = elseif; + } + } +} +function processIfConditions(el, parent) { + const prev = findPrevElement(parent.children); + if (prev && prev.if) { + addIfCondition(prev, { + exp: el.elseif, + block: el + }); + } +} +function findPrevElement(children) { + let i = children.length; + while (i--) { + if (children[i].type === 1) { + return children[i]; + } + else { + children.pop(); + } + } +} +function addIfCondition(el, condition) { + if (!el.ifConditions) { + el.ifConditions = []; + } + el.ifConditions.push(condition); +} +function processOnce(el) { + const once = getAndRemoveAttr(el, 'v-once'); + if (once != null) { + el.once = true; + } +} +// handle content being passed to a component as slot, +// e.g. <template slot="xxx">, <div slot-scope="xxx"> +function processSlotContent(el) { + let slotScope; + if (el.tag === 'template') { + slotScope = getAndRemoveAttr(el, 'scope'); + el.slotScope = slotScope || getAndRemoveAttr(el, 'slot-scope'); + } + else if ((slotScope = getAndRemoveAttr(el, 'slot-scope'))) { + el.slotScope = slotScope; + } + // slot="xxx" + const slotTarget = getBindingAttr(el, 'slot'); + if (slotTarget) { + el.slotTarget = slotTarget === '""' ? '"default"' : slotTarget; + el.slotTargetDynamic = !!(el.attrsMap[':slot'] || el.attrsMap['v-bind:slot']); + // preserve slot as an attribute for native shadow DOM compat + // only for non-scoped slots. + if (el.tag !== 'template' && !el.slotScope) { + addAttr(el, 'slot', slotTarget, getRawBindingAttr(el, 'slot')); + } + } + // 2.6 v-slot syntax + { + if (el.tag === 'template') { + // v-slot on <template> + const slotBinding = getAndRemoveAttrByRegex(el, slotRE); + if (slotBinding) { + const { name, dynamic } = getSlotName(slotBinding); + el.slotTarget = name; + el.slotTargetDynamic = dynamic; + el.slotScope = slotBinding.value || emptySlotScopeToken; // force it into a scoped slot for perf + } + } + else { + // v-slot on component, denotes default slot + const slotBinding = getAndRemoveAttrByRegex(el, slotRE); + if (slotBinding) { + // add the component's children to its default slot + const slots = el.scopedSlots || (el.scopedSlots = {}); + const { name, dynamic } = getSlotName(slotBinding); + const slotContainer = (slots[name] = createASTElement('template', [], el)); + slotContainer.slotTarget = name; + slotContainer.slotTargetDynamic = dynamic; + slotContainer.children = el.children.filter((c) => { + if (!c.slotScope) { + c.parent = slotContainer; + return true; + } + }); + slotContainer.slotScope = slotBinding.value || emptySlotScopeToken; + // remove children as they are returned from scopedSlots now + el.children = []; + // mark el non-plain so data gets generated + el.plain = false; + } + } + } +} +function getSlotName(binding) { + let name = binding.name.replace(slotRE, ''); + if (!name) { + if (binding.name[0] !== '#') { + name = 'default'; + } + } + return dynamicArgRE.test(name) + ? // dynamic [name] + { name: name.slice(1, -1), dynamic: true } + : // static name + { name: `"${name}"`, dynamic: false }; +} +// handle <slot/> outlets +function processSlotOutlet(el) { + if (el.tag === 'slot') { + el.slotName = getBindingAttr(el, 'name'); + } +} +function processComponent(el) { + let binding; + if ((binding = getBindingAttr(el, 'is'))) { + el.component = binding; + } + if (getAndRemoveAttr(el, 'inline-template') != null) { + el.inlineTemplate = true; + } +} +function processAttrs(el) { + const list = el.attrsList; + let i, l, name, rawName, value, modifiers, syncGen, isDynamic; + for (i = 0, l = list.length; i < l; i++) { + name = rawName = list[i].name; + value = list[i].value; + if (dirRE.test(name)) { + // mark element as dynamic + el.hasBindings = true; + // modifiers + modifiers = parseModifiers(name.replace(dirRE, '')); + // support .foo shorthand syntax for the .prop modifier + if (modifiers) { + name = name.replace(modifierRE, ''); + } + if (bindRE.test(name)) { + // v-bind + name = name.replace(bindRE, ''); + value = parseFilters(value); + isDynamic = dynamicArgRE.test(name); + if (isDynamic) { + name = name.slice(1, -1); + } + if (modifiers) { + if (modifiers.prop && !isDynamic) { + name = camelize(name); + if (name === 'innerHtml') + name = 'innerHTML'; + } + if (modifiers.camel && !isDynamic) { + name = camelize(name); + } + if (modifiers.sync) { + syncGen = genAssignmentCode(value, `$event`); + if (!isDynamic) { + addHandler(el, `update:${camelize(name)}`, syncGen, null, false, warn$1, list[i]); + if (hyphenate(name) !== camelize(name)) { + addHandler(el, `update:${hyphenate(name)}`, syncGen, null, false, warn$1, list[i]); + } + } + else { + // handler w/ dynamic event name + addHandler(el, `"update:"+(${name})`, syncGen, null, false, warn$1, list[i], true // dynamic + ); + } + } + } + if ((modifiers && modifiers.prop) || + (!el.component && platformMustUseProp(el.tag, el.attrsMap.type, name))) { + addProp(el, name, value, list[i], isDynamic); + } + else { + addAttr(el, name, value, list[i], isDynamic); + } + } + else if (onRE.test(name)) { + // v-on + name = name.replace(onRE, ''); + isDynamic = dynamicArgRE.test(name); + if (isDynamic) { + name = name.slice(1, -1); + } + addHandler(el, name, value, modifiers, false, warn$1, list[i], isDynamic); + } + else { + // normal directives + name = name.replace(dirRE, ''); + // parse arg + const argMatch = name.match(argRE); + let arg = argMatch && argMatch[1]; + isDynamic = false; + if (arg) { + name = name.slice(0, -(arg.length + 1)); + if (dynamicArgRE.test(arg)) { + arg = arg.slice(1, -1); + isDynamic = true; + } + } + addDirective(el, name, rawName, value, arg, isDynamic, modifiers, list[i]); + } + } + else { + addAttr(el, name, JSON.stringify(value), list[i]); + // #6887 firefox doesn't update muted state if set via attribute + // even immediately after element creation + if (!el.component && + name === 'muted' && + platformMustUseProp(el.tag, el.attrsMap.type, name)) { + addProp(el, name, 'true', list[i]); + } + } + } +} +function checkInFor(el) { + let parent = el; + while (parent) { + if (parent.for !== undefined) { + return true; + } + parent = parent.parent; + } + return false; +} +function parseModifiers(name) { + const match = name.match(modifierRE); + if (match) { + const ret = {}; + match.forEach(m => { + ret[m.slice(1)] = true; + }); + return ret; + } +} +function makeAttrsMap(attrs) { + const map = {}; + for (let i = 0, l = attrs.length; i < l; i++) { + map[attrs[i].name] = attrs[i].value; + } + return map; +} +// for script (e.g. type="x/template") or style, do not decode content +function isTextTag(el) { + return el.tag === 'script' || el.tag === 'style'; +} +function isForbiddenTag(el) { + return (el.tag === 'style' || + (el.tag === 'script' && + (!el.attrsMap.type || el.attrsMap.type === 'text/javascript'))); +} +const ieNSBug = /^xmlns:NS\d+/; +const ieNSPrefix = /^NS\d+:/; +/* istanbul ignore next */ +function guardIESVGBug(attrs) { + const res = []; + for (let i = 0; i < attrs.length; i++) { + const attr = attrs[i]; + if (!ieNSBug.test(attr.name)) { + attr.name = attr.name.replace(ieNSPrefix, ''); + res.push(attr); + } + } + return res; +} + +/** + * Expand input[v-model] with dynamic type bindings into v-if-else chains + * Turn this: + * <input v-model="data[type]" :type="type"> + * into this: + * <input v-if="type === 'checkbox'" type="checkbox" v-model="data[type]"> + * <input v-else-if="type === 'radio'" type="radio" v-model="data[type]"> + * <input v-else :type="type" v-model="data[type]"> + */ +function preTransformNode(el, options) { + if (el.tag === 'input') { + const map = el.attrsMap; + if (!map['v-model']) { + return; + } + let typeBinding; + if (map[':type'] || map['v-bind:type']) { + typeBinding = getBindingAttr(el, 'type'); + } + if (!map.type && !typeBinding && map['v-bind']) { + typeBinding = `(${map['v-bind']}).type`; + } + if (typeBinding) { + const ifCondition = getAndRemoveAttr(el, 'v-if', true); + const ifConditionExtra = ifCondition ? `&&(${ifCondition})` : ``; + const hasElse = getAndRemoveAttr(el, 'v-else', true) != null; + const elseIfCondition = getAndRemoveAttr(el, 'v-else-if', true); + // 1. checkbox + const branch0 = cloneASTElement(el); + // process for on the main node + processFor(branch0); + addRawAttr(branch0, 'type', 'checkbox'); + processElement(branch0, options); + branch0.processed = true; // prevent it from double-processed + branch0.if = `(${typeBinding})==='checkbox'` + ifConditionExtra; + addIfCondition(branch0, { + exp: branch0.if, + block: branch0 + }); + // 2. add radio else-if condition + const branch1 = cloneASTElement(el); + getAndRemoveAttr(branch1, 'v-for', true); + addRawAttr(branch1, 'type', 'radio'); + processElement(branch1, options); + addIfCondition(branch0, { + exp: `(${typeBinding})==='radio'` + ifConditionExtra, + block: branch1 + }); + // 3. other + const branch2 = cloneASTElement(el); + getAndRemoveAttr(branch2, 'v-for', true); + addRawAttr(branch2, ':type', typeBinding); + processElement(branch2, options); + addIfCondition(branch0, { + exp: ifCondition, + block: branch2 + }); + if (hasElse) { + branch0.else = true; + } + else if (elseIfCondition) { + branch0.elseif = elseIfCondition; + } + return branch0; + } + } +} +function cloneASTElement(el) { + return createASTElement(el.tag, el.attrsList.slice(), el.parent); +} +var model$1 = { + preTransformNode +}; + +var modules = [klass, style, model$1]; +// in some cases, the event used has to be determined at runtime +// so we used some reserved tokens during compile. +const RANGE_TOKEN = '__r'; +function model(el, dir, _warn) { + const value = dir.value; + const modifiers = dir.modifiers; + const tag = el.tag; + const type = el.attrsMap.type; + if (el.component) { + genComponentModel(el, value, modifiers); + // component v-model doesn't need extra runtime + return false; + } + else if (tag === 'select') { + genSelect(el, value, modifiers); + } + else if (tag === 'input' && type === 'checkbox') { + genCheckboxModel(el, value, modifiers); + } + else if (tag === 'input' && type === 'radio') { + genRadioModel(el, value, modifiers); + } + else if (tag === 'input' || tag === 'textarea') { + genDefaultModel(el, value, modifiers); + } + else { + genComponentModel(el, value, modifiers); + // component v-model doesn't need extra runtime + return false; + } + // ensure runtime directive metadata + return true; +} +function genCheckboxModel(el, value, modifiers) { + const number = modifiers && modifiers.number; + const valueBinding = getBindingAttr(el, 'value') || 'null'; + const trueValueBinding = getBindingAttr(el, 'true-value') || 'true'; + const falseValueBinding = getBindingAttr(el, 'false-value') || 'false'; + addProp(el, 'checked', `Array.isArray(${value})` + + `?_i(${value},${valueBinding})>-1` + + (trueValueBinding === 'true' + ? `:(${value})` + : `:_q(${value},${trueValueBinding})`)); + addHandler(el, 'change', `var $$a=${value},` + + '$$el=$event.target,' + + `$$c=$$el.checked?(${trueValueBinding}):(${falseValueBinding});` + + 'if(Array.isArray($$a)){' + + `var $$v=${number ? '_n(' + valueBinding + ')' : valueBinding},` + + '$$i=_i($$a,$$v);' + + `if($$el.checked){$$i<0&&(${genAssignmentCode(value, '$$a.concat([$$v])')})}` + + `else{$$i>-1&&(${genAssignmentCode(value, '$$a.slice(0,$$i).concat($$a.slice($$i+1))')})}` + + `}else{${genAssignmentCode(value, '$$c')}}`, null, true); +} +function genRadioModel(el, value, modifiers) { + const number = modifiers && modifiers.number; + let valueBinding = getBindingAttr(el, 'value') || 'null'; + valueBinding = number ? `_n(${valueBinding})` : valueBinding; + addProp(el, 'checked', `_q(${value},${valueBinding})`); + addHandler(el, 'change', genAssignmentCode(value, valueBinding), null, true); +} +function genSelect(el, value, modifiers) { + const number = modifiers && modifiers.number; + const selectedVal = `Array.prototype.filter` + + `.call($event.target.options,function(o){return o.selected})` + + `.map(function(o){var val = "_value" in o ? o._value : o.value;` + + `return ${number ? '_n(val)' : 'val'}})`; + const assignment = '$event.target.multiple ? $$selectedVal : $$selectedVal[0]'; + let code = `var $$selectedVal = ${selectedVal};`; + code = `${code} ${genAssignmentCode(value, assignment)}`; + addHandler(el, 'change', code, null, true); +} +function genDefaultModel(el, value, modifiers) { + const type = el.attrsMap.type; + const { lazy, number, trim } = modifiers || {}; + const needCompositionGuard = !lazy && type !== 'range'; + const event = lazy ? 'change' : type === 'range' ? RANGE_TOKEN : 'input'; + let valueExpression = '$event.target.value'; + if (trim) { + valueExpression = `$event.target.value.trim()`; + } + if (number) { + valueExpression = `_n(${valueExpression})`; + } + let code = genAssignmentCode(value, valueExpression); + if (needCompositionGuard) { + code = `if($event.target.composing)return;${code}`; + } + addProp(el, 'value', `(${value})`); + addHandler(el, event, code, null, true); + if (trim || number) { + addHandler(el, 'blur', '$forceUpdate()'); + } +} + +function text(el, dir) { + if (dir.value) { + addProp(el, 'textContent', `_s(${dir.value})`, dir); + } +} + +function html$3(el, dir) { + if (dir.value) { + addProp(el, 'innerHTML', `_s(${dir.value})`, dir); + } +} + +var directives$1 = { + model, + text, + html: html$3 +}; + +const baseOptions = { + expectHTML: true, + modules, + directives: directives$1, + isPreTag, + isUnaryTag, + mustUseProp, + canBeLeftOpenTag, + isReservedTag, + getTagNamespace, + staticKeys: genStaticKeys$1(modules) +}; + +let isStaticKey; +let isPlatformReservedTag$1; +const genStaticKeysCached = cached(genStaticKeys); +/** + * Goal of the optimizer: walk the generated template AST tree + * and detect sub-trees that are purely static, i.e. parts of + * the DOM that never needs to change. + * + * Once we detect these sub-trees, we can: + * + * 1. Hoist them into constants, so that we no longer need to + * create fresh nodes for them on each re-render; + * 2. Completely skip them in the patching process. + */ +function optimize$1(root, options) { + if (!root) + return; + isStaticKey = genStaticKeysCached(options.staticKeys || ''); + isPlatformReservedTag$1 = options.isReservedTag || no; + // first pass: mark all non-static nodes. + markStatic(root); + // second pass: mark static roots. + markStaticRoots(root, false); +} +function genStaticKeys(keys) { + return makeMap('type,tag,attrsList,attrsMap,plain,parent,children,attrs,start,end,rawAttrsMap' + + (keys ? ',' + keys : '')); +} +function markStatic(node) { + node.static = isStatic(node); + if (node.type === 1) { + // do not make component slot content static. this avoids + // 1. components not able to mutate slot nodes + // 2. static slot content fails for hot-reloading + if (!isPlatformReservedTag$1(node.tag) && + node.tag !== 'slot' && + node.attrsMap['inline-template'] == null) { + return; + } + for (let i = 0, l = node.children.length; i < l; i++) { + const child = node.children[i]; + markStatic(child); + if (!child.static) { + node.static = false; + } + } + if (node.ifConditions) { + for (let i = 1, l = node.ifConditions.length; i < l; i++) { + const block = node.ifConditions[i].block; + markStatic(block); + if (!block.static) { + node.static = false; + } + } + } + } +} +function markStaticRoots(node, isInFor) { + if (node.type === 1) { + if (node.static || node.once) { + node.staticInFor = isInFor; + } + // For a node to qualify as a static root, it should have children that + // are not just static text. Otherwise the cost of hoisting out will + // outweigh the benefits and it's better off to just always render it fresh. + if (node.static && + node.children.length && + !(node.children.length === 1 && node.children[0].type === 3)) { + node.staticRoot = true; + return; + } + else { + node.staticRoot = false; + } + if (node.children) { + for (let i = 0, l = node.children.length; i < l; i++) { + markStaticRoots(node.children[i], isInFor || !!node.for); + } + } + if (node.ifConditions) { + for (let i = 1, l = node.ifConditions.length; i < l; i++) { + markStaticRoots(node.ifConditions[i].block, isInFor); + } + } + } +} +function isStatic(node) { + if (node.type === 2) { + // expression + return false; + } + if (node.type === 3) { + // text + return true; + } + return !!(node.pre || + (!node.hasBindings && // no dynamic bindings + !node.if && + !node.for && // not v-if or v-for or v-else + !isBuiltInTag(node.tag) && // not a built-in + isPlatformReservedTag$1(node.tag) && // not a component + !isDirectChildOfTemplateFor(node) && + Object.keys(node).every(isStaticKey))); +} +function isDirectChildOfTemplateFor(node) { + while (node.parent) { + node = node.parent; + if (node.tag !== 'template') { + return false; + } + if (node.for) { + return true; + } + } + return false; +} + +const fnExpRE = /^([\w$_]+|\([^)]*?\))\s*=>|^function(?:\s+[\w$]+)?\s*\(/; +const fnInvokeRE = /\([^)]*?\);*$/; +const simplePathRE = /^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['[^']*?']|\["[^"]*?"]|\[\d+]|\[[A-Za-z_$][\w$]*])*$/; +// KeyboardEvent.keyCode aliases +const keyCodes = { + esc: 27, + tab: 9, + enter: 13, + space: 32, + up: 38, + left: 37, + right: 39, + down: 40, + delete: [8, 46] +}; +// KeyboardEvent.key aliases +const keyNames = { + // #7880: IE11 and Edge use `Esc` for Escape key name. + esc: ['Esc', 'Escape'], + tab: 'Tab', + enter: 'Enter', + // #9112: IE11 uses `Spacebar` for Space key name. + space: [' ', 'Spacebar'], + // #7806: IE11 uses key names without `Arrow` prefix for arrow keys. + up: ['Up', 'ArrowUp'], + left: ['Left', 'ArrowLeft'], + right: ['Right', 'ArrowRight'], + down: ['Down', 'ArrowDown'], + // #9112: IE11 uses `Del` for Delete key name. + delete: ['Backspace', 'Delete', 'Del'] +}; +// #4868: modifiers that prevent the execution of the listener +// need to explicitly return null so that we can determine whether to remove +// the listener for .once +const genGuard = condition => `if(${condition})return null;`; +const modifierCode = { + stop: '$event.stopPropagation();', + prevent: '$event.preventDefault();', + self: genGuard(`$event.target !== $event.currentTarget`), + ctrl: genGuard(`!$event.ctrlKey`), + shift: genGuard(`!$event.shiftKey`), + alt: genGuard(`!$event.altKey`), + meta: genGuard(`!$event.metaKey`), + left: genGuard(`'button' in $event && $event.button !== 0`), + middle: genGuard(`'button' in $event && $event.button !== 1`), + right: genGuard(`'button' in $event && $event.button !== 2`) +}; +function genHandlers(events, isNative) { + const prefix = isNative ? 'nativeOn:' : 'on:'; + let staticHandlers = ``; + let dynamicHandlers = ``; + for (const name in events) { + const handlerCode = genHandler(events[name]); + //@ts-expect-error + if (events[name] && events[name].dynamic) { + dynamicHandlers += `${name},${handlerCode},`; + } + else { + staticHandlers += `"${name}":${handlerCode},`; + } + } + staticHandlers = `{${staticHandlers.slice(0, -1)}}`; + if (dynamicHandlers) { + return prefix + `_d(${staticHandlers},[${dynamicHandlers.slice(0, -1)}])`; + } + else { + return prefix + staticHandlers; + } +} +function genHandler(handler) { + if (!handler) { + return 'function(){}'; + } + if (Array.isArray(handler)) { + return `[${handler.map(handler => genHandler(handler)).join(',')}]`; + } + const isMethodPath = simplePathRE.test(handler.value); + const isFunctionExpression = fnExpRE.test(handler.value); + const isFunctionInvocation = simplePathRE.test(handler.value.replace(fnInvokeRE, '')); + if (!handler.modifiers) { + if (isMethodPath || isFunctionExpression) { + return handler.value; + } + return `function($event){${isFunctionInvocation ? `return ${handler.value}` : handler.value}}`; // inline statement + } + else { + let code = ''; + let genModifierCode = ''; + const keys = []; + for (const key in handler.modifiers) { + if (modifierCode[key]) { + genModifierCode += modifierCode[key]; + // left/right + if (keyCodes[key]) { + keys.push(key); + } + } + else if (key === 'exact') { + const modifiers = handler.modifiers; + genModifierCode += genGuard(['ctrl', 'shift', 'alt', 'meta'] + .filter(keyModifier => !modifiers[keyModifier]) + .map(keyModifier => `$event.${keyModifier}Key`) + .join('||')); + } + else { + keys.push(key); + } + } + if (keys.length) { + code += genKeyFilter(keys); + } + // Make sure modifiers like prevent and stop get executed after key filtering + if (genModifierCode) { + code += genModifierCode; + } + const handlerCode = isMethodPath + ? `return ${handler.value}.apply(null, arguments)` + : isFunctionExpression + ? `return (${handler.value}).apply(null, arguments)` + : isFunctionInvocation + ? `return ${handler.value}` + : handler.value; + return `function($event){${code}${handlerCode}}`; + } +} +function genKeyFilter(keys) { + return ( + // make sure the key filters only apply to KeyboardEvents + // #9441: can't use 'keyCode' in $event because Chrome autofill fires fake + // key events that do not have keyCode property... + `if(!$event.type.indexOf('key')&&` + + `${keys.map(genFilterCode).join('&&')})return null;`); +} +function genFilterCode(key) { + const keyVal = parseInt(key, 10); + if (keyVal) { + return `$event.keyCode!==${keyVal}`; + } + const keyCode = keyCodes[key]; + const keyName = keyNames[key]; + return (`_k($event.keyCode,` + + `${JSON.stringify(key)},` + + `${JSON.stringify(keyCode)},` + + `$event.key,` + + `${JSON.stringify(keyName)}` + + `)`); +} + +function on(el, dir) { + el.wrapListeners = (code) => `_g(${code},${dir.value})`; +} + +function bind(el, dir) { + el.wrapData = (code) => { + return `_b(${code},'${el.tag}',${dir.value},${dir.modifiers && dir.modifiers.prop ? 'true' : 'false'}${dir.modifiers && dir.modifiers.sync ? ',true' : ''})`; + }; +} + +var baseDirectives = { + on, + bind, + cloak: noop +}; + +class CodegenState { + constructor(options) { + this.options = options; + this.warn = options.warn || baseWarn; + this.transforms = pluckModuleFunction(options.modules, 'transformCode'); + this.dataGenFns = pluckModuleFunction(options.modules, 'genData'); + this.directives = extend(extend({}, baseDirectives), options.directives); + const isReservedTag = options.isReservedTag || no; + this.maybeComponent = (el) => !!el.component || !isReservedTag(el.tag); + this.onceId = 0; + this.staticRenderFns = []; + this.pre = false; + } +} +function generate$1(ast, options) { + const state = new CodegenState(options); + // fix #11483, Root level <script> tags should not be rendered. + const code = ast + ? ast.tag === 'script' + ? 'null' + : genElement(ast, state) + : '_c("div")'; + return { + render: `with(this){return ${code}}`, + staticRenderFns: state.staticRenderFns + }; +} +function genElement(el, state) { + if (el.parent) { + el.pre = el.pre || el.parent.pre; + } + if (el.staticRoot && !el.staticProcessed) { + return genStatic(el, state); + } + else if (el.once && !el.onceProcessed) { + return genOnce(el, state); + } + else if (el.for && !el.forProcessed) { + return genFor(el, state); + } + else if (el.if && !el.ifProcessed) { + return genIf(el, state); + } + else if (el.tag === 'template' && !el.slotTarget && !state.pre) { + return genChildren(el, state) || 'void 0'; + } + else if (el.tag === 'slot') { + return genSlot(el, state); + } + else { + // component or element + let code; + if (el.component) { + code = genComponent(el.component, el, state); + } + else { + let data; + const maybeComponent = state.maybeComponent(el); + if (!el.plain || (el.pre && maybeComponent)) { + data = genData(el, state); + } + let tag; + // check if this is a component in <script setup> + const bindings = state.options.bindings; + if (maybeComponent && bindings && bindings.__isScriptSetup !== false) { + tag = checkBindingType(bindings, el.tag); + } + if (!tag) + tag = `'${el.tag}'`; + const children = el.inlineTemplate ? null : genChildren(el, state, true); + code = `_c(${tag}${data ? `,${data}` : '' // data + }${children ? `,${children}` : '' // children + })`; + } + // module transforms + for (let i = 0; i < state.transforms.length; i++) { + code = state.transforms[i](el, code); + } + return code; + } +} +function checkBindingType(bindings, key) { + const camelName = camelize(key); + const PascalName = capitalize(camelName); + const checkType = (type) => { + if (bindings[key] === type) { + return key; + } + if (bindings[camelName] === type) { + return camelName; + } + if (bindings[PascalName] === type) { + return PascalName; + } + }; + const fromConst = checkType("setup-const" /* BindingTypes.SETUP_CONST */) || + checkType("setup-reactive-const" /* BindingTypes.SETUP_REACTIVE_CONST */); + if (fromConst) { + return fromConst; + } + const fromMaybeRef = checkType("setup-let" /* BindingTypes.SETUP_LET */) || + checkType("setup-ref" /* BindingTypes.SETUP_REF */) || + checkType("setup-maybe-ref" /* BindingTypes.SETUP_MAYBE_REF */); + if (fromMaybeRef) { + return fromMaybeRef; + } +} +// hoist static sub-trees out +function genStatic(el, state) { + el.staticProcessed = true; + // Some elements (templates) need to behave differently inside of a v-pre + // node. All pre nodes are static roots, so we can use this as a location to + // wrap a state change and reset it upon exiting the pre node. + const originalPreState = state.pre; + if (el.pre) { + state.pre = el.pre; + } + state.staticRenderFns.push(`with(this){return ${genElement(el, state)}}`); + state.pre = originalPreState; + return `_m(${state.staticRenderFns.length - 1}${el.staticInFor ? ',true' : ''})`; +} +// v-once +function genOnce(el, state) { + el.onceProcessed = true; + if (el.if && !el.ifProcessed) { + return genIf(el, state); + } + else if (el.staticInFor) { + let key = ''; + let parent = el.parent; + while (parent) { + if (parent.for) { + key = parent.key; + break; + } + parent = parent.parent; + } + if (!key) { + return genElement(el, state); + } + return `_o(${genElement(el, state)},${state.onceId++},${key})`; + } + else { + return genStatic(el, state); + } +} +function genIf(el, state, altGen, altEmpty) { + el.ifProcessed = true; // avoid recursion + return genIfConditions(el.ifConditions.slice(), state, altGen, altEmpty); +} +function genIfConditions(conditions, state, altGen, altEmpty) { + if (!conditions.length) { + return altEmpty || '_e()'; + } + const condition = conditions.shift(); + if (condition.exp) { + return `(${condition.exp})?${genTernaryExp(condition.block)}:${genIfConditions(conditions, state, altGen, altEmpty)}`; + } + else { + return `${genTernaryExp(condition.block)}`; + } + // v-if with v-once should generate code like (a)?_m(0):_m(1) + function genTernaryExp(el) { + return altGen + ? altGen(el, state) + : el.once + ? genOnce(el, state) + : genElement(el, state); + } +} +function genFor(el, state, altGen, altHelper) { + const exp = el.for; + const alias = el.alias; + const iterator1 = el.iterator1 ? `,${el.iterator1}` : ''; + const iterator2 = el.iterator2 ? `,${el.iterator2}` : ''; + el.forProcessed = true; // avoid recursion + return (`${altHelper || '_l'}((${exp}),` + + `function(${alias}${iterator1}${iterator2}){` + + `return ${(altGen || genElement)(el, state)}` + + '})'); +} +function genData(el, state) { + let data = '{'; + // directives first. + // directives may mutate the el's other properties before they are generated. + const dirs = genDirectives(el, state); + if (dirs) + data += dirs + ','; + // key + if (el.key) { + data += `key:${el.key},`; + } + // ref + if (el.ref) { + data += `ref:${el.ref},`; + } + if (el.refInFor) { + data += `refInFor:true,`; + } + // pre + if (el.pre) { + data += `pre:true,`; + } + // record original tag name for components using "is" attribute + if (el.component) { + data += `tag:"${el.tag}",`; + } + // module data generation functions + for (let i = 0; i < state.dataGenFns.length; i++) { + data += state.dataGenFns[i](el); + } + // attributes + if (el.attrs) { + data += `attrs:${genProps(el.attrs)},`; + } + // DOM props + if (el.props) { + data += `domProps:${genProps(el.props)},`; + } + // event handlers + if (el.events) { + data += `${genHandlers(el.events, false)},`; + } + if (el.nativeEvents) { + data += `${genHandlers(el.nativeEvents, true)},`; + } + // slot target + // only for non-scoped slots + if (el.slotTarget && !el.slotScope) { + data += `slot:${el.slotTarget},`; + } + // scoped slots + if (el.scopedSlots) { + data += `${genScopedSlots(el, el.scopedSlots, state)},`; + } + // component v-model + if (el.model) { + data += `model:{value:${el.model.value},callback:${el.model.callback},expression:${el.model.expression}},`; + } + // inline-template + if (el.inlineTemplate) { + const inlineTemplate = genInlineTemplate(el, state); + if (inlineTemplate) { + data += `${inlineTemplate},`; + } + } + data = data.replace(/,$/, '') + '}'; + // v-bind dynamic argument wrap + // v-bind with dynamic arguments must be applied using the same v-bind object + // merge helper so that class/style/mustUseProp attrs are handled correctly. + if (el.dynamicAttrs) { + data = `_b(${data},"${el.tag}",${genProps(el.dynamicAttrs)})`; + } + // v-bind data wrap + if (el.wrapData) { + data = el.wrapData(data); + } + // v-on data wrap + if (el.wrapListeners) { + data = el.wrapListeners(data); + } + return data; +} +function genDirectives(el, state) { + const dirs = el.directives; + if (!dirs) + return; + let res = 'directives:['; + let hasRuntime = false; + let i, l, dir, needRuntime; + for (i = 0, l = dirs.length; i < l; i++) { + dir = dirs[i]; + needRuntime = true; + const gen = state.directives[dir.name]; + if (gen) { + // compile-time directive that manipulates AST. + // returns true if it also needs a runtime counterpart. + needRuntime = !!gen(el, dir, state.warn); + } + if (needRuntime) { + hasRuntime = true; + res += `{name:"${dir.name}",rawName:"${dir.rawName}"${dir.value + ? `,value:(${dir.value}),expression:${JSON.stringify(dir.value)}` + : ''}${dir.arg ? `,arg:${dir.isDynamicArg ? dir.arg : `"${dir.arg}"`}` : ''}${dir.modifiers ? `,modifiers:${JSON.stringify(dir.modifiers)}` : ''}},`; + } + } + if (hasRuntime) { + return res.slice(0, -1) + ']'; + } +} +function genInlineTemplate(el, state) { + const ast = el.children[0]; + if (ast && ast.type === 1) { + const inlineRenderFns = generate$1(ast, state.options); + return `inlineTemplate:{render:function(){${inlineRenderFns.render}},staticRenderFns:[${inlineRenderFns.staticRenderFns + .map(code => `function(){${code}}`) + .join(',')}]}`; + } +} +function genScopedSlots(el, slots, state) { + // by default scoped slots are considered "stable", this allows child + // components with only scoped slots to skip forced updates from parent. + // but in some cases we have to bail-out of this optimization + // for example if the slot contains dynamic names, has v-if or v-for on them... + let needsForceUpdate = el.for || + Object.keys(slots).some(key => { + const slot = slots[key]; + return (slot.slotTargetDynamic || slot.if || slot.for || containsSlotChild(slot) // is passing down slot from parent which may be dynamic + ); + }); + // #9534: if a component with scoped slots is inside a conditional branch, + // it's possible for the same component to be reused but with different + // compiled slot content. To avoid that, we generate a unique key based on + // the generated code of all the slot contents. + let needsKey = !!el.if; + // OR when it is inside another scoped slot or v-for (the reactivity may be + // disconnected due to the intermediate scope variable) + // #9438, #9506 + // TODO: this can be further optimized by properly analyzing in-scope bindings + // and skip force updating ones that do not actually use scope variables. + if (!needsForceUpdate) { + let parent = el.parent; + while (parent) { + if ((parent.slotScope && parent.slotScope !== emptySlotScopeToken) || + parent.for) { + needsForceUpdate = true; + break; + } + if (parent.if) { + needsKey = true; + } + parent = parent.parent; + } + } + const generatedSlots = Object.keys(slots) + .map(key => genScopedSlot(slots[key], state)) + .join(','); + return `scopedSlots:_u([${generatedSlots}]${needsForceUpdate ? `,null,true` : ``}${!needsForceUpdate && needsKey ? `,null,false,${hash(generatedSlots)}` : ``})`; +} +function hash(str) { + let hash = 5381; + let i = str.length; + while (i) { + hash = (hash * 33) ^ str.charCodeAt(--i); + } + return hash >>> 0; +} +function containsSlotChild(el) { + if (el.type === 1) { + if (el.tag === 'slot') { + return true; + } + return el.children.some(containsSlotChild); + } + return false; +} +function genScopedSlot(el, state) { + const isLegacySyntax = el.attrsMap['slot-scope']; + if (el.if && !el.ifProcessed && !isLegacySyntax) { + return genIf(el, state, genScopedSlot, `null`); + } + if (el.for && !el.forProcessed) { + return genFor(el, state, genScopedSlot); + } + const slotScope = el.slotScope === emptySlotScopeToken ? `` : String(el.slotScope); + const fn = `function(${slotScope}){` + + `return ${el.tag === 'template' + ? el.if && isLegacySyntax + ? `(${el.if})?${genChildren(el, state) || 'undefined'}:undefined` + : genChildren(el, state) || 'undefined' + : genElement(el, state)}}`; + // reverse proxy v-slot without scope on this.$slots + const reverseProxy = slotScope ? `` : `,proxy:true`; + return `{key:${el.slotTarget || `"default"`},fn:${fn}${reverseProxy}}`; +} +function genChildren(el, state, checkSkip, altGenElement, altGenNode) { + const children = el.children; + if (children.length) { + const el = children[0]; + // optimize single v-for + if (children.length === 1 && + el.for && + el.tag !== 'template' && + el.tag !== 'slot') { + const normalizationType = checkSkip + ? state.maybeComponent(el) + ? `,1` + : `,0` + : ``; + return `${(altGenElement || genElement)(el, state)}${normalizationType}`; + } + const normalizationType = checkSkip + ? getNormalizationType(children, state.maybeComponent) + : 0; + const gen = altGenNode || genNode; + return `[${children.map(c => gen(c, state)).join(',')}]${normalizationType ? `,${normalizationType}` : ''}`; + } +} +// determine the normalization needed for the children array. +// 0: no normalization needed +// 1: simple normalization needed (possible 1-level deep nested array) +// 2: full normalization needed +function getNormalizationType(children, maybeComponent) { + let res = 0; + for (let i = 0; i < children.length; i++) { + const el = children[i]; + if (el.type !== 1) { + continue; + } + if (needsNormalization(el) || + (el.ifConditions && + el.ifConditions.some(c => needsNormalization(c.block)))) { + res = 2; + break; + } + if (maybeComponent(el) || + (el.ifConditions && el.ifConditions.some(c => maybeComponent(c.block)))) { + res = 1; + } + } + return res; +} +function needsNormalization(el) { + return el.for !== undefined || el.tag === 'template' || el.tag === 'slot'; +} +function genNode(node, state) { + if (node.type === 1) { + return genElement(node, state); + } + else if (node.type === 3 && node.isComment) { + return genComment(node); + } + else { + return genText(node); + } +} +function genText(text) { + return `_v(${text.type === 2 + ? text.expression // no need for () because already wrapped in _s() + : transformSpecialNewlines(JSON.stringify(text.text))})`; +} +function genComment(comment) { + return `_e(${JSON.stringify(comment.text)})`; +} +function genSlot(el, state) { + const slotName = el.slotName || '"default"'; + const children = genChildren(el, state); + let res = `_t(${slotName}${children ? `,function(){return ${children}}` : ''}`; + const attrs = el.attrs || el.dynamicAttrs + ? genProps((el.attrs || []).concat(el.dynamicAttrs || []).map(attr => ({ + // slot props are camelized + name: camelize(attr.name), + value: attr.value, + dynamic: attr.dynamic + }))) + : null; + const bind = el.attrsMap['v-bind']; + if ((attrs || bind) && !children) { + res += `,null`; + } + if (attrs) { + res += `,${attrs}`; + } + if (bind) { + res += `${attrs ? '' : ',null'},${bind}`; + } + return res + ')'; +} +// componentName is el.component, take it as argument to shun flow's pessimistic refinement +function genComponent(componentName, el, state) { + const children = el.inlineTemplate ? null : genChildren(el, state, true); + return `_c(${componentName},${genData(el, state)}${children ? `,${children}` : ''})`; +} +function genProps(props) { + let staticProps = ``; + let dynamicProps = ``; + for (let i = 0; i < props.length; i++) { + const prop = props[i]; + const value = transformSpecialNewlines(prop.value); + if (prop.dynamic) { + dynamicProps += `${prop.name},${value},`; + } + else { + staticProps += `"${prop.name}":${value},`; + } + } + staticProps = `{${staticProps.slice(0, -1)}}`; + if (dynamicProps) { + return `_d(${staticProps},[${dynamicProps.slice(0, -1)}])`; + } + else { + return staticProps; + } +} +// #3895, #4268 +function transformSpecialNewlines(text) { + return text.replace(/\u2028/g, '\\u2028').replace(/\u2029/g, '\\u2029'); +} + +// these keywords should not appear inside expressions, but operators like +// typeof, instanceof and in are allowed +new RegExp('\\b' + + ('do,if,for,let,new,try,var,case,else,with,await,break,catch,class,const,' + + 'super,throw,while,yield,delete,export,import,return,switch,default,' + + 'extends,finally,continue,debugger,function,arguments') + .split(',') + .join('\\b|\\b') + + '\\b'); +// these unary operators should not be used as property/method names +new RegExp('\\b' + + 'delete,typeof,void'.split(',').join('\\s*\\([^\\)]*\\)|\\b') + + '\\s*\\([^\\)]*\\)'); + +const range$1 = 2; +function generateCodeFrame(source, start = 0, end = source.length) { + const lines = source.split(/\r?\n/); + let count = 0; + const res = []; + for (let i = 0; i < lines.length; i++) { + count += lines[i].length + 1; + if (count >= start) { + for (let j = i - range$1; j <= i + range$1 || end > count; j++) { + if (j < 0 || j >= lines.length) + continue; + res.push(`${j + 1}${repeat$3(` `, 3 - String(j + 1).length)}| ${lines[j]}`); + const lineLength = lines[j].length; + if (j === i) { + // push underline + const pad = start - (count - lineLength) + 1; + const length = end > count ? lineLength - pad : end - start; + res.push(` | ` + repeat$3(` `, pad) + repeat$3(`^`, length)); + } + else if (j > i) { + if (end > count) { + const length = Math.min(end - count, lineLength); + res.push(` | ` + repeat$3(`^`, length)); + } + count += lineLength + 1; + } + } + break; + } + } + return res.join('\n'); +} +function repeat$3(str, n) { + let result = ''; + if (n > 0) { + // eslint-disable-next-line no-constant-condition + while (true) { + // eslint-disable-line + if (n & 1) + result += str; + n >>>= 1; + if (n <= 0) + break; + str += str; + } + } + return result; +} + +function createFunction(code, errors) { + try { + return new Function(code); + } + catch (err) { + errors.push({ err, code }); + return noop; + } +} +function createCompileToFunctionFn(compile) { + const cache = Object.create(null); + return function compileToFunctions(template, options, vm) { + options = extend({}, options); + options.warn || warn$2; + delete options.warn; + // check cache + const key = options.delimiters + ? String(options.delimiters) + template + : template; + if (cache[key]) { + return cache[key]; + } + // compile + const compiled = compile(template, options); + // turn code into functions + const res = {}; + const fnGenErrors = []; + res.render = createFunction(compiled.render, fnGenErrors); + res.staticRenderFns = compiled.staticRenderFns.map(code => { + return createFunction(code, fnGenErrors); + }); + return (cache[key] = res); + }; +} + +function createCompilerCreator(baseCompile) { + return function createCompiler(baseOptions) { + function compile(template, options) { + const finalOptions = Object.create(baseOptions); + const errors = []; + const tips = []; + let warn = (msg, range, tip) => { + (tip ? tips : errors).push(msg); + }; + if (options) { + // merge custom modules + if (options.modules) { + finalOptions.modules = (baseOptions.modules || []).concat(options.modules); + } + // merge custom directives + if (options.directives) { + finalOptions.directives = extend(Object.create(baseOptions.directives || null), options.directives); + } + // copy other options + for (const key in options) { + if (key !== 'modules' && key !== 'directives') { + finalOptions[key] = options[key]; + } + } + } + finalOptions.warn = warn; + const compiled = baseCompile(template.trim(), finalOptions); + compiled.errors = errors; + compiled.tips = tips; + return compiled; + } + return { + compile, + compileToFunctions: createCompileToFunctionFn(compile) + }; + }; +} + +// `createCompilerCreator` allows creating compilers that use alternative +// parser/optimizer/codegen, e.g the SSR optimizing compiler. +// Here we just export a default compiler using the default parts. +const createCompiler$1 = createCompilerCreator(function baseCompile(template, options) { + const ast = parse$a(template.trim(), options); + if (options.optimize !== false) { + optimize$1(ast, options); + } + const code = generate$1(ast, options); + return { + ast, + render: code.render, + staticRenderFns: code.staticRenderFns + }; +}); + +const { compile: compile$1, compileToFunctions: compileToFunctions$1 } = createCompiler$1(baseOptions); + +const isAttr = makeMap('accept,accept-charset,accesskey,action,align,alt,async,autocomplete,' + + 'autofocus,autoplay,autosave,bgcolor,border,buffered,challenge,charset,' + + 'checked,cite,class,code,codebase,color,cols,colspan,content,' + + 'contenteditable,contextmenu,controls,coords,data,datetime,default,' + + 'defer,dir,dirname,disabled,download,draggable,dropzone,enctype,for,' + + 'form,formaction,headers,height,hidden,high,href,hreflang,http-equiv,' + + 'icon,id,ismap,itemprop,keytype,kind,label,lang,language,list,loop,low,' + + 'manifest,max,maxlength,media,method,GET,POST,min,multiple,email,file,' + + 'muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,' + + 'preload,radiogroup,readonly,rel,required,reversed,rows,rowspan,sandbox,' + + 'scope,scoped,seamless,selected,shape,size,type,text,password,sizes,span,' + + 'spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,' + + 'target,title,usemap,value,width,wrap'); +/* istanbul ignore next */ +const isRenderableAttr = (name) => { + return (isAttr(name) || name.indexOf('data-') === 0 || name.indexOf('aria-') === 0); +}; +const propsToAttrMap = { + acceptCharset: 'accept-charset', + className: 'class', + htmlFor: 'for', + httpEquiv: 'http-equiv' +}; +const ESC = { + '<': '<', + '>': '>', + '"': '"', + '&': '&' +}; +function escape(s) { + return s.replace(/[<>"&]/g, escapeChar); +} +function escapeChar(a) { + return ESC[a] || a; +} + +const plainStringRE = /^"(?:[^"\\]|\\.)*"$|^'(?:[^'\\]|\\.)*'$/; +// let the model AST transform translate v-model into appropriate +// props bindings +function applyModelTransform(el, state) { + if (el.directives) { + for (let i = 0; i < el.directives.length; i++) { + const dir = el.directives[i]; + if (dir.name === 'model') { + state.directives.model(el, dir, state.warn); + // remove value for textarea as its converted to text + if (el.tag === 'textarea' && el.props) { + el.props = el.props.filter(p => p.name !== 'value'); + } + break; + } + } + } +} +function genAttrSegments(attrs) { + return attrs.map(({ name, value }) => genAttrSegment(name, value)); +} +function genDOMPropSegments(props, attrs) { + const segments = []; + props.forEach(({ name, value }) => { + name = propsToAttrMap[name] || name.toLowerCase(); + if (isRenderableAttr(name) && + !(attrs && attrs.some(a => a.name === name))) { + segments.push(genAttrSegment(name, value)); + } + }); + return segments; +} +function genAttrSegment(name, value) { + if (plainStringRE.test(value)) { + // force double quote + value = value.replace(/^'|'$/g, '"'); + // force enumerated attr to "true" + if (isEnumeratedAttr(name) && value !== `"false"`) { + value = `"true"`; + } + return { + type: RAW, + value: isBooleanAttr(name) + ? ` ${name}="${name}"` + : value === '""' + ? ` ${name}` + : ` ${name}="${JSON.parse(value)}"` + }; + } + else { + return { + type: EXPRESSION, + value: `_ssrAttr(${JSON.stringify(name)},${value})` + }; + } +} +function genClassSegments(staticClass, classBinding) { + if (staticClass && !classBinding) { + return [{ type: RAW, value: ` class="${JSON.parse(staticClass)}"` }]; + } + else { + return [ + { + type: EXPRESSION, + value: `_ssrClass(${staticClass || 'null'},${classBinding || 'null'})` + } + ]; + } +} +function genStyleSegments(staticStyle, parsedStaticStyle, styleBinding, vShowExpression) { + if (staticStyle && !styleBinding && !vShowExpression) { + return [{ type: RAW, value: ` style=${JSON.stringify(staticStyle)}` }]; + } + else { + return [ + { + type: EXPRESSION, + value: `_ssrStyle(${parsedStaticStyle || 'null'},${styleBinding || 'null'}, ${vShowExpression + ? `{ display: (${vShowExpression}) ? '' : 'none' }` + : 'null'})` + } + ]; + } +} + +/** + * In SSR, the vdom tree is generated only once and never patched, so + * we can optimize most element / trees into plain string render functions. + * The SSR optimizer walks the AST tree to detect optimizable elements and trees. + * + * The criteria for SSR optimizability is quite a bit looser than static tree + * detection (which is designed for client re-render). In SSR we bail only for + * components/slots/custom directives. + */ +// optimizability constants +const optimizability = { + FALSE: 0, + FULL: 1, + SELF: 2, + CHILDREN: 3, + PARTIAL: 4 // self un-optimizable with some un-optimizable children +}; +let isPlatformReservedTag; +function optimize(root, options) { + if (!root) + return; + isPlatformReservedTag = options.isReservedTag || no; + walk(root, true); +} +function walk(node, isRoot) { + if (isUnOptimizableTree(node)) { + node.ssrOptimizability = optimizability.FALSE; + return; + } + // root node or nodes with custom directives should always be a VNode + const selfUnoptimizable = isRoot || hasCustomDirective(node); + const check = child => { + if (child.ssrOptimizability !== optimizability.FULL) { + node.ssrOptimizability = selfUnoptimizable + ? optimizability.PARTIAL + : optimizability.SELF; + } + }; + if (selfUnoptimizable) { + node.ssrOptimizability = optimizability.CHILDREN; + } + if (node.type === 1) { + for (let i = 0, l = node.children.length; i < l; i++) { + const child = node.children[i]; + walk(child); + check(child); + } + if (node.ifConditions) { + for (let i = 1, l = node.ifConditions.length; i < l; i++) { + const block = node.ifConditions[i].block; + walk(block, isRoot); + check(block); + } + } + if (node.ssrOptimizability == null || + (!isRoot && (node.attrsMap['v-html'] || node.attrsMap['v-text']))) { + node.ssrOptimizability = optimizability.FULL; + } + else { + node.children = optimizeSiblings(node); + } + } + else { + node.ssrOptimizability = optimizability.FULL; + } +} +function optimizeSiblings(el) { + const children = el.children; + const optimizedChildren = []; + let currentOptimizableGroup = []; + const pushGroup = () => { + if (currentOptimizableGroup.length) { + optimizedChildren.push({ + type: 1, + parent: el, + tag: 'template', + attrsList: [], + attrsMap: {}, + rawAttrsMap: {}, + children: currentOptimizableGroup, + ssrOptimizability: optimizability.FULL + }); + } + currentOptimizableGroup = []; + }; + for (let i = 0; i < children.length; i++) { + const c = children[i]; + if (c.ssrOptimizability === optimizability.FULL) { + currentOptimizableGroup.push(c); + } + else { + // wrap fully-optimizable adjacent siblings inside a template tag + // so that they can be optimized into a single ssrNode by codegen + pushGroup(); + optimizedChildren.push(c); + } + } + pushGroup(); + return optimizedChildren; +} +function isUnOptimizableTree(node) { + if (node.type === 2 || node.type === 3) { + // text or expression + return false; + } + return (isBuiltInTag(node.tag) || // built-in (slot, component) + !isPlatformReservedTag(node.tag) || // custom component + !!node.component || // "is" component + isSelectWithModel(node) // <select v-model> requires runtime inspection + ); +} +const isBuiltInDir = makeMap('text,html,show,on,bind,model,pre,cloak,once'); +function hasCustomDirective(node) { + return (node.type === 1 && + node.directives && + node.directives.some(d => !isBuiltInDir(d.name))); +} +// <select v-model> cannot be optimized because it requires a runtime check +// to determine proper selected option +function isSelectWithModel(node) { + return (node.type === 1 && + node.tag === 'select' && + node.directives != null && + node.directives.some(d => d.name === 'model')); +} + +// The SSR codegen is essentially extending the default codegen to handle +// segment types +const RAW = 0; +const INTERPOLATION = 1; +const EXPRESSION = 2; +function generate(ast, options) { + const state = new CodegenState(options); + const code = ast ? genSSRElement(ast, state) : '_c("div")'; + return { + render: `with(this){return ${code}}`, + staticRenderFns: state.staticRenderFns + }; +} +function genSSRElement(el, state) { + if (el.for && !el.forProcessed) { + return genFor(el, state, genSSRElement); + } + else if (el.if && !el.ifProcessed) { + return genIf(el, state, genSSRElement); + } + else if (el.tag === 'template' && !el.slotTarget) { + return el.ssrOptimizability === optimizability.FULL + ? genChildrenAsStringNode(el, state) + : genSSRChildren(el, state) || 'void 0'; + } + switch (el.ssrOptimizability) { + case optimizability.FULL: + // stringify whole tree + return genStringElement(el, state); + case optimizability.SELF: + // stringify self and check children + return genStringElementWithChildren(el, state); + case optimizability.CHILDREN: + // generate self as VNode and stringify children + return genNormalElement(el, state, true); + case optimizability.PARTIAL: + // generate self as VNode and check children + return genNormalElement(el, state, false); + default: + // bail whole tree + return genElement(el, state); + } +} +function genNormalElement(el, state, stringifyChildren) { + const data = el.plain ? undefined : genData(el, state); + const children = stringifyChildren + ? `[${genChildrenAsStringNode(el, state)}]` + : genSSRChildren(el, state, true); + return `_c('${el.tag}'${data ? `,${data}` : ''}${children ? `,${children}` : ''})`; +} +function genSSRChildren(el, state, checkSkip) { + return genChildren(el, state, checkSkip, genSSRElement, genSSRNode); +} +function genSSRNode(el, state) { + return el.type === 1 ? genSSRElement(el, state) : genText(el); +} +function genChildrenAsStringNode(el, state) { + return el.children.length + ? `_ssrNode(${flattenSegments(childrenToSegments(el, state))})` + : ''; +} +function genStringElement(el, state) { + return `_ssrNode(${elementToString(el, state)})`; +} +function genStringElementWithChildren(el, state) { + const children = genSSRChildren(el, state, true); + return `_ssrNode(${flattenSegments(elementToOpenTagSegments(el, state))},"</${el.tag}>"${children ? `,${children}` : ''})`; +} +function elementToString(el, state) { + return `(${flattenSegments(elementToSegments(el, state))})`; +} +function elementToSegments(el, state) { + // v-for / v-if + if (el.for && !el.forProcessed) { + el.forProcessed = true; + return [ + { + type: EXPRESSION, + value: genFor(el, state, elementToString, '_ssrList') + } + ]; + } + else if (el.if && !el.ifProcessed) { + el.ifProcessed = true; + return [ + { + type: EXPRESSION, + value: genIf(el, state, elementToString, '"<!---->"') + } + ]; + } + else if (el.tag === 'template') { + return childrenToSegments(el, state); + } + const openSegments = elementToOpenTagSegments(el, state); + const childrenSegments = childrenToSegments(el, state); + const { isUnaryTag } = state.options; + const close = isUnaryTag && isUnaryTag(el.tag) + ? [] + : [{ type: RAW, value: `</${el.tag}>` }]; + return openSegments.concat(childrenSegments, close); +} +function elementToOpenTagSegments(el, state) { + applyModelTransform(el, state); + let binding; + const segments = [{ type: RAW, value: `<${el.tag}` }]; + // attrs + if (el.attrs) { + segments.push.apply(segments, genAttrSegments(el.attrs)); + } + // domProps + if (el.props) { + segments.push.apply(segments, genDOMPropSegments(el.props, el.attrs)); + } + // v-bind="object" + if ((binding = el.attrsMap['v-bind'])) { + segments.push({ type: EXPRESSION, value: `_ssrAttrs(${binding})` }); + } + // v-bind.prop="object" + if ((binding = el.attrsMap['v-bind.prop'])) { + segments.push({ type: EXPRESSION, value: `_ssrDOMProps(${binding})` }); + } + // class + if (el.staticClass || el.classBinding) { + segments.push.apply(segments, genClassSegments(el.staticClass, el.classBinding)); + } + // style & v-show + if (el.staticStyle || el.styleBinding || el.attrsMap['v-show']) { + segments.push.apply(segments, genStyleSegments(el.attrsMap.style, el.staticStyle, el.styleBinding, el.attrsMap['v-show'])); + } + // _scopedId + if (state.options.scopeId) { + segments.push({ type: RAW, value: ` ${state.options.scopeId}` }); + } + segments.push({ type: RAW, value: `>` }); + return segments; +} +function childrenToSegments(el, state) { + let binding; + if ((binding = el.attrsMap['v-html'])) { + return [{ type: EXPRESSION, value: `_s(${binding})` }]; + } + if ((binding = el.attrsMap['v-text'])) { + return [{ type: INTERPOLATION, value: `_s(${binding})` }]; + } + if (el.tag === 'textarea' && (binding = el.attrsMap['v-model'])) { + return [{ type: INTERPOLATION, value: `_s(${binding})` }]; + } + return el.children ? nodesToSegments(el.children, state) : []; +} +function nodesToSegments(children, state) { + const segments = []; + for (let i = 0; i < children.length; i++) { + const c = children[i]; + if (c.type === 1) { + segments.push.apply(segments, elementToSegments(c, state)); + } + else if (c.type === 2) { + segments.push({ type: INTERPOLATION, value: c.expression }); + } + else if (c.type === 3) { + let text = escape(c.text); + if (c.isComment) { + text = '<!--' + text + '-->'; + } + segments.push({ type: RAW, value: text }); + } + } + return segments; +} +function flattenSegments(segments) { + const mergedSegments = []; + let textBuffer = ''; + const pushBuffer = () => { + if (textBuffer) { + mergedSegments.push(JSON.stringify(textBuffer)); + textBuffer = ''; + } + }; + for (let i = 0; i < segments.length; i++) { + const s = segments[i]; + if (s.type === RAW) { + textBuffer += s.value; + } + else if (s.type === INTERPOLATION) { + pushBuffer(); + mergedSegments.push(`_ssrEscape(${s.value})`); + } + else if (s.type === EXPRESSION) { + pushBuffer(); + mergedSegments.push(`(${s.value})`); + } + } + pushBuffer(); + return mergedSegments.join('+'); +} + +const createCompiler = createCompilerCreator(function baseCompile(template, options) { + const ast = parse$a(template.trim(), options); + optimize(ast, options); + const code = generate(ast, options); + return { + ast, + render: code.render, + staticRenderFns: code.staticRenderFns + }; +}); + +const { compile: compile$2, compileToFunctions } = createCompiler(baseOptions); + +build.compile = compile$1; +build.compileToFunctions = compileToFunctions$1; +build.generateCodeFrame = generateCodeFrame; +build.parseComponent = parseComponent; +build.ssrCompile = compile$2; +build.ssrCompileToFunctions = compileToFunctions; + +Object.defineProperty(vue2TemplateCompiler, "__esModule", { value: true }); +vue2TemplateCompiler.compile = void 0; +const CompilerDOM$1 = compilerDom_cjs; +const Vue2TemplateCompiler = build; +function compile(template, options = {}) { + const onError = options.onError; + const onWarn = options.onWarn; + options.onError = (error) => { + if (error.code === 33 // :key binding allowed in v-for template child in vue 2 + || error.code === 29 // fix https://github.com/vuejs/language-tools/issues/1638 + ) { + return; + } + if (onError) { + onError(error); + } + else { + throw error; + } + }; + const vue2Result = Vue2TemplateCompiler.compile(template, { outputSourceRange: true }); + for (const error of vue2Result.errors) { + onError?.({ + code: 'vue-template-compiler', + name: '', + message: error.msg, + loc: { + source: '', + start: { column: -1, line: -1, offset: error.start }, + end: { column: -1, line: -1, offset: error.end ?? error.start }, + }, + }); + } + for (const error of vue2Result.tips) { + onWarn?.({ + code: 'vue-template-compiler', + name: '', + message: error.msg, + loc: { + source: '', + start: { column: -1, line: -1, offset: error.start }, + end: { column: -1, line: -1, offset: error.end ?? error.start }, + }, + }); + } + return baseCompile(template, Object.assign({}, CompilerDOM$1.parserOptions, options, { + nodeTransforms: [ + ...CompilerDOM$1.DOMNodeTransforms, + ...(options.nodeTransforms || []) + ], + directiveTransforms: Object.assign({}, CompilerDOM$1.DOMDirectiveTransforms, options.directiveTransforms || {}), + })); +} +vue2TemplateCompiler.compile = compile; +function baseCompile(template, options = {}) { + const onError = options.onError || ((error) => { throw error; }); + const isModuleMode = options.mode === 'module'; + const prefixIdentifiers = options.prefixIdentifiers === true || isModuleMode; + if (!prefixIdentifiers && options.cacheHandlers) { + onError(CompilerDOM$1.createCompilerError(49)); + } + if (options.scopeId && !isModuleMode) { + onError(CompilerDOM$1.createCompilerError(50)); + } + const ast = CompilerDOM$1.baseParse(template, options); + const [nodeTransforms, directiveTransforms] = CompilerDOM$1.getBaseTransformPreset(prefixIdentifiers); + // v-for > v-if in vue 2 + const transformIf = nodeTransforms[1]; + const transformFor = nodeTransforms[3]; + nodeTransforms[1] = transformFor; + nodeTransforms[3] = transformIf; + CompilerDOM$1.transform(ast, Object.assign({}, options, { + prefixIdentifiers, + nodeTransforms: [ + ...nodeTransforms, + ...(options.nodeTransforms || []) // user transforms + ], + directiveTransforms: Object.assign({}, directiveTransforms, options.directiveTransforms || {} // user transforms + ) + })); + return CompilerDOM$1.generate(ast, Object.assign({}, options, { + prefixIdentifiers + })); +} + +Object.defineProperty(plugins, "__esModule", { value: true }); +plugins.getDefaultVueLanguagePlugins = void 0; +const file_html_1 = fileHtml; +const file_md_1 = fileMd; +const file_vue_1 = fileVue; +const vue_sfc_customblocks_1 = vueSfcCustomblocks; +const vue_sfc_scripts_1 = vueSfcScripts; +const vue_sfc_styles_1 = vueSfcStyles; +const vue_sfc_template_1 = vueSfcTemplate; +const vue_template_html_1 = vueTemplateHtml; +const vue_tsx_1 = vueTsx; +const CompilerDOM = compilerDom_cjs; +const CompilerVue2 = vue2TemplateCompiler; +function getDefaultVueLanguagePlugins(ts, compilerOptions, vueCompilerOptions, codegenStack) { + const plugins = [ + file_md_1.default, + file_html_1.default, + file_vue_1.default, + vue_template_html_1.default, + vue_sfc_styles_1.default, + vue_sfc_customblocks_1.default, + vue_sfc_scripts_1.default, + vue_sfc_template_1.default, + vue_tsx_1.default, + ...vueCompilerOptions.plugins, + ]; + const pluginCtx = { + modules: { + '@vue/compiler-dom': vueCompilerOptions.target < 3 + ? { + ...CompilerDOM, + compile: CompilerVue2.compile, + } + : CompilerDOM, + typescript: ts, + }, + compilerOptions, + vueCompilerOptions, + codegenStack, + }; + const pluginInstances = plugins + .map(plugin => plugin(pluginCtx)) + .sort((a, b) => { + const aOrder = a.order ?? 0; + const bOrder = b.order ?? 0; + return aOrder - bOrder; + }); + return pluginInstances.filter((plugin) => { + const valid = plugin.version >= 1 && plugin.version < 2; + if (!valid) { + console.warn(`Plugin ${JSON.stringify(plugin.name)} API version incompatible, expected 1.x but got ${JSON.stringify(plugin.version)}`); + } + return valid; + }); +} +plugins.getDefaultVueLanguagePlugins = getDefaultVueLanguagePlugins; + +var vueFile = {}; + +var computedFiles$1 = {}; + +var embeddedFile = {}; + +Object.defineProperty(embeddedFile, "__esModule", { value: true }); +embeddedFile.VueEmbeddedFile = void 0; +const language_core_1$c = languageCore; +class VueEmbeddedFile { + constructor(fileName, content, contentStacks) { + this.fileName = fileName; + this.content = content; + this.contentStacks = contentStacks; + this.kind = language_core_1$c.FileKind.TextFile; + this.capabilities = {}; + this.mirrorBehaviorMappings = []; + } +} +embeddedFile.VueEmbeddedFile = VueEmbeddedFile; + +Object.defineProperty(computedFiles$1, "__esModule", { value: true }); +computedFiles$1.computedFiles = void 0; +const source_map_1 = sourceMap$1; +const muggle$1 = out$9; +const embeddedFile_1 = embeddedFile; +const computeds_1$5 = out$7; +function computedFiles(plugins, fileName, sfc, codegenStack) { + const nameToBlock = (0, computeds_1$5.computed)(() => { + const blocks = {}; + if (sfc.template) { + blocks[sfc.template.name] = sfc.template; + } + if (sfc.script) { + blocks[sfc.script.name] = sfc.script; + } + if (sfc.scriptSetup) { + blocks[sfc.scriptSetup.name] = sfc.scriptSetup; + } + for (const block of sfc.styles) { + blocks[block.name] = block; + } + for (const block of sfc.customBlocks) { + blocks[block.name] = block; + } + return blocks; + }); + const pluginsResult = plugins.map(plugin => compiledPluginFiles(plugins, plugin, fileName, sfc, nameToBlock, codegenStack)); + const flatResult = (0, computeds_1$5.computed)(() => pluginsResult.map(r => r()).flat()); + const structuredResult = (0, computeds_1$5.computed)(() => { + const embeddedFiles = []; + let remain = [...flatResult()]; + while (remain.length) { + const beforeLength = remain.length; + consumeRemain(); + if (beforeLength === remain.length) { + break; + } + } + for (const { file, snapshot, mappings, codegenStacks } of remain) { + embeddedFiles.push({ + ...file, + snapshot, + mappings, + codegenStacks, + embeddedFiles: [], + }); + console.error('Unable to resolve embedded: ' + file.parentFileName + ' -> ' + file.fileName); + } + return embeddedFiles; + function consumeRemain() { + for (let i = remain.length - 1; i >= 0; i--) { + const { file, snapshot, mappings, codegenStacks } = remain[i]; + if (!file.parentFileName) { + embeddedFiles.push({ + ...file, + snapshot, + mappings, + codegenStacks, + embeddedFiles: [], + }); + remain.splice(i, 1); + } + else { + const parent = findParentStructure(file.parentFileName, embeddedFiles); + if (parent) { + parent.embeddedFiles.push({ + ...file, + snapshot, + mappings, + codegenStacks, + embeddedFiles: [], + }); + remain.splice(i, 1); + } + } + } + } + function findParentStructure(fileName, current) { + for (const child of current) { + if (child.fileName === fileName) { + return child; + } + let parent = findParentStructure(fileName, child.embeddedFiles); + if (parent) { + return parent; + } + } + } + }); + return structuredResult; +} +computedFiles$1.computedFiles = computedFiles; +function compiledPluginFiles(plugins, plugin, fileName, sfc, nameToBlock, codegenStack) { + const embeddedFiles = {}; + const files = (0, computeds_1$5.computed)(() => { + try { + if (!plugin.getEmbeddedFileNames) { + return Object.values(embeddedFiles); + } + const embeddedFileNames = plugin.getEmbeddedFileNames(fileName, sfc); + for (const oldFileName of Object.keys(embeddedFiles)) { + if (!embeddedFileNames.includes(oldFileName)) { + delete embeddedFiles[oldFileName]; + } + } + for (const embeddedFileName of embeddedFileNames) { + if (!embeddedFiles[embeddedFileName]) { + embeddedFiles[embeddedFileName] = (0, computeds_1$5.computed)(() => { + const [content, stacks] = codegenStack ? muggle$1.track([]) : [[], []]; + const file = new embeddedFile_1.VueEmbeddedFile(embeddedFileName, content, stacks); + for (const plugin of plugins) { + if (!plugin.resolveEmbeddedFile) { + continue; + } + try { + plugin.resolveEmbeddedFile(fileName, sfc, file); + } + catch (e) { + console.error(e); + } + } + const newText = (0, source_map_1.toString)(file.content); + const changeRanges = new Map(); + const snapshot = { + getText: (start, end) => newText.slice(start, end), + getLength: () => newText.length, + getChangeRange(oldSnapshot) { + if (!changeRanges.has(oldSnapshot)) { + changeRanges.set(oldSnapshot, undefined); + const oldText = oldSnapshot.getText(0, oldSnapshot.getLength()); + const changeRange = fullDiffTextChangeRange(oldText, newText); + if (changeRange) { + changeRanges.set(oldSnapshot, changeRange); + } + } + return changeRanges.get(oldSnapshot); + }, + }; + return { + file, + snapshot, + }; + }); + } + } + } + catch (e) { + console.error(e); + } + return Object.values(embeddedFiles); + }); + return (0, computeds_1$5.computed)(() => { + return files().map(_file => { + const { file, snapshot } = _file(); + const mappings = (0, source_map_1.buildMappings)(file.content); + for (const mapping of mappings) { + if (mapping.source !== undefined) { + const block = nameToBlock()[mapping.source]; + if (block) { + mapping.sourceRange = [ + mapping.sourceRange[0] + block.startTagEnd, + mapping.sourceRange[1] + block.startTagEnd, + ]; + } + mapping.source = undefined; + } + } + return { + file, + snapshot, + mappings, + codegenStacks: (0, source_map_1.buildStacks)(file.content, file.contentStacks), + }; + }); + }); +} +function fullDiffTextChangeRange(oldText, newText) { + for (let start = 0; start < oldText.length && start < newText.length; start++) { + if (oldText[start] !== newText[start]) { + let end = oldText.length; + for (let i = 0; i < oldText.length - start && i < newText.length - start; i++) { + if (oldText[oldText.length - i - 1] !== newText[newText.length - i - 1]) { + break; + } + end--; + } + let length = end - start; + let newLength = length + (newText.length - oldText.length); + if (newLength < 0) { + length -= newLength; + newLength = 0; + } + return { + span: { start, length }, + newLength, + }; + } + } +} + +var computedMappings$1 = {}; + +Object.defineProperty(computedMappings$1, "__esModule", { value: true }); +computedMappings$1.computedMappings = void 0; +const language_core_1$b = languageCore; +const muggle = out$9; +const computeds_1$4 = out$7; +function computedMappings(snapshot, sfc) { + return (0, computeds_1$4.computed)(() => { + const str = [[snapshot().getText(0, snapshot().getLength()), undefined, 0, language_core_1$b.FileRangeCapabilities.full]]; + for (const block of [ + sfc.script, + sfc.scriptSetup, + sfc.template, + ...sfc.styles, + ...sfc.customBlocks, + ]) { + if (block) { + muggle.replaceSourceRange(str, undefined, block.startTagEnd, block.endTagStart, [ + block.content, + undefined, + block.startTagEnd, + {}, + ]); + } + } + return str.map((m) => { + const text = m[0]; + const start = m[2]; + const end = start + text.length; + return { + sourceRange: [start, end], + generatedRange: [start, end], + data: m[3], + }; + }); + }); +} +computedMappings$1.computedMappings = computedMappings; + +var computedSfc$1 = {}; + +var parseCssClassNames$1 = {}; + +var parseCssVars$1 = {}; + +// https://github.com/vuejs/core/blob/main/packages/compiler-sfc/src/cssVars.ts#L47-L61 +Object.defineProperty(parseCssVars$1, "__esModule", { value: true }); +parseCssVars$1.clearComments = parseCssVars$1.parseCssVars = void 0; +const vBindCssVarReg = /\bv-bind\(\s*(?:'([^']+)'|"([^"]+)"|([^'"][^)]*))\s*\)/g; +const commentReg1 = /\/\*([\s\S]*?)\*\//g; +const commentReg2 = /\/\/([\s\S]*?)\n/g; +function* parseCssVars(styleContent) { + styleContent = clearComments(styleContent); + const matchs = styleContent.matchAll(vBindCssVarReg); + for (const match of matchs) { + if (match.index !== undefined) { + const matchText = match[1] ?? match[2] ?? match[3]; + if (matchText !== undefined) { + const offset = match.index + styleContent.slice(match.index).indexOf(matchText); + yield { offset, text: matchText }; + } + } + } +} +parseCssVars$1.parseCssVars = parseCssVars; +function clearComments(css) { + return css + .replace(commentReg1, match => `/*${' '.repeat(match.length - 4)}*/`) + .replace(commentReg2, match => `//${' '.repeat(match.length - 3)}\n`); +} +parseCssVars$1.clearComments = clearComments; + +Object.defineProperty(parseCssClassNames$1, "__esModule", { value: true }); +parseCssClassNames$1.parseCssClassNames = void 0; +const parseCssVars_1$1 = parseCssVars$1; +const cssClassNameReg = /(?=([\.]{1}[a-zA-Z_]+[\w\_\-]*)[\s\.\+\{\>#\:]{1})/g; +function* parseCssClassNames(styleContent) { + styleContent = (0, parseCssVars_1$1.clearComments)(styleContent); + const matches = styleContent.matchAll(cssClassNameReg); + for (const match of matches) { + if (match.index !== undefined) { + const matchText = match[1]; + if (matchText !== undefined) { + yield { offset: match.index, text: matchText }; + } + } + } +} +parseCssClassNames$1.parseCssClassNames = parseCssClassNames; + +Object.defineProperty(computedSfc$1, "__esModule", { value: true }); +computedSfc$1.computedSfc = void 0; +const parseCssClassNames_1 = parseCssClassNames$1; +const parseCssVars_1 = parseCssVars$1; +const computeds_1$3 = out$7; +function computedSfc(ts, plugins, fileName, snapshot, parsed) { + const untrackedSnapshot = () => { + (0, computeds_1$3.pauseTracking)(); + const res = snapshot(); + (0, computeds_1$3.resetTracking)(); + return res; + }; + const template = computedNullableSfcBlock('template', 'html', (0, computeds_1$3.computed)(() => parsed()?.descriptor.template ?? undefined), (_block, base) => { + const compiledAst = computedTemplateAst(base); + return mergeObject(base, { + get ast() { return compiledAst()?.ast; }, + get errors() { return compiledAst()?.errors; }, + get warnings() { return compiledAst()?.warnings; }, + }); + }); + const script = computedNullableSfcBlock('script', 'js', (0, computeds_1$3.computed)(() => parsed()?.descriptor.script ?? undefined), (block, base) => { + const src = (0, computeds_1$3.computed)(() => block().src); + const srcOffset = (0, computeds_1$3.computed)(() => { + const _src = src(); + return _src ? untrackedSnapshot().getText(0, base.startTagEnd).lastIndexOf(_src) - base.startTagEnd : -1; + }); + const ast = (0, computeds_1$3.computed)(() => ts.createSourceFile(fileName + '.' + base.lang, base.content, ts.ScriptTarget.Latest)); + return mergeObject(base, { + get src() { return src(); }, + get srcOffset() { return srcOffset(); }, + get ast() { return ast(); }, + }); + }); + const scriptSetup = computedNullableSfcBlock('scriptSetup', 'js', (0, computeds_1$3.computed)(() => parsed()?.descriptor.scriptSetup ?? undefined), (block, base) => { + const generic = (0, computeds_1$3.computed)(() => { + const _block = block(); + return typeof _block.attrs.generic === 'string' ? _block.attrs.generic : undefined; + }); + const genericOffset = (0, computeds_1$3.computed)(() => { + const _generic = generic(); + return _generic !== undefined ? untrackedSnapshot().getText(0, base.startTagEnd).lastIndexOf(_generic) - base.startTagEnd : -1; + }); + const ast = (0, computeds_1$3.computed)(() => ts.createSourceFile(fileName + '.' + base.lang, base.content, ts.ScriptTarget.Latest)); + return mergeObject(base, { + get generic() { return generic(); }, + get genericOffset() { return genericOffset(); }, + get ast() { return ast(); }, + }); + }); + const styles = (0, computeds_1$3.computedArray)((0, computeds_1$3.computed)(() => parsed()?.descriptor.styles ?? []), (block, i) => { + const base = computedSfcBlock('style_' + i, 'css', block); + const module = (0, computeds_1$3.computed)(() => typeof block().module === 'string' ? block().module : block().module ? '$style' : undefined); + const scoped = (0, computeds_1$3.computed)(() => !!block().scoped); + const cssVars = (0, computeds_1$3.computed)(() => [...(0, parseCssVars_1.parseCssVars)(base.content)]); + const classNames = (0, computeds_1$3.computed)(() => [...(0, parseCssClassNames_1.parseCssClassNames)(base.content)]); + return (0, computeds_1$3.computed)(() => mergeObject(base, { + get module() { return module(); }, + get scoped() { return scoped(); }, + get cssVars() { return cssVars(); }, + get classNames() { return classNames(); }, + })); + }); + const customBlocks = (0, computeds_1$3.computedArray)((0, computeds_1$3.computed)(() => parsed()?.descriptor.customBlocks ?? []), (block, i) => { + const base = computedSfcBlock('customBlock_' + i, 'txt', block); + const type = (0, computeds_1$3.computed)(() => block().type); + return (0, computeds_1$3.computed)(() => mergeObject(base, { + get type() { return type(); }, + })); + }); + return { + get template() { return template(); }, + get script() { return script(); }, + get scriptSetup() { return scriptSetup(); }, + get styles() { return styles; }, + get customBlocks() { return customBlocks; }, + get templateAst() { return template()?.ast; }, + get scriptAst() { return script()?.ast; }, + get scriptSetupAst() { return scriptSetup()?.ast; }, + }; + function computedTemplateAst(base) { + let cache; + return (0, computeds_1$3.computed)(() => { + if (cache?.template === base.content) { + return { + errors: [], + warnings: [], + ast: cache?.result.ast, + }; + } + // incremental update + if (cache?.plugin.updateSFCTemplate) { + const change = untrackedSnapshot().getChangeRange(cache.snapshot); + if (change) { + (0, computeds_1$3.pauseTracking)(); + const templateOffset = base.startTagEnd; + (0, computeds_1$3.resetTracking)(); + const newText = untrackedSnapshot().getText(change.span.start, change.span.start + change.newLength); + const newResult = cache.plugin.updateSFCTemplate(cache.result, { + start: change.span.start - templateOffset, + end: change.span.start + change.span.length - templateOffset, + newText, + }); + if (newResult) { + cache.template = base.content; + cache.snapshot = untrackedSnapshot(); + cache.result = newResult; + return { + errors: [], + warnings: [], + ast: newResult.ast, + }; + } + } + } + const errors = []; + const warnings = []; + let options = { + onError: (err) => errors.push(err), + onWarn: (err) => warnings.push(err), + expressionPlugins: ['typescript'], + }; + for (const plugin of plugins) { + if (plugin.resolveTemplateCompilerOptions) { + options = plugin.resolveTemplateCompilerOptions(options); + } + } + for (const plugin of plugins) { + let result; + try { + result = plugin.compileSFCTemplate?.(base.lang, base.content, options); + } + catch (e) { + const err = e; + errors.push(err); + } + if (result || errors.length) { + if (result && !errors.length && !warnings.length) { + cache = { + template: base.content, + snapshot: untrackedSnapshot(), + result: result, + plugin, + }; + } + else { + cache = undefined; + } + return { + errors, + warnings, + ast: result?.ast, + }; + } + } + return { + errors, + warnings, + ast: undefined, + }; + }); + } + function computedNullableSfcBlock(name, defaultLang, block, resolve) { + const hasBlock = (0, computeds_1$3.computed)(() => !!block()); + return (0, computeds_1$3.computed)(() => { + if (!hasBlock()) { + return; + } + const _block = (0, computeds_1$3.computed)(() => block()); + return resolve(_block, computedSfcBlock(name, defaultLang, _block)); + }); + } + function computedSfcBlock(name, defaultLang, block) { + const lang = (0, computeds_1$3.computed)(() => block().lang ?? defaultLang); + const attrs = (0, computeds_1$3.computed)(() => block().attrs); // TODO: computed it + const content = (0, computeds_1$3.computed)(() => block().content); + const startTagEnd = (0, computeds_1$3.computed)(() => block().loc.start.offset); + const endTagStart = (0, computeds_1$3.computed)(() => block().loc.end.offset); + const start = (0, computeds_1$3.computed)(() => untrackedSnapshot().getText(0, startTagEnd()).lastIndexOf('<' + block().type)); + const end = (0, computeds_1$3.computed)(() => endTagStart() + untrackedSnapshot().getText(endTagStart(), untrackedSnapshot().getLength()).indexOf('>') + 1); + return { + name, + get lang() { return lang(); }, + get attrs() { return attrs(); }, + get content() { return content(); }, + get startTagEnd() { return startTagEnd(); }, + get endTagStart() { return endTagStart(); }, + get start() { return start(); }, + get end() { return end(); }, + }; + } +} +computedSfc$1.computedSfc = computedSfc; +function mergeObject(a, b) { + return Object.defineProperties(a, Object.getOwnPropertyDescriptors(b)); +} + +var computedVueSfc$1 = {}; + +Object.defineProperty(computedVueSfc$1, "__esModule", { value: true }); +computedVueSfc$1.computedVueSfc = void 0; +const computeds_1$2 = out$7; +function computedVueSfc(plugins, fileName, snapshot) { + let cache; + return (0, computeds_1$2.computed)(() => { + // incremental update + if (cache?.plugin.updateSFC) { + const change = snapshot().getChangeRange(cache.snapshot); + if (change) { + const newSfc = cache.plugin.updateSFC(cache.sfc, { + start: change.span.start, + end: change.span.start + change.span.length, + newText: snapshot().getText(change.span.start, change.span.start + change.newLength), + }); + if (newSfc) { + cache.snapshot = snapshot(); + // force dirty + cache.sfc = JSON.parse(JSON.stringify(newSfc)); + return cache.sfc; + } + } + } + for (const plugin of plugins) { + const sfc = plugin.parseSFC?.(fileName, snapshot().getText(0, snapshot().getLength())); + if (sfc) { + if (!sfc.errors.length) { + cache = { + snapshot: snapshot(), + sfc, + plugin, + }; + } + return sfc; + } + } + }); +} +computedVueSfc$1.computedVueSfc = computedVueSfc; + +Object.defineProperty(vueFile, "__esModule", { value: true }); +vueFile.VueFile = void 0; +const language_core_1$a = languageCore; +const computedFiles_1 = computedFiles$1; +const computedMappings_1 = computedMappings$1; +const computedSfc_1 = computedSfc$1; +const computedVueSfc_1 = computedVueSfc$1; +const computeds_1$1 = out$7; +const jsxReg = /^\.(js|ts)x?$/; +class VueFile { + get embeddedFiles() { + return this.getEmbeddedFiles(); + } + get mainScriptName() { + let res = ''; + (0, language_core_1$a.forEachEmbeddedFile)(this, file => { + if (file.kind === language_core_1$a.FileKind.TypeScriptHostFile && file.fileName.replace(this.fileName, '').match(jsxReg)) { + res = file.fileName; + } + }); + return res; + } + get snapshot() { + return this._snapshot(); + } + get mappings() { + return this.getMappings(); + } + constructor(fileName, initSnapshot, vueCompilerOptions, plugins, ts, codegenStack) { + this.fileName = fileName; + this.initSnapshot = initSnapshot; + this.vueCompilerOptions = vueCompilerOptions; + this.plugins = plugins; + this.ts = ts; + this.codegenStack = codegenStack; + // computeds + this.getVueSfc = (0, computedVueSfc_1.computedVueSfc)(this.plugins, this.fileName, () => this._snapshot()); + this.sfc = (0, computedSfc_1.computedSfc)(this.ts, this.plugins, this.fileName, () => this._snapshot(), this.getVueSfc); + this.getMappings = (0, computedMappings_1.computedMappings)(() => this._snapshot(), this.sfc); + this.getEmbeddedFiles = (0, computedFiles_1.computedFiles)(this.plugins, this.fileName, this.sfc, this.codegenStack); + // others + this.capabilities = language_core_1$a.FileCapabilities.full; + this.kind = language_core_1$a.FileKind.TextFile; + this.codegenStacks = []; + this._snapshot = (0, computeds_1$1.signal)(initSnapshot); + } + update(newSnapshot) { + this._snapshot.set(newSnapshot); + } +} +vueFile.VueFile = VueFile; + +var globalTypes = {}; + +Object.defineProperty(globalTypes, "__esModule", { value: true }); +globalTypes.getTypesCode = globalTypes.baseName = void 0; +const shared_1$t = shared$1; +globalTypes.baseName = '__VLS_types.d.ts'; +function getTypesCode(vueCompilerOptions) { + return ` +// @ts-nocheck + +type __VLS_IntrinsicElements = __VLS_PickNotAny<import('vue/jsx-runtime').JSX.IntrinsicElements, __VLS_PickNotAny<JSX.IntrinsicElements, Record<string, any>>>; +type __VLS_Element = __VLS_PickNotAny<import('vue/jsx-runtime').JSX.Element, JSX.Element>; + +type __VLS_IsAny<T> = 0 extends 1 & T ? true : false; +type __VLS_PickNotAny<A, B> = __VLS_IsAny<A> extends true ? B : A; + +type __VLS_Prettify<T> = { [K in keyof T]: T[K]; } & {}; + +type __VLS_OmitKeepDiscriminatedUnion<T, K extends keyof any> = + T extends any + ? Pick<T, Exclude<keyof T, K>> + : never; + +type __VLS_GlobalComponents = + __VLS_PickNotAny<import('vue').GlobalComponents, {}> + & __VLS_PickNotAny<import('@vue/runtime-core').GlobalComponents, {}> + & __VLS_PickNotAny<import('@vue/runtime-dom').GlobalComponents, {}> + & Pick<typeof import('${vueCompilerOptions.lib}'), + 'Transition' + | 'TransitionGroup' + | 'KeepAlive' + | 'Suspense' + | 'Teleport' + >; + +declare const __VLS_intrinsicElements: __VLS_IntrinsicElements; + +// v-for +declare function __VLS_getVForSourceType(source: number): [number, number, number][]; +declare function __VLS_getVForSourceType(source: string): [string, number, number][]; +declare function __VLS_getVForSourceType<T extends any[]>(source: T): [ + T[number], // item + number, // key + number, // index +][]; +declare function __VLS_getVForSourceType<T extends { [Symbol.iterator](): Iterator<any> }>(source: T): [ + T extends { [Symbol.iterator](): Iterator<infer T1> } ? T1 : never, // item + number, // key + undefined, // index +][]; +declare function __VLS_getVForSourceType<T>(source: T): [ + T[keyof T], // item + keyof T, // key + number, // index +][]; + +declare function __VLS_getSlotParams<T>(slot: T): Parameters<__VLS_PickNotAny<NonNullable<T>, (...args: any[]) => any>>; +declare function __VLS_getSlotParam<T>(slot: T): Parameters<__VLS_PickNotAny<NonNullable<T>, (...args: any[]) => any>>[0]; +declare function __VLS_directiveFunction<T>(dir: T): + T extends import('${vueCompilerOptions.lib}').ObjectDirective<infer E, infer V> | import('${vueCompilerOptions.lib}').FunctionDirective<infer E, infer V> ? (value: V) => void + : T; +declare function __VLS_withScope<T, K>(ctx: T, scope: K): ctx is T & K; +declare function __VLS_makeOptional<T>(t: T): { [K in keyof T]?: T[K] }; + +type __VLS_SelfComponent<N, C> = string extends N ? {} : N extends string ? { [P in N]: C } : {}; +type __VLS_WithComponent<N0 extends string, LocalComponents, N1 extends string, N2 extends string, N3 extends string> = + N1 extends keyof LocalComponents ? N1 extends N0 ? Pick<LocalComponents, N0> : { [K in N0]: LocalComponents[N1] } : + N2 extends keyof LocalComponents ? N2 extends N0 ? Pick<LocalComponents, N0> : { [K in N0]: LocalComponents[N2] } : + N3 extends keyof LocalComponents ? N3 extends N0 ? Pick<LocalComponents, N0> : { [K in N0]: LocalComponents[N3] } : + N1 extends keyof __VLS_GlobalComponents ? N1 extends N0 ? Pick<__VLS_GlobalComponents, N0> : { [K in N0]: __VLS_GlobalComponents[N1] } : + N2 extends keyof __VLS_GlobalComponents ? N2 extends N0 ? Pick<__VLS_GlobalComponents, N0> : { [K in N0]: __VLS_GlobalComponents[N2] } : + N3 extends keyof __VLS_GlobalComponents ? N3 extends N0 ? Pick<__VLS_GlobalComponents, N0> : { [K in N0]: __VLS_GlobalComponents[N3] } : + ${vueCompilerOptions.strictTemplates ? '{}' : '{ [K in N0]: unknown }'} + +type __VLS_FillingEventArg_ParametersLength<E extends (...args: any) => any> = __VLS_IsAny<Parameters<E>> extends true ? -1 : Parameters<E>['length']; +type __VLS_FillingEventArg<E> = E extends (...args: any) => any ? __VLS_FillingEventArg_ParametersLength<E> extends 0 ? ($event?: undefined) => ReturnType<E> : E : E; +declare function __VLS_asFunctionalComponent<T, K = T extends new (...args: any) => any ? InstanceType<T> : unknown>(t: T, instance?: K): + T extends new (...args: any) => any + ? (props: (K extends { $props: infer Props } ? Props : any)${vueCompilerOptions.strictTemplates ? '' : ' & Record<string, unknown>'}, ctx?: { + attrs?: any, + slots?: K extends { ${(0, shared_1$t.getSlotsPropertyName)(vueCompilerOptions.target)}: infer Slots } ? Slots : any, + emit?: K extends { $emit: infer Emit } ? Emit : any + }) => JSX.Element & { __ctx?: typeof ctx & { props?: typeof props; expose?(exposed: K): void; } } + : T extends () => any ? (props: {}, ctx?: any) => ReturnType<T> + : T extends (...args: any) => any ? T + : (_: {}${vueCompilerOptions.strictTemplates ? '' : ' & Record<string, unknown>'}, ctx?: any) => { __ctx?: { attrs?: any, expose?: any, slots?: any, emit?: any, props?: {}${vueCompilerOptions.strictTemplates ? '' : ' & Record<string, unknown>'} } }; +declare function __VLS_elementAsFunctionalComponent<T>(t: T): (_: T${vueCompilerOptions.strictTemplates ? '' : ' & Record<string, unknown>'}, ctx?: any) => { __ctx?: { attrs?: any, expose?: any, slots?: any, emit?: any, props?: T${vueCompilerOptions.strictTemplates ? '' : ' & Record<string, unknown>'} } }; +declare function __VLS_functionalComponentArgsRest<T extends (...args: any) => any>(t: T): Parameters<T>['length'] extends 2 ? [any] : []; +declare function __VLS_pickEvent<E1, E2>(emitEvent: E1, propEvent: E2): __VLS_FillingEventArg< + __VLS_PickNotAny< + __VLS_AsFunctionOrAny<E2>, + __VLS_AsFunctionOrAny<E1> + > +> | undefined; +declare function __VLS_pickFunctionalComponentCtx<T, K>(comp: T, compInstance: K): __VLS_PickNotAny< + '__ctx' extends keyof __VLS_PickNotAny<K, {}> ? K extends { __ctx?: infer Ctx } ? Ctx : never : any + , T extends (props: any, ctx: infer Ctx) => any ? Ctx : any +>; +type __VLS_FunctionalComponentProps<T, K> = + '__ctx' extends keyof __VLS_PickNotAny<K, {}> ? K extends { __ctx?: { props?: infer P } } ? NonNullable<P> : never + : T extends (props: infer P, ...args: any) => any ? P : + {}; +type __VLS_AsFunctionOrAny<F> = unknown extends F ? any : ((...args: any) => any) extends F ? F : any; + +declare function __VLS_normalizeSlot<S>(s: S): S extends () => infer R ? (props: {}) => R : S; + +/** + * emit + */ +// fix https://github.com/vuejs/language-tools/issues/926 +type __VLS_UnionToIntersection<U> = (U extends unknown ? (arg: U) => unknown : never) extends ((arg: infer P) => unknown) ? P : never; +type __VLS_OverloadUnionInner<T, U = unknown> = U & T extends (...args: infer A) => infer R + ? U extends T + ? never + : __VLS_OverloadUnionInner<T, Pick<T, keyof T> & U & ((...args: A) => R)> | ((...args: A) => R) + : never; +type __VLS_OverloadUnion<T> = Exclude< + __VLS_OverloadUnionInner<(() => never) & T>, + T extends () => never ? never : () => never +>; +type __VLS_ConstructorOverloads<T> = __VLS_OverloadUnion<T> extends infer F + ? F extends (event: infer E, ...args: infer A) => any + ? { [K in E & string]: (...args: A) => void; } + : never + : never; +type __VLS_NormalizeEmits<T> = __VLS_Prettify< + __VLS_UnionToIntersection< + __VLS_ConstructorOverloads<T> & { + [K in keyof T]: T[K] extends any[] ? { (...args: T[K]): void } : never + } + > +>; +`.trim(); +} +globalTypes.getTypesCode = getTypesCode; + +var ts$1 = {}; + +Object.defineProperty(ts$1, "__esModule", { value: true }); +ts$1.resolveVueCompilerOptions = ts$1.createParsedCommandLine = ts$1.createParsedCommandLineByJson = void 0; +const path$8 = pathBrowserify; +function createParsedCommandLineByJson(ts, parseConfigHost, rootDir, json, configFileName = rootDir + '/jsconfig.json') { + const proxyHost = proxyParseConfigHostForExtendConfigPaths(parseConfigHost); + ts.parseJsonConfigFileContent(json, proxyHost.host, rootDir, {}, configFileName); + let vueOptions = {}; + for (const extendPath of proxyHost.extendConfigPaths.reverse()) { + try { + vueOptions = { + ...vueOptions, + ...getPartialVueCompilerOptions(ts, ts.readJsonConfigFile(extendPath, proxyHost.host.readFile)), + }; + } + catch (err) { } + } + const parsed = ts.parseJsonConfigFileContent(json, proxyHost.host, rootDir, {}, configFileName, undefined, (vueOptions.extensions ?? ['.vue']).map(extension => ({ + extension: extension.slice(1), + isMixedContent: true, + scriptKind: ts.ScriptKind.Deferred, + }))); + // fix https://github.com/vuejs/language-tools/issues/1786 + // https://github.com/microsoft/TypeScript/issues/30457 + // patching ts server broke with outDir + rootDir + composite/incremental + parsed.options.outDir = undefined; + return { + ...parsed, + vueOptions, + }; +} +ts$1.createParsedCommandLineByJson = createParsedCommandLineByJson; +function createParsedCommandLine(ts, parseConfigHost, tsConfigPath) { + try { + const proxyHost = proxyParseConfigHostForExtendConfigPaths(parseConfigHost); + const config = ts.readJsonConfigFile(tsConfigPath, proxyHost.host.readFile); + ts.parseJsonSourceFileConfigFileContent(config, proxyHost.host, path$8.dirname(tsConfigPath), {}, tsConfigPath); + let vueOptions = {}; + for (const extendPath of proxyHost.extendConfigPaths.reverse()) { + try { + vueOptions = { + ...vueOptions, + ...getPartialVueCompilerOptions(ts, ts.readJsonConfigFile(extendPath, proxyHost.host.readFile)), + }; + } + catch (err) { } + } + const parsed = ts.parseJsonSourceFileConfigFileContent(config, proxyHost.host, path$8.dirname(tsConfigPath), {}, tsConfigPath, undefined, (vueOptions.extensions ?? ['.vue']).map(extension => ({ + extension: extension.slice(1), + isMixedContent: true, + scriptKind: ts.ScriptKind.Deferred, + }))); + // fix https://github.com/vuejs/language-tools/issues/1786 + // https://github.com/microsoft/TypeScript/issues/30457 + // patching ts server broke with outDir + rootDir + composite/incremental + parsed.options.outDir = undefined; + return { + ...parsed, + vueOptions, + }; + } + catch (err) { + // console.warn('Failed to resolve tsconfig path:', tsConfigPath, err); + return { + fileNames: [], + options: {}, + vueOptions: resolveVueCompilerOptions({}), + errors: [], + }; + } +} +ts$1.createParsedCommandLine = createParsedCommandLine; +function proxyParseConfigHostForExtendConfigPaths(parseConfigHost) { + const extendConfigPaths = []; + const host = new Proxy(parseConfigHost, { + get(target, key) { + if (key === 'readFile') { + return (fileName) => { + if (!fileName.endsWith('/package.json') && !extendConfigPaths.includes(fileName)) { + extendConfigPaths.push(fileName); + } + return target.readFile(fileName); + }; + } + return target[key]; + } + }); + return { + host, + extendConfigPaths, + }; +} +function getPartialVueCompilerOptions(ts, tsConfigSourceFile) { + const folder = path$8.dirname(tsConfigSourceFile.fileName); + const obj = ts.convertToObject(tsConfigSourceFile, []); + const rawOptions = obj?.vueCompilerOptions ?? {}; + const result = { + ...rawOptions, + }; + const target = rawOptions.target ?? 'auto'; + if (target === 'auto') { + const resolvedPath = resolvePath('vue/package.json'); + if (resolvedPath) { + const vuePackageJson = commonjsRequire(resolvedPath); + const versionNumbers = vuePackageJson.version.split('.'); + result.target = Number(versionNumbers[0] + '.' + versionNumbers[1]); + } + } + else { + result.target = target; + } + if (rawOptions.plugins) { + const plugins = rawOptions.plugins + .map((pluginPath) => { + try { + const resolvedPath = resolvePath(pluginPath); + if (resolvedPath) { + return commonjsRequire(resolvedPath); + } + else { + console.warn('Load plugin failed:', pluginPath); + } + } + catch (error) { + console.warn('Load plugin failed:', pluginPath, error); + } + return []; + }) + .flat(Infinity); + result.plugins = plugins; + } + if (rawOptions.hooks) { + result.hooks = rawOptions.hooks + .map(resolvePath) + .filter((hook) => !!hook); + } + if (rawOptions.experimentalAdditionalLanguageModules) { + result.experimentalAdditionalLanguageModules = rawOptions.experimentalAdditionalLanguageModules + .map(resolvePath) + .filter((module) => !!module); + } + return result; + function resolvePath(scriptPath) { + try { + if (require?.resolve) { + return require.resolve(scriptPath, { paths: [folder] }); + } + else { + // console.warn('failed to resolve path:', scriptPath, 'require.resolve is not supported in web'); + } + } + catch (error) { + // console.warn(error); + } + } +} +// https://developer.mozilla.org/en-US/docs/Web/HTML/Element +const HTML_TAGS = 'html,body,base,head,link,meta,style,title,address,article,aside,footer,' + + 'header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,' + + 'figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,' + + 'data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,' + + 'time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,' + + 'canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,' + + 'th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,' + + 'option,output,progress,select,textarea,details,dialog,menu,' + + 'summary,template,blockquote,iframe,tfoot'; +// https://developer.mozilla.org/en-US/docs/Web/SVG/Element +const SVG_TAGS = 'svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,' + + 'defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,' + + 'feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,' + + 'feDistanceLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,' + + 'feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,' + + 'fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,' + + 'foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,' + + 'mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,' + + 'polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,' + + 'text,textPath,title,tspan,unknown,use,view'; +function resolveVueCompilerOptions(vueOptions) { + const target = vueOptions.target ?? 3.3; + const lib = vueOptions.lib || (target < 2.7 ? '@vue/runtime-dom' : 'vue'); + return { + ...vueOptions, + target, + extensions: vueOptions.extensions ?? ['.vue'], + lib, + jsxSlots: vueOptions.jsxSlots ?? false, + strictTemplates: vueOptions.strictTemplates ?? false, + skipTemplateCodegen: vueOptions.skipTemplateCodegen ?? false, + nativeTags: vueOptions.nativeTags ?? [...new Set([ + ...HTML_TAGS.split(','), + ...SVG_TAGS.split(','), + // fix https://github.com/johnsoncodehk/volar/issues/1340 + 'hgroup', + 'slot', + 'component', + ])], + dataAttributes: vueOptions.dataAttributes ?? [], + htmlAttributes: vueOptions.htmlAttributes ?? ['aria-*'], + optionsWrapper: vueOptions.optionsWrapper ?? (target >= 2.7 + ? [`(await import('${lib}')).defineComponent(`, `)`] + : [`(await import('vue')).default.extend(`, `)`]), + macros: { + defineProps: ['defineProps'], + defineSlots: ['defineSlots'], + defineEmits: ['defineEmits'], + defineExpose: ['defineExpose'], + defineModel: ['defineModel'], + defineOptions: ['defineOptions'], + withDefaults: ['withDefaults'], + ...vueOptions.macros, + }, + plugins: vueOptions.plugins ?? [], + hooks: vueOptions.hooks ?? [], + // experimental + experimentalDefinePropProposal: vueOptions.experimentalDefinePropProposal ?? false, + experimentalAdditionalLanguageModules: vueOptions.experimentalAdditionalLanguageModules ?? [], + experimentalResolveStyleCssClasses: vueOptions.experimentalResolveStyleCssClasses ?? 'scoped', + // https://github.com/vuejs/vue-next/blob/master/packages/compiler-dom/src/transforms/vModel.ts#L49-L51 + // https://vuejs.org/guide/essentials/forms.html#form-input-bindings + experimentalModelPropName: vueOptions.experimentalModelPropName ?? { + '': { + input: true + }, + value: { + input: { type: 'text' }, + textarea: true, + select: true + } + }, + experimentalUseElementAccessInTemplate: vueOptions.experimentalUseElementAccessInTemplate ?? false, + }; +} +ts$1.resolveVueCompilerOptions = resolveVueCompilerOptions; + +Object.defineProperty(languageModule, "__esModule", { value: true }); +languageModule.createLanguages = languageModule.createVueLanguage = void 0; +const path$7 = pathBrowserify; +const plugins_1 = plugins; +const vueFile_1 = vueFile; +const sharedTypes = globalTypes; +const ts_1 = ts$1; +const fileRegistries = []; +function getVueFileRegistry(key, plugins) { + let fileRegistry = fileRegistries.find(r => r.key === key + && r.plugins.length === plugins.length + && r.plugins.every(plugin => plugins.includes(plugin)))?.files; + if (!fileRegistry) { + fileRegistry = new Map(); + fileRegistries.push({ + key: key, + plugins: plugins, + files: fileRegistry, + }); + } + return fileRegistry; +} +function createVueLanguage(ts, compilerOptions = {}, _vueCompilerOptions = {}, codegenStack = false) { + const vueCompilerOptions = (0, ts_1.resolveVueCompilerOptions)(_vueCompilerOptions); + const plugins = (0, plugins_1.getDefaultVueLanguagePlugins)(ts, compilerOptions, vueCompilerOptions, codegenStack); + const keys = [ + ...Object.keys(vueCompilerOptions) + .sort() + .filter(key => key !== 'plugins') + .map(key => [key, vueCompilerOptions[key]]), + [...new Set(plugins.map(plugin => plugin.requiredCompilerOptions ?? []).flat())] + .sort() + .map(key => [key, compilerOptions[key]]), + ]; + const fileRegistry = getVueFileRegistry(JSON.stringify(keys), _vueCompilerOptions.plugins ?? []); + const allowLanguageIds = new Set(['vue']); + if (vueCompilerOptions.extensions.includes('.md')) { + allowLanguageIds.add('markdown'); + } + if (vueCompilerOptions.extensions.includes('.html')) { + allowLanguageIds.add('html'); + } + return { + createVirtualFile(fileName, snapshot, languageId) { + if ((languageId && allowLanguageIds.has(languageId)) + || (!languageId && vueCompilerOptions.extensions.some(ext => fileName.endsWith(ext)))) { + if (fileRegistry.has(fileName)) { + const reusedVueFile = fileRegistry.get(fileName); + reusedVueFile.update(snapshot); + return reusedVueFile; + } + const vueFile = new vueFile_1.VueFile(fileName, snapshot, vueCompilerOptions, plugins, ts, codegenStack); + fileRegistry.set(fileName, vueFile); + return vueFile; + } + }, + updateVirtualFile(sourceFile, snapshot) { + sourceFile.update(snapshot); + }, + resolveHost(host) { + const sharedTypesSnapshot = ts.ScriptSnapshot.fromString(sharedTypes.getTypesCode(vueCompilerOptions)); + const sharedTypesFileName = path$7.join(host.rootPath, sharedTypes.baseName); + return { + ...host, + resolveModuleName(moduleName, impliedNodeFormat) { + if (impliedNodeFormat === ts.ModuleKind.ESNext && vueCompilerOptions.extensions.some(ext => moduleName.endsWith(ext))) { + return `${moduleName}.js`; + } + return host.resolveModuleName?.(moduleName, impliedNodeFormat) ?? moduleName; + }, + getScriptFileNames() { + return [ + sharedTypesFileName, + ...host.getScriptFileNames(), + ]; + }, + getScriptSnapshot(fileName) { + if (fileName === sharedTypesFileName) { + return sharedTypesSnapshot; + } + return host.getScriptSnapshot(fileName); + }, + }; + }, + }; +} +languageModule.createVueLanguage = createVueLanguage; +/** + * @deprecated planed to remove in 2.0, please use createVueLanguage instead of + */ +function createLanguages(ts, compilerOptions = {}, vueCompilerOptions = {}, codegenStack = false) { + return [ + createVueLanguage(ts, compilerOptions, vueCompilerOptions, codegenStack), + ...vueCompilerOptions.experimentalAdditionalLanguageModules?.map(module => commonjsRequire(module)) ?? [], + ]; +} +languageModule.createLanguages = createLanguages; + +var types$1 = {}; + +Object.defineProperty(types$1, "__esModule", { value: true }); + +(function (exports) { + var __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); + }) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; + })); + var __exportStar = (commonjsGlobal && commonjsGlobal.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.tsCodegen = exports.sharedTypes = exports.scriptRanges = void 0; + __exportStar(template, exports); + __exportStar(languageModule, exports); + __exportStar(scriptSetupRanges, exports); + __exportStar(plugins, exports); + __exportStar(vueFile, exports); + __exportStar(types$1, exports); + __exportStar(ts$1, exports); + __exportStar(parseSfc, exports); + exports.scriptRanges = scriptRanges; + exports.sharedTypes = globalTypes; + __exportStar(shared$1, exports); + var vue_tsx_1 = vueTsx; + Object.defineProperty(exports, "tsCodegen", { enumerable: true, get: function () { return vue_tsx_1.tsCodegen; } }); + __exportStar(languageCore, exports); + __exportStar(sourceMap$1, exports); + +} (out$8)); + +var nameCasing = {}; + +var helpers = {}; + +Object.defineProperty(helpers, "__esModule", { value: true }); +helpers.getTemplateTagsAndAttrs = helpers.getElementAttrs = helpers.getComponentNames = helpers.getTemplateCtx = helpers.getEventsOfTag = helpers.getPropsByTag = void 0; +const vue$3 = out$8; +const embedded = languageCore; +const computeds_1 = out$7; +const language_core_1$9 = out$8; +const shared_1$s = require$$1$1; +function getPropsByTag(ts, tsLs, sourceFile, tag, vueCompilerOptions, requiredOnly = false) { + const checker = tsLs.getProgram().getTypeChecker(); + const components = getVariableType(ts, tsLs, sourceFile, '__VLS_components'); + if (!components) + return []; + const name = tag.split('.'); + let componentSymbol = components.type.getProperty(name[0]); + if (!componentSymbol && !vueCompilerOptions.nativeTags.includes(name[0])) { + componentSymbol = components.type.getProperty((0, shared_1$s.camelize)(name[0])) + ?? components.type.getProperty((0, shared_1$s.capitalize)((0, shared_1$s.camelize)(name[0]))); + } + if (!componentSymbol) + return []; + let componentType = checker.getTypeOfSymbolAtLocation(componentSymbol, components.node); + for (let i = 1; i < name.length; i++) { + componentSymbol = componentType.getProperty(name[i]); + if (componentSymbol) { + componentType = checker.getTypeOfSymbolAtLocation(componentSymbol, components.node); + } + else { + return []; + } + } + const result = new Set(); + for (const sig of componentType.getCallSignatures()) { + const propParam = sig.parameters[0]; + if (propParam) { + const propsType = checker.getTypeOfSymbolAtLocation(propParam, components.node); + const props = propsType.getProperties(); + for (const prop of props) { + if (!requiredOnly || !(prop.flags & ts.SymbolFlags.Optional)) { + result.add(prop.name); + } + } + } + } + for (const sig of componentType.getConstructSignatures()) { + const instanceType = sig.getReturnType(); + const propsSymbol = instanceType.getProperty('$props'); + if (propsSymbol) { + const propsType = checker.getTypeOfSymbolAtLocation(propsSymbol, components.node); + const props = propsType.getProperties(); + for (const prop of props) { + if (prop.flags & ts.SymbolFlags.Method) { // #2443 + continue; + } + if (!requiredOnly || !(prop.flags & ts.SymbolFlags.Optional)) { + result.add(prop.name); + } + } + } + } + return [...result]; +} +helpers.getPropsByTag = getPropsByTag; +function getEventsOfTag(ts, tsLs, sourceFile, tag, vueCompilerOptions) { + const checker = tsLs.getProgram().getTypeChecker(); + const components = getVariableType(ts, tsLs, sourceFile, '__VLS_components'); + if (!components) + return []; + const name = tag.split('.'); + let componentSymbol = components.type.getProperty(name[0]); + if (!componentSymbol && !vueCompilerOptions.nativeTags.includes(name[0])) { + componentSymbol = components.type.getProperty((0, shared_1$s.camelize)(name[0])) + ?? components.type.getProperty((0, shared_1$s.capitalize)((0, shared_1$s.camelize)(name[0]))); + } + if (!componentSymbol) + return []; + let componentType = checker.getTypeOfSymbolAtLocation(componentSymbol, components.node); + for (let i = 1; i < name.length; i++) { + componentSymbol = componentType.getProperty(name[i]); + if (componentSymbol) { + componentType = checker.getTypeOfSymbolAtLocation(componentSymbol, components.node); + } + else { + return []; + } + } + const result = new Set(); + // for (const sig of componentType.getCallSignatures()) { + // const emitParam = sig.parameters[1]; + // if (emitParam) { + // // TODO + // } + // } + for (const sig of componentType.getConstructSignatures()) { + const instanceType = sig.getReturnType(); + const emitSymbol = instanceType.getProperty('$emit'); + if (emitSymbol) { + const emitType = checker.getTypeOfSymbolAtLocation(emitSymbol, components.node); + for (const call of emitType.getCallSignatures()) { + const eventNameParamSymbol = call.parameters[0]; + if (eventNameParamSymbol) { + const eventNameParamType = checker.getTypeOfSymbolAtLocation(eventNameParamSymbol, components.node); + if (eventNameParamType.isStringLiteral()) { + result.add(eventNameParamType.value); + } + } + } + } + } + return [...result]; +} +helpers.getEventsOfTag = getEventsOfTag; +function getTemplateCtx(ts, tsLs, sourceFile) { + return getVariableType(ts, tsLs, sourceFile, '__VLS_ctx') + ?.type + ?.getProperties() + .map(c => c.name); +} +helpers.getTemplateCtx = getTemplateCtx; +function getComponentNames(ts, tsLs, sourceFile, vueCompilerOptions) { + return getVariableType(ts, tsLs, sourceFile, '__VLS_components') + ?.type + ?.getProperties() + .map(c => c.name) + .filter(entry => entry.indexOf('$') === -1 && !entry.startsWith('_')) + .filter(entry => !vueCompilerOptions.nativeTags.includes(entry)) + ?? []; +} +helpers.getComponentNames = getComponentNames; +function getElementAttrs(ts, tsLs, tsLsHost, tagName) { + const sharedTypesFileName = tsLsHost.getCurrentDirectory() + '/' + language_core_1$9.sharedTypes.baseName; + let tsSourceFile; + if (tsSourceFile = tsLs.getProgram()?.getSourceFile(sharedTypesFileName)) { + const typeNode = tsSourceFile.statements.find((node) => ts.isTypeAliasDeclaration(node) && node.name.getText() === '__VLS_IntrinsicElements'); + const checker = tsLs.getProgram()?.getTypeChecker(); + if (checker && typeNode) { + const type = checker.getTypeFromTypeNode(typeNode.type); + const el = type.getProperty(tagName); + if (el) { + const attrs = checker.getTypeOfSymbolAtLocation(el, typeNode).getProperties(); + return attrs.map(c => c.name); + } + } + } + return []; +} +helpers.getElementAttrs = getElementAttrs; +function getVariableType(ts, tsLs, sourceFile, name) { + if (!(sourceFile instanceof vue$3.VueFile)) { + return; + } + let file; + let tsSourceFile; + embedded.forEachEmbeddedFile(sourceFile, embedded => { + if (embedded.fileName === sourceFile.mainScriptName) { + file = embedded; + } + }); + if (file && (tsSourceFile = tsLs.getProgram()?.getSourceFile(file.fileName))) { + const node = searchVariableDeclarationNode(ts, tsSourceFile, name); + const checker = tsLs.getProgram()?.getTypeChecker(); + if (checker && node) { + return { + node: node, + type: checker.getTypeAtLocation(node), + }; + } + } +} +function searchVariableDeclarationNode(ts, sourceFile, name) { + let componentsNode; + walk(sourceFile); + return componentsNode; + function walk(node) { + if (componentsNode) { + return; + } + else if (ts.isVariableDeclaration(node) && node.name.getText() === name) { + componentsNode = node; + } + else { + node.forEachChild(walk); + } + } +} +const map$1 = new WeakMap(); +function getTemplateTagsAndAttrs(sourceFile) { + if (!map$1.has(sourceFile)) { + const getter = (0, computeds_1.computed)(() => { + if (!(sourceFile instanceof vue$3.VueFile)) + return; + const ast = sourceFile.sfc.template?.ast; + const tags = new Map(); + if (ast) { + vue$3.walkElementNodes(ast, node => { + if (!tags.has(node.tag)) { + tags.set(node.tag, { offsets: [], attrs: new Map() }); + } + const tag = tags.get(node.tag); + const startTagHtmlOffset = node.loc.start.offset + node.loc.source.indexOf(node.tag); + const endTagHtmlOffset = node.loc.start.offset + node.loc.source.lastIndexOf(node.tag); + tag.offsets.push(startTagHtmlOffset); + if (!node.isSelfClosing) { + tag.offsets.push(endTagHtmlOffset); + } + for (const prop of node.props) { + let name; + let offset; + if (prop.type === 7 + && prop.arg?.type === 4 + && prop.arg.isStatic) { + name = prop.arg.content; + offset = prop.arg.loc.start.offset; + } + else if (prop.type === 6) { + name = prop.name; + offset = prop.loc.start.offset; + } + if (name !== undefined && offset !== undefined) { + if (!tag.attrs.has(name)) { + tag.attrs.set(name, { offsets: [] }); + } + tag.attrs.get(name).offsets.push(offset); + } + } + }); + } + return tags; + }); + map$1.set(sourceFile, getter); + } + return map$1.get(sourceFile)() ?? new Map(); +} +helpers.getTemplateTagsAndAttrs = getTemplateTagsAndAttrs; + +var types = {}; + +(function (exports) { + var __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); + }) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; + })); + var __exportStar = (commonjsGlobal && commonjsGlobal.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.AttrNameCasing = exports.TagNameCasing = void 0; + var TagNameCasing; + (function (TagNameCasing) { + TagNameCasing[TagNameCasing["Kebab"] = 0] = "Kebab"; + TagNameCasing[TagNameCasing["Pascal"] = 1] = "Pascal"; + })(TagNameCasing || (exports.TagNameCasing = TagNameCasing = {})); + var AttrNameCasing; + (function (AttrNameCasing) { + AttrNameCasing[AttrNameCasing["Kebab"] = 0] = "Kebab"; + AttrNameCasing[AttrNameCasing["Camel"] = 1] = "Camel"; + })(AttrNameCasing || (exports.AttrNameCasing = AttrNameCasing = {})); + // only export types of depend packages + __exportStar(types$4, exports); + __exportStar(types$1, exports); + +} (types)); + +Object.defineProperty(nameCasing, "__esModule", { value: true }); +nameCasing.detect = nameCasing.getNameCasing = nameCasing.convertAttrName = nameCasing.convertTagName = void 0; +const language_core_1$8 = out$8; +const helpers_1$1 = helpers; +const types_1$3 = types; +async function convertTagName(ts, context, uri, casing, vueCompilerOptions) { + const rootFile = context.documents.getSourceByUri(uri)?.root; + if (!(rootFile instanceof language_core_1$8.VueFile)) + return; + const desc = rootFile.sfc; + if (!desc.template) + return; + const languageService = context.inject('typescript/languageService'); + const template = desc.template; + const document = context.documents.getDocumentByFileName(rootFile.snapshot, rootFile.fileName); + const edits = []; + const components = (0, helpers_1$1.getComponentNames)(ts, languageService, rootFile, vueCompilerOptions); + const tags = (0, helpers_1$1.getTemplateTagsAndAttrs)(rootFile); + for (const [tagName, { offsets }] of tags) { + const componentName = components.find(component => component === tagName || (0, language_core_1$8.hyphenateTag)(component) === tagName); + if (componentName) { + for (const offset of offsets) { + const start = document.positionAt(template.startTagEnd + offset); + const end = document.positionAt(template.startTagEnd + offset + tagName.length); + const range = { start, end }; + if (casing === types_1$3.TagNameCasing.Kebab && tagName !== (0, language_core_1$8.hyphenateTag)(componentName)) { + edits.push({ range, newText: (0, language_core_1$8.hyphenateTag)(componentName) }); + } + if (casing === types_1$3.TagNameCasing.Pascal && tagName !== componentName) { + edits.push({ range, newText: componentName }); + } + } + } + } + return edits; +} +nameCasing.convertTagName = convertTagName; +async function convertAttrName(ts, context, uri, casing, vueCompilerOptions) { + const rootFile = context.documents.getSourceByUri(uri)?.root; + if (!(rootFile instanceof language_core_1$8.VueFile)) + return; + const desc = rootFile.sfc; + if (!desc.template) + return; + const languageService = context.inject('typescript/languageService'); + const template = desc.template; + const document = context.documents.getDocumentByFileName(rootFile.snapshot, rootFile.fileName); + const edits = []; + const components = (0, helpers_1$1.getComponentNames)(ts, languageService, rootFile, vueCompilerOptions); + const tags = (0, helpers_1$1.getTemplateTagsAndAttrs)(rootFile); + for (const [tagName, { attrs }] of tags) { + const componentName = components.find(component => component === tagName || (0, language_core_1$8.hyphenateTag)(component) === tagName); + if (componentName) { + const props = (0, helpers_1$1.getPropsByTag)(ts, languageService, rootFile, componentName, vueCompilerOptions); + for (const [attrName, { offsets }] of attrs) { + const propName = props.find(prop => prop === attrName || (0, language_core_1$8.hyphenateAttr)(prop) === attrName); + if (propName) { + for (const offset of offsets) { + const start = document.positionAt(template.startTagEnd + offset); + const end = document.positionAt(template.startTagEnd + offset + attrName.length); + const range = { start, end }; + if (casing === types_1$3.AttrNameCasing.Kebab && attrName !== (0, language_core_1$8.hyphenateAttr)(propName)) { + edits.push({ range, newText: (0, language_core_1$8.hyphenateAttr)(propName) }); + } + if (casing === types_1$3.AttrNameCasing.Camel && attrName !== propName) { + edits.push({ range, newText: propName }); + } + } + } + } + } + } + return edits; +} +nameCasing.convertAttrName = convertAttrName; +async function getNameCasing(ts, context, uri, vueCompilerOptions) { + const detected = detect(ts, context, uri, vueCompilerOptions); + const [attr, tag] = await Promise.all([ + context.env.getConfiguration?.('vue.complete.casing.props', uri), + context.env.getConfiguration?.('vue.complete.casing.tags', uri), + ]); + const tagNameCasing = detected.tag.length === 1 && (tag === 'autoPascal' || tag === 'autoKebab') ? detected.tag[0] : (tag === 'autoKebab' || tag === 'kebab') ? types_1$3.TagNameCasing.Kebab : types_1$3.TagNameCasing.Pascal; + const attrNameCasing = detected.attr.length === 1 && (attr === 'autoCamel' || attr === 'autoKebab') ? detected.attr[0] : (attr === 'autoCamel' || attr === 'camel') ? types_1$3.AttrNameCasing.Camel : types_1$3.AttrNameCasing.Kebab; + return { + tag: tagNameCasing, + attr: attrNameCasing, + }; +} +nameCasing.getNameCasing = getNameCasing; +function detect(ts, context, uri, vueCompilerOptions) { + const rootFile = context.documents.getSourceByUri(uri)?.root; + if (!(rootFile instanceof language_core_1$8.VueFile)) { + return { + tag: [], + attr: [], + }; + } + const languageService = context.inject('typescript/languageService'); + return { + tag: getTagNameCase(rootFile), + attr: getAttrNameCase(rootFile), + }; + function getAttrNameCase(file) { + const tags = (0, helpers_1$1.getTemplateTagsAndAttrs)(file); + const result = []; + for (const [_, { attrs }] of tags) { + for (const [tagName] of attrs) { + // attrName + if (tagName !== (0, language_core_1$8.hyphenateTag)(tagName)) { + result.push(types_1$3.AttrNameCasing.Camel); + break; + } + } + for (const [tagName] of attrs) { + // attr-name + if (tagName.indexOf('-') >= 0) { + result.push(types_1$3.AttrNameCasing.Kebab); + break; + } + } + } + return result; + } + function getTagNameCase(file) { + const components = (0, helpers_1$1.getComponentNames)(ts, languageService, file, vueCompilerOptions); + const tagNames = (0, helpers_1$1.getTemplateTagsAndAttrs)(file); + const result = []; + let anyComponentUsed = false; + for (const component of components) { + if (tagNames.has(component) || tagNames.has((0, language_core_1$8.hyphenateTag)(component))) { + anyComponentUsed = true; + break; + } + } + if (!anyComponentUsed) { + return []; // not sure component style, because do not have any component using in <template> for check + } + for (const [tagName] of tagNames) { + // TagName + if (tagName !== (0, language_core_1$8.hyphenateTag)(tagName)) { + result.push(types_1$3.TagNameCasing.Pascal); + break; + } + } + for (const component of components) { + // Tagname -> tagname + // TagName -> tag-name + if (component !== (0, language_core_1$8.hyphenateTag)(component) && tagNames.has((0, language_core_1$8.hyphenateTag)(component))) { + result.push(types_1$3.TagNameCasing.Kebab); + break; + } + } + return result; + } +} +nameCasing.detect = detect; + +var dragImport = {}; + +var vueExtractFile = {}; + +Object.defineProperty(vueExtractFile, "__esModule", { value: true }); +vueExtractFile.createAddComponentToOptionEdit = vueExtractFile.getLastImportNode = vueExtractFile.create = void 0; +const language_core_1$7 = out$8; +const unicodeReg = /\\u/g; +const create$h = function () { + return (ctx, modules) => { + if (!modules?.typescript) + return {}; + const ts = modules.typescript; + return { + async provideCodeActions(document, range, _context) { + const startOffset = document.offsetAt(range.start); + const endOffset = document.offsetAt(range.end); + if (startOffset === endOffset) { + return; + } + const [vueFile] = ctx.documents.getVirtualFileByUri(document.uri); + if (!vueFile || !(vueFile instanceof language_core_1$7.VueFile)) + return; + const { sfc } = vueFile; + const script = sfc.scriptSetup ?? sfc.script; + if (!sfc.template || !script) + return; + const templateCodeRange = selectTemplateCode(startOffset, endOffset, sfc.template); + if (!templateCodeRange) + return; + return [ + { + title: 'Extract into new dumb component', + kind: 'refactor.move.newFile.dumb', + data: { + uri: document.uri, + range: [startOffset, endOffset], + newName: 'NewComponent', + }, + }, + ]; + }, + async resolveCodeAction(codeAction) { + const { uri, range, newName } = codeAction.data; + const document = ctx.getTextDocument(uri); + const [startOffset, endOffset] = range; + const [vueFile] = ctx.documents.getVirtualFileByUri(document.uri); + const { sfc } = vueFile; + const script = sfc.scriptSetup ?? sfc.script; + if (!sfc.template || !script) + return codeAction; + const templateCodeRange = selectTemplateCode(startOffset, endOffset, sfc.template); + if (!templateCodeRange) + return codeAction; + const languageService = ctx.inject('typescript/languageService'); + const languageServiceHost = ctx.inject('typescript/languageServiceHost'); + const sourceFile = languageService.getProgram().getSourceFile(vueFile.mainScriptName); + const sourceFileKind = languageServiceHost.getScriptKind?.(vueFile.mainScriptName); + const toExtract = collectExtractProps(); + const initialIndentSetting = await ctx.env.getConfiguration('volar.format.initialIndent'); + const newUri = document.uri.substring(0, document.uri.lastIndexOf('/') + 1) + `${newName}.vue`; + const lastImportNode = getLastImportNode(ts, script.ast); + let newFileTags = []; + newFileTags.push(constructTag('template', [], initialIndentSetting.html, sfc.template.content.substring(templateCodeRange[0], templateCodeRange[1]))); + if (toExtract.length) { + newFileTags.push(constructTag('script', ['setup', 'lang="ts"'], isInitialIndentNeeded(ts, sourceFileKind, initialIndentSetting), generateNewScriptContents())); + } + if (sfc.template.startTagEnd > script.startTagEnd) { + newFileTags = newFileTags.reverse(); + } + const currentFileEdits = [ + { + range: { + start: document.positionAt(sfc.template.startTagEnd + templateCodeRange[0]), + end: document.positionAt(sfc.template.startTagEnd + templateCodeRange[1]), + }, + newText: generateReplaceTemplate(), + }, + { + range: lastImportNode ? { + start: document.positionAt(script.startTagEnd + lastImportNode.end), + end: document.positionAt(script.startTagEnd + lastImportNode.end), + } : { + start: document.positionAt(script.startTagEnd), + end: document.positionAt(script.startTagEnd), + }, + newText: `\nimport ${newName} from './${newName}.vue'`, + }, + ]; + if (sfc.script) { + const edit = createAddComponentToOptionEdit(ts, sfc.script.ast, newName); + if (edit) { + currentFileEdits.push({ + range: { + start: document.positionAt(sfc.script.startTagEnd + edit.range.start), + end: document.positionAt(sfc.script.startTagEnd + edit.range.end), + }, + newText: edit.newText, + }); + } + } + return { + ...codeAction, + edit: { + documentChanges: [ + // editing current file + { + textDocument: { + uri: document.uri, + version: null, + }, + edits: currentFileEdits, + }, + // creating new file with content + { + uri: newUri, + kind: 'create', + }, + { + textDocument: { + uri: newUri, + version: null, + }, + edits: [ + { + range: { + start: { line: 0, character: 0 }, + end: { line: 0, character: 0 }, + }, + newText: newFileTags.join('\n'), + }, + ], + }, + ], + }, + }; + function collectExtractProps() { + const result = new Map(); + const checker = languageService.getProgram().getTypeChecker(); + const maps = [...ctx.documents.getMapsByVirtualFileName(vueFile.mainScriptName)]; + sourceFile.forEachChild(function visit(node) { + if (ts.isPropertyAccessExpression(node) + && ts.isIdentifier(node.expression) + && node.expression.text === '__VLS_ctx' + && ts.isIdentifier(node.name)) { + const { name } = node; + for (const [_, map] of maps) { + const source = map.map.toSourceOffset(name.getEnd()); + if (source && source[0] >= sfc.template.startTagEnd + templateCodeRange[0] && source[0] <= sfc.template.startTagEnd + templateCodeRange[1] && source[1].data.semanticTokens) { + if (!result.has(name.text)) { + const type = checker.getTypeAtLocation(node); + const typeString = checker.typeToString(type, node, ts.TypeFormatFlags.NoTruncation); + result.set(name.text, { + name: name.text, + type: typeString.includes('__VLS_') ? 'any' : typeString, + model: false, + }); + } + const isModel = ts.isPostfixUnaryExpression(node.parent) || ts.isBinaryExpression(node.parent); + if (isModel) { + result.get(name.text).model = true; + } + break; + } + } + } + node.forEachChild(visit); + }); + return [...result.values()]; + } + function generateNewScriptContents() { + const lines = []; + const props = [...toExtract.values()].filter(p => !p.model); + const models = [...toExtract.values()].filter(p => p.model); + if (props.length) { + lines.push(`defineProps<{ \n\t${props.map(p => `${p.name}: ${p.type};`).join('\n\t')}\n}>()`); + } + for (const model of models) { + lines.push(`const ${model.name} = defineModel<${model.type}>('${model.name}', { required: true })`); + } + return lines.join('\n'); + } + function generateReplaceTemplate() { + const props = [...toExtract.values()].filter(p => !p.model); + const models = [...toExtract.values()].filter(p => p.model); + return [ + `<${newName}`, + ...props.map(p => `:${p.name}="${p.name}"`), + ...models.map(p => `v-model:${p.name}="${p.name}"`), + `/>`, + ].join(' '); + } + }, + transformCodeAction(item) { + return item; // ignore mapping + }, + }; + }; +}; +vueExtractFile.create = create$h; +function selectTemplateCode(startOffset, endOffset, templateBlock) { + if (startOffset < templateBlock.startTagEnd || endOffset > templateBlock.endTagStart) + return; + const insideNodes = []; + templateBlock.ast?.children.forEach(function visit(node) { + if (node.loc.start.offset + templateBlock.startTagEnd >= startOffset + && node.loc.end.offset + templateBlock.startTagEnd <= endOffset) { + insideNodes.push(node); + } + if ('children' in node) { + node.children.forEach(node => { + if (typeof node === 'object') { + visit(node); + } + }); + } + else if ('branches' in node) { + node.branches.forEach(visit); + } + else if ('content' in node) { + if (typeof node.content === 'object') { + visit(node.content); + } + } + }); + if (insideNodes.length) { + const first = insideNodes.sort((a, b) => a.loc.start.offset - b.loc.start.offset)[0]; + const last = insideNodes.sort((a, b) => b.loc.end.offset - a.loc.end.offset)[0]; + return [first.loc.start.offset, last.loc.end.offset]; + } +} +function constructTag(name, attributes, initialIndent, content) { + if (initialIndent) + content = content.split('\n').map(line => `\t${line}`).join('\n'); + const attributesString = attributes.length ? ` ${attributes.join(' ')}` : ''; + return `<${name}${attributesString}>\n${content}\n</${name}>\n`; +} +function isInitialIndentNeeded(ts, languageKind, initialIndentSetting) { + const languageKindIdMap = { + [ts.ScriptKind.JS]: 'javascript', + [ts.ScriptKind.TS]: 'typescript', + [ts.ScriptKind.JSX]: 'javascriptreact', + [ts.ScriptKind.TSX]: 'typescriptreact', + }; + return initialIndentSetting[languageKindIdMap[languageKind]] ?? false; +} +function getLastImportNode(ts, sourceFile) { + let lastImportNode; + for (const statement of sourceFile.statements) { + if (ts.isImportDeclaration(statement)) { + lastImportNode = statement; + } + else { + break; + } + } + return lastImportNode; +} +vueExtractFile.getLastImportNode = getLastImportNode; +function createAddComponentToOptionEdit(ts, ast, componentName) { + const exportDefault = language_core_1$7.scriptRanges.parseScriptRanges(ts, ast, false, true).exportDefault; + if (!exportDefault) + return; + // https://github.com/microsoft/TypeScript/issues/36174 + const printer = ts.createPrinter(); + if (exportDefault.componentsOption && exportDefault.componentsOptionNode) { + const newNode = { + ...exportDefault.componentsOptionNode, + properties: [ + ...exportDefault.componentsOptionNode.properties, + ts.factory.createShorthandPropertyAssignment(componentName), + ], + }; + const printText = printer.printNode(ts.EmitHint.Expression, newNode, ast); + return { + range: exportDefault.componentsOption, + newText: unescape(printText.replace(unicodeReg, '%u')), + }; + } + else if (exportDefault.args && exportDefault.argsNode) { + const newNode = { + ...exportDefault.argsNode, + properties: [ + ...exportDefault.argsNode.properties, + ts.factory.createShorthandPropertyAssignment(`components: { ${componentName} }`), + ], + }; + const printText = printer.printNode(ts.EmitHint.Expression, newNode, ast); + return { + range: exportDefault.args, + newText: unescape(printText.replace(unicodeReg, '%u')), + }; + } +} +vueExtractFile.createAddComponentToOptionEdit = createAddComponentToOptionEdit; + +Object.defineProperty(dragImport, "__esModule", { value: true }); +dragImport.getDragImportEdits = void 0; +const shared_1$r = require$$1$1; +const path$6 = pathBrowserify; +const vue_extract_file_1 = vueExtractFile; +const types_1$2 = types; +function getDragImportEdits(ts, ctx, uri, importUri, casing) { + let baseName = importUri.substring(importUri.lastIndexOf('/') + 1); + baseName = baseName.substring(0, baseName.lastIndexOf('.')); + const newName = (0, shared_1$r.capitalize)((0, shared_1$r.camelize)(baseName)); + const document = ctx.getTextDocument(uri); + const [vueFile] = ctx.documents.getVirtualFileByUri(document.uri); + const { sfc } = vueFile; + const script = sfc.scriptSetup ?? sfc.script; + if (!sfc.template || !script) + return; + const lastImportNode = (0, vue_extract_file_1.getLastImportNode)(ts, script.ast); + const edits = [ + { + range: lastImportNode ? { + start: document.positionAt(script.startTagEnd + lastImportNode.end), + end: document.positionAt(script.startTagEnd + lastImportNode.end), + } : { + start: document.positionAt(script.startTagEnd), + end: document.positionAt(script.startTagEnd), + }, + newText: `\nimport ${newName} from './${path$6.relative(path$6.dirname(uri), importUri) || importUri.substring(importUri.lastIndexOf('/') + 1)}'`, + }, + ]; + if (sfc.script) { + const edit = (0, vue_extract_file_1.createAddComponentToOptionEdit)(ts, sfc.script.ast, newName); + if (edit) { + edits.push({ + range: { + start: document.positionAt(sfc.script.startTagEnd + edit.range.start), + end: document.positionAt(sfc.script.startTagEnd + edit.range.end), + }, + newText: edit.newText, + }); + } + } + return { + insertText: `<${casing === types_1$2.TagNameCasing.Kebab ? (0, shared_1$r.hyphenate)(newName) : newName}$0 />`, + insertTextFormat: 2, + additionalEdits: edits, + }; +} +dragImport.getDragImportEdits = getDragImportEdits; + +var languageService$1 = {}; + +var out$6 = {}; + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +var TokenType$1; +(function (TokenType) { + TokenType[TokenType["Ident"] = 0] = "Ident"; + TokenType[TokenType["AtKeyword"] = 1] = "AtKeyword"; + TokenType[TokenType["String"] = 2] = "String"; + TokenType[TokenType["BadString"] = 3] = "BadString"; + TokenType[TokenType["UnquotedString"] = 4] = "UnquotedString"; + TokenType[TokenType["Hash"] = 5] = "Hash"; + TokenType[TokenType["Num"] = 6] = "Num"; + TokenType[TokenType["Percentage"] = 7] = "Percentage"; + TokenType[TokenType["Dimension"] = 8] = "Dimension"; + TokenType[TokenType["UnicodeRange"] = 9] = "UnicodeRange"; + TokenType[TokenType["CDO"] = 10] = "CDO"; + TokenType[TokenType["CDC"] = 11] = "CDC"; + TokenType[TokenType["Colon"] = 12] = "Colon"; + TokenType[TokenType["SemiColon"] = 13] = "SemiColon"; + TokenType[TokenType["CurlyL"] = 14] = "CurlyL"; + TokenType[TokenType["CurlyR"] = 15] = "CurlyR"; + TokenType[TokenType["ParenthesisL"] = 16] = "ParenthesisL"; + TokenType[TokenType["ParenthesisR"] = 17] = "ParenthesisR"; + TokenType[TokenType["BracketL"] = 18] = "BracketL"; + TokenType[TokenType["BracketR"] = 19] = "BracketR"; + TokenType[TokenType["Whitespace"] = 20] = "Whitespace"; + TokenType[TokenType["Includes"] = 21] = "Includes"; + TokenType[TokenType["Dashmatch"] = 22] = "Dashmatch"; + TokenType[TokenType["SubstringOperator"] = 23] = "SubstringOperator"; + TokenType[TokenType["PrefixOperator"] = 24] = "PrefixOperator"; + TokenType[TokenType["SuffixOperator"] = 25] = "SuffixOperator"; + TokenType[TokenType["Delim"] = 26] = "Delim"; + TokenType[TokenType["EMS"] = 27] = "EMS"; + TokenType[TokenType["EXS"] = 28] = "EXS"; + TokenType[TokenType["Length"] = 29] = "Length"; + TokenType[TokenType["Angle"] = 30] = "Angle"; + TokenType[TokenType["Time"] = 31] = "Time"; + TokenType[TokenType["Freq"] = 32] = "Freq"; + TokenType[TokenType["Exclamation"] = 33] = "Exclamation"; + TokenType[TokenType["Resolution"] = 34] = "Resolution"; + TokenType[TokenType["Comma"] = 35] = "Comma"; + TokenType[TokenType["Charset"] = 36] = "Charset"; + TokenType[TokenType["EscapedJavaScript"] = 37] = "EscapedJavaScript"; + TokenType[TokenType["BadEscapedJavaScript"] = 38] = "BadEscapedJavaScript"; + TokenType[TokenType["Comment"] = 39] = "Comment"; + TokenType[TokenType["SingleLineComment"] = 40] = "SingleLineComment"; + TokenType[TokenType["EOF"] = 41] = "EOF"; + TokenType[TokenType["ContainerQueryLength"] = 42] = "ContainerQueryLength"; + TokenType[TokenType["CustomToken"] = 43] = "CustomToken"; // must be last token type +})(TokenType$1 || (TokenType$1 = {})); +let MultiLineStream$1 = class MultiLineStream { + constructor(source) { + this.source = source; + this.len = source.length; + this.position = 0; + } + substring(from, to = this.position) { + return this.source.substring(from, to); + } + eos() { + return this.len <= this.position; + } + pos() { + return this.position; + } + goBackTo(pos) { + this.position = pos; + } + goBack(n) { + this.position -= n; + } + advance(n) { + this.position += n; + } + nextChar() { + return this.source.charCodeAt(this.position++) || 0; + } + peekChar(n = 0) { + return this.source.charCodeAt(this.position + n) || 0; + } + lookbackChar(n = 0) { + return this.source.charCodeAt(this.position - n) || 0; + } + advanceIfChar(ch) { + if (ch === this.source.charCodeAt(this.position)) { + this.position++; + return true; + } + return false; + } + advanceIfChars(ch) { + if (this.position + ch.length > this.source.length) { + return false; + } + let i = 0; + for (; i < ch.length; i++) { + if (this.source.charCodeAt(this.position + i) !== ch[i]) { + return false; + } + } + this.advance(i); + return true; + } + advanceWhileChar(condition) { + const posNow = this.position; + while (this.position < this.len && condition(this.source.charCodeAt(this.position))) { + this.position++; + } + return this.position - posNow; + } +}; +const _a$1 = 'a'.charCodeAt(0); +const _f = 'f'.charCodeAt(0); +const _z$1 = 'z'.charCodeAt(0); +const _A$1 = 'A'.charCodeAt(0); +const _F = 'F'.charCodeAt(0); +const _Z$1 = 'Z'.charCodeAt(0); +const _0$2 = '0'.charCodeAt(0); +const _9$2 = '9'.charCodeAt(0); +const _TLD = '~'.charCodeAt(0); +const _HAT = '^'.charCodeAt(0); +const _EQS$2 = '='.charCodeAt(0); +const _PIP = '|'.charCodeAt(0); +const _MIN$1 = '-'.charCodeAt(0); +const _USC = '_'.charCodeAt(0); +const _PRC = '%'.charCodeAt(0); +const _MUL = '*'.charCodeAt(0); +const _LPA = '('.charCodeAt(0); +const _RPA = ')'.charCodeAt(0); +const _LAN$2 = '<'.charCodeAt(0); +const _RAN$2 = '>'.charCodeAt(0); +const _ATS = '@'.charCodeAt(0); +const _HSH$1 = '#'.charCodeAt(0); +const _DLR$1 = '$'.charCodeAt(0); +const _BSL = '\\'.charCodeAt(0); +const _FSL$3 = '/'.charCodeAt(0); +const _NWL$3 = '\n'.charCodeAt(0); +const _CAR$3 = '\r'.charCodeAt(0); +const _LFD$3 = '\f'.charCodeAt(0); +const _DQO$1 = '"'.charCodeAt(0); +const _SQO$1 = '\''.charCodeAt(0); +const _WSP$1 = ' '.charCodeAt(0); +const _TAB$1 = '\t'.charCodeAt(0); +const _SEM = ';'.charCodeAt(0); +const _COL = ':'.charCodeAt(0); +const _CUL$2 = '{'.charCodeAt(0); +const _CUR$1 = '}'.charCodeAt(0); +const _BRL = '['.charCodeAt(0); +const _BRR = ']'.charCodeAt(0); +const _CMA = ','.charCodeAt(0); +const _DOT$2 = '.'.charCodeAt(0); +const _BNG$2 = '!'.charCodeAt(0); +const _QSM = '?'.charCodeAt(0); +const _PLS = '+'.charCodeAt(0); +const staticTokenTable = {}; +staticTokenTable[_SEM] = TokenType$1.SemiColon; +staticTokenTable[_COL] = TokenType$1.Colon; +staticTokenTable[_CUL$2] = TokenType$1.CurlyL; +staticTokenTable[_CUR$1] = TokenType$1.CurlyR; +staticTokenTable[_BRR] = TokenType$1.BracketR; +staticTokenTable[_BRL] = TokenType$1.BracketL; +staticTokenTable[_LPA] = TokenType$1.ParenthesisL; +staticTokenTable[_RPA] = TokenType$1.ParenthesisR; +staticTokenTable[_CMA] = TokenType$1.Comma; +const staticUnitTable = {}; +staticUnitTable['em'] = TokenType$1.EMS; +staticUnitTable['ex'] = TokenType$1.EXS; +staticUnitTable['px'] = TokenType$1.Length; +staticUnitTable['cm'] = TokenType$1.Length; +staticUnitTable['mm'] = TokenType$1.Length; +staticUnitTable['in'] = TokenType$1.Length; +staticUnitTable['pt'] = TokenType$1.Length; +staticUnitTable['pc'] = TokenType$1.Length; +staticUnitTable['deg'] = TokenType$1.Angle; +staticUnitTable['rad'] = TokenType$1.Angle; +staticUnitTable['grad'] = TokenType$1.Angle; +staticUnitTable['ms'] = TokenType$1.Time; +staticUnitTable['s'] = TokenType$1.Time; +staticUnitTable['hz'] = TokenType$1.Freq; +staticUnitTable['khz'] = TokenType$1.Freq; +staticUnitTable['%'] = TokenType$1.Percentage; +staticUnitTable['fr'] = TokenType$1.Percentage; +staticUnitTable['dpi'] = TokenType$1.Resolution; +staticUnitTable['dpcm'] = TokenType$1.Resolution; +staticUnitTable['cqw'] = TokenType$1.ContainerQueryLength; +staticUnitTable['cqh'] = TokenType$1.ContainerQueryLength; +staticUnitTable['cqi'] = TokenType$1.ContainerQueryLength; +staticUnitTable['cqb'] = TokenType$1.ContainerQueryLength; +staticUnitTable['cqmin'] = TokenType$1.ContainerQueryLength; +staticUnitTable['cqmax'] = TokenType$1.ContainerQueryLength; +class Scanner { + constructor() { + this.stream = new MultiLineStream$1(''); + this.ignoreComment = true; + this.ignoreWhitespace = true; + this.inURL = false; + } + setSource(input) { + this.stream = new MultiLineStream$1(input); + } + finishToken(offset, type, text) { + return { + offset: offset, + len: this.stream.pos() - offset, + type: type, + text: text || this.stream.substring(offset) + }; + } + substring(offset, len) { + return this.stream.substring(offset, offset + len); + } + pos() { + return this.stream.pos(); + } + goBackTo(pos) { + this.stream.goBackTo(pos); + } + scanUnquotedString() { + const offset = this.stream.pos(); + const content = []; + if (this._unquotedString(content)) { + return this.finishToken(offset, TokenType$1.UnquotedString, content.join('')); + } + return null; + } + scan() { + // processes all whitespaces and comments + const triviaToken = this.trivia(); + if (triviaToken !== null) { + return triviaToken; + } + const offset = this.stream.pos(); + // End of file/input + if (this.stream.eos()) { + return this.finishToken(offset, TokenType$1.EOF); + } + return this.scanNext(offset); + } + /** + * Read the range as described in https://www.w3.org/TR/CSS21/syndata.html#tokenization + * Assume the `u` has aleady been consumed + * @returns if reading the unicode was successful + */ + tryScanUnicode() { + const offset = this.stream.pos(); + if (!this.stream.eos() && this._unicodeRange()) { + return this.finishToken(offset, TokenType$1.UnicodeRange); + } + this.stream.goBackTo(offset); + return undefined; + } + scanNext(offset) { + // CDO <!-- + if (this.stream.advanceIfChars([_LAN$2, _BNG$2, _MIN$1, _MIN$1])) { + return this.finishToken(offset, TokenType$1.CDO); + } + // CDC --> + if (this.stream.advanceIfChars([_MIN$1, _MIN$1, _RAN$2])) { + return this.finishToken(offset, TokenType$1.CDC); + } + let content = []; + if (this.ident(content)) { + return this.finishToken(offset, TokenType$1.Ident, content.join('')); + } + // at-keyword + if (this.stream.advanceIfChar(_ATS)) { + content = ['@']; + if (this._name(content)) { + const keywordText = content.join(''); + if (keywordText === '@charset') { + return this.finishToken(offset, TokenType$1.Charset, keywordText); + } + return this.finishToken(offset, TokenType$1.AtKeyword, keywordText); + } + else { + return this.finishToken(offset, TokenType$1.Delim); + } + } + // hash + if (this.stream.advanceIfChar(_HSH$1)) { + content = ['#']; + if (this._name(content)) { + return this.finishToken(offset, TokenType$1.Hash, content.join('')); + } + else { + return this.finishToken(offset, TokenType$1.Delim); + } + } + // Important + if (this.stream.advanceIfChar(_BNG$2)) { + return this.finishToken(offset, TokenType$1.Exclamation); + } + // Numbers + if (this._number()) { + const pos = this.stream.pos(); + content = [this.stream.substring(offset, pos)]; + if (this.stream.advanceIfChar(_PRC)) { + // Percentage 43% + return this.finishToken(offset, TokenType$1.Percentage); + } + else if (this.ident(content)) { + const dim = this.stream.substring(pos).toLowerCase(); + const tokenType = staticUnitTable[dim]; + if (typeof tokenType !== 'undefined') { + // Known dimension 43px + return this.finishToken(offset, tokenType, content.join('')); + } + else { + // Unknown dimension 43ft + return this.finishToken(offset, TokenType$1.Dimension, content.join('')); + } + } + return this.finishToken(offset, TokenType$1.Num); + } + // String, BadString + content = []; + let tokenType = this._string(content); + if (tokenType !== null) { + return this.finishToken(offset, tokenType, content.join('')); + } + // single character tokens + tokenType = staticTokenTable[this.stream.peekChar()]; + if (typeof tokenType !== 'undefined') { + this.stream.advance(1); + return this.finishToken(offset, tokenType); + } + // includes ~= + if (this.stream.peekChar(0) === _TLD && this.stream.peekChar(1) === _EQS$2) { + this.stream.advance(2); + return this.finishToken(offset, TokenType$1.Includes); + } + // DashMatch |= + if (this.stream.peekChar(0) === _PIP && this.stream.peekChar(1) === _EQS$2) { + this.stream.advance(2); + return this.finishToken(offset, TokenType$1.Dashmatch); + } + // Substring operator *= + if (this.stream.peekChar(0) === _MUL && this.stream.peekChar(1) === _EQS$2) { + this.stream.advance(2); + return this.finishToken(offset, TokenType$1.SubstringOperator); + } + // Substring operator ^= + if (this.stream.peekChar(0) === _HAT && this.stream.peekChar(1) === _EQS$2) { + this.stream.advance(2); + return this.finishToken(offset, TokenType$1.PrefixOperator); + } + // Substring operator $= + if (this.stream.peekChar(0) === _DLR$1 && this.stream.peekChar(1) === _EQS$2) { + this.stream.advance(2); + return this.finishToken(offset, TokenType$1.SuffixOperator); + } + // Delim + this.stream.nextChar(); + return this.finishToken(offset, TokenType$1.Delim); + } + trivia() { + while (true) { + const offset = this.stream.pos(); + if (this._whitespace()) { + if (!this.ignoreWhitespace) { + return this.finishToken(offset, TokenType$1.Whitespace); + } + } + else if (this.comment()) { + if (!this.ignoreComment) { + return this.finishToken(offset, TokenType$1.Comment); + } + } + else { + return null; + } + } + } + comment() { + if (this.stream.advanceIfChars([_FSL$3, _MUL])) { + let success = false, hot = false; + this.stream.advanceWhileChar((ch) => { + if (hot && ch === _FSL$3) { + success = true; + return false; + } + hot = ch === _MUL; + return true; + }); + if (success) { + this.stream.advance(1); + } + return true; + } + return false; + } + _number() { + let npeek = 0, ch; + if (this.stream.peekChar() === _DOT$2) { + npeek = 1; + } + ch = this.stream.peekChar(npeek); + if (ch >= _0$2 && ch <= _9$2) { + this.stream.advance(npeek + 1); + this.stream.advanceWhileChar((ch) => { + return ch >= _0$2 && ch <= _9$2 || npeek === 0 && ch === _DOT$2; + }); + return true; + } + return false; + } + _newline(result) { + const ch = this.stream.peekChar(); + switch (ch) { + case _CAR$3: + case _LFD$3: + case _NWL$3: + this.stream.advance(1); + result.push(String.fromCharCode(ch)); + if (ch === _CAR$3 && this.stream.advanceIfChar(_NWL$3)) { + result.push('\n'); + } + return true; + } + return false; + } + _escape(result, includeNewLines) { + let ch = this.stream.peekChar(); + if (ch === _BSL) { + this.stream.advance(1); + ch = this.stream.peekChar(); + let hexNumCount = 0; + while (hexNumCount < 6 && (ch >= _0$2 && ch <= _9$2 || ch >= _a$1 && ch <= _f || ch >= _A$1 && ch <= _F)) { + this.stream.advance(1); + ch = this.stream.peekChar(); + hexNumCount++; + } + if (hexNumCount > 0) { + try { + const hexVal = parseInt(this.stream.substring(this.stream.pos() - hexNumCount), 16); + if (hexVal) { + result.push(String.fromCharCode(hexVal)); + } + } + catch (e) { + // ignore + } + // optional whitespace or new line, not part of result text + if (ch === _WSP$1 || ch === _TAB$1) { + this.stream.advance(1); + } + else { + this._newline([]); + } + return true; + } + if (ch !== _CAR$3 && ch !== _LFD$3 && ch !== _NWL$3) { + this.stream.advance(1); + result.push(String.fromCharCode(ch)); + return true; + } + else if (includeNewLines) { + return this._newline(result); + } + } + return false; + } + _stringChar(closeQuote, result) { + // not closeQuote, not backslash, not newline + const ch = this.stream.peekChar(); + if (ch !== 0 && ch !== closeQuote && ch !== _BSL && ch !== _CAR$3 && ch !== _LFD$3 && ch !== _NWL$3) { + this.stream.advance(1); + result.push(String.fromCharCode(ch)); + return true; + } + return false; + } + _string(result) { + if (this.stream.peekChar() === _SQO$1 || this.stream.peekChar() === _DQO$1) { + const closeQuote = this.stream.nextChar(); + result.push(String.fromCharCode(closeQuote)); + while (this._stringChar(closeQuote, result) || this._escape(result, true)) { + // loop + } + if (this.stream.peekChar() === closeQuote) { + this.stream.nextChar(); + result.push(String.fromCharCode(closeQuote)); + return TokenType$1.String; + } + else { + return TokenType$1.BadString; + } + } + return null; + } + _unquotedChar(result) { + // not closeQuote, not backslash, not newline + const ch = this.stream.peekChar(); + if (ch !== 0 && ch !== _BSL && ch !== _SQO$1 && ch !== _DQO$1 && ch !== _LPA && ch !== _RPA && ch !== _WSP$1 && ch !== _TAB$1 && ch !== _NWL$3 && ch !== _LFD$3 && ch !== _CAR$3) { + this.stream.advance(1); + result.push(String.fromCharCode(ch)); + return true; + } + return false; + } + _unquotedString(result) { + let hasContent = false; + while (this._unquotedChar(result) || this._escape(result)) { + hasContent = true; + } + return hasContent; + } + _whitespace() { + const n = this.stream.advanceWhileChar((ch) => { + return ch === _WSP$1 || ch === _TAB$1 || ch === _NWL$3 || ch === _LFD$3 || ch === _CAR$3; + }); + return n > 0; + } + _name(result) { + let matched = false; + while (this._identChar(result) || this._escape(result)) { + matched = true; + } + return matched; + } + ident(result) { + const pos = this.stream.pos(); + const hasMinus = this._minus(result); + if (hasMinus) { + if (this._minus(result) /* -- */ || this._identFirstChar(result) || this._escape(result)) { + while (this._identChar(result) || this._escape(result)) { + // loop + } + return true; + } + } + else if (this._identFirstChar(result) || this._escape(result)) { + while (this._identChar(result) || this._escape(result)) { + // loop + } + return true; + } + this.stream.goBackTo(pos); + return false; + } + _identFirstChar(result) { + const ch = this.stream.peekChar(); + if (ch === _USC || // _ + ch >= _a$1 && ch <= _z$1 || // a-z + ch >= _A$1 && ch <= _Z$1 || // A-Z + ch >= 0x80 && ch <= 0xFFFF) { // nonascii + this.stream.advance(1); + result.push(String.fromCharCode(ch)); + return true; + } + return false; + } + _minus(result) { + const ch = this.stream.peekChar(); + if (ch === _MIN$1) { + this.stream.advance(1); + result.push(String.fromCharCode(ch)); + return true; + } + return false; + } + _identChar(result) { + const ch = this.stream.peekChar(); + if (ch === _USC || // _ + ch === _MIN$1 || // - + ch >= _a$1 && ch <= _z$1 || // a-z + ch >= _A$1 && ch <= _Z$1 || // A-Z + ch >= _0$2 && ch <= _9$2 || // 0/9 + ch >= 0x80 && ch <= 0xFFFF) { // nonascii + this.stream.advance(1); + result.push(String.fromCharCode(ch)); + return true; + } + return false; + } + _unicodeRange() { + // follow https://www.w3.org/TR/CSS21/syndata.html#tokenization and https://www.w3.org/TR/css-syntax-3/#urange-syntax + // assume u has already been parsed + if (this.stream.advanceIfChar(_PLS)) { + const isHexDigit = (ch) => (ch >= _0$2 && ch <= _9$2 || ch >= _a$1 && ch <= _f || ch >= _A$1 && ch <= _F); + const codePoints = this.stream.advanceWhileChar(isHexDigit) + this.stream.advanceWhileChar(ch => ch === _QSM); + if (codePoints >= 1 && codePoints <= 6) { + if (this.stream.advanceIfChar(_MIN$1)) { + const digits = this.stream.advanceWhileChar(isHexDigit); + if (digits >= 1 && digits <= 6) { + return true; + } + } + else { + return true; + } + } + } + return false; + } +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +function startsWith$3(haystack, needle) { + if (haystack.length < needle.length) { + return false; + } + for (let i = 0; i < needle.length; i++) { + if (haystack[i] !== needle[i]) { + return false; + } + } + return true; +} +/** + * Determines if haystack ends with needle. + */ +function endsWith$3(haystack, needle) { + let diff = haystack.length - needle.length; + if (diff > 0) { + return haystack.lastIndexOf(needle) === diff; + } + else if (diff === 0) { + return haystack === needle; + } + else { + return false; + } +} +/** + * Computes the difference score for two strings. More similar strings have a higher score. + * We use largest common subsequence dynamic programming approach but penalize in the end for length differences. + * Strings that have a large length difference will get a bad default score 0. + * Complexity - both time and space O(first.length * second.length) + * Dynamic programming LCS computation http://en.wikipedia.org/wiki/Longest_common_subsequence_problem + * + * @param first a string + * @param second a string + */ +function difference(first, second, maxLenDelta = 4) { + let lengthDifference = Math.abs(first.length - second.length); + // We only compute score if length of the currentWord and length of entry.name are similar. + if (lengthDifference > maxLenDelta) { + return 0; + } + // Initialize LCS (largest common subsequence) matrix. + let LCS = []; + let zeroArray = []; + let i, j; + for (i = 0; i < second.length + 1; ++i) { + zeroArray.push(0); + } + for (i = 0; i < first.length + 1; ++i) { + LCS.push(zeroArray); + } + for (i = 1; i < first.length + 1; ++i) { + for (j = 1; j < second.length + 1; ++j) { + if (first[i - 1] === second[j - 1]) { + LCS[i][j] = LCS[i - 1][j - 1] + 1; + } + else { + LCS[i][j] = Math.max(LCS[i - 1][j], LCS[i][j - 1]); + } + } + } + return LCS[first.length][second.length] - Math.sqrt(lengthDifference); +} +/** + * Limit of string length. + */ +function getLimitedString(str, ellipsis = true) { + if (!str) { + return ''; + } + if (str.length < 140) { + return str; + } + return str.slice(0, 140) + (ellipsis ? '\u2026' : ''); +} +/** + * Limit of string length. + */ +function trim$1(str, regexp) { + const m = regexp.exec(str); + if (m && m[0].length) { + return str.substr(0, str.length - m[0].length); + } + return str; +} +function repeat$2(value, count) { + let s = ''; + while (count > 0) { + if ((count & 1) === 1) { + s += value; + } + value += value; + count = count >>> 1; + } + return s; +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +/// <summary> +/// Nodes for the css 2.1 specification. See for reference: +/// http://www.w3.org/TR/CSS21/grammar.html#grammar +/// </summary> +var NodeType; +(function (NodeType) { + NodeType[NodeType["Undefined"] = 0] = "Undefined"; + NodeType[NodeType["Identifier"] = 1] = "Identifier"; + NodeType[NodeType["Stylesheet"] = 2] = "Stylesheet"; + NodeType[NodeType["Ruleset"] = 3] = "Ruleset"; + NodeType[NodeType["Selector"] = 4] = "Selector"; + NodeType[NodeType["SimpleSelector"] = 5] = "SimpleSelector"; + NodeType[NodeType["SelectorInterpolation"] = 6] = "SelectorInterpolation"; + NodeType[NodeType["SelectorCombinator"] = 7] = "SelectorCombinator"; + NodeType[NodeType["SelectorCombinatorParent"] = 8] = "SelectorCombinatorParent"; + NodeType[NodeType["SelectorCombinatorSibling"] = 9] = "SelectorCombinatorSibling"; + NodeType[NodeType["SelectorCombinatorAllSiblings"] = 10] = "SelectorCombinatorAllSiblings"; + NodeType[NodeType["SelectorCombinatorShadowPiercingDescendant"] = 11] = "SelectorCombinatorShadowPiercingDescendant"; + NodeType[NodeType["Page"] = 12] = "Page"; + NodeType[NodeType["PageBoxMarginBox"] = 13] = "PageBoxMarginBox"; + NodeType[NodeType["ClassSelector"] = 14] = "ClassSelector"; + NodeType[NodeType["IdentifierSelector"] = 15] = "IdentifierSelector"; + NodeType[NodeType["ElementNameSelector"] = 16] = "ElementNameSelector"; + NodeType[NodeType["PseudoSelector"] = 17] = "PseudoSelector"; + NodeType[NodeType["AttributeSelector"] = 18] = "AttributeSelector"; + NodeType[NodeType["Declaration"] = 19] = "Declaration"; + NodeType[NodeType["Declarations"] = 20] = "Declarations"; + NodeType[NodeType["Property"] = 21] = "Property"; + NodeType[NodeType["Expression"] = 22] = "Expression"; + NodeType[NodeType["BinaryExpression"] = 23] = "BinaryExpression"; + NodeType[NodeType["Term"] = 24] = "Term"; + NodeType[NodeType["Operator"] = 25] = "Operator"; + NodeType[NodeType["Value"] = 26] = "Value"; + NodeType[NodeType["StringLiteral"] = 27] = "StringLiteral"; + NodeType[NodeType["URILiteral"] = 28] = "URILiteral"; + NodeType[NodeType["EscapedValue"] = 29] = "EscapedValue"; + NodeType[NodeType["Function"] = 30] = "Function"; + NodeType[NodeType["NumericValue"] = 31] = "NumericValue"; + NodeType[NodeType["HexColorValue"] = 32] = "HexColorValue"; + NodeType[NodeType["RatioValue"] = 33] = "RatioValue"; + NodeType[NodeType["MixinDeclaration"] = 34] = "MixinDeclaration"; + NodeType[NodeType["MixinReference"] = 35] = "MixinReference"; + NodeType[NodeType["VariableName"] = 36] = "VariableName"; + NodeType[NodeType["VariableDeclaration"] = 37] = "VariableDeclaration"; + NodeType[NodeType["Prio"] = 38] = "Prio"; + NodeType[NodeType["Interpolation"] = 39] = "Interpolation"; + NodeType[NodeType["NestedProperties"] = 40] = "NestedProperties"; + NodeType[NodeType["ExtendsReference"] = 41] = "ExtendsReference"; + NodeType[NodeType["SelectorPlaceholder"] = 42] = "SelectorPlaceholder"; + NodeType[NodeType["Debug"] = 43] = "Debug"; + NodeType[NodeType["If"] = 44] = "If"; + NodeType[NodeType["Else"] = 45] = "Else"; + NodeType[NodeType["For"] = 46] = "For"; + NodeType[NodeType["Each"] = 47] = "Each"; + NodeType[NodeType["While"] = 48] = "While"; + NodeType[NodeType["MixinContentReference"] = 49] = "MixinContentReference"; + NodeType[NodeType["MixinContentDeclaration"] = 50] = "MixinContentDeclaration"; + NodeType[NodeType["Media"] = 51] = "Media"; + NodeType[NodeType["Keyframe"] = 52] = "Keyframe"; + NodeType[NodeType["FontFace"] = 53] = "FontFace"; + NodeType[NodeType["Import"] = 54] = "Import"; + NodeType[NodeType["Namespace"] = 55] = "Namespace"; + NodeType[NodeType["Invocation"] = 56] = "Invocation"; + NodeType[NodeType["FunctionDeclaration"] = 57] = "FunctionDeclaration"; + NodeType[NodeType["ReturnStatement"] = 58] = "ReturnStatement"; + NodeType[NodeType["MediaQuery"] = 59] = "MediaQuery"; + NodeType[NodeType["MediaCondition"] = 60] = "MediaCondition"; + NodeType[NodeType["MediaFeature"] = 61] = "MediaFeature"; + NodeType[NodeType["FunctionParameter"] = 62] = "FunctionParameter"; + NodeType[NodeType["FunctionArgument"] = 63] = "FunctionArgument"; + NodeType[NodeType["KeyframeSelector"] = 64] = "KeyframeSelector"; + NodeType[NodeType["ViewPort"] = 65] = "ViewPort"; + NodeType[NodeType["Document"] = 66] = "Document"; + NodeType[NodeType["AtApplyRule"] = 67] = "AtApplyRule"; + NodeType[NodeType["CustomPropertyDeclaration"] = 68] = "CustomPropertyDeclaration"; + NodeType[NodeType["CustomPropertySet"] = 69] = "CustomPropertySet"; + NodeType[NodeType["ListEntry"] = 70] = "ListEntry"; + NodeType[NodeType["Supports"] = 71] = "Supports"; + NodeType[NodeType["SupportsCondition"] = 72] = "SupportsCondition"; + NodeType[NodeType["NamespacePrefix"] = 73] = "NamespacePrefix"; + NodeType[NodeType["GridLine"] = 74] = "GridLine"; + NodeType[NodeType["Plugin"] = 75] = "Plugin"; + NodeType[NodeType["UnknownAtRule"] = 76] = "UnknownAtRule"; + NodeType[NodeType["Use"] = 77] = "Use"; + NodeType[NodeType["ModuleConfiguration"] = 78] = "ModuleConfiguration"; + NodeType[NodeType["Forward"] = 79] = "Forward"; + NodeType[NodeType["ForwardVisibility"] = 80] = "ForwardVisibility"; + NodeType[NodeType["Module"] = 81] = "Module"; + NodeType[NodeType["UnicodeRange"] = 82] = "UnicodeRange"; + NodeType[NodeType["Layer"] = 83] = "Layer"; + NodeType[NodeType["LayerNameList"] = 84] = "LayerNameList"; + NodeType[NodeType["LayerName"] = 85] = "LayerName"; + NodeType[NodeType["PropertyAtRule"] = 86] = "PropertyAtRule"; + NodeType[NodeType["Container"] = 87] = "Container"; +})(NodeType || (NodeType = {})); +var ReferenceType; +(function (ReferenceType) { + ReferenceType[ReferenceType["Mixin"] = 0] = "Mixin"; + ReferenceType[ReferenceType["Rule"] = 1] = "Rule"; + ReferenceType[ReferenceType["Variable"] = 2] = "Variable"; + ReferenceType[ReferenceType["Function"] = 3] = "Function"; + ReferenceType[ReferenceType["Keyframe"] = 4] = "Keyframe"; + ReferenceType[ReferenceType["Unknown"] = 5] = "Unknown"; + ReferenceType[ReferenceType["Module"] = 6] = "Module"; + ReferenceType[ReferenceType["Forward"] = 7] = "Forward"; + ReferenceType[ReferenceType["ForwardVisibility"] = 8] = "ForwardVisibility"; + ReferenceType[ReferenceType["Property"] = 9] = "Property"; +})(ReferenceType || (ReferenceType = {})); +function getNodeAtOffset(node, offset) { + let candidate = null; + if (!node || offset < node.offset || offset > node.end) { + return null; + } + // Find the shortest node at the position + node.accept((node) => { + if (node.offset === -1 && node.length === -1) { + return true; + } + if (node.offset <= offset && node.end >= offset) { + if (!candidate) { + candidate = node; + } + else if (node.length <= candidate.length) { + candidate = node; + } + return true; + } + return false; + }); + return candidate; +} +function getNodePath$3(node, offset) { + let candidate = getNodeAtOffset(node, offset); + const path = []; + while (candidate) { + path.unshift(candidate); + candidate = candidate.parent; + } + return path; +} +function getParentDeclaration(node) { + const decl = node.findParent(NodeType.Declaration); + const value = decl && decl.getValue(); + if (value && value.encloses(node)) { + return decl; + } + return null; +} +let Node$2 = class Node { + get end() { return this.offset + this.length; } + constructor(offset = -1, len = -1, nodeType) { + this.parent = null; + this.offset = offset; + this.length = len; + if (nodeType) { + this.nodeType = nodeType; + } + } + set type(type) { + this.nodeType = type; + } + get type() { + return this.nodeType || NodeType.Undefined; + } + getTextProvider() { + let node = this; + while (node && !node.textProvider) { + node = node.parent; + } + if (node) { + return node.textProvider; + } + return () => { return 'unknown'; }; + } + getText() { + return this.getTextProvider()(this.offset, this.length); + } + matches(str) { + return this.length === str.length && this.getTextProvider()(this.offset, this.length) === str; + } + startsWith(str) { + return this.length >= str.length && this.getTextProvider()(this.offset, str.length) === str; + } + endsWith(str) { + return this.length >= str.length && this.getTextProvider()(this.end - str.length, str.length) === str; + } + accept(visitor) { + if (visitor(this) && this.children) { + for (const child of this.children) { + child.accept(visitor); + } + } + } + acceptVisitor(visitor) { + this.accept(visitor.visitNode.bind(visitor)); + } + adoptChild(node, index = -1) { + if (node.parent && node.parent.children) { + const idx = node.parent.children.indexOf(node); + if (idx >= 0) { + node.parent.children.splice(idx, 1); + } + } + node.parent = this; + let children = this.children; + if (!children) { + children = this.children = []; + } + if (index !== -1) { + children.splice(index, 0, node); + } + else { + children.push(node); + } + return node; + } + attachTo(parent, index = -1) { + if (parent) { + parent.adoptChild(this, index); + } + return this; + } + collectIssues(results) { + if (this.issues) { + results.push.apply(results, this.issues); + } + } + addIssue(issue) { + if (!this.issues) { + this.issues = []; + } + this.issues.push(issue); + } + hasIssue(rule) { + return Array.isArray(this.issues) && this.issues.some(i => i.getRule() === rule); + } + isErroneous(recursive = false) { + if (this.issues && this.issues.length > 0) { + return true; + } + return recursive && Array.isArray(this.children) && this.children.some(c => c.isErroneous(true)); + } + setNode(field, node, index = -1) { + if (node) { + node.attachTo(this, index); + this[field] = node; + return true; + } + return false; + } + addChild(node) { + if (node) { + if (!this.children) { + this.children = []; + } + node.attachTo(this); + this.updateOffsetAndLength(node); + return true; + } + return false; + } + updateOffsetAndLength(node) { + if (node.offset < this.offset || this.offset === -1) { + this.offset = node.offset; + } + const nodeEnd = node.end; + if ((nodeEnd > this.end) || this.length === -1) { + this.length = nodeEnd - this.offset; + } + } + hasChildren() { + return !!this.children && this.children.length > 0; + } + getChildren() { + return this.children ? this.children.slice(0) : []; + } + getChild(index) { + if (this.children && index < this.children.length) { + return this.children[index]; + } + return null; + } + addChildren(nodes) { + for (const node of nodes) { + this.addChild(node); + } + } + findFirstChildBeforeOffset(offset) { + if (this.children) { + let current = null; + for (let i = this.children.length - 1; i >= 0; i--) { + // iterate until we find a child that has a start offset smaller than the input offset + current = this.children[i]; + if (current.offset <= offset) { + return current; + } + } + } + return null; + } + findChildAtOffset(offset, goDeep) { + const current = this.findFirstChildBeforeOffset(offset); + if (current && current.end >= offset) { + if (goDeep) { + return current.findChildAtOffset(offset, true) || current; + } + return current; + } + return null; + } + encloses(candidate) { + return this.offset <= candidate.offset && this.offset + this.length >= candidate.offset + candidate.length; + } + getParent() { + let result = this.parent; + while (result instanceof Nodelist) { + result = result.parent; + } + return result; + } + findParent(type) { + let result = this; + while (result && result.type !== type) { + result = result.parent; + } + return result; + } + findAParent(...types) { + let result = this; + while (result && !types.some(t => result.type === t)) { + result = result.parent; + } + return result; + } + setData(key, value) { + if (!this.options) { + this.options = {}; + } + this.options[key] = value; + } + getData(key) { + if (!this.options || !this.options.hasOwnProperty(key)) { + return null; + } + return this.options[key]; + } +}; +class Nodelist extends Node$2 { + constructor(parent, index = -1) { + super(-1, -1); + this.attachTo(parent, index); + this.offset = -1; + this.length = -1; + } +} +class UnicodeRange extends Node$2 { + constructor(offset, length) { + super(offset, length); + } + get type() { + return NodeType.UnicodeRange; + } + setRangeStart(rangeStart) { + return this.setNode('rangeStart', rangeStart); + } + getRangeStart() { + return this.rangeStart; + } + setRangeEnd(rangeEnd) { + return this.setNode('rangeEnd', rangeEnd); + } + getRangeEnd() { + return this.rangeEnd; + } +} +class Identifier extends Node$2 { + constructor(offset, length) { + super(offset, length); + this.isCustomProperty = false; + } + get type() { + return NodeType.Identifier; + } + containsInterpolation() { + return this.hasChildren(); + } +} +class Stylesheet extends Node$2 { + constructor(offset, length) { + super(offset, length); + } + get type() { + return NodeType.Stylesheet; + } +} +class Declarations extends Node$2 { + constructor(offset, length) { + super(offset, length); + } + get type() { + return NodeType.Declarations; + } +} +class BodyDeclaration extends Node$2 { + constructor(offset, length) { + super(offset, length); + } + getDeclarations() { + return this.declarations; + } + setDeclarations(decls) { + return this.setNode('declarations', decls); + } +} +class RuleSet extends BodyDeclaration { + constructor(offset, length) { + super(offset, length); + } + get type() { + return NodeType.Ruleset; + } + getSelectors() { + if (!this.selectors) { + this.selectors = new Nodelist(this); + } + return this.selectors; + } + isNested() { + return !!this.parent && this.parent.findParent(NodeType.Declarations) !== null; + } +} +class Selector extends Node$2 { + constructor(offset, length) { + super(offset, length); + } + get type() { + return NodeType.Selector; + } +} +class SimpleSelector extends Node$2 { + constructor(offset, length) { + super(offset, length); + } + get type() { + return NodeType.SimpleSelector; + } +} +class AbstractDeclaration extends Node$2 { + constructor(offset, length) { + super(offset, length); + } +} +class CustomPropertySet extends BodyDeclaration { + constructor(offset, length) { + super(offset, length); + } + get type() { + return NodeType.CustomPropertySet; + } +} +class Declaration extends AbstractDeclaration { + constructor(offset, length) { + super(offset, length); + this.property = null; + } + get type() { + return NodeType.Declaration; + } + setProperty(node) { + return this.setNode('property', node); + } + getProperty() { + return this.property; + } + getFullPropertyName() { + const propertyName = this.property ? this.property.getName() : 'unknown'; + if (this.parent instanceof Declarations && this.parent.getParent() instanceof NestedProperties) { + const parentDecl = this.parent.getParent().getParent(); + if (parentDecl instanceof Declaration) { + return parentDecl.getFullPropertyName() + propertyName; + } + } + return propertyName; + } + getNonPrefixedPropertyName() { + const propertyName = this.getFullPropertyName(); + if (propertyName && propertyName.charAt(0) === '-') { + const vendorPrefixEnd = propertyName.indexOf('-', 1); + if (vendorPrefixEnd !== -1) { + return propertyName.substring(vendorPrefixEnd + 1); + } + } + return propertyName; + } + setValue(value) { + return this.setNode('value', value); + } + getValue() { + return this.value; + } + setNestedProperties(value) { + return this.setNode('nestedProperties', value); + } + getNestedProperties() { + return this.nestedProperties; + } +} +class CustomPropertyDeclaration extends Declaration { + constructor(offset, length) { + super(offset, length); + } + get type() { + return NodeType.CustomPropertyDeclaration; + } + setPropertySet(value) { + return this.setNode('propertySet', value); + } + getPropertySet() { + return this.propertySet; + } +} +class Property extends Node$2 { + constructor(offset, length) { + super(offset, length); + } + get type() { + return NodeType.Property; + } + setIdentifier(value) { + return this.setNode('identifier', value); + } + getIdentifier() { + return this.identifier; + } + getName() { + return trim$1(this.getText(), /[_\+]+$/); /* +_: less merge */ + } + isCustomProperty() { + return !!this.identifier && this.identifier.isCustomProperty; + } +} +class Invocation extends Node$2 { + constructor(offset, length) { + super(offset, length); + } + get type() { + return NodeType.Invocation; + } + getArguments() { + if (!this.arguments) { + this.arguments = new Nodelist(this); + } + return this.arguments; + } +} +let Function$1 = class Function extends Invocation { + constructor(offset, length) { + super(offset, length); + } + get type() { + return NodeType.Function; + } + setIdentifier(node) { + return this.setNode('identifier', node, 0); + } + getIdentifier() { + return this.identifier; + } + getName() { + return this.identifier ? this.identifier.getText() : ''; + } +}; +class FunctionParameter extends Node$2 { + constructor(offset, length) { + super(offset, length); + } + get type() { + return NodeType.FunctionParameter; + } + setIdentifier(node) { + return this.setNode('identifier', node, 0); + } + getIdentifier() { + return this.identifier; + } + getName() { + return this.identifier ? this.identifier.getText() : ''; + } + setDefaultValue(node) { + return this.setNode('defaultValue', node, 0); + } + getDefaultValue() { + return this.defaultValue; + } +} +class FunctionArgument extends Node$2 { + constructor(offset, length) { + super(offset, length); + } + get type() { + return NodeType.FunctionArgument; + } + setIdentifier(node) { + return this.setNode('identifier', node, 0); + } + getIdentifier() { + return this.identifier; + } + getName() { + return this.identifier ? this.identifier.getText() : ''; + } + setValue(node) { + return this.setNode('value', node, 0); + } + getValue() { + return this.value; + } +} +class IfStatement extends BodyDeclaration { + constructor(offset, length) { + super(offset, length); + } + get type() { + return NodeType.If; + } + setExpression(node) { + return this.setNode('expression', node, 0); + } + setElseClause(elseClause) { + return this.setNode('elseClause', elseClause); + } +} +class ForStatement extends BodyDeclaration { + constructor(offset, length) { + super(offset, length); + } + get type() { + return NodeType.For; + } + setVariable(node) { + return this.setNode('variable', node, 0); + } +} +class EachStatement extends BodyDeclaration { + constructor(offset, length) { + super(offset, length); + } + get type() { + return NodeType.Each; + } + getVariables() { + if (!this.variables) { + this.variables = new Nodelist(this); + } + return this.variables; + } +} +class WhileStatement extends BodyDeclaration { + constructor(offset, length) { + super(offset, length); + } + get type() { + return NodeType.While; + } +} +class ElseStatement extends BodyDeclaration { + constructor(offset, length) { + super(offset, length); + } + get type() { + return NodeType.Else; + } +} +class FunctionDeclaration extends BodyDeclaration { + constructor(offset, length) { + super(offset, length); + } + get type() { + return NodeType.FunctionDeclaration; + } + setIdentifier(node) { + return this.setNode('identifier', node, 0); + } + getIdentifier() { + return this.identifier; + } + getName() { + return this.identifier ? this.identifier.getText() : ''; + } + getParameters() { + if (!this.parameters) { + this.parameters = new Nodelist(this); + } + return this.parameters; + } +} +class ViewPort extends BodyDeclaration { + constructor(offset, length) { + super(offset, length); + } + get type() { + return NodeType.ViewPort; + } +} +class FontFace extends BodyDeclaration { + constructor(offset, length) { + super(offset, length); + } + get type() { + return NodeType.FontFace; + } +} +class NestedProperties extends BodyDeclaration { + constructor(offset, length) { + super(offset, length); + } + get type() { + return NodeType.NestedProperties; + } +} +class Keyframe extends BodyDeclaration { + constructor(offset, length) { + super(offset, length); + } + get type() { + return NodeType.Keyframe; + } + setKeyword(keyword) { + return this.setNode('keyword', keyword, 0); + } + getKeyword() { + return this.keyword; + } + setIdentifier(node) { + return this.setNode('identifier', node, 0); + } + getIdentifier() { + return this.identifier; + } + getName() { + return this.identifier ? this.identifier.getText() : ''; + } +} +class KeyframeSelector extends BodyDeclaration { + constructor(offset, length) { + super(offset, length); + } + get type() { + return NodeType.KeyframeSelector; + } +} +class Import extends Node$2 { + constructor(offset, length) { + super(offset, length); + } + get type() { + return NodeType.Import; + } + setMedialist(node) { + if (node) { + node.attachTo(this); + return true; + } + return false; + } +} +class Use extends Node$2 { + get type() { + return NodeType.Use; + } + getParameters() { + if (!this.parameters) { + this.parameters = new Nodelist(this); + } + return this.parameters; + } + setIdentifier(node) { + return this.setNode('identifier', node, 0); + } + getIdentifier() { + return this.identifier; + } +} +class ModuleConfiguration extends Node$2 { + get type() { + return NodeType.ModuleConfiguration; + } + setIdentifier(node) { + return this.setNode('identifier', node, 0); + } + getIdentifier() { + return this.identifier; + } + getName() { + return this.identifier ? this.identifier.getText() : ''; + } + setValue(node) { + return this.setNode('value', node, 0); + } + getValue() { + return this.value; + } +} +class Forward extends Node$2 { + get type() { + return NodeType.Forward; + } + setIdentifier(node) { + return this.setNode('identifier', node, 0); + } + getIdentifier() { + return this.identifier; + } + getMembers() { + if (!this.members) { + this.members = new Nodelist(this); + } + return this.members; + } + getParameters() { + if (!this.parameters) { + this.parameters = new Nodelist(this); + } + return this.parameters; + } +} +class ForwardVisibility extends Node$2 { + get type() { + return NodeType.ForwardVisibility; + } + setIdentifier(node) { + return this.setNode('identifier', node, 0); + } + getIdentifier() { + return this.identifier; + } +} +class Namespace extends Node$2 { + constructor(offset, length) { + super(offset, length); + } + get type() { + return NodeType.Namespace; + } +} +class Media extends BodyDeclaration { + constructor(offset, length) { + super(offset, length); + } + get type() { + return NodeType.Media; + } +} +class Supports extends BodyDeclaration { + constructor(offset, length) { + super(offset, length); + } + get type() { + return NodeType.Supports; + } +} +class Layer extends BodyDeclaration { + constructor(offset, length) { + super(offset, length); + } + get type() { + return NodeType.Layer; + } + setNames(names) { + return this.setNode('names', names); + } + getNames() { + return this.names; + } +} +class PropertyAtRule extends BodyDeclaration { + constructor(offset, length) { + super(offset, length); + } + get type() { + return NodeType.PropertyAtRule; + } + setName(node) { + if (node) { + node.attachTo(this); + this.name = node; + return true; + } + return false; + } + getName() { + return this.name; + } +} +class Document extends BodyDeclaration { + constructor(offset, length) { + super(offset, length); + } + get type() { + return NodeType.Document; + } +} +let Container$1 = class Container extends BodyDeclaration { + constructor(offset, length) { + super(offset, length); + } + get type() { + return NodeType.Container; + } +}; +class Medialist extends Node$2 { + constructor(offset, length) { + super(offset, length); + } +} +class MediaQuery extends Node$2 { + constructor(offset, length) { + super(offset, length); + } + get type() { + return NodeType.MediaQuery; + } +} +class MediaCondition extends Node$2 { + constructor(offset, length) { + super(offset, length); + } + get type() { + return NodeType.MediaCondition; + } +} +class MediaFeature extends Node$2 { + constructor(offset, length) { + super(offset, length); + } + get type() { + return NodeType.MediaFeature; + } +} +class SupportsCondition extends Node$2 { + constructor(offset, length) { + super(offset, length); + } + get type() { + return NodeType.SupportsCondition; + } +} +class Page extends BodyDeclaration { + constructor(offset, length) { + super(offset, length); + } + get type() { + return NodeType.Page; + } +} +class PageBoxMarginBox extends BodyDeclaration { + constructor(offset, length) { + super(offset, length); + } + get type() { + return NodeType.PageBoxMarginBox; + } +} +class Expression extends Node$2 { + constructor(offset, length) { + super(offset, length); + } + get type() { + return NodeType.Expression; + } +} +class BinaryExpression extends Node$2 { + constructor(offset, length) { + super(offset, length); + } + get type() { + return NodeType.BinaryExpression; + } + setLeft(left) { + return this.setNode('left', left); + } + getLeft() { + return this.left; + } + setRight(right) { + return this.setNode('right', right); + } + getRight() { + return this.right; + } + setOperator(value) { + return this.setNode('operator', value); + } + getOperator() { + return this.operator; + } +} +class Term extends Node$2 { + constructor(offset, length) { + super(offset, length); + } + get type() { + return NodeType.Term; + } + setOperator(value) { + return this.setNode('operator', value); + } + getOperator() { + return this.operator; + } + setExpression(value) { + return this.setNode('expression', value); + } + getExpression() { + return this.expression; + } +} +class AttributeSelector extends Node$2 { + constructor(offset, length) { + super(offset, length); + } + get type() { + return NodeType.AttributeSelector; + } + setNamespacePrefix(value) { + return this.setNode('namespacePrefix', value); + } + getNamespacePrefix() { + return this.namespacePrefix; + } + setIdentifier(value) { + return this.setNode('identifier', value); + } + getIdentifier() { + return this.identifier; + } + setOperator(operator) { + return this.setNode('operator', operator); + } + getOperator() { + return this.operator; + } + setValue(value) { + return this.setNode('value', value); + } + getValue() { + return this.value; + } +} +class HexColorValue extends Node$2 { + constructor(offset, length) { + super(offset, length); + } + get type() { + return NodeType.HexColorValue; + } +} +class RatioValue extends Node$2 { + constructor(offset, length) { + super(offset, length); + } + get type() { + return NodeType.RatioValue; + } +} +const _dot = '.'.charCodeAt(0), _0$1 = '0'.charCodeAt(0), _9$1 = '9'.charCodeAt(0); +class NumericValue extends Node$2 { + constructor(offset, length) { + super(offset, length); + } + get type() { + return NodeType.NumericValue; + } + getValue() { + const raw = this.getText(); + let unitIdx = 0; + let code; + for (let i = 0, len = raw.length; i < len; i++) { + code = raw.charCodeAt(i); + if (!(_0$1 <= code && code <= _9$1 || code === _dot)) { + break; + } + unitIdx += 1; + } + return { + value: raw.substring(0, unitIdx), + unit: unitIdx < raw.length ? raw.substring(unitIdx) : undefined + }; + } +} +class VariableDeclaration extends AbstractDeclaration { + constructor(offset, length) { + super(offset, length); + this.needsSemicolon = true; + } + get type() { + return NodeType.VariableDeclaration; + } + setVariable(node) { + if (node) { + node.attachTo(this); + this.variable = node; + return true; + } + return false; + } + getVariable() { + return this.variable; + } + getName() { + return this.variable ? this.variable.getName() : ''; + } + setValue(node) { + if (node) { + node.attachTo(this); + this.value = node; + return true; + } + return false; + } + getValue() { + return this.value; + } +} +class Interpolation extends Node$2 { + // private _interpolations: void; // workaround for https://github.com/Microsoft/TypeScript/issues/18276 + constructor(offset, length) { + super(offset, length); + } + get type() { + return NodeType.Interpolation; + } +} +class Variable extends Node$2 { + constructor(offset, length) { + super(offset, length); + } + get type() { + return NodeType.VariableName; + } + getName() { + return this.getText(); + } +} +class ExtendsReference extends Node$2 { + constructor(offset, length) { + super(offset, length); + } + get type() { + return NodeType.ExtendsReference; + } + getSelectors() { + if (!this.selectors) { + this.selectors = new Nodelist(this); + } + return this.selectors; + } +} +class MixinContentReference extends Node$2 { + constructor(offset, length) { + super(offset, length); + } + get type() { + return NodeType.MixinContentReference; + } + getArguments() { + if (!this.arguments) { + this.arguments = new Nodelist(this); + } + return this.arguments; + } +} +class MixinContentDeclaration extends BodyDeclaration { + constructor(offset, length) { + super(offset, length); + } + get type() { + return NodeType.MixinContentDeclaration; + } + getParameters() { + if (!this.parameters) { + this.parameters = new Nodelist(this); + } + return this.parameters; + } +} +class MixinReference extends Node$2 { + constructor(offset, length) { + super(offset, length); + } + get type() { + return NodeType.MixinReference; + } + getNamespaces() { + if (!this.namespaces) { + this.namespaces = new Nodelist(this); + } + return this.namespaces; + } + setIdentifier(node) { + return this.setNode('identifier', node, 0); + } + getIdentifier() { + return this.identifier; + } + getName() { + return this.identifier ? this.identifier.getText() : ''; + } + getArguments() { + if (!this.arguments) { + this.arguments = new Nodelist(this); + } + return this.arguments; + } + setContent(node) { + return this.setNode('content', node); + } + getContent() { + return this.content; + } +} +class MixinDeclaration extends BodyDeclaration { + constructor(offset, length) { + super(offset, length); + } + get type() { + return NodeType.MixinDeclaration; + } + setIdentifier(node) { + return this.setNode('identifier', node, 0); + } + getIdentifier() { + return this.identifier; + } + getName() { + return this.identifier ? this.identifier.getText() : ''; + } + getParameters() { + if (!this.parameters) { + this.parameters = new Nodelist(this); + } + return this.parameters; + } + setGuard(node) { + if (node) { + node.attachTo(this); + this.guard = node; + } + return false; + } +} +class UnknownAtRule extends BodyDeclaration { + constructor(offset, length) { + super(offset, length); + } + get type() { + return NodeType.UnknownAtRule; + } + setAtRuleName(atRuleName) { + this.atRuleName = atRuleName; + } + getAtRuleName() { + return this.atRuleName; + } +} +class ListEntry extends Node$2 { + get type() { + return NodeType.ListEntry; + } + setKey(node) { + return this.setNode('key', node, 0); + } + setValue(node) { + return this.setNode('value', node, 1); + } +} +class LessGuard extends Node$2 { + getConditions() { + if (!this.conditions) { + this.conditions = new Nodelist(this); + } + return this.conditions; + } +} +class GuardCondition extends Node$2 { + setVariable(node) { + return this.setNode('variable', node); + } +} +class Module extends Node$2 { + get type() { + return NodeType.Module; + } + setIdentifier(node) { + return this.setNode('identifier', node, 0); + } + getIdentifier() { + return this.identifier; + } +} +var Level; +(function (Level) { + Level[Level["Ignore"] = 1] = "Ignore"; + Level[Level["Warning"] = 2] = "Warning"; + Level[Level["Error"] = 4] = "Error"; +})(Level || (Level = {})); +class Marker { + constructor(node, rule, level, message, offset = node.offset, length = node.length) { + this.node = node; + this.rule = rule; + this.level = level; + this.message = message || rule.message; + this.offset = offset; + this.length = length; + } + getRule() { + return this.rule; + } + getLevel() { + return this.level; + } + getOffset() { + return this.offset; + } + getLength() { + return this.length; + } + getNode() { + return this.node; + } + getMessage() { + return this.message; + } +} +/* +export class DefaultVisitor implements IVisitor { + + public visitNode(node:Node):boolean { + switch (node.type) { + case NodeType.Stylesheet: + return this.visitStylesheet(<Stylesheet> node); + case NodeType.FontFace: + return this.visitFontFace(<FontFace> node); + case NodeType.Ruleset: + return this.visitRuleSet(<RuleSet> node); + case NodeType.Selector: + return this.visitSelector(<Selector> node); + case NodeType.SimpleSelector: + return this.visitSimpleSelector(<SimpleSelector> node); + case NodeType.Declaration: + return this.visitDeclaration(<Declaration> node); + case NodeType.Function: + return this.visitFunction(<Function> node); + case NodeType.FunctionDeclaration: + return this.visitFunctionDeclaration(<FunctionDeclaration> node); + case NodeType.FunctionParameter: + return this.visitFunctionParameter(<FunctionParameter> node); + case NodeType.FunctionArgument: + return this.visitFunctionArgument(<FunctionArgument> node); + case NodeType.Term: + return this.visitTerm(<Term> node); + case NodeType.Declaration: + return this.visitExpression(<Expression> node); + case NodeType.NumericValue: + return this.visitNumericValue(<NumericValue> node); + case NodeType.Page: + return this.visitPage(<Page> node); + case NodeType.PageBoxMarginBox: + return this.visitPageBoxMarginBox(<PageBoxMarginBox> node); + case NodeType.Property: + return this.visitProperty(<Property> node); + case NodeType.NumericValue: + return this.visitNodelist(<Nodelist> node); + case NodeType.Import: + return this.visitImport(<Import> node); + case NodeType.Namespace: + return this.visitNamespace(<Namespace> node); + case NodeType.Keyframe: + return this.visitKeyframe(<Keyframe> node); + case NodeType.KeyframeSelector: + return this.visitKeyframeSelector(<KeyframeSelector> node); + case NodeType.MixinDeclaration: + return this.visitMixinDeclaration(<MixinDeclaration> node); + case NodeType.MixinReference: + return this.visitMixinReference(<MixinReference> node); + case NodeType.Variable: + return this.visitVariable(<Variable> node); + case NodeType.VariableDeclaration: + return this.visitVariableDeclaration(<VariableDeclaration> node); + } + return this.visitUnknownNode(node); + } + + public visitFontFace(node:FontFace):boolean { + return true; + } + + public visitKeyframe(node:Keyframe):boolean { + return true; + } + + public visitKeyframeSelector(node:KeyframeSelector):boolean { + return true; + } + + public visitStylesheet(node:Stylesheet):boolean { + return true; + } + + public visitProperty(Node:Property):boolean { + return true; + } + + public visitRuleSet(node:RuleSet):boolean { + return true; + } + + public visitSelector(node:Selector):boolean { + return true; + } + + public visitSimpleSelector(node:SimpleSelector):boolean { + return true; + } + + public visitDeclaration(node:Declaration):boolean { + return true; + } + + public visitFunction(node:Function):boolean { + return true; + } + + public visitFunctionDeclaration(node:FunctionDeclaration):boolean { + return true; + } + + public visitInvocation(node:Invocation):boolean { + return true; + } + + public visitTerm(node:Term):boolean { + return true; + } + + public visitImport(node:Import):boolean { + return true; + } + + public visitNamespace(node:Namespace):boolean { + return true; + } + + public visitExpression(node:Expression):boolean { + return true; + } + + public visitNumericValue(node:NumericValue):boolean { + return true; + } + + public visitPage(node:Page):boolean { + return true; + } + + public visitPageBoxMarginBox(node:PageBoxMarginBox):boolean { + return true; + } + + public visitNodelist(node:Nodelist):boolean { + return true; + } + + public visitVariableDeclaration(node:VariableDeclaration):boolean { + return true; + } + + public visitVariable(node:Variable):boolean { + return true; + } + + public visitMixinDeclaration(node:MixinDeclaration):boolean { + return true; + } + + public visitMixinReference(node:MixinReference):boolean { + return true; + } + + public visitUnknownNode(node:Node):boolean { + return true; + } +} +*/ +class ParseErrorCollector { + static entries(node) { + const visitor = new ParseErrorCollector(); + node.acceptVisitor(visitor); + return visitor.entries; + } + constructor() { + this.entries = []; + } + visitNode(node) { + if (node.isErroneous()) { + node.collectIssues(this.entries); + } + return true; + } +} + +// src/browser/reader.ts +function t$2(...args) { + const firstArg = args[0]; + let key; + let message; + let formatArgs; + if (typeof firstArg === "string") { + key = firstArg; + message = firstArg; + args.splice(0, 1); + formatArgs = !args || typeof args[0] !== "object" ? args : args[0]; + } else if (firstArg instanceof Array) { + const replacements = args.slice(1); + if (firstArg.length !== replacements.length + 1) { + throw new Error("expected a string as the first argument to l10n.t"); + } + let str = firstArg[0]; + for (let i = 1; i < firstArg.length; i++) { + str += `{${i - 1}}` + firstArg[i]; + } + return t$2(str, ...replacements); + } else { + message = firstArg.message; + key = message; + if (firstArg.comment && firstArg.comment.length > 0) { + key += `/${Array.isArray(firstArg.comment) ? firstArg.comment.join("") : firstArg.comment}`; + } + formatArgs = firstArg.args ?? {}; + } + { + return format$5(message, formatArgs); + } +} +var _format2Regexp = /{([^}]+)}/g; +function format$5(template, values) { + return template.replace(_format2Regexp, (match, group) => values[group] ?? match); +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +class CSSIssueType { + constructor(id, message) { + this.id = id; + this.message = message; + } +} +const ParseError = { + NumberExpected: new CSSIssueType('css-numberexpected', t$2("number expected")), + ConditionExpected: new CSSIssueType('css-conditionexpected', t$2("condition expected")), + RuleOrSelectorExpected: new CSSIssueType('css-ruleorselectorexpected', t$2("at-rule or selector expected")), + DotExpected: new CSSIssueType('css-dotexpected', t$2("dot expected")), + ColonExpected: new CSSIssueType('css-colonexpected', t$2("colon expected")), + SemiColonExpected: new CSSIssueType('css-semicolonexpected', t$2("semi-colon expected")), + TermExpected: new CSSIssueType('css-termexpected', t$2("term expected")), + ExpressionExpected: new CSSIssueType('css-expressionexpected', t$2("expression expected")), + OperatorExpected: new CSSIssueType('css-operatorexpected', t$2("operator expected")), + IdentifierExpected: new CSSIssueType('css-identifierexpected', t$2("identifier expected")), + PercentageExpected: new CSSIssueType('css-percentageexpected', t$2("percentage expected")), + URIOrStringExpected: new CSSIssueType('css-uriorstringexpected', t$2("uri or string expected")), + URIExpected: new CSSIssueType('css-uriexpected', t$2("URI expected")), + VariableNameExpected: new CSSIssueType('css-varnameexpected', t$2("variable name expected")), + VariableValueExpected: new CSSIssueType('css-varvalueexpected', t$2("variable value expected")), + PropertyValueExpected: new CSSIssueType('css-propertyvalueexpected', t$2("property value expected")), + LeftCurlyExpected: new CSSIssueType('css-lcurlyexpected', t$2("{ expected")), + RightCurlyExpected: new CSSIssueType('css-rcurlyexpected', t$2("} expected")), + LeftSquareBracketExpected: new CSSIssueType('css-rbracketexpected', t$2("[ expected")), + RightSquareBracketExpected: new CSSIssueType('css-lbracketexpected', t$2("] expected")), + LeftParenthesisExpected: new CSSIssueType('css-lparentexpected', t$2("( expected")), + RightParenthesisExpected: new CSSIssueType('css-rparentexpected', t$2(") expected")), + CommaExpected: new CSSIssueType('css-commaexpected', t$2("comma expected")), + PageDirectiveOrDeclarationExpected: new CSSIssueType('css-pagedirordeclexpected', t$2("page directive or declaraton expected")), + UnknownAtRule: new CSSIssueType('css-unknownatrule', t$2("at-rule unknown")), + UnknownKeyword: new CSSIssueType('css-unknownkeyword', t$2("unknown keyword")), + SelectorExpected: new CSSIssueType('css-selectorexpected', t$2("selector expected")), + StringLiteralExpected: new CSSIssueType('css-stringliteralexpected', t$2("string literal expected")), + WhitespaceExpected: new CSSIssueType('css-whitespaceexpected', t$2("whitespace expected")), + MediaQueryExpected: new CSSIssueType('css-mediaqueryexpected', t$2("media query expected")), + IdentifierOrWildcardExpected: new CSSIssueType('css-idorwildcardexpected', t$2("identifier or wildcard expected")), + WildcardExpected: new CSSIssueType('css-wildcardexpected', t$2("wildcard expected")), + IdentifierOrVariableExpected: new CSSIssueType('css-idorvarexpected', t$2("identifier or variable expected")), +}; + +/* -------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ +var DocumentUri; +(function (DocumentUri) { + function is(value) { + return typeof value === 'string'; + } + DocumentUri.is = is; +})(DocumentUri || (DocumentUri = {})); +var URI$1; +(function (URI) { + function is(value) { + return typeof value === 'string'; + } + URI.is = is; +})(URI$1 || (URI$1 = {})); +var integer; +(function (integer) { + integer.MIN_VALUE = -2147483648; + integer.MAX_VALUE = 2147483647; + function is(value) { + return typeof value === 'number' && integer.MIN_VALUE <= value && value <= integer.MAX_VALUE; + } + integer.is = is; +})(integer || (integer = {})); +var uinteger; +(function (uinteger) { + uinteger.MIN_VALUE = 0; + uinteger.MAX_VALUE = 2147483647; + function is(value) { + return typeof value === 'number' && uinteger.MIN_VALUE <= value && value <= uinteger.MAX_VALUE; + } + uinteger.is = is; +})(uinteger || (uinteger = {})); +/** + * The Position namespace provides helper functions to work with + * {@link Position} literals. + */ +var Position; +(function (Position) { + /** + * Creates a new Position literal from the given line and character. + * @param line The position's line. + * @param character The position's character. + */ + function create(line, character) { + if (line === Number.MAX_VALUE) { + line = uinteger.MAX_VALUE; + } + if (character === Number.MAX_VALUE) { + character = uinteger.MAX_VALUE; + } + return { line, character }; + } + Position.create = create; + /** + * Checks whether the given literal conforms to the {@link Position} interface. + */ + function is(value) { + let candidate = value; + return Is.objectLiteral(candidate) && Is.uinteger(candidate.line) && Is.uinteger(candidate.character); + } + Position.is = is; +})(Position || (Position = {})); +/** + * The Range namespace provides helper functions to work with + * {@link Range} literals. + */ +var Range$a; +(function (Range) { + function create(one, two, three, four) { + if (Is.uinteger(one) && Is.uinteger(two) && Is.uinteger(three) && Is.uinteger(four)) { + return { start: Position.create(one, two), end: Position.create(three, four) }; + } + else if (Position.is(one) && Position.is(two)) { + return { start: one, end: two }; + } + else { + throw new Error(`Range#create called with invalid arguments[${one}, ${two}, ${three}, ${four}]`); + } + } + Range.create = create; + /** + * Checks whether the given literal conforms to the {@link Range} interface. + */ + function is(value) { + let candidate = value; + return Is.objectLiteral(candidate) && Position.is(candidate.start) && Position.is(candidate.end); + } + Range.is = is; +})(Range$a || (Range$a = {})); +/** + * The Location namespace provides helper functions to work with + * {@link Location} literals. + */ +var Location; +(function (Location) { + /** + * Creates a Location literal. + * @param uri The location's uri. + * @param range The location's range. + */ + function create(uri, range) { + return { uri, range }; + } + Location.create = create; + /** + * Checks whether the given literal conforms to the {@link Location} interface. + */ + function is(value) { + let candidate = value; + return Is.objectLiteral(candidate) && Range$a.is(candidate.range) && (Is.string(candidate.uri) || Is.undefined(candidate.uri)); + } + Location.is = is; +})(Location || (Location = {})); +/** + * The LocationLink namespace provides helper functions to work with + * {@link LocationLink} literals. + */ +var LocationLink; +(function (LocationLink) { + /** + * Creates a LocationLink literal. + * @param targetUri The definition's uri. + * @param targetRange The full range of the definition. + * @param targetSelectionRange The span of the symbol definition at the target. + * @param originSelectionRange The span of the symbol being defined in the originating source file. + */ + function create(targetUri, targetRange, targetSelectionRange, originSelectionRange) { + return { targetUri, targetRange, targetSelectionRange, originSelectionRange }; + } + LocationLink.create = create; + /** + * Checks whether the given literal conforms to the {@link LocationLink} interface. + */ + function is(value) { + let candidate = value; + return Is.objectLiteral(candidate) && Range$a.is(candidate.targetRange) && Is.string(candidate.targetUri) + && Range$a.is(candidate.targetSelectionRange) + && (Range$a.is(candidate.originSelectionRange) || Is.undefined(candidate.originSelectionRange)); + } + LocationLink.is = is; +})(LocationLink || (LocationLink = {})); +/** + * The Color namespace provides helper functions to work with + * {@link Color} literals. + */ +var Color; +(function (Color) { + /** + * Creates a new Color literal. + */ + function create(red, green, blue, alpha) { + return { + red, + green, + blue, + alpha, + }; + } + Color.create = create; + /** + * Checks whether the given literal conforms to the {@link Color} interface. + */ + function is(value) { + const candidate = value; + return Is.objectLiteral(candidate) && Is.numberRange(candidate.red, 0, 1) + && Is.numberRange(candidate.green, 0, 1) + && Is.numberRange(candidate.blue, 0, 1) + && Is.numberRange(candidate.alpha, 0, 1); + } + Color.is = is; +})(Color || (Color = {})); +/** + * The ColorInformation namespace provides helper functions to work with + * {@link ColorInformation} literals. + */ +var ColorInformation; +(function (ColorInformation) { + /** + * Creates a new ColorInformation literal. + */ + function create(range, color) { + return { + range, + color, + }; + } + ColorInformation.create = create; + /** + * Checks whether the given literal conforms to the {@link ColorInformation} interface. + */ + function is(value) { + const candidate = value; + return Is.objectLiteral(candidate) && Range$a.is(candidate.range) && Color.is(candidate.color); + } + ColorInformation.is = is; +})(ColorInformation || (ColorInformation = {})); +/** + * The Color namespace provides helper functions to work with + * {@link ColorPresentation} literals. + */ +var ColorPresentation; +(function (ColorPresentation) { + /** + * Creates a new ColorInformation literal. + */ + function create(label, textEdit, additionalTextEdits) { + return { + label, + textEdit, + additionalTextEdits, + }; + } + ColorPresentation.create = create; + /** + * Checks whether the given literal conforms to the {@link ColorInformation} interface. + */ + function is(value) { + const candidate = value; + return Is.objectLiteral(candidate) && Is.string(candidate.label) + && (Is.undefined(candidate.textEdit) || TextEdit.is(candidate)) + && (Is.undefined(candidate.additionalTextEdits) || Is.typedArray(candidate.additionalTextEdits, TextEdit.is)); + } + ColorPresentation.is = is; +})(ColorPresentation || (ColorPresentation = {})); +/** + * A set of predefined range kinds. + */ +var FoldingRangeKind; +(function (FoldingRangeKind) { + /** + * Folding range for a comment + */ + FoldingRangeKind.Comment = 'comment'; + /** + * Folding range for an import or include + */ + FoldingRangeKind.Imports = 'imports'; + /** + * Folding range for a region (e.g. `#region`) + */ + FoldingRangeKind.Region = 'region'; +})(FoldingRangeKind || (FoldingRangeKind = {})); +/** + * The folding range namespace provides helper functions to work with + * {@link FoldingRange} literals. + */ +var FoldingRange; +(function (FoldingRange) { + /** + * Creates a new FoldingRange literal. + */ + function create(startLine, endLine, startCharacter, endCharacter, kind, collapsedText) { + const result = { + startLine, + endLine + }; + if (Is.defined(startCharacter)) { + result.startCharacter = startCharacter; + } + if (Is.defined(endCharacter)) { + result.endCharacter = endCharacter; + } + if (Is.defined(kind)) { + result.kind = kind; + } + if (Is.defined(collapsedText)) { + result.collapsedText = collapsedText; + } + return result; + } + FoldingRange.create = create; + /** + * Checks whether the given literal conforms to the {@link FoldingRange} interface. + */ + function is(value) { + const candidate = value; + return Is.objectLiteral(candidate) && Is.uinteger(candidate.startLine) && Is.uinteger(candidate.startLine) + && (Is.undefined(candidate.startCharacter) || Is.uinteger(candidate.startCharacter)) + && (Is.undefined(candidate.endCharacter) || Is.uinteger(candidate.endCharacter)) + && (Is.undefined(candidate.kind) || Is.string(candidate.kind)); + } + FoldingRange.is = is; +})(FoldingRange || (FoldingRange = {})); +/** + * The DiagnosticRelatedInformation namespace provides helper functions to work with + * {@link DiagnosticRelatedInformation} literals. + */ +var DiagnosticRelatedInformation; +(function (DiagnosticRelatedInformation) { + /** + * Creates a new DiagnosticRelatedInformation literal. + */ + function create(location, message) { + return { + location, + message + }; + } + DiagnosticRelatedInformation.create = create; + /** + * Checks whether the given literal conforms to the {@link DiagnosticRelatedInformation} interface. + */ + function is(value) { + let candidate = value; + return Is.defined(candidate) && Location.is(candidate.location) && Is.string(candidate.message); + } + DiagnosticRelatedInformation.is = is; +})(DiagnosticRelatedInformation || (DiagnosticRelatedInformation = {})); +/** + * The diagnostic's severity. + */ +var DiagnosticSeverity; +(function (DiagnosticSeverity) { + /** + * Reports an error. + */ + DiagnosticSeverity.Error = 1; + /** + * Reports a warning. + */ + DiagnosticSeverity.Warning = 2; + /** + * Reports an information. + */ + DiagnosticSeverity.Information = 3; + /** + * Reports a hint. + */ + DiagnosticSeverity.Hint = 4; +})(DiagnosticSeverity || (DiagnosticSeverity = {})); +/** + * The diagnostic tags. + * + * @since 3.15.0 + */ +var DiagnosticTag; +(function (DiagnosticTag) { + /** + * Unused or unnecessary code. + * + * Clients are allowed to render diagnostics with this tag faded out instead of having + * an error squiggle. + */ + DiagnosticTag.Unnecessary = 1; + /** + * Deprecated or obsolete code. + * + * Clients are allowed to rendered diagnostics with this tag strike through. + */ + DiagnosticTag.Deprecated = 2; +})(DiagnosticTag || (DiagnosticTag = {})); +/** + * The CodeDescription namespace provides functions to deal with descriptions for diagnostic codes. + * + * @since 3.16.0 + */ +var CodeDescription; +(function (CodeDescription) { + function is(value) { + const candidate = value; + return Is.objectLiteral(candidate) && Is.string(candidate.href); + } + CodeDescription.is = is; +})(CodeDescription || (CodeDescription = {})); +/** + * The Diagnostic namespace provides helper functions to work with + * {@link Diagnostic} literals. + */ +var Diagnostic; +(function (Diagnostic) { + /** + * Creates a new Diagnostic literal. + */ + function create(range, message, severity, code, source, relatedInformation) { + let result = { range, message }; + if (Is.defined(severity)) { + result.severity = severity; + } + if (Is.defined(code)) { + result.code = code; + } + if (Is.defined(source)) { + result.source = source; + } + if (Is.defined(relatedInformation)) { + result.relatedInformation = relatedInformation; + } + return result; + } + Diagnostic.create = create; + /** + * Checks whether the given literal conforms to the {@link Diagnostic} interface. + */ + function is(value) { + var _a; + let candidate = value; + return Is.defined(candidate) + && Range$a.is(candidate.range) + && Is.string(candidate.message) + && (Is.number(candidate.severity) || Is.undefined(candidate.severity)) + && (Is.integer(candidate.code) || Is.string(candidate.code) || Is.undefined(candidate.code)) + && (Is.undefined(candidate.codeDescription) || (Is.string((_a = candidate.codeDescription) === null || _a === void 0 ? void 0 : _a.href))) + && (Is.string(candidate.source) || Is.undefined(candidate.source)) + && (Is.undefined(candidate.relatedInformation) || Is.typedArray(candidate.relatedInformation, DiagnosticRelatedInformation.is)); + } + Diagnostic.is = is; +})(Diagnostic || (Diagnostic = {})); +/** + * The Command namespace provides helper functions to work with + * {@link Command} literals. + */ +var Command; +(function (Command) { + /** + * Creates a new Command literal. + */ + function create(title, command, ...args) { + let result = { title, command }; + if (Is.defined(args) && args.length > 0) { + result.arguments = args; + } + return result; + } + Command.create = create; + /** + * Checks whether the given literal conforms to the {@link Command} interface. + */ + function is(value) { + let candidate = value; + return Is.defined(candidate) && Is.string(candidate.title) && Is.string(candidate.command); + } + Command.is = is; +})(Command || (Command = {})); +/** + * The TextEdit namespace provides helper function to create replace, + * insert and delete edits more easily. + */ +var TextEdit; +(function (TextEdit) { + /** + * Creates a replace text edit. + * @param range The range of text to be replaced. + * @param newText The new text. + */ + function replace(range, newText) { + return { range, newText }; + } + TextEdit.replace = replace; + /** + * Creates an insert text edit. + * @param position The position to insert the text at. + * @param newText The text to be inserted. + */ + function insert(position, newText) { + return { range: { start: position, end: position }, newText }; + } + TextEdit.insert = insert; + /** + * Creates a delete text edit. + * @param range The range of text to be deleted. + */ + function del(range) { + return { range, newText: '' }; + } + TextEdit.del = del; + function is(value) { + const candidate = value; + return Is.objectLiteral(candidate) + && Is.string(candidate.newText) + && Range$a.is(candidate.range); + } + TextEdit.is = is; +})(TextEdit || (TextEdit = {})); +var ChangeAnnotation; +(function (ChangeAnnotation) { + function create(label, needsConfirmation, description) { + const result = { label }; + if (needsConfirmation !== undefined) { + result.needsConfirmation = needsConfirmation; + } + if (description !== undefined) { + result.description = description; + } + return result; + } + ChangeAnnotation.create = create; + function is(value) { + const candidate = value; + return Is.objectLiteral(candidate) && Is.string(candidate.label) && + (Is.boolean(candidate.needsConfirmation) || candidate.needsConfirmation === undefined) && + (Is.string(candidate.description) || candidate.description === undefined); + } + ChangeAnnotation.is = is; +})(ChangeAnnotation || (ChangeAnnotation = {})); +var ChangeAnnotationIdentifier; +(function (ChangeAnnotationIdentifier) { + function is(value) { + const candidate = value; + return Is.string(candidate); + } + ChangeAnnotationIdentifier.is = is; +})(ChangeAnnotationIdentifier || (ChangeAnnotationIdentifier = {})); +var AnnotatedTextEdit; +(function (AnnotatedTextEdit) { + /** + * Creates an annotated replace text edit. + * + * @param range The range of text to be replaced. + * @param newText The new text. + * @param annotation The annotation. + */ + function replace(range, newText, annotation) { + return { range, newText, annotationId: annotation }; + } + AnnotatedTextEdit.replace = replace; + /** + * Creates an annotated insert text edit. + * + * @param position The position to insert the text at. + * @param newText The text to be inserted. + * @param annotation The annotation. + */ + function insert(position, newText, annotation) { + return { range: { start: position, end: position }, newText, annotationId: annotation }; + } + AnnotatedTextEdit.insert = insert; + /** + * Creates an annotated delete text edit. + * + * @param range The range of text to be deleted. + * @param annotation The annotation. + */ + function del(range, annotation) { + return { range, newText: '', annotationId: annotation }; + } + AnnotatedTextEdit.del = del; + function is(value) { + const candidate = value; + return TextEdit.is(candidate) && (ChangeAnnotation.is(candidate.annotationId) || ChangeAnnotationIdentifier.is(candidate.annotationId)); + } + AnnotatedTextEdit.is = is; +})(AnnotatedTextEdit || (AnnotatedTextEdit = {})); +/** + * The TextDocumentEdit namespace provides helper function to create + * an edit that manipulates a text document. + */ +var TextDocumentEdit; +(function (TextDocumentEdit) { + /** + * Creates a new `TextDocumentEdit` + */ + function create(textDocument, edits) { + return { textDocument, edits }; + } + TextDocumentEdit.create = create; + function is(value) { + let candidate = value; + return Is.defined(candidate) + && OptionalVersionedTextDocumentIdentifier.is(candidate.textDocument) + && Array.isArray(candidate.edits); + } + TextDocumentEdit.is = is; +})(TextDocumentEdit || (TextDocumentEdit = {})); +var CreateFile; +(function (CreateFile) { + function create(uri, options, annotation) { + let result = { + kind: 'create', + uri + }; + if (options !== undefined && (options.overwrite !== undefined || options.ignoreIfExists !== undefined)) { + result.options = options; + } + if (annotation !== undefined) { + result.annotationId = annotation; + } + return result; + } + CreateFile.create = create; + function is(value) { + let candidate = value; + return candidate && candidate.kind === 'create' && Is.string(candidate.uri) && (candidate.options === undefined || + ((candidate.options.overwrite === undefined || Is.boolean(candidate.options.overwrite)) && (candidate.options.ignoreIfExists === undefined || Is.boolean(candidate.options.ignoreIfExists)))) && (candidate.annotationId === undefined || ChangeAnnotationIdentifier.is(candidate.annotationId)); + } + CreateFile.is = is; +})(CreateFile || (CreateFile = {})); +var RenameFile; +(function (RenameFile) { + function create(oldUri, newUri, options, annotation) { + let result = { + kind: 'rename', + oldUri, + newUri + }; + if (options !== undefined && (options.overwrite !== undefined || options.ignoreIfExists !== undefined)) { + result.options = options; + } + if (annotation !== undefined) { + result.annotationId = annotation; + } + return result; + } + RenameFile.create = create; + function is(value) { + let candidate = value; + return candidate && candidate.kind === 'rename' && Is.string(candidate.oldUri) && Is.string(candidate.newUri) && (candidate.options === undefined || + ((candidate.options.overwrite === undefined || Is.boolean(candidate.options.overwrite)) && (candidate.options.ignoreIfExists === undefined || Is.boolean(candidate.options.ignoreIfExists)))) && (candidate.annotationId === undefined || ChangeAnnotationIdentifier.is(candidate.annotationId)); + } + RenameFile.is = is; +})(RenameFile || (RenameFile = {})); +var DeleteFile; +(function (DeleteFile) { + function create(uri, options, annotation) { + let result = { + kind: 'delete', + uri + }; + if (options !== undefined && (options.recursive !== undefined || options.ignoreIfNotExists !== undefined)) { + result.options = options; + } + if (annotation !== undefined) { + result.annotationId = annotation; + } + return result; + } + DeleteFile.create = create; + function is(value) { + let candidate = value; + return candidate && candidate.kind === 'delete' && Is.string(candidate.uri) && (candidate.options === undefined || + ((candidate.options.recursive === undefined || Is.boolean(candidate.options.recursive)) && (candidate.options.ignoreIfNotExists === undefined || Is.boolean(candidate.options.ignoreIfNotExists)))) && (candidate.annotationId === undefined || ChangeAnnotationIdentifier.is(candidate.annotationId)); + } + DeleteFile.is = is; +})(DeleteFile || (DeleteFile = {})); +var WorkspaceEdit; +(function (WorkspaceEdit) { + function is(value) { + let candidate = value; + return candidate && + (candidate.changes !== undefined || candidate.documentChanges !== undefined) && + (candidate.documentChanges === undefined || candidate.documentChanges.every((change) => { + if (Is.string(change.kind)) { + return CreateFile.is(change) || RenameFile.is(change) || DeleteFile.is(change); + } + else { + return TextDocumentEdit.is(change); + } + })); + } + WorkspaceEdit.is = is; +})(WorkspaceEdit || (WorkspaceEdit = {})); +/** + * The TextDocumentIdentifier namespace provides helper functions to work with + * {@link TextDocumentIdentifier} literals. + */ +var TextDocumentIdentifier; +(function (TextDocumentIdentifier) { + /** + * Creates a new TextDocumentIdentifier literal. + * @param uri The document's uri. + */ + function create(uri) { + return { uri }; + } + TextDocumentIdentifier.create = create; + /** + * Checks whether the given literal conforms to the {@link TextDocumentIdentifier} interface. + */ + function is(value) { + let candidate = value; + return Is.defined(candidate) && Is.string(candidate.uri); + } + TextDocumentIdentifier.is = is; +})(TextDocumentIdentifier || (TextDocumentIdentifier = {})); +/** + * The VersionedTextDocumentIdentifier namespace provides helper functions to work with + * {@link VersionedTextDocumentIdentifier} literals. + */ +var VersionedTextDocumentIdentifier; +(function (VersionedTextDocumentIdentifier) { + /** + * Creates a new VersionedTextDocumentIdentifier literal. + * @param uri The document's uri. + * @param version The document's version. + */ + function create(uri, version) { + return { uri, version }; + } + VersionedTextDocumentIdentifier.create = create; + /** + * Checks whether the given literal conforms to the {@link VersionedTextDocumentIdentifier} interface. + */ + function is(value) { + let candidate = value; + return Is.defined(candidate) && Is.string(candidate.uri) && Is.integer(candidate.version); + } + VersionedTextDocumentIdentifier.is = is; +})(VersionedTextDocumentIdentifier || (VersionedTextDocumentIdentifier = {})); +/** + * The OptionalVersionedTextDocumentIdentifier namespace provides helper functions to work with + * {@link OptionalVersionedTextDocumentIdentifier} literals. + */ +var OptionalVersionedTextDocumentIdentifier; +(function (OptionalVersionedTextDocumentIdentifier) { + /** + * Creates a new OptionalVersionedTextDocumentIdentifier literal. + * @param uri The document's uri. + * @param version The document's version. + */ + function create(uri, version) { + return { uri, version }; + } + OptionalVersionedTextDocumentIdentifier.create = create; + /** + * Checks whether the given literal conforms to the {@link OptionalVersionedTextDocumentIdentifier} interface. + */ + function is(value) { + let candidate = value; + return Is.defined(candidate) && Is.string(candidate.uri) && (candidate.version === null || Is.integer(candidate.version)); + } + OptionalVersionedTextDocumentIdentifier.is = is; +})(OptionalVersionedTextDocumentIdentifier || (OptionalVersionedTextDocumentIdentifier = {})); +/** + * The TextDocumentItem namespace provides helper functions to work with + * {@link TextDocumentItem} literals. + */ +var TextDocumentItem; +(function (TextDocumentItem) { + /** + * Creates a new TextDocumentItem literal. + * @param uri The document's uri. + * @param languageId The document's language identifier. + * @param version The document's version number. + * @param text The document's text. + */ + function create(uri, languageId, version, text) { + return { uri, languageId, version, text }; + } + TextDocumentItem.create = create; + /** + * Checks whether the given literal conforms to the {@link TextDocumentItem} interface. + */ + function is(value) { + let candidate = value; + return Is.defined(candidate) && Is.string(candidate.uri) && Is.string(candidate.languageId) && Is.integer(candidate.version) && Is.string(candidate.text); + } + TextDocumentItem.is = is; +})(TextDocumentItem || (TextDocumentItem = {})); +/** + * Describes the content type that a client supports in various + * result literals like `Hover`, `ParameterInfo` or `CompletionItem`. + * + * Please note that `MarkupKinds` must not start with a `$`. This kinds + * are reserved for internal usage. + */ +var MarkupKind; +(function (MarkupKind) { + /** + * Plain text is supported as a content format + */ + MarkupKind.PlainText = 'plaintext'; + /** + * Markdown is supported as a content format + */ + MarkupKind.Markdown = 'markdown'; + /** + * Checks whether the given value is a value of the {@link MarkupKind} type. + */ + function is(value) { + const candidate = value; + return candidate === MarkupKind.PlainText || candidate === MarkupKind.Markdown; + } + MarkupKind.is = is; +})(MarkupKind || (MarkupKind = {})); +var MarkupContent; +(function (MarkupContent) { + /** + * Checks whether the given value conforms to the {@link MarkupContent} interface. + */ + function is(value) { + const candidate = value; + return Is.objectLiteral(value) && MarkupKind.is(candidate.kind) && Is.string(candidate.value); + } + MarkupContent.is = is; +})(MarkupContent || (MarkupContent = {})); +/** + * The kind of a completion entry. + */ +var CompletionItemKind; +(function (CompletionItemKind) { + CompletionItemKind.Text = 1; + CompletionItemKind.Method = 2; + CompletionItemKind.Function = 3; + CompletionItemKind.Constructor = 4; + CompletionItemKind.Field = 5; + CompletionItemKind.Variable = 6; + CompletionItemKind.Class = 7; + CompletionItemKind.Interface = 8; + CompletionItemKind.Module = 9; + CompletionItemKind.Property = 10; + CompletionItemKind.Unit = 11; + CompletionItemKind.Value = 12; + CompletionItemKind.Enum = 13; + CompletionItemKind.Keyword = 14; + CompletionItemKind.Snippet = 15; + CompletionItemKind.Color = 16; + CompletionItemKind.File = 17; + CompletionItemKind.Reference = 18; + CompletionItemKind.Folder = 19; + CompletionItemKind.EnumMember = 20; + CompletionItemKind.Constant = 21; + CompletionItemKind.Struct = 22; + CompletionItemKind.Event = 23; + CompletionItemKind.Operator = 24; + CompletionItemKind.TypeParameter = 25; +})(CompletionItemKind || (CompletionItemKind = {})); +/** + * Defines whether the insert text in a completion item should be interpreted as + * plain text or a snippet. + */ +var InsertTextFormat; +(function (InsertTextFormat) { + /** + * The primary text to be inserted is treated as a plain string. + */ + InsertTextFormat.PlainText = 1; + /** + * The primary text to be inserted is treated as a snippet. + * + * A snippet can define tab stops and placeholders with `$1`, `$2` + * and `${3:foo}`. `$0` defines the final tab stop, it defaults to + * the end of the snippet. Placeholders with equal identifiers are linked, + * that is typing in one will update others too. + * + * See also: https://microsoft.github.io/language-server-protocol/specifications/specification-current/#snippet_syntax + */ + InsertTextFormat.Snippet = 2; +})(InsertTextFormat || (InsertTextFormat = {})); +/** + * Completion item tags are extra annotations that tweak the rendering of a completion + * item. + * + * @since 3.15.0 + */ +var CompletionItemTag; +(function (CompletionItemTag) { + /** + * Render a completion as obsolete, usually using a strike-out. + */ + CompletionItemTag.Deprecated = 1; +})(CompletionItemTag || (CompletionItemTag = {})); +/** + * The InsertReplaceEdit namespace provides functions to deal with insert / replace edits. + * + * @since 3.16.0 + */ +var InsertReplaceEdit; +(function (InsertReplaceEdit) { + /** + * Creates a new insert / replace edit + */ + function create(newText, insert, replace) { + return { newText, insert, replace }; + } + InsertReplaceEdit.create = create; + /** + * Checks whether the given literal conforms to the {@link InsertReplaceEdit} interface. + */ + function is(value) { + const candidate = value; + return candidate && Is.string(candidate.newText) && Range$a.is(candidate.insert) && Range$a.is(candidate.replace); + } + InsertReplaceEdit.is = is; +})(InsertReplaceEdit || (InsertReplaceEdit = {})); +/** + * How whitespace and indentation is handled during completion + * item insertion. + * + * @since 3.16.0 + */ +var InsertTextMode; +(function (InsertTextMode) { + /** + * The insertion or replace strings is taken as it is. If the + * value is multi line the lines below the cursor will be + * inserted using the indentation defined in the string value. + * The client will not apply any kind of adjustments to the + * string. + */ + InsertTextMode.asIs = 1; + /** + * The editor adjusts leading whitespace of new lines so that + * they match the indentation up to the cursor of the line for + * which the item is accepted. + * + * Consider a line like this: <2tabs><cursor><3tabs>foo. Accepting a + * multi line completion item is indented using 2 tabs and all + * following lines inserted will be indented using 2 tabs as well. + */ + InsertTextMode.adjustIndentation = 2; +})(InsertTextMode || (InsertTextMode = {})); +var CompletionItemLabelDetails; +(function (CompletionItemLabelDetails) { + function is(value) { + const candidate = value; + return candidate && (Is.string(candidate.detail) || candidate.detail === undefined) && + (Is.string(candidate.description) || candidate.description === undefined); + } + CompletionItemLabelDetails.is = is; +})(CompletionItemLabelDetails || (CompletionItemLabelDetails = {})); +/** + * The CompletionItem namespace provides functions to deal with + * completion items. + */ +var CompletionItem; +(function (CompletionItem) { + /** + * Create a completion item and seed it with a label. + * @param label The completion item's label + */ + function create(label) { + return { label }; + } + CompletionItem.create = create; +})(CompletionItem || (CompletionItem = {})); +/** + * The CompletionList namespace provides functions to deal with + * completion lists. + */ +var CompletionList; +(function (CompletionList) { + /** + * Creates a new completion list. + * + * @param items The completion items. + * @param isIncomplete The list is not complete. + */ + function create(items, isIncomplete) { + return { items: items ? items : [], isIncomplete: !!isIncomplete }; + } + CompletionList.create = create; +})(CompletionList || (CompletionList = {})); +var MarkedString; +(function (MarkedString) { + /** + * Creates a marked string from plain text. + * + * @param plainText The plain text. + */ + function fromPlainText(plainText) { + return plainText.replace(/[\\`*_{}[\]()#+\-.!]/g, '\\$&'); // escape markdown syntax tokens: http://daringfireball.net/projects/markdown/syntax#backslash + } + MarkedString.fromPlainText = fromPlainText; + /** + * Checks whether the given value conforms to the {@link MarkedString} type. + */ + function is(value) { + const candidate = value; + return Is.string(candidate) || (Is.objectLiteral(candidate) && Is.string(candidate.language) && Is.string(candidate.value)); + } + MarkedString.is = is; +})(MarkedString || (MarkedString = {})); +var Hover; +(function (Hover) { + /** + * Checks whether the given value conforms to the {@link Hover} interface. + */ + function is(value) { + let candidate = value; + return !!candidate && Is.objectLiteral(candidate) && (MarkupContent.is(candidate.contents) || + MarkedString.is(candidate.contents) || + Is.typedArray(candidate.contents, MarkedString.is)) && (value.range === undefined || Range$a.is(value.range)); + } + Hover.is = is; +})(Hover || (Hover = {})); +/** + * The ParameterInformation namespace provides helper functions to work with + * {@link ParameterInformation} literals. + */ +var ParameterInformation; +(function (ParameterInformation) { + /** + * Creates a new parameter information literal. + * + * @param label A label string. + * @param documentation A doc string. + */ + function create(label, documentation) { + return documentation ? { label, documentation } : { label }; + } + ParameterInformation.create = create; +})(ParameterInformation || (ParameterInformation = {})); +/** + * The SignatureInformation namespace provides helper functions to work with + * {@link SignatureInformation} literals. + */ +var SignatureInformation; +(function (SignatureInformation) { + function create(label, documentation, ...parameters) { + let result = { label }; + if (Is.defined(documentation)) { + result.documentation = documentation; + } + if (Is.defined(parameters)) { + result.parameters = parameters; + } + else { + result.parameters = []; + } + return result; + } + SignatureInformation.create = create; +})(SignatureInformation || (SignatureInformation = {})); +/** + * A document highlight kind. + */ +var DocumentHighlightKind; +(function (DocumentHighlightKind) { + /** + * A textual occurrence. + */ + DocumentHighlightKind.Text = 1; + /** + * Read-access of a symbol, like reading a variable. + */ + DocumentHighlightKind.Read = 2; + /** + * Write-access of a symbol, like writing to a variable. + */ + DocumentHighlightKind.Write = 3; +})(DocumentHighlightKind || (DocumentHighlightKind = {})); +/** + * DocumentHighlight namespace to provide helper functions to work with + * {@link DocumentHighlight} literals. + */ +var DocumentHighlight; +(function (DocumentHighlight) { + /** + * Create a DocumentHighlight object. + * @param range The range the highlight applies to. + * @param kind The highlight kind + */ + function create(range, kind) { + let result = { range }; + if (Is.number(kind)) { + result.kind = kind; + } + return result; + } + DocumentHighlight.create = create; +})(DocumentHighlight || (DocumentHighlight = {})); +/** + * A symbol kind. + */ +var SymbolKind$1; +(function (SymbolKind) { + SymbolKind.File = 1; + SymbolKind.Module = 2; + SymbolKind.Namespace = 3; + SymbolKind.Package = 4; + SymbolKind.Class = 5; + SymbolKind.Method = 6; + SymbolKind.Property = 7; + SymbolKind.Field = 8; + SymbolKind.Constructor = 9; + SymbolKind.Enum = 10; + SymbolKind.Interface = 11; + SymbolKind.Function = 12; + SymbolKind.Variable = 13; + SymbolKind.Constant = 14; + SymbolKind.String = 15; + SymbolKind.Number = 16; + SymbolKind.Boolean = 17; + SymbolKind.Array = 18; + SymbolKind.Object = 19; + SymbolKind.Key = 20; + SymbolKind.Null = 21; + SymbolKind.EnumMember = 22; + SymbolKind.Struct = 23; + SymbolKind.Event = 24; + SymbolKind.Operator = 25; + SymbolKind.TypeParameter = 26; +})(SymbolKind$1 || (SymbolKind$1 = {})); +/** + * Symbol tags are extra annotations that tweak the rendering of a symbol. + * + * @since 3.16 + */ +var SymbolTag; +(function (SymbolTag) { + /** + * Render a symbol as obsolete, usually using a strike-out. + */ + SymbolTag.Deprecated = 1; +})(SymbolTag || (SymbolTag = {})); +var SymbolInformation; +(function (SymbolInformation) { + /** + * Creates a new symbol information literal. + * + * @param name The name of the symbol. + * @param kind The kind of the symbol. + * @param range The range of the location of the symbol. + * @param uri The resource of the location of symbol. + * @param containerName The name of the symbol containing the symbol. + */ + function create(name, kind, range, uri, containerName) { + let result = { + name, + kind, + location: { uri, range } + }; + if (containerName) { + result.containerName = containerName; + } + return result; + } + SymbolInformation.create = create; +})(SymbolInformation || (SymbolInformation = {})); +var WorkspaceSymbol; +(function (WorkspaceSymbol) { + /** + * Create a new workspace symbol. + * + * @param name The name of the symbol. + * @param kind The kind of the symbol. + * @param uri The resource of the location of the symbol. + * @param range An options range of the location. + * @returns A WorkspaceSymbol. + */ + function create(name, kind, uri, range) { + return range !== undefined + ? { name, kind, location: { uri, range } } + : { name, kind, location: { uri } }; + } + WorkspaceSymbol.create = create; +})(WorkspaceSymbol || (WorkspaceSymbol = {})); +var DocumentSymbol; +(function (DocumentSymbol) { + /** + * Creates a new symbol information literal. + * + * @param name The name of the symbol. + * @param detail The detail of the symbol. + * @param kind The kind of the symbol. + * @param range The range of the symbol. + * @param selectionRange The selectionRange of the symbol. + * @param children Children of the symbol. + */ + function create(name, detail, kind, range, selectionRange, children) { + let result = { + name, + detail, + kind, + range, + selectionRange + }; + if (children !== undefined) { + result.children = children; + } + return result; + } + DocumentSymbol.create = create; + /** + * Checks whether the given literal conforms to the {@link DocumentSymbol} interface. + */ + function is(value) { + let candidate = value; + return candidate && + Is.string(candidate.name) && Is.number(candidate.kind) && + Range$a.is(candidate.range) && Range$a.is(candidate.selectionRange) && + (candidate.detail === undefined || Is.string(candidate.detail)) && + (candidate.deprecated === undefined || Is.boolean(candidate.deprecated)) && + (candidate.children === undefined || Array.isArray(candidate.children)) && + (candidate.tags === undefined || Array.isArray(candidate.tags)); + } + DocumentSymbol.is = is; +})(DocumentSymbol || (DocumentSymbol = {})); +/** + * A set of predefined code action kinds + */ +var CodeActionKind; +(function (CodeActionKind) { + /** + * Empty kind. + */ + CodeActionKind.Empty = ''; + /** + * Base kind for quickfix actions: 'quickfix' + */ + CodeActionKind.QuickFix = 'quickfix'; + /** + * Base kind for refactoring actions: 'refactor' + */ + CodeActionKind.Refactor = 'refactor'; + /** + * Base kind for refactoring extraction actions: 'refactor.extract' + * + * Example extract actions: + * + * - Extract method + * - Extract function + * - Extract variable + * - Extract interface from class + * - ... + */ + CodeActionKind.RefactorExtract = 'refactor.extract'; + /** + * Base kind for refactoring inline actions: 'refactor.inline' + * + * Example inline actions: + * + * - Inline function + * - Inline variable + * - Inline constant + * - ... + */ + CodeActionKind.RefactorInline = 'refactor.inline'; + /** + * Base kind for refactoring rewrite actions: 'refactor.rewrite' + * + * Example rewrite actions: + * + * - Convert JavaScript function to class + * - Add or remove parameter + * - Encapsulate field + * - Make method static + * - Move method to base class + * - ... + */ + CodeActionKind.RefactorRewrite = 'refactor.rewrite'; + /** + * Base kind for source actions: `source` + * + * Source code actions apply to the entire file. + */ + CodeActionKind.Source = 'source'; + /** + * Base kind for an organize imports source action: `source.organizeImports` + */ + CodeActionKind.SourceOrganizeImports = 'source.organizeImports'; + /** + * Base kind for auto-fix source actions: `source.fixAll`. + * + * Fix all actions automatically fix errors that have a clear fix that do not require user input. + * They should not suppress errors or perform unsafe fixes such as generating new types or classes. + * + * @since 3.15.0 + */ + CodeActionKind.SourceFixAll = 'source.fixAll'; +})(CodeActionKind || (CodeActionKind = {})); +/** + * The reason why code actions were requested. + * + * @since 3.17.0 + */ +var CodeActionTriggerKind; +(function (CodeActionTriggerKind) { + /** + * Code actions were explicitly requested by the user or by an extension. + */ + CodeActionTriggerKind.Invoked = 1; + /** + * Code actions were requested automatically. + * + * This typically happens when current selection in a file changes, but can + * also be triggered when file content changes. + */ + CodeActionTriggerKind.Automatic = 2; +})(CodeActionTriggerKind || (CodeActionTriggerKind = {})); +/** + * The CodeActionContext namespace provides helper functions to work with + * {@link CodeActionContext} literals. + */ +var CodeActionContext; +(function (CodeActionContext) { + /** + * Creates a new CodeActionContext literal. + */ + function create(diagnostics, only, triggerKind) { + let result = { diagnostics }; + if (only !== undefined && only !== null) { + result.only = only; + } + if (triggerKind !== undefined && triggerKind !== null) { + result.triggerKind = triggerKind; + } + return result; + } + CodeActionContext.create = create; + /** + * Checks whether the given literal conforms to the {@link CodeActionContext} interface. + */ + function is(value) { + let candidate = value; + return Is.defined(candidate) && Is.typedArray(candidate.diagnostics, Diagnostic.is) + && (candidate.only === undefined || Is.typedArray(candidate.only, Is.string)) + && (candidate.triggerKind === undefined || candidate.triggerKind === CodeActionTriggerKind.Invoked || candidate.triggerKind === CodeActionTriggerKind.Automatic); + } + CodeActionContext.is = is; +})(CodeActionContext || (CodeActionContext = {})); +var CodeAction; +(function (CodeAction) { + function create(title, kindOrCommandOrEdit, kind) { + let result = { title }; + let checkKind = true; + if (typeof kindOrCommandOrEdit === 'string') { + checkKind = false; + result.kind = kindOrCommandOrEdit; + } + else if (Command.is(kindOrCommandOrEdit)) { + result.command = kindOrCommandOrEdit; + } + else { + result.edit = kindOrCommandOrEdit; + } + if (checkKind && kind !== undefined) { + result.kind = kind; + } + return result; + } + CodeAction.create = create; + function is(value) { + let candidate = value; + return candidate && Is.string(candidate.title) && + (candidate.diagnostics === undefined || Is.typedArray(candidate.diagnostics, Diagnostic.is)) && + (candidate.kind === undefined || Is.string(candidate.kind)) && + (candidate.edit !== undefined || candidate.command !== undefined) && + (candidate.command === undefined || Command.is(candidate.command)) && + (candidate.isPreferred === undefined || Is.boolean(candidate.isPreferred)) && + (candidate.edit === undefined || WorkspaceEdit.is(candidate.edit)); + } + CodeAction.is = is; +})(CodeAction || (CodeAction = {})); +/** + * The CodeLens namespace provides helper functions to work with + * {@link CodeLens} literals. + */ +var CodeLens; +(function (CodeLens) { + /** + * Creates a new CodeLens literal. + */ + function create(range, data) { + let result = { range }; + if (Is.defined(data)) { + result.data = data; + } + return result; + } + CodeLens.create = create; + /** + * Checks whether the given literal conforms to the {@link CodeLens} interface. + */ + function is(value) { + let candidate = value; + return Is.defined(candidate) && Range$a.is(candidate.range) && (Is.undefined(candidate.command) || Command.is(candidate.command)); + } + CodeLens.is = is; +})(CodeLens || (CodeLens = {})); +/** + * The FormattingOptions namespace provides helper functions to work with + * {@link FormattingOptions} literals. + */ +var FormattingOptions; +(function (FormattingOptions) { + /** + * Creates a new FormattingOptions literal. + */ + function create(tabSize, insertSpaces) { + return { tabSize, insertSpaces }; + } + FormattingOptions.create = create; + /** + * Checks whether the given literal conforms to the {@link FormattingOptions} interface. + */ + function is(value) { + let candidate = value; + return Is.defined(candidate) && Is.uinteger(candidate.tabSize) && Is.boolean(candidate.insertSpaces); + } + FormattingOptions.is = is; +})(FormattingOptions || (FormattingOptions = {})); +/** + * The DocumentLink namespace provides helper functions to work with + * {@link DocumentLink} literals. + */ +var DocumentLink; +(function (DocumentLink) { + /** + * Creates a new DocumentLink literal. + */ + function create(range, target, data) { + return { range, target, data }; + } + DocumentLink.create = create; + /** + * Checks whether the given literal conforms to the {@link DocumentLink} interface. + */ + function is(value) { + let candidate = value; + return Is.defined(candidate) && Range$a.is(candidate.range) && (Is.undefined(candidate.target) || Is.string(candidate.target)); + } + DocumentLink.is = is; +})(DocumentLink || (DocumentLink = {})); +/** + * The SelectionRange namespace provides helper function to work with + * SelectionRange literals. + */ +var SelectionRange; +(function (SelectionRange) { + /** + * Creates a new SelectionRange + * @param range the range. + * @param parent an optional parent. + */ + function create(range, parent) { + return { range, parent }; + } + SelectionRange.create = create; + function is(value) { + let candidate = value; + return Is.objectLiteral(candidate) && Range$a.is(candidate.range) && (candidate.parent === undefined || SelectionRange.is(candidate.parent)); + } + SelectionRange.is = is; +})(SelectionRange || (SelectionRange = {})); +/** + * A set of predefined token types. This set is not fixed + * an clients can specify additional token types via the + * corresponding client capabilities. + * + * @since 3.16.0 + */ +var SemanticTokenTypes; +(function (SemanticTokenTypes) { + SemanticTokenTypes["namespace"] = "namespace"; + /** + * Represents a generic type. Acts as a fallback for types which can't be mapped to + * a specific type like class or enum. + */ + SemanticTokenTypes["type"] = "type"; + SemanticTokenTypes["class"] = "class"; + SemanticTokenTypes["enum"] = "enum"; + SemanticTokenTypes["interface"] = "interface"; + SemanticTokenTypes["struct"] = "struct"; + SemanticTokenTypes["typeParameter"] = "typeParameter"; + SemanticTokenTypes["parameter"] = "parameter"; + SemanticTokenTypes["variable"] = "variable"; + SemanticTokenTypes["property"] = "property"; + SemanticTokenTypes["enumMember"] = "enumMember"; + SemanticTokenTypes["event"] = "event"; + SemanticTokenTypes["function"] = "function"; + SemanticTokenTypes["method"] = "method"; + SemanticTokenTypes["macro"] = "macro"; + SemanticTokenTypes["keyword"] = "keyword"; + SemanticTokenTypes["modifier"] = "modifier"; + SemanticTokenTypes["comment"] = "comment"; + SemanticTokenTypes["string"] = "string"; + SemanticTokenTypes["number"] = "number"; + SemanticTokenTypes["regexp"] = "regexp"; + SemanticTokenTypes["operator"] = "operator"; + /** + * @since 3.17.0 + */ + SemanticTokenTypes["decorator"] = "decorator"; +})(SemanticTokenTypes || (SemanticTokenTypes = {})); +/** + * A set of predefined token modifiers. This set is not fixed + * an clients can specify additional token types via the + * corresponding client capabilities. + * + * @since 3.16.0 + */ +var SemanticTokenModifiers; +(function (SemanticTokenModifiers) { + SemanticTokenModifiers["declaration"] = "declaration"; + SemanticTokenModifiers["definition"] = "definition"; + SemanticTokenModifiers["readonly"] = "readonly"; + SemanticTokenModifiers["static"] = "static"; + SemanticTokenModifiers["deprecated"] = "deprecated"; + SemanticTokenModifiers["abstract"] = "abstract"; + SemanticTokenModifiers["async"] = "async"; + SemanticTokenModifiers["modification"] = "modification"; + SemanticTokenModifiers["documentation"] = "documentation"; + SemanticTokenModifiers["defaultLibrary"] = "defaultLibrary"; +})(SemanticTokenModifiers || (SemanticTokenModifiers = {})); +/** + * @since 3.16.0 + */ +var SemanticTokens; +(function (SemanticTokens) { + function is(value) { + const candidate = value; + return Is.objectLiteral(candidate) && (candidate.resultId === undefined || typeof candidate.resultId === 'string') && + Array.isArray(candidate.data) && (candidate.data.length === 0 || typeof candidate.data[0] === 'number'); + } + SemanticTokens.is = is; +})(SemanticTokens || (SemanticTokens = {})); +/** + * The InlineValueText namespace provides functions to deal with InlineValueTexts. + * + * @since 3.17.0 + */ +var InlineValueText; +(function (InlineValueText) { + /** + * Creates a new InlineValueText literal. + */ + function create(range, text) { + return { range, text }; + } + InlineValueText.create = create; + function is(value) { + const candidate = value; + return candidate !== undefined && candidate !== null && Range$a.is(candidate.range) && Is.string(candidate.text); + } + InlineValueText.is = is; +})(InlineValueText || (InlineValueText = {})); +/** + * The InlineValueVariableLookup namespace provides functions to deal with InlineValueVariableLookups. + * + * @since 3.17.0 + */ +var InlineValueVariableLookup; +(function (InlineValueVariableLookup) { + /** + * Creates a new InlineValueText literal. + */ + function create(range, variableName, caseSensitiveLookup) { + return { range, variableName, caseSensitiveLookup }; + } + InlineValueVariableLookup.create = create; + function is(value) { + const candidate = value; + return candidate !== undefined && candidate !== null && Range$a.is(candidate.range) && Is.boolean(candidate.caseSensitiveLookup) + && (Is.string(candidate.variableName) || candidate.variableName === undefined); + } + InlineValueVariableLookup.is = is; +})(InlineValueVariableLookup || (InlineValueVariableLookup = {})); +/** + * The InlineValueEvaluatableExpression namespace provides functions to deal with InlineValueEvaluatableExpression. + * + * @since 3.17.0 + */ +var InlineValueEvaluatableExpression; +(function (InlineValueEvaluatableExpression) { + /** + * Creates a new InlineValueEvaluatableExpression literal. + */ + function create(range, expression) { + return { range, expression }; + } + InlineValueEvaluatableExpression.create = create; + function is(value) { + const candidate = value; + return candidate !== undefined && candidate !== null && Range$a.is(candidate.range) + && (Is.string(candidate.expression) || candidate.expression === undefined); + } + InlineValueEvaluatableExpression.is = is; +})(InlineValueEvaluatableExpression || (InlineValueEvaluatableExpression = {})); +/** + * The InlineValueContext namespace provides helper functions to work with + * {@link InlineValueContext} literals. + * + * @since 3.17.0 + */ +var InlineValueContext; +(function (InlineValueContext) { + /** + * Creates a new InlineValueContext literal. + */ + function create(frameId, stoppedLocation) { + return { frameId, stoppedLocation }; + } + InlineValueContext.create = create; + /** + * Checks whether the given literal conforms to the {@link InlineValueContext} interface. + */ + function is(value) { + const candidate = value; + return Is.defined(candidate) && Range$a.is(value.stoppedLocation); + } + InlineValueContext.is = is; +})(InlineValueContext || (InlineValueContext = {})); +/** + * Inlay hint kinds. + * + * @since 3.17.0 + */ +var InlayHintKind; +(function (InlayHintKind) { + /** + * An inlay hint that for a type annotation. + */ + InlayHintKind.Type = 1; + /** + * An inlay hint that is for a parameter. + */ + InlayHintKind.Parameter = 2; + function is(value) { + return value === 1 || value === 2; + } + InlayHintKind.is = is; +})(InlayHintKind || (InlayHintKind = {})); +var InlayHintLabelPart; +(function (InlayHintLabelPart) { + function create(value) { + return { value }; + } + InlayHintLabelPart.create = create; + function is(value) { + const candidate = value; + return Is.objectLiteral(candidate) + && (candidate.tooltip === undefined || Is.string(candidate.tooltip) || MarkupContent.is(candidate.tooltip)) + && (candidate.location === undefined || Location.is(candidate.location)) + && (candidate.command === undefined || Command.is(candidate.command)); + } + InlayHintLabelPart.is = is; +})(InlayHintLabelPart || (InlayHintLabelPart = {})); +var InlayHint; +(function (InlayHint) { + function create(position, label, kind) { + const result = { position, label }; + if (kind !== undefined) { + result.kind = kind; + } + return result; + } + InlayHint.create = create; + function is(value) { + const candidate = value; + return Is.objectLiteral(candidate) && Position.is(candidate.position) + && (Is.string(candidate.label) || Is.typedArray(candidate.label, InlayHintLabelPart.is)) + && (candidate.kind === undefined || InlayHintKind.is(candidate.kind)) + && (candidate.textEdits === undefined) || Is.typedArray(candidate.textEdits, TextEdit.is) + && (candidate.tooltip === undefined || Is.string(candidate.tooltip) || MarkupContent.is(candidate.tooltip)) + && (candidate.paddingLeft === undefined || Is.boolean(candidate.paddingLeft)) + && (candidate.paddingRight === undefined || Is.boolean(candidate.paddingRight)); + } + InlayHint.is = is; +})(InlayHint || (InlayHint = {})); +var StringValue; +(function (StringValue) { + function createSnippet(value) { + return { kind: 'snippet', value }; + } + StringValue.createSnippet = createSnippet; +})(StringValue || (StringValue = {})); +var InlineCompletionItem; +(function (InlineCompletionItem) { + function create(insertText, filterText, range, command) { + return { insertText, filterText, range, command }; + } + InlineCompletionItem.create = create; +})(InlineCompletionItem || (InlineCompletionItem = {})); +var InlineCompletionList; +(function (InlineCompletionList) { + function create(items) { + return { items }; + } + InlineCompletionList.create = create; +})(InlineCompletionList || (InlineCompletionList = {})); +/** + * Describes how an {@link InlineCompletionItemProvider inline completion provider} was triggered. + * + * @since 3.18.0 + * @proposed + */ +var InlineCompletionTriggerKind; +(function (InlineCompletionTriggerKind) { + /** + * Completion was triggered explicitly by a user gesture. + */ + InlineCompletionTriggerKind.Invoked = 0; + /** + * Completion was triggered automatically while editing. + */ + InlineCompletionTriggerKind.Automatic = 1; +})(InlineCompletionTriggerKind || (InlineCompletionTriggerKind = {})); +var SelectedCompletionInfo; +(function (SelectedCompletionInfo) { + function create(range, text) { + return { range, text }; + } + SelectedCompletionInfo.create = create; +})(SelectedCompletionInfo || (SelectedCompletionInfo = {})); +var InlineCompletionContext; +(function (InlineCompletionContext) { + function create(triggerKind, selectedCompletionInfo) { + return { triggerKind, selectedCompletionInfo }; + } + InlineCompletionContext.create = create; +})(InlineCompletionContext || (InlineCompletionContext = {})); +var WorkspaceFolder; +(function (WorkspaceFolder) { + function is(value) { + const candidate = value; + return Is.objectLiteral(candidate) && URI$1.is(candidate.uri) && Is.string(candidate.name); + } + WorkspaceFolder.is = is; +})(WorkspaceFolder || (WorkspaceFolder = {})); +/** + * @deprecated Use the text document from the new vscode-languageserver-textdocument package. + */ +var TextDocument; +(function (TextDocument) { + /** + * Creates a new ITextDocument literal from the given uri and content. + * @param uri The document's uri. + * @param languageId The document's language Id. + * @param version The document's version. + * @param content The document's content. + */ + function create(uri, languageId, version, content) { + return new FullTextDocument(uri, languageId, version, content); + } + TextDocument.create = create; + /** + * Checks whether the given literal conforms to the {@link ITextDocument} interface. + */ + function is(value) { + let candidate = value; + return Is.defined(candidate) && Is.string(candidate.uri) && (Is.undefined(candidate.languageId) || Is.string(candidate.languageId)) && Is.uinteger(candidate.lineCount) + && Is.func(candidate.getText) && Is.func(candidate.positionAt) && Is.func(candidate.offsetAt) ? true : false; + } + TextDocument.is = is; + function applyEdits(document, edits) { + let text = document.getText(); + let sortedEdits = mergeSort(edits, (a, b) => { + let diff = a.range.start.line - b.range.start.line; + if (diff === 0) { + return a.range.start.character - b.range.start.character; + } + return diff; + }); + let lastModifiedOffset = text.length; + for (let i = sortedEdits.length - 1; i >= 0; i--) { + let e = sortedEdits[i]; + let startOffset = document.offsetAt(e.range.start); + let endOffset = document.offsetAt(e.range.end); + if (endOffset <= lastModifiedOffset) { + text = text.substring(0, startOffset) + e.newText + text.substring(endOffset, text.length); + } + else { + throw new Error('Overlapping edit'); + } + lastModifiedOffset = startOffset; + } + return text; + } + TextDocument.applyEdits = applyEdits; + function mergeSort(data, compare) { + if (data.length <= 1) { + // sorted + return data; + } + const p = (data.length / 2) | 0; + const left = data.slice(0, p); + const right = data.slice(p); + mergeSort(left, compare); + mergeSort(right, compare); + let leftIdx = 0; + let rightIdx = 0; + let i = 0; + while (leftIdx < left.length && rightIdx < right.length) { + let ret = compare(left[leftIdx], right[rightIdx]); + if (ret <= 0) { + // smaller_equal -> take left to preserve order + data[i++] = left[leftIdx++]; + } + else { + // greater -> take right + data[i++] = right[rightIdx++]; + } + } + while (leftIdx < left.length) { + data[i++] = left[leftIdx++]; + } + while (rightIdx < right.length) { + data[i++] = right[rightIdx++]; + } + return data; + } +})(TextDocument || (TextDocument = {})); +/** + * @deprecated Use the text document from the new vscode-languageserver-textdocument package. + */ +class FullTextDocument { + constructor(uri, languageId, version, content) { + this._uri = uri; + this._languageId = languageId; + this._version = version; + this._content = content; + this._lineOffsets = undefined; + } + get uri() { + return this._uri; + } + get languageId() { + return this._languageId; + } + get version() { + return this._version; + } + getText(range) { + if (range) { + let start = this.offsetAt(range.start); + let end = this.offsetAt(range.end); + return this._content.substring(start, end); + } + return this._content; + } + update(event, version) { + this._content = event.text; + this._version = version; + this._lineOffsets = undefined; + } + getLineOffsets() { + if (this._lineOffsets === undefined) { + let lineOffsets = []; + let text = this._content; + let isLineStart = true; + for (let i = 0; i < text.length; i++) { + if (isLineStart) { + lineOffsets.push(i); + isLineStart = false; + } + let ch = text.charAt(i); + isLineStart = (ch === '\r' || ch === '\n'); + if (ch === '\r' && i + 1 < text.length && text.charAt(i + 1) === '\n') { + i++; + } + } + if (isLineStart && text.length > 0) { + lineOffsets.push(text.length); + } + this._lineOffsets = lineOffsets; + } + return this._lineOffsets; + } + positionAt(offset) { + offset = Math.max(Math.min(offset, this._content.length), 0); + let lineOffsets = this.getLineOffsets(); + let low = 0, high = lineOffsets.length; + if (high === 0) { + return Position.create(0, offset); + } + while (low < high) { + let mid = Math.floor((low + high) / 2); + if (lineOffsets[mid] > offset) { + high = mid; + } + else { + low = mid + 1; + } + } + // low is the least x for which the line offset is larger than the current offset + // or array.length if no line offset is larger than the current offset + let line = low - 1; + return Position.create(line, offset - lineOffsets[line]); + } + offsetAt(position) { + let lineOffsets = this.getLineOffsets(); + if (position.line >= lineOffsets.length) { + return this._content.length; + } + else if (position.line < 0) { + return 0; + } + let lineOffset = lineOffsets[position.line]; + let nextLineOffset = (position.line + 1 < lineOffsets.length) ? lineOffsets[position.line + 1] : this._content.length; + return Math.max(Math.min(lineOffset + position.character, nextLineOffset), lineOffset); + } + get lineCount() { + return this.getLineOffsets().length; + } +} +var Is; +(function (Is) { + const toString = Object.prototype.toString; + function defined(value) { + return typeof value !== 'undefined'; + } + Is.defined = defined; + function undefined$1(value) { + return typeof value === 'undefined'; + } + Is.undefined = undefined$1; + function boolean(value) { + return value === true || value === false; + } + Is.boolean = boolean; + function string(value) { + return toString.call(value) === '[object String]'; + } + Is.string = string; + function number(value) { + return toString.call(value) === '[object Number]'; + } + Is.number = number; + function numberRange(value, min, max) { + return toString.call(value) === '[object Number]' && min <= value && value <= max; + } + Is.numberRange = numberRange; + function integer(value) { + return toString.call(value) === '[object Number]' && -2147483648 <= value && value <= 2147483647; + } + Is.integer = integer; + function uinteger(value) { + return toString.call(value) === '[object Number]' && 0 <= value && value <= 2147483647; + } + Is.uinteger = uinteger; + function func(value) { + return toString.call(value) === '[object Function]'; + } + Is.func = func; + function objectLiteral(value) { + // Strictly speaking class instances pass this check as well. Since the LSP + // doesn't use classes we ignore this for now. If we do we need to add something + // like this: `Object.getPrototypeOf(Object.getPrototypeOf(x)) === null` + return value !== null && typeof value === 'object'; + } + Is.objectLiteral = objectLiteral; + function typedArray(value, check) { + return Array.isArray(value) && value.every(check); + } + Is.typedArray = typedArray; +})(Is || (Is = {})); + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +var ClientCapabilities$2; +(function (ClientCapabilities) { + ClientCapabilities.LATEST = { + textDocument: { + completion: { + completionItem: { + documentationFormat: [MarkupKind.Markdown, MarkupKind.PlainText] + } + }, + hover: { + contentFormat: [MarkupKind.Markdown, MarkupKind.PlainText] + } + } + }; +})(ClientCapabilities$2 || (ClientCapabilities$2 = {})); +var FileType$1; +(function (FileType) { + /** + * The file type is unknown. + */ + FileType[FileType["Unknown"] = 0] = "Unknown"; + /** + * A regular file. + */ + FileType[FileType["File"] = 1] = "File"; + /** + * A directory. + */ + FileType[FileType["Directory"] = 2] = "Directory"; + /** + * A symbolic link to a file. + */ + FileType[FileType["SymbolicLink"] = 64] = "SymbolicLink"; +})(FileType$1 || (FileType$1 = {})); + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +const browserNames = { + E: 'Edge', + FF: 'Firefox', + S: 'Safari', + C: 'Chrome', + IE: 'IE', + O: 'Opera' +}; +function getEntryStatus(status) { + switch (status) { + case 'experimental': + return '⚠️ Property is experimental. Be cautious when using it.️\n\n'; + case 'nonstandard': + return '🚨️ Property is nonstandard. Avoid using it.\n\n'; + case 'obsolete': + return '🚨️️️ Property is obsolete. Avoid using it.\n\n'; + default: + return ''; + } +} +function getEntryDescription(entry, doesSupportMarkdown, settings) { + let result; + if (doesSupportMarkdown) { + result = { + kind: 'markdown', + value: getEntryMarkdownDescription(entry, settings) + }; + } + else { + result = { + kind: 'plaintext', + value: getEntryStringDescription(entry, settings) + }; + } + if (result.value === '') { + return undefined; + } + return result; +} +function textToMarkedString(text) { + text = text.replace(/[\\`*_{}[\]()#+\-.!]/g, '\\$&'); // escape markdown syntax tokens: http://daringfireball.net/projects/markdown/syntax#backslash + return text.replace(/</g, '<').replace(/>/g, '>'); +} +function getEntryStringDescription(entry, settings) { + if (!entry.description || entry.description === '') { + return ''; + } + if (typeof entry.description !== 'string') { + return entry.description.value; + } + let result = ''; + if (settings?.documentation !== false) { + if (entry.status) { + result += getEntryStatus(entry.status); + } + result += entry.description; + const browserLabel = getBrowserLabel(entry.browsers); + if (browserLabel) { + result += '\n(' + browserLabel + ')'; + } + if ('syntax' in entry) { + result += `\n\nSyntax: ${entry.syntax}`; + } + } + if (entry.references && entry.references.length > 0 && settings?.references !== false) { + if (result.length > 0) { + result += '\n\n'; + } + result += entry.references.map(r => { + return `${r.name}: ${r.url}`; + }).join(' | '); + } + return result; +} +function getEntryMarkdownDescription(entry, settings) { + if (!entry.description || entry.description === '') { + return ''; + } + let result = ''; + if (settings?.documentation !== false) { + if (entry.status) { + result += getEntryStatus(entry.status); + } + if (typeof entry.description === 'string') { + result += textToMarkedString(entry.description); + } + else { + result += entry.description.kind === MarkupKind.Markdown ? entry.description.value : textToMarkedString(entry.description.value); + } + const browserLabel = getBrowserLabel(entry.browsers); + if (browserLabel) { + result += '\n\n(' + textToMarkedString(browserLabel) + ')'; + } + if ('syntax' in entry && entry.syntax) { + result += `\n\nSyntax: ${textToMarkedString(entry.syntax)}`; + } + } + if (entry.references && entry.references.length > 0 && settings?.references !== false) { + if (result.length > 0) { + result += '\n\n'; + } + result += entry.references.map(r => { + return `[${r.name}](${r.url})`; + }).join(' | '); + } + return result; +} +/** + * Input is like `["E12","FF49","C47","IE","O"]` + * Output is like `Edge 12, Firefox 49, Chrome 47, IE, Opera` + */ +function getBrowserLabel(browsers = []) { + if (browsers.length === 0) { + return null; + } + return browsers + .map(b => { + let result = ''; + const matches = b.match(/([A-Z]+)(\d+)?/); + const name = matches[1]; + const version = matches[2]; + if (name in browserNames) { + result += browserNames[name]; + } + if (version) { + result += ' ' + version; + } + return result; + }) + .join(', '); +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +const hexColorRegExp = /(^#([0-9A-F]{3}){1,2}$)|(^#([0-9A-F]{4}){1,2}$)/i; +const colorFunctions = [ + { + label: 'rgb', + func: 'rgb($red, $green, $blue)', + insertText: 'rgb(${1:red}, ${2:green}, ${3:blue})', + desc: t$2('Creates a Color from red, green, and blue values.') + }, + { + label: 'rgba', + func: 'rgba($red, $green, $blue, $alpha)', + insertText: 'rgba(${1:red}, ${2:green}, ${3:blue}, ${4:alpha})', + desc: t$2('Creates a Color from red, green, blue, and alpha values.') + }, + { + label: 'rgb relative', + func: 'rgb(from $color $red $green $blue)', + insertText: 'rgb(from ${1:color} ${2:r} ${3:g} ${4:b})', + desc: t$2('Creates a Color from the red, green, and blue values of another Color.') + }, + { + label: 'hsl', + func: 'hsl($hue, $saturation, $lightness)', + insertText: 'hsl(${1:hue}, ${2:saturation}, ${3:lightness})', + desc: t$2('Creates a Color from hue, saturation, and lightness values.') + }, + { + label: 'hsla', + func: 'hsla($hue, $saturation, $lightness, $alpha)', + insertText: 'hsla(${1:hue}, ${2:saturation}, ${3:lightness}, ${4:alpha})', + desc: t$2('Creates a Color from hue, saturation, lightness, and alpha values.') + }, + { + label: 'hsl relative', + func: 'hsl(from $color $hue $saturation $lightness)', + insertText: 'hsl(from ${1:color} ${2:h} ${3:s} ${4:l})', + desc: t$2('Creates a Color from the hue, saturation, and lightness values of another Color.') + }, + { + label: 'hwb', + func: 'hwb($hue $white $black)', + insertText: 'hwb(${1:hue} ${2:white} ${3:black})', + desc: t$2('Creates a Color from hue, white, and black values.') + }, + { + label: 'hwb relative', + func: 'hwb(from $color $hue $white $black)', + insertText: 'hwb(from ${1:color} ${2:h} ${3:w} ${4:b})', + desc: t$2('Creates a Color from the hue, white, and black values of another Color.') + }, + { + label: 'lab', + func: 'lab($lightness $a $b)', + insertText: 'lab(${1:lightness} ${2:a} ${3:b})', + desc: t$2('Creates a Color from lightness, a, and b values.') + }, + { + label: 'lab relative', + func: 'lab(from $color $lightness $a $b)', + insertText: 'lab(from ${1:color} ${2:l} ${3:a} ${4:b})', + desc: t$2('Creates a Color from the lightness, a, and b values of another Color.') + }, + { + label: 'oklab', + func: 'oklab($lightness $a $b)', + insertText: 'oklab(${1:lightness} ${2:a} ${3:b})', + desc: t$2('Creates a Color from lightness, a, and b values.') + }, + { + label: 'oklab relative', + func: 'oklab(from $color $lightness $a $b)', + insertText: 'oklab(from ${1:color} ${2:l} ${3:a} ${4:b})', + desc: t$2('Creates a Color from the lightness, a, and b values of another Color.') + }, + { + label: 'lch', + func: 'lch($lightness $chroma $hue)', + insertText: 'lch(${1:lightness} ${2:chroma} ${3:hue})', + desc: t$2('Creates a Color from lightness, chroma, and hue values.') + }, + { + label: 'lch relative', + func: 'lch(from $color $lightness $chroma $hue)', + insertText: 'lch(from ${1:color} ${2:l} ${3:c} ${4:h})', + desc: t$2('Creates a Color from the lightness, chroma, and hue values of another Color.') + }, + { + label: 'oklch', + func: 'oklch($lightness $chroma $hue)', + insertText: 'oklch(${1:lightness} ${2:chroma} ${3:hue})', + desc: t$2('Creates a Color from lightness, chroma, and hue values.') + }, + { + label: 'oklch relative', + func: 'oklch(from $color $lightness $chroma $hue)', + insertText: 'oklch(from ${1:color} ${2:l} ${3:c} ${4:h})', + desc: t$2('Creates a Color from the lightness, chroma, and hue values of another Color.') + }, + { + label: 'color', + func: 'color($color-space $red $green $blue)', + insertText: 'color(${1|srgb,srgb-linear,display-p3,a98-rgb,prophoto-rgb,rec2020,xyx,xyz-d50,xyz-d65|} ${2:red} ${3:green} ${4:blue})', + desc: t$2('Creates a Color in a specific color space from red, green, and blue values.') + }, + { + label: 'color relative', + func: 'color(from $color $color-space $red $green $blue)', + insertText: 'color(from ${1:color} ${2|srgb,srgb-linear,display-p3,a98-rgb,prophoto-rgb,rec2020,xyx,xyz-d50,xyz-d65|} ${3:r} ${4:g} ${5:b})', + desc: t$2('Creates a Color in a specific color space from the red, green, and blue values of another Color.') + }, + { + label: 'color-mix', + func: 'color-mix(in $color-space, $color $percentage, $color $percentage)', + insertText: 'color-mix(in ${1|srgb,srgb-linear,lab,oklab,xyz,xyz-d50,xyz-d65|}, ${3:color} ${4:percentage}, ${5:color} ${6:percentage})', + desc: t$2('Mix two colors together in a rectangular color space.') + }, + { + label: 'color-mix hue', + func: 'color-mix(in $color-space $interpolation-method hue, $color $percentage, $color $percentage)', + insertText: 'color-mix(in ${1|hsl,hwb,lch,oklch|} ${2|shorter hue,longer hue,increasing hue,decreasing hue|}, ${3:color} ${4:percentage}, ${5:color} ${6:percentage})', + desc: t$2('Mix two colors together in a polar color space.') + }, +]; +const colorFunctionNameRegExp = /^(rgb|rgba|hsl|hsla|hwb)$/i; +const colors = { + aliceblue: '#f0f8ff', + antiquewhite: '#faebd7', + aqua: '#00ffff', + aquamarine: '#7fffd4', + azure: '#f0ffff', + beige: '#f5f5dc', + bisque: '#ffe4c4', + black: '#000000', + blanchedalmond: '#ffebcd', + blue: '#0000ff', + blueviolet: '#8a2be2', + brown: '#a52a2a', + burlywood: '#deb887', + cadetblue: '#5f9ea0', + chartreuse: '#7fff00', + chocolate: '#d2691e', + coral: '#ff7f50', + cornflowerblue: '#6495ed', + cornsilk: '#fff8dc', + crimson: '#dc143c', + cyan: '#00ffff', + darkblue: '#00008b', + darkcyan: '#008b8b', + darkgoldenrod: '#b8860b', + darkgray: '#a9a9a9', + darkgrey: '#a9a9a9', + darkgreen: '#006400', + darkkhaki: '#bdb76b', + darkmagenta: '#8b008b', + darkolivegreen: '#556b2f', + darkorange: '#ff8c00', + darkorchid: '#9932cc', + darkred: '#8b0000', + darksalmon: '#e9967a', + darkseagreen: '#8fbc8f', + darkslateblue: '#483d8b', + darkslategray: '#2f4f4f', + darkslategrey: '#2f4f4f', + darkturquoise: '#00ced1', + darkviolet: '#9400d3', + deeppink: '#ff1493', + deepskyblue: '#00bfff', + dimgray: '#696969', + dimgrey: '#696969', + dodgerblue: '#1e90ff', + firebrick: '#b22222', + floralwhite: '#fffaf0', + forestgreen: '#228b22', + fuchsia: '#ff00ff', + gainsboro: '#dcdcdc', + ghostwhite: '#f8f8ff', + gold: '#ffd700', + goldenrod: '#daa520', + gray: '#808080', + grey: '#808080', + green: '#008000', + greenyellow: '#adff2f', + honeydew: '#f0fff0', + hotpink: '#ff69b4', + indianred: '#cd5c5c', + indigo: '#4b0082', + ivory: '#fffff0', + khaki: '#f0e68c', + lavender: '#e6e6fa', + lavenderblush: '#fff0f5', + lawngreen: '#7cfc00', + lemonchiffon: '#fffacd', + lightblue: '#add8e6', + lightcoral: '#f08080', + lightcyan: '#e0ffff', + lightgoldenrodyellow: '#fafad2', + lightgray: '#d3d3d3', + lightgrey: '#d3d3d3', + lightgreen: '#90ee90', + lightpink: '#ffb6c1', + lightsalmon: '#ffa07a', + lightseagreen: '#20b2aa', + lightskyblue: '#87cefa', + lightslategray: '#778899', + lightslategrey: '#778899', + lightsteelblue: '#b0c4de', + lightyellow: '#ffffe0', + lime: '#00ff00', + limegreen: '#32cd32', + linen: '#faf0e6', + magenta: '#ff00ff', + maroon: '#800000', + mediumaquamarine: '#66cdaa', + mediumblue: '#0000cd', + mediumorchid: '#ba55d3', + mediumpurple: '#9370d8', + mediumseagreen: '#3cb371', + mediumslateblue: '#7b68ee', + mediumspringgreen: '#00fa9a', + mediumturquoise: '#48d1cc', + mediumvioletred: '#c71585', + midnightblue: '#191970', + mintcream: '#f5fffa', + mistyrose: '#ffe4e1', + moccasin: '#ffe4b5', + navajowhite: '#ffdead', + navy: '#000080', + oldlace: '#fdf5e6', + olive: '#808000', + olivedrab: '#6b8e23', + orange: '#ffa500', + orangered: '#ff4500', + orchid: '#da70d6', + palegoldenrod: '#eee8aa', + palegreen: '#98fb98', + paleturquoise: '#afeeee', + palevioletred: '#d87093', + papayawhip: '#ffefd5', + peachpuff: '#ffdab9', + peru: '#cd853f', + pink: '#ffc0cb', + plum: '#dda0dd', + powderblue: '#b0e0e6', + purple: '#800080', + red: '#ff0000', + rebeccapurple: '#663399', + rosybrown: '#bc8f8f', + royalblue: '#4169e1', + saddlebrown: '#8b4513', + salmon: '#fa8072', + sandybrown: '#f4a460', + seagreen: '#2e8b57', + seashell: '#fff5ee', + sienna: '#a0522d', + silver: '#c0c0c0', + skyblue: '#87ceeb', + slateblue: '#6a5acd', + slategray: '#708090', + slategrey: '#708090', + snow: '#fffafa', + springgreen: '#00ff7f', + steelblue: '#4682b4', + tan: '#d2b48c', + teal: '#008080', + thistle: '#d8bfd8', + tomato: '#ff6347', + turquoise: '#40e0d0', + violet: '#ee82ee', + wheat: '#f5deb3', + white: '#ffffff', + whitesmoke: '#f5f5f5', + yellow: '#ffff00', + yellowgreen: '#9acd32' +}; +const colorsRegExp = new RegExp(`^(${Object.keys(colors).join('|')})$`, "i"); +const colorKeywords = { + 'currentColor': 'The value of the \'color\' property. The computed value of the \'currentColor\' keyword is the computed value of the \'color\' property. If the \'currentColor\' keyword is set on the \'color\' property itself, it is treated as \'color:inherit\' at parse time.', + 'transparent': 'Fully transparent. This keyword can be considered a shorthand for rgba(0,0,0,0) which is its computed value.', +}; +const colorKeywordsRegExp = new RegExp(`^(${Object.keys(colorKeywords).join('|')})$`, "i"); +function getNumericValue(node, factor) { + const val = node.getText(); + const m = val.match(/^([-+]?[0-9]*\.?[0-9]+)(%?)$/); + if (m) { + if (m[2]) { + factor = 100.0; + } + const result = parseFloat(m[1]) / factor; + if (result >= 0 && result <= 1) { + return result; + } + } + throw new Error(); +} +function getAngle(node) { + const val = node.getText(); + const m = val.match(/^([-+]?[0-9]*\.?[0-9]+)(deg|rad|grad|turn)?$/); + if (m) { + switch (m[2]) { + case 'deg': + return parseFloat(val) % 360; + case 'rad': + return (parseFloat(val) * 180 / Math.PI) % 360; + case 'grad': + return (parseFloat(val) * 0.9) % 360; + case 'turn': + return (parseFloat(val) * 360) % 360; + default: + if ('undefined' === typeof m[2]) { + return parseFloat(val) % 360; + } + } + } + throw new Error(); +} +function isColorConstructor(node) { + const name = node.getName(); + if (!name) { + return false; + } + return colorFunctionNameRegExp.test(name); +} +function isColorString(s) { + return hexColorRegExp.test(s) || colorsRegExp.test(s) || colorKeywordsRegExp.test(s); +} +const Digit0$1 = 48; +const Digit9$1 = 57; +const A$1 = 65; +const a$1 = 97; +const f$1 = 102; +function hexDigit$1(charCode) { + if (charCode < Digit0$1) { + return 0; + } + if (charCode <= Digit9$1) { + return charCode - Digit0$1; + } + if (charCode < a$1) { + charCode += (a$1 - A$1); + } + if (charCode >= a$1 && charCode <= f$1) { + return charCode - a$1 + 10; + } + return 0; +} +function colorFromHex$1(text) { + if (text[0] !== '#') { + return null; + } + switch (text.length) { + case 4: + return { + red: (hexDigit$1(text.charCodeAt(1)) * 0x11) / 255.0, + green: (hexDigit$1(text.charCodeAt(2)) * 0x11) / 255.0, + blue: (hexDigit$1(text.charCodeAt(3)) * 0x11) / 255.0, + alpha: 1 + }; + case 5: + return { + red: (hexDigit$1(text.charCodeAt(1)) * 0x11) / 255.0, + green: (hexDigit$1(text.charCodeAt(2)) * 0x11) / 255.0, + blue: (hexDigit$1(text.charCodeAt(3)) * 0x11) / 255.0, + alpha: (hexDigit$1(text.charCodeAt(4)) * 0x11) / 255.0, + }; + case 7: + return { + red: (hexDigit$1(text.charCodeAt(1)) * 0x10 + hexDigit$1(text.charCodeAt(2))) / 255.0, + green: (hexDigit$1(text.charCodeAt(3)) * 0x10 + hexDigit$1(text.charCodeAt(4))) / 255.0, + blue: (hexDigit$1(text.charCodeAt(5)) * 0x10 + hexDigit$1(text.charCodeAt(6))) / 255.0, + alpha: 1 + }; + case 9: + return { + red: (hexDigit$1(text.charCodeAt(1)) * 0x10 + hexDigit$1(text.charCodeAt(2))) / 255.0, + green: (hexDigit$1(text.charCodeAt(3)) * 0x10 + hexDigit$1(text.charCodeAt(4))) / 255.0, + blue: (hexDigit$1(text.charCodeAt(5)) * 0x10 + hexDigit$1(text.charCodeAt(6))) / 255.0, + alpha: (hexDigit$1(text.charCodeAt(7)) * 0x10 + hexDigit$1(text.charCodeAt(8))) / 255.0 + }; + } + return null; +} +function colorFromHSL(hue, sat, light, alpha = 1.0) { + hue = hue / 60.0; + if (sat === 0) { + return { red: light, green: light, blue: light, alpha }; + } + else { + const hueToRgb = (t1, t2, hue) => { + while (hue < 0) { + hue += 6; + } + while (hue >= 6) { + hue -= 6; + } + if (hue < 1) { + return (t2 - t1) * hue + t1; + } + if (hue < 3) { + return t2; + } + if (hue < 4) { + return (t2 - t1) * (4 - hue) + t1; + } + return t1; + }; + const t2 = light <= 0.5 ? (light * (sat + 1)) : (light + sat - (light * sat)); + const t1 = light * 2 - t2; + return { red: hueToRgb(t1, t2, hue + 2), green: hueToRgb(t1, t2, hue), blue: hueToRgb(t1, t2, hue - 2), alpha }; + } +} +function hslFromColor(rgba) { + const r = rgba.red; + const g = rgba.green; + const b = rgba.blue; + const a = rgba.alpha; + const max = Math.max(r, g, b); + const min = Math.min(r, g, b); + let h = 0; + let s = 0; + const l = (min + max) / 2; + const chroma = max - min; + if (chroma > 0) { + s = Math.min((l <= 0.5 ? chroma / (2 * l) : chroma / (2 - (2 * l))), 1); + switch (max) { + case r: + h = (g - b) / chroma + (g < b ? 6 : 0); + break; + case g: + h = (b - r) / chroma + 2; + break; + case b: + h = (r - g) / chroma + 4; + break; + } + h *= 60; + h = Math.round(h); + } + return { h, s, l, a }; +} +function colorFromHWB(hue, white, black, alpha = 1.0) { + if (white + black >= 1) { + const gray = white / (white + black); + return { red: gray, green: gray, blue: gray, alpha }; + } + const rgb = colorFromHSL(hue, 1, 0.5, alpha); + let red = rgb.red; + red *= (1 - white - black); + red += white; + let green = rgb.green; + green *= (1 - white - black); + green += white; + let blue = rgb.blue; + blue *= (1 - white - black); + blue += white; + return { + red: red, + green: green, + blue: blue, + alpha + }; +} +function hwbFromColor(rgba) { + const hsl = hslFromColor(rgba); + const white = Math.min(rgba.red, rgba.green, rgba.blue); + const black = 1 - Math.max(rgba.red, rgba.green, rgba.blue); + return { + h: hsl.h, + w: white, + b: black, + a: hsl.a + }; +} +function getColorValue(node) { + if (node.type === NodeType.HexColorValue) { + const text = node.getText(); + return colorFromHex$1(text); + } + else if (node.type === NodeType.Function) { + const functionNode = node; + const name = functionNode.getName(); + let colorValues = functionNode.getArguments().getChildren(); + if (colorValues.length === 1) { + const functionArg = colorValues[0].getChildren(); + if (functionArg.length === 1 && functionArg[0].type === NodeType.Expression) { + colorValues = functionArg[0].getChildren(); + if (colorValues.length === 3) { + const lastValue = colorValues[2]; + if (lastValue instanceof BinaryExpression) { + const left = lastValue.getLeft(), right = lastValue.getRight(), operator = lastValue.getOperator(); + if (left && right && operator && operator.matches('/')) { + colorValues = [colorValues[0], colorValues[1], left, right]; + } + } + } + } + } + if (!name || colorValues.length < 3 || colorValues.length > 4) { + return null; + } + try { + const alpha = colorValues.length === 4 ? getNumericValue(colorValues[3], 1) : 1; + if (name === 'rgb' || name === 'rgba') { + return { + red: getNumericValue(colorValues[0], 255.0), + green: getNumericValue(colorValues[1], 255.0), + blue: getNumericValue(colorValues[2], 255.0), + alpha + }; + } + else if (name === 'hsl' || name === 'hsla') { + const h = getAngle(colorValues[0]); + const s = getNumericValue(colorValues[1], 100.0); + const l = getNumericValue(colorValues[2], 100.0); + return colorFromHSL(h, s, l, alpha); + } + else if (name === 'hwb') { + const h = getAngle(colorValues[0]); + const w = getNumericValue(colorValues[1], 100.0); + const b = getNumericValue(colorValues[2], 100.0); + return colorFromHWB(h, w, b, alpha); + } + } + catch (e) { + // parse error on numeric value + return null; + } + } + else if (node.type === NodeType.Identifier) { + if (node.parent && node.parent.type !== NodeType.Term) { + return null; + } + const term = node.parent; + if (term && term.parent && term.parent.type === NodeType.BinaryExpression) { + const expression = term.parent; + if (expression.parent && expression.parent.type === NodeType.ListEntry && expression.parent.key === expression) { + return null; + } + } + const candidateColor = node.getText().toLowerCase(); + if (candidateColor === 'none') { + return null; + } + const colorHex = colors[candidateColor]; + if (colorHex) { + return colorFromHex$1(colorHex); + } + } + return null; +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +const positionKeywords = { + 'bottom': 'Computes to ‘100%’ for the vertical position if one or two values are given, otherwise specifies the bottom edge as the origin for the next offset.', + 'center': 'Computes to ‘50%’ (‘left 50%’) for the horizontal position if the horizontal position is not otherwise specified, or ‘50%’ (‘top 50%’) for the vertical position if it is.', + 'left': 'Computes to ‘0%’ for the horizontal position if one or two values are given, otherwise specifies the left edge as the origin for the next offset.', + 'right': 'Computes to ‘100%’ for the horizontal position if one or two values are given, otherwise specifies the right edge as the origin for the next offset.', + 'top': 'Computes to ‘0%’ for the vertical position if one or two values are given, otherwise specifies the top edge as the origin for the next offset.' +}; +const repeatStyleKeywords = { + 'no-repeat': 'Placed once and not repeated in this direction.', + 'repeat': 'Repeated in this direction as often as needed to cover the background painting area.', + 'repeat-x': 'Computes to ‘repeat no-repeat’.', + 'repeat-y': 'Computes to ‘no-repeat repeat’.', + 'round': 'Repeated as often as will fit within the background positioning area. If it doesn’t fit a whole number of times, it is rescaled so that it does.', + 'space': 'Repeated as often as will fit within the background positioning area without being clipped and then the images are spaced out to fill the area.' +}; +const lineStyleKeywords = { + 'dashed': 'A series of square-ended dashes.', + 'dotted': 'A series of round dots.', + 'double': 'Two parallel solid lines with some space between them.', + 'groove': 'Looks as if it were carved in the canvas.', + 'hidden': 'Same as ‘none’, but has different behavior in the border conflict resolution rules for border-collapsed tables.', + 'inset': 'Looks as if the content on the inside of the border is sunken into the canvas.', + 'none': 'No border. Color and width are ignored.', + 'outset': 'Looks as if the content on the inside of the border is coming out of the canvas.', + 'ridge': 'Looks as if it were coming out of the canvas.', + 'solid': 'A single line segment.' +}; +const lineWidthKeywords = ['medium', 'thick', 'thin']; +const boxKeywords = { + 'border-box': 'The background is painted within (clipped to) the border box.', + 'content-box': 'The background is painted within (clipped to) the content box.', + 'padding-box': 'The background is painted within (clipped to) the padding box.' +}; +const geometryBoxKeywords = { + 'margin-box': 'Uses the margin box as reference box.', + 'fill-box': 'Uses the object bounding box as reference box.', + 'stroke-box': 'Uses the stroke bounding box as reference box.', + 'view-box': 'Uses the nearest SVG viewport as reference box.' +}; +const cssWideKeywords = { + 'initial': 'Represents the value specified as the property’s initial value.', + 'inherit': 'Represents the computed value of the property on the element’s parent.', + 'unset': 'Acts as either `inherit` or `initial`, depending on whether the property is inherited or not.' +}; +const cssWideFunctions = { + 'var()': 'Evaluates the value of a custom variable.', + 'calc()': 'Evaluates an mathematical expression. The following operators can be used: + - * /.' +}; +const imageFunctions = { + 'url()': 'Reference an image file by URL', + 'image()': 'Provide image fallbacks and annotations.', + '-webkit-image-set()': 'Provide multiple resolutions. Remember to use unprefixed image-set() in addition.', + 'image-set()': 'Provide multiple resolutions of an image and const the UA decide which is most appropriate in a given situation.', + '-moz-element()': 'Use an element in the document as an image. Remember to use unprefixed element() in addition.', + 'element()': 'Use an element in the document as an image.', + 'cross-fade()': 'Indicates the two images to be combined and how far along in the transition the combination is.', + '-webkit-gradient()': 'Deprecated. Use modern linear-gradient() or radial-gradient() instead.', + '-webkit-linear-gradient()': 'Linear gradient. Remember to use unprefixed version in addition.', + '-moz-linear-gradient()': 'Linear gradient. Remember to use unprefixed version in addition.', + '-o-linear-gradient()': 'Linear gradient. Remember to use unprefixed version in addition.', + 'linear-gradient()': 'A linear gradient is created by specifying a straight gradient line, and then several colors placed along that line.', + '-webkit-repeating-linear-gradient()': 'Repeating Linear gradient. Remember to use unprefixed version in addition.', + '-moz-repeating-linear-gradient()': 'Repeating Linear gradient. Remember to use unprefixed version in addition.', + '-o-repeating-linear-gradient()': 'Repeating Linear gradient. Remember to use unprefixed version in addition.', + 'repeating-linear-gradient()': 'Same as linear-gradient, except the color-stops are repeated infinitely in both directions, with their positions shifted by multiples of the difference between the last specified color-stop’s position and the first specified color-stop’s position.', + '-webkit-radial-gradient()': 'Radial gradient. Remember to use unprefixed version in addition.', + '-moz-radial-gradient()': 'Radial gradient. Remember to use unprefixed version in addition.', + 'radial-gradient()': 'Colors emerge from a single point and smoothly spread outward in a circular or elliptical shape.', + '-webkit-repeating-radial-gradient()': 'Repeating radial gradient. Remember to use unprefixed version in addition.', + '-moz-repeating-radial-gradient()': 'Repeating radial gradient. Remember to use unprefixed version in addition.', + 'repeating-radial-gradient()': 'Same as radial-gradient, except the color-stops are repeated infinitely in both directions, with their positions shifted by multiples of the difference between the last specified color-stop’s position and the first specified color-stop’s position.' +}; +const transitionTimingFunctions = { + 'ease': 'Equivalent to cubic-bezier(0.25, 0.1, 0.25, 1.0).', + 'ease-in': 'Equivalent to cubic-bezier(0.42, 0, 1.0, 1.0).', + 'ease-in-out': 'Equivalent to cubic-bezier(0.42, 0, 0.58, 1.0).', + 'ease-out': 'Equivalent to cubic-bezier(0, 0, 0.58, 1.0).', + 'linear': 'Equivalent to cubic-bezier(0.0, 0.0, 1.0, 1.0).', + 'step-end': 'Equivalent to steps(1, end).', + 'step-start': 'Equivalent to steps(1, start).', + 'steps()': 'The first parameter specifies the number of intervals in the function. The second parameter, which is optional, is either the value “start” or “end”.', + 'cubic-bezier()': 'Specifies a cubic-bezier curve. The four values specify points P1 and P2 of the curve as (x1, y1, x2, y2).', + 'cubic-bezier(0.6, -0.28, 0.735, 0.045)': 'Ease-in Back. Overshoots.', + 'cubic-bezier(0.68, -0.55, 0.265, 1.55)': 'Ease-in-out Back. Overshoots.', + 'cubic-bezier(0.175, 0.885, 0.32, 1.275)': 'Ease-out Back. Overshoots.', + 'cubic-bezier(0.6, 0.04, 0.98, 0.335)': 'Ease-in Circular. Based on half circle.', + 'cubic-bezier(0.785, 0.135, 0.15, 0.86)': 'Ease-in-out Circular. Based on half circle.', + 'cubic-bezier(0.075, 0.82, 0.165, 1)': 'Ease-out Circular. Based on half circle.', + 'cubic-bezier(0.55, 0.055, 0.675, 0.19)': 'Ease-in Cubic. Based on power of three.', + 'cubic-bezier(0.645, 0.045, 0.355, 1)': 'Ease-in-out Cubic. Based on power of three.', + 'cubic-bezier(0.215, 0.610, 0.355, 1)': 'Ease-out Cubic. Based on power of three.', + 'cubic-bezier(0.95, 0.05, 0.795, 0.035)': 'Ease-in Exponential. Based on two to the power ten.', + 'cubic-bezier(1, 0, 0, 1)': 'Ease-in-out Exponential. Based on two to the power ten.', + 'cubic-bezier(0.19, 1, 0.22, 1)': 'Ease-out Exponential. Based on two to the power ten.', + 'cubic-bezier(0.47, 0, 0.745, 0.715)': 'Ease-in Sine.', + 'cubic-bezier(0.445, 0.05, 0.55, 0.95)': 'Ease-in-out Sine.', + 'cubic-bezier(0.39, 0.575, 0.565, 1)': 'Ease-out Sine.', + 'cubic-bezier(0.55, 0.085, 0.68, 0.53)': 'Ease-in Quadratic. Based on power of two.', + 'cubic-bezier(0.455, 0.03, 0.515, 0.955)': 'Ease-in-out Quadratic. Based on power of two.', + 'cubic-bezier(0.25, 0.46, 0.45, 0.94)': 'Ease-out Quadratic. Based on power of two.', + 'cubic-bezier(0.895, 0.03, 0.685, 0.22)': 'Ease-in Quartic. Based on power of four.', + 'cubic-bezier(0.77, 0, 0.175, 1)': 'Ease-in-out Quartic. Based on power of four.', + 'cubic-bezier(0.165, 0.84, 0.44, 1)': 'Ease-out Quartic. Based on power of four.', + 'cubic-bezier(0.755, 0.05, 0.855, 0.06)': 'Ease-in Quintic. Based on power of five.', + 'cubic-bezier(0.86, 0, 0.07, 1)': 'Ease-in-out Quintic. Based on power of five.', + 'cubic-bezier(0.23, 1, 0.320, 1)': 'Ease-out Quintic. Based on power of five.' +}; +const basicShapeFunctions = { + 'circle()': 'Defines a circle.', + 'ellipse()': 'Defines an ellipse.', + 'inset()': 'Defines an inset rectangle.', + 'polygon()': 'Defines a polygon.' +}; +const units = { + 'length': ['cap', 'ch', 'cm', 'cqb', 'cqh', 'cqi', 'cqmax', 'cqmin', 'cqw', 'dvb', 'dvh', 'dvi', 'dvw', 'em', 'ex', 'ic', 'in', 'lh', 'lvb', 'lvh', 'lvi', 'lvw', 'mm', 'pc', 'pt', 'px', 'q', 'rcap', 'rch', 'rem', 'rex', 'ric', 'rlh', 'svb', 'svh', 'svi', 'svw', 'vb', 'vh', 'vi', 'vmax', 'vmin', 'vw'], + 'angle': ['deg', 'rad', 'grad', 'turn'], + 'time': ['ms', 's'], + 'frequency': ['Hz', 'kHz'], + 'resolution': ['dpi', 'dpcm', 'dppx'], + 'percentage': ['%', 'fr'] +}; +const html5Tags = ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', + 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', + 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', + 'main', 'map', 'mark', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'picture', 'pre', 'progress', 'q', + 'rb', 'rp', 'rt', 'rtc', 'ruby', 's', 'samp', 'script', 'section', 'select', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', + 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'const', 'video', 'wbr']; +const svgElements = ['circle', 'clipPath', 'cursor', 'defs', 'desc', 'ellipse', 'feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', + 'feDisplacementMap', 'feDistantLight', 'feDropShadow', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', + 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence', 'filter', 'foreignObject', 'g', 'hatch', 'hatchpath', 'image', 'line', 'linearGradient', + 'marker', 'mask', 'mesh', 'meshpatch', 'meshrow', 'metadata', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'set', 'solidcolor', 'stop', 'svg', 'switch', + 'symbol', 'text', 'textPath', 'tspan', 'use', 'view']; +const pageBoxDirectives = [ + '@bottom-center', '@bottom-left', '@bottom-left-corner', '@bottom-right', '@bottom-right-corner', + '@left-bottom', '@left-middle', '@left-top', '@right-bottom', '@right-middle', '@right-top', + '@top-center', '@top-left', '@top-left-corner', '@top-right', '@top-right-corner' +]; + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +function values(obj) { + return Object.keys(obj).map(key => obj[key]); +} +function isDefined$2(obj) { + return typeof obj !== 'undefined'; +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +/// <summary> +/// A parser for the css core specification. See for reference: +/// https://www.w3.org/TR/CSS21/grammar.html +/// http://www.w3.org/TR/CSS21/syndata.html#tokenization +/// </summary> +class Parser { + constructor(scnr = new Scanner()) { + this.keyframeRegex = /^@(\-(webkit|ms|moz|o)\-)?keyframes$/i; + this.scanner = scnr; + this.token = { type: TokenType$1.EOF, offset: -1, len: 0, text: '' }; + this.prevToken = undefined; + } + peekIdent(text) { + return TokenType$1.Ident === this.token.type && text.length === this.token.text.length && text === this.token.text.toLowerCase(); + } + peekKeyword(text) { + return TokenType$1.AtKeyword === this.token.type && text.length === this.token.text.length && text === this.token.text.toLowerCase(); + } + peekDelim(text) { + return TokenType$1.Delim === this.token.type && text === this.token.text; + } + peek(type) { + return type === this.token.type; + } + peekOne(...types) { + return types.indexOf(this.token.type) !== -1; + } + peekRegExp(type, regEx) { + if (type !== this.token.type) { + return false; + } + return regEx.test(this.token.text); + } + hasWhitespace() { + return !!this.prevToken && (this.prevToken.offset + this.prevToken.len !== this.token.offset); + } + consumeToken() { + this.prevToken = this.token; + this.token = this.scanner.scan(); + } + acceptUnicodeRange() { + const token = this.scanner.tryScanUnicode(); + if (token) { + this.prevToken = token; + this.token = this.scanner.scan(); + return true; + } + return false; + } + mark() { + return { + prev: this.prevToken, + curr: this.token, + pos: this.scanner.pos() + }; + } + restoreAtMark(mark) { + this.prevToken = mark.prev; + this.token = mark.curr; + this.scanner.goBackTo(mark.pos); + } + try(func) { + const pos = this.mark(); + const node = func(); + if (!node) { + this.restoreAtMark(pos); + return null; + } + return node; + } + acceptOneKeyword(keywords) { + if (TokenType$1.AtKeyword === this.token.type) { + for (const keyword of keywords) { + if (keyword.length === this.token.text.length && keyword === this.token.text.toLowerCase()) { + this.consumeToken(); + return true; + } + } + } + return false; + } + accept(type) { + if (type === this.token.type) { + this.consumeToken(); + return true; + } + return false; + } + acceptIdent(text) { + if (this.peekIdent(text)) { + this.consumeToken(); + return true; + } + return false; + } + acceptKeyword(text) { + if (this.peekKeyword(text)) { + this.consumeToken(); + return true; + } + return false; + } + acceptDelim(text) { + if (this.peekDelim(text)) { + this.consumeToken(); + return true; + } + return false; + } + acceptRegexp(regEx) { + if (regEx.test(this.token.text)) { + this.consumeToken(); + return true; + } + return false; + } + _parseRegexp(regEx) { + let node = this.createNode(NodeType.Identifier); + do { } while (this.acceptRegexp(regEx)); + return this.finish(node); + } + acceptUnquotedString() { + const pos = this.scanner.pos(); + this.scanner.goBackTo(this.token.offset); + const unquoted = this.scanner.scanUnquotedString(); + if (unquoted) { + this.token = unquoted; + this.consumeToken(); + return true; + } + this.scanner.goBackTo(pos); + return false; + } + resync(resyncTokens, resyncStopTokens) { + while (true) { + if (resyncTokens && resyncTokens.indexOf(this.token.type) !== -1) { + this.consumeToken(); + return true; + } + else if (resyncStopTokens && resyncStopTokens.indexOf(this.token.type) !== -1) { + return true; + } + else { + if (this.token.type === TokenType$1.EOF) { + return false; + } + this.token = this.scanner.scan(); + } + } + } + createNode(nodeType) { + return new Node$2(this.token.offset, this.token.len, nodeType); + } + create(ctor) { + return new ctor(this.token.offset, this.token.len); + } + finish(node, error, resyncTokens, resyncStopTokens) { + // parseNumeric misuses error for boolean flagging (however the real error mustn't be a false) + // + nodelist offsets mustn't be modified, because there is a offset hack in rulesets for smartselection + if (!(node instanceof Nodelist)) { + if (error) { + this.markError(node, error, resyncTokens, resyncStopTokens); + } + // set the node end position + if (this.prevToken) { + // length with more elements belonging together + const prevEnd = this.prevToken.offset + this.prevToken.len; + node.length = prevEnd > node.offset ? prevEnd - node.offset : 0; // offset is taken from current token, end from previous: Use 0 for empty nodes + } + } + return node; + } + markError(node, error, resyncTokens, resyncStopTokens) { + if (this.token !== this.lastErrorToken) { // do not report twice on the same token + node.addIssue(new Marker(node, error, Level.Error, undefined, this.token.offset, this.token.len)); + this.lastErrorToken = this.token; + } + if (resyncTokens || resyncStopTokens) { + this.resync(resyncTokens, resyncStopTokens); + } + } + parseStylesheet(textDocument) { + const versionId = textDocument.version; + const text = textDocument.getText(); + const textProvider = (offset, length) => { + if (textDocument.version !== versionId) { + throw new Error('Underlying model has changed, AST is no longer valid'); + } + return text.substr(offset, length); + }; + return this.internalParse(text, this._parseStylesheet, textProvider); + } + internalParse(input, parseFunc, textProvider) { + this.scanner.setSource(input); + this.token = this.scanner.scan(); + const node = parseFunc.bind(this)(); + if (node) { + if (textProvider) { + node.textProvider = textProvider; + } + else { + node.textProvider = (offset, length) => { return input.substr(offset, length); }; + } + } + return node; + } + _parseStylesheet() { + const node = this.create(Stylesheet); + while (node.addChild(this._parseStylesheetStart())) { + // Parse statements only valid at the beginning of stylesheets. + } + let inRecovery = false; + do { + let hasMatch = false; + do { + hasMatch = false; + const statement = this._parseStylesheetStatement(); + if (statement) { + node.addChild(statement); + hasMatch = true; + inRecovery = false; + if (!this.peek(TokenType$1.EOF) && this._needsSemicolonAfter(statement) && !this.accept(TokenType$1.SemiColon)) { + this.markError(node, ParseError.SemiColonExpected); + } + } + while (this.accept(TokenType$1.SemiColon) || this.accept(TokenType$1.CDO) || this.accept(TokenType$1.CDC)) { + // accept empty statements + hasMatch = true; + inRecovery = false; + } + } while (hasMatch); + if (this.peek(TokenType$1.EOF)) { + break; + } + if (!inRecovery) { + if (this.peek(TokenType$1.AtKeyword)) { + this.markError(node, ParseError.UnknownAtRule); + } + else { + this.markError(node, ParseError.RuleOrSelectorExpected); + } + inRecovery = true; + } + this.consumeToken(); + } while (!this.peek(TokenType$1.EOF)); + return this.finish(node); + } + _parseStylesheetStart() { + return this._parseCharset(); + } + _parseStylesheetStatement(isNested = false) { + if (this.peek(TokenType$1.AtKeyword)) { + return this._parseStylesheetAtStatement(isNested); + } + return this._parseRuleset(isNested); + } + _parseStylesheetAtStatement(isNested = false) { + return this._parseImport() + || this._parseMedia(isNested) + || this._parsePage() + || this._parseFontFace() + || this._parseKeyframe() + || this._parseSupports(isNested) + || this._parseLayer(isNested) + || this._parsePropertyAtRule() + || this._parseViewPort() + || this._parseNamespace() + || this._parseDocument() + || this._parseContainer() + || this._parseUnknownAtRule(); + } + _tryParseRuleset(isNested) { + const mark = this.mark(); + if (this._parseSelector(isNested)) { + while (this.accept(TokenType$1.Comma) && this._parseSelector(isNested)) { + // loop + } + if (this.accept(TokenType$1.CurlyL)) { + this.restoreAtMark(mark); + return this._parseRuleset(isNested); + } + } + this.restoreAtMark(mark); + return null; + } + _parseRuleset(isNested = false) { + const node = this.create(RuleSet); + const selectors = node.getSelectors(); + if (!selectors.addChild(this._parseSelector(isNested))) { + return null; + } + while (this.accept(TokenType$1.Comma)) { + if (!selectors.addChild(this._parseSelector(isNested))) { + return this.finish(node, ParseError.SelectorExpected); + } + } + return this._parseBody(node, this._parseRuleSetDeclaration.bind(this)); + } + _parseRuleSetDeclarationAtStatement() { + return this._parseMedia(true) + || this._parseSupports(true) + || this._parseLayer(true) + || this._parseUnknownAtRule(); + } + _parseRuleSetDeclaration() { + // https://www.w3.org/TR/css-syntax-3/#consume-a-list-of-declarations + if (this.peek(TokenType$1.AtKeyword)) { + return this._parseRuleSetDeclarationAtStatement(); + } + if (!this.peek(TokenType$1.Ident)) { + return this._parseRuleset(true); + } + return this._tryParseRuleset(true) || this._parseDeclaration(); + } + _needsSemicolonAfter(node) { + switch (node.type) { + case NodeType.Keyframe: + case NodeType.ViewPort: + case NodeType.Media: + case NodeType.Ruleset: + case NodeType.Namespace: + case NodeType.If: + case NodeType.For: + case NodeType.Each: + case NodeType.While: + case NodeType.MixinDeclaration: + case NodeType.FunctionDeclaration: + case NodeType.MixinContentDeclaration: + return false; + case NodeType.ExtendsReference: + case NodeType.MixinContentReference: + case NodeType.ReturnStatement: + case NodeType.MediaQuery: + case NodeType.Debug: + case NodeType.Import: + case NodeType.AtApplyRule: + case NodeType.CustomPropertyDeclaration: + return true; + case NodeType.VariableDeclaration: + return node.needsSemicolon; + case NodeType.MixinReference: + return !node.getContent(); + case NodeType.Declaration: + return !node.getNestedProperties(); + } + return false; + } + _parseDeclarations(parseDeclaration) { + const node = this.create(Declarations); + if (!this.accept(TokenType$1.CurlyL)) { + return null; + } + let decl = parseDeclaration(); + while (node.addChild(decl)) { + if (this.peek(TokenType$1.CurlyR)) { + break; + } + if (this._needsSemicolonAfter(decl) && !this.accept(TokenType$1.SemiColon)) { + return this.finish(node, ParseError.SemiColonExpected, [TokenType$1.SemiColon, TokenType$1.CurlyR]); + } + // We accepted semicolon token. Link it to declaration. + if (decl && this.prevToken && this.prevToken.type === TokenType$1.SemiColon) { + decl.semicolonPosition = this.prevToken.offset; + } + while (this.accept(TokenType$1.SemiColon)) { + // accept empty statements + } + decl = parseDeclaration(); + } + if (!this.accept(TokenType$1.CurlyR)) { + return this.finish(node, ParseError.RightCurlyExpected, [TokenType$1.CurlyR, TokenType$1.SemiColon]); + } + return this.finish(node); + } + _parseBody(node, parseDeclaration) { + if (!node.setDeclarations(this._parseDeclarations(parseDeclaration))) { + return this.finish(node, ParseError.LeftCurlyExpected, [TokenType$1.CurlyR, TokenType$1.SemiColon]); + } + return this.finish(node); + } + _parseSelector(isNested) { + const node = this.create(Selector); + let hasContent = false; + if (isNested) { + // nested selectors can start with a combinator + hasContent = node.addChild(this._parseCombinator()); + } + while (node.addChild(this._parseSimpleSelector())) { + hasContent = true; + node.addChild(this._parseCombinator()); // optional + } + return hasContent ? this.finish(node) : null; + } + _parseDeclaration(stopTokens) { + const customProperty = this._tryParseCustomPropertyDeclaration(stopTokens); + if (customProperty) { + return customProperty; + } + const node = this.create(Declaration); + if (!node.setProperty(this._parseProperty())) { + return null; + } + if (!this.accept(TokenType$1.Colon)) { + return this.finish(node, ParseError.ColonExpected, [TokenType$1.Colon], stopTokens || [TokenType$1.SemiColon]); + } + if (this.prevToken) { + node.colonPosition = this.prevToken.offset; + } + if (!node.setValue(this._parseExpr())) { + return this.finish(node, ParseError.PropertyValueExpected); + } + node.addChild(this._parsePrio()); + if (this.peek(TokenType$1.SemiColon)) { + node.semicolonPosition = this.token.offset; // not part of the declaration, but useful information for code assist + } + return this.finish(node); + } + _tryParseCustomPropertyDeclaration(stopTokens) { + if (!this.peekRegExp(TokenType$1.Ident, /^--/)) { + return null; + } + const node = this.create(CustomPropertyDeclaration); + if (!node.setProperty(this._parseProperty())) { + return null; + } + if (!this.accept(TokenType$1.Colon)) { + return this.finish(node, ParseError.ColonExpected, [TokenType$1.Colon]); + } + if (this.prevToken) { + node.colonPosition = this.prevToken.offset; + } + const mark = this.mark(); + if (this.peek(TokenType$1.CurlyL)) { + // try to parse it as nested declaration + const propertySet = this.create(CustomPropertySet); + const declarations = this._parseDeclarations(this._parseRuleSetDeclaration.bind(this)); + if (propertySet.setDeclarations(declarations) && !declarations.isErroneous(true)) { + propertySet.addChild(this._parsePrio()); + if (this.peek(TokenType$1.SemiColon)) { + this.finish(propertySet); + node.setPropertySet(propertySet); + node.semicolonPosition = this.token.offset; // not part of the declaration, but useful information for code assist + return this.finish(node); + } + } + this.restoreAtMark(mark); + } + // try to parse as expression + const expression = this._parseExpr(); + if (expression && !expression.isErroneous(true)) { + this._parsePrio(); + if (this.peekOne(...(stopTokens || []), TokenType$1.SemiColon, TokenType$1.EOF)) { + node.setValue(expression); + if (this.peek(TokenType$1.SemiColon)) { + node.semicolonPosition = this.token.offset; // not part of the declaration, but useful information for code assist + } + return this.finish(node); + } + } + this.restoreAtMark(mark); + node.addChild(this._parseCustomPropertyValue(stopTokens)); + node.addChild(this._parsePrio()); + if (isDefined$2(node.colonPosition) && this.token.offset === node.colonPosition + 1) { + return this.finish(node, ParseError.PropertyValueExpected); + } + return this.finish(node); + } + /** + * Parse custom property values. + * + * Based on https://www.w3.org/TR/css-variables/#syntax + * + * This code is somewhat unusual, as the allowed syntax is incredibly broad, + * parsing almost any sequence of tokens, save for a small set of exceptions. + * Unbalanced delimitors, invalid tokens, and declaration + * terminators like semicolons and !important directives (when not inside + * of delimitors). + */ + _parseCustomPropertyValue(stopTokens = [TokenType$1.CurlyR]) { + const node = this.create(Node$2); + const isTopLevel = () => curlyDepth === 0 && parensDepth === 0 && bracketsDepth === 0; + const onStopToken = () => stopTokens.indexOf(this.token.type) !== -1; + let curlyDepth = 0; + let parensDepth = 0; + let bracketsDepth = 0; + done: while (true) { + switch (this.token.type) { + case TokenType$1.SemiColon: + // A semicolon only ends things if we're not inside a delimitor. + if (isTopLevel()) { + break done; + } + break; + case TokenType$1.Exclamation: + // An exclamation ends the value if we're not inside delims. + if (isTopLevel()) { + break done; + } + break; + case TokenType$1.CurlyL: + curlyDepth++; + break; + case TokenType$1.CurlyR: + curlyDepth--; + if (curlyDepth < 0) { + // The property value has been terminated without a semicolon, and + // this is the last declaration in the ruleset. + if (onStopToken() && parensDepth === 0 && bracketsDepth === 0) { + break done; + } + return this.finish(node, ParseError.LeftCurlyExpected); + } + break; + case TokenType$1.ParenthesisL: + parensDepth++; + break; + case TokenType$1.ParenthesisR: + parensDepth--; + if (parensDepth < 0) { + if (onStopToken() && bracketsDepth === 0 && curlyDepth === 0) { + break done; + } + return this.finish(node, ParseError.LeftParenthesisExpected); + } + break; + case TokenType$1.BracketL: + bracketsDepth++; + break; + case TokenType$1.BracketR: + bracketsDepth--; + if (bracketsDepth < 0) { + return this.finish(node, ParseError.LeftSquareBracketExpected); + } + break; + case TokenType$1.BadString: // fall through + break done; + case TokenType$1.EOF: + // We shouldn't have reached the end of input, something is + // unterminated. + let error = ParseError.RightCurlyExpected; + if (bracketsDepth > 0) { + error = ParseError.RightSquareBracketExpected; + } + else if (parensDepth > 0) { + error = ParseError.RightParenthesisExpected; + } + return this.finish(node, error); + } + this.consumeToken(); + } + return this.finish(node); + } + _tryToParseDeclaration(stopTokens) { + const mark = this.mark(); + if (this._parseProperty() && this.accept(TokenType$1.Colon)) { + // looks like a declaration, go ahead + this.restoreAtMark(mark); + return this._parseDeclaration(stopTokens); + } + this.restoreAtMark(mark); + return null; + } + _parseProperty() { + const node = this.create(Property); + const mark = this.mark(); + if (this.acceptDelim('*') || this.acceptDelim('_')) { + // support for IE 5.x, 6 and 7 star hack: see http://en.wikipedia.org/wiki/CSS_filter#Star_hack + if (this.hasWhitespace()) { + this.restoreAtMark(mark); + return null; + } + } + if (node.setIdentifier(this._parsePropertyIdentifier())) { + return this.finish(node); + } + return null; + } + _parsePropertyIdentifier() { + return this._parseIdent(); + } + _parseCharset() { + if (!this.peek(TokenType$1.Charset)) { + return null; + } + const node = this.create(Node$2); + this.consumeToken(); // charset + if (!this.accept(TokenType$1.String)) { + return this.finish(node, ParseError.IdentifierExpected); + } + if (!this.accept(TokenType$1.SemiColon)) { + return this.finish(node, ParseError.SemiColonExpected); + } + return this.finish(node); + } + _parseImport() { + // @import [ <url> | <string> ] + // [ layer | layer(<layer-name>) ]? + // <import-condition> ; + // <import-conditions> = [ supports( [ <supports-condition> | <declaration> ] ) ]? + // <media-query-list>? + if (!this.peekKeyword('@import')) { + return null; + } + const node = this.create(Import); + this.consumeToken(); // @import + if (!node.addChild(this._parseURILiteral()) && !node.addChild(this._parseStringLiteral())) { + return this.finish(node, ParseError.URIOrStringExpected); + } + return this._completeParseImport(node); + } + _completeParseImport(node) { + if (this.acceptIdent('layer')) { + if (this.accept(TokenType$1.ParenthesisL)) { + if (!node.addChild(this._parseLayerName())) { + return this.finish(node, ParseError.IdentifierExpected, [TokenType$1.SemiColon]); + } + if (!this.accept(TokenType$1.ParenthesisR)) { + return this.finish(node, ParseError.RightParenthesisExpected, [TokenType$1.ParenthesisR], []); + } + } + } + if (this.acceptIdent('supports')) { + if (this.accept(TokenType$1.ParenthesisL)) { + node.addChild(this._tryToParseDeclaration() || this._parseSupportsCondition()); + if (!this.accept(TokenType$1.ParenthesisR)) { + return this.finish(node, ParseError.RightParenthesisExpected, [TokenType$1.ParenthesisR], []); + } + } + } + if (!this.peek(TokenType$1.SemiColon) && !this.peek(TokenType$1.EOF)) { + node.setMedialist(this._parseMediaQueryList()); + } + return this.finish(node); + } + _parseNamespace() { + // http://www.w3.org/TR/css3-namespace/ + // namespace : NAMESPACE_SYM S* [IDENT S*]? [STRING|URI] S* ';' S* + if (!this.peekKeyword('@namespace')) { + return null; + } + const node = this.create(Namespace); + this.consumeToken(); // @namespace + if (!node.addChild(this._parseURILiteral())) { // url literal also starts with ident + node.addChild(this._parseIdent()); // optional prefix + if (!node.addChild(this._parseURILiteral()) && !node.addChild(this._parseStringLiteral())) { + return this.finish(node, ParseError.URIExpected, [TokenType$1.SemiColon]); + } + } + if (!this.accept(TokenType$1.SemiColon)) { + return this.finish(node, ParseError.SemiColonExpected); + } + return this.finish(node); + } + _parseFontFace() { + if (!this.peekKeyword('@font-face')) { + return null; + } + const node = this.create(FontFace); + this.consumeToken(); // @font-face + return this._parseBody(node, this._parseRuleSetDeclaration.bind(this)); + } + _parseViewPort() { + if (!this.peekKeyword('@-ms-viewport') && + !this.peekKeyword('@-o-viewport') && + !this.peekKeyword('@viewport')) { + return null; + } + const node = this.create(ViewPort); + this.consumeToken(); // @-ms-viewport + return this._parseBody(node, this._parseRuleSetDeclaration.bind(this)); + } + _parseKeyframe() { + if (!this.peekRegExp(TokenType$1.AtKeyword, this.keyframeRegex)) { + return null; + } + const node = this.create(Keyframe); + const atNode = this.create(Node$2); + this.consumeToken(); // atkeyword + node.setKeyword(this.finish(atNode)); + if (atNode.matches('@-ms-keyframes')) { // -ms-keyframes never existed + this.markError(atNode, ParseError.UnknownKeyword); + } + if (!node.setIdentifier(this._parseKeyframeIdent())) { + return this.finish(node, ParseError.IdentifierExpected, [TokenType$1.CurlyR]); + } + return this._parseBody(node, this._parseKeyframeSelector.bind(this)); + } + _parseKeyframeIdent() { + return this._parseIdent([ReferenceType.Keyframe]); + } + _parseKeyframeSelector() { + const node = this.create(KeyframeSelector); + let hasContent = false; + if (node.addChild(this._parseIdent())) { + hasContent = true; + } + if (this.accept(TokenType$1.Percentage)) { + hasContent = true; + } + if (!hasContent) { + return null; + } + while (this.accept(TokenType$1.Comma)) { + hasContent = false; + if (node.addChild(this._parseIdent())) { + hasContent = true; + } + if (this.accept(TokenType$1.Percentage)) { + hasContent = true; + } + if (!hasContent) { + return this.finish(node, ParseError.PercentageExpected); + } + } + return this._parseBody(node, this._parseRuleSetDeclaration.bind(this)); + } + _tryParseKeyframeSelector() { + const node = this.create(KeyframeSelector); + const pos = this.mark(); + let hasContent = false; + if (node.addChild(this._parseIdent())) { + hasContent = true; + } + if (this.accept(TokenType$1.Percentage)) { + hasContent = true; + } + if (!hasContent) { + return null; + } + while (this.accept(TokenType$1.Comma)) { + hasContent = false; + if (node.addChild(this._parseIdent())) { + hasContent = true; + } + if (this.accept(TokenType$1.Percentage)) { + hasContent = true; + } + if (!hasContent) { + this.restoreAtMark(pos); + return null; + } + } + if (!this.peek(TokenType$1.CurlyL)) { + this.restoreAtMark(pos); + return null; + } + return this._parseBody(node, this._parseRuleSetDeclaration.bind(this)); + } + _parsePropertyAtRule() { + // @property <custom-property-name> { + // <declaration-list> + // } + if (!this.peekKeyword('@property')) { + return null; + } + const node = this.create(PropertyAtRule); + this.consumeToken(); // @layer + if (!this.peekRegExp(TokenType$1.Ident, /^--/) || !node.setName(this._parseIdent([ReferenceType.Property]))) { + return this.finish(node, ParseError.IdentifierExpected); + } + return this._parseBody(node, this._parseDeclaration.bind(this)); + } + _parseLayer(isNested = false) { + // @layer layer-name {rules} + // @layer layer-name; + // @layer layer-name, layer-name, layer-name; + // @layer {rules} + if (!this.peekKeyword('@layer')) { + return null; + } + const node = this.create(Layer); + this.consumeToken(); // @layer + const names = this._parseLayerNameList(); + if (names) { + node.setNames(names); + } + if ((!names || names.getChildren().length === 1) && this.peek(TokenType$1.CurlyL)) { + return this._parseBody(node, this._parseLayerDeclaration.bind(this, isNested)); + } + if (!this.accept(TokenType$1.SemiColon)) { + return this.finish(node, ParseError.SemiColonExpected); + } + return this.finish(node); + } + _parseLayerDeclaration(isNested = false) { + if (isNested) { + // if nested, the body can contain rulesets, but also declarations + return this._tryParseRuleset(true) + || this._tryToParseDeclaration() + || this._parseStylesheetStatement(true); + } + return this._parseStylesheetStatement(false); + } + _parseLayerNameList() { + const node = this.createNode(NodeType.LayerNameList); + if (!node.addChild(this._parseLayerName())) { + return null; + } + while (this.accept(TokenType$1.Comma)) { + if (!node.addChild(this._parseLayerName())) { + return this.finish(node, ParseError.IdentifierExpected); + } + } + return this.finish(node); + } + _parseLayerName() { + // <layer-name> = <ident> [ '.' <ident> ]* + const node = this.createNode(NodeType.LayerName); + if (!node.addChild(this._parseIdent())) { + return null; + } + while (!this.hasWhitespace() && this.acceptDelim('.')) { + if (this.hasWhitespace() || !node.addChild(this._parseIdent())) { + return this.finish(node, ParseError.IdentifierExpected); + } + } + return this.finish(node); + } + _parseSupports(isNested = false) { + // SUPPORTS_SYM S* supports_condition '{' S* ruleset* '}' S* + if (!this.peekKeyword('@supports')) { + return null; + } + const node = this.create(Supports); + this.consumeToken(); // @supports + node.addChild(this._parseSupportsCondition()); + return this._parseBody(node, this._parseSupportsDeclaration.bind(this, isNested)); + } + _parseSupportsDeclaration(isNested = false) { + if (isNested) { + // if nested, the body can contain rulesets, but also declarations + return this._tryParseRuleset(true) + || this._tryToParseDeclaration() + || this._parseStylesheetStatement(true); + } + return this._parseStylesheetStatement(false); + } + _parseSupportsCondition() { + // supports_condition : supports_negation | supports_conjunction | supports_disjunction | supports_condition_in_parens ; + // supports_condition_in_parens: ( '(' S* supports_condition S* ')' ) | supports_declaration_condition | general_enclosed ; + // supports_negation: NOT S+ supports_condition_in_parens ; + // supports_conjunction: supports_condition_in_parens ( S+ AND S+ supports_condition_in_parens )+; + // supports_disjunction: supports_condition_in_parens ( S+ OR S+ supports_condition_in_parens )+; + // supports_declaration_condition: '(' S* declaration ')'; + // general_enclosed: ( FUNCTION | '(' ) ( any | unused )* ')' ; + const node = this.create(SupportsCondition); + if (this.acceptIdent('not')) { + node.addChild(this._parseSupportsConditionInParens()); + } + else { + node.addChild(this._parseSupportsConditionInParens()); + if (this.peekRegExp(TokenType$1.Ident, /^(and|or)$/i)) { + const text = this.token.text.toLowerCase(); + while (this.acceptIdent(text)) { + node.addChild(this._parseSupportsConditionInParens()); + } + } + } + return this.finish(node); + } + _parseSupportsConditionInParens() { + const node = this.create(SupportsCondition); + if (this.accept(TokenType$1.ParenthesisL)) { + if (this.prevToken) { + node.lParent = this.prevToken.offset; + } + if (!node.addChild(this._tryToParseDeclaration([TokenType$1.ParenthesisR]))) { + if (!this._parseSupportsCondition()) { + return this.finish(node, ParseError.ConditionExpected); + } + } + if (!this.accept(TokenType$1.ParenthesisR)) { + return this.finish(node, ParseError.RightParenthesisExpected, [TokenType$1.ParenthesisR], []); + } + if (this.prevToken) { + node.rParent = this.prevToken.offset; + } + return this.finish(node); + } + else if (this.peek(TokenType$1.Ident)) { + const pos = this.mark(); + this.consumeToken(); + if (!this.hasWhitespace() && this.accept(TokenType$1.ParenthesisL)) { + let openParentCount = 1; + while (this.token.type !== TokenType$1.EOF && openParentCount !== 0) { + if (this.token.type === TokenType$1.ParenthesisL) { + openParentCount++; + } + else if (this.token.type === TokenType$1.ParenthesisR) { + openParentCount--; + } + this.consumeToken(); + } + return this.finish(node); + } + else { + this.restoreAtMark(pos); + } + } + return this.finish(node, ParseError.LeftParenthesisExpected, [], [TokenType$1.ParenthesisL]); + } + _parseMediaDeclaration(isNested = false) { + if (isNested) { + // if nested, the body can contain rulesets, but also declarations + return this._tryParseRuleset(true) + || this._tryToParseDeclaration() + || this._parseStylesheetStatement(true); + } + return this._parseStylesheetStatement(false); + } + _parseMedia(isNested = false) { + // MEDIA_SYM S* media_query_list '{' S* ruleset* '}' S* + // media_query_list : S* [media_query [ ',' S* media_query ]* ]? + if (!this.peekKeyword('@media')) { + return null; + } + const node = this.create(Media); + this.consumeToken(); // @media + if (!node.addChild(this._parseMediaQueryList())) { + return this.finish(node, ParseError.MediaQueryExpected); + } + return this._parseBody(node, this._parseMediaDeclaration.bind(this, isNested)); + } + _parseMediaQueryList() { + const node = this.create(Medialist); + if (!node.addChild(this._parseMediaQuery())) { + return this.finish(node, ParseError.MediaQueryExpected); + } + while (this.accept(TokenType$1.Comma)) { + if (!node.addChild(this._parseMediaQuery())) { + return this.finish(node, ParseError.MediaQueryExpected); + } + } + return this.finish(node); + } + _parseMediaQuery() { + // <media-query> = <media-condition> | [ not | only ]? <media-type> [ and <media-condition-without-or> ]? + const node = this.create(MediaQuery); + const pos = this.mark(); + this.acceptIdent('not'); + if (!this.peek(TokenType$1.ParenthesisL)) { + if (this.acceptIdent('only')) ; + if (!node.addChild(this._parseIdent())) { + return null; + } + if (this.acceptIdent('and')) { + node.addChild(this._parseMediaCondition()); + } + } + else { + this.restoreAtMark(pos); // 'not' is part of the MediaCondition + node.addChild(this._parseMediaCondition()); + } + return this.finish(node); + } + _parseRatio() { + const pos = this.mark(); + const node = this.create(RatioValue); + if (!this._parseNumeric()) { + return null; + } + if (!this.acceptDelim('/')) { + this.restoreAtMark(pos); + return null; + } + if (!this._parseNumeric()) { + return this.finish(node, ParseError.NumberExpected); + } + return this.finish(node); + } + _parseMediaCondition() { + // <media-condition> = <media-not> | <media-and> | <media-or> | <media-in-parens> + // <media-not> = not <media-in-parens> + // <media-and> = <media-in-parens> [ and <media-in-parens> ]+ + // <media-or> = <media-in-parens> [ or <media-in-parens> ]+ + // <media-in-parens> = ( <media-condition> ) | <media-feature> | <general-enclosed> + const node = this.create(MediaCondition); + this.acceptIdent('not'); + let parseExpression = true; + while (parseExpression) { + if (!this.accept(TokenType$1.ParenthesisL)) { + return this.finish(node, ParseError.LeftParenthesisExpected, [], [TokenType$1.CurlyL]); + } + if (this.peek(TokenType$1.ParenthesisL) || this.peekIdent('not')) { + // <media-condition> + node.addChild(this._parseMediaCondition()); + } + else { + node.addChild(this._parseMediaFeature()); + } + // not yet implemented: general enclosed + if (!this.accept(TokenType$1.ParenthesisR)) { + return this.finish(node, ParseError.RightParenthesisExpected, [], [TokenType$1.CurlyL]); + } + parseExpression = this.acceptIdent('and') || this.acceptIdent('or'); + } + return this.finish(node); + } + _parseMediaFeature() { + const resyncStopToken = [TokenType$1.ParenthesisR]; + const node = this.create(MediaFeature); + // <media-feature> = ( [ <mf-plain> | <mf-boolean> | <mf-range> ] ) + // <mf-plain> = <mf-name> : <mf-value> + // <mf-boolean> = <mf-name> + // <mf-range> = <mf-name> [ '<' | '>' ]? '='? <mf-value> | <mf-value> [ '<' | '>' ]? '='? <mf-name> | <mf-value> '<' '='? <mf-name> '<' '='? <mf-value> | <mf-value> '>' '='? <mf-name> '>' '='? <mf-value> + if (node.addChild(this._parseMediaFeatureName())) { + if (this.accept(TokenType$1.Colon)) { + if (!node.addChild(this._parseMediaFeatureValue())) { + return this.finish(node, ParseError.TermExpected, [], resyncStopToken); + } + } + else if (this._parseMediaFeatureRangeOperator()) { + if (!node.addChild(this._parseMediaFeatureValue())) { + return this.finish(node, ParseError.TermExpected, [], resyncStopToken); + } + if (this._parseMediaFeatureRangeOperator()) { + if (!node.addChild(this._parseMediaFeatureValue())) { + return this.finish(node, ParseError.TermExpected, [], resyncStopToken); + } + } + } + else ; + } + else if (node.addChild(this._parseMediaFeatureValue())) { + if (!this._parseMediaFeatureRangeOperator()) { + return this.finish(node, ParseError.OperatorExpected, [], resyncStopToken); + } + if (!node.addChild(this._parseMediaFeatureName())) { + return this.finish(node, ParseError.IdentifierExpected, [], resyncStopToken); + } + if (this._parseMediaFeatureRangeOperator()) { + if (!node.addChild(this._parseMediaFeatureValue())) { + return this.finish(node, ParseError.TermExpected, [], resyncStopToken); + } + } + } + else { + return this.finish(node, ParseError.IdentifierExpected, [], resyncStopToken); + } + return this.finish(node); + } + _parseMediaFeatureRangeOperator() { + if (this.acceptDelim('<') || this.acceptDelim('>')) { + if (!this.hasWhitespace()) { + this.acceptDelim('='); + } + return true; + } + else if (this.acceptDelim('=')) { + return true; + } + return false; + } + _parseMediaFeatureName() { + return this._parseIdent(); + } + _parseMediaFeatureValue() { + return this._parseRatio() || this._parseTermExpression(); + } + _parseMedium() { + const node = this.create(Node$2); + if (node.addChild(this._parseIdent())) { + return this.finish(node); + } + else { + return null; + } + } + _parsePageDeclaration() { + return this._parsePageMarginBox() || this._parseRuleSetDeclaration(); + } + _parsePage() { + // http://www.w3.org/TR/css3-page/ + // page_rule : PAGE_SYM S* page_selector_list '{' S* page_body '}' S* + // page_body : /* Can be empty */ declaration? [ ';' S* page_body ]? | page_margin_box page_body + if (!this.peekKeyword('@page')) { + return null; + } + const node = this.create(Page); + this.consumeToken(); + if (node.addChild(this._parsePageSelector())) { + while (this.accept(TokenType$1.Comma)) { + if (!node.addChild(this._parsePageSelector())) { + return this.finish(node, ParseError.IdentifierExpected); + } + } + } + return this._parseBody(node, this._parsePageDeclaration.bind(this)); + } + _parsePageMarginBox() { + // page_margin_box : margin_sym S* '{' S* declaration? [ ';' S* declaration? ]* '}' S* + if (!this.peek(TokenType$1.AtKeyword)) { + return null; + } + const node = this.create(PageBoxMarginBox); + if (!this.acceptOneKeyword(pageBoxDirectives)) { + this.markError(node, ParseError.UnknownAtRule, [], [TokenType$1.CurlyL]); + } + return this._parseBody(node, this._parseRuleSetDeclaration.bind(this)); + } + _parsePageSelector() { + // page_selector : pseudo_page+ | IDENT pseudo_page* + // pseudo_page : ':' [ "left" | "right" | "first" | "blank" ]; + if (!this.peek(TokenType$1.Ident) && !this.peek(TokenType$1.Colon)) { + return null; + } + const node = this.create(Node$2); + node.addChild(this._parseIdent()); // optional ident + if (this.accept(TokenType$1.Colon)) { + if (!node.addChild(this._parseIdent())) { // optional ident + return this.finish(node, ParseError.IdentifierExpected); + } + } + return this.finish(node); + } + _parseDocument() { + // -moz-document is experimental but has been pushed to css4 + if (!this.peekKeyword('@-moz-document')) { + return null; + } + const node = this.create(Document); + this.consumeToken(); // @-moz-document + this.resync([], [TokenType$1.CurlyL]); // ignore all the rules + return this._parseBody(node, this._parseStylesheetStatement.bind(this)); + } + _parseContainer() { + if (!this.peekKeyword('@container')) { + return null; + } + const node = this.create(Container$1); + this.consumeToken(); // @container + node.addChild(this._parseIdent()); // optional container name + node.addChild(this._parseContainerQuery()); + return this._parseBody(node, this._parseStylesheetStatement.bind(this)); + } + _parseContainerQuery() { + // <container-query> = not <query-in-parens> + // | <query-in-parens> [ [ and <query-in-parens> ]* | [ or <query-in-parens> ]* ] + const node = this.create(Node$2); + if (this.acceptIdent('not')) { + node.addChild(this._parseContainerQueryInParens()); + } + else { + node.addChild(this._parseContainerQueryInParens()); + if (this.peekIdent('and')) { + while (this.acceptIdent('and')) { + node.addChild(this._parseContainerQueryInParens()); + } + } + else if (this.peekIdent('or')) { + while (this.acceptIdent('or')) { + node.addChild(this._parseContainerQueryInParens()); + } + } + } + return this.finish(node); + } + _parseContainerQueryInParens() { + // <query-in-parens> = ( <container-query> ) + // | ( <size-feature> ) + // | style( <style-query> ) + // | <general-enclosed> + const node = this.create(Node$2); + if (this.accept(TokenType$1.ParenthesisL)) { + if (this.peekIdent('not') || this.peek(TokenType$1.ParenthesisL)) { + node.addChild(this._parseContainerQuery()); + } + else { + node.addChild(this._parseMediaFeature()); + } + if (!this.accept(TokenType$1.ParenthesisR)) { + return this.finish(node, ParseError.RightParenthesisExpected, [], [TokenType$1.CurlyL]); + } + } + else if (this.acceptIdent('style')) { + if (this.hasWhitespace() || !this.accept(TokenType$1.ParenthesisL)) { + return this.finish(node, ParseError.LeftParenthesisExpected, [], [TokenType$1.CurlyL]); + } + node.addChild(this._parseStyleQuery()); + if (!this.accept(TokenType$1.ParenthesisR)) { + return this.finish(node, ParseError.RightParenthesisExpected, [], [TokenType$1.CurlyL]); + } + } + else { + return this.finish(node, ParseError.LeftParenthesisExpected, [], [TokenType$1.CurlyL]); + } + return this.finish(node); + } + _parseStyleQuery() { + // <style-query> = not <style-in-parens> + // | <style-in-parens> [ [ and <style-in-parens> ]* | [ or <style-in-parens> ]* ] + // | <style-feature> + // <style-in-parens> = ( <style-query> ) + // | ( <style-feature> ) + // | <general-enclosed> + const node = this.create(Node$2); + if (this.acceptIdent('not')) { + node.addChild(this._parseStyleInParens()); + } + else if (this.peek(TokenType$1.ParenthesisL)) { + node.addChild(this._parseStyleInParens()); + if (this.peekIdent('and')) { + while (this.acceptIdent('and')) { + node.addChild(this._parseStyleInParens()); + } + } + else if (this.peekIdent('or')) { + while (this.acceptIdent('or')) { + node.addChild(this._parseStyleInParens()); + } + } + } + else { + node.addChild(this._parseDeclaration([TokenType$1.ParenthesisR])); + } + return this.finish(node); + } + _parseStyleInParens() { + const node = this.create(Node$2); + if (this.accept(TokenType$1.ParenthesisL)) { + node.addChild(this._parseStyleQuery()); + if (!this.accept(TokenType$1.ParenthesisR)) { + return this.finish(node, ParseError.RightParenthesisExpected, [], [TokenType$1.CurlyL]); + } + } + else { + return this.finish(node, ParseError.LeftParenthesisExpected, [], [TokenType$1.CurlyL]); + } + return this.finish(node); + } + // https://www.w3.org/TR/css-syntax-3/#consume-an-at-rule + _parseUnknownAtRule() { + if (!this.peek(TokenType$1.AtKeyword)) { + return null; + } + const node = this.create(UnknownAtRule); + node.addChild(this._parseUnknownAtRuleName()); + const isTopLevel = () => curlyDepth === 0 && parensDepth === 0 && bracketsDepth === 0; + let curlyLCount = 0; + let curlyDepth = 0; + let parensDepth = 0; + let bracketsDepth = 0; + done: while (true) { + switch (this.token.type) { + case TokenType$1.SemiColon: + if (isTopLevel()) { + break done; + } + break; + case TokenType$1.EOF: + if (curlyDepth > 0) { + return this.finish(node, ParseError.RightCurlyExpected); + } + else if (bracketsDepth > 0) { + return this.finish(node, ParseError.RightSquareBracketExpected); + } + else if (parensDepth > 0) { + return this.finish(node, ParseError.RightParenthesisExpected); + } + else { + return this.finish(node); + } + case TokenType$1.CurlyL: + curlyLCount++; + curlyDepth++; + break; + case TokenType$1.CurlyR: + curlyDepth--; + // End of at-rule, consume CurlyR and return node + if (curlyLCount > 0 && curlyDepth === 0) { + this.consumeToken(); + if (bracketsDepth > 0) { + return this.finish(node, ParseError.RightSquareBracketExpected); + } + else if (parensDepth > 0) { + return this.finish(node, ParseError.RightParenthesisExpected); + } + break done; + } + if (curlyDepth < 0) { + // The property value has been terminated without a semicolon, and + // this is the last declaration in the ruleset. + if (parensDepth === 0 && bracketsDepth === 0) { + break done; + } + return this.finish(node, ParseError.LeftCurlyExpected); + } + break; + case TokenType$1.ParenthesisL: + parensDepth++; + break; + case TokenType$1.ParenthesisR: + parensDepth--; + if (parensDepth < 0) { + return this.finish(node, ParseError.LeftParenthesisExpected); + } + break; + case TokenType$1.BracketL: + bracketsDepth++; + break; + case TokenType$1.BracketR: + bracketsDepth--; + if (bracketsDepth < 0) { + return this.finish(node, ParseError.LeftSquareBracketExpected); + } + break; + } + this.consumeToken(); + } + return node; + } + _parseUnknownAtRuleName() { + const node = this.create(Node$2); + if (this.accept(TokenType$1.AtKeyword)) { + return this.finish(node); + } + return node; + } + _parseOperator() { + // these are operators for binary expressions + if (this.peekDelim('/') || + this.peekDelim('*') || + this.peekDelim('+') || + this.peekDelim('-') || + this.peek(TokenType$1.Dashmatch) || + this.peek(TokenType$1.Includes) || + this.peek(TokenType$1.SubstringOperator) || + this.peek(TokenType$1.PrefixOperator) || + this.peek(TokenType$1.SuffixOperator) || + this.peekDelim('=')) { // doesn't stick to the standard here + const node = this.createNode(NodeType.Operator); + this.consumeToken(); + return this.finish(node); + } + else { + return null; + } + } + _parseUnaryOperator() { + if (!this.peekDelim('+') && !this.peekDelim('-')) { + return null; + } + const node = this.create(Node$2); + this.consumeToken(); + return this.finish(node); + } + _parseCombinator() { + if (this.peekDelim('>')) { + const node = this.create(Node$2); + this.consumeToken(); + const mark = this.mark(); + if (!this.hasWhitespace() && this.acceptDelim('>')) { + if (!this.hasWhitespace() && this.acceptDelim('>')) { + node.type = NodeType.SelectorCombinatorShadowPiercingDescendant; + return this.finish(node); + } + this.restoreAtMark(mark); + } + node.type = NodeType.SelectorCombinatorParent; + return this.finish(node); + } + else if (this.peekDelim('+')) { + const node = this.create(Node$2); + this.consumeToken(); + node.type = NodeType.SelectorCombinatorSibling; + return this.finish(node); + } + else if (this.peekDelim('~')) { + const node = this.create(Node$2); + this.consumeToken(); + node.type = NodeType.SelectorCombinatorAllSiblings; + return this.finish(node); + } + else if (this.peekDelim('/')) { + const node = this.create(Node$2); + this.consumeToken(); + const mark = this.mark(); + if (!this.hasWhitespace() && this.acceptIdent('deep') && !this.hasWhitespace() && this.acceptDelim('/')) { + node.type = NodeType.SelectorCombinatorShadowPiercingDescendant; + return this.finish(node); + } + this.restoreAtMark(mark); + } + return null; + } + _parseSimpleSelector() { + // simple_selector + // : element_name [ HASH | class | attrib | pseudo ]* | [ HASH | class | attrib | pseudo ]+ ; + const node = this.create(SimpleSelector); + let c = 0; + if (node.addChild(this._parseElementName() || this._parseNestingSelector())) { + c++; + } + while ((c === 0 || !this.hasWhitespace()) && node.addChild(this._parseSimpleSelectorBody())) { + c++; + } + return c > 0 ? this.finish(node) : null; + } + _parseNestingSelector() { + if (this.peekDelim('&')) { + const node = this.createNode(NodeType.SelectorCombinator); + this.consumeToken(); + return this.finish(node); + } + return null; + } + _parseSimpleSelectorBody() { + return this._parsePseudo() || this._parseHash() || this._parseClass() || this._parseAttrib(); + } + _parseSelectorIdent() { + return this._parseIdent(); + } + _parseHash() { + if (!this.peek(TokenType$1.Hash) && !this.peekDelim('#')) { + return null; + } + const node = this.createNode(NodeType.IdentifierSelector); + if (this.acceptDelim('#')) { + if (this.hasWhitespace() || !node.addChild(this._parseSelectorIdent())) { + return this.finish(node, ParseError.IdentifierExpected); + } + } + else { + this.consumeToken(); // TokenType.Hash + } + return this.finish(node); + } + _parseClass() { + // class: '.' IDENT ; + if (!this.peekDelim('.')) { + return null; + } + const node = this.createNode(NodeType.ClassSelector); + this.consumeToken(); // '.' + if (this.hasWhitespace() || !node.addChild(this._parseSelectorIdent())) { + return this.finish(node, ParseError.IdentifierExpected); + } + return this.finish(node); + } + _parseElementName() { + // element_name: (ns? '|')? IDENT | '*'; + const pos = this.mark(); + const node = this.createNode(NodeType.ElementNameSelector); + node.addChild(this._parseNamespacePrefix()); + if (!node.addChild(this._parseSelectorIdent()) && !this.acceptDelim('*')) { + this.restoreAtMark(pos); + return null; + } + return this.finish(node); + } + _parseNamespacePrefix() { + const pos = this.mark(); + const node = this.createNode(NodeType.NamespacePrefix); + if (!node.addChild(this._parseIdent()) && !this.acceptDelim('*')) ; + if (!this.acceptDelim('|')) { + this.restoreAtMark(pos); + return null; + } + return this.finish(node); + } + _parseAttrib() { + // attrib : '[' S* IDENT S* [ [ '=' | INCLUDES | DASHMATCH ] S* [ IDENT | STRING ] S* ]? ']' + if (!this.peek(TokenType$1.BracketL)) { + return null; + } + const node = this.create(AttributeSelector); + this.consumeToken(); // BracketL + // Optional attrib namespace + node.setNamespacePrefix(this._parseNamespacePrefix()); + if (!node.setIdentifier(this._parseIdent())) { + return this.finish(node, ParseError.IdentifierExpected); + } + if (node.setOperator(this._parseOperator())) { + node.setValue(this._parseBinaryExpr()); + this.acceptIdent('i'); // case insensitive matching + this.acceptIdent('s'); // case sensitive matching + } + if (!this.accept(TokenType$1.BracketR)) { + return this.finish(node, ParseError.RightSquareBracketExpected); + } + return this.finish(node); + } + _parsePseudo() { + // pseudo: ':' [ IDENT | FUNCTION S* [IDENT S*]? ')' ] + const node = this._tryParsePseudoIdentifier(); + if (node) { + if (!this.hasWhitespace() && this.accept(TokenType$1.ParenthesisL)) { + const tryAsSelector = () => { + const selectors = this.create(Node$2); + if (!selectors.addChild(this._parseSelector(true))) { + return null; + } + while (this.accept(TokenType$1.Comma) && selectors.addChild(this._parseSelector(true))) { + // loop + } + if (this.peek(TokenType$1.ParenthesisR)) { + return this.finish(selectors); + } + return null; + }; + let hasSelector = node.addChild(this.try(tryAsSelector)); + if (!hasSelector) { + if (node.addChild(this._parseBinaryExpr()) && + this.acceptIdent('of') && + !node.addChild(this.try(tryAsSelector))) { + return this.finish(node, ParseError.SelectorExpected); + } + } + if (!this.accept(TokenType$1.ParenthesisR)) { + return this.finish(node, ParseError.RightParenthesisExpected); + } + } + return this.finish(node); + } + return null; + } + _tryParsePseudoIdentifier() { + if (!this.peek(TokenType$1.Colon)) { + return null; + } + const pos = this.mark(); + const node = this.createNode(NodeType.PseudoSelector); + this.consumeToken(); // Colon + if (this.hasWhitespace()) { + this.restoreAtMark(pos); + return null; + } + // optional, support :: + this.accept(TokenType$1.Colon); + if (this.hasWhitespace() || !node.addChild(this._parseIdent())) { + return this.finish(node, ParseError.IdentifierExpected); + } + return this.finish(node); + } + _tryParsePrio() { + const mark = this.mark(); + const prio = this._parsePrio(); + if (prio) { + return prio; + } + this.restoreAtMark(mark); + return null; + } + _parsePrio() { + if (!this.peek(TokenType$1.Exclamation)) { + return null; + } + const node = this.createNode(NodeType.Prio); + if (this.accept(TokenType$1.Exclamation) && this.acceptIdent('important')) { + return this.finish(node); + } + return null; + } + _parseExpr(stopOnComma = false) { + const node = this.create(Expression); + if (!node.addChild(this._parseBinaryExpr())) { + return null; + } + while (true) { + if (this.peek(TokenType$1.Comma)) { // optional + if (stopOnComma) { + return this.finish(node); + } + this.consumeToken(); + } + if (!node.addChild(this._parseBinaryExpr())) { + break; + } + } + return this.finish(node); + } + _parseUnicodeRange() { + if (!this.peekIdent('u')) { + return null; + } + const node = this.create(UnicodeRange); + if (!this.acceptUnicodeRange()) { + return null; + } + return this.finish(node); + } + _parseNamedLine() { + // https://www.w3.org/TR/css-grid-1/#named-lines + if (!this.peek(TokenType$1.BracketL)) { + return null; + } + const node = this.createNode(NodeType.GridLine); + this.consumeToken(); + while (node.addChild(this._parseIdent())) { + // repeat + } + if (!this.accept(TokenType$1.BracketR)) { + return this.finish(node, ParseError.RightSquareBracketExpected); + } + return this.finish(node); + } + _parseBinaryExpr(preparsedLeft, preparsedOper) { + let node = this.create(BinaryExpression); + if (!node.setLeft((preparsedLeft || this._parseTerm()))) { + return null; + } + if (!node.setOperator(preparsedOper || this._parseOperator())) { + return this.finish(node); + } + if (!node.setRight(this._parseTerm())) { + return this.finish(node, ParseError.TermExpected); + } + // things needed for multiple binary expressions + node = this.finish(node); + const operator = this._parseOperator(); + if (operator) { + node = this._parseBinaryExpr(node, operator); + } + return this.finish(node); + } + _parseTerm() { + let node = this.create(Term); + node.setOperator(this._parseUnaryOperator()); // optional + if (node.setExpression(this._parseTermExpression())) { + return this.finish(node); + } + return null; + } + _parseTermExpression() { + return this._parseURILiteral() || // url before function + this._parseUnicodeRange() || + this._parseFunction() || // function before ident + this._parseIdent() || + this._parseStringLiteral() || + this._parseNumeric() || + this._parseHexColor() || + this._parseOperation() || + this._parseNamedLine(); + } + _parseOperation() { + if (!this.peek(TokenType$1.ParenthesisL)) { + return null; + } + const node = this.create(Node$2); + this.consumeToken(); // ParenthesisL + node.addChild(this._parseExpr()); + if (!this.accept(TokenType$1.ParenthesisR)) { + return this.finish(node, ParseError.RightParenthesisExpected); + } + return this.finish(node); + } + _parseNumeric() { + if (this.peek(TokenType$1.Num) || + this.peek(TokenType$1.Percentage) || + this.peek(TokenType$1.Resolution) || + this.peek(TokenType$1.Length) || + this.peek(TokenType$1.EMS) || + this.peek(TokenType$1.EXS) || + this.peek(TokenType$1.Angle) || + this.peek(TokenType$1.Time) || + this.peek(TokenType$1.Dimension) || + this.peek(TokenType$1.ContainerQueryLength) || + this.peek(TokenType$1.Freq)) { + const node = this.create(NumericValue); + this.consumeToken(); + return this.finish(node); + } + return null; + } + _parseStringLiteral() { + if (!this.peek(TokenType$1.String) && !this.peek(TokenType$1.BadString)) { + return null; + } + const node = this.createNode(NodeType.StringLiteral); + this.consumeToken(); + return this.finish(node); + } + _parseURILiteral() { + if (!this.peekRegExp(TokenType$1.Ident, /^url(-prefix)?$/i)) { + return null; + } + const pos = this.mark(); + const node = this.createNode(NodeType.URILiteral); + this.accept(TokenType$1.Ident); + if (this.hasWhitespace() || !this.peek(TokenType$1.ParenthesisL)) { + this.restoreAtMark(pos); + return null; + } + this.scanner.inURL = true; + this.consumeToken(); // consume () + node.addChild(this._parseURLArgument()); // argument is optional + this.scanner.inURL = false; + if (!this.accept(TokenType$1.ParenthesisR)) { + return this.finish(node, ParseError.RightParenthesisExpected); + } + return this.finish(node); + } + _parseURLArgument() { + const node = this.create(Node$2); + if (!this.accept(TokenType$1.String) && !this.accept(TokenType$1.BadString) && !this.acceptUnquotedString()) { + return null; + } + return this.finish(node); + } + _parseIdent(referenceTypes) { + if (!this.peek(TokenType$1.Ident)) { + return null; + } + const node = this.create(Identifier); + if (referenceTypes) { + node.referenceTypes = referenceTypes; + } + node.isCustomProperty = this.peekRegExp(TokenType$1.Ident, /^--/); + this.consumeToken(); + return this.finish(node); + } + _parseFunction() { + const pos = this.mark(); + const node = this.create(Function$1); + if (!node.setIdentifier(this._parseFunctionIdentifier())) { + return null; + } + if (this.hasWhitespace() || !this.accept(TokenType$1.ParenthesisL)) { + this.restoreAtMark(pos); + return null; + } + if (node.getArguments().addChild(this._parseFunctionArgument())) { + while (this.accept(TokenType$1.Comma)) { + if (this.peek(TokenType$1.ParenthesisR)) { + break; + } + if (!node.getArguments().addChild(this._parseFunctionArgument())) { + this.markError(node, ParseError.ExpressionExpected); + } + } + } + if (!this.accept(TokenType$1.ParenthesisR)) { + return this.finish(node, ParseError.RightParenthesisExpected); + } + return this.finish(node); + } + _parseFunctionIdentifier() { + if (!this.peek(TokenType$1.Ident)) { + return null; + } + const node = this.create(Identifier); + node.referenceTypes = [ReferenceType.Function]; + if (this.acceptIdent('progid')) { + // support for IE7 specific filters: 'progid:DXImageTransform.Microsoft.MotionBlur(strength=13, direction=310)' + if (this.accept(TokenType$1.Colon)) { + while (this.accept(TokenType$1.Ident) && this.acceptDelim('.')) { + // loop + } + } + return this.finish(node); + } + this.consumeToken(); + return this.finish(node); + } + _parseFunctionArgument() { + const node = this.create(FunctionArgument); + if (node.setValue(this._parseExpr(true))) { + return this.finish(node); + } + return null; + } + _parseHexColor() { + if (this.peekRegExp(TokenType$1.Hash, /^#([A-Fa-f0-9]{3}|[A-Fa-f0-9]{4}|[A-Fa-f0-9]{6}|[A-Fa-f0-9]{8})$/g)) { + const node = this.create(HexColorValue); + this.consumeToken(); + return this.finish(node); + } + else { + return null; + } + } +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +/** + * Takes a sorted array and a function p. The array is sorted in such a way that all elements where p(x) is false + * are located before all elements where p(x) is true. + * @returns the least x for which p(x) is true or array.length if no element fullfills the given function. + */ +function findFirst$1(array, p) { + let low = 0, high = array.length; + if (high === 0) { + return 0; // no children + } + while (low < high) { + let mid = Math.floor((low + high) / 2); + if (p(array[mid])) { + high = mid; + } + else { + low = mid + 1; + } + } + return low; +} +function includes(array, item) { + return array.indexOf(item) !== -1; +} +function union(...arrays) { + const result = []; + for (const array of arrays) { + for (const item of array) { + if (!includes(result, item)) { + result.push(item); + } + } + } + return result; +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +class Scope { + constructor(offset, length) { + this.offset = offset; + this.length = length; + this.symbols = []; + this.parent = null; + this.children = []; + } + addChild(scope) { + this.children.push(scope); + scope.setParent(this); + } + setParent(scope) { + this.parent = scope; + } + findScope(offset, length = 0) { + if (this.offset <= offset && this.offset + this.length > offset + length || this.offset === offset && this.length === length) { + return this.findInScope(offset, length); + } + return null; + } + findInScope(offset, length = 0) { + // find the first scope child that has an offset larger than offset + length + const end = offset + length; + const idx = findFirst$1(this.children, s => s.offset > end); + if (idx === 0) { + // all scopes have offsets larger than our end + return this; + } + const res = this.children[idx - 1]; + if (res.offset <= offset && res.offset + res.length >= offset + length) { + return res.findInScope(offset, length); + } + return this; + } + addSymbol(symbol) { + this.symbols.push(symbol); + } + getSymbol(name, type) { + for (let index = 0; index < this.symbols.length; index++) { + const symbol = this.symbols[index]; + if (symbol.name === name && symbol.type === type) { + return symbol; + } + } + return null; + } + getSymbols() { + return this.symbols; + } +} +class GlobalScope extends Scope { + constructor() { + super(0, Number.MAX_VALUE); + } +} +let Symbol$1 = class Symbol { + constructor(name, value, node, type) { + this.name = name; + this.value = value; + this.node = node; + this.type = type; + } +}; +class ScopeBuilder { + constructor(scope) { + this.scope = scope; + } + addSymbol(node, name, value, type) { + if (node.offset !== -1) { + const current = this.scope.findScope(node.offset, node.length); + if (current) { + current.addSymbol(new Symbol$1(name, value, node, type)); + } + } + } + addScope(node) { + if (node.offset !== -1) { + const current = this.scope.findScope(node.offset, node.length); + if (current && (current.offset !== node.offset || current.length !== node.length)) { // scope already known? + const newScope = new Scope(node.offset, node.length); + current.addChild(newScope); + return newScope; + } + return current; + } + return null; + } + addSymbolToChildScope(scopeNode, node, name, value, type) { + if (scopeNode && scopeNode.offset !== -1) { + const current = this.addScope(scopeNode); // create the scope or gets the existing one + if (current) { + current.addSymbol(new Symbol$1(name, value, node, type)); + } + } + } + visitNode(node) { + switch (node.type) { + case NodeType.Keyframe: + this.addSymbol(node, node.getName(), void 0, ReferenceType.Keyframe); + return true; + case NodeType.CustomPropertyDeclaration: + return this.visitCustomPropertyDeclarationNode(node); + case NodeType.VariableDeclaration: + return this.visitVariableDeclarationNode(node); + case NodeType.Ruleset: + return this.visitRuleSet(node); + case NodeType.MixinDeclaration: + this.addSymbol(node, node.getName(), void 0, ReferenceType.Mixin); + return true; + case NodeType.FunctionDeclaration: + this.addSymbol(node, node.getName(), void 0, ReferenceType.Function); + return true; + case NodeType.FunctionParameter: { + return this.visitFunctionParameterNode(node); + } + case NodeType.Declarations: + this.addScope(node); + return true; + case NodeType.For: + const forNode = node; + const scopeNode = forNode.getDeclarations(); + if (scopeNode && forNode.variable) { + this.addSymbolToChildScope(scopeNode, forNode.variable, forNode.variable.getName(), void 0, ReferenceType.Variable); + } + return true; + case NodeType.Each: { + const eachNode = node; + const scopeNode = eachNode.getDeclarations(); + if (scopeNode) { + const variables = eachNode.getVariables().getChildren(); + for (const variable of variables) { + this.addSymbolToChildScope(scopeNode, variable, variable.getName(), void 0, ReferenceType.Variable); + } + } + return true; + } + } + return true; + } + visitRuleSet(node) { + const current = this.scope.findScope(node.offset, node.length); + if (current) { + for (const child of node.getSelectors().getChildren()) { + if (child instanceof Selector) { + if (child.getChildren().length === 1) { // only selectors with a single element can be extended + current.addSymbol(new Symbol$1(child.getChild(0).getText(), void 0, child, ReferenceType.Rule)); + } + } + } + } + return true; + } + visitVariableDeclarationNode(node) { + const value = node.getValue() ? node.getValue().getText() : void 0; + this.addSymbol(node, node.getName(), value, ReferenceType.Variable); + return true; + } + visitFunctionParameterNode(node) { + // parameters are part of the body scope + const scopeNode = node.getParent().getDeclarations(); + if (scopeNode) { + const valueNode = node.getDefaultValue(); + const value = valueNode ? valueNode.getText() : void 0; + this.addSymbolToChildScope(scopeNode, node, node.getName(), value, ReferenceType.Variable); + } + return true; + } + visitCustomPropertyDeclarationNode(node) { + const value = node.getValue() ? node.getValue().getText() : ''; + this.addCSSVariable(node.getProperty(), node.getProperty().getName(), value, ReferenceType.Variable); + return true; + } + addCSSVariable(node, name, value, type) { + if (node.offset !== -1) { + this.scope.addSymbol(new Symbol$1(name, value, node, type)); + } + } +} +class Symbols { + constructor(node) { + this.global = new GlobalScope(); + node.acceptVisitor(new ScopeBuilder(this.global)); + } + findSymbolsAtOffset(offset, referenceType) { + let scope = this.global.findScope(offset, 0); + const result = []; + const names = {}; + while (scope) { + const symbols = scope.getSymbols(); + for (let i = 0; i < symbols.length; i++) { + const symbol = symbols[i]; + if (symbol.type === referenceType && !names[symbol.name]) { + result.push(symbol); + names[symbol.name] = true; + } + } + scope = scope.parent; + } + return result; + } + internalFindSymbol(node, referenceTypes) { + let scopeNode = node; + if (node.parent instanceof FunctionParameter && node.parent.getParent() instanceof BodyDeclaration) { + scopeNode = node.parent.getParent().getDeclarations(); + } + if (node.parent instanceof FunctionArgument && node.parent.getParent() instanceof Function$1) { + const funcId = node.parent.getParent().getIdentifier(); + if (funcId) { + const functionSymbol = this.internalFindSymbol(funcId, [ReferenceType.Function]); + if (functionSymbol) { + scopeNode = functionSymbol.node.getDeclarations(); + } + } + } + if (!scopeNode) { + return null; + } + const name = node.getText(); + let scope = this.global.findScope(scopeNode.offset, scopeNode.length); + while (scope) { + for (let index = 0; index < referenceTypes.length; index++) { + const type = referenceTypes[index]; + const symbol = scope.getSymbol(name, type); + if (symbol) { + return symbol; + } + } + scope = scope.parent; + } + return null; + } + evaluateReferenceTypes(node) { + if (node instanceof Identifier) { + const referenceTypes = node.referenceTypes; + if (referenceTypes) { + return referenceTypes; + } + else { + if (node.isCustomProperty) { + return [ReferenceType.Variable]; + } + // are a reference to a keyframe? + const decl = getParentDeclaration(node); + if (decl) { + const propertyName = decl.getNonPrefixedPropertyName(); + if ((propertyName === 'animation' || propertyName === 'animation-name') + && decl.getValue() && decl.getValue().offset === node.offset) { + return [ReferenceType.Keyframe]; + } + } + } + } + else if (node instanceof Variable) { + return [ReferenceType.Variable]; + } + const selector = node.findAParent(NodeType.Selector, NodeType.ExtendsReference); + if (selector) { + return [ReferenceType.Rule]; + } + return null; + } + findSymbolFromNode(node) { + if (!node) { + return null; + } + while (node.type === NodeType.Interpolation) { + node = node.getParent(); + } + const referenceTypes = this.evaluateReferenceTypes(node); + if (referenceTypes) { + return this.internalFindSymbol(node, referenceTypes); + } + return null; + } + matchesSymbol(node, symbol) { + if (!node) { + return false; + } + while (node.type === NodeType.Interpolation) { + node = node.getParent(); + } + if (!node.matches(symbol.name)) { + return false; + } + const referenceTypes = this.evaluateReferenceTypes(node); + if (!referenceTypes || referenceTypes.indexOf(symbol.type) === -1) { + return false; + } + const nodeSymbol = this.internalFindSymbol(node, referenceTypes); + return nodeSymbol === symbol; + } + findSymbol(name, type, offset) { + let scope = this.global.findScope(offset); + while (scope) { + const symbol = scope.getSymbol(name, type); + if (symbol) { + return symbol; + } + scope = scope.parent; + } + return null; + } +} + +var LIB;(()=>{var t={470:t=>{function e(t){if("string"!=typeof t)throw new TypeError("Path must be a string. Received "+JSON.stringify(t))}function r(t,e){for(var r,n="",i=0,o=-1,s=0,h=0;h<=t.length;++h){if(h<t.length)r=t.charCodeAt(h);else {if(47===r)break;r=47;}if(47===r){if(o===h-1||1===s);else if(o!==h-1&&2===s){if(n.length<2||2!==i||46!==n.charCodeAt(n.length-1)||46!==n.charCodeAt(n.length-2))if(n.length>2){var a=n.lastIndexOf("/");if(a!==n.length-1){-1===a?(n="",i=0):i=(n=n.slice(0,a)).length-1-n.lastIndexOf("/"),o=h,s=0;continue}}else if(2===n.length||1===n.length){n="",i=0,o=h,s=0;continue}e&&(n.length>0?n+="/..":n="..",i=2);}else n.length>0?n+="/"+t.slice(o+1,h):n=t.slice(o+1,h),i=h-o-1;o=h,s=0;}else 46===r&&-1!==s?++s:s=-1;}return n}var n={resolve:function(){for(var t,n="",i=!1,o=arguments.length-1;o>=-1&&!i;o--){var s;o>=0?s=arguments[o]:(void 0===t&&(t=process.cwd()),s=t),e(s),0!==s.length&&(n=s+"/"+n,i=47===s.charCodeAt(0));}return n=r(n,!i),i?n.length>0?"/"+n:"/":n.length>0?n:"."},normalize:function(t){if(e(t),0===t.length)return ".";var n=47===t.charCodeAt(0),i=47===t.charCodeAt(t.length-1);return 0!==(t=r(t,!n)).length||n||(t="."),t.length>0&&i&&(t+="/"),n?"/"+t:t},isAbsolute:function(t){return e(t),t.length>0&&47===t.charCodeAt(0)},join:function(){if(0===arguments.length)return ".";for(var t,r=0;r<arguments.length;++r){var i=arguments[r];e(i),i.length>0&&(void 0===t?t=i:t+="/"+i);}return void 0===t?".":n.normalize(t)},relative:function(t,r){if(e(t),e(r),t===r)return "";if((t=n.resolve(t))===(r=n.resolve(r)))return "";for(var i=1;i<t.length&&47===t.charCodeAt(i);++i);for(var o=t.length,s=o-i,h=1;h<r.length&&47===r.charCodeAt(h);++h);for(var a=r.length-h,c=s<a?s:a,f=-1,u=0;u<=c;++u){if(u===c){if(a>c){if(47===r.charCodeAt(h+u))return r.slice(h+u+1);if(0===u)return r.slice(h+u)}else s>c&&(47===t.charCodeAt(i+u)?f=u:0===u&&(f=0));break}var l=t.charCodeAt(i+u);if(l!==r.charCodeAt(h+u))break;47===l&&(f=u);}var g="";for(u=i+f+1;u<=o;++u)u!==o&&47!==t.charCodeAt(u)||(0===g.length?g+="..":g+="/..");return g.length>0?g+r.slice(h+f):(h+=f,47===r.charCodeAt(h)&&++h,r.slice(h))},_makeLong:function(t){return t},dirname:function(t){if(e(t),0===t.length)return ".";for(var r=t.charCodeAt(0),n=47===r,i=-1,o=!0,s=t.length-1;s>=1;--s)if(47===(r=t.charCodeAt(s))){if(!o){i=s;break}}else o=!1;return -1===i?n?"/":".":n&&1===i?"//":t.slice(0,i)},basename:function(t,r){if(void 0!==r&&"string"!=typeof r)throw new TypeError('"ext" argument must be a string');e(t);var n,i=0,o=-1,s=!0;if(void 0!==r&&r.length>0&&r.length<=t.length){if(r.length===t.length&&r===t)return "";var h=r.length-1,a=-1;for(n=t.length-1;n>=0;--n){var c=t.charCodeAt(n);if(47===c){if(!s){i=n+1;break}}else -1===a&&(s=!1,a=n+1),h>=0&&(c===r.charCodeAt(h)?-1==--h&&(o=n):(h=-1,o=a));}return i===o?o=a:-1===o&&(o=t.length),t.slice(i,o)}for(n=t.length-1;n>=0;--n)if(47===t.charCodeAt(n)){if(!s){i=n+1;break}}else -1===o&&(s=!1,o=n+1);return -1===o?"":t.slice(i,o)},extname:function(t){e(t);for(var r=-1,n=0,i=-1,o=!0,s=0,h=t.length-1;h>=0;--h){var a=t.charCodeAt(h);if(47!==a)-1===i&&(o=!1,i=h+1),46===a?-1===r?r=h:1!==s&&(s=1):-1!==r&&(s=-1);else if(!o){n=h+1;break}}return -1===r||-1===i||0===s||1===s&&r===i-1&&r===n+1?"":t.slice(r,i)},format:function(t){if(null===t||"object"!=typeof t)throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof t);return function(t,e){var r=e.dir||e.root,n=e.base||(e.name||"")+(e.ext||"");return r?r===e.root?r+n:r+"/"+n:n}(0,t)},parse:function(t){e(t);var r={root:"",dir:"",base:"",ext:"",name:""};if(0===t.length)return r;var n,i=t.charCodeAt(0),o=47===i;o?(r.root="/",n=1):n=0;for(var s=-1,h=0,a=-1,c=!0,f=t.length-1,u=0;f>=n;--f)if(47!==(i=t.charCodeAt(f)))-1===a&&(c=!1,a=f+1),46===i?-1===s?s=f:1!==u&&(u=1):-1!==s&&(u=-1);else if(!c){h=f+1;break}return -1===s||-1===a||0===u||1===u&&s===a-1&&s===h+1?-1!==a&&(r.base=r.name=0===h&&o?t.slice(1,a):t.slice(h,a)):(0===h&&o?(r.name=t.slice(1,s),r.base=t.slice(1,a)):(r.name=t.slice(h,s),r.base=t.slice(h,a)),r.ext=t.slice(s,a)),h>0?r.dir=t.slice(0,h-1):o&&(r.dir="/"),r},sep:"/",delimiter:":",win32:null,posix:null};n.posix=n,t.exports=n;}},e={};function r(n){var i=e[n];if(void 0!==i)return i.exports;var o=e[n]={exports:{}};return t[n](o,o.exports,r),o.exports}r.d=(t,e)=>{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]});},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0});};var n={};(()=>{let t;if(r.r(n),r.d(n,{URI:()=>f,Utils:()=>P}),"object"==typeof process)t="win32"===process.platform;else if("object"==typeof navigator){let e=navigator.userAgent;t=e.indexOf("Windows")>=0;}const e=/^\w[\w\d+.-]*$/,i=/^\//,o=/^\/\//;function s(t,r){if(!t.scheme&&r)throw new Error(`[UriError]: Scheme is missing: {scheme: "", authority: "${t.authority}", path: "${t.path}", query: "${t.query}", fragment: "${t.fragment}"}`);if(t.scheme&&!e.test(t.scheme))throw new Error("[UriError]: Scheme contains illegal characters.");if(t.path)if(t.authority){if(!i.test(t.path))throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash ("/") character')}else if(o.test(t.path))throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")')}const h="",a="/",c=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/;class f{static isUri(t){return t instanceof f||!!t&&"string"==typeof t.authority&&"string"==typeof t.fragment&&"string"==typeof t.path&&"string"==typeof t.query&&"string"==typeof t.scheme&&"string"==typeof t.fsPath&&"function"==typeof t.with&&"function"==typeof t.toString}scheme;authority;path;query;fragment;constructor(t,e,r,n,i,o=!1){"object"==typeof t?(this.scheme=t.scheme||h,this.authority=t.authority||h,this.path=t.path||h,this.query=t.query||h,this.fragment=t.fragment||h):(this.scheme=function(t,e){return t||e?t:"file"}(t,o),this.authority=e||h,this.path=function(t,e){switch(t){case"https":case"http":case"file":e?e[0]!==a&&(e=a+e):e=a;}return e}(this.scheme,r||h),this.query=n||h,this.fragment=i||h,s(this,o));}get fsPath(){return m(this,!1)}with(t){if(!t)return this;let{scheme:e,authority:r,path:n,query:i,fragment:o}=t;return void 0===e?e=this.scheme:null===e&&(e=h),void 0===r?r=this.authority:null===r&&(r=h),void 0===n?n=this.path:null===n&&(n=h),void 0===i?i=this.query:null===i&&(i=h),void 0===o?o=this.fragment:null===o&&(o=h),e===this.scheme&&r===this.authority&&n===this.path&&i===this.query&&o===this.fragment?this:new l(e,r,n,i,o)}static parse(t,e=!1){const r=c.exec(t);return r?new l(r[2]||h,C(r[4]||h),C(r[5]||h),C(r[7]||h),C(r[9]||h),e):new l(h,h,h,h,h)}static file(e){let r=h;if(t&&(e=e.replace(/\\/g,a)),e[0]===a&&e[1]===a){const t=e.indexOf(a,2);-1===t?(r=e.substring(2),e=a):(r=e.substring(2,t),e=e.substring(t)||a);}return new l("file",r,e,h,h)}static from(t){const e=new l(t.scheme,t.authority,t.path,t.query,t.fragment);return s(e,!0),e}toString(t=!1){return y(this,t)}toJSON(){return this}static revive(t){if(t){if(t instanceof f)return t;{const e=new l(t);return e._formatted=t.external,e._fsPath=t._sep===u?t.fsPath:null,e}}return t}}const u=t?1:void 0;class l extends f{_formatted=null;_fsPath=null;get fsPath(){return this._fsPath||(this._fsPath=m(this,!1)),this._fsPath}toString(t=!1){return t?y(this,!0):(this._formatted||(this._formatted=y(this,!1)),this._formatted)}toJSON(){const t={$mid:1};return this._fsPath&&(t.fsPath=this._fsPath,t._sep=u),this._formatted&&(t.external=this._formatted),this.path&&(t.path=this.path),this.scheme&&(t.scheme=this.scheme),this.authority&&(t.authority=this.authority),this.query&&(t.query=this.query),this.fragment&&(t.fragment=this.fragment),t}}const g={58:"%3A",47:"%2F",63:"%3F",35:"%23",91:"%5B",93:"%5D",64:"%40",33:"%21",36:"%24",38:"%26",39:"%27",40:"%28",41:"%29",42:"%2A",43:"%2B",44:"%2C",59:"%3B",61:"%3D",32:"%20"};function d(t,e,r){let n,i=-1;for(let o=0;o<t.length;o++){const s=t.charCodeAt(o);if(s>=97&&s<=122||s>=65&&s<=90||s>=48&&s<=57||45===s||46===s||95===s||126===s||e&&47===s||r&&91===s||r&&93===s||r&&58===s)-1!==i&&(n+=encodeURIComponent(t.substring(i,o)),i=-1),void 0!==n&&(n+=t.charAt(o));else {void 0===n&&(n=t.substr(0,o));const e=g[s];void 0!==e?(-1!==i&&(n+=encodeURIComponent(t.substring(i,o)),i=-1),n+=e):-1===i&&(i=o);}}return -1!==i&&(n+=encodeURIComponent(t.substring(i))),void 0!==n?n:t}function p(t){let e;for(let r=0;r<t.length;r++){const n=t.charCodeAt(r);35===n||63===n?(void 0===e&&(e=t.substr(0,r)),e+=g[n]):void 0!==e&&(e+=t[r]);}return void 0!==e?e:t}function m(e,r){let n;return n=e.authority&&e.path.length>1&&"file"===e.scheme?`//${e.authority}${e.path}`:47===e.path.charCodeAt(0)&&(e.path.charCodeAt(1)>=65&&e.path.charCodeAt(1)<=90||e.path.charCodeAt(1)>=97&&e.path.charCodeAt(1)<=122)&&58===e.path.charCodeAt(2)?r?e.path.substr(1):e.path[1].toLowerCase()+e.path.substr(2):e.path,t&&(n=n.replace(/\//g,"\\")),n}function y(t,e){const r=e?p:d;let n="",{scheme:i,authority:o,path:s,query:h,fragment:c}=t;if(i&&(n+=i,n+=":"),(o||"file"===i)&&(n+=a,n+=a),o){let t=o.indexOf("@");if(-1!==t){const e=o.substr(0,t);o=o.substr(t+1),t=e.lastIndexOf(":"),-1===t?n+=r(e,!1,!1):(n+=r(e.substr(0,t),!1,!1),n+=":",n+=r(e.substr(t+1),!1,!0)),n+="@";}o=o.toLowerCase(),t=o.lastIndexOf(":"),-1===t?n+=r(o,!1,!0):(n+=r(o.substr(0,t),!1,!0),n+=o.substr(t));}if(s){if(s.length>=3&&47===s.charCodeAt(0)&&58===s.charCodeAt(2)){const t=s.charCodeAt(1);t>=65&&t<=90&&(s=`/${String.fromCharCode(t+32)}:${s.substr(3)}`);}else if(s.length>=2&&58===s.charCodeAt(1)){const t=s.charCodeAt(0);t>=65&&t<=90&&(s=`${String.fromCharCode(t+32)}:${s.substr(2)}`);}n+=r(s,!0,!1);}return h&&(n+="?",n+=r(h,!1,!1)),c&&(n+="#",n+=e?c:d(c,!1,!1)),n}function v(t){try{return decodeURIComponent(t)}catch{return t.length>3?t.substr(0,3)+v(t.substr(3)):t}}const b=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function C(t){return t.match(b)?t.replace(b,(t=>v(t))):t}var A=r(470);const w=A.posix||A,x="/";var P;!function(t){t.joinPath=function(t,...e){return t.with({path:w.join(t.path,...e)})},t.resolvePath=function(t,...e){let r=t.path,n=!1;r[0]!==x&&(r=x+r,n=!0);let i=w.resolve(r,...e);return n&&i[0]===x&&!t.authority&&(i=i.substring(1)),t.with({path:i})},t.dirname=function(t){if(0===t.path.length||t.path===x)return t;let e=w.dirname(t.path);return 1===e.length&&46===e.charCodeAt(0)&&(e=""),t.with({path:e})},t.basename=function(t){return w.basename(t.path)},t.extname=function(t){return w.extname(t.path)};}(P||(P={}));})(),LIB=n;})();const{URI,Utils}=LIB; + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +function dirname(uriString) { + return Utils.dirname(URI.parse(uriString)).toString(true); +} +function joinPath(uriString, ...paths) { + return Utils.joinPath(URI.parse(uriString), ...paths).toString(true); +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +let PathCompletionParticipant$1 = class PathCompletionParticipant { + constructor(readDirectory) { + this.readDirectory = readDirectory; + this.literalCompletions = []; + this.importCompletions = []; + } + onCssURILiteralValue(context) { + this.literalCompletions.push(context); + } + onCssImportPath(context) { + this.importCompletions.push(context); + } + async computeCompletions(document, documentContext) { + const result = { items: [], isIncomplete: false }; + for (const literalCompletion of this.literalCompletions) { + const uriValue = literalCompletion.uriValue; + const fullValue = stripQuotes$1(uriValue); + if (fullValue === '.' || fullValue === '..') { + result.isIncomplete = true; + } + else { + const items = await this.providePathSuggestions(uriValue, literalCompletion.position, literalCompletion.range, document, documentContext); + for (let item of items) { + result.items.push(item); + } + } + } + for (const importCompletion of this.importCompletions) { + const pathValue = importCompletion.pathValue; + const fullValue = stripQuotes$1(pathValue); + if (fullValue === '.' || fullValue === '..') { + result.isIncomplete = true; + } + else { + let suggestions = await this.providePathSuggestions(pathValue, importCompletion.position, importCompletion.range, document, documentContext); + if (document.languageId === 'scss') { + suggestions.forEach(s => { + if (startsWith$3(s.label, '_') && endsWith$3(s.label, '.scss')) { + if (s.textEdit) { + s.textEdit.newText = s.label.slice(1, -5); + } + else { + s.label = s.label.slice(1, -5); + } + } + }); + } + for (let item of suggestions) { + result.items.push(item); + } + } + } + return result; + } + async providePathSuggestions(pathValue, position, range, document, documentContext) { + const fullValue = stripQuotes$1(pathValue); + const isValueQuoted = startsWith$3(pathValue, `'`) || startsWith$3(pathValue, `"`); + const valueBeforeCursor = isValueQuoted + ? fullValue.slice(0, position.character - (range.start.character + 1)) + : fullValue.slice(0, position.character - range.start.character); + const currentDocUri = document.uri; + const fullValueRange = isValueQuoted ? shiftRange$1(range, 1, -1) : range; + const replaceRange = pathToReplaceRange$1(valueBeforeCursor, fullValue, fullValueRange); + const valueBeforeLastSlash = valueBeforeCursor.substring(0, valueBeforeCursor.lastIndexOf('/') + 1); // keep the last slash + let parentDir = documentContext.resolveReference(valueBeforeLastSlash || '.', currentDocUri); + if (parentDir) { + try { + const result = []; + const infos = await this.readDirectory(parentDir); + for (const [name, type] of infos) { + // Exclude paths that start with `.` + if (name.charCodeAt(0) !== CharCode_dot$1 && (type === FileType$1.Directory || joinPath(parentDir, name) !== currentDocUri)) { + result.push(createCompletionItem$2(name, type === FileType$1.Directory, replaceRange)); + } + } + return result; + } + catch (e) { + // ignore + } + } + return []; + } +}; +const CharCode_dot$1 = '.'.charCodeAt(0); +function stripQuotes$1(fullValue) { + if (startsWith$3(fullValue, `'`) || startsWith$3(fullValue, `"`)) { + return fullValue.slice(1, -1); + } + else { + return fullValue; + } +} +function pathToReplaceRange$1(valueBeforeCursor, fullValue, fullValueRange) { + let replaceRange; + const lastIndexOfSlash = valueBeforeCursor.lastIndexOf('/'); + if (lastIndexOfSlash === -1) { + replaceRange = fullValueRange; + } + else { + // For cases where cursor is in the middle of attribute value, like <script src="./s|rc/test.js"> + // Find the last slash before cursor, and calculate the start of replace range from there + const valueAfterLastSlash = fullValue.slice(lastIndexOfSlash + 1); + const startPos = shiftPosition$1(fullValueRange.end, -valueAfterLastSlash.length); + // If whitespace exists, replace until it + const whitespaceIndex = valueAfterLastSlash.indexOf(' '); + let endPos; + if (whitespaceIndex !== -1) { + endPos = shiftPosition$1(startPos, whitespaceIndex); + } + else { + endPos = fullValueRange.end; + } + replaceRange = Range$a.create(startPos, endPos); + } + return replaceRange; +} +function createCompletionItem$2(name, isDir, replaceRange) { + if (isDir) { + name = name + '/'; + return { + label: escapePath(name), + kind: CompletionItemKind.Folder, + textEdit: TextEdit.replace(replaceRange, escapePath(name)), + command: { + title: 'Suggest', + command: 'editor.action.triggerSuggest' + } + }; + } + else { + return { + label: escapePath(name), + kind: CompletionItemKind.File, + textEdit: TextEdit.replace(replaceRange, escapePath(name)) + }; + } +} +// Escape https://www.w3.org/TR/CSS1/#url +function escapePath(p) { + return p.replace(/(\s|\(|\)|,|"|')/g, '\\$1'); +} +function shiftPosition$1(pos, offset) { + return Position.create(pos.line, pos.character + offset); +} +function shiftRange$1(range, startOffset, endOffset) { + const start = shiftPosition$1(range.start, startOffset); + const end = shiftPosition$1(range.end, endOffset); + return Range$a.create(start, end); +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +const SnippetFormat = InsertTextFormat.Snippet; +const retriggerCommand = { + title: 'Suggest', + command: 'editor.action.triggerSuggest' +}; +var SortTexts; +(function (SortTexts) { + // char code 32, comes before everything + SortTexts["Enums"] = " "; + SortTexts["Normal"] = "d"; + SortTexts["VendorPrefixed"] = "x"; + SortTexts["Term"] = "y"; + SortTexts["Variable"] = "z"; +})(SortTexts || (SortTexts = {})); +class CSSCompletion { + constructor(variablePrefix = null, lsOptions, cssDataManager) { + this.variablePrefix = variablePrefix; + this.lsOptions = lsOptions; + this.cssDataManager = cssDataManager; + this.completionParticipants = []; + } + configure(settings) { + this.defaultSettings = settings; + } + getSymbolContext() { + if (!this.symbolContext) { + this.symbolContext = new Symbols(this.styleSheet); + } + return this.symbolContext; + } + setCompletionParticipants(registeredCompletionParticipants) { + this.completionParticipants = registeredCompletionParticipants || []; + } + async doComplete2(document, position, styleSheet, documentContext, completionSettings = this.defaultSettings) { + if (!this.lsOptions.fileSystemProvider || !this.lsOptions.fileSystemProvider.readDirectory) { + return this.doComplete(document, position, styleSheet, completionSettings); + } + const participant = new PathCompletionParticipant$1(this.lsOptions.fileSystemProvider.readDirectory); + const contributedParticipants = this.completionParticipants; + this.completionParticipants = [participant].concat(contributedParticipants); + const result = this.doComplete(document, position, styleSheet, completionSettings); + try { + const pathCompletionResult = await participant.computeCompletions(document, documentContext); + return { + isIncomplete: result.isIncomplete || pathCompletionResult.isIncomplete, + itemDefaults: result.itemDefaults, + items: pathCompletionResult.items.concat(result.items) + }; + } + finally { + this.completionParticipants = contributedParticipants; + } + } + doComplete(document, position, styleSheet, documentSettings) { + this.offset = document.offsetAt(position); + this.position = position; + this.currentWord = getCurrentWord(document, this.offset); + this.defaultReplaceRange = Range$a.create(Position.create(this.position.line, this.position.character - this.currentWord.length), this.position); + this.textDocument = document; + this.styleSheet = styleSheet; + this.documentSettings = documentSettings; + try { + const result = { + isIncomplete: false, + itemDefaults: { + editRange: { + start: { line: position.line, character: position.character - this.currentWord.length }, + end: position + } + }, + items: [] + }; + this.nodePath = getNodePath$3(this.styleSheet, this.offset); + for (let i = this.nodePath.length - 1; i >= 0; i--) { + const node = this.nodePath[i]; + if (node instanceof Property) { + this.getCompletionsForDeclarationProperty(node.getParent(), result); + } + else if (node instanceof Expression) { + if (node.parent instanceof Interpolation) { + this.getVariableProposals(null, result); + } + else { + this.getCompletionsForExpression(node, result); + } + } + else if (node instanceof SimpleSelector) { + const parentRef = node.findAParent(NodeType.ExtendsReference, NodeType.Ruleset); + if (parentRef) { + if (parentRef.type === NodeType.ExtendsReference) { + this.getCompletionsForExtendsReference(parentRef, node, result); + } + else { + const parentRuleSet = parentRef; + this.getCompletionsForSelector(parentRuleSet, parentRuleSet && parentRuleSet.isNested(), result); + } + } + } + else if (node instanceof FunctionArgument) { + this.getCompletionsForFunctionArgument(node, node.getParent(), result); + } + else if (node instanceof Declarations) { + this.getCompletionsForDeclarations(node, result); + } + else if (node instanceof VariableDeclaration) { + this.getCompletionsForVariableDeclaration(node, result); + } + else if (node instanceof RuleSet) { + this.getCompletionsForRuleSet(node, result); + } + else if (node instanceof Interpolation) { + this.getCompletionsForInterpolation(node, result); + } + else if (node instanceof FunctionDeclaration) { + this.getCompletionsForFunctionDeclaration(node, result); + } + else if (node instanceof MixinReference) { + this.getCompletionsForMixinReference(node, result); + } + else if (node instanceof Function$1) { + this.getCompletionsForFunctionArgument(null, node, result); + } + else if (node instanceof Supports) { + this.getCompletionsForSupports(node, result); + } + else if (node instanceof SupportsCondition) { + this.getCompletionsForSupportsCondition(node, result); + } + else if (node instanceof ExtendsReference) { + this.getCompletionsForExtendsReference(node, null, result); + } + else if (node.type === NodeType.URILiteral) { + this.getCompletionForUriLiteralValue(node, result); + } + else if (node.parent === null) { + this.getCompletionForTopLevel(result); + } + else if (node.type === NodeType.StringLiteral && this.isImportPathParent(node.parent.type)) { + this.getCompletionForImportPath(node, result); + // } else if (node instanceof nodes.Variable) { + // this.getCompletionsForVariableDeclaration() + } + else { + continue; + } + if (result.items.length > 0 || this.offset > node.offset) { + return this.finalize(result); + } + } + this.getCompletionsForStylesheet(result); + if (result.items.length === 0) { + if (this.variablePrefix && this.currentWord.indexOf(this.variablePrefix) === 0) { + this.getVariableProposals(null, result); + } + } + return this.finalize(result); + } + finally { + // don't hold on any state, clear symbolContext + this.position = null; + this.currentWord = null; + this.textDocument = null; + this.styleSheet = null; + this.symbolContext = null; + this.defaultReplaceRange = null; + this.nodePath = null; + } + } + isImportPathParent(type) { + return type === NodeType.Import; + } + finalize(result) { + return result; + } + findInNodePath(...types) { + for (let i = this.nodePath.length - 1; i >= 0; i--) { + const node = this.nodePath[i]; + if (types.indexOf(node.type) !== -1) { + return node; + } + } + return null; + } + getCompletionsForDeclarationProperty(declaration, result) { + return this.getPropertyProposals(declaration, result); + } + getPropertyProposals(declaration, result) { + const triggerPropertyValueCompletion = this.isTriggerPropertyValueCompletionEnabled; + const completePropertyWithSemicolon = this.isCompletePropertyWithSemicolonEnabled; + const properties = this.cssDataManager.getProperties(); + properties.forEach(entry => { + let range; + let insertText; + let retrigger = false; + if (declaration) { + range = this.getCompletionRange(declaration.getProperty()); + insertText = entry.name; + if (!isDefined$2(declaration.colonPosition)) { + insertText += ': '; + retrigger = true; + } + } + else { + range = this.getCompletionRange(null); + insertText = entry.name + ': '; + retrigger = true; + } + // Empty .selector { | } case + if (!declaration && completePropertyWithSemicolon) { + insertText += '$0;'; + } + // Cases such as .selector { p; } or .selector { p:; } + if (declaration && !declaration.semicolonPosition) { + if (completePropertyWithSemicolon && this.offset >= this.textDocument.offsetAt(range.end)) { + insertText += '$0;'; + } + } + const item = { + label: entry.name, + documentation: getEntryDescription(entry, this.doesSupportMarkdown()), + tags: isDeprecated(entry) ? [CompletionItemTag.Deprecated] : [], + textEdit: TextEdit.replace(range, insertText), + insertTextFormat: InsertTextFormat.Snippet, + kind: CompletionItemKind.Property + }; + if (!entry.restrictions) { + retrigger = false; + } + if (triggerPropertyValueCompletion && retrigger) { + item.command = retriggerCommand; + } + const relevance = typeof entry.relevance === 'number' ? Math.min(Math.max(entry.relevance, 0), 99) : 50; + const sortTextSuffix = (255 - relevance).toString(16); + const sortTextPrefix = startsWith$3(entry.name, '-') ? SortTexts.VendorPrefixed : SortTexts.Normal; + item.sortText = sortTextPrefix + '_' + sortTextSuffix; + result.items.push(item); + }); + this.completionParticipants.forEach(participant => { + if (participant.onCssProperty) { + participant.onCssProperty({ + propertyName: this.currentWord, + range: this.defaultReplaceRange + }); + } + }); + return result; + } + get isTriggerPropertyValueCompletionEnabled() { + return this.documentSettings?.triggerPropertyValueCompletion ?? true; + } + get isCompletePropertyWithSemicolonEnabled() { + return this.documentSettings?.completePropertyWithSemicolon ?? true; + } + getCompletionsForDeclarationValue(node, result) { + const propertyName = node.getFullPropertyName(); + const entry = this.cssDataManager.getProperty(propertyName); + let existingNode = node.getValue() || null; + while (existingNode && existingNode.hasChildren()) { + existingNode = existingNode.findChildAtOffset(this.offset, false); + } + this.completionParticipants.forEach(participant => { + if (participant.onCssPropertyValue) { + participant.onCssPropertyValue({ + propertyName, + propertyValue: this.currentWord, + range: this.getCompletionRange(existingNode) + }); + } + }); + if (entry) { + if (entry.restrictions) { + for (const restriction of entry.restrictions) { + switch (restriction) { + case 'color': + this.getColorProposals(entry, existingNode, result); + break; + case 'position': + this.getPositionProposals(entry, existingNode, result); + break; + case 'repeat': + this.getRepeatStyleProposals(entry, existingNode, result); + break; + case 'line-style': + this.getLineStyleProposals(entry, existingNode, result); + break; + case 'line-width': + this.getLineWidthProposals(entry, existingNode, result); + break; + case 'geometry-box': + this.getGeometryBoxProposals(entry, existingNode, result); + break; + case 'box': + this.getBoxProposals(entry, existingNode, result); + break; + case 'image': + this.getImageProposals(entry, existingNode, result); + break; + case 'timing-function': + this.getTimingFunctionProposals(entry, existingNode, result); + break; + case 'shape': + this.getBasicShapeProposals(entry, existingNode, result); + break; + } + } + } + this.getValueEnumProposals(entry, existingNode, result); + this.getCSSWideKeywordProposals(entry, existingNode, result); + this.getUnitProposals(entry, existingNode, result); + } + else { + const existingValues = collectValues(this.styleSheet, node); + for (const existingValue of existingValues.getEntries()) { + result.items.push({ + label: existingValue, + textEdit: TextEdit.replace(this.getCompletionRange(existingNode), existingValue), + kind: CompletionItemKind.Value + }); + } + } + this.getVariableProposals(existingNode, result); + this.getTermProposals(entry, existingNode, result); + return result; + } + getValueEnumProposals(entry, existingNode, result) { + if (entry.values) { + for (const value of entry.values) { + let insertString = value.name; + let insertTextFormat; + if (endsWith$3(insertString, ')')) { + const from = insertString.lastIndexOf('('); + if (from !== -1) { + insertString = insertString.substring(0, from + 1) + '$1' + insertString.substring(from + 1); + insertTextFormat = SnippetFormat; + } + } + let sortText = SortTexts.Enums; + if (startsWith$3(value.name, '-')) { + sortText += SortTexts.VendorPrefixed; + } + const item = { + label: value.name, + documentation: getEntryDescription(value, this.doesSupportMarkdown()), + tags: isDeprecated(entry) ? [CompletionItemTag.Deprecated] : [], + textEdit: TextEdit.replace(this.getCompletionRange(existingNode), insertString), + sortText, + kind: CompletionItemKind.Value, + insertTextFormat + }; + result.items.push(item); + } + } + return result; + } + getCSSWideKeywordProposals(entry, existingNode, result) { + for (const keywords in cssWideKeywords) { + result.items.push({ + label: keywords, + documentation: cssWideKeywords[keywords], + textEdit: TextEdit.replace(this.getCompletionRange(existingNode), keywords), + kind: CompletionItemKind.Value + }); + } + for (const func in cssWideFunctions) { + const insertText = moveCursorInsideParenthesis(func); + result.items.push({ + label: func, + documentation: cssWideFunctions[func], + textEdit: TextEdit.replace(this.getCompletionRange(existingNode), insertText), + kind: CompletionItemKind.Function, + insertTextFormat: SnippetFormat, + command: startsWith$3(func, 'var') ? retriggerCommand : undefined + }); + } + return result; + } + getCompletionsForInterpolation(node, result) { + if (this.offset >= node.offset + 2) { + this.getVariableProposals(null, result); + } + return result; + } + getVariableProposals(existingNode, result) { + const symbols = this.getSymbolContext().findSymbolsAtOffset(this.offset, ReferenceType.Variable); + for (const symbol of symbols) { + const insertText = startsWith$3(symbol.name, '--') ? `var(${symbol.name})` : symbol.name; + const completionItem = { + label: symbol.name, + documentation: symbol.value ? getLimitedString(symbol.value) : symbol.value, + textEdit: TextEdit.replace(this.getCompletionRange(existingNode), insertText), + kind: CompletionItemKind.Variable, + sortText: SortTexts.Variable + }; + if (typeof completionItem.documentation === 'string' && isColorString(completionItem.documentation)) { + completionItem.kind = CompletionItemKind.Color; + } + if (symbol.node.type === NodeType.FunctionParameter) { + const mixinNode = (symbol.node.getParent()); + if (mixinNode.type === NodeType.MixinDeclaration) { + completionItem.detail = t$2('argument from \'{0}\'', mixinNode.getName()); + } + } + result.items.push(completionItem); + } + return result; + } + getVariableProposalsForCSSVarFunction(result) { + const allReferencedVariables = new Set$1(); + this.styleSheet.acceptVisitor(new VariableCollector(allReferencedVariables, this.offset)); + let symbols = this.getSymbolContext().findSymbolsAtOffset(this.offset, ReferenceType.Variable); + for (const symbol of symbols) { + if (startsWith$3(symbol.name, '--')) { + const completionItem = { + label: symbol.name, + documentation: symbol.value ? getLimitedString(symbol.value) : symbol.value, + textEdit: TextEdit.replace(this.getCompletionRange(null), symbol.name), + kind: CompletionItemKind.Variable + }; + if (typeof completionItem.documentation === 'string' && isColorString(completionItem.documentation)) { + completionItem.kind = CompletionItemKind.Color; + } + result.items.push(completionItem); + } + allReferencedVariables.remove(symbol.name); + } + for (const name of allReferencedVariables.getEntries()) { + if (startsWith$3(name, '--')) { + const completionItem = { + label: name, + textEdit: TextEdit.replace(this.getCompletionRange(null), name), + kind: CompletionItemKind.Variable + }; + result.items.push(completionItem); + } + } + return result; + } + getUnitProposals(entry, existingNode, result) { + let currentWord = '0'; + if (this.currentWord.length > 0) { + const numMatch = this.currentWord.match(/^-?\d[\.\d+]*/); + if (numMatch) { + currentWord = numMatch[0]; + result.isIncomplete = currentWord.length === this.currentWord.length; + } + } + else if (this.currentWord.length === 0) { + result.isIncomplete = true; + } + if (existingNode && existingNode.parent && existingNode.parent.type === NodeType.Term) { + existingNode = existingNode.getParent(); // include the unary operator + } + if (entry.restrictions) { + for (const restriction of entry.restrictions) { + const units$1 = units[restriction]; + if (units$1) { + for (const unit of units$1) { + const insertText = currentWord + unit; + result.items.push({ + label: insertText, + textEdit: TextEdit.replace(this.getCompletionRange(existingNode), insertText), + kind: CompletionItemKind.Unit + }); + } + } + } + } + return result; + } + getCompletionRange(existingNode) { + if (existingNode && existingNode.offset <= this.offset && this.offset <= existingNode.end) { + const end = existingNode.end !== -1 ? this.textDocument.positionAt(existingNode.end) : this.position; + const start = this.textDocument.positionAt(existingNode.offset); + if (start.line === end.line) { + return Range$a.create(start, end); // multi line edits are not allowed + } + } + return this.defaultReplaceRange; + } + getColorProposals(entry, existingNode, result) { + for (const color in colors) { + result.items.push({ + label: color, + documentation: colors[color], + textEdit: TextEdit.replace(this.getCompletionRange(existingNode), color), + kind: CompletionItemKind.Color + }); + } + for (const color in colorKeywords) { + result.items.push({ + label: color, + documentation: colorKeywords[color], + textEdit: TextEdit.replace(this.getCompletionRange(existingNode), color), + kind: CompletionItemKind.Value + }); + } + const colorValues = new Set$1(); + this.styleSheet.acceptVisitor(new ColorValueCollector(colorValues, this.offset)); + for (const color of colorValues.getEntries()) { + result.items.push({ + label: color, + textEdit: TextEdit.replace(this.getCompletionRange(existingNode), color), + kind: CompletionItemKind.Color + }); + } + for (const p of colorFunctions) { + result.items.push({ + label: p.label, + detail: p.func, + documentation: p.desc, + textEdit: TextEdit.replace(this.getCompletionRange(existingNode), p.insertText), + insertTextFormat: SnippetFormat, + kind: CompletionItemKind.Function + }); + } + return result; + } + getPositionProposals(entry, existingNode, result) { + for (const position in positionKeywords) { + result.items.push({ + label: position, + documentation: positionKeywords[position], + textEdit: TextEdit.replace(this.getCompletionRange(existingNode), position), + kind: CompletionItemKind.Value + }); + } + return result; + } + getRepeatStyleProposals(entry, existingNode, result) { + for (const repeat in repeatStyleKeywords) { + result.items.push({ + label: repeat, + documentation: repeatStyleKeywords[repeat], + textEdit: TextEdit.replace(this.getCompletionRange(existingNode), repeat), + kind: CompletionItemKind.Value + }); + } + return result; + } + getLineStyleProposals(entry, existingNode, result) { + for (const lineStyle in lineStyleKeywords) { + result.items.push({ + label: lineStyle, + documentation: lineStyleKeywords[lineStyle], + textEdit: TextEdit.replace(this.getCompletionRange(existingNode), lineStyle), + kind: CompletionItemKind.Value + }); + } + return result; + } + getLineWidthProposals(entry, existingNode, result) { + for (const lineWidth of lineWidthKeywords) { + result.items.push({ + label: lineWidth, + textEdit: TextEdit.replace(this.getCompletionRange(existingNode), lineWidth), + kind: CompletionItemKind.Value + }); + } + return result; + } + getGeometryBoxProposals(entry, existingNode, result) { + for (const box in geometryBoxKeywords) { + result.items.push({ + label: box, + documentation: geometryBoxKeywords[box], + textEdit: TextEdit.replace(this.getCompletionRange(existingNode), box), + kind: CompletionItemKind.Value + }); + } + return result; + } + getBoxProposals(entry, existingNode, result) { + for (const box in boxKeywords) { + result.items.push({ + label: box, + documentation: boxKeywords[box], + textEdit: TextEdit.replace(this.getCompletionRange(existingNode), box), + kind: CompletionItemKind.Value + }); + } + return result; + } + getImageProposals(entry, existingNode, result) { + for (const image in imageFunctions) { + const insertText = moveCursorInsideParenthesis(image); + result.items.push({ + label: image, + documentation: imageFunctions[image], + textEdit: TextEdit.replace(this.getCompletionRange(existingNode), insertText), + kind: CompletionItemKind.Function, + insertTextFormat: image !== insertText ? SnippetFormat : void 0 + }); + } + return result; + } + getTimingFunctionProposals(entry, existingNode, result) { + for (const timing in transitionTimingFunctions) { + const insertText = moveCursorInsideParenthesis(timing); + result.items.push({ + label: timing, + documentation: transitionTimingFunctions[timing], + textEdit: TextEdit.replace(this.getCompletionRange(existingNode), insertText), + kind: CompletionItemKind.Function, + insertTextFormat: timing !== insertText ? SnippetFormat : void 0 + }); + } + return result; + } + getBasicShapeProposals(entry, existingNode, result) { + for (const shape in basicShapeFunctions) { + const insertText = moveCursorInsideParenthesis(shape); + result.items.push({ + label: shape, + documentation: basicShapeFunctions[shape], + textEdit: TextEdit.replace(this.getCompletionRange(existingNode), insertText), + kind: CompletionItemKind.Function, + insertTextFormat: shape !== insertText ? SnippetFormat : void 0 + }); + } + return result; + } + getCompletionsForStylesheet(result) { + const node = this.styleSheet.findFirstChildBeforeOffset(this.offset); + if (!node) { + return this.getCompletionForTopLevel(result); + } + if (node instanceof RuleSet) { + return this.getCompletionsForRuleSet(node, result); + } + if (node instanceof Supports) { + return this.getCompletionsForSupports(node, result); + } + return result; + } + getCompletionForTopLevel(result) { + this.cssDataManager.getAtDirectives().forEach(entry => { + result.items.push({ + label: entry.name, + textEdit: TextEdit.replace(this.getCompletionRange(null), entry.name), + documentation: getEntryDescription(entry, this.doesSupportMarkdown()), + tags: isDeprecated(entry) ? [CompletionItemTag.Deprecated] : [], + kind: CompletionItemKind.Keyword + }); + }); + this.getCompletionsForSelector(null, false, result); + return result; + } + getCompletionsForRuleSet(ruleSet, result) { + const declarations = ruleSet.getDeclarations(); + const isAfter = declarations && declarations.endsWith('}') && this.offset >= declarations.end; + if (isAfter) { + return this.getCompletionForTopLevel(result); + } + const isInSelectors = !declarations || this.offset <= declarations.offset; + if (isInSelectors) { + return this.getCompletionsForSelector(ruleSet, ruleSet.isNested(), result); + } + return this.getCompletionsForDeclarations(ruleSet.getDeclarations(), result); + } + getCompletionsForSelector(ruleSet, isNested, result) { + const existingNode = this.findInNodePath(NodeType.PseudoSelector, NodeType.IdentifierSelector, NodeType.ClassSelector, NodeType.ElementNameSelector); + if (!existingNode && this.hasCharacterAtPosition(this.offset - this.currentWord.length - 1, ':')) { + // after the ':' of a pseudo selector, no node generated for just ':' + this.currentWord = ':' + this.currentWord; + if (this.hasCharacterAtPosition(this.offset - this.currentWord.length - 1, ':')) { + this.currentWord = ':' + this.currentWord; // for '::' + } + this.defaultReplaceRange = Range$a.create(Position.create(this.position.line, this.position.character - this.currentWord.length), this.position); + } + const pseudoClasses = this.cssDataManager.getPseudoClasses(); + pseudoClasses.forEach(entry => { + const insertText = moveCursorInsideParenthesis(entry.name); + const item = { + label: entry.name, + textEdit: TextEdit.replace(this.getCompletionRange(existingNode), insertText), + documentation: getEntryDescription(entry, this.doesSupportMarkdown()), + tags: isDeprecated(entry) ? [CompletionItemTag.Deprecated] : [], + kind: CompletionItemKind.Function, + insertTextFormat: entry.name !== insertText ? SnippetFormat : void 0 + }; + if (startsWith$3(entry.name, ':-')) { + item.sortText = SortTexts.VendorPrefixed; + } + result.items.push(item); + }); + const pseudoElements = this.cssDataManager.getPseudoElements(); + pseudoElements.forEach(entry => { + const insertText = moveCursorInsideParenthesis(entry.name); + const item = { + label: entry.name, + textEdit: TextEdit.replace(this.getCompletionRange(existingNode), insertText), + documentation: getEntryDescription(entry, this.doesSupportMarkdown()), + tags: isDeprecated(entry) ? [CompletionItemTag.Deprecated] : [], + kind: CompletionItemKind.Function, + insertTextFormat: entry.name !== insertText ? SnippetFormat : void 0 + }; + if (startsWith$3(entry.name, '::-')) { + item.sortText = SortTexts.VendorPrefixed; + } + result.items.push(item); + }); + if (!isNested) { // show html tags only for top level + for (const entry of html5Tags) { + result.items.push({ + label: entry, + textEdit: TextEdit.replace(this.getCompletionRange(existingNode), entry), + kind: CompletionItemKind.Keyword + }); + } + for (const entry of svgElements) { + result.items.push({ + label: entry, + textEdit: TextEdit.replace(this.getCompletionRange(existingNode), entry), + kind: CompletionItemKind.Keyword + }); + } + } + const visited = {}; + visited[this.currentWord] = true; + const docText = this.textDocument.getText(); + this.styleSheet.accept(n => { + if (n.type === NodeType.SimpleSelector && n.length > 0) { + const selector = docText.substr(n.offset, n.length); + if (selector.charAt(0) === '.' && !visited[selector]) { + visited[selector] = true; + result.items.push({ + label: selector, + textEdit: TextEdit.replace(this.getCompletionRange(existingNode), selector), + kind: CompletionItemKind.Keyword + }); + } + return false; + } + return true; + }); + if (ruleSet && ruleSet.isNested()) { + const selector = ruleSet.getSelectors().findFirstChildBeforeOffset(this.offset); + if (selector && ruleSet.getSelectors().getChildren().indexOf(selector) === 0) { + this.getPropertyProposals(null, result); + } + } + return result; + } + getCompletionsForDeclarations(declarations, result) { + if (!declarations || this.offset === declarations.offset) { // incomplete nodes + return result; + } + const node = declarations.findFirstChildBeforeOffset(this.offset); + if (!node) { + return this.getCompletionsForDeclarationProperty(null, result); + } + if (node instanceof AbstractDeclaration) { + const declaration = node; + if (!isDefined$2(declaration.colonPosition) || this.offset <= declaration.colonPosition) { + // complete property + return this.getCompletionsForDeclarationProperty(declaration, result); + } + else if ((isDefined$2(declaration.semicolonPosition) && declaration.semicolonPosition < this.offset)) { + if (this.offset === declaration.semicolonPosition + 1) { + return result; // don't show new properties right after semicolon (see Bug 15421:[intellisense] [css] Be less aggressive when manually typing CSS) + } + // complete next property + return this.getCompletionsForDeclarationProperty(null, result); + } + if (declaration instanceof Declaration) { + // complete value + return this.getCompletionsForDeclarationValue(declaration, result); + } + } + else if (node instanceof ExtendsReference) { + this.getCompletionsForExtendsReference(node, null, result); + } + else if (this.currentWord && this.currentWord[0] === '@') { + this.getCompletionsForDeclarationProperty(null, result); + } + else if (node instanceof RuleSet) { + this.getCompletionsForDeclarationProperty(null, result); + } + return result; + } + getCompletionsForVariableDeclaration(declaration, result) { + if (this.offset && isDefined$2(declaration.colonPosition) && this.offset > declaration.colonPosition) { + this.getVariableProposals(declaration.getValue() || null, result); + } + return result; + } + getCompletionsForExpression(expression, result) { + const parent = expression.getParent(); + if (parent instanceof FunctionArgument) { + this.getCompletionsForFunctionArgument(parent, parent.getParent(), result); + return result; + } + const declaration = expression.findParent(NodeType.Declaration); + if (!declaration) { + this.getTermProposals(undefined, null, result); + return result; + } + const node = expression.findChildAtOffset(this.offset, true); + if (!node) { + return this.getCompletionsForDeclarationValue(declaration, result); + } + if (node instanceof NumericValue || node instanceof Identifier) { + return this.getCompletionsForDeclarationValue(declaration, result); + } + return result; + } + getCompletionsForFunctionArgument(arg, func, result) { + const identifier = func.getIdentifier(); + if (identifier && identifier.matches('var')) { + if (!func.getArguments().hasChildren() || func.getArguments().getChild(0) === arg) { + this.getVariableProposalsForCSSVarFunction(result); + } + } + return result; + } + getCompletionsForFunctionDeclaration(decl, result) { + const declarations = decl.getDeclarations(); + if (declarations && this.offset > declarations.offset && this.offset < declarations.end) { + this.getTermProposals(undefined, null, result); + } + return result; + } + getCompletionsForMixinReference(ref, result) { + const allMixins = this.getSymbolContext().findSymbolsAtOffset(this.offset, ReferenceType.Mixin); + for (const mixinSymbol of allMixins) { + if (mixinSymbol.node instanceof MixinDeclaration) { + result.items.push(this.makeTermProposal(mixinSymbol, mixinSymbol.node.getParameters(), null)); + } + } + const identifierNode = ref.getIdentifier() || null; + this.completionParticipants.forEach(participant => { + if (participant.onCssMixinReference) { + participant.onCssMixinReference({ + mixinName: this.currentWord, + range: this.getCompletionRange(identifierNode) + }); + } + }); + return result; + } + getTermProposals(entry, existingNode, result) { + const allFunctions = this.getSymbolContext().findSymbolsAtOffset(this.offset, ReferenceType.Function); + for (const functionSymbol of allFunctions) { + if (functionSymbol.node instanceof FunctionDeclaration) { + result.items.push(this.makeTermProposal(functionSymbol, functionSymbol.node.getParameters(), existingNode)); + } + } + return result; + } + makeTermProposal(symbol, parameters, existingNode) { + symbol.node; + const params = parameters.getChildren().map((c) => { + return (c instanceof FunctionParameter) ? c.getName() : c.getText(); + }); + const insertText = symbol.name + '(' + params.map((p, index) => '${' + (index + 1) + ':' + p + '}').join(', ') + ')'; + return { + label: symbol.name, + detail: symbol.name + '(' + params.join(', ') + ')', + textEdit: TextEdit.replace(this.getCompletionRange(existingNode), insertText), + insertTextFormat: SnippetFormat, + kind: CompletionItemKind.Function, + sortText: SortTexts.Term + }; + } + getCompletionsForSupportsCondition(supportsCondition, result) { + const child = supportsCondition.findFirstChildBeforeOffset(this.offset); + if (child) { + if (child instanceof Declaration) { + if (!isDefined$2(child.colonPosition) || this.offset <= child.colonPosition) { + return this.getCompletionsForDeclarationProperty(child, result); + } + else { + return this.getCompletionsForDeclarationValue(child, result); + } + } + else if (child instanceof SupportsCondition) { + return this.getCompletionsForSupportsCondition(child, result); + } + } + if (isDefined$2(supportsCondition.lParent) && this.offset > supportsCondition.lParent && (!isDefined$2(supportsCondition.rParent) || this.offset <= supportsCondition.rParent)) { + return this.getCompletionsForDeclarationProperty(null, result); + } + return result; + } + getCompletionsForSupports(supports, result) { + const declarations = supports.getDeclarations(); + const inInCondition = !declarations || this.offset <= declarations.offset; + if (inInCondition) { + const child = supports.findFirstChildBeforeOffset(this.offset); + if (child instanceof SupportsCondition) { + return this.getCompletionsForSupportsCondition(child, result); + } + return result; + } + return this.getCompletionForTopLevel(result); + } + getCompletionsForExtendsReference(extendsRef, existingNode, result) { + return result; + } + getCompletionForUriLiteralValue(uriLiteralNode, result) { + let uriValue; + let position; + let range; + // No children, empty value + if (!uriLiteralNode.hasChildren()) { + uriValue = ''; + position = this.position; + const emptyURIValuePosition = this.textDocument.positionAt(uriLiteralNode.offset + 'url('.length); + range = Range$a.create(emptyURIValuePosition, emptyURIValuePosition); + } + else { + const uriValueNode = uriLiteralNode.getChild(0); + uriValue = uriValueNode.getText(); + position = this.position; + range = this.getCompletionRange(uriValueNode); + } + this.completionParticipants.forEach(participant => { + if (participant.onCssURILiteralValue) { + participant.onCssURILiteralValue({ + uriValue, + position, + range + }); + } + }); + return result; + } + getCompletionForImportPath(importPathNode, result) { + this.completionParticipants.forEach(participant => { + if (participant.onCssImportPath) { + participant.onCssImportPath({ + pathValue: importPathNode.getText(), + position: this.position, + range: this.getCompletionRange(importPathNode) + }); + } + }); + return result; + } + hasCharacterAtPosition(offset, char) { + const text = this.textDocument.getText(); + return (offset >= 0 && offset < text.length) && text.charAt(offset) === char; + } + doesSupportMarkdown() { + if (!isDefined$2(this.supportsMarkdown)) { + if (!isDefined$2(this.lsOptions.clientCapabilities)) { + this.supportsMarkdown = true; + return this.supportsMarkdown; + } + const documentationFormat = this.lsOptions.clientCapabilities.textDocument?.completion?.completionItem?.documentationFormat; + this.supportsMarkdown = Array.isArray(documentationFormat) && documentationFormat.indexOf(MarkupKind.Markdown) !== -1; + } + return this.supportsMarkdown; + } +} +function isDeprecated(entry) { + if (entry.status && (entry.status === 'nonstandard' || entry.status === 'obsolete')) { + return true; + } + return false; +} +let Set$1 = class Set { + constructor() { + this.entries = {}; + } + add(entry) { + this.entries[entry] = true; + } + remove(entry) { + delete this.entries[entry]; + } + getEntries() { + return Object.keys(this.entries); + } +}; +function moveCursorInsideParenthesis(text) { + return text.replace(/\(\)$/, "($1)"); +} +function collectValues(styleSheet, declaration) { + const fullPropertyName = declaration.getFullPropertyName(); + const entries = new Set$1(); + function visitValue(node) { + if (node instanceof Identifier || node instanceof NumericValue || node instanceof HexColorValue) { + entries.add(node.getText()); + } + return true; + } + function matchesProperty(decl) { + const propertyName = decl.getFullPropertyName(); + return fullPropertyName === propertyName; + } + function vistNode(node) { + if (node instanceof Declaration && node !== declaration) { + if (matchesProperty(node)) { + const value = node.getValue(); + if (value) { + value.accept(visitValue); + } + } + } + return true; + } + styleSheet.accept(vistNode); + return entries; +} +class ColorValueCollector { + constructor(entries, currentOffset) { + this.entries = entries; + this.currentOffset = currentOffset; + // nothing to do + } + visitNode(node) { + if (node instanceof HexColorValue || (node instanceof Function$1 && isColorConstructor(node))) { + if (this.currentOffset < node.offset || node.end < this.currentOffset) { + this.entries.add(node.getText()); + } + } + return true; + } +} +class VariableCollector { + constructor(entries, currentOffset) { + this.entries = entries; + this.currentOffset = currentOffset; + // nothing to do + } + visitNode(node) { + if (node instanceof Identifier && node.isCustomProperty) { + if (this.currentOffset < node.offset || node.end < this.currentOffset) { + this.entries.add(node.getText()); + } + } + return true; + } +} +function getCurrentWord(document, offset) { + let i = offset - 1; + const text = document.getText(); + while (i >= 0 && ' \t\n\r":{[()]},*>+'.indexOf(text.charAt(i)) === -1) { + i--; + } + return text.substring(i + 1, offset); +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +let Element$1 = class Element { + constructor() { + this.parent = null; + this.children = null; + this.attributes = null; + } + findAttribute(name) { + if (this.attributes) { + for (const attribute of this.attributes) { + if (attribute.name === name) { + return attribute.value; + } + } + } + return null; + } + addChild(child) { + if (child instanceof Element) { + child.parent = this; + } + if (!this.children) { + this.children = []; + } + this.children.push(child); + } + append(text) { + if (this.attributes) { + const last = this.attributes[this.attributes.length - 1]; + last.value = last.value + text; + } + } + prepend(text) { + if (this.attributes) { + const first = this.attributes[0]; + first.value = text + first.value; + } + } + findRoot() { + let curr = this; + while (curr.parent && !(curr.parent instanceof RootElement)) { + curr = curr.parent; + } + return curr; + } + removeChild(child) { + if (this.children) { + const index = this.children.indexOf(child); + if (index !== -1) { + this.children.splice(index, 1); + return true; + } + } + return false; + } + addAttr(name, value) { + if (!this.attributes) { + this.attributes = []; + } + for (const attribute of this.attributes) { + if (attribute.name === name) { + attribute.value += ' ' + value; + return; + } + } + this.attributes.push({ name, value }); + } + clone(cloneChildren = true) { + const elem = new Element(); + if (this.attributes) { + elem.attributes = []; + for (const attribute of this.attributes) { + elem.addAttr(attribute.name, attribute.value); + } + } + if (cloneChildren && this.children) { + elem.children = []; + for (let index = 0; index < this.children.length; index++) { + elem.addChild(this.children[index].clone()); + } + } + return elem; + } + cloneWithParent() { + const clone = this.clone(false); + if (this.parent && !(this.parent instanceof RootElement)) { + const parentClone = this.parent.cloneWithParent(); + parentClone.addChild(clone); + } + return clone; + } +}; +class RootElement extends Element$1 { +} +class LabelElement extends Element$1 { + constructor(label) { + super(); + this.addAttr('name', label); + } +} +class MarkedStringPrinter { + constructor(quote) { + this.quote = quote; + this.result = []; + // empty + } + print(element) { + this.result = []; + if (element instanceof RootElement) { + if (element.children) { + this.doPrint(element.children, 0); + } + } + else { + this.doPrint([element], 0); + } + const value = this.result.join('\n'); + return [{ language: 'html', value }]; + } + doPrint(elements, indent) { + for (const element of elements) { + this.doPrintElement(element, indent); + if (element.children) { + this.doPrint(element.children, indent + 1); + } + } + } + writeLine(level, content) { + const indent = new Array(level + 1).join(' '); + this.result.push(indent + content); + } + doPrintElement(element, indent) { + const name = element.findAttribute('name'); + // special case: a simple label + if (element instanceof LabelElement || name === '\u2026') { + this.writeLine(indent, name); + return; + } + // the real deal + const content = ['<']; + // element name + if (name) { + content.push(name); + } + else { + content.push('element'); + } + // attributes + if (element.attributes) { + for (const attr of element.attributes) { + if (attr.name !== 'name') { + content.push(' '); + content.push(attr.name); + const value = attr.value; + if (value) { + content.push('='); + content.push(quotes.ensure(value, this.quote)); + } + } + } + } + content.push('>'); + this.writeLine(indent, content.join('')); + } +} +var quotes; +(function (quotes) { + function ensure(value, which) { + return which + remove(value) + which; + } + quotes.ensure = ensure; + function remove(value) { + const match = value.match(/^['"](.*)["']$/); + if (match) { + return match[1]; + } + return value; + } + quotes.remove = remove; +})(quotes || (quotes = {})); +class Specificity { + constructor() { + /** Count of identifiers (e.g., `#app`) */ + this.id = 0; + /** Count of attributes (`[type="number"]`), classes (`.container-fluid`), and pseudo-classes (`:hover`) */ + this.attr = 0; + /** Count of tag names (`div`), and pseudo-elements (`::before`) */ + this.tag = 0; + } +} +function toElement(node, parentElement) { + let result = new Element$1(); + for (const child of node.getChildren()) { + switch (child.type) { + case NodeType.SelectorCombinator: + if (parentElement) { + const segments = child.getText().split('&'); + if (segments.length === 1) { + // should not happen + result.addAttr('name', segments[0]); + break; + } + result = parentElement.cloneWithParent(); + if (segments[0]) { + const root = result.findRoot(); + root.prepend(segments[0]); + } + for (let i = 1; i < segments.length; i++) { + if (i > 1) { + const clone = parentElement.cloneWithParent(); + result.addChild(clone.findRoot()); + result = clone; + } + result.append(segments[i]); + } + } + break; + case NodeType.SelectorPlaceholder: + if (child.matches('@at-root')) { + return result; + } + // fall through + case NodeType.ElementNameSelector: + const text = child.getText(); + result.addAttr('name', text === '*' ? 'element' : unescape$2(text)); + break; + case NodeType.ClassSelector: + result.addAttr('class', unescape$2(child.getText().substring(1))); + break; + case NodeType.IdentifierSelector: + result.addAttr('id', unescape$2(child.getText().substring(1))); + break; + case NodeType.MixinDeclaration: + result.addAttr('class', child.getName()); + break; + case NodeType.PseudoSelector: + result.addAttr(unescape$2(child.getText()), ''); + break; + case NodeType.AttributeSelector: + const selector = child; + const identifier = selector.getIdentifier(); + if (identifier) { + const expression = selector.getValue(); + const operator = selector.getOperator(); + let value; + if (expression && operator) { + switch (unescape$2(operator.getText())) { + case '|=': + // excatly or followed by -words + value = `${quotes.remove(unescape$2(expression.getText()))}-\u2026`; + break; + case '^=': + // prefix + value = `${quotes.remove(unescape$2(expression.getText()))}\u2026`; + break; + case '$=': + // suffix + value = `\u2026${quotes.remove(unescape$2(expression.getText()))}`; + break; + case '~=': + // one of a list of words + value = ` \u2026 ${quotes.remove(unescape$2(expression.getText()))} \u2026 `; + break; + case '*=': + // substring + value = `\u2026${quotes.remove(unescape$2(expression.getText()))}\u2026`; + break; + default: + value = quotes.remove(unescape$2(expression.getText())); + break; + } + } + result.addAttr(unescape$2(identifier.getText()), value); + } + break; + } + } + return result; +} +function unescape$2(content) { + const scanner = new Scanner(); + scanner.setSource(content); + const token = scanner.scanUnquotedString(); + if (token) { + return token.text; + } + return content; +} +class SelectorPrinting { + constructor(cssDataManager) { + this.cssDataManager = cssDataManager; + } + selectorToMarkedString(node) { + const root = selectorToElement(node); + if (root) { + const markedStrings = new MarkedStringPrinter('"').print(root); + markedStrings.push(this.selectorToSpecificityMarkedString(node)); + return markedStrings; + } + else { + return []; + } + } + simpleSelectorToMarkedString(node) { + const element = toElement(node); + const markedStrings = new MarkedStringPrinter('"').print(element); + markedStrings.push(this.selectorToSpecificityMarkedString(node)); + return markedStrings; + } + isPseudoElementIdentifier(text) { + const match = text.match(/^::?([\w-]+)/); + if (!match) { + return false; + } + return !!this.cssDataManager.getPseudoElement("::" + match[1]); + } + selectorToSpecificityMarkedString(node) { + const calculateMostSpecificListItem = (childElements) => { + const specificity = new Specificity(); + let mostSpecificListItem = new Specificity(); + for (const containerElement of childElements) { + for (const childElement of containerElement.getChildren()) { + const itemSpecificity = calculateScore(childElement); + if (itemSpecificity.id > mostSpecificListItem.id) { + mostSpecificListItem = itemSpecificity; + continue; + } + else if (itemSpecificity.id < mostSpecificListItem.id) { + continue; + } + if (itemSpecificity.attr > mostSpecificListItem.attr) { + mostSpecificListItem = itemSpecificity; + continue; + } + else if (itemSpecificity.attr < mostSpecificListItem.attr) { + continue; + } + if (itemSpecificity.tag > mostSpecificListItem.tag) { + mostSpecificListItem = itemSpecificity; + continue; + } + } + } + specificity.id += mostSpecificListItem.id; + specificity.attr += mostSpecificListItem.attr; + specificity.tag += mostSpecificListItem.tag; + return specificity; + }; + //https://www.w3.org/TR/selectors-3/#specificity + const calculateScore = (node) => { + const specificity = new Specificity(); + elementLoop: for (const element of node.getChildren()) { + switch (element.type) { + case NodeType.IdentifierSelector: + specificity.id++; + break; + case NodeType.ClassSelector: + case NodeType.AttributeSelector: + specificity.attr++; + break; + case NodeType.ElementNameSelector: + //ignore universal selector + if (element.matches("*")) { + break; + } + specificity.tag++; + break; + case NodeType.PseudoSelector: + const text = element.getText(); + const childElements = element.getChildren(); + if (this.isPseudoElementIdentifier(text)) { + if (text.match(/^::slotted/i) && childElements.length > 0) { + // The specificity of ::slotted() is that of a pseudo-element, plus the specificity of its argument. + // ::slotted() does not allow a selector list as its argument, but this isn't the right place to give feedback on validity. + // Reporting the most specific child will be correct for correct CSS and will be forgiving in case of mistakes. + specificity.tag++; + let mostSpecificListItem = calculateMostSpecificListItem(childElements); + specificity.id += mostSpecificListItem.id; + specificity.attr += mostSpecificListItem.attr; + specificity.tag += mostSpecificListItem.tag; + continue elementLoop; + } + specificity.tag++; // pseudo element + continue elementLoop; + } + // where and child selectors have zero specificity + if (text.match(/^:where/i)) { + continue elementLoop; + } + // the most specific child selector + if (text.match(/^:(?:not|has|is)/i) && childElements.length > 0) { + let mostSpecificListItem = calculateMostSpecificListItem(childElements); + specificity.id += mostSpecificListItem.id; + specificity.attr += mostSpecificListItem.attr; + specificity.tag += mostSpecificListItem.tag; + continue elementLoop; + } + if (text.match(/^:(?:host|host-context)/i) && childElements.length > 0) { + // The specificity of :host() is that of a pseudo-class, plus the specificity of its argument. + // The specificity of :host-context() is that of a pseudo-class, plus the specificity of its argument. + specificity.attr++; + let mostSpecificListItem = calculateMostSpecificListItem(childElements); + specificity.id += mostSpecificListItem.id; + specificity.attr += mostSpecificListItem.attr; + specificity.tag += mostSpecificListItem.tag; + continue elementLoop; + } + if (text.match(/^:(?:nth-child|nth-last-child)/i) && childElements.length > 0) { + /* The specificity of the :nth-child(An+B [of S]?) pseudo-class is the specificity of a single pseudo-class plus, if S is specified, the specificity of the most specific complex selector in S */ + // https://www.w3.org/TR/selectors-4/#the-nth-child-pseudo + specificity.attr++; + // 23 = Binary Expression. + if (childElements.length === 3 && childElements[1].type === 23) { + let mostSpecificListItem = calculateMostSpecificListItem(childElements[2].getChildren()); + specificity.id += mostSpecificListItem.id; + specificity.attr += mostSpecificListItem.attr; + specificity.tag += mostSpecificListItem.tag; + continue elementLoop; + } + // Edge case: 'n' without integer prefix A, with B integer non-existent, is not regarded as a binary expression token. + const parser = new Parser(); + const pseudoSelectorText = childElements[1].getText(); + parser.scanner.setSource(pseudoSelectorText); + const firstToken = parser.scanner.scan(); + const secondToken = parser.scanner.scan(); + if (firstToken.text === 'n' || firstToken.text === '-n' && secondToken.text === 'of') { + const complexSelectorListNodes = []; + const complexSelectorText = pseudoSelectorText.slice(secondToken.offset + 2); + const complexSelectorArray = complexSelectorText.split(','); + for (const selector of complexSelectorArray) { + const node = parser.internalParse(selector, parser._parseSelector); + if (node) { + complexSelectorListNodes.push(node); + } + } + let mostSpecificListItem = calculateMostSpecificListItem(complexSelectorListNodes); + specificity.id += mostSpecificListItem.id; + specificity.attr += mostSpecificListItem.attr; + specificity.tag += mostSpecificListItem.tag; + continue elementLoop; + } + continue elementLoop; + } + specificity.attr++; //pseudo class + continue elementLoop; + } + if (element.getChildren().length > 0) { + const itemSpecificity = calculateScore(element); + specificity.id += itemSpecificity.id; + specificity.attr += itemSpecificity.attr; + specificity.tag += itemSpecificity.tag; + } + } + return specificity; + }; + const specificity = calculateScore(node); + return `[${t$2("Selector Specificity")}](https://developer.mozilla.org/docs/Web/CSS/Specificity): (${specificity.id}, ${specificity.attr}, ${specificity.tag})`; + } +} +class SelectorElementBuilder { + constructor(element) { + this.prev = null; + this.element = element; + } + processSelector(selector) { + let parentElement = null; + if (!(this.element instanceof RootElement)) { + if (selector.getChildren().some((c) => c.hasChildren() && c.getChild(0).type === NodeType.SelectorCombinator)) { + const curr = this.element.findRoot(); + if (curr.parent instanceof RootElement) { + parentElement = this.element; + this.element = curr.parent; + this.element.removeChild(curr); + this.prev = null; + } + } + } + for (const selectorChild of selector.getChildren()) { + if (selectorChild instanceof SimpleSelector) { + if (this.prev instanceof SimpleSelector) { + const labelElement = new LabelElement('\u2026'); + this.element.addChild(labelElement); + this.element = labelElement; + } + else if (this.prev && (this.prev.matches('+') || this.prev.matches('~')) && this.element.parent) { + this.element = this.element.parent; + } + if (this.prev && this.prev.matches('~')) { + this.element.addChild(new LabelElement('\u22EE')); + } + const thisElement = toElement(selectorChild, parentElement); + const root = thisElement.findRoot(); + this.element.addChild(root); + this.element = thisElement; + } + if (selectorChild instanceof SimpleSelector || + selectorChild.type === NodeType.SelectorCombinatorParent || + selectorChild.type === NodeType.SelectorCombinatorShadowPiercingDescendant || + selectorChild.type === NodeType.SelectorCombinatorSibling || + selectorChild.type === NodeType.SelectorCombinatorAllSiblings) { + this.prev = selectorChild; + } + } + } +} +function isNewSelectorContext(node) { + switch (node.type) { + case NodeType.MixinDeclaration: + case NodeType.Stylesheet: + return true; + } + return false; +} +function selectorToElement(node) { + if (node.matches('@at-root')) { + return null; + } + const root = new RootElement(); + const parentRuleSets = []; + const ruleSet = node.getParent(); + if (ruleSet instanceof RuleSet) { + let parent = ruleSet.getParent(); // parent of the selector's ruleset + while (parent && !isNewSelectorContext(parent)) { + if (parent instanceof RuleSet) { + if (parent.getSelectors().matches('@at-root')) { + break; + } + parentRuleSets.push(parent); + } + parent = parent.getParent(); + } + } + const builder = new SelectorElementBuilder(root); + for (let i = parentRuleSets.length - 1; i >= 0; i--) { + const selector = parentRuleSets[i].getSelectors().getChild(0); + if (selector) { + builder.processSelector(selector); + } + } + builder.processSelector(node); + return root; +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +class CSSHover { + constructor(clientCapabilities, cssDataManager) { + this.clientCapabilities = clientCapabilities; + this.cssDataManager = cssDataManager; + this.selectorPrinting = new SelectorPrinting(cssDataManager); + } + configure(settings) { + this.defaultSettings = settings; + } + doHover(document, position, stylesheet, settings = this.defaultSettings) { + function getRange(node) { + return Range$a.create(document.positionAt(node.offset), document.positionAt(node.end)); + } + const offset = document.offsetAt(position); + const nodepath = getNodePath$3(stylesheet, offset); + /** + * nodepath is top-down + * Build up the hover by appending inner node's information + */ + let hover = null; + for (let i = 0; i < nodepath.length; i++) { + const node = nodepath[i]; + if (node instanceof Selector) { + hover = { + contents: this.selectorPrinting.selectorToMarkedString(node), + range: getRange(node) + }; + break; + } + if (node instanceof SimpleSelector) { + /** + * Some sass specific at rules such as `@at-root` are parsed as `SimpleSelector` + */ + if (!startsWith$3(node.getText(), '@')) { + hover = { + contents: this.selectorPrinting.simpleSelectorToMarkedString(node), + range: getRange(node) + }; + } + break; + } + if (node instanceof Declaration) { + const propertyName = node.getFullPropertyName(); + const entry = this.cssDataManager.getProperty(propertyName); + if (entry) { + const contents = getEntryDescription(entry, this.doesSupportMarkdown(), settings); + if (contents) { + hover = { + contents, + range: getRange(node) + }; + } + else { + hover = null; + } + } + continue; + } + if (node instanceof UnknownAtRule) { + const atRuleName = node.getText(); + const entry = this.cssDataManager.getAtDirective(atRuleName); + if (entry) { + const contents = getEntryDescription(entry, this.doesSupportMarkdown(), settings); + if (contents) { + hover = { + contents, + range: getRange(node) + }; + } + else { + hover = null; + } + } + continue; + } + if (node instanceof Node$2 && node.type === NodeType.PseudoSelector) { + const selectorName = node.getText(); + const entry = selectorName.slice(0, 2) === '::' + ? this.cssDataManager.getPseudoElement(selectorName) + : this.cssDataManager.getPseudoClass(selectorName); + if (entry) { + const contents = getEntryDescription(entry, this.doesSupportMarkdown(), settings); + if (contents) { + hover = { + contents, + range: getRange(node) + }; + } + else { + hover = null; + } + } + continue; + } + } + if (hover) { + hover.contents = this.convertContents(hover.contents); + } + return hover; + } + convertContents(contents) { + if (!this.doesSupportMarkdown()) { + if (typeof contents === 'string') { + return contents; + } + // MarkupContent + else if ('kind' in contents) { + return { + kind: 'plaintext', + value: contents.value + }; + } + // MarkedString[] + else if (Array.isArray(contents)) { + return contents.map(c => { + return typeof c === 'string' ? c : c.value; + }); + } + // MarkedString + else { + return contents.value; + } + } + return contents; + } + doesSupportMarkdown() { + if (!isDefined$2(this.supportsMarkdown)) { + if (!isDefined$2(this.clientCapabilities)) { + this.supportsMarkdown = true; + return this.supportsMarkdown; + } + const hover = this.clientCapabilities.textDocument && this.clientCapabilities.textDocument.hover; + this.supportsMarkdown = hover && hover.contentFormat && Array.isArray(hover.contentFormat) && hover.contentFormat.indexOf(MarkupKind.Markdown) !== -1; + } + return this.supportsMarkdown; + } +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +const startsWithSchemeRegex = /^\w+:\/\//; +const startsWithData = /^data:/; +class CSSNavigation { + constructor(fileSystemProvider, resolveModuleReferences) { + this.fileSystemProvider = fileSystemProvider; + this.resolveModuleReferences = resolveModuleReferences; + } + configure(settings) { + this.defaultSettings = settings; + } + findDefinition(document, position, stylesheet) { + const symbols = new Symbols(stylesheet); + const offset = document.offsetAt(position); + const node = getNodeAtOffset(stylesheet, offset); + if (!node) { + return null; + } + const symbol = symbols.findSymbolFromNode(node); + if (!symbol) { + return null; + } + return { + uri: document.uri, + range: getRange$1(symbol.node, document) + }; + } + findReferences(document, position, stylesheet) { + const highlights = this.findDocumentHighlights(document, position, stylesheet); + return highlights.map(h => { + return { + uri: document.uri, + range: h.range + }; + }); + } + getHighlightNode(document, position, stylesheet) { + const offset = document.offsetAt(position); + let node = getNodeAtOffset(stylesheet, offset); + if (!node || node.type === NodeType.Stylesheet || node.type === NodeType.Declarations) { + return; + } + if (node.type === NodeType.Identifier && node.parent && node.parent.type === NodeType.ClassSelector) { + node = node.parent; + } + return node; + } + findDocumentHighlights(document, position, stylesheet) { + const result = []; + const node = this.getHighlightNode(document, position, stylesheet); + if (!node) { + return result; + } + const symbols = new Symbols(stylesheet); + const symbol = symbols.findSymbolFromNode(node); + const name = node.getText(); + stylesheet.accept(candidate => { + if (symbol) { + if (symbols.matchesSymbol(candidate, symbol)) { + result.push({ + kind: getHighlightKind(candidate), + range: getRange$1(candidate, document) + }); + return false; + } + } + else if (node && node.type === candidate.type && candidate.matches(name)) { + // Same node type and data + result.push({ + kind: getHighlightKind(candidate), + range: getRange$1(candidate, document) + }); + } + return true; + }); + return result; + } + isRawStringDocumentLinkNode(node) { + return node.type === NodeType.Import; + } + findDocumentLinks(document, stylesheet, documentContext) { + const linkData = this.findUnresolvedLinks(document, stylesheet); + const resolvedLinks = []; + for (let data of linkData) { + const link = data.link; + const target = link.target; + if (!target || startsWithData.test(target)) ; + else if (startsWithSchemeRegex.test(target)) { + resolvedLinks.push(link); + } + else { + const resolved = documentContext.resolveReference(target, document.uri); + if (resolved) { + link.target = resolved; + } + resolvedLinks.push(link); + } + } + return resolvedLinks; + } + async findDocumentLinks2(document, stylesheet, documentContext) { + const linkData = this.findUnresolvedLinks(document, stylesheet); + const resolvedLinks = []; + for (let data of linkData) { + const link = data.link; + const target = link.target; + if (!target || startsWithData.test(target)) ; + else if (startsWithSchemeRegex.test(target)) { + resolvedLinks.push(link); + } + else { + const resolvedTarget = await this.resolveReference(target, document.uri, documentContext, data.isRawLink); + if (resolvedTarget !== undefined) { + link.target = resolvedTarget; + resolvedLinks.push(link); + } + } + } + return resolvedLinks; + } + findUnresolvedLinks(document, stylesheet) { + const result = []; + const collect = (uriStringNode) => { + let rawUri = uriStringNode.getText(); + const range = getRange$1(uriStringNode, document); + // Make sure the range is not empty + if (range.start.line === range.end.line && range.start.character === range.end.character) { + return; + } + if (startsWith$3(rawUri, `'`) || startsWith$3(rawUri, `"`)) { + rawUri = rawUri.slice(1, -1); + } + const isRawLink = uriStringNode.parent ? this.isRawStringDocumentLinkNode(uriStringNode.parent) : false; + result.push({ link: { target: rawUri, range }, isRawLink }); + }; + stylesheet.accept(candidate => { + if (candidate.type === NodeType.URILiteral) { + const first = candidate.getChild(0); + if (first) { + collect(first); + } + return false; + } + /** + * In @import, it is possible to include links that do not use `url()` + * For example, `@import 'foo.css';` + */ + if (candidate.parent && this.isRawStringDocumentLinkNode(candidate.parent)) { + const rawText = candidate.getText(); + if (startsWith$3(rawText, `'`) || startsWith$3(rawText, `"`)) { + collect(candidate); + } + return false; + } + return true; + }); + return result; + } + findSymbolInformations(document, stylesheet) { + const result = []; + const addSymbolInformation = (name, kind, symbolNodeOrRange) => { + const range = symbolNodeOrRange instanceof Node$2 ? getRange$1(symbolNodeOrRange, document) : symbolNodeOrRange; + const entry = { + name: name || t$2('<undefined>'), + kind, + location: Location.create(document.uri, range) + }; + result.push(entry); + }; + this.collectDocumentSymbols(document, stylesheet, addSymbolInformation); + return result; + } + findDocumentSymbols(document, stylesheet) { + const result = []; + const parents = []; + const addDocumentSymbol = (name, kind, symbolNodeOrRange, nameNodeOrRange, bodyNode) => { + const range = symbolNodeOrRange instanceof Node$2 ? getRange$1(symbolNodeOrRange, document) : symbolNodeOrRange; + let selectionRange = nameNodeOrRange instanceof Node$2 ? getRange$1(nameNodeOrRange, document) : nameNodeOrRange; + if (!selectionRange || !containsRange(range, selectionRange)) { + selectionRange = Range$a.create(range.start, range.start); + } + const entry = { + name: name || t$2('<undefined>'), + kind, + range, + selectionRange + }; + let top = parents.pop(); + while (top && !containsRange(top[1], range)) { + top = parents.pop(); + } + if (top) { + const topSymbol = top[0]; + if (!topSymbol.children) { + topSymbol.children = []; + } + topSymbol.children.push(entry); + parents.push(top); // put back top + } + else { + result.push(entry); + } + if (bodyNode) { + parents.push([entry, getRange$1(bodyNode, document)]); + } + }; + this.collectDocumentSymbols(document, stylesheet, addDocumentSymbol); + return result; + } + collectDocumentSymbols(document, stylesheet, collect) { + stylesheet.accept(node => { + if (node instanceof RuleSet) { + for (const selector of node.getSelectors().getChildren()) { + if (selector instanceof Selector) { + const range = Range$a.create(document.positionAt(selector.offset), document.positionAt(node.end)); + collect(selector.getText(), SymbolKind$1.Class, range, selector, node.getDeclarations()); + } + } + } + else if (node instanceof VariableDeclaration) { + collect(node.getName(), SymbolKind$1.Variable, node, node.getVariable(), undefined); + } + else if (node instanceof MixinDeclaration) { + collect(node.getName(), SymbolKind$1.Method, node, node.getIdentifier(), node.getDeclarations()); + } + else if (node instanceof FunctionDeclaration) { + collect(node.getName(), SymbolKind$1.Function, node, node.getIdentifier(), node.getDeclarations()); + } + else if (node instanceof Keyframe) { + const name = t$2("@keyframes {0}", node.getName()); + collect(name, SymbolKind$1.Class, node, node.getIdentifier(), node.getDeclarations()); + } + else if (node instanceof FontFace) { + const name = t$2("@font-face"); + collect(name, SymbolKind$1.Class, node, undefined, node.getDeclarations()); + } + else if (node instanceof Media) { + const mediaList = node.getChild(0); + if (mediaList instanceof Medialist) { + const name = '@media ' + mediaList.getText(); + collect(name, SymbolKind$1.Module, node, mediaList, node.getDeclarations()); + } + } + return true; + }); + } + findDocumentColors(document, stylesheet) { + const result = []; + stylesheet.accept((node) => { + const colorInfo = getColorInformation(node, document); + if (colorInfo) { + result.push(colorInfo); + } + return true; + }); + return result; + } + getColorPresentations(document, stylesheet, color, range) { + const result = []; + const red256 = Math.round(color.red * 255), green256 = Math.round(color.green * 255), blue256 = Math.round(color.blue * 255); + let label; + if (color.alpha === 1) { + label = `rgb(${red256}, ${green256}, ${blue256})`; + } + else { + label = `rgba(${red256}, ${green256}, ${blue256}, ${color.alpha})`; + } + result.push({ label: label, textEdit: TextEdit.replace(range, label) }); + if (color.alpha === 1) { + label = `#${toTwoDigitHex(red256)}${toTwoDigitHex(green256)}${toTwoDigitHex(blue256)}`; + } + else { + label = `#${toTwoDigitHex(red256)}${toTwoDigitHex(green256)}${toTwoDigitHex(blue256)}${toTwoDigitHex(Math.round(color.alpha * 255))}`; + } + result.push({ label: label, textEdit: TextEdit.replace(range, label) }); + const hsl = hslFromColor(color); + if (hsl.a === 1) { + label = `hsl(${hsl.h}, ${Math.round(hsl.s * 100)}%, ${Math.round(hsl.l * 100)}%)`; + } + else { + label = `hsla(${hsl.h}, ${Math.round(hsl.s * 100)}%, ${Math.round(hsl.l * 100)}%, ${hsl.a})`; + } + result.push({ label: label, textEdit: TextEdit.replace(range, label) }); + const hwb = hwbFromColor(color); + if (hwb.a === 1) { + label = `hwb(${hwb.h} ${Math.round(hwb.w * 100)}% ${Math.round(hwb.b * 100)}%)`; + } + else { + label = `hwb(${hwb.h} ${Math.round(hwb.w * 100)}% ${Math.round(hwb.b * 100)}% / ${hwb.a})`; + } + result.push({ label: label, textEdit: TextEdit.replace(range, label) }); + return result; + } + prepareRename(document, position, stylesheet) { + const node = this.getHighlightNode(document, position, stylesheet); + if (node) { + return Range$a.create(document.positionAt(node.offset), document.positionAt(node.end)); + } + } + doRename(document, position, newName, stylesheet) { + const highlights = this.findDocumentHighlights(document, position, stylesheet); + const edits = highlights.map(h => TextEdit.replace(h.range, newName)); + return { + changes: { [document.uri]: edits } + }; + } + async resolveModuleReference(ref, documentUri, documentContext) { + if (startsWith$3(documentUri, 'file://')) { + const moduleName = getModuleNameFromPath(ref); + if (moduleName && moduleName !== '.' && moduleName !== '..') { + const rootFolderUri = documentContext.resolveReference('/', documentUri); + const documentFolderUri = dirname(documentUri); + const modulePath = await this.resolvePathToModule(moduleName, documentFolderUri, rootFolderUri); + if (modulePath) { + const pathWithinModule = ref.substring(moduleName.length + 1); + return joinPath(modulePath, pathWithinModule); + } + } + } + return undefined; + } + async mapReference(target, isRawLink) { + return target; + } + async resolveReference(target, documentUri, documentContext, isRawLink = false, settings = this.defaultSettings) { + // Following [css-loader](https://github.com/webpack-contrib/css-loader#url) + // and [sass-loader's](https://github.com/webpack-contrib/sass-loader#imports) + // convention, if an import path starts with ~ then use node module resolution + // *unless* it starts with "~/" as this refers to the user's home directory. + if (target[0] === '~' && target[1] !== '/' && this.fileSystemProvider) { + target = target.substring(1); + return this.mapReference(await this.resolveModuleReference(target, documentUri, documentContext), isRawLink); + } + const ref = await this.mapReference(documentContext.resolveReference(target, documentUri), isRawLink); + // Following [less-loader](https://github.com/webpack-contrib/less-loader#imports) + // and [sass-loader's](https://github.com/webpack-contrib/sass-loader#resolving-import-at-rules) + // new resolving import at-rules (~ is deprecated). The loader will first try to resolve @import as a relative path. If it cannot be resolved, + // then the loader will try to resolve @import inside node_modules. + if (this.resolveModuleReferences) { + if (ref && await this.fileExists(ref)) { + return ref; + } + const moduleReference = await this.mapReference(await this.resolveModuleReference(target, documentUri, documentContext), isRawLink); + if (moduleReference) { + return moduleReference; + } + } + // Try resolving the reference from the language configuration alias settings + if (ref && !(await this.fileExists(ref))) { + const rootFolderUri = documentContext.resolveReference('/', documentUri); + if (settings && rootFolderUri) { + // Specific file reference + if (target in settings) { + return this.mapReference(joinPath(rootFolderUri, settings[target]), isRawLink); + } + // Reference folder + const firstSlash = target.indexOf('/'); + const prefix = `${target.substring(0, firstSlash)}/`; + if (prefix in settings) { + const aliasPath = (settings[prefix]).slice(0, -1); + let newPath = joinPath(rootFolderUri, aliasPath); + return this.mapReference(newPath = joinPath(newPath, target.substring(prefix.length - 1)), isRawLink); + } + } + } + // fall back. it might not exists + return ref; + } + async resolvePathToModule(_moduleName, documentFolderUri, rootFolderUri) { + // resolve the module relative to the document. We can't use `require` here as the code is webpacked. + const packPath = joinPath(documentFolderUri, 'node_modules', _moduleName, 'package.json'); + if (await this.fileExists(packPath)) { + return dirname(packPath); + } + else if (rootFolderUri && documentFolderUri.startsWith(rootFolderUri) && (documentFolderUri.length !== rootFolderUri.length)) { + return this.resolvePathToModule(_moduleName, dirname(documentFolderUri), rootFolderUri); + } + return undefined; + } + async fileExists(uri) { + if (!this.fileSystemProvider) { + return false; + } + try { + const stat = await this.fileSystemProvider.stat(uri); + if (stat.type === FileType$1.Unknown && stat.size === -1) { + return false; + } + return true; + } + catch (err) { + return false; + } + } +} +function getColorInformation(node, document) { + const color = getColorValue(node); + if (color) { + const range = getRange$1(node, document); + return { color, range }; + } + return null; +} +function getRange$1(node, document) { + return Range$a.create(document.positionAt(node.offset), document.positionAt(node.end)); +} +/** + * Test if `otherRange` is in `range`. If the ranges are equal, will return true. + */ +function containsRange(range, otherRange) { + const otherStartLine = otherRange.start.line, otherEndLine = otherRange.end.line; + const rangeStartLine = range.start.line, rangeEndLine = range.end.line; + if (otherStartLine < rangeStartLine || otherEndLine < rangeStartLine) { + return false; + } + if (otherStartLine > rangeEndLine || otherEndLine > rangeEndLine) { + return false; + } + if (otherStartLine === rangeStartLine && otherRange.start.character < range.start.character) { + return false; + } + if (otherEndLine === rangeEndLine && otherRange.end.character > range.end.character) { + return false; + } + return true; +} +function getHighlightKind(node) { + if (node.type === NodeType.Selector) { + return DocumentHighlightKind.Write; + } + if (node instanceof Identifier) { + if (node.parent && node.parent instanceof Property) { + if (node.isCustomProperty) { + return DocumentHighlightKind.Write; + } + } + } + if (node.parent) { + switch (node.parent.type) { + case NodeType.FunctionDeclaration: + case NodeType.MixinDeclaration: + case NodeType.Keyframe: + case NodeType.VariableDeclaration: + case NodeType.FunctionParameter: + return DocumentHighlightKind.Write; + } + } + return DocumentHighlightKind.Read; +} +function toTwoDigitHex(n) { + const r = n.toString(16); + return r.length !== 2 ? '0' + r : r; +} +function getModuleNameFromPath(path) { + const firstSlash = path.indexOf('/'); + if (firstSlash === -1) { + return ''; + } + // If a scoped module (starts with @) then get up until second instance of '/', or to the end of the string for root-level imports. + if (path[0] === '@') { + const secondSlash = path.indexOf('/', firstSlash + 1); + if (secondSlash === -1) { + return path; + } + return path.substring(0, secondSlash); + } + // Otherwise get until first instance of '/' + return path.substring(0, firstSlash); +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +const Warning = Level.Warning; +const Error$1 = Level.Error; +const Ignore = Level.Ignore; +class Rule { + constructor(id, message, defaultValue) { + this.id = id; + this.message = message; + this.defaultValue = defaultValue; + // nothing to do + } +} +class Setting { + constructor(id, message, defaultValue) { + this.id = id; + this.message = message; + this.defaultValue = defaultValue; + // nothing to do + } +} +const Rules = { + AllVendorPrefixes: new Rule('compatibleVendorPrefixes', t$2("When using a vendor-specific prefix make sure to also include all other vendor-specific properties"), Ignore), + IncludeStandardPropertyWhenUsingVendorPrefix: new Rule('vendorPrefix', t$2("When using a vendor-specific prefix also include the standard property"), Warning), + DuplicateDeclarations: new Rule('duplicateProperties', t$2("Do not use duplicate style definitions"), Ignore), + EmptyRuleSet: new Rule('emptyRules', t$2("Do not use empty rulesets"), Warning), + ImportStatemement: new Rule('importStatement', t$2("Import statements do not load in parallel"), Ignore), + BewareOfBoxModelSize: new Rule('boxModel', t$2("Do not use width or height when using padding or border"), Ignore), + UniversalSelector: new Rule('universalSelector', t$2("The universal selector (*) is known to be slow"), Ignore), + ZeroWithUnit: new Rule('zeroUnits', t$2("No unit for zero needed"), Ignore), + RequiredPropertiesForFontFace: new Rule('fontFaceProperties', t$2("@font-face rule must define 'src' and 'font-family' properties"), Warning), + HexColorLength: new Rule('hexColorLength', t$2("Hex colors must consist of three, four, six or eight hex numbers"), Error$1), + ArgsInColorFunction: new Rule('argumentsInColorFunction', t$2("Invalid number of parameters"), Error$1), + UnknownProperty: new Rule('unknownProperties', t$2("Unknown property."), Warning), + UnknownAtRules: new Rule('unknownAtRules', t$2("Unknown at-rule."), Warning), + IEStarHack: new Rule('ieHack', t$2("IE hacks are only necessary when supporting IE7 and older"), Ignore), + UnknownVendorSpecificProperty: new Rule('unknownVendorSpecificProperties', t$2("Unknown vendor specific property."), Ignore), + PropertyIgnoredDueToDisplay: new Rule('propertyIgnoredDueToDisplay', t$2("Property is ignored due to the display."), Warning), + AvoidImportant: new Rule('important', t$2("Avoid using !important. It is an indication that the specificity of the entire CSS has gotten out of control and needs to be refactored."), Ignore), + AvoidFloat: new Rule('float', t$2("Avoid using 'float'. Floats lead to fragile CSS that is easy to break if one aspect of the layout changes."), Ignore), + AvoidIdSelector: new Rule('idSelector', t$2("Selectors should not contain IDs because these rules are too tightly coupled with the HTML."), Ignore), +}; +const Settings = { + ValidProperties: new Setting('validProperties', t$2("A list of properties that are not validated against the `unknownProperties` rule."), []) +}; +class LintConfigurationSettings { + constructor(conf = {}) { + this.conf = conf; + } + getRule(rule) { + if (this.conf.hasOwnProperty(rule.id)) { + const level = toLevel(this.conf[rule.id]); + if (level) { + return level; + } + } + return rule.defaultValue; + } + getSetting(setting) { + return this.conf[setting.id]; + } +} +function toLevel(level) { + switch (level) { + case 'ignore': return Level.Ignore; + case 'warning': return Level.Warning; + case 'error': return Level.Error; + } + return null; +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +class CSSCodeActions { + constructor(cssDataManager) { + this.cssDataManager = cssDataManager; + } + doCodeActions(document, range, context, stylesheet) { + return this.doCodeActions2(document, range, context, stylesheet).map(ca => { + const textDocumentEdit = ca.edit && ca.edit.documentChanges && ca.edit.documentChanges[0]; + return Command.create(ca.title, '_css.applyCodeAction', document.uri, document.version, textDocumentEdit && textDocumentEdit.edits); + }); + } + doCodeActions2(document, range, context, stylesheet) { + const result = []; + if (context.diagnostics) { + for (const diagnostic of context.diagnostics) { + this.appendFixesForMarker(document, stylesheet, diagnostic, result); + } + } + return result; + } + getFixesForUnknownProperty(document, property, marker, result) { + const propertyName = property.getName(); + const candidates = []; + this.cssDataManager.getProperties().forEach(p => { + const score = difference(propertyName, p.name); + if (score >= propertyName.length / 2 /*score_lim*/) { + candidates.push({ property: p.name, score }); + } + }); + // Sort in descending order. + candidates.sort((a, b) => { + return b.score - a.score || a.property.localeCompare(b.property); + }); + let maxActions = 3; + for (const candidate of candidates) { + const propertyName = candidate.property; + const title = t$2("Rename to '{0}'", propertyName); + const edit = TextEdit.replace(marker.range, propertyName); + const documentIdentifier = VersionedTextDocumentIdentifier.create(document.uri, document.version); + const workspaceEdit = { documentChanges: [TextDocumentEdit.create(documentIdentifier, [edit])] }; + const codeAction = CodeAction.create(title, workspaceEdit, CodeActionKind.QuickFix); + codeAction.diagnostics = [marker]; + result.push(codeAction); + if (--maxActions <= 0) { + return; + } + } + } + appendFixesForMarker(document, stylesheet, marker, result) { + if (marker.code !== Rules.UnknownProperty.id) { + return; + } + const offset = document.offsetAt(marker.range.start); + const end = document.offsetAt(marker.range.end); + const nodepath = getNodePath$3(stylesheet, offset); + for (let i = nodepath.length - 1; i >= 0; i--) { + const node = nodepath[i]; + if (node instanceof Declaration) { + const property = node.getProperty(); + if (property && property.offset === offset && property.end === end) { + this.getFixesForUnknownProperty(document, property, marker, result); + return; + } + } + } + } +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +class Element { + constructor(decl) { + this.fullPropertyName = decl.getFullPropertyName().toLowerCase(); + this.node = decl; + } +} +function setSide(model, side, value, property) { + const state = model[side]; + state.value = value; + if (value) { + if (!includes(state.properties, property)) { + state.properties.push(property); + } + } +} +function setAllSides(model, value, property) { + setSide(model, 'top', value, property); + setSide(model, 'right', value, property); + setSide(model, 'bottom', value, property); + setSide(model, 'left', value, property); +} +function updateModelWithValue(model, side, value, property) { + if (side === 'top' || side === 'right' || + side === 'bottom' || side === 'left') { + setSide(model, side, value, property); + } + else { + setAllSides(model, value, property); + } +} +function updateModelWithList(model, values, property) { + switch (values.length) { + case 1: + updateModelWithValue(model, undefined, values[0], property); + break; + case 2: + updateModelWithValue(model, 'top', values[0], property); + updateModelWithValue(model, 'bottom', values[0], property); + updateModelWithValue(model, 'right', values[1], property); + updateModelWithValue(model, 'left', values[1], property); + break; + case 3: + updateModelWithValue(model, 'top', values[0], property); + updateModelWithValue(model, 'right', values[1], property); + updateModelWithValue(model, 'left', values[1], property); + updateModelWithValue(model, 'bottom', values[2], property); + break; + case 4: + updateModelWithValue(model, 'top', values[0], property); + updateModelWithValue(model, 'right', values[1], property); + updateModelWithValue(model, 'bottom', values[2], property); + updateModelWithValue(model, 'left', values[3], property); + break; + } +} +function matches(value, candidates) { + for (let candidate of candidates) { + if (value.matches(candidate)) { + return true; + } + } + return false; +} +/** + * @param allowsKeywords whether the initial value of property is zero, so keywords `initial` and `unset` count as zero + * @return `true` if this node represents a non-zero border; otherwise, `false` + */ +function checkLineWidth(value, allowsKeywords = true) { + if (allowsKeywords && matches(value, ['initial', 'unset'])) { + return false; + } + // a <length> is a value and a unit + // so use `parseFloat` to strip the unit + return parseFloat(value.getText()) !== 0; +} +function checkLineWidthList(nodes, allowsKeywords = true) { + return nodes.map(node => checkLineWidth(node, allowsKeywords)); +} +/** + * @param allowsKeywords whether keywords `initial` and `unset` count as zero + * @return `true` if this node represents a non-zero border; otherwise, `false` + */ +function checkLineStyle(valueNode, allowsKeywords = true) { + if (matches(valueNode, ['none', 'hidden'])) { + return false; + } + if (allowsKeywords && matches(valueNode, ['initial', 'unset'])) { + return false; + } + return true; +} +function checkLineStyleList(nodes, allowsKeywords = true) { + return nodes.map(node => checkLineStyle(node, allowsKeywords)); +} +function checkBorderShorthand(node) { + const children = node.getChildren(); + // the only child can be a keyword, a <line-width>, or a <line-style> + // if either check returns false, the result is no border + if (children.length === 1) { + const value = children[0]; + return checkLineWidth(value) && checkLineStyle(value); + } + // multiple children can't contain keywords + // if any child means no border, the result is no border + for (const child of children) { + const value = child; + if (!checkLineWidth(value, /* allowsKeywords: */ false) || + !checkLineStyle(value, /* allowsKeywords: */ false)) { + return false; + } + } + return true; +} +function calculateBoxModel(propertyTable) { + const model = { + top: { value: false, properties: [] }, + right: { value: false, properties: [] }, + bottom: { value: false, properties: [] }, + left: { value: false, properties: [] }, + }; + for (const property of propertyTable) { + const value = property.node.value; + if (typeof value === 'undefined') { + continue; + } + switch (property.fullPropertyName) { + case 'box-sizing': + // has `box-sizing`, bail out + return { + top: { value: false, properties: [] }, + right: { value: false, properties: [] }, + bottom: { value: false, properties: [] }, + left: { value: false, properties: [] }, + }; + case 'width': + model.width = property; + break; + case 'height': + model.height = property; + break; + default: + const segments = property.fullPropertyName.split('-'); + switch (segments[0]) { + case 'border': + switch (segments[1]) { + case undefined: + case 'top': + case 'right': + case 'bottom': + case 'left': + switch (segments[2]) { + case undefined: + updateModelWithValue(model, segments[1], checkBorderShorthand(value), property); + break; + case 'width': + // the initial value of `border-width` is `medium`, not zero + updateModelWithValue(model, segments[1], checkLineWidth(value, false), property); + break; + case 'style': + // the initial value of `border-style` is `none` + updateModelWithValue(model, segments[1], checkLineStyle(value, true), property); + break; + } + break; + case 'width': + // the initial value of `border-width` is `medium`, not zero + updateModelWithList(model, checkLineWidthList(value.getChildren(), false), property); + break; + case 'style': + // the initial value of `border-style` is `none` + updateModelWithList(model, checkLineStyleList(value.getChildren(), true), property); + break; + } + break; + case 'padding': + if (segments.length === 1) { + // the initial value of `padding` is zero + updateModelWithList(model, checkLineWidthList(value.getChildren(), true), property); + } + else { + // the initial value of `padding` is zero + updateModelWithValue(model, segments[1], checkLineWidth(value, true), property); + } + break; + } + break; + } + } + return model; +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +class NodesByRootMap { + constructor() { + this.data = {}; + } + add(root, name, node) { + let entry = this.data[root]; + if (!entry) { + entry = { nodes: [], names: [] }; + this.data[root] = entry; + } + entry.names.push(name); + if (node) { + entry.nodes.push(node); + } + } +} +class LintVisitor { + static entries(node, document, settings, cssDataManager, entryFilter) { + const visitor = new LintVisitor(document, settings, cssDataManager); + node.acceptVisitor(visitor); + visitor.completeValidations(); + return visitor.getEntries(entryFilter); + } + constructor(document, settings, cssDataManager) { + this.cssDataManager = cssDataManager; + this.warnings = []; + this.settings = settings; + this.documentText = document.getText(); + this.keyframes = new NodesByRootMap(); + this.validProperties = {}; + const properties = settings.getSetting(Settings.ValidProperties); + if (Array.isArray(properties)) { + properties.forEach((p) => { + if (typeof p === 'string') { + const name = p.trim().toLowerCase(); + if (name.length) { + this.validProperties[name] = true; + } + } + }); + } + } + isValidPropertyDeclaration(element) { + const propertyName = element.fullPropertyName; + return this.validProperties[propertyName]; + } + fetch(input, s) { + const elements = []; + for (const curr of input) { + if (curr.fullPropertyName === s) { + elements.push(curr); + } + } + return elements; + } + fetchWithValue(input, s, v) { + const elements = []; + for (const inputElement of input) { + if (inputElement.fullPropertyName === s) { + const expression = inputElement.node.getValue(); + if (expression && this.findValueInExpression(expression, v)) { + elements.push(inputElement); + } + } + } + return elements; + } + findValueInExpression(expression, v) { + let found = false; + expression.accept(node => { + if (node.type === NodeType.Identifier && node.matches(v)) { + found = true; + } + return !found; + }); + return found; + } + getEntries(filter = (Level.Warning | Level.Error)) { + return this.warnings.filter(entry => { + return (entry.getLevel() & filter) !== 0; + }); + } + addEntry(node, rule, details) { + const entry = new Marker(node, rule, this.settings.getRule(rule), details); + this.warnings.push(entry); + } + getMissingNames(expected, actual) { + const expectedClone = expected.slice(0); // clone + for (let i = 0; i < actual.length; i++) { + const k = expectedClone.indexOf(actual[i]); + if (k !== -1) { + expectedClone[k] = null; + } + } + let result = null; + for (let i = 0; i < expectedClone.length; i++) { + const curr = expectedClone[i]; + if (curr) { + if (result === null) { + result = t$2("'{0}'", curr); + } + else { + result = t$2("{0}, '{1}'", result, curr); + } + } + } + return result; + } + visitNode(node) { + switch (node.type) { + case NodeType.UnknownAtRule: + return this.visitUnknownAtRule(node); + case NodeType.Keyframe: + return this.visitKeyframe(node); + case NodeType.FontFace: + return this.visitFontFace(node); + case NodeType.Ruleset: + return this.visitRuleSet(node); + case NodeType.SimpleSelector: + return this.visitSimpleSelector(node); + case NodeType.Function: + return this.visitFunction(node); + case NodeType.NumericValue: + return this.visitNumericValue(node); + case NodeType.Import: + return this.visitImport(node); + case NodeType.HexColorValue: + return this.visitHexColorValue(node); + case NodeType.Prio: + return this.visitPrio(node); + case NodeType.IdentifierSelector: + return this.visitIdentifierSelector(node); + } + return true; + } + completeValidations() { + this.validateKeyframes(); + } + visitUnknownAtRule(node) { + const atRuleName = node.getChild(0); + if (!atRuleName) { + return false; + } + const atDirective = this.cssDataManager.getAtDirective(atRuleName.getText()); + if (atDirective) { + return false; + } + this.addEntry(atRuleName, Rules.UnknownAtRules, `Unknown at rule ${atRuleName.getText()}`); + return true; + } + visitKeyframe(node) { + const keyword = node.getKeyword(); + if (!keyword) { + return false; + } + const text = keyword.getText(); + this.keyframes.add(node.getName(), text, (text !== '@keyframes') ? keyword : null); + return true; + } + validateKeyframes() { + // @keyframe and it's vendor specific alternatives + // @keyframe should be included + const expected = ['@-webkit-keyframes', '@-moz-keyframes', '@-o-keyframes']; + for (const name in this.keyframes.data) { + const actual = this.keyframes.data[name].names; + const needsStandard = (actual.indexOf('@keyframes') === -1); + if (!needsStandard && actual.length === 1) { + continue; // only the non-vendor specific keyword is used, that's fine, no warning + } + const missingVendorSpecific = this.getMissingNames(expected, actual); + if (missingVendorSpecific || needsStandard) { + for (const node of this.keyframes.data[name].nodes) { + if (needsStandard) { + const message = t$2("Always define standard rule '@keyframes' when defining keyframes."); + this.addEntry(node, Rules.IncludeStandardPropertyWhenUsingVendorPrefix, message); + } + if (missingVendorSpecific) { + const message = t$2("Always include all vendor specific rules: Missing: {0}", missingVendorSpecific); + this.addEntry(node, Rules.AllVendorPrefixes, message); + } + } + } + } + return true; + } + visitSimpleSelector(node) { + ///////////////////////////////////////////////////////////// + // Lint - The universal selector (*) is known to be slow. + ///////////////////////////////////////////////////////////// + const firstChar = this.documentText.charAt(node.offset); + if (node.length === 1 && firstChar === '*') { + this.addEntry(node, Rules.UniversalSelector); + } + return true; + } + visitIdentifierSelector(node) { + ///////////////////////////////////////////////////////////// + // Lint - Avoid id selectors + ///////////////////////////////////////////////////////////// + this.addEntry(node, Rules.AvoidIdSelector); + return true; + } + visitImport(node) { + ///////////////////////////////////////////////////////////// + // Lint - Import statements shouldn't be used, because they aren't offering parallel downloads. + ///////////////////////////////////////////////////////////// + this.addEntry(node, Rules.ImportStatemement); + return true; + } + visitRuleSet(node) { + ///////////////////////////////////////////////////////////// + // Lint - Don't use empty rulesets. + ///////////////////////////////////////////////////////////// + const declarations = node.getDeclarations(); + if (!declarations) { + // syntax error + return false; + } + if (!declarations.hasChildren()) { + this.addEntry(node.getSelectors(), Rules.EmptyRuleSet); + } + const propertyTable = []; + for (const element of declarations.getChildren()) { + if (element instanceof Declaration) { + propertyTable.push(new Element(element)); + } + } + ///////////////////////////////////////////////////////////// + // the rule warns when it finds: + // width being used with border, border-left, border-right, padding, padding-left, or padding-right + // height being used with border, border-top, border-bottom, padding, padding-top, or padding-bottom + // No error when box-sizing property is specified, as it assumes the user knows what he's doing. + // see https://github.com/CSSLint/csslint/wiki/Beware-of-box-model-size + ///////////////////////////////////////////////////////////// + const boxModel = calculateBoxModel(propertyTable); + if (boxModel.width) { + let properties = []; + if (boxModel.right.value) { + properties = union(properties, boxModel.right.properties); + } + if (boxModel.left.value) { + properties = union(properties, boxModel.left.properties); + } + if (properties.length !== 0) { + for (const item of properties) { + this.addEntry(item.node, Rules.BewareOfBoxModelSize); + } + this.addEntry(boxModel.width.node, Rules.BewareOfBoxModelSize); + } + } + if (boxModel.height) { + let properties = []; + if (boxModel.top.value) { + properties = union(properties, boxModel.top.properties); + } + if (boxModel.bottom.value) { + properties = union(properties, boxModel.bottom.properties); + } + if (properties.length !== 0) { + for (const item of properties) { + this.addEntry(item.node, Rules.BewareOfBoxModelSize); + } + this.addEntry(boxModel.height.node, Rules.BewareOfBoxModelSize); + } + } + ///////////////////////////////////////////////////////////// + // Properties ignored due to display + ///////////////////////////////////////////////////////////// + // With 'display: inline-block', 'float' has no effect + let displayElems = this.fetchWithValue(propertyTable, 'display', 'inline-block'); + if (displayElems.length > 0) { + const elem = this.fetch(propertyTable, 'float'); + for (let index = 0; index < elem.length; index++) { + const node = elem[index].node; + const value = node.getValue(); + if (value && !value.matches('none')) { + this.addEntry(node, Rules.PropertyIgnoredDueToDisplay, t$2("inline-block is ignored due to the float. If 'float' has a value other than 'none', the box is floated and 'display' is treated as 'block'")); + } + } + } + // With 'display: block', 'vertical-align' has no effect + displayElems = this.fetchWithValue(propertyTable, 'display', 'block'); + if (displayElems.length > 0) { + const elem = this.fetch(propertyTable, 'vertical-align'); + for (let index = 0; index < elem.length; index++) { + this.addEntry(elem[index].node, Rules.PropertyIgnoredDueToDisplay, t$2("Property is ignored due to the display. With 'display: block', vertical-align should not be used.")); + } + } + ///////////////////////////////////////////////////////////// + // Avoid 'float' + ///////////////////////////////////////////////////////////// + const elements = this.fetch(propertyTable, 'float'); + for (let index = 0; index < elements.length; index++) { + const element = elements[index]; + if (!this.isValidPropertyDeclaration(element)) { + this.addEntry(element.node, Rules.AvoidFloat); + } + } + ///////////////////////////////////////////////////////////// + // Don't use duplicate declarations. + ///////////////////////////////////////////////////////////// + for (let i = 0; i < propertyTable.length; i++) { + const element = propertyTable[i]; + if (element.fullPropertyName !== 'background' && !this.validProperties[element.fullPropertyName]) { + const value = element.node.getValue(); + if (value && this.documentText.charAt(value.offset) !== '-') { + const elements = this.fetch(propertyTable, element.fullPropertyName); + if (elements.length > 1) { + for (let k = 0; k < elements.length; k++) { + const value = elements[k].node.getValue(); + if (value && this.documentText.charAt(value.offset) !== '-' && elements[k] !== element) { + this.addEntry(element.node, Rules.DuplicateDeclarations); + } + } + } + } + } + } + ///////////////////////////////////////////////////////////// + // Unknown propery & When using a vendor-prefixed gradient, make sure to use them all. + ///////////////////////////////////////////////////////////// + const isExportBlock = node.getSelectors().matches(":export"); + if (!isExportBlock) { + const propertiesBySuffix = new NodesByRootMap(); + let containsUnknowns = false; + for (const element of propertyTable) { + const decl = element.node; + if (this.isCSSDeclaration(decl)) { + let name = element.fullPropertyName; + const firstChar = name.charAt(0); + if (firstChar === '-') { + if (name.charAt(1) !== '-') { // avoid css variables + if (!this.cssDataManager.isKnownProperty(name) && !this.validProperties[name]) { + this.addEntry(decl.getProperty(), Rules.UnknownVendorSpecificProperty); + } + const nonPrefixedName = decl.getNonPrefixedPropertyName(); + propertiesBySuffix.add(nonPrefixedName, name, decl.getProperty()); + } + } + else { + const fullName = name; + if (firstChar === '*' || firstChar === '_') { + this.addEntry(decl.getProperty(), Rules.IEStarHack); + name = name.substr(1); + } + // _property and *property might be contributed via custom data + if (!this.cssDataManager.isKnownProperty(fullName) && !this.cssDataManager.isKnownProperty(name)) { + if (!this.validProperties[name]) { + this.addEntry(decl.getProperty(), Rules.UnknownProperty, t$2("Unknown property: '{0}'", decl.getFullPropertyName())); + } + } + propertiesBySuffix.add(name, name, null); // don't pass the node as we don't show errors on the standard + } + } + else { + containsUnknowns = true; + } + } + if (!containsUnknowns) { // don't perform this test if there are + for (const suffix in propertiesBySuffix.data) { + const entry = propertiesBySuffix.data[suffix]; + const actual = entry.names; + const needsStandard = this.cssDataManager.isStandardProperty(suffix) && (actual.indexOf(suffix) === -1); + if (!needsStandard && actual.length === 1) { + continue; // only the non-vendor specific rule is used, that's fine, no warning + } + /** + * We should ignore missing standard properties, if there's an explicit contextual reference to a + * vendor specific pseudo-element selector with the same vendor (prefix) + * + * (See https://github.com/microsoft/vscode/issues/164350) + */ + const entriesThatNeedStandard = new Set(needsStandard ? entry.nodes : []); + if (needsStandard) { + const pseudoElements = this.getContextualVendorSpecificPseudoElements(node); + for (const node of entry.nodes) { + const propertyName = node.getName(); + const prefix = propertyName.substring(0, propertyName.length - suffix.length); + if (pseudoElements.some(x => x.startsWith(prefix))) { + entriesThatNeedStandard.delete(node); + } + } + } + const expected = []; + for (let i = 0, len = LintVisitor.prefixes.length; i < len; i++) { + const prefix = LintVisitor.prefixes[i]; + if (this.cssDataManager.isStandardProperty(prefix + suffix)) { + expected.push(prefix + suffix); + } + } + const missingVendorSpecific = this.getMissingNames(expected, actual); + if (missingVendorSpecific || needsStandard) { + for (const node of entry.nodes) { + if (needsStandard && entriesThatNeedStandard.has(node)) { + const message = t$2("Also define the standard property '{0}' for compatibility", suffix); + this.addEntry(node, Rules.IncludeStandardPropertyWhenUsingVendorPrefix, message); + } + if (missingVendorSpecific) { + const message = t$2("Always include all vendor specific properties: Missing: {0}", missingVendorSpecific); + this.addEntry(node, Rules.AllVendorPrefixes, message); + } + } + } + } + } + } + return true; + } + /** + * Walks up the syntax tree (starting from given `node`) and captures vendor + * specific pseudo-element selectors. + * @returns An array of vendor specific pseudo-elements; or empty if none + * was found. + */ + getContextualVendorSpecificPseudoElements(node) { + function walkDown(s, n) { + for (const child of n.getChildren()) { + if (child.type === NodeType.PseudoSelector) { + const pseudoElement = child.getChildren()[0]?.getText(); + if (pseudoElement) { + s.add(pseudoElement); + } + } + walkDown(s, child); + } + } + function walkUp(s, n) { + if (n.type === NodeType.Ruleset) { + for (const selector of n.getSelectors().getChildren()) { + walkDown(s, selector); + } + } + return n.parent ? walkUp(s, n.parent) : undefined; + } + const result = new Set(); + walkUp(result, node); + return Array.from(result); + } + visitPrio(node) { + ///////////////////////////////////////////////////////////// + // Don't use !important + ///////////////////////////////////////////////////////////// + this.addEntry(node, Rules.AvoidImportant); + return true; + } + visitNumericValue(node) { + ///////////////////////////////////////////////////////////// + // 0 has no following unit + ///////////////////////////////////////////////////////////// + const funcDecl = node.findParent(NodeType.Function); + if (funcDecl && funcDecl.getName() === 'calc') { + return true; + } + const decl = node.findParent(NodeType.Declaration); + if (decl) { + const declValue = decl.getValue(); + if (declValue) { + const value = node.getValue(); + if (!value.unit || units.length.indexOf(value.unit.toLowerCase()) === -1) { + return true; + } + if (parseFloat(value.value) === 0.0 && !!value.unit && !this.validProperties[decl.getFullPropertyName()]) { + this.addEntry(node, Rules.ZeroWithUnit); + } + } + } + return true; + } + visitFontFace(node) { + const declarations = node.getDeclarations(); + if (!declarations) { + // syntax error + return false; + } + let definesSrc = false, definesFontFamily = false; + let containsUnknowns = false; + for (const node of declarations.getChildren()) { + if (this.isCSSDeclaration(node)) { + const name = node.getProperty().getName().toLowerCase(); + if (name === 'src') { + definesSrc = true; + } + if (name === 'font-family') { + definesFontFamily = true; + } + } + else { + containsUnknowns = true; + } + } + if (!containsUnknowns && (!definesSrc || !definesFontFamily)) { + this.addEntry(node, Rules.RequiredPropertiesForFontFace); + } + return true; + } + isCSSDeclaration(node) { + if (node instanceof Declaration) { + if (!node.getValue()) { + return false; + } + const property = node.getProperty(); + if (!property) { + return false; + } + const identifier = property.getIdentifier(); + if (!identifier || identifier.containsInterpolation()) { + return false; + } + return true; + } + return false; + } + visitHexColorValue(node) { + // Rule: #eeff0011 or #eeff00 or #ef01 or #ef0 + const length = node.length; + if (length !== 9 && length !== 7 && length !== 5 && length !== 4) { + this.addEntry(node, Rules.HexColorLength); + } + return false; + } + visitFunction(node) { + const fnName = node.getName().toLowerCase(); + let expectedAttrCount = -1; + let actualAttrCount = 0; + switch (fnName) { + case 'rgb(': + case 'hsl(': + expectedAttrCount = 3; + break; + case 'rgba(': + case 'hsla(': + expectedAttrCount = 4; + break; + } + if (expectedAttrCount !== -1) { + node.getArguments().accept(n => { + if (n instanceof BinaryExpression) { + actualAttrCount += 1; + return false; + } + return true; + }); + if (actualAttrCount !== expectedAttrCount) { + this.addEntry(node, Rules.ArgsInColorFunction); + } + } + return true; + } +} +LintVisitor.prefixes = [ + '-ms-', '-moz-', '-o-', '-webkit-', // Quite common + // '-xv-', '-atsc-', '-wap-', '-khtml-', 'mso-', 'prince-', '-ah-', '-hp-', '-ro-', '-rim-', '-tc-' // Quite un-common +]; + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +class CSSValidation { + constructor(cssDataManager) { + this.cssDataManager = cssDataManager; + } + configure(settings) { + this.settings = settings; + } + doValidation(document, stylesheet, settings = this.settings) { + if (settings && settings.validate === false) { + return []; + } + const entries = []; + entries.push.apply(entries, ParseErrorCollector.entries(stylesheet)); + entries.push.apply(entries, LintVisitor.entries(stylesheet, document, new LintConfigurationSettings(settings && settings.lint), this.cssDataManager)); + const ruleIds = []; + for (const r in Rules) { + ruleIds.push(Rules[r].id); + } + function toDiagnostic(marker) { + const range = Range$a.create(document.positionAt(marker.getOffset()), document.positionAt(marker.getOffset() + marker.getLength())); + const source = document.languageId; + return { + code: marker.getRule().id, + source: source, + message: marker.getMessage(), + severity: marker.getLevel() === Level.Warning ? DiagnosticSeverity.Warning : DiagnosticSeverity.Error, + range: range + }; + } + return entries.filter(entry => entry.getLevel() !== Level.Ignore).map(toDiagnostic); + } +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +const _FSL$2 = '/'.charCodeAt(0); +const _NWL$2 = '\n'.charCodeAt(0); +const _CAR$2 = '\r'.charCodeAt(0); +const _LFD$2 = '\f'.charCodeAt(0); +const _DLR = '$'.charCodeAt(0); +const _HSH = '#'.charCodeAt(0); +const _CUL$1 = '{'.charCodeAt(0); +const _EQS$1 = '='.charCodeAt(0); +const _BNG$1 = '!'.charCodeAt(0); +const _LAN$1 = '<'.charCodeAt(0); +const _RAN$1 = '>'.charCodeAt(0); +const _DOT$1 = '.'.charCodeAt(0); +let customTokenValue$1 = TokenType$1.CustomToken; +const VariableName = customTokenValue$1++; +const InterpolationFunction = customTokenValue$1++; +customTokenValue$1++; +const EqualsOperator = customTokenValue$1++; +const NotEqualsOperator = customTokenValue$1++; +const GreaterEqualsOperator = customTokenValue$1++; +const SmallerEqualsOperator = customTokenValue$1++; +const Ellipsis$1 = customTokenValue$1++; +customTokenValue$1++; +class SCSSScanner extends Scanner { + scanNext(offset) { + // scss variable + if (this.stream.advanceIfChar(_DLR)) { + const content = ['$']; + if (this.ident(content)) { + return this.finishToken(offset, VariableName, content.join('')); + } + else { + this.stream.goBackTo(offset); + } + } + // scss: interpolation function #{..}) + if (this.stream.advanceIfChars([_HSH, _CUL$1])) { + return this.finishToken(offset, InterpolationFunction); + } + // operator == + if (this.stream.advanceIfChars([_EQS$1, _EQS$1])) { + return this.finishToken(offset, EqualsOperator); + } + // operator != + if (this.stream.advanceIfChars([_BNG$1, _EQS$1])) { + return this.finishToken(offset, NotEqualsOperator); + } + // operators <, <= + if (this.stream.advanceIfChar(_LAN$1)) { + if (this.stream.advanceIfChar(_EQS$1)) { + return this.finishToken(offset, SmallerEqualsOperator); + } + return this.finishToken(offset, TokenType$1.Delim); + } + // ooperators >, >= + if (this.stream.advanceIfChar(_RAN$1)) { + if (this.stream.advanceIfChar(_EQS$1)) { + return this.finishToken(offset, GreaterEqualsOperator); + } + return this.finishToken(offset, TokenType$1.Delim); + } + // ellipis + if (this.stream.advanceIfChars([_DOT$1, _DOT$1, _DOT$1])) { + return this.finishToken(offset, Ellipsis$1); + } + return super.scanNext(offset); + } + comment() { + if (super.comment()) { + return true; + } + if (!this.inURL && this.stream.advanceIfChars([_FSL$2, _FSL$2])) { + this.stream.advanceWhileChar((ch) => { + switch (ch) { + case _NWL$2: + case _CAR$2: + case _LFD$2: + return false; + default: + return true; + } + }); + return true; + } + else { + return false; + } + } +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +class SCSSIssueType { + constructor(id, message) { + this.id = id; + this.message = message; + } +} +const SCSSParseError = { + FromExpected: new SCSSIssueType('scss-fromexpected', t$2("'from' expected")), + ThroughOrToExpected: new SCSSIssueType('scss-throughexpected', t$2("'through' or 'to' expected")), + InExpected: new SCSSIssueType('scss-fromexpected', t$2("'in' expected")), +}; + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +/// <summary> +/// A parser for scss +/// http://sass-lang.com/documentation/file.SASS_REFERENCE.html +/// </summary> +class SCSSParser extends Parser { + constructor() { + super(new SCSSScanner()); + } + _parseStylesheetStatement(isNested = false) { + if (this.peek(TokenType$1.AtKeyword)) { + return this._parseWarnAndDebug() // @warn, @debug and @error statements + || this._parseControlStatement() // @if, @while, @for, @each + || this._parseMixinDeclaration() // @mixin + || this._parseMixinContent() // @content + || this._parseMixinReference() // @include + || this._parseFunctionDeclaration() // @function + || this._parseForward() // @forward + || this._parseUse() // @use + || this._parseRuleset(isNested) // @at-rule + || super._parseStylesheetAtStatement(isNested); + } + return this._parseRuleset(true) || this._parseVariableDeclaration(); + } + _parseImport() { + if (!this.peekKeyword('@import')) { + return null; + } + const node = this.create(Import); + this.consumeToken(); + if (!node.addChild(this._parseURILiteral()) && !node.addChild(this._parseStringLiteral())) { + return this.finish(node, ParseError.URIOrStringExpected); + } + while (this.accept(TokenType$1.Comma)) { + if (!node.addChild(this._parseURILiteral()) && !node.addChild(this._parseStringLiteral())) { + return this.finish(node, ParseError.URIOrStringExpected); + } + } + return this._completeParseImport(node); + } + // scss variables: $font-size: 12px; + _parseVariableDeclaration(panic = []) { + if (!this.peek(VariableName)) { + return null; + } + const node = this.create(VariableDeclaration); + if (!node.setVariable(this._parseVariable())) { + return null; + } + if (!this.accept(TokenType$1.Colon)) { + return this.finish(node, ParseError.ColonExpected); + } + if (this.prevToken) { + node.colonPosition = this.prevToken.offset; + } + if (!node.setValue(this._parseExpr())) { + return this.finish(node, ParseError.VariableValueExpected, [], panic); + } + while (this.peek(TokenType$1.Exclamation)) { + if (node.addChild(this._tryParsePrio())) ; + else { + this.consumeToken(); + if (!this.peekRegExp(TokenType$1.Ident, /^(default|global)$/)) { + return this.finish(node, ParseError.UnknownKeyword); + } + this.consumeToken(); + } + } + if (this.peek(TokenType$1.SemiColon)) { + node.semicolonPosition = this.token.offset; // not part of the declaration, but useful information for code assist + } + return this.finish(node); + } + _parseMediaCondition() { + return this._parseInterpolation() || super._parseMediaCondition(); + } + _parseMediaFeatureRangeOperator() { + return this.accept(SmallerEqualsOperator) || this.accept(GreaterEqualsOperator) || super._parseMediaFeatureRangeOperator(); + } + _parseMediaFeatureName() { + return this._parseModuleMember() + || this._parseFunction() // function before ident + || this._parseIdent() + || this._parseVariable(); + } + _parseKeyframeSelector() { + return this._tryParseKeyframeSelector() + || this._parseControlStatement(this._parseKeyframeSelector.bind(this)) + || this._parseWarnAndDebug() // @warn, @debug and @error statements + || this._parseMixinReference() // @include + || this._parseFunctionDeclaration() // @function + || this._parseVariableDeclaration() + || this._parseMixinContent(); + } + _parseVariable() { + if (!this.peek(VariableName)) { + return null; + } + const node = this.create(Variable); + this.consumeToken(); + return node; + } + _parseModuleMember() { + const pos = this.mark(); + const node = this.create(Module); + if (!node.setIdentifier(this._parseIdent([ReferenceType.Module]))) { + return null; + } + if (this.hasWhitespace() + || !this.acceptDelim('.') + || this.hasWhitespace()) { + this.restoreAtMark(pos); + return null; + } + if (!node.addChild(this._parseVariable() || this._parseFunction())) { + return this.finish(node, ParseError.IdentifierOrVariableExpected); + } + return node; + } + _parseIdent(referenceTypes) { + if (!this.peek(TokenType$1.Ident) && !this.peek(InterpolationFunction) && !this.peekDelim('-')) { + return null; + } + const node = this.create(Identifier); + node.referenceTypes = referenceTypes; + node.isCustomProperty = this.peekRegExp(TokenType$1.Ident, /^--/); + let hasContent = false; + const indentInterpolation = () => { + const pos = this.mark(); + if (this.acceptDelim('-')) { + if (!this.hasWhitespace()) { + this.acceptDelim('-'); + } + if (this.hasWhitespace()) { + this.restoreAtMark(pos); + return null; + } + } + return this._parseInterpolation(); + }; + while (this.accept(TokenType$1.Ident) || node.addChild(indentInterpolation()) || (hasContent && this.acceptRegexp(/^[\w-]/))) { + hasContent = true; + if (this.hasWhitespace()) { + break; + } + } + return hasContent ? this.finish(node) : null; + } + _parseTermExpression() { + return this._parseModuleMember() || + this._parseVariable() || + this._parseNestingSelector() || + //this._tryParsePrio() || + super._parseTermExpression(); + } + _parseInterpolation() { + if (this.peek(InterpolationFunction)) { + const node = this.create(Interpolation); + this.consumeToken(); + if (!node.addChild(this._parseExpr()) && !this._parseNestingSelector()) { + if (this.accept(TokenType$1.CurlyR)) { + return this.finish(node); + } + return this.finish(node, ParseError.ExpressionExpected); + } + if (!this.accept(TokenType$1.CurlyR)) { + return this.finish(node, ParseError.RightCurlyExpected); + } + return this.finish(node); + } + return null; + } + _parseOperator() { + if (this.peek(EqualsOperator) || this.peek(NotEqualsOperator) + || this.peek(GreaterEqualsOperator) || this.peek(SmallerEqualsOperator) + || this.peekDelim('>') || this.peekDelim('<') + || this.peekIdent('and') || this.peekIdent('or') + || this.peekDelim('%')) { + const node = this.createNode(NodeType.Operator); + this.consumeToken(); + return this.finish(node); + } + return super._parseOperator(); + } + _parseUnaryOperator() { + if (this.peekIdent('not')) { + const node = this.create(Node$2); + this.consumeToken(); + return this.finish(node); + } + return super._parseUnaryOperator(); + } + _parseRuleSetDeclaration() { + if (this.peek(TokenType$1.AtKeyword)) { + return this._parseKeyframe() // nested @keyframe + || this._parseImport() // nested @import + || this._parseMedia(true) // nested @media + || this._parseFontFace() // nested @font-face + || this._parseWarnAndDebug() // @warn, @debug and @error statements + || this._parseControlStatement() // @if, @while, @for, @each + || this._parseFunctionDeclaration() // @function + || this._parseExtends() // @extends + || this._parseMixinReference() // @include + || this._parseMixinContent() // @content + || this._parseMixinDeclaration() // nested @mixin + || this._parseRuleset(true) // @at-rule + || this._parseSupports(true) // @supports + || this._parseLayer() // @layer + || this._parsePropertyAtRule() // @property + || this._parseRuleSetDeclarationAtStatement(); + } + return this._parseVariableDeclaration() // variable declaration + || this._tryParseRuleset(true) // nested ruleset + || this._parseDeclaration(); // try css ruleset declaration as last so in the error case, the ast will contain a declaration + } + _parseDeclaration(stopTokens) { + const custonProperty = this._tryParseCustomPropertyDeclaration(stopTokens); + if (custonProperty) { + return custonProperty; + } + const node = this.create(Declaration); + if (!node.setProperty(this._parseProperty())) { + return null; + } + if (!this.accept(TokenType$1.Colon)) { + return this.finish(node, ParseError.ColonExpected, [TokenType$1.Colon], stopTokens || [TokenType$1.SemiColon]); + } + if (this.prevToken) { + node.colonPosition = this.prevToken.offset; + } + let hasContent = false; + if (node.setValue(this._parseExpr())) { + hasContent = true; + node.addChild(this._parsePrio()); + } + if (this.peek(TokenType$1.CurlyL)) { + node.setNestedProperties(this._parseNestedProperties()); + } + else { + if (!hasContent) { + return this.finish(node, ParseError.PropertyValueExpected); + } + } + if (this.peek(TokenType$1.SemiColon)) { + node.semicolonPosition = this.token.offset; // not part of the declaration, but useful information for code assist + } + return this.finish(node); + } + _parseNestedProperties() { + const node = this.create(NestedProperties); + return this._parseBody(node, this._parseDeclaration.bind(this)); + } + _parseExtends() { + if (this.peekKeyword('@extend')) { + const node = this.create(ExtendsReference); + this.consumeToken(); + if (!node.getSelectors().addChild(this._parseSimpleSelector())) { + return this.finish(node, ParseError.SelectorExpected); + } + while (this.accept(TokenType$1.Comma)) { + node.getSelectors().addChild(this._parseSimpleSelector()); + } + if (this.accept(TokenType$1.Exclamation)) { + if (!this.acceptIdent('optional')) { + return this.finish(node, ParseError.UnknownKeyword); + } + } + return this.finish(node); + } + return null; + } + _parseSimpleSelectorBody() { + return this._parseSelectorPlaceholder() || super._parseSimpleSelectorBody(); + } + _parseNestingSelector() { + if (this.peekDelim('&')) { + const node = this.createNode(NodeType.SelectorCombinator); + this.consumeToken(); + while (!this.hasWhitespace() && (this.acceptDelim('-') || this.accept(TokenType$1.Num) || this.accept(TokenType$1.Dimension) || node.addChild(this._parseIdent()) || this.acceptDelim('&'))) { + // support &-foo-1 + } + return this.finish(node); + } + return null; + } + _parseSelectorPlaceholder() { + if (this.peekDelim('%')) { + const node = this.createNode(NodeType.SelectorPlaceholder); + this.consumeToken(); + this._parseIdent(); + return this.finish(node); + } + else if (this.peekKeyword('@at-root')) { + const node = this.createNode(NodeType.SelectorPlaceholder); + this.consumeToken(); + if (this.accept(TokenType$1.ParenthesisL)) { + if (!this.acceptIdent('with') && !this.acceptIdent('without')) { + return this.finish(node, ParseError.IdentifierExpected); + } + if (!this.accept(TokenType$1.Colon)) { + return this.finish(node, ParseError.ColonExpected); + } + if (!node.addChild(this._parseIdent())) { + return this.finish(node, ParseError.IdentifierExpected); + } + if (!this.accept(TokenType$1.ParenthesisR)) { + return this.finish(node, ParseError.RightParenthesisExpected, [TokenType$1.CurlyR]); + } + } + return this.finish(node); + } + return null; + } + _parseElementName() { + const pos = this.mark(); + const node = super._parseElementName(); + if (node && !this.hasWhitespace() && this.peek(TokenType$1.ParenthesisL)) { // for #49589 + this.restoreAtMark(pos); + return null; + } + return node; + } + _tryParsePseudoIdentifier() { + return this._parseInterpolation() || super._tryParsePseudoIdentifier(); // for #49589 + } + _parseWarnAndDebug() { + if (!this.peekKeyword('@debug') + && !this.peekKeyword('@warn') + && !this.peekKeyword('@error')) { + return null; + } + const node = this.createNode(NodeType.Debug); + this.consumeToken(); // @debug, @warn or @error + node.addChild(this._parseExpr()); // optional + return this.finish(node); + } + _parseControlStatement(parseStatement = this._parseRuleSetDeclaration.bind(this)) { + if (!this.peek(TokenType$1.AtKeyword)) { + return null; + } + return this._parseIfStatement(parseStatement) || this._parseForStatement(parseStatement) + || this._parseEachStatement(parseStatement) || this._parseWhileStatement(parseStatement); + } + _parseIfStatement(parseStatement) { + if (!this.peekKeyword('@if')) { + return null; + } + return this._internalParseIfStatement(parseStatement); + } + _internalParseIfStatement(parseStatement) { + const node = this.create(IfStatement); + this.consumeToken(); // @if or if + if (!node.setExpression(this._parseExpr(true))) { + return this.finish(node, ParseError.ExpressionExpected); + } + this._parseBody(node, parseStatement); + if (this.acceptKeyword('@else')) { + if (this.peekIdent('if')) { + node.setElseClause(this._internalParseIfStatement(parseStatement)); + } + else if (this.peek(TokenType$1.CurlyL)) { + const elseNode = this.create(ElseStatement); + this._parseBody(elseNode, parseStatement); + node.setElseClause(elseNode); + } + } + return this.finish(node); + } + _parseForStatement(parseStatement) { + if (!this.peekKeyword('@for')) { + return null; + } + const node = this.create(ForStatement); + this.consumeToken(); // @for + if (!node.setVariable(this._parseVariable())) { + return this.finish(node, ParseError.VariableNameExpected, [TokenType$1.CurlyR]); + } + if (!this.acceptIdent('from')) { + return this.finish(node, SCSSParseError.FromExpected, [TokenType$1.CurlyR]); + } + if (!node.addChild(this._parseBinaryExpr())) { + return this.finish(node, ParseError.ExpressionExpected, [TokenType$1.CurlyR]); + } + if (!this.acceptIdent('to') && !this.acceptIdent('through')) { + return this.finish(node, SCSSParseError.ThroughOrToExpected, [TokenType$1.CurlyR]); + } + if (!node.addChild(this._parseBinaryExpr())) { + return this.finish(node, ParseError.ExpressionExpected, [TokenType$1.CurlyR]); + } + return this._parseBody(node, parseStatement); + } + _parseEachStatement(parseStatement) { + if (!this.peekKeyword('@each')) { + return null; + } + const node = this.create(EachStatement); + this.consumeToken(); // @each + const variables = node.getVariables(); + if (!variables.addChild(this._parseVariable())) { + return this.finish(node, ParseError.VariableNameExpected, [TokenType$1.CurlyR]); + } + while (this.accept(TokenType$1.Comma)) { + if (!variables.addChild(this._parseVariable())) { + return this.finish(node, ParseError.VariableNameExpected, [TokenType$1.CurlyR]); + } + } + this.finish(variables); + if (!this.acceptIdent('in')) { + return this.finish(node, SCSSParseError.InExpected, [TokenType$1.CurlyR]); + } + if (!node.addChild(this._parseExpr())) { + return this.finish(node, ParseError.ExpressionExpected, [TokenType$1.CurlyR]); + } + return this._parseBody(node, parseStatement); + } + _parseWhileStatement(parseStatement) { + if (!this.peekKeyword('@while')) { + return null; + } + const node = this.create(WhileStatement); + this.consumeToken(); // @while + if (!node.addChild(this._parseBinaryExpr())) { + return this.finish(node, ParseError.ExpressionExpected, [TokenType$1.CurlyR]); + } + return this._parseBody(node, parseStatement); + } + _parseFunctionBodyDeclaration() { + return this._parseVariableDeclaration() || this._parseReturnStatement() || this._parseWarnAndDebug() + || this._parseControlStatement(this._parseFunctionBodyDeclaration.bind(this)); + } + _parseFunctionDeclaration() { + if (!this.peekKeyword('@function')) { + return null; + } + const node = this.create(FunctionDeclaration); + this.consumeToken(); // @function + if (!node.setIdentifier(this._parseIdent([ReferenceType.Function]))) { + return this.finish(node, ParseError.IdentifierExpected, [TokenType$1.CurlyR]); + } + if (!this.accept(TokenType$1.ParenthesisL)) { + return this.finish(node, ParseError.LeftParenthesisExpected, [TokenType$1.CurlyR]); + } + if (node.getParameters().addChild(this._parseParameterDeclaration())) { + while (this.accept(TokenType$1.Comma)) { + if (this.peek(TokenType$1.ParenthesisR)) { + break; + } + if (!node.getParameters().addChild(this._parseParameterDeclaration())) { + return this.finish(node, ParseError.VariableNameExpected); + } + } + } + if (!this.accept(TokenType$1.ParenthesisR)) { + return this.finish(node, ParseError.RightParenthesisExpected, [TokenType$1.CurlyR]); + } + return this._parseBody(node, this._parseFunctionBodyDeclaration.bind(this)); + } + _parseReturnStatement() { + if (!this.peekKeyword('@return')) { + return null; + } + const node = this.createNode(NodeType.ReturnStatement); + this.consumeToken(); // @function + if (!node.addChild(this._parseExpr())) { + return this.finish(node, ParseError.ExpressionExpected); + } + return this.finish(node); + } + _parseMixinDeclaration() { + if (!this.peekKeyword('@mixin')) { + return null; + } + const node = this.create(MixinDeclaration); + this.consumeToken(); + if (!node.setIdentifier(this._parseIdent([ReferenceType.Mixin]))) { + return this.finish(node, ParseError.IdentifierExpected, [TokenType$1.CurlyR]); + } + if (this.accept(TokenType$1.ParenthesisL)) { + if (node.getParameters().addChild(this._parseParameterDeclaration())) { + while (this.accept(TokenType$1.Comma)) { + if (this.peek(TokenType$1.ParenthesisR)) { + break; + } + if (!node.getParameters().addChild(this._parseParameterDeclaration())) { + return this.finish(node, ParseError.VariableNameExpected); + } + } + } + if (!this.accept(TokenType$1.ParenthesisR)) { + return this.finish(node, ParseError.RightParenthesisExpected, [TokenType$1.CurlyR]); + } + } + return this._parseBody(node, this._parseRuleSetDeclaration.bind(this)); + } + _parseParameterDeclaration() { + const node = this.create(FunctionParameter); + if (!node.setIdentifier(this._parseVariable())) { + return null; + } + if (this.accept(Ellipsis$1)) ; + if (this.accept(TokenType$1.Colon)) { + if (!node.setDefaultValue(this._parseExpr(true))) { + return this.finish(node, ParseError.VariableValueExpected, [], [TokenType$1.Comma, TokenType$1.ParenthesisR]); + } + } + return this.finish(node); + } + _parseMixinContent() { + if (!this.peekKeyword('@content')) { + return null; + } + const node = this.create(MixinContentReference); + this.consumeToken(); + if (this.accept(TokenType$1.ParenthesisL)) { + if (node.getArguments().addChild(this._parseFunctionArgument())) { + while (this.accept(TokenType$1.Comma)) { + if (this.peek(TokenType$1.ParenthesisR)) { + break; + } + if (!node.getArguments().addChild(this._parseFunctionArgument())) { + return this.finish(node, ParseError.ExpressionExpected); + } + } + } + if (!this.accept(TokenType$1.ParenthesisR)) { + return this.finish(node, ParseError.RightParenthesisExpected); + } + } + return this.finish(node); + } + _parseMixinReference() { + if (!this.peekKeyword('@include')) { + return null; + } + const node = this.create(MixinReference); + this.consumeToken(); + // Could be module or mixin identifier, set as mixin as default. + const firstIdent = this._parseIdent([ReferenceType.Mixin]); + if (!node.setIdentifier(firstIdent)) { + return this.finish(node, ParseError.IdentifierExpected, [TokenType$1.CurlyR]); + } + // Is a module accessor. + if (!this.hasWhitespace() && this.acceptDelim('.') && !this.hasWhitespace()) { + const secondIdent = this._parseIdent([ReferenceType.Mixin]); + if (!secondIdent) { + return this.finish(node, ParseError.IdentifierExpected, [TokenType$1.CurlyR]); + } + const moduleToken = this.create(Module); + // Re-purpose first matched ident as identifier for module token. + firstIdent.referenceTypes = [ReferenceType.Module]; + moduleToken.setIdentifier(firstIdent); + // Override identifier with second ident. + node.setIdentifier(secondIdent); + node.addChild(moduleToken); + } + if (this.accept(TokenType$1.ParenthesisL)) { + if (node.getArguments().addChild(this._parseFunctionArgument())) { + while (this.accept(TokenType$1.Comma)) { + if (this.peek(TokenType$1.ParenthesisR)) { + break; + } + if (!node.getArguments().addChild(this._parseFunctionArgument())) { + return this.finish(node, ParseError.ExpressionExpected); + } + } + } + if (!this.accept(TokenType$1.ParenthesisR)) { + return this.finish(node, ParseError.RightParenthesisExpected); + } + } + if (this.peekIdent('using') || this.peek(TokenType$1.CurlyL)) { + node.setContent(this._parseMixinContentDeclaration()); + } + return this.finish(node); + } + _parseMixinContentDeclaration() { + const node = this.create(MixinContentDeclaration); + if (this.acceptIdent('using')) { + if (!this.accept(TokenType$1.ParenthesisL)) { + return this.finish(node, ParseError.LeftParenthesisExpected, [TokenType$1.CurlyL]); + } + if (node.getParameters().addChild(this._parseParameterDeclaration())) { + while (this.accept(TokenType$1.Comma)) { + if (this.peek(TokenType$1.ParenthesisR)) { + break; + } + if (!node.getParameters().addChild(this._parseParameterDeclaration())) { + return this.finish(node, ParseError.VariableNameExpected); + } + } + } + if (!this.accept(TokenType$1.ParenthesisR)) { + return this.finish(node, ParseError.RightParenthesisExpected, [TokenType$1.CurlyL]); + } + } + if (this.peek(TokenType$1.CurlyL)) { + this._parseBody(node, this._parseMixinReferenceBodyStatement.bind(this)); + } + return this.finish(node); + } + _parseMixinReferenceBodyStatement() { + return this._tryParseKeyframeSelector() || this._parseRuleSetDeclaration(); + } + _parseFunctionArgument() { + // [variableName ':'] expression | variableName '...' + const node = this.create(FunctionArgument); + const pos = this.mark(); + const argument = this._parseVariable(); + if (argument) { + if (!this.accept(TokenType$1.Colon)) { + if (this.accept(Ellipsis$1)) { // optional + node.setValue(argument); + return this.finish(node); + } + else { + this.restoreAtMark(pos); + } + } + else { + node.setIdentifier(argument); + } + } + if (node.setValue(this._parseExpr(true))) { + this.accept(Ellipsis$1); // #43746 + node.addChild(this._parsePrio()); // #9859 + return this.finish(node); + } + else if (node.setValue(this._tryParsePrio())) { + return this.finish(node); + } + return null; + } + _parseURLArgument() { + const pos = this.mark(); + const node = super._parseURLArgument(); + if (!node || !this.peek(TokenType$1.ParenthesisR)) { + this.restoreAtMark(pos); + const node = this.create(Node$2); + node.addChild(this._parseBinaryExpr()); + return this.finish(node); + } + return node; + } + _parseOperation() { + if (!this.peek(TokenType$1.ParenthesisL)) { + return null; + } + const node = this.create(Node$2); + this.consumeToken(); + while (node.addChild(this._parseListElement())) { + this.accept(TokenType$1.Comma); // optional + } + if (!this.accept(TokenType$1.ParenthesisR)) { + return this.finish(node, ParseError.RightParenthesisExpected); + } + return this.finish(node); + } + _parseListElement() { + const node = this.create(ListEntry); + const child = this._parseBinaryExpr(); + if (!child) { + return null; + } + if (this.accept(TokenType$1.Colon)) { + node.setKey(child); + if (!node.setValue(this._parseBinaryExpr())) { + return this.finish(node, ParseError.ExpressionExpected); + } + } + else { + node.setValue(child); + } + return this.finish(node); + } + _parseUse() { + if (!this.peekKeyword('@use')) { + return null; + } + const node = this.create(Use); + this.consumeToken(); // @use + if (!node.addChild(this._parseStringLiteral())) { + return this.finish(node, ParseError.StringLiteralExpected); + } + if (!this.peek(TokenType$1.SemiColon) && !this.peek(TokenType$1.EOF)) { + if (!this.peekRegExp(TokenType$1.Ident, /as|with/)) { + return this.finish(node, ParseError.UnknownKeyword); + } + if (this.acceptIdent('as') && + (!node.setIdentifier(this._parseIdent([ReferenceType.Module])) && !this.acceptDelim('*'))) { + return this.finish(node, ParseError.IdentifierOrWildcardExpected); + } + if (this.acceptIdent('with')) { + if (!this.accept(TokenType$1.ParenthesisL)) { + return this.finish(node, ParseError.LeftParenthesisExpected, [TokenType$1.ParenthesisR]); + } + // First variable statement, no comma. + if (!node.getParameters().addChild(this._parseModuleConfigDeclaration())) { + return this.finish(node, ParseError.VariableNameExpected); + } + while (this.accept(TokenType$1.Comma)) { + if (this.peek(TokenType$1.ParenthesisR)) { + break; + } + if (!node.getParameters().addChild(this._parseModuleConfigDeclaration())) { + return this.finish(node, ParseError.VariableNameExpected); + } + } + if (!this.accept(TokenType$1.ParenthesisR)) { + return this.finish(node, ParseError.RightParenthesisExpected); + } + } + } + if (!this.accept(TokenType$1.SemiColon) && !this.accept(TokenType$1.EOF)) { + return this.finish(node, ParseError.SemiColonExpected); + } + return this.finish(node); + } + _parseModuleConfigDeclaration() { + const node = this.create(ModuleConfiguration); + if (!node.setIdentifier(this._parseVariable())) { + return null; + } + if (!this.accept(TokenType$1.Colon) || !node.setValue(this._parseExpr(true))) { + return this.finish(node, ParseError.VariableValueExpected, [], [TokenType$1.Comma, TokenType$1.ParenthesisR]); + } + if (this.accept(TokenType$1.Exclamation)) { + if (this.hasWhitespace() || !this.acceptIdent('default')) { + return this.finish(node, ParseError.UnknownKeyword); + } + } + return this.finish(node); + } + _parseForward() { + if (!this.peekKeyword('@forward')) { + return null; + } + const node = this.create(Forward); + this.consumeToken(); + if (!node.addChild(this._parseStringLiteral())) { + return this.finish(node, ParseError.StringLiteralExpected); + } + if (this.acceptIdent('as')) { + const identifier = this._parseIdent([ReferenceType.Forward]); + if (!node.setIdentifier(identifier)) { + return this.finish(node, ParseError.IdentifierExpected); + } + // Wildcard must be the next character after the identifier string. + if (this.hasWhitespace() || !this.acceptDelim('*')) { + return this.finish(node, ParseError.WildcardExpected); + } + } + if (this.acceptIdent('with')) { + if (!this.accept(TokenType$1.ParenthesisL)) { + return this.finish(node, ParseError.LeftParenthesisExpected, [TokenType$1.ParenthesisR]); + } + // First variable statement, no comma. + if (!node.getParameters().addChild(this._parseModuleConfigDeclaration())) { + return this.finish(node, ParseError.VariableNameExpected); + } + while (this.accept(TokenType$1.Comma)) { + if (this.peek(TokenType$1.ParenthesisR)) { + break; + } + if (!node.getParameters().addChild(this._parseModuleConfigDeclaration())) { + return this.finish(node, ParseError.VariableNameExpected); + } + } + if (!this.accept(TokenType$1.ParenthesisR)) { + return this.finish(node, ParseError.RightParenthesisExpected); + } + } + else if (this.peekIdent('hide') || this.peekIdent('show')) { + if (!node.addChild(this._parseForwardVisibility())) { + return this.finish(node, ParseError.IdentifierOrVariableExpected); + } + } + if (!this.accept(TokenType$1.SemiColon) && !this.accept(TokenType$1.EOF)) { + return this.finish(node, ParseError.SemiColonExpected); + } + return this.finish(node); + } + _parseForwardVisibility() { + const node = this.create(ForwardVisibility); + // Assume to be "hide" or "show". + node.setIdentifier(this._parseIdent()); + while (node.addChild(this._parseVariable() || this._parseIdent())) { + // Consume all variables and idents ahead. + this.accept(TokenType$1.Comma); + } + // More than just identifier + return node.getChildren().length > 1 ? node : null; + } + _parseSupportsCondition() { + return this._parseInterpolation() || super._parseSupportsCondition(); + } +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +const sassDocumentationName = t$2('Sass documentation'); +class SCSSCompletion extends CSSCompletion { + constructor(lsServiceOptions, cssDataManager) { + super('$', lsServiceOptions, cssDataManager); + addReferencesToDocumentation(SCSSCompletion.scssModuleLoaders); + addReferencesToDocumentation(SCSSCompletion.scssModuleBuiltIns); + } + isImportPathParent(type) { + return type === NodeType.Forward + || type === NodeType.Use + || super.isImportPathParent(type); + } + getCompletionForImportPath(importPathNode, result) { + const parentType = importPathNode.getParent().type; + if (parentType === NodeType.Forward || parentType === NodeType.Use) { + for (let p of SCSSCompletion.scssModuleBuiltIns) { + const item = { + label: p.label, + documentation: p.documentation, + textEdit: TextEdit.replace(this.getCompletionRange(importPathNode), `'${p.label}'`), + kind: CompletionItemKind.Module + }; + result.items.push(item); + } + } + return super.getCompletionForImportPath(importPathNode, result); + } + createReplaceFunction() { + let tabStopCounter = 1; + return (_match, p1) => { + return '\\' + p1 + ': ${' + tabStopCounter++ + ':' + (SCSSCompletion.variableDefaults[p1] || '') + '}'; + }; + } + createFunctionProposals(proposals, existingNode, sortToEnd, result) { + for (const p of proposals) { + const insertText = p.func.replace(/\[?(\$\w+)\]?/g, this.createReplaceFunction()); + const label = p.func.substr(0, p.func.indexOf('(')); + const item = { + label: label, + detail: p.func, + documentation: p.desc, + textEdit: TextEdit.replace(this.getCompletionRange(existingNode), insertText), + insertTextFormat: InsertTextFormat.Snippet, + kind: CompletionItemKind.Function + }; + if (sortToEnd) { + item.sortText = 'z'; + } + result.items.push(item); + } + return result; + } + getCompletionsForSelector(ruleSet, isNested, result) { + this.createFunctionProposals(SCSSCompletion.selectorFuncs, null, true, result); + return super.getCompletionsForSelector(ruleSet, isNested, result); + } + getTermProposals(entry, existingNode, result) { + let functions = SCSSCompletion.builtInFuncs; + if (entry) { + functions = functions.filter(f => !f.type || !entry.restrictions || entry.restrictions.indexOf(f.type) !== -1); + } + this.createFunctionProposals(functions, existingNode, true, result); + return super.getTermProposals(entry, existingNode, result); + } + getColorProposals(entry, existingNode, result) { + this.createFunctionProposals(SCSSCompletion.colorProposals, existingNode, false, result); + return super.getColorProposals(entry, existingNode, result); + } + getCompletionsForDeclarationProperty(declaration, result) { + this.getCompletionForAtDirectives(result); + this.getCompletionsForSelector(null, true, result); + return super.getCompletionsForDeclarationProperty(declaration, result); + } + getCompletionsForExtendsReference(_extendsRef, existingNode, result) { + const symbols = this.getSymbolContext().findSymbolsAtOffset(this.offset, ReferenceType.Rule); + for (const symbol of symbols) { + const suggest = { + label: symbol.name, + textEdit: TextEdit.replace(this.getCompletionRange(existingNode), symbol.name), + kind: CompletionItemKind.Function, + }; + result.items.push(suggest); + } + return result; + } + getCompletionForAtDirectives(result) { + result.items.push(...SCSSCompletion.scssAtDirectives); + return result; + } + getCompletionForTopLevel(result) { + this.getCompletionForAtDirectives(result); + this.getCompletionForModuleLoaders(result); + super.getCompletionForTopLevel(result); + return result; + } + getCompletionForModuleLoaders(result) { + result.items.push(...SCSSCompletion.scssModuleLoaders); + return result; + } +} +SCSSCompletion.variableDefaults = { + '$red': '1', + '$green': '2', + '$blue': '3', + '$alpha': '1.0', + '$color': '#000000', + '$weight': '0.5', + '$hue': '0', + '$saturation': '0%', + '$lightness': '0%', + '$degrees': '0', + '$amount': '0', + '$string': '""', + '$substring': '"s"', + '$number': '0', + '$limit': '1' +}; +SCSSCompletion.colorProposals = [ + { func: 'red($color)', desc: t$2('Gets the red component of a color.') }, + { func: 'green($color)', desc: t$2('Gets the green component of a color.') }, + { func: 'blue($color)', desc: t$2('Gets the blue component of a color.') }, + { func: 'mix($color, $color, [$weight])', desc: t$2('Mixes two colors together.') }, + { func: 'hue($color)', desc: t$2('Gets the hue component of a color.') }, + { func: 'saturation($color)', desc: t$2('Gets the saturation component of a color.') }, + { func: 'lightness($color)', desc: t$2('Gets the lightness component of a color.') }, + { func: 'adjust-hue($color, $degrees)', desc: t$2('Changes the hue of a color.') }, + { func: 'lighten($color, $amount)', desc: t$2('Makes a color lighter.') }, + { func: 'darken($color, $amount)', desc: t$2('Makes a color darker.') }, + { func: 'saturate($color, $amount)', desc: t$2('Makes a color more saturated.') }, + { func: 'desaturate($color, $amount)', desc: t$2('Makes a color less saturated.') }, + { func: 'grayscale($color)', desc: t$2('Converts a color to grayscale.') }, + { func: 'complement($color)', desc: t$2('Returns the complement of a color.') }, + { func: 'invert($color)', desc: t$2('Returns the inverse of a color.') }, + { func: 'alpha($color)', desc: t$2('Gets the opacity component of a color.') }, + { func: 'opacity($color)', desc: 'Gets the alpha component (opacity) of a color.' }, + { func: 'rgba($color, $alpha)', desc: t$2('Changes the alpha component for a color.') }, + { func: 'opacify($color, $amount)', desc: t$2('Makes a color more opaque.') }, + { func: 'fade-in($color, $amount)', desc: t$2('Makes a color more opaque.') }, + { func: 'transparentize($color, $amount)', desc: t$2('Makes a color more transparent.') }, + { func: 'fade-out($color, $amount)', desc: t$2('Makes a color more transparent.') }, + { func: 'adjust-color($color, [$red], [$green], [$blue], [$hue], [$saturation], [$lightness], [$alpha])', desc: t$2('Increases or decreases one or more components of a color.') }, + { func: 'scale-color($color, [$red], [$green], [$blue], [$saturation], [$lightness], [$alpha])', desc: t$2('Fluidly scales one or more properties of a color.') }, + { func: 'change-color($color, [$red], [$green], [$blue], [$hue], [$saturation], [$lightness], [$alpha])', desc: t$2('Changes one or more properties of a color.') }, + { func: 'ie-hex-str($color)', desc: t$2('Converts a color into the format understood by IE filters.') } +]; +SCSSCompletion.selectorFuncs = [ + { func: 'selector-nest($selectors…)', desc: t$2('Nests selector beneath one another like they would be nested in the stylesheet.') }, + { func: 'selector-append($selectors…)', desc: t$2('Appends selectors to one another without spaces in between.') }, + { func: 'selector-extend($selector, $extendee, $extender)', desc: t$2('Extends $extendee with $extender within $selector.') }, + { func: 'selector-replace($selector, $original, $replacement)', desc: t$2('Replaces $original with $replacement within $selector.') }, + { func: 'selector-unify($selector1, $selector2)', desc: t$2('Unifies two selectors to produce a selector that matches elements matched by both.') }, + { func: 'is-superselector($super, $sub)', desc: t$2('Returns whether $super matches all the elements $sub does, and possibly more.') }, + { func: 'simple-selectors($selector)', desc: t$2('Returns the simple selectors that comprise a compound selector.') }, + { func: 'selector-parse($selector)', desc: t$2('Parses a selector into the format returned by &.') } +]; +SCSSCompletion.builtInFuncs = [ + { func: 'unquote($string)', desc: t$2('Removes quotes from a string.') }, + { func: 'quote($string)', desc: t$2('Adds quotes to a string.') }, + { func: 'str-length($string)', desc: t$2('Returns the number of characters in a string.') }, + { func: 'str-insert($string, $insert, $index)', desc: t$2('Inserts $insert into $string at $index.') }, + { func: 'str-index($string, $substring)', desc: t$2('Returns the index of the first occurance of $substring in $string.') }, + { func: 'str-slice($string, $start-at, [$end-at])', desc: t$2('Extracts a substring from $string.') }, + { func: 'to-upper-case($string)', desc: t$2('Converts a string to upper case.') }, + { func: 'to-lower-case($string)', desc: t$2('Converts a string to lower case.') }, + { func: 'percentage($number)', desc: t$2('Converts a unitless number to a percentage.'), type: 'percentage' }, + { func: 'round($number)', desc: t$2('Rounds a number to the nearest whole number.') }, + { func: 'ceil($number)', desc: t$2('Rounds a number up to the next whole number.') }, + { func: 'floor($number)', desc: t$2('Rounds a number down to the previous whole number.') }, + { func: 'abs($number)', desc: t$2('Returns the absolute value of a number.') }, + { func: 'min($numbers)', desc: t$2('Finds the minimum of several numbers.') }, + { func: 'max($numbers)', desc: t$2('Finds the maximum of several numbers.') }, + { func: 'random([$limit])', desc: t$2('Returns a random number.') }, + { func: 'length($list)', desc: t$2('Returns the length of a list.') }, + { func: 'nth($list, $n)', desc: t$2('Returns a specific item in a list.') }, + { func: 'set-nth($list, $n, $value)', desc: t$2('Replaces the nth item in a list.') }, + { func: 'join($list1, $list2, [$separator])', desc: t$2('Joins together two lists into one.') }, + { func: 'append($list1, $val, [$separator])', desc: t$2('Appends a single value onto the end of a list.') }, + { func: 'zip($lists)', desc: t$2('Combines several lists into a single multidimensional list.') }, + { func: 'index($list, $value)', desc: t$2('Returns the position of a value within a list.') }, + { func: 'list-separator(#list)', desc: t$2('Returns the separator of a list.') }, + { func: 'map-get($map, $key)', desc: t$2('Returns the value in a map associated with a given key.') }, + { func: 'map-merge($map1, $map2)', desc: t$2('Merges two maps together into a new map.') }, + { func: 'map-remove($map, $keys)', desc: t$2('Returns a new map with keys removed.') }, + { func: 'map-keys($map)', desc: t$2('Returns a list of all keys in a map.') }, + { func: 'map-values($map)', desc: t$2('Returns a list of all values in a map.') }, + { func: 'map-has-key($map, $key)', desc: t$2('Returns whether a map has a value associated with a given key.') }, + { func: 'keywords($args)', desc: t$2('Returns the keywords passed to a function that takes variable arguments.') }, + { func: 'feature-exists($feature)', desc: t$2('Returns whether a feature exists in the current Sass runtime.') }, + { func: 'variable-exists($name)', desc: t$2('Returns whether a variable with the given name exists in the current scope.') }, + { func: 'global-variable-exists($name)', desc: t$2('Returns whether a variable with the given name exists in the global scope.') }, + { func: 'function-exists($name)', desc: t$2('Returns whether a function with the given name exists.') }, + { func: 'mixin-exists($name)', desc: t$2('Returns whether a mixin with the given name exists.') }, + { func: 'inspect($value)', desc: t$2('Returns the string representation of a value as it would be represented in Sass.') }, + { func: 'type-of($value)', desc: t$2('Returns the type of a value.') }, + { func: 'unit($number)', desc: t$2('Returns the unit(s) associated with a number.') }, + { func: 'unitless($number)', desc: t$2('Returns whether a number has units.') }, + { func: 'comparable($number1, $number2)', desc: t$2('Returns whether two numbers can be added, subtracted, or compared.') }, + { func: 'call($name, $args…)', desc: t$2('Dynamically calls a Sass function.') } +]; +SCSSCompletion.scssAtDirectives = [ + { + label: "@extend", + documentation: t$2("Inherits the styles of another selector."), + kind: CompletionItemKind.Keyword + }, + { + label: "@at-root", + documentation: t$2("Causes one or more rules to be emitted at the root of the document."), + kind: CompletionItemKind.Keyword + }, + { + label: "@debug", + documentation: t$2("Prints the value of an expression to the standard error output stream. Useful for debugging complicated Sass files."), + kind: CompletionItemKind.Keyword + }, + { + label: "@warn", + documentation: t$2("Prints the value of an expression to the standard error output stream. Useful for libraries that need to warn users of deprecations or recovering from minor mixin usage mistakes. Warnings can be turned off with the `--quiet` command-line option or the `:quiet` Sass option."), + kind: CompletionItemKind.Keyword + }, + { + label: "@error", + documentation: t$2("Throws the value of an expression as a fatal error with stack trace. Useful for validating arguments to mixins and functions."), + kind: CompletionItemKind.Keyword + }, + { + label: "@if", + documentation: t$2("Includes the body if the expression does not evaluate to `false` or `null`."), + insertText: "@if ${1:expr} {\n\t$0\n}", + insertTextFormat: InsertTextFormat.Snippet, + kind: CompletionItemKind.Keyword + }, + { + label: "@for", + documentation: t$2("For loop that repeatedly outputs a set of styles for each `$var` in the `from/through` or `from/to` clause."), + insertText: "@for \\$${1:var} from ${2:start} ${3|to,through|} ${4:end} {\n\t$0\n}", + insertTextFormat: InsertTextFormat.Snippet, + kind: CompletionItemKind.Keyword + }, + { + label: "@each", + documentation: t$2("Each loop that sets `$var` to each item in the list or map, then outputs the styles it contains using that value of `$var`."), + insertText: "@each \\$${1:var} in ${2:list} {\n\t$0\n}", + insertTextFormat: InsertTextFormat.Snippet, + kind: CompletionItemKind.Keyword + }, + { + label: "@while", + documentation: t$2("While loop that takes an expression and repeatedly outputs the nested styles until the statement evaluates to `false`."), + insertText: "@while ${1:condition} {\n\t$0\n}", + insertTextFormat: InsertTextFormat.Snippet, + kind: CompletionItemKind.Keyword + }, + { + label: "@mixin", + documentation: t$2("Defines styles that can be re-used throughout the stylesheet with `@include`."), + insertText: "@mixin ${1:name} {\n\t$0\n}", + insertTextFormat: InsertTextFormat.Snippet, + kind: CompletionItemKind.Keyword + }, + { + label: "@include", + documentation: t$2("Includes the styles defined by another mixin into the current rule."), + kind: CompletionItemKind.Keyword + }, + { + label: "@function", + documentation: t$2("Defines complex operations that can be re-used throughout stylesheets."), + kind: CompletionItemKind.Keyword + } +]; +SCSSCompletion.scssModuleLoaders = [ + { + label: "@use", + documentation: t$2("Loads mixins, functions, and variables from other Sass stylesheets as 'modules', and combines CSS from multiple stylesheets together."), + references: [{ name: sassDocumentationName, url: 'https://sass-lang.com/documentation/at-rules/use' }], + insertText: "@use $0;", + insertTextFormat: InsertTextFormat.Snippet, + kind: CompletionItemKind.Keyword + }, + { + label: "@forward", + documentation: t$2("Loads a Sass stylesheet and makes its mixins, functions, and variables available when this stylesheet is loaded with the @use rule."), + references: [{ name: sassDocumentationName, url: 'https://sass-lang.com/documentation/at-rules/forward' }], + insertText: "@forward $0;", + insertTextFormat: InsertTextFormat.Snippet, + kind: CompletionItemKind.Keyword + }, +]; +SCSSCompletion.scssModuleBuiltIns = [ + { + label: 'sass:math', + documentation: t$2('Provides functions that operate on numbers.'), + references: [{ name: sassDocumentationName, url: 'https://sass-lang.com/documentation/modules/math' }] + }, + { + label: 'sass:string', + documentation: t$2('Makes it easy to combine, search, or split apart strings.'), + references: [{ name: sassDocumentationName, url: 'https://sass-lang.com/documentation/modules/string' }] + }, + { + label: 'sass:color', + documentation: t$2('Generates new colors based on existing ones, making it easy to build color themes.'), + references: [{ name: sassDocumentationName, url: 'https://sass-lang.com/documentation/modules/color' }] + }, + { + label: 'sass:list', + documentation: t$2('Lets you access and modify values in lists.'), + references: [{ name: sassDocumentationName, url: 'https://sass-lang.com/documentation/modules/list' }] + }, + { + label: 'sass:map', + documentation: t$2('Makes it possible to look up the value associated with a key in a map, and much more.'), + references: [{ name: sassDocumentationName, url: 'https://sass-lang.com/documentation/modules/map' }] + }, + { + label: 'sass:selector', + documentation: t$2('Provides access to Sass’s powerful selector engine.'), + references: [{ name: sassDocumentationName, url: 'https://sass-lang.com/documentation/modules/selector' }] + }, + { + label: 'sass:meta', + documentation: t$2('Exposes the details of Sass’s inner workings.'), + references: [{ name: sassDocumentationName, url: 'https://sass-lang.com/documentation/modules/meta' }] + }, +]; +/** + * Todo @Pine: Remove this and do it through custom data + */ +function addReferencesToDocumentation(items) { + items.forEach(i => { + if (i.documentation && i.references && i.references.length > 0) { + const markdownDoc = typeof i.documentation === 'string' + ? { kind: 'markdown', value: i.documentation } + : { kind: 'markdown', value: i.documentation.value }; + markdownDoc.value += '\n\n'; + markdownDoc.value += i.references + .map(r => { + return `[${r.name}](${r.url})`; + }) + .join(' | '); + i.documentation = markdownDoc; + } + }); +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +const _FSL$1 = '/'.charCodeAt(0); +const _NWL$1 = '\n'.charCodeAt(0); +const _CAR$1 = '\r'.charCodeAt(0); +const _LFD$1 = '\f'.charCodeAt(0); +const _TIC = '`'.charCodeAt(0); +const _DOT = '.'.charCodeAt(0); +let customTokenValue = TokenType$1.CustomToken; +const Ellipsis = customTokenValue++; +class LESSScanner extends Scanner { + scanNext(offset) { + // LESS: escaped JavaScript code `const a = "dddd"` + const tokenType = this.escapedJavaScript(); + if (tokenType !== null) { + return this.finishToken(offset, tokenType); + } + if (this.stream.advanceIfChars([_DOT, _DOT, _DOT])) { + return this.finishToken(offset, Ellipsis); + } + return super.scanNext(offset); + } + comment() { + if (super.comment()) { + return true; + } + if (!this.inURL && this.stream.advanceIfChars([_FSL$1, _FSL$1])) { + this.stream.advanceWhileChar((ch) => { + switch (ch) { + case _NWL$1: + case _CAR$1: + case _LFD$1: + return false; + default: + return true; + } + }); + return true; + } + else { + return false; + } + } + escapedJavaScript() { + const ch = this.stream.peekChar(); + if (ch === _TIC) { + this.stream.advance(1); + this.stream.advanceWhileChar((ch) => { return ch !== _TIC; }); + return this.stream.advanceIfChar(_TIC) ? TokenType$1.EscapedJavaScript : TokenType$1.BadEscapedJavaScript; + } + return null; + } +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +/// <summary> +/// A parser for LESS +/// http://lesscss.org/ +/// </summary> +class LESSParser extends Parser { + constructor() { + super(new LESSScanner()); + } + _parseStylesheetStatement(isNested = false) { + if (this.peek(TokenType$1.AtKeyword)) { + return this._parseVariableDeclaration() + || this._parsePlugin() + || super._parseStylesheetAtStatement(isNested); + } + return this._tryParseMixinDeclaration() + || this._tryParseMixinReference() + || this._parseFunction() + || this._parseRuleset(true); + } + _parseImport() { + if (!this.peekKeyword('@import') && !this.peekKeyword('@import-once') /* deprecated in less 1.4.1 */) { + return null; + } + const node = this.create(Import); + this.consumeToken(); + // less 1.4.1: @import (css) "lib" + if (this.accept(TokenType$1.ParenthesisL)) { + if (!this.accept(TokenType$1.Ident)) { + return this.finish(node, ParseError.IdentifierExpected, [TokenType$1.SemiColon]); + } + do { + if (!this.accept(TokenType$1.Comma)) { + break; + } + } while (this.accept(TokenType$1.Ident)); + if (!this.accept(TokenType$1.ParenthesisR)) { + return this.finish(node, ParseError.RightParenthesisExpected, [TokenType$1.SemiColon]); + } + } + if (!node.addChild(this._parseURILiteral()) && !node.addChild(this._parseStringLiteral())) { + return this.finish(node, ParseError.URIOrStringExpected, [TokenType$1.SemiColon]); + } + if (!this.peek(TokenType$1.SemiColon) && !this.peek(TokenType$1.EOF)) { + node.setMedialist(this._parseMediaQueryList()); + } + return this._completeParseImport(node); + } + _parsePlugin() { + if (!this.peekKeyword('@plugin')) { + return null; + } + const node = this.createNode(NodeType.Plugin); + this.consumeToken(); // @import + if (!node.addChild(this._parseStringLiteral())) { + return this.finish(node, ParseError.StringLiteralExpected); + } + if (!this.accept(TokenType$1.SemiColon)) { + return this.finish(node, ParseError.SemiColonExpected); + } + return this.finish(node); + } + _parseMediaQuery() { + const node = super._parseMediaQuery(); + if (!node) { + const node = this.create(MediaQuery); + if (node.addChild(this._parseVariable())) { + return this.finish(node); + } + return null; + } + return node; + } + _parseMediaDeclaration(isNested = false) { + return this._tryParseRuleset(isNested) + || this._tryToParseDeclaration() + || this._tryParseMixinDeclaration() + || this._tryParseMixinReference() + || this._parseDetachedRuleSetMixin() + || this._parseStylesheetStatement(isNested); + } + _parseMediaFeatureName() { + return this._parseIdent() || this._parseVariable(); + } + _parseVariableDeclaration(panic = []) { + const node = this.create(VariableDeclaration); + const mark = this.mark(); + if (!node.setVariable(this._parseVariable(true))) { + return null; + } + if (this.accept(TokenType$1.Colon)) { + if (this.prevToken) { + node.colonPosition = this.prevToken.offset; + } + if (node.setValue(this._parseDetachedRuleSet())) { + node.needsSemicolon = false; + } + else if (!node.setValue(this._parseExpr())) { + return this.finish(node, ParseError.VariableValueExpected, [], panic); + } + node.addChild(this._parsePrio()); + } + else { + this.restoreAtMark(mark); + return null; // at keyword, but no ':', not a variable declaration but some at keyword + } + if (this.peek(TokenType$1.SemiColon)) { + node.semicolonPosition = this.token.offset; // not part of the declaration, but useful information for code assist + } + return this.finish(node); + } + _parseDetachedRuleSet() { + let mark = this.mark(); + // "Anonymous mixin" used in each() and possibly a generic type in the future + if (this.peekDelim('#') || this.peekDelim('.')) { + this.consumeToken(); + if (!this.hasWhitespace() && this.accept(TokenType$1.ParenthesisL)) { + let node = this.create(MixinDeclaration); + if (node.getParameters().addChild(this._parseMixinParameter())) { + while (this.accept(TokenType$1.Comma) || this.accept(TokenType$1.SemiColon)) { + if (this.peek(TokenType$1.ParenthesisR)) { + break; + } + if (!node.getParameters().addChild(this._parseMixinParameter())) { + this.markError(node, ParseError.IdentifierExpected, [], [TokenType$1.ParenthesisR]); + } + } + } + if (!this.accept(TokenType$1.ParenthesisR)) { + this.restoreAtMark(mark); + return null; + } + } + else { + this.restoreAtMark(mark); + return null; + } + } + if (!this.peek(TokenType$1.CurlyL)) { + return null; + } + const content = this.create(BodyDeclaration); + this._parseBody(content, this._parseDetachedRuleSetBody.bind(this)); + return this.finish(content); + } + _parseDetachedRuleSetBody() { + return this._tryParseKeyframeSelector() || this._parseRuleSetDeclaration(); + } + _addLookupChildren(node) { + if (!node.addChild(this._parseLookupValue())) { + return false; + } + let expectsValue = false; + while (true) { + if (this.peek(TokenType$1.BracketL)) { + expectsValue = true; + } + if (!node.addChild(this._parseLookupValue())) { + break; + } + expectsValue = false; + } + return !expectsValue; + } + _parseLookupValue() { + const node = this.create(Node$2); + const mark = this.mark(); + if (!this.accept(TokenType$1.BracketL)) { + this.restoreAtMark(mark); + return null; + } + if (((node.addChild(this._parseVariable(false, true)) || + node.addChild(this._parsePropertyIdentifier())) && + this.accept(TokenType$1.BracketR)) || this.accept(TokenType$1.BracketR)) { + return node; + } + this.restoreAtMark(mark); + return null; + } + _parseVariable(declaration = false, insideLookup = false) { + const isPropertyReference = !declaration && this.peekDelim('$'); + if (!this.peekDelim('@') && !isPropertyReference && !this.peek(TokenType$1.AtKeyword)) { + return null; + } + const node = this.create(Variable); + const mark = this.mark(); + while (this.acceptDelim('@') || (!declaration && this.acceptDelim('$'))) { + if (this.hasWhitespace()) { + this.restoreAtMark(mark); + return null; + } + } + if (!this.accept(TokenType$1.AtKeyword) && !this.accept(TokenType$1.Ident)) { + this.restoreAtMark(mark); + return null; + } + if (!insideLookup && this.peek(TokenType$1.BracketL)) { + if (!this._addLookupChildren(node)) { + this.restoreAtMark(mark); + return null; + } + } + return node; + } + _parseTermExpression() { + return this._parseVariable() || + this._parseEscaped() || + super._parseTermExpression() || // preference for colors before mixin references + this._tryParseMixinReference(false); + } + _parseEscaped() { + if (this.peek(TokenType$1.EscapedJavaScript) || + this.peek(TokenType$1.BadEscapedJavaScript)) { + const node = this.createNode(NodeType.EscapedValue); + this.consumeToken(); + return this.finish(node); + } + if (this.peekDelim('~')) { + const node = this.createNode(NodeType.EscapedValue); + this.consumeToken(); + if (this.accept(TokenType$1.String) || this.accept(TokenType$1.EscapedJavaScript)) { + return this.finish(node); + } + else { + return this.finish(node, ParseError.TermExpected); + } + } + return null; + } + _parseOperator() { + const node = this._parseGuardOperator(); + if (node) { + return node; + } + else { + return super._parseOperator(); + } + } + _parseGuardOperator() { + if (this.peekDelim('>')) { + const node = this.createNode(NodeType.Operator); + this.consumeToken(); + this.acceptDelim('='); + return node; + } + else if (this.peekDelim('=')) { + const node = this.createNode(NodeType.Operator); + this.consumeToken(); + this.acceptDelim('<'); + return node; + } + else if (this.peekDelim('<')) { + const node = this.createNode(NodeType.Operator); + this.consumeToken(); + this.acceptDelim('='); + return node; + } + return null; + } + _parseRuleSetDeclaration() { + if (this.peek(TokenType$1.AtKeyword)) { + return this._parseKeyframe() + || this._parseMedia(true) + || this._parseImport() + || this._parseSupports(true) // @supports + || this._parseLayer() // @layer + || this._parsePropertyAtRule() // @property + || this._parseDetachedRuleSetMixin() // less detached ruleset mixin + || this._parseVariableDeclaration() // Variable declarations + || this._parseRuleSetDeclarationAtStatement(); + } + return this._tryParseMixinDeclaration() + || this._tryParseRuleset(true) // nested ruleset + || this._tryParseMixinReference() // less mixin reference + || this._parseFunction() + || this._parseExtend() // less extend declaration + || this._parseDeclaration(); // try css ruleset declaration as the last option + } + _parseKeyframeIdent() { + return this._parseIdent([ReferenceType.Keyframe]) || this._parseVariable(); + } + _parseKeyframeSelector() { + return this._parseDetachedRuleSetMixin() // less detached ruleset mixin + || super._parseKeyframeSelector(); + } + // public _parseSimpleSelectorBody(): nodes.Node | null { + // return this._parseNestingSelector() || super._parseSimpleSelectorBody(); + // } + _parseSelector(isNested) { + // CSS Guards + const node = this.create(Selector); + let hasContent = false; + if (isNested) { + // nested selectors can start with a combinator + hasContent = node.addChild(this._parseCombinator()); + } + while (node.addChild(this._parseSimpleSelector())) { + hasContent = true; + const mark = this.mark(); + if (node.addChild(this._parseGuard()) && this.peek(TokenType$1.CurlyL)) { + break; + } + this.restoreAtMark(mark); + node.addChild(this._parseCombinator()); // optional + } + return hasContent ? this.finish(node) : null; + } + _parseNestingSelector() { + if (this.peekDelim('&')) { + const node = this.createNode(NodeType.SelectorCombinator); + this.consumeToken(); + while (!this.hasWhitespace() && (this.acceptDelim('-') || this.accept(TokenType$1.Num) || this.accept(TokenType$1.Dimension) || node.addChild(this._parseIdent()) || this.acceptDelim('&'))) { + // support &-foo + } + return this.finish(node); + } + return null; + } + _parseSelectorIdent() { + if (!this.peekInterpolatedIdent()) { + return null; + } + const node = this.createNode(NodeType.SelectorInterpolation); + const hasContent = this._acceptInterpolatedIdent(node); + return hasContent ? this.finish(node) : null; + } + _parsePropertyIdentifier(inLookup = false) { + const propertyRegex = /^[\w-]+/; + if (!this.peekInterpolatedIdent() && !this.peekRegExp(this.token.type, propertyRegex)) { + return null; + } + const mark = this.mark(); + const node = this.create(Identifier); + node.isCustomProperty = this.acceptDelim('-') && this.acceptDelim('-'); + let childAdded = false; + if (!inLookup) { + if (node.isCustomProperty) { + childAdded = this._acceptInterpolatedIdent(node); + } + else { + childAdded = this._acceptInterpolatedIdent(node, propertyRegex); + } + } + else { + if (node.isCustomProperty) { + childAdded = node.addChild(this._parseIdent()); + } + else { + childAdded = node.addChild(this._parseRegexp(propertyRegex)); + } + } + if (!childAdded) { + this.restoreAtMark(mark); + return null; + } + if (!inLookup && !this.hasWhitespace()) { + this.acceptDelim('+'); + if (!this.hasWhitespace()) { + this.acceptIdent('_'); + } + } + return this.finish(node); + } + peekInterpolatedIdent() { + return this.peek(TokenType$1.Ident) || + this.peekDelim('@') || + this.peekDelim('$') || + this.peekDelim('-'); + } + _acceptInterpolatedIdent(node, identRegex) { + let hasContent = false; + const indentInterpolation = () => { + const pos = this.mark(); + if (this.acceptDelim('-')) { + if (!this.hasWhitespace()) { + this.acceptDelim('-'); + } + if (this.hasWhitespace()) { + this.restoreAtMark(pos); + return null; + } + } + return this._parseInterpolation(); + }; + const accept = identRegex ? + () => this.acceptRegexp(identRegex) : + () => this.accept(TokenType$1.Ident); + while (accept() || + node.addChild(this._parseInterpolation() || + this.try(indentInterpolation))) { + hasContent = true; + if (this.hasWhitespace()) { + break; + } + } + return hasContent; + } + _parseInterpolation() { + // @{name} Variable or + // ${name} Property + const mark = this.mark(); + if (this.peekDelim('@') || this.peekDelim('$')) { + const node = this.createNode(NodeType.Interpolation); + this.consumeToken(); + if (this.hasWhitespace() || !this.accept(TokenType$1.CurlyL)) { + this.restoreAtMark(mark); + return null; + } + if (!node.addChild(this._parseIdent())) { + return this.finish(node, ParseError.IdentifierExpected); + } + if (!this.accept(TokenType$1.CurlyR)) { + return this.finish(node, ParseError.RightCurlyExpected); + } + return this.finish(node); + } + return null; + } + _tryParseMixinDeclaration() { + const mark = this.mark(); + const node = this.create(MixinDeclaration); + if (!node.setIdentifier(this._parseMixinDeclarationIdentifier()) || !this.accept(TokenType$1.ParenthesisL)) { + this.restoreAtMark(mark); + return null; + } + if (node.getParameters().addChild(this._parseMixinParameter())) { + while (this.accept(TokenType$1.Comma) || this.accept(TokenType$1.SemiColon)) { + if (this.peek(TokenType$1.ParenthesisR)) { + break; + } + if (!node.getParameters().addChild(this._parseMixinParameter())) { + this.markError(node, ParseError.IdentifierExpected, [], [TokenType$1.ParenthesisR]); + } + } + } + if (!this.accept(TokenType$1.ParenthesisR)) { + this.restoreAtMark(mark); + return null; + } + node.setGuard(this._parseGuard()); + if (!this.peek(TokenType$1.CurlyL)) { + this.restoreAtMark(mark); + return null; + } + return this._parseBody(node, this._parseMixInBodyDeclaration.bind(this)); + } + _parseMixInBodyDeclaration() { + return this._parseFontFace() || this._parseRuleSetDeclaration(); + } + _parseMixinDeclarationIdentifier() { + let identifier; + if (this.peekDelim('#') || this.peekDelim('.')) { + identifier = this.create(Identifier); + this.consumeToken(); // # or . + if (this.hasWhitespace() || !identifier.addChild(this._parseIdent())) { + return null; + } + } + else if (this.peek(TokenType$1.Hash)) { + identifier = this.create(Identifier); + this.consumeToken(); // TokenType.Hash + } + else { + return null; + } + identifier.referenceTypes = [ReferenceType.Mixin]; + return this.finish(identifier); + } + _parsePseudo() { + if (!this.peek(TokenType$1.Colon)) { + return null; + } + const mark = this.mark(); + const node = this.create(ExtendsReference); + this.consumeToken(); // : + if (this.acceptIdent('extend')) { + return this._completeExtends(node); + } + this.restoreAtMark(mark); + return super._parsePseudo(); + } + _parseExtend() { + if (!this.peekDelim('&')) { + return null; + } + const mark = this.mark(); + const node = this.create(ExtendsReference); + this.consumeToken(); // & + if (this.hasWhitespace() || !this.accept(TokenType$1.Colon) || !this.acceptIdent('extend')) { + this.restoreAtMark(mark); + return null; + } + return this._completeExtends(node); + } + _completeExtends(node) { + if (!this.accept(TokenType$1.ParenthesisL)) { + return this.finish(node, ParseError.LeftParenthesisExpected); + } + const selectors = node.getSelectors(); + if (!selectors.addChild(this._parseSelector(true))) { + return this.finish(node, ParseError.SelectorExpected); + } + while (this.accept(TokenType$1.Comma)) { + if (!selectors.addChild(this._parseSelector(true))) { + return this.finish(node, ParseError.SelectorExpected); + } + } + if (!this.accept(TokenType$1.ParenthesisR)) { + return this.finish(node, ParseError.RightParenthesisExpected); + } + return this.finish(node); + } + _parseDetachedRuleSetMixin() { + if (!this.peek(TokenType$1.AtKeyword)) { + return null; + } + const mark = this.mark(); + const node = this.create(MixinReference); + if (node.addChild(this._parseVariable(true)) && (this.hasWhitespace() || !this.accept(TokenType$1.ParenthesisL))) { + this.restoreAtMark(mark); + return null; + } + if (!this.accept(TokenType$1.ParenthesisR)) { + return this.finish(node, ParseError.RightParenthesisExpected); + } + return this.finish(node); + } + _tryParseMixinReference(atRoot = true) { + const mark = this.mark(); + const node = this.create(MixinReference); + let identifier = this._parseMixinDeclarationIdentifier(); + while (identifier) { + this.acceptDelim('>'); + const nextId = this._parseMixinDeclarationIdentifier(); + if (nextId) { + node.getNamespaces().addChild(identifier); + identifier = nextId; + } + else { + break; + } + } + if (!node.setIdentifier(identifier)) { + this.restoreAtMark(mark); + return null; + } + let hasArguments = false; + if (this.accept(TokenType$1.ParenthesisL)) { + hasArguments = true; + if (node.getArguments().addChild(this._parseMixinArgument())) { + while (this.accept(TokenType$1.Comma) || this.accept(TokenType$1.SemiColon)) { + if (this.peek(TokenType$1.ParenthesisR)) { + break; + } + if (!node.getArguments().addChild(this._parseMixinArgument())) { + return this.finish(node, ParseError.ExpressionExpected); + } + } + } + if (!this.accept(TokenType$1.ParenthesisR)) { + return this.finish(node, ParseError.RightParenthesisExpected); + } + identifier.referenceTypes = [ReferenceType.Mixin]; + } + else { + identifier.referenceTypes = [ReferenceType.Mixin, ReferenceType.Rule]; + } + if (this.peek(TokenType$1.BracketL)) { + if (!atRoot) { + this._addLookupChildren(node); + } + } + else { + node.addChild(this._parsePrio()); + } + if (!hasArguments && !this.peek(TokenType$1.SemiColon) && !this.peek(TokenType$1.CurlyR) && !this.peek(TokenType$1.EOF)) { + this.restoreAtMark(mark); + return null; + } + return this.finish(node); + } + _parseMixinArgument() { + // [variableName ':'] expression | variableName '...' + const node = this.create(FunctionArgument); + const pos = this.mark(); + const argument = this._parseVariable(); + if (argument) { + if (!this.accept(TokenType$1.Colon)) { + this.restoreAtMark(pos); + } + else { + node.setIdentifier(argument); + } + } + if (node.setValue(this._parseDetachedRuleSet() || this._parseExpr(true))) { + return this.finish(node); + } + this.restoreAtMark(pos); + return null; + } + _parseMixinParameter() { + const node = this.create(FunctionParameter); + // special rest variable: @rest... + if (this.peekKeyword('@rest')) { + const restNode = this.create(Node$2); + this.consumeToken(); + if (!this.accept(Ellipsis)) { + return this.finish(node, ParseError.DotExpected, [], [TokenType$1.Comma, TokenType$1.ParenthesisR]); + } + node.setIdentifier(this.finish(restNode)); + return this.finish(node); + } + // special const args: ... + if (this.peek(Ellipsis)) { + const varargsNode = this.create(Node$2); + this.consumeToken(); + node.setIdentifier(this.finish(varargsNode)); + return this.finish(node); + } + let hasContent = false; + // default variable declaration: @param: 12 or @name + if (node.setIdentifier(this._parseVariable())) { + this.accept(TokenType$1.Colon); + hasContent = true; + } + if (!node.setDefaultValue(this._parseDetachedRuleSet() || this._parseExpr(true)) && !hasContent) { + return null; + } + return this.finish(node); + } + _parseGuard() { + if (!this.peekIdent('when')) { + return null; + } + const node = this.create(LessGuard); + this.consumeToken(); // when + node.isNegated = this.acceptIdent('not'); + if (!node.getConditions().addChild(this._parseGuardCondition())) { + return this.finish(node, ParseError.ConditionExpected); + } + while (this.acceptIdent('and') || this.accept(TokenType$1.Comma)) { + if (!node.getConditions().addChild(this._parseGuardCondition())) { + return this.finish(node, ParseError.ConditionExpected); + } + } + return this.finish(node); + } + _parseGuardCondition() { + if (!this.peek(TokenType$1.ParenthesisL)) { + return null; + } + const node = this.create(GuardCondition); + this.consumeToken(); // ParenthesisL + if (!node.addChild(this._parseExpr())) ; + if (!this.accept(TokenType$1.ParenthesisR)) { + return this.finish(node, ParseError.RightParenthesisExpected); + } + return this.finish(node); + } + _parseFunction() { + const pos = this.mark(); + const node = this.create(Function$1); + if (!node.setIdentifier(this._parseFunctionIdentifier())) { + return null; + } + if (this.hasWhitespace() || !this.accept(TokenType$1.ParenthesisL)) { + this.restoreAtMark(pos); + return null; + } + if (node.getArguments().addChild(this._parseMixinArgument())) { + while (this.accept(TokenType$1.Comma) || this.accept(TokenType$1.SemiColon)) { + if (this.peek(TokenType$1.ParenthesisR)) { + break; + } + if (!node.getArguments().addChild(this._parseMixinArgument())) { + return this.finish(node, ParseError.ExpressionExpected); + } + } + } + if (!this.accept(TokenType$1.ParenthesisR)) { + return this.finish(node, ParseError.RightParenthesisExpected); + } + return this.finish(node); + } + _parseFunctionIdentifier() { + if (this.peekDelim('%')) { + const node = this.create(Identifier); + node.referenceTypes = [ReferenceType.Function]; + this.consumeToken(); + return this.finish(node); + } + return super._parseFunctionIdentifier(); + } + _parseURLArgument() { + const pos = this.mark(); + const node = super._parseURLArgument(); + if (!node || !this.peek(TokenType$1.ParenthesisR)) { + this.restoreAtMark(pos); + const node = this.create(Node$2); + node.addChild(this._parseBinaryExpr()); + return this.finish(node); + } + return node; + } +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +class LESSCompletion extends CSSCompletion { + constructor(lsOptions, cssDataManager) { + super('@', lsOptions, cssDataManager); + } + createFunctionProposals(proposals, existingNode, sortToEnd, result) { + for (const p of proposals) { + const item = { + label: p.name, + detail: p.example, + documentation: p.description, + textEdit: TextEdit.replace(this.getCompletionRange(existingNode), p.name + '($0)'), + insertTextFormat: InsertTextFormat.Snippet, + kind: CompletionItemKind.Function + }; + if (sortToEnd) { + item.sortText = 'z'; + } + result.items.push(item); + } + return result; + } + getTermProposals(entry, existingNode, result) { + let functions = LESSCompletion.builtInProposals; + if (entry) { + functions = functions.filter(f => !f.type || !entry.restrictions || entry.restrictions.indexOf(f.type) !== -1); + } + this.createFunctionProposals(functions, existingNode, true, result); + return super.getTermProposals(entry, existingNode, result); + } + getColorProposals(entry, existingNode, result) { + this.createFunctionProposals(LESSCompletion.colorProposals, existingNode, false, result); + return super.getColorProposals(entry, existingNode, result); + } + getCompletionsForDeclarationProperty(declaration, result) { + this.getCompletionsForSelector(null, true, result); + return super.getCompletionsForDeclarationProperty(declaration, result); + } +} +LESSCompletion.builtInProposals = [ + // Boolean functions + { + 'name': 'if', + 'example': 'if(condition, trueValue [, falseValue]);', + 'description': t$2('returns one of two values depending on a condition.') + }, + { + 'name': 'boolean', + 'example': 'boolean(condition);', + 'description': t$2('"store" a boolean test for later evaluation in a guard or if().') + }, + // List functions + { + 'name': 'length', + 'example': 'length(@list);', + 'description': t$2('returns the number of elements in a value list') + }, + { + 'name': 'extract', + 'example': 'extract(@list, index);', + 'description': t$2('returns a value at the specified position in the list') + }, + { + 'name': 'range', + 'example': 'range([start, ] end [, step]);', + 'description': t$2('generate a list spanning a range of values') + }, + { + 'name': 'each', + 'example': 'each(@list, ruleset);', + 'description': t$2('bind the evaluation of a ruleset to each member of a list.') + }, + // Other built-ins + { + 'name': 'escape', + 'example': 'escape(@string);', + 'description': t$2('URL encodes a string') + }, + { + 'name': 'e', + 'example': 'e(@string);', + 'description': t$2('escape string content') + }, + { + 'name': 'replace', + 'example': 'replace(@string, @pattern, @replacement[, @flags]);', + 'description': t$2('string replace') + }, + { + 'name': 'unit', + 'example': 'unit(@dimension, [@unit: \'\']);', + 'description': t$2('remove or change the unit of a dimension') + }, + { + 'name': 'color', + 'example': 'color(@string);', + 'description': t$2('parses a string to a color'), + 'type': 'color' + }, + { + 'name': 'convert', + 'example': 'convert(@value, unit);', + 'description': t$2('converts numbers from one type into another') + }, + { + 'name': 'data-uri', + 'example': 'data-uri([mimetype,] url);', + 'description': t$2('inlines a resource and falls back to `url()`'), + 'type': 'url' + }, + { + 'name': 'abs', + 'description': t$2('absolute value of a number'), + 'example': 'abs(number);' + }, + { + 'name': 'acos', + 'description': t$2('arccosine - inverse of cosine function'), + 'example': 'acos(number);' + }, + { + 'name': 'asin', + 'description': t$2('arcsine - inverse of sine function'), + 'example': 'asin(number);' + }, + { + 'name': 'ceil', + 'example': 'ceil(@number);', + 'description': t$2('rounds up to an integer') + }, + { + 'name': 'cos', + 'description': t$2('cosine function'), + 'example': 'cos(number);' + }, + { + 'name': 'floor', + 'description': t$2('rounds down to an integer'), + 'example': 'floor(@number);' + }, + { + 'name': 'percentage', + 'description': t$2('converts to a %, e.g. 0.5 > 50%'), + 'example': 'percentage(@number);', + 'type': 'percentage' + }, + { + 'name': 'round', + 'description': t$2('rounds a number to a number of places'), + 'example': 'round(number, [places: 0]);' + }, + { + 'name': 'sqrt', + 'description': t$2('calculates square root of a number'), + 'example': 'sqrt(number);' + }, + { + 'name': 'sin', + 'description': t$2('sine function'), + 'example': 'sin(number);' + }, + { + 'name': 'tan', + 'description': t$2('tangent function'), + 'example': 'tan(number);' + }, + { + 'name': 'atan', + 'description': t$2('arctangent - inverse of tangent function'), + 'example': 'atan(number);' + }, + { + 'name': 'pi', + 'description': t$2('returns pi'), + 'example': 'pi();' + }, + { + 'name': 'pow', + 'description': t$2('first argument raised to the power of the second argument'), + 'example': 'pow(@base, @exponent);' + }, + { + 'name': 'mod', + 'description': t$2('first argument modulus second argument'), + 'example': 'mod(number, number);' + }, + { + 'name': 'min', + 'description': t$2('returns the lowest of one or more values'), + 'example': 'min(@x, @y);' + }, + { + 'name': 'max', + 'description': t$2('returns the lowest of one or more values'), + 'example': 'max(@x, @y);' + } +]; +LESSCompletion.colorProposals = [ + { + 'name': 'argb', + 'example': 'argb(@color);', + 'description': t$2('creates a #AARRGGBB') + }, + { + 'name': 'hsl', + 'example': 'hsl(@hue, @saturation, @lightness);', + 'description': t$2('creates a color') + }, + { + 'name': 'hsla', + 'example': 'hsla(@hue, @saturation, @lightness, @alpha);', + 'description': t$2('creates a color') + }, + { + 'name': 'hsv', + 'example': 'hsv(@hue, @saturation, @value);', + 'description': t$2('creates a color') + }, + { + 'name': 'hsva', + 'example': 'hsva(@hue, @saturation, @value, @alpha);', + 'description': t$2('creates a color') + }, + { + 'name': 'hue', + 'example': 'hue(@color);', + 'description': t$2('returns the `hue` channel of `@color` in the HSL space') + }, + { + 'name': 'saturation', + 'example': 'saturation(@color);', + 'description': t$2('returns the `saturation` channel of `@color` in the HSL space') + }, + { + 'name': 'lightness', + 'example': 'lightness(@color);', + 'description': t$2('returns the `lightness` channel of `@color` in the HSL space') + }, + { + 'name': 'hsvhue', + 'example': 'hsvhue(@color);', + 'description': t$2('returns the `hue` channel of `@color` in the HSV space') + }, + { + 'name': 'hsvsaturation', + 'example': 'hsvsaturation(@color);', + 'description': t$2('returns the `saturation` channel of `@color` in the HSV space') + }, + { + 'name': 'hsvvalue', + 'example': 'hsvvalue(@color);', + 'description': t$2('returns the `value` channel of `@color` in the HSV space') + }, + { + 'name': 'red', + 'example': 'red(@color);', + 'description': t$2('returns the `red` channel of `@color`') + }, + { + 'name': 'green', + 'example': 'green(@color);', + 'description': t$2('returns the `green` channel of `@color`') + }, + { + 'name': 'blue', + 'example': 'blue(@color);', + 'description': t$2('returns the `blue` channel of `@color`') + }, + { + 'name': 'alpha', + 'example': 'alpha(@color);', + 'description': t$2('returns the `alpha` channel of `@color`') + }, + { + 'name': 'luma', + 'example': 'luma(@color);', + 'description': t$2('returns the `luma` value (perceptual brightness) of `@color`') + }, + { + 'name': 'saturate', + 'example': 'saturate(@color, 10%);', + 'description': t$2('return `@color` 10% points more saturated') + }, + { + 'name': 'desaturate', + 'example': 'desaturate(@color, 10%);', + 'description': t$2('return `@color` 10% points less saturated') + }, + { + 'name': 'lighten', + 'example': 'lighten(@color, 10%);', + 'description': t$2('return `@color` 10% points lighter') + }, + { + 'name': 'darken', + 'example': 'darken(@color, 10%);', + 'description': t$2('return `@color` 10% points darker') + }, + { + 'name': 'fadein', + 'example': 'fadein(@color, 10%);', + 'description': t$2('return `@color` 10% points less transparent') + }, + { + 'name': 'fadeout', + 'example': 'fadeout(@color, 10%);', + 'description': t$2('return `@color` 10% points more transparent') + }, + { + 'name': 'fade', + 'example': 'fade(@color, 50%);', + 'description': t$2('return `@color` with 50% transparency') + }, + { + 'name': 'spin', + 'example': 'spin(@color, 10);', + 'description': t$2('return `@color` with a 10 degree larger in hue') + }, + { + 'name': 'mix', + 'example': 'mix(@color1, @color2, [@weight: 50%]);', + 'description': t$2('return a mix of `@color1` and `@color2`') + }, + { + 'name': 'greyscale', + 'example': 'greyscale(@color);', + 'description': t$2('returns a grey, 100% desaturated color'), + }, + { + 'name': 'contrast', + 'example': 'contrast(@color1, [@darkcolor: black], [@lightcolor: white], [@threshold: 43%]);', + 'description': t$2('return `@darkcolor` if `@color1 is> 43% luma` otherwise return `@lightcolor`, see notes') + }, + { + 'name': 'multiply', + 'example': 'multiply(@color1, @color2);' + }, + { + 'name': 'screen', + 'example': 'screen(@color1, @color2);' + }, + { + 'name': 'overlay', + 'example': 'overlay(@color1, @color2);' + }, + { + 'name': 'softlight', + 'example': 'softlight(@color1, @color2);' + }, + { + 'name': 'hardlight', + 'example': 'hardlight(@color1, @color2);' + }, + { + 'name': 'difference', + 'example': 'difference(@color1, @color2);' + }, + { + 'name': 'exclusion', + 'example': 'exclusion(@color1, @color2);' + }, + { + 'name': 'average', + 'example': 'average(@color1, @color2);' + }, + { + 'name': 'negation', + 'example': 'negation(@color1, @color2);' + } +]; + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +function getFoldingRanges$1(document, context) { + const ranges = computeFoldingRanges(document); + return limitFoldingRanges(ranges, context); +} +function computeFoldingRanges(document) { + function getStartLine(t) { + return document.positionAt(t.offset).line; + } + function getEndLine(t) { + return document.positionAt(t.offset + t.len).line; + } + function getScanner() { + switch (document.languageId) { + case 'scss': + return new SCSSScanner(); + case 'less': + return new LESSScanner(); + default: + return new Scanner(); + } + } + function tokenToRange(t, kind) { + const startLine = getStartLine(t); + const endLine = getEndLine(t); + if (startLine !== endLine) { + return { + startLine, + endLine, + kind + }; + } + else { + return null; + } + } + const ranges = []; + const delimiterStack = []; + const scanner = getScanner(); + scanner.ignoreComment = false; + scanner.setSource(document.getText()); + let token = scanner.scan(); + let prevToken = null; + while (token.type !== TokenType$1.EOF) { + switch (token.type) { + case TokenType$1.CurlyL: + case InterpolationFunction: + { + delimiterStack.push({ line: getStartLine(token), type: 'brace', isStart: true }); + break; + } + case TokenType$1.CurlyR: { + if (delimiterStack.length !== 0) { + const prevDelimiter = popPrevStartDelimiterOfType(delimiterStack, 'brace'); + if (!prevDelimiter) { + break; + } + let endLine = getEndLine(token); + if (prevDelimiter.type === 'brace') { + /** + * Other than the case when curly brace is not on a new line by itself, for example + * .foo { + * color: red; } + * Use endLine minus one to show ending curly brace + */ + if (prevToken && getEndLine(prevToken) !== endLine) { + endLine--; + } + if (prevDelimiter.line !== endLine) { + ranges.push({ + startLine: prevDelimiter.line, + endLine, + kind: undefined + }); + } + } + } + break; + } + /** + * In CSS, there is no single line comment prefixed with // + * All comments are marked as `Comment` + */ + case TokenType$1.Comment: { + const commentRegionMarkerToDelimiter = (marker) => { + if (marker === '#region') { + return { line: getStartLine(token), type: 'comment', isStart: true }; + } + else { + return { line: getEndLine(token), type: 'comment', isStart: false }; + } + }; + const getCurrDelimiter = (token) => { + const matches = token.text.match(/^\s*\/\*\s*(#region|#endregion)\b\s*(.*?)\s*\*\//); + if (matches) { + return commentRegionMarkerToDelimiter(matches[1]); + } + else if (document.languageId === 'scss' || document.languageId === 'less') { + const matches = token.text.match(/^\s*\/\/\s*(#region|#endregion)\b\s*(.*?)\s*/); + if (matches) { + return commentRegionMarkerToDelimiter(matches[1]); + } + } + return null; + }; + const currDelimiter = getCurrDelimiter(token); + // /* */ comment region folding + // All #region and #endregion cases + if (currDelimiter) { + if (currDelimiter.isStart) { + delimiterStack.push(currDelimiter); + } + else { + const prevDelimiter = popPrevStartDelimiterOfType(delimiterStack, 'comment'); + if (!prevDelimiter) { + break; + } + if (prevDelimiter.type === 'comment') { + if (prevDelimiter.line !== currDelimiter.line) { + ranges.push({ + startLine: prevDelimiter.line, + endLine: currDelimiter.line, + kind: 'region' + }); + } + } + } + } + // Multiline comment case + else { + const range = tokenToRange(token, 'comment'); + if (range) { + ranges.push(range); + } + } + break; + } + } + prevToken = token; + token = scanner.scan(); + } + return ranges; +} +function popPrevStartDelimiterOfType(stack, type) { + if (stack.length === 0) { + return null; + } + for (let i = stack.length - 1; i >= 0; i--) { + if (stack[i].type === type && stack[i].isStart) { + return stack.splice(i, 1)[0]; + } + } + return null; +} +/** + * - Sort regions + * - Remove invalid regions (intersections) + * - If limit exceeds, only return `rangeLimit` amount of ranges + */ +function limitFoldingRanges(ranges, context) { + const maxRanges = context && context.rangeLimit || Number.MAX_VALUE; + const sortedRanges = ranges.sort((r1, r2) => { + let diff = r1.startLine - r2.startLine; + if (diff === 0) { + diff = r1.endLine - r2.endLine; + } + return diff; + }); + const validRanges = []; + let prevEndLine = -1; + sortedRanges.forEach(r => { + if (!(r.startLine < prevEndLine && prevEndLine < r.endLine)) { + validRanges.push(r); + prevEndLine = r.endLine; + } + }); + if (validRanges.length < maxRanges) { + return validRanges; + } + else { + return validRanges.slice(0, maxRanges); + } +} + +// copied from js-beautify/js/lib/beautify-css.js +// version: 1.14.11 +/* AUTO-GENERATED. DO NOT MODIFY. */ +/* + + The MIT License (MIT) + + Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors. + + 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. + + + CSS Beautifier +--------------- + + Written by Harutyun Amirjanyan, (amirjanyan@gmail.com) + + Based on code initially developed by: Einar Lielmanis, <einar@beautifier.io> + https://beautifier.io/ + + Usage: + css_beautify(source_text); + css_beautify(source_text, options); + + The options are (default in brackets): + indent_size (4) — indentation size, + indent_char (space) — character to indent with, + selector_separator_newline (true) - separate selectors with newline or + not (e.g. "a,\nbr" or "a, br") + end_with_newline (false) - end with a newline + newline_between_rules (true) - add a new line after every css rule + space_around_selector_separator (false) - ensure space around selector separators: + '>', '+', '~' (e.g. "a>b" -> "a > b") + e.g + + css_beautify(css_source_text, { + 'indent_size': 1, + 'indent_char': '\t', + 'selector_separator': ' ', + 'end_with_newline': false, + 'newline_between_rules': true, + 'space_around_selector_separator': true + }); +*/ + +// http://www.w3.org/TR/CSS21/syndata.html#tokenization +// http://www.w3.org/TR/css3-syntax/ + +var legacy_beautify_css$1; +/******/ (function() { // webpackBootstrap +/******/ var __webpack_modules__ = ([ +/* 0 */, +/* 1 */, +/* 2 */ +/***/ (function(module) { + +/*jshint node:true */ +/* + The MIT License (MIT) + + Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors. + + 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. +*/ + + + +function OutputLine(parent) { + this.__parent = parent; + this.__character_count = 0; + // use indent_count as a marker for this.__lines that have preserved indentation + this.__indent_count = -1; + this.__alignment_count = 0; + this.__wrap_point_index = 0; + this.__wrap_point_character_count = 0; + this.__wrap_point_indent_count = -1; + this.__wrap_point_alignment_count = 0; + + this.__items = []; +} + +OutputLine.prototype.clone_empty = function() { + var line = new OutputLine(this.__parent); + line.set_indent(this.__indent_count, this.__alignment_count); + return line; +}; + +OutputLine.prototype.item = function(index) { + if (index < 0) { + return this.__items[this.__items.length + index]; + } else { + return this.__items[index]; + } +}; + +OutputLine.prototype.has_match = function(pattern) { + for (var lastCheckedOutput = this.__items.length - 1; lastCheckedOutput >= 0; lastCheckedOutput--) { + if (this.__items[lastCheckedOutput].match(pattern)) { + return true; + } + } + return false; +}; + +OutputLine.prototype.set_indent = function(indent, alignment) { + if (this.is_empty()) { + this.__indent_count = indent || 0; + this.__alignment_count = alignment || 0; + this.__character_count = this.__parent.get_indent_size(this.__indent_count, this.__alignment_count); + } +}; + +OutputLine.prototype._set_wrap_point = function() { + if (this.__parent.wrap_line_length) { + this.__wrap_point_index = this.__items.length; + this.__wrap_point_character_count = this.__character_count; + this.__wrap_point_indent_count = this.__parent.next_line.__indent_count; + this.__wrap_point_alignment_count = this.__parent.next_line.__alignment_count; + } +}; + +OutputLine.prototype._should_wrap = function() { + return this.__wrap_point_index && + this.__character_count > this.__parent.wrap_line_length && + this.__wrap_point_character_count > this.__parent.next_line.__character_count; +}; + +OutputLine.prototype._allow_wrap = function() { + if (this._should_wrap()) { + this.__parent.add_new_line(); + var next = this.__parent.current_line; + next.set_indent(this.__wrap_point_indent_count, this.__wrap_point_alignment_count); + next.__items = this.__items.slice(this.__wrap_point_index); + this.__items = this.__items.slice(0, this.__wrap_point_index); + + next.__character_count += this.__character_count - this.__wrap_point_character_count; + this.__character_count = this.__wrap_point_character_count; + + if (next.__items[0] === " ") { + next.__items.splice(0, 1); + next.__character_count -= 1; + } + return true; + } + return false; +}; + +OutputLine.prototype.is_empty = function() { + return this.__items.length === 0; +}; + +OutputLine.prototype.last = function() { + if (!this.is_empty()) { + return this.__items[this.__items.length - 1]; + } else { + return null; + } +}; + +OutputLine.prototype.push = function(item) { + this.__items.push(item); + var last_newline_index = item.lastIndexOf('\n'); + if (last_newline_index !== -1) { + this.__character_count = item.length - last_newline_index; + } else { + this.__character_count += item.length; + } +}; + +OutputLine.prototype.pop = function() { + var item = null; + if (!this.is_empty()) { + item = this.__items.pop(); + this.__character_count -= item.length; + } + return item; +}; + + +OutputLine.prototype._remove_indent = function() { + if (this.__indent_count > 0) { + this.__indent_count -= 1; + this.__character_count -= this.__parent.indent_size; + } +}; + +OutputLine.prototype._remove_wrap_indent = function() { + if (this.__wrap_point_indent_count > 0) { + this.__wrap_point_indent_count -= 1; + } +}; +OutputLine.prototype.trim = function() { + while (this.last() === ' ') { + this.__items.pop(); + this.__character_count -= 1; + } +}; + +OutputLine.prototype.toString = function() { + var result = ''; + if (this.is_empty()) { + if (this.__parent.indent_empty_lines) { + result = this.__parent.get_indent_string(this.__indent_count); + } + } else { + result = this.__parent.get_indent_string(this.__indent_count, this.__alignment_count); + result += this.__items.join(''); + } + return result; +}; + +function IndentStringCache(options, baseIndentString) { + this.__cache = ['']; + this.__indent_size = options.indent_size; + this.__indent_string = options.indent_char; + if (!options.indent_with_tabs) { + this.__indent_string = new Array(options.indent_size + 1).join(options.indent_char); + } + + // Set to null to continue support for auto detection of base indent + baseIndentString = baseIndentString || ''; + if (options.indent_level > 0) { + baseIndentString = new Array(options.indent_level + 1).join(this.__indent_string); + } + + this.__base_string = baseIndentString; + this.__base_string_length = baseIndentString.length; +} + +IndentStringCache.prototype.get_indent_size = function(indent, column) { + var result = this.__base_string_length; + column = column || 0; + if (indent < 0) { + result = 0; + } + result += indent * this.__indent_size; + result += column; + return result; +}; + +IndentStringCache.prototype.get_indent_string = function(indent_level, column) { + var result = this.__base_string; + column = column || 0; + if (indent_level < 0) { + indent_level = 0; + result = ''; + } + column += indent_level * this.__indent_size; + this.__ensure_cache(column); + result += this.__cache[column]; + return result; +}; + +IndentStringCache.prototype.__ensure_cache = function(column) { + while (column >= this.__cache.length) { + this.__add_column(); + } +}; + +IndentStringCache.prototype.__add_column = function() { + var column = this.__cache.length; + var indent = 0; + var result = ''; + if (this.__indent_size && column >= this.__indent_size) { + indent = Math.floor(column / this.__indent_size); + column -= indent * this.__indent_size; + result = new Array(indent + 1).join(this.__indent_string); + } + if (column) { + result += new Array(column + 1).join(' '); + } + + this.__cache.push(result); +}; + +function Output(options, baseIndentString) { + this.__indent_cache = new IndentStringCache(options, baseIndentString); + this.raw = false; + this._end_with_newline = options.end_with_newline; + this.indent_size = options.indent_size; + this.wrap_line_length = options.wrap_line_length; + this.indent_empty_lines = options.indent_empty_lines; + this.__lines = []; + this.previous_line = null; + this.current_line = null; + this.next_line = new OutputLine(this); + this.space_before_token = false; + this.non_breaking_space = false; + this.previous_token_wrapped = false; + // initialize + this.__add_outputline(); +} + +Output.prototype.__add_outputline = function() { + this.previous_line = this.current_line; + this.current_line = this.next_line.clone_empty(); + this.__lines.push(this.current_line); +}; + +Output.prototype.get_line_number = function() { + return this.__lines.length; +}; + +Output.prototype.get_indent_string = function(indent, column) { + return this.__indent_cache.get_indent_string(indent, column); +}; + +Output.prototype.get_indent_size = function(indent, column) { + return this.__indent_cache.get_indent_size(indent, column); +}; + +Output.prototype.is_empty = function() { + return !this.previous_line && this.current_line.is_empty(); +}; + +Output.prototype.add_new_line = function(force_newline) { + // never newline at the start of file + // otherwise, newline only if we didn't just add one or we're forced + if (this.is_empty() || + (!force_newline && this.just_added_newline())) { + return false; + } + + // if raw output is enabled, don't print additional newlines, + // but still return True as though you had + if (!this.raw) { + this.__add_outputline(); + } + return true; +}; + +Output.prototype.get_code = function(eol) { + this.trim(true); + + // handle some edge cases where the last tokens + // has text that ends with newline(s) + var last_item = this.current_line.pop(); + if (last_item) { + if (last_item[last_item.length - 1] === '\n') { + last_item = last_item.replace(/\n+$/g, ''); + } + this.current_line.push(last_item); + } + + if (this._end_with_newline) { + this.__add_outputline(); + } + + var sweet_code = this.__lines.join('\n'); + + if (eol !== '\n') { + sweet_code = sweet_code.replace(/[\n]/g, eol); + } + return sweet_code; +}; + +Output.prototype.set_wrap_point = function() { + this.current_line._set_wrap_point(); +}; + +Output.prototype.set_indent = function(indent, alignment) { + indent = indent || 0; + alignment = alignment || 0; + + // Next line stores alignment values + this.next_line.set_indent(indent, alignment); + + // Never indent your first output indent at the start of the file + if (this.__lines.length > 1) { + this.current_line.set_indent(indent, alignment); + return true; + } + + this.current_line.set_indent(); + return false; +}; + +Output.prototype.add_raw_token = function(token) { + for (var x = 0; x < token.newlines; x++) { + this.__add_outputline(); + } + this.current_line.set_indent(-1); + this.current_line.push(token.whitespace_before); + this.current_line.push(token.text); + this.space_before_token = false; + this.non_breaking_space = false; + this.previous_token_wrapped = false; +}; + +Output.prototype.add_token = function(printable_token) { + this.__add_space_before_token(); + this.current_line.push(printable_token); + this.space_before_token = false; + this.non_breaking_space = false; + this.previous_token_wrapped = this.current_line._allow_wrap(); +}; + +Output.prototype.__add_space_before_token = function() { + if (this.space_before_token && !this.just_added_newline()) { + if (!this.non_breaking_space) { + this.set_wrap_point(); + } + this.current_line.push(' '); + } +}; + +Output.prototype.remove_indent = function(index) { + var output_length = this.__lines.length; + while (index < output_length) { + this.__lines[index]._remove_indent(); + index++; + } + this.current_line._remove_wrap_indent(); +}; + +Output.prototype.trim = function(eat_newlines) { + eat_newlines = (eat_newlines === undefined) ? false : eat_newlines; + + this.current_line.trim(); + + while (eat_newlines && this.__lines.length > 1 && + this.current_line.is_empty()) { + this.__lines.pop(); + this.current_line = this.__lines[this.__lines.length - 1]; + this.current_line.trim(); + } + + this.previous_line = this.__lines.length > 1 ? + this.__lines[this.__lines.length - 2] : null; +}; + +Output.prototype.just_added_newline = function() { + return this.current_line.is_empty(); +}; + +Output.prototype.just_added_blankline = function() { + return this.is_empty() || + (this.current_line.is_empty() && this.previous_line.is_empty()); +}; + +Output.prototype.ensure_empty_line_above = function(starts_with, ends_with) { + var index = this.__lines.length - 2; + while (index >= 0) { + var potentialEmptyLine = this.__lines[index]; + if (potentialEmptyLine.is_empty()) { + break; + } else if (potentialEmptyLine.item(0).indexOf(starts_with) !== 0 && + potentialEmptyLine.item(-1) !== ends_with) { + this.__lines.splice(index + 1, 0, new OutputLine(this)); + this.previous_line = this.__lines[this.__lines.length - 2]; + break; + } + index--; + } +}; + +module.exports.Output = Output; + + +/***/ }), +/* 3 */, +/* 4 */, +/* 5 */, +/* 6 */ +/***/ (function(module) { + +/*jshint node:true */ +/* + + The MIT License (MIT) + + Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors. + + 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. +*/ + + + +function Options(options, merge_child_field) { + this.raw_options = _mergeOpts(options, merge_child_field); + + // Support passing the source text back with no change + this.disabled = this._get_boolean('disabled'); + + this.eol = this._get_characters('eol', 'auto'); + this.end_with_newline = this._get_boolean('end_with_newline'); + this.indent_size = this._get_number('indent_size', 4); + this.indent_char = this._get_characters('indent_char', ' '); + this.indent_level = this._get_number('indent_level'); + + this.preserve_newlines = this._get_boolean('preserve_newlines', true); + this.max_preserve_newlines = this._get_number('max_preserve_newlines', 32786); + if (!this.preserve_newlines) { + this.max_preserve_newlines = 0; + } + + this.indent_with_tabs = this._get_boolean('indent_with_tabs', this.indent_char === '\t'); + if (this.indent_with_tabs) { + this.indent_char = '\t'; + + // indent_size behavior changed after 1.8.6 + // It used to be that indent_size would be + // set to 1 for indent_with_tabs. That is no longer needed and + // actually doesn't make sense - why not use spaces? Further, + // that might produce unexpected behavior - tabs being used + // for single-column alignment. So, when indent_with_tabs is true + // and indent_size is 1, reset indent_size to 4. + if (this.indent_size === 1) { + this.indent_size = 4; + } + } + + // Backwards compat with 1.3.x + this.wrap_line_length = this._get_number('wrap_line_length', this._get_number('max_char')); + + this.indent_empty_lines = this._get_boolean('indent_empty_lines'); + + // valid templating languages ['django', 'erb', 'handlebars', 'php', 'smarty'] + // For now, 'auto' = all off for javascript, all on for html (and inline javascript). + // other values ignored + this.templating = this._get_selection_list('templating', ['auto', 'none', 'django', 'erb', 'handlebars', 'php', 'smarty'], ['auto']); +} + +Options.prototype._get_array = function(name, default_value) { + var option_value = this.raw_options[name]; + var result = default_value || []; + if (typeof option_value === 'object') { + if (option_value !== null && typeof option_value.concat === 'function') { + result = option_value.concat(); + } + } else if (typeof option_value === 'string') { + result = option_value.split(/[^a-zA-Z0-9_\/\-]+/); + } + return result; +}; + +Options.prototype._get_boolean = function(name, default_value) { + var option_value = this.raw_options[name]; + var result = option_value === undefined ? !!default_value : !!option_value; + return result; +}; + +Options.prototype._get_characters = function(name, default_value) { + var option_value = this.raw_options[name]; + var result = default_value || ''; + if (typeof option_value === 'string') { + result = option_value.replace(/\\r/, '\r').replace(/\\n/, '\n').replace(/\\t/, '\t'); + } + return result; +}; + +Options.prototype._get_number = function(name, default_value) { + var option_value = this.raw_options[name]; + default_value = parseInt(default_value, 10); + if (isNaN(default_value)) { + default_value = 0; + } + var result = parseInt(option_value, 10); + if (isNaN(result)) { + result = default_value; + } + return result; +}; + +Options.prototype._get_selection = function(name, selection_list, default_value) { + var result = this._get_selection_list(name, selection_list, default_value); + if (result.length !== 1) { + throw new Error( + "Invalid Option Value: The option '" + name + "' can only be one of the following values:\n" + + selection_list + "\nYou passed in: '" + this.raw_options[name] + "'"); + } + + return result[0]; +}; + + +Options.prototype._get_selection_list = function(name, selection_list, default_value) { + if (!selection_list || selection_list.length === 0) { + throw new Error("Selection list cannot be empty."); + } + + default_value = default_value || [selection_list[0]]; + if (!this._is_valid_selection(default_value, selection_list)) { + throw new Error("Invalid Default Value!"); + } + + var result = this._get_array(name, default_value); + if (!this._is_valid_selection(result, selection_list)) { + throw new Error( + "Invalid Option Value: The option '" + name + "' can contain only the following values:\n" + + selection_list + "\nYou passed in: '" + this.raw_options[name] + "'"); + } + + return result; +}; + +Options.prototype._is_valid_selection = function(result, selection_list) { + return result.length && selection_list.length && + !result.some(function(item) { return selection_list.indexOf(item) === -1; }); +}; + + +// merges child options up with the parent options object +// Example: obj = {a: 1, b: {a: 2}} +// mergeOpts(obj, 'b') +// +// Returns: {a: 2} +function _mergeOpts(allOptions, childFieldName) { + var finalOpts = {}; + allOptions = _normalizeOpts(allOptions); + var name; + + for (name in allOptions) { + if (name !== childFieldName) { + finalOpts[name] = allOptions[name]; + } + } + + //merge in the per type settings for the childFieldName + if (childFieldName && allOptions[childFieldName]) { + for (name in allOptions[childFieldName]) { + finalOpts[name] = allOptions[childFieldName][name]; + } + } + return finalOpts; +} + +function _normalizeOpts(options) { + var convertedOpts = {}; + var key; + + for (key in options) { + var newKey = key.replace(/-/g, "_"); + convertedOpts[newKey] = options[key]; + } + return convertedOpts; +} + +module.exports.Options = Options; +module.exports.normalizeOpts = _normalizeOpts; +module.exports.mergeOpts = _mergeOpts; + + +/***/ }), +/* 7 */, +/* 8 */ +/***/ (function(module) { + +/*jshint node:true */ +/* + + The MIT License (MIT) + + Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors. + + 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 regexp_has_sticky = RegExp.prototype.hasOwnProperty('sticky'); + +function InputScanner(input_string) { + this.__input = input_string || ''; + this.__input_length = this.__input.length; + this.__position = 0; +} + +InputScanner.prototype.restart = function() { + this.__position = 0; +}; + +InputScanner.prototype.back = function() { + if (this.__position > 0) { + this.__position -= 1; + } +}; + +InputScanner.prototype.hasNext = function() { + return this.__position < this.__input_length; +}; + +InputScanner.prototype.next = function() { + var val = null; + if (this.hasNext()) { + val = this.__input.charAt(this.__position); + this.__position += 1; + } + return val; +}; + +InputScanner.prototype.peek = function(index) { + var val = null; + index = index || 0; + index += this.__position; + if (index >= 0 && index < this.__input_length) { + val = this.__input.charAt(index); + } + return val; +}; + +// This is a JavaScript only helper function (not in python) +// Javascript doesn't have a match method +// and not all implementation support "sticky" flag. +// If they do not support sticky then both this.match() and this.test() method +// must get the match and check the index of the match. +// If sticky is supported and set, this method will use it. +// Otherwise it will check that global is set, and fall back to the slower method. +InputScanner.prototype.__match = function(pattern, index) { + pattern.lastIndex = index; + var pattern_match = pattern.exec(this.__input); + + if (pattern_match && !(regexp_has_sticky && pattern.sticky)) { + if (pattern_match.index !== index) { + pattern_match = null; + } + } + + return pattern_match; +}; + +InputScanner.prototype.test = function(pattern, index) { + index = index || 0; + index += this.__position; + + if (index >= 0 && index < this.__input_length) { + return !!this.__match(pattern, index); + } else { + return false; + } +}; + +InputScanner.prototype.testChar = function(pattern, index) { + // test one character regex match + var val = this.peek(index); + pattern.lastIndex = 0; + return val !== null && pattern.test(val); +}; + +InputScanner.prototype.match = function(pattern) { + var pattern_match = this.__match(pattern, this.__position); + if (pattern_match) { + this.__position += pattern_match[0].length; + } else { + pattern_match = null; + } + return pattern_match; +}; + +InputScanner.prototype.read = function(starting_pattern, until_pattern, until_after) { + var val = ''; + var match; + if (starting_pattern) { + match = this.match(starting_pattern); + if (match) { + val += match[0]; + } + } + if (until_pattern && (match || !starting_pattern)) { + val += this.readUntil(until_pattern, until_after); + } + return val; +}; + +InputScanner.prototype.readUntil = function(pattern, until_after) { + var val = ''; + var match_index = this.__position; + pattern.lastIndex = this.__position; + var pattern_match = pattern.exec(this.__input); + if (pattern_match) { + match_index = pattern_match.index; + if (until_after) { + match_index += pattern_match[0].length; + } + } else { + match_index = this.__input_length; + } + + val = this.__input.substring(this.__position, match_index); + this.__position = match_index; + return val; +}; + +InputScanner.prototype.readUntilAfter = function(pattern) { + return this.readUntil(pattern, true); +}; + +InputScanner.prototype.get_regexp = function(pattern, match_from) { + var result = null; + var flags = 'g'; + if (match_from && regexp_has_sticky) { + flags = 'y'; + } + // strings are converted to regexp + if (typeof pattern === "string" && pattern !== '') { + // result = new RegExp(pattern.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'), flags); + result = new RegExp(pattern, flags); + } else if (pattern) { + result = new RegExp(pattern.source, flags); + } + return result; +}; + +InputScanner.prototype.get_literal_regexp = function(literal_string) { + return RegExp(literal_string.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&')); +}; + +/* css beautifier legacy helpers */ +InputScanner.prototype.peekUntilAfter = function(pattern) { + var start = this.__position; + var val = this.readUntilAfter(pattern); + this.__position = start; + return val; +}; + +InputScanner.prototype.lookBack = function(testVal) { + var start = this.__position - 1; + return start >= testVal.length && this.__input.substring(start - testVal.length, start) + .toLowerCase() === testVal; +}; + +module.exports.InputScanner = InputScanner; + + +/***/ }), +/* 9 */, +/* 10 */, +/* 11 */, +/* 12 */, +/* 13 */ +/***/ (function(module) { + +/*jshint node:true */ +/* + + The MIT License (MIT) + + Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors. + + 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. +*/ + + + +function Directives(start_block_pattern, end_block_pattern) { + start_block_pattern = typeof start_block_pattern === 'string' ? start_block_pattern : start_block_pattern.source; + end_block_pattern = typeof end_block_pattern === 'string' ? end_block_pattern : end_block_pattern.source; + this.__directives_block_pattern = new RegExp(start_block_pattern + / beautify( \w+[:]\w+)+ /.source + end_block_pattern, 'g'); + this.__directive_pattern = / (\w+)[:](\w+)/g; + + this.__directives_end_ignore_pattern = new RegExp(start_block_pattern + /\sbeautify\signore:end\s/.source + end_block_pattern, 'g'); +} + +Directives.prototype.get_directives = function(text) { + if (!text.match(this.__directives_block_pattern)) { + return null; + } + + var directives = {}; + this.__directive_pattern.lastIndex = 0; + var directive_match = this.__directive_pattern.exec(text); + + while (directive_match) { + directives[directive_match[1]] = directive_match[2]; + directive_match = this.__directive_pattern.exec(text); + } + + return directives; +}; + +Directives.prototype.readIgnored = function(input) { + return input.readUntilAfter(this.__directives_end_ignore_pattern); +}; + + +module.exports.Directives = Directives; + + +/***/ }), +/* 14 */, +/* 15 */ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +/*jshint node:true */ +/* + + The MIT License (MIT) + + Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors. + + 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 Beautifier = (__webpack_require__(16).Beautifier), + Options = (__webpack_require__(17).Options); + +function css_beautify(source_text, options) { + var beautifier = new Beautifier(source_text, options); + return beautifier.beautify(); +} + +module.exports = css_beautify; +module.exports.defaultOptions = function() { + return new Options(); +}; + + +/***/ }), +/* 16 */ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +/*jshint node:true */ +/* + + The MIT License (MIT) + + Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors. + + 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 Options = (__webpack_require__(17).Options); +var Output = (__webpack_require__(2).Output); +var InputScanner = (__webpack_require__(8).InputScanner); +var Directives = (__webpack_require__(13).Directives); + +var directives_core = new Directives(/\/\*/, /\*\//); + +var lineBreak = /\r\n|[\r\n]/; +var allLineBreaks = /\r\n|[\r\n]/g; + +// tokenizer +var whitespaceChar = /\s/; +var whitespacePattern = /(?:\s|\n)+/g; +var block_comment_pattern = /\/\*(?:[\s\S]*?)((?:\*\/)|$)/g; +var comment_pattern = /\/\/(?:[^\n\r\u2028\u2029]*)/g; + +function Beautifier(source_text, options) { + this._source_text = source_text || ''; + // Allow the setting of language/file-type specific options + // with inheritance of overall settings + this._options = new Options(options); + this._ch = null; + this._input = null; + + // https://developer.mozilla.org/en-US/docs/Web/CSS/At-rule + this.NESTED_AT_RULE = { + "page": true, + "font-face": true, + "keyframes": true, + // also in CONDITIONAL_GROUP_RULE below + "media": true, + "supports": true, + "document": true + }; + this.CONDITIONAL_GROUP_RULE = { + "media": true, + "supports": true, + "document": true + }; + this.NON_SEMICOLON_NEWLINE_PROPERTY = [ + "grid-template-areas", + "grid-template" + ]; + +} + +Beautifier.prototype.eatString = function(endChars) { + var result = ''; + this._ch = this._input.next(); + while (this._ch) { + result += this._ch; + if (this._ch === "\\") { + result += this._input.next(); + } else if (endChars.indexOf(this._ch) !== -1 || this._ch === "\n") { + break; + } + this._ch = this._input.next(); + } + return result; +}; + +// Skips any white space in the source text from the current position. +// When allowAtLeastOneNewLine is true, will output new lines for each +// newline character found; if the user has preserve_newlines off, only +// the first newline will be output +Beautifier.prototype.eatWhitespace = function(allowAtLeastOneNewLine) { + var result = whitespaceChar.test(this._input.peek()); + var newline_count = 0; + while (whitespaceChar.test(this._input.peek())) { + this._ch = this._input.next(); + if (allowAtLeastOneNewLine && this._ch === '\n') { + if (newline_count === 0 || newline_count < this._options.max_preserve_newlines) { + newline_count++; + this._output.add_new_line(true); + } + } + } + return result; +}; + +// Nested pseudo-class if we are insideRule +// and the next special character found opens +// a new block +Beautifier.prototype.foundNestedPseudoClass = function() { + var openParen = 0; + var i = 1; + var ch = this._input.peek(i); + while (ch) { + if (ch === "{") { + return true; + } else if (ch === '(') { + // pseudoclasses can contain () + openParen += 1; + } else if (ch === ')') { + if (openParen === 0) { + return false; + } + openParen -= 1; + } else if (ch === ";" || ch === "}") { + return false; + } + i++; + ch = this._input.peek(i); + } + return false; +}; + +Beautifier.prototype.print_string = function(output_string) { + this._output.set_indent(this._indentLevel); + this._output.non_breaking_space = true; + this._output.add_token(output_string); +}; + +Beautifier.prototype.preserveSingleSpace = function(isAfterSpace) { + if (isAfterSpace) { + this._output.space_before_token = true; + } +}; + +Beautifier.prototype.indent = function() { + this._indentLevel++; +}; + +Beautifier.prototype.outdent = function() { + if (this._indentLevel > 0) { + this._indentLevel--; + } +}; + +/*_____________________--------------------_____________________*/ + +Beautifier.prototype.beautify = function() { + if (this._options.disabled) { + return this._source_text; + } + + var source_text = this._source_text; + var eol = this._options.eol; + if (eol === 'auto') { + eol = '\n'; + if (source_text && lineBreak.test(source_text || '')) { + eol = source_text.match(lineBreak)[0]; + } + } + + + // HACK: newline parsing inconsistent. This brute force normalizes the this._input. + source_text = source_text.replace(allLineBreaks, '\n'); + + // reset + var baseIndentString = source_text.match(/^[\t ]*/)[0]; + + this._output = new Output(this._options, baseIndentString); + this._input = new InputScanner(source_text); + this._indentLevel = 0; + this._nestedLevel = 0; + + this._ch = null; + var parenLevel = 0; + + var insideRule = false; + // This is the value side of a property value pair (blue in the following ex) + // label { content: blue } + var insidePropertyValue = false; + var enteringConditionalGroup = false; + var insideNonNestedAtRule = false; + var insideScssMap = false; + var topCharacter = this._ch; + var insideNonSemiColonValues = false; + var whitespace; + var isAfterSpace; + var previous_ch; + + while (true) { + whitespace = this._input.read(whitespacePattern); + isAfterSpace = whitespace !== ''; + previous_ch = topCharacter; + this._ch = this._input.next(); + if (this._ch === '\\' && this._input.hasNext()) { + this._ch += this._input.next(); + } + topCharacter = this._ch; + + if (!this._ch) { + break; + } else if (this._ch === '/' && this._input.peek() === '*') { + // /* css comment */ + // Always start block comments on a new line. + // This handles scenarios where a block comment immediately + // follows a property definition on the same line or where + // minified code is being beautified. + this._output.add_new_line(); + this._input.back(); + + var comment = this._input.read(block_comment_pattern); + + // Handle ignore directive + var directives = directives_core.get_directives(comment); + if (directives && directives.ignore === 'start') { + comment += directives_core.readIgnored(this._input); + } + + this.print_string(comment); + + // Ensures any new lines following the comment are preserved + this.eatWhitespace(true); + + // Block comments are followed by a new line so they don't + // share a line with other properties + this._output.add_new_line(); + } else if (this._ch === '/' && this._input.peek() === '/') { + // // single line comment + // Preserves the space before a comment + // on the same line as a rule + this._output.space_before_token = true; + this._input.back(); + this.print_string(this._input.read(comment_pattern)); + + // Ensures any new lines following the comment are preserved + this.eatWhitespace(true); + } else if (this._ch === '$') { + this.preserveSingleSpace(isAfterSpace); + + this.print_string(this._ch); + + // strip trailing space, if present, for hash property checks + var variable = this._input.peekUntilAfter(/[: ,;{}()[\]\/='"]/g); + + if (variable.match(/[ :]$/)) { + // we have a variable or pseudo-class, add it and insert one space before continuing + variable = this.eatString(": ").replace(/\s+$/, ''); + this.print_string(variable); + this._output.space_before_token = true; + } + + // might be sass variable + if (parenLevel === 0 && variable.indexOf(':') !== -1) { + insidePropertyValue = true; + this.indent(); + } + } else if (this._ch === '@') { + this.preserveSingleSpace(isAfterSpace); + + // deal with less property mixins @{...} + if (this._input.peek() === '{') { + this.print_string(this._ch + this.eatString('}')); + } else { + this.print_string(this._ch); + + // strip trailing space, if present, for hash property checks + var variableOrRule = this._input.peekUntilAfter(/[: ,;{}()[\]\/='"]/g); + + if (variableOrRule.match(/[ :]$/)) { + // we have a variable or pseudo-class, add it and insert one space before continuing + variableOrRule = this.eatString(": ").replace(/\s+$/, ''); + this.print_string(variableOrRule); + this._output.space_before_token = true; + } + + // might be less variable + if (parenLevel === 0 && variableOrRule.indexOf(':') !== -1) { + insidePropertyValue = true; + this.indent(); + + // might be a nesting at-rule + } else if (variableOrRule in this.NESTED_AT_RULE) { + this._nestedLevel += 1; + if (variableOrRule in this.CONDITIONAL_GROUP_RULE) { + enteringConditionalGroup = true; + } + + // might be a non-nested at-rule + } else if (parenLevel === 0 && !insidePropertyValue) { + insideNonNestedAtRule = true; + } + } + } else if (this._ch === '#' && this._input.peek() === '{') { + this.preserveSingleSpace(isAfterSpace); + this.print_string(this._ch + this.eatString('}')); + } else if (this._ch === '{') { + if (insidePropertyValue) { + insidePropertyValue = false; + this.outdent(); + } + + // non nested at rule becomes nested + insideNonNestedAtRule = false; + + // when entering conditional groups, only rulesets are allowed + if (enteringConditionalGroup) { + enteringConditionalGroup = false; + insideRule = (this._indentLevel >= this._nestedLevel); + } else { + // otherwise, declarations are also allowed + insideRule = (this._indentLevel >= this._nestedLevel - 1); + } + if (this._options.newline_between_rules && insideRule) { + if (this._output.previous_line && this._output.previous_line.item(-1) !== '{') { + this._output.ensure_empty_line_above('/', ','); + } + } + + this._output.space_before_token = true; + + // The difference in print_string and indent order is necessary to indent the '{' correctly + if (this._options.brace_style === 'expand') { + this._output.add_new_line(); + this.print_string(this._ch); + this.indent(); + this._output.set_indent(this._indentLevel); + } else { + // inside mixin and first param is object + if (previous_ch === '(') { + this._output.space_before_token = false; + } else if (previous_ch !== ',') { + this.indent(); + } + this.print_string(this._ch); + } + + this.eatWhitespace(true); + this._output.add_new_line(); + } else if (this._ch === '}') { + this.outdent(); + this._output.add_new_line(); + if (previous_ch === '{') { + this._output.trim(true); + } + + if (insidePropertyValue) { + this.outdent(); + insidePropertyValue = false; + } + this.print_string(this._ch); + insideRule = false; + if (this._nestedLevel) { + this._nestedLevel--; + } + + this.eatWhitespace(true); + this._output.add_new_line(); + + if (this._options.newline_between_rules && !this._output.just_added_blankline()) { + if (this._input.peek() !== '}') { + this._output.add_new_line(true); + } + } + if (this._input.peek() === ')') { + this._output.trim(true); + if (this._options.brace_style === "expand") { + this._output.add_new_line(true); + } + } + } else if (this._ch === ":") { + + for (var i = 0; i < this.NON_SEMICOLON_NEWLINE_PROPERTY.length; i++) { + if (this._input.lookBack(this.NON_SEMICOLON_NEWLINE_PROPERTY[i])) { + insideNonSemiColonValues = true; + break; + } + } + + if ((insideRule || enteringConditionalGroup) && !(this._input.lookBack("&") || this.foundNestedPseudoClass()) && !this._input.lookBack("(") && !insideNonNestedAtRule && parenLevel === 0) { + // 'property: value' delimiter + // which could be in a conditional group query + + this.print_string(':'); + if (!insidePropertyValue) { + insidePropertyValue = true; + this._output.space_before_token = true; + this.eatWhitespace(true); + this.indent(); + } + } else { + // sass/less parent reference don't use a space + // sass nested pseudo-class don't use a space + + // preserve space before pseudoclasses/pseudoelements, as it means "in any child" + if (this._input.lookBack(" ")) { + this._output.space_before_token = true; + } + if (this._input.peek() === ":") { + // pseudo-element + this._ch = this._input.next(); + this.print_string("::"); + } else { + // pseudo-class + this.print_string(':'); + } + } + } else if (this._ch === '"' || this._ch === '\'') { + var preserveQuoteSpace = previous_ch === '"' || previous_ch === '\''; + this.preserveSingleSpace(preserveQuoteSpace || isAfterSpace); + this.print_string(this._ch + this.eatString(this._ch)); + this.eatWhitespace(true); + } else if (this._ch === ';') { + insideNonSemiColonValues = false; + if (parenLevel === 0) { + if (insidePropertyValue) { + this.outdent(); + insidePropertyValue = false; + } + insideNonNestedAtRule = false; + this.print_string(this._ch); + this.eatWhitespace(true); + + // This maintains single line comments on the same + // line. Block comments are also affected, but + // a new line is always output before one inside + // that section + if (this._input.peek() !== '/') { + this._output.add_new_line(); + } + } else { + this.print_string(this._ch); + this.eatWhitespace(true); + this._output.space_before_token = true; + } + } else if (this._ch === '(') { // may be a url + if (this._input.lookBack("url")) { + this.print_string(this._ch); + this.eatWhitespace(); + parenLevel++; + this.indent(); + this._ch = this._input.next(); + if (this._ch === ')' || this._ch === '"' || this._ch === '\'') { + this._input.back(); + } else if (this._ch) { + this.print_string(this._ch + this.eatString(')')); + if (parenLevel) { + parenLevel--; + this.outdent(); + } + } + } else { + var space_needed = false; + if (this._input.lookBack("with")) { + // look back is not an accurate solution, we need tokens to confirm without whitespaces + space_needed = true; + } + this.preserveSingleSpace(isAfterSpace || space_needed); + this.print_string(this._ch); + + // handle scss/sass map + if (insidePropertyValue && previous_ch === "$" && this._options.selector_separator_newline) { + this._output.add_new_line(); + insideScssMap = true; + } else { + this.eatWhitespace(); + parenLevel++; + this.indent(); + } + } + } else if (this._ch === ')') { + if (parenLevel) { + parenLevel--; + this.outdent(); + } + if (insideScssMap && this._input.peek() === ";" && this._options.selector_separator_newline) { + insideScssMap = false; + this.outdent(); + this._output.add_new_line(); + } + this.print_string(this._ch); + } else if (this._ch === ',') { + this.print_string(this._ch); + this.eatWhitespace(true); + if (this._options.selector_separator_newline && (!insidePropertyValue || insideScssMap) && parenLevel === 0 && !insideNonNestedAtRule) { + this._output.add_new_line(); + } else { + this._output.space_before_token = true; + } + } else if ((this._ch === '>' || this._ch === '+' || this._ch === '~') && !insidePropertyValue && parenLevel === 0) { + //handle combinator spacing + if (this._options.space_around_combinator) { + this._output.space_before_token = true; + this.print_string(this._ch); + this._output.space_before_token = true; + } else { + this.print_string(this._ch); + this.eatWhitespace(); + // squash extra whitespace + if (this._ch && whitespaceChar.test(this._ch)) { + this._ch = ''; + } + } + } else if (this._ch === ']') { + this.print_string(this._ch); + } else if (this._ch === '[') { + this.preserveSingleSpace(isAfterSpace); + this.print_string(this._ch); + } else if (this._ch === '=') { // no whitespace before or after + this.eatWhitespace(); + this.print_string('='); + if (whitespaceChar.test(this._ch)) { + this._ch = ''; + } + } else if (this._ch === '!' && !this._input.lookBack("\\")) { // !important + this._output.space_before_token = true; + this.print_string(this._ch); + } else { + var preserveAfterSpace = previous_ch === '"' || previous_ch === '\''; + this.preserveSingleSpace(preserveAfterSpace || isAfterSpace); + this.print_string(this._ch); + + if (!this._output.just_added_newline() && this._input.peek() === '\n' && insideNonSemiColonValues) { + this._output.add_new_line(); + } + } + } + + var sweetCode = this._output.get_code(eol); + + return sweetCode; +}; + +module.exports.Beautifier = Beautifier; + + +/***/ }), +/* 17 */ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +/*jshint node:true */ +/* + + The MIT License (MIT) + + Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors. + + 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 BaseOptions = (__webpack_require__(6).Options); + +function Options(options) { + BaseOptions.call(this, options, 'css'); + + this.selector_separator_newline = this._get_boolean('selector_separator_newline', true); + this.newline_between_rules = this._get_boolean('newline_between_rules', true); + var space_around_selector_separator = this._get_boolean('space_around_selector_separator'); + this.space_around_combinator = this._get_boolean('space_around_combinator') || space_around_selector_separator; + + var brace_style_split = this._get_selection_list('brace_style', ['collapse', 'expand', 'end-expand', 'none', 'preserve-inline']); + this.brace_style = 'collapse'; + for (var bs = 0; bs < brace_style_split.length; bs++) { + if (brace_style_split[bs] !== 'expand') { + // default to collapse, as only collapse|expand is implemented for now + this.brace_style = 'collapse'; + } else { + this.brace_style = brace_style_split[bs]; + } + } +} +Options.prototype = new BaseOptions(); + + + +module.exports.Options = Options; + + +/***/ }) +/******/ ]); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +/******/ +/******/ // startup +/******/ // Load entry module and return exports +/******/ // This entry module is referenced by other modules so it can't be inlined +/******/ var __webpack_exports__ = __webpack_require__(15); +/******/ legacy_beautify_css$1 = __webpack_exports__; +/******/ +/******/ })() +; + +var css_beautify$1 = legacy_beautify_css$1; + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +function format$4(document, range, options) { + let value = document.getText(); + let includesEnd = true; + let initialIndentLevel = 0; + let inRule = false; + const tabSize = options.tabSize || 4; + if (range) { + let startOffset = document.offsetAt(range.start); + // include all leading whitespace iff at the beginning of the line + let extendedStart = startOffset; + while (extendedStart > 0 && isWhitespace$1(value, extendedStart - 1)) { + extendedStart--; + } + if (extendedStart === 0 || isEOL$3(value, extendedStart - 1)) { + startOffset = extendedStart; + } + else { + // else keep at least one whitespace + if (extendedStart < startOffset) { + startOffset = extendedStart + 1; + } + } + // include all following whitespace until the end of the line + let endOffset = document.offsetAt(range.end); + let extendedEnd = endOffset; + while (extendedEnd < value.length && isWhitespace$1(value, extendedEnd)) { + extendedEnd++; + } + if (extendedEnd === value.length || isEOL$3(value, extendedEnd)) { + endOffset = extendedEnd; + } + range = Range$a.create(document.positionAt(startOffset), document.positionAt(endOffset)); + // Test if inside a rule + inRule = isInRule(value, startOffset); + includesEnd = endOffset === value.length; + value = value.substring(startOffset, endOffset); + if (startOffset !== 0) { + const startOfLineOffset = document.offsetAt(Position.create(range.start.line, 0)); + initialIndentLevel = computeIndentLevel$2(document.getText(), startOfLineOffset, options); + } + if (inRule) { + value = `{\n${trimLeft$1(value)}`; + } + } + else { + range = Range$a.create(Position.create(0, 0), document.positionAt(value.length)); + } + const cssOptions = { + indent_size: tabSize, + indent_char: options.insertSpaces ? ' ' : '\t', + end_with_newline: includesEnd && getFormatOption$1(options, 'insertFinalNewline', false), + selector_separator_newline: getFormatOption$1(options, 'newlineBetweenSelectors', true), + newline_between_rules: getFormatOption$1(options, 'newlineBetweenRules', true), + space_around_selector_separator: getFormatOption$1(options, 'spaceAroundSelectorSeparator', false), + brace_style: getFormatOption$1(options, 'braceStyle', 'collapse'), + indent_empty_lines: getFormatOption$1(options, 'indentEmptyLines', false), + max_preserve_newlines: getFormatOption$1(options, 'maxPreserveNewLines', undefined), + preserve_newlines: getFormatOption$1(options, 'preserveNewLines', true), + wrap_line_length: getFormatOption$1(options, 'wrapLineLength', undefined), + eol: '\n' + }; + let result = css_beautify$1(value, cssOptions); + if (inRule) { + result = trimLeft$1(result.substring(2)); + } + if (initialIndentLevel > 0) { + const indent = options.insertSpaces ? repeat$2(' ', tabSize * initialIndentLevel) : repeat$2('\t', initialIndentLevel); + result = result.split('\n').join('\n' + indent); + if (range.start.character === 0) { + result = indent + result; // keep the indent + } + } + return [{ + range: range, + newText: result + }]; +} +function trimLeft$1(str) { + return str.replace(/^\s+/, ''); +} +const _CUL = '{'.charCodeAt(0); +const _CUR = '}'.charCodeAt(0); +function isInRule(str, offset) { + while (offset >= 0) { + const ch = str.charCodeAt(offset); + if (ch === _CUL) { + return true; + } + else if (ch === _CUR) { + return false; + } + offset--; + } + return false; +} +function getFormatOption$1(options, key, dflt) { + if (options && options.hasOwnProperty(key)) { + const value = options[key]; + if (value !== null) { + return value; + } + } + return dflt; +} +function computeIndentLevel$2(content, offset, options) { + let i = offset; + let nChars = 0; + const tabSize = options.tabSize || 4; + while (i < content.length) { + const ch = content.charAt(i); + if (ch === ' ') { + nChars++; + } + else if (ch === '\t') { + nChars += tabSize; + } + else { + break; + } + i++; + } + return Math.floor(nChars / tabSize); +} +function isEOL$3(text, offset) { + return '\r\n'.indexOf(text.charAt(offset)) !== -1; +} +function isWhitespace$1(text, offset) { + return ' \t'.indexOf(text.charAt(offset)) !== -1; +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +// file generated from @vscode/web-custom-data NPM package +const cssData = { + "version": 1.1, + "properties": [ + { + "name": "additive-symbols", + "browsers": [ + "FF33" + ], + "atRule": "@counter-style", + "syntax": "[ <integer> && <symbol> ]#", + "relevance": 50, + "description": "@counter-style descriptor. Specifies the symbols used by the marker-construction algorithm specified by the system descriptor. Needs to be specified if the counter system is 'additive'.", + "restrictions": [ + "integer", + "string", + "image", + "identifier" + ] + }, + { + "name": "align-content", + "browsers": [ + "E12", + "FF28", + "S9", + "C29", + "IE11", + "O16" + ], + "values": [ + { + "name": "center", + "description": "Lines are packed toward the center of the flex container." + }, + { + "name": "flex-end", + "description": "Lines are packed toward the end of the flex container." + }, + { + "name": "flex-start", + "description": "Lines are packed toward the start of the flex container." + }, + { + "name": "space-around", + "description": "Lines are evenly distributed in the flex container, with half-size spaces on either end." + }, + { + "name": "space-between", + "description": "Lines are evenly distributed in the flex container." + }, + { + "name": "stretch", + "description": "Lines stretch to take up the remaining space." + }, + { + "name": "start" + }, + { + "name": "end" + }, + { + "name": "normal" + }, + { + "name": "baseline" + }, + { + "name": "first baseline" + }, + { + "name": "last baseline" + }, + { + "name": "space-around" + }, + { + "name": "space-between" + }, + { + "name": "space-evenly" + }, + { + "name": "stretch" + }, + { + "name": "safe" + }, + { + "name": "unsafe" + } + ], + "syntax": "normal | <baseline-position> | <content-distribution> | <overflow-position>? <content-position>", + "relevance": 65, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/align-content" + } + ], + "description": "Aligns a flex container's lines within the flex container when there is extra space in the cross-axis, similar to how 'justify-content' aligns individual items within the main-axis.", + "restrictions": [ + "enum" + ] + }, + { + "name": "align-items", + "browsers": [ + "E12", + "FF20", + "S9", + "C29", + "IE11", + "O16" + ], + "values": [ + { + "name": "baseline", + "description": "If the flex item's inline axis is the same as the cross axis, this value is identical to 'flex-start'. Otherwise, it participates in baseline alignment." + }, + { + "name": "center", + "description": "The flex item's margin box is centered in the cross axis within the line." + }, + { + "name": "flex-end", + "description": "The cross-end margin edge of the flex item is placed flush with the cross-end edge of the line." + }, + { + "name": "flex-start", + "description": "The cross-start margin edge of the flex item is placed flush with the cross-start edge of the line." + }, + { + "name": "stretch", + "description": "If the cross size property of the flex item computes to auto, and neither of the cross-axis margins are auto, the flex item is stretched." + }, + { + "name": "normal" + }, + { + "name": "start" + }, + { + "name": "end" + }, + { + "name": "self-start" + }, + { + "name": "self-end" + }, + { + "name": "first baseline" + }, + { + "name": "last baseline" + }, + { + "name": "stretch" + }, + { + "name": "safe" + }, + { + "name": "unsafe" + } + ], + "syntax": "normal | stretch | <baseline-position> | [ <overflow-position>? <self-position> ]", + "relevance": 86, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/align-items" + } + ], + "description": "Aligns flex items along the cross axis of the current line of the flex container.", + "restrictions": [ + "enum" + ] + }, + { + "name": "justify-items", + "browsers": [ + "E12", + "FF20", + "S9", + "C52", + "IE11", + "O12.1" + ], + "values": [ + { + "name": "auto" + }, + { + "name": "normal" + }, + { + "name": "end" + }, + { + "name": "start" + }, + { + "name": "flex-end", + "description": "\"Flex items are packed toward the end of the line.\"" + }, + { + "name": "flex-start", + "description": "\"Flex items are packed toward the start of the line.\"" + }, + { + "name": "self-end", + "description": "The item is packed flush to the edge of the alignment container of the end side of the item, in the appropriate axis." + }, + { + "name": "self-start", + "description": "The item is packed flush to the edge of the alignment container of the start side of the item, in the appropriate axis.." + }, + { + "name": "center", + "description": "The items are packed flush to each other toward the center of the of the alignment container." + }, + { + "name": "left" + }, + { + "name": "right" + }, + { + "name": "baseline" + }, + { + "name": "first baseline" + }, + { + "name": "last baseline" + }, + { + "name": "stretch", + "description": "If the cross size property of the flex item computes to auto, and neither of the cross-axis margins are auto, the flex item is stretched." + }, + { + "name": "safe" + }, + { + "name": "unsafe" + }, + { + "name": "legacy" + } + ], + "syntax": "normal | stretch | <baseline-position> | <overflow-position>? [ <self-position> | left | right ] | legacy | legacy && [ left | right | center ]", + "relevance": 54, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/justify-items" + } + ], + "description": "Defines the default justify-self for all items of the box, giving them the default way of justifying each box along the appropriate axis", + "restrictions": [ + "enum" + ] + }, + { + "name": "justify-self", + "browsers": [ + "E16", + "FF45", + "S10.1", + "C57", + "IE10", + "O44" + ], + "values": [ + { + "name": "auto" + }, + { + "name": "normal" + }, + { + "name": "end" + }, + { + "name": "start" + }, + { + "name": "flex-end", + "description": "\"Flex items are packed toward the end of the line.\"" + }, + { + "name": "flex-start", + "description": "\"Flex items are packed toward the start of the line.\"" + }, + { + "name": "self-end", + "description": "The item is packed flush to the edge of the alignment container of the end side of the item, in the appropriate axis." + }, + { + "name": "self-start", + "description": "The item is packed flush to the edge of the alignment container of the start side of the item, in the appropriate axis.." + }, + { + "name": "center", + "description": "The items are packed flush to each other toward the center of the of the alignment container." + }, + { + "name": "left" + }, + { + "name": "right" + }, + { + "name": "baseline" + }, + { + "name": "first baseline" + }, + { + "name": "last baseline" + }, + { + "name": "stretch", + "description": "If the cross size property of the flex item computes to auto, and neither of the cross-axis margins are auto, the flex item is stretched." + }, + { + "name": "save" + }, + { + "name": "unsave" + } + ], + "syntax": "auto | normal | stretch | <baseline-position> | <overflow-position>? [ <self-position> | left | right ]", + "relevance": 56, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/justify-self" + } + ], + "description": "Defines the way of justifying a box inside its container along the appropriate axis.", + "restrictions": [ + "enum" + ] + }, + { + "name": "align-self", + "browsers": [ + "E12", + "FF20", + "S9", + "C29", + "IE10", + "O12.1" + ], + "values": [ + { + "name": "auto", + "description": "Computes to the value of 'align-items' on the element's parent, or 'stretch' if the element has no parent. On absolutely positioned elements, it computes to itself." + }, + { + "name": "normal" + }, + { + "name": "self-end" + }, + { + "name": "self-start" + }, + { + "name": "baseline", + "description": "If the flex item's inline axis is the same as the cross axis, this value is identical to 'flex-start'. Otherwise, it participates in baseline alignment." + }, + { + "name": "center", + "description": "The flex item's margin box is centered in the cross axis within the line." + }, + { + "name": "flex-end", + "description": "The cross-end margin edge of the flex item is placed flush with the cross-end edge of the line." + }, + { + "name": "flex-start", + "description": "The cross-start margin edge of the flex item is placed flush with the cross-start edge of the line." + }, + { + "name": "stretch", + "description": "If the cross size property of the flex item computes to auto, and neither of the cross-axis margins are auto, the flex item is stretched." + }, + { + "name": "baseline" + }, + { + "name": "first baseline" + }, + { + "name": "last baseline" + }, + { + "name": "safe" + }, + { + "name": "unsafe" + } + ], + "syntax": "auto | normal | stretch | <baseline-position> | <overflow-position>? <self-position>", + "relevance": 73, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/align-self" + } + ], + "description": "Allows the default alignment along the cross axis to be overridden for individual flex items.", + "restrictions": [ + "enum" + ] + }, + { + "name": "all", + "browsers": [ + "E79", + "FF27", + "S9.1", + "C37", + "O24" + ], + "values": [], + "syntax": "initial | inherit | unset | revert | revert-layer", + "relevance": 53, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/all" + } + ], + "description": "Shorthand that resets all properties except 'direction' and 'unicode-bidi'.", + "restrictions": [ + "enum" + ] + }, + { + "name": "alt", + "browsers": [ + "S9" + ], + "values": [], + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/alt" + } + ], + "description": "Provides alternative text for assistive technology to replace the generated content of a ::before or ::after element.", + "restrictions": [ + "string", + "enum" + ] + }, + { + "name": "animation", + "browsers": [ + "E12", + "FF16", + "S9", + "C43", + "IE10", + "O30" + ], + "values": [ + { + "name": "alternate", + "description": "The animation cycle iterations that are odd counts are played in the normal direction, and the animation cycle iterations that are even counts are played in a reverse direction." + }, + { + "name": "alternate-reverse", + "description": "The animation cycle iterations that are odd counts are played in the reverse direction, and the animation cycle iterations that are even counts are played in a normal direction." + }, + { + "name": "backwards", + "description": "The beginning property value (as defined in the first @keyframes at-rule) is applied before the animation is displayed, during the period defined by 'animation-delay'." + }, + { + "name": "both", + "description": "Both forwards and backwards fill modes are applied." + }, + { + "name": "forwards", + "description": "The final property value (as defined in the last @keyframes at-rule) is maintained after the animation completes." + }, + { + "name": "infinite", + "description": "Causes the animation to repeat forever." + }, + { + "name": "none", + "description": "No animation is performed" + }, + { + "name": "normal", + "description": "Normal playback." + }, + { + "name": "reverse", + "description": "All iterations of the animation are played in the reverse direction from the way they were specified." + } + ], + "syntax": "<single-animation>#", + "relevance": 82, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/animation" + } + ], + "description": "Shorthand property combines six of the animation properties into a single property.", + "restrictions": [ + "time", + "timing-function", + "enum", + "identifier", + "number" + ] + }, + { + "name": "animation-delay", + "browsers": [ + "E12", + "FF16", + "S9", + "C43", + "IE10", + "O30" + ], + "syntax": "<time>#", + "relevance": 66, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/animation-delay" + } + ], + "description": "Defines when the animation will start.", + "restrictions": [ + "time" + ] + }, + { + "name": "animation-direction", + "browsers": [ + "E12", + "FF16", + "S9", + "C43", + "IE10", + "O30" + ], + "values": [ + { + "name": "alternate", + "description": "The animation cycle iterations that are odd counts are played in the normal direction, and the animation cycle iterations that are even counts are played in a reverse direction." + }, + { + "name": "alternate-reverse", + "description": "The animation cycle iterations that are odd counts are played in the reverse direction, and the animation cycle iterations that are even counts are played in a normal direction." + }, + { + "name": "normal", + "description": "Normal playback." + }, + { + "name": "reverse", + "description": "All iterations of the animation are played in the reverse direction from the way they were specified." + } + ], + "syntax": "<single-animation-direction>#", + "relevance": 59, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/animation-direction" + } + ], + "description": "Defines whether or not the animation should play in reverse on alternate cycles.", + "restrictions": [ + "enum" + ] + }, + { + "name": "animation-duration", + "browsers": [ + "E12", + "FF16", + "S9", + "C43", + "IE10", + "O30" + ], + "syntax": "<time>#", + "relevance": 72, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/animation-duration" + } + ], + "description": "Defines the length of time that an animation takes to complete one cycle.", + "restrictions": [ + "time" + ] + }, + { + "name": "animation-fill-mode", + "browsers": [ + "E12", + "FF16", + "S9", + "C43", + "IE10", + "O30" + ], + "values": [ + { + "name": "backwards", + "description": "The beginning property value (as defined in the first @keyframes at-rule) is applied before the animation is displayed, during the period defined by 'animation-delay'." + }, + { + "name": "both", + "description": "Both forwards and backwards fill modes are applied." + }, + { + "name": "forwards", + "description": "The final property value (as defined in the last @keyframes at-rule) is maintained after the animation completes." + }, + { + "name": "none", + "description": "There is no change to the property value between the time the animation is applied and the time the animation begins playing or after the animation completes." + } + ], + "syntax": "<single-animation-fill-mode>#", + "relevance": 65, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/animation-fill-mode" + } + ], + "description": "Defines what values are applied by the animation outside the time it is executing.", + "restrictions": [ + "enum" + ] + }, + { + "name": "animation-iteration-count", + "browsers": [ + "E12", + "FF16", + "S9", + "C43", + "IE10", + "O30" + ], + "values": [ + { + "name": "infinite", + "description": "Causes the animation to repeat forever." + } + ], + "syntax": "<single-animation-iteration-count>#", + "relevance": 64, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/animation-iteration-count" + } + ], + "description": "Defines the number of times an animation cycle is played. The default value is one, meaning the animation will play from beginning to end once.", + "restrictions": [ + "number", + "enum" + ] + }, + { + "name": "animation-name", + "browsers": [ + "E12", + "FF16", + "S9", + "C43", + "IE10", + "O30" + ], + "values": [ + { + "name": "none", + "description": "No animation is performed" + } + ], + "syntax": "[ none | <keyframes-name> ]#", + "relevance": 71, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/animation-name" + } + ], + "description": "Defines a list of animations that apply. Each name is used to select the keyframe at-rule that provides the property values for the animation.", + "restrictions": [ + "identifier", + "enum" + ] + }, + { + "name": "animation-play-state", + "browsers": [ + "E12", + "FF16", + "S9", + "C43", + "IE10", + "O30" + ], + "values": [ + { + "name": "paused", + "description": "A running animation will be paused." + }, + { + "name": "running", + "description": "Resume playback of a paused animation." + } + ], + "syntax": "<single-animation-play-state>#", + "relevance": 54, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/animation-play-state" + } + ], + "description": "Defines whether the animation is running or paused.", + "restrictions": [ + "enum" + ] + }, + { + "name": "animation-timing-function", + "browsers": [ + "E12", + "FF16", + "S9", + "C43", + "IE10", + "O30" + ], + "syntax": "<easing-function>#", + "relevance": 72, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/animation-timing-function" + } + ], + "description": "Describes how the animation will progress over one cycle of its duration.", + "restrictions": [ + "timing-function" + ] + }, + { + "name": "backface-visibility", + "browsers": [ + "E12", + "FF16", + "S15.4", + "C36", + "IE10", + "O23" + ], + "values": [ + { + "name": "hidden", + "description": "Back side is hidden." + }, + { + "name": "visible", + "description": "Back side is visible." + } + ], + "syntax": "visible | hidden", + "relevance": 59, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/backface-visibility" + } + ], + "description": "Determines whether or not the 'back' side of a transformed element is visible when facing the viewer. With an identity transform, the front side of an element faces the viewer.", + "restrictions": [ + "enum" + ] + }, + { + "name": "background", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O3.5" + ], + "values": [ + { + "name": "fixed", + "description": "The background is fixed with regard to the viewport. In paged media where there is no viewport, a 'fixed' background is fixed with respect to the page box and therefore replicated on every page." + }, + { + "name": "local", + "description": "The background is fixed with regard to the element's contents: if the element has a scrolling mechanism, the background scrolls with the element's contents." + }, + { + "name": "none", + "description": "A value of 'none' counts as an image layer but draws nothing." + }, + { + "name": "scroll", + "description": "The background is fixed with regard to the element itself and does not scroll with its contents. (It is effectively attached to the element's border.)" + } + ], + "syntax": "[ <bg-layer> , ]* <final-bg-layer>", + "relevance": 93, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/background" + } + ], + "description": "Shorthand property for setting most background properties at the same place in the style sheet.", + "restrictions": [ + "enum", + "image", + "color", + "position", + "length", + "repeat", + "percentage", + "box" + ] + }, + { + "name": "background-attachment", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O3.5" + ], + "values": [ + { + "name": "fixed", + "description": "The background is fixed with regard to the viewport. In paged media where there is no viewport, a 'fixed' background is fixed with respect to the page box and therefore replicated on every page." + }, + { + "name": "local", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O3.5" + ], + "description": "The background is fixed with regard to the element's contents: if the element has a scrolling mechanism, the background scrolls with the element's contents." + }, + { + "name": "scroll", + "description": "The background is fixed with regard to the element itself and does not scroll with its contents. (It is effectively attached to the element's border.)" + } + ], + "syntax": "<attachment>#", + "relevance": 54, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/background-attachment" + } + ], + "description": "Specifies whether the background images are fixed with regard to the viewport ('fixed') or scroll along with the element ('scroll') or its contents ('local').", + "restrictions": [ + "enum" + ] + }, + { + "name": "background-blend-mode", + "browsers": [ + "E79", + "FF30", + "S8", + "C35", + "O22" + ], + "values": [ + { + "name": "normal", + "description": "Default attribute which specifies no blending" + }, + { + "name": "multiply", + "description": "The source color is multiplied by the destination color and replaces the destination." + }, + { + "name": "screen", + "description": "Multiplies the complements of the backdrop and source color values, then complements the result." + }, + { + "name": "overlay", + "description": "Multiplies or screens the colors, depending on the backdrop color value." + }, + { + "name": "darken", + "description": "Selects the darker of the backdrop and source colors." + }, + { + "name": "lighten", + "description": "Selects the lighter of the backdrop and source colors." + }, + { + "name": "color-dodge", + "description": "Brightens the backdrop color to reflect the source color." + }, + { + "name": "color-burn", + "description": "Darkens the backdrop color to reflect the source color." + }, + { + "name": "hard-light", + "description": "Multiplies or screens the colors, depending on the source color value." + }, + { + "name": "soft-light", + "description": "Darkens or lightens the colors, depending on the source color value." + }, + { + "name": "difference", + "description": "Subtracts the darker of the two constituent colors from the lighter color.." + }, + { + "name": "exclusion", + "description": "Produces an effect similar to that of the Difference mode but lower in contrast." + }, + { + "name": "hue", + "browsers": [ + "E79", + "FF30", + "S8", + "C35", + "O22" + ], + "description": "Creates a color with the hue of the source color and the saturation and luminosity of the backdrop color." + }, + { + "name": "saturation", + "browsers": [ + "E79", + "FF30", + "S8", + "C35", + "O22" + ], + "description": "Creates a color with the saturation of the source color and the hue and luminosity of the backdrop color." + }, + { + "name": "color", + "browsers": [ + "E79", + "FF30", + "S8", + "C35", + "O22" + ], + "description": "Creates a color with the hue and saturation of the source color and the luminosity of the backdrop color." + }, + { + "name": "luminosity", + "browsers": [ + "E79", + "FF30", + "S8", + "C35", + "O22" + ], + "description": "Creates a color with the luminosity of the source color and the hue and saturation of the backdrop color." + } + ], + "syntax": "<blend-mode>#", + "relevance": 54, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/background-blend-mode" + } + ], + "description": "Defines the blending mode of each background layer.", + "restrictions": [ + "enum" + ] + }, + { + "name": "background-clip", + "browsers": [ + "E12", + "FF4", + "S5", + "C1", + "IE9", + "O10.5" + ], + "syntax": "<box>#", + "relevance": 68, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/background-clip" + } + ], + "description": "Determines the background painting area.", + "restrictions": [ + "box" + ] + }, + { + "name": "background-color", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O3.5" + ], + "syntax": "<color>", + "relevance": 94, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/background-color" + } + ], + "description": "Sets the background color of an element.", + "restrictions": [ + "color" + ] + }, + { + "name": "background-image", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O3.5" + ], + "values": [ + { + "name": "none", + "description": "Counts as an image layer but draws nothing." + } + ], + "syntax": "<bg-image>#", + "relevance": 88, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/background-image" + } + ], + "description": "Sets the background image(s) of an element.", + "restrictions": [ + "image", + "enum" + ] + }, + { + "name": "background-origin", + "browsers": [ + "E12", + "FF4", + "S3", + "C1", + "IE9", + "O10.5" + ], + "syntax": "<box>#", + "relevance": 54, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/background-origin" + } + ], + "description": "For elements rendered as a single box, specifies the background positioning area. For elements rendered as multiple boxes (e.g., inline boxes on several lines, boxes on several pages) specifies which boxes 'box-decoration-break' operates on to determine the background positioning area(s).", + "restrictions": [ + "box" + ] + }, + { + "name": "background-position", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O3.5" + ], + "syntax": "<bg-position>#", + "relevance": 87, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/background-position" + } + ], + "description": "Specifies the initial position of the background image(s) (after any resizing) within their corresponding background positioning area.", + "restrictions": [ + "position", + "length", + "percentage" + ] + }, + { + "name": "background-position-x", + "browsers": [ + "E12", + "FF49", + "S1", + "C1", + "IE6", + "O15" + ], + "values": [ + { + "name": "center", + "description": "Equivalent to '50%' ('left 50%') for the horizontal position if the horizontal position is not otherwise specified, or '50%' ('top 50%') for the vertical position if it is." + }, + { + "name": "left", + "description": "Equivalent to '0%' for the horizontal position if one or two values are given, otherwise specifies the left edge as the origin for the next offset." + }, + { + "name": "right", + "description": "Equivalent to '100%' for the horizontal position if one or two values are given, otherwise specifies the right edge as the origin for the next offset." + } + ], + "syntax": "[ center | [ [ left | right | x-start | x-end ]? <length-percentage>? ]! ]#", + "relevance": 55, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/background-position-x" + } + ], + "description": "If background images have been specified, this property specifies their initial position (after any resizing) within their corresponding background positioning area.", + "restrictions": [ + "length", + "percentage" + ] + }, + { + "name": "background-position-y", + "browsers": [ + "E12", + "FF49", + "S1", + "C1", + "IE6", + "O15" + ], + "values": [ + { + "name": "bottom", + "description": "Equivalent to '100%' for the vertical position if one or two values are given, otherwise specifies the bottom edge as the origin for the next offset." + }, + { + "name": "center", + "description": "Equivalent to '50%' ('left 50%') for the horizontal position if the horizontal position is not otherwise specified, or '50%' ('top 50%') for the vertical position if it is." + }, + { + "name": "top", + "description": "Equivalent to '0%' for the vertical position if one or two values are given, otherwise specifies the top edge as the origin for the next offset." + } + ], + "syntax": "[ center | [ [ top | bottom | y-start | y-end ]? <length-percentage>? ]! ]#", + "relevance": 53, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/background-position-y" + } + ], + "description": "If background images have been specified, this property specifies their initial position (after any resizing) within their corresponding background positioning area.", + "restrictions": [ + "length", + "percentage" + ] + }, + { + "name": "background-repeat", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O3.5" + ], + "values": [], + "syntax": "<repeat-style>#", + "relevance": 84, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/background-repeat" + } + ], + "description": "Specifies how background images are tiled after they have been sized and positioned.", + "restrictions": [ + "repeat" + ] + }, + { + "name": "background-size", + "browsers": [ + "E12", + "FF4", + "S5", + "C3", + "IE9", + "O10" + ], + "values": [ + { + "name": "auto", + "description": "Resolved by using the image's intrinsic ratio and the size of the other dimension, or failing that, using the image's intrinsic size, or failing that, treating it as 100%." + }, + { + "name": "contain", + "description": "Scale the image, while preserving its intrinsic aspect ratio (if any), to the largest size such that both its width and its height can fit inside the background positioning area." + }, + { + "name": "cover", + "description": "Scale the image, while preserving its intrinsic aspect ratio (if any), to the smallest size such that both its width and its height can completely cover the background positioning area." + } + ], + "syntax": "<bg-size>#", + "relevance": 84, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/background-size" + } + ], + "description": "Specifies the size of the background images.", + "restrictions": [ + "length", + "percentage" + ] + }, + { + "name": "behavior", + "browsers": [ + "IE6" + ], + "relevance": 50, + "description": "IE only. Used to extend behaviors of the browser.", + "restrictions": [ + "url" + ] + }, + { + "name": "block-size", + "browsers": [ + "E79", + "FF41", + "S12.1", + "C57", + "O44" + ], + "values": [ + { + "name": "auto", + "description": "Depends on the values of other properties." + } + ], + "syntax": "<'width'>", + "relevance": 53, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/block-size" + } + ], + "description": "Size of an element in the direction opposite that of the direction specified by 'writing-mode'.", + "restrictions": [ + "length", + "percentage" + ] + }, + { + "name": "border", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O3.5" + ], + "syntax": "<line-width> || <line-style> || <color>", + "relevance": 95, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/border" + } + ], + "description": "Shorthand property for setting border width, style, and color.", + "restrictions": [ + "length", + "line-width", + "line-style", + "color" + ] + }, + { + "name": "border-block-end", + "browsers": [ + "E79", + "FF41", + "S12.1", + "C69", + "O56" + ], + "syntax": "<'border-top-width'> || <'border-top-style'> || <color>", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/border-block-end" + } + ], + "description": "Logical 'border-bottom'. Mapping depends on the parent element's 'writing-mode', 'direction', and 'text-orientation'.", + "restrictions": [ + "length", + "line-width", + "line-style", + "color" + ] + }, + { + "name": "border-block-start", + "browsers": [ + "E79", + "FF41", + "S12.1", + "C69", + "O56" + ], + "syntax": "<'border-top-width'> || <'border-top-style'> || <color>", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/border-block-start" + } + ], + "description": "Logical 'border-top'. Mapping depends on the parent element's 'writing-mode', 'direction', and 'text-orientation'.", + "restrictions": [ + "length", + "line-width", + "line-style", + "color" + ] + }, + { + "name": "border-block-end-color", + "browsers": [ + "E79", + "FF41", + "S12.1", + "C69", + "O56" + ], + "syntax": "<'border-top-color'>", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/border-block-end-color" + } + ], + "description": "Logical 'border-bottom-color'. Mapping depends on the parent element's 'writing-mode', 'direction', and 'text-orientation'.", + "restrictions": [ + "color" + ] + }, + { + "name": "border-block-start-color", + "browsers": [ + "E79", + "FF41", + "S12.1", + "C69", + "O56" + ], + "syntax": "<'border-top-color'>", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/border-block-start-color" + } + ], + "description": "Logical 'border-top-color'. Mapping depends on the parent element's 'writing-mode', 'direction', and 'text-orientation'.", + "restrictions": [ + "color" + ] + }, + { + "name": "border-block-end-style", + "browsers": [ + "E79", + "FF41", + "S12.1", + "C69", + "O56" + ], + "syntax": "<'border-top-style'>", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/border-block-end-style" + } + ], + "description": "Logical 'border-bottom-style'. Mapping depends on the parent element's 'writing-mode', 'direction', and 'text-orientation'.", + "restrictions": [ + "line-style" + ] + }, + { + "name": "border-block-start-style", + "browsers": [ + "E79", + "FF41", + "S12.1", + "C69", + "O56" + ], + "syntax": "<'border-top-style'>", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/border-block-start-style" + } + ], + "description": "Logical 'border-top-style'. Mapping depends on the parent element's 'writing-mode', 'direction', and 'text-orientation'.", + "restrictions": [ + "line-style" + ] + }, + { + "name": "border-block-end-width", + "browsers": [ + "E79", + "FF41", + "S12.1", + "C69", + "O56" + ], + "syntax": "<'border-top-width'>", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/border-block-end-width" + } + ], + "description": "Logical 'border-bottom-width'. Mapping depends on the parent element's 'writing-mode', 'direction', and 'text-orientation'.", + "restrictions": [ + "length", + "line-width" + ] + }, + { + "name": "border-block-start-width", + "browsers": [ + "E79", + "FF41", + "S12.1", + "C69", + "O56" + ], + "syntax": "<'border-top-width'>", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/border-block-start-width" + } + ], + "description": "Logical 'border-top-width'. Mapping depends on the parent element's 'writing-mode', 'direction', and 'text-orientation'.", + "restrictions": [ + "length", + "line-width" + ] + }, + { + "name": "border-bottom", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O3.5" + ], + "syntax": "<line-width> || <line-style> || <color>", + "relevance": 88, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/border-bottom" + } + ], + "description": "Shorthand property for setting border width, style and color.", + "restrictions": [ + "length", + "line-width", + "line-style", + "color" + ] + }, + { + "name": "border-bottom-color", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O3.5" + ], + "syntax": "<'border-top-color'>", + "relevance": 71, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/border-bottom-color" + } + ], + "description": "Sets the color of the bottom border.", + "restrictions": [ + "color" + ] + }, + { + "name": "border-bottom-left-radius", + "browsers": [ + "E12", + "FF4", + "S5", + "C4", + "IE9", + "O10.5" + ], + "syntax": "<length-percentage>{1,2}", + "relevance": 75, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/border-bottom-left-radius" + } + ], + "description": "Defines the radii of the bottom left outer border edge.", + "restrictions": [ + "length", + "percentage" + ] + }, + { + "name": "border-bottom-right-radius", + "browsers": [ + "E12", + "FF4", + "S5", + "C4", + "IE9", + "O10.5" + ], + "syntax": "<length-percentage>{1,2}", + "relevance": 75, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/border-bottom-right-radius" + } + ], + "description": "Defines the radii of the bottom right outer border edge.", + "restrictions": [ + "length", + "percentage" + ] + }, + { + "name": "border-bottom-style", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE5.5", + "O9.2" + ], + "syntax": "<line-style>", + "relevance": 59, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/border-bottom-style" + } + ], + "description": "Sets the style of the bottom border.", + "restrictions": [ + "line-style" + ] + }, + { + "name": "border-bottom-width", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O3.5" + ], + "syntax": "<line-width>", + "relevance": 63, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/border-bottom-width" + } + ], + "description": "Sets the thickness of the bottom border.", + "restrictions": [ + "length", + "line-width" + ] + }, + { + "name": "border-collapse", + "browsers": [ + "E12", + "FF1", + "S1.2", + "C1", + "IE5", + "O4" + ], + "values": [ + { + "name": "collapse", + "description": "Selects the collapsing borders model." + }, + { + "name": "separate", + "description": "Selects the separated borders border model." + } + ], + "syntax": "collapse | separate", + "relevance": 73, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/border-collapse" + } + ], + "description": "Selects a table's border model.", + "restrictions": [ + "enum" + ] + }, + { + "name": "border-color", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O3.5" + ], + "values": [], + "syntax": "<color>{1,4}", + "relevance": 87, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/border-color" + } + ], + "description": "The color of the border around all four edges of an element.", + "restrictions": [ + "color" + ] + }, + { + "name": "border-image", + "browsers": [ + "E12", + "FF15", + "S6", + "C16", + "IE11", + "O11" + ], + "values": [ + { + "name": "auto", + "description": "If 'auto' is specified then the border image width is the intrinsic width or height (whichever is applicable) of the corresponding image slice. If the image does not have the required intrinsic dimension then the corresponding border-width is used instead." + }, + { + "name": "fill", + "description": "Causes the middle part of the border-image to be preserved." + }, + { + "name": "none", + "description": "Use the border styles." + }, + { + "name": "repeat", + "description": "The image is tiled (repeated) to fill the area." + }, + { + "name": "round", + "description": "The image is tiled (repeated) to fill the area. If it does not fill the area with a whole number of tiles, the image is rescaled so that it does." + }, + { + "name": "space", + "description": "The image is tiled (repeated) to fill the area. If it does not fill the area with a whole number of tiles, the extra space is distributed around the tiles." + }, + { + "name": "stretch", + "description": "The image is stretched to fill the area." + }, + { + "name": "url()" + } + ], + "syntax": "<'border-image-source'> || <'border-image-slice'> [ / <'border-image-width'> | / <'border-image-width'>? / <'border-image-outset'> ]? || <'border-image-repeat'>", + "relevance": 52, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/border-image" + } + ], + "description": "Shorthand property for setting 'border-image-source', 'border-image-slice', 'border-image-width', 'border-image-outset' and 'border-image-repeat'. Omitted values are set to their initial values.", + "restrictions": [ + "length", + "percentage", + "number", + "url", + "enum" + ] + }, + { + "name": "border-image-outset", + "browsers": [ + "E12", + "FF15", + "S6", + "C15", + "IE11", + "O15" + ], + "syntax": "[ <length> | <number> ]{1,4}", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/border-image-outset" + } + ], + "description": "The values specify the amount by which the border image area extends beyond the border box on the top, right, bottom, and left sides respectively. If the fourth value is absent, it is the same as the second. If the third one is also absent, it is the same as the first. If the second one is also absent, it is the same as the first. Numbers represent multiples of the corresponding border-width.", + "restrictions": [ + "length", + "number" + ] + }, + { + "name": "border-image-repeat", + "browsers": [ + "E12", + "FF15", + "S6", + "C15", + "IE11", + "O15" + ], + "values": [ + { + "name": "repeat", + "description": "The image is tiled (repeated) to fill the area." + }, + { + "name": "round", + "description": "The image is tiled (repeated) to fill the area. If it does not fill the area with a whole number of tiles, the image is rescaled so that it does." + }, + { + "name": "space", + "description": "The image is tiled (repeated) to fill the area. If it does not fill the area with a whole number of tiles, the extra space is distributed around the tiles." + }, + { + "name": "stretch", + "description": "The image is stretched to fill the area." + } + ], + "syntax": "[ stretch | repeat | round | space ]{1,2}", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/border-image-repeat" + } + ], + "description": "Specifies how the images for the sides and the middle part of the border image are scaled and tiled. If the second keyword is absent, it is assumed to be the same as the first.", + "restrictions": [ + "enum" + ] + }, + { + "name": "border-image-slice", + "browsers": [ + "E12", + "FF15", + "S6", + "C15", + "IE11", + "O15" + ], + "values": [ + { + "name": "fill", + "description": "Causes the middle part of the border-image to be preserved." + } + ], + "syntax": "<number-percentage>{1,4} && fill?", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/border-image-slice" + } + ], + "description": "Specifies inward offsets from the top, right, bottom, and left edges of the image, dividing it into nine regions: four corners, four edges and a middle.", + "restrictions": [ + "number", + "percentage" + ] + }, + { + "name": "border-image-source", + "browsers": [ + "E12", + "FF15", + "S6", + "C15", + "IE11", + "O15" + ], + "values": [ + { + "name": "none", + "description": "Use the border styles." + } + ], + "syntax": "none | <image>", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/border-image-source" + } + ], + "description": "Specifies an image to use instead of the border styles given by the 'border-style' properties and as an additional background layer for the element. If the value is 'none' or if the image cannot be displayed, the border styles will be used.", + "restrictions": [ + "image" + ] + }, + { + "name": "border-image-width", + "browsers": [ + "E12", + "FF13", + "S6", + "C15", + "IE11", + "O15" + ], + "values": [ + { + "name": "auto", + "description": "The border image width is the intrinsic width or height (whichever is applicable) of the corresponding image slice. If the image does not have the required intrinsic dimension then the corresponding border-width is used instead." + } + ], + "syntax": "[ <length-percentage> | <number> | auto ]{1,4}", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/border-image-width" + } + ], + "description": "The four values of 'border-image-width' specify offsets that are used to divide the border image area into nine parts. They represent inward distances from the top, right, bottom, and left sides of the area, respectively.", + "restrictions": [ + "length", + "percentage", + "number" + ] + }, + { + "name": "border-inline-end", + "browsers": [ + "E79", + "FF41", + "S12.1", + "C69", + "O56" + ], + "syntax": "<'border-top-width'> || <'border-top-style'> || <color>", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/border-inline-end" + } + ], + "description": "Logical 'border-right'. Mapping depends on the parent element's 'writing-mode', 'direction', and 'text-orientation'.", + "restrictions": [ + "length", + "line-width", + "line-style", + "color" + ] + }, + { + "name": "border-inline-start", + "browsers": [ + "E79", + "FF41", + "S12.1", + "C69", + "O56" + ], + "syntax": "<'border-top-width'> || <'border-top-style'> || <color>", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/border-inline-start" + } + ], + "description": "Logical 'border-left'. Mapping depends on the parent element's 'writing-mode', 'direction', and 'text-orientation'.", + "restrictions": [ + "length", + "line-width", + "line-style", + "color" + ] + }, + { + "name": "border-inline-end-color", + "browsers": [ + "E79", + "FF41", + "S12.1", + "C69", + "O56" + ], + "syntax": "<'border-top-color'>", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/border-inline-end-color" + } + ], + "description": "Logical 'border-right-color'. Mapping depends on the parent element's 'writing-mode', 'direction', and 'text-orientation'.", + "restrictions": [ + "color" + ] + }, + { + "name": "border-inline-start-color", + "browsers": [ + "E79", + "FF41", + "S12.1", + "C69", + "O56" + ], + "syntax": "<'border-top-color'>", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/border-inline-start-color" + } + ], + "description": "Logical 'border-left-color'. Mapping depends on the parent element's 'writing-mode', 'direction', and 'text-orientation'.", + "restrictions": [ + "color" + ] + }, + { + "name": "border-inline-end-style", + "browsers": [ + "E79", + "FF41", + "S12.1", + "C69", + "O56" + ], + "syntax": "<'border-top-style'>", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/border-inline-end-style" + } + ], + "description": "Logical 'border-right-style'. Mapping depends on the parent element's 'writing-mode', 'direction', and 'text-orientation'.", + "restrictions": [ + "line-style" + ] + }, + { + "name": "border-inline-start-style", + "browsers": [ + "E79", + "FF41", + "S12.1", + "C69", + "O56" + ], + "syntax": "<'border-top-style'>", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/border-inline-start-style" + } + ], + "description": "Logical 'border-left-style'. Mapping depends on the parent element's 'writing-mode', 'direction', and 'text-orientation'.", + "restrictions": [ + "line-style" + ] + }, + { + "name": "border-inline-end-width", + "browsers": [ + "E79", + "FF41", + "S12.1", + "C69", + "O56" + ], + "syntax": "<'border-top-width'>", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/border-inline-end-width" + } + ], + "description": "Logical 'border-right-width'. Mapping depends on the parent element's 'writing-mode', 'direction', and 'text-orientation'.", + "restrictions": [ + "length", + "line-width" + ] + }, + { + "name": "border-inline-start-width", + "browsers": [ + "E79", + "FF41", + "S12.1", + "C69", + "O56" + ], + "syntax": "<'border-top-width'>", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/border-inline-start-width" + } + ], + "description": "Logical 'border-left-width'. Mapping depends on the parent element's 'writing-mode', 'direction', and 'text-orientation'.", + "restrictions": [ + "length", + "line-width" + ] + }, + { + "name": "border-left", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O3.5" + ], + "syntax": "<line-width> || <line-style> || <color>", + "relevance": 82, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/border-left" + } + ], + "description": "Shorthand property for setting border width, style and color", + "restrictions": [ + "length", + "line-width", + "line-style", + "color" + ] + }, + { + "name": "border-left-color", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O3.5" + ], + "syntax": "<color>", + "relevance": 68, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/border-left-color" + } + ], + "description": "Sets the color of the left border.", + "restrictions": [ + "color" + ] + }, + { + "name": "border-left-style", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE5.5", + "O9.2" + ], + "syntax": "<line-style>", + "relevance": 54, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/border-left-style" + } + ], + "description": "Sets the style of the left border.", + "restrictions": [ + "line-style" + ] + }, + { + "name": "border-left-width", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O3.5" + ], + "syntax": "<line-width>", + "relevance": 63, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/border-left-width" + } + ], + "description": "Sets the thickness of the left border.", + "restrictions": [ + "length", + "line-width" + ] + }, + { + "name": "border-radius", + "browsers": [ + "E12", + "FF4", + "S5", + "C4", + "IE9", + "O10.5" + ], + "syntax": "<length-percentage>{1,4} [ / <length-percentage>{1,4} ]?", + "relevance": 92, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/border-radius" + } + ], + "description": "Defines the radii of the outer border edge.", + "restrictions": [ + "length", + "percentage" + ] + }, + { + "name": "border-right", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE5.5", + "O9.2" + ], + "syntax": "<line-width> || <line-style> || <color>", + "relevance": 81, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/border-right" + } + ], + "description": "Shorthand property for setting border width, style and color", + "restrictions": [ + "length", + "line-width", + "line-style", + "color" + ] + }, + { + "name": "border-right-color", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O3.5" + ], + "syntax": "<color>", + "relevance": 67, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/border-right-color" + } + ], + "description": "Sets the color of the right border.", + "restrictions": [ + "color" + ] + }, + { + "name": "border-right-style", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE5.5", + "O9.2" + ], + "syntax": "<line-style>", + "relevance": 53, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/border-right-style" + } + ], + "description": "Sets the style of the right border.", + "restrictions": [ + "line-style" + ] + }, + { + "name": "border-right-width", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O3.5" + ], + "syntax": "<line-width>", + "relevance": 63, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/border-right-width" + } + ], + "description": "Sets the thickness of the right border.", + "restrictions": [ + "length", + "line-width" + ] + }, + { + "name": "border-spacing", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE8", + "O4" + ], + "syntax": "<length> <length>?", + "relevance": 67, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/border-spacing" + } + ], + "description": "The lengths specify the distance that separates adjoining cell borders. If one length is specified, it gives both the horizontal and vertical spacing. If two are specified, the first gives the horizontal spacing and the second the vertical spacing. Lengths may not be negative.", + "restrictions": [ + "length" + ] + }, + { + "name": "border-style", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O3.5" + ], + "values": [], + "syntax": "<line-style>{1,4}", + "relevance": 80, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/border-style" + } + ], + "description": "The style of the border around edges of an element.", + "restrictions": [ + "line-style" + ] + }, + { + "name": "border-top", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O3.5" + ], + "syntax": "<line-width> || <line-style> || <color>", + "relevance": 87, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/border-top" + } + ], + "description": "Shorthand property for setting border width, style and color", + "restrictions": [ + "length", + "line-width", + "line-style", + "color" + ] + }, + { + "name": "border-top-color", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O3.5" + ], + "syntax": "<color>", + "relevance": 71, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/border-top-color" + } + ], + "description": "Sets the color of the top border.", + "restrictions": [ + "color" + ] + }, + { + "name": "border-top-left-radius", + "browsers": [ + "E12", + "FF4", + "S5", + "C4", + "IE9", + "O10.5" + ], + "syntax": "<length-percentage>{1,2}", + "relevance": 75, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/border-top-left-radius" + } + ], + "description": "Defines the radii of the top left outer border edge.", + "restrictions": [ + "length", + "percentage" + ] + }, + { + "name": "border-top-right-radius", + "browsers": [ + "E12", + "FF4", + "S5", + "C4", + "IE9", + "O10.5" + ], + "syntax": "<length-percentage>{1,2}", + "relevance": 76, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/border-top-right-radius" + } + ], + "description": "Defines the radii of the top right outer border edge.", + "restrictions": [ + "length", + "percentage" + ] + }, + { + "name": "border-top-style", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE5.5", + "O9.2" + ], + "syntax": "<line-style>", + "relevance": 58, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/border-top-style" + } + ], + "description": "Sets the style of the top border.", + "restrictions": [ + "line-style" + ] + }, + { + "name": "border-top-width", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O3.5" + ], + "syntax": "<line-width>", + "relevance": 61, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/border-top-width" + } + ], + "description": "Sets the thickness of the top border.", + "restrictions": [ + "length", + "line-width" + ] + }, + { + "name": "border-width", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O3.5" + ], + "values": [], + "syntax": "<line-width>{1,4}", + "relevance": 82, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/border-width" + } + ], + "description": "Shorthand that sets the four 'border-*-width' properties. If it has four values, they set top, right, bottom and left in that order. If left is missing, it is the same as right; if bottom is missing, it is the same as top; if right is missing, it is the same as top.", + "restrictions": [ + "length", + "line-width" + ] + }, + { + "name": "bottom", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE5", + "O6" + ], + "values": [ + { + "name": "auto", + "description": "For non-replaced elements, the effect of this value depends on which of related properties have the value 'auto' as well" + } + ], + "syntax": "<length> | <percentage> | auto", + "relevance": 90, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/bottom" + } + ], + "description": "Specifies how far an absolutely positioned box's bottom margin edge is offset above the bottom edge of the box's 'containing block'.", + "restrictions": [ + "length", + "percentage" + ] + }, + { + "name": "box-decoration-break", + "browsers": [ + "E79", + "FF32", + "S7", + "C22", + "O15" + ], + "values": [ + { + "name": "clone", + "description": "Each box is independently wrapped with the border and padding." + }, + { + "name": "slice", + "description": "The effect is as though the element were rendered with no breaks present, and then sliced by the breaks afterward." + } + ], + "syntax": "slice | clone", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/box-decoration-break" + } + ], + "description": "Specifies whether individual boxes are treated as broken pieces of one continuous box, or whether each box is individually wrapped with the border and padding.", + "restrictions": [ + "enum" + ] + }, + { + "name": "box-shadow", + "browsers": [ + "E12", + "FF4", + "S5.1", + "C10", + "IE9", + "O10.5" + ], + "values": [ + { + "name": "inset", + "description": "Changes the drop shadow from an outer shadow (one that shadows the box onto the canvas, as if it were lifted above the canvas) to an inner shadow (one that shadows the canvas onto the box, as if the box were cut out of the canvas and shifted behind it)." + }, + { + "name": "none", + "description": "No shadow." + } + ], + "syntax": "none | <shadow>#", + "relevance": 89, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/box-shadow" + } + ], + "description": "Attaches one or more drop-shadows to the box. The property is a comma-separated list of shadows, each specified by 2-4 length values, an optional color, and an optional 'inset' keyword. Omitted lengths are 0; omitted colors are a user agent chosen color.", + "restrictions": [ + "length", + "color", + "enum" + ] + }, + { + "name": "box-sizing", + "browsers": [ + "E12", + "FF29", + "S5.1", + "C10", + "IE8", + "O7" + ], + "values": [ + { + "name": "border-box", + "description": "The specified width and height (and respective min/max properties) on this element determine the border box of the element." + }, + { + "name": "content-box", + "description": "Behavior of width and height as specified by CSS2.1. The specified width and height (and respective min/max properties) apply to the width and height respectively of the content box of the element." + } + ], + "syntax": "content-box | border-box", + "relevance": 92, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/box-sizing" + } + ], + "description": "Specifies the behavior of the 'width' and 'height' properties.", + "restrictions": [ + "enum" + ] + }, + { + "name": "break-after", + "browsers": [ + "E12", + "FF65", + "S10", + "C50", + "IE10", + "O37" + ], + "values": [ + { + "name": "always", + "description": "Always force a page break before/after the generated box." + }, + { + "name": "auto", + "description": "Neither force nor forbid a page/column break before/after the principal box." + }, + { + "name": "avoid", + "description": "Avoid a break before/after the principal box." + }, + { + "name": "avoid-column", + "description": "Avoid a column break before/after the principal box." + }, + { + "name": "avoid-page", + "description": "Avoid a page break before/after the principal box." + }, + { + "name": "column", + "description": "Always force a column break before/after the principal box." + }, + { + "name": "left", + "description": "Force one or two page breaks before/after the generated box so that the next page is formatted as a left page." + }, + { + "name": "page", + "description": "Always force a page break before/after the principal box." + }, + { + "name": "right", + "description": "Force one or two page breaks before/after the generated box so that the next page is formatted as a right page." + } + ], + "syntax": "auto | avoid | always | all | avoid-page | page | left | right | recto | verso | avoid-column | column | avoid-region | region", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/break-after" + } + ], + "description": "Describes the page/column/region break behavior after the generated box.", + "restrictions": [ + "enum" + ] + }, + { + "name": "break-before", + "browsers": [ + "E12", + "FF65", + "S10", + "C50", + "IE10", + "O37" + ], + "values": [ + { + "name": "always", + "description": "Always force a page break before/after the generated box." + }, + { + "name": "auto", + "description": "Neither force nor forbid a page/column break before/after the principal box." + }, + { + "name": "avoid", + "description": "Avoid a break before/after the principal box." + }, + { + "name": "avoid-column", + "description": "Avoid a column break before/after the principal box." + }, + { + "name": "avoid-page", + "description": "Avoid a page break before/after the principal box." + }, + { + "name": "column", + "description": "Always force a column break before/after the principal box." + }, + { + "name": "left", + "description": "Force one or two page breaks before/after the generated box so that the next page is formatted as a left page." + }, + { + "name": "page", + "description": "Always force a page break before/after the principal box." + }, + { + "name": "right", + "description": "Force one or two page breaks before/after the generated box so that the next page is formatted as a right page." + } + ], + "syntax": "auto | avoid | always | all | avoid-page | page | left | right | recto | verso | avoid-column | column | avoid-region | region", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/break-before" + } + ], + "description": "Describes the page/column/region break behavior before the generated box.", + "restrictions": [ + "enum" + ] + }, + { + "name": "break-inside", + "browsers": [ + "E12", + "FF65", + "S10", + "C50", + "IE10", + "O37" + ], + "values": [ + { + "name": "auto", + "description": "Impose no additional breaking constraints within the box." + }, + { + "name": "avoid", + "description": "Avoid breaks within the box." + }, + { + "name": "avoid-column", + "description": "Avoid a column break within the box." + }, + { + "name": "avoid-page", + "description": "Avoid a page break within the box." + } + ], + "syntax": "auto | avoid | avoid-page | avoid-column | avoid-region", + "relevance": 51, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/break-inside" + } + ], + "description": "Describes the page/column/region break behavior inside the principal box.", + "restrictions": [ + "enum" + ] + }, + { + "name": "caption-side", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE8", + "O4" + ], + "values": [ + { + "name": "bottom", + "description": "Positions the caption box below the table box." + }, + { + "name": "top", + "description": "Positions the caption box above the table box." + } + ], + "syntax": "top | bottom | block-start | block-end | inline-start | inline-end", + "relevance": 52, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/caption-side" + } + ], + "description": "Specifies the position of the caption box with respect to the table box.", + "restrictions": [ + "enum" + ] + }, + { + "name": "caret-color", + "browsers": [ + "E79", + "FF53", + "S11.1", + "C57", + "O44" + ], + "values": [ + { + "name": "auto", + "description": "The user agent selects an appropriate color for the caret. This is generally currentcolor, but the user agent may choose a different color to ensure good visibility and contrast with the surrounding content, taking into account the value of currentcolor, the background, shadows, and other factors." + } + ], + "syntax": "auto | <color>", + "relevance": 53, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/caret-color" + } + ], + "description": "Controls the color of the text insertion indicator.", + "restrictions": [ + "color", + "enum" + ] + }, + { + "name": "clear", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O3.5" + ], + "values": [ + { + "name": "both", + "description": "The clearance of the generated box is set to the amount necessary to place the top border edge below the bottom outer edge of any right-floating and left-floating boxes that resulted from elements earlier in the source document." + }, + { + "name": "left", + "description": "The clearance of the generated box is set to the amount necessary to place the top border edge below the bottom outer edge of any left-floating boxes that resulted from elements earlier in the source document." + }, + { + "name": "none", + "description": "No constraint on the box's position with respect to floats." + }, + { + "name": "right", + "description": "The clearance of the generated box is set to the amount necessary to place the top border edge below the bottom outer edge of any right-floating boxes that resulted from elements earlier in the source document." + } + ], + "syntax": "none | left | right | both | inline-start | inline-end", + "relevance": 83, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/clear" + } + ], + "description": "Indicates which sides of an element's box(es) may not be adjacent to an earlier floating box. The 'clear' property does not consider floats inside the element itself or in other block formatting contexts.", + "restrictions": [ + "enum" + ] + }, + { + "name": "clip", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O7" + ], + "values": [ + { + "name": "auto", + "description": "The element does not clip." + }, + { + "name": "rect()", + "description": "Specifies offsets from the edges of the border box." + } + ], + "syntax": "<shape> | auto", + "relevance": 75, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/clip" + } + ], + "description": "Deprecated. Use the 'clip-path' property when support allows. Defines the visible portion of an element's box.", + "restrictions": [ + "enum" + ] + }, + { + "name": "clip-path", + "browsers": [ + "E79", + "FF3.5", + "S9.1", + "C55", + "IE10", + "O42" + ], + "values": [ + { + "name": "none", + "description": "No clipping path gets created." + }, + { + "name": "url()", + "description": "References a <clipPath> element to create a clipping path." + } + ], + "syntax": "<clip-source> | [ <basic-shape> || <geometry-box> ] | none", + "relevance": 63, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/clip-path" + } + ], + "description": "Specifies a clipping path where everything inside the path is visible and everything outside is clipped out.", + "restrictions": [ + "url", + "shape", + "geometry-box", + "enum" + ] + }, + { + "name": "clip-rule", + "browsers": [ + "E", + "C5", + "FF3", + "IE10", + "O9", + "S6" + ], + "values": [ + { + "name": "evenodd", + "description": "Determines the 'insideness' of a point on the canvas by drawing a ray from that point to infinity in any direction and counting the number of path segments from the given shape that the ray crosses." + }, + { + "name": "nonzero", + "description": "Determines the 'insideness' of a point on the canvas by drawing a ray from that point to infinity in any direction and then examining the places where a segment of the shape crosses the ray." + } + ], + "relevance": 50, + "description": "Indicates the algorithm which is to be used to determine what parts of the canvas are included inside the shape.", + "restrictions": [ + "enum" + ] + }, + { + "name": "color", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE3", + "O3.5" + ], + "syntax": "<color>", + "relevance": 94, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/color" + } + ], + "description": "Sets the color of an element's text", + "restrictions": [ + "color" + ] + }, + { + "name": "color-interpolation-filters", + "browsers": [ + "E", + "C5", + "FF3", + "IE10", + "O9", + "S6" + ], + "values": [ + { + "name": "auto", + "description": "Color operations are not required to occur in a particular color space." + }, + { + "name": "linearRGB", + "description": "Color operations should occur in the linearized RGB color space." + }, + { + "name": "sRGB", + "description": "Color operations should occur in the sRGB color space." + } + ], + "relevance": 50, + "description": "Specifies the color space for imaging operations performed via filter effects.", + "restrictions": [ + "enum" + ] + }, + { + "name": "column-count", + "browsers": [ + "E12", + "FF52", + "S9", + "C50", + "IE10", + "O11.1" + ], + "values": [ + { + "name": "auto", + "description": "Determines the number of columns by the 'column-width' property and the element width." + } + ], + "syntax": "<integer> | auto", + "relevance": 53, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/column-count" + } + ], + "description": "Describes the optimal number of columns into which the content of the element will be flowed.", + "restrictions": [ + "integer", + "enum" + ] + }, + { + "name": "column-fill", + "browsers": [ + "E12", + "FF52", + "S9", + "C50", + "IE10", + "O37" + ], + "values": [ + { + "name": "auto", + "description": "Fills columns sequentially." + }, + { + "name": "balance", + "description": "Balance content equally between columns, if possible." + } + ], + "syntax": "auto | balance | balance-all", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/column-fill" + } + ], + "description": "In continuous media, this property will only be consulted if the length of columns has been constrained. Otherwise, columns will automatically be balanced.", + "restrictions": [ + "enum" + ] + }, + { + "name": "column-gap", + "browsers": [ + "E12", + "FF1.5", + "S3", + "C1", + "IE10", + "O11.1" + ], + "values": [ + { + "name": "normal", + "description": "User agent specific and typically equivalent to 1em." + } + ], + "syntax": "normal | <length-percentage>", + "relevance": 60, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/column-gap" + } + ], + "description": "Sets the gap between columns. If there is a column rule between columns, it will appear in the middle of the gap.", + "restrictions": [ + "length", + "enum" + ] + }, + { + "name": "column-rule", + "browsers": [ + "E12", + "FF52", + "S9", + "C50", + "IE10", + "O11.1" + ], + "syntax": "<'column-rule-width'> || <'column-rule-style'> || <'column-rule-color'>", + "relevance": 51, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/column-rule" + } + ], + "description": "Shorthand for setting 'column-rule-width', 'column-rule-style', and 'column-rule-color' at the same place in the style sheet. Omitted values are set to their initial values.", + "restrictions": [ + "length", + "line-width", + "line-style", + "color" + ] + }, + { + "name": "column-rule-color", + "browsers": [ + "E12", + "FF52", + "S9", + "C50", + "IE10", + "O11.1" + ], + "syntax": "<color>", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/column-rule-color" + } + ], + "description": "Sets the color of the column rule", + "restrictions": [ + "color" + ] + }, + { + "name": "column-rule-style", + "browsers": [ + "E12", + "FF52", + "S9", + "C50", + "IE10", + "O11.1" + ], + "syntax": "<'border-style'>", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/column-rule-style" + } + ], + "description": "Sets the style of the rule between columns of an element.", + "restrictions": [ + "line-style" + ] + }, + { + "name": "column-rule-width", + "browsers": [ + "E12", + "FF52", + "S9", + "C50", + "IE10", + "O11.1" + ], + "syntax": "<'border-width'>", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/column-rule-width" + } + ], + "description": "Sets the width of the rule between columns. Negative values are not allowed.", + "restrictions": [ + "length", + "line-width" + ] + }, + { + "name": "columns", + "browsers": [ + "E12", + "FF52", + "S9", + "C50", + "IE10", + "O11.1" + ], + "values": [ + { + "name": "auto", + "description": "The width depends on the values of other properties." + } + ], + "syntax": "<'column-width'> || <'column-count'>", + "relevance": 51, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/columns" + } + ], + "description": "A shorthand property which sets both 'column-width' and 'column-count'.", + "restrictions": [ + "length", + "integer", + "enum" + ] + }, + { + "name": "column-span", + "browsers": [ + "E12", + "FF71", + "S9", + "C50", + "IE10", + "O11.1" + ], + "values": [ + { + "name": "all", + "description": "The element spans across all columns. Content in the normal flow that appears before the element is automatically balanced across all columns before the element appear." + }, + { + "name": "none", + "description": "The element does not span multiple columns." + } + ], + "syntax": "none | all", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/column-span" + } + ], + "description": "Describes the page/column break behavior after the generated box.", + "restrictions": [ + "enum" + ] + }, + { + "name": "column-width", + "browsers": [ + "E12", + "FF50", + "S9", + "C50", + "IE10", + "O11.1" + ], + "values": [ + { + "name": "auto", + "description": "The width depends on the values of other properties." + } + ], + "syntax": "<length> | auto", + "relevance": 51, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/column-width" + } + ], + "description": "Describes the width of columns in multicol elements.", + "restrictions": [ + "length", + "enum" + ] + }, + { + "name": "contain", + "browsers": [ + "E79", + "FF69", + "S15.4", + "C52", + "O39" + ], + "values": [ + { + "name": "none", + "description": "Indicates that the property has no effect." + }, + { + "name": "strict", + "description": "Turns on all forms of containment for the element." + }, + { + "name": "content", + "description": "All containment rules except size are applied to the element." + }, + { + "name": "size", + "description": "For properties that can have effects on more than just an element and its descendants, those effects don't escape the containing element." + }, + { + "name": "layout", + "description": "Turns on layout containment for the element." + }, + { + "name": "style", + "description": "Turns on style containment for the element." + }, + { + "name": "paint", + "description": "Turns on paint containment for the element." + } + ], + "syntax": "none | strict | content | [ [ size || inline-size ] || layout || style || paint ]", + "relevance": 59, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/contain" + } + ], + "description": "Indicates that an element and its contents are, as much as possible, independent of the rest of the document tree.", + "restrictions": [ + "enum" + ] + }, + { + "name": "content", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE8", + "O4" + ], + "values": [ + { + "name": "attr()", + "description": "The attr(n) function returns as a string the value of attribute n for the subject of the selector." + }, + { + "name": "counter(name)", + "description": "Counters are denoted by identifiers (see the 'counter-increment' and 'counter-reset' properties)." + }, + { + "name": "icon", + "description": "The (pseudo-)element is replaced in its entirety by the resource referenced by its 'icon' property, and treated as a replaced element." + }, + { + "name": "none", + "description": "On elements, this inhibits the children of the element from being rendered as children of this element, as if the element was empty. On pseudo-elements it causes the pseudo-element to have no content." + }, + { + "name": "normal", + "description": "See http://www.w3.org/TR/css3-content/#content for computation rules." + }, + { + "name": "url()" + } + ], + "syntax": "normal | none | [ <content-replacement> | <content-list> ] [/ [ <string> | <counter> ]+ ]?", + "relevance": 89, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/content" + } + ], + "description": "Determines which page-based occurrence of a given element is applied to a counter or string value.", + "restrictions": [ + "string", + "url" + ] + }, + { + "name": "counter-increment", + "browsers": [ + "E12", + "FF1", + "S3", + "C2", + "IE8", + "O9.2" + ], + "values": [ + { + "name": "none", + "description": "This element does not alter the value of any counters." + } + ], + "syntax": "[ <counter-name> <integer>? ]+ | none", + "relevance": 54, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/counter-increment" + } + ], + "description": "Manipulate the value of existing counters.", + "restrictions": [ + "identifier", + "integer" + ] + }, + { + "name": "counter-reset", + "browsers": [ + "E12", + "FF1", + "S3", + "C2", + "IE8", + "O9.2" + ], + "values": [ + { + "name": "none", + "description": "The counter is not modified." + } + ], + "syntax": "[ <counter-name> <integer>? | <reversed-counter-name> <integer>? ]+ | none", + "relevance": 53, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/counter-reset" + } + ], + "description": "Property accepts one or more names of counters (identifiers), each one optionally followed by an integer. The integer gives the value that the counter is set to on each occurrence of the element.", + "restrictions": [ + "identifier", + "integer" + ] + }, + { + "name": "cursor", + "browsers": [ + "E12", + "FF1", + "S1.2", + "C1", + "IE4", + "O7" + ], + "values": [ + { + "name": "alias", + "description": "Indicates an alias of/shortcut to something is to be created. Often rendered as an arrow with a small curved arrow next to it." + }, + { + "name": "all-scroll", + "description": "Indicates that the something can be scrolled in any direction. Often rendered as arrows pointing up, down, left, and right with a dot in the middle." + }, + { + "name": "auto", + "description": "The UA determines the cursor to display based on the current context." + }, + { + "name": "cell", + "description": "Indicates that a cell or set of cells may be selected. Often rendered as a thick plus-sign with a dot in the middle." + }, + { + "name": "col-resize", + "description": "Indicates that the item/column can be resized horizontally. Often rendered as arrows pointing left and right with a vertical bar separating them." + }, + { + "name": "context-menu", + "description": "A context menu is available for the object under the cursor. Often rendered as an arrow with a small menu-like graphic next to it." + }, + { + "name": "copy", + "description": "Indicates something is to be copied. Often rendered as an arrow with a small plus sign next to it." + }, + { + "name": "crosshair", + "description": "A simple crosshair (e.g., short line segments resembling a '+' sign). Often used to indicate a two dimensional bitmap selection mode." + }, + { + "name": "default", + "description": "The platform-dependent default cursor. Often rendered as an arrow." + }, + { + "name": "e-resize", + "description": "Indicates that east edge is to be moved." + }, + { + "name": "ew-resize", + "description": "Indicates a bidirectional east-west resize cursor." + }, + { + "name": "grab", + "browsers": [ + "E12", + "FF1", + "S1.2", + "C1", + "IE4", + "O7" + ], + "description": "Indicates that something can be grabbed." + }, + { + "name": "grabbing", + "browsers": [ + "E12", + "FF1", + "S1.2", + "C1", + "IE4", + "O7" + ], + "description": "Indicates that something is being grabbed." + }, + { + "name": "help", + "description": "Help is available for the object under the cursor. Often rendered as a question mark or a balloon." + }, + { + "name": "move", + "description": "Indicates something is to be moved." + }, + { + "name": "-moz-grab", + "browsers": [ + "E12", + "FF1", + "S1.2", + "C1", + "IE4", + "O7" + ], + "description": "Indicates that something can be grabbed." + }, + { + "name": "-moz-grabbing", + "browsers": [ + "E12", + "FF1", + "S1.2", + "C1", + "IE4", + "O7" + ], + "description": "Indicates that something is being grabbed." + }, + { + "name": "-moz-zoom-in", + "browsers": [ + "E12", + "FF1", + "S1.2", + "C1", + "IE4", + "O7" + ], + "description": "Indicates that something can be zoomed (magnified) in." + }, + { + "name": "-moz-zoom-out", + "browsers": [ + "E12", + "FF1", + "S1.2", + "C1", + "IE4", + "O7" + ], + "description": "Indicates that something can be zoomed (magnified) out." + }, + { + "name": "ne-resize", + "description": "Indicates that movement starts from north-east corner." + }, + { + "name": "nesw-resize", + "description": "Indicates a bidirectional north-east/south-west cursor." + }, + { + "name": "no-drop", + "description": "Indicates that the dragged item cannot be dropped at the current cursor location. Often rendered as a hand or pointer with a small circle with a line through it." + }, + { + "name": "none", + "description": "No cursor is rendered for the element." + }, + { + "name": "not-allowed", + "description": "Indicates that the requested action will not be carried out. Often rendered as a circle with a line through it." + }, + { + "name": "n-resize", + "description": "Indicates that north edge is to be moved." + }, + { + "name": "ns-resize", + "description": "Indicates a bidirectional north-south cursor." + }, + { + "name": "nw-resize", + "description": "Indicates that movement starts from north-west corner." + }, + { + "name": "nwse-resize", + "description": "Indicates a bidirectional north-west/south-east cursor." + }, + { + "name": "pointer", + "description": "The cursor is a pointer that indicates a link." + }, + { + "name": "progress", + "description": "A progress indicator. The program is performing some processing, but is different from 'wait' in that the user may still interact with the program. Often rendered as a spinning beach ball, or an arrow with a watch or hourglass." + }, + { + "name": "row-resize", + "description": "Indicates that the item/row can be resized vertically. Often rendered as arrows pointing up and down with a horizontal bar separating them." + }, + { + "name": "se-resize", + "description": "Indicates that movement starts from south-east corner." + }, + { + "name": "s-resize", + "description": "Indicates that south edge is to be moved." + }, + { + "name": "sw-resize", + "description": "Indicates that movement starts from south-west corner." + }, + { + "name": "text", + "description": "Indicates text that may be selected. Often rendered as a vertical I-beam." + }, + { + "name": "vertical-text", + "description": "Indicates vertical-text that may be selected. Often rendered as a horizontal I-beam." + }, + { + "name": "wait", + "description": "Indicates that the program is busy and the user should wait. Often rendered as a watch or hourglass." + }, + { + "name": "-webkit-grab", + "browsers": [ + "E12", + "FF1", + "S1.2", + "C1", + "IE4", + "O7" + ], + "description": "Indicates that something can be grabbed." + }, + { + "name": "-webkit-grabbing", + "browsers": [ + "E12", + "FF1", + "S1.2", + "C1", + "IE4", + "O7" + ], + "description": "Indicates that something is being grabbed." + }, + { + "name": "-webkit-zoom-in", + "browsers": [ + "E12", + "FF1", + "S1.2", + "C1", + "IE4", + "O7" + ], + "description": "Indicates that something can be zoomed (magnified) in." + }, + { + "name": "-webkit-zoom-out", + "browsers": [ + "E12", + "FF1", + "S1.2", + "C1", + "IE4", + "O7" + ], + "description": "Indicates that something can be zoomed (magnified) out." + }, + { + "name": "w-resize", + "description": "Indicates that west edge is to be moved." + }, + { + "name": "zoom-in", + "browsers": [ + "E12", + "FF1", + "S1.2", + "C1", + "IE4", + "O7" + ], + "description": "Indicates that something can be zoomed (magnified) in." + }, + { + "name": "zoom-out", + "browsers": [ + "E12", + "FF1", + "S1.2", + "C1", + "IE4", + "O7" + ], + "description": "Indicates that something can be zoomed (magnified) out." + } + ], + "syntax": "[ [ <url> [ <x> <y> ]? , ]* [ auto | default | none | context-menu | help | pointer | progress | wait | cell | crosshair | text | vertical-text | alias | copy | move | no-drop | not-allowed | e-resize | n-resize | ne-resize | nw-resize | s-resize | se-resize | sw-resize | w-resize | ew-resize | ns-resize | nesw-resize | nwse-resize | col-resize | row-resize | all-scroll | zoom-in | zoom-out | grab | grabbing ] ]", + "relevance": 91, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/cursor" + } + ], + "description": "Allows control over cursor appearance in an element", + "restrictions": [ + "url", + "number", + "enum" + ] + }, + { + "name": "direction", + "browsers": [ + "E12", + "FF1", + "S1", + "C2", + "IE5.5", + "O9.2" + ], + "values": [ + { + "name": "ltr", + "description": "Left-to-right direction." + }, + { + "name": "rtl", + "description": "Right-to-left direction." + } + ], + "syntax": "ltr | rtl", + "relevance": 71, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/direction" + } + ], + "description": "Specifies the inline base direction or directionality of any bidi paragraph, embedding, isolate, or override established by the box. Note: for HTML content use the 'dir' attribute and 'bdo' element rather than this property.", + "restrictions": [ + "enum" + ] + }, + { + "name": "display", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O7" + ], + "values": [ + { + "name": "block", + "description": "The element generates a block-level box" + }, + { + "name": "contents", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O7" + ], + "description": "The element itself does not generate any boxes, but its children and pseudo-elements still generate boxes as normal." + }, + { + "name": "flex", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O7" + ], + "description": "The element generates a principal flex container box and establishes a flex formatting context." + }, + { + "name": "flexbox", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O7" + ], + "description": "The element lays out its contents using flow layout (block-and-inline layout). Standardized as 'flex'." + }, + { + "name": "flow-root", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O7" + ], + "description": "The element generates a block container box, and lays out its contents using flow layout." + }, + { + "name": "grid", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O7" + ], + "description": "The element generates a principal grid container box, and establishes a grid formatting context." + }, + { + "name": "inline", + "description": "The element generates an inline-level box." + }, + { + "name": "inline-block", + "description": "A block box, which itself is flowed as a single inline box, similar to a replaced element. The inside of an inline-block is formatted as a block box, and the box itself is formatted as an inline box." + }, + { + "name": "inline-flex", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O7" + ], + "description": "Inline-level flex container." + }, + { + "name": "inline-flexbox", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O7" + ], + "description": "Inline-level flex container. Standardized as 'inline-flex'" + }, + { + "name": "inline-table", + "description": "Inline-level table wrapper box containing table box." + }, + { + "name": "list-item", + "description": "One or more block boxes and one marker box." + }, + { + "name": "-moz-box", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O7" + ], + "description": "The element lays out its contents using flow layout (block-and-inline layout). Standardized as 'flex'." + }, + { + "name": "-moz-deck", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O7" + ] + }, + { + "name": "-moz-grid", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O7" + ] + }, + { + "name": "-moz-grid-group", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O7" + ] + }, + { + "name": "-moz-grid-line", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O7" + ] + }, + { + "name": "-moz-groupbox", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O7" + ] + }, + { + "name": "-moz-inline-box", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O7" + ], + "description": "Inline-level flex container. Standardized as 'inline-flex'" + }, + { + "name": "-moz-inline-grid", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O7" + ] + }, + { + "name": "-moz-inline-stack", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O7" + ] + }, + { + "name": "-moz-marker", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O7" + ] + }, + { + "name": "-moz-popup", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O7" + ] + }, + { + "name": "-moz-stack", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O7" + ] + }, + { + "name": "-ms-flexbox", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O7" + ], + "description": "The element lays out its contents using flow layout (block-and-inline layout). Standardized as 'flex'." + }, + { + "name": "-ms-grid", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O7" + ], + "description": "The element generates a principal grid container box, and establishes a grid formatting context." + }, + { + "name": "-ms-inline-flexbox", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O7" + ], + "description": "Inline-level flex container. Standardized as 'inline-flex'" + }, + { + "name": "-ms-inline-grid", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O7" + ], + "description": "Inline-level grid container." + }, + { + "name": "none", + "description": "The element and its descendants generates no boxes." + }, + { + "name": "ruby", + "description": "The element generates a principal ruby container box, and establishes a ruby formatting context." + }, + { + "name": "ruby-base" + }, + { + "name": "ruby-base-container" + }, + { + "name": "ruby-text" + }, + { + "name": "ruby-text-container" + }, + { + "name": "run-in", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O7" + ], + "description": "The element generates a run-in box. Run-in elements act like inlines or blocks, depending on the surrounding elements." + }, + { + "name": "table", + "description": "The element generates a principal table wrapper box containing an additionally-generated table box, and establishes a table formatting context." + }, + { + "name": "table-caption" + }, + { + "name": "table-cell" + }, + { + "name": "table-column" + }, + { + "name": "table-column-group" + }, + { + "name": "table-footer-group" + }, + { + "name": "table-header-group" + }, + { + "name": "table-row" + }, + { + "name": "table-row-group" + }, + { + "name": "-webkit-box", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O7" + ], + "description": "The element lays out its contents using flow layout (block-and-inline layout). Standardized as 'flex'." + }, + { + "name": "-webkit-flex", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O7" + ], + "description": "The element lays out its contents using flow layout (block-and-inline layout)." + }, + { + "name": "-webkit-inline-box", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O7" + ], + "description": "Inline-level flex container. Standardized as 'inline-flex'" + }, + { + "name": "-webkit-inline-flex", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O7" + ], + "description": "Inline-level flex container." + } + ], + "syntax": "[ <display-outside> || <display-inside> ] | <display-listitem> | <display-internal> | <display-box> | <display-legacy>", + "relevance": 96, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/display" + } + ], + "description": "In combination with 'float' and 'position', determines the type of box or boxes that are generated for an element.", + "restrictions": [ + "enum" + ] + }, + { + "name": "empty-cells", + "browsers": [ + "E12", + "FF1", + "S1.2", + "C1", + "IE8", + "O4" + ], + "values": [ + { + "name": "hide", + "description": "No borders or backgrounds are drawn around/behind empty cells." + }, + { + "name": "-moz-show-background", + "browsers": [ + "E12", + "FF1", + "S1.2", + "C1", + "IE8", + "O4" + ] + }, + { + "name": "show", + "description": "Borders and backgrounds are drawn around/behind empty cells (like normal cells)." + } + ], + "syntax": "show | hide", + "relevance": 51, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/empty-cells" + } + ], + "description": "In the separated borders model, this property controls the rendering of borders and backgrounds around cells that have no visible content.", + "restrictions": [ + "enum" + ] + }, + { + "name": "enable-background", + "values": [ + { + "name": "accumulate", + "description": "If the ancestor container element has a property of new, then all graphics elements within the current container are rendered both on the parent's background image and onto the target." + }, + { + "name": "new", + "description": "Create a new background image canvas. All children of the current container element can access the background, and they will be rendered onto both the parent's background image canvas in addition to the target device." + } + ], + "relevance": 50, + "description": "Deprecated. Use 'isolation' property instead when support allows. Specifies how the accumulation of the background image is managed.", + "restrictions": [ + "integer", + "length", + "percentage", + "enum" + ] + }, + { + "name": "fallback", + "browsers": [ + "FF33" + ], + "atRule": "@counter-style", + "syntax": "<counter-style-name>", + "relevance": 50, + "description": "@counter-style descriptor. Specifies a fallback counter style to be used when the current counter style can't create a representation for a given counter value.", + "restrictions": [ + "identifier" + ] + }, + { + "name": "fill", + "values": [ + { + "name": "url()", + "description": "A URL reference to a paint server element, which is an element that defines a paint server: 'hatch', 'linearGradient', 'mesh', 'pattern', 'radialGradient' and 'solidcolor'." + }, + { + "name": "none", + "description": "No paint is applied in this layer." + } + ], + "relevance": 77, + "description": "Paints the interior of the given graphical element.", + "restrictions": [ + "color", + "enum", + "url" + ] + }, + { + "name": "fill-opacity", + "relevance": 52, + "description": "Specifies the opacity of the painting operation used to paint the interior the current object.", + "restrictions": [ + "number(0-1)" + ] + }, + { + "name": "fill-rule", + "values": [ + { + "name": "evenodd", + "description": "Determines the 'insideness' of a point on the canvas by drawing a ray from that point to infinity in any direction and counting the number of path segments from the given shape that the ray crosses." + }, + { + "name": "nonzero", + "description": "Determines the 'insideness' of a point on the canvas by drawing a ray from that point to infinity in any direction and then examining the places where a segment of the shape crosses the ray." + } + ], + "relevance": 51, + "description": "Indicates the algorithm (or winding rule) which is to be used to determine what parts of the canvas are included inside the shape.", + "restrictions": [ + "enum" + ] + }, + { + "name": "filter", + "browsers": [ + "E12", + "FF35", + "S9.1", + "C53", + "O40" + ], + "values": [ + { + "name": "none", + "description": "No filter effects are applied." + }, + { + "name": "blur()", + "description": "Applies a Gaussian blur to the input image." + }, + { + "name": "brightness()", + "description": "Applies a linear multiplier to input image, making it appear more or less bright." + }, + { + "name": "contrast()", + "description": "Adjusts the contrast of the input." + }, + { + "name": "drop-shadow()", + "description": "Applies a drop shadow effect to the input image." + }, + { + "name": "grayscale()", + "description": "Converts the input image to grayscale." + }, + { + "name": "hue-rotate()", + "description": "Applies a hue rotation on the input image. " + }, + { + "name": "invert()", + "description": "Inverts the samples in the input image." + }, + { + "name": "opacity()", + "description": "Applies transparency to the samples in the input image." + }, + { + "name": "saturate()", + "description": "Saturates the input image." + }, + { + "name": "sepia()", + "description": "Converts the input image to sepia." + }, + { + "name": "url()", + "browsers": [ + "E12", + "FF35", + "S9.1", + "C53", + "O40" + ], + "description": "A filter reference to a <filter> element." + } + ], + "syntax": "none | <filter-function-list>", + "relevance": 69, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/filter" + } + ], + "description": "Processes an element's rendering before it is displayed in the document, by applying one or more filter effects.", + "restrictions": [ + "enum", + "url" + ] + }, + { + "name": "flex", + "browsers": [ + "E12", + "FF20", + "S9", + "C29", + "IE11", + "O12.1" + ], + "values": [ + { + "name": "auto", + "description": "Retrieves the value of the main size property as the used 'flex-basis'." + }, + { + "name": "content", + "browsers": [ + "E12", + "FF20", + "S9", + "C29", + "IE11", + "O12.1" + ], + "description": "Indicates automatic sizing, based on the flex item's content." + }, + { + "name": "none", + "description": "Expands to '0 0 auto'." + } + ], + "syntax": "none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]", + "relevance": 80, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/flex" + } + ], + "description": "Specifies the components of a flexible length: the flex grow factor and flex shrink factor, and the flex basis.", + "restrictions": [ + "length", + "number", + "percentage" + ] + }, + { + "name": "flex-basis", + "browsers": [ + "E12", + "FF22", + "S9", + "C29", + "IE11", + "O12.1" + ], + "values": [ + { + "name": "auto", + "description": "Retrieves the value of the main size property as the used 'flex-basis'." + }, + { + "name": "content", + "browsers": [ + "E12", + "FF22", + "S9", + "C29", + "IE11", + "O12.1" + ], + "description": "Indicates automatic sizing, based on the flex item's content." + } + ], + "syntax": "content | <'width'>", + "relevance": 69, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/flex-basis" + } + ], + "description": "Sets the flex basis.", + "restrictions": [ + "length", + "number", + "percentage" + ] + }, + { + "name": "flex-direction", + "browsers": [ + "E12", + "FF81", + "S9", + "C29", + "IE11", + "O12.1" + ], + "values": [ + { + "name": "column", + "description": "The flex container's main axis has the same orientation as the block axis of the current writing mode." + }, + { + "name": "column-reverse", + "description": "Same as 'column', except the main-start and main-end directions are swapped." + }, + { + "name": "row", + "description": "The flex container's main axis has the same orientation as the inline axis of the current writing mode." + }, + { + "name": "row-reverse", + "description": "Same as 'row', except the main-start and main-end directions are swapped." + } + ], + "syntax": "row | row-reverse | column | column-reverse", + "relevance": 84, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/flex-direction" + } + ], + "description": "Specifies how flex items are placed in the flex container, by setting the direction of the flex container's main axis.", + "restrictions": [ + "enum" + ] + }, + { + "name": "flex-flow", + "browsers": [ + "E12", + "FF28", + "S9", + "C29", + "IE11", + "O12.1" + ], + "values": [ + { + "name": "column", + "description": "The flex container's main axis has the same orientation as the block axis of the current writing mode." + }, + { + "name": "column-reverse", + "description": "Same as 'column', except the main-start and main-end directions are swapped." + }, + { + "name": "nowrap", + "description": "The flex container is single-line." + }, + { + "name": "row", + "description": "The flex container's main axis has the same orientation as the inline axis of the current writing mode." + }, + { + "name": "row-reverse", + "description": "Same as 'row', except the main-start and main-end directions are swapped." + }, + { + "name": "wrap", + "description": "The flexbox is multi-line." + }, + { + "name": "wrap-reverse", + "description": "Same as 'wrap', except the cross-start and cross-end directions are swapped." + } + ], + "syntax": "<'flex-direction'> || <'flex-wrap'>", + "relevance": 64, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/flex-flow" + } + ], + "description": "Specifies how flexbox items are placed in the flexbox.", + "restrictions": [ + "enum" + ] + }, + { + "name": "flex-grow", + "browsers": [ + "E12", + "FF20", + "S9", + "C29", + "IE11", + "O12.1" + ], + "syntax": "<number>", + "relevance": 77, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/flex-grow" + } + ], + "description": "Sets the flex grow factor. Negative numbers are invalid.", + "restrictions": [ + "number" + ] + }, + { + "name": "flex-shrink", + "browsers": [ + "E12", + "FF20", + "S9", + "C29", + "IE10", + "O12.1" + ], + "syntax": "<number>", + "relevance": 75, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/flex-shrink" + } + ], + "description": "Sets the flex shrink factor. Negative numbers are invalid.", + "restrictions": [ + "number" + ] + }, + { + "name": "flex-wrap", + "browsers": [ + "E12", + "FF28", + "S9", + "C29", + "IE11", + "O17" + ], + "values": [ + { + "name": "nowrap", + "description": "The flex container is single-line." + }, + { + "name": "wrap", + "description": "The flexbox is multi-line." + }, + { + "name": "wrap-reverse", + "description": "Same as 'wrap', except the cross-start and cross-end directions are swapped." + } + ], + "syntax": "nowrap | wrap | wrap-reverse", + "relevance": 81, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/flex-wrap" + } + ], + "description": "Controls whether the flex container is single-line or multi-line, and the direction of the cross-axis, which determines the direction new lines are stacked in.", + "restrictions": [ + "enum" + ] + }, + { + "name": "float", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O7" + ], + "values": [ + { + "name": "inline-end", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O7" + ], + "description": "A keyword indicating that the element must float on the end side of its containing block. That is the right side with ltr scripts, and the left side with rtl scripts." + }, + { + "name": "inline-start", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O7" + ], + "description": "A keyword indicating that the element must float on the start side of its containing block. That is the left side with ltr scripts, and the right side with rtl scripts." + }, + { + "name": "left", + "description": "The element generates a block box that is floated to the left. Content flows on the right side of the box, starting at the top (subject to the 'clear' property)." + }, + { + "name": "none", + "description": "The box is not floated." + }, + { + "name": "right", + "description": "Similar to 'left', except the box is floated to the right, and content flows on the left side of the box, starting at the top." + } + ], + "syntax": "left | right | none | inline-start | inline-end", + "relevance": 90, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/float" + } + ], + "description": "Specifies how a box should be floated. It may be set for any element, but only applies to elements that generate boxes that are not absolutely positioned.", + "restrictions": [ + "enum" + ] + }, + { + "name": "flood-color", + "browsers": [ + "E", + "C5", + "FF3", + "IE10", + "O9", + "S6" + ], + "relevance": 50, + "description": "Indicates what color to use to flood the current filter primitive subregion.", + "restrictions": [ + "color" + ] + }, + { + "name": "flood-opacity", + "browsers": [ + "E", + "C5", + "FF3", + "IE10", + "O9", + "S6" + ], + "relevance": 50, + "description": "Indicates what opacity to use to flood the current filter primitive subregion.", + "restrictions": [ + "number(0-1)", + "percentage" + ] + }, + { + "name": "font", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE3", + "O3.5" + ], + "values": [ + { + "name": "100", + "description": "Thin" + }, + { + "name": "200", + "description": "Extra Light (Ultra Light)" + }, + { + "name": "300", + "description": "Light" + }, + { + "name": "400", + "description": "Normal" + }, + { + "name": "500", + "description": "Medium" + }, + { + "name": "600", + "description": "Semi Bold (Demi Bold)" + }, + { + "name": "700", + "description": "Bold" + }, + { + "name": "800", + "description": "Extra Bold (Ultra Bold)" + }, + { + "name": "900", + "description": "Black (Heavy)" + }, + { + "name": "bold", + "description": "Same as 700" + }, + { + "name": "bolder", + "description": "Specifies the weight of the face bolder than the inherited value." + }, + { + "name": "caption", + "description": "The font used for captioned controls (e.g., buttons, drop-downs, etc.)." + }, + { + "name": "icon", + "description": "The font used to label icons." + }, + { + "name": "italic", + "description": "Selects a font that is labeled 'italic', or, if that is not available, one labeled 'oblique'." + }, + { + "name": "large" + }, + { + "name": "larger" + }, + { + "name": "lighter", + "description": "Specifies the weight of the face lighter than the inherited value." + }, + { + "name": "medium" + }, + { + "name": "menu", + "description": "The font used in menus (e.g., dropdown menus and menu lists)." + }, + { + "name": "message-box", + "description": "The font used in dialog boxes." + }, + { + "name": "normal", + "description": "Specifies a face that is not labeled as a small-caps font." + }, + { + "name": "oblique", + "description": "Selects a font that is labeled 'oblique'." + }, + { + "name": "small" + }, + { + "name": "small-caps", + "description": "Specifies a font that is labeled as a small-caps font. If a genuine small-caps font is not available, user agents should simulate a small-caps font." + }, + { + "name": "small-caption", + "description": "The font used for labeling small controls." + }, + { + "name": "smaller" + }, + { + "name": "status-bar", + "description": "The font used in window status bars." + }, + { + "name": "x-large" + }, + { + "name": "x-small" + }, + { + "name": "xx-large" + }, + { + "name": "xx-small" + } + ], + "syntax": "[ [ <'font-style'> || <font-variant-css21> || <'font-weight'> || <'font-stretch'> ]? <'font-size'> [ / <'line-height'> ]? <'font-family'> ] | caption | icon | menu | message-box | small-caption | status-bar", + "relevance": 83, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/font" + } + ], + "description": "Shorthand property for setting 'font-style', 'font-variant', 'font-weight', 'font-size', 'line-height', and 'font-family', at the same place in the style sheet. The syntax of this property is based on a traditional typographical shorthand notation to set multiple properties related to fonts.", + "restrictions": [ + "font" + ] + }, + { + "name": "font-family", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE3", + "O3.5" + ], + "values": [ + { + "name": "system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif" + }, + { + "name": "Arial, Helvetica, sans-serif" + }, + { + "name": "Cambria, Cochin, Georgia, Times, 'Times New Roman', serif" + }, + { + "name": "'Courier New', Courier, monospace" + }, + { + "name": "cursive" + }, + { + "name": "fantasy" + }, + { + "name": "'Franklin Gothic Medium', 'Arial Narrow', Arial, sans-serif" + }, + { + "name": "Georgia, 'Times New Roman', Times, serif" + }, + { + "name": "'Gill Sans', 'Gill Sans MT', Calibri, 'Trebuchet MS', sans-serif" + }, + { + "name": "Impact, Haettenschweiler, 'Arial Narrow Bold', sans-serif" + }, + { + "name": "'Lucida Sans', 'Lucida Sans Regular', 'Lucida Grande', 'Lucida Sans Unicode', Geneva, Verdana, sans-serif" + }, + { + "name": "monospace" + }, + { + "name": "sans-serif" + }, + { + "name": "'Segoe UI', Tahoma, Geneva, Verdana, sans-serif" + }, + { + "name": "serif" + }, + { + "name": "'Times New Roman', Times, serif" + }, + { + "name": "'Trebuchet MS', 'Lucida Sans Unicode', 'Lucida Grande', 'Lucida Sans', Arial, sans-serif" + }, + { + "name": "Verdana, Geneva, Tahoma, sans-serif" + } + ], + "atRule": "@font-face", + "syntax": "<family-name>", + "relevance": 93, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/font-family" + } + ], + "description": "Specifies a prioritized list of font family names or generic family names. A user agent iterates through the list of family names until it matches an available font that contains a glyph for the character to be rendered.", + "restrictions": [ + "font" + ] + }, + { + "name": "font-feature-settings", + "browsers": [ + "E15", + "FF34", + "S9.1", + "C48", + "IE10", + "O35" + ], + "values": [ + { + "name": "\"aalt\"", + "description": "Access All Alternates." + }, + { + "name": "\"abvf\"", + "description": "Above-base Forms. Required in Khmer script." + }, + { + "name": "\"abvm\"", + "description": "Above-base Mark Positioning. Required in Indic scripts." + }, + { + "name": "\"abvs\"", + "description": "Above-base Substitutions. Required in Indic scripts." + }, + { + "name": "\"afrc\"", + "description": "Alternative Fractions." + }, + { + "name": "\"akhn\"", + "description": "Akhand. Required in most Indic scripts." + }, + { + "name": "\"blwf\"", + "description": "Below-base Form. Required in a number of Indic scripts." + }, + { + "name": "\"blwm\"", + "description": "Below-base Mark Positioning. Required in Indic scripts." + }, + { + "name": "\"blws\"", + "description": "Below-base Substitutions. Required in Indic scripts." + }, + { + "name": "\"calt\"", + "description": "Contextual Alternates." + }, + { + "name": "\"case\"", + "description": "Case-Sensitive Forms. Applies only to European scripts; particularly prominent in Spanish-language setting." + }, + { + "name": "\"ccmp\"", + "description": "Glyph Composition/Decomposition." + }, + { + "name": "\"cfar\"", + "description": "Conjunct Form After Ro. Required in Khmer scripts." + }, + { + "name": "\"cjct\"", + "description": "Conjunct Forms. Required in Indic scripts that show similarity to Devanagari." + }, + { + "name": "\"clig\"", + "description": "Contextual Ligatures." + }, + { + "name": "\"cpct\"", + "description": "Centered CJK Punctuation. Used primarily in Chinese fonts." + }, + { + "name": "\"cpsp\"", + "description": "Capital Spacing. Should not be used in connecting scripts (e.g. most Arabic)." + }, + { + "name": "\"cswh\"", + "description": "Contextual Swash." + }, + { + "name": "\"curs\"", + "description": "Cursive Positioning. Can be used in any cursive script." + }, + { + "name": "\"c2pc\"", + "description": "Petite Capitals From Capitals. Applies only to bicameral scripts." + }, + { + "name": "\"c2sc\"", + "description": "Small Capitals From Capitals. Applies only to bicameral scripts." + }, + { + "name": "\"dist\"", + "description": "Distances. Required in Indic scripts." + }, + { + "name": "\"dlig\"", + "description": "Discretionary ligatures." + }, + { + "name": "\"dnom\"", + "description": "Denominators." + }, + { + "name": "\"dtls\"", + "description": "Dotless Forms. Applied to math formula layout." + }, + { + "name": "\"expt\"", + "description": "Expert Forms. Applies only to Japanese." + }, + { + "name": "\"falt\"", + "description": "Final Glyph on Line Alternates. Can be used in any cursive script." + }, + { + "name": "\"fin2\"", + "description": "Terminal Form #2. Used only with the Syriac script." + }, + { + "name": "\"fin3\"", + "description": "Terminal Form #3. Used only with the Syriac script." + }, + { + "name": "\"fina\"", + "description": "Terminal Forms. Can be used in any alphabetic script." + }, + { + "name": "\"flac\"", + "description": "Flattened ascent forms. Applied to math formula layout." + }, + { + "name": "\"frac\"", + "description": "Fractions." + }, + { + "name": "\"fwid\"", + "description": "Full Widths. Applies to any script which can use monospaced forms." + }, + { + "name": "\"half\"", + "description": "Half Forms. Required in Indic scripts that show similarity to Devanagari." + }, + { + "name": "\"haln\"", + "description": "Halant Forms. Required in Indic scripts." + }, + { + "name": "\"halt\"", + "description": "Alternate Half Widths. Used only in CJKV fonts." + }, + { + "name": "\"hist\"", + "description": "Historical Forms." + }, + { + "name": "\"hkna\"", + "description": "Horizontal Kana Alternates. Applies only to fonts that support kana (hiragana and katakana)." + }, + { + "name": "\"hlig\"", + "description": "Historical Ligatures." + }, + { + "name": "\"hngl\"", + "description": "Hangul. Korean only." + }, + { + "name": "\"hojo\"", + "description": "Hojo Kanji Forms (JIS X 0212-1990 Kanji Forms). Used only with Kanji script." + }, + { + "name": "\"hwid\"", + "description": "Half Widths. Generally used only in CJKV fonts." + }, + { + "name": "\"init\"", + "description": "Initial Forms. Can be used in any alphabetic script." + }, + { + "name": "\"isol\"", + "description": "Isolated Forms. Can be used in any cursive script." + }, + { + "name": "\"ital\"", + "description": "Italics. Applies mostly to Latin; note that many non-Latin fonts contain Latin as well." + }, + { + "name": "\"jalt\"", + "description": "Justification Alternates. Can be used in any cursive script." + }, + { + "name": "\"jp78\"", + "description": "JIS78 Forms. Applies only to Japanese." + }, + { + "name": "\"jp83\"", + "description": "JIS83 Forms. Applies only to Japanese." + }, + { + "name": "\"jp90\"", + "description": "JIS90 Forms. Applies only to Japanese." + }, + { + "name": "\"jp04\"", + "description": "JIS2004 Forms. Applies only to Japanese." + }, + { + "name": "\"kern\"", + "description": "Kerning." + }, + { + "name": "\"lfbd\"", + "description": "Left Bounds." + }, + { + "name": "\"liga\"", + "description": "Standard Ligatures." + }, + { + "name": "\"ljmo\"", + "description": "Leading Jamo Forms. Required for Hangul script when Ancient Hangul writing system is supported." + }, + { + "name": "\"lnum\"", + "description": "Lining Figures." + }, + { + "name": "\"locl\"", + "description": "Localized Forms." + }, + { + "name": "\"ltra\"", + "description": "Left-to-right glyph alternates." + }, + { + "name": "\"ltrm\"", + "description": "Left-to-right mirrored forms." + }, + { + "name": "\"mark\"", + "description": "Mark Positioning." + }, + { + "name": "\"med2\"", + "description": "Medial Form #2. Used only with the Syriac script." + }, + { + "name": "\"medi\"", + "description": "Medial Forms." + }, + { + "name": "\"mgrk\"", + "description": "Mathematical Greek." + }, + { + "name": "\"mkmk\"", + "description": "Mark to Mark Positioning." + }, + { + "name": "\"nalt\"", + "description": "Alternate Annotation Forms." + }, + { + "name": "\"nlck\"", + "description": "NLC Kanji Forms. Used only with Kanji script." + }, + { + "name": "\"nukt\"", + "description": "Nukta Forms. Required in Indic scripts.." + }, + { + "name": "\"numr\"", + "description": "Numerators." + }, + { + "name": "\"onum\"", + "description": "Oldstyle Figures." + }, + { + "name": "\"opbd\"", + "description": "Optical Bounds." + }, + { + "name": "\"ordn\"", + "description": "Ordinals. Applies mostly to Latin script." + }, + { + "name": "\"ornm\"", + "description": "Ornaments." + }, + { + "name": "\"palt\"", + "description": "Proportional Alternate Widths. Used mostly in CJKV fonts." + }, + { + "name": "\"pcap\"", + "description": "Petite Capitals." + }, + { + "name": "\"pkna\"", + "description": "Proportional Kana. Generally used only in Japanese fonts." + }, + { + "name": "\"pnum\"", + "description": "Proportional Figures." + }, + { + "name": "\"pref\"", + "description": "Pre-base Forms. Required in Khmer and Myanmar (Burmese) scripts and southern Indic scripts that may display a pre-base form of Ra." + }, + { + "name": "\"pres\"", + "description": "Pre-base Substitutions. Required in Indic scripts." + }, + { + "name": "\"pstf\"", + "description": "Post-base Forms. Required in scripts of south and southeast Asia that have post-base forms for consonants eg: Gurmukhi, Malayalam, Khmer." + }, + { + "name": "\"psts\"", + "description": "Post-base Substitutions." + }, + { + "name": "\"pwid\"", + "description": "Proportional Widths." + }, + { + "name": "\"qwid\"", + "description": "Quarter Widths. Generally used only in CJKV fonts." + }, + { + "name": "\"rand\"", + "description": "Randomize." + }, + { + "name": "\"rclt\"", + "description": "Required Contextual Alternates. May apply to any script, but is especially important for many styles of Arabic." + }, + { + "name": "\"rlig\"", + "description": "Required Ligatures. Applies to Arabic and Syriac. May apply to some other scripts." + }, + { + "name": "\"rkrf\"", + "description": "Rakar Forms. Required in Devanagari and Gujarati scripts." + }, + { + "name": "\"rphf\"", + "description": "Reph Form. Required in Indic scripts. E.g. Devanagari, Kannada." + }, + { + "name": "\"rtbd\"", + "description": "Right Bounds." + }, + { + "name": "\"rtla\"", + "description": "Right-to-left alternates." + }, + { + "name": "\"rtlm\"", + "description": "Right-to-left mirrored forms." + }, + { + "name": "\"ruby\"", + "description": "Ruby Notation Forms. Applies only to Japanese." + }, + { + "name": "\"salt\"", + "description": "Stylistic Alternates." + }, + { + "name": "\"sinf\"", + "description": "Scientific Inferiors." + }, + { + "name": "\"size\"", + "description": "Optical size." + }, + { + "name": "\"smcp\"", + "description": "Small Capitals. Applies only to bicameral scripts." + }, + { + "name": "\"smpl\"", + "description": "Simplified Forms. Applies only to Chinese and Japanese." + }, + { + "name": "\"ssty\"", + "description": "Math script style alternates." + }, + { + "name": "\"stch\"", + "description": "Stretching Glyph Decomposition." + }, + { + "name": "\"subs\"", + "description": "Subscript." + }, + { + "name": "\"sups\"", + "description": "Superscript." + }, + { + "name": "\"swsh\"", + "description": "Swash. Does not apply to ideographic scripts." + }, + { + "name": "\"titl\"", + "description": "Titling." + }, + { + "name": "\"tjmo\"", + "description": "Trailing Jamo Forms. Required for Hangul script when Ancient Hangul writing system is supported." + }, + { + "name": "\"tnam\"", + "description": "Traditional Name Forms. Applies only to Japanese." + }, + { + "name": "\"tnum\"", + "description": "Tabular Figures." + }, + { + "name": "\"trad\"", + "description": "Traditional Forms. Applies only to Chinese and Japanese." + }, + { + "name": "\"twid\"", + "description": "Third Widths. Generally used only in CJKV fonts." + }, + { + "name": "\"unic\"", + "description": "Unicase." + }, + { + "name": "\"valt\"", + "description": "Alternate Vertical Metrics. Applies only to scripts with vertical writing modes." + }, + { + "name": "\"vatu\"", + "description": "Vattu Variants. Used for Indic scripts. E.g. Devanagari." + }, + { + "name": "\"vert\"", + "description": "Vertical Alternates. Applies only to scripts with vertical writing modes." + }, + { + "name": "\"vhal\"", + "description": "Alternate Vertical Half Metrics. Used only in CJKV fonts." + }, + { + "name": "\"vjmo\"", + "description": "Vowel Jamo Forms. Required for Hangul script when Ancient Hangul writing system is supported." + }, + { + "name": "\"vkna\"", + "description": "Vertical Kana Alternates. Applies only to fonts that support kana (hiragana and katakana)." + }, + { + "name": "\"vkrn\"", + "description": "Vertical Kerning." + }, + { + "name": "\"vpal\"", + "description": "Proportional Alternate Vertical Metrics. Used mostly in CJKV fonts." + }, + { + "name": "\"vrt2\"", + "description": "Vertical Alternates and Rotation. Applies only to scripts with vertical writing modes." + }, + { + "name": "\"zero\"", + "description": "Slashed Zero." + }, + { + "name": "normal", + "description": "No change in glyph substitution or positioning occurs." + }, + { + "name": "off", + "description": "Disable feature." + }, + { + "name": "on", + "description": "Enable feature." + } + ], + "atRule": "@font-face", + "syntax": "normal | <feature-tag-value>#", + "relevance": 57, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/font-feature-settings" + } + ], + "description": "Provides low-level control over OpenType font features. It is intended as a way of providing access to font features that are not widely used but are needed for a particular use case.", + "restrictions": [ + "string", + "integer" + ] + }, + { + "name": "font-kerning", + "browsers": [ + "E79", + "FF32", + "S9", + "C33", + "O20" + ], + "values": [ + { + "name": "auto", + "description": "Specifies that kerning is applied at the discretion of the user agent." + }, + { + "name": "none", + "description": "Specifies that kerning is not applied." + }, + { + "name": "normal", + "description": "Specifies that kerning is applied." + } + ], + "syntax": "auto | normal | none", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/font-kerning" + } + ], + "description": "Kerning is the contextual adjustment of inter-glyph spacing. This property controls metric kerning, kerning that utilizes adjustment data contained in the font.", + "restrictions": [ + "enum" + ] + }, + { + "name": "font-language-override", + "browsers": [ + "FF34" + ], + "values": [ + { + "name": "normal", + "description": "Implies that when rendering with OpenType fonts the language of the document is used to infer the OpenType language system, used to select language specific features when rendering." + } + ], + "syntax": "normal | <string>", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/font-language-override" + } + ], + "description": "The value of 'normal' implies that when rendering with OpenType fonts the language of the document is used to infer the OpenType language system, used to select language specific features when rendering.", + "restrictions": [ + "string" + ] + }, + { + "name": "font-size", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE5.5", + "O7" + ], + "values": [ + { + "name": "large" + }, + { + "name": "larger" + }, + { + "name": "medium" + }, + { + "name": "small" + }, + { + "name": "smaller" + }, + { + "name": "x-large" + }, + { + "name": "x-small" + }, + { + "name": "xx-large" + }, + { + "name": "xx-small" + } + ], + "syntax": "<absolute-size> | <relative-size> | <length-percentage>", + "relevance": 94, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/font-size" + } + ], + "description": "Indicates the desired height of glyphs from the font. For scalable fonts, the font-size is a scale factor applied to the EM unit of the font. (Note that certain glyphs may bleed outside their EM box.) For non-scalable fonts, the font-size is converted into absolute units and matched against the declared font-size of the font, using the same absolute coordinate space for both of the matched values.", + "restrictions": [ + "length", + "percentage" + ] + }, + { + "name": "font-size-adjust", + "browsers": [ + "FF3", + "S16.4" + ], + "values": [ + { + "name": "none", + "description": "Do not preserve the font's x-height." + } + ], + "syntax": "none | [ ex-height | cap-height | ch-width | ic-width | ic-height ]? [ from-font | <number> ]", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/font-size-adjust" + } + ], + "description": "Preserves the readability of text when font fallback occurs by adjusting the font-size so that the x-height is the same regardless of the font used.", + "restrictions": [ + "number" + ] + }, + { + "name": "font-stretch", + "browsers": [ + "E12", + "FF9", + "S11", + "C60", + "IE9", + "O47" + ], + "values": [ + { + "name": "condensed" + }, + { + "name": "expanded" + }, + { + "name": "extra-condensed" + }, + { + "name": "extra-expanded" + }, + { + "name": "narrower", + "browsers": [ + "E12", + "FF9", + "S11", + "C60", + "IE9", + "O47" + ], + "description": "Indicates a narrower value relative to the width of the parent element." + }, + { + "name": "normal" + }, + { + "name": "semi-condensed" + }, + { + "name": "semi-expanded" + }, + { + "name": "ultra-condensed" + }, + { + "name": "ultra-expanded" + }, + { + "name": "wider", + "browsers": [ + "E12", + "FF9", + "S11", + "C60", + "IE9", + "O47" + ], + "description": "Indicates a wider value relative to the width of the parent element." + } + ], + "atRule": "@font-face", + "syntax": "<font-stretch-absolute>{1,2}", + "relevance": 56, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/font-stretch" + } + ], + "description": "Selects a normal, condensed, or expanded face from a font family.", + "restrictions": [ + "enum" + ] + }, + { + "name": "font-style", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O7" + ], + "values": [ + { + "name": "italic", + "description": "Selects a font that is labeled as an 'italic' face, or an 'oblique' face if one is not" + }, + { + "name": "normal", + "description": "Selects a face that is classified as 'normal'." + }, + { + "name": "oblique", + "description": "Selects a font that is labeled as an 'oblique' face, or an 'italic' face if one is not." + } + ], + "atRule": "@font-face", + "syntax": "normal | italic | oblique <angle>{0,2}", + "relevance": 89, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/font-style" + } + ], + "description": "Allows italic or oblique faces to be selected. Italic forms are generally cursive in nature while oblique faces are typically sloped versions of the regular face.", + "restrictions": [ + "enum" + ] + }, + { + "name": "font-synthesis", + "browsers": [ + "E97", + "FF34", + "S9", + "C97", + "O83" + ], + "values": [ + { + "name": "none", + "description": "Disallow all synthetic faces." + }, + { + "name": "style", + "description": "Allow synthetic italic faces." + }, + { + "name": "weight", + "description": "Allow synthetic bold faces." + } + ], + "syntax": "none | [ weight || style || small-caps ]", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/font-synthesis" + } + ], + "description": "Controls whether user agents are allowed to synthesize bold or oblique font faces when a font family lacks bold or italic faces.", + "restrictions": [ + "enum" + ] + }, + { + "name": "font-variant", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O3.5" + ], + "values": [ + { + "name": "normal", + "description": "Specifies a face that is not labeled as a small-caps font." + }, + { + "name": "small-caps", + "description": "Specifies a font that is labeled as a small-caps font. If a genuine small-caps font is not available, user agents should simulate a small-caps font." + } + ], + "atRule": "@font-face", + "syntax": "normal | none | [ <common-lig-values> || <discretionary-lig-values> || <historical-lig-values> || <contextual-alt-values> || stylistic(<feature-value-name>) || historical-forms || styleset(<feature-value-name>#) || character-variant(<feature-value-name>#) || swash(<feature-value-name>) || ornaments(<feature-value-name>) || annotation(<feature-value-name>) || [ small-caps | all-small-caps | petite-caps | all-petite-caps | unicase | titling-caps ] || <numeric-figure-values> || <numeric-spacing-values> || <numeric-fraction-values> || ordinal || slashed-zero || <east-asian-variant-values> || <east-asian-width-values> || ruby ]", + "relevance": 64, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/font-variant" + } + ], + "description": "Specifies variant representations of the font", + "restrictions": [ + "enum" + ] + }, + { + "name": "font-variant-alternates", + "browsers": [ + "E111", + "FF34", + "S9.1", + "C111", + "O97" + ], + "values": [ + { + "name": "annotation()", + "description": "Enables display of alternate annotation forms." + }, + { + "name": "character-variant()", + "description": "Enables display of specific character variants." + }, + { + "name": "historical-forms", + "description": "Enables display of historical forms." + }, + { + "name": "normal", + "description": "None of the features are enabled." + }, + { + "name": "ornaments()", + "description": "Enables replacement of default glyphs with ornaments, if provided in the font." + }, + { + "name": "styleset()", + "description": "Enables display with stylistic sets." + }, + { + "name": "stylistic()", + "description": "Enables display of stylistic alternates." + }, + { + "name": "swash()", + "description": "Enables display of swash glyphs." + } + ], + "syntax": "normal | [ stylistic( <feature-value-name> ) || historical-forms || styleset( <feature-value-name># ) || character-variant( <feature-value-name># ) || swash( <feature-value-name> ) || ornaments( <feature-value-name> ) || annotation( <feature-value-name> ) ]", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/font-variant-alternates" + } + ], + "description": "For any given character, fonts can provide a variety of alternate glyphs in addition to the default glyph for that character. This property provides control over the selection of these alternate glyphs.", + "restrictions": [ + "enum" + ] + }, + { + "name": "font-variant-caps", + "browsers": [ + "E79", + "FF34", + "S9.1", + "C52", + "O39" + ], + "values": [ + { + "name": "all-petite-caps", + "description": "Enables display of petite capitals for both upper and lowercase letters." + }, + { + "name": "all-small-caps", + "description": "Enables display of small capitals for both upper and lowercase letters." + }, + { + "name": "normal", + "description": "None of the features are enabled." + }, + { + "name": "petite-caps", + "description": "Enables display of petite capitals." + }, + { + "name": "small-caps", + "description": "Enables display of small capitals. Small-caps glyphs typically use the form of uppercase letters but are reduced to the size of lowercase letters." + }, + { + "name": "titling-caps", + "description": "Enables display of titling capitals." + }, + { + "name": "unicase", + "description": "Enables display of mixture of small capitals for uppercase letters with normal lowercase letters." + } + ], + "syntax": "normal | small-caps | all-small-caps | petite-caps | all-petite-caps | unicase | titling-caps", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/font-variant-caps" + } + ], + "description": "Specifies control over capitalized forms.", + "restrictions": [ + "enum" + ] + }, + { + "name": "font-variant-east-asian", + "browsers": [ + "E79", + "FF34", + "S9.1", + "C63", + "O50" + ], + "values": [ + { + "name": "full-width", + "description": "Enables rendering of full-width variants." + }, + { + "name": "jis04", + "description": "Enables rendering of JIS04 forms." + }, + { + "name": "jis78", + "description": "Enables rendering of JIS78 forms." + }, + { + "name": "jis83", + "description": "Enables rendering of JIS83 forms." + }, + { + "name": "jis90", + "description": "Enables rendering of JIS90 forms." + }, + { + "name": "normal", + "description": "None of the features are enabled." + }, + { + "name": "proportional-width", + "description": "Enables rendering of proportionally-spaced variants." + }, + { + "name": "ruby", + "description": "Enables display of ruby variant glyphs." + }, + { + "name": "simplified", + "description": "Enables rendering of simplified forms." + }, + { + "name": "traditional", + "description": "Enables rendering of traditional forms." + } + ], + "syntax": "normal | [ <east-asian-variant-values> || <east-asian-width-values> || ruby ]", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/font-variant-east-asian" + } + ], + "description": "Allows control of glyph substitute and positioning in East Asian text.", + "restrictions": [ + "enum" + ] + }, + { + "name": "font-variant-ligatures", + "browsers": [ + "E79", + "FF34", + "S9.1", + "C34", + "O21" + ], + "values": [ + { + "name": "additional-ligatures", + "description": "Enables display of additional ligatures." + }, + { + "name": "common-ligatures", + "description": "Enables display of common ligatures." + }, + { + "name": "contextual", + "browsers": [ + "E79", + "FF34", + "S9.1", + "C34", + "O21" + ], + "description": "Enables display of contextual alternates." + }, + { + "name": "discretionary-ligatures", + "description": "Enables display of discretionary ligatures." + }, + { + "name": "historical-ligatures", + "description": "Enables display of historical ligatures." + }, + { + "name": "no-additional-ligatures", + "description": "Disables display of additional ligatures." + }, + { + "name": "no-common-ligatures", + "description": "Disables display of common ligatures." + }, + { + "name": "no-contextual", + "browsers": [ + "E79", + "FF34", + "S9.1", + "C34", + "O21" + ], + "description": "Disables display of contextual alternates." + }, + { + "name": "no-discretionary-ligatures", + "description": "Disables display of discretionary ligatures." + }, + { + "name": "no-historical-ligatures", + "description": "Disables display of historical ligatures." + }, + { + "name": "none", + "browsers": [ + "E79", + "FF34", + "S9.1", + "C34", + "O21" + ], + "description": "Disables all ligatures." + }, + { + "name": "normal", + "description": "Implies that the defaults set by the font are used." + } + ], + "syntax": "normal | none | [ <common-lig-values> || <discretionary-lig-values> || <historical-lig-values> || <contextual-alt-values> ]", + "relevance": 53, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/font-variant-ligatures" + } + ], + "description": "Specifies control over which ligatures are enabled or disabled. A value of 'normal' implies that the defaults set by the font are used.", + "restrictions": [ + "enum" + ] + }, + { + "name": "font-variant-numeric", + "browsers": [ + "E79", + "FF34", + "S9.1", + "C52", + "O39" + ], + "values": [ + { + "name": "diagonal-fractions", + "description": "Enables display of lining diagonal fractions." + }, + { + "name": "lining-nums", + "description": "Enables display of lining numerals." + }, + { + "name": "normal", + "description": "None of the features are enabled." + }, + { + "name": "oldstyle-nums", + "description": "Enables display of old-style numerals." + }, + { + "name": "ordinal", + "description": "Enables display of letter forms used with ordinal numbers." + }, + { + "name": "proportional-nums", + "description": "Enables display of proportional numerals." + }, + { + "name": "slashed-zero", + "description": "Enables display of slashed zeros." + }, + { + "name": "stacked-fractions", + "description": "Enables display of lining stacked fractions." + }, + { + "name": "tabular-nums", + "description": "Enables display of tabular numerals." + } + ], + "syntax": "normal | [ <numeric-figure-values> || <numeric-spacing-values> || <numeric-fraction-values> || ordinal || slashed-zero ]", + "relevance": 51, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/font-variant-numeric" + } + ], + "description": "Specifies control over numerical forms.", + "restrictions": [ + "enum" + ] + }, + { + "name": "font-variant-position", + "browsers": [ + "FF34", + "S9.1" + ], + "values": [ + { + "name": "normal", + "description": "None of the features are enabled." + }, + { + "name": "sub", + "description": "Enables display of subscript variants (OpenType feature: subs)." + }, + { + "name": "super", + "description": "Enables display of superscript variants (OpenType feature: sups)." + } + ], + "syntax": "normal | sub | super", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/font-variant-position" + } + ], + "description": "Specifies the vertical position", + "restrictions": [ + "enum" + ] + }, + { + "name": "font-weight", + "browsers": [ + "E12", + "FF1", + "S1", + "C2", + "IE3", + "O3.5" + ], + "values": [ + { + "name": "100", + "description": "Thin" + }, + { + "name": "200", + "description": "Extra Light (Ultra Light)" + }, + { + "name": "300", + "description": "Light" + }, + { + "name": "400", + "description": "Normal" + }, + { + "name": "500", + "description": "Medium" + }, + { + "name": "600", + "description": "Semi Bold (Demi Bold)" + }, + { + "name": "700", + "description": "Bold" + }, + { + "name": "800", + "description": "Extra Bold (Ultra Bold)" + }, + { + "name": "900", + "description": "Black (Heavy)" + }, + { + "name": "bold", + "description": "Same as 700" + }, + { + "name": "bolder", + "description": "Specifies the weight of the face bolder than the inherited value." + }, + { + "name": "lighter", + "description": "Specifies the weight of the face lighter than the inherited value." + }, + { + "name": "normal", + "description": "Same as 400" + } + ], + "atRule": "@font-face", + "syntax": "<font-weight-absolute>{1,2}", + "relevance": 93, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/font-weight" + } + ], + "description": "Specifies weight of glyphs in the font, their degree of blackness or stroke thickness.", + "restrictions": [ + "enum" + ] + }, + { + "name": "glyph-orientation-horizontal", + "relevance": 50, + "description": "Controls glyph orientation when the inline-progression-direction is horizontal.", + "restrictions": [ + "angle", + "number" + ] + }, + { + "name": "glyph-orientation-vertical", + "values": [ + { + "name": "auto", + "description": "Sets the orientation based on the fullwidth or non-fullwidth characters and the most common orientation." + } + ], + "relevance": 50, + "description": "Controls glyph orientation when the inline-progression-direction is vertical.", + "restrictions": [ + "angle", + "number", + "enum" + ] + }, + { + "name": "grid-area", + "browsers": [ + "E16", + "FF52", + "S10.1", + "C57", + "O44" + ], + "values": [ + { + "name": "auto", + "description": "The property contributes nothing to the grid item's placement, indicating auto-placement, an automatic span, or a default span of one." + }, + { + "name": "span", + "description": "Contributes a grid span to the grid item's placement such that the corresponding edge of the grid item's grid area is N lines from its opposite edge." + } + ], + "syntax": "<grid-line> [ / <grid-line> ]{0,3}", + "relevance": 57, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/grid-area" + } + ], + "description": "Determine a grid item's size and location within the grid by contributing a line, a span, or nothing (automatic) to its grid placement. Shorthand for 'grid-row-start', 'grid-column-start', 'grid-row-end', and 'grid-column-end'.", + "restrictions": [ + "identifier", + "integer" + ] + }, + { + "name": "grid", + "browsers": [ + "E16", + "FF52", + "S10.1", + "C57", + "O44" + ], + "syntax": "<'grid-template'> | <'grid-template-rows'> / [ auto-flow && dense? ] <'grid-auto-columns'>? | [ auto-flow && dense? ] <'grid-auto-rows'>? / <'grid-template-columns'>", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/grid" + } + ], + "description": "The grid CSS property is a shorthand property that sets all of the explicit grid properties ('grid-template-rows', 'grid-template-columns', and 'grid-template-areas'), and all the implicit grid properties ('grid-auto-rows', 'grid-auto-columns', and 'grid-auto-flow'), in a single declaration.", + "restrictions": [ + "identifier", + "length", + "percentage", + "string", + "enum" + ] + }, + { + "name": "grid-auto-columns", + "browsers": [ + "E16", + "FF70", + "S10.1", + "C57", + "IE10", + "O44" + ], + "values": [ + { + "name": "min-content", + "description": "Represents the largest min-content contribution of the grid items occupying the grid track." + }, + { + "name": "max-content", + "description": "Represents the largest max-content contribution of the grid items occupying the grid track." + }, + { + "name": "auto", + "description": "As a maximum, identical to 'max-content'. As a minimum, represents the largest minimum size (as specified by min-width/min-height) of the grid items occupying the grid track." + }, + { + "name": "minmax()", + "description": "Defines a size range greater than or equal to min and less than or equal to max." + } + ], + "syntax": "<track-size>+", + "relevance": 51, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/grid-auto-columns" + } + ], + "description": "Specifies the size of implicitly created columns.", + "restrictions": [ + "length", + "percentage" + ] + }, + { + "name": "grid-auto-flow", + "browsers": [ + "E16", + "FF52", + "S10.1", + "C57", + "O44" + ], + "values": [ + { + "name": "row", + "description": "The auto-placement algorithm places items by filling each row in turn, adding new rows as necessary." + }, + { + "name": "column", + "description": "The auto-placement algorithm places items by filling each column in turn, adding new columns as necessary." + }, + { + "name": "dense", + "description": "If specified, the auto-placement algorithm uses a \"dense\" packing algorithm, which attempts to fill in holes earlier in the grid if smaller items come up later." + } + ], + "syntax": "[ row | column ] || dense", + "relevance": 52, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/grid-auto-flow" + } + ], + "description": "Controls how the auto-placement algorithm works, specifying exactly how auto-placed items get flowed into the grid.", + "restrictions": [ + "enum" + ] + }, + { + "name": "grid-auto-rows", + "browsers": [ + "E16", + "FF70", + "S10.1", + "C57", + "IE10", + "O44" + ], + "values": [ + { + "name": "min-content", + "description": "Represents the largest min-content contribution of the grid items occupying the grid track." + }, + { + "name": "max-content", + "description": "Represents the largest max-content contribution of the grid items occupying the grid track." + }, + { + "name": "auto", + "description": "As a maximum, identical to 'max-content'. As a minimum, represents the largest minimum size (as specified by min-width/min-height) of the grid items occupying the grid track." + }, + { + "name": "minmax()", + "description": "Defines a size range greater than or equal to min and less than or equal to max." + } + ], + "syntax": "<track-size>+", + "relevance": 51, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/grid-auto-rows" + } + ], + "description": "Specifies the size of implicitly created rows.", + "restrictions": [ + "length", + "percentage" + ] + }, + { + "name": "grid-column", + "browsers": [ + "E16", + "FF52", + "S10.1", + "C57", + "O44" + ], + "values": [ + { + "name": "auto", + "description": "The property contributes nothing to the grid item's placement, indicating auto-placement, an automatic span, or a default span of one." + }, + { + "name": "span", + "description": "Contributes a grid span to the grid item's placement such that the corresponding edge of the grid item's grid area is N lines from its opposite edge." + } + ], + "syntax": "<grid-line> [ / <grid-line> ]?", + "relevance": 55, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/grid-column" + } + ], + "description": "Shorthand for 'grid-column-start' and 'grid-column-end'.", + "restrictions": [ + "identifier", + "integer", + "enum" + ] + }, + { + "name": "grid-column-end", + "browsers": [ + "E16", + "FF52", + "S10.1", + "C57", + "O44" + ], + "values": [ + { + "name": "auto", + "description": "The property contributes nothing to the grid item's placement, indicating auto-placement, an automatic span, or a default span of one." + }, + { + "name": "span", + "description": "Contributes a grid span to the grid item's placement such that the corresponding edge of the grid item's grid area is N lines from its opposite edge." + } + ], + "syntax": "<grid-line>", + "relevance": 51, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/grid-column-end" + } + ], + "description": "Determine a grid item's size and location within the grid by contributing a line, a span, or nothing (automatic) to its grid placement.", + "restrictions": [ + "identifier", + "integer", + "enum" + ] + }, + { + "name": "grid-column-gap", + "browsers": [ + "FF52", + "C57", + "S10.1", + "O44" + ], + "status": "obsolete", + "syntax": "<length-percentage>", + "relevance": 3, + "description": "Specifies the gutters between grid columns. Replaced by 'column-gap' property.", + "restrictions": [ + "length" + ] + }, + { + "name": "grid-column-start", + "browsers": [ + "E16", + "FF52", + "S10.1", + "C57", + "O44" + ], + "values": [ + { + "name": "auto", + "description": "The property contributes nothing to the grid item's placement, indicating auto-placement, an automatic span, or a default span of one." + }, + { + "name": "span", + "description": "Contributes a grid span to the grid item's placement such that the corresponding edge of the grid item's grid area is N lines from its opposite edge." + } + ], + "syntax": "<grid-line>", + "relevance": 51, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/grid-column-start" + } + ], + "description": "Determine a grid item's size and location within the grid by contributing a line, a span, or nothing (automatic) to its grid placement.", + "restrictions": [ + "identifier", + "integer", + "enum" + ] + }, + { + "name": "grid-gap", + "browsers": [ + "FF52", + "C57", + "S10.1", + "O44" + ], + "status": "obsolete", + "syntax": "<'grid-row-gap'> <'grid-column-gap'>?", + "relevance": 4, + "description": "Shorthand that specifies the gutters between grid columns and grid rows in one declaration. Replaced by 'gap' property.", + "restrictions": [ + "length" + ] + }, + { + "name": "grid-row", + "browsers": [ + "E16", + "FF52", + "S10.1", + "C57", + "O44" + ], + "values": [ + { + "name": "auto", + "description": "The property contributes nothing to the grid item's placement, indicating auto-placement, an automatic span, or a default span of one." + }, + { + "name": "span", + "description": "Contributes a grid span to the grid item's placement such that the corresponding edge of the grid item's grid area is N lines from its opposite edge." + } + ], + "syntax": "<grid-line> [ / <grid-line> ]?", + "relevance": 53, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/grid-row" + } + ], + "description": "Shorthand for 'grid-row-start' and 'grid-row-end'.", + "restrictions": [ + "identifier", + "integer", + "enum" + ] + }, + { + "name": "grid-row-end", + "browsers": [ + "E16", + "FF52", + "S10.1", + "C57", + "O44" + ], + "values": [ + { + "name": "auto", + "description": "The property contributes nothing to the grid item's placement, indicating auto-placement, an automatic span, or a default span of one." + }, + { + "name": "span", + "description": "Contributes a grid span to the grid item's placement such that the corresponding edge of the grid item's grid area is N lines from its opposite edge." + } + ], + "syntax": "<grid-line>", + "relevance": 51, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/grid-row-end" + } + ], + "description": "Determine a grid item's size and location within the grid by contributing a line, a span, or nothing (automatic) to its grid placement.", + "restrictions": [ + "identifier", + "integer", + "enum" + ] + }, + { + "name": "grid-row-gap", + "browsers": [ + "FF52", + "C57", + "S10.1", + "O44" + ], + "status": "obsolete", + "syntax": "<length-percentage>", + "relevance": 2, + "description": "Specifies the gutters between grid rows. Replaced by 'row-gap' property.", + "restrictions": [ + "length" + ] + }, + { + "name": "grid-row-start", + "browsers": [ + "E16", + "FF52", + "S10.1", + "C57", + "O44" + ], + "values": [ + { + "name": "auto", + "description": "The property contributes nothing to the grid item's placement, indicating auto-placement, an automatic span, or a default span of one." + }, + { + "name": "span", + "description": "Contributes a grid span to the grid item's placement such that the corresponding edge of the grid item's grid area is N lines from its opposite edge." + } + ], + "syntax": "<grid-line>", + "relevance": 51, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/grid-row-start" + } + ], + "description": "Determine a grid item's size and location within the grid by contributing a line, a span, or nothing (automatic) to its grid placement.", + "restrictions": [ + "identifier", + "integer", + "enum" + ] + }, + { + "name": "grid-template", + "browsers": [ + "E16", + "FF52", + "S10.1", + "C57", + "O44" + ], + "values": [ + { + "name": "none", + "description": "Sets all three properties to their initial values." + }, + { + "name": "min-content", + "description": "Represents the largest min-content contribution of the grid items occupying the grid track." + }, + { + "name": "max-content", + "description": "Represents the largest max-content contribution of the grid items occupying the grid track." + }, + { + "name": "auto", + "description": "As a maximum, identical to 'max-content'. As a minimum, represents the largest minimum size (as specified by min-width/min-height) of the grid items occupying the grid track." + }, + { + "name": "subgrid", + "description": "Sets 'grid-template-rows' and 'grid-template-columns' to 'subgrid', and 'grid-template-areas' to its initial value." + }, + { + "name": "minmax()", + "description": "Defines a size range greater than or equal to min and less than or equal to max." + }, + { + "name": "repeat()", + "description": "Represents a repeated fragment of the track list, allowing a large number of columns or rows that exhibit a recurring pattern to be written in a more compact form." + } + ], + "syntax": "none | [ <'grid-template-rows'> / <'grid-template-columns'> ] | [ <line-names>? <string> <track-size>? <line-names>? ]+ [ / <explicit-track-list> ]?", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/grid-template" + } + ], + "description": "Shorthand for setting grid-template-columns, grid-template-rows, and grid-template-areas in a single declaration.", + "restrictions": [ + "identifier", + "length", + "percentage", + "string", + "enum" + ] + }, + { + "name": "grid-template-areas", + "browsers": [ + "E16", + "FF52", + "S10.1", + "C57", + "O44" + ], + "values": [ + { + "name": "none", + "description": "The grid container doesn't define any named grid areas." + } + ], + "syntax": "none | <string>+", + "relevance": 55, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/grid-template-areas" + } + ], + "description": "Specifies named grid areas, which are not associated with any particular grid item, but can be referenced from the grid-placement properties.", + "restrictions": [ + "string" + ] + }, + { + "name": "grid-template-columns", + "browsers": [ + "E16", + "FF52", + "S10.1", + "C57", + "IE10", + "O44" + ], + "values": [ + { + "name": "none", + "description": "There is no explicit grid; any rows/columns will be implicitly generated." + }, + { + "name": "min-content", + "description": "Represents the largest min-content contribution of the grid items occupying the grid track." + }, + { + "name": "max-content", + "description": "Represents the largest max-content contribution of the grid items occupying the grid track." + }, + { + "name": "auto", + "description": "As a maximum, identical to 'max-content'. As a minimum, represents the largest minimum size (as specified by min-width/min-height) of the grid items occupying the grid track." + }, + { + "name": "subgrid", + "description": "Indicates that the grid will align to its parent grid in that axis." + }, + { + "name": "minmax()", + "description": "Defines a size range greater than or equal to min and less than or equal to max." + }, + { + "name": "repeat()", + "description": "Represents a repeated fragment of the track list, allowing a large number of columns or rows that exhibit a recurring pattern to be written in a more compact form." + } + ], + "syntax": "none | <track-list> | <auto-track-list> | subgrid <line-name-list>?", + "relevance": 63, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/grid-template-columns" + } + ], + "description": "specifies, as a space-separated track list, the line names and track sizing functions of the grid.", + "restrictions": [ + "identifier", + "length", + "percentage", + "enum" + ] + }, + { + "name": "grid-template-rows", + "browsers": [ + "E16", + "FF52", + "S10.1", + "C57", + "IE10", + "O44" + ], + "values": [ + { + "name": "none", + "description": "There is no explicit grid; any rows/columns will be implicitly generated." + }, + { + "name": "min-content", + "description": "Represents the largest min-content contribution of the grid items occupying the grid track." + }, + { + "name": "max-content", + "description": "Represents the largest max-content contribution of the grid items occupying the grid track." + }, + { + "name": "auto", + "description": "As a maximum, identical to 'max-content'. As a minimum, represents the largest minimum size (as specified by min-width/min-height) of the grid items occupying the grid track." + }, + { + "name": "subgrid", + "description": "Indicates that the grid will align to its parent grid in that axis." + }, + { + "name": "minmax()", + "description": "Defines a size range greater than or equal to min and less than or equal to max." + }, + { + "name": "repeat()", + "description": "Represents a repeated fragment of the track list, allowing a large number of columns or rows that exhibit a recurring pattern to be written in a more compact form." + } + ], + "syntax": "none | <track-list> | <auto-track-list> | subgrid <line-name-list>?", + "relevance": 56, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/grid-template-rows" + } + ], + "description": "specifies, as a space-separated track list, the line names and track sizing functions of the grid.", + "restrictions": [ + "identifier", + "length", + "percentage", + "string", + "enum" + ] + }, + { + "name": "height", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O7" + ], + "values": [ + { + "name": "auto", + "description": "The height depends on the values of other properties." + }, + { + "name": "fit-content", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O7" + ], + "description": "Use the fit-content inline size or fit-content block size, as appropriate to the writing mode." + }, + { + "name": "max-content", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O7" + ], + "description": "Use the max-content inline size or max-content block size, as appropriate to the writing mode." + }, + { + "name": "min-content", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O7" + ], + "description": "Use the min-content inline size or min-content block size, as appropriate to the writing mode." + } + ], + "atRule": "@viewport", + "syntax": "<viewport-length>{1,2}", + "relevance": 96, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/height" + } + ], + "description": "Specifies the height of the content area, padding area or border area (depending on 'box-sizing') of certain boxes.", + "restrictions": [ + "length", + "percentage" + ] + }, + { + "name": "hyphens", + "browsers": [ + "E79", + "FF43", + "S5.1", + "C55", + "IE10", + "O42" + ], + "values": [ + { + "name": "auto", + "description": "Conditional hyphenation characters inside a word, if present, take priority over automatic resources when determining hyphenation points within the word." + }, + { + "name": "manual", + "description": "Words are only broken at line breaks where there are characters inside the word that suggest line break opportunities" + }, + { + "name": "none", + "description": "Words are not broken at line breaks, even if characters inside the word suggest line break points." + } + ], + "syntax": "none | manual | auto", + "relevance": 56, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/hyphens" + } + ], + "description": "Controls whether hyphenation is allowed to create more break opportunities within a line of text.", + "restrictions": [ + "enum" + ] + }, + { + "name": "image-orientation", + "browsers": [ + "E81", + "FF26", + "S13.1", + "C81", + "O67" + ], + "values": [ + { + "name": "flip", + "description": "After rotating by the precededing angle, the image is flipped horizontally. Defaults to 0deg if the angle is ommitted." + }, + { + "name": "from-image", + "description": "If the image has an orientation specified in its metadata, such as EXIF, this value computes to the angle that the metadata specifies is necessary to correctly orient the image." + } + ], + "syntax": "from-image | <angle> | [ <angle>? flip ]", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/image-orientation" + } + ], + "description": "Specifies an orthogonal rotation to be applied to an image before it is laid out.", + "restrictions": [ + "angle" + ] + }, + { + "name": "image-rendering", + "browsers": [ + "E79", + "FF3.6", + "S6", + "C13", + "O15" + ], + "values": [ + { + "name": "auto", + "description": "The image should be scaled with an algorithm that maximizes the appearance of the image." + }, + { + "name": "crisp-edges", + "description": "The image must be scaled with an algorithm that preserves contrast and edges in the image, and which does not smooth colors or introduce blur to the image in the process." + }, + { + "name": "-moz-crisp-edges", + "browsers": [ + "E79", + "FF3.6", + "S6", + "C13", + "O15" + ] + }, + { + "name": "optimizeQuality", + "description": "Deprecated." + }, + { + "name": "optimizeSpeed", + "description": "Deprecated." + }, + { + "name": "pixelated", + "description": "When scaling the image up, the 'nearest neighbor' or similar algorithm must be used, so that the image appears to be simply composed of very large pixels." + } + ], + "syntax": "auto | crisp-edges | pixelated", + "relevance": 54, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/image-rendering" + } + ], + "description": "Provides a hint to the user-agent about what aspects of an image are most important to preserve when the image is scaled, to aid the user-agent in the choice of an appropriate scaling algorithm.", + "restrictions": [ + "enum" + ] + }, + { + "name": "ime-mode", + "browsers": [ + "E12", + "FF3", + "IE5" + ], + "values": [ + { + "name": "active", + "description": "The input method editor is initially active; text entry is performed using it unless the user specifically dismisses it." + }, + { + "name": "auto", + "description": "No change is made to the current input method editor state. This is the default." + }, + { + "name": "disabled", + "description": "The input method editor is disabled and may not be activated by the user." + }, + { + "name": "inactive", + "description": "The input method editor is initially inactive, but the user may activate it if they wish." + }, + { + "name": "normal", + "description": "The IME state should be normal; this value can be used in a user style sheet to override the page setting." + } + ], + "status": "obsolete", + "syntax": "auto | normal | active | inactive | disabled", + "relevance": 0, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/ime-mode" + } + ], + "description": "Controls the state of the input method editor for text fields.", + "restrictions": [ + "enum" + ] + }, + { + "name": "inline-size", + "browsers": [ + "E79", + "FF41", + "S12.1", + "C57", + "O44" + ], + "values": [ + { + "name": "auto", + "description": "Depends on the values of other properties." + } + ], + "syntax": "<'width'>", + "relevance": 53, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/inline-size" + } + ], + "description": "Size of an element in the direction specified by 'writing-mode'.", + "restrictions": [ + "length", + "percentage" + ] + }, + { + "name": "isolation", + "browsers": [ + "E79", + "FF36", + "S8", + "C41", + "O30" + ], + "values": [ + { + "name": "auto", + "description": "Elements are not isolated unless an operation is applied that causes the creation of a stacking context." + }, + { + "name": "isolate", + "description": "In CSS will turn the element into a stacking context." + } + ], + "syntax": "auto | isolate", + "relevance": 53, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/isolation" + } + ], + "description": "In CSS setting to 'isolate' will turn the element into a stacking context. In SVG, it defines whether an element is isolated or not.", + "restrictions": [ + "enum" + ] + }, + { + "name": "justify-content", + "browsers": [ + "E12", + "FF20", + "S9", + "C29", + "IE11", + "O12.1" + ], + "values": [ + { + "name": "center", + "description": "Flex items are packed toward the center of the line." + }, + { + "name": "start", + "description": "The items are packed flush to each other toward the start edge of the alignment container in the main axis." + }, + { + "name": "end", + "description": "The items are packed flush to each other toward the end edge of the alignment container in the main axis." + }, + { + "name": "left", + "description": "The items are packed flush to each other toward the left edge of the alignment container in the main axis." + }, + { + "name": "right", + "description": "The items are packed flush to each other toward the right edge of the alignment container in the main axis." + }, + { + "name": "safe", + "description": "If the size of the item overflows the alignment container, the item is instead aligned as if the alignment mode were start." + }, + { + "name": "unsafe", + "description": "Regardless of the relative sizes of the item and alignment container, the given alignment value is honored." + }, + { + "name": "stretch", + "description": "If the combined size of the alignment subjects is less than the size of the alignment container, any auto-sized alignment subjects have their size increased equally (not proportionally), while still respecting the constraints imposed by max-height/max-width (or equivalent functionality), so that the combined size exactly fills the alignment container." + }, + { + "name": "space-evenly", + "description": "The items are evenly distributed within the alignment container along the main axis." + }, + { + "name": "flex-end", + "description": "Flex items are packed toward the end of the line." + }, + { + "name": "flex-start", + "description": "Flex items are packed toward the start of the line." + }, + { + "name": "space-around", + "description": "Flex items are evenly distributed in the line, with half-size spaces on either end." + }, + { + "name": "space-between", + "description": "Flex items are evenly distributed in the line." + }, + { + "name": "baseline", + "description": "Specifies participation in first-baseline alignment." + }, + { + "name": "first baseline", + "description": "Specifies participation in first-baseline alignment." + }, + { + "name": "last baseline", + "description": "Specifies participation in last-baseline alignment." + } + ], + "syntax": "normal | <content-distribution> | <overflow-position>? [ <content-position> | left | right ]", + "relevance": 86, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/justify-content" + } + ], + "description": "Aligns flex items along the main axis of the current line of the flex container.", + "restrictions": [ + "enum" + ] + }, + { + "name": "kerning", + "values": [ + { + "name": "auto", + "description": "Indicates that the user agent should adjust inter-glyph spacing based on kerning tables that are included in the font that will be used." + } + ], + "relevance": 50, + "description": "Indicates whether the user agent should adjust inter-glyph spacing based on kerning tables that are included in the relevant font or instead disable auto-kerning and set inter-character spacing to a specific length.", + "restrictions": [ + "length", + "enum" + ] + }, + { + "name": "left", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE5.5", + "O5" + ], + "values": [ + { + "name": "auto", + "description": "For non-replaced elements, the effect of this value depends on which of related properties have the value 'auto' as well" + } + ], + "syntax": "<length> | <percentage> | auto", + "relevance": 95, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/left" + } + ], + "description": "Specifies how far an absolutely positioned box's left margin edge is offset to the right of the left edge of the box's 'containing block'.", + "restrictions": [ + "length", + "percentage" + ] + }, + { + "name": "letter-spacing", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O3.5" + ], + "values": [ + { + "name": "normal", + "description": "The spacing is the normal spacing for the current font. It is typically zero-length." + } + ], + "syntax": "normal | <length>", + "relevance": 81, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/letter-spacing" + } + ], + "description": "Specifies the minimum, maximum, and optimal spacing between grapheme clusters.", + "restrictions": [ + "length" + ] + }, + { + "name": "lighting-color", + "browsers": [ + "E", + "C5", + "FF3", + "IE10", + "O9", + "S6" + ], + "relevance": 50, + "description": "Defines the color of the light source for filter primitives 'feDiffuseLighting' and 'feSpecularLighting'.", + "restrictions": [ + "color" + ] + }, + { + "name": "line-break", + "browsers": [ + "E14", + "FF69", + "S11", + "C58", + "IE5.5", + "O45" + ], + "values": [ + { + "name": "auto", + "description": "The UA determines the set of line-breaking restrictions to use for CJK scripts, and it may vary the restrictions based on the length of the line; e.g., use a less restrictive set of line-break rules for short lines." + }, + { + "name": "loose", + "description": "Breaks text using the least restrictive set of line-breaking rules. Typically used for short lines, such as in newspapers." + }, + { + "name": "normal", + "description": "Breaks text using the most common set of line-breaking rules." + }, + { + "name": "strict", + "description": "Breaks CJK scripts using a more restrictive set of line-breaking rules than 'normal'." + }, + { + "name": "anywhere", + "description": "There is a soft wrap opportunity around every typographic character unit, including around any punctuation character or preserved white spaces, or in the middle of words, disregarding any prohibition against line breaks, even those introduced by characters with the GL, WJ, or ZWJ line breaking classes or mandated by the word-break property." + } + ], + "syntax": "auto | loose | normal | strict | anywhere", + "relevance": 52, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/line-break" + } + ], + "description": "Specifies what set of line breaking restrictions are in effect within the element.", + "restrictions": [ + "enum" + ] + }, + { + "name": "line-height", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O7" + ], + "values": [ + { + "name": "normal", + "description": "Tells user agents to set the computed value to a 'reasonable' value based on the font size of the element." + } + ], + "syntax": "normal | <number> | <length> | <percentage>", + "relevance": 92, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/line-height" + } + ], + "description": "Determines the block-progression dimension of the text content area of an inline box.", + "restrictions": [ + "number", + "length", + "percentage" + ] + }, + { + "name": "list-style", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O7" + ], + "values": [ + { + "name": "armenian" + }, + { + "name": "circle", + "description": "A hollow circle." + }, + { + "name": "decimal" + }, + { + "name": "decimal-leading-zero" + }, + { + "name": "disc", + "description": "A filled circle." + }, + { + "name": "georgian" + }, + { + "name": "inside", + "description": "The marker box is outside the principal block box, as described in the section on the ::marker pseudo-element below." + }, + { + "name": "lower-alpha" + }, + { + "name": "lower-greek" + }, + { + "name": "lower-latin" + }, + { + "name": "lower-roman" + }, + { + "name": "none" + }, + { + "name": "outside", + "description": "The ::marker pseudo-element is an inline element placed immediately before all ::before pseudo-elements in the principal block box, after which the element's content flows." + }, + { + "name": "square", + "description": "A filled square." + }, + { + "name": "symbols()", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O7" + ], + "description": "Allows a counter style to be defined inline." + }, + { + "name": "upper-alpha" + }, + { + "name": "upper-latin" + }, + { + "name": "upper-roman" + }, + { + "name": "url()" + } + ], + "syntax": "<'list-style-type'> || <'list-style-position'> || <'list-style-image'>", + "relevance": 84, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/list-style" + } + ], + "description": "Shorthand for setting 'list-style-type', 'list-style-position' and 'list-style-image'", + "restrictions": [ + "image", + "enum", + "url" + ] + }, + { + "name": "list-style-image", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O7" + ], + "values": [ + { + "name": "none", + "description": "The default contents of the of the list item's marker are given by 'list-style-type' instead." + } + ], + "syntax": "<image> | none", + "relevance": 52, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/list-style-image" + } + ], + "description": "Sets the image that will be used as the list item marker. When the image is available, it will replace the marker set with the 'list-style-type' marker.", + "restrictions": [ + "image" + ] + }, + { + "name": "list-style-position", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O3.5" + ], + "values": [ + { + "name": "inside", + "description": "The marker box is outside the principal block box, as described in the section on the ::marker pseudo-element below." + }, + { + "name": "outside", + "description": "The ::marker pseudo-element is an inline element placed immediately before all ::before pseudo-elements in the principal block box, after which the element's content flows." + } + ], + "syntax": "inside | outside", + "relevance": 54, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/list-style-position" + } + ], + "description": "Specifies the position of the '::marker' pseudo-element's box in the list item.", + "restrictions": [ + "enum" + ] + }, + { + "name": "list-style-type", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O3.5" + ], + "values": [ + { + "name": "armenian", + "description": "Traditional uppercase Armenian numbering." + }, + { + "name": "circle", + "description": "A hollow circle." + }, + { + "name": "decimal", + "description": "Western decimal numbers." + }, + { + "name": "decimal-leading-zero", + "description": "Decimal numbers padded by initial zeros." + }, + { + "name": "disc", + "description": "A filled circle." + }, + { + "name": "georgian", + "description": "Traditional Georgian numbering." + }, + { + "name": "lower-alpha", + "description": "Lowercase ASCII letters." + }, + { + "name": "lower-greek", + "description": "Lowercase classical Greek." + }, + { + "name": "lower-latin", + "description": "Lowercase ASCII letters." + }, + { + "name": "lower-roman", + "description": "Lowercase ASCII Roman numerals." + }, + { + "name": "none", + "description": "No marker" + }, + { + "name": "square", + "description": "A filled square." + }, + { + "name": "symbols()", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O3.5" + ], + "description": "Allows a counter style to be defined inline." + }, + { + "name": "upper-alpha", + "description": "Uppercase ASCII letters." + }, + { + "name": "upper-latin", + "description": "Uppercase ASCII letters." + }, + { + "name": "upper-roman", + "description": "Uppercase ASCII Roman numerals." + } + ], + "syntax": "<counter-style> | <string> | none", + "relevance": 74, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/list-style-type" + } + ], + "description": "Used to construct the default contents of a list item's marker", + "restrictions": [ + "enum", + "string" + ] + }, + { + "name": "margin", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE3", + "O3.5" + ], + "values": [ + { + "name": "auto" + } + ], + "syntax": "[ <length> | <percentage> | auto ]{1,4}", + "relevance": 95, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/margin" + } + ], + "description": "Shorthand property to set values for the thickness of the margin area. If left is omitted, it is the same as right. If bottom is omitted it is the same as top, if right is omitted it is the same as top. Negative values for margin properties are allowed, but there may be implementation-specific limits.", + "restrictions": [ + "length", + "percentage" + ] + }, + { + "name": "margin-block-end", + "browsers": [ + "E79", + "FF41", + "S12.1", + "C69", + "O56" + ], + "values": [ + { + "name": "auto" + } + ], + "syntax": "<'margin-left'>", + "relevance": 55, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/margin-block-end" + } + ], + "description": "Logical 'margin-bottom'. Mapping depends on the parent element's 'writing-mode', 'direction', and 'text-orientation'.", + "restrictions": [ + "length", + "percentage" + ] + }, + { + "name": "margin-block-start", + "browsers": [ + "E79", + "FF41", + "S12.1", + "C69", + "O56" + ], + "values": [ + { + "name": "auto" + } + ], + "syntax": "<'margin-left'>", + "relevance": 55, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/margin-block-start" + } + ], + "description": "Logical 'margin-top'. Mapping depends on the parent element's 'writing-mode', 'direction', and 'text-orientation'.", + "restrictions": [ + "length", + "percentage" + ] + }, + { + "name": "margin-bottom", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE3", + "O3.5" + ], + "values": [ + { + "name": "auto" + } + ], + "syntax": "<length> | <percentage> | auto", + "relevance": 91, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/margin-bottom" + } + ], + "description": "Shorthand property to set values for the thickness of the margin area. If left is omitted, it is the same as right. If bottom is omitted it is the same as top, if right is omitted it is the same as top. Negative values for margin properties are allowed, but there may be implementation-specific limits..", + "restrictions": [ + "length", + "percentage" + ] + }, + { + "name": "margin-inline-end", + "browsers": [ + "E79", + "FF41", + "S12.1", + "C69", + "O56" + ], + "values": [ + { + "name": "auto" + } + ], + "syntax": "<'margin-left'>", + "relevance": 57, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/margin-inline-end" + } + ], + "description": "Logical 'margin-right'. Mapping depends on the parent element's 'writing-mode', 'direction', and 'text-orientation'.", + "restrictions": [ + "length", + "percentage" + ] + }, + { + "name": "margin-inline-start", + "browsers": [ + "E79", + "FF41", + "S12.1", + "C69", + "O56" + ], + "values": [ + { + "name": "auto" + } + ], + "syntax": "<'margin-left'>", + "relevance": 58, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/margin-inline-start" + } + ], + "description": "Logical 'margin-left'. Mapping depends on the parent element's 'writing-mode', 'direction', and 'text-orientation'.", + "restrictions": [ + "length", + "percentage" + ] + }, + { + "name": "margin-left", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE3", + "O3.5" + ], + "values": [ + { + "name": "auto" + } + ], + "syntax": "<length> | <percentage> | auto", + "relevance": 91, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/margin-left" + } + ], + "description": "Shorthand property to set values for the thickness of the margin area. If left is omitted, it is the same as right. If bottom is omitted it is the same as top, if right is omitted it is the same as top. Negative values for margin properties are allowed, but there may be implementation-specific limits..", + "restrictions": [ + "length", + "percentage" + ] + }, + { + "name": "margin-right", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE3", + "O3.5" + ], + "values": [ + { + "name": "auto" + } + ], + "syntax": "<length> | <percentage> | auto", + "relevance": 91, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/margin-right" + } + ], + "description": "Shorthand property to set values for the thickness of the margin area. If left is omitted, it is the same as right. If bottom is omitted it is the same as top, if right is omitted it is the same as top. Negative values for margin properties are allowed, but there may be implementation-specific limits..", + "restrictions": [ + "length", + "percentage" + ] + }, + { + "name": "margin-top", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE3", + "O3.5" + ], + "values": [ + { + "name": "auto" + } + ], + "syntax": "<length> | <percentage> | auto", + "relevance": 94, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/margin-top" + } + ], + "description": "Shorthand property to set values for the thickness of the margin area. If left is omitted, it is the same as right. If bottom is omitted it is the same as top, if right is omitted it is the same as top. Negative values for margin properties are allowed, but there may be implementation-specific limits..", + "restrictions": [ + "length", + "percentage" + ] + }, + { + "name": "marker", + "values": [ + { + "name": "none", + "description": "Indicates that no marker symbol will be drawn at the given vertex or vertices." + }, + { + "name": "url()", + "description": "Indicates that the <marker> element referenced will be used." + } + ], + "relevance": 50, + "description": "Specifies the marker symbol that shall be used for all points on the sets the value for all vertices on the given 'path' element or basic shape.", + "restrictions": [ + "url" + ] + }, + { + "name": "marker-end", + "values": [ + { + "name": "none", + "description": "Indicates that no marker symbol will be drawn at the given vertex or vertices." + }, + { + "name": "url()", + "description": "Indicates that the <marker> element referenced will be used." + } + ], + "relevance": 50, + "description": "Specifies the marker that will be drawn at the last vertices of the given markable element.", + "restrictions": [ + "url" + ] + }, + { + "name": "marker-mid", + "values": [ + { + "name": "none", + "description": "Indicates that no marker symbol will be drawn at the given vertex or vertices." + }, + { + "name": "url()", + "description": "Indicates that the <marker> element referenced will be used." + } + ], + "relevance": 50, + "description": "Specifies the marker that will be drawn at all vertices except the first and last.", + "restrictions": [ + "url" + ] + }, + { + "name": "marker-start", + "values": [ + { + "name": "none", + "description": "Indicates that no marker symbol will be drawn at the given vertex or vertices." + }, + { + "name": "url()", + "description": "Indicates that the <marker> element referenced will be used." + } + ], + "relevance": 50, + "description": "Specifies the marker that will be drawn at the first vertices of the given markable element.", + "restrictions": [ + "url" + ] + }, + { + "name": "mask-image", + "browsers": [ + "E79", + "FF53", + "S15.4", + "C1", + "O15" + ], + "values": [ + { + "name": "none", + "description": "Counts as a transparent black image layer." + }, + { + "name": "url()", + "description": "Reference to a <mask element or to a CSS image." + } + ], + "syntax": "<mask-reference>#", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/mask-image" + } + ], + "description": "Sets the mask layer image of an element.", + "restrictions": [ + "url", + "image", + "enum" + ] + }, + { + "name": "mask-mode", + "browsers": [ + "FF53", + "S15.4" + ], + "values": [ + { + "name": "alpha", + "description": "Alpha values of the mask layer image should be used as the mask values." + }, + { + "name": "auto", + "description": "Use alpha values if 'mask-image' is an image, luminance if a <mask> element or a CSS image." + }, + { + "name": "luminance", + "description": "Luminance values of the mask layer image should be used as the mask values." + } + ], + "syntax": "<masking-mode>#", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/mask-mode" + } + ], + "description": "Indicates whether the mask layer image is treated as luminance mask or alpha mask.", + "restrictions": [ + "url", + "image", + "enum" + ] + }, + { + "name": "mask-origin", + "browsers": [ + "E79", + "FF53", + "S15.4", + "C1", + "O15" + ], + "syntax": "<geometry-box>#", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/mask-origin" + } + ], + "description": "Specifies the mask positioning area.", + "restrictions": [ + "geometry-box", + "enum" + ] + }, + { + "name": "mask-position", + "browsers": [ + "E79", + "FF53", + "S15.4", + "C1", + "O15" + ], + "syntax": "<position>#", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/mask-position" + } + ], + "description": "Specifies how mask layer images are positioned.", + "restrictions": [ + "position", + "length", + "percentage" + ] + }, + { + "name": "mask-repeat", + "browsers": [ + "E79", + "FF53", + "S15.4", + "C1", + "O15" + ], + "syntax": "<repeat-style>#", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/mask-repeat" + } + ], + "description": "Specifies how mask layer images are tiled after they have been sized and positioned.", + "restrictions": [ + "repeat" + ] + }, + { + "name": "mask-size", + "browsers": [ + "E79", + "FF53", + "S15.4", + "C4", + "O15" + ], + "values": [ + { + "name": "auto", + "description": "Resolved by using the image's intrinsic ratio and the size of the other dimension, or failing that, using the image's intrinsic size, or failing that, treating it as 100%." + }, + { + "name": "contain", + "description": "Scale the image, while preserving its intrinsic aspect ratio (if any), to the largest size such that both its width and its height can fit inside the background positioning area." + }, + { + "name": "cover", + "description": "Scale the image, while preserving its intrinsic aspect ratio (if any), to the smallest size such that both its width and its height can completely cover the background positioning area." + } + ], + "syntax": "<bg-size>#", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/mask-size" + } + ], + "description": "Specifies the size of the mask layer images.", + "restrictions": [ + "length", + "percentage", + "enum" + ] + }, + { + "name": "mask-type", + "browsers": [ + "E79", + "FF35", + "S7", + "C24", + "O15" + ], + "values": [ + { + "name": "alpha", + "description": "Indicates that the alpha values of the mask should be used." + }, + { + "name": "luminance", + "description": "Indicates that the luminance values of the mask should be used." + } + ], + "syntax": "luminance | alpha", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/mask-type" + } + ], + "description": "Defines whether the content of the <mask> element is treated as as luminance mask or alpha mask.", + "restrictions": [ + "enum" + ] + }, + { + "name": "max-block-size", + "browsers": [ + "E79", + "FF41", + "S12.1", + "C57", + "O44" + ], + "values": [ + { + "name": "none", + "description": "No limit on the width of the box." + } + ], + "syntax": "<'max-width'>", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/max-block-size" + } + ], + "description": "Maximum size of an element in the direction opposite that of the direction specified by 'writing-mode'.", + "restrictions": [ + "length", + "percentage" + ] + }, + { + "name": "max-height", + "browsers": [ + "E12", + "FF1", + "S1.3", + "C18", + "IE7", + "O7" + ], + "values": [ + { + "name": "none", + "description": "No limit on the height of the box." + }, + { + "name": "fit-content", + "browsers": [ + "E12", + "FF1", + "S1.3", + "C18", + "IE7", + "O7" + ], + "description": "Use the fit-content inline size or fit-content block size, as appropriate to the writing mode." + }, + { + "name": "max-content", + "browsers": [ + "E12", + "FF1", + "S1.3", + "C18", + "IE7", + "O7" + ], + "description": "Use the max-content inline size or max-content block size, as appropriate to the writing mode." + }, + { + "name": "min-content", + "browsers": [ + "E12", + "FF1", + "S1.3", + "C18", + "IE7", + "O7" + ], + "description": "Use the min-content inline size or min-content block size, as appropriate to the writing mode." + } + ], + "atRule": "@viewport", + "syntax": "<viewport-length>", + "relevance": 85, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/max-height" + } + ], + "description": "Allows authors to constrain content height to a certain range.", + "restrictions": [ + "length", + "percentage" + ] + }, + { + "name": "max-inline-size", + "browsers": [ + "E79", + "FF41", + "S12.1", + "C57", + "O44" + ], + "values": [ + { + "name": "none", + "description": "No limit on the height of the box." + } + ], + "syntax": "<'max-width'>", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/max-inline-size" + } + ], + "description": "Maximum size of an element in the direction specified by 'writing-mode'.", + "restrictions": [ + "length", + "percentage" + ] + }, + { + "name": "max-width", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE7", + "O4" + ], + "values": [ + { + "name": "none", + "description": "No limit on the width of the box." + }, + { + "name": "fit-content", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE7", + "O4" + ], + "description": "Use the fit-content inline size or fit-content block size, as appropriate to the writing mode." + }, + { + "name": "max-content", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE7", + "O4" + ], + "description": "Use the max-content inline size or max-content block size, as appropriate to the writing mode." + }, + { + "name": "min-content", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE7", + "O4" + ], + "description": "Use the min-content inline size or min-content block size, as appropriate to the writing mode." + } + ], + "atRule": "@viewport", + "syntax": "<viewport-length>", + "relevance": 90, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/max-width" + } + ], + "description": "Allows authors to constrain content width to a certain range.", + "restrictions": [ + "length", + "percentage" + ] + }, + { + "name": "min-block-size", + "browsers": [ + "E79", + "FF41", + "S12.1", + "C57", + "O44" + ], + "syntax": "<'min-width'>", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/min-block-size" + } + ], + "description": "Minimal size of an element in the direction opposite that of the direction specified by 'writing-mode'.", + "restrictions": [ + "length", + "percentage" + ] + }, + { + "name": "min-height", + "browsers": [ + "E12", + "FF3", + "S1.3", + "C1", + "IE7", + "O4" + ], + "values": [ + { + "name": "auto", + "browsers": [ + "E12", + "FF3", + "S1.3", + "C1", + "IE7", + "O4" + ] + }, + { + "name": "fit-content", + "browsers": [ + "E12", + "FF3", + "S1.3", + "C1", + "IE7", + "O4" + ], + "description": "Use the fit-content inline size or fit-content block size, as appropriate to the writing mode." + }, + { + "name": "max-content", + "browsers": [ + "E12", + "FF3", + "S1.3", + "C1", + "IE7", + "O4" + ], + "description": "Use the max-content inline size or max-content block size, as appropriate to the writing mode." + }, + { + "name": "min-content", + "browsers": [ + "E12", + "FF3", + "S1.3", + "C1", + "IE7", + "O4" + ], + "description": "Use the min-content inline size or min-content block size, as appropriate to the writing mode." + } + ], + "atRule": "@viewport", + "syntax": "<viewport-length>", + "relevance": 89, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/min-height" + } + ], + "description": "Allows authors to constrain content height to a certain range.", + "restrictions": [ + "length", + "percentage" + ] + }, + { + "name": "min-inline-size", + "browsers": [ + "E79", + "FF41", + "S12.1", + "C57", + "O44" + ], + "syntax": "<'min-width'>", + "relevance": 53, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/min-inline-size" + } + ], + "description": "Minimal size of an element in the direction specified by 'writing-mode'.", + "restrictions": [ + "length", + "percentage" + ] + }, + { + "name": "min-width", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE7", + "O4" + ], + "values": [ + { + "name": "auto", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE7", + "O4" + ] + }, + { + "name": "fit-content", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE7", + "O4" + ], + "description": "Use the fit-content inline size or fit-content block size, as appropriate to the writing mode." + }, + { + "name": "max-content", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE7", + "O4" + ], + "description": "Use the max-content inline size or max-content block size, as appropriate to the writing mode." + }, + { + "name": "min-content", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE7", + "O4" + ], + "description": "Use the min-content inline size or min-content block size, as appropriate to the writing mode." + } + ], + "atRule": "@viewport", + "syntax": "<viewport-length>", + "relevance": 88, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/min-width" + } + ], + "description": "Allows authors to constrain content width to a certain range.", + "restrictions": [ + "length", + "percentage" + ] + }, + { + "name": "mix-blend-mode", + "browsers": [ + "E79", + "FF32", + "S8", + "C41", + "O28" + ], + "values": [ + { + "name": "normal", + "description": "Default attribute which specifies no blending" + }, + { + "name": "multiply", + "description": "The source color is multiplied by the destination color and replaces the destination." + }, + { + "name": "screen", + "description": "Multiplies the complements of the backdrop and source color values, then complements the result." + }, + { + "name": "overlay", + "description": "Multiplies or screens the colors, depending on the backdrop color value." + }, + { + "name": "darken", + "description": "Selects the darker of the backdrop and source colors." + }, + { + "name": "lighten", + "description": "Selects the lighter of the backdrop and source colors." + }, + { + "name": "color-dodge", + "description": "Brightens the backdrop color to reflect the source color." + }, + { + "name": "color-burn", + "description": "Darkens the backdrop color to reflect the source color." + }, + { + "name": "hard-light", + "description": "Multiplies or screens the colors, depending on the source color value." + }, + { + "name": "soft-light", + "description": "Darkens or lightens the colors, depending on the source color value." + }, + { + "name": "difference", + "description": "Subtracts the darker of the two constituent colors from the lighter color.." + }, + { + "name": "exclusion", + "description": "Produces an effect similar to that of the Difference mode but lower in contrast." + }, + { + "name": "hue", + "browsers": [ + "E79", + "FF32", + "S8", + "C41", + "O28" + ], + "description": "Creates a color with the hue of the source color and the saturation and luminosity of the backdrop color." + }, + { + "name": "saturation", + "browsers": [ + "E79", + "FF32", + "S8", + "C41", + "O28" + ], + "description": "Creates a color with the saturation of the source color and the hue and luminosity of the backdrop color." + }, + { + "name": "color", + "browsers": [ + "E79", + "FF32", + "S8", + "C41", + "O28" + ], + "description": "Creates a color with the hue and saturation of the source color and the luminosity of the backdrop color." + }, + { + "name": "luminosity", + "browsers": [ + "E79", + "FF32", + "S8", + "C41", + "O28" + ], + "description": "Creates a color with the luminosity of the source color and the hue and saturation of the backdrop color." + } + ], + "syntax": "<blend-mode> | plus-lighter", + "relevance": 53, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/mix-blend-mode" + } + ], + "description": "Defines the formula that must be used to mix the colors with the backdrop.", + "restrictions": [ + "enum" + ] + }, + { + "name": "motion", + "browsers": [ + "C46", + "O33" + ], + "values": [ + { + "name": "none", + "description": "No motion path gets created." + }, + { + "name": "path()", + "description": "Defines an SVG path as a string, with optional 'fill-rule' as the first argument." + }, + { + "name": "auto", + "description": "Indicates that the object is rotated by the angle of the direction of the motion path." + }, + { + "name": "reverse", + "description": "Indicates that the object is rotated by the angle of the direction of the motion path plus 180 degrees." + } + ], + "relevance": 50, + "description": "Shorthand property for setting 'motion-path', 'motion-offset' and 'motion-rotation'.", + "restrictions": [ + "url", + "length", + "percentage", + "angle", + "shape", + "geometry-box", + "enum" + ] + }, + { + "name": "motion-offset", + "browsers": [ + "C46", + "O33" + ], + "relevance": 50, + "description": "A distance that describes the position along the specified motion path.", + "restrictions": [ + "length", + "percentage" + ] + }, + { + "name": "motion-path", + "browsers": [ + "C46", + "O33" + ], + "values": [ + { + "name": "none", + "description": "No motion path gets created." + }, + { + "name": "path()", + "description": "Defines an SVG path as a string, with optional 'fill-rule' as the first argument." + } + ], + "relevance": 50, + "description": "Specifies the motion path the element gets positioned at.", + "restrictions": [ + "url", + "shape", + "geometry-box", + "enum" + ] + }, + { + "name": "motion-rotation", + "browsers": [ + "C46", + "O33" + ], + "values": [ + { + "name": "auto", + "description": "Indicates that the object is rotated by the angle of the direction of the motion path." + }, + { + "name": "reverse", + "description": "Indicates that the object is rotated by the angle of the direction of the motion path plus 180 degrees." + } + ], + "relevance": 50, + "description": "Defines the direction of the element while positioning along the motion path.", + "restrictions": [ + "angle" + ] + }, + { + "name": "-moz-animation", + "browsers": [ + "FF9" + ], + "values": [ + { + "name": "alternate", + "description": "The animation cycle iterations that are odd counts are played in the normal direction, and the animation cycle iterations that are even counts are played in a reverse direction." + }, + { + "name": "alternate-reverse", + "description": "The animation cycle iterations that are odd counts are played in the reverse direction, and the animation cycle iterations that are even counts are played in a normal direction." + }, + { + "name": "backwards", + "description": "The beginning property value (as defined in the first @keyframes at-rule) is applied before the animation is displayed, during the period defined by 'animation-delay'." + }, + { + "name": "both", + "description": "Both forwards and backwards fill modes are applied." + }, + { + "name": "forwards", + "description": "The final property value (as defined in the last @keyframes at-rule) is maintained after the animation completes." + }, + { + "name": "infinite", + "description": "Causes the animation to repeat forever." + }, + { + "name": "none", + "description": "No animation is performed" + }, + { + "name": "normal", + "description": "Normal playback." + }, + { + "name": "reverse", + "description": "All iterations of the animation are played in the reverse direction from the way they were specified." + } + ], + "relevance": 50, + "description": "Shorthand property combines six of the animation properties into a single property.", + "restrictions": [ + "time", + "enum", + "timing-function", + "identifier", + "number" + ] + }, + { + "name": "-moz-animation-delay", + "browsers": [ + "FF9" + ], + "relevance": 50, + "description": "Defines when the animation will start.", + "restrictions": [ + "time" + ] + }, + { + "name": "-moz-animation-direction", + "browsers": [ + "FF9" + ], + "values": [ + { + "name": "alternate", + "description": "The animation cycle iterations that are odd counts are played in the normal direction, and the animation cycle iterations that are even counts are played in a reverse direction." + }, + { + "name": "alternate-reverse", + "description": "The animation cycle iterations that are odd counts are played in the reverse direction, and the animation cycle iterations that are even counts are played in a normal direction." + }, + { + "name": "normal", + "description": "Normal playback." + }, + { + "name": "reverse", + "description": "All iterations of the animation are played in the reverse direction from the way they were specified." + } + ], + "relevance": 50, + "description": "Defines whether or not the animation should play in reverse on alternate cycles.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-moz-animation-duration", + "browsers": [ + "FF9" + ], + "relevance": 50, + "description": "Defines the length of time that an animation takes to complete one cycle.", + "restrictions": [ + "time" + ] + }, + { + "name": "-moz-animation-iteration-count", + "browsers": [ + "FF9" + ], + "values": [ + { + "name": "infinite", + "description": "Causes the animation to repeat forever." + } + ], + "relevance": 50, + "description": "Defines the number of times an animation cycle is played. The default value is one, meaning the animation will play from beginning to end once.", + "restrictions": [ + "number", + "enum" + ] + }, + { + "name": "-moz-animation-name", + "browsers": [ + "FF9" + ], + "values": [ + { + "name": "none", + "description": "No animation is performed" + } + ], + "relevance": 50, + "description": "Defines a list of animations that apply. Each name is used to select the keyframe at-rule that provides the property values for the animation.", + "restrictions": [ + "identifier", + "enum" + ] + }, + { + "name": "-moz-animation-play-state", + "browsers": [ + "FF9" + ], + "values": [ + { + "name": "paused", + "description": "A running animation will be paused." + }, + { + "name": "running", + "description": "Resume playback of a paused animation." + } + ], + "relevance": 50, + "description": "Defines whether the animation is running or paused.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-moz-animation-timing-function", + "browsers": [ + "FF9" + ], + "relevance": 50, + "description": "Describes how the animation will progress over one cycle of its duration. See the 'transition-timing-function'.", + "restrictions": [ + "timing-function" + ] + }, + { + "name": "-moz-appearance", + "browsers": [ + "FF1" + ], + "values": [ + { + "name": "button" + }, + { + "name": "button-arrow-down" + }, + { + "name": "button-arrow-next" + }, + { + "name": "button-arrow-previous" + }, + { + "name": "button-arrow-up" + }, + { + "name": "button-bevel" + }, + { + "name": "checkbox" + }, + { + "name": "checkbox-container" + }, + { + "name": "checkbox-label" + }, + { + "name": "dialog" + }, + { + "name": "groupbox" + }, + { + "name": "listbox" + }, + { + "name": "menuarrow" + }, + { + "name": "menuimage" + }, + { + "name": "menuitem" + }, + { + "name": "menuitemtext" + }, + { + "name": "menulist" + }, + { + "name": "menulist-button" + }, + { + "name": "menulist-text" + }, + { + "name": "menulist-textfield" + }, + { + "name": "menupopup" + }, + { + "name": "menuradio" + }, + { + "name": "menuseparator" + }, + { + "name": "-moz-mac-unified-toolbar" + }, + { + "name": "-moz-win-borderless-glass" + }, + { + "name": "-moz-win-browsertabbar-toolbox" + }, + { + "name": "-moz-win-communications-toolbox" + }, + { + "name": "-moz-win-glass" + }, + { + "name": "-moz-win-media-toolbox" + }, + { + "name": "none" + }, + { + "name": "progressbar" + }, + { + "name": "progresschunk" + }, + { + "name": "radio" + }, + { + "name": "radio-container" + }, + { + "name": "radio-label" + }, + { + "name": "radiomenuitem" + }, + { + "name": "resizer" + }, + { + "name": "resizerpanel" + }, + { + "name": "scrollbarbutton-down" + }, + { + "name": "scrollbarbutton-left" + }, + { + "name": "scrollbarbutton-right" + }, + { + "name": "scrollbarbutton-up" + }, + { + "name": "scrollbar-small" + }, + { + "name": "scrollbartrack-horizontal" + }, + { + "name": "scrollbartrack-vertical" + }, + { + "name": "separator" + }, + { + "name": "spinner" + }, + { + "name": "spinner-downbutton" + }, + { + "name": "spinner-textfield" + }, + { + "name": "spinner-upbutton" + }, + { + "name": "statusbar" + }, + { + "name": "statusbarpanel" + }, + { + "name": "tab" + }, + { + "name": "tabpanels" + }, + { + "name": "tab-scroll-arrow-back" + }, + { + "name": "tab-scroll-arrow-forward" + }, + { + "name": "textfield" + }, + { + "name": "textfield-multiline" + }, + { + "name": "toolbar" + }, + { + "name": "toolbox" + }, + { + "name": "tooltip" + }, + { + "name": "treeheadercell" + }, + { + "name": "treeheadersortarrow" + }, + { + "name": "treeitem" + }, + { + "name": "treetwistyopen" + }, + { + "name": "treeview" + }, + { + "name": "treewisty" + }, + { + "name": "window" + } + ], + "status": "nonstandard", + "syntax": "none | button | button-arrow-down | button-arrow-next | button-arrow-previous | button-arrow-up | button-bevel | button-focus | caret | checkbox | checkbox-container | checkbox-label | checkmenuitem | dualbutton | groupbox | listbox | listitem | menuarrow | menubar | menucheckbox | menuimage | menuitem | menuitemtext | menulist | menulist-button | menulist-text | menulist-textfield | menupopup | menuradio | menuseparator | meterbar | meterchunk | progressbar | progressbar-vertical | progresschunk | progresschunk-vertical | radio | radio-container | radio-label | radiomenuitem | range | range-thumb | resizer | resizerpanel | scale-horizontal | scalethumbend | scalethumb-horizontal | scalethumbstart | scalethumbtick | scalethumb-vertical | scale-vertical | scrollbarbutton-down | scrollbarbutton-left | scrollbarbutton-right | scrollbarbutton-up | scrollbarthumb-horizontal | scrollbarthumb-vertical | scrollbartrack-horizontal | scrollbartrack-vertical | searchfield | separator | sheet | spinner | spinner-downbutton | spinner-textfield | spinner-upbutton | splitter | statusbar | statusbarpanel | tab | tabpanel | tabpanels | tab-scroll-arrow-back | tab-scroll-arrow-forward | textfield | textfield-multiline | toolbar | toolbarbutton | toolbarbutton-dropdown | toolbargripper | toolbox | tooltip | treeheader | treeheadercell | treeheadersortarrow | treeitem | treeline | treetwisty | treetwistyopen | treeview | -moz-mac-unified-toolbar | -moz-win-borderless-glass | -moz-win-browsertabbar-toolbox | -moz-win-communicationstext | -moz-win-communications-toolbox | -moz-win-exclude-glass | -moz-win-glass | -moz-win-mediatext | -moz-win-media-toolbox | -moz-window-button-box | -moz-window-button-box-maximized | -moz-window-button-close | -moz-window-button-maximize | -moz-window-button-minimize | -moz-window-button-restore | -moz-window-frame-bottom | -moz-window-frame-left | -moz-window-frame-right | -moz-window-titlebar | -moz-window-titlebar-maximized", + "relevance": 0, + "description": "Used in Gecko (Firefox) to display an element using a platform-native styling based on the operating system's theme.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-moz-backface-visibility", + "browsers": [ + "FF10" + ], + "values": [ + { + "name": "hidden" + }, + { + "name": "visible" + } + ], + "relevance": 50, + "description": "Determines whether or not the 'back' side of a transformed element is visible when facing the viewer. With an identity transform, the front side of an element faces the viewer.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-moz-background-clip", + "browsers": [ + "FF1-3.6" + ], + "values": [ + { + "name": "padding" + } + ], + "relevance": 50, + "description": "Determines the background painting area.", + "restrictions": [ + "box", + "enum" + ] + }, + { + "name": "-moz-background-inline-policy", + "browsers": [ + "FF1" + ], + "values": [ + { + "name": "bounding-box" + }, + { + "name": "continuous" + }, + { + "name": "each-box" + } + ], + "relevance": 50, + "description": "In Gecko-based applications like Firefox, the -moz-background-inline-policy CSS property specifies how the background image of an inline element is determined when the content of the inline element wraps onto multiple lines. The choice of position has significant effects on repetition.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-moz-background-origin", + "browsers": [ + "FF1" + ], + "relevance": 50, + "description": "For elements rendered as a single box, specifies the background positioning area. For elements rendered as multiple boxes (e.g., inline boxes on several lines, boxes on several pages) specifies which boxes 'box-decoration-break' operates on to determine the background positioning area(s).", + "restrictions": [ + "box" + ] + }, + { + "name": "-moz-border-bottom-colors", + "browsers": [ + "FF1" + ], + "status": "nonstandard", + "syntax": "<color>+ | none", + "relevance": 0, + "description": "Sets a list of colors for the bottom border.", + "restrictions": [ + "color" + ] + }, + { + "name": "-moz-border-image", + "browsers": [ + "FF3.6" + ], + "values": [ + { + "name": "auto", + "description": "If 'auto' is specified then the border image width is the intrinsic width or height (whichever is applicable) of the corresponding image slice. If the image does not have the required intrinsic dimension then the corresponding border-width is used instead." + }, + { + "name": "fill", + "description": "Causes the middle part of the border-image to be preserved." + }, + { + "name": "none" + }, + { + "name": "repeat", + "description": "The image is tiled (repeated) to fill the area." + }, + { + "name": "round", + "description": "The image is tiled (repeated) to fill the area. If it does not fill the area with a whole number of tiles, the image is rescaled so that it does." + }, + { + "name": "space", + "description": "The image is tiled (repeated) to fill the area. If it does not fill the area with a whole number of tiles, the extra space is distributed around the tiles." + }, + { + "name": "stretch", + "description": "The image is stretched to fill the area." + }, + { + "name": "url()" + } + ], + "relevance": 50, + "description": "Shorthand property for setting 'border-image-source', 'border-image-slice', 'border-image-width', 'border-image-outset' and 'border-image-repeat'. Omitted values are set to their initial values.", + "restrictions": [ + "length", + "percentage", + "number", + "url", + "enum" + ] + }, + { + "name": "-moz-border-left-colors", + "browsers": [ + "FF1" + ], + "status": "nonstandard", + "syntax": "<color>+ | none", + "relevance": 0, + "description": "Sets a list of colors for the bottom border.", + "restrictions": [ + "color" + ] + }, + { + "name": "-moz-border-right-colors", + "browsers": [ + "FF1" + ], + "status": "nonstandard", + "syntax": "<color>+ | none", + "relevance": 0, + "description": "Sets a list of colors for the bottom border.", + "restrictions": [ + "color" + ] + }, + { + "name": "-moz-border-top-colors", + "browsers": [ + "FF1" + ], + "status": "nonstandard", + "syntax": "<color>+ | none", + "relevance": 0, + "description": "Ske Firefox, -moz-border-bottom-colors sets a list of colors for the bottom border.", + "restrictions": [ + "color" + ] + }, + { + "name": "-moz-box-align", + "browsers": [ + "FF1" + ], + "values": [ + { + "name": "baseline", + "description": "If this box orientation is inline-axis or horizontal, all children are placed with their baselines aligned, and extra space placed before or after as necessary. For block flows, the baseline of the first non-empty line box located within the element is used. For tables, the baseline of the first cell is used." + }, + { + "name": "center", + "description": "Any extra space is divided evenly, with half placed above the child and the other half placed after the child." + }, + { + "name": "end", + "description": "For normal direction boxes, the bottom edge of each child is placed along the bottom of the box. Extra space is placed above the element. For reverse direction boxes, the top edge of each child is placed along the top of the box. Extra space is placed below the element." + }, + { + "name": "start", + "description": "For normal direction boxes, the top edge of each child is placed along the top of the box. Extra space is placed below the element. For reverse direction boxes, the bottom edge of each child is placed along the bottom of the box. Extra space is placed above the element." + }, + { + "name": "stretch", + "description": "The height of each child is adjusted to that of the containing block." + } + ], + "relevance": 50, + "description": "Specifies how a XUL box aligns its contents across (perpendicular to) the direction of its layout. The effect of this is only visible if there is extra space in the box.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-moz-box-direction", + "browsers": [ + "FF1" + ], + "values": [ + { + "name": "normal", + "description": "A box with a computed value of horizontal for box-orient displays its children from left to right. A box with a computed value of vertical displays its children from top to bottom." + }, + { + "name": "reverse", + "description": "A box with a computed value of horizontal for box-orient displays its children from right to left. A box with a computed value of vertical displays its children from bottom to top." + } + ], + "relevance": 50, + "description": "Specifies whether a box lays out its contents normally (from the top or left edge), or in reverse (from the bottom or right edge).", + "restrictions": [ + "enum" + ] + }, + { + "name": "-moz-box-flex", + "browsers": [ + "FF1" + ], + "relevance": 50, + "description": "Specifies how a box grows to fill the box that contains it, in the direction of the containing box's layout.", + "restrictions": [ + "number" + ] + }, + { + "name": "-moz-box-flexgroup", + "browsers": [ + "FF1" + ], + "relevance": 50, + "description": "Flexible elements can be assigned to flex groups using the 'box-flex-group' property.", + "restrictions": [ + "integer" + ] + }, + { + "name": "-moz-box-ordinal-group", + "browsers": [ + "FF1" + ], + "relevance": 50, + "description": "Indicates the ordinal group the element belongs to. Elements with a lower ordinal group are displayed before those with a higher ordinal group.", + "restrictions": [ + "integer" + ] + }, + { + "name": "-moz-box-orient", + "browsers": [ + "FF1" + ], + "values": [ + { + "name": "block-axis", + "description": "Elements are oriented along the box's axis." + }, + { + "name": "horizontal", + "description": "The box displays its children from left to right in a horizontal line." + }, + { + "name": "inline-axis", + "description": "Elements are oriented vertically." + }, + { + "name": "vertical", + "description": "The box displays its children from stacked from top to bottom vertically." + } + ], + "relevance": 50, + "description": "In Mozilla applications, -moz-box-orient specifies whether a box lays out its contents horizontally or vertically.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-moz-box-pack", + "browsers": [ + "FF1" + ], + "values": [ + { + "name": "center", + "description": "The extra space is divided evenly, with half placed before the first child and the other half placed after the last child." + }, + { + "name": "end", + "description": "For normal direction boxes, the right edge of the last child is placed at the right side, with all extra space placed before the first child. For reverse direction boxes, the left edge of the first child is placed at the left side, with all extra space placed after the last child." + }, + { + "name": "justify", + "description": "The space is divided evenly in-between each child, with none of the extra space placed before the first child or after the last child. If there is only one child, treat the pack value as if it were start." + }, + { + "name": "start", + "description": "For normal direction boxes, the left edge of the first child is placed at the left side, with all extra space placed after the last child. For reverse direction boxes, the right edge of the last child is placed at the right side, with all extra space placed before the first child." + } + ], + "relevance": 50, + "description": "Specifies how a box packs its contents in the direction of its layout. The effect of this is only visible if there is extra space in the box.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-moz-box-sizing", + "browsers": [ + "FF1" + ], + "values": [ + { + "name": "border-box", + "description": "The specified width and height (and respective min/max properties) on this element determine the border box of the element." + }, + { + "name": "content-box", + "description": "Behavior of width and height as specified by CSS2.1. The specified width and height (and respective min/max properties) apply to the width and height respectively of the content box of the element." + }, + { + "name": "padding-box", + "description": "The specified width and height (and respective min/max properties) on this element determine the padding box of the element." + } + ], + "relevance": 50, + "description": "Box Model addition in CSS3.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-moz-column-count", + "browsers": [ + "FF3.5" + ], + "values": [ + { + "name": "auto", + "description": "Determines the number of columns by the 'column-width' property and the element width." + } + ], + "relevance": 50, + "description": "Describes the optimal number of columns into which the content of the element will be flowed.", + "restrictions": [ + "integer" + ] + }, + { + "name": "-moz-column-gap", + "browsers": [ + "FF3.5" + ], + "values": [ + { + "name": "normal", + "description": "User agent specific and typically equivalent to 1em." + } + ], + "relevance": 50, + "description": "Sets the gap between columns. If there is a column rule between columns, it will appear in the middle of the gap.", + "restrictions": [ + "length" + ] + }, + { + "name": "-moz-column-rule", + "browsers": [ + "FF3.5" + ], + "relevance": 50, + "description": "Shorthand for setting 'column-rule-width', 'column-rule-style', and 'column-rule-color' at the same place in the style sheet. Omitted values are set to their initial values.", + "restrictions": [ + "length", + "line-width", + "line-style", + "color" + ] + }, + { + "name": "-moz-column-rule-color", + "browsers": [ + "FF3.5" + ], + "relevance": 50, + "description": "Sets the color of the column rule", + "restrictions": [ + "color" + ] + }, + { + "name": "-moz-column-rule-style", + "browsers": [ + "FF3.5" + ], + "relevance": 50, + "description": "Sets the style of the rule between columns of an element.", + "restrictions": [ + "line-style" + ] + }, + { + "name": "-moz-column-rule-width", + "browsers": [ + "FF3.5" + ], + "relevance": 50, + "description": "Sets the width of the rule between columns. Negative values are not allowed.", + "restrictions": [ + "length", + "line-width" + ] + }, + { + "name": "-moz-columns", + "browsers": [ + "FF9" + ], + "values": [ + { + "name": "auto", + "description": "The width depends on the values of other properties." + } + ], + "relevance": 50, + "description": "A shorthand property which sets both 'column-width' and 'column-count'.", + "restrictions": [ + "length", + "integer" + ] + }, + { + "name": "-moz-column-width", + "browsers": [ + "FF3.5" + ], + "values": [ + { + "name": "auto", + "description": "The width depends on the values of other properties." + } + ], + "relevance": 50, + "description": "This property describes the width of columns in multicol elements.", + "restrictions": [ + "length" + ] + }, + { + "name": "-moz-font-feature-settings", + "browsers": [ + "FF4" + ], + "values": [ + { + "name": "\"c2cs\"" + }, + { + "name": "\"dlig\"" + }, + { + "name": "\"kern\"" + }, + { + "name": "\"liga\"" + }, + { + "name": "\"lnum\"" + }, + { + "name": "\"onum\"" + }, + { + "name": "\"smcp\"" + }, + { + "name": "\"swsh\"" + }, + { + "name": "\"tnum\"" + }, + { + "name": "normal", + "description": "No change in glyph substitution or positioning occurs." + }, + { + "name": "off", + "browsers": [ + "FF4" + ] + }, + { + "name": "on", + "browsers": [ + "FF4" + ] + } + ], + "relevance": 50, + "description": "Provides low-level control over OpenType font features. It is intended as a way of providing access to font features that are not widely used but are needed for a particular use case.", + "restrictions": [ + "string", + "integer" + ] + }, + { + "name": "-moz-hyphens", + "browsers": [ + "FF9" + ], + "values": [ + { + "name": "auto", + "description": "Conditional hyphenation characters inside a word, if present, take priority over automatic resources when determining hyphenation points within the word." + }, + { + "name": "manual", + "description": "Words are only broken at line breaks where there are characters inside the word that suggest line break opportunities" + }, + { + "name": "none", + "description": "Words are not broken at line breaks, even if characters inside the word suggest line break points." + } + ], + "relevance": 50, + "description": "Controls whether hyphenation is allowed to create more break opportunities within a line of text.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-moz-perspective", + "browsers": [ + "FF10" + ], + "values": [ + { + "name": "none", + "description": "No perspective transform is applied." + } + ], + "relevance": 50, + "description": "Applies the same transform as the perspective(<number>) transform function, except that it applies only to the positioned or transformed children of the element, not to the transform on the element itself.", + "restrictions": [ + "length" + ] + }, + { + "name": "-moz-perspective-origin", + "browsers": [ + "FF10" + ], + "relevance": 50, + "description": "Establishes the origin for the perspective property. It effectively sets the X and Y position at which the viewer appears to be looking at the children of the element.", + "restrictions": [ + "position", + "percentage", + "length" + ] + }, + { + "name": "-moz-text-align-last", + "browsers": [ + "FF12" + ], + "values": [ + { + "name": "auto" + }, + { + "name": "center", + "description": "The inline contents are centered within the line box." + }, + { + "name": "justify", + "description": "The text is justified according to the method specified by the 'text-justify' property." + }, + { + "name": "left", + "description": "The inline contents are aligned to the left edge of the line box. In vertical text, 'left' aligns to the edge of the line box that would be the start edge for left-to-right text." + }, + { + "name": "right", + "description": "The inline contents are aligned to the right edge of the line box. In vertical text, 'right' aligns to the edge of the line box that would be the end edge for left-to-right text." + } + ], + "relevance": 50, + "description": "Describes how the last line of a block or a line right before a forced line break is aligned when 'text-align' is set to 'justify'.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-moz-text-decoration-color", + "browsers": [ + "FF6" + ], + "relevance": 50, + "description": "Specifies the color of text decoration (underlines overlines, and line-throughs) set on the element with text-decoration-line.", + "restrictions": [ + "color" + ] + }, + { + "name": "-moz-text-decoration-line", + "browsers": [ + "FF6" + ], + "values": [ + { + "name": "line-through", + "description": "Each line of text has a line through the middle." + }, + { + "name": "none", + "description": "Neither produces nor inhibits text decoration." + }, + { + "name": "overline", + "description": "Each line of text has a line above it." + }, + { + "name": "underline", + "description": "Each line of text is underlined." + } + ], + "relevance": 50, + "description": "Specifies what line decorations, if any, are added to the element.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-moz-text-decoration-style", + "browsers": [ + "FF6" + ], + "values": [ + { + "name": "dashed", + "description": "Produces a dashed line style." + }, + { + "name": "dotted", + "description": "Produces a dotted line." + }, + { + "name": "double", + "description": "Produces a double line." + }, + { + "name": "none", + "description": "Produces no line." + }, + { + "name": "solid", + "description": "Produces a solid line." + }, + { + "name": "wavy", + "description": "Produces a wavy line." + } + ], + "relevance": 50, + "description": "Specifies the line style for underline, line-through and overline text decoration.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-moz-text-size-adjust", + "browsers": [ + "FF" + ], + "values": [ + { + "name": "auto", + "description": "Renderers must use the default size adjustment when displaying on a small device." + }, + { + "name": "none", + "description": "Renderers must not do size adjustment when displaying on a small device." + } + ], + "relevance": 50, + "description": "Specifies a size adjustment for displaying text content in mobile browsers.", + "restrictions": [ + "enum", + "percentage" + ] + }, + { + "name": "-moz-transform", + "browsers": [ + "FF3.5" + ], + "values": [ + { + "name": "matrix()", + "description": "Specifies a 2D transformation in the form of a transformation matrix of six values. matrix(a,b,c,d,e,f) is equivalent to applying the transformation matrix [a b c d e f]" + }, + { + "name": "matrix3d()", + "description": "Specifies a 3D transformation as a 4x4 homogeneous matrix of 16 values in column-major order." + }, + { + "name": "none" + }, + { + "name": "perspective", + "description": "Specifies a perspective projection matrix." + }, + { + "name": "rotate()", + "description": "Specifies a 2D rotation by the angle specified in the parameter about the origin of the element, as defined by the transform-origin property." + }, + { + "name": "rotate3d()", + "description": "Specifies a clockwise 3D rotation by the angle specified in last parameter about the [x,y,z] direction vector described by the first 3 parameters." + }, + { + "name": "rotateX('angle')", + "description": "Specifies a clockwise rotation by the given angle about the X axis." + }, + { + "name": "rotateY('angle')", + "description": "Specifies a clockwise rotation by the given angle about the Y axis." + }, + { + "name": "rotateZ('angle')", + "description": "Specifies a clockwise rotation by the given angle about the Z axis." + }, + { + "name": "scale()", + "description": "Specifies a 2D scale operation by the [sx,sy] scaling vector described by the 2 parameters. If the second parameter is not provided, it is takes a value equal to the first." + }, + { + "name": "scale3d()", + "description": "Specifies a 3D scale operation by the [sx,sy,sz] scaling vector described by the 3 parameters." + }, + { + "name": "scaleX()", + "description": "Specifies a scale operation using the [sx,1] scaling vector, where sx is given as the parameter." + }, + { + "name": "scaleY()", + "description": "Specifies a scale operation using the [sy,1] scaling vector, where sy is given as the parameter." + }, + { + "name": "scaleZ()", + "description": "Specifies a scale operation using the [1,1,sz] scaling vector, where sz is given as the parameter." + }, + { + "name": "skew()", + "description": "Specifies a skew transformation along the X and Y axes. The first angle parameter specifies the skew on the X axis. The second angle parameter specifies the skew on the Y axis. If the second parameter is not given then a value of 0 is used for the Y angle (ie: no skew on the Y axis)." + }, + { + "name": "skewX()", + "description": "Specifies a skew transformation along the X axis by the given angle." + }, + { + "name": "skewY()", + "description": "Specifies a skew transformation along the Y axis by the given angle." + }, + { + "name": "translate()", + "description": "Specifies a 2D translation by the vector [tx, ty], where tx is the first translation-value parameter and ty is the optional second translation-value parameter." + }, + { + "name": "translate3d()", + "description": "Specifies a 3D translation by the vector [tx,ty,tz], with tx, ty and tz being the first, second and third translation-value parameters respectively." + }, + { + "name": "translateX()", + "description": "Specifies a translation by the given amount in the X direction." + }, + { + "name": "translateY()", + "description": "Specifies a translation by the given amount in the Y direction." + }, + { + "name": "translateZ()", + "description": "Specifies a translation by the given amount in the Z direction. Note that percentage values are not allowed in the translateZ translation-value, and if present are evaluated as 0." + } + ], + "relevance": 50, + "description": "A two-dimensional transformation is applied to an element through the 'transform' property. This property contains a list of transform functions similar to those allowed by SVG.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-moz-transform-origin", + "browsers": [ + "FF3.5" + ], + "relevance": 50, + "description": "Establishes the origin of transformation for an element.", + "restrictions": [ + "position", + "length", + "percentage" + ] + }, + { + "name": "-moz-transition", + "browsers": [ + "FF4" + ], + "values": [ + { + "name": "all", + "description": "Every property that is able to undergo a transition will do so." + }, + { + "name": "none", + "description": "No property will transition." + } + ], + "relevance": 50, + "description": "Shorthand property combines four of the transition properties into a single property.", + "restrictions": [ + "time", + "property", + "timing-function", + "enum" + ] + }, + { + "name": "-moz-transition-delay", + "browsers": [ + "FF4" + ], + "relevance": 50, + "description": "Defines when the transition will start. It allows a transition to begin execution some period of time from when it is applied.", + "restrictions": [ + "time" + ] + }, + { + "name": "-moz-transition-duration", + "browsers": [ + "FF4" + ], + "relevance": 50, + "description": "Specifies how long the transition from the old value to the new value should take.", + "restrictions": [ + "time" + ] + }, + { + "name": "-moz-transition-property", + "browsers": [ + "FF4" + ], + "values": [ + { + "name": "all", + "description": "Every property that is able to undergo a transition will do so." + }, + { + "name": "none", + "description": "No property will transition." + } + ], + "relevance": 50, + "description": "Specifies the name of the CSS property to which the transition is applied.", + "restrictions": [ + "property" + ] + }, + { + "name": "-moz-transition-timing-function", + "browsers": [ + "FF4" + ], + "relevance": 50, + "description": "Describes how the intermediate values used during a transition will be calculated.", + "restrictions": [ + "timing-function" + ] + }, + { + "name": "-moz-user-focus", + "browsers": [ + "FF1" + ], + "values": [ + { + "name": "ignore" + }, + { + "name": "normal" + } + ], + "status": "nonstandard", + "syntax": "ignore | normal | select-after | select-before | select-menu | select-same | select-all | none", + "relevance": 0, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/-moz-user-focus" + } + ], + "description": "Used to indicate whether the element can have focus." + }, + { + "name": "-moz-user-select", + "browsers": [ + "FF1.5" + ], + "values": [ + { + "name": "all" + }, + { + "name": "element" + }, + { + "name": "elements" + }, + { + "name": "-moz-all" + }, + { + "name": "-moz-none" + }, + { + "name": "none" + }, + { + "name": "text" + }, + { + "name": "toggle" + } + ], + "relevance": 50, + "description": "Controls the appearance of selection.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-ms-accelerator", + "browsers": [ + "E", + "IE10" + ], + "values": [ + { + "name": "false", + "description": "The element does not contain an accelerator key sequence." + }, + { + "name": "true", + "description": "The element contains an accelerator key sequence." + } + ], + "status": "nonstandard", + "syntax": "false | true", + "relevance": 0, + "description": "IE only. Has the ability to turn off its system underlines for accelerator keys until the ALT key is pressed", + "restrictions": [ + "enum" + ] + }, + { + "name": "-ms-behavior", + "browsers": [ + "IE8" + ], + "relevance": 50, + "description": "IE only. Used to extend behaviors of the browser", + "restrictions": [ + "url" + ] + }, + { + "name": "-ms-block-progression", + "browsers": [ + "IE8" + ], + "values": [ + { + "name": "bt", + "description": "Bottom-to-top block flow. Layout is horizontal." + }, + { + "name": "lr", + "description": "Left-to-right direction. The flow orientation is vertical." + }, + { + "name": "rl", + "description": "Right-to-left direction. The flow orientation is vertical." + }, + { + "name": "tb", + "description": "Top-to-bottom direction. The flow orientation is horizontal." + } + ], + "status": "nonstandard", + "syntax": "tb | rl | bt | lr", + "relevance": 0, + "description": "Sets the block-progression value and the flow orientation", + "restrictions": [ + "enum" + ] + }, + { + "name": "-ms-content-zoom-chaining", + "browsers": [ + "E", + "IE10" + ], + "values": [ + { + "name": "chained", + "description": "The nearest zoomable parent element begins zooming when the user hits a zoom limit during a manipulation. No bounce effect is shown." + }, + { + "name": "none", + "description": "A bounce effect is shown when the user hits a zoom limit during a manipulation." + } + ], + "status": "nonstandard", + "syntax": "none | chained", + "relevance": 0, + "description": "Specifies the zoom behavior that occurs when a user hits the zoom limit during a manipulation." + }, + { + "name": "-ms-content-zooming", + "browsers": [ + "E", + "IE10" + ], + "values": [ + { + "name": "none", + "description": "The element is not zoomable." + }, + { + "name": "zoom", + "description": "The element is zoomable." + } + ], + "status": "nonstandard", + "syntax": "none | zoom", + "relevance": 0, + "description": "Specifies whether zooming is enabled.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-ms-content-zoom-limit", + "browsers": [ + "E", + "IE10" + ], + "status": "nonstandard", + "syntax": "<'-ms-content-zoom-limit-min'> <'-ms-content-zoom-limit-max'>", + "relevance": 0, + "description": "Shorthand property for the -ms-content-zoom-limit-min and -ms-content-zoom-limit-max properties.", + "restrictions": [ + "percentage" + ] + }, + { + "name": "-ms-content-zoom-limit-max", + "browsers": [ + "E", + "IE10" + ], + "status": "nonstandard", + "syntax": "<percentage>", + "relevance": 0, + "description": "Specifies the maximum zoom factor.", + "restrictions": [ + "percentage" + ] + }, + { + "name": "-ms-content-zoom-limit-min", + "browsers": [ + "E", + "IE10" + ], + "status": "nonstandard", + "syntax": "<percentage>", + "relevance": 0, + "description": "Specifies the minimum zoom factor.", + "restrictions": [ + "percentage" + ] + }, + { + "name": "-ms-content-zoom-snap", + "browsers": [ + "E", + "IE10" + ], + "values": [ + { + "name": "mandatory", + "description": "Indicates that the motion of the content after the contact is picked up is always adjusted so that it lands on a snap-point." + }, + { + "name": "none", + "description": "Indicates that zooming is unaffected by any defined snap-points." + }, + { + "name": "proximity", + "description": "Indicates that the motion of the content after the contact is picked up may be adjusted if the content would normally stop \"close enough\" to a snap-point." + }, + { + "name": "snapInterval(100%, 100%)", + "description": "Specifies where the snap-points will be placed." + }, + { + "name": "snapList()", + "description": "Specifies the position of individual snap-points as a comma-separated list of zoom factors." + } + ], + "status": "nonstandard", + "syntax": "<'-ms-content-zoom-snap-type'> || <'-ms-content-zoom-snap-points'>", + "relevance": 0, + "description": "Shorthand property for the -ms-content-zoom-snap-type and -ms-content-zoom-snap-points properties." + }, + { + "name": "-ms-content-zoom-snap-points", + "browsers": [ + "E", + "IE10" + ], + "values": [ + { + "name": "snapInterval(100%, 100%)", + "description": "Specifies where the snap-points will be placed." + }, + { + "name": "snapList()", + "description": "Specifies the position of individual snap-points as a comma-separated list of zoom factors." + } + ], + "status": "nonstandard", + "syntax": "snapInterval( <percentage>, <percentage> ) | snapList( <percentage># )", + "relevance": 0, + "description": "Defines where zoom snap-points are located." + }, + { + "name": "-ms-content-zoom-snap-type", + "browsers": [ + "E", + "IE10" + ], + "values": [ + { + "name": "mandatory", + "description": "Indicates that the motion of the content after the contact is picked up is always adjusted so that it lands on a snap-point." + }, + { + "name": "none", + "description": "Indicates that zooming is unaffected by any defined snap-points." + }, + { + "name": "proximity", + "description": "Indicates that the motion of the content after the contact is picked up may be adjusted if the content would normally stop \"close enough\" to a snap-point." + } + ], + "status": "nonstandard", + "syntax": "none | proximity | mandatory", + "relevance": 0, + "description": "Specifies how zooming is affected by defined snap-points.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-ms-filter", + "browsers": [ + "IE8-9" + ], + "status": "nonstandard", + "syntax": "<string>", + "relevance": 0, + "description": "IE only. Used to produce visual effects.", + "restrictions": [ + "string" + ] + }, + { + "name": "-ms-flex", + "browsers": [ + "IE10" + ], + "values": [ + { + "name": "auto", + "description": "Retrieves the value of the main size property as the used 'flex-basis'." + }, + { + "name": "none", + "description": "Expands to '0 0 auto'." + } + ], + "relevance": 50, + "description": "specifies the parameters of a flexible length: the positive and negative flexibility, and the preferred size.", + "restrictions": [ + "length", + "number", + "percentage" + ] + }, + { + "name": "-ms-flex-align", + "browsers": [ + "IE10" + ], + "values": [ + { + "name": "baseline", + "description": "If the flex item's inline axis is the same as the cross axis, this value is identical to 'flex-start'. Otherwise, it participates in baseline alignment." + }, + { + "name": "center", + "description": "The flex item's margin box is centered in the cross axis within the line." + }, + { + "name": "end", + "description": "The cross-end margin edge of the flex item is placed flush with the cross-end edge of the line." + }, + { + "name": "start", + "description": "The cross-start margin edge of the flexbox item is placed flush with the cross-start edge of the line." + }, + { + "name": "stretch", + "description": "If the cross size property of the flexbox item is anything other than 'auto', this value is identical to 'start'." + } + ], + "relevance": 50, + "description": "Aligns flex items along the cross axis of the current line of the flex container.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-ms-flex-direction", + "browsers": [ + "IE10" + ], + "values": [ + { + "name": "column", + "description": "The flex container's main axis has the same orientation as the block axis of the current writing mode." + }, + { + "name": "column-reverse", + "description": "Same as 'column', except the main-start and main-end directions are swapped." + }, + { + "name": "row", + "description": "The flex container's main axis has the same orientation as the inline axis of the current writing mode." + }, + { + "name": "row-reverse", + "description": "Same as 'row', except the main-start and main-end directions are swapped." + } + ], + "relevance": 50, + "description": "Specifies how flex items are placed in the flex container, by setting the direction of the flex container's main axis.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-ms-flex-flow", + "browsers": [ + "IE10" + ], + "values": [ + { + "name": "column", + "description": "The flex container's main axis has the same orientation as the block axis of the current writing mode." + }, + { + "name": "column-reverse", + "description": "Same as 'column', except the main-start and main-end directions are swapped." + }, + { + "name": "nowrap", + "description": "The flex container is single-line." + }, + { + "name": "row", + "description": "The flex container's main axis has the same orientation as the inline axis of the current writing mode." + }, + { + "name": "wrap", + "description": "The flexbox is multi-line." + }, + { + "name": "wrap-reverse", + "description": "Same as 'wrap', except the cross-start and cross-end directions are swapped." + } + ], + "relevance": 50, + "description": "Specifies how flexbox items are placed in the flexbox.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-ms-flex-item-align", + "browsers": [ + "IE10" + ], + "values": [ + { + "name": "auto", + "description": "Computes to the value of 'align-items' on the element's parent, or 'stretch' if the element has no parent. On absolutely positioned elements, it computes to itself." + }, + { + "name": "baseline", + "description": "If the flex item's inline axis is the same as the cross axis, this value is identical to 'flex-start'. Otherwise, it participates in baseline alignment." + }, + { + "name": "center", + "description": "The flex item's margin box is centered in the cross axis within the line." + }, + { + "name": "end", + "description": "The cross-end margin edge of the flex item is placed flush with the cross-end edge of the line." + }, + { + "name": "start", + "description": "The cross-start margin edge of the flex item is placed flush with the cross-start edge of the line." + }, + { + "name": "stretch", + "description": "If the cross size property of the flex item computes to auto, and neither of the cross-axis margins are auto, the flex item is stretched." + } + ], + "relevance": 50, + "description": "Allows the default alignment along the cross axis to be overridden for individual flex items.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-ms-flex-line-pack", + "browsers": [ + "IE10" + ], + "values": [ + { + "name": "center", + "description": "Lines are packed toward the center of the flex container." + }, + { + "name": "distribute", + "description": "Lines are evenly distributed in the flex container, with half-size spaces on either end." + }, + { + "name": "end", + "description": "Lines are packed toward the end of the flex container." + }, + { + "name": "justify", + "description": "Lines are evenly distributed in the flex container." + }, + { + "name": "start", + "description": "Lines are packed toward the start of the flex container." + }, + { + "name": "stretch", + "description": "Lines stretch to take up the remaining space." + } + ], + "relevance": 50, + "description": "Aligns a flex container's lines within the flex container when there is extra space in the cross-axis, similar to how 'justify-content' aligns individual items within the main-axis.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-ms-flex-order", + "browsers": [ + "IE10" + ], + "relevance": 50, + "description": "Controls the order in which children of a flex container appear within the flex container, by assigning them to ordinal groups.", + "restrictions": [ + "integer" + ] + }, + { + "name": "-ms-flex-pack", + "browsers": [ + "IE10" + ], + "values": [ + { + "name": "center", + "description": "Flex items are packed toward the center of the line." + }, + { + "name": "distribute", + "description": "Flex items are evenly distributed in the line, with half-size spaces on either end." + }, + { + "name": "end", + "description": "Flex items are packed toward the end of the line." + }, + { + "name": "justify", + "description": "Flex items are evenly distributed in the line." + }, + { + "name": "start", + "description": "Flex items are packed toward the start of the line." + } + ], + "relevance": 50, + "description": "Aligns flex items along the main axis of the current line of the flex container.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-ms-flex-wrap", + "browsers": [ + "IE10" + ], + "values": [ + { + "name": "nowrap", + "description": "The flex container is single-line." + }, + { + "name": "wrap", + "description": "The flexbox is multi-line." + }, + { + "name": "wrap-reverse", + "description": "Same as 'wrap', except the cross-start and cross-end directions are swapped." + } + ], + "relevance": 50, + "description": "Controls whether the flex container is single-line or multi-line, and the direction of the cross-axis, which determines the direction new lines are stacked in.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-ms-flow-from", + "browsers": [ + "E", + "IE10" + ], + "values": [ + { + "name": "none", + "description": "The block container is not a CSS Region." + } + ], + "status": "nonstandard", + "syntax": "[ none | <custom-ident> ]#", + "relevance": 0, + "description": "Makes a block container a region and associates it with a named flow.", + "restrictions": [ + "identifier" + ] + }, + { + "name": "-ms-flow-into", + "browsers": [ + "E", + "IE10" + ], + "values": [ + { + "name": "none", + "description": "The element is not moved to a named flow and normal CSS processing takes place." + } + ], + "status": "nonstandard", + "syntax": "[ none | <custom-ident> ]#", + "relevance": 0, + "description": "Places an element or its contents into a named flow.", + "restrictions": [ + "identifier" + ] + }, + { + "name": "-ms-grid-column", + "browsers": [ + "E", + "IE10" + ], + "values": [ + { + "name": "auto" + }, + { + "name": "end" + }, + { + "name": "start" + } + ], + "relevance": 50, + "description": "Used to place grid items and explicitly defined grid cells in the Grid.", + "restrictions": [ + "integer", + "string", + "enum" + ] + }, + { + "name": "-ms-grid-column-align", + "browsers": [ + "E", + "IE10" + ], + "values": [ + { + "name": "center", + "description": "Places the center of the Grid Item's margin box at the center of the Grid Item's column." + }, + { + "name": "end", + "description": "Aligns the end edge of the Grid Item's margin box to the end edge of the Grid Item's column." + }, + { + "name": "start", + "description": "Aligns the starting edge of the Grid Item's margin box to the starting edge of the Grid Item's column." + }, + { + "name": "stretch", + "description": "Ensures that the Grid Item's margin box is equal to the size of the Grid Item's column." + } + ], + "relevance": 50, + "description": "Aligns the columns in a grid.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-ms-grid-columns", + "browsers": [ + "E", + "IE10" + ], + "status": "nonstandard", + "syntax": "none | <track-list> | <auto-track-list>", + "relevance": 0, + "description": "Lays out the columns of the grid." + }, + { + "name": "-ms-grid-column-span", + "browsers": [ + "E", + "IE10" + ], + "relevance": 50, + "description": "Specifies the number of columns to span.", + "restrictions": [ + "integer" + ] + }, + { + "name": "-ms-grid-layer", + "browsers": [ + "E", + "IE10" + ], + "relevance": 50, + "description": "Grid-layer is similar in concept to z-index, but avoids overloading the meaning of the z-index property, which is applicable only to positioned elements.", + "restrictions": [ + "integer" + ] + }, + { + "name": "-ms-grid-row", + "browsers": [ + "E", + "IE10" + ], + "values": [ + { + "name": "auto" + }, + { + "name": "end" + }, + { + "name": "start" + } + ], + "relevance": 50, + "description": "grid-row is used to place grid items and explicitly defined grid cells in the Grid.", + "restrictions": [ + "integer", + "string", + "enum" + ] + }, + { + "name": "-ms-grid-row-align", + "browsers": [ + "E", + "IE10" + ], + "values": [ + { + "name": "center", + "description": "Places the center of the Grid Item's margin box at the center of the Grid Item's row." + }, + { + "name": "end", + "description": "Aligns the end edge of the Grid Item's margin box to the end edge of the Grid Item's row." + }, + { + "name": "start", + "description": "Aligns the starting edge of the Grid Item's margin box to the starting edge of the Grid Item's row." + }, + { + "name": "stretch", + "description": "Ensures that the Grid Item's margin box is equal to the size of the Grid Item's row." + } + ], + "relevance": 50, + "description": "Aligns the rows in a grid.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-ms-grid-rows", + "browsers": [ + "E", + "IE10" + ], + "status": "nonstandard", + "syntax": "none | <track-list> | <auto-track-list>", + "relevance": 0, + "description": "Lays out the columns of the grid." + }, + { + "name": "-ms-grid-row-span", + "browsers": [ + "E", + "IE10" + ], + "relevance": 50, + "description": "Specifies the number of rows to span.", + "restrictions": [ + "integer" + ] + }, + { + "name": "-ms-high-contrast-adjust", + "browsers": [ + "E", + "IE10" + ], + "values": [ + { + "name": "auto", + "description": "Properties will be adjusted as applicable." + }, + { + "name": "none", + "description": "No adjustments will be applied." + } + ], + "status": "nonstandard", + "syntax": "auto | none", + "relevance": 0, + "description": "Specifies if properties should be adjusted in high contrast mode.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-ms-hyphenate-limit-chars", + "browsers": [ + "E", + "IE10" + ], + "values": [ + { + "name": "auto", + "description": "The user agent chooses a value that adapts to the current layout." + } + ], + "status": "nonstandard", + "syntax": "auto | <integer>{1,3}", + "relevance": 0, + "description": "Specifies the minimum number of characters in a hyphenated word.", + "restrictions": [ + "integer" + ] + }, + { + "name": "-ms-hyphenate-limit-lines", + "browsers": [ + "E", + "IE10" + ], + "values": [ + { + "name": "no-limit", + "description": "There is no limit." + } + ], + "status": "nonstandard", + "syntax": "no-limit | <integer>", + "relevance": 0, + "description": "Indicates the maximum number of successive hyphenated lines in an element.", + "restrictions": [ + "integer" + ] + }, + { + "name": "-ms-hyphenate-limit-zone", + "browsers": [ + "E", + "IE10" + ], + "status": "nonstandard", + "syntax": "<percentage> | <length>", + "relevance": 0, + "description": "Specifies the maximum amount of unfilled space (before justification) that may be left in the line box before hyphenation is triggered to pull part of a word from the next line back up into the current line.", + "restrictions": [ + "percentage", + "length" + ] + }, + { + "name": "-ms-hyphens", + "browsers": [ + "E", + "IE10" + ], + "values": [ + { + "name": "auto", + "description": "Conditional hyphenation characters inside a word, if present, take priority over automatic resources when determining hyphenation points within the word." + }, + { + "name": "manual", + "description": "Words are only broken at line breaks where there are characters inside the word that suggest line break opportunities" + }, + { + "name": "none", + "description": "Words are not broken at line breaks, even if characters inside the word suggest line break points." + } + ], + "relevance": 50, + "description": "Controls whether hyphenation is allowed to create more break opportunities within a line of text.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-ms-ime-mode", + "browsers": [ + "IE10" + ], + "values": [ + { + "name": "active", + "description": "The input method editor is initially active; text entry is performed using it unless the user specifically dismisses it." + }, + { + "name": "auto", + "description": "No change is made to the current input method editor state. This is the default." + }, + { + "name": "disabled", + "description": "The input method editor is disabled and may not be activated by the user." + }, + { + "name": "inactive", + "description": "The input method editor is initially inactive, but the user may activate it if they wish." + }, + { + "name": "normal", + "description": "The IME state should be normal; this value can be used in a user style sheet to override the page setting." + } + ], + "relevance": 50, + "description": "Controls the state of the input method editor for text fields.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-ms-interpolation-mode", + "browsers": [ + "IE7" + ], + "values": [ + { + "name": "bicubic" + }, + { + "name": "nearest-neighbor" + } + ], + "relevance": 50, + "description": "Gets or sets the interpolation (resampling) method used to stretch images.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-ms-layout-grid", + "browsers": [ + "E", + "IE10" + ], + "values": [ + { + "name": "char", + "description": "Any of the range of character values available to the -ms-layout-grid-char property." + }, + { + "name": "line", + "description": "Any of the range of line values available to the -ms-layout-grid-line property." + }, + { + "name": "mode", + "description": "Any of the range of mode values available to the -ms-layout-grid-mode property." + }, + { + "name": "type", + "description": "Any of the range of type values available to the -ms-layout-grid-type property." + } + ], + "relevance": 50, + "description": "Sets or retrieves the composite document grid properties that specify the layout of text characters." + }, + { + "name": "-ms-layout-grid-char", + "browsers": [ + "E", + "IE10" + ], + "values": [ + { + "name": "auto", + "description": "Largest character in the font of the element is used to set the character grid." + }, + { + "name": "none", + "description": "Default. No character grid is set." + } + ], + "relevance": 50, + "description": "Sets or retrieves the size of the character grid used for rendering the text content of an element.", + "restrictions": [ + "enum", + "length", + "percentage" + ] + }, + { + "name": "-ms-layout-grid-line", + "browsers": [ + "E", + "IE10" + ], + "values": [ + { + "name": "auto", + "description": "Largest character in the font of the element is used to set the character grid." + }, + { + "name": "none", + "description": "Default. No grid line is set." + } + ], + "relevance": 50, + "description": "Sets or retrieves the gridline value used for rendering the text content of an element.", + "restrictions": [ + "length" + ] + }, + { + "name": "-ms-layout-grid-mode", + "browsers": [ + "E", + "IE10" + ], + "values": [ + { + "name": "both", + "description": "Default. Both the char and line grid modes are enabled. This setting is necessary to fully enable the layout grid on an element." + }, + { + "name": "char", + "description": "Only a character grid is used. This is recommended for use with block-level elements, such as a blockquote, where the line grid is intended to be disabled." + }, + { + "name": "line", + "description": "Only a line grid is used. This is recommended for use with inline elements, such as a span, to disable the horizontal grid on runs of text that act as a single entity in the grid layout." + }, + { + "name": "none", + "description": "No grid is used." + } + ], + "relevance": 50, + "description": "Gets or sets whether the text layout grid uses two dimensions.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-ms-layout-grid-type", + "browsers": [ + "E", + "IE10" + ], + "values": [ + { + "name": "fixed", + "description": "Grid used for monospaced layout. All noncursive characters are treated as equal; every character is centered within a single grid space by default." + }, + { + "name": "loose", + "description": "Default. Grid used for Japanese and Korean characters." + }, + { + "name": "strict", + "description": "Grid used for Chinese, as well as Japanese (Genko) and Korean characters. Only the ideographs, kanas, and wide characters are snapped to the grid." + } + ], + "relevance": 50, + "description": "Sets or retrieves the type of grid used for rendering the text content of an element.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-ms-line-break", + "browsers": [ + "E", + "IE10" + ], + "values": [ + { + "name": "auto", + "description": "The UA determines the set of line-breaking restrictions to use for CJK scripts, and it may vary the restrictions based on the length of the line; e.g., use a less restrictive set of line-break rules for short lines." + }, + { + "name": "keep-all", + "description": "Sequences of CJK characters can no longer break on implied break points. This option should only be used where the presence of word separator characters still creates line-breaking opportunities, as in Korean." + }, + { + "name": "newspaper", + "description": "Breaks CJK scripts using the least restrictive set of line-breaking rules. Typically used for short lines, such as in newspapers." + }, + { + "name": "normal", + "description": "Breaks CJK scripts using a normal set of line-breaking rules." + }, + { + "name": "strict", + "description": "Breaks CJK scripts using a more restrictive set of line-breaking rules than 'normal'." + } + ], + "relevance": 50, + "description": "Specifies what set of line breaking restrictions are in effect within the element.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-ms-overflow-style", + "browsers": [ + "E", + "IE10" + ], + "values": [ + { + "name": "auto", + "description": "No preference, UA should use the first scrolling method in the list that it supports." + }, + { + "name": "-ms-autohiding-scrollbar", + "description": "Indicates the element displays auto-hiding scrollbars during mouse interactions and panning indicators during touch and keyboard interactions." + }, + { + "name": "none", + "description": "Indicates the element does not display scrollbars or panning indicators, even when its content overflows." + }, + { + "name": "scrollbar", + "description": "Scrollbars are typically narrow strips inserted on one or two edges of an element and which often have arrows to click on and a \"thumb\" to drag up and down (or left and right) to move the contents of the element." + } + ], + "status": "nonstandard", + "syntax": "auto | none | scrollbar | -ms-autohiding-scrollbar", + "relevance": 0, + "description": "Specify whether content is clipped when it overflows the element's content area.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-ms-perspective", + "browsers": [ + "IE10" + ], + "values": [ + { + "name": "none", + "description": "No perspective transform is applied." + } + ], + "relevance": 50, + "description": "Applies the same transform as the perspective(<number>) transform function, except that it applies only to the positioned or transformed children of the element, not to the transform on the element itself.", + "restrictions": [ + "length" + ] + }, + { + "name": "-ms-perspective-origin", + "browsers": [ + "IE10" + ], + "relevance": 50, + "description": "Establishes the origin for the perspective property. It effectively sets the X and Y position at which the viewer appears to be looking at the children of the element.", + "restrictions": [ + "position", + "percentage", + "length" + ] + }, + { + "name": "-ms-perspective-origin-x", + "browsers": [ + "IE10" + ], + "relevance": 50, + "description": "Establishes the origin for the perspective property. It effectively sets the X position at which the viewer appears to be looking at the children of the element.", + "restrictions": [ + "position", + "percentage", + "length" + ] + }, + { + "name": "-ms-perspective-origin-y", + "browsers": [ + "IE10" + ], + "relevance": 50, + "description": "Establishes the origin for the perspective property. It effectively sets the Y position at which the viewer appears to be looking at the children of the element.", + "restrictions": [ + "position", + "percentage", + "length" + ] + }, + { + "name": "-ms-progress-appearance", + "browsers": [ + "IE10" + ], + "values": [ + { + "name": "bar" + }, + { + "name": "ring" + } + ], + "relevance": 50, + "description": "Gets or sets a value that specifies whether a progress control displays as a bar or a ring.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-ms-scrollbar-3dlight-color", + "browsers": [ + "IE8" + ], + "status": "nonstandard", + "syntax": "<color>", + "relevance": 0, + "description": "Determines the color of the top and left edges of the scroll box and scroll arrows of a scroll bar.", + "restrictions": [ + "color" + ] + }, + { + "name": "-ms-scrollbar-arrow-color", + "browsers": [ + "IE8" + ], + "status": "nonstandard", + "syntax": "<color>", + "relevance": 0, + "description": "Determines the color of the arrow elements of a scroll arrow.", + "restrictions": [ + "color" + ] + }, + { + "name": "-ms-scrollbar-base-color", + "browsers": [ + "IE8" + ], + "status": "nonstandard", + "syntax": "<color>", + "relevance": 0, + "description": "Determines the color of the main elements of a scroll bar, which include the scroll box, track, and scroll arrows.", + "restrictions": [ + "color" + ] + }, + { + "name": "-ms-scrollbar-darkshadow-color", + "browsers": [ + "IE8" + ], + "status": "nonstandard", + "syntax": "<color>", + "relevance": 0, + "description": "Determines the color of the gutter of a scroll bar.", + "restrictions": [ + "color" + ] + }, + { + "name": "-ms-scrollbar-face-color", + "browsers": [ + "IE8" + ], + "status": "nonstandard", + "syntax": "<color>", + "relevance": 0, + "description": "Determines the color of the scroll box and scroll arrows of a scroll bar.", + "restrictions": [ + "color" + ] + }, + { + "name": "-ms-scrollbar-highlight-color", + "browsers": [ + "IE8" + ], + "status": "nonstandard", + "syntax": "<color>", + "relevance": 0, + "description": "Determines the color of the top and left edges of the scroll box and scroll arrows of a scroll bar.", + "restrictions": [ + "color" + ] + }, + { + "name": "-ms-scrollbar-shadow-color", + "browsers": [ + "IE8" + ], + "status": "nonstandard", + "syntax": "<color>", + "relevance": 0, + "description": "Determines the color of the bottom and right edges of the scroll box and scroll arrows of a scroll bar.", + "restrictions": [ + "color" + ] + }, + { + "name": "-ms-scrollbar-track-color", + "browsers": [ + "IE8" + ], + "status": "nonstandard", + "syntax": "<color>", + "relevance": 0, + "description": "Determines the color of the track element of a scroll bar.", + "restrictions": [ + "color" + ] + }, + { + "name": "-ms-scroll-chaining", + "browsers": [ + "E", + "IE10" + ], + "values": [ + { + "name": "chained" + }, + { + "name": "none" + } + ], + "status": "nonstandard", + "syntax": "chained | none", + "relevance": 0, + "description": "Gets or sets a value that indicates the scrolling behavior that occurs when a user hits the content boundary during a manipulation.", + "restrictions": [ + "enum", + "length" + ] + }, + { + "name": "-ms-scroll-limit", + "browsers": [ + "E", + "IE10" + ], + "values": [ + { + "name": "auto" + } + ], + "status": "nonstandard", + "syntax": "<'-ms-scroll-limit-x-min'> <'-ms-scroll-limit-y-min'> <'-ms-scroll-limit-x-max'> <'-ms-scroll-limit-y-max'>", + "relevance": 0, + "description": "Gets or sets a shorthand value that sets values for the -ms-scroll-limit-x-min, -ms-scroll-limit-y-min, -ms-scroll-limit-x-max, and -ms-scroll-limit-y-max properties.", + "restrictions": [ + "length" + ] + }, + { + "name": "-ms-scroll-limit-x-max", + "browsers": [ + "E", + "IE10" + ], + "values": [ + { + "name": "auto" + } + ], + "status": "nonstandard", + "syntax": "auto | <length>", + "relevance": 0, + "description": "Gets or sets a value that specifies the maximum value for the scrollLeft property.", + "restrictions": [ + "length" + ] + }, + { + "name": "-ms-scroll-limit-x-min", + "browsers": [ + "E", + "IE10" + ], + "status": "nonstandard", + "syntax": "<length>", + "relevance": 0, + "description": "Gets or sets a value that specifies the minimum value for the scrollLeft property.", + "restrictions": [ + "length" + ] + }, + { + "name": "-ms-scroll-limit-y-max", + "browsers": [ + "E", + "IE10" + ], + "values": [ + { + "name": "auto" + } + ], + "status": "nonstandard", + "syntax": "auto | <length>", + "relevance": 0, + "description": "Gets or sets a value that specifies the maximum value for the scrollTop property.", + "restrictions": [ + "length" + ] + }, + { + "name": "-ms-scroll-limit-y-min", + "browsers": [ + "E", + "IE10" + ], + "status": "nonstandard", + "syntax": "<length>", + "relevance": 0, + "description": "Gets or sets a value that specifies the minimum value for the scrollTop property.", + "restrictions": [ + "length" + ] + }, + { + "name": "-ms-scroll-rails", + "browsers": [ + "E", + "IE10" + ], + "values": [ + { + "name": "none" + }, + { + "name": "railed" + } + ], + "status": "nonstandard", + "syntax": "none | railed", + "relevance": 0, + "description": "Gets or sets a value that indicates whether or not small motions perpendicular to the primary axis of motion will result in either changes to both the scrollTop and scrollLeft properties or a change to the primary axis (for instance, either the scrollTop or scrollLeft properties will change, but not both).", + "restrictions": [ + "enum", + "length" + ] + }, + { + "name": "-ms-scroll-snap-points-x", + "browsers": [ + "E", + "IE10" + ], + "values": [ + { + "name": "snapInterval(100%, 100%)" + }, + { + "name": "snapList()" + } + ], + "status": "nonstandard", + "syntax": "snapInterval( <length-percentage>, <length-percentage> ) | snapList( <length-percentage># )", + "relevance": 0, + "description": "Gets or sets a value that defines where snap-points will be located along the x-axis.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-ms-scroll-snap-points-y", + "browsers": [ + "E", + "IE10" + ], + "values": [ + { + "name": "snapInterval(100%, 100%)" + }, + { + "name": "snapList()" + } + ], + "status": "nonstandard", + "syntax": "snapInterval( <length-percentage>, <length-percentage> ) | snapList( <length-percentage># )", + "relevance": 0, + "description": "Gets or sets a value that defines where snap-points will be located along the y-axis.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-ms-scroll-snap-type", + "browsers": [ + "E", + "IE10" + ], + "values": [ + { + "name": "none", + "description": "The visual viewport of this scroll container must ignore snap points, if any, when scrolled." + }, + { + "name": "mandatory", + "description": "The visual viewport of this scroll container is guaranteed to rest on a snap point when there are no active scrolling operations." + }, + { + "name": "proximity", + "description": "The visual viewport of this scroll container may come to rest on a snap point at the termination of a scroll at the discretion of the UA given the parameters of the scroll." + } + ], + "status": "nonstandard", + "syntax": "none | proximity | mandatory", + "relevance": 0, + "description": "Gets or sets a value that defines what type of snap-point should be used for the current element. There are two type of snap-points, with the primary difference being whether or not the user is guaranteed to always stop on a snap-point.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-ms-scroll-snap-x", + "browsers": [ + "E", + "IE10" + ], + "values": [ + { + "name": "mandatory" + }, + { + "name": "none" + }, + { + "name": "proximity" + }, + { + "name": "snapInterval(100%, 100%)" + }, + { + "name": "snapList()" + } + ], + "status": "nonstandard", + "syntax": "<'-ms-scroll-snap-type'> <'-ms-scroll-snap-points-x'>", + "relevance": 0, + "description": "Gets or sets a shorthand value that sets values for the -ms-scroll-snap-type and -ms-scroll-snap-points-x properties.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-ms-scroll-snap-y", + "browsers": [ + "E", + "IE10" + ], + "values": [ + { + "name": "mandatory" + }, + { + "name": "none" + }, + { + "name": "proximity" + }, + { + "name": "snapInterval(100%, 100%)" + }, + { + "name": "snapList()" + } + ], + "status": "nonstandard", + "syntax": "<'-ms-scroll-snap-type'> <'-ms-scroll-snap-points-y'>", + "relevance": 0, + "description": "Gets or sets a shorthand value that sets values for the -ms-scroll-snap-type and -ms-scroll-snap-points-y properties.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-ms-scroll-translation", + "browsers": [ + "E", + "IE10" + ], + "values": [ + { + "name": "none" + }, + { + "name": "vertical-to-horizontal" + } + ], + "status": "nonstandard", + "syntax": "none | vertical-to-horizontal", + "relevance": 0, + "description": "Gets or sets a value that specifies whether vertical-to-horizontal scroll wheel translation occurs on the specified element.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-ms-text-align-last", + "browsers": [ + "E", + "IE8" + ], + "values": [ + { + "name": "auto" + }, + { + "name": "center", + "description": "The inline contents are centered within the line box." + }, + { + "name": "justify", + "description": "The text is justified according to the method specified by the 'text-justify' property." + }, + { + "name": "left", + "description": "The inline contents are aligned to the left edge of the line box. In vertical text, 'left' aligns to the edge of the line box that would be the start edge for left-to-right text." + }, + { + "name": "right", + "description": "The inline contents are aligned to the right edge of the line box. In vertical text, 'right' aligns to the edge of the line box that would be the end edge for left-to-right text." + } + ], + "relevance": 50, + "description": "Describes how the last line of a block or a line right before a forced line break is aligned when 'text-align' is set to 'justify'.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-ms-text-autospace", + "browsers": [ + "E", + "IE8" + ], + "values": [ + { + "name": "ideograph-alpha", + "description": "Creates 1/4em extra spacing between runs of ideographic letters and non-ideographic letters, such as Latin-based, Cyrillic, Greek, Arabic or Hebrew." + }, + { + "name": "ideograph-numeric", + "description": "Creates 1/4em extra spacing between runs of ideographic letters and numeric glyphs." + }, + { + "name": "ideograph-parenthesis", + "description": "Creates extra spacing between normal (non wide) parenthesis and ideographs." + }, + { + "name": "ideograph-space", + "description": "Extends the width of the space character while surrounded by ideographs." + }, + { + "name": "none", + "description": "No extra space is created." + }, + { + "name": "punctuation", + "description": "Creates extra non-breaking spacing around punctuation as required by language-specific typographic conventions." + } + ], + "status": "nonstandard", + "syntax": "none | ideograph-alpha | ideograph-numeric | ideograph-parenthesis | ideograph-space", + "relevance": 0, + "description": "Determines whether or not a full-width punctuation mark character should be trimmed if it appears at the beginning of a line, so that its 'ink' lines up with the first glyph in the line above and below.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-ms-text-combine-horizontal", + "browsers": [ + "E", + "IE11" + ], + "values": [ + { + "name": "all", + "description": "Attempt to typeset horizontally all consecutive characters within the box such that they take up the space of a single character within the vertical line box." + }, + { + "name": "digits", + "description": "Attempt to typeset horizontally each maximal sequence of consecutive ASCII digits (U+0030-U+0039) that has as many or fewer characters than the specified integer such that it takes up the space of a single character within the vertical line box." + }, + { + "name": "none", + "description": "No special processing." + } + ], + "relevance": 50, + "description": "This property specifies the combination of multiple characters into the space of a single character.", + "restrictions": [ + "enum", + "integer" + ] + }, + { + "name": "-ms-text-justify", + "browsers": [ + "E", + "IE8" + ], + "values": [ + { + "name": "auto", + "description": "The UA determines the justification algorithm to follow, based on a balance between performance and adequate presentation quality." + }, + { + "name": "distribute", + "description": "Justification primarily changes spacing both at word separators and at grapheme cluster boundaries in all scripts except those in the connected and cursive groups. This value is sometimes used in e.g. Japanese, often with the 'text-align-last' property." + }, + { + "name": "inter-cluster", + "description": "Justification primarily changes spacing at word separators and at grapheme cluster boundaries in clustered scripts. This value is typically used for Southeast Asian scripts such as Thai." + }, + { + "name": "inter-ideograph", + "description": "Justification primarily changes spacing at word separators and at inter-graphemic boundaries in scripts that use no word spaces. This value is typically used for CJK languages." + }, + { + "name": "inter-word", + "description": "Justification primarily changes spacing at word separators. This value is typically used for languages that separate words using spaces, like English or (sometimes) Korean." + }, + { + "name": "kashida", + "description": "Justification primarily stretches Arabic and related scripts through the use of kashida or other calligraphic elongation." + } + ], + "relevance": 50, + "description": "Selects the justification algorithm used when 'text-align' is set to 'justify'. The property applies to block containers, but the UA may (but is not required to) also support it on inline elements.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-ms-text-kashida-space", + "browsers": [ + "E", + "IE10" + ], + "relevance": 50, + "description": "Sets or retrieves the ratio of kashida expansion to white space expansion when justifying lines of text in the object.", + "restrictions": [ + "percentage" + ] + }, + { + "name": "-ms-text-overflow", + "browsers": [ + "IE10" + ], + "values": [ + { + "name": "clip", + "description": "Clip inline content that overflows. Characters may be only partially rendered." + }, + { + "name": "ellipsis", + "description": "Render an ellipsis character (U+2026) to represent clipped inline content." + } + ], + "relevance": 50, + "description": "Text can overflow for example when it is prevented from wrapping", + "restrictions": [ + "enum" + ] + }, + { + "name": "-ms-text-size-adjust", + "browsers": [ + "E", + "IE10" + ], + "values": [ + { + "name": "auto", + "description": "Renderers must use the default size adjustment when displaying on a small device." + }, + { + "name": "none", + "description": "Renderers must not do size adjustment when displaying on a small device." + } + ], + "relevance": 50, + "description": "Specifies a size adjustment for displaying text content in mobile browsers.", + "restrictions": [ + "enum", + "percentage" + ] + }, + { + "name": "-ms-text-underline-position", + "browsers": [ + "E", + "IE10" + ], + "values": [ + { + "name": "alphabetic", + "description": "The underline is aligned with the alphabetic baseline. In this case the underline is likely to cross some descenders." + }, + { + "name": "auto", + "description": "The user agent may use any algorithm to determine the underline's position. In horizontal line layout, the underline should be aligned as for alphabetic. In vertical line layout, if the language is set to Japanese or Korean, the underline should be aligned as for over." + }, + { + "name": "over", + "description": "The underline is aligned with the 'top' (right in vertical writing) edge of the element's em-box. In this mode, an overline also switches sides." + }, + { + "name": "under", + "description": "The underline is aligned with the 'bottom' (left in vertical writing) edge of the element's em-box. In this case the underline usually does not cross the descenders. This is sometimes called 'accounting' underline." + } + ], + "relevance": 50, + "description": "Sets the position of an underline specified on the same element: it does not affect underlines specified by ancestor elements.This property is typically used in vertical writing contexts such as in Japanese documents where it often desired to have the underline appear 'over' (to the right of) the affected run of text", + "restrictions": [ + "enum" + ] + }, + { + "name": "-ms-touch-action", + "browsers": [ + "IE10" + ], + "values": [ + { + "name": "auto", + "description": "The element is a passive element, with several exceptions." + }, + { + "name": "double-tap-zoom", + "description": "The element will zoom on double-tap." + }, + { + "name": "manipulation", + "description": "The element is a manipulation-causing element." + }, + { + "name": "none", + "description": "The element is a manipulation-blocking element." + }, + { + "name": "pan-x", + "description": "The element permits touch-driven panning on the horizontal axis. The touch pan is performed on the nearest ancestor with horizontally scrollable content." + }, + { + "name": "pan-y", + "description": "The element permits touch-driven panning on the vertical axis. The touch pan is performed on the nearest ancestor with vertically scrollable content." + }, + { + "name": "pinch-zoom", + "description": "The element permits pinch-zooming. The pinch-zoom is performed on the nearest ancestor with zoomable content." + } + ], + "relevance": 50, + "description": "Gets or sets a value that indicates whether and how a given region can be manipulated by the user.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-ms-touch-select", + "browsers": [ + "E", + "IE10" + ], + "values": [ + { + "name": "grippers", + "description": "Grippers are always on." + }, + { + "name": "none", + "description": "Grippers are always off." + } + ], + "status": "nonstandard", + "syntax": "grippers | none", + "relevance": 0, + "description": "Gets or sets a value that toggles the 'gripper' visual elements that enable touch text selection.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-ms-transform", + "browsers": [ + "IE9-9" + ], + "values": [ + { + "name": "matrix()", + "description": "Specifies a 2D transformation in the form of a transformation matrix of six values. matrix(a,b,c,d,e,f) is equivalent to applying the transformation matrix [a b c d e f]" + }, + { + "name": "matrix3d()", + "description": "Specifies a 3D transformation as a 4x4 homogeneous matrix of 16 values in column-major order." + }, + { + "name": "none" + }, + { + "name": "rotate()", + "description": "Specifies a 2D rotation by the angle specified in the parameter about the origin of the element, as defined by the transform-origin property." + }, + { + "name": "rotate3d()", + "description": "Specifies a clockwise 3D rotation by the angle specified in last parameter about the [x,y,z] direction vector described by the first 3 parameters." + }, + { + "name": "rotateX('angle')", + "description": "Specifies a clockwise rotation by the given angle about the X axis." + }, + { + "name": "rotateY('angle')", + "description": "Specifies a clockwise rotation by the given angle about the Y axis." + }, + { + "name": "rotateZ('angle')", + "description": "Specifies a clockwise rotation by the given angle about the Z axis." + }, + { + "name": "scale()", + "description": "Specifies a 2D scale operation by the [sx,sy] scaling vector described by the 2 parameters. If the second parameter is not provided, it is takes a value equal to the first." + }, + { + "name": "scale3d()", + "description": "Specifies a 3D scale operation by the [sx,sy,sz] scaling vector described by the 3 parameters." + }, + { + "name": "scaleX()", + "description": "Specifies a scale operation using the [sx,1] scaling vector, where sx is given as the parameter." + }, + { + "name": "scaleY()", + "description": "Specifies a scale operation using the [sy,1] scaling vector, where sy is given as the parameter." + }, + { + "name": "scaleZ()", + "description": "Specifies a scale operation using the [1,1,sz] scaling vector, where sz is given as the parameter." + }, + { + "name": "skew()", + "description": "Specifies a skew transformation along the X and Y axes. The first angle parameter specifies the skew on the X axis. The second angle parameter specifies the skew on the Y axis. If the second parameter is not given then a value of 0 is used for the Y angle (ie: no skew on the Y axis)." + }, + { + "name": "skewX()", + "description": "Specifies a skew transformation along the X axis by the given angle." + }, + { + "name": "skewY()", + "description": "Specifies a skew transformation along the Y axis by the given angle." + }, + { + "name": "translate()", + "description": "Specifies a 2D translation by the vector [tx, ty], where tx is the first translation-value parameter and ty is the optional second translation-value parameter." + }, + { + "name": "translate3d()", + "description": "Specifies a 3D translation by the vector [tx,ty,tz], with tx, ty and tz being the first, second and third translation-value parameters respectively." + }, + { + "name": "translateX()", + "description": "Specifies a translation by the given amount in the X direction." + }, + { + "name": "translateY()", + "description": "Specifies a translation by the given amount in the Y direction." + }, + { + "name": "translateZ()", + "description": "Specifies a translation by the given amount in the Z direction. Note that percentage values are not allowed in the translateZ translation-value, and if present are evaluated as 0." + } + ], + "relevance": 50, + "description": "A two-dimensional transformation is applied to an element through the 'transform' property. This property contains a list of transform functions similar to those allowed by SVG.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-ms-transform-origin", + "browsers": [ + "IE9-9" + ], + "relevance": 50, + "description": "Establishes the origin of transformation for an element.", + "restrictions": [ + "position", + "length", + "percentage" + ] + }, + { + "name": "-ms-transform-origin-x", + "browsers": [ + "IE10" + ], + "relevance": 50, + "description": "The x coordinate of the origin for transforms applied to an element with respect to its border box.", + "restrictions": [ + "length", + "percentage" + ] + }, + { + "name": "-ms-transform-origin-y", + "browsers": [ + "IE10" + ], + "relevance": 50, + "description": "The y coordinate of the origin for transforms applied to an element with respect to its border box.", + "restrictions": [ + "length", + "percentage" + ] + }, + { + "name": "-ms-transform-origin-z", + "browsers": [ + "IE10" + ], + "relevance": 50, + "description": "The z coordinate of the origin for transforms applied to an element with respect to its border box.", + "restrictions": [ + "length", + "percentage" + ] + }, + { + "name": "-ms-user-select", + "browsers": [ + "E", + "IE10" + ], + "values": [ + { + "name": "element" + }, + { + "name": "none" + }, + { + "name": "text" + } + ], + "status": "nonstandard", + "syntax": "none | element | text", + "relevance": 0, + "description": "Controls the appearance of selection.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-ms-word-break", + "browsers": [ + "IE8" + ], + "values": [ + { + "name": "break-all", + "description": "Lines may break between any two grapheme clusters for non-CJK scripts." + }, + { + "name": "keep-all", + "description": "Block characters can no longer create implied break points." + }, + { + "name": "normal", + "description": "Breaks non-CJK scripts according to their own rules." + } + ], + "relevance": 50, + "description": "Specifies line break opportunities for non-CJK scripts.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-ms-word-wrap", + "browsers": [ + "IE8" + ], + "values": [ + { + "name": "break-word", + "description": "An unbreakable 'word' may be broken at an arbitrary point if there are no otherwise-acceptable break points in the line." + }, + { + "name": "normal", + "description": "Lines may break only at allowed break points." + } + ], + "relevance": 50, + "description": "Specifies whether the UA may break within a word to prevent overflow when an otherwise-unbreakable string is too long to fit.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-ms-wrap-flow", + "browsers": [ + "E", + "IE10" + ], + "values": [ + { + "name": "auto", + "description": "For floats an exclusion is created, for all other elements an exclusion is not created." + }, + { + "name": "both", + "description": "Inline flow content can flow on all sides of the exclusion." + }, + { + "name": "clear", + "description": "Inline flow content can only wrap on top and bottom of the exclusion and must leave the areas to the start and end edges of the exclusion box empty." + }, + { + "name": "end", + "description": "Inline flow content can wrap on the end side of the exclusion area but must leave the area to the start edge of the exclusion area empty." + }, + { + "name": "maximum", + "description": "Inline flow content can wrap on the side of the exclusion with the largest available space for the given line, and must leave the other side of the exclusion empty." + }, + { + "name": "minimum", + "description": "Inline flow content can flow around the edge of the exclusion with the smallest available space within the flow content's containing block, and must leave the other edge of the exclusion empty." + }, + { + "name": "start", + "description": "Inline flow content can wrap on the start edge of the exclusion area but must leave the area to end edge of the exclusion area empty." + } + ], + "status": "nonstandard", + "syntax": "auto | both | start | end | maximum | clear", + "relevance": 0, + "description": "An element becomes an exclusion when its 'wrap-flow' property has a computed value other than 'auto'.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-ms-wrap-margin", + "browsers": [ + "E", + "IE10" + ], + "status": "nonstandard", + "syntax": "<length>", + "relevance": 0, + "description": "Gets or sets a value that is used to offset the inner wrap shape from other shapes.", + "restrictions": [ + "length", + "percentage" + ] + }, + { + "name": "-ms-wrap-through", + "browsers": [ + "E", + "IE10" + ], + "values": [ + { + "name": "none", + "description": "The exclusion element does not inherit its parent node's wrapping context. Its descendants are only subject to exclusion shapes defined inside the element." + }, + { + "name": "wrap", + "description": "The exclusion element inherits its parent node's wrapping context. Its descendant inline content wraps around exclusions defined outside the element." + } + ], + "status": "nonstandard", + "syntax": "wrap | none", + "relevance": 0, + "description": "Specifies if an element inherits its parent wrapping context. In other words if it is subject to the exclusions defined outside the element.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-ms-writing-mode", + "browsers": [ + "IE8" + ], + "values": [ + { + "name": "bt-lr" + }, + { + "name": "bt-rl" + }, + { + "name": "lr-bt" + }, + { + "name": "lr-tb" + }, + { + "name": "rl-bt" + }, + { + "name": "rl-tb" + }, + { + "name": "tb-lr" + }, + { + "name": "tb-rl" + } + ], + "relevance": 50, + "description": "Shorthand property for both 'direction' and 'block-progression'.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-ms-zoom", + "browsers": [ + "IE8" + ], + "values": [ + { + "name": "normal" + } + ], + "relevance": 50, + "description": "Sets or retrieves the magnification scale of the object.", + "restrictions": [ + "enum", + "integer", + "number", + "percentage" + ] + }, + { + "name": "-ms-zoom-animation", + "browsers": [ + "IE10" + ], + "values": [ + { + "name": "default" + }, + { + "name": "none" + } + ], + "relevance": 50, + "description": "Gets or sets a value that indicates whether an animation is used when zooming.", + "restrictions": [ + "enum" + ] + }, + { + "name": "nav-down", + "browsers": [ + "O9.5" + ], + "values": [ + { + "name": "auto", + "description": "The user agent automatically determines which element to navigate the focus to in response to directional navigational input." + }, + { + "name": "current", + "description": "Indicates that the user agent should target the frame that the element is in." + }, + { + "name": "root", + "description": "Indicates that the user agent should target the full window." + } + ], + "relevance": 50, + "description": "Provides an way to control directional focus navigation.", + "restrictions": [ + "enum", + "identifier", + "string" + ] + }, + { + "name": "nav-index", + "browsers": [ + "O9.5" + ], + "values": [ + { + "name": "auto", + "description": "The element's sequential navigation order is assigned automatically by the user agent." + } + ], + "relevance": 50, + "description": "Provides an input-method-neutral way of specifying the sequential navigation order (also known as 'tabbing order').", + "restrictions": [ + "number" + ] + }, + { + "name": "nav-left", + "browsers": [ + "O9.5" + ], + "values": [ + { + "name": "auto", + "description": "The user agent automatically determines which element to navigate the focus to in response to directional navigational input." + }, + { + "name": "current", + "description": "Indicates that the user agent should target the frame that the element is in." + }, + { + "name": "root", + "description": "Indicates that the user agent should target the full window." + } + ], + "relevance": 50, + "description": "Provides an way to control directional focus navigation.", + "restrictions": [ + "enum", + "identifier", + "string" + ] + }, + { + "name": "nav-right", + "browsers": [ + "O9.5" + ], + "values": [ + { + "name": "auto", + "description": "The user agent automatically determines which element to navigate the focus to in response to directional navigational input." + }, + { + "name": "current", + "description": "Indicates that the user agent should target the frame that the element is in." + }, + { + "name": "root", + "description": "Indicates that the user agent should target the full window." + } + ], + "relevance": 50, + "description": "Provides an way to control directional focus navigation.", + "restrictions": [ + "enum", + "identifier", + "string" + ] + }, + { + "name": "nav-up", + "browsers": [ + "O9.5" + ], + "values": [ + { + "name": "auto", + "description": "The user agent automatically determines which element to navigate the focus to in response to directional navigational input." + }, + { + "name": "current", + "description": "Indicates that the user agent should target the frame that the element is in." + }, + { + "name": "root", + "description": "Indicates that the user agent should target the full window." + } + ], + "relevance": 50, + "description": "Provides an way to control directional focus navigation.", + "restrictions": [ + "enum", + "identifier", + "string" + ] + }, + { + "name": "negative", + "browsers": [ + "FF33" + ], + "atRule": "@counter-style", + "syntax": "<symbol> <symbol>?", + "relevance": 50, + "description": "@counter-style descriptor. Defines how to alter the representation when the counter value is negative.", + "restrictions": [ + "image", + "identifier", + "string" + ] + }, + { + "name": "-o-animation", + "browsers": [ + "O12" + ], + "values": [ + { + "name": "alternate", + "description": "The animation cycle iterations that are odd counts are played in the normal direction, and the animation cycle iterations that are even counts are played in a reverse direction." + }, + { + "name": "alternate-reverse", + "description": "The animation cycle iterations that are odd counts are played in the reverse direction, and the animation cycle iterations that are even counts are played in a normal direction." + }, + { + "name": "backwards", + "description": "The beginning property value (as defined in the first @keyframes at-rule) is applied before the animation is displayed, during the period defined by 'animation-delay'." + }, + { + "name": "both", + "description": "Both forwards and backwards fill modes are applied." + }, + { + "name": "forwards", + "description": "The final property value (as defined in the last @keyframes at-rule) is maintained after the animation completes." + }, + { + "name": "infinite", + "description": "Causes the animation to repeat forever." + }, + { + "name": "none", + "description": "No animation is performed" + }, + { + "name": "normal", + "description": "Normal playback." + }, + { + "name": "reverse", + "description": "All iterations of the animation are played in the reverse direction from the way they were specified." + } + ], + "relevance": 50, + "description": "Shorthand property combines six of the animation properties into a single property.", + "restrictions": [ + "time", + "enum", + "timing-function", + "identifier", + "number" + ] + }, + { + "name": "-o-animation-delay", + "browsers": [ + "O12" + ], + "relevance": 50, + "description": "Defines when the animation will start.", + "restrictions": [ + "time" + ] + }, + { + "name": "-o-animation-direction", + "browsers": [ + "O12" + ], + "values": [ + { + "name": "alternate", + "description": "The animation cycle iterations that are odd counts are played in the normal direction, and the animation cycle iterations that are even counts are played in a reverse direction." + }, + { + "name": "alternate-reverse", + "description": "The animation cycle iterations that are odd counts are played in the reverse direction, and the animation cycle iterations that are even counts are played in a normal direction." + }, + { + "name": "normal", + "description": "Normal playback." + }, + { + "name": "reverse", + "description": "All iterations of the animation are played in the reverse direction from the way they were specified." + } + ], + "relevance": 50, + "description": "Defines whether or not the animation should play in reverse on alternate cycles.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-o-animation-duration", + "browsers": [ + "O12" + ], + "relevance": 50, + "description": "Defines the length of time that an animation takes to complete one cycle.", + "restrictions": [ + "time" + ] + }, + { + "name": "-o-animation-fill-mode", + "browsers": [ + "O12" + ], + "values": [ + { + "name": "backwards", + "description": "The beginning property value (as defined in the first @keyframes at-rule) is applied before the animation is displayed, during the period defined by 'animation-delay'." + }, + { + "name": "both", + "description": "Both forwards and backwards fill modes are applied." + }, + { + "name": "forwards", + "description": "The final property value (as defined in the last @keyframes at-rule) is maintained after the animation completes." + }, + { + "name": "none", + "description": "There is no change to the property value between the time the animation is applied and the time the animation begins playing or after the animation completes." + } + ], + "relevance": 50, + "description": "Defines what values are applied by the animation outside the time it is executing.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-o-animation-iteration-count", + "browsers": [ + "O12" + ], + "values": [ + { + "name": "infinite", + "description": "Causes the animation to repeat forever." + } + ], + "relevance": 50, + "description": "Defines the number of times an animation cycle is played. The default value is one, meaning the animation will play from beginning to end once.", + "restrictions": [ + "number", + "enum" + ] + }, + { + "name": "-o-animation-name", + "browsers": [ + "O12" + ], + "values": [ + { + "name": "none", + "description": "No animation is performed" + } + ], + "relevance": 50, + "description": "Defines a list of animations that apply. Each name is used to select the keyframe at-rule that provides the property values for the animation.", + "restrictions": [ + "identifier", + "enum" + ] + }, + { + "name": "-o-animation-play-state", + "browsers": [ + "O12" + ], + "values": [ + { + "name": "paused", + "description": "A running animation will be paused." + }, + { + "name": "running", + "description": "Resume playback of a paused animation." + } + ], + "relevance": 50, + "description": "Defines whether the animation is running or paused.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-o-animation-timing-function", + "browsers": [ + "O12" + ], + "relevance": 50, + "description": "Describes how the animation will progress over one cycle of its duration. See the 'transition-timing-function'.", + "restrictions": [ + "timing-function" + ] + }, + { + "name": "object-fit", + "browsers": [ + "E79", + "FF36", + "S10", + "C32", + "O19" + ], + "values": [ + { + "name": "contain", + "description": "The replaced content is sized to maintain its aspect ratio while fitting within the element's content box: its concrete object size is resolved as a contain constraint against the element's used width and height." + }, + { + "name": "cover", + "description": "The replaced content is sized to maintain its aspect ratio while filling the element's entire content box: its concrete object size is resolved as a cover constraint against the element's used width and height." + }, + { + "name": "fill", + "description": "The replaced content is sized to fill the element's content box: the object's concrete object size is the element's used width and height." + }, + { + "name": "none", + "description": "The replaced content is not resized to fit inside the element's content box" + }, + { + "name": "scale-down", + "description": "Size the content as if 'none' or 'contain' were specified, whichever would result in a smaller concrete object size." + } + ], + "syntax": "fill | contain | cover | none | scale-down", + "relevance": 71, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/object-fit" + } + ], + "description": "Specifies how the contents of a replaced element should be scaled relative to the box established by its used height and width.", + "restrictions": [ + "enum" + ] + }, + { + "name": "object-position", + "browsers": [ + "E79", + "FF36", + "S10", + "C32", + "O19" + ], + "syntax": "<position>", + "relevance": 57, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/object-position" + } + ], + "description": "Determines the alignment of the replaced element inside its box.", + "restrictions": [ + "position", + "length", + "percentage" + ] + }, + { + "name": "-o-border-image", + "browsers": [ + "O11.6" + ], + "values": [ + { + "name": "auto", + "description": "If 'auto' is specified then the border image width is the intrinsic width or height (whichever is applicable) of the corresponding image slice. If the image does not have the required intrinsic dimension then the corresponding border-width is used instead." + }, + { + "name": "fill", + "description": "Causes the middle part of the border-image to be preserved." + }, + { + "name": "none" + }, + { + "name": "repeat", + "description": "The image is tiled (repeated) to fill the area." + }, + { + "name": "round", + "description": "The image is tiled (repeated) to fill the area. If it does not fill the area with a whole number of tiles, the image is rescaled so that it does." + }, + { + "name": "space", + "description": "The image is tiled (repeated) to fill the area. If it does not fill the area with a whole number of tiles, the extra space is distributed around the tiles." + }, + { + "name": "stretch", + "description": "The image is stretched to fill the area." + } + ], + "relevance": 50, + "description": "Shorthand property for setting 'border-image-source', 'border-image-slice', 'border-image-width', 'border-image-outset' and 'border-image-repeat'. Omitted values are set to their initial values.", + "restrictions": [ + "length", + "percentage", + "number", + "image", + "enum" + ] + }, + { + "name": "-o-object-fit", + "browsers": [ + "O10.6" + ], + "values": [ + { + "name": "contain", + "description": "The replaced content is sized to maintain its aspect ratio while fitting within the element's content box: its concrete object size is resolved as a contain constraint against the element's used width and height." + }, + { + "name": "cover", + "description": "The replaced content is sized to maintain its aspect ratio while filling the element's entire content box: its concrete object size is resolved as a cover constraint against the element's used width and height." + }, + { + "name": "fill", + "description": "The replaced content is sized to fill the element's content box: the object's concrete object size is the element's used width and height." + }, + { + "name": "none", + "description": "The replaced content is not resized to fit inside the element's content box" + }, + { + "name": "scale-down", + "description": "Size the content as if 'none' or 'contain' were specified, whichever would result in a smaller concrete object size." + } + ], + "relevance": 50, + "description": "Specifies how the contents of a replaced element should be scaled relative to the box established by its used height and width.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-o-object-position", + "browsers": [ + "O10.6" + ], + "relevance": 50, + "description": "Determines the alignment of the replaced element inside its box.", + "restrictions": [ + "position", + "length", + "percentage" + ] + }, + { + "name": "opacity", + "browsers": [ + "E12", + "FF1", + "S2", + "C1", + "IE9", + "O9" + ], + "syntax": "<alpha-value>", + "relevance": 93, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/opacity" + } + ], + "description": "Opacity of an element's text, where 1 is opaque and 0 is entirely transparent.", + "restrictions": [ + "number(0-1)" + ] + }, + { + "name": "order", + "browsers": [ + "E12", + "FF20", + "S9", + "C29", + "IE11", + "O12.1" + ], + "syntax": "<integer>", + "relevance": 65, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/order" + } + ], + "description": "Controls the order in which children of a flex container appear within the flex container, by assigning them to ordinal groups.", + "restrictions": [ + "integer" + ] + }, + { + "name": "orphans", + "browsers": [ + "E12", + "S1.3", + "C25", + "IE8", + "O9.2" + ], + "syntax": "<integer>", + "relevance": 51, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/orphans" + } + ], + "description": "Specifies the minimum number of line boxes in a block container that must be left in a fragment before a fragmentation break.", + "restrictions": [ + "integer" + ] + }, + { + "name": "-o-table-baseline", + "browsers": [ + "O9.6" + ], + "relevance": 50, + "description": "Determines which row of a inline-table should be used as baseline of inline-table.", + "restrictions": [ + "integer" + ] + }, + { + "name": "-o-tab-size", + "browsers": [ + "O10.6" + ], + "relevance": 50, + "description": "This property determines the width of the tab character (U+0009), in space characters (U+0020), when rendered.", + "restrictions": [ + "integer", + "length" + ] + }, + { + "name": "-o-text-overflow", + "browsers": [ + "O10" + ], + "values": [ + { + "name": "clip", + "description": "Clip inline content that overflows. Characters may be only partially rendered." + }, + { + "name": "ellipsis", + "description": "Render an ellipsis character (U+2026) to represent clipped inline content." + } + ], + "relevance": 50, + "description": "Text can overflow for example when it is prevented from wrapping", + "restrictions": [ + "enum" + ] + }, + { + "name": "-o-transform", + "browsers": [ + "O10.5" + ], + "values": [ + { + "name": "matrix()", + "description": "Specifies a 2D transformation in the form of a transformation matrix of six values. matrix(a,b,c,d,e,f) is equivalent to applying the transformation matrix [a b c d e f]" + }, + { + "name": "matrix3d()", + "description": "Specifies a 3D transformation as a 4x4 homogeneous matrix of 16 values in column-major order." + }, + { + "name": "none" + }, + { + "name": "rotate()", + "description": "Specifies a 2D rotation by the angle specified in the parameter about the origin of the element, as defined by the transform-origin property." + }, + { + "name": "rotate3d()", + "description": "Specifies a clockwise 3D rotation by the angle specified in last parameter about the [x,y,z] direction vector described by the first 3 parameters." + }, + { + "name": "rotateX('angle')", + "description": "Specifies a clockwise rotation by the given angle about the X axis." + }, + { + "name": "rotateY('angle')", + "description": "Specifies a clockwise rotation by the given angle about the Y axis." + }, + { + "name": "rotateZ('angle')", + "description": "Specifies a clockwise rotation by the given angle about the Z axis." + }, + { + "name": "scale()", + "description": "Specifies a 2D scale operation by the [sx,sy] scaling vector described by the 2 parameters. If the second parameter is not provided, it is takes a value equal to the first." + }, + { + "name": "scale3d()", + "description": "Specifies a 3D scale operation by the [sx,sy,sz] scaling vector described by the 3 parameters." + }, + { + "name": "scaleX()", + "description": "Specifies a scale operation using the [sx,1] scaling vector, where sx is given as the parameter." + }, + { + "name": "scaleY()", + "description": "Specifies a scale operation using the [sy,1] scaling vector, where sy is given as the parameter." + }, + { + "name": "scaleZ()", + "description": "Specifies a scale operation using the [1,1,sz] scaling vector, where sz is given as the parameter." + }, + { + "name": "skew()", + "description": "Specifies a skew transformation along the X and Y axes. The first angle parameter specifies the skew on the X axis. The second angle parameter specifies the skew on the Y axis. If the second parameter is not given then a value of 0 is used for the Y angle (ie: no skew on the Y axis)." + }, + { + "name": "skewX()", + "description": "Specifies a skew transformation along the X axis by the given angle." + }, + { + "name": "skewY()", + "description": "Specifies a skew transformation along the Y axis by the given angle." + }, + { + "name": "translate()", + "description": "Specifies a 2D translation by the vector [tx, ty], where tx is the first translation-value parameter and ty is the optional second translation-value parameter." + }, + { + "name": "translate3d()", + "description": "Specifies a 3D translation by the vector [tx,ty,tz], with tx, ty and tz being the first, second and third translation-value parameters respectively." + }, + { + "name": "translateX()", + "description": "Specifies a translation by the given amount in the X direction." + }, + { + "name": "translateY()", + "description": "Specifies a translation by the given amount in the Y direction." + }, + { + "name": "translateZ()", + "description": "Specifies a translation by the given amount in the Z direction. Note that percentage values are not allowed in the translateZ translation-value, and if present are evaluated as 0." + } + ], + "relevance": 50, + "description": "A two-dimensional transformation is applied to an element through the 'transform' property. This property contains a list of transform functions similar to those allowed by SVG.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-o-transform-origin", + "browsers": [ + "O10.5" + ], + "relevance": 50, + "description": "Establishes the origin of transformation for an element.", + "restrictions": [ + "positon", + "length", + "percentage" + ] + }, + { + "name": "-o-transition", + "browsers": [ + "O11.5" + ], + "values": [ + { + "name": "all", + "description": "Every property that is able to undergo a transition will do so." + }, + { + "name": "none", + "description": "No property will transition." + } + ], + "relevance": 50, + "description": "Shorthand property combines four of the transition properties into a single property.", + "restrictions": [ + "time", + "property", + "timing-function", + "enum" + ] + }, + { + "name": "-o-transition-delay", + "browsers": [ + "O11.5" + ], + "relevance": 50, + "description": "Defines when the transition will start. It allows a transition to begin execution some period of time from when it is applied.", + "restrictions": [ + "time" + ] + }, + { + "name": "-o-transition-duration", + "browsers": [ + "O11.5" + ], + "relevance": 50, + "description": "Specifies how long the transition from the old value to the new value should take.", + "restrictions": [ + "time" + ] + }, + { + "name": "-o-transition-property", + "browsers": [ + "O11.5" + ], + "values": [ + { + "name": "all", + "description": "Every property that is able to undergo a transition will do so." + }, + { + "name": "none", + "description": "No property will transition." + } + ], + "relevance": 50, + "description": "Specifies the name of the CSS property to which the transition is applied.", + "restrictions": [ + "property" + ] + }, + { + "name": "-o-transition-timing-function", + "browsers": [ + "O11.5" + ], + "relevance": 50, + "description": "Describes how the intermediate values used during a transition will be calculated.", + "restrictions": [ + "timing-function" + ] + }, + { + "name": "offset-block-end", + "browsers": [ + "FF41" + ], + "values": [ + { + "name": "auto", + "description": "For non-replaced elements, the effect of this value depends on which of related properties have the value 'auto' as well." + } + ], + "relevance": 50, + "description": "Logical 'bottom'. Mapping depends on the parent element's 'writing-mode', 'direction', and 'text-orientation'.", + "restrictions": [ + "length", + "percentage" + ] + }, + { + "name": "offset-block-start", + "browsers": [ + "FF41" + ], + "values": [ + { + "name": "auto", + "description": "For non-replaced elements, the effect of this value depends on which of related properties have the value 'auto' as well." + } + ], + "relevance": 50, + "description": "Logical 'top'. Mapping depends on the parent element's 'writing-mode', 'direction', and 'text-orientation'.", + "restrictions": [ + "length", + "percentage" + ] + }, + { + "name": "offset-inline-end", + "browsers": [ + "FF41" + ], + "values": [ + { + "name": "auto", + "description": "For non-replaced elements, the effect of this value depends on which of related properties have the value 'auto' as well." + } + ], + "relevance": 50, + "description": "Logical 'right'. Mapping depends on the parent element's 'writing-mode', 'direction', and 'text-orientation'.", + "restrictions": [ + "length", + "percentage" + ] + }, + { + "name": "offset-inline-start", + "browsers": [ + "FF41" + ], + "values": [ + { + "name": "auto", + "description": "For non-replaced elements, the effect of this value depends on which of related properties have the value 'auto' as well." + } + ], + "relevance": 50, + "description": "Logical 'left'. Mapping depends on the parent element's 'writing-mode', 'direction', and 'text-orientation'.", + "restrictions": [ + "length", + "percentage" + ] + }, + { + "name": "outline", + "browsers": [ + "E94", + "FF88", + "S16.4", + "C94", + "IE8", + "O80" + ], + "values": [ + { + "name": "auto", + "description": "Permits the user agent to render a custom outline style, typically the default platform style." + }, + { + "name": "invert", + "browsers": [ + "E94", + "FF88", + "S16.4", + "C94", + "IE8", + "O80" + ], + "description": "Performs a color inversion on the pixels on the screen." + } + ], + "syntax": "[ <'outline-color'> || <'outline-style'> || <'outline-width'> ]", + "relevance": 88, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/outline" + } + ], + "description": "Shorthand property for 'outline-style', 'outline-width', and 'outline-color'.", + "restrictions": [ + "length", + "line-width", + "line-style", + "color", + "enum" + ] + }, + { + "name": "outline-color", + "browsers": [ + "E12", + "FF1.5", + "S1.2", + "C1", + "IE8", + "O7" + ], + "values": [ + { + "name": "invert", + "browsers": [ + "E12", + "FF1.5", + "S1.2", + "C1", + "IE8", + "O7" + ], + "description": "Performs a color inversion on the pixels on the screen." + } + ], + "syntax": "<color> | invert", + "relevance": 62, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/outline-color" + } + ], + "description": "The color of the outline.", + "restrictions": [ + "enum", + "color" + ] + }, + { + "name": "outline-offset", + "browsers": [ + "E15", + "FF1.5", + "S1.2", + "C1", + "O9.5" + ], + "syntax": "<length>", + "relevance": 69, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/outline-offset" + } + ], + "description": "Offset the outline and draw it beyond the border edge.", + "restrictions": [ + "length" + ] + }, + { + "name": "outline-style", + "browsers": [ + "E12", + "FF1.5", + "S1.2", + "C1", + "IE8", + "O7" + ], + "values": [ + { + "name": "auto", + "description": "Permits the user agent to render a custom outline style, typically the default platform style." + } + ], + "syntax": "auto | <'border-style'>", + "relevance": 61, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/outline-style" + } + ], + "description": "Style of the outline.", + "restrictions": [ + "line-style", + "enum" + ] + }, + { + "name": "outline-width", + "browsers": [ + "E12", + "FF1.5", + "S1.2", + "C1", + "IE8", + "O7" + ], + "syntax": "<line-width>", + "relevance": 61, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/outline-width" + } + ], + "description": "Width of the outline.", + "restrictions": [ + "length", + "line-width" + ] + }, + { + "name": "overflow", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O7" + ], + "values": [ + { + "name": "auto", + "description": "The behavior of the 'auto' value is UA-dependent, but should cause a scrolling mechanism to be provided for overflowing boxes." + }, + { + "name": "hidden", + "description": "Content is clipped and no scrolling mechanism should be provided to view the content outside the clipping region." + }, + { + "name": "-moz-hidden-unscrollable", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O7" + ], + "description": "Same as the standardized 'clip', except doesn't establish a block formatting context." + }, + { + "name": "scroll", + "description": "Content is clipped and if the user agent uses a scrolling mechanism that is visible on the screen (such as a scroll bar or a panner), that mechanism should be displayed for a box whether or not any of its content is clipped." + }, + { + "name": "visible", + "description": "Content is not clipped, i.e., it may be rendered outside the content box." + } + ], + "syntax": "[ visible | hidden | clip | scroll | auto ]{1,2}", + "relevance": 93, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/overflow" + } + ], + "description": "Shorthand for setting 'overflow-x' and 'overflow-y'.", + "restrictions": [ + "enum" + ] + }, + { + "name": "overflow-wrap", + "browsers": [ + "E18", + "FF49", + "S7", + "C23", + "IE5.5", + "O12.1" + ], + "values": [ + { + "name": "break-word", + "description": "An otherwise unbreakable sequence of characters may be broken at an arbitrary point if there are no otherwise-acceptable break points in the line." + }, + { + "name": "normal", + "description": "Lines may break only at allowed break points." + } + ], + "syntax": "normal | break-word | anywhere", + "relevance": 65, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/overflow-wrap" + } + ], + "description": "Specifies whether the UA may break within a word to prevent overflow when an otherwise-unbreakable string is too long to fit within the line box.", + "restrictions": [ + "enum" + ] + }, + { + "name": "overflow-x", + "browsers": [ + "E12", + "FF3.5", + "S3", + "C1", + "IE5", + "O9.5" + ], + "values": [ + { + "name": "auto", + "description": "The behavior of the 'auto' value is UA-dependent, but should cause a scrolling mechanism to be provided for overflowing boxes." + }, + { + "name": "hidden", + "description": "Content is clipped and no scrolling mechanism should be provided to view the content outside the clipping region." + }, + { + "name": "scroll", + "description": "Content is clipped and if the user agent uses a scrolling mechanism that is visible on the screen (such as a scroll bar or a panner), that mechanism should be displayed for a box whether or not any of its content is clipped." + }, + { + "name": "visible", + "description": "Content is not clipped, i.e., it may be rendered outside the content box." + } + ], + "syntax": "visible | hidden | clip | scroll | auto", + "relevance": 81, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/overflow-x" + } + ], + "description": "Specifies the handling of overflow in the horizontal direction.", + "restrictions": [ + "enum" + ] + }, + { + "name": "overflow-y", + "browsers": [ + "E12", + "FF3.5", + "S3", + "C1", + "IE5", + "O9.5" + ], + "values": [ + { + "name": "auto", + "description": "The behavior of the 'auto' value is UA-dependent, but should cause a scrolling mechanism to be provided for overflowing boxes." + }, + { + "name": "hidden", + "description": "Content is clipped and no scrolling mechanism should be provided to view the content outside the clipping region." + }, + { + "name": "scroll", + "description": "Content is clipped and if the user agent uses a scrolling mechanism that is visible on the screen (such as a scroll bar or a panner), that mechanism should be displayed for a box whether or not any of its content is clipped." + }, + { + "name": "visible", + "description": "Content is not clipped, i.e., it may be rendered outside the content box." + } + ], + "syntax": "visible | hidden | clip | scroll | auto", + "relevance": 82, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/overflow-y" + } + ], + "description": "Specifies the handling of overflow in the vertical direction.", + "restrictions": [ + "enum" + ] + }, + { + "name": "pad", + "browsers": [ + "FF33" + ], + "atRule": "@counter-style", + "syntax": "<integer> && <symbol>", + "relevance": 50, + "description": "@counter-style descriptor. Specifies a \"fixed-width\" counter style, where representations shorter than the pad value are padded with a particular <symbol>", + "restrictions": [ + "integer", + "image", + "string", + "identifier" + ] + }, + { + "name": "padding", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O3.5" + ], + "values": [], + "syntax": "[ <length> | <percentage> ]{1,4}", + "relevance": 95, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/padding" + } + ], + "description": "Shorthand property to set values for the thickness of the padding area. If left is omitted, it is the same as right. If bottom is omitted it is the same as top, if right is omitted it is the same as top. The value may not be negative.", + "restrictions": [ + "length", + "percentage" + ] + }, + { + "name": "padding-bottom", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O3.5" + ], + "syntax": "<length> | <percentage>", + "relevance": 89, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/padding-bottom" + } + ], + "description": "Shorthand property to set values for the thickness of the padding area. If left is omitted, it is the same as right. If bottom is omitted it is the same as top, if right is omitted it is the same as top. The value may not be negative.", + "restrictions": [ + "length", + "percentage" + ] + }, + { + "name": "padding-block-end", + "browsers": [ + "E79", + "FF41", + "S12.1", + "C69", + "O56" + ], + "syntax": "<'padding-left'>", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/padding-block-end" + } + ], + "description": "Logical 'padding-bottom'. Mapping depends on the parent element's 'writing-mode', 'direction', and 'text-orientation'.", + "restrictions": [ + "length", + "percentage" + ] + }, + { + "name": "padding-block-start", + "browsers": [ + "E79", + "FF41", + "S12.1", + "C69", + "O56" + ], + "syntax": "<'padding-left'>", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/padding-block-start" + } + ], + "description": "Logical 'padding-top'. Mapping depends on the parent element's 'writing-mode', 'direction', and 'text-orientation'.", + "restrictions": [ + "length", + "percentage" + ] + }, + { + "name": "padding-inline-end", + "browsers": [ + "E79", + "FF41", + "S12.1", + "C69", + "O56" + ], + "syntax": "<'padding-left'>", + "relevance": 55, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/padding-inline-end" + } + ], + "description": "Logical 'padding-right'. Mapping depends on the parent element's 'writing-mode', 'direction', and 'text-orientation'.", + "restrictions": [ + "length", + "percentage" + ] + }, + { + "name": "padding-inline-start", + "browsers": [ + "E79", + "FF41", + "S12.1", + "C69", + "O56" + ], + "syntax": "<'padding-left'>", + "relevance": 56, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/padding-inline-start" + } + ], + "description": "Logical 'padding-left'. Mapping depends on the parent element's 'writing-mode', 'direction', and 'text-orientation'.", + "restrictions": [ + "length", + "percentage" + ] + }, + { + "name": "padding-left", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O3.5" + ], + "syntax": "<length> | <percentage>", + "relevance": 90, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/padding-left" + } + ], + "description": "Shorthand property to set values for the thickness of the padding area. If left is omitted, it is the same as right. If bottom is omitted it is the same as top, if right is omitted it is the same as top. The value may not be negative.", + "restrictions": [ + "length", + "percentage" + ] + }, + { + "name": "padding-right", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O3.5" + ], + "syntax": "<length> | <percentage>", + "relevance": 89, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/padding-right" + } + ], + "description": "Shorthand property to set values for the thickness of the padding area. If left is omitted, it is the same as right. If bottom is omitted it is the same as top, if right is omitted it is the same as top. The value may not be negative.", + "restrictions": [ + "length", + "percentage" + ] + }, + { + "name": "padding-top", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O3.5" + ], + "syntax": "<length> | <percentage>", + "relevance": 90, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/padding-top" + } + ], + "description": "Shorthand property to set values for the thickness of the padding area. If left is omitted, it is the same as right. If bottom is omitted it is the same as top, if right is omitted it is the same as top. The value may not be negative.", + "restrictions": [ + "length", + "percentage" + ] + }, + { + "name": "page-break-after", + "browsers": [ + "E12", + "FF1", + "S1.2", + "C1", + "IE4", + "O7" + ], + "values": [ + { + "name": "always", + "description": "Always force a page break after the generated box." + }, + { + "name": "auto", + "description": "Neither force nor forbid a page break after generated box." + }, + { + "name": "avoid", + "description": "Avoid a page break after the generated box." + }, + { + "name": "left", + "description": "Force one or two page breaks after the generated box so that the next page is formatted as a left page." + }, + { + "name": "right", + "description": "Force one or two page breaks after the generated box so that the next page is formatted as a right page." + } + ], + "syntax": "auto | always | avoid | left | right | recto | verso", + "relevance": 52, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/page-break-after" + } + ], + "description": "Defines rules for page breaks after an element.", + "restrictions": [ + "enum" + ] + }, + { + "name": "page-break-before", + "browsers": [ + "E12", + "FF1", + "S1.2", + "C1", + "IE4", + "O7" + ], + "values": [ + { + "name": "always", + "description": "Always force a page break before the generated box." + }, + { + "name": "auto", + "description": "Neither force nor forbid a page break before the generated box." + }, + { + "name": "avoid", + "description": "Avoid a page break before the generated box." + }, + { + "name": "left", + "description": "Force one or two page breaks before the generated box so that the next page is formatted as a left page." + }, + { + "name": "right", + "description": "Force one or two page breaks before the generated box so that the next page is formatted as a right page." + } + ], + "syntax": "auto | always | avoid | left | right | recto | verso", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/page-break-before" + } + ], + "description": "Defines rules for page breaks before an element.", + "restrictions": [ + "enum" + ] + }, + { + "name": "page-break-inside", + "browsers": [ + "E12", + "FF19", + "S1.3", + "C1", + "IE8", + "O7" + ], + "values": [ + { + "name": "auto", + "description": "Neither force nor forbid a page break inside the generated box." + }, + { + "name": "avoid", + "description": "Avoid a page break inside the generated box." + } + ], + "syntax": "auto | avoid", + "relevance": 53, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/page-break-inside" + } + ], + "description": "Defines rules for page breaks inside an element.", + "restrictions": [ + "enum" + ] + }, + { + "name": "paint-order", + "browsers": [ + "E17", + "FF60", + "S8", + "C35", + "O22" + ], + "values": [ + { + "name": "fill" + }, + { + "name": "markers" + }, + { + "name": "normal", + "description": "The element is painted with the standard order of painting operations: the 'fill' is painted first, then its 'stroke' and finally its markers." + }, + { + "name": "stroke" + } + ], + "syntax": "normal | [ fill || stroke || markers ]", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/paint-order" + } + ], + "description": "Controls the order that the three paint operations that shapes and text are rendered with: their fill, their stroke and any markers they might have.", + "restrictions": [ + "enum" + ] + }, + { + "name": "perspective", + "browsers": [ + "E12", + "FF16", + "S9", + "C36", + "IE10", + "O23" + ], + "values": [ + { + "name": "none", + "description": "No perspective transform is applied." + } + ], + "syntax": "none | <length>", + "relevance": 54, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/perspective" + } + ], + "description": "Applies the same transform as the perspective(<number>) transform function, except that it applies only to the positioned or transformed children of the element, not to the transform on the element itself.", + "restrictions": [ + "length", + "enum" + ] + }, + { + "name": "perspective-origin", + "browsers": [ + "E12", + "FF16", + "S9", + "C36", + "IE10", + "O23" + ], + "syntax": "<position>", + "relevance": 51, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/perspective-origin" + } + ], + "description": "Establishes the origin for the perspective property. It effectively sets the X and Y position at which the viewer appears to be looking at the children of the element.", + "restrictions": [ + "position", + "percentage", + "length" + ] + }, + { + "name": "pointer-events", + "browsers": [ + "E12", + "FF1.5", + "S4", + "C1", + "IE11", + "O9" + ], + "values": [ + { + "name": "all", + "description": "The given element can be the target element for pointer events whenever the pointer is over either the interior or the perimeter of the element." + }, + { + "name": "fill", + "description": "The given element can be the target element for pointer events whenever the pointer is over the interior of the element." + }, + { + "name": "none", + "description": "The given element does not receive pointer events." + }, + { + "name": "painted", + "description": "The given element can be the target element for pointer events when the pointer is over a \"painted\" area. " + }, + { + "name": "stroke", + "description": "The given element can be the target element for pointer events whenever the pointer is over the perimeter of the element." + }, + { + "name": "visible", + "description": "The given element can be the target element for pointer events when the 'visibility' property is set to visible and the pointer is over either the interior or the perimeter of the element." + }, + { + "name": "visibleFill", + "description": "The given element can be the target element for pointer events when the 'visibility' property is set to visible and when the pointer is over the interior of the element." + }, + { + "name": "visiblePainted", + "description": "The given element can be the target element for pointer events when the 'visibility' property is set to visible and when the pointer is over a 'painted' area." + }, + { + "name": "visibleStroke", + "description": "The given element can be the target element for pointer events when the 'visibility' property is set to visible and when the pointer is over the perimeter of the element." + } + ], + "syntax": "auto | none | visiblePainted | visibleFill | visibleStroke | visible | painted | fill | stroke | all | inherit", + "relevance": 82, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/pointer-events" + } + ], + "description": "Specifies under what circumstances a given element can be the target element for a pointer event.", + "restrictions": [ + "enum" + ] + }, + { + "name": "position", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O4" + ], + "values": [ + { + "name": "absolute", + "description": "The box's position (and possibly size) is specified with the 'top', 'right', 'bottom', and 'left' properties. These properties specify offsets with respect to the box's 'containing block'." + }, + { + "name": "fixed", + "description": "The box's position is calculated according to the 'absolute' model, but in addition, the box is fixed with respect to some reference. As with the 'absolute' model, the box's margins do not collapse with any other margins." + }, + { + "name": "-ms-page", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O4" + ], + "description": "The box's position is calculated according to the 'absolute' model." + }, + { + "name": "relative", + "description": "The box's position is calculated according to the normal flow (this is called the position in normal flow). Then the box is offset relative to its normal position." + }, + { + "name": "static", + "description": "The box is a normal box, laid out according to the normal flow. The 'top', 'right', 'bottom', and 'left' properties do not apply." + }, + { + "name": "sticky", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O4" + ], + "description": "The box's position is calculated according to the normal flow. Then the box is offset relative to its flow root and containing block and in all cases, including table elements, does not affect the position of any following boxes." + }, + { + "name": "-webkit-sticky", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O4" + ], + "description": "The box's position is calculated according to the normal flow. Then the box is offset relative to its flow root and containing block and in all cases, including table elements, does not affect the position of any following boxes." + } + ], + "syntax": "static | relative | absolute | sticky | fixed", + "relevance": 95, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/position" + } + ], + "description": "The position CSS property sets how an element is positioned in a document. The top, right, bottom, and left properties determine the final location of positioned elements.", + "restrictions": [ + "enum" + ] + }, + { + "name": "prefix", + "browsers": [ + "FF33" + ], + "atRule": "@counter-style", + "syntax": "<symbol>", + "relevance": 50, + "description": "@counter-style descriptor. Specifies a <symbol> that is prepended to the marker representation.", + "restrictions": [ + "image", + "string", + "identifier" + ] + }, + { + "name": "quotes", + "browsers": [ + "E12", + "FF1.5", + "S9", + "C11", + "IE8", + "O4" + ], + "values": [ + { + "name": "none", + "description": "The 'open-quote' and 'close-quote' values of the 'content' property produce no quotations marks, as if they were 'no-open-quote' and 'no-close-quote' respectively." + } + ], + "syntax": "none | auto | [ <string> <string> ]+", + "relevance": 53, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/quotes" + } + ], + "description": "Specifies quotation marks for any number of embedded quotations.", + "restrictions": [ + "string" + ] + }, + { + "name": "range", + "browsers": [ + "FF33" + ], + "values": [ + { + "name": "auto", + "description": "The range depends on the counter system." + }, + { + "name": "infinite", + "description": "If used as the first value in a range, it represents negative infinity; if used as the second value, it represents positive infinity." + } + ], + "atRule": "@counter-style", + "syntax": "[ [ <integer> | infinite ]{2} ]# | auto", + "relevance": 50, + "description": "@counter-style descriptor. Defines the ranges over which the counter style is defined.", + "restrictions": [ + "integer", + "enum" + ] + }, + { + "name": "resize", + "browsers": [ + "E79", + "FF4", + "S3", + "C1", + "O12.1" + ], + "values": [ + { + "name": "both", + "description": "The UA presents a bidirectional resizing mechanism to allow the user to adjust both the height and the width of the element." + }, + { + "name": "horizontal", + "description": "The UA presents a unidirectional horizontal resizing mechanism to allow the user to adjust only the width of the element." + }, + { + "name": "none", + "description": "The UA does not present a resizing mechanism on the element, and the user is given no direct manipulation mechanism to resize the element." + }, + { + "name": "vertical", + "description": "The UA presents a unidirectional vertical resizing mechanism to allow the user to adjust only the height of the element." + } + ], + "syntax": "none | both | horizontal | vertical | block | inline", + "relevance": 64, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/resize" + } + ], + "description": "Specifies whether or not an element is resizable by the user, and if so, along which axis/axes.", + "restrictions": [ + "enum" + ] + }, + { + "name": "right", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE5.5", + "O5" + ], + "values": [ + { + "name": "auto", + "description": "For non-replaced elements, the effect of this value depends on which of related properties have the value 'auto' as well" + } + ], + "syntax": "<length> | <percentage> | auto", + "relevance": 91, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/right" + } + ], + "description": "Specifies how far an absolutely positioned box's right margin edge is offset to the left of the right edge of the box's 'containing block'.", + "restrictions": [ + "length", + "percentage" + ] + }, + { + "name": "ruby-align", + "browsers": [ + "FF38" + ], + "values": [ + { + "name": "auto", + "browsers": [ + "FF38" + ], + "description": "The user agent determines how the ruby contents are aligned. This is the initial value." + }, + { + "name": "center", + "description": "The ruby content is centered within its box." + }, + { + "name": "distribute-letter", + "browsers": [ + "FF38" + ], + "description": "If the width of the ruby text is smaller than that of the base, then the ruby text contents are evenly distributed across the width of the base, with the first and last ruby text glyphs lining up with the corresponding first and last base glyphs. If the width of the ruby text is at least the width of the base, then the letters of the base are evenly distributed across the width of the ruby text." + }, + { + "name": "distribute-space", + "browsers": [ + "FF38" + ], + "description": "If the width of the ruby text is smaller than that of the base, then the ruby text contents are evenly distributed across the width of the base, with a certain amount of white space preceding the first and following the last character in the ruby text. That amount of white space is normally equal to half the amount of inter-character space of the ruby text." + }, + { + "name": "left", + "description": "The ruby text content is aligned with the start edge of the base." + }, + { + "name": "line-edge", + "browsers": [ + "FF38" + ], + "description": "If the ruby text is not adjacent to a line edge, it is aligned as in 'auto'. If it is adjacent to a line edge, then it is still aligned as in auto, but the side of the ruby text that touches the end of the line is lined up with the corresponding edge of the base." + }, + { + "name": "right", + "browsers": [ + "FF38" + ], + "description": "The ruby text content is aligned with the end edge of the base." + }, + { + "name": "start", + "browsers": [ + "FF38" + ], + "description": "The ruby text content is aligned with the start edge of the base." + }, + { + "name": "space-between", + "browsers": [ + "FF38" + ], + "description": "The ruby content expands as defined for normal text justification (as defined by 'text-justify')," + }, + { + "name": "space-around", + "browsers": [ + "FF38" + ], + "description": "As for 'space-between' except that there exists an extra justification opportunities whose space is distributed half before and half after the ruby content." + } + ], + "status": "experimental", + "syntax": "start | center | space-between | space-around", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/ruby-align" + } + ], + "description": "Specifies how text is distributed within the various ruby boxes when their contents do not exactly fill their respective boxes.", + "restrictions": [ + "enum" + ] + }, + { + "name": "ruby-overhang", + "browsers": [ + "FF10", + "IE5" + ], + "values": [ + { + "name": "auto", + "description": "The ruby text can overhang text adjacent to the base on either side. This is the initial value." + }, + { + "name": "end", + "description": "The ruby text can overhang the text that follows it." + }, + { + "name": "none", + "description": "The ruby text cannot overhang any text adjacent to its base, only its own base." + }, + { + "name": "start", + "description": "The ruby text can overhang the text that precedes it." + } + ], + "relevance": 50, + "description": "Determines whether, and on which side, ruby text is allowed to partially overhang any adjacent text in addition to its own base, when the ruby text is wider than the ruby base.", + "restrictions": [ + "enum" + ] + }, + { + "name": "ruby-position", + "browsers": [ + "E84", + "FF38", + "S7", + "C84", + "O70" + ], + "values": [ + { + "name": "after", + "description": "The ruby text appears after the base. This is a relatively rare setting used in ideographic East Asian writing systems, most easily found in educational text." + }, + { + "name": "before", + "description": "The ruby text appears before the base. This is the most common setting used in ideographic East Asian writing systems." + }, + { + "name": "inline" + }, + { + "name": "right", + "description": "The ruby text appears on the right of the base. Unlike 'before' and 'after', this value is not relative to the text flow direction." + } + ], + "syntax": "[ alternate || [ over | under ] ] | inter-character", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/ruby-position" + } + ], + "description": "Used by the parent of elements with display: ruby-text to control the position of the ruby text with respect to its base.", + "restrictions": [ + "enum" + ] + }, + { + "name": "ruby-span", + "browsers": [ + "FF10" + ], + "values": [ + { + "name": "attr(x)", + "description": "The value of attribute 'x' is a string value. The string value is evaluated as a <number> to determine the number of ruby base elements to be spanned by the annotation element." + }, + { + "name": "none", + "description": "No spanning. The computed value is '1'." + } + ], + "relevance": 50, + "description": "Determines whether, and on which side, ruby text is allowed to partially overhang any adjacent text in addition to its own base, when the ruby text is wider than the ruby base.", + "restrictions": [ + "enum" + ] + }, + { + "name": "scrollbar-3dlight-color", + "browsers": [ + "IE5" + ], + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/scrollbar-3dlight-color" + } + ], + "description": "Determines the color of the top and left edges of the scroll box and scroll arrows of a scroll bar.", + "restrictions": [ + "color" + ] + }, + { + "name": "scrollbar-arrow-color", + "browsers": [ + "IE5" + ], + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/scrollbar-arrow-color" + } + ], + "description": "Determines the color of the arrow elements of a scroll arrow.", + "restrictions": [ + "color" + ] + }, + { + "name": "scrollbar-base-color", + "browsers": [ + "IE5" + ], + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/scrollbar-base-color" + } + ], + "description": "Determines the color of the main elements of a scroll bar, which include the scroll box, track, and scroll arrows.", + "restrictions": [ + "color" + ] + }, + { + "name": "scrollbar-darkshadow-color", + "browsers": [ + "IE5" + ], + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/scrollbar-darkshadow-color" + } + ], + "description": "Determines the color of the gutter of a scroll bar.", + "restrictions": [ + "color" + ] + }, + { + "name": "scrollbar-face-color", + "browsers": [ + "IE5" + ], + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/scrollbar-face-color" + } + ], + "description": "Determines the color of the scroll box and scroll arrows of a scroll bar.", + "restrictions": [ + "color" + ] + }, + { + "name": "scrollbar-highlight-color", + "browsers": [ + "IE5" + ], + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/scrollbar-highlight-color" + } + ], + "description": "Determines the color of the top and left edges of the scroll box and scroll arrows of a scroll bar.", + "restrictions": [ + "color" + ] + }, + { + "name": "scrollbar-shadow-color", + "browsers": [ + "IE5" + ], + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/scrollbar-shadow-color" + } + ], + "description": "Determines the color of the bottom and right edges of the scroll box and scroll arrows of a scroll bar.", + "restrictions": [ + "color" + ] + }, + { + "name": "scrollbar-track-color", + "browsers": [ + "IE6" + ], + "relevance": 50, + "description": "Determines the color of the track element of a scroll bar.", + "restrictions": [ + "color" + ] + }, + { + "name": "scroll-behavior", + "browsers": [ + "E79", + "FF36", + "S15.4", + "C61", + "O48" + ], + "values": [ + { + "name": "auto", + "description": "Scrolls in an instant fashion." + }, + { + "name": "smooth", + "description": "Scrolls in a smooth fashion using a user-agent-defined timing function and time period." + } + ], + "syntax": "auto | smooth", + "relevance": 55, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/scroll-behavior" + } + ], + "description": "Specifies the scrolling behavior for a scrolling box, when scrolling happens due to navigation or CSSOM scrolling APIs.", + "restrictions": [ + "enum" + ] + }, + { + "name": "scroll-snap-coordinate", + "browsers": [ + "FF39" + ], + "values": [ + { + "name": "none", + "description": "Specifies that this element does not contribute a snap point." + } + ], + "status": "obsolete", + "syntax": "none | <position>#", + "relevance": 0, + "description": "Defines the x and y coordinate within the element which will align with the nearest ancestor scroll container's snap-destination for the respective axis.", + "restrictions": [ + "position", + "length", + "percentage", + "enum" + ] + }, + { + "name": "scroll-snap-destination", + "browsers": [ + "FF39" + ], + "status": "obsolete", + "syntax": "<position>", + "relevance": 0, + "description": "Define the x and y coordinate within the scroll container's visual viewport which element snap points will align with.", + "restrictions": [ + "position", + "length", + "percentage" + ] + }, + { + "name": "scroll-snap-points-x", + "browsers": [ + "FF39" + ], + "values": [ + { + "name": "none", + "description": "No snap points are defined by this scroll container." + }, + { + "name": "repeat()", + "description": "Defines an interval at which snap points are defined, starting from the container's relevant start edge." + } + ], + "status": "obsolete", + "syntax": "none | repeat( <length-percentage> )", + "relevance": 0, + "description": "Defines the positioning of snap points along the x axis of the scroll container it is applied to.", + "restrictions": [ + "enum" + ] + }, + { + "name": "scroll-snap-points-y", + "browsers": [ + "FF39" + ], + "values": [ + { + "name": "none", + "description": "No snap points are defined by this scroll container." + }, + { + "name": "repeat()", + "description": "Defines an interval at which snap points are defined, starting from the container's relevant start edge." + } + ], + "status": "obsolete", + "syntax": "none | repeat( <length-percentage> )", + "relevance": 0, + "description": "Defines the positioning of snap points along the y axis of the scroll container it is applied to.", + "restrictions": [ + "enum" + ] + }, + { + "name": "scroll-snap-type", + "browsers": [ + "E79", + "FF99", + "S11", + "C69", + "IE10", + "O56" + ], + "values": [ + { + "name": "none", + "description": "The visual viewport of this scroll container must ignore snap points, if any, when scrolled." + }, + { + "name": "mandatory", + "description": "The visual viewport of this scroll container is guaranteed to rest on a snap point when there are no active scrolling operations." + }, + { + "name": "proximity", + "description": "The visual viewport of this scroll container may come to rest on a snap point at the termination of a scroll at the discretion of the UA given the parameters of the scroll." + } + ], + "syntax": "none | [ x | y | block | inline | both ] [ mandatory | proximity ]?", + "relevance": 54, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/scroll-snap-type" + } + ], + "description": "Defines how strictly snap points are enforced on the scroll container.", + "restrictions": [ + "enum" + ] + }, + { + "name": "shape-image-threshold", + "browsers": [ + "E79", + "FF62", + "S10.1", + "C37", + "O24" + ], + "syntax": "<alpha-value>", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/shape-image-threshold" + } + ], + "description": "Defines the alpha channel threshold used to extract the shape using an image. A value of 0.5 means that the shape will enclose all the pixels that are more than 50% opaque.", + "restrictions": [ + "number" + ] + }, + { + "name": "shape-margin", + "browsers": [ + "E79", + "FF62", + "S10.1", + "C37", + "O24" + ], + "syntax": "<length-percentage>", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/shape-margin" + } + ], + "description": "Adds a margin to a 'shape-outside'. This defines a new shape that is the smallest contour that includes all the points that are the 'shape-margin' distance outward in the perpendicular direction from a point on the underlying shape.", + "restrictions": [ + "url", + "length", + "percentage" + ] + }, + { + "name": "shape-outside", + "browsers": [ + "E79", + "FF62", + "S10.1", + "C37", + "O24" + ], + "values": [ + { + "name": "margin-box", + "description": "The background is painted within (clipped to) the margin box." + }, + { + "name": "none", + "description": "The float area is unaffected." + } + ], + "syntax": "none | [ <shape-box> || <basic-shape> ] | <image>", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/shape-outside" + } + ], + "description": "Specifies an orthogonal rotation to be applied to an image before it is laid out.", + "restrictions": [ + "image", + "box", + "shape", + "enum" + ] + }, + { + "name": "shape-rendering", + "values": [ + { + "name": "auto", + "description": "Suppresses aural rendering." + }, + { + "name": "crispEdges", + "description": "Emphasize the contrast between clean edges of artwork over rendering speed and geometric precision." + }, + { + "name": "geometricPrecision", + "description": "Emphasize geometric precision over speed and crisp edges." + }, + { + "name": "optimizeSpeed", + "description": "Emphasize rendering speed over geometric precision and crisp edges." + } + ], + "relevance": 50, + "description": "Provides hints about what tradeoffs to make as it renders vector graphics elements such as <path> elements and basic shapes such as circles and rectangles.", + "restrictions": [ + "enum" + ] + }, + { + "name": "size", + "browsers": [ + "C", + "O8" + ], + "atRule": "@page", + "syntax": "<length>{1,2} | auto | [ <page-size> || [ portrait | landscape ] ]", + "relevance": 53, + "description": "The size CSS at-rule descriptor, used with the @page at-rule, defines the size and orientation of the box which is used to represent a page. Most of the time, this size corresponds to the target size of the printed page if applicable.", + "restrictions": [ + "length" + ] + }, + { + "name": "src", + "values": [ + { + "name": "url()", + "description": "Reference font by URL" + }, + { + "name": "format()", + "description": "Optional hint describing the format of the font resource." + }, + { + "name": "local()", + "description": "Format-specific string that identifies a locally available copy of a given font." + } + ], + "atRule": "@font-face", + "syntax": "[ <url> [ format( <string># ) ]? | local( <family-name> ) ]#", + "relevance": 86, + "description": "@font-face descriptor. Specifies the resource containing font data. It is required, whether the font is downloadable or locally installed.", + "restrictions": [ + "enum", + "url", + "identifier" + ] + }, + { + "name": "stop-color", + "relevance": 50, + "description": "Indicates what color to use at that gradient stop.", + "restrictions": [ + "color" + ] + }, + { + "name": "stop-opacity", + "relevance": 50, + "description": "Defines the opacity of a given gradient stop.", + "restrictions": [ + "number(0-1)" + ] + }, + { + "name": "stroke", + "values": [ + { + "name": "url()", + "description": "A URL reference to a paint server element, which is an element that defines a paint server: 'hatch', 'linearGradient', 'mesh', 'pattern', 'radialGradient' and 'solidcolor'." + }, + { + "name": "none", + "description": "No paint is applied in this layer." + } + ], + "relevance": 66, + "description": "Paints along the outline of the given graphical element.", + "restrictions": [ + "color", + "enum", + "url" + ] + }, + { + "name": "stroke-dasharray", + "values": [ + { + "name": "none", + "description": "Indicates that no dashing is used." + } + ], + "relevance": 61, + "description": "Controls the pattern of dashes and gaps used to stroke paths.", + "restrictions": [ + "length", + "percentage", + "number", + "enum" + ] + }, + { + "name": "stroke-dashoffset", + "relevance": 62, + "description": "Specifies the distance into the dash pattern to start the dash.", + "restrictions": [ + "percentage", + "length" + ] + }, + { + "name": "stroke-linecap", + "values": [ + { + "name": "butt", + "description": "Indicates that the stroke for each subpath does not extend beyond its two endpoints." + }, + { + "name": "round", + "description": "Indicates that at each end of each subpath, the shape representing the stroke will be extended by a half circle with a radius equal to the stroke width." + }, + { + "name": "square", + "description": "Indicates that at the end of each subpath, the shape representing the stroke will be extended by a rectangle with the same width as the stroke width and whose length is half of the stroke width." + } + ], + "relevance": 53, + "description": "Specifies the shape to be used at the end of open subpaths when they are stroked.", + "restrictions": [ + "enum" + ] + }, + { + "name": "stroke-linejoin", + "values": [ + { + "name": "bevel", + "description": "Indicates that a bevelled corner is to be used to join path segments." + }, + { + "name": "miter", + "description": "Indicates that a sharp corner is to be used to join path segments." + }, + { + "name": "round", + "description": "Indicates that a round corner is to be used to join path segments." + } + ], + "relevance": 51, + "description": "Specifies the shape to be used at the corners of paths or basic shapes when they are stroked.", + "restrictions": [ + "enum" + ] + }, + { + "name": "stroke-miterlimit", + "relevance": 51, + "description": "When two line segments meet at a sharp angle and miter joins have been specified for 'stroke-linejoin', it is possible for the miter to extend far beyond the thickness of the line stroking the path.", + "restrictions": [ + "number" + ] + }, + { + "name": "stroke-opacity", + "relevance": 52, + "description": "Specifies the opacity of the painting operation used to stroke the current object.", + "restrictions": [ + "number(0-1)" + ] + }, + { + "name": "stroke-width", + "relevance": 63, + "description": "Specifies the width of the stroke on the current object.", + "restrictions": [ + "percentage", + "length" + ] + }, + { + "name": "suffix", + "browsers": [ + "FF33" + ], + "atRule": "@counter-style", + "syntax": "<symbol>", + "relevance": 50, + "description": "@counter-style descriptor. Specifies a <symbol> that is appended to the marker representation.", + "restrictions": [ + "image", + "string", + "identifier" + ] + }, + { + "name": "system", + "browsers": [ + "FF33" + ], + "values": [ + { + "name": "additive", + "description": "Represents \"sign-value\" numbering systems, which, rather than using reusing digits in different positions to change their value, define additional digits with much larger values, so that the value of the number can be obtained by adding all the digits together." + }, + { + "name": "alphabetic", + "description": "Interprets the list of counter symbols as digits to an alphabetic numbering system, similar to the default lower-alpha counter style, which wraps from \"a\", \"b\", \"c\", to \"aa\", \"ab\", \"ac\"." + }, + { + "name": "cyclic", + "description": "Cycles repeatedly through its provided symbols, looping back to the beginning when it reaches the end of the list." + }, + { + "name": "extends", + "description": "Use the algorithm of another counter style, but alter other aspects." + }, + { + "name": "fixed", + "description": "Runs through its list of counter symbols once, then falls back." + }, + { + "name": "numeric", + "description": "interprets the list of counter symbols as digits to a \"place-value\" numbering system, similar to the default 'decimal' counter style." + }, + { + "name": "symbolic", + "description": "Cycles repeatedly through its provided symbols, doubling, tripling, etc. the symbols on each successive pass through the list." + } + ], + "atRule": "@counter-style", + "syntax": "cyclic | numeric | alphabetic | symbolic | additive | [ fixed <integer>? ] | [ extends <counter-style-name> ]", + "relevance": 50, + "description": "@counter-style descriptor. Specifies which algorithm will be used to construct the counter's representation based on the counter value.", + "restrictions": [ + "enum", + "integer" + ] + }, + { + "name": "symbols", + "browsers": [ + "FF33" + ], + "atRule": "@counter-style", + "syntax": "<symbol>+", + "relevance": 50, + "description": "@counter-style descriptor. Specifies the symbols used by the marker-construction algorithm specified by the system descriptor.", + "restrictions": [ + "image", + "string", + "identifier" + ] + }, + { + "name": "table-layout", + "browsers": [ + "E12", + "FF1", + "S1", + "C14", + "IE5", + "O7" + ], + "values": [ + { + "name": "auto", + "description": "Use any automatic table layout algorithm." + }, + { + "name": "fixed", + "description": "Use the fixed table layout algorithm." + } + ], + "syntax": "auto | fixed", + "relevance": 60, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/table-layout" + } + ], + "description": "Controls the algorithm used to lay out the table cells, rows, and columns.", + "restrictions": [ + "enum" + ] + }, + { + "name": "tab-size", + "browsers": [ + "E79", + "FF91", + "S7", + "C21", + "O15" + ], + "syntax": "<integer> | <length>", + "relevance": 53, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/tab-size" + } + ], + "description": "Determines the width of the tab character (U+0009), in space characters (U+0020), when rendered.", + "restrictions": [ + "integer", + "length" + ] + }, + { + "name": "text-align", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE3", + "O3.5" + ], + "values": [ + { + "name": "center", + "description": "The inline contents are centered within the line box." + }, + { + "name": "end", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE3", + "O3.5" + ], + "description": "The inline contents are aligned to the end edge of the line box." + }, + { + "name": "justify", + "description": "The text is justified according to the method specified by the 'text-justify' property." + }, + { + "name": "left", + "description": "The inline contents are aligned to the left edge of the line box. In vertical text, 'left' aligns to the edge of the line box that would be the start edge for left-to-right text." + }, + { + "name": "right", + "description": "The inline contents are aligned to the right edge of the line box. In vertical text, 'right' aligns to the edge of the line box that would be the end edge for left-to-right text." + }, + { + "name": "start", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE3", + "O3.5" + ], + "description": "The inline contents are aligned to the start edge of the line box." + } + ], + "syntax": "start | end | left | right | center | justify | match-parent", + "relevance": 93, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/text-align" + } + ], + "description": "Describes how inline contents of a block are horizontally aligned if the contents do not completely fill the line box.", + "restrictions": [ + "string" + ] + }, + { + "name": "text-align-last", + "browsers": [ + "E12", + "FF49", + "S16", + "C47", + "IE5.5", + "O34" + ], + "values": [ + { + "name": "auto", + "description": "Content on the affected line is aligned per 'text-align' unless 'text-align' is set to 'justify', in which case it is 'start-aligned'." + }, + { + "name": "center", + "description": "The inline contents are centered within the line box." + }, + { + "name": "justify", + "description": "The text is justified according to the method specified by the 'text-justify' property." + }, + { + "name": "left", + "description": "The inline contents are aligned to the left edge of the line box. In vertical text, 'left' aligns to the edge of the line box that would be the start edge for left-to-right text." + }, + { + "name": "right", + "description": "The inline contents are aligned to the right edge of the line box. In vertical text, 'right' aligns to the edge of the line box that would be the end edge for left-to-right text." + } + ], + "syntax": "auto | start | end | left | right | center | justify", + "relevance": 51, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/text-align-last" + } + ], + "description": "Describes how the last line of a block or a line right before a forced line break is aligned when 'text-align' is set to 'justify'.", + "restrictions": [ + "enum" + ] + }, + { + "name": "text-anchor", + "values": [ + { + "name": "end", + "description": "The rendered characters are aligned such that the end of the resulting rendered text is at the initial current text position." + }, + { + "name": "middle", + "description": "The rendered characters are aligned such that the geometric middle of the resulting rendered text is at the initial current text position." + }, + { + "name": "start", + "description": "The rendered characters are aligned such that the start of the resulting rendered text is at the initial current text position." + } + ], + "relevance": 50, + "description": "Used to align (start-, middle- or end-alignment) a string of text relative to a given point.", + "restrictions": [ + "enum" + ] + }, + { + "name": "text-decoration", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE3", + "O3.5" + ], + "values": [ + { + "name": "dashed", + "description": "Produces a dashed line style." + }, + { + "name": "dotted", + "description": "Produces a dotted line." + }, + { + "name": "double", + "description": "Produces a double line." + }, + { + "name": "line-through", + "description": "Each line of text has a line through the middle." + }, + { + "name": "none", + "description": "Produces no line." + }, + { + "name": "overline", + "description": "Each line of text has a line above it." + }, + { + "name": "solid", + "description": "Produces a solid line." + }, + { + "name": "underline", + "description": "Each line of text is underlined." + }, + { + "name": "wavy", + "description": "Produces a wavy line." + } + ], + "syntax": "<'text-decoration-line'> || <'text-decoration-style'> || <'text-decoration-color'> || <'text-decoration-thickness'>", + "relevance": 91, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/text-decoration" + } + ], + "description": "Decorations applied to font used for an element's text.", + "restrictions": [ + "enum", + "color" + ] + }, + { + "name": "text-decoration-color", + "browsers": [ + "E79", + "FF36", + "S12.1", + "C57", + "O44" + ], + "syntax": "<color>", + "relevance": 55, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/text-decoration-color" + } + ], + "description": "Specifies the color of text decoration (underlines overlines, and line-throughs) set on the element with text-decoration-line.", + "restrictions": [ + "color" + ] + }, + { + "name": "text-decoration-line", + "browsers": [ + "E79", + "FF36", + "S12.1", + "C57", + "O44" + ], + "values": [ + { + "name": "line-through", + "description": "Each line of text has a line through the middle." + }, + { + "name": "none", + "description": "Neither produces nor inhibits text decoration." + }, + { + "name": "overline", + "description": "Each line of text has a line above it." + }, + { + "name": "underline", + "description": "Each line of text is underlined." + } + ], + "syntax": "none | [ underline || overline || line-through || blink ] | spelling-error | grammar-error", + "relevance": 57, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/text-decoration-line" + } + ], + "description": "Specifies what line decorations, if any, are added to the element.", + "restrictions": [ + "enum" + ] + }, + { + "name": "text-decoration-style", + "browsers": [ + "E79", + "FF36", + "S12.1", + "C57", + "O44" + ], + "values": [ + { + "name": "dashed", + "description": "Produces a dashed line style." + }, + { + "name": "dotted", + "description": "Produces a dotted line." + }, + { + "name": "double", + "description": "Produces a double line." + }, + { + "name": "none", + "description": "Produces no line." + }, + { + "name": "solid", + "description": "Produces a solid line." + }, + { + "name": "wavy", + "description": "Produces a wavy line." + } + ], + "syntax": "solid | double | dotted | dashed | wavy", + "relevance": 51, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/text-decoration-style" + } + ], + "description": "Specifies the line style for underline, line-through and overline text decoration.", + "restrictions": [ + "enum" + ] + }, + { + "name": "text-indent", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE3", + "O3.5" + ], + "values": [], + "syntax": "<length-percentage> && hanging? && each-line?", + "relevance": 68, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/text-indent" + } + ], + "description": "Specifies the indentation applied to lines of inline content in a block. The indentation only affects the first line of inline content in the block unless the 'hanging' keyword is specified, in which case it affects all lines except the first.", + "restrictions": [ + "percentage", + "length" + ] + }, + { + "name": "text-justify", + "browsers": [ + "E79", + "FF55", + "C32", + "IE11", + "O19" + ], + "values": [ + { + "name": "auto", + "description": "The UA determines the justification algorithm to follow, based on a balance between performance and adequate presentation quality." + }, + { + "name": "distribute", + "description": "Justification primarily changes spacing both at word separators and at grapheme cluster boundaries in all scripts except those in the connected and cursive groups. This value is sometimes used in e.g. Japanese, often with the 'text-align-last' property." + }, + { + "name": "distribute-all-lines" + }, + { + "name": "inter-cluster", + "description": "Justification primarily changes spacing at word separators and at grapheme cluster boundaries in clustered scripts. This value is typically used for Southeast Asian scripts such as Thai." + }, + { + "name": "inter-ideograph", + "description": "Justification primarily changes spacing at word separators and at inter-graphemic boundaries in scripts that use no word spaces. This value is typically used for CJK languages." + }, + { + "name": "inter-word", + "description": "Justification primarily changes spacing at word separators. This value is typically used for languages that separate words using spaces, like English or (sometimes) Korean." + }, + { + "name": "kashida", + "description": "Justification primarily stretches Arabic and related scripts through the use of kashida or other calligraphic elongation." + }, + { + "name": "newspaper" + } + ], + "syntax": "auto | inter-character | inter-word | none", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/text-justify" + } + ], + "description": "Selects the justification algorithm used when 'text-align' is set to 'justify'. The property applies to block containers, but the UA may (but is not required to) also support it on inline elements.", + "restrictions": [ + "enum" + ] + }, + { + "name": "text-orientation", + "browsers": [ + "E79", + "FF41", + "S14", + "C48", + "O35" + ], + "values": [ + { + "name": "sideways", + "browsers": [ + "E79", + "FF41", + "S14", + "C48", + "O35" + ], + "description": "This value is equivalent to 'sideways-right' in 'vertical-rl' writing mode and equivalent to 'sideways-left' in 'vertical-lr' writing mode." + }, + { + "name": "sideways-right", + "browsers": [ + "E79", + "FF41", + "S14", + "C48", + "O35" + ], + "description": "In vertical writing modes, this causes text to be set as if in a horizontal layout, but rotated 90° clockwise." + }, + { + "name": "upright", + "description": "In vertical writing modes, characters from horizontal-only scripts are rendered upright, i.e. in their standard horizontal orientation." + } + ], + "syntax": "mixed | upright | sideways", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/text-orientation" + } + ], + "description": "Specifies the orientation of text within a line.", + "restrictions": [ + "enum" + ] + }, + { + "name": "text-overflow", + "browsers": [ + "E12", + "FF7", + "S1.3", + "C1", + "IE6", + "O11" + ], + "values": [ + { + "name": "clip", + "description": "Clip inline content that overflows. Characters may be only partially rendered." + }, + { + "name": "ellipsis", + "description": "Render an ellipsis character (U+2026) to represent clipped inline content." + } + ], + "syntax": "[ clip | ellipsis | <string> ]{1,2}", + "relevance": 81, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/text-overflow" + } + ], + "description": "Text can overflow for example when it is prevented from wrapping.", + "restrictions": [ + "enum", + "string" + ] + }, + { + "name": "text-rendering", + "browsers": [ + "E79", + "FF1", + "S5", + "C4", + "O15" + ], + "values": [ + { + "name": "auto" + }, + { + "name": "geometricPrecision", + "description": "Indicates that the user agent shall emphasize geometric precision over legibility and rendering speed." + }, + { + "name": "optimizeLegibility", + "description": "Indicates that the user agent shall emphasize legibility over rendering speed and geometric precision." + }, + { + "name": "optimizeSpeed", + "description": "Indicates that the user agent shall emphasize rendering speed over legibility and geometric precision." + } + ], + "syntax": "auto | optimizeSpeed | optimizeLegibility | geometricPrecision", + "relevance": 69, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/text-rendering" + } + ], + "description": "The creator of SVG content might want to provide a hint to the implementation about what tradeoffs to make as it renders text. The 'text-rendering' property provides these hints.", + "restrictions": [ + "enum" + ] + }, + { + "name": "text-shadow", + "browsers": [ + "E12", + "FF3.5", + "S1.1", + "C2", + "IE10", + "O9.5" + ], + "values": [ + { + "name": "none", + "description": "No shadow." + } + ], + "syntax": "none | <shadow-t>#", + "relevance": 72, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/text-shadow" + } + ], + "description": "Enables shadow effects to be applied to the text of the element.", + "restrictions": [ + "length", + "color" + ] + }, + { + "name": "text-transform", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O7" + ], + "values": [ + { + "name": "capitalize", + "description": "Puts the first typographic letter unit of each word in titlecase." + }, + { + "name": "lowercase", + "description": "Puts all letters in lowercase." + }, + { + "name": "none", + "description": "No effects." + }, + { + "name": "uppercase", + "description": "Puts all letters in uppercase." + } + ], + "syntax": "none | capitalize | uppercase | lowercase | full-width | full-size-kana", + "relevance": 85, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/text-transform" + } + ], + "description": "Controls capitalization effects of an element's text.", + "restrictions": [ + "enum" + ] + }, + { + "name": "text-underline-position", + "browsers": [ + "E12", + "FF74", + "S12.1", + "C33", + "IE6", + "O20" + ], + "values": [ + { + "name": "above" + }, + { + "name": "auto", + "description": "The user agent may use any algorithm to determine the underline's position. In horizontal line layout, the underline should be aligned as for alphabetic. In vertical line layout, if the language is set to Japanese or Korean, the underline should be aligned as for over." + }, + { + "name": "below", + "description": "The underline is aligned with the under edge of the element's content box." + } + ], + "syntax": "auto | from-font | [ under || [ left | right ] ]", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/text-underline-position" + } + ], + "description": "Sets the position of an underline specified on the same element: it does not affect underlines specified by ancestor elements. This property is typically used in vertical writing contexts such as in Japanese documents where it often desired to have the underline appear 'over' (to the right of) the affected run of text", + "restrictions": [ + "enum" + ] + }, + { + "name": "top", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE5", + "O6" + ], + "values": [ + { + "name": "auto", + "description": "For non-replaced elements, the effect of this value depends on which of related properties have the value 'auto' as well" + } + ], + "syntax": "<length> | <percentage> | auto", + "relevance": 95, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/top" + } + ], + "description": "Specifies how far an absolutely positioned box's top margin edge is offset below the top edge of the box's 'containing block'.", + "restrictions": [ + "length", + "percentage" + ] + }, + { + "name": "touch-action", + "browsers": [ + "E12", + "FF52", + "S13", + "C36", + "IE11", + "O23" + ], + "values": [ + { + "name": "auto", + "description": "The user agent may determine any permitted touch behaviors for touches that begin on the element." + }, + { + "name": "cross-slide-x", + "browsers": [ + "E12", + "FF52", + "S13", + "C36", + "IE11", + "O23" + ] + }, + { + "name": "cross-slide-y", + "browsers": [ + "E12", + "FF52", + "S13", + "C36", + "IE11", + "O23" + ] + }, + { + "name": "double-tap-zoom", + "browsers": [ + "E12", + "FF52", + "S13", + "C36", + "IE11", + "O23" + ] + }, + { + "name": "manipulation", + "description": "The user agent may consider touches that begin on the element only for the purposes of scrolling and continuous zooming." + }, + { + "name": "none", + "description": "Touches that begin on the element must not trigger default touch behaviors." + }, + { + "name": "pan-x", + "description": "The user agent may consider touches that begin on the element only for the purposes of horizontally scrolling the element's nearest ancestor with horizontally scrollable content." + }, + { + "name": "pan-y", + "description": "The user agent may consider touches that begin on the element only for the purposes of vertically scrolling the element's nearest ancestor with vertically scrollable content." + }, + { + "name": "pinch-zoom", + "browsers": [ + "E12", + "FF52", + "S13", + "C36", + "IE11", + "O23" + ] + } + ], + "syntax": "auto | none | [ [ pan-x | pan-left | pan-right ] || [ pan-y | pan-up | pan-down ] || pinch-zoom ] | manipulation", + "relevance": 69, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/touch-action" + } + ], + "description": "Determines whether touch input may trigger default behavior supplied by user agent.", + "restrictions": [ + "enum" + ] + }, + { + "name": "transform", + "browsers": [ + "E12", + "FF16", + "S9", + "C36", + "IE10", + "O23" + ], + "values": [ + { + "name": "matrix()", + "description": "Specifies a 2D transformation in the form of a transformation matrix of six values. matrix(a,b,c,d,e,f) is equivalent to applying the transformation matrix [a b c d e f]" + }, + { + "name": "matrix3d()", + "description": "Specifies a 3D transformation as a 4x4 homogeneous matrix of 16 values in column-major order." + }, + { + "name": "none" + }, + { + "name": "perspective()", + "description": "Specifies a perspective projection matrix." + }, + { + "name": "rotate()", + "description": "Specifies a 2D rotation by the angle specified in the parameter about the origin of the element, as defined by the transform-origin property." + }, + { + "name": "rotate3d()", + "description": "Specifies a clockwise 3D rotation by the angle specified in last parameter about the [x,y,z] direction vector described by the first 3 parameters." + }, + { + "name": "rotateX('angle')", + "description": "Specifies a clockwise rotation by the given angle about the X axis." + }, + { + "name": "rotateY('angle')", + "description": "Specifies a clockwise rotation by the given angle about the Y axis." + }, + { + "name": "rotateZ('angle')", + "description": "Specifies a clockwise rotation by the given angle about the Z axis." + }, + { + "name": "scale()", + "description": "Specifies a 2D scale operation by the [sx,sy] scaling vector described by the 2 parameters. If the second parameter is not provided, it is takes a value equal to the first." + }, + { + "name": "scale3d()", + "description": "Specifies a 3D scale operation by the [sx,sy,sz] scaling vector described by the 3 parameters." + }, + { + "name": "scaleX()", + "description": "Specifies a scale operation using the [sx,1] scaling vector, where sx is given as the parameter." + }, + { + "name": "scaleY()", + "description": "Specifies a scale operation using the [sy,1] scaling vector, where sy is given as the parameter." + }, + { + "name": "scaleZ()", + "description": "Specifies a scale operation using the [1,1,sz] scaling vector, where sz is given as the parameter." + }, + { + "name": "skew()", + "description": "Specifies a skew transformation along the X and Y axes. The first angle parameter specifies the skew on the X axis. The second angle parameter specifies the skew on the Y axis. If the second parameter is not given then a value of 0 is used for the Y angle (ie: no skew on the Y axis)." + }, + { + "name": "skewX()", + "description": "Specifies a skew transformation along the X axis by the given angle." + }, + { + "name": "skewY()", + "description": "Specifies a skew transformation along the Y axis by the given angle." + }, + { + "name": "translate()", + "description": "Specifies a 2D translation by the vector [tx, ty], where tx is the first translation-value parameter and ty is the optional second translation-value parameter." + }, + { + "name": "translate3d()", + "description": "Specifies a 3D translation by the vector [tx,ty,tz], with tx, ty and tz being the first, second and third translation-value parameters respectively." + }, + { + "name": "translateX()", + "description": "Specifies a translation by the given amount in the X direction." + }, + { + "name": "translateY()", + "description": "Specifies a translation by the given amount in the Y direction." + }, + { + "name": "translateZ()", + "description": "Specifies a translation by the given amount in the Z direction. Note that percentage values are not allowed in the translateZ translation-value, and if present are evaluated as 0." + } + ], + "syntax": "none | <transform-list>", + "relevance": 90, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/transform" + } + ], + "description": "A two-dimensional transformation is applied to an element through the 'transform' property. This property contains a list of transform functions similar to those allowed by SVG.", + "restrictions": [ + "enum" + ] + }, + { + "name": "transform-origin", + "browsers": [ + "E12", + "FF16", + "S9", + "C36", + "IE10", + "O23" + ], + "syntax": "[ <length-percentage> | left | center | right | top | bottom ] | [ [ <length-percentage> | left | center | right ] && [ <length-percentage> | top | center | bottom ] ] <length>?", + "relevance": 76, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/transform-origin" + } + ], + "description": "Establishes the origin of transformation for an element.", + "restrictions": [ + "position", + "length", + "percentage" + ] + }, + { + "name": "transform-style", + "browsers": [ + "E12", + "FF16", + "S9", + "C36", + "O23" + ], + "values": [ + { + "name": "flat", + "description": "All children of this element are rendered flattened into the 2D plane of the element." + }, + { + "name": "preserve-3d", + "browsers": [ + "E12", + "FF16", + "S9", + "C36", + "O23" + ], + "description": "Flattening is not performed, so children maintain their position in 3D space." + } + ], + "syntax": "flat | preserve-3d", + "relevance": 55, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/transform-style" + } + ], + "description": "Defines how nested elements are rendered in 3D space.", + "restrictions": [ + "enum" + ] + }, + { + "name": "transition", + "browsers": [ + "E12", + "FF16", + "S9", + "C26", + "IE10", + "O12.1" + ], + "values": [ + { + "name": "all", + "description": "Every property that is able to undergo a transition will do so." + }, + { + "name": "none", + "description": "No property will transition." + } + ], + "syntax": "<single-transition>#", + "relevance": 88, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/transition" + } + ], + "description": "Shorthand property combines four of the transition properties into a single property.", + "restrictions": [ + "time", + "property", + "timing-function", + "enum" + ] + }, + { + "name": "transition-delay", + "browsers": [ + "E12", + "FF16", + "S9", + "C26", + "IE10", + "O12.1" + ], + "syntax": "<time>#", + "relevance": 63, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/transition-delay" + } + ], + "description": "Defines when the transition will start. It allows a transition to begin execution some period of time from when it is applied.", + "restrictions": [ + "time" + ] + }, + { + "name": "transition-duration", + "browsers": [ + "E12", + "FF16", + "S9", + "C26", + "IE10", + "O12.1" + ], + "syntax": "<time>#", + "relevance": 67, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/transition-duration" + } + ], + "description": "Specifies how long the transition from the old value to the new value should take.", + "restrictions": [ + "time" + ] + }, + { + "name": "transition-property", + "browsers": [ + "E12", + "FF16", + "S9", + "C26", + "IE10", + "O12.1" + ], + "values": [ + { + "name": "all", + "description": "Every property that is able to undergo a transition will do so." + }, + { + "name": "none", + "description": "No property will transition." + } + ], + "syntax": "none | <single-transition-property>#", + "relevance": 67, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/transition-property" + } + ], + "description": "Specifies the name of the CSS property to which the transition is applied.", + "restrictions": [ + "property" + ] + }, + { + "name": "transition-timing-function", + "browsers": [ + "E12", + "FF16", + "S9", + "C26", + "IE10", + "O12.1" + ], + "syntax": "<easing-function>#", + "relevance": 64, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/transition-timing-function" + } + ], + "description": "Describes how the intermediate values used during a transition will be calculated.", + "restrictions": [ + "timing-function" + ] + }, + { + "name": "unicode-bidi", + "browsers": [ + "E12", + "FF1", + "S1.3", + "C2", + "IE5.5", + "O9.2" + ], + "values": [ + { + "name": "bidi-override", + "description": "Inside the element, reordering is strictly in sequence according to the 'direction' property; the implicit part of the bidirectional algorithm is ignored." + }, + { + "name": "embed", + "description": "If the element is inline-level, this value opens an additional level of embedding with respect to the bidirectional algorithm. The direction of this embedding level is given by the 'direction' property." + }, + { + "name": "isolate", + "browsers": [ + "E12", + "FF1", + "S1.3", + "C2", + "IE5.5", + "O9.2" + ], + "description": "The contents of the element are considered to be inside a separate, independent paragraph." + }, + { + "name": "isolate-override", + "browsers": [ + "E12", + "FF1", + "S1.3", + "C2", + "IE5.5", + "O9.2" + ], + "description": "This combines the isolation behavior of 'isolate' with the directional override behavior of 'bidi-override'" + }, + { + "name": "normal", + "description": "The element does not open an additional level of embedding with respect to the bidirectional algorithm. For inline-level elements, implicit reordering works across element boundaries." + }, + { + "name": "plaintext", + "browsers": [ + "E12", + "FF1", + "S1.3", + "C2", + "IE5.5", + "O9.2" + ], + "description": "For the purposes of the Unicode bidirectional algorithm, the base directionality of each bidi paragraph for which the element forms the containing block is determined not by the element's computed 'direction'." + } + ], + "syntax": "normal | embed | isolate | bidi-override | isolate-override | plaintext", + "relevance": 56, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/unicode-bidi" + } + ], + "description": "The level of embedding with respect to the bidirectional algorithm.", + "restrictions": [ + "enum" + ] + }, + { + "name": "unicode-range", + "values": [ + { + "name": "U+26", + "description": "Ampersand." + }, + { + "name": "U+20-24F, U+2B0-2FF, U+370-4FF, U+1E00-1EFF, U+2000-20CF, U+2100-23FF, U+2500-26FF, U+E000-F8FF, U+FB00-FB4F", + "description": "WGL4 character set (Pan-European)." + }, + { + "name": "U+20-17F, U+2B0-2FF, U+2000-206F, U+20A0-20CF, U+2100-21FF, U+2600-26FF", + "description": "The Multilingual European Subset No. 1. Latin. Covers ~44 languages." + }, + { + "name": "U+20-2FF, U+370-4FF, U+1E00-20CF, U+2100-23FF, U+2500-26FF, U+FB00-FB4F, U+FFF0-FFFD", + "description": "The Multilingual European Subset No. 2. Latin, Greek, and Cyrillic. Covers ~128 language." + }, + { + "name": "U+20-4FF, U+530-58F, U+10D0-10FF, U+1E00-23FF, U+2440-245F, U+2500-26FF, U+FB00-FB4F, U+FE20-FE2F, U+FFF0-FFFD", + "description": "The Multilingual European Subset No. 3. Covers all characters belonging to European scripts." + }, + { + "name": "U+00-7F", + "description": "Basic Latin (ASCII)." + }, + { + "name": "U+80-FF", + "description": "Latin-1 Supplement. Accented characters for Western European languages, common punctuation characters, multiplication and division signs." + }, + { + "name": "U+100-17F", + "description": "Latin Extended-A. Accented characters for for Czech, Dutch, Polish, and Turkish." + }, + { + "name": "U+180-24F", + "description": "Latin Extended-B. Croatian, Slovenian, Romanian, Non-European and historic latin, Khoisan, Pinyin, Livonian, Sinology." + }, + { + "name": "U+1E00-1EFF", + "description": "Latin Extended Additional. Vietnamese, German captial sharp s, Medievalist, Latin general use." + }, + { + "name": "U+250-2AF", + "description": "International Phonetic Alphabet Extensions." + }, + { + "name": "U+370-3FF", + "description": "Greek and Coptic." + }, + { + "name": "U+1F00-1FFF", + "description": "Greek Extended. Accented characters for polytonic Greek." + }, + { + "name": "U+400-4FF", + "description": "Cyrillic." + }, + { + "name": "U+500-52F", + "description": "Cyrillic Supplement. Extra letters for Komi, Khanty, Chukchi, Mordvin, Kurdish, Aleut, Chuvash, Abkhaz, Azerbaijani, and Orok." + }, + { + "name": "U+00-52F, U+1E00-1FFF, U+2200-22FF", + "description": "Latin, Greek, Cyrillic, some punctuation and symbols." + }, + { + "name": "U+530-58F", + "description": "Armenian." + }, + { + "name": "U+590-5FF", + "description": "Hebrew." + }, + { + "name": "U+600-6FF", + "description": "Arabic." + }, + { + "name": "U+750-77F", + "description": "Arabic Supplement. Additional letters for African languages, Khowar, Torwali, Burushaski, and early Persian." + }, + { + "name": "U+8A0-8FF", + "description": "Arabic Extended-A. Additional letters for African languages, European and Central Asian languages, Rohingya, Tamazight, Arwi, and Koranic annotation signs." + }, + { + "name": "U+700-74F", + "description": "Syriac." + }, + { + "name": "U+900-97F", + "description": "Devanagari." + }, + { + "name": "U+980-9FF", + "description": "Bengali." + }, + { + "name": "U+A00-A7F", + "description": "Gurmukhi." + }, + { + "name": "U+A80-AFF", + "description": "Gujarati." + }, + { + "name": "U+B00-B7F", + "description": "Oriya." + }, + { + "name": "U+B80-BFF", + "description": "Tamil." + }, + { + "name": "U+C00-C7F", + "description": "Telugu." + }, + { + "name": "U+C80-CFF", + "description": "Kannada." + }, + { + "name": "U+D00-D7F", + "description": "Malayalam." + }, + { + "name": "U+D80-DFF", + "description": "Sinhala." + }, + { + "name": "U+118A0-118FF", + "description": "Warang Citi." + }, + { + "name": "U+E00-E7F", + "description": "Thai." + }, + { + "name": "U+1A20-1AAF", + "description": "Tai Tham." + }, + { + "name": "U+AA80-AADF", + "description": "Tai Viet." + }, + { + "name": "U+E80-EFF", + "description": "Lao." + }, + { + "name": "U+F00-FFF", + "description": "Tibetan." + }, + { + "name": "U+1000-109F", + "description": "Myanmar (Burmese)." + }, + { + "name": "U+10A0-10FF", + "description": "Georgian." + }, + { + "name": "U+1200-137F", + "description": "Ethiopic." + }, + { + "name": "U+1380-139F", + "description": "Ethiopic Supplement. Extra Syllables for Sebatbeit, and Tonal marks" + }, + { + "name": "U+2D80-2DDF", + "description": "Ethiopic Extended. Extra Syllables for Me'en, Blin, and Sebatbeit." + }, + { + "name": "U+AB00-AB2F", + "description": "Ethiopic Extended-A. Extra characters for Gamo-Gofa-Dawro, Basketo, and Gumuz." + }, + { + "name": "U+1780-17FF", + "description": "Khmer." + }, + { + "name": "U+1800-18AF", + "description": "Mongolian." + }, + { + "name": "U+1B80-1BBF", + "description": "Sundanese." + }, + { + "name": "U+1CC0-1CCF", + "description": "Sundanese Supplement. Punctuation." + }, + { + "name": "U+4E00-9FD5", + "description": "CJK (Chinese, Japanese, Korean) Unified Ideographs. Most common ideographs for modern Chinese and Japanese." + }, + { + "name": "U+3400-4DB5", + "description": "CJK Unified Ideographs Extension A. Rare ideographs." + }, + { + "name": "U+2F00-2FDF", + "description": "Kangxi Radicals." + }, + { + "name": "U+2E80-2EFF", + "description": "CJK Radicals Supplement. Alternative forms of Kangxi Radicals." + }, + { + "name": "U+1100-11FF", + "description": "Hangul Jamo." + }, + { + "name": "U+AC00-D7AF", + "description": "Hangul Syllables." + }, + { + "name": "U+3040-309F", + "description": "Hiragana." + }, + { + "name": "U+30A0-30FF", + "description": "Katakana." + }, + { + "name": "U+A5, U+4E00-9FFF, U+30??, U+FF00-FF9F", + "description": "Japanese Kanji, Hiragana and Katakana characters plus Yen/Yuan symbol." + }, + { + "name": "U+A4D0-A4FF", + "description": "Lisu." + }, + { + "name": "U+A000-A48F", + "description": "Yi Syllables." + }, + { + "name": "U+A490-A4CF", + "description": "Yi Radicals." + }, + { + "name": "U+2000-206F", + "description": "General Punctuation." + }, + { + "name": "U+3000-303F", + "description": "CJK Symbols and Punctuation." + }, + { + "name": "U+2070-209F", + "description": "Superscripts and Subscripts." + }, + { + "name": "U+20A0-20CF", + "description": "Currency Symbols." + }, + { + "name": "U+2100-214F", + "description": "Letterlike Symbols." + }, + { + "name": "U+2150-218F", + "description": "Number Forms." + }, + { + "name": "U+2190-21FF", + "description": "Arrows." + }, + { + "name": "U+2200-22FF", + "description": "Mathematical Operators." + }, + { + "name": "U+2300-23FF", + "description": "Miscellaneous Technical." + }, + { + "name": "U+E000-F8FF", + "description": "Private Use Area." + }, + { + "name": "U+FB00-FB4F", + "description": "Alphabetic Presentation Forms. Ligatures for latin, Armenian, and Hebrew." + }, + { + "name": "U+FB50-FDFF", + "description": "Arabic Presentation Forms-A. Contextual forms / ligatures for Persian, Urdu, Sindhi, Central Asian languages, etc, Arabic pedagogical symbols, word ligatures." + }, + { + "name": "U+1F600-1F64F", + "description": "Emoji: Emoticons." + }, + { + "name": "U+2600-26FF", + "description": "Emoji: Miscellaneous Symbols." + }, + { + "name": "U+1F300-1F5FF", + "description": "Emoji: Miscellaneous Symbols and Pictographs." + }, + { + "name": "U+1F900-1F9FF", + "description": "Emoji: Supplemental Symbols and Pictographs." + }, + { + "name": "U+1F680-1F6FF", + "description": "Emoji: Transport and Map Symbols." + } + ], + "atRule": "@font-face", + "syntax": "<unicode-range>#", + "relevance": 72, + "description": "@font-face descriptor. Defines the set of Unicode codepoints that may be supported by the font face for which it is declared.", + "restrictions": [ + "unicode-range" + ] + }, + { + "name": "user-select", + "browsers": [ + "E79", + "FF69", + "S3", + "C54", + "IE10", + "O41" + ], + "values": [ + { + "name": "all", + "description": "The content of the element must be selected atomically" + }, + { + "name": "auto" + }, + { + "name": "contain", + "description": "UAs must not allow a selection which is started in this element to be extended outside of this element." + }, + { + "name": "none", + "description": "The UA must not allow selections to be started in this element." + }, + { + "name": "text", + "description": "The element imposes no constraint on the selection." + } + ], + "syntax": "auto | text | none | contain | all", + "relevance": 82, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/user-select" + } + ], + "description": "Controls the appearance of selection.", + "restrictions": [ + "enum" + ] + }, + { + "name": "vertical-align", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O4" + ], + "values": [ + { + "name": "auto", + "description": "Align the dominant baseline of the parent box with the equivalent, or heuristically reconstructed, baseline of the element inline box." + }, + { + "name": "baseline", + "description": "Align the 'alphabetic' baseline of the element with the 'alphabetic' baseline of the parent element." + }, + { + "name": "bottom", + "description": "Align the after edge of the extended inline box with the after-edge of the line box." + }, + { + "name": "middle", + "description": "Align the 'middle' baseline of the inline element with the middle baseline of the parent." + }, + { + "name": "sub", + "description": "Lower the baseline of the box to the proper position for subscripts of the parent's box. (This value has no effect on the font size of the element's text.)" + }, + { + "name": "super", + "description": "Raise the baseline of the box to the proper position for superscripts of the parent's box. (This value has no effect on the font size of the element's text.)" + }, + { + "name": "text-bottom", + "description": "Align the bottom of the box with the after-edge of the parent element's font." + }, + { + "name": "text-top", + "description": "Align the top of the box with the before-edge of the parent element's font." + }, + { + "name": "top", + "description": "Align the before edge of the extended inline box with the before-edge of the line box." + }, + { + "name": "-webkit-baseline-middle", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O4" + ] + } + ], + "syntax": "baseline | sub | super | text-top | text-bottom | middle | top | bottom | <percentage> | <length>", + "relevance": 91, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/vertical-align" + } + ], + "description": "Affects the vertical positioning of the inline boxes generated by an inline-level element inside a line box.", + "restrictions": [ + "percentage", + "length" + ] + }, + { + "name": "visibility", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O4" + ], + "values": [ + { + "name": "collapse", + "description": "Table-specific. If used on elements other than rows, row groups, columns, or column groups, 'collapse' has the same meaning as 'hidden'." + }, + { + "name": "hidden", + "description": "The generated box is invisible (fully transparent, nothing is drawn), but still affects layout." + }, + { + "name": "visible", + "description": "The generated box is visible." + } + ], + "syntax": "visible | hidden | collapse", + "relevance": 87, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/visibility" + } + ], + "description": "Specifies whether the boxes generated by an element are rendered. Invisible boxes still affect layout (set the 'display' property to 'none' to suppress box generation altogether).", + "restrictions": [ + "enum" + ] + }, + { + "name": "-webkit-animation", + "browsers": [ + "C", + "S5" + ], + "values": [ + { + "name": "alternate", + "description": "The animation cycle iterations that are odd counts are played in the normal direction, and the animation cycle iterations that are even counts are played in a reverse direction." + }, + { + "name": "alternate-reverse", + "description": "The animation cycle iterations that are odd counts are played in the reverse direction, and the animation cycle iterations that are even counts are played in a normal direction." + }, + { + "name": "backwards", + "description": "The beginning property value (as defined in the first @keyframes at-rule) is applied before the animation is displayed, during the period defined by 'animation-delay'." + }, + { + "name": "both", + "description": "Both forwards and backwards fill modes are applied." + }, + { + "name": "forwards", + "description": "The final property value (as defined in the last @keyframes at-rule) is maintained after the animation completes." + }, + { + "name": "infinite", + "description": "Causes the animation to repeat forever." + }, + { + "name": "none", + "description": "No animation is performed" + }, + { + "name": "normal", + "description": "Normal playback." + }, + { + "name": "reverse", + "description": "All iterations of the animation are played in the reverse direction from the way they were specified." + } + ], + "relevance": 50, + "description": "Shorthand property combines six of the animation properties into a single property.", + "restrictions": [ + "time", + "enum", + "timing-function", + "identifier", + "number" + ] + }, + { + "name": "-webkit-animation-delay", + "browsers": [ + "C", + "S5" + ], + "relevance": 50, + "description": "Defines when the animation will start.", + "restrictions": [ + "time" + ] + }, + { + "name": "-webkit-animation-direction", + "browsers": [ + "C", + "S5" + ], + "values": [ + { + "name": "alternate", + "description": "The animation cycle iterations that are odd counts are played in the normal direction, and the animation cycle iterations that are even counts are played in a reverse direction." + }, + { + "name": "alternate-reverse", + "description": "The animation cycle iterations that are odd counts are played in the reverse direction, and the animation cycle iterations that are even counts are played in a normal direction." + }, + { + "name": "normal", + "description": "Normal playback." + }, + { + "name": "reverse", + "description": "All iterations of the animation are played in the reverse direction from the way they were specified." + } + ], + "relevance": 50, + "description": "Defines whether or not the animation should play in reverse on alternate cycles.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-webkit-animation-duration", + "browsers": [ + "C", + "S5" + ], + "relevance": 50, + "description": "Defines the length of time that an animation takes to complete one cycle.", + "restrictions": [ + "time" + ] + }, + { + "name": "-webkit-animation-fill-mode", + "browsers": [ + "C", + "S5" + ], + "values": [ + { + "name": "backwards", + "description": "The beginning property value (as defined in the first @keyframes at-rule) is applied before the animation is displayed, during the period defined by 'animation-delay'." + }, + { + "name": "both", + "description": "Both forwards and backwards fill modes are applied." + }, + { + "name": "forwards", + "description": "The final property value (as defined in the last @keyframes at-rule) is maintained after the animation completes." + }, + { + "name": "none", + "description": "There is no change to the property value between the time the animation is applied and the time the animation begins playing or after the animation completes." + } + ], + "relevance": 50, + "description": "Defines what values are applied by the animation outside the time it is executing.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-webkit-animation-iteration-count", + "browsers": [ + "C", + "S5" + ], + "values": [ + { + "name": "infinite", + "description": "Causes the animation to repeat forever." + } + ], + "relevance": 50, + "description": "Defines the number of times an animation cycle is played. The default value is one, meaning the animation will play from beginning to end once.", + "restrictions": [ + "number", + "enum" + ] + }, + { + "name": "-webkit-animation-name", + "browsers": [ + "C", + "S5" + ], + "values": [ + { + "name": "none", + "description": "No animation is performed" + } + ], + "relevance": 50, + "description": "Defines a list of animations that apply. Each name is used to select the keyframe at-rule that provides the property values for the animation.", + "restrictions": [ + "identifier", + "enum" + ] + }, + { + "name": "-webkit-animation-play-state", + "browsers": [ + "C", + "S5" + ], + "values": [ + { + "name": "paused", + "description": "A running animation will be paused." + }, + { + "name": "running", + "description": "Resume playback of a paused animation." + } + ], + "relevance": 50, + "description": "Defines whether the animation is running or paused.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-webkit-animation-timing-function", + "browsers": [ + "C", + "S5" + ], + "relevance": 50, + "description": "Describes how the animation will progress over one cycle of its duration. See the 'transition-timing-function'.", + "restrictions": [ + "timing-function" + ] + }, + { + "name": "-webkit-appearance", + "browsers": [ + "C", + "S3" + ], + "values": [ + { + "name": "button" + }, + { + "name": "button-bevel" + }, + { + "name": "caps-lock-indicator" + }, + { + "name": "caret" + }, + { + "name": "checkbox" + }, + { + "name": "default-button" + }, + { + "name": "listbox" + }, + { + "name": "listitem" + }, + { + "name": "media-fullscreen-button" + }, + { + "name": "media-mute-button" + }, + { + "name": "media-play-button" + }, + { + "name": "media-seek-back-button" + }, + { + "name": "media-seek-forward-button" + }, + { + "name": "media-slider" + }, + { + "name": "media-sliderthumb" + }, + { + "name": "menulist" + }, + { + "name": "menulist-button" + }, + { + "name": "menulist-text" + }, + { + "name": "menulist-textfield" + }, + { + "name": "none" + }, + { + "name": "push-button" + }, + { + "name": "radio" + }, + { + "name": "scrollbarbutton-down" + }, + { + "name": "scrollbarbutton-left" + }, + { + "name": "scrollbarbutton-right" + }, + { + "name": "scrollbarbutton-up" + }, + { + "name": "scrollbargripper-horizontal" + }, + { + "name": "scrollbargripper-vertical" + }, + { + "name": "scrollbarthumb-horizontal" + }, + { + "name": "scrollbarthumb-vertical" + }, + { + "name": "scrollbartrack-horizontal" + }, + { + "name": "scrollbartrack-vertical" + }, + { + "name": "searchfield" + }, + { + "name": "searchfield-cancel-button" + }, + { + "name": "searchfield-decoration" + }, + { + "name": "searchfield-results-button" + }, + { + "name": "searchfield-results-decoration" + }, + { + "name": "slider-horizontal" + }, + { + "name": "sliderthumb-horizontal" + }, + { + "name": "sliderthumb-vertical" + }, + { + "name": "slider-vertical" + }, + { + "name": "square-button" + }, + { + "name": "textarea" + }, + { + "name": "textfield" + } + ], + "status": "nonstandard", + "syntax": "none | button | button-bevel | caret | checkbox | default-button | inner-spin-button | listbox | listitem | media-controls-background | media-controls-fullscreen-background | media-current-time-display | media-enter-fullscreen-button | media-exit-fullscreen-button | media-fullscreen-button | media-mute-button | media-overlay-play-button | media-play-button | media-seek-back-button | media-seek-forward-button | media-slider | media-sliderthumb | media-time-remaining-display | media-toggle-closed-captions-button | media-volume-slider | media-volume-slider-container | media-volume-sliderthumb | menulist | menulist-button | menulist-text | menulist-textfield | meter | progress-bar | progress-bar-value | push-button | radio | searchfield | searchfield-cancel-button | searchfield-decoration | searchfield-results-button | searchfield-results-decoration | slider-horizontal | slider-vertical | sliderthumb-horizontal | sliderthumb-vertical | square-button | textarea | textfield | -apple-pay-button", + "relevance": 0, + "description": "Changes the appearance of buttons and other controls to resemble native controls.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-webkit-backdrop-filter", + "browsers": [ + "S9" + ], + "values": [ + { + "name": "none", + "description": "No filter effects are applied." + }, + { + "name": "blur()", + "description": "Applies a Gaussian blur to the input image." + }, + { + "name": "brightness()", + "description": "Applies a linear multiplier to input image, making it appear more or less bright." + }, + { + "name": "contrast()", + "description": "Adjusts the contrast of the input." + }, + { + "name": "drop-shadow()", + "description": "Applies a drop shadow effect to the input image." + }, + { + "name": "grayscale()", + "description": "Converts the input image to grayscale." + }, + { + "name": "hue-rotate()", + "description": "Applies a hue rotation on the input image. " + }, + { + "name": "invert()", + "description": "Inverts the samples in the input image." + }, + { + "name": "opacity()", + "description": "Applies transparency to the samples in the input image." + }, + { + "name": "saturate()", + "description": "Saturates the input image." + }, + { + "name": "sepia()", + "description": "Converts the input image to sepia." + }, + { + "name": "url()", + "description": "A filter reference to a <filter> element." + } + ], + "relevance": 50, + "description": "Applies a filter effect where the first filter in the list takes the element's background image as the input image.", + "restrictions": [ + "enum", + "url" + ] + }, + { + "name": "-webkit-backface-visibility", + "browsers": [ + "C", + "S5" + ], + "values": [ + { + "name": "hidden" + }, + { + "name": "visible" + } + ], + "relevance": 50, + "description": "Determines whether or not the 'back' side of a transformed element is visible when facing the viewer. With an identity transform, the front side of an element faces the viewer.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-webkit-background-clip", + "browsers": [ + "C", + "S3" + ], + "relevance": 50, + "description": "Determines the background painting area.", + "restrictions": [ + "box" + ] + }, + { + "name": "-webkit-background-composite", + "browsers": [ + "C", + "S3" + ], + "values": [ + { + "name": "border" + }, + { + "name": "padding" + } + ], + "relevance": 50, + "restrictions": [ + "enum" + ] + }, + { + "name": "-webkit-background-origin", + "browsers": [ + "C", + "S3" + ], + "relevance": 50, + "description": "For elements rendered as a single box, specifies the background positioning area. For elements rendered as multiple boxes (e.g., inline boxes on several lines, boxes on several pages) specifies which boxes 'box-decoration-break' operates on to determine the background positioning area(s).", + "restrictions": [ + "box" + ] + }, + { + "name": "-webkit-border-image", + "browsers": [ + "C", + "S5" + ], + "values": [ + { + "name": "auto", + "description": "If 'auto' is specified then the border image width is the intrinsic width or height (whichever is applicable) of the corresponding image slice. If the image does not have the required intrinsic dimension then the corresponding border-width is used instead." + }, + { + "name": "fill", + "description": "Causes the middle part of the border-image to be preserved." + }, + { + "name": "none" + }, + { + "name": "repeat", + "description": "The image is tiled (repeated) to fill the area." + }, + { + "name": "round", + "description": "The image is tiled (repeated) to fill the area. If it does not fill the area with a whole number of tiles, the image is rescaled so that it does." + }, + { + "name": "space", + "description": "The image is tiled (repeated) to fill the area. If it does not fill the area with a whole number of tiles, the extra space is distributed around the tiles." + }, + { + "name": "stretch", + "description": "The image is stretched to fill the area." + }, + { + "name": "url()" + } + ], + "relevance": 50, + "description": "Shorthand property for setting 'border-image-source', 'border-image-slice', 'border-image-width', 'border-image-outset' and 'border-image-repeat'. Omitted values are set to their initial values.", + "restrictions": [ + "length", + "percentage", + "number", + "url", + "enum" + ] + }, + { + "name": "-webkit-box-align", + "browsers": [ + "C", + "S3" + ], + "values": [ + { + "name": "baseline", + "description": "If this box orientation is inline-axis or horizontal, all children are placed with their baselines aligned, and extra space placed before or after as necessary. For block flows, the baseline of the first non-empty line box located within the element is used. For tables, the baseline of the first cell is used." + }, + { + "name": "center", + "description": "Any extra space is divided evenly, with half placed above the child and the other half placed after the child." + }, + { + "name": "end", + "description": "For normal direction boxes, the bottom edge of each child is placed along the bottom of the box. Extra space is placed above the element. For reverse direction boxes, the top edge of each child is placed along the top of the box. Extra space is placed below the element." + }, + { + "name": "start", + "description": "For normal direction boxes, the top edge of each child is placed along the top of the box. Extra space is placed below the element. For reverse direction boxes, the bottom edge of each child is placed along the bottom of the box. Extra space is placed above the element." + }, + { + "name": "stretch", + "description": "The height of each child is adjusted to that of the containing block." + } + ], + "relevance": 50, + "description": "Specifies the alignment of nested elements within an outer flexible box element.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-webkit-box-direction", + "browsers": [ + "C", + "S3" + ], + "values": [ + { + "name": "normal", + "description": "A box with a computed value of horizontal for box-orient displays its children from left to right. A box with a computed value of vertical displays its children from top to bottom." + }, + { + "name": "reverse", + "description": "A box with a computed value of horizontal for box-orient displays its children from right to left. A box with a computed value of vertical displays its children from bottom to top." + } + ], + "relevance": 50, + "description": "In webkit applications, -webkit-box-direction specifies whether a box lays out its contents normally (from the top or left edge), or in reverse (from the bottom or right edge).", + "restrictions": [ + "enum" + ] + }, + { + "name": "-webkit-box-flex", + "browsers": [ + "C", + "S3" + ], + "relevance": 50, + "description": "Specifies an element's flexibility.", + "restrictions": [ + "number" + ] + }, + { + "name": "-webkit-box-flex-group", + "browsers": [ + "C", + "S3" + ], + "relevance": 50, + "description": "Flexible elements can be assigned to flex groups using the 'box-flex-group' property.", + "restrictions": [ + "integer" + ] + }, + { + "name": "-webkit-box-ordinal-group", + "browsers": [ + "C", + "S3" + ], + "relevance": 50, + "description": "Indicates the ordinal group the element belongs to. Elements with a lower ordinal group are displayed before those with a higher ordinal group.", + "restrictions": [ + "integer" + ] + }, + { + "name": "-webkit-box-orient", + "browsers": [ + "C", + "S3" + ], + "values": [ + { + "name": "block-axis", + "description": "Elements are oriented along the box's axis." + }, + { + "name": "horizontal", + "description": "The box displays its children from left to right in a horizontal line." + }, + { + "name": "inline-axis", + "description": "Elements are oriented vertically." + }, + { + "name": "vertical", + "description": "The box displays its children from stacked from top to bottom vertically." + } + ], + "relevance": 50, + "description": "In webkit applications, -webkit-box-orient specifies whether a box lays out its contents horizontally or vertically.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-webkit-box-pack", + "browsers": [ + "C", + "S3" + ], + "values": [ + { + "name": "center", + "description": "The extra space is divided evenly, with half placed before the first child and the other half placed after the last child." + }, + { + "name": "end", + "description": "For normal direction boxes, the right edge of the last child is placed at the right side, with all extra space placed before the first child. For reverse direction boxes, the left edge of the first child is placed at the left side, with all extra space placed after the last child." + }, + { + "name": "justify", + "description": "The space is divided evenly in-between each child, with none of the extra space placed before the first child or after the last child. If there is only one child, treat the pack value as if it were start." + }, + { + "name": "start", + "description": "For normal direction boxes, the left edge of the first child is placed at the left side, with all extra space placed after the last child. For reverse direction boxes, the right edge of the last child is placed at the right side, with all extra space placed before the first child." + } + ], + "relevance": 50, + "description": "Specifies alignment of child elements within the current element in the direction of orientation.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-webkit-box-reflect", + "browsers": [ + "E79", + "S4", + "C4", + "O15" + ], + "values": [ + { + "name": "above", + "description": "The reflection appears above the border box." + }, + { + "name": "below", + "description": "The reflection appears below the border box." + }, + { + "name": "left", + "description": "The reflection appears to the left of the border box." + }, + { + "name": "right", + "description": "The reflection appears to the right of the border box." + } + ], + "status": "nonstandard", + "syntax": "[ above | below | right | left ]? <length>? <image>?", + "relevance": 0, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/-webkit-box-reflect" + } + ], + "description": "Defines a reflection of a border box." + }, + { + "name": "-webkit-box-sizing", + "browsers": [ + "C", + "S3" + ], + "values": [ + { + "name": "border-box", + "description": "The specified width and height (and respective min/max properties) on this element determine the border box of the element." + }, + { + "name": "content-box", + "description": "Behavior of width and height as specified by CSS2.1. The specified width and height (and respective min/max properties) apply to the width and height respectively of the content box of the element." + } + ], + "relevance": 50, + "description": "Box Model addition in CSS3.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-webkit-break-after", + "browsers": [ + "S7" + ], + "values": [ + { + "name": "always", + "description": "Always force a page break before/after the generated box." + }, + { + "name": "auto", + "description": "Neither force nor forbid a page/column break before/after the generated box." + }, + { + "name": "avoid", + "description": "Avoid a page/column break before/after the generated box." + }, + { + "name": "avoid-column", + "description": "Avoid a column break before/after the generated box." + }, + { + "name": "avoid-page", + "description": "Avoid a page break before/after the generated box." + }, + { + "name": "avoid-region" + }, + { + "name": "column", + "description": "Always force a column break before/after the generated box." + }, + { + "name": "left", + "description": "Force one or two page breaks before/after the generated box so that the next page is formatted as a left page." + }, + { + "name": "page", + "description": "Always force a page break before/after the generated box." + }, + { + "name": "region" + }, + { + "name": "right", + "description": "Force one or two page breaks before/after the generated box so that the next page is formatted as a right page." + } + ], + "relevance": 50, + "description": "Describes the page/column break behavior before the generated box.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-webkit-break-before", + "browsers": [ + "S7" + ], + "values": [ + { + "name": "always", + "description": "Always force a page break before/after the generated box." + }, + { + "name": "auto", + "description": "Neither force nor forbid a page/column break before/after the generated box." + }, + { + "name": "avoid", + "description": "Avoid a page/column break before/after the generated box." + }, + { + "name": "avoid-column", + "description": "Avoid a column break before/after the generated box." + }, + { + "name": "avoid-page", + "description": "Avoid a page break before/after the generated box." + }, + { + "name": "avoid-region" + }, + { + "name": "column", + "description": "Always force a column break before/after the generated box." + }, + { + "name": "left", + "description": "Force one or two page breaks before/after the generated box so that the next page is formatted as a left page." + }, + { + "name": "page", + "description": "Always force a page break before/after the generated box." + }, + { + "name": "region" + }, + { + "name": "right", + "description": "Force one or two page breaks before/after the generated box so that the next page is formatted as a right page." + } + ], + "relevance": 50, + "description": "Describes the page/column break behavior before the generated box.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-webkit-break-inside", + "browsers": [ + "S7" + ], + "values": [ + { + "name": "auto", + "description": "Neither force nor forbid a page/column break inside the generated box." + }, + { + "name": "avoid", + "description": "Avoid a page/column break inside the generated box." + }, + { + "name": "avoid-column", + "description": "Avoid a column break inside the generated box." + }, + { + "name": "avoid-page", + "description": "Avoid a page break inside the generated box." + }, + { + "name": "avoid-region" + } + ], + "relevance": 50, + "description": "Describes the page/column break behavior inside the generated box.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-webkit-column-break-after", + "browsers": [ + "C", + "S3" + ], + "values": [ + { + "name": "always", + "description": "Always force a page break before/after the generated box." + }, + { + "name": "auto", + "description": "Neither force nor forbid a page/column break before/after the generated box." + }, + { + "name": "avoid", + "description": "Avoid a page/column break before/after the generated box." + }, + { + "name": "avoid-column", + "description": "Avoid a column break before/after the generated box." + }, + { + "name": "avoid-page", + "description": "Avoid a page break before/after the generated box." + }, + { + "name": "avoid-region" + }, + { + "name": "column", + "description": "Always force a column break before/after the generated box." + }, + { + "name": "left", + "description": "Force one or two page breaks before/after the generated box so that the next page is formatted as a left page." + }, + { + "name": "page", + "description": "Always force a page break before/after the generated box." + }, + { + "name": "region" + }, + { + "name": "right", + "description": "Force one or two page breaks before/after the generated box so that the next page is formatted as a right page." + } + ], + "relevance": 50, + "description": "Describes the page/column break behavior before the generated box.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-webkit-column-break-before", + "browsers": [ + "C", + "S3" + ], + "values": [ + { + "name": "always", + "description": "Always force a page break before/after the generated box." + }, + { + "name": "auto", + "description": "Neither force nor forbid a page/column break before/after the generated box." + }, + { + "name": "avoid", + "description": "Avoid a page/column break before/after the generated box." + }, + { + "name": "avoid-column", + "description": "Avoid a column break before/after the generated box." + }, + { + "name": "avoid-page", + "description": "Avoid a page break before/after the generated box." + }, + { + "name": "avoid-region" + }, + { + "name": "column", + "description": "Always force a column break before/after the generated box." + }, + { + "name": "left", + "description": "Force one or two page breaks before/after the generated box so that the next page is formatted as a left page." + }, + { + "name": "page", + "description": "Always force a page break before/after the generated box." + }, + { + "name": "region" + }, + { + "name": "right", + "description": "Force one or two page breaks before/after the generated box so that the next page is formatted as a right page." + } + ], + "relevance": 50, + "description": "Describes the page/column break behavior before the generated box.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-webkit-column-break-inside", + "browsers": [ + "C", + "S3" + ], + "values": [ + { + "name": "auto", + "description": "Neither force nor forbid a page/column break inside the generated box." + }, + { + "name": "avoid", + "description": "Avoid a page/column break inside the generated box." + }, + { + "name": "avoid-column", + "description": "Avoid a column break inside the generated box." + }, + { + "name": "avoid-page", + "description": "Avoid a page break inside the generated box." + }, + { + "name": "avoid-region" + } + ], + "relevance": 50, + "description": "Describes the page/column break behavior inside the generated box.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-webkit-column-count", + "browsers": [ + "C", + "S3" + ], + "values": [ + { + "name": "auto", + "description": "Determines the number of columns by the 'column-width' property and the element width." + } + ], + "relevance": 50, + "description": "Describes the optimal number of columns into which the content of the element will be flowed.", + "restrictions": [ + "integer" + ] + }, + { + "name": "-webkit-column-gap", + "browsers": [ + "C", + "S3" + ], + "values": [ + { + "name": "normal", + "description": "User agent specific and typically equivalent to 1em." + } + ], + "relevance": 50, + "description": "Sets the gap between columns. If there is a column rule between columns, it will appear in the middle of the gap.", + "restrictions": [ + "length" + ] + }, + { + "name": "-webkit-column-rule", + "browsers": [ + "C", + "S3" + ], + "relevance": 50, + "description": "This property is a shorthand for setting 'column-rule-width', 'column-rule-style', and 'column-rule-color' at the same place in the style sheet. Omitted values are set to their initial values.", + "restrictions": [ + "length", + "line-width", + "line-style", + "color" + ] + }, + { + "name": "-webkit-column-rule-color", + "browsers": [ + "C", + "S3" + ], + "relevance": 50, + "description": "Sets the color of the column rule", + "restrictions": [ + "color" + ] + }, + { + "name": "-webkit-column-rule-style", + "browsers": [ + "C", + "S3" + ], + "relevance": 50, + "description": "Sets the style of the rule between columns of an element.", + "restrictions": [ + "line-style" + ] + }, + { + "name": "-webkit-column-rule-width", + "browsers": [ + "C", + "S3" + ], + "relevance": 50, + "description": "Sets the width of the rule between columns. Negative values are not allowed.", + "restrictions": [ + "length", + "line-width" + ] + }, + { + "name": "-webkit-columns", + "browsers": [ + "C", + "S3" + ], + "values": [ + { + "name": "auto", + "description": "The width depends on the values of other properties." + } + ], + "relevance": 50, + "description": "A shorthand property which sets both 'column-width' and 'column-count'.", + "restrictions": [ + "length", + "integer" + ] + }, + { + "name": "-webkit-column-span", + "browsers": [ + "C", + "S3" + ], + "values": [ + { + "name": "all", + "description": "The element spans across all columns. Content in the normal flow that appears before the element is automatically balanced across all columns before the element appear." + }, + { + "name": "none", + "description": "The element does not span multiple columns." + } + ], + "relevance": 50, + "description": "Describes the page/column break behavior after the generated box.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-webkit-column-width", + "browsers": [ + "C", + "S3" + ], + "values": [ + { + "name": "auto", + "description": "The width depends on the values of other properties." + } + ], + "relevance": 50, + "description": "This property describes the width of columns in multicol elements.", + "restrictions": [ + "length" + ] + }, + { + "name": "-webkit-filter", + "browsers": [ + "C18", + "O15", + "S6" + ], + "values": [ + { + "name": "none", + "description": "No filter effects are applied." + }, + { + "name": "blur()", + "description": "Applies a Gaussian blur to the input image." + }, + { + "name": "brightness()", + "description": "Applies a linear multiplier to input image, making it appear more or less bright." + }, + { + "name": "contrast()", + "description": "Adjusts the contrast of the input." + }, + { + "name": "drop-shadow()", + "description": "Applies a drop shadow effect to the input image." + }, + { + "name": "grayscale()", + "description": "Converts the input image to grayscale." + }, + { + "name": "hue-rotate()", + "description": "Applies a hue rotation on the input image. " + }, + { + "name": "invert()", + "description": "Inverts the samples in the input image." + }, + { + "name": "opacity()", + "description": "Applies transparency to the samples in the input image." + }, + { + "name": "saturate()", + "description": "Saturates the input image." + }, + { + "name": "sepia()", + "description": "Converts the input image to sepia." + }, + { + "name": "url()", + "description": "A filter reference to a <filter> element." + } + ], + "relevance": 50, + "description": "Processes an element's rendering before it is displayed in the document, by applying one or more filter effects.", + "restrictions": [ + "enum", + "url" + ] + }, + { + "name": "-webkit-flow-from", + "browsers": [ + "S6.1" + ], + "values": [ + { + "name": "none", + "description": "The block container is not a CSS Region." + } + ], + "relevance": 50, + "description": "Makes a block container a region and associates it with a named flow.", + "restrictions": [ + "identifier" + ] + }, + { + "name": "-webkit-flow-into", + "browsers": [ + "S6.1" + ], + "values": [ + { + "name": "none", + "description": "The element is not moved to a named flow and normal CSS processing takes place." + } + ], + "relevance": 50, + "description": "Places an element or its contents into a named flow.", + "restrictions": [ + "identifier" + ] + }, + { + "name": "-webkit-font-feature-settings", + "browsers": [ + "C16" + ], + "values": [ + { + "name": "\"c2cs\"" + }, + { + "name": "\"dlig\"" + }, + { + "name": "\"kern\"" + }, + { + "name": "\"liga\"" + }, + { + "name": "\"lnum\"" + }, + { + "name": "\"onum\"" + }, + { + "name": "\"smcp\"" + }, + { + "name": "\"swsh\"" + }, + { + "name": "\"tnum\"" + }, + { + "name": "normal", + "description": "No change in glyph substitution or positioning occurs." + }, + { + "name": "off" + }, + { + "name": "on" + } + ], + "relevance": 50, + "description": "This property provides low-level control over OpenType font features. It is intended as a way of providing access to font features that are not widely used but are needed for a particular use case.", + "restrictions": [ + "string", + "integer" + ] + }, + { + "name": "-webkit-hyphens", + "browsers": [ + "S5.1" + ], + "values": [ + { + "name": "auto", + "description": "Conditional hyphenation characters inside a word, if present, take priority over automatic resources when determining hyphenation points within the word." + }, + { + "name": "manual", + "description": "Words are only broken at line breaks where there are characters inside the word that suggest line break opportunities" + }, + { + "name": "none", + "description": "Words are not broken at line breaks, even if characters inside the word suggest line break points." + } + ], + "relevance": 50, + "description": "Controls whether hyphenation is allowed to create more break opportunities within a line of text.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-webkit-line-break", + "browsers": [ + "C", + "S3" + ], + "values": [ + { + "name": "after-white-space" + }, + { + "name": "normal" + } + ], + "relevance": 50, + "description": "Specifies line-breaking rules for CJK (Chinese, Japanese, and Korean) text." + }, + { + "name": "-webkit-margin-bottom-collapse", + "browsers": [ + "C", + "S3" + ], + "values": [ + { + "name": "collapse" + }, + { + "name": "discard" + }, + { + "name": "separate" + } + ], + "relevance": 50, + "restrictions": [ + "enum" + ] + }, + { + "name": "-webkit-margin-collapse", + "browsers": [ + "C", + "S3" + ], + "values": [ + { + "name": "collapse" + }, + { + "name": "discard" + }, + { + "name": "separate" + } + ], + "relevance": 50, + "restrictions": [ + "enum" + ] + }, + { + "name": "-webkit-margin-start", + "browsers": [ + "C", + "S3" + ], + "values": [ + { + "name": "auto" + } + ], + "relevance": 50, + "restrictions": [ + "percentage", + "length" + ] + }, + { + "name": "-webkit-margin-top-collapse", + "browsers": [ + "C", + "S3" + ], + "values": [ + { + "name": "collapse" + }, + { + "name": "discard" + }, + { + "name": "separate" + } + ], + "relevance": 50, + "restrictions": [ + "enum" + ] + }, + { + "name": "-webkit-mask-clip", + "browsers": [ + "C", + "O15", + "S4" + ], + "status": "nonstandard", + "syntax": "[ <box> | border | padding | content | text ]#", + "relevance": 0, + "description": "Determines the mask painting area, which determines the area that is affected by the mask.", + "restrictions": [ + "box" + ] + }, + { + "name": "-webkit-mask-image", + "browsers": [ + "C", + "O15", + "S4" + ], + "values": [ + { + "name": "none", + "description": "Counts as a transparent black image layer." + }, + { + "name": "url()", + "description": "Reference to a <mask element or to a CSS image." + } + ], + "status": "nonstandard", + "syntax": "<mask-reference>#", + "relevance": 0, + "description": "Sets the mask layer image of an element.", + "restrictions": [ + "url", + "image", + "enum" + ] + }, + { + "name": "-webkit-mask-origin", + "browsers": [ + "C", + "O15", + "S4" + ], + "status": "nonstandard", + "syntax": "[ <box> | border | padding | content ]#", + "relevance": 0, + "description": "Specifies the mask positioning area.", + "restrictions": [ + "box" + ] + }, + { + "name": "-webkit-mask-repeat", + "browsers": [ + "C", + "O15", + "S4" + ], + "status": "nonstandard", + "syntax": "<repeat-style>#", + "relevance": 0, + "description": "Specifies how mask layer images are tiled after they have been sized and positioned.", + "restrictions": [ + "repeat" + ] + }, + { + "name": "-webkit-mask-size", + "browsers": [ + "C", + "O15", + "S4" + ], + "values": [ + { + "name": "auto", + "description": "Resolved by using the image's intrinsic ratio and the size of the other dimension, or failing that, using the image's intrinsic size, or failing that, treating it as 100%." + }, + { + "name": "contain", + "description": "Scale the image, while preserving its intrinsic aspect ratio (if any), to the largest size such that both its width and its height can fit inside the background positioning area." + }, + { + "name": "cover", + "description": "Scale the image, while preserving its intrinsic aspect ratio (if any), to the smallest size such that both its width and its height can completely cover the background positioning area." + } + ], + "status": "nonstandard", + "syntax": "<bg-size>#", + "relevance": 0, + "description": "Specifies the size of the mask layer images.", + "restrictions": [ + "length", + "percentage", + "enum" + ] + }, + { + "name": "-webkit-nbsp-mode", + "browsers": [ + "C", + "S3" + ], + "values": [ + { + "name": "normal" + }, + { + "name": "space" + } + ], + "relevance": 50, + "description": "Defines the behavior of nonbreaking spaces within text." + }, + { + "name": "-webkit-overflow-scrolling", + "browsers": [ + "C", + "S5" + ], + "values": [ + { + "name": "auto" + }, + { + "name": "touch" + } + ], + "status": "nonstandard", + "syntax": "auto | touch", + "relevance": 0, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/-webkit-overflow-scrolling" + } + ], + "description": "Specifies whether to use native-style scrolling in an overflow:scroll element." + }, + { + "name": "-webkit-padding-start", + "browsers": [ + "C", + "S3" + ], + "relevance": 50, + "restrictions": [ + "percentage", + "length" + ] + }, + { + "name": "-webkit-perspective", + "browsers": [ + "C", + "S4" + ], + "values": [ + { + "name": "none", + "description": "No perspective transform is applied." + } + ], + "relevance": 50, + "description": "Applies the same transform as the perspective(<number>) transform function, except that it applies only to the positioned or transformed children of the element, not to the transform on the element itself.", + "restrictions": [ + "length" + ] + }, + { + "name": "-webkit-perspective-origin", + "browsers": [ + "C", + "S4" + ], + "relevance": 50, + "description": "Establishes the origin for the perspective property. It effectively sets the X and Y position at which the viewer appears to be looking at the children of the element.", + "restrictions": [ + "position", + "percentage", + "length" + ] + }, + { + "name": "-webkit-region-fragment", + "browsers": [ + "S7" + ], + "values": [ + { + "name": "auto", + "description": "Content flows as it would in a regular content box." + }, + { + "name": "break", + "description": "If the content fits within the CSS Region, then this property has no effect." + } + ], + "relevance": 50, + "description": "The 'region-fragment' property controls the behavior of the last region associated with a named flow.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-webkit-tap-highlight-color", + "browsers": [ + "E12", + "C16", + "O15" + ], + "status": "nonstandard", + "syntax": "<color>", + "relevance": 0, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/-webkit-tap-highlight-color" + } + ], + "restrictions": [ + "color" + ] + }, + { + "name": "-webkit-text-fill-color", + "browsers": [ + "E12", + "FF49", + "S3", + "C1", + "O15" + ], + "syntax": "<color>", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/-webkit-text-fill-color" + } + ], + "restrictions": [ + "color" + ] + }, + { + "name": "-webkit-text-size-adjust", + "browsers": [ + "E", + "C", + "S3" + ], + "values": [ + { + "name": "auto", + "description": "Renderers must use the default size adjustment when displaying on a small device." + }, + { + "name": "none", + "description": "Renderers must not do size adjustment when displaying on a small device." + } + ], + "relevance": 50, + "description": "Specifies a size adjustment for displaying text content in mobile browsers.", + "restrictions": [ + "percentage" + ] + }, + { + "name": "-webkit-text-stroke", + "browsers": [ + "E15", + "FF49", + "S3", + "C4", + "O15" + ], + "syntax": "<length> || <color>", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/-webkit-text-stroke" + } + ], + "restrictions": [ + "length", + "line-width", + "color", + "percentage" + ] + }, + { + "name": "-webkit-text-stroke-color", + "browsers": [ + "E15", + "FF49", + "S3", + "C1", + "O15" + ], + "syntax": "<color>", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/-webkit-text-stroke-color" + } + ], + "restrictions": [ + "color" + ] + }, + { + "name": "-webkit-text-stroke-width", + "browsers": [ + "E15", + "FF49", + "S3", + "C1", + "O15" + ], + "syntax": "<length>", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/-webkit-text-stroke-width" + } + ], + "restrictions": [ + "length", + "line-width", + "percentage" + ] + }, + { + "name": "-webkit-touch-callout", + "browsers": [ + "S3" + ], + "values": [ + { + "name": "none" + } + ], + "status": "nonstandard", + "syntax": "default | none", + "relevance": 0, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/-webkit-touch-callout" + } + ], + "restrictions": [ + "enum" + ] + }, + { + "name": "-webkit-transform", + "browsers": [ + "C", + "O12", + "S3.1" + ], + "values": [ + { + "name": "matrix()", + "description": "Specifies a 2D transformation in the form of a transformation matrix of six values. matrix(a,b,c,d,e,f) is equivalent to applying the transformation matrix [a b c d e f]" + }, + { + "name": "matrix3d()", + "description": "Specifies a 3D transformation as a 4x4 homogeneous matrix of 16 values in column-major order." + }, + { + "name": "none" + }, + { + "name": "perspective()", + "description": "Specifies a perspective projection matrix." + }, + { + "name": "rotate()", + "description": "Specifies a 2D rotation by the angle specified in the parameter about the origin of the element, as defined by the transform-origin property." + }, + { + "name": "rotate3d()", + "description": "Specifies a clockwise 3D rotation by the angle specified in last parameter about the [x,y,z] direction vector described by the first 3 parameters." + }, + { + "name": "rotateX('angle')", + "description": "Specifies a clockwise rotation by the given angle about the X axis." + }, + { + "name": "rotateY('angle')", + "description": "Specifies a clockwise rotation by the given angle about the Y axis." + }, + { + "name": "rotateZ('angle')", + "description": "Specifies a clockwise rotation by the given angle about the Z axis." + }, + { + "name": "scale()", + "description": "Specifies a 2D scale operation by the [sx,sy] scaling vector described by the 2 parameters. If the second parameter is not provided, it is takes a value equal to the first." + }, + { + "name": "scale3d()", + "description": "Specifies a 3D scale operation by the [sx,sy,sz] scaling vector described by the 3 parameters." + }, + { + "name": "scaleX()", + "description": "Specifies a scale operation using the [sx,1] scaling vector, where sx is given as the parameter." + }, + { + "name": "scaleY()", + "description": "Specifies a scale operation using the [sy,1] scaling vector, where sy is given as the parameter." + }, + { + "name": "scaleZ()", + "description": "Specifies a scale operation using the [1,1,sz] scaling vector, where sz is given as the parameter." + }, + { + "name": "skew()", + "description": "Specifies a skew transformation along the X and Y axes. The first angle parameter specifies the skew on the X axis. The second angle parameter specifies the skew on the Y axis. If the second parameter is not given then a value of 0 is used for the Y angle (ie: no skew on the Y axis)." + }, + { + "name": "skewX()", + "description": "Specifies a skew transformation along the X axis by the given angle." + }, + { + "name": "skewY()", + "description": "Specifies a skew transformation along the Y axis by the given angle." + }, + { + "name": "translate()", + "description": "Specifies a 2D translation by the vector [tx, ty], where tx is the first translation-value parameter and ty is the optional second translation-value parameter." + }, + { + "name": "translate3d()", + "description": "Specifies a 3D translation by the vector [tx,ty,tz], with tx, ty and tz being the first, second and third translation-value parameters respectively." + }, + { + "name": "translateX()", + "description": "Specifies a translation by the given amount in the X direction." + }, + { + "name": "translateY()", + "description": "Specifies a translation by the given amount in the Y direction." + }, + { + "name": "translateZ()", + "description": "Specifies a translation by the given amount in the Z direction. Note that percentage values are not allowed in the translateZ translation-value, and if present are evaluated as 0." + } + ], + "relevance": 50, + "description": "A two-dimensional transformation is applied to an element through the 'transform' property. This property contains a list of transform functions similar to those allowed by SVG.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-webkit-transform-origin", + "browsers": [ + "C", + "O15", + "S3.1" + ], + "relevance": 50, + "description": "Establishes the origin of transformation for an element.", + "restrictions": [ + "position", + "length", + "percentage" + ] + }, + { + "name": "-webkit-transform-origin-x", + "browsers": [ + "C", + "S3.1" + ], + "relevance": 50, + "description": "The x coordinate of the origin for transforms applied to an element with respect to its border box.", + "restrictions": [ + "length", + "percentage" + ] + }, + { + "name": "-webkit-transform-origin-y", + "browsers": [ + "C", + "S3.1" + ], + "relevance": 50, + "description": "The y coordinate of the origin for transforms applied to an element with respect to its border box.", + "restrictions": [ + "length", + "percentage" + ] + }, + { + "name": "-webkit-transform-origin-z", + "browsers": [ + "C", + "S4" + ], + "relevance": 50, + "description": "The z coordinate of the origin for transforms applied to an element with respect to its border box.", + "restrictions": [ + "length", + "percentage" + ] + }, + { + "name": "-webkit-transform-style", + "browsers": [ + "C", + "S4" + ], + "values": [ + { + "name": "flat", + "description": "All children of this element are rendered flattened into the 2D plane of the element." + } + ], + "relevance": 50, + "description": "Defines how nested elements are rendered in 3D space.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-webkit-transition", + "browsers": [ + "C", + "O12", + "S5" + ], + "values": [ + { + "name": "all", + "description": "Every property that is able to undergo a transition will do so." + }, + { + "name": "none", + "description": "No property will transition." + } + ], + "relevance": 50, + "description": "Shorthand property combines four of the transition properties into a single property.", + "restrictions": [ + "time", + "property", + "timing-function", + "enum" + ] + }, + { + "name": "-webkit-transition-delay", + "browsers": [ + "C", + "O12", + "S5" + ], + "relevance": 50, + "description": "Defines when the transition will start. It allows a transition to begin execution some period of time from when it is applied.", + "restrictions": [ + "time" + ] + }, + { + "name": "-webkit-transition-duration", + "browsers": [ + "C", + "O12", + "S5" + ], + "relevance": 50, + "description": "Specifies how long the transition from the old value to the new value should take.", + "restrictions": [ + "time" + ] + }, + { + "name": "-webkit-transition-property", + "browsers": [ + "C", + "O12", + "S5" + ], + "values": [ + { + "name": "all", + "description": "Every property that is able to undergo a transition will do so." + }, + { + "name": "none", + "description": "No property will transition." + } + ], + "relevance": 50, + "description": "Specifies the name of the CSS property to which the transition is applied.", + "restrictions": [ + "property" + ] + }, + { + "name": "-webkit-transition-timing-function", + "browsers": [ + "C", + "O12", + "S5" + ], + "relevance": 50, + "description": "Describes how the intermediate values used during a transition will be calculated.", + "restrictions": [ + "timing-function" + ] + }, + { + "name": "-webkit-user-drag", + "browsers": [ + "S3" + ], + "values": [ + { + "name": "auto" + }, + { + "name": "element" + }, + { + "name": "none" + } + ], + "relevance": 50, + "restrictions": [ + "enum" + ] + }, + { + "name": "-webkit-user-modify", + "browsers": [ + "C", + "S3" + ], + "values": [ + { + "name": "read-only" + }, + { + "name": "read-write" + }, + { + "name": "read-write-plaintext-only" + } + ], + "status": "nonstandard", + "syntax": "read-only | read-write | read-write-plaintext-only", + "relevance": 0, + "description": "Determines whether a user can edit the content of an element.", + "restrictions": [ + "enum" + ] + }, + { + "name": "-webkit-user-select", + "browsers": [ + "C", + "S3" + ], + "values": [ + { + "name": "auto" + }, + { + "name": "none" + }, + { + "name": "text" + } + ], + "relevance": 50, + "description": "Controls the appearance of selection.", + "restrictions": [ + "enum" + ] + }, + { + "name": "widows", + "browsers": [ + "E12", + "S1.3", + "C25", + "IE8", + "O9.2" + ], + "syntax": "<integer>", + "relevance": 51, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/widows" + } + ], + "description": "Specifies the minimum number of line boxes of a block container that must be left in a fragment after a break.", + "restrictions": [ + "integer" + ] + }, + { + "name": "width", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O3.5" + ], + "values": [ + { + "name": "auto", + "description": "The width depends on the values of other properties." + }, + { + "name": "fit-content", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O3.5" + ], + "description": "Use the fit-content inline size or fit-content block size, as appropriate to the writing mode." + }, + { + "name": "max-content", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O3.5" + ], + "description": "Use the max-content inline size or max-content block size, as appropriate to the writing mode." + }, + { + "name": "min-content", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O3.5" + ], + "description": "Use the min-content inline size or min-content block size, as appropriate to the writing mode." + } + ], + "atRule": "@viewport", + "syntax": "<viewport-length>{1,2}", + "relevance": 96, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/width" + } + ], + "description": "Specifies the width of the content area, padding area or border area (depending on 'box-sizing') of certain boxes.", + "restrictions": [ + "length", + "percentage" + ] + }, + { + "name": "will-change", + "browsers": [ + "E79", + "FF36", + "S9.1", + "C36", + "O24" + ], + "values": [ + { + "name": "auto", + "description": "Expresses no particular intent." + }, + { + "name": "contents", + "description": "Indicates that the author expects to animate or change something about the element's contents in the near future." + }, + { + "name": "scroll-position", + "description": "Indicates that the author expects to animate or change the scroll position of the element in the near future." + } + ], + "syntax": "auto | <animateable-feature>#", + "relevance": 65, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/will-change" + } + ], + "description": "Provides a rendering hint to the user agent, stating what kinds of changes the author expects to perform on the element.", + "restrictions": [ + "enum", + "identifier" + ] + }, + { + "name": "word-break", + "browsers": [ + "E12", + "FF15", + "S3", + "C1", + "IE5.5", + "O15" + ], + "values": [ + { + "name": "break-all", + "description": "Lines may break between any two grapheme clusters for non-CJK scripts." + }, + { + "name": "keep-all", + "description": "Block characters can no longer create implied break points." + }, + { + "name": "normal", + "description": "Breaks non-CJK scripts according to their own rules." + } + ], + "syntax": "normal | break-all | keep-all | break-word", + "relevance": 76, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/word-break" + } + ], + "description": "Specifies line break opportunities for non-CJK scripts.", + "restrictions": [ + "enum" + ] + }, + { + "name": "word-spacing", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE6", + "O3.5" + ], + "values": [ + { + "name": "normal", + "description": "No additional spacing is applied. Computes to zero." + } + ], + "syntax": "normal | <length>", + "relevance": 57, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/word-spacing" + } + ], + "description": "Specifies additional spacing between \"words\".", + "restrictions": [ + "length", + "percentage" + ] + }, + { + "name": "word-wrap", + "values": [ + { + "name": "break-word", + "description": "An otherwise unbreakable sequence of characters may be broken at an arbitrary point if there are no otherwise-acceptable break points in the line." + }, + { + "name": "normal", + "description": "Lines may break only at allowed break points." + } + ], + "syntax": "normal | break-word", + "relevance": 77, + "description": "Specifies whether the UA may break within a word to prevent overflow when an otherwise-unbreakable string is too long to fit.", + "restrictions": [ + "enum" + ] + }, + { + "name": "writing-mode", + "browsers": [ + "E12", + "FF41", + "S10.1", + "C48", + "IE9", + "O35" + ], + "values": [ + { + "name": "horizontal-tb", + "description": "Top-to-bottom block flow direction. The writing mode is horizontal." + }, + { + "name": "sideways-lr", + "browsers": [ + "E12", + "FF41", + "S10.1", + "C48", + "IE9", + "O35" + ], + "description": "Left-to-right block flow direction. The writing mode is vertical, while the typographic mode is horizontal." + }, + { + "name": "sideways-rl", + "browsers": [ + "E12", + "FF41", + "S10.1", + "C48", + "IE9", + "O35" + ], + "description": "Right-to-left block flow direction. The writing mode is vertical, while the typographic mode is horizontal." + }, + { + "name": "vertical-lr", + "description": "Left-to-right block flow direction. The writing mode is vertical." + }, + { + "name": "vertical-rl", + "description": "Right-to-left block flow direction. The writing mode is vertical." + } + ], + "syntax": "horizontal-tb | vertical-rl | vertical-lr | sideways-rl | sideways-lr", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/writing-mode" + } + ], + "description": "This is a shorthand property for both 'direction' and 'block-progression'.", + "restrictions": [ + "enum" + ] + }, + { + "name": "z-index", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O4" + ], + "values": [ + { + "name": "auto", + "description": "The stack level of the generated box in the current stacking context is 0. The box does not establish a new stacking context unless it is the root element." + } + ], + "syntax": "auto | <integer>", + "relevance": 92, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/z-index" + } + ], + "description": "For a positioned box, the 'z-index' property specifies the stack level of the box in the current stacking context and whether the box establishes a local stacking context.", + "restrictions": [ + "integer" + ] + }, + { + "name": "zoom", + "browsers": [ + "E12", + "S3.1", + "C1", + "IE5.5", + "O15" + ], + "values": [ + { + "name": "normal" + } + ], + "atRule": "@viewport", + "syntax": "auto | <number> | <percentage>", + "relevance": 65, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/zoom" + } + ], + "description": "Non-standard. Specifies the magnification scale of the object. See 'transform: scale()' for a standards-based alternative.", + "restrictions": [ + "enum", + "integer", + "number", + "percentage" + ] + }, + { + "name": "-ms-ime-align", + "status": "nonstandard", + "syntax": "auto | after", + "values": [ + { + "name": "auto" + }, + { + "name": "after" + } + ], + "relevance": 0, + "description": "Aligns the Input Method Editor (IME) candidate window box relative to the element on which the IME composition is active." + }, + { + "name": "-moz-binding", + "status": "nonstandard", + "syntax": "<url> | none", + "relevance": 0, + "description": "The -moz-binding CSS property is used by Mozilla-based applications to attach an XBL binding to a DOM element." + }, + { + "name": "-moz-context-properties", + "status": "nonstandard", + "syntax": "none | [ fill | fill-opacity | stroke | stroke-opacity ]#", + "relevance": 0, + "description": "If you reference an SVG image in a webpage (such as with the <img> element or as a background image), the SVG image can coordinate with the embedding element (its context) to have the image adopt property values set on the embedding element. To do this the embedding element needs to list the properties that are to be made available to the image by listing them as values of the -moz-context-properties property, and the image needs to opt in to using those properties by using values such as the context-fill value.\n\nThis feature is available since Firefox 55, but is only currently supported with SVG images loaded via chrome:// or resource:// URLs. To experiment with the feature in SVG on the Web it is necessary to set the svg.context-properties.content.enabled pref to true." + }, + { + "name": "-moz-float-edge", + "status": "obsolete", + "syntax": "border-box | content-box | margin-box | padding-box", + "values": [ + { + "name": "border-box" + }, + { + "name": "content-box" + }, + { + "name": "margin-box" + }, + { + "name": "padding-box" + } + ], + "relevance": 0, + "browsers": [ + "FF1" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/-moz-float-edge" + } + ], + "description": "The non-standard -moz-float-edge CSS property specifies whether the height and width properties of the element include the margin, border, or padding thickness." + }, + { + "name": "-moz-force-broken-image-icon", + "status": "obsolete", + "syntax": "0 | 1", + "values": [ + { + "name": "0" + }, + { + "name": "1" + } + ], + "relevance": 0, + "browsers": [ + "FF1" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/-moz-force-broken-image-icon" + } + ], + "description": "The -moz-force-broken-image-icon extended CSS property can be used to force the broken image icon to be shown even when a broken image has an alt attribute." + }, + { + "name": "-moz-image-region", + "status": "nonstandard", + "syntax": "<shape> | auto", + "relevance": 0, + "browsers": [ + "FF1" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/-moz-image-region" + } + ], + "description": "For certain XUL elements and pseudo-elements that use an image from the list-style-image property, this property specifies a region of the image that is used in place of the whole image. This allows elements to use different pieces of the same image to improve performance." + }, + { + "name": "-moz-orient", + "status": "nonstandard", + "syntax": "inline | block | horizontal | vertical", + "values": [ + { + "name": "inline" + }, + { + "name": "block" + }, + { + "name": "horizontal" + }, + { + "name": "vertical" + } + ], + "relevance": 0, + "browsers": [ + "FF6" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/-moz-orient" + } + ], + "description": "The -moz-orient CSS property specifies the orientation of the element to which it's applied." + }, + { + "name": "-moz-outline-radius", + "status": "nonstandard", + "syntax": "<outline-radius>{1,4} [ / <outline-radius>{1,4} ]?", + "relevance": 0, + "description": "In Mozilla applications like Firefox, the -moz-outline-radius CSS property can be used to give an element's outline rounded corners." + }, + { + "name": "-moz-outline-radius-bottomleft", + "status": "nonstandard", + "syntax": "<outline-radius>", + "relevance": 0, + "description": "In Mozilla applications, the -moz-outline-radius-bottomleft CSS property can be used to round the bottom-left corner of an element's outline." + }, + { + "name": "-moz-outline-radius-bottomright", + "status": "nonstandard", + "syntax": "<outline-radius>", + "relevance": 0, + "description": "In Mozilla applications, the -moz-outline-radius-bottomright CSS property can be used to round the bottom-right corner of an element's outline." + }, + { + "name": "-moz-outline-radius-topleft", + "status": "nonstandard", + "syntax": "<outline-radius>", + "relevance": 0, + "description": "In Mozilla applications, the -moz-outline-radius-topleft CSS property can be used to round the top-left corner of an element's outline." + }, + { + "name": "-moz-outline-radius-topright", + "status": "nonstandard", + "syntax": "<outline-radius>", + "relevance": 0, + "description": "In Mozilla applications, the -moz-outline-radius-topright CSS property can be used to round the top-right corner of an element's outline." + }, + { + "name": "-moz-stack-sizing", + "status": "nonstandard", + "syntax": "ignore | stretch-to-fit", + "values": [ + { + "name": "ignore" + }, + { + "name": "stretch-to-fit" + } + ], + "relevance": 0, + "description": "-moz-stack-sizing is an extended CSS property. Normally, a stack will change its size so that all of its child elements are completely visible. For example, moving a child of the stack far to the right will widen the stack so the child remains visible." + }, + { + "name": "-moz-text-blink", + "status": "nonstandard", + "syntax": "none | blink", + "values": [ + { + "name": "none" + }, + { + "name": "blink" + } + ], + "relevance": 0, + "description": "The -moz-text-blink non-standard Mozilla CSS extension specifies the blink mode." + }, + { + "name": "-moz-user-input", + "status": "obsolete", + "syntax": "auto | none | enabled | disabled", + "values": [ + { + "name": "auto" + }, + { + "name": "none" + }, + { + "name": "enabled" + }, + { + "name": "disabled" + } + ], + "relevance": 0, + "browsers": [ + "FF1" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/-moz-user-input" + } + ], + "description": "In Mozilla applications, -moz-user-input determines if an element will accept user input." + }, + { + "name": "-moz-user-modify", + "status": "nonstandard", + "syntax": "read-only | read-write | write-only", + "values": [ + { + "name": "read-only" + }, + { + "name": "read-write" + }, + { + "name": "write-only" + } + ], + "relevance": 0, + "description": "The -moz-user-modify property has no effect. It was originally planned to determine whether or not the content of an element can be edited by a user." + }, + { + "name": "-moz-window-dragging", + "status": "nonstandard", + "syntax": "drag | no-drag", + "values": [ + { + "name": "drag" + }, + { + "name": "no-drag" + } + ], + "relevance": 0, + "description": "The -moz-window-dragging CSS property specifies whether a window is draggable or not. It only works in Chrome code, and only on Mac OS X." + }, + { + "name": "-moz-window-shadow", + "status": "nonstandard", + "syntax": "default | menu | tooltip | sheet | none", + "values": [ + { + "name": "default" + }, + { + "name": "menu" + }, + { + "name": "tooltip" + }, + { + "name": "sheet" + }, + { + "name": "none" + } + ], + "relevance": 0, + "description": "The -moz-window-shadow CSS property specifies whether a window will have a shadow. It only works on Mac OS X." + }, + { + "name": "-webkit-border-before", + "status": "nonstandard", + "syntax": "<'border-width'> || <'border-style'> || <color>", + "relevance": 0, + "browsers": [ + "E79", + "S5.1", + "C8", + "O15" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/-webkit-border-before" + } + ], + "description": "The -webkit-border-before CSS property is a shorthand property for setting the individual logical block start border property values in a single place in the style sheet." + }, + { + "name": "-webkit-border-before-color", + "status": "nonstandard", + "syntax": "<color>", + "relevance": 0, + "description": "The -webkit-border-before-color CSS property sets the color of the individual logical block start border in a single place in the style sheet." + }, + { + "name": "-webkit-border-before-style", + "status": "nonstandard", + "syntax": "<'border-style'>", + "relevance": 0, + "description": "The -webkit-border-before-style CSS property sets the style of the individual logical block start border in a single place in the style sheet." + }, + { + "name": "-webkit-border-before-width", + "status": "nonstandard", + "syntax": "<'border-width'>", + "relevance": 0, + "description": "The -webkit-border-before-width CSS property sets the width of the individual logical block start border in a single place in the style sheet." + }, + { + "name": "-webkit-line-clamp", + "syntax": "none | <integer>", + "relevance": 50, + "browsers": [ + "E17", + "FF68", + "S5", + "C6", + "O15" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/-webkit-line-clamp" + } + ], + "description": "The -webkit-line-clamp CSS property allows limiting of the contents of a block container to the specified number of lines." + }, + { + "name": "-webkit-mask", + "status": "nonstandard", + "syntax": "[ <mask-reference> || <position> [ / <bg-size> ]? || <repeat-style> || [ <box> | border | padding | content | text ] || [ <box> | border | padding | content ] ]#", + "relevance": 0, + "description": "The mask CSS property alters the visibility of an element by either partially or fully hiding it. This is accomplished by either masking or clipping the image at specific points." + }, + { + "name": "-webkit-mask-attachment", + "status": "nonstandard", + "syntax": "<attachment>#", + "relevance": 0, + "browsers": [ + "S4", + "C1" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/-webkit-mask-attachment" + } + ], + "description": "If a -webkit-mask-image is specified, -webkit-mask-attachment determines whether the mask image's position is fixed within the viewport, or scrolls along with its containing block." + }, + { + "name": "-webkit-mask-composite", + "status": "nonstandard", + "syntax": "<composite-style>#", + "relevance": 0, + "browsers": [ + "E18", + "FF53", + "S3.1", + "C1", + "O15" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/-webkit-mask-composite" + } + ], + "description": "The -webkit-mask-composite property specifies the manner in which multiple mask images applied to the same element are composited with one another. Mask images are composited in the opposite order that they are declared with the -webkit-mask-image property." + }, + { + "name": "-webkit-mask-position", + "status": "nonstandard", + "syntax": "<position>#", + "relevance": 0, + "description": "The mask-position CSS property sets the initial position, relative to the mask position layer defined by mask-origin, for each defined mask image." + }, + { + "name": "-webkit-mask-position-x", + "status": "nonstandard", + "syntax": "[ <length-percentage> | left | center | right ]#", + "relevance": 0, + "browsers": [ + "E18", + "FF49", + "S3.1", + "C1", + "O15" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/-webkit-mask-position-x" + } + ], + "description": "The -webkit-mask-position-x CSS property sets the initial horizontal position of a mask image." + }, + { + "name": "-webkit-mask-position-y", + "status": "nonstandard", + "syntax": "[ <length-percentage> | top | center | bottom ]#", + "relevance": 0, + "browsers": [ + "E18", + "FF49", + "S3.1", + "C1", + "O15" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/-webkit-mask-position-y" + } + ], + "description": "The -webkit-mask-position-y CSS property sets the initial vertical position of a mask image." + }, + { + "name": "-webkit-mask-repeat-x", + "status": "nonstandard", + "syntax": "repeat | no-repeat | space | round", + "values": [ + { + "name": "repeat" + }, + { + "name": "no-repeat" + }, + { + "name": "space" + }, + { + "name": "round" + } + ], + "relevance": 0, + "browsers": [ + "E79", + "S5", + "C3", + "O15" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/-webkit-mask-repeat-x" + } + ], + "description": "The -webkit-mask-repeat-x property specifies whether and how a mask image is repeated (tiled) horizontally." + }, + { + "name": "-webkit-mask-repeat-y", + "status": "nonstandard", + "syntax": "repeat | no-repeat | space | round", + "values": [ + { + "name": "repeat" + }, + { + "name": "no-repeat" + }, + { + "name": "space" + }, + { + "name": "round" + } + ], + "relevance": 0, + "browsers": [ + "E79", + "S5", + "C3", + "O15" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/-webkit-mask-repeat-y" + } + ], + "description": "The -webkit-mask-repeat-y property specifies whether and how a mask image is repeated (tiled) vertically." + }, + { + "name": "accent-color", + "syntax": "auto | <color>", + "relevance": 50, + "browsers": [ + "E93", + "FF92", + "S15.4", + "C93", + "O79" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/accent-color" + } + ], + "description": "Sets the color of the elements accent" + }, + { + "name": "align-tracks", + "status": "experimental", + "syntax": "[ normal | <baseline-position> | <content-distribution> | <overflow-position>? <content-position> ]#", + "relevance": 50, + "browsers": [ + "FF77" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/align-tracks" + } + ], + "description": "The align-tracks CSS property sets the alignment in the masonry axis for grid containers that have masonry in their block axis." + }, + { + "name": "animation-composition", + "syntax": "<single-animation-composition>#", + "relevance": 50, + "browsers": [ + "E112", + "FF115", + "S16", + "C112", + "O98" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/animation-composition" + } + ], + "description": "The composite operation to use when multiple animations affect the same property." + }, + { + "name": "animation-range", + "status": "experimental", + "syntax": "[ <'animation-range-start'> <'animation-range-end'>? ]#", + "relevance": 50, + "browsers": [ + "E115", + "C115" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/animation-range" + } + ], + "description": "The animation-range CSS shorthand property is used to set the start and end of an animation's attachment range along its timeline, i.e. where along the timeline an animation will start and end." + }, + { + "name": "animation-range-end", + "status": "experimental", + "syntax": "[ normal | <length-percentage> | <timeline-range-name> <length-percentage>? ]#", + "relevance": 50, + "browsers": [ + "E115", + "C115" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/animation-range-end" + } + ], + "description": "The animation-range-end CSS property is used to set the end of an animation's attachment range along its timeline, i.e. where along the timeline an animation will end." + }, + { + "name": "animation-range-start", + "status": "experimental", + "syntax": "[ normal | <length-percentage> | <timeline-range-name> <length-percentage>? ]#", + "relevance": 50, + "browsers": [ + "E115", + "C115" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/animation-range-start" + } + ], + "description": "The animation-range-start CSS property is used to set the start of an animation's attachment range along its timeline, i.e. where along the timeline an animation will start." + }, + { + "name": "animation-timeline", + "status": "experimental", + "syntax": "<single-animation-timeline>#", + "relevance": 50, + "browsers": [ + "E115", + "FF110", + "C115", + "O71" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/animation-timeline" + } + ], + "description": "Specifies the names of one or more @scroll-timeline at-rules to describe the element's scroll animations." + }, + { + "name": "appearance", + "syntax": "none | auto | textfield | menulist-button | <compat-auto>", + "relevance": 69, + "browsers": [ + "E84", + "FF80", + "S15.4", + "C84", + "O70" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/appearance" + } + ], + "description": "Changes the appearance of buttons and other controls to resemble native controls." + }, + { + "name": "aspect-ratio", + "syntax": "auto | <ratio>", + "relevance": 58, + "browsers": [ + "E88", + "FF89", + "S15", + "C88", + "O74" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/aspect-ratio" + } + ], + "description": "The aspect-ratio CSS property sets a preferred aspect ratio for the box, which will be used in the calculation of auto sizes and some other layout functions." + }, + { + "name": "azimuth", + "status": "obsolete", + "syntax": "<angle> | [ [ left-side | far-left | left | center-left | center | center-right | right | far-right | right-side ] || behind ] | leftwards | rightwards", + "relevance": 0, + "description": "In combination with elevation, the azimuth CSS property enables different audio sources to be positioned spatially for aural presentation. This is important in that it provides a natural way to tell several voices apart, as each can be positioned to originate at a different location on the sound stage. Stereo output produce a lateral sound stage, while binaural headphones and multi-speaker setups allow for a fully three-dimensional stage." + }, + { + "name": "backdrop-filter", + "syntax": "none | <filter-function-list>", + "relevance": 56, + "browsers": [ + "E17", + "FF103", + "S9", + "C76", + "O63" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/backdrop-filter" + } + ], + "description": "The backdrop-filter CSS property lets you apply graphical effects such as blurring or color shifting to the area behind an element. Because it applies to everything behind the element, to see the effect you must make the element or its background at least partially transparent." + }, + { + "name": "border-block", + "syntax": "<'border-top-width'> || <'border-top-style'> || <color>", + "relevance": 50, + "browsers": [ + "E87", + "FF66", + "S14.1", + "C87", + "O73" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/border-block" + } + ], + "description": "The border-block CSS property is a shorthand property for setting the individual logical block border property values in a single place in the style sheet." + }, + { + "name": "border-block-color", + "syntax": "<'border-top-color'>{1,2}", + "relevance": 50, + "browsers": [ + "E87", + "FF66", + "S14.1", + "C87", + "O73" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/border-block-color" + } + ], + "description": "The border-block-color CSS property defines the color of the logical block borders of an element, which maps to a physical border color depending on the element's writing mode, directionality, and text orientation. It corresponds to the border-top-color and border-bottom-color, or border-right-color and border-left-color property depending on the values defined for writing-mode, direction, and text-orientation." + }, + { + "name": "border-block-style", + "syntax": "<'border-top-style'>", + "relevance": 50, + "browsers": [ + "E87", + "FF66", + "S14.1", + "C87", + "O73" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/border-block-style" + } + ], + "description": "The border-block-style CSS property defines the style of the logical block borders of an element, which maps to a physical border style depending on the element's writing mode, directionality, and text orientation. It corresponds to the border-top-style and border-bottom-style, or border-left-style and border-right-style properties depending on the values defined for writing-mode, direction, and text-orientation." + }, + { + "name": "border-block-width", + "syntax": "<'border-top-width'>", + "relevance": 50, + "browsers": [ + "E87", + "FF66", + "S14.1", + "C87", + "O73" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/border-block-width" + } + ], + "description": "The border-block-width CSS property defines the width of the logical block borders of an element, which maps to a physical border width depending on the element's writing mode, directionality, and text orientation. It corresponds to the border-top-width and border-bottom-width, or border-left-width, and border-right-width property depending on the values defined for writing-mode, direction, and text-orientation." + }, + { + "name": "border-end-end-radius", + "syntax": "<length-percentage>{1,2}", + "relevance": 53, + "browsers": [ + "E89", + "FF66", + "S15", + "C89", + "O75" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/border-end-end-radius" + } + ], + "description": "The border-end-end-radius CSS property defines a logical border radius on an element, which maps to a physical border radius that depends on on the element's writing-mode, direction, and text-orientation." + }, + { + "name": "border-end-start-radius", + "syntax": "<length-percentage>{1,2}", + "relevance": 53, + "browsers": [ + "E89", + "FF66", + "S15", + "C89", + "O75" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/border-end-start-radius" + } + ], + "description": "The border-end-start-radius CSS property defines a logical border radius on an element, which maps to a physical border radius depending on the element's writing-mode, direction, and text-orientation." + }, + { + "name": "border-inline", + "syntax": "<'border-top-width'> || <'border-top-style'> || <color>", + "relevance": 50, + "browsers": [ + "E87", + "FF66", + "S14.1", + "C87", + "O73" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/border-inline" + } + ], + "description": "The border-inline CSS property is a shorthand property for setting the individual logical inline border property values in a single place in the style sheet." + }, + { + "name": "border-inline-color", + "syntax": "<'border-top-color'>{1,2}", + "relevance": 50, + "browsers": [ + "E87", + "FF66", + "S14.1", + "C87", + "O73" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/border-inline-color" + } + ], + "description": "The border-inline-color CSS property defines the color of the logical inline borders of an element, which maps to a physical border color depending on the element's writing mode, directionality, and text orientation. It corresponds to the border-top-color and border-bottom-color, or border-right-color and border-left-color property depending on the values defined for writing-mode, direction, and text-orientation." + }, + { + "name": "border-inline-style", + "syntax": "<'border-top-style'>", + "relevance": 50, + "browsers": [ + "E87", + "FF66", + "S14.1", + "C87", + "O73" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/border-inline-style" + } + ], + "description": "The border-inline-style CSS property defines the style of the logical inline borders of an element, which maps to a physical border style depending on the element's writing mode, directionality, and text orientation. It corresponds to the border-top-style and border-bottom-style, or border-left-style and border-right-style properties depending on the values defined for writing-mode, direction, and text-orientation." + }, + { + "name": "border-inline-width", + "syntax": "<'border-top-width'>", + "relevance": 50, + "browsers": [ + "E87", + "FF66", + "S14.1", + "C87", + "O73" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/border-inline-width" + } + ], + "description": "The border-inline-width CSS property defines the width of the logical inline borders of an element, which maps to a physical border width depending on the element's writing mode, directionality, and text orientation. It corresponds to the border-top-width and border-bottom-width, or border-left-width, and border-right-width property depending on the values defined for writing-mode, direction, and text-orientation." + }, + { + "name": "border-start-end-radius", + "syntax": "<length-percentage>{1,2}", + "relevance": 53, + "browsers": [ + "E89", + "FF66", + "S15", + "C89", + "O75" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/border-start-end-radius" + } + ], + "description": "The border-start-end-radius CSS property defines a logical border radius on an element, which maps to a physical border radius depending on the element's writing-mode, direction, and text-orientation." + }, + { + "name": "border-start-start-radius", + "syntax": "<length-percentage>{1,2}", + "relevance": 53, + "browsers": [ + "E89", + "FF66", + "S15", + "C89", + "O75" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/border-start-start-radius" + } + ], + "description": "The border-start-start-radius CSS property defines a logical border radius on an element, which maps to a physical border radius that depends on the element's writing-mode, direction, and text-orientation." + }, + { + "name": "box-align", + "status": "obsolete", + "syntax": "start | center | end | baseline | stretch", + "values": [ + { + "name": "start" + }, + { + "name": "center" + }, + { + "name": "end" + }, + { + "name": "baseline" + }, + { + "name": "stretch" + } + ], + "relevance": 0, + "browsers": [ + "E12", + "FF49", + "S3", + "C1", + "O15" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/box-align" + } + ], + "description": "The box-align CSS property specifies how an element aligns its contents across its layout in a perpendicular direction. The effect of the property is only visible if there is extra space in the box." + }, + { + "name": "box-direction", + "status": "obsolete", + "syntax": "normal | reverse | inherit", + "values": [ + { + "name": "normal" + }, + { + "name": "reverse" + }, + { + "name": "inherit" + } + ], + "relevance": 0, + "browsers": [ + "E12", + "FF49", + "S3", + "C1", + "O15" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/box-direction" + } + ], + "description": "The box-direction CSS property specifies whether a box lays out its contents normally (from the top or left edge), or in reverse (from the bottom or right edge)." + }, + { + "name": "box-flex", + "status": "obsolete", + "syntax": "<number>", + "relevance": 0, + "browsers": [ + "E12", + "FF49", + "S3", + "C1", + "O15" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/box-flex" + } + ], + "description": "The -moz-box-flex and -webkit-box-flex CSS properties specify how a -moz-box or -webkit-box grows to fill the box that contains it, in the direction of the containing box's layout." + }, + { + "name": "box-flex-group", + "status": "obsolete", + "syntax": "<integer>", + "relevance": 0, + "browsers": [ + "S3", + "C1", + "O15" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/box-flex-group" + } + ], + "description": "The box-flex-group CSS property assigns the flexbox's child elements to a flex group." + }, + { + "name": "box-lines", + "status": "obsolete", + "syntax": "single | multiple", + "values": [ + { + "name": "single" + }, + { + "name": "multiple" + } + ], + "relevance": 0, + "browsers": [ + "S3", + "C1", + "O15" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/box-lines" + } + ], + "description": "The box-lines CSS property determines whether the box may have a single or multiple lines (rows for horizontally oriented boxes, columns for vertically oriented boxes)." + }, + { + "name": "box-ordinal-group", + "status": "obsolete", + "syntax": "<integer>", + "relevance": 0, + "browsers": [ + "E12", + "FF49", + "S3", + "C1", + "O15" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/box-ordinal-group" + } + ], + "description": "The box-ordinal-group CSS property assigns the flexbox's child elements to an ordinal group." + }, + { + "name": "box-orient", + "status": "obsolete", + "syntax": "horizontal | vertical | inline-axis | block-axis | inherit", + "values": [ + { + "name": "horizontal" + }, + { + "name": "vertical" + }, + { + "name": "inline-axis" + }, + { + "name": "block-axis" + }, + { + "name": "inherit" + } + ], + "relevance": 0, + "browsers": [ + "E12", + "FF49", + "S3", + "C1", + "O15" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/box-orient" + } + ], + "description": "The box-orient CSS property specifies whether an element lays out its contents horizontally or vertically." + }, + { + "name": "box-pack", + "status": "obsolete", + "syntax": "start | center | end | justify", + "values": [ + { + "name": "start" + }, + { + "name": "center" + }, + { + "name": "end" + }, + { + "name": "justify" + } + ], + "relevance": 0, + "browsers": [ + "E12", + "FF49", + "S3", + "C1", + "O15" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/box-pack" + } + ], + "description": "The -moz-box-pack and -webkit-box-pack CSS properties specify how a -moz-box or -webkit-box packs its contents in the direction of its layout. The effect of this is only visible if there is extra space in the box." + }, + { + "name": "caret", + "syntax": "<'caret-color'> || <'caret-shape'>", + "relevance": 50, + "description": "Shorthand for setting caret-color and caret-shape." + }, + { + "name": "caret-shape", + "syntax": "auto | bar | block | underscore", + "values": [ + { + "name": "auto" + }, + { + "name": "bar" + }, + { + "name": "block" + }, + { + "name": "underscore" + } + ], + "relevance": 50, + "description": "Specifies the desired shape of the text insertion caret." + }, + { + "name": "color-scheme", + "syntax": "normal | [ light | dark | <custom-ident> ]+ && only?", + "relevance": 57, + "browsers": [ + "E81", + "FF96", + "S13", + "C81", + "O68" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/color-scheme" + } + ], + "description": "The color-scheme CSS property allows an element to indicate which color schemes it can comfortably be rendered in." + }, + { + "name": "contain-intrinsic-size", + "syntax": "[ auto? [ none | <length> ] ]{1,2}", + "relevance": 50, + "browsers": [ + "E83", + "FF107", + "S17", + "C83", + "O69" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/contain-intrinsic-size" + } + ], + "description": "Size of an element when the element is subject to size containment." + }, + { + "name": "contain-intrinsic-block-size", + "syntax": "auto? [ none | <length> ]", + "relevance": 50, + "browsers": [ + "E95", + "FF107", + "S17", + "C95", + "O81" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/contain-intrinsic-contain-intrinsic-block-size" + } + ], + "description": "Block size of an element when the element is subject to size containment." + }, + { + "name": "contain-intrinsic-height", + "syntax": "auto? [ none | <length> ]", + "relevance": 50, + "browsers": [ + "E95", + "FF107", + "S17", + "C95", + "O81" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/contain-intrinsic-height" + } + ], + "description": "Height of an element when the element is subject to size containment." + }, + { + "name": "contain-intrinsic-inline-size", + "syntax": "auto? [ none | <length> ]", + "relevance": 50, + "browsers": [ + "E95", + "FF107", + "S17", + "C95", + "O81" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/contain-intrinsic-contain-intrinsic-inline-size" + } + ], + "description": "Inline size of an element when the element is subject to size containment." + }, + { + "name": "contain-intrinsic-width", + "syntax": "auto? [ none | <length> ]", + "relevance": 50, + "browsers": [ + "E95", + "FF107", + "S17", + "C95", + "O81" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/contain-intrinsic-width" + } + ], + "description": "Width of an element when the element is subject to size containment." + }, + { + "name": "container", + "syntax": "<'container-name'> [ / <'container-type'> ]?", + "relevance": 53, + "browsers": [ + "E105", + "FF110", + "S16", + "C105", + "O91" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/container" + } + ], + "description": "The container shorthand CSS property establishes the element as a query container and specifies the name or name for the containment context used in a container query." + }, + { + "name": "container-name", + "syntax": "none | <custom-ident>+", + "relevance": 50, + "browsers": [ + "E105", + "FF110", + "S16", + "C105", + "O91" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/container-name" + } + ], + "description": "The container-name CSS property specifies a list of query container names used by the @container at-rule in a container query." + }, + { + "name": "container-type", + "syntax": "normal | size | inline-size", + "values": [ + { + "name": "normal" + }, + { + "name": "size" + }, + { + "name": "inline-size" + } + ], + "relevance": 50, + "browsers": [ + "E105", + "FF110", + "S16", + "C105", + "O91" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/container-type" + } + ], + "description": "The container-type CSS property is used to define the type of containment used in a container query." + }, + { + "name": "content-visibility", + "syntax": "visible | auto | hidden", + "values": [ + { + "name": "visible" + }, + { + "name": "auto" + }, + { + "name": "hidden" + } + ], + "relevance": 52, + "browsers": [ + "E85", + "FFpreview", + "C85", + "O71" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/content-visibility" + } + ], + "description": "Controls whether or not an element renders its contents at all, along with forcing a strong set of containments, allowing user agents to potentially omit large swathes of layout and rendering work until it becomes needed." + }, + { + "name": "counter-set", + "syntax": "[ <counter-name> <integer>? ]+ | none", + "relevance": 50, + "browsers": [ + "E85", + "FF68", + "C85", + "O71" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/counter-set" + } + ], + "description": "The counter-set CSS property sets a CSS counter to a given value. It manipulates the value of existing counters, and will only create new counters if there isn't already a counter of the given name on the element." + }, + { + "name": "font-optical-sizing", + "syntax": "auto | none", + "values": [ + { + "name": "auto" + }, + { + "name": "none" + } + ], + "relevance": 50, + "browsers": [ + "E17", + "FF62", + "S11", + "C79", + "O66" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/font-optical-sizing" + } + ], + "description": "The font-optical-sizing CSS property allows developers to control whether browsers render text with slightly differing visual representations to optimize viewing at different sizes, or not. This only works for fonts that have an optical size variation axis." + }, + { + "name": "font-palette", + "syntax": "normal | light | dark | <palette-identifier>", + "relevance": 50, + "browsers": [ + "E101", + "FF107", + "S15.4", + "C101", + "O87" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/font-palette" + } + ], + "description": "The font-palette CSS property allows specifying one of the many palettes contained in a font that a user agent should use for the font. Users can also override the values in a palette or create a new palette by using the @font-palette-values at-rule." + }, + { + "name": "font-variation-settings", + "atRule": "@font-face", + "syntax": "normal | [ <string> <number> ]#", + "relevance": 51, + "browsers": [ + "E17", + "FF62", + "S11", + "C62", + "O49" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/font-variation-settings" + } + ], + "description": "The font-variation-settings CSS property provides low-level control over OpenType or TrueType font variations, by specifying the four letter axis names of the features you want to vary, along with their variation values." + }, + { + "name": "font-smooth", + "status": "nonstandard", + "syntax": "auto | never | always | <absolute-size> | <length>", + "relevance": 0, + "browsers": [ + "E79", + "FF25", + "S4", + "C5", + "O15" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/font-smooth" + } + ], + "description": "The font-smooth CSS property controls the application of anti-aliasing when fonts are rendered." + }, + { + "name": "font-synthesis-small-caps", + "syntax": "auto | none", + "values": [ + { + "name": "auto" + }, + { + "name": "none" + } + ], + "relevance": 50, + "browsers": [ + "E97", + "FF111", + "S16.4", + "C97", + "O83" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/font-synthesis-small-caps" + } + ], + "description": "The font-synthesis-small-caps CSS property lets you specify whether or not the browser may synthesize small-caps typeface when it is missing in a font family. Small-caps glyphs typically use the form of uppercase letters but are reduced to the size of lowercase letters." + }, + { + "name": "font-synthesis-style", + "syntax": "auto | none", + "values": [ + { + "name": "auto" + }, + { + "name": "none" + } + ], + "relevance": 50, + "browsers": [ + "E97", + "FF111", + "S16.4", + "C97", + "O83" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/font-synthesis-style" + } + ], + "description": "The font-synthesis-style CSS property lets you specify whether or not the browser may synthesize the oblique typeface when it is missing in a font family." + }, + { + "name": "font-synthesis-weight", + "syntax": "auto | none", + "values": [ + { + "name": "auto" + }, + { + "name": "none" + } + ], + "relevance": 50, + "browsers": [ + "E97", + "FF111", + "S16.4", + "C97", + "O83" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/font-synthesis-weight" + } + ], + "description": "The font-synthesis-weight CSS property lets you specify whether or not the browser may synthesize the bold typeface when it is missing in a font family." + }, + { + "name": "font-variant-emoji", + "syntax": "normal | text | emoji | unicode", + "values": [ + { + "name": "normal" + }, + { + "name": "text" + }, + { + "name": "emoji" + }, + { + "name": "unicode" + } + ], + "relevance": 50, + "browsers": [ + "FF108" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/font-variant-emoji" + } + ], + "description": "The font-variant-emoji CSS property specifies the default presentation style for displaying emojis." + }, + { + "name": "forced-color-adjust", + "syntax": "auto | none", + "values": [ + { + "name": "auto" + }, + { + "name": "none" + } + ], + "relevance": 57, + "browsers": [ + "E79", + "FF113", + "C89", + "IE10", + "O75" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/forced-color-adjust" + } + ], + "description": "Allows authors to opt certain elements out of forced colors mode. This then restores the control of those values to CSS" + }, + { + "name": "gap", + "syntax": "<'row-gap'> <'column-gap'>?", + "relevance": 67, + "browsers": [ + "E16", + "FF52", + "S10.1", + "C57", + "O44" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/gap" + } + ], + "description": "The gap CSS property is a shorthand property for row-gap and column-gap specifying the gutters between grid rows and columns." + }, + { + "name": "hanging-punctuation", + "syntax": "none | [ first || [ force-end | allow-end ] || last ]", + "relevance": 50, + "browsers": [ + "S10" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/hanging-punctuation" + } + ], + "description": "The hanging-punctuation CSS property specifies whether a punctuation mark should hang at the start or end of a line of text. Hanging punctuation may be placed outside the line box." + }, + { + "name": "hyphenate-character", + "syntax": "auto | <string>", + "relevance": 50, + "browsers": [ + "E106", + "FF98", + "S5.1", + "C106", + "O92" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/hyphenate-character" + } + ], + "description": "A hyphenate character used at the end of a line." + }, + { + "name": "hyphenate-limit-chars", + "syntax": "[ auto | <integer> ]{1,3}", + "relevance": 50, + "browsers": [ + "E109", + "C109", + "O95" + ], + "description": "The hyphenate-limit-chars CSS property specifies the minimum word length to allow hyphenation of words as well as the minimum number of characters before and after the hyphen." + }, + { + "name": "image-resolution", + "status": "experimental", + "syntax": "[ from-image || <resolution> ] && snap?", + "relevance": 50, + "description": "The image-resolution property specifies the intrinsic resolution of all raster images used in or on the element. It affects both content images (e.g. replaced elements and generated content) and decorative images (such as background-image). The intrinsic resolution of an image is used to determine the image’s intrinsic dimensions." + }, + { + "name": "initial-letter", + "status": "experimental", + "syntax": "normal | [ <number> <integer>? ]", + "relevance": 50, + "browsers": [ + "E110", + "S9", + "C110", + "O96" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/initial-letter" + } + ], + "description": "The initial-letter CSS property specifies styling for dropped, raised, and sunken initial letters." + }, + { + "name": "initial-letter-align", + "status": "experimental", + "syntax": "[ auto | alphabetic | hanging | ideographic ]", + "relevance": 50, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/initial-letter-align" + } + ], + "description": "The initial-letter-align CSS property specifies the alignment of initial letters within a paragraph." + }, + { + "name": "input-security", + "syntax": "auto | none", + "values": [ + { + "name": "auto" + }, + { + "name": "none" + } + ], + "relevance": 50, + "description": "Enables or disables the obscuring a sensitive test input." + }, + { + "name": "inset", + "syntax": "<'top'>{1,4}", + "relevance": 56, + "browsers": [ + "E87", + "FF66", + "S14.1", + "C87", + "O73" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/inset" + } + ], + "description": "The inset CSS property defines the logical block and inline start and end offsets of an element, which map to physical offsets depending on the element's writing mode, directionality, and text orientation. It corresponds to the top and bottom, or right and left properties depending on the values defined for writing-mode, direction, and text-orientation." + }, + { + "name": "inset-block", + "syntax": "<'top'>{1,2}", + "relevance": 50, + "browsers": [ + "E87", + "FF63", + "S14.1", + "C87", + "O73" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/inset-block" + } + ], + "description": "The inset-block CSS property defines the logical block start and end offsets of an element, which maps to physical offsets depending on the element's writing mode, directionality, and text orientation. It corresponds to the top and bottom, or right and left properties depending on the values defined for writing-mode, direction, and text-orientation." + }, + { + "name": "inset-block-end", + "syntax": "<'top'>", + "relevance": 50, + "browsers": [ + "E87", + "FF63", + "S14.1", + "C87", + "O73" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/inset-block-end" + } + ], + "description": "The inset-block-end CSS property defines the logical block end offset of an element, which maps to a physical offset depending on the element's writing mode, directionality, and text orientation. It corresponds to the top, right, bottom, or left property depending on the values defined for writing-mode, direction, and text-orientation." + }, + { + "name": "inset-block-start", + "syntax": "<'top'>", + "relevance": 50, + "browsers": [ + "E87", + "FF63", + "S14.1", + "C87", + "O73" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/inset-block-start" + } + ], + "description": "The inset-block-start CSS property defines the logical block start offset of an element, which maps to a physical offset depending on the element's writing mode, directionality, and text orientation. It corresponds to the top, right, bottom, or left property depending on the values defined for writing-mode, direction, and text-orientation." + }, + { + "name": "inset-inline", + "syntax": "<'top'>{1,2}", + "relevance": 50, + "browsers": [ + "E87", + "FF63", + "S14.1", + "C87", + "O73" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/inset-inline" + } + ], + "description": "The inset-inline CSS property defines the logical block start and end offsets of an element, which maps to physical offsets depending on the element's writing mode, directionality, and text orientation. It corresponds to the top and bottom, or right and left properties depending on the values defined for writing-mode, direction, and text-orientation." + }, + { + "name": "inset-inline-end", + "syntax": "<'top'>", + "relevance": 51, + "browsers": [ + "E87", + "FF63", + "S14.1", + "C87", + "O73" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/inset-inline-end" + } + ], + "description": "The inset-inline-end CSS property defines the logical inline end inset of an element, which maps to a physical inset depending on the element's writing mode, directionality, and text orientation. It corresponds to the top, right, bottom, or left property depending on the values defined for writing-mode, direction, and text-orientation." + }, + { + "name": "inset-inline-start", + "syntax": "<'top'>", + "relevance": 51, + "browsers": [ + "E87", + "FF63", + "S14.1", + "C87", + "O73" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/inset-inline-start" + } + ], + "description": "The inset-inline-start CSS property defines the logical inline start inset of an element, which maps to a physical offset depending on the element's writing mode, directionality, and text orientation. It corresponds to the top, right, bottom, or left property depending on the values defined for writing-mode, direction, and text-orientation." + }, + { + "name": "justify-tracks", + "status": "experimental", + "syntax": "[ normal | <content-distribution> | <overflow-position>? [ <content-position> | left | right ] ]#", + "relevance": 50, + "browsers": [ + "FF77" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/justify-tracks" + } + ], + "description": "The justify-tracks CSS property sets the alignment in the masonry axis for grid containers that have masonry in their inline axis" + }, + { + "name": "line-clamp", + "status": "experimental", + "syntax": "none | <integer>", + "relevance": 50, + "description": "The line-clamp property allows limiting the contents of a block container to the specified number of lines; remaining content is fragmented away and neither rendered nor measured. Optionally, it also allows inserting content into the last line box to indicate the continuity of truncated/interrupted content." + }, + { + "name": "line-height-step", + "status": "experimental", + "syntax": "<length>", + "relevance": 50, + "browsers": [ + "E79", + "C60", + "O47" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/line-height-step" + } + ], + "description": "The line-height-step CSS property defines the step units for line box heights. When the step unit is positive, line box heights are rounded up to the closest multiple of the unit. Negative values are invalid." + }, + { + "name": "margin-block", + "syntax": "<'margin-left'>{1,2}", + "relevance": 53, + "browsers": [ + "E87", + "FF66", + "S14.1", + "C87", + "O73" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/margin-block" + } + ], + "description": "The margin-block CSS property defines the logical block start and end margins of an element, which maps to physical margins depending on the element's writing mode, directionality, and text orientation." + }, + { + "name": "margin-inline", + "syntax": "<'margin-left'>{1,2}", + "relevance": 51, + "browsers": [ + "E87", + "FF66", + "S14.1", + "C87", + "O73" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/margin-inline" + } + ], + "description": "The margin-inline CSS property defines the logical inline start and end margins of an element, which maps to physical margins depending on the element's writing mode, directionality, and text orientation." + }, + { + "name": "margin-trim", + "status": "experimental", + "syntax": "none | in-flow | all", + "values": [ + { + "name": "none" + }, + { + "name": "in-flow" + }, + { + "name": "all" + } + ], + "relevance": 50, + "browsers": [ + "S16.4" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/margin-trim" + } + ], + "description": "The margin-trim property allows the container to trim the margins of its children where they adjoin the container’s edges." + }, + { + "name": "mask", + "syntax": "<mask-layer>#", + "relevance": 51, + "browsers": [ + "E79", + "FF2", + "S3.1", + "C1", + "O15" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/mask" + } + ], + "description": "The mask CSS property alters the visibility of an element by either partially or fully hiding it. This is accomplished by either masking or clipping the image at specific points." + }, + { + "name": "mask-border", + "syntax": "<'mask-border-source'> || <'mask-border-slice'> [ / <'mask-border-width'>? [ / <'mask-border-outset'> ]? ]? || <'mask-border-repeat'> || <'mask-border-mode'>", + "relevance": 50, + "browsers": [ + "E79", + "S3.1", + "C1", + "O15" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/mask-border" + } + ], + "description": "The mask-border CSS property lets you create a mask along the edge of an element's border.\n\nThis property is a shorthand for mask-border-source, mask-border-slice, mask-border-width, mask-border-outset, mask-border-repeat, and mask-border-mode. As with all shorthand properties, any omitted sub-values will be set to their initial value." + }, + { + "name": "mask-border-mode", + "syntax": "luminance | alpha", + "values": [ + { + "name": "luminance" + }, + { + "name": "alpha" + } + ], + "relevance": 50, + "description": "The mask-border-mode CSS property specifies the blending mode used in a mask border." + }, + { + "name": "mask-border-outset", + "syntax": "[ <length> | <number> ]{1,4}", + "relevance": 50, + "browsers": [ + "E79", + "S3.1", + "C1", + "O15" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/mask-border-outset" + } + ], + "description": "The mask-border-outset CSS property specifies the distance by which an element's mask border is set out from its border box." + }, + { + "name": "mask-border-repeat", + "syntax": "[ stretch | repeat | round | space ]{1,2}", + "relevance": 50, + "browsers": [ + "E79", + "S3.1", + "C1", + "O15" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/mask-border-repeat" + } + ], + "description": "The mask-border-repeat CSS property defines how the edge regions of a source image are adjusted to fit the dimensions of an element's mask border." + }, + { + "name": "mask-border-slice", + "syntax": "<number-percentage>{1,4} fill?", + "relevance": 50, + "browsers": [ + "E79", + "S3.1", + "C1", + "O15" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/mask-border-slice" + } + ], + "description": "The mask-border-slice CSS property divides the image specified by mask-border-source into regions. These regions are used to form the components of an element's mask border." + }, + { + "name": "mask-border-source", + "syntax": "none | <image>", + "relevance": 50, + "browsers": [ + "E79", + "S3.1", + "C1", + "O15" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/mask-border-source" + } + ], + "description": "The mask-border-source CSS property specifies the source image used to create an element's mask border.\n\nThe mask-border-slice property is used to divide the source image into regions, which are then dynamically applied to the final mask border." + }, + { + "name": "mask-border-width", + "syntax": "[ <length-percentage> | <number> | auto ]{1,4}", + "relevance": 50, + "browsers": [ + "E79", + "S3.1", + "C1", + "O15" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/mask-border-width" + } + ], + "description": "The mask-border-width CSS property specifies the width of an element's mask border." + }, + { + "name": "mask-clip", + "syntax": "[ <geometry-box> | no-clip ]#", + "relevance": 50, + "browsers": [ + "E79", + "FF53", + "S15.4", + "C1", + "O15" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/mask-clip" + } + ], + "description": "The mask-clip CSS property determines the area, which is affected by a mask. The painted content of an element must be restricted to this area." + }, + { + "name": "mask-composite", + "syntax": "<compositing-operator>#", + "relevance": 50, + "browsers": [ + "E18", + "FF53", + "S15.4" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/mask-composite" + } + ], + "description": "The mask-composite CSS property represents a compositing operation used on the current mask layer with the mask layers below it." + }, + { + "name": "masonry-auto-flow", + "status": "experimental", + "syntax": "[ pack | next ] || [ definite-first | ordered ]", + "relevance": 50, + "browsers": [ + "Spreview" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/masonry-auto-flow" + } + ], + "description": "The masonry-auto-flow CSS property modifies how items are placed when using masonry in CSS Grid Layout." + }, + { + "name": "math-depth", + "syntax": "auto-add | add(<integer>) | <integer>", + "relevance": 50, + "browsers": [ + "E109", + "FF117", + "C109", + "O95" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/math-depth" + } + ], + "description": "Describe a notion of \"depth\" for each element of a mathematical formula, with respect to the top-level container of that formula." + }, + { + "name": "math-shift", + "syntax": "normal | compact", + "values": [ + { + "name": "normal" + }, + { + "name": "compact" + } + ], + "relevance": 50, + "browsers": [ + "E109", + "C109", + "O95" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/math-shift" + } + ], + "description": "Used for positioning superscript during the layout of MathML scripted elements." + }, + { + "name": "math-style", + "syntax": "normal | compact", + "values": [ + { + "name": "normal" + }, + { + "name": "compact" + } + ], + "relevance": 50, + "browsers": [ + "E109", + "FF117", + "S14.1", + "C109", + "O95" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/math-style" + } + ], + "description": "The math-style property indicates whether MathML equations should render with normal or compact height." + }, + { + "name": "max-lines", + "status": "experimental", + "syntax": "none | <integer>", + "relevance": 50, + "description": "The max-lines property forces a break after a set number of lines" + }, + { + "name": "offset", + "syntax": "[ <'offset-position'>? [ <'offset-path'> [ <'offset-distance'> || <'offset-rotate'> ]? ]? ]! [ / <'offset-anchor'> ]?", + "relevance": 50, + "browsers": [ + "E79", + "FF72", + "S16", + "C55", + "O42" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/offset" + } + ], + "description": "The offset CSS property is a shorthand property for animating an element along a defined path." + }, + { + "name": "offset-anchor", + "syntax": "auto | <position>", + "relevance": 50, + "browsers": [ + "FF72", + "Spreview" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/offset-anchor" + } + ], + "description": "Defines an anchor point of the box positioned along the path. The anchor point specifies the point of the box which is to be considered as the point that is moved along the path." + }, + { + "name": "offset-distance", + "syntax": "<length-percentage>", + "relevance": 50, + "browsers": [ + "E79", + "FF72", + "Spreview", + "C55", + "O42" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/offset-distance" + } + ], + "description": "The offset-distance CSS property specifies a position along an offset-path." + }, + { + "name": "offset-path", + "syntax": "none | <offset-path> || <coord-box>", + "relevance": 50, + "browsers": [ + "E79", + "FF72", + "S15.4", + "C55", + "O45" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/offset-path" + } + ], + "description": "The offset-path CSS property specifies the offset path where the element gets positioned. The exact element’s position on the offset path is determined by the offset-distance property. An offset path is either a specified path with one or multiple sub-paths or the geometry of a not-styled basic shape. Each shape or path must define an initial position for the computed value of \"0\" for offset-distance and an initial direction which specifies the rotation of the object to the initial position.\n\nIn this specification, a direction (or rotation) of 0 degrees is equivalent to the direction of the positive x-axis in the object’s local coordinate system. In other words, a rotation of 0 degree points to the right side of the UA if the object and its ancestors have no transformation applied." + }, + { + "name": "offset-position", + "status": "experimental", + "syntax": "normal | auto | <position>", + "relevance": 50, + "browsers": [ + "E115", + "FF116", + "Spreview", + "C115" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/offset-position" + } + ], + "description": "Specifies the initial position of the offset path. If position is specified with static, offset-position would be ignored." + }, + { + "name": "offset-rotate", + "syntax": "[ auto | reverse ] || <angle>", + "relevance": 50, + "browsers": [ + "E79", + "FF72", + "Spreview", + "C56", + "O43" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/offset-rotate" + } + ], + "description": "The offset-rotate CSS property defines the direction of the element while positioning along the offset path." + }, + { + "name": "overflow-anchor", + "syntax": "auto | none", + "values": [ + { + "name": "auto" + }, + { + "name": "none" + } + ], + "relevance": 52, + "browsers": [ + "E79", + "FF66", + "C56", + "O43" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/overflow-anchor" + } + ], + "description": "The overflow-anchor CSS property provides a way to opt out browser scroll anchoring behavior which adjusts scroll position to minimize content shifts." + }, + { + "name": "overflow-block", + "syntax": "visible | hidden | clip | scroll | auto", + "values": [ + { + "name": "visible" + }, + { + "name": "hidden" + }, + { + "name": "clip" + }, + { + "name": "scroll" + }, + { + "name": "auto" + } + ], + "relevance": 50, + "browsers": [ + "FF69" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/overflow-block" + } + ], + "description": "The overflow-block CSS media feature can be used to test how the output device handles content that overflows the initial containing block along the block axis." + }, + { + "name": "overflow-clip-box", + "status": "nonstandard", + "syntax": "padding-box | content-box", + "values": [ + { + "name": "padding-box" + }, + { + "name": "content-box" + } + ], + "relevance": 0, + "description": "The overflow-clip-box CSS property specifies relative to which box the clipping happens when there is an overflow. It is short hand for the overflow-clip-box-inline and overflow-clip-box-block properties." + }, + { + "name": "overflow-clip-margin", + "syntax": "<visual-box> || <length [0,∞]>", + "relevance": 50, + "browsers": [ + "E90", + "FF102", + "C90", + "O76" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/overflow-clip-margin" + } + ], + "description": "The overflow-clip-margin CSS property determines how far outside its bounds an element with overflow: clip may be painted before being clipped." + }, + { + "name": "overflow-inline", + "syntax": "visible | hidden | clip | scroll | auto", + "values": [ + { + "name": "visible" + }, + { + "name": "hidden" + }, + { + "name": "clip" + }, + { + "name": "scroll" + }, + { + "name": "auto" + } + ], + "relevance": 50, + "browsers": [ + "FF69" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/overflow-inline" + } + ], + "description": "The overflow-inline CSS media feature can be used to test how the output device handles content that overflows the initial containing block along the inline axis." + }, + { + "name": "overscroll-behavior", + "syntax": "[ contain | none | auto ]{1,2}", + "relevance": 50, + "browsers": [ + "E18", + "FF59", + "S16", + "C63", + "O50" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/overscroll-behavior" + } + ], + "description": "The overscroll-behavior CSS property is shorthand for the overscroll-behavior-x and overscroll-behavior-y properties, which allow you to control the browser's scroll overflow behavior — what happens when the boundary of a scrolling area is reached." + }, + { + "name": "overscroll-behavior-block", + "syntax": "contain | none | auto", + "values": [ + { + "name": "contain" + }, + { + "name": "none" + }, + { + "name": "auto" + } + ], + "relevance": 50, + "browsers": [ + "E79", + "FF73", + "S16", + "C77", + "O64" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/overscroll-behavior-block" + } + ], + "description": "The overscroll-behavior-block CSS property sets the browser's behavior when the block direction boundary of a scrolling area is reached." + }, + { + "name": "overscroll-behavior-inline", + "syntax": "contain | none | auto", + "values": [ + { + "name": "contain" + }, + { + "name": "none" + }, + { + "name": "auto" + } + ], + "relevance": 50, + "browsers": [ + "E79", + "FF73", + "S16", + "C77", + "O64" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/overscroll-behavior-inline" + } + ], + "description": "The overscroll-behavior-inline CSS property sets the browser's behavior when the inline direction boundary of a scrolling area is reached." + }, + { + "name": "overscroll-behavior-x", + "syntax": "contain | none | auto", + "values": [ + { + "name": "contain" + }, + { + "name": "none" + }, + { + "name": "auto" + } + ], + "relevance": 50, + "browsers": [ + "E18", + "FF59", + "S16", + "C63", + "O50" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/overscroll-behavior-x" + } + ], + "description": "The overscroll-behavior-x CSS property is allows you to control the browser's scroll overflow behavior — what happens when the boundary of a scrolling area is reached — in the x axis direction." + }, + { + "name": "overscroll-behavior-y", + "syntax": "contain | none | auto", + "values": [ + { + "name": "contain" + }, + { + "name": "none" + }, + { + "name": "auto" + } + ], + "relevance": 50, + "browsers": [ + "E18", + "FF59", + "S16", + "C63", + "O50" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/overscroll-behavior-y" + } + ], + "description": "The overscroll-behavior-y CSS property is allows you to control the browser's scroll overflow behavior — what happens when the boundary of a scrolling area is reached — in the y axis direction." + }, + { + "name": "padding-block", + "syntax": "<'padding-left'>{1,2}", + "relevance": 53, + "browsers": [ + "E87", + "FF66", + "S14.1", + "C87", + "O73" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/padding-block" + } + ], + "description": "The padding-block CSS property defines the logical block start and end padding of an element, which maps to physical padding properties depending on the element's writing mode, directionality, and text orientation." + }, + { + "name": "padding-inline", + "syntax": "<'padding-left'>{1,2}", + "relevance": 54, + "browsers": [ + "E87", + "FF66", + "S14.1", + "C87", + "O73" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/padding-inline" + } + ], + "description": "The padding-inline CSS property defines the logical inline start and end padding of an element, which maps to physical padding properties depending on the element's writing mode, directionality, and text orientation." + }, + { + "name": "page", + "syntax": "auto | <custom-ident>", + "relevance": 50, + "browsers": [ + "E85", + "FF110", + "S≤13.1", + "C85", + "O71" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/page" + } + ], + "description": "The page CSS property is used to specify the named page, a specific type of page defined by the @page at-rule." + }, + { + "name": "place-content", + "syntax": "<'align-content'> <'justify-content'>?", + "relevance": 50, + "browsers": [ + "E79", + "FF45", + "S9", + "C59", + "O46" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/place-content" + } + ], + "description": "The place-content CSS shorthand property sets both the align-content and justify-content properties." + }, + { + "name": "place-items", + "syntax": "<'align-items'> <'justify-items'>?", + "relevance": 50, + "browsers": [ + "E79", + "FF45", + "S11", + "C59", + "O46" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/place-items" + } + ], + "description": "The CSS place-items shorthand property sets both the align-items and justify-items properties. The first value is the align-items property value, the second the justify-items one. If the second value is not present, the first value is also used for it." + }, + { + "name": "place-self", + "syntax": "<'align-self'> <'justify-self'>?", + "relevance": 50, + "browsers": [ + "E79", + "FF45", + "S11", + "C59", + "O46" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/place-self" + } + ], + "description": "The place-self CSS property is a shorthand property sets both the align-self and justify-self properties. The first value is the align-self property value, the second the justify-self one. If the second value is not present, the first value is also used for it." + }, + { + "name": "print-color-adjust", + "syntax": "economy | exact", + "values": [ + { + "name": "economy" + }, + { + "name": "exact" + } + ], + "relevance": 50, + "browsers": [ + "E79", + "FF97", + "S15.4", + "C17", + "O15" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/print-color-adjust" + } + ], + "description": "Defines what optimization the user agent is allowed to do when adjusting the appearance for an output device." + }, + { + "name": "rotate", + "syntax": "none | <angle> | [ x | y | z | <number>{3} ] && <angle>", + "relevance": 50, + "browsers": [ + "E104", + "FF72", + "S14.1", + "C104", + "O90" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/rotate" + } + ], + "description": "The rotate CSS property allows you to specify rotation transforms individually and independently of the transform property. This maps better to typical user interface usage, and saves having to remember the exact order of transform functions to specify in the transform value." + }, + { + "name": "row-gap", + "syntax": "normal | <length-percentage>", + "relevance": 55, + "browsers": [ + "E16", + "FF52", + "S10.1", + "C47", + "O34" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/row-gap" + } + ], + "description": "The row-gap CSS property specifies the gutter between grid rows." + }, + { + "name": "ruby-merge", + "status": "experimental", + "syntax": "separate | collapse | auto", + "values": [ + { + "name": "separate" + }, + { + "name": "collapse" + }, + { + "name": "auto" + } + ], + "relevance": 50, + "description": "This property controls how ruby annotation boxes should be rendered when there are more than one in a ruby container box: whether each pair should be kept separate, the annotations should be collapsed and rendered as a group, or the separation should be determined based on the space available." + }, + { + "name": "scale", + "syntax": "none | <number>{1,3}", + "relevance": 50, + "browsers": [ + "E104", + "FF72", + "S14.1", + "C104", + "O90" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/scale" + } + ], + "description": "The scale CSS property allows you to specify scale transforms individually and independently of the transform property. This maps better to typical user interface usage, and saves having to remember the exact order of transform functions to specify in the transform value." + }, + { + "name": "scrollbar-color", + "syntax": "auto | <color>{2}", + "relevance": 50, + "browsers": [ + "E118", + "FF64", + "C118" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/scrollbar-color" + } + ], + "description": "The scrollbar-color CSS property sets the color of the scrollbar track and thumb." + }, + { + "name": "scrollbar-gutter", + "syntax": "auto | stable && both-edges?", + "relevance": 50, + "browsers": [ + "E94", + "FF97", + "C94", + "O80" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/scrollbar-gutter" + } + ], + "description": "The scrollbar-gutter CSS property allows authors to reserve space for the scrollbar, preventing unwanted layout changes as the content grows while also avoiding unnecessary visuals when scrolling isn't needed." + }, + { + "name": "scrollbar-width", + "syntax": "auto | thin | none", + "values": [ + { + "name": "auto" + }, + { + "name": "thin" + }, + { + "name": "none" + } + ], + "relevance": 50, + "browsers": [ + "E115", + "FF64", + "C115" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/scrollbar-width" + } + ], + "description": "The scrollbar-width property allows the author to set the maximum thickness of an element’s scrollbars when they are shown. " + }, + { + "name": "scroll-margin", + "syntax": "<length>{1,4}", + "relevance": 50, + "browsers": [ + "E79", + "FF90", + "S14.1", + "C69", + "O56" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/scroll-margin" + } + ], + "description": "The scroll-margin property is a shorthand property which sets all of the scroll-margin longhands, assigning values much like the margin property does for the margin-* longhands." + }, + { + "name": "scroll-margin-block", + "syntax": "<length>{1,2}", + "relevance": 50, + "browsers": [ + "E79", + "FF68", + "S15", + "C69", + "O56" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/scroll-margin-block" + } + ], + "description": "The scroll-margin-block property is a shorthand property which sets the scroll-margin longhands in the block dimension." + }, + { + "name": "scroll-margin-block-start", + "syntax": "<length>", + "relevance": 50, + "browsers": [ + "E79", + "FF68", + "S15", + "C69", + "O56" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/scroll-margin-block-start" + } + ], + "description": "The scroll-margin-block-start property defines the margin of the scroll snap area at the start of the block dimension that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container’s coordinate space), then adding the specified outsets." + }, + { + "name": "scroll-margin-block-end", + "syntax": "<length>", + "relevance": 50, + "browsers": [ + "E79", + "FF68", + "S15", + "C69", + "O56" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/scroll-margin-block-end" + } + ], + "description": "The scroll-margin-block-end property defines the margin of the scroll snap area at the end of the block dimension that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container’s coordinate space), then adding the specified outsets." + }, + { + "name": "scroll-margin-bottom", + "syntax": "<length>", + "relevance": 50, + "browsers": [ + "E79", + "FF68", + "S14.1", + "C69", + "O56" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/scroll-margin-bottom" + } + ], + "description": "The scroll-margin-bottom property defines the bottom margin of the scroll snap area that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container’s coordinate space), then adding the specified outsets." + }, + { + "name": "scroll-margin-inline", + "syntax": "<length>{1,2}", + "relevance": 50, + "browsers": [ + "E79", + "FF68", + "S15", + "C69", + "O56" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/scroll-margin-inline" + } + ], + "description": "The scroll-margin-inline property is a shorthand property which sets the scroll-margin longhands in the inline dimension." + }, + { + "name": "scroll-margin-inline-start", + "syntax": "<length>", + "relevance": 50, + "browsers": [ + "E79", + "FF68", + "S15", + "C69", + "O56" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/scroll-margin-inline-start" + } + ], + "description": "The scroll-margin-inline-start property defines the margin of the scroll snap area at the start of the inline dimension that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container’s coordinate space), then adding the specified outsets." + }, + { + "name": "scroll-margin-inline-end", + "syntax": "<length>", + "relevance": 50, + "browsers": [ + "E79", + "FF68", + "S15", + "C69", + "O56" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/scroll-margin-inline-end" + } + ], + "description": "The scroll-margin-inline-end property defines the margin of the scroll snap area at the end of the inline dimension that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container’s coordinate space), then adding the specified outsets." + }, + { + "name": "scroll-margin-left", + "syntax": "<length>", + "relevance": 50, + "browsers": [ + "E79", + "FF68", + "S14.1", + "C69", + "O56" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/scroll-margin-left" + } + ], + "description": "The scroll-margin-left property defines the left margin of the scroll snap area that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container’s coordinate space), then adding the specified outsets." + }, + { + "name": "scroll-margin-right", + "syntax": "<length>", + "relevance": 50, + "browsers": [ + "E79", + "FF68", + "S14.1", + "C69", + "O56" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/scroll-margin-right" + } + ], + "description": "The scroll-margin-right property defines the right margin of the scroll snap area that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container’s coordinate space), then adding the specified outsets." + }, + { + "name": "scroll-margin-top", + "syntax": "<length>", + "relevance": 50, + "browsers": [ + "E79", + "FF68", + "S14.1", + "C69", + "O56" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/scroll-margin-top" + } + ], + "description": "The scroll-margin-top property defines the top margin of the scroll snap area that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container’s coordinate space), then adding the specified outsets." + }, + { + "name": "scroll-padding", + "syntax": "[ auto | <length-percentage> ]{1,4}", + "relevance": 50, + "browsers": [ + "E79", + "FF68", + "S14.1", + "C69", + "O56" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/scroll-padding" + } + ], + "description": "The scroll-padding property is a shorthand property which sets all of the scroll-padding longhands, assigning values much like the padding property does for the padding-* longhands." + }, + { + "name": "scroll-padding-block", + "syntax": "[ auto | <length-percentage> ]{1,2}", + "relevance": 50, + "browsers": [ + "E79", + "FF68", + "S15", + "C69", + "O56" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/scroll-padding-block" + } + ], + "description": "The scroll-padding-block property is a shorthand property which sets the scroll-padding longhands for the block dimension." + }, + { + "name": "scroll-padding-block-start", + "syntax": "auto | <length-percentage>", + "relevance": 50, + "browsers": [ + "E79", + "FF68", + "S15", + "C69", + "O56" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/scroll-padding-block-start" + } + ], + "description": "The scroll-padding-block-start property defines offsets for the start edge in the block dimension of the optimal viewing region of the scrollport: the region used as the target region for placing things in view of the user. This allows the author to exclude regions of the scrollport that are obscured by other content (such as fixed-positioned toolbars or sidebars) or simply to put more breathing room between a targeted element and the edges of the scrollport." + }, + { + "name": "scroll-padding-block-end", + "syntax": "auto | <length-percentage>", + "relevance": 50, + "browsers": [ + "E79", + "FF68", + "S15", + "C69", + "O56" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/scroll-padding-block-end" + } + ], + "description": "The scroll-padding-block-end property defines offsets for the end edge in the block dimension of the optimal viewing region of the scrollport: the region used as the target region for placing things in view of the user. This allows the author to exclude regions of the scrollport that are obscured by other content (such as fixed-positioned toolbars or sidebars) or simply to put more breathing room between a targeted element and the edges of the scrollport." + }, + { + "name": "scroll-padding-bottom", + "syntax": "auto | <length-percentage>", + "relevance": 50, + "browsers": [ + "E79", + "FF68", + "S14.1", + "C69", + "O56" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/scroll-padding-bottom" + } + ], + "description": "The scroll-padding-bottom property defines offsets for the bottom of the optimal viewing region of the scrollport: the region used as the target region for placing things in view of the user. This allows the author to exclude regions of the scrollport that are obscured by other content (such as fixed-positioned toolbars or sidebars) or simply to put more breathing room between a targeted element and the edges of the scrollport." + }, + { + "name": "scroll-padding-inline", + "syntax": "[ auto | <length-percentage> ]{1,2}", + "relevance": 50, + "browsers": [ + "E79", + "FF68", + "S15", + "C69", + "O56" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/scroll-padding-inline" + } + ], + "description": "The scroll-padding-inline property is a shorthand property which sets the scroll-padding longhands for the inline dimension." + }, + { + "name": "scroll-padding-inline-start", + "syntax": "auto | <length-percentage>", + "relevance": 50, + "browsers": [ + "E79", + "FF68", + "S15", + "C69", + "O56" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/scroll-padding-inline-start" + } + ], + "description": "The scroll-padding-inline-start property defines offsets for the start edge in the inline dimension of the optimal viewing region of the scrollport: the region used as the target region for placing things in view of the user. This allows the author to exclude regions of the scrollport that are obscured by other content (such as fixed-positioned toolbars or sidebars) or simply to put more breathing room between a targeted element and the edges of the scrollport." + }, + { + "name": "scroll-padding-inline-end", + "syntax": "auto | <length-percentage>", + "relevance": 50, + "browsers": [ + "E79", + "FF68", + "S15", + "C69", + "O56" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/scroll-padding-inline-end" + } + ], + "description": "The scroll-padding-inline-end property defines offsets for the end edge in the inline dimension of the optimal viewing region of the scrollport: the region used as the target region for placing things in view of the user. This allows the author to exclude regions of the scrollport that are obscured by other content (such as fixed-positioned toolbars or sidebars) or simply to put more breathing room between a targeted element and the edges of the scrollport." + }, + { + "name": "scroll-padding-left", + "syntax": "auto | <length-percentage>", + "relevance": 50, + "browsers": [ + "E79", + "FF68", + "S14.1", + "C69", + "O56" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/scroll-padding-left" + } + ], + "description": "The scroll-padding-left property defines offsets for the left of the optimal viewing region of the scrollport: the region used as the target region for placing things in view of the user. This allows the author to exclude regions of the scrollport that are obscured by other content (such as fixed-positioned toolbars or sidebars) or simply to put more breathing room between a targeted element and the edges of the scrollport." + }, + { + "name": "scroll-padding-right", + "syntax": "auto | <length-percentage>", + "relevance": 50, + "browsers": [ + "E79", + "FF68", + "S14.1", + "C69", + "O56" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/scroll-padding-right" + } + ], + "description": "The scroll-padding-right property defines offsets for the right of the optimal viewing region of the scrollport: the region used as the target region for placing things in view of the user. This allows the author to exclude regions of the scrollport that are obscured by other content (such as fixed-positioned toolbars or sidebars) or simply to put more breathing room between a targeted element and the edges of the scrollport." + }, + { + "name": "scroll-padding-top", + "syntax": "auto | <length-percentage>", + "relevance": 51, + "browsers": [ + "E79", + "FF68", + "S14.1", + "C69", + "O56" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/scroll-padding-top" + } + ], + "description": "The scroll-padding-top property defines offsets for the top of the optimal viewing region of the scrollport: the region used as the target region for placing things in view of the user. This allows the author to exclude regions of the scrollport that are obscured by other content (such as fixed-positioned toolbars or sidebars) or simply to put more breathing room between a targeted element and the edges of the scrollport." + }, + { + "name": "scroll-snap-align", + "syntax": "[ none | start | end | center ]{1,2}", + "relevance": 53, + "browsers": [ + "E79", + "FF68", + "S11", + "C69", + "O56" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/scroll-snap-align" + } + ], + "description": "The scroll-snap-align property specifies the box’s snap position as an alignment of its snap area (as the alignment subject) within its snap container’s snapport (as the alignment container). The two values specify the snapping alignment in the block axis and inline axis, respectively. If only one value is specified, the second value defaults to the same value." + }, + { + "name": "scroll-snap-stop", + "syntax": "normal | always", + "values": [ + { + "name": "normal" + }, + { + "name": "always" + } + ], + "relevance": 51, + "browsers": [ + "E79", + "FF103", + "S15", + "C75", + "O62" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/scroll-snap-stop" + } + ], + "description": "The scroll-snap-stop CSS property defines whether the scroll container is allowed to \"pass over\" possible snap positions." + }, + { + "name": "scroll-snap-type-x", + "status": "obsolete", + "syntax": "none | mandatory | proximity", + "values": [ + { + "name": "none" + }, + { + "name": "mandatory" + }, + { + "name": "proximity" + } + ], + "relevance": 0, + "description": "The scroll-snap-type-x CSS property defines how strictly snap points are enforced on the horizontal axis of the scroll container in case there is one.\n\nSpecifying any precise animations or physics used to enforce those snap points is not covered by this property but instead left up to the user agent." + }, + { + "name": "scroll-snap-type-y", + "status": "obsolete", + "syntax": "none | mandatory | proximity", + "values": [ + { + "name": "none" + }, + { + "name": "mandatory" + }, + { + "name": "proximity" + } + ], + "relevance": 0, + "description": "The scroll-snap-type-y CSS property defines how strictly snap points are enforced on the vertical axis of the scroll container in case there is one.\n\nSpecifying any precise animations or physics used to enforce those snap points is not covered by this property but instead left up to the user agent." + }, + { + "name": "scroll-timeline", + "status": "experimental", + "syntax": "[ <'scroll-timeline-name'> <'scroll-timeline-axis'>? ]#", + "relevance": 50, + "browsers": [ + "E115", + "FF111", + "C115" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/scroll-timeline" + } + ], + "description": "Defines a name that can be used to identify the source element of a scroll timeline, along with the scrollbar axis that should provide the timeline." + }, + { + "name": "scroll-timeline-axis", + "status": "experimental", + "syntax": "[ block | inline | x | y ]#", + "relevance": 50, + "browsers": [ + "E115", + "FF111", + "C115", + "O97" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/scroll-timeline-axis" + } + ], + "description": "Specifies the scrollbar that will be used to provide the timeline for a scroll-timeline animation" + }, + { + "name": "scroll-timeline-name", + "status": "experimental", + "syntax": "none | <dashed-ident>#", + "relevance": 50, + "browsers": [ + "E115", + "FF111", + "C115", + "O97" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/scroll-timeline-name" + } + ], + "description": "Defines a name that can be used to identify an element as the source of a scroll-timeline." + }, + { + "name": "text-combine-upright", + "syntax": "none | all | [ digits <integer>? ]", + "relevance": 50, + "browsers": [ + "E79", + "FF48", + "S15.4", + "C48", + "IE11", + "O35" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/text-combine-upright" + } + ], + "description": "The text-combine-upright CSS property specifies the combination of multiple characters into the space of a single character. If the combined text is wider than 1em, the user agent must fit the contents within 1em. The resulting composition is treated as a single upright glyph for layout and decoration. This property only has an effect in vertical writing modes.\n\nThis is used to produce an effect that is known as tate-chū-yoko (縦中横) in Japanese, or as 直書橫向 in Chinese." + }, + { + "name": "text-decoration-skip", + "status": "experimental", + "syntax": "none | [ objects || [ spaces | [ leading-spaces || trailing-spaces ] ] || edges || box-decoration ]", + "relevance": 52, + "browsers": [ + "S12.1", + "C57", + "O44" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/text-decoration-skip" + } + ], + "description": "The text-decoration-skip CSS property specifies what parts of the element’s content any text decoration affecting the element must skip over. It controls all text decoration lines drawn by the element and also any text decoration lines drawn by its ancestors." + }, + { + "name": "text-decoration-skip-ink", + "syntax": "auto | all | none", + "values": [ + { + "name": "auto" + }, + { + "name": "all" + }, + { + "name": "none" + } + ], + "relevance": 51, + "browsers": [ + "E79", + "FF70", + "S15.4", + "C64", + "O50" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/text-decoration-skip-ink" + } + ], + "description": "The text-decoration-skip-ink CSS property specifies how overlines and underlines are drawn when they pass over glyph ascenders and descenders." + }, + { + "name": "text-decoration-thickness", + "syntax": "auto | from-font | <length> | <percentage> ", + "relevance": 50, + "browsers": [ + "E89", + "FF70", + "S12.1", + "C89", + "O75" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/text-decoration-thickness" + } + ], + "description": "The text-decoration-thickness CSS property sets the thickness, or width, of the decoration line that is used on text in an element, such as a line-through, underline, or overline." + }, + { + "name": "text-emphasis", + "syntax": "<'text-emphasis-style'> || <'text-emphasis-color'>", + "relevance": 50, + "browsers": [ + "E99", + "FF46", + "S7", + "C99", + "O85" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/text-emphasis" + } + ], + "description": "The text-emphasis CSS property is a shorthand property for setting text-emphasis-style and text-emphasis-color in one declaration. This property will apply the specified emphasis mark to each character of the element's text, except separator characters, like spaces, and control characters." + }, + { + "name": "text-emphasis-color", + "syntax": "<color>", + "relevance": 50, + "browsers": [ + "E99", + "FF46", + "S7", + "C99", + "O85" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/text-emphasis-color" + } + ], + "description": "The text-emphasis-color CSS property defines the color used to draw emphasis marks on text being rendered in the HTML document. This value can also be set and reset using the text-emphasis shorthand." + }, + { + "name": "text-emphasis-position", + "syntax": "[ over | under ] && [ right | left ]", + "relevance": 50, + "browsers": [ + "E99", + "FF46", + "S7", + "C99", + "O85" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/text-emphasis-position" + } + ], + "description": "The text-emphasis-position CSS property describes where emphasis marks are drawn at. The effect of emphasis marks on the line height is the same as for ruby text: if there isn't enough place, the line height is increased." + }, + { + "name": "text-emphasis-style", + "syntax": "none | [ [ filled | open ] || [ dot | circle | double-circle | triangle | sesame ] ] | <string>", + "relevance": 50, + "browsers": [ + "E99", + "FF46", + "S7", + "C99", + "O85" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/text-emphasis-style" + } + ], + "description": "The text-emphasis-style CSS property defines the type of emphasis used. It can also be set, and reset, using the text-emphasis shorthand." + }, + { + "name": "text-size-adjust", + "status": "experimental", + "syntax": "none | auto | <percentage>", + "relevance": 58, + "browsers": [ + "E79", + "C54", + "O41" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/text-size-adjust" + } + ], + "description": "The text-size-adjust CSS property controls the text inflation algorithm used on some smartphones and tablets. Other browsers will ignore this property." + }, + { + "name": "text-underline-offset", + "syntax": "auto | <length> | <percentage> ", + "relevance": 51, + "browsers": [ + "E87", + "FF70", + "S12.1", + "C87", + "O73" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/text-underline-offset" + } + ], + "description": "The text-underline-offset CSS property sets the offset distance of an underline text decoration line (applied using text-decoration) from its original position." + }, + { + "name": "text-wrap", + "syntax": "wrap | nowrap | balance | stable | pretty", + "values": [ + { + "name": "wrap" + }, + { + "name": "nowrap" + }, + { + "name": "balance" + }, + { + "name": "stable" + }, + { + "name": "pretty" + } + ], + "relevance": 53, + "browsers": [ + "E114", + "C114" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/text-wrap" + } + ], + "description": "The text-wrap CSS property controls how text inside an element is wrapped." + }, + { + "name": "timeline-scope", + "status": "experimental", + "syntax": "none | <dashed-ident>#", + "relevance": 50, + "browsers": [ + "E116", + "C116" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/timeline-scope" + } + ], + "description": "The timeline-scope CSS property modifies the scope of a named animation timeline." + }, + { + "name": "transform-box", + "syntax": "content-box | border-box | fill-box | stroke-box | view-box", + "values": [ + { + "name": "content-box" + }, + { + "name": "border-box" + }, + { + "name": "fill-box" + }, + { + "name": "stroke-box" + }, + { + "name": "view-box" + } + ], + "relevance": 50, + "browsers": [ + "E79", + "FF55", + "S11", + "C64", + "O51" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/transform-box" + } + ], + "description": "The transform-box CSS property defines the layout box to which the transform and transform-origin properties relate." + }, + { + "name": "translate", + "syntax": "none | <length-percentage> [ <length-percentage> <length>? ]?", + "relevance": 50, + "browsers": [ + "E104", + "FF72", + "S14.1", + "C104", + "O90" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/translate" + } + ], + "description": "The translate CSS property allows you to specify translation transforms individually and independently of the transform property. This maps better to typical user interface usage, and saves having to remember the exact order of transform functions to specify in the transform value." + }, + { + "name": "view-timeline", + "status": "experimental", + "syntax": "[ <'view-timeline-name'> <'view-timeline-axis'>? ]#", + "relevance": 50, + "browsers": [ + "E115", + "FF114", + "C115" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/view-timeline" + } + ], + "description": "The view-timeline CSS shorthand property is used to define a named view progress timeline, which is progressed through based on the change in visibility of an element (known as the subject) inside a scrollable element (scroller). view-timeline is set on the subject." + }, + { + "name": "view-timeline-axis", + "status": "experimental", + "syntax": "[ block | inline | x | y ]#", + "relevance": 50, + "browsers": [ + "E115", + "FF114", + "C115" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/view-timeline-axis" + } + ], + "description": "The view-timeline-axis CSS property is used to specify the scrollbar direction that will be used to provide the timeline for a named view progress timeline animation, which is progressed through based on the change in visibility of an element (known as the subject) inside a scrollable element (scroller). view-timeline-axis is set on the subject. See CSS scroll-driven animations for more details." + }, + { + "name": "view-timeline-inset", + "status": "experimental", + "syntax": "[ [ auto | <length-percentage> ]{1,2} ]#", + "relevance": 50, + "browsers": [ + "E115", + "C115" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/view-timeline-inset" + } + ], + "description": "The view-timeline-inset CSS property is used to specify one or two values representing an adjustment to the position of the scrollport (see Scroll container for more details) in which the subject element of a named view progress timeline animation is deemed to be visible. Put another way, this allows you to specify start and/or end inset (or outset) values that offset the position of the timeline." + }, + { + "name": "view-timeline-name", + "status": "experimental", + "syntax": "none | <dashed-ident>#", + "relevance": 50, + "browsers": [ + "E115", + "FF111", + "C115" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/view-timeline-name" + } + ], + "description": "The view-timeline-name CSS property is used to define the name of a named view progress timeline, which is progressed through based on the change in visibility of an element (known as the subject) inside a scrollable element (scroller). view-timeline is set on the subject." + }, + { + "name": "view-transition-name", + "status": "experimental", + "syntax": "none | <custom-ident>", + "relevance": 50, + "browsers": [ + "E111", + "C111", + "O97" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/view-transition-name" + } + ], + "description": "The view-transition-name CSS property provides the selected element with a distinct identifying name (a custom-ident) and causes it to participate in a separate view transition from the root view transition — or no view transition if the none value is specified." + }, + { + "name": "white-space", + "syntax": "normal | pre | nowrap | pre-wrap | pre-line | break-spaces | [ <'white-space-collapse'> || <'text-wrap'> || <'white-space-trim'> ]", + "relevance": 89, + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE5.5", + "O4" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/white-space" + } + ], + "description": "Specifies how whitespace is handled in an element." + }, + { + "name": "white-space-collapse", + "syntax": "collapse | discard | preserve | preserve-breaks | preserve-spaces | break-spaces", + "values": [ + { + "name": "collapse" + }, + { + "name": "discard" + }, + { + "name": "preserve" + }, + { + "name": "preserve-breaks" + }, + { + "name": "preserve-spaces" + }, + { + "name": "break-spaces" + } + ], + "relevance": 50, + "browsers": [ + "E114", + "C114" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/white-space-collapse" + } + ], + "description": "The white-space-collapse CSS property controls how white space inside an element is collapsed." + }, + { + "name": "white-space-trim", + "syntax": "none | discard-before || discard-after || discard-inner", + "relevance": 50, + "description": "" + }, + { + "name": "speak-as", + "atRule": "@counter-style", + "syntax": "auto | bullets | numbers | words | spell-out | <counter-style-name>", + "relevance": 50, + "description": "The speak-as descriptor specifies how a counter symbol constructed with a given @counter-style will be represented in the spoken form. For example, an author can specify a counter symbol to be either spoken as its numerical value or just represented with an audio cue." + }, + { + "name": "base-palette", + "atRule": "@font-palette-values", + "syntax": "light | dark | <integer [0,∞]>", + "relevance": 50, + "description": "The base-palette CSS descriptor is used to specify the name or index of a pre-defined palette to be used for creating a new palette. If the specified base-palette does not exist, then the palette defined at index 0 will be used." + }, + { + "name": "override-colors", + "atRule": "@font-palette-values", + "syntax": "[ <integer [0,∞]> <absolute-color-base> ]#", + "relevance": 50, + "description": "The override-colors CSS descriptor is used to override colors in the chosen base-palette for a color font." + }, + { + "name": "ascent-override", + "atRule": "@font-face", + "status": "experimental", + "syntax": "normal | <percentage>", + "relevance": 50, + "description": "Describes the ascent metric of a font." + }, + { + "name": "descent-override", + "atRule": "@font-face", + "status": "experimental", + "syntax": "normal | <percentage>", + "relevance": 50, + "description": "Describes the descent metric of a font." + }, + { + "name": "font-display", + "atRule": "@font-face", + "status": "experimental", + "syntax": "[ auto | block | swap | fallback | optional ]", + "relevance": 72, + "description": "The font-display descriptor determines how a font face is displayed based on whether and when it is downloaded and ready to use." + }, + { + "name": "line-gap-override", + "atRule": "@font-face", + "status": "experimental", + "syntax": "normal | <percentage>", + "relevance": 50, + "description": "Describes the line-gap metric of a font." + }, + { + "name": "size-adjust", + "atRule": "@font-face", + "status": "experimental", + "syntax": "<percentage>", + "relevance": 50, + "description": "A multiplier for glyph outlines and metrics of a font." + }, + { + "name": "bleed", + "atRule": "@page", + "syntax": "auto | <length>", + "relevance": 50, + "description": "The bleed CSS at-rule descriptor, used with the @page at-rule, specifies the extent of the page bleed area outside the page box. This property only has effect if crop marks are enabled using the marks property." + }, + { + "name": "marks", + "atRule": "@page", + "syntax": "none | [ crop || cross ]", + "relevance": 50, + "description": "The marks CSS at-rule descriptor, used with the @page at-rule, adds crop and/or cross marks to the presentation of the document. Crop marks indicate where the page should be cut. Cross marks are used to align sheets." + }, + { + "name": "page-orientation", + "atRule": "@page", + "syntax": "upright | rotate-left | rotate-right ", + "relevance": 50, + "description": "The page-orientation CSS descriptor for the @page at-rule controls the rotation of a printed page. It handles the flow of content across pages when the orientation of a page is changed. This behavior differs from the size descriptor in that a user can define the direction in which to rotate the page." + }, + { + "name": "syntax", + "atRule": "@property", + "status": "experimental", + "syntax": "<string>", + "relevance": 50, + "description": "Specifies the syntax of the custom property registration represented by the @property rule, controlling how the property’s value is parsed at computed value time." + }, + { + "name": "inherits", + "atRule": "@property", + "status": "experimental", + "syntax": "true | false", + "values": [ + { + "name": "true" + }, + { + "name": "false" + } + ], + "relevance": 50, + "description": "Specifies the inherit flag of the custom property registration represented by the @property rule, controlling whether or not the property inherits by default." + }, + { + "name": "initial-value", + "atRule": "@property", + "status": "experimental", + "syntax": "<string>", + "relevance": 50, + "description": "Specifies the initial value of the custom property registration represented by the @property rule, controlling the property’s initial value." + }, + { + "name": "max-zoom", + "atRule": "@viewport", + "syntax": "auto | <number> | <percentage>", + "relevance": 50, + "description": "The max-zoom CSS descriptor sets the maximum zoom factor of a document defined by the @viewport at-rule. The browser will not zoom in any further than this, whether automatically or at the user's request.\n\nA zoom factor of 1.0 or 100% corresponds to no zooming. Larger values are zoomed in. Smaller values are zoomed out." + }, + { + "name": "min-zoom", + "atRule": "@viewport", + "syntax": "auto | <number> | <percentage>", + "relevance": 50, + "description": "The min-zoom CSS descriptor sets the minimum zoom factor of a document defined by the @viewport at-rule. The browser will not zoom out any further than this, whether automatically or at the user's request.\n\nA zoom factor of 1.0 or 100% corresponds to no zooming. Larger values are zoomed in. Smaller values are zoomed out." + }, + { + "name": "orientation", + "atRule": "@viewport", + "syntax": "auto | portrait | landscape", + "values": [ + { + "name": "auto" + }, + { + "name": "portrait" + }, + { + "name": "landscape" + } + ], + "relevance": 50, + "description": "The orientation CSS @media media feature can be used to apply styles based on the orientation of the viewport (or the page box, for paged media)." + }, + { + "name": "user-zoom", + "atRule": "@viewport", + "syntax": "zoom | fixed", + "values": [ + { + "name": "zoom" + }, + { + "name": "fixed" + } + ], + "relevance": 50, + "description": "The user-zoom CSS descriptor controls whether or not the user can change the zoom factor of a document defined by @viewport." + }, + { + "name": "viewport-fit", + "atRule": "@viewport", + "syntax": "auto | contain | cover", + "values": [ + { + "name": "auto" + }, + { + "name": "contain" + }, + { + "name": "cover" + } + ], + "relevance": 50, + "description": "The border-block-style CSS property defines the style of the logical block borders of an element, which maps to a physical border style depending on the element's writing mode, directionality, and text orientation." + } + ], + "atDirectives": [ + { + "name": "@charset", + "browsers": [ + "E12", + "FF1.5", + "S4", + "C2", + "IE5.5", + "O9" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/@charset" + } + ], + "description": "Defines character set of the document." + }, + { + "name": "@counter-style", + "browsers": [ + "E91", + "FF33", + "S17", + "C91", + "O77" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/@counter-style" + } + ], + "description": "Defines a custom counter style." + }, + { + "name": "@font-face", + "browsers": [ + "E12", + "FF3.5", + "S3.1", + "C1", + "IE4", + "O10" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/@font-face" + } + ], + "description": "Allows for linking to fonts that are automatically activated when needed. This permits authors to work around the limitation of 'web-safe' fonts, allowing for consistent rendering independent of the fonts available in a given user's environment." + }, + { + "name": "@font-feature-values", + "browsers": [ + "FF34", + "S9.1" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/@font-feature-values" + } + ], + "description": "Defines named values for the indices used to select alternate glyphs for a given font family." + }, + { + "name": "@import", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE5.5", + "O3.5" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/@import" + } + ], + "description": "Includes content of another file." + }, + { + "name": "@keyframes", + "browsers": [ + "E12", + "FF16", + "S9", + "C43", + "IE10", + "O30" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/@keyframes" + } + ], + "description": "Defines set of animation key frames." + }, + { + "name": "@layer", + "browsers": [ + "E99", + "FF97", + "S15.4", + "C99", + "O85" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/@layer" + } + ], + "description": "Declare a cascade layer and the order of precedence in case of multiple cascade layers." + }, + { + "name": "@media", + "browsers": [ + "E12", + "FF1", + "S3", + "C1", + "IE6", + "O9.2" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/@media" + } + ], + "description": "Defines a stylesheet for a particular media type." + }, + { + "name": "@-moz-document", + "browsers": [ + "FF1.8" + ], + "description": "Gecko-specific at-rule that restricts the style rules contained within it based on the URL of the document." + }, + { + "name": "@-moz-keyframes", + "browsers": [ + "FF5" + ], + "description": "Defines set of animation key frames." + }, + { + "name": "@-ms-viewport", + "browsers": [ + "E", + "IE10" + ], + "description": "Specifies the size, zoom factor, and orientation of the viewport." + }, + { + "name": "@namespace", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE9", + "O8" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/@namespace" + } + ], + "description": "Declares a prefix and associates it with a namespace name." + }, + { + "name": "@-o-keyframes", + "browsers": [ + "O12" + ], + "description": "Defines set of animation key frames." + }, + { + "name": "@-o-viewport", + "browsers": [ + "O11" + ], + "description": "Specifies the size, zoom factor, and orientation of the viewport." + }, + { + "name": "@page", + "browsers": [ + "E12", + "FF19", + "S≤13.1", + "C2", + "IE8", + "O6" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/@page" + } + ], + "description": "Directive defines various page parameters." + }, + { + "name": "@property", + "browsers": [ + "E85", + "FFpreview", + "S16.4", + "C85", + "O71" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/@property" + } + ], + "description": "Describes the aspect of custom properties and variables." + }, + { + "name": "@supports", + "browsers": [ + "E12", + "FF22", + "S9", + "C28", + "O12.1" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/@supports" + } + ], + "description": "A conditional group rule whose condition tests whether the user agent supports CSS property:value pairs." + }, + { + "name": "@-webkit-keyframes", + "browsers": [ + "C", + "S4" + ], + "description": "Defines set of animation key frames." + } + ], + "pseudoClasses": [ + { + "name": ":active", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O5" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/:active" + } + ], + "description": "Applies while an element is being activated by the user. For example, between the times the user presses the mouse button and releases it." + }, + { + "name": ":any-link", + "browsers": [ + "E79", + "FF50", + "S9", + "C65", + "O52" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/:any-link" + } + ], + "description": "Represents an element that acts as the source anchor of a hyperlink. Applies to both visited and unvisited links." + }, + { + "name": ":checked", + "browsers": [ + "E12", + "FF1", + "S3.1", + "C1", + "IE9", + "O9" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/:checked" + } + ], + "description": "Radio and checkbox elements can be toggled by the user. Some menu items are 'checked' when the user selects them. When such elements are toggled 'on' the :checked pseudo-class applies." + }, + { + "name": ":corner-present", + "browsers": [ + "C", + "S5" + ], + "description": "Non-standard. Indicates whether or not a scrollbar corner is present." + }, + { + "name": ":decrement", + "browsers": [ + "C", + "S5" + ], + "description": "Non-standard. Applies to buttons and track pieces. Indicates whether or not the button or track piece will decrement the view's position when used." + }, + { + "name": ":default", + "browsers": [ + "E79", + "FF4", + "S5", + "C10", + "O10" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/:default" + } + ], + "description": "Applies to the one or more UI elements that are the default among a set of similar elements. Typically applies to context menu items, buttons, and select lists/menus." + }, + { + "name": ":disabled", + "browsers": [ + "E12", + "FF1", + "S3.1", + "C1", + "IE9", + "O9" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/:disabled" + } + ], + "description": "Represents user interface elements that are in a disabled state; such elements have a corresponding enabled state." + }, + { + "name": ":double-button", + "browsers": [ + "C", + "S5" + ], + "description": "Non-standard. Applies to buttons and track pieces. Applies when both buttons are displayed together at the same end of the scrollbar." + }, + { + "name": ":empty", + "browsers": [ + "E12", + "FF1", + "S3.1", + "C1", + "IE9", + "O9.5" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/:empty" + } + ], + "description": "Represents an element that has no children at all." + }, + { + "name": ":enabled", + "browsers": [ + "E12", + "FF1", + "S3.1", + "C1", + "IE9", + "O9" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/:enabled" + } + ], + "description": "Represents user interface elements that are in an enabled state; such elements have a corresponding disabled state." + }, + { + "name": ":end", + "browsers": [ + "C", + "S5" + ], + "description": "Non-standard. Applies to buttons and track pieces. Indicates whether the object is placed after the thumb." + }, + { + "name": ":first", + "browsers": [ + "E12", + "S6", + "C18", + "IE8", + "O9.2" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/:first" + } + ], + "description": "When printing double-sided documents, the page boxes on left and right pages may be different. This can be expressed through CSS pseudo-classes defined in the page context." + }, + { + "name": ":first-child", + "browsers": [ + "E12", + "FF3", + "S3.1", + "C4", + "IE7", + "O9.5" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/:first-child" + } + ], + "description": "Same as :nth-child(1). Represents an element that is the first child of some other element." + }, + { + "name": ":first-of-type", + "browsers": [ + "E12", + "FF3.5", + "S3.1", + "C1", + "IE9", + "O9.5" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/:first-of-type" + } + ], + "description": "Same as :nth-of-type(1). Represents an element that is the first sibling of its type in the list of children of its parent element." + }, + { + "name": ":focus", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE8", + "O7" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/:focus" + } + ], + "description": "Applies while an element has the focus (accepts keyboard or mouse events, or other forms of input)." + }, + { + "name": ":fullscreen", + "browsers": [ + "E12", + "FF64", + "S6", + "C71", + "IE11", + "O58" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/:fullscreen" + } + ], + "description": "Matches any element that has its fullscreen flag set." + }, + { + "name": ":future", + "browsers": [ + "S7" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/:future" + } + ], + "description": "Represents any element that is defined to occur entirely after a :current element." + }, + { + "name": ":horizontal", + "browsers": [ + "C", + "S5" + ], + "description": "Non-standard. Applies to any scrollbar pieces that have a horizontal orientation." + }, + { + "name": ":host", + "browsers": [ + "E79", + "FF63", + "S10", + "C54", + "O41" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/:host" + } + ], + "description": "When evaluated in the context of a shadow tree, matches the shadow tree's host element." + }, + { + "name": ":host()", + "browsers": [ + "C35", + "O22" + ], + "description": "When evaluated in the context of a shadow tree, it matches the shadow tree's host element if the host element, in its normal context, matches the selector argument." + }, + { + "name": ":host-context()", + "browsers": [ + "C35", + "O22" + ], + "description": "Tests whether there is an ancestor, outside the shadow tree, which matches a particular selector." + }, + { + "name": ":hover", + "browsers": [ + "E12", + "FF1", + "S2", + "C1", + "IE4", + "O4" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/:hover" + } + ], + "description": "Applies while the user designates an element with a pointing device, but does not necessarily activate it. For example, a visual user agent could apply this pseudo-class when the cursor (mouse pointer) hovers over a box generated by the element." + }, + { + "name": ":increment", + "browsers": [ + "C", + "S5" + ], + "description": "Non-standard. Applies to buttons and track pieces. Indicates whether or not the button or track piece will increment the view's position when used." + }, + { + "name": ":indeterminate", + "browsers": [ + "E12", + "FF2", + "S3", + "C1", + "IE10", + "O9" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/:indeterminate" + } + ], + "description": "Applies to UI elements whose value is in an indeterminate state." + }, + { + "name": ":in-range", + "browsers": [ + "E13", + "FF29", + "S5.1", + "C10", + "O11" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/:in-range" + } + ], + "description": "Used in conjunction with the min and max attributes, whether on a range input, a number field, or any other types that accept those attributes." + }, + { + "name": ":invalid", + "browsers": [ + "E12", + "FF4", + "S5", + "C10", + "IE10", + "O10" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/:invalid" + } + ], + "description": "An element is :valid or :invalid when it is, respectively, valid or invalid with respect to data validity semantics defined by a different specification." + }, + { + "name": ":lang()", + "browsers": [ + "E", + "C", + "FF1", + "IE8", + "O8", + "S3" + ], + "description": "Represents an element that is in language specified." + }, + { + "name": ":last-child", + "browsers": [ + "E12", + "FF1", + "S3.1", + "C1", + "IE9", + "O9.5" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/:last-child" + } + ], + "description": "Same as :nth-last-child(1). Represents an element that is the last child of some other element." + }, + { + "name": ":last-of-type", + "browsers": [ + "E12", + "FF3.5", + "S3.1", + "C1", + "IE9", + "O9.5" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/:last-of-type" + } + ], + "description": "Same as :nth-last-of-type(1). Represents an element that is the last sibling of its type in the list of children of its parent element." + }, + { + "name": ":left", + "browsers": [ + "E12", + "S5", + "C6", + "IE8", + "O9.2" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/:left" + } + ], + "description": "When printing double-sided documents, the page boxes on left and right pages may be different. This can be expressed through CSS pseudo-classes defined in the page context." + }, + { + "name": ":link", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE3", + "O3.5" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/:link" + } + ], + "description": "Applies to links that have not yet been visited." + }, + { + "name": ":matches()", + "browsers": [ + "S9" + ], + "description": "Takes a selector list as its argument. It represents an element that is represented by its argument." + }, + { + "name": ":-moz-any()", + "browsers": [ + "FF4" + ], + "description": "Represents an element that is represented by the selector list passed as its argument. Standardized as :matches()." + }, + { + "name": ":-moz-any-link", + "browsers": [ + "FF1" + ], + "description": "Represents an element that acts as the source anchor of a hyperlink. Applies to both visited and unvisited links." + }, + { + "name": ":-moz-broken", + "browsers": [ + "FF3" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/:-moz-broken" + } + ], + "description": "Non-standard. Matches elements representing broken images." + }, + { + "name": ":-moz-drag-over", + "browsers": [ + "FF1" + ], + "description": "Non-standard. Matches elements when a drag-over event applies to it." + }, + { + "name": ":-moz-first-node", + "browsers": [ + "FF1" + ], + "description": "Non-standard. Represents an element that is the first child node of some other element." + }, + { + "name": ":-moz-focusring", + "browsers": [ + "FF4" + ], + "description": "Non-standard. Matches an element that has focus and focus ring drawing is enabled in the browser." + }, + { + "name": ":-moz-full-screen", + "browsers": [ + "FF9" + ], + "description": "Matches any element that has its fullscreen flag set. Standardized as :fullscreen." + }, + { + "name": ":-moz-last-node", + "browsers": [ + "FF1" + ], + "description": "Non-standard. Represents an element that is the last child node of some other element." + }, + { + "name": ":-moz-loading", + "browsers": [ + "FF3" + ], + "description": "Non-standard. Matches elements, such as images, that haven't started loading yet." + }, + { + "name": ":-moz-only-whitespace", + "browsers": [ + "FF1" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/:-moz-only-whitespace" + } + ], + "description": "The same as :empty, except that it additionally matches elements that only contain code points affected by whitespace processing. Standardized as :blank." + }, + { + "name": ":-moz-placeholder", + "browsers": [ + "FF4" + ], + "description": "Deprecated. Represents placeholder text in an input field. Use ::-moz-placeholder for Firefox 19+." + }, + { + "name": ":-moz-submit-invalid", + "browsers": [ + "FF88" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/:-moz-submit-invalid" + } + ], + "description": "Non-standard. Represents any submit button when the contents of the associated form are not valid." + }, + { + "name": ":-moz-suppressed", + "browsers": [ + "FF3" + ], + "description": "Non-standard. Matches elements representing images that have been blocked from loading." + }, + { + "name": ":-moz-ui-invalid", + "browsers": [ + "FF4" + ], + "description": "Non-standard. Represents any validated form element whose value isn't valid " + }, + { + "name": ":-moz-ui-valid", + "browsers": [ + "FF4" + ], + "description": "Non-standard. Represents any validated form element whose value is valid " + }, + { + "name": ":-moz-user-disabled", + "browsers": [ + "FF3" + ], + "description": "Non-standard. Matches elements representing images that have been disabled due to the user's preferences." + }, + { + "name": ":-moz-window-inactive", + "browsers": [ + "FF4" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/:-moz-window-inactive" + } + ], + "description": "Non-standard. Matches elements in an inactive window." + }, + { + "name": ":-ms-fullscreen", + "browsers": [ + "IE11" + ], + "description": "Matches any element that has its fullscreen flag set." + }, + { + "name": ":-ms-input-placeholder", + "browsers": [ + "IE10" + ], + "description": "Represents placeholder text in an input field. Note: for Edge use the pseudo-element ::-ms-input-placeholder. Standardized as ::placeholder." + }, + { + "name": ":-ms-keyboard-active", + "browsers": [ + "IE10" + ], + "description": "Windows Store apps only. Applies one or more styles to an element when it has focus and the user presses the space bar." + }, + { + "name": ":-ms-lang()", + "browsers": [ + "E", + "IE10" + ], + "description": "Represents an element that is in the language specified. Accepts a comma separated list of language tokens." + }, + { + "name": ":no-button", + "browsers": [ + "C", + "S5" + ], + "description": "Non-standard. Applies to track pieces. Applies when there is no button at that end of the track." + }, + { + "name": ":not()", + "browsers": [ + "E", + "C", + "FF1", + "IE9", + "O9.5", + "S2" + ], + "description": "The negation pseudo-class, :not(X), is a functional notation taking a simple selector (excluding the negation pseudo-class itself) as an argument. It represents an element that is not represented by its argument." + }, + { + "name": ":nth-child()", + "browsers": [ + "E", + "C", + "FF3.5", + "IE9", + "O9.5", + "S3.1" + ], + "description": "Represents an element that has an+b-1 siblings before it in the document tree, for any positive integer or zero value of n, and has a parent element." + }, + { + "name": ":nth-last-child()", + "browsers": [ + "E", + "C", + "FF3.5", + "IE9", + "O9.5", + "S3.1" + ], + "description": "Represents an element that has an+b-1 siblings after it in the document tree, for any positive integer or zero value of n, and has a parent element." + }, + { + "name": ":nth-last-of-type()", + "browsers": [ + "E", + "C", + "FF3.5", + "IE9", + "O9.5", + "S3.1" + ], + "description": "Represents an element that has an+b-1 siblings with the same expanded element name after it in the document tree, for any zero or positive integer value of n, and has a parent element." + }, + { + "name": ":nth-of-type()", + "browsers": [ + "E", + "C", + "FF3.5", + "IE9", + "O9.5", + "S3.1" + ], + "description": "Represents an element that has an+b-1 siblings with the same expanded element name before it in the document tree, for any zero or positive integer value of n, and has a parent element." + }, + { + "name": ":only-child", + "browsers": [ + "E12", + "FF1.5", + "S3.1", + "C2", + "IE9", + "O9.5" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/:only-child" + } + ], + "description": "Represents an element that has a parent element and whose parent element has no other element children. Same as :first-child:last-child or :nth-child(1):nth-last-child(1), but with a lower specificity." + }, + { + "name": ":only-of-type", + "browsers": [ + "E12", + "FF3.5", + "S3.1", + "C1", + "IE9", + "O9.5" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/:only-of-type" + } + ], + "description": "Matches every element that is the only child of its type, of its parent. Same as :first-of-type:last-of-type or :nth-of-type(1):nth-last-of-type(1), but with a lower specificity." + }, + { + "name": ":optional", + "browsers": [ + "E12", + "FF4", + "S5", + "C10", + "IE10", + "O10" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/:optional" + } + ], + "description": "A form element is :required or :optional if a value for it is, respectively, required or optional before the form it belongs to is submitted. Elements that are not form elements are neither required nor optional." + }, + { + "name": ":out-of-range", + "browsers": [ + "E13", + "FF29", + "S5.1", + "C10", + "O11" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/:out-of-range" + } + ], + "description": "Used in conjunction with the min and max attributes, whether on a range input, a number field, or any other types that accept those attributes." + }, + { + "name": ":past", + "browsers": [ + "S7" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/:past" + } + ], + "description": "Represents any element that is defined to occur entirely prior to a :current element." + }, + { + "name": ":read-only", + "browsers": [ + "E13", + "FF78", + "S4", + "C1", + "O9" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/:read-only" + } + ], + "description": "An element whose contents are not user-alterable is :read-only. However, elements whose contents are user-alterable (such as text input fields) are considered to be in a :read-write state. In typical documents, most elements are :read-only." + }, + { + "name": ":read-write", + "browsers": [ + "E13", + "FF78", + "S4", + "C1", + "O9" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/:read-write" + } + ], + "description": "An element whose contents are not user-alterable is :read-only. However, elements whose contents are user-alterable (such as text input fields) are considered to be in a :read-write state. In typical documents, most elements are :read-only." + }, + { + "name": ":required", + "browsers": [ + "E12", + "FF4", + "S5", + "C10", + "IE10", + "O10" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/:required" + } + ], + "description": "A form element is :required or :optional if a value for it is, respectively, required or optional before the form it belongs to is submitted. Elements that are not form elements are neither required nor optional." + }, + { + "name": ":right", + "browsers": [ + "E12", + "S5", + "C6", + "IE8", + "O9.2" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/:right" + } + ], + "description": "When printing double-sided documents, the page boxes on left and right pages may be different. This can be expressed through CSS pseudo-classes defined in the page context." + }, + { + "name": ":root", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE9", + "O9.5" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/:root" + } + ], + "description": "Represents an element that is the root of the document. In HTML 4, this is always the HTML element." + }, + { + "name": ":scope", + "browsers": [ + "E79", + "FF32", + "S7", + "C27", + "O15" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/:scope" + } + ], + "description": "Represents any element that is in the contextual reference element set." + }, + { + "name": ":single-button", + "browsers": [ + "C", + "S5" + ], + "description": "Non-standard. Applies to buttons and track pieces. Applies when both buttons are displayed separately at either end of the scrollbar." + }, + { + "name": ":start", + "browsers": [ + "C", + "S5" + ], + "description": "Non-standard. Applies to buttons and track pieces. Indicates whether the object is placed before the thumb." + }, + { + "name": ":target", + "browsers": [ + "E12", + "FF1", + "S1.3", + "C1", + "IE9", + "O9.5" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/:target" + } + ], + "description": "Some URIs refer to a location within a resource. This kind of URI ends with a 'number sign' (#) followed by an anchor identifier (called the fragment identifier)." + }, + { + "name": ":valid", + "browsers": [ + "E12", + "FF4", + "S5", + "C10", + "IE10", + "O10" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/:valid" + } + ], + "description": "An element is :valid or :invalid when it is, respectively, valid or invalid with respect to data validity semantics defined by a different specification." + }, + { + "name": ":vertical", + "browsers": [ + "C", + "S5" + ], + "description": "Non-standard. Applies to any scrollbar pieces that have a vertical orientation." + }, + { + "name": ":visited", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE4", + "O3.5" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/:visited" + } + ], + "description": "Applies once the link has been visited by the user." + }, + { + "name": ":-webkit-any()", + "browsers": [ + "C", + "S5" + ], + "description": "Represents an element that is represented by the selector list passed as its argument. Standardized as :matches()." + }, + { + "name": ":-webkit-full-screen", + "browsers": [ + "C", + "S6" + ], + "description": "Matches any element that has its fullscreen flag set. Standardized as :fullscreen." + }, + { + "name": ":window-inactive", + "browsers": [ + "C", + "S3" + ], + "description": "Non-standard. Applies to all scrollbar pieces. Indicates whether or not the window containing the scrollbar is currently active." + }, + { + "name": ":current", + "status": "experimental", + "description": "The :current CSS pseudo-class selector is a time-dimensional pseudo-class that represents the element, or an ancestor of the element, that is currently being displayed" + }, + { + "name": ":blank", + "status": "experimental", + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/:blank" + } + ], + "description": "The :blank CSS pseudo-class selects empty user input elements (eg. <input> or <textarea>)." + }, + { + "name": ":defined", + "status": "experimental", + "browsers": [ + "E79", + "FF63", + "S10", + "C54", + "O41" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/:defined" + } + ], + "description": "The :defined CSS pseudo-class represents any element that has been defined. This includes any standard element built in to the browser, and custom elements that have been successfully defined (i.e. with the CustomElementRegistry.define() method)." + }, + { + "name": ":dir", + "browsers": [ + "FF49", + "S16.4" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/:dir" + } + ], + "description": "The :dir() CSS pseudo-class matches elements based on the directionality of the text contained in them." + }, + { + "name": ":focus-visible", + "browsers": [ + "E86", + "FF85", + "S15.4", + "C86", + "O72" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/:focus-visible" + } + ], + "description": "The :focus-visible pseudo-class applies while an element matches the :focus pseudo-class and the UA determines via heuristics that the focus should be made evident on the element." + }, + { + "name": ":focus-within", + "browsers": [ + "E79", + "FF52", + "S10.1", + "C60", + "O47" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/:focus-within" + } + ], + "description": "The :focus-within pseudo-class applies to any element for which the :focus pseudo class applies as well as to an element whose descendant in the flat tree (including non-element nodes, such as text nodes) matches the conditions for matching :focus." + }, + { + "name": ":has", + "status": "experimental", + "browsers": [ + "E105", + "FF103", + "S15.4", + "C105", + "O91" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/:has" + } + ], + "description": ":The :has() CSS pseudo-class represents an element if any of the selectors passed as parameters (relative to the :scope of the given element), match at least one element." + }, + { + "name": ":is", + "status": "experimental", + "browsers": [ + "E88", + "FF78", + "S14", + "C88", + "O74" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/:is" + } + ], + "description": "The :is() CSS pseudo-class function takes a selector list as its argument, and selects any element that can be selected by one of the selectors in that list. This is useful for writing large selectors in a more compact form." + }, + { + "name": ":local-link", + "status": "experimental", + "description": "The :local-link CSS pseudo-class represents an link to the same document" + }, + { + "name": ":nth-col", + "status": "experimental", + "description": "The :nth-col() CSS pseudo-class is designed for tables and grids. It accepts the An+B notation such as used with the :nth-child selector, using this to target every nth column. " + }, + { + "name": ":nth-last-col", + "status": "experimental", + "description": "The :nth-last-col() CSS pseudo-class is designed for tables and grids. It accepts the An+B notation such as used with the :nth-child selector, using this to target every nth column before it, therefore counting back from the end of the set of columns." + }, + { + "name": ":paused", + "status": "experimental", + "browsers": [ + "S15.4" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/:paused" + } + ], + "description": "The :paused CSS pseudo-class selector is a resource state pseudo-class that will match an audio, video, or similar resource that is capable of being “played” or “paused”, when that element is “paused”." + }, + { + "name": ":placeholder-shown", + "status": "experimental", + "browsers": [ + "E79", + "FF51", + "S9", + "C47", + "IE10", + "O34" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/:placeholder-shown" + } + ], + "description": "The :placeholder-shown CSS pseudo-class represents any <input> or <textarea> element that is currently displaying placeholder text." + }, + { + "name": ":playing", + "status": "experimental", + "browsers": [ + "S15.4" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/:playing" + } + ], + "description": "The :playing CSS pseudo-class selector is a resource state pseudo-class that will match an audio, video, or similar resource that is capable of being “played” or “paused”, when that element is “playing”. " + }, + { + "name": ":target-within", + "status": "experimental", + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/:target-within" + } + ], + "description": "The :target-within CSS pseudo-class represents an element that is a target element or contains an element that is a target. A target element is a unique element with an id matching the URL's fragment." + }, + { + "name": ":user-invalid", + "status": "experimental", + "browsers": [ + "FF88", + "S16.5" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/:user-invalid" + } + ], + "description": "The :user-invalid CSS pseudo-class represents any validated form element whose value isn't valid based on their validation constraints, after the user has interacted with it." + }, + { + "name": ":user-valid", + "status": "experimental", + "browsers": [ + "FF88", + "S16.5" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/:user-valid" + } + ], + "description": "The :user-valid CSS pseudo-class represents any validated form element whose value validates correctly based on its validation constraints. However, unlike :valid it only matches once the user has interacted with it." + }, + { + "name": ":where", + "status": "experimental", + "browsers": [ + "E88", + "FF78", + "S14", + "C88", + "O74" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/:where" + } + ], + "description": "The :where() CSS pseudo-class function takes a selector list as its argument, and selects any element that can be selected by one of the selectors in that list." + }, + { + "name": ":picture-in-picture", + "status": "experimental", + "browsers": [ + "E110", + "C110", + "O96" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/:picture-in-picture" + } + ], + "description": "The :picture-in-picture CSS pseudo-class matches the element which is currently in picture-in-picture mode." + } + ], + "pseudoElements": [ + { + "name": "::after", + "browsers": [ + "E12", + "FF1.5", + "S4", + "C1", + "IE9", + "O7" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/::after" + } + ], + "description": "Represents a styleable child pseudo-element immediately after the originating element's actual content." + }, + { + "name": "::backdrop", + "browsers": [ + "E79", + "FF47", + "S15.4", + "C37", + "IE11", + "O24" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/::backdrop" + } + ], + "description": "Used to create a backdrop that hides the underlying document for an element in a top layer (such as an element that is displayed fullscreen)." + }, + { + "name": "::before", + "browsers": [ + "E12", + "FF1.5", + "S4", + "C1", + "IE9", + "O7" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/::before" + } + ], + "description": "Represents a styleable child pseudo-element immediately before the originating element's actual content." + }, + { + "name": "::content", + "browsers": [ + "C35", + "O22" + ], + "description": "Deprecated. Matches the distribution list itself, on elements that have one. Use ::slotted for forward compatibility." + }, + { + "name": "::cue", + "browsers": [ + "E79", + "FF55", + "S7", + "C26", + "O15" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/::cue" + } + ] + }, + { + "name": "::cue()", + "browsers": [ + "C", + "O16", + "S6" + ] + }, + { + "name": "::cue-region", + "browsers": [ + "C", + "O16", + "S6" + ] + }, + { + "name": "::cue-region()", + "browsers": [ + "C", + "O16", + "S6" + ] + }, + { + "name": "::first-letter", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE9", + "O7" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/::first-letter" + } + ], + "description": "Represents the first letter of an element, if it is not preceded by any other content (such as images or inline tables) on its line." + }, + { + "name": "::first-line", + "browsers": [ + "E12", + "FF1", + "S1", + "C1", + "IE9", + "O7" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/::first-line" + } + ], + "description": "Describes the contents of the first formatted line of its originating element." + }, + { + "name": "::-moz-focus-inner", + "browsers": [ + "FF4" + ] + }, + { + "name": "::-moz-focus-outer", + "browsers": [ + "FF4" + ] + }, + { + "name": "::-moz-list-bullet", + "browsers": [ + "FF1" + ], + "description": "Used to style the bullet of a list element. Similar to the standardized ::marker." + }, + { + "name": "::-moz-list-number", + "browsers": [ + "FF1" + ], + "description": "Used to style the numbers of a list element. Similar to the standardized ::marker." + }, + { + "name": "::-moz-placeholder", + "browsers": [ + "FF19" + ], + "description": "Represents placeholder text in an input field" + }, + { + "name": "::-moz-progress-bar", + "browsers": [ + "FF9" + ], + "description": "Represents the bar portion of a progress bar." + }, + { + "name": "::-moz-selection", + "browsers": [ + "FF1" + ], + "description": "Represents the portion of a document that has been highlighted by the user." + }, + { + "name": "::-ms-backdrop", + "browsers": [ + "IE11" + ], + "description": "Used to create a backdrop that hides the underlying document for an element in a top layer (such as an element that is displayed fullscreen)." + }, + { + "name": "::-ms-browse", + "browsers": [ + "E", + "IE10" + ], + "description": "Represents the browse button of an input type=file control." + }, + { + "name": "::-ms-check", + "browsers": [ + "E", + "IE10" + ], + "description": "Represents the check of a checkbox or radio button input control." + }, + { + "name": "::-ms-clear", + "browsers": [ + "E", + "IE10" + ], + "description": "Represents the clear button of a text input control" + }, + { + "name": "::-ms-expand", + "browsers": [ + "E", + "IE10" + ], + "description": "Represents the drop-down button of a select control." + }, + { + "name": "::-ms-fill", + "browsers": [ + "E", + "IE10" + ], + "description": "Represents the bar portion of a progress bar." + }, + { + "name": "::-ms-fill-lower", + "browsers": [ + "E", + "IE10" + ], + "description": "Represents the portion of the slider track from its smallest value up to the value currently selected by the thumb. In a left-to-right layout, this is the portion of the slider track to the left of the thumb." + }, + { + "name": "::-ms-fill-upper", + "browsers": [ + "E", + "IE10" + ], + "description": "Represents the portion of the slider track from the value currently selected by the thumb up to the slider's largest value. In a left-to-right layout, this is the portion of the slider track to the right of the thumb." + }, + { + "name": "::-ms-reveal", + "browsers": [ + "E", + "IE10" + ], + "description": "Represents the password reveal button of an input type=password control." + }, + { + "name": "::-ms-thumb", + "browsers": [ + "E", + "IE10" + ], + "description": "Represents the portion of range input control (also known as a slider control) that the user drags." + }, + { + "name": "::-ms-ticks-after", + "browsers": [ + "E", + "IE10" + ], + "description": "Represents the tick marks of a slider that begin just after the thumb and continue up to the slider's largest value. In a left-to-right layout, these are the ticks to the right of the thumb." + }, + { + "name": "::-ms-ticks-before", + "browsers": [ + "E", + "IE10" + ], + "description": "Represents the tick marks of a slider that represent its smallest values up to the value currently selected by the thumb. In a left-to-right layout, these are the ticks to the left of the thumb." + }, + { + "name": "::-ms-tooltip", + "browsers": [ + "E", + "IE10" + ], + "description": "Represents the tooltip of a slider (input type=range)." + }, + { + "name": "::-ms-track", + "browsers": [ + "E", + "IE10" + ], + "description": "Represents the track of a slider." + }, + { + "name": "::-ms-value", + "browsers": [ + "E", + "IE10" + ], + "description": "Represents the content of a text or password input control, or a select control." + }, + { + "name": "::selection", + "browsers": [ + "E12", + "FF62", + "S1.1", + "C1", + "IE9", + "O9.5" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/::selection" + } + ], + "description": "Represents the portion of a document that has been highlighted by the user." + }, + { + "name": "::shadow", + "browsers": [ + "C35", + "O22" + ], + "description": "Matches the shadow root if an element has a shadow tree." + }, + { + "name": "::-webkit-file-upload-button", + "browsers": [ + "C", + "O", + "S6" + ] + }, + { + "name": "::-webkit-inner-spin-button", + "browsers": [ + "E79", + "S5", + "C6", + "O15" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/::-webkit-inner-spin-button" + } + ] + }, + { + "name": "::-webkit-input-placeholder", + "browsers": [ + "C", + "S4" + ] + }, + { + "name": "::-webkit-keygen-select", + "browsers": [ + "C", + "O", + "S6" + ] + }, + { + "name": "::-webkit-meter-bar", + "browsers": [ + "E79", + "S5.1", + "C12", + "O15" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/::-webkit-meter-bar" + } + ] + }, + { + "name": "::-webkit-meter-even-less-good-value", + "browsers": [ + "E79", + "S5.1", + "C12", + "O15" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/::-webkit-meter-even-less-good-value" + } + ] + }, + { + "name": "::-webkit-meter-optimum-value", + "browsers": [ + "E79", + "S5.1", + "C12", + "O15" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/::-webkit-meter-optimum-value" + } + ] + }, + { + "name": "::-webkit-meter-suboptimum-value", + "browsers": [ + "E79", + "S5.1", + "C12", + "O15" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/::-webkit-meter-suboptimum-value" + } + ] + }, + { + "name": "::-webkit-outer-spin-button", + "browsers": [ + "S5", + "C6" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/::-webkit-outer-spin-button" + } + ] + }, + { + "name": "::-webkit-progress-bar", + "browsers": [ + "E79", + "S7", + "C25", + "O15" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/::-webkit-progress-bar" + } + ] + }, + { + "name": "::-webkit-progress-inner-element", + "browsers": [ + "E79", + "S7", + "C23", + "O15" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/::-webkit-progress-inner-element" + } + ] + }, + { + "name": "::-webkit-progress-value", + "browsers": [ + "E79", + "S7", + "C25", + "O15" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/::-webkit-progress-value" + } + ] + }, + { + "name": "::-webkit-resizer", + "browsers": [ + "E79", + "S4", + "C2", + "O15" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/::-webkit-scrollbar" + } + ] + }, + { + "name": "::-webkit-scrollbar", + "browsers": [ + "E79", + "S4", + "C2", + "O15" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/::-webkit-scrollbar" + } + ] + }, + { + "name": "::-webkit-scrollbar-button", + "browsers": [ + "E79", + "S4", + "C2", + "O15" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/::-webkit-scrollbar" + } + ] + }, + { + "name": "::-webkit-scrollbar-corner", + "browsers": [ + "E79", + "S4", + "C2", + "O15" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/::-webkit-scrollbar" + } + ] + }, + { + "name": "::-webkit-scrollbar-thumb", + "browsers": [ + "E79", + "S4", + "C2", + "O15" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/::-webkit-scrollbar" + } + ] + }, + { + "name": "::-webkit-scrollbar-track", + "browsers": [ + "E79", + "S4", + "C2", + "O15" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/::-webkit-scrollbar" + } + ] + }, + { + "name": "::-webkit-scrollbar-track-piece", + "browsers": [ + "E79", + "S4", + "C2", + "O15" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/::-webkit-scrollbar" + } + ] + }, + { + "name": "::-webkit-search-cancel-button", + "browsers": [ + "E79", + "S3", + "C1", + "O15" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/::-webkit-search-cancel-button" + } + ] + }, + { + "name": "::-webkit-search-decoration", + "browsers": [ + "C", + "S4" + ] + }, + { + "name": "::-webkit-search-results-button", + "browsers": [ + "E79", + "S3", + "C1", + "O15" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/::-webkit-search-results-button" + } + ] + }, + { + "name": "::-webkit-search-results-decoration", + "browsers": [ + "C", + "S4" + ] + }, + { + "name": "::-webkit-slider-runnable-track", + "browsers": [ + "C", + "O", + "S6" + ] + }, + { + "name": "::-webkit-slider-thumb", + "browsers": [ + "C", + "O", + "S6" + ] + }, + { + "name": "::-webkit-textfield-decoration-container", + "browsers": [ + "C", + "O", + "S6" + ] + }, + { + "name": "::-webkit-validation-bubble", + "browsers": [ + "C", + "O", + "S6" + ] + }, + { + "name": "::-webkit-validation-bubble-arrow", + "browsers": [ + "C", + "O", + "S6" + ] + }, + { + "name": "::-webkit-validation-bubble-arrow-clipper", + "browsers": [ + "C", + "O", + "S6" + ] + }, + { + "name": "::-webkit-validation-bubble-heading", + "browsers": [ + "C", + "O", + "S6" + ] + }, + { + "name": "::-webkit-validation-bubble-message", + "browsers": [ + "C", + "O", + "S6" + ] + }, + { + "name": "::-webkit-validation-bubble-text-block", + "browsers": [ + "C", + "O", + "S6" + ] + }, + { + "name": "::target-text", + "status": "experimental", + "browsers": [ + "E89", + "C89", + "O75" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/::target-text" + } + ], + "description": "The ::target-text CSS pseudo-element represents the text that has been scrolled to if the browser supports scroll-to-text fragments. It allows authors to choose how to highlight that section of text." + }, + { + "name": "::-moz-range-progress", + "status": "nonstandard", + "browsers": [ + "FF22" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/::-moz-range-progress" + } + ], + "description": "The ::-moz-range-progress CSS pseudo-element is a Mozilla extension that represents the lower portion of the track (i.e., groove) in which the indicator slides in an <input> of type=\"range\". This portion corresponds to values lower than the value currently selected by the thumb (i.e., virtual knob)." + }, + { + "name": "::-moz-range-thumb", + "status": "nonstandard", + "browsers": [ + "FF21" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/::-moz-range-thumb" + } + ], + "description": "The ::-moz-range-thumb CSS pseudo-element is a Mozilla extension that represents the thumb (i.e., virtual knob) of an <input> of type=\"range\". The user can move the thumb along the input's track to alter its numerical value." + }, + { + "name": "::-moz-range-track", + "status": "nonstandard", + "browsers": [ + "FF21" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/::-moz-range-track" + } + ], + "description": "The ::-moz-range-track CSS pseudo-element is a Mozilla extension that represents the track (i.e., groove) in which the indicator slides in an <input> of type=\"range\"." + }, + { + "name": "::-webkit-progress-inner-value", + "status": "nonstandard", + "description": "The ::-webkit-progress-value CSS pseudo-element represents the filled-in portion of the bar of a <progress> element. It is a child of the ::-webkit-progress-bar pseudo-element.\n\nIn order to let ::-webkit-progress-value take effect, -webkit-appearance needs to be set to none on the <progress> element." + }, + { + "name": "::grammar-error", + "status": "experimental", + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/::grammar-error" + } + ], + "description": "The ::grammar-error CSS pseudo-element represents a text segment which the user agent has flagged as grammatically incorrect." + }, + { + "name": "::marker", + "browsers": [ + "E86", + "FF68", + "S11.1", + "C86", + "O72" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/::marker" + } + ], + "description": "The ::marker CSS pseudo-element selects the marker box of a list item, which typically contains a bullet or number. It works on any element or pseudo-element set to display: list-item, such as the <li> and <summary> elements." + }, + { + "name": "::part", + "status": "experimental", + "browsers": [ + "E79", + "FF72", + "S13.1", + "C73", + "O60" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/::part" + } + ], + "description": "The ::part CSS pseudo-element represents any element within a shadow tree that has a matching part attribute." + }, + { + "name": "::placeholder", + "browsers": [ + "E79", + "FF51", + "S10.1", + "C57", + "O44" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/::placeholder" + } + ], + "description": "The ::placeholder CSS pseudo-element represents the placeholder text of a form element." + }, + { + "name": "::slotted", + "browsers": [ + "E79", + "FF63", + "S10", + "C50", + "O37" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/::slotted" + } + ], + "description": "The :slotted() CSS pseudo-element represents any element that has been placed into a slot inside an HTML template." + }, + { + "name": "::spelling-error", + "status": "experimental", + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/::spelling-error" + } + ], + "description": "The ::spelling-error CSS pseudo-element represents a text segment which the user agent has flagged as incorrectly spelled." + }, + { + "name": "::view-transition", + "status": "experimental", + "browsers": [ + "E111", + "C111", + "O97" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/::view-transition" + } + ], + "description": "The ::view-transition CSS pseudo-element represents the root of the view transitions overlay, which contains all view transitions and sits over the top of all other page content." + }, + { + "name": "::view-transition-group", + "status": "experimental", + "browsers": [ + "E111", + "C111", + "O97" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/::view-transition-group" + } + ], + "description": "The ::view-transition-group CSS pseudo-element represents a single view transition group." + }, + { + "name": "::view-transition-image-pair", + "status": "experimental", + "browsers": [ + "E111", + "C111", + "O97" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/::view-transition-image-pair" + } + ], + "description": "The ::view-transition-image-pair CSS pseudo-element represents a container for a view transition's \"old\" and \"new\" view states — before and after the transition." + }, + { + "name": "::view-transition-new", + "status": "experimental", + "browsers": [ + "E111", + "C111", + "O97" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/::view-transition-new" + } + ], + "description": "The ::view-transition-new CSS pseudo-element represents the \"new\" view state of a view transition — a live representation of the new view, after the transition." + }, + { + "name": "::view-transition-old", + "status": "experimental", + "browsers": [ + "E111", + "C111", + "O97" + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/CSS/::view-transition-old" + } + ], + "description": "The ::view-transition-old CSS pseudo-element represents the \"old\" view state of a view transition — a static screenshot of the old view, before the transition." + } + ] +}; + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +class CSSDataProvider { + /** + * Currently, unversioned data uses the V1 implementation + * In the future when the provider handles multiple versions of HTML custom data, + * use the latest implementation for unversioned data + */ + constructor(data) { + this._properties = []; + this._atDirectives = []; + this._pseudoClasses = []; + this._pseudoElements = []; + this.addData(data); + } + provideProperties() { + return this._properties; + } + provideAtDirectives() { + return this._atDirectives; + } + providePseudoClasses() { + return this._pseudoClasses; + } + providePseudoElements() { + return this._pseudoElements; + } + addData(data) { + if (Array.isArray(data.properties)) { + for (const prop of data.properties) { + if (isPropertyData(prop)) { + this._properties.push(prop); + } + } + } + if (Array.isArray(data.atDirectives)) { + for (const prop of data.atDirectives) { + if (isAtDirective(prop)) { + this._atDirectives.push(prop); + } + } + } + if (Array.isArray(data.pseudoClasses)) { + for (const prop of data.pseudoClasses) { + if (isPseudoClassData(prop)) { + this._pseudoClasses.push(prop); + } + } + } + if (Array.isArray(data.pseudoElements)) { + for (const prop of data.pseudoElements) { + if (isPseudoElementData(prop)) { + this._pseudoElements.push(prop); + } + } + } + } +} +function isPropertyData(d) { + return typeof d.name === 'string'; +} +function isAtDirective(d) { + return typeof d.name === 'string'; +} +function isPseudoClassData(d) { + return typeof d.name === 'string'; +} +function isPseudoElementData(d) { + return typeof d.name === 'string'; +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +class CSSDataManager { + constructor(options) { + this.dataProviders = []; + this._propertySet = {}; + this._atDirectiveSet = {}; + this._pseudoClassSet = {}; + this._pseudoElementSet = {}; + this._properties = []; + this._atDirectives = []; + this._pseudoClasses = []; + this._pseudoElements = []; + this.setDataProviders(options?.useDefaultDataProvider !== false, options?.customDataProviders || []); + } + setDataProviders(builtIn, providers) { + this.dataProviders = []; + if (builtIn) { + this.dataProviders.push(new CSSDataProvider(cssData)); + } + this.dataProviders.push(...providers); + this.collectData(); + } + /** + * Collect all data & handle duplicates + */ + collectData() { + this._propertySet = {}; + this._atDirectiveSet = {}; + this._pseudoClassSet = {}; + this._pseudoElementSet = {}; + this.dataProviders.forEach(provider => { + provider.provideProperties().forEach(p => { + if (!this._propertySet[p.name]) { + this._propertySet[p.name] = p; + } + }); + provider.provideAtDirectives().forEach(p => { + if (!this._atDirectiveSet[p.name]) { + this._atDirectiveSet[p.name] = p; + } + }); + provider.providePseudoClasses().forEach(p => { + if (!this._pseudoClassSet[p.name]) { + this._pseudoClassSet[p.name] = p; + } + }); + provider.providePseudoElements().forEach(p => { + if (!this._pseudoElementSet[p.name]) { + this._pseudoElementSet[p.name] = p; + } + }); + }); + this._properties = values(this._propertySet); + this._atDirectives = values(this._atDirectiveSet); + this._pseudoClasses = values(this._pseudoClassSet); + this._pseudoElements = values(this._pseudoElementSet); + } + getProperty(name) { return this._propertySet[name]; } + getAtDirective(name) { return this._atDirectiveSet[name]; } + getPseudoClass(name) { return this._pseudoClassSet[name]; } + getPseudoElement(name) { return this._pseudoElementSet[name]; } + getProperties() { + return this._properties; + } + getAtDirectives() { + return this._atDirectives; + } + getPseudoClasses() { + return this._pseudoClasses; + } + getPseudoElements() { + return this._pseudoElements; + } + isKnownProperty(name) { + return name.toLowerCase() in this._propertySet; + } + isStandardProperty(name) { + return this.isKnownProperty(name) && + (!this._propertySet[name.toLowerCase()].status || this._propertySet[name.toLowerCase()].status === 'standard'); + } +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +function getSelectionRanges$1(document, positions, stylesheet) { + function getSelectionRange(position) { + const applicableRanges = getApplicableRanges(position); + let current = undefined; + for (let index = applicableRanges.length - 1; index >= 0; index--) { + current = SelectionRange.create(Range$a.create(document.positionAt(applicableRanges[index][0]), document.positionAt(applicableRanges[index][1])), current); + } + if (!current) { + current = SelectionRange.create(Range$a.create(position, position)); + } + return current; + } + return positions.map(getSelectionRange); + function getApplicableRanges(position) { + const offset = document.offsetAt(position); + let currNode = stylesheet.findChildAtOffset(offset, true); + if (!currNode) { + return []; + } + const result = []; + while (currNode) { + if (currNode.parent && + currNode.offset === currNode.parent.offset && + currNode.end === currNode.parent.end) { + currNode = currNode.parent; + continue; + } + // The `{ }` part of `.a { }` + if (currNode.type === NodeType.Declarations) { + if (offset > currNode.offset && offset < currNode.end) { + // Return `{ }` and the range inside `{` and `}` + result.push([currNode.offset + 1, currNode.end - 1]); + } + } + result.push([currNode.offset, currNode.end]); + currNode = currNode.parent; + } + return result; + } +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +class SCSSNavigation extends CSSNavigation { + constructor(fileSystemProvider) { + super(fileSystemProvider, true); + } + isRawStringDocumentLinkNode(node) { + return (super.isRawStringDocumentLinkNode(node) || + node.type === NodeType.Use || + node.type === NodeType.Forward); + } + async mapReference(target, isRawLink) { + if (this.fileSystemProvider && target && isRawLink) { + const pathVariations = toPathVariations(target); + for (const variation of pathVariations) { + if (await this.fileExists(variation)) { + return variation; + } + } + } + return target; + } + async resolveReference(target, documentUri, documentContext, isRawLink = false) { + if (startsWith$3(target, 'sass:')) { + return undefined; // sass library + } + return super.resolveReference(target, documentUri, documentContext, isRawLink); + } +} +function toPathVariations(target) { + // No variation for links that ends with .css suffix + if (target.endsWith('.css')) { + return [target]; + } + // If a link is like a/, try resolving a/index.scss and a/_index.scss + if (target.endsWith('/')) { + return [target + 'index.scss', target + '_index.scss']; + } + const targetUri = URI.parse(target.replace(/\.scss$/, '')); + const basename = Utils.basename(targetUri); + const dirname = Utils.dirname(targetUri); + if (basename.startsWith('_')) { + // No variation for links such as _a + return [Utils.joinPath(dirname, basename + '.scss').toString(true)]; + } + return [ + Utils.joinPath(dirname, basename + '.scss').toString(true), + Utils.joinPath(dirname, '_' + basename + '.scss').toString(true), + target + '/index.scss', + target + '/_index.scss', + Utils.joinPath(dirname, basename + '.css').toString(true) + ]; +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +function getDefaultCSSDataProvider() { + return newCSSDataProvider(cssData); +} +function newCSSDataProvider(data) { + return new CSSDataProvider(data); +} +function createFacade(parser, completion, hover, navigation, codeActions, validation, cssDataManager) { + return { + configure: (settings) => { + validation.configure(settings); + completion.configure(settings?.completion); + hover.configure(settings?.hover); + navigation.configure(settings?.importAliases); + }, + setDataProviders: cssDataManager.setDataProviders.bind(cssDataManager), + doValidation: validation.doValidation.bind(validation), + parseStylesheet: parser.parseStylesheet.bind(parser), + doComplete: completion.doComplete.bind(completion), + doComplete2: completion.doComplete2.bind(completion), + setCompletionParticipants: completion.setCompletionParticipants.bind(completion), + doHover: hover.doHover.bind(hover), + format: format$4, + findDefinition: navigation.findDefinition.bind(navigation), + findReferences: navigation.findReferences.bind(navigation), + findDocumentHighlights: navigation.findDocumentHighlights.bind(navigation), + findDocumentLinks: navigation.findDocumentLinks.bind(navigation), + findDocumentLinks2: navigation.findDocumentLinks2.bind(navigation), + findDocumentSymbols: navigation.findSymbolInformations.bind(navigation), + findDocumentSymbols2: navigation.findDocumentSymbols.bind(navigation), + doCodeActions: codeActions.doCodeActions.bind(codeActions), + doCodeActions2: codeActions.doCodeActions2.bind(codeActions), + findDocumentColors: navigation.findDocumentColors.bind(navigation), + getColorPresentations: navigation.getColorPresentations.bind(navigation), + prepareRename: navigation.prepareRename.bind(navigation), + doRename: navigation.doRename.bind(navigation), + getFoldingRanges: getFoldingRanges$1, + getSelectionRanges: getSelectionRanges$1 + }; +} +const defaultLanguageServiceOptions$1 = {}; +function getCSSLanguageService(options = defaultLanguageServiceOptions$1) { + const cssDataManager = new CSSDataManager(options); + return createFacade(new Parser(), new CSSCompletion(null, options, cssDataManager), new CSSHover(options && options.clientCapabilities, cssDataManager), new CSSNavigation(options && options.fileSystemProvider, false), new CSSCodeActions(cssDataManager), new CSSValidation(cssDataManager), cssDataManager); +} +function getSCSSLanguageService(options = defaultLanguageServiceOptions$1) { + const cssDataManager = new CSSDataManager(options); + return createFacade(new SCSSParser(), new SCSSCompletion(options, cssDataManager), new CSSHover(options && options.clientCapabilities, cssDataManager), new SCSSNavigation(options && options.fileSystemProvider), new CSSCodeActions(cssDataManager), new CSSValidation(cssDataManager), cssDataManager); +} +function getLESSLanguageService(options = defaultLanguageServiceOptions$1) { + const cssDataManager = new CSSDataManager(options); + return createFacade(new LESSParser(), new LESSCompletion(options, cssDataManager), new CSSHover(options && options.clientCapabilities, cssDataManager), new CSSNavigation(options && options.fileSystemProvider, true), new CSSCodeActions(cssDataManager), new CSSValidation(cssDataManager), cssDataManager); +} + +var cssLanguageService = /*#__PURE__*/Object.freeze({ + __proto__: null, + get ClientCapabilities () { return ClientCapabilities$2; }, + get CodeAction () { return CodeAction; }, + get CodeActionContext () { return CodeActionContext; }, + get CodeActionKind () { return CodeActionKind; }, + get Color () { return Color; }, + get ColorInformation () { return ColorInformation; }, + get ColorPresentation () { return ColorPresentation; }, + get Command () { return Command; }, + get CompletionItem () { return CompletionItem; }, + get CompletionItemKind () { return CompletionItemKind; }, + get CompletionItemTag () { return CompletionItemTag; }, + get CompletionList () { return CompletionList; }, + get Diagnostic () { return Diagnostic; }, + get DiagnosticSeverity () { return DiagnosticSeverity; }, + get DocumentHighlight () { return DocumentHighlight; }, + get DocumentHighlightKind () { return DocumentHighlightKind; }, + get DocumentLink () { return DocumentLink; }, + get DocumentSymbol () { return DocumentSymbol; }, + get DocumentUri () { return DocumentUri; }, + get FileType () { return FileType$1; }, + get FoldingRange () { return FoldingRange; }, + get FoldingRangeKind () { return FoldingRangeKind; }, + get Hover () { return Hover; }, + get InsertTextFormat () { return InsertTextFormat; }, + get Location () { return Location; }, + get MarkedString () { return MarkedString; }, + get MarkupContent () { return MarkupContent; }, + get MarkupKind () { return MarkupKind; }, + get Position () { return Position; }, + get Range () { return Range$a; }, + get SelectionRange () { return SelectionRange; }, + get SymbolInformation () { return SymbolInformation; }, + get SymbolKind () { return SymbolKind$1; }, + get TextDocument () { return TextDocument$1; }, + get TextDocumentEdit () { return TextDocumentEdit; }, + get TextEdit () { return TextEdit; }, + get VersionedTextDocumentIdentifier () { return VersionedTextDocumentIdentifier; }, + get WorkspaceEdit () { return WorkspaceEdit; }, + getCSSLanguageService: getCSSLanguageService, + getDefaultCSSDataProvider: getDefaultCSSDataProvider, + getLESSLanguageService: getLESSLanguageService, + getSCSSLanguageService: getSCSSLanguageService, + newCSSDataProvider: newCSSDataProvider +}); + +var require$$0$2 = /*@__PURE__*/getAugmentedNamespace(cssLanguageService); + +Object.defineProperty(out$6, "__esModule", { value: true }); +out$6.create = void 0; +const css = require$$0$2; +const vscode_uri_1$4 = umdExports; +// https://github.com/microsoft/vscode/blob/09850876e652688fb142e2e19fd00fd38c0bc4ba/extensions/css-language-features/server/src/cssServer.ts#L97 +const triggerCharacters$2 = ['/', '-', ':']; +function create$g() { + return (context) => { + if (!context) { + return { triggerCharacters: triggerCharacters$2 }; + } + let inited = false; + const stylesheets = new WeakMap(); + const fileSystemProvider = { + stat: async (uri) => await context.env.fs?.stat(uri) ?? { + type: css.FileType.Unknown, + ctime: 0, + mtime: 0, + size: 0, + }, + readDirectory: async (uri) => context.env.fs?.readDirectory(uri) ?? [], + }; + const documentContext = { + resolveReference(ref, base) { + if (ref.match(/^\w[\w\d+.-]*:/)) { + // starts with a schema + return ref; + } + if (ref[0] === '/') { // resolve absolute path against the current workspace folder + return base + ref; + } + const baseUri = vscode_uri_1$4.URI.parse(base); + const baseUriDir = baseUri.path.endsWith('/') ? baseUri : vscode_uri_1$4.Utils.dirname(baseUri); + return vscode_uri_1$4.Utils.resolvePath(baseUriDir, ref).toString(true); + }, + }; + const cssLs = css.getCSSLanguageService({ + fileSystemProvider, + clientCapabilities: context.env.clientCapabilities, + }); + const scssLs = css.getSCSSLanguageService({ + fileSystemProvider, + clientCapabilities: context.env.clientCapabilities, + }); + const lessLs = css.getLESSLanguageService({ + fileSystemProvider, + clientCapabilities: context.env.clientCapabilities, + }); + const postcssLs = { + ...scssLs, + doValidation: (document, stylesheet, documentSettings) => { + let errors = scssLs.doValidation(document, stylesheet, documentSettings); + errors = errors.filter(error => error.code !== 'css-semicolonexpected'); + errors = errors.filter(error => error.code !== 'css-ruleorselectorexpected'); + errors = errors.filter(error => error.code !== 'unknownAtRules'); + return errors; + }, + }; + return { + provide: { + 'css/stylesheet': getStylesheet, + 'css/languageService': getCssLs, + }, + triggerCharacters: triggerCharacters$2, + async provideCompletionItems(document, position) { + return worker(document, async (stylesheet, cssLs) => { + const settings = await context.env.getConfiguration?.(document.languageId); + const cssResult = await cssLs.doComplete2(document, position, stylesheet, documentContext, settings?.completion); + return cssResult; + }); + }, + provideRenameRange(document, position) { + return worker(document, (stylesheet, cssLs) => { + return cssLs.prepareRename(document, position, stylesheet); + }); + }, + provideRenameEdits(document, position, newName) { + return worker(document, (stylesheet, cssLs) => { + return cssLs.doRename(document, position, newName, stylesheet); + }); + }, + provideCodeActions(document, range, context) { + return worker(document, (stylesheet, cssLs) => { + return cssLs.doCodeActions2(document, range, context, stylesheet); + }); + }, + provideDefinition(document, position) { + return worker(document, (stylesheet, cssLs) => { + const location = cssLs.findDefinition(document, position, stylesheet); + if (location) { + return [{ + targetUri: location.uri, + targetRange: location.range, + targetSelectionRange: location.range, + }]; + } + }); + }, + async provideDiagnostics(document) { + return worker(document, async (stylesheet, cssLs) => { + const settings = await context.env.getConfiguration?.(document.languageId); + return cssLs.doValidation(document, stylesheet, settings); + }); + }, + async provideHover(document, position) { + return worker(document, async (stylesheet, cssLs) => { + const settings = await context.env.getConfiguration?.(document.languageId); + return cssLs.doHover(document, position, stylesheet, settings?.hover); + }); + }, + provideReferences(document, position) { + return worker(document, (stylesheet, cssLs) => { + return cssLs.findReferences(document, position, stylesheet); + }); + }, + provideDocumentHighlights(document, position) { + return worker(document, (stylesheet, cssLs) => { + return cssLs.findDocumentHighlights(document, position, stylesheet); + }); + }, + async provideDocumentLinks(document) { + return await worker(document, (stylesheet, cssLs) => { + return cssLs.findDocumentLinks2(document, stylesheet, documentContext); + }); + }, + provideDocumentSymbols(document) { + return worker(document, (stylesheet, cssLs) => { + return cssLs.findDocumentSymbols2(document, stylesheet); + }); + }, + provideDocumentColors(document) { + return worker(document, (stylesheet, cssLs) => { + return cssLs.findDocumentColors(document, stylesheet); + }); + }, + provideColorPresentations(document, color, range) { + return worker(document, (stylesheet, cssLs) => { + return cssLs.getColorPresentations(document, stylesheet, color, range); + }); + }, + provideFoldingRanges(document) { + return worker(document, (stylesheet, cssLs) => { + return cssLs.getFoldingRanges(document, stylesheet); + }); + }, + provideSelectionRanges(document, positions) { + return worker(document, (stylesheet, cssLs) => { + return cssLs.getSelectionRanges(document, positions, stylesheet); + }); + }, + async provideDocumentFormattingEdits(document, formatRange, options) { + return worker(document, async (_stylesheet, cssLs) => { + const options_2 = await context.env.getConfiguration?.(document.languageId + '.format'); + if (options_2?.enable === false) { + return; + } + return cssLs.format(document, formatRange, { + ...options_2, + ...options, + }); + }); + }, + }; + async function initCustomData() { + if (!inited) { + context?.env.onDidChangeConfiguration?.(async () => { + const customData = await getCustomData(); + cssLs.setDataProviders(true, customData); + scssLs.setDataProviders(true, customData); + lessLs.setDataProviders(true, customData); + }); + const customData = await getCustomData(); + cssLs.setDataProviders(true, customData); + scssLs.setDataProviders(true, customData); + lessLs.setDataProviders(true, customData); + inited = true; + } + } + async function getCustomData() { + const customData = await context?.env.getConfiguration?.('css.customData') ?? []; + const newData = []; + for (const customDataPath of customData) { + try { + const pathModuleName = 'path'; // avoid bundle + const { posix: path } = commonjsRequire(pathModuleName); + const jsonPath = path.resolve(customDataPath); + newData.push(css.newCSSDataProvider(commonjsRequire(jsonPath))); + } + catch (error) { + console.error(error); + } + } + return newData; + } + function getCssLs(lang) { + switch (lang) { + case 'css': return cssLs; + case 'scss': return scssLs; + case 'less': return lessLs; + case 'postcss': return postcssLs; + } + } + function getStylesheet(document) { + const cache = stylesheets.get(document); + if (cache) { + const [cacheVersion, cacheStylesheet] = cache; + if (cacheVersion === document.version) { + return cacheStylesheet; + } + } + const cssLs = getCssLs(document.languageId); + if (!cssLs) + return; + const stylesheet = cssLs.parseStylesheet(document); + stylesheets.set(document, [document.version, stylesheet]); + return stylesheet; + } + async function worker(document, callback) { + const stylesheet = getStylesheet(document); + if (!stylesheet) + return; + const cssLs = getCssLs(document.languageId); + if (!cssLs) + return; + await initCustomData(); + return callback(stylesheet, cssLs); + } + }; +} +out$6.create = create$g; +out$6.default = create$g; + +var empty$1 = {}; + +Object.defineProperty(empty$1, "__esModule", { value: true }); +empty$1.create = void 0; +console.warn('volar-service-emmet: this module is not yet supported for web.'); +function create$f() { + return () => ({}); +} +empty$1.create = create$f; +empty$1.default = create$f; + +var out$5 = {}; + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +var TokenType; +(function (TokenType) { + TokenType[TokenType["StartCommentTag"] = 0] = "StartCommentTag"; + TokenType[TokenType["Comment"] = 1] = "Comment"; + TokenType[TokenType["EndCommentTag"] = 2] = "EndCommentTag"; + TokenType[TokenType["StartTagOpen"] = 3] = "StartTagOpen"; + TokenType[TokenType["StartTagClose"] = 4] = "StartTagClose"; + TokenType[TokenType["StartTagSelfClose"] = 5] = "StartTagSelfClose"; + TokenType[TokenType["StartTag"] = 6] = "StartTag"; + TokenType[TokenType["EndTagOpen"] = 7] = "EndTagOpen"; + TokenType[TokenType["EndTagClose"] = 8] = "EndTagClose"; + TokenType[TokenType["EndTag"] = 9] = "EndTag"; + TokenType[TokenType["DelimiterAssign"] = 10] = "DelimiterAssign"; + TokenType[TokenType["AttributeName"] = 11] = "AttributeName"; + TokenType[TokenType["AttributeValue"] = 12] = "AttributeValue"; + TokenType[TokenType["StartDoctypeTag"] = 13] = "StartDoctypeTag"; + TokenType[TokenType["Doctype"] = 14] = "Doctype"; + TokenType[TokenType["EndDoctypeTag"] = 15] = "EndDoctypeTag"; + TokenType[TokenType["Content"] = 16] = "Content"; + TokenType[TokenType["Whitespace"] = 17] = "Whitespace"; + TokenType[TokenType["Unknown"] = 18] = "Unknown"; + TokenType[TokenType["Script"] = 19] = "Script"; + TokenType[TokenType["Styles"] = 20] = "Styles"; + TokenType[TokenType["EOS"] = 21] = "EOS"; +})(TokenType || (TokenType = {})); +var ScannerState; +(function (ScannerState) { + ScannerState[ScannerState["WithinContent"] = 0] = "WithinContent"; + ScannerState[ScannerState["AfterOpeningStartTag"] = 1] = "AfterOpeningStartTag"; + ScannerState[ScannerState["AfterOpeningEndTag"] = 2] = "AfterOpeningEndTag"; + ScannerState[ScannerState["WithinDoctype"] = 3] = "WithinDoctype"; + ScannerState[ScannerState["WithinTag"] = 4] = "WithinTag"; + ScannerState[ScannerState["WithinEndTag"] = 5] = "WithinEndTag"; + ScannerState[ScannerState["WithinComment"] = 6] = "WithinComment"; + ScannerState[ScannerState["WithinScriptContent"] = 7] = "WithinScriptContent"; + ScannerState[ScannerState["WithinStyleContent"] = 8] = "WithinStyleContent"; + ScannerState[ScannerState["AfterAttributeName"] = 9] = "AfterAttributeName"; + ScannerState[ScannerState["BeforeAttributeValue"] = 10] = "BeforeAttributeValue"; +})(ScannerState || (ScannerState = {})); +var ClientCapabilities$1; +(function (ClientCapabilities) { + ClientCapabilities.LATEST = { + textDocument: { + completion: { + completionItem: { + documentationFormat: [MarkupKind.Markdown, MarkupKind.PlainText] + } + }, + hover: { + contentFormat: [MarkupKind.Markdown, MarkupKind.PlainText] + } + } + }; +})(ClientCapabilities$1 || (ClientCapabilities$1 = {})); +var FileType; +(function (FileType) { + /** + * The file type is unknown. + */ + FileType[FileType["Unknown"] = 0] = "Unknown"; + /** + * A regular file. + */ + FileType[FileType["File"] = 1] = "File"; + /** + * A directory. + */ + FileType[FileType["Directory"] = 2] = "Directory"; + /** + * A symbolic link to a file. + */ + FileType[FileType["SymbolicLink"] = 64] = "SymbolicLink"; +})(FileType || (FileType = {})); + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +class MultiLineStream { + constructor(source, position) { + this.source = source; + this.len = source.length; + this.position = position; + } + eos() { + return this.len <= this.position; + } + getSource() { + return this.source; + } + pos() { + return this.position; + } + goBackTo(pos) { + this.position = pos; + } + goBack(n) { + this.position -= n; + } + advance(n) { + this.position += n; + } + goToEnd() { + this.position = this.source.length; + } + nextChar() { + return this.source.charCodeAt(this.position++) || 0; + } + peekChar(n = 0) { + return this.source.charCodeAt(this.position + n) || 0; + } + advanceIfChar(ch) { + if (ch === this.source.charCodeAt(this.position)) { + this.position++; + return true; + } + return false; + } + advanceIfChars(ch) { + let i; + if (this.position + ch.length > this.source.length) { + return false; + } + for (i = 0; i < ch.length; i++) { + if (this.source.charCodeAt(this.position + i) !== ch[i]) { + return false; + } + } + this.advance(i); + return true; + } + advanceIfRegExp(regex) { + const str = this.source.substr(this.position); + const match = str.match(regex); + if (match) { + this.position = this.position + match.index + match[0].length; + return match[0]; + } + return ''; + } + advanceUntilRegExp(regex) { + const str = this.source.substr(this.position); + const match = str.match(regex); + if (match) { + this.position = this.position + match.index; + return match[0]; + } + else { + this.goToEnd(); + } + return ''; + } + advanceUntilChar(ch) { + while (this.position < this.source.length) { + if (this.source.charCodeAt(this.position) === ch) { + return true; + } + this.advance(1); + } + return false; + } + advanceUntilChars(ch) { + while (this.position + ch.length <= this.source.length) { + let i = 0; + for (; i < ch.length && this.source.charCodeAt(this.position + i) === ch[i]; i++) { + } + if (i === ch.length) { + return true; + } + this.advance(1); + } + this.goToEnd(); + return false; + } + skipWhitespace() { + const n = this.advanceWhileChar(ch => { + return ch === _WSP || ch === _TAB || ch === _NWL || ch === _LFD || ch === _CAR; + }); + return n > 0; + } + advanceWhileChar(condition) { + const posNow = this.position; + while (this.position < this.len && condition(this.source.charCodeAt(this.position))) { + this.position++; + } + return this.position - posNow; + } +} +const _BNG = '!'.charCodeAt(0); +const _MIN = '-'.charCodeAt(0); +const _LAN = '<'.charCodeAt(0); +const _RAN = '>'.charCodeAt(0); +const _FSL = '/'.charCodeAt(0); +const _EQS = '='.charCodeAt(0); +const _DQO = '"'.charCodeAt(0); +const _SQO = '\''.charCodeAt(0); +const _NWL = '\n'.charCodeAt(0); +const _CAR = '\r'.charCodeAt(0); +const _LFD = '\f'.charCodeAt(0); +const _WSP = ' '.charCodeAt(0); +const _TAB = '\t'.charCodeAt(0); +const htmlScriptContents = { + 'text/x-handlebars-template': true, + // Fix for https://github.com/microsoft/vscode/issues/77977 + 'text/html': true, +}; +function createScanner$2(input, initialOffset = 0, initialState = ScannerState.WithinContent, emitPseudoCloseTags = false) { + const stream = new MultiLineStream(input, initialOffset); + let state = initialState; + let tokenOffset = 0; + let tokenType = TokenType.Unknown; + let tokenError; + let hasSpaceAfterTag; + let lastTag; + let lastAttributeName; + let lastTypeValue; + function nextElementName() { + return stream.advanceIfRegExp(/^[_:\w][_:\w-.\d]*/).toLowerCase(); + } + function nextAttributeName() { + return stream.advanceIfRegExp(/^[^\s"'></=\x00-\x0F\x7F\x80-\x9F]*/).toLowerCase(); + } + function finishToken(offset, type, errorMessage) { + tokenType = type; + tokenOffset = offset; + tokenError = errorMessage; + return type; + } + function scan() { + const offset = stream.pos(); + const oldState = state; + const token = internalScan(); + if (token !== TokenType.EOS && offset === stream.pos() && !(emitPseudoCloseTags && (token === TokenType.StartTagClose || token === TokenType.EndTagClose))) { + console.warn('Scanner.scan has not advanced at offset ' + offset + ', state before: ' + oldState + ' after: ' + state); + stream.advance(1); + return finishToken(offset, TokenType.Unknown); + } + return token; + } + function internalScan() { + const offset = stream.pos(); + if (stream.eos()) { + return finishToken(offset, TokenType.EOS); + } + let errorMessage; + switch (state) { + case ScannerState.WithinComment: + if (stream.advanceIfChars([_MIN, _MIN, _RAN])) { // --> + state = ScannerState.WithinContent; + return finishToken(offset, TokenType.EndCommentTag); + } + stream.advanceUntilChars([_MIN, _MIN, _RAN]); // --> + return finishToken(offset, TokenType.Comment); + case ScannerState.WithinDoctype: + if (stream.advanceIfChar(_RAN)) { + state = ScannerState.WithinContent; + return finishToken(offset, TokenType.EndDoctypeTag); + } + stream.advanceUntilChar(_RAN); // > + return finishToken(offset, TokenType.Doctype); + case ScannerState.WithinContent: + if (stream.advanceIfChar(_LAN)) { // < + if (!stream.eos() && stream.peekChar() === _BNG) { // ! + if (stream.advanceIfChars([_BNG, _MIN, _MIN])) { // <!-- + state = ScannerState.WithinComment; + return finishToken(offset, TokenType.StartCommentTag); + } + if (stream.advanceIfRegExp(/^!doctype/i)) { + state = ScannerState.WithinDoctype; + return finishToken(offset, TokenType.StartDoctypeTag); + } + } + if (stream.advanceIfChar(_FSL)) { // / + state = ScannerState.AfterOpeningEndTag; + return finishToken(offset, TokenType.EndTagOpen); + } + state = ScannerState.AfterOpeningStartTag; + return finishToken(offset, TokenType.StartTagOpen); + } + stream.advanceUntilChar(_LAN); + return finishToken(offset, TokenType.Content); + case ScannerState.AfterOpeningEndTag: + const tagName = nextElementName(); + if (tagName.length > 0) { + state = ScannerState.WithinEndTag; + return finishToken(offset, TokenType.EndTag); + } + if (stream.skipWhitespace()) { // white space is not valid here + return finishToken(offset, TokenType.Whitespace, t$2('Tag name must directly follow the open bracket.')); + } + state = ScannerState.WithinEndTag; + stream.advanceUntilChar(_RAN); + if (offset < stream.pos()) { + return finishToken(offset, TokenType.Unknown, t$2('End tag name expected.')); + } + return internalScan(); + case ScannerState.WithinEndTag: + if (stream.skipWhitespace()) { // white space is valid here + return finishToken(offset, TokenType.Whitespace); + } + if (stream.advanceIfChar(_RAN)) { // > + state = ScannerState.WithinContent; + return finishToken(offset, TokenType.EndTagClose); + } + if (emitPseudoCloseTags && stream.peekChar() === _LAN) { // < + state = ScannerState.WithinContent; + return finishToken(offset, TokenType.EndTagClose, t$2('Closing bracket missing.')); + } + errorMessage = t$2('Closing bracket expected.'); + break; + case ScannerState.AfterOpeningStartTag: + lastTag = nextElementName(); + lastTypeValue = void 0; + lastAttributeName = void 0; + if (lastTag.length > 0) { + hasSpaceAfterTag = false; + state = ScannerState.WithinTag; + return finishToken(offset, TokenType.StartTag); + } + if (stream.skipWhitespace()) { // white space is not valid here + return finishToken(offset, TokenType.Whitespace, t$2('Tag name must directly follow the open bracket.')); + } + state = ScannerState.WithinTag; + stream.advanceUntilChar(_RAN); + if (offset < stream.pos()) { + return finishToken(offset, TokenType.Unknown, t$2('Start tag name expected.')); + } + return internalScan(); + case ScannerState.WithinTag: + if (stream.skipWhitespace()) { + hasSpaceAfterTag = true; // remember that we have seen a whitespace + return finishToken(offset, TokenType.Whitespace); + } + if (hasSpaceAfterTag) { + lastAttributeName = nextAttributeName(); + if (lastAttributeName.length > 0) { + state = ScannerState.AfterAttributeName; + hasSpaceAfterTag = false; + return finishToken(offset, TokenType.AttributeName); + } + } + if (stream.advanceIfChars([_FSL, _RAN])) { // /> + state = ScannerState.WithinContent; + return finishToken(offset, TokenType.StartTagSelfClose); + } + if (stream.advanceIfChar(_RAN)) { // > + if (lastTag === 'script') { + if (lastTypeValue && htmlScriptContents[lastTypeValue]) { + // stay in html + state = ScannerState.WithinContent; + } + else { + state = ScannerState.WithinScriptContent; + } + } + else if (lastTag === 'style') { + state = ScannerState.WithinStyleContent; + } + else { + state = ScannerState.WithinContent; + } + return finishToken(offset, TokenType.StartTagClose); + } + if (emitPseudoCloseTags && stream.peekChar() === _LAN) { // < + state = ScannerState.WithinContent; + return finishToken(offset, TokenType.StartTagClose, t$2('Closing bracket missing.')); + } + stream.advance(1); + return finishToken(offset, TokenType.Unknown, t$2('Unexpected character in tag.')); + case ScannerState.AfterAttributeName: + if (stream.skipWhitespace()) { + hasSpaceAfterTag = true; + return finishToken(offset, TokenType.Whitespace); + } + if (stream.advanceIfChar(_EQS)) { + state = ScannerState.BeforeAttributeValue; + return finishToken(offset, TokenType.DelimiterAssign); + } + state = ScannerState.WithinTag; + return internalScan(); // no advance yet - jump to WithinTag + case ScannerState.BeforeAttributeValue: + if (stream.skipWhitespace()) { + return finishToken(offset, TokenType.Whitespace); + } + let attributeValue = stream.advanceIfRegExp(/^[^\s"'`=<>]+/); + if (attributeValue.length > 0) { + if (stream.peekChar() === _RAN && stream.peekChar(-1) === _FSL) { // <foo bar=http://foo/> + stream.goBack(1); + attributeValue = attributeValue.substring(0, attributeValue.length - 1); + } + if (lastAttributeName === 'type') { + lastTypeValue = attributeValue; + } + if (attributeValue.length > 0) { + state = ScannerState.WithinTag; + hasSpaceAfterTag = false; + return finishToken(offset, TokenType.AttributeValue); + } + } + const ch = stream.peekChar(); + if (ch === _SQO || ch === _DQO) { + stream.advance(1); // consume quote + if (stream.advanceUntilChar(ch)) { + stream.advance(1); // consume quote + } + if (lastAttributeName === 'type') { + lastTypeValue = stream.getSource().substring(offset + 1, stream.pos() - 1); + } + state = ScannerState.WithinTag; + hasSpaceAfterTag = false; + return finishToken(offset, TokenType.AttributeValue); + } + state = ScannerState.WithinTag; + hasSpaceAfterTag = false; + return internalScan(); // no advance yet - jump to WithinTag + case ScannerState.WithinScriptContent: + // see http://stackoverflow.com/questions/14574471/how-do-browsers-parse-a-script-tag-exactly + let sciptState = 1; + while (!stream.eos()) { + const match = stream.advanceIfRegExp(/<!--|-->|<\/?script\s*\/?>?/i); + if (match.length === 0) { + stream.goToEnd(); + return finishToken(offset, TokenType.Script); + } + else if (match === '<!--') { + if (sciptState === 1) { + sciptState = 2; + } + } + else if (match === '-->') { + sciptState = 1; + } + else if (match[1] !== '/') { // <script + if (sciptState === 2) { + sciptState = 3; + } + } + else { // </script + if (sciptState === 3) { + sciptState = 2; + } + else { + stream.goBack(match.length); // to the beginning of the closing tag + break; + } + } + } + state = ScannerState.WithinContent; + if (offset < stream.pos()) { + return finishToken(offset, TokenType.Script); + } + return internalScan(); // no advance yet - jump to content + case ScannerState.WithinStyleContent: + stream.advanceUntilRegExp(/<\/style/i); + state = ScannerState.WithinContent; + if (offset < stream.pos()) { + return finishToken(offset, TokenType.Styles); + } + return internalScan(); // no advance yet - jump to content + } + stream.advance(1); + state = ScannerState.WithinContent; + return finishToken(offset, TokenType.Unknown, errorMessage); + } + return { + scan, + getTokenType: () => tokenType, + getTokenOffset: () => tokenOffset, + getTokenLength: () => stream.pos() - tokenOffset, + getTokenEnd: () => stream.pos(), + getTokenText: () => stream.getSource().substring(tokenOffset, stream.pos()), + getScannerState: () => state, + getTokenError: () => tokenError + }; +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +/** + * Takes a sorted array and a function p. The array is sorted in such a way that all elements where p(x) is false + * are located before all elements where p(x) is true. + * @returns the least x for which p(x) is true or array.length if no element fullfills the given function. + */ +function findFirst(array, p) { + let low = 0, high = array.length; + if (high === 0) { + return 0; // no children + } + while (low < high) { + let mid = Math.floor((low + high) / 2); + if (p(array[mid])) { + high = mid; + } + else { + low = mid + 1; + } + } + return low; +} +function binarySearch(array, key, comparator) { + let low = 0, high = array.length - 1; + while (low <= high) { + const mid = ((low + high) / 2) | 0; + const comp = comparator(array[mid], key); + if (comp < 0) { + low = mid + 1; + } + else if (comp > 0) { + high = mid - 1; + } + else { + return mid; + } + } + return -(low + 1); +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +let Node$1 = class Node { + get attributeNames() { return this.attributes ? Object.keys(this.attributes) : []; } + constructor(start, end, children, parent) { + this.start = start; + this.end = end; + this.children = children; + this.parent = parent; + this.closed = false; + } + isSameTag(tagInLowerCase) { + if (this.tag === undefined) { + return tagInLowerCase === undefined; + } + else { + return tagInLowerCase !== undefined && this.tag.length === tagInLowerCase.length && this.tag.toLowerCase() === tagInLowerCase; + } + } + get firstChild() { return this.children[0]; } + get lastChild() { return this.children.length ? this.children[this.children.length - 1] : void 0; } + findNodeBefore(offset) { + const idx = findFirst(this.children, c => offset <= c.start) - 1; + if (idx >= 0) { + const child = this.children[idx]; + if (offset > child.start) { + if (offset < child.end) { + return child.findNodeBefore(offset); + } + const lastChild = child.lastChild; + if (lastChild && lastChild.end === child.end) { + return child.findNodeBefore(offset); + } + return child; + } + } + return this; + } + findNodeAt(offset) { + const idx = findFirst(this.children, c => offset <= c.start) - 1; + if (idx >= 0) { + const child = this.children[idx]; + if (offset > child.start && offset <= child.end) { + return child.findNodeAt(offset); + } + } + return this; + } +}; +class HTMLParser { + constructor(dataManager) { + this.dataManager = dataManager; + } + parseDocument(document) { + return this.parse(document.getText(), this.dataManager.getVoidElements(document.languageId)); + } + parse(text, voidElements) { + const scanner = createScanner$2(text, undefined, undefined, true); + const htmlDocument = new Node$1(0, text.length, [], void 0); + let curr = htmlDocument; + let endTagStart = -1; + let endTagName = undefined; + let pendingAttribute = null; + let token = scanner.scan(); + while (token !== TokenType.EOS) { + switch (token) { + case TokenType.StartTagOpen: + const child = new Node$1(scanner.getTokenOffset(), text.length, [], curr); + curr.children.push(child); + curr = child; + break; + case TokenType.StartTag: + curr.tag = scanner.getTokenText(); + break; + case TokenType.StartTagClose: + if (curr.parent) { + curr.end = scanner.getTokenEnd(); // might be later set to end tag position + if (scanner.getTokenLength()) { + curr.startTagEnd = scanner.getTokenEnd(); + if (curr.tag && this.dataManager.isVoidElement(curr.tag, voidElements)) { + curr.closed = true; + curr = curr.parent; + } + } + else { + // pseudo close token from an incomplete start tag + curr = curr.parent; + } + } + break; + case TokenType.StartTagSelfClose: + if (curr.parent) { + curr.closed = true; + curr.end = scanner.getTokenEnd(); + curr.startTagEnd = scanner.getTokenEnd(); + curr = curr.parent; + } + break; + case TokenType.EndTagOpen: + endTagStart = scanner.getTokenOffset(); + endTagName = undefined; + break; + case TokenType.EndTag: + endTagName = scanner.getTokenText().toLowerCase(); + break; + case TokenType.EndTagClose: + let node = curr; + // see if we can find a matching tag + while (!node.isSameTag(endTagName) && node.parent) { + node = node.parent; + } + if (node.parent) { + while (curr !== node) { + curr.end = endTagStart; + curr.closed = false; + curr = curr.parent; + } + curr.closed = true; + curr.endTagStart = endTagStart; + curr.end = scanner.getTokenEnd(); + curr = curr.parent; + } + break; + case TokenType.AttributeName: { + pendingAttribute = scanner.getTokenText(); + let attributes = curr.attributes; + if (!attributes) { + curr.attributes = attributes = {}; + } + attributes[pendingAttribute] = null; // Support valueless attributes such as 'checked' + break; + } + case TokenType.AttributeValue: { + const value = scanner.getTokenText(); + const attributes = curr.attributes; + if (attributes && pendingAttribute) { + attributes[pendingAttribute] = value; + pendingAttribute = null; + } + break; + } + } + token = scanner.scan(); + } + while (curr.parent) { + curr.end = text.length; + curr.closed = false; + curr = curr.parent; + } + return { + roots: htmlDocument.children, + findNodeBefore: htmlDocument.findNodeBefore.bind(htmlDocument), + findNodeAt: htmlDocument.findNodeAt.bind(htmlDocument) + }; + } +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +/** + * HTML 5 character entities + * https://www.w3.org/TR/html5/syntax.html#named-character-references + */ +const entities = { + "Aacute;": "\u00C1", + "Aacute": "\u00C1", + "aacute;": "\u00E1", + "aacute": "\u00E1", + "Abreve;": "\u0102", + "abreve;": "\u0103", + "ac;": "\u223E", + "acd;": "\u223F", + "acE;": "\u223E\u0333", + "Acirc;": "\u00C2", + "Acirc": "\u00C2", + "acirc;": "\u00E2", + "acirc": "\u00E2", + "acute;": "\u00B4", + "acute": "\u00B4", + "Acy;": "\u0410", + "acy;": "\u0430", + "AElig;": "\u00C6", + "AElig": "\u00C6", + "aelig;": "\u00E6", + "aelig": "\u00E6", + "af;": "\u2061", + "Afr;": "\uD835\uDD04", + "afr;": "\uD835\uDD1E", + "Agrave;": "\u00C0", + "Agrave": "\u00C0", + "agrave;": "\u00E0", + "agrave": "\u00E0", + "alefsym;": "\u2135", + "aleph;": "\u2135", + "Alpha;": "\u0391", + "alpha;": "\u03B1", + "Amacr;": "\u0100", + "amacr;": "\u0101", + "amalg;": "\u2A3F", + "AMP;": "\u0026", + "AMP": "\u0026", + "amp;": "\u0026", + "amp": "\u0026", + "And;": "\u2A53", + "and;": "\u2227", + "andand;": "\u2A55", + "andd;": "\u2A5C", + "andslope;": "\u2A58", + "andv;": "\u2A5A", + "ang;": "\u2220", + "ange;": "\u29A4", + "angle;": "\u2220", + "angmsd;": "\u2221", + "angmsdaa;": "\u29A8", + "angmsdab;": "\u29A9", + "angmsdac;": "\u29AA", + "angmsdad;": "\u29AB", + "angmsdae;": "\u29AC", + "angmsdaf;": "\u29AD", + "angmsdag;": "\u29AE", + "angmsdah;": "\u29AF", + "angrt;": "\u221F", + "angrtvb;": "\u22BE", + "angrtvbd;": "\u299D", + "angsph;": "\u2222", + "angst;": "\u00C5", + "angzarr;": "\u237C", + "Aogon;": "\u0104", + "aogon;": "\u0105", + "Aopf;": "\uD835\uDD38", + "aopf;": "\uD835\uDD52", + "ap;": "\u2248", + "apacir;": "\u2A6F", + "apE;": "\u2A70", + "ape;": "\u224A", + "apid;": "\u224B", + "apos;": "\u0027", + "ApplyFunction;": "\u2061", + "approx;": "\u2248", + "approxeq;": "\u224A", + "Aring;": "\u00C5", + "Aring": "\u00C5", + "aring;": "\u00E5", + "aring": "\u00E5", + "Ascr;": "\uD835\uDC9C", + "ascr;": "\uD835\uDCB6", + "Assign;": "\u2254", + "ast;": "\u002A", + "asymp;": "\u2248", + "asympeq;": "\u224D", + "Atilde;": "\u00C3", + "Atilde": "\u00C3", + "atilde;": "\u00E3", + "atilde": "\u00E3", + "Auml;": "\u00C4", + "Auml": "\u00C4", + "auml;": "\u00E4", + "auml": "\u00E4", + "awconint;": "\u2233", + "awint;": "\u2A11", + "backcong;": "\u224C", + "backepsilon;": "\u03F6", + "backprime;": "\u2035", + "backsim;": "\u223D", + "backsimeq;": "\u22CD", + "Backslash;": "\u2216", + "Barv;": "\u2AE7", + "barvee;": "\u22BD", + "Barwed;": "\u2306", + "barwed;": "\u2305", + "barwedge;": "\u2305", + "bbrk;": "\u23B5", + "bbrktbrk;": "\u23B6", + "bcong;": "\u224C", + "Bcy;": "\u0411", + "bcy;": "\u0431", + "bdquo;": "\u201E", + "becaus;": "\u2235", + "Because;": "\u2235", + "because;": "\u2235", + "bemptyv;": "\u29B0", + "bepsi;": "\u03F6", + "bernou;": "\u212C", + "Bernoullis;": "\u212C", + "Beta;": "\u0392", + "beta;": "\u03B2", + "beth;": "\u2136", + "between;": "\u226C", + "Bfr;": "\uD835\uDD05", + "bfr;": "\uD835\uDD1F", + "bigcap;": "\u22C2", + "bigcirc;": "\u25EF", + "bigcup;": "\u22C3", + "bigodot;": "\u2A00", + "bigoplus;": "\u2A01", + "bigotimes;": "\u2A02", + "bigsqcup;": "\u2A06", + "bigstar;": "\u2605", + "bigtriangledown;": "\u25BD", + "bigtriangleup;": "\u25B3", + "biguplus;": "\u2A04", + "bigvee;": "\u22C1", + "bigwedge;": "\u22C0", + "bkarow;": "\u290D", + "blacklozenge;": "\u29EB", + "blacksquare;": "\u25AA", + "blacktriangle;": "\u25B4", + "blacktriangledown;": "\u25BE", + "blacktriangleleft;": "\u25C2", + "blacktriangleright;": "\u25B8", + "blank;": "\u2423", + "blk12;": "\u2592", + "blk14;": "\u2591", + "blk34;": "\u2593", + "block;": "\u2588", + "bne;": "\u003D\u20E5", + "bnequiv;": "\u2261\u20E5", + "bNot;": "\u2AED", + "bnot;": "\u2310", + "Bopf;": "\uD835\uDD39", + "bopf;": "\uD835\uDD53", + "bot;": "\u22A5", + "bottom;": "\u22A5", + "bowtie;": "\u22C8", + "boxbox;": "\u29C9", + "boxDL;": "\u2557", + "boxDl;": "\u2556", + "boxdL;": "\u2555", + "boxdl;": "\u2510", + "boxDR;": "\u2554", + "boxDr;": "\u2553", + "boxdR;": "\u2552", + "boxdr;": "\u250C", + "boxH;": "\u2550", + "boxh;": "\u2500", + "boxHD;": "\u2566", + "boxHd;": "\u2564", + "boxhD;": "\u2565", + "boxhd;": "\u252C", + "boxHU;": "\u2569", + "boxHu;": "\u2567", + "boxhU;": "\u2568", + "boxhu;": "\u2534", + "boxminus;": "\u229F", + "boxplus;": "\u229E", + "boxtimes;": "\u22A0", + "boxUL;": "\u255D", + "boxUl;": "\u255C", + "boxuL;": "\u255B", + "boxul;": "\u2518", + "boxUR;": "\u255A", + "boxUr;": "\u2559", + "boxuR;": "\u2558", + "boxur;": "\u2514", + "boxV;": "\u2551", + "boxv;": "\u2502", + "boxVH;": "\u256C", + "boxVh;": "\u256B", + "boxvH;": "\u256A", + "boxvh;": "\u253C", + "boxVL;": "\u2563", + "boxVl;": "\u2562", + "boxvL;": "\u2561", + "boxvl;": "\u2524", + "boxVR;": "\u2560", + "boxVr;": "\u255F", + "boxvR;": "\u255E", + "boxvr;": "\u251C", + "bprime;": "\u2035", + "Breve;": "\u02D8", + "breve;": "\u02D8", + "brvbar;": "\u00A6", + "brvbar": "\u00A6", + "Bscr;": "\u212C", + "bscr;": "\uD835\uDCB7", + "bsemi;": "\u204F", + "bsim;": "\u223D", + "bsime;": "\u22CD", + "bsol;": "\u005C", + "bsolb;": "\u29C5", + "bsolhsub;": "\u27C8", + "bull;": "\u2022", + "bullet;": "\u2022", + "bump;": "\u224E", + "bumpE;": "\u2AAE", + "bumpe;": "\u224F", + "Bumpeq;": "\u224E", + "bumpeq;": "\u224F", + "Cacute;": "\u0106", + "cacute;": "\u0107", + "Cap;": "\u22D2", + "cap;": "\u2229", + "capand;": "\u2A44", + "capbrcup;": "\u2A49", + "capcap;": "\u2A4B", + "capcup;": "\u2A47", + "capdot;": "\u2A40", + "CapitalDifferentialD;": "\u2145", + "caps;": "\u2229\uFE00", + "caret;": "\u2041", + "caron;": "\u02C7", + "Cayleys;": "\u212D", + "ccaps;": "\u2A4D", + "Ccaron;": "\u010C", + "ccaron;": "\u010D", + "Ccedil;": "\u00C7", + "Ccedil": "\u00C7", + "ccedil;": "\u00E7", + "ccedil": "\u00E7", + "Ccirc;": "\u0108", + "ccirc;": "\u0109", + "Cconint;": "\u2230", + "ccups;": "\u2A4C", + "ccupssm;": "\u2A50", + "Cdot;": "\u010A", + "cdot;": "\u010B", + "cedil;": "\u00B8", + "cedil": "\u00B8", + "Cedilla;": "\u00B8", + "cemptyv;": "\u29B2", + "cent;": "\u00A2", + "cent": "\u00A2", + "CenterDot;": "\u00B7", + "centerdot;": "\u00B7", + "Cfr;": "\u212D", + "cfr;": "\uD835\uDD20", + "CHcy;": "\u0427", + "chcy;": "\u0447", + "check;": "\u2713", + "checkmark;": "\u2713", + "Chi;": "\u03A7", + "chi;": "\u03C7", + "cir;": "\u25CB", + "circ;": "\u02C6", + "circeq;": "\u2257", + "circlearrowleft;": "\u21BA", + "circlearrowright;": "\u21BB", + "circledast;": "\u229B", + "circledcirc;": "\u229A", + "circleddash;": "\u229D", + "CircleDot;": "\u2299", + "circledR;": "\u00AE", + "circledS;": "\u24C8", + "CircleMinus;": "\u2296", + "CirclePlus;": "\u2295", + "CircleTimes;": "\u2297", + "cirE;": "\u29C3", + "cire;": "\u2257", + "cirfnint;": "\u2A10", + "cirmid;": "\u2AEF", + "cirscir;": "\u29C2", + "ClockwiseContourIntegral;": "\u2232", + "CloseCurlyDoubleQuote;": "\u201D", + "CloseCurlyQuote;": "\u2019", + "clubs;": "\u2663", + "clubsuit;": "\u2663", + "Colon;": "\u2237", + "colon;": "\u003A", + "Colone;": "\u2A74", + "colone;": "\u2254", + "coloneq;": "\u2254", + "comma;": "\u002C", + "commat;": "\u0040", + "comp;": "\u2201", + "compfn;": "\u2218", + "complement;": "\u2201", + "complexes;": "\u2102", + "cong;": "\u2245", + "congdot;": "\u2A6D", + "Congruent;": "\u2261", + "Conint;": "\u222F", + "conint;": "\u222E", + "ContourIntegral;": "\u222E", + "Copf;": "\u2102", + "copf;": "\uD835\uDD54", + "coprod;": "\u2210", + "Coproduct;": "\u2210", + "COPY;": "\u00A9", + "COPY": "\u00A9", + "copy;": "\u00A9", + "copy": "\u00A9", + "copysr;": "\u2117", + "CounterClockwiseContourIntegral;": "\u2233", + "crarr;": "\u21B5", + "Cross;": "\u2A2F", + "cross;": "\u2717", + "Cscr;": "\uD835\uDC9E", + "cscr;": "\uD835\uDCB8", + "csub;": "\u2ACF", + "csube;": "\u2AD1", + "csup;": "\u2AD0", + "csupe;": "\u2AD2", + "ctdot;": "\u22EF", + "cudarrl;": "\u2938", + "cudarrr;": "\u2935", + "cuepr;": "\u22DE", + "cuesc;": "\u22DF", + "cularr;": "\u21B6", + "cularrp;": "\u293D", + "Cup;": "\u22D3", + "cup;": "\u222A", + "cupbrcap;": "\u2A48", + "CupCap;": "\u224D", + "cupcap;": "\u2A46", + "cupcup;": "\u2A4A", + "cupdot;": "\u228D", + "cupor;": "\u2A45", + "cups;": "\u222A\uFE00", + "curarr;": "\u21B7", + "curarrm;": "\u293C", + "curlyeqprec;": "\u22DE", + "curlyeqsucc;": "\u22DF", + "curlyvee;": "\u22CE", + "curlywedge;": "\u22CF", + "curren;": "\u00A4", + "curren": "\u00A4", + "curvearrowleft;": "\u21B6", + "curvearrowright;": "\u21B7", + "cuvee;": "\u22CE", + "cuwed;": "\u22CF", + "cwconint;": "\u2232", + "cwint;": "\u2231", + "cylcty;": "\u232D", + "Dagger;": "\u2021", + "dagger;": "\u2020", + "daleth;": "\u2138", + "Darr;": "\u21A1", + "dArr;": "\u21D3", + "darr;": "\u2193", + "dash;": "\u2010", + "Dashv;": "\u2AE4", + "dashv;": "\u22A3", + "dbkarow;": "\u290F", + "dblac;": "\u02DD", + "Dcaron;": "\u010E", + "dcaron;": "\u010F", + "Dcy;": "\u0414", + "dcy;": "\u0434", + "DD;": "\u2145", + "dd;": "\u2146", + "ddagger;": "\u2021", + "ddarr;": "\u21CA", + "DDotrahd;": "\u2911", + "ddotseq;": "\u2A77", + "deg;": "\u00B0", + "deg": "\u00B0", + "Del;": "\u2207", + "Delta;": "\u0394", + "delta;": "\u03B4", + "demptyv;": "\u29B1", + "dfisht;": "\u297F", + "Dfr;": "\uD835\uDD07", + "dfr;": "\uD835\uDD21", + "dHar;": "\u2965", + "dharl;": "\u21C3", + "dharr;": "\u21C2", + "DiacriticalAcute;": "\u00B4", + "DiacriticalDot;": "\u02D9", + "DiacriticalDoubleAcute;": "\u02DD", + "DiacriticalGrave;": "\u0060", + "DiacriticalTilde;": "\u02DC", + "diam;": "\u22C4", + "Diamond;": "\u22C4", + "diamond;": "\u22C4", + "diamondsuit;": "\u2666", + "diams;": "\u2666", + "die;": "\u00A8", + "DifferentialD;": "\u2146", + "digamma;": "\u03DD", + "disin;": "\u22F2", + "div;": "\u00F7", + "divide;": "\u00F7", + "divide": "\u00F7", + "divideontimes;": "\u22C7", + "divonx;": "\u22C7", + "DJcy;": "\u0402", + "djcy;": "\u0452", + "dlcorn;": "\u231E", + "dlcrop;": "\u230D", + "dollar;": "\u0024", + "Dopf;": "\uD835\uDD3B", + "dopf;": "\uD835\uDD55", + "Dot;": "\u00A8", + "dot;": "\u02D9", + "DotDot;": "\u20DC", + "doteq;": "\u2250", + "doteqdot;": "\u2251", + "DotEqual;": "\u2250", + "dotminus;": "\u2238", + "dotplus;": "\u2214", + "dotsquare;": "\u22A1", + "doublebarwedge;": "\u2306", + "DoubleContourIntegral;": "\u222F", + "DoubleDot;": "\u00A8", + "DoubleDownArrow;": "\u21D3", + "DoubleLeftArrow;": "\u21D0", + "DoubleLeftRightArrow;": "\u21D4", + "DoubleLeftTee;": "\u2AE4", + "DoubleLongLeftArrow;": "\u27F8", + "DoubleLongLeftRightArrow;": "\u27FA", + "DoubleLongRightArrow;": "\u27F9", + "DoubleRightArrow;": "\u21D2", + "DoubleRightTee;": "\u22A8", + "DoubleUpArrow;": "\u21D1", + "DoubleUpDownArrow;": "\u21D5", + "DoubleVerticalBar;": "\u2225", + "DownArrow;": "\u2193", + "Downarrow;": "\u21D3", + "downarrow;": "\u2193", + "DownArrowBar;": "\u2913", + "DownArrowUpArrow;": "\u21F5", + "DownBreve;": "\u0311", + "downdownarrows;": "\u21CA", + "downharpoonleft;": "\u21C3", + "downharpoonright;": "\u21C2", + "DownLeftRightVector;": "\u2950", + "DownLeftTeeVector;": "\u295E", + "DownLeftVector;": "\u21BD", + "DownLeftVectorBar;": "\u2956", + "DownRightTeeVector;": "\u295F", + "DownRightVector;": "\u21C1", + "DownRightVectorBar;": "\u2957", + "DownTee;": "\u22A4", + "DownTeeArrow;": "\u21A7", + "drbkarow;": "\u2910", + "drcorn;": "\u231F", + "drcrop;": "\u230C", + "Dscr;": "\uD835\uDC9F", + "dscr;": "\uD835\uDCB9", + "DScy;": "\u0405", + "dscy;": "\u0455", + "dsol;": "\u29F6", + "Dstrok;": "\u0110", + "dstrok;": "\u0111", + "dtdot;": "\u22F1", + "dtri;": "\u25BF", + "dtrif;": "\u25BE", + "duarr;": "\u21F5", + "duhar;": "\u296F", + "dwangle;": "\u29A6", + "DZcy;": "\u040F", + "dzcy;": "\u045F", + "dzigrarr;": "\u27FF", + "Eacute;": "\u00C9", + "Eacute": "\u00C9", + "eacute;": "\u00E9", + "eacute": "\u00E9", + "easter;": "\u2A6E", + "Ecaron;": "\u011A", + "ecaron;": "\u011B", + "ecir;": "\u2256", + "Ecirc;": "\u00CA", + "Ecirc": "\u00CA", + "ecirc;": "\u00EA", + "ecirc": "\u00EA", + "ecolon;": "\u2255", + "Ecy;": "\u042D", + "ecy;": "\u044D", + "eDDot;": "\u2A77", + "Edot;": "\u0116", + "eDot;": "\u2251", + "edot;": "\u0117", + "ee;": "\u2147", + "efDot;": "\u2252", + "Efr;": "\uD835\uDD08", + "efr;": "\uD835\uDD22", + "eg;": "\u2A9A", + "Egrave;": "\u00C8", + "Egrave": "\u00C8", + "egrave;": "\u00E8", + "egrave": "\u00E8", + "egs;": "\u2A96", + "egsdot;": "\u2A98", + "el;": "\u2A99", + "Element;": "\u2208", + "elinters;": "\u23E7", + "ell;": "\u2113", + "els;": "\u2A95", + "elsdot;": "\u2A97", + "Emacr;": "\u0112", + "emacr;": "\u0113", + "empty;": "\u2205", + "emptyset;": "\u2205", + "EmptySmallSquare;": "\u25FB", + "emptyv;": "\u2205", + "EmptyVerySmallSquare;": "\u25AB", + "emsp;": "\u2003", + "emsp13;": "\u2004", + "emsp14;": "\u2005", + "ENG;": "\u014A", + "eng;": "\u014B", + "ensp;": "\u2002", + "Eogon;": "\u0118", + "eogon;": "\u0119", + "Eopf;": "\uD835\uDD3C", + "eopf;": "\uD835\uDD56", + "epar;": "\u22D5", + "eparsl;": "\u29E3", + "eplus;": "\u2A71", + "epsi;": "\u03B5", + "Epsilon;": "\u0395", + "epsilon;": "\u03B5", + "epsiv;": "\u03F5", + "eqcirc;": "\u2256", + "eqcolon;": "\u2255", + "eqsim;": "\u2242", + "eqslantgtr;": "\u2A96", + "eqslantless;": "\u2A95", + "Equal;": "\u2A75", + "equals;": "\u003D", + "EqualTilde;": "\u2242", + "equest;": "\u225F", + "Equilibrium;": "\u21CC", + "equiv;": "\u2261", + "equivDD;": "\u2A78", + "eqvparsl;": "\u29E5", + "erarr;": "\u2971", + "erDot;": "\u2253", + "Escr;": "\u2130", + "escr;": "\u212F", + "esdot;": "\u2250", + "Esim;": "\u2A73", + "esim;": "\u2242", + "Eta;": "\u0397", + "eta;": "\u03B7", + "ETH;": "\u00D0", + "ETH": "\u00D0", + "eth;": "\u00F0", + "eth": "\u00F0", + "Euml;": "\u00CB", + "Euml": "\u00CB", + "euml;": "\u00EB", + "euml": "\u00EB", + "euro;": "\u20AC", + "excl;": "\u0021", + "exist;": "\u2203", + "Exists;": "\u2203", + "expectation;": "\u2130", + "ExponentialE;": "\u2147", + "exponentiale;": "\u2147", + "fallingdotseq;": "\u2252", + "Fcy;": "\u0424", + "fcy;": "\u0444", + "female;": "\u2640", + "ffilig;": "\uFB03", + "fflig;": "\uFB00", + "ffllig;": "\uFB04", + "Ffr;": "\uD835\uDD09", + "ffr;": "\uD835\uDD23", + "filig;": "\uFB01", + "FilledSmallSquare;": "\u25FC", + "FilledVerySmallSquare;": "\u25AA", + "fjlig;": "\u0066\u006A", + "flat;": "\u266D", + "fllig;": "\uFB02", + "fltns;": "\u25B1", + "fnof;": "\u0192", + "Fopf;": "\uD835\uDD3D", + "fopf;": "\uD835\uDD57", + "ForAll;": "\u2200", + "forall;": "\u2200", + "fork;": "\u22D4", + "forkv;": "\u2AD9", + "Fouriertrf;": "\u2131", + "fpartint;": "\u2A0D", + "frac12;": "\u00BD", + "frac12": "\u00BD", + "frac13;": "\u2153", + "frac14;": "\u00BC", + "frac14": "\u00BC", + "frac15;": "\u2155", + "frac16;": "\u2159", + "frac18;": "\u215B", + "frac23;": "\u2154", + "frac25;": "\u2156", + "frac34;": "\u00BE", + "frac34": "\u00BE", + "frac35;": "\u2157", + "frac38;": "\u215C", + "frac45;": "\u2158", + "frac56;": "\u215A", + "frac58;": "\u215D", + "frac78;": "\u215E", + "frasl;": "\u2044", + "frown;": "\u2322", + "Fscr;": "\u2131", + "fscr;": "\uD835\uDCBB", + "gacute;": "\u01F5", + "Gamma;": "\u0393", + "gamma;": "\u03B3", + "Gammad;": "\u03DC", + "gammad;": "\u03DD", + "gap;": "\u2A86", + "Gbreve;": "\u011E", + "gbreve;": "\u011F", + "Gcedil;": "\u0122", + "Gcirc;": "\u011C", + "gcirc;": "\u011D", + "Gcy;": "\u0413", + "gcy;": "\u0433", + "Gdot;": "\u0120", + "gdot;": "\u0121", + "gE;": "\u2267", + "ge;": "\u2265", + "gEl;": "\u2A8C", + "gel;": "\u22DB", + "geq;": "\u2265", + "geqq;": "\u2267", + "geqslant;": "\u2A7E", + "ges;": "\u2A7E", + "gescc;": "\u2AA9", + "gesdot;": "\u2A80", + "gesdoto;": "\u2A82", + "gesdotol;": "\u2A84", + "gesl;": "\u22DB\uFE00", + "gesles;": "\u2A94", + "Gfr;": "\uD835\uDD0A", + "gfr;": "\uD835\uDD24", + "Gg;": "\u22D9", + "gg;": "\u226B", + "ggg;": "\u22D9", + "gimel;": "\u2137", + "GJcy;": "\u0403", + "gjcy;": "\u0453", + "gl;": "\u2277", + "gla;": "\u2AA5", + "glE;": "\u2A92", + "glj;": "\u2AA4", + "gnap;": "\u2A8A", + "gnapprox;": "\u2A8A", + "gnE;": "\u2269", + "gne;": "\u2A88", + "gneq;": "\u2A88", + "gneqq;": "\u2269", + "gnsim;": "\u22E7", + "Gopf;": "\uD835\uDD3E", + "gopf;": "\uD835\uDD58", + "grave;": "\u0060", + "GreaterEqual;": "\u2265", + "GreaterEqualLess;": "\u22DB", + "GreaterFullEqual;": "\u2267", + "GreaterGreater;": "\u2AA2", + "GreaterLess;": "\u2277", + "GreaterSlantEqual;": "\u2A7E", + "GreaterTilde;": "\u2273", + "Gscr;": "\uD835\uDCA2", + "gscr;": "\u210A", + "gsim;": "\u2273", + "gsime;": "\u2A8E", + "gsiml;": "\u2A90", + "GT;": "\u003E", + "GT": "\u003E", + "Gt;": "\u226B", + "gt;": "\u003E", + "gt": "\u003E", + "gtcc;": "\u2AA7", + "gtcir;": "\u2A7A", + "gtdot;": "\u22D7", + "gtlPar;": "\u2995", + "gtquest;": "\u2A7C", + "gtrapprox;": "\u2A86", + "gtrarr;": "\u2978", + "gtrdot;": "\u22D7", + "gtreqless;": "\u22DB", + "gtreqqless;": "\u2A8C", + "gtrless;": "\u2277", + "gtrsim;": "\u2273", + "gvertneqq;": "\u2269\uFE00", + "gvnE;": "\u2269\uFE00", + "Hacek;": "\u02C7", + "hairsp;": "\u200A", + "half;": "\u00BD", + "hamilt;": "\u210B", + "HARDcy;": "\u042A", + "hardcy;": "\u044A", + "hArr;": "\u21D4", + "harr;": "\u2194", + "harrcir;": "\u2948", + "harrw;": "\u21AD", + "Hat;": "\u005E", + "hbar;": "\u210F", + "Hcirc;": "\u0124", + "hcirc;": "\u0125", + "hearts;": "\u2665", + "heartsuit;": "\u2665", + "hellip;": "\u2026", + "hercon;": "\u22B9", + "Hfr;": "\u210C", + "hfr;": "\uD835\uDD25", + "HilbertSpace;": "\u210B", + "hksearow;": "\u2925", + "hkswarow;": "\u2926", + "hoarr;": "\u21FF", + "homtht;": "\u223B", + "hookleftarrow;": "\u21A9", + "hookrightarrow;": "\u21AA", + "Hopf;": "\u210D", + "hopf;": "\uD835\uDD59", + "horbar;": "\u2015", + "HorizontalLine;": "\u2500", + "Hscr;": "\u210B", + "hscr;": "\uD835\uDCBD", + "hslash;": "\u210F", + "Hstrok;": "\u0126", + "hstrok;": "\u0127", + "HumpDownHump;": "\u224E", + "HumpEqual;": "\u224F", + "hybull;": "\u2043", + "hyphen;": "\u2010", + "Iacute;": "\u00CD", + "Iacute": "\u00CD", + "iacute;": "\u00ED", + "iacute": "\u00ED", + "ic;": "\u2063", + "Icirc;": "\u00CE", + "Icirc": "\u00CE", + "icirc;": "\u00EE", + "icirc": "\u00EE", + "Icy;": "\u0418", + "icy;": "\u0438", + "Idot;": "\u0130", + "IEcy;": "\u0415", + "iecy;": "\u0435", + "iexcl;": "\u00A1", + "iexcl": "\u00A1", + "iff;": "\u21D4", + "Ifr;": "\u2111", + "ifr;": "\uD835\uDD26", + "Igrave;": "\u00CC", + "Igrave": "\u00CC", + "igrave;": "\u00EC", + "igrave": "\u00EC", + "ii;": "\u2148", + "iiiint;": "\u2A0C", + "iiint;": "\u222D", + "iinfin;": "\u29DC", + "iiota;": "\u2129", + "IJlig;": "\u0132", + "ijlig;": "\u0133", + "Im;": "\u2111", + "Imacr;": "\u012A", + "imacr;": "\u012B", + "image;": "\u2111", + "ImaginaryI;": "\u2148", + "imagline;": "\u2110", + "imagpart;": "\u2111", + "imath;": "\u0131", + "imof;": "\u22B7", + "imped;": "\u01B5", + "Implies;": "\u21D2", + "in;": "\u2208", + "incare;": "\u2105", + "infin;": "\u221E", + "infintie;": "\u29DD", + "inodot;": "\u0131", + "Int;": "\u222C", + "int;": "\u222B", + "intcal;": "\u22BA", + "integers;": "\u2124", + "Integral;": "\u222B", + "intercal;": "\u22BA", + "Intersection;": "\u22C2", + "intlarhk;": "\u2A17", + "intprod;": "\u2A3C", + "InvisibleComma;": "\u2063", + "InvisibleTimes;": "\u2062", + "IOcy;": "\u0401", + "iocy;": "\u0451", + "Iogon;": "\u012E", + "iogon;": "\u012F", + "Iopf;": "\uD835\uDD40", + "iopf;": "\uD835\uDD5A", + "Iota;": "\u0399", + "iota;": "\u03B9", + "iprod;": "\u2A3C", + "iquest;": "\u00BF", + "iquest": "\u00BF", + "Iscr;": "\u2110", + "iscr;": "\uD835\uDCBE", + "isin;": "\u2208", + "isindot;": "\u22F5", + "isinE;": "\u22F9", + "isins;": "\u22F4", + "isinsv;": "\u22F3", + "isinv;": "\u2208", + "it;": "\u2062", + "Itilde;": "\u0128", + "itilde;": "\u0129", + "Iukcy;": "\u0406", + "iukcy;": "\u0456", + "Iuml;": "\u00CF", + "Iuml": "\u00CF", + "iuml;": "\u00EF", + "iuml": "\u00EF", + "Jcirc;": "\u0134", + "jcirc;": "\u0135", + "Jcy;": "\u0419", + "jcy;": "\u0439", + "Jfr;": "\uD835\uDD0D", + "jfr;": "\uD835\uDD27", + "jmath;": "\u0237", + "Jopf;": "\uD835\uDD41", + "jopf;": "\uD835\uDD5B", + "Jscr;": "\uD835\uDCA5", + "jscr;": "\uD835\uDCBF", + "Jsercy;": "\u0408", + "jsercy;": "\u0458", + "Jukcy;": "\u0404", + "jukcy;": "\u0454", + "Kappa;": "\u039A", + "kappa;": "\u03BA", + "kappav;": "\u03F0", + "Kcedil;": "\u0136", + "kcedil;": "\u0137", + "Kcy;": "\u041A", + "kcy;": "\u043A", + "Kfr;": "\uD835\uDD0E", + "kfr;": "\uD835\uDD28", + "kgreen;": "\u0138", + "KHcy;": "\u0425", + "khcy;": "\u0445", + "KJcy;": "\u040C", + "kjcy;": "\u045C", + "Kopf;": "\uD835\uDD42", + "kopf;": "\uD835\uDD5C", + "Kscr;": "\uD835\uDCA6", + "kscr;": "\uD835\uDCC0", + "lAarr;": "\u21DA", + "Lacute;": "\u0139", + "lacute;": "\u013A", + "laemptyv;": "\u29B4", + "lagran;": "\u2112", + "Lambda;": "\u039B", + "lambda;": "\u03BB", + "Lang;": "\u27EA", + "lang;": "\u27E8", + "langd;": "\u2991", + "langle;": "\u27E8", + "lap;": "\u2A85", + "Laplacetrf;": "\u2112", + "laquo;": "\u00AB", + "laquo": "\u00AB", + "Larr;": "\u219E", + "lArr;": "\u21D0", + "larr;": "\u2190", + "larrb;": "\u21E4", + "larrbfs;": "\u291F", + "larrfs;": "\u291D", + "larrhk;": "\u21A9", + "larrlp;": "\u21AB", + "larrpl;": "\u2939", + "larrsim;": "\u2973", + "larrtl;": "\u21A2", + "lat;": "\u2AAB", + "lAtail;": "\u291B", + "latail;": "\u2919", + "late;": "\u2AAD", + "lates;": "\u2AAD\uFE00", + "lBarr;": "\u290E", + "lbarr;": "\u290C", + "lbbrk;": "\u2772", + "lbrace;": "\u007B", + "lbrack;": "\u005B", + "lbrke;": "\u298B", + "lbrksld;": "\u298F", + "lbrkslu;": "\u298D", + "Lcaron;": "\u013D", + "lcaron;": "\u013E", + "Lcedil;": "\u013B", + "lcedil;": "\u013C", + "lceil;": "\u2308", + "lcub;": "\u007B", + "Lcy;": "\u041B", + "lcy;": "\u043B", + "ldca;": "\u2936", + "ldquo;": "\u201C", + "ldquor;": "\u201E", + "ldrdhar;": "\u2967", + "ldrushar;": "\u294B", + "ldsh;": "\u21B2", + "lE;": "\u2266", + "le;": "\u2264", + "LeftAngleBracket;": "\u27E8", + "LeftArrow;": "\u2190", + "Leftarrow;": "\u21D0", + "leftarrow;": "\u2190", + "LeftArrowBar;": "\u21E4", + "LeftArrowRightArrow;": "\u21C6", + "leftarrowtail;": "\u21A2", + "LeftCeiling;": "\u2308", + "LeftDoubleBracket;": "\u27E6", + "LeftDownTeeVector;": "\u2961", + "LeftDownVector;": "\u21C3", + "LeftDownVectorBar;": "\u2959", + "LeftFloor;": "\u230A", + "leftharpoondown;": "\u21BD", + "leftharpoonup;": "\u21BC", + "leftleftarrows;": "\u21C7", + "LeftRightArrow;": "\u2194", + "Leftrightarrow;": "\u21D4", + "leftrightarrow;": "\u2194", + "leftrightarrows;": "\u21C6", + "leftrightharpoons;": "\u21CB", + "leftrightsquigarrow;": "\u21AD", + "LeftRightVector;": "\u294E", + "LeftTee;": "\u22A3", + "LeftTeeArrow;": "\u21A4", + "LeftTeeVector;": "\u295A", + "leftthreetimes;": "\u22CB", + "LeftTriangle;": "\u22B2", + "LeftTriangleBar;": "\u29CF", + "LeftTriangleEqual;": "\u22B4", + "LeftUpDownVector;": "\u2951", + "LeftUpTeeVector;": "\u2960", + "LeftUpVector;": "\u21BF", + "LeftUpVectorBar;": "\u2958", + "LeftVector;": "\u21BC", + "LeftVectorBar;": "\u2952", + "lEg;": "\u2A8B", + "leg;": "\u22DA", + "leq;": "\u2264", + "leqq;": "\u2266", + "leqslant;": "\u2A7D", + "les;": "\u2A7D", + "lescc;": "\u2AA8", + "lesdot;": "\u2A7F", + "lesdoto;": "\u2A81", + "lesdotor;": "\u2A83", + "lesg;": "\u22DA\uFE00", + "lesges;": "\u2A93", + "lessapprox;": "\u2A85", + "lessdot;": "\u22D6", + "lesseqgtr;": "\u22DA", + "lesseqqgtr;": "\u2A8B", + "LessEqualGreater;": "\u22DA", + "LessFullEqual;": "\u2266", + "LessGreater;": "\u2276", + "lessgtr;": "\u2276", + "LessLess;": "\u2AA1", + "lesssim;": "\u2272", + "LessSlantEqual;": "\u2A7D", + "LessTilde;": "\u2272", + "lfisht;": "\u297C", + "lfloor;": "\u230A", + "Lfr;": "\uD835\uDD0F", + "lfr;": "\uD835\uDD29", + "lg;": "\u2276", + "lgE;": "\u2A91", + "lHar;": "\u2962", + "lhard;": "\u21BD", + "lharu;": "\u21BC", + "lharul;": "\u296A", + "lhblk;": "\u2584", + "LJcy;": "\u0409", + "ljcy;": "\u0459", + "Ll;": "\u22D8", + "ll;": "\u226A", + "llarr;": "\u21C7", + "llcorner;": "\u231E", + "Lleftarrow;": "\u21DA", + "llhard;": "\u296B", + "lltri;": "\u25FA", + "Lmidot;": "\u013F", + "lmidot;": "\u0140", + "lmoust;": "\u23B0", + "lmoustache;": "\u23B0", + "lnap;": "\u2A89", + "lnapprox;": "\u2A89", + "lnE;": "\u2268", + "lne;": "\u2A87", + "lneq;": "\u2A87", + "lneqq;": "\u2268", + "lnsim;": "\u22E6", + "loang;": "\u27EC", + "loarr;": "\u21FD", + "lobrk;": "\u27E6", + "LongLeftArrow;": "\u27F5", + "Longleftarrow;": "\u27F8", + "longleftarrow;": "\u27F5", + "LongLeftRightArrow;": "\u27F7", + "Longleftrightarrow;": "\u27FA", + "longleftrightarrow;": "\u27F7", + "longmapsto;": "\u27FC", + "LongRightArrow;": "\u27F6", + "Longrightarrow;": "\u27F9", + "longrightarrow;": "\u27F6", + "looparrowleft;": "\u21AB", + "looparrowright;": "\u21AC", + "lopar;": "\u2985", + "Lopf;": "\uD835\uDD43", + "lopf;": "\uD835\uDD5D", + "loplus;": "\u2A2D", + "lotimes;": "\u2A34", + "lowast;": "\u2217", + "lowbar;": "\u005F", + "LowerLeftArrow;": "\u2199", + "LowerRightArrow;": "\u2198", + "loz;": "\u25CA", + "lozenge;": "\u25CA", + "lozf;": "\u29EB", + "lpar;": "\u0028", + "lparlt;": "\u2993", + "lrarr;": "\u21C6", + "lrcorner;": "\u231F", + "lrhar;": "\u21CB", + "lrhard;": "\u296D", + "lrm;": "\u200E", + "lrtri;": "\u22BF", + "lsaquo;": "\u2039", + "Lscr;": "\u2112", + "lscr;": "\uD835\uDCC1", + "Lsh;": "\u21B0", + "lsh;": "\u21B0", + "lsim;": "\u2272", + "lsime;": "\u2A8D", + "lsimg;": "\u2A8F", + "lsqb;": "\u005B", + "lsquo;": "\u2018", + "lsquor;": "\u201A", + "Lstrok;": "\u0141", + "lstrok;": "\u0142", + "LT;": "\u003C", + "LT": "\u003C", + "Lt;": "\u226A", + "lt;": "\u003C", + "lt": "\u003C", + "ltcc;": "\u2AA6", + "ltcir;": "\u2A79", + "ltdot;": "\u22D6", + "lthree;": "\u22CB", + "ltimes;": "\u22C9", + "ltlarr;": "\u2976", + "ltquest;": "\u2A7B", + "ltri;": "\u25C3", + "ltrie;": "\u22B4", + "ltrif;": "\u25C2", + "ltrPar;": "\u2996", + "lurdshar;": "\u294A", + "luruhar;": "\u2966", + "lvertneqq;": "\u2268\uFE00", + "lvnE;": "\u2268\uFE00", + "macr;": "\u00AF", + "macr": "\u00AF", + "male;": "\u2642", + "malt;": "\u2720", + "maltese;": "\u2720", + "Map;": "\u2905", + "map;": "\u21A6", + "mapsto;": "\u21A6", + "mapstodown;": "\u21A7", + "mapstoleft;": "\u21A4", + "mapstoup;": "\u21A5", + "marker;": "\u25AE", + "mcomma;": "\u2A29", + "Mcy;": "\u041C", + "mcy;": "\u043C", + "mdash;": "\u2014", + "mDDot;": "\u223A", + "measuredangle;": "\u2221", + "MediumSpace;": "\u205F", + "Mellintrf;": "\u2133", + "Mfr;": "\uD835\uDD10", + "mfr;": "\uD835\uDD2A", + "mho;": "\u2127", + "micro;": "\u00B5", + "micro": "\u00B5", + "mid;": "\u2223", + "midast;": "\u002A", + "midcir;": "\u2AF0", + "middot;": "\u00B7", + "middot": "\u00B7", + "minus;": "\u2212", + "minusb;": "\u229F", + "minusd;": "\u2238", + "minusdu;": "\u2A2A", + "MinusPlus;": "\u2213", + "mlcp;": "\u2ADB", + "mldr;": "\u2026", + "mnplus;": "\u2213", + "models;": "\u22A7", + "Mopf;": "\uD835\uDD44", + "mopf;": "\uD835\uDD5E", + "mp;": "\u2213", + "Mscr;": "\u2133", + "mscr;": "\uD835\uDCC2", + "mstpos;": "\u223E", + "Mu;": "\u039C", + "mu;": "\u03BC", + "multimap;": "\u22B8", + "mumap;": "\u22B8", + "nabla;": "\u2207", + "Nacute;": "\u0143", + "nacute;": "\u0144", + "nang;": "\u2220\u20D2", + "nap;": "\u2249", + "napE;": "\u2A70\u0338", + "napid;": "\u224B\u0338", + "napos;": "\u0149", + "napprox;": "\u2249", + "natur;": "\u266E", + "natural;": "\u266E", + "naturals;": "\u2115", + "nbsp;": "\u00A0", + "nbsp": "\u00A0", + "nbump;": "\u224E\u0338", + "nbumpe;": "\u224F\u0338", + "ncap;": "\u2A43", + "Ncaron;": "\u0147", + "ncaron;": "\u0148", + "Ncedil;": "\u0145", + "ncedil;": "\u0146", + "ncong;": "\u2247", + "ncongdot;": "\u2A6D\u0338", + "ncup;": "\u2A42", + "Ncy;": "\u041D", + "ncy;": "\u043D", + "ndash;": "\u2013", + "ne;": "\u2260", + "nearhk;": "\u2924", + "neArr;": "\u21D7", + "nearr;": "\u2197", + "nearrow;": "\u2197", + "nedot;": "\u2250\u0338", + "NegativeMediumSpace;": "\u200B", + "NegativeThickSpace;": "\u200B", + "NegativeThinSpace;": "\u200B", + "NegativeVeryThinSpace;": "\u200B", + "nequiv;": "\u2262", + "nesear;": "\u2928", + "nesim;": "\u2242\u0338", + "NestedGreaterGreater;": "\u226B", + "NestedLessLess;": "\u226A", + "NewLine;": "\u000A", + "nexist;": "\u2204", + "nexists;": "\u2204", + "Nfr;": "\uD835\uDD11", + "nfr;": "\uD835\uDD2B", + "ngE;": "\u2267\u0338", + "nge;": "\u2271", + "ngeq;": "\u2271", + "ngeqq;": "\u2267\u0338", + "ngeqslant;": "\u2A7E\u0338", + "nges;": "\u2A7E\u0338", + "nGg;": "\u22D9\u0338", + "ngsim;": "\u2275", + "nGt;": "\u226B\u20D2", + "ngt;": "\u226F", + "ngtr;": "\u226F", + "nGtv;": "\u226B\u0338", + "nhArr;": "\u21CE", + "nharr;": "\u21AE", + "nhpar;": "\u2AF2", + "ni;": "\u220B", + "nis;": "\u22FC", + "nisd;": "\u22FA", + "niv;": "\u220B", + "NJcy;": "\u040A", + "njcy;": "\u045A", + "nlArr;": "\u21CD", + "nlarr;": "\u219A", + "nldr;": "\u2025", + "nlE;": "\u2266\u0338", + "nle;": "\u2270", + "nLeftarrow;": "\u21CD", + "nleftarrow;": "\u219A", + "nLeftrightarrow;": "\u21CE", + "nleftrightarrow;": "\u21AE", + "nleq;": "\u2270", + "nleqq;": "\u2266\u0338", + "nleqslant;": "\u2A7D\u0338", + "nles;": "\u2A7D\u0338", + "nless;": "\u226E", + "nLl;": "\u22D8\u0338", + "nlsim;": "\u2274", + "nLt;": "\u226A\u20D2", + "nlt;": "\u226E", + "nltri;": "\u22EA", + "nltrie;": "\u22EC", + "nLtv;": "\u226A\u0338", + "nmid;": "\u2224", + "NoBreak;": "\u2060", + "NonBreakingSpace;": "\u00A0", + "Nopf;": "\u2115", + "nopf;": "\uD835\uDD5F", + "Not;": "\u2AEC", + "not;": "\u00AC", + "not": "\u00AC", + "NotCongruent;": "\u2262", + "NotCupCap;": "\u226D", + "NotDoubleVerticalBar;": "\u2226", + "NotElement;": "\u2209", + "NotEqual;": "\u2260", + "NotEqualTilde;": "\u2242\u0338", + "NotExists;": "\u2204", + "NotGreater;": "\u226F", + "NotGreaterEqual;": "\u2271", + "NotGreaterFullEqual;": "\u2267\u0338", + "NotGreaterGreater;": "\u226B\u0338", + "NotGreaterLess;": "\u2279", + "NotGreaterSlantEqual;": "\u2A7E\u0338", + "NotGreaterTilde;": "\u2275", + "NotHumpDownHump;": "\u224E\u0338", + "NotHumpEqual;": "\u224F\u0338", + "notin;": "\u2209", + "notindot;": "\u22F5\u0338", + "notinE;": "\u22F9\u0338", + "notinva;": "\u2209", + "notinvb;": "\u22F7", + "notinvc;": "\u22F6", + "NotLeftTriangle;": "\u22EA", + "NotLeftTriangleBar;": "\u29CF\u0338", + "NotLeftTriangleEqual;": "\u22EC", + "NotLess;": "\u226E", + "NotLessEqual;": "\u2270", + "NotLessGreater;": "\u2278", + "NotLessLess;": "\u226A\u0338", + "NotLessSlantEqual;": "\u2A7D\u0338", + "NotLessTilde;": "\u2274", + "NotNestedGreaterGreater;": "\u2AA2\u0338", + "NotNestedLessLess;": "\u2AA1\u0338", + "notni;": "\u220C", + "notniva;": "\u220C", + "notnivb;": "\u22FE", + "notnivc;": "\u22FD", + "NotPrecedes;": "\u2280", + "NotPrecedesEqual;": "\u2AAF\u0338", + "NotPrecedesSlantEqual;": "\u22E0", + "NotReverseElement;": "\u220C", + "NotRightTriangle;": "\u22EB", + "NotRightTriangleBar;": "\u29D0\u0338", + "NotRightTriangleEqual;": "\u22ED", + "NotSquareSubset;": "\u228F\u0338", + "NotSquareSubsetEqual;": "\u22E2", + "NotSquareSuperset;": "\u2290\u0338", + "NotSquareSupersetEqual;": "\u22E3", + "NotSubset;": "\u2282\u20D2", + "NotSubsetEqual;": "\u2288", + "NotSucceeds;": "\u2281", + "NotSucceedsEqual;": "\u2AB0\u0338", + "NotSucceedsSlantEqual;": "\u22E1", + "NotSucceedsTilde;": "\u227F\u0338", + "NotSuperset;": "\u2283\u20D2", + "NotSupersetEqual;": "\u2289", + "NotTilde;": "\u2241", + "NotTildeEqual;": "\u2244", + "NotTildeFullEqual;": "\u2247", + "NotTildeTilde;": "\u2249", + "NotVerticalBar;": "\u2224", + "npar;": "\u2226", + "nparallel;": "\u2226", + "nparsl;": "\u2AFD\u20E5", + "npart;": "\u2202\u0338", + "npolint;": "\u2A14", + "npr;": "\u2280", + "nprcue;": "\u22E0", + "npre;": "\u2AAF\u0338", + "nprec;": "\u2280", + "npreceq;": "\u2AAF\u0338", + "nrArr;": "\u21CF", + "nrarr;": "\u219B", + "nrarrc;": "\u2933\u0338", + "nrarrw;": "\u219D\u0338", + "nRightarrow;": "\u21CF", + "nrightarrow;": "\u219B", + "nrtri;": "\u22EB", + "nrtrie;": "\u22ED", + "nsc;": "\u2281", + "nsccue;": "\u22E1", + "nsce;": "\u2AB0\u0338", + "Nscr;": "\uD835\uDCA9", + "nscr;": "\uD835\uDCC3", + "nshortmid;": "\u2224", + "nshortparallel;": "\u2226", + "nsim;": "\u2241", + "nsime;": "\u2244", + "nsimeq;": "\u2244", + "nsmid;": "\u2224", + "nspar;": "\u2226", + "nsqsube;": "\u22E2", + "nsqsupe;": "\u22E3", + "nsub;": "\u2284", + "nsubE;": "\u2AC5\u0338", + "nsube;": "\u2288", + "nsubset;": "\u2282\u20D2", + "nsubseteq;": "\u2288", + "nsubseteqq;": "\u2AC5\u0338", + "nsucc;": "\u2281", + "nsucceq;": "\u2AB0\u0338", + "nsup;": "\u2285", + "nsupE;": "\u2AC6\u0338", + "nsupe;": "\u2289", + "nsupset;": "\u2283\u20D2", + "nsupseteq;": "\u2289", + "nsupseteqq;": "\u2AC6\u0338", + "ntgl;": "\u2279", + "Ntilde;": "\u00D1", + "Ntilde": "\u00D1", + "ntilde;": "\u00F1", + "ntilde": "\u00F1", + "ntlg;": "\u2278", + "ntriangleleft;": "\u22EA", + "ntrianglelefteq;": "\u22EC", + "ntriangleright;": "\u22EB", + "ntrianglerighteq;": "\u22ED", + "Nu;": "\u039D", + "nu;": "\u03BD", + "num;": "\u0023", + "numero;": "\u2116", + "numsp;": "\u2007", + "nvap;": "\u224D\u20D2", + "nVDash;": "\u22AF", + "nVdash;": "\u22AE", + "nvDash;": "\u22AD", + "nvdash;": "\u22AC", + "nvge;": "\u2265\u20D2", + "nvgt;": "\u003E\u20D2", + "nvHarr;": "\u2904", + "nvinfin;": "\u29DE", + "nvlArr;": "\u2902", + "nvle;": "\u2264\u20D2", + "nvlt;": "\u003C\u20D2", + "nvltrie;": "\u22B4\u20D2", + "nvrArr;": "\u2903", + "nvrtrie;": "\u22B5\u20D2", + "nvsim;": "\u223C\u20D2", + "nwarhk;": "\u2923", + "nwArr;": "\u21D6", + "nwarr;": "\u2196", + "nwarrow;": "\u2196", + "nwnear;": "\u2927", + "Oacute;": "\u00D3", + "Oacute": "\u00D3", + "oacute;": "\u00F3", + "oacute": "\u00F3", + "oast;": "\u229B", + "ocir;": "\u229A", + "Ocirc;": "\u00D4", + "Ocirc": "\u00D4", + "ocirc;": "\u00F4", + "ocirc": "\u00F4", + "Ocy;": "\u041E", + "ocy;": "\u043E", + "odash;": "\u229D", + "Odblac;": "\u0150", + "odblac;": "\u0151", + "odiv;": "\u2A38", + "odot;": "\u2299", + "odsold;": "\u29BC", + "OElig;": "\u0152", + "oelig;": "\u0153", + "ofcir;": "\u29BF", + "Ofr;": "\uD835\uDD12", + "ofr;": "\uD835\uDD2C", + "ogon;": "\u02DB", + "Ograve;": "\u00D2", + "Ograve": "\u00D2", + "ograve;": "\u00F2", + "ograve": "\u00F2", + "ogt;": "\u29C1", + "ohbar;": "\u29B5", + "ohm;": "\u03A9", + "oint;": "\u222E", + "olarr;": "\u21BA", + "olcir;": "\u29BE", + "olcross;": "\u29BB", + "oline;": "\u203E", + "olt;": "\u29C0", + "Omacr;": "\u014C", + "omacr;": "\u014D", + "Omega;": "\u03A9", + "omega;": "\u03C9", + "Omicron;": "\u039F", + "omicron;": "\u03BF", + "omid;": "\u29B6", + "ominus;": "\u2296", + "Oopf;": "\uD835\uDD46", + "oopf;": "\uD835\uDD60", + "opar;": "\u29B7", + "OpenCurlyDoubleQuote;": "\u201C", + "OpenCurlyQuote;": "\u2018", + "operp;": "\u29B9", + "oplus;": "\u2295", + "Or;": "\u2A54", + "or;": "\u2228", + "orarr;": "\u21BB", + "ord;": "\u2A5D", + "order;": "\u2134", + "orderof;": "\u2134", + "ordf;": "\u00AA", + "ordf": "\u00AA", + "ordm;": "\u00BA", + "ordm": "\u00BA", + "origof;": "\u22B6", + "oror;": "\u2A56", + "orslope;": "\u2A57", + "orv;": "\u2A5B", + "oS;": "\u24C8", + "Oscr;": "\uD835\uDCAA", + "oscr;": "\u2134", + "Oslash;": "\u00D8", + "Oslash": "\u00D8", + "oslash;": "\u00F8", + "oslash": "\u00F8", + "osol;": "\u2298", + "Otilde;": "\u00D5", + "Otilde": "\u00D5", + "otilde;": "\u00F5", + "otilde": "\u00F5", + "Otimes;": "\u2A37", + "otimes;": "\u2297", + "otimesas;": "\u2A36", + "Ouml;": "\u00D6", + "Ouml": "\u00D6", + "ouml;": "\u00F6", + "ouml": "\u00F6", + "ovbar;": "\u233D", + "OverBar;": "\u203E", + "OverBrace;": "\u23DE", + "OverBracket;": "\u23B4", + "OverParenthesis;": "\u23DC", + "par;": "\u2225", + "para;": "\u00B6", + "para": "\u00B6", + "parallel;": "\u2225", + "parsim;": "\u2AF3", + "parsl;": "\u2AFD", + "part;": "\u2202", + "PartialD;": "\u2202", + "Pcy;": "\u041F", + "pcy;": "\u043F", + "percnt;": "\u0025", + "period;": "\u002E", + "permil;": "\u2030", + "perp;": "\u22A5", + "pertenk;": "\u2031", + "Pfr;": "\uD835\uDD13", + "pfr;": "\uD835\uDD2D", + "Phi;": "\u03A6", + "phi;": "\u03C6", + "phiv;": "\u03D5", + "phmmat;": "\u2133", + "phone;": "\u260E", + "Pi;": "\u03A0", + "pi;": "\u03C0", + "pitchfork;": "\u22D4", + "piv;": "\u03D6", + "planck;": "\u210F", + "planckh;": "\u210E", + "plankv;": "\u210F", + "plus;": "\u002B", + "plusacir;": "\u2A23", + "plusb;": "\u229E", + "pluscir;": "\u2A22", + "plusdo;": "\u2214", + "plusdu;": "\u2A25", + "pluse;": "\u2A72", + "PlusMinus;": "\u00B1", + "plusmn;": "\u00B1", + "plusmn": "\u00B1", + "plussim;": "\u2A26", + "plustwo;": "\u2A27", + "pm;": "\u00B1", + "Poincareplane;": "\u210C", + "pointint;": "\u2A15", + "Popf;": "\u2119", + "popf;": "\uD835\uDD61", + "pound;": "\u00A3", + "pound": "\u00A3", + "Pr;": "\u2ABB", + "pr;": "\u227A", + "prap;": "\u2AB7", + "prcue;": "\u227C", + "prE;": "\u2AB3", + "pre;": "\u2AAF", + "prec;": "\u227A", + "precapprox;": "\u2AB7", + "preccurlyeq;": "\u227C", + "Precedes;": "\u227A", + "PrecedesEqual;": "\u2AAF", + "PrecedesSlantEqual;": "\u227C", + "PrecedesTilde;": "\u227E", + "preceq;": "\u2AAF", + "precnapprox;": "\u2AB9", + "precneqq;": "\u2AB5", + "precnsim;": "\u22E8", + "precsim;": "\u227E", + "Prime;": "\u2033", + "prime;": "\u2032", + "primes;": "\u2119", + "prnap;": "\u2AB9", + "prnE;": "\u2AB5", + "prnsim;": "\u22E8", + "prod;": "\u220F", + "Product;": "\u220F", + "profalar;": "\u232E", + "profline;": "\u2312", + "profsurf;": "\u2313", + "prop;": "\u221D", + "Proportion;": "\u2237", + "Proportional;": "\u221D", + "propto;": "\u221D", + "prsim;": "\u227E", + "prurel;": "\u22B0", + "Pscr;": "\uD835\uDCAB", + "pscr;": "\uD835\uDCC5", + "Psi;": "\u03A8", + "psi;": "\u03C8", + "puncsp;": "\u2008", + "Qfr;": "\uD835\uDD14", + "qfr;": "\uD835\uDD2E", + "qint;": "\u2A0C", + "Qopf;": "\u211A", + "qopf;": "\uD835\uDD62", + "qprime;": "\u2057", + "Qscr;": "\uD835\uDCAC", + "qscr;": "\uD835\uDCC6", + "quaternions;": "\u210D", + "quatint;": "\u2A16", + "quest;": "\u003F", + "questeq;": "\u225F", + "QUOT;": "\u0022", + "QUOT": "\u0022", + "quot;": "\u0022", + "quot": "\u0022", + "rAarr;": "\u21DB", + "race;": "\u223D\u0331", + "Racute;": "\u0154", + "racute;": "\u0155", + "radic;": "\u221A", + "raemptyv;": "\u29B3", + "Rang;": "\u27EB", + "rang;": "\u27E9", + "rangd;": "\u2992", + "range;": "\u29A5", + "rangle;": "\u27E9", + "raquo;": "\u00BB", + "raquo": "\u00BB", + "Rarr;": "\u21A0", + "rArr;": "\u21D2", + "rarr;": "\u2192", + "rarrap;": "\u2975", + "rarrb;": "\u21E5", + "rarrbfs;": "\u2920", + "rarrc;": "\u2933", + "rarrfs;": "\u291E", + "rarrhk;": "\u21AA", + "rarrlp;": "\u21AC", + "rarrpl;": "\u2945", + "rarrsim;": "\u2974", + "Rarrtl;": "\u2916", + "rarrtl;": "\u21A3", + "rarrw;": "\u219D", + "rAtail;": "\u291C", + "ratail;": "\u291A", + "ratio;": "\u2236", + "rationals;": "\u211A", + "RBarr;": "\u2910", + "rBarr;": "\u290F", + "rbarr;": "\u290D", + "rbbrk;": "\u2773", + "rbrace;": "\u007D", + "rbrack;": "\u005D", + "rbrke;": "\u298C", + "rbrksld;": "\u298E", + "rbrkslu;": "\u2990", + "Rcaron;": "\u0158", + "rcaron;": "\u0159", + "Rcedil;": "\u0156", + "rcedil;": "\u0157", + "rceil;": "\u2309", + "rcub;": "\u007D", + "Rcy;": "\u0420", + "rcy;": "\u0440", + "rdca;": "\u2937", + "rdldhar;": "\u2969", + "rdquo;": "\u201D", + "rdquor;": "\u201D", + "rdsh;": "\u21B3", + "Re;": "\u211C", + "real;": "\u211C", + "realine;": "\u211B", + "realpart;": "\u211C", + "reals;": "\u211D", + "rect;": "\u25AD", + "REG;": "\u00AE", + "REG": "\u00AE", + "reg;": "\u00AE", + "reg": "\u00AE", + "ReverseElement;": "\u220B", + "ReverseEquilibrium;": "\u21CB", + "ReverseUpEquilibrium;": "\u296F", + "rfisht;": "\u297D", + "rfloor;": "\u230B", + "Rfr;": "\u211C", + "rfr;": "\uD835\uDD2F", + "rHar;": "\u2964", + "rhard;": "\u21C1", + "rharu;": "\u21C0", + "rharul;": "\u296C", + "Rho;": "\u03A1", + "rho;": "\u03C1", + "rhov;": "\u03F1", + "RightAngleBracket;": "\u27E9", + "RightArrow;": "\u2192", + "Rightarrow;": "\u21D2", + "rightarrow;": "\u2192", + "RightArrowBar;": "\u21E5", + "RightArrowLeftArrow;": "\u21C4", + "rightarrowtail;": "\u21A3", + "RightCeiling;": "\u2309", + "RightDoubleBracket;": "\u27E7", + "RightDownTeeVector;": "\u295D", + "RightDownVector;": "\u21C2", + "RightDownVectorBar;": "\u2955", + "RightFloor;": "\u230B", + "rightharpoondown;": "\u21C1", + "rightharpoonup;": "\u21C0", + "rightleftarrows;": "\u21C4", + "rightleftharpoons;": "\u21CC", + "rightrightarrows;": "\u21C9", + "rightsquigarrow;": "\u219D", + "RightTee;": "\u22A2", + "RightTeeArrow;": "\u21A6", + "RightTeeVector;": "\u295B", + "rightthreetimes;": "\u22CC", + "RightTriangle;": "\u22B3", + "RightTriangleBar;": "\u29D0", + "RightTriangleEqual;": "\u22B5", + "RightUpDownVector;": "\u294F", + "RightUpTeeVector;": "\u295C", + "RightUpVector;": "\u21BE", + "RightUpVectorBar;": "\u2954", + "RightVector;": "\u21C0", + "RightVectorBar;": "\u2953", + "ring;": "\u02DA", + "risingdotseq;": "\u2253", + "rlarr;": "\u21C4", + "rlhar;": "\u21CC", + "rlm;": "\u200F", + "rmoust;": "\u23B1", + "rmoustache;": "\u23B1", + "rnmid;": "\u2AEE", + "roang;": "\u27ED", + "roarr;": "\u21FE", + "robrk;": "\u27E7", + "ropar;": "\u2986", + "Ropf;": "\u211D", + "ropf;": "\uD835\uDD63", + "roplus;": "\u2A2E", + "rotimes;": "\u2A35", + "RoundImplies;": "\u2970", + "rpar;": "\u0029", + "rpargt;": "\u2994", + "rppolint;": "\u2A12", + "rrarr;": "\u21C9", + "Rrightarrow;": "\u21DB", + "rsaquo;": "\u203A", + "Rscr;": "\u211B", + "rscr;": "\uD835\uDCC7", + "Rsh;": "\u21B1", + "rsh;": "\u21B1", + "rsqb;": "\u005D", + "rsquo;": "\u2019", + "rsquor;": "\u2019", + "rthree;": "\u22CC", + "rtimes;": "\u22CA", + "rtri;": "\u25B9", + "rtrie;": "\u22B5", + "rtrif;": "\u25B8", + "rtriltri;": "\u29CE", + "RuleDelayed;": "\u29F4", + "ruluhar;": "\u2968", + "rx;": "\u211E", + "Sacute;": "\u015A", + "sacute;": "\u015B", + "sbquo;": "\u201A", + "Sc;": "\u2ABC", + "sc;": "\u227B", + "scap;": "\u2AB8", + "Scaron;": "\u0160", + "scaron;": "\u0161", + "sccue;": "\u227D", + "scE;": "\u2AB4", + "sce;": "\u2AB0", + "Scedil;": "\u015E", + "scedil;": "\u015F", + "Scirc;": "\u015C", + "scirc;": "\u015D", + "scnap;": "\u2ABA", + "scnE;": "\u2AB6", + "scnsim;": "\u22E9", + "scpolint;": "\u2A13", + "scsim;": "\u227F", + "Scy;": "\u0421", + "scy;": "\u0441", + "sdot;": "\u22C5", + "sdotb;": "\u22A1", + "sdote;": "\u2A66", + "searhk;": "\u2925", + "seArr;": "\u21D8", + "searr;": "\u2198", + "searrow;": "\u2198", + "sect;": "\u00A7", + "sect": "\u00A7", + "semi;": "\u003B", + "seswar;": "\u2929", + "setminus;": "\u2216", + "setmn;": "\u2216", + "sext;": "\u2736", + "Sfr;": "\uD835\uDD16", + "sfr;": "\uD835\uDD30", + "sfrown;": "\u2322", + "sharp;": "\u266F", + "SHCHcy;": "\u0429", + "shchcy;": "\u0449", + "SHcy;": "\u0428", + "shcy;": "\u0448", + "ShortDownArrow;": "\u2193", + "ShortLeftArrow;": "\u2190", + "shortmid;": "\u2223", + "shortparallel;": "\u2225", + "ShortRightArrow;": "\u2192", + "ShortUpArrow;": "\u2191", + "shy;": "\u00AD", + "shy": "\u00AD", + "Sigma;": "\u03A3", + "sigma;": "\u03C3", + "sigmaf;": "\u03C2", + "sigmav;": "\u03C2", + "sim;": "\u223C", + "simdot;": "\u2A6A", + "sime;": "\u2243", + "simeq;": "\u2243", + "simg;": "\u2A9E", + "simgE;": "\u2AA0", + "siml;": "\u2A9D", + "simlE;": "\u2A9F", + "simne;": "\u2246", + "simplus;": "\u2A24", + "simrarr;": "\u2972", + "slarr;": "\u2190", + "SmallCircle;": "\u2218", + "smallsetminus;": "\u2216", + "smashp;": "\u2A33", + "smeparsl;": "\u29E4", + "smid;": "\u2223", + "smile;": "\u2323", + "smt;": "\u2AAA", + "smte;": "\u2AAC", + "smtes;": "\u2AAC\uFE00", + "SOFTcy;": "\u042C", + "softcy;": "\u044C", + "sol;": "\u002F", + "solb;": "\u29C4", + "solbar;": "\u233F", + "Sopf;": "\uD835\uDD4A", + "sopf;": "\uD835\uDD64", + "spades;": "\u2660", + "spadesuit;": "\u2660", + "spar;": "\u2225", + "sqcap;": "\u2293", + "sqcaps;": "\u2293\uFE00", + "sqcup;": "\u2294", + "sqcups;": "\u2294\uFE00", + "Sqrt;": "\u221A", + "sqsub;": "\u228F", + "sqsube;": "\u2291", + "sqsubset;": "\u228F", + "sqsubseteq;": "\u2291", + "sqsup;": "\u2290", + "sqsupe;": "\u2292", + "sqsupset;": "\u2290", + "sqsupseteq;": "\u2292", + "squ;": "\u25A1", + "Square;": "\u25A1", + "square;": "\u25A1", + "SquareIntersection;": "\u2293", + "SquareSubset;": "\u228F", + "SquareSubsetEqual;": "\u2291", + "SquareSuperset;": "\u2290", + "SquareSupersetEqual;": "\u2292", + "SquareUnion;": "\u2294", + "squarf;": "\u25AA", + "squf;": "\u25AA", + "srarr;": "\u2192", + "Sscr;": "\uD835\uDCAE", + "sscr;": "\uD835\uDCC8", + "ssetmn;": "\u2216", + "ssmile;": "\u2323", + "sstarf;": "\u22C6", + "Star;": "\u22C6", + "star;": "\u2606", + "starf;": "\u2605", + "straightepsilon;": "\u03F5", + "straightphi;": "\u03D5", + "strns;": "\u00AF", + "Sub;": "\u22D0", + "sub;": "\u2282", + "subdot;": "\u2ABD", + "subE;": "\u2AC5", + "sube;": "\u2286", + "subedot;": "\u2AC3", + "submult;": "\u2AC1", + "subnE;": "\u2ACB", + "subne;": "\u228A", + "subplus;": "\u2ABF", + "subrarr;": "\u2979", + "Subset;": "\u22D0", + "subset;": "\u2282", + "subseteq;": "\u2286", + "subseteqq;": "\u2AC5", + "SubsetEqual;": "\u2286", + "subsetneq;": "\u228A", + "subsetneqq;": "\u2ACB", + "subsim;": "\u2AC7", + "subsub;": "\u2AD5", + "subsup;": "\u2AD3", + "succ;": "\u227B", + "succapprox;": "\u2AB8", + "succcurlyeq;": "\u227D", + "Succeeds;": "\u227B", + "SucceedsEqual;": "\u2AB0", + "SucceedsSlantEqual;": "\u227D", + "SucceedsTilde;": "\u227F", + "succeq;": "\u2AB0", + "succnapprox;": "\u2ABA", + "succneqq;": "\u2AB6", + "succnsim;": "\u22E9", + "succsim;": "\u227F", + "SuchThat;": "\u220B", + "Sum;": "\u2211", + "sum;": "\u2211", + "sung;": "\u266A", + "Sup;": "\u22D1", + "sup;": "\u2283", + "sup1;": "\u00B9", + "sup1": "\u00B9", + "sup2;": "\u00B2", + "sup2": "\u00B2", + "sup3;": "\u00B3", + "sup3": "\u00B3", + "supdot;": "\u2ABE", + "supdsub;": "\u2AD8", + "supE;": "\u2AC6", + "supe;": "\u2287", + "supedot;": "\u2AC4", + "Superset;": "\u2283", + "SupersetEqual;": "\u2287", + "suphsol;": "\u27C9", + "suphsub;": "\u2AD7", + "suplarr;": "\u297B", + "supmult;": "\u2AC2", + "supnE;": "\u2ACC", + "supne;": "\u228B", + "supplus;": "\u2AC0", + "Supset;": "\u22D1", + "supset;": "\u2283", + "supseteq;": "\u2287", + "supseteqq;": "\u2AC6", + "supsetneq;": "\u228B", + "supsetneqq;": "\u2ACC", + "supsim;": "\u2AC8", + "supsub;": "\u2AD4", + "supsup;": "\u2AD6", + "swarhk;": "\u2926", + "swArr;": "\u21D9", + "swarr;": "\u2199", + "swarrow;": "\u2199", + "swnwar;": "\u292A", + "szlig;": "\u00DF", + "szlig": "\u00DF", + "Tab;": "\u0009", + "target;": "\u2316", + "Tau;": "\u03A4", + "tau;": "\u03C4", + "tbrk;": "\u23B4", + "Tcaron;": "\u0164", + "tcaron;": "\u0165", + "Tcedil;": "\u0162", + "tcedil;": "\u0163", + "Tcy;": "\u0422", + "tcy;": "\u0442", + "tdot;": "\u20DB", + "telrec;": "\u2315", + "Tfr;": "\uD835\uDD17", + "tfr;": "\uD835\uDD31", + "there4;": "\u2234", + "Therefore;": "\u2234", + "therefore;": "\u2234", + "Theta;": "\u0398", + "theta;": "\u03B8", + "thetasym;": "\u03D1", + "thetav;": "\u03D1", + "thickapprox;": "\u2248", + "thicksim;": "\u223C", + "ThickSpace;": "\u205F\u200A", + "thinsp;": "\u2009", + "ThinSpace;": "\u2009", + "thkap;": "\u2248", + "thksim;": "\u223C", + "THORN;": "\u00DE", + "THORN": "\u00DE", + "thorn;": "\u00FE", + "thorn": "\u00FE", + "Tilde;": "\u223C", + "tilde;": "\u02DC", + "TildeEqual;": "\u2243", + "TildeFullEqual;": "\u2245", + "TildeTilde;": "\u2248", + "times;": "\u00D7", + "times": "\u00D7", + "timesb;": "\u22A0", + "timesbar;": "\u2A31", + "timesd;": "\u2A30", + "tint;": "\u222D", + "toea;": "\u2928", + "top;": "\u22A4", + "topbot;": "\u2336", + "topcir;": "\u2AF1", + "Topf;": "\uD835\uDD4B", + "topf;": "\uD835\uDD65", + "topfork;": "\u2ADA", + "tosa;": "\u2929", + "tprime;": "\u2034", + "TRADE;": "\u2122", + "trade;": "\u2122", + "triangle;": "\u25B5", + "triangledown;": "\u25BF", + "triangleleft;": "\u25C3", + "trianglelefteq;": "\u22B4", + "triangleq;": "\u225C", + "triangleright;": "\u25B9", + "trianglerighteq;": "\u22B5", + "tridot;": "\u25EC", + "trie;": "\u225C", + "triminus;": "\u2A3A", + "TripleDot;": "\u20DB", + "triplus;": "\u2A39", + "trisb;": "\u29CD", + "tritime;": "\u2A3B", + "trpezium;": "\u23E2", + "Tscr;": "\uD835\uDCAF", + "tscr;": "\uD835\uDCC9", + "TScy;": "\u0426", + "tscy;": "\u0446", + "TSHcy;": "\u040B", + "tshcy;": "\u045B", + "Tstrok;": "\u0166", + "tstrok;": "\u0167", + "twixt;": "\u226C", + "twoheadleftarrow;": "\u219E", + "twoheadrightarrow;": "\u21A0", + "Uacute;": "\u00DA", + "Uacute": "\u00DA", + "uacute;": "\u00FA", + "uacute": "\u00FA", + "Uarr;": "\u219F", + "uArr;": "\u21D1", + "uarr;": "\u2191", + "Uarrocir;": "\u2949", + "Ubrcy;": "\u040E", + "ubrcy;": "\u045E", + "Ubreve;": "\u016C", + "ubreve;": "\u016D", + "Ucirc;": "\u00DB", + "Ucirc": "\u00DB", + "ucirc;": "\u00FB", + "ucirc": "\u00FB", + "Ucy;": "\u0423", + "ucy;": "\u0443", + "udarr;": "\u21C5", + "Udblac;": "\u0170", + "udblac;": "\u0171", + "udhar;": "\u296E", + "ufisht;": "\u297E", + "Ufr;": "\uD835\uDD18", + "ufr;": "\uD835\uDD32", + "Ugrave;": "\u00D9", + "Ugrave": "\u00D9", + "ugrave;": "\u00F9", + "ugrave": "\u00F9", + "uHar;": "\u2963", + "uharl;": "\u21BF", + "uharr;": "\u21BE", + "uhblk;": "\u2580", + "ulcorn;": "\u231C", + "ulcorner;": "\u231C", + "ulcrop;": "\u230F", + "ultri;": "\u25F8", + "Umacr;": "\u016A", + "umacr;": "\u016B", + "uml;": "\u00A8", + "uml": "\u00A8", + "UnderBar;": "\u005F", + "UnderBrace;": "\u23DF", + "UnderBracket;": "\u23B5", + "UnderParenthesis;": "\u23DD", + "Union;": "\u22C3", + "UnionPlus;": "\u228E", + "Uogon;": "\u0172", + "uogon;": "\u0173", + "Uopf;": "\uD835\uDD4C", + "uopf;": "\uD835\uDD66", + "UpArrow;": "\u2191", + "Uparrow;": "\u21D1", + "uparrow;": "\u2191", + "UpArrowBar;": "\u2912", + "UpArrowDownArrow;": "\u21C5", + "UpDownArrow;": "\u2195", + "Updownarrow;": "\u21D5", + "updownarrow;": "\u2195", + "UpEquilibrium;": "\u296E", + "upharpoonleft;": "\u21BF", + "upharpoonright;": "\u21BE", + "uplus;": "\u228E", + "UpperLeftArrow;": "\u2196", + "UpperRightArrow;": "\u2197", + "Upsi;": "\u03D2", + "upsi;": "\u03C5", + "upsih;": "\u03D2", + "Upsilon;": "\u03A5", + "upsilon;": "\u03C5", + "UpTee;": "\u22A5", + "UpTeeArrow;": "\u21A5", + "upuparrows;": "\u21C8", + "urcorn;": "\u231D", + "urcorner;": "\u231D", + "urcrop;": "\u230E", + "Uring;": "\u016E", + "uring;": "\u016F", + "urtri;": "\u25F9", + "Uscr;": "\uD835\uDCB0", + "uscr;": "\uD835\uDCCA", + "utdot;": "\u22F0", + "Utilde;": "\u0168", + "utilde;": "\u0169", + "utri;": "\u25B5", + "utrif;": "\u25B4", + "uuarr;": "\u21C8", + "Uuml;": "\u00DC", + "Uuml": "\u00DC", + "uuml;": "\u00FC", + "uuml": "\u00FC", + "uwangle;": "\u29A7", + "vangrt;": "\u299C", + "varepsilon;": "\u03F5", + "varkappa;": "\u03F0", + "varnothing;": "\u2205", + "varphi;": "\u03D5", + "varpi;": "\u03D6", + "varpropto;": "\u221D", + "vArr;": "\u21D5", + "varr;": "\u2195", + "varrho;": "\u03F1", + "varsigma;": "\u03C2", + "varsubsetneq;": "\u228A\uFE00", + "varsubsetneqq;": "\u2ACB\uFE00", + "varsupsetneq;": "\u228B\uFE00", + "varsupsetneqq;": "\u2ACC\uFE00", + "vartheta;": "\u03D1", + "vartriangleleft;": "\u22B2", + "vartriangleright;": "\u22B3", + "Vbar;": "\u2AEB", + "vBar;": "\u2AE8", + "vBarv;": "\u2AE9", + "Vcy;": "\u0412", + "vcy;": "\u0432", + "VDash;": "\u22AB", + "Vdash;": "\u22A9", + "vDash;": "\u22A8", + "vdash;": "\u22A2", + "Vdashl;": "\u2AE6", + "Vee;": "\u22C1", + "vee;": "\u2228", + "veebar;": "\u22BB", + "veeeq;": "\u225A", + "vellip;": "\u22EE", + "Verbar;": "\u2016", + "verbar;": "\u007C", + "Vert;": "\u2016", + "vert;": "\u007C", + "VerticalBar;": "\u2223", + "VerticalLine;": "\u007C", + "VerticalSeparator;": "\u2758", + "VerticalTilde;": "\u2240", + "VeryThinSpace;": "\u200A", + "Vfr;": "\uD835\uDD19", + "vfr;": "\uD835\uDD33", + "vltri;": "\u22B2", + "vnsub;": "\u2282\u20D2", + "vnsup;": "\u2283\u20D2", + "Vopf;": "\uD835\uDD4D", + "vopf;": "\uD835\uDD67", + "vprop;": "\u221D", + "vrtri;": "\u22B3", + "Vscr;": "\uD835\uDCB1", + "vscr;": "\uD835\uDCCB", + "vsubnE;": "\u2ACB\uFE00", + "vsubne;": "\u228A\uFE00", + "vsupnE;": "\u2ACC\uFE00", + "vsupne;": "\u228B\uFE00", + "Vvdash;": "\u22AA", + "vzigzag;": "\u299A", + "Wcirc;": "\u0174", + "wcirc;": "\u0175", + "wedbar;": "\u2A5F", + "Wedge;": "\u22C0", + "wedge;": "\u2227", + "wedgeq;": "\u2259", + "weierp;": "\u2118", + "Wfr;": "\uD835\uDD1A", + "wfr;": "\uD835\uDD34", + "Wopf;": "\uD835\uDD4E", + "wopf;": "\uD835\uDD68", + "wp;": "\u2118", + "wr;": "\u2240", + "wreath;": "\u2240", + "Wscr;": "\uD835\uDCB2", + "wscr;": "\uD835\uDCCC", + "xcap;": "\u22C2", + "xcirc;": "\u25EF", + "xcup;": "\u22C3", + "xdtri;": "\u25BD", + "Xfr;": "\uD835\uDD1B", + "xfr;": "\uD835\uDD35", + "xhArr;": "\u27FA", + "xharr;": "\u27F7", + "Xi;": "\u039E", + "xi;": "\u03BE", + "xlArr;": "\u27F8", + "xlarr;": "\u27F5", + "xmap;": "\u27FC", + "xnis;": "\u22FB", + "xodot;": "\u2A00", + "Xopf;": "\uD835\uDD4F", + "xopf;": "\uD835\uDD69", + "xoplus;": "\u2A01", + "xotime;": "\u2A02", + "xrArr;": "\u27F9", + "xrarr;": "\u27F6", + "Xscr;": "\uD835\uDCB3", + "xscr;": "\uD835\uDCCD", + "xsqcup;": "\u2A06", + "xuplus;": "\u2A04", + "xutri;": "\u25B3", + "xvee;": "\u22C1", + "xwedge;": "\u22C0", + "Yacute;": "\u00DD", + "Yacute": "\u00DD", + "yacute;": "\u00FD", + "yacute": "\u00FD", + "YAcy;": "\u042F", + "yacy;": "\u044F", + "Ycirc;": "\u0176", + "ycirc;": "\u0177", + "Ycy;": "\u042B", + "ycy;": "\u044B", + "yen;": "\u00A5", + "yen": "\u00A5", + "Yfr;": "\uD835\uDD1C", + "yfr;": "\uD835\uDD36", + "YIcy;": "\u0407", + "yicy;": "\u0457", + "Yopf;": "\uD835\uDD50", + "yopf;": "\uD835\uDD6A", + "Yscr;": "\uD835\uDCB4", + "yscr;": "\uD835\uDCCE", + "YUcy;": "\u042E", + "yucy;": "\u044E", + "Yuml;": "\u0178", + "yuml;": "\u00FF", + "yuml": "\u00FF", + "Zacute;": "\u0179", + "zacute;": "\u017A", + "Zcaron;": "\u017D", + "zcaron;": "\u017E", + "Zcy;": "\u0417", + "zcy;": "\u0437", + "Zdot;": "\u017B", + "zdot;": "\u017C", + "zeetrf;": "\u2128", + "ZeroWidthSpace;": "\u200B", + "Zeta;": "\u0396", + "zeta;": "\u03B6", + "Zfr;": "\u2128", + "zfr;": "\uD835\uDD37", + "ZHcy;": "\u0416", + "zhcy;": "\u0436", + "zigrarr;": "\u21DD", + "Zopf;": "\u2124", + "zopf;": "\uD835\uDD6B", + "Zscr;": "\uD835\uDCB5", + "zscr;": "\uD835\uDCCF", + "zwj;": "\u200D", + "zwnj;": "\u200C" +}; + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +function startsWith$2(haystack, needle) { + if (haystack.length < needle.length) { + return false; + } + for (let i = 0; i < needle.length; i++) { + if (haystack[i] !== needle[i]) { + return false; + } + } + return true; +} +/** + * Determines if haystack ends with needle. + */ +function endsWith$2(haystack, needle) { + const diff = haystack.length - needle.length; + if (diff > 0) { + return haystack.lastIndexOf(needle) === diff; + } + else if (diff === 0) { + return haystack === needle; + } + else { + return false; + } +} +function repeat$1(value, count) { + let s = ''; + while (count > 0) { + if ((count & 1) === 1) { + s += value; + } + value += value; + count = count >>> 1; + } + return s; +} +const _a = 'a'.charCodeAt(0); +const _z = 'z'.charCodeAt(0); +const _A = 'A'.charCodeAt(0); +const _Z = 'Z'.charCodeAt(0); +const _0 = '0'.charCodeAt(0); +const _9 = '9'.charCodeAt(0); +function isLetterOrDigit(text, index) { + const c = text.charCodeAt(index); + return (_a <= c && c <= _z) || (_A <= c && c <= _Z) || (_0 <= c && c <= _9); +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +function isDefined$1(obj) { + return typeof obj !== 'undefined'; +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +function normalizeMarkupContent(input) { + if (!input) { + return undefined; + } + if (typeof input === 'string') { + return { + kind: 'markdown', + value: input + }; + } + return { + kind: 'markdown', + value: input.value + }; +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +class HTMLDataProvider { + isApplicable() { + return true; + } + /** + * Currently, unversioned data uses the V1 implementation + * In the future when the provider handles multiple versions of HTML custom data, + * use the latest implementation for unversioned data + */ + constructor(id, customData) { + this.id = id; + this._tags = []; + this._tagMap = {}; + this._valueSetMap = {}; + this._tags = customData.tags || []; + this._globalAttributes = customData.globalAttributes || []; + this._tags.forEach(t => { + this._tagMap[t.name.toLowerCase()] = t; + }); + if (customData.valueSets) { + customData.valueSets.forEach(vs => { + this._valueSetMap[vs.name] = vs.values; + }); + } + } + getId() { + return this.id; + } + provideTags() { + return this._tags; + } + provideAttributes(tag) { + const attributes = []; + const processAttribute = (a) => { + attributes.push(a); + }; + const tagEntry = this._tagMap[tag.toLowerCase()]; + if (tagEntry) { + tagEntry.attributes.forEach(processAttribute); + } + this._globalAttributes.forEach(processAttribute); + return attributes; + } + provideValues(tag, attribute) { + const values = []; + attribute = attribute.toLowerCase(); + const processAttributes = (attributes) => { + attributes.forEach(a => { + if (a.name.toLowerCase() === attribute) { + if (a.values) { + a.values.forEach(v => { + values.push(v); + }); + } + if (a.valueSet) { + if (this._valueSetMap[a.valueSet]) { + this._valueSetMap[a.valueSet].forEach(v => { + values.push(v); + }); + } + } + } + }); + }; + const tagEntry = this._tagMap[tag.toLowerCase()]; + if (tagEntry) { + processAttributes(tagEntry.attributes); + } + processAttributes(this._globalAttributes); + return values; + } +} +/** + * Generate Documentation used in hover/complete + * From `documentation` and `references` + */ +function generateDocumentation(item, settings = {}, doesSupportMarkdown) { + const result = { + kind: doesSupportMarkdown ? 'markdown' : 'plaintext', + value: '' + }; + if (item.description && settings.documentation !== false) { + const normalizedDescription = normalizeMarkupContent(item.description); + if (normalizedDescription) { + result.value += normalizedDescription.value; + } + } + if (item.references && item.references.length > 0 && settings.references !== false) { + if (result.value.length) { + result.value += `\n\n`; + } + if (doesSupportMarkdown) { + result.value += item.references.map(r => { + return `[${r.name}](${r.url})`; + }).join(' | '); + } + else { + result.value += item.references.map(r => { + return `${r.name}: ${r.url}`; + }).join('\n'); + } + } + if (result.value === '') { + return undefined; + } + return result; +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +class PathCompletionParticipant { + constructor(dataManager, readDirectory) { + this.dataManager = dataManager; + this.readDirectory = readDirectory; + this.atributeCompletions = []; + } + onHtmlAttributeValue(context) { + if (this.dataManager.isPathAttribute(context.tag, context.attribute)) { + this.atributeCompletions.push(context); + } + } + async computeCompletions(document, documentContext) { + const result = { items: [], isIncomplete: false }; + for (const attributeCompletion of this.atributeCompletions) { + const fullValue = stripQuotes(document.getText(attributeCompletion.range)); + if (isCompletablePath(fullValue)) { + if (fullValue === '.' || fullValue === '..') { + result.isIncomplete = true; + } + else { + const replaceRange = pathToReplaceRange(attributeCompletion.value, fullValue, attributeCompletion.range); + const suggestions = await this.providePathSuggestions(attributeCompletion.value, replaceRange, document, documentContext); + for (const item of suggestions) { + result.items.push(item); + } + } + } + } + return result; + } + async providePathSuggestions(valueBeforeCursor, replaceRange, document, documentContext) { + const valueBeforeLastSlash = valueBeforeCursor.substring(0, valueBeforeCursor.lastIndexOf('/') + 1); // keep the last slash + let parentDir = documentContext.resolveReference(valueBeforeLastSlash || '.', document.uri); + if (parentDir) { + try { + const result = []; + const infos = await this.readDirectory(parentDir); + for (const [name, type] of infos) { + // Exclude paths that start with `.` + if (name.charCodeAt(0) !== CharCode_dot) { + result.push(createCompletionItem$1(name, type === FileType.Directory, replaceRange)); + } + } + return result; + } + catch (e) { + // ignore + } + } + return []; + } +} +const CharCode_dot = '.'.charCodeAt(0); +function stripQuotes(fullValue) { + if (startsWith$2(fullValue, `'`) || startsWith$2(fullValue, `"`)) { + return fullValue.slice(1, -1); + } + else { + return fullValue; + } +} +function isCompletablePath(value) { + if (startsWith$2(value, 'http') || startsWith$2(value, 'https') || startsWith$2(value, '//')) { + return false; + } + return true; +} +function pathToReplaceRange(valueBeforeCursor, fullValue, range) { + let replaceRange; + const lastIndexOfSlash = valueBeforeCursor.lastIndexOf('/'); + if (lastIndexOfSlash === -1) { + replaceRange = shiftRange(range, 1, -1); + } + else { + // For cases where cursor is in the middle of attribute value, like <script src="./s|rc/test.js"> + // Find the last slash before cursor, and calculate the start of replace range from there + const valueAfterLastSlash = fullValue.slice(lastIndexOfSlash + 1); + const startPos = shiftPosition(range.end, -1 - valueAfterLastSlash.length); + // If whitespace exists, replace until there is no more + const whitespaceIndex = valueAfterLastSlash.indexOf(' '); + let endPos; + if (whitespaceIndex !== -1) { + endPos = shiftPosition(startPos, whitespaceIndex); + } + else { + endPos = shiftPosition(range.end, -1); + } + replaceRange = Range$a.create(startPos, endPos); + } + return replaceRange; +} +function createCompletionItem$1(p, isDir, replaceRange) { + if (isDir) { + p = p + '/'; + return { + label: p, + kind: CompletionItemKind.Folder, + textEdit: TextEdit.replace(replaceRange, p), + command: { + title: 'Suggest', + command: 'editor.action.triggerSuggest' + } + }; + } + else { + return { + label: p, + kind: CompletionItemKind.File, + textEdit: TextEdit.replace(replaceRange, p) + }; + } +} +function shiftPosition(pos, offset) { + return Position.create(pos.line, pos.character + offset); +} +function shiftRange(range, startOffset, endOffset) { + const start = shiftPosition(range.start, startOffset); + const end = shiftPosition(range.end, endOffset); + return Range$a.create(start, end); +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +class HTMLCompletion { + constructor(lsOptions, dataManager) { + this.lsOptions = lsOptions; + this.dataManager = dataManager; + this.completionParticipants = []; + } + setCompletionParticipants(registeredCompletionParticipants) { + this.completionParticipants = registeredCompletionParticipants || []; + } + async doComplete2(document, position, htmlDocument, documentContext, settings) { + if (!this.lsOptions.fileSystemProvider || !this.lsOptions.fileSystemProvider.readDirectory) { + return this.doComplete(document, position, htmlDocument, settings); + } + const participant = new PathCompletionParticipant(this.dataManager, this.lsOptions.fileSystemProvider.readDirectory); + const contributedParticipants = this.completionParticipants; + this.completionParticipants = [participant].concat(contributedParticipants); + const result = this.doComplete(document, position, htmlDocument, settings); + try { + const pathCompletionResult = await participant.computeCompletions(document, documentContext); + return { + isIncomplete: result.isIncomplete || pathCompletionResult.isIncomplete, + items: pathCompletionResult.items.concat(result.items) + }; + } + finally { + this.completionParticipants = contributedParticipants; + } + } + doComplete(document, position, htmlDocument, settings) { + const result = this._doComplete(document, position, htmlDocument, settings); + return this.convertCompletionList(result); + } + _doComplete(document, position, htmlDocument, settings) { + const result = { + isIncomplete: false, + items: [] + }; + const completionParticipants = this.completionParticipants; + const dataProviders = this.dataManager.getDataProviders().filter(p => p.isApplicable(document.languageId) && (!settings || settings[p.getId()] !== false)); + const voidElements = this.dataManager.getVoidElements(dataProviders); + const doesSupportMarkdown = this.doesSupportMarkdown(); + const text = document.getText(); + const offset = document.offsetAt(position); + const node = htmlDocument.findNodeBefore(offset); + if (!node) { + return result; + } + const scanner = createScanner$2(text, node.start); + let currentTag = ''; + let currentAttributeName; + function getReplaceRange(replaceStart, replaceEnd = offset) { + if (replaceStart > offset) { + replaceStart = offset; + } + return { start: document.positionAt(replaceStart), end: document.positionAt(replaceEnd) }; + } + function collectOpenTagSuggestions(afterOpenBracket, tagNameEnd) { + const range = getReplaceRange(afterOpenBracket, tagNameEnd); + dataProviders.forEach((provider) => { + provider.provideTags().forEach(tag => { + result.items.push({ + label: tag.name, + kind: CompletionItemKind.Property, + documentation: generateDocumentation(tag, undefined, doesSupportMarkdown), + textEdit: TextEdit.replace(range, tag.name), + insertTextFormat: InsertTextFormat.PlainText + }); + }); + }); + return result; + } + function getLineIndent(offset) { + let start = offset; + while (start > 0) { + const ch = text.charAt(start - 1); + if ("\n\r".indexOf(ch) >= 0) { + return text.substring(start, offset); + } + if (!isWhiteSpace$1(ch)) { + return null; + } + start--; + } + return text.substring(0, offset); + } + function collectCloseTagSuggestions(afterOpenBracket, inOpenTag, tagNameEnd = offset) { + const range = getReplaceRange(afterOpenBracket, tagNameEnd); + const closeTag = isFollowedBy(text, tagNameEnd, ScannerState.WithinEndTag, TokenType.EndTagClose) ? '' : '>'; + let curr = node; + if (inOpenTag) { + curr = curr.parent; // don't suggest the own tag, it's not yet open + } + while (curr) { + const tag = curr.tag; + if (tag && (!curr.closed || curr.endTagStart && (curr.endTagStart > offset))) { + const item = { + label: '/' + tag, + kind: CompletionItemKind.Property, + filterText: '/' + tag, + textEdit: TextEdit.replace(range, '/' + tag + closeTag), + insertTextFormat: InsertTextFormat.PlainText + }; + const startIndent = getLineIndent(curr.start); + const endIndent = getLineIndent(afterOpenBracket - 1); + if (startIndent !== null && endIndent !== null && startIndent !== endIndent) { + const insertText = startIndent + '</' + tag + closeTag; + item.textEdit = TextEdit.replace(getReplaceRange(afterOpenBracket - 1 - endIndent.length), insertText); + item.filterText = endIndent + '</' + tag; + } + result.items.push(item); + return result; + } + curr = curr.parent; + } + if (inOpenTag) { + return result; + } + dataProviders.forEach(provider => { + provider.provideTags().forEach(tag => { + result.items.push({ + label: '/' + tag.name, + kind: CompletionItemKind.Property, + documentation: generateDocumentation(tag, undefined, doesSupportMarkdown), + filterText: '/' + tag.name + closeTag, + textEdit: TextEdit.replace(range, '/' + tag.name + closeTag), + insertTextFormat: InsertTextFormat.PlainText + }); + }); + }); + return result; + } + const collectAutoCloseTagSuggestion = (tagCloseEnd, tag) => { + if (settings && settings.hideAutoCompleteProposals) { + return result; + } + if (!this.dataManager.isVoidElement(tag, voidElements)) { + const pos = document.positionAt(tagCloseEnd); + result.items.push({ + label: '</' + tag + '>', + kind: CompletionItemKind.Property, + filterText: '</' + tag + '>', + textEdit: TextEdit.insert(pos, '$0</' + tag + '>'), + insertTextFormat: InsertTextFormat.Snippet + }); + } + return result; + }; + function collectTagSuggestions(tagStart, tagEnd) { + collectOpenTagSuggestions(tagStart, tagEnd); + collectCloseTagSuggestions(tagStart, true, tagEnd); + return result; + } + function getExistingAttributes() { + const existingAttributes = Object.create(null); + node.attributeNames.forEach(attribute => { + existingAttributes[attribute] = true; + }); + return existingAttributes; + } + function collectAttributeNameSuggestions(nameStart, nameEnd = offset) { + let replaceEnd = offset; + while (replaceEnd < nameEnd && text[replaceEnd] !== '<') { // < is a valid attribute name character, but we rather assume the attribute name ends. See #23236. + replaceEnd++; + } + const currentAttribute = text.substring(nameStart, nameEnd); + const range = getReplaceRange(nameStart, replaceEnd); + let value = ''; + if (!isFollowedBy(text, nameEnd, ScannerState.AfterAttributeName, TokenType.DelimiterAssign)) { + const defaultValue = settings?.attributeDefaultValue ?? 'doublequotes'; + if (defaultValue === 'empty') { + value = '=$1'; + } + else if (defaultValue === 'singlequotes') { + value = '=\'$1\''; + } + else { + value = '="$1"'; + } + } + const seenAttributes = getExistingAttributes(); + // include current typing attribute + seenAttributes[currentAttribute] = false; + dataProviders.forEach(provider => { + provider.provideAttributes(currentTag).forEach(attr => { + if (seenAttributes[attr.name]) { + return; + } + seenAttributes[attr.name] = true; + let codeSnippet = attr.name; + let command; + if (attr.valueSet !== 'v' && value.length) { + codeSnippet = codeSnippet + value; + if (attr.valueSet || attr.name === 'style') { + command = { + title: 'Suggest', + command: 'editor.action.triggerSuggest' + }; + } + } + result.items.push({ + label: attr.name, + kind: attr.valueSet === 'handler' ? CompletionItemKind.Function : CompletionItemKind.Value, + documentation: generateDocumentation(attr, undefined, doesSupportMarkdown), + textEdit: TextEdit.replace(range, codeSnippet), + insertTextFormat: InsertTextFormat.Snippet, + command + }); + }); + }); + collectDataAttributesSuggestions(range, seenAttributes); + return result; + } + function collectDataAttributesSuggestions(range, seenAttributes) { + const dataAttr = 'data-'; + const dataAttributes = {}; + dataAttributes[dataAttr] = `${dataAttr}$1="$2"`; + function addNodeDataAttributes(node) { + node.attributeNames.forEach(attr => { + if (startsWith$2(attr, dataAttr) && !dataAttributes[attr] && !seenAttributes[attr]) { + dataAttributes[attr] = attr + '="$1"'; + } + }); + node.children.forEach(child => addNodeDataAttributes(child)); + } + if (htmlDocument) { + htmlDocument.roots.forEach(root => addNodeDataAttributes(root)); + } + Object.keys(dataAttributes).forEach(attr => result.items.push({ + label: attr, + kind: CompletionItemKind.Value, + textEdit: TextEdit.replace(range, dataAttributes[attr]), + insertTextFormat: InsertTextFormat.Snippet + })); + } + function collectAttributeValueSuggestions(valueStart, valueEnd = offset) { + let range; + let addQuotes; + let valuePrefix; + if (offset > valueStart && offset <= valueEnd && isQuote(text[valueStart])) { + // inside quoted attribute + const valueContentStart = valueStart + 1; + let valueContentEnd = valueEnd; + // valueEnd points to the char after quote, which encloses the replace range + if (valueEnd > valueStart && text[valueEnd - 1] === text[valueStart]) { + valueContentEnd--; + } + const wsBefore = getWordStart(text, offset, valueContentStart); + const wsAfter = getWordEnd(text, offset, valueContentEnd); + range = getReplaceRange(wsBefore, wsAfter); + valuePrefix = offset >= valueContentStart && offset <= valueContentEnd ? text.substring(valueContentStart, offset) : ''; + addQuotes = false; + } + else { + range = getReplaceRange(valueStart, valueEnd); + valuePrefix = text.substring(valueStart, offset); + addQuotes = true; + } + if (completionParticipants.length > 0) { + const tag = currentTag.toLowerCase(); + const attribute = currentAttributeName.toLowerCase(); + const fullRange = getReplaceRange(valueStart, valueEnd); + for (const participant of completionParticipants) { + if (participant.onHtmlAttributeValue) { + participant.onHtmlAttributeValue({ document, position, tag, attribute, value: valuePrefix, range: fullRange }); + } + } + } + dataProviders.forEach(provider => { + provider.provideValues(currentTag, currentAttributeName).forEach(value => { + const insertText = addQuotes ? '"' + value.name + '"' : value.name; + result.items.push({ + label: value.name, + filterText: insertText, + kind: CompletionItemKind.Unit, + documentation: generateDocumentation(value, undefined, doesSupportMarkdown), + textEdit: TextEdit.replace(range, insertText), + insertTextFormat: InsertTextFormat.PlainText + }); + }); + }); + collectCharacterEntityProposals(); + return result; + } + function scanNextForEndPos(nextToken) { + if (offset === scanner.getTokenEnd()) { + token = scanner.scan(); + if (token === nextToken && scanner.getTokenOffset() === offset) { + return scanner.getTokenEnd(); + } + } + return offset; + } + function collectInsideContent() { + for (const participant of completionParticipants) { + if (participant.onHtmlContent) { + participant.onHtmlContent({ document, position }); + } + } + return collectCharacterEntityProposals(); + } + function collectCharacterEntityProposals() { + // character entities + let k = offset - 1; + let characterStart = position.character; + while (k >= 0 && isLetterOrDigit(text, k)) { + k--; + characterStart--; + } + if (k >= 0 && text[k] === '&') { + const range = Range$a.create(Position.create(position.line, characterStart - 1), position); + for (const entity in entities) { + if (endsWith$2(entity, ';')) { + const label = '&' + entity; + result.items.push({ + label, + kind: CompletionItemKind.Keyword, + documentation: t$2('Character entity representing \'{0}\'', entities[entity]), + textEdit: TextEdit.replace(range, label), + insertTextFormat: InsertTextFormat.PlainText + }); + } + } + } + return result; + } + function suggestDoctype(replaceStart, replaceEnd) { + const range = getReplaceRange(replaceStart, replaceEnd); + result.items.push({ + label: '!DOCTYPE', + kind: CompletionItemKind.Property, + documentation: 'A preamble for an HTML document.', + textEdit: TextEdit.replace(range, '!DOCTYPE html>'), + insertTextFormat: InsertTextFormat.PlainText + }); + } + let token = scanner.scan(); + while (token !== TokenType.EOS && scanner.getTokenOffset() <= offset) { + switch (token) { + case TokenType.StartTagOpen: + if (scanner.getTokenEnd() === offset) { + const endPos = scanNextForEndPos(TokenType.StartTag); + if (position.line === 0) { + suggestDoctype(offset, endPos); + } + return collectTagSuggestions(offset, endPos); + } + break; + case TokenType.StartTag: + if (scanner.getTokenOffset() <= offset && offset <= scanner.getTokenEnd()) { + return collectOpenTagSuggestions(scanner.getTokenOffset(), scanner.getTokenEnd()); + } + currentTag = scanner.getTokenText(); + break; + case TokenType.AttributeName: + if (scanner.getTokenOffset() <= offset && offset <= scanner.getTokenEnd()) { + return collectAttributeNameSuggestions(scanner.getTokenOffset(), scanner.getTokenEnd()); + } + currentAttributeName = scanner.getTokenText(); + break; + case TokenType.DelimiterAssign: + if (scanner.getTokenEnd() === offset) { + const endPos = scanNextForEndPos(TokenType.AttributeValue); + return collectAttributeValueSuggestions(offset, endPos); + } + break; + case TokenType.AttributeValue: + if (scanner.getTokenOffset() <= offset && offset <= scanner.getTokenEnd()) { + return collectAttributeValueSuggestions(scanner.getTokenOffset(), scanner.getTokenEnd()); + } + break; + case TokenType.Whitespace: + if (offset <= scanner.getTokenEnd()) { + switch (scanner.getScannerState()) { + case ScannerState.AfterOpeningStartTag: + const startPos = scanner.getTokenOffset(); + const endTagPos = scanNextForEndPos(TokenType.StartTag); + return collectTagSuggestions(startPos, endTagPos); + case ScannerState.WithinTag: + case ScannerState.AfterAttributeName: + return collectAttributeNameSuggestions(scanner.getTokenEnd()); + case ScannerState.BeforeAttributeValue: + return collectAttributeValueSuggestions(scanner.getTokenEnd()); + case ScannerState.AfterOpeningEndTag: + return collectCloseTagSuggestions(scanner.getTokenOffset() - 1, false); + case ScannerState.WithinContent: + return collectInsideContent(); + } + } + break; + case TokenType.EndTagOpen: + if (offset <= scanner.getTokenEnd()) { + const afterOpenBracket = scanner.getTokenOffset() + 1; + const endOffset = scanNextForEndPos(TokenType.EndTag); + return collectCloseTagSuggestions(afterOpenBracket, false, endOffset); + } + break; + case TokenType.EndTag: + if (offset <= scanner.getTokenEnd()) { + let start = scanner.getTokenOffset() - 1; + while (start >= 0) { + const ch = text.charAt(start); + if (ch === '/') { + return collectCloseTagSuggestions(start, false, scanner.getTokenEnd()); + } + else if (!isWhiteSpace$1(ch)) { + break; + } + start--; + } + } + break; + case TokenType.StartTagClose: + if (offset <= scanner.getTokenEnd()) { + if (currentTag) { + return collectAutoCloseTagSuggestion(scanner.getTokenEnd(), currentTag); + } + } + break; + case TokenType.Content: + if (offset <= scanner.getTokenEnd()) { + return collectInsideContent(); + } + break; + default: + if (offset <= scanner.getTokenEnd()) { + return result; + } + break; + } + token = scanner.scan(); + } + return result; + } + doQuoteComplete(document, position, htmlDocument, settings) { + const offset = document.offsetAt(position); + if (offset <= 0) { + return null; + } + const defaultValue = settings?.attributeDefaultValue ?? 'doublequotes'; + if (defaultValue === 'empty') { + return null; + } + const char = document.getText().charAt(offset - 1); + if (char !== '=') { + return null; + } + const value = defaultValue === 'doublequotes' ? '"$1"' : '\'$1\''; + const node = htmlDocument.findNodeBefore(offset); + if (node && node.attributes && node.start < offset && (!node.endTagStart || node.endTagStart > offset)) { + const scanner = createScanner$2(document.getText(), node.start); + let token = scanner.scan(); + while (token !== TokenType.EOS && scanner.getTokenEnd() <= offset) { + if (token === TokenType.AttributeName && scanner.getTokenEnd() === offset - 1) { + // Ensure the token is a valid standalone attribute name + token = scanner.scan(); // this should be the = just written + if (token !== TokenType.DelimiterAssign) { + return null; + } + token = scanner.scan(); + // Any non-attribute valid tag + if (token === TokenType.Unknown || token === TokenType.AttributeValue) { + return null; + } + return value; + } + token = scanner.scan(); + } + } + return null; + } + doTagComplete(document, position, htmlDocument) { + const offset = document.offsetAt(position); + if (offset <= 0) { + return null; + } + const char = document.getText().charAt(offset - 1); + if (char === '>') { + const voidElements = this.dataManager.getVoidElements(document.languageId); + const node = htmlDocument.findNodeBefore(offset); + if (node && node.tag && !this.dataManager.isVoidElement(node.tag, voidElements) && node.start < offset && (!node.endTagStart || node.endTagStart > offset)) { + const scanner = createScanner$2(document.getText(), node.start); + let token = scanner.scan(); + while (token !== TokenType.EOS && scanner.getTokenEnd() <= offset) { + if (token === TokenType.StartTagClose && scanner.getTokenEnd() === offset) { + return `$0</${node.tag}>`; + } + token = scanner.scan(); + } + } + } + else if (char === '/') { + let node = htmlDocument.findNodeBefore(offset); + while (node && node.closed && !(node.endTagStart && (node.endTagStart > offset))) { + node = node.parent; + } + if (node && node.tag) { + const scanner = createScanner$2(document.getText(), node.start); + let token = scanner.scan(); + while (token !== TokenType.EOS && scanner.getTokenEnd() <= offset) { + if (token === TokenType.EndTagOpen && scanner.getTokenEnd() === offset) { + if (document.getText().charAt(offset) !== '>') { + return `${node.tag}>`; + } + else { + return node.tag; + } + } + token = scanner.scan(); + } + } + } + return null; + } + convertCompletionList(list) { + if (!this.doesSupportMarkdown()) { + list.items.forEach(item => { + if (item.documentation && typeof item.documentation !== 'string') { + item.documentation = { + kind: 'plaintext', + value: item.documentation.value + }; + } + }); + } + return list; + } + doesSupportMarkdown() { + if (!isDefined$1(this.supportsMarkdown)) { + if (!isDefined$1(this.lsOptions.clientCapabilities)) { + this.supportsMarkdown = true; + return this.supportsMarkdown; + } + const documentationFormat = this.lsOptions.clientCapabilities.textDocument?.completion?.completionItem?.documentationFormat; + this.supportsMarkdown = Array.isArray(documentationFormat) && documentationFormat.indexOf(MarkupKind.Markdown) !== -1; + } + return this.supportsMarkdown; + } +} +function isQuote(s) { + return /^["']*$/.test(s); +} +function isWhiteSpace$1(s) { + return /^\s*$/.test(s); +} +function isFollowedBy(s, offset, intialState, expectedToken) { + const scanner = createScanner$2(s, offset, intialState); + let token = scanner.scan(); + while (token === TokenType.Whitespace) { + token = scanner.scan(); + } + return token === expectedToken; +} +function getWordStart(s, offset, limit) { + while (offset > limit && !isWhiteSpace$1(s[offset - 1])) { + offset--; + } + return offset; +} +function getWordEnd(s, offset, limit) { + while (offset < limit && !isWhiteSpace$1(s[offset])) { + offset++; + } + return offset; +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +class HTMLHover { + constructor(lsOptions, dataManager) { + this.lsOptions = lsOptions; + this.dataManager = dataManager; + } + doHover(document, position, htmlDocument, options) { + const convertContents = this.convertContents.bind(this); + const doesSupportMarkdown = this.doesSupportMarkdown(); + const offset = document.offsetAt(position); + const node = htmlDocument.findNodeAt(offset); + const text = document.getText(); + if (!node || !node.tag) { + return null; + } + const dataProviders = this.dataManager.getDataProviders().filter(p => p.isApplicable(document.languageId)); + function getTagHover(currTag, range, open) { + for (const provider of dataProviders) { + let hover = null; + provider.provideTags().forEach(tag => { + if (tag.name.toLowerCase() === currTag.toLowerCase()) { + let markupContent = generateDocumentation(tag, options, doesSupportMarkdown); + if (!markupContent) { + markupContent = { + kind: doesSupportMarkdown ? 'markdown' : 'plaintext', + value: '' + }; + } + hover = { contents: markupContent, range }; + } + }); + if (hover) { + hover.contents = convertContents(hover.contents); + return hover; + } + } + return null; + } + function getAttrHover(currTag, currAttr, range) { + for (const provider of dataProviders) { + let hover = null; + provider.provideAttributes(currTag).forEach(attr => { + if (currAttr === attr.name && attr.description) { + const contentsDoc = generateDocumentation(attr, options, doesSupportMarkdown); + if (contentsDoc) { + hover = { contents: contentsDoc, range }; + } + else { + hover = null; + } + } + }); + if (hover) { + hover.contents = convertContents(hover.contents); + return hover; + } + } + return null; + } + function getAttrValueHover(currTag, currAttr, currAttrValue, range) { + for (const provider of dataProviders) { + let hover = null; + provider.provideValues(currTag, currAttr).forEach(attrValue => { + if (currAttrValue === attrValue.name && attrValue.description) { + const contentsDoc = generateDocumentation(attrValue, options, doesSupportMarkdown); + if (contentsDoc) { + hover = { contents: contentsDoc, range }; + } + else { + hover = null; + } + } + }); + if (hover) { + hover.contents = convertContents(hover.contents); + return hover; + } + } + return null; + } + function getEntityHover(text, range) { + let currEntity = filterEntity(text); + for (const entity in entities) { + let hover = null; + const label = '&' + entity; + if (currEntity === label) { + let code = entities[entity].charCodeAt(0).toString(16).toUpperCase(); + let hex = 'U+'; + if (code.length < 4) { + const zeroes = 4 - code.length; + let k = 0; + while (k < zeroes) { + hex += '0'; + k += 1; + } + } + hex += code; + const contentsDoc = t$2('Character entity representing \'{0}\', unicode equivalent \'{1}\'', entities[entity], hex); + if (contentsDoc) { + hover = { contents: contentsDoc, range }; + } + else { + hover = null; + } + } + if (hover) { + hover.contents = convertContents(hover.contents); + return hover; + } + } + return null; + } + function getTagNameRange(tokenType, startOffset) { + const scanner = createScanner$2(document.getText(), startOffset); + let token = scanner.scan(); + while (token !== TokenType.EOS && (scanner.getTokenEnd() < offset || scanner.getTokenEnd() === offset && token !== tokenType)) { + token = scanner.scan(); + } + if (token === tokenType && offset <= scanner.getTokenEnd()) { + return { start: document.positionAt(scanner.getTokenOffset()), end: document.positionAt(scanner.getTokenEnd()) }; + } + return null; + } + function getEntityRange() { + let k = offset - 1; + let characterStart = position.character; + while (k >= 0 && isLetterOrDigit(text, k)) { + k--; + characterStart--; + } + let n = k + 1; + let characterEnd = characterStart; + while (isLetterOrDigit(text, n)) { + n++; + characterEnd++; + } + if (k >= 0 && text[k] === '&') { + let range = null; + if (text[n] === ';') { + range = Range$a.create(Position.create(position.line, characterStart), Position.create(position.line, characterEnd + 1)); + } + else { + range = Range$a.create(Position.create(position.line, characterStart), Position.create(position.line, characterEnd)); + } + return range; + } + return null; + } + function filterEntity(text) { + let k = offset - 1; + let newText = '&'; + while (k >= 0 && isLetterOrDigit(text, k)) { + k--; + } + k = k + 1; + while (isLetterOrDigit(text, k)) { + newText += text[k]; + k += 1; + } + newText += ';'; + return newText; + } + if (node.endTagStart && offset >= node.endTagStart) { + const tagRange = getTagNameRange(TokenType.EndTag, node.endTagStart); + if (tagRange) { + return getTagHover(node.tag, tagRange); + } + return null; + } + const tagRange = getTagNameRange(TokenType.StartTag, node.start); + if (tagRange) { + return getTagHover(node.tag, tagRange); + } + const attrRange = getTagNameRange(TokenType.AttributeName, node.start); + if (attrRange) { + const tag = node.tag; + const attr = document.getText(attrRange); + return getAttrHover(tag, attr, attrRange); + } + const entityRange = getEntityRange(); + if (entityRange) { + return getEntityHover(text, entityRange); + } + function scanAttrAndAttrValue(nodeStart, attrValueStart) { + const scanner = createScanner$2(document.getText(), nodeStart); + let token = scanner.scan(); + let prevAttr = undefined; + while (token !== TokenType.EOS && (scanner.getTokenEnd() <= attrValueStart)) { + token = scanner.scan(); + if (token === TokenType.AttributeName) { + prevAttr = scanner.getTokenText(); + } + } + return prevAttr; + } + const attrValueRange = getTagNameRange(TokenType.AttributeValue, node.start); + if (attrValueRange) { + const tag = node.tag; + const attrValue = trimQuotes(document.getText(attrValueRange)); + const matchAttr = scanAttrAndAttrValue(node.start, document.offsetAt(attrValueRange.start)); + if (matchAttr) { + return getAttrValueHover(tag, matchAttr, attrValue, attrValueRange); + } + } + return null; + } + convertContents(contents) { + if (!this.doesSupportMarkdown()) { + if (typeof contents === 'string') { + return contents; + } + // MarkupContent + else if ('kind' in contents) { + return { + kind: 'plaintext', + value: contents.value + }; + } + // MarkedString[] + else if (Array.isArray(contents)) { + contents.map(c => { + return typeof c === 'string' ? c : c.value; + }); + } + // MarkedString + else { + return contents.value; + } + } + return contents; + } + doesSupportMarkdown() { + if (!isDefined$1(this.supportsMarkdown)) { + if (!isDefined$1(this.lsOptions.clientCapabilities)) { + this.supportsMarkdown = true; + return this.supportsMarkdown; + } + const contentFormat = this.lsOptions.clientCapabilities?.textDocument?.hover?.contentFormat; + this.supportsMarkdown = Array.isArray(contentFormat) && contentFormat.indexOf(MarkupKind.Markdown) !== -1; + } + return this.supportsMarkdown; + } +} +function trimQuotes(s) { + if (s.length <= 1) { + return s.replace(/['"]/, ''); // CodeQL [SM02383] False positive: The string length is at most one, so we don't need the global flag. + } + if (s[0] === `'` || s[0] === `"`) { + s = s.slice(1); + } + if (s[s.length - 1] === `'` || s[s.length - 1] === `"`) { + s = s.slice(0, -1); + } + return s; +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +/* + * Mock for the JS formatter. Ignore formatting of JS content in HTML. + */ +function js_beautify(js_source_text, options) { + // no formatting + return js_source_text; +} + +// copied from js-beautify/js/lib/beautify-css.js +// version: 1.14.9 +/* AUTO-GENERATED. DO NOT MODIFY. */ +/* + + The MIT License (MIT) + + Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors. + + 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. + + + CSS Beautifier +--------------- + + Written by Harutyun Amirjanyan, (amirjanyan@gmail.com) + + Based on code initially developed by: Einar Lielmanis, <einar@beautifier.io> + https://beautifier.io/ + + Usage: + css_beautify(source_text); + css_beautify(source_text, options); + + The options are (default in brackets): + indent_size (4) — indentation size, + indent_char (space) — character to indent with, + selector_separator_newline (true) - separate selectors with newline or + not (e.g. "a,\nbr" or "a, br") + end_with_newline (false) - end with a newline + newline_between_rules (true) - add a new line after every css rule + space_around_selector_separator (false) - ensure space around selector separators: + '>', '+', '~' (e.g. "a>b" -> "a > b") + e.g + + css_beautify(css_source_text, { + 'indent_size': 1, + 'indent_char': '\t', + 'selector_separator': ' ', + 'end_with_newline': false, + 'newline_between_rules': true, + 'space_around_selector_separator': true + }); +*/ + +// http://www.w3.org/TR/CSS21/syndata.html#tokenization +// http://www.w3.org/TR/css3-syntax/ + +var legacy_beautify_css; +/******/ (function() { // webpackBootstrap +/******/ var __webpack_modules__ = ([ +/* 0 */, +/* 1 */, +/* 2 */ +/***/ (function(module) { + +/*jshint node:true */ +/* + The MIT License (MIT) + + Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors. + + 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. +*/ + + + +function OutputLine(parent) { + this.__parent = parent; + this.__character_count = 0; + // use indent_count as a marker for this.__lines that have preserved indentation + this.__indent_count = -1; + this.__alignment_count = 0; + this.__wrap_point_index = 0; + this.__wrap_point_character_count = 0; + this.__wrap_point_indent_count = -1; + this.__wrap_point_alignment_count = 0; + + this.__items = []; +} + +OutputLine.prototype.clone_empty = function() { + var line = new OutputLine(this.__parent); + line.set_indent(this.__indent_count, this.__alignment_count); + return line; +}; + +OutputLine.prototype.item = function(index) { + if (index < 0) { + return this.__items[this.__items.length + index]; + } else { + return this.__items[index]; + } +}; + +OutputLine.prototype.has_match = function(pattern) { + for (var lastCheckedOutput = this.__items.length - 1; lastCheckedOutput >= 0; lastCheckedOutput--) { + if (this.__items[lastCheckedOutput].match(pattern)) { + return true; + } + } + return false; +}; + +OutputLine.prototype.set_indent = function(indent, alignment) { + if (this.is_empty()) { + this.__indent_count = indent || 0; + this.__alignment_count = alignment || 0; + this.__character_count = this.__parent.get_indent_size(this.__indent_count, this.__alignment_count); + } +}; + +OutputLine.prototype._set_wrap_point = function() { + if (this.__parent.wrap_line_length) { + this.__wrap_point_index = this.__items.length; + this.__wrap_point_character_count = this.__character_count; + this.__wrap_point_indent_count = this.__parent.next_line.__indent_count; + this.__wrap_point_alignment_count = this.__parent.next_line.__alignment_count; + } +}; + +OutputLine.prototype._should_wrap = function() { + return this.__wrap_point_index && + this.__character_count > this.__parent.wrap_line_length && + this.__wrap_point_character_count > this.__parent.next_line.__character_count; +}; + +OutputLine.prototype._allow_wrap = function() { + if (this._should_wrap()) { + this.__parent.add_new_line(); + var next = this.__parent.current_line; + next.set_indent(this.__wrap_point_indent_count, this.__wrap_point_alignment_count); + next.__items = this.__items.slice(this.__wrap_point_index); + this.__items = this.__items.slice(0, this.__wrap_point_index); + + next.__character_count += this.__character_count - this.__wrap_point_character_count; + this.__character_count = this.__wrap_point_character_count; + + if (next.__items[0] === " ") { + next.__items.splice(0, 1); + next.__character_count -= 1; + } + return true; + } + return false; +}; + +OutputLine.prototype.is_empty = function() { + return this.__items.length === 0; +}; + +OutputLine.prototype.last = function() { + if (!this.is_empty()) { + return this.__items[this.__items.length - 1]; + } else { + return null; + } +}; + +OutputLine.prototype.push = function(item) { + this.__items.push(item); + var last_newline_index = item.lastIndexOf('\n'); + if (last_newline_index !== -1) { + this.__character_count = item.length - last_newline_index; + } else { + this.__character_count += item.length; + } +}; + +OutputLine.prototype.pop = function() { + var item = null; + if (!this.is_empty()) { + item = this.__items.pop(); + this.__character_count -= item.length; + } + return item; +}; + + +OutputLine.prototype._remove_indent = function() { + if (this.__indent_count > 0) { + this.__indent_count -= 1; + this.__character_count -= this.__parent.indent_size; + } +}; + +OutputLine.prototype._remove_wrap_indent = function() { + if (this.__wrap_point_indent_count > 0) { + this.__wrap_point_indent_count -= 1; + } +}; +OutputLine.prototype.trim = function() { + while (this.last() === ' ') { + this.__items.pop(); + this.__character_count -= 1; + } +}; + +OutputLine.prototype.toString = function() { + var result = ''; + if (this.is_empty()) { + if (this.__parent.indent_empty_lines) { + result = this.__parent.get_indent_string(this.__indent_count); + } + } else { + result = this.__parent.get_indent_string(this.__indent_count, this.__alignment_count); + result += this.__items.join(''); + } + return result; +}; + +function IndentStringCache(options, baseIndentString) { + this.__cache = ['']; + this.__indent_size = options.indent_size; + this.__indent_string = options.indent_char; + if (!options.indent_with_tabs) { + this.__indent_string = new Array(options.indent_size + 1).join(options.indent_char); + } + + // Set to null to continue support for auto detection of base indent + baseIndentString = baseIndentString || ''; + if (options.indent_level > 0) { + baseIndentString = new Array(options.indent_level + 1).join(this.__indent_string); + } + + this.__base_string = baseIndentString; + this.__base_string_length = baseIndentString.length; +} + +IndentStringCache.prototype.get_indent_size = function(indent, column) { + var result = this.__base_string_length; + column = column || 0; + if (indent < 0) { + result = 0; + } + result += indent * this.__indent_size; + result += column; + return result; +}; + +IndentStringCache.prototype.get_indent_string = function(indent_level, column) { + var result = this.__base_string; + column = column || 0; + if (indent_level < 0) { + indent_level = 0; + result = ''; + } + column += indent_level * this.__indent_size; + this.__ensure_cache(column); + result += this.__cache[column]; + return result; +}; + +IndentStringCache.prototype.__ensure_cache = function(column) { + while (column >= this.__cache.length) { + this.__add_column(); + } +}; + +IndentStringCache.prototype.__add_column = function() { + var column = this.__cache.length; + var indent = 0; + var result = ''; + if (this.__indent_size && column >= this.__indent_size) { + indent = Math.floor(column / this.__indent_size); + column -= indent * this.__indent_size; + result = new Array(indent + 1).join(this.__indent_string); + } + if (column) { + result += new Array(column + 1).join(' '); + } + + this.__cache.push(result); +}; + +function Output(options, baseIndentString) { + this.__indent_cache = new IndentStringCache(options, baseIndentString); + this.raw = false; + this._end_with_newline = options.end_with_newline; + this.indent_size = options.indent_size; + this.wrap_line_length = options.wrap_line_length; + this.indent_empty_lines = options.indent_empty_lines; + this.__lines = []; + this.previous_line = null; + this.current_line = null; + this.next_line = new OutputLine(this); + this.space_before_token = false; + this.non_breaking_space = false; + this.previous_token_wrapped = false; + // initialize + this.__add_outputline(); +} + +Output.prototype.__add_outputline = function() { + this.previous_line = this.current_line; + this.current_line = this.next_line.clone_empty(); + this.__lines.push(this.current_line); +}; + +Output.prototype.get_line_number = function() { + return this.__lines.length; +}; + +Output.prototype.get_indent_string = function(indent, column) { + return this.__indent_cache.get_indent_string(indent, column); +}; + +Output.prototype.get_indent_size = function(indent, column) { + return this.__indent_cache.get_indent_size(indent, column); +}; + +Output.prototype.is_empty = function() { + return !this.previous_line && this.current_line.is_empty(); +}; + +Output.prototype.add_new_line = function(force_newline) { + // never newline at the start of file + // otherwise, newline only if we didn't just add one or we're forced + if (this.is_empty() || + (!force_newline && this.just_added_newline())) { + return false; + } + + // if raw output is enabled, don't print additional newlines, + // but still return True as though you had + if (!this.raw) { + this.__add_outputline(); + } + return true; +}; + +Output.prototype.get_code = function(eol) { + this.trim(true); + + // handle some edge cases where the last tokens + // has text that ends with newline(s) + var last_item = this.current_line.pop(); + if (last_item) { + if (last_item[last_item.length - 1] === '\n') { + last_item = last_item.replace(/\n+$/g, ''); + } + this.current_line.push(last_item); + } + + if (this._end_with_newline) { + this.__add_outputline(); + } + + var sweet_code = this.__lines.join('\n'); + + if (eol !== '\n') { + sweet_code = sweet_code.replace(/[\n]/g, eol); + } + return sweet_code; +}; + +Output.prototype.set_wrap_point = function() { + this.current_line._set_wrap_point(); +}; + +Output.prototype.set_indent = function(indent, alignment) { + indent = indent || 0; + alignment = alignment || 0; + + // Next line stores alignment values + this.next_line.set_indent(indent, alignment); + + // Never indent your first output indent at the start of the file + if (this.__lines.length > 1) { + this.current_line.set_indent(indent, alignment); + return true; + } + + this.current_line.set_indent(); + return false; +}; + +Output.prototype.add_raw_token = function(token) { + for (var x = 0; x < token.newlines; x++) { + this.__add_outputline(); + } + this.current_line.set_indent(-1); + this.current_line.push(token.whitespace_before); + this.current_line.push(token.text); + this.space_before_token = false; + this.non_breaking_space = false; + this.previous_token_wrapped = false; +}; + +Output.prototype.add_token = function(printable_token) { + this.__add_space_before_token(); + this.current_line.push(printable_token); + this.space_before_token = false; + this.non_breaking_space = false; + this.previous_token_wrapped = this.current_line._allow_wrap(); +}; + +Output.prototype.__add_space_before_token = function() { + if (this.space_before_token && !this.just_added_newline()) { + if (!this.non_breaking_space) { + this.set_wrap_point(); + } + this.current_line.push(' '); + } +}; + +Output.prototype.remove_indent = function(index) { + var output_length = this.__lines.length; + while (index < output_length) { + this.__lines[index]._remove_indent(); + index++; + } + this.current_line._remove_wrap_indent(); +}; + +Output.prototype.trim = function(eat_newlines) { + eat_newlines = (eat_newlines === undefined) ? false : eat_newlines; + + this.current_line.trim(); + + while (eat_newlines && this.__lines.length > 1 && + this.current_line.is_empty()) { + this.__lines.pop(); + this.current_line = this.__lines[this.__lines.length - 1]; + this.current_line.trim(); + } + + this.previous_line = this.__lines.length > 1 ? + this.__lines[this.__lines.length - 2] : null; +}; + +Output.prototype.just_added_newline = function() { + return this.current_line.is_empty(); +}; + +Output.prototype.just_added_blankline = function() { + return this.is_empty() || + (this.current_line.is_empty() && this.previous_line.is_empty()); +}; + +Output.prototype.ensure_empty_line_above = function(starts_with, ends_with) { + var index = this.__lines.length - 2; + while (index >= 0) { + var potentialEmptyLine = this.__lines[index]; + if (potentialEmptyLine.is_empty()) { + break; + } else if (potentialEmptyLine.item(0).indexOf(starts_with) !== 0 && + potentialEmptyLine.item(-1) !== ends_with) { + this.__lines.splice(index + 1, 0, new OutputLine(this)); + this.previous_line = this.__lines[this.__lines.length - 2]; + break; + } + index--; + } +}; + +module.exports.Output = Output; + + +/***/ }), +/* 3 */, +/* 4 */, +/* 5 */, +/* 6 */ +/***/ (function(module) { + +/*jshint node:true */ +/* + + The MIT License (MIT) + + Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors. + + 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. +*/ + + + +function Options(options, merge_child_field) { + this.raw_options = _mergeOpts(options, merge_child_field); + + // Support passing the source text back with no change + this.disabled = this._get_boolean('disabled'); + + this.eol = this._get_characters('eol', 'auto'); + this.end_with_newline = this._get_boolean('end_with_newline'); + this.indent_size = this._get_number('indent_size', 4); + this.indent_char = this._get_characters('indent_char', ' '); + this.indent_level = this._get_number('indent_level'); + + this.preserve_newlines = this._get_boolean('preserve_newlines', true); + this.max_preserve_newlines = this._get_number('max_preserve_newlines', 32786); + if (!this.preserve_newlines) { + this.max_preserve_newlines = 0; + } + + this.indent_with_tabs = this._get_boolean('indent_with_tabs', this.indent_char === '\t'); + if (this.indent_with_tabs) { + this.indent_char = '\t'; + + // indent_size behavior changed after 1.8.6 + // It used to be that indent_size would be + // set to 1 for indent_with_tabs. That is no longer needed and + // actually doesn't make sense - why not use spaces? Further, + // that might produce unexpected behavior - tabs being used + // for single-column alignment. So, when indent_with_tabs is true + // and indent_size is 1, reset indent_size to 4. + if (this.indent_size === 1) { + this.indent_size = 4; + } + } + + // Backwards compat with 1.3.x + this.wrap_line_length = this._get_number('wrap_line_length', this._get_number('max_char')); + + this.indent_empty_lines = this._get_boolean('indent_empty_lines'); + + // valid templating languages ['django', 'erb', 'handlebars', 'php', 'smarty'] + // For now, 'auto' = all off for javascript, all on for html (and inline javascript). + // other values ignored + this.templating = this._get_selection_list('templating', ['auto', 'none', 'django', 'erb', 'handlebars', 'php', 'smarty'], ['auto']); +} + +Options.prototype._get_array = function(name, default_value) { + var option_value = this.raw_options[name]; + var result = default_value || []; + if (typeof option_value === 'object') { + if (option_value !== null && typeof option_value.concat === 'function') { + result = option_value.concat(); + } + } else if (typeof option_value === 'string') { + result = option_value.split(/[^a-zA-Z0-9_\/\-]+/); + } + return result; +}; + +Options.prototype._get_boolean = function(name, default_value) { + var option_value = this.raw_options[name]; + var result = option_value === undefined ? !!default_value : !!option_value; + return result; +}; + +Options.prototype._get_characters = function(name, default_value) { + var option_value = this.raw_options[name]; + var result = default_value || ''; + if (typeof option_value === 'string') { + result = option_value.replace(/\\r/, '\r').replace(/\\n/, '\n').replace(/\\t/, '\t'); + } + return result; +}; + +Options.prototype._get_number = function(name, default_value) { + var option_value = this.raw_options[name]; + default_value = parseInt(default_value, 10); + if (isNaN(default_value)) { + default_value = 0; + } + var result = parseInt(option_value, 10); + if (isNaN(result)) { + result = default_value; + } + return result; +}; + +Options.prototype._get_selection = function(name, selection_list, default_value) { + var result = this._get_selection_list(name, selection_list, default_value); + if (result.length !== 1) { + throw new Error( + "Invalid Option Value: The option '" + name + "' can only be one of the following values:\n" + + selection_list + "\nYou passed in: '" + this.raw_options[name] + "'"); + } + + return result[0]; +}; + + +Options.prototype._get_selection_list = function(name, selection_list, default_value) { + if (!selection_list || selection_list.length === 0) { + throw new Error("Selection list cannot be empty."); + } + + default_value = default_value || [selection_list[0]]; + if (!this._is_valid_selection(default_value, selection_list)) { + throw new Error("Invalid Default Value!"); + } + + var result = this._get_array(name, default_value); + if (!this._is_valid_selection(result, selection_list)) { + throw new Error( + "Invalid Option Value: The option '" + name + "' can contain only the following values:\n" + + selection_list + "\nYou passed in: '" + this.raw_options[name] + "'"); + } + + return result; +}; + +Options.prototype._is_valid_selection = function(result, selection_list) { + return result.length && selection_list.length && + !result.some(function(item) { return selection_list.indexOf(item) === -1; }); +}; + + +// merges child options up with the parent options object +// Example: obj = {a: 1, b: {a: 2}} +// mergeOpts(obj, 'b') +// +// Returns: {a: 2} +function _mergeOpts(allOptions, childFieldName) { + var finalOpts = {}; + allOptions = _normalizeOpts(allOptions); + var name; + + for (name in allOptions) { + if (name !== childFieldName) { + finalOpts[name] = allOptions[name]; + } + } + + //merge in the per type settings for the childFieldName + if (childFieldName && allOptions[childFieldName]) { + for (name in allOptions[childFieldName]) { + finalOpts[name] = allOptions[childFieldName][name]; + } + } + return finalOpts; +} + +function _normalizeOpts(options) { + var convertedOpts = {}; + var key; + + for (key in options) { + var newKey = key.replace(/-/g, "_"); + convertedOpts[newKey] = options[key]; + } + return convertedOpts; +} + +module.exports.Options = Options; +module.exports.normalizeOpts = _normalizeOpts; +module.exports.mergeOpts = _mergeOpts; + + +/***/ }), +/* 7 */, +/* 8 */ +/***/ (function(module) { + +/*jshint node:true */ +/* + + The MIT License (MIT) + + Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors. + + 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 regexp_has_sticky = RegExp.prototype.hasOwnProperty('sticky'); + +function InputScanner(input_string) { + this.__input = input_string || ''; + this.__input_length = this.__input.length; + this.__position = 0; +} + +InputScanner.prototype.restart = function() { + this.__position = 0; +}; + +InputScanner.prototype.back = function() { + if (this.__position > 0) { + this.__position -= 1; + } +}; + +InputScanner.prototype.hasNext = function() { + return this.__position < this.__input_length; +}; + +InputScanner.prototype.next = function() { + var val = null; + if (this.hasNext()) { + val = this.__input.charAt(this.__position); + this.__position += 1; + } + return val; +}; + +InputScanner.prototype.peek = function(index) { + var val = null; + index = index || 0; + index += this.__position; + if (index >= 0 && index < this.__input_length) { + val = this.__input.charAt(index); + } + return val; +}; + +// This is a JavaScript only helper function (not in python) +// Javascript doesn't have a match method +// and not all implementation support "sticky" flag. +// If they do not support sticky then both this.match() and this.test() method +// must get the match and check the index of the match. +// If sticky is supported and set, this method will use it. +// Otherwise it will check that global is set, and fall back to the slower method. +InputScanner.prototype.__match = function(pattern, index) { + pattern.lastIndex = index; + var pattern_match = pattern.exec(this.__input); + + if (pattern_match && !(regexp_has_sticky && pattern.sticky)) { + if (pattern_match.index !== index) { + pattern_match = null; + } + } + + return pattern_match; +}; + +InputScanner.prototype.test = function(pattern, index) { + index = index || 0; + index += this.__position; + + if (index >= 0 && index < this.__input_length) { + return !!this.__match(pattern, index); + } else { + return false; + } +}; + +InputScanner.prototype.testChar = function(pattern, index) { + // test one character regex match + var val = this.peek(index); + pattern.lastIndex = 0; + return val !== null && pattern.test(val); +}; + +InputScanner.prototype.match = function(pattern) { + var pattern_match = this.__match(pattern, this.__position); + if (pattern_match) { + this.__position += pattern_match[0].length; + } else { + pattern_match = null; + } + return pattern_match; +}; + +InputScanner.prototype.read = function(starting_pattern, until_pattern, until_after) { + var val = ''; + var match; + if (starting_pattern) { + match = this.match(starting_pattern); + if (match) { + val += match[0]; + } + } + if (until_pattern && (match || !starting_pattern)) { + val += this.readUntil(until_pattern, until_after); + } + return val; +}; + +InputScanner.prototype.readUntil = function(pattern, until_after) { + var val = ''; + var match_index = this.__position; + pattern.lastIndex = this.__position; + var pattern_match = pattern.exec(this.__input); + if (pattern_match) { + match_index = pattern_match.index; + if (until_after) { + match_index += pattern_match[0].length; + } + } else { + match_index = this.__input_length; + } + + val = this.__input.substring(this.__position, match_index); + this.__position = match_index; + return val; +}; + +InputScanner.prototype.readUntilAfter = function(pattern) { + return this.readUntil(pattern, true); +}; + +InputScanner.prototype.get_regexp = function(pattern, match_from) { + var result = null; + var flags = 'g'; + if (match_from && regexp_has_sticky) { + flags = 'y'; + } + // strings are converted to regexp + if (typeof pattern === "string" && pattern !== '') { + // result = new RegExp(pattern.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'), flags); + result = new RegExp(pattern, flags); + } else if (pattern) { + result = new RegExp(pattern.source, flags); + } + return result; +}; + +InputScanner.prototype.get_literal_regexp = function(literal_string) { + return RegExp(literal_string.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&')); +}; + +/* css beautifier legacy helpers */ +InputScanner.prototype.peekUntilAfter = function(pattern) { + var start = this.__position; + var val = this.readUntilAfter(pattern); + this.__position = start; + return val; +}; + +InputScanner.prototype.lookBack = function(testVal) { + var start = this.__position - 1; + return start >= testVal.length && this.__input.substring(start - testVal.length, start) + .toLowerCase() === testVal; +}; + +module.exports.InputScanner = InputScanner; + + +/***/ }), +/* 9 */, +/* 10 */, +/* 11 */, +/* 12 */, +/* 13 */ +/***/ (function(module) { + +/*jshint node:true */ +/* + + The MIT License (MIT) + + Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors. + + 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. +*/ + + + +function Directives(start_block_pattern, end_block_pattern) { + start_block_pattern = typeof start_block_pattern === 'string' ? start_block_pattern : start_block_pattern.source; + end_block_pattern = typeof end_block_pattern === 'string' ? end_block_pattern : end_block_pattern.source; + this.__directives_block_pattern = new RegExp(start_block_pattern + / beautify( \w+[:]\w+)+ /.source + end_block_pattern, 'g'); + this.__directive_pattern = / (\w+)[:](\w+)/g; + + this.__directives_end_ignore_pattern = new RegExp(start_block_pattern + /\sbeautify\signore:end\s/.source + end_block_pattern, 'g'); +} + +Directives.prototype.get_directives = function(text) { + if (!text.match(this.__directives_block_pattern)) { + return null; + } + + var directives = {}; + this.__directive_pattern.lastIndex = 0; + var directive_match = this.__directive_pattern.exec(text); + + while (directive_match) { + directives[directive_match[1]] = directive_match[2]; + directive_match = this.__directive_pattern.exec(text); + } + + return directives; +}; + +Directives.prototype.readIgnored = function(input) { + return input.readUntilAfter(this.__directives_end_ignore_pattern); +}; + + +module.exports.Directives = Directives; + + +/***/ }), +/* 14 */, +/* 15 */ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +/*jshint node:true */ +/* + + The MIT License (MIT) + + Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors. + + 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 Beautifier = (__webpack_require__(16).Beautifier), + Options = (__webpack_require__(17).Options); + +function css_beautify(source_text, options) { + var beautifier = new Beautifier(source_text, options); + return beautifier.beautify(); +} + +module.exports = css_beautify; +module.exports.defaultOptions = function() { + return new Options(); +}; + + +/***/ }), +/* 16 */ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +/*jshint node:true */ +/* + + The MIT License (MIT) + + Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors. + + 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 Options = (__webpack_require__(17).Options); +var Output = (__webpack_require__(2).Output); +var InputScanner = (__webpack_require__(8).InputScanner); +var Directives = (__webpack_require__(13).Directives); + +var directives_core = new Directives(/\/\*/, /\*\//); + +var lineBreak = /\r\n|[\r\n]/; +var allLineBreaks = /\r\n|[\r\n]/g; + +// tokenizer +var whitespaceChar = /\s/; +var whitespacePattern = /(?:\s|\n)+/g; +var block_comment_pattern = /\/\*(?:[\s\S]*?)((?:\*\/)|$)/g; +var comment_pattern = /\/\/(?:[^\n\r\u2028\u2029]*)/g; + +function Beautifier(source_text, options) { + this._source_text = source_text || ''; + // Allow the setting of language/file-type specific options + // with inheritance of overall settings + this._options = new Options(options); + this._ch = null; + this._input = null; + + // https://developer.mozilla.org/en-US/docs/Web/CSS/At-rule + this.NESTED_AT_RULE = { + "page": true, + "font-face": true, + "keyframes": true, + // also in CONDITIONAL_GROUP_RULE below + "media": true, + "supports": true, + "document": true + }; + this.CONDITIONAL_GROUP_RULE = { + "media": true, + "supports": true, + "document": true + }; + this.NON_SEMICOLON_NEWLINE_PROPERTY = [ + "grid-template-areas", + "grid-template" + ]; + +} + +Beautifier.prototype.eatString = function(endChars) { + var result = ''; + this._ch = this._input.next(); + while (this._ch) { + result += this._ch; + if (this._ch === "\\") { + result += this._input.next(); + } else if (endChars.indexOf(this._ch) !== -1 || this._ch === "\n") { + break; + } + this._ch = this._input.next(); + } + return result; +}; + +// Skips any white space in the source text from the current position. +// When allowAtLeastOneNewLine is true, will output new lines for each +// newline character found; if the user has preserve_newlines off, only +// the first newline will be output +Beautifier.prototype.eatWhitespace = function(allowAtLeastOneNewLine) { + var result = whitespaceChar.test(this._input.peek()); + var newline_count = 0; + while (whitespaceChar.test(this._input.peek())) { + this._ch = this._input.next(); + if (allowAtLeastOneNewLine && this._ch === '\n') { + if (newline_count === 0 || newline_count < this._options.max_preserve_newlines) { + newline_count++; + this._output.add_new_line(true); + } + } + } + return result; +}; + +// Nested pseudo-class if we are insideRule +// and the next special character found opens +// a new block +Beautifier.prototype.foundNestedPseudoClass = function() { + var openParen = 0; + var i = 1; + var ch = this._input.peek(i); + while (ch) { + if (ch === "{") { + return true; + } else if (ch === '(') { + // pseudoclasses can contain () + openParen += 1; + } else if (ch === ')') { + if (openParen === 0) { + return false; + } + openParen -= 1; + } else if (ch === ";" || ch === "}") { + return false; + } + i++; + ch = this._input.peek(i); + } + return false; +}; + +Beautifier.prototype.print_string = function(output_string) { + this._output.set_indent(this._indentLevel); + this._output.non_breaking_space = true; + this._output.add_token(output_string); +}; + +Beautifier.prototype.preserveSingleSpace = function(isAfterSpace) { + if (isAfterSpace) { + this._output.space_before_token = true; + } +}; + +Beautifier.prototype.indent = function() { + this._indentLevel++; +}; + +Beautifier.prototype.outdent = function() { + if (this._indentLevel > 0) { + this._indentLevel--; + } +}; + +/*_____________________--------------------_____________________*/ + +Beautifier.prototype.beautify = function() { + if (this._options.disabled) { + return this._source_text; + } + + var source_text = this._source_text; + var eol = this._options.eol; + if (eol === 'auto') { + eol = '\n'; + if (source_text && lineBreak.test(source_text || '')) { + eol = source_text.match(lineBreak)[0]; + } + } + + + // HACK: newline parsing inconsistent. This brute force normalizes the this._input. + source_text = source_text.replace(allLineBreaks, '\n'); + + // reset + var baseIndentString = source_text.match(/^[\t ]*/)[0]; + + this._output = new Output(this._options, baseIndentString); + this._input = new InputScanner(source_text); + this._indentLevel = 0; + this._nestedLevel = 0; + + this._ch = null; + var parenLevel = 0; + + var insideRule = false; + // This is the value side of a property value pair (blue in the following ex) + // label { content: blue } + var insidePropertyValue = false; + var enteringConditionalGroup = false; + var insideNonNestedAtRule = false; + var insideScssMap = false; + var topCharacter = this._ch; + var insideNonSemiColonValues = false; + var whitespace; + var isAfterSpace; + var previous_ch; + + while (true) { + whitespace = this._input.read(whitespacePattern); + isAfterSpace = whitespace !== ''; + previous_ch = topCharacter; + this._ch = this._input.next(); + if (this._ch === '\\' && this._input.hasNext()) { + this._ch += this._input.next(); + } + topCharacter = this._ch; + + if (!this._ch) { + break; + } else if (this._ch === '/' && this._input.peek() === '*') { + // /* css comment */ + // Always start block comments on a new line. + // This handles scenarios where a block comment immediately + // follows a property definition on the same line or where + // minified code is being beautified. + this._output.add_new_line(); + this._input.back(); + + var comment = this._input.read(block_comment_pattern); + + // Handle ignore directive + var directives = directives_core.get_directives(comment); + if (directives && directives.ignore === 'start') { + comment += directives_core.readIgnored(this._input); + } + + this.print_string(comment); + + // Ensures any new lines following the comment are preserved + this.eatWhitespace(true); + + // Block comments are followed by a new line so they don't + // share a line with other properties + this._output.add_new_line(); + } else if (this._ch === '/' && this._input.peek() === '/') { + // // single line comment + // Preserves the space before a comment + // on the same line as a rule + this._output.space_before_token = true; + this._input.back(); + this.print_string(this._input.read(comment_pattern)); + + // Ensures any new lines following the comment are preserved + this.eatWhitespace(true); + } else if (this._ch === '$') { + this.preserveSingleSpace(isAfterSpace); + + this.print_string(this._ch); + + // strip trailing space, if present, for hash property checks + var variable = this._input.peekUntilAfter(/[: ,;{}()[\]\/='"]/g); + + if (variable.match(/[ :]$/)) { + // we have a variable or pseudo-class, add it and insert one space before continuing + variable = this.eatString(": ").replace(/\s$/, ''); + this.print_string(variable); + this._output.space_before_token = true; + } + + variable = variable.replace(/\s$/, ''); + + // might be sass variable + if (parenLevel === 0 && variable.indexOf(':') !== -1) { + insidePropertyValue = true; + this.indent(); + } + } else if (this._ch === '@') { + this.preserveSingleSpace(isAfterSpace); + + // deal with less property mixins @{...} + if (this._input.peek() === '{') { + this.print_string(this._ch + this.eatString('}')); + } else { + this.print_string(this._ch); + + // strip trailing space, if present, for hash property checks + var variableOrRule = this._input.peekUntilAfter(/[: ,;{}()[\]\/='"]/g); + + if (variableOrRule.match(/[ :]$/)) { + // we have a variable or pseudo-class, add it and insert one space before continuing + variableOrRule = this.eatString(": ").replace(/\s$/, ''); + this.print_string(variableOrRule); + this._output.space_before_token = true; + } + + variableOrRule = variableOrRule.replace(/\s$/, ''); + + // might be less variable + if (parenLevel === 0 && variableOrRule.indexOf(':') !== -1) { + insidePropertyValue = true; + this.indent(); + + // might be a nesting at-rule + } else if (variableOrRule in this.NESTED_AT_RULE) { + this._nestedLevel += 1; + if (variableOrRule in this.CONDITIONAL_GROUP_RULE) { + enteringConditionalGroup = true; + } + + // might be a non-nested at-rule + } else if (parenLevel === 0 && !insidePropertyValue) { + insideNonNestedAtRule = true; + } + } + } else if (this._ch === '#' && this._input.peek() === '{') { + this.preserveSingleSpace(isAfterSpace); + this.print_string(this._ch + this.eatString('}')); + } else if (this._ch === '{') { + if (insidePropertyValue) { + insidePropertyValue = false; + this.outdent(); + } + + // non nested at rule becomes nested + insideNonNestedAtRule = false; + + // when entering conditional groups, only rulesets are allowed + if (enteringConditionalGroup) { + enteringConditionalGroup = false; + insideRule = (this._indentLevel >= this._nestedLevel); + } else { + // otherwise, declarations are also allowed + insideRule = (this._indentLevel >= this._nestedLevel - 1); + } + if (this._options.newline_between_rules && insideRule) { + if (this._output.previous_line && this._output.previous_line.item(-1) !== '{') { + this._output.ensure_empty_line_above('/', ','); + } + } + + this._output.space_before_token = true; + + // The difference in print_string and indent order is necessary to indent the '{' correctly + if (this._options.brace_style === 'expand') { + this._output.add_new_line(); + this.print_string(this._ch); + this.indent(); + this._output.set_indent(this._indentLevel); + } else { + // inside mixin and first param is object + if (previous_ch === '(') { + this._output.space_before_token = false; + } else if (previous_ch !== ',') { + this.indent(); + } + this.print_string(this._ch); + } + + this.eatWhitespace(true); + this._output.add_new_line(); + } else if (this._ch === '}') { + this.outdent(); + this._output.add_new_line(); + if (previous_ch === '{') { + this._output.trim(true); + } + + if (insidePropertyValue) { + this.outdent(); + insidePropertyValue = false; + } + this.print_string(this._ch); + insideRule = false; + if (this._nestedLevel) { + this._nestedLevel--; + } + + this.eatWhitespace(true); + this._output.add_new_line(); + + if (this._options.newline_between_rules && !this._output.just_added_blankline()) { + if (this._input.peek() !== '}') { + this._output.add_new_line(true); + } + } + if (this._input.peek() === ')') { + this._output.trim(true); + if (this._options.brace_style === "expand") { + this._output.add_new_line(true); + } + } + } else if (this._ch === ":") { + + for (var i = 0; i < this.NON_SEMICOLON_NEWLINE_PROPERTY.length; i++) { + if (this._input.lookBack(this.NON_SEMICOLON_NEWLINE_PROPERTY[i])) { + insideNonSemiColonValues = true; + break; + } + } + + if ((insideRule || enteringConditionalGroup) && !(this._input.lookBack("&") || this.foundNestedPseudoClass()) && !this._input.lookBack("(") && !insideNonNestedAtRule && parenLevel === 0) { + // 'property: value' delimiter + // which could be in a conditional group query + + this.print_string(':'); + if (!insidePropertyValue) { + insidePropertyValue = true; + this._output.space_before_token = true; + this.eatWhitespace(true); + this.indent(); + } + } else { + // sass/less parent reference don't use a space + // sass nested pseudo-class don't use a space + + // preserve space before pseudoclasses/pseudoelements, as it means "in any child" + if (this._input.lookBack(" ")) { + this._output.space_before_token = true; + } + if (this._input.peek() === ":") { + // pseudo-element + this._ch = this._input.next(); + this.print_string("::"); + } else { + // pseudo-class + this.print_string(':'); + } + } + } else if (this._ch === '"' || this._ch === '\'') { + var preserveQuoteSpace = previous_ch === '"' || previous_ch === '\''; + this.preserveSingleSpace(preserveQuoteSpace || isAfterSpace); + this.print_string(this._ch + this.eatString(this._ch)); + this.eatWhitespace(true); + } else if (this._ch === ';') { + insideNonSemiColonValues = false; + if (parenLevel === 0) { + if (insidePropertyValue) { + this.outdent(); + insidePropertyValue = false; + } + insideNonNestedAtRule = false; + this.print_string(this._ch); + this.eatWhitespace(true); + + // This maintains single line comments on the same + // line. Block comments are also affected, but + // a new line is always output before one inside + // that section + if (this._input.peek() !== '/') { + this._output.add_new_line(); + } + } else { + this.print_string(this._ch); + this.eatWhitespace(true); + this._output.space_before_token = true; + } + } else if (this._ch === '(') { // may be a url + if (this._input.lookBack("url")) { + this.print_string(this._ch); + this.eatWhitespace(); + parenLevel++; + this.indent(); + this._ch = this._input.next(); + if (this._ch === ')' || this._ch === '"' || this._ch === '\'') { + this._input.back(); + } else if (this._ch) { + this.print_string(this._ch + this.eatString(')')); + if (parenLevel) { + parenLevel--; + this.outdent(); + } + } + } else { + var space_needed = false; + if (this._input.lookBack("with")) { + // look back is not an accurate solution, we need tokens to confirm without whitespaces + space_needed = true; + } + this.preserveSingleSpace(isAfterSpace || space_needed); + this.print_string(this._ch); + + // handle scss/sass map + if (insidePropertyValue && previous_ch === "$" && this._options.selector_separator_newline) { + this._output.add_new_line(); + insideScssMap = true; + } else { + this.eatWhitespace(); + parenLevel++; + this.indent(); + } + } + } else if (this._ch === ')') { + if (parenLevel) { + parenLevel--; + this.outdent(); + } + if (insideScssMap && this._input.peek() === ";" && this._options.selector_separator_newline) { + insideScssMap = false; + this.outdent(); + this._output.add_new_line(); + } + this.print_string(this._ch); + } else if (this._ch === ',') { + this.print_string(this._ch); + this.eatWhitespace(true); + if (this._options.selector_separator_newline && (!insidePropertyValue || insideScssMap) && parenLevel === 0 && !insideNonNestedAtRule) { + this._output.add_new_line(); + } else { + this._output.space_before_token = true; + } + } else if ((this._ch === '>' || this._ch === '+' || this._ch === '~') && !insidePropertyValue && parenLevel === 0) { + //handle combinator spacing + if (this._options.space_around_combinator) { + this._output.space_before_token = true; + this.print_string(this._ch); + this._output.space_before_token = true; + } else { + this.print_string(this._ch); + this.eatWhitespace(); + // squash extra whitespace + if (this._ch && whitespaceChar.test(this._ch)) { + this._ch = ''; + } + } + } else if (this._ch === ']') { + this.print_string(this._ch); + } else if (this._ch === '[') { + this.preserveSingleSpace(isAfterSpace); + this.print_string(this._ch); + } else if (this._ch === '=') { // no whitespace before or after + this.eatWhitespace(); + this.print_string('='); + if (whitespaceChar.test(this._ch)) { + this._ch = ''; + } + } else if (this._ch === '!' && !this._input.lookBack("\\")) { // !important + this._output.space_before_token = true; + this.print_string(this._ch); + } else { + var preserveAfterSpace = previous_ch === '"' || previous_ch === '\''; + this.preserveSingleSpace(preserveAfterSpace || isAfterSpace); + this.print_string(this._ch); + + if (!this._output.just_added_newline() && this._input.peek() === '\n' && insideNonSemiColonValues) { + this._output.add_new_line(); + } + } + } + + var sweetCode = this._output.get_code(eol); + + return sweetCode; +}; + +module.exports.Beautifier = Beautifier; + + +/***/ }), +/* 17 */ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +/*jshint node:true */ +/* + + The MIT License (MIT) + + Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors. + + 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 BaseOptions = (__webpack_require__(6).Options); + +function Options(options) { + BaseOptions.call(this, options, 'css'); + + this.selector_separator_newline = this._get_boolean('selector_separator_newline', true); + this.newline_between_rules = this._get_boolean('newline_between_rules', true); + var space_around_selector_separator = this._get_boolean('space_around_selector_separator'); + this.space_around_combinator = this._get_boolean('space_around_combinator') || space_around_selector_separator; + + var brace_style_split = this._get_selection_list('brace_style', ['collapse', 'expand', 'end-expand', 'none', 'preserve-inline']); + this.brace_style = 'collapse'; + for (var bs = 0; bs < brace_style_split.length; bs++) { + if (brace_style_split[bs] !== 'expand') { + // default to collapse, as only collapse|expand is implemented for now + this.brace_style = 'collapse'; + } else { + this.brace_style = brace_style_split[bs]; + } + } +} +Options.prototype = new BaseOptions(); + + + +module.exports.Options = Options; + + +/***/ }) +/******/ ]); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +/******/ +/******/ // startup +/******/ // Load entry module and return exports +/******/ // This entry module is referenced by other modules so it can't be inlined +/******/ var __webpack_exports__ = __webpack_require__(15); +/******/ legacy_beautify_css = __webpack_exports__; +/******/ +/******/ })() +; + +var css_beautify = legacy_beautify_css; + +// copied from js-beautify/js/lib/beautify-html.js +// version: 1.14.9 +/* AUTO-GENERATED. DO NOT MODIFY. */ +/* + + The MIT License (MIT) + + Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors. + + 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. + + + Style HTML +--------------- + + Written by Nochum Sossonko, (nsossonko@hotmail.com) + + Based on code initially developed by: Einar Lielmanis, <einar@beautifier.io> + https://beautifier.io/ + + Usage: + style_html(html_source); + + style_html(html_source, options); + + The options are: + indent_inner_html (default false) — indent <head> and <body> sections, + indent_size (default 4) — indentation size, + indent_char (default space) — character to indent with, + wrap_line_length (default 250) - maximum amount of characters per line (0 = disable) + brace_style (default "collapse") - "collapse" | "expand" | "end-expand" | "none" + put braces on the same line as control statements (default), or put braces on own line (Allman / ANSI style), or just put end braces on own line, or attempt to keep them where they are. + inline (defaults to inline tags) - list of tags to be considered inline tags + unformatted (defaults to inline tags) - list of tags, that shouldn't be reformatted + content_unformatted (defaults to ["pre", "textarea"] tags) - list of tags, whose content shouldn't be reformatted + indent_scripts (default normal) - "keep"|"separate"|"normal" + preserve_newlines (default true) - whether existing line breaks before elements should be preserved + Only works before elements, not inside tags or for text. + max_preserve_newlines (default unlimited) - maximum number of line breaks to be preserved in one chunk + indent_handlebars (default false) - format and indent {{#foo}} and {{/foo}} + end_with_newline (false) - end with a newline + extra_liners (default [head,body,/html]) -List of tags that should have an extra newline before them. + + e.g. + + style_html(html_source, { + 'indent_inner_html': false, + 'indent_size': 2, + 'indent_char': ' ', + 'wrap_line_length': 78, + 'brace_style': 'expand', + 'preserve_newlines': true, + 'max_preserve_newlines': 5, + 'indent_handlebars': false, + 'extra_liners': ['/html'] + }); +*/ + + +var legacy_beautify_html; +/******/ (function() { // webpackBootstrap +/******/ var __webpack_modules__ = ([ +/* 0 */, +/* 1 */, +/* 2 */ +/***/ (function(module) { + +/*jshint node:true */ +/* + The MIT License (MIT) + + Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors. + + 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. +*/ + + + +function OutputLine(parent) { + this.__parent = parent; + this.__character_count = 0; + // use indent_count as a marker for this.__lines that have preserved indentation + this.__indent_count = -1; + this.__alignment_count = 0; + this.__wrap_point_index = 0; + this.__wrap_point_character_count = 0; + this.__wrap_point_indent_count = -1; + this.__wrap_point_alignment_count = 0; + + this.__items = []; +} + +OutputLine.prototype.clone_empty = function() { + var line = new OutputLine(this.__parent); + line.set_indent(this.__indent_count, this.__alignment_count); + return line; +}; + +OutputLine.prototype.item = function(index) { + if (index < 0) { + return this.__items[this.__items.length + index]; + } else { + return this.__items[index]; + } +}; + +OutputLine.prototype.has_match = function(pattern) { + for (var lastCheckedOutput = this.__items.length - 1; lastCheckedOutput >= 0; lastCheckedOutput--) { + if (this.__items[lastCheckedOutput].match(pattern)) { + return true; + } + } + return false; +}; + +OutputLine.prototype.set_indent = function(indent, alignment) { + if (this.is_empty()) { + this.__indent_count = indent || 0; + this.__alignment_count = alignment || 0; + this.__character_count = this.__parent.get_indent_size(this.__indent_count, this.__alignment_count); + } +}; + +OutputLine.prototype._set_wrap_point = function() { + if (this.__parent.wrap_line_length) { + this.__wrap_point_index = this.__items.length; + this.__wrap_point_character_count = this.__character_count; + this.__wrap_point_indent_count = this.__parent.next_line.__indent_count; + this.__wrap_point_alignment_count = this.__parent.next_line.__alignment_count; + } +}; + +OutputLine.prototype._should_wrap = function() { + return this.__wrap_point_index && + this.__character_count > this.__parent.wrap_line_length && + this.__wrap_point_character_count > this.__parent.next_line.__character_count; +}; + +OutputLine.prototype._allow_wrap = function() { + if (this._should_wrap()) { + this.__parent.add_new_line(); + var next = this.__parent.current_line; + next.set_indent(this.__wrap_point_indent_count, this.__wrap_point_alignment_count); + next.__items = this.__items.slice(this.__wrap_point_index); + this.__items = this.__items.slice(0, this.__wrap_point_index); + + next.__character_count += this.__character_count - this.__wrap_point_character_count; + this.__character_count = this.__wrap_point_character_count; + + if (next.__items[0] === " ") { + next.__items.splice(0, 1); + next.__character_count -= 1; + } + return true; + } + return false; +}; + +OutputLine.prototype.is_empty = function() { + return this.__items.length === 0; +}; + +OutputLine.prototype.last = function() { + if (!this.is_empty()) { + return this.__items[this.__items.length - 1]; + } else { + return null; + } +}; + +OutputLine.prototype.push = function(item) { + this.__items.push(item); + var last_newline_index = item.lastIndexOf('\n'); + if (last_newline_index !== -1) { + this.__character_count = item.length - last_newline_index; + } else { + this.__character_count += item.length; + } +}; + +OutputLine.prototype.pop = function() { + var item = null; + if (!this.is_empty()) { + item = this.__items.pop(); + this.__character_count -= item.length; + } + return item; +}; + + +OutputLine.prototype._remove_indent = function() { + if (this.__indent_count > 0) { + this.__indent_count -= 1; + this.__character_count -= this.__parent.indent_size; + } +}; + +OutputLine.prototype._remove_wrap_indent = function() { + if (this.__wrap_point_indent_count > 0) { + this.__wrap_point_indent_count -= 1; + } +}; +OutputLine.prototype.trim = function() { + while (this.last() === ' ') { + this.__items.pop(); + this.__character_count -= 1; + } +}; + +OutputLine.prototype.toString = function() { + var result = ''; + if (this.is_empty()) { + if (this.__parent.indent_empty_lines) { + result = this.__parent.get_indent_string(this.__indent_count); + } + } else { + result = this.__parent.get_indent_string(this.__indent_count, this.__alignment_count); + result += this.__items.join(''); + } + return result; +}; + +function IndentStringCache(options, baseIndentString) { + this.__cache = ['']; + this.__indent_size = options.indent_size; + this.__indent_string = options.indent_char; + if (!options.indent_with_tabs) { + this.__indent_string = new Array(options.indent_size + 1).join(options.indent_char); + } + + // Set to null to continue support for auto detection of base indent + baseIndentString = baseIndentString || ''; + if (options.indent_level > 0) { + baseIndentString = new Array(options.indent_level + 1).join(this.__indent_string); + } + + this.__base_string = baseIndentString; + this.__base_string_length = baseIndentString.length; +} + +IndentStringCache.prototype.get_indent_size = function(indent, column) { + var result = this.__base_string_length; + column = column || 0; + if (indent < 0) { + result = 0; + } + result += indent * this.__indent_size; + result += column; + return result; +}; + +IndentStringCache.prototype.get_indent_string = function(indent_level, column) { + var result = this.__base_string; + column = column || 0; + if (indent_level < 0) { + indent_level = 0; + result = ''; + } + column += indent_level * this.__indent_size; + this.__ensure_cache(column); + result += this.__cache[column]; + return result; +}; + +IndentStringCache.prototype.__ensure_cache = function(column) { + while (column >= this.__cache.length) { + this.__add_column(); + } +}; + +IndentStringCache.prototype.__add_column = function() { + var column = this.__cache.length; + var indent = 0; + var result = ''; + if (this.__indent_size && column >= this.__indent_size) { + indent = Math.floor(column / this.__indent_size); + column -= indent * this.__indent_size; + result = new Array(indent + 1).join(this.__indent_string); + } + if (column) { + result += new Array(column + 1).join(' '); + } + + this.__cache.push(result); +}; + +function Output(options, baseIndentString) { + this.__indent_cache = new IndentStringCache(options, baseIndentString); + this.raw = false; + this._end_with_newline = options.end_with_newline; + this.indent_size = options.indent_size; + this.wrap_line_length = options.wrap_line_length; + this.indent_empty_lines = options.indent_empty_lines; + this.__lines = []; + this.previous_line = null; + this.current_line = null; + this.next_line = new OutputLine(this); + this.space_before_token = false; + this.non_breaking_space = false; + this.previous_token_wrapped = false; + // initialize + this.__add_outputline(); +} + +Output.prototype.__add_outputline = function() { + this.previous_line = this.current_line; + this.current_line = this.next_line.clone_empty(); + this.__lines.push(this.current_line); +}; + +Output.prototype.get_line_number = function() { + return this.__lines.length; +}; + +Output.prototype.get_indent_string = function(indent, column) { + return this.__indent_cache.get_indent_string(indent, column); +}; + +Output.prototype.get_indent_size = function(indent, column) { + return this.__indent_cache.get_indent_size(indent, column); +}; + +Output.prototype.is_empty = function() { + return !this.previous_line && this.current_line.is_empty(); +}; + +Output.prototype.add_new_line = function(force_newline) { + // never newline at the start of file + // otherwise, newline only if we didn't just add one or we're forced + if (this.is_empty() || + (!force_newline && this.just_added_newline())) { + return false; + } + + // if raw output is enabled, don't print additional newlines, + // but still return True as though you had + if (!this.raw) { + this.__add_outputline(); + } + return true; +}; + +Output.prototype.get_code = function(eol) { + this.trim(true); + + // handle some edge cases where the last tokens + // has text that ends with newline(s) + var last_item = this.current_line.pop(); + if (last_item) { + if (last_item[last_item.length - 1] === '\n') { + last_item = last_item.replace(/\n+$/g, ''); + } + this.current_line.push(last_item); + } + + if (this._end_with_newline) { + this.__add_outputline(); + } + + var sweet_code = this.__lines.join('\n'); + + if (eol !== '\n') { + sweet_code = sweet_code.replace(/[\n]/g, eol); + } + return sweet_code; +}; + +Output.prototype.set_wrap_point = function() { + this.current_line._set_wrap_point(); +}; + +Output.prototype.set_indent = function(indent, alignment) { + indent = indent || 0; + alignment = alignment || 0; + + // Next line stores alignment values + this.next_line.set_indent(indent, alignment); + + // Never indent your first output indent at the start of the file + if (this.__lines.length > 1) { + this.current_line.set_indent(indent, alignment); + return true; + } + + this.current_line.set_indent(); + return false; +}; + +Output.prototype.add_raw_token = function(token) { + for (var x = 0; x < token.newlines; x++) { + this.__add_outputline(); + } + this.current_line.set_indent(-1); + this.current_line.push(token.whitespace_before); + this.current_line.push(token.text); + this.space_before_token = false; + this.non_breaking_space = false; + this.previous_token_wrapped = false; +}; + +Output.prototype.add_token = function(printable_token) { + this.__add_space_before_token(); + this.current_line.push(printable_token); + this.space_before_token = false; + this.non_breaking_space = false; + this.previous_token_wrapped = this.current_line._allow_wrap(); +}; + +Output.prototype.__add_space_before_token = function() { + if (this.space_before_token && !this.just_added_newline()) { + if (!this.non_breaking_space) { + this.set_wrap_point(); + } + this.current_line.push(' '); + } +}; + +Output.prototype.remove_indent = function(index) { + var output_length = this.__lines.length; + while (index < output_length) { + this.__lines[index]._remove_indent(); + index++; + } + this.current_line._remove_wrap_indent(); +}; + +Output.prototype.trim = function(eat_newlines) { + eat_newlines = (eat_newlines === undefined) ? false : eat_newlines; + + this.current_line.trim(); + + while (eat_newlines && this.__lines.length > 1 && + this.current_line.is_empty()) { + this.__lines.pop(); + this.current_line = this.__lines[this.__lines.length - 1]; + this.current_line.trim(); + } + + this.previous_line = this.__lines.length > 1 ? + this.__lines[this.__lines.length - 2] : null; +}; + +Output.prototype.just_added_newline = function() { + return this.current_line.is_empty(); +}; + +Output.prototype.just_added_blankline = function() { + return this.is_empty() || + (this.current_line.is_empty() && this.previous_line.is_empty()); +}; + +Output.prototype.ensure_empty_line_above = function(starts_with, ends_with) { + var index = this.__lines.length - 2; + while (index >= 0) { + var potentialEmptyLine = this.__lines[index]; + if (potentialEmptyLine.is_empty()) { + break; + } else if (potentialEmptyLine.item(0).indexOf(starts_with) !== 0 && + potentialEmptyLine.item(-1) !== ends_with) { + this.__lines.splice(index + 1, 0, new OutputLine(this)); + this.previous_line = this.__lines[this.__lines.length - 2]; + break; + } + index--; + } +}; + +module.exports.Output = Output; + + +/***/ }), +/* 3 */ +/***/ (function(module) { + +/*jshint node:true */ +/* + + The MIT License (MIT) + + Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors. + + 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. +*/ + + + +function Token(type, text, newlines, whitespace_before) { + this.type = type; + this.text = text; + + // comments_before are + // comments that have a new line before them + // and may or may not have a newline after + // this is a set of comments before + this.comments_before = null; /* inline comment*/ + + + // this.comments_after = new TokenStream(); // no new line before and newline after + this.newlines = newlines || 0; + this.whitespace_before = whitespace_before || ''; + this.parent = null; + this.next = null; + this.previous = null; + this.opened = null; + this.closed = null; + this.directives = null; +} + + +module.exports.Token = Token; + + +/***/ }), +/* 4 */, +/* 5 */, +/* 6 */ +/***/ (function(module) { + +/*jshint node:true */ +/* + + The MIT License (MIT) + + Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors. + + 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. +*/ + + + +function Options(options, merge_child_field) { + this.raw_options = _mergeOpts(options, merge_child_field); + + // Support passing the source text back with no change + this.disabled = this._get_boolean('disabled'); + + this.eol = this._get_characters('eol', 'auto'); + this.end_with_newline = this._get_boolean('end_with_newline'); + this.indent_size = this._get_number('indent_size', 4); + this.indent_char = this._get_characters('indent_char', ' '); + this.indent_level = this._get_number('indent_level'); + + this.preserve_newlines = this._get_boolean('preserve_newlines', true); + this.max_preserve_newlines = this._get_number('max_preserve_newlines', 32786); + if (!this.preserve_newlines) { + this.max_preserve_newlines = 0; + } + + this.indent_with_tabs = this._get_boolean('indent_with_tabs', this.indent_char === '\t'); + if (this.indent_with_tabs) { + this.indent_char = '\t'; + + // indent_size behavior changed after 1.8.6 + // It used to be that indent_size would be + // set to 1 for indent_with_tabs. That is no longer needed and + // actually doesn't make sense - why not use spaces? Further, + // that might produce unexpected behavior - tabs being used + // for single-column alignment. So, when indent_with_tabs is true + // and indent_size is 1, reset indent_size to 4. + if (this.indent_size === 1) { + this.indent_size = 4; + } + } + + // Backwards compat with 1.3.x + this.wrap_line_length = this._get_number('wrap_line_length', this._get_number('max_char')); + + this.indent_empty_lines = this._get_boolean('indent_empty_lines'); + + // valid templating languages ['django', 'erb', 'handlebars', 'php', 'smarty'] + // For now, 'auto' = all off for javascript, all on for html (and inline javascript). + // other values ignored + this.templating = this._get_selection_list('templating', ['auto', 'none', 'django', 'erb', 'handlebars', 'php', 'smarty'], ['auto']); +} + +Options.prototype._get_array = function(name, default_value) { + var option_value = this.raw_options[name]; + var result = default_value || []; + if (typeof option_value === 'object') { + if (option_value !== null && typeof option_value.concat === 'function') { + result = option_value.concat(); + } + } else if (typeof option_value === 'string') { + result = option_value.split(/[^a-zA-Z0-9_\/\-]+/); + } + return result; +}; + +Options.prototype._get_boolean = function(name, default_value) { + var option_value = this.raw_options[name]; + var result = option_value === undefined ? !!default_value : !!option_value; + return result; +}; + +Options.prototype._get_characters = function(name, default_value) { + var option_value = this.raw_options[name]; + var result = default_value || ''; + if (typeof option_value === 'string') { + result = option_value.replace(/\\r/, '\r').replace(/\\n/, '\n').replace(/\\t/, '\t'); + } + return result; +}; + +Options.prototype._get_number = function(name, default_value) { + var option_value = this.raw_options[name]; + default_value = parseInt(default_value, 10); + if (isNaN(default_value)) { + default_value = 0; + } + var result = parseInt(option_value, 10); + if (isNaN(result)) { + result = default_value; + } + return result; +}; + +Options.prototype._get_selection = function(name, selection_list, default_value) { + var result = this._get_selection_list(name, selection_list, default_value); + if (result.length !== 1) { + throw new Error( + "Invalid Option Value: The option '" + name + "' can only be one of the following values:\n" + + selection_list + "\nYou passed in: '" + this.raw_options[name] + "'"); + } + + return result[0]; +}; + + +Options.prototype._get_selection_list = function(name, selection_list, default_value) { + if (!selection_list || selection_list.length === 0) { + throw new Error("Selection list cannot be empty."); + } + + default_value = default_value || [selection_list[0]]; + if (!this._is_valid_selection(default_value, selection_list)) { + throw new Error("Invalid Default Value!"); + } + + var result = this._get_array(name, default_value); + if (!this._is_valid_selection(result, selection_list)) { + throw new Error( + "Invalid Option Value: The option '" + name + "' can contain only the following values:\n" + + selection_list + "\nYou passed in: '" + this.raw_options[name] + "'"); + } + + return result; +}; + +Options.prototype._is_valid_selection = function(result, selection_list) { + return result.length && selection_list.length && + !result.some(function(item) { return selection_list.indexOf(item) === -1; }); +}; + + +// merges child options up with the parent options object +// Example: obj = {a: 1, b: {a: 2}} +// mergeOpts(obj, 'b') +// +// Returns: {a: 2} +function _mergeOpts(allOptions, childFieldName) { + var finalOpts = {}; + allOptions = _normalizeOpts(allOptions); + var name; + + for (name in allOptions) { + if (name !== childFieldName) { + finalOpts[name] = allOptions[name]; + } + } + + //merge in the per type settings for the childFieldName + if (childFieldName && allOptions[childFieldName]) { + for (name in allOptions[childFieldName]) { + finalOpts[name] = allOptions[childFieldName][name]; + } + } + return finalOpts; +} + +function _normalizeOpts(options) { + var convertedOpts = {}; + var key; + + for (key in options) { + var newKey = key.replace(/-/g, "_"); + convertedOpts[newKey] = options[key]; + } + return convertedOpts; +} + +module.exports.Options = Options; +module.exports.normalizeOpts = _normalizeOpts; +module.exports.mergeOpts = _mergeOpts; + + +/***/ }), +/* 7 */, +/* 8 */ +/***/ (function(module) { + +/*jshint node:true */ +/* + + The MIT License (MIT) + + Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors. + + 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 regexp_has_sticky = RegExp.prototype.hasOwnProperty('sticky'); + +function InputScanner(input_string) { + this.__input = input_string || ''; + this.__input_length = this.__input.length; + this.__position = 0; +} + +InputScanner.prototype.restart = function() { + this.__position = 0; +}; + +InputScanner.prototype.back = function() { + if (this.__position > 0) { + this.__position -= 1; + } +}; + +InputScanner.prototype.hasNext = function() { + return this.__position < this.__input_length; +}; + +InputScanner.prototype.next = function() { + var val = null; + if (this.hasNext()) { + val = this.__input.charAt(this.__position); + this.__position += 1; + } + return val; +}; + +InputScanner.prototype.peek = function(index) { + var val = null; + index = index || 0; + index += this.__position; + if (index >= 0 && index < this.__input_length) { + val = this.__input.charAt(index); + } + return val; +}; + +// This is a JavaScript only helper function (not in python) +// Javascript doesn't have a match method +// and not all implementation support "sticky" flag. +// If they do not support sticky then both this.match() and this.test() method +// must get the match and check the index of the match. +// If sticky is supported and set, this method will use it. +// Otherwise it will check that global is set, and fall back to the slower method. +InputScanner.prototype.__match = function(pattern, index) { + pattern.lastIndex = index; + var pattern_match = pattern.exec(this.__input); + + if (pattern_match && !(regexp_has_sticky && pattern.sticky)) { + if (pattern_match.index !== index) { + pattern_match = null; + } + } + + return pattern_match; +}; + +InputScanner.prototype.test = function(pattern, index) { + index = index || 0; + index += this.__position; + + if (index >= 0 && index < this.__input_length) { + return !!this.__match(pattern, index); + } else { + return false; + } +}; + +InputScanner.prototype.testChar = function(pattern, index) { + // test one character regex match + var val = this.peek(index); + pattern.lastIndex = 0; + return val !== null && pattern.test(val); +}; + +InputScanner.prototype.match = function(pattern) { + var pattern_match = this.__match(pattern, this.__position); + if (pattern_match) { + this.__position += pattern_match[0].length; + } else { + pattern_match = null; + } + return pattern_match; +}; + +InputScanner.prototype.read = function(starting_pattern, until_pattern, until_after) { + var val = ''; + var match; + if (starting_pattern) { + match = this.match(starting_pattern); + if (match) { + val += match[0]; + } + } + if (until_pattern && (match || !starting_pattern)) { + val += this.readUntil(until_pattern, until_after); + } + return val; +}; + +InputScanner.prototype.readUntil = function(pattern, until_after) { + var val = ''; + var match_index = this.__position; + pattern.lastIndex = this.__position; + var pattern_match = pattern.exec(this.__input); + if (pattern_match) { + match_index = pattern_match.index; + if (until_after) { + match_index += pattern_match[0].length; + } + } else { + match_index = this.__input_length; + } + + val = this.__input.substring(this.__position, match_index); + this.__position = match_index; + return val; +}; + +InputScanner.prototype.readUntilAfter = function(pattern) { + return this.readUntil(pattern, true); +}; + +InputScanner.prototype.get_regexp = function(pattern, match_from) { + var result = null; + var flags = 'g'; + if (match_from && regexp_has_sticky) { + flags = 'y'; + } + // strings are converted to regexp + if (typeof pattern === "string" && pattern !== '') { + // result = new RegExp(pattern.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'), flags); + result = new RegExp(pattern, flags); + } else if (pattern) { + result = new RegExp(pattern.source, flags); + } + return result; +}; + +InputScanner.prototype.get_literal_regexp = function(literal_string) { + return RegExp(literal_string.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&')); +}; + +/* css beautifier legacy helpers */ +InputScanner.prototype.peekUntilAfter = function(pattern) { + var start = this.__position; + var val = this.readUntilAfter(pattern); + this.__position = start; + return val; +}; + +InputScanner.prototype.lookBack = function(testVal) { + var start = this.__position - 1; + return start >= testVal.length && this.__input.substring(start - testVal.length, start) + .toLowerCase() === testVal; +}; + +module.exports.InputScanner = InputScanner; + + +/***/ }), +/* 9 */ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +/*jshint node:true */ +/* + + The MIT License (MIT) + + Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors. + + 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 InputScanner = (__webpack_require__(8).InputScanner); +var Token = (__webpack_require__(3).Token); +var TokenStream = (__webpack_require__(10).TokenStream); +var WhitespacePattern = (__webpack_require__(11).WhitespacePattern); + +var TOKEN = { + START: 'TK_START', + RAW: 'TK_RAW', + EOF: 'TK_EOF' +}; + +var Tokenizer = function(input_string, options) { + this._input = new InputScanner(input_string); + this._options = options || {}; + this.__tokens = null; + + this._patterns = {}; + this._patterns.whitespace = new WhitespacePattern(this._input); +}; + +Tokenizer.prototype.tokenize = function() { + this._input.restart(); + this.__tokens = new TokenStream(); + + this._reset(); + + var current; + var previous = new Token(TOKEN.START, ''); + var open_token = null; + var open_stack = []; + var comments = new TokenStream(); + + while (previous.type !== TOKEN.EOF) { + current = this._get_next_token(previous, open_token); + while (this._is_comment(current)) { + comments.add(current); + current = this._get_next_token(previous, open_token); + } + + if (!comments.isEmpty()) { + current.comments_before = comments; + comments = new TokenStream(); + } + + current.parent = open_token; + + if (this._is_opening(current)) { + open_stack.push(open_token); + open_token = current; + } else if (open_token && this._is_closing(current, open_token)) { + current.opened = open_token; + open_token.closed = current; + open_token = open_stack.pop(); + current.parent = open_token; + } + + current.previous = previous; + previous.next = current; + + this.__tokens.add(current); + previous = current; + } + + return this.__tokens; +}; + + +Tokenizer.prototype._is_first_token = function() { + return this.__tokens.isEmpty(); +}; + +Tokenizer.prototype._reset = function() {}; + +Tokenizer.prototype._get_next_token = function(previous_token, open_token) { // jshint unused:false + this._readWhitespace(); + var resulting_string = this._input.read(/.+/g); + if (resulting_string) { + return this._create_token(TOKEN.RAW, resulting_string); + } else { + return this._create_token(TOKEN.EOF, ''); + } +}; + +Tokenizer.prototype._is_comment = function(current_token) { // jshint unused:false + return false; +}; + +Tokenizer.prototype._is_opening = function(current_token) { // jshint unused:false + return false; +}; + +Tokenizer.prototype._is_closing = function(current_token, open_token) { // jshint unused:false + return false; +}; + +Tokenizer.prototype._create_token = function(type, text) { + var token = new Token(type, text, + this._patterns.whitespace.newline_count, + this._patterns.whitespace.whitespace_before_token); + return token; +}; + +Tokenizer.prototype._readWhitespace = function() { + return this._patterns.whitespace.read(); +}; + + + +module.exports.Tokenizer = Tokenizer; +module.exports.TOKEN = TOKEN; + + +/***/ }), +/* 10 */ +/***/ (function(module) { + +/*jshint node:true */ +/* + + The MIT License (MIT) + + Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors. + + 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. +*/ + + + +function TokenStream(parent_token) { + // private + this.__tokens = []; + this.__tokens_length = this.__tokens.length; + this.__position = 0; + this.__parent_token = parent_token; +} + +TokenStream.prototype.restart = function() { + this.__position = 0; +}; + +TokenStream.prototype.isEmpty = function() { + return this.__tokens_length === 0; +}; + +TokenStream.prototype.hasNext = function() { + return this.__position < this.__tokens_length; +}; + +TokenStream.prototype.next = function() { + var val = null; + if (this.hasNext()) { + val = this.__tokens[this.__position]; + this.__position += 1; + } + return val; +}; + +TokenStream.prototype.peek = function(index) { + var val = null; + index = index || 0; + index += this.__position; + if (index >= 0 && index < this.__tokens_length) { + val = this.__tokens[index]; + } + return val; +}; + +TokenStream.prototype.add = function(token) { + if (this.__parent_token) { + token.parent = this.__parent_token; + } + this.__tokens.push(token); + this.__tokens_length += 1; +}; + +module.exports.TokenStream = TokenStream; + + +/***/ }), +/* 11 */ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +/*jshint node:true */ +/* + + The MIT License (MIT) + + Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors. + + 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 Pattern = (__webpack_require__(12).Pattern); + +function WhitespacePattern(input_scanner, parent) { + Pattern.call(this, input_scanner, parent); + if (parent) { + this._line_regexp = this._input.get_regexp(parent._line_regexp); + } else { + this.__set_whitespace_patterns('', ''); + } + + this.newline_count = 0; + this.whitespace_before_token = ''; +} +WhitespacePattern.prototype = new Pattern(); + +WhitespacePattern.prototype.__set_whitespace_patterns = function(whitespace_chars, newline_chars) { + whitespace_chars += '\\t '; + newline_chars += '\\n\\r'; + + this._match_pattern = this._input.get_regexp( + '[' + whitespace_chars + newline_chars + ']+', true); + this._newline_regexp = this._input.get_regexp( + '\\r\\n|[' + newline_chars + ']'); +}; + +WhitespacePattern.prototype.read = function() { + this.newline_count = 0; + this.whitespace_before_token = ''; + + var resulting_string = this._input.read(this._match_pattern); + if (resulting_string === ' ') { + this.whitespace_before_token = ' '; + } else if (resulting_string) { + var matches = this.__split(this._newline_regexp, resulting_string); + this.newline_count = matches.length - 1; + this.whitespace_before_token = matches[this.newline_count]; + } + + return resulting_string; +}; + +WhitespacePattern.prototype.matching = function(whitespace_chars, newline_chars) { + var result = this._create(); + result.__set_whitespace_patterns(whitespace_chars, newline_chars); + result._update(); + return result; +}; + +WhitespacePattern.prototype._create = function() { + return new WhitespacePattern(this._input, this); +}; + +WhitespacePattern.prototype.__split = function(regexp, input_string) { + regexp.lastIndex = 0; + var start_index = 0; + var result = []; + var next_match = regexp.exec(input_string); + while (next_match) { + result.push(input_string.substring(start_index, next_match.index)); + start_index = next_match.index + next_match[0].length; + next_match = regexp.exec(input_string); + } + + if (start_index < input_string.length) { + result.push(input_string.substring(start_index, input_string.length)); + } else { + result.push(''); + } + + return result; +}; + + + +module.exports.WhitespacePattern = WhitespacePattern; + + +/***/ }), +/* 12 */ +/***/ (function(module) { + +/*jshint node:true */ +/* + + The MIT License (MIT) + + Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors. + + 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. +*/ + + + +function Pattern(input_scanner, parent) { + this._input = input_scanner; + this._starting_pattern = null; + this._match_pattern = null; + this._until_pattern = null; + this._until_after = false; + + if (parent) { + this._starting_pattern = this._input.get_regexp(parent._starting_pattern, true); + this._match_pattern = this._input.get_regexp(parent._match_pattern, true); + this._until_pattern = this._input.get_regexp(parent._until_pattern); + this._until_after = parent._until_after; + } +} + +Pattern.prototype.read = function() { + var result = this._input.read(this._starting_pattern); + if (!this._starting_pattern || result) { + result += this._input.read(this._match_pattern, this._until_pattern, this._until_after); + } + return result; +}; + +Pattern.prototype.read_match = function() { + return this._input.match(this._match_pattern); +}; + +Pattern.prototype.until_after = function(pattern) { + var result = this._create(); + result._until_after = true; + result._until_pattern = this._input.get_regexp(pattern); + result._update(); + return result; +}; + +Pattern.prototype.until = function(pattern) { + var result = this._create(); + result._until_after = false; + result._until_pattern = this._input.get_regexp(pattern); + result._update(); + return result; +}; + +Pattern.prototype.starting_with = function(pattern) { + var result = this._create(); + result._starting_pattern = this._input.get_regexp(pattern, true); + result._update(); + return result; +}; + +Pattern.prototype.matching = function(pattern) { + var result = this._create(); + result._match_pattern = this._input.get_regexp(pattern, true); + result._update(); + return result; +}; + +Pattern.prototype._create = function() { + return new Pattern(this._input, this); +}; + +Pattern.prototype._update = function() {}; + +module.exports.Pattern = Pattern; + + +/***/ }), +/* 13 */ +/***/ (function(module) { + +/*jshint node:true */ +/* + + The MIT License (MIT) + + Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors. + + 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. +*/ + + + +function Directives(start_block_pattern, end_block_pattern) { + start_block_pattern = typeof start_block_pattern === 'string' ? start_block_pattern : start_block_pattern.source; + end_block_pattern = typeof end_block_pattern === 'string' ? end_block_pattern : end_block_pattern.source; + this.__directives_block_pattern = new RegExp(start_block_pattern + / beautify( \w+[:]\w+)+ /.source + end_block_pattern, 'g'); + this.__directive_pattern = / (\w+)[:](\w+)/g; + + this.__directives_end_ignore_pattern = new RegExp(start_block_pattern + /\sbeautify\signore:end\s/.source + end_block_pattern, 'g'); +} + +Directives.prototype.get_directives = function(text) { + if (!text.match(this.__directives_block_pattern)) { + return null; + } + + var directives = {}; + this.__directive_pattern.lastIndex = 0; + var directive_match = this.__directive_pattern.exec(text); + + while (directive_match) { + directives[directive_match[1]] = directive_match[2]; + directive_match = this.__directive_pattern.exec(text); + } + + return directives; +}; + +Directives.prototype.readIgnored = function(input) { + return input.readUntilAfter(this.__directives_end_ignore_pattern); +}; + + +module.exports.Directives = Directives; + + +/***/ }), +/* 14 */ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +/*jshint node:true */ +/* + + The MIT License (MIT) + + Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors. + + 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 Pattern = (__webpack_require__(12).Pattern); + + +var template_names = { + django: false, + erb: false, + handlebars: false, + php: false, + smarty: false +}; + +// This lets templates appear anywhere we would do a readUntil +// The cost is higher but it is pay to play. +function TemplatablePattern(input_scanner, parent) { + Pattern.call(this, input_scanner, parent); + this.__template_pattern = null; + this._disabled = Object.assign({}, template_names); + this._excluded = Object.assign({}, template_names); + + if (parent) { + this.__template_pattern = this._input.get_regexp(parent.__template_pattern); + this._excluded = Object.assign(this._excluded, parent._excluded); + this._disabled = Object.assign(this._disabled, parent._disabled); + } + var pattern = new Pattern(input_scanner); + this.__patterns = { + handlebars_comment: pattern.starting_with(/{{!--/).until_after(/--}}/), + handlebars_unescaped: pattern.starting_with(/{{{/).until_after(/}}}/), + handlebars: pattern.starting_with(/{{/).until_after(/}}/), + php: pattern.starting_with(/<\?(?:[= ]|php)/).until_after(/\?>/), + erb: pattern.starting_with(/<%[^%]/).until_after(/[^%]%>/), + // django coflicts with handlebars a bit. + django: pattern.starting_with(/{%/).until_after(/%}/), + django_value: pattern.starting_with(/{{/).until_after(/}}/), + django_comment: pattern.starting_with(/{#/).until_after(/#}/), + smarty: pattern.starting_with(/{(?=[^}{\s\n])/).until_after(/[^\s\n]}/), + smarty_comment: pattern.starting_with(/{\*/).until_after(/\*}/), + smarty_literal: pattern.starting_with(/{literal}/).until_after(/{\/literal}/) + }; +} +TemplatablePattern.prototype = new Pattern(); + +TemplatablePattern.prototype._create = function() { + return new TemplatablePattern(this._input, this); +}; + +TemplatablePattern.prototype._update = function() { + this.__set_templated_pattern(); +}; + +TemplatablePattern.prototype.disable = function(language) { + var result = this._create(); + result._disabled[language] = true; + result._update(); + return result; +}; + +TemplatablePattern.prototype.read_options = function(options) { + var result = this._create(); + for (var language in template_names) { + result._disabled[language] = options.templating.indexOf(language) === -1; + } + result._update(); + return result; +}; + +TemplatablePattern.prototype.exclude = function(language) { + var result = this._create(); + result._excluded[language] = true; + result._update(); + return result; +}; + +TemplatablePattern.prototype.read = function() { + var result = ''; + if (this._match_pattern) { + result = this._input.read(this._starting_pattern); + } else { + result = this._input.read(this._starting_pattern, this.__template_pattern); + } + var next = this._read_template(); + while (next) { + if (this._match_pattern) { + next += this._input.read(this._match_pattern); + } else { + next += this._input.readUntil(this.__template_pattern); + } + result += next; + next = this._read_template(); + } + + if (this._until_after) { + result += this._input.readUntilAfter(this._until_pattern); + } + return result; +}; + +TemplatablePattern.prototype.__set_templated_pattern = function() { + var items = []; + + if (!this._disabled.php) { + items.push(this.__patterns.php._starting_pattern.source); + } + if (!this._disabled.handlebars) { + items.push(this.__patterns.handlebars._starting_pattern.source); + } + if (!this._disabled.erb) { + items.push(this.__patterns.erb._starting_pattern.source); + } + if (!this._disabled.django) { + items.push(this.__patterns.django._starting_pattern.source); + // The starting pattern for django is more complex because it has different + // patterns for value, comment, and other sections + items.push(this.__patterns.django_value._starting_pattern.source); + items.push(this.__patterns.django_comment._starting_pattern.source); + } + if (!this._disabled.smarty) { + items.push(this.__patterns.smarty._starting_pattern.source); + } + + if (this._until_pattern) { + items.push(this._until_pattern.source); + } + this.__template_pattern = this._input.get_regexp('(?:' + items.join('|') + ')'); +}; + +TemplatablePattern.prototype._read_template = function() { + var resulting_string = ''; + var c = this._input.peek(); + if (c === '<') { + var peek1 = this._input.peek(1); + //if we're in a comment, do something special + // We treat all comments as literals, even more than preformatted tags + // we just look for the appropriate close tag + if (!this._disabled.php && !this._excluded.php && peek1 === '?') { + resulting_string = resulting_string || + this.__patterns.php.read(); + } + if (!this._disabled.erb && !this._excluded.erb && peek1 === '%') { + resulting_string = resulting_string || + this.__patterns.erb.read(); + } + } else if (c === '{') { + if (!this._disabled.handlebars && !this._excluded.handlebars) { + resulting_string = resulting_string || + this.__patterns.handlebars_comment.read(); + resulting_string = resulting_string || + this.__patterns.handlebars_unescaped.read(); + resulting_string = resulting_string || + this.__patterns.handlebars.read(); + } + if (!this._disabled.django) { + // django coflicts with handlebars a bit. + if (!this._excluded.django && !this._excluded.handlebars) { + resulting_string = resulting_string || + this.__patterns.django_value.read(); + } + if (!this._excluded.django) { + resulting_string = resulting_string || + this.__patterns.django_comment.read(); + resulting_string = resulting_string || + this.__patterns.django.read(); + } + } + if (!this._disabled.smarty) { + // smarty cannot be enabled with django or handlebars enabled + if (this._disabled.django && this._disabled.handlebars) { + resulting_string = resulting_string || + this.__patterns.smarty_comment.read(); + resulting_string = resulting_string || + this.__patterns.smarty_literal.read(); + resulting_string = resulting_string || + this.__patterns.smarty.read(); + } + } + } + return resulting_string; +}; + + +module.exports.TemplatablePattern = TemplatablePattern; + + +/***/ }), +/* 15 */, +/* 16 */, +/* 17 */, +/* 18 */ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +/*jshint node:true */ +/* + + The MIT License (MIT) + + Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors. + + 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 Beautifier = (__webpack_require__(19).Beautifier), + Options = (__webpack_require__(20).Options); + +function style_html(html_source, options, js_beautify, css_beautify) { + var beautifier = new Beautifier(html_source, options, js_beautify, css_beautify); + return beautifier.beautify(); +} + +module.exports = style_html; +module.exports.defaultOptions = function() { + return new Options(); +}; + + +/***/ }), +/* 19 */ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +/*jshint node:true */ +/* + + The MIT License (MIT) + + Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors. + + 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 Options = (__webpack_require__(20).Options); +var Output = (__webpack_require__(2).Output); +var Tokenizer = (__webpack_require__(21).Tokenizer); +var TOKEN = (__webpack_require__(21).TOKEN); + +var lineBreak = /\r\n|[\r\n]/; +var allLineBreaks = /\r\n|[\r\n]/g; + +var Printer = function(options, base_indent_string) { //handles input/output and some other printing functions + + this.indent_level = 0; + this.alignment_size = 0; + this.max_preserve_newlines = options.max_preserve_newlines; + this.preserve_newlines = options.preserve_newlines; + + this._output = new Output(options, base_indent_string); + +}; + +Printer.prototype.current_line_has_match = function(pattern) { + return this._output.current_line.has_match(pattern); +}; + +Printer.prototype.set_space_before_token = function(value, non_breaking) { + this._output.space_before_token = value; + this._output.non_breaking_space = non_breaking; +}; + +Printer.prototype.set_wrap_point = function() { + this._output.set_indent(this.indent_level, this.alignment_size); + this._output.set_wrap_point(); +}; + + +Printer.prototype.add_raw_token = function(token) { + this._output.add_raw_token(token); +}; + +Printer.prototype.print_preserved_newlines = function(raw_token) { + var newlines = 0; + if (raw_token.type !== TOKEN.TEXT && raw_token.previous.type !== TOKEN.TEXT) { + newlines = raw_token.newlines ? 1 : 0; + } + + if (this.preserve_newlines) { + newlines = raw_token.newlines < this.max_preserve_newlines + 1 ? raw_token.newlines : this.max_preserve_newlines + 1; + } + for (var n = 0; n < newlines; n++) { + this.print_newline(n > 0); + } + + return newlines !== 0; +}; + +Printer.prototype.traverse_whitespace = function(raw_token) { + if (raw_token.whitespace_before || raw_token.newlines) { + if (!this.print_preserved_newlines(raw_token)) { + this._output.space_before_token = true; + } + return true; + } + return false; +}; + +Printer.prototype.previous_token_wrapped = function() { + return this._output.previous_token_wrapped; +}; + +Printer.prototype.print_newline = function(force) { + this._output.add_new_line(force); +}; + +Printer.prototype.print_token = function(token) { + if (token.text) { + this._output.set_indent(this.indent_level, this.alignment_size); + this._output.add_token(token.text); + } +}; + +Printer.prototype.indent = function() { + this.indent_level++; +}; + +Printer.prototype.get_full_indent = function(level) { + level = this.indent_level + (level || 0); + if (level < 1) { + return ''; + } + + return this._output.get_indent_string(level); +}; + +var get_type_attribute = function(start_token) { + var result = null; + var raw_token = start_token.next; + + // Search attributes for a type attribute + while (raw_token.type !== TOKEN.EOF && start_token.closed !== raw_token) { + if (raw_token.type === TOKEN.ATTRIBUTE && raw_token.text === 'type') { + if (raw_token.next && raw_token.next.type === TOKEN.EQUALS && + raw_token.next.next && raw_token.next.next.type === TOKEN.VALUE) { + result = raw_token.next.next.text; + } + break; + } + raw_token = raw_token.next; + } + + return result; +}; + +var get_custom_beautifier_name = function(tag_check, raw_token) { + var typeAttribute = null; + var result = null; + + if (!raw_token.closed) { + return null; + } + + if (tag_check === 'script') { + typeAttribute = 'text/javascript'; + } else if (tag_check === 'style') { + typeAttribute = 'text/css'; + } + + typeAttribute = get_type_attribute(raw_token) || typeAttribute; + + // For script and style tags that have a type attribute, only enable custom beautifiers for matching values + // For those without a type attribute use default; + if (typeAttribute.search('text/css') > -1) { + result = 'css'; + } else if (typeAttribute.search(/module|((text|application|dojo)\/(x-)?(javascript|ecmascript|jscript|livescript|(ld\+)?json|method|aspect))/) > -1) { + result = 'javascript'; + } else if (typeAttribute.search(/(text|application|dojo)\/(x-)?(html)/) > -1) { + result = 'html'; + } else if (typeAttribute.search(/test\/null/) > -1) { + // Test only mime-type for testing the beautifier when null is passed as beautifing function + result = 'null'; + } + + return result; +}; + +function in_array(what, arr) { + return arr.indexOf(what) !== -1; +} + +function TagFrame(parent, parser_token, indent_level) { + this.parent = parent || null; + this.tag = parser_token ? parser_token.tag_name : ''; + this.indent_level = indent_level || 0; + this.parser_token = parser_token || null; +} + +function TagStack(printer) { + this._printer = printer; + this._current_frame = null; +} + +TagStack.prototype.get_parser_token = function() { + return this._current_frame ? this._current_frame.parser_token : null; +}; + +TagStack.prototype.record_tag = function(parser_token) { //function to record a tag and its parent in this.tags Object + var new_frame = new TagFrame(this._current_frame, parser_token, this._printer.indent_level); + this._current_frame = new_frame; +}; + +TagStack.prototype._try_pop_frame = function(frame) { //function to retrieve the opening tag to the corresponding closer + var parser_token = null; + + if (frame) { + parser_token = frame.parser_token; + this._printer.indent_level = frame.indent_level; + this._current_frame = frame.parent; + } + + return parser_token; +}; + +TagStack.prototype._get_frame = function(tag_list, stop_list) { //function to retrieve the opening tag to the corresponding closer + var frame = this._current_frame; + + while (frame) { //till we reach '' (the initial value); + if (tag_list.indexOf(frame.tag) !== -1) { //if this is it use it + break; + } else if (stop_list && stop_list.indexOf(frame.tag) !== -1) { + frame = null; + break; + } + frame = frame.parent; + } + + return frame; +}; + +TagStack.prototype.try_pop = function(tag, stop_list) { //function to retrieve the opening tag to the corresponding closer + var frame = this._get_frame([tag], stop_list); + return this._try_pop_frame(frame); +}; + +TagStack.prototype.indent_to_tag = function(tag_list) { + var frame = this._get_frame(tag_list); + if (frame) { + this._printer.indent_level = frame.indent_level; + } +}; + +function Beautifier(source_text, options, js_beautify, css_beautify) { + //Wrapper function to invoke all the necessary constructors and deal with the output. + this._source_text = source_text || ''; + options = options || {}; + this._js_beautify = js_beautify; + this._css_beautify = css_beautify; + this._tag_stack = null; + + // Allow the setting of language/file-type specific options + // with inheritance of overall settings + var optionHtml = new Options(options, 'html'); + + this._options = optionHtml; + + this._is_wrap_attributes_force = this._options.wrap_attributes.substr(0, 'force'.length) === 'force'; + this._is_wrap_attributes_force_expand_multiline = (this._options.wrap_attributes === 'force-expand-multiline'); + this._is_wrap_attributes_force_aligned = (this._options.wrap_attributes === 'force-aligned'); + this._is_wrap_attributes_aligned_multiple = (this._options.wrap_attributes === 'aligned-multiple'); + this._is_wrap_attributes_preserve = this._options.wrap_attributes.substr(0, 'preserve'.length) === 'preserve'; + this._is_wrap_attributes_preserve_aligned = (this._options.wrap_attributes === 'preserve-aligned'); +} + +Beautifier.prototype.beautify = function() { + + // if disabled, return the input unchanged. + if (this._options.disabled) { + return this._source_text; + } + + var source_text = this._source_text; + var eol = this._options.eol; + if (this._options.eol === 'auto') { + eol = '\n'; + if (source_text && lineBreak.test(source_text)) { + eol = source_text.match(lineBreak)[0]; + } + } + + // HACK: newline parsing inconsistent. This brute force normalizes the input. + source_text = source_text.replace(allLineBreaks, '\n'); + + var baseIndentString = source_text.match(/^[\t ]*/)[0]; + + var last_token = { + text: '', + type: '' + }; + + var last_tag_token = new TagOpenParserToken(); + + var printer = new Printer(this._options, baseIndentString); + var tokens = new Tokenizer(source_text, this._options).tokenize(); + + this._tag_stack = new TagStack(printer); + + var parser_token = null; + var raw_token = tokens.next(); + while (raw_token.type !== TOKEN.EOF) { + + if (raw_token.type === TOKEN.TAG_OPEN || raw_token.type === TOKEN.COMMENT) { + parser_token = this._handle_tag_open(printer, raw_token, last_tag_token, last_token, tokens); + last_tag_token = parser_token; + } else if ((raw_token.type === TOKEN.ATTRIBUTE || raw_token.type === TOKEN.EQUALS || raw_token.type === TOKEN.VALUE) || + (raw_token.type === TOKEN.TEXT && !last_tag_token.tag_complete)) { + parser_token = this._handle_inside_tag(printer, raw_token, last_tag_token, last_token); + } else if (raw_token.type === TOKEN.TAG_CLOSE) { + parser_token = this._handle_tag_close(printer, raw_token, last_tag_token); + } else if (raw_token.type === TOKEN.TEXT) { + parser_token = this._handle_text(printer, raw_token, last_tag_token); + } else { + // This should never happen, but if it does. Print the raw token + printer.add_raw_token(raw_token); + } + + last_token = parser_token; + + raw_token = tokens.next(); + } + var sweet_code = printer._output.get_code(eol); + + return sweet_code; +}; + +Beautifier.prototype._handle_tag_close = function(printer, raw_token, last_tag_token) { + var parser_token = { + text: raw_token.text, + type: raw_token.type + }; + printer.alignment_size = 0; + last_tag_token.tag_complete = true; + + printer.set_space_before_token(raw_token.newlines || raw_token.whitespace_before !== '', true); + if (last_tag_token.is_unformatted) { + printer.add_raw_token(raw_token); + } else { + if (last_tag_token.tag_start_char === '<') { + printer.set_space_before_token(raw_token.text[0] === '/', true); // space before />, no space before > + if (this._is_wrap_attributes_force_expand_multiline && last_tag_token.has_wrapped_attrs) { + printer.print_newline(false); + } + } + printer.print_token(raw_token); + + } + + if (last_tag_token.indent_content && + !(last_tag_token.is_unformatted || last_tag_token.is_content_unformatted)) { + printer.indent(); + + // only indent once per opened tag + last_tag_token.indent_content = false; + } + + if (!last_tag_token.is_inline_element && + !(last_tag_token.is_unformatted || last_tag_token.is_content_unformatted)) { + printer.set_wrap_point(); + } + + return parser_token; +}; + +Beautifier.prototype._handle_inside_tag = function(printer, raw_token, last_tag_token, last_token) { + var wrapped = last_tag_token.has_wrapped_attrs; + var parser_token = { + text: raw_token.text, + type: raw_token.type + }; + + printer.set_space_before_token(raw_token.newlines || raw_token.whitespace_before !== '', true); + if (last_tag_token.is_unformatted) { + printer.add_raw_token(raw_token); + } else if (last_tag_token.tag_start_char === '{' && raw_token.type === TOKEN.TEXT) { + // For the insides of handlebars allow newlines or a single space between open and contents + if (printer.print_preserved_newlines(raw_token)) { + raw_token.newlines = 0; + printer.add_raw_token(raw_token); + } else { + printer.print_token(raw_token); + } + } else { + if (raw_token.type === TOKEN.ATTRIBUTE) { + printer.set_space_before_token(true); + } else if (raw_token.type === TOKEN.EQUALS) { //no space before = + printer.set_space_before_token(false); + } else if (raw_token.type === TOKEN.VALUE && raw_token.previous.type === TOKEN.EQUALS) { //no space before value + printer.set_space_before_token(false); + } + + if (raw_token.type === TOKEN.ATTRIBUTE && last_tag_token.tag_start_char === '<') { + if (this._is_wrap_attributes_preserve || this._is_wrap_attributes_preserve_aligned) { + printer.traverse_whitespace(raw_token); + wrapped = wrapped || raw_token.newlines !== 0; + } + + // Wrap for 'force' options, and if the number of attributes is at least that specified in 'wrap_attributes_min_attrs': + // 1. always wrap the second and beyond attributes + // 2. wrap the first attribute only if 'force-expand-multiline' is specified + if (this._is_wrap_attributes_force && + last_tag_token.attr_count >= this._options.wrap_attributes_min_attrs && + (last_token.type !== TOKEN.TAG_OPEN || // ie. second attribute and beyond + this._is_wrap_attributes_force_expand_multiline)) { + printer.print_newline(false); + wrapped = true; + } + } + printer.print_token(raw_token); + wrapped = wrapped || printer.previous_token_wrapped(); + last_tag_token.has_wrapped_attrs = wrapped; + } + return parser_token; +}; + +Beautifier.prototype._handle_text = function(printer, raw_token, last_tag_token) { + var parser_token = { + text: raw_token.text, + type: 'TK_CONTENT' + }; + if (last_tag_token.custom_beautifier_name) { //check if we need to format javascript + this._print_custom_beatifier_text(printer, raw_token, last_tag_token); + } else if (last_tag_token.is_unformatted || last_tag_token.is_content_unformatted) { + printer.add_raw_token(raw_token); + } else { + printer.traverse_whitespace(raw_token); + printer.print_token(raw_token); + } + return parser_token; +}; + +Beautifier.prototype._print_custom_beatifier_text = function(printer, raw_token, last_tag_token) { + var local = this; + if (raw_token.text !== '') { + + var text = raw_token.text, + _beautifier, + script_indent_level = 1, + pre = '', + post = ''; + if (last_tag_token.custom_beautifier_name === 'javascript' && typeof this._js_beautify === 'function') { + _beautifier = this._js_beautify; + } else if (last_tag_token.custom_beautifier_name === 'css' && typeof this._css_beautify === 'function') { + _beautifier = this._css_beautify; + } else if (last_tag_token.custom_beautifier_name === 'html') { + _beautifier = function(html_source, options) { + var beautifier = new Beautifier(html_source, options, local._js_beautify, local._css_beautify); + return beautifier.beautify(); + }; + } + + if (this._options.indent_scripts === "keep") { + script_indent_level = 0; + } else if (this._options.indent_scripts === "separate") { + script_indent_level = -printer.indent_level; + } + + var indentation = printer.get_full_indent(script_indent_level); + + // if there is at least one empty line at the end of this text, strip it + // we'll be adding one back after the text but before the containing tag. + text = text.replace(/\n[ \t]*$/, ''); + + // Handle the case where content is wrapped in a comment or cdata. + if (last_tag_token.custom_beautifier_name !== 'html' && + text[0] === '<' && text.match(/^(<!--|<!\[CDATA\[)/)) { + var matched = /^(<!--[^\n]*|<!\[CDATA\[)(\n?)([ \t\n]*)([\s\S]*)(-->|]]>)$/.exec(text); + + // if we start to wrap but don't finish, print raw + if (!matched) { + printer.add_raw_token(raw_token); + return; + } + + pre = indentation + matched[1] + '\n'; + text = matched[4]; + if (matched[5]) { + post = indentation + matched[5]; + } + + // if there is at least one empty line at the end of this text, strip it + // we'll be adding one back after the text but before the containing tag. + text = text.replace(/\n[ \t]*$/, ''); + + if (matched[2] || matched[3].indexOf('\n') !== -1) { + // if the first line of the non-comment text has spaces + // use that as the basis for indenting in null case. + matched = matched[3].match(/[ \t]+$/); + if (matched) { + raw_token.whitespace_before = matched[0]; + } + } + } + + if (text) { + if (_beautifier) { + + // call the Beautifier if avaliable + var Child_options = function() { + this.eol = '\n'; + }; + Child_options.prototype = this._options.raw_options; + var child_options = new Child_options(); + text = _beautifier(indentation + text, child_options); + } else { + // simply indent the string otherwise + var white = raw_token.whitespace_before; + if (white) { + text = text.replace(new RegExp('\n(' + white + ')?', 'g'), '\n'); + } + + text = indentation + text.replace(/\n/g, '\n' + indentation); + } + } + + if (pre) { + if (!text) { + text = pre + post; + } else { + text = pre + text + '\n' + post; + } + } + + printer.print_newline(false); + if (text) { + raw_token.text = text; + raw_token.whitespace_before = ''; + raw_token.newlines = 0; + printer.add_raw_token(raw_token); + printer.print_newline(true); + } + } +}; + +Beautifier.prototype._handle_tag_open = function(printer, raw_token, last_tag_token, last_token, tokens) { + var parser_token = this._get_tag_open_token(raw_token); + + if ((last_tag_token.is_unformatted || last_tag_token.is_content_unformatted) && + !last_tag_token.is_empty_element && + raw_token.type === TOKEN.TAG_OPEN && !parser_token.is_start_tag) { + // End element tags for unformatted or content_unformatted elements + // are printed raw to keep any newlines inside them exactly the same. + printer.add_raw_token(raw_token); + parser_token.start_tag_token = this._tag_stack.try_pop(parser_token.tag_name); + } else { + printer.traverse_whitespace(raw_token); + this._set_tag_position(printer, raw_token, parser_token, last_tag_token, last_token); + if (!parser_token.is_inline_element) { + printer.set_wrap_point(); + } + printer.print_token(raw_token); + } + + // count the number of attributes + if (parser_token.is_start_tag && this._is_wrap_attributes_force) { + var peek_index = 0; + var peek_token; + do { + peek_token = tokens.peek(peek_index); + if (peek_token.type === TOKEN.ATTRIBUTE) { + parser_token.attr_count += 1; + } + peek_index += 1; + } while (peek_token.type !== TOKEN.EOF && peek_token.type !== TOKEN.TAG_CLOSE); + } + + //indent attributes an auto, forced, aligned or forced-align line-wrap + if (this._is_wrap_attributes_force_aligned || this._is_wrap_attributes_aligned_multiple || this._is_wrap_attributes_preserve_aligned) { + parser_token.alignment_size = raw_token.text.length + 1; + } + + if (!parser_token.tag_complete && !parser_token.is_unformatted) { + printer.alignment_size = parser_token.alignment_size; + } + + return parser_token; +}; + +var TagOpenParserToken = function(parent, raw_token) { + this.parent = parent || null; + this.text = ''; + this.type = 'TK_TAG_OPEN'; + this.tag_name = ''; + this.is_inline_element = false; + this.is_unformatted = false; + this.is_content_unformatted = false; + this.is_empty_element = false; + this.is_start_tag = false; + this.is_end_tag = false; + this.indent_content = false; + this.multiline_content = false; + this.custom_beautifier_name = null; + this.start_tag_token = null; + this.attr_count = 0; + this.has_wrapped_attrs = false; + this.alignment_size = 0; + this.tag_complete = false; + this.tag_start_char = ''; + this.tag_check = ''; + + if (!raw_token) { + this.tag_complete = true; + } else { + var tag_check_match; + + this.tag_start_char = raw_token.text[0]; + this.text = raw_token.text; + + if (this.tag_start_char === '<') { + tag_check_match = raw_token.text.match(/^<([^\s>]*)/); + this.tag_check = tag_check_match ? tag_check_match[1] : ''; + } else { + tag_check_match = raw_token.text.match(/^{{~?(?:[\^]|#\*?)?([^\s}]+)/); + this.tag_check = tag_check_match ? tag_check_match[1] : ''; + + // handle "{{#> myPartial}}" or "{{~#> myPartial}}" + if ((raw_token.text.startsWith('{{#>') || raw_token.text.startsWith('{{~#>')) && this.tag_check[0] === '>') { + if (this.tag_check === '>' && raw_token.next !== null) { + this.tag_check = raw_token.next.text.split(' ')[0]; + } else { + this.tag_check = raw_token.text.split('>')[1]; + } + } + } + + this.tag_check = this.tag_check.toLowerCase(); + + if (raw_token.type === TOKEN.COMMENT) { + this.tag_complete = true; + } + + this.is_start_tag = this.tag_check.charAt(0) !== '/'; + this.tag_name = !this.is_start_tag ? this.tag_check.substr(1) : this.tag_check; + this.is_end_tag = !this.is_start_tag || + (raw_token.closed && raw_token.closed.text === '/>'); + + // if whitespace handler ~ included (i.e. {{~#if true}}), handlebars tags start at pos 3 not pos 2 + var handlebar_starts = 2; + if (this.tag_start_char === '{' && this.text.length >= 3) { + if (this.text.charAt(2) === '~') { + handlebar_starts = 3; + } + } + + // handlebars tags that don't start with # or ^ are single_tags, and so also start and end. + this.is_end_tag = this.is_end_tag || + (this.tag_start_char === '{' && (this.text.length < 3 || (/[^#\^]/.test(this.text.charAt(handlebar_starts))))); + } +}; + +Beautifier.prototype._get_tag_open_token = function(raw_token) { //function to get a full tag and parse its type + var parser_token = new TagOpenParserToken(this._tag_stack.get_parser_token(), raw_token); + + parser_token.alignment_size = this._options.wrap_attributes_indent_size; + + parser_token.is_end_tag = parser_token.is_end_tag || + in_array(parser_token.tag_check, this._options.void_elements); + + parser_token.is_empty_element = parser_token.tag_complete || + (parser_token.is_start_tag && parser_token.is_end_tag); + + parser_token.is_unformatted = !parser_token.tag_complete && in_array(parser_token.tag_check, this._options.unformatted); + parser_token.is_content_unformatted = !parser_token.is_empty_element && in_array(parser_token.tag_check, this._options.content_unformatted); + parser_token.is_inline_element = in_array(parser_token.tag_name, this._options.inline) || (this._options.inline_custom_elements && parser_token.tag_name.includes("-")) || parser_token.tag_start_char === '{'; + + return parser_token; +}; + +Beautifier.prototype._set_tag_position = function(printer, raw_token, parser_token, last_tag_token, last_token) { + + if (!parser_token.is_empty_element) { + if (parser_token.is_end_tag) { //this tag is a double tag so check for tag-ending + parser_token.start_tag_token = this._tag_stack.try_pop(parser_token.tag_name); //remove it and all ancestors + } else { // it's a start-tag + // check if this tag is starting an element that has optional end element + // and do an ending needed + if (this._do_optional_end_element(parser_token)) { + if (!parser_token.is_inline_element) { + printer.print_newline(false); + } + } + + this._tag_stack.record_tag(parser_token); //push it on the tag stack + + if ((parser_token.tag_name === 'script' || parser_token.tag_name === 'style') && + !(parser_token.is_unformatted || parser_token.is_content_unformatted)) { + parser_token.custom_beautifier_name = get_custom_beautifier_name(parser_token.tag_check, raw_token); + } + } + } + + if (in_array(parser_token.tag_check, this._options.extra_liners)) { //check if this double needs an extra line + printer.print_newline(false); + if (!printer._output.just_added_blankline()) { + printer.print_newline(true); + } + } + + if (parser_token.is_empty_element) { //if this tag name is a single tag type (either in the list or has a closing /) + + // if you hit an else case, reset the indent level if you are inside an: + // 'if', 'unless', or 'each' block. + if (parser_token.tag_start_char === '{' && parser_token.tag_check === 'else') { + this._tag_stack.indent_to_tag(['if', 'unless', 'each']); + parser_token.indent_content = true; + // Don't add a newline if opening {{#if}} tag is on the current line + var foundIfOnCurrentLine = printer.current_line_has_match(/{{#if/); + if (!foundIfOnCurrentLine) { + printer.print_newline(false); + } + } + + // Don't add a newline before elements that should remain where they are. + if (parser_token.tag_name === '!--' && last_token.type === TOKEN.TAG_CLOSE && + last_tag_token.is_end_tag && parser_token.text.indexOf('\n') === -1) ; else { + if (!(parser_token.is_inline_element || parser_token.is_unformatted)) { + printer.print_newline(false); + } + this._calcluate_parent_multiline(printer, parser_token); + } + } else if (parser_token.is_end_tag) { //this tag is a double tag so check for tag-ending + var do_end_expand = false; + + // deciding whether a block is multiline should not be this hard + do_end_expand = parser_token.start_tag_token && parser_token.start_tag_token.multiline_content; + do_end_expand = do_end_expand || (!parser_token.is_inline_element && + !(last_tag_token.is_inline_element || last_tag_token.is_unformatted) && + !(last_token.type === TOKEN.TAG_CLOSE && parser_token.start_tag_token === last_tag_token) && + last_token.type !== 'TK_CONTENT' + ); + + if (parser_token.is_content_unformatted || parser_token.is_unformatted) { + do_end_expand = false; + } + + if (do_end_expand) { + printer.print_newline(false); + } + } else { // it's a start-tag + parser_token.indent_content = !parser_token.custom_beautifier_name; + + if (parser_token.tag_start_char === '<') { + if (parser_token.tag_name === 'html') { + parser_token.indent_content = this._options.indent_inner_html; + } else if (parser_token.tag_name === 'head') { + parser_token.indent_content = this._options.indent_head_inner_html; + } else if (parser_token.tag_name === 'body') { + parser_token.indent_content = this._options.indent_body_inner_html; + } + } + + if (!(parser_token.is_inline_element || parser_token.is_unformatted) && + (last_token.type !== 'TK_CONTENT' || parser_token.is_content_unformatted)) { + printer.print_newline(false); + } + + this._calcluate_parent_multiline(printer, parser_token); + } +}; + +Beautifier.prototype._calcluate_parent_multiline = function(printer, parser_token) { + if (parser_token.parent && printer._output.just_added_newline() && + !((parser_token.is_inline_element || parser_token.is_unformatted) && parser_token.parent.is_inline_element)) { + parser_token.parent.multiline_content = true; + } +}; + +//To be used for <p> tag special case: +var p_closers = ['address', 'article', 'aside', 'blockquote', 'details', 'div', 'dl', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'header', 'hr', 'main', 'menu', 'nav', 'ol', 'p', 'pre', 'section', 'table', 'ul']; +var p_parent_excludes = ['a', 'audio', 'del', 'ins', 'map', 'noscript', 'video']; + +Beautifier.prototype._do_optional_end_element = function(parser_token) { + var result = null; + // NOTE: cases of "if there is no more content in the parent element" + // are handled automatically by the beautifier. + // It assumes parent or ancestor close tag closes all children. + // https://www.w3.org/TR/html5/syntax.html#optional-tags + if (parser_token.is_empty_element || !parser_token.is_start_tag || !parser_token.parent) { + return; + + } + + if (parser_token.tag_name === 'body') { + // A head element’s end tag may be omitted if the head element is not immediately followed by a space character or a comment. + result = result || this._tag_stack.try_pop('head'); + + //} else if (parser_token.tag_name === 'body') { + // DONE: A body element’s end tag may be omitted if the body element is not immediately followed by a comment. + + } else if (parser_token.tag_name === 'li') { + // An li element’s end tag may be omitted if the li element is immediately followed by another li element or if there is no more content in the parent element. + result = result || this._tag_stack.try_pop('li', ['ol', 'ul', 'menu']); + + } else if (parser_token.tag_name === 'dd' || parser_token.tag_name === 'dt') { + // A dd element’s end tag may be omitted if the dd element is immediately followed by another dd element or a dt element, or if there is no more content in the parent element. + // A dt element’s end tag may be omitted if the dt element is immediately followed by another dt element or a dd element. + result = result || this._tag_stack.try_pop('dt', ['dl']); + result = result || this._tag_stack.try_pop('dd', ['dl']); + + + } else if (parser_token.parent.tag_name === 'p' && p_closers.indexOf(parser_token.tag_name) !== -1) { + // IMPORTANT: this else-if works because p_closers has no overlap with any other element we look for in this method + // check for the parent element is an HTML element that is not an <a>, <audio>, <del>, <ins>, <map>, <noscript>, or <video> element, or an autonomous custom element. + // To do this right, this needs to be coded as an inclusion of the inverse of the exclusion above. + // But to start with (if we ignore "autonomous custom elements") the exclusion would be fine. + var p_parent = parser_token.parent.parent; + if (!p_parent || p_parent_excludes.indexOf(p_parent.tag_name) === -1) { + result = result || this._tag_stack.try_pop('p'); + } + } else if (parser_token.tag_name === 'rp' || parser_token.tag_name === 'rt') { + // An rt element’s end tag may be omitted if the rt element is immediately followed by an rt or rp element, or if there is no more content in the parent element. + // An rp element’s end tag may be omitted if the rp element is immediately followed by an rt or rp element, or if there is no more content in the parent element. + result = result || this._tag_stack.try_pop('rt', ['ruby', 'rtc']); + result = result || this._tag_stack.try_pop('rp', ['ruby', 'rtc']); + + } else if (parser_token.tag_name === 'optgroup') { + // An optgroup element’s end tag may be omitted if the optgroup element is immediately followed by another optgroup element, or if there is no more content in the parent element. + // An option element’s end tag may be omitted if the option element is immediately followed by another option element, or if it is immediately followed by an optgroup element, or if there is no more content in the parent element. + result = result || this._tag_stack.try_pop('optgroup', ['select']); + //result = result || this._tag_stack.try_pop('option', ['select']); + + } else if (parser_token.tag_name === 'option') { + // An option element’s end tag may be omitted if the option element is immediately followed by another option element, or if it is immediately followed by an optgroup element, or if there is no more content in the parent element. + result = result || this._tag_stack.try_pop('option', ['select', 'datalist', 'optgroup']); + + } else if (parser_token.tag_name === 'colgroup') { + // DONE: A colgroup element’s end tag may be omitted if the colgroup element is not immediately followed by a space character or a comment. + // A caption element's end tag may be ommitted if a colgroup, thead, tfoot, tbody, or tr element is started. + result = result || this._tag_stack.try_pop('caption', ['table']); + + } else if (parser_token.tag_name === 'thead') { + // A colgroup element's end tag may be ommitted if a thead, tfoot, tbody, or tr element is started. + // A caption element's end tag may be ommitted if a colgroup, thead, tfoot, tbody, or tr element is started. + result = result || this._tag_stack.try_pop('caption', ['table']); + result = result || this._tag_stack.try_pop('colgroup', ['table']); + + //} else if (parser_token.tag_name === 'caption') { + // DONE: A caption element’s end tag may be omitted if the caption element is not immediately followed by a space character or a comment. + + } else if (parser_token.tag_name === 'tbody' || parser_token.tag_name === 'tfoot') { + // A thead element’s end tag may be omitted if the thead element is immediately followed by a tbody or tfoot element. + // A tbody element’s end tag may be omitted if the tbody element is immediately followed by a tbody or tfoot element, or if there is no more content in the parent element. + // A colgroup element's end tag may be ommitted if a thead, tfoot, tbody, or tr element is started. + // A caption element's end tag may be ommitted if a colgroup, thead, tfoot, tbody, or tr element is started. + result = result || this._tag_stack.try_pop('caption', ['table']); + result = result || this._tag_stack.try_pop('colgroup', ['table']); + result = result || this._tag_stack.try_pop('thead', ['table']); + result = result || this._tag_stack.try_pop('tbody', ['table']); + + //} else if (parser_token.tag_name === 'tfoot') { + // DONE: A tfoot element’s end tag may be omitted if there is no more content in the parent element. + + } else if (parser_token.tag_name === 'tr') { + // A tr element’s end tag may be omitted if the tr element is immediately followed by another tr element, or if there is no more content in the parent element. + // A colgroup element's end tag may be ommitted if a thead, tfoot, tbody, or tr element is started. + // A caption element's end tag may be ommitted if a colgroup, thead, tfoot, tbody, or tr element is started. + result = result || this._tag_stack.try_pop('caption', ['table']); + result = result || this._tag_stack.try_pop('colgroup', ['table']); + result = result || this._tag_stack.try_pop('tr', ['table', 'thead', 'tbody', 'tfoot']); + + } else if (parser_token.tag_name === 'th' || parser_token.tag_name === 'td') { + // A td element’s end tag may be omitted if the td element is immediately followed by a td or th element, or if there is no more content in the parent element. + // A th element’s end tag may be omitted if the th element is immediately followed by a td or th element, or if there is no more content in the parent element. + result = result || this._tag_stack.try_pop('td', ['table', 'thead', 'tbody', 'tfoot', 'tr']); + result = result || this._tag_stack.try_pop('th', ['table', 'thead', 'tbody', 'tfoot', 'tr']); + } + + // Start element omission not handled currently + // A head element’s start tag may be omitted if the element is empty, or if the first thing inside the head element is an element. + // A tbody element’s start tag may be omitted if the first thing inside the tbody element is a tr element, and if the element is not immediately preceded by a tbody, thead, or tfoot element whose end tag has been omitted. (It can’t be omitted if the element is empty.) + // A colgroup element’s start tag may be omitted if the first thing inside the colgroup element is a col element, and if the element is not immediately preceded by another colgroup element whose end tag has been omitted. (It can’t be omitted if the element is empty.) + + // Fix up the parent of the parser token + parser_token.parent = this._tag_stack.get_parser_token(); + + return result; +}; + +module.exports.Beautifier = Beautifier; + + +/***/ }), +/* 20 */ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +/*jshint node:true */ +/* + + The MIT License (MIT) + + Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors. + + 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 BaseOptions = (__webpack_require__(6).Options); + +function Options(options) { + BaseOptions.call(this, options, 'html'); + if (this.templating.length === 1 && this.templating[0] === 'auto') { + this.templating = ['django', 'erb', 'handlebars', 'php']; + } + + this.indent_inner_html = this._get_boolean('indent_inner_html'); + this.indent_body_inner_html = this._get_boolean('indent_body_inner_html', true); + this.indent_head_inner_html = this._get_boolean('indent_head_inner_html', true); + + this.indent_handlebars = this._get_boolean('indent_handlebars', true); + this.wrap_attributes = this._get_selection('wrap_attributes', + ['auto', 'force', 'force-aligned', 'force-expand-multiline', 'aligned-multiple', 'preserve', 'preserve-aligned']); + this.wrap_attributes_min_attrs = this._get_number('wrap_attributes_min_attrs', 2); + this.wrap_attributes_indent_size = this._get_number('wrap_attributes_indent_size', this.indent_size); + this.extra_liners = this._get_array('extra_liners', ['head', 'body', '/html']); + + // Block vs inline elements + // https://developer.mozilla.org/en-US/docs/Web/HTML/Block-level_elements + // https://developer.mozilla.org/en-US/docs/Web/HTML/Inline_elements + // https://www.w3.org/TR/html5/dom.html#phrasing-content + this.inline = this._get_array('inline', [ + 'a', 'abbr', 'area', 'audio', 'b', 'bdi', 'bdo', 'br', 'button', 'canvas', 'cite', + 'code', 'data', 'datalist', 'del', 'dfn', 'em', 'embed', 'i', 'iframe', 'img', + 'input', 'ins', 'kbd', 'keygen', 'label', 'map', 'mark', 'math', 'meter', 'noscript', + 'object', 'output', 'progress', 'q', 'ruby', 's', 'samp', /* 'script', */ 'select', 'small', + 'span', 'strong', 'sub', 'sup', 'svg', 'template', 'textarea', 'time', 'u', 'var', + 'video', 'wbr', 'text', + // obsolete inline tags + 'acronym', 'big', 'strike', 'tt' + ]); + this.inline_custom_elements = this._get_boolean('inline_custom_elements', true); + this.void_elements = this._get_array('void_elements', [ + // HTLM void elements - aka self-closing tags - aka singletons + // https://www.w3.org/html/wg/drafts/html/master/syntax.html#void-elements + 'area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input', 'keygen', + 'link', 'menuitem', 'meta', 'param', 'source', 'track', 'wbr', + // NOTE: Optional tags are too complex for a simple list + // they are hard coded in _do_optional_end_element + + // Doctype and xml elements + '!doctype', '?xml', + + // obsolete tags + // basefont: https://www.computerhope.com/jargon/h/html-basefont-tag.htm + // isndex: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/isindex + 'basefont', 'isindex' + ]); + this.unformatted = this._get_array('unformatted', []); + this.content_unformatted = this._get_array('content_unformatted', [ + 'pre', 'textarea' + ]); + this.unformatted_content_delimiter = this._get_characters('unformatted_content_delimiter'); + this.indent_scripts = this._get_selection('indent_scripts', ['normal', 'keep', 'separate']); + +} +Options.prototype = new BaseOptions(); + + + +module.exports.Options = Options; + + +/***/ }), +/* 21 */ +/***/ (function(module, __unused_webpack_exports, __webpack_require__) { + +/*jshint node:true */ +/* + + The MIT License (MIT) + + Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors. + + 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 BaseTokenizer = (__webpack_require__(9).Tokenizer); +var BASETOKEN = (__webpack_require__(9).TOKEN); +var Directives = (__webpack_require__(13).Directives); +var TemplatablePattern = (__webpack_require__(14).TemplatablePattern); +var Pattern = (__webpack_require__(12).Pattern); + +var TOKEN = { + TAG_OPEN: 'TK_TAG_OPEN', + TAG_CLOSE: 'TK_TAG_CLOSE', + ATTRIBUTE: 'TK_ATTRIBUTE', + EQUALS: 'TK_EQUALS', + VALUE: 'TK_VALUE', + COMMENT: 'TK_COMMENT', + TEXT: 'TK_TEXT', + UNKNOWN: 'TK_UNKNOWN', + START: BASETOKEN.START, + RAW: BASETOKEN.RAW, + EOF: BASETOKEN.EOF +}; + +var directives_core = new Directives(/<\!--/, /-->/); + +var Tokenizer = function(input_string, options) { + BaseTokenizer.call(this, input_string, options); + this._current_tag_name = ''; + + // Words end at whitespace or when a tag starts + // if we are indenting handlebars, they are considered tags + var templatable_reader = new TemplatablePattern(this._input).read_options(this._options); + var pattern_reader = new Pattern(this._input); + + this.__patterns = { + word: templatable_reader.until(/[\n\r\t <]/), + single_quote: templatable_reader.until_after(/'/), + double_quote: templatable_reader.until_after(/"/), + attribute: templatable_reader.until(/[\n\r\t =>]|\/>/), + element_name: templatable_reader.until(/[\n\r\t >\/]/), + + handlebars_comment: pattern_reader.starting_with(/{{!--/).until_after(/--}}/), + handlebars: pattern_reader.starting_with(/{{/).until_after(/}}/), + handlebars_open: pattern_reader.until(/[\n\r\t }]/), + handlebars_raw_close: pattern_reader.until(/}}/), + comment: pattern_reader.starting_with(/<!--/).until_after(/-->/), + cdata: pattern_reader.starting_with(/<!\[CDATA\[/).until_after(/]]>/), + // https://en.wikipedia.org/wiki/Conditional_comment + conditional_comment: pattern_reader.starting_with(/<!\[/).until_after(/]>/), + processing: pattern_reader.starting_with(/<\?/).until_after(/\?>/) + }; + + if (this._options.indent_handlebars) { + this.__patterns.word = this.__patterns.word.exclude('handlebars'); + } + + this._unformatted_content_delimiter = null; + + if (this._options.unformatted_content_delimiter) { + var literal_regexp = this._input.get_literal_regexp(this._options.unformatted_content_delimiter); + this.__patterns.unformatted_content_delimiter = + pattern_reader.matching(literal_regexp) + .until_after(literal_regexp); + } +}; +Tokenizer.prototype = new BaseTokenizer(); + +Tokenizer.prototype._is_comment = function(current_token) { // jshint unused:false + return false; //current_token.type === TOKEN.COMMENT || current_token.type === TOKEN.UNKNOWN; +}; + +Tokenizer.prototype._is_opening = function(current_token) { + return current_token.type === TOKEN.TAG_OPEN; +}; + +Tokenizer.prototype._is_closing = function(current_token, open_token) { + return current_token.type === TOKEN.TAG_CLOSE && + (open_token && ( + ((current_token.text === '>' || current_token.text === '/>') && open_token.text[0] === '<') || + (current_token.text === '}}' && open_token.text[0] === '{' && open_token.text[1] === '{'))); +}; + +Tokenizer.prototype._reset = function() { + this._current_tag_name = ''; +}; + +Tokenizer.prototype._get_next_token = function(previous_token, open_token) { // jshint unused:false + var token = null; + this._readWhitespace(); + var c = this._input.peek(); + + if (c === null) { + return this._create_token(TOKEN.EOF, ''); + } + + token = token || this._read_open_handlebars(c, open_token); + token = token || this._read_attribute(c, previous_token, open_token); + token = token || this._read_close(c, open_token); + token = token || this._read_raw_content(c, previous_token, open_token); + token = token || this._read_content_word(c); + token = token || this._read_comment_or_cdata(c); + token = token || this._read_processing(c); + token = token || this._read_open(c, open_token); + token = token || this._create_token(TOKEN.UNKNOWN, this._input.next()); + + return token; +}; + +Tokenizer.prototype._read_comment_or_cdata = function(c) { // jshint unused:false + var token = null; + var resulting_string = null; + var directives = null; + + if (c === '<') { + var peek1 = this._input.peek(1); + // We treat all comments as literals, even more than preformatted tags + // we only look for the appropriate closing marker + if (peek1 === '!') { + resulting_string = this.__patterns.comment.read(); + + // only process directive on html comments + if (resulting_string) { + directives = directives_core.get_directives(resulting_string); + if (directives && directives.ignore === 'start') { + resulting_string += directives_core.readIgnored(this._input); + } + } else { + resulting_string = this.__patterns.cdata.read(); + } + } + + if (resulting_string) { + token = this._create_token(TOKEN.COMMENT, resulting_string); + token.directives = directives; + } + } + + return token; +}; + +Tokenizer.prototype._read_processing = function(c) { // jshint unused:false + var token = null; + var resulting_string = null; + var directives = null; + + if (c === '<') { + var peek1 = this._input.peek(1); + if (peek1 === '!' || peek1 === '?') { + resulting_string = this.__patterns.conditional_comment.read(); + resulting_string = resulting_string || this.__patterns.processing.read(); + } + + if (resulting_string) { + token = this._create_token(TOKEN.COMMENT, resulting_string); + token.directives = directives; + } + } + + return token; +}; + +Tokenizer.prototype._read_open = function(c, open_token) { + var resulting_string = null; + var token = null; + if (!open_token) { + if (c === '<') { + + resulting_string = this._input.next(); + if (this._input.peek() === '/') { + resulting_string += this._input.next(); + } + resulting_string += this.__patterns.element_name.read(); + token = this._create_token(TOKEN.TAG_OPEN, resulting_string); + } + } + return token; +}; + +Tokenizer.prototype._read_open_handlebars = function(c, open_token) { + var resulting_string = null; + var token = null; + if (!open_token) { + if (this._options.indent_handlebars && c === '{' && this._input.peek(1) === '{') { + if (this._input.peek(2) === '!') { + resulting_string = this.__patterns.handlebars_comment.read(); + resulting_string = resulting_string || this.__patterns.handlebars.read(); + token = this._create_token(TOKEN.COMMENT, resulting_string); + } else { + resulting_string = this.__patterns.handlebars_open.read(); + token = this._create_token(TOKEN.TAG_OPEN, resulting_string); + } + } + } + return token; +}; + + +Tokenizer.prototype._read_close = function(c, open_token) { + var resulting_string = null; + var token = null; + if (open_token) { + if (open_token.text[0] === '<' && (c === '>' || (c === '/' && this._input.peek(1) === '>'))) { + resulting_string = this._input.next(); + if (c === '/') { // for close tag "/>" + resulting_string += this._input.next(); + } + token = this._create_token(TOKEN.TAG_CLOSE, resulting_string); + } else if (open_token.text[0] === '{' && c === '}' && this._input.peek(1) === '}') { + this._input.next(); + this._input.next(); + token = this._create_token(TOKEN.TAG_CLOSE, '}}'); + } + } + + return token; +}; + +Tokenizer.prototype._read_attribute = function(c, previous_token, open_token) { + var token = null; + var resulting_string = ''; + if (open_token && open_token.text[0] === '<') { + + if (c === '=') { + token = this._create_token(TOKEN.EQUALS, this._input.next()); + } else if (c === '"' || c === "'") { + var content = this._input.next(); + if (c === '"') { + content += this.__patterns.double_quote.read(); + } else { + content += this.__patterns.single_quote.read(); + } + token = this._create_token(TOKEN.VALUE, content); + } else { + resulting_string = this.__patterns.attribute.read(); + + if (resulting_string) { + if (previous_token.type === TOKEN.EQUALS) { + token = this._create_token(TOKEN.VALUE, resulting_string); + } else { + token = this._create_token(TOKEN.ATTRIBUTE, resulting_string); + } + } + } + } + return token; +}; + +Tokenizer.prototype._is_content_unformatted = function(tag_name) { + // void_elements have no content and so cannot have unformatted content + // script and style tags should always be read as unformatted content + // finally content_unformatted and unformatted element contents are unformatted + return this._options.void_elements.indexOf(tag_name) === -1 && + (this._options.content_unformatted.indexOf(tag_name) !== -1 || + this._options.unformatted.indexOf(tag_name) !== -1); +}; + + +Tokenizer.prototype._read_raw_content = function(c, previous_token, open_token) { // jshint unused:false + var resulting_string = ''; + if (open_token && open_token.text[0] === '{') { + resulting_string = this.__patterns.handlebars_raw_close.read(); + } else if (previous_token.type === TOKEN.TAG_CLOSE && + previous_token.opened.text[0] === '<' && previous_token.text[0] !== '/') { + // ^^ empty tag has no content + var tag_name = previous_token.opened.text.substr(1).toLowerCase(); + if (tag_name === 'script' || tag_name === 'style') { + // Script and style tags are allowed to have comments wrapping their content + // or just have regular content. + var token = this._read_comment_or_cdata(c); + if (token) { + token.type = TOKEN.TEXT; + return token; + } + resulting_string = this._input.readUntil(new RegExp('</' + tag_name + '[\\n\\r\\t ]*?>', 'ig')); + } else if (this._is_content_unformatted(tag_name)) { + + resulting_string = this._input.readUntil(new RegExp('</' + tag_name + '[\\n\\r\\t ]*?>', 'ig')); + } + } + + if (resulting_string) { + return this._create_token(TOKEN.TEXT, resulting_string); + } + + return null; +}; + +Tokenizer.prototype._read_content_word = function(c) { + var resulting_string = ''; + if (this._options.unformatted_content_delimiter) { + if (c === this._options.unformatted_content_delimiter[0]) { + resulting_string = this.__patterns.unformatted_content_delimiter.read(); + } + } + + if (!resulting_string) { + resulting_string = this.__patterns.word.read(); + } + if (resulting_string) { + return this._create_token(TOKEN.TEXT, resulting_string); + } +}; + +module.exports.Tokenizer = Tokenizer; +module.exports.TOKEN = TOKEN; + + +/***/ }) +/******/ ]); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +/******/ +/******/ // startup +/******/ // Load entry module and return exports +/******/ // This entry module is referenced by other modules so it can't be inlined +/******/ var __webpack_exports__ = __webpack_require__(18); +/******/ legacy_beautify_html = __webpack_exports__; +/******/ +/******/ })() +; + +function html_beautify(html_source, options) { + return legacy_beautify_html(html_source, options, js_beautify, css_beautify); +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +function format$3(document, range, options) { + let value = document.getText(); + let includesEnd = true; + let initialIndentLevel = 0; + const tabSize = options.tabSize || 4; + if (range) { + let startOffset = document.offsetAt(range.start); + // include all leading whitespace iff at the beginning of the line + let extendedStart = startOffset; + while (extendedStart > 0 && isWhitespace(value, extendedStart - 1)) { + extendedStart--; + } + if (extendedStart === 0 || isEOL$2(value, extendedStart - 1)) { + startOffset = extendedStart; + } + else { + // else keep at least one whitespace + if (extendedStart < startOffset) { + startOffset = extendedStart + 1; + } + } + // include all following whitespace until the end of the line + let endOffset = document.offsetAt(range.end); + let extendedEnd = endOffset; + while (extendedEnd < value.length && isWhitespace(value, extendedEnd)) { + extendedEnd++; + } + if (extendedEnd === value.length || isEOL$2(value, extendedEnd)) { + endOffset = extendedEnd; + } + range = Range$a.create(document.positionAt(startOffset), document.positionAt(endOffset)); + // Do not modify if substring starts in inside an element + // Ending inside an element is fine as it doesn't cause formatting errors + const firstHalf = value.substring(0, startOffset); + if (new RegExp(/.*[<][^>]*$/).test(firstHalf)) { + //return without modification + value = value.substring(startOffset, endOffset); + return [{ + range: range, + newText: value + }]; + } + includesEnd = endOffset === value.length; + value = value.substring(startOffset, endOffset); + if (startOffset !== 0) { + const startOfLineOffset = document.offsetAt(Position.create(range.start.line, 0)); + initialIndentLevel = computeIndentLevel$1(document.getText(), startOfLineOffset, options); + } + } + else { + range = Range$a.create(Position.create(0, 0), document.positionAt(value.length)); + } + const htmlOptions = { + indent_size: tabSize, + indent_char: options.insertSpaces ? ' ' : '\t', + indent_empty_lines: getFormatOption(options, 'indentEmptyLines', false), + wrap_line_length: getFormatOption(options, 'wrapLineLength', 120), + unformatted: getTagsFormatOption(options, 'unformatted', void 0), + content_unformatted: getTagsFormatOption(options, 'contentUnformatted', void 0), + indent_inner_html: getFormatOption(options, 'indentInnerHtml', false), + preserve_newlines: getFormatOption(options, 'preserveNewLines', true), + max_preserve_newlines: getFormatOption(options, 'maxPreserveNewLines', 32786), + indent_handlebars: getFormatOption(options, 'indentHandlebars', false), + end_with_newline: includesEnd && getFormatOption(options, 'endWithNewline', false), + extra_liners: getTagsFormatOption(options, 'extraLiners', void 0), + wrap_attributes: getFormatOption(options, 'wrapAttributes', 'auto'), + wrap_attributes_indent_size: getFormatOption(options, 'wrapAttributesIndentSize', void 0), + eol: '\n', + indent_scripts: getFormatOption(options, 'indentScripts', 'normal'), + templating: getTemplatingFormatOption(options, 'all'), + unformatted_content_delimiter: getFormatOption(options, 'unformattedContentDelimiter', ''), + }; + let result = html_beautify(trimLeft(value), htmlOptions); + if (initialIndentLevel > 0) { + const indent = options.insertSpaces ? repeat$1(' ', tabSize * initialIndentLevel) : repeat$1('\t', initialIndentLevel); + result = result.split('\n').join('\n' + indent); + if (range.start.character === 0) { + result = indent + result; // keep the indent + } + } + return [{ + range: range, + newText: result + }]; +} +function trimLeft(str) { + return str.replace(/^\s+/, ''); +} +function getFormatOption(options, key, dflt) { + if (options && options.hasOwnProperty(key)) { + const value = options[key]; + if (value !== null) { + return value; + } + } + return dflt; +} +function getTagsFormatOption(options, key, dflt) { + const list = getFormatOption(options, key, null); + if (typeof list === 'string') { + if (list.length > 0) { + return list.split(',').map(t => t.trim().toLowerCase()); + } + return []; + } + return dflt; +} +function getTemplatingFormatOption(options, dflt) { + const value = getFormatOption(options, 'templating', dflt); + if (value === true) { + return ['auto']; + } + return ['none']; +} +function computeIndentLevel$1(content, offset, options) { + let i = offset; + let nChars = 0; + const tabSize = options.tabSize || 4; + while (i < content.length) { + const ch = content.charAt(i); + if (ch === ' ') { + nChars++; + } + else if (ch === '\t') { + nChars += tabSize; + } + else { + break; + } + i++; + } + return Math.floor(nChars / tabSize); +} +function isEOL$2(text, offset) { + return '\r\n'.indexOf(text.charAt(offset)) !== -1; +} +function isWhitespace(text, offset) { + return ' \t'.indexOf(text.charAt(offset)) !== -1; +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +function normalizeRef(url) { + const first = url[0]; + const last = url[url.length - 1]; + if (first === last && (first === '\'' || first === '\"')) { + url = url.substring(1, url.length - 1); + } + return url; +} +function validateRef(url, languageId) { + if (!url.length) { + return false; + } + if (languageId === 'handlebars' && /{{|}}/.test(url)) { + return false; + } + return /\b(w[\w\d+.-]*:\/\/)?[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|\/?))/.test(url); +} +function getWorkspaceUrl(documentUri, tokenContent, documentContext, base) { + if (/^\s*javascript\:/i.test(tokenContent) || /[\n\r]/.test(tokenContent)) { + return undefined; + } + tokenContent = tokenContent.replace(/^\s*/g, ''); + const match = tokenContent.match(/^(\w[\w\d+.-]*):/); + if (match) { + // Absolute link that needs no treatment + const schema = match[1].toLowerCase(); + if (schema === 'http' || schema === 'https' || schema === 'file') { + return tokenContent; + } + return undefined; + } + if (/^\#/i.test(tokenContent)) { + return documentUri + tokenContent; + } + if (/^\/\//i.test(tokenContent)) { + // Absolute link (that does not name the protocol) + const pickedScheme = startsWith$2(documentUri, 'https://') ? 'https' : 'http'; + return pickedScheme + ':' + tokenContent.replace(/^\s*/g, ''); + } + if (documentContext) { + return documentContext.resolveReference(tokenContent, base || documentUri); + } + return tokenContent; +} +function createLink(document, documentContext, attributeValue, startOffset, endOffset, base) { + const tokenContent = normalizeRef(attributeValue); + if (!validateRef(tokenContent, document.languageId)) { + return undefined; + } + if (tokenContent.length < attributeValue.length) { + startOffset++; + endOffset--; + } + const workspaceUrl = getWorkspaceUrl(document.uri, tokenContent, documentContext, base); + if (!workspaceUrl) { + return undefined; + } + const target = validateAndCleanURI(workspaceUrl); + return { + range: Range$a.create(document.positionAt(startOffset), document.positionAt(endOffset)), + target + }; +} +function validateAndCleanURI(uriStr) { + try { + const uri = URI.parse(uriStr); + if (uri.query) { + return uri.with({ query: null }).toString(/* skipEncodig*/ true); + } + return uriStr; + } + catch (e) { + return undefined; + } +} +class HTMLDocumentLinks { + constructor(dataManager) { + this.dataManager = dataManager; + } + findDocumentLinks(document, documentContext) { + const newLinks = []; + const scanner = createScanner$2(document.getText(), 0); + let token = scanner.scan(); + let lastAttributeName = undefined; + let lastTagName = undefined; + let afterBase = false; + let base = void 0; + const idLocations = {}; + while (token !== TokenType.EOS) { + switch (token) { + case TokenType.StartTag: + lastTagName = scanner.getTokenText().toLowerCase(); + if (!base) { + afterBase = lastTagName === 'base'; + } + break; + case TokenType.AttributeName: + lastAttributeName = scanner.getTokenText().toLowerCase(); + break; + case TokenType.AttributeValue: + if (lastTagName && lastAttributeName && this.dataManager.isPathAttribute(lastTagName, lastAttributeName)) { + const attributeValue = scanner.getTokenText(); + if (!afterBase) { // don't highlight the base link itself + const link = createLink(document, documentContext, attributeValue, scanner.getTokenOffset(), scanner.getTokenEnd(), base); + if (link) { + newLinks.push(link); + } + } + if (afterBase && typeof base === 'undefined') { + base = normalizeRef(attributeValue); + if (base && documentContext) { + base = documentContext.resolveReference(base, document.uri); + } + } + afterBase = false; + lastAttributeName = undefined; + } + else if (lastAttributeName === 'id') { + const id = normalizeRef(scanner.getTokenText()); + idLocations[id] = scanner.getTokenOffset(); + } + break; + } + token = scanner.scan(); + } + // change local links with ids to actual positions + for (const link of newLinks) { + const localWithHash = document.uri + '#'; + if (link.target && startsWith$2(link.target, localWithHash)) { + const target = link.target.substring(localWithHash.length); + const offset = idLocations[target]; + if (offset !== undefined) { + const pos = document.positionAt(offset); + link.target = `${localWithHash}${pos.line + 1},${pos.character + 1}`; + } + } + } + return newLinks; + } +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +function findDocumentHighlights(document, position, htmlDocument) { + const offset = document.offsetAt(position); + const node = htmlDocument.findNodeAt(offset); + if (!node.tag) { + return []; + } + const result = []; + const startTagRange = getTagNameRange(TokenType.StartTag, document, node.start); + const endTagRange = typeof node.endTagStart === 'number' && getTagNameRange(TokenType.EndTag, document, node.endTagStart); + if (startTagRange && covers(startTagRange, position) || endTagRange && covers(endTagRange, position)) { + if (startTagRange) { + result.push({ kind: DocumentHighlightKind.Read, range: startTagRange }); + } + if (endTagRange) { + result.push({ kind: DocumentHighlightKind.Read, range: endTagRange }); + } + } + return result; +} +function isBeforeOrEqual(pos1, pos2) { + return pos1.line < pos2.line || (pos1.line === pos2.line && pos1.character <= pos2.character); +} +function covers(range, position) { + return isBeforeOrEqual(range.start, position) && isBeforeOrEqual(position, range.end); +} +function getTagNameRange(tokenType, document, startOffset) { + const scanner = createScanner$2(document.getText(), startOffset); + let token = scanner.scan(); + while (token !== TokenType.EOS && token !== tokenType) { + token = scanner.scan(); + } + if (token !== TokenType.EOS) { + return { start: document.positionAt(scanner.getTokenOffset()), end: document.positionAt(scanner.getTokenEnd()) }; + } + return null; +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +function findDocumentSymbols(document, htmlDocument) { + const symbols = []; + const symbols2 = findDocumentSymbols2(document, htmlDocument); + for (const symbol of symbols2) { + walk(symbol, undefined); + } + return symbols; + function walk(node, parent) { + const symbol = SymbolInformation.create(node.name, node.kind, node.range, document.uri, parent?.name); + symbol.containerName ?? (symbol.containerName = ''); + symbols.push(symbol); + if (node.children) { + for (const child of node.children) { + walk(child, node); + } + } + } +} +function findDocumentSymbols2(document, htmlDocument) { + const symbols = []; + htmlDocument.roots.forEach(node => { + provideFileSymbolsInternal(document, node, symbols); + }); + return symbols; +} +function provideFileSymbolsInternal(document, node, symbols) { + const name = nodeToName(node); + const range = Range$a.create(document.positionAt(node.start), document.positionAt(node.end)); + const symbol = DocumentSymbol.create(name, undefined, SymbolKind$1.Field, range, range); + symbols.push(symbol); + node.children.forEach(child => { + symbol.children ?? (symbol.children = []); + provideFileSymbolsInternal(document, child, symbol.children); + }); +} +function nodeToName(node) { + let name = node.tag; + if (node.attributes) { + const id = node.attributes['id']; + const classes = node.attributes['class']; + if (id) { + name += `#${id.replace(/[\"\']/g, '')}`; + } + if (classes) { + name += classes.replace(/[\"\']/g, '').split(/\s+/).map(className => `.${className}`).join(''); + } + } + return name || '?'; +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +function doRename(document, position, newName, htmlDocument) { + const offset = document.offsetAt(position); + const node = htmlDocument.findNodeAt(offset); + if (!node.tag) { + return null; + } + if (!isWithinTagRange(node, offset, node.tag)) { + return null; + } + const edits = []; + const startTagRange = { + start: document.positionAt(node.start + '<'.length), + end: document.positionAt(node.start + '<'.length + node.tag.length) + }; + edits.push({ + range: startTagRange, + newText: newName + }); + if (node.endTagStart) { + const endTagRange = { + start: document.positionAt(node.endTagStart + '</'.length), + end: document.positionAt(node.endTagStart + '</'.length + node.tag.length) + }; + edits.push({ + range: endTagRange, + newText: newName + }); + } + const changes = { + [document.uri.toString()]: edits + }; + return { + changes + }; +} +function isWithinTagRange(node, offset, nodeTag) { + // Self-closing tag + if (node.endTagStart) { + if (node.endTagStart + '</'.length <= offset && offset <= node.endTagStart + '</'.length + nodeTag.length) { + return true; + } + } + return node.start + '<'.length <= offset && offset <= node.start + '<'.length + nodeTag.length; +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +function findMatchingTagPosition(document, position, htmlDocument) { + const offset = document.offsetAt(position); + const node = htmlDocument.findNodeAt(offset); + if (!node.tag) { + return null; + } + if (!node.endTagStart) { + return null; + } + // Within open tag, compute close tag + if (node.start + '<'.length <= offset && offset <= node.start + '<'.length + node.tag.length) { + const mirrorOffset = (offset - '<'.length - node.start) + node.endTagStart + '</'.length; + return document.positionAt(mirrorOffset); + } + // Within closing tag, compute open tag + if (node.endTagStart + '</'.length <= offset && offset <= node.endTagStart + '</'.length + node.tag.length) { + const mirrorOffset = (offset - '</'.length - node.endTagStart) + node.start + '<'.length; + return document.positionAt(mirrorOffset); + } + return null; +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +function findLinkedEditingRanges(document, position, htmlDocument) { + const offset = document.offsetAt(position); + const node = htmlDocument.findNodeAt(offset); + const tagLength = node.tag ? node.tag.length : 0; + if (!node.endTagStart) { + return null; + } + if ( + // Within open tag, compute close tag + (node.start + '<'.length <= offset && offset <= node.start + '<'.length + tagLength) || + // Within closing tag, compute open tag + node.endTagStart + '</'.length <= offset && offset <= node.endTagStart + '</'.length + tagLength) { + return [ + Range$a.create(document.positionAt(node.start + '<'.length), document.positionAt(node.start + '<'.length + tagLength)), + Range$a.create(document.positionAt(node.endTagStart + '</'.length), document.positionAt(node.endTagStart + '</'.length + tagLength)) + ]; + } + return null; +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +class HTMLFolding { + constructor(dataManager) { + this.dataManager = dataManager; + } + limitRanges(ranges, rangeLimit) { + ranges = ranges.sort((r1, r2) => { + let diff = r1.startLine - r2.startLine; + if (diff === 0) { + diff = r1.endLine - r2.endLine; + } + return diff; + }); + // compute each range's nesting level in 'nestingLevels'. + // count the number of ranges for each level in 'nestingLevelCounts' + let top = void 0; + const previous = []; + const nestingLevels = []; + const nestingLevelCounts = []; + const setNestingLevel = (index, level) => { + nestingLevels[index] = level; + if (level < 30) { + nestingLevelCounts[level] = (nestingLevelCounts[level] || 0) + 1; + } + }; + // compute nesting levels and sanitize + for (let i = 0; i < ranges.length; i++) { + const entry = ranges[i]; + if (!top) { + top = entry; + setNestingLevel(i, 0); + } + else { + if (entry.startLine > top.startLine) { + if (entry.endLine <= top.endLine) { + previous.push(top); + top = entry; + setNestingLevel(i, previous.length); + } + else if (entry.startLine > top.endLine) { + do { + top = previous.pop(); + } while (top && entry.startLine > top.endLine); + if (top) { + previous.push(top); + } + top = entry; + setNestingLevel(i, previous.length); + } + } + } + } + let entries = 0; + let maxLevel = 0; + for (let i = 0; i < nestingLevelCounts.length; i++) { + const n = nestingLevelCounts[i]; + if (n) { + if (n + entries > rangeLimit) { + maxLevel = i; + break; + } + entries += n; + } + } + const result = []; + for (let i = 0; i < ranges.length; i++) { + const level = nestingLevels[i]; + if (typeof level === 'number') { + if (level < maxLevel || (level === maxLevel && entries++ < rangeLimit)) { + result.push(ranges[i]); + } + } + } + return result; + } + getFoldingRanges(document, context) { + const voidElements = this.dataManager.getVoidElements(document.languageId); + const scanner = createScanner$2(document.getText()); + let token = scanner.scan(); + const ranges = []; + const stack = []; + let lastTagName = null; + let prevStart = -1; + function addRange(range) { + ranges.push(range); + prevStart = range.startLine; + } + while (token !== TokenType.EOS) { + switch (token) { + case TokenType.StartTag: { + const tagName = scanner.getTokenText(); + const startLine = document.positionAt(scanner.getTokenOffset()).line; + stack.push({ startLine, tagName }); + lastTagName = tagName; + break; + } + case TokenType.EndTag: { + lastTagName = scanner.getTokenText(); + break; + } + case TokenType.StartTagClose: + if (!lastTagName || !this.dataManager.isVoidElement(lastTagName, voidElements)) { + break; + } + // fallthrough + case TokenType.EndTagClose: + case TokenType.StartTagSelfClose: { + let i = stack.length - 1; + while (i >= 0 && stack[i].tagName !== lastTagName) { + i--; + } + if (i >= 0) { + const stackElement = stack[i]; + stack.length = i; + const line = document.positionAt(scanner.getTokenOffset()).line; + const startLine = stackElement.startLine; + const endLine = line - 1; + if (endLine > startLine && prevStart !== startLine) { + addRange({ startLine, endLine }); + } + } + break; + } + case TokenType.Comment: { + let startLine = document.positionAt(scanner.getTokenOffset()).line; + const text = scanner.getTokenText(); + const m = text.match(/^\s*#(region\b)|(endregion\b)/); + if (m) { + if (m[1]) { // start pattern match + stack.push({ startLine, tagName: '' }); // empty tagName marks region + } + else { + let i = stack.length - 1; + while (i >= 0 && stack[i].tagName.length) { + i--; + } + if (i >= 0) { + const stackElement = stack[i]; + stack.length = i; + const endLine = startLine; + startLine = stackElement.startLine; + if (endLine > startLine && prevStart !== startLine) { + addRange({ startLine, endLine, kind: FoldingRangeKind.Region }); + } + } + } + } + else { + const endLine = document.positionAt(scanner.getTokenOffset() + scanner.getTokenLength()).line; + if (startLine < endLine) { + addRange({ startLine, endLine, kind: FoldingRangeKind.Comment }); + } + } + break; + } + } + token = scanner.scan(); + } + const rangeLimit = context && context.rangeLimit || Number.MAX_VALUE; + if (ranges.length > rangeLimit) { + return this.limitRanges(ranges, rangeLimit); + } + return ranges; + } +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +class HTMLSelectionRange { + constructor(htmlParser) { + this.htmlParser = htmlParser; + } + getSelectionRanges(document, positions) { + const htmlDocument = this.htmlParser.parseDocument(document); + return positions.map(p => this.getSelectionRange(p, document, htmlDocument)); + } + getSelectionRange(position, document, htmlDocument) { + const applicableRanges = this.getApplicableRanges(document, position, htmlDocument); + let prev = undefined; + let current = undefined; + for (let index = applicableRanges.length - 1; index >= 0; index--) { + const range = applicableRanges[index]; + if (!prev || range[0] !== prev[0] || range[1] !== prev[1]) { + current = SelectionRange.create(Range$a.create(document.positionAt(applicableRanges[index][0]), document.positionAt(applicableRanges[index][1])), current); + } + prev = range; + } + if (!current) { + current = SelectionRange.create(Range$a.create(position, position)); + } + return current; + } + getApplicableRanges(document, position, htmlDoc) { + const currOffset = document.offsetAt(position); + const currNode = htmlDoc.findNodeAt(currOffset); + let result = this.getAllParentTagRanges(currNode); + // Self-closing or void elements + if (currNode.startTagEnd && !currNode.endTagStart) { + // THe rare case of unmatching tag pairs like <div></div1> + if (currNode.startTagEnd !== currNode.end) { + return [[currNode.start, currNode.end]]; + } + const closeRange = Range$a.create(document.positionAt(currNode.startTagEnd - 2), document.positionAt(currNode.startTagEnd)); + const closeText = document.getText(closeRange); + // Self-closing element + if (closeText === '/>') { + result.unshift([currNode.start + 1, currNode.startTagEnd - 2]); + } + // Void element + else { + result.unshift([currNode.start + 1, currNode.startTagEnd - 1]); + } + const attributeLevelRanges = this.getAttributeLevelRanges(document, currNode, currOffset); + result = attributeLevelRanges.concat(result); + return result; + } + if (!currNode.startTagEnd || !currNode.endTagStart) { + return result; + } + /** + * For html like + * `<div class="foo">bar</div>` + */ + result.unshift([currNode.start, currNode.end]); + /** + * Cursor inside `<div class="foo">` + */ + if (currNode.start < currOffset && currOffset < currNode.startTagEnd) { + result.unshift([currNode.start + 1, currNode.startTagEnd - 1]); + const attributeLevelRanges = this.getAttributeLevelRanges(document, currNode, currOffset); + result = attributeLevelRanges.concat(result); + return result; + } + /** + * Cursor inside `bar` + */ + else if (currNode.startTagEnd <= currOffset && currOffset <= currNode.endTagStart) { + result.unshift([currNode.startTagEnd, currNode.endTagStart]); + return result; + } + /** + * Cursor inside `</div>` + */ + else { + // `div` inside `</div>` + if (currOffset >= currNode.endTagStart + 2) { + result.unshift([currNode.endTagStart + 2, currNode.end - 1]); + } + return result; + } + } + getAllParentTagRanges(initialNode) { + let currNode = initialNode; + const result = []; + while (currNode.parent) { + currNode = currNode.parent; + this.getNodeRanges(currNode).forEach(r => result.push(r)); + } + return result; + } + getNodeRanges(n) { + if (n.startTagEnd && n.endTagStart && n.startTagEnd < n.endTagStart) { + return [ + [n.startTagEnd, n.endTagStart], + [n.start, n.end] + ]; + } + return [ + [n.start, n.end] + ]; + } + ; + getAttributeLevelRanges(document, currNode, currOffset) { + const currNodeRange = Range$a.create(document.positionAt(currNode.start), document.positionAt(currNode.end)); + const currNodeText = document.getText(currNodeRange); + const relativeOffset = currOffset - currNode.start; + /** + * Tag level semantic selection + */ + const scanner = createScanner$2(currNodeText); + let token = scanner.scan(); + /** + * For text like + * <div class="foo">bar</div> + */ + const positionOffset = currNode.start; + const result = []; + let isInsideAttribute = false; + let attrStart = -1; + while (token !== TokenType.EOS) { + switch (token) { + case TokenType.AttributeName: { + if (relativeOffset < scanner.getTokenOffset()) { + isInsideAttribute = false; + break; + } + if (relativeOffset <= scanner.getTokenEnd()) { + // `class` + result.unshift([scanner.getTokenOffset(), scanner.getTokenEnd()]); + } + isInsideAttribute = true; + attrStart = scanner.getTokenOffset(); + break; + } + case TokenType.AttributeValue: { + if (!isInsideAttribute) { + break; + } + const valueText = scanner.getTokenText(); + if (relativeOffset < scanner.getTokenOffset()) { + // `class="foo"` + result.push([attrStart, scanner.getTokenEnd()]); + break; + } + if (relativeOffset >= scanner.getTokenOffset() && relativeOffset <= scanner.getTokenEnd()) { + // `"foo"` + result.unshift([scanner.getTokenOffset(), scanner.getTokenEnd()]); + // `foo` + if ((valueText[0] === `"` && valueText[valueText.length - 1] === `"`) || (valueText[0] === `'` && valueText[valueText.length - 1] === `'`)) { + if (relativeOffset >= scanner.getTokenOffset() + 1 && relativeOffset <= scanner.getTokenEnd() - 1) { + result.unshift([scanner.getTokenOffset() + 1, scanner.getTokenEnd() - 1]); + } + } + // `class="foo"` + result.push([attrStart, scanner.getTokenEnd()]); + } + break; + } + } + token = scanner.scan(); + } + return result.map(pair => { + return [pair[0] + positionOffset, pair[1] + positionOffset]; + }); + } +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +// file generated from @vscode/web-custom-data NPM package +const htmlData = { + "version": 1.1, + "tags": [ + { + "name": "html", + "description": { + "kind": "markdown", + "value": "The html element represents the root of an HTML document." + }, + "attributes": [ + { + "name": "manifest", + "description": { + "kind": "markdown", + "value": "Specifies the URI of a resource manifest indicating resources that should be cached locally. See [Using the application cache](https://developer.mozilla.org/en-US/docs/Web/HTML/Using_the_application_cache) for details." + } + }, + { + "name": "version", + "description": "Specifies the version of the HTML [Document Type Definition](https://developer.mozilla.org/en-US/docs/Glossary/DTD \"Document Type Definition: In HTML, the doctype is the required \"<!DOCTYPE html>\" preamble found at the top of all documents. Its sole purpose is to prevent a browser from switching into so-called “quirks mode” when rendering a document; that is, the \"<!DOCTYPE html>\" doctype ensures that the browser makes a best-effort attempt at following the relevant specifications, rather than using a different rendering mode that is incompatible with some specifications.\") that governs the current document. This attribute is not needed, because it is redundant with the version information in the document type declaration." + }, + { + "name": "xmlns", + "description": "Specifies the XML Namespace of the document. Default value is `\"http://www.w3.org/1999/xhtml\"`. This is required in documents parsed with XML parsers, and optional in text/html documents." + } + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/html" + } + ] + }, + { + "name": "head", + "description": { + "kind": "markdown", + "value": "The head element represents a collection of metadata for the Document." + }, + "attributes": [ + { + "name": "profile", + "description": "The URIs of one or more metadata profiles, separated by white space." + } + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/head" + } + ] + }, + { + "name": "title", + "description": { + "kind": "markdown", + "value": "The title element represents the document's title or name. Authors should use titles that identify their documents even when they are used out of context, for example in a user's history or bookmarks, or in search results. The document's title is often different from its first heading, since the first heading does not have to stand alone when taken out of context." + }, + "attributes": [], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/title" + } + ] + }, + { + "name": "base", + "description": { + "kind": "markdown", + "value": "The base element allows authors to specify the document base URL for the purposes of resolving relative URLs, and the name of the default browsing context for the purposes of following hyperlinks. The element does not represent any content beyond this information." + }, + "void": true, + "attributes": [ + { + "name": "href", + "description": { + "kind": "markdown", + "value": "The base URL to be used throughout the document for relative URL addresses. If this attribute is specified, this element must come before any other elements with attributes whose values are URLs. Absolute and relative URLs are allowed." + } + }, + { + "name": "target", + "valueSet": "target", + "description": { + "kind": "markdown", + "value": "A name or keyword indicating the default location to display the result when hyperlinks or forms cause navigation, for elements that do not have an explicit target reference. It is a name of, or keyword for, a _browsing context_ (for example: tab, window, or inline frame). The following keywords have special meanings:\n\n* `_self`: Load the result into the same browsing context as the current one. This value is the default if the attribute is not specified.\n* `_blank`: Load the result into a new unnamed browsing context.\n* `_parent`: Load the result into the parent browsing context of the current one. If there is no parent, this option behaves the same way as `_self`.\n* `_top`: Load the result into the top-level browsing context (that is, the browsing context that is an ancestor of the current one, and has no parent). If there is no parent, this option behaves the same way as `_self`.\n\nIf this attribute is specified, this element must come before any other elements with attributes whose values are URLs." + } + } + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/base" + } + ] + }, + { + "name": "link", + "description": { + "kind": "markdown", + "value": "The link element allows authors to link their document to other resources." + }, + "void": true, + "attributes": [ + { + "name": "href", + "description": { + "kind": "markdown", + "value": "This attribute specifies the [URL](https://developer.mozilla.org/en-US/docs/Glossary/URL \"URL: Uniform Resource Locator (URL) is a text string specifying where a resource can be found on the Internet.\") of the linked resource. A URL can be absolute or relative." + } + }, + { + "name": "crossorigin", + "valueSet": "xo", + "description": { + "kind": "markdown", + "value": "This enumerated attribute indicates whether [CORS](https://developer.mozilla.org/en-US/docs/Glossary/CORS \"CORS: CORS (Cross-Origin Resource Sharing) is a system, consisting of transmitting HTTP headers, that determines whether browsers block frontend JavaScript code from accessing responses for cross-origin requests.\") must be used when fetching the resource. [CORS-enabled images](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_Enabled_Image) can be reused in the [`<canvas>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/canvas \"Use the HTML <canvas> element with either the canvas scripting API or the WebGL API to draw graphics and animations.\") element without being _tainted_. The allowed values are:\n\n`anonymous`\n\nA cross-origin request (i.e. with an [`Origin`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Origin \"The Origin request header indicates where a fetch originates from. It doesn't include any path information, but only the server name. It is sent with CORS requests, as well as with POST requests. It is similar to the Referer header, but, unlike this header, it doesn't disclose the whole path.\") HTTP header) is performed, but no credential is sent (i.e. no cookie, X.509 certificate, or HTTP Basic authentication). If the server does not give credentials to the origin site (by not setting the [`Access-Control-Allow-Origin`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Origin \"The Access-Control-Allow-Origin response header indicates whether the response can be shared with requesting code from the given origin.\") HTTP header) the image will be tainted and its usage restricted.\n\n`use-credentials`\n\nA cross-origin request (i.e. with an `Origin` HTTP header) is performed along with a credential sent (i.e. a cookie, certificate, and/or HTTP Basic authentication is performed). If the server does not give credentials to the origin site (through [`Access-Control-Allow-Credentials`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Credentials \"The Access-Control-Allow-Credentials response header tells browsers whether to expose the response to frontend JavaScript code when the request's credentials mode (Request.credentials) is \"include\".\") HTTP header), the resource will be _tainted_ and its usage restricted.\n\nIf the attribute is not present, the resource is fetched without a [CORS](https://developer.mozilla.org/en-US/docs/Glossary/CORS \"CORS: CORS (Cross-Origin Resource Sharing) is a system, consisting of transmitting HTTP headers, that determines whether browsers block frontend JavaScript code from accessing responses for cross-origin requests.\") request (i.e. without sending the `Origin` HTTP header), preventing its non-tainted usage. If invalid, it is handled as if the enumerated keyword **anonymous** was used. See [CORS settings attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes) for additional information." + } + }, + { + "name": "rel", + "description": { + "kind": "markdown", + "value": "This attribute names a relationship of the linked document to the current document. The attribute must be a space-separated list of the [link types values](https://developer.mozilla.org/en-US/docs/Web/HTML/Link_types)." + } + }, + { + "name": "media", + "description": { + "kind": "markdown", + "value": "This attribute specifies the media that the linked resource applies to. Its value must be a media type / [media query](https://developer.mozilla.org/en-US/docs/Web/CSS/Media_queries). This attribute is mainly useful when linking to external stylesheets — it allows the user agent to pick the best adapted one for the device it runs on.\n\n**Notes:**\n\n* In HTML 4, this can only be a simple white-space-separated list of media description literals, i.e., [media types and groups](https://developer.mozilla.org/en-US/docs/Web/CSS/@media), where defined and allowed as values for this attribute, such as `print`, `screen`, `aural`, `braille`. HTML5 extended this to any kind of [media queries](https://developer.mozilla.org/en-US/docs/Web/CSS/Media_queries), which are a superset of the allowed values of HTML 4.\n* Browsers not supporting [CSS3 Media Queries](https://developer.mozilla.org/en-US/docs/Web/CSS/Media_queries) won't necessarily recognize the adequate link; do not forget to set fallback links, the restricted set of media queries defined in HTML 4." + } + }, + { + "name": "hreflang", + "description": { + "kind": "markdown", + "value": "This attribute indicates the language of the linked resource. It is purely advisory. Allowed values are determined by [BCP47](https://www.ietf.org/rfc/bcp/bcp47.txt). Use this attribute only if the [`href`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#attr-href) attribute is present." + } + }, + { + "name": "type", + "description": { + "kind": "markdown", + "value": "This attribute is used to define the type of the content linked to. The value of the attribute should be a MIME type such as **text/html**, **text/css**, and so on. The common use of this attribute is to define the type of stylesheet being referenced (such as **text/css**), but given that CSS is the only stylesheet language used on the web, not only is it possible to omit the `type` attribute, but is actually now recommended practice. It is also used on `rel=\"preload\"` link types, to make sure the browser only downloads file types that it supports." + } + }, + { + "name": "sizes", + "description": { + "kind": "markdown", + "value": "This attribute defines the sizes of the icons for visual media contained in the resource. It must be present only if the [`rel`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/link#attr-rel) contains a value of `icon` or a non-standard type such as Apple's `apple-touch-icon`. It may have the following values:\n\n* `any`, meaning that the icon can be scaled to any size as it is in a vector format, like `image/svg+xml`.\n* a white-space separated list of sizes, each in the format `_<width in pixels>_x_<height in pixels>_` or `_<width in pixels>_X_<height in pixels>_`. Each of these sizes must be contained in the resource.\n\n**Note:** Most icon formats are only able to store one single icon; therefore most of the time the [`sizes`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes#attr-sizes) contains only one entry. MS's ICO format does, as well as Apple's ICNS. ICO is more ubiquitous; you should definitely use it." + } + }, + { + "name": "as", + "description": "This attribute is only used when `rel=\"preload\"` or `rel=\"prefetch\"` has been set on the `<link>` element. It specifies the type of content being loaded by the `<link>`, which is necessary for content prioritization, request matching, application of correct [content security policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP), and setting of correct [`Accept`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept \"The Accept request HTTP header advertises which content types, expressed as MIME types, the client is able to understand. Using content negotiation, the server then selects one of the proposals, uses it and informs the client of its choice with the Content-Type response header. Browsers set adequate values for this header depending on the context where the request is done: when fetching a CSS stylesheet a different value is set for the request than when fetching an image, video or a script.\") request header." + }, + { + "name": "importance", + "description": "Indicates the relative importance of the resource. Priority hints are delegated using the values:" + }, + { + "name": "importance", + "description": "**`auto`**: Indicates **no preference**. The browser may use its own heuristics to decide the priority of the resource.\n\n**`high`**: Indicates to the browser that the resource is of **high** priority.\n\n**`low`**: Indicates to the browser that the resource is of **low** priority.\n\n**Note:** The `importance` attribute may only be used for the `<link>` element if `rel=\"preload\"` or `rel=\"prefetch\"` is present." + }, + { + "name": "integrity", + "description": "Contains inline metadata — a base64-encoded cryptographic hash of the resource (file) you’re telling the browser to fetch. The browser can use this to verify that the fetched resource has been delivered free of unexpected manipulation. See [Subresource Integrity](https://developer.mozilla.org/en-US/docs/Web/Security/Subresource_Integrity)." + }, + { + "name": "referrerpolicy", + "description": "A string indicating which referrer to use when fetching the resource:\n\n* `no-referrer` means that the [`Referer`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referer \"The Referer request header contains the address of the previous web page from which a link to the currently requested page was followed. The Referer header allows servers to identify where people are visiting them from and may use that data for analytics, logging, or optimized caching, for example.\") header will not be sent.\n* `no-referrer-when-downgrade` means that no [`Referer`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referer \"The Referer request header contains the address of the previous web page from which a link to the currently requested page was followed. The Referer header allows servers to identify where people are visiting them from and may use that data for analytics, logging, or optimized caching, for example.\") header will be sent when navigating to an origin without TLS (HTTPS). This is a user agent’s default behavior, if no policy is otherwise specified.\n* `origin` means that the referrer will be the origin of the page, which is roughly the scheme, the host, and the port.\n* `origin-when-cross-origin` means that navigating to other origins will be limited to the scheme, the host, and the port, while navigating on the same origin will include the referrer's path.\n* `unsafe-url` means that the referrer will include the origin and the path (but not the fragment, password, or username). This case is unsafe because it can leak origins and paths from TLS-protected resources to insecure origins." + }, + { + "name": "title", + "description": "The `title` attribute has special semantics on the `<link>` element. When used on a `<link rel=\"stylesheet\">` it defines a [preferred or an alternate stylesheet](https://developer.mozilla.org/en-US/docs/Web/CSS/Alternative_style_sheets). Incorrectly using it may [cause the stylesheet to be ignored](https://developer.mozilla.org/en-US/docs/Correctly_Using_Titles_With_External_Stylesheets)." + } + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/link" + } + ] + }, + { + "name": "meta", + "description": { + "kind": "markdown", + "value": "The meta element represents various kinds of metadata that cannot be expressed using the title, base, link, style, and script elements." + }, + "void": true, + "attributes": [ + { + "name": "name", + "description": { + "kind": "markdown", + "value": "This attribute defines the name of a piece of document-level metadata. It should not be set if one of the attributes [`itemprop`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes#attr-itemprop), [`http-equiv`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta#attr-http-equiv) or [`charset`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta#attr-charset) is also set.\n\nThis metadata name is associated with the value contained by the [`content`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta#attr-content) attribute. The possible values for the name attribute are:\n\n* `application-name` which defines the name of the application running in the web page.\n \n **Note:**\n \n * Browsers may use this to identify the application. It is different from the [`<title>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/title \"The HTML Title element (<title>) defines the document's title that is shown in a browser's title bar or a page's tab.\") element, which usually contain the application name, but may also contain information like the document name or a status.\n * Simple web pages shouldn't define an application-name.\n \n* `author` which defines the name of the document's author.\n* `description` which contains a short and accurate summary of the content of the page. Several browsers, like Firefox and Opera, use this as the default description of bookmarked pages.\n* `generator` which contains the identifier of the software that generated the page.\n* `keywords` which contains words relevant to the page's content separated by commas.\n* `referrer` which controls the [`Referer` HTTP header](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referer) attached to requests sent from the document:\n \n Values for the `content` attribute of `<meta name=\"referrer\">`\n \n `no-referrer`\n \n Do not send a HTTP `Referrer` header.\n \n `origin`\n \n Send the [origin](https://developer.mozilla.org/en-US/docs/Glossary/Origin) of the document.\n \n `no-referrer-when-downgrade`\n \n Send the [origin](https://developer.mozilla.org/en-US/docs/Glossary/Origin) as a referrer to URLs as secure as the current page, (https→https), but does not send a referrer to less secure URLs (https→http). This is the default behaviour.\n \n `origin-when-cross-origin`\n \n Send the full URL (stripped of parameters) for same-origin requests, but only send the [origin](https://developer.mozilla.org/en-US/docs/Glossary/Origin) for other cases.\n \n `same-origin`\n \n A referrer will be sent for [same-site origins](https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy), but cross-origin requests will contain no referrer information.\n \n `strict-origin`\n \n Only send the origin of the document as the referrer to a-priori as-much-secure destination (HTTPS->HTTPS), but don't send it to a less secure destination (HTTPS->HTTP).\n \n `strict-origin-when-cross-origin`\n \n Send a full URL when performing a same-origin request, only send the origin of the document to a-priori as-much-secure destination (HTTPS->HTTPS), and send no header to a less secure destination (HTTPS->HTTP).\n \n `unsafe-URL`\n \n Send the full URL (stripped of parameters) for same-origin or cross-origin requests.\n \n **Notes:**\n \n * Some browsers support the deprecated values of `always`, `default`, and `never` for referrer.\n * Dynamically inserting `<meta name=\"referrer\">` (with [`document.write`](https://developer.mozilla.org/en-US/docs/Web/API/Document/write) or [`appendChild`](https://developer.mozilla.org/en-US/docs/Web/API/Node/appendChild)) makes the referrer behaviour unpredictable.\n * When several conflicting policies are defined, the no-referrer policy is applied.\n \n\nThis attribute may also have a value taken from the extended list defined on [WHATWG Wiki MetaExtensions page](https://wiki.whatwg.org/wiki/MetaExtensions). Although none have been formally accepted yet, a few commonly used names are:\n\n* `creator` which defines the name of the creator of the document, such as an organization or institution. If there are more than one, several [`<meta>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta \"The HTML <meta> element represents metadata that cannot be represented by other HTML meta-related elements, like <base>, <link>, <script>, <style> or <title>.\") elements should be used.\n* `googlebot`, a synonym of `robots`, is only followed by Googlebot (the indexing crawler for Google).\n* `publisher` which defines the name of the document's publisher.\n* `robots` which defines the behaviour that cooperative crawlers, or \"robots\", should use with the page. It is a comma-separated list of the values below:\n \n Values for the content of `<meta name=\"robots\">`\n \n Value\n \n Description\n \n Used by\n \n `index`\n \n Allows the robot to index the page (default).\n \n All\n \n `noindex`\n \n Requests the robot to not index the page.\n \n All\n \n `follow`\n \n Allows the robot to follow the links on the page (default).\n \n All\n \n `nofollow`\n \n Requests the robot to not follow the links on the page.\n \n All\n \n `none`\n \n Equivalent to `noindex, nofollow`\n \n [Google](https://support.google.com/webmasters/answer/79812)\n \n `noodp`\n \n Prevents using the [Open Directory Project](https://www.dmoz.org/) description, if any, as the page description in search engine results.\n \n [Google](https://support.google.com/webmasters/answer/35624#nodmoz), [Yahoo](https://help.yahoo.com/kb/search-for-desktop/meta-tags-robotstxt-yahoo-search-sln2213.html#cont5), [Bing](https://www.bing.com/webmaster/help/which-robots-metatags-does-bing-support-5198d240)\n \n `noarchive`\n \n Requests the search engine not to cache the page content.\n \n [Google](https://developers.google.com/webmasters/control-crawl-index/docs/robots_meta_tag#valid-indexing--serving-directives), [Yahoo](https://help.yahoo.com/kb/search-for-desktop/SLN2213.html), [Bing](https://www.bing.com/webmaster/help/which-robots-metatags-does-bing-support-5198d240)\n \n `nosnippet`\n \n Prevents displaying any description of the page in search engine results.\n \n [Google](https://developers.google.com/webmasters/control-crawl-index/docs/robots_meta_tag#valid-indexing--serving-directives), [Bing](https://www.bing.com/webmaster/help/which-robots-metatags-does-bing-support-5198d240)\n \n `noimageindex`\n \n Requests this page not to appear as the referring page of an indexed image.\n \n [Google](https://developers.google.com/webmasters/control-crawl-index/docs/robots_meta_tag#valid-indexing--serving-directives)\n \n `nocache`\n \n Synonym of `noarchive`.\n \n [Bing](https://www.bing.com/webmaster/help/which-robots-metatags-does-bing-support-5198d240)\n \n **Notes:**\n \n * Only cooperative robots follow these rules. Do not expect to prevent e-mail harvesters with them.\n * The robot still needs to access the page in order to read these rules. To prevent bandwidth consumption, use a _[robots.txt](https://developer.mozilla.org/en-US/docs/Glossary/robots.txt \"robots.txt: Robots.txt is a file which is usually placed in the root of any website. It decides whether crawlers are permitted or forbidden access to the web site.\")_ file.\n * If you want to remove a page, `noindex` will work, but only after the robot visits the page again. Ensure that the `robots.txt` file is not preventing revisits.\n * Some values are mutually exclusive, like `index` and `noindex`, or `follow` and `nofollow`. In these cases the robot's behaviour is undefined and may vary between them.\n * Some crawler robots, like Google, Yahoo and Bing, support the same values for the HTTP header `X-Robots-Tag`; this allows non-HTML documents like images to use these rules.\n \n* `slurp`, is a synonym of `robots`, but only for Slurp - the crawler for Yahoo Search.\n* `viewport`, which gives hints about the size of the initial size of the [viewport](https://developer.mozilla.org/en-US/docs/Glossary/viewport \"viewport: A viewport represents a polygonal (normally rectangular) area in computer graphics that is currently being viewed. In web browser terms, it refers to the part of the document you're viewing which is currently visible in its window (or the screen, if the document is being viewed in full screen mode). Content outside the viewport is not visible onscreen until scrolled into view.\"). Used by mobile devices only.\n \n Values for the content of `<meta name=\"viewport\">`\n \n Value\n \n Possible subvalues\n \n Description\n \n `width`\n \n A positive integer number, or the text `device-width`\n \n Defines the pixel width of the viewport that you want the web site to be rendered at.\n \n `height`\n \n A positive integer, or the text `device-height`\n \n Defines the height of the viewport. Not used by any browser.\n \n `initial-scale`\n \n A positive number between `0.0` and `10.0`\n \n Defines the ratio between the device width (`device-width` in portrait mode or `device-height` in landscape mode) and the viewport size.\n \n `maximum-scale`\n \n A positive number between `0.0` and `10.0`\n \n Defines the maximum amount to zoom in. It must be greater or equal to the `minimum-scale` or the behaviour is undefined. Browser settings can ignore this rule and iOS10+ ignores it by default.\n \n `minimum-scale`\n \n A positive number between `0.0` and `10.0`\n \n Defines the minimum zoom level. It must be smaller or equal to the `maximum-scale` or the behaviour is undefined. Browser settings can ignore this rule and iOS10+ ignores it by default.\n \n `user-scalable`\n \n `yes` or `no`\n \n If set to `no`, the user is not able to zoom in the webpage. The default is `yes`. Browser settings can ignore this rule, and iOS10+ ignores it by default.\n \n Specification\n \n Status\n \n Comment\n \n [CSS Device Adaptation \n The definition of '<meta name=\"viewport\">' in that specification.](https://drafts.csswg.org/css-device-adapt/#viewport-meta)\n \n Working Draft\n \n Non-normatively describes the Viewport META element\n \n See also: [`@viewport`](https://developer.mozilla.org/en-US/docs/Web/CSS/@viewport \"The @viewport CSS at-rule lets you configure the viewport through which the document is viewed. It's primarily used for mobile devices, but is also used by desktop browsers that support features like \"snap to edge\" (such as Microsoft Edge).\")\n \n **Notes:**\n \n * Though unstandardized, this declaration is respected by most mobile browsers due to de-facto dominance.\n * The default values may vary between devices and browsers.\n * To learn about this declaration in Firefox for Mobile, see [this article](https://developer.mozilla.org/en-US/docs/Mobile/Viewport_meta_tag \"Mobile/Viewport meta tag\")." + } + }, + { + "name": "http-equiv", + "description": { + "kind": "markdown", + "value": "Defines a pragma directive. The attribute is named `**http-equiv**(alent)` because all the allowed values are names of particular HTTP headers:\n\n* `\"content-language\"` \n Defines the default language of the page. It can be overridden by the [lang](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/lang) attribute on any element.\n \n **Warning:** Do not use this value, as it is obsolete. Prefer the `lang` attribute on the [`<html>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/html \"The HTML <html> element represents the root (top-level element) of an HTML document, so it is also referred to as the root element. All other elements must be descendants of this element.\") element.\n \n* `\"content-security-policy\"` \n Allows page authors to define a [content policy](https://developer.mozilla.org/en-US/docs/Web/Security/CSP/CSP_policy_directives) for the current page. Content policies mostly specify allowed server origins and script endpoints which help guard against cross-site scripting attacks.\n* `\"content-type\"` \n Defines the [MIME type](https://developer.mozilla.org/en-US/docs/Glossary/MIME_type) of the document, followed by its character encoding. It follows the same syntax as the HTTP `content-type` entity-header field, but as it is inside a HTML page, most values other than `text/html` are impossible. Therefore the valid syntax for its `content` is the string '`text/html`' followed by a character set with the following syntax: '`; charset=_IANAcharset_`', where `IANAcharset` is the _preferred MIME name_ for a character set as [defined by the IANA.](https://www.iana.org/assignments/character-sets)\n \n **Warning:** Do not use this value, as it is obsolete. Use the [`charset`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta#attr-charset) attribute on the [`<meta>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta \"The HTML <meta> element represents metadata that cannot be represented by other HTML meta-related elements, like <base>, <link>, <script>, <style> or <title>.\") element.\n \n **Note:** As [`<meta>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta \"The HTML <meta> element represents metadata that cannot be represented by other HTML meta-related elements, like <base>, <link>, <script>, <style> or <title>.\") can't change documents' types in XHTML or HTML5's XHTML serialization, never set the MIME type to an XHTML MIME type with `<meta>`.\n \n* `\"refresh\"` \n This instruction specifies:\n * The number of seconds until the page should be reloaded - only if the [`content`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta#attr-content) attribute contains a positive integer.\n * The number of seconds until the page should redirect to another - only if the [`content`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta#attr-content) attribute contains a positive integer followed by the string '`;url=`', and a valid URL.\n* `\"set-cookie\"` \n Defines a [cookie](https://developer.mozilla.org/en-US/docs/cookie) for the page. Its content must follow the syntax defined in the [IETF HTTP Cookie Specification](https://tools.ietf.org/html/draft-ietf-httpstate-cookie-14).\n \n **Warning:** Do not use this instruction, as it is obsolete. Use the HTTP header [`Set-Cookie`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie) instead." + } + }, + { + "name": "content", + "description": { + "kind": "markdown", + "value": "This attribute contains the value for the [`http-equiv`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta#attr-http-equiv) or [`name`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta#attr-name) attribute, depending on which is used." + } + }, + { + "name": "charset", + "description": { + "kind": "markdown", + "value": "This attribute declares the page's character encoding. It must contain a [standard IANA MIME name for character encodings](https://www.iana.org/assignments/character-sets). Although the standard doesn't request a specific encoding, it suggests:\n\n* Authors are encouraged to use [`UTF-8`](https://developer.mozilla.org/en-US/docs/Glossary/UTF-8).\n* Authors should not use ASCII-incompatible encodings to avoid security risk: browsers not supporting them may interpret harmful content as HTML. This happens with the `JIS_C6226-1983`, `JIS_X0212-1990`, `HZ-GB-2312`, `JOHAB`, the ISO-2022 family and the EBCDIC family.\n\n**Note:** ASCII-incompatible encodings are those that don't map the 8-bit code points `0x20` to `0x7E` to the `0x0020` to `0x007E` Unicode code points)\n\n* Authors **must not** use `CESU-8`, `UTF-7`, `BOCU-1` and/or `SCSU` as [cross-site scripting](https://developer.mozilla.org/en-US/docs/Glossary/Cross-site_scripting) attacks with these encodings have been demonstrated.\n* Authors should not use `UTF-32` because not all HTML5 encoding algorithms can distinguish it from `UTF-16`.\n\n**Notes:**\n\n* The declared character encoding must match the one the page was saved with to avoid garbled characters and security holes.\n* The [`<meta>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta \"The HTML <meta> element represents metadata that cannot be represented by other HTML meta-related elements, like <base>, <link>, <script>, <style> or <title>.\") element declaring the encoding must be inside the [`<head>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/head \"The HTML <head> element provides general information (metadata) about the document, including its title and links to its scripts and style sheets.\") element and **within the first 1024 bytes** of the HTML as some browsers only look at those bytes before choosing an encoding.\n* This [`<meta>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta \"The HTML <meta> element represents metadata that cannot be represented by other HTML meta-related elements, like <base>, <link>, <script>, <style> or <title>.\") element is only one part of the [algorithm to determine a page's character set](https://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#encoding-sniffing-algorithm \"Algorithm charset page\"). The [`Content-Type` header](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Type) and any [Byte-Order Marks](https://developer.mozilla.org/en-US/docs/Glossary/Byte-Order_Mark \"The definition of that term (Byte-Order Marks) has not been written yet; please consider contributing it!\") override this element.\n* It is strongly recommended to define the character encoding. If a page's encoding is undefined, cross-scripting techniques are possible, such as the [`UTF-7` fallback cross-scripting technique](https://code.google.com/p/doctype-mirror/wiki/ArticleUtf7).\n* The [`<meta>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta \"The HTML <meta> element represents metadata that cannot be represented by other HTML meta-related elements, like <base>, <link>, <script>, <style> or <title>.\") element with a `charset` attribute is a synonym for the pre-HTML5 `<meta http-equiv=\"Content-Type\" content=\"text/html; charset=_IANAcharset_\">`, where _`IANAcharset`_ contains the value of the equivalent [`charset`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta#attr-charset) attribute. This syntax is still allowed, although no longer recommended." + } + }, + { + "name": "scheme", + "description": "This attribute defines the scheme in which metadata is described. A scheme is a context leading to the correct interpretations of the [`content`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta#attr-content) value, like a format.\n\n**Warning:** Do not use this value, as it is obsolete. There is no replacement as there was no real usage for it." + } + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/meta" + } + ] + }, + { + "name": "style", + "description": { + "kind": "markdown", + "value": "The style element allows authors to embed style information in their documents. The style element is one of several inputs to the styling processing model. The element does not represent content for the user." + }, + "attributes": [ + { + "name": "media", + "description": { + "kind": "markdown", + "value": "This attribute defines which media the style should be applied to. Its value is a [media query](https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Media_queries), which defaults to `all` if the attribute is missing." + } + }, + { + "name": "nonce", + "description": { + "kind": "markdown", + "value": "A cryptographic nonce (number used once) used to whitelist inline styles in a [style-src Content-Security-Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/style-src). The server must generate a unique nonce value each time it transmits a policy. It is critical to provide a nonce that cannot be guessed as bypassing a resource’s policy is otherwise trivial." + } + }, + { + "name": "type", + "description": { + "kind": "markdown", + "value": "This attribute defines the styling language as a MIME type (charset should not be specified). This attribute is optional and defaults to `text/css` if it is not specified — there is very little reason to include this in modern web documents." + } + }, + { + "name": "scoped", + "valueSet": "v" + }, + { + "name": "title", + "description": "This attribute specifies [alternative style sheet](https://developer.mozilla.org/en-US/docs/Web/CSS/Alternative_style_sheets) sets." + } + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/style" + } + ] + }, + { + "name": "body", + "description": { + "kind": "markdown", + "value": "The body element represents the content of the document." + }, + "attributes": [ + { + "name": "onafterprint", + "description": { + "kind": "markdown", + "value": "Function to call after the user has printed the document." + } + }, + { + "name": "onbeforeprint", + "description": { + "kind": "markdown", + "value": "Function to call when the user requests printing of the document." + } + }, + { + "name": "onbeforeunload", + "description": { + "kind": "markdown", + "value": "Function to call when the document is about to be unloaded." + } + }, + { + "name": "onhashchange", + "description": { + "kind": "markdown", + "value": "Function to call when the fragment identifier part (starting with the hash (`'#'`) character) of the document's current address has changed." + } + }, + { + "name": "onlanguagechange", + "description": { + "kind": "markdown", + "value": "Function to call when the preferred languages changed." + } + }, + { + "name": "onmessage", + "description": { + "kind": "markdown", + "value": "Function to call when the document has received a message." + } + }, + { + "name": "onoffline", + "description": { + "kind": "markdown", + "value": "Function to call when network communication has failed." + } + }, + { + "name": "ononline", + "description": { + "kind": "markdown", + "value": "Function to call when network communication has been restored." + } + }, + { + "name": "onpagehide" + }, + { + "name": "onpageshow" + }, + { + "name": "onpopstate", + "description": { + "kind": "markdown", + "value": "Function to call when the user has navigated session history." + } + }, + { + "name": "onstorage", + "description": { + "kind": "markdown", + "value": "Function to call when the storage area has changed." + } + }, + { + "name": "onunload", + "description": { + "kind": "markdown", + "value": "Function to call when the document is going away." + } + }, + { + "name": "alink", + "description": "Color of text for hyperlinks when selected. _This method is non-conforming, use CSS [`color`](https://developer.mozilla.org/en-US/docs/Web/CSS/color \"The color CSS property sets the foreground color value of an element's text and text decorations, and sets the currentcolor value.\") property in conjunction with the [`:active`](https://developer.mozilla.org/en-US/docs/Web/CSS/:active \"The :active CSS pseudo-class represents an element (such as a button) that is being activated by the user.\") pseudo-class instead._" + }, + { + "name": "background", + "description": "URI of a image to use as a background. _This method is non-conforming, use CSS [`background`](https://developer.mozilla.org/en-US/docs/Web/CSS/background \"The background shorthand CSS property sets all background style properties at once, such as color, image, origin and size, or repeat method.\") property on the element instead._" + }, + { + "name": "bgcolor", + "description": "Background color for the document. _This method is non-conforming, use CSS [`background-color`](https://developer.mozilla.org/en-US/docs/Web/CSS/background-color \"The background-color CSS property sets the background color of an element.\") property on the element instead._" + }, + { + "name": "bottommargin", + "description": "The margin of the bottom of the body. _This method is non-conforming, use CSS [`margin-bottom`](https://developer.mozilla.org/en-US/docs/Web/CSS/margin-bottom \"The margin-bottom CSS property sets the margin area on the bottom of an element. A positive value places it farther from its neighbors, while a negative value places it closer.\") property on the element instead._" + }, + { + "name": "leftmargin", + "description": "The margin of the left of the body. _This method is non-conforming, use CSS [`margin-left`](https://developer.mozilla.org/en-US/docs/Web/CSS/margin-left \"The margin-left CSS property sets the margin area on the left side of an element. A positive value places it farther from its neighbors, while a negative value places it closer.\") property on the element instead._" + }, + { + "name": "link", + "description": "Color of text for unvisited hypertext links. _This method is non-conforming, use CSS [`color`](https://developer.mozilla.org/en-US/docs/Web/CSS/color \"The color CSS property sets the foreground color value of an element's text and text decorations, and sets the currentcolor value.\") property in conjunction with the [`:link`](https://developer.mozilla.org/en-US/docs/Web/CSS/:link \"The :link CSS pseudo-class represents an element that has not yet been visited. It matches every unvisited <a>, <area>, or <link> element that has an href attribute.\") pseudo-class instead._" + }, + { + "name": "onblur", + "description": "Function to call when the document loses focus." + }, + { + "name": "onerror", + "description": "Function to call when the document fails to load properly." + }, + { + "name": "onfocus", + "description": "Function to call when the document receives focus." + }, + { + "name": "onload", + "description": "Function to call when the document has finished loading." + }, + { + "name": "onredo", + "description": "Function to call when the user has moved forward in undo transaction history." + }, + { + "name": "onresize", + "description": "Function to call when the document has been resized." + }, + { + "name": "onundo", + "description": "Function to call when the user has moved backward in undo transaction history." + }, + { + "name": "rightmargin", + "description": "The margin of the right of the body. _This method is non-conforming, use CSS [`margin-right`](https://developer.mozilla.org/en-US/docs/Web/CSS/margin-right \"The margin-right CSS property sets the margin area on the right side of an element. A positive value places it farther from its neighbors, while a negative value places it closer.\") property on the element instead._" + }, + { + "name": "text", + "description": "Foreground color of text. _This method is non-conforming, use CSS [`color`](https://developer.mozilla.org/en-US/docs/Web/CSS/color \"The color CSS property sets the foreground color value of an element's text and text decorations, and sets the currentcolor value.\") property on the element instead._" + }, + { + "name": "topmargin", + "description": "The margin of the top of the body. _This method is non-conforming, use CSS [`margin-top`](https://developer.mozilla.org/en-US/docs/Web/CSS/margin-top \"The margin-top CSS property sets the margin area on the top of an element. A positive value places it farther from its neighbors, while a negative value places it closer.\") property on the element instead._" + }, + { + "name": "vlink", + "description": "Color of text for visited hypertext links. _This method is non-conforming, use CSS [`color`](https://developer.mozilla.org/en-US/docs/Web/CSS/color \"The color CSS property sets the foreground color value of an element's text and text decorations, and sets the currentcolor value.\") property in conjunction with the [`:visited`](https://developer.mozilla.org/en-US/docs/Web/CSS/:visited \"The :visited CSS pseudo-class represents links that the user has already visited. For privacy reasons, the styles that can be modified using this selector are very limited.\") pseudo-class instead._" + } + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/body" + } + ] + }, + { + "name": "article", + "description": { + "kind": "markdown", + "value": "The article element represents a complete, or self-contained, composition in a document, page, application, or site and that is, in principle, independently distributable or reusable, e.g. in syndication. This could be a forum post, a magazine or newspaper article, a blog entry, a user-submitted comment, an interactive widget or gadget, or any other independent item of content. Each article should be identified, typically by including a heading (h1–h6 element) as a child of the article element." + }, + "attributes": [], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/article" + } + ] + }, + { + "name": "section", + "description": { + "kind": "markdown", + "value": "The section element represents a generic section of a document or application. A section, in this context, is a thematic grouping of content. Each section should be identified, typically by including a heading ( h1- h6 element) as a child of the section element." + }, + "attributes": [], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/section" + } + ] + }, + { + "name": "nav", + "description": { + "kind": "markdown", + "value": "The nav element represents a section of a page that links to other pages or to parts within the page: a section with navigation links." + }, + "attributes": [], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/nav" + } + ] + }, + { + "name": "aside", + "description": { + "kind": "markdown", + "value": "The aside element represents a section of a page that consists of content that is tangentially related to the content around the aside element, and which could be considered separate from that content. Such sections are often represented as sidebars in printed typography." + }, + "attributes": [], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/aside" + } + ] + }, + { + "name": "h1", + "description": { + "kind": "markdown", + "value": "The h1 element represents a section heading." + }, + "attributes": [], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/Heading_Elements" + } + ] + }, + { + "name": "h2", + "description": { + "kind": "markdown", + "value": "The h2 element represents a section heading." + }, + "attributes": [], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/Heading_Elements" + } + ] + }, + { + "name": "h3", + "description": { + "kind": "markdown", + "value": "The h3 element represents a section heading." + }, + "attributes": [], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/Heading_Elements" + } + ] + }, + { + "name": "h4", + "description": { + "kind": "markdown", + "value": "The h4 element represents a section heading." + }, + "attributes": [], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/Heading_Elements" + } + ] + }, + { + "name": "h5", + "description": { + "kind": "markdown", + "value": "The h5 element represents a section heading." + }, + "attributes": [], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/Heading_Elements" + } + ] + }, + { + "name": "h6", + "description": { + "kind": "markdown", + "value": "The h6 element represents a section heading." + }, + "attributes": [], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/Heading_Elements" + } + ] + }, + { + "name": "header", + "description": { + "kind": "markdown", + "value": "The header element represents introductory content for its nearest ancestor sectioning content or sectioning root element. A header typically contains a group of introductory or navigational aids. When the nearest ancestor sectioning content or sectioning root element is the body element, then it applies to the whole page." + }, + "attributes": [], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/header" + } + ] + }, + { + "name": "footer", + "description": { + "kind": "markdown", + "value": "The footer element represents a footer for its nearest ancestor sectioning content or sectioning root element. A footer typically contains information about its section such as who wrote it, links to related documents, copyright data, and the like." + }, + "attributes": [], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/footer" + } + ] + }, + { + "name": "address", + "description": { + "kind": "markdown", + "value": "The address element represents the contact information for its nearest article or body element ancestor. If that is the body element, then the contact information applies to the document as a whole." + }, + "attributes": [], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/address" + } + ] + }, + { + "name": "p", + "description": { + "kind": "markdown", + "value": "The p element represents a paragraph." + }, + "attributes": [], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/p" + } + ] + }, + { + "name": "hr", + "description": { + "kind": "markdown", + "value": "The hr element represents a paragraph-level thematic break, e.g. a scene change in a story, or a transition to another topic within a section of a reference book." + }, + "void": true, + "attributes": [ + { + "name": "align", + "description": "Sets the alignment of the rule on the page. If no value is specified, the default value is `left`." + }, + { + "name": "color", + "description": "Sets the color of the rule through color name or hexadecimal value." + }, + { + "name": "noshade", + "description": "Sets the rule to have no shading." + }, + { + "name": "size", + "description": "Sets the height, in pixels, of the rule." + }, + { + "name": "width", + "description": "Sets the length of the rule on the page through a pixel or percentage value." + } + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/hr" + } + ] + }, + { + "name": "pre", + "description": { + "kind": "markdown", + "value": "The pre element represents a block of preformatted text, in which structure is represented by typographic conventions rather than by elements." + }, + "attributes": [ + { + "name": "cols", + "description": "Contains the _preferred_ count of characters that a line should have. It was a non-standard synonym of [`width`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/pre#attr-width). To achieve such an effect, use CSS [`width`](https://developer.mozilla.org/en-US/docs/Web/CSS/width \"The width CSS property sets an element's width. By default it sets the width of the content area, but if box-sizing is set to border-box, it sets the width of the border area.\") instead." + }, + { + "name": "width", + "description": "Contains the _preferred_ count of characters that a line should have. Though technically still implemented, this attribute has no visual effect; to achieve such an effect, use CSS [`width`](https://developer.mozilla.org/en-US/docs/Web/CSS/width \"The width CSS property sets an element's width. By default it sets the width of the content area, but if box-sizing is set to border-box, it sets the width of the border area.\") instead." + }, + { + "name": "wrap", + "description": "Is a _hint_ indicating how the overflow must happen. In modern browser this hint is ignored and no visual effect results in its present; to achieve such an effect, use CSS [`white-space`](https://developer.mozilla.org/en-US/docs/Web/CSS/white-space \"The white-space CSS property sets how white space inside an element is handled.\") instead." + } + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/pre" + } + ] + }, + { + "name": "blockquote", + "description": { + "kind": "markdown", + "value": "The blockquote element represents content that is quoted from another source, optionally with a citation which must be within a footer or cite element, and optionally with in-line changes such as annotations and abbreviations." + }, + "attributes": [ + { + "name": "cite", + "description": { + "kind": "markdown", + "value": "A URL that designates a source document or message for the information quoted. This attribute is intended to point to information explaining the context or the reference for the quote." + } + } + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/blockquote" + } + ] + }, + { + "name": "ol", + "description": { + "kind": "markdown", + "value": "The ol element represents a list of items, where the items have been intentionally ordered, such that changing the order would change the meaning of the document." + }, + "attributes": [ + { + "name": "reversed", + "valueSet": "v", + "description": { + "kind": "markdown", + "value": "This Boolean attribute specifies that the items of the list are specified in reversed order." + } + }, + { + "name": "start", + "description": { + "kind": "markdown", + "value": "This integer attribute specifies the start value for numbering the individual list items. Although the ordering type of list elements might be Roman numerals, such as XXXI, or letters, the value of start is always represented as a number. To start numbering elements from the letter \"C\", use `<ol start=\"3\">`.\n\n**Note**: This attribute was deprecated in HTML4, but reintroduced in HTML5." + } + }, + { + "name": "type", + "valueSet": "lt", + "description": { + "kind": "markdown", + "value": "Indicates the numbering type:\n\n* `'a'` indicates lowercase letters,\n* `'A'` indicates uppercase letters,\n* `'i'` indicates lowercase Roman numerals,\n* `'I'` indicates uppercase Roman numerals,\n* and `'1'` indicates numbers (default).\n\nThe type set is used for the entire list unless a different [`type`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/li#attr-type) attribute is used within an enclosed [`<li>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/li \"The HTML <li> element is used to represent an item in a list. It must be contained in a parent element: an ordered list (<ol>), an unordered list (<ul>), or a menu (<menu>). In menus and unordered lists, list items are usually displayed using bullet points. In ordered lists, they are usually displayed with an ascending counter on the left, such as a number or letter.\") element.\n\n**Note:** This attribute was deprecated in HTML4, but reintroduced in HTML5.\n\nUnless the value of the list number matters (e.g. in legal or technical documents where items are to be referenced by their number/letter), the CSS [`list-style-type`](https://developer.mozilla.org/en-US/docs/Web/CSS/list-style-type \"The list-style-type CSS property sets the marker (such as a disc, character, or custom counter style) of a list item element.\") property should be used instead." + } + }, + { + "name": "compact", + "description": "This Boolean attribute hints that the list should be rendered in a compact style. The interpretation of this attribute depends on the user agent and it doesn't work in all browsers.\n\n**Warning:** Do not use this attribute, as it has been deprecated: the [`<ol>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ol \"The HTML <ol> element represents an ordered list of items, typically rendered as a numbered list.\") element should be styled using [CSS](https://developer.mozilla.org/en-US/docs/CSS). To give an effect similar to the `compact` attribute, the [CSS](https://developer.mozilla.org/en-US/docs/CSS) property [`line-height`](https://developer.mozilla.org/en-US/docs/Web/CSS/line-height \"The line-height CSS property sets the amount of space used for lines, such as in text. On block-level elements, it specifies the minimum height of line boxes within the element. On non-replaced inline elements, it specifies the height that is used to calculate line box height.\") can be used with a value of `80%`." + } + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/ol" + } + ] + }, + { + "name": "ul", + "description": { + "kind": "markdown", + "value": "The ul element represents a list of items, where the order of the items is not important — that is, where changing the order would not materially change the meaning of the document." + }, + "attributes": [ + { + "name": "compact", + "description": "This Boolean attribute hints that the list should be rendered in a compact style. The interpretation of this attribute depends on the user agent and it doesn't work in all browsers.\n\n**Usage note: **Do not use this attribute, as it has been deprecated: the [`<ul>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ul \"The HTML <ul> element represents an unordered list of items, typically rendered as a bulleted list.\") element should be styled using [CSS](https://developer.mozilla.org/en-US/docs/CSS). To give a similar effect as the `compact` attribute, the [CSS](https://developer.mozilla.org/en-US/docs/CSS) property [line-height](https://developer.mozilla.org/en-US/docs/CSS/line-height) can be used with a value of `80%`." + } + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/ul" + } + ] + }, + { + "name": "li", + "description": { + "kind": "markdown", + "value": "The li element represents a list item. If its parent element is an ol, ul, or menu element, then the element is an item of the parent element's list, as defined for those elements. Otherwise, the list item has no defined list-related relationship to any other li element." + }, + "attributes": [ + { + "name": "value", + "description": { + "kind": "markdown", + "value": "This integer attribute indicates the current ordinal value of the list item as defined by the [`<ol>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ol \"The HTML <ol> element represents an ordered list of items, typically rendered as a numbered list.\") element. The only allowed value for this attribute is a number, even if the list is displayed with Roman numerals or letters. List items that follow this one continue numbering from the value set. The **value** attribute has no meaning for unordered lists ([`<ul>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ul \"The HTML <ul> element represents an unordered list of items, typically rendered as a bulleted list.\")) or for menus ([`<menu>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/menu \"The HTML <menu> element represents a group of commands that a user can perform or activate. This includes both list menus, which might appear across the top of a screen, as well as context menus, such as those that might appear underneath a button after it has been clicked.\")).\n\n**Note**: This attribute was deprecated in HTML4, but reintroduced in HTML5.\n\n**Note:** Prior to Gecko 9.0, negative values were incorrectly converted to 0. Starting in Gecko 9.0 all integer values are correctly parsed." + } + }, + { + "name": "type", + "description": "This character attribute indicates the numbering type:\n\n* `a`: lowercase letters\n* `A`: uppercase letters\n* `i`: lowercase Roman numerals\n* `I`: uppercase Roman numerals\n* `1`: numbers\n\nThis type overrides the one used by its parent [`<ol>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ol \"The HTML <ol> element represents an ordered list of items, typically rendered as a numbered list.\") element, if any.\n\n**Usage note:** This attribute has been deprecated: use the CSS [`list-style-type`](https://developer.mozilla.org/en-US/docs/Web/CSS/list-style-type \"The list-style-type CSS property sets the marker (such as a disc, character, or custom counter style) of a list item element.\") property instead." + } + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/li" + } + ] + }, + { + "name": "dl", + "description": { + "kind": "markdown", + "value": "The dl element represents an association list consisting of zero or more name-value groups (a description list). A name-value group consists of one or more names (dt elements) followed by one or more values (dd elements), ignoring any nodes other than dt and dd elements. Within a single dl element, there should not be more than one dt element for each name." + }, + "attributes": [], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/dl" + } + ] + }, + { + "name": "dt", + "description": { + "kind": "markdown", + "value": "The dt element represents the term, or name, part of a term-description group in a description list (dl element)." + }, + "attributes": [], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/dt" + } + ] + }, + { + "name": "dd", + "description": { + "kind": "markdown", + "value": "The dd element represents the description, definition, or value, part of a term-description group in a description list (dl element)." + }, + "attributes": [ + { + "name": "nowrap", + "description": "If the value of this attribute is set to `yes`, the definition text will not wrap. The default value is `no`." + } + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/dd" + } + ] + }, + { + "name": "figure", + "description": { + "kind": "markdown", + "value": "The figure element represents some flow content, optionally with a caption, that is self-contained (like a complete sentence) and is typically referenced as a single unit from the main flow of the document." + }, + "attributes": [], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/figure" + } + ] + }, + { + "name": "figcaption", + "description": { + "kind": "markdown", + "value": "The figcaption element represents a caption or legend for the rest of the contents of the figcaption element's parent figure element, if any." + }, + "attributes": [], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/figcaption" + } + ] + }, + { + "name": "main", + "description": { + "kind": "markdown", + "value": "The main element represents the main content of the body of a document or application. The main content area consists of content that is directly related to or expands upon the central topic of a document or central functionality of an application." + }, + "attributes": [], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/main" + } + ] + }, + { + "name": "div", + "description": { + "kind": "markdown", + "value": "The div element has no special meaning at all. It represents its children. It can be used with the class, lang, and title attributes to mark up semantics common to a group of consecutive elements." + }, + "attributes": [], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/div" + } + ] + }, + { + "name": "a", + "description": { + "kind": "markdown", + "value": "If the a element has an href attribute, then it represents a hyperlink (a hypertext anchor) labeled by its contents." + }, + "attributes": [ + { + "name": "href", + "description": { + "kind": "markdown", + "value": "Contains a URL or a URL fragment that the hyperlink points to.\nA URL fragment is a name preceded by a hash mark (`#`), which specifies an internal target location (an [`id`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes#attr-id) of an HTML element) within the current document. URLs are not restricted to Web (HTTP)-based documents, but can use any protocol supported by the browser. For example, [`file:`](https://en.wikipedia.org/wiki/File_URI_scheme), `ftp:`, and `mailto:` work in most browsers.\n\n**Note:** You can use `href=\"#top\"` or the empty fragment `href=\"#\"` to link to the top of the current page. [This behavior is specified by HTML5](https://www.w3.org/TR/html5/single-page.html#scroll-to-fragid)." + } + }, + { + "name": "target", + "valueSet": "target", + "description": { + "kind": "markdown", + "value": "Specifies where to display the linked URL. It is a name of, or keyword for, a _browsing context_: a tab, window, or `<iframe>`. The following keywords have special meanings:\n\n* `_self`: Load the URL into the same browsing context as the current one. This is the default behavior.\n* `_blank`: Load the URL into a new browsing context. This is usually a tab, but users can configure browsers to use new windows instead.\n* `_parent`: Load the URL into the parent browsing context of the current one. If there is no parent, this behaves the same way as `_self`.\n* `_top`: Load the URL into the top-level browsing context (that is, the \"highest\" browsing context that is an ancestor of the current one, and has no parent). If there is no parent, this behaves the same way as `_self`.\n\n**Note:** When using `target`, consider adding `rel=\"noreferrer\"` to avoid exploitation of the `window.opener` API.\n\n**Note:** Linking to another page using `target=\"_blank\"` will run the new page on the same process as your page. If the new page is executing expensive JS, your page's performance may suffer. To avoid this use `rel=\"noopener\"`." + } + }, + { + "name": "download", + "description": { + "kind": "markdown", + "value": "This attribute instructs browsers to download a URL instead of navigating to it, so the user will be prompted to save it as a local file. If the attribute has a value, it is used as the pre-filled file name in the Save prompt (the user can still change the file name if they want). There are no restrictions on allowed values, though `/` and `\\` are converted to underscores. Most file systems limit some punctuation in file names, and browsers will adjust the suggested name accordingly.\n\n**Notes:**\n\n* This attribute only works for [same-origin URLs](https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy).\n* Although HTTP(s) URLs need to be in the same-origin, [`blob:` URLs](https://developer.mozilla.org/en-US/docs/Web/API/URL.createObjectURL) and [`data:` URLs](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs) are allowed so that content generated by JavaScript, such as pictures created in an image-editor Web app, can be downloaded.\n* If the HTTP header [`Content-Disposition:`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Disposition) gives a different filename than this attribute, the HTTP header takes priority over this attribute.\n* If `Content-Disposition:` is set to `inline`, Firefox prioritizes `Content-Disposition`, like the filename case, while Chrome prioritizes the `download` attribute." + } + }, + { + "name": "ping", + "description": { + "kind": "markdown", + "value": "Contains a space-separated list of URLs to which, when the hyperlink is followed, [`POST`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/POST \"The HTTP POST method sends data to the server. The type of the body of the request is indicated by the Content-Type header.\") requests with the body `PING` will be sent by the browser (in the background). Typically used for tracking." + } + }, + { + "name": "rel", + "description": { + "kind": "markdown", + "value": "Specifies the relationship of the target object to the link object. The value is a space-separated list of [link types](https://developer.mozilla.org/en-US/docs/Web/HTML/Link_types)." + } + }, + { + "name": "hreflang", + "description": { + "kind": "markdown", + "value": "This attribute indicates the human language of the linked resource. It is purely advisory, with no built-in functionality. Allowed values are determined by [BCP47](https://www.ietf.org/rfc/bcp/bcp47.txt \"Tags for Identifying Languages\")." + } + }, + { + "name": "type", + "description": { + "kind": "markdown", + "value": "Specifies the media type in the form of a [MIME type](https://developer.mozilla.org/en-US/docs/Glossary/MIME_type \"MIME type: A MIME type (now properly called \"media type\", but also sometimes \"content type\") is a string sent along with a file indicating the type of the file (describing the content format, for example, a sound file might be labeled audio/ogg, or an image file image/png).\") for the linked URL. It is purely advisory, with no built-in functionality." + } + }, + { + "name": "referrerpolicy", + "description": "Indicates which [referrer](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referer) to send when fetching the URL:\n\n* `'no-referrer'` means the `Referer:` header will not be sent.\n* `'no-referrer-when-downgrade'` means no `Referer:` header will be sent when navigating to an origin without HTTPS. This is the default behavior.\n* `'origin'` means the referrer will be the [origin](https://developer.mozilla.org/en-US/docs/Glossary/Origin) of the page, not including information after the domain.\n* `'origin-when-cross-origin'` meaning that navigations to other origins will be limited to the scheme, the host and the port, while navigations on the same origin will include the referrer's path.\n* `'strict-origin-when-cross-origin'`\n* `'unsafe-url'` means the referrer will include the origin and path, but not the fragment, password, or username. This is unsafe because it can leak data from secure URLs to insecure ones." + } + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/a" + } + ] + }, + { + "name": "em", + "description": { + "kind": "markdown", + "value": "The em element represents stress emphasis of its contents." + }, + "attributes": [], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/em" + } + ] + }, + { + "name": "strong", + "description": { + "kind": "markdown", + "value": "The strong element represents strong importance, seriousness, or urgency for its contents." + }, + "attributes": [], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/strong" + } + ] + }, + { + "name": "small", + "description": { + "kind": "markdown", + "value": "The small element represents side comments such as small print." + }, + "attributes": [], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/small" + } + ] + }, + { + "name": "s", + "description": { + "kind": "markdown", + "value": "The s element represents contents that are no longer accurate or no longer relevant." + }, + "attributes": [], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/s" + } + ] + }, + { + "name": "cite", + "description": { + "kind": "markdown", + "value": "The cite element represents a reference to a creative work. It must include the title of the work or the name of the author(person, people or organization) or an URL reference, or a reference in abbreviated form as per the conventions used for the addition of citation metadata." + }, + "attributes": [], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/cite" + } + ] + }, + { + "name": "q", + "description": { + "kind": "markdown", + "value": "The q element represents some phrasing content quoted from another source." + }, + "attributes": [ + { + "name": "cite", + "description": { + "kind": "markdown", + "value": "The value of this attribute is a URL that designates a source document or message for the information quoted. This attribute is intended to point to information explaining the context or the reference for the quote." + } + } + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/q" + } + ] + }, + { + "name": "dfn", + "description": { + "kind": "markdown", + "value": "The dfn element represents the defining instance of a term. The paragraph, description list group, or section that is the nearest ancestor of the dfn element must also contain the definition(s) for the term given by the dfn element." + }, + "attributes": [], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/dfn" + } + ] + }, + { + "name": "abbr", + "description": { + "kind": "markdown", + "value": "The abbr element represents an abbreviation or acronym, optionally with its expansion. The title attribute may be used to provide an expansion of the abbreviation. The attribute, if specified, must contain an expansion of the abbreviation, and nothing else." + }, + "attributes": [], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/abbr" + } + ] + }, + { + "name": "ruby", + "description": { + "kind": "markdown", + "value": "The ruby element allows one or more spans of phrasing content to be marked with ruby annotations. Ruby annotations are short runs of text presented alongside base text, primarily used in East Asian typography as a guide for pronunciation or to include other annotations. In Japanese, this form of typography is also known as furigana. Ruby text can appear on either side, and sometimes both sides, of the base text, and it is possible to control its position using CSS. A more complete introduction to ruby can be found in the Use Cases & Exploratory Approaches for Ruby Markup document as well as in CSS Ruby Module Level 1. [RUBY-UC] [CSSRUBY]" + }, + "attributes": [], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/ruby" + } + ] + }, + { + "name": "rb", + "description": { + "kind": "markdown", + "value": "The rb element marks the base text component of a ruby annotation. When it is the child of a ruby element, it doesn't represent anything itself, but its parent ruby element uses it as part of determining what it represents." + }, + "attributes": [], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/rb" + } + ] + }, + { + "name": "rt", + "description": { + "kind": "markdown", + "value": "The rt element marks the ruby text component of a ruby annotation. When it is the child of a ruby element or of an rtc element that is itself the child of a ruby element, it doesn't represent anything itself, but its ancestor ruby element uses it as part of determining what it represents." + }, + "attributes": [], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/rt" + } + ] + }, + { + "name": "rp", + "description": { + "kind": "markdown", + "value": "The rp element is used to provide fallback text to be shown by user agents that don't support ruby annotations. One widespread convention is to provide parentheses around the ruby text component of a ruby annotation." + }, + "attributes": [], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/rp" + } + ] + }, + { + "name": "time", + "description": { + "kind": "markdown", + "value": "The time element represents its contents, along with a machine-readable form of those contents in the datetime attribute. The kind of content is limited to various kinds of dates, times, time-zone offsets, and durations, as described below." + }, + "attributes": [ + { + "name": "datetime", + "description": { + "kind": "markdown", + "value": "This attribute indicates the time and/or date of the element and must be in one of the formats described below." + } + } + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/time" + } + ] + }, + { + "name": "code", + "description": { + "kind": "markdown", + "value": "The code element represents a fragment of computer code. This could be an XML element name, a file name, a computer program, or any other string that a computer would recognize." + }, + "attributes": [], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/code" + } + ] + }, + { + "name": "var", + "description": { + "kind": "markdown", + "value": "The var element represents a variable. This could be an actual variable in a mathematical expression or programming context, an identifier representing a constant, a symbol identifying a physical quantity, a function parameter, or just be a term used as a placeholder in prose." + }, + "attributes": [], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/var" + } + ] + }, + { + "name": "samp", + "description": { + "kind": "markdown", + "value": "The samp element represents sample or quoted output from another program or computing system." + }, + "attributes": [], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/samp" + } + ] + }, + { + "name": "kbd", + "description": { + "kind": "markdown", + "value": "The kbd element represents user input (typically keyboard input, although it may also be used to represent other input, such as voice commands)." + }, + "attributes": [], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/kbd" + } + ] + }, + { + "name": "sub", + "description": { + "kind": "markdown", + "value": "The sub element represents a subscript." + }, + "attributes": [], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/sub" + } + ] + }, + { + "name": "sup", + "description": { + "kind": "markdown", + "value": "The sup element represents a superscript." + }, + "attributes": [], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/sup" + } + ] + }, + { + "name": "i", + "description": { + "kind": "markdown", + "value": "The i element represents a span of text in an alternate voice or mood, or otherwise offset from the normal prose in a manner indicating a different quality of text, such as a taxonomic designation, a technical term, an idiomatic phrase from another language, transliteration, a thought, or a ship name in Western texts." + }, + "attributes": [], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/i" + } + ] + }, + { + "name": "b", + "description": { + "kind": "markdown", + "value": "The b element represents a span of text to which attention is being drawn for utilitarian purposes without conveying any extra importance and with no implication of an alternate voice or mood, such as key words in a document abstract, product names in a review, actionable words in interactive text-driven software, or an article lede." + }, + "attributes": [], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/b" + } + ] + }, + { + "name": "u", + "description": { + "kind": "markdown", + "value": "The u element represents a span of text with an unarticulated, though explicitly rendered, non-textual annotation, such as labeling the text as being a proper name in Chinese text (a Chinese proper name mark), or labeling the text as being misspelt." + }, + "attributes": [], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/u" + } + ] + }, + { + "name": "mark", + "description": { + "kind": "markdown", + "value": "The mark element represents a run of text in one document marked or highlighted for reference purposes, due to its relevance in another context. When used in a quotation or other block of text referred to from the prose, it indicates a highlight that was not originally present but which has been added to bring the reader's attention to a part of the text that might not have been considered important by the original author when the block was originally written, but which is now under previously unexpected scrutiny. When used in the main prose of a document, it indicates a part of the document that has been highlighted due to its likely relevance to the user's current activity." + }, + "attributes": [], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/mark" + } + ] + }, + { + "name": "bdi", + "description": { + "kind": "markdown", + "value": "The bdi element represents a span of text that is to be isolated from its surroundings for the purposes of bidirectional text formatting. [BIDI]" + }, + "attributes": [], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/bdi" + } + ] + }, + { + "name": "bdo", + "description": { + "kind": "markdown", + "value": "The bdo element represents explicit text directionality formatting control for its children. It allows authors to override the Unicode bidirectional algorithm by explicitly specifying a direction override. [BIDI]" + }, + "attributes": [ + { + "name": "dir", + "description": "The direction in which text should be rendered in this element's contents. Possible values are:\n\n* `ltr`: Indicates that the text should go in a left-to-right direction.\n* `rtl`: Indicates that the text should go in a right-to-left direction." + } + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/bdo" + } + ] + }, + { + "name": "span", + "description": { + "kind": "markdown", + "value": "The span element doesn't mean anything on its own, but can be useful when used together with the global attributes, e.g. class, lang, or dir. It represents its children." + }, + "attributes": [], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/span" + } + ] + }, + { + "name": "br", + "description": { + "kind": "markdown", + "value": "The br element represents a line break." + }, + "void": true, + "attributes": [ + { + "name": "clear", + "description": "Indicates where to begin the next line after the break." + } + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/br" + } + ] + }, + { + "name": "wbr", + "description": { + "kind": "markdown", + "value": "The wbr element represents a line break opportunity." + }, + "void": true, + "attributes": [], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/wbr" + } + ] + }, + { + "name": "ins", + "description": { + "kind": "markdown", + "value": "The ins element represents an addition to the document." + }, + "attributes": [ + { + "name": "cite", + "description": "This attribute defines the URI of a resource that explains the change, such as a link to meeting minutes or a ticket in a troubleshooting system." + }, + { + "name": "datetime", + "description": "This attribute indicates the time and date of the change and must be a valid date with an optional time string. If the value cannot be parsed as a date with an optional time string, the element does not have an associated time stamp. For the format of the string without a time, see [Format of a valid date string](https://developer.mozilla.org/en-US/docs/Web/HTML/Date_and_time_formats#Format_of_a_valid_date_string \"Certain HTML elements use date and/or time values. The formats of the strings that specify these are described in this article.\") in [Date and time formats used in HTML](https://developer.mozilla.org/en-US/docs/Web/HTML/Date_and_time_formats \"Certain HTML elements use date and/or time values. The formats of the strings that specify these are described in this article.\"). The format of the string if it includes both date and time is covered in [Format of a valid local date and time string](https://developer.mozilla.org/en-US/docs/Web/HTML/Date_and_time_formats#Format_of_a_valid_local_date_and_time_string \"Certain HTML elements use date and/or time values. The formats of the strings that specify these are described in this article.\") in [Date and time formats used in HTML](https://developer.mozilla.org/en-US/docs/Web/HTML/Date_and_time_formats \"Certain HTML elements use date and/or time values. The formats of the strings that specify these are described in this article.\")." + } + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/ins" + } + ] + }, + { + "name": "del", + "description": { + "kind": "markdown", + "value": "The del element represents a removal from the document." + }, + "attributes": [ + { + "name": "cite", + "description": { + "kind": "markdown", + "value": "A URI for a resource that explains the change (for example, meeting minutes)." + } + }, + { + "name": "datetime", + "description": { + "kind": "markdown", + "value": "This attribute indicates the time and date of the change and must be a valid date string with an optional time. If the value cannot be parsed as a date with an optional time string, the element does not have an associated time stamp. For the format of the string without a time, see [Format of a valid date string](https://developer.mozilla.org/en-US/docs/Web/HTML/Date_and_time_formats#Format_of_a_valid_date_string \"Certain HTML elements use date and/or time values. The formats of the strings that specify these are described in this article.\") in [Date and time formats used in HTML](https://developer.mozilla.org/en-US/docs/Web/HTML/Date_and_time_formats \"Certain HTML elements use date and/or time values. The formats of the strings that specify these are described in this article.\"). The format of the string if it includes both date and time is covered in [Format of a valid local date and time string](https://developer.mozilla.org/en-US/docs/Web/HTML/Date_and_time_formats#Format_of_a_valid_local_date_and_time_string \"Certain HTML elements use date and/or time values. The formats of the strings that specify these are described in this article.\") in [Date and time formats used in HTML](https://developer.mozilla.org/en-US/docs/Web/HTML/Date_and_time_formats \"Certain HTML elements use date and/or time values. The formats of the strings that specify these are described in this article.\")." + } + } + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/del" + } + ] + }, + { + "name": "picture", + "description": { + "kind": "markdown", + "value": "The picture element is a container which provides multiple sources to its contained img element to allow authors to declaratively control or give hints to the user agent about which image resource to use, based on the screen pixel density, viewport size, image format, and other factors. It represents its children." + }, + "attributes": [], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/picture" + } + ] + }, + { + "name": "img", + "description": { + "kind": "markdown", + "value": "An img element represents an image." + }, + "void": true, + "attributes": [ + { + "name": "alt", + "description": { + "kind": "markdown", + "value": "This attribute defines an alternative text description of the image.\n\n**Note:** Browsers do not always display the image referenced by the element. This is the case for non-graphical browsers (including those used by people with visual impairments), if the user chooses not to display images, or if the browser cannot display the image because it is invalid or an [unsupported type](#Supported_image_formats). In these cases, the browser may replace the image with the text defined in this element's `alt` attribute. You should, for these reasons and others, provide a useful value for `alt` whenever possible.\n\n**Note:** Omitting this attribute altogether indicates that the image is a key part of the content, and no textual equivalent is available. Setting this attribute to an empty string (`alt=\"\"`) indicates that this image is _not_ a key part of the content (decorative), and that non-visual browsers may omit it from rendering." + } + }, + { + "name": "src", + "description": { + "kind": "markdown", + "value": "The image URL. This attribute is mandatory for the `<img>` element. On browsers supporting `srcset`, `src` is treated like a candidate image with a pixel density descriptor `1x` unless an image with this pixel density descriptor is already defined in `srcset,` or unless `srcset` contains '`w`' descriptors." + } + }, + { + "name": "srcset", + "description": { + "kind": "markdown", + "value": "A list of one or more strings separated by commas indicating a set of possible image sources for the user agent to use. Each string is composed of:\n\n1. a URL to an image,\n2. optionally, whitespace followed by one of:\n * A width descriptor, or a positive integer directly followed by '`w`'. The width descriptor is divided by the source size given in the `sizes` attribute to calculate the effective pixel density.\n * A pixel density descriptor, which is a positive floating point number directly followed by '`x`'.\n\nIf no descriptor is specified, the source is assigned the default descriptor: `1x`.\n\nIt is incorrect to mix width descriptors and pixel density descriptors in the same `srcset` attribute. Duplicate descriptors (for instance, two sources in the same `srcset` which are both described with '`2x`') are also invalid.\n\nThe user agent selects any one of the available sources at its discretion. This provides them with significant leeway to tailor their selection based on things like user preferences or bandwidth conditions. See our [Responsive images](https://developer.mozilla.org/en-US/docs/Learn/HTML/Multimedia_and_embedding/Responsive_images) tutorial for an example." + } + }, + { + "name": "crossorigin", + "valueSet": "xo", + "description": { + "kind": "markdown", + "value": "This enumerated attribute indicates if the fetching of the related image must be done using CORS or not. [CORS-enabled images](https://developer.mozilla.org/en-US/docs/CORS_Enabled_Image) can be reused in the [`<canvas>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/canvas \"Use the HTML <canvas> element with either the canvas scripting API or the WebGL API to draw graphics and animations.\") element without being \"[tainted](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image#What_is_a_tainted_canvas).\" The allowed values are:\n`anonymous`\n\nA cross-origin request (i.e., with `Origin:` HTTP header) is performed, but no credential is sent (i.e., no cookie, X.509 certificate, or HTTP Basic authentication). If the server does not give credentials to the origin site (by not setting the [`Access-Control-Allow-Origin`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Origin \"The Access-Control-Allow-Origin response header indicates whether the response can be shared with requesting code from the given origin.\") HTTP header), the image will be tainted and its usage restricted.\n\n`use-credentials`\n\nA cross-origin request (i.e., with the [`Origin`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Origin \"The Origin request header indicates where a fetch originates from. It doesn't include any path information, but only the server name. It is sent with CORS requests, as well as with POST requests. It is similar to the Referer header, but, unlike this header, it doesn't disclose the whole path.\") HTTP header) performed along with credentials sent (i.e., a cookie, certificate, or HTTP Basic authentication). If the server does not give credentials to the origin site (through the `Access-Control-Allow-Credentials` HTTP header), the image will be tainted and its usage restricted.\n\nIf the attribute is not present, the resource is fetched without a CORS request (i.e., without sending the `Origin` HTTP header), preventing its non-tainted usage in [`<canvas>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/canvas \"Use the HTML <canvas> element with either the canvas scripting API or the WebGL API to draw graphics and animations.\") elements. If invalid, it is handled as if the `anonymous` value was used. See [CORS settings attributes](https://developer.mozilla.org/en-US/docs/HTML/CORS_settings_attributes) for additional information." + } + }, + { + "name": "usemap", + "description": { + "kind": "markdown", + "value": "The partial URL (starting with '#') of an [image map](https://developer.mozilla.org/en-US/docs/HTML/Element/map) associated with the element.\n\n**Note:** You cannot use this attribute if the `<img>` element is a descendant of an [`<a>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a \"The HTML <a> element (or anchor element) creates a hyperlink to other web pages, files, locations within the same page, email addresses, or any other URL.\") or [`<button>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button \"The HTML <button> element represents a clickable button, which can be used in forms or anywhere in a document that needs simple, standard button functionality.\") element." + } + }, + { + "name": "ismap", + "valueSet": "v", + "description": { + "kind": "markdown", + "value": "This Boolean attribute indicates that the image is part of a server-side map. If so, the precise coordinates of a click are sent to the server.\n\n**Note:** This attribute is allowed only if the `<img>` element is a descendant of an [`<a>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a \"The HTML <a> element (or anchor element) creates a hyperlink to other web pages, files, locations within the same page, email addresses, or any other URL.\") element with a valid [`href`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#attr-href) attribute." + } + }, + { + "name": "width", + "description": { + "kind": "markdown", + "value": "The intrinsic width of the image in pixels." + } + }, + { + "name": "height", + "description": { + "kind": "markdown", + "value": "The intrinsic height of the image in pixels." + } + }, + { + "name": "decoding", + "valueSet": "decoding", + "description": { + "kind": "markdown", + "value": "Provides an image decoding hint to the browser. The allowed values are:\n`sync`\n\nDecode the image synchronously for atomic presentation with other content.\n\n`async`\n\nDecode the image asynchronously to reduce delay in presenting other content.\n\n`auto`\n\nDefault mode, which indicates no preference for the decoding mode. The browser decides what is best for the user." + } + }, + { + "name": "loading", + "valueSet": "loading", + "description": { + "kind": "markdown", + "value": "Indicates how the browser should load the image." + } + }, + { + "name": "referrerpolicy", + "valueSet": "referrerpolicy", + "description": { + "kind": "markdown", + "value": "A string indicating which referrer to use when fetching the resource:\n\n* `no-referrer:` The [`Referer`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referer \"The Referer request header contains the address of the previous web page from which a link to the currently requested page was followed. The Referer header allows servers to identify where people are visiting them from and may use that data for analytics, logging, or optimized caching, for example.\") header will not be sent.\n* `no-referrer-when-downgrade:` No `Referer` header will be sent when navigating to an origin without TLS (HTTPS). This is a user agent’s default behavior if no policy is otherwise specified.\n* `origin:` The `Referer` header will include the page of origin's scheme, the host, and the port.\n* `origin-when-cross-origin:` Navigating to other origins will limit the included referral data to the scheme, the host and the port, while navigating from the same origin will include the referrer's full path.\n* `unsafe-url:` The `Referer` header will include the origin and the path, but not the fragment, password, or username. This case is unsafe because it can leak origins and paths from TLS-protected resources to insecure origins." + } + }, + { + "name": "sizes", + "description": { + "kind": "markdown", + "value": "A list of one or more strings separated by commas indicating a set of source sizes. Each source size consists of:\n\n1. a media condition. This must be omitted for the last item.\n2. a source size value.\n\nSource size values specify the intended display size of the image. User agents use the current source size to select one of the sources supplied by the `srcset` attribute, when those sources are described using width ('`w`') descriptors. The selected source size affects the intrinsic size of the image (the image’s display size if no CSS styling is applied). If the `srcset` attribute is absent, or contains no values with a width (`w`) descriptor, then the `sizes` attribute has no effect." + } + }, + { + "name": "importance", + "description": "Indicates the relative importance of the resource. Priority hints are delegated using the values:" + }, + { + "name": "importance", + "description": "`auto`: Indicates **no preference**. The browser may use its own heuristics to decide the priority of the image.\n\n`high`: Indicates to the browser that the image is of **high** priority.\n\n`low`: Indicates to the browser that the image is of **low** priority." + }, + { + "name": "intrinsicsize", + "description": "This attribute tells the browser to ignore the actual intrinsic size of the image and pretend it’s the size specified in the attribute. Specifically, the image would raster at these dimensions and `naturalWidth`/`naturalHeight` on images would return the values specified in this attribute. [Explainer](https://github.com/ojanvafai/intrinsicsize-attribute), [examples](https://googlechrome.github.io/samples/intrinsic-size/index.html)" + } + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/img" + } + ] + }, + { + "name": "iframe", + "description": { + "kind": "markdown", + "value": "The iframe element represents a nested browsing context." + }, + "attributes": [ + { + "name": "src", + "description": { + "kind": "markdown", + "value": "The URL of the page to embed. Use a value of `about:blank` to embed an empty page that conforms to the [same-origin policy](https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy#Inherited_origins). Also note that programatically removing an `<iframe>`'s src attribute (e.g. via [`Element.removeAttribute()`](https://developer.mozilla.org/en-US/docs/Web/API/Element/removeAttribute \"The Element method removeAttribute() removes the attribute with the specified name from the element.\")) causes `about:blank` to be loaded in the frame in Firefox (from version 65), Chromium-based browsers, and Safari/iOS." + } + }, + { + "name": "srcdoc", + "description": { + "kind": "markdown", + "value": "Inline HTML to embed, overriding the `src` attribute. If a browser does not support the `srcdoc` attribute, it will fall back to the URL in the `src` attribute." + } + }, + { + "name": "name", + "description": { + "kind": "markdown", + "value": "A targetable name for the embedded browsing context. This can be used in the `target` attribute of the [`<a>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a \"The HTML <a> element (or anchor element) creates a hyperlink to other web pages, files, locations within the same page, email addresses, or any other URL.\"), [`<form>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form \"The HTML <form> element represents a document section that contains interactive controls for submitting information to a web server.\"), or [`<base>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/base \"The HTML <base> element specifies the base URL to use for all relative URLs contained within a document. There can be only one <base> element in a document.\") elements; the `formtarget` attribute of the [`<input>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input \"The HTML <input> element is used to create interactive controls for web-based forms in order to accept data from the user; a wide variety of types of input data and control widgets are available, depending on the device and user agent.\") or [`<button>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button \"The HTML <button> element represents a clickable button, which can be used in forms or anywhere in a document that needs simple, standard button functionality.\") elements; or the `windowName` parameter in the [`window.open()`](https://developer.mozilla.org/en-US/docs/Web/API/Window/open \"The Window interface's open() method loads the specified resource into the browsing context (window, <iframe> or tab) with the specified name. If the name doesn't exist, then a new window is opened and the specified resource is loaded into its browsing context.\") method." + } + }, + { + "name": "sandbox", + "valueSet": "sb", + "description": { + "kind": "markdown", + "value": "Applies extra restrictions to the content in the frame. The value of the attribute can either be empty to apply all restrictions, or space-separated tokens to lift particular restrictions:\n\n* `allow-forms`: Allows the resource to submit forms. If this keyword is not used, form submission is blocked.\n* `allow-modals`: Lets the resource [open modal windows](https://html.spec.whatwg.org/multipage/origin.html#sandboxed-modals-flag).\n* `allow-orientation-lock`: Lets the resource [lock the screen orientation](https://developer.mozilla.org/en-US/docs/Web/API/Screen/lockOrientation).\n* `allow-pointer-lock`: Lets the resource use the [Pointer Lock API](https://developer.mozilla.org/en-US/docs/WebAPI/Pointer_Lock).\n* `allow-popups`: Allows popups (such as `window.open()`, `target=\"_blank\"`, or `showModalDialog()`). If this keyword is not used, the popup will silently fail to open.\n* `allow-popups-to-escape-sandbox`: Lets the sandboxed document open new windows without those windows inheriting the sandboxing. For example, this can safely sandbox an advertisement without forcing the same restrictions upon the page the ad links to.\n* `allow-presentation`: Lets the resource start a [presentation session](https://developer.mozilla.org/en-US/docs/Web/API/PresentationRequest).\n* `allow-same-origin`: If this token is not used, the resource is treated as being from a special origin that always fails the [same-origin policy](https://developer.mozilla.org/en-US/docs/Glossary/same-origin_policy \"same-origin policy: The same-origin policy is a critical security mechanism that restricts how a document or script loaded from one origin can interact with a resource from another origin.\").\n* `allow-scripts`: Lets the resource run scripts (but not create popup windows).\n* `allow-storage-access-by-user-activation` : Lets the resource request access to the parent's storage capabilities with the [Storage Access API](https://developer.mozilla.org/en-US/docs/Web/API/Storage_Access_API).\n* `allow-top-navigation`: Lets the resource navigate the top-level browsing context (the one named `_top`).\n* `allow-top-navigation-by-user-activation`: Lets the resource navigate the top-level browsing context, but only if initiated by a user gesture.\n\n**Notes about sandboxing:**\n\n* When the embedded document has the same origin as the embedding page, it is **strongly discouraged** to use both `allow-scripts` and `allow-same-origin`, as that lets the embedded document remove the `sandbox` attribute — making it no more secure than not using the `sandbox` attribute at all.\n* Sandboxing is useless if the attacker can display content outside a sandboxed `iframe` — such as if the viewer opens the frame in a new tab. Such content should be also served from a _separate origin_ to limit potential damage.\n* The `sandbox` attribute is unsupported in Internet Explorer 9 and earlier." + } + }, + { + "name": "seamless", + "valueSet": "v" + }, + { + "name": "allowfullscreen", + "valueSet": "v", + "description": { + "kind": "markdown", + "value": "Set to `true` if the `<iframe>` can activate fullscreen mode by calling the [`requestFullscreen()`](https://developer.mozilla.org/en-US/docs/Web/API/Element/requestFullscreen \"The Element.requestFullscreen() method issues an asynchronous request to make the element be displayed in full-screen mode.\") method.\nThis attribute is considered a legacy attribute and redefined as `allow=\"fullscreen\"`." + } + }, + { + "name": "width", + "description": { + "kind": "markdown", + "value": "The width of the frame in CSS pixels. Default is `300`." + } + }, + { + "name": "height", + "description": { + "kind": "markdown", + "value": "The height of the frame in CSS pixels. Default is `150`." + } + }, + { + "name": "allow", + "description": "Specifies a [feature policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/Feature_Policy) for the `<iframe>`." + }, + { + "name": "allowpaymentrequest", + "description": "Set to `true` if a cross-origin `<iframe>` should be allowed to invoke the [Payment Request API](https://developer.mozilla.org/en-US/docs/Web/API/Payment_Request_API)." + }, + { + "name": "allowpaymentrequest", + "description": "This attribute is considered a legacy attribute and redefined as `allow=\"payment\"`." + }, + { + "name": "csp", + "description": "A [Content Security Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP) enforced for the embedded resource. See [`HTMLIFrameElement.csp`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement/csp \"The csp property of the HTMLIFrameElement interface specifies the Content Security Policy that an embedded document must agree to enforce upon itself.\") for details." + }, + { + "name": "importance", + "description": "The download priority of the resource in the `<iframe>`'s `src` attribute. Allowed values:\n\n`auto` (default)\n\nNo preference. The browser uses its own heuristics to decide the priority of the resource.\n\n`high`\n\nThe resource should be downloaded before other lower-priority page resources.\n\n`low`\n\nThe resource should be downloaded after other higher-priority page resources." + }, + { + "name": "referrerpolicy", + "description": "Indicates which [referrer](https://developer.mozilla.org/en-US/docs/Web/API/Document/referrer) to send when fetching the frame's resource:\n\n* `no-referrer`: The [`Referer`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referer \"The Referer request header contains the address of the previous web page from which a link to the currently requested page was followed. The Referer header allows servers to identify where people are visiting them from and may use that data for analytics, logging, or optimized caching, for example.\") header will not be sent.\n* `no-referrer-when-downgrade` (default): The [`Referer`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referer \"The Referer request header contains the address of the previous web page from which a link to the currently requested page was followed. The Referer header allows servers to identify where people are visiting them from and may use that data for analytics, logging, or optimized caching, for example.\") header will not be sent to [origin](https://developer.mozilla.org/en-US/docs/Glossary/origin \"origin: Web content's origin is defined by the scheme (protocol), host (domain), and port of the URL used to access it. Two objects have the same origin only when the scheme, host, and port all match.\")s without [TLS](https://developer.mozilla.org/en-US/docs/Glossary/TLS \"TLS: Transport Layer Security (TLS), previously known as Secure Sockets Layer (SSL), is a protocol used by applications to communicate securely across a network, preventing tampering with and eavesdropping on email, web browsing, messaging, and other protocols.\") ([HTTPS](https://developer.mozilla.org/en-US/docs/Glossary/HTTPS \"HTTPS: HTTPS (HTTP Secure) is an encrypted version of the HTTP protocol. It usually uses SSL or TLS to encrypt all communication between a client and a server. This secure connection allows clients to safely exchange sensitive data with a server, for example for banking activities or online shopping.\")).\n* `origin`: The sent referrer will be limited to the origin of the referring page: its [scheme](https://developer.mozilla.org/en-US/docs/Archive/Mozilla/URIScheme), [host](https://developer.mozilla.org/en-US/docs/Glossary/host \"host: A host is a device connected to the Internet (or a local network). Some hosts called servers offer additional services like serving webpages or storing files and emails.\"), and [port](https://developer.mozilla.org/en-US/docs/Glossary/port \"port: For a computer connected to a network with an IP address, a port is a communication endpoint. Ports are designated by numbers, and below 1024 each port is associated by default with a specific protocol.\").\n* `origin-when-cross-origin`: The referrer sent to other origins will be limited to the scheme, the host, and the port. Navigations on the same origin will still include the path.\n* `same-origin`: A referrer will be sent for [same origin](https://developer.mozilla.org/en-US/docs/Glossary/Same-origin_policy \"same origin: The same-origin policy is a critical security mechanism that restricts how a document or script loaded from one origin can interact with a resource from another origin.\"), but cross-origin requests will contain no referrer information.\n* `strict-origin`: Only send the origin of the document as the referrer when the protocol security level stays the same (HTTPS→HTTPS), but don't send it to a less secure destination (HTTPS→HTTP).\n* `strict-origin-when-cross-origin`: Send a full URL when performing a same-origin request, only send the origin when the protocol security level stays the same (HTTPS→HTTPS), and send no header to a less secure destination (HTTPS→HTTP).\n* `unsafe-url`: The referrer will include the origin _and_ the path (but not the [fragment](https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils/hash), [password](https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils/password), or [username](https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils/username)). **This value is unsafe**, because it leaks origins and paths from TLS-protected resources to insecure origins." + } + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/iframe" + } + ] + }, + { + "name": "embed", + "description": { + "kind": "markdown", + "value": "The embed element provides an integration point for an external (typically non-HTML) application or interactive content." + }, + "void": true, + "attributes": [ + { + "name": "src", + "description": { + "kind": "markdown", + "value": "The URL of the resource being embedded." + } + }, + { + "name": "type", + "description": { + "kind": "markdown", + "value": "The MIME type to use to select the plug-in to instantiate." + } + }, + { + "name": "width", + "description": { + "kind": "markdown", + "value": "The displayed width of the resource, in [CSS pixels](https://drafts.csswg.org/css-values/#px). This must be an absolute value; percentages are _not_ allowed." + } + }, + { + "name": "height", + "description": { + "kind": "markdown", + "value": "The displayed height of the resource, in [CSS pixels](https://drafts.csswg.org/css-values/#px). This must be an absolute value; percentages are _not_ allowed." + } + } + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/embed" + } + ] + }, + { + "name": "object", + "description": { + "kind": "markdown", + "value": "The object element can represent an external resource, which, depending on the type of the resource, will either be treated as an image, as a nested browsing context, or as an external resource to be processed by a plugin." + }, + "attributes": [ + { + "name": "data", + "description": { + "kind": "markdown", + "value": "The address of the resource as a valid URL. At least one of **data** and **type** must be defined." + } + }, + { + "name": "type", + "description": { + "kind": "markdown", + "value": "The [content type](https://developer.mozilla.org/en-US/docs/Glossary/Content_type) of the resource specified by **data**. At least one of **data** and **type** must be defined." + } + }, + { + "name": "typemustmatch", + "valueSet": "v", + "description": { + "kind": "markdown", + "value": "This Boolean attribute indicates if the **type** attribute and the actual [content type](https://developer.mozilla.org/en-US/docs/Glossary/Content_type) of the resource must match to be used." + } + }, + { + "name": "name", + "description": { + "kind": "markdown", + "value": "The name of valid browsing context (HTML5), or the name of the control (HTML 4)." + } + }, + { + "name": "usemap", + "description": { + "kind": "markdown", + "value": "A hash-name reference to a [`<map>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/map \"The HTML <map> element is used with <area> elements to define an image map (a clickable link area).\") element; that is a '#' followed by the value of a [`name`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/map#attr-name) of a map element." + } + }, + { + "name": "form", + "description": { + "kind": "markdown", + "value": "The form element, if any, that the object element is associated with (its _form owner_). The value of the attribute must be an ID of a [`<form>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form \"The HTML <form> element represents a document section that contains interactive controls for submitting information to a web server.\") element in the same document." + } + }, + { + "name": "width", + "description": { + "kind": "markdown", + "value": "The width of the display resource, in [CSS pixels](https://drafts.csswg.org/css-values/#px). -- (Absolute values only. [NO percentages](https://html.spec.whatwg.org/multipage/embedded-content.html#dimension-attributes))" + } + }, + { + "name": "height", + "description": { + "kind": "markdown", + "value": "The height of the displayed resource, in [CSS pixels](https://drafts.csswg.org/css-values/#px). -- (Absolute values only. [NO percentages](https://html.spec.whatwg.org/multipage/embedded-content.html#dimension-attributes))" + } + }, + { + "name": "archive", + "description": "A space-separated list of URIs for archives of resources for the object." + }, + { + "name": "border", + "description": "The width of a border around the control, in pixels." + }, + { + "name": "classid", + "description": "The URI of the object's implementation. It can be used together with, or in place of, the **data** attribute." + }, + { + "name": "codebase", + "description": "The base path used to resolve relative URIs specified by **classid**, **data**, or **archive**. If not specified, the default is the base URI of the current document." + }, + { + "name": "codetype", + "description": "The content type of the data specified by **classid**." + }, + { + "name": "declare", + "description": "The presence of this Boolean attribute makes this element a declaration only. The object must be instantiated by a subsequent `<object>` element. In HTML5, repeat the <object> element completely each that that the resource is reused." + }, + { + "name": "standby", + "description": "A message that the browser can show while loading the object's implementation and data." + }, + { + "name": "tabindex", + "description": "The position of the element in the tabbing navigation order for the current document." + } + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/object" + } + ] + }, + { + "name": "param", + "description": { + "kind": "markdown", + "value": "The param element defines parameters for plugins invoked by object elements. It does not represent anything on its own." + }, + "void": true, + "attributes": [ + { + "name": "name", + "description": { + "kind": "markdown", + "value": "Name of the parameter." + } + }, + { + "name": "value", + "description": { + "kind": "markdown", + "value": "Specifies the value of the parameter." + } + }, + { + "name": "type", + "description": "Only used if the `valuetype` is set to \"ref\". Specifies the MIME type of values found at the URI specified by value." + }, + { + "name": "valuetype", + "description": "Specifies the type of the `value` attribute. Possible values are:\n\n* data: Default value. The value is passed to the object's implementation as a string.\n* ref: The value is a URI to a resource where run-time values are stored.\n* object: An ID of another [`<object>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/object \"The HTML <object> element represents an external resource, which can be treated as an image, a nested browsing context, or a resource to be handled by a plugin.\") in the same document." + } + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/param" + } + ] + }, + { + "name": "video", + "description": { + "kind": "markdown", + "value": "A video element is used for playing videos or movies, and audio files with captions." + }, + "attributes": [ + { + "name": "src" + }, + { + "name": "crossorigin", + "valueSet": "xo" + }, + { + "name": "poster" + }, + { + "name": "preload", + "valueSet": "pl" + }, + { + "name": "autoplay", + "valueSet": "v", + "description": { + "kind": "markdown", + "value": "A Boolean attribute; if specified, the video automatically begins to play back as soon as it can do so without stopping to finish loading the data.\n**Note**: Sites that automatically play audio (or video with an audio track) can be an unpleasant experience for users, so it should be avoided when possible. If you must offer autoplay functionality, you should make it opt-in (requiring a user to specifically enable it). However, this can be useful when creating media elements whose source will be set at a later time, under user control.\n\nTo disable video autoplay, `autoplay=\"false\"` will not work; the video will autoplay if the attribute is there in the `<video>` tag at all. To remove autoplay the attribute needs to be removed altogether.\n\nIn some browsers (e.g. Chrome 70.0) autoplay is not working if no `muted` attribute is present." + } + }, + { + "name": "mediagroup" + }, + { + "name": "loop", + "valueSet": "v" + }, + { + "name": "muted", + "valueSet": "v" + }, + { + "name": "controls", + "valueSet": "v" + }, + { + "name": "width" + }, + { + "name": "height" + } + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/video" + } + ] + }, + { + "name": "audio", + "description": { + "kind": "markdown", + "value": "An audio element represents a sound or audio stream." + }, + "attributes": [ + { + "name": "src", + "description": { + "kind": "markdown", + "value": "The URL of the audio to embed. This is subject to [HTTP access controls](https://developer.mozilla.org/en-US/docs/HTTP_access_control). This is optional; you may instead use the [`<source>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/source \"The HTML <source> element specifies multiple media resources for the <picture>, the <audio> element, or the <video> element.\") element within the audio block to specify the audio to embed." + } + }, + { + "name": "crossorigin", + "valueSet": "xo", + "description": { + "kind": "markdown", + "value": "This enumerated attribute indicates whether to use CORS to fetch the related image. [CORS-enabled resources](https://developer.mozilla.org/en-US/docs/CORS_Enabled_Image) can be reused in the [`<canvas>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/canvas \"Use the HTML <canvas> element with either the canvas scripting API or the WebGL API to draw graphics and animations.\") element without being _tainted_. The allowed values are:\n\nanonymous\n\nSends a cross-origin request without a credential. In other words, it sends the `Origin:` HTTP header without a cookie, X.509 certificate, or performing HTTP Basic authentication. If the server does not give credentials to the origin site (by not setting the `Access-Control-Allow-Origin:` HTTP header), the image will be _tainted_, and its usage restricted.\n\nuse-credentials\n\nSends a cross-origin request with a credential. In other words, it sends the `Origin:` HTTP header with a cookie, a certificate, or performing HTTP Basic authentication. If the server does not give credentials to the origin site (through `Access-Control-Allow-Credentials:` HTTP header), the image will be _tainted_ and its usage restricted.\n\nWhen not present, the resource is fetched without a CORS request (i.e. without sending the `Origin:` HTTP header), preventing its non-tainted used in [`<canvas>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/canvas \"Use the HTML <canvas> element with either the canvas scripting API or the WebGL API to draw graphics and animations.\") elements. If invalid, it is handled as if the enumerated keyword **anonymous** was used. See [CORS settings attributes](https://developer.mozilla.org/en-US/docs/HTML/CORS_settings_attributes) for additional information." + } + }, + { + "name": "preload", + "valueSet": "pl", + "description": { + "kind": "markdown", + "value": "This enumerated attribute is intended to provide a hint to the browser about what the author thinks will lead to the best user experience. It may have one of the following values:\n\n* `none`: Indicates that the audio should not be preloaded.\n* `metadata`: Indicates that only audio metadata (e.g. length) is fetched.\n* `auto`: Indicates that the whole audio file can be downloaded, even if the user is not expected to use it.\n* _empty string_: A synonym of the `auto` value.\n\nIf not set, `preload`'s default value is browser-defined (i.e. each browser may have its own default value). The spec advises it to be set to `metadata`.\n\n**Usage notes:**\n\n* The `autoplay` attribute has precedence over `preload`. If `autoplay` is specified, the browser would obviously need to start downloading the audio for playback.\n* The browser is not forced by the specification to follow the value of this attribute; it is a mere hint." + } + }, + { + "name": "autoplay", + "valueSet": "v", + "description": { + "kind": "markdown", + "value": "A Boolean attribute: if specified, the audio will automatically begin playback as soon as it can do so, without waiting for the entire audio file to finish downloading.\n\n**Note**: Sites that automatically play audio (or videos with an audio track) can be an unpleasant experience for users, so should be avoided when possible. If you must offer autoplay functionality, you should make it opt-in (requiring a user to specifically enable it). However, this can be useful when creating media elements whose source will be set at a later time, under user control." + } + }, + { + "name": "mediagroup" + }, + { + "name": "loop", + "valueSet": "v", + "description": { + "kind": "markdown", + "value": "A Boolean attribute: if specified, the audio player will automatically seek back to the start upon reaching the end of the audio." + } + }, + { + "name": "muted", + "valueSet": "v", + "description": { + "kind": "markdown", + "value": "A Boolean attribute that indicates whether the audio will be initially silenced. Its default value is `false`." + } + }, + { + "name": "controls", + "valueSet": "v", + "description": { + "kind": "markdown", + "value": "If this attribute is present, the browser will offer controls to allow the user to control audio playback, including volume, seeking, and pause/resume playback." + } + } + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/audio" + } + ] + }, + { + "name": "source", + "description": { + "kind": "markdown", + "value": "The source element allows authors to specify multiple alternative media resources for media elements. It does not represent anything on its own." + }, + "void": true, + "attributes": [ + { + "name": "src", + "description": { + "kind": "markdown", + "value": "Required for [`<audio>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio \"The HTML <audio> element is used to embed sound content in documents. It may contain one or more audio sources, represented using the src attribute or the <source> element: the browser will choose the most suitable one. It can also be the destination for streamed media, using a MediaStream.\") and [`<video>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/video \"The HTML Video element (<video>) embeds a media player which supports video playback into the document.\"), address of the media resource. The value of this attribute is ignored when the `<source>` element is placed inside a [`<picture>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/picture \"The HTML <picture> element contains zero or more <source> elements and one <img> element to provide versions of an image for different display/device scenarios.\") element." + } + }, + { + "name": "type", + "description": { + "kind": "markdown", + "value": "The MIME-type of the resource, optionally with a `codecs` parameter. See [RFC 4281](https://tools.ietf.org/html/rfc4281) for information about how to specify codecs." + } + }, + { + "name": "sizes", + "description": "Is a list of source sizes that describes the final rendered width of the image represented by the source. Each source size consists of a comma-separated list of media condition-length pairs. This information is used by the browser to determine, before laying the page out, which image defined in [`srcset`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/source#attr-srcset) to use. \nThe `sizes` attribute has an effect only when the [`<source>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/source \"The HTML <source> element specifies multiple media resources for the <picture>, the <audio> element, or the <video> element.\") element is the direct child of a [`<picture>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/picture \"The HTML <picture> element contains zero or more <source> elements and one <img> element to provide versions of an image for different display/device scenarios.\") element." + }, + { + "name": "srcset", + "description": "A list of one or more strings separated by commas indicating a set of possible images represented by the source for the browser to use. Each string is composed of:\n\n1. one URL to an image,\n2. a width descriptor, that is a positive integer directly followed by `'w'`. The default value, if missing, is the infinity.\n3. a pixel density descriptor, that is a positive floating number directly followed by `'x'`. The default value, if missing, is `1x`.\n\nEach string in the list must have at least a width descriptor or a pixel density descriptor to be valid. Among the list, there must be only one string containing the same tuple of width descriptor and pixel density descriptor. \nThe browser chooses the most adequate image to display at a given point of time. \nThe `srcset` attribute has an effect only when the [`<source>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/source \"The HTML <source> element specifies multiple media resources for the <picture>, the <audio> element, or the <video> element.\") element is the direct child of a [`<picture>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/picture \"The HTML <picture> element contains zero or more <source> elements and one <img> element to provide versions of an image for different display/device scenarios.\") element." + }, + { + "name": "media", + "description": "[Media query](https://developer.mozilla.org/en-US/docs/CSS/Media_queries) of the resource's intended media; this should be used only in a [`<picture>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/picture \"The HTML <picture> element contains zero or more <source> elements and one <img> element to provide versions of an image for different display/device scenarios.\") element." + } + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/source" + } + ] + }, + { + "name": "track", + "description": { + "kind": "markdown", + "value": "The track element allows authors to specify explicit external timed text tracks for media elements. It does not represent anything on its own." + }, + "void": true, + "attributes": [ + { + "name": "default", + "valueSet": "v", + "description": { + "kind": "markdown", + "value": "This attribute indicates that the track should be enabled unless the user's preferences indicate that another track is more appropriate. This may only be used on one `track` element per media element." + } + }, + { + "name": "kind", + "valueSet": "tk", + "description": { + "kind": "markdown", + "value": "How the text track is meant to be used. If omitted the default kind is `subtitles`. If the attribute is not present, it will use the `subtitles`. If the attribute contains an invalid value, it will use `metadata`. (Versions of Chrome earlier than 52 treated an invalid value as `subtitles`.) The following keywords are allowed:\n\n* `subtitles`\n * Subtitles provide translation of content that cannot be understood by the viewer. For example dialogue or text that is not English in an English language film.\n * Subtitles may contain additional content, usually extra background information. For example the text at the beginning of the Star Wars films, or the date, time, and location of a scene.\n* `captions`\n * Closed captions provide a transcription and possibly a translation of audio.\n * It may include important non-verbal information such as music cues or sound effects. It may indicate the cue's source (e.g. music, text, character).\n * Suitable for users who are deaf or when the sound is muted.\n* `descriptions`\n * Textual description of the video content.\n * Suitable for users who are blind or where the video cannot be seen.\n* `chapters`\n * Chapter titles are intended to be used when the user is navigating the media resource.\n* `metadata`\n * Tracks used by scripts. Not visible to the user." + } + }, + { + "name": "label", + "description": { + "kind": "markdown", + "value": "A user-readable title of the text track which is used by the browser when listing available text tracks." + } + }, + { + "name": "src", + "description": { + "kind": "markdown", + "value": "Address of the track (`.vtt` file). Must be a valid URL. This attribute must be specified and its URL value must have the same origin as the document — unless the [`<audio>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio \"The HTML <audio> element is used to embed sound content in documents. It may contain one or more audio sources, represented using the src attribute or the <source> element: the browser will choose the most suitable one. It can also be the destination for streamed media, using a MediaStream.\") or [`<video>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/video \"The HTML Video element (<video>) embeds a media player which supports video playback into the document.\") parent element of the `track` element has a [`crossorigin`](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes) attribute." + } + }, + { + "name": "srclang", + "description": { + "kind": "markdown", + "value": "Language of the track text data. It must be a valid [BCP 47](https://r12a.github.io/app-subtags/) language tag. If the `kind` attribute is set to `subtitles,` then `srclang` must be defined." + } + } + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/track" + } + ] + }, + { + "name": "map", + "description": { + "kind": "markdown", + "value": "The map element, in conjunction with an img element and any area element descendants, defines an image map. The element represents its children." + }, + "attributes": [ + { + "name": "name", + "description": { + "kind": "markdown", + "value": "The name attribute gives the map a name so that it can be referenced. The attribute must be present and must have a non-empty value with no space characters. The value of the name attribute must not be a compatibility-caseless match for the value of the name attribute of another map element in the same document. If the id attribute is also specified, both attributes must have the same value." + } + } + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/map" + } + ] + }, + { + "name": "area", + "description": { + "kind": "markdown", + "value": "The area element represents either a hyperlink with some text and a corresponding area on an image map, or a dead area on an image map." + }, + "void": true, + "attributes": [ + { + "name": "alt" + }, + { + "name": "coords" + }, + { + "name": "shape", + "valueSet": "sh" + }, + { + "name": "href" + }, + { + "name": "target", + "valueSet": "target" + }, + { + "name": "download" + }, + { + "name": "ping" + }, + { + "name": "rel" + }, + { + "name": "hreflang" + }, + { + "name": "type" + }, + { + "name": "accesskey", + "description": "Specifies a keyboard navigation accelerator for the element. Pressing ALT or a similar key in association with the specified character selects the form control correlated with that key sequence. Page designers are forewarned to avoid key sequences already bound to browsers. This attribute is global since HTML5." + } + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/area" + } + ] + }, + { + "name": "table", + "description": { + "kind": "markdown", + "value": "The table element represents data with more than one dimension, in the form of a table." + }, + "attributes": [ + { + "name": "border" + }, + { + "name": "align", + "description": "This enumerated attribute indicates how the table must be aligned inside the containing document. It may have the following values:\n\n* left: the table is displayed on the left side of the document;\n* center: the table is displayed in the center of the document;\n* right: the table is displayed on the right side of the document.\n\n**Usage Note**\n\n* **Do not use this attribute**, as it has been deprecated. The [`<table>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/table \"The HTML <table> element represents tabular data — that is, information presented in a two-dimensional table comprised of rows and columns of cells containing data.\") element should be styled using [CSS](https://developer.mozilla.org/en-US/docs/CSS). Set [`margin-left`](https://developer.mozilla.org/en-US/docs/Web/CSS/margin-left \"The margin-left CSS property sets the margin area on the left side of an element. A positive value places it farther from its neighbors, while a negative value places it closer.\") and [`margin-right`](https://developer.mozilla.org/en-US/docs/Web/CSS/margin-right \"The margin-right CSS property sets the margin area on the right side of an element. A positive value places it farther from its neighbors, while a negative value places it closer.\") to `auto` or [`margin`](https://developer.mozilla.org/en-US/docs/Web/CSS/margin \"The margin CSS property sets the margin area on all four sides of an element. It is a shorthand for margin-top, margin-right, margin-bottom, and margin-left.\") to `0 auto` to achieve an effect that is similar to the align attribute.\n* Prior to Firefox 4, Firefox also supported the `middle`, `absmiddle`, and `abscenter` values as synonyms of `center`, in quirks mode only." + } + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/table" + } + ] + }, + { + "name": "caption", + "description": { + "kind": "markdown", + "value": "The caption element represents the title of the table that is its parent, if it has a parent and that is a table element." + }, + "attributes": [ + { + "name": "align", + "description": "This enumerated attribute indicates how the caption must be aligned with respect to the table. It may have one of the following values:\n\n`left`\n\nThe caption is displayed to the left of the table.\n\n`top`\n\nThe caption is displayed above the table.\n\n`right`\n\nThe caption is displayed to the right of the table.\n\n`bottom`\n\nThe caption is displayed below the table.\n\n**Usage note:** Do not use this attribute, as it has been deprecated. The [`<caption>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/caption \"The HTML Table Caption element (<caption>) specifies the caption (or title) of a table, and if used is always the first child of a <table>.\") element should be styled using the [CSS](https://developer.mozilla.org/en-US/docs/CSS) properties [`caption-side`](https://developer.mozilla.org/en-US/docs/Web/CSS/caption-side \"The caption-side CSS property puts the content of a table's <caption> on the specified side. The values are relative to the writing-mode of the table.\") and [`text-align`](https://developer.mozilla.org/en-US/docs/Web/CSS/text-align \"The text-align CSS property sets the horizontal alignment of an inline or table-cell box. This means it works like vertical-align but in the horizontal direction.\")." + } + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/caption" + } + ] + }, + { + "name": "colgroup", + "description": { + "kind": "markdown", + "value": "The colgroup element represents a group of one or more columns in the table that is its parent, if it has a parent and that is a table element." + }, + "attributes": [ + { + "name": "span" + }, + { + "name": "align", + "description": "This enumerated attribute specifies how horizontal alignment of each column cell content will be handled. Possible values are:\n\n* `left`, aligning the content to the left of the cell\n* `center`, centering the content in the cell\n* `right`, aligning the content to the right of the cell\n* `justify`, inserting spaces into the textual content so that the content is justified in the cell\n* `char`, aligning the textual content on a special character with a minimal offset, defined by the [`char`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/col#attr-char) and [`charoff`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/col#attr-charoff) attributes Unimplemented (see [bug 2212](https://bugzilla.mozilla.org/show_bug.cgi?id=2212 \"character alignment not implemented (align=char, charoff=, text-align:<string>)\")).\n\nIf this attribute is not set, the `left` value is assumed. The descendant [`<col>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/col \"The HTML <col> element defines a column within a table and is used for defining common semantics on all common cells. It is generally found within a <colgroup> element.\") elements may override this value using their own [`align`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/col#attr-align) attribute.\n\n**Note:** Do not use this attribute as it is obsolete (not supported) in the latest standard.\n\n* To achieve the same effect as the `left`, `center`, `right` or `justify` values:\n * Do not try to set the [`text-align`](https://developer.mozilla.org/en-US/docs/Web/CSS/text-align \"The text-align CSS property sets the horizontal alignment of an inline or table-cell box. This means it works like vertical-align but in the horizontal direction.\") property on a selector giving a [`<colgroup>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/colgroup \"The HTML <colgroup> element defines a group of columns within a table.\") element. Because [`<td>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/td \"The HTML <td> element defines a cell of a table that contains data. It participates in the table model.\") elements are not descendant of the [`<colgroup>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/colgroup \"The HTML <colgroup> element defines a group of columns within a table.\") element, they won't inherit it.\n * If the table doesn't use a [`colspan`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/td#attr-colspan) attribute, use one `td:nth-child(an+b)` CSS selector per column, where a is the total number of the columns in the table and b is the ordinal position of this column in the table. Only after this selector the [`text-align`](https://developer.mozilla.org/en-US/docs/Web/CSS/text-align \"The text-align CSS property sets the horizontal alignment of an inline or table-cell box. This means it works like vertical-align but in the horizontal direction.\") property can be used.\n * If the table does use a [`colspan`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/td#attr-colspan) attribute, the effect can be achieved by combining adequate CSS attribute selectors like `[colspan=n]`, though this is not trivial.\n* To achieve the same effect as the `char` value, in CSS3, you can use the value of the [`char`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/colgroup#attr-char) as the value of the [`text-align`](https://developer.mozilla.org/en-US/docs/Web/CSS/text-align \"The text-align CSS property sets the horizontal alignment of an inline or table-cell box. This means it works like vertical-align but in the horizontal direction.\") property Unimplemented." + } + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/colgroup" + } + ] + }, + { + "name": "col", + "description": { + "kind": "markdown", + "value": "If a col element has a parent and that is a colgroup element that itself has a parent that is a table element, then the col element represents one or more columns in the column group represented by that colgroup." + }, + "void": true, + "attributes": [ + { + "name": "span" + }, + { + "name": "align", + "description": "This enumerated attribute specifies how horizontal alignment of each column cell content will be handled. Possible values are:\n\n* `left`, aligning the content to the left of the cell\n* `center`, centering the content in the cell\n* `right`, aligning the content to the right of the cell\n* `justify`, inserting spaces into the textual content so that the content is justified in the cell\n* `char`, aligning the textual content on a special character with a minimal offset, defined by the [`char`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/col#attr-char) and [`charoff`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/col#attr-charoff) attributes Unimplemented (see [bug 2212](https://bugzilla.mozilla.org/show_bug.cgi?id=2212 \"character alignment not implemented (align=char, charoff=, text-align:<string>)\")).\n\nIf this attribute is not set, its value is inherited from the [`align`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/colgroup#attr-align) of the [`<colgroup>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/colgroup \"The HTML <colgroup> element defines a group of columns within a table.\") element this `<col>` element belongs too. If there are none, the `left` value is assumed.\n\n**Note:** Do not use this attribute as it is obsolete (not supported) in the latest standard.\n\n* To achieve the same effect as the `left`, `center`, `right` or `justify` values:\n * Do not try to set the [`text-align`](https://developer.mozilla.org/en-US/docs/Web/CSS/text-align \"The text-align CSS property sets the horizontal alignment of an inline or table-cell box. This means it works like vertical-align but in the horizontal direction.\") property on a selector giving a [`<col>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/col \"The HTML <col> element defines a column within a table and is used for defining common semantics on all common cells. It is generally found within a <colgroup> element.\") element. Because [`<td>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/td \"The HTML <td> element defines a cell of a table that contains data. It participates in the table model.\") elements are not descendant of the [`<col>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/col \"The HTML <col> element defines a column within a table and is used for defining common semantics on all common cells. It is generally found within a <colgroup> element.\") element, they won't inherit it.\n * If the table doesn't use a [`colspan`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/td#attr-colspan) attribute, use the `td:nth-child(an+b)` CSS selector. Set `a` to zero and `b` to the position of the column in the table, e.g. `td:nth-child(2) { text-align: right; }` to right-align the second column.\n * If the table does use a [`colspan`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/td#attr-colspan) attribute, the effect can be achieved by combining adequate CSS attribute selectors like `[colspan=n]`, though this is not trivial.\n* To achieve the same effect as the `char` value, in CSS3, you can use the value of the [`char`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/col#attr-char) as the value of the [`text-align`](https://developer.mozilla.org/en-US/docs/Web/CSS/text-align \"The text-align CSS property sets the horizontal alignment of an inline or table-cell box. This means it works like vertical-align but in the horizontal direction.\") property Unimplemented." + } + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/col" + } + ] + }, + { + "name": "tbody", + "description": { + "kind": "markdown", + "value": "The tbody element represents a block of rows that consist of a body of data for the parent table element, if the tbody element has a parent and it is a table." + }, + "attributes": [ + { + "name": "align", + "description": "This enumerated attribute specifies how horizontal alignment of each cell content will be handled. Possible values are:\n\n* `left`, aligning the content to the left of the cell\n* `center`, centering the content in the cell\n* `right`, aligning the content to the right of the cell\n* `justify`, inserting spaces into the textual content so that the content is justified in the cell\n* `char`, aligning the textual content on a special character with a minimal offset, defined by the [`char`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tbody#attr-char) and [`charoff`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tbody#attr-charoff) attributes.\n\nIf this attribute is not set, the `left` value is assumed.\n\n**Note:** Do not use this attribute as it is obsolete (not supported) in the latest standard.\n\n* To achieve the same effect as the `left`, `center`, `right` or `justify` values, use the CSS [`text-align`](https://developer.mozilla.org/en-US/docs/Web/CSS/text-align \"The text-align CSS property sets the horizontal alignment of an inline or table-cell box. This means it works like vertical-align but in the horizontal direction.\") property on it.\n* To achieve the same effect as the `char` value, in CSS3, you can use the value of the [`char`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tbody#attr-char) as the value of the [`text-align`](https://developer.mozilla.org/en-US/docs/Web/CSS/text-align \"The text-align CSS property sets the horizontal alignment of an inline or table-cell box. This means it works like vertical-align but in the horizontal direction.\") property Unimplemented." + } + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/tbody" + } + ] + }, + { + "name": "thead", + "description": { + "kind": "markdown", + "value": "The thead element represents the block of rows that consist of the column labels (headers) for the parent table element, if the thead element has a parent and it is a table." + }, + "attributes": [ + { + "name": "align", + "description": "This enumerated attribute specifies how horizontal alignment of each cell content will be handled. Possible values are:\n\n* `left`, aligning the content to the left of the cell\n* `center`, centering the content in the cell\n* `right`, aligning the content to the right of the cell\n* `justify`, inserting spaces into the textual content so that the content is justified in the cell\n* `char`, aligning the textual content on a special character with a minimal offset, defined by the [`char`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/thead#attr-char) and [`charoff`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/thead#attr-charoff) attributes Unimplemented (see [bug 2212](https://bugzilla.mozilla.org/show_bug.cgi?id=2212 \"character alignment not implemented (align=char, charoff=, text-align:<string>)\")).\n\nIf this attribute is not set, the `left` value is assumed.\n\n**Note:** Do not use this attribute as it is obsolete (not supported) in the latest standard.\n\n* To achieve the same effect as the `left`, `center`, `right` or `justify` values, use the CSS [`text-align`](https://developer.mozilla.org/en-US/docs/Web/CSS/text-align \"The text-align CSS property sets the horizontal alignment of an inline or table-cell box. This means it works like vertical-align but in the horizontal direction.\") property on it.\n* To achieve the same effect as the `char` value, in CSS3, you can use the value of the [`char`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/thead#attr-char) as the value of the [`text-align`](https://developer.mozilla.org/en-US/docs/Web/CSS/text-align \"The text-align CSS property sets the horizontal alignment of an inline or table-cell box. This means it works like vertical-align but in the horizontal direction.\") property Unimplemented." + } + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/thead" + } + ] + }, + { + "name": "tfoot", + "description": { + "kind": "markdown", + "value": "The tfoot element represents the block of rows that consist of the column summaries (footers) for the parent table element, if the tfoot element has a parent and it is a table." + }, + "attributes": [ + { + "name": "align", + "description": "This enumerated attribute specifies how horizontal alignment of each cell content will be handled. Possible values are:\n\n* `left`, aligning the content to the left of the cell\n* `center`, centering the content in the cell\n* `right`, aligning the content to the right of the cell\n* `justify`, inserting spaces into the textual content so that the content is justified in the cell\n* `char`, aligning the textual content on a special character with a minimal offset, defined by the [`char`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tbody#attr-char) and [`charoff`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tbody#attr-charoff) attributes Unimplemented (see [bug 2212](https://bugzilla.mozilla.org/show_bug.cgi?id=2212 \"character alignment not implemented (align=char, charoff=, text-align:<string>)\")).\n\nIf this attribute is not set, the `left` value is assumed.\n\n**Note:** Do not use this attribute as it is obsolete (not supported) in the latest standard.\n\n* To achieve the same effect as the `left`, `center`, `right` or `justify` values, use the CSS [`text-align`](https://developer.mozilla.org/en-US/docs/Web/CSS/text-align \"The text-align CSS property sets the horizontal alignment of an inline or table-cell box. This means it works like vertical-align but in the horizontal direction.\") property on it.\n* To achieve the same effect as the `char` value, in CSS3, you can use the value of the [`char`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tfoot#attr-char) as the value of the [`text-align`](https://developer.mozilla.org/en-US/docs/Web/CSS/text-align \"The text-align CSS property sets the horizontal alignment of an inline or table-cell box. This means it works like vertical-align but in the horizontal direction.\") property Unimplemented." + } + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/tfoot" + } + ] + }, + { + "name": "tr", + "description": { + "kind": "markdown", + "value": "The tr element represents a row of cells in a table." + }, + "attributes": [ + { + "name": "align", + "description": "A [`DOMString`](https://developer.mozilla.org/en-US/docs/Web/API/DOMString \"DOMString is a UTF-16 String. As JavaScript already uses such strings, DOMString is mapped directly to a String.\") which specifies how the cell's context should be aligned horizontally within the cells in the row; this is shorthand for using `align` on every cell in the row individually. Possible values are:\n\n`left`\n\nAlign the content of each cell at its left edge.\n\n`center`\n\nCenter the contents of each cell between their left and right edges.\n\n`right`\n\nAlign the content of each cell at its right edge.\n\n`justify`\n\nWiden whitespaces within the text of each cell so that the text fills the full width of each cell (full justification).\n\n`char`\n\nAlign each cell in the row on a specific character (such that each row in the column that is configured this way will horizontally align its cells on that character). This uses the [`char`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tr#attr-char) and [`charoff`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tr#attr-charoff) to establish the alignment character (typically \".\" or \",\" when aligning numerical data) and the number of characters that should follow the alignment character. This alignment type was never widely supported.\n\nIf no value is expressly set for `align`, the parent node's value is inherited.\n\nInstead of using the obsolete `align` attribute, you should instead use the CSS [`text-align`](https://developer.mozilla.org/en-US/docs/Web/CSS/text-align \"The text-align CSS property sets the horizontal alignment of an inline or table-cell box. This means it works like vertical-align but in the horizontal direction.\") property to establish `left`, `center`, `right`, or `justify` alignment for the row's cells. To apply character-based alignment, set the CSS [`text-align`](https://developer.mozilla.org/en-US/docs/Web/CSS/text-align \"The text-align CSS property sets the horizontal alignment of an inline or table-cell box. This means it works like vertical-align but in the horizontal direction.\") property to the alignment character (such as `\".\"` or `\",\"`)." + } + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/tr" + } + ] + }, + { + "name": "td", + "description": { + "kind": "markdown", + "value": "The td element represents a data cell in a table." + }, + "attributes": [ + { + "name": "colspan" + }, + { + "name": "rowspan" + }, + { + "name": "headers" + }, + { + "name": "abbr", + "description": "This attribute contains a short abbreviated description of the cell's content. Some user-agents, such as speech readers, may present this description before the content itself.\n\n**Note:** Do not use this attribute as it is obsolete in the latest standard. Alternatively, you can put the abbreviated description inside the cell and place the long content in the **title** attribute." + }, + { + "name": "align", + "description": "This enumerated attribute specifies how the cell content's horizontal alignment will be handled. Possible values are:\n\n* `left`: The content is aligned to the left of the cell.\n* `center`: The content is centered in the cell.\n* `right`: The content is aligned to the right of the cell.\n* `justify` (with text only): The content is stretched out inside the cell so that it covers its entire width.\n* `char` (with text only): The content is aligned to a character inside the `<th>` element with minimal offset. This character is defined by the [`char`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/td#attr-char) and [`charoff`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/td#attr-charoff) attributes Unimplemented (see [bug 2212](https://bugzilla.mozilla.org/show_bug.cgi?id=2212 \"character alignment not implemented (align=char, charoff=, text-align:<string>)\")).\n\nThe default value when this attribute is not specified is `left`.\n\n**Note:** Do not use this attribute as it is obsolete in the latest standard.\n\n* To achieve the same effect as the `left`, `center`, `right` or `justify` values, apply the CSS [`text-align`](https://developer.mozilla.org/en-US/docs/Web/CSS/text-align \"The text-align CSS property sets the horizontal alignment of an inline or table-cell box. This means it works like vertical-align but in the horizontal direction.\") property to the element.\n* To achieve the same effect as the `char` value, give the [`text-align`](https://developer.mozilla.org/en-US/docs/Web/CSS/text-align \"The text-align CSS property sets the horizontal alignment of an inline or table-cell box. This means it works like vertical-align but in the horizontal direction.\") property the same value you would use for the [`char`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/td#attr-char). Unimplemented in CSS3." + }, + { + "name": "axis", + "description": "This attribute contains a list of space-separated strings. Each string is the `id` of a group of cells that this header applies to.\n\n**Note:** Do not use this attribute as it is obsolete in the latest standard." + }, + { + "name": "bgcolor", + "description": "This attribute defines the background color of each cell in a column. It consists of a 6-digit hexadecimal code as defined in [sRGB](https://www.w3.org/Graphics/Color/sRGB) and is prefixed by '#'. This attribute may be used with one of sixteen predefined color strings:\n\n \n\n`black` = \"#000000\"\n\n \n\n`green` = \"#008000\"\n\n \n\n`silver` = \"#C0C0C0\"\n\n \n\n`lime` = \"#00FF00\"\n\n \n\n`gray` = \"#808080\"\n\n \n\n`olive` = \"#808000\"\n\n \n\n`white` = \"#FFFFFF\"\n\n \n\n`yellow` = \"#FFFF00\"\n\n \n\n`maroon` = \"#800000\"\n\n \n\n`navy` = \"#000080\"\n\n \n\n`red` = \"#FF0000\"\n\n \n\n`blue` = \"#0000FF\"\n\n \n\n`purple` = \"#800080\"\n\n \n\n`teal` = \"#008080\"\n\n \n\n`fuchsia` = \"#FF00FF\"\n\n \n\n`aqua` = \"#00FFFF\"\n\n**Note:** Do not use this attribute, as it is non-standard and only implemented in some versions of Microsoft Internet Explorer: The [`<td>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/td \"The HTML <td> element defines a cell of a table that contains data. It participates in the table model.\") element should be styled using [CSS](https://developer.mozilla.org/en-US/docs/CSS). To create a similar effect use the [`background-color`](https://developer.mozilla.org/en-US/docs/Web/CSS/background-color \"The background-color CSS property sets the background color of an element.\") property in [CSS](https://developer.mozilla.org/en-US/docs/CSS) instead." + } + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/td" + } + ] + }, + { + "name": "th", + "description": { + "kind": "markdown", + "value": "The th element represents a header cell in a table." + }, + "attributes": [ + { + "name": "colspan" + }, + { + "name": "rowspan" + }, + { + "name": "headers" + }, + { + "name": "scope", + "valueSet": "s" + }, + { + "name": "sorted" + }, + { + "name": "abbr", + "description": { + "kind": "markdown", + "value": "This attribute contains a short abbreviated description of the cell's content. Some user-agents, such as speech readers, may present this description before the content itself." + } + }, + { + "name": "align", + "description": "This enumerated attribute specifies how the cell content's horizontal alignment will be handled. Possible values are:\n\n* `left`: The content is aligned to the left of the cell.\n* `center`: The content is centered in the cell.\n* `right`: The content is aligned to the right of the cell.\n* `justify` (with text only): The content is stretched out inside the cell so that it covers its entire width.\n* `char` (with text only): The content is aligned to a character inside the `<th>` element with minimal offset. This character is defined by the [`char`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/th#attr-char) and [`charoff`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/th#attr-charoff) attributes.\n\nThe default value when this attribute is not specified is `left`.\n\n**Note:** Do not use this attribute as it is obsolete in the latest standard.\n\n* To achieve the same effect as the `left`, `center`, `right` or `justify` values, apply the CSS [`text-align`](https://developer.mozilla.org/en-US/docs/Web/CSS/text-align \"The text-align CSS property sets the horizontal alignment of an inline or table-cell box. This means it works like vertical-align but in the horizontal direction.\") property to the element.\n* To achieve the same effect as the `char` value, give the [`text-align`](https://developer.mozilla.org/en-US/docs/Web/CSS/text-align \"The text-align CSS property sets the horizontal alignment of an inline or table-cell box. This means it works like vertical-align but in the horizontal direction.\") property the same value you would use for the [`char`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/th#attr-char). Unimplemented in CSS3." + }, + { + "name": "axis", + "description": "This attribute contains a list of space-separated strings. Each string is the `id` of a group of cells that this header applies to.\n\n**Note:** Do not use this attribute as it is obsolete in the latest standard: use the [`scope`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/th#attr-scope) attribute instead." + }, + { + "name": "bgcolor", + "description": "This attribute defines the background color of each cell in a column. It consists of a 6-digit hexadecimal code as defined in [sRGB](https://www.w3.org/Graphics/Color/sRGB) and is prefixed by '#'. This attribute may be used with one of sixteen predefined color strings:\n\n \n\n`black` = \"#000000\"\n\n \n\n`green` = \"#008000\"\n\n \n\n`silver` = \"#C0C0C0\"\n\n \n\n`lime` = \"#00FF00\"\n\n \n\n`gray` = \"#808080\"\n\n \n\n`olive` = \"#808000\"\n\n \n\n`white` = \"#FFFFFF\"\n\n \n\n`yellow` = \"#FFFF00\"\n\n \n\n`maroon` = \"#800000\"\n\n \n\n`navy` = \"#000080\"\n\n \n\n`red` = \"#FF0000\"\n\n \n\n`blue` = \"#0000FF\"\n\n \n\n`purple` = \"#800080\"\n\n \n\n`teal` = \"#008080\"\n\n \n\n`fuchsia` = \"#FF00FF\"\n\n \n\n`aqua` = \"#00FFFF\"\n\n**Note:** Do not use this attribute, as it is non-standard and only implemented in some versions of Microsoft Internet Explorer: The [`<th>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/th \"The HTML <th> element defines a cell as header of a group of table cells. The exact nature of this group is defined by the scope and headers attributes.\") element should be styled using [CSS](https://developer.mozilla.org/en-US/docs/Web/CSS). To create a similar effect use the [`background-color`](https://developer.mozilla.org/en-US/docs/Web/CSS/background-color \"The background-color CSS property sets the background color of an element.\") property in [CSS](https://developer.mozilla.org/en-US/docs/Web/CSS) instead." + } + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/th" + } + ] + }, + { + "name": "form", + "description": { + "kind": "markdown", + "value": "The form element represents a collection of form-associated elements, some of which can represent editable values that can be submitted to a server for processing." + }, + "attributes": [ + { + "name": "accept-charset", + "description": { + "kind": "markdown", + "value": "A space- or comma-delimited list of character encodings that the server accepts. The browser uses them in the order in which they are listed. The default value, the reserved string `\"UNKNOWN\"`, indicates the same encoding as that of the document containing the form element. \nIn previous versions of HTML, the different character encodings could be delimited by spaces or commas. In HTML5, only spaces are allowed as delimiters." + } + }, + { + "name": "action", + "description": { + "kind": "markdown", + "value": "The URI of a program that processes the form information. This value can be overridden by a [`formaction`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#attr-formaction) attribute on a [`<button>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button \"The HTML <button> element represents a clickable button, which can be used in forms or anywhere in a document that needs simple, standard button functionality.\") or [`<input>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input \"The HTML <input> element is used to create interactive controls for web-based forms in order to accept data from the user; a wide variety of types of input data and control widgets are available, depending on the device and user agent.\") element." + } + }, + { + "name": "autocomplete", + "valueSet": "o", + "description": { + "kind": "markdown", + "value": "Indicates whether input elements can by default have their values automatically completed by the browser. This setting can be overridden by an `autocomplete` attribute on an element belonging to the form. Possible values are:\n\n* `off`: The user must explicitly enter a value into each field for every use, or the document provides its own auto-completion method; the browser does not automatically complete entries.\n* `on`: The browser can automatically complete values based on values that the user has previously entered in the form.\n\nFor most modern browsers (including Firefox 38+, Google Chrome 34+, IE 11+) setting the autocomplete attribute will not prevent a browser's password manager from asking the user if they want to store login fields (username and password), if the user permits the storage the browser will autofill the login the next time the user visits the page. See [The autocomplete attribute and login fields](https://developer.mozilla.org/en-US/docs/Web/Security/Securing_your_site/Turning_off_form_autocompletion#The_autocomplete_attribute_and_login_fields).\n**Note:** If you set `autocomplete` to `off` in a form because the document provides its own auto-completion, then you should also set `autocomplete` to `off` for each of the form's `input` elements that the document can auto-complete. For details, see the note regarding Google Chrome in the [Browser Compatibility chart](#compatChart)." + } + }, + { + "name": "enctype", + "valueSet": "et", + "description": { + "kind": "markdown", + "value": "When the value of the `method` attribute is `post`, enctype is the [MIME type](https://en.wikipedia.org/wiki/Mime_type) of content that is used to submit the form to the server. Possible values are:\n\n* `application/x-www-form-urlencoded`: The default value if the attribute is not specified.\n* `multipart/form-data`: The value used for an [`<input>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input \"The HTML <input> element is used to create interactive controls for web-based forms in order to accept data from the user; a wide variety of types of input data and control widgets are available, depending on the device and user agent.\") element with the `type` attribute set to \"file\".\n* `text/plain`: (HTML5)\n\nThis value can be overridden by a [`formenctype`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#attr-formenctype) attribute on a [`<button>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button \"The HTML <button> element represents a clickable button, which can be used in forms or anywhere in a document that needs simple, standard button functionality.\") or [`<input>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input \"The HTML <input> element is used to create interactive controls for web-based forms in order to accept data from the user; a wide variety of types of input data and control widgets are available, depending on the device and user agent.\") element." + } + }, + { + "name": "method", + "valueSet": "m", + "description": { + "kind": "markdown", + "value": "The [HTTP](https://developer.mozilla.org/en-US/docs/Web/HTTP) method that the browser uses to submit the form. Possible values are:\n\n* `post`: Corresponds to the HTTP [POST method](https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.5) ; form data are included in the body of the form and sent to the server.\n* `get`: Corresponds to the HTTP [GET method](https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.3); form data are appended to the `action` attribute URI with a '?' as separator, and the resulting URI is sent to the server. Use this method when the form has no side-effects and contains only ASCII characters.\n* `dialog`: Use when the form is inside a [`<dialog>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dialog \"The HTML <dialog> element represents a dialog box or other interactive component, such as an inspector or window.\") element to close the dialog when submitted.\n\nThis value can be overridden by a [`formmethod`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#attr-formmethod) attribute on a [`<button>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button \"The HTML <button> element represents a clickable button, which can be used in forms or anywhere in a document that needs simple, standard button functionality.\") or [`<input>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input \"The HTML <input> element is used to create interactive controls for web-based forms in order to accept data from the user; a wide variety of types of input data and control widgets are available, depending on the device and user agent.\") element." + } + }, + { + "name": "name", + "description": { + "kind": "markdown", + "value": "The name of the form. In HTML 4, its use is deprecated (`id` should be used instead). It must be unique among the forms in a document and not just an empty string in HTML 5." + } + }, + { + "name": "novalidate", + "valueSet": "v", + "description": { + "kind": "markdown", + "value": "This Boolean attribute indicates that the form is not to be validated when submitted. If this attribute is not specified (and therefore the form is validated), this default setting can be overridden by a [`formnovalidate`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#attr-formnovalidate) attribute on a [`<button>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button \"The HTML <button> element represents a clickable button, which can be used in forms or anywhere in a document that needs simple, standard button functionality.\") or [`<input>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input \"The HTML <input> element is used to create interactive controls for web-based forms in order to accept data from the user; a wide variety of types of input data and control widgets are available, depending on the device and user agent.\") element belonging to the form." + } + }, + { + "name": "target", + "valueSet": "target", + "description": { + "kind": "markdown", + "value": "A name or keyword indicating where to display the response that is received after submitting the form. In HTML 4, this is the name/keyword for a frame. In HTML5, it is a name/keyword for a _browsing context_ (for example, tab, window, or inline frame). The following keywords have special meanings:\n\n* `_self`: Load the response into the same HTML 4 frame (or HTML5 browsing context) as the current one. This value is the default if the attribute is not specified.\n* `_blank`: Load the response into a new unnamed HTML 4 window or HTML5 browsing context.\n* `_parent`: Load the response into the HTML 4 frameset parent of the current frame, or HTML5 parent browsing context of the current one. If there is no parent, this option behaves the same way as `_self`.\n* `_top`: HTML 4: Load the response into the full original window, and cancel all other frames. HTML5: Load the response into the top-level browsing context (i.e., the browsing context that is an ancestor of the current one, and has no parent). If there is no parent, this option behaves the same way as `_self`.\n* _iframename_: The response is displayed in a named [`<iframe>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe \"The HTML Inline Frame element (<iframe>) represents a nested browsing context, embedding another HTML page into the current one.\").\n\nHTML5: This value can be overridden by a [`formtarget`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#attr-formtarget) attribute on a [`<button>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button \"The HTML <button> element represents a clickable button, which can be used in forms or anywhere in a document that needs simple, standard button functionality.\") or [`<input>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input \"The HTML <input> element is used to create interactive controls for web-based forms in order to accept data from the user; a wide variety of types of input data and control widgets are available, depending on the device and user agent.\") element." + } + }, + { + "name": "accept", + "description": "A comma-separated list of content types that the server accepts.\n\n**Usage note:** This attribute has been removed in HTML5 and should no longer be used. Instead, use the [`accept`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#attr-accept) attribute of the specific [`<input>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input \"The HTML <input> element is used to create interactive controls for web-based forms in order to accept data from the user; a wide variety of types of input data and control widgets are available, depending on the device and user agent.\") element." + }, + { + "name": "autocapitalize", + "description": "This is a nonstandard attribute used by iOS Safari Mobile which controls whether and how the text value for textual form control descendants should be automatically capitalized as it is entered/edited by the user. If the `autocapitalize` attribute is specified on an individual form control descendant, it trumps the form-wide `autocapitalize` setting. The non-deprecated values are available in iOS 5 and later. The default value is `sentences`. Possible values are:\n\n* `none`: Completely disables automatic capitalization\n* `sentences`: Automatically capitalize the first letter of sentences.\n* `words`: Automatically capitalize the first letter of words.\n* `characters`: Automatically capitalize all characters.\n* `on`: Deprecated since iOS 5.\n* `off`: Deprecated since iOS 5." + } + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/form" + } + ] + }, + { + "name": "label", + "description": { + "kind": "markdown", + "value": "The label element represents a caption in a user interface. The caption can be associated with a specific form control, known as the label element's labeled control, either using the for attribute, or by putting the form control inside the label element itself." + }, + "attributes": [ + { + "name": "form", + "description": { + "kind": "markdown", + "value": "The [`<form>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form \"The HTML <form> element represents a document section that contains interactive controls for submitting information to a web server.\") element with which the label is associated (its _form owner_). If specified, the value of the attribute is the `id` of a [`<form>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form \"The HTML <form> element represents a document section that contains interactive controls for submitting information to a web server.\") element in the same document. This lets you place label elements anywhere within a document, not just as descendants of their form elements." + } + }, + { + "name": "for", + "description": { + "kind": "markdown", + "value": "The [`id`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes#attr-id) of a [labelable](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_categories#Form_labelable) form-related element in the same document as the `<label>` element. The first element in the document with an `id` matching the value of the `for` attribute is the _labeled control_ for this label element, if it is a labelable element. If it is not labelable then the `for` attribute has no effect. If there are other elements which also match the `id` value, later in the document, they are not considered.\n\n**Note**: A `<label>` element can have both a `for` attribute and a contained control element, as long as the `for` attribute points to the contained control element." + } + } + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/label" + } + ] + }, + { + "name": "input", + "description": { + "kind": "markdown", + "value": "The input element represents a typed data field, usually with a form control to allow the user to edit the data." + }, + "void": true, + "attributes": [ + { + "name": "accept" + }, + { + "name": "alt" + }, + { + "name": "autocomplete", + "valueSet": "inputautocomplete" + }, + { + "name": "autofocus", + "valueSet": "v" + }, + { + "name": "checked", + "valueSet": "v" + }, + { + "name": "dirname" + }, + { + "name": "disabled", + "valueSet": "v" + }, + { + "name": "form" + }, + { + "name": "formaction" + }, + { + "name": "formenctype", + "valueSet": "et" + }, + { + "name": "formmethod", + "valueSet": "fm" + }, + { + "name": "formnovalidate", + "valueSet": "v" + }, + { + "name": "formtarget" + }, + { + "name": "height" + }, + { + "name": "inputmode", + "valueSet": "im" + }, + { + "name": "list" + }, + { + "name": "max" + }, + { + "name": "maxlength" + }, + { + "name": "min" + }, + { + "name": "minlength" + }, + { + "name": "multiple", + "valueSet": "v" + }, + { + "name": "name" + }, + { + "name": "pattern" + }, + { + "name": "placeholder" + }, + { + "name": "readonly", + "valueSet": "v" + }, + { + "name": "required", + "valueSet": "v" + }, + { + "name": "size" + }, + { + "name": "src" + }, + { + "name": "step" + }, + { + "name": "type", + "valueSet": "t" + }, + { + "name": "value" + }, + { + "name": "width" + } + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/input" + } + ] + }, + { + "name": "button", + "description": { + "kind": "markdown", + "value": "The button element represents a button labeled by its contents." + }, + "attributes": [ + { + "name": "autofocus", + "valueSet": "v", + "description": { + "kind": "markdown", + "value": "This Boolean attribute lets you specify that the button should have input focus when the page loads, unless the user overrides it, for example by typing in a different control. Only one form-associated element in a document can have this attribute specified." + } + }, + { + "name": "disabled", + "valueSet": "v", + "description": { + "kind": "markdown", + "value": "This Boolean attribute indicates that the user cannot interact with the button. If this attribute is not specified, the button inherits its setting from the containing element, for example [`<fieldset>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/fieldset \"The HTML <fieldset> element is used to group several controls as well as labels (<label>) within a web form.\"); if there is no containing element with the **disabled** attribute set, then the button is enabled.\n\nFirefox will, unlike other browsers, by default, [persist the dynamic disabled state](https://stackoverflow.com/questions/5985839/bug-with-firefox-disabled-attribute-of-input-not-resetting-when-refreshing) of a [`<button>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button \"The HTML <button> element represents a clickable button, which can be used in forms or anywhere in a document that needs simple, standard button functionality.\") across page loads. Use the [`autocomplete`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#attr-autocomplete) attribute to control this feature." + } + }, + { + "name": "form", + "description": { + "kind": "markdown", + "value": "The form element that the button is associated with (its _form owner_). The value of the attribute must be the **id** attribute of a [`<form>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form \"The HTML <form> element represents a document section that contains interactive controls for submitting information to a web server.\") element in the same document. If this attribute is not specified, the `<button>` element will be associated to an ancestor [`<form>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form \"The HTML <form> element represents a document section that contains interactive controls for submitting information to a web server.\") element, if one exists. This attribute enables you to associate `<button>` elements to [`<form>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form \"The HTML <form> element represents a document section that contains interactive controls for submitting information to a web server.\") elements anywhere within a document, not just as descendants of [`<form>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form \"The HTML <form> element represents a document section that contains interactive controls for submitting information to a web server.\") elements." + } + }, + { + "name": "formaction", + "description": { + "kind": "markdown", + "value": "The URI of a program that processes the information submitted by the button. If specified, it overrides the [`action`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form#attr-action) attribute of the button's form owner." + } + }, + { + "name": "formenctype", + "valueSet": "et", + "description": { + "kind": "markdown", + "value": "If the button is a submit button, this attribute specifies the type of content that is used to submit the form to the server. Possible values are:\n\n* `application/x-www-form-urlencoded`: The default value if the attribute is not specified.\n* `multipart/form-data`: Use this value if you are using an [`<input>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input \"The HTML <input> element is used to create interactive controls for web-based forms in order to accept data from the user; a wide variety of types of input data and control widgets are available, depending on the device and user agent.\") element with the [`type`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#attr-type) attribute set to `file`.\n* `text/plain`\n\nIf this attribute is specified, it overrides the [`enctype`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form#attr-enctype) attribute of the button's form owner." + } + }, + { + "name": "formmethod", + "valueSet": "fm", + "description": { + "kind": "markdown", + "value": "If the button is a submit button, this attribute specifies the HTTP method that the browser uses to submit the form. Possible values are:\n\n* `post`: The data from the form are included in the body of the form and sent to the server.\n* `get`: The data from the form are appended to the **form** attribute URI, with a '?' as a separator, and the resulting URI is sent to the server. Use this method when the form has no side-effects and contains only ASCII characters.\n\nIf specified, this attribute overrides the [`method`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form#attr-method) attribute of the button's form owner." + } + }, + { + "name": "formnovalidate", + "valueSet": "v", + "description": { + "kind": "markdown", + "value": "If the button is a submit button, this Boolean attribute specifies that the form is not to be validated when it is submitted. If this attribute is specified, it overrides the [`novalidate`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form#attr-novalidate) attribute of the button's form owner." + } + }, + { + "name": "formtarget", + "description": { + "kind": "markdown", + "value": "If the button is a submit button, this attribute is a name or keyword indicating where to display the response that is received after submitting the form. This is a name of, or keyword for, a _browsing context_ (for example, tab, window, or inline frame). If this attribute is specified, it overrides the [`target`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form#attr-target) attribute of the button's form owner. The following keywords have special meanings:\n\n* `_self`: Load the response into the same browsing context as the current one. This value is the default if the attribute is not specified.\n* `_blank`: Load the response into a new unnamed browsing context.\n* `_parent`: Load the response into the parent browsing context of the current one. If there is no parent, this option behaves the same way as `_self`.\n* `_top`: Load the response into the top-level browsing context (that is, the browsing context that is an ancestor of the current one, and has no parent). If there is no parent, this option behaves the same way as `_self`." + } + }, + { + "name": "name", + "description": { + "kind": "markdown", + "value": "The name of the button, which is submitted with the form data." + } + }, + { + "name": "type", + "valueSet": "bt", + "description": { + "kind": "markdown", + "value": "The type of the button. Possible values are:\n\n* `submit`: The button submits the form data to the server. This is the default if the attribute is not specified, or if the attribute is dynamically changed to an empty or invalid value.\n* `reset`: The button resets all the controls to their initial values.\n* `button`: The button has no default behavior. It can have client-side scripts associated with the element's events, which are triggered when the events occur." + } + }, + { + "name": "value", + "description": { + "kind": "markdown", + "value": "The initial value of the button. It defines the value associated with the button which is submitted with the form data. This value is passed to the server in params when the form is submitted." + } + }, + { + "name": "autocomplete", + "description": "The use of this attribute on a [`<button>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button \"The HTML <button> element represents a clickable button, which can be used in forms or anywhere in a document that needs simple, standard button functionality.\") is nonstandard and Firefox-specific. By default, unlike other browsers, [Firefox persists the dynamic disabled state](https://stackoverflow.com/questions/5985839/bug-with-firefox-disabled-attribute-of-input-not-resetting-when-refreshing) of a [`<button>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button \"The HTML <button> element represents a clickable button, which can be used in forms or anywhere in a document that needs simple, standard button functionality.\") across page loads. Setting the value of this attribute to `off` (i.e. `autocomplete=\"off\"`) disables this feature. See [bug 654072](https://bugzilla.mozilla.org/show_bug.cgi?id=654072 \"if disabled state is changed with javascript, the normal state doesn't return after refreshing the page\")." + } + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/button" + } + ] + }, + { + "name": "select", + "description": { + "kind": "markdown", + "value": "The select element represents a control for selecting amongst a set of options." + }, + "attributes": [ + { + "name": "autocomplete", + "valueSet": "inputautocomplete", + "description": { + "kind": "markdown", + "value": "A [`DOMString`](https://developer.mozilla.org/en-US/docs/Web/API/DOMString \"DOMString is a UTF-16 String. As JavaScript already uses such strings, DOMString is mapped directly to a String.\") providing a hint for a [user agent's](https://developer.mozilla.org/en-US/docs/Glossary/user_agent \"user agent's: A user agent is a computer program representing a person, for example, a browser in a Web context.\") autocomplete feature. See [The HTML autocomplete attribute](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete) for a complete list of values and details on how to use autocomplete." + } + }, + { + "name": "autofocus", + "valueSet": "v", + "description": { + "kind": "markdown", + "value": "This Boolean attribute lets you specify that a form control should have input focus when the page loads. Only one form element in a document can have the `autofocus` attribute." + } + }, + { + "name": "disabled", + "valueSet": "v", + "description": { + "kind": "markdown", + "value": "This Boolean attribute indicates that the user cannot interact with the control. If this attribute is not specified, the control inherits its setting from the containing element, for example `fieldset`; if there is no containing element with the `disabled` attribute set, then the control is enabled." + } + }, + { + "name": "form", + "description": { + "kind": "markdown", + "value": "This attribute lets you specify the form element to which the select element is associated (that is, its \"form owner\"). If this attribute is specified, its value must be the same as the `id` of a form element in the same document. This enables you to place select elements anywhere within a document, not just as descendants of their form elements." + } + }, + { + "name": "multiple", + "valueSet": "v", + "description": { + "kind": "markdown", + "value": "This Boolean attribute indicates that multiple options can be selected in the list. If it is not specified, then only one option can be selected at a time. When `multiple` is specified, most browsers will show a scrolling list box instead of a single line dropdown." + } + }, + { + "name": "name", + "description": { + "kind": "markdown", + "value": "This attribute is used to specify the name of the control." + } + }, + { + "name": "required", + "valueSet": "v", + "description": { + "kind": "markdown", + "value": "A Boolean attribute indicating that an option with a non-empty string value must be selected." + } + }, + { + "name": "size", + "description": { + "kind": "markdown", + "value": "If the control is presented as a scrolling list box (e.g. when `multiple` is specified), this attribute represents the number of rows in the list that should be visible at one time. Browsers are not required to present a select element as a scrolled list box. The default value is 0.\n\n**Note:** According to the HTML5 specification, the default value for size should be 1; however, in practice, this has been found to break some web sites, and no other browser currently does that, so Mozilla has opted to continue to return 0 for the time being with Firefox." + } + } + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/select" + } + ] + }, + { + "name": "datalist", + "description": { + "kind": "markdown", + "value": "The datalist element represents a set of option elements that represent predefined options for other controls. In the rendering, the datalist element represents nothing and it, along with its children, should be hidden." + }, + "attributes": [], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/datalist" + } + ] + }, + { + "name": "optgroup", + "description": { + "kind": "markdown", + "value": "The optgroup element represents a group of option elements with a common label." + }, + "attributes": [ + { + "name": "disabled", + "valueSet": "v", + "description": { + "kind": "markdown", + "value": "If this Boolean attribute is set, none of the items in this option group is selectable. Often browsers grey out such control and it won't receive any browsing events, like mouse clicks or focus-related ones." + } + }, + { + "name": "label", + "description": { + "kind": "markdown", + "value": "The name of the group of options, which the browser can use when labeling the options in the user interface. This attribute is mandatory if this element is used." + } + } + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/optgroup" + } + ] + }, + { + "name": "option", + "description": { + "kind": "markdown", + "value": "The option element represents an option in a select element or as part of a list of suggestions in a datalist element." + }, + "attributes": [ + { + "name": "disabled", + "valueSet": "v", + "description": { + "kind": "markdown", + "value": "If this Boolean attribute is set, this option is not checkable. Often browsers grey out such control and it won't receive any browsing event, like mouse clicks or focus-related ones. If this attribute is not set, the element can still be disabled if one of its ancestors is a disabled [`<optgroup>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/optgroup \"The HTML <optgroup> element creates a grouping of options within a <select> element.\") element." + } + }, + { + "name": "label", + "description": { + "kind": "markdown", + "value": "This attribute is text for the label indicating the meaning of the option. If the `label` attribute isn't defined, its value is that of the element text content." + } + }, + { + "name": "selected", + "valueSet": "v", + "description": { + "kind": "markdown", + "value": "If present, this Boolean attribute indicates that the option is initially selected. If the `<option>` element is the descendant of a [`<select>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select \"The HTML <select> element represents a control that provides a menu of options\") element whose [`multiple`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select#attr-multiple) attribute is not set, only one single `<option>` of this [`<select>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select \"The HTML <select> element represents a control that provides a menu of options\") element may have the `selected` attribute." + } + }, + { + "name": "value", + "description": { + "kind": "markdown", + "value": "The content of this attribute represents the value to be submitted with the form, should this option be selected. If this attribute is omitted, the value is taken from the text content of the option element." + } + } + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/option" + } + ] + }, + { + "name": "textarea", + "description": { + "kind": "markdown", + "value": "The textarea element represents a multiline plain text edit control for the element's raw value. The contents of the control represent the control's default value." + }, + "attributes": [ + { + "name": "autocomplete", + "valueSet": "inputautocomplete", + "description": { + "kind": "markdown", + "value": "This attribute indicates whether the value of the control can be automatically completed by the browser. Possible values are:\n\n* `off`: The user must explicitly enter a value into this field for every use, or the document provides its own auto-completion method; the browser does not automatically complete the entry.\n* `on`: The browser can automatically complete the value based on values that the user has entered during previous uses.\n\nIf the `autocomplete` attribute is not specified on a `<textarea>` element, then the browser uses the `autocomplete` attribute value of the `<textarea>` element's form owner. The form owner is either the [`<form>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form \"The HTML <form> element represents a document section that contains interactive controls for submitting information to a web server.\") element that this `<textarea>` element is a descendant of or the form element whose `id` is specified by the `form` attribute of the input element. For more information, see the [`autocomplete`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form#attr-autocomplete) attribute in [`<form>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form \"The HTML <form> element represents a document section that contains interactive controls for submitting information to a web server.\")." + } + }, + { + "name": "autofocus", + "valueSet": "v", + "description": { + "kind": "markdown", + "value": "This Boolean attribute lets you specify that a form control should have input focus when the page loads. Only one form-associated element in a document can have this attribute specified." + } + }, + { + "name": "cols", + "description": { + "kind": "markdown", + "value": "The visible width of the text control, in average character widths. If it is specified, it must be a positive integer. If it is not specified, the default value is `20`." + } + }, + { + "name": "dirname" + }, + { + "name": "disabled", + "valueSet": "v", + "description": { + "kind": "markdown", + "value": "This Boolean attribute indicates that the user cannot interact with the control. If this attribute is not specified, the control inherits its setting from the containing element, for example [`<fieldset>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/fieldset \"The HTML <fieldset> element is used to group several controls as well as labels (<label>) within a web form.\"); if there is no containing element when the `disabled` attribute is set, the control is enabled." + } + }, + { + "name": "form", + "description": { + "kind": "markdown", + "value": "The form element that the `<textarea>` element is associated with (its \"form owner\"). The value of the attribute must be the `id` of a form element in the same document. If this attribute is not specified, the `<textarea>` element must be a descendant of a form element. This attribute enables you to place `<textarea>` elements anywhere within a document, not just as descendants of form elements." + } + }, + { + "name": "inputmode", + "valueSet": "im" + }, + { + "name": "maxlength", + "description": { + "kind": "markdown", + "value": "The maximum number of characters (unicode code points) that the user can enter. If this value isn't specified, the user can enter an unlimited number of characters." + } + }, + { + "name": "minlength", + "description": { + "kind": "markdown", + "value": "The minimum number of characters (unicode code points) required that the user should enter." + } + }, + { + "name": "name", + "description": { + "kind": "markdown", + "value": "The name of the control." + } + }, + { + "name": "placeholder", + "description": { + "kind": "markdown", + "value": "A hint to the user of what can be entered in the control. Carriage returns or line-feeds within the placeholder text must be treated as line breaks when rendering the hint.\n\n**Note:** Placeholders should only be used to show an example of the type of data that should be entered into a form; they are _not_ a substitute for a proper [`<label>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/label \"The HTML <label> element represents a caption for an item in a user interface.\") element tied to the input. See [Labels and placeholders](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Labels_and_placeholders \"The HTML <input> element is used to create interactive controls for web-based forms in order to accept data from the user; a wide variety of types of input data and control widgets are available, depending on the device and user agent.\") in [<input>: The Input (Form Input) element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input \"The HTML <input> element is used to create interactive controls for web-based forms in order to accept data from the user; a wide variety of types of input data and control widgets are available, depending on the device and user agent.\") for a full explanation." + } + }, + { + "name": "readonly", + "valueSet": "v", + "description": { + "kind": "markdown", + "value": "This Boolean attribute indicates that the user cannot modify the value of the control. Unlike the `disabled` attribute, the `readonly` attribute does not prevent the user from clicking or selecting in the control. The value of a read-only control is still submitted with the form." + } + }, + { + "name": "required", + "valueSet": "v", + "description": { + "kind": "markdown", + "value": "This attribute specifies that the user must fill in a value before submitting a form." + } + }, + { + "name": "rows", + "description": { + "kind": "markdown", + "value": "The number of visible text lines for the control." + } + }, + { + "name": "wrap", + "valueSet": "w", + "description": { + "kind": "markdown", + "value": "Indicates how the control wraps text. Possible values are:\n\n* `hard`: The browser automatically inserts line breaks (CR+LF) so that each line has no more than the width of the control; the `cols` attribute must also be specified for this to take effect.\n* `soft`: The browser ensures that all line breaks in the value consist of a CR+LF pair, but does not insert any additional line breaks.\n* `off` : Like `soft` but changes appearance to `white-space: pre` so line segments exceeding `cols` are not wrapped and the `<textarea>` becomes horizontally scrollable.\n\nIf this attribute is not specified, `soft` is its default value." + } + }, + { + "name": "autocapitalize", + "description": "This is a non-standard attribute supported by WebKit on iOS (therefore nearly all browsers running on iOS, including Safari, Firefox, and Chrome), which controls whether and how the text value should be automatically capitalized as it is entered/edited by the user. The non-deprecated values are available in iOS 5 and later. Possible values are:\n\n* `none`: Completely disables automatic capitalization.\n* `sentences`: Automatically capitalize the first letter of sentences.\n* `words`: Automatically capitalize the first letter of words.\n* `characters`: Automatically capitalize all characters.\n* `on`: Deprecated since iOS 5.\n* `off`: Deprecated since iOS 5." + }, + { + "name": "spellcheck", + "description": "Specifies whether the `<textarea>` is subject to spell checking by the underlying browser/OS. the value can be:\n\n* `true`: Indicates that the element needs to have its spelling and grammar checked.\n* `default` : Indicates that the element is to act according to a default behavior, possibly based on the parent element's own `spellcheck` value.\n* `false` : Indicates that the element should not be spell checked." + } + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/textarea" + } + ] + }, + { + "name": "output", + "description": { + "kind": "markdown", + "value": "The output element represents the result of a calculation performed by the application, or the result of a user action." + }, + "attributes": [ + { + "name": "for", + "description": { + "kind": "markdown", + "value": "A space-separated list of other elements’ [`id`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id)s, indicating that those elements contributed input values to (or otherwise affected) the calculation." + } + }, + { + "name": "form", + "description": { + "kind": "markdown", + "value": "The [form element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form) that this element is associated with (its \"form owner\"). The value of the attribute must be an `id` of a form element in the same document. If this attribute is not specified, the output element must be a descendant of a form element. This attribute enables you to place output elements anywhere within a document, not just as descendants of their form elements." + } + }, + { + "name": "name", + "description": { + "kind": "markdown", + "value": "The name of the element, exposed in the [`HTMLFormElement`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement \"The HTMLFormElement interface represents a <form> element in the DOM; it allows access to and in some cases modification of aspects of the form, as well as access to its component elements.\") API." + } + } + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/output" + } + ] + }, + { + "name": "progress", + "description": { + "kind": "markdown", + "value": "The progress element represents the completion progress of a task. The progress is either indeterminate, indicating that progress is being made but that it is not clear how much more work remains to be done before the task is complete (e.g. because the task is waiting for a remote host to respond), or the progress is a number in the range zero to a maximum, giving the fraction of work that has so far been completed." + }, + "attributes": [ + { + "name": "value", + "description": { + "kind": "markdown", + "value": "This attribute specifies how much of the task that has been completed. It must be a valid floating point number between 0 and `max`, or between 0 and 1 if `max` is omitted. If there is no `value` attribute, the progress bar is indeterminate; this indicates that an activity is ongoing with no indication of how long it is expected to take." + } + }, + { + "name": "max", + "description": { + "kind": "markdown", + "value": "This attribute describes how much work the task indicated by the `progress` element requires. The `max` attribute, if present, must have a value greater than zero and be a valid floating point number. The default value is 1." + } + } + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/progress" + } + ] + }, + { + "name": "meter", + "description": { + "kind": "markdown", + "value": "The meter element represents a scalar measurement within a known range, or a fractional value; for example disk usage, the relevance of a query result, or the fraction of a voting population to have selected a particular candidate." + }, + "attributes": [ + { + "name": "value", + "description": { + "kind": "markdown", + "value": "The current numeric value. This must be between the minimum and maximum values (`min` attribute and `max` attribute) if they are specified. If unspecified or malformed, the value is 0. If specified, but not within the range given by the `min` attribute and `max` attribute, the value is equal to the nearest end of the range.\n\n**Usage note:** Unless the `value` attribute is between `0` and `1` (inclusive), the `min` and `max` attributes should define the range so that the `value` attribute's value is within it." + } + }, + { + "name": "min", + "description": { + "kind": "markdown", + "value": "The lower numeric bound of the measured range. This must be less than the maximum value (`max` attribute), if specified. If unspecified, the minimum value is 0." + } + }, + { + "name": "max", + "description": { + "kind": "markdown", + "value": "The upper numeric bound of the measured range. This must be greater than the minimum value (`min` attribute), if specified. If unspecified, the maximum value is 1." + } + }, + { + "name": "low", + "description": { + "kind": "markdown", + "value": "The upper numeric bound of the low end of the measured range. This must be greater than the minimum value (`min` attribute), and it also must be less than the high value and maximum value (`high` attribute and `max` attribute, respectively), if any are specified. If unspecified, or if less than the minimum value, the `low` value is equal to the minimum value." + } + }, + { + "name": "high", + "description": { + "kind": "markdown", + "value": "The lower numeric bound of the high end of the measured range. This must be less than the maximum value (`max` attribute), and it also must be greater than the low value and minimum value (`low` attribute and **min** attribute, respectively), if any are specified. If unspecified, or if greater than the maximum value, the `high` value is equal to the maximum value." + } + }, + { + "name": "optimum", + "description": { + "kind": "markdown", + "value": "This attribute indicates the optimal numeric value. It must be within the range (as defined by the `min` attribute and `max` attribute). When used with the `low` attribute and `high` attribute, it gives an indication where along the range is considered preferable. For example, if it is between the `min` attribute and the `low` attribute, then the lower range is considered preferred." + } + }, + { + "name": "form", + "description": "This attribute associates the element with a `form` element that has ownership of the `meter` element. For example, a `meter` might be displaying a range corresponding to an `input` element of `type` _number_. This attribute is only used if the `meter` element is being used as a form-associated element; even then, it may be omitted if the element appears as a descendant of a `form` element." + } + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/meter" + } + ] + }, + { + "name": "fieldset", + "description": { + "kind": "markdown", + "value": "The fieldset element represents a set of form controls optionally grouped under a common name." + }, + "attributes": [ + { + "name": "disabled", + "valueSet": "v", + "description": { + "kind": "markdown", + "value": "If this Boolean attribute is set, all form controls that are descendants of the `<fieldset>`, are disabled, meaning they are not editable and won't be submitted along with the `<form>`. They won't receive any browsing events, like mouse clicks or focus-related events. By default browsers display such controls grayed out. Note that form elements inside the [`<legend>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/legend \"The HTML <legend> element represents a caption for the content of its parent <fieldset>.\") element won't be disabled." + } + }, + { + "name": "form", + "description": { + "kind": "markdown", + "value": "This attribute takes the value of the `id` attribute of a [`<form>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form \"The HTML <form> element represents a document section that contains interactive controls for submitting information to a web server.\") element you want the `<fieldset>` to be part of, even if it is not inside the form." + } + }, + { + "name": "name", + "description": { + "kind": "markdown", + "value": "The name associated with the group.\n\n**Note**: The caption for the fieldset is given by the first [`<legend>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/legend \"The HTML <legend> element represents a caption for the content of its parent <fieldset>.\") element nested inside it." + } + } + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/fieldset" + } + ] + }, + { + "name": "legend", + "description": { + "kind": "markdown", + "value": "The legend element represents a caption for the rest of the contents of the legend element's parent fieldset element, if any." + }, + "attributes": [], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/legend" + } + ] + }, + { + "name": "details", + "description": { + "kind": "markdown", + "value": "The details element represents a disclosure widget from which the user can obtain additional information or controls." + }, + "attributes": [ + { + "name": "open", + "valueSet": "v", + "description": { + "kind": "markdown", + "value": "This Boolean attribute indicates whether or not the details — that is, the contents of the `<details>` element — are currently visible. The default, `false`, means the details are not visible." + } + } + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/details" + } + ] + }, + { + "name": "summary", + "description": { + "kind": "markdown", + "value": "The summary element represents a summary, caption, or legend for the rest of the contents of the summary element's parent details element, if any." + }, + "attributes": [], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/summary" + } + ] + }, + { + "name": "dialog", + "description": { + "kind": "markdown", + "value": "The dialog element represents a part of an application that a user interacts with to perform a task, for example a dialog box, inspector, or window." + }, + "attributes": [ + { + "name": "open", + "description": "Indicates that the dialog is active and available for interaction. When the `open` attribute is not set, the dialog shouldn't be shown to the user." + } + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/dialog" + } + ] + }, + { + "name": "script", + "description": { + "kind": "markdown", + "value": "The script element allows authors to include dynamic script and data blocks in their documents. The element does not represent content for the user." + }, + "attributes": [ + { + "name": "src", + "description": { + "kind": "markdown", + "value": "This attribute specifies the URI of an external script; this can be used as an alternative to embedding a script directly within a document.\n\nIf a `script` element has a `src` attribute specified, it should not have a script embedded inside its tags." + } + }, + { + "name": "type", + "description": { + "kind": "markdown", + "value": "This attribute indicates the type of script represented. The value of this attribute will be in one of the following categories:\n\n* **Omitted or a JavaScript MIME type:** For HTML5-compliant browsers this indicates the script is JavaScript. HTML5 specification urges authors to omit the attribute rather than provide a redundant MIME type. In earlier browsers, this identified the scripting language of the embedded or imported (via the `src` attribute) code. JavaScript MIME types are [listed in the specification](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types#JavaScript_types).\n* **`module`:** For HTML5-compliant browsers the code is treated as a JavaScript module. The processing of the script contents is not affected by the `charset` and `defer` attributes. For information on using `module`, see [ES6 in Depth: Modules](https://hacks.mozilla.org/2015/08/es6-in-depth-modules/). Code may behave differently when the `module` keyword is used.\n* **Any other value:** The embedded content is treated as a data block which won't be processed by the browser. Developers must use a valid MIME type that is not a JavaScript MIME type to denote data blocks. The `src` attribute will be ignored.\n\n**Note:** in Firefox you could specify the version of JavaScript contained in a `<script>` element by including a non-standard `version` parameter inside the `type` attribute — for example `type=\"text/javascript;version=1.8\"`. This has been removed in Firefox 59 (see [bug 1428745](https://bugzilla.mozilla.org/show_bug.cgi?id=1428745 \"FIXED: Remove support for version parameter from script loader\"))." + } + }, + { + "name": "charset" + }, + { + "name": "async", + "valueSet": "v", + "description": { + "kind": "markdown", + "value": "This is a Boolean attribute indicating that the browser should, if possible, load the script asynchronously.\n\nThis attribute must not be used if the `src` attribute is absent (i.e. for inline scripts). If it is included in this case it will have no effect.\n\nBrowsers usually assume the worst case scenario and load scripts synchronously, (i.e. `async=\"false\"`) during HTML parsing.\n\nDynamically inserted scripts (using [`document.createElement()`](https://developer.mozilla.org/en-US/docs/Web/API/Document/createElement \"In an HTML document, the document.createElement() method creates the HTML element specified by tagName, or an HTMLUnknownElement if tagName isn't recognized.\")) load asynchronously by default, so to turn on synchronous loading (i.e. scripts load in the order they were inserted) set `async=\"false\"`.\n\nSee [Browser compatibility](#Browser_compatibility) for notes on browser support. See also [Async scripts for asm.js](https://developer.mozilla.org/en-US/docs/Games/Techniques/Async_scripts)." + } + }, + { + "name": "defer", + "valueSet": "v", + "description": { + "kind": "markdown", + "value": "This Boolean attribute is set to indicate to a browser that the script is meant to be executed after the document has been parsed, but before firing [`DOMContentLoaded`](https://developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoaded \"/en-US/docs/Web/Events/DOMContentLoaded\").\n\nScripts with the `defer` attribute will prevent the `DOMContentLoaded` event from firing until the script has loaded and finished evaluating.\n\nThis attribute must not be used if the `src` attribute is absent (i.e. for inline scripts), in this case it would have no effect.\n\nTo achieve a similar effect for dynamically inserted scripts use `async=\"false\"` instead. Scripts with the `defer` attribute will execute in the order in which they appear in the document." + } + }, + { + "name": "crossorigin", + "valueSet": "xo", + "description": { + "kind": "markdown", + "value": "Normal `script` elements pass minimal information to the [`window.onerror`](https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onerror \"The onerror property of the GlobalEventHandlers mixin is an EventHandler that processes error events.\") for scripts which do not pass the standard [CORS](https://developer.mozilla.org/en-US/docs/Glossary/CORS \"CORS: CORS (Cross-Origin Resource Sharing) is a system, consisting of transmitting HTTP headers, that determines whether browsers block frontend JavaScript code from accessing responses for cross-origin requests.\") checks. To allow error logging for sites which use a separate domain for static media, use this attribute. See [CORS settings attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes) for a more descriptive explanation of its valid arguments." + } + }, + { + "name": "nonce", + "description": { + "kind": "markdown", + "value": "A cryptographic nonce (number used once) to list the allowed inline scripts in a [script-src Content-Security-Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/script-src). The server must generate a unique nonce value each time it transmits a policy. It is critical to provide a nonce that cannot be guessed as bypassing a resource's policy is otherwise trivial." + } + }, + { + "name": "integrity", + "description": "This attribute contains inline metadata that a user agent can use to verify that a fetched resource has been delivered free of unexpected manipulation. See [Subresource Integrity](https://developer.mozilla.org/en-US/docs/Web/Security/Subresource_Integrity)." + }, + { + "name": "nomodule", + "description": "This Boolean attribute is set to indicate that the script should not be executed in browsers that support [ES2015 modules](https://hacks.mozilla.org/2015/08/es6-in-depth-modules/) — in effect, this can be used to serve fallback scripts to older browsers that do not support modular JavaScript code." + }, + { + "name": "referrerpolicy", + "description": "Indicates which [referrer](https://developer.mozilla.org/en-US/docs/Web/API/Document/referrer) to send when fetching the script, or resources fetched by the script:\n\n* `no-referrer`: The [`Referer`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referer \"The Referer request header contains the address of the previous web page from which a link to the currently requested page was followed. The Referer header allows servers to identify where people are visiting them from and may use that data for analytics, logging, or optimized caching, for example.\") header will not be sent.\n* `no-referrer-when-downgrade` (default): The [`Referer`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referer \"The Referer request header contains the address of the previous web page from which a link to the currently requested page was followed. The Referer header allows servers to identify where people are visiting them from and may use that data for analytics, logging, or optimized caching, for example.\") header will not be sent to [origin](https://developer.mozilla.org/en-US/docs/Glossary/origin \"origin: Web content's origin is defined by the scheme (protocol), host (domain), and port of the URL used to access it. Two objects have the same origin only when the scheme, host, and port all match.\")s without [TLS](https://developer.mozilla.org/en-US/docs/Glossary/TLS \"TLS: Transport Layer Security (TLS), previously known as Secure Sockets Layer (SSL), is a protocol used by applications to communicate securely across a network, preventing tampering with and eavesdropping on email, web browsing, messaging, and other protocols.\") ([HTTPS](https://developer.mozilla.org/en-US/docs/Glossary/HTTPS \"HTTPS: HTTPS (HTTP Secure) is an encrypted version of the HTTP protocol. It usually uses SSL or TLS to encrypt all communication between a client and a server. This secure connection allows clients to safely exchange sensitive data with a server, for example for banking activities or online shopping.\")).\n* `origin`: The sent referrer will be limited to the origin of the referring page: its [scheme](https://developer.mozilla.org/en-US/docs/Archive/Mozilla/URIScheme), [host](https://developer.mozilla.org/en-US/docs/Glossary/host \"host: A host is a device connected to the Internet (or a local network). Some hosts called servers offer additional services like serving webpages or storing files and emails.\"), and [port](https://developer.mozilla.org/en-US/docs/Glossary/port \"port: For a computer connected to a network with an IP address, a port is a communication endpoint. Ports are designated by numbers, and below 1024 each port is associated by default with a specific protocol.\").\n* `origin-when-cross-origin`: The referrer sent to other origins will be limited to the scheme, the host, and the port. Navigations on the same origin will still include the path.\n* `same-origin`: A referrer will be sent for [same origin](https://developer.mozilla.org/en-US/docs/Glossary/Same-origin_policy \"same origin: The same-origin policy is a critical security mechanism that restricts how a document or script loaded from one origin can interact with a resource from another origin.\"), but cross-origin requests will contain no referrer information.\n* `strict-origin`: Only send the origin of the document as the referrer when the protocol security level stays the same (e.g. HTTPS→HTTPS), but don't send it to a less secure destination (e.g. HTTPS→HTTP).\n* `strict-origin-when-cross-origin`: Send a full URL when performing a same-origin request, but only send the origin when the protocol security level stays the same (e.g.HTTPS→HTTPS), and send no header to a less secure destination (e.g. HTTPS→HTTP).\n* `unsafe-url`: The referrer will include the origin _and_ the path (but not the [fragment](https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils/hash), [password](https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils/password), or [username](https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils/username)). **This value is unsafe**, because it leaks origins and paths from TLS-protected resources to insecure origins.\n\n**Note**: An empty string value (`\"\"`) is both the default value, and a fallback value if `referrerpolicy` is not supported. If `referrerpolicy` is not explicitly specified on the `<script>` element, it will adopt a higher-level referrer policy, i.e. one set on the whole document or domain. If a higher-level policy is not available, the empty string is treated as being equivalent to `no-referrer-when-downgrade`." + }, + { + "name": "text", + "description": "Like the `textContent` attribute, this attribute sets the text content of the element. Unlike the `textContent` attribute, however, this attribute is evaluated as executable code after the node is inserted into the DOM." + } + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/script" + } + ] + }, + { + "name": "noscript", + "description": { + "kind": "markdown", + "value": "The noscript element represents nothing if scripting is enabled, and represents its children if scripting is disabled. It is used to present different markup to user agents that support scripting and those that don't support scripting, by affecting how the document is parsed." + }, + "attributes": [], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/noscript" + } + ] + }, + { + "name": "template", + "description": { + "kind": "markdown", + "value": "The template element is used to declare fragments of HTML that can be cloned and inserted in the document by script." + }, + "attributes": [], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/template" + } + ] + }, + { + "name": "canvas", + "description": { + "kind": "markdown", + "value": "The canvas element provides scripts with a resolution-dependent bitmap canvas, which can be used for rendering graphs, game graphics, art, or other visual images on the fly." + }, + "attributes": [ + { + "name": "width", + "description": { + "kind": "markdown", + "value": "The width of the coordinate space in CSS pixels. Defaults to 300." + } + }, + { + "name": "height", + "description": { + "kind": "markdown", + "value": "The height of the coordinate space in CSS pixels. Defaults to 150." + } + }, + { + "name": "moz-opaque", + "description": "Lets the canvas know whether or not translucency will be a factor. If the canvas knows there's no translucency, painting performance can be optimized. This is only supported by Mozilla-based browsers; use the standardized [`canvas.getContext('2d', { alpha: false })`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/getContext \"The HTMLCanvasElement.getContext() method returns a drawing context on the canvas, or null if the context identifier is not supported.\") instead." + } + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/canvas" + } + ] + }, + { + "name": "slot", + "description": { + "kind": "markdown", + "value": "The slot element is a placeholder inside a web component that you can fill with your own markup, which lets you create separate DOM trees and present them together." + }, + "attributes": [ + { + "name": "name", + "description": { + "kind": "markdown", + "value": "The slot's name.\nA **named slot** is a `<slot>` element with a `name` attribute." + } + } + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/slot" + } + ] + }, + { + "name": "data", + "description": { + "kind": "markdown", + "value": "The data element links a given piece of content with a machine-readable translation." + }, + "attributes": [ + { + "name": "value", + "description": { + "kind": "markdown", + "value": "This attribute specifies the machine-readable translation of the content of the element." + } + } + ], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/data" + } + ] + }, + { + "name": "hgroup", + "description": { + "kind": "markdown", + "value": "The hgroup element represents a heading and related content. It groups a single h1–h6 element with one or more p." + }, + "attributes": [], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/hgroup" + } + ] + }, + { + "name": "menu", + "description": { + "kind": "markdown", + "value": "The menu element represents an unordered list of interactive items." + }, + "attributes": [], + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Element/menu" + } + ] + } + ], + "globalAttributes": [ + { + "name": "accesskey", + "description": { + "kind": "markdown", + "value": "Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout." + }, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Global_attributes/accesskey" + } + ] + }, + { + "name": "autocapitalize", + "description": { + "kind": "markdown", + "value": "Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:\n\n* `off` or `none`, no autocapitalization is applied (all letters default to lowercase)\n* `on` or `sentences`, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase\n* `words`, the first letter of each word defaults to a capital letter; all other letters default to lowercase\n* `characters`, all letters should default to uppercase" + }, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Global_attributes/autocapitalize" + } + ] + }, + { + "name": "class", + "description": { + "kind": "markdown", + "value": "A space-separated list of the classes of the element. Classes allows CSS and JavaScript to select and access specific elements via the [class selectors](https://developer.mozilla.org/docs/Web/CSS/Class_selectors) or functions like the method [`Document.getElementsByClassName()`](https://developer.mozilla.org/docs/Web/API/Document/getElementsByClassName \"returns an array-like object of all child elements which have all of the given class names.\")." + }, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Global_attributes/class" + } + ] + }, + { + "name": "contenteditable", + "description": { + "kind": "markdown", + "value": "An enumerated attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:\n\n* `true` or the _empty string_, which indicates that the element must be editable;\n* `false`, which indicates that the element must not be editable." + }, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Global_attributes/contenteditable" + } + ] + }, + { + "name": "contextmenu", + "description": { + "kind": "markdown", + "value": "The `[**id**](#attr-id)` of a [`<menu>`](https://developer.mozilla.org/docs/Web/HTML/Element/menu \"The HTML <menu> element represents a group of commands that a user can perform or activate. This includes both list menus, which might appear across the top of a screen, as well as context menus, such as those that might appear underneath a button after it has been clicked.\") to use as the contextual menu for this element." + }, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Global_attributes/contextmenu" + } + ] + }, + { + "name": "dir", + "description": { + "kind": "markdown", + "value": "An enumerated attribute indicating the directionality of the element's text. It can have the following values:\n\n* `ltr`, which means _left to right_ and is to be used for languages that are written from the left to the right (like English);\n* `rtl`, which means _right to left_ and is to be used for languages that are written from the right to the left (like Arabic);\n* `auto`, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element." + }, + "valueSet": "d", + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Global_attributes/dir" + } + ] + }, + { + "name": "draggable", + "description": { + "kind": "markdown", + "value": "An enumerated attribute indicating whether the element can be dragged, using the [Drag and Drop API](https://developer.mozilla.org/docs/DragDrop/Drag_and_Drop). It can have the following values:\n\n* `true`, which indicates that the element may be dragged\n* `false`, which indicates that the element may not be dragged." + }, + "valueSet": "b", + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Global_attributes/draggable" + } + ] + }, + { + "name": "dropzone", + "description": { + "kind": "markdown", + "value": "An enumerated attribute indicating what types of content can be dropped on an element, using the [Drag and Drop API](https://developer.mozilla.org/docs/DragDrop/Drag_and_Drop). It can have the following values:\n\n* `copy`, which indicates that dropping will create a copy of the element that was dragged\n* `move`, which indicates that the element that was dragged will be moved to this new location.\n* `link`, will create a link to the dragged data." + } + }, + { + "name": "exportparts", + "description": { + "kind": "markdown", + "value": "Used to transitively export shadow parts from a nested shadow tree into a containing light tree." + }, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Global_attributes/exportparts" + } + ] + }, + { + "name": "hidden", + "description": { + "kind": "markdown", + "value": "A Boolean attribute indicates that the element is not yet, or is no longer, _relevant_. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown." + }, + "valueSet": "v", + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Global_attributes/hidden" + } + ] + }, + { + "name": "id", + "description": { + "kind": "markdown", + "value": "Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS)." + }, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Global_attributes/id" + } + ] + }, + { + "name": "inputmode", + "description": { + "kind": "markdown", + "value": "Provides a hint to browsers as to the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on [`<input>`](https://developer.mozilla.org/docs/Web/HTML/Element/input \"The HTML <input> element is used to create interactive controls for web-based forms in order to accept data from the user; a wide variety of types of input data and control widgets are available, depending on the device and user agent.\") elements, but is usable on any element while in `[contenteditable](https://developer.mozilla.org/docs/Web/HTML/Global_attributes#attr-contenteditable)` mode." + }, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Global_attributes/inputmode" + } + ] + }, + { + "name": "is", + "description": { + "kind": "markdown", + "value": "Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see [Using custom elements](https://developer.mozilla.org/docs/Web/Web_Components/Using_custom_elements) for more details)." + }, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Global_attributes/is" + } + ] + }, + { + "name": "itemid", + "description": { + "kind": "markdown", + "value": "The unique, global identifier of an item." + }, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Global_attributes/itemid" + } + ] + }, + { + "name": "itemprop", + "description": { + "kind": "markdown", + "value": "Used to add properties to an item. Every HTML element may have an `itemprop` attribute specified, where an `itemprop` consists of a name and value pair." + }, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Global_attributes/itemprop" + } + ] + }, + { + "name": "itemref", + "description": { + "kind": "markdown", + "value": "Properties that are not descendants of an element with the `itemscope` attribute can be associated with the item using an `itemref`. It provides a list of element ids (not `itemid`s) with additional properties elsewhere in the document." + }, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Global_attributes/itemref" + } + ] + }, + { + "name": "itemscope", + "description": { + "kind": "markdown", + "value": "`itemscope` (usually) works along with `[itemtype](https://developer.mozilla.org/docs/Web/HTML/Global_attributes#attr-itemtype)` to specify that the HTML contained in a block is about a particular item. `itemscope` creates the Item and defines the scope of the `itemtype` associated with it. `itemtype` is a valid URL of a vocabulary (such as [schema.org](https://schema.org/)) that describes the item and its properties context." + }, + "valueSet": "v", + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Global_attributes/itemscope" + } + ] + }, + { + "name": "itemtype", + "description": { + "kind": "markdown", + "value": "Specifies the URL of the vocabulary that will be used to define `itemprop`s (item properties) in the data structure. `[itemscope](https://developer.mozilla.org/docs/Web/HTML/Global_attributes#attr-itemscope)` is used to set the scope of where in the data structure the vocabulary set by `itemtype` will be active." + }, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Global_attributes/itemtype" + } + ] + }, + { + "name": "lang", + "description": { + "kind": "markdown", + "value": "Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one “language tag” (made of hyphen-separated “language subtags”) in the format defined in [_Tags for Identifying Languages (BCP47)_](https://www.ietf.org/rfc/bcp/bcp47.txt). [**xml:lang**](#attr-xml:lang) has priority over it." + }, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Global_attributes/lang" + } + ] + }, + { + "name": "part", + "description": { + "kind": "markdown", + "value": "A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the [`::part`](https://developer.mozilla.org/docs/Web/CSS/::part \"The ::part CSS pseudo-element represents any element within a shadow tree that has a matching part attribute.\") pseudo-element." + }, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Global_attributes/part" + } + ] + }, + { + "name": "role", + "valueSet": "roles" + }, + { + "name": "slot", + "description": { + "kind": "markdown", + "value": "Assigns a slot in a [shadow DOM](https://developer.mozilla.org/docs/Web/Web_Components/Shadow_DOM) shadow tree to an element: An element with a `slot` attribute is assigned to the slot created by the [`<slot>`](https://developer.mozilla.org/docs/Web/HTML/Element/slot \"The HTML <slot> element—part of the Web Components technology suite—is a placeholder inside a web component that you can fill with your own markup, which lets you create separate DOM trees and present them together.\") element whose `[name](https://developer.mozilla.org/docs/Web/HTML/Element/slot#attr-name)` attribute's value matches that `slot` attribute's value." + }, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Global_attributes/slot" + } + ] + }, + { + "name": "spellcheck", + "description": { + "kind": "markdown", + "value": "An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:\n\n* `true`, which indicates that the element should be, if possible, checked for spelling errors;\n* `false`, which indicates that the element should not be checked for spelling errors." + }, + "valueSet": "b", + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Global_attributes/spellcheck" + } + ] + }, + { + "name": "style", + "description": { + "kind": "markdown", + "value": "Contains [CSS](https://developer.mozilla.org/docs/Web/CSS) styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the [`<style>`](https://developer.mozilla.org/docs/Web/HTML/Element/style \"The HTML <style> element contains style information for a document, or part of a document.\") element have mainly the purpose of allowing for quick styling, for example for testing purposes." + }, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Global_attributes/style" + } + ] + }, + { + "name": "tabindex", + "description": { + "kind": "markdown", + "value": "An integer attribute indicating if the element can take input focus (is _focusable_), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:\n\n* a _negative value_ means that the element should be focusable, but should not be reachable via sequential keyboard navigation;\n* `0` means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;\n* a _positive value_ means that the element should be focusable and reachable via sequential keyboard navigation; the order in which the elements are focused is the increasing value of the [**tabindex**](#attr-tabindex). If several elements share the same tabindex, their relative order follows their relative positions in the document." + }, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Global_attributes/tabindex" + } + ] + }, + { + "name": "title", + "description": { + "kind": "markdown", + "value": "Contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip." + }, + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Global_attributes/title" + } + ] + }, + { + "name": "translate", + "description": { + "kind": "markdown", + "value": "An enumerated attribute that is used to specify whether an element's attribute values and the values of its [`Text`](https://developer.mozilla.org/docs/Web/API/Text \"The Text interface represents the textual content of Element or Attr. If an element has no markup within its content, it has a single child implementing Text that contains the element's text. However, if the element contains markup, it is parsed into information items and Text nodes that form its children.\") node children are to be translated when the page is localized, or whether to leave them unchanged. It can have the following values:\n\n* empty string and `yes`, which indicates that the element will be translated.\n* `no`, which indicates that the element will not be translated." + }, + "valueSet": "y", + "references": [ + { + "name": "MDN Reference", + "url": "https://developer.mozilla.org/docs/Web/HTML/Global_attributes/translate" + } + ] + }, + { + "name": "onabort", + "description": { + "kind": "markdown", + "value": "The loading of a resource has been aborted." + } + }, + { + "name": "onblur", + "description": { + "kind": "markdown", + "value": "An element has lost focus (does not bubble)." + } + }, + { + "name": "oncanplay", + "description": { + "kind": "markdown", + "value": "The user agent can play the media, but estimates that not enough data has been loaded to play the media up to its end without having to stop for further buffering of content." + } + }, + { + "name": "oncanplaythrough", + "description": { + "kind": "markdown", + "value": "The user agent can play the media up to its end without having to stop for further buffering of content." + } + }, + { + "name": "onchange", + "description": { + "kind": "markdown", + "value": "The change event is fired for <input>, <select>, and <textarea> elements when a change to the element's value is committed by the user." + } + }, + { + "name": "onclick", + "description": { + "kind": "markdown", + "value": "A pointing device button has been pressed and released on an element." + } + }, + { + "name": "oncontextmenu", + "description": { + "kind": "markdown", + "value": "The right button of the mouse is clicked (before the context menu is displayed)." + } + }, + { + "name": "ondblclick", + "description": { + "kind": "markdown", + "value": "A pointing device button is clicked twice on an element." + } + }, + { + "name": "ondrag", + "description": { + "kind": "markdown", + "value": "An element or text selection is being dragged (every 350ms)." + } + }, + { + "name": "ondragend", + "description": { + "kind": "markdown", + "value": "A drag operation is being ended (by releasing a mouse button or hitting the escape key)." + } + }, + { + "name": "ondragenter", + "description": { + "kind": "markdown", + "value": "A dragged element or text selection enters a valid drop target." + } + }, + { + "name": "ondragleave", + "description": { + "kind": "markdown", + "value": "A dragged element or text selection leaves a valid drop target." + } + }, + { + "name": "ondragover", + "description": { + "kind": "markdown", + "value": "An element or text selection is being dragged over a valid drop target (every 350ms)." + } + }, + { + "name": "ondragstart", + "description": { + "kind": "markdown", + "value": "The user starts dragging an element or text selection." + } + }, + { + "name": "ondrop", + "description": { + "kind": "markdown", + "value": "An element is dropped on a valid drop target." + } + }, + { + "name": "ondurationchange", + "description": { + "kind": "markdown", + "value": "The duration attribute has been updated." + } + }, + { + "name": "onemptied", + "description": { + "kind": "markdown", + "value": "The media has become empty; for example, this event is sent if the media has already been loaded (or partially loaded), and the load() method is called to reload it." + } + }, + { + "name": "onended", + "description": { + "kind": "markdown", + "value": "Playback has stopped because the end of the media was reached." + } + }, + { + "name": "onerror", + "description": { + "kind": "markdown", + "value": "A resource failed to load." + } + }, + { + "name": "onfocus", + "description": { + "kind": "markdown", + "value": "An element has received focus (does not bubble)." + } + }, + { + "name": "onformchange" + }, + { + "name": "onforminput" + }, + { + "name": "oninput", + "description": { + "kind": "markdown", + "value": "The value of an element changes or the content of an element with the attribute contenteditable is modified." + } + }, + { + "name": "oninvalid", + "description": { + "kind": "markdown", + "value": "A submittable element has been checked and doesn't satisfy its constraints." + } + }, + { + "name": "onkeydown", + "description": { + "kind": "markdown", + "value": "A key is pressed down." + } + }, + { + "name": "onkeypress", + "description": { + "kind": "markdown", + "value": "A key is pressed down and that key normally produces a character value (use input instead)." + } + }, + { + "name": "onkeyup", + "description": { + "kind": "markdown", + "value": "A key is released." + } + }, + { + "name": "onload", + "description": { + "kind": "markdown", + "value": "A resource and its dependent resources have finished loading." + } + }, + { + "name": "onloadeddata", + "description": { + "kind": "markdown", + "value": "The first frame of the media has finished loading." + } + }, + { + "name": "onloadedmetadata", + "description": { + "kind": "markdown", + "value": "The metadata has been loaded." + } + }, + { + "name": "onloadstart", + "description": { + "kind": "markdown", + "value": "Progress has begun." + } + }, + { + "name": "onmousedown", + "description": { + "kind": "markdown", + "value": "A pointing device button (usually a mouse) is pressed on an element." + } + }, + { + "name": "onmousemove", + "description": { + "kind": "markdown", + "value": "A pointing device is moved over an element." + } + }, + { + "name": "onmouseout", + "description": { + "kind": "markdown", + "value": "A pointing device is moved off the element that has the listener attached or off one of its children." + } + }, + { + "name": "onmouseover", + "description": { + "kind": "markdown", + "value": "A pointing device is moved onto the element that has the listener attached or onto one of its children." + } + }, + { + "name": "onmouseup", + "description": { + "kind": "markdown", + "value": "A pointing device button is released over an element." + } + }, + { + "name": "onmousewheel" + }, + { + "name": "onmouseenter", + "description": { + "kind": "markdown", + "value": "A pointing device is moved onto the element that has the listener attached." + } + }, + { + "name": "onmouseleave", + "description": { + "kind": "markdown", + "value": "A pointing device is moved off the element that has the listener attached." + } + }, + { + "name": "onpause", + "description": { + "kind": "markdown", + "value": "Playback has been paused." + } + }, + { + "name": "onplay", + "description": { + "kind": "markdown", + "value": "Playback has begun." + } + }, + { + "name": "onplaying", + "description": { + "kind": "markdown", + "value": "Playback is ready to start after having been paused or delayed due to lack of data." + } + }, + { + "name": "onprogress", + "description": { + "kind": "markdown", + "value": "In progress." + } + }, + { + "name": "onratechange", + "description": { + "kind": "markdown", + "value": "The playback rate has changed." + } + }, + { + "name": "onreset", + "description": { + "kind": "markdown", + "value": "A form is reset." + } + }, + { + "name": "onresize", + "description": { + "kind": "markdown", + "value": "The document view has been resized." + } + }, + { + "name": "onreadystatechange", + "description": { + "kind": "markdown", + "value": "The readyState attribute of a document has changed." + } + }, + { + "name": "onscroll", + "description": { + "kind": "markdown", + "value": "The document view or an element has been scrolled." + } + }, + { + "name": "onseeked", + "description": { + "kind": "markdown", + "value": "A seek operation completed." + } + }, + { + "name": "onseeking", + "description": { + "kind": "markdown", + "value": "A seek operation began." + } + }, + { + "name": "onselect", + "description": { + "kind": "markdown", + "value": "Some text is being selected." + } + }, + { + "name": "onshow", + "description": { + "kind": "markdown", + "value": "A contextmenu event was fired on/bubbled to an element that has a contextmenu attribute" + } + }, + { + "name": "onstalled", + "description": { + "kind": "markdown", + "value": "The user agent is trying to fetch media data, but data is unexpectedly not forthcoming." + } + }, + { + "name": "onsubmit", + "description": { + "kind": "markdown", + "value": "A form is submitted." + } + }, + { + "name": "onsuspend", + "description": { + "kind": "markdown", + "value": "Media data loading has been suspended." + } + }, + { + "name": "ontimeupdate", + "description": { + "kind": "markdown", + "value": "The time indicated by the currentTime attribute has been updated." + } + }, + { + "name": "onvolumechange", + "description": { + "kind": "markdown", + "value": "The volume has changed." + } + }, + { + "name": "onwaiting", + "description": { + "kind": "markdown", + "value": "Playback has stopped because of a temporary lack of data." + } + }, + { + "name": "onpointercancel", + "description": { + "kind": "markdown", + "value": "The pointer is unlikely to produce any more events." + } + }, + { + "name": "onpointerdown", + "description": { + "kind": "markdown", + "value": "The pointer enters the active buttons state." + } + }, + { + "name": "onpointerenter", + "description": { + "kind": "markdown", + "value": "Pointing device is moved inside the hit-testing boundary." + } + }, + { + "name": "onpointerleave", + "description": { + "kind": "markdown", + "value": "Pointing device is moved out of the hit-testing boundary." + } + }, + { + "name": "onpointerlockchange", + "description": { + "kind": "markdown", + "value": "The pointer was locked or released." + } + }, + { + "name": "onpointerlockerror", + "description": { + "kind": "markdown", + "value": "It was impossible to lock the pointer for technical reasons or because the permission was denied." + } + }, + { + "name": "onpointermove", + "description": { + "kind": "markdown", + "value": "The pointer changed coordinates." + } + }, + { + "name": "onpointerout", + "description": { + "kind": "markdown", + "value": "The pointing device moved out of hit-testing boundary or leaves detectable hover range." + } + }, + { + "name": "onpointerover", + "description": { + "kind": "markdown", + "value": "The pointing device is moved into the hit-testing boundary." + } + }, + { + "name": "onpointerup", + "description": { + "kind": "markdown", + "value": "The pointer leaves the active buttons state." + } + }, + { + "name": "aria-activedescendant", + "references": [ + { + "name": "WAI-ARIA Reference", + "url": "https://www.w3.org/TR/wai-aria-1.1/#aria-activedescendant" + } + ], + "description": { + "kind": "markdown", + "value": "Identifies the currently active element when DOM focus is on a [`composite`](https://www.w3.org/TR/wai-aria-1.1/#composite) widget, [`textbox`](https://www.w3.org/TR/wai-aria-1.1/#textbox), [`group`](https://www.w3.org/TR/wai-aria-1.1/#group), or [`application`](https://www.w3.org/TR/wai-aria-1.1/#application)." + } + }, + { + "name": "aria-atomic", + "valueSet": "b", + "references": [ + { + "name": "WAI-ARIA Reference", + "url": "https://www.w3.org/TR/wai-aria-1.1/#aria-atomic" + } + ], + "description": { + "kind": "markdown", + "value": "Indicates whether [assistive technologies](https://www.w3.org/TR/wai-aria-1.1/#dfn-assistive-technology) will present all, or only parts of, the changed region based on the change notifications defined by the [`aria-relevant`](https://www.w3.org/TR/wai-aria-1.1/#aria-relevant) attribute." + } + }, + { + "name": "aria-autocomplete", + "valueSet": "autocomplete", + "references": [ + { + "name": "WAI-ARIA Reference", + "url": "https://www.w3.org/TR/wai-aria-1.1/#aria-autocomplete" + } + ], + "description": { + "kind": "markdown", + "value": "Indicates whether inputting text could trigger display of one or more predictions of the user's intended value for an input and specifies how predictions would be presented if they are made." + } + }, + { + "name": "aria-busy", + "valueSet": "b", + "references": [ + { + "name": "WAI-ARIA Reference", + "url": "https://www.w3.org/TR/wai-aria-1.1/#aria-busy" + } + ], + "description": { + "kind": "markdown", + "value": "Indicates an element is being modified and that assistive technologies _MAY_ want to wait until the modifications are complete before exposing them to the user." + } + }, + { + "name": "aria-checked", + "valueSet": "tristate", + "references": [ + { + "name": "WAI-ARIA Reference", + "url": "https://www.w3.org/TR/wai-aria-1.1/#aria-checked" + } + ], + "description": { + "kind": "markdown", + "value": "Indicates the current \"checked\" [state](https://www.w3.org/TR/wai-aria-1.1/#dfn-state) of checkboxes, radio buttons, and other [widgets](https://www.w3.org/TR/wai-aria-1.1/#dfn-widget). See related [`aria-pressed`](https://www.w3.org/TR/wai-aria-1.1/#aria-pressed) and [`aria-selected`](https://www.w3.org/TR/wai-aria-1.1/#aria-selected)." + } + }, + { + "name": "aria-colcount", + "references": [ + { + "name": "WAI-ARIA Reference", + "url": "https://www.w3.org/TR/wai-aria-1.1/#aria-colcount" + } + ], + "description": { + "kind": "markdown", + "value": "Defines the total number of columns in a [`table`](https://www.w3.org/TR/wai-aria-1.1/#table), [`grid`](https://www.w3.org/TR/wai-aria-1.1/#grid), or [`treegrid`](https://www.w3.org/TR/wai-aria-1.1/#treegrid). See related [`aria-colindex`](https://www.w3.org/TR/wai-aria-1.1/#aria-colindex)." + } + }, + { + "name": "aria-colindex", + "references": [ + { + "name": "WAI-ARIA Reference", + "url": "https://www.w3.org/TR/wai-aria-1.1/#aria-colindex" + } + ], + "description": { + "kind": "markdown", + "value": "Defines an [element's](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) column index or position with respect to the total number of columns within a [`table`](https://www.w3.org/TR/wai-aria-1.1/#table), [`grid`](https://www.w3.org/TR/wai-aria-1.1/#grid), or [`treegrid`](https://www.w3.org/TR/wai-aria-1.1/#treegrid). See related [`aria-colcount`](https://www.w3.org/TR/wai-aria-1.1/#aria-colcount) and [`aria-colspan`](https://www.w3.org/TR/wai-aria-1.1/#aria-colspan)." + } + }, + { + "name": "aria-colspan", + "references": [ + { + "name": "WAI-ARIA Reference", + "url": "https://www.w3.org/TR/wai-aria-1.1/#aria-colspan" + } + ], + "description": { + "kind": "markdown", + "value": "Defines the number of columns spanned by a cell or gridcell within a [`table`](https://www.w3.org/TR/wai-aria-1.1/#table), [`grid`](https://www.w3.org/TR/wai-aria-1.1/#grid), or [`treegrid`](https://www.w3.org/TR/wai-aria-1.1/#treegrid). See related [`aria-colindex`](https://www.w3.org/TR/wai-aria-1.1/#aria-colindex) and [`aria-rowspan`](https://www.w3.org/TR/wai-aria-1.1/#aria-rowspan)." + } + }, + { + "name": "aria-controls", + "references": [ + { + "name": "WAI-ARIA Reference", + "url": "https://www.w3.org/TR/wai-aria-1.1/#aria-controls" + } + ], + "description": { + "kind": "markdown", + "value": "Identifies the [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) (or elements) whose contents or presence are controlled by the current element. See related [`aria-owns`](https://www.w3.org/TR/wai-aria-1.1/#aria-owns)." + } + }, + { + "name": "aria-current", + "valueSet": "current", + "references": [ + { + "name": "WAI-ARIA Reference", + "url": "https://www.w3.org/TR/wai-aria-1.1/#aria-current" + } + ], + "description": { + "kind": "markdown", + "value": "Indicates the [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) that represents the current item within a container or set of related elements." + } + }, + { + "name": "aria-describedby", + "references": [ + { + "name": "WAI-ARIA Reference", + "url": "https://www.w3.org/TR/wai-aria-1.1/#aria-describedby" + } + ], + "description": { + "kind": "markdown", + "value": "Identifies the [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) (or elements) that describes the [object](https://www.w3.org/TR/wai-aria-1.1/#dfn-object). See related [`aria-labelledby`](https://www.w3.org/TR/wai-aria-1.1/#aria-labelledby)." + } + }, + { + "name": "aria-disabled", + "valueSet": "b", + "references": [ + { + "name": "WAI-ARIA Reference", + "url": "https://www.w3.org/TR/wai-aria-1.1/#aria-disabled" + } + ], + "description": { + "kind": "markdown", + "value": "Indicates that the [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) is [perceivable](https://www.w3.org/TR/wai-aria-1.1/#dfn-perceivable) but disabled, so it is not editable or otherwise [operable](https://www.w3.org/TR/wai-aria-1.1/#dfn-operable). See related [`aria-hidden`](https://www.w3.org/TR/wai-aria-1.1/#aria-hidden) and [`aria-readonly`](https://www.w3.org/TR/wai-aria-1.1/#aria-readonly)." + } + }, + { + "name": "aria-dropeffect", + "valueSet": "dropeffect", + "references": [ + { + "name": "WAI-ARIA Reference", + "url": "https://www.w3.org/TR/wai-aria-1.1/#aria-dropeffect" + } + ], + "description": { + "kind": "markdown", + "value": "\\[Deprecated in ARIA 1.1\\] Indicates what functions can be performed when a dragged object is released on the drop target." + } + }, + { + "name": "aria-errormessage", + "references": [ + { + "name": "WAI-ARIA Reference", + "url": "https://www.w3.org/TR/wai-aria-1.1/#aria-errormessage" + } + ], + "description": { + "kind": "markdown", + "value": "Identifies the [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) that provides an error message for the [object](https://www.w3.org/TR/wai-aria-1.1/#dfn-object). See related [`aria-invalid`](https://www.w3.org/TR/wai-aria-1.1/#aria-invalid) and [`aria-describedby`](https://www.w3.org/TR/wai-aria-1.1/#aria-describedby)." + } + }, + { + "name": "aria-expanded", + "valueSet": "u", + "references": [ + { + "name": "WAI-ARIA Reference", + "url": "https://www.w3.org/TR/wai-aria-1.1/#aria-expanded" + } + ], + "description": { + "kind": "markdown", + "value": "Indicates whether the element, or another grouping element it controls, is currently expanded or collapsed." + } + }, + { + "name": "aria-flowto", + "references": [ + { + "name": "WAI-ARIA Reference", + "url": "https://www.w3.org/TR/wai-aria-1.1/#aria-flowto" + } + ], + "description": { + "kind": "markdown", + "value": "Identifies the next [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) (or elements) in an alternate reading order of content which, at the user's discretion, allows assistive technology to override the general default of reading in document source order." + } + }, + { + "name": "aria-grabbed", + "valueSet": "u", + "references": [ + { + "name": "WAI-ARIA Reference", + "url": "https://www.w3.org/TR/wai-aria-1.1/#aria-grabbed" + } + ], + "description": { + "kind": "markdown", + "value": "\\[Deprecated in ARIA 1.1\\] Indicates an element's \"grabbed\" [state](https://www.w3.org/TR/wai-aria-1.1/#dfn-state) in a drag-and-drop operation." + } + }, + { + "name": "aria-haspopup", + "valueSet": "haspopup", + "references": [ + { + "name": "WAI-ARIA Reference", + "url": "https://www.w3.org/TR/wai-aria-1.1/#aria-haspopup" + } + ], + "description": { + "kind": "markdown", + "value": "Indicates the availability and type of interactive popup element, such as menu or dialog, that can be triggered by an [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element)." + } + }, + { + "name": "aria-hidden", + "valueSet": "b", + "references": [ + { + "name": "WAI-ARIA Reference", + "url": "https://www.w3.org/TR/wai-aria-1.1/#aria-hidden" + } + ], + "description": { + "kind": "markdown", + "value": "Indicates whether the [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) is exposed to an accessibility API. See related [`aria-disabled`](https://www.w3.org/TR/wai-aria-1.1/#aria-disabled)." + } + }, + { + "name": "aria-invalid", + "valueSet": "invalid", + "references": [ + { + "name": "WAI-ARIA Reference", + "url": "https://www.w3.org/TR/wai-aria-1.1/#aria-invalid" + } + ], + "description": { + "kind": "markdown", + "value": "Indicates the entered value does not conform to the format expected by the application. See related [`aria-errormessage`](https://www.w3.org/TR/wai-aria-1.1/#aria-errormessage)." + } + }, + { + "name": "aria-label", + "references": [ + { + "name": "WAI-ARIA Reference", + "url": "https://www.w3.org/TR/wai-aria-1.1/#aria-label" + } + ], + "description": { + "kind": "markdown", + "value": "Defines a string value that labels the current element. See related [`aria-labelledby`](https://www.w3.org/TR/wai-aria-1.1/#aria-labelledby)." + } + }, + { + "name": "aria-labelledby", + "references": [ + { + "name": "WAI-ARIA Reference", + "url": "https://www.w3.org/TR/wai-aria-1.1/#aria-labelledby" + } + ], + "description": { + "kind": "markdown", + "value": "Identifies the [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) (or elements) that labels the current element. See related [`aria-describedby`](https://www.w3.org/TR/wai-aria-1.1/#aria-describedby)." + } + }, + { + "name": "aria-level", + "references": [ + { + "name": "WAI-ARIA Reference", + "url": "https://www.w3.org/TR/wai-aria-1.1/#aria-level" + } + ], + "description": { + "kind": "markdown", + "value": "Defines the hierarchical level of an [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) within a structure." + } + }, + { + "name": "aria-live", + "valueSet": "live", + "references": [ + { + "name": "WAI-ARIA Reference", + "url": "https://www.w3.org/TR/wai-aria-1.1/#aria-live" + } + ], + "description": { + "kind": "markdown", + "value": "Indicates that an [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) will be updated, and describes the types of updates the [user agents](https://www.w3.org/TR/wai-aria-1.1/#dfn-user-agent), [assistive technologies](https://www.w3.org/TR/wai-aria-1.1/#dfn-assistive-technology), and user can expect from the [live region](https://www.w3.org/TR/wai-aria-1.1/#dfn-live-region)." + } + }, + { + "name": "aria-modal", + "valueSet": "b", + "references": [ + { + "name": "WAI-ARIA Reference", + "url": "https://www.w3.org/TR/wai-aria-1.1/#aria-modal" + } + ], + "description": { + "kind": "markdown", + "value": "Indicates whether an [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) is modal when displayed." + } + }, + { + "name": "aria-multiline", + "valueSet": "b", + "references": [ + { + "name": "WAI-ARIA Reference", + "url": "https://www.w3.org/TR/wai-aria-1.1/#aria-multiline" + } + ], + "description": { + "kind": "markdown", + "value": "Indicates whether a text box accepts multiple lines of input or only a single line." + } + }, + { + "name": "aria-multiselectable", + "valueSet": "b", + "references": [ + { + "name": "WAI-ARIA Reference", + "url": "https://www.w3.org/TR/wai-aria-1.1/#aria-multiselectable" + } + ], + "description": { + "kind": "markdown", + "value": "Indicates that the user may select more than one item from the current selectable descendants." + } + }, + { + "name": "aria-orientation", + "valueSet": "orientation", + "references": [ + { + "name": "WAI-ARIA Reference", + "url": "https://www.w3.org/TR/wai-aria-1.1/#aria-orientation" + } + ], + "description": { + "kind": "markdown", + "value": "Indicates whether the element's orientation is horizontal, vertical, or unknown/ambiguous." + } + }, + { + "name": "aria-owns", + "references": [ + { + "name": "WAI-ARIA Reference", + "url": "https://www.w3.org/TR/wai-aria-1.1/#aria-owns" + } + ], + "description": { + "kind": "markdown", + "value": "Identifies an [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) (or elements) in order to define a visual, functional, or contextual parent/child [relationship](https://www.w3.org/TR/wai-aria-1.1/#dfn-relationship) between DOM elements where the DOM hierarchy cannot be used to represent the relationship. See related [`aria-controls`](https://www.w3.org/TR/wai-aria-1.1/#aria-controls)." + } + }, + { + "name": "aria-placeholder", + "references": [ + { + "name": "WAI-ARIA Reference", + "url": "https://www.w3.org/TR/wai-aria-1.1/#aria-placeholder" + } + ], + "description": { + "kind": "markdown", + "value": "Defines a short hint (a word or short phrase) intended to aid the user with data entry when the control has no value. A hint could be a sample value or a brief description of the expected format." + } + }, + { + "name": "aria-posinset", + "references": [ + { + "name": "WAI-ARIA Reference", + "url": "https://www.w3.org/TR/wai-aria-1.1/#aria-posinset" + } + ], + "description": { + "kind": "markdown", + "value": "Defines an [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element)'s number or position in the current set of listitems or treeitems. Not required if all elements in the set are present in the DOM. See related [`aria-setsize`](https://www.w3.org/TR/wai-aria-1.1/#aria-setsize)." + } + }, + { + "name": "aria-pressed", + "valueSet": "tristate", + "references": [ + { + "name": "WAI-ARIA Reference", + "url": "https://www.w3.org/TR/wai-aria-1.1/#aria-pressed" + } + ], + "description": { + "kind": "markdown", + "value": "Indicates the current \"pressed\" [state](https://www.w3.org/TR/wai-aria-1.1/#dfn-state) of toggle buttons. See related [`aria-checked`](https://www.w3.org/TR/wai-aria-1.1/#aria-checked) and [`aria-selected`](https://www.w3.org/TR/wai-aria-1.1/#aria-selected)." + } + }, + { + "name": "aria-readonly", + "valueSet": "b", + "references": [ + { + "name": "WAI-ARIA Reference", + "url": "https://www.w3.org/TR/wai-aria-1.1/#aria-readonly" + } + ], + "description": { + "kind": "markdown", + "value": "Indicates that the [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) is not editable, but is otherwise [operable](https://www.w3.org/TR/wai-aria-1.1/#dfn-operable). See related [`aria-disabled`](https://www.w3.org/TR/wai-aria-1.1/#aria-disabled)." + } + }, + { + "name": "aria-relevant", + "valueSet": "relevant", + "references": [ + { + "name": "WAI-ARIA Reference", + "url": "https://www.w3.org/TR/wai-aria-1.1/#aria-relevant" + } + ], + "description": { + "kind": "markdown", + "value": "Indicates what notifications the user agent will trigger when the accessibility tree within a live region is modified. See related [`aria-atomic`](https://www.w3.org/TR/wai-aria-1.1/#aria-atomic)." + } + }, + { + "name": "aria-required", + "valueSet": "b", + "references": [ + { + "name": "WAI-ARIA Reference", + "url": "https://www.w3.org/TR/wai-aria-1.1/#aria-required" + } + ], + "description": { + "kind": "markdown", + "value": "Indicates that user input is required on the [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) before a form may be submitted." + } + }, + { + "name": "aria-roledescription", + "references": [ + { + "name": "WAI-ARIA Reference", + "url": "https://www.w3.org/TR/wai-aria-1.1/#aria-roledescription" + } + ], + "description": { + "kind": "markdown", + "value": "Defines a human-readable, author-localized description for the [role](https://www.w3.org/TR/wai-aria-1.1/#dfn-role) of an [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element)." + } + }, + { + "name": "aria-rowcount", + "references": [ + { + "name": "WAI-ARIA Reference", + "url": "https://www.w3.org/TR/wai-aria-1.1/#aria-rowcount" + } + ], + "description": { + "kind": "markdown", + "value": "Defines the total number of rows in a [`table`](https://www.w3.org/TR/wai-aria-1.1/#table), [`grid`](https://www.w3.org/TR/wai-aria-1.1/#grid), or [`treegrid`](https://www.w3.org/TR/wai-aria-1.1/#treegrid). See related [`aria-rowindex`](https://www.w3.org/TR/wai-aria-1.1/#aria-rowindex)." + } + }, + { + "name": "aria-rowindex", + "references": [ + { + "name": "WAI-ARIA Reference", + "url": "https://www.w3.org/TR/wai-aria-1.1/#aria-rowindex" + } + ], + "description": { + "kind": "markdown", + "value": "Defines an [element's](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) row index or position with respect to the total number of rows within a [`table`](https://www.w3.org/TR/wai-aria-1.1/#table), [`grid`](https://www.w3.org/TR/wai-aria-1.1/#grid), or [`treegrid`](https://www.w3.org/TR/wai-aria-1.1/#treegrid). See related [`aria-rowcount`](https://www.w3.org/TR/wai-aria-1.1/#aria-rowcount) and [`aria-rowspan`](https://www.w3.org/TR/wai-aria-1.1/#aria-rowspan)." + } + }, + { + "name": "aria-rowspan", + "references": [ + { + "name": "WAI-ARIA Reference", + "url": "https://www.w3.org/TR/wai-aria-1.1/#aria-rowspan" + } + ], + "description": { + "kind": "markdown", + "value": "Defines the number of rows spanned by a cell or gridcell within a [`table`](https://www.w3.org/TR/wai-aria-1.1/#table), [`grid`](https://www.w3.org/TR/wai-aria-1.1/#grid), or [`treegrid`](https://www.w3.org/TR/wai-aria-1.1/#treegrid). See related [`aria-rowindex`](https://www.w3.org/TR/wai-aria-1.1/#aria-rowindex) and [`aria-colspan`](https://www.w3.org/TR/wai-aria-1.1/#aria-colspan)." + } + }, + { + "name": "aria-selected", + "valueSet": "u", + "references": [ + { + "name": "WAI-ARIA Reference", + "url": "https://www.w3.org/TR/wai-aria-1.1/#aria-selected" + } + ], + "description": { + "kind": "markdown", + "value": "Indicates the current \"selected\" [state](https://www.w3.org/TR/wai-aria-1.1/#dfn-state) of various [widgets](https://www.w3.org/TR/wai-aria-1.1/#dfn-widget). See related [`aria-checked`](https://www.w3.org/TR/wai-aria-1.1/#aria-checked) and [`aria-pressed`](https://www.w3.org/TR/wai-aria-1.1/#aria-pressed)." + } + }, + { + "name": "aria-setsize", + "references": [ + { + "name": "WAI-ARIA Reference", + "url": "https://www.w3.org/TR/wai-aria-1.1/#aria-setsize" + } + ], + "description": { + "kind": "markdown", + "value": "Defines the number of items in the current set of listitems or treeitems. Not required if all elements in the set are present in the DOM. See related [`aria-posinset`](https://www.w3.org/TR/wai-aria-1.1/#aria-posinset)." + } + }, + { + "name": "aria-sort", + "valueSet": "sort", + "references": [ + { + "name": "WAI-ARIA Reference", + "url": "https://www.w3.org/TR/wai-aria-1.1/#aria-sort" + } + ], + "description": { + "kind": "markdown", + "value": "Indicates if items in a table or grid are sorted in ascending or descending order." + } + }, + { + "name": "aria-valuemax", + "references": [ + { + "name": "WAI-ARIA Reference", + "url": "https://www.w3.org/TR/wai-aria-1.1/#aria-valuemax" + } + ], + "description": { + "kind": "markdown", + "value": "Defines the maximum allowed value for a range [widget](https://www.w3.org/TR/wai-aria-1.1/#dfn-widget)." + } + }, + { + "name": "aria-valuemin", + "references": [ + { + "name": "WAI-ARIA Reference", + "url": "https://www.w3.org/TR/wai-aria-1.1/#aria-valuemin" + } + ], + "description": { + "kind": "markdown", + "value": "Defines the minimum allowed value for a range [widget](https://www.w3.org/TR/wai-aria-1.1/#dfn-widget)." + } + }, + { + "name": "aria-valuenow", + "references": [ + { + "name": "WAI-ARIA Reference", + "url": "https://www.w3.org/TR/wai-aria-1.1/#aria-valuenow" + } + ], + "description": { + "kind": "markdown", + "value": "Defines the current value for a range [widget](https://www.w3.org/TR/wai-aria-1.1/#dfn-widget). See related [`aria-valuetext`](https://www.w3.org/TR/wai-aria-1.1/#aria-valuetext)." + } + }, + { + "name": "aria-valuetext", + "references": [ + { + "name": "WAI-ARIA Reference", + "url": "https://www.w3.org/TR/wai-aria-1.1/#aria-valuetext" + } + ], + "description": { + "kind": "markdown", + "value": "Defines the human readable text alternative of [`aria-valuenow`](https://www.w3.org/TR/wai-aria-1.1/#aria-valuenow) for a range [widget](https://www.w3.org/TR/wai-aria-1.1/#dfn-widget)." + } + }, + { + "name": "aria-details", + "description": { + "kind": "markdown", + "value": "Identifies the [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) that provides a detailed, extended description for the [object](https://www.w3.org/TR/wai-aria-1.1/#dfn-object). See related [`aria-describedby`](https://www.w3.org/TR/wai-aria-1.1/#aria-describedby)." + } + }, + { + "name": "aria-keyshortcuts", + "description": { + "kind": "markdown", + "value": "Indicates keyboard shortcuts that an author has implemented to activate or give focus to an element." + } + } + ], + "valueSets": [ + { + "name": "b", + "values": [ + { + "name": "true" + }, + { + "name": "false" + } + ] + }, + { + "name": "u", + "values": [ + { + "name": "true" + }, + { + "name": "false" + }, + { + "name": "undefined" + } + ] + }, + { + "name": "o", + "values": [ + { + "name": "on" + }, + { + "name": "off" + } + ] + }, + { + "name": "y", + "values": [ + { + "name": "yes" + }, + { + "name": "no" + } + ] + }, + { + "name": "w", + "values": [ + { + "name": "soft" + }, + { + "name": "hard" + } + ] + }, + { + "name": "d", + "values": [ + { + "name": "ltr" + }, + { + "name": "rtl" + }, + { + "name": "auto" + } + ] + }, + { + "name": "m", + "values": [ + { + "name": "get", + "description": { + "kind": "markdown", + "value": "Corresponds to the HTTP [GET method](https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.3); form data are appended to the `action` attribute URI with a '?' as separator, and the resulting URI is sent to the server. Use this method when the form has no side-effects and contains only ASCII characters." + } + }, + { + "name": "post", + "description": { + "kind": "markdown", + "value": "Corresponds to the HTTP [POST method](https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.5); form data are included in the body of the form and sent to the server." + } + }, + { + "name": "dialog", + "description": { + "kind": "markdown", + "value": "Use when the form is inside a [`<dialog>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dialog) element to close the dialog when submitted." + } + } + ] + }, + { + "name": "fm", + "values": [ + { + "name": "get" + }, + { + "name": "post" + } + ] + }, + { + "name": "s", + "values": [ + { + "name": "row" + }, + { + "name": "col" + }, + { + "name": "rowgroup" + }, + { + "name": "colgroup" + } + ] + }, + { + "name": "t", + "values": [ + { + "name": "hidden" + }, + { + "name": "text" + }, + { + "name": "search" + }, + { + "name": "tel" + }, + { + "name": "url" + }, + { + "name": "email" + }, + { + "name": "password" + }, + { + "name": "datetime" + }, + { + "name": "date" + }, + { + "name": "month" + }, + { + "name": "week" + }, + { + "name": "time" + }, + { + "name": "datetime-local" + }, + { + "name": "number" + }, + { + "name": "range" + }, + { + "name": "color" + }, + { + "name": "checkbox" + }, + { + "name": "radio" + }, + { + "name": "file" + }, + { + "name": "submit" + }, + { + "name": "image" + }, + { + "name": "reset" + }, + { + "name": "button" + } + ] + }, + { + "name": "im", + "values": [ + { + "name": "verbatim" + }, + { + "name": "latin" + }, + { + "name": "latin-name" + }, + { + "name": "latin-prose" + }, + { + "name": "full-width-latin" + }, + { + "name": "kana" + }, + { + "name": "kana-name" + }, + { + "name": "katakana" + }, + { + "name": "numeric" + }, + { + "name": "tel" + }, + { + "name": "email" + }, + { + "name": "url" + } + ] + }, + { + "name": "bt", + "values": [ + { + "name": "button" + }, + { + "name": "submit" + }, + { + "name": "reset" + }, + { + "name": "menu" + } + ] + }, + { + "name": "lt", + "values": [ + { + "name": "1" + }, + { + "name": "a" + }, + { + "name": "A" + }, + { + "name": "i" + }, + { + "name": "I" + } + ] + }, + { + "name": "mt", + "values": [ + { + "name": "context" + }, + { + "name": "toolbar" + } + ] + }, + { + "name": "mit", + "values": [ + { + "name": "command" + }, + { + "name": "checkbox" + }, + { + "name": "radio" + } + ] + }, + { + "name": "et", + "values": [ + { + "name": "application/x-www-form-urlencoded" + }, + { + "name": "multipart/form-data" + }, + { + "name": "text/plain" + } + ] + }, + { + "name": "tk", + "values": [ + { + "name": "subtitles" + }, + { + "name": "captions" + }, + { + "name": "descriptions" + }, + { + "name": "chapters" + }, + { + "name": "metadata" + } + ] + }, + { + "name": "pl", + "values": [ + { + "name": "none" + }, + { + "name": "metadata" + }, + { + "name": "auto" + } + ] + }, + { + "name": "sh", + "values": [ + { + "name": "circle" + }, + { + "name": "default" + }, + { + "name": "poly" + }, + { + "name": "rect" + } + ] + }, + { + "name": "xo", + "values": [ + { + "name": "anonymous" + }, + { + "name": "use-credentials" + } + ] + }, + { + "name": "target", + "values": [ + { + "name": "_self" + }, + { + "name": "_blank" + }, + { + "name": "_parent" + }, + { + "name": "_top" + } + ] + }, + { + "name": "sb", + "values": [ + { + "name": "allow-forms" + }, + { + "name": "allow-modals" + }, + { + "name": "allow-pointer-lock" + }, + { + "name": "allow-popups" + }, + { + "name": "allow-popups-to-escape-sandbox" + }, + { + "name": "allow-same-origin" + }, + { + "name": "allow-scripts" + }, + { + "name": "allow-top-navigation" + } + ] + }, + { + "name": "tristate", + "values": [ + { + "name": "true" + }, + { + "name": "false" + }, + { + "name": "mixed" + }, + { + "name": "undefined" + } + ] + }, + { + "name": "inputautocomplete", + "values": [ + { + "name": "additional-name" + }, + { + "name": "address-level1" + }, + { + "name": "address-level2" + }, + { + "name": "address-level3" + }, + { + "name": "address-level4" + }, + { + "name": "address-line1" + }, + { + "name": "address-line2" + }, + { + "name": "address-line3" + }, + { + "name": "bday" + }, + { + "name": "bday-year" + }, + { + "name": "bday-day" + }, + { + "name": "bday-month" + }, + { + "name": "billing" + }, + { + "name": "cc-additional-name" + }, + { + "name": "cc-csc" + }, + { + "name": "cc-exp" + }, + { + "name": "cc-exp-month" + }, + { + "name": "cc-exp-year" + }, + { + "name": "cc-family-name" + }, + { + "name": "cc-given-name" + }, + { + "name": "cc-name" + }, + { + "name": "cc-number" + }, + { + "name": "cc-type" + }, + { + "name": "country" + }, + { + "name": "country-name" + }, + { + "name": "current-password" + }, + { + "name": "email" + }, + { + "name": "family-name" + }, + { + "name": "fax" + }, + { + "name": "given-name" + }, + { + "name": "home" + }, + { + "name": "honorific-prefix" + }, + { + "name": "honorific-suffix" + }, + { + "name": "impp" + }, + { + "name": "language" + }, + { + "name": "mobile" + }, + { + "name": "name" + }, + { + "name": "new-password" + }, + { + "name": "nickname" + }, + { + "name": "off" + }, + { + "name": "on" + }, + { + "name": "organization" + }, + { + "name": "organization-title" + }, + { + "name": "pager" + }, + { + "name": "photo" + }, + { + "name": "postal-code" + }, + { + "name": "sex" + }, + { + "name": "shipping" + }, + { + "name": "street-address" + }, + { + "name": "tel-area-code" + }, + { + "name": "tel" + }, + { + "name": "tel-country-code" + }, + { + "name": "tel-extension" + }, + { + "name": "tel-local" + }, + { + "name": "tel-local-prefix" + }, + { + "name": "tel-local-suffix" + }, + { + "name": "tel-national" + }, + { + "name": "transaction-amount" + }, + { + "name": "transaction-currency" + }, + { + "name": "url" + }, + { + "name": "username" + }, + { + "name": "work" + } + ] + }, + { + "name": "autocomplete", + "values": [ + { + "name": "inline" + }, + { + "name": "list" + }, + { + "name": "both" + }, + { + "name": "none" + } + ] + }, + { + "name": "current", + "values": [ + { + "name": "page" + }, + { + "name": "step" + }, + { + "name": "location" + }, + { + "name": "date" + }, + { + "name": "time" + }, + { + "name": "true" + }, + { + "name": "false" + } + ] + }, + { + "name": "dropeffect", + "values": [ + { + "name": "copy" + }, + { + "name": "move" + }, + { + "name": "link" + }, + { + "name": "execute" + }, + { + "name": "popup" + }, + { + "name": "none" + } + ] + }, + { + "name": "invalid", + "values": [ + { + "name": "grammar" + }, + { + "name": "false" + }, + { + "name": "spelling" + }, + { + "name": "true" + } + ] + }, + { + "name": "live", + "values": [ + { + "name": "off" + }, + { + "name": "polite" + }, + { + "name": "assertive" + } + ] + }, + { + "name": "orientation", + "values": [ + { + "name": "vertical" + }, + { + "name": "horizontal" + }, + { + "name": "undefined" + } + ] + }, + { + "name": "relevant", + "values": [ + { + "name": "additions" + }, + { + "name": "removals" + }, + { + "name": "text" + }, + { + "name": "all" + }, + { + "name": "additions text" + } + ] + }, + { + "name": "sort", + "values": [ + { + "name": "ascending" + }, + { + "name": "descending" + }, + { + "name": "none" + }, + { + "name": "other" + } + ] + }, + { + "name": "roles", + "values": [ + { + "name": "alert" + }, + { + "name": "alertdialog" + }, + { + "name": "button" + }, + { + "name": "checkbox" + }, + { + "name": "dialog" + }, + { + "name": "gridcell" + }, + { + "name": "link" + }, + { + "name": "log" + }, + { + "name": "marquee" + }, + { + "name": "menuitem" + }, + { + "name": "menuitemcheckbox" + }, + { + "name": "menuitemradio" + }, + { + "name": "option" + }, + { + "name": "progressbar" + }, + { + "name": "radio" + }, + { + "name": "scrollbar" + }, + { + "name": "searchbox" + }, + { + "name": "slider" + }, + { + "name": "spinbutton" + }, + { + "name": "status" + }, + { + "name": "switch" + }, + { + "name": "tab" + }, + { + "name": "tabpanel" + }, + { + "name": "textbox" + }, + { + "name": "timer" + }, + { + "name": "tooltip" + }, + { + "name": "treeitem" + }, + { + "name": "combobox" + }, + { + "name": "grid" + }, + { + "name": "listbox" + }, + { + "name": "menu" + }, + { + "name": "menubar" + }, + { + "name": "radiogroup" + }, + { + "name": "tablist" + }, + { + "name": "tree" + }, + { + "name": "treegrid" + }, + { + "name": "application" + }, + { + "name": "article" + }, + { + "name": "cell" + }, + { + "name": "columnheader" + }, + { + "name": "definition" + }, + { + "name": "directory" + }, + { + "name": "document" + }, + { + "name": "feed" + }, + { + "name": "figure" + }, + { + "name": "group" + }, + { + "name": "heading" + }, + { + "name": "img" + }, + { + "name": "list" + }, + { + "name": "listitem" + }, + { + "name": "math" + }, + { + "name": "none" + }, + { + "name": "note" + }, + { + "name": "presentation" + }, + { + "name": "region" + }, + { + "name": "row" + }, + { + "name": "rowgroup" + }, + { + "name": "rowheader" + }, + { + "name": "separator" + }, + { + "name": "table" + }, + { + "name": "term" + }, + { + "name": "text" + }, + { + "name": "toolbar" + }, + { + "name": "banner" + }, + { + "name": "complementary" + }, + { + "name": "contentinfo" + }, + { + "name": "form" + }, + { + "name": "main" + }, + { + "name": "navigation" + }, + { + "name": "region" + }, + { + "name": "search" + }, + { + "name": "doc-abstract" + }, + { + "name": "doc-acknowledgments" + }, + { + "name": "doc-afterword" + }, + { + "name": "doc-appendix" + }, + { + "name": "doc-backlink" + }, + { + "name": "doc-biblioentry" + }, + { + "name": "doc-bibliography" + }, + { + "name": "doc-biblioref" + }, + { + "name": "doc-chapter" + }, + { + "name": "doc-colophon" + }, + { + "name": "doc-conclusion" + }, + { + "name": "doc-cover" + }, + { + "name": "doc-credit" + }, + { + "name": "doc-credits" + }, + { + "name": "doc-dedication" + }, + { + "name": "doc-endnote" + }, + { + "name": "doc-endnotes" + }, + { + "name": "doc-epigraph" + }, + { + "name": "doc-epilogue" + }, + { + "name": "doc-errata" + }, + { + "name": "doc-example" + }, + { + "name": "doc-footnote" + }, + { + "name": "doc-foreword" + }, + { + "name": "doc-glossary" + }, + { + "name": "doc-glossref" + }, + { + "name": "doc-index" + }, + { + "name": "doc-introduction" + }, + { + "name": "doc-noteref" + }, + { + "name": "doc-notice" + }, + { + "name": "doc-pagebreak" + }, + { + "name": "doc-pagelist" + }, + { + "name": "doc-part" + }, + { + "name": "doc-preface" + }, + { + "name": "doc-prologue" + }, + { + "name": "doc-pullquote" + }, + { + "name": "doc-qna" + }, + { + "name": "doc-subtitle" + }, + { + "name": "doc-tip" + }, + { + "name": "doc-toc" + } + ] + }, + { + "name": "metanames", + "values": [ + { + "name": "application-name" + }, + { + "name": "author" + }, + { + "name": "description" + }, + { + "name": "format-detection" + }, + { + "name": "generator" + }, + { + "name": "keywords" + }, + { + "name": "publisher" + }, + { + "name": "referrer" + }, + { + "name": "robots" + }, + { + "name": "theme-color" + }, + { + "name": "viewport" + } + ] + }, + { + "name": "haspopup", + "values": [ + { + "name": "false", + "description": { + "kind": "markdown", + "value": "(default) Indicates the element does not have a popup." + } + }, + { + "name": "true", + "description": { + "kind": "markdown", + "value": "Indicates the popup is a menu." + } + }, + { + "name": "menu", + "description": { + "kind": "markdown", + "value": "Indicates the popup is a menu." + } + }, + { + "name": "listbox", + "description": { + "kind": "markdown", + "value": "Indicates the popup is a listbox." + } + }, + { + "name": "tree", + "description": { + "kind": "markdown", + "value": "Indicates the popup is a tree." + } + }, + { + "name": "grid", + "description": { + "kind": "markdown", + "value": "Indicates the popup is a grid." + } + }, + { + "name": "dialog", + "description": { + "kind": "markdown", + "value": "Indicates the popup is a dialog." + } + } + ] + }, + { + "name": "decoding", + "values": [ + { + "name": "sync" + }, + { + "name": "async" + }, + { + "name": "auto" + } + ] + }, + { + "name": "loading", + "values": [ + { + "name": "eager", + "description": { + "kind": "markdown", + "value": "Loads the image immediately, regardless of whether or not the image is currently within the visible viewport (this is the default value)." + } + }, + { + "name": "lazy", + "description": { + "kind": "markdown", + "value": "Defers loading the image until it reaches a calculated distance from the viewport, as defined by the browser. The intent is to avoid the network and storage bandwidth needed to handle the image until it's reasonably certain that it will be needed. This generally improves the performance of the content in most typical use cases." + } + } + ] + }, + { + "name": "referrerpolicy", + "values": [ + { + "name": "no-referrer" + }, + { + "name": "no-referrer-when-downgrade" + }, + { + "name": "origin" + }, + { + "name": "origin-when-cross-origin" + }, + { + "name": "same-origin" + }, + { + "name": "strict-origin" + }, + { + "name": "strict-origin-when-cross-origin" + }, + { + "name": "unsafe-url" + } + ] + } + ] +}; + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +class HTMLDataManager { + constructor(options) { + this.dataProviders = []; + this.setDataProviders(options.useDefaultDataProvider !== false, options.customDataProviders || []); + } + setDataProviders(builtIn, providers) { + this.dataProviders = []; + if (builtIn) { + this.dataProviders.push(new HTMLDataProvider('html5', htmlData)); + } + this.dataProviders.push(...providers); + } + getDataProviders() { + return this.dataProviders; + } + isVoidElement(e, voidElements) { + return !!e && binarySearch(voidElements, e.toLowerCase(), (s1, s2) => s1.localeCompare(s2)) >= 0; + } + getVoidElements(languageOrProviders) { + const dataProviders = Array.isArray(languageOrProviders) ? languageOrProviders : this.getDataProviders().filter(p => p.isApplicable(languageOrProviders)); + const voidTags = []; + dataProviders.forEach((provider) => { + provider.provideTags().filter(tag => tag.void).forEach(tag => voidTags.push(tag.name)); + }); + return voidTags.sort(); + } + isPathAttribute(tag, attr) { + // should eventually come from custom data + if (attr === 'src' || attr === 'href') { + return true; + } + const a = PATH_TAG_AND_ATTR[tag]; + if (a) { + if (typeof a === 'string') { + return a === attr; + } + else { + return a.indexOf(attr) !== -1; + } + } + return false; + } +} +// Selected from https://stackoverflow.com/a/2725168/1780148 +const PATH_TAG_AND_ATTR = { + // HTML 4 + a: 'href', + area: 'href', + body: 'background', + blockquote: 'cite', + del: 'cite', + form: 'action', + frame: ['src', 'longdesc'], + img: ['src', 'longdesc'], + ins: 'cite', + link: 'href', + object: 'data', + q: 'cite', + script: 'src', + // HTML 5 + audio: 'src', + button: 'formaction', + command: 'icon', + embed: 'src', + html: 'manifest', + input: ['src', 'formaction'], + source: 'src', + track: 'src', + video: ['src', 'poster'] +}; + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +const defaultLanguageServiceOptions = {}; +function getLanguageService$1(options = defaultLanguageServiceOptions) { + const dataManager = new HTMLDataManager(options); + const htmlHover = new HTMLHover(options, dataManager); + const htmlCompletion = new HTMLCompletion(options, dataManager); + const htmlParser = new HTMLParser(dataManager); + const htmlSelectionRange = new HTMLSelectionRange(htmlParser); + const htmlFolding = new HTMLFolding(dataManager); + const htmlDocumentLinks = new HTMLDocumentLinks(dataManager); + return { + setDataProviders: dataManager.setDataProviders.bind(dataManager), + createScanner: createScanner$2, + parseHTMLDocument: htmlParser.parseDocument.bind(htmlParser), + doComplete: htmlCompletion.doComplete.bind(htmlCompletion), + doComplete2: htmlCompletion.doComplete2.bind(htmlCompletion), + setCompletionParticipants: htmlCompletion.setCompletionParticipants.bind(htmlCompletion), + doHover: htmlHover.doHover.bind(htmlHover), + format: format$3, + findDocumentHighlights, + findDocumentLinks: htmlDocumentLinks.findDocumentLinks.bind(htmlDocumentLinks), + findDocumentSymbols, + findDocumentSymbols2, + getFoldingRanges: htmlFolding.getFoldingRanges.bind(htmlFolding), + getSelectionRanges: htmlSelectionRange.getSelectionRanges.bind(htmlSelectionRange), + doQuoteComplete: htmlCompletion.doQuoteComplete.bind(htmlCompletion), + doTagComplete: htmlCompletion.doTagComplete.bind(htmlCompletion), + doRename, + findMatchingTagPosition, + findOnTypeRenameRanges: findLinkedEditingRanges, + findLinkedEditingRanges + }; +} +function newHTMLDataProvider(id, customData) { + return new HTMLDataProvider(id, customData); +} +function getDefaultHTMLDataProvider() { + return newHTMLDataProvider('default', htmlData); +} + +var htmlLanguageService = /*#__PURE__*/Object.freeze({ + __proto__: null, + get ClientCapabilities () { return ClientCapabilities$1; }, + get Color () { return Color; }, + get ColorInformation () { return ColorInformation; }, + get ColorPresentation () { return ColorPresentation; }, + get Command () { return Command; }, + get CompletionItem () { return CompletionItem; }, + get CompletionItemKind () { return CompletionItemKind; }, + get CompletionItemTag () { return CompletionItemTag; }, + get CompletionList () { return CompletionList; }, + get Diagnostic () { return Diagnostic; }, + get DocumentHighlight () { return DocumentHighlight; }, + get DocumentHighlightKind () { return DocumentHighlightKind; }, + get DocumentLink () { return DocumentLink; }, + get DocumentSymbol () { return DocumentSymbol; }, + get DocumentUri () { return DocumentUri; }, + get FileType () { return FileType; }, + get FoldingRange () { return FoldingRange; }, + get FoldingRangeKind () { return FoldingRangeKind; }, + get FormattingOptions () { return FormattingOptions; }, + get Hover () { return Hover; }, + get InsertReplaceEdit () { return InsertReplaceEdit; }, + get InsertTextFormat () { return InsertTextFormat; }, + get InsertTextMode () { return InsertTextMode; }, + get Location () { return Location; }, + get MarkedString () { return MarkedString; }, + get MarkupContent () { return MarkupContent; }, + get MarkupKind () { return MarkupKind; }, + get Position () { return Position; }, + get Range () { return Range$a; }, + get ScannerState () { return ScannerState; }, + get SelectionRange () { return SelectionRange; }, + get SymbolInformation () { return SymbolInformation; }, + get SymbolKind () { return SymbolKind$1; }, + get TextDocument () { return TextDocument$1; }, + get TextEdit () { return TextEdit; }, + get TokenType () { return TokenType; }, + get WorkspaceEdit () { return WorkspaceEdit; }, + getDefaultHTMLDataProvider: getDefaultHTMLDataProvider, + getLanguageService: getLanguageService$1, + newHTMLDataProvider: newHTMLDataProvider +}); + +var require$$2$1 = /*@__PURE__*/getAugmentedNamespace(htmlLanguageService); + +Object.defineProperty(out$5, "__esModule", { value: true }); +out$5.create = out$5.getHtmlDocument = void 0; +const html$2 = require$$2$1; +const vscode_uri_1$3 = umdExports; +const parserLs = html$2.getLanguageService(); +const htmlDocuments = new WeakMap(); +function getHtmlDocument(document) { + const cache = htmlDocuments.get(document); + if (cache) { + const [cacheVersion, cacheDoc] = cache; + if (cacheVersion === document.version) { + return cacheDoc; + } + } + const doc = parserLs.parseHTMLDocument(document); + htmlDocuments.set(document, [document.version, doc]); + return doc; +} +out$5.getHtmlDocument = getHtmlDocument; +// https://github.com/microsoft/vscode/blob/09850876e652688fb142e2e19fd00fd38c0bc4ba/extensions/html-language-features/server/src/htmlServer.ts#L183 +const triggerCharacters$1 = ['.', ':', '<', '"', '=', '/']; +function create$e({ languageId = 'html', useDefaultDataProvider = true, useCustomDataProviders = true, } = {}) { + return (context) => { + if (!context) { + return { triggerCharacters: triggerCharacters$1 }; + } + let shouldUpdateCustomData = true; + let customData = []; + let extraData = []; + const fileSystemProvider = { + stat: async (uri) => await context.env.fs?.stat(uri) ?? { + type: html$2.FileType.Unknown, + ctime: 0, + mtime: 0, + size: 0, + }, + readDirectory: async (uri) => context.env.fs?.readDirectory(uri) ?? [], + }; + const documentContext = { + resolveReference(ref, base) { + if (ref.match(/^\w[\w\d+.-]*:/)) { + // starts with a schema + return ref; + } + if (ref[0] === '/') { // resolve absolute path against the current workspace folder + return base + ref; + } + const baseUri = vscode_uri_1$3.URI.parse(base); + const baseUriDir = baseUri.path.endsWith('/') ? baseUri : vscode_uri_1$3.Utils.dirname(baseUri); + return vscode_uri_1$3.Utils.resolvePath(baseUriDir, ref).toString(true); + }, + }; + const htmlLs = html$2.getLanguageService({ + fileSystemProvider, + clientCapabilities: context.env.clientCapabilities, + }); + context.env.onDidChangeConfiguration?.(() => { + shouldUpdateCustomData = true; + }); + return { + provide: { + 'html/htmlDocument': (document) => { + if (document.languageId === languageId) { + return getHtmlDocument(document); + } + }, + 'html/languageService': () => htmlLs, + 'html/documentContext': () => documentContext, + 'html/updateCustomData': updateExtraCustomData, + }, + triggerCharacters: triggerCharacters$1, + async provideCompletionItems(document, position) { + return worker(document, async (htmlDocument) => { + const configs = await context.env.getConfiguration?.('html.completion'); + return htmlLs.doComplete2(document, position, htmlDocument, documentContext, configs); + }); + }, + provideRenameRange(document, position) { + return worker(document, (htmlDocument) => { + const offset = document.offsetAt(position); + return htmlLs + .findDocumentHighlights(document, position, htmlDocument) + ?.find(h => offset >= document.offsetAt(h.range.start) && offset <= document.offsetAt(h.range.end)) + ?.range; + }); + }, + provideRenameEdits(document, position, newName) { + return worker(document, (htmlDocument) => { + return htmlLs.doRename(document, position, newName, htmlDocument); + }); + }, + async provideHover(document, position) { + return worker(document, async (htmlDocument) => { + const hoverSettings = await context.env.getConfiguration?.('html.hover'); + return htmlLs.doHover(document, position, htmlDocument, hoverSettings); + }); + }, + provideDocumentHighlights(document, position) { + return worker(document, (htmlDocument) => { + return htmlLs.findDocumentHighlights(document, position, htmlDocument); + }); + }, + provideDocumentLinks(document) { + return worker(document, () => { + return htmlLs.findDocumentLinks(document, documentContext); + }); + }, + provideDocumentSymbols(document) { + return worker(document, (htmlDocument) => { + return htmlLs.findDocumentSymbols2(document, htmlDocument); + }); + }, + provideFoldingRanges(document) { + return worker(document, () => { + return htmlLs.getFoldingRanges(document); + }); + }, + provideSelectionRanges(document, positions) { + return worker(document, () => { + return htmlLs.getSelectionRanges(document, positions); + }); + }, + async provideDocumentFormattingEdits(document, formatRange, options) { + return worker(document, async () => { + const options_2 = await context.env.getConfiguration?.('html.format'); + if (options_2?.enable === false) { + return; + } + { // https://github.com/microsoft/vscode/blob/dce493cb6e36346ef2714e82c42ce14fc461b15c/extensions/html-language-features/server/src/modes/formatting.ts#L13-L23 + const endPos = formatRange.end; + let endOffset = document.offsetAt(endPos); + const content = document.getText(); + if (endPos.character === 0 && endPos.line > 0 && endOffset !== content.length) { + // if selection ends after a new line, exclude that new line + const prevLineStart = document.offsetAt({ line: endPos.line - 1, character: 0 }); + while (isEOL$1(content, endOffset - 1) && endOffset > prevLineStart) { + endOffset--; + } + formatRange = { + start: formatRange.start, + end: document.positionAt(endOffset), + }; + } + } + return htmlLs.format(document, formatRange, { + ...options_2, + ...options, + }); + }); + }, + provideFormattingIndentSensitiveLines(document) { + return worker(document, (htmlDocument) => { + const lines = []; + /** + * comments + */ + const scanner = htmlLs.createScanner(document.getText()); + let token = scanner.scan(); + let startCommentTagLine; + while (token !== html$2.TokenType.EOS) { + if (token === html$2.TokenType.StartCommentTag) { + startCommentTagLine = document.positionAt(scanner.getTokenOffset()).line; + } + else if (token === html$2.TokenType.EndCommentTag) { + const line = document.positionAt(scanner.getTokenOffset()).line; + for (let i = startCommentTagLine + 1; i <= line; i++) { + lines.push(i); + } + startCommentTagLine = undefined; + } + else if (token === html$2.TokenType.AttributeValue) { + const startLine = document.positionAt(scanner.getTokenOffset()).line; + for (let i = 1; i < scanner.getTokenText().split('\n').length; i++) { + lines.push(startLine + i); + } + } + token = scanner.scan(); + } + /** + * tags + */ + // https://github.com/beautify-web/js-beautify/blob/686f8c1b265990908ece86ce39291733c75c997c/js/src/html/options.js#L81 + const indentSensitiveTags = new Set(['pre', 'textarea']); + htmlDocument.roots.forEach(function visit(node) { + if (node.tag !== undefined + && node.startTagEnd !== undefined + && node.endTagStart !== undefined + && indentSensitiveTags.has(node.tag)) { + for (let i = document.positionAt(node.startTagEnd).line + 1; i <= document.positionAt(node.endTagStart).line; i++) { + lines.push(i); + } + } + else { + node.children.forEach(visit); + } + }); + return lines; + }); + }, + provideLinkedEditingRanges(document, position) { + return worker(document, (htmlDocument) => { + const ranges = htmlLs.findLinkedEditingRanges(document, position, htmlDocument); + if (!ranges) + return; + return { ranges }; + }); + }, + async provideAutoInsertionEdit(document, position, insertContext) { + return worker(document, async (htmlDocument) => { + const lastCharacter = insertContext.lastChange.text[insertContext.lastChange.text.length - 1]; + if (insertContext.lastChange.rangeLength === 0 && lastCharacter === '=') { + const enabled = (await context.env.getConfiguration?.('html.autoCreateQuotes')) ?? true; + if (enabled) { + const text = htmlLs.doQuoteComplete(document, position, htmlDocument, await context.env.getConfiguration?.('html.completion')); + if (text) { + return text; + } + } + } + if (insertContext.lastChange.rangeLength === 0 && (lastCharacter === '>' || lastCharacter === '/')) { + const enabled = (await context.env.getConfiguration?.('html.autoClosingTags')) ?? true; + if (enabled) { + const text = htmlLs.doTagComplete(document, position, htmlDocument); + if (text) { + return text; + } + } + } + }); + }, + }; + async function initCustomData() { + if (shouldUpdateCustomData && useCustomDataProviders) { + shouldUpdateCustomData = false; + customData = await getCustomData(); + htmlLs.setDataProviders(useDefaultDataProvider, [...customData, ...extraData]); + } + } + function updateExtraCustomData(data) { + extraData = data; + htmlLs.setDataProviders(useDefaultDataProvider, [...customData, ...extraData]); + } + async function getCustomData() { + const customData = await context?.env.getConfiguration?.('html.customData') ?? []; + const newData = []; + for (const customDataPath of customData) { + try { + const pathModuleName = 'path'; // avoid bundle + const { posix: path } = commonjsRequire(pathModuleName); + const jsonPath = path.resolve(customDataPath); + newData.push(html$2.newHTMLDataProvider(customDataPath, commonjsRequire(jsonPath))); + } + catch (error) { + console.error(error); + } + } + return newData; + } + async function worker(document, callback) { + if (document.languageId !== languageId) + return; + const htmlDocument = getHtmlDocument(document); + if (!htmlDocument) + return; + await initCustomData(); + return callback(htmlDocument); + } + }; +} +out$5.create = create$e; +out$5.default = create$e; +function isEOL$1(content, offset) { + return isNewlineCharacter(content.charCodeAt(offset)); +} +const CR = '\r'.charCodeAt(0); +const NL = '\n'.charCodeAt(0); +function isNewlineCharacter(charCode) { + return charCode === CR || charCode === NL; +} + +var out$4 = {}; + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +/** + * Creates a JSON scanner on the given text. + * If ignoreTrivia is set, whitespaces or comments are ignored. + */ +function createScanner$1(text, ignoreTrivia = false) { + const len = text.length; + let pos = 0, value = '', tokenOffset = 0, token = 16 /* SyntaxKind.Unknown */, lineNumber = 0, lineStartOffset = 0, tokenLineStartOffset = 0, prevTokenLineStartOffset = 0, scanError = 0 /* ScanError.None */; + function scanHexDigits(count, exact) { + let digits = 0; + let value = 0; + while (digits < count || !exact) { + let ch = text.charCodeAt(pos); + if (ch >= 48 /* CharacterCodes._0 */ && ch <= 57 /* CharacterCodes._9 */) { + value = value * 16 + ch - 48 /* CharacterCodes._0 */; + } + else if (ch >= 65 /* CharacterCodes.A */ && ch <= 70 /* CharacterCodes.F */) { + value = value * 16 + ch - 65 /* CharacterCodes.A */ + 10; + } + else if (ch >= 97 /* CharacterCodes.a */ && ch <= 102 /* CharacterCodes.f */) { + value = value * 16 + ch - 97 /* CharacterCodes.a */ + 10; + } + else { + break; + } + pos++; + digits++; + } + if (digits < count) { + value = -1; + } + return value; + } + function setPosition(newPosition) { + pos = newPosition; + value = ''; + tokenOffset = 0; + token = 16 /* SyntaxKind.Unknown */; + scanError = 0 /* ScanError.None */; + } + function scanNumber() { + let start = pos; + if (text.charCodeAt(pos) === 48 /* CharacterCodes._0 */) { + pos++; + } + else { + pos++; + while (pos < text.length && isDigit(text.charCodeAt(pos))) { + pos++; + } + } + if (pos < text.length && text.charCodeAt(pos) === 46 /* CharacterCodes.dot */) { + pos++; + if (pos < text.length && isDigit(text.charCodeAt(pos))) { + pos++; + while (pos < text.length && isDigit(text.charCodeAt(pos))) { + pos++; + } + } + else { + scanError = 3 /* ScanError.UnexpectedEndOfNumber */; + return text.substring(start, pos); + } + } + let end = pos; + if (pos < text.length && (text.charCodeAt(pos) === 69 /* CharacterCodes.E */ || text.charCodeAt(pos) === 101 /* CharacterCodes.e */)) { + pos++; + if (pos < text.length && text.charCodeAt(pos) === 43 /* CharacterCodes.plus */ || text.charCodeAt(pos) === 45 /* CharacterCodes.minus */) { + pos++; + } + if (pos < text.length && isDigit(text.charCodeAt(pos))) { + pos++; + while (pos < text.length && isDigit(text.charCodeAt(pos))) { + pos++; + } + end = pos; + } + else { + scanError = 3 /* ScanError.UnexpectedEndOfNumber */; + } + } + return text.substring(start, end); + } + function scanString() { + let result = '', start = pos; + while (true) { + if (pos >= len) { + result += text.substring(start, pos); + scanError = 2 /* ScanError.UnexpectedEndOfString */; + break; + } + const ch = text.charCodeAt(pos); + if (ch === 34 /* CharacterCodes.doubleQuote */) { + result += text.substring(start, pos); + pos++; + break; + } + if (ch === 92 /* CharacterCodes.backslash */) { + result += text.substring(start, pos); + pos++; + if (pos >= len) { + scanError = 2 /* ScanError.UnexpectedEndOfString */; + break; + } + const ch2 = text.charCodeAt(pos++); + switch (ch2) { + case 34 /* CharacterCodes.doubleQuote */: + result += '\"'; + break; + case 92 /* CharacterCodes.backslash */: + result += '\\'; + break; + case 47 /* CharacterCodes.slash */: + result += '/'; + break; + case 98 /* CharacterCodes.b */: + result += '\b'; + break; + case 102 /* CharacterCodes.f */: + result += '\f'; + break; + case 110 /* CharacterCodes.n */: + result += '\n'; + break; + case 114 /* CharacterCodes.r */: + result += '\r'; + break; + case 116 /* CharacterCodes.t */: + result += '\t'; + break; + case 117 /* CharacterCodes.u */: + const ch3 = scanHexDigits(4, true); + if (ch3 >= 0) { + result += String.fromCharCode(ch3); + } + else { + scanError = 4 /* ScanError.InvalidUnicode */; + } + break; + default: + scanError = 5 /* ScanError.InvalidEscapeCharacter */; + } + start = pos; + continue; + } + if (ch >= 0 && ch <= 0x1f) { + if (isLineBreak(ch)) { + result += text.substring(start, pos); + scanError = 2 /* ScanError.UnexpectedEndOfString */; + break; + } + else { + scanError = 6 /* ScanError.InvalidCharacter */; + // mark as error but continue with string + } + } + pos++; + } + return result; + } + function scanNext() { + value = ''; + scanError = 0 /* ScanError.None */; + tokenOffset = pos; + lineStartOffset = lineNumber; + prevTokenLineStartOffset = tokenLineStartOffset; + if (pos >= len) { + // at the end + tokenOffset = len; + return token = 17 /* SyntaxKind.EOF */; + } + let code = text.charCodeAt(pos); + // trivia: whitespace + if (isWhiteSpace(code)) { + do { + pos++; + value += String.fromCharCode(code); + code = text.charCodeAt(pos); + } while (isWhiteSpace(code)); + return token = 15 /* SyntaxKind.Trivia */; + } + // trivia: newlines + if (isLineBreak(code)) { + pos++; + value += String.fromCharCode(code); + if (code === 13 /* CharacterCodes.carriageReturn */ && text.charCodeAt(pos) === 10 /* CharacterCodes.lineFeed */) { + pos++; + value += '\n'; + } + lineNumber++; + tokenLineStartOffset = pos; + return token = 14 /* SyntaxKind.LineBreakTrivia */; + } + switch (code) { + // tokens: []{}:, + case 123 /* CharacterCodes.openBrace */: + pos++; + return token = 1 /* SyntaxKind.OpenBraceToken */; + case 125 /* CharacterCodes.closeBrace */: + pos++; + return token = 2 /* SyntaxKind.CloseBraceToken */; + case 91 /* CharacterCodes.openBracket */: + pos++; + return token = 3 /* SyntaxKind.OpenBracketToken */; + case 93 /* CharacterCodes.closeBracket */: + pos++; + return token = 4 /* SyntaxKind.CloseBracketToken */; + case 58 /* CharacterCodes.colon */: + pos++; + return token = 6 /* SyntaxKind.ColonToken */; + case 44 /* CharacterCodes.comma */: + pos++; + return token = 5 /* SyntaxKind.CommaToken */; + // strings + case 34 /* CharacterCodes.doubleQuote */: + pos++; + value = scanString(); + return token = 10 /* SyntaxKind.StringLiteral */; + // comments + case 47 /* CharacterCodes.slash */: + const start = pos - 1; + // Single-line comment + if (text.charCodeAt(pos + 1) === 47 /* CharacterCodes.slash */) { + pos += 2; + while (pos < len) { + if (isLineBreak(text.charCodeAt(pos))) { + break; + } + pos++; + } + value = text.substring(start, pos); + return token = 12 /* SyntaxKind.LineCommentTrivia */; + } + // Multi-line comment + if (text.charCodeAt(pos + 1) === 42 /* CharacterCodes.asterisk */) { + pos += 2; + const safeLength = len - 1; // For lookahead. + let commentClosed = false; + while (pos < safeLength) { + const ch = text.charCodeAt(pos); + if (ch === 42 /* CharacterCodes.asterisk */ && text.charCodeAt(pos + 1) === 47 /* CharacterCodes.slash */) { + pos += 2; + commentClosed = true; + break; + } + pos++; + if (isLineBreak(ch)) { + if (ch === 13 /* CharacterCodes.carriageReturn */ && text.charCodeAt(pos) === 10 /* CharacterCodes.lineFeed */) { + pos++; + } + lineNumber++; + tokenLineStartOffset = pos; + } + } + if (!commentClosed) { + pos++; + scanError = 1 /* ScanError.UnexpectedEndOfComment */; + } + value = text.substring(start, pos); + return token = 13 /* SyntaxKind.BlockCommentTrivia */; + } + // just a single slash + value += String.fromCharCode(code); + pos++; + return token = 16 /* SyntaxKind.Unknown */; + // numbers + case 45 /* CharacterCodes.minus */: + value += String.fromCharCode(code); + pos++; + if (pos === len || !isDigit(text.charCodeAt(pos))) { + return token = 16 /* SyntaxKind.Unknown */; + } + // found a minus, followed by a number so + // we fall through to proceed with scanning + // numbers + case 48 /* CharacterCodes._0 */: + case 49 /* CharacterCodes._1 */: + case 50 /* CharacterCodes._2 */: + case 51 /* CharacterCodes._3 */: + case 52 /* CharacterCodes._4 */: + case 53 /* CharacterCodes._5 */: + case 54 /* CharacterCodes._6 */: + case 55 /* CharacterCodes._7 */: + case 56 /* CharacterCodes._8 */: + case 57 /* CharacterCodes._9 */: + value += scanNumber(); + return token = 11 /* SyntaxKind.NumericLiteral */; + // literals and unknown symbols + default: + // is a literal? Read the full word. + while (pos < len && isUnknownContentCharacter(code)) { + pos++; + code = text.charCodeAt(pos); + } + if (tokenOffset !== pos) { + value = text.substring(tokenOffset, pos); + // keywords: true, false, null + switch (value) { + case 'true': return token = 8 /* SyntaxKind.TrueKeyword */; + case 'false': return token = 9 /* SyntaxKind.FalseKeyword */; + case 'null': return token = 7 /* SyntaxKind.NullKeyword */; + } + return token = 16 /* SyntaxKind.Unknown */; + } + // some + value += String.fromCharCode(code); + pos++; + return token = 16 /* SyntaxKind.Unknown */; + } + } + function isUnknownContentCharacter(code) { + if (isWhiteSpace(code) || isLineBreak(code)) { + return false; + } + switch (code) { + case 125 /* CharacterCodes.closeBrace */: + case 93 /* CharacterCodes.closeBracket */: + case 123 /* CharacterCodes.openBrace */: + case 91 /* CharacterCodes.openBracket */: + case 34 /* CharacterCodes.doubleQuote */: + case 58 /* CharacterCodes.colon */: + case 44 /* CharacterCodes.comma */: + case 47 /* CharacterCodes.slash */: + return false; + } + return true; + } + function scanNextNonTrivia() { + let result; + do { + result = scanNext(); + } while (result >= 12 /* SyntaxKind.LineCommentTrivia */ && result <= 15 /* SyntaxKind.Trivia */); + return result; + } + return { + setPosition: setPosition, + getPosition: () => pos, + scan: ignoreTrivia ? scanNextNonTrivia : scanNext, + getToken: () => token, + getTokenValue: () => value, + getTokenOffset: () => tokenOffset, + getTokenLength: () => pos - tokenOffset, + getTokenStartLine: () => lineStartOffset, + getTokenStartCharacter: () => tokenOffset - prevTokenLineStartOffset, + getTokenError: () => scanError, + }; +} +function isWhiteSpace(ch) { + return ch === 32 /* CharacterCodes.space */ || ch === 9 /* CharacterCodes.tab */; +} +function isLineBreak(ch) { + return ch === 10 /* CharacterCodes.lineFeed */ || ch === 13 /* CharacterCodes.carriageReturn */; +} +function isDigit(ch) { + return ch >= 48 /* CharacterCodes._0 */ && ch <= 57 /* CharacterCodes._9 */; +} +var CharacterCodes; +(function (CharacterCodes) { + CharacterCodes[CharacterCodes["lineFeed"] = 10] = "lineFeed"; + CharacterCodes[CharacterCodes["carriageReturn"] = 13] = "carriageReturn"; + CharacterCodes[CharacterCodes["space"] = 32] = "space"; + CharacterCodes[CharacterCodes["_0"] = 48] = "_0"; + CharacterCodes[CharacterCodes["_1"] = 49] = "_1"; + CharacterCodes[CharacterCodes["_2"] = 50] = "_2"; + CharacterCodes[CharacterCodes["_3"] = 51] = "_3"; + CharacterCodes[CharacterCodes["_4"] = 52] = "_4"; + CharacterCodes[CharacterCodes["_5"] = 53] = "_5"; + CharacterCodes[CharacterCodes["_6"] = 54] = "_6"; + CharacterCodes[CharacterCodes["_7"] = 55] = "_7"; + CharacterCodes[CharacterCodes["_8"] = 56] = "_8"; + CharacterCodes[CharacterCodes["_9"] = 57] = "_9"; + CharacterCodes[CharacterCodes["a"] = 97] = "a"; + CharacterCodes[CharacterCodes["b"] = 98] = "b"; + CharacterCodes[CharacterCodes["c"] = 99] = "c"; + CharacterCodes[CharacterCodes["d"] = 100] = "d"; + CharacterCodes[CharacterCodes["e"] = 101] = "e"; + CharacterCodes[CharacterCodes["f"] = 102] = "f"; + CharacterCodes[CharacterCodes["g"] = 103] = "g"; + CharacterCodes[CharacterCodes["h"] = 104] = "h"; + CharacterCodes[CharacterCodes["i"] = 105] = "i"; + CharacterCodes[CharacterCodes["j"] = 106] = "j"; + CharacterCodes[CharacterCodes["k"] = 107] = "k"; + CharacterCodes[CharacterCodes["l"] = 108] = "l"; + CharacterCodes[CharacterCodes["m"] = 109] = "m"; + CharacterCodes[CharacterCodes["n"] = 110] = "n"; + CharacterCodes[CharacterCodes["o"] = 111] = "o"; + CharacterCodes[CharacterCodes["p"] = 112] = "p"; + CharacterCodes[CharacterCodes["q"] = 113] = "q"; + CharacterCodes[CharacterCodes["r"] = 114] = "r"; + CharacterCodes[CharacterCodes["s"] = 115] = "s"; + CharacterCodes[CharacterCodes["t"] = 116] = "t"; + CharacterCodes[CharacterCodes["u"] = 117] = "u"; + CharacterCodes[CharacterCodes["v"] = 118] = "v"; + CharacterCodes[CharacterCodes["w"] = 119] = "w"; + CharacterCodes[CharacterCodes["x"] = 120] = "x"; + CharacterCodes[CharacterCodes["y"] = 121] = "y"; + CharacterCodes[CharacterCodes["z"] = 122] = "z"; + CharacterCodes[CharacterCodes["A"] = 65] = "A"; + CharacterCodes[CharacterCodes["B"] = 66] = "B"; + CharacterCodes[CharacterCodes["C"] = 67] = "C"; + CharacterCodes[CharacterCodes["D"] = 68] = "D"; + CharacterCodes[CharacterCodes["E"] = 69] = "E"; + CharacterCodes[CharacterCodes["F"] = 70] = "F"; + CharacterCodes[CharacterCodes["G"] = 71] = "G"; + CharacterCodes[CharacterCodes["H"] = 72] = "H"; + CharacterCodes[CharacterCodes["I"] = 73] = "I"; + CharacterCodes[CharacterCodes["J"] = 74] = "J"; + CharacterCodes[CharacterCodes["K"] = 75] = "K"; + CharacterCodes[CharacterCodes["L"] = 76] = "L"; + CharacterCodes[CharacterCodes["M"] = 77] = "M"; + CharacterCodes[CharacterCodes["N"] = 78] = "N"; + CharacterCodes[CharacterCodes["O"] = 79] = "O"; + CharacterCodes[CharacterCodes["P"] = 80] = "P"; + CharacterCodes[CharacterCodes["Q"] = 81] = "Q"; + CharacterCodes[CharacterCodes["R"] = 82] = "R"; + CharacterCodes[CharacterCodes["S"] = 83] = "S"; + CharacterCodes[CharacterCodes["T"] = 84] = "T"; + CharacterCodes[CharacterCodes["U"] = 85] = "U"; + CharacterCodes[CharacterCodes["V"] = 86] = "V"; + CharacterCodes[CharacterCodes["W"] = 87] = "W"; + CharacterCodes[CharacterCodes["X"] = 88] = "X"; + CharacterCodes[CharacterCodes["Y"] = 89] = "Y"; + CharacterCodes[CharacterCodes["Z"] = 90] = "Z"; + CharacterCodes[CharacterCodes["asterisk"] = 42] = "asterisk"; + CharacterCodes[CharacterCodes["backslash"] = 92] = "backslash"; + CharacterCodes[CharacterCodes["closeBrace"] = 125] = "closeBrace"; + CharacterCodes[CharacterCodes["closeBracket"] = 93] = "closeBracket"; + CharacterCodes[CharacterCodes["colon"] = 58] = "colon"; + CharacterCodes[CharacterCodes["comma"] = 44] = "comma"; + CharacterCodes[CharacterCodes["dot"] = 46] = "dot"; + CharacterCodes[CharacterCodes["doubleQuote"] = 34] = "doubleQuote"; + CharacterCodes[CharacterCodes["minus"] = 45] = "minus"; + CharacterCodes[CharacterCodes["openBrace"] = 123] = "openBrace"; + CharacterCodes[CharacterCodes["openBracket"] = 91] = "openBracket"; + CharacterCodes[CharacterCodes["plus"] = 43] = "plus"; + CharacterCodes[CharacterCodes["slash"] = 47] = "slash"; + CharacterCodes[CharacterCodes["formFeed"] = 12] = "formFeed"; + CharacterCodes[CharacterCodes["tab"] = 9] = "tab"; +})(CharacterCodes || (CharacterCodes = {})); + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +function format$2(documentText, range, options) { + let initialIndentLevel; + let formatText; + let formatTextStart; + let rangeStart; + let rangeEnd; + if (range) { + rangeStart = range.offset; + rangeEnd = rangeStart + range.length; + formatTextStart = rangeStart; + while (formatTextStart > 0 && !isEOL(documentText, formatTextStart - 1)) { + formatTextStart--; + } + let endOffset = rangeEnd; + while (endOffset < documentText.length && !isEOL(documentText, endOffset)) { + endOffset++; + } + formatText = documentText.substring(formatTextStart, endOffset); + initialIndentLevel = computeIndentLevel(formatText, options); + } + else { + formatText = documentText; + initialIndentLevel = 0; + formatTextStart = 0; + rangeStart = 0; + rangeEnd = documentText.length; + } + const eol = getEOL(options, documentText); + let numberLineBreaks = 0; + let indentLevel = 0; + let indentValue; + if (options.insertSpaces) { + indentValue = repeat(' ', options.tabSize || 4); + } + else { + indentValue = '\t'; + } + let scanner = createScanner$1(formatText, false); + let hasError = false; + function newLinesAndIndent() { + if (numberLineBreaks > 1) { + return repeat(eol, numberLineBreaks) + repeat(indentValue, initialIndentLevel + indentLevel); + } + else { + return eol + repeat(indentValue, initialIndentLevel + indentLevel); + } + } + function scanNext() { + let token = scanner.scan(); + numberLineBreaks = 0; + while (token === 15 /* SyntaxKind.Trivia */ || token === 14 /* SyntaxKind.LineBreakTrivia */) { + if (token === 14 /* SyntaxKind.LineBreakTrivia */ && options.keepLines) { + numberLineBreaks += 1; + } + else if (token === 14 /* SyntaxKind.LineBreakTrivia */) { + numberLineBreaks = 1; + } + token = scanner.scan(); + } + hasError = token === 16 /* SyntaxKind.Unknown */ || scanner.getTokenError() !== 0 /* ScanError.None */; + return token; + } + const editOperations = []; + function addEdit(text, startOffset, endOffset) { + if (!hasError && (!range || (startOffset < rangeEnd && endOffset > rangeStart)) && documentText.substring(startOffset, endOffset) !== text) { + editOperations.push({ offset: startOffset, length: endOffset - startOffset, content: text }); + } + } + let firstToken = scanNext(); + if (options.keepLines && numberLineBreaks > 0) { + addEdit(repeat(eol, numberLineBreaks), 0, 0); + } + if (firstToken !== 17 /* SyntaxKind.EOF */) { + let firstTokenStart = scanner.getTokenOffset() + formatTextStart; + let initialIndent = repeat(indentValue, initialIndentLevel); + addEdit(initialIndent, formatTextStart, firstTokenStart); + } + while (firstToken !== 17 /* SyntaxKind.EOF */) { + let firstTokenEnd = scanner.getTokenOffset() + scanner.getTokenLength() + formatTextStart; + let secondToken = scanNext(); + let replaceContent = ''; + let needsLineBreak = false; + while (numberLineBreaks === 0 && (secondToken === 12 /* SyntaxKind.LineCommentTrivia */ || secondToken === 13 /* SyntaxKind.BlockCommentTrivia */)) { + let commentTokenStart = scanner.getTokenOffset() + formatTextStart; + addEdit(' ', firstTokenEnd, commentTokenStart); + firstTokenEnd = scanner.getTokenOffset() + scanner.getTokenLength() + formatTextStart; + needsLineBreak = secondToken === 12 /* SyntaxKind.LineCommentTrivia */; + replaceContent = needsLineBreak ? newLinesAndIndent() : ''; + secondToken = scanNext(); + } + if (secondToken === 2 /* SyntaxKind.CloseBraceToken */) { + if (firstToken !== 1 /* SyntaxKind.OpenBraceToken */) { + indentLevel--; + } + if (options.keepLines && numberLineBreaks > 0 || !options.keepLines && firstToken !== 1 /* SyntaxKind.OpenBraceToken */) { + replaceContent = newLinesAndIndent(); + } + else if (options.keepLines) { + replaceContent = ' '; + } + } + else if (secondToken === 4 /* SyntaxKind.CloseBracketToken */) { + if (firstToken !== 3 /* SyntaxKind.OpenBracketToken */) { + indentLevel--; + } + if (options.keepLines && numberLineBreaks > 0 || !options.keepLines && firstToken !== 3 /* SyntaxKind.OpenBracketToken */) { + replaceContent = newLinesAndIndent(); + } + else if (options.keepLines) { + replaceContent = ' '; + } + } + else { + switch (firstToken) { + case 3 /* SyntaxKind.OpenBracketToken */: + case 1 /* SyntaxKind.OpenBraceToken */: + indentLevel++; + if (options.keepLines && numberLineBreaks > 0 || !options.keepLines) { + replaceContent = newLinesAndIndent(); + } + else { + replaceContent = ' '; + } + break; + case 5 /* SyntaxKind.CommaToken */: + if (options.keepLines && numberLineBreaks > 0 || !options.keepLines) { + replaceContent = newLinesAndIndent(); + } + else { + replaceContent = ' '; + } + break; + case 12 /* SyntaxKind.LineCommentTrivia */: + replaceContent = newLinesAndIndent(); + break; + case 13 /* SyntaxKind.BlockCommentTrivia */: + if (numberLineBreaks > 0) { + replaceContent = newLinesAndIndent(); + } + else if (!needsLineBreak) { + replaceContent = ' '; + } + break; + case 6 /* SyntaxKind.ColonToken */: + if (options.keepLines && numberLineBreaks > 0) { + replaceContent = newLinesAndIndent(); + } + else if (!needsLineBreak) { + replaceContent = ' '; + } + break; + case 10 /* SyntaxKind.StringLiteral */: + if (options.keepLines && numberLineBreaks > 0) { + replaceContent = newLinesAndIndent(); + } + else if (secondToken === 6 /* SyntaxKind.ColonToken */ && !needsLineBreak) { + replaceContent = ''; + } + break; + case 7 /* SyntaxKind.NullKeyword */: + case 8 /* SyntaxKind.TrueKeyword */: + case 9 /* SyntaxKind.FalseKeyword */: + case 11 /* SyntaxKind.NumericLiteral */: + case 2 /* SyntaxKind.CloseBraceToken */: + case 4 /* SyntaxKind.CloseBracketToken */: + if (options.keepLines && numberLineBreaks > 0) { + replaceContent = newLinesAndIndent(); + } + else { + if ((secondToken === 12 /* SyntaxKind.LineCommentTrivia */ || secondToken === 13 /* SyntaxKind.BlockCommentTrivia */) && !needsLineBreak) { + replaceContent = ' '; + } + else if (secondToken !== 5 /* SyntaxKind.CommaToken */ && secondToken !== 17 /* SyntaxKind.EOF */) { + hasError = true; + } + } + break; + case 16 /* SyntaxKind.Unknown */: + hasError = true; + break; + } + if (numberLineBreaks > 0 && (secondToken === 12 /* SyntaxKind.LineCommentTrivia */ || secondToken === 13 /* SyntaxKind.BlockCommentTrivia */)) { + replaceContent = newLinesAndIndent(); + } + } + if (secondToken === 17 /* SyntaxKind.EOF */) { + if (options.keepLines && numberLineBreaks > 0) { + replaceContent = newLinesAndIndent(); + } + else { + replaceContent = options.insertFinalNewline ? eol : ''; + } + } + const secondTokenStart = scanner.getTokenOffset() + formatTextStart; + addEdit(replaceContent, firstTokenEnd, secondTokenStart); + firstToken = secondToken; + } + return editOperations; +} +function repeat(s, count) { + let result = ''; + for (let i = 0; i < count; i++) { + result += s; + } + return result; +} +function computeIndentLevel(content, options) { + let i = 0; + let nChars = 0; + const tabSize = options.tabSize || 4; + while (i < content.length) { + let ch = content.charAt(i); + if (ch === ' ') { + nChars++; + } + else if (ch === '\t') { + nChars += tabSize; + } + else { + break; + } + i++; + } + return Math.floor(nChars / tabSize); +} +function getEOL(options, text) { + for (let i = 0; i < text.length; i++) { + const ch = text.charAt(i); + if (ch === '\r') { + if (i + 1 < text.length && text.charAt(i + 1) === '\n') { + return '\r\n'; + } + return '\r'; + } + else if (ch === '\n') { + return '\n'; + } + } + return (options && options.eol) || '\n'; +} +function isEOL(text, offset) { + return '\r\n'.indexOf(text.charAt(offset)) !== -1; +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +var ParseOptions; +(function (ParseOptions) { + ParseOptions.DEFAULT = { + allowTrailingComma: false + }; +})(ParseOptions || (ParseOptions = {})); +/** + * Parses the given text and returns the object the JSON content represents. On invalid input, the parser tries to be as fault tolerant as possible, but still return a result. + * Therefore always check the errors list to find out if the input was valid. + */ +function parse$9(text, errors = [], options = ParseOptions.DEFAULT) { + let currentProperty = null; + let currentParent = []; + const previousParents = []; + function onValue(value) { + if (Array.isArray(currentParent)) { + currentParent.push(value); + } + else if (currentProperty !== null) { + currentParent[currentProperty] = value; + } + } + const visitor = { + onObjectBegin: () => { + const object = {}; + onValue(object); + previousParents.push(currentParent); + currentParent = object; + currentProperty = null; + }, + onObjectProperty: (name) => { + currentProperty = name; + }, + onObjectEnd: () => { + currentParent = previousParents.pop(); + }, + onArrayBegin: () => { + const array = []; + onValue(array); + previousParents.push(currentParent); + currentParent = array; + currentProperty = null; + }, + onArrayEnd: () => { + currentParent = previousParents.pop(); + }, + onLiteralValue: onValue, + onError: (error, offset, length) => { + errors.push({ error, offset, length }); + } + }; + visit(text, visitor, options); + return currentParent[0]; +} +/** + * Gets the JSON path of the given JSON DOM node + */ +function getNodePath$2(node) { + if (!node.parent || !node.parent.children) { + return []; + } + const path = getNodePath$2(node.parent); + if (node.parent.type === 'property') { + const key = node.parent.children[0].value; + path.push(key); + } + else if (node.parent.type === 'array') { + const index = node.parent.children.indexOf(node); + if (index !== -1) { + path.push(index); + } + } + return path; +} +/** + * Evaluates the JavaScript object of the given JSON DOM node + */ +function getNodeValue$2(node) { + switch (node.type) { + case 'array': + return node.children.map(getNodeValue$2); + case 'object': + const obj = Object.create(null); + for (let prop of node.children) { + const valueNode = prop.children[1]; + if (valueNode) { + obj[prop.children[0].value] = getNodeValue$2(valueNode); + } + } + return obj; + case 'null': + case 'string': + case 'number': + case 'boolean': + return node.value; + default: + return undefined; + } +} +function contains$2(node, offset, includeRightBound = false) { + return (offset >= node.offset && offset < (node.offset + node.length)) || includeRightBound && (offset === (node.offset + node.length)); +} +/** + * Finds the most inner node at the given offset. If includeRightBound is set, also finds nodes that end at the given offset. + */ +function findNodeAtOffset$1(node, offset, includeRightBound = false) { + if (contains$2(node, offset, includeRightBound)) { + const children = node.children; + if (Array.isArray(children)) { + for (let i = 0; i < children.length && children[i].offset <= offset; i++) { + const item = findNodeAtOffset$1(children[i], offset, includeRightBound); + if (item) { + return item; + } + } + } + return node; + } + return undefined; +} +/** + * Parses the given text and invokes the visitor functions for each object, array and literal reached. + */ +function visit(text, visitor, options = ParseOptions.DEFAULT) { + const _scanner = createScanner$1(text, false); + // Important: Only pass copies of this to visitor functions to prevent accidental modification, and + // to not affect visitor functions which stored a reference to a previous JSONPath + const _jsonPath = []; + function toNoArgVisit(visitFunction) { + return visitFunction ? () => visitFunction(_scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter()) : () => true; + } + function toNoArgVisitWithPath(visitFunction) { + return visitFunction ? () => visitFunction(_scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter(), () => _jsonPath.slice()) : () => true; + } + function toOneArgVisit(visitFunction) { + return visitFunction ? (arg) => visitFunction(arg, _scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter()) : () => true; + } + function toOneArgVisitWithPath(visitFunction) { + return visitFunction ? (arg) => visitFunction(arg, _scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter(), () => _jsonPath.slice()) : () => true; + } + const onObjectBegin = toNoArgVisitWithPath(visitor.onObjectBegin), onObjectProperty = toOneArgVisitWithPath(visitor.onObjectProperty), onObjectEnd = toNoArgVisit(visitor.onObjectEnd), onArrayBegin = toNoArgVisitWithPath(visitor.onArrayBegin), onArrayEnd = toNoArgVisit(visitor.onArrayEnd), onLiteralValue = toOneArgVisitWithPath(visitor.onLiteralValue), onSeparator = toOneArgVisit(visitor.onSeparator), onComment = toNoArgVisit(visitor.onComment), onError = toOneArgVisit(visitor.onError); + const disallowComments = options && options.disallowComments; + const allowTrailingComma = options && options.allowTrailingComma; + function scanNext() { + while (true) { + const token = _scanner.scan(); + switch (_scanner.getTokenError()) { + case 4 /* ScanError.InvalidUnicode */: + handleError(14 /* ParseErrorCode.InvalidUnicode */); + break; + case 5 /* ScanError.InvalidEscapeCharacter */: + handleError(15 /* ParseErrorCode.InvalidEscapeCharacter */); + break; + case 3 /* ScanError.UnexpectedEndOfNumber */: + handleError(13 /* ParseErrorCode.UnexpectedEndOfNumber */); + break; + case 1 /* ScanError.UnexpectedEndOfComment */: + if (!disallowComments) { + handleError(11 /* ParseErrorCode.UnexpectedEndOfComment */); + } + break; + case 2 /* ScanError.UnexpectedEndOfString */: + handleError(12 /* ParseErrorCode.UnexpectedEndOfString */); + break; + case 6 /* ScanError.InvalidCharacter */: + handleError(16 /* ParseErrorCode.InvalidCharacter */); + break; + } + switch (token) { + case 12 /* SyntaxKind.LineCommentTrivia */: + case 13 /* SyntaxKind.BlockCommentTrivia */: + if (disallowComments) { + handleError(10 /* ParseErrorCode.InvalidCommentToken */); + } + else { + onComment(); + } + break; + case 16 /* SyntaxKind.Unknown */: + handleError(1 /* ParseErrorCode.InvalidSymbol */); + break; + case 15 /* SyntaxKind.Trivia */: + case 14 /* SyntaxKind.LineBreakTrivia */: + break; + default: + return token; + } + } + } + function handleError(error, skipUntilAfter = [], skipUntil = []) { + onError(error); + if (skipUntilAfter.length + skipUntil.length > 0) { + let token = _scanner.getToken(); + while (token !== 17 /* SyntaxKind.EOF */) { + if (skipUntilAfter.indexOf(token) !== -1) { + scanNext(); + break; + } + else if (skipUntil.indexOf(token) !== -1) { + break; + } + token = scanNext(); + } + } + } + function parseString(isValue) { + const value = _scanner.getTokenValue(); + if (isValue) { + onLiteralValue(value); + } + else { + onObjectProperty(value); + // add property name afterwards + _jsonPath.push(value); + } + scanNext(); + return true; + } + function parseLiteral() { + switch (_scanner.getToken()) { + case 11 /* SyntaxKind.NumericLiteral */: + const tokenValue = _scanner.getTokenValue(); + let value = Number(tokenValue); + if (isNaN(value)) { + handleError(2 /* ParseErrorCode.InvalidNumberFormat */); + value = 0; + } + onLiteralValue(value); + break; + case 7 /* SyntaxKind.NullKeyword */: + onLiteralValue(null); + break; + case 8 /* SyntaxKind.TrueKeyword */: + onLiteralValue(true); + break; + case 9 /* SyntaxKind.FalseKeyword */: + onLiteralValue(false); + break; + default: + return false; + } + scanNext(); + return true; + } + function parseProperty() { + if (_scanner.getToken() !== 10 /* SyntaxKind.StringLiteral */) { + handleError(3 /* ParseErrorCode.PropertyNameExpected */, [], [2 /* SyntaxKind.CloseBraceToken */, 5 /* SyntaxKind.CommaToken */]); + return false; + } + parseString(false); + if (_scanner.getToken() === 6 /* SyntaxKind.ColonToken */) { + onSeparator(':'); + scanNext(); // consume colon + if (!parseValue()) { + handleError(4 /* ParseErrorCode.ValueExpected */, [], [2 /* SyntaxKind.CloseBraceToken */, 5 /* SyntaxKind.CommaToken */]); + } + } + else { + handleError(5 /* ParseErrorCode.ColonExpected */, [], [2 /* SyntaxKind.CloseBraceToken */, 5 /* SyntaxKind.CommaToken */]); + } + _jsonPath.pop(); // remove processed property name + return true; + } + function parseObject() { + onObjectBegin(); + scanNext(); // consume open brace + let needsComma = false; + while (_scanner.getToken() !== 2 /* SyntaxKind.CloseBraceToken */ && _scanner.getToken() !== 17 /* SyntaxKind.EOF */) { + if (_scanner.getToken() === 5 /* SyntaxKind.CommaToken */) { + if (!needsComma) { + handleError(4 /* ParseErrorCode.ValueExpected */, [], []); + } + onSeparator(','); + scanNext(); // consume comma + if (_scanner.getToken() === 2 /* SyntaxKind.CloseBraceToken */ && allowTrailingComma) { + break; + } + } + else if (needsComma) { + handleError(6 /* ParseErrorCode.CommaExpected */, [], []); + } + if (!parseProperty()) { + handleError(4 /* ParseErrorCode.ValueExpected */, [], [2 /* SyntaxKind.CloseBraceToken */, 5 /* SyntaxKind.CommaToken */]); + } + needsComma = true; + } + onObjectEnd(); + if (_scanner.getToken() !== 2 /* SyntaxKind.CloseBraceToken */) { + handleError(7 /* ParseErrorCode.CloseBraceExpected */, [2 /* SyntaxKind.CloseBraceToken */], []); + } + else { + scanNext(); // consume close brace + } + return true; + } + function parseArray() { + onArrayBegin(); + scanNext(); // consume open bracket + let isFirstElement = true; + let needsComma = false; + while (_scanner.getToken() !== 4 /* SyntaxKind.CloseBracketToken */ && _scanner.getToken() !== 17 /* SyntaxKind.EOF */) { + if (_scanner.getToken() === 5 /* SyntaxKind.CommaToken */) { + if (!needsComma) { + handleError(4 /* ParseErrorCode.ValueExpected */, [], []); + } + onSeparator(','); + scanNext(); // consume comma + if (_scanner.getToken() === 4 /* SyntaxKind.CloseBracketToken */ && allowTrailingComma) { + break; + } + } + else if (needsComma) { + handleError(6 /* ParseErrorCode.CommaExpected */, [], []); + } + if (isFirstElement) { + _jsonPath.push(0); + isFirstElement = false; + } + else { + _jsonPath[_jsonPath.length - 1]++; + } + if (!parseValue()) { + handleError(4 /* ParseErrorCode.ValueExpected */, [], [4 /* SyntaxKind.CloseBracketToken */, 5 /* SyntaxKind.CommaToken */]); + } + needsComma = true; + } + onArrayEnd(); + if (!isFirstElement) { + _jsonPath.pop(); // remove array index + } + if (_scanner.getToken() !== 4 /* SyntaxKind.CloseBracketToken */) { + handleError(8 /* ParseErrorCode.CloseBracketExpected */, [4 /* SyntaxKind.CloseBracketToken */], []); + } + else { + scanNext(); // consume close bracket + } + return true; + } + function parseValue() { + switch (_scanner.getToken()) { + case 3 /* SyntaxKind.OpenBracketToken */: + return parseArray(); + case 1 /* SyntaxKind.OpenBraceToken */: + return parseObject(); + case 10 /* SyntaxKind.StringLiteral */: + return parseString(true); + default: + return parseLiteral(); + } + } + scanNext(); + if (_scanner.getToken() === 17 /* SyntaxKind.EOF */) { + if (options.allowEmptyContent) { + return true; + } + handleError(4 /* ParseErrorCode.ValueExpected */, [], []); + return false; + } + if (!parseValue()) { + handleError(4 /* ParseErrorCode.ValueExpected */, [], []); + return false; + } + if (_scanner.getToken() !== 17 /* SyntaxKind.EOF */) { + handleError(9 /* ParseErrorCode.EndOfFileExpected */, [], []); + } + return true; +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +/** + * Creates a JSON scanner on the given text. + * If ignoreTrivia is set, whitespaces or comments are ignored. + */ +const createScanner = createScanner$1; +var ScanError; +(function (ScanError) { + ScanError[ScanError["None"] = 0] = "None"; + ScanError[ScanError["UnexpectedEndOfComment"] = 1] = "UnexpectedEndOfComment"; + ScanError[ScanError["UnexpectedEndOfString"] = 2] = "UnexpectedEndOfString"; + ScanError[ScanError["UnexpectedEndOfNumber"] = 3] = "UnexpectedEndOfNumber"; + ScanError[ScanError["InvalidUnicode"] = 4] = "InvalidUnicode"; + ScanError[ScanError["InvalidEscapeCharacter"] = 5] = "InvalidEscapeCharacter"; + ScanError[ScanError["InvalidCharacter"] = 6] = "InvalidCharacter"; +})(ScanError || (ScanError = {})); +var SyntaxKind; +(function (SyntaxKind) { + SyntaxKind[SyntaxKind["OpenBraceToken"] = 1] = "OpenBraceToken"; + SyntaxKind[SyntaxKind["CloseBraceToken"] = 2] = "CloseBraceToken"; + SyntaxKind[SyntaxKind["OpenBracketToken"] = 3] = "OpenBracketToken"; + SyntaxKind[SyntaxKind["CloseBracketToken"] = 4] = "CloseBracketToken"; + SyntaxKind[SyntaxKind["CommaToken"] = 5] = "CommaToken"; + SyntaxKind[SyntaxKind["ColonToken"] = 6] = "ColonToken"; + SyntaxKind[SyntaxKind["NullKeyword"] = 7] = "NullKeyword"; + SyntaxKind[SyntaxKind["TrueKeyword"] = 8] = "TrueKeyword"; + SyntaxKind[SyntaxKind["FalseKeyword"] = 9] = "FalseKeyword"; + SyntaxKind[SyntaxKind["StringLiteral"] = 10] = "StringLiteral"; + SyntaxKind[SyntaxKind["NumericLiteral"] = 11] = "NumericLiteral"; + SyntaxKind[SyntaxKind["LineCommentTrivia"] = 12] = "LineCommentTrivia"; + SyntaxKind[SyntaxKind["BlockCommentTrivia"] = 13] = "BlockCommentTrivia"; + SyntaxKind[SyntaxKind["LineBreakTrivia"] = 14] = "LineBreakTrivia"; + SyntaxKind[SyntaxKind["Trivia"] = 15] = "Trivia"; + SyntaxKind[SyntaxKind["Unknown"] = 16] = "Unknown"; + SyntaxKind[SyntaxKind["EOF"] = 17] = "EOF"; +})(SyntaxKind || (SyntaxKind = {})); +/** + * Parses the given text and returns the object the JSON content represents. On invalid input, the parser tries to be as fault tolerant as possible, but still return a result. + * Therefore, always check the errors list to find out if the input was valid. + */ +const parse$8 = parse$9; +/** + * Finds the innermost node at the given offset. If includeRightBound is set, also finds nodes that end at the given offset. + */ +const findNodeAtOffset = findNodeAtOffset$1; +/** + * Gets the JSON path of the given JSON DOM node + */ +const getNodePath$1 = getNodePath$2; +/** + * Evaluates the JavaScript object of the given JSON DOM node + */ +const getNodeValue$1 = getNodeValue$2; +var ParseErrorCode; +(function (ParseErrorCode) { + ParseErrorCode[ParseErrorCode["InvalidSymbol"] = 1] = "InvalidSymbol"; + ParseErrorCode[ParseErrorCode["InvalidNumberFormat"] = 2] = "InvalidNumberFormat"; + ParseErrorCode[ParseErrorCode["PropertyNameExpected"] = 3] = "PropertyNameExpected"; + ParseErrorCode[ParseErrorCode["ValueExpected"] = 4] = "ValueExpected"; + ParseErrorCode[ParseErrorCode["ColonExpected"] = 5] = "ColonExpected"; + ParseErrorCode[ParseErrorCode["CommaExpected"] = 6] = "CommaExpected"; + ParseErrorCode[ParseErrorCode["CloseBraceExpected"] = 7] = "CloseBraceExpected"; + ParseErrorCode[ParseErrorCode["CloseBracketExpected"] = 8] = "CloseBracketExpected"; + ParseErrorCode[ParseErrorCode["EndOfFileExpected"] = 9] = "EndOfFileExpected"; + ParseErrorCode[ParseErrorCode["InvalidCommentToken"] = 10] = "InvalidCommentToken"; + ParseErrorCode[ParseErrorCode["UnexpectedEndOfComment"] = 11] = "UnexpectedEndOfComment"; + ParseErrorCode[ParseErrorCode["UnexpectedEndOfString"] = 12] = "UnexpectedEndOfString"; + ParseErrorCode[ParseErrorCode["UnexpectedEndOfNumber"] = 13] = "UnexpectedEndOfNumber"; + ParseErrorCode[ParseErrorCode["InvalidUnicode"] = 14] = "InvalidUnicode"; + ParseErrorCode[ParseErrorCode["InvalidEscapeCharacter"] = 15] = "InvalidEscapeCharacter"; + ParseErrorCode[ParseErrorCode["InvalidCharacter"] = 16] = "InvalidCharacter"; +})(ParseErrorCode || (ParseErrorCode = {})); +/** + * Computes the edit operations needed to format a JSON document. + * + * @param documentText The input text + * @param range The range to format or `undefined` to format the full content + * @param options The formatting options + * @returns The edit operations describing the formatting changes to the original document following the format described in {@linkcode EditResult}. + * To apply the edit operations to the input, use {@linkcode applyEdits}. + */ +function format$1(documentText, range, options) { + return format$2(documentText, range, options); +} + +/*--------------------------------------------------------------------------------------------- +* Copyright (c) Microsoft Corporation. All rights reserved. +* Licensed under the MIT License. See License.txt in the project root for license information. +*--------------------------------------------------------------------------------------------*/ +function equals(one, other) { + if (one === other) { + return true; + } + if (one === null || one === undefined || other === null || other === undefined) { + return false; + } + if (typeof one !== typeof other) { + return false; + } + if (typeof one !== 'object') { + return false; + } + if ((Array.isArray(one)) !== (Array.isArray(other))) { + return false; + } + let i, key; + if (Array.isArray(one)) { + if (one.length !== other.length) { + return false; + } + for (i = 0; i < one.length; i++) { + if (!equals(one[i], other[i])) { + return false; + } + } + } + else { + const oneKeys = []; + for (key in one) { + oneKeys.push(key); + } + oneKeys.sort(); + const otherKeys = []; + for (key in other) { + otherKeys.push(key); + } + otherKeys.sort(); + if (!equals(oneKeys, otherKeys)) { + return false; + } + for (i = 0; i < oneKeys.length; i++) { + if (!equals(one[oneKeys[i]], other[oneKeys[i]])) { + return false; + } + } + } + return true; +} +function isNumber(val) { + return typeof val === 'number'; +} +function isDefined(val) { + return typeof val !== 'undefined'; +} +function isBoolean(val) { + return typeof val === 'boolean'; +} +function isString(val) { + return typeof val === 'string'; +} +function isObject(val) { + return typeof val === 'object' && val !== null && !Array.isArray(val); +} + +/*--------------------------------------------------------------------------------------------- +* Copyright (c) Microsoft Corporation. All rights reserved. +* Licensed under the MIT License. See License.txt in the project root for license information. +*--------------------------------------------------------------------------------------------*/ +function startsWith$1(haystack, needle) { + if (haystack.length < needle.length) { + return false; + } + for (let i = 0; i < needle.length; i++) { + if (haystack[i] !== needle[i]) { + return false; + } + } + return true; +} +/** + * Determines if haystack ends with needle. + */ +function endsWith$1(haystack, needle) { + const diff = haystack.length - needle.length; + if (diff > 0) { + return haystack.lastIndexOf(needle) === diff; + } + else if (diff === 0) { + return haystack === needle; + } + else { + return false; + } +} +function extendedRegExp(pattern) { + let flags = ''; + if (startsWith$1(pattern, '(?i)')) { + pattern = pattern.substring(4); + flags = 'i'; + } + try { + return new RegExp(pattern, flags + 'u'); + } + catch (e) { + // could be an exception due to the 'u ' flag + try { + return new RegExp(pattern, flags); + } + catch (e) { + // invalid pattern + return undefined; + } + } +} +// from https://tanishiking.github.io/posts/count-unicode-codepoint/#work-hard-with-for-statements +function stringLength(str) { + let count = 0; + for (let i = 0; i < str.length; i++) { + count++; + // obtain the i-th 16-bit + const code = str.charCodeAt(i); + if (0xD800 <= code && code <= 0xDBFF) { + // if the i-th 16bit is an upper surrogate + // skip the next 16 bits (lower surrogate) + i++; + } + } + return count; +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +/** + * Error codes used by diagnostics + */ +var ErrorCode; +(function (ErrorCode) { + ErrorCode[ErrorCode["Undefined"] = 0] = "Undefined"; + ErrorCode[ErrorCode["EnumValueMismatch"] = 1] = "EnumValueMismatch"; + ErrorCode[ErrorCode["Deprecated"] = 2] = "Deprecated"; + ErrorCode[ErrorCode["UnexpectedEndOfComment"] = 257] = "UnexpectedEndOfComment"; + ErrorCode[ErrorCode["UnexpectedEndOfString"] = 258] = "UnexpectedEndOfString"; + ErrorCode[ErrorCode["UnexpectedEndOfNumber"] = 259] = "UnexpectedEndOfNumber"; + ErrorCode[ErrorCode["InvalidUnicode"] = 260] = "InvalidUnicode"; + ErrorCode[ErrorCode["InvalidEscapeCharacter"] = 261] = "InvalidEscapeCharacter"; + ErrorCode[ErrorCode["InvalidCharacter"] = 262] = "InvalidCharacter"; + ErrorCode[ErrorCode["PropertyExpected"] = 513] = "PropertyExpected"; + ErrorCode[ErrorCode["CommaExpected"] = 514] = "CommaExpected"; + ErrorCode[ErrorCode["ColonExpected"] = 515] = "ColonExpected"; + ErrorCode[ErrorCode["ValueExpected"] = 516] = "ValueExpected"; + ErrorCode[ErrorCode["CommaOrCloseBacketExpected"] = 517] = "CommaOrCloseBacketExpected"; + ErrorCode[ErrorCode["CommaOrCloseBraceExpected"] = 518] = "CommaOrCloseBraceExpected"; + ErrorCode[ErrorCode["TrailingComma"] = 519] = "TrailingComma"; + ErrorCode[ErrorCode["DuplicateKey"] = 520] = "DuplicateKey"; + ErrorCode[ErrorCode["CommentNotPermitted"] = 521] = "CommentNotPermitted"; + ErrorCode[ErrorCode["PropertyKeysMustBeDoublequoted"] = 528] = "PropertyKeysMustBeDoublequoted"; + ErrorCode[ErrorCode["SchemaResolveError"] = 768] = "SchemaResolveError"; + ErrorCode[ErrorCode["SchemaUnsupportedFeature"] = 769] = "SchemaUnsupportedFeature"; +})(ErrorCode || (ErrorCode = {})); +var SchemaDraft; +(function (SchemaDraft) { + SchemaDraft[SchemaDraft["v3"] = 3] = "v3"; + SchemaDraft[SchemaDraft["v4"] = 4] = "v4"; + SchemaDraft[SchemaDraft["v6"] = 6] = "v6"; + SchemaDraft[SchemaDraft["v7"] = 7] = "v7"; + SchemaDraft[SchemaDraft["v2019_09"] = 19] = "v2019_09"; + SchemaDraft[SchemaDraft["v2020_12"] = 20] = "v2020_12"; +})(SchemaDraft || (SchemaDraft = {})); +var ClientCapabilities; +(function (ClientCapabilities) { + ClientCapabilities.LATEST = { + textDocument: { + completion: { + completionItem: { + documentationFormat: [MarkupKind.Markdown, MarkupKind.PlainText], + commitCharactersSupport: true, + labelDetailsSupport: true + } + } + } + }; +})(ClientCapabilities || (ClientCapabilities = {})); + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +const formats = { + 'color-hex': { errorMessage: t$2('Invalid color format. Use #RGB, #RGBA, #RRGGBB or #RRGGBBAA.'), pattern: /^#([0-9A-Fa-f]{3,4}|([0-9A-Fa-f]{2}){3,4})$/ }, + 'date-time': { errorMessage: t$2('String is not a RFC3339 date-time.'), pattern: /^(\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9]|60)(\.[0-9]+)?(Z|(\+|-)([01][0-9]|2[0-3]):([0-5][0-9]))$/i }, + 'date': { errorMessage: t$2('String is not a RFC3339 date.'), pattern: /^(\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$/i }, + 'time': { errorMessage: t$2('String is not a RFC3339 time.'), pattern: /^([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9]|60)(\.[0-9]+)?(Z|(\+|-)([01][0-9]|2[0-3]):([0-5][0-9]))$/i }, + 'email': { errorMessage: t$2('String is not an e-mail address.'), pattern: /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,}))$/ }, + 'hostname': { errorMessage: t$2('String is not a hostname.'), pattern: /^(?=.{1,253}\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\.?$/i }, + 'ipv4': { errorMessage: t$2('String is not an IPv4 address.'), pattern: /^(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)$/ }, + 'ipv6': { errorMessage: t$2('String is not an IPv6 address.'), pattern: /^((([0-9a-f]{1,4}:){7}([0-9a-f]{1,4}|:))|(([0-9a-f]{1,4}:){6}(:[0-9a-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){5}(((:[0-9a-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){4}(((:[0-9a-f]{1,4}){1,3})|((:[0-9a-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){3}(((:[0-9a-f]{1,4}){1,4})|((:[0-9a-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){2}(((:[0-9a-f]{1,4}){1,5})|((:[0-9a-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){1}(((:[0-9a-f]{1,4}){1,6})|((:[0-9a-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9a-f]{1,4}){1,7})|((:[0-9a-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))$/i }, +}; +class ASTNodeImpl { + constructor(parent, offset, length = 0) { + this.offset = offset; + this.length = length; + this.parent = parent; + } + get children() { + return []; + } + toString() { + return 'type: ' + this.type + ' (' + this.offset + '/' + this.length + ')' + (this.parent ? ' parent: {' + this.parent.toString() + '}' : ''); + } +} +class NullASTNodeImpl extends ASTNodeImpl { + constructor(parent, offset) { + super(parent, offset); + this.type = 'null'; + this.value = null; + } +} +class BooleanASTNodeImpl extends ASTNodeImpl { + constructor(parent, boolValue, offset) { + super(parent, offset); + this.type = 'boolean'; + this.value = boolValue; + } +} +class ArrayASTNodeImpl extends ASTNodeImpl { + constructor(parent, offset) { + super(parent, offset); + this.type = 'array'; + this.items = []; + } + get children() { + return this.items; + } +} +class NumberASTNodeImpl extends ASTNodeImpl { + constructor(parent, offset) { + super(parent, offset); + this.type = 'number'; + this.isInteger = true; + this.value = Number.NaN; + } +} +class StringASTNodeImpl extends ASTNodeImpl { + constructor(parent, offset, length) { + super(parent, offset, length); + this.type = 'string'; + this.value = ''; + } +} +class PropertyASTNodeImpl extends ASTNodeImpl { + constructor(parent, offset, keyNode) { + super(parent, offset); + this.type = 'property'; + this.colonOffset = -1; + this.keyNode = keyNode; + } + get children() { + return this.valueNode ? [this.keyNode, this.valueNode] : [this.keyNode]; + } +} +class ObjectASTNodeImpl extends ASTNodeImpl { + constructor(parent, offset) { + super(parent, offset); + this.type = 'object'; + this.properties = []; + } + get children() { + return this.properties; + } +} +function asSchema(schema) { + if (isBoolean(schema)) { + return schema ? {} : { "not": {} }; + } + return schema; +} +var EnumMatch; +(function (EnumMatch) { + EnumMatch[EnumMatch["Key"] = 0] = "Key"; + EnumMatch[EnumMatch["Enum"] = 1] = "Enum"; +})(EnumMatch || (EnumMatch = {})); +const schemaDraftFromId = { + 'http://json-schema.org/draft-03/schema#': SchemaDraft.v3, + 'http://json-schema.org/draft-04/schema#': SchemaDraft.v4, + 'http://json-schema.org/draft-06/schema#': SchemaDraft.v6, + 'http://json-schema.org/draft-07/schema#': SchemaDraft.v7, + 'https://json-schema.org/draft/2019-09/schema': SchemaDraft.v2019_09, + 'https://json-schema.org/draft/2020-12/schema': SchemaDraft.v2020_12 +}; +class EvaluationContext { + constructor(schemaDraft) { + this.schemaDraft = schemaDraft; + } +} +class SchemaCollector { + constructor(focusOffset = -1, exclude) { + this.focusOffset = focusOffset; + this.exclude = exclude; + this.schemas = []; + } + add(schema) { + this.schemas.push(schema); + } + merge(other) { + Array.prototype.push.apply(this.schemas, other.schemas); + } + include(node) { + return (this.focusOffset === -1 || contains$1(node, this.focusOffset)) && (node !== this.exclude); + } + newSub() { + return new SchemaCollector(-1, this.exclude); + } +} +class NoOpSchemaCollector { + constructor() { } + get schemas() { return []; } + add(_schema) { } + merge(_other) { } + include(_node) { return true; } + newSub() { return this; } +} +NoOpSchemaCollector.instance = new NoOpSchemaCollector(); +class ValidationResult { + constructor() { + this.problems = []; + this.propertiesMatches = 0; + this.processedProperties = new Set(); + this.propertiesValueMatches = 0; + this.primaryValueMatches = 0; + this.enumValueMatch = false; + this.enumValues = undefined; + } + hasProblems() { + return !!this.problems.length; + } + merge(validationResult) { + this.problems = this.problems.concat(validationResult.problems); + this.propertiesMatches += validationResult.propertiesMatches; + this.propertiesValueMatches += validationResult.propertiesValueMatches; + this.mergeProcessedProperties(validationResult); + } + mergeEnumValues(validationResult) { + if (!this.enumValueMatch && !validationResult.enumValueMatch && this.enumValues && validationResult.enumValues) { + this.enumValues = this.enumValues.concat(validationResult.enumValues); + for (const error of this.problems) { + if (error.code === ErrorCode.EnumValueMismatch) { + error.message = t$2('Value is not accepted. Valid values: {0}.', this.enumValues.map(v => JSON.stringify(v)).join(', ')); + } + } + } + } + mergePropertyMatch(propertyValidationResult) { + this.problems = this.problems.concat(propertyValidationResult.problems); + this.propertiesMatches++; + if (propertyValidationResult.enumValueMatch || !propertyValidationResult.hasProblems() && propertyValidationResult.propertiesMatches) { + this.propertiesValueMatches++; + } + if (propertyValidationResult.enumValueMatch && propertyValidationResult.enumValues && propertyValidationResult.enumValues.length === 1) { + this.primaryValueMatches++; + } + } + mergeProcessedProperties(validationResult) { + validationResult.processedProperties.forEach(p => this.processedProperties.add(p)); + } + compare(other) { + const hasProblems = this.hasProblems(); + if (hasProblems !== other.hasProblems()) { + return hasProblems ? -1 : 1; + } + if (this.enumValueMatch !== other.enumValueMatch) { + return other.enumValueMatch ? -1 : 1; + } + if (this.primaryValueMatches !== other.primaryValueMatches) { + return this.primaryValueMatches - other.primaryValueMatches; + } + if (this.propertiesValueMatches !== other.propertiesValueMatches) { + return this.propertiesValueMatches - other.propertiesValueMatches; + } + return this.propertiesMatches - other.propertiesMatches; + } +} +function newJSONDocument(root, diagnostics = []) { + return new JSONDocument(root, diagnostics, []); +} +function getNodeValue(node) { + return getNodeValue$1(node); +} +function getNodePath(node) { + return getNodePath$1(node); +} +function contains$1(node, offset, includeRightBound = false) { + return offset >= node.offset && offset < (node.offset + node.length) || includeRightBound && offset === (node.offset + node.length); +} +class JSONDocument { + constructor(root, syntaxErrors = [], comments = []) { + this.root = root; + this.syntaxErrors = syntaxErrors; + this.comments = comments; + } + getNodeFromOffset(offset, includeRightBound = false) { + if (this.root) { + return findNodeAtOffset(this.root, offset, includeRightBound); + } + return undefined; + } + visit(visitor) { + if (this.root) { + const doVisit = (node) => { + let ctn = visitor(node); + const children = node.children; + if (Array.isArray(children)) { + for (let i = 0; i < children.length && ctn; i++) { + ctn = doVisit(children[i]); + } + } + return ctn; + }; + doVisit(this.root); + } + } + validate(textDocument, schema, severity = DiagnosticSeverity.Warning, schemaDraft) { + if (this.root && schema) { + const validationResult = new ValidationResult(); + validate(this.root, schema, validationResult, NoOpSchemaCollector.instance, new EvaluationContext(schemaDraft ?? getSchemaDraft(schema))); + return validationResult.problems.map(p => { + const range = Range$a.create(textDocument.positionAt(p.location.offset), textDocument.positionAt(p.location.offset + p.location.length)); + return Diagnostic.create(range, p.message, p.severity ?? severity, p.code); + }); + } + return undefined; + } + getMatchingSchemas(schema, focusOffset = -1, exclude) { + if (this.root && schema) { + const matchingSchemas = new SchemaCollector(focusOffset, exclude); + const schemaDraft = getSchemaDraft(schema); + const context = new EvaluationContext(schemaDraft); + validate(this.root, schema, new ValidationResult(), matchingSchemas, context); + return matchingSchemas.schemas; + } + return []; + } +} +function getSchemaDraft(schema, fallBack = SchemaDraft.v2020_12) { + let schemaId = schema.$schema; + if (schemaId) { + return schemaDraftFromId[schemaId] ?? fallBack; + } + return fallBack; +} +function validate(n, schema, validationResult, matchingSchemas, context) { + if (!n || !matchingSchemas.include(n)) { + return; + } + if (n.type === 'property') { + return validate(n.valueNode, schema, validationResult, matchingSchemas, context); + } + const node = n; + _validateNode(); + switch (node.type) { + case 'object': + _validateObjectNode(node); + break; + case 'array': + _validateArrayNode(node); + break; + case 'string': + _validateStringNode(node); + break; + case 'number': + _validateNumberNode(node); + break; + } + matchingSchemas.add({ node: node, schema: schema }); + function _validateNode() { + function matchesType(type) { + return node.type === type || (type === 'integer' && node.type === 'number' && node.isInteger); + } + if (Array.isArray(schema.type)) { + if (!schema.type.some(matchesType)) { + validationResult.problems.push({ + location: { offset: node.offset, length: node.length }, + message: schema.errorMessage || t$2('Incorrect type. Expected one of {0}.', schema.type.join(', ')) + }); + } + } + else if (schema.type) { + if (!matchesType(schema.type)) { + validationResult.problems.push({ + location: { offset: node.offset, length: node.length }, + message: schema.errorMessage || t$2('Incorrect type. Expected "{0}".', schema.type) + }); + } + } + if (Array.isArray(schema.allOf)) { + for (const subSchemaRef of schema.allOf) { + const subValidationResult = new ValidationResult(); + const subMatchingSchemas = matchingSchemas.newSub(); + validate(node, asSchema(subSchemaRef), subValidationResult, subMatchingSchemas, context); + validationResult.merge(subValidationResult); + matchingSchemas.merge(subMatchingSchemas); + } + } + const notSchema = asSchema(schema.not); + if (notSchema) { + const subValidationResult = new ValidationResult(); + const subMatchingSchemas = matchingSchemas.newSub(); + validate(node, notSchema, subValidationResult, subMatchingSchemas, context); + if (!subValidationResult.hasProblems()) { + validationResult.problems.push({ + location: { offset: node.offset, length: node.length }, + message: schema.errorMessage || t$2("Matches a schema that is not allowed.") + }); + } + for (const ms of subMatchingSchemas.schemas) { + ms.inverted = !ms.inverted; + matchingSchemas.add(ms); + } + } + const testAlternatives = (alternatives, maxOneMatch) => { + const matches = []; + // remember the best match that is used for error messages + let bestMatch = undefined; + for (const subSchemaRef of alternatives) { + const subSchema = asSchema(subSchemaRef); + const subValidationResult = new ValidationResult(); + const subMatchingSchemas = matchingSchemas.newSub(); + validate(node, subSchema, subValidationResult, subMatchingSchemas, context); + if (!subValidationResult.hasProblems()) { + matches.push(subSchema); + } + if (!bestMatch) { + bestMatch = { schema: subSchema, validationResult: subValidationResult, matchingSchemas: subMatchingSchemas }; + } + else { + if (!maxOneMatch && !subValidationResult.hasProblems() && !bestMatch.validationResult.hasProblems()) { + // no errors, both are equally good matches + bestMatch.matchingSchemas.merge(subMatchingSchemas); + bestMatch.validationResult.propertiesMatches += subValidationResult.propertiesMatches; + bestMatch.validationResult.propertiesValueMatches += subValidationResult.propertiesValueMatches; + bestMatch.validationResult.mergeProcessedProperties(subValidationResult); + } + else { + const compareResult = subValidationResult.compare(bestMatch.validationResult); + if (compareResult > 0) { + // our node is the best matching so far + bestMatch = { schema: subSchema, validationResult: subValidationResult, matchingSchemas: subMatchingSchemas }; + } + else if (compareResult === 0) { + // there's already a best matching but we are as good + bestMatch.matchingSchemas.merge(subMatchingSchemas); + bestMatch.validationResult.mergeEnumValues(subValidationResult); + } + } + } + } + if (matches.length > 1 && maxOneMatch) { + validationResult.problems.push({ + location: { offset: node.offset, length: 1 }, + message: t$2("Matches multiple schemas when only one must validate.") + }); + } + if (bestMatch) { + validationResult.merge(bestMatch.validationResult); + matchingSchemas.merge(bestMatch.matchingSchemas); + } + return matches.length; + }; + if (Array.isArray(schema.anyOf)) { + testAlternatives(schema.anyOf, false); + } + if (Array.isArray(schema.oneOf)) { + testAlternatives(schema.oneOf, true); + } + const testBranch = (schema) => { + const subValidationResult = new ValidationResult(); + const subMatchingSchemas = matchingSchemas.newSub(); + validate(node, asSchema(schema), subValidationResult, subMatchingSchemas, context); + validationResult.merge(subValidationResult); + matchingSchemas.merge(subMatchingSchemas); + }; + const testCondition = (ifSchema, thenSchema, elseSchema) => { + const subSchema = asSchema(ifSchema); + const subValidationResult = new ValidationResult(); + const subMatchingSchemas = matchingSchemas.newSub(); + validate(node, subSchema, subValidationResult, subMatchingSchemas, context); + matchingSchemas.merge(subMatchingSchemas); + validationResult.mergeProcessedProperties(subValidationResult); + if (!subValidationResult.hasProblems()) { + if (thenSchema) { + testBranch(thenSchema); + } + } + else if (elseSchema) { + testBranch(elseSchema); + } + }; + const ifSchema = asSchema(schema.if); + if (ifSchema) { + testCondition(ifSchema, asSchema(schema.then), asSchema(schema.else)); + } + if (Array.isArray(schema.enum)) { + const val = getNodeValue(node); + let enumValueMatch = false; + for (const e of schema.enum) { + if (equals(val, e)) { + enumValueMatch = true; + break; + } + } + validationResult.enumValues = schema.enum; + validationResult.enumValueMatch = enumValueMatch; + if (!enumValueMatch) { + validationResult.problems.push({ + location: { offset: node.offset, length: node.length }, + code: ErrorCode.EnumValueMismatch, + message: schema.errorMessage || t$2('Value is not accepted. Valid values: {0}.', schema.enum.map(v => JSON.stringify(v)).join(', ')) + }); + } + } + if (isDefined(schema.const)) { + const val = getNodeValue(node); + if (!equals(val, schema.const)) { + validationResult.problems.push({ + location: { offset: node.offset, length: node.length }, + code: ErrorCode.EnumValueMismatch, + message: schema.errorMessage || t$2('Value must be {0}.', JSON.stringify(schema.const)) + }); + validationResult.enumValueMatch = false; + } + else { + validationResult.enumValueMatch = true; + } + validationResult.enumValues = [schema.const]; + } + let deprecationMessage = schema.deprecationMessage; + if ((deprecationMessage || schema.deprecated) && node.parent) { + deprecationMessage = deprecationMessage || t$2('Value is deprecated'); + validationResult.problems.push({ + location: { offset: node.parent.offset, length: node.parent.length }, + severity: DiagnosticSeverity.Warning, + message: deprecationMessage, + code: ErrorCode.Deprecated + }); + } + } + function _validateNumberNode(node) { + const val = node.value; + function normalizeFloats(float) { + const parts = /^(-?\d+)(?:\.(\d+))?(?:e([-+]\d+))?$/.exec(float.toString()); + return parts && { + value: Number(parts[1] + (parts[2] || '')), + multiplier: (parts[2]?.length || 0) - (parseInt(parts[3]) || 0) + }; + } + if (isNumber(schema.multipleOf)) { + let remainder = -1; + if (Number.isInteger(schema.multipleOf)) { + remainder = val % schema.multipleOf; + } + else { + let normMultipleOf = normalizeFloats(schema.multipleOf); + let normValue = normalizeFloats(val); + if (normMultipleOf && normValue) { + const multiplier = 10 ** Math.abs(normValue.multiplier - normMultipleOf.multiplier); + if (normValue.multiplier < normMultipleOf.multiplier) { + normValue.value *= multiplier; + } + else { + normMultipleOf.value *= multiplier; + } + remainder = normValue.value % normMultipleOf.value; + } + } + if (remainder !== 0) { + validationResult.problems.push({ + location: { offset: node.offset, length: node.length }, + message: t$2('Value is not divisible by {0}.', schema.multipleOf) + }); + } + } + function getExclusiveLimit(limit, exclusive) { + if (isNumber(exclusive)) { + return exclusive; + } + if (isBoolean(exclusive) && exclusive) { + return limit; + } + return undefined; + } + function getLimit(limit, exclusive) { + if (!isBoolean(exclusive) || !exclusive) { + return limit; + } + return undefined; + } + const exclusiveMinimum = getExclusiveLimit(schema.minimum, schema.exclusiveMinimum); + if (isNumber(exclusiveMinimum) && val <= exclusiveMinimum) { + validationResult.problems.push({ + location: { offset: node.offset, length: node.length }, + message: t$2('Value is below the exclusive minimum of {0}.', exclusiveMinimum) + }); + } + const exclusiveMaximum = getExclusiveLimit(schema.maximum, schema.exclusiveMaximum); + if (isNumber(exclusiveMaximum) && val >= exclusiveMaximum) { + validationResult.problems.push({ + location: { offset: node.offset, length: node.length }, + message: t$2('Value is above the exclusive maximum of {0}.', exclusiveMaximum) + }); + } + const minimum = getLimit(schema.minimum, schema.exclusiveMinimum); + if (isNumber(minimum) && val < minimum) { + validationResult.problems.push({ + location: { offset: node.offset, length: node.length }, + message: t$2('Value is below the minimum of {0}.', minimum) + }); + } + const maximum = getLimit(schema.maximum, schema.exclusiveMaximum); + if (isNumber(maximum) && val > maximum) { + validationResult.problems.push({ + location: { offset: node.offset, length: node.length }, + message: t$2('Value is above the maximum of {0}.', maximum) + }); + } + } + function _validateStringNode(node) { + if (isNumber(schema.minLength) && stringLength(node.value) < schema.minLength) { + validationResult.problems.push({ + location: { offset: node.offset, length: node.length }, + message: t$2('String is shorter than the minimum length of {0}.', schema.minLength) + }); + } + if (isNumber(schema.maxLength) && stringLength(node.value) > schema.maxLength) { + validationResult.problems.push({ + location: { offset: node.offset, length: node.length }, + message: t$2('String is longer than the maximum length of {0}.', schema.maxLength) + }); + } + if (isString(schema.pattern)) { + const regex = extendedRegExp(schema.pattern); + if (!(regex?.test(node.value))) { + validationResult.problems.push({ + location: { offset: node.offset, length: node.length }, + message: schema.patternErrorMessage || schema.errorMessage || t$2('String does not match the pattern of "{0}".', schema.pattern) + }); + } + } + if (schema.format) { + switch (schema.format) { + case 'uri': + case 'uri-reference': + { + let errorMessage; + if (!node.value) { + errorMessage = t$2('URI expected.'); + } + else { + const match = /^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/.exec(node.value); + if (!match) { + errorMessage = t$2('URI is expected.'); + } + else if (!match[2] && schema.format === 'uri') { + errorMessage = t$2('URI with a scheme is expected.'); + } + } + if (errorMessage) { + validationResult.problems.push({ + location: { offset: node.offset, length: node.length }, + message: schema.patternErrorMessage || schema.errorMessage || t$2('String is not a URI: {0}', errorMessage) + }); + } + } + break; + case 'color-hex': + case 'date-time': + case 'date': + case 'time': + case 'email': + case 'hostname': + case 'ipv4': + case 'ipv6': + const format = formats[schema.format]; + if (!node.value || !format.pattern.exec(node.value)) { + validationResult.problems.push({ + location: { offset: node.offset, length: node.length }, + message: schema.patternErrorMessage || schema.errorMessage || format.errorMessage + }); + } + } + } + } + function _validateArrayNode(node) { + let prefixItemsSchemas; + let additionalItemSchema; + if (context.schemaDraft >= SchemaDraft.v2020_12) { + prefixItemsSchemas = schema.prefixItems; + additionalItemSchema = !Array.isArray(schema.items) ? schema.items : undefined; + } + else { + prefixItemsSchemas = Array.isArray(schema.items) ? schema.items : undefined; + additionalItemSchema = !Array.isArray(schema.items) ? schema.items : schema.additionalItems; + } + let index = 0; + if (prefixItemsSchemas !== undefined) { + const max = Math.min(prefixItemsSchemas.length, node.items.length); + for (; index < max; index++) { + const subSchemaRef = prefixItemsSchemas[index]; + const subSchema = asSchema(subSchemaRef); + const itemValidationResult = new ValidationResult(); + const item = node.items[index]; + if (item) { + validate(item, subSchema, itemValidationResult, matchingSchemas, context); + validationResult.mergePropertyMatch(itemValidationResult); + } + validationResult.processedProperties.add(String(index)); + } + } + if (additionalItemSchema !== undefined && index < node.items.length) { + if (typeof additionalItemSchema === 'boolean') { + if (additionalItemSchema === false) { + validationResult.problems.push({ + location: { offset: node.offset, length: node.length }, + message: t$2('Array has too many items according to schema. Expected {0} or fewer.', index) + }); + } + for (; index < node.items.length; index++) { + validationResult.processedProperties.add(String(index)); + validationResult.propertiesValueMatches++; + } + } + else { + for (; index < node.items.length; index++) { + const itemValidationResult = new ValidationResult(); + validate(node.items[index], additionalItemSchema, itemValidationResult, matchingSchemas, context); + validationResult.mergePropertyMatch(itemValidationResult); + validationResult.processedProperties.add(String(index)); + } + } + } + const containsSchema = asSchema(schema.contains); + if (containsSchema) { + let containsCount = 0; + for (let index = 0; index < node.items.length; index++) { + const item = node.items[index]; + const itemValidationResult = new ValidationResult(); + validate(item, containsSchema, itemValidationResult, NoOpSchemaCollector.instance, context); + if (!itemValidationResult.hasProblems()) { + containsCount++; + if (context.schemaDraft >= SchemaDraft.v2020_12) { + validationResult.processedProperties.add(String(index)); + } + } + } + if (containsCount === 0 && !isNumber(schema.minContains)) { + validationResult.problems.push({ + location: { offset: node.offset, length: node.length }, + message: schema.errorMessage || t$2('Array does not contain required item.') + }); + } + if (isNumber(schema.minContains) && containsCount < schema.minContains) { + validationResult.problems.push({ + location: { offset: node.offset, length: node.length }, + message: t$2('Array has too few items that match the contains contraint. Expected {0} or more.', schema.minContains) + }); + } + if (isNumber(schema.maxContains) && containsCount > schema.maxContains) { + validationResult.problems.push({ + location: { offset: node.offset, length: node.length }, + message: t$2('Array has too many items that match the contains contraint. Expected {0} or less.', schema.maxContains) + }); + } + } + const unevaluatedItems = schema.unevaluatedItems; + if (unevaluatedItems !== undefined) { + for (let i = 0; i < node.items.length; i++) { + if (!validationResult.processedProperties.has(String(i))) { + if (unevaluatedItems === false) { + validationResult.problems.push({ + location: { offset: node.offset, length: node.length }, + message: t$2('Item does not match any validation rule from the array.') + }); + } + else { + const itemValidationResult = new ValidationResult(); + validate(node.items[i], schema.unevaluatedItems, itemValidationResult, matchingSchemas, context); + validationResult.mergePropertyMatch(itemValidationResult); + } + } + validationResult.processedProperties.add(String(i)); + validationResult.propertiesValueMatches++; + } + } + if (isNumber(schema.minItems) && node.items.length < schema.minItems) { + validationResult.problems.push({ + location: { offset: node.offset, length: node.length }, + message: t$2('Array has too few items. Expected {0} or more.', schema.minItems) + }); + } + if (isNumber(schema.maxItems) && node.items.length > schema.maxItems) { + validationResult.problems.push({ + location: { offset: node.offset, length: node.length }, + message: t$2('Array has too many items. Expected {0} or fewer.', schema.maxItems) + }); + } + if (schema.uniqueItems === true) { + const values = getNodeValue(node); + const duplicates = values.some((value, index) => { + return index !== values.lastIndexOf(value); + }); + if (duplicates) { + validationResult.problems.push({ + location: { offset: node.offset, length: node.length }, + message: t$2('Array has duplicate items.') + }); + } + } + } + function _validateObjectNode(node) { + const seenKeys = Object.create(null); + const unprocessedProperties = new Set(); + for (const propertyNode of node.properties) { + const key = propertyNode.keyNode.value; + seenKeys[key] = propertyNode.valueNode; + unprocessedProperties.add(key); + } + if (Array.isArray(schema.required)) { + for (const propertyName of schema.required) { + if (!seenKeys[propertyName]) { + const keyNode = node.parent && node.parent.type === 'property' && node.parent.keyNode; + const location = keyNode ? { offset: keyNode.offset, length: keyNode.length } : { offset: node.offset, length: 1 }; + validationResult.problems.push({ + location: location, + message: t$2('Missing property "{0}".', propertyName) + }); + } + } + } + const propertyProcessed = (prop) => { + unprocessedProperties.delete(prop); + validationResult.processedProperties.add(prop); + }; + if (schema.properties) { + for (const propertyName of Object.keys(schema.properties)) { + propertyProcessed(propertyName); + const propertySchema = schema.properties[propertyName]; + const child = seenKeys[propertyName]; + if (child) { + if (isBoolean(propertySchema)) { + if (!propertySchema) { + const propertyNode = child.parent; + validationResult.problems.push({ + location: { offset: propertyNode.keyNode.offset, length: propertyNode.keyNode.length }, + message: schema.errorMessage || t$2('Property {0} is not allowed.', propertyName) + }); + } + else { + validationResult.propertiesMatches++; + validationResult.propertiesValueMatches++; + } + } + else { + const propertyValidationResult = new ValidationResult(); + validate(child, propertySchema, propertyValidationResult, matchingSchemas, context); + validationResult.mergePropertyMatch(propertyValidationResult); + } + } + } + } + if (schema.patternProperties) { + for (const propertyPattern of Object.keys(schema.patternProperties)) { + const regex = extendedRegExp(propertyPattern); + if (regex) { + const processed = []; + for (const propertyName of unprocessedProperties) { + if (regex.test(propertyName)) { + processed.push(propertyName); + const child = seenKeys[propertyName]; + if (child) { + const propertySchema = schema.patternProperties[propertyPattern]; + if (isBoolean(propertySchema)) { + if (!propertySchema) { + const propertyNode = child.parent; + validationResult.problems.push({ + location: { offset: propertyNode.keyNode.offset, length: propertyNode.keyNode.length }, + message: schema.errorMessage || t$2('Property {0} is not allowed.', propertyName) + }); + } + else { + validationResult.propertiesMatches++; + validationResult.propertiesValueMatches++; + } + } + else { + const propertyValidationResult = new ValidationResult(); + validate(child, propertySchema, propertyValidationResult, matchingSchemas, context); + validationResult.mergePropertyMatch(propertyValidationResult); + } + } + } + } + processed.forEach(propertyProcessed); + } + } + } + const additionalProperties = schema.additionalProperties; + if (additionalProperties !== undefined) { + for (const propertyName of unprocessedProperties) { + propertyProcessed(propertyName); + const child = seenKeys[propertyName]; + if (child) { + if (additionalProperties === false) { + const propertyNode = child.parent; + validationResult.problems.push({ + location: { offset: propertyNode.keyNode.offset, length: propertyNode.keyNode.length }, + message: schema.errorMessage || t$2('Property {0} is not allowed.', propertyName) + }); + } + else if (additionalProperties !== true) { + const propertyValidationResult = new ValidationResult(); + validate(child, additionalProperties, propertyValidationResult, matchingSchemas, context); + validationResult.mergePropertyMatch(propertyValidationResult); + } + } + } + } + const unevaluatedProperties = schema.unevaluatedProperties; + if (unevaluatedProperties !== undefined) { + const processed = []; + for (const propertyName of unprocessedProperties) { + if (!validationResult.processedProperties.has(propertyName)) { + processed.push(propertyName); + const child = seenKeys[propertyName]; + if (child) { + if (unevaluatedProperties === false) { + const propertyNode = child.parent; + validationResult.problems.push({ + location: { offset: propertyNode.keyNode.offset, length: propertyNode.keyNode.length }, + message: schema.errorMessage || t$2('Property {0} is not allowed.', propertyName) + }); + } + else if (unevaluatedProperties !== true) { + const propertyValidationResult = new ValidationResult(); + validate(child, unevaluatedProperties, propertyValidationResult, matchingSchemas, context); + validationResult.mergePropertyMatch(propertyValidationResult); + } + } + } + } + processed.forEach(propertyProcessed); + } + if (isNumber(schema.maxProperties)) { + if (node.properties.length > schema.maxProperties) { + validationResult.problems.push({ + location: { offset: node.offset, length: node.length }, + message: t$2('Object has more properties than limit of {0}.', schema.maxProperties) + }); + } + } + if (isNumber(schema.minProperties)) { + if (node.properties.length < schema.minProperties) { + validationResult.problems.push({ + location: { offset: node.offset, length: node.length }, + message: t$2('Object has fewer properties than the required number of {0}', schema.minProperties) + }); + } + } + if (schema.dependentRequired) { + for (const key in schema.dependentRequired) { + const prop = seenKeys[key]; + const propertyDeps = schema.dependentRequired[key]; + if (prop && Array.isArray(propertyDeps)) { + _validatePropertyDependencies(key, propertyDeps); + } + } + } + if (schema.dependentSchemas) { + for (const key in schema.dependentSchemas) { + const prop = seenKeys[key]; + const propertyDeps = schema.dependentSchemas[key]; + if (prop && isObject(propertyDeps)) { + _validatePropertyDependencies(key, propertyDeps); + } + } + } + if (schema.dependencies) { + for (const key in schema.dependencies) { + const prop = seenKeys[key]; + if (prop) { + _validatePropertyDependencies(key, schema.dependencies[key]); + } + } + } + const propertyNames = asSchema(schema.propertyNames); + if (propertyNames) { + for (const f of node.properties) { + const key = f.keyNode; + if (key) { + validate(key, propertyNames, validationResult, NoOpSchemaCollector.instance, context); + } + } + } + function _validatePropertyDependencies(key, propertyDep) { + if (Array.isArray(propertyDep)) { + for (const requiredProp of propertyDep) { + if (!seenKeys[requiredProp]) { + validationResult.problems.push({ + location: { offset: node.offset, length: node.length }, + message: t$2('Object is missing property {0} required by property {1}.', requiredProp, key) + }); + } + else { + validationResult.propertiesValueMatches++; + } + } + } + else { + const propertySchema = asSchema(propertyDep); + if (propertySchema) { + const propertyValidationResult = new ValidationResult(); + validate(node, propertySchema, propertyValidationResult, matchingSchemas, context); + validationResult.mergePropertyMatch(propertyValidationResult); + } + } + } + } +} +function parse$7(textDocument, config) { + const problems = []; + let lastProblemOffset = -1; + const text = textDocument.getText(); + const scanner = createScanner(text, false); + const commentRanges = config && config.collectComments ? [] : undefined; + function _scanNext() { + while (true) { + const token = scanner.scan(); + _checkScanError(); + switch (token) { + case 12 /* Json.SyntaxKind.LineCommentTrivia */: + case 13 /* Json.SyntaxKind.BlockCommentTrivia */: + if (Array.isArray(commentRanges)) { + commentRanges.push(Range$a.create(textDocument.positionAt(scanner.getTokenOffset()), textDocument.positionAt(scanner.getTokenOffset() + scanner.getTokenLength()))); + } + break; + case 15 /* Json.SyntaxKind.Trivia */: + case 14 /* Json.SyntaxKind.LineBreakTrivia */: + break; + default: + return token; + } + } + } + function _errorAtRange(message, code, startOffset, endOffset, severity = DiagnosticSeverity.Error) { + if (problems.length === 0 || startOffset !== lastProblemOffset) { + const range = Range$a.create(textDocument.positionAt(startOffset), textDocument.positionAt(endOffset)); + problems.push(Diagnostic.create(range, message, severity, code, textDocument.languageId)); + lastProblemOffset = startOffset; + } + } + function _error(message, code, node = undefined, skipUntilAfter = [], skipUntil = []) { + let start = scanner.getTokenOffset(); + let end = scanner.getTokenOffset() + scanner.getTokenLength(); + if (start === end && start > 0) { + start--; + while (start > 0 && /\s/.test(text.charAt(start))) { + start--; + } + end = start + 1; + } + _errorAtRange(message, code, start, end); + if (node) { + _finalize(node, false); + } + if (skipUntilAfter.length + skipUntil.length > 0) { + let token = scanner.getToken(); + while (token !== 17 /* Json.SyntaxKind.EOF */) { + if (skipUntilAfter.indexOf(token) !== -1) { + _scanNext(); + break; + } + else if (skipUntil.indexOf(token) !== -1) { + break; + } + token = _scanNext(); + } + } + return node; + } + function _checkScanError() { + switch (scanner.getTokenError()) { + case 4 /* Json.ScanError.InvalidUnicode */: + _error(t$2('Invalid unicode sequence in string.'), ErrorCode.InvalidUnicode); + return true; + case 5 /* Json.ScanError.InvalidEscapeCharacter */: + _error(t$2('Invalid escape character in string.'), ErrorCode.InvalidEscapeCharacter); + return true; + case 3 /* Json.ScanError.UnexpectedEndOfNumber */: + _error(t$2('Unexpected end of number.'), ErrorCode.UnexpectedEndOfNumber); + return true; + case 1 /* Json.ScanError.UnexpectedEndOfComment */: + _error(t$2('Unexpected end of comment.'), ErrorCode.UnexpectedEndOfComment); + return true; + case 2 /* Json.ScanError.UnexpectedEndOfString */: + _error(t$2('Unexpected end of string.'), ErrorCode.UnexpectedEndOfString); + return true; + case 6 /* Json.ScanError.InvalidCharacter */: + _error(t$2('Invalid characters in string. Control characters must be escaped.'), ErrorCode.InvalidCharacter); + return true; + } + return false; + } + function _finalize(node, scanNext) { + node.length = scanner.getTokenOffset() + scanner.getTokenLength() - node.offset; + if (scanNext) { + _scanNext(); + } + return node; + } + function _parseArray(parent) { + if (scanner.getToken() !== 3 /* Json.SyntaxKind.OpenBracketToken */) { + return undefined; + } + const node = new ArrayASTNodeImpl(parent, scanner.getTokenOffset()); + _scanNext(); // consume OpenBracketToken + let needsComma = false; + while (scanner.getToken() !== 4 /* Json.SyntaxKind.CloseBracketToken */ && scanner.getToken() !== 17 /* Json.SyntaxKind.EOF */) { + if (scanner.getToken() === 5 /* Json.SyntaxKind.CommaToken */) { + if (!needsComma) { + _error(t$2('Value expected'), ErrorCode.ValueExpected); + } + const commaOffset = scanner.getTokenOffset(); + _scanNext(); // consume comma + if (scanner.getToken() === 4 /* Json.SyntaxKind.CloseBracketToken */) { + if (needsComma) { + _errorAtRange(t$2('Trailing comma'), ErrorCode.TrailingComma, commaOffset, commaOffset + 1); + } + continue; + } + } + else if (needsComma) { + _error(t$2('Expected comma'), ErrorCode.CommaExpected); + } + const item = _parseValue(node); + if (!item) { + _error(t$2('Value expected'), ErrorCode.ValueExpected, undefined, [], [4 /* Json.SyntaxKind.CloseBracketToken */, 5 /* Json.SyntaxKind.CommaToken */]); + } + else { + node.items.push(item); + } + needsComma = true; + } + if (scanner.getToken() !== 4 /* Json.SyntaxKind.CloseBracketToken */) { + return _error(t$2('Expected comma or closing bracket'), ErrorCode.CommaOrCloseBacketExpected, node); + } + return _finalize(node, true); + } + const keyPlaceholder = new StringASTNodeImpl(undefined, 0, 0); + function _parseProperty(parent, keysSeen) { + const node = new PropertyASTNodeImpl(parent, scanner.getTokenOffset(), keyPlaceholder); + let key = _parseString(node); + if (!key) { + if (scanner.getToken() === 16 /* Json.SyntaxKind.Unknown */) { + // give a more helpful error message + _error(t$2('Property keys must be doublequoted'), ErrorCode.PropertyKeysMustBeDoublequoted); + const keyNode = new StringASTNodeImpl(node, scanner.getTokenOffset(), scanner.getTokenLength()); + keyNode.value = scanner.getTokenValue(); + key = keyNode; + _scanNext(); // consume Unknown + } + else { + return undefined; + } + } + node.keyNode = key; + // For JSON files that forbid code comments, there is a convention to use the key name "//" to add comments. + // Multiple instances of "//" are okay. + if (key.value !== "//") { + const seen = keysSeen[key.value]; + if (seen) { + _errorAtRange(t$2("Duplicate object key"), ErrorCode.DuplicateKey, node.keyNode.offset, node.keyNode.offset + node.keyNode.length, DiagnosticSeverity.Warning); + if (isObject(seen)) { + _errorAtRange(t$2("Duplicate object key"), ErrorCode.DuplicateKey, seen.keyNode.offset, seen.keyNode.offset + seen.keyNode.length, DiagnosticSeverity.Warning); + } + keysSeen[key.value] = true; // if the same key is duplicate again, avoid duplicate error reporting + } + else { + keysSeen[key.value] = node; + } + } + if (scanner.getToken() === 6 /* Json.SyntaxKind.ColonToken */) { + node.colonOffset = scanner.getTokenOffset(); + _scanNext(); // consume ColonToken + } + else { + _error(t$2('Colon expected'), ErrorCode.ColonExpected); + if (scanner.getToken() === 10 /* Json.SyntaxKind.StringLiteral */ && textDocument.positionAt(key.offset + key.length).line < textDocument.positionAt(scanner.getTokenOffset()).line) { + node.length = key.length; + return node; + } + } + const value = _parseValue(node); + if (!value) { + return _error(t$2('Value expected'), ErrorCode.ValueExpected, node, [], [2 /* Json.SyntaxKind.CloseBraceToken */, 5 /* Json.SyntaxKind.CommaToken */]); + } + node.valueNode = value; + node.length = value.offset + value.length - node.offset; + return node; + } + function _parseObject(parent) { + if (scanner.getToken() !== 1 /* Json.SyntaxKind.OpenBraceToken */) { + return undefined; + } + const node = new ObjectASTNodeImpl(parent, scanner.getTokenOffset()); + const keysSeen = Object.create(null); + _scanNext(); // consume OpenBraceToken + let needsComma = false; + while (scanner.getToken() !== 2 /* Json.SyntaxKind.CloseBraceToken */ && scanner.getToken() !== 17 /* Json.SyntaxKind.EOF */) { + if (scanner.getToken() === 5 /* Json.SyntaxKind.CommaToken */) { + if (!needsComma) { + _error(t$2('Property expected'), ErrorCode.PropertyExpected); + } + const commaOffset = scanner.getTokenOffset(); + _scanNext(); // consume comma + if (scanner.getToken() === 2 /* Json.SyntaxKind.CloseBraceToken */) { + if (needsComma) { + _errorAtRange(t$2('Trailing comma'), ErrorCode.TrailingComma, commaOffset, commaOffset + 1); + } + continue; + } + } + else if (needsComma) { + _error(t$2('Expected comma'), ErrorCode.CommaExpected); + } + const property = _parseProperty(node, keysSeen); + if (!property) { + _error(t$2('Property expected'), ErrorCode.PropertyExpected, undefined, [], [2 /* Json.SyntaxKind.CloseBraceToken */, 5 /* Json.SyntaxKind.CommaToken */]); + } + else { + node.properties.push(property); + } + needsComma = true; + } + if (scanner.getToken() !== 2 /* Json.SyntaxKind.CloseBraceToken */) { + return _error(t$2('Expected comma or closing brace'), ErrorCode.CommaOrCloseBraceExpected, node); + } + return _finalize(node, true); + } + function _parseString(parent) { + if (scanner.getToken() !== 10 /* Json.SyntaxKind.StringLiteral */) { + return undefined; + } + const node = new StringASTNodeImpl(parent, scanner.getTokenOffset()); + node.value = scanner.getTokenValue(); + return _finalize(node, true); + } + function _parseNumber(parent) { + if (scanner.getToken() !== 11 /* Json.SyntaxKind.NumericLiteral */) { + return undefined; + } + const node = new NumberASTNodeImpl(parent, scanner.getTokenOffset()); + if (scanner.getTokenError() === 0 /* Json.ScanError.None */) { + const tokenValue = scanner.getTokenValue(); + try { + const numberValue = JSON.parse(tokenValue); + if (!isNumber(numberValue)) { + return _error(t$2('Invalid number format.'), ErrorCode.Undefined, node); + } + node.value = numberValue; + } + catch (e) { + return _error(t$2('Invalid number format.'), ErrorCode.Undefined, node); + } + node.isInteger = tokenValue.indexOf('.') === -1; + } + return _finalize(node, true); + } + function _parseLiteral(parent) { + switch (scanner.getToken()) { + case 7 /* Json.SyntaxKind.NullKeyword */: + return _finalize(new NullASTNodeImpl(parent, scanner.getTokenOffset()), true); + case 8 /* Json.SyntaxKind.TrueKeyword */: + return _finalize(new BooleanASTNodeImpl(parent, true, scanner.getTokenOffset()), true); + case 9 /* Json.SyntaxKind.FalseKeyword */: + return _finalize(new BooleanASTNodeImpl(parent, false, scanner.getTokenOffset()), true); + default: + return undefined; + } + } + function _parseValue(parent) { + return _parseArray(parent) || _parseObject(parent) || _parseString(parent) || _parseNumber(parent) || _parseLiteral(parent); + } + let _root = undefined; + const token = _scanNext(); + if (token !== 17 /* Json.SyntaxKind.EOF */) { + _root = _parseValue(_root); + if (!_root) { + _error(t$2('Expected a JSON object, array or literal.'), ErrorCode.Undefined); + } + else if (scanner.getToken() !== 17 /* Json.SyntaxKind.EOF */) { + _error(t$2('End of file expected.'), ErrorCode.Undefined); + } + } + return new JSONDocument(_root, problems, commentRanges); +} + +/*--------------------------------------------------------------------------------------------- +* Copyright (c) Microsoft Corporation. All rights reserved. +* Licensed under the MIT License. See License.txt in the project root for license information. +*--------------------------------------------------------------------------------------------*/ +function stringifyObject(obj, indent, stringifyLiteral) { + if (obj !== null && typeof obj === 'object') { + const newIndent = indent + '\t'; + if (Array.isArray(obj)) { + if (obj.length === 0) { + return '[]'; + } + let result = '[\n'; + for (let i = 0; i < obj.length; i++) { + result += newIndent + stringifyObject(obj[i], newIndent, stringifyLiteral); + if (i < obj.length - 1) { + result += ','; + } + result += '\n'; + } + result += indent + ']'; + return result; + } + else { + const keys = Object.keys(obj); + if (keys.length === 0) { + return '{}'; + } + let result = '{\n'; + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + result += newIndent + JSON.stringify(key) + ': ' + stringifyObject(obj[key], newIndent, stringifyLiteral); + if (i < keys.length - 1) { + result += ','; + } + result += '\n'; + } + result += indent + '}'; + return result; + } + } + return stringifyLiteral(obj); +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +class JSONCompletion { + constructor(schemaService, contributions = [], promiseConstructor = Promise, clientCapabilities = {}) { + this.schemaService = schemaService; + this.contributions = contributions; + this.promiseConstructor = promiseConstructor; + this.clientCapabilities = clientCapabilities; + } + doResolve(item) { + for (let i = this.contributions.length - 1; i >= 0; i--) { + const resolveCompletion = this.contributions[i].resolveCompletion; + if (resolveCompletion) { + const resolver = resolveCompletion(item); + if (resolver) { + return resolver; + } + } + } + return this.promiseConstructor.resolve(item); + } + doComplete(document, position, doc) { + const result = { + items: [], + isIncomplete: false + }; + const text = document.getText(); + const offset = document.offsetAt(position); + let node = doc.getNodeFromOffset(offset, true); + if (this.isInComment(document, node ? node.offset : 0, offset)) { + return Promise.resolve(result); + } + if (node && (offset === node.offset + node.length) && offset > 0) { + const ch = text[offset - 1]; + if (node.type === 'object' && ch === '}' || node.type === 'array' && ch === ']') { + // after ] or } + node = node.parent; + } + } + const currentWord = this.getCurrentWord(document, offset); + let overwriteRange; + if (node && (node.type === 'string' || node.type === 'number' || node.type === 'boolean' || node.type === 'null')) { + overwriteRange = Range$a.create(document.positionAt(node.offset), document.positionAt(node.offset + node.length)); + } + else { + let overwriteStart = offset - currentWord.length; + if (overwriteStart > 0 && text[overwriteStart - 1] === '"') { + overwriteStart--; + } + overwriteRange = Range$a.create(document.positionAt(overwriteStart), position); + } + const proposed = new Map(); + const collector = { + add: (suggestion) => { + let label = suggestion.label; + const existing = proposed.get(label); + if (!existing) { + label = label.replace(/[\n]/g, '↵'); + if (label.length > 60) { + const shortendedLabel = label.substr(0, 57).trim() + '...'; + if (!proposed.has(shortendedLabel)) { + label = shortendedLabel; + } + } + suggestion.textEdit = TextEdit.replace(overwriteRange, suggestion.insertText); + suggestion.label = label; + proposed.set(label, suggestion); + result.items.push(suggestion); + } + else { + if (!existing.documentation) { + existing.documentation = suggestion.documentation; + } + if (!existing.detail) { + existing.detail = suggestion.detail; + } + if (!existing.labelDetails) { + existing.labelDetails = suggestion.labelDetails; + } + } + }, + setAsIncomplete: () => { + result.isIncomplete = true; + }, + error: (message) => { + console.error(message); + }, + getNumberOfProposals: () => { + return result.items.length; + } + }; + return this.schemaService.getSchemaForResource(document.uri, doc).then((schema) => { + const collectionPromises = []; + let addValue = true; + let currentKey = ''; + let currentProperty = undefined; + if (node) { + if (node.type === 'string') { + const parent = node.parent; + if (parent && parent.type === 'property' && parent.keyNode === node) { + addValue = !parent.valueNode; + currentProperty = parent; + currentKey = text.substr(node.offset + 1, node.length - 2); + if (parent) { + node = parent.parent; + } + } + } + } + // proposals for properties + if (node && node.type === 'object') { + // don't suggest keys when the cursor is just before the opening curly brace + if (node.offset === offset) { + return result; + } + // don't suggest properties that are already present + const properties = node.properties; + properties.forEach(p => { + if (!currentProperty || currentProperty !== p) { + proposed.set(p.keyNode.value, CompletionItem.create('__')); + } + }); + let separatorAfter = ''; + if (addValue) { + separatorAfter = this.evaluateSeparatorAfter(document, document.offsetAt(overwriteRange.end)); + } + if (schema) { + // property proposals with schema + this.getPropertyCompletions(schema, doc, node, addValue, separatorAfter, collector); + } + else { + // property proposals without schema + this.getSchemaLessPropertyCompletions(doc, node, currentKey, collector); + } + const location = getNodePath(node); + this.contributions.forEach((contribution) => { + const collectPromise = contribution.collectPropertyCompletions(document.uri, location, currentWord, addValue, separatorAfter === '', collector); + if (collectPromise) { + collectionPromises.push(collectPromise); + } + }); + if ((!schema && currentWord.length > 0 && text.charAt(offset - currentWord.length - 1) !== '"')) { + collector.add({ + kind: CompletionItemKind.Property, + label: this.getLabelForValue(currentWord), + insertText: this.getInsertTextForProperty(currentWord, undefined, false, separatorAfter), + insertTextFormat: InsertTextFormat.Snippet, documentation: '', + }); + collector.setAsIncomplete(); + } + } + // proposals for values + const types = {}; + if (schema) { + // value proposals with schema + this.getValueCompletions(schema, doc, node, offset, document, collector, types); + } + else { + // value proposals without schema + this.getSchemaLessValueCompletions(doc, node, offset, document, collector); + } + if (this.contributions.length > 0) { + this.getContributedValueCompletions(doc, node, offset, document, collector, collectionPromises); + } + return this.promiseConstructor.all(collectionPromises).then(() => { + if (collector.getNumberOfProposals() === 0) { + let offsetForSeparator = offset; + if (node && (node.type === 'string' || node.type === 'number' || node.type === 'boolean' || node.type === 'null')) { + offsetForSeparator = node.offset + node.length; + } + const separatorAfter = this.evaluateSeparatorAfter(document, offsetForSeparator); + this.addFillerValueCompletions(types, separatorAfter, collector); + } + return result; + }); + }); + } + getPropertyCompletions(schema, doc, node, addValue, separatorAfter, collector) { + const matchingSchemas = doc.getMatchingSchemas(schema.schema, node.offset); + matchingSchemas.forEach((s) => { + if (s.node === node && !s.inverted) { + const schemaProperties = s.schema.properties; + if (schemaProperties) { + Object.keys(schemaProperties).forEach((key) => { + const propertySchema = schemaProperties[key]; + if (typeof propertySchema === 'object' && !propertySchema.deprecationMessage && !propertySchema.doNotSuggest) { + const proposal = { + kind: CompletionItemKind.Property, + label: key, + insertText: this.getInsertTextForProperty(key, propertySchema, addValue, separatorAfter), + insertTextFormat: InsertTextFormat.Snippet, + filterText: this.getFilterTextForValue(key), + documentation: this.fromMarkup(propertySchema.markdownDescription) || propertySchema.description || '', + }; + if (propertySchema.suggestSortText !== undefined) { + proposal.sortText = propertySchema.suggestSortText; + } + if (proposal.insertText && endsWith$1(proposal.insertText, `$1${separatorAfter}`)) { + proposal.command = { + title: 'Suggest', + command: 'editor.action.triggerSuggest' + }; + } + collector.add(proposal); + } + }); + } + const schemaPropertyNames = s.schema.propertyNames; + if (typeof schemaPropertyNames === 'object' && !schemaPropertyNames.deprecationMessage && !schemaPropertyNames.doNotSuggest) { + const propertyNameCompletionItem = (name, enumDescription = undefined) => { + const proposal = { + kind: CompletionItemKind.Property, + label: name, + insertText: this.getInsertTextForProperty(name, undefined, addValue, separatorAfter), + insertTextFormat: InsertTextFormat.Snippet, + filterText: this.getFilterTextForValue(name), + documentation: enumDescription || this.fromMarkup(schemaPropertyNames.markdownDescription) || schemaPropertyNames.description || '', + }; + if (schemaPropertyNames.suggestSortText !== undefined) { + proposal.sortText = schemaPropertyNames.suggestSortText; + } + if (proposal.insertText && endsWith$1(proposal.insertText, `$1${separatorAfter}`)) { + proposal.command = { + title: 'Suggest', + command: 'editor.action.triggerSuggest' + }; + } + collector.add(proposal); + }; + if (schemaPropertyNames.enum) { + for (let i = 0; i < schemaPropertyNames.enum.length; i++) { + let enumDescription = undefined; + if (schemaPropertyNames.markdownEnumDescriptions && i < schemaPropertyNames.markdownEnumDescriptions.length) { + enumDescription = this.fromMarkup(schemaPropertyNames.markdownEnumDescriptions[i]); + } + else if (schemaPropertyNames.enumDescriptions && i < schemaPropertyNames.enumDescriptions.length) { + enumDescription = schemaPropertyNames.enumDescriptions[i]; + } + propertyNameCompletionItem(schemaPropertyNames.enum[i], enumDescription); + } + } + if (schemaPropertyNames.const) { + propertyNameCompletionItem(schemaPropertyNames.const); + } + } + } + }); + } + getSchemaLessPropertyCompletions(doc, node, currentKey, collector) { + const collectCompletionsForSimilarObject = (obj) => { + obj.properties.forEach((p) => { + const key = p.keyNode.value; + collector.add({ + kind: CompletionItemKind.Property, + label: key, + insertText: this.getInsertTextForValue(key, ''), + insertTextFormat: InsertTextFormat.Snippet, + filterText: this.getFilterTextForValue(key), + documentation: '' + }); + }); + }; + if (node.parent) { + if (node.parent.type === 'property') { + // if the object is a property value, check the tree for other objects that hang under a property of the same name + const parentKey = node.parent.keyNode.value; + doc.visit(n => { + if (n.type === 'property' && n !== node.parent && n.keyNode.value === parentKey && n.valueNode && n.valueNode.type === 'object') { + collectCompletionsForSimilarObject(n.valueNode); + } + return true; + }); + } + else if (node.parent.type === 'array') { + // if the object is in an array, use all other array elements as similar objects + node.parent.items.forEach(n => { + if (n.type === 'object' && n !== node) { + collectCompletionsForSimilarObject(n); + } + }); + } + } + else if (node.type === 'object') { + collector.add({ + kind: CompletionItemKind.Property, + label: '$schema', + insertText: this.getInsertTextForProperty('$schema', undefined, true, ''), + insertTextFormat: InsertTextFormat.Snippet, documentation: '', + filterText: this.getFilterTextForValue("$schema") + }); + } + } + getSchemaLessValueCompletions(doc, node, offset, document, collector) { + let offsetForSeparator = offset; + if (node && (node.type === 'string' || node.type === 'number' || node.type === 'boolean' || node.type === 'null')) { + offsetForSeparator = node.offset + node.length; + node = node.parent; + } + if (!node) { + collector.add({ + kind: this.getSuggestionKind('object'), + label: 'Empty object', + insertText: this.getInsertTextForValue({}, ''), + insertTextFormat: InsertTextFormat.Snippet, + documentation: '' + }); + collector.add({ + kind: this.getSuggestionKind('array'), + label: 'Empty array', + insertText: this.getInsertTextForValue([], ''), + insertTextFormat: InsertTextFormat.Snippet, + documentation: '' + }); + return; + } + const separatorAfter = this.evaluateSeparatorAfter(document, offsetForSeparator); + const collectSuggestionsForValues = (value) => { + if (value.parent && !contains$1(value.parent, offset, true)) { + collector.add({ + kind: this.getSuggestionKind(value.type), + label: this.getLabelTextForMatchingNode(value, document), + insertText: this.getInsertTextForMatchingNode(value, document, separatorAfter), + insertTextFormat: InsertTextFormat.Snippet, documentation: '' + }); + } + if (value.type === 'boolean') { + this.addBooleanValueCompletion(!value.value, separatorAfter, collector); + } + }; + if (node.type === 'property') { + if (offset > (node.colonOffset || 0)) { + const valueNode = node.valueNode; + if (valueNode && (offset > (valueNode.offset + valueNode.length) || valueNode.type === 'object' || valueNode.type === 'array')) { + return; + } + // suggest values at the same key + const parentKey = node.keyNode.value; + doc.visit(n => { + if (n.type === 'property' && n.keyNode.value === parentKey && n.valueNode) { + collectSuggestionsForValues(n.valueNode); + } + return true; + }); + if (parentKey === '$schema' && node.parent && !node.parent.parent) { + this.addDollarSchemaCompletions(separatorAfter, collector); + } + } + } + if (node.type === 'array') { + if (node.parent && node.parent.type === 'property') { + // suggest items of an array at the same key + const parentKey = node.parent.keyNode.value; + doc.visit((n) => { + if (n.type === 'property' && n.keyNode.value === parentKey && n.valueNode && n.valueNode.type === 'array') { + n.valueNode.items.forEach(collectSuggestionsForValues); + } + return true; + }); + } + else { + // suggest items in the same array + node.items.forEach(collectSuggestionsForValues); + } + } + } + getValueCompletions(schema, doc, node, offset, document, collector, types) { + let offsetForSeparator = offset; + let parentKey = undefined; + let valueNode = undefined; + if (node && (node.type === 'string' || node.type === 'number' || node.type === 'boolean' || node.type === 'null')) { + offsetForSeparator = node.offset + node.length; + valueNode = node; + node = node.parent; + } + if (!node) { + this.addSchemaValueCompletions(schema.schema, '', collector, types); + return; + } + if ((node.type === 'property') && offset > (node.colonOffset || 0)) { + const valueNode = node.valueNode; + if (valueNode && offset > (valueNode.offset + valueNode.length)) { + return; // we are past the value node + } + parentKey = node.keyNode.value; + node = node.parent; + } + if (node && (parentKey !== undefined || node.type === 'array')) { + const separatorAfter = this.evaluateSeparatorAfter(document, offsetForSeparator); + const matchingSchemas = doc.getMatchingSchemas(schema.schema, node.offset, valueNode); + for (const s of matchingSchemas) { + if (s.node === node && !s.inverted && s.schema) { + if (node.type === 'array' && s.schema.items) { + let c = collector; + if (s.schema.uniqueItems) { + const existingValues = new Set(); + node.children.forEach(n => { + if (n.type !== 'array' && n.type !== 'object') { + existingValues.add(this.getLabelForValue(getNodeValue(n))); + } + }); + c = { + ...collector, + add(suggestion) { + if (!existingValues.has(suggestion.label)) { + collector.add(suggestion); + } + } + }; + } + if (Array.isArray(s.schema.items)) { + const index = this.findItemAtOffset(node, document, offset); + if (index < s.schema.items.length) { + this.addSchemaValueCompletions(s.schema.items[index], separatorAfter, c, types); + } + } + else { + this.addSchemaValueCompletions(s.schema.items, separatorAfter, c, types); + } + } + if (parentKey !== undefined) { + let propertyMatched = false; + if (s.schema.properties) { + const propertySchema = s.schema.properties[parentKey]; + if (propertySchema) { + propertyMatched = true; + this.addSchemaValueCompletions(propertySchema, separatorAfter, collector, types); + } + } + if (s.schema.patternProperties && !propertyMatched) { + for (const pattern of Object.keys(s.schema.patternProperties)) { + const regex = extendedRegExp(pattern); + if (regex?.test(parentKey)) { + propertyMatched = true; + const propertySchema = s.schema.patternProperties[pattern]; + this.addSchemaValueCompletions(propertySchema, separatorAfter, collector, types); + } + } + } + if (s.schema.additionalProperties && !propertyMatched) { + const propertySchema = s.schema.additionalProperties; + this.addSchemaValueCompletions(propertySchema, separatorAfter, collector, types); + } + } + } + } + if (parentKey === '$schema' && !node.parent) { + this.addDollarSchemaCompletions(separatorAfter, collector); + } + if (types['boolean']) { + this.addBooleanValueCompletion(true, separatorAfter, collector); + this.addBooleanValueCompletion(false, separatorAfter, collector); + } + if (types['null']) { + this.addNullValueCompletion(separatorAfter, collector); + } + } + } + getContributedValueCompletions(doc, node, offset, document, collector, collectionPromises) { + if (!node) { + this.contributions.forEach((contribution) => { + const collectPromise = contribution.collectDefaultCompletions(document.uri, collector); + if (collectPromise) { + collectionPromises.push(collectPromise); + } + }); + } + else { + if (node.type === 'string' || node.type === 'number' || node.type === 'boolean' || node.type === 'null') { + node = node.parent; + } + if (node && (node.type === 'property') && offset > (node.colonOffset || 0)) { + const parentKey = node.keyNode.value; + const valueNode = node.valueNode; + if ((!valueNode || offset <= (valueNode.offset + valueNode.length)) && node.parent) { + const location = getNodePath(node.parent); + this.contributions.forEach((contribution) => { + const collectPromise = contribution.collectValueCompletions(document.uri, location, parentKey, collector); + if (collectPromise) { + collectionPromises.push(collectPromise); + } + }); + } + } + } + } + addSchemaValueCompletions(schema, separatorAfter, collector, types) { + if (typeof schema === 'object') { + this.addEnumValueCompletions(schema, separatorAfter, collector); + this.addDefaultValueCompletions(schema, separatorAfter, collector); + this.collectTypes(schema, types); + if (Array.isArray(schema.allOf)) { + schema.allOf.forEach(s => this.addSchemaValueCompletions(s, separatorAfter, collector, types)); + } + if (Array.isArray(schema.anyOf)) { + schema.anyOf.forEach(s => this.addSchemaValueCompletions(s, separatorAfter, collector, types)); + } + if (Array.isArray(schema.oneOf)) { + schema.oneOf.forEach(s => this.addSchemaValueCompletions(s, separatorAfter, collector, types)); + } + } + } + addDefaultValueCompletions(schema, separatorAfter, collector, arrayDepth = 0) { + let hasProposals = false; + if (isDefined(schema.default)) { + let type = schema.type; + let value = schema.default; + for (let i = arrayDepth; i > 0; i--) { + value = [value]; + type = 'array'; + } + const completionItem = { + kind: this.getSuggestionKind(type), + label: this.getLabelForValue(value), + insertText: this.getInsertTextForValue(value, separatorAfter), + insertTextFormat: InsertTextFormat.Snippet + }; + if (this.doesSupportsLabelDetails()) { + completionItem.labelDetails = { description: t$2('Default value') }; + } + else { + completionItem.detail = t$2('Default value'); + } + collector.add(completionItem); + hasProposals = true; + } + if (Array.isArray(schema.examples)) { + schema.examples.forEach(example => { + let type = schema.type; + let value = example; + for (let i = arrayDepth; i > 0; i--) { + value = [value]; + type = 'array'; + } + collector.add({ + kind: this.getSuggestionKind(type), + label: this.getLabelForValue(value), + insertText: this.getInsertTextForValue(value, separatorAfter), + insertTextFormat: InsertTextFormat.Snippet + }); + hasProposals = true; + }); + } + if (Array.isArray(schema.defaultSnippets)) { + schema.defaultSnippets.forEach(s => { + let type = schema.type; + let value = s.body; + let label = s.label; + let insertText; + let filterText; + if (isDefined(value)) { + schema.type; + for (let i = arrayDepth; i > 0; i--) { + value = [value]; + } + insertText = this.getInsertTextForSnippetValue(value, separatorAfter); + filterText = this.getFilterTextForSnippetValue(value); + label = label || this.getLabelForSnippetValue(value); + } + else if (typeof s.bodyText === 'string') { + let prefix = '', suffix = '', indent = ''; + for (let i = arrayDepth; i > 0; i--) { + prefix = prefix + indent + '[\n'; + suffix = suffix + '\n' + indent + ']'; + indent += '\t'; + type = 'array'; + } + insertText = prefix + indent + s.bodyText.split('\n').join('\n' + indent) + suffix + separatorAfter; + label = label || insertText, + filterText = insertText.replace(/[\n]/g, ''); // remove new lines + } + else { + return; + } + collector.add({ + kind: this.getSuggestionKind(type), + label, + documentation: this.fromMarkup(s.markdownDescription) || s.description, + insertText, + insertTextFormat: InsertTextFormat.Snippet, + filterText + }); + hasProposals = true; + }); + } + if (!hasProposals && typeof schema.items === 'object' && !Array.isArray(schema.items) && arrayDepth < 5 /* beware of recursion */) { + this.addDefaultValueCompletions(schema.items, separatorAfter, collector, arrayDepth + 1); + } + } + addEnumValueCompletions(schema, separatorAfter, collector) { + if (isDefined(schema.const)) { + collector.add({ + kind: this.getSuggestionKind(schema.type), + label: this.getLabelForValue(schema.const), + insertText: this.getInsertTextForValue(schema.const, separatorAfter), + insertTextFormat: InsertTextFormat.Snippet, + documentation: this.fromMarkup(schema.markdownDescription) || schema.description + }); + } + if (Array.isArray(schema.enum)) { + for (let i = 0, length = schema.enum.length; i < length; i++) { + const enm = schema.enum[i]; + let documentation = this.fromMarkup(schema.markdownDescription) || schema.description; + if (schema.markdownEnumDescriptions && i < schema.markdownEnumDescriptions.length && this.doesSupportMarkdown()) { + documentation = this.fromMarkup(schema.markdownEnumDescriptions[i]); + } + else if (schema.enumDescriptions && i < schema.enumDescriptions.length) { + documentation = schema.enumDescriptions[i]; + } + collector.add({ + kind: this.getSuggestionKind(schema.type), + label: this.getLabelForValue(enm), + insertText: this.getInsertTextForValue(enm, separatorAfter), + insertTextFormat: InsertTextFormat.Snippet, + documentation + }); + } + } + } + collectTypes(schema, types) { + if (Array.isArray(schema.enum) || isDefined(schema.const)) { + return; + } + const type = schema.type; + if (Array.isArray(type)) { + type.forEach(t => types[t] = true); + } + else if (type) { + types[type] = true; + } + } + addFillerValueCompletions(types, separatorAfter, collector) { + if (types['object']) { + collector.add({ + kind: this.getSuggestionKind('object'), + label: '{}', + insertText: this.getInsertTextForGuessedValue({}, separatorAfter), + insertTextFormat: InsertTextFormat.Snippet, + detail: t$2('New object'), + documentation: '' + }); + } + if (types['array']) { + collector.add({ + kind: this.getSuggestionKind('array'), + label: '[]', + insertText: this.getInsertTextForGuessedValue([], separatorAfter), + insertTextFormat: InsertTextFormat.Snippet, + detail: t$2('New array'), + documentation: '' + }); + } + } + addBooleanValueCompletion(value, separatorAfter, collector) { + collector.add({ + kind: this.getSuggestionKind('boolean'), + label: value ? 'true' : 'false', + insertText: this.getInsertTextForValue(value, separatorAfter), + insertTextFormat: InsertTextFormat.Snippet, + documentation: '' + }); + } + addNullValueCompletion(separatorAfter, collector) { + collector.add({ + kind: this.getSuggestionKind('null'), + label: 'null', + insertText: 'null' + separatorAfter, + insertTextFormat: InsertTextFormat.Snippet, + documentation: '' + }); + } + addDollarSchemaCompletions(separatorAfter, collector) { + const schemaIds = this.schemaService.getRegisteredSchemaIds(schema => schema === 'http' || schema === 'https'); + schemaIds.forEach(schemaId => { + if (schemaId.startsWith('http://json-schema.org/draft-')) { + schemaId = schemaId + '#'; + } + collector.add({ + kind: CompletionItemKind.Module, + label: this.getLabelForValue(schemaId), + filterText: this.getFilterTextForValue(schemaId), + insertText: this.getInsertTextForValue(schemaId, separatorAfter), + insertTextFormat: InsertTextFormat.Snippet, documentation: '' + }); + }); + } + getLabelForValue(value) { + return JSON.stringify(value); + } + getValueFromLabel(value) { + return JSON.parse(value); + } + getFilterTextForValue(value) { + return JSON.stringify(value); + } + getFilterTextForSnippetValue(value) { + return JSON.stringify(value).replace(/\$\{\d+:([^}]+)\}|\$\d+/g, '$1'); + } + getLabelForSnippetValue(value) { + const label = JSON.stringify(value); + return label.replace(/\$\{\d+:([^}]+)\}|\$\d+/g, '$1'); + } + getInsertTextForPlainText(text) { + return text.replace(/[\\\$\}]/g, '\\$&'); // escape $, \ and } + } + getInsertTextForValue(value, separatorAfter) { + const text = JSON.stringify(value, null, '\t'); + if (text === '{}') { + return '{$1}' + separatorAfter; + } + else if (text === '[]') { + return '[$1]' + separatorAfter; + } + return this.getInsertTextForPlainText(text + separatorAfter); + } + getInsertTextForSnippetValue(value, separatorAfter) { + const replacer = (value) => { + if (typeof value === 'string') { + if (value[0] === '^') { + return value.substr(1); + } + } + return JSON.stringify(value); + }; + return stringifyObject(value, '', replacer) + separatorAfter; + } + getInsertTextForGuessedValue(value, separatorAfter) { + switch (typeof value) { + case 'object': + if (value === null) { + return '${1:null}' + separatorAfter; + } + return this.getInsertTextForValue(value, separatorAfter); + case 'string': + let snippetValue = JSON.stringify(value); + snippetValue = snippetValue.substr(1, snippetValue.length - 2); // remove quotes + snippetValue = this.getInsertTextForPlainText(snippetValue); // escape \ and } + return '"${1:' + snippetValue + '}"' + separatorAfter; + case 'number': + case 'boolean': + return '${1:' + JSON.stringify(value) + '}' + separatorAfter; + } + return this.getInsertTextForValue(value, separatorAfter); + } + getSuggestionKind(type) { + if (Array.isArray(type)) { + const array = type; + type = array.length > 0 ? array[0] : undefined; + } + if (!type) { + return CompletionItemKind.Value; + } + switch (type) { + case 'string': return CompletionItemKind.Value; + case 'object': return CompletionItemKind.Module; + case 'property': return CompletionItemKind.Property; + default: return CompletionItemKind.Value; + } + } + getLabelTextForMatchingNode(node, document) { + switch (node.type) { + case 'array': + return '[]'; + case 'object': + return '{}'; + default: + const content = document.getText().substr(node.offset, node.length); + return content; + } + } + getInsertTextForMatchingNode(node, document, separatorAfter) { + switch (node.type) { + case 'array': + return this.getInsertTextForValue([], separatorAfter); + case 'object': + return this.getInsertTextForValue({}, separatorAfter); + default: + const content = document.getText().substr(node.offset, node.length) + separatorAfter; + return this.getInsertTextForPlainText(content); + } + } + getInsertTextForProperty(key, propertySchema, addValue, separatorAfter) { + const propertyText = this.getInsertTextForValue(key, ''); + if (!addValue) { + return propertyText; + } + const resultText = propertyText + ': '; + let value; + let nValueProposals = 0; + if (propertySchema) { + if (Array.isArray(propertySchema.defaultSnippets)) { + if (propertySchema.defaultSnippets.length === 1) { + const body = propertySchema.defaultSnippets[0].body; + if (isDefined(body)) { + value = this.getInsertTextForSnippetValue(body, ''); + } + } + nValueProposals += propertySchema.defaultSnippets.length; + } + if (propertySchema.enum) { + if (!value && propertySchema.enum.length === 1) { + value = this.getInsertTextForGuessedValue(propertySchema.enum[0], ''); + } + nValueProposals += propertySchema.enum.length; + } + if (isDefined(propertySchema.const)) { + if (!value) { + value = this.getInsertTextForGuessedValue(propertySchema.const, ''); + } + nValueProposals++; + } + if (isDefined(propertySchema.default)) { + if (!value) { + value = this.getInsertTextForGuessedValue(propertySchema.default, ''); + } + nValueProposals++; + } + if (Array.isArray(propertySchema.examples) && propertySchema.examples.length) { + if (!value) { + value = this.getInsertTextForGuessedValue(propertySchema.examples[0], ''); + } + nValueProposals += propertySchema.examples.length; + } + if (nValueProposals === 0) { + let type = Array.isArray(propertySchema.type) ? propertySchema.type[0] : propertySchema.type; + if (!type) { + if (propertySchema.properties) { + type = 'object'; + } + else if (propertySchema.items) { + type = 'array'; + } + } + switch (type) { + case 'boolean': + value = '$1'; + break; + case 'string': + value = '"$1"'; + break; + case 'object': + value = '{$1}'; + break; + case 'array': + value = '[$1]'; + break; + case 'number': + case 'integer': + value = '${1:0}'; + break; + case 'null': + value = '${1:null}'; + break; + default: + return propertyText; + } + } + } + if (!value || nValueProposals > 1) { + value = '$1'; + } + return resultText + value + separatorAfter; + } + getCurrentWord(document, offset) { + let i = offset - 1; + const text = document.getText(); + while (i >= 0 && ' \t\n\r\v":{[,]}'.indexOf(text.charAt(i)) === -1) { + i--; + } + return text.substring(i + 1, offset); + } + evaluateSeparatorAfter(document, offset) { + const scanner = createScanner(document.getText(), true); + scanner.setPosition(offset); + const token = scanner.scan(); + switch (token) { + case 5 /* Json.SyntaxKind.CommaToken */: + case 2 /* Json.SyntaxKind.CloseBraceToken */: + case 4 /* Json.SyntaxKind.CloseBracketToken */: + case 17 /* Json.SyntaxKind.EOF */: + return ''; + default: + return ','; + } + } + findItemAtOffset(node, document, offset) { + const scanner = createScanner(document.getText(), true); + const children = node.items; + for (let i = children.length - 1; i >= 0; i--) { + const child = children[i]; + if (offset > child.offset + child.length) { + scanner.setPosition(child.offset + child.length); + const token = scanner.scan(); + if (token === 5 /* Json.SyntaxKind.CommaToken */ && offset >= scanner.getTokenOffset() + scanner.getTokenLength()) { + return i + 1; + } + return i; + } + else if (offset >= child.offset) { + return i; + } + } + return 0; + } + isInComment(document, start, offset) { + const scanner = createScanner(document.getText(), false); + scanner.setPosition(start); + let token = scanner.scan(); + while (token !== 17 /* Json.SyntaxKind.EOF */ && (scanner.getTokenOffset() + scanner.getTokenLength() < offset)) { + token = scanner.scan(); + } + return (token === 12 /* Json.SyntaxKind.LineCommentTrivia */ || token === 13 /* Json.SyntaxKind.BlockCommentTrivia */) && scanner.getTokenOffset() <= offset; + } + fromMarkup(markupString) { + if (markupString && this.doesSupportMarkdown()) { + return { + kind: MarkupKind.Markdown, + value: markupString + }; + } + return undefined; + } + doesSupportMarkdown() { + if (!isDefined(this.supportsMarkdown)) { + const documentationFormat = this.clientCapabilities.textDocument?.completion?.completionItem?.documentationFormat; + this.supportsMarkdown = Array.isArray(documentationFormat) && documentationFormat.indexOf(MarkupKind.Markdown) !== -1; + } + return this.supportsMarkdown; + } + doesSupportsCommitCharacters() { + if (!isDefined(this.supportsCommitCharacters)) { + this.labelDetailsSupport = this.clientCapabilities.textDocument?.completion?.completionItem?.commitCharactersSupport; + } + return this.supportsCommitCharacters; + } + doesSupportsLabelDetails() { + if (!isDefined(this.labelDetailsSupport)) { + this.labelDetailsSupport = this.clientCapabilities.textDocument?.completion?.completionItem?.labelDetailsSupport; + } + return this.labelDetailsSupport; + } +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +class JSONHover { + constructor(schemaService, contributions = [], promiseConstructor) { + this.schemaService = schemaService; + this.contributions = contributions; + this.promise = promiseConstructor || Promise; + } + doHover(document, position, doc) { + const offset = document.offsetAt(position); + let node = doc.getNodeFromOffset(offset); + if (!node || (node.type === 'object' || node.type === 'array') && offset > node.offset + 1 && offset < node.offset + node.length - 1) { + return this.promise.resolve(null); + } + const hoverRangeNode = node; + // use the property description when hovering over an object key + if (node.type === 'string') { + const parent = node.parent; + if (parent && parent.type === 'property' && parent.keyNode === node) { + node = parent.valueNode; + if (!node) { + return this.promise.resolve(null); + } + } + } + const hoverRange = Range$a.create(document.positionAt(hoverRangeNode.offset), document.positionAt(hoverRangeNode.offset + hoverRangeNode.length)); + const createHover = (contents) => { + const result = { + contents: contents, + range: hoverRange + }; + return result; + }; + const location = getNodePath(node); + for (let i = this.contributions.length - 1; i >= 0; i--) { + const contribution = this.contributions[i]; + const promise = contribution.getInfoContribution(document.uri, location); + if (promise) { + return promise.then(htmlContent => createHover(htmlContent)); + } + } + return this.schemaService.getSchemaForResource(document.uri, doc).then((schema) => { + if (schema && node) { + const matchingSchemas = doc.getMatchingSchemas(schema.schema, node.offset); + let title = undefined; + let markdownDescription = undefined; + let markdownEnumValueDescription = undefined, enumValue = undefined; + matchingSchemas.every((s) => { + if (s.node === node && !s.inverted && s.schema) { + title = title || s.schema.title; + markdownDescription = markdownDescription || s.schema.markdownDescription || toMarkdown(s.schema.description); + if (s.schema.enum) { + const idx = s.schema.enum.indexOf(getNodeValue(node)); + if (s.schema.markdownEnumDescriptions) { + markdownEnumValueDescription = s.schema.markdownEnumDescriptions[idx]; + } + else if (s.schema.enumDescriptions) { + markdownEnumValueDescription = toMarkdown(s.schema.enumDescriptions[idx]); + } + if (markdownEnumValueDescription) { + enumValue = s.schema.enum[idx]; + if (typeof enumValue !== 'string') { + enumValue = JSON.stringify(enumValue); + } + } + } + } + return true; + }); + let result = ''; + if (title) { + result = toMarkdown(title); + } + if (markdownDescription) { + if (result.length > 0) { + result += "\n\n"; + } + result += markdownDescription; + } + if (markdownEnumValueDescription) { + if (result.length > 0) { + result += "\n\n"; + } + result += `\`${toMarkdownCodeBlock(enumValue)}\`: ${markdownEnumValueDescription}`; + } + return createHover([result]); + } + return null; + }); + } +} +function toMarkdown(plain) { + if (plain) { + const res = plain.replace(/([^\n\r])(\r?\n)([^\n\r])/gm, '$1\n\n$3'); // single new lines to \n\n (Markdown paragraph) + return res.replace(/[\\`*_{}[\]()#+\-.!]/g, "\\$&"); // escape markdown syntax tokens: http://daringfireball.net/projects/markdown/syntax#backslash + } + return undefined; +} +function toMarkdownCodeBlock(content) { + // see https://daringfireball.net/projects/markdown/syntax#precode + if (content.indexOf('`') !== -1) { + return '`` ' + content + ' ``'; + } + return content; +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +class JSONValidation { + constructor(jsonSchemaService, promiseConstructor) { + this.jsonSchemaService = jsonSchemaService; + this.promise = promiseConstructor; + this.validationEnabled = true; + } + configure(raw) { + if (raw) { + this.validationEnabled = raw.validate !== false; + this.commentSeverity = raw.allowComments ? undefined : DiagnosticSeverity.Error; + } + } + doValidation(textDocument, jsonDocument, documentSettings, schema) { + if (!this.validationEnabled) { + return this.promise.resolve([]); + } + const diagnostics = []; + const added = {}; + const addProblem = (problem) => { + // remove duplicated messages + const signature = problem.range.start.line + ' ' + problem.range.start.character + ' ' + problem.message; + if (!added[signature]) { + added[signature] = true; + diagnostics.push(problem); + } + }; + const getDiagnostics = (schema) => { + let trailingCommaSeverity = documentSettings?.trailingCommas ? toDiagnosticSeverity(documentSettings.trailingCommas) : DiagnosticSeverity.Error; + let commentSeverity = documentSettings?.comments ? toDiagnosticSeverity(documentSettings.comments) : this.commentSeverity; + let schemaValidation = documentSettings?.schemaValidation ? toDiagnosticSeverity(documentSettings.schemaValidation) : DiagnosticSeverity.Warning; + let schemaRequest = documentSettings?.schemaRequest ? toDiagnosticSeverity(documentSettings.schemaRequest) : DiagnosticSeverity.Warning; + if (schema) { + const addSchemaProblem = (errorMessage, errorCode) => { + if (jsonDocument.root && schemaRequest) { + const astRoot = jsonDocument.root; + const property = astRoot.type === 'object' ? astRoot.properties[0] : undefined; + if (property && property.keyNode.value === '$schema') { + const node = property.valueNode || property; + const range = Range$a.create(textDocument.positionAt(node.offset), textDocument.positionAt(node.offset + node.length)); + addProblem(Diagnostic.create(range, errorMessage, schemaRequest, errorCode)); + } + else { + const range = Range$a.create(textDocument.positionAt(astRoot.offset), textDocument.positionAt(astRoot.offset + 1)); + addProblem(Diagnostic.create(range, errorMessage, schemaRequest, errorCode)); + } + } + }; + if (schema.errors.length) { + addSchemaProblem(schema.errors[0], ErrorCode.SchemaResolveError); + } + else if (schemaValidation) { + for (const warning of schema.warnings) { + addSchemaProblem(warning, ErrorCode.SchemaUnsupportedFeature); + } + const semanticErrors = jsonDocument.validate(textDocument, schema.schema, schemaValidation, documentSettings?.schemaDraft); + if (semanticErrors) { + semanticErrors.forEach(addProblem); + } + } + if (schemaAllowsComments(schema.schema)) { + commentSeverity = undefined; + } + if (schemaAllowsTrailingCommas(schema.schema)) { + trailingCommaSeverity = undefined; + } + } + for (const p of jsonDocument.syntaxErrors) { + if (p.code === ErrorCode.TrailingComma) { + if (typeof trailingCommaSeverity !== 'number') { + continue; + } + p.severity = trailingCommaSeverity; + } + addProblem(p); + } + if (typeof commentSeverity === 'number') { + const message = t$2('Comments are not permitted in JSON.'); + jsonDocument.comments.forEach(c => { + addProblem(Diagnostic.create(c, message, commentSeverity, ErrorCode.CommentNotPermitted)); + }); + } + return diagnostics; + }; + if (schema) { + const uri = schema.id || ('schemaservice://untitled/' + idCounter$1++); + const handle = this.jsonSchemaService.registerExternalSchema({ uri, schema }); + return handle.getResolvedSchema().then(resolvedSchema => { + return getDiagnostics(resolvedSchema); + }); + } + return this.jsonSchemaService.getSchemaForResource(textDocument.uri, jsonDocument).then(schema => { + return getDiagnostics(schema); + }); + } + getLanguageStatus(textDocument, jsonDocument) { + return { schemas: this.jsonSchemaService.getSchemaURIsForResource(textDocument.uri, jsonDocument) }; + } +} +let idCounter$1 = 0; +function schemaAllowsComments(schemaRef) { + if (schemaRef && typeof schemaRef === 'object') { + if (isBoolean(schemaRef.allowComments)) { + return schemaRef.allowComments; + } + if (schemaRef.allOf) { + for (const schema of schemaRef.allOf) { + const allow = schemaAllowsComments(schema); + if (isBoolean(allow)) { + return allow; + } + } + } + } + return undefined; +} +function schemaAllowsTrailingCommas(schemaRef) { + if (schemaRef && typeof schemaRef === 'object') { + if (isBoolean(schemaRef.allowTrailingCommas)) { + return schemaRef.allowTrailingCommas; + } + const deprSchemaRef = schemaRef; + if (isBoolean(deprSchemaRef['allowsTrailingCommas'])) { // deprecated + return deprSchemaRef['allowsTrailingCommas']; + } + if (schemaRef.allOf) { + for (const schema of schemaRef.allOf) { + const allow = schemaAllowsTrailingCommas(schema); + if (isBoolean(allow)) { + return allow; + } + } + } + } + return undefined; +} +function toDiagnosticSeverity(severityLevel) { + switch (severityLevel) { + case 'error': return DiagnosticSeverity.Error; + case 'warning': return DiagnosticSeverity.Warning; + case 'ignore': return undefined; + } + return undefined; +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +const Digit0 = 48; +const Digit9 = 57; +const A = 65; +const a = 97; +const f = 102; +function hexDigit(charCode) { + if (charCode < Digit0) { + return 0; + } + if (charCode <= Digit9) { + return charCode - Digit0; + } + if (charCode < a) { + charCode += (a - A); + } + if (charCode >= a && charCode <= f) { + return charCode - a + 10; + } + return 0; +} +function colorFromHex(text) { + if (text[0] !== '#') { + return undefined; + } + switch (text.length) { + case 4: + return { + red: (hexDigit(text.charCodeAt(1)) * 0x11) / 255.0, + green: (hexDigit(text.charCodeAt(2)) * 0x11) / 255.0, + blue: (hexDigit(text.charCodeAt(3)) * 0x11) / 255.0, + alpha: 1 + }; + case 5: + return { + red: (hexDigit(text.charCodeAt(1)) * 0x11) / 255.0, + green: (hexDigit(text.charCodeAt(2)) * 0x11) / 255.0, + blue: (hexDigit(text.charCodeAt(3)) * 0x11) / 255.0, + alpha: (hexDigit(text.charCodeAt(4)) * 0x11) / 255.0, + }; + case 7: + return { + red: (hexDigit(text.charCodeAt(1)) * 0x10 + hexDigit(text.charCodeAt(2))) / 255.0, + green: (hexDigit(text.charCodeAt(3)) * 0x10 + hexDigit(text.charCodeAt(4))) / 255.0, + blue: (hexDigit(text.charCodeAt(5)) * 0x10 + hexDigit(text.charCodeAt(6))) / 255.0, + alpha: 1 + }; + case 9: + return { + red: (hexDigit(text.charCodeAt(1)) * 0x10 + hexDigit(text.charCodeAt(2))) / 255.0, + green: (hexDigit(text.charCodeAt(3)) * 0x10 + hexDigit(text.charCodeAt(4))) / 255.0, + blue: (hexDigit(text.charCodeAt(5)) * 0x10 + hexDigit(text.charCodeAt(6))) / 255.0, + alpha: (hexDigit(text.charCodeAt(7)) * 0x10 + hexDigit(text.charCodeAt(8))) / 255.0 + }; + } + return undefined; +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +class JSONDocumentSymbols { + constructor(schemaService) { + this.schemaService = schemaService; + } + findDocumentSymbols(document, doc, context = { resultLimit: Number.MAX_VALUE }) { + const root = doc.root; + if (!root) { + return []; + } + let limit = context.resultLimit || Number.MAX_VALUE; + // special handling for key bindings + const resourceString = document.uri; + if ((resourceString === 'vscode://defaultsettings/keybindings.json') || endsWith$1(resourceString.toLowerCase(), '/user/keybindings.json')) { + if (root.type === 'array') { + const result = []; + for (const item of root.items) { + if (item.type === 'object') { + for (const property of item.properties) { + if (property.keyNode.value === 'key' && property.valueNode) { + const location = Location.create(document.uri, getRange(document, item)); + result.push({ name: getName(property.valueNode), kind: SymbolKind$1.Function, location: location }); + limit--; + if (limit <= 0) { + if (context && context.onResultLimitExceeded) { + context.onResultLimitExceeded(resourceString); + } + return result; + } + } + } + } + } + return result; + } + } + const toVisit = [ + { node: root, containerName: '' } + ]; + let nextToVisit = 0; + let limitExceeded = false; + const result = []; + const collectOutlineEntries = (node, containerName) => { + if (node.type === 'array') { + node.items.forEach(node => { + if (node) { + toVisit.push({ node, containerName }); + } + }); + } + else if (node.type === 'object') { + node.properties.forEach((property) => { + const valueNode = property.valueNode; + if (valueNode) { + if (limit > 0) { + limit--; + const location = Location.create(document.uri, getRange(document, property)); + const childContainerName = containerName ? containerName + '.' + property.keyNode.value : property.keyNode.value; + result.push({ name: this.getKeyLabel(property), kind: this.getSymbolKind(valueNode.type), location: location, containerName: containerName }); + toVisit.push({ node: valueNode, containerName: childContainerName }); + } + else { + limitExceeded = true; + } + } + }); + } + }; + // breath first traversal + while (nextToVisit < toVisit.length) { + const next = toVisit[nextToVisit++]; + collectOutlineEntries(next.node, next.containerName); + } + if (limitExceeded && context && context.onResultLimitExceeded) { + context.onResultLimitExceeded(resourceString); + } + return result; + } + findDocumentSymbols2(document, doc, context = { resultLimit: Number.MAX_VALUE }) { + const root = doc.root; + if (!root) { + return []; + } + let limit = context.resultLimit || Number.MAX_VALUE; + // special handling for key bindings + const resourceString = document.uri; + if ((resourceString === 'vscode://defaultsettings/keybindings.json') || endsWith$1(resourceString.toLowerCase(), '/user/keybindings.json')) { + if (root.type === 'array') { + const result = []; + for (const item of root.items) { + if (item.type === 'object') { + for (const property of item.properties) { + if (property.keyNode.value === 'key' && property.valueNode) { + const range = getRange(document, item); + const selectionRange = getRange(document, property.keyNode); + result.push({ name: getName(property.valueNode), kind: SymbolKind$1.Function, range, selectionRange }); + limit--; + if (limit <= 0) { + if (context && context.onResultLimitExceeded) { + context.onResultLimitExceeded(resourceString); + } + return result; + } + } + } + } + } + return result; + } + } + const result = []; + const toVisit = [ + { node: root, result } + ]; + let nextToVisit = 0; + let limitExceeded = false; + const collectOutlineEntries = (node, result) => { + if (node.type === 'array') { + node.items.forEach((node, index) => { + if (node) { + if (limit > 0) { + limit--; + const range = getRange(document, node); + const selectionRange = range; + const name = String(index); + const symbol = { name, kind: this.getSymbolKind(node.type), range, selectionRange, children: [] }; + result.push(symbol); + toVisit.push({ result: symbol.children, node }); + } + else { + limitExceeded = true; + } + } + }); + } + else if (node.type === 'object') { + node.properties.forEach((property) => { + const valueNode = property.valueNode; + if (valueNode) { + if (limit > 0) { + limit--; + const range = getRange(document, property); + const selectionRange = getRange(document, property.keyNode); + const children = []; + const symbol = { name: this.getKeyLabel(property), kind: this.getSymbolKind(valueNode.type), range, selectionRange, children, detail: this.getDetail(valueNode) }; + result.push(symbol); + toVisit.push({ result: children, node: valueNode }); + } + else { + limitExceeded = true; + } + } + }); + } + }; + // breath first traversal + while (nextToVisit < toVisit.length) { + const next = toVisit[nextToVisit++]; + collectOutlineEntries(next.node, next.result); + } + if (limitExceeded && context && context.onResultLimitExceeded) { + context.onResultLimitExceeded(resourceString); + } + return result; + } + getSymbolKind(nodeType) { + switch (nodeType) { + case 'object': + return SymbolKind$1.Module; + case 'string': + return SymbolKind$1.String; + case 'number': + return SymbolKind$1.Number; + case 'array': + return SymbolKind$1.Array; + case 'boolean': + return SymbolKind$1.Boolean; + default: // 'null' + return SymbolKind$1.Variable; + } + } + getKeyLabel(property) { + let name = property.keyNode.value; + if (name) { + name = name.replace(/[\n]/g, '↵'); + } + if (name && name.trim()) { + return name; + } + return `"${name}"`; + } + getDetail(node) { + if (!node) { + return undefined; + } + if (node.type === 'boolean' || node.type === 'number' || node.type === 'null' || node.type === 'string') { + return String(node.value); + } + else { + if (node.type === 'array') { + return node.children.length ? undefined : '[]'; + } + else if (node.type === 'object') { + return node.children.length ? undefined : '{}'; + } + } + return undefined; + } + findDocumentColors(document, doc, context) { + return this.schemaService.getSchemaForResource(document.uri, doc).then(schema => { + const result = []; + if (schema) { + let limit = context && typeof context.resultLimit === 'number' ? context.resultLimit : Number.MAX_VALUE; + const matchingSchemas = doc.getMatchingSchemas(schema.schema); + const visitedNode = {}; + for (const s of matchingSchemas) { + if (!s.inverted && s.schema && (s.schema.format === 'color' || s.schema.format === 'color-hex') && s.node && s.node.type === 'string') { + const nodeId = String(s.node.offset); + if (!visitedNode[nodeId]) { + const color = colorFromHex(getNodeValue(s.node)); + if (color) { + const range = getRange(document, s.node); + result.push({ color, range }); + } + visitedNode[nodeId] = true; + limit--; + if (limit <= 0) { + if (context && context.onResultLimitExceeded) { + context.onResultLimitExceeded(document.uri); + } + return result; + } + } + } + } + } + return result; + }); + } + getColorPresentations(document, doc, color, range) { + const result = []; + const red256 = Math.round(color.red * 255), green256 = Math.round(color.green * 255), blue256 = Math.round(color.blue * 255); + function toTwoDigitHex(n) { + const r = n.toString(16); + return r.length !== 2 ? '0' + r : r; + } + let label; + if (color.alpha === 1) { + label = `#${toTwoDigitHex(red256)}${toTwoDigitHex(green256)}${toTwoDigitHex(blue256)}`; + } + else { + label = `#${toTwoDigitHex(red256)}${toTwoDigitHex(green256)}${toTwoDigitHex(blue256)}${toTwoDigitHex(Math.round(color.alpha * 255))}`; + } + result.push({ label: label, textEdit: TextEdit.replace(range, JSON.stringify(label)) }); + return result; + } +} +function getRange(document, node) { + return Range$a.create(document.positionAt(node.offset), document.positionAt(node.offset + node.length)); +} +function getName(node) { + return getNodeValue(node) || t$2('<empty>'); +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +const schemaContributions = { + schemaAssociations: [], + schemas: { + // bundle the schema-schema to include (localized) descriptions + 'http://json-schema.org/draft-04/schema#': { + '$schema': 'http://json-schema.org/draft-04/schema#', + 'definitions': { + 'schemaArray': { + 'type': 'array', + 'minItems': 1, + 'items': { + '$ref': '#' + } + }, + 'positiveInteger': { + 'type': 'integer', + 'minimum': 0 + }, + 'positiveIntegerDefault0': { + 'allOf': [ + { + '$ref': '#/definitions/positiveInteger' + }, + { + 'default': 0 + } + ] + }, + 'simpleTypes': { + 'type': 'string', + 'enum': [ + 'array', + 'boolean', + 'integer', + 'null', + 'number', + 'object', + 'string' + ] + }, + 'stringArray': { + 'type': 'array', + 'items': { + 'type': 'string' + }, + 'minItems': 1, + 'uniqueItems': true + } + }, + 'type': 'object', + 'properties': { + 'id': { + 'type': 'string', + 'format': 'uri' + }, + '$schema': { + 'type': 'string', + 'format': 'uri' + }, + 'title': { + 'type': 'string' + }, + 'description': { + 'type': 'string' + }, + 'default': {}, + 'multipleOf': { + 'type': 'number', + 'minimum': 0, + 'exclusiveMinimum': true + }, + 'maximum': { + 'type': 'number' + }, + 'exclusiveMaximum': { + 'type': 'boolean', + 'default': false + }, + 'minimum': { + 'type': 'number' + }, + 'exclusiveMinimum': { + 'type': 'boolean', + 'default': false + }, + 'maxLength': { + 'allOf': [ + { + '$ref': '#/definitions/positiveInteger' + } + ] + }, + 'minLength': { + 'allOf': [ + { + '$ref': '#/definitions/positiveIntegerDefault0' + } + ] + }, + 'pattern': { + 'type': 'string', + 'format': 'regex' + }, + 'additionalItems': { + 'anyOf': [ + { + 'type': 'boolean' + }, + { + '$ref': '#' + } + ], + 'default': {} + }, + 'items': { + 'anyOf': [ + { + '$ref': '#' + }, + { + '$ref': '#/definitions/schemaArray' + } + ], + 'default': {} + }, + 'maxItems': { + 'allOf': [ + { + '$ref': '#/definitions/positiveInteger' + } + ] + }, + 'minItems': { + 'allOf': [ + { + '$ref': '#/definitions/positiveIntegerDefault0' + } + ] + }, + 'uniqueItems': { + 'type': 'boolean', + 'default': false + }, + 'maxProperties': { + 'allOf': [ + { + '$ref': '#/definitions/positiveInteger' + } + ] + }, + 'minProperties': { + 'allOf': [ + { + '$ref': '#/definitions/positiveIntegerDefault0' + } + ] + }, + 'required': { + 'allOf': [ + { + '$ref': '#/definitions/stringArray' + } + ] + }, + 'additionalProperties': { + 'anyOf': [ + { + 'type': 'boolean' + }, + { + '$ref': '#' + } + ], + 'default': {} + }, + 'definitions': { + 'type': 'object', + 'additionalProperties': { + '$ref': '#' + }, + 'default': {} + }, + 'properties': { + 'type': 'object', + 'additionalProperties': { + '$ref': '#' + }, + 'default': {} + }, + 'patternProperties': { + 'type': 'object', + 'additionalProperties': { + '$ref': '#' + }, + 'default': {} + }, + 'dependencies': { + 'type': 'object', + 'additionalProperties': { + 'anyOf': [ + { + '$ref': '#' + }, + { + '$ref': '#/definitions/stringArray' + } + ] + } + }, + 'enum': { + 'type': 'array', + 'minItems': 1, + 'uniqueItems': true + }, + 'type': { + 'anyOf': [ + { + '$ref': '#/definitions/simpleTypes' + }, + { + 'type': 'array', + 'items': { + '$ref': '#/definitions/simpleTypes' + }, + 'minItems': 1, + 'uniqueItems': true + } + ] + }, + 'format': { + 'anyOf': [ + { + 'type': 'string', + 'enum': [ + 'date-time', + 'uri', + 'email', + 'hostname', + 'ipv4', + 'ipv6', + 'regex' + ] + }, + { + 'type': 'string' + } + ] + }, + 'allOf': { + 'allOf': [ + { + '$ref': '#/definitions/schemaArray' + } + ] + }, + 'anyOf': { + 'allOf': [ + { + '$ref': '#/definitions/schemaArray' + } + ] + }, + 'oneOf': { + 'allOf': [ + { + '$ref': '#/definitions/schemaArray' + } + ] + }, + 'not': { + 'allOf': [ + { + '$ref': '#' + } + ] + } + }, + 'dependencies': { + 'exclusiveMaximum': [ + 'maximum' + ], + 'exclusiveMinimum': [ + 'minimum' + ] + }, + 'default': {} + }, + 'http://json-schema.org/draft-07/schema#': { + 'definitions': { + 'schemaArray': { + 'type': 'array', + 'minItems': 1, + 'items': { '$ref': '#' } + }, + 'nonNegativeInteger': { + 'type': 'integer', + 'minimum': 0 + }, + 'nonNegativeIntegerDefault0': { + 'allOf': [ + { '$ref': '#/definitions/nonNegativeInteger' }, + { 'default': 0 } + ] + }, + 'simpleTypes': { + 'enum': [ + 'array', + 'boolean', + 'integer', + 'null', + 'number', + 'object', + 'string' + ] + }, + 'stringArray': { + 'type': 'array', + 'items': { 'type': 'string' }, + 'uniqueItems': true, + 'default': [] + } + }, + 'type': ['object', 'boolean'], + 'properties': { + '$id': { + 'type': 'string', + 'format': 'uri-reference' + }, + '$schema': { + 'type': 'string', + 'format': 'uri' + }, + '$ref': { + 'type': 'string', + 'format': 'uri-reference' + }, + '$comment': { + 'type': 'string' + }, + 'title': { + 'type': 'string' + }, + 'description': { + 'type': 'string' + }, + 'default': true, + 'readOnly': { + 'type': 'boolean', + 'default': false + }, + 'examples': { + 'type': 'array', + 'items': true + }, + 'multipleOf': { + 'type': 'number', + 'exclusiveMinimum': 0 + }, + 'maximum': { + 'type': 'number' + }, + 'exclusiveMaximum': { + 'type': 'number' + }, + 'minimum': { + 'type': 'number' + }, + 'exclusiveMinimum': { + 'type': 'number' + }, + 'maxLength': { '$ref': '#/definitions/nonNegativeInteger' }, + 'minLength': { '$ref': '#/definitions/nonNegativeIntegerDefault0' }, + 'pattern': { + 'type': 'string', + 'format': 'regex' + }, + 'additionalItems': { '$ref': '#' }, + 'items': { + 'anyOf': [ + { '$ref': '#' }, + { '$ref': '#/definitions/schemaArray' } + ], + 'default': true + }, + 'maxItems': { '$ref': '#/definitions/nonNegativeInteger' }, + 'minItems': { '$ref': '#/definitions/nonNegativeIntegerDefault0' }, + 'uniqueItems': { + 'type': 'boolean', + 'default': false + }, + 'contains': { '$ref': '#' }, + 'maxProperties': { '$ref': '#/definitions/nonNegativeInteger' }, + 'minProperties': { '$ref': '#/definitions/nonNegativeIntegerDefault0' }, + 'required': { '$ref': '#/definitions/stringArray' }, + 'additionalProperties': { '$ref': '#' }, + 'definitions': { + 'type': 'object', + 'additionalProperties': { '$ref': '#' }, + 'default': {} + }, + 'properties': { + 'type': 'object', + 'additionalProperties': { '$ref': '#' }, + 'default': {} + }, + 'patternProperties': { + 'type': 'object', + 'additionalProperties': { '$ref': '#' }, + 'propertyNames': { 'format': 'regex' }, + 'default': {} + }, + 'dependencies': { + 'type': 'object', + 'additionalProperties': { + 'anyOf': [ + { '$ref': '#' }, + { '$ref': '#/definitions/stringArray' } + ] + } + }, + 'propertyNames': { '$ref': '#' }, + 'const': true, + 'enum': { + 'type': 'array', + 'items': true, + 'minItems': 1, + 'uniqueItems': true + }, + 'type': { + 'anyOf': [ + { '$ref': '#/definitions/simpleTypes' }, + { + 'type': 'array', + 'items': { '$ref': '#/definitions/simpleTypes' }, + 'minItems': 1, + 'uniqueItems': true + } + ] + }, + 'format': { 'type': 'string' }, + 'contentMediaType': { 'type': 'string' }, + 'contentEncoding': { 'type': 'string' }, + 'if': { '$ref': '#' }, + 'then': { '$ref': '#' }, + 'else': { '$ref': '#' }, + 'allOf': { '$ref': '#/definitions/schemaArray' }, + 'anyOf': { '$ref': '#/definitions/schemaArray' }, + 'oneOf': { '$ref': '#/definitions/schemaArray' }, + 'not': { '$ref': '#' } + }, + 'default': true + } + } +}; +const descriptions = { + id: t$2("A unique identifier for the schema."), + $schema: t$2("The schema to verify this document against."), + title: t$2("A descriptive title of the element."), + description: t$2("A long description of the element. Used in hover menus and suggestions."), + default: t$2("A default value. Used by suggestions."), + multipleOf: t$2("A number that should cleanly divide the current value (i.e. have no remainder)."), + maximum: t$2("The maximum numerical value, inclusive by default."), + exclusiveMaximum: t$2("Makes the maximum property exclusive."), + minimum: t$2("The minimum numerical value, inclusive by default."), + exclusiveMinimum: t$2("Makes the minimum property exclusive."), + maxLength: t$2("The maximum length of a string."), + minLength: t$2("The minimum length of a string."), + pattern: t$2("A regular expression to match the string against. It is not implicitly anchored."), + additionalItems: t$2("For arrays, only when items is set as an array. If it is a schema, then this schema validates items after the ones specified by the items array. If it is false, then additional items will cause validation to fail."), + items: t$2("For arrays. Can either be a schema to validate every element against or an array of schemas to validate each item against in order (the first schema will validate the first element, the second schema will validate the second element, and so on."), + maxItems: t$2("The maximum number of items that can be inside an array. Inclusive."), + minItems: t$2("The minimum number of items that can be inside an array. Inclusive."), + uniqueItems: t$2("If all of the items in the array must be unique. Defaults to false."), + maxProperties: t$2("The maximum number of properties an object can have. Inclusive."), + minProperties: t$2("The minimum number of properties an object can have. Inclusive."), + required: t$2("An array of strings that lists the names of all properties required on this object."), + additionalProperties: t$2("Either a schema or a boolean. If a schema, then used to validate all properties not matched by 'properties' or 'patternProperties'. If false, then any properties not matched by either will cause this schema to fail."), + definitions: t$2("Not used for validation. Place subschemas here that you wish to reference inline with $ref."), + properties: t$2("A map of property names to schemas for each property."), + patternProperties: t$2("A map of regular expressions on property names to schemas for matching properties."), + dependencies: t$2("A map of property names to either an array of property names or a schema. An array of property names means the property named in the key depends on the properties in the array being present in the object in order to be valid. If the value is a schema, then the schema is only applied to the object if the property in the key exists on the object."), + enum: t$2("The set of literal values that are valid."), + type: t$2("Either a string of one of the basic schema types (number, integer, null, array, object, boolean, string) or an array of strings specifying a subset of those types."), + format: t$2("Describes the format expected for the value."), + allOf: t$2("An array of schemas, all of which must match."), + anyOf: t$2("An array of schemas, where at least one must match."), + oneOf: t$2("An array of schemas, exactly one of which must match."), + not: t$2("A schema which must not match."), + $id: t$2("A unique identifier for the schema."), + $ref: t$2("Reference a definition hosted on any location."), + $comment: t$2("Comments from schema authors to readers or maintainers of the schema."), + readOnly: t$2("Indicates that the value of the instance is managed exclusively by the owning authority."), + examples: t$2("Sample JSON values associated with a particular schema, for the purpose of illustrating usage."), + contains: t$2("An array instance is valid against \"contains\" if at least one of its elements is valid against the given schema."), + propertyNames: t$2("If the instance is an object, this keyword validates if every property name in the instance validates against the provided schema."), + const: t$2("An instance validates successfully against this keyword if its value is equal to the value of the keyword."), + contentMediaType: t$2("Describes the media type of a string property."), + contentEncoding: t$2("Describes the content encoding of a string property."), + if: t$2("The validation outcome of the \"if\" subschema controls which of the \"then\" or \"else\" keywords are evaluated."), + then: t$2("The \"if\" subschema is used for validation when the \"if\" subschema succeeds."), + else: t$2("The \"else\" subschema is used for validation when the \"if\" subschema fails.") +}; +for (const schemaName in schemaContributions.schemas) { + const schema = schemaContributions.schemas[schemaName]; + for (const property in schema.properties) { + let propertyObject = schema.properties[property]; + if (typeof propertyObject === 'boolean') { + propertyObject = schema.properties[property] = {}; + } + const description = descriptions[property]; + if (description) { + propertyObject['description'] = description; + } + } +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Copyright (c) 2013, Nick Fitzgerald + * Licensed under the MIT License. See LICENCE.md in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +function createRegex(glob, opts) { + if (typeof glob !== 'string') { + throw new TypeError('Expected a string'); + } + const str = String(glob); + // The regexp we are building, as a string. + let reStr = ""; + // Whether we are matching so called "extended" globs (like bash) and should + // support single character matching, matching ranges of characters, group + // matching, etc. + const extended = opts ? !!opts.extended : false; + // When globstar is _false_ (default), '/foo/*' is translated a regexp like + // '^\/foo\/.*$' which will match any string beginning with '/foo/' + // When globstar is _true_, '/foo/*' is translated to regexp like + // '^\/foo\/[^/]*$' which will match any string beginning with '/foo/' BUT + // which does not have a '/' to the right of it. + // E.g. with '/foo/*' these will match: '/foo/bar', '/foo/bar.txt' but + // these will not '/foo/bar/baz', '/foo/bar/baz.txt' + // Lastely, when globstar is _true_, '/foo/**' is equivelant to '/foo/*' when + // globstar is _false_ + const globstar = opts ? !!opts.globstar : false; + // If we are doing extended matching, this boolean is true when we are inside + // a group (eg {*.html,*.js}), and false otherwise. + let inGroup = false; + // RegExp flags (eg "i" ) to pass in to RegExp constructor. + const flags = opts && typeof (opts.flags) === "string" ? opts.flags : ""; + let c; + for (let i = 0, len = str.length; i < len; i++) { + c = str[i]; + switch (c) { + case "/": + case "$": + case "^": + case "+": + case ".": + case "(": + case ")": + case "=": + case "!": + case "|": + reStr += "\\" + c; + break; + case "?": + if (extended) { + reStr += "."; + break; + } + case "[": + case "]": + if (extended) { + reStr += c; + break; + } + case "{": + if (extended) { + inGroup = true; + reStr += "("; + break; + } + case "}": + if (extended) { + inGroup = false; + reStr += ")"; + break; + } + case ",": + if (inGroup) { + reStr += "|"; + break; + } + reStr += "\\" + c; + break; + case "*": + // Move over all consecutive "*"'s. + // Also store the previous and next characters + const prevChar = str[i - 1]; + let starCount = 1; + while (str[i + 1] === "*") { + starCount++; + i++; + } + const nextChar = str[i + 1]; + if (!globstar) { + // globstar is disabled, so treat any number of "*" as one + reStr += ".*"; + } + else { + // globstar is enabled, so determine if this is a globstar segment + const isGlobstar = starCount > 1 // multiple "*"'s + && (prevChar === "/" || prevChar === undefined || prevChar === '{' || prevChar === ',') // from the start of the segment + && (nextChar === "/" || nextChar === undefined || nextChar === ',' || nextChar === '}'); // to the end of the segment + if (isGlobstar) { + if (nextChar === "/") { + i++; // move over the "/" + } + else if (prevChar === '/' && reStr.endsWith('\\/')) { + reStr = reStr.substr(0, reStr.length - 2); + } + // it's a globstar, so match zero or more path segments + reStr += "((?:[^/]*(?:\/|$))*)"; + } + else { + // it's not a globstar, so only match one path segment + reStr += "([^/]*)"; + } + } + break; + default: + reStr += c; + } + } + // When regexp 'g' flag is specified don't + // constrain the regular expression with ^ & $ + if (!flags || !~flags.indexOf('g')) { + reStr = "^" + reStr + "$"; + } + return new RegExp(reStr, flags); +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +const BANG = '!'; +const PATH_SEP = '/'; +class FilePatternAssociation { + constructor(pattern, folderUri, uris) { + this.folderUri = folderUri; + this.uris = uris; + this.globWrappers = []; + try { + for (let patternString of pattern) { + const include = patternString[0] !== BANG; + if (!include) { + patternString = patternString.substring(1); + } + if (patternString.length > 0) { + if (patternString[0] === PATH_SEP) { + patternString = patternString.substring(1); + } + this.globWrappers.push({ + regexp: createRegex('**/' + patternString, { extended: true, globstar: true }), + include: include, + }); + } + } + ; + if (folderUri) { + folderUri = normalizeResourceForMatching(folderUri); + if (!folderUri.endsWith('/')) { + folderUri = folderUri + '/'; + } + this.folderUri = folderUri; + } + } + catch (e) { + this.globWrappers.length = 0; + this.uris = []; + } + } + matchesPattern(fileName) { + if (this.folderUri && !fileName.startsWith(this.folderUri)) { + return false; + } + let match = false; + for (const { regexp, include } of this.globWrappers) { + if (regexp.test(fileName)) { + match = include; + } + } + return match; + } + getURIs() { + return this.uris; + } +} +class SchemaHandle { + constructor(service, uri, unresolvedSchemaContent) { + this.service = service; + this.uri = uri; + this.dependencies = new Set(); + this.anchors = undefined; + if (unresolvedSchemaContent) { + this.unresolvedSchema = this.service.promise.resolve(new UnresolvedSchema(unresolvedSchemaContent)); + } + } + getUnresolvedSchema() { + if (!this.unresolvedSchema) { + this.unresolvedSchema = this.service.loadSchema(this.uri); + } + return this.unresolvedSchema; + } + getResolvedSchema() { + if (!this.resolvedSchema) { + this.resolvedSchema = this.getUnresolvedSchema().then(unresolved => { + return this.service.resolveSchemaContent(unresolved, this); + }); + } + return this.resolvedSchema; + } + clearSchema() { + const hasChanges = !!this.unresolvedSchema; + this.resolvedSchema = undefined; + this.unresolvedSchema = undefined; + this.dependencies.clear(); + this.anchors = undefined; + return hasChanges; + } +} +class UnresolvedSchema { + constructor(schema, errors = []) { + this.schema = schema; + this.errors = errors; + } +} +class ResolvedSchema { + constructor(schema, errors = [], warnings = [], schemaDraft) { + this.schema = schema; + this.errors = errors; + this.warnings = warnings; + this.schemaDraft = schemaDraft; + } + getSection(path) { + const schemaRef = this.getSectionRecursive(path, this.schema); + if (schemaRef) { + return asSchema(schemaRef); + } + return undefined; + } + getSectionRecursive(path, schema) { + if (!schema || typeof schema === 'boolean' || path.length === 0) { + return schema; + } + const next = path.shift(); + if (schema.properties && typeof schema.properties[next]) { + return this.getSectionRecursive(path, schema.properties[next]); + } + else if (schema.patternProperties) { + for (const pattern of Object.keys(schema.patternProperties)) { + const regex = extendedRegExp(pattern); + if (regex?.test(next)) { + return this.getSectionRecursive(path, schema.patternProperties[pattern]); + } + } + } + else if (typeof schema.additionalProperties === 'object') { + return this.getSectionRecursive(path, schema.additionalProperties); + } + else if (next.match('[0-9]+')) { + if (Array.isArray(schema.items)) { + const index = parseInt(next, 10); + if (!isNaN(index) && schema.items[index]) { + return this.getSectionRecursive(path, schema.items[index]); + } + } + else if (schema.items) { + return this.getSectionRecursive(path, schema.items); + } + } + return undefined; + } +} +class JSONSchemaService { + constructor(requestService, contextService, promiseConstructor) { + this.contextService = contextService; + this.requestService = requestService; + this.promiseConstructor = promiseConstructor || Promise; + this.callOnDispose = []; + this.contributionSchemas = {}; + this.contributionAssociations = []; + this.schemasById = {}; + this.filePatternAssociations = []; + this.registeredSchemasIds = {}; + } + getRegisteredSchemaIds(filter) { + return Object.keys(this.registeredSchemasIds).filter(id => { + const scheme = URI.parse(id).scheme; + return scheme !== 'schemaservice' && (!filter || filter(scheme)); + }); + } + get promise() { + return this.promiseConstructor; + } + dispose() { + while (this.callOnDispose.length > 0) { + this.callOnDispose.pop()(); + } + } + onResourceChange(uri) { + // always clear this local cache when a resource changes + this.cachedSchemaForResource = undefined; + let hasChanges = false; + uri = normalizeId(uri); + const toWalk = [uri]; + const all = Object.keys(this.schemasById).map(key => this.schemasById[key]); + while (toWalk.length) { + const curr = toWalk.pop(); + for (let i = 0; i < all.length; i++) { + const handle = all[i]; + if (handle && (handle.uri === curr || handle.dependencies.has(curr))) { + if (handle.uri !== curr) { + toWalk.push(handle.uri); + } + if (handle.clearSchema()) { + hasChanges = true; + } + all[i] = undefined; + } + } + } + return hasChanges; + } + setSchemaContributions(schemaContributions) { + if (schemaContributions.schemas) { + const schemas = schemaContributions.schemas; + for (const id in schemas) { + const normalizedId = normalizeId(id); + this.contributionSchemas[normalizedId] = this.addSchemaHandle(normalizedId, schemas[id]); + } + } + if (Array.isArray(schemaContributions.schemaAssociations)) { + const schemaAssociations = schemaContributions.schemaAssociations; + for (let schemaAssociation of schemaAssociations) { + const uris = schemaAssociation.uris.map(normalizeId); + const association = this.addFilePatternAssociation(schemaAssociation.pattern, schemaAssociation.folderUri, uris); + this.contributionAssociations.push(association); + } + } + } + addSchemaHandle(id, unresolvedSchemaContent) { + const schemaHandle = new SchemaHandle(this, id, unresolvedSchemaContent); + this.schemasById[id] = schemaHandle; + return schemaHandle; + } + getOrAddSchemaHandle(id, unresolvedSchemaContent) { + return this.schemasById[id] || this.addSchemaHandle(id, unresolvedSchemaContent); + } + addFilePatternAssociation(pattern, folderUri, uris) { + const fpa = new FilePatternAssociation(pattern, folderUri, uris); + this.filePatternAssociations.push(fpa); + return fpa; + } + registerExternalSchema(config) { + const id = normalizeId(config.uri); + this.registeredSchemasIds[id] = true; + this.cachedSchemaForResource = undefined; + if (config.fileMatch && config.fileMatch.length) { + this.addFilePatternAssociation(config.fileMatch, config.folderUri, [id]); + } + return config.schema ? this.addSchemaHandle(id, config.schema) : this.getOrAddSchemaHandle(id); + } + clearExternalSchemas() { + this.schemasById = {}; + this.filePatternAssociations = []; + this.registeredSchemasIds = {}; + this.cachedSchemaForResource = undefined; + for (const id in this.contributionSchemas) { + this.schemasById[id] = this.contributionSchemas[id]; + this.registeredSchemasIds[id] = true; + } + for (const contributionAssociation of this.contributionAssociations) { + this.filePatternAssociations.push(contributionAssociation); + } + } + getResolvedSchema(schemaId) { + const id = normalizeId(schemaId); + const schemaHandle = this.schemasById[id]; + if (schemaHandle) { + return schemaHandle.getResolvedSchema(); + } + return this.promise.resolve(undefined); + } + loadSchema(url) { + if (!this.requestService) { + const errorMessage = t$2('Unable to load schema from \'{0}\'. No schema request service available', toDisplayString(url)); + return this.promise.resolve(new UnresolvedSchema({}, [errorMessage])); + } + return this.requestService(url).then(content => { + if (!content) { + const errorMessage = t$2('Unable to load schema from \'{0}\': No content.', toDisplayString(url)); + return new UnresolvedSchema({}, [errorMessage]); + } + const errors = []; + if (content.charCodeAt(0) === 65279) { + errors.push(t$2('Problem reading content from \'{0}\': UTF-8 with BOM detected, only UTF 8 is allowed.', toDisplayString(url))); + content = content.trimStart(); + } + let schemaContent = {}; + const jsonErrors = []; + schemaContent = parse$8(content, jsonErrors); + if (jsonErrors.length) { + errors.push(t$2('Unable to parse content from \'{0}\': Parse error at offset {1}.', toDisplayString(url), jsonErrors[0].offset)); + } + return new UnresolvedSchema(schemaContent, errors); + }, (error) => { + let errorMessage = error.toString(); + const errorSplit = error.toString().split('Error: '); + if (errorSplit.length > 1) { + // more concise error message, URL and context are attached by caller anyways + errorMessage = errorSplit[1]; + } + if (endsWith$1(errorMessage, '.')) { + errorMessage = errorMessage.substr(0, errorMessage.length - 1); + } + return new UnresolvedSchema({}, [t$2('Unable to load schema from \'{0}\': {1}.', toDisplayString(url), errorMessage)]); + }); + } + resolveSchemaContent(schemaToResolve, handle) { + const resolveErrors = schemaToResolve.errors.slice(0); + const schema = schemaToResolve.schema; + let schemaDraft = schema.$schema ? normalizeId(schema.$schema) : undefined; + if (schemaDraft === 'http://json-schema.org/draft-03/schema') { + return this.promise.resolve(new ResolvedSchema({}, [t$2("Draft-03 schemas are not supported.")], [], schemaDraft)); + } + let usesUnsupportedFeatures = new Set(); + const contextService = this.contextService; + const findSectionByJSONPointer = (schema, path) => { + path = decodeURIComponent(path); + let current = schema; + if (path[0] === '/') { + path = path.substring(1); + } + path.split('/').some((part) => { + part = part.replace(/~1/g, '/').replace(/~0/g, '~'); + current = current[part]; + return !current; + }); + return current; + }; + const findSchemaById = (schema, handle, id) => { + if (!handle.anchors) { + handle.anchors = collectAnchors(schema); + } + return handle.anchors.get(id); + }; + const merge = (target, section) => { + for (const key in section) { + if (section.hasOwnProperty(key) && key !== 'id' && key !== '$id') { + target[key] = section[key]; + } + } + }; + const mergeRef = (target, sourceRoot, sourceHandle, refSegment) => { + let section; + if (refSegment === undefined || refSegment.length === 0) { + section = sourceRoot; + } + else if (refSegment.charAt(0) === '/') { + // A $ref to a JSON Pointer (i.e #/definitions/foo) + section = findSectionByJSONPointer(sourceRoot, refSegment); + } + else { + // A $ref to a sub-schema with an $id (i.e #hello) + section = findSchemaById(sourceRoot, sourceHandle, refSegment); + } + if (section) { + merge(target, section); + } + else { + resolveErrors.push(t$2('$ref \'{0}\' in \'{1}\' can not be resolved.', refSegment || '', sourceHandle.uri)); + } + }; + const resolveExternalLink = (node, uri, refSegment, parentHandle) => { + if (contextService && !/^[A-Za-z][A-Za-z0-9+\-.+]*:\/\/.*/.test(uri)) { + uri = contextService.resolveRelativePath(uri, parentHandle.uri); + } + uri = normalizeId(uri); + const referencedHandle = this.getOrAddSchemaHandle(uri); + return referencedHandle.getUnresolvedSchema().then(unresolvedSchema => { + parentHandle.dependencies.add(uri); + if (unresolvedSchema.errors.length) { + const loc = refSegment ? uri + '#' + refSegment : uri; + resolveErrors.push(t$2('Problems loading reference \'{0}\': {1}', loc, unresolvedSchema.errors[0])); + } + mergeRef(node, unresolvedSchema.schema, referencedHandle, refSegment); + return resolveRefs(node, unresolvedSchema.schema, referencedHandle); + }); + }; + const resolveRefs = (node, parentSchema, parentHandle) => { + const openPromises = []; + this.traverseNodes(node, next => { + const seenRefs = new Set(); + while (next.$ref) { + const ref = next.$ref; + const segments = ref.split('#', 2); + delete next.$ref; + if (segments[0].length > 0) { + // This is a reference to an external schema + openPromises.push(resolveExternalLink(next, segments[0], segments[1], parentHandle)); + return; + } + else { + // This is a reference inside the current schema + if (!seenRefs.has(ref)) { + const id = segments[1]; + mergeRef(next, parentSchema, parentHandle, id); + seenRefs.add(ref); + } + } + } + if (next.$recursiveRef) { + usesUnsupportedFeatures.add('$recursiveRef'); + } + if (next.$dynamicRef) { + usesUnsupportedFeatures.add('$dynamicRef'); + } + }); + return this.promise.all(openPromises); + }; + const collectAnchors = (root) => { + const result = new Map(); + this.traverseNodes(root, next => { + const id = next.$id || next.id; + const anchor = isString(id) && id.charAt(0) === '#' ? id.substring(1) : next.$anchor; + if (anchor) { + if (result.has(anchor)) { + resolveErrors.push(t$2('Duplicate anchor declaration: \'{0}\'', anchor)); + } + else { + result.set(anchor, next); + } + } + if (next.$recursiveAnchor) { + usesUnsupportedFeatures.add('$recursiveAnchor'); + } + if (next.$dynamicAnchor) { + usesUnsupportedFeatures.add('$dynamicAnchor'); + } + }); + return result; + }; + return resolveRefs(schema, schema, handle).then(_ => { + let resolveWarnings = []; + if (usesUnsupportedFeatures.size) { + resolveWarnings.push(t$2('The schema uses meta-schema features ({0}) that are not yet supported by the validator.', Array.from(usesUnsupportedFeatures.keys()).join(', '))); + } + return new ResolvedSchema(schema, resolveErrors, resolveWarnings, schemaDraft); + }); + } + traverseNodes(root, handle) { + if (!root || typeof root !== 'object') { + return Promise.resolve(null); + } + const seen = new Set(); + const collectEntries = (...entries) => { + for (const entry of entries) { + if (isObject(entry)) { + toWalk.push(entry); + } + } + }; + const collectMapEntries = (...maps) => { + for (const map of maps) { + if (isObject(map)) { + for (const k in map) { + const key = k; + const entry = map[key]; + if (isObject(entry)) { + toWalk.push(entry); + } + } + } + } + }; + const collectArrayEntries = (...arrays) => { + for (const array of arrays) { + if (Array.isArray(array)) { + for (const entry of array) { + if (isObject(entry)) { + toWalk.push(entry); + } + } + } + } + }; + const collectEntryOrArrayEntries = (items) => { + if (Array.isArray(items)) { + for (const entry of items) { + if (isObject(entry)) { + toWalk.push(entry); + } + } + } + else if (isObject(items)) { + toWalk.push(items); + } + }; + const toWalk = [root]; + let next = toWalk.pop(); + while (next) { + if (!seen.has(next)) { + seen.add(next); + handle(next); + collectEntries(next.additionalItems, next.additionalProperties, next.not, next.contains, next.propertyNames, next.if, next.then, next.else, next.unevaluatedItems, next.unevaluatedProperties); + collectMapEntries(next.definitions, next.$defs, next.properties, next.patternProperties, next.dependencies, next.dependentSchemas); + collectArrayEntries(next.anyOf, next.allOf, next.oneOf, next.prefixItems); + collectEntryOrArrayEntries(next.items); + } + next = toWalk.pop(); + } + } + ; + getSchemaFromProperty(resource, document) { + if (document.root?.type === 'object') { + for (const p of document.root.properties) { + if (p.keyNode.value === '$schema' && p.valueNode?.type === 'string') { + let schemaId = p.valueNode.value; + if (this.contextService && !/^\w[\w\d+.-]*:/.test(schemaId)) { // has scheme + schemaId = this.contextService.resolveRelativePath(schemaId, resource); + } + return schemaId; + } + } + } + return undefined; + } + getAssociatedSchemas(resource) { + const seen = Object.create(null); + const schemas = []; + const normalizedResource = normalizeResourceForMatching(resource); + for (const entry of this.filePatternAssociations) { + if (entry.matchesPattern(normalizedResource)) { + for (const schemaId of entry.getURIs()) { + if (!seen[schemaId]) { + schemas.push(schemaId); + seen[schemaId] = true; + } + } + } + } + return schemas; + } + getSchemaURIsForResource(resource, document) { + let schemeId = document && this.getSchemaFromProperty(resource, document); + if (schemeId) { + return [schemeId]; + } + return this.getAssociatedSchemas(resource); + } + getSchemaForResource(resource, document) { + if (document) { + // first use $schema if present + let schemeId = this.getSchemaFromProperty(resource, document); + if (schemeId) { + const id = normalizeId(schemeId); + return this.getOrAddSchemaHandle(id).getResolvedSchema(); + } + } + if (this.cachedSchemaForResource && this.cachedSchemaForResource.resource === resource) { + return this.cachedSchemaForResource.resolvedSchema; + } + const schemas = this.getAssociatedSchemas(resource); + const resolvedSchema = schemas.length > 0 ? this.createCombinedSchema(resource, schemas).getResolvedSchema() : this.promise.resolve(undefined); + this.cachedSchemaForResource = { resource, resolvedSchema }; + return resolvedSchema; + } + createCombinedSchema(resource, schemaIds) { + if (schemaIds.length === 1) { + return this.getOrAddSchemaHandle(schemaIds[0]); + } + else { + const combinedSchemaId = 'schemaservice://combinedSchema/' + encodeURIComponent(resource); + const combinedSchema = { + allOf: schemaIds.map(schemaId => ({ $ref: schemaId })) + }; + return this.addSchemaHandle(combinedSchemaId, combinedSchema); + } + } + getMatchingSchemas(document, jsonDocument, schema) { + if (schema) { + const id = schema.id || ('schemaservice://untitled/matchingSchemas/' + idCounter++); + const handle = this.addSchemaHandle(id, schema); + return handle.getResolvedSchema().then(resolvedSchema => { + return jsonDocument.getMatchingSchemas(resolvedSchema.schema).filter(s => !s.inverted); + }); + } + return this.getSchemaForResource(document.uri, jsonDocument).then(schema => { + if (schema) { + return jsonDocument.getMatchingSchemas(schema.schema).filter(s => !s.inverted); + } + return []; + }); + } +} +let idCounter = 0; +function normalizeId(id) { + // remove trailing '#', normalize drive capitalization + try { + return URI.parse(id).toString(true); + } + catch (e) { + return id; + } +} +function normalizeResourceForMatching(resource) { + // remove queries and fragments, normalize drive capitalization + try { + return URI.parse(resource).with({ fragment: null, query: null }).toString(true); + } + catch (e) { + return resource; + } +} +function toDisplayString(url) { + try { + const uri = URI.parse(url); + if (uri.scheme === 'file') { + return uri.fsPath; + } + } + catch (e) { + // ignore + } + return url; +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +function getFoldingRanges(document, context) { + const ranges = []; + const nestingLevels = []; + const stack = []; + let prevStart = -1; + const scanner = createScanner(document.getText(), false); + let token = scanner.scan(); + function addRange(range) { + ranges.push(range); + nestingLevels.push(stack.length); + } + while (token !== 17 /* SyntaxKind.EOF */) { + switch (token) { + case 1 /* SyntaxKind.OpenBraceToken */: + case 3 /* SyntaxKind.OpenBracketToken */: { + const startLine = document.positionAt(scanner.getTokenOffset()).line; + const range = { startLine, endLine: startLine, kind: token === 1 /* SyntaxKind.OpenBraceToken */ ? 'object' : 'array' }; + stack.push(range); + break; + } + case 2 /* SyntaxKind.CloseBraceToken */: + case 4 /* SyntaxKind.CloseBracketToken */: { + const kind = token === 2 /* SyntaxKind.CloseBraceToken */ ? 'object' : 'array'; + if (stack.length > 0 && stack[stack.length - 1].kind === kind) { + const range = stack.pop(); + const line = document.positionAt(scanner.getTokenOffset()).line; + if (range && line > range.startLine + 1 && prevStart !== range.startLine) { + range.endLine = line - 1; + addRange(range); + prevStart = range.startLine; + } + } + break; + } + case 13 /* SyntaxKind.BlockCommentTrivia */: { + const startLine = document.positionAt(scanner.getTokenOffset()).line; + const endLine = document.positionAt(scanner.getTokenOffset() + scanner.getTokenLength()).line; + if (scanner.getTokenError() === 1 /* ScanError.UnexpectedEndOfComment */ && startLine + 1 < document.lineCount) { + scanner.setPosition(document.offsetAt(Position.create(startLine + 1, 0))); + } + else { + if (startLine < endLine) { + addRange({ startLine, endLine, kind: FoldingRangeKind.Comment }); + prevStart = startLine; + } + } + break; + } + case 12 /* SyntaxKind.LineCommentTrivia */: { + const text = document.getText().substr(scanner.getTokenOffset(), scanner.getTokenLength()); + const m = text.match(/^\/\/\s*#(region\b)|(endregion\b)/); + if (m) { + const line = document.positionAt(scanner.getTokenOffset()).line; + if (m[1]) { // start pattern match + const range = { startLine: line, endLine: line, kind: FoldingRangeKind.Region }; + stack.push(range); + } + else { + let i = stack.length - 1; + while (i >= 0 && stack[i].kind !== FoldingRangeKind.Region) { + i--; + } + if (i >= 0) { + const range = stack[i]; + stack.length = i; + if (line > range.startLine && prevStart !== range.startLine) { + range.endLine = line; + addRange(range); + prevStart = range.startLine; + } + } + } + } + break; + } + } + token = scanner.scan(); + } + const rangeLimit = context && context.rangeLimit; + if (typeof rangeLimit !== 'number' || ranges.length <= rangeLimit) { + return ranges; + } + if (context && context.onRangeLimitExceeded) { + context.onRangeLimitExceeded(document.uri); + } + const counts = []; + for (let level of nestingLevels) { + if (level < 30) { + counts[level] = (counts[level] || 0) + 1; + } + } + let entries = 0; + let maxLevel = 0; + for (let i = 0; i < counts.length; i++) { + const n = counts[i]; + if (n) { + if (n + entries > rangeLimit) { + maxLevel = i; + break; + } + entries += n; + } + } + const result = []; + for (let i = 0; i < ranges.length; i++) { + const level = nestingLevels[i]; + if (typeof level === 'number') { + if (level < maxLevel || (level === maxLevel && entries++ < rangeLimit)) { + result.push(ranges[i]); + } + } + } + return result; +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +function getSelectionRanges(document, positions, doc) { + function getSelectionRange(position) { + let offset = document.offsetAt(position); + let node = doc.getNodeFromOffset(offset, true); + const result = []; + while (node) { + switch (node.type) { + case 'string': + case 'object': + case 'array': + // range without ", [ or { + const cStart = node.offset + 1, cEnd = node.offset + node.length - 1; + if (cStart < cEnd && offset >= cStart && offset <= cEnd) { + result.push(newRange(cStart, cEnd)); + } + result.push(newRange(node.offset, node.offset + node.length)); + break; + case 'number': + case 'boolean': + case 'null': + case 'property': + result.push(newRange(node.offset, node.offset + node.length)); + break; + } + if (node.type === 'property' || node.parent && node.parent.type === 'array') { + const afterCommaOffset = getOffsetAfterNextToken(node.offset + node.length, 5 /* SyntaxKind.CommaToken */); + if (afterCommaOffset !== -1) { + result.push(newRange(node.offset, afterCommaOffset)); + } + } + node = node.parent; + } + let current = undefined; + for (let index = result.length - 1; index >= 0; index--) { + current = SelectionRange.create(result[index], current); + } + if (!current) { + current = SelectionRange.create(Range$a.create(position, position)); + } + return current; + } + function newRange(start, end) { + return Range$a.create(document.positionAt(start), document.positionAt(end)); + } + const scanner = createScanner(document.getText(), true); + function getOffsetAfterNextToken(offset, expectedToken) { + scanner.setPosition(offset); + let token = scanner.scan(); + if (token === expectedToken) { + return scanner.getTokenOffset() + scanner.getTokenLength(); + } + return -1; + } + return positions.map(getSelectionRange); +} + +function format(documentToFormat, formattingOptions, formattingRange) { + let range = undefined; + if (formattingRange) { + const offset = documentToFormat.offsetAt(formattingRange.start); + const length = documentToFormat.offsetAt(formattingRange.end) - offset; + range = { offset, length }; + } + const options = { + tabSize: formattingOptions ? formattingOptions.tabSize : 4, + insertSpaces: formattingOptions?.insertSpaces === true, + insertFinalNewline: formattingOptions?.insertFinalNewline === true, + eol: '\n', + keepLines: formattingOptions?.keepLines === true + }; + return format$1(documentToFormat.getText(), range, options).map(edit => { + return TextEdit.replace(Range$a.create(documentToFormat.positionAt(edit.offset), documentToFormat.positionAt(edit.offset + edit.length)), edit.content); + }); +} + +/*--------------------------------------------------------------------------------------------- +* Copyright (c) Microsoft Corporation. All rights reserved. +* Licensed under the MIT License. See License.txt in the project root for license information. +*--------------------------------------------------------------------------------------------*/ +var Container; +(function (Container) { + Container[Container["Object"] = 0] = "Object"; + Container[Container["Array"] = 1] = "Array"; +})(Container || (Container = {})); +class PropertyTree { + constructor(propertyName, beginningLineNumber) { + this.propertyName = propertyName ?? ''; + this.beginningLineNumber = beginningLineNumber; + this.childrenProperties = []; + this.lastProperty = false; + this.noKeyName = false; + } + addChildProperty(childProperty) { + childProperty.parent = this; + if (this.childrenProperties.length > 0) { + let insertionIndex = 0; + if (childProperty.noKeyName) { + insertionIndex = this.childrenProperties.length; + } + else { + insertionIndex = binarySearchOnPropertyArray(this.childrenProperties, childProperty, compareProperties); + } + if (insertionIndex < 0) { + insertionIndex = (insertionIndex * -1) - 1; + } + this.childrenProperties.splice(insertionIndex, 0, childProperty); + } + else { + this.childrenProperties.push(childProperty); + } + return childProperty; + } +} +function compareProperties(propertyTree1, propertyTree2) { + const propertyName1 = propertyTree1.propertyName.toLowerCase(); + const propertyName2 = propertyTree2.propertyName.toLowerCase(); + if (propertyName1 < propertyName2) { + return -1; + } + else if (propertyName1 > propertyName2) { + return 1; + } + return 0; +} +function binarySearchOnPropertyArray(propertyTreeArray, propertyTree, compare_fn) { + const propertyName = propertyTree.propertyName.toLowerCase(); + const firstPropertyInArrayName = propertyTreeArray[0].propertyName.toLowerCase(); + const lastPropertyInArrayName = propertyTreeArray[propertyTreeArray.length - 1].propertyName.toLowerCase(); + if (propertyName < firstPropertyInArrayName) { + return 0; + } + if (propertyName > lastPropertyInArrayName) { + return propertyTreeArray.length; + } + let m = 0; + let n = propertyTreeArray.length - 1; + while (m <= n) { + let k = (n + m) >> 1; + let cmp = compare_fn(propertyTree, propertyTreeArray[k]); + if (cmp > 0) { + m = k + 1; + } + else if (cmp < 0) { + n = k - 1; + } + else { + return k; + } + } + return -m - 1; +} + +/*--------------------------------------------------------------------------------------------- +* Copyright (c) Microsoft Corporation. All rights reserved. +* Licensed under the MIT License. See License.txt in the project root for license information. +*--------------------------------------------------------------------------------------------*/ +// import { TextEdit} from 'vscode-languageserver-textdocument'; +function sort$3(documentToSort, formattingOptions) { + const options = { + ...formattingOptions, + keepLines: false, // keepLines must be false so that the properties are on separate lines for the sorting + }; + const formattedJsonString = TextDocument$1.applyEdits(documentToSort, format(documentToSort, options, undefined)); + const formattedJsonDocument = TextDocument$1.create('test://test.json', 'json', 0, formattedJsonString); + const jsonPropertyTree = findJsoncPropertyTree(formattedJsonDocument); + const sortedJsonDocument = sortJsoncDocument(formattedJsonDocument, jsonPropertyTree); + const edits = format(sortedJsonDocument, options, undefined); + const sortedAndFormattedJsonDocument = TextDocument$1.applyEdits(sortedJsonDocument, edits); + return [TextEdit.replace(Range$a.create(Position.create(0, 0), documentToSort.positionAt(documentToSort.getText().length)), sortedAndFormattedJsonDocument)]; +} +function findJsoncPropertyTree(formattedDocument) { + const formattedString = formattedDocument.getText(); + const scanner = createScanner(formattedString, false); + // The tree that will be returned + let rootTree = new PropertyTree(); + // The tree where the current properties can be added as children + let currentTree = rootTree; + // The tree representing the current property analyzed + let currentProperty = rootTree; + // The tree representing the previous property analyzed + let lastProperty = rootTree; + // The current scanned token + let token = undefined; + // Line number of the last token found + let lastTokenLine = 0; + // Total number of characters on the lines prior to current line + let numberOfCharactersOnPreviousLines = 0; + // The last token scanned that is not trivial, nor a comment + let lastNonTriviaNonCommentToken = undefined; + // The second to last token scanned that is not trivial, nor a comment + let secondToLastNonTriviaNonCommentToken = undefined; + // Line number of last token that is not trivial, nor a comment + let lineOfLastNonTriviaNonCommentToken = -1; + // End index on its line of last token that is not trivial, nor a comment + let endIndexOfLastNonTriviaNonCommentToken = -1; + // Line number of the start of the range of current/next property + let beginningLineNumber = 0; + // Line number of the end of the range of current/next property + let endLineNumber = 0; + // Stack indicating whether we are inside of an object or an array + let currentContainerStack = []; + // Boolean indicating that the current property end line number needs to be updated. Used only when block comments are encountered. + let updateLastPropertyEndLineNumber = false; + // Boolean indicating that the beginning line number should be updated. Used only when block comments are encountered. + let updateBeginningLineNumber = false; + while ((token = scanner.scan()) !== 17 /* SyntaxKind.EOF */) { + // In the case when a block comment has been encountered that starts on the same line as the comma ending a property, update the end line of that + // property so that it covers the block comment. For example, if we have: + // 1. "key" : {}, /* some block + // 2. comment */ + // Then, the end line of the property "key" should be line 2 not line 1 + if (updateLastPropertyEndLineNumber === true + && token !== 14 /* SyntaxKind.LineBreakTrivia */ + && token !== 15 /* SyntaxKind.Trivia */ + && token !== 12 /* SyntaxKind.LineCommentTrivia */ + && token !== 13 /* SyntaxKind.BlockCommentTrivia */ + && currentProperty.endLineNumber === undefined) { + let endLineNumber = scanner.getTokenStartLine(); + // Update the end line number in the case when the last property visited is a container (object or array) + if (secondToLastNonTriviaNonCommentToken === 2 /* SyntaxKind.CloseBraceToken */ + || secondToLastNonTriviaNonCommentToken === 4 /* SyntaxKind.CloseBracketToken */) { + lastProperty.endLineNumber = endLineNumber - 1; + } + // Update the end line number in the case when the last property visited is a simple property + else { + currentProperty.endLineNumber = endLineNumber - 1; + } + beginningLineNumber = endLineNumber; + updateLastPropertyEndLineNumber = false; + } + // When a block comment follows an open brace or an open bracket, that block comment should be associated to that brace or bracket, not the property below it. For example, for: + // 1. { /* + // 2. ... */ + // 3. "key" : {} + // 4. } + // Instead of associating the block comment to the property on line 3, it is associate to the property on line 1 + if (updateBeginningLineNumber === true + && token !== 14 /* SyntaxKind.LineBreakTrivia */ + && token !== 15 /* SyntaxKind.Trivia */ + && token !== 12 /* SyntaxKind.LineCommentTrivia */ + && token !== 13 /* SyntaxKind.BlockCommentTrivia */) { + beginningLineNumber = scanner.getTokenStartLine(); + updateBeginningLineNumber = false; + } + // Update the number of characters on all the previous lines each time the new token is on a different line to the previous token + if (scanner.getTokenStartLine() !== lastTokenLine) { + for (let i = lastTokenLine; i < scanner.getTokenStartLine(); i++) { + const lengthOfLine = formattedDocument.getText(Range$a.create(Position.create(i, 0), Position.create(i + 1, 0))).length; + numberOfCharactersOnPreviousLines = numberOfCharactersOnPreviousLines + lengthOfLine; + } + lastTokenLine = scanner.getTokenStartLine(); + } + switch (token) { + // When a string is found, if it follows an open brace or a comma token and it is within an object, then it corresponds to a key name, not a simple string + case 10 /* SyntaxKind.StringLiteral */: { + if ((lastNonTriviaNonCommentToken === undefined + || lastNonTriviaNonCommentToken === 1 /* SyntaxKind.OpenBraceToken */ + || (lastNonTriviaNonCommentToken === 5 /* SyntaxKind.CommaToken */ + && currentContainerStack[currentContainerStack.length - 1] === Container.Object))) { + // In that case create the child property which starts at beginningLineNumber, add it to the current tree + const childProperty = new PropertyTree(scanner.getTokenValue(), beginningLineNumber); + lastProperty = currentProperty; + currentProperty = currentTree.addChildProperty(childProperty); + } + break; + } + // When the token is an open bracket, then we enter into an array + case 3 /* SyntaxKind.OpenBracketToken */: { + // If the root tree beginning line number is not defined, then this open bracket is the first open bracket in the document + if (rootTree.beginningLineNumber === undefined) { + rootTree.beginningLineNumber = scanner.getTokenStartLine(); + } + // Suppose we are inside of an object, then the current array is associated to a key, and has already been created + // We have the following configuration: {"a": "val", "array": [...], "b": "val"} + // In that case navigate down to the child property + if (currentContainerStack[currentContainerStack.length - 1] === Container.Object) { + currentTree = currentProperty; + } + // Suppose we are inside of an array, then since the current array is not associated to a key, it has not been created yet + // We have the following configuration: ["a", [...], "b"] + // In that case create the property and navigate down + else if (currentContainerStack[currentContainerStack.length - 1] === Container.Array) { + const childProperty = new PropertyTree(scanner.getTokenValue(), beginningLineNumber); + childProperty.noKeyName = true; + lastProperty = currentProperty; + currentProperty = currentTree.addChildProperty(childProperty); + currentTree = currentProperty; + } + currentContainerStack.push(Container.Array); + currentProperty.type = Container.Array; + beginningLineNumber = scanner.getTokenStartLine(); + beginningLineNumber++; + break; + } + // When the token is an open brace, then we enter into an object + case 1 /* SyntaxKind.OpenBraceToken */: { + // If the root tree beginning line number is not defined, then this open brace is the first open brace in the document + if (rootTree.beginningLineNumber === undefined) { + rootTree.beginningLineNumber = scanner.getTokenStartLine(); + } + // 1. If we are inside of an objet, the current object is associated to a key and has already been created + // We have the following configuration: {"a": "val", "object": {...}, "b": "val"} + // 2. Otherwise the current object property is inside of an array, not associated to a key name and the property has not yet been created + // We have the following configuration: ["a", {...}, "b"] + else if (currentContainerStack[currentContainerStack.length - 1] === Container.Array) { + const childProperty = new PropertyTree(scanner.getTokenValue(), beginningLineNumber); + childProperty.noKeyName = true; + lastProperty = currentProperty; + currentProperty = currentTree.addChildProperty(childProperty); + } + currentProperty.type = Container.Object; + currentContainerStack.push(Container.Object); + currentTree = currentProperty; + beginningLineNumber = scanner.getTokenStartLine(); + beginningLineNumber++; + break; + } + case 4 /* SyntaxKind.CloseBracketToken */: { + endLineNumber = scanner.getTokenStartLine(); + currentContainerStack.pop(); + // If the last non-trivial non-comment token is a closing brace or bracket, then the currentProperty end line number has not been set yet so set it + // The configuration considered is: [..., {}] or [..., []] + if (currentProperty.endLineNumber === undefined + && (lastNonTriviaNonCommentToken === 2 /* SyntaxKind.CloseBraceToken */ + || lastNonTriviaNonCommentToken === 4 /* SyntaxKind.CloseBracketToken */)) { + currentProperty.endLineNumber = endLineNumber - 1; + currentProperty.lastProperty = true; + currentProperty.lineWhereToAddComma = lineOfLastNonTriviaNonCommentToken; + currentProperty.indexWhereToAddComa = endIndexOfLastNonTriviaNonCommentToken; + lastProperty = currentProperty; + currentProperty = currentProperty ? currentProperty.parent : undefined; + currentTree = currentProperty; + } + rootTree.endLineNumber = endLineNumber; + beginningLineNumber = endLineNumber + 1; + break; + } + case 2 /* SyntaxKind.CloseBraceToken */: { + endLineNumber = scanner.getTokenStartLine(); + currentContainerStack.pop(); + // If we are not inside of an empty object and current property end line number has not yet been defined, define it + if (lastNonTriviaNonCommentToken !== 1 /* SyntaxKind.OpenBraceToken */ + && currentProperty.endLineNumber === undefined) { + currentProperty.endLineNumber = endLineNumber - 1; + // The current property is also the last property + currentProperty.lastProperty = true; + // The last property of an object is associated with the line and index of where to add the comma, in case after sorting, it is no longer the last property + currentProperty.lineWhereToAddComma = lineOfLastNonTriviaNonCommentToken; + currentProperty.indexWhereToAddComa = endIndexOfLastNonTriviaNonCommentToken; + lastProperty = currentProperty; + currentProperty = currentProperty ? currentProperty.parent : undefined; + currentTree = currentProperty; + } + rootTree.endLineNumber = scanner.getTokenStartLine(); + beginningLineNumber = endLineNumber + 1; + break; + } + case 5 /* SyntaxKind.CommaToken */: { + endLineNumber = scanner.getTokenStartLine(); + // If the current container is an object or the current container is an array and the last non-trivia non-comment token is a closing brace or a closing bracket + // Then update the end line number of the current property + if (currentProperty.endLineNumber === undefined + && (currentContainerStack[currentContainerStack.length - 1] === Container.Object + || (currentContainerStack[currentContainerStack.length - 1] === Container.Array + && (lastNonTriviaNonCommentToken === 2 /* SyntaxKind.CloseBraceToken */ + || lastNonTriviaNonCommentToken === 4 /* SyntaxKind.CloseBracketToken */)))) { + currentProperty.endLineNumber = endLineNumber; + // Store the line and the index of the comma in case it needs to be removed during the sorting + currentProperty.commaIndex = scanner.getTokenOffset() - numberOfCharactersOnPreviousLines; + currentProperty.commaLine = endLineNumber; + } + if (lastNonTriviaNonCommentToken === 2 /* SyntaxKind.CloseBraceToken */ + || lastNonTriviaNonCommentToken === 4 /* SyntaxKind.CloseBracketToken */) { + lastProperty = currentProperty; + currentProperty = currentProperty ? currentProperty.parent : undefined; + currentTree = currentProperty; + } + beginningLineNumber = endLineNumber + 1; + break; + } + case 13 /* SyntaxKind.BlockCommentTrivia */: { + // If the last non trivia non-comment token is a comma and the block comment starts on the same line as the comma, then update the end line number of the current property. For example if: + // 1. {}, /* ... + // 2. ..*/ + // The the property on line 1 shoud end on line 2, not line 1 + // In the case we are in an array we update the end line number only if the second to last non-trivia non-comment token is a closing brace or bracket + if (lastNonTriviaNonCommentToken === 5 /* SyntaxKind.CommaToken */ + && lineOfLastNonTriviaNonCommentToken === scanner.getTokenStartLine() + && (currentContainerStack[currentContainerStack.length - 1] === Container.Array + && (secondToLastNonTriviaNonCommentToken === 2 /* SyntaxKind.CloseBraceToken */ + || secondToLastNonTriviaNonCommentToken === 4 /* SyntaxKind.CloseBracketToken */) + || currentContainerStack[currentContainerStack.length - 1] === Container.Object)) { + if (currentContainerStack[currentContainerStack.length - 1] === Container.Array && (secondToLastNonTriviaNonCommentToken === 2 /* SyntaxKind.CloseBraceToken */ || secondToLastNonTriviaNonCommentToken === 4 /* SyntaxKind.CloseBracketToken */) || currentContainerStack[currentContainerStack.length - 1] === Container.Object) { + currentProperty.endLineNumber = undefined; + updateLastPropertyEndLineNumber = true; + } + } + // When the block comment follows an open brace or an open token, we have the following scenario: + // { /** + // ../ + // } + // The block comment should be assigned to the open brace not the first property below it + if ((lastNonTriviaNonCommentToken === 1 /* SyntaxKind.OpenBraceToken */ + || lastNonTriviaNonCommentToken === 3 /* SyntaxKind.OpenBracketToken */) + && lineOfLastNonTriviaNonCommentToken === scanner.getTokenStartLine()) { + updateBeginningLineNumber = true; + } + break; + } + } + // Update the last and second to last non-trivia non-comment tokens + if (token !== 14 /* SyntaxKind.LineBreakTrivia */ + && token !== 13 /* SyntaxKind.BlockCommentTrivia */ + && token !== 12 /* SyntaxKind.LineCommentTrivia */ + && token !== 15 /* SyntaxKind.Trivia */) { + secondToLastNonTriviaNonCommentToken = lastNonTriviaNonCommentToken; + lastNonTriviaNonCommentToken = token; + lineOfLastNonTriviaNonCommentToken = scanner.getTokenStartLine(); + endIndexOfLastNonTriviaNonCommentToken = scanner.getTokenOffset() + scanner.getTokenLength() - numberOfCharactersOnPreviousLines; + } + } + return rootTree; +} +function sortJsoncDocument(jsonDocument, propertyTree) { + if (propertyTree.childrenProperties.length === 0) { + return jsonDocument; + } + const sortedJsonDocument = TextDocument$1.create('test://test.json', 'json', 0, jsonDocument.getText()); + const queueToSort = []; + updateSortingQueue(queueToSort, propertyTree, propertyTree.beginningLineNumber); + while (queueToSort.length > 0) { + const dataToSort = queueToSort.shift(); + const propertyTreeArray = dataToSort.propertyTreeArray; + let beginningLineNumber = dataToSort.beginningLineNumber; + for (let i = 0; i < propertyTreeArray.length; i++) { + const propertyTree = propertyTreeArray[i]; + const range = Range$a.create(Position.create(propertyTree.beginningLineNumber, 0), Position.create(propertyTree.endLineNumber + 1, 0)); + const jsonContentToReplace = jsonDocument.getText(range); + const jsonDocumentToReplace = TextDocument$1.create('test://test.json', 'json', 0, jsonContentToReplace); + if (propertyTree.lastProperty === true && i !== propertyTreeArray.length - 1) { + const lineWhereToAddComma = propertyTree.lineWhereToAddComma - propertyTree.beginningLineNumber; + const indexWhereToAddComma = propertyTree.indexWhereToAddComa; + const edit = { + range: Range$a.create(Position.create(lineWhereToAddComma, indexWhereToAddComma), Position.create(lineWhereToAddComma, indexWhereToAddComma)), + text: ',' + }; + TextDocument$1.update(jsonDocumentToReplace, [edit], 1); + } + else if (propertyTree.lastProperty === false && i === propertyTreeArray.length - 1) { + const commaIndex = propertyTree.commaIndex; + const commaLine = propertyTree.commaLine; + const lineWhereToRemoveComma = commaLine - propertyTree.beginningLineNumber; + const edit = { + range: Range$a.create(Position.create(lineWhereToRemoveComma, commaIndex), Position.create(lineWhereToRemoveComma, commaIndex + 1)), + text: '' + }; + TextDocument$1.update(jsonDocumentToReplace, [edit], 1); + } + const length = propertyTree.endLineNumber - propertyTree.beginningLineNumber + 1; + const edit = { + range: Range$a.create(Position.create(beginningLineNumber, 0), Position.create(beginningLineNumber + length, 0)), + text: jsonDocumentToReplace.getText() + }; + TextDocument$1.update(sortedJsonDocument, [edit], 1); + updateSortingQueue(queueToSort, propertyTree, beginningLineNumber); + beginningLineNumber = beginningLineNumber + length; + } + } + return sortedJsonDocument; +} +function updateSortingQueue(queue, propertyTree, beginningLineNumber) { + if (propertyTree.childrenProperties.length === 0) { + return; + } + if (propertyTree.type === Container.Object) { + let minimumBeginningLineNumber = Infinity; + for (const childProperty of propertyTree.childrenProperties) { + if (childProperty.beginningLineNumber < minimumBeginningLineNumber) { + minimumBeginningLineNumber = childProperty.beginningLineNumber; + } + } + const diff = minimumBeginningLineNumber - propertyTree.beginningLineNumber; + beginningLineNumber = beginningLineNumber + diff; + queue.push(new SortingRange(beginningLineNumber, propertyTree.childrenProperties)); + } + else if (propertyTree.type === Container.Array) { + updateSortingQueueForArrayProperties(queue, propertyTree, beginningLineNumber); + } +} +function updateSortingQueueForArrayProperties(queue, propertyTree, beginningLineNumber) { + for (const subObject of propertyTree.childrenProperties) { + // If the child property of the array is an object, then you can sort the properties within this object + if (subObject.type === Container.Object) { + let minimumBeginningLineNumber = Infinity; + for (const childProperty of subObject.childrenProperties) { + if (childProperty.beginningLineNumber < minimumBeginningLineNumber) { + minimumBeginningLineNumber = childProperty.beginningLineNumber; + } + } + const diff = minimumBeginningLineNumber - subObject.beginningLineNumber; + queue.push(new SortingRange(beginningLineNumber + subObject.beginningLineNumber - propertyTree.beginningLineNumber + diff, subObject.childrenProperties)); + } + // If the child property of the array is an array, then you need to recurse on the children properties, until you find an object to sort + if (subObject.type === Container.Array) { + updateSortingQueueForArrayProperties(queue, subObject, beginningLineNumber + subObject.beginningLineNumber - propertyTree.beginningLineNumber); + } + } +} +class SortingRange { + constructor(beginningLineNumber, propertyTreeArray) { + this.beginningLineNumber = beginningLineNumber; + this.propertyTreeArray = propertyTreeArray; + } +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +function findLinks(document, doc) { + const links = []; + doc.visit(node => { + if (node.type === "property" && node.keyNode.value === "$ref" && node.valueNode?.type === 'string') { + const path = node.valueNode.value; + const targetNode = findTargetNode(doc, path); + if (targetNode) { + const targetPos = document.positionAt(targetNode.offset); + links.push({ + target: `${document.uri}#${targetPos.line + 1},${targetPos.character + 1}`, + range: createRange(document, node.valueNode) + }); + } + } + return true; + }); + return Promise.resolve(links); +} +function createRange(document, node) { + return Range$a.create(document.positionAt(node.offset + 1), document.positionAt(node.offset + node.length - 1)); +} +function findTargetNode(doc, path) { + const tokens = parseJSONPointer(path); + if (!tokens) { + return null; + } + return findNode(tokens, doc.root); +} +function findNode(pointer, node) { + if (!node) { + return null; + } + if (pointer.length === 0) { + return node; + } + const token = pointer.shift(); + if (node && node.type === 'object') { + const propertyNode = node.properties.find((propertyNode) => propertyNode.keyNode.value === token); + if (!propertyNode) { + return null; + } + return findNode(pointer, propertyNode.valueNode); + } + else if (node && node.type === 'array') { + if (token.match(/^(0|[1-9][0-9]*)$/)) { + const index = Number.parseInt(token); + const arrayItem = node.items[index]; + if (!arrayItem) { + return null; + } + return findNode(pointer, arrayItem); + } + } + return null; +} +function parseJSONPointer(path) { + if (path === "#") { + return []; + } + if (path[0] !== '#' || path[1] !== '/') { + return null; + } + return path.substring(2).split(/\//).map(unescape$1); +} +function unescape$1(str) { + return str.replace(/~1/g, '/').replace(/~0/g, '~'); +} + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +function getLanguageService(params) { + const promise = params.promiseConstructor || Promise; + const jsonSchemaService = new JSONSchemaService(params.schemaRequestService, params.workspaceContext, promise); + jsonSchemaService.setSchemaContributions(schemaContributions); + const jsonCompletion = new JSONCompletion(jsonSchemaService, params.contributions, promise, params.clientCapabilities); + const jsonHover = new JSONHover(jsonSchemaService, params.contributions, promise); + const jsonDocumentSymbols = new JSONDocumentSymbols(jsonSchemaService); + const jsonValidation = new JSONValidation(jsonSchemaService, promise); + return { + configure: (settings) => { + jsonSchemaService.clearExternalSchemas(); + settings.schemas?.forEach(jsonSchemaService.registerExternalSchema.bind(jsonSchemaService)); + jsonValidation.configure(settings); + }, + resetSchema: (uri) => jsonSchemaService.onResourceChange(uri), + doValidation: jsonValidation.doValidation.bind(jsonValidation), + getLanguageStatus: jsonValidation.getLanguageStatus.bind(jsonValidation), + parseJSONDocument: (document) => parse$7(document, { collectComments: true }), + newJSONDocument: (root, diagnostics) => newJSONDocument(root, diagnostics), + getMatchingSchemas: jsonSchemaService.getMatchingSchemas.bind(jsonSchemaService), + doResolve: jsonCompletion.doResolve.bind(jsonCompletion), + doComplete: jsonCompletion.doComplete.bind(jsonCompletion), + findDocumentSymbols: jsonDocumentSymbols.findDocumentSymbols.bind(jsonDocumentSymbols), + findDocumentSymbols2: jsonDocumentSymbols.findDocumentSymbols2.bind(jsonDocumentSymbols), + findDocumentColors: jsonDocumentSymbols.findDocumentColors.bind(jsonDocumentSymbols), + getColorPresentations: jsonDocumentSymbols.getColorPresentations.bind(jsonDocumentSymbols), + doHover: jsonHover.doHover.bind(jsonHover), + getFoldingRanges, + getSelectionRanges, + findDefinition: () => Promise.resolve([]), + findLinks, + format: (document, range, options) => format(document, options, range), + sort: (document, options) => sort$3(document, options) + }; +} + +var jsonLanguageService = /*#__PURE__*/Object.freeze({ + __proto__: null, + get ClientCapabilities () { return ClientCapabilities; }, + get CodeAction () { return CodeAction; }, + get CodeActionContext () { return CodeActionContext; }, + get CodeActionKind () { return CodeActionKind; }, + get Color () { return Color; }, + get ColorInformation () { return ColorInformation; }, + get ColorPresentation () { return ColorPresentation; }, + get Command () { return Command; }, + get CompletionItem () { return CompletionItem; }, + get CompletionItemKind () { return CompletionItemKind; }, + get CompletionItemTag () { return CompletionItemTag; }, + get CompletionList () { return CompletionList; }, + get Diagnostic () { return Diagnostic; }, + get DiagnosticSeverity () { return DiagnosticSeverity; }, + get DocumentHighlight () { return DocumentHighlight; }, + get DocumentHighlightKind () { return DocumentHighlightKind; }, + get DocumentLink () { return DocumentLink; }, + get DocumentSymbol () { return DocumentSymbol; }, + get DocumentUri () { return DocumentUri; }, + get ErrorCode () { return ErrorCode; }, + get FoldingRange () { return FoldingRange; }, + get FoldingRangeKind () { return FoldingRangeKind; }, + get Hover () { return Hover; }, + get InsertTextFormat () { return InsertTextFormat; }, + get Location () { return Location; }, + get MarkedString () { return MarkedString; }, + get MarkupContent () { return MarkupContent; }, + get MarkupKind () { return MarkupKind; }, + get Position () { return Position; }, + get Range () { return Range$a; }, + get SchemaDraft () { return SchemaDraft; }, + get SelectionRange () { return SelectionRange; }, + get SymbolInformation () { return SymbolInformation; }, + get SymbolKind () { return SymbolKind$1; }, + get TextDocument () { return TextDocument$1; }, + get TextDocumentEdit () { return TextDocumentEdit; }, + get TextEdit () { return TextEdit; }, + get VersionedTextDocumentIdentifier () { return VersionedTextDocumentIdentifier; }, + get WorkspaceEdit () { return WorkspaceEdit; }, + getLanguageService: getLanguageService +}); + +var require$$0$1 = /*@__PURE__*/getAugmentedNamespace(jsonLanguageService); + +Object.defineProperty(out$4, "__esModule", { value: true }); +out$4.create = void 0; +const json = require$$0$1; +const vscode_uri_1$2 = umdExports; +// https://github.com/microsoft/vscode/blob/09850876e652688fb142e2e19fd00fd38c0bc4ba/extensions/json-language-features/server/src/jsonServer.ts#L150 +const triggerCharacters = ['"', ':']; +function create$d(settings) { + return (context) => { + if (!context) { + return { triggerCharacters }; + } + const jsonDocuments = new WeakMap(); + const workspaceContext = { + resolveRelativePath: (ref, base) => { + if (ref.match(/^\w[\w\d+.-]*:/)) { + // starts with a schema + return ref; + } + if (ref[0] === '/') { // resolve absolute path against the current workspace folder + return base + ref; + } + const baseUri = vscode_uri_1$2.URI.parse(base); + const baseUriDir = baseUri.path.endsWith('/') ? baseUri : vscode_uri_1$2.Utils.dirname(baseUri); + return vscode_uri_1$2.Utils.resolvePath(baseUriDir, ref).toString(true); + }, + }; + const jsonLs = json.getLanguageService({ + schemaRequestService: async (uri) => await context.env.fs?.readFile(uri) ?? '', + workspaceContext, + clientCapabilities: context.env.clientCapabilities, + }); + if (settings) { + jsonLs.configure(settings); + } + return { + provide: { + 'json/jsonDocument': getJsonDocument, + 'json/languageService': () => jsonLs, + }, + triggerCharacters, + provideCompletionItems(document, position) { + return worker(document, async (jsonDocument) => { + return await jsonLs.doComplete(document, position, jsonDocument); + }); + }, + resolveCompletionItem(item) { + return jsonLs.doResolve(item); + }, + provideDefinition(document, position) { + return worker(document, async (jsonDocument) => { + return await jsonLs.findDefinition(document, position, jsonDocument); + }); + }, + provideDiagnostics(document) { + return worker(document, async (jsonDocument) => { + const documentLanguageSettings = undefined; // await getSettings(); // TODO + return await jsonLs.doValidation(document, jsonDocument, documentLanguageSettings, undefined); + }); + }, + provideHover(document, position) { + return worker(document, async (jsonDocument) => { + return await jsonLs.doHover(document, position, jsonDocument); + }); + }, + provideDocumentLinks(document) { + return worker(document, async (jsonDocument) => { + return await jsonLs.findLinks(document, jsonDocument); + }); + }, + provideDocumentSymbols(document) { + return worker(document, async (jsonDocument) => { + return await jsonLs.findDocumentSymbols2(document, jsonDocument); + }); + }, + provideDocumentColors(document) { + return worker(document, async (jsonDocument) => { + return await jsonLs.findDocumentColors(document, jsonDocument); + }); + }, + provideColorPresentations(document, color, range) { + return worker(document, async (jsonDocument) => { + return await jsonLs.getColorPresentations(document, jsonDocument, color, range); + }); + }, + provideFoldingRanges(document) { + return worker(document, async () => { + return await jsonLs.getFoldingRanges(document); + }); + }, + provideSelectionRanges(document, positions) { + return worker(document, async (jsonDocument) => { + return await jsonLs.getSelectionRanges(document, positions, jsonDocument); + }); + }, + provideDocumentFormattingEdits(document, range, options) { + return worker(document, async () => { + const options_2 = await context.env.getConfiguration?.('json.format'); + if (!(options_2?.enable ?? true)) { + return; + } + return jsonLs.format(document, range, { + ...options_2, + ...options, + }); + }); + }, + }; + function worker(document, callback) { + const jsonDocument = getJsonDocument(document); + if (!jsonDocument) + return; + return callback(jsonDocument); + } + function getJsonDocument(textDocument) { + if (textDocument.languageId !== 'json' && textDocument.languageId !== 'jsonc') + return; + const cache = jsonDocuments.get(textDocument); + if (cache) { + const [cacheVersion, cacheDoc] = cache; + if (cacheVersion === textDocument.version) { + return cacheDoc; + } + } + const doc = jsonLs.parseJSONDocument(textDocument); + jsonDocuments.set(textDocument, [textDocument.version, doc]); + return doc; + } + }; +} +out$4.create = create$d; +out$4.default = create$d; + +var empty = {}; + +Object.defineProperty(empty, "__esModule", { value: true }); +empty.create = void 0; +console.warn('volar-service-pug: this module is not yet supported for web.'); +function create$c() { + return () => ({}); +} +empty.create = create$c; +empty.default = create$c; + +var out$3 = {}; + +/** + * Beautify Pug(former jade) file. + * + * const pugBeautify = require('pug-beautify'); + * const beautifiedString = pugBeautify-beautify(code,{fill_tab:true,omit_div:false,tab_size:4}); + * + * @param {string} code - strings to be beautified. + * @param {Object} opt - options. + * @param {boolean} opt.fill_tab - fill whether tab or space, default true. + * @param {boolean} opt.omit_div - whether omit 'div' tag, default false. + * @param {number} opt.tab_size - when 'fill_tab' is false, fill 'tab_size' spaces, default 4. + * @param {boolean} opt.separator_space - When 'separator_space' is true, the attribute separator is comma, default true. + * @param {boolean} opt.omit_empty_lines - When 'separator_space' is false, delete line blank, default true. + * @return {string} code - strings beautified. + */ + +var pugBeautify; +var hasRequiredPugBeautify; + +function requirePugBeautify () { + if (hasRequiredPugBeautify) return pugBeautify; + hasRequiredPugBeautify = 1; + pugBeautify = function(code, opt) { + + opt = (typeof opt === 'undefined') ? {} : opt; + if (typeof code !== 'string') quit('Code must be a string text.'); + if (typeof opt !== 'undefined' && typeof opt !== 'object') quit('Option must be a object.'); + + const fill_tab = (typeof opt.fill_tab !== 'undefined') ? opt.fill_tab : true; + const omit_div = (typeof opt.omit_div !== 'undefined') ? opt.omit_div : false; + const tab_size = (typeof opt.tab_size !== 'undefined') ? opt.tab_size : 4; + const separator = opt.separator_space ? ' ' : ', '; + const empty_lines = (typeof opt.omit_empty_lines !== 'undefined') ? opt.omit_empty_lines : true; + const debug = (typeof opt.debug !== 'undefined') ? opt.debug : false; + + if (debug) console.log(fill_tab, omit_div, tab_size, debug, separator); + + // list of indents + const indentList = []; + + let prevIndent = { + type: 'code', // type 'code' or 'remark' + indent: 0, // count of indent space. it replace tab with space + tab: 0, // count of tab ,line indent will be filled up with this value. + input: '', // input line after removing indent. + }; + + if (!empty_lines) { + code = code.replace(/^\s*[\r\n]/gm, ''); + } + + const lines = code.split('\n'); + + lines.forEach(function(line, n) { // array.forEach is blocking, no async function. + // it return matching space --> data[0], data[index] = 0, remained input --> data.input + const data = line.match(/^\s*/); + + // when tab and space mixed, it replace all tab to spaces. + const tmp = data[0].replace(/\t/g, Array(tab_size + 1).join(' ')); + let remainedInput = data.input.replace(/^\s*/, ''); + const indent = (remainedInput.length === 0) ? 0 : tmp.length; + + let tab = 0; + const type = (remainedInput.match(/^\/\/|^\/\*|^\*/)) ? 'remark' : 'code'; + + if (omit_div) { + remainedInput = remainedInput.replace(/^div(\.|#)/i, '$1'); + } + + if (indent === 0) { + tab = 0; + } else { + // when this line & prev line is 'remark', it fallow prev line tab. + if (indentList.length > 0 && type === 'remark' && indentList[indentList.length - 1].type === 'remark') { + tab = prevIndent.tab; + } else { + if (indent === prevIndent.indent) { // when same indent, follow prev tab. + tab = prevIndent.tab; + } else if (indent > prevIndent.indent) { // when indented, add tab + tab = prevIndent.tab + 1; + } else { // when new indent, if find the same indent, and follow it's tab. + for (let i = indentList.length - 1; i >= 0; i--) { + if (indent == indentList[i].indent) { + tab = indentList[i].tab; + break; + } + } + } + } + } + if (debug) console.log(n + 1, indent, tab, prevIndent.indent); + + if (remainedInput.match(/\w+\(.+(,|\s).*\)/)) { + if (debug) console.log('antes =>', remainedInput); + if (remainedInput.match(/\w+=('|").+('|")\s?,\s/)) { + remainedInput = remainedInput.replace(/('|")(,\s+)(([\w-]+=("|'))|$)/g, '$1' + separator + '$4'); + if (debug) console.log('new(' + separator + ')=>', remainedInput); + } + } + + const curIndent = { + type: type, + indent: indent, + tab: tab, + input: remainedInput, + }; + + indentList.push(curIndent); + + if (remainedInput.length !== 0) { // discard null line + prevIndent = curIndent; + } + }); + + // // Here,it reformat with it's tab count. + const formatedLine = indentList.map(function(line, n) { + let space = Array(line.tab + 1).join('\t'); + //when fill with space + if (!fill_tab) space = space.replace(/\t/g, Array(tab_size + 1).join(' ')); + + if (debug) console.log(n + 1, line.indent, line.tab, space + line.input); + return space + line.input; + }); + + //Rewrite data + return formatedLine.join('\n'); + }; + + function quit(reason) { + throw new Error(reason); + } + return pugBeautify; +} + +Object.defineProperty(out$3, "__esModule", { value: true }); +out$3.create = void 0; +function create$b() { + return () => { + return { + provideDocumentFormattingEdits(document, range, options) { + if (document.languageId !== 'jade') + return; + const pugCode = document.getText(range); + // fix https://github.com/johnsoncodehk/volar/issues/304 + if (pugCode.trim() === '') + return; + const pugBeautify = requirePugBeautify(); + const prefixesLength = pugCode.length - pugCode.trimStart().length; + const suffixesLength = pugCode.length - pugCode.trimEnd().length; + const prefixes = pugCode.slice(0, prefixesLength); + const suffixes = pugCode.slice(pugCode.length - suffixesLength); + let newText = pugBeautify(pugCode, { + tab_size: options.tabSize, + fill_tab: !options.insertSpaces, + }); + return [{ + range, + newText: prefixes + newText.trim() + suffixes, + }]; + }, + }; + }; +} +out$3.create = create$b; +out$3.default = create$b; + +var out$2 = {}; + +var re$2 = {exports: {}}; + +// Note: this is the semver.org version of the spec that it implements +// Not necessarily the package version of this code. +const SEMVER_SPEC_VERSION = '2.0.0'; + +const MAX_LENGTH$1 = 256; +const MAX_SAFE_INTEGER$1 = Number.MAX_SAFE_INTEGER || +/* istanbul ignore next */ 9007199254740991; + +// Max safe segment length for coercion. +const MAX_SAFE_COMPONENT_LENGTH = 16; + +// Max safe length for a build identifier. The max length minus 6 characters for +// the shortest version with a build 0.0.0+BUILD. +const MAX_SAFE_BUILD_LENGTH = MAX_LENGTH$1 - 6; + +const RELEASE_TYPES = [ + 'major', + 'premajor', + 'minor', + 'preminor', + 'patch', + 'prepatch', + 'prerelease', +]; + +var constants$1 = { + MAX_LENGTH: MAX_LENGTH$1, + MAX_SAFE_COMPONENT_LENGTH, + MAX_SAFE_BUILD_LENGTH, + MAX_SAFE_INTEGER: MAX_SAFE_INTEGER$1, + RELEASE_TYPES, + SEMVER_SPEC_VERSION, + FLAG_INCLUDE_PRERELEASE: 0b001, + FLAG_LOOSE: 0b010, +}; + +const debug$1 = ( + typeof process === 'object' && + process.env && + process.env.NODE_DEBUG && + /\bsemver\b/i.test(process.env.NODE_DEBUG) +) ? (...args) => console.error('SEMVER', ...args) + : () => {}; + +var debug_1 = debug$1; + +(function (module, exports) { + const { + MAX_SAFE_COMPONENT_LENGTH, + MAX_SAFE_BUILD_LENGTH, + MAX_LENGTH, + } = constants$1; + const debug = debug_1; + exports = module.exports = {}; + + // The actual regexps go on exports.re + const re = exports.re = []; + const safeRe = exports.safeRe = []; + const src = exports.src = []; + const t = exports.t = {}; + let R = 0; + + const LETTERDASHNUMBER = '[a-zA-Z0-9-]'; + + // Replace some greedy regex tokens to prevent regex dos issues. These regex are + // used internally via the safeRe object since all inputs in this library get + // normalized first to trim and collapse all extra whitespace. The original + // regexes are exported for userland consumption and lower level usage. A + // future breaking change could export the safer regex only with a note that + // all input should have extra whitespace removed. + const safeRegexReplacements = [ + ['\\s', 1], + ['\\d', MAX_LENGTH], + [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH], + ]; + + const makeSafeRegex = (value) => { + for (const [token, max] of safeRegexReplacements) { + value = value + .split(`${token}*`).join(`${token}{0,${max}}`) + .split(`${token}+`).join(`${token}{1,${max}}`); + } + return value + }; + + const createToken = (name, value, isGlobal) => { + const safe = makeSafeRegex(value); + const index = R++; + debug(name, index, value); + t[name] = index; + src[index] = value; + re[index] = new RegExp(value, isGlobal ? 'g' : undefined); + safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined); + }; + + // The following Regular Expressions can be used for tokenizing, + // validating, and parsing SemVer version strings. + + // ## Numeric Identifier + // A single `0`, or a non-zero digit followed by zero or more digits. + + createToken('NUMERICIDENTIFIER', '0|[1-9]\\d*'); + createToken('NUMERICIDENTIFIERLOOSE', '\\d+'); + + // ## Non-numeric Identifier + // Zero or more digits, followed by a letter or hyphen, and then zero or + // more letters, digits, or hyphens. + + createToken('NONNUMERICIDENTIFIER', `\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`); + + // ## Main Version + // Three dot-separated numeric identifiers. + + createToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\.` + + `(${src[t.NUMERICIDENTIFIER]})\\.` + + `(${src[t.NUMERICIDENTIFIER]})`); + + createToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.` + + `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.` + + `(${src[t.NUMERICIDENTIFIERLOOSE]})`); + + // ## Pre-release Version Identifier + // A numeric identifier, or a non-numeric identifier. + + createToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER] + }|${src[t.NONNUMERICIDENTIFIER]})`); + + createToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE] + }|${src[t.NONNUMERICIDENTIFIER]})`); + + // ## Pre-release Version + // Hyphen, followed by one or more dot-separated pre-release version + // identifiers. + + createToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER] + }(?:\\.${src[t.PRERELEASEIDENTIFIER]})*))`); + + createToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE] + }(?:\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`); + + // ## Build Metadata Identifier + // Any combination of digits, letters, or hyphens. + + createToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`); + + // ## Build Metadata + // Plus sign, followed by one or more period-separated build metadata + // identifiers. + + createToken('BUILD', `(?:\\+(${src[t.BUILDIDENTIFIER] + }(?:\\.${src[t.BUILDIDENTIFIER]})*))`); + + // ## Full Version String + // A main version, followed optionally by a pre-release version and + // build metadata. + + // Note that the only major, minor, patch, and pre-release sections of + // the version string are capturing groups. The build metadata is not a + // capturing group, because it should not ever be used in version + // comparison. + + createToken('FULLPLAIN', `v?${src[t.MAINVERSION] + }${src[t.PRERELEASE]}?${ + src[t.BUILD]}?`); + + createToken('FULL', `^${src[t.FULLPLAIN]}$`); + + // like full, but allows v1.2.3 and =1.2.3, which people do sometimes. + // also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty + // common in the npm registry. + createToken('LOOSEPLAIN', `[v=\\s]*${src[t.MAINVERSIONLOOSE] + }${src[t.PRERELEASELOOSE]}?${ + src[t.BUILD]}?`); + + createToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`); + + createToken('GTLT', '((?:<|>)?=?)'); + + // Something like "2.*" or "1.2.x". + // Note that "x.x" is a valid xRange identifer, meaning "any version" + // Only the first item is strictly required. + createToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`); + createToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\*`); + + createToken('XRANGEPLAIN', `[v=\\s]*(${src[t.XRANGEIDENTIFIER]})` + + `(?:\\.(${src[t.XRANGEIDENTIFIER]})` + + `(?:\\.(${src[t.XRANGEIDENTIFIER]})` + + `(?:${src[t.PRERELEASE]})?${ + src[t.BUILD]}?` + + `)?)?`); + + createToken('XRANGEPLAINLOOSE', `[v=\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` + + `(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` + + `(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` + + `(?:${src[t.PRERELEASELOOSE]})?${ + src[t.BUILD]}?` + + `)?)?`); + + createToken('XRANGE', `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAIN]}$`); + createToken('XRANGELOOSE', `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAINLOOSE]}$`); + + // Coercion. + // Extract anything that could conceivably be a part of a valid semver + createToken('COERCE', `${'(^|[^\\d])' + + '(\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` + + `(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` + + `(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` + + `(?:$|[^\\d])`); + createToken('COERCERTL', src[t.COERCE], true); + + // Tilde ranges. + // Meaning is "reasonably at or greater than" + createToken('LONETILDE', '(?:~>?)'); + + createToken('TILDETRIM', `(\\s*)${src[t.LONETILDE]}\\s+`, true); + exports.tildeTrimReplace = '$1~'; + + createToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`); + createToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`); + + // Caret ranges. + // Meaning is "at least and backwards compatible with" + createToken('LONECARET', '(?:\\^)'); + + createToken('CARETTRIM', `(\\s*)${src[t.LONECARET]}\\s+`, true); + exports.caretTrimReplace = '$1^'; + + createToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`); + createToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`); + + // A simple gt/lt/eq thing, or just "" to indicate "any version" + createToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]})$|^$`); + createToken('COMPARATOR', `^${src[t.GTLT]}\\s*(${src[t.FULLPLAIN]})$|^$`); + + // An expression to strip any whitespace between the gtlt and the thing + // it modifies, so that `> 1.2.3` ==> `>1.2.3` + createToken('COMPARATORTRIM', `(\\s*)${src[t.GTLT] + }\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true); + exports.comparatorTrimReplace = '$1$2$3'; + + // Something like `1.2.3 - 1.2.4` + // Note that these all use the loose form, because they'll be + // checked against either the strict or loose comparator form + // later. + createToken('HYPHENRANGE', `^\\s*(${src[t.XRANGEPLAIN]})` + + `\\s+-\\s+` + + `(${src[t.XRANGEPLAIN]})` + + `\\s*$`); + + createToken('HYPHENRANGELOOSE', `^\\s*(${src[t.XRANGEPLAINLOOSE]})` + + `\\s+-\\s+` + + `(${src[t.XRANGEPLAINLOOSE]})` + + `\\s*$`); + + // Star ranges basically just allow anything at all. + createToken('STAR', '(<|>)?=?\\s*\\*'); + // >=0.0.0 is like a star + createToken('GTE0', '^\\s*>=\\s*0\\.0\\.0\\s*$'); + createToken('GTE0PRE', '^\\s*>=\\s*0\\.0\\.0-0\\s*$'); +} (re$2, re$2.exports)); + +var reExports = re$2.exports; + +// parse out just the options we care about +const looseOption = Object.freeze({ loose: true }); +const emptyOpts = Object.freeze({ }); +const parseOptions$1 = options => { + if (!options) { + return emptyOpts + } + + if (typeof options !== 'object') { + return looseOption + } + + return options +}; +var parseOptions_1 = parseOptions$1; + +const numeric = /^[0-9]+$/; +const compareIdentifiers$1 = (a, b) => { + const anum = numeric.test(a); + const bnum = numeric.test(b); + + if (anum && bnum) { + a = +a; + b = +b; + } + + return a === b ? 0 + : (anum && !bnum) ? -1 + : (bnum && !anum) ? 1 + : a < b ? -1 + : 1 +}; + +const rcompareIdentifiers = (a, b) => compareIdentifiers$1(b, a); + +var identifiers$1 = { + compareIdentifiers: compareIdentifiers$1, + rcompareIdentifiers, +}; + +const debug = debug_1; +const { MAX_LENGTH, MAX_SAFE_INTEGER } = constants$1; +const { safeRe: re$1, t: t$1 } = reExports; + +const parseOptions = parseOptions_1; +const { compareIdentifiers } = identifiers$1; +let SemVer$d = class SemVer { + constructor (version, options) { + options = parseOptions(options); + + if (version instanceof SemVer) { + if (version.loose === !!options.loose && + version.includePrerelease === !!options.includePrerelease) { + return version + } else { + version = version.version; + } + } else if (typeof version !== 'string') { + throw new TypeError(`Invalid version. Must be a string. Got type "${typeof version}".`) + } + + if (version.length > MAX_LENGTH) { + throw new TypeError( + `version is longer than ${MAX_LENGTH} characters` + ) + } + + debug('SemVer', version, options); + this.options = options; + this.loose = !!options.loose; + // this isn't actually relevant for versions, but keep it so that we + // don't run into trouble passing this.options around. + this.includePrerelease = !!options.includePrerelease; + + const m = version.trim().match(options.loose ? re$1[t$1.LOOSE] : re$1[t$1.FULL]); + + if (!m) { + throw new TypeError(`Invalid Version: ${version}`) + } + + this.raw = version; + + // these are actually numbers + this.major = +m[1]; + this.minor = +m[2]; + this.patch = +m[3]; + + if (this.major > MAX_SAFE_INTEGER || this.major < 0) { + throw new TypeError('Invalid major version') + } + + if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) { + throw new TypeError('Invalid minor version') + } + + if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) { + throw new TypeError('Invalid patch version') + } + + // numberify any prerelease numeric ids + if (!m[4]) { + this.prerelease = []; + } else { + this.prerelease = m[4].split('.').map((id) => { + if (/^[0-9]+$/.test(id)) { + const num = +id; + if (num >= 0 && num < MAX_SAFE_INTEGER) { + return num + } + } + return id + }); + } + + this.build = m[5] ? m[5].split('.') : []; + this.format(); + } + + format () { + this.version = `${this.major}.${this.minor}.${this.patch}`; + if (this.prerelease.length) { + this.version += `-${this.prerelease.join('.')}`; + } + return this.version + } + + toString () { + return this.version + } + + compare (other) { + debug('SemVer.compare', this.version, this.options, other); + if (!(other instanceof SemVer)) { + if (typeof other === 'string' && other === this.version) { + return 0 + } + other = new SemVer(other, this.options); + } + + if (other.version === this.version) { + return 0 + } + + return this.compareMain(other) || this.comparePre(other) + } + + compareMain (other) { + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options); + } + + return ( + compareIdentifiers(this.major, other.major) || + compareIdentifiers(this.minor, other.minor) || + compareIdentifiers(this.patch, other.patch) + ) + } + + comparePre (other) { + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options); + } + + // NOT having a prerelease is > having one + if (this.prerelease.length && !other.prerelease.length) { + return -1 + } else if (!this.prerelease.length && other.prerelease.length) { + return 1 + } else if (!this.prerelease.length && !other.prerelease.length) { + return 0 + } + + let i = 0; + do { + const a = this.prerelease[i]; + const b = other.prerelease[i]; + debug('prerelease compare', i, a, b); + if (a === undefined && b === undefined) { + return 0 + } else if (b === undefined) { + return 1 + } else if (a === undefined) { + return -1 + } else if (a === b) { + continue + } else { + return compareIdentifiers(a, b) + } + } while (++i) + } + + compareBuild (other) { + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options); + } + + let i = 0; + do { + const a = this.build[i]; + const b = other.build[i]; + debug('prerelease compare', i, a, b); + if (a === undefined && b === undefined) { + return 0 + } else if (b === undefined) { + return 1 + } else if (a === undefined) { + return -1 + } else if (a === b) { + continue + } else { + return compareIdentifiers(a, b) + } + } while (++i) + } + + // preminor will bump the version up to the next minor release, and immediately + // down to pre-release. premajor and prepatch work the same way. + inc (release, identifier, identifierBase) { + switch (release) { + case 'premajor': + this.prerelease.length = 0; + this.patch = 0; + this.minor = 0; + this.major++; + this.inc('pre', identifier, identifierBase); + break + case 'preminor': + this.prerelease.length = 0; + this.patch = 0; + this.minor++; + this.inc('pre', identifier, identifierBase); + break + case 'prepatch': + // If this is already a prerelease, it will bump to the next version + // drop any prereleases that might already exist, since they are not + // relevant at this point. + this.prerelease.length = 0; + this.inc('patch', identifier, identifierBase); + this.inc('pre', identifier, identifierBase); + break + // If the input is a non-prerelease version, this acts the same as + // prepatch. + case 'prerelease': + if (this.prerelease.length === 0) { + this.inc('patch', identifier, identifierBase); + } + this.inc('pre', identifier, identifierBase); + break + + case 'major': + // If this is a pre-major version, bump up to the same major version. + // Otherwise increment major. + // 1.0.0-5 bumps to 1.0.0 + // 1.1.0 bumps to 2.0.0 + if ( + this.minor !== 0 || + this.patch !== 0 || + this.prerelease.length === 0 + ) { + this.major++; + } + this.minor = 0; + this.patch = 0; + this.prerelease = []; + break + case 'minor': + // If this is a pre-minor version, bump up to the same minor version. + // Otherwise increment minor. + // 1.2.0-5 bumps to 1.2.0 + // 1.2.1 bumps to 1.3.0 + if (this.patch !== 0 || this.prerelease.length === 0) { + this.minor++; + } + this.patch = 0; + this.prerelease = []; + break + case 'patch': + // If this is not a pre-release version, it will increment the patch. + // If it is a pre-release it will bump up to the same patch version. + // 1.2.0-5 patches to 1.2.0 + // 1.2.0 patches to 1.2.1 + if (this.prerelease.length === 0) { + this.patch++; + } + this.prerelease = []; + break + // This probably shouldn't be used publicly. + // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction. + case 'pre': { + const base = Number(identifierBase) ? 1 : 0; + + if (!identifier && identifierBase === false) { + throw new Error('invalid increment argument: identifier is empty') + } + + if (this.prerelease.length === 0) { + this.prerelease = [base]; + } else { + let i = this.prerelease.length; + while (--i >= 0) { + if (typeof this.prerelease[i] === 'number') { + this.prerelease[i]++; + i = -2; + } + } + if (i === -1) { + // didn't increment anything + if (identifier === this.prerelease.join('.') && identifierBase === false) { + throw new Error('invalid increment argument: identifier already exists') + } + this.prerelease.push(base); + } + } + if (identifier) { + // 1.2.0-beta.1 bumps to 1.2.0-beta.2, + // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0 + let prerelease = [identifier, base]; + if (identifierBase === false) { + prerelease = [identifier]; + } + if (compareIdentifiers(this.prerelease[0], identifier) === 0) { + if (isNaN(this.prerelease[1])) { + this.prerelease = prerelease; + } + } else { + this.prerelease = prerelease; + } + } + break + } + default: + throw new Error(`invalid increment argument: ${release}`) + } + this.raw = this.format(); + if (this.build.length) { + this.raw += `+${this.build.join('.')}`; + } + return this + } +}; + +var semver$3 = SemVer$d; + +const SemVer$c = semver$3; +const parse$6 = (version, options, throwErrors = false) => { + if (version instanceof SemVer$c) { + return version + } + try { + return new SemVer$c(version, options) + } catch (er) { + if (!throwErrors) { + return null + } + throw er + } +}; + +var parse_1 = parse$6; + +const parse$5 = parse_1; +const valid$2 = (version, options) => { + const v = parse$5(version, options); + return v ? v.version : null +}; +var valid_1 = valid$2; + +const parse$4 = parse_1; +const clean$1 = (version, options) => { + const s = parse$4(version.trim().replace(/^[=v]+/, ''), options); + return s ? s.version : null +}; +var clean_1 = clean$1; + +const SemVer$b = semver$3; + +const inc$1 = (version, release, options, identifier, identifierBase) => { + if (typeof (options) === 'string') { + identifierBase = identifier; + identifier = options; + options = undefined; + } + + try { + return new SemVer$b( + version instanceof SemVer$b ? version.version : version, + options + ).inc(release, identifier, identifierBase).version + } catch (er) { + return null + } +}; +var inc_1 = inc$1; + +const parse$3 = parse_1; + +const diff$1 = (version1, version2) => { + const v1 = parse$3(version1, null, true); + const v2 = parse$3(version2, null, true); + const comparison = v1.compare(v2); + + if (comparison === 0) { + return null + } + + const v1Higher = comparison > 0; + const highVersion = v1Higher ? v1 : v2; + const lowVersion = v1Higher ? v2 : v1; + const highHasPre = !!highVersion.prerelease.length; + const lowHasPre = !!lowVersion.prerelease.length; + + if (lowHasPre && !highHasPre) { + // Going from prerelease -> no prerelease requires some special casing + + // If the low version has only a major, then it will always be a major + // Some examples: + // 1.0.0-1 -> 1.0.0 + // 1.0.0-1 -> 1.1.1 + // 1.0.0-1 -> 2.0.0 + if (!lowVersion.patch && !lowVersion.minor) { + return 'major' + } + + // Otherwise it can be determined by checking the high version + + if (highVersion.patch) { + // anything higher than a patch bump would result in the wrong version + return 'patch' + } + + if (highVersion.minor) { + // anything higher than a minor bump would result in the wrong version + return 'minor' + } + + // bumping major/minor/patch all have same result + return 'major' + } + + // add the `pre` prefix if we are going to a prerelease version + const prefix = highHasPre ? 'pre' : ''; + + if (v1.major !== v2.major) { + return prefix + 'major' + } + + if (v1.minor !== v2.minor) { + return prefix + 'minor' + } + + if (v1.patch !== v2.patch) { + return prefix + 'patch' + } + + // high and low are preleases + return 'prerelease' +}; + +var diff_1 = diff$1; + +const SemVer$a = semver$3; +const major$1 = (a, loose) => new SemVer$a(a, loose).major; +var major_1 = major$1; + +const SemVer$9 = semver$3; +const minor$1 = (a, loose) => new SemVer$9(a, loose).minor; +var minor_1 = minor$1; + +const SemVer$8 = semver$3; +const patch$1 = (a, loose) => new SemVer$8(a, loose).patch; +var patch_1 = patch$1; + +const parse$2 = parse_1; +const prerelease$1 = (version, options) => { + const parsed = parse$2(version, options); + return (parsed && parsed.prerelease.length) ? parsed.prerelease : null +}; +var prerelease_1 = prerelease$1; + +const SemVer$7 = semver$3; +const compare$b = (a, b, loose) => + new SemVer$7(a, loose).compare(new SemVer$7(b, loose)); + +var compare_1 = compare$b; + +const compare$a = compare_1; +const rcompare$1 = (a, b, loose) => compare$a(b, a, loose); +var rcompare_1 = rcompare$1; + +const compare$9 = compare_1; +const compareLoose$1 = (a, b) => compare$9(a, b, true); +var compareLoose_1 = compareLoose$1; + +const SemVer$6 = semver$3; +const compareBuild$3 = (a, b, loose) => { + const versionA = new SemVer$6(a, loose); + const versionB = new SemVer$6(b, loose); + return versionA.compare(versionB) || versionA.compareBuild(versionB) +}; +var compareBuild_1 = compareBuild$3; + +const compareBuild$2 = compareBuild_1; +const sort$2 = (list, loose) => list.sort((a, b) => compareBuild$2(a, b, loose)); +var sort_1 = sort$2; + +const compareBuild$1 = compareBuild_1; +const rsort$1 = (list, loose) => list.sort((a, b) => compareBuild$1(b, a, loose)); +var rsort_1 = rsort$1; + +const compare$8 = compare_1; +const gt$4 = (a, b, loose) => compare$8(a, b, loose) > 0; +var gt_1 = gt$4; + +const compare$7 = compare_1; +const lt$3 = (a, b, loose) => compare$7(a, b, loose) < 0; +var lt_1 = lt$3; + +const compare$6 = compare_1; +const eq$2 = (a, b, loose) => compare$6(a, b, loose) === 0; +var eq_1 = eq$2; + +const compare$5 = compare_1; +const neq$2 = (a, b, loose) => compare$5(a, b, loose) !== 0; +var neq_1 = neq$2; + +const compare$4 = compare_1; +const gte$3 = (a, b, loose) => compare$4(a, b, loose) >= 0; +var gte_1 = gte$3; + +const compare$3 = compare_1; +const lte$3 = (a, b, loose) => compare$3(a, b, loose) <= 0; +var lte_1 = lte$3; + +const eq$1 = eq_1; +const neq$1 = neq_1; +const gt$3 = gt_1; +const gte$2 = gte_1; +const lt$2 = lt_1; +const lte$2 = lte_1; + +const cmp$1 = (a, op, b, loose) => { + switch (op) { + case '===': + if (typeof a === 'object') { + a = a.version; + } + if (typeof b === 'object') { + b = b.version; + } + return a === b + + case '!==': + if (typeof a === 'object') { + a = a.version; + } + if (typeof b === 'object') { + b = b.version; + } + return a !== b + + case '': + case '=': + case '==': + return eq$1(a, b, loose) + + case '!=': + return neq$1(a, b, loose) + + case '>': + return gt$3(a, b, loose) + + case '>=': + return gte$2(a, b, loose) + + case '<': + return lt$2(a, b, loose) + + case '<=': + return lte$2(a, b, loose) + + default: + throw new TypeError(`Invalid operator: ${op}`) + } +}; +var cmp_1 = cmp$1; + +const SemVer$5 = semver$3; +const parse$1 = parse_1; +const { safeRe: re, t } = reExports; + +const coerce$1 = (version, options) => { + if (version instanceof SemVer$5) { + return version + } + + if (typeof version === 'number') { + version = String(version); + } + + if (typeof version !== 'string') { + return null + } + + options = options || {}; + + let match = null; + if (!options.rtl) { + match = version.match(re[t.COERCE]); + } else { + // Find the right-most coercible string that does not share + // a terminus with a more left-ward coercible string. + // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4' + // + // Walk through the string checking with a /g regexp + // Manually set the index so as to pick up overlapping matches. + // Stop when we get a match that ends at the string end, since no + // coercible string can be more right-ward without the same terminus. + let next; + while ((next = re[t.COERCERTL].exec(version)) && + (!match || match.index + match[0].length !== version.length) + ) { + if (!match || + next.index + next[0].length !== match.index + match[0].length) { + match = next; + } + re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length; + } + // leave it in a clean state + re[t.COERCERTL].lastIndex = -1; + } + + if (match === null) { + return null + } + + return parse$1(`${match[2]}.${match[3] || '0'}.${match[4] || '0'}`, options) +}; +var coerce_1 = coerce$1; + +var iterator; +var hasRequiredIterator; + +function requireIterator () { + if (hasRequiredIterator) return iterator; + hasRequiredIterator = 1; + iterator = function (Yallist) { + Yallist.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 (list) { + var self = this; + if (!(self instanceof Yallist$1)) { + self = new Yallist$1(); + } + + self.tail = null; + self.head = null; + self.length = 0; + + if (list && typeof list.forEach === 'function') { + list.forEach(function (item) { + self.push(item); + }); + } else if (arguments.length > 0) { + for (var i = 0, l = arguments.length; i < l; i++) { + self.push(arguments[i]); + } + } + + return self +} + +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 prev = node.prev; + + if (next) { + next.prev = prev; + } + + if (prev) { + prev.next = next; + } + + if (node === this.head) { + this.head = next; + } + if (node === this.tail) { + this.tail = prev; + } + + 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 i = 0, l = arguments.length; i < l; i++) { + push(this, arguments[i]); + } + return this.length +}; + +Yallist$1.prototype.unshift = function () { + for (var i = 0, l = arguments.length; i < l; i++) { + unshift(this, arguments[i]); + } + return this.length +}; + +Yallist$1.prototype.pop = function () { + if (!this.tail) { + return undefined + } + + 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 undefined + } + + 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, i = 0; walker !== null; i++) { + fn.call(thisp, walker.value, i, this); + walker = walker.next; + } +}; + +Yallist$1.prototype.forEachReverse = function (fn, thisp) { + thisp = thisp || this; + for (var walker = this.tail, i = this.length - 1; walker !== null; i--) { + fn.call(thisp, walker.value, i, this); + walker = walker.prev; + } +}; + +Yallist$1.prototype.get = function (n) { + for (var i = 0, walker = this.head; walker !== null && i < n; i++) { + // abort out of the list early if we hit a cycle + walker = walker.next; + } + if (i === n && walker !== null) { + return walker.value + } +}; + +Yallist$1.prototype.getReverse = function (n) { + for (var i = 0, walker = this.tail; walker !== null && i < n; i++) { + // abort out of the list early if we hit a cycle + walker = walker.prev; + } + if (i === 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 i = 0; walker !== null; i++) { + acc = fn(acc, walker.value, i); + 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 i = this.length - 1; walker !== null; i--) { + acc = fn(acc, walker.value, i); + walker = walker.prev; + } + + return acc +}; + +Yallist$1.prototype.toArray = function () { + var arr = new Array(this.length); + for (var i = 0, walker = this.head; walker !== null; i++) { + arr[i] = walker.value; + walker = walker.next; + } + return arr +}; + +Yallist$1.prototype.toArrayReverse = function () { + var arr = new Array(this.length); + for (var i = 0, walker = this.tail; walker !== null; i++) { + arr[i] = 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 i = 0, walker = this.head; walker !== null && i < from; i++) { + walker = walker.next; + } + for (; walker !== null && i < to; i++, 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 i = this.length, walker = this.tail; walker !== null && i > to; i--) { + walker = walker.prev; + } + for (; walker !== null && i > from; i--, walker = walker.prev) { + ret.push(walker.value); + } + return ret +}; + +Yallist$1.prototype.splice = function (start, deleteCount, ...nodes) { + if (start > this.length) { + start = this.length - 1; + } + if (start < 0) { + start = this.length + start; + } + + for (var i = 0, walker = this.head; walker !== null && i < start; i++) { + walker = walker.next; + } + + var ret = []; + for (var i = 0; walker && i < deleteCount; i++) { + 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 i = 0; i < nodes.length; i++) { + walker = insert(this, walker, nodes[i]); + } + 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 p = walker.prev; + walker.prev = walker.next; + walker.next = p; + } + this.head = tail; + this.tail = head; + return this +}; + +function insert (self, node, value) { + var inserted = node === self.head ? + new Node(value, null, node, self) : + new Node(value, node, node.next, self); + + if (inserted.next === null) { + self.tail = inserted; + } + if (inserted.prev === null) { + self.head = inserted; + } + + self.length++; + + return inserted +} + +function push (self, item) { + self.tail = new Node(item, self.tail, null, self); + if (!self.head) { + self.head = self.tail; + } + self.length++; +} + +function unshift (self, item) { + self.head = new Node(item, null, self.head, self); + if (!self.tail) { + self.tail = self.head; + } + self.length++; +} + +function Node (value, prev, next, list) { + if (!(this instanceof Node)) { + return new Node(value, prev, next, list) + } + + this.list = list; + this.value = value; + + if (prev) { + prev.next = this; + this.prev = prev; + } else { + this.prev = null; + } + + if (next) { + next.prev = this; + this.next = next; + } else { + this.next = null; + } +} + +try { + // add if support for Symbol.iterator is present + requireIterator()(Yallist$1); +} catch (er) {} + +// A linked list to keep track of recently-used-ness +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; + +// lruList is a yallist where the head is the youngest +// item, and the tail is the oldest. the list contains the Hit +// objects as the entries. +// Each Hit object has a reference to its Yallist.Node. This +// never changes. +// +// cache is a Map (or PseudoMap) that matches the keys to +// the Yallist.Node object. +class LRUCache { + constructor (options) { + if (typeof options === 'number') + options = { max: options }; + + if (!options) + options = {}; + + if (options.max && (typeof options.max !== 'number' || options.max < 0)) + throw new TypeError('max must be a non-negative number') + // Kind of weird to have a default max of Infinity, but oh well. + this[MAX] = options.max || Infinity; + + const lc = options.length || naiveLength; + this[LENGTH_CALCULATOR] = (typeof lc !== 'function') ? naiveLength : lc; + this[ALLOW_STALE] = options.stale || false; + if (options.maxAge && typeof options.maxAge !== 'number') + throw new TypeError('maxAge must be a number') + this[MAX_AGE] = options.maxAge || 0; + this[DISPOSE] = options.dispose; + this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false; + this[UPDATE_AGE_ON_GET] = options.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 prev = walker.prev; + forEachStep(this, fn, walker, thisp); + walker = prev; + } + } + + 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] = new Map(); // hash of items by key + this[LRU_LIST] = new Yallist(); // list of items in order of use recency + this[LENGTH] = 0; // length of items in the list + } + + 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(h => h) + } + + 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; + + // dispose of the old one before overwriting + // split out into 2 ifs for better coverage tracking + 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); + + // oversized objects fall out of cache automatically. + 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) { + // reset the cache + this.reset(); + + const now = Date.now(); + // A previous serialized cache has the most recent items first + for (let l = arr.length - 1; l >= 0; l--) { + const hit = arr[l]; + const expiresAt = hit.e || 0; + if (expiresAt === 0) + // the item was created without expiration in a non aged cache + this.set(hit.k, hit.v); + else { + const maxAge = expiresAt - now; + // dont add already expired items + if (maxAge > 0) { + this.set(hit.k, hit.v, maxAge); + } + } + } + } + + prune () { + this[CACHE].forEach((value, key) => get(this, key, false)); + } +} + +const get = (self, key, doUse) => { + const node = self[CACHE].get(key); + if (node) { + const hit = node.value; + if (isStale(self, hit)) { + del(self, node); + if (!self[ALLOW_STALE]) + return undefined + } else { + if (doUse) { + if (self[UPDATE_AGE_ON_GET]) + node.value.now = Date.now(); + self[LRU_LIST].unshiftNode(node); + } + } + return hit.value + } +}; + +const isStale = (self, hit) => { + if (!hit || (!hit.maxAge && !self[MAX_AGE])) + return false + + const diff = Date.now() - hit.now; + return hit.maxAge ? diff > hit.maxAge + : self[MAX_AGE] && (diff > self[MAX_AGE]) +}; + +const trim = self => { + if (self[LENGTH] > self[MAX]) { + for (let walker = self[LRU_LIST].tail; + self[LENGTH] > self[MAX] && walker !== null;) { + // We know that we're about to delete this one, and also + // what the next least recently used key will be, so just + // go ahead and set it now. + const prev = walker.prev; + del(self, walker); + walker = prev; + } + } +}; + +const del = (self, node) => { + if (node) { + const hit = node.value; + if (self[DISPOSE]) + self[DISPOSE](hit.key, hit.value); + + self[LENGTH] -= hit.length; + self[CACHE].delete(hit.key); + self[LRU_LIST].removeNode(node); + } +}; + +class Entry { + constructor (key, value, length, now, maxAge) { + this.key = key; + this.value = value; + this.length = length; + this.now = now; + this.maxAge = maxAge || 0; + } +} + +const forEachStep = (self, fn, node, thisp) => { + let hit = node.value; + if (isStale(self, hit)) { + del(self, node); + if (!self[ALLOW_STALE]) + hit = undefined; + } + if (hit) + fn.call(thisp, hit.value, hit.key, self); +}; + +var lruCache = LRUCache; + +var range; +var hasRequiredRange; + +function requireRange () { + if (hasRequiredRange) return range; + hasRequiredRange = 1; + // hoisted class for cyclic dependency + class Range { + constructor (range, options) { + options = parseOptions(options); + + if (range instanceof Range) { + if ( + range.loose === !!options.loose && + range.includePrerelease === !!options.includePrerelease + ) { + return range + } else { + return new Range(range.raw, options) + } + } + + if (range instanceof Comparator) { + // just put it in the set and return + this.raw = range.value; + this.set = [[range]]; + this.format(); + return this + } + + this.options = options; + this.loose = !!options.loose; + this.includePrerelease = !!options.includePrerelease; + + // First reduce all whitespace as much as possible so we do not have to rely + // on potentially slow regexes like \s*. This is then stored and used for + // future error messages as well. + this.raw = range + .trim() + .split(/\s+/) + .join(' '); + + // First, split on || + this.set = this.raw + .split('||') + // map the range to a 2d array of comparators + .map(r => this.parseRange(r.trim())) + // throw out any comparator lists that are empty + // this generally means that it was not a valid range, which is allowed + // in loose mode, but will still throw if the WHOLE range is invalid. + .filter(c => c.length); + + if (!this.set.length) { + throw new TypeError(`Invalid SemVer Range: ${this.raw}`) + } + + // if we have any that are not the null set, throw out null sets. + if (this.set.length > 1) { + // keep the first one, in case they're all null sets + const first = this.set[0]; + this.set = this.set.filter(c => !isNullSet(c[0])); + if (this.set.length === 0) { + this.set = [first]; + } else if (this.set.length > 1) { + // if we have any that are *, then the range is just * + for (const c of this.set) { + if (c.length === 1 && isAny(c[0])) { + this.set = [c]; + break + } + } + } + } + + this.format(); + } + + format () { + this.range = this.set + .map((comps) => comps.join(' ').trim()) + .join('||') + .trim(); + return this.range + } + + toString () { + return this.range + } + + parseRange (range) { + // memoize range parsing for performance. + // this is a very hot path, and fully deterministic. + const memoOpts = + (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) | + (this.options.loose && FLAG_LOOSE); + const memoKey = memoOpts + ':' + range; + const cached = cache.get(memoKey); + if (cached) { + return cached + } + + const loose = this.options.loose; + // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4` + const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]; + range = range.replace(hr, hyphenReplace(this.options.includePrerelease)); + debug('hyphen replace', range); + + // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5` + range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace); + debug('comparator trim', range); + + // `~ 1.2.3` => `~1.2.3` + range = range.replace(re[t.TILDETRIM], tildeTrimReplace); + debug('tilde trim', range); + + // `^ 1.2.3` => `^1.2.3` + range = range.replace(re[t.CARETTRIM], caretTrimReplace); + debug('caret trim', range); + + // At this point, the range is completely trimmed and + // ready to be split into comparators. + + let rangeList = range + .split(' ') + .map(comp => parseComparator(comp, this.options)) + .join(' ') + .split(/\s+/) + // >=0.0.0 is equivalent to * + .map(comp => replaceGTE0(comp, this.options)); + + if (loose) { + // in loose mode, throw out any that are not valid comparators + rangeList = rangeList.filter(comp => { + debug('loose invalid filter', comp, this.options); + return !!comp.match(re[t.COMPARATORLOOSE]) + }); + } + debug('range list', rangeList); + + // if any comparators are the null set, then replace with JUST null set + // if more than one comparator, remove any * comparators + // also, don't include the same comparator more than once + const rangeMap = new Map(); + const comparators = rangeList.map(comp => new Comparator(comp, this.options)); + for (const comp of comparators) { + if (isNullSet(comp)) { + return [comp] + } + rangeMap.set(comp.value, comp); + } + if (rangeMap.size > 1 && rangeMap.has('')) { + rangeMap.delete(''); + } + + const result = [...rangeMap.values()]; + cache.set(memoKey, result); + return result + } + + intersects (range, options) { + if (!(range instanceof Range)) { + throw new TypeError('a Range is required') + } + + return this.set.some((thisComparators) => { + return ( + isSatisfiable(thisComparators, options) && + range.set.some((rangeComparators) => { + return ( + isSatisfiable(rangeComparators, options) && + thisComparators.every((thisComparator) => { + return rangeComparators.every((rangeComparator) => { + return thisComparator.intersects(rangeComparator, options) + }) + }) + ) + }) + ) + }) + } + + // if ANY of the sets match ALL of its comparators, then pass + test (version) { + if (!version) { + return false + } + + if (typeof version === 'string') { + try { + version = new SemVer(version, this.options); + } catch (er) { + return false + } + } + + for (let i = 0; i < this.set.length; i++) { + if (testSet(this.set[i], version, this.options)) { + return true + } + } + return false + } + } + + range = Range; + + const LRU = lruCache; + const cache = new LRU({ max: 1000 }); + + const parseOptions = parseOptions_1; + const Comparator = requireComparator(); + const debug = debug_1; + const SemVer = semver$3; + const { + safeRe: re, + t, + comparatorTrimReplace, + tildeTrimReplace, + caretTrimReplace, + } = reExports; + const { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = constants$1; + + const isNullSet = c => c.value === '<0.0.0-0'; + const isAny = c => c.value === ''; + + // take a set of comparators and determine whether there + // exists a version which can satisfy it + const isSatisfiable = (comparators, options) => { + let result = true; + const remainingComparators = comparators.slice(); + let testComparator = remainingComparators.pop(); + + while (result && remainingComparators.length) { + result = remainingComparators.every((otherComparator) => { + return testComparator.intersects(otherComparator, options) + }); + + testComparator = remainingComparators.pop(); + } + + return result + }; + + // comprised of xranges, tildes, stars, and gtlt's at this point. + // already replaced the hyphen ranges + // turn into a set of JUST comparators. + const parseComparator = (comp, options) => { + debug('comp', comp, options); + comp = replaceCarets(comp, options); + debug('caret', comp); + comp = replaceTildes(comp, options); + debug('tildes', comp); + comp = replaceXRanges(comp, options); + debug('xrange', comp); + comp = replaceStars(comp, options); + debug('stars', comp); + return comp + }; + + const isX = id => !id || id.toLowerCase() === 'x' || id === '*'; + + // ~, ~> --> * (any, kinda silly) + // ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0 + // ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0 + // ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0 + // ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0 + // ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0 + // ~0.0.1 --> >=0.0.1 <0.1.0-0 + const replaceTildes = (comp, options) => { + return comp + .trim() + .split(/\s+/) + .map((c) => replaceTilde(c, options)) + .join(' ') + }; + + const replaceTilde = (comp, options) => { + const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]; + return comp.replace(r, (_, M, m, p, pr) => { + debug('tilde', comp, _, M, m, p, pr); + let ret; + + if (isX(M)) { + ret = ''; + } else if (isX(m)) { + ret = `>=${M}.0.0 <${+M + 1}.0.0-0`; + } else if (isX(p)) { + // ~1.2 == >=1.2.0 <1.3.0-0 + ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`; + } else if (pr) { + debug('replaceTilde pr', pr); + ret = `>=${M}.${m}.${p}-${pr + } <${M}.${+m + 1}.0-0`; + } else { + // ~1.2.3 == >=1.2.3 <1.3.0-0 + ret = `>=${M}.${m}.${p + } <${M}.${+m + 1}.0-0`; + } + + debug('tilde return', ret); + return ret + }) + }; + + // ^ --> * (any, kinda silly) + // ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0 + // ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0 + // ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0 + // ^1.2.3 --> >=1.2.3 <2.0.0-0 + // ^1.2.0 --> >=1.2.0 <2.0.0-0 + // ^0.0.1 --> >=0.0.1 <0.0.2-0 + // ^0.1.0 --> >=0.1.0 <0.2.0-0 + const replaceCarets = (comp, options) => { + return comp + .trim() + .split(/\s+/) + .map((c) => replaceCaret(c, options)) + .join(' ') + }; + + const replaceCaret = (comp, options) => { + debug('caret', comp, options); + const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]; + const z = options.includePrerelease ? '-0' : ''; + return comp.replace(r, (_, M, m, p, pr) => { + debug('caret', comp, _, M, m, p, pr); + let ret; + + if (isX(M)) { + ret = ''; + } else if (isX(m)) { + ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`; + } else if (isX(p)) { + if (M === '0') { + ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`; + } else { + ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`; + } + } else if (pr) { + debug('replaceCaret pr', pr); + if (M === '0') { + if (m === '0') { + ret = `>=${M}.${m}.${p}-${pr + } <${M}.${m}.${+p + 1}-0`; + } else { + ret = `>=${M}.${m}.${p}-${pr + } <${M}.${+m + 1}.0-0`; + } + } else { + ret = `>=${M}.${m}.${p}-${pr + } <${+M + 1}.0.0-0`; + } + } else { + debug('no pr'); + if (M === '0') { + if (m === '0') { + ret = `>=${M}.${m}.${p + }${z} <${M}.${m}.${+p + 1}-0`; + } else { + ret = `>=${M}.${m}.${p + }${z} <${M}.${+m + 1}.0-0`; + } + } else { + ret = `>=${M}.${m}.${p + } <${+M + 1}.0.0-0`; + } + } + + debug('caret return', ret); + return ret + }) + }; + + const replaceXRanges = (comp, options) => { + debug('replaceXRanges', comp, options); + return comp + .split(/\s+/) + .map((c) => replaceXRange(c, options)) + .join(' ') + }; + + const replaceXRange = (comp, options) => { + comp = comp.trim(); + const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]; + return comp.replace(r, (ret, gtlt, M, m, p, pr) => { + debug('xRange', comp, ret, gtlt, M, m, p, pr); + const xM = isX(M); + const xm = xM || isX(m); + const xp = xm || isX(p); + const anyX = xp; + + if (gtlt === '=' && anyX) { + gtlt = ''; + } + + // if we're including prereleases in the match, then we need + // to fix this to -0, the lowest possible prerelease value + pr = options.includePrerelease ? '-0' : ''; + + if (xM) { + if (gtlt === '>' || gtlt === '<') { + // nothing is allowed + ret = '<0.0.0-0'; + } else { + // nothing is forbidden + ret = '*'; + } + } else if (gtlt && anyX) { + // we know patch is an x, because we have any x at all. + // replace X with 0 + if (xm) { + m = 0; + } + p = 0; + + if (gtlt === '>') { + // >1 => >=2.0.0 + // >1.2 => >=1.3.0 + gtlt = '>='; + if (xm) { + M = +M + 1; + m = 0; + p = 0; + } else { + m = +m + 1; + p = 0; + } + } else if (gtlt === '<=') { + // <=0.7.x is actually <0.8.0, since any 0.7.x should + // pass. Similarly, <=7.x is actually <8.0.0, etc. + gtlt = '<'; + if (xm) { + M = +M + 1; + } else { + m = +m + 1; + } + } + + if (gtlt === '<') { + pr = '-0'; + } + + ret = `${gtlt + M}.${m}.${p}${pr}`; + } else if (xm) { + ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`; + } else if (xp) { + ret = `>=${M}.${m}.0${pr + } <${M}.${+m + 1}.0-0`; + } + + debug('xRange return', ret); + + return ret + }) + }; + + // Because * is AND-ed with everything else in the comparator, + // and '' means "any version", just remove the *s entirely. + const replaceStars = (comp, options) => { + debug('replaceStars', comp, options); + // Looseness is ignored here. star is always as loose as it gets! + return comp + .trim() + .replace(re[t.STAR], '') + }; + + const replaceGTE0 = (comp, options) => { + debug('replaceGTE0', comp, options); + return comp + .trim() + .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '') + }; + + // This function is passed to string.replace(re[t.HYPHENRANGE]) + // M, m, patch, prerelease, build + // 1.2 - 3.4.5 => >=1.2.0 <=3.4.5 + // 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do + // 1.2 - 3.4 => >=1.2.0 <3.5.0-0 + const hyphenReplace = incPr => ($0, + from, fM, fm, fp, fpr, fb, + to, tM, tm, tp, tpr, tb) => { + if (isX(fM)) { + from = ''; + } else if (isX(fm)) { + from = `>=${fM}.0.0${incPr ? '-0' : ''}`; + } else if (isX(fp)) { + from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`; + } else if (fpr) { + from = `>=${from}`; + } else { + from = `>=${from}${incPr ? '-0' : ''}`; + } + + if (isX(tM)) { + to = ''; + } else if (isX(tm)) { + to = `<${+tM + 1}.0.0-0`; + } else if (isX(tp)) { + to = `<${tM}.${+tm + 1}.0-0`; + } else if (tpr) { + to = `<=${tM}.${tm}.${tp}-${tpr}`; + } else if (incPr) { + to = `<${tM}.${tm}.${+tp + 1}-0`; + } else { + to = `<=${to}`; + } + + return `${from} ${to}`.trim() + }; + + const testSet = (set, version, options) => { + for (let i = 0; i < set.length; i++) { + if (!set[i].test(version)) { + return false + } + } + + if (version.prerelease.length && !options.includePrerelease) { + // Find the set of versions that are allowed to have prereleases + // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0 + // That should allow `1.2.3-pr.2` to pass. + // However, `1.2.4-alpha.notready` should NOT be allowed, + // even though it's within the range set by the comparators. + for (let i = 0; i < set.length; i++) { + debug(set[i].semver); + if (set[i].semver === Comparator.ANY) { + continue + } + + if (set[i].semver.prerelease.length > 0) { + const allowed = set[i].semver; + if (allowed.major === version.major && + allowed.minor === version.minor && + allowed.patch === version.patch) { + return true + } + } + } + + // Version has a -pre, but it's not one of the ones we like. + return false + } + + return true + }; + return range; +} + +var comparator; +var hasRequiredComparator; + +function requireComparator () { + if (hasRequiredComparator) return comparator; + hasRequiredComparator = 1; + const ANY = Symbol('SemVer ANY'); + // hoisted class for cyclic dependency + class Comparator { + static get ANY () { + return ANY + } + + constructor (comp, options) { + options = parseOptions(options); + + if (comp instanceof Comparator) { + if (comp.loose === !!options.loose) { + return comp + } else { + comp = comp.value; + } + } + + comp = comp.trim().split(/\s+/).join(' '); + debug('comparator', comp, options); + this.options = options; + this.loose = !!options.loose; + this.parse(comp); + + if (this.semver === ANY) { + this.value = ''; + } else { + this.value = this.operator + this.semver.version; + } + + debug('comp', this); + } + + parse (comp) { + const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]; + const m = comp.match(r); + + if (!m) { + throw new TypeError(`Invalid comparator: ${comp}`) + } + + this.operator = m[1] !== undefined ? m[1] : ''; + if (this.operator === '=') { + this.operator = ''; + } + + // if it literally is just '>' or '' then allow anything. + if (!m[2]) { + this.semver = ANY; + } else { + this.semver = new SemVer(m[2], this.options.loose); + } + } + + toString () { + return this.value + } + + test (version) { + debug('Comparator.test', version, this.options.loose); + + if (this.semver === ANY || version === ANY) { + return true + } + + if (typeof version === 'string') { + try { + version = new SemVer(version, this.options); + } catch (er) { + return false + } + } + + return cmp(version, this.operator, this.semver, this.options) + } + + intersects (comp, options) { + if (!(comp instanceof Comparator)) { + throw new TypeError('a Comparator is required') + } + + if (this.operator === '') { + if (this.value === '') { + return true + } + return new Range(comp.value, options).test(this.value) + } else if (comp.operator === '') { + if (comp.value === '') { + return true + } + return new Range(this.value, options).test(comp.semver) + } + + options = parseOptions(options); + + // Special cases where nothing can possibly be lower + if (options.includePrerelease && + (this.value === '<0.0.0-0' || comp.value === '<0.0.0-0')) { + return false + } + if (!options.includePrerelease && + (this.value.startsWith('<0.0.0') || comp.value.startsWith('<0.0.0'))) { + return false + } + + // Same direction increasing (> or >=) + if (this.operator.startsWith('>') && comp.operator.startsWith('>')) { + return true + } + // Same direction decreasing (< or <=) + if (this.operator.startsWith('<') && comp.operator.startsWith('<')) { + return true + } + // same SemVer and both sides are inclusive (<= or >=) + if ( + (this.semver.version === comp.semver.version) && + this.operator.includes('=') && comp.operator.includes('=')) { + return true + } + // opposite directions less than + if (cmp(this.semver, '<', comp.semver, options) && + this.operator.startsWith('>') && comp.operator.startsWith('<')) { + return true + } + // opposite directions greater than + if (cmp(this.semver, '>', comp.semver, options) && + this.operator.startsWith('<') && comp.operator.startsWith('>')) { + return true + } + return false + } + } + + comparator = Comparator; + + const parseOptions = parseOptions_1; + const { safeRe: re, t } = reExports; + const cmp = cmp_1; + const debug = debug_1; + const SemVer = semver$3; + const Range = requireRange(); + return comparator; +} + +const Range$9 = requireRange(); +const satisfies$4 = (version, range, options) => { + try { + range = new Range$9(range, options); + } catch (er) { + return false + } + return range.test(version) +}; +var satisfies_1 = satisfies$4; + +const Range$8 = requireRange(); + +// Mostly just for testing and legacy API reasons +const toComparators$1 = (range, options) => + new Range$8(range, options).set + .map(comp => comp.map(c => c.value).join(' ').trim().split(' ')); + +var toComparators_1 = toComparators$1; + +const SemVer$4 = semver$3; +const Range$7 = requireRange(); + +const maxSatisfying$1 = (versions, range, options) => { + let max = null; + let maxSV = null; + let rangeObj = null; + try { + rangeObj = new Range$7(range, options); + } catch (er) { + return null + } + versions.forEach((v) => { + if (rangeObj.test(v)) { + // satisfies(v, range, options) + if (!max || maxSV.compare(v) === -1) { + // compare(max, v, true) + max = v; + maxSV = new SemVer$4(max, options); + } + } + }); + return max +}; +var maxSatisfying_1 = maxSatisfying$1; + +const SemVer$3 = semver$3; +const Range$6 = requireRange(); +const minSatisfying$1 = (versions, range, options) => { + let min = null; + let minSV = null; + let rangeObj = null; + try { + rangeObj = new Range$6(range, options); + } catch (er) { + return null + } + versions.forEach((v) => { + if (rangeObj.test(v)) { + // satisfies(v, range, options) + if (!min || minSV.compare(v) === 1) { + // compare(min, v, true) + min = v; + minSV = new SemVer$3(min, options); + } + } + }); + return min +}; +var minSatisfying_1 = minSatisfying$1; + +const SemVer$2 = semver$3; +const Range$5 = requireRange(); +const gt$2 = gt_1; + +const minVersion$1 = (range, loose) => { + range = new Range$5(range, loose); + + let minver = new SemVer$2('0.0.0'); + if (range.test(minver)) { + return minver + } + + minver = new SemVer$2('0.0.0-0'); + if (range.test(minver)) { + return minver + } + + minver = null; + for (let i = 0; i < range.set.length; ++i) { + const comparators = range.set[i]; + + let setMin = null; + comparators.forEach((comparator) => { + // Clone to avoid manipulating the comparator's semver object. + const compver = new SemVer$2(comparator.semver.version); + switch (comparator.operator) { + case '>': + if (compver.prerelease.length === 0) { + compver.patch++; + } else { + compver.prerelease.push(0); + } + compver.raw = compver.format(); + /* fallthrough */ + case '': + case '>=': + if (!setMin || gt$2(compver, setMin)) { + setMin = compver; + } + break + case '<': + case '<=': + /* Ignore maximum versions */ + break + /* istanbul ignore next */ + default: + throw new Error(`Unexpected operation: ${comparator.operator}`) + } + }); + if (setMin && (!minver || gt$2(minver, setMin))) { + minver = setMin; + } + } + + if (minver && range.test(minver)) { + return minver + } + + return null +}; +var minVersion_1 = minVersion$1; + +const Range$4 = requireRange(); +const validRange$1 = (range, options) => { + try { + // Return '*' instead of '' so that truthiness works. + // This will throw if it's invalid anyway + return new Range$4(range, options).range || '*' + } catch (er) { + return null + } +}; +var valid$1 = validRange$1; + +const SemVer$1 = semver$3; +const Comparator$2 = requireComparator(); +const { ANY: ANY$1 } = Comparator$2; +const Range$3 = requireRange(); +const satisfies$3 = satisfies_1; +const gt$1 = gt_1; +const lt$1 = lt_1; +const lte$1 = lte_1; +const gte$1 = gte_1; + +const outside$3 = (version, range, hilo, options) => { + version = new SemVer$1(version, options); + range = new Range$3(range, options); + + let gtfn, ltefn, ltfn, comp, ecomp; + switch (hilo) { + case '>': + gtfn = gt$1; + ltefn = lte$1; + ltfn = lt$1; + comp = '>'; + ecomp = '>='; + break + case '<': + gtfn = lt$1; + ltefn = gte$1; + ltfn = gt$1; + comp = '<'; + ecomp = '<='; + break + default: + throw new TypeError('Must provide a hilo val of "<" or ">"') + } + + // If it satisfies the range it is not outside + if (satisfies$3(version, range, options)) { + return false + } + + // From now on, variable terms are as if we're in "gtr" mode. + // but note that everything is flipped for the "ltr" function. + + for (let i = 0; i < range.set.length; ++i) { + const comparators = range.set[i]; + + let high = null; + let low = null; + + comparators.forEach((comparator) => { + if (comparator.semver === ANY$1) { + comparator = new Comparator$2('>=0.0.0'); + } + high = high || comparator; + low = low || comparator; + if (gtfn(comparator.semver, high.semver, options)) { + high = comparator; + } else if (ltfn(comparator.semver, low.semver, options)) { + low = comparator; + } + }); + + // If the edge version comparator has a operator then our version + // isn't outside it + if (high.operator === comp || high.operator === ecomp) { + return false + } + + // If the lowest version comparator has an operator and our version + // is less than it then it isn't higher than the range + if ((!low.operator || low.operator === comp) && + ltefn(version, low.semver)) { + return false + } else if (low.operator === ecomp && ltfn(version, low.semver)) { + return false + } + } + return true +}; + +var outside_1 = outside$3; + +// Determine if version is greater than all the versions possible in the range. +const outside$2 = outside_1; +const gtr$1 = (version, range, options) => outside$2(version, range, '>', options); +var gtr_1 = gtr$1; + +const outside$1 = outside_1; +// Determine if version is less than all the versions possible in the range +const ltr$1 = (version, range, options) => outside$1(version, range, '<', options); +var ltr_1 = ltr$1; + +const Range$2 = requireRange(); +const intersects$1 = (r1, r2, options) => { + r1 = new Range$2(r1, options); + r2 = new Range$2(r2, options); + return r1.intersects(r2, options) +}; +var intersects_1 = intersects$1; + +// given a set of versions and a range, create a "simplified" range +// that includes the same versions that the original range does +// If the original range is shorter than the simplified one, return that. +const satisfies$2 = satisfies_1; +const compare$2 = compare_1; +var simplify = (versions, range, options) => { + const set = []; + let first = null; + let prev = null; + const v = versions.sort((a, b) => compare$2(a, b, options)); + for (const version of v) { + const included = satisfies$2(version, range, options); + if (included) { + prev = version; + if (!first) { + first = version; + } + } else { + if (prev) { + set.push([first, prev]); + } + prev = null; + first = null; + } + } + if (first) { + set.push([first, null]); + } + + const ranges = []; + for (const [min, max] of set) { + if (min === max) { + ranges.push(min); + } else if (!max && min === v[0]) { + ranges.push('*'); + } else if (!max) { + ranges.push(`>=${min}`); + } else if (min === v[0]) { + ranges.push(`<=${max}`); + } else { + ranges.push(`${min} - ${max}`); + } + } + const simplified = ranges.join(' || '); + const original = typeof range.raw === 'string' ? range.raw : String(range); + return simplified.length < original.length ? simplified : range +}; + +const Range$1 = requireRange(); +const Comparator$1 = requireComparator(); +const { ANY } = Comparator$1; +const satisfies$1 = satisfies_1; +const compare$1 = compare_1; + +// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff: +// - Every simple range `r1, r2, ...` is a null set, OR +// - Every simple range `r1, r2, ...` which is not a null set is a subset of +// some `R1, R2, ...` +// +// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff: +// - If c is only the ANY comparator +// - If C is only the ANY comparator, return true +// - Else if in prerelease mode, return false +// - else replace c with `[>=0.0.0]` +// - If C is only the ANY comparator +// - if in prerelease mode, return true +// - else replace C with `[>=0.0.0]` +// - Let EQ be the set of = comparators in c +// - If EQ is more than one, return true (null set) +// - Let GT be the highest > or >= comparator in c +// - Let LT be the lowest < or <= comparator in c +// - If GT and LT, and GT.semver > LT.semver, return true (null set) +// - If any C is a = range, and GT or LT are set, return false +// - If EQ +// - If GT, and EQ does not satisfy GT, return true (null set) +// - If LT, and EQ does not satisfy LT, return true (null set) +// - If EQ satisfies every C, return true +// - Else return false +// - If GT +// - If GT.semver is lower than any > or >= comp in C, return false +// - If GT is >=, and GT.semver does not satisfy every C, return false +// - If GT.semver has a prerelease, and not in prerelease mode +// - If no C has a prerelease and the GT.semver tuple, return false +// - If LT +// - If LT.semver is greater than any < or <= comp in C, return false +// - If LT is <=, and LT.semver does not satisfy every C, return false +// - If GT.semver has a prerelease, and not in prerelease mode +// - If no C has a prerelease and the LT.semver tuple, return false +// - Else return true + +const subset$1 = (sub, dom, options = {}) => { + if (sub === dom) { + return true + } + + sub = new Range$1(sub, options); + dom = new Range$1(dom, options); + let sawNonNull = false; + + OUTER: for (const simpleSub of sub.set) { + for (const simpleDom of dom.set) { + const isSub = simpleSubset(simpleSub, simpleDom, options); + sawNonNull = sawNonNull || isSub !== null; + if (isSub) { + continue OUTER + } + } + // the null set is a subset of everything, but null simple ranges in + // a complex range should be ignored. so if we saw a non-null range, + // then we know this isn't a subset, but if EVERY simple range was null, + // then it is a subset. + if (sawNonNull) { + return false + } + } + return true +}; + +const minimumVersionWithPreRelease = [new Comparator$1('>=0.0.0-0')]; +const minimumVersion = [new Comparator$1('>=0.0.0')]; + +const simpleSubset = (sub, dom, options) => { + if (sub === dom) { + return true + } + + if (sub.length === 1 && sub[0].semver === ANY) { + if (dom.length === 1 && dom[0].semver === ANY) { + return true + } else if (options.includePrerelease) { + sub = minimumVersionWithPreRelease; + } else { + sub = minimumVersion; + } + } + + if (dom.length === 1 && dom[0].semver === ANY) { + if (options.includePrerelease) { + return true + } else { + dom = minimumVersion; + } + } + + const eqSet = new Set(); + let gt, lt; + for (const c of sub) { + if (c.operator === '>' || c.operator === '>=') { + gt = higherGT(gt, c, options); + } else if (c.operator === '<' || c.operator === '<=') { + lt = lowerLT(lt, c, options); + } else { + eqSet.add(c.semver); + } + } + + if (eqSet.size > 1) { + return null + } + + let gtltComp; + if (gt && lt) { + gtltComp = compare$1(gt.semver, lt.semver, options); + if (gtltComp > 0) { + return null + } else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) { + return null + } + } + + // will iterate one or zero times + for (const eq of eqSet) { + if (gt && !satisfies$1(eq, String(gt), options)) { + return null + } + + if (lt && !satisfies$1(eq, String(lt), options)) { + return null + } + + for (const c of dom) { + if (!satisfies$1(eq, String(c), options)) { + return false + } + } + + return true + } + + let higher, lower; + let hasDomLT, hasDomGT; + // if the subset has a prerelease, we need a comparator in the superset + // with the same tuple and a prerelease, or it's not a subset + let needDomLTPre = lt && + !options.includePrerelease && + lt.semver.prerelease.length ? lt.semver : false; + let needDomGTPre = gt && + !options.includePrerelease && + gt.semver.prerelease.length ? gt.semver : false; + // exception: <1.2.3-0 is the same as <1.2.3 + if (needDomLTPre && needDomLTPre.prerelease.length === 1 && + lt.operator === '<' && needDomLTPre.prerelease[0] === 0) { + needDomLTPre = false; + } + + for (const c of dom) { + hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>='; + hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<='; + if (gt) { + if (needDomGTPre) { + if (c.semver.prerelease && c.semver.prerelease.length && + c.semver.major === needDomGTPre.major && + c.semver.minor === needDomGTPre.minor && + c.semver.patch === needDomGTPre.patch) { + needDomGTPre = false; + } + } + if (c.operator === '>' || c.operator === '>=') { + higher = higherGT(gt, c, options); + if (higher === c && higher !== gt) { + return false + } + } else if (gt.operator === '>=' && !satisfies$1(gt.semver, String(c), options)) { + return false + } + } + if (lt) { + if (needDomLTPre) { + if (c.semver.prerelease && c.semver.prerelease.length && + c.semver.major === needDomLTPre.major && + c.semver.minor === needDomLTPre.minor && + c.semver.patch === needDomLTPre.patch) { + needDomLTPre = false; + } + } + if (c.operator === '<' || c.operator === '<=') { + lower = lowerLT(lt, c, options); + if (lower === c && lower !== lt) { + return false + } + } else if (lt.operator === '<=' && !satisfies$1(lt.semver, String(c), options)) { + return false + } + } + if (!c.operator && (lt || gt) && gtltComp !== 0) { + return false + } + } + + // if there was a < or >, and nothing in the dom, then must be false + // UNLESS it was limited by another range in the other direction. + // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0 + if (gt && hasDomLT && !lt && gtltComp !== 0) { + return false + } + + if (lt && hasDomGT && !gt && gtltComp !== 0) { + return false + } + + // we needed a prerelease range in a specific tuple, but didn't get one + // then this isn't a subset. eg >=1.2.3-pre is not a subset of >=1.0.0, + // because it includes prereleases in the 1.2.3 tuple + if (needDomGTPre || needDomLTPre) { + return false + } + + return true +}; + +// >=1.2.3 is lower than >1.2.3 +const higherGT = (a, b, options) => { + if (!a) { + return b + } + const comp = compare$1(a.semver, b.semver, options); + return comp > 0 ? a + : comp < 0 ? b + : b.operator === '>' && a.operator === '>=' ? b + : a +}; + +// <=1.2.3 is higher than <1.2.3 +const lowerLT = (a, b, options) => { + if (!a) { + return b + } + const comp = compare$1(a.semver, b.semver, options); + return comp < 0 ? a + : comp > 0 ? b + : b.operator === '<' && a.operator === '<=' ? b + : a +}; + +var subset_1 = subset$1; + +// just pre-load all the stuff that index.js lazily exports +const internalRe = reExports; +const constants = constants$1; +const SemVer = semver$3; +const identifiers = identifiers$1; +const parse = parse_1; +const valid = valid_1; +const clean = clean_1; +const inc = inc_1; +const diff = diff_1; +const major = major_1; +const minor = minor_1; +const patch = patch_1; +const prerelease = prerelease_1; +const compare = compare_1; +const rcompare = rcompare_1; +const compareLoose = compareLoose_1; +const compareBuild = compareBuild_1; +const sort$1 = sort_1; +const rsort = rsort_1; +const gt = gt_1; +const lt = lt_1; +const eq = eq_1; +const neq = neq_1; +const gte = gte_1; +const lte = lte_1; +const cmp = cmp_1; +const coerce = coerce_1; +const Comparator = requireComparator(); +const Range = requireRange(); +const satisfies = satisfies_1; +const toComparators = toComparators_1; +const maxSatisfying = maxSatisfying_1; +const minSatisfying = minSatisfying_1; +const minVersion = minVersion_1; +const validRange = valid$1; +const outside = outside_1; +const gtr = gtr_1; +const ltr = ltr_1; +const intersects = intersects_1; +const simplifyRange = simplify; +const subset = subset_1; +var semver$2 = { + parse, + valid, + clean, + inc, + diff, + major, + minor, + patch, + prerelease, + compare, + rcompare, + compareLoose, + compareBuild, + sort: sort$1, + rsort, + gt, + lt, + eq, + neq, + gte, + lte, + cmp, + coerce, + Comparator, + Range, + satisfies, + toComparators, + maxSatisfying, + minSatisfying, + minVersion, + validRange, + outside, + gtr, + ltr, + intersects, + simplifyRange, + subset, + SemVer, + re: internalRe.re, + src: internalRe.src, + tokens: internalRe.t, + SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION, + RELEASE_TYPES: constants.RELEASE_TYPES, + compareIdentifiers: identifiers.compareIdentifiers, + rcompareIdentifiers: identifiers.rcompareIdentifiers, +}; + +var shared = {}; + +Object.defineProperty(shared, "__esModule", { value: true }); +shared.safeCall = shared.isJsonDocument = shared.isTsDocument = shared.getConfigTitle = void 0; +function getConfigTitle(document) { + if (document.languageId === 'javascriptreact') { + return 'javascript'; + } + if (document.languageId === 'typescriptreact') { + return 'typescript'; + } + return document.languageId; +} +shared.getConfigTitle = getConfigTitle; +function isTsDocument$2(document) { + return document.languageId === 'javascript' || + document.languageId === 'typescript' || + document.languageId === 'javascriptreact' || + document.languageId === 'typescriptreact'; +} +shared.isTsDocument = isTsDocument$2; +function isJsonDocument(document) { + return document.languageId === 'json' || + document.languageId === 'jsonc'; +} +shared.isJsonDocument = isJsonDocument; +function safeCall(cb) { + try { + return cb(); + } + catch { } +} +shared.safeCall = safeCall; + +var callHierarchy = {}; + +var protocol_const = {}; + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +Object.defineProperty(protocol_const, "__esModule", { value: true }); +protocol_const.EventName = protocol_const.DisplayPartKind = protocol_const.KindModifiers = protocol_const.DiagnosticCategory = protocol_const.Kind = void 0; +class Kind { +} +protocol_const.Kind = Kind; +Kind.alias = 'alias'; +Kind.callSignature = 'call'; +Kind.class = 'class'; +Kind.const = 'const'; +Kind.constructorImplementation = 'constructor'; +Kind.constructSignature = 'construct'; +Kind.directory = 'directory'; +Kind.enum = 'enum'; +Kind.enumMember = 'enum member'; +Kind.externalModuleName = 'external module name'; +Kind.function = 'function'; +Kind.indexSignature = 'index'; +Kind.interface = 'interface'; +Kind.keyword = 'keyword'; +Kind.let = 'let'; +Kind.localFunction = 'local function'; +Kind.localVariable = 'local var'; +Kind.method = 'method'; +Kind.memberGetAccessor = 'getter'; +Kind.memberSetAccessor = 'setter'; +Kind.memberVariable = 'property'; +Kind.module = 'module'; +Kind.primitiveType = 'primitive type'; +Kind.script = 'script'; +Kind.type = 'type'; +Kind.variable = 'var'; +Kind.warning = 'warning'; +Kind.string = 'string'; +Kind.parameter = 'parameter'; +Kind.typeParameter = 'type parameter'; +class DiagnosticCategory { +} +protocol_const.DiagnosticCategory = DiagnosticCategory; +DiagnosticCategory.error = 'error'; +DiagnosticCategory.warning = 'warning'; +DiagnosticCategory.suggestion = 'suggestion'; +class KindModifiers { +} +protocol_const.KindModifiers = KindModifiers; +KindModifiers.optional = 'optional'; +KindModifiers.deprecated = 'deprecated'; +KindModifiers.color = 'color'; +KindModifiers.dtsFile = '.d.ts'; +KindModifiers.tsFile = '.ts'; +KindModifiers.tsxFile = '.tsx'; +KindModifiers.jsFile = '.js'; +KindModifiers.jsxFile = '.jsx'; +KindModifiers.jsonFile = '.json'; +KindModifiers.fileExtensionKindModifiers = [ + KindModifiers.dtsFile, + KindModifiers.tsFile, + KindModifiers.tsxFile, + KindModifiers.jsFile, + KindModifiers.jsxFile, + KindModifiers.jsonFile, +]; +class DisplayPartKind { +} +protocol_const.DisplayPartKind = DisplayPartKind; +DisplayPartKind.functionName = 'functionName'; +DisplayPartKind.methodName = 'methodName'; +DisplayPartKind.parameterName = 'parameterName'; +DisplayPartKind.propertyName = 'propertyName'; +DisplayPartKind.punctuation = 'punctuation'; +DisplayPartKind.text = 'text'; +var EventName; +(function (EventName) { + EventName["syntaxDiag"] = "syntaxDiag"; + EventName["semanticDiag"] = "semanticDiag"; + EventName["suggestionDiag"] = "suggestionDiag"; + EventName["configFileDiag"] = "configFileDiag"; + EventName["telemetry"] = "telemetry"; + EventName["projectLanguageServiceState"] = "projectLanguageServiceState"; + EventName["projectsUpdatedInBackground"] = "projectsUpdatedInBackground"; + EventName["beginInstallTypes"] = "beginInstallTypes"; + EventName["endInstallTypes"] = "endInstallTypes"; + EventName["typesInstallerInitializationFailed"] = "typesInstallerInitializationFailed"; + EventName["surveyReady"] = "surveyReady"; + EventName["projectLoadingStart"] = "projectLoadingStart"; + EventName["projectLoadingFinish"] = "projectLoadingFinish"; +})(EventName || (protocol_const.EventName = EventName = {})); + +var modifiers = {}; + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +Object.defineProperty(modifiers, "__esModule", { value: true }); +modifiers.parseKindModifier = void 0; +function parseKindModifier(kindModifiers) { + return new Set(kindModifiers.split(/,|\s+/g)); +} +modifiers.parseKindModifier = parseKindModifier; + +var typeConverters$1 = {}; + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +Object.defineProperty(typeConverters$1, "__esModule", { value: true }); +typeConverters$1.SymbolKind = void 0; +const PConst$5 = protocol_const; +var SymbolKind; +(function (SymbolKind) { + function fromProtocolScriptElementKind(kind) { + switch (kind) { + case PConst$5.Kind.module: return 2; + case PConst$5.Kind.class: return 5; + case PConst$5.Kind.enum: return 10; + case PConst$5.Kind.enumMember: return 22; + case PConst$5.Kind.interface: return 11; + case PConst$5.Kind.indexSignature: return 6; + case PConst$5.Kind.callSignature: return 6; + case PConst$5.Kind.method: return 6; + case PConst$5.Kind.memberVariable: return 7; + case PConst$5.Kind.memberGetAccessor: return 7; + case PConst$5.Kind.memberSetAccessor: return 7; + case PConst$5.Kind.variable: return 13; + case PConst$5.Kind.let: return 13; + case PConst$5.Kind.const: return 13; + case PConst$5.Kind.localVariable: return 13; + case PConst$5.Kind.alias: return 13; + case PConst$5.Kind.function: return 12; + case PConst$5.Kind.localFunction: return 12; + case PConst$5.Kind.constructSignature: return 9; + case PConst$5.Kind.constructorImplementation: return 9; + case PConst$5.Kind.typeParameter: return 26; + case PConst$5.Kind.string: return 15; + default: return 13; + } + } + SymbolKind.fromProtocolScriptElementKind = fromProtocolScriptElementKind; +})(SymbolKind || (typeConverters$1.SymbolKind = SymbolKind = {})); + +Object.defineProperty(callHierarchy, "__esModule", { value: true }); +callHierarchy.register = void 0; +const PConst$4 = protocol_const; +const modifiers_1$3 = modifiers; +const typeConverters = typeConverters$1; +const path$5 = pathBrowserify; +const shared_1$q = shared; +function register$o(ctx) { + function doPrepare(uri, position) { + const document = ctx.getTextDocument(uri); + if (!document) + return []; + const fileName = ctx.env.uriToFileName(document.uri); + const offset = document.offsetAt(position); + const calls = (0, shared_1$q.safeCall)(() => ctx.typescript.languageService.prepareCallHierarchy(fileName, offset)); + if (!calls) + return []; + const items = Array.isArray(calls) ? calls : [calls]; + return items.map(item => fromProtocolCallHierarchyItem(item)); + } + function getIncomingCalls(item) { + const document = ctx.getTextDocument(item.uri); + if (!document) + return []; + const fileName = ctx.env.uriToFileName(item.uri); + const offset = document.offsetAt(item.selectionRange.start); + const calls = (0, shared_1$q.safeCall)(() => ctx.typescript.languageService.provideCallHierarchyIncomingCalls(fileName, offset)); + if (!calls) + return []; + const items = Array.isArray(calls) ? calls : [calls]; + return items.map(item => fromProtocolCallHierarchyIncomingCall(item)); + } + function getOutgoingCalls(item) { + const document = ctx.getTextDocument(item.uri); + if (!document) + return []; + const fileName = ctx.env.uriToFileName(item.uri); + const offset = document.offsetAt(item.selectionRange.start); + const calls = (0, shared_1$q.safeCall)(() => ctx.typescript.languageService.provideCallHierarchyOutgoingCalls(fileName, offset)); + if (!calls) + return []; + const items = Array.isArray(calls) ? calls : [calls]; + return items.map(item => fromProtocolCallHierarchyOutgoingCall(item, document)); + } + return { + doPrepare, + getIncomingCalls, + getOutgoingCalls, + }; + function isSourceFileItem(item) { + return item.kind === PConst$4.Kind.script || item.kind === PConst$4.Kind.module && item.selectionSpan.start === 0; + } + function fromProtocolCallHierarchyItem(item) { + const rootPath = ctx.typescript.languageService.getProgram()?.getCompilerOptions().rootDir ?? ''; + const document = ctx.getTextDocument(ctx.env.fileNameToUri(item.file)); // TODO + const useFileName = isSourceFileItem(item); + const name = useFileName ? path$5.basename(item.file) : item.name; + const detail = useFileName ? path$5.relative(rootPath, path$5.dirname(item.file)) : item.containerName ?? ''; + const result = { + kind: typeConverters.SymbolKind.fromProtocolScriptElementKind(item.kind), + name, + detail, + uri: ctx.env.fileNameToUri(item.file), + range: { + start: document.positionAt(item.span.start), + end: document.positionAt(item.span.start + item.span.length), + }, + selectionRange: { + start: document.positionAt(item.selectionSpan.start), + end: document.positionAt(item.selectionSpan.start + item.selectionSpan.length), + }, + }; + const kindModifiers = item.kindModifiers ? (0, modifiers_1$3.parseKindModifier)(item.kindModifiers) : undefined; + if (kindModifiers?.has(PConst$4.KindModifiers.deprecated)) { + result.tags = [1]; + } + return result; + } + function fromProtocolCallHierarchyIncomingCall(item) { + const document = ctx.getTextDocument(ctx.env.fileNameToUri(item.from.file)); + return { + from: fromProtocolCallHierarchyItem(item.from), + fromRanges: item.fromSpans.map(fromSpan => ({ + start: document.positionAt(fromSpan.start), + end: document.positionAt(fromSpan.start + fromSpan.length), + })), + }; + } + function fromProtocolCallHierarchyOutgoingCall(item, document) { + return { + to: fromProtocolCallHierarchyItem(item.to), + fromRanges: item.fromSpans.map(fromSpan => ({ + start: document.positionAt(fromSpan.start), + end: document.positionAt(fromSpan.start + fromSpan.length), + })), + }; + } +} +callHierarchy.register = register$o; + +var codeAction = {}; + +var rename = {}; + +var prepareRename = {}; + +(function (exports) { + Object.defineProperty(exports, "__esModule", { value: true }); + exports.register = exports.renameInfoOptions = void 0; + const shared_1 = shared; + /* typescript-language-features is hardcode true */ + exports.renameInfoOptions = { allowRenameOfImportPath: true }; + function register(ctx) { + return (uri, position) => { + const document = ctx.getTextDocument(uri); + if (!document) + return; + const fileName = ctx.env.uriToFileName(document.uri); + const offset = document.offsetAt(position); + const renameInfo = (0, shared_1.safeCall)(() => ctx.typescript.languageService.getRenameInfo(fileName, offset, exports.renameInfoOptions)); + if (!renameInfo) + return; + if (!renameInfo.canRename) { + return { message: renameInfo.localizedErrorMessage }; + } + return { + start: document.positionAt(renameInfo.triggerSpan.start), + end: document.positionAt(renameInfo.triggerSpan.start + renameInfo.triggerSpan.length), + }; + }; + } + exports.register = register; + +} (prepareRename)); + +var getFormatCodeSettings$1 = {}; + +Object.defineProperty(getFormatCodeSettings$1, "__esModule", { value: true }); +getFormatCodeSettings$1.getFormatCodeSettings = void 0; +const shared_1$p = shared; +async function getFormatCodeSettings(ctx, document, options) { + let config = await ctx.env.getConfiguration?.((0, shared_1$p.getConfigTitle)(document) + '.format'); + config = config ?? {}; + return { + convertTabsToSpaces: options?.insertSpaces, + tabSize: options?.tabSize, + indentSize: options?.tabSize, + indentStyle: 2 /** ts.IndentStyle.Smart */, + newLineCharacter: '\n', + insertSpaceAfterCommaDelimiter: config.insertSpaceAfterCommaDelimiter ?? true, + insertSpaceAfterConstructor: config.insertSpaceAfterConstructor ?? false, + insertSpaceAfterSemicolonInForStatements: config.insertSpaceAfterSemicolonInForStatements ?? true, + insertSpaceBeforeAndAfterBinaryOperators: config.insertSpaceBeforeAndAfterBinaryOperators ?? true, + insertSpaceAfterKeywordsInControlFlowStatements: config.insertSpaceAfterKeywordsInControlFlowStatements ?? true, + insertSpaceAfterFunctionKeywordForAnonymousFunctions: config.insertSpaceAfterFunctionKeywordForAnonymousFunctions ?? true, + insertSpaceBeforeFunctionParenthesis: config.insertSpaceBeforeFunctionParenthesis ?? false, + insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis: config.insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis ?? false, + insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets: config.insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets ?? false, + insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces: config.insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces ?? true, + insertSpaceAfterOpeningAndBeforeClosingEmptyBraces: config.insertSpaceAfterOpeningAndBeforeClosingEmptyBraces ?? true, + insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces: config.insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces ?? false, + insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces: config.insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces ?? false, + insertSpaceAfterTypeAssertion: config.insertSpaceAfterTypeAssertion ?? false, + placeOpenBraceOnNewLineForFunctions: config.placeOpenBraceOnNewLineForFunctions ?? false, + placeOpenBraceOnNewLineForControlBlocks: config.placeOpenBraceOnNewLineForControlBlocks ?? false, + semicolons: config.semicolons ?? 'ignore', + }; +} +getFormatCodeSettings$1.getFormatCodeSettings = getFormatCodeSettings; + +var getUserPreferences$1 = {}; + +Object.defineProperty(getUserPreferences$1, "__esModule", { value: true }); +getUserPreferences$1.getUserPreferences = void 0; +const shared_1$o = shared; +const path$4 = pathBrowserify; +const vscode_uri_1$1 = umdExports; +async function getUserPreferences(ctx, document) { + const config = await ctx.env.getConfiguration?.((0, shared_1$o.getConfigTitle)(document)) ?? {}; + const preferencesConfig = config?.preferences ?? {}; + const preferences = { + ...config.unstable ?? {}, + quotePreference: getQuoteStylePreference(preferencesConfig), + importModuleSpecifierPreference: getImportModuleSpecifierPreference(preferencesConfig), + importModuleSpecifierEnding: getImportModuleSpecifierEndingPreference(preferencesConfig), + jsxAttributeCompletionStyle: getJsxAttributeCompletionStyle(preferencesConfig), + allowTextChangesInNewFiles: document.uri.startsWith('file://'), + providePrefixAndSuffixTextForRename: (preferencesConfig.renameShorthandProperties ?? true) === false ? false : (preferencesConfig.useAliasesForRenames ?? true), + allowRenameOfImportPath: true, + includeAutomaticOptionalChainCompletions: config.suggest?.includeAutomaticOptionalChainCompletions ?? true, + provideRefactorNotApplicableReason: true, + generateReturnInDocTemplate: config.suggest?.jsdoc?.generateReturns ?? true, + includeCompletionsForImportStatements: config.suggest?.includeCompletionsForImportStatements ?? true, + includeCompletionsWithSnippetText: config.suggest?.includeCompletionsWithSnippetText ?? true, + includeCompletionsWithClassMemberSnippets: config.suggest?.classMemberSnippets?.enabled ?? true, + includeCompletionsWithObjectLiteralMethodSnippets: config.suggest?.objectLiteralMethodSnippets?.enabled ?? true, + autoImportFileExcludePatterns: getAutoImportFileExcludePatternsPreference(preferencesConfig, ctx.env.rootUri), + useLabelDetailsInCompletionEntries: true, + allowIncompleteCompletions: true, + displayPartsForJSDoc: true, + // inlay hints + includeInlayParameterNameHints: getInlayParameterNameHintsPreference(config), + includeInlayParameterNameHintsWhenArgumentMatchesName: !(config.inlayHints?.parameterNames?.suppressWhenArgumentMatchesName ?? true), + includeInlayFunctionParameterTypeHints: config.inlayHints?.parameterTypes?.enabled ?? false, + includeInlayVariableTypeHints: config.inlayHints?.variableTypes?.enabled ?? false, + includeInlayVariableTypeHintsWhenTypeMatchesName: !(config.inlayHints?.variableTypes?.suppressWhenTypeMatchesName ?? true), + includeInlayPropertyDeclarationTypeHints: config.inlayHints?.propertyDeclarationTypes?.enabled ?? false, + includeInlayFunctionLikeReturnTypeHints: config.inlayHints?.functionLikeReturnTypes?.enabled ?? false, + includeInlayEnumMemberValueHints: config.inlayHints?.enumMemberValues?.enabled ?? false, + // https://github.com/microsoft/vscode/blob/main/extensions/typescript-language-features/src/languageFeatures/completions.ts#L728-L730 + includeCompletionsForModuleExports: config.suggest?.autoImports ?? true, + includeCompletionsWithInsertText: true, + includePackageJsonAutoImports: preferencesConfig.includePackageJsonAutoImports ?? 'auto', + }; + return preferences; +} +getUserPreferences$1.getUserPreferences = getUserPreferences; +function getQuoteStylePreference(config) { + switch (config.quoteStyle) { + case 'single': return 'single'; + case 'double': return 'double'; + default: return 'auto'; + } +} +function getAutoImportFileExcludePatternsPreference(config, workspaceFolder) { + return workspaceFolder && config.autoImportFileExcludePatterns?.map(p => { + // Normalization rules: https://github.com/microsoft/TypeScript/pull/49578 + const slashNormalized = p.replace(/\\/g, '/'); + const isRelative = /^\.\.?($|\/)/.test(slashNormalized); + return path$4.isAbsolute(p) ? p : + p.startsWith('*') ? '/' + slashNormalized : + isRelative ? vscode_uri_1$1.URI.parse(path$4.join(workspaceFolder.toString(), p)).fsPath : + '/**/' + slashNormalized; + }); +} +function getImportModuleSpecifierPreference(config) { + switch (config.importModuleSpecifier) { + case 'project-relative': return 'project-relative'; + case 'relative': return 'relative'; + case 'non-relative': return 'non-relative'; + default: return undefined; + } +} +function getImportModuleSpecifierEndingPreference(config) { + switch (config.importModuleSpecifierEnding) { + case 'minimal': return 'minimal'; + case 'index': return 'index'; + case 'js': return 'js'; + default: return 'minimal'; // fix https://github.com/johnsoncodehk/volar/issues/1667 + // default: return 'auto'; + } +} +function getJsxAttributeCompletionStyle(config) { + switch (config.jsxAttributeCompletionStyle) { + case 'braces': return 'braces'; + case 'none': return 'none'; + default: return 'auto'; + } +} +function getInlayParameterNameHintsPreference(config) { + switch (config.inlayHints?.parameterNames?.enabled) { + case 'none': return 'none'; + case 'literals': return 'literals'; + case 'all': return 'all'; + default: return undefined; + } +} + +Object.defineProperty(rename, "__esModule", { value: true }); +rename.fileTextChangesToWorkspaceEdit = rename.register = void 0; +const path$3 = pathBrowserify; +const prepareRename_1 = prepareRename; +const getFormatCodeSettings_1$5 = getFormatCodeSettings$1; +const getUserPreferences_1$6 = getUserPreferences$1; +const shared_1$n = shared; +function register$n(ctx) { + return async (uri, position, newName) => { + const document = ctx.getTextDocument(uri); + if (!document) + return; + const fileName = ctx.env.uriToFileName(document.uri); + const offset = document.offsetAt(position); + const renameInfo = (0, shared_1$n.safeCall)(() => ctx.typescript.languageService.getRenameInfo(fileName, offset, prepareRename_1.renameInfoOptions)); + if (!renameInfo?.canRename) + return; + if (renameInfo.fileToRename) { + const [formatOptions, preferences] = await Promise.all([ + (0, getFormatCodeSettings_1$5.getFormatCodeSettings)(ctx, document), + (0, getUserPreferences_1$6.getUserPreferences)(ctx, document), + ]); + return renameFile(renameInfo.fileToRename, newName, formatOptions, preferences); + } + const { providePrefixAndSuffixTextForRename } = await (0, getUserPreferences_1$6.getUserPreferences)(ctx, document); + const entries = ctx.typescript.languageService.findRenameLocations(fileName, offset, false, false, providePrefixAndSuffixTextForRename); + if (!entries) + return; + const locations = locationsToWorkspaceEdit(newName, entries, ctx); + return locations; + }; + function renameFile(fileToRename, newName, formatOptions, preferences) { + // Make sure we preserve file extension if none provided + if (!path$3.extname(newName)) { + newName += path$3.extname(fileToRename); + } + const dirname = path$3.dirname(fileToRename); + const newFilePath = path$3.join(dirname, newName); + const response = ctx.typescript.languageService.getEditsForFileRename(fileToRename, newFilePath, formatOptions, preferences); + const edits = fileTextChangesToWorkspaceEdit(response, ctx); + if (!edits.documentChanges) { + edits.documentChanges = []; + } + edits.documentChanges.push({ + kind: 'rename', + oldUri: ctx.env.fileNameToUri(fileToRename), + newUri: ctx.env.fileNameToUri(newFilePath), + }); + return edits; + } +} +rename.register = register$n; +function fileTextChangesToWorkspaceEdit(changes, ctx) { + const workspaceEdit = {}; + for (const change of changes) { + if (!workspaceEdit.documentChanges) { + workspaceEdit.documentChanges = []; + } + const uri = ctx.env.fileNameToUri(change.fileName); + let doc = ctx.getTextDocument(uri); + if (change.isNewFile) { + workspaceEdit.documentChanges.push({ kind: 'create', uri }); + } + if (!doc && !change.isNewFile) + continue; + const docEdit = { + textDocument: { + uri, + version: null, // fix https://github.com/johnsoncodehk/volar/issues/2025 + }, + edits: [], + }; + for (const textChange of change.textChanges) { + docEdit.edits.push({ + newText: textChange.newText, + range: { + start: doc?.positionAt(textChange.span.start) ?? { line: 0, character: 0 }, + end: doc?.positionAt(textChange.span.start + textChange.span.length) ?? { line: 0, character: 0 }, + }, + }); + } + workspaceEdit.documentChanges.push(docEdit); + } + return workspaceEdit; +} +rename.fileTextChangesToWorkspaceEdit = fileTextChangesToWorkspaceEdit; +function locationsToWorkspaceEdit(newText, locations, ctx) { + const workspaceEdit = {}; + for (const location of locations) { + if (!workspaceEdit.changes) { + workspaceEdit.changes = {}; + } + const uri = ctx.env.fileNameToUri(location.fileName); + const doc = ctx.getTextDocument(uri); + if (!doc) + continue; + if (!workspaceEdit.changes[uri]) { + workspaceEdit.changes[uri] = []; + } + let _newText = newText; + if (location.prefixText) + _newText = location.prefixText + _newText; + if (location.suffixText) + _newText = _newText + location.suffixText; + workspaceEdit.changes[uri].push({ + newText: _newText, + range: { + start: doc.positionAt(location.textSpan.start), + end: doc.positionAt(location.textSpan.start + location.textSpan.length), + }, + }); + } + return workspaceEdit; +} + +var fixNames$1 = {}; + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +Object.defineProperty(fixNames$1, "__esModule", { value: true }); +fixNames$1.addMissingOverride = fixNames$1.addMissingAwait = fixNames$1.fixImport = fixNames$1.spelling = fixNames$1.forgottenThisPropertyAccess = fixNames$1.unusedIdentifier = fixNames$1.unreachableCode = fixNames$1.classDoesntImplementInheritedAbstractMember = fixNames$1.classIncorrectlyImplementsInterface = fixNames$1.awaitInSyncFunction = fixNames$1.extendsInterfaceBecomesImplements = fixNames$1.constructorForDerivedNeedSuperCall = fixNames$1.annotateWithTypeFromJSDoc = void 0; +fixNames$1.annotateWithTypeFromJSDoc = 'annotateWithTypeFromJSDoc'; +fixNames$1.constructorForDerivedNeedSuperCall = 'constructorForDerivedNeedSuperCall'; +fixNames$1.extendsInterfaceBecomesImplements = 'extendsInterfaceBecomesImplements'; +fixNames$1.awaitInSyncFunction = 'fixAwaitInSyncFunction'; +fixNames$1.classIncorrectlyImplementsInterface = 'fixClassIncorrectlyImplementsInterface'; +fixNames$1.classDoesntImplementInheritedAbstractMember = 'fixClassDoesntImplementInheritedAbstractMember'; +fixNames$1.unreachableCode = 'fixUnreachableCode'; +fixNames$1.unusedIdentifier = 'unusedIdentifier'; +fixNames$1.forgottenThisPropertyAccess = 'forgottenThisPropertyAccess'; +fixNames$1.spelling = 'spelling'; +fixNames$1.fixImport = 'import'; +fixNames$1.addMissingAwait = 'addMissingAwait'; +fixNames$1.addMissingOverride = 'fixOverrideModifier'; + +var codeActionResolve = {}; + +Object.defineProperty(codeActionResolve, "__esModule", { value: true }); +codeActionResolve.resolveOrganizeImportsCodeAction = codeActionResolve.resolveRefactorCodeAction = codeActionResolve.resolveFixAllCodeAction = codeActionResolve.register = void 0; +const getFormatCodeSettings_1$4 = getFormatCodeSettings$1; +const getUserPreferences_1$5 = getUserPreferences$1; +const shared_1$m = shared; +const rename_1$2 = rename; +function register$m(ctx) { + return async (codeAction) => { + const data = codeAction.data; + const document = ctx.getTextDocument(data.uri); + const [formatOptions, preferences] = document ? await Promise.all([ + (0, getFormatCodeSettings_1$4.getFormatCodeSettings)(ctx, document), + (0, getUserPreferences_1$5.getUserPreferences)(ctx, document), + ]) : [{}, {}]; + if (data?.type === 'fixAll') { + resolveFixAllCodeAction(ctx, codeAction, data, formatOptions, preferences); + } + else if (data?.type === 'refactor' && document) { + resolveRefactorCodeAction(ctx, codeAction, data, document, formatOptions, preferences); + } + else if (data?.type === 'organizeImports') { + resolveOrganizeImportsCodeAction(ctx, codeAction, data, formatOptions, preferences); + } + return codeAction; + }; +} +codeActionResolve.register = register$m; +function resolveFixAllCodeAction(ctx, codeAction, data, formatOptions, preferences) { + const fixes = data.fixIds.map(fixId => (0, shared_1$m.safeCall)(() => ctx.typescript.languageService.getCombinedCodeFix({ type: 'file', fileName: data.fileName }, fixId, formatOptions, preferences))); + const changes = fixes.map(fix => fix?.changes ?? []).flat(); + codeAction.edit = (0, rename_1$2.fileTextChangesToWorkspaceEdit)(changes, ctx); +} +codeActionResolve.resolveFixAllCodeAction = resolveFixAllCodeAction; +function resolveRefactorCodeAction(ctx, codeAction, data, document, formatOptions, preferences) { + const editInfo = (0, shared_1$m.safeCall)(() => ctx.typescript.languageService.getEditsForRefactor(data.fileName, formatOptions, data.range, data.refactorName, data.actionName, preferences)); + if (!editInfo) { + return; + } + codeAction.edit = (0, rename_1$2.fileTextChangesToWorkspaceEdit)(editInfo.edits, ctx); + if (editInfo.renameLocation !== undefined && editInfo.renameFilename !== undefined) { + codeAction.command = ctx.commands.rename.create(document.uri, document.positionAt(editInfo.renameLocation)); + } +} +codeActionResolve.resolveRefactorCodeAction = resolveRefactorCodeAction; +function resolveOrganizeImportsCodeAction(ctx, codeAction, data, formatOptions, preferences) { + const changes = (0, shared_1$m.safeCall)(() => ctx.typescript.languageService.organizeImports({ type: 'file', fileName: data.fileName }, formatOptions, preferences)); + codeAction.edit = (0, rename_1$2.fileTextChangesToWorkspaceEdit)(changes ?? [], ctx); +} +codeActionResolve.resolveOrganizeImportsCodeAction = resolveOrganizeImportsCodeAction; + +Object.defineProperty(codeAction, "__esModule", { value: true }); +codeAction.register = void 0; +const rename_1$1 = rename; +const fixNames = fixNames$1; +const getFormatCodeSettings_1$3 = getFormatCodeSettings$1; +const getUserPreferences_1$4 = getUserPreferences$1; +const shared_1$l = shared; +const codeActionResolve_1 = codeActionResolve; +function register$l(ctx) { + let resolveCommandSupport = ctx.env.clientCapabilities?.textDocument?.codeAction?.resolveSupport?.properties?.includes('command'); + let resolveEditSupport = ctx.env.clientCapabilities?.textDocument?.codeAction?.resolveSupport?.properties?.includes('edit'); + if (!ctx.env.clientCapabilities) { + resolveCommandSupport = true; + resolveEditSupport = true; + } + return async (uri, range, context) => { + const document = ctx.getTextDocument(uri); + if (!document) + return; + const [formatOptions, preferences] = await Promise.all([ + (0, getFormatCodeSettings_1$3.getFormatCodeSettings)(ctx, document), + (0, getUserPreferences_1$4.getUserPreferences)(ctx, document), + ]); + const fileName = ctx.env.uriToFileName(document.uri); + const start = document.offsetAt(range.start); + const end = document.offsetAt(range.end); + let result = []; + const onlyQuickFix = matchOnlyKind(`${'quickfix'}.ts`); + if (!context.only || onlyQuickFix) { + for (const error of context.diagnostics) { + const codeFixes = (0, shared_1$l.safeCall)(() => ctx.typescript.languageService.getCodeFixesAtPosition(fileName, document.offsetAt(error.range.start), document.offsetAt(error.range.end), [Number(error.code)], formatOptions, preferences)) ?? []; + for (const codeFix of codeFixes) { + result = result.concat(transformCodeFix(codeFix, [error], onlyQuickFix ?? '')); + } + } + } + if (context.only) { + for (const only of context.only) { + if (only.split('.')[0] === 'refactor') { + const refactors = (0, shared_1$l.safeCall)(() => ctx.typescript.languageService.getApplicableRefactors(fileName, { pos: start, end: end }, preferences, undefined, only)) ?? []; + for (const refactor of refactors) { + result = result.concat(transformRefactor(refactor)); + } + } + } + } + else { + const refactors = (0, shared_1$l.safeCall)(() => ctx.typescript.languageService.getApplicableRefactors(fileName, { pos: start, end: end }, preferences, undefined, undefined)) ?? []; + for (const refactor of refactors) { + result = result.concat(transformRefactor(refactor)); + } + } + const onlySourceOrganizeImports = matchOnlyKind(`${'source.organizeImports'}.ts`); + if (onlySourceOrganizeImports) { + const action = { + title: 'Organize Imports', + kind: onlySourceOrganizeImports, + }; + const data = { + type: 'organizeImports', + uri, + fileName, + }; + if (resolveEditSupport) { + action.data = data; + } + else { + (0, codeActionResolve_1.resolveOrganizeImportsCodeAction)(ctx, action, data, formatOptions, preferences); + } + result.push(action); + } + const onlySourceFixAll = matchOnlyKind(`${'source.fixAll'}.ts`); + if (onlySourceFixAll) { + const action = { + title: 'Fix All', + kind: onlySourceFixAll, + }; + const data = { + uri, + type: 'fixAll', + fileName, + fixIds: [ + fixNames.classIncorrectlyImplementsInterface, + fixNames.awaitInSyncFunction, + fixNames.unreachableCode, + ], + }; + if (resolveEditSupport) { + action.data = data; + } + else { + (0, codeActionResolve_1.resolveFixAllCodeAction)(ctx, action, data, formatOptions, preferences); + } + result.push(action); + } + const onlyRemoveUnused = matchOnlyKind(`${'source'}.removeUnused.ts`); + if (onlyRemoveUnused) { + const action = { + title: 'Remove all unused code', + kind: onlyRemoveUnused, + }; + const data = { + uri, + type: 'fixAll', + fileName, + fixIds: [ + // not working and throw + fixNames.unusedIdentifier, + // TODO: remove patching + 'unusedIdentifier_prefix', + 'unusedIdentifier_deleteImports', + 'unusedIdentifier_delete', + 'unusedIdentifier_infer', + ], + }; + if (resolveEditSupport) { + action.data = data; + } + else { + (0, codeActionResolve_1.resolveFixAllCodeAction)(ctx, action, data, formatOptions, preferences); + } + result.push(action); + } + const onlyAddMissingImports = matchOnlyKind(`${'source'}.addMissingImports.ts`); + if (onlyAddMissingImports) { + const action = { + title: 'Add all missing imports', + kind: onlyAddMissingImports, + }; + const data = { + uri, + type: 'fixAll', + fileName, + fixIds: [ + // not working and throw + fixNames.fixImport, + // TODO: remove patching + 'fixMissingImport', + ], + }; + if (resolveEditSupport) { + action.data = data; + } + else { + (0, codeActionResolve_1.resolveFixAllCodeAction)(ctx, action, data, formatOptions, preferences); + } + result.push(action); + } + for (const codeAction of result) { + if (codeAction.diagnostics === undefined) { + codeAction.diagnostics = context.diagnostics; + } + } + return result; + function matchOnlyKind(kind) { + if (context.only) { + for (const only of context.only) { + const a = only.split('.'); + const b = kind.split('.'); + if (a.length <= b.length) { + let matchNums = 0; + for (let i = 0; i < a.length; i++) { + if (a[i] == b[i]) { + matchNums++; + } + } + if (matchNums === a.length) + return only; + } + } + } + } + function transformCodeFix(codeFix, diagnostics, kind) { + const edit = (0, rename_1$1.fileTextChangesToWorkspaceEdit)(codeFix.changes, ctx); + const codeActions = []; + const fix = { + title: codeFix.description, + kind, + edit, + }; + fix.diagnostics = diagnostics; + codeActions.push(fix); + if (codeFix.fixAllDescription && codeFix.fixId) { + const fixAll = { + title: codeFix.fixAllDescription, + kind, + }; + const data = { + uri, + type: 'fixAll', + fileName, + fixIds: [codeFix.fixId], + }; + if (resolveEditSupport) { + fixAll.data = data; + } + else { + (0, codeActionResolve_1.resolveFixAllCodeAction)(ctx, fixAll, data, formatOptions, preferences); + } + fixAll.diagnostics = diagnostics; + codeActions.push(fixAll); + } + return codeActions; + } + function transformRefactor(refactor) { + const codeActions = []; + for (const action of refactor.actions) { + const codeAction = { + title: action.description, + kind: action.kind, + }; + if (action.notApplicableReason) { + codeAction.disabled = { reason: action.notApplicableReason }; + } + if (refactor.inlineable) { + codeAction.isPreferred = true; + } + const data = { + uri, + type: 'refactor', + fileName, + range: { pos: start, end: end }, + refactorName: refactor.name, + actionName: action.name, + }; + if (resolveCommandSupport && resolveEditSupport) { + codeAction.data = data; + } + else if (!codeAction.disabled && document) { + (0, codeActionResolve_1.resolveRefactorCodeAction)(ctx, codeAction, data, document, formatOptions, preferences); + } + codeActions.push(codeAction); + } + return codeActions; + } + }; +} +codeAction.register = register$l; + +var basic = {}; + +Object.defineProperty(basic, "__esModule", { value: true }); +basic.handleKindModifiers = basic.register = void 0; +const semver$1 = semver$2; +const getUserPreferences_1$3 = getUserPreferences$1; +const PConst$3 = protocol_const; +const modifiers_1$2 = modifiers; +const shared_1$k = shared; +function register$k(ctx) { + const { ts } = ctx; + const lt_320 = semver$1.lt(ts.version, '3.2.0'); + const gte_300 = semver$1.gte(ts.version, '3.0.0'); + return async (uri, position, options) => { + const document = ctx.getTextDocument(uri); + if (!document) + return; + const preferences = await (0, getUserPreferences_1$3.getUserPreferences)(ctx, document); + const fileName = ctx.env.uriToFileName(document.uri); + const offset = document.offsetAt(position); + const completionContext = (0, shared_1$k.safeCall)(() => ctx.typescript.languageService.getCompletionsAtPosition(fileName, offset, { + ...preferences, + ...options, + })); + if (completionContext === undefined) + return; + const wordRange = completionContext.optionalReplacementSpan ? { + start: document.positionAt(completionContext.optionalReplacementSpan.start), + end: document.positionAt(completionContext.optionalReplacementSpan.start + completionContext.optionalReplacementSpan.length), + } : undefined; + let line = document.getText({ + start: { line: position.line, character: 0 }, + end: { line: position.line + 1, character: 0 }, + }); + if (line.endsWith('\n')) { + line = line.substring(0, line.length - 1); + } + const dotAccessorContext = getDotAccessorContext(document); + const entries = completionContext.entries + .map(tsEntry => toVScodeItem(tsEntry, document)); + return { + isIncomplete: !!completionContext.isIncomplete, + items: entries, + }; + function toVScodeItem(tsEntry, document) { + const item = { label: tsEntry.name }; + item.kind = convertKind(tsEntry.kind); + if (tsEntry.source && tsEntry.hasAction) { + // De-prioritize auto-imports + // https://github.com/microsoft/vscode/issues/40311 + item.sortText = '\uffff' + tsEntry.sortText; + } + else { + item.sortText = tsEntry.sortText; + } + const { sourceDisplay, isSnippet, labelDetails } = tsEntry; + if (sourceDisplay) { + item.labelDetails ??= {}; + item.labelDetails.description = ts.displayPartsToString(sourceDisplay); + } + if (labelDetails) { + item.labelDetails ??= {}; + Object.assign(item.labelDetails, labelDetails); + } + item.preselect = tsEntry.isRecommended; + let range = getRangeFromReplacementSpan(tsEntry, document); + item.commitCharacters = getCommitCharacters(tsEntry, { + isNewIdentifierLocation: completionContext.isNewIdentifierLocation, + isInValidCommitCharacterContext: isInValidCommitCharacterContext(document, position), + enableCallCompletions: true, // TODO: suggest.completeFunctionCalls + }); + item.insertText = tsEntry.insertText; + item.insertTextFormat = isSnippet ? 2 : 1; + item.filterText = getFilterText(tsEntry, wordRange, line, tsEntry.insertText); + if (completionContext?.isMemberCompletion && dotAccessorContext && !isSnippet) { + item.filterText = dotAccessorContext.text + (item.insertText || item.label); + if (!range) { + const replacementRange = wordRange; + if (replacementRange) { + range = { + inserting: dotAccessorContext.range, + replacing: rangeUnion(dotAccessorContext.range, replacementRange), + }; + } + else { + range = dotAccessorContext.range; + } + item.insertText = item.filterText; + } + } + handleKindModifiers(item, tsEntry); + if (!range && wordRange) { + range = { + inserting: { start: wordRange.start, end: position }, + replacing: wordRange, + }; + } + if (range) { + if ('start' in range) { + item.textEdit = { + range, + newText: item.insertText || item.label, + }; + } + else { + item.textEdit = { + insert: range.inserting, + replace: range.replacing, + newText: item.insertText || item.label, + }; + } + } + return { + ...item, + data: { + uri, + fileName, + offset, + originalItem: { + name: tsEntry.name, + source: tsEntry.source, + data: tsEntry.data, + labelDetails: tsEntry.labelDetails, + }, + }, + }; + } + function getDotAccessorContext(document) { + let dotAccessorContext; + if (gte_300) { + if (!completionContext) + return; + const isMemberCompletion = completionContext.isMemberCompletion; + if (isMemberCompletion) { + const dotMatch = line.slice(0, position.character).match(/\??\.\s*$/) || undefined; + if (dotMatch) { + const range = { + start: { line: position.line, character: position.character - dotMatch[0].length }, + end: position, + }; + const text = document.getText(range); + dotAccessorContext = { range, text }; + } + } + } + return dotAccessorContext; + } + // from vscode typescript + function getRangeFromReplacementSpan(tsEntry, document) { + if (!tsEntry.replacementSpan) { + return; + } + let replaceRange = { + start: document.positionAt(tsEntry.replacementSpan.start), + end: document.positionAt(tsEntry.replacementSpan.start + tsEntry.replacementSpan.length), + }; + // Make sure we only replace a single line at most + if (replaceRange.start.line !== replaceRange.end.line) { + replaceRange = { + start: { + line: replaceRange.start.line, + character: replaceRange.start.character, + }, + end: { + line: replaceRange.start.line, + character: document.positionAt(document.offsetAt({ line: replaceRange.start.line + 1, character: 0 }) - 1).character, + }, + }; + } + // If TS returns an explicit replacement range, we should use it for both types of completion + return { + inserting: replaceRange, + replacing: replaceRange, + }; + } + function getFilterText(tsEntry, wordRange, line, insertText) { + // Handle private field completions + if (tsEntry.name.startsWith('#')) { + const wordStart = wordRange ? line.charAt(wordRange.start.character) : undefined; + if (insertText) { + if (insertText.startsWith('this.#')) { + return wordStart === '#' ? insertText : insertText.replace(/^this\.#/, ''); + } + else { + return insertText; + } + } + else { + return wordStart === '#' ? undefined : tsEntry.name.replace(/^#/, ''); + } + } + // For `this.` completions, generally don't set the filter text since we don't want them to be overly prioritized. #74164 + if (insertText?.startsWith('this.')) { + return undefined; + } + // Handle the case: + // ``` + // const xyz = { 'ab c': 1 }; + // xyz.ab| + // ``` + // In which case we want to insert a bracket accessor but should use `.abc` as the filter text instead of + // the bracketed insert text. + else if (insertText?.startsWith('[')) { + return insertText.replace(/^\[['"](.+)[['"]\]$/, '.$1'); + } + // In all other cases, fallback to using the insertText + return insertText; + } + function convertKind(kind) { + switch (kind) { + case PConst$3.Kind.primitiveType: + case PConst$3.Kind.keyword: + return 14; + case PConst$3.Kind.const: + case PConst$3.Kind.let: + case PConst$3.Kind.variable: + case PConst$3.Kind.localVariable: + case PConst$3.Kind.alias: + case PConst$3.Kind.parameter: + return 6; + case PConst$3.Kind.memberVariable: + case PConst$3.Kind.memberGetAccessor: + case PConst$3.Kind.memberSetAccessor: + return 5; + case PConst$3.Kind.function: + case PConst$3.Kind.localFunction: + return 3; + case PConst$3.Kind.method: + case PConst$3.Kind.constructSignature: + case PConst$3.Kind.callSignature: + case PConst$3.Kind.indexSignature: + return 2; + case PConst$3.Kind.enum: + return 13; + case PConst$3.Kind.enumMember: + return 20; + case PConst$3.Kind.module: + case PConst$3.Kind.externalModuleName: + return 9; + case PConst$3.Kind.class: + case PConst$3.Kind.type: + return 7; + case PConst$3.Kind.interface: + return 8; + case PConst$3.Kind.warning: + return 1; + case PConst$3.Kind.script: + return 17; + case PConst$3.Kind.directory: + return 19; + case PConst$3.Kind.string: + return 21; + default: + return 10; + } + } + function getCommitCharacters(entry, context) { + if (entry.kind === PConst$3.Kind.warning) { // Ambient JS word based suggestion + return undefined; + } + if (context.isNewIdentifierLocation || !context.isInValidCommitCharacterContext) { + return undefined; + } + const commitCharacters = ['.', ',', ';']; + if (context.enableCallCompletions) { + commitCharacters.push('('); + } + return commitCharacters; + } + function isInValidCommitCharacterContext(document, position) { + if (lt_320) { + // Workaround for https://github.com/microsoft/TypeScript/issues/27742 + // Only enable dot completions when the previous character is not a dot preceded by whitespace. + // Prevents incorrectly completing while typing spread operators. + if (position.character > 1) { + const preText = document.getText({ + start: { line: position.line, character: 0 }, + end: position, + }); + return preText.match(/(\s|^)\.$/ig) === null; + } + } + return true; + } + }; +} +basic.register = register$k; +function handleKindModifiers(item, tsEntry) { + if (tsEntry.kindModifiers) { + const kindModifiers = (0, modifiers_1$2.parseKindModifier)(tsEntry.kindModifiers); + if (kindModifiers.has(PConst$3.KindModifiers.optional)) { + if (!item.insertText) { + item.insertText = item.label; + } + if (!item.filterText) { + item.filterText = item.label; + } + item.label += '?'; + } + if (kindModifiers.has(PConst$3.KindModifiers.deprecated)) { + item.tags = [1]; + } + if (kindModifiers.has(PConst$3.KindModifiers.color)) { + item.kind = 16; + } + if (tsEntry.kind === PConst$3.Kind.script) { + for (const extModifier of PConst$3.KindModifiers.fileExtensionKindModifiers) { + if (kindModifiers.has(extModifier)) { + if (tsEntry.name.toLowerCase().endsWith(extModifier)) { + item.detail = tsEntry.name; + } + else { + item.detail = tsEntry.name + extModifier; + } + break; + } + } + } + } +} +basic.handleKindModifiers = handleKindModifiers; +function rangeUnion(a, b) { + const start = (a.start.line < b.start.line || (a.start.line === b.start.line && a.start.character < b.start.character)) ? a.start : b.start; + const end = (a.end.line > b.end.line || (a.end.line === b.end.line && a.end.character > b.end.character)) ? a.end : b.end; + return { start, end }; +} + +var directiveComment = {}; + +var main = {}; + +var ral = {}; + +Object.defineProperty(ral, "__esModule", { value: true }); +var _ral; +function RAL() { + if (_ral === undefined) { + throw new Error("No runtime abstraction layer installed"); + } + return _ral; +} +(function (RAL) { + function install(ral) { + if (ral === undefined) { + throw new Error("No runtime abstraction layer provided"); + } + _ral = ral; + } + RAL.install = install; +})(RAL || (RAL = {})); +ral.default = RAL; + +var common = {}; + +(function (exports) { + /* -------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ + Object.defineProperty(exports, "__esModule", { value: true }); + exports.config = exports.loadMessageBundle = exports.localize = exports.format = exports.setPseudo = exports.isPseudo = exports.isDefined = exports.BundleFormat = exports.MessageFormat = void 0; + var ral_1 = ral; + (function (MessageFormat) { + MessageFormat["file"] = "file"; + MessageFormat["bundle"] = "bundle"; + MessageFormat["both"] = "both"; + })(exports.MessageFormat || (exports.MessageFormat = {})); + (function (BundleFormat) { + // the nls.bundle format + BundleFormat["standalone"] = "standalone"; + BundleFormat["languagePack"] = "languagePack"; + })(exports.BundleFormat || (exports.BundleFormat = {})); + var LocalizeInfo; + (function (LocalizeInfo) { + function is(value) { + var candidate = value; + return candidate && isDefined(candidate.key) && isDefined(candidate.comment); + } + LocalizeInfo.is = is; + })(LocalizeInfo || (LocalizeInfo = {})); + function isDefined(value) { + return typeof value !== 'undefined'; + } + exports.isDefined = isDefined; + exports.isPseudo = false; + function setPseudo(pseudo) { + exports.isPseudo = pseudo; + } + exports.setPseudo = setPseudo; + function format(message, args) { + var result; + if (exports.isPseudo) { + // FF3B and FF3D is the Unicode zenkaku representation for [ and ] + message = '\uFF3B' + message.replace(/[aouei]/g, '$&$&') + '\uFF3D'; + } + if (args.length === 0) { + result = message; + } + else { + result = message.replace(/\{(\d+)\}/g, function (match, rest) { + var index = rest[0]; + var arg = args[index]; + var replacement = match; + if (typeof arg === 'string') { + replacement = arg; + } + else if (typeof arg === 'number' || typeof arg === 'boolean' || arg === void 0 || arg === null) { + replacement = String(arg); + } + return replacement; + }); + } + return result; + } + exports.format = format; + function localize(_key, message) { + var args = []; + for (var _i = 2; _i < arguments.length; _i++) { + args[_i - 2] = arguments[_i]; + } + return format(message, args); + } + exports.localize = localize; + function loadMessageBundle(file) { + return (0, ral_1.default)().loadMessageBundle(file); + } + exports.loadMessageBundle = loadMessageBundle; + function config(opts) { + return (0, ral_1.default)().config(opts); + } + exports.config = config; + +} (common)); + +(function (exports) { + /* -------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ + var __spreadArray = (commonjsGlobal && commonjsGlobal.__spreadArray) || function (to, from, pack) { + if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { + if (ar || !(i in from)) { + if (!ar) ar = Array.prototype.slice.call(from, 0, i); + ar[i] = from[i]; + } + } + return to.concat(ar || Array.prototype.slice.call(from)); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.config = exports.loadMessageBundle = exports.BundleFormat = exports.MessageFormat = void 0; + var ral_1 = ral; + var common_1 = common; + var common_2 = common; + Object.defineProperty(exports, "MessageFormat", { enumerable: true, get: function () { return common_2.MessageFormat; } }); + Object.defineProperty(exports, "BundleFormat", { enumerable: true, get: function () { return common_2.BundleFormat; } }); + function loadMessageBundle(_file) { + return function (key, message) { + var args = []; + for (var _i = 2; _i < arguments.length; _i++) { + args[_i - 2] = arguments[_i]; + } + if (typeof key === 'number') { + throw new Error("Browser implementation does currently not support externalized strings."); + } + else { + return common_1.localize.apply(void 0, __spreadArray([key, message], args, false)); + } + }; + } + exports.loadMessageBundle = loadMessageBundle; + function config(options) { + var _a; + (0, common_1.setPseudo)(((_a = options === null || options === void 0 ? void 0 : options.locale) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === 'pseudo'); + return loadMessageBundle; + } + exports.config = config; + ral_1.default.install(Object.freeze({ + loadMessageBundle: loadMessageBundle, + config: config + })); + +} (main)); + +Object.defineProperty(directiveComment, "__esModule", { value: true }); +directiveComment.register = void 0; +const nls$1 = main; +const localize$1 = nls$1.loadMessageBundle(); // TODO: not working +const directives = [ + { + value: '@ts-check', + description: localize$1('ts-check', "Enables semantic checking in a JavaScript file. Must be at the top of a file.") + }, { + value: '@ts-nocheck', + description: localize$1('ts-nocheck', "Disables semantic checking in a JavaScript file. Must be at the top of a file.") + }, { + value: '@ts-ignore', + description: localize$1('ts-ignore', "Suppresses @ts-check errors on the next line of a file.") + }, { + value: '@ts-expect-error', + description: localize$1('ts-expect-error', "Suppresses @ts-check errors on the next line of a file, expecting at least one to exist.") + } +]; +function register$j(ctx) { + return (uri, position) => { + const document = ctx.getTextDocument(uri); + if (!document) + return; + const prefix = document.getText({ + start: { line: position.line, character: 0 }, + end: position, + }); + const match = prefix.match(/^\s*\/\/+\s?(@[a-zA-Z\-]*)?$/); + if (match) { + return directives.map(directive => { + const item = { label: directive.value }; + item.insertTextFormat = 2; + item.detail = directive.description; + const range = { + start: { + line: position.line, + character: Math.max(0, position.character - (match[1] ? match[1].length : 0)), + }, + end: position, + }; + item.textEdit = { + range, + newText: directive.value, + }; + return item; + }); + } + return []; + }; +} +directiveComment.register = register$j; + +var jsDoc = {}; + +var resolve = {}; + +var previewer$2 = {}; + +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +Object.defineProperty(previewer$2, "__esModule", { value: true }); +previewer$2.addMarkdownDocumentation = previewer$2.markdownDocumentation = previewer$2.tagsMarkdownPreview = previewer$2.plainWithLinks = void 0; +function replaceLinks(text) { + return text + // Http(s) links + .replace(/\{@(link|linkplain|linkcode) (https?:\/\/[^ |}]+?)(?:[| ]([^{}\n]+?))?\}/gi, (_, tag, link, text) => { + switch (tag) { + case 'linkcode': + return `[\`${text ? text.trim() : link}\`](${link})`; + default: + return `[${text ? text.trim() : link}](${link})`; + } + }); +} +function processInlineTags(text) { + return replaceLinks(text); +} +function getTagBodyText(tag, filePathConverter, ctx) { + if (!tag.text) { + return undefined; + } + // Convert to markdown code block if it is not already one + function makeCodeblock(text) { + if (text.match(/^\s*[~`]{3}/g)) { + return text; + } + return '```\n' + text + '\n```'; + } + const text = convertLinkTags(tag.text, filePathConverter, ctx); + switch (tag.name) { + case 'example': + // check for caption tags, fix for #79704 + const captionTagMatches = text.match(/<caption>(.*?)<\/caption>\s*(\r\n|\n)/); + if (captionTagMatches && captionTagMatches.index === 0) { + return captionTagMatches[1] + '\n\n' + makeCodeblock(text.slice(captionTagMatches[0].length)); + } + else { + return makeCodeblock(text); + } + case 'author': + // fix obfuscated email address, #80898 + const emailMatch = text.match(/(.+)\s<([-.\w]+@[-.\w]+)>/); + if (emailMatch === null) { + return text; + } + else { + return `${emailMatch[1]} ${emailMatch[2]}`; + } + case 'default': + return makeCodeblock(text); + } + return processInlineTags(text); +} +function getTagDocumentation(tag, filePathConverter, ctx) { + switch (tag.name) { + case 'augments': + case 'extends': + case 'param': + case 'template': + const body = (convertLinkTags(tag.text, filePathConverter, ctx)).split(/^(\S+)\s*-?\s*/); + if (body?.length === 3) { + const param = body[1]; + const doc = body[2]; + const label = `*@${tag.name}* \`${param}\``; + if (!doc) { + return label; + } + return label + (doc.match(/\r\n|\n/g) ? ' \n' + processInlineTags(doc) : ` — ${processInlineTags(doc)}`); + } + } + // Generic tag + const label = `*@${tag.name}*`; + const text = getTagBodyText(tag, filePathConverter, ctx); + if (!text) { + return label; + } + return label + (text.match(/\r\n|\n/g) ? ' \n' + text : ` — ${text}`); +} +function plainWithLinks(parts, filePathConverter, ctx) { + return processInlineTags(convertLinkTags(parts, filePathConverter, ctx)); +} +previewer$2.plainWithLinks = plainWithLinks; +/** + * Convert `@link` inline tags to markdown links + */ +function convertLinkTags(parts, filePathConverter, ctx) { + if (!parts) { + return ''; + } + if (typeof parts === 'string') { + return parts; + } + const out = []; + let currentLink; + for (const part of parts) { + switch (part.kind) { + case 'link': + if (currentLink) { + const text = currentLink.text ?? currentLink.name; + let target = currentLink.target; + if (typeof currentLink.target === 'object' && 'fileName' in currentLink.target) { + const _target = currentLink.target; + const fileDoc = ctx.getTextDocument(ctx.env.uriToFileName(_target.fileName)); + if (fileDoc) { + const start = fileDoc.positionAt(_target.textSpan.start); + const end = fileDoc.positionAt(_target.textSpan.start + _target.textSpan.length); + target = { + file: _target.fileName, + start: { + line: start.line + 1, + offset: start.character + 1, + }, + end: { + line: end.line + 1, + offset: end.character + 1, + }, + }; + } + else { + target = undefined; + } + } + if (target) { + const link = filePathConverter.toResource(target.file) + '#' + `L${target.start.line},${target.start.offset}`; + out.push(`[${text}](${link})`); + } + else { + if (text) { + out.push(text); + } + } + currentLink = undefined; + } + else { + currentLink = {}; + } + break; + case 'linkName': + if (currentLink) { + currentLink.name = part.text; + currentLink.target = part.target; + } + break; + case 'linkText': + if (currentLink) { + currentLink.text = part.text; + } + break; + default: + out.push(part.text); + break; + } + } + return processInlineTags(out.join('')); +} +function tagsMarkdownPreview(tags, filePathConverter, ctx) { + return tags.map(tag => getTagDocumentation(tag, filePathConverter, ctx)).join(' \n\n'); +} +previewer$2.tagsMarkdownPreview = tagsMarkdownPreview; +function markdownDocumentation(documentation, tags, filePathConverter, ctx) { + return addMarkdownDocumentation('', documentation, tags, filePathConverter, ctx); +} +previewer$2.markdownDocumentation = markdownDocumentation; +function addMarkdownDocumentation(out, documentation, tags, converter, ctx) { + if (documentation) { + out += plainWithLinks(documentation, converter, ctx); + } + if (tags) { + const tagsPreview = tagsMarkdownPreview(tags, converter, ctx); + if (tagsPreview) { + out += '\n\n' + tagsPreview; + } + } + return out; +} +previewer$2.addMarkdownDocumentation = addMarkdownDocumentation; + +var snippetForFunctionCall$1 = {}; + +Object.defineProperty(snippetForFunctionCall$1, "__esModule", { value: true }); +snippetForFunctionCall$1.snippetForFunctionCall = void 0; +const PConst$2 = protocol_const; +function snippetForFunctionCall(item, displayParts) { + if (item.insertText && typeof item.insertText !== 'string') { + return { snippet: item.insertText, parameterCount: 0 }; + } + let _tabstop = 1; + const parameterListParts = getParameterListParts(displayParts); + let snippet = ''; + snippet += `${item.insertText || item.label}(`; + snippet = appendJoinedPlaceholders(snippet, parameterListParts.parts, ', '); + if (parameterListParts.hasOptionalParameters) { + snippet += '$' + _tabstop++; + } + snippet += ')'; + snippet += '$' + _tabstop++; + return { snippet, parameterCount: parameterListParts.parts.length + (parameterListParts.hasOptionalParameters ? 1 : 0) }; + function appendJoinedPlaceholders(snippet, parts, joiner) { + for (let i = 0; i < parts.length; ++i) { + const paramterPart = parts[i]; + snippet += '${' + _tabstop++ + ':' + paramterPart.text + '}'; + if (i !== parts.length - 1) { + snippet += joiner; + } + } + return snippet; + } +} +snippetForFunctionCall$1.snippetForFunctionCall = snippetForFunctionCall; +function getParameterListParts(displayParts) { + const parts = []; + let isInMethod = false; + let hasOptionalParameters = false; + let parenCount = 0; + let braceCount = 0; + outer: for (let i = 0; i < displayParts.length; ++i) { + const part = displayParts[i]; + switch (part.kind) { + case PConst$2.DisplayPartKind.methodName: + case PConst$2.DisplayPartKind.functionName: + case PConst$2.DisplayPartKind.text: + case PConst$2.DisplayPartKind.propertyName: + if (parenCount === 0 && braceCount === 0) { + isInMethod = true; + } + break; + case PConst$2.DisplayPartKind.parameterName: + if (parenCount === 1 && braceCount === 0 && isInMethod) { + // Only take top level paren names + const next = displayParts[i + 1]; + // Skip optional parameters + const nameIsFollowedByOptionalIndicator = next && next.text === '?'; + // Skip this parameter + const nameIsThis = part.text === 'this'; + if (!nameIsFollowedByOptionalIndicator && !nameIsThis) { + parts.push(part); + } + hasOptionalParameters = hasOptionalParameters || nameIsFollowedByOptionalIndicator; + } + break; + case PConst$2.DisplayPartKind.punctuation: + if (part.text === '(') { + ++parenCount; + } + else if (part.text === ')') { + --parenCount; + if (parenCount <= 0 && isInMethod) { + break outer; + } + } + else if (part.text === '...' && parenCount === 1) { + // Found rest parmeter. Do not fill in any further arguments + hasOptionalParameters = true; + break outer; + } + else if (part.text === '{') { + ++braceCount; + } + else if (part.text === '}') { + --braceCount; + } + break; + } + } + return { hasOptionalParameters, parts }; +} + +var transforms = {}; + +Object.defineProperty(transforms, "__esModule", { value: true }); +transforms.boundSpanToLocationLinks = transforms.entriesToLocationLinks = transforms.entriesToLocations = void 0; +function entriesToLocations(entries, ctx) { + const locations = []; + for (const entry of entries) { + const entryUri = ctx.env.fileNameToUri(entry.fileName); + const doc = ctx.getTextDocument(entryUri); + if (!doc) + continue; + const range = { + start: doc.positionAt(entry.textSpan.start), + end: doc.positionAt(entry.textSpan.start + entry.textSpan.length), + }; + const location = { uri: entryUri, range }; + locations.push(location); + } + return locations; +} +transforms.entriesToLocations = entriesToLocations; +function entriesToLocationLinks(entries, ctx) { + const locations = []; + for (const entry of entries) { + const entryUri = ctx.env.fileNameToUri(entry.fileName); + const doc = ctx.getTextDocument(entryUri); + if (!doc) + continue; + const targetSelectionRange = { + start: doc.positionAt(entry.textSpan.start), + end: doc.positionAt(entry.textSpan.start + entry.textSpan.length), + }; + const targetRange = entry.contextSpan ? { + start: doc.positionAt(entry.contextSpan.start), + end: doc.positionAt(entry.contextSpan.start + entry.contextSpan.length), + } : targetSelectionRange; + const originSelectionRange = entry.originalTextSpan ? { + start: doc.positionAt(entry.originalTextSpan.start), + end: doc.positionAt(entry.originalTextSpan.start + entry.originalTextSpan.length), + } : undefined; + const location = { + targetUri: entryUri, + targetRange, + targetSelectionRange, + originSelectionRange, + }; + locations.push(location); + } + return locations; +} +transforms.entriesToLocationLinks = entriesToLocationLinks; +function boundSpanToLocationLinks(info, originalDoc, ctx) { + const locations = []; + if (!info.definitions) + return locations; + const originSelectionRange = { + start: originalDoc.positionAt(info.textSpan.start), + end: originalDoc.positionAt(info.textSpan.start + info.textSpan.length), + }; + for (const entry of info.definitions) { + const entryUri = ctx.env.fileNameToUri(entry.fileName); + const doc = ctx.getTextDocument(entryUri); + if (!doc) + continue; + const targetSelectionRange = { + start: doc.positionAt(entry.textSpan.start), + end: doc.positionAt(entry.textSpan.start + entry.textSpan.length), + }; + const targetRange = entry.contextSpan ? { + start: doc.positionAt(entry.contextSpan.start), + end: doc.positionAt(entry.contextSpan.start + entry.contextSpan.length), + } : targetSelectionRange; + const location = { + targetUri: entryUri, + targetRange, + targetSelectionRange, + originSelectionRange, + }; + locations.push(location); + } + return locations; +} +transforms.boundSpanToLocationLinks = boundSpanToLocationLinks; + +Object.defineProperty(resolve, "__esModule", { value: true }); +resolve.getLineText = resolve.register = void 0; +const getFormatCodeSettings_1$2 = getFormatCodeSettings$1; +const getUserPreferences_1$2 = getUserPreferences$1; +const shared_1$j = shared; +const previewer$1 = previewer$2; +const snippetForFunctionCall_1 = snippetForFunctionCall$1; +const transforms_1$5 = transforms; +const basic_1 = basic; +function register$i(ctx) { + const { ts } = ctx; + return async (item, newPosition) => { + const data = item.data; + if (!data) + return item; + const fileName = data.fileName; + let offset = data.offset; + const document = ctx.getTextDocument(data.uri); + if (newPosition && document) { + offset = document.offsetAt(newPosition); + } + const [formatOptions, preferences] = document ? await Promise.all([ + (0, getFormatCodeSettings_1$2.getFormatCodeSettings)(ctx, document), + (0, getUserPreferences_1$2.getUserPreferences)(ctx, document), + ]) : [{}, {}]; + let details; + try { + details = ctx.typescript.languageService.getCompletionEntryDetails(fileName, offset, data.originalItem.name, formatOptions, data.originalItem.source, preferences, data.originalItem.data); + } + catch (err) { + item.detail = `[TS Error]\n${err}\n${JSON.stringify(err, undefined, 2)}`; + } + if (!details) + return item; + if (data.originalItem.labelDetails) { + item.labelDetails ??= {}; + Object.assign(item.labelDetails, data.originalItem.labelDetails); + } + const { sourceDisplay } = details; + if (sourceDisplay) { + item.labelDetails ??= {}; + item.labelDetails.description = ts.displayPartsToString(sourceDisplay); + } + const detailTexts = []; + if (details.codeActions) { + if (!item.additionalTextEdits) + item.additionalTextEdits = []; + for (const action of details.codeActions) { + detailTexts.push(action.description); + for (const changes of action.changes) { + const entries = changes.textChanges.map(textChange => { + return { fileName, textSpan: textChange.span }; + }); + const locs = (0, transforms_1$5.entriesToLocations)(entries, ctx); + locs.forEach((loc, index) => { + item.additionalTextEdits?.push({ range: loc.range, newText: changes.textChanges[index].newText }); + }); + } + } + } + if (details.displayParts) { + detailTexts.push(previewer$1.plainWithLinks(details.displayParts, { toResource }, ctx)); + } + if (detailTexts.length) { + item.detail = detailTexts.join('\n'); + } + item.documentation = { + kind: 'markdown', + value: previewer$1.markdownDocumentation(details.documentation, details.tags, { toResource }, ctx), + }; + if (details) { + (0, basic_1.handleKindModifiers)(item, details); + } + if (document) { + const useCodeSnippetsOnMethodSuggest = await ctx.env.getConfiguration?.((0, shared_1$j.getConfigTitle)(document) + '.suggest.completeFunctionCalls') ?? false; + const useCodeSnippet = useCodeSnippetsOnMethodSuggest && (item.kind === 3 || item.kind === 2); + if (useCodeSnippet) { + const shouldCompleteFunction = isValidFunctionCompletionContext(ctx.typescript.languageService, fileName, offset, document); + if (shouldCompleteFunction) { + const { snippet, parameterCount } = (0, snippetForFunctionCall_1.snippetForFunctionCall)({ + insertText: item.insertText ?? item.textEdit?.newText, + label: item.label, + }, details.displayParts); + if (item.textEdit) { + item.textEdit.newText = snippet; + } + if (item.insertText) { + item.insertText = snippet; + } + item.insertTextFormat = 2; + } + } + } + return item; + function toResource(path) { + return ctx.env.fileNameToUri(path); + } + }; +} +resolve.register = register$i; +function isValidFunctionCompletionContext(client, filepath, offset, document) { + // Workaround for https://github.com/microsoft/TypeScript/issues/12677 + // Don't complete function calls inside of destructive assignments or imports + try { + const response = client.getQuickInfoAtPosition(filepath, offset); + if (response) { + switch (response.kind) { + case 'var': + case 'let': + case 'const': + case 'alias': + return false; + } + } + } + catch { + // Noop + } + // Don't complete function call if there is already something that looks like a function call + // https://github.com/microsoft/vscode/issues/18131 + const position = document.positionAt(offset); + const after = getLineText(document, position.line).slice(position.character); + return after.match(/^[a-z_$0-9]*\s*\(/gi) === null; +} +function getLineText(document, line) { + const endOffset = document.offsetAt({ line: line + 1, character: 0 }); + const end = document.positionAt(endOffset); + const text = document.getText({ + start: { line: line, character: 0 }, + end: end.line === line ? end : document.positionAt(endOffset - 1), + }); + return text; +} +resolve.getLineText = getLineText; + +Object.defineProperty(jsDoc, "__esModule", { value: true }); +jsDoc.register = void 0; +const nls = main; +const resolve_1 = resolve; +const localize = nls.loadMessageBundle(); // TODO: not working +const defaultJsDoc = `/**\n * $0\n */`; +function register$h(ctx) { + return (uri, position) => { + const document = ctx.getTextDocument(uri); + if (!document) + return; + if (!isPotentiallyValidDocCompletionPosition(document, position)) + return; + const fileName = ctx.env.uriToFileName(document.uri); + const offset = document.offsetAt(position); + const docCommentTemplate = ctx.typescript.languageService.getDocCommentTemplateAtPosition(fileName, offset); + if (!docCommentTemplate) + return; + let insertText; + // Workaround for #43619 + // docCommentTemplate previously returned undefined for empty jsdoc templates. + // TS 2.7 now returns a single line doc comment, which breaks indentation. + if (docCommentTemplate.newText === '/** */') { + insertText = defaultJsDoc; + } + else { + insertText = templateToSnippet(docCommentTemplate.newText); + } + const item = createCompletionItem(document, position, insertText); + return item; + }; +} +jsDoc.register = register$h; +function createCompletionItem(document, position, insertText) { + const item = { label: '/** */' }; + item.kind = 1; + item.detail = localize('typescript.jsDocCompletionItem.documentation', 'JSDoc comment'); + item.sortText = '\0'; + item.insertTextFormat = 2; + const line = (0, resolve_1.getLineText)(document, position.line); + const prefix = line.slice(0, position.character).match(/\/\**\s*$/); + const suffix = line.slice(position.character).match(/^\s*\**\//); + const start = { line: position.line, character: position.character + (prefix ? -prefix[0].length : 0) }; + const end = { line: position.line, character: position.character + (suffix ? suffix[0].length : 0) }; + const range = { start, end }; + item.textEdit = { range, newText: insertText }; + return item; +} +function isPotentiallyValidDocCompletionPosition(document, position) { + // Only show the JSdoc completion when the everything before the cursor is whitespace + // or could be the opening of a comment + const line = (0, resolve_1.getLineText)(document, position.line); + const prefix = line.slice(0, position.character); + if (!/^\s*$|\/\*\*\s*$|^\s*\/\*\*+\s*$/.test(prefix)) { + return false; + } + // And everything after is possibly a closing comment or more whitespace + const suffix = line.slice(position.character); + return /^\s*(\*+\/)?\s*$/.test(suffix); +} +function templateToSnippet(template) { + // TODO: use append placeholder + let snippetIndex = 1; + template = template.replace(/\$/g, '\\$'); + template = template.replace(/^[ \t]*(?=(\/|[ ]\*))/gm, ''); + template = template.replace(/^(\/\*\*\s*\*[ ]*)$/m, (x) => x + `\$0`); + template = template.replace(/\* @param([ ]\{\S+\})?\s+(\S+)[ \t]*$/gm, (_param, type, post) => { + let out = '* @param '; + if (type === ' {any}' || type === ' {*}') { + out += `{\$\{${snippetIndex++}:*\}} `; + } + else if (type) { + out += type + ' '; + } + out += post + ` \${${snippetIndex++}}`; + return out; + }); + template = template.replace(/\* @returns[ \t]*$/gm, `* @returns \${${snippetIndex++}}`); + return template; +} + +var definition = {}; + +Object.defineProperty(definition, "__esModule", { value: true }); +definition.register = void 0; +const transforms_1$4 = transforms; +const shared_1$i = shared; +function register$g(ctx) { + return (uri, position) => { + const document = ctx.getTextDocument(uri); + if (!document) + return []; + const fileName = ctx.env.uriToFileName(document.uri); + const offset = document.offsetAt(position); + const info = (0, shared_1$i.safeCall)(() => ctx.typescript.languageService.getDefinitionAndBoundSpan(fileName, offset)); + if (!info) + return []; + return (0, transforms_1$4.boundSpanToLocationLinks)(info, document, ctx); + }; +} +definition.register = register$g; + +var diagnostics = {}; + +Object.defineProperty(diagnostics, "__esModule", { value: true }); +diagnostics.getEmitDeclarations = diagnostics.register = void 0; +const shared_1$h = shared; +function register$f(ctx) { + const { ts } = ctx; + return (uri, options) => { + const document = ctx.getTextDocument(uri); + if (!document) + return []; + const fileName = ctx.env.uriToFileName(document.uri); + const program = ctx.typescript.languageService.getProgram(); + const sourceFile = program?.getSourceFile(fileName); + if (!program || !sourceFile) + return []; + const token = { + isCancellationRequested() { + return ctx.typescript?.languageServiceHost.getCancellationToken?.().isCancellationRequested() ?? false; + }, + throwIfCancellationRequested() { }, + }; + let errors = (0, shared_1$h.safeCall)(() => [ + ...options.semantic ? program.getSemanticDiagnostics(sourceFile, token) : [], + ...options.syntactic ? program.getSyntacticDiagnostics(sourceFile, token) : [], + ...options.suggestion ? ctx.typescript.languageService.getSuggestionDiagnostics(fileName) : [], + ]) ?? []; + if (options.declaration && getEmitDeclarations(program.getCompilerOptions())) { + errors = errors.concat(program.getDeclarationDiagnostics(sourceFile, token)); + } + return translateDiagnostics(document, errors); + function translateDiagnostics(document, input) { + return input.map(diag => translateDiagnostic(diag, document)).filter((v) => !!v); + } + function translateDiagnostic(diag, document) { + if (diag.start === undefined) + return; + if (diag.length === undefined) + return; + const diagnostic = { + range: { + start: document.positionAt(diag.start), + end: document.positionAt(diag.start + diag.length), + }, + severity: translateErrorType(diag.category), + source: 'ts', + code: diag.code, + message: getMessageText(diag), + }; + if (diag.relatedInformation) { + diagnostic.relatedInformation = diag.relatedInformation + .map(rErr => translateDiagnosticRelated(rErr)) + .filter((v) => !!v); + } + if (diag.reportsUnnecessary) { + if (diagnostic.tags === undefined) + diagnostic.tags = []; + diagnostic.tags.push(1); + } + if (diag.reportsDeprecated) { + if (diagnostic.tags === undefined) + diagnostic.tags = []; + diagnostic.tags.push(2); + } + return diagnostic; + } + function translateDiagnosticRelated(diag) { + if (diag.start === undefined) + return; + if (diag.length === undefined) + return; + let document; + if (diag.file) { + document = ctx.getTextDocument(ctx.env.fileNameToUri(diag.file.fileName)); + } + if (!document) + return; + const diagnostic = { + location: { + uri: document.uri, + range: { + start: document.positionAt(diag.start), + end: document.positionAt(diag.start + diag.length), + }, + }, + message: getMessageText(diag), + }; + return diagnostic; + } + function translateErrorType(input) { + switch (input) { + case ts.DiagnosticCategory.Warning: return 2; + case ts.DiagnosticCategory.Error: return 1; + case ts.DiagnosticCategory.Suggestion: return 4; + case ts.DiagnosticCategory.Message: return 3; + } + return 1; + } + }; +} +diagnostics.register = register$f; +function getMessageText(diag, level = 0) { + let messageText = ' '.repeat(level); + if (typeof diag.messageText === 'string') { + messageText += diag.messageText; + } + else { + messageText += diag.messageText.messageText; + if (diag.messageText.next) { + for (const info of diag.messageText.next) { + messageText += '\n' + getMessageText(info, level + 1); + } + } + } + return messageText; +} +function getEmitDeclarations(compilerOptions) { + return !!(compilerOptions.declaration || compilerOptions.composite); +} +diagnostics.getEmitDeclarations = getEmitDeclarations; + +var documentHighlight = {}; + +Object.defineProperty(documentHighlight, "__esModule", { value: true }); +documentHighlight.register = void 0; +const shared_1$g = shared; +function register$e(ctx) { + const { ts } = ctx; + return (uri, position) => { + const document = ctx.getTextDocument(uri); + if (!document) + return []; + const fileName = ctx.env.uriToFileName(document.uri); + const offset = document.offsetAt(position); + const highlights = (0, shared_1$g.safeCall)(() => ctx.typescript.languageService.getDocumentHighlights(fileName, offset, [fileName])); + if (!highlights) + return []; + const results = []; + for (const highlight of highlights) { + for (const span of highlight.highlightSpans) { + results.push({ + kind: span.kind === ts.HighlightSpanKind.writtenReference ? 3 : 2, + range: { + start: document.positionAt(span.textSpan.start), + end: document.positionAt(span.textSpan.start + span.textSpan.length), + }, + }); + } + } + return results; + }; +} +documentHighlight.register = register$e; + +var documentSymbol = {}; + +Object.defineProperty(documentSymbol, "__esModule", { value: true }); +documentSymbol.register = void 0; +const PConst$1 = protocol_const; +const modifiers_1$1 = modifiers; +const shared_1$f = shared; +const getSymbolKind$1 = (kind) => { + switch (kind) { + case PConst$1.Kind.module: return 2; + case PConst$1.Kind.class: return 5; + case PConst$1.Kind.enum: return 10; + case PConst$1.Kind.interface: return 11; + case PConst$1.Kind.method: return 6; + case PConst$1.Kind.memberVariable: return 7; + case PConst$1.Kind.memberGetAccessor: return 7; + case PConst$1.Kind.memberSetAccessor: return 7; + case PConst$1.Kind.variable: return 13; + case PConst$1.Kind.const: return 13; + case PConst$1.Kind.localVariable: return 13; + case PConst$1.Kind.function: return 12; + case PConst$1.Kind.localFunction: return 12; + case PConst$1.Kind.constructSignature: return 9; + case PConst$1.Kind.constructorImplementation: return 9; + } + return 13; +}; +function register$d(ctx) { + return (uri) => { + const document = ctx.getTextDocument(uri); + if (!document) + return []; + const fileName = ctx.env.uriToFileName(document.uri); + const barItems = (0, shared_1$f.safeCall)(() => ctx.typescript.languageService.getNavigationTree(fileName)); + if (!barItems) + return []; + // The root represents the file. Ignore this when showing in the UI + const result = barItems.childItems + ?.map(function convertNavTree(item) { + if (!shouldIncludeEntry(item)) { + return []; + } + let remain = item.childItems ?? []; + return item.spans.map(span => { + const childItems = []; + remain = remain.filter(child => { + const childStart = child.spans[0].start; + const childEnd = child.spans[child.spans.length - 1].start + child.spans[child.spans.length - 1].length; + if (childStart >= span.start && childEnd <= span.start + span.length) { + childItems.push(child); + return false; + } + return true; + }); + const nameSpan = item.spans.length === 1 + ? (item.nameSpan ?? span) + : span; + const fullRange = { + start: Math.min(span.start, nameSpan.start), + end: Math.max(span.start + span.length, nameSpan.start + nameSpan.length), + }; + const symbol = { + name: item.text, + kind: getSymbolKind$1(item.kind), + range: { + start: document.positionAt(fullRange.start), + end: document.positionAt(fullRange.end), + }, + selectionRange: { + start: document.positionAt(nameSpan.start), + end: document.positionAt(nameSpan.start + nameSpan.length), + }, + children: childItems.map(convertNavTree).flat(), + }; + const kindModifiers = (0, modifiers_1$1.parseKindModifier)(item.kindModifiers); + if (kindModifiers.has(PConst$1.KindModifiers.deprecated)) { + symbol.deprecated = true; + symbol.tags ??= []; + symbol.tags.push(1); + } + return symbol; + }); + }) + .flat(); + return result ?? []; + function shouldIncludeEntry(item) { + if (item.kind === PConst$1.Kind.alias) { + return false; + } + return !!(item.text && item.text !== '<function>' && item.text !== '<class>'); + } + }; +} +documentSymbol.register = register$d; + +var fileReferences = {}; + +Object.defineProperty(fileReferences, "__esModule", { value: true }); +fileReferences.register = void 0; +const transforms_1$3 = transforms; +const shared_1$e = shared; +function register$c(ctx) { + return (uri) => { + const document = ctx.getTextDocument(uri); + if (!document) + return []; + const fileName = ctx.env.uriToFileName(document.uri); + const entries = (0, shared_1$e.safeCall)(() => ctx.typescript.languageService.getFileReferences(fileName)); + if (!entries) + return []; + return (0, transforms_1$3.entriesToLocations)([...entries], ctx); + }; +} +fileReferences.register = register$c; + +var fileRename = {}; + +Object.defineProperty(fileRename, "__esModule", { value: true }); +fileRename.register = void 0; +const rename_1 = rename; +const getFormatCodeSettings_1$1 = getFormatCodeSettings$1; +const getUserPreferences_1$1 = getUserPreferences$1; +const shared_1$d = shared; +function register$b(ctx) { + return async (oldUri, newUri) => { + const document = ctx.getTextDocument(oldUri); + const [formatOptions, preferences] = document ? await Promise.all([ + (0, getFormatCodeSettings_1$1.getFormatCodeSettings)(ctx, document), + (0, getUserPreferences_1$1.getUserPreferences)(ctx, document), + ]) : [{}, {}]; + const fileToRename = ctx.env.uriToFileName(oldUri); + const newFilePath = ctx.env.uriToFileName(newUri); + const response = (0, shared_1$d.safeCall)(() => ctx.typescript.languageService.getEditsForFileRename(fileToRename, newFilePath, formatOptions, preferences)); + if (!response?.length) + return; + const edits = (0, rename_1.fileTextChangesToWorkspaceEdit)(response, ctx); + return edits; + }; +} +fileRename.register = register$b; + +var foldingRanges = {}; + +Object.defineProperty(foldingRanges, "__esModule", { value: true }); +foldingRanges.register = void 0; +const shared_1$c = shared; +function register$a(ctx) { + const { ts } = ctx; + return (uri) => { + const document = ctx.getTextDocument(uri); + if (!document) + return []; + const fileName = ctx.env.uriToFileName(document.uri); + const outliningSpans = (0, shared_1$c.safeCall)(() => ctx.typescript.languageService.getOutliningSpans(fileName)); + if (!outliningSpans) + return []; + const foldingRanges = []; + for (const outliningSpan of outliningSpans) { + const start = document.positionAt(outliningSpan.textSpan.start); + const end = adjustFoldingEnd(start, document.positionAt(outliningSpan.textSpan.start + outliningSpan.textSpan.length), document); + const foldingRange = { + startLine: start.line, + endLine: end.line, + startCharacter: start.character, + endCharacter: end.character, + kind: transformFoldingRangeKind(outliningSpan.kind), + }; + foldingRanges.push(foldingRange); + } + return foldingRanges; + }; + function transformFoldingRangeKind(tsKind) { + switch (tsKind) { + case ts.OutliningSpanKind.Comment: return 'comment'; + case ts.OutliningSpanKind.Imports: return 'imports'; + case ts.OutliningSpanKind.Region: return 'region'; + } + } +} +foldingRanges.register = register$a; +const foldEndPairCharacters = ['}', ']', ')', '`']; +// https://github.com/microsoft/vscode/blob/bed61166fb604e519e82e4d1d1ed839bc45d65f8/extensions/typescript-language-features/src/languageFeatures/folding.ts#L61-L73 +function adjustFoldingEnd(start, end, document) { + // workaround for #47240 + if (end.character > 0) { + const foldEndCharacter = document.getText({ + start: { line: end.line, character: end.character - 1 }, + end, + }); + if (foldEndPairCharacters.includes(foldEndCharacter)) { + const endOffset = Math.max(document.offsetAt({ line: end.line, character: 0 }) - 1, document.offsetAt(start)); + return document.positionAt(endOffset); + } + } + return end; +} + +var formatting = {}; + +Object.defineProperty(formatting, "__esModule", { value: true }); +formatting.register = void 0; +const getFormatCodeSettings_1 = getFormatCodeSettings$1; +const shared_1$b = shared; +function register$9(ctx) { + return { + onRange: async (document, range, options) => { + const fileName = ctx.env.uriToFileName(document.uri); + const tsOptions = await (0, getFormatCodeSettings_1.getFormatCodeSettings)(ctx, document, options); + if (typeof (tsOptions.indentSize) === "boolean" || typeof (tsOptions.indentSize) === "string") { + tsOptions.indentSize = undefined; + } + const scriptEdits = range + ? (0, shared_1$b.safeCall)(() => ctx.typescript.languageService.getFormattingEditsForRange(fileName, document.offsetAt(range.start), document.offsetAt(range.end), tsOptions)) + : (0, shared_1$b.safeCall)(() => ctx.typescript.languageService.getFormattingEditsForDocument(fileName, tsOptions)); + if (!scriptEdits) + return []; + const result = []; + for (const textEdit of scriptEdits) { + result.push({ + range: { + start: document.positionAt(textEdit.span.start), + end: document.positionAt(textEdit.span.start + textEdit.span.length), + }, + newText: textEdit.newText, + }); + } + return result; + }, + onType: async (document, options, position, key) => { + const fileName = ctx.env.uriToFileName(document.uri); + const tsOptions = await (0, getFormatCodeSettings_1.getFormatCodeSettings)(ctx, document, options); + const scriptEdits = (0, shared_1$b.safeCall)(() => ctx.typescript.languageService.getFormattingEditsAfterKeystroke(fileName, document.offsetAt(position), key, tsOptions)); + if (!scriptEdits) + return []; + const result = []; + for (const textEdit of scriptEdits) { + result.push({ + range: { + start: document.positionAt(textEdit.span.start), + end: document.positionAt(textEdit.span.start + textEdit.span.length), + }, + newText: textEdit.newText, + }); + } + return result; + }, + }; +} +formatting.register = register$9; + +var hover = {}; + +Object.defineProperty(hover, "__esModule", { value: true }); +hover.register = void 0; +const previewer = previewer$2; +const shared_1$a = shared; +function register$8(ctx) { + const { ts } = ctx; + return (uri, position, documentOnly = false) => { + const document = ctx.getTextDocument(uri); + if (!document) + return; + const fileName = ctx.env.uriToFileName(document.uri); + const offset = document.offsetAt(position); + const info = (0, shared_1$a.safeCall)(() => ctx.typescript.languageService.getQuickInfoAtPosition(fileName, offset)); + if (!info) + return; + const parts = []; + const displayString = ts.displayPartsToString(info.displayParts); + const documentation = previewer.markdownDocumentation(info.documentation ?? [], info.tags, { toResource }, ctx); + if (displayString && !documentOnly) { + parts.push(['```typescript', displayString, '```'].join('\n')); + } + if (documentation) { + parts.push(documentation); + } + const markdown = { + kind: 'markdown', + value: parts.join('\n\n'), + }; + return { + contents: markdown, + range: { + start: document.positionAt(info.textSpan.start), + end: document.positionAt(info.textSpan.start + info.textSpan.length), + }, + }; + function toResource(path) { + return ctx.env.fileNameToUri(path); + } + }; +} +hover.register = register$8; + +var implementation = {}; + +Object.defineProperty(implementation, "__esModule", { value: true }); +implementation.register = void 0; +const transforms_1$2 = transforms; +const shared_1$9 = shared; +function register$7(ctx) { + return (uri, position) => { + const document = ctx.getTextDocument(uri); + if (!document) + return []; + const fileName = ctx.env.uriToFileName(document.uri); + const offset = document.offsetAt(position); + const entries = (0, shared_1$9.safeCall)(() => ctx.typescript.languageService.getImplementationAtPosition(fileName, offset)); + if (!entries) + return []; + return (0, transforms_1$2.entriesToLocationLinks)([...entries], ctx); + }; +} +implementation.register = register$7; + +var inlayHints = {}; + +Object.defineProperty(inlayHints, "__esModule", { value: true }); +inlayHints.register = void 0; +const getUserPreferences_1 = getUserPreferences$1; +const shared_1$8 = shared; +function register$6(ctx) { + const { ts } = ctx; + return async (uri, range) => { + const document = ctx.getTextDocument(uri); + if (!document) + return; + const preferences = await (0, getUserPreferences_1.getUserPreferences)(ctx, document); + const fileName = ctx.env.uriToFileName(document.uri); + const start = document.offsetAt(range.start); + const end = document.offsetAt(range.end); + const inlayHints = (0, shared_1$8.safeCall)(() => 'provideInlayHints' in ctx.typescript.languageService + ? ctx.typescript.languageService.provideInlayHints(fileName, { start, length: end - start }, preferences) + : []) ?? []; + return inlayHints.map(inlayHint => { + const result = { + position: document.positionAt(inlayHint.position), + label: inlayHint.text, + kind: inlayHint.kind === ts.InlayHintKind.Type ? 1 + : inlayHint.kind === ts.InlayHintKind.Parameter ? 2 + : undefined, + }; + result.paddingLeft = inlayHint.whitespaceBefore; + result.paddingRight = inlayHint.whitespaceAfter; + return result; + }); + }; +} +inlayHints.register = register$6; + +var references = {}; + +Object.defineProperty(references, "__esModule", { value: true }); +references.register = void 0; +const transforms_1$1 = transforms; +const shared_1$7 = shared; +function register$5(ctx) { + return (uri, position) => { + const document = ctx.getTextDocument(uri); + if (!document) + return []; + const fileName = ctx.env.uriToFileName(document.uri); + const offset = document.offsetAt(position); + const entries = (0, shared_1$7.safeCall)(() => ctx.typescript.languageService.getReferencesAtPosition(fileName, offset)); + if (!entries) + return []; + return (0, transforms_1$1.entriesToLocations)([...entries], ctx); + }; +} +references.register = register$5; + +var selectionRanges = {}; + +Object.defineProperty(selectionRanges, "__esModule", { value: true }); +selectionRanges.register = void 0; +const shared_1$6 = shared; +function register$4(ctx) { + return (uri, positions) => { + const document = ctx.getTextDocument(uri); + if (!document) + return []; + const result = []; + for (const position of positions) { + const fileName = ctx.env.uriToFileName(document.uri); + const offset = document.offsetAt(position); + const range = (0, shared_1$6.safeCall)(() => ctx.typescript.languageService.getSmartSelectionRange(fileName, offset)); + if (!range) + continue; + result.push(transformSelectionRange(range, document)); + } + return result; + }; +} +selectionRanges.register = register$4; +function transformSelectionRange(range, document) { + return { + range: { + start: document.positionAt(range.textSpan.start), + end: document.positionAt(range.textSpan.start + range.textSpan.length), + }, + parent: range.parent ? transformSelectionRange(range.parent, document) : undefined, + }; +} + +var semanticTokens = {}; + +Object.defineProperty(semanticTokens, "__esModule", { value: true }); +semanticTokens.register = void 0; +const shared_1$5 = shared; +function register$3(ctx) { + const { ts } = ctx; + return (uri, range, legend) => { + const document = ctx.getTextDocument(uri); + if (!document) + return; + const file = ctx.env.uriToFileName(uri); + const start = range ? document.offsetAt(range.start) : 0; + const length = range ? (document.offsetAt(range.end) - start) : document.getText().length; + if (ctx.typescript?.languageServiceHost.getCancellationToken?.().isCancellationRequested()) + return; + const response2 = (0, shared_1$5.safeCall)(() => ctx.typescript.languageService.getEncodedSyntacticClassifications(file, { start, length })); + if (!response2) + return; + if (ctx.typescript?.languageServiceHost.getCancellationToken?.().isCancellationRequested()) + return; + const response1 = (0, shared_1$5.safeCall)(() => ctx.typescript.languageService.getEncodedSemanticClassifications(file, { start, length }, ts.SemanticClassificationFormat.TwentyTwenty)); + if (!response1) + return; + let tokenModifiersTable = []; + tokenModifiersTable[2 /* TokenModifier.async */] = 1 << legend.tokenModifiers.indexOf('async'); + tokenModifiersTable[0 /* TokenModifier.declaration */] = 1 << legend.tokenModifiers.indexOf('declaration'); + tokenModifiersTable[3 /* TokenModifier.readonly */] = 1 << legend.tokenModifiers.indexOf('readonly'); + tokenModifiersTable[1 /* TokenModifier.static */] = 1 << legend.tokenModifiers.indexOf('static'); + tokenModifiersTable[5 /* TokenModifier.local */] = 1 << legend.tokenModifiers.indexOf('local'); // missing in server tokenModifiers + tokenModifiersTable[4 /* TokenModifier.defaultLibrary */] = 1 << legend.tokenModifiers.indexOf('defaultLibrary'); + tokenModifiersTable = tokenModifiersTable.map(mod => Math.max(mod, 0)); + const tokenSpan = [...response1.spans, ...response2.spans]; + const tokens = []; + let i = 0; + while (i < tokenSpan.length) { + const offset = tokenSpan[i++]; + const length = tokenSpan[i++]; + const tsClassification = tokenSpan[i++]; + let tokenModifiers = 0; + let tokenType = getTokenTypeFromClassification(tsClassification); + if (tokenType !== undefined) { + // it's a classification as returned by the typescript-vscode-sh-plugin + tokenModifiers = getTokenModifierFromClassification(tsClassification); + } + else { + // typescript-vscode-sh-plugin is not present + tokenType = tokenTypeMap[tsClassification]; + if (tokenType === undefined) { + continue; + } + } + const serverToken = tsTokenTypeToServerTokenType(tokenType); + if (serverToken === undefined) { + continue; + } + const serverTokenModifiers = tsTokenModifierToServerTokenModifier(tokenModifiers); + // we can use the document's range conversion methods because the result is at the same version as the document + const startPos = document.positionAt(offset); + const endPos = document.positionAt(offset + length); + for (let line = startPos.line; line <= endPos.line; line++) { + const startCharacter = (line === startPos.line ? startPos.character : 0); + const endCharacter = (line === endPos.line ? endPos.character : docLineLength(document, line)); + tokens.push([line, startCharacter, endCharacter - startCharacter, serverToken, serverTokenModifiers]); + } + } + return tokens; + function tsTokenTypeToServerTokenType(tokenType) { + return legend.tokenTypes.indexOf(tokenTypes[tokenType]); + } + function tsTokenModifierToServerTokenModifier(input) { + let m = 0; + let i = 0; + while (input) { + if (input & 1) { + m |= tokenModifiersTable[i]; + } + input = input >> 1; + i++; + } + return m; + } + }; +} +semanticTokens.register = register$3; +function docLineLength(document, line) { + const currentLineOffset = document.offsetAt({ line, character: 0 }); + const nextLineOffset = document.offsetAt({ line: line + 1, character: 0 }); + return nextLineOffset - currentLineOffset; +} +function getTokenTypeFromClassification(tsClassification) { + if (tsClassification > 255 /* TokenEncodingConsts.modifierMask */) { + return (tsClassification >> 8 /* TokenEncodingConsts.typeOffset */) - 1; + } + return undefined; +} +function getTokenModifierFromClassification(tsClassification) { + return tsClassification & 255 /* TokenEncodingConsts.modifierMask */; +} +const tokenTypes = []; +tokenTypes[0 /* TokenType.class */] = 'class'; +tokenTypes[1 /* TokenType.enum */] = 'enum'; +tokenTypes[2 /* TokenType.interface */] = 'interface'; +tokenTypes[3 /* TokenType.namespace */] = 'namespace'; +tokenTypes[4 /* TokenType.typeParameter */] = 'typeParameter'; +tokenTypes[5 /* TokenType.type */] = 'type'; +tokenTypes[6 /* TokenType.parameter */] = 'parameter'; +tokenTypes[7 /* TokenType.variable */] = 'variable'; +tokenTypes[8 /* TokenType.enumMember */] = 'enumMember'; +tokenTypes[9 /* TokenType.property */] = 'property'; +tokenTypes[10 /* TokenType.function */] = 'function'; +tokenTypes[11 /* TokenType.method */] = 'method'; +// mapping for the original ExperimentalProtocol.ClassificationType from TypeScript (only used when plugin is not available) +const tokenTypeMap = []; +tokenTypeMap[11 /* ExperimentalProtocol.ClassificationType.className */] = 0 /* TokenType.class */; +tokenTypeMap[12 /* ExperimentalProtocol.ClassificationType.enumName */] = 1 /* TokenType.enum */; +tokenTypeMap[13 /* ExperimentalProtocol.ClassificationType.interfaceName */] = 2 /* TokenType.interface */; +tokenTypeMap[14 /* ExperimentalProtocol.ClassificationType.moduleName */] = 3 /* TokenType.namespace */; +tokenTypeMap[15 /* ExperimentalProtocol.ClassificationType.typeParameterName */] = 4 /* TokenType.typeParameter */; +tokenTypeMap[16 /* ExperimentalProtocol.ClassificationType.typeAliasName */] = 5 /* TokenType.type */; +tokenTypeMap[17 /* ExperimentalProtocol.ClassificationType.parameterName */] = 6 /* TokenType.parameter */; + +var signatureHelp = {}; + +Object.defineProperty(signatureHelp, "__esModule", { value: true }); +signatureHelp.register = void 0; +const shared_1$4 = shared; +function register$2(ctx) { + const { ts } = ctx; + return (uri, position, context) => { + const document = ctx.getTextDocument(uri); + if (!document) + return; + const options = {}; + if (context?.triggerKind === 1) { + options.triggerReason = { + kind: 'invoked' + }; + } + else if (context?.triggerKind === 2) { + options.triggerReason = { + kind: 'characterTyped', + triggerCharacter: context.triggerCharacter, + }; + } + else if (context?.triggerKind === 3) { + options.triggerReason = { + kind: 'retrigger', + triggerCharacter: context.triggerCharacter, + }; + } + const fileName = ctx.env.uriToFileName(document.uri); + const offset = document.offsetAt(position); + const helpItems = (0, shared_1$4.safeCall)(() => ctx.typescript.languageService.getSignatureHelpItems(fileName, offset, options)); + if (!helpItems) + return; + return { + activeSignature: helpItems.selectedItemIndex, + activeParameter: helpItems.argumentIndex, + signatures: helpItems.items.map(item => { + const signature = { + label: '', + documentation: undefined, + parameters: [] + }; + signature.label += ts.displayPartsToString(item.prefixDisplayParts); + item.parameters.forEach((p, i, a) => { + const label = ts.displayPartsToString(p.displayParts); + const parameter = { + label, + documentation: ts.displayPartsToString(p.documentation) + }; + signature.label += label; + signature.parameters.push(parameter); + if (i < a.length - 1) { + signature.label += ts.displayPartsToString(item.separatorDisplayParts); + } + }); + signature.label += ts.displayPartsToString(item.suffixDisplayParts); + return signature; + }), + }; + }; +} +signatureHelp.register = register$2; + +var typeDefinition = {}; + +Object.defineProperty(typeDefinition, "__esModule", { value: true }); +typeDefinition.register = void 0; +const transforms_1 = transforms; +const shared_1$3 = shared; +function register$1(ctx) { + return (uri, position) => { + const document = ctx.getTextDocument(uri); + if (!document) + return []; + const fileName = ctx.env.uriToFileName(document.uri); + const offset = document.offsetAt(position); + const entries = (0, shared_1$3.safeCall)(() => ctx.typescript.languageService.getTypeDefinitionAtPosition(fileName, offset)); + if (!entries) + return []; + return (0, transforms_1.entriesToLocationLinks)([...entries], ctx); + }; +} +typeDefinition.register = register$1; + +var workspaceSymbol = {}; + +Object.defineProperty(workspaceSymbol, "__esModule", { value: true }); +workspaceSymbol.register = void 0; +const PConst = protocol_const; +const modifiers_1 = modifiers; +const shared_1$2 = shared; +function getSymbolKind(item) { + switch (item.kind) { + case PConst.Kind.method: return 6; + case PConst.Kind.enum: return 10; + case PConst.Kind.enumMember: return 22; + case PConst.Kind.function: return 12; + case PConst.Kind.class: return 5; + case PConst.Kind.interface: return 11; + case PConst.Kind.type: return 5; + case PConst.Kind.memberVariable: return 8; + case PConst.Kind.memberGetAccessor: return 8; + case PConst.Kind.memberSetAccessor: return 8; + case PConst.Kind.variable: return 13; + default: return 13; + } +} +function register(ctx) { + return (query) => { + const items = (0, shared_1$2.safeCall)(() => ctx.typescript.languageService.getNavigateToItems(query)); + if (!items) + return []; + return items + .filter(item => item.containerName || item.kind !== 'alias') + .map(toWorkspaceSymbol) + .filter((v) => !!v); + function toWorkspaceSymbol(item) { + const label = getLabel(item); + const uri = ctx.env.fileNameToUri(item.fileName); + const document = ctx.getTextDocument(uri); + if (document) { + const range = { + start: document.positionAt(item.textSpan.start), + end: document.positionAt(item.textSpan.start + item.textSpan.length), + }; + const info = { + name: label, + kind: getSymbolKind(item), + location: { uri, range }, + }; + const kindModifiers = item.kindModifiers ? (0, modifiers_1.parseKindModifier)(item.kindModifiers) : undefined; + if (kindModifiers?.has(PConst.KindModifiers.deprecated)) { + info.tags = [1]; + } + return info; + } + } + function getLabel(item) { + const label = item.name; + if (item.kind === 'method' || item.kind === 'function') { + return label + '()'; + } + return label; + } + }; +} +workspaceSymbol.register = register; + +var typescript = {}; + +var documentRegistry = {}; + +Object.defineProperty(documentRegistry, "__esModule", { value: true }); +documentRegistry.getDocumentRegistry = void 0; +const documentRegistries = []; +function getDocumentRegistry(ts, useCaseSensitiveFileNames, currentDirectory) { + let documentRegistry = documentRegistries.find(item => item[0] === useCaseSensitiveFileNames && item[1] === currentDirectory)?.[2]; + if (!documentRegistry) { + documentRegistry = ts.createDocumentRegistry(useCaseSensitiveFileNames, currentDirectory); + documentRegistries.push([useCaseSensitiveFileNames, currentDirectory, documentRegistry]); + } + return documentRegistry; +} +documentRegistry.getDocumentRegistry = getDocumentRegistry; + +var languageService = {}; + +Object.defineProperty(languageService, "__esModule", { value: true }); +languageService.decorateLanguageService = void 0; +const language_core_1$6 = languageCore; +function decorateLanguageService(virtualFiles, languageService, isTsPlugin) { + const _organizeImports = languageService.organizeImports.bind(languageService); + const _getDefinitionAtPosition = languageService.getDefinitionAtPosition.bind(languageService); + const _getDefinitionAndBoundSpan = languageService.getDefinitionAndBoundSpan.bind(languageService); + const _getTypeDefinitionAtPosition = languageService.getTypeDefinitionAtPosition.bind(languageService); + const _getImplementationAtPosition = languageService.getImplementationAtPosition.bind(languageService); + const _getFileReferences = languageService.getFileReferences.bind(languageService); + const _findRenameLocations = languageService.findRenameLocations.bind(languageService); + const _getReferencesAtPosition = languageService.getReferencesAtPosition.bind(languageService); + const _findReferences = languageService.findReferences.bind(languageService); + languageService.organizeImports = organizeImports; + languageService.getDefinitionAtPosition = getDefinitionAtPosition; + languageService.getDefinitionAndBoundSpan = getDefinitionAndBoundSpan; + languageService.getTypeDefinitionAtPosition = getTypeDefinitionAtPosition; + languageService.getImplementationAtPosition = getImplementationAtPosition; + languageService.findRenameLocations = findRenameLocations; + languageService.getReferencesAtPosition = getReferencesAtPosition; + languageService.getFileReferences = getFileReferences; + languageService.findReferences = findReferences; + // apis + function organizeImports(args, formatOptions, preferences) { + let edits = []; + const file = virtualFiles.getSource(args.fileName)?.root; + if (file) { + (0, language_core_1$6.forEachEmbeddedFile)(file, embeddedFile => { + if (embeddedFile.kind === language_core_1$6.FileKind.TypeScriptHostFile && embeddedFile.capabilities.codeAction) { + edits = edits.concat(_organizeImports({ + ...args, + fileName: embeddedFile.fileName, + }, formatOptions, preferences)); + } + }); + } + else { + return _organizeImports(args, formatOptions, preferences); + } + return edits.map(transformFileTextChanges).filter(notEmpty); + } + function getReferencesAtPosition(fileName, position) { + return findLocations(fileName, position, 'references'); + } + function getFileReferences(fileName) { + return findLocations(fileName, -1, 'fileReferences'); + } + function getDefinitionAtPosition(fileName, position) { + return findLocations(fileName, position, 'definition'); + } + function getTypeDefinitionAtPosition(fileName, position) { + return findLocations(fileName, position, 'typeDefinition'); + } + function getImplementationAtPosition(fileName, position) { + return findLocations(fileName, position, 'implementation'); + } + function findRenameLocations(fileName, position, findInStrings, findInComments, preferences) { + return findLocations(fileName, position, 'rename', findInStrings, findInComments, preferences); + } + function findLocations(fileName, position, mode, findInStrings = false, findInComments = false, preferences) { + const loopChecker = new Set(); + let symbols = []; + withMirrors(fileName, position); + return symbols.map(s => transformDocumentSpanLike(s, mode === 'definition')).filter(notEmpty); + function withMirrors(fileName, position) { + if (loopChecker.has(fileName + ':' + position)) + return; + loopChecker.add(fileName + ':' + position); + const _symbols = mode === 'definition' ? _getDefinitionAtPosition(fileName, position) + : mode === 'typeDefinition' ? _getTypeDefinitionAtPosition(fileName, position) + : mode === 'references' ? _getReferencesAtPosition(fileName, position) + : mode === 'fileReferences' ? _getFileReferences(fileName) + : mode === 'implementation' ? _getImplementationAtPosition(fileName, position) + : mode === 'rename' && preferences ? _findRenameLocations(fileName, position, findInStrings, findInComments, preferences) + : undefined; + if (!_symbols) + return; + symbols = symbols.concat(_symbols); + for (const ref of _symbols) { + loopChecker.add(ref.fileName + ':' + ref.textSpan.start); + const [virtualFile] = getVirtualFile(ref.fileName); + if (!virtualFile) + continue; + const mirrorMap = virtualFiles.getMirrorMap(virtualFile); + if (!mirrorMap) + continue; + for (const [mirrorOffset, data] of mirrorMap.findMirrorOffsets(ref.textSpan.start)) { + if ((mode === 'definition' || mode === 'typeDefinition' || mode === 'implementation') && !data.definition) + continue; + if ((mode === 'references') && !data.references) + continue; + if ((mode === 'rename') && !data.rename) + continue; + if (loopChecker.has(ref.fileName + ':' + mirrorOffset)) + continue; + withMirrors(ref.fileName, mirrorOffset); + } + } + } + } + function getDefinitionAndBoundSpan(fileName, position) { + const loopChecker = new Set(); + let textSpan; + let symbols = []; + withMirrors(fileName, position); + if (!textSpan) + return; + return { + textSpan: textSpan, + definitions: symbols?.map(s => transformDocumentSpanLike(s, true)).filter(notEmpty), + }; + function withMirrors(fileName, position) { + if (loopChecker.has(fileName + ':' + position)) + return; + loopChecker.add(fileName + ':' + position); + const _symbols = _getDefinitionAndBoundSpan(fileName, position); + if (!_symbols) + return; + if (!textSpan) { + textSpan = _symbols.textSpan; + } + if (!_symbols.definitions) + return; + symbols = symbols.concat(_symbols.definitions); + for (const ref of _symbols.definitions) { + loopChecker.add(ref.fileName + ':' + ref.textSpan.start); + const [virtualFile] = getVirtualFile(ref.fileName); + if (!virtualFile) + continue; + const mirrorMap = virtualFiles.getMirrorMap(virtualFile); + if (!mirrorMap) + continue; + for (const [mirrorOffset, data] of mirrorMap.findMirrorOffsets(ref.textSpan.start)) { + if (!data.definition) + continue; + if (loopChecker.has(ref.fileName + ':' + mirrorOffset)) + continue; + withMirrors(ref.fileName, mirrorOffset); + } + } + } + } + function findReferences(fileName, position) { + const loopChecker = new Set(); + let symbols = []; + withMirrors(fileName, position); + return symbols.map(s => transformReferencedSymbol(s)).filter(notEmpty); + function withMirrors(fileName, position) { + if (loopChecker.has(fileName + ':' + position)) + return; + loopChecker.add(fileName + ':' + position); + const _symbols = _findReferences(fileName, position); + if (!_symbols) + return; + symbols = symbols.concat(_symbols); + for (const symbol of _symbols) { + for (const ref of symbol.references) { + loopChecker.add(ref.fileName + ':' + ref.textSpan.start); + const [virtualFile] = getVirtualFile(ref.fileName); + if (!virtualFile) + continue; + const mirrorMap = virtualFiles.getMirrorMap(virtualFile); + if (!mirrorMap) + continue; + for (const [mirrorOffset, data] of mirrorMap.findMirrorOffsets(ref.textSpan.start)) { + if (!data.references) + continue; + if (loopChecker.has(ref.fileName + ':' + mirrorOffset)) + continue; + withMirrors(ref.fileName, mirrorOffset); + } + } + } + } + } + // transforms + function transformFileTextChanges(changes) { + const [_, source] = getVirtualFile(changes.fileName); + if (source) { + return { + ...changes, + fileName: source.fileName, + textChanges: changes.textChanges.map(c => { + const span = transformSpan(changes.fileName, c.span); + if (span) { + return { + ...c, + span: span.textSpan, + }; + } + }).filter(notEmpty), + }; + } + else { + return changes; + } + } + function transformReferencedSymbol(symbol) { + const definition = transformDocumentSpanLike(symbol.definition, false); + const references = symbol.references.map(r => transformDocumentSpanLike(r, false)).filter(notEmpty); + if (definition) { + return { + definition, + references, + }; + } + else if (references.length) { // TODO: remove patching + return { + definition: { + ...symbol.definition, + fileName: references[0].fileName, + textSpan: references[0].textSpan, + }, + references, + }; + } + } + function transformDocumentSpanLike(documentSpan, isDefinition) { + let textSpan = transformSpan(documentSpan.fileName, documentSpan.textSpan); + if (isDefinition && !textSpan) { + const [virtualFile, source] = getVirtualFile(documentSpan.fileName); + if (virtualFile && source) { + textSpan = { + fileName: source.fileName, + textSpan: { start: 0, length: 0 }, + }; + } + } + if (!textSpan) + return; + const contextSpan = transformSpan(documentSpan.fileName, documentSpan.contextSpan); + const originalTextSpan = transformSpan(documentSpan.originalFileName, documentSpan.originalTextSpan); + const originalContextSpan = transformSpan(documentSpan.originalFileName, documentSpan.originalContextSpan); + return { + ...documentSpan, + fileName: textSpan.fileName, + textSpan: textSpan.textSpan, + contextSpan: contextSpan?.textSpan, + originalFileName: originalTextSpan?.fileName, + originalTextSpan: originalTextSpan?.textSpan, + originalContextSpan: originalContextSpan?.textSpan, + }; + } + function transformSpan(fileName, textSpan) { + if (!fileName) + return; + if (!textSpan) + return; + const [virtualFile, source] = getVirtualFile(fileName); + if (virtualFile && source) { + if (isTsPlugin) { + textSpan = { + start: textSpan.start - source.snapshot.getLength(), + length: textSpan.length, + }; + } + for (const [_, [sourceSnapshot, map]] of virtualFiles.getMaps(virtualFile)) { + if (source.snapshot !== sourceSnapshot) + continue; + const sourceLoc = map.toSourceOffset(textSpan.start); + if (sourceLoc) { + return { + fileName: source.fileName, + textSpan: { + start: sourceLoc[0], + length: textSpan.length, + }, + }; + } + } + } + else { + return { + fileName, + textSpan, + }; + } + } + function getVirtualFile(fileName) { + if (isTsPlugin) { + let result; + const source = virtualFiles.getSource(fileName); + if (source) { + (0, language_core_1$6.forEachEmbeddedFile)(source.root, file => { + const ext = file.fileName.replace(fileName, ''); + if (file.kind === language_core_1$6.FileKind.TypeScriptHostFile && (ext === '.d.ts' || ext.match(/^\.(js|ts)x?$/))) { + result = file; + } + }); + } + return [result, source]; + } + else { + return virtualFiles.getVirtualFile(fileName); + } + } +} +languageService.decorateLanguageService = decorateLanguageService; +function notEmpty(value) { + return value !== null && value !== undefined; +} + +var languageServiceHost = {}; + +var utilities = {}; + +var core = {}; + +Object.defineProperty(core, "__esModule", { value: true }); +core.startsWith = core.createGetCanonicalFileName = core.stringContains = core.endsWith = core.getStringComparer = core.compareStringsCaseSensitive = core.equateStringsCaseSensitive = core.equateStringsCaseInsensitive = core.last = core.lastOrUndefined = core.sort = core.some = core.flatMap = core.flatten = core.map = core.indexOfAnyCharCode = core.findIndex = core.every = void 0; +const emptyArray = []; +/** + * Iterates through `array` by index and performs the callback on each element of array until the callback + * returns a falsey value, then returns false. + * If no such value is found, the callback is applied to each element of array and `true` is returned. + */ +function every(array, callback) { + if (array) { + for (let i = 0; i < array.length; i++) { + if (!callback(array[i], i)) { + return false; + } + } + } + return true; +} +core.every = every; +/** Works like Array.prototype.findIndex, returning `-1` if no element satisfying the predicate is found. */ +function findIndex(array, predicate, startIndex) { + if (array === undefined) + return -1; + for (let i = startIndex ?? 0; i < array.length; i++) { + if (predicate(array[i], i)) { + return i; + } + } + return -1; +} +core.findIndex = findIndex; +function contains(array, value, equalityComparer = equateValues) { + if (array) { + for (const v of array) { + if (equalityComparer(v, value)) { + return true; + } + } + } + return false; +} +function indexOfAnyCharCode(text, charCodes, start) { + for (let i = start || 0; i < text.length; i++) { + if (contains(charCodes, text.charCodeAt(i))) { + return i; + } + } + return -1; +} +core.indexOfAnyCharCode = indexOfAnyCharCode; +function map(array, f) { + let result; + if (array) { + result = []; + for (let i = 0; i < array.length; i++) { + result.push(f(array[i], i)); + } + } + return result; +} +core.map = map; +/** + * Flattens an array containing a mix of array or non-array elements. + * + * @param array The array to flatten. + */ +function flatten(array) { + const result = []; + for (const v of array) { + if (v) { + if (isArray(v)) { + addRange(result, v); + } + else { + result.push(v); + } + } + } + return result; +} +core.flatten = flatten; +/** + * Maps an array. If the mapped value is an array, it is spread into the result. + * + * @param array The array to map. + * @param mapfn The callback used to map the result into one or more values. + */ +function flatMap(array, mapfn) { + let result; + if (array) { + for (let i = 0; i < array.length; i++) { + const v = mapfn(array[i], i); + if (v) { + if (isArray(v)) { + result = addRange(result, v); + } + else { + result = append(result, v); + } + } + } + } + return result || emptyArray; +} +core.flatMap = flatMap; +function some(array, predicate) { + if (array) { + if (predicate) { + for (const v of array) { + if (predicate(v)) { + return true; + } + } + } + else { + return array.length > 0; + } + } + return false; +} +core.some = some; +// function append<T>(to: T[] | undefined, value: T): T[]; +// function append<T>(to: T[] | undefined, value: T | undefined): T[] | undefined; +// function append<T>(to: Push<T>, value: T | undefined): void; +function append(to, value) { + if (value === undefined) + return to; + if (to === undefined) + return [value]; + to.push(value); + return to; +} +/** + * Gets the actual offset into an array for a relative offset. Negative offsets indicate a + * position offset from the end of the array. + */ +function toOffset(array, offset) { + return offset < 0 ? array.length + offset : offset; +} +function addRange(to, from, start, end) { + if (from === undefined || from.length === 0) + return to; + if (to === undefined) + return from.slice(start, end); + start = start === undefined ? 0 : toOffset(from, start); + end = end === undefined ? from.length : toOffset(from, end); + for (let i = start; i < end && i < from.length; i++) { + if (from[i] !== undefined) { + to.push(from[i]); + } + } + return to; +} +/** + * Returns a new sorted array. + */ +function sort(array, comparer) { + return (array.length === 0 ? array : array.slice().sort(comparer)); +} +core.sort = sort; +/** + * Returns the last element of an array if non-empty, `undefined` otherwise. + */ +function lastOrUndefined(array) { + return array === undefined || array.length === 0 ? undefined : array[array.length - 1]; +} +core.lastOrUndefined = lastOrUndefined; +function last(array) { + // Debug.assert(array.length !== 0); + return array[array.length - 1]; +} +core.last = last; +/** + * Tests whether a value is an array. + */ +function isArray(value) { + return Array.isArray ? Array.isArray(value) : value instanceof Array; +} +/** Returns its argument. */ +function identity(x) { + return x; +} +/** Returns lower case string */ +function toLowerCase(x) { + return x.toLowerCase(); +} +// We convert the file names to lower case as key for file name on case insensitive file system +// While doing so we need to handle special characters (eg \u0130) to ensure that we dont convert +// it to lower case, fileName with its lowercase form can exist along side it. +// Handle special characters and make those case sensitive instead +// +// |-#--|-Unicode--|-Char code-|-Desc-------------------------------------------------------------------| +// | 1. | i | 105 | Ascii i | +// | 2. | I | 73 | Ascii I | +// |-------- Special characters ------------------------------------------------------------------------| +// | 3. | \u0130 | 304 | Upper case I with dot above | +// | 4. | i,\u0307 | 105,775 | i, followed by 775: Lower case of (3rd item) | +// | 5. | I,\u0307 | 73,775 | I, followed by 775: Upper case of (4th item), lower case is (4th item) | +// | 6. | \u0131 | 305 | Lower case i without dot, upper case is I (2nd item) | +// | 7. | \u00DF | 223 | Lower case sharp s | +// +// Because item 3 is special where in its lowercase character has its own +// upper case form we cant convert its case. +// Rest special characters are either already in lower case format or +// they have corresponding upper case character so they dont need special handling +// +// But to avoid having to do string building for most common cases, also ignore +// a-z, 0-9, \u0131, \u00DF, \, /, ., : and space +const fileNameLowerCaseRegExp = /[^\u0130\u0131\u00DFa-z0-9\\/:\-_\. ]+/g; +/** + * Case insensitive file systems have descripencies in how they handle some characters (eg. turkish Upper case I with dot on top - \u0130) + * This function is used in places where we want to make file name as a key on these systems + * It is possible on mac to be able to refer to file name with I with dot on top as a fileName with its lower case form + * But on windows we cannot. Windows can have fileName with I with dot on top next to its lower case and they can not each be referred with the lowercase forms + * Technically we would want this function to be platform sepcific as well but + * our api has till now only taken caseSensitive as the only input and just for some characters we dont want to update API and ensure all customers use those api + * We could use upper case and we would still need to deal with the descripencies but + * we want to continue using lower case since in most cases filenames are lowercasewe and wont need any case changes and avoid having to store another string for the key + * So for this function purpose, we go ahead and assume character I with dot on top it as case sensitive since its very unlikely to use lower case form of that special character + */ +function toFileNameLowerCase(x) { + return fileNameLowerCaseRegExp.test(x) ? + x.replace(fileNameLowerCaseRegExp, toLowerCase) : + x; +} +function equateValues(a, b) { + return a === b; +} +/** + * Compare the equality of two strings using a case-sensitive ordinal comparison. + * + * Case-sensitive comparisons compare both strings one code-point at a time using the integer + * value of each code-point after applying `toUpperCase` to each string. We always map both + * strings to their upper-case form as some unicode characters do not properly round-trip to + * lowercase (such as `ẞ` (German sharp capital s)). + */ +function equateStringsCaseInsensitive(a, b) { + return a === b + || a !== undefined + && b !== undefined + && a.toUpperCase() === b.toUpperCase(); +} +core.equateStringsCaseInsensitive = equateStringsCaseInsensitive; +/** + * Compare the equality of two strings using a case-sensitive ordinal comparison. + * + * Case-sensitive comparisons compare both strings one code-point at a time using the + * integer value of each code-point. + */ +function equateStringsCaseSensitive(a, b) { + return equateValues(a, b); +} +core.equateStringsCaseSensitive = equateStringsCaseSensitive; +function compareComparableValues(a, b) { + return a === b ? 0 /* Comparison.EqualTo */ : + a === undefined ? -1 /* Comparison.LessThan */ : + b === undefined ? 1 /* Comparison.GreaterThan */ : + a < b ? -1 /* Comparison.LessThan */ : + 1 /* Comparison.GreaterThan */; +} +/** + * Compare two strings using a case-insensitive ordinal comparison. + * + * Ordinal comparisons are based on the difference between the unicode code points of both + * strings. Characters with multiple unicode representations are considered unequal. Ordinal + * comparisons provide predictable ordering, but place "a" after "B". + * + * Case-insensitive comparisons compare both strings one code-point at a time using the integer + * value of each code-point after applying `toUpperCase` to each string. We always map both + * strings to their upper-case form as some unicode characters do not properly round-trip to + * lowercase (such as `ẞ` (German sharp capital s)). + */ +function compareStringsCaseInsensitive(a, b) { + if (a === b) + return 0 /* Comparison.EqualTo */; + if (a === undefined) + return -1 /* Comparison.LessThan */; + if (b === undefined) + return 1 /* Comparison.GreaterThan */; + a = a.toUpperCase(); + b = b.toUpperCase(); + return a < b ? -1 /* Comparison.LessThan */ : a > b ? 1 /* Comparison.GreaterThan */ : 0 /* Comparison.EqualTo */; +} +/** + * Compare two strings using a case-sensitive ordinal comparison. + * + * Ordinal comparisons are based on the difference between the unicode code points of both + * strings. Characters with multiple unicode representations are considered unequal. Ordinal + * comparisons provide predictable ordering, but place "a" after "B". + * + * Case-sensitive comparisons compare both strings one code-point at a time using the integer + * value of each code-point. + */ +function compareStringsCaseSensitive(a, b) { + return compareComparableValues(a, b); +} +core.compareStringsCaseSensitive = compareStringsCaseSensitive; +function getStringComparer(ignoreCase) { + return ignoreCase ? compareStringsCaseInsensitive : compareStringsCaseSensitive; +} +core.getStringComparer = getStringComparer; +function endsWith(str, suffix) { + const expectedPos = str.length - suffix.length; + return expectedPos >= 0 && str.indexOf(suffix, expectedPos) === expectedPos; +} +core.endsWith = endsWith; +function stringContains(str, substring) { + return str.indexOf(substring) !== -1; +} +core.stringContains = stringContains; +function createGetCanonicalFileName(useCaseSensitiveFileNames) { + return useCaseSensitiveFileNames ? identity : toFileNameLowerCase; +} +core.createGetCanonicalFileName = createGetCanonicalFileName; +function startsWith(str, prefix) { + return str.lastIndexOf(prefix, 0) === 0; +} +core.startsWith = startsWith; + +var path$2 = {}; + +(function (exports) { + Object.defineProperty(exports, "__esModule", { value: true }); + exports.containsPath = exports.removeTrailingDirectorySeparator = exports.normalizePath = exports.getNormalizedPathComponents = exports.combinePaths = exports.getDirectoryPath = exports.fileExtensionIsOneOf = exports.hasExtension = exports.isRootedDiskPath = exports.directorySeparator = void 0; + const core_1 = core; + /** + * Internally, we represent paths as strings with '/' as the directory separator. + * When we make system calls (eg: LanguageServiceHost.getDirectory()), + * we expect the host to correctly handle paths in our specified format. + */ + exports.directorySeparator = "/"; + const altDirectorySeparator = "\\"; + const urlSchemeSeparator = "://"; + const backslashRegExp = /\\/g; + //// Path Tests + /** + * Determines whether a charCode corresponds to `/` or `\`. + */ + function isAnyDirectorySeparator(charCode) { + return charCode === 47 /* CharacterCodes.slash */ || charCode === 92 /* CharacterCodes.backslash */; + } + /** + * Determines whether a path is an absolute disk path (e.g. starts with `/`, or a dos path + * like `c:`, `c:\` or `c:/`). + */ + function isRootedDiskPath(path) { + return getEncodedRootLength(path) > 0; + } + exports.isRootedDiskPath = isRootedDiskPath; + function hasExtension(fileName) { + return (0, core_1.stringContains)(getBaseFileName(fileName), "."); + } + exports.hasExtension = hasExtension; + function fileExtensionIs(path, extension) { + return path.length > extension.length && (0, core_1.endsWith)(path, extension); + } + function fileExtensionIsOneOf(path, extensions) { + for (const extension of extensions) { + if (fileExtensionIs(path, extension)) { + return true; + } + } + return false; + } + exports.fileExtensionIsOneOf = fileExtensionIsOneOf; + /** + * Determines whether a path has a trailing separator (`/` or `\\`). + */ + function hasTrailingDirectorySeparator(path) { + return path.length > 0 && isAnyDirectorySeparator(path.charCodeAt(path.length - 1)); + } + //// Path Parsing + function isVolumeCharacter(charCode) { + return (charCode >= 97 /* CharacterCodes.a */ && charCode <= 122 /* CharacterCodes.z */) || + (charCode >= 65 /* CharacterCodes.A */ && charCode <= 90 /* CharacterCodes.Z */); + } + function getFileUrlVolumeSeparatorEnd(url, start) { + const ch0 = url.charCodeAt(start); + if (ch0 === 58 /* CharacterCodes.colon */) + return start + 1; + if (ch0 === 37 /* CharacterCodes.percent */ && url.charCodeAt(start + 1) === 51 /* CharacterCodes._3 */) { + const ch2 = url.charCodeAt(start + 2); + if (ch2 === 97 /* CharacterCodes.a */ || ch2 === 65 /* CharacterCodes.A */) + return start + 3; + } + return -1; + } + /** + * Returns length of the root part of a path or URL (i.e. length of "/", "x:/", "//server/share/, file:///user/files"). + * If the root is part of a URL, the twos-complement of the root length is returned. + */ + function getEncodedRootLength(path) { + if (!path) + return 0; + const ch0 = path.charCodeAt(0); + // POSIX or UNC + if (ch0 === 47 /* CharacterCodes.slash */ || ch0 === 92 /* CharacterCodes.backslash */) { + if (path.charCodeAt(1) !== ch0) + return 1; // POSIX: "/" (or non-normalized "\") + const p1 = path.indexOf(ch0 === 47 /* CharacterCodes.slash */ ? exports.directorySeparator : altDirectorySeparator, 2); + if (p1 < 0) + return path.length; // UNC: "//server" or "\\server" + return p1 + 1; // UNC: "//server/" or "\\server\" + } + // DOS + if (isVolumeCharacter(ch0) && path.charCodeAt(1) === 58 /* CharacterCodes.colon */) { + const ch2 = path.charCodeAt(2); + if (ch2 === 47 /* CharacterCodes.slash */ || ch2 === 92 /* CharacterCodes.backslash */) + return 3; // DOS: "c:/" or "c:\" + if (path.length === 2) + return 2; // DOS: "c:" (but not "c:d") + } + // URL + const schemeEnd = path.indexOf(urlSchemeSeparator); + if (schemeEnd !== -1) { + const authorityStart = schemeEnd + urlSchemeSeparator.length; + const authorityEnd = path.indexOf(exports.directorySeparator, authorityStart); + if (authorityEnd !== -1) { // URL: "file:///", "file://server/", "file://server/path" + // For local "file" URLs, include the leading DOS volume (if present). + // Per https://www.ietf.org/rfc/rfc1738.txt, a host of "" or "localhost" is a + // special case interpreted as "the machine from which the URL is being interpreted". + const scheme = path.slice(0, schemeEnd); + const authority = path.slice(authorityStart, authorityEnd); + if (scheme === "file" && (authority === "" || authority === "localhost") && + isVolumeCharacter(path.charCodeAt(authorityEnd + 1))) { + const volumeSeparatorEnd = getFileUrlVolumeSeparatorEnd(path, authorityEnd + 2); + if (volumeSeparatorEnd !== -1) { + if (path.charCodeAt(volumeSeparatorEnd) === 47 /* CharacterCodes.slash */) { + // URL: "file:///c:/", "file://localhost/c:/", "file:///c%3a/", "file://localhost/c%3a/" + return ~(volumeSeparatorEnd + 1); + } + if (volumeSeparatorEnd === path.length) { + // URL: "file:///c:", "file://localhost/c:", "file:///c$3a", "file://localhost/c%3a" + // but not "file:///c:d" or "file:///c%3ad" + return ~volumeSeparatorEnd; + } + } + } + return ~(authorityEnd + 1); // URL: "file://server/", "http://server/" + } + return ~path.length; // URL: "file://server", "http://server" + } + // relative + return 0; + } + /** + * Returns length of the root part of a path or URL (i.e. length of "/", "x:/", "//server/share/, file:///user/files"). + * + * For example: + * ```ts + * getRootLength("a") === 0 // "" + * getRootLength("/") === 1 // "/" + * getRootLength("c:") === 2 // "c:" + * getRootLength("c:d") === 0 // "" + * getRootLength("c:/") === 3 // "c:/" + * getRootLength("c:\\") === 3 // "c:\\" + * getRootLength("//server") === 7 // "//server" + * getRootLength("//server/share") === 8 // "//server/" + * getRootLength("\\\\server") === 7 // "\\\\server" + * getRootLength("\\\\server\\share") === 8 // "\\\\server\\" + * getRootLength("file:///path") === 8 // "file:///" + * getRootLength("file:///c:") === 10 // "file:///c:" + * getRootLength("file:///c:d") === 8 // "file:///" + * getRootLength("file:///c:/path") === 11 // "file:///c:/" + * getRootLength("file://server") === 13 // "file://server" + * getRootLength("file://server/path") === 14 // "file://server/" + * getRootLength("http://server") === 13 // "http://server" + * getRootLength("http://server/path") === 14 // "http://server/" + * ``` + */ + function getRootLength(path) { + const rootLength = getEncodedRootLength(path); + return rootLength < 0 ? ~rootLength : rootLength; + } + function getDirectoryPath(path) { + path = normalizeSlashes(path); + // If the path provided is itself the root, then return it. + const rootLength = getRootLength(path); + if (rootLength === path.length) + return path; + // return the leading portion of the path up to the last (non-terminal) directory separator + // but not including any trailing directory separator. + path = removeTrailingDirectorySeparator(path); + return path.slice(0, Math.max(rootLength, path.lastIndexOf(exports.directorySeparator))); + } + exports.getDirectoryPath = getDirectoryPath; + function getBaseFileName(path, extensions, ignoreCase) { + path = normalizeSlashes(path); + // if the path provided is itself the root, then it has not file name. + const rootLength = getRootLength(path); + if (rootLength === path.length) + return ""; + // return the trailing portion of the path starting after the last (non-terminal) directory + // separator but not including any trailing directory separator. + path = removeTrailingDirectorySeparator(path); + const name = path.slice(Math.max(getRootLength(path), path.lastIndexOf(exports.directorySeparator) + 1)); + const extension = extensions !== undefined && ignoreCase !== undefined ? getAnyExtensionFromPath(name, extensions, ignoreCase) : undefined; + return extension ? name.slice(0, name.length - extension.length) : name; + } + function tryGetExtensionFromPath(path, extension, stringEqualityComparer) { + if (!(0, core_1.startsWith)(extension, ".")) + extension = "." + extension; + if (path.length >= extension.length && path.charCodeAt(path.length - extension.length) === 46 /* CharacterCodes.dot */) { + const pathExtension = path.slice(path.length - extension.length); + if (stringEqualityComparer(pathExtension, extension)) { + return pathExtension; + } + } + } + function getAnyExtensionFromPathWorker(path, extensions, stringEqualityComparer) { + if (typeof extensions === "string") { + return tryGetExtensionFromPath(path, extensions, stringEqualityComparer) || ""; + } + for (const extension of extensions) { + const result = tryGetExtensionFromPath(path, extension, stringEqualityComparer); + if (result) + return result; + } + return ""; + } + function getAnyExtensionFromPath(path, extensions, ignoreCase) { + // Retrieves any string from the final "." onwards from a base file name. + // Unlike extensionFromPath, which throws an exception on unrecognized extensions. + if (extensions) { + return getAnyExtensionFromPathWorker(removeTrailingDirectorySeparator(path), extensions, ignoreCase ? core_1.equateStringsCaseInsensitive : core_1.equateStringsCaseSensitive); + } + const baseFileName = getBaseFileName(path); + const extensionIndex = baseFileName.lastIndexOf("."); + if (extensionIndex >= 0) { + return baseFileName.substring(extensionIndex); + } + return ""; + } + function pathComponents(path, rootLength) { + const root = path.substring(0, rootLength); + const rest = path.substring(rootLength).split(exports.directorySeparator); + if (rest.length && !(0, core_1.lastOrUndefined)(rest)) + rest.pop(); + return [root, ...rest]; + } + /** + * Parse a path into an array containing a root component (at index 0) and zero or more path + * components (at indices > 0). The result is not normalized. + * If the path is relative, the root component is `""`. + * If the path is absolute, the root component includes the first path separator (`/`). + * + * ```ts + * // POSIX + * getPathComponents("/path/to/file.ext") === ["/", "path", "to", "file.ext"] + * getPathComponents("/path/to/") === ["/", "path", "to"] + * getPathComponents("/") === ["/"] + * // DOS + * getPathComponents("c:/path/to/file.ext") === ["c:/", "path", "to", "file.ext"] + * getPathComponents("c:/path/to/") === ["c:/", "path", "to"] + * getPathComponents("c:/") === ["c:/"] + * getPathComponents("c:") === ["c:"] + * // URL + * getPathComponents("http://typescriptlang.org/path/to/file.ext") === ["http://typescriptlang.org/", "path", "to", "file.ext"] + * getPathComponents("http://typescriptlang.org/path/to/") === ["http://typescriptlang.org/", "path", "to"] + * getPathComponents("http://typescriptlang.org/") === ["http://typescriptlang.org/"] + * getPathComponents("http://typescriptlang.org") === ["http://typescriptlang.org"] + * getPathComponents("file://server/path/to/file.ext") === ["file://server/", "path", "to", "file.ext"] + * getPathComponents("file://server/path/to/") === ["file://server/", "path", "to"] + * getPathComponents("file://server/") === ["file://server/"] + * getPathComponents("file://server") === ["file://server"] + * getPathComponents("file:///path/to/file.ext") === ["file:///", "path", "to", "file.ext"] + * getPathComponents("file:///path/to/") === ["file:///", "path", "to"] + * getPathComponents("file:///") === ["file:///"] + * getPathComponents("file://") === ["file://"] + */ + function getPathComponents(path, currentDirectory = "") { + path = combinePaths(currentDirectory, path); + return pathComponents(path, getRootLength(path)); + } + //// Path Formatting + /** + * Formats a parsed path consisting of a root component (at index 0) and zero or more path + * segments (at indices > 0). + * + * ```ts + * getPathFromPathComponents(["/", "path", "to", "file.ext"]) === "/path/to/file.ext" + * ``` + */ + function getPathFromPathComponents(pathComponents) { + if (pathComponents.length === 0) + return ""; + const root = pathComponents[0] && ensureTrailingDirectorySeparator(pathComponents[0]); + return root + pathComponents.slice(1).join(exports.directorySeparator); + } + //// Path Normalization + /** + * Normalize path separators, converting `\` into `/`. + */ + function normalizeSlashes(path) { + return path.indexOf("\\") !== -1 + ? path.replace(backslashRegExp, exports.directorySeparator) + : path; + } + /** + * Reduce an array of path components to a more simplified path by navigating any + * `"."` or `".."` entries in the path. + */ + function reducePathComponents(components) { + if (!(0, core_1.some)(components)) + return []; + const reduced = [components[0]]; + for (let i = 1; i < components.length; i++) { + const component = components[i]; + if (!component) + continue; + if (component === ".") + continue; + if (component === "..") { + if (reduced.length > 1) { + if (reduced[reduced.length - 1] !== "..") { + reduced.pop(); + continue; + } + } + else if (reduced[0]) + continue; + } + reduced.push(component); + } + return reduced; + } + /** + * Combines paths. If a path is absolute, it replaces any previous path. Relative paths are not simplified. + * + * ```ts + * // Non-rooted + * combinePaths("path", "to", "file.ext") === "path/to/file.ext" + * combinePaths("path", "dir", "..", "to", "file.ext") === "path/dir/../to/file.ext" + * // POSIX + * combinePaths("/path", "to", "file.ext") === "/path/to/file.ext" + * combinePaths("/path", "/to", "file.ext") === "/to/file.ext" + * // DOS + * combinePaths("c:/path", "to", "file.ext") === "c:/path/to/file.ext" + * combinePaths("c:/path", "c:/to", "file.ext") === "c:/to/file.ext" + * // URL + * combinePaths("file:///path", "to", "file.ext") === "file:///path/to/file.ext" + * combinePaths("file:///path", "file:///to", "file.ext") === "file:///to/file.ext" + * ``` + */ + function combinePaths(path, ...paths) { + if (path) + path = normalizeSlashes(path); + for (let relativePath of paths) { + if (!relativePath) + continue; + relativePath = normalizeSlashes(relativePath); + if (!path || getRootLength(relativePath) !== 0) { + path = relativePath; + } + else { + path = ensureTrailingDirectorySeparator(path) + relativePath; + } + } + return path; + } + exports.combinePaths = combinePaths; + /** + * Parse a path into an array containing a root component (at index 0) and zero or more path + * components (at indices > 0). The result is normalized. + * If the path is relative, the root component is `""`. + * If the path is absolute, the root component includes the first path separator (`/`). + * + * ```ts + * getNormalizedPathComponents("to/dir/../file.ext", "/path/") === ["/", "path", "to", "file.ext"] + * ``` + */ + function getNormalizedPathComponents(path, currentDirectory) { + return reducePathComponents(getPathComponents(path, currentDirectory)); + } + exports.getNormalizedPathComponents = getNormalizedPathComponents; + function normalizePath(path) { + path = normalizeSlashes(path); + // Most paths don't require normalization + if (!relativePathSegmentRegExp.test(path)) { + return path; + } + // Some paths only require cleanup of `/./` or leading `./` + const simplified = path.replace(/\/\.\//g, "/").replace(/^\.\//, ""); + if (simplified !== path) { + path = simplified; + if (!relativePathSegmentRegExp.test(path)) { + return path; + } + } + // Other paths require full normalization + const normalized = getPathFromPathComponents(reducePathComponents(getPathComponents(path))); + return normalized && hasTrailingDirectorySeparator(path) ? ensureTrailingDirectorySeparator(normalized) : normalized; + } + exports.normalizePath = normalizePath; + function removeTrailingDirectorySeparator(path) { + if (hasTrailingDirectorySeparator(path)) { + return path.substr(0, path.length - 1); + } + return path; + } + exports.removeTrailingDirectorySeparator = removeTrailingDirectorySeparator; + function ensureTrailingDirectorySeparator(path) { + if (!hasTrailingDirectorySeparator(path)) { + return path + exports.directorySeparator; + } + return path; + } + //// Path Comparisons + // check path for these segments: '', '.'. '..' + const relativePathSegmentRegExp = /(?:\/\/)|(?:^|\/)\.\.?(?:$|\/)/; + function containsPath(parent, child, currentDirectory, ignoreCase) { + if (typeof currentDirectory === "string") { + parent = combinePaths(currentDirectory, parent); + child = combinePaths(currentDirectory, child); + } + else if (typeof currentDirectory === "boolean") { + ignoreCase = currentDirectory; + } + if (parent === undefined || child === undefined) + return false; + if (parent === child) + return true; + const parentComponents = reducePathComponents(getPathComponents(parent)); + const childComponents = reducePathComponents(getPathComponents(child)); + if (childComponents.length < parentComponents.length) { + return false; + } + const componentEqualityComparer = ignoreCase ? core_1.equateStringsCaseInsensitive : core_1.equateStringsCaseSensitive; + for (let i = 0; i < parentComponents.length; i++) { + const equalityComparer = i === 0 ? core_1.equateStringsCaseInsensitive : componentEqualityComparer; + if (!equalityComparer(parentComponents[i], childComponents[i])) { + return false; + } + } + return true; + } + exports.containsPath = containsPath; + +} (path$2)); + +Object.defineProperty(utilities, "__esModule", { value: true }); +utilities.matchFiles = void 0; +const core_1 = core; +const path_1 = path$2; +// KLUDGE: Don't assume one 'node_modules' links to another. More likely a single directory inside the node_modules is the symlink. +// ALso, don't assume that an `@foo` directory is linked. More likely the contents of that are linked. +// Reserved characters, forces escaping of any non-word (or digit), non-whitespace character. +// It may be inefficient (we could just match (/[-[\]{}()*+?.,\\^$|#\s]/g), but this is future +// proof. +const reservedCharacterPattern = /[^\w\s\/]/g; +const wildcardCharCodes = [42 /* CharacterCodes.asterisk */, 63 /* CharacterCodes.question */]; +const commonPackageFolders = ["node_modules", "bower_components", "jspm_packages"]; +const implicitExcludePathRegexPattern = `(?!(${commonPackageFolders.join("|")})(/|$))`; +const filesMatcher = { + /** + * Matches any single directory segment unless it is the last segment and a .min.js file + * Breakdown: + * [^./] # matches everything up to the first . character (excluding directory separators) + * (\\.(?!min\\.js$))? # matches . characters but not if they are part of the .min.js file extension + */ + singleAsteriskRegexFragment: "([^./]|(\\.(?!min\\.js$))?)*", + /** + * Regex for the ** wildcard. Matches any number of subdirectories. When used for including + * files or directories, does not match subdirectories that start with a . character + */ + doubleAsteriskRegexFragment: `(/${implicitExcludePathRegexPattern}[^/.][^/]*)*?`, + replaceWildcardCharacter: match => replaceWildcardCharacter(match, filesMatcher.singleAsteriskRegexFragment) +}; +const directoriesMatcher = { + singleAsteriskRegexFragment: "[^/]*", + /** + * Regex for the ** wildcard. Matches any number of subdirectories. When used for including + * files or directories, does not match subdirectories that start with a . character + */ + doubleAsteriskRegexFragment: `(/${implicitExcludePathRegexPattern}[^/.][^/]*)*?`, + replaceWildcardCharacter: match => replaceWildcardCharacter(match, directoriesMatcher.singleAsteriskRegexFragment) +}; +const excludeMatcher = { + singleAsteriskRegexFragment: "[^/]*", + doubleAsteriskRegexFragment: "(/.+?)?", + replaceWildcardCharacter: match => replaceWildcardCharacter(match, excludeMatcher.singleAsteriskRegexFragment) +}; +const wildcardMatchers = { + files: filesMatcher, + directories: directoriesMatcher, + exclude: excludeMatcher +}; +function getRegularExpressionForWildcard(specs, basePath, usage) { + const patterns = getRegularExpressionsForWildcards(specs, basePath, usage); + if (!patterns || !patterns.length) { + return undefined; + } + const pattern = patterns.map(pattern => `(${pattern})`).join("|"); + // If excluding, match "foo/bar/baz...", but if including, only allow "foo". + const terminator = usage === "exclude" ? "($|/)" : "$"; + return `^(${pattern})${terminator}`; +} +function getRegularExpressionsForWildcards(specs, basePath, usage) { + if (specs === undefined || specs.length === 0) { + return undefined; + } + return (0, core_1.flatMap)(specs, spec => spec && getSubPatternFromSpec(spec, basePath, usage, wildcardMatchers[usage])); +} +/** + * An "includes" path "foo" is implicitly a glob "foo/** /*" (without the space) if its last component has no extension, + * and does not contain any glob characters itself. + */ +function isImplicitGlob(lastPathComponent) { + return !/[.*?]/.test(lastPathComponent); +} +function getSubPatternFromSpec(spec, basePath, usage, { singleAsteriskRegexFragment, doubleAsteriskRegexFragment, replaceWildcardCharacter }) { + let subpattern = ""; + let hasWrittenComponent = false; + const components = (0, path_1.getNormalizedPathComponents)(spec, basePath); + const lastComponent = (0, core_1.last)(components); + if (usage !== "exclude" && lastComponent === "**") { + return undefined; + } + // getNormalizedPathComponents includes the separator for the root component. + // We need to remove to create our regex correctly. + components[0] = (0, path_1.removeTrailingDirectorySeparator)(components[0]); + if (isImplicitGlob(lastComponent)) { + components.push("**", "*"); + } + let optionalCount = 0; + for (let component of components) { + if (component === "**") { + subpattern += doubleAsteriskRegexFragment; + } + else { + if (usage === "directories") { + subpattern += "("; + optionalCount++; + } + if (hasWrittenComponent) { + subpattern += path_1.directorySeparator; + } + if (usage !== "exclude") { + let componentPattern = ""; + // The * and ? wildcards should not match directories or files that start with . if they + // appear first in a component. Dotted directories and files can be included explicitly + // like so: **/.*/.* + if (component.charCodeAt(0) === 42 /* CharacterCodes.asterisk */) { + componentPattern += "([^./]" + singleAsteriskRegexFragment + ")?"; + component = component.substr(1); + } + else if (component.charCodeAt(0) === 63 /* CharacterCodes.question */) { + componentPattern += "[^./]"; + component = component.substr(1); + } + componentPattern += component.replace(reservedCharacterPattern, replaceWildcardCharacter); + // Patterns should not include subfolders like node_modules unless they are + // explicitly included as part of the path. + // + // As an optimization, if the component pattern is the same as the component, + // then there definitely were no wildcard characters and we do not need to + // add the exclusion pattern. + if (componentPattern !== component) { + subpattern += implicitExcludePathRegexPattern; + } + subpattern += componentPattern; + } + else { + subpattern += component.replace(reservedCharacterPattern, replaceWildcardCharacter); + } + } + hasWrittenComponent = true; + } + while (optionalCount > 0) { + subpattern += ")?"; + optionalCount--; + } + return subpattern; +} +function replaceWildcardCharacter(match, singleAsteriskRegexFragment) { + return match === "*" ? singleAsteriskRegexFragment : match === "?" ? "[^/]" : "\\" + match; +} +/** @param path directory of the tsconfig.json */ +function getFileMatcherPatterns(path, excludes, includes, useCaseSensitiveFileNames, currentDirectory) { + path = (0, path_1.normalizePath)(path); + currentDirectory = (0, path_1.normalizePath)(currentDirectory); + const absolutePath = (0, path_1.combinePaths)(currentDirectory, path); + return { + includeFilePatterns: (0, core_1.map)(getRegularExpressionsForWildcards(includes, absolutePath, "files"), pattern => `^${pattern}$`), + includeFilePattern: getRegularExpressionForWildcard(includes, absolutePath, "files"), + includeDirectoryPattern: getRegularExpressionForWildcard(includes, absolutePath, "directories"), + excludePattern: getRegularExpressionForWildcard(excludes, absolutePath, "exclude"), + basePaths: getBasePaths(path, includes, useCaseSensitiveFileNames) + }; +} +function getRegexFromPattern(pattern, useCaseSensitiveFileNames) { + return new RegExp(pattern, useCaseSensitiveFileNames ? "" : "i"); +} +/** @param path directory of the tsconfig.json */ +function matchFiles(path, extensions, excludes, includes, useCaseSensitiveFileNames, currentDirectory, depth, getFileSystemEntries, realpath) { + path = (0, path_1.normalizePath)(path); + currentDirectory = (0, path_1.normalizePath)(currentDirectory); + const patterns = getFileMatcherPatterns(path, excludes, includes, useCaseSensitiveFileNames, currentDirectory); + const includeFileRegexes = patterns.includeFilePatterns && patterns.includeFilePatterns.map(pattern => getRegexFromPattern(pattern, useCaseSensitiveFileNames)); + const includeDirectoryRegex = patterns.includeDirectoryPattern && getRegexFromPattern(patterns.includeDirectoryPattern, useCaseSensitiveFileNames); + const excludeRegex = patterns.excludePattern && getRegexFromPattern(patterns.excludePattern, useCaseSensitiveFileNames); + // Associate an array of results with each include regex. This keeps results in order of the "include" order. + // If there are no "includes", then just put everything in results[0]. + const results = includeFileRegexes ? includeFileRegexes.map(() => []) : [[]]; + const visited = new Map(); + const toCanonical = (0, core_1.createGetCanonicalFileName)(useCaseSensitiveFileNames); + for (const basePath of patterns.basePaths) { + visitDirectory(basePath, (0, path_1.combinePaths)(currentDirectory, basePath), depth); + } + return (0, core_1.flatten)(results); + function visitDirectory(path, absolutePath, depth) { + const canonicalPath = toCanonical(realpath(absolutePath)); + if (visited.has(canonicalPath)) + return; + visited.set(canonicalPath, true); + const { files, directories } = getFileSystemEntries(path); + for (const current of (0, core_1.sort)(files, core_1.compareStringsCaseSensitive)) { + const name = (0, path_1.combinePaths)(path, current); + const absoluteName = (0, path_1.combinePaths)(absolutePath, current); + if (extensions && !(0, path_1.fileExtensionIsOneOf)(name, extensions)) + continue; + if (excludeRegex && excludeRegex.test(absoluteName)) + continue; + if (!includeFileRegexes) { + results[0].push(name); + } + else { + const includeIndex = (0, core_1.findIndex)(includeFileRegexes, re => re.test(absoluteName)); + if (includeIndex !== -1) { + results[includeIndex].push(name); + } + } + } + if (depth !== undefined) { + depth--; + if (depth === 0) { + return; + } + } + for (const current of (0, core_1.sort)(directories, core_1.compareStringsCaseSensitive)) { + const name = (0, path_1.combinePaths)(path, current); + const absoluteName = (0, path_1.combinePaths)(absolutePath, current); + if ((!includeDirectoryRegex || includeDirectoryRegex.test(absoluteName)) && + (!excludeRegex || !excludeRegex.test(absoluteName))) { + visitDirectory(name, absoluteName, depth); + } + } + } +} +utilities.matchFiles = matchFiles; +/** + * Computes the unique non-wildcard base paths amongst the provided include patterns. + */ +function getBasePaths(path, includes, useCaseSensitiveFileNames) { + // Storage for our results in the form of literal paths (e.g. the paths as written by the user). + const basePaths = [path]; + if (includes) { + // Storage for literal base paths amongst the include patterns. + const includeBasePaths = []; + for (const include of includes) { + // We also need to check the relative paths by converting them to absolute and normalizing + // in case they escape the base path (e.g "..\somedirectory") + const absolute = (0, path_1.isRootedDiskPath)(include) ? include : (0, path_1.normalizePath)((0, path_1.combinePaths)(path, include)); + // Append the literal and canonical candidate base paths. + includeBasePaths.push(getIncludeBasePath(absolute)); + } + // Sort the offsets array using either the literal or canonical path representations. + includeBasePaths.sort((0, core_1.getStringComparer)(!useCaseSensitiveFileNames)); + // Iterate over each include base path and include unique base paths that are not a + // subpath of an existing base path + for (const includeBasePath of includeBasePaths) { + if ((0, core_1.every)(basePaths, basePath => !(0, path_1.containsPath)(basePath, includeBasePath, path, !useCaseSensitiveFileNames))) { + basePaths.push(includeBasePath); + } + } + } + return basePaths; +} +function getIncludeBasePath(absolute) { + const wildcardOffset = (0, core_1.indexOfAnyCharCode)(absolute, wildcardCharCodes); + if (wildcardOffset < 0) { + // No "*" or "?" in the path + return !(0, path_1.hasExtension)(absolute) + ? absolute + : (0, path_1.removeTrailingDirectorySeparator)((0, path_1.getDirectoryPath)(absolute)); + } + return absolute.substring(0, absolute.lastIndexOf(path_1.directorySeparator, wildcardOffset)); +} + +Object.defineProperty(languageServiceHost, "__esModule", { value: true }); +languageServiceHost.createLanguageServiceHost = void 0; +const path$1 = pathBrowserify; +const utilities_1$1 = utilities; +const fileVersions = new Map(); +function createLanguageServiceHost(ctx, ts, sys) { + let lastProjectVersion; + let tsProjectVersion = 0; + let tsFileNames = []; + let tsDirectories = new Set(); + const _tsHost = { + ...sys, + getCurrentDirectory: () => ctx.host.workspacePath, + getCompilationSettings: () => ctx.host.getCompilationSettings(), + getCancellationToken: ctx.host.getCancellationToken ? () => ctx.host.getCancellationToken() : undefined, + getLocalizedDiagnosticMessages: ctx.host.getLocalizedDiagnosticMessages ? () => ctx.host.getLocalizedDiagnosticMessages() : undefined, + getProjectReferences: ctx.host.getProjectReferences ? () => ctx.host.getProjectReferences() : undefined, + getDefaultLibFileName: (options) => { + try { + return ts.getDefaultLibFilePath(options); + } + catch { + // web + return `/node_modules/typescript/lib/${ts.getDefaultLibFileName(options)}`; + } + }, + useCaseSensitiveFileNames: () => sys.useCaseSensitiveFileNames, + getNewLine: () => sys.newLine, + readFile: fileName => { + const snapshot = getScriptSnapshot(fileName); + if (snapshot) { + return snapshot.getText(0, snapshot.getLength()); + } + }, + readDirectory, + getDirectories, + directoryExists, + fileExists, + getProjectVersion: () => { + return tsProjectVersion + ':' + sys.version; + }, + getTypeRootsVersion: () => { + return sys.version ?? -1; // TODO: only update for /node_modules changes? + }, + getScriptFileNames: () => tsFileNames, + getScriptVersion, + getScriptSnapshot, + getScriptKind(fileName) { + if (ts) { + if (ctx.virtualFiles.hasSource(fileName)) + return ts.ScriptKind.Deferred; + switch (path$1.extname(fileName)) { + case '.js': return ts.ScriptKind.JS; + case '.cjs': return ts.ScriptKind.JS; + case '.mjs': return ts.ScriptKind.JS; + case '.jsx': return ts.ScriptKind.JSX; + case '.ts': return ts.ScriptKind.TS; + case '.cts': return ts.ScriptKind.TS; + case '.mts': return ts.ScriptKind.TS; + case '.tsx': return ts.ScriptKind.TSX; + case '.json': return ts.ScriptKind.JSON; + default: return ts.ScriptKind.Unknown; + } + } + return 0; + }, + }; + const fsFileSnapshots = new Map(); + if (ctx.host.resolveModuleName) { + // TODO: can this share between monorepo packages? + const moduleCache = ts.createModuleResolutionCache(_tsHost.getCurrentDirectory(), _tsHost.useCaseSensitiveFileNames ? s => s : s => s.toLowerCase(), _tsHost.getCompilationSettings()); + let lastSysVersion = sys.version; + _tsHost.resolveModuleNameLiterals = (moduleLiterals, containingFile, redirectedReference, options, sourceFile) => { + if (lastSysVersion !== sys.version) { + lastSysVersion = sys.version; + moduleCache.clear(); + } + return moduleLiterals.map((moduleLiteral) => { + let moduleName = moduleLiteral.text; + moduleName = ctx.host.resolveModuleName(moduleName, sourceFile.impliedNodeFormat); + return ts.resolveModuleName(moduleName, containingFile, options, _tsHost, moduleCache, redirectedReference, sourceFile.impliedNodeFormat); + }); + }; + _tsHost.resolveModuleNames = (moduleNames, containingFile, _reusedNames, redirectedReference, options, sourceFile) => { + if (lastSysVersion !== sys.version) { + lastSysVersion = sys.version; + moduleCache.clear(); + } + return moduleNames.map((moduleName) => { + moduleName = ctx.host.resolveModuleName(moduleName, sourceFile?.impliedNodeFormat); + return ts.resolveModuleName(moduleName, containingFile, options, _tsHost, moduleCache, redirectedReference, sourceFile?.impliedNodeFormat).resolvedModule; + }); + }; + } + let oldTsVirtualFileSnapshots = new Set(); + let oldOtherVirtualFileSnapshots = new Set(); + return new Proxy(_tsHost, { + get: (target, property) => { + sync(); + return target[property]; + }, + }); + function sync() { + const newProjectVersion = ctx.host.getProjectVersion(); + const shouldUpdate = newProjectVersion !== lastProjectVersion; + if (!shouldUpdate) + return; + lastProjectVersion = newProjectVersion; + const newTsVirtualFileSnapshots = new Set(); + const newOtherVirtualFileSnapshots = new Set(); + for (const { root } of ctx.virtualFiles.allSources()) { + forEachEmbeddedFile(root, embedded => { + if (embedded.kind === 1) { + newTsVirtualFileSnapshots.add(embedded.snapshot); + } + else { + newOtherVirtualFileSnapshots.add(embedded.snapshot); + } + }); + } + if (!setEquals(oldTsVirtualFileSnapshots, newTsVirtualFileSnapshots)) { + tsProjectVersion++; + } + else if (setEquals(oldOtherVirtualFileSnapshots, newOtherVirtualFileSnapshots)) { + // no any meta language files update, it mean project version was update by source files this time + tsProjectVersion++; + } + oldTsVirtualFileSnapshots = newTsVirtualFileSnapshots; + oldOtherVirtualFileSnapshots = newOtherVirtualFileSnapshots; + const tsFileNamesSet = new Set(); + for (const { root } of ctx.virtualFiles.allSources()) { + forEachEmbeddedFile(root, embedded => { + if (embedded.kind === 1) { + tsFileNamesSet.add(embedded.fileName); // virtual .ts + } + }); + } + for (const fileName of ctx.host.getScriptFileNames()) { + if (!ctx.virtualFiles.hasSource(fileName)) { + tsFileNamesSet.add(fileName); // .ts + } + } + tsFileNames = [...tsFileNamesSet]; + // Update tsDirectories for `directoryExists()` + tsDirectories.clear(); + for (const fileName of tsFileNames) { + tsDirectories.add(path$1.dirname(normalizePath(fileName))); + } + } + function readDirectory(dirName, extensions, excludes, includes, depth) { + let matches = (0, utilities_1$1.matchFiles)(dirName, extensions, excludes, includes, sys?.useCaseSensitiveFileNames ?? false, ctx.host.workspacePath, depth, (dirPath) => { + const files = []; + for (const fileName of tsFileNames) { + if (fileName.toLowerCase().startsWith(dirPath.toLowerCase())) { + const baseName = fileName.substring(dirPath.length); + if (baseName.indexOf('/') === -1) { + files.push(baseName); + } + } + } + return { + files, + directories: getVirtualFileDirectories(dirPath), + }; + }, sys?.realpath ? (path => sys.realpath(path)) : (path => path)); + matches = matches.map(match => { + const [_, source] = ctx.virtualFiles.getVirtualFile(match); + if (source) { + return source.fileName; + } + return match; + }); + return [...new Set([ + ...matches, + ...sys.readDirectory(dirName, extensions, excludes, includes, depth), + ])]; + } + function getDirectories(dirName) { + return [...new Set([ + ...getVirtualFileDirectories(dirName), + ...sys.getDirectories(dirName), + ])]; + } + function getVirtualFileDirectories(dirName) { + const names = new Set(); + for (const fileName of tsFileNames) { + if (fileName.toLowerCase().startsWith(dirName.toLowerCase())) { + const path = fileName.substring(dirName.length); + if (path.indexOf('/') >= 0) { + names.add(path.split('/')[0]); + } + } + } + return [...names]; + } + function getScriptSnapshot(fileName) { + // virtual files + const [virtualFile] = ctx.virtualFiles.getVirtualFile(fileName); + if (virtualFile) { + return virtualFile.snapshot; + } + // root files / opened files + const tsScript = ctx.host.getScriptSnapshot(fileName); + if (tsScript) { + return tsScript; + } + // fs files + const cache = fsFileSnapshots.get(fileName); + const modifiedTime = sys.getModifiedTime?.(fileName)?.valueOf(); + if (!cache || cache[0] !== modifiedTime) { + if (sys.fileExists(fileName)) { + const text = sys.readFile(fileName); + const snapshot = text !== undefined ? ts.ScriptSnapshot.fromString(text) : undefined; + fsFileSnapshots.set(fileName, [modifiedTime, snapshot]); + } + else { + fsFileSnapshots.set(fileName, [modifiedTime, undefined]); + } + } + return fsFileSnapshots.get(fileName)?.[1]; + } + function getScriptVersion(fileName) { + // virtual files / root files / opened files + const [virtualFile] = ctx.virtualFiles.getVirtualFile(fileName); + const snapshot = virtualFile?.snapshot ?? ctx.host.getScriptSnapshot(fileName); + if (snapshot) { + if (!fileVersions.has(fileName)) { + fileVersions.set(fileName, { lastVersion: 0, snapshotVersions: new WeakMap() }); + } + const version = fileVersions.get(fileName); + if (!version.snapshotVersions.has(snapshot)) { + version.snapshotVersions.set(snapshot, version.lastVersion++); + } + return version.snapshotVersions.get(snapshot).toString(); + } + // fs files + return sys.getModifiedTime?.(fileName)?.valueOf().toString() ?? ''; + } + function directoryExists(dirName) { + return tsDirectories.has(normalizePath(dirName)) || sys.directoryExists(dirName); + } + function fileExists(fileName) { + // fill external virtual files + const ext = fileName.substring(fileName.lastIndexOf('.')); + if (ext === '.js' + || ext === '.ts' + || ext === '.jsx' + || ext === '.tsx') { + /** + * If try to access a external .vue file that outside of the project, + * the file will not process by language service host, + * so virtual file will not be created. + * + * We try to create virtual file here. + */ + const sourceFileName = fileName.substring(0, fileName.lastIndexOf('.')); + if (!ctx.virtualFiles.hasSource(sourceFileName)) { + const scriptSnapshot = getScriptSnapshot(sourceFileName); + if (scriptSnapshot) { + ctx.virtualFiles.updateSource(sourceFileName, scriptSnapshot, ctx.host.getLanguageId?.(sourceFileName)); + } + } + } + // virtual files + if (ctx.virtualFiles.hasVirtualFile(fileName)) { + return true; + } + // root files + if (ctx.host.getScriptSnapshot(fileName)) { + return true; + } + // fs files + return !!sys.fileExists(fileName); + } +} +languageServiceHost.createLanguageServiceHost = createLanguageServiceHost; +function setEquals(a, b) { + if (a.size !== b.size) + return false; + for (const item of a) { + if (!b.has(item)) + return false; + } + return true; +} +function forEachEmbeddedFile(file, cb) { + cb(file); + for (const embeddedFile of file.embeddedFiles) { + forEachEmbeddedFile(embeddedFile, cb); + } +} +function normalizePath(fileName) { + return fileName.replace(/\\/g, '/').toLowerCase(); +} + +var sys = {}; + +Object.defineProperty(sys, "__esModule", { value: true }); +sys.createSys = void 0; +const path = pathBrowserify; +const utilities_1 = utilities; +let currentCwd = ''; +function createSys(ts, env) { + let version = 0; + const rootPath = env.uriToFileName(env.workspaceUri.toString()); + const sys = ts.sys; + const root = { + dirs: new Map(), + files: new Map(), + requestedRead: false, + }; + const promises = new Set(); + const fileWatcher = env.onDidChangeWatchedFiles?.(({ changes }) => { + for (const change of changes) { + const fileName = env.uriToFileName(change.uri); + const dirName = path.dirname(fileName); + const baseName = path.basename(fileName); + const dir = getDir(dirName); + if (dir.files.has(baseName)) { // is requested file + version++; + if (change.type === 1 || change.type === 2) { + dir.files.set(baseName, { + stat: { + type: 1, + ctime: Date.now(), + mtime: Date.now(), + size: -1, + }, + requestedStat: false, + }); + } + else if (change.type === 3) { + dir.files.set(baseName, { + stat: undefined, + text: undefined, + requestedStat: true, + requestedText: true, + }); + } + } + } + }); + return { + get version() { + return version; + }, + dispose() { + fileWatcher?.dispose(); + }, + args: sys?.args ?? [], + newLine: sys?.newLine ?? '\n', + useCaseSensitiveFileNames: sys?.useCaseSensitiveFileNames ?? false, + realpath: sys?.realpath, + write: sys?.write ?? (() => { }), + writeFile: sys?.writeFile ?? (() => { }), + createDirectory: sys?.createDirectory ?? (() => { }), + exit: sys?.exit ?? (() => { }), + getExecutingFilePath: sys?.getExecutingFilePath ?? (() => rootPath + '/__fake__.js'), + getCurrentDirectory: () => rootPath, + getModifiedTime, + readFile, + readDirectory, + getDirectories, + resolvePath, + fileExists, + directoryExists, + async sync() { + while (promises.size) { + await Promise.all(promises); + } + return version; + }, + }; + function resolvePath(fsPath) { + if (sys) { + if (currentCwd !== rootPath) { + currentCwd = rootPath; + // https://github.com/vuejs/language-tools/issues/2039 + // https://github.com/vuejs/language-tools/issues/2234 + if (sys.directoryExists(rootPath)) { + // https://github.com/vuejs/language-tools/issues/2480 + try { + // @ts-expect-error + process.chdir(rootPath); + } + catch { } + } + } + return sys.resolvePath(fsPath).replace(/\\/g, '/'); + } + return path.resolve(fsPath).replace(/\\/g, '/'); + } + function readFile(fileName, encoding) { + fileName = resolvePath(fileName); + const dirPath = path.dirname(fileName); + const dir = getDir(dirPath); + const name = path.basename(fileName); + readFileWorker(fileName, encoding, dir); + return dir.files.get(name)?.text; + } + function directoryExists(dirName) { + dirName = resolvePath(dirName); + const dir = getDir(dirName); + if (dir.exists === undefined) { + dir.exists = false; + const result = env.fs?.stat(env.fileNameToUri(dirName)); + if (typeof result === 'object' && 'then' in result) { + const promise = result; + promises.add(promise); + result.then(result => { + promises.delete(promise); + dir.exists = result?.type === 2; + if (dir.exists) { + version++; + } + }); + } + else { + dir.exists = result?.type === 2; + } + } + return dir.exists; + } + function getModifiedTime(fileName) { + fileName = resolvePath(fileName); + const file = getFile(fileName); + if (!file.requestedStat) { + file.requestedStat = true; + handleStat(fileName, file); + } + return file.stat ? new Date(file.stat.mtime) : new Date(0); + } + function fileExists(fileName) { + fileName = resolvePath(fileName); + const file = getFile(fileName); + const exists = () => file.text !== undefined || file.stat?.type === 1; + if (exists()) { + return true; + } + if (!file.requestedStat) { + file.requestedStat = true; + handleStat(fileName, file); + } + return exists(); + } + function handleStat(fileName, file) { + const result = env.fs?.stat(env.fileNameToUri(fileName)); + if (typeof result === 'object' && 'then' in result) { + const promise = result; + promises.add(promise); + result.then(result => { + promises.delete(promise); + if (file.stat?.type !== result?.type || file.stat?.mtime !== result?.mtime) { + version++; + } + file.stat = result; + }); + } + else { + file.stat = result; + } + } + function getFile(fileName) { + fileName = resolvePath(fileName); + const dirPath = path.dirname(fileName); + const baseName = path.basename(fileName); + const dir = getDir(dirPath); + let file = dir.files.get(baseName); + if (!file) { + dir.files.set(baseName, file = {}); + } + return file; + } + // for import path completion + function getDirectories(dirName) { + dirName = resolvePath(dirName); + readDirectoryWorker(dirName); + const dir = getDir(dirName); + return [...dir.dirs.entries()].filter(([_, dir]) => dir.exists).map(([name]) => name); + } + function readDirectory(dirName, extensions, excludes, includes, depth) { + dirName = resolvePath(dirName); + const matches = (0, utilities_1.matchFiles)(dirName, extensions, excludes, includes, sys?.useCaseSensitiveFileNames ?? false, rootPath, depth, (dirPath) => { + dirPath = resolvePath(dirPath); + readDirectoryWorker(dirPath); + const dir = getDir(dirPath); + return { + files: [...dir.files.entries()].filter(([_, file]) => file.stat?.type === 1).map(([name]) => name), + directories: [...dir.dirs.entries()].filter(([_, dir]) => dir.exists).map(([name]) => name), + }; + }, sys?.realpath ? (path => sys.realpath(path)) : (path => path)); + return [...new Set(matches)]; + } + function readFileWorker(fileName, encoding, dir) { + const name = path.basename(fileName); + let file = dir.files.get(name); + if (!file) { + dir.files.set(name, file = {}); + } + if (file.requestedText) { + return; + } + file.requestedText = true; + const uri = env.fileNameToUri(fileName); + const result = env.fs?.readFile(uri, encoding); + if (typeof result === 'object' && 'then' in result) { + const promise = result; + promises.add(promise); + result.then(result => { + promises.delete(promise); + if (result !== undefined) { + file.text = result; + if (file.stat) { + file.stat.mtime++; + } + version++; + } + }); + } + else if (result !== undefined) { + file.text = result; + } + } + function readDirectoryWorker(dirName) { + const dir = getDir(dirName); + if (dir.requestedRead) { + return; + } + dir.requestedRead = true; + const result = env.fs?.readDirectory(env.fileNameToUri(dirName || '.')); + if (typeof result === 'object' && 'then' in result) { + const promise = result; + promises.add(promise); + result.then((result) => { + promises.delete(promise); + if (onReadDirectoryResult(dirName, dir, result)) { + version++; + } + }); + } + else { + onReadDirectoryResult(dirName, dir, result ?? []); + } + } + function onReadDirectoryResult(dirName, dir, result) { + // See https://github.com/microsoft/TypeScript/blob/e1a9290051a3b0cbdfbadc3adbcc155a4641522a/src/compiler/sys.ts#L1853-L1857 + result = result.filter(([name]) => name !== '.' && name !== '..'); + let updated = false; + for (const [name, _fileType] of result) { + let fileType = _fileType; + if (fileType === 64) { + const stat = env.fs?.stat(env.fileNameToUri(dirName + '/' + name)); + if (typeof stat === 'object' && 'then' in stat) { + const promise = stat; + promises.add(promise); + stat.then((stat) => { + promises.delete(promise); + if (stat?.type === 1) { + let file = dir.files.get(name); + if (!file) { + dir.files.set(name, file = {}); + } + if (stat.type !== file.stat?.type || stat.mtime !== file.stat?.mtime) { + version++; + } + file.stat = stat; + file.requestedStat = true; + } + else if (stat?.type === 2) { + const childDir = getDirFromDir(dir, name); + if (!childDir.exists) { + childDir.exists = true; + version++; + } + } + }); + } + else if (stat) { + fileType = stat.type; + } + } + if (fileType === 1) { + let file = dir.files.get(name); + if (!file) { + dir.files.set(name, file = {}); + } + if (!file.stat) { + file.stat = { + type: 1, + mtime: 0, + ctime: 0, + size: 0, + }; + updated = true; + } + } + else if (fileType === 2) { + const childDir = getDirFromDir(dir, name); + if (!childDir.exists) { + childDir.exists = true; + updated = true; + } + } + } + return updated; + } + function getDir(dirName) { + const dirNames = []; + let currentDirPath = dirName; + let currentDirName = path.basename(currentDirPath); + let lastDirPath; + while (lastDirPath !== currentDirPath) { + lastDirPath = currentDirPath; + dirNames.push(currentDirName); + currentDirPath = path.dirname(currentDirPath); + currentDirName = path.basename(currentDirPath); + } + let currentDir = root; + for (let i = dirNames.length - 1; i >= 0; i--) { + const nextDirName = dirNames[i]; + currentDir = getDirFromDir(currentDir, nextDirName); + } + return currentDir; + } + function getDirFromDir(dir, name) { + let target = dir.dirs.get(name); + if (!target) { + dir.dirs.set(name, target = { + dirs: new Map(), + files: new Map(), + }); + } + return target; + } +} +sys.createSys = createSys; + +var getProgram$1 = {}; + +Object.defineProperty(getProgram$1, "__esModule", { value: true }); +getProgram$1.getProgram = void 0; +function getProgram(ts, core, ls, sys) { + const proxy = { + getRootFileNames, + emit, + getSyntacticDiagnostics, + getSemanticDiagnostics, + getGlobalDiagnostics, + // @ts-expect-error + getBindAndCheckDiagnostics, + }; + return new Proxy({}, { + get: (target, property) => { + if (property in proxy) { + return proxy[property]; + } + const program = getProgram(); + if (property in program) { + return program[property]; + } + return target[property]; + }, + // #17 + // notice: https://github.com/vuejs/language-tools/issues/2403 + set: (target, property, newValue) => { + const program = getProgram(); + target[property] = program[property] = newValue; + return true; + }, + }); + function getProgram() { + return ls.getProgram(); + } + function getRootFileNames() { + return getProgram().getRootFileNames().filter(fileName => sys.fileExists?.(fileName)); + } + // for vue-tsc --noEmit --watch + function getBindAndCheckDiagnostics(sourceFile, cancellationToken) { + return getSourceFileDiagnosticsWorker(sourceFile, cancellationToken, 'getBindAndCheckDiagnostics'); + } + // for vue-tsc --noEmit + function getSyntacticDiagnostics(sourceFile, cancellationToken) { + return getSourceFileDiagnosticsWorker(sourceFile, cancellationToken, 'getSyntacticDiagnostics'); + } + function getSemanticDiagnostics(sourceFile, cancellationToken) { + return getSourceFileDiagnosticsWorker(sourceFile, cancellationToken, 'getSemanticDiagnostics'); + } + function getSourceFileDiagnosticsWorker(sourceFile, cancellationToken, api) { + if (sourceFile) { + const [virtualFile, source] = core.virtualFiles.getVirtualFile(sourceFile.fileName); + if (virtualFile && source) { + if (!virtualFile.capabilities.diagnostic) + return []; + const errors = transformDiagnostics(ls.getProgram()?.[api](sourceFile, cancellationToken) ?? []); + return errors; + } + } + return transformDiagnostics(getProgram()[api](sourceFile, cancellationToken) ?? []); + } + function getGlobalDiagnostics(cancellationToken) { + return transformDiagnostics(getProgram().getGlobalDiagnostics(cancellationToken) ?? []); + } + function emit(targetSourceFile, _writeFile, cancellationToken, emitOnlyDtsFiles, customTransformers) { + const scriptResult = getProgram().emit(targetSourceFile, (sys.writeFile ?? ts.sys.writeFile), cancellationToken, emitOnlyDtsFiles, customTransformers); + return { + emitSkipped: scriptResult.emitSkipped, + emittedFiles: scriptResult.emittedFiles, + diagnostics: transformDiagnostics(scriptResult.diagnostics), + }; + } + // transform + function transformDiagnostics(diagnostics) { + const result = []; + for (const diagnostic of diagnostics) { + if (diagnostic.file !== undefined + && diagnostic.start !== undefined + && diagnostic.length !== undefined) { + const [virtualFile, source] = core.virtualFiles.getVirtualFile(diagnostic.file.fileName); + if (virtualFile && source) { + if (sys.fileExists?.(source.fileName) === false) + continue; + for (const [_, [sourceSnapshot, map]] of core.virtualFiles.getMaps(virtualFile)) { + if (sourceSnapshot !== source.snapshot) + continue; + for (const start of map.toSourceOffsets(diagnostic.start)) { + const reportStart = typeof start[1].data.diagnostic === 'object' ? start[1].data.diagnostic.shouldReport() : !!start[1].data.diagnostic; + if (!reportStart) + continue; + for (const end of map.toSourceOffsets(diagnostic.start + diagnostic.length, true)) { + const reportEnd = typeof end[1].data.diagnostic === 'object' ? end[1].data.diagnostic.shouldReport() : !!end[1].data.diagnostic; + if (!reportEnd) + continue; + onMapping(diagnostic, source.fileName, start[0], end[0], source.snapshot.getText(0, source.snapshot.getLength())); + break; + } + break; + } + } + } + else { + if (sys.fileExists?.(diagnostic.file.fileName) === false) + continue; + onMapping(diagnostic, diagnostic.file.fileName, diagnostic.start, diagnostic.start + diagnostic.length, diagnostic.file.text); + } + } + else if (diagnostic.file === undefined) { + result.push(diagnostic); + } + } + return result; + function onMapping(diagnostic, fileName, start, end, docText) { + let file = fileName === diagnostic.file?.fileName + ? diagnostic.file + : undefined; + if (!file) { + if (docText === undefined) { + const snapshot = core.host.getScriptSnapshot(fileName); + if (snapshot) { + docText = snapshot.getText(0, snapshot.getLength()); + } + } + else { + file = ts.createSourceFile(fileName, docText, ts.ScriptTarget.Latest, undefined, ts.ScriptKind.Deferred); + // fix https://github.com/vuejs/language-tools/issues/2622 for TS 5.0 + file.originalFileName = fileName; + file.path = fileName.toLowerCase(); + file.resolvedPath = fileName.toLowerCase(); + } + } + const newDiagnostic = { + ...diagnostic, + file, + start: start, + length: end - start, + }; + const relatedInformation = diagnostic.relatedInformation; + if (relatedInformation) { + newDiagnostic.relatedInformation = transformDiagnostics(relatedInformation); + } + result.push(newDiagnostic); + } + } +} +getProgram$1.getProgram = getProgram; + +var serverPlugin = {}; + +Object.defineProperty(serverPlugin, "__esModule", { value: true }); +serverPlugin.getExternalFiles = serverPlugin.searchExternalFiles = serverPlugin.decorateLanguageServiceHost = void 0; +const language_core_1$5 = languageCore; +function decorateLanguageServiceHost(virtualFiles, languageServiceHost, ts, exts) { + let extraProjectVersion = 0; + const scripts = new Map(); + const readDirectory = languageServiceHost.readDirectory?.bind(languageServiceHost); + const resolveModuleNameLiterals = languageServiceHost.resolveModuleNameLiterals?.bind(languageServiceHost); + const resolveModuleNames = languageServiceHost.resolveModuleNames?.bind(languageServiceHost); + const getProjectVersion = languageServiceHost.getProjectVersion?.bind(languageServiceHost); + const getScriptSnapshot = languageServiceHost.getScriptSnapshot.bind(languageServiceHost); + const getScriptKind = languageServiceHost.getScriptKind?.bind(languageServiceHost); + // path completion + if (readDirectory) { + languageServiceHost.readDirectory = (path, extensions, exclude, include, depth) => { + if (extensions) { + for (const ext of exts) { + if (!extensions.includes(ext)) { + extensions = [...extensions, ...ext]; + } + } + } + return readDirectory(path, extensions, exclude, include, depth); + }; + } + if (resolveModuleNameLiterals) { + languageServiceHost.resolveModuleNameLiterals = (moduleNames, containingFile, redirectedReference, options, ...rest) => { + const resolvedModules = resolveModuleNameLiterals(moduleNames, containingFile, redirectedReference, options, ...rest); + return moduleNames.map((name, i) => { + if (exts.some(ext => name.text.endsWith(ext))) { + const resolved = resolveModuleName(name.text, containingFile, options, redirectedReference); + if (resolved.resolvedModule) { + return resolved; + } + } + return resolvedModules[i]; + }); + }; + } + else if (resolveModuleNames) { + languageServiceHost.resolveModuleNames = (moduleNames, containingFile, reusedNames, redirectedReference, options, containingSourceFile) => { + const resolvedModules = resolveModuleNames(moduleNames, containingFile, reusedNames, redirectedReference, options, containingSourceFile); + return moduleNames.map((name, i) => { + if (exts.some(ext => name.endsWith(ext))) { + const resolved = resolveModuleName(name, containingFile, options, redirectedReference); + if (resolved.resolvedModule) { + return resolved.resolvedModule; + } + } + return resolvedModules[i]; + }); + }; + } + if (getProjectVersion) { + languageServiceHost.getProjectVersion = () => { + return getProjectVersion() + ':' + extraProjectVersion; + }; + } + languageServiceHost.getScriptSnapshot = (fileName) => { + if (exts.some(ext => fileName.endsWith(ext))) { + updateScript(fileName); + return scripts.get(fileName)?.snapshot; + } + return getScriptSnapshot(fileName); + }; + if (getScriptKind) { + languageServiceHost.getScriptKind = (fileName) => { + if (exts.some(ext => fileName.endsWith(ext))) { + updateScript(fileName); + const script = scripts.get(fileName); + if (script) { + if (script.extension.endsWith('.js')) { + return ts.ScriptKind.JS; + } + if (script.extension.endsWith('.jsx')) { + return ts.ScriptKind.JSX; + } + if (script.extension.endsWith('.ts')) { + return ts.ScriptKind.TS; + } + if (script.extension.endsWith('.tsx')) { + return ts.ScriptKind.TSX; + } + } + return ts.ScriptKind.Deferred; + } + return getScriptKind(fileName); + }; + } + function resolveModuleName(name, containingFile, options, redirectedReference) { + const resolved = ts.resolveModuleName(name, containingFile, options, { + readFile(fileName) { + return languageServiceHost.readFile(fileName); + }, + fileExists(fileName) { + if (exts.some(ext => fileName.endsWith(ext + '.d.ts'))) { + return fileExists(fileName.slice(0, -'.d.ts'.length)); + } + return languageServiceHost.fileExists(fileName); + }, + }, undefined, redirectedReference); + if (resolved.resolvedModule) { + resolved.resolvedModule.resolvedFileName = resolved.resolvedModule.resolvedFileName.slice(0, -'.d.ts'.length); + const script = updateScript(resolved.resolvedModule.resolvedFileName); + if (script) { + resolved.resolvedModule.extension = script.extension; + } + } + return resolved; + } + // fix https://github.com/vuejs/language-tools/issues/3332 + function fileExists(fileName) { + if (languageServiceHost.fileExists(fileName)) { + const fileSize = ts.sys.getFileSize?.(fileName) ?? languageServiceHost.readFile(fileName)?.length ?? 0; + return fileSize < 4 * 1024 * 1024; + } + return false; + } + function updateScript(fileName) { + const version = languageServiceHost.getScriptVersion(fileName); + if (version !== scripts.get(fileName)?.version) { + const text = languageServiceHost.readFile(fileName); + let snapshot; + let extension = '.ts'; + if (text !== undefined) { + extraProjectVersion++; + const virtualFile = virtualFiles.updateSource(fileName, ts.ScriptSnapshot.fromString(text), undefined); + if (virtualFile) { + let patchedText = text.split('\n').map(line => ' '.repeat(line.length)).join('\n'); + (0, language_core_1$5.forEachEmbeddedFile)(virtualFile, file => { + const ext = file.fileName.substring(fileName.length); + if (file.kind === language_core_1$5.FileKind.TypeScriptHostFile && (ext === '.d.ts' || ext.match(/^\.(js|ts)x?$/))) { + extension = ext; + patchedText += file.snapshot.getText(0, file.snapshot.getLength()); + } + }); + snapshot = ts.ScriptSnapshot.fromString(patchedText); + } + } + else if (virtualFiles.hasSource(fileName)) { + extraProjectVersion++; + virtualFiles.deleteSource(fileName); + } + scripts.set(fileName, { + version, + snapshot, + extension, + }); + } + return scripts.get(fileName); + } +} +serverPlugin.decorateLanguageServiceHost = decorateLanguageServiceHost; +function searchExternalFiles(ts, project, exts) { + if (project.projectKind !== ts.server.ProjectKind.Configured) { + return []; + } + const configFile = project.getProjectName(); + const config = ts.readJsonConfigFile(configFile, project.readFile.bind(project)); + const parseHost = { + useCaseSensitiveFileNames: project.useCaseSensitiveFileNames(), + fileExists: project.fileExists.bind(project), + readFile: project.readFile.bind(project), + readDirectory: (...args) => { + args[1] = exts; + return project.readDirectory(...args); + }, + }; + const parsed = ts.parseJsonSourceFileConfigFileContent(config, parseHost, project.getCurrentDirectory()); + return parsed.fileNames; +} +serverPlugin.searchExternalFiles = searchExternalFiles; +/** + * @deprecated use `searchExternalFiles` instead + */ +serverPlugin.getExternalFiles = searchExternalFiles; + +(function (exports) { + var __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); + }) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; + })); + var __exportStar = (commonjsGlobal && commonjsGlobal.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + __exportStar(documentRegistry, exports); + __exportStar(languageService, exports); + __exportStar(languageServiceHost, exports); + __exportStar(sys, exports); + __exportStar(getProgram$1, exports); + __exportStar(serverPlugin, exports); + +} (typescript)); + +var out$1 = {}; + +var _4_0 = {}; + +Object.defineProperty(_4_0, "__esModule", { value: true }); +function default_1$3(ts, host, _service) { + var _a, _b; + // @ts-expect-error + const importSuggestionsCache = (_b = (_a = ts.Completions) === null || _a === void 0 ? void 0 : _a.createImportSuggestionsForFileCache) === null || _b === void 0 ? void 0 : _b.call(_a); + // @ts-expect-error + // TODO: crash on 'addListener' from 'node:process', reuse because TS has same problem + host.getImportSuggestionsCache = () => importSuggestionsCache; +} +_4_0.default = default_1$3; + +var _4_4 = {}; + +var moduleSpecifierCache$2 = {}; + +Object.defineProperty(moduleSpecifierCache$2, "__esModule", { value: true }); +moduleSpecifierCache$2.createModuleSpecifierCache = void 0; +// export interface ModuleSpecifierResolutionCacheHost { +// watchNodeModulesForPackageJsonChanges(directoryPath: string): FileWatcher; +// } +function createModuleSpecifierCache$2( +// host: ModuleSpecifierResolutionCacheHost +) { + // let containedNodeModulesWatchers: Map<string, FileWatcher> | undefined; // TODO + let cache; + let currentKey; + const result = { + get(fromFileName, toFileName, preferences) { + if (!cache || currentKey !== key(fromFileName, preferences)) + return undefined; + return cache.get(toFileName); + }, + set(fromFileName, toFileName, preferences, modulePaths, moduleSpecifiers) { + ensureCache(fromFileName, preferences).set(toFileName, createInfo(modulePaths, moduleSpecifiers, /*isAutoImportable*/ true)); + // If any module specifiers were generated based off paths in node_modules, + // a package.json file in that package was read and is an input to the cached. + // Instead of watching each individual package.json file, set up a wildcard + // directory watcher for any node_modules referenced and clear the cache when + // it sees any changes. + if (moduleSpecifiers) { + for (const p of modulePaths) { + if (p.isInNodeModules) ; + } + } + }, + setModulePaths(fromFileName, toFileName, preferences, modulePaths) { + const cache = ensureCache(fromFileName, preferences); + const info = cache.get(toFileName); + if (info) { + info.modulePaths = modulePaths; + } + else { + cache.set(toFileName, createInfo(modulePaths, /*moduleSpecifiers*/ undefined, /*isAutoImportable*/ undefined)); + } + }, + setIsAutoImportable(fromFileName, toFileName, preferences, isAutoImportable) { + const cache = ensureCache(fromFileName, preferences); + const info = cache.get(toFileName); + if (info) { + info.isAutoImportable = isAutoImportable; + } + else { + cache.set(toFileName, createInfo(/*modulePaths*/ undefined, /*moduleSpecifiers*/ undefined, isAutoImportable)); + } + }, + clear() { + // containedNodeModulesWatchers?.forEach(watcher => watcher.close()); + cache === null || cache === void 0 ? void 0 : cache.clear(); + // containedNodeModulesWatchers?.clear(); + currentKey = undefined; + }, + count() { + return cache ? cache.size : 0; + } + }; + // if (Debug.isDebugging) { + // Object.defineProperty(result, "__cache", { get: () => cache }); + // } + return result; + function ensureCache(fromFileName, preferences) { + const newKey = key(fromFileName, preferences); + if (cache && (currentKey !== newKey)) { + result.clear(); + } + currentKey = newKey; + return cache || (cache = new Map()); + } + function key(fromFileName, preferences) { + return `${fromFileName},${preferences.importModuleSpecifierEnding},${preferences.importModuleSpecifierPreference}`; + } + function createInfo(modulePaths, moduleSpecifiers, isAutoImportable) { + return { modulePaths, moduleSpecifiers, isAutoImportable }; + } +} +moduleSpecifierCache$2.createModuleSpecifierCache = createModuleSpecifierCache$2; + +var packageJsonCache$2 = {}; + +Object.defineProperty(packageJsonCache$2, "__esModule", { value: true }); +packageJsonCache$2.createPackageJsonCache = packageJsonCache$2.canCreatePackageJsonCache = void 0; +function canCreatePackageJsonCache(ts) { + return 'createPackageJsonInfo' in ts && 'getDirectoryPath' in ts && 'combinePaths' in ts && 'tryFileExists' in ts && 'forEachAncestorDirectory' in ts; +} +packageJsonCache$2.canCreatePackageJsonCache = canCreatePackageJsonCache; +function createPackageJsonCache$2(ts, host) { + const { createPackageJsonInfo, getDirectoryPath, combinePaths, tryFileExists, forEachAncestorDirectory } = ts; + const packageJsons = new Map(); + const directoriesWithoutPackageJson = new Map(); + return { + addOrUpdate, + // @ts-expect-error + forEach: packageJsons.forEach.bind(packageJsons), + get: packageJsons.get.bind(packageJsons), + delete: fileName => { + packageJsons.delete(fileName); + directoriesWithoutPackageJson.set(getDirectoryPath(fileName), true); + }, + getInDirectory: directory => { + return packageJsons.get(combinePaths(directory, "package.json")) || undefined; + }, + directoryHasPackageJson, + searchDirectoryAndAncestors: directory => { + // @ts-expect-error + forEachAncestorDirectory(directory, ancestor => { + if (directoryHasPackageJson(ancestor) !== 3 /* Ternary.Maybe */) { + return true; + } + const packageJsonFileName = host.toPath(combinePaths(ancestor, "package.json")); + if (tryFileExists(host, packageJsonFileName)) { + addOrUpdate(packageJsonFileName); + } + else { + directoriesWithoutPackageJson.set(ancestor, true); + } + }); + }, + }; + function addOrUpdate(fileName) { + const packageJsonInfo = + // Debug.checkDefined( + createPackageJsonInfo(fileName, host.host); + // ); + packageJsons.set(fileName, packageJsonInfo); + directoriesWithoutPackageJson.delete(getDirectoryPath(fileName)); + } + function directoryHasPackageJson(directory) { + return packageJsons.has(combinePaths(directory, "package.json")) ? -1 /* Ternary.True */ : + directoriesWithoutPackageJson.has(directory) ? 0 /* Ternary.False */ : + 3 /* Ternary.Maybe */; + } +} +packageJsonCache$2.createPackageJsonCache = createPackageJsonCache$2; + +Object.defineProperty(_4_4, "__esModule", { value: true }); +const moduleSpecifierCache_1$1 = moduleSpecifierCache$2; +const packageJsonCache_1$2 = packageJsonCache$2; +function default_1$2(ts, host, service) { + const _createCacheableExportInfoMap = ts.createCacheableExportInfoMap; + const _combinePaths = ts.combinePaths; + const _forEachAncestorDirectory = ts.forEachAncestorDirectory; + const _getDirectoryPath = ts.getDirectoryPath; + const _toPath = ts.toPath; + const _createGetCanonicalFileName = ts.createGetCanonicalFileName; + if (!_createCacheableExportInfoMap + || !_combinePaths + || !_forEachAncestorDirectory + || !_getDirectoryPath + || !_toPath + || !_createGetCanonicalFileName + || !(0, packageJsonCache_1$2.canCreatePackageJsonCache)(ts)) + return; + const moduleSpecifierCache = (0, moduleSpecifierCache_1$1.createModuleSpecifierCache)(); + const exportMapCache = _createCacheableExportInfoMap({ + getCurrentProgram() { + return service.getProgram(); + }, + getPackageJsonAutoImportProvider() { + return service.getProgram(); + }, + }); + const packageJsonCache = (0, packageJsonCache_1$2.createPackageJsonCache)(ts, Object.assign(Object.assign({}, host), { + // @ts-expect-error + host: Object.assign({}, host), toPath })); + // @ts-expect-error + host.getCachedExportInfoMap = () => exportMapCache; + // @ts-expect-error + host.getModuleSpecifierCache = () => moduleSpecifierCache; + // @ts-expect-error + host.getPackageJsonsVisibleToFile = (fileName, rootDir) => { + const rootPath = rootDir && toPath(rootDir); + const filePath = toPath(fileName); + const result = []; + const processDirectory = (directory) => { + switch (packageJsonCache.directoryHasPackageJson(directory)) { + // Sync and check same directory again + case 3 /* Ternary.Maybe */: + packageJsonCache.searchDirectoryAndAncestors(directory); + return processDirectory(directory); + // Check package.json + case -1 /* Ternary.True */: + // const packageJsonFileName = _combinePaths(directory, "package.json"); + // this.watchPackageJsonFile(packageJsonFileName as ts.Path); // TODO + const info = packageJsonCache.getInDirectory(directory); + if (info) + result.push(info); + } + if (rootPath && rootPath === directory) { + return true; + } + }; + _forEachAncestorDirectory(_getDirectoryPath(filePath), processDirectory); + return result; + }; + function toPath(fileName) { + var _a; + return _toPath(fileName, host.getCurrentDirectory(), _createGetCanonicalFileName((_a = host.useCaseSensitiveFileNames) === null || _a === void 0 ? void 0 : _a.call(host))); + } +} +_4_4.default = default_1$2; + +var _4_7 = {}; + +var moduleSpecifierCache$1 = {}; + +Object.defineProperty(moduleSpecifierCache$1, "__esModule", { value: true }); +moduleSpecifierCache$1.createModuleSpecifierCache = moduleSpecifierCache$1.nodeModulesPathPart = void 0; +moduleSpecifierCache$1.nodeModulesPathPart = "/node_modules/"; +function createModuleSpecifierCache$1( +// host: ModuleSpecifierResolutionCacheHost +) { + let cache; + let currentKey; + const result = { + get(fromFileName, toFileName, preferences, options) { + if (!cache || currentKey !== key(fromFileName, preferences, options)) + return undefined; + return cache.get(toFileName); + }, + set(fromFileName, toFileName, preferences, options, modulePaths, moduleSpecifiers) { + ensureCache(fromFileName, preferences, options).set(toFileName, createInfo(modulePaths, moduleSpecifiers, /*isBlockedByPackageJsonDependencies*/ false)); + // If any module specifiers were generated based off paths in node_modules, + // a package.json file in that package was read and is an input to the cached. + // Instead of watching each individual package.json file, set up a wildcard + // directory watcher for any node_modules referenced and clear the cache when + // it sees any changes. + if (moduleSpecifiers) { + for (const p of modulePaths) { + if (p.isInNodeModules) ; + } + } + }, + setModulePaths(fromFileName, toFileName, preferences, options, modulePaths) { + const cache = ensureCache(fromFileName, preferences, options); + const info = cache.get(toFileName); + if (info) { + info.modulePaths = modulePaths; + } + else { + cache.set(toFileName, createInfo(modulePaths, /*moduleSpecifiers*/ undefined, /*isBlockedByPackageJsonDependencies*/ undefined)); + } + }, + setBlockedByPackageJsonDependencies(fromFileName, toFileName, preferences, options, isBlockedByPackageJsonDependencies) { + const cache = ensureCache(fromFileName, preferences, options); + const info = cache.get(toFileName); + if (info) { + info.isBlockedByPackageJsonDependencies = isBlockedByPackageJsonDependencies; + } + else { + cache.set(toFileName, createInfo(/*modulePaths*/ undefined, /*moduleSpecifiers*/ undefined, isBlockedByPackageJsonDependencies)); + } + }, + clear() { + cache === null || cache === void 0 ? void 0 : cache.clear(); + currentKey = undefined; + }, + count() { + return cache ? cache.size : 0; + } + }; + // if (Debug.isDebugging) { + // Object.defineProperty(result, "__cache", { get: () => cache }); + // } + return result; + function ensureCache(fromFileName, preferences, options) { + const newKey = key(fromFileName, preferences, options); + if (cache && (currentKey !== newKey)) { + result.clear(); + } + currentKey = newKey; + return cache || (cache = new Map()); + } + function key(fromFileName, preferences, options) { + return `${fromFileName},${preferences.importModuleSpecifierEnding},${preferences.importModuleSpecifierPreference},${options.overrideImportMode}`; + } + function createInfo(modulePaths, moduleSpecifiers, isBlockedByPackageJsonDependencies) { + return { modulePaths, moduleSpecifiers, isBlockedByPackageJsonDependencies }; + } +} +moduleSpecifierCache$1.createModuleSpecifierCache = createModuleSpecifierCache$1; + +var packageJsonCache$1 = {}; + +Object.defineProperty(packageJsonCache$1, "__esModule", { value: true }); +packageJsonCache$1.createPackageJsonCache = void 0; +function createPackageJsonCache$1(ts, host) { + const { createPackageJsonInfo, getDirectoryPath, combinePaths, tryFileExists, forEachAncestorDirectory } = ts; + const packageJsons = new Map(); + const directoriesWithoutPackageJson = new Map(); + return { + addOrUpdate, + forEach: packageJsons.forEach.bind(packageJsons), + get: packageJsons.get.bind(packageJsons), + delete: fileName => { + packageJsons.delete(fileName); + directoriesWithoutPackageJson.set(getDirectoryPath(fileName), true); + }, + getInDirectory: directory => { + return packageJsons.get(combinePaths(directory, "package.json")) || undefined; + }, + directoryHasPackageJson, + searchDirectoryAndAncestors: directory => { + forEachAncestorDirectory(directory, (ancestor) => { + if (directoryHasPackageJson(ancestor) !== 3 /* Ternary.Maybe */) { + return true; + } + const packageJsonFileName = host.toPath(combinePaths(ancestor, "package.json")); + if (tryFileExists(host, packageJsonFileName)) { + addOrUpdate(packageJsonFileName); + } + else { + directoriesWithoutPackageJson.set(ancestor, true); + } + }); + }, + }; + function addOrUpdate(fileName) { + const packageJsonInfo = + // Debug.checkDefined( + createPackageJsonInfo(fileName, host.host); + // ); + packageJsons.set(fileName, packageJsonInfo); + directoriesWithoutPackageJson.delete(getDirectoryPath(fileName)); + } + function directoryHasPackageJson(directory) { + return packageJsons.has(combinePaths(directory, "package.json")) ? -1 /* Ternary.True */ : + directoriesWithoutPackageJson.has(directory) ? 0 /* Ternary.False */ : + 3 /* Ternary.Maybe */; + } +} +packageJsonCache$1.createPackageJsonCache = createPackageJsonCache$1; + +Object.defineProperty(_4_7, "__esModule", { value: true }); +const moduleSpecifierCache_1 = moduleSpecifierCache$1; +const packageJsonCache_1$1 = packageJsonCache$1; +function default_1$1(ts, host, service) { + const _createCacheableExportInfoMap = ts.createCacheableExportInfoMap; + const _combinePaths = ts.combinePaths; + const _forEachAncestorDirectory = ts.forEachAncestorDirectory; + const _getDirectoryPath = ts.getDirectoryPath; + const _toPath = ts.toPath; + const _createGetCanonicalFileName = ts.createGetCanonicalFileName; + if (!_createCacheableExportInfoMap + || !_combinePaths + || !_forEachAncestorDirectory + || !_getDirectoryPath + || !_toPath + || !_createGetCanonicalFileName) + return; + const moduleSpecifierCache = (0, moduleSpecifierCache_1.createModuleSpecifierCache)(); + const exportMapCache = _createCacheableExportInfoMap({ + getCurrentProgram() { + return service.getProgram(); + }, + getPackageJsonAutoImportProvider() { + return service.getProgram(); + }, + getGlobalTypingsCacheLocation() { + return undefined; + }, + }); + const packageJsonCache = (0, packageJsonCache_1$1.createPackageJsonCache)(ts, Object.assign(Object.assign({}, host), { + // @ts-expect-error + host: Object.assign({}, host), toPath })); + // @ts-expect-error + host.getCachedExportInfoMap = () => exportMapCache; + // @ts-expect-error + host.getModuleSpecifierCache = () => moduleSpecifierCache; + // @ts-expect-error + host.getPackageJsonsVisibleToFile = (fileName, rootDir) => { + const rootPath = rootDir && toPath(rootDir); + const filePath = toPath(fileName); + const result = []; + const processDirectory = (directory) => { + switch (packageJsonCache.directoryHasPackageJson(directory)) { + // Sync and check same directory again + case 3 /* Ternary.Maybe */: + packageJsonCache.searchDirectoryAndAncestors(directory); + return processDirectory(directory); + // Check package.json + case -1 /* Ternary.True */: + // const packageJsonFileName = _combinePaths(directory, "package.json"); + // this.watchPackageJsonFile(packageJsonFileName as ts.Path); // TODO + const info = packageJsonCache.getInDirectory(directory); + if (info) + result.push(info); + } + if (rootPath && rootPath === directory) { + return true; + } + }; + _forEachAncestorDirectory(_getDirectoryPath(filePath), processDirectory); + return result; + }; + function toPath(fileName) { + var _a; + return _toPath(fileName, host.getCurrentDirectory(), _createGetCanonicalFileName((_a = host.useCaseSensitiveFileNames) === null || _a === void 0 ? void 0 : _a.call(host))); + } +} +_4_7.default = default_1$1; + +var _5_0 = {}; + +var projectService$1 = {}; + +var packageJsonCache = {}; + +Object.defineProperty(packageJsonCache, "__esModule", { value: true }); +packageJsonCache.createPackageJsonCache = void 0; +function createPackageJsonCache(ts, host) { + const { createPackageJsonInfo, getDirectoryPath, combinePaths, tryFileExists, forEachAncestorDirectory } = ts; + const packageJsons = new Map(); + const directoriesWithoutPackageJson = new Map(); + return { + addOrUpdate, + // @ts-expect-error + forEach: packageJsons.forEach.bind(packageJsons), + get: packageJsons.get.bind(packageJsons), + delete: (fileName) => { + packageJsons.delete(fileName); + directoriesWithoutPackageJson.set(getDirectoryPath(fileName), true); + }, + getInDirectory: (directory) => { + return packageJsons.get(combinePaths(directory, 'package.json')) || undefined; + }, + directoryHasPackageJson, + searchDirectoryAndAncestors: (directory) => { + // @ts-expect-error + forEachAncestorDirectory(directory, (ancestor) => { + if (directoryHasPackageJson(ancestor) !== 3 /* Ternary.Maybe */) { + return true; + } + const packageJsonFileName = host.toPath(combinePaths(ancestor, 'package.json')); + if (tryFileExists(host, packageJsonFileName)) { + addOrUpdate(packageJsonFileName); + } + else { + directoriesWithoutPackageJson.set(ancestor, true); + } + }); + }, + }; + function addOrUpdate(fileName) { + const packageJsonInfo = /*Debug.checkDefined( */ createPackageJsonInfo(fileName, host.host); /*);*/ + packageJsons.set(fileName, packageJsonInfo); + directoriesWithoutPackageJson.delete(getDirectoryPath(fileName)); + } + function directoryHasPackageJson(directory) { + return packageJsons.has(combinePaths(directory, 'package.json')) + ? -1 /* Ternary.True */ + : directoriesWithoutPackageJson.has(directory) + ? 0 /* Ternary.False */ + : 3 /* Ternary.Maybe */; + } +} +packageJsonCache.createPackageJsonCache = createPackageJsonCache; + +Object.defineProperty(projectService$1, "__esModule", { value: true }); +projectService$1.createProjectService = void 0; +const packageJsonCache_1 = packageJsonCache; +function createProjectService(ts, sys, currentDirectory, hostConfiguration, serverMode) { + const { toPath, getNormalizedAbsolutePath, normalizePath: toNormalizedPath, createGetCanonicalFileName, forEachAncestorDirectory, getDirectoryPath, } = ts; + const projectService = { + serverMode, + host: sys, + currentDirectory: toNormalizedPath(currentDirectory), + toCanonicalFileName: createGetCanonicalFileName(sys.useCaseSensitiveFileNames), + toPath(fileName) { + return toPath(fileName, this.currentDirectory, this.toCanonicalFileName); + }, + getExecutingFilePath() { + return this.getNormalizedAbsolutePath(this.host.getExecutingFilePath()); + }, + getNormalizedAbsolutePath(fileName) { + return getNormalizedAbsolutePath(fileName, this.host.getCurrentDirectory()); + }, + packageJsonCache: undefined, + getPackageJsonsVisibleToFile(fileName, rootDir) { + const packageJsonCache = this.packageJsonCache; + const rootPath = rootDir && this.toPath(rootDir); + const filePath = this.toPath(fileName); + const result = []; + const processDirectory = (directory) => { + switch (packageJsonCache.directoryHasPackageJson(directory)) { + // Sync and check same directory again + case 3 /* Ternary.Maybe */: + packageJsonCache.searchDirectoryAndAncestors(directory); + return processDirectory(directory); + // Check package.json + case -1 /* Ternary.True */: + // const packageJsonFileName = _combinePaths(directory, "package.json"); + // this.watchPackageJsonFile(packageJsonFileName as ts.Path); // TODO + const info = packageJsonCache.getInDirectory(directory); + if (info) + result.push(info); + } + if (rootPath && rootPath === directory) { + return true; + } + }; + forEachAncestorDirectory(getDirectoryPath(filePath), processDirectory); + return result; + }, + includePackageJsonAutoImports() { + switch (hostConfiguration.preferences.includePackageJsonAutoImports) { + case 'on': return 1 /* PackageJsonAutoImportPreference.On */; + case 'off': return 0 /* PackageJsonAutoImportPreference.Off */; + default: return 2 /* PackageJsonAutoImportPreference.Auto */; + } + }, + fileExists(fileName) { + return this.host.fileExists(fileName); + }, + }; + projectService.packageJsonCache = (0, packageJsonCache_1.createPackageJsonCache)(ts, projectService); + return projectService; +} +projectService$1.createProjectService = createProjectService; + +var project = {}; + +var moduleSpecifierCache = {}; + +Object.defineProperty(moduleSpecifierCache, "__esModule", { value: true }); +moduleSpecifierCache.createModuleSpecifierCache = moduleSpecifierCache.nodeModulesPathPart = void 0; +moduleSpecifierCache.nodeModulesPathPart = "/node_modules/"; +function createModuleSpecifierCache( +// host: ModuleSpecifierResolutionCacheHost +) { + let cache; + let currentKey; + const result = { + get(fromFileName, toFileName, preferences, options) { + if (!cache || currentKey !== key(fromFileName, preferences, options)) + return undefined; + return cache.get(toFileName); + }, + set(fromFileName, toFileName, preferences, options, modulePaths, moduleSpecifiers) { + ensureCache(fromFileName, preferences, options).set(toFileName, createInfo(modulePaths, moduleSpecifiers, /*isBlockedByPackageJsonDependencies*/ false)); + // If any module specifiers were generated based off paths in node_modules, + // a package.json file in that package was read and is an input to the cached. + // Instead of watching each individual package.json file, set up a wildcard + // directory watcher for any node_modules referenced and clear the cache when + // it sees any changes. + if (moduleSpecifiers) { + for (const p of modulePaths) { + if (p.isInNodeModules) ; + } + } + }, + setModulePaths(fromFileName, toFileName, preferences, options, modulePaths) { + const cache = ensureCache(fromFileName, preferences, options); + const info = cache.get(toFileName); + if (info) { + info.modulePaths = modulePaths; + } + else { + cache.set(toFileName, createInfo(modulePaths, /*moduleSpecifiers*/ undefined, /*isBlockedByPackageJsonDependencies*/ undefined)); + } + }, + setBlockedByPackageJsonDependencies(fromFileName, toFileName, preferences, options, isBlockedByPackageJsonDependencies) { + const cache = ensureCache(fromFileName, preferences, options); + const info = cache.get(toFileName); + if (info) { + info.isBlockedByPackageJsonDependencies = isBlockedByPackageJsonDependencies; + } + else { + cache.set(toFileName, createInfo(/*modulePaths*/ undefined, /*moduleSpecifiers*/ undefined, isBlockedByPackageJsonDependencies)); + } + }, + clear() { + cache === null || cache === void 0 ? void 0 : cache.clear(); + currentKey = undefined; + }, + count() { + return cache ? cache.size : 0; + } + }; + // if (Debug.isDebugging) { + // Object.defineProperty(result, "__cache", { get: () => cache }); + // } + return result; + function ensureCache(fromFileName, preferences, options) { + const newKey = key(fromFileName, preferences, options); + if (cache && (currentKey !== newKey)) { + result.clear(); + } + currentKey = newKey; + return cache || (cache = new Map()); + } + function key(fromFileName, preferences, options) { + return `${fromFileName},${preferences.importModuleSpecifierEnding},${preferences.importModuleSpecifierPreference},${options.overrideImportMode}`; + } + function createInfo(modulePaths, moduleSpecifiers, isBlockedByPackageJsonDependencies) { + return { modulePaths, moduleSpecifiers, isBlockedByPackageJsonDependencies }; + } +} +moduleSpecifierCache.createModuleSpecifierCache = createModuleSpecifierCache; + +var autoImportProviderProject = {}; + +var hasRequiredAutoImportProviderProject; + +function requireAutoImportProviderProject () { + if (hasRequiredAutoImportProviderProject) return autoImportProviderProject; + hasRequiredAutoImportProviderProject = 1; + Object.defineProperty(autoImportProviderProject, "__esModule", { value: true }); + autoImportProviderProject.createAutoImportProviderProjectStatic = void 0; + const project_1 = requireProject(); + function createAutoImportProviderProjectStatic(tsBase, host, createLanguageService) { + const ts = tsBase; + const { combinePaths, inferredTypesContainingFile, arrayFrom, resolvePackageNameToPackageJson, concatenate, forEach, startsWith, getEntrypointsFromPackageJsonInfo, mapDefined, timestamp, } = ts; + return { + maxDependencies: 10, + compilerOptionsOverrides: { + diagnostics: false, + skipLibCheck: true, + sourceMap: false, + types: ts.emptyArray, + lib: ts.emptyArray, + noLib: true, + }, + getRootFileNames(dependencySelection, hostProject, moduleResolutionHost, compilerOptions) { + var _a, _b; + if (!dependencySelection) { + return ts.emptyArray; + } + const program = hostProject.getCurrentProgram(); + if (!program) { + return ts.emptyArray; + } + const start = timestamp(); + let dependencyNames; + let rootNames; + const rootFileName = combinePaths(hostProject.currentDirectory, inferredTypesContainingFile); + const packageJsons = hostProject.getPackageJsonsForAutoImport(combinePaths(hostProject.currentDirectory, rootFileName)); + for (const packageJson of packageJsons) { + (_a = packageJson.dependencies) === null || _a === void 0 ? void 0 : _a.forEach((_, dependenyName) => addDependency(dependenyName)); + (_b = packageJson.peerDependencies) === null || _b === void 0 ? void 0 : _b.forEach((_, dependencyName) => addDependency(dependencyName)); + } + let dependenciesAdded = 0; + if (dependencyNames) { + const symlinkCache = hostProject.getSymlinkCache(); + for (const name of arrayFrom(dependencyNames.keys())) { + // Avoid creating a large project that would significantly slow down time to editor interactivity + if (dependencySelection === 2 /* PackageJsonAutoImportPreference.Auto */ && dependenciesAdded > this.maxDependencies) { + hostProject.log(`AutoImportProviderProject: attempted to add more than ${this.maxDependencies} dependencies. Aborting.`); + return ts.emptyArray; + } + // 1. Try to load from the implementation package. For many dependencies, the + // package.json will exist, but the package will not contain any typings, + // so `entrypoints` will be undefined. In that case, or if the dependency + // is missing altogether, we will move on to trying the @types package (2). + const packageJson = resolvePackageNameToPackageJson(name, hostProject.currentDirectory, compilerOptions, moduleResolutionHost, + // @ts-expect-error + program.getModuleResolutionCache()); + if (packageJson) { + const entrypoints = getRootNamesFromPackageJson(packageJson, program, symlinkCache); + if (entrypoints) { + rootNames = concatenate(rootNames, entrypoints); + dependenciesAdded += entrypoints.length ? 1 : 0; + continue; + } + } + // 2. Try to load from the @types package in the tree and in the global + // typings cache location, if enabled. + // @ts-expect-error + const done = forEach([hostProject.currentDirectory, hostProject.getGlobalTypingsCacheLocation()], (directory) => { + if (directory) { + const typesPackageJson = resolvePackageNameToPackageJson(`@types/${name}`, directory, compilerOptions, moduleResolutionHost, + // @ts-expect-error + program.getModuleResolutionCache()); + if (typesPackageJson) { + const entrypoints = getRootNamesFromPackageJson(typesPackageJson, program, symlinkCache); + rootNames = concatenate(rootNames, entrypoints); + dependenciesAdded += (entrypoints === null || entrypoints === void 0 ? void 0 : entrypoints.length) ? 1 : 0; + return true; + } + } + }); + if (done) + continue; + // 3. If the @types package did not exist and the user has settings that + // allow processing JS from node_modules, go back to the implementation + // package and load the JS. + if (packageJson && compilerOptions.allowJs && compilerOptions.maxNodeModuleJsDepth) { + const entrypoints = getRootNamesFromPackageJson(packageJson, program, symlinkCache, /*allowJs*/ true); + rootNames = concatenate(rootNames, entrypoints); + dependenciesAdded += (entrypoints === null || entrypoints === void 0 ? void 0 : entrypoints.length) ? 1 : 0; + } + } + } + if (rootNames === null || rootNames === void 0 ? void 0 : rootNames.length) { + hostProject.log(`AutoImportProviderProject: found ${rootNames.length} root files in ${dependenciesAdded} dependencies in ${timestamp() - start} ms`); + } + return rootNames || ts.emptyArray; + function addDependency(dependency) { + if (!startsWith(dependency, '@types/')) { + (dependencyNames || (dependencyNames = new Set())).add(dependency); + } + } + function getRootNamesFromPackageJson(packageJson, program, symlinkCache, resolveJs) { + var _a; + const entrypoints = getEntrypointsFromPackageJsonInfo(packageJson, compilerOptions, moduleResolutionHost, + // @ts-expect-error + program.getModuleResolutionCache(), resolveJs); + if (entrypoints) { + const real = (_a = moduleResolutionHost.realpath) === null || _a === void 0 ? void 0 : _a.call(moduleResolutionHost, packageJson.packageDirectory); + const isSymlink = real && real !== packageJson.packageDirectory; + if (isSymlink) { + symlinkCache.setSymlinkedDirectory(packageJson.packageDirectory, { + real, + realPath: hostProject.toPath(real), + }); + } + // @ts-expect-error + return mapDefined(entrypoints, (entrypoint) => { + const resolvedFileName = isSymlink ? entrypoint.replace(packageJson.packageDirectory, real) : entrypoint; + if (!program.getSourceFile(resolvedFileName) && !(isSymlink && program.getSourceFile(entrypoint))) { + return resolvedFileName; + } + }); + } + } + }, + create(dependencySelection, hostProject, moduleResolutionHost) { + if (dependencySelection === 0 /* PackageJsonAutoImportPreference.Off */) { + return undefined; + } + const compilerOptions = Object.assign(Object.assign({}, hostProject.getCompilerOptions()), this.compilerOptionsOverrides); + let rootNames = this.getRootFileNames(dependencySelection, hostProject, moduleResolutionHost, compilerOptions); + if (!rootNames.length) { + return undefined; + } + return createAutoImportProviderProject(tsBase, host, createLanguageService, { self: this, hostProject, rootNames, compilerOptions }); + } + }; + } + autoImportProviderProject.createAutoImportProviderProjectStatic = createAutoImportProviderProjectStatic; + function createAutoImportProviderProject(tsBase, host, createLanguageService, options) { + const { self, rootNames, compilerOptions, hostProject } = options; + const ts = tsBase; + const { some } = ts; + const project = Object.assign(Object.assign({}, (0, project_1.createProject)(tsBase, host, createLanguageService, { + projectService: hostProject.projectService, + currentDirectory: hostProject.currentDirectory, + compilerOptions, + })), { rootFileNames: rootNames, hostProject, + isEmpty() { + return !some(this.rootFileNames); + }, + isOrphan() { + return true; + }, + updateGraph() { + var _a; + let rootFileNames = this.rootFileNames; + if (!rootFileNames) { + rootFileNames = self.getRootFileNames(this.hostProject.includePackageJsonAutoImports(), this.hostProject, this.hostProject.getModuleResolutionHostForAutoImportProvider(), this.getCompilationSettings()); + } + this.rootFileNames = rootFileNames; + const oldProgram = this.getCurrentProgram(); + this.program = (_a = this.languageService) === null || _a === void 0 ? void 0 : _a.getProgram(); + this.dirty = false; + if (oldProgram && oldProgram !== this.getCurrentProgram()) { + this.hostProject.clearCachedExportInfoMap(); + } + }, + scheduleInvalidateResolutionsOfFailedLookupLocations() { + // Invalidation will happen on-demand as part of updateGraph + return; + }, + hasRoots() { + var _a; + return !!((_a = this.rootFileNames) === null || _a === void 0 ? void 0 : _a.length); + }, + markAsDirty() { + if (!this.dirty) { + this.rootFileNames = undefined; + this.dirty = true; + } + }, + getScriptFileNames() { + return this.rootFileNames || ts.emptyArray; + }, + getLanguageService() { + throw new Error("AutoImportProviderProject language service should never be used. To get the program, use `project.getCurrentProgram()`."); + }, + onAutoImportProviderSettingsChanged() { + throw new Error("AutoImportProviderProject is an auto import provider; use `markAsDirty()` instead."); + }, + onPackageJsonChange() { + throw new Error("package.json changes should be notified on an AutoImportProvider's host project"); + }, + getModuleResolutionHostForAutoImportProvider() { + throw new Error("AutoImportProviderProject cannot provide its own host; use `hostProject.getModuleResolutionHostForAutomImportProvider()` instead."); + }, + includePackageJsonAutoImports() { + return 0 /* PackageJsonAutoImportPreference.Off */; + }, + getTypeAcquisition() { + return { enable: false }; + }, + getSymlinkCache() { + return this.hostProject.getSymlinkCache(); + }, + getModuleResolutionCache() { + var _a, _b; + // @ts-expect-error + return (_b = (_a = this.hostProject.languageService) === null || _a === void 0 ? void 0 : _a.getProgram()) === null || _b === void 0 ? void 0 : _b.getModuleResolutionCache(); + } }); + return (0, project_1.initProject)(project, new Proxy(host, { + get(target, key) { + return key in project ? project[key] : target[key]; + }, + set(_target, key, value) { + project[key] = value; + return true; + } + }), createLanguageService); + } + return autoImportProviderProject; +} + +var hasRequiredProject; + +function requireProject () { + if (hasRequiredProject) return project; + hasRequiredProject = 1; + Object.defineProperty(project, "__esModule", { value: true }); + project.initProject = project.createProject = void 0; + const moduleSpecifierCache_1 = moduleSpecifierCache; + const autoImportProviderProject_1 = requireAutoImportProviderProject(); + function createProject(ts, host, createLanguageService, options) { + const { combinePaths, inferredTypesContainingFile, createSymlinkCache, toPath, createCacheableExportInfoMap, timestamp, isInsideNodeModules, LanguageServiceMode, } = ts; + const AutoImportProviderProject = (0, autoImportProviderProject_1.createAutoImportProviderProjectStatic)(ts, host, createLanguageService); + const { projectService, compilerOptions, currentDirectory } = options; + function updateProjectIfDirty(project) { + return project.dirty && project.updateGraph(); + } + return { + dirty: false, + hostProject: undefined, + languageServiceEnabled: true, + languageService: undefined, + projectService, + getCanonicalFileName: projectService.toCanonicalFileName, + exportMapCache: undefined, + getCachedExportInfoMap() { + return (this.exportMapCache || (this.exportMapCache = createCacheableExportInfoMap(this))); + }, + clearCachedExportInfoMap() { + var _a; + (_a = this.exportMapCache) === null || _a === void 0 ? void 0 : _a.clear(); + }, + moduleSpecifierCache: (0, moduleSpecifierCache_1.createModuleSpecifierCache)(), + getModuleSpecifierCache() { + return this.moduleSpecifierCache; + }, + compilerOptions, + getCompilationSettings() { + return this.compilerOptions; + }, + getCompilerOptions() { + return this.compilerOptions; + }, + program: undefined, + getCurrentProgram() { + return this.program; + }, + currentDirectory: projectService.getNormalizedAbsolutePath(currentDirectory || ''), + getCurrentDirectory() { + return this.currentDirectory; + }, + symlinks: undefined, + getSymlinkCache() { + if (!this.symlinks) { + this.symlinks = createSymlinkCache(this.getCurrentDirectory(), this.getCanonicalFileName); + } + if (this.program && !this.symlinks.hasProcessedResolutions()) { + this.symlinks.setSymlinksFromResolutions(this.program.getSourceFiles(), + // @ts-expect-error + this.program.getAutomaticTypeDirectiveResolutions()); + } + return this.symlinks; + }, + packageJsonsForAutoImport: undefined, + getPackageJsonsForAutoImport(rootDir) { + const packageJsons = this.getPackageJsonsVisibleToFile(combinePaths(this.currentDirectory, inferredTypesContainingFile), rootDir); + this.packageJsonsForAutoImport = new Set(packageJsons.map((p) => p.fileName)); + return packageJsons; + }, + getPackageJsonsVisibleToFile(fileName, rootDir) { + return this.projectService.getPackageJsonsVisibleToFile(fileName, rootDir); + }, + getModuleResolutionHostForAutoImportProvider() { + var _a; + if (this.program) { + return { + // @ts-expect-error + fileExists: this.program.fileExists, + // @ts-expect-error + directoryExists: this.program.directoryExists, + // @ts-expect-error + realpath: this.program.realpath || ((_a = this.projectService.host.realpath) === null || _a === void 0 ? void 0 : _a.bind(this.projectService.host)), + getCurrentDirectory: this.getCurrentDirectory.bind(this), + readFile: this.projectService.host.readFile.bind(this.projectService.host), + getDirectories: this.projectService.host.getDirectories.bind(this.projectService.host), + // trace: this.projectService.host.trace?.bind(this.projectService.host), + trace: () => { }, + // @ts-expect-error + useCaseSensitiveFileNames: this.program.useCaseSensitiveFileNames(), + }; + } + return this.projectService.host; + }, + autoImportProviderHost: undefined, + getPackageJsonAutoImportProvider() { + if (this.autoImportProviderHost === false) { + return undefined; + } + if (this.projectService.serverMode !== LanguageServiceMode.Semantic) { + this.autoImportProviderHost = false; + return undefined; + } + if (this.autoImportProviderHost) { + updateProjectIfDirty(this.autoImportProviderHost); + if (this.autoImportProviderHost.isEmpty()) { + this.autoImportProviderHost.close(); + this.autoImportProviderHost = undefined; + return undefined; + } + return this.autoImportProviderHost.getCurrentProgram(); + } + const dependencySelection = projectService.includePackageJsonAutoImports(); + if (dependencySelection) { + // tracing?.push(tracing.Phase.Session, "getPackageJsonAutoImportProvider"); + const start = timestamp(); + this.autoImportProviderHost = AutoImportProviderProject.create(dependencySelection, this, this.getModuleResolutionHostForAutoImportProvider()); + if (this.autoImportProviderHost) { + updateProjectIfDirty(this.autoImportProviderHost); + this.sendPerformanceEvent('CreatePackageJsonAutoImportProvider', timestamp() - start); + // tracing?.pop(); + return this.autoImportProviderHost.getCurrentProgram(); + } + // tracing?.pop(); + } + }, + includePackageJsonAutoImports() { + if (this.projectService.includePackageJsonAutoImports() === 0 /* PackageJsonAutoImportPreference.Off */ || + !this.languageServiceEnabled || + isInsideNodeModules(this.currentDirectory) /* || + !this.isDefaultProjectForOpenFiles()*/) { + return 0 /* PackageJsonAutoImportPreference.Off */; + } + return this.projectService.includePackageJsonAutoImports(); + }, + close() { }, + log(_message) { }, + sendPerformanceEvent(_kind, _durationMs) { }, + toPath(fileName) { + return toPath(fileName, this.currentDirectory, this.projectService.toCanonicalFileName); + }, + getGlobalTypingsCacheLocation() { + return undefined; + }, + useSourceOfProjectReferenceRedirect() { + return !this.getCompilerOptions().disableSourceOfProjectReferenceRedirect; + }, + onAutoImportProviderSettingsChanged() { + var _a; + if (this.autoImportProviderHost === false) { + this.autoImportProviderHost = undefined; + } + else { + (_a = this.autoImportProviderHost) === null || _a === void 0 ? void 0 : _a.markAsDirty(); + } + }, + }; + } + project.createProject = createProject; + function initProject(project, host, createLanguageService) { + const languageService = createLanguageService(host); + project.languageService = languageService; + project.program = languageService.getProgram(); + return project; + } + project.initProject = initProject; + return project; +} + +Object.defineProperty(_5_0, "__esModule", { value: true }); +const projectService_1 = projectService$1; +const project_1 = requireProject(); +// only create the once for all hosts, as this will improve performance as the internal cache can be reused +let projectService; +const projects = new Set(); +function default_1(ts, sys, host, createLanguageService) { + const hostConfiguration = { preferences: { includePackageJsonAutoImports: 'auto' } }; + if (!projectService) { + projectService = (0, projectService_1.createProjectService)(ts, sys, host.getCurrentDirectory(), hostConfiguration, ts.LanguageServiceMode.Semantic); + } + const project = (0, project_1.createProject)(ts, host, createLanguageService, { + projectService, + currentDirectory: host.getCurrentDirectory(), + compilerOptions: host.getCompilationSettings(), + }); + const proxyMethods = [ + 'getCachedExportInfoMap', + 'getModuleSpecifierCache', + 'getGlobalTypingsCacheLocation', + 'getSymlinkCache', + 'getPackageJsonsVisibleToFile', + 'getPackageJsonAutoImportProvider', + 'includePackageJsonAutoImports', + 'useSourceOfProjectReferenceRedirect' + ]; + proxyMethods.forEach(key => host[key] = project[key].bind(project)); + (0, project_1.initProject)(project, host, createLanguageService); + projects.add(project); + return { + languageService: project.languageService, + setPreferences(newPreferences) { + let onAutoImportProviderSettingsChanged = newPreferences.includePackageJsonAutoImports !== hostConfiguration.preferences.includePackageJsonAutoImports; + hostConfiguration.preferences = newPreferences; + if (onAutoImportProviderSettingsChanged) { + project.onAutoImportProviderSettingsChanged(); + } + }, + projectUpdated(path) { + projects.forEach(projectToUpdate => { + var _a, _b, _c; + if (project === projectToUpdate || !projectToUpdate.autoImportProviderHost) + return; + const realPaths = [...(_c = (_b = (_a = projectToUpdate.symlinks) === null || _a === void 0 ? void 0 : _a.getSymlinkedDirectoriesByRealpath()) === null || _b === void 0 ? void 0 : _b.keys()) !== null && _c !== void 0 ? _c : []] + .map(name => projectToUpdate.projectService.getNormalizedAbsolutePath(name)); + if (realPaths.includes(projectToUpdate.projectService.toCanonicalFileName(path))) { + projectToUpdate.autoImportProviderHost.markAsDirty(); + } + }); + }, + }; +} +_5_0.default = default_1; + +Object.defineProperty(out$1, "__esModule", { value: true }); +out$1.createLanguageService = void 0; +const semver = semver$2; +const _4_0_1 = _4_0; +const _4_4_1 = _4_4; +const _4_7_1 = _4_7; +const _5_0_1 = _5_0; +function createLanguageService$1(ts, sys, host, createLanguageService) { + if (semver.gte(ts.version, '5.0.0')) { + return (0, _5_0_1.default)(ts, sys, host, createLanguageService); + } + else if (semver.gte(ts.version, '4.7.0')) { + const service = createLanguageService(host); + (0, _4_7_1.default)(ts, host, service); + return { languageService: service }; + } + else if (semver.gte(ts.version, '4.4.0')) { + const service = createLanguageService(host); + (0, _4_4_1.default)(ts, host, service); + return { languageService: service }; + } + else if (semver.gte(ts.version, '4.0.0')) { + const service = createLanguageService(host); + (0, _4_0_1.default)(ts, host, service); + return { languageService: service }; + } + return { languageService: createLanguageService(host) }; +} +out$1.createLanguageService = createLanguageService$1; + +(function (exports) { + var __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); + }) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; + })); + var __exportStar = (commonjsGlobal && commonjsGlobal.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.create = void 0; + const semver = semver$2; + const shared_1 = shared; + const vscode_languageserver_textdocument_1 = require$$2$2; + const _callHierarchy = callHierarchy; + const codeActions = codeAction; + const codeActionResolve$1 = codeActionResolve; + const completions = basic; + const directiveCommentCompletions = directiveComment; + const jsDocCompletions = jsDoc; + const completionResolve = resolve; + const definitions = definition; + const diagnostics$1 = diagnostics; + const documentHighlight$1 = documentHighlight; + const documentSymbol$1 = documentSymbol; + const fileReferences$1 = fileReferences; + const fileRename$1 = fileRename; + const foldingRanges$1 = foldingRanges; + const formatting$1 = formatting; + const hover$1 = hover; + const implementation$1 = implementation; + const inlayHints$1 = inlayHints; + const prepareRename$1 = prepareRename; + const references$1 = references; + const rename$1 = rename; + const selectionRanges$1 = selectionRanges; + const semanticTokens$1 = semanticTokens; + const signatureHelp$1 = signatureHelp; + const typeDefinitions = typeDefinition; + const workspaceSymbols = workspaceSymbol; + const typescript_1 = typescript; + const tsFaster = out$1; + __exportStar(typescript, exports); + const jsDocTriggerCharacter = '*'; + const directiveCommentTriggerCharacter = '@'; + const triggerCharacters = { + triggerCharacters: [ + ...getBasicTriggerCharacters('4.3.0'), + jsDocTriggerCharacter, + directiveCommentTriggerCharacter, + ], + signatureHelpTriggerCharacters: ['(', ',', '<'], + signatureHelpRetriggerCharacters: [')'], + // https://github.com/microsoft/vscode/blob/ce119308e8fd4cd3f992d42b297588e7abe33a0c/extensions/typescript-language-features/src/languageFeatures/formatting.ts#L99 + autoFormatTriggerCharacters: [';', '}', '\n'], + }; + function create() { + return (contextOrNull, modules) => { + if (!contextOrNull) { + return triggerCharacters; + } + const context = contextOrNull; + if (!modules?.typescript) { + console.warn('[volar-service-typescript] context.typescript not found, volar-service-typescript is disabled. Make sure you have provide tsdk in language client.'); + return {}; + } + const ts = modules.typescript; + const sys = (0, typescript_1.createSys)(ts, context.env); + const languageServiceHost = (0, typescript_1.createLanguageServiceHost)(context, ts, sys); + const created = tsFaster.createLanguageService(ts, sys, languageServiceHost, proxiedHost => ts.createLanguageService(proxiedHost, (0, typescript_1.getDocumentRegistry)(ts, sys.useCaseSensitiveFileNames, context.host.workspacePath))); + const { languageService } = created; + if (created.setPreferences && context.env.getConfiguration) { + updatePreferences(); + context.env.onDidChangeConfiguration?.(updatePreferences); + async function updatePreferences() { + const preferences = await context.env.getConfiguration?.('typescript.preferences'); + if (preferences) { + created.setPreferences?.(preferences); + } + } + } + if (created.projectUpdated) { + let scriptFileNames = new Set(context.host.getScriptFileNames()); + context.env.onDidChangeWatchedFiles?.((params) => { + if (params.changes.some(change => change.type !== 2)) { + scriptFileNames = new Set(context.host.getScriptFileNames()); + } + for (const change of params.changes) { + if (scriptFileNames.has(context.env.uriToFileName(change.uri))) { + created.projectUpdated?.(context.env.uriToFileName(context.env.rootUri.fsPath)); + } + } + }); + } + const basicTriggerCharacters = getBasicTriggerCharacters(ts.version); + const documents = new WeakMap(); + const semanticCtx = { + ...context, + typescript: { + languageServiceHost, + languageService, + }, + ts, + getTextDocument(uri) { + const document = context.getTextDocument(uri); + if (document) { + return document; + } + const snapshot = languageServiceHost.getScriptSnapshot(context.env.uriToFileName(uri)); + if (snapshot) { + let document = documents.get(snapshot); + if (!document) { + document = vscode_languageserver_textdocument_1.TextDocument.create(uri, '', 0, snapshot.getText(0, snapshot.getLength())); + documents.set(snapshot, document); + } + return document; + } + }, + }; + const findDefinition = definitions.register(semanticCtx); + const findTypeDefinition = typeDefinitions.register(semanticCtx); + const findReferences = references$1.register(semanticCtx); + const findFileReferences = fileReferences$1.register(semanticCtx); + const findImplementations = implementation$1.register(semanticCtx); + const doPrepareRename = prepareRename$1.register(semanticCtx); + const doRename = rename$1.register(semanticCtx); + const getEditsForFileRename = fileRename$1.register(semanticCtx); + const getCodeActions = codeActions.register(semanticCtx); + const doCodeActionResolve = codeActionResolve$1.register(semanticCtx); + const getInlayHints = inlayHints$1.register(semanticCtx); + const findDocumentHighlights = documentHighlight$1.register(semanticCtx); + const findWorkspaceSymbols = workspaceSymbols.register(semanticCtx); + const doComplete = completions.register(semanticCtx); + const doCompletionResolve = completionResolve.register(semanticCtx); + const doDirectiveCommentComplete = directiveCommentCompletions.register(semanticCtx); + const doJsDocComplete = jsDocCompletions.register(semanticCtx); + const doHover = hover$1.register(semanticCtx); + const getSignatureHelp = signatureHelp$1.register(semanticCtx); + const getSelectionRanges = selectionRanges$1.register(semanticCtx); + const doValidation = diagnostics$1.register(semanticCtx); + const getDocumentSemanticTokens = semanticTokens$1.register(semanticCtx); + const callHierarchy = _callHierarchy.register(semanticCtx); + let syntacticHostCtx = { + projectVersion: 0, + document: undefined, + fileName: '', + fileVersion: 0, + snapshot: ts.ScriptSnapshot.fromString(''), + }; + const syntacticServiceHost = { + getProjectVersion: () => syntacticHostCtx.projectVersion.toString(), + getScriptFileNames: () => [syntacticHostCtx.fileName], + getScriptVersion: fileName => fileName === syntacticHostCtx.fileName ? syntacticHostCtx.fileVersion.toString() : '', + getScriptSnapshot: fileName => fileName === syntacticHostCtx.fileName ? syntacticHostCtx.snapshot : undefined, + getCompilationSettings: () => languageServiceHost.getCompilationSettings() ?? {}, + getCurrentDirectory: () => '/', + getDefaultLibFileName: () => '', + readFile: () => undefined, + fileExists: fileName => fileName === syntacticHostCtx.fileName, + }; + const syntacticCtx = { + ...semanticCtx, + typescript: { + ...semanticCtx.typescript, + languageServiceHost: syntacticServiceHost, + languageService: ts.createLanguageService(syntacticServiceHost), + }, + }; + const findDocumentSymbols = documentSymbol$1.register(syntacticCtx); + const doFormatting = formatting$1.register(syntacticCtx); + const getFoldingRanges = foldingRanges$1.register(syntacticCtx); + return { + dispose() { + languageService.dispose(); + sys.dispose(); + }, + provide: { + 'typescript/typescript': () => ts, + 'typescript/sys': () => sys, + 'typescript/sourceFile': document => { + if ((0, shared_1.isTsDocument)(document)) { + const sourceFile = getSemanticServiceSourceFile(document.uri); + if (sourceFile) { + return sourceFile; + } + prepareSyntacticService(document); + return syntacticCtx.typescript.languageService.getProgram()?.getSourceFile(syntacticHostCtx.fileName); + } + }, + 'typescript/textDocument': semanticCtx.getTextDocument, + 'typescript/languageService': document => { + if (!document || getSemanticServiceSourceFile(document.uri)) { + return semanticCtx.typescript.languageService; + } + prepareSyntacticService(document); + return syntacticCtx.typescript.languageService; + }, + 'typescript/syntacticLanguageService': () => { + return syntacticCtx.typescript.languageService; + }, + 'typescript/languageServiceHost': document => { + if (!document || getSemanticServiceSourceFile(document.uri)) { + return semanticCtx.typescript.languageServiceHost; + } + prepareSyntacticService(document); + return syntacticCtx.typescript.languageServiceHost; + }, + 'typescript/syntacticLanguageServiceHost': () => { + return syntacticCtx.typescript.languageServiceHost; + }, + }, + ...triggerCharacters, + triggerCharacters: [ + ...basicTriggerCharacters, + jsDocTriggerCharacter, + directiveCommentTriggerCharacter, + ], + provideAutoInsertionEdit(document, position, ctx) { + if ((document.languageId === 'javascriptreact' || document.languageId === 'typescriptreact') + && ctx.lastChange.text.endsWith('>')) { + const configName = document.languageId === 'javascriptreact' ? 'javascript.autoClosingTags' : 'typescript.autoClosingTags'; + const config = context.env.getConfiguration?.(configName) ?? true; + if (config) { + prepareSyntacticService(document); + const close = syntacticCtx.typescript.languageService.getJsxClosingTagAtPosition(context.env.uriToFileName(document.uri), document.offsetAt(position)); + if (close) { + return '$0' + close.newText; + } + } + } + }, + provideCompletionItems(document, position, context, token) { + if (!(0, shared_1.isTsDocument)(document)) + return; + return worker(token, async () => { + let result = { + isIncomplete: false, + items: [], + }; + if (!context || context.triggerKind !== 2 || (context.triggerCharacter && basicTriggerCharacters.includes(context.triggerCharacter))) { + const completeOptions = { + triggerCharacter: context?.triggerCharacter, + triggerKind: context?.triggerKind, + }; + const basicResult = await doComplete(document.uri, position, completeOptions); + if (basicResult) { + result = basicResult; + } + } + if (!context || context.triggerKind !== 2 || context.triggerCharacter === jsDocTriggerCharacter) { + const jsdocResult = await doJsDocComplete(document.uri, position); + if (jsdocResult) { + result.items.push(jsdocResult); + } + } + if (!context || context.triggerKind !== 2 || context.triggerCharacter === directiveCommentTriggerCharacter) { + const directiveCommentResult = await doDirectiveCommentComplete(document.uri, position); + if (directiveCommentResult) { + result.items = result.items.concat(directiveCommentResult); + } + } + return result; + }); + }, + resolveCompletionItem(item, token) { + return worker(token, () => { + return doCompletionResolve(item); + }); + }, + provideRenameRange(document, position, token) { + if (!(0, shared_1.isTsDocument)(document)) + return; + return worker(token, () => { + return doPrepareRename(document.uri, position); + }); + }, + provideRenameEdits(document, position, newName, token) { + if (!(0, shared_1.isTsDocument)(document) && !(0, shared_1.isJsonDocument)(document)) + return; + return worker(token, () => { + return doRename(document.uri, position, newName); + }); + }, + provideCodeActions(document, range, context, token) { + if (!(0, shared_1.isTsDocument)(document)) + return; + return worker(token, () => { + return getCodeActions(document.uri, range, context); + }); + }, + resolveCodeAction(codeAction, token) { + return worker(token, () => { + return doCodeActionResolve(codeAction); + }); + }, + provideInlayHints(document, range, token) { + if (!(0, shared_1.isTsDocument)(document)) + return; + return worker(token, () => { + return getInlayHints(document.uri, range); + }); + }, + provideCallHierarchyItems(document, position, token) { + if (!(0, shared_1.isTsDocument)(document)) + return; + return worker(token, () => { + return callHierarchy.doPrepare(document.uri, position); + }); + }, + provideCallHierarchyIncomingCalls(item, token) { + return worker(token, () => { + return callHierarchy.getIncomingCalls(item); + }); + }, + provideCallHierarchyOutgoingCalls(item, token) { + return worker(token, () => { + return callHierarchy.getOutgoingCalls(item); + }); + }, + provideDefinition(document, position, token) { + if (!(0, shared_1.isTsDocument)(document)) + return; + return worker(token, () => { + return findDefinition(document.uri, position); + }); + }, + provideTypeDefinition(document, position, token) { + if (!(0, shared_1.isTsDocument)(document)) + return; + return worker(token, () => { + return findTypeDefinition(document.uri, position); + }); + }, + provideDiagnostics(document, token) { + if (!(0, shared_1.isTsDocument)(document)) + return; + return worker(token, () => { + return doValidation(document.uri, { syntactic: true, suggestion: true }); + }); + }, + provideSemanticDiagnostics(document, token) { + if (!(0, shared_1.isTsDocument)(document)) + return; + return worker(token, () => { + return doValidation(document.uri, { semantic: true, declaration: true }); + }); + }, + provideHover(document, position, token) { + if (!(0, shared_1.isTsDocument)(document)) + return; + return worker(token, () => { + return doHover(document.uri, position); + }); + }, + provideImplementation(document, position, token) { + if (!(0, shared_1.isTsDocument)(document)) + return; + return worker(token, () => { + return findImplementations(document.uri, position); + }); + }, + provideReferences(document, position, token) { + if (!(0, shared_1.isTsDocument)(document) && !(0, shared_1.isJsonDocument)(document)) + return; + return worker(token, () => { + return findReferences(document.uri, position); + }); + }, + provideFileReferences(document, token) { + if (!(0, shared_1.isTsDocument)(document) && !(0, shared_1.isJsonDocument)(document)) + return; + return worker(token, () => { + return findFileReferences(document.uri); + }); + }, + provideDocumentHighlights(document, position, token) { + if (!(0, shared_1.isTsDocument)(document)) + return; + return worker(token, () => { + return findDocumentHighlights(document.uri, position); + }); + }, + provideDocumentSymbols(document) { + if (!(0, shared_1.isTsDocument)(document)) + return; + prepareSyntacticService(document); + return findDocumentSymbols(document.uri); + }, + provideDocumentSemanticTokens(document, range, legend, token) { + if (!(0, shared_1.isTsDocument)(document)) + return; + return worker(token, () => { + return getDocumentSemanticTokens(document.uri, range, legend); + }); + }, + provideWorkspaceSymbols(query, token) { + return worker(token, () => { + return findWorkspaceSymbols(query); + }); + }, + provideFileRenameEdits(oldUri, newUri, token) { + return worker(token, () => { + return getEditsForFileRename(oldUri, newUri); + }); + }, + provideFoldingRanges(document) { + if (!(0, shared_1.isTsDocument)(document)) + return; + prepareSyntacticService(document); + return getFoldingRanges(document.uri); + }, + provideSelectionRanges(document, positions, token) { + if (!(0, shared_1.isTsDocument)(document)) + return; + return worker(token, () => { + return getSelectionRanges(document.uri, positions); + }); + }, + provideSignatureHelp(document, position, context, token) { + if (!(0, shared_1.isTsDocument)(document)) + return; + return worker(token, () => { + return getSignatureHelp(document.uri, position, context); + }); + }, + async provideDocumentFormattingEdits(document, range, options_2) { + if (!(0, shared_1.isTsDocument)(document)) + return; + const enable = await context.env.getConfiguration?.((0, shared_1.getConfigTitle)(document) + '.format.enable'); + if (enable === false) { + return; + } + prepareSyntacticService(document); + return await doFormatting.onRange(document, range, options_2); + }, + async provideOnTypeFormattingEdits(document, position, key, options_2) { + if (!(0, shared_1.isTsDocument)(document)) + return; + const enable = await context.env.getConfiguration?.((0, shared_1.getConfigTitle)(document) + '.format.enable'); + if (enable === false) { + return; + } + prepareSyntacticService(document); + return doFormatting.onType(document, options_2, position, key); + }, + provideFormattingIndentSensitiveLines(document) { + if (!(0, shared_1.isTsDocument)(document)) + return; + prepareSyntacticService(document); + const sourceFile = syntacticCtx.typescript.languageService.getProgram()?.getSourceFile(context.env.uriToFileName(document.uri)); + if (sourceFile) { + const lines = []; + sourceFile.forEachChild(function walk(node) { + if (node.kind === ts.SyntaxKind.FirstTemplateToken + || node.kind === ts.SyntaxKind.LastTemplateToken + || node.kind === ts.SyntaxKind.TemplateHead) { + const startLine = document.positionAt(node.getStart(sourceFile)).line; + const endLine = document.positionAt(node.getEnd()).line; + for (let i = startLine + 1; i <= endLine; i++) { + lines.push(i); + } + } + node.forEachChild(walk); + }); + return lines; + } + }, + }; + async function worker(token, callback) { + let oldSysVersion = sys.version; + let result = await callback(); + let newSysVersion = await sys.sync(); + while (newSysVersion !== oldSysVersion && !token.isCancellationRequested) { + oldSysVersion = newSysVersion; + result = await callback(); + newSysVersion = await sys.sync(); + } + return result; + } + function getSemanticServiceSourceFile(uri) { + const sourceFile = semanticCtx.typescript.languageService.getProgram()?.getSourceFile(context.env.uriToFileName(uri)); + if (sourceFile) { + return sourceFile; + } + } + function prepareSyntacticService(document) { + if (syntacticHostCtx.document === document && syntacticHostCtx.fileVersion === document.version) { + return; + } + syntacticHostCtx.fileName = context.env.uriToFileName(document.uri); + syntacticHostCtx.fileVersion = document.version; + syntacticHostCtx.snapshot = ts.ScriptSnapshot.fromString(document.getText()); + syntacticHostCtx.projectVersion++; + } + }; + } + exports.create = create; + exports.default = create; + function getBasicTriggerCharacters(tsVersion) { + const triggerCharacters = ['.', '"', '\'', '`', '/', '<']; + // https://github.com/microsoft/vscode/blob/8e65ae28d5fb8b3c931135da1a41edb9c80ae46f/extensions/typescript-language-features/src/languageFeatures/completions.ts#L811-L833 + if (semver.lt(tsVersion, '3.1.0') || semver.gte(tsVersion, '3.2.0')) { + triggerCharacters.push('@'); + } + if (semver.gte(tsVersion, '3.8.1')) { + triggerCharacters.push('#'); + } + if (semver.gte(tsVersion, '4.3.0')) { + triggerCharacters.push(' '); + } + return triggerCharacters; + } + +} (out$2)); + +var out = {}; + +Object.defineProperty(out, "__esModule", { value: true }); +out.create = void 0; +function create$a() { + return (context) => { + return { + provideInlayHints(document, range) { + if (isTsDocument$1(document.languageId)) { + const ts = context.inject('typescript/typescript'); + const languageService = context.inject('typescript/languageService'); + const inlayHints = []; + for (const pointer of document.getText(range).matchAll(/^\s*\/\/\s*\^\?/gm)) { + const pointerOffset = pointer.index + pointer[0].indexOf('^?') + document.offsetAt(range.start); + const pointerPosition = document.positionAt(pointerOffset); + const hoverOffset = document.offsetAt({ + line: pointerPosition.line - 1, + character: pointerPosition.character, + }); + const quickInfo = languageService.getQuickInfoAtPosition(context.env.uriToFileName(document.uri), hoverOffset); + if (quickInfo) { + inlayHints.push({ + position: { line: pointerPosition.line, character: pointerPosition.character + 2 }, + label: ts.displayPartsToString(quickInfo.displayParts), + paddingLeft: true, + paddingRight: false, + }); + } + } + return inlayHints; + } + }, + }; + }; +} +out.create = create$a; +out.default = create$a; +function isTsDocument$1(languageId) { + return languageId === 'javascript' || + languageId === 'typescript' || + languageId === 'javascriptreact' || + languageId === 'typescriptreact'; +} + +var vue$2 = {}; + +var data = {}; + +const version$k = 1.1; +const tags$d = [ + { + name: "Transition", + description: { + kind: "markdown", + value: "\nProvides animated transition effects to a **single** element or component.\n\n- **Props**\n\n ```ts\n interface TransitionProps {\n /**\n * Used to automatically generate transition CSS class names.\n * e.g. `name: 'fade'` will auto expand to `.fade-enter`,\n * `.fade-enter-active`, etc.\n */\n name?: string\n /**\n * Whether to apply CSS transition classes.\n * Default: true\n */\n css?: boolean\n /**\n * Specifies the type of transition events to wait for to\n * determine transition end timing.\n * Default behavior is auto detecting the type that has\n * longer duration.\n */\n type?: 'transition' | 'animation'\n /**\n * Specifies explicit durations of the transition.\n * Default behavior is wait for the first `transitionend`\n * or `animationend` event on the root transition element.\n */\n duration?: number | { enter: number; leave: number }\n /**\n * Controls the timing sequence of leaving/entering transitions.\n * Default behavior is simultaneous.\n */\n mode?: 'in-out' | 'out-in' | 'default'\n /**\n * Whether to apply transition on initial render.\n * Default: false\n */\n appear?: boolean\n\n /**\n * Props for customizing transition classes.\n * Use kebab-case in templates, e.g. enter-from-class=\"xxx\"\n */\n enterFromClass?: string\n enterActiveClass?: string\n enterToClass?: string\n appearFromClass?: string\n appearActiveClass?: string\n appearToClass?: string\n leaveFromClass?: string\n leaveActiveClass?: string\n leaveToClass?: string\n }\n ```\n\n- **Events**\n\n - `@before-enter`\n - `@before-leave`\n - `@enter`\n - `@leave`\n - `@appear`\n - `@after-enter`\n - `@after-leave`\n - `@after-appear`\n - `@enter-cancelled`\n - `@leave-cancelled` (`v-show` only)\n - `@appear-cancelled`\n\n- **Example**\n\n Simple element:\n\n ```html\n <Transition>\n <div v-if=\"ok\">toggled content</div>\n </Transition>\n ```\n\n Forcing a transition by changing the `key` attribute:\n\n ```html\n <Transition>\n <div :key=\"text\">{{ text }}</div>\n </Transition>\n ```\n\n Dynamic component, with transition mode + animate on appear:\n\n ```html\n <Transition name=\"fade\" mode=\"out-in\" appear>\n <component :is=\"view\"></component>\n </Transition>\n ```\n\n Listening to transition events:\n\n ```html\n <Transition @after-enter=\"onTransitionComplete\">\n <div v-show=\"ok\">toggled content</div>\n </Transition>\n ```\n\n- **See also** [`<Transition>` Guide](https://vuejs.org/guide/built-ins/transition.html)\n" + }, + attributes: [ + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-components.html#transition" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-components.html#transition" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-components.html#transition" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-components.html#transition" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-components.html#transition" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-components.html#transition" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-components.html#transition" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-components.html#transition" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-components.html#transition" + } + ] + }, + { + name: "TransitionGroup", + description: { + kind: "markdown", + value: "\nProvides transition effects for **multiple** elements or components in a list.\n\n- **Props**\n\n `<TransitionGroup>` accepts the same props as `<Transition>` except `mode`, plus two additional props:\n\n ```ts\n interface TransitionGroupProps extends Omit<TransitionProps, 'mode'> {\n /**\n * If not defined, renders as a fragment.\n */\n tag?: string\n /**\n * For customizing the CSS class applied during move transitions.\n * Use kebab-case in templates, e.g. move-class=\"xxx\"\n */\n moveClass?: string\n }\n ```\n\n- **Events**\n\n `<TransitionGroup>` emits the same events as `<Transition>`.\n\n- **Details**\n\n By default, `<TransitionGroup>` doesn't render a wrapper DOM element, but one can be defined via the `tag` prop.\n\n Note that every child in a `<transition-group>` must be [**uniquely keyed**](https://vuejs.org/guide/essentials/list.html#maintaining-state-with-key) for the animations to work properly.\n\n `<TransitionGroup>` supports moving transitions via CSS transform. When a child's position on screen has changed after an update, it will get applied a moving CSS class (auto generated from the `name` attribute or configured with the `move-class` prop). If the CSS `transform` property is \"transition-able\" when the moving class is applied, the element will be smoothly animated to its destination using the [FLIP technique](https://aerotwist.com/blog/flip-your-animations/).\n\n- **Example**\n\n ```html\n <TransitionGroup tag=\"ul\" name=\"slide\">\n <li v-for=\"item in items\" :key=\"item.id\">\n {{ item.text }}\n </li>\n </TransitionGroup>\n ```\n\n- **See also** [Guide - TransitionGroup](https://vuejs.org/guide/built-ins/transition-group.html)\n" + }, + attributes: [ + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-components.html#transitiongroup" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-components.html#transitiongroup" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-components.html#transitiongroup" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-components.html#transitiongroup" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-components.html#transitiongroup" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-components.html#transitiongroup" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-components.html#transitiongroup" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-components.html#transitiongroup" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-components.html#transitiongroup" + } + ] + }, + { + name: "KeepAlive", + description: { + kind: "markdown", + value: "\nCaches dynamically toggled components wrapped inside.\n\n- **Props**\n\n ```ts\n interface KeepAliveProps {\n /**\n * If specified, only components with names matched by\n * `include` will be cached.\n */\n include?: MatchPattern\n /**\n * Any component with a name matched by `exclude` will\n * not be cached.\n */\n exclude?: MatchPattern\n /**\n * The maximum number of component instances to cache.\n */\n max?: number | string\n }\n\n type MatchPattern = string | RegExp | (string | RegExp)[]\n ```\n\n- **Details**\n\n When wrapped around a dynamic component, `<KeepAlive>` caches the inactive component instances without destroying them.\n\n There can only be one active component instance as the direct child of `<KeepAlive>` at any time.\n\n When a component is toggled inside `<KeepAlive>`, its `activated` and `deactivated` lifecycle hooks will be invoked accordingly, providing an alternative to `mounted` and `unmounted`, which are not called. This applies to the direct child of `<KeepAlive>` as well as to all of its descendants.\n\n- **Example**\n\n Basic usage:\n\n ```html\n <KeepAlive>\n <component :is=\"view\"></component>\n </KeepAlive>\n ```\n\n When used with `v-if` / `v-else` branches, there must be only one component rendered at a time:\n\n ```html\n <KeepAlive>\n <comp-a v-if=\"a > 1\"></comp-a>\n <comp-b v-else></comp-b>\n </KeepAlive>\n ```\n\n Used together with `<Transition>`:\n\n ```html\n <Transition>\n <KeepAlive>\n <component :is=\"view\"></component>\n </KeepAlive>\n </Transition>\n ```\n\n Using `include` / `exclude`:\n\n ```html\n <!-- comma-delimited string -->\n <KeepAlive include=\"a,b\">\n <component :is=\"view\"></component>\n </KeepAlive>\n\n <!-- regex (use `v-bind`) -->\n <KeepAlive :include=\"/a|b/\">\n <component :is=\"view\"></component>\n </KeepAlive>\n\n <!-- Array (use `v-bind`) -->\n <KeepAlive :include=\"['a', 'b']\">\n <component :is=\"view\"></component>\n </KeepAlive>\n ```\n\n Usage with `max`:\n\n ```html\n <KeepAlive :max=\"10\">\n <component :is=\"view\"></component>\n </KeepAlive>\n ```\n\n- **See also** [Guide - KeepAlive](https://vuejs.org/guide/built-ins/keep-alive.html)\n" + }, + attributes: [ + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-components.html#keepalive" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-components.html#keepalive" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-components.html#keepalive" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-components.html#keepalive" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-components.html#keepalive" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-components.html#keepalive" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-components.html#keepalive" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-components.html#keepalive" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-components.html#keepalive" + } + ] + }, + { + name: "Teleport", + description: { + kind: "markdown", + value: "\nRenders its slot content to another part of the DOM.\n\n- **Props**\n\n ```ts\n interface TeleportProps {\n /**\n * Required. Specify target container.\n * Can either be a selector or an actual element.\n */\n to: string | HTMLElement\n /**\n * When `true`, the content will remain in its original\n * location instead of moved into the target container.\n * Can be changed dynamically.\n */\n disabled?: boolean\n }\n ```\n\n- **Example**\n\n Specifying target container:\n\n ```html\n <Teleport to=\"#some-id\" />\n <Teleport to=\".some-class\" />\n <Teleport to=\"[data-teleport]\" />\n ```\n\n Conditionally disabling:\n\n ```html\n <Teleport to=\"#popup\" :disabled=\"displayVideoInline\">\n <video src=\"./my-movie.mp4\">\n </Teleport>\n ```\n\n- **See also** [Guide - Teleport](https://vuejs.org/guide/built-ins/teleport.html)\n" + }, + attributes: [ + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-components.html#teleport" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-components.html#teleport" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-components.html#teleport" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-components.html#teleport" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-components.html#teleport" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-components.html#teleport" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-components.html#teleport" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-components.html#teleport" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-components.html#teleport" + } + ] + }, + { + name: "Suspense", + description: { + kind: "markdown", + value: "\nUsed for orchestrating nested async dependencies in a component tree.\n\n- **Props**\n\n ```ts\n interface SuspenseProps {\n timeout?: string | number\n }\n ```\n\n- **Events**\n\n - `@resolve`\n - `@pending`\n - `@fallback`\n\n- **Details**\n\n `<Suspense>` accepts two slots: the `#default` slot and the `#fallback` slot. It will display the content of the fallback slot while rendering the default slot in memory.\n\n If it encounters async dependencies ([Async Components](https://vuejs.org/guide/components/async.html) and components with [`async setup()`](https://vuejs.org/guide/built-ins/suspense.html#async-setup)) while rendering the default slot, it will wait until all of them are resolved before displaying the default slot.\n\n- **See also** [Guide - Suspense](https://vuejs.org/guide/built-ins/suspense.html)\n" + }, + attributes: [ + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-components.html#suspense" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-components.html#suspense" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-components.html#suspense" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-components.html#suspense" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-components.html#suspense" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-components.html#suspense" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-components.html#suspense" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-components.html#suspense" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-components.html#suspense" + } + ] + }, + { + name: "component", + description: { + kind: "markdown", + value: "\nA \"meta component\" for rendering dynamic components or elements.\n\n- **Props**\n\n ```ts\n interface DynamicComponentProps {\n is: string | Component\n }\n ```\n\n- **Details**\n\n The actual component to render is determined by the `is` prop.\n\n - When `is` is a string, it could be either an HTML tag name or a component's registered name.\n\n - Alternatively, `is` can also be directly bound to the definition of a component.\n\n- **Example**\n\n Rendering components by registered name (Options API):\n\n ```vue\n <script>\n import Foo from './Foo.vue'\n import Bar from './Bar.vue'\n\n export default {\n components: { Foo, Bar },\n data() {\n return {\n view: 'Foo'\n }\n }\n }\n </script>\n\n <template>\n <component :is=\"view\" />\n </template>\n ```\n\n Rendering components by definition (Composition API with `<script setup>`):\n\n ```vue\n <script setup>\n import Foo from './Foo.vue'\n import Bar from './Bar.vue'\n </script>\n\n <template>\n <component :is=\"Math.random() > 0.5 ? Foo : Bar\" />\n </template>\n ```\n\n Rendering HTML elements:\n\n ```html\n <component :is=\"href ? 'a' : 'span'\"></component>\n ```\n\n The [built-in components](./built-in-components) can all be passed to `is`, but you must register them if you want to pass them by name. For example:\n\n ```vue\n <script>\n import { Transition, TransitionGroup } from 'vue'\n\n export default {\n components: {\n Transition,\n TransitionGroup\n }\n }\n </script>\n\n <template>\n <component :is=\"isGroup ? 'TransitionGroup' : 'Transition'\">\n ...\n </component>\n </template>\n ```\n\n Registration is not required if you pass the component itself to `is` rather than its name, e.g. in `<script setup>`.\n\n If `v-model` is used on a `<component>` tag, the template compiler will expand it to a `modelValue` prop and `update:modelValue` event listener, much like it would for any other component. However, this won't be compatible with native HTML elements, such as `<input>` or `<select>`. As a result, using `v-model` with a dynamically created native element won't work:\n\n ```vue\n <script setup>\n import { ref } from 'vue'\n\n const tag = ref('input')\n const username = ref('')\n </script>\n\n <template>\n <!-- This won't work as 'input' is a native HTML element -->\n <component :is=\"tag\" v-model=\"username\" />\n </template>\n ```\n\n In practice, this edge case isn't common as native form fields are typically wrapped in components in real applications. If you do need to use a native element directly then you can split the `v-model` into an attribute and event manually.\n\n- **See also** [Dynamic Components](https://vuejs.org/guide/essentials/component-basics.html#dynamic-components)\n" + }, + attributes: [ + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-special-elements.html#component" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-special-elements.html#component" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-special-elements.html#component" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-special-elements.html#component" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-special-elements.html#component" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-special-elements.html#component" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-special-elements.html#component" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-special-elements.html#component" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-special-elements.html#component" + } + ] + }, + { + name: "slot", + description: { + kind: "markdown", + value: "\nDenotes slot content outlets in templates.\n\n- **Props**\n\n ```ts\n interface SlotProps {\n /**\n * Any props passed to <slot> to passed as arguments\n * for scoped slots\n */\n [key: string]: any\n /**\n * Reserved for specifying slot name.\n */\n name?: string\n }\n ```\n\n- **Details**\n\n The `<slot>` element can use the `name` attribute to specify a slot name. When no `name` is specified, it will render the default slot. Additional attributes passed to the slot element will be passed as slot props to the scoped slot defined in the parent.\n\n The element itself will be replaced by its matched slot content.\n\n `<slot>` elements in Vue templates are compiled into JavaScript, so they are not to be confused with [native `<slot>` elements](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/slot).\n\n- **See also** [Component - Slots](https://vuejs.org/guide/components/slots.html)\n" + }, + attributes: [ + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-special-elements.html#slot" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-special-elements.html#slot" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-special-elements.html#slot" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-special-elements.html#slot" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-special-elements.html#slot" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-special-elements.html#slot" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-special-elements.html#slot" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-special-elements.html#slot" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-special-elements.html#slot" + } + ] + }, + { + name: "template", + description: { + kind: "markdown", + value: "\nThe `<template>` tag is used as a placeholder when we want to use a built-in directive without rendering an element in the DOM.\n\n- **Details**\n\n The special handling for `<template>` is only triggered if it is used with one of these directives:\n\n - `v-if`, `v-else-if`, or `v-else`\n - `v-for`\n - `v-slot`\n\n If none of those directives are present then it will be rendered as a [native `<template>` element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/template) instead.\n\n A `<template>` with a `v-for` can also have a [`key` attribute](https://vuejs.org/api/built-in-special-attributes.html#key). All other attributes and directives will be discarded, as they aren't meaningful without a corresponding element.\n\n Single-file components use a [top-level `<template>` tag](https://vuejs.org/api/sfc-spec.html#language-blocks) to wrap the entire template. That usage is separate from the use of `<template>` described above. That top-level tag is not part of the template itself and doesn't support template syntax, such as directives.\n\n- **See also**\n - [Guide - `v-if` on `<template>`](https://vuejs.org/guide/essentials/conditional.html#v-if-on-template)\n - [Guide - `v-for` on `<template>`](https://vuejs.org/guide/essentials/list.html#v-for-on-template)\n - [Guide - Named slots](https://vuejs.org/guide/components/slots.html#named-slots)\n" + }, + attributes: [ + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-special-elements.html#template" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-special-elements.html#template" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-special-elements.html#template" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-special-elements.html#template" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-special-elements.html#template" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-special-elements.html#template" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-special-elements.html#template" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-special-elements.html#template" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-special-elements.html#template" + } + ] + } +]; +const globalAttributes$k = [ + { + name: "v-text", + description: { + kind: "markdown", + value: "\nUpdate the element's text content.\n\n- **Expects:** `string`\n\n- **Details**\n\n `v-text` works by setting the element's [textContent](https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent) property, so it will overwrite any existing content inside the element. If you need to update the part of `textContent`, you should use [mustache interpolations](https://vuejs.org/guide/essentials/template-syntax.html#text-interpolation) instead.\n\n- **Example**\n\n ```html\n <span v-text=\"msg\"></span>\n <!-- same as -->\n <span>{{msg}}</span>\n ```\n\n- **See also** [Template Syntax - Text Interpolation](https://vuejs.org/guide/essentials/template-syntax.html#text-interpolation)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-text" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-text" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-text" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-text" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-text" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-text" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-text" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-text" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-text" + } + ] + }, + { + name: "v-html", + description: { + kind: "markdown", + value: "\nUpdate the element's [innerHTML](https://developer.mozilla.org/en-US/docs/Web/API/Element/innerHTML).\n\n- **Expects:** `string`\n\n- **Details**\n\n Contents of `v-html` are inserted as plain HTML - Vue template syntax will not be processed. If you find yourself trying to compose templates using `v-html`, try to rethink the solution by using components instead.\n\n ::: warning Security Note\n Dynamically rendering arbitrary HTML on your website can be very dangerous because it can easily lead to [XSS attacks](https://en.wikipedia.org/wiki/Cross-site_scripting). Only use `v-html` on trusted content and **never** on user-provided content.\n :::\n\n In [Single-File Components](https://vuejs.org/guide/scaling-up/sfc.html), `scoped` styles will not apply to content inside `v-html`, because that HTML is not processed by Vue's template compiler. If you want to target `v-html` content with scoped CSS, you can instead use [CSS modules](./sfc-css-features#css-modules) or an additional, global `<style>` element with a manual scoping strategy such as BEM.\n\n- **Example**\n\n ```html\n <div v-html=\"html\"></div>\n ```\n\n- **See also** [Template Syntax - Raw HTML](https://vuejs.org/guide/essentials/template-syntax.html#raw-html)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-html" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-html" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-html" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-html" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-html" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-html" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-html" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-html" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-html" + } + ] + }, + { + name: "v-show", + description: { + kind: "markdown", + value: "\nToggle the element's visibility based on the truthy-ness of the expression value.\n\n- **Expects:** `any`\n\n- **Details**\n\n `v-show` works by setting the `display` CSS property via inline styles, and will try to respect the initial `display` value when the element is visible. It also triggers transitions when its condition changes.\n\n- **See also** [Conditional Rendering - v-show](https://vuejs.org/guide/essentials/conditional.html#v-show)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-show" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-show" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-show" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-show" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-show" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-show" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-show" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-show" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-show" + } + ] + }, + { + name: "v-if", + description: { + kind: "markdown", + value: "\nConditionally render an element or a template fragment based on the truthy-ness of the expression value.\n\n- **Expects:** `any`\n\n- **Details**\n\n When a `v-if` element is toggled, the element and its contained directives / components are destroyed and re-constructed. If the initial condition is falsy, then the inner content won't be rendered at all.\n\n Can be used on `<template>` to denote a conditional block containing only text or multiple elements.\n\n This directive triggers transitions when its condition changes.\n\n When used together, `v-if` has a higher priority than `v-for`. We don't recommend using these two directives together on one element — see the [list rendering guide](https://vuejs.org/guide/essentials/list.html#v-for-with-v-if) for details.\n\n- **See also** [Conditional Rendering - v-if](https://vuejs.org/guide/essentials/conditional.html#v-if)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-if" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-if" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-if" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-if" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-if" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-if" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-if" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-if" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-if" + } + ] + }, + { + name: "v-else", + valueSet: "v", + description: { + kind: "markdown", + value: "\nDenote the \"else block\" for `v-if` or a `v-if` / `v-else-if` chain.\n\n- **Does not expect expression**\n\n- **Details**\n\n - Restriction: previous sibling element must have `v-if` or `v-else-if`.\n\n - Can be used on `<template>` to denote a conditional block containing only text or multiple elements.\n\n- **Example**\n\n ```html\n <div v-if=\"Math.random() > 0.5\">\n Now you see me\n </div>\n <div v-else>\n Now you don't\n </div>\n ```\n\n- **See also** [Conditional Rendering - v-else](https://vuejs.org/guide/essentials/conditional.html#v-else)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-else" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-else" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-else" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-else" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-else" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-else" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-else" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-else" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-else" + } + ] + }, + { + name: "v-else-if", + description: { + kind: "markdown", + value: "\nDenote the \"else if block\" for `v-if`. Can be chained.\n\n- **Expects:** `any`\n\n- **Details**\n\n - Restriction: previous sibling element must have `v-if` or `v-else-if`.\n\n - Can be used on `<template>` to denote a conditional block containing only text or multiple elements.\n\n- **Example**\n\n ```html\n <div v-if=\"type === 'A'\">\n A\n </div>\n <div v-else-if=\"type === 'B'\">\n B\n </div>\n <div v-else-if=\"type === 'C'\">\n C\n </div>\n <div v-else>\n Not A/B/C\n </div>\n ```\n\n- **See also** [Conditional Rendering - v-else-if](https://vuejs.org/guide/essentials/conditional.html#v-else-if)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-else-if" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-else-if" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-else-if" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-else-if" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-else-if" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-else-if" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-else-if" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-else-if" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-else-if" + } + ] + }, + { + name: "v-for", + description: { + kind: "markdown", + value: "\nRender the element or template block multiple times based on the source data.\n\n- **Expects:** `Array | Object | number | string | Iterable`\n\n- **Details**\n\n The directive's value must use the special syntax `alias in expression` to provide an alias for the current element being iterated on:\n\n ```html\n <div v-for=\"item in items\">\n {{ item.text }}\n </div>\n ```\n\n Alternatively, you can also specify an alias for the index (or the key if used on an Object):\n\n ```html\n <div v-for=\"(item, index) in items\"></div>\n <div v-for=\"(value, key) in object\"></div>\n <div v-for=\"(value, name, index) in object\"></div>\n ```\n\n The default behavior of `v-for` will try to patch the elements in-place without moving them. To force it to reorder elements, you should provide an ordering hint with the `key` special attribute:\n\n ```html\n <div v-for=\"item in items\" :key=\"item.id\">\n {{ item.text }}\n </div>\n ```\n\n `v-for` can also work on values that implement the [Iterable Protocol](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#The_iterable_protocol), including native `Map` and `Set`.\n\n- **See also**\n - [List Rendering](https://vuejs.org/guide/essentials/list.html)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-for" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-for" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-for" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-for" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-for" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-for" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-for" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-for" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-for" + } + ] + }, + { + name: "v-on", + description: { + kind: "markdown", + value: "\nAttach an event listener to the element.\n\n- **Shorthand:** `@`\n\n- **Expects:** `Function | Inline Statement | Object (without argument)`\n\n- **Argument:** `event` (optional if using Object syntax)\n\n- **Modifiers**\n\n - `.stop` - call `event.stopPropagation()`.\n - `.prevent` - call `event.preventDefault()`.\n - `.capture` - add event listener in capture mode.\n - `.self` - only trigger handler if event was dispatched from this element.\n - `.{keyAlias}` - only trigger handler on certain keys.\n - `.once` - trigger handler at most once.\n - `.left` - only trigger handler for left button mouse events.\n - `.right` - only trigger handler for right button mouse events.\n - `.middle` - only trigger handler for middle button mouse events.\n - `.passive` - attaches a DOM event with `{ passive: true }`.\n\n- **Details**\n\n The event type is denoted by the argument. The expression can be a method name, an inline statement, or omitted if there are modifiers present.\n\n When used on a normal element, it listens to [**native DOM events**](https://developer.mozilla.org/en-US/docs/Web/Events) only. When used on a custom element component, it listens to **custom events** emitted on that child component.\n\n When listening to native DOM events, the method receives the native event as the only argument. If using inline statement, the statement has access to the special `$event` property: `v-on:click=\"handle('ok', $event)\"`.\n\n `v-on` also supports binding to an object of event / listener pairs without an argument. Note when using the object syntax, it does not support any modifiers.\n\n- **Example**\n\n ```html\n <!-- method handler -->\n <button v-on:click=\"doThis\"></button>\n\n <!-- dynamic event -->\n <button v-on:[event]=\"doThis\"></button>\n\n <!-- inline statement -->\n <button v-on:click=\"doThat('hello', $event)\"></button>\n\n <!-- shorthand -->\n <button @click=\"doThis\"></button>\n\n <!-- shorthand dynamic event -->\n <button @[event]=\"doThis\"></button>\n\n <!-- stop propagation -->\n <button @click.stop=\"doThis\"></button>\n\n <!-- prevent default -->\n <button @click.prevent=\"doThis\"></button>\n\n <!-- prevent default without expression -->\n <form @submit.prevent></form>\n\n <!-- chain modifiers -->\n <button @click.stop.prevent=\"doThis\"></button>\n\n <!-- key modifier using keyAlias -->\n <input @keyup.enter=\"onEnter\" />\n\n <!-- the click event will be triggered at most once -->\n <button v-on:click.once=\"doThis\"></button>\n\n <!-- object syntax -->\n <button v-on=\"{ mousedown: doThis, mouseup: doThat }\"></button>\n ```\n\n Listening to custom events on a child component (the handler is called when \"my-event\" is emitted on the child):\n\n ```html\n <MyComponent @my-event=\"handleThis\" />\n\n <!-- inline statement -->\n <MyComponent @my-event=\"handleThis(123, $event)\" />\n ```\n\n- **See also**\n - [Event Handling](https://vuejs.org/guide/essentials/event-handling.html)\n - [Components - Custom Events](https://vuejs.org/guide/essentials/component-basics.html#listening-to-events)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-on" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-on" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-on" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-on" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-on" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-on" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-on" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-on" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-on" + } + ] + }, + { + name: "v-bind", + description: { + kind: "markdown", + value: "\nDynamically bind one or more attributes, or a component prop to an expression.\n\n- **Shorthand:** `:` or `.` (when using `.prop` modifier)\n\n- **Expects:** `any (with argument) | Object (without argument)`\n\n- **Argument:** `attrOrProp (optional)`\n\n- **Modifiers**\n\n - `.camel` - transform the kebab-case attribute name into camelCase.\n - `.prop` - force a binding to be set as a DOM property. <sup class=\"vt-badge\">3.2+</sup>\n - `.attr` - force a binding to be set as a DOM attribute. <sup class=\"vt-badge\">3.2+</sup>\n\n- **Usage**\n\n When used to bind the `class` or `style` attribute, `v-bind` supports additional value types such as Array or Objects. See linked guide section below for more details.\n\n When setting a binding on an element, Vue by default checks whether the element has the key defined as a property using an `in` operator check. If the property is defined, Vue will set the value as a DOM property instead of an attribute. This should work in most cases, but you can override this behavior by explicitly using `.prop` or `.attr` modifiers. This is sometimes necessary, especially when [working with custom elements](https://vuejs.org/guide/extras/web-components.html#passing-dom-properties).\n\n When used for component prop binding, the prop must be properly declared in the child component.\n\n When used without an argument, can be used to bind an object containing attribute name-value pairs.\n\n- **Example**\n\n ```html\n <!-- bind an attribute -->\n <img v-bind:src=\"imageSrc\" />\n\n <!-- dynamic attribute name -->\n <button v-bind:[key]=\"value\"></button>\n\n <!-- shorthand -->\n <img :src=\"imageSrc\" />\n\n <!-- shorthand dynamic attribute name -->\n <button :[key]=\"value\"></button>\n\n <!-- with inline string concatenation -->\n <img :src=\"'/path/to/images/' + fileName\" />\n\n <!-- class binding -->\n <div :class=\"{ red: isRed }\"></div>\n <div :class=\"[classA, classB]\"></div>\n <div :class=\"[classA, { classB: isB, classC: isC }]\"></div>\n\n <!-- style binding -->\n <div :style=\"{ fontSize: size + 'px' }\"></div>\n <div :style=\"[styleObjectA, styleObjectB]\"></div>\n\n <!-- binding an object of attributes -->\n <div v-bind=\"{ id: someProp, 'other-attr': otherProp }\"></div>\n\n <!-- prop binding. \"prop\" must be declared in the child component. -->\n <MyComponent :prop=\"someThing\" />\n\n <!-- pass down parent props in common with a child component -->\n <MyComponent v-bind=\"$props\" />\n\n <!-- XLink -->\n <svg><a :xlink:special=\"foo\"></a></svg>\n ```\n\n The `.prop` modifier also has a dedicated shorthand, `.`:\n\n ```html\n <div :someProperty.prop=\"someObject\"></div>\n\n <!-- equivalent to -->\n <div .someProperty=\"someObject\"></div>\n ```\n\n The `.camel` modifier allows camelizing a `v-bind` attribute name when using in-DOM templates, e.g. the SVG `viewBox` attribute:\n\n ```html\n <svg :view-box.camel=\"viewBox\"></svg>\n ```\n\n `.camel` is not needed if you are using string templates, or pre-compiling the template with a build step.\n\n- **See also**\n - [Class and Style Bindings](https://vuejs.org/guide/essentials/class-and-style.html)\n - [Components - Prop Passing Details](https://vuejs.org/guide/components/props.html#prop-passing-details)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-bind" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-bind" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-bind" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-bind" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-bind" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-bind" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-bind" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-bind" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-bind" + } + ] + }, + { + name: "v-model", + description: { + kind: "markdown", + value: "\nCreate a two-way binding on a form input element or a component.\n\n- **Expects:** varies based on value of form inputs element or output of components\n\n- **Limited to:**\n\n - `<input>`\n - `<select>`\n - `<textarea>`\n - components\n\n- **Modifiers**\n\n - [`.lazy`](https://vuejs.org/guide/essentials/forms.html#lazy) - listen to `change` events instead of `input`\n - [`.number`](https://vuejs.org/guide/essentials/forms.html#number) - cast valid input string to numbers\n - [`.trim`](https://vuejs.org/guide/essentials/forms.html#trim) - trim input\n\n- **See also**\n\n - [Form Input Bindings](https://vuejs.org/guide/essentials/forms.html)\n - [Component Events - Usage with `v-model`](https://vuejs.org/guide/components/v-model.html)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-model" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-model" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-model" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-model" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-model" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-model" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-model" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-model" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-model" + } + ] + }, + { + name: "v-slot", + description: { + kind: "markdown", + value: "\nDenote named slots or scoped slots that expect to receive props.\n\n- **Shorthand:** `#`\n\n- **Expects:** JavaScript expression that is valid in a function argument position, including support for destructuring. Optional - only needed if expecting props to be passed to the slot.\n\n- **Argument:** slot name (optional, defaults to `default`)\n\n- **Limited to:**\n\n - `<template>`\n - [components](https://vuejs.org/guide/components/slots.html#scoped-slots) (for a lone default slot with props)\n\n- **Example**\n\n ```html\n <!-- Named slots -->\n <BaseLayout>\n <template v-slot:header>\n Header content\n </template>\n\n <template v-slot:default>\n Default slot content\n </template>\n\n <template v-slot:footer>\n Footer content\n </template>\n </BaseLayout>\n\n <!-- Named slot that receives props -->\n <InfiniteScroll>\n <template v-slot:item=\"slotProps\">\n <div class=\"item\">\n {{ slotProps.item.text }}\n </div>\n </template>\n </InfiniteScroll>\n\n <!-- Default slot that receive props, with destructuring -->\n <Mouse v-slot=\"{ x, y }\">\n Mouse position: {{ x }}, {{ y }}\n </Mouse>\n ```\n\n- **See also**\n - [Components - Slots](https://vuejs.org/guide/components/slots.html)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-slot" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-slot" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-slot" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-slot" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-slot" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-slot" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-slot" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-slot" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-slot" + } + ] + }, + { + name: "v-pre", + description: { + kind: "markdown", + value: "\nSkip compilation for this element and all its children.\n\n- **Does not expect expression**\n\n- **Details**\n\n Inside the element with `v-pre`, all Vue template syntax will be preserved and rendered as-is. The most common use case of this is displaying raw mustache tags.\n\n- **Example**\n\n ```html\n <span v-pre>{{ this will not be compiled }}</span>\n ```\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-pre" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-pre" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-pre" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-pre" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-pre" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-pre" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-pre" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-pre" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-pre" + } + ] + }, + { + name: "v-once", + description: { + kind: "markdown", + value: "\nRender the element and component once only, and skip future updates.\n\n- **Does not expect expression**\n\n- **Details**\n\n On subsequent re-renders, the element/component and all its children will be treated as static content and skipped. This can be used to optimize update performance.\n\n ```html\n <!-- single element -->\n <span v-once>This will never change: {{msg}}</span>\n <!-- the element have children -->\n <div v-once>\n <h1>comment</h1>\n <p>{{msg}}</p>\n </div>\n <!-- component -->\n <MyComponent v-once :comment=\"msg\"></MyComponent>\n <!-- `v-for` directive -->\n <ul>\n <li v-for=\"i in list\" v-once>{{i}}</li>\n </ul>\n ```\n\n Since 3.2, you can also memoize part of the template with invalidation conditions using [`v-memo`](#v-memo).\n\n- **See also**\n - [Data Binding Syntax - interpolations](https://vuejs.org/guide/essentials/template-syntax.html#text-interpolation)\n - [v-memo](#v-memo)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-once" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-once" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-once" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-once" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-once" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-once" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-once" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-once" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-once" + } + ] + }, + { + name: "v-memo", + description: { + kind: "markdown", + value: "\n- **Expects:** `any[]`\n\n- **Details**\n\n Memoize a sub-tree of the template. Can be used on both elements and components. The directive expects a fixed-length array of dependency values to compare for the memoization. If every value in the array was the same as last render, then updates for the entire sub-tree will be skipped. For example:\n\n ```html\n <div v-memo=\"[valueA, valueB]\">\n ...\n </div>\n ```\n\n When the component re-renders, if both `valueA` and `valueB` remain the same, all updates for this `<div>` and its children will be skipped. In fact, even the Virtual DOM VNode creation will also be skipped since the memoized copy of the sub-tree can be reused.\n\n It is important to specify the memoization array correctly, otherwise we may skip updates that should indeed be applied. `v-memo` with an empty dependency array (`v-memo=\"[]\"`) would be functionally equivalent to `v-once`.\n\n **Usage with `v-for`**\n\n `v-memo` is provided solely for micro optimizations in performance-critical scenarios and should be rarely needed. The most common case where this may prove helpful is when rendering large `v-for` lists (where `length > 1000`):\n\n ```html\n <div v-for=\"item in list\" :key=\"item.id\" v-memo=\"[item.id === selected]\">\n <p>ID: {{ item.id }} - selected: {{ item.id === selected }}</p>\n <p>...more child nodes</p>\n </div>\n ```\n\n When the component's `selected` state changes, a large amount of VNodes will be created even though most of the items remained exactly the same. The `v-memo` usage here is essentially saying \"only update this item if it went from non-selected to selected, or the other way around\". This allows every unaffected item to reuse its previous VNode and skip diffing entirely. Note we don't need to include `item.id` in the memo dependency array here since Vue automatically infers it from the item's `:key`.\n\n :::warning\n When using `v-memo` with `v-for`, make sure they are used on the same element. **`v-memo` does not work inside `v-for`.**\n :::\n\n `v-memo` can also be used on components to manually prevent unwanted updates in certain edge cases where the child component update check has been de-optimized. But again, it is the developer's responsibility to specify correct dependency arrays to avoid skipping necessary updates.\n\n- **See also**\n - [v-once](#v-once)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-memo" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-memo" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-memo" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-memo" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-memo" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-memo" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-memo" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-memo" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-memo" + } + ] + }, + { + name: "v-cloak", + description: { + kind: "markdown", + value: "\nUsed to hide un-compiled template until it is ready.\n\n- **Does not expect expression**\n\n- **Details**\n\n **This directive is only needed in no-build-step setups.**\n\n When using in-DOM templates, there can be a \"flash of un-compiled templates\": the user may see raw mustache tags until the mounted component replaces them with rendered content.\n\n `v-cloak` will remain on the element until the associated component instance is mounted. Combined with CSS rules such as `[v-cloak] { display: none }`, it can be used to hide the raw templates until the component is ready.\n\n- **Example**\n\n ```css\n [v-cloak] {\n display: none;\n }\n ```\n\n ```html\n <div v-cloak>\n {{ message }}\n </div>\n ```\n\n The `<div>` will not be visible until the compilation is done.\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-cloak" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-cloak" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-cloak" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-cloak" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-cloak" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-cloak" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-cloak" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-cloak" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-cloak" + } + ] + }, + { + name: "key", + description: { + kind: "markdown", + value: "\nThe `key` special attribute is primarily used as a hint for Vue's virtual DOM algorithm to identify vnodes when diffing the new list of nodes against the old list.\n\n- **Expects:** `number | string | symbol`\n\n- **Details**\n\n Without keys, Vue uses an algorithm that minimizes element movement and tries to patch/reuse elements of the same type in-place as much as possible. With keys, it will reorder elements based on the order change of keys, and elements with keys that are no longer present will always be removed / destroyed.\n\n Children of the same common parent must have **unique keys**. Duplicate keys will cause render errors.\n\n The most common use case is combined with `v-for`:\n\n ```html\n <ul>\n <li v-for=\"item in items\" :key=\"item.id\">...</li>\n </ul>\n ```\n\n It can also be used to force replacement of an element/component instead of reusing it. This can be useful when you want to:\n\n - Properly trigger lifecycle hooks of a component\n - Trigger transitions\n\n For example:\n\n ```html\n <transition>\n <span :key=\"text\">{{ text }}</span>\n </transition>\n ```\n\n When `text` changes, the `<span>` will always be replaced instead of patched, so a transition will be triggered.\n\n- **See also** [Guide - List Rendering - Maintaining State with `key`](https://vuejs.org/guide/essentials/list.html#maintaining-state-with-key)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-special-attributes.html#key" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-special-attributes.html#key" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-special-attributes.html#key" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-special-attributes.html#key" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-special-attributes.html#key" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-special-attributes.html#key" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-special-attributes.html#key" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-special-attributes.html#key" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-special-attributes.html#key" + } + ] + }, + { + name: "ref", + description: { + kind: "markdown", + value: "\nDenotes a [template ref](https://vuejs.org/guide/essentials/template-refs.html).\n\n- **Expects:** `string | Function`\n\n- **Details**\n\n `ref` is used to register a reference to an element or a child component.\n\n In Options API, the reference will be registered under the component's `this.$refs` object:\n\n ```html\n <!-- stored as this.$refs.p -->\n <p ref=\"p\">hello</p>\n ```\n\n In Composition API, the reference will be stored in a ref with matching name:\n\n ```vue\n <script setup>\n import { ref } from 'vue'\n\n const p = ref()\n </script>\n\n <template>\n <p ref=\"p\">hello</p>\n </template>\n ```\n\n If used on a plain DOM element, the reference will be that element; if used on a child component, the reference will be the child component instance.\n\n Alternatively `ref` can accept a function value which provides full control over where to store the reference:\n\n ```html\n <ChildComponent :ref=\"(el) => child = el\" />\n ```\n\n An important note about the ref registration timing: because the refs themselves are created as a result of the render function, you must wait until the component is mounted before accessing them.\n\n `this.$refs` is also non-reactive, therefore you should not attempt to use it in templates for data-binding.\n\n- **See also**\n - [Guide - Template Refs](https://vuejs.org/guide/essentials/template-refs.html)\n - [Guide - Typing Template Refs](https://vuejs.org/guide/typescript/composition-api.html#typing-template-refs) <sup class=\"vt-badge ts\" />\n - [Guide - Typing Component Template Refs](https://vuejs.org/guide/typescript/composition-api.html#typing-component-template-refs) <sup class=\"vt-badge ts\" />\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-special-attributes.html#ref" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-special-attributes.html#ref" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-special-attributes.html#ref" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-special-attributes.html#ref" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-special-attributes.html#ref" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-special-attributes.html#ref" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-special-attributes.html#ref" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-special-attributes.html#ref" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-special-attributes.html#ref" + } + ] + }, + { + name: "is", + description: { + kind: "markdown", + value: "\nUsed for binding [dynamic components](https://vuejs.org/guide/essentials/component-basics.html#dynamic-components).\n\n- **Expects:** `string | Component`\n\n- **Usage on native elements** <sup class=\"vt-badge\">3.1+</sup>\n\n When the `is` attribute is used on a native HTML element, it will be interpreted as a [Customized built-in element](https://html.spec.whatwg.org/multipage/custom-elements.html#custom-elements-customized-builtin-example), which is a native web platform feature.\n\n There is, however, a use case where you may need Vue to replace a native element with a Vue component, as explained in [in-DOM Template Parsing Caveats](https://vuejs.org/guide/essentials/component-basics.html#in-dom-template-parsing-caveats). You can prefix the value of the `is` attribute with `vue:` so that Vue will render the element as a Vue component instead:\n\n ```html\n <table>\n <tr is=\"vue:my-row-component\"></tr>\n </table>\n ```\n\n- **See also**\n\n - [Built-in Special Element - `<component>`](https://vuejs.org/api/built-in-special-elements.html#component)\n - [Dynamic Components](https://vuejs.org/guide/essentials/component-basics.html#dynamic-components)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-special-attributes.html#is" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-special-attributes.html#is" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-special-attributes.html#is" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-special-attributes.html#is" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-special-attributes.html#is" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-special-attributes.html#is" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-special-attributes.html#is" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-special-attributes.html#is" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-special-attributes.html#is" + } + ] + } +]; +var require$$0 = { + version: version$k, + tags: tags$d, + globalAttributes: globalAttributes$k +}; + +const version$j = 1.1; +const tags$c = [ + { + name: "Transition", + description: { + kind: "markdown", + value: "\nProvides animated transition effects to a **single** element or component.\n\n- **Props**\n\n ```ts\n interface TransitionProps {\n /**\n * Used to automatically generate transition CSS class names.\n * e.g. `name: 'fade'` will auto expand to `.fade-enter`,\n * `.fade-enter-active`, etc.\n */\n name?: string\n /**\n * Whether to apply CSS transition classes.\n * Default: true\n */\n css?: boolean\n /**\n * Specifies the type of transition events to wait for to\n * determine transition end timing.\n * Default behavior is auto detecting the type that has\n * longer duration.\n */\n type?: 'transition' | 'animation'\n /**\n * Specifies explicit durations of the transition.\n * Default behavior is wait for the first `transitionend`\n * or `animationend` event on the root transition element.\n */\n duration?: number | { enter: number; leave: number }\n /**\n * Controls the timing sequence of leaving/entering transitions.\n * Default behavior is simultaneous.\n */\n mode?: 'in-out' | 'out-in' | 'default'\n /**\n * Whether to apply transition on initial render.\n * Default: false\n */\n appear?: boolean\n\n /**\n * Props for customizing transition classes.\n * Use kebab-case in templates, e.g. enter-from-class=\"xxx\"\n */\n enterFromClass?: string\n enterActiveClass?: string\n enterToClass?: string\n appearFromClass?: string\n appearActiveClass?: string\n appearToClass?: string\n leaveFromClass?: string\n leaveActiveClass?: string\n leaveToClass?: string\n }\n ```\n\n- **Events**\n\n - `@before-enter`\n - `@before-leave`\n - `@enter`\n - `@leave`\n - `@appear`\n - `@after-enter`\n - `@after-leave`\n - `@after-appear`\n - `@enter-cancelled`\n - `@leave-cancelled` (`v-show` only)\n - `@appear-cancelled`\n\n- **Example**\n\n Simple element:\n\n ```html\n <Transition>\n <div v-if=\"ok\">toggled content</div>\n </Transition>\n ```\n\n Forcing a transition by changing the `key` attribute:\n\n ```html\n <Transition>\n <div :key=\"text\">{{ text }}</div>\n </Transition>\n ```\n\n Dynamic component, with transition mode + animate on appear:\n\n ```html\n <Transition name=\"fade\" mode=\"out-in\" appear>\n <component :is=\"view\"></component>\n </Transition>\n ```\n\n Listening to transition events:\n\n ```html\n <Transition @after-enter=\"onTransitionComplete\">\n <div v-show=\"ok\">toggled content</div>\n </Transition>\n ```\n\n- **See also** [`<Transition>` Guide](https://it.vuejs.org/guide/built-ins/transition.html)\n" + }, + attributes: [ + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-components.html#transition" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-components.html#transition" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-components.html#transition" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-components.html#transition" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-components.html#transition" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-components.html#transition" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-components.html#transition" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-components.html#transition" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-components.html#transition" + } + ] + }, + { + name: "TransitionGroup", + description: { + kind: "markdown", + value: "\nProvides transition effects for **multiple** elements or components in a list.\n\n- **Props**\n\n `<TransitionGroup>` accepts the same props as `<Transition>` except `mode`, plus two additional props:\n\n ```ts\n interface TransitionGroupProps extends Omit<TransitionProps, 'mode'> {\n /**\n * If not defined, renders as a fragment.\n */\n tag?: string\n /**\n * For customizing the CSS class applied during move transitions.\n * Use kebab-case in templates, e.g. move-class=\"xxx\"\n */\n moveClass?: string\n }\n ```\n\n- **Events**\n\n `<TransitionGroup>` emits the same events as `<Transition>`.\n\n- **Details**\n\n By default, `<TransitionGroup>` doesn't render a wrapper DOM element, but one can be defined via the `tag` prop.\n\n Note that every child in a `<transition-group>` must be [**uniquely keyed**](https://it.vuejs.org/guide/essentials/list.html#maintaining-state-with-key) for the animations to work properly.\n\n `<TransitionGroup>` supports moving transitions via CSS transform. When a child's position on screen has changed after an update, it will get applied a moving CSS class (auto generated from the `name` attribute or configured with the `move-class` prop). If the CSS `transform` property is \"transition-able\" when the moving class is applied, the element will be smoothly animated to its destination using the [FLIP technique](https://aerotwist.com/blog/flip-your-animations/).\n\n- **Example**\n\n ```html\n <TransitionGroup tag=\"ul\" name=\"slide\">\n <li v-for=\"item in items\" :key=\"item.id\">\n {{ item.text }}\n </li>\n </TransitionGroup>\n ```\n\n- **See also** [Guide - TransitionGroup](https://it.vuejs.org/guide/built-ins/transition-group.html)\n" + }, + attributes: [ + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-components.html#transitiongroup" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-components.html#transitiongroup" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-components.html#transitiongroup" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-components.html#transitiongroup" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-components.html#transitiongroup" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-components.html#transitiongroup" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-components.html#transitiongroup" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-components.html#transitiongroup" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-components.html#transitiongroup" + } + ] + }, + { + name: "KeepAlive", + description: { + kind: "markdown", + value: "\nCaches dynamically toggled components wrapped inside.\n\n- **Props**\n\n ```ts\n interface KeepAliveProps {\n /**\n * If specified, only components with names matched by\n * `include` will be cached.\n */\n include?: MatchPattern\n /**\n * Any component with a name matched by `exclude` will\n * not be cached.\n */\n exclude?: MatchPattern\n /**\n * The maximum number of component instances to cache.\n */\n max?: number | string\n }\n\n type MatchPattern = string | RegExp | (string | RegExp)[]\n ```\n\n- **Details**\n\n When wrapped around a dynamic component, `<KeepAlive>` caches the inactive component instances without destroying them.\n\n There can only be one active component instance as the direct child of `<KeepAlive>` at any time.\n\n When a component is toggled inside `<KeepAlive>`, its `activated` and `deactivated` lifecycle hooks will be invoked accordingly, providing an alternative to `mounted` and `unmounted`, which are not called. This applies to the direct child of `<KeepAlive>` as well as to all of its descendants.\n\n- **Example**\n\n Utilizzo Base:\n\n ```html\n <KeepAlive>\n <component :is=\"view\"></component>\n </KeepAlive>\n ```\n\n When used with `v-if` / `v-else` branches, there must be only one component rendered at a time:\n\n ```html\n <KeepAlive>\n <comp-a v-if=\"a > 1\"></comp-a>\n <comp-b v-else></comp-b>\n </KeepAlive>\n ```\n\n Used together with `<Transition>`:\n\n ```html\n <Transition>\n <KeepAlive>\n <component :is=\"view\"></component>\n </KeepAlive>\n </Transition>\n ```\n\n Using `include` / `exclude`:\n\n ```html\n <!-- comma-delimited string -->\n <KeepAlive include=\"a,b\">\n <component :is=\"view\"></component>\n </KeepAlive>\n\n <!-- regex (use `v-bind`) -->\n <KeepAlive :include=\"/a|b/\">\n <component :is=\"view\"></component>\n </KeepAlive>\n\n <!-- Array (use `v-bind`) -->\n <KeepAlive :include=\"['a', 'b']\">\n <component :is=\"view\"></component>\n </KeepAlive>\n ```\n\n Usage with `max`:\n\n ```html\n <KeepAlive :max=\"10\">\n <component :is=\"view\"></component>\n </KeepAlive>\n ```\n\n- **See also** [Guide - KeepAlive](https://it.vuejs.org/guide/built-ins/keep-alive.html)\n" + }, + attributes: [ + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-components.html#keepalive" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-components.html#keepalive" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-components.html#keepalive" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-components.html#keepalive" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-components.html#keepalive" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-components.html#keepalive" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-components.html#keepalive" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-components.html#keepalive" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-components.html#keepalive" + } + ] + }, + { + name: "Teleport", + description: { + kind: "markdown", + value: "\nRenders its slot content to another part of the DOM.\n\n- **Props**\n\n ```ts\n interface TeleportProps {\n /**\n * Required. Specify target container.\n * Can either be a selector or an actual element.\n */\n to: string | HTMLElement\n /**\n * When `true`, the content will remain in its original\n * location instead of moved into the target container.\n * Can be changed dynamically.\n */\n disabled?: boolean\n }\n ```\n\n- **Example**\n\n Specifying target container:\n\n ```html\n <teleport to=\"#some-id\" />\n <teleport to=\".some-class\" />\n <teleport to=\"[data-teleport]\" />\n ```\n\n Conditionally disabling:\n\n ```html\n <teleport to=\"#popup\" :disabled=\"displayVideoInline\">\n <video src=\"./my-movie.mp4\">\n </teleport>\n ```\n\n- **See also** [Guide - Teleport](https://it.vuejs.org/guide/built-ins/teleport.html)\n" + }, + attributes: [ + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-components.html#teleport" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-components.html#teleport" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-components.html#teleport" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-components.html#teleport" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-components.html#teleport" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-components.html#teleport" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-components.html#teleport" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-components.html#teleport" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-components.html#teleport" + } + ] + }, + { + name: "Suspense", + description: { + kind: "markdown", + value: "\nUsed for orchestrating nested async dependencies in a component tree.\n\n- **Props**\n\n ```ts\n interface SuspenseProps {\n timeout?: string | number\n }\n ```\n\n- **Events**\n\n - `@resolve`\n - `@pending`\n - `@fallback`\n\n- **Details**\n\n `<Suspense>` accepts two slots: the `#default` slot and the `#fallback` slot. It will display the content of the fallback slot while rendering the default slot in memory.\n\n If it encounters async dependencies ([Async Components](https://it.vuejs.org/guide/components/async.html) and components with [`async setup()`](https://it.vuejs.org/guide/built-ins/suspense.html#async-setup)) while rendering the default slot, it will wait until all of them are resolved before displaying the default slot.\n\n- **See also** [Guide - Suspense](https://it.vuejs.org/guide/built-ins/suspense.html)\n" + }, + attributes: [ + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-components.html#suspense" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-components.html#suspense" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-components.html#suspense" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-components.html#suspense" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-components.html#suspense" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-components.html#suspense" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-components.html#suspense" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-components.html#suspense" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-components.html#suspense" + } + ] + }, + { + name: "component", + description: { + kind: "markdown", + value: "\nA \"meta component\" for rendering dynamic components or elements.\n\n- **Props**\n\n ```ts\n interface DynamicComponentProps {\n is: string | Component\n }\n ```\n\n- **Details**\n\n The actual component to render is determined by the `is` prop.\n\n - When `is` is a string, it could be either an HTML tag name or a component's registered name.\n\n - Alternatively, `is` can also be directly bound to the definition of a component.\n\n- **Example**\n\n Rendering components by registered name (Options API):\n\n ```vue\n <script>\n import Foo from './Foo.vue'\n import Bar from './Bar.vue'\n\n export default {\n components: { Foo, Bar },\n data() {\n return {\n view: 'Foo'\n }\n }\n }\n </script>\n\n <template>\n <component :is=\"view\" />\n </template>\n ```\n\n Rendering components by definition (Composition API with `<script setup>`):\n\n ```vue\n <script setup>\n import Foo from './Foo.vue'\n import Bar from './Bar.vue'\n </script>\n\n <template>\n <component :is=\"Math.random() > 0.5 ? Foo : Bar\" />\n </template>\n ```\n\n Rendering HTML elements:\n\n ```html\n <component :is=\"href ? 'a' : 'span'\"></component>\n ```\n\n The [built-in components](./built-in-components) can all be passed to `is`, but you must register them if you want to pass them by name. For example:\n\n ```vue\n <script>\n import { Transition, TransitionGroup } from 'vue'\n\n export default {\n components: {\n Transition,\n TransitionGroup\n }\n }\n </script>\n\n <template>\n <component :is=\"isGroup ? 'TransitionGroup' : 'Transition'\">\n ...\n </component>\n </template>\n ```\n\n Registration is not required if you pass the component itself to `is` rather than its name, e.g. in `<script setup>`.\n\n If `v-model` is used on a `<component>` tag, the template compiler will expand it to a `modelValue` prop and `update:modelValue` event listener, much like it would for any other component. However, this won't be compatible with native HTML elements, such as `<input>` or `<select>`. As a result, using `v-model` with a dynamically created native element won't work:\n\n ```vue\n <script setup>\n import { ref } from 'vue'\n\n const tag = ref('input')\n const username = ref('')\n </script>\n\n <template>\n <!-- This won't work as 'input' is a native HTML element -->\n <component :is=\"tag\" v-model=\"username\" />\n </template>\n ```\n\n In practice, this edge case isn't common as native form fields are typically wrapped in components in real applications. If you do need to use a native element directly then you can split the `v-model` into an attribute and event manually.\n\n- **See also** [Dynamic Components](https://it.vuejs.org/guide/essentials/component-basics.html#dynamic-components)\n" + }, + attributes: [ + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-special-elements.html#component" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-special-elements.html#component" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-special-elements.html#component" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-special-elements.html#component" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-special-elements.html#component" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-special-elements.html#component" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-special-elements.html#component" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-special-elements.html#component" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-special-elements.html#component" + } + ] + }, + { + name: "slot", + description: { + kind: "markdown", + value: "\nDenotes slot content outlets in templates.\n\n- **Props**\n\n ```ts\n interface SlotProps {\n /**\n * Any props passed to <slot> to passed as arguments\n * for scoped slots\n */\n [key: string]: any\n /**\n * Reserved for specifying slot name.\n */\n name?: string\n }\n ```\n\n- **Details**\n\n The `<slot>` element can use the `name` attribute to specify a slot name. When no `name` is specified, it will render the default slot. Additional attributes passed to the slot element will be passed as slot props to the scoped slot defined in the parent.\n\n The element itself will be replaced by its matched slot content.\n\n `<slot>` elements in Vue templates are compiled into JavaScript, so they are not to be confused with [native `<slot>` elements](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/slot).\n\n- **See also** [Component - Slots](https://it.vuejs.org/guide/components/slots.html)\n" + }, + attributes: [ + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-special-elements.html#slot" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-special-elements.html#slot" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-special-elements.html#slot" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-special-elements.html#slot" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-special-elements.html#slot" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-special-elements.html#slot" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-special-elements.html#slot" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-special-elements.html#slot" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-special-elements.html#slot" + } + ] + }, + { + name: "template", + description: { + kind: "markdown", + value: "\nThe `<template>` tag is used as a placeholder when we want to use a built-in directive without rendering an element in the DOM.\n\n- **Details**\n\n The special handling for `<template>` is only triggered if it is used with one of these directives:\n\n - `v-if`, `v-else-if`, or `v-else`\n - `v-for`\n - `v-slot`\n\n If none of those directives are present then it will be rendered as a [native `<template>` element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/template) instead.\n\n A `<template>` with a `v-for` can also have a [`key` attribute](https://it.vuejs.org/api/built-in-special-attributes.html#key). All other attributes and directives will be discarded, as they aren't meaningful without a corresponding element.\n\n Single-file components use a [top-level `<template>` tag](https://it.vuejs.org/api/sfc-spec.html#language-blocks) to wrap the entire template. That usage is separate from the use of `<template>` described above. That top-level tag is not part of the template itself and doesn't support template syntax, such as directives.\n\n- **See also**\n - [Guide - `v-if` on `<template>`](https://it.vuejs.org/guide/essentials/conditional.html#v-if-on-template)\n - [Guide - `v-for` on `<template>`](https://it.vuejs.org/guide/essentials/list.html#v-for-on-template)\n - [Guide - Named slots](https://it.vuejs.org/guide/components/slots.html#named-slots)\n" + }, + attributes: [ + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-special-elements.html#template" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-special-elements.html#template" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-special-elements.html#template" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-special-elements.html#template" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-special-elements.html#template" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-special-elements.html#template" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-special-elements.html#template" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-special-elements.html#template" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-special-elements.html#template" + } + ] + } +]; +const globalAttributes$j = [ + { + name: "v-text", + description: { + kind: "markdown", + value: "\nUpdate the element's text content.\n\n- **Expects:** `string`\n\n- **Details**\n\n `v-text` works by setting the element's [textContent](https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent) property, so it will overwrite any existing content inside the element. If you need to update the part of `textContent`, you should use [mustache interpolations](https://it.vuejs.org/guide/essentials/template-syntax.html#text-interpolation) instead.\n\n- **Example**\n\n ```html\n <span v-text=\"msg\"></span>\n <!-- same as -->\n <span>{{msg}}</span>\n ```\n\n- **See also** [Template Syntax - Text Interpolation](https://it.vuejs.org/guide/essentials/template-syntax.html#text-interpolation)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-text" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-text" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-text" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-text" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-text" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-text" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-text" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-text" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-text" + } + ] + }, + { + name: "v-html", + description: { + kind: "markdown", + value: "\nUpdate the element's [innerHTML](https://developer.mozilla.org/en-US/docs/Web/API/Element/innerHTML).\n\n- **Expects:** `string`\n\n- **Details**\n\n Contents of `v-html` are inserted as plain HTML - Vue template syntax will not be processed. If you find yourself trying to compose templates using `v-html`, try to rethink the solution by using components instead.\n\n ::: warning Security Note\n Dynamically rendering arbitrary HTML on your website can be very dangerous because it can easily lead to [XSS attacks](https://en.wikipedia.org/wiki/Cross-site_scripting). Only use `v-html` on trusted content and **never** on user-provided content.\n :::\n\n In [Single-File Components](https://it.vuejs.org/guide/scaling-up/sfc.html), `scoped` styles will not apply to content inside `v-html`, because that HTML is not processed by Vue's template compiler. If you want to target `v-html` content with scoped CSS, you can instead use [CSS modules](./sfc-css-features#css-modules) or an additional, global `<style>` element with a manual scoping strategy such as BEM.\n\n- **Example**\n\n ```html\n <div v-html=\"html\"></div>\n ```\n\n- **See also** [Template Syntax - Raw HTML](https://it.vuejs.org/guide/essentials/template-syntax.html#raw-html)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-html" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-html" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-html" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-html" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-html" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-html" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-html" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-html" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-html" + } + ] + }, + { + name: "v-show", + description: { + kind: "markdown", + value: "\nToggle the element's visibility based on the truthy-ness of the expression value.\n\n- **Expects:** `any`\n\n- **Details**\n\n `v-show` works by setting the `display` CSS property via inline styles, and will try to respect the initial `display` value when the element is visible. It also triggers transitions when its condition changes.\n\n- **See also** [Conditional Rendering - v-show](https://it.vuejs.org/guide/essentials/conditional.html#v-show)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-show" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-show" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-show" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-show" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-show" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-show" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-show" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-show" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-show" + } + ] + }, + { + name: "v-if", + description: { + kind: "markdown", + value: "\nConditionally render an element or a template fragment based on the truthy-ness of the expression value.\n\n- **Expects:** `any`\n\n- **Details**\n\n When a `v-if` element is toggled, the element and its contained directives / components are destroyed and re-constructed. If the initial condition is falsy, then the inner content won't be rendered at all.\n\n Can be used on `<template>` to denote a conditional block containing only text or multiple elements.\n\n This directive triggers transitions when its condition changes.\n\n When used together, `v-if` has a higher priority than `v-for`. We don't recommend using these two directives together on one element — see the [list rendering guide](https://it.vuejs.org/guide/essentials/list.html#v-for-with-v-if) for details.\n\n- **See also** [Conditional Rendering - v-if](https://it.vuejs.org/guide/essentials/conditional.html#v-if)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-if" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-if" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-if" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-if" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-if" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-if" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-if" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-if" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-if" + } + ] + }, + { + name: "v-else", + valueSet: "v", + description: { + kind: "markdown", + value: "\nDenote the \"else block\" for `v-if` or a `v-if` / `v-else-if` chain.\n\n- **Does not expect expression**\n\n- **Details**\n\n - Restriction: previous sibling element must have `v-if` or `v-else-if`.\n\n - Can be used on `<template>` to denote a conditional block containing only text or multiple elements.\n\n- **Example**\n\n ```html\n <div v-if=\"Math.random() > 0.5\">\n Now you see me\n </div>\n <div v-else>\n Now you don't\n </div>\n ```\n\n- **See also** [Conditional Rendering - v-else](https://it.vuejs.org/guide/essentials/conditional.html#v-else)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-else" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-else" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-else" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-else" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-else" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-else" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-else" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-else" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-else" + } + ] + }, + { + name: "v-else-if", + description: { + kind: "markdown", + value: "\nDenote the \"else if block\" for `v-if`. Can be chained.\n\n- **Expects:** `any`\n\n- **Details**\n\n - Restriction: previous sibling element must have `v-if` or `v-else-if`.\n\n - Can be used on `<template>` to denote a conditional block containing only text or multiple elements.\n\n- **Example**\n\n ```html\n <div v-if=\"type === 'A'\">\n A\n </div>\n <div v-else-if=\"type === 'B'\">\n B\n </div>\n <div v-else-if=\"type === 'C'\">\n C\n </div>\n <div v-else>\n Not A/B/C\n </div>\n ```\n\n- **See also** [Conditional Rendering - v-else-if](https://it.vuejs.org/guide/essentials/conditional.html#v-else-if)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-else-if" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-else-if" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-else-if" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-else-if" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-else-if" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-else-if" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-else-if" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-else-if" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-else-if" + } + ] + }, + { + name: "v-for", + description: { + kind: "markdown", + value: "\nRender the element or template block multiple times based on the source data.\n\n- **Expects:** `Array | Object | number | string | Iterable`\n\n- **Details**\n\n The directive's value must use the special syntax `alias in expression` to provide an alias for the current element being iterated on:\n\n ```html\n <div v-for=\"item in items\">\n {{ item.text }}\n </div>\n ```\n\n Alternatively, you can also specify an alias for the index (or the key if used on an Object):\n\n ```html\n <div v-for=\"(item, index) in items\"></div>\n <div v-for=\"(value, key) in object\"></div>\n <div v-for=\"(value, name, index) in object\"></div>\n ```\n\n The default behavior of `v-for` will try to patch the elements in-place without moving them. To force it to reorder elements, you should provide an ordering hint with the `key` special attribute:\n\n ```html\n <div v-for=\"item in items\" :key=\"item.id\">\n {{ item.text }}\n </div>\n ```\n\n `v-for` can also work on values that implement the [Iterable Protocol](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#The_iterable_protocol), including native `Map` and `Set`.\n\n- **See also**\n - [List Rendering](https://it.vuejs.org/guide/essentials/list.html)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-for" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-for" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-for" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-for" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-for" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-for" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-for" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-for" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-for" + } + ] + }, + { + name: "v-on", + description: { + kind: "markdown", + value: "\nAttach an event listener to the element.\n\n- **Shorthand:** `@`\n\n- **Expects:** `Function | Inline Statement | Object (without argument)`\n\n- **Argument:** `event` (optional if using Object syntax)\n\n- **Modifiers**\n\n - `.stop` - call `event.stopPropagation()`.\n - `.prevent` - call `event.preventDefault()`.\n - `.capture` - add event listener in capture mode.\n - `.self` - only trigger handler if event was dispatched from this element.\n - `.{keyAlias}` - only trigger handler on certain keys.\n - `.once` - trigger handler at most once.\n - `.left` - only trigger handler for left button mouse events.\n - `.right` - only trigger handler for right button mouse events.\n - `.middle` - only trigger handler for middle button mouse events.\n - `.passive` - attaches a DOM event with `{ passive: true }`.\n\n- **Details**\n\n The event type is denoted by the argument. The expression can be a method name, an inline statement, or omitted if there are modifiers present.\n\n When used on a normal element, it listens to [**native DOM events**](https://developer.mozilla.org/en-US/docs/Web/Events) only. When used on a custom element component, it listens to **custom events** emitted on that child component.\n\n When listening to native DOM events, the method receives the native event as the only argument. If using inline statement, the statement has access to the special `$event` property: `v-on:click=\"handle('ok', $event)\"`.\n\n `v-on` also supports binding to an object of event / listener pairs without an argument. Note when using the object syntax, it does not support any modifiers.\n\n- **Example**\n\n ```html\n <!-- method handler -->\n <button v-on:click=\"doThis\"></button>\n\n <!-- dynamic event -->\n <button v-on:[event]=\"doThis\"></button>\n\n <!-- inline statement -->\n <button v-on:click=\"doThat('hello', $event)\"></button>\n\n <!-- shorthand -->\n <button @click=\"doThis\"></button>\n\n <!-- shorthand dynamic event -->\n <button @[event]=\"doThis\"></button>\n\n <!-- stop propagation -->\n <button @click.stop=\"doThis\"></button>\n\n <!-- prevent default -->\n <button @click.prevent=\"doThis\"></button>\n\n <!-- prevent default without expression -->\n <form @submit.prevent></form>\n\n <!-- chain modifiers -->\n <button @click.stop.prevent=\"doThis\"></button>\n\n <!-- key modifier using keyAlias -->\n <input @keyup.enter=\"onEnter\" />\n\n <!-- the click event will be triggered at most once -->\n <button v-on:click.once=\"doThis\"></button>\n\n <!-- object syntax -->\n <button v-on=\"{ mousedown: doThis, mouseup: doThat }\"></button>\n ```\n\n Listening to custom events on a child component (the handler is called when \"my-event\" is emitted on the child):\n\n ```html\n <MyComponent @my-event=\"handleThis\" />\n\n <!-- inline statement -->\n <MyComponent @my-event=\"handleThis(123, $event)\" />\n ```\n\n- **See also**\n - [Event Handling](https://it.vuejs.org/guide/essentials/event-handling.html)\n - [Components - Custom Events](https://it.vuejs.org/guide/essentials/component-basics.html#listening-to-events)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-on" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-on" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-on" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-on" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-on" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-on" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-on" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-on" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-on" + } + ] + }, + { + name: "v-bind", + description: { + kind: "markdown", + value: "\nDynamically bind one or more attributes, or a component prop to an expression.\n\n- **Shorthand:** `:` or `.` (when using `.prop` modifier)\n\n- **Expects:** `any (with argument) | Object (without argument)`\n\n- **Argument:** `attrOrProp (optional)`\n\n- **Modifiers**\n\n - `.camel` - transform the kebab-case attribute name into camelCase.\n - `.prop` - force a binding to be set as a DOM property. <sup class=\"vt-badge\">3.2+</sup>\n - `.attr` - force a binding to be set as a DOM attribute. <sup class=\"vt-badge\">3.2+</sup>\n\n- **Usage**\n\n When used to bind the `class` or `style` attribute, `v-bind` supports additional value types such as Array or Objects. See linked guide section below for more details.\n\n When setting a binding on an element, Vue by default checks whether the element has the key defined as a property using an `in` operator check. If the property is defined, Vue will set the value as a DOM property instead of an attribute. This should work in most cases, but you can override this behavior by explicitly using `.prop` or `.attr` modifiers. This is sometimes necessary, especially when [working with custom elements](https://it.vuejs.org/guide/extras/web-components.html#passing-dom-properties).\n\n When used for component prop binding, the prop must be properly declared in the child component.\n\n When used without an argument, can be used to bind an object containing attribute name-value pairs.\n\n- **Example**\n\n ```html\n <!-- bind an attribute -->\n <img v-bind:src=\"imageSrc\" />\n\n <!-- dynamic attribute name -->\n <button v-bind:[key]=\"value\"></button>\n\n <!-- shorthand -->\n <img :src=\"imageSrc\" />\n\n <!-- shorthand dynamic attribute name -->\n <button :[key]=\"value\"></button>\n\n <!-- with inline string concatenation -->\n <img :src=\"'/path/to/images/' + fileName\" />\n\n <!-- class binding -->\n <div :class=\"{ red: isRed }\"></div>\n <div :class=\"[classA, classB]\"></div>\n <div :class=\"[classA, { classB: isB, classC: isC }]\"></div>\n\n <!-- style binding -->\n <div :style=\"{ fontSize: size + 'px' }\"></div>\n <div :style=\"[styleObjectA, styleObjectB]\"></div>\n\n <!-- binding an object of attributes -->\n <div v-bind=\"{ id: someProp, 'other-attr': otherProp }\"></div>\n\n <!-- prop binding. \"prop\" must be declared in the child component. -->\n <MyComponent :prop=\"someThing\" />\n\n <!-- pass down parent props in common with a child component -->\n <MyComponent v-bind=\"$props\" />\n\n <!-- XLink -->\n <svg><a :xlink:special=\"foo\"></a></svg>\n ```\n\n The `.prop` modifier also has a dedicated shorthand, `.`:\n\n ```html\n <div :someProperty.prop=\"someObject\"></div>\n\n <!-- equivalent to -->\n <div .someProperty=\"someObject\"></div>\n ```\n\n The `.camel` modifier allows camelizing a `v-bind` attribute name when using in-DOM templates, e.g. the SVG `viewBox` attribute:\n\n ```html\n <svg :view-box.camel=\"viewBox\"></svg>\n ```\n\n `.camel` is not needed if you are using string templates, or pre-compiling the template with a build step.\n\n- **See also**\n - [Class and Style Bindings](https://it.vuejs.org/guide/essentials/class-and-style.html)\n - [Components - Prop Passing Details](https://it.vuejs.org/guide/components/props.html#prop-passing-details)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-bind" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-bind" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-bind" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-bind" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-bind" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-bind" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-bind" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-bind" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-bind" + } + ] + }, + { + name: "v-model", + description: { + kind: "markdown", + value: "\nCreate a two-way binding on a form input element or a component.\n\n- **Expects:** varies based on value of form inputs element or output of components\n\n- **Limited to:**\n\n - `<input>`\n - `<select>`\n - `<textarea>`\n - components\n\n- **Modifiers**\n\n - [`.lazy`](https://it.vuejs.org/guide/essentials/forms.html#lazy) - listen to `change` events instead of `input`\n - [`.number`](https://it.vuejs.org/guide/essentials/forms.html#number) - cast valid input string to numbers\n - [`.trim`](https://it.vuejs.org/guide/essentials/forms.html#trim) - trim input\n\n- **See also**\n\n - [Form Input Bindings](https://it.vuejs.org/guide/essentials/forms.html)\n - [Component Events - Usage with `v-model`](https://it.vuejs.org/guide/components/v-model.html)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-model" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-model" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-model" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-model" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-model" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-model" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-model" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-model" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-model" + } + ] + }, + { + name: "v-slot", + description: { + kind: "markdown", + value: "\nDenote named slots or scoped slots that expect to receive props.\n\n- **Shorthand:** `#`\n\n- **Expects:** JavaScript expression that is valid in a function argument position, including support for destructuring. Optional - only needed if expecting props to be passed to the slot.\n\n- **Argument:** slot name (optional, defaults to `default`)\n\n- **Limited to:**\n\n - `<template>`\n - [components](https://it.vuejs.org/guide/components/slots.html#scoped-slots) (for a lone default slot with props)\n\n- **Example**\n\n ```html\n <!-- Named slots -->\n <BaseLayout>\n <template v-slot:header>\n Header content\n </template>\n\n <template v-slot:default>\n Default slot content\n </template>\n\n <template v-slot:footer>\n Footer content\n </template>\n </BaseLayout>\n\n <!-- Named slot that receives props -->\n <InfiniteScroll>\n <template v-slot:item=\"slotProps\">\n <div class=\"item\">\n {{ slotProps.item.text }}\n </div>\n </template>\n </InfiniteScroll>\n\n <!-- Default slot that receive props, with destructuring -->\n <Mouse v-slot=\"{ x, y }\">\n Mouse position: {{ x }}, {{ y }}\n </Mouse>\n ```\n\n- **See also**\n - [Components - Slots](https://it.vuejs.org/guide/components/slots.html)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-slot" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-slot" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-slot" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-slot" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-slot" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-slot" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-slot" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-slot" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-slot" + } + ] + }, + { + name: "v-pre", + description: { + kind: "markdown", + value: "\nSkip compilation for this element and all its children.\n\n- **Does not expect expression**\n\n- **Details**\n\n Inside the element with `v-pre`, all Vue template syntax will be preserved and rendered as-is. The most common use case of this is displaying raw mustache tags.\n\n- **Example**\n\n ```html\n <span v-pre>{{ this will not be compiled }}</span>\n ```\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-pre" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-pre" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-pre" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-pre" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-pre" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-pre" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-pre" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-pre" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-pre" + } + ] + }, + { + name: "v-once", + description: { + kind: "markdown", + value: "\nRender the element and component once only, and skip future updates.\n\n- **Does not expect expression**\n\n- **Details**\n\n On subsequent re-renders, the element/component and all its children will be treated as static content and skipped. This can be used to optimize update performance.\n\n ```html\n <!-- single element -->\n <span v-once>This will never change: {{msg}}</span>\n <!-- the element have children -->\n <div v-once>\n <h1>comment</h1>\n <p>{{msg}}</p>\n </div>\n <!-- component -->\n <MyComponent v-once :comment=\"msg\"></MyComponent>\n <!-- `v-for` directive -->\n <ul>\n <li v-for=\"i in list\" v-once>{{i}}</li>\n </ul>\n ```\n\n Since 3.2, you can also memoize part of the template with invalidation conditions using [`v-memo`](#v-memo).\n\n- **See also**\n - [Data Binding Syntax - interpolations](https://it.vuejs.org/guide/essentials/template-syntax.html#text-interpolation)\n - [v-memo](#v-memo)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-once" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-once" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-once" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-once" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-once" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-once" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-once" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-once" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-once" + } + ] + }, + { + name: "v-memo", + description: { + kind: "markdown", + value: "\n- **Expects:** `any[]`\n\n- **Details**\n\n Memoize a sub-tree of the template. Can be used on both elements and components. The directive expects a fixed-length array of dependency values to compare for the memoization. If every value in the array was the same as last render, then updates for the entire sub-tree will be skipped. For example:\n\n ```html\n <div v-memo=\"[valueA, valueB]\">\n ...\n </div>\n ```\n\n When the component re-renders, if both `valueA` and `valueB` remain the same, all updates for this `<div>` and its children will be skipped. In fact, even the Virtual DOM VNode creation will also be skipped since the memoized copy of the sub-tree can be reused.\n\n It is important to specify the memoization array correctly, otherwise we may skip updates that should indeed be applied. `v-memo` with an empty dependency array (`v-memo=\"[]\"`) would be functionally equivalent to `v-once`.\n\n **Usage with `v-for`**\n\n `v-memo` is provided solely for micro optimizations in performance-critical scenarios and should be rarely needed. The most common case where this may prove helpful is when rendering large `v-for` lists (where `length > 1000`):\n\n ```html\n <div v-for=\"item in list\" :key=\"item.id\" v-memo=\"[item.id === selected]\">\n <p>ID: {{ item.id }} - selected: {{ item.id === selected }}</p>\n <p>...more child nodes</p>\n </div>\n ```\n\n When the component's `selected` state changes, a large amount of VNodes will be created even though most of the items remained exactly the same. The `v-memo` usage here is essentially saying \"only update this item if it went from non-selected to selected, or the other way around\". This allows every unaffected item to reuse its previous VNode and skip diffing entirely. Note we don't need to include `item.id` in the memo dependency array here since Vue automatically infers it from the item's `:key`.\n\n :::warning\n When using `v-memo` with `v-for`, make sure they are used on the same element. **`v-memo` does not work inside `v-for`.**\n :::\n\n `v-memo` can also be used on components to manually prevent unwanted updates in certain edge cases where the child component update check has been de-optimized. But again, it is the developer's responsibility to specify correct dependency arrays to avoid skipping necessary updates.\n\n- **See also**\n - [v-once](#v-once)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-memo" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-memo" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-memo" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-memo" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-memo" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-memo" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-memo" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-memo" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-memo" + } + ] + }, + { + name: "v-cloak", + description: { + kind: "markdown", + value: "\nUsed to hide un-compiled template until it is ready.\n\n- **Does not expect expression**\n\n- **Details**\n\n **This directive is only needed in no-build-step setups.**\n\n When using in-DOM templates, there can be a \"flash of un-compiled templates\": the user may see raw mustache tags until the mounted component replaces them with rendered content.\n\n `v-cloak` will remain on the element until the associated component instance is mounted. Combined with CSS rules such as `[v-cloak] { display: none }`, it can be used to hide the raw templates until the component is ready.\n\n- **Example**\n\n ```css\n [v-cloak] {\n display: none;\n }\n ```\n\n ```html\n <div v-cloak>\n {{ message }}\n </div>\n ```\n\n The `<div>` will not be visible until the compilation is done.\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-cloak" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-cloak" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-cloak" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-cloak" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-cloak" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-cloak" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-cloak" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-cloak" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-cloak" + } + ] + }, + { + name: "key", + description: { + kind: "markdown", + value: "\nThe `key` special attribute is primarily used as a hint for Vue's virtual DOM algorithm to identify vnodes when diffing the new list of nodes against the old list.\n\n- **Expects:** `number | string | symbol`\n\n- **Details**\n\n Without keys, Vue uses an algorithm that minimizes element movement and tries to patch/reuse elements of the same type in-place as much as possible. With keys, it will reorder elements based on the order change of keys, and elements with keys that are no longer present will always be removed / destroyed.\n\n Children of the same common parent must have **unique keys**. Duplicate keys will cause render errors.\n\n The most common use case is combined with `v-for`:\n\n ```html\n <ul>\n <li v-for=\"item in items\" :key=\"item.id\">...</li>\n </ul>\n ```\n\n It can also be used to force replacement of an element/component instead of reusing it. This can be useful when you want to:\n\n - Properly trigger lifecycle hooks of a component\n - Trigger transitions\n\n For example:\n\n ```html\n <transition>\n <span :key=\"text\">{{ text }}</span>\n </transition>\n ```\n\n When `text` changes, the `<span>` will always be replaced instead of patched, so a transition will be triggered.\n\n- **See also** [Guide - List Rendering - Maintaining State with `key`](https://it.vuejs.org/guide/essentials/list.html#maintaining-state-with-key)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-special-attributes.html#key" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-special-attributes.html#key" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-special-attributes.html#key" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-special-attributes.html#key" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-special-attributes.html#key" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-special-attributes.html#key" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-special-attributes.html#key" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-special-attributes.html#key" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-special-attributes.html#key" + } + ] + }, + { + name: "ref", + description: { + kind: "markdown", + value: "\nDenotes a [template ref](https://it.vuejs.org/guide/essentials/template-refs.html).\n\n- **Expects:** `string | Function`\n\n- **Details**\n\n `ref` is used to register a reference to an element or a child component.\n\n In Options API, the reference will be registered under the component's `this.$refs` object:\n\n ```html\n <!-- stored as this.$refs.p -->\n <p ref=\"p\">hello</p>\n ```\n\n In Composition API, the reference will be stored in a ref with matching name:\n\n ```vue\n <script setup>\n import { ref } from 'vue'\n\n const p = ref()\n </script>\n\n <template>\n <p ref=\"p\">hello</p>\n </template>\n ```\n\n If used on a plain DOM element, the reference will be that element; if used on a child component, the reference will be the child component instance.\n\n Alternatively `ref` can accept a function value which provides full control over where to store the reference:\n\n ```html\n <ChildComponent :ref=\"(el) => child = el\" />\n ```\n\n An important note about the ref registration timing: because the refs themselves are created as a result of the render function, you must wait until the component is mounted before accessing them.\n\n `this.$refs` is also non-reactive, therefore you should not attempt to use it in templates for data-binding.\n\n- **See also**\n - [Guide - Template Refs](https://it.vuejs.org/guide/essentials/template-refs.html)\n - [Guide - Typing Template Refs](https://it.vuejs.org/guide/typescript/composition-api.html#typing-template-refs) <sup class=\"vt-badge ts\" />\n - [Guide - Typing Component Template Refs](https://it.vuejs.org/guide/typescript/composition-api.html#typing-component-template-refs) <sup class=\"vt-badge ts\" />\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-special-attributes.html#ref" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-special-attributes.html#ref" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-special-attributes.html#ref" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-special-attributes.html#ref" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-special-attributes.html#ref" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-special-attributes.html#ref" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-special-attributes.html#ref" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-special-attributes.html#ref" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-special-attributes.html#ref" + } + ] + }, + { + name: "is", + description: { + kind: "markdown", + value: "\nUsed for binding [dynamic components](https://it.vuejs.org/guide/essentials/component-basics.html#dynamic-components).\n\n- **Expects:** `string | Component`\n\n- **Usage on native elements** <sup class=\"vt-badge\">3.1+</sup>\n\n When the `is` attribute is used on a native HTML element, it will be interpreted as a [Customized built-in element](https://html.spec.whatwg.org/multipage/custom-elements.html#custom-elements-customized-builtin-example), which is a native web platform feature.\n\n There is, however, a use case where you may need Vue to replace a native element with a Vue component, as explained in [DOM Template Parsing Caveats](https://it.vuejs.org/guide/essentials/component-basics.html#dom-template-parsing-caveats). You can prefix the value of the `is` attribute with `vue:` so that Vue will render the element as a Vue component instead:\n\n ```html\n <table>\n <tr is=\"vue:my-row-component\"></tr>\n </table>\n ```\n\n- **See also**\n\n - [Built-in Special Element - `<component>`](https://it.vuejs.org/api/built-in-special-elements.html#component)\n - [Dynamic Components](https://it.vuejs.org/guide/essentials/component-basics.html#dynamic-components)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-special-attributes.html#is" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-special-attributes.html#is" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-special-attributes.html#is" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-special-attributes.html#is" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-special-attributes.html#is" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-special-attributes.html#is" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-special-attributes.html#is" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-special-attributes.html#is" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-special-attributes.html#is" + } + ] + } +]; +var require$$1 = { + version: version$j, + tags: tags$c, + globalAttributes: globalAttributes$j +}; + +const version$i = 1.1; +const tags$b = [ + { + name: "Transition", + description: { + kind: "markdown", + value: "\n为**单个**元素或组件提供动画过渡效果。\n\n- **Props**\n\n ```ts\n interface TransitionProps {\n /**\n * 用于自动生成过渡 CSS class 名。\n * 例如 `name: 'fade'` 将自动扩展为 `.fade-enter`、\n * `.fade-enter-active` 等。\n */\n name?: string\n /**\n * 是否应用 CSS 过渡 class。\n * 默认:true\n */\n css?: boolean\n /**\n * 指定要等待的过渡事件类型\n * 来确定过渡结束的时间。\n * 默认情况下会自动检测\n * 持续时间较长的类型。\n */\n type?: 'transition' | 'animation'\n /**\n * 显式指定过渡的持续时间。\n * 默认情况下是等待过渡效果的根元素的第一个 `transitionend`\n * 或`animationend`事件。\n */\n duration?: number | { enter: number; leave: number }\n /**\n * 控制离开/进入过渡的时序。\n * 默认情况下是同时的。\n */\n mode?: 'in-out' | 'out-in' | 'default'\n /**\n * 是否对初始渲染使用过渡。\n * 默认:false\n */\n appear?: boolean\n\n /**\n * 用于自定义过渡 class 的 prop。\n * 在模板中使用短横线命名,例如:enter-from-class=\"xxx\"\n */\n enterFromClass?: string\n enterActiveClass?: string\n enterToClass?: string\n appearFromClass?: string\n appearActiveClass?: string\n appearToClass?: string\n leaveFromClass?: string\n leaveActiveClass?: string\n leaveToClass?: string\n }\n ```\n\n- **事件**\n\n - `@before-enter`\n - `@before-leave`\n - `@enter`\n - `@leave`\n - `@appear`\n - `@after-enter`\n - `@after-leave`\n - `@after-appear`\n - `@enter-cancelled`\n - `@leave-cancelled` (`v-show` only)\n - `@appear-cancelled`\n\n- **示例**\n\n 简单元素:\n\n ```html\n <Transition>\n <div v-if=\"ok\">toggled content</div>\n </Transition>\n ```\n\n 通过改变 `key` 属性来强制过度执行:\n\n ```html\n <Transition>\n <div :key=\"text\">{{ text }}</div>\n </Transition>\n ```\n\n 动态组件,初始渲染时带有过渡模式 + 动画出现:\n\n ```html\n <Transition name=\"fade\" mode=\"out-in\" appear>\n <component :is=\"view\"></component>\n </Transition>\n ```\n\n 监听过渡事件:\n\n ```html\n <Transition @after-enter=\"onTransitionComplete\">\n <div v-show=\"ok\">toggled content</div>\n </Transition>\n ```\n\n- **参考** [`<Transition>` 指南](https://cn.vuejs.org/guide/built-ins/transition.html)\n" + }, + attributes: [ + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-components.html#transition" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-components.html#transition" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-components.html#transition" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-components.html#transition" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-components.html#transition" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-components.html#transition" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-components.html#transition" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-components.html#transition" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-components.html#transition" + } + ] + }, + { + name: "TransitionGroup", + description: { + kind: "markdown", + value: "\n为列表中的**多个**元素或组件提供过渡效果。\n\n- **Props**\n\n `<TransitionGroup>` 拥有与 `<Transition>` 除了 `mode` 以外所有的 props,并增加了两个额外的 props:\n\n ```ts\n interface TransitionGroupProps extends Omit<TransitionProps, 'mode'> {\n /**\n * 如果未定义,则渲染为片段 (fragment)。\n */\n tag?: string\n /**\n * 用于自定义过渡期间被应用的 CSS class。\n * 在模板中使用 kebab-case,例如 move-class=\"xxx\"\n */\n moveClass?: string\n }\n ```\n\n- **事件**\n\n `<TransitionGroup>` 抛出与 `<Transition>` 相同的事件。\n\n- **详细信息**\n\n 默认情况下,`<TransitionGroup>` 不会渲染一个容器 DOM 元素,但是可以通过 `tag` prop 启用。\n\n 注意,每个 `<transition-group>` 的子节点必须有[**独立的 key**](https://cn.vuejs.org/guide/essentials/list.html#maintaining-state-with-key),动画才能正常工作。\n\n `<TransitionGroup>` 支持通过 CSS transform 控制移动效果。当一个子节点在屏幕上的位置在更新之后发生变化时,它会被添加一个使其位移的 CSS class (基于 `name` attribute 推导,或使用 `move-class` prop 显式配置)。如果使其位移的 class 被添加时 CSS 的 `transform` 属性是“可过渡的”,那么该元素会基于 [FLIP 技巧](https://aerotwist.com/blog/flip-your-animations/)平滑地到达动画终点。\n\n- **示例**\n\n ```html\n <TransitionGroup tag=\"ul\" name=\"slide\">\n <li v-for=\"item in items\" :key=\"item.id\">\n {{ item.text }}\n </li>\n </TransitionGroup>\n ```\n\n- **参考**[指南 - TransitionGroup](https://cn.vuejs.org/guide/built-ins/transition-group.html)\n" + }, + attributes: [ + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-components.html#transitiongroup" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-components.html#transitiongroup" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-components.html#transitiongroup" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-components.html#transitiongroup" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-components.html#transitiongroup" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-components.html#transitiongroup" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-components.html#transitiongroup" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-components.html#transitiongroup" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-components.html#transitiongroup" + } + ] + }, + { + name: "KeepAlive", + description: { + kind: "markdown", + value: "\n缓存包裹在其中的动态切换组件。\n\n- **Props**\n\n ```ts\n interface KeepAliveProps {\n /**\n * 如果指定,则只有与 `include` 名称\n * 匹配的组件才会被缓存。\n */\n include?: MatchPattern\n /**\n * 任何名称与 `exclude`\n * 匹配的组件都不会被缓存。\n */\n exclude?: MatchPattern\n /**\n * 最多可以缓存多少组件实例。\n */\n max?: number | string\n }\n\n type MatchPattern = string | RegExp | (string | RegExp)[]\n ```\n\n- **详细信息**\n\n `<KeepAlive>` 包裹动态组件时,会缓存不活跃的组件实例,而不是销毁它们。\n\n 任何时候都只能有一个活跃组件实例作为 `<KeepAlive>` 的直接子节点。\n\n 当一个组件在 `<KeepAlive>` 中被切换时,它的 `activated` 和 `deactivated` 生命周期钩子将被调用,用来替代 `mounted` 和 `unmounted`。这适用于 `<KeepAlive>` 的直接子节点及其所有子孙节点。\n\n- **示例**\n\n 基本用法:\n\n ```html\n <KeepAlive>\n <component :is=\"view\"></component>\n </KeepAlive>\n ```\n\n 与 `v-if` / `v-else` 分支一起使用时,同一时间只能有一个组件被渲染:\n\n ```html\n <KeepAlive>\n <comp-a v-if=\"a > 1\"></comp-a>\n <comp-b v-else></comp-b>\n </KeepAlive>\n ```\n\n 与 `<Transition>` 一起使用:\n\n ```html\n <Transition>\n <KeepAlive>\n <component :is=\"view\"></component>\n </KeepAlive>\n </Transition>\n ```\n\n 使用 `include` / `exclude`:\n\n ```html\n <!-- 用逗号分隔的字符串 -->\n <KeepAlive include=\"a,b\">\n <component :is=\"view\"></component>\n </KeepAlive>\n\n <!-- 正则表达式 (使用 `v-bind`) -->\n <KeepAlive :include=\"/a|b/\">\n <component :is=\"view\"></component>\n </KeepAlive>\n\n <!-- 数组 (使用 `v-bind`) -->\n <KeepAlive :include=\"['a', 'b']\">\n <component :is=\"view\"></component>\n </KeepAlive>\n ```\n\n 使用 `max`:\n\n ```html\n <KeepAlive :max=\"10\">\n <component :is=\"view\"></component>\n </KeepAlive>\n ```\n\n- **参考**[指南 - KeepAlive](https://cn.vuejs.org/guide/built-ins/keep-alive.html)\n" + }, + attributes: [ + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-components.html#keepalive" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-components.html#keepalive" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-components.html#keepalive" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-components.html#keepalive" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-components.html#keepalive" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-components.html#keepalive" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-components.html#keepalive" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-components.html#keepalive" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-components.html#keepalive" + } + ] + }, + { + name: "Teleport", + description: { + kind: "markdown", + value: "\n将其插槽内容渲染到 DOM 中的另一个位置。\n\n- **Props**\n\n ```ts\n interface TeleportProps {\n /**\n * 必填项。指定目标容器。\n * 可以是选择器或实际元素。\n */\n to: string | HTMLElement\n /**\n * 当值为 `true` 时,内容将保留在其原始位置\n * 而不是移动到目标容器中。\n * 可以动态更改。\n */\n disabled?: boolean\n }\n ```\n\n- **示例**\n\n 指定目标容器:\n\n ```html\n <Teleport to=\"#some-id\" />\n <Teleport to=\".some-class\" />\n <Teleport to=\"[data-teleport]\" />\n ```\n\n 有条件地禁用:\n\n ```html\n <Teleport to=\"#popup\" :disabled=\"displayVideoInline\">\n <video src=\"./my-movie.mp4\">\n </Teleport>\n ```\n\n- **参考**[指南 - Teleport](https://cn.vuejs.org/guide/built-ins/teleport.html)\n" + }, + attributes: [ + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-components.html#teleport" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-components.html#teleport" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-components.html#teleport" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-components.html#teleport" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-components.html#teleport" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-components.html#teleport" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-components.html#teleport" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-components.html#teleport" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-components.html#teleport" + } + ] + }, + { + name: "Suspense", + description: { + kind: "markdown", + value: "\n用于协调对组件树中嵌套的异步依赖的处理。\n\n- **Props**\n\n ```ts\n interface SuspenseProps {\n timeout?: string | number\n }\n ```\n\n- **事件**\n\n - `@resolve`\n - `@pending`\n - `@fallback`\n\n- **详细信息**\n\n `<Suspense>` 接受两个插槽:`#default` 和 `#fallback`。它将在内存中渲染默认插槽的同时展示后备插槽内容。\n\n 如果在渲染时遇到异步依赖项 ([异步组件](https://cn.vuejs.org/guide/components/async.html)和具有 [`async setup()`](https://cn.vuejs.org/guide/built-ins/suspense.html#async-setup) 的组件),它将等到所有异步依赖项解析完成时再显示默认插槽。\n\n- **参考**[指南 - Suspense](https://cn.vuejs.org/guide/built-ins/suspense.html)\n" + }, + attributes: [ + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-components.html#suspense" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-components.html#suspense" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-components.html#suspense" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-components.html#suspense" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-components.html#suspense" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-components.html#suspense" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-components.html#suspense" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-components.html#suspense" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-components.html#suspense" + } + ] + }, + { + name: "component", + description: { + kind: "markdown", + value: "\n一个用于渲染动态组件或元素的“元组件”。\n\n- **Props**\n\n ```ts\n interface DynamicComponentProps {\n is: string | Component\n }\n ```\n\n- **详细信息**\n\n 要渲染的实际组件由 `is` prop 决定。\n\n - 当 `is` 是字符串,它既可以是 HTML 标签名也可以是组件的注册名。\n\n - 或者,`is` 也可以直接绑定到组件的定义。\n\n- **示例**\n\n 按注册名渲染组件 (选项式 API):\n\n ```vue\n <script>\n import Foo from './Foo.vue'\n import Bar from './Bar.vue'\n\n export default {\n components: { Foo, Bar },\n data() {\n return {\n view: 'Foo'\n }\n }\n }\n </script>\n\n <template>\n <component :is=\"view\" />\n </template>\n ```\n\n 按定义渲染组件 (`<script setup>` 组合式 API):\n\n ```vue\n <script setup>\n import Foo from './Foo.vue'\n import Bar from './Bar.vue'\n </script>\n\n <template>\n <component :is=\"Math.random() > 0.5 ? Foo : Bar\" />\n </template>\n ```\n\n 渲染 HTML 元素:\n\n ```html\n <component :is=\"href ? 'a' : 'span'\"></component>\n ```\n\n [内置组件](./built-in-components)都可以传递给 `is`,但是如果想通过名称传递则必须先对其进行注册。举例来说:\n\n ```vue\n <script>\n import { Transition, TransitionGroup } from 'vue'\n\n export default {\n components: {\n Transition,\n TransitionGroup\n }\n }\n </script>\n\n <template>\n <component :is=\"isGroup ? 'TransitionGroup' : 'Transition'\">\n ...\n </component>\n </template>\n ```\n\n 如果将组件本身传递给 `is` 而不是其名称,则不需要注册,例如在 `<script setup>` 中。\n\n 如果在 `<component>` 标签上使用 `v-model`,模板编译器会将其扩展为 `modelValue` prop 和 `update:modelValue` 事件监听器,就像对任何其他组件一样。但是,这与原生 HTML 元素不兼容,例如 `<input>` 或 `<select>`。因此,在动态创建的原生元素上使用 `v-model` 将不起作用:\n\n ```vue\n <script setup>\n import { ref } from 'vue'\n\n const tag = ref('input')\n const username = ref('')\n </script>\n\n <template>\n <!-- 由于 'input' 是原生 HTML 元素,因此这个 v-model 不起作用 -->\n <component :is=\"tag\" v-model=\"username\" />\n </template>\n ```\n\n 在实践中,这种极端情况并不常见,因为原生表单字段通常包裹在实际应用的组件中。如果确实需要直接使用原生元素,那么你可以手动将 `v-model` 拆分为 attribute 和事件。\n\n- **参考**[动态组件](https://cn.vuejs.org/guide/essentials/component-basics.html#dynamic-components)\n" + }, + attributes: [ + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-special-elements.html#component" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-special-elements.html#component" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-special-elements.html#component" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-special-elements.html#component" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-special-elements.html#component" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-special-elements.html#component" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-special-elements.html#component" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-special-elements.html#component" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-special-elements.html#component" + } + ] + }, + { + name: "slot", + description: { + kind: "markdown", + value: "\n表示模板中的插槽内容出口。\n\n- **Props**\n\n ```ts\n interface SlotProps {\n /**\n * 任何传递给 <slot> 的 prop 都可以作为作用域插槽\n * 的参数传递\n */\n [key: string]: any\n /**\n * 保留,用于指定插槽名。\n */\n name?: string\n }\n ```\n\n- **详细信息**\n\n `<slot>` 元素可以使用 `name` attribute 来指定插槽名。当没有指定 `name` 时,将会渲染默认插槽。传递给插槽元素的附加 attributes 将作为插槽 props,传递给父级中定义的作用域插槽。\n\n 元素本身将被其所匹配的插槽内容替换。\n\n Vue 模板里的 `<slot>` 元素会被编译到 JavaScript,因此不要与[原生 `<slot>` 元素](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/slot)进行混淆。\n\n- **参考**[组件 - 插槽](https://cn.vuejs.org/guide/components/slots.html)\n" + }, + attributes: [ + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-special-elements.html#slot" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-special-elements.html#slot" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-special-elements.html#slot" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-special-elements.html#slot" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-special-elements.html#slot" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-special-elements.html#slot" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-special-elements.html#slot" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-special-elements.html#slot" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-special-elements.html#slot" + } + ] + }, + { + name: "template", + description: { + kind: "markdown", + value: "\n当我们想要使用内置指令而不在 DOM 中渲染元素时,`<template>` 标签可以作为占位符使用。\n\n- **详细信息**\n\n 对 `<template>` 的特殊处理只有在它与以下任一指令一起使用时才会被触发:\n\n - `v-if`、`v-else-if` 或 `v-else`\n - `v-for`\n - `v-slot`\n\n 如果这些指令都不存在,那么它将被渲染成一个[原生的 `<template>` 元素](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/template)。\n\n 带有 `v-for` 的 `<template>` 也可以有一个 [`key` 属性](https://cn.vuejs.org/api/built-in-special-attributes.html#key)。所有其他的属性和指令都将被丢弃,因为没有相应的元素,它们就没有意义。\n\n 单文件组件使用[顶层的 `<template>` 标签](https://cn.vuejs.org/api/sfc-spec.html#language-blocks)来包裹整个模板。这种用法与上面描述的 `<template>` 使用方式是有区别的。该顶层标签不是模板本身的一部分,不支持指令等模板语法。\n\n- **参考**\n - [指南 - `<template>` 上的 `v-if`](https://cn.vuejs.org/guide/essentials/conditional.html#v-if-on-template)\n - [指南 - `<template>` 上的 `v-for`](https://cn.vuejs.org/guide/essentials/list.html#v-for-on-template)\n - [指南 - 具名插槽](https://cn.vuejs.org/guide/components/slots.html#named-slots)\n" + }, + attributes: [ + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-special-elements.html#template" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-special-elements.html#template" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-special-elements.html#template" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-special-elements.html#template" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-special-elements.html#template" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-special-elements.html#template" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-special-elements.html#template" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-special-elements.html#template" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-special-elements.html#template" + } + ] + } +]; +const globalAttributes$i = [ + { + name: "v-text", + description: { + kind: "markdown", + value: "\n更新元素的文本内容。\n\n- **期望的绑定值类型:**`string`\n\n- **详细信息**\n\n `v-text` 通过设置元素的 [textContent](https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent) 属性来工作,因此它将覆盖元素中所有现有的内容。如果你需要更新 `textContent` 的部分,应该使用 [mustache interpolations](https://cn.vuejs.org/guide/essentials/template-syntax.html#text-interpolation) 代替。\n\n- **示例**\n\n ```html\n <span v-text=\"msg\"></span>\n <!-- 等同于 -->\n <span>{{msg}}</span>\n ```\n\n- **参考**[模板语法 - 文本插值](https://cn.vuejs.org/guide/essentials/template-syntax.html#text-interpolation)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-text" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-text" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-text" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-text" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-text" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-text" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-text" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-text" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-text" + } + ] + }, + { + name: "v-html", + description: { + kind: "markdown", + value: "\n更新元素的 [innerHTML](https://developer.mozilla.org/en-US/docs/Web/API/Element/innerHTML)。\n\n- **期望的绑定值类型:**`string`\n\n- **详细信息**\n\n `v-html` 的内容直接作为普通 HTML 插入—— Vue 模板语法是不会被解析的。如果你发现自己正打算用 `v-html` 来编写模板,不如重新想想怎么使用组件来代替。\n\n ::: warning 安全说明\n 在你的站点上动态渲染任意的 HTML 是非常危险的,因为它很容易导致 [XSS 攻击](https://en.wikipedia.org/wiki/Cross-site_scripting)。请只对可信内容使用 HTML 插值,**绝不要**将用户提供的内容作为插值\n :::\n\n 在[单文件组件](https://cn.vuejs.org/guide/scaling-up/sfc.html),`scoped` 样式将不会作用于 `v-html` 里的内容,因为 HTML 内容不会被 Vue 的模板编译器解析。如果你想让 `v-html` 的内容也支持 scoped CSS,你可以使用 [CSS modules](./sfc-css-features#css-modules) 或使用一个额外的全局 `<style>` 元素,手动设置类似 BEM 的作用域策略。\n\n- **示例**\n\n ```html\n <div v-html=\"html\"></div>\n ```\n\n- **参考**[模板语法 - 原始 HTML](https://cn.vuejs.org/guide/essentials/template-syntax.html#raw-html)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-html" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-html" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-html" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-html" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-html" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-html" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-html" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-html" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-html" + } + ] + }, + { + name: "v-show", + description: { + kind: "markdown", + value: "\n基于表达式值的真假性,来改变元素的可见性。\n\n- **期望的绑定值类型:**`any`\n\n- **详细信息**\n\n `v-show` 通过设置内联样式的 `display` CSS 属性来工作,当元素可见时将使用初始 `display` 值。当条件改变时,也会触发过渡效果。\n\n- **参考**[条件渲染 - v-show](https://cn.vuejs.org/guide/essentials/conditional.html#v-show)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-show" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-show" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-show" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-show" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-show" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-show" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-show" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-show" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-show" + } + ] + }, + { + name: "v-if", + description: { + kind: "markdown", + value: "\n基于表达式值的真假性,来条件性地渲染元素或者模板片段。\n\n- **期望的绑定值类型:**`any`\n\n- **详细信息**\n\n 当 `v-if` 元素被触发,元素及其所包含的指令/组件都会销毁和重构。如果初始条件是假,那么其内部的内容根本都不会被渲染。\n\n 可用于 `<template>` 表示仅包含文本或多个元素的条件块。\n\n 当条件改变时会触发过渡效果。\n\n 当同时使用时,`v-if` 比 `v-for` 优先级更高。我们并不推荐在一元素上同时使用这两个指令 — 查看[列表渲染指南](https://cn.vuejs.org/guide/essentials/list.html#v-for-with-v-if)详情。\n\n- **参考**[条件渲染 - v-if](https://cn.vuejs.org/guide/essentials/conditional.html#v-if)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-if" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-if" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-if" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-if" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-if" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-if" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-if" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-if" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-if" + } + ] + }, + { + name: "v-else", + valueSet: "v", + description: { + kind: "markdown", + value: "\n表示 `v-if` 或 `v-if` / `v-else-if` 链式调用的“else 块”。\n\n- **无需传入表达式**\n\n- **详细信息**\n\n - 限定:上一个兄弟元素必须有 `v-if` 或 `v-else-if`。\n\n - 可用于 `<template>` 表示仅包含文本或多个元素的条件块。\n\n- **示例**\n\n ```html\n <div v-if=\"Math.random() > 0.5\">\n Now you see me\n </div>\n <div v-else>\n Now you don't\n </div>\n ```\n\n- **参考**[条件渲染 - v-else](https://cn.vuejs.org/guide/essentials/conditional.html#v-else)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-else" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-else" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-else" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-else" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-else" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-else" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-else" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-else" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-else" + } + ] + }, + { + name: "v-else-if", + description: { + kind: "markdown", + value: "\n表示 `v-if` 的“else if 块”。可以进行链式调用。\n\n- **期望的绑定值类型:**`any`\n\n- **详细信息**\n\n - 限定:上一个兄弟元素必须有 `v-if` 或 `v-else-if`。\n\n - 可用于 `<template>` 表示仅包含文本或多个元素的条件块。\n\n- **示例**\n\n ```html\n <div v-if=\"type === 'A'\">\n A\n </div>\n <div v-else-if=\"type === 'B'\">\n B\n </div>\n <div v-else-if=\"type === 'C'\">\n C\n </div>\n <div v-else>\n Not A/B/C\n </div>\n ```\n\n- **参考**[条件渲染 - v-else-if](https://cn.vuejs.org/guide/essentials/conditional.html#v-else-if)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-else-if" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-else-if" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-else-if" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-else-if" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-else-if" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-else-if" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-else-if" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-else-if" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-else-if" + } + ] + }, + { + name: "v-for", + description: { + kind: "markdown", + value: "\n基于原始数据多次渲染元素或模板块。\n\n- **期望的绑定值类型:**`Array | Object | number | string | Iterable`\n\n- **详细信息**\n\n 指令值必须使用特殊语法 `alias in expression` 为正在迭代的元素提供一个别名:\n\n ```html\n <div v-for=\"item in items\">\n {{ item.text }}\n </div>\n ```\n\n 或者,你也可以为索引指定别名 (如果用在对象,则是键值):\n\n ```html\n <div v-for=\"(item, index) in items\"></div>\n <div v-for=\"(value, key) in object\"></div>\n <div v-for=\"(value, name, index) in object\"></div>\n ```\n\n `v-for` 的默认方式是尝试就地更新元素而不移动它们。要强制其重新排序元素,你需要用特殊 attribute `key` 来提供一个排序提示:\n\n ```html\n <div v-for=\"item in items\" :key=\"item.id\">\n {{ item.text }}\n </div>\n ```\n\n `v-for` 也可以用于 [Iterable Protocol](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#The_iterable_protocol) 的实现,包括原生 `Map` 和 `Set`。\n\n- **参考**\n - [列表渲染](https://cn.vuejs.org/guide/essentials/list.html)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-for" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-for" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-for" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-for" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-for" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-for" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-for" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-for" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-for" + } + ] + }, + { + name: "v-on", + description: { + kind: "markdown", + value: "\n给元素绑定事件监听器。\n\n- **缩写:**`@`\n\n- **期望的绑定值类型:**`Function | Inline Statement | Object (不带参数)`\n\n- **参数:**`event` (使用对象语法则为可选项)\n\n- **修饰符**\n\n - `.stop` - 调用 `event.stopPropagation()`。\n - `.prevent` - 调用 `event.preventDefault()`。\n - `.capture` - 在捕获模式添加事件监听器。\n - `.self` - 只有事件从元素本身发出才触发处理函数。\n - `.{keyAlias}` - 只在某些按键下触发处理函数。\n - `.once` - 最多触发一次处理函数。\n - `.left` - 只在鼠标左键事件触发处理函数。\n - `.right` - 只在鼠标右键事件触发处理函数。\n - `.middle` - 只在鼠标中键事件触发处理函数。\n - `.passive` - 通过 `{ passive: true }` 附加一个 DOM 事件。\n\n- **详细信息**\n\n 事件类型由参数来指定。表达式可以是一个方法名,一个内联声明,如果有修饰符则可省略。\n\n 当用于普通元素,只监听[**原生 DOM 事件**](https://developer.mozilla.org/en-US/docs/Web/Events)。当用于自定义元素组件,则监听子组件触发的**自定义事件**。\n\n 当监听原生 DOM 事件时,方法接收原生事件作为唯一参数。如果使用内联声明,声明可以访问一个特殊的 `$event` 变量:`v-on:click=\"handle('ok', $event)\"`。\n\n `v-on` 还支持绑定不带参数的事件/监听器对的对象。请注意,当使用对象语法时,不支持任何修饰符。\n\n- **示例**\n\n ```html\n <!-- 方法处理函数 -->\n <button v-on:click=\"doThis\"></button>\n\n <!-- 动态事件 -->\n <button v-on:[event]=\"doThis\"></button>\n\n <!-- 内联声明 -->\n <button v-on:click=\"doThat('hello', $event)\"></button>\n\n <!-- 缩写 -->\n <button @click=\"doThis\"></button>\n\n <!-- 使用缩写的动态事件 -->\n <button @[event]=\"doThis\"></button>\n\n <!-- 停止传播 -->\n <button @click.stop=\"doThis\"></button>\n\n <!-- 阻止默认事件 -->\n <button @click.prevent=\"doThis\"></button>\n\n <!-- 不带表达式地阻止默认事件 -->\n <form @submit.prevent></form>\n\n <!-- 链式调用修饰符 -->\n <button @click.stop.prevent=\"doThis\"></button>\n\n <!-- 按键用于 keyAlias 修饰符-->\n <input @keyup.enter=\"onEnter\" />\n\n <!-- 点击事件将最多触发一次 -->\n <button v-on:click.once=\"doThis\"></button>\n\n <!-- 对象语法 -->\n <button v-on=\"{ mousedown: doThis, mouseup: doThat }\"></button>\n ```\n\n 监听子组件的自定义事件 (当子组件的“my-event”事件被触发,处理函数将被调用):\n\n ```html\n <MyComponent @my-event=\"handleThis\" />\n\n <!-- 内联声明 -->\n <MyComponent @my-event=\"handleThis(123, $event)\" />\n ```\n\n- **参考**\n - [事件处理](https://cn.vuejs.org/guide/essentials/event-handling.html)\n - [组件 - 自定义事件](https://cn.vuejs.org/guide/essentials/component-basics.html#listening-to-events)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-on" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-on" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-on" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-on" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-on" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-on" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-on" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-on" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-on" + } + ] + }, + { + name: "v-bind", + description: { + kind: "markdown", + value: "\n动态的绑定一个或多个 attribute,也可以是组件的 prop。\n\n- **缩写:**`:` 或者 `.` (当使用 `.prop` 修饰符)\n\n- **期望:**`any (带参数) | Object (不带参数)`\n\n- **参数:**`attrOrProp (可选的)`\n\n- **修饰符**\n\n - `.camel` - 将短横线命名的 attribute 转变为驼峰式命名。\n - `.prop` - 强制绑定为 DOM property。<sup class=\"vt-badge\">3.2+</sup>\n - `.attr` - 强制绑定为 DOM attribute。<sup class=\"vt-badge\">3.2+</sup>\n\n- **用途**\n\n 当用于绑定 `class` 或 `style` attribute,`v-bind` 支持额外的值类型如数组或对象。详见下方的指南链接。\n\n 在处理绑定时,Vue 默认会利用 `in` 操作符来检查该元素上是否定义了和绑定的 key 同名的 DOM property。如果存在同名的 property,则 Vue 会将它作为 DOM property 赋值,而不是作为 attribute 设置。这个行为在大多数情况都符合期望的绑定值类型,但是你也可以显式用 `.prop` 和 `.attr` 修饰符来强制绑定方式。有时这是必要的,特别是在和[自定义元素](https://cn.vuejs.org/guide/extras/web-components.html#passing-dom-properties)打交道时。\n\n 当用于组件 props 绑定时,所绑定的 props 必须在子组件中已被正确声明。\n\n 当不带参数使用时,可以用于绑定一个包含了多个 attribute 名称-绑定值对的对象。\n\n- **示例**\n\n ```html\n <!-- 绑定 attribute -->\n <img v-bind:src=\"imageSrc\" />\n\n <!-- 动态 attribute 名 -->\n <button v-bind:[key]=\"value\"></button>\n\n <!-- 缩写 -->\n <img :src=\"imageSrc\" />\n\n <!-- 缩写形式的动态 attribute 名 -->\n <button :[key]=\"value\"></button>\n\n <!-- 内联字符串拼接 -->\n <img :src=\"'/path/to/images/' + fileName\" />\n\n <!-- class 绑定 -->\n <div :class=\"{ red: isRed }\"></div>\n <div :class=\"[classA, classB]\"></div>\n <div :class=\"[classA, { classB: isB, classC: isC }]\"></div>\n\n <!-- style 绑定 -->\n <div :style=\"{ fontSize: size + 'px' }\"></div>\n <div :style=\"[styleObjectA, styleObjectB]\"></div>\n\n <!-- 绑定对象形式的 attribute -->\n <div v-bind=\"{ id: someProp, 'other-attr': otherProp }\"></div>\n\n <!-- prop 绑定。“prop” 必须在子组件中已声明。 -->\n <MyComponent :prop=\"someThing\" />\n\n <!-- 传递子父组件共有的 prop -->\n <MyComponent v-bind=\"$props\" />\n\n <!-- XLink -->\n <svg><a :xlink:special=\"foo\"></a></svg>\n ```\n\n `.prop` 修饰符也有专门的缩写,`.`:\n\n ```html\n <div :someProperty.prop=\"someObject\"></div>\n\n <!-- 等同于 -->\n <div .someProperty=\"someObject\"></div>\n ```\n\n 当在 DOM 内模板使用 `.camel` 修饰符,可以驼峰化 `v-bind` attribute 的名称,例如 SVG `viewBox` attribute:\n\n ```html\n <svg :view-box.camel=\"viewBox\"></svg>\n ```\n\n 如果使用字符串模板或使用构建步骤预编译模板,则不需要 `.camel`。\n\n- **参考**\n - [Class 与 Style 绑定](https://cn.vuejs.org/guide/essentials/class-and-style.html)\n - [组件 - Prop 传递细节](https://cn.vuejs.org/guide/components/props.html#prop-passing-details)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-bind" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-bind" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-bind" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-bind" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-bind" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-bind" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-bind" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-bind" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-bind" + } + ] + }, + { + name: "v-model", + description: { + kind: "markdown", + value: "\n在表单输入元素或组件上创建双向绑定。\n\n- **期望的绑定值类型**:根据表单输入元素或组件输出的值而变化\n\n- **仅限:**\n\n - `<input>`\n - `<select>`\n - `<textarea>`\n - components\n\n- **修饰符**\n\n - [`.lazy`](https://cn.vuejs.org/guide/essentials/forms.html#lazy) - 监听 `change` 事件而不是 `input`\n - [`.number`](https://cn.vuejs.org/guide/essentials/forms.html#number) - 将输入的合法字符串转为数字\n - [`.trim`](https://cn.vuejs.org/guide/essentials/forms.html#trim) - 移除输入内容两端空格\n\n- **参考**\n\n - [表单输入绑定](https://cn.vuejs.org/guide/essentials/forms.html)\n - [组件事件 - 配合 `v-model` 使用](https://cn.vuejs.org/guide/components/v-model.html)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-model" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-model" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-model" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-model" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-model" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-model" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-model" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-model" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-model" + } + ] + }, + { + name: "v-slot", + description: { + kind: "markdown", + value: "\n用于声明具名插槽或是期望接收 props 的作用域插槽。\n\n- **缩写:**`#`\n\n- **期望的绑定值类型**:能够合法在函数参数位置使用的 JavaScript 表达式。支持解构语法。绑定值是可选的——只有在给作用域插槽传递 props 才需要。\n\n- **参数**:插槽名 (可选,默认是 `default`)\n\n- **仅限:**\n\n - `<template>`\n - [components](https://cn.vuejs.org/guide/components/slots.html#scoped-slots) (用于带有 prop 的单个默认插槽)\n\n- **示例**\n\n ```html\n <!-- 具名插槽 -->\n <BaseLayout>\n <template v-slot:header>\n Header content\n </template>\n\n <template v-slot:default>\n Default slot content\n </template>\n\n <template v-slot:footer>\n Footer content\n </template>\n </BaseLayout>\n\n <!-- 接收 prop 的具名插槽 -->\n <InfiniteScroll>\n <template v-slot:item=\"slotProps\">\n <div class=\"item\">\n {{ slotProps.item.text }}\n </div>\n </template>\n </InfiniteScroll>\n\n <!-- 接收 prop 的默认插槽,并解构 -->\n <Mouse v-slot=\"{ x, y }\">\n Mouse position: {{ x }}, {{ y }}\n </Mouse>\n ```\n\n- **参考**\n - [组件 - 插槽](https://cn.vuejs.org/guide/components/slots.html)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-slot" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-slot" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-slot" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-slot" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-slot" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-slot" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-slot" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-slot" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-slot" + } + ] + }, + { + name: "v-pre", + description: { + kind: "markdown", + value: "\n跳过该元素及其所有子元素的编译。\n\n- **无需传入**\n\n- **详细信息**\n\n 元素内具有 `v-pre`,所有 Vue 模板语法都会被保留并按原样渲染。最常见的用例就是显示原始双大括号标签及内容。\n\n- **示例**\n\n ```html\n <span v-pre>{{ this will not be compiled }}</span>\n ```\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-pre" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-pre" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-pre" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-pre" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-pre" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-pre" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-pre" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-pre" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-pre" + } + ] + }, + { + name: "v-once", + description: { + kind: "markdown", + value: "\n仅渲染元素和组件一次,并跳过之后的更新。\n\n- **无需传入**\n\n- **详细信息**\n\n 在随后的重新渲染,元素/组件及其所有子项将被当作静态内容并跳过渲染。这可以用来优化更新时的性能。\n\n ```html\n <!-- 单个元素 -->\n <span v-once>This will never change: {{msg}}</span>\n <!-- 带有子元素的元素 -->\n <div v-once>\n <h1>comment</h1>\n <p>{{msg}}</p>\n </div>\n <!-- 组件 -->\n <MyComponent v-once :comment=\"msg\" />\n <!-- `v-for` 指令 -->\n <ul>\n <li v-for=\"i in list\" v-once>{{i}}</li>\n </ul>\n ```\n\n 从 3.2 起,你也可以搭配 [`v-memo`](#v-memo) 的无效条件来缓存部分模板。\n\n- **参考**\n - [数据绑定语法 - 插值](https://cn.vuejs.org/guide/essentials/template-syntax.html#text-interpolation)\n - [v-memo](#v-memo)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-once" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-once" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-once" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-once" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-once" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-once" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-once" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-once" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-once" + } + ] + }, + { + name: "v-memo", + description: { + kind: "markdown", + value: "\n- **期望的绑定值类型:**`any[]`\n\n- **详细信息**\n\n 缓存一个模板的子树。在元素和组件上都可以使用。为了实现缓存,该指令需要传入一个固定长度的依赖值数组进行比较。如果数组里的每个值都与最后一次的渲染相同,那么整个子树的更新将被跳过。举例来说:\n\n ```html\n <div v-memo=\"[valueA, valueB]\">\n ...\n </div>\n ```\n\n 当组件重新渲染,如果 `valueA` 和 `valueB` 都保持不变,这个 `<div>` 及其子项的所有更新都将被跳过。实际上,甚至虚拟 DOM 的 vnode 创建也将被跳过,因为缓存的子树副本可以被重新使用。\n\n 正确指定缓存数组很重要,否则应该生效的更新可能被跳过。`v-memo` 传入空依赖数组 (`v-memo=\"[]\"`) 将与 `v-once` 效果相同。\n\n **与 `v-for` 一起使用**\n\n `v-memo` 仅用于性能至上场景中的微小优化,应该很少需要。最常见的情况可能是有助于渲染海量 `v-for` 列表 (长度超过 1000 的情况):\n\n ```html\n <div v-for=\"item in list\" :key=\"item.id\" v-memo=\"[item.id === selected]\">\n <p>ID: {{ item.id }} - selected: {{ item.id === selected }}</p>\n <p>...more child nodes</p>\n </div>\n ```\n\n 当组件的 `selected` 状态改变,默认会重新创建大量的 vnode,尽管绝大部分都跟之前是一模一样的。`v-memo` 用在这里本质上是在说“只有当该项的被选中状态改变时才需要更新”。这使得每个选中状态没有变的项能完全重用之前的 vnode 并跳过差异比较。注意这里 memo 依赖数组中并不需要包含 `item.id`,因为 Vue 也会根据 item 的 `:key` 进行判断。\n\n :::warning 警告\n 当搭配 `v-for` 使用 `v-memo`,确保两者都绑定在同一个元素上。**`v-memo` 不能用在 `v-for` 内部。**\n :::\n\n `v-memo` 也能被用于在一些默认优化失败的边际情况下,手动避免子组件出现不需要的更新。但是一样的,开发者需要负责指定正确的依赖数组以免跳过必要的更新。\n\n- **参考**\n - [v-once](#v-once)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-memo" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-memo" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-memo" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-memo" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-memo" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-memo" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-memo" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-memo" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-memo" + } + ] + }, + { + name: "v-cloak", + description: { + kind: "markdown", + value: "\n用于隐藏尚未完成编译的 DOM 模板。\n\n- **无需传入**\n\n- **详细信息**\n\n **该指令只在没有构建步骤的环境下需要使用。**\n\n 当使用直接在 DOM 中书写的模板时,可能会出现一种叫做“未编译模板闪现”的情况:用户可能先看到的是还没编译完成的双大括号标签,直到挂载的组件将它们替换为实际渲染的内容。\n\n `v-cloak` 会保留在所绑定的元素上,直到相关组件实例被挂载后才移除。配合像 `[v-cloak] { display: none }` 这样的 CSS 规则,它可以在组件编译完毕前隐藏原始模板。\n\n- **示例**\n\n ```css\n [v-cloak] {\n display: none;\n }\n ```\n\n ```html\n <div v-cloak>\n {{ message }}\n </div>\n ```\n\n 直到编译完成前,`<div>` 将不可见。\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-cloak" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-cloak" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-cloak" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-cloak" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-cloak" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-cloak" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-cloak" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-cloak" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-cloak" + } + ] + }, + { + name: "key", + description: { + kind: "markdown", + value: "\n`key` 这个特殊的 attribute 主要作为 Vue 的虚拟 DOM 算法提示,在比较新旧节点列表时用于识别 vnode。\n\n- **预期**:`number | string | symbol`\n\n- **详细信息**\n\n 在没有 key 的情况下,Vue 将使用一种最小化元素移动的算法,并尽可能地就地更新/复用相同类型的元素。如果传了 key,则将根据 key 的变化顺序来重新排列元素,并且将始终移除/销毁 key 已经不存在的元素。\n\n 同一个父元素下的子元素必须具有**唯一的 key**。重复的 key 将会导致渲染异常。\n\n 最常见的用例是与 `v-for` 结合:\n\n ```html\n <ul>\n <li v-for=\"item in items\" :key=\"item.id\">...</li>\n </ul>\n ```\n\n 也可以用于强制替换一个元素/组件而不是复用它。当你想这么做时它可能会很有用:\n\n - 在适当的时候触发组件的生命周期钩子\n - 触发过渡\n\n 举例来说:\n\n ```html\n <transition>\n <span :key=\"text\">{{ text }}</span>\n </transition>\n ```\n\n 当 `text` 变化时,`<span>` 总是会被替换而不是更新,因此 transition 将会被触发。\n\n- **参考**[指南 - 列表渲染 - 通过 `key` 管理状态](https://cn.vuejs.org/guide/essentials/list.html#maintaining-state-with-key)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-special-attributes.html#key" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-special-attributes.html#key" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-special-attributes.html#key" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-special-attributes.html#key" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-special-attributes.html#key" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-special-attributes.html#key" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-special-attributes.html#key" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-special-attributes.html#key" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-special-attributes.html#key" + } + ] + }, + { + name: "ref", + description: { + kind: "markdown", + value: "\n用于注册[模板引用](https://cn.vuejs.org/guide/essentials/template-refs.html)。\n\n- **预期**:`string | Function`\n\n- **详细信息**\n\n `ref` 用于注册元素或子组件的引用。\n\n 使用选项式 API,引用将被注册在组件的 `this.$refs` 对象里:\n\n ```html\n <!-- 存储为 this.$refs.p -->\n <p ref=\"p\">hello</p>\n ```\n\n 使用组合式 API,引用将存储在与名字匹配的 ref 里:\n\n ```vue\n <script setup>\n import { ref } from 'vue'\n\n const p = ref()\n </script>\n\n <template>\n <p ref=\"p\">hello</p>\n </template>\n ```\n\n 如果用于普通 DOM 元素,引用将是元素本身;如果用于子组件,引用将是子组件的实例。\n\n 或者 `ref` 可以接收一个函数值,用于对存储引用位置的完全控制:\n\n ```html\n <ChildComponent :ref=\"(el) => child = el\" />\n ```\n\n 关于 ref 注册时机的重要说明:因为 ref 本身是作为渲染函数的结果来创建的,必须等待组件挂载后才能对它进行访问。\n\n `this.$refs` 也是非响应式的,因此你不应该尝试在模板中使用它来进行数据绑定。\n\n- **参考**\n - [指南 - 模板引用](https://cn.vuejs.org/guide/essentials/template-refs.html)\n - [指南 - 为模板引用标注类型](https://cn.vuejs.org/guide/typescript/composition-api.html#typing-template-refs) <sup class=\"vt-badge ts\" />\n - [指南 - 为组件模板引用标注类型](https://cn.vuejs.org/guide/typescript/composition-api.html#typing-component-template-refs) <sup class=\"vt-badge ts\" />\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-special-attributes.html#ref" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-special-attributes.html#ref" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-special-attributes.html#ref" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-special-attributes.html#ref" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-special-attributes.html#ref" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-special-attributes.html#ref" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-special-attributes.html#ref" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-special-attributes.html#ref" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-special-attributes.html#ref" + } + ] + }, + { + name: "is", + description: { + kind: "markdown", + value: "\n用于绑定[动态组件](https://cn.vuejs.org/guide/essentials/component-basics.html#dynamic-components)。\n\n- **预期**:`string | Component`\n\n- **用于原生元素** <sup class=\"vt-badge\">3.1+</sup>\n\n 当 `is` attribute 用于原生 HTML 元素时,它将被当作 [Customized built-in element](https://html.spec.whatwg.org/multipage/custom-elements.html#custom-elements-customized-builtin-example),其为原生 web 平台的特性。\n\n 但是,在这种用例中,你可能需要 Vue 用其组件来替换原生元素,如 [DOM 内模板解析注意事项](https://cn.vuejs.org/guide/essentials/component-basics.html#in-dom-template-parsing-caveats)所述。你可以在 `is` attribute 的值中加上 `vue:` 前缀,这样 Vue 就会把该元素渲染为 Vue 组件:\n\n ```html\n <table>\n <tr is=\"vue:my-row-component\"></tr>\n </table>\n ```\n\n- **参考**\n\n - [内置特殊元素 - `<component>`](https://cn.vuejs.org/api/built-in-special-elements.html#component)\n - [动态组件](https://cn.vuejs.org/guide/essentials/component-basics.html#dynamic-components)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-special-attributes.html#is" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-special-attributes.html#is" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-special-attributes.html#is" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-special-attributes.html#is" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-special-attributes.html#is" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-special-attributes.html#is" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-special-attributes.html#is" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-special-attributes.html#is" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-special-attributes.html#is" + } + ] + } +]; +var require$$2 = { + version: version$i, + tags: tags$b, + globalAttributes: globalAttributes$i +}; + +const version$h = 1.1; +const tags$a = [ + { + name: "Transition", + description: { + kind: "markdown", + value: "\nFornece efeitos de transição animados para um **único** elemento ou componente.\n\n- **Propriedades**\n\n ```ts\n interface TransitionProps {\n /**\n * Usado para gerar automaticamente nomes de classes CSS de transição.\n * exemplo `name: 'fade'` expandirá automaticamente para `.fade-enter`,\n * `.fade-enter-active`, etc.\n */\n name?: string\n /**\n * Decide aplicar classes CSS de transição.\n * Padrão: true\n */\n css?: boolean\n /**\n * Especifica o tipo de eventos de transição à aguardar\n * para determinar a transição e o tempo.\n * O comportamento padrão é detetar automaticamente o tipo\n * que tiver a maior duração.\n */\n type?: 'transition' | 'animation'\n /**\n * Especifica durações explícitas para as transições.\n * O comportamento padrão é esperar pelo primeiro evento `transitionend`\n * ou `animationend` no elemento de transição raiz.\n */\n duration?: number | { enter: number; leave: number }\n /**\n * Controla a sequência de tempo das transições que entram ou saem.\n * O comportamento padrão é simultâneo.\n */\n mode?: 'in-out' | 'out-in' | 'default'\n /**\n * Define aplicar a transição na interpretação inicial.\n * Padrão: false\n */\n appear?: boolean\n\n /**\n * Propriedades para personalizar as classes de transição.\n * Use kebab-case nos modelos de marcação, exemplo enter-from-class=\"xxx\"\n */\n enterFromClass?: string\n enterActiveClass?: string\n enterToClass?: string\n appearFromClass?: string\n appearActiveClass?: string\n appearToClass?: string\n leaveFromClass?: string\n leaveActiveClass?: string\n leaveToClass?: string\n }\n ```\n\n- **Eventos**\n\n - `@before-enter`\n - `@before-leave`\n - `@enter`\n - `@leave`\n - `@appear`\n - `@after-enter`\n - `@after-leave`\n - `@after-appear`\n - `@enter-cancelled`\n - `@leave-cancelled` (apenas `v-show`)\n - `@appear-cancelled`\n\n- **Exemplo**\n\n Elemento simples:\n\n ```html\n <Transition>\n <div v-if=\"ok\">conteúdo alternado</div>\n </Transition>\n ```\n\n Forçar uma transição mudando o atributo `key`:\n\n ```html\n <Transition>\n <div :key=\"text\">{{ text }}</div>\n </Transition>\n ```\n\n Componente dinâmico, com o modo de transição + animação ao aparecer:\n\n ```html\n <Transition name=\"fade\" mode=\"out-in\" appear>\n <component :is=\"view\"></component>\n </Transition>\n ```\n\n Ouvir eventos de transição:\n\n ```html\n <Transition @after-enter=\"onTransitionComplete\">\n <div v-show=\"ok\">conteúdo ativado</div>\n </Transition>\n ```\n\n- **Consulte também:** [Guia de `<Transition>`](https://pt.vuejs.org/guide/built-ins/transition.html)\n" + }, + attributes: [ + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-components.html#transition" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-components.html#transition" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-components.html#transition" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-components.html#transition" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-components.html#transition" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-components.html#transition" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-components.html#transition" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-components.html#transition" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-components.html#transition" + } + ] + }, + { + name: "TransitionGroup", + description: { + kind: "markdown", + value: "\nFornece efeitos de transição para **múltiplos** elementos ou componentes numa lista.\n\n- **Propriedades**\n\n `<TransitionGroup>` aceita as mesmas propriedades que o `<Transition>` exceto `mode`, e mais duas propriedades adicionais:\n\n ```ts\n interface TransitionGroupProps extends Omit<TransitionProps, 'mode'> {\n /**\n * Se não definido, desenha um fragmento.\n */\n tag?: string\n /**\n * Para personalizar as classes CSS aplicadas durante as transições de movimento.\n * Use kebab-case em modelos de marcação, exemplo move-class=\"xxx\"\n */\n moveClass?: string\n }\n ```\n\n- **Eventos**\n\n `<TransitionGroup>` emite os mesmos eventos que `<Transition>`.\n\n- **Detalhes**\n\n Por padrão, `<TransitionGroup>` não desenha um elemento de DOM que envolve, mas pode ser definido através da propriedade `tag`.\n\n Note que todo filho num `<transition-group>` deve ser [**identificado unicamente**](https://pt.vuejs.org/guide/essentials/list.html#maintaining-state-with-key) para que as animações funcionem apropriadamente.\n\n `<TransitionGroup>` suporta transições de movimento através de transformações de CSS. Quando a posição dum filho na tela é mudada após uma atualização, será aplicada uma classe de movimento CSS (gerada automaticamente pelo atributo `name` ou configurada pela propriedade `move-class`). Se a propriedade de CSS `transform` é passível de transição quando a classe de movimento é aplicada, o elemento será suavemente animado até o seu destino usando a [técnica FLIP](https://aerotwist.com/blog/flip-your-animations/).\n\n- **Exemplo**\n\n ```html\n <TransitionGroup tag=\"ul\" name=\"slide\">\n <li v-for=\"item in items\" :key=\"item.id\">\n {{ item.text }}\n </li>\n </TransitionGroup>\n ```\n\n- **Consulte também:** [Guia - `TransitionGroup`](https://pt.vuejs.org/guide/built-ins/transition-group.html)\n" + }, + attributes: [ + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-components.html#transitiongroup" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-components.html#transitiongroup" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-components.html#transitiongroup" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-components.html#transitiongroup" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-components.html#transitiongroup" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-components.html#transitiongroup" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-components.html#transitiongroup" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-components.html#transitiongroup" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-components.html#transitiongroup" + } + ] + }, + { + name: "KeepAlive", + description: { + kind: "markdown", + value: "\nArmazena para consulta imediata os componentes alternados dinamicamente envolvidos dentro.\n\n- **Propriedades**\n\n ```ts\n interface KeepAliveProps {\n /**\n * Se especificado, apenas componentes com nomes correspondidos\n * pelo `include` estarão na memória de consulta imediata.\n */\n include?: MatchPattern\n /**\n * Qualquer componente com um nome correspondidos pelo `exclude`\n * não estarão na memória de consulta imediata.\n */\n exclude?: MatchPattern\n /**\n * O número máximo de instâncias de componente à armazenar\n * na memória de consulta imediata.\n */\n max?: number | string\n }\n\n type MatchPattern = string | RegExp | (string | RegExp)[]\n ```\n\n- **Detalhes**\n\n Quando envolvido em torno dum componente dinâmico, `<KeepAlive>` armazena para consulta imediata as instâncias de componente inativo sem destruí-las.\n\n Só pode existir uma instância de componente como filho direto de `<KeepAlive>` em qualquer momento.\n\n Quando um componente é alternado dentro de `<KeepAlive>`, seus gatilhos de ciclo de vida `activated` e `deactivated` são invocados de acordo, fornecendo uma alternativa ao `mounted` e `unmounted`, que não são chamados. Isto aplica-se ao filho direto de `<KeepAlive>` e também a todos os seus descendentes.\n\n- **Exemplo**\n\n Uso básico:\n\n ```html\n <KeepAlive>\n <component :is=\"view\"></component>\n </KeepAlive>\n ```\n\n Quando usado com os ramos `v-if` / `v-else`, só deve existir um componente desenhado de cada vez:\n\n ```html\n <KeepAlive>\n <comp-a v-if=\"a > 1\"></comp-a>\n <comp-b v-else></comp-b>\n </KeepAlive>\n ```\n\n Usado em conjunto com `<Transition>`:\n\n ```html\n <Transition>\n <KeepAlive>\n <component :is=\"view\"></component>\n </KeepAlive>\n </Transition>\n ```\n\n Usando `include` / `exclude`:\n\n ```html\n <!-- sequência de caracteres delimitada por vírgula -->\n <KeepAlive include=\"a,b\">\n <component :is=\"view\"></component>\n </KeepAlive>\n\n <!-- regex (use `v-bind`) -->\n <KeepAlive :include=\"/a|b/\">\n <component :is=\"view\"></component>\n </KeepAlive>\n\n <!-- vetor (use `v-bind`) -->\n <KeepAlive :include=\"['a', 'b']\">\n <component :is=\"view\"></component>\n </KeepAlive>\n ```\n\n Uso com `max`:\n\n ```html\n <KeepAlive :max=\"10\">\n <component :is=\"view\"></component>\n </KeepAlive>\n ```\n\n- **Consulte também:** [Guia - `KeepAlive`](https://pt.vuejs.org/guide/built-ins/keep-alive.html)\n" + }, + attributes: [ + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-components.html#keepalive" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-components.html#keepalive" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-components.html#keepalive" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-components.html#keepalive" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-components.html#keepalive" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-components.html#keepalive" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-components.html#keepalive" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-components.html#keepalive" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-components.html#keepalive" + } + ] + }, + { + name: "Teleport", + description: { + kind: "markdown", + value: "\nDesenha o conteúdo da sua ranhura numa outra parte do DOM.\n\n- **Propriedades**\n\n ```ts\n interface TeleportProps {\n /**\n * Obrigatório. Específica o contentor alvo.\n * Pode ser ou um seletor ou um elemento verdadeiro.\n */\n to: string | HTMLElement\n /**\n * Quando `true`, o conteúdo continuará na sua localização\n * original ao invés de ser movido para o contentor alvo.\n * Pode ser mudado dinamicamente.\n */\n disabled?: boolean\n }\n ```\n\n- **Exemplo**\n\n Especificando o contentor alvo:\n\n ```html\n <teleport to=\"#some-id\" />\n <teleport to=\".some-class\" />\n <teleport to=\"[data-teleport]\" />\n ```\n\n Desativar condicionalmente:\n\n ```html\n <teleport to=\"#popup\" :disabled=\"displayVideoInline\">\n <video src=\"./my-movie.mp4\">\n </teleport>\n ```\n\n- **Consulte também:** [Guia - `Teleport`](https://pt.vuejs.org/guide/built-ins/teleport.html)\n" + }, + attributes: [ + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-components.html#teleport" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-components.html#teleport" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-components.html#teleport" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-components.html#teleport" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-components.html#teleport" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-components.html#teleport" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-components.html#teleport" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-components.html#teleport" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-components.html#teleport" + } + ] + }, + { + name: "Suspense", + description: { + kind: "markdown", + value: "\nUsado para orquestrar dependências assíncronas encaixadas numa árvore de componente.\n\n- **Propriedades**\n\n ```ts\n interface SuspenseProps {\n timeout?: string | number\n }\n ```\n\n- **Eventos**\n\n - `@resolve`\n - `@pending`\n - `@fallback`\n\n- **Detalhes**\n\n `<Suspense>` aceita duas ranhuras: a ranhura `#default` e a ranhura `#fallback`. Ele exibirá o conteúdo da ranhura de retorno (`#fallback`) enquanto desenha a ranhura padrão (`#default`) na memória.\n\n Se encontrar dependências assíncronas ([Componentes Assíncronos](https://pt.vuejs.org/guide/components/async.html) e componentes com [`async setup()`](https://pt.vuejs.org/guide/built-ins/suspense.html#async-setup)) enquanto desenha a ranhura padrão, aguardará até todos serem resolvidos antes de exibir a ranhura padrão.\n\n- **Consulte também:** [Guia - `Suspense`](https://pt.vuejs.org/guide/built-ins/suspense.html)\n" + }, + attributes: [ + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-components.html#suspense" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-components.html#suspense" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-components.html#suspense" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-components.html#suspense" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-components.html#suspense" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-components.html#suspense" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-components.html#suspense" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-components.html#suspense" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-components.html#suspense" + } + ] + }, + { + name: "component", + description: { + kind: "markdown", + value: "\nUma \"meta componente\" para desenhar componentes ou elementos dinâmicos.\n\n- **Propriedades**\n\n ```ts\n interface DynamicComponentProps {\n is: string | Component\n }\n ```\n\n- **Detalhes**\n\n O verdadeiro componente à desenhar é determinado pela propriedade `is`.\n\n - Quando `is` for uma sequência de caracteres, poderia ser ou nome dum marcador de HTML ou o nome dum componente registado.\n\n - Alternativamente, `is` também pode ser diretamente vinculado à definição dum componente.\n\n- **Exemplo**\n\n Interpretação dos componentes com nome registado (API de Opções):\n\n ```vue\n <script>\n import Foo from './Foo.vue'\n import Bar from './Bar.vue'\n\n export default {\n components: { Foo, Bar },\n data() {\n return {\n view: 'Foo'\n }\n }\n }\n </script>\n\n <template>\n <component :is=\"view\" />\n </template>\n ```\n\n Interpretação dos componentes com a definição (API de Composição com `<script setup></script>`):\n\n ```vue\n <script setup>\n import Foo from './Foo.vue'\n import Bar from './Bar.vue'\n </script>\n\n <template>\n <component :is=\"Math.random() > 0.5 ? Foo : Bar\" />\n </template>\n ```\n\n Interpretação dos elementos de HTML:\n\n ```html\n <component :is=\"href ? 'a' : 'span'\"></component>\n ```\n\n Os todos os [componentes embutidos](./built-in-components) podem ser passados para `is`, mas devemos registá-los se quisermos passá-los pelo nome. Por exemplo:\n\n ```vue\n <script>\n import { Transition, TransitionGroup } from 'vue'\n\n export default {\n components: {\n Transition,\n TransitionGroup\n }\n }\n </script>\n\n <template>\n <component :is=\"isGroup ? 'TransitionGroup' : 'Transition'\">\n ...\n </component>\n </template>\n ```\n\n O registo não é obrigatório se passarmos o próprio componente à `is` no lugar do seu nome, por exemplo no `<script setup>`.\n\n Se `v-model` for usada num marcador `<component>`, o compilador do modelo de marcação a expandirá à uma propriedade `modelValue` e um ouvinte de evento `update:modelValue`, tal como faria com qualquer outro componente. No entanto, isto não será compatível com os elementos de HTML nativos, tais como `<input>` ou `<select>`. Como resultado, usar `v-model` com um elemento nativo criado dinamicamente não funcionará:\n\n ```vue\n <script setup>\n import { ref } from 'vue'\n \n const tag = ref('input')\n const username = ref('')\n </script>\n\n <template>\n <!-- Isto não funcionará porque 'input' é um elemento de HTML nativo -->\n <component :is=\"tag\" v-model=\"username\" />\n </template>\n ```\n\n Na prática, este caso extremo não é comum, porque os campos de formulário nativos normalmente são envolvidos dentro de componentes em aplicações reais. Se precisarmos usar diretamente um elemento nativo então podemos dividir a `v-model` num atributo e evento manualmente.\n\n- **Consulte também** [Componentes Dinâmicos](https://pt.vuejs.org/guide/essentials/component-basics.html#dynamic-components)\n" + }, + attributes: [ + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-special-elements.html#component" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-special-elements.html#component" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-special-elements.html#component" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-special-elements.html#component" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-special-elements.html#component" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-special-elements.html#component" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-special-elements.html#component" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-special-elements.html#component" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-special-elements.html#component" + } + ] + }, + { + name: "slot", + description: { + kind: "markdown", + value: "\nDenota as saídas de conteúdo da ranhura nos modelos de marcação\n\n- **Propriedades**\n\n ```ts\n interface SlotProps {\n /**\n * Quaisquer propriedades passadas ao <slot>\n * são passadas como argumentos para ranhuras isoladas\n */\n [key: string]: any\n /**\n * Reservada para especificação do nome da ranhura.\n */\n name?: string\n }\n ```\n\n- **Detalhes**\n\n O elemento `<slot>` pode usar o atributo `name` para especificar um nome de ranhura. Quando nenhum `name` for especificado, desenhará a ranhura padrão. Os atributos adicionais passados ao elemento da ranhura serão passados como propriedades de ranhura à ranhura isolada definida no pai.\n\n O próprio elemento será substituído pelo seu conteúdo de ranhura correspondente.\n\n Os elementos de `<slot>` nos modelos de marcação da Vue são compilados para JavaScript, então não são para serem confundidos com os [elementos `<slot>` nativos](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/slot).\n\n- **Consulte também** [Componentes - Ranhuras](https://pt.vuejs.org/guide/components/slots.html)\n" + }, + attributes: [ + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-special-elements.html#slot" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-special-elements.html#slot" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-special-elements.html#slot" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-special-elements.html#slot" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-special-elements.html#slot" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-special-elements.html#slot" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-special-elements.html#slot" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-special-elements.html#slot" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-special-elements.html#slot" + } + ] + }, + { + name: "template", + description: { + kind: "markdown", + value: "\nO marcador `<template>` é usado como um espaço reservado quando queremos usar uma diretiva embutida sem desenhar um elemento no DOM.\n\n- **Detalhes**\n\n O manipulação especial do `<template>` apenas é acionada se for usada com uma destas diretivas:\n\n - `v-if`, `v-else-if`, ou `v-else`\n - `v-for`\n - `v-slot`\n \n Se nenhuma destas diretivas estiver presente, então será desenhado como um [elemento `<template>` nativo](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/template).\n\n Um `<template>` com uma `v-for` também pode ter um [atributo `key`](https://pt.vuejs.org/api/built-in-special-attributes.html#key). Todos os outros atributos e diretivas serão descartados, porque não são relevantes sem um elemento correspondente.\n\n Os componentes de ficheiro único usam [marcador `<template>` de alto nível](https://pt.vuejs.org/api/sfc-spec.html#language-blocks) para envolver todo o modelo de marcação. Este uso é separado do uso de `<template>` descrito acima. Este marcador de alto nível não faz parte do próprio modelo de marcação e suporta a sintaxe de modelo de marcação, tais como as diretivas.\n\n- **Consulte também**\n - [Guia - `v-if` sobre o `<template>`](https://pt.vuejs.org/guide/essentials/conditional.html#v-if-on-template) \n - [Guia - `v-for` sobre o `<template>`](https://pt.vuejs.org/guide/essentials/list.html#v-for-on-template) \n - [Guia - Ranhuras Nomeadas](https://pt.vuejs.org/guide/components/slots.html#named-slots) \n" + }, + attributes: [ + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-special-elements.html#template" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-special-elements.html#template" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-special-elements.html#template" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-special-elements.html#template" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-special-elements.html#template" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-special-elements.html#template" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-special-elements.html#template" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-special-elements.html#template" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-special-elements.html#template" + } + ] + } +]; +const globalAttributes$h = [ + { + name: "v-text", + description: { + kind: "markdown", + value: "\nAtualiza o conteúdo de texto do elemento.\n\n- **Espera:** `string`\n\n- **Detalhes**\n\n `v-text` funciona definindo a propriedade [`textContent`](https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent) do elemento, sobrescreverá qualquer conteúdo existente dentro do elemento. Se precisarmos de atualizar a parte da `textContent`, devemos usar as [interpolações de bigodes](https://pt.vuejs.org/guide/essentials/template-syntax.html#text-interpolation).\n\n- **Exemplo**\n\n ```html\n <span v-text=\"msg\"></span>\n <!-- é o mesmo que -->\n <span>{{msg}}</span>\n ```\n\n- **Consulte também** [Sintaxe do Modelo de Marcação - Interpolação de Texto](https://pt.vuejs.org/guide/essentials/template-syntax.html#text-interpolation)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-text" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-text" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-text" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-text" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-text" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-text" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-text" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-text" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-text" + } + ] + }, + { + name: "v-html", + description: { + kind: "markdown", + value: "\nAtualiza a [`innerHTML`](https://developer.mozilla.org/en-US/docs/Web/API/Element/innerHTML) do elemento.\n\n- **Espera:** `string`\n\n- **Detalhes:**\n\n Os conteúdos da `v-html` são inseridos como HTML simples - a sintaxe de modelo de marcação da Vue não será processada. Se estivermos a tentar compor modelos de marcação usando `v-html`, vamos tentar repensar a solução usando componentes.\n\n :::warning Nota de Segurança\n Interpretar dinamicamente HTML arbitrário na nossa aplicação pode ser muito perigoso porque pode facilmente conduzir à [ataques de XSS](https://en.wikipedia.org/wiki/Cross-site_scripting). Só deveríamos usar `v-html` sobre conteúdo confiável e **nunca** sobre conteúdo fornecido pelo utilizador.\n :::\n\n Nos [Componentes de Ficheiro Único](https://pt.vuejs.org/guide/scaling-up/sfc.html), os estilos `scoped` não serão aplicados ao conteúdo dentro de `v-html`, porque este HTML não é processado pelo compilador de modelos de marcação da Vue. Se quisermos mirar o conteúdo de `v-html` com CSS isolada, podemos usar os [módulos de CSS](./sfc-css-features#css-modules) ou elemento `<style>` adicional e global com uma estratégia de isolamento manual, como a BEM.\n\n- **Exemplo**\n\n ```html\n <div v-html=\"html\"></div>\n ```\n\n- **Consulte também** [Sintaxe do Modelo de Marcação - HTML Puro](https://pt.vuejs.org/guide/essentials/template-syntax.html#raw-html)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-html" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-html" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-html" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-html" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-html" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-html" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-html" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-html" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-html" + } + ] + }, + { + name: "v-show", + description: { + kind: "markdown", + value: "\nAlterna a visibilidade do elemento baseado na veracidade do valor da expressão.\n\n- **Espera:** `any`\n\n- **Detalhes**\n\n `v-show` funciona definindo a propriedade de CSS `display` através de estilos em linha, e tentará respeitar o valor inicial da `display` quando o elemento estiver visível. Também aciona transições quando sua condição muda.\n\n- **Consulte também** [Interpretação Condicional - `v-show`](https://pt.vuejs.org/guide/essentials/conditional.html#v-show)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-show" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-show" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-show" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-show" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-show" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-show" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-show" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-show" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-show" + } + ] + }, + { + name: "v-if", + description: { + kind: "markdown", + value: "\nInterpreta condicionalmente um elemento ou um fragmento de modelo de marcação baseado na veracidade do valor da expressão.\n\n- **Espera:** `any`\n\n- **Detalhes**\n\n Quando um elemento de `v-if` é alternado, o elemento e suas diretivas ou componentes contidos são destruídos e construídos novamente. Se a condição inicial for falsa, então o conteúdo interno não será interpretado de todo.\n\n Pode ser usada no `<template>` para denotar um bloco condicional contendo apenas texto ou vários elementos.\n\n Esta diretiva aciona transições quando sua condição muda.\n\n Quando usada em conjunto, a `v-if` tem uma prioridade superior à `v-for`. Não recomendados usar estas duas diretivas ao mesmo tempo sobre um elemento — consulte o [guia de interpretação de lista](https://pt.vuejs.org/guide/essentials/list.html#v-for-with-v-if) por mais detalhes.\n\n- **Consulte também** [Interpretação Condicional - `v-if`](https://pt.vuejs.org/guide/essentials/conditional.html#v-if)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-if" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-if" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-if" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-if" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-if" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-if" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-if" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-if" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-if" + } + ] + }, + { + name: "v-else", + valueSet: "v", + description: { + kind: "markdown", + value: "\nDenota um \"bloco `else`\" para a `v-if` ou para uma cadeia `v-if` / `v-else-if`.\n\n- **Não espera expressões**\n\n- **Detalhes**\n\n - Restrição: o anterior elemento irmão deve ter a `v-if` ou `v-else-if`.\n\n - Pode ser usada no `<template>` para denotar um bloco condicional contendo apenas texto ou vários elementos.\n\n- **Exemplo**\n\n ```html\n <div v-if=\"Math.random() > 0.5\">\n Now you see me\n </div>\n <div v-else>\n Now you don't\n </div>\n ```\n\n- **Consulte também** [Interpretação Condicional - `v-else`](https://pt.vuejs.org/guide/essentials/conditional.html#v-else)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-else" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-else" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-else" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-else" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-else" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-else" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-else" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-else" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-else" + } + ] + }, + { + name: "v-else-if", + description: { + kind: "markdown", + value: "\nDenota o \"bloco `else if`\" para a `v-if`. Pode ser encadeada.\n\n- **Espera:** `any`\n\n- **Detalhes**\n\n - Restrição: o anterior elemento irmão deve ter a `v-if` ou `v-else-if`.\n\n - Pode ser usada no `<template>` para denotar um bloco condicional contendo apenas texto ou vários elementos.\n\n- **Exemplo**\n\n ```html\n <div v-if=\"type === 'A'\">\n A\n </div>\n <div v-else-if=\"type === 'B'\">\n B\n </div>\n <div v-else-if=\"type === 'C'\">\n C\n </div>\n <div v-else>\n Not A/B/C\n </div>\n ```\n\n- **Consulte também** [Interpretação Condicional - `v-else-if`](https://pt.vuejs.org/guide/essentials/conditional.html#v-else-if)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-else-if" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-else-if" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-else-if" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-else-if" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-else-if" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-else-if" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-else-if" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-else-if" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-else-if" + } + ] + }, + { + name: "v-for", + description: { + kind: "markdown", + value: "\nInterpreta o elemento ou bloco de modelo de marcação várias vezes baseada na fonte dos dados.\n\n- **Espera:** `Array | Object | number | string | Iterable`\n\n- **Detalhes**\n\n O valor da diretiva deve usar a sintaxe especial `alias in expression` para fornecer um pseudónimo para o elemento atual a ser iterado:\n\n ```html\n <div v-for=\"item in items\">\n {{ item.text }}\n </div>\n ```\n\n Alternativamente, também podemos especificar um pseudónimo para o índice (ou a chave se usada sobre um objeto):\n\n ```html\n <div v-for=\"(item, index) in items\"></div>\n <div v-for=\"(value, key) in object\"></div>\n <div v-for=\"(value, name, index) in object\"></div>\n ```\n\n O comportamento padrão da `v-for` tentará remendar os elementos no lugar sem movê-los. Para forçar a reordenação de elementos, devemos fornecer uma sugestão de ordenação com o atributo especial `key`:\n\n ```html\n <div v-for=\"item in items\" :key=\"item.id\">\n {{ item.text }}\n </div>\n ```\n\n `v-for` também pode trabalhar com valores que implementam o [Protocolo Iterável](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#The_iterable_protocol), incluindo os `Map` e `Set` nativos.\n\n- **Consulte também**\n - [Interpretação de Lista](https://pt.vuejs.org/guide/essentials/list.html)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-for" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-for" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-for" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-for" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-for" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-for" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-for" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-for" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-for" + } + ] + }, + { + name: "v-on", + description: { + kind: "markdown", + value: "\nAnexa um ouvinte de evento ao elemento.\n\n- **Atalho:** `@`\n\n- **Espera:** `Function | Inline Statement | Object (sem argumento)`\n\n- **Argumento:** `event` (opcional se estivermos usando a sintaxe de Objeto)\n\n- **Modificadores**\n\n - `.stop` - chama `event.stopPropagation()`.\n - `.prevent` - chama `event.preventDefault()`.\n - `.capture` - adiciona ouvinte de evento no modo de captura.\n - `.self` - apenas aciona o manipulador se o evento fosse despachado a partir deste elemento.\n - `.{keyAlias}` - apenas aciona o manipulador sobre certas teclas.\n - `.once` - aciona o manipulador no máximo uma vez.\n - `.left` - apenas aciona o manipulador para os eventos de rato do botão esquerdo.\n - `.right` - apenas aciona o manipulador para os eventos de rato do botão direito.\n - `.middle` - apenas aciona o manipulador para os eventos de rato do botão do meio.\n - `.passive` - anexa um evento de DOM com `{ passive: true }`.\n\n- **Detalhes**\n\n O tipo de evento é denotado pelo argumento. A expressão pode ser um nome de método, uma declaração em linha, ou omitida se existirem modificadores presentes.\n\n Quando usada num elemento normal, apenas ouve os [**eventos de DOM nativos**](https://developer.mozilla.org/en-US/docs/Web/Events). Quando usada num componente de elemento personalizado, ouve os **eventos personalizados** emitidos sobre este componente filho.\n\n Quando ouvimos os eventos de DOM nativos, o método recebe o evento nativo como único argumento. Se usarmos a declaração em linha, a declaração tem acesso à propriedade `$event` especial: `v-on:click=\"handle('ok', $event)\"`.\n\n `v-on` também suporta vínculo a um objeto de pares de evento / ouvinte sem um argumento. Nota que quando usamos a sintaxe de objeto, esta não suporta quaisquer modificadores.\n\n- **Exemplo**\n\n ```html\n <!-- manipulador de método -->\n <button v-on:click=\"doThis\"></button>\n\n <!-- evento dinâmico -->\n <button v-on:[event]=\"doThis\"></button>\n\n <!-- declaração em linha -->\n <button v-on:click=\"doThat('hello', $event)\"></button>\n\n <!-- atalho -->\n <button @click=\"doThis\"></button>\n\n <!-- atalho de evento dinâmico -->\n <button @[event]=\"doThis\"></button>\n\n <!-- parar propagação -->\n <button @click.stop=\"doThis\"></button>\n\n <!-- impedir o padrão -->\n <button @click.prevent=\"doThis\"></button>\n\n <!-- impedir o padrão sem expressão -->\n <form @submit.prevent></form>\n\n <!-- encadear modificadores -->\n <button @click.stop.prevent=\"doThis\"></button>\n\n <!-- modificador de tecla usando pseudónimo de tecla -->\n <input @keyup.enter=\"onEnter\" />\n\n <!-- o evento de clique será acionado no máximo uma vez -->\n <button v-on:click.once=\"doThis\"></button>\n\n <!-- sintaxe de objeto -->\n <button v-on=\"{ mousedown: doThis, mouseup: doThat }\"></button>\n ```\n\n Ouvindo eventos personalizados dum componente filho (o manipulador é chamado quando \"my-event\" é emitido sobre o filho):\n\n ```html\n <MyComponent @my-event=\"handleThis\" />\n\n <!-- declaração em linha -->\n <MyComponent @my-event=\"handleThis(123, $event)\" />\n ```\n\n- **Consulte também**\n - [Manipulação de Eventos](https://pt.vuejs.org/guide/essentials/event-handling.html)\n - [Componentes - Eventos Personalizados](https://pt.vuejs.org/guide/essentials/component-basics.html#listening-to-events)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-on" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-on" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-on" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-on" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-on" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-on" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-on" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-on" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-on" + } + ] + }, + { + name: "v-bind", + description: { + kind: "markdown", + value: "\nVincula dinamicamente um ou mais atributos, ou uma propriedade de componente à uma expressão.\n\n- **Atalho:** `:` ou `.` (quando usamos o modificador `.prop`)\n\n- **Espera:** `any (com argumento) | Object (sem argumento)`\n\n- **Argumento:** `attrOrProp (opcional)`\n\n- **Modificadores**\n\n - `.camel` - transforma o nome de atributo em caixa de espetada em caixa de camelo.\n - `.prop` - força um vínculo à ser definido como uma propriedade do DOM. <sup class=\"vt-badge\">3.2+</sup>\n - `.attr` - força um vínculo à ser definido como um atributo de DOM. <sup class=\"vt-badge\">3.2+</sup>\n\n- **Uso**\n\n Quando usada para vincular o atributo `class` ou `style`, `v-bind` suporta tipos de valores adicionar como Vetor ou Objeto. Consulte a seção do guia ligado abaixo por mais detalhes.\n\n Quando definimos um vínculo num elemento, a Vue por padrão verifica se o elemento tem a chave definida como uma propriedade usando uma verificação do operador `in`. Se a propriedade for definida, a Vue definirá o valor como uma propriedade de DOM ao invés dum atributo. Isto deve funciona na maioria dos casos, mas podemos sobrepor este comportamento ao usar explicitamente os modificadores `.prop` ou `.attr`. Isto é algumas vezes necessário, especialmente quando [trabalhamos com elementos personalizados](https://pt.vuejs.org/guide/extras/web-components.html#passing-dom-properties).\n\n Quando usada para vínculos de propriedade de componente, a propriedade deve ser declarada apropriadamente no componente filho.\n\n Quando usada sem um argumento, pode ser usada para vincular um objeto contendo pares de nome-valor de atributo.\n\n- **Exemplo**\n\n ```html\n <!-- vincular um atributo -->\n <img v-bind:src=\"imageSrc\" />\n\n <!-- nome de atributo dinâmico -->\n <button v-bind:[key]=\"value\"></button>\n\n <!-- atalho -->\n <img :src=\"imageSrc\" />\n\n <!-- atalho de nome de atributo dinâmico -->\n <button :[key]=\"value\"></button>\n\n <!-- com concatenação de sequência de caracteres em linha -->\n <img :src=\"'/path/to/images/' + fileName\" />\n\n <!-- vínculos de classe -->\n <div :class=\"{ red: isRed }\"></div>\n <div :class=\"[classA, classB]\"></div>\n <div :class=\"[classA, { classB: isB, classC: isC }]\"></div>\n\n <!-- vínculos de estilo -->\n <div :style=\"{ fontSize: size + 'px' }\"></div>\n <div :style=\"[styleObjectA, styleObjectB]\"></div>\n\n <!-- vincular um objeto de atributos -->\n <div v-bind=\"{ id: someProp, 'other-attr': otherProp }\"></div>\n\n <!-- vincular propriedades. -->\n <!-- \"prop\" deve ser declarada no componente filho. -->\n <MyComponent :prop=\"someThing\" />\n\n <!-- passar as propriedades do pai em comum com um componente filho -->\n <MyComponent v-bind=\"$props\" />\n\n <!-- XLink -->\n <svg><a :xlink:special=\"foo\"></a></svg>\n ```\n\n O modificador `.prop` também tem um atalho dedicado `.`:\n\n ```html\n <div :someProperty.prop=\"someObject\"></div>\n\n <!-- equivalente a -->\n <div .someProperty=\"someObject\"></div>\n ```\n\n O modificador `.camel` permite a camelização dum nome de atributo de `v-bind` quando usamos modelos de marcação no DOM, por exemplo o atributo `viewBox` de SVG:\n\n ```html\n <svg :view-box.camel=\"viewBox\"></svg>\n ```\n\n `.camel` não é necessário se estivermos a usar modelos de marcação de sequência de caracteres, pré-compilar o modelo de marcação com uma etapa de construção.\n\n- **Consulte também**\n - [Vínculos de Classe e Estilo](https://pt.vuejs.org/guide/essentials/class-and-style.html)\n - [Componentes - Detalhes da Passagem de Propriedade](https://pt.vuejs.org/guide/components/props.html#prop-passing-details)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-bind" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-bind" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-bind" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-bind" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-bind" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-bind" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-bind" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-bind" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-bind" + } + ] + }, + { + name: "v-model", + description: { + kind: "markdown", + value: "\nCria um vínculo bidirecional num elemento de entrada de formulário ou um componente.\n\n- **Espera:** variar baseado no valor do elemento de entradas de formulário ou na saída de componentes\n\n- **Limitado a:**\n\n - `<input>`\n - `<select>`\n - `<textarea>`\n - componentes\n\n- **Modificadores**\n\n - [`.lazy`](https://pt.vuejs.org/guide/essentials/forms.html#lazy) - ouve os eventos de `change` ao invés de `input`\n - [`.number`](https://pt.vuejs.org/guide/essentials/forms.html#number) - converte uma sequência de caracteres de entrada válida em números.\n - [`.trim`](https://pt.vuejs.org/guide/essentials/forms.html#trim) - apara a entrada\n\n- **Consulte também**\n\n - [Vínculos de Entrada de Formulário](https://pt.vuejs.org/guide/essentials/forms.html)\n - [Eventos de Componente - Uso com `v-model`](https://pt.vuejs.org/guide/components/v-model.html)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-model" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-model" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-model" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-model" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-model" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-model" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-model" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-model" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-model" + } + ] + }, + { + name: "v-slot", + description: { + kind: "markdown", + value: "\nDenota ranhuras nomeadas ou ranhuras isoladas que esperam receber propriedades.\n\n- **Atalho:** `#`\n\n- **Espera:** expressão de JavaScript que é válido numa posição de argumento de função, incluindo suporte para desestruturação. Opcional - apenas necessário se esperamos propriedades serem passadas para a ranhura.\n\n- **Argumento:** nome da ranhura (opcional, predefinido para `default`)\n\n- **Limitado a:**\n\n - `<template>`\n - [componentes](https://pt.vuejs.org/guide/components/slots.html#scoped-slots) (para única ranhura padrão com propriedades)\n\n- **Exemplo**\n\n ```html\n <!-- Ranhuras nomeadas -->\n <BaseLayout>\n <template v-slot:header>\n Header content\n </template>\n\n <template v-slot:default>\n Default slot content\n </template>\n\n <template v-slot:footer>\n Footer content\n </template>\n </BaseLayout>\n\n <!-- Ranhura nomeada que recebe propriedades -->\n <InfiniteScroll>\n <template v-slot:item=\"slotProps\">\n <div class=\"item\">\n {{ slotProps.item.text }}\n </div>\n </template>\n </InfiniteScroll>\n\n <!-- Ranhura padrão que recebe propriedades, com desestruturação -->\n <Mouse v-slot=\"{ x, y }\">\n Mouse position: {{ x }}, {{ y }}\n </Mouse>\n ```\n\n- **Consulte também**\n - [Componentes - Ranhuras](https://pt.vuejs.org/guide/components/slots.html)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-slot" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-slot" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-slot" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-slot" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-slot" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-slot" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-slot" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-slot" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-slot" + } + ] + }, + { + name: "v-pre", + description: { + kind: "markdown", + value: "\nIgnora a compilação para este elemento e todos os seus filhos.\n\n- **Não espera expressão**\n\n- **Detalhes**\n\n Dentro do elemento com `v-pre`, toda a sintaxe de modelo de marcação da Vue será preservada e desenhada como está. O caso de uso mais comum disto é a exibição de marcadores de bigodes puros.\n\n- **Exemplo**\n\n ```html\n <span v-pre>{{ this will not be compiled }}</span>\n ```\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-pre" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-pre" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-pre" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-pre" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-pre" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-pre" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-pre" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-pre" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-pre" + } + ] + }, + { + name: "v-once", + description: { + kind: "markdown", + value: "\nDesenha o elemento e o componente apenas uma vez, e ignora as futuras atualizações.\n\n- **Não espera expressão**\n\n- **Detalhes**\n\n Nos redesenhos subsequentes, o elemento ou componente e todos os seus filhos serão tratados como conteúdo estático e ignorados. Isto pode ser usado para otimizar o desempenho da atualização.\n\n ```html\n <!-- elemento único -->\n <span v-once>This will never change: {{msg}}</span>\n <!-- o elemento tem filhos -->\n <div v-once>\n <h1>comment</h1>\n <p>{{msg}}</p>\n </div>\n <!-- componente -->\n <MyComponent v-once :comment=\"msg\"></MyComponent>\n <!-- diretiva `v-for` -->\n <ul>\n <li v-for=\"i in list\" v-once>{{i}}</li>\n </ul>\n ```\n\n Desde a 3.2, também podemos memorizar parte do modelo de marcação com condições de invalidação usando a [`v-memo`](#v-memo).\n\n- **Consulte também**\n - [Sintaxe de Vínculo de Dados - Interpolações](https://pt.vuejs.org/guide/essentials/template-syntax.html#text-interpolation)\n - [`v-memo`](#v-memo)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-once" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-once" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-once" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-once" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-once" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-once" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-once" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-once" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-once" + } + ] + }, + { + name: "v-memo", + description: { + kind: "markdown", + value: "\n- **Espera:** `any[]`\n\n- **Detalhes**\n\n Memoriza uma sub-árvore do modelo de marcação. Pode ser usada em ambos elementos e componentes. A diretiva espera um vetor de valores de dependência de comprimento fixo à comparar para a memorização. Se todos os valores no vetor fossem os mesmos que os da última interpretação, então as atualizações para a sub-árvore inteira serão ignoradas. Por exemplo:\n\n ```html\n <div v-memo=\"[valueA, valueB]\">\n ...\n </div>\n ```\n\n Quando o componente redesenha-se, se ambos `valueA` e `valueB` continuarem os mesmos, todas as atualizações para este `<div>` e seus filhos serão ignoradas. De fato, mesmo a criação nó virtual do DOM virtual também será ignorada uma vez que a cópia memorizada da sub-árvore pode ser usada novamente.\n\n É importante especificar o vetor de memorização corretamente, de outro modo podemos ignorar atualizações que deveriam de fato ser aplicadas. `v-memo` com um vetor de dependência vazio (`v-memo=\"[]\"`) seria funcionalmente equivalente à `v-once`.\n\n **Uso com `v-for`**\n\n `v-memo` é fornecida exclusivamente para micro otimizações em cenários de desempenho crítico e deveriam ser raramente necessários. O caso de uso mais comum onde isto pode ser útil é quando desenhamos grandes listas `v-for` (onde `length > 1000`):\n\n ```html\n <div v-for=\"item in list\" :key=\"item.id\" v-memo=\"[item.id === selected]\">\n <p>ID: {{ item.id }} - selected: {{ item.id === selected }}</p>\n <p>...more child nodes</p>\n </div>\n ```\n\n Quando o estado `selected` do componente mudar, será criada uma grande quantidade de nós virtuais, embora a maioria dos itens permaneça exatamente igual. O uso de `v-memo` neste contexto está essencialmente a dizer \"apenas atualize este item se tiver passado de não selecionado para selecionado, ou o contrário\". Isto permite que todos os itens não afetados reusarem seus anteriores nós virtuais e ignorar a diferenciação inteiramente. Nota que não precisamos incluir `item.id` no vetor de dependência da `v-memo` neste contexto, uma vez que a Vue atualmente a infere a partir da `:key` do item.\n\n :::warning AVISO\n Quando usamos a `v-memo` com a `v-for`, devemos certificar-nos que são usados no mesmo elemento. **`v-memo` não funciona dentro da `v-for`**.\n :::\n\n `v-memo` também pode ser usada nos componentes para manualmente impedir atualizações indesejadas em certos casos extremos onde a verificação da atualização do componente filho não foi otimizado. Mas novamente, é responsabilidade do programador especificar os vetores de dependência correta para evitar ignorar atualizações necessárias.\n\n- **Consulte também**\n - [`v-once`](#v-once)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-memo" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-memo" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-memo" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-memo" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-memo" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-memo" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-memo" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-memo" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-memo" + } + ] + }, + { + name: "v-cloak", + description: { + kind: "markdown", + value: "\nUsada para esconder o modelo de marcação que ainda não foi compilado até que estiver pronto.\n\n- **Não espera expressão**\n\n- **Detalhes**\n\n **Esta diretiva apenas é necessária nas configurações sem etapa de construção.**\n\n Quando usamos os modelos de marcação no DOM, pode existir um \"piscar de modelos de marcação não compilados\": o utilizador pode ver os marcadores de bigodes puros até o componente montado substituí-los com componente desenhado.\n\n `v-cloak` permanecerá no elemento até que a instância do componente associado for montada. Combinada com as regras de CSS como `[v-cloak] { display: none }`, pode ser usada para esconder os modelos de marcação puros até o componente estiver pronto.\n\n- **Exemplo**\n\n ```css\n [v-cloak] {\n display: none;\n }\n ```\n\n ```html\n <div v-cloak>\n {{ message }}\n </div>\n ```\n\n O `<div>` não será visível até que a compilação estiver concluída.\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-cloak" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-cloak" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-cloak" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-cloak" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-cloak" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-cloak" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-cloak" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-cloak" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-cloak" + } + ] + }, + { + name: "key", + description: { + kind: "markdown", + value: "\nO atributo especial `key` é primariamente usado como uma sugestão para o algoritmo do DOM virtual da Vue identificar os nós virtuais quando diferenciar a nova lista de nós contra a antiga lista.\n\n- **Espera:** `number | string | symbol`\n\n- **Detalhes**\n\n Sem chaves, a Vue usa um algoritmo que minimiza o movimento de elemento e tenta remendar ou reusar elementos do mesmo tipo no lugar o máximo possível. Com chaves, reorganizará os elementos baseado na mudança de ordem das chaves, e os elementos com chaves que não estão mais presentes sempre serão removidos ou destruídos.\n\n Os filhos do mesmo pai comum devem ter **chaves únicas**. As chaves duplicadas causarão erros de interpretação.\n\n O caso de uso mais comum é combinado com `v-for`:\n\n ```html\n <ul>\n <li v-for=\"item in items\" :key=\"item.id\">...</li>\n </ul>\n ```\n\n Também pode ser usado para forçar a substituição dum elemento ou componente ao invés de reusá-lo. Isto pode ser útil quando queremos:\n\n - Acionar corretamente os gatilhos do ciclo de vida dum componente\n - Acionar transições\n\n Por exemplo:\n\n ```html\n <transition>\n <span :key=\"text\">{{ text }}</span>\n </transition>\n ```\n\n Quando `text` mudar, o `<span>` sempre será substituído ao invés de ser remendado, depois uma transição será acionada.\n\n- **Consulte também** [Guia - Interpretação de Lista - Mantendo o Estado com `key`](https://pt.vuejs.org/guide/essentials/list.html#maintaining-state-with-key)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-special-attributes.html#key" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-special-attributes.html#key" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-special-attributes.html#key" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-special-attributes.html#key" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-special-attributes.html#key" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-special-attributes.html#key" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-special-attributes.html#key" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-special-attributes.html#key" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-special-attributes.html#key" + } + ] + }, + { + name: "ref", + description: { + kind: "markdown", + value: "\nDenota uma [referência do modelo de marcação](https://pt.vuejs.org/guide/essentials/template-refs.html).\n\n- **Espera:** `string | Function`\n\n- **Detalhes**\n\n `ref` é usado para registar uma referência à um elemento ou à um componente filho.\n\n Na API de Opções, a referência será registada sob o objeto `this.$refs` do componente:\n\n ```html\n <!-- armazenado como this.$refs.p -->\n <p ref=\"p\">hello</p>\n ```\n\n Na API de Composição, a referência será armazenada em uma `ref` com o nome correspondente:\n\n ```vue\n <script setup>\n import { ref } from 'vue'\n\n const p = ref()\n </script>\n\n <template>\n <p ref=\"p\">hello</p>\n </template>\n ```\n\n Se usado sobre um elemento de DOM simples, a referência será este elemento; se usada sobre um componente filho, a referência será a instância do componente filho.\n\n Alternativamente, a `ref` pode aceitar um valor de função que fornece controlo total sobre onde armazenar a referência:\n\n ```html\n <ChildComponent :ref=\"(el) => child = el\" />\n ```\n\n Uma nota importante sobre o tempo de registo da referência: uma vez que as próprias referências são criadas como resultado da função de interpretação, devemos esperar até o componente ser montado antes de acessá-las.\n\n `this.$refs` também não é reativa, portanto não devemos tentar usá-la nos modelos de marcação para vínculo de dados.\n\n- **Consulte também**\n - [Guia - Referências do Modelo de Marcação](https://pt.vuejs.org/guide/essentials/template-refs.html)\n - [Guia - Tipos para Referências do Modelo de Marcação](https://pt.vuejs.org/guide/typescript/composition-api.html#typing-template-refs) <sup class=\"vt-badge ts\" data-text=\"typescript\" />\n - [Guia - Tipos para Referências do Modelo de Marcação do Componente](https://pt.vuejs.org/guide/typescript/composition-api.html#typing-component-template-refs) <sup class=\"vt-badge ts\" data-text=\"typescript\" />\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-special-attributes.html#ref" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-special-attributes.html#ref" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-special-attributes.html#ref" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-special-attributes.html#ref" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-special-attributes.html#ref" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-special-attributes.html#ref" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-special-attributes.html#ref" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-special-attributes.html#ref" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-special-attributes.html#ref" + } + ] + }, + { + name: "is", + description: { + kind: "markdown", + value: "\nUsado para vincular os [componentes dinâmicos](https://pt.vuejs.org/guide/essentials/component-basics.html#dynamic-components).\n\n- **Espera:** `string | Component`\n\n- **Uso sobre os elementos nativos** <sup class=\"vt-badge\">3.1+</sup>\n\n Quando o atributo `is` for usado sobre um elemento de HTML nativo, será interpretado como um [elemento embutido personalizado](https://html.spec.whatwg.org/multipage/custom-elements#custom-elements-customized-builtin-example), que é uma funcionalidade da plataforma da Web nativa.\n\n Existe, no entanto, um caso de uso onde podemos precisar que a Vue substitua um elemento nativo por um elemento da Vue, como explicado nas [Advertências de Analise do Modelo de Marcação de DOM](https://pt.vuejs.org/guide/essentials/component-basics.html#dom-template-parsing-caveats). Nós podemos prefixar o valor do atributo `is` com `vue:` assim a Vue interpretará o elemento como um componente de Vue:\n\n ```html\n <table>\n <tr is=\"vue:my-row-component\"></tr>\n </table>\n ```\n\n- **Consulte também**\n\n - [Elementos Especiais Embutidos - `<component>`](https://pt.vuejs.org/api/built-in-special-elements.html#component)\n - [Componentes Dinâmicos](https://pt.vuejs.org/guide/essentials/component-basics.html#dynamic-components)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-special-attributes.html#is" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-special-attributes.html#is" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-special-attributes.html#is" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-special-attributes.html#is" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-special-attributes.html#is" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-special-attributes.html#is" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-special-attributes.html#is" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-special-attributes.html#is" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-special-attributes.html#is" + } + ] + } +]; +var require$$3 = { + version: version$h, + tags: tags$a, + globalAttributes: globalAttributes$h +}; + +const version$g = 1.1; +const tags$9 = [ + { + name: "Transition", + description: { + kind: "markdown", + value: "\n**싱글** 엘리먼트 또는 컴포넌트에 애니메이션 트랜지션 효과를 제공합니다.\n\n- **Props**\n\n ```ts\n interface TransitionProps {\n /**\n * 트랜지션 CSS 클래스 이름 자동 생성에 사용.\n * 예를 들어 `name: 'fade'`는 `.fade-enter`,\n * `.fade-enter-active` 등으로 자동 확장됨.\n */\n name?: string\n /**\n * CSS 트랜지션 클래스를 적용할지 여부입니다.\n * 기본 값: true\n */\n css?: boolean\n /**\n * 트랜지션 종료 타이밍을 결정하기 위해,\n * 대기할 트랜지션 이벤트의 유형을 지정.\n * 기본 동작은 지속 시간이 더 긴 유형을\n * 자동으로 감지.\n */\n type?: 'transition' | 'animation'\n /**\n * 명시적으로 트랜지션의 지속 시간을 지정.\n * 기본 동작은 루트 트랜지션 엘리먼트의 첫 번째\n * `transitionend` 또는 `animationend` 이벤트를 기다리는 것.\n */\n duration?: number | { enter: number; leave: number }\n /**\n * 진입/진출 트랜지션의 타이밍 순서를 제어.\n * 기본 동작은 동시.\n */\n mode?: 'in-out' | 'out-in' | 'default'\n /**\n * 최초 렌더링에 트랜지션을 적용할지 여부.\n * 기본 값: false\n */\n appear?: boolean\n\n /**\n * 트랜지션 클래스를 커스텀하기 위한 props.\n * 템플릿에서 kebab-case를 사용해야 함.\n * 예: enter-from-class=\"xxx\"\n */\n enterFromClass?: string\n enterActiveClass?: string\n enterToClass?: string\n appearFromClass?: string\n appearActiveClass?: string\n appearToClass?: string\n leaveFromClass?: string\n leaveActiveClass?: string\n leaveToClass?: string\n }\n ```\n\n- **이벤트**:\n\n - `@before-enter`\n - `@before-leave`\n - `@enter`\n - `@leave`\n - `@appear`\n - `@after-enter`\n - `@after-leave`\n - `@after-appear`\n - `@enter-cancelled`\n - `@leave-cancelled` (`v-show`에서만)\n - `@appear-cancelled`\n\n- **예제**\n\n 간단한 엘리먼트:\n\n ```html\n <Transition>\n <div v-if=\"ok\">토글된 컨텐츠</div>\n </Transition>\n ```\n\n `key` 속성을 변경하여 강제로 트랜지션(전환):\n\n ```html\n <Transition>\n <div :key=\"text\">{{ text }}</div>\n </Transition>\n ```\n \n 트랜지션 모드 + 등장 애니메이션을 가진 동적 컴포넌트:\n\n ```html\n <Transition name=\"fade\" mode=\"out-in\" appear>\n <component :is=\"view\"></component>\n </Transition>\n ```\n\n 트랜지션 이벤트 수신:\n\n ```html\n <Transition @after-enter=\"onTransitionComplete\">\n <div v-show=\"ok\">토글된 컨텐츠</div>\n </Transition>\n ```\n\n- **참고** [가이드 - `<Transition>`](https://ko.vuejs.org/guide/built-ins/transition.html)\n" + }, + attributes: [ + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-components.html#transition" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-components.html#transition" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-components.html#transition" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-components.html#transition" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-components.html#transition" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-components.html#transition" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-components.html#transition" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-components.html#transition" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-components.html#transition" + } + ] + }, + { + name: "TransitionGroup", + description: { + kind: "markdown", + value: "\n리스트의 **여러** 엘리먼트 또는 컴포넌트에 트랜지션 효과를 제공합니다.\n\n- **Props**\n\n `<TransitionGroup>`은 `<Transition>`과 동일한 props에서 `mode`를 제외하고 두 개의 추가 props를 허용합니다:\n\n ```ts\n interface TransitionGroupProps extends Omit<TransitionProps, 'mode'> {\n /**\n * 정의하지 않으면, 렌더는 프래그먼트처럼 취급함.\n */\n tag?: string\n /**\n * 이동중 트랜지션에 적용될 CSS 클래스를 커스텀.\n * 템플릿에서 kebab-case를 사용해야 함.\n * 예: enter-from-class=\"xxx\"\n */\n moveClass?: string\n }\n ```\n\n- **이벤트**:\n\n `<TransitionGroup>`은 `<Transition>`과 동일한 이벤트를 발생시킵니다.\n\n- **세부 사항**:\n\n 기본적으로 `<TransitionGroup>`은 래퍼 DOM 엘리먼트를 렌더링하지 않지만 `tag` prop을 통해 정의할 수 있습니다.\n\n 애니메이션이 제대로 작동하려면 `<transition-group>`의 모든 자식이 [**고유 키**](https://ko.vuejs.org/guide/essentials/list.html#maintaining-state-with-key)를 가져야 합니다.\n\n `<TransitionGroup>`은 CSS `transform`으로 이동 트랜지션을 지원합니다.\n 업데이트 후 화면에서 자식의 위치가 변경되면,\n 움직이는 CSS 클래스가 적용됩니다(`name` 속성에서 자동 생성되거나 `move-class` prop으로 구성됨).\n 이동 클래스가 적용될 때 CSS의 `transform` 속성이 \"트랜지션 가능\"이면,\n [FLIP 기술](https://aerotwist.com/blog/flip-your-animations/)을 사용하여 엘리먼트가 목적지까지 부드럽게 애니메이션됩니다.\n\n- **예제**\n\n ```html\n <TransitionGroup tag=\"ul\" name=\"slide\">\n <li v-for=\"item in items\" :key=\"item.id\">\n {{ item.text }}\n </li>\n </TransitionGroup>\n ```\n\n- **참고** [가이드 - TransitionGroup](https://ko.vuejs.org/guide/built-ins/transition-group.html)\n" + }, + attributes: [ + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-components.html#transitiongroup" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-components.html#transitiongroup" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-components.html#transitiongroup" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-components.html#transitiongroup" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-components.html#transitiongroup" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-components.html#transitiongroup" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-components.html#transitiongroup" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-components.html#transitiongroup" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-components.html#transitiongroup" + } + ] + }, + { + name: "KeepAlive", + description: { + kind: "markdown", + value: "\n내부에 래핑된 동적으로 토글되는 컴포넌트를 캐시합니다.\n\n- **Props**\n\n ```ts\n interface KeepAliveProps {\n /**\n * `include`와 이름이 일치하는 컴포넌트만 캐시됨.\n */\n include?: MatchPattern\n /**\n * `exclude`와 이름이 일치하는 컴포넌트는 캐시되지 않음.\n */\n exclude?: MatchPattern\n /**\n * 캐시할 컴포넌트 인스턴스의 최대 수.\n */\n max?: number | string\n }\n\n type MatchPattern = string | RegExp | (string | RegExp)[]\n ```\n\n- **세부 사항**:\n\n `<KeepAlive>`로 래핑된 동적 컴포넌트는 비활성화 되면,\n 컴포넌트 인스턴스가 파괴되지 않고 캐시됩니다.\n\n `<KeepAlive>`에는 언제나 활성화된 직계 자식의 컴포넌트 인스턴스가 하나만 있을 수 있습니다.\n\n 컴포넌트가 `<KeepAlive>` 내에서 토글되면,\n `mounted` 및 `unmounted` 대신 `activated` 및 `deactivated` 생명 주기 훅이 호출됩니다.\n 이는 `<KeepAlive>`의 직계 자식과 모든 하위 항목에 적용됩니다.\n\n- **예제**\n\n 기본 사용법:\n\n ```html\n <KeepAlive>\n <component :is=\"view\"></component>\n </KeepAlive>\n ```\n\n `v-if` / `v-else`를 사용할 때,\n 한 번에 하나의 컴포넌트만 렌더링되어야 합니다:\n\n ```html\n <KeepAlive>\n <comp-a v-if=\"a > 1\"></comp-a>\n <comp-b v-else></comp-b>\n </KeepAlive>\n ```\n\n `<Transition>`과 함께 사용:\n\n ```html\n <Transition>\n <KeepAlive>\n <component :is=\"view\"></component>\n </KeepAlive>\n </Transition>\n ```\n\n `include` / `exclude` 사용:\n\n ```html\n <!-- 쉼표로 구분된 문자열 -->\n <KeepAlive include=\"a,b\">\n <component :is=\"view\"></component>\n </KeepAlive>\n\n <!-- 정규식 사용(`v-bind` 포함) -->\n <KeepAlive :include=\"/a|b/\">\n <component :is=\"view\"></component>\n </KeepAlive>\n\n <!-- 배열 사용(`v-bind` 포함) -->\n <KeepAlive :include=\"['a', 'b']\">\n <component :is=\"view\"></component>\n </KeepAlive>\n ```\n\n `max`를 활용한 사용:\n\n ```html\n <KeepAlive :max=\"10\">\n <component :is=\"view\"></component>\n </KeepAlive>\n ```\n\n- **참고** [가이드 - KeepAlive](https://ko.vuejs.org/guide/built-ins/keep-alive.html)\n" + }, + attributes: [ + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-components.html#keepalive" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-components.html#keepalive" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-components.html#keepalive" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-components.html#keepalive" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-components.html#keepalive" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-components.html#keepalive" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-components.html#keepalive" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-components.html#keepalive" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-components.html#keepalive" + } + ] + }, + { + name: "Teleport", + description: { + kind: "markdown", + value: "\n슬롯 컨텐츠를 DOM 내 다른 위치에서 렌더링합니다.\n\n- **Props**\n\n ```ts\n interface TeleportProps {\n /**\n * 필수. 대상이 될 컨테이너를 지정.\n * 셀렉터 또는 실제 엘리먼트일 수 있음.\n */\n to: string | HTMLElement\n /**\n * `true`이면 컨텐츠가 대상이 될 컨테이너로\n * 이동하지 않고 원래 위치에 남아 있음.\n * 동적으로 변경할 수 있음.\n */\n disabled?: boolean\n }\n ```\n\n- **예제**\n\n 대상이 될 컨테이너 지정:\n\n ```html\n <Teleport to=\"#some-id\" />\n <Teleport to=\".some-class\" />\n <Teleport to=\"[data-teleport]\" />\n ```\n\n 조건부 비활성화:\n\n ```html\n <Teleport to=\"#popup\" :disabled=\"displayVideoInline\">\n <video src=\"./my-movie.mp4\">\n </Teleport>\n ```\n\n- **참고** [가이드 - Teleport](https://ko.vuejs.org/guide/built-ins/teleport.html)\n" + }, + attributes: [ + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-components.html#teleport" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-components.html#teleport" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-components.html#teleport" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-components.html#teleport" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-components.html#teleport" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-components.html#teleport" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-components.html#teleport" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-components.html#teleport" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-components.html#teleport" + } + ] + }, + { + name: "Suspense", + description: { + kind: "markdown", + value: "\n컴포넌트 트리에서 중첩된 비동기 의존성을 조정하는 데 사용됩니다.\n\n- **Props**\n\n ```ts\n interface SuspenseProps {\n timeout?: string | number\n }\n ```\n\n- **이벤트**:\n\n - `@resolve`\n - `@pending`\n - `@fallback`\n\n- **세부 사항**:\n\n `<Suspense>`는 `#default` 슬롯과 `#fallback` 슬롯이라는 두 개의 슬롯을 사용합니다.\n 메모리에서 기본 슬롯을 렌더링하는 동안,\n 폴백 슬롯의 대체 컨텐츠를 노출합니다.\n\n 기본 슬롯을 렌더링하는 동안 비동기 의존성([비동기 컴포넌트](https://ko.vuejs.org/guide/components/async.html) 및 [`async setup()`](https://ko.vuejs.org/guide/built-ins/suspense.html#async-setup)이 있는 컴포넌트)을 만나면,\n 기본 슬롯을 표시하기 전에 모든 것이 해결될 때까지 대기합니다.\n\n- **참고** [가이드 - Suspense](https://ko.vuejs.org/guide/built-ins/suspense.html)\n" + }, + attributes: [ + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-components.html#suspense" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-components.html#suspense" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-components.html#suspense" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-components.html#suspense" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-components.html#suspense" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-components.html#suspense" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-components.html#suspense" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-components.html#suspense" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-components.html#suspense" + } + ] + }, + { + name: "component", + description: { + kind: "markdown", + value: "\n동적 컴포넌트 또는 엘리먼트를 렌더링하기 위한 \"메타 컴포넌트\"입니다.\n\n- **Props**\n\n ```ts\n interface DynamicComponentProps {\n is: string | Component\n }\n ```\n\n- **세부 사항**:\n\n `is`라는 prop의 값으로 렌더링할 실제 컴포넌트가 결정됩니다:\n\n - 문자열인 경우, HTML 태그 이름 또는 컴포넌트로 등록된 이름일 수 있음.\n\n - 컴포넌트의 정의에 직접 바인딩될 수도 있음.\n\n- **예제**\n\n 등록된 이름으로 컴포넌트 렌더링(옵션 API):\n\n ```vue\n <script>\n import Foo from './Foo.vue'\n import Bar from './Bar.vue'\n\n export default {\n components: { Foo, Bar },\n data() {\n return {\n view: 'Foo'\n }\n }\n }\n </script>\n\n <template>\n <component :is=\"view\" />\n </template>\n ```\n\n 정의에 따른 컴포넌트 렌더링(`<script setup>`이 있는 컴포지션 API):\n\n ```vue\n <script setup>\n import Foo from './Foo.vue'\n import Bar from './Bar.vue'\n </script>\n\n <template>\n <component :is=\"Math.random() > 0.5 ? Foo : Bar\" />\n </template>\n ```\n\n HTML 엘리먼트 렌더링:\n\n ```html\n <component :is=\"href ? 'a' : 'span'\"></component>\n ```\n\n [빌트인 컴포넌트](./built-in-components)는 모두 `is`에 전달할 수 있지만,\n 이름으로 전달하려면 등록해야 합니다.\n 예를 들어:\n\n ```vue\n <script>\n import { Transition, TransitionGroup } from 'vue'\n\n export default {\n components: {\n Transition,\n TransitionGroup\n }\n }\n </script>\n\n <template>\n <component :is=\"isGroup ? 'TransitionGroup' : 'Transition'\">\n ...\n </component>\n </template>\n ```\n\n 이름이 아닌 컴포넌트 자체를 `is`에 전달하는 경우,\n 등록이 필요하지 않습니다(예를 들어 `<script setup>`에서).\n\n `v-model`이 `<component>` 태그에 사용되면, 템플릿 컴파일러는 다른 컴포넌트와 마찬가지로 이를 `modelValue` prop 및 `update:modelValue` 이벤트 리스너로 확장합니다.\n 그러나 이것은 `<input>` 또는 `<select>`와 같은 기본 HTML 엘리먼트와 호환되지 않습니다.\n 결과적으로 동적으로 생성된 기본 엘리먼트와 함께 `v-model`을 사용하면 작동하지 않습니다:\n\n ```vue\n <script setup>\n import { ref } from 'vue'\n \n const tag = ref('input')\n const username = ref('')\n </script>\n\n <template>\n <!-- 'input'이 기본 HTML 엘리먼트이므로 작동하지 않음 -->\n <component :is=\"tag\" v-model=\"username\" />\n </template>\n ```\n\n 실제로는 기본 양식(form) 필드가 일반적으로 실제 앱의 컴포넌트에 래핑되기 때문에 이러한 예외적인 경우는 일반적이지 않습니다.\n 네이티브 엘리먼트를 직접 사용해야 하는 경우, `v-model`을 속성과 이벤트로 수동으로 분할할 수 있습니다.\n\n- **참고**: [가이드 - 컴포넌트 기초: 동적 컴포넌트](https://ko.vuejs.org/guide/essentials/component-basics.html#dynamic-components)\n" + }, + attributes: [ + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-special-elements.html#component" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-special-elements.html#component" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-special-elements.html#component" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-special-elements.html#component" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-special-elements.html#component" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-special-elements.html#component" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-special-elements.html#component" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-special-elements.html#component" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-special-elements.html#component" + } + ] + }, + { + name: "slot", + description: { + kind: "markdown", + value: "\n템플릿의 슬롯 컨텐츠를 내보낼 지점을 나타냅니다.\n\n- **Props**\n\n ```ts\n interface SlotProps {\n /**\n * 범위가 지정된 슬롯의 인자로 전달하기 위해\n * <slot>에 전달된 모든 props\n */\n [key: string]: any\n /**\n * 슬롯 이름을 지정.\n */\n name?: string\n }\n ```\n\n- **세부 사항**:\n\n `<slot>` 엘리먼트는 `name` 속성을 사용하여 슬롯 이름을 지정할 수 있습니다.\n `name`을 지정하지 않으면 기본 슬롯으로 렌더링됩니다.\n 슬롯 엘리먼트에 전달된 추가 속성은 부모 내부에서 범위가 정의된 슬롯에 슬롯 props로 전달됩니다.\n\n 엘리먼트는 일치하는 슬롯의 컨텐츠로 대체됩니다.\n\n Vue 템플릿의 `<slot>` 엘리먼트는 JavaScript로 컴파일되므로 [네이티브 `<slot>` 엘리먼트](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/slot)와 혼동하면 안됩니다.\n\n- **참고**: [가이드 - 슬롯](https://ko.vuejs.org/guide/components/slots.html)\n" + }, + attributes: [ + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-special-elements.html#slot" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-special-elements.html#slot" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-special-elements.html#slot" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-special-elements.html#slot" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-special-elements.html#slot" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-special-elements.html#slot" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-special-elements.html#slot" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-special-elements.html#slot" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-special-elements.html#slot" + } + ] + }, + { + name: "template", + description: { + kind: "markdown", + value: "\n`<template>` 태그는 DOM에 렌더링없이 사용할 앨리먼트들에 대한 위치기술을 위해(placeholder)로 사용할수 있습니다. \nThe `<template>` tag is used as a placeholder when we want to use a built-in directive without rendering an element in the DOM.\n\n- **세부 사항:**\n `<template>` 의 이런 특수한 취급은 다음 디렉티브들과 함께 사용될때만 적용됩니다. \n \n - `v-if`, `v-else-if`, or `v-else`\n - `v-for`\n - `v-slot`\n \n 만약 이런 디렉티브가 없다면, [네이티브 `<template>` 앨리먼트](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/template)로 렌더링됩니다. \n \n `v-for`가 있는 `<template>`은 [`key` 속성](https://ko.vuejs.org/api/built-in-special-attributes.html#key)도 가질 수 있습니다. 다른 모든 속성과 디렉티브는 해당 엘리먼트가가 없으면 의미가 없으므로 버려집니다.\n\n \n 싱글 파일 컴포넌트는 [최상위 `<template>` 태그](https://ko.vuejs.org/api/sfc-spec.html#language-blocks)를 사용하여 전체 템플릿을 래핑합니다. 그 사용법은 위에서 설명한 `<template>`의 사용과는 별개입니다. 해당 최상위 태그는 템플릿 자체의 일부가 아니며 지시문과 같은 템플릿 문법을 지원하지 않습니다.\n\n- **See also:**\n - [가이드 - `v-if` on `<template>`](https://ko.vuejs.org/guide/essentials/conditional.html#v-if-on-template) \n - [가이드 - `v-for` on `<template>`](https://ko.vuejs.org/guide/essentials/list.html#v-for-on-template) \n - [가이드 - Named slots](https://ko.vuejs.org/guide/components/slots.html#named-slots) \n" + }, + attributes: [ + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-special-elements.html#template" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-special-elements.html#template" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-special-elements.html#template" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-special-elements.html#template" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-special-elements.html#template" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-special-elements.html#template" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-special-elements.html#template" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-special-elements.html#template" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-special-elements.html#template" + } + ] + } +]; +const globalAttributes$g = [ + { + name: "v-text", + description: { + kind: "markdown", + value: "\n엘리먼트의 텍스트 컨텐츠를 업데이트합니다.\n\n- **요구되는 값**: `string`\n\n- **세부 사항**:\n\n `v-text`는 엘리먼트의 [텍스트 컨텐츠](https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent) 속성을 설정하므로,\n 엘리먼트 내부의 기존 컨텐츠를 덮어씁니다.\n `텍스트 컨텐츠`의 일부를 업데이트해야 하는 경우,\n [이중 중괄호](https://ko.vuejs.org/guide/essentials/template-syntax.html#text-interpolation)를 사용해야 합니다.\n\n- **예제**\n\n ```html\n <span v-text=\"msg\"></span>\n <!-- 아래와 같음 -->\n <span>{{msg}}</span>\n ```\n\n- **참고**: [템플릿 문법 - 텍스트 보간법](https://ko.vuejs.org/guide/essentials/template-syntax.html#text-interpolation)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-text" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-text" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-text" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-text" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-text" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-text" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-text" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-text" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-text" + } + ] + }, + { + name: "v-html", + description: { + kind: "markdown", + value: "\n엘리먼트의 [innerHTML](https://developer.mozilla.org/en-US/docs/Web/API/Element/innerHTML)을 업데이트합니다.\n\n- **요구되는 값**: `string`\n\n- **세부 사항**:\n\n `v-html`의 내용은 Vue 템플릿 문법을 처리하지 않고 일반 HTML로 삽입됩니다.\n `v-html`을 사용하여 템플릿을 작성하려고 한다면,\n 이 방법 대신 컴포넌트를 사용하여 해결하는 방법을 고민해봐야 합니다.\n\n ::: warning 보안 참고 사항\n 웹사이트에서 임의의 HTML을 동적으로 렌더링하는 것은 [XSS 공격](https://en.wikipedia.org/wiki/Cross-site_scripting)으로 쉽게 이어질 수 있기 때문에 매우 위험할 수 있습니다.\n 신뢰할 수 있는 컨텐츠에만 `v-html`을 사용하고,\n 사용자가 제공하는 컨텐츠에는 **절대** 사용하면 안됩니다.\n :::\n\n [싱글 파일 컴포넌트(SFC)](https://ko.vuejs.org/guide/scaling-up/sfc.html)에서 `scoped`(범위를 지정한) Style은 `v-html` 내부 컨텐츠에 적용되지 않습니다.\n 왜냐하면 해당 HTML은 Vue의 템플릿 컴파일러에서 처리되지 않기 때문입니다.\n 범위를 지정한 CSS로 `v-html` 컨텐츠를 대상으로 지정하려는 경우,\n [CSS 모듈](./sfc-css-features#css-modules) 또는 BEM과 같은 수동 범위 지정 방법과 함께 전역 `<style>` 엘리먼트를 사용할 수 있습니다.\n\n- **예제**\n\n ```html\n <div v-html=\"html\"></div>\n ```\n\n- **참고**: [템플릿 문법 - HTML 출력](https://ko.vuejs.org/guide/essentials/template-syntax.html#raw-html)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-html" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-html" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-html" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-html" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-html" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-html" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-html" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-html" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-html" + } + ] + }, + { + name: "v-show", + description: { + kind: "markdown", + value: "\n표현식의 [truthy](https://developer.mozilla.org/en-US/docs/Glossary/Truthy) 값을 기반으로 엘리먼트의 가시성을 전환합니다.\n\n- **요구되는 값**: `any`\n\n- **세부 사항**:\n\n `v-show`는 인라인 스타일을 통해 `display` CSS 속성을 설정하며,\n 엘리먼트가 표시될 때 초기 `display` 값을 설정하려고 시도합니다.\n 또한 조건이 변경될 때 전환을 트리거합니다.\n\n- **참고**: [조건부 렌더링 - v-show](https://ko.vuejs.org/guide/essentials/conditional.html#v-show)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-show" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-show" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-show" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-show" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-show" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-show" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-show" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-show" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-show" + } + ] + }, + { + name: "v-if", + description: { + kind: "markdown", + value: "\n표현식의 truthy 값을 기반으로 엘리먼트 또는 템플릿 일부를 조건부로 렌더링합니다.\n\n- **요구되는 값**: `any`\n\n- **세부 사항**:\n\n `v-if` 엘리먼트가 토글되면, 엘리먼트와 여기에 포함된 디렉티브/컴포넌트가 파괴되고 재구성됩니다.\n 초기 조건 값이 falsy이면,\n 내부 컨텐츠가 전혀 렌더링되지 않습니다.\n\n 텍스트 또는 여러 엘리먼트를 포함하는 조건부 블록을 나타내기 위해 `<template>`에 사용할 수도 있습니다.\n\n 이 디렉티브는 조건이 변경될 때,\n [트랜지션](https://ko.vuejs.org/guide/built-ins/transition.html)을 트리거합니다.\n\n `v-for`와 함께 사용하는 경우, `v-if`의 우선 순위가 높습니다.\n 하나의 엘리먼트에 이 두 디렉티브을 함께 사용하는 것은 권장되지 않습니다.\n 자세한 내용은 [리스트 렌더링](https://ko.vuejs.org/guide/essentials/list.html#v-for-with-v-if)을 참고하세요.\n\n- **참고**: [조건부 렌더링 - v-if](https://ko.vuejs.org/guide/essentials/conditional.html#v-if)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-if" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-if" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-if" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-if" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-if" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-if" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-if" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-if" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-if" + } + ] + }, + { + name: "v-else", + valueSet: "v", + description: { + kind: "markdown", + value: "\n`v-if` 또는 `v-else-if` 체인에 대한 `else`입니다.\n\n- **표현식을 허용하지 않습니다**.\n\n- **세부 사항**:\n\n - 제한사항: 이전 형제 엘리먼트에 `v-if` 또는 `v-else-if`가 있어야 합니다.\n\n - `<template>`에서 텍스트 또는 여러 엘리먼트를 포함하는 조건부 블록을 나타내는 데 사용할 수 있습니다.\n\n- **예제**\n\n ```html\n <div v-if=\"Math.random() > 0.5\">\n 이제 나를 볼 수 있어요!\n </div>\n <div v-else>\n 아직이에요!\n </div>\n ```\n\n- **참고**: [조건부 렌더링 - v-else](https://ko.vuejs.org/guide/essentials/conditional.html#v-else)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-else" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-else" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-else" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-else" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-else" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-else" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-else" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-else" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-else" + } + ] + }, + { + name: "v-else-if", + description: { + kind: "markdown", + value: "\n`v-if`에 대한 `else if` 블록을 나타냅니다.\n`v-else-if`는 계속 이어서 사용할 수 있습니다.\n\n- **요구되는 값**: `any`\n\n- **세부 사항**:\n\n - 제한사항: 이전 형제 엘리먼트에 `v-if` 또는 `v-else-if`가 있어야 합니다.\n\n - `<template>`에서 텍스트 또는 여러 엘리먼트를 포함하는 조건부 블록을 나타내는 데 사용할 수 있습니다.\n\n- **예제**\n\n ```html\n <div v-if=\"type === 'A'\">\n A\n </div>\n <div v-else-if=\"type === 'B'\">\n B\n </div>\n <div v-else-if=\"type === 'C'\">\n C\n </div>\n <div v-else>\n A/B/C 가 아니야!\n </div>\n ```\n\n- **참고**: [조건부 렌더링 - v-else-if](https://ko.vuejs.org/guide/essentials/conditional.html#v-else-if)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-else-if" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-else-if" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-else-if" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-else-if" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-else-if" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-else-if" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-else-if" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-else-if" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-else-if" + } + ] + }, + { + name: "v-for", + description: { + kind: "markdown", + value: "\n소스 데이터를 기반으로 엘리먼트 또는 템플릿 블록을 여러 번 렌더링합니다.\n\n- **요구되는 값**: `Array | Object | number | string | Iterable`\n\n- **세부 사항**:\n\n 디렉티브는 반복되는 과정의 현재 값에 별칭을 제공하기 위해,\n 특수 문법인 `alias in expression`(표현식 내 별칭)을 사용해야 합니다:\n\n ```html\n <div v-for=\"item in items\">\n {{ item.text }}\n </div>\n ```\n\n 또한 인덱스(객체에서 사용되는 경우 키)의 별칭을 지정할 수도 있습니다:\n\n ```html\n <div v-for=\"(item, index) in items\"></div>\n <div v-for=\"(value, key) in object\"></div>\n <div v-for=\"(value, name, index) in object\"></div>\n ```\n\n `v-for`의 기본 동작은 엘리먼트를 이동하지 않고 제자리에 패치(patch)하려고 합니다.\n 강제로 엘리먼트를 재정렬하려면,\n 특수 속성 `key`를 사용하여 순서 지정을 위한 힌트를 제공해야 합니다:\n\n ```html\n <div v-for=\"item in items\" :key=\"item.id\">\n {{ item.text }}\n </div>\n ```\n\n `v-for`는 네이티브 `Map`,`Set`과 더불어 [Iterable Protocol](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#The_iterable_protocol)을 구현한 값에서도 작동합니다.\n\n- **참고**:\n - [가이드 - 리스트 렌더링](https://ko.vuejs.org/guide/essentials/list.html)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-for" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-for" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-for" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-for" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-for" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-for" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-for" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-for" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-for" + } + ] + }, + { + name: "v-on", + description: { + kind: "markdown", + value: "\n엘리먼트에 이벤트 리스너를 연결합니다.\n\n- **단축 문법:** `@`\n\n- **요구되는 값**: `Function | Inline Statement | Object (without argument)`\n\n- **인자:** `event` (선택사항: 객체 문법을 사용하는 경우)\n\n- **수식어:**\n\n - `.stop` - `event.stopPropagation()` 호출.\n - `.prevent` - `event.preventDefault()` 호출.\n - `.capture` - 캡처 모드로 이벤트 등록.\n - `.self` - 이벤트가 이 엘리먼트에서 전달된 경우에만 트리거 됨.\n - `.{keyAlias}` - 이벤트가 특정 키에 대해서만 트리거 됨.\n - `.once` - 이벤트가 한 번만 트리거 됨(일회용처럼).\n - `.left` - 마우스 왼쪽 버튼으로만 이벤트가 트리거 됨.\n - `.right` - 마우스 오른쪽 버튼으로만 이벤트가 트리거 됨.\n - `.middle` - 마우스 중앙(힐 클릭) 버튼으로만 이벤트가 트리거 됨.\n - `.passive` - `{ passive: true }` 옵션으로 DOM 이벤트를 등록.\n\n- **세부 사항**:\n\n 이벤트 타입은 인자로 표시됩니다.\n 표현식은 메서드 이름 또는 인라인 명령문이거나,\n 수식어가 있는 경우 생략될 수 있습니다.\n\n 일반 엘리먼트에 사용되면 [**네이티브 DOM 이벤트**](https://developer.mozilla.org/en-US/docs/Web/Events)만 수신합니다.\n 커스텀 엘리먼트 컴포넌트에서 사용되는 경우,\n 해당 자식 컴포넌트에서 발송(emit)하는 **커스텀 이벤트**를 수신합니다.\n\n 네이티브 DOM 이벤트를 수신할 때,\n 메서드의 인자는 네이티브 이벤트 뿐 입니다.\n 인라인 명령문을 사용하는 경우,\n 명령문은 특수 속성인 `$event`로 `v-on:click=\"handle('ok', $event)\"`와 같이 이벤트 객체에 접근할 수 있습니다.\n\n `v-on`은 인자 없이 `이벤트(키): 리스너(값)` 형식의 객체 바인딩도 지원합니다.\n 수식어는 객체 문법을 사용할 때는 지원하지 않습니다.\n\n- **예제**\n\n ```html\n <!-- 메서드 핸들러 -->\n <button v-on:click=\"doThis\"></button>\n\n <!-- 동적 이벤트 -->\n <button v-on:[event]=\"doThis\"></button>\n\n <!-- 인라인 표현식 -->\n <button v-on:click=\"doThat('hello', $event)\"></button>\n\n <!-- 단축 문법 -->\n <button @click=\"doThis\"></button>\n\n <!-- 단축 문법 동적 이벤트 -->\n <button @[event]=\"doThis\"></button>\n\n <!-- 전파 중지 -->\n <button @click.stop=\"doThis\"></button>\n\n <!-- event.preventDefault() 작동 -->\n <button @click.prevent=\"doThis\"></button>\n\n <!-- 표현식 없이 event.preventDefault()만 사용 -->\n <form @submit.prevent></form>\n\n <!-- 수식어 이어서 사용 -->\n <button @click.stop.prevent=\"doThis\"></button>\n\n <!-- 키 별칭을 수식어로 사용 -->\n <input @keyup.enter=\"onEnter\" />\n\n <!-- 클릭 이벤트 단 한 번만 트리거 -->\n <button v-on:click.once=\"doThis\"></button>\n\n <!-- 객체 문법 -->\n <button v-on=\"{ mousedown: doThis, mouseup: doThat }\"></button>\n ```\n\n 자식 컴포넌트의 커스텀 이벤트 수신 대기(자식에서 \"my-event\"가 발생하면 핸들러가 호출됨):\n\n ```html\n <MyComponent @my-event=\"handleThis\" />\n\n <!-- 인라인 표현식 -->\n <MyComponent @my-event=\"handleThis(123, $event)\" />\n ```\n\n- **참고**:\n - [이벤트 핸들링](https://ko.vuejs.org/guide/essentials/event-handling.html)\n - [컴포넌트 - 이벤트 청취하기](https://ko.vuejs.org/guide/essentials/component-basics.html#listening-to-events)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-on" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-on" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-on" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-on" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-on" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-on" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-on" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-on" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-on" + } + ] + }, + { + name: "v-bind", + description: { + kind: "markdown", + value: "\n하나 이상의 속성 또는 컴포넌트 prop을 표현식에 동적으로 바인딩합니다.\n\n- **단축 문법:** `:` 또는 `.`(`.prop` 수식어를 사용할 때)\n\n- **요구되는 값**: `any (인자 있이) | Object (인자 없이)`\n\n- **인자:** `attrOrProp (optional)`\n\n- **수식어:**\n\n - `.camel` - kebab-case 속성 이름을 camelCase로 변환.\n - `.prop` - 바인딩을 [DOM 속성(property: 이하 프로퍼티)](https://developer.mozilla.org/en-US/docs/Web/API/Element#properties)으로 강제 설정. <sup class=\"vt-badge\">3.2+</sup>\n - `.attr` - 바인딩을 [DOM 속성(attribute)](https://developer.mozilla.org/en-US/docs/Glossary/Attribute)으로 강제 설정. <sup class=\"vt-badge\">3.2+</sup>\n\n- **사용법**:\n\n `class` 또는 `style` 속성을 바인딩하는 데 사용되는 경우,\n `v-bind`는 배열 또는 객체와 같이 값을 추가할 수 있는 타입을 지원합니다.\n 자세한 내용은 아래 링크된 가이드 섹션을 참고합시다.\n\n 엘리먼트에 바인딩을 설정할 때,\n Vue는 기본적으로 연산자 검사를 위한 `in`을 사용하여,\n 엘리먼트에 프로퍼티로 정의된 키가 있는지 확인합니다.\n 프로퍼티가 정의되면,\n Vue는 속성 대신 DOM 프로퍼티로 값을 설정합니다.\n 이것은 대부분의 경우 작동하지만,\n `.prop` 또는 `.attr` 수식어를 명시적으로 사용하여 이 동작을 재정의할 수 있습니다.\n 이것은 특히 [커스텀 엘리먼트로 작업](https://ko.vuejs.org/guide/extras/web-components.html#passing-dom-properties)할 때 필요합니다.\n\n 컴포넌트 prop 바인딩에 사용될 때 prop은 자식 컴포넌트에서 적절하게 선언되어야 합니다.\n\n 인자 없이 사용하는 경우,\n 속성을 이름-값 쌍으로 포함하는 객체를 바인딩하는 데 사용할 수 있습니다.\n 이 모드에서 `class`와 `style`은 배열 또는 객체를 지원하지 않습니다.\n\n- **예제**\n\n ```html\n <!-- 속성 바인딩 -->\n <img v-bind:src=\"imageSrc\" />\n\n <!-- 동적인 속성명 -->\n <button v-bind:[key]=\"value\"></button>\n\n <!-- 단축 문법 -->\n <img :src=\"imageSrc\" />\n\n <!-- 단축 문법과 동적 속성명 -->\n <button :[key]=\"value\"></button>\n\n <!-- 인라인으로 문자열 결합 -->\n <img :src=\"'/path/to/images/' + fileName\" />\n\n <!-- class 바인딩 -->\n <div :class=\"{ red: isRed }\"></div>\n <div :class=\"[classA, classB]\"></div>\n <div :class=\"[classA, { classB: isB, classC: isC }]\"></div>\n\n <!-- style 바인딩 -->\n <div :style=\"{ fontSize: size + 'px' }\"></div>\n <div :style=\"[styleObjectA, styleObjectB]\"></div>\n\n <!-- 속성을 객체로 바인딩 -->\n <div v-bind=\"{ id: someProp, 'other-attr': otherProp }\"></div>\n\n <!-- prop 바인딩. \"prop\"은 자식 컴포넌트에서 선언되어 있어야 함 -->\n <MyComponent :prop=\"someThing\" />\n\n <!-- 자식 컴포넌트와 공유될 부모 props를 전달 -->\n <MyComponent v-bind=\"$props\" />\n ```\n\n `.prop` 수식어에는 전용 단축 문법 `.`가 있습니다:\n\n ```html\n <div :someProperty.prop=\"someObject\"></div>\n\n <!-- 위 코드는 아래와 같이 단축할 수 있음 -->\n <div .someProperty=\"someObject\"></div>\n ```\n\n `.camel` 수식어는 DOM 내 템플릿을 사용할 때,\n `v-bind`의 속성명을 카멜라이징(camelizing)할 수 있습니다.\n 예를 들면, SVG `viewBox` 속성:\n\n ```html\n <svg :view-box.camel=\"viewBox\"></svg>\n ```\n\n 문자열 템플릿을 사용하거나 템플릿을 빌드 과정으로 미리 컴파일하는 경우에는 `.camel`이 필요하지 않습니다.\n\n- **참고**:\n - [가이드 - 클래스와 스타일 바인딩](https://ko.vuejs.org/guide/essentials/class-and-style.html)\n - [가이드 - Props: Props 전달에 관한 심화](https://ko.vuejs.org/guide/components/props.html#prop-passing-details)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-bind" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-bind" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-bind" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-bind" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-bind" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-bind" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-bind" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-bind" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-bind" + } + ] + }, + { + name: "v-model", + description: { + kind: "markdown", + value: "\n사용자 입력을 받는 폼(form) 엘리먼트 또는 컴포넌트에 양방향 바인딩을 만듭니다.\n\n- **요구되는 값**: 사용자 입력을 받는 폼 엘리먼트 또는 컴포넌트의 출력 값에 따라 다름.\n\n- **다음으로 제한됨**:\n\n - `<input>`\n - `<select>`\n - `<textarea>`\n - 컴포넌트\n\n- **수식어:**\n\n - [`.lazy`](https://ko.vuejs.org/guide/essentials/forms.html#lazy) - `input` 대신 `change` 이벤트를 수신함.\n - [`.number`](https://ko.vuejs.org/guide/essentials/forms.html#number) - 유효한 입력 문자열을 숫자로 변환하여 전달.\n - [`.trim`](https://ko.vuejs.org/guide/essentials/forms.html#trim) - 사용자 입력의 공백을 트리밍.\n\n- **참고**:\n\n - [가이드 - Form 입력 바인딩](https://ko.vuejs.org/guide/essentials/forms.html)\n - [가이드 - 이벤트: `v-model`과 함께 사용하기](https://ko.vuejs.org/guide/components/v-model.html)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-model" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-model" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-model" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-model" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-model" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-model" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-model" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-model" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-model" + } + ] + }, + { + name: "v-slot", + description: { + kind: "markdown", + value: "\n이름이 있는 슬롯 또는 props를 받을 것으로 예상되는 범위형 (Scoped) 슬롯을 나타냅니다.\n\n- **단축 문법:** `#`\n\n- **요구되는 값**: JavaScript expression that is valid in a function argument position, including support for destructuring. Optional - only needed if expecting props to be passed to the slot.\n\n- **인자:** 슬롯 이름 (선택적, 기본값은 `default`)\n\n- **다음으로 제한됨**:\n\n - `<template>`\n - [컴포넌트](https://ko.vuejs.org/guide/components/slots.html#scoped-slots) (props를 수신할 기본 슬롯만 있는 경우)\n\n- **예제**\n\n ```html\n <!-- 이름이 있는 슬롯 -->\n <BaseLayout>\n <template v-slot:header>\n 해더 컨텐츠\n </template>\n\n <template v-slot:default>\n 기본 슬롯 컨텐츠\n </template>\n\n <template v-slot:footer>\n 푸터 컨텐츠\n </template>\n </BaseLayout>\n\n <!-- props를 수신할 기본 슬롯 -->\n <InfiniteScroll>\n <template v-slot:item=\"slotProps\">\n <div class=\"item\">\n {{ slotProps.item.text }}\n </div>\n </template>\n </InfiniteScroll>\n\n <!-- props를 수신할 기본 슬롯, 분해할당을 사용 -->\n <Mouse v-slot=\"{ x, y }\">\n 마우스 위치: {{ x }}, {{ y }}\n </Mouse>\n ```\n\n- **참고**:\n - [가이드 - 슬롯](https://ko.vuejs.org/guide/components/slots.html)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-slot" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-slot" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-slot" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-slot" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-slot" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-slot" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-slot" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-slot" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-slot" + } + ] + }, + { + name: "v-pre", + description: { + kind: "markdown", + value: "\n이 엘리먼트와 모든 자식 엘리먼트의 컴파일을 생략합니다.\n\n- **표현식을 허용하지 않습니다**.\n\n- **세부 사항**:\n\n `v-pre`가 있는 엘리먼트 내에서 모든 Vue 템플릿 구문은 그대로 유지되고 렌더링됩니다.\n 가장 일반적인 사용 사례는 이중 중괄호 태그를 표시하는 것입니다.\n\n- **예제**\n\n ```html\n <span v-pre>{{ 이곳은 컴파일되지 않습니다. }}</span>\n ```\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-pre" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-pre" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-pre" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-pre" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-pre" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-pre" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-pre" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-pre" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-pre" + } + ] + }, + { + name: "v-once", + description: { + kind: "markdown", + value: "\n엘리먼트와 컴포넌트를 한 번만 렌더링하고,\n향후 업데이트를 생략합니다.\n\n- **표현식을 허용하지 않습니다**.\n\n- **세부 사항**:\n\n 이후 다시 렌더링할 때 엘리먼트/컴포넌트 및 모든 자식들은 정적 컨텐츠로 처리되어 생략됩니다.\n 이것은 업데이트 성능을 최적화하는 데 사용할 수 있습니다.\n\n ```html\n <!-- 단일 엘리먼트 -->\n <span v-once>절대 바뀌지 않음: {{msg}}</span>\n <!-- 자식이 있는 엘리먼트 -->\n <div v-once>\n <h1>댓글</h1>\n <p>{{msg}}</p>\n </div>\n <!-- 컴포넌트 -->\n <MyComponent v-once :comment=\"msg\"></MyComponent>\n <!-- `v-for` 디렉티브 -->\n <ul>\n <li v-for=\"i in list\" v-once>{{i}}</li>\n </ul>\n ```\n\n 3.2부터는 [`v-memo`](#v-memo)를 사용하여 무효화 조건으로 템플릿의 일부를 메모화할 수도 있습니다.\n\n- **참고**:\n - [가이드 - 템플릿 문법: 텍스트 보간법](https://ko.vuejs.org/guide/essentials/template-syntax.html#text-interpolation)\n - [v-memo](#v-memo)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-once" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-once" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-once" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-once" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-once" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-once" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-once" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-once" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-once" + } + ] + }, + { + name: "v-memo", + description: { + kind: "markdown", + value: "\n- **요구되는 값**: `any[]`\n\n- **세부 사항**:\n\n 템플릿의 하위 트리를 메모합니다.\n 엘리먼트와 컴포넌트 모두에 사용할 수 있습니다.\n 디렉티브는 메모이제이션을 위해 비교할 의존성 값의 고정된 길이의 배열을 요구합니다.\n 배열의 모든 값이 마지막 렌더링과 같으면 전체 하위 트리에 대한 업데이트를 생략합니다.\n 예를 들어:\n\n ```html\n <div v-memo=\"[valueA, valueB]\">\n ...\n </div>\n ```\n\n 컴포넌트가 다시 렌더링될 때 `valueA`와 `valueB`가 모두 동일하게 유지되면,\n 이 `<div>`와 하위 항목에 대한 모든 업데이트를 생략합니다.\n 사실, 하위 트리의 메모된 복사본을 재사용할 수 있기 때문에 가상 DOM VNode 생성도 생략합니다.\n\n 메모이제이션 배열을 올바르게 지정하는 것이 중요합니다.\n 그렇지 않으면 실제로 적용되어야 하는 업데이트를 건너뛸 수 있습니다.\n 빈 의존성 배열(`v-memo=\"[]\"`)이 있는 `v-memo`는 기능적으로 `v-once`와 동일합니다.\n\n **`v-for`과 함께 사용하기**\n\n `v-memo`는 성능이 중요한 시나리오에서 마이크로 최적화를 위해 제공되는 것으로,\n 일반적으로 거의 필요하지 않습니다.\n 이것이 도움이 될 수 있는 가장 일반적인 경우는 큰 리스트(`length > 1000`)를 `v-for`로 렌더링할 때입니다:\n\n ```html\n <div v-for=\"item in list\" :key=\"item.id\" v-memo=\"[item.id === selected]\">\n <p>ID: {{ item.id }} - 선택됨: {{ item.id === selected }}</p>\n <p>...더 많은 자식 노드</p>\n </div>\n ```\n\n 컴포넌트의 `selected` 상태가 변경되면,\n 대부분의 아이템이 정확히 동일하게 유지되더라도 많은 양의 VNode가 생성됩니다.\n 여기서 `v-memo` 사용법은 본질적으로 \"아이템의 선택여부가 바뀐 경우에만, 이 아이템을 업데이트하십시오\"입니다.\n 이렇게 하면 영향을 받지 않는 모든 아이템이 이전 VNode를 재사용하고,\n 차이점 비교를 생략할 수 있습니다.\n Vue는 아이템의 `:key`로 자동 추론하므로,\n 메모 의존성 배열에 `item.id`를 포함할 필요가 없습니다.\n\n :::warning\n `v-for`와 함께 `v-memo`를 사용할 때,\n 동일한 엘리먼트에 사용되는지 확인이 필요합니다.\n **`v-memo`는 `v-for` 내에서 작동하지 않습니다**.\n :::\n\n `v-memo`는 자식 컴포넌트 업데이트 확인이 최적화되지 않은 특정 엣지 케이스에서 원치 않는 업데이트를 수동으로 방지하기 위해 컴포넌트에 사용할 수도 있습니다.\n 그러나 필요한 업데이트를 건너뛰지 않도록 올바른 의존성 배열을 지정하는 것은 개발자의 책임입니다.\n\n- **참고**:\n - [v-once](#v-once)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-memo" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-memo" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-memo" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-memo" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-memo" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-memo" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-memo" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-memo" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-memo" + } + ] + }, + { + name: "v-cloak", + description: { + kind: "markdown", + value: "\n준비될 때까지 컴파일되지 않은 템플릿을 숨기는 데 사용됩니다.\n\n- **표현식을 허용하지 않습니다**.\n\n- **세부 사항**:\n\n **이 디렉티브는 빌드 과정이 없는 설정에서만 필요합니다**.\n\n DOM 내 템플릿을 사용할 때,\n \"컴파일되지 않은 템플릿이 순간 보이는 현상\"이 있을 수 있습니다.\n 이러면 사용자는 컴포넌트가 렌더링된 컨텐츠로 대체할 때까지 이중 중괄호 태그를 볼 수 있습니다.\n\n `v-cloak`은 연결된 컴포넌트 인스턴스가 마운트될 때까지 엘리먼트에 남아 있습니다.\n `[v-cloak] { display: none }`과 같은 CSS 규칙과 결합하여,\n 컴포넌트가 준비될 때까지 템플릿을 숨기는 데 사용할 수 있습니다.\n\n- **예제**\n\n ```css\n [v-cloak] {\n display: none;\n }\n ```\n\n ```html\n <div v-cloak>\n {{ message }}\n </div>\n ```\n\n `<div>`는 컴파일이 완료될 때까지 표시되지 않습니다.\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-cloak" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-cloak" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-cloak" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-cloak" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-cloak" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-cloak" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-cloak" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-cloak" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-cloak" + } + ] + }, + { + name: "key", + description: { + kind: "markdown", + value: "\n특수 속성 `key`는 Vue의 가상 DOM 알고리즘이 이전 목록과 새 노드 목록을 비교할 때 vnode를 식별하는 힌트로 주로 사용됩니다.\n\n- **요구되는 값**: `number | string | symbol`\n\n- **세부 사항**:\n\n 키가 없으면 Vue는 엘리먼트 이동을 최소화하고 동일한 유형의 엘리먼트를 가능한 한 제자리에서 패치/재사용하는 알고리즘을 사용합니다.\n 키를 사용하면 키의 순서 변경에 따라 엘리먼트를 재정렬하고 더 이상 존재하지 않는 키가 있는 엘리먼트는 항상 제거/파기됩니다.\n\n 동일한 공통 부모의 자식들은 **고유 키**가 있어야 합니다.\n 키가 중복되면 렌더링 에러가 발생합니다.\n\n `v-for`에서 가장 일반적으로 사용 됩니다:\n\n ```html\n <ul>\n <li v-for=\"item in items\" :key=\"item.id\">...</li>\n </ul>\n ```\n\n 또는 엘리먼트/컴포넌트를 재사용하는 대신 강제로 교체하는 데 사용할 수도 있습니다.\n 다음과 같은 경우에 유용할 수 있습니다:\n\n - 컴포넌트의 생명 주기 훅을 올바르게 트리거함.\n - 트랜지션 트리거\n\n 예제:\n\n ```html\n <transition>\n <span :key=\"text\">{{ text }}</span>\n </transition>\n ```\n\n `text`가 변경되면 `<span>`이 패치 대신 항상 교체되므로 트랜지션이 트리거됩니다.\n\n- **참고**: [가이드 - 리스트 렌더링: `key`를 통한 상태유지](https://ko.vuejs.org/guide/essentials/list.html#maintaining-state-with-key)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-special-attributes.html#key" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-special-attributes.html#key" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-special-attributes.html#key" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-special-attributes.html#key" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-special-attributes.html#key" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-special-attributes.html#key" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-special-attributes.html#key" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-special-attributes.html#key" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-special-attributes.html#key" + } + ] + }, + { + name: "ref", + description: { + kind: "markdown", + value: "\n[템플릿 참조](https://ko.vuejs.org/guide/essentials/template-refs.html)를 의미합니다.\n\n- **요구되는 값**: `string | Function`\n\n- **세부 사항**:\n\n `ref` is used to register a reference to an element or a child component.\n\n In Options API, the reference will be registered under the component's `this.$refs` object:\n\n `ref`는 엘리먼트 또는 자식 컴포넌트를 참조하기 위해 사용됩니다.\n\n 옵션 API에서 참조는 컴포넌트의 `this.$refs` 객체 내에 등록됩니다.\n\n ```html\n <!-- 저장됨: this.$refs.p -->\n <p ref=\"p\">안녕!</p>\n ```\n\n 컴포지션 API에서 참조는 이름이 일치하는 `ref`에 저장됩니다.\n\n ```vue\n <script setup>\n import { ref } from 'vue'\n\n const p = ref()\n </script>\n\n <template>\n <p ref=\"p\">안녕!</p>\n </template>\n ```\n\n 일반 DOM 엘리먼트에서 사용되는 경우, 참조는 해당 엘리먼트가 됩니다.\n 자식 컴포넌트에 사용되는 경우, 참조는 자식 컴포넌트 인스턴스가 됩니다.\n\n `ref`는 함수를 사용하여 참조 저장을 완전히 제어할 수 있습니다:\n\n ```html\n <ChildComponent :ref=\"(el) => child = el\" />\n ```\n\n 참조 등록 타이밍에 대한 중요한 참고 사항:\n 참조는 렌더 함수의 결과로 생성되므로,\n 접근하기 전에 컴포넌트가 마운트될 때까지 기다려야 합니다.\n\n `this.$refs`도 반응형이 아니므로 데이터 바인딩을 위한 템플릿에서 사용하면 안됩니다.\n\n- **참고**: \n - [가이드 - 템플릿 refs](https://ko.vuejs.org/guide/essentials/template-refs.html)\n - [Guide - 템플릿 Refs에 타입 적용하기Typing Template Refs](https://ko.vuejs.org/guide/typescript/composition-api.html#typing-template-refs) <sup class=\"vt-badge ts\" />\n - [Guide - 컴포넌트 템플릿 Refs에 타입 적용하기](https://ko.vuejs.org/guide/typescript/composition-api.html#typing-component-template-refs) <sup class=\"vt-badge ts\" />\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-special-attributes.html#ref" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-special-attributes.html#ref" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-special-attributes.html#ref" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-special-attributes.html#ref" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-special-attributes.html#ref" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-special-attributes.html#ref" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-special-attributes.html#ref" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-special-attributes.html#ref" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-special-attributes.html#ref" + } + ] + }, + { + name: "is", + description: { + kind: "markdown", + value: "\n[동적 컴포넌트](https://ko.vuejs.org/guide/essentials/component-basics.html#dynamic-components) 바인딩에 사용합니다.\n\n- **요구되는 값**: `string | Component`\n\n- **네이티브 엘리먼트에 사용** <sup class=\"vt-badge\">3.1+</sup>\n\n `is` 속성이 네이티브 HTML 엘리먼트에 사용되면,\n 네이티브 웹 플랫폼 함수인 [커스터마이즈 빌트인 엘리먼트](https://html.spec.whatwg.org/multipage/custom-elements#custom-elements-customized-builtin-example)로 해석됩니다.\n\n 그러나 [in-DOM 템플릿 파싱 주의 사항](https://ko.vuejs.org/guide/essentials/component-basics.html#in-dom-template-parsing-caveats)에 설명된 대로,\n 기본 엘리먼트를 Vue 컴포넌트로 교체하기 위해 Vue가 필요할 수 있는 사용 사례가 있습니다.\n Vue가 엘리먼트를 Vue 컴포넌트로 렌더링하도록 `is` 속성 값에 `vue:` 접두사를 붙일 수 있습니다:\n\n ```html\n <table>\n <tr is=\"vue:my-row-component\"></tr>\n </table>\n ```\n\n- **참고**:\n\n - [API - 특수 엘리먼트: `<component>`](https://ko.vuejs.org/api/built-in-special-elements.html#component)\n - [가이드 - 컴포넌트 기초: 동적 컴포넌트](https://ko.vuejs.org/guide/essentials/component-basics.html#dynamic-components)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-special-attributes.html#is" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-special-attributes.html#is" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-special-attributes.html#is" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-special-attributes.html#is" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-special-attributes.html#is" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-special-attributes.html#is" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-special-attributes.html#is" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-special-attributes.html#is" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-special-attributes.html#is" + } + ] + } +]; +var require$$4 = { + version: version$g, + tags: tags$9, + globalAttributes: globalAttributes$g +}; + +const version$f = 1.1; +const tags$8 = [ + { + name: "Transition", + description: { + kind: "markdown", + value: "\nFournit des effets de transition animés à **un seul** élément ou composant.\n\n- **Props :**\n\n ```ts\n interface TransitionProps {\n /**\n * Utilisé pour générer automatiquement des noms de classe pour les transitions CSS\n * par exemple `name: 'fade'` s'étendra automatiquement à `.fade-enter`,\n * `.fade-enter-active`, etc.\n */\n name?: string\n /**\n * S'il faut appliquer les classes de transition CSS ou non\n * Default: true\n */\n css?: boolean\n /**\n * Spécifie le type d'événements de transition à attendre pour\n * déterminer le moment de la fin de la transition.\n * Le comportement par défaut consiste à détecter automatiquement le type qui a\n * la plus longue durée.\n */\n type?: 'transition' | 'animation'\n /**\n * Spécifie les durées explicites de la transition.\n * Le comportement par défaut consiste à attendre le premier événement `transitionend`.\n * ou `animationend` sur l'élément de transition racine.\n */\n duration?: number | { enter: number; leave: number }\n /**\n * Contrôle la séquence temporelle des transitions de sortie/entrée.\n * Simultané par défaut.\n */\n mode?: 'in-out' | 'out-in' | 'default'\n /**\n * Si la transition doit être appliquée au rendu initial ou non.\n * Default: false\n */\n appear?: boolean\n\n /**\n * Props pour la personnaliser les classes de transition.\n * Utilisez kebab-case dans les templates, par exemple enter-from-class=\"xxx\"\n */\n enterFromClass?: string\n enterActiveClass?: string\n enterToClass?: string\n appearFromClass?: string\n appearActiveClass?: string\n appearToClass?: string\n leaveFromClass?: string\n leaveActiveClass?: string\n leaveToClass?: string\n }\n ```\n\n- **Événements :**\n\n - `@before-enter`\n - `@before-leave`\n - `@enter`\n - `@leave`\n - `@appear`\n - `@after-enter`\n - `@after-leave`\n - `@after-appear`\n - `@enter-cancelled`\n - `@leave-cancelled` (`v-show` only)\n - `@appear-cancelled`\n\n- **Exemple**\n\n Élément simple :\n\n ```html\n <Transition>\n <div v-if=\"ok\">toggled content</div>\n </Transition>\n ```\n\n Transition forcée en modifiant l'attribut `key` :\n \n ```html\n <Transition>\n <div :key=\"text\">{{ text }}</div>\n </Transition>\n ```\n\n Composant dynamique, avec mode de transition + animation à l'apparition :\n\n ```html\n <Transition name=\"fade\" mode=\"out-in\" appear>\n <component :is=\"view\"></component>\n </Transition>\n ```\n\n Écoute des événements de transition :\n\n ```html\n <Transition @after-enter=\"onTransitionComplete\">\n <div v-show=\"ok\">toggled content</div>\n </Transition>\n ```\n\n- **Voir aussi** [Guide sur `<Transition>`](https://fr.vuejs.org/guide/built-ins/transition.html)\n" + }, + attributes: [ + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-components.html#transition" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-components.html#transition" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-components.html#transition" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-components.html#transition" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-components.html#transition" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-components.html#transition" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-components.html#transition" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-components.html#transition" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-components.html#transition" + } + ] + }, + { + name: "TransitionGroup", + description: { + kind: "markdown", + value: "\nFournit des effets de transition pour de **multiples** éléments ou composants dans une liste.\n\n- **Props :**\n\n `<TransitionGroup>` accepte les mêmes props que `<Transition>` à l'exception de `mode`, plus deux props additionnelles :\n\n ```ts\n interface TransitionGroupProps extends Omit<TransitionProps, 'mode'> {\n /**\n * S'il n'est pas défini, le rendu sera un fragment.\n */\n tag?: string\n /**\n * Pour personnaliser la classe CSS appliquée lors des transitions de mouvement.\n * Utilisez kebab-case dans les templates, par exemple move-class=\"xxx\"\n */\n moveClass?: string\n }\n ```\n\n- **Événements :**\n\n `<TransitionGroup>` émet les mêmes événements que `<Transition>`.\n\n- **Détails**\n\n Par défaut, `<TransitionGroup>` ne rend pas d'élément du DOM en enveloppant d'autres, mais on peut en définir un via la prop `tag`.\n\n Notez que chaque enfant d'un `<transition-group>` doit avoir une [**clé unique**](https://fr.vuejs.org/guide/essentials/list.html#maintaining-state-with-key) pour que les animations fonctionnent correctement.\n\n `<TransitionGroup>` prend en charge les transitions de mouvement via une transformation CSS. Lorsque la position d'un enfant à l'écran a changé après une mise à jour, il se verra appliquer une classe CSS de mouvement (générée automatiquement à partir de l'attribut `name` ou configurée avec la prop `move-class`). Si la propriété CSS `transform` est \"transition-able\" lorsque la classe de mouvement est appliquée, l'élément sera animé en douceur vers sa destination en utilisant la [technique FLIP](https://aerotwist.com/blog/flip-your-animations/).\n\n- **Exemple**\n\n ```html\n <TransitionGroup tag=\"ul\" name=\"slide\">\n <li v-for=\"item in items\" :key=\"item.id\">\n {{ item.text }}\n </li>\n </TransitionGroup>\n ```\n\n- **Voir aussi** [Guide - TransitionGroup](https://fr.vuejs.org/guide/built-ins/transition-group.html)\n" + }, + attributes: [ + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-components.html#transitiongroup" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-components.html#transitiongroup" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-components.html#transitiongroup" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-components.html#transitiongroup" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-components.html#transitiongroup" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-components.html#transitiongroup" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-components.html#transitiongroup" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-components.html#transitiongroup" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-components.html#transitiongroup" + } + ] + }, + { + name: "KeepAlive", + description: { + kind: "markdown", + value: "\nMet en cache les composants activés dynamiquement qui y sont imbriqués.\n\n- **Props :**\n\n ```ts\n interface KeepAliveProps {\n /**\n * Si spécifié, seuls les composants dont les noms correspondent à \n * `include` seront mis en cache.\n */\n include?: MatchPattern\n /**\n * Un composant avec un nom ne correspondant pas à `exclude` ne sera\n * pas mis en cache.\n */\n exclude?: MatchPattern\n /**\n * Le nombre maximum d'instances de composant à mettre en cache.\n */\n max?: number | string\n }\n\n type MatchPattern = string | RegExp | (string | RegExp)[]\n ```\n\n- **Détails**\n\n Lorsqu'il enveloppe un composant dynamique, `<KeepAlive>` met en cache les instances inactives du composant sans les détruire.\n\n Il ne peut y avoir qu'une seule instance de composant active comme enfant direct de `<KeepAlive>` à un moment donné.\n\nLorsqu'un composant est activé/désactivé à l'intérieur de `<KeepAlive>`, ses hooks de cycle de vie `activated` et `deactivated` seront invoqués en conséquence, fournissant une alternative à `mounted` et `unmounted`, qui ne sont pas appelés. Ceci s'applique à l'enfant direct de `<KeepAlive>` ainsi qu'à tous ses descendants.\n\n- **Exemple**\n\n Utilisation basique :\n\n ```html\n <KeepAlive>\n <component :is=\"view\"></component>\n </KeepAlive>\n ```\n\n Lorsqu'il est utilisé avec les branches `v-if` / `v-else`, il ne doit y avoir qu'un seul composant rendu à la fois :\n\n ```html\n <KeepAlive>\n <comp-a v-if=\"a > 1\"></comp-a>\n <comp-b v-else></comp-b>\n </KeepAlive>\n ```\n\n Utilisé en combinaison avec `<Transition>` :\n\n ```html\n <Transition>\n <KeepAlive>\n <component :is=\"view\"></component>\n </KeepAlive>\n </Transition>\n ```\n\n En utilisant `include` / `exclude` :\n\n ```html\n <!-- chaîne de caractères délimitée par des virgules -->\n <KeepAlive include=\"a,b\">\n <component :is=\"view\"></component>\n </KeepAlive>\n\n <!-- regex (utilisez `v-bind`) -->\n <KeepAlive :include=\"/a|b/\">\n <component :is=\"view\"></component>\n </KeepAlive>\n\n <!-- Tableau (utilisez `v-bind`) -->\n <KeepAlive :include=\"['a', 'b']\">\n <component :is=\"view\"></component>\n </KeepAlive>\n ```\n\n Utilisation avec `max` :\n\n ```html\n <KeepAlive :max=\"10\">\n <component :is=\"view\"></component>\n </KeepAlive>\n ```\n\n- **Voir aussi** [Guide - KeepAlive](https://fr.vuejs.org/guide/built-ins/keep-alive.html)\n" + }, + attributes: [ + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-components.html#keepalive" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-components.html#keepalive" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-components.html#keepalive" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-components.html#keepalive" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-components.html#keepalive" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-components.html#keepalive" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-components.html#keepalive" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-components.html#keepalive" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-components.html#keepalive" + } + ] + }, + { + name: "Teleport", + description: { + kind: "markdown", + value: "\nRend le contenu de son slot à une autre partie du DOM.\n\n- **Props :**\n\n ```ts\n interface TeleportProps {\n /**\n * Requis. Spécifie le conteneur cible.\n * Peut être un sélecteur ou un élément.\n */\n to: string | HTMLElement\n /**\n * S'il vaut `true`, le contenu restera à son emplacement\n * original au lieu d'être déplacé dans le conteneur cible.\n * Peut être changé de manière dynamique.\n */\n disabled?: boolean\n }\n ```\n\n- **Exemple**\n\n En spécifiant le conteneur cible :\n\n ```html\n <Teleport to=\"#some-id\" />\n <Teleport to=\".some-class\" />\n <Teleport to=\"[data-teleport]\" />\n ```\n\n En le désactivant de manière conditionnelle :\n\n ```html\n <Teleport to=\"#popup\" :disabled=\"displayVideoInline\">\n <video src=\"./my-movie.mp4\">\n </Teleport>\n ```\n\n- **Voir aussi** [Guide - Teleport](https://fr.vuejs.org/guide/built-ins/teleport.html)\n" + }, + attributes: [ + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-components.html#teleport" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-components.html#teleport" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-components.html#teleport" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-components.html#teleport" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-components.html#teleport" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-components.html#teleport" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-components.html#teleport" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-components.html#teleport" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-components.html#teleport" + } + ] + }, + { + name: "Suspense", + description: { + kind: "markdown", + value: "\nUtilisé pour orchestrer des dépendances asynchrones imbriquées dans un arbre de composants.\n\n- **Props :**\n\n ```ts\n interface SuspenseProps {\n timeout?: string | number\n }\n ```\n\n- **Événements :**\n\n - `@resolve`\n - `@pending`\n - `@fallback`\n\n- **Détails**\n\n `<Suspense>` accepte deux slots : le slot `#default` et le slot `#fallback`. Il affichera le contenu du slot de secours tout en rendant le slot par défaut en mémoire.\n\n S'il rencontre des dépendances asynchrones ([Composants asynchrones](https://fr.vuejs.org/guide/components/async.html) et des composants avec [`async setup()`](https://fr.vuejs.org/guide/built-ins/suspense.html#async-setup)) lors du rendu du slot par défaut, il attendra qu'elles soient toutes résolues avant d'afficher le slot par défaut.\n\n- **Voir aussi** [Guide - Suspense](https://fr.vuejs.org/guide/built-ins/suspense.html)\n" + }, + attributes: [ + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-components.html#suspense" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-components.html#suspense" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-components.html#suspense" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-components.html#suspense" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-components.html#suspense" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-components.html#suspense" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-components.html#suspense" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-components.html#suspense" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-components.html#suspense" + } + ] + }, + { + name: "component", + description: { + kind: "markdown", + value: "\nUn \"méta-composant\" pour rendre des composants ou éléments dynamiques.\n\n- **Props :**\n\n ```ts\n interface DynamicComponentProps {\n is: string | Component\n }\n ```\n\n- **Détails**\n\n Le composant à rendre est déterminé par la propriété \"is\".\n\n - Lorsque `is` est une chaîne de caractères, il peut s'agir du nom d'une balise HTML ou du nom d'un composant enregistré.\n\n - De manière alternative, `is` peut également être directement lié à la définition d'un composant.\n\n- **Exemple**\n\n Rendu des composants par nom d'enregistrement (Options API) :\n\n ```vue\n <script>\n import Foo from './Foo.vue'\n import Bar from './Bar.vue'\n\n export default {\n components: { Foo, Bar },\n data() {\n return {\n view: 'Foo'\n }\n }\n }\n </script>\n\n <template>\n <component :is=\"view\" />\n </template>\n ```\n\n Rendu de composants par définition (Composition API avec `<script setup>`) :\n\n ```vue\n <script setup>\n import Foo from './Foo.vue'\n import Bar from './Bar.vue'\n </script>\n\n <template>\n <component :is=\"Math.random() > 0.5 ? Foo : Bar\" />\n </template>\n ```\n\n Rendu d'éléments HTML :\n\n ```html\n <component :is=\"href ? 'a' : 'span'\"></component>\n ```\n\n Les [composants natifs](./built-in-components) peuvent tous être passés à `is`, mais vous devez les enregistrer si vous voulez les passer par leur nom. Par exemple :\n\n ```vue\n <script>\n import { Transition, TransitionGroup } from 'vue'\n\n export default {\n components: {\n Transition,\n TransitionGroup\n }\n }\n </script>\n\n <template>\n <component :is=\"isGroup ? 'TransitionGroup' : 'Transition'\">\n ...\n </component>\n </template>\n ```\n\n L'enregistrement n'est pas nécessaire si vous passez directement le composant à `is` plutôt que son nom, par exemple dans `<script setup>`.\n\n Si `v-model` est utilisée sur une balise `<component>`, le compilateur de templates le transformera en une prop `modelValue` et un écouteur d'événements `update:modelValue`, comme il le ferait pour tout autre composant. Cependant, cela ne sera pas compatible avec les éléments HTML natifs, tels que `<input>` ou `<select>`. Par conséquent, l'utilisation de `v-model` avec un élément natif créé dynamiquement ne fonctionnera pas :\n\n ```vue\n <script setup>\n import { ref } from 'vue'\n\n const tag = ref('input')\n const username = ref('')\n </script>\n\n <template>\n <!-- Cela ne fonctionnera pas car \"input\" est un élément HTML natif. -->\n <component :is=\"tag\" v-model=\"username\" />\n </template>\n ```\n\n En pratique, ce cas de figure n'est pas courant car les champs de formulaire natifs sont généralement enveloppés dans des composants dans les applications réelles. Si vous avez besoin d'utiliser directement un élément natif, vous pouvez diviser manuellement le \"v-model\" en un attribut et un événement.\n\n- **Voir aussi** [Composants dynamiques](https://fr.vuejs.org/guide/essentials/component-basics.html#dynamic-components)\n" + }, + attributes: [ + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-special-elements.html#component" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-special-elements.html#component" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-special-elements.html#component" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-special-elements.html#component" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-special-elements.html#component" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-special-elements.html#component" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-special-elements.html#component" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-special-elements.html#component" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-special-elements.html#component" + } + ] + }, + { + name: "slot", + description: { + kind: "markdown", + value: "\nIndique l'emplacement du contenu d'un slot dans les templates.\n\n- **Props :**\n\n ```ts\n interface SlotProps {\n /**\n * Toutes les props passées à <slot> à passer comme arguments\n * aux slots scopés\n */\n [key: string]: any\n /**\n * Réservé pour spécifier le nom du slot.\n */\n name?: string\n }\n ```\n\n- **Détails**\n\n L'élément `<slot>` peut utiliser l'attribut `name` pour spécifier un nom de slot. Si aucun `name` n'est spécifié, l'élément rendra le slot par défaut. Les attributs supplémentaires passés à l'élément slot seront passés comme des props de slot au slot scopé défini dans le parent.\n\n L'élément lui-même sera remplacé par le contenu du slot correspondant.\n\n Les éléments `<slot>` dans les templates Vue sont compilés en JavaScript, ils ne doivent donc pas être confondus avec les [éléments `<slot>` natifs](https://developer.mozilla.org/fr/docs/Web/HTML/Element/slot).\n\n- **Voir aussi** [Composant - Slots](https://fr.vuejs.org/guide/components/slots.html)\n" + }, + attributes: [ + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-special-elements.html#slot" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-special-elements.html#slot" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-special-elements.html#slot" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-special-elements.html#slot" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-special-elements.html#slot" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-special-elements.html#slot" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-special-elements.html#slot" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-special-elements.html#slot" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-special-elements.html#slot" + } + ] + }, + { + name: "template", + description: { + kind: "markdown", + value: "\nLa balise `<template>` est utilisée comme placeholder lorsque nous voulons utiliser une directive native sans rendre un élément dans le DOM.\n\n- **Détails**\n\n Le traitement spécial de `<template>` n'est déclenché que s'il est utilisé avec l'une de ces directives :\n\n - `v-if`, `v-else-if`, or `v-else`\n - `v-for`\n - `v-slot`\n \n Si aucune de ces directives n'est présente, il sera rendu comme un [élément natif `<template>`](https://developer.mozilla.org/fr/docs/Web/HTML/Element/template) à la place.\n\n Un `<template>` avec un `v-for` peut aussi avoir un attribut [`key`](https://fr.vuejs.org/api/built-in-special-attributes.html#key). Tous les autres attributs et directives seront rejetés, car ils n'ont pas de sens sans l'élément correspondant.\n\n Les composants monofichiers utilisent une [top-level `<template>` tag](https://fr.vuejs.org/api/sfc-spec.html#language-blocks) pour envelopper l'ensemble du template. Cette utilisation est distincte de l'utilisation de `<template>` décrite ci-dessus. Cette balise de haut niveau ne fait pas partie du modèle lui-même et ne supporte pas la syntaxe template, comme les directives.\n\n- **Voir aussi**\n - [Guide - `v-if` avec `<template>`](https://fr.vuejs.org/guide/essentials/conditional.html#v-if-on-template) \n - [Guide - `v-for` avec `<template>`](https://fr.vuejs.org/guide/essentials/list.html#v-for-on-template) \n - [Guide - Slots nommés](https://fr.vuejs.org/guide/components/slots.html#named-slots) \n" + }, + attributes: [ + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-special-elements.html#template" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-special-elements.html#template" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-special-elements.html#template" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-special-elements.html#template" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-special-elements.html#template" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-special-elements.html#template" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-special-elements.html#template" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-special-elements.html#template" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-special-elements.html#template" + } + ] + } +]; +const globalAttributes$f = [ + { + name: "v-text", + description: { + kind: "markdown", + value: "\nMet à jour le contenu texte d'un élément.\n\n- **Attendu :** `string`\n\n- **Détails**\n\n `v-text` fonctionne en définissant la propriété [textContent](https://developer.mozilla.org/fr/docs/Web/API/Node/textContent) de l'élément, de sorte qu'elle écrasera tout contenu existant dans l'élément. Si vous devez mettre à jour `textContent`, vous devez utiliser les [interpolations moustaches](https://fr.vuejs.org/guide/essentials/template-syntax.html#text-interpolation) à la place.\n\n- **Exemple**\n\n ```html\n <span v-text=\"msg\"></span>\n <!-- same as -->\n <span>{{msg}}</span>\n ```\n\n- **Voir aussi** [Syntaxe de template - Interpolation de texte](https://fr.vuejs.org/guide/essentials/template-syntax.html#text-interpolation)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-text" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-text" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-text" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-text" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-text" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-text" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-text" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-text" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-text" + } + ] + }, + { + name: "v-html", + description: { + kind: "markdown", + value: "\nMet à jour [innerHTML](https://developer.mozilla.org/fr/docs/Web/API/Element/innerHTML) de l'élément.\n\n- **Attendu :** `string`\n\n- **Détails**\n\n Le contenu de `v-html` est inséré en tant qu'HTML simple - la syntaxe des templates de Vue ne sera pas traitée. Si vous vous retrouvez à essayer de composer des templates en utilisant `v-html`, essayez de repenser la solution en utilisant plutôt des composants.\n\n ::: warning Remarque sur la sécurité\n Rendre dynamiquement du HTML arbitraire sur votre site web peut être très dangereux car cela peut facilement conduire à des [attaques XSS](https://fr.wikipedia.org/wiki/Cross-site_scripting). N'utilisez `v-html` que sur du contenu de confiance et **jamais** sur du contenu fourni par l'utilisateur.\n :::\n\n Dans les [composants monofichiers](https://fr.vuejs.org/guide/scaling-up/sfc.html), les styles `scoped` ne s'appliqueront pas au contenu de `v-html`, car ce HTML n'est pas traité par le compilateur de templates de Vue. Si vous souhaitez cibler le contenu de `v-html` avec un CSS scopé, vous pouvez utiliser des [modules CSS](./sfc-css-features#css-modules) ou un élément `<style>` global supplémentaire avec une stratégie de scoping manuelle telle que BEM.\n\n- **Exemple**\n\n ```html\n <div v-html=\"html\"></div>\n ```\n\n- **Voir aussi** [Syntaxe de template - HTML brut](https://fr.vuejs.org/guide/essentials/template-syntax.html#raw-html)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-html" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-html" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-html" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-html" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-html" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-html" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-html" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-html" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-html" + } + ] + }, + { + name: "v-show", + description: { + kind: "markdown", + value: "\nFait basculer la visibilité de l'élément en fonction de la valeur évaluée à vrai ou faux de l'expression.\n\n- **Attendu :** `any`\n\n- **Détails**\n\n `v-show` fonctionne en fixant la propriété CSS `display` via des styles littéraux, et essaiera de respecter la valeur initiale `display` lorsque l'élément est visible. Elle déclenche également des transitions lorsque sa condition change.\n\n- **Voir aussi** [Rendu conditionnel - v-show](https://fr.vuejs.org/guide/essentials/conditional.html#v-show)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-show" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-show" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-show" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-show" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-show" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-show" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-show" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-show" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-show" + } + ] + }, + { + name: "v-if", + description: { + kind: "markdown", + value: "\nRend conditionnellement un élément ou un fragment de template en fonction de la valeur de l'expression, évaluée à vrai ou faux.\n\n- **Attendu :** `any`\n\n- **Détails**\n\n Lorsqu'un élément comportant `v-if` est activé / désactivé, l'élément et les directives / composants qu'il contient sont détruits et reconstruits. Si la condition initiale est fausse, le contenu interne ne sera pas rendu du tout.\n\n Peut être utilisée sur `<template>` pour désigner un bloc conditionnel contenant uniquement du texte ou plusieurs éléments.\n\n Cette directive déclenche des transitions lorsque sa condition change.\n\n Lorsqu'elles sont utilisées ensemble, `v-if' a une priorité plus élevée que `v-for'. Il est déconseillé d'utiliser ces deux directives ensemble sur un même élément - voir le [guide du rendu de liste](https://fr.vuejs.org/guide/essentials/list.html#v-for-with-v-if) pour plus de détails.\n\n- **Voir aussi** [Rendu conditionnel - v-if](https://fr.vuejs.org/guide/essentials/conditional.html#v-if)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-if" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-if" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-if" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-if" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-if" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-if" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-if" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-if" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-if" + } + ] + }, + { + name: "v-else", + valueSet: "v", + description: { + kind: "markdown", + value: "\nReprésente le bloc \"else\" pour `v-if` ou une chaîne `v-if` / `v-else-if`.\n\n- **N'attend pas d'expression**\n\n- **Détails**\n\n - Restriction : l'élément frère précédent doit posséder `v-if` ou `v-else-if`.\n\n - Peut être utilisée sur `<template>` pour désigner un bloc conditionnel contenant uniquement du texte ou plusieurs éléments.\n\n- **Exemple**\n\n ```html\n <div v-if=\"Math.random() > 0.5\">\n Now you see me\n </div>\n <div v-else>\n Now you don't\n </div>\n ```\n\n- **Voir aussi** [Rendu conditionnel - v-else](https://fr.vuejs.org/guide/essentials/conditional.html#v-else)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-else" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-else" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-else" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-else" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-else" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-else" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-else" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-else" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-else" + } + ] + }, + { + name: "v-else-if", + description: { + kind: "markdown", + value: "\nDésigne le bloc \"else if\" pour `v-if`. Peut être chaîné.\n\n- **Attendu :** `any`\n\n- **Détails**\n\n - Restriction : l'élément frère précédent doit avoir `v-if` ou `v-else-if`.\n\n - Peut être utilisé sur `<template>` pour désigner un bloc conditionnel contenant uniquement du texte ou plusieurs éléments.\n\n- **Exemple**\n\n ```html\n <div v-if=\"type === 'A'\">\n A\n </div>\n <div v-else-if=\"type === 'B'\">\n B\n </div>\n <div v-else-if=\"type === 'C'\">\n C\n </div>\n <div v-else>\n Not A/B/C\n </div>\n ```\n\n- **Voir aussi** [Rendu conditionnel - v-else-if](https://fr.vuejs.org/guide/essentials/conditional.html#v-else-if)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-else-if" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-else-if" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-else-if" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-else-if" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-else-if" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-else-if" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-else-if" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-else-if" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-else-if" + } + ] + }, + { + name: "v-for", + description: { + kind: "markdown", + value: "\nRend l'élément ou le bloc d'un template plusieurs fois en fonction des données sources.\n\n- **Attendu :** `Array | Object | number | string | Iterable`\n\n- **Détails**\n\n La valeur de la directive doit utiliser la syntaxe spéciale `alias in expression` pour fournir un alias pour l'élément courant sur lequel on itère :\n\n ```html\n <div v-for=\"item in items\">\n {{ item.text }}\n </div>\n ```\n\n De manière alternative, vous pouvez également spécifier un alias pour l'index (ou la clé si elle est utilisée sur un objet) :\n\n ```html\n <div v-for=\"(item, index) in items\"></div>\n <div v-for=\"(value, key) in object\"></div>\n <div v-for=\"(value, name, index) in object\"></div>\n ```\n\n Le comportement par défaut de `v-for` essaiera de corriger les éléments en place sans les déplacer. Pour forcer la réorganisation des éléments, vous devez fournir un indice d'ordre avec l'attribut spécial `key` :\n\n ```html\n <div v-for=\"item in items\" :key=\"item.id\">\n {{ item.text }}\n </div>\n ```\n\n `v-for` peut également fonctionner sur les valeurs qui implémentent le [protocole d'itération](https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Iteration_protocols#The_iterable_protocol), y compris les `Map` et `Set` natifs.\n\n- **Voir aussi**\n - [Rendu de liste](https://fr.vuejs.org/guide/essentials/list.html)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-for" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-for" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-for" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-for" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-for" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-for" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-for" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-for" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-for" + } + ] + }, + { + name: "v-on", + description: { + kind: "markdown", + value: "\nAttache un écouteur d'événements à l'élément.\n\n- **Raccourci :** `@`\n\n- **Attendu :** `Function | Inline Statement | Object (sans argument)`\n\n- **Argument :** `event` (optionnel lors de l'utilisation de la syntaxe objet)\n\n- **Modificateurs**\n\n - `.stop` - appelle `event.stopPropagation()`.\n - `.prevent` - appelle `event.preventDefault()`.\n - `.capture` - ajoute un écouteur d'événements en mode capture.\n - `.self` - ne déclenche le gestionnaire que si l'événement a été envoyé par cet élément.\n - `.{keyAlias}` - ne déclenche le gestionnaire que sur certaines clés.\n - `.once` - déclenche le gestionnaire au moins une fois.\n - `.left` - ne déclenche le gestionnaire que pour les événements liés au bouton gauche de la souris.\n - `.right` - ne déclenche le gestionnaire que pour les événements liés au bouton droit de la souris.\n - `.middle` - ne déclenche le gestionnaire que pour les événements liés au bouton du milieu de la souris.\n - `.passive` - attache un événement DOM avec `{ passive : true }`.\n\n- **Détails**\n\n Le type d'événement est indiqué par l'argument. L'expression peut être un nom de méthode, une déclaration littérale, ou omise si des modificateurs sont présents.\n\n Lorsqu'elle est utilisée sur un élément normal, elle écoute uniquement les [**événements natifs du DOM**](https://developer.mozilla.org/fr/docs/Web/Events). Lorsqu'elle est utilisée sur un composant d'éléments personnalisés, elle écoute les **événements personnalisés** émis sur ce composant enfant.\n\n Lorsqu'elle écoute les événements natifs du DOM, la méthode reçoit l'événement natif comme seul argument. Si vous utilisez une déclaration en ligne, la déclaration a accès à la propriété spéciale `$event` : `v-on:click=\"handle('ok', $event)\"`.\n\n `v-on` supporte également la liaison à un objet de paires événement / écouteur sans argument. Notez que lorsque vous utilisez la syntaxe objet, elle ne supporte aucun modificateur.\n\n- **Exemple**\n\n ```html\n <!-- méthode gestionnaire -->\n <button v-on:click=\"doThis\"></button>\n\n <!-- événement dynamique -->\n <button v-on:[event]=\"doThis\"></button>\n\n <!-- expression littérale -->\n <button v-on:click=\"doThat('hello', $event)\"></button>\n\n <!-- raccourci -->\n <button @click=\"doThis\"></button>\n\n <!-- raccourci d'un événement dynamique -->\n <button @[event]=\"doThis\"></button>\n\n <!-- arrête la propagation -->\n <button @click.stop=\"doThis\"></button>\n\n <!-- empêche le comportement par défaut -->\n <button @click.prevent=\"doThis\"></button>\n\n <!-- empêche le comportement par défaut sans expression -->\n <form @submit.prevent></form>\n\n <!-- modificateurs enchaînés -->\n <button @click.stop.prevent=\"doThis\"></button>\n\n <!-- modificateur de clé en utilisant keyAlias -->\n <input @keyup.enter=\"onEnter\" />\n\n <!-- l'événement de clic sera déclenché seulement une fois -->\n <button v-on:click.once=\"doThis\"></button>\n\n <!-- syntaxe objet -->\n <button v-on=\"{ mousedown: doThis, mouseup: doThat }\"></button>\n ```\n\n Écoute des événements personnalisés sur un composant enfant (le gestionnaire est appelé lorsque \"my-event\" est émis sur l'enfant) :\n\n ```html\n <MyComponent @my-event=\"handleThis\" />\n\n <!-- expression en ligne -->\n <MyComponent @my-event=\"handleThis(123, $event)\" />\n ```\n\n- **Voir aussi**\n - [Gestion d'événement](https://fr.vuejs.org/guide/essentials/event-handling.html)\n - [Composants - Événements personnalisés](https://fr.vuejs.org/guide/essentials/component-basics.html#listening-to-events)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-on" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-on" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-on" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-on" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-on" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-on" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-on" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-on" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-on" + } + ] + }, + { + name: "v-bind", + description: { + kind: "markdown", + value: "\nLie dynamiquement un ou plusieurs attributs, ou une prop d'un composant à une expression.\n\n- **Raccourci :** `:` ou `.` (lorsqu'on utilise le modificateur `.prop`)\n\n- **Attendu :** `any (avec argument) | Object (sans argument)`\n\n- **Argument :** `attrOrProp (optionnel)`\n\n- **Modificateurs**\n\n - `.camel` - transforme le nom de l'attribut kebab-case en camelCase.\n - `.prop` - force une liaison à être définie comme une propriété du DOM. <sup class=\"vt-badge\">3.2+</sup>\n - `.attr` - force une liaison à être définie comme un attribut du DOM. <sup class=\"vt-badge\">3.2+</sup>\n\n- **Utilisation :**\n\n Lorsqu'elle est utilisée pour lier l'attribut `class` ou `style`, `v-bind` supporte des types de valeurs supplémentaires comme Array ou Objects. Voir la section du guide lié ci-dessous pour plus de détails.\n\n Lors de la mise en place d'une liaison sur un élément, Vue va vérifier par défaut si l'élément a la clé définie comme une propriété en faisant une vérification de l'opérateur `in`. Si la propriété est définie, Vue définira la valeur comme une propriété du DOM au lieu d'un attribut. Cela devrait fonctionner dans la plupart des cas, mais vous pouvez outrepasser ce comportement en utilisant explicitement les modificateurs `.prop` ou `.attr`. Cela est parfois nécessaire, notamment lorsque vous [travaillez avec des éléments personnalisés](https://fr.vuejs.org/guide/extras/web-components.html#passing-dom-properties).\n\n Lorsqu'elle est utilisée pour lier les props du composant, la prop doit être correctement déclarée dans le composant enfant.\n\n Lorsqu'elle est utilisée sans argument, elle peut être utilisée pour lier un objet contenant des paires nom-valeur d'attributs.\n\n- **Exemple**\n\n ```html\n <!-- lie un attribut -->\n <img v-bind:src=\"imageSrc\" />\n\n <!-- nom d'attribut dynamique -->\n <button v-bind:[key]=\"value\"></button>\n\n <!-- raccourci -->\n <img :src=\"imageSrc\" />\n\n <!-- raccourci d'un nom d'attribut dynamique -->\n <button :[key]=\"value\"></button>\n\n <!-- avec une concaténation de chaînes de caractères en ligne -->\n <img :src=\"'/path/to/images/' + fileName\" />\n\n <!-- liaison de classe -->\n <div :class=\"{ red: isRed }\"></div>\n <div :class=\"[classA, classB]\"></div>\n <div :class=\"[classA, { classB: isB, classC: isC }]\"></div>\n\n <!-- liaison de style -->\n <div :style=\"{ fontSize: size + 'px' }\"></div>\n <div :style=\"[styleObjectA, styleObjectB]\"></div>\n\n <!-- liaison d'un objet d'attributs -->\n <div v-bind=\"{ id: someProp, 'other-attr': otherProp }\"></div>\n\n <!-- liaison de prop. \"prop\" doit être déclaré dans le composant enfant. -->\n <MyComponent :prop=\"someThing\" />\n\n <!-- transmet les props du parent en commun avec un composant enfant -->\n <MyComponent v-bind=\"$props\" />\n\n <!-- XLink -->\n <svg><a :xlink:special=\"foo\"></a></svg>\n ```\n\n Le modificateur `.prop` a également un raccourci dédié, `.` :\n\n ```html\n <div :someProperty.prop=\"someObject\"></div>\n\n <!-- équivalent à -->\n <div .someProperty=\"someObject\"></div>\n ```\n\n Le modificateur `.camel` permet de formatter un nom d'attribut `v-bind` en camelCase lors de l'utilisation de templates à l'intérieur du DOM, par exemple l'attribut SVG `viewBox` :\n\n ```html\n <svg :view-box.camel=\"viewBox\"></svg>\n ```\n\n `.camel` n'est pas nécessaire si vous utilisez des templates en chaînes de caractères, ou si vous pré-compilez le template avec un outil de build.\n\n- **Voir aussi**\n - [Liaison de classes et de styles](https://fr.vuejs.org/guide/essentials/class-and-style.html)\n - [Composant - Détails sur le passage de props](https://fr.vuejs.org/guide/components/props.html#prop-passing-details)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-bind" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-bind" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-bind" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-bind" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-bind" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-bind" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-bind" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-bind" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-bind" + } + ] + }, + { + name: "v-model", + description: { + kind: "markdown", + value: "\nCrée une liaison bidirectionnelle sur un élément de saisie de formulaire ou un composant.\n\n- **Attendu :** varie en fonction de la valeur de l'élément d'entrée du formulaire ou de la sortie des composants\n\n- **Limitée à :**\n\n - `<input>`\n - `<select>`\n - `<textarea>`\n - composants\n\n- **Modificateurs**\n\n - [`.lazy`](https://fr.vuejs.org/guide/essentials/forms.html#lazy) - écoute les événements `change` au lieu de `input`.\n - [`.number`](https://fr.vuejs.org/guide/essentials/forms.html#number) - convertit une entrée valide en chaînes de caractères en nombres\n - [`.trim`](https://fr.vuejs.org/guide/essentials/forms.html#trim) - élague l'entrée\n\n- **Voir aussi**\n\n - [Liaisons des entrées d'un formulaire](https://fr.vuejs.org/guide/essentials/forms.html)\n - [Événements du composant - Utilisation avec `v-model`](https://fr.vuejs.org/guide/components/v-model.html)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-model" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-model" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-model" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-model" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-model" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-model" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-model" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-model" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-model" + } + ] + }, + { + name: "v-slot", + description: { + kind: "markdown", + value: "\nDésigne les slots nommés ou les slots scopés qui s'attendent à recevoir des props.\n\n- **Raccourci :** `#`\n\n- **Attendu :** Une expression JavaScript valide en tant qu'argument de fonction, y compris concernant la déstructuration. Facultatif - uniquement nécessaire si l'on s'attend à ce que des props soient passés au slot.\n\n- **Argument :** nom du slot (facultatif, la valeur par défaut est `default`)\n\n- **Limitée à :**\n\n - `<template>`\n - [composants](https://fr.vuejs.org/guide/components/slots.html#scoped-slots) (pour un seul slot par défaut avec des props)\n\n- **Exemple**\n\n ```html\n <!-- Slots nommés -->\n <BaseLayout>\n <template v-slot:header>\n Header content\n </template>\n\n <template v-slot:default>\n Default slot content\n </template>\n\n <template v-slot:footer>\n Footer content\n </template>\n </BaseLayout>\n\n <!-- Slot nommé recevant des props -->\n <InfiniteScroll>\n <template v-slot:item=\"slotProps\">\n <div class=\"item\">\n {{ slotProps.item.text }}\n </div>\n </template>\n </InfiniteScroll>\n\n <!-- Slot par défaut recevant des props, via la déstructuration -->\n <Mouse v-slot=\"{ x, y }\">\n Mouse position: {{ x }}, {{ y }}\n </Mouse>\n ```\n\n- **Voir aussi**\n - [Composants - Slots](https://fr.vuejs.org/guide/components/slots.html)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-slot" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-slot" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-slot" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-slot" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-slot" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-slot" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-slot" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-slot" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-slot" + } + ] + }, + { + name: "v-pre", + description: { + kind: "markdown", + value: "\nIgnore la compilation pour cet élément et tous ses enfants.\n\n- **N'attend pas d'expression**\n\n- **Détails**\n\n À l'intérieur de l'élément contenant `v-pre`, toute la syntaxe du template Vue sera préservée et rendue telle quelle. Le cas d'utilisation le plus courant est l'affichage brut des balises moustaches.\n\n- **Exemple**\n\n ```html\n <span v-pre>{{ this will not be compiled }}</span>\n ```\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-pre" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-pre" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-pre" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-pre" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-pre" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-pre" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-pre" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-pre" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-pre" + } + ] + }, + { + name: "v-once", + description: { + kind: "markdown", + value: "\nRend l'élément et le composant une seule fois, et ignore les mises à jour futures.\n\n- **N'attend pas d'expression**\n\n- **Détails**\n\n Lors des rendus suivants, l'élément/composant et tous ses enfants seront traités comme du contenu statique et ignorés. Cela peut être utilisé pour optimiser les performances de mise à jour.\n\n ```html\n <!-- élément simple -->\n <span v-once>This will never change: {{msg}}</span>\n <!-- l'élément a des enfants -->\n <div v-once>\n <h1>comment</h1>\n <p>{{msg}}</p>\n </div>\n <!-- composant -->\n <MyComponent v-once :comment=\"msg\"></MyComponent>\n <!-- directive `v-for` -->\n <ul>\n <li v-for=\"i in list\" v-once>{{i}}</li>\n </ul>\n ```\n\n Depuis la version 3.2, vous pouvez également mémoriser une partie du template avec des conditions d'invalidation en utilisant [`v-memo`](#v-memo).\n\n- **Voir aussi**\n - [Syntaxe de la liaison bidirectionnelle - interpolations](https://fr.vuejs.org/guide/essentials/template-syntax.html#text-interpolation)\n - [v-memo](#v-memo)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-once" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-once" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-once" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-once" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-once" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-once" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-once" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-once" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-once" + } + ] + }, + { + name: "v-memo", + description: { + kind: "markdown", + value: "\n- **Attendu :** `any[]`\n\n- **Détails**\n\n Mémorise une sous-arborescence du template. Peut être utilisée à la fois sur les éléments et les composants. La directive attend un tableau de longueur connue composé de valeurs de dépendances à comparer pour la mémorisation. Si toutes les valeurs du tableau sont identiques à celles du dernier rendu, les mises à jour de l'ensemble du sous-arbre seront ignorées. Par exemple :\n\n ```html\n <div v-memo=\"[valueA, valueB]\">\n ...\n </div>\n ```\n\n Lors du rendu du composant, si `valueA` et `valueB` restent les mêmes, toutes les mises à jour de cette `<div>` et de ses enfants seront ignorées. En fait, même la création du VNode du DOM virtuel sera ignorée puisque la copie mémorisée de la sous-arborescence peut être réutilisée.\n\n Il est important de spécifier le tableau de mémorisation correctement, sinon nous pourrions sauter des mises à jour qui devraient normalement être appliquées. `v-memo` avec un tableau de dépendances vide (`v-memo=\"[]\"`) serait fonctionnellement équivalent à `v-once`.\n\n **Utilisation avec `v-for`**\n\n `v-memo` est fourni uniquement pour des micro-optimisations dans des scénarios de performances critiques et devrait être rarement utilisée. Le cas le plus courant où cela peut s'avérer utile est lors du rendu de grandes listes `v-for` (où `length > 1000`) :\n\n ```html\n <div v-for=\"item in list\" :key=\"item.id\" v-memo=\"[item.id === selected]\">\n <p>ID: {{ item.id }} - selected: {{ item.id === selected }}</p>\n <p>...more child nodes</p>\n </div>\n ```\n\n Lorsque l'état `selected` du composant change, une grande quantité de VNodes sera créée même si la plupart des éléments restent exactement les mêmes. L'utilisation de `v-memo` ici consiste essentiellement à dire \"met à jour cet élément seulement s'il est passé de non sélectionné à sélectionné, ou vice-versa\". Cela permet à chaque élément non affecté de réutiliser son précédent VNode et d'éviter de changer entièrement. Notez que nous n'avons pas besoin d'inclure `item.id` dans le tableau de dépendances des mémos ici puisque Vue le déduit automatiquement à partir de `:key`.\n\n :::warning\n Lorsque vous utilisez les directives `v-memo` avec `v-for`, assurez-vous qu'elles sont utilisées sur le même élément. **`v-memo` ne fonctionne pas à l'intérieur de `v-for`.**\n :::\n\n `v-memo` peut également être utilisée sur les composants pour empêcher manuellement les mises à jour non désirées dans certains cas limites où la vérification de la mise à jour du composant enfant n'est pas optimisée. Mais une fois de plus, il est de la responsabilité du développeur de spécifier des tableaux de dépendances corrects pour éviter d'ignorer des mises à jour nécessaires.\n\n- **Voir aussi**\n - [v-once](#v-once)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-memo" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-memo" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-memo" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-memo" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-memo" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-memo" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-memo" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-memo" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-memo" + } + ] + }, + { + name: "v-cloak", + description: { + kind: "markdown", + value: "\nUtilisée pour cacher un template non compilé jusqu'à ce qu'il soit prêt.\n\n- **N'attend pas d'expression**\n\n- **Détails**\n\n **Cette directive n'est nécessaire que dans les configurations sans étape de build.**\n\n Lors de l'utilisation de templates à l'intérieur du DOM, il peut y avoir un \"flash de templates non compilés\" : l'utilisateur peut voir des balises moustaches brutes jusqu'à ce que le composant monté les remplace par du contenu rendu.\n\n `v-cloak` restera sur l'élément jusqu'à ce que l'instance du composant associé soit montée. Combiné à des règles CSS telles que `[v-cloak] { display : none }`, elle peut être utilisée pour masquer les templates bruts jusqu'à ce que le composant soit prêt.\n\n- **Exemple**\n\n ```css\n [v-cloak] {\n display: none;\n }\n ```\n\n ```html\n <div v-cloak>\n {{ message }}\n </div>\n ```\n\n La `<div>` ne sera pas visible tant que la compilation n'est pas terminée.\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-cloak" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-cloak" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-cloak" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-cloak" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-cloak" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-cloak" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-cloak" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-cloak" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-cloak" + } + ] + }, + { + name: "key", + description: { + kind: "markdown", + value: "\nL'attribut spécial `key` est principalement utilisé comme une indication aidant l'algorithme du DOM virtuel de Vue à identifier les VNodes lors de la comparaison de la nouvelle et de l'ancienne liste de nœuds.\n\n- **Attendu :** `number | string | symbol`\n\n- **Détails**\n\n Sans clés, Vue utilise un algorithme qui minimise le mouvement des éléments et essaie de remplacer/réutiliser les éléments du même type déjà en place autant que possible. Avec des clés, il réorganisera les éléments en fonction du changement d'ordre des clés, et les éléments dont les clés ne sont plus présentes seront toujours supprimés / détruits.\n\n Les clés des enfants d'un même parent doivent être **uniques**. Les clés dupliquées entraîneront des erreurs de rendu.\n\n Le cas d'utilisation le plus courant est en combinaison avec `v-for` :\n\n ```html\n <ul>\n <li v-for=\"item in items\" :key=\"item.id\">...</li>\n </ul>\n ```\n\n Elle peut également être utilisée pour forcer le remplacement d'un élément/composant au lieu de le réutiliser. Cela peut être utile lorsque vous voulez :\n\n - Déclencher correctement les hooks de cycle de vie d'un composant\n - Déclencher des transitions\n\n Par exemple :\n\n ```html\n <transition>\n <span :key=\"text\">{{ text }}</span>\n </transition>\n ```\n\n Quand `text` change, le `<span>` sera toujours remplacé au lieu d'être corrigé, donc une transition sera déclenchée.\n\n- **Voir aussi** [Guide - Rendu de liste - Maintenir l'état avec `key`](https://fr.vuejs.org/guide/essentials/list.html#maintaining-state-with-key)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-special-attributes.html#key" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-special-attributes.html#key" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-special-attributes.html#key" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-special-attributes.html#key" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-special-attributes.html#key" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-special-attributes.html#key" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-special-attributes.html#key" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-special-attributes.html#key" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-special-attributes.html#key" + } + ] + }, + { + name: "ref", + description: { + kind: "markdown", + value: "\nDésigne une [ref du template](https://fr.vuejs.org/guide/essentials/template-refs.html).\n\n- **Attendu :** `string | Function`\n\n- **Détails**\n\n `ref` est utilisée pour enregistrer une référence à un élément ou à un composant enfant.\n\n Dans l'Options API, la référence sera enregistrée sous l'objet `this.$refs` du composant :\n\n ```html\n <!-- stockée sous this.$refs.p -->\n <p ref=\"p\">hello</p>\n ```\n\n Dans la Composition API, la référence sera stockée dans une ref avec le nom correspondant :\n\n ```vue\n <script setup>\n import { ref } from 'vue'\n\n const p = ref()\n </script>\n\n <template>\n <p ref=\"p\">hello</p>\n </template>\n ```\n\n Si elle est utilisée sur un élément simple du DOM, la référence sera cet élément ; si elle est utilisée sur un composant enfant, la référence sera l'instance du composant enfant.\n\n De manière alternative, `ref` peut accepter une valeur de fonction qui fournit un contrôle total sur l'endroit où la référence sera stockée :\n\n ```html\n <ChildComponent :ref=\"(el) => child = el\" />\n ```\n\n Une remarque importante concernant le timing de l'enregistrement des refs : comme les refs elles-mêmes sont créées à la suite de la fonction de rendu, vous devez attendre que le composant soit monté avant d'y accéder.\n\n `this.$refs` est également non réactive, vous ne devez donc pas l'utiliser dans les templates pour la liaison de données.\n\n- **Voir aussi**\n - [Guide - Template Refs](https://fr.vuejs.org/guide/essentials/template-refs.html)\n - [Guide - Typer les refs du template](https://fr.vuejs.org/guide/typescript/composition-api.html#typing-template-refs) <sup class=\"vt-badge ts\" />\n - [Guide - Typer les refs du template d'un composant](https://fr.vuejs.org/guide/typescript/composition-api.html#typing-component-template-refs) <sup class=\"vt-badge ts\" />\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-special-attributes.html#ref" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-special-attributes.html#ref" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-special-attributes.html#ref" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-special-attributes.html#ref" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-special-attributes.html#ref" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-special-attributes.html#ref" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-special-attributes.html#ref" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-special-attributes.html#ref" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-special-attributes.html#ref" + } + ] + }, + { + name: "is", + description: { + kind: "markdown", + value: "\n Utilisé pour lier les [composants dynamiques](https://fr.vuejs.org/guide/essentials/component-basics.html#dynamic-components).\n\n- **Attendu :** `string | Component`\n\n- **Utilisation sur des éléments natifs** <sup class=\"vt-badge\">3.1+</sup>\n\n Lorsque l'attribut \"is\" est utilisé sur un élément HTML natif, il sera interprété comme un [élément natif personnalisé](https://html.spec.whatwg.org/multipage/custom-elements.html#custom-elements-customized-builtin-example), qui est une fonctionnalité native de la plate-forme Web.\n\n Il existe cependant un cas d'utilisation où vous pouvez avoir besoin que Vue remplace un élément natif par un composant Vue, comme expliqué dans [Mises en garde concernant l'analyse du template DOM](https://fr.vuejs.org/guide/essentials/component-basics.html#in-dom-template-parsing-caveats). Vous pouvez préfixer la valeur de l'attribut `is` avec `vue:` pour que Vue rende l'élément comme un composant Vue :\n\n ```html\n <table>\n <tr is=\"vue:my-row-component\"></tr>\n </table>\n ```\n\n- **Voir aussi**\n\n - [Éléments spéciaux natifs - `<component>`](https://fr.vuejs.org/api/built-in-special-elements.html#component)\n - [Composants dynamiques](https://fr.vuejs.org/guide/essentials/component-basics.html#dynamic-components)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-special-attributes.html#is" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-special-attributes.html#is" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-special-attributes.html#is" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-special-attributes.html#is" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-special-attributes.html#is" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-special-attributes.html#is" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-special-attributes.html#is" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-special-attributes.html#is" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-special-attributes.html#is" + } + ] + } +]; +var require$$5 = { + version: version$f, + tags: tags$8, + globalAttributes: globalAttributes$f +}; + +const version$e = 1.1; +const tags$7 = [ + { + name: "Transition", + description: { + kind: "markdown", + value: "\n**単一の**要素またはコンポーネントにアニメーションのトランジション効果を提供します。\n\n- **props**\n\n ```ts\n interface TransitionProps {\n /**\n * トランジションの CSS クラス名を自動生成するために使用します。\n * 例: `name: 'fade'` は `.fade-enter` や `.fade-enter-active`\n * などに自動展開されます。\n */\n name?: string\n /**\n * CSS のトランジションクラスを適用するかどうか。\n * デフォルト: true\n */\n css?: boolean\n /**\n * トランジション終了タイミングを決定するために待機する、\n * トランジションイベントの種類を指定します。\n * デフォルトの動作は、持続時間がより長い方のタイプを\n * 自動検出します。\n */\n type?: 'transition' | 'animation'\n /**\n * トランジションの持続時間を明示的に指定します。\n * デフォルトの動作は、ルートトランジション要素の最初の\n * `transitionend` または `animationend` イベントを待ちます。\n */\n duration?: number | { enter: number; leave: number }\n /**\n * leaving/entering トランジションのタイミングシーケンスを制御。\n * デフォルトの動作は同時です。\n */\n mode?: 'in-out' | 'out-in' | 'default'\n /**\n * 初回レンダリング時にトランジションを適用するかどうか。\n * デフォルト: false\n */\n appear?: boolean\n\n /**\n * トランジションクラスをカスタマイズするための props。\n * テンプレートでは kebab-case を使用(例: enter-from-class=\"xxx\")\n */\n enterFromClass?: string\n enterActiveClass?: string\n enterToClass?: string\n appearFromClass?: string\n appearActiveClass?: string\n appearToClass?: string\n leaveFromClass?: string\n leaveActiveClass?: string\n leaveToClass?: string\n }\n ```\n\n- **イベント**\n\n - `@before-enter`\n - `@before-leave`\n - `@enter`\n - `@leave`\n - `@appear`\n - `@after-enter`\n - `@after-leave`\n - `@after-appear`\n - `@enter-cancelled`\n - `@leave-cancelled`(`v-show` のみ)\n - `@appear-cancelled`\n\n- **例**\n\n シンプルな要素:\n\n ```html\n <Transition>\n <div v-if=\"ok\">toggled content</div>\n </Transition>\n ```\n\n `key` 属性を変更することで強制的にトランジションさせる:\n\n ```html\n <Transition>\n <div :key=\"text\">{{ text }}</div>\n </Transition>\n ```\n\n トランジションモードと出現時のアニメーションを備えている動的コンポーネント:\n\n ```html\n <Transition name=\"fade\" mode=\"out-in\" appear>\n <component :is=\"view\"></component>\n </Transition>\n ```\n\n トランジションイベントを購読する:\n\n ```html\n <Transition @after-enter=\"onTransitionComplete\">\n <div v-show=\"ok\">toggled content</div>\n </Transition>\n ```\n\n- **参照** [`<Transition>` ガイド](https://ja.vuejs.org/guide/built-ins/transition.html)\n" + }, + attributes: [ + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-components.html#transition" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-components.html#transition" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-components.html#transition" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-components.html#transition" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-components.html#transition" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-components.html#transition" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-components.html#transition" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-components.html#transition" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-components.html#transition" + } + ] + }, + { + name: "TransitionGroup", + description: { + kind: "markdown", + value: "\nリスト内の**複数**の要素またはコンポーネントにトランジション効果を提供します。\n\n- **props**\n\n `<TransitionGroup>` は `<Transition>` と同じ props(`mode` 以外)と追加の 2 つの props を受け取ります:\n\n ```ts\n interface TransitionGroupProps extends Omit<TransitionProps, 'mode'> {\n /**\n * 未定義の場合はフラグメントとしてレンダリングされます。\n */\n tag?: string\n /**\n * 移動のトランジション中に適用される CSS クラスのカスタマイズ。\n * テンプレートでは kebab-case を使用(例: move-class=\"xxx\")\n */\n moveClass?: string\n }\n ```\n\n- **イベント**\n\n `<TransitionGroup>` は `<Transition>` と同じイベントを発行します。\n\n- **詳細**\n\n デフォルトでは、`<TransitionGroup>` はラッパー DOM 要素をレンダリングしませんが、 `tag` props によって定義できます。\n\n アニメーションが正しく動作するためには、`<transition-group>` 内のすべての子に[**一意なキーを指定**](https://ja.vuejs.org/guide/essentials/list.html#maintaining-state-with-key)する必要があることに注意してください。\n\n `<TransitionGroup>` は CSS の transform による移動トランジションに対応しています。更新後に画面上の子の位置が変化した場合、移動用の CSS クラス(`name` 属性から自動生成されるか、`move-class` props で設定)が適用されます。移動用のクラスが適用されたときに、CSS の `transform` プロパティが「トランジション可能」であれば、その要素は [FLIP テクニック](https://aerotwist.com/blog/flip-your-animations/)を使って移動先までスムーズにアニメーションします。\n\n- **例**\n\n ```html\n <TransitionGroup tag=\"ul\" name=\"slide\">\n <li v-for=\"item in items\" :key=\"item.id\">\n {{ item.text }}\n </li>\n </TransitionGroup>\n ```\n\n- **参照** [ガイド - TransitionGroup](https://ja.vuejs.org/guide/built-ins/transition-group.html)\n" + }, + attributes: [ + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-components.html#transitiongroup" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-components.html#transitiongroup" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-components.html#transitiongroup" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-components.html#transitiongroup" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-components.html#transitiongroup" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-components.html#transitiongroup" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-components.html#transitiongroup" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-components.html#transitiongroup" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-components.html#transitiongroup" + } + ] + }, + { + name: "KeepAlive", + description: { + kind: "markdown", + value: "\n動的に切り替えられる、内側のコンポーネントをキャッシュします。\n\n- **props**\n\n ```ts\n interface KeepAliveProps {\n /**\n * 指定された場合、`include` でマッチした名前の\n * コンポーネントのみがキャッシュされます。\n */\n include?: MatchPattern\n /**\n * `exclude` でマッチした名前のコンポーネントは\n * キャッシュされません。\n */\n exclude?: MatchPattern\n /**\n * キャッシュするコンポーネントインスタンスの最大数。\n */\n max?: number | string\n }\n\n type MatchPattern = string | RegExp | (string | RegExp)[]\n ```\n\n- **詳細**\n\n 動的コンポーネントをラップすると、`<KeepAlive>` は非アクティブなコンポーネントインスタンスを破棄せずにキャッシュします。\n\n `<KeepAlive>` の直接の子として、アクティブなコンポーネントのインスタンスは常に 1 つだけです。\n\n `<KeepAlive>` の内部でコンポーネントが切り替えられると、その `activated` と `deactivated` ライフサイクルフックが呼び出されます(`mounted` と `unmounted` は呼び出されず、その代わりとして提供されています)。これは `<KeepAlive>` の直接の子だけでなく、そのすべての子孫にも適用されます。\n\n- **例**\n\n 基本的な使い方:\n\n ```html\n <KeepAlive>\n <component :is=\"view\"></component>\n </KeepAlive>\n ```\n\n `v-if` / `v-else` の分岐を使用する場合、一度にレンダリングされるコンポーネントは 1 つだけである必要があります:\n\n ```html\n <KeepAlive>\n <comp-a v-if=\"a > 1\"></comp-a>\n <comp-b v-else></comp-b>\n </KeepAlive>\n ```\n\n `<Transition>` と共に使用:\n\n ```html\n <Transition>\n <KeepAlive>\n <component :is=\"view\"></component>\n </KeepAlive>\n </Transition>\n ```\n\n `include` / `exclude` の使用:\n\n ```html\n <!-- カンマ区切りの文字列 -->\n <KeepAlive include=\"a,b\">\n <component :is=\"view\"></component>\n </KeepAlive>\n\n <!-- 正規表現(`v-bind` を使用) -->\n <KeepAlive :include=\"/a|b/\">\n <component :is=\"view\"></component>\n </KeepAlive>\n\n <!-- 配列(`v-bind` を使用) -->\n <KeepAlive :include=\"['a', 'b']\">\n <component :is=\"view\"></component>\n </KeepAlive>\n ```\n\n `max` の使用:\n\n ```html\n <KeepAlive :max=\"10\">\n <component :is=\"view\"></component>\n </KeepAlive>\n ```\n\n- **参照** [ガイド - KeepAlive](https://ja.vuejs.org/guide/built-ins/keep-alive.html)\n" + }, + attributes: [ + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-components.html#keepalive" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-components.html#keepalive" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-components.html#keepalive" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-components.html#keepalive" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-components.html#keepalive" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-components.html#keepalive" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-components.html#keepalive" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-components.html#keepalive" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-components.html#keepalive" + } + ] + }, + { + name: "Teleport", + description: { + kind: "markdown", + value: "\nスロットの内容を DOM の別の場所にレンダリングします。\n\n- **props**\n\n ```ts\n interface TeleportProps {\n /**\n * 必須。ターゲットコンテナーを指定します。\n * セレクターまたは実際の要素のいずれかを指定できます。\n */\n to: string | HTMLElement\n /**\n * `true` の場合、コンテンツはターゲットコンテナーに\n * 移動せずに元の場所に残ります。\n * 動的に変更できます。\n */\n disabled?: boolean\n }\n ```\n\n- **例**\n\n ターゲットコンテナーの指定:\n\n ```html\n <Teleport to=\"#some-id\" />\n <Teleport to=\".some-class\" />\n <Teleport to=\"[data-teleport]\" />\n ```\n\n 条件によって無効化:\n\n ```html\n <Teleport to=\"#popup\" :disabled=\"displayVideoInline\">\n <video src=\"./my-movie.mp4\">\n </Teleport>\n ```\n\n- **参照** [ガイド - Teleport](https://ja.vuejs.org/guide/built-ins/teleport.html)\n" + }, + attributes: [ + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-components.html#teleport" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-components.html#teleport" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-components.html#teleport" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-components.html#teleport" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-components.html#teleport" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-components.html#teleport" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-components.html#teleport" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-components.html#teleport" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-components.html#teleport" + } + ] + }, + { + name: "Suspense", + description: { + kind: "markdown", + value: "\nコンポーネントツリー内のネストした非同期な依存関係を管理するために使用します。\n\n- **props**\n\n ```ts\n interface SuspenseProps {\n timeout?: string | number\n }\n ```\n\n- **イベント**\n\n - `@resolve`\n - `@pending`\n - `@fallback`\n\n- **詳細**\n\n `<Suspense>` は `#default` スロットと `#fallback` スロットの 2 つのスロットを受け付けます。default スロットをメモリー内にレンダリングする間、fallback スロットの内容を表示します。\n\n デフォルトスロットのレンダリング中に非同期な依存関係([非同期コンポーネント](https://ja.vuejs.org/guide/components/async.html)や [`async setup()`](https://ja.vuejs.org/guide/built-ins/suspense.html#async-setup) のコンポーネント)が発生すると、それらが全て解決するまで待ってからデフォルトスロットを表示します。\n\n- **参照** [ガイド - Suspense](https://ja.vuejs.org/guide/built-ins/suspense.html)\n" + }, + attributes: [ + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-components.html#suspense" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-components.html#suspense" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-components.html#suspense" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-components.html#suspense" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-components.html#suspense" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-components.html#suspense" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-components.html#suspense" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-components.html#suspense" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-components.html#suspense" + } + ] + }, + { + name: "component", + description: { + kind: "markdown", + value: "\n動的コンポーネントや動的な要素をレンダリングするための「メタ・コンポーネント」です。\n\n- **props**\n\n ```ts\n interface DynamicComponentProps {\n is: string | Component\n }\n ```\n\n- **詳細**\n\n 実際にレンダリングするコンポーネントは `is` props によって決定されます。\n\n - `is` が文字列の場合、HTML タグ名か、コンポーネントの登録名となります。\n\n - また、`is` はコンポーネントの定義に直接バインドもできます。\n\n- **例**\n\n 登録名によるコンポーネントのレンダリング(Options API):\n\n ```vue\n <script>\n import Foo from './Foo.vue'\n import Bar from './Bar.vue'\n\n export default {\n components: { Foo, Bar },\n data() {\n return {\n view: 'Foo'\n }\n }\n }\n </script>\n\n <template>\n <component :is=\"view\" />\n </template>\n ```\n\n 定義によるコンポーネントのレンダリング(`<script setup>` の Composition API):\n\n ```vue\n <script setup>\n import Foo from './Foo.vue'\n import Bar from './Bar.vue'\n </script>\n\n <template>\n <component :is=\"Math.random() > 0.5 ? Foo : Bar\" />\n </template>\n ```\n\n HTML 要素のレンダリング:\n\n ```html\n <component :is=\"href ? 'a' : 'span'\"></component>\n ```\n\n [ビルトインのコンポーネント](./built-in-components)はすべて `is` に渡すことができますが、名前で渡したい場合は登録しなければなりません。例えば:\n\n ```vue\n <script>\n import { Transition, TransitionGroup } from 'vue'\n\n export default {\n components: {\n Transition,\n TransitionGroup\n }\n }\n </script>\n\n <template>\n <component :is=\"isGroup ? 'TransitionGroup' : 'Transition'\">\n ...\n </component>\n </template>\n ```\n\n 例えば `<script setup>` などで、コンポーネント名ではなく、コンポーネント自体を `is` に渡す場合は、登録は必要ありません。\n\n もし `v-model` が `<component>` タグで使用された場合、テンプレートコンパイラーは他のコンポーネントと同じように、`modelValue` props と `update:modelValue` イベントリスナーに展開されます。しかし、これは `<input>` や `<select>` のようなネイティブ HTML 要素とは互換性がありません。そのため、動的に生成されるネイティブ要素に対して `v-model` を使用しても動作しません:\n\n ```vue\n <script setup>\n import { ref } from 'vue'\n\n const tag = ref('input')\n const username = ref('')\n </script>\n\n <template>\n <!-- 'input' はネイティブ HTML 要素なので、動作しません -->\n <component :is=\"tag\" v-model=\"username\" />\n </template>\n ```\n\n 実際のアプリケーションでは、ネイティブのフォームフィールドはコンポーネントでラップされるのが一般的なので、このようなエッジケースはあまりありません。もし、ネイティブ要素を直接使用する必要がある場合は、 `v-model` を属性とイベントに手動で分割できます。\n\n- **参照** [動的コンポーネント](https://ja.vuejs.org/guide/essentials/component-basics.html#dynamic-components)\n" + }, + attributes: [ + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-special-elements.html#component" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-special-elements.html#component" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-special-elements.html#component" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-special-elements.html#component" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-special-elements.html#component" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-special-elements.html#component" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-special-elements.html#component" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-special-elements.html#component" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-special-elements.html#component" + } + ] + }, + { + name: "slot", + description: { + kind: "markdown", + value: "\nテンプレート内でスロットコンテンツのアウトレットを表します。\n\n- **props**\n\n ```ts\n interface SlotProps {\n /**\n * <slot> に渡されたすべての props は、スコープ付き\n * スロットの引数として渡されます\n */\n [key: string]: any\n /**\n * スロット名を指定するために予約済み。\n */\n name?: string\n }\n ```\n\n- **詳細**\n\n `<slot>` 要素では `name` 属性を使用してスロット名を指定できます。`name` が指定されない場合は、デフォルトのスロットがレンダリングされます。slot 要素に渡された追加の属性は、親で定義されたスコープ付きスロットにスロット props として渡されます。\n\n この要素そのものは、一致したスロットの内容に置き換えられます。\n\n Vue テンプレートの `<slot>` 要素は JavaScript にコンパイルされているので、[ネイティブの `<slot>` 要素](https://developer.mozilla.org/ja/docs/Web/HTML/Element/slot)と混同しないように注意してください。\n\n- **参照** [コンポーネント - スロット](https://ja.vuejs.org/guide/components/slots.html)\n" + }, + attributes: [ + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-special-elements.html#slot" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-special-elements.html#slot" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-special-elements.html#slot" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-special-elements.html#slot" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-special-elements.html#slot" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-special-elements.html#slot" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-special-elements.html#slot" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-special-elements.html#slot" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-special-elements.html#slot" + } + ] + }, + { + name: "template", + description: { + kind: "markdown", + value: "\nDOM に要素をレンダリングせずに組み込みディレクティブを使用したい場合、`<template>` タグをプレースホルダーとして使用します。\n\n- **詳細**\n\n `<template>` の特別な処理は、以下のディレクティブと一緒に使われた場合のみ発生します:\n\n - `v-if`、`v-else-if`、または `v-else`\n - `v-for`\n - `v-slot`\n\n これらのディレクティブが存在しない場合は、代わりに[ネイティブの `<template>` 要素](https://developer.mozilla.org/ja/docs/Web/HTML/Element/template)としてレンダリングされます。\n\n `v-for` を持つ `<template>` は [`key` 属性](https://ja.vuejs.org/api/built-in-special-attributes.html#key)を持たせることができます。それ以外の属性やディレクティブは、対応する要素がなければ意味をなさないので、すべて破棄されます。\n\n 単一ファイルコンポーネントは、テンプレート全体をラップするために[トップレベルの `<template>` タグ](https://ja.vuejs.org/api/sfc-spec.html#language-blocks)を使用します。この使い方は、上記で説明した `<template>` の使い方とは別のものです。このトップレベルタグはテンプレート自体の一部ではなく、ディレクティブのようなテンプレートの構文もサポートしていません。\n\n- **参照**\n - [ガイド - `<template>` に `v-if` を適用する](https://ja.vuejs.org/guide/essentials/conditional.html#v-if-on-template)\n - [ガイド - `<template>` に `v-for` を適用する](https://ja.vuejs.org/guide/essentials/list.html#v-for-on-template)\n - [ガイド - 名前付きスロット](https://ja.vuejs.org/guide/components/slots.html#named-slots)\n" + }, + attributes: [ + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-special-elements.html#template" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-special-elements.html#template" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-special-elements.html#template" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-special-elements.html#template" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-special-elements.html#template" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-special-elements.html#template" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-special-elements.html#template" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-special-elements.html#template" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-special-elements.html#template" + } + ] + } +]; +const globalAttributes$e = [ + { + name: "v-text", + description: { + kind: "markdown", + value: "\n要素のテキスト内容を更新します。\n\n- **期待する値:** `string`\n\n- **詳細**\n\n `v-text` は要素の [textContent](https://developer.mozilla.org/ja/docs/Web/API/Node/textContent) プロパティをセットする動作なので、要素内の既存のコンテンツはすべて上書きされます。`textContent` の一部を更新する必要がある場合は、代わりに[マスタッシュ展開](https://ja.vuejs.org/guide/essentials/template-syntax.html#text-interpolation)を使用します。\n\n- **例**\n\n ```html\n <span v-text=\"msg\"></span>\n <!-- same as -->\n <span>{{msg}}</span>\n ```\n\n- **参照** [テンプレート構文 - テキスト展開](https://ja.vuejs.org/guide/essentials/template-syntax.html#text-interpolation)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-text" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-text" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-text" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-text" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-text" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-text" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-text" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-text" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-text" + } + ] + }, + { + name: "v-html", + description: { + kind: "markdown", + value: "\n要素の [innerHTML](https://developer.mozilla.org/ja/docs/Web/API/Element/innerHTML) を更新します。\n\n- **期待する値:** `string`\n\n- **詳細**\n\n `v-html` の内容は、プレーンな HTML として挿入されます - Vue テンプレートの構文は処理されません。もし、`v-html` を使ってテンプレートを構成しようとしているのであれば、代わりにコンポーネントを使うなどして解決策を見直してみてください。\n\n ::: warning セキュリティーに関する注意\n ウェブサイト上で任意の HTML を動的にレンダリングすることは、[XSS 攻撃](https://ja.wikipedia.org/wiki/%E3%82%AF%E3%83%AD%E3%82%B9%E3%82%B5%E3%82%A4%E3%83%88%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0)につながりやすいため、非常に危険です。信頼できるコンテンツにのみ `v-html` を使用し、ユーザーが提供するコンテンツには**絶対に**使用しないでください。\n :::\n\n [単一ファイルコンポーネント](https://ja.vuejs.org/guide/scaling-up/sfc.html)では、`scoped` スタイルは `v-html` 内のコンテンツには適用されません。これは、その HTML が Vue のテンプレートコンパイラーによって処理されないからです。もし `v-html` のコンテンツにスコープ付き CSS を適用したい場合は、代わりに [CSS modules](./sfc-css-features#css-modules) を使ったり、BEM などの手動スコープ戦略を持つ追加のグローバル `<style>` 要素を使用可能です。\n\n- **例**\n\n ```html\n <div v-html=\"html\"></div>\n ```\n\n- **参照** [テンプレート構文 - 生の HTML](https://ja.vuejs.org/guide/essentials/template-syntax.html#raw-html)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-html" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-html" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-html" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-html" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-html" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-html" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-html" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-html" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-html" + } + ] + }, + { + name: "v-show", + description: { + kind: "markdown", + value: "\n式の値の真偽に基づいて、要素の可視性を切り替えます。\n\n- **期待する値:** `any`\n\n- **詳細**\n\n `v-show` はインラインスタイルで `display` CSS プロパティをセットする動作で、要素が表示されている場合は `display` の初期値を尊重しようとします。また、その状態が変化したときにトランジションを引き起こします。\n\n- **参照** [条件付きレンダリング - v-show](https://ja.vuejs.org/guide/essentials/conditional.html#v-show)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-show" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-show" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-show" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-show" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-show" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-show" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-show" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-show" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-show" + } + ] + }, + { + name: "v-if", + description: { + kind: "markdown", + value: "\n式の値の真偽に基づいて、要素またはテンプレートフラグメントを条件付きでレンダリングします。\n\n- **期待する値:** `any`\n\n- **詳細**\n\n `v-if` 要素がトグルされると、要素とそれに含まれるディレクティブ/コンポーネントは破棄され、再構築されます。初期条件が falsy な場合、内部のコンテンツは全くレンダリングされません。\n\n `<template>` に使用すると、テキストのみ、または複数の要素を含む条件ブロックを表すことができます。\n\n このディレクティブは、条件が変化したときにトランジションをトリガーします。\n\n 一緒に使用した場合、 `v-if` は `v-for` よりも高い優先度を持ちます。この 2 つのディレクティブを 1 つの要素で同時に使うことはお勧めしません。詳しくは [リストレンダリングガイド](https://ja.vuejs.org/guide/essentials/list.html#v-for-with-v-if) を参照してください。\n\n- **参照** [条件付きレンダリング - v-if](https://ja.vuejs.org/guide/essentials/conditional.html#v-if)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-if" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-if" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-if" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-if" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-if" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-if" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-if" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-if" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-if" + } + ] + }, + { + name: "v-else", + valueSet: "v", + description: { + kind: "markdown", + value: "\n`v-if` または `v-if` / `v-else-if` チェーンの「else ブロック」を表します。\n\n- **式を受け取りません**\n\n- **詳細**\n\n - 制限: 直前の兄弟要素には `v-if` または `v-else-if` が必要です。\n\n - `<template>` に使用すると、テキストのみ、または複数の要素を含む条件ブロックを表すことができます。\n\n- **例**\n\n ```html\n <div v-if=\"Math.random() > 0.5\">\n Now you see me\n </div>\n <div v-else>\n Now you don't\n </div>\n ```\n\n- **参照** [条件付きレンダリング - v-else](https://ja.vuejs.org/guide/essentials/conditional.html#v-else)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-else" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-else" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-else" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-else" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-else" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-else" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-else" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-else" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-else" + } + ] + }, + { + name: "v-else-if", + description: { + kind: "markdown", + value: "\n`v-if` の「else if ブロック」を表します。連鎖させることができます。\n\n- **期待する値:** `any`\n\n- **詳細**\n\n - 制限: 直前の兄弟要素には `v-if` または `v-else-if` が必要です。\n\n - `<template>` に使用すると、テキストのみ、または複数の要素を含む条件ブロックを表すことができます。\n\n- **例**\n\n ```html\n <div v-if=\"type === 'A'\">\n A\n </div>\n <div v-else-if=\"type === 'B'\">\n B\n </div>\n <div v-else-if=\"type === 'C'\">\n C\n </div>\n <div v-else>\n Not A/B/C\n </div>\n ```\n\n- **参照** [条件付きレンダリング - v-else-if](https://ja.vuejs.org/guide/essentials/conditional.html#v-else-if)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-else-if" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-else-if" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-else-if" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-else-if" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-else-if" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-else-if" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-else-if" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-else-if" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-else-if" + } + ] + }, + { + name: "v-for", + description: { + kind: "markdown", + value: "\n元となるデータに基づいて、要素またはテンプレートブロックを複数回レンダリングします。\n\n- **期待する値:** `Array | Object | number | string | Iterable`\n\n- **詳細**\n\n ディレクティブの値は、反復処理されている現在の要素のエイリアスを提供するために、特別な構文 `エイリアス in 式` を使用する必要があります:\n\n ```html\n <div v-for=\"item in items\">\n {{ item.text }}\n </div>\n ```\n\n または、インデックス(Object で使用する場合はキー)のエイリアスも指定できます:\n\n ```html\n <div v-for=\"(item, index) in items\"></div>\n <div v-for=\"(value, key) in object\"></div>\n <div v-for=\"(value, name, index) in object\"></div>\n ```\n\n `v-for` のデフォルトの動作は、要素を移動することなく、その場でパッチを適用しようとします。強制的に要素を並べ替えるには、特別な属性 `key` で順番のヒントを指定する必要があります:\n\n ```html\n <div v-for=\"item in items\" :key=\"item.id\">\n {{ item.text }}\n </div>\n ```\n\n また、`v-for` はネイティブの `Map` や `Set` を含む、[反復処理プロトコル](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Iteration_protocols#The_iterable_protocol)を実装した値に対しても動作させることができます。\n\n- **参照**\n - [リストレンダリング](https://ja.vuejs.org/guide/essentials/list.html)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-for" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-for" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-for" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-for" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-for" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-for" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-for" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-for" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-for" + } + ] + }, + { + name: "v-on", + description: { + kind: "markdown", + value: "\n要素にイベントリスナーを追加します。\n\n- **省略記法:** `@`\n\n- **期待する値:** `Function | Inline Statement | Object (without argument)`\n\n- **引数:** `event`(オブジェクト構文を使用する場合は省略可能)\n\n- **修飾子**\n\n - `.stop` - `event.stopPropagation()` を呼び出します。\n - `.prevent` - `event.preventDefault()` を呼び出します。\n - `.capture` - キャプチャーモードでイベントリスナーを追加します。\n - `.self` - イベントがこの要素からディスパッチされた場合にのみハンドラーをトリガーします。\n - `.{keyAlias}` - 特定のキーでのみハンドラーをトリガーします。\n - `.once` - 一度だけハンドラーをトリガーします。\n - `.left` - 左ボタンのマウスイベントに対してのみ、ハンドラーをトリガーします。\n - `.right` - 右ボタンのマウスイベントに対してのみ、ハンドラーをトリガーします。\n - `.middle` - 中央ボタンのマウスイベントに対してのみ、ハンドラーをトリガーします。\n - `.passive` - DOM イベントを `{ passive: true }` で追加します。\n\n- **詳細**\n\n イベントの種類は引数で示されます。式はメソッド名かインラインステートメントで、修飾子が存在する場合は省略可能です。\n\n 通常の要素で使用する場合、[**ネイティブ DOM イベント**](https://developer.mozilla.org/ja/docs/Web/Events)のみを購読します。カスタム要素コンポーネントで使用された場合、その子コンポーネントで発行された**カスタムイベント**を購読します。\n\n ネイティブ DOM イベントを購読する場合、このメソッドは唯一の引数としてネイティブイベントを受け取ります。インラインステートメントを使用する場合、ステートメントは特別な `$event` プロパティにアクセスできます: `v-on:click=\"handle('ok', $event)\"`\n\n `v-on` は引数なしで、イベントとリスナーのペアのオブジェクトにバインドすることもサポートしています。オブジェクト構文を使用する場合、修飾子をサポートしないことに注意してください。\n\n- **例**\n\n ```html\n <!-- メソッドハンドラー -->\n <button v-on:click=\"doThis\"></button>\n\n <!-- 動的イベント -->\n <button v-on:[event]=\"doThis\"></button>\n\n <!-- インラインステートメント -->\n <button v-on:click=\"doThat('hello', $event)\"></button>\n\n <!-- 省略記法 -->\n <button @click=\"doThis\"></button>\n\n <!-- 動的イベントの省略記法 -->\n <button @[event]=\"doThis\"></button>\n\n <!-- stop propagation -->\n <button @click.stop=\"doThis\"></button>\n\n <!-- prevent default -->\n <button @click.prevent=\"doThis\"></button>\n\n <!-- 式なしで prevent default -->\n <form @submit.prevent></form>\n\n <!-- 修飾子の連鎖 -->\n <button @click.stop.prevent=\"doThis\"></button>\n\n <!-- キーのエイリアスを用いたキー修飾子 -->\n <input @keyup.enter=\"onEnter\" />\n\n <!-- 一度だけトリガーされるクリックイベント -->\n <button v-on:click.once=\"doThis\"></button>\n\n <!-- オブジェクト構文 -->\n <button v-on=\"{ mousedown: doThis, mouseup: doThat }\"></button>\n ```\n\n 子コンポーネントのカスタムイベントを購読する(子コンポーネントで \"my-event\" が発行されたときにハンドラーが呼び出される):\n\n ```html\n <MyComponent @my-event=\"handleThis\" />\n\n <!-- インラインステートメント -->\n <MyComponent @my-event=\"handleThis(123, $event)\" />\n ```\n\n- **参照**\n - [イベントハンドリング](https://ja.vuejs.org/guide/essentials/event-handling.html)\n - [コンポーネント - カスタムイベント](https://ja.vuejs.org/guide/essentials/component-basics.html#listening-to-events)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-on" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-on" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-on" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-on" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-on" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-on" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-on" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-on" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-on" + } + ] + }, + { + name: "v-bind", + description: { + kind: "markdown", + value: "\n1 つ以上の属性やコンポーネントの props を式に動的にバインドします。\n\n- **省略記法:** `:` or `.`(`.prop` 修飾子使用時)\n\n- **期待する値:** `any(引数ありの場合) | Object(引数なしの場合)`\n\n- **引数:** `attrOrProp(省略可能)`\n\n- **修飾子**\n\n - `.camel` - kebab-case の属性名を camelCase に変換します。\n - `.prop` - バインディングを DOM プロパティとして設定するよう強制します。<sup class=\"vt-badge\">3.2+</sup>\n - `.attr` - バインディングを DOM 属性として設定するよう強制します。<sup class=\"vt-badge\">3.2+</sup>\n\n- **使用法**\n\n `class` や `style` 属性をバインドする際に使用する `v-bind` は、Array や Object などの追加の値の型をサポートします。詳しくは、以下のリンク先のガイドを参照してください。\n\n 要素にバインディングを設定するとき、Vue はデフォルトで、`in` 演算子チェックを使用して、プロパティとして定義されたキーが要素にあるかどうかを確認します。プロパティが定義されている場合、Vue はその値を属性ではなく DOM プロパティとして設定します。これはほとんどの場合において有効ですが、`.prop` や `.attr` という修飾子を明示的に使用することでこの動作をオーバーライドできます。これは、特に[カスタム要素を扱う](https://ja.vuejs.org/guide/extras/web-components.html#passing-dom-properties)ときに必要になることがあります。\n\n コンポーネントの props をバインドするために使用する場合、その props は子コンポーネントで適切に宣言されている必要があります。\n\n 引数なしで使用する場合、属性の名前と値のペアを含むオブジェクトをバインドするために使用できます。\n\n- **例**\n\n ```html\n <!-- 属性をバインドする -->\n <img v-bind:src=\"imageSrc\" />\n\n <!-- 動的な属性名 -->\n <button v-bind:[key]=\"value\"></button>\n\n <!-- 省略記法 -->\n <img :src=\"imageSrc\" />\n\n <!-- 動的な属性名の省略記法 -->\n <button :[key]=\"value\"></button>\n\n <!-- インラインの文字列連結 -->\n <img :src=\"'/path/to/images/' + fileName\" />\n\n <!-- クラスのバインド -->\n <div :class=\"{ red: isRed }\"></div>\n <div :class=\"[classA, classB]\"></div>\n <div :class=\"[classA, { classB: isB, classC: isC }]\"></div>\n\n <!-- スタイルのバインド -->\n <div :style=\"{ fontSize: size + 'px' }\"></div>\n <div :style=\"[styleObjectA, styleObjectB]\"></div>\n\n <!-- 属性のオブジェクトをバインド -->\n <div v-bind=\"{ id: someProp, 'other-attr': otherProp }\"></div>\n\n <!-- props のバインド。\"prop\" は子コンポーネントで宣言する必要があります。 -->\n <MyComponent :prop=\"someThing\" />\n\n <!-- 親の props を子コンポーネントと共有するために渡す -->\n <MyComponent v-bind=\"$props\" />\n\n <!-- XLink -->\n <svg><a :xlink:special=\"foo\"></a></svg>\n ```\n\n `.prop` 修飾子には、専用の短縮形 `.` もあります:\n\n ```html\n <div :someProperty.prop=\"someObject\"></div>\n\n <!-- 以下と同じ -->\n <div .someProperty=\"someObject\"></div>\n ```\n\n `.camel` 修飾子は、DOM 内テンプレートを使用する際に、 `v-bind` 属性名をキャメル化できます(例: SVG の `viewBox` 属性):\n\n ```html\n <svg :view-box.camel=\"viewBox\"></svg>\n ```\n\n 文字列テンプレートを使用する場合や、ビルドステップでテンプレートを事前コンパイルする場合は、`.camel` は必要ありません。\n\n- **参照**\n - [クラスとスタイルのバインディング](https://ja.vuejs.org/guide/essentials/class-and-style.html)\n - [コンポーネント - props 渡しの詳細](https://ja.vuejs.org/guide/components/props.html#prop-passing-details)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-bind" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-bind" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-bind" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-bind" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-bind" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-bind" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-bind" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-bind" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-bind" + } + ] + }, + { + name: "v-model", + description: { + kind: "markdown", + value: "\nフォーム入力要素またはコンポーネントに双方向バインディングを作成します。\n\n- **期待する値:** フォームの入力要素の値や構成要素の出力によって異なります\n\n- **以下に限定:**\n\n - `<input>`\n - `<select>`\n - `<textarea>`\n - コンポーネント\n\n- **修飾子**\n\n - [`.lazy`](https://ja.vuejs.org/guide/essentials/forms.html#lazy) - `input` の代わりに `change` イベントを購読する\n - [`.number`](https://ja.vuejs.org/guide/essentials/forms.html#number) - 有効な入力文字列を数値に変換する\n - [`.trim`](https://ja.vuejs.org/guide/essentials/forms.html#trim) - 入力をトリムする\n\n- **参照**\n\n - [フォーム入力バインディング](https://ja.vuejs.org/guide/essentials/forms.html)\n - [コンポーネントのイベント - `v-model` での使用](https://ja.vuejs.org/guide/components/v-model.html)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-model" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-model" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-model" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-model" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-model" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-model" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-model" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-model" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-model" + } + ] + }, + { + name: "v-slot", + description: { + kind: "markdown", + value: "\nprops の受け取りを期待する名前付きスロットまたはスコープ付きスロットを表します。\n\n- **省略記法:** `#`\n\n- **期待する値:** 関数の引数の位置で有効な JavaScript 式(分割代入のサポートを含む)。省略可能 - props がスロットに渡されることを期待している場合のみ必要です。\n\n- **引数:** スロット名(省略可能で、デフォルトは `default`)\n\n- **以下に限定:**\n\n - `<template>`\n - [コンポーネント](https://ja.vuejs.org/guide/components/slots.html#scoped-slots)(props のある単独のデフォルトスロット用)\n\n- **例**\n\n ```html\n <!-- 名前付きスロット -->\n <BaseLayout>\n <template v-slot:header>\n Header content\n </template>\n\n <template v-slot:default>\n Default slot content\n </template>\n\n <template v-slot:footer>\n Footer content\n </template>\n </BaseLayout>\n\n <!-- props を受け取る名前付きスロット -->\n <InfiniteScroll>\n <template v-slot:item=\"slotProps\">\n <div class=\"item\">\n {{ slotProps.item.text }}\n </div>\n </template>\n </InfiniteScroll>\n\n <!-- props を受け取るデフォルトスロット、分割代入あり -->\n <Mouse v-slot=\"{ x, y }\">\n Mouse position: {{ x }}, {{ y }}\n </Mouse>\n ```\n\n- **参照**\n - [コンポーネント - スロット](https://ja.vuejs.org/guide/components/slots.html)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-slot" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-slot" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-slot" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-slot" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-slot" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-slot" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-slot" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-slot" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-slot" + } + ] + }, + { + name: "v-pre", + description: { + kind: "markdown", + value: "\nこの要素とすべての子要素のコンパイルをスキップします。\n\n- **式を受け取りません**\n\n- **詳細**\n\n `v-pre` を指定した要素の内部では、Vue テンプレートの構文はすべて維持され、そのままレンダリングされます。この最も一般的な使用例は、未加工のマスタッシュタグを表示することです。\n\n- **例**\n\n ```html\n <span v-pre>{{ this will not be compiled }}</span>\n ```\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-pre" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-pre" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-pre" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-pre" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-pre" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-pre" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-pre" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-pre" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-pre" + } + ] + }, + { + name: "v-once", + description: { + kind: "markdown", + value: "\n要素やコンポーネントを一度だけレンダリングし、その後の更新はスキップします。\n\n- **式を受け取りません**\n\n- **詳細**\n\n その後の再レンダリングでは、要素/コンポーネントとそのすべての子要素は静的コンテンツとして扱われ、スキップされます。これは、更新のパフォーマンスを最適化するために使用できます。\n\n ```html\n <!-- 単一要素 -->\n <span v-once>This will never change: {{msg}}</span>\n <!-- 子要素を持つ要素 -->\n <div v-once>\n <h1>comment</h1>\n <p>{{msg}}</p>\n </div>\n <!-- コンポーネント -->\n <MyComponent v-once :comment=\"msg\"></MyComponent>\n <!-- `v-for` ディレクティブ -->\n <ul>\n <li v-for=\"i in list\" v-once>{{i}}</li>\n </ul>\n ```\n\n 3.2 以降では、[`v-memo`](#v-memo) を使って、テンプレートの一部を無効化する条件付きでメモ化できます。\n\n- **参照**\n - [データバインディング構文 - 展開](https://ja.vuejs.org/guide/essentials/template-syntax.html#text-interpolation)\n - [v-memo](#v-memo)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-once" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-once" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-once" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-once" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-once" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-once" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-once" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-once" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-once" + } + ] + }, + { + name: "v-memo", + description: { + kind: "markdown", + value: "\n- **期待する値:** `any[]`\n\n- **詳細**\n\n テンプレートのサブツリーをメモ化します。要素とコンポーネントの両方で使用できます。このディレクティブは、メモ化のために比較する依存関係の値の固定長の配列を受け取ります。配列内のすべての値が直前のレンダリングと同じであった場合、サブツリー全体の更新はスキップされます。たとえば:\n\n ```html\n <div v-memo=\"[valueA, valueB]\">\n ...\n </div>\n ```\n\n コンポーネントの再レンダリング時に、 `valueA` と `valueB` の両方が同じであれば、この `<div>` とその子のすべての更新はスキップされます。実際には、仮想 DOM の VNode の生成もスキップされます。なぜなら、サブツリーのメモ化されたコピーを再利用できるからです。\n\n メモ化の配列を正しく指定することは重要であり、そうでない場合は、実際に適用されるべき更新をスキップしてしまう可能性があります。依存関係の配列を空にした `v-memo`(`v-memo=\"[]\"`)は、機能的には `v-once` と同等です。\n\n **`v-for` での使用**\n\n `v-memo` は、パフォーマンスが重要なシナリオでのミクロな最適化を行うためにのみ提供されており、ほとんど必要ありません。この機能が役に立つ最も一般的なケースは、大きな `v-for` リスト(`length > 1000`)をレンダリングするときです:\n\n ```html\n <div v-for=\"item in list\" :key=\"item.id\" v-memo=\"[item.id === selected]\">\n <p>ID: {{ item.id }} - selected: {{ item.id === selected }}</p>\n <p>...more child nodes</p>\n </div>\n ```\n\n コンポーネントの `selected` 状態が変化すると、ほとんどの項目がまったく同じままであっても、大量の VNode が作成されます。ここでの `v-memo` の使い方は、基本的に「非選択状態から選択状態になった場合のみ、またはその逆の場合のみ、この項目を更新する」というものです。これにより、影響を受けない項目はすべて以前の VNode を再利用し、差分を完全にスキップできます。メモの依存関係の配列に `item.id` を含める必要はないことに注意してください。Vue は自動的に項目の `:key` から推測します。\n\n :::warning\n `v-memo` と `v-for` を併用する場合は、同じ要素で使用されているか確認してください。**`v-memo` は `v-for` の中では動作しません。**\n :::\n\n 子コンポーネントの更新チェックが最適化されていない特定のエッジケースで、不要な更新を手動で防ぐために `v-memo` をコンポーネントに使用できます。しかし、ここでも、必要な更新をスキップしないように正しい依存関係を指定するのは、開発者の責任です。\n\n- **参照**\n - [v-once](#v-once)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-memo" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-memo" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-memo" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-memo" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-memo" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-memo" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-memo" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-memo" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-memo" + } + ] + }, + { + name: "v-cloak", + description: { + kind: "markdown", + value: "\nコンパイルされていないテンプレートを、準備が整うまで非表示にするために使用します。\n\n- **式を受け取りません**\n\n- **詳細**\n\n **このディレクティブは、ビルドステップがないセットアップでのみ必要です。**\n\n DOM 内テンプレートを使用する場合、「コンパイルされていないテンプレートのフラッシュ」が発生することがあります。マウントされたコンポーネントがそれをレンダリングされたコンテンツに置き換えるまで、未加工のマスタッシュタグがユーザーに表示される場合があります。\n\n `v-cloak` は関連するコンポーネントインスタンスがマウントされるまで、その要素に残ります。`[v-cloak] { display: none }` のような CSS ルールと組み合わせることで、コンポーネントの準備が整うまで未加工のテンプレートを非表示にできます。\n\n- **例**\n\n ```css\n [v-cloak] {\n display: none;\n }\n ```\n\n ```html\n <div v-cloak>\n {{ message }}\n </div>\n ```\n\n この `<div>` はコンパイルが完了するまで表示されません。\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-directives.html#v-cloak" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-directives.html#v-cloak" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-directives.html#v-cloak" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-directives.html#v-cloak" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-directives.html#v-cloak" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-directives.html#v-cloak" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-directives.html#v-cloak" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-directives.html#v-cloak" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-directives.html#v-cloak" + } + ] + }, + { + name: "key", + description: { + kind: "markdown", + value: "\n特別な属性 `key` は、主に Vue の仮想 DOM アルゴリズムが新しいノードリストを古いリストに対して差分する際に、vnode を識別するためのヒントとして使用されます。\n\n- **期待する値:** `number | string | symbol`\n\n- **詳細**\n\n キーがない場合、Vue は要素の移動を最小限に抑え、同じタイプの要素をできるだけその場でパッチ/再利用しようとするアルゴリズムを使用します。キーがある場合は、キーの順序変更に基づいて要素を並べ替え、存在しなくなったキーを持つ要素は常に削除/破棄されます。\n\n 共通の同じ親を持つ子は、**ユニークなキー**を持つ必要があります。キーが重複するとレンダリングエラーになります。\n\n `v-for` と組み合わせるのが最も一般的な使用例です:\n\n ```html\n <ul>\n <li v-for=\"item in items\" :key=\"item.id\">...</li>\n </ul>\n ```\n\n また、要素/コンポーネントを再利用するのではなく、強制的に置き換えるためにも使用できます。これは、次のような場合に便利です:\n\n - コンポーネントのライフサイクルフックを適切にトリガーする\n - トランジションをトリガーする\n\n 例えば:\n\n ```html\n <transition>\n <span :key=\"text\">{{ text }}</span>\n </transition>\n ```\n\n `text` が変更されると、`<span>` はパッチされるのではなく、常に置き換えられるので、トランジションがトリガーされます。\n\n- **参照** [ガイド - リストレンダリング - `key` による状態管理](https://ja.vuejs.org/guide/essentials/list.html#maintaining-state-with-key)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-special-attributes.html#key" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-special-attributes.html#key" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-special-attributes.html#key" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-special-attributes.html#key" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-special-attributes.html#key" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-special-attributes.html#key" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-special-attributes.html#key" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-special-attributes.html#key" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-special-attributes.html#key" + } + ] + }, + { + name: "ref", + description: { + kind: "markdown", + value: "\n[テンプレート参照](https://ja.vuejs.org/guide/essentials/template-refs.html)を表します。\n\n- **期待する値:** `string | Function`\n\n- **詳細**\n\n `ref` は、要素や子コンポーネントへの参照を登録するために使用します。\n\n Options API では、この参照はコンポーネントの `this.$refs` オブジェクトの下に登録されます:\n\n ```html\n <!-- this.$refs.p として格納される -->\n <p ref=\"p\">hello</p>\n ```\n\n Composition API では、一致する名前の ref に参照が格納されます:\n\n ```vue\n <script setup>\n import { ref } from 'vue'\n\n const p = ref()\n </script>\n\n <template>\n <p ref=\"p\">hello</p>\n </template>\n ```\n\n もしプレーンな DOM 要素で使用された場合、その要素への参照になります。もし子コンポーネントで使用された場合は、そのコンポーネントのインスタンスへの参照になります。\n\n また、`ref` には関数も受け付けるので、参照を保存する場所を完全に制御できます:\n\n ```html\n <ChildComponent :ref=\"(el) => child = el\" />\n ```\n\n ref の登録タイミングに関する重要な注意点として、ref 自体はレンダー関数の結果として作成されるので、コンポーネントがマウントされるまで待ってからアクセスする必要があります。\n\n `this.$refs` はリアクティブではないので、テンプレート内でデータバインディングのために使わないでください。\n\n- **参照**\n - [ガイド - テンプレート参照](https://ja.vuejs.org/guide/essentials/template-refs.html)\n - [ガイド - テンプレート参照の型付け](https://ja.vuejs.org/guide/typescript/composition-api.html#typing-template-refs) <sup class=\"vt-badge ts\" />\n - [ガイド - コンポーネントのテンプレート参照の型付け](https://ja.vuejs.org/guide/typescript/composition-api.html#typing-component-template-refs) <sup class=\"vt-badge ts\" />\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-special-attributes.html#ref" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-special-attributes.html#ref" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-special-attributes.html#ref" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-special-attributes.html#ref" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-special-attributes.html#ref" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-special-attributes.html#ref" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-special-attributes.html#ref" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-special-attributes.html#ref" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-special-attributes.html#ref" + } + ] + }, + { + name: "is", + description: { + kind: "markdown", + value: "\n[動的コンポーネント](https://ja.vuejs.org/guide/essentials/component-basics.html#dynamic-components)のバインディングに使用します。\n\n- **期待する値:** `string | Component`\n\n- **ネイティブ要素での使用** <sup class=\"vt-badge\">3.1+</sup>\n\n ネイティブの HTML 要素で `is` 属性が使われている場合、[Customized built-in element](https://html.spec.whatwg.org/multipage/custom-elements.html#custom-elements-customized-builtin-example) として解釈されます。これは、ネイティブの Web プラットフォームの機能です。\n\n しかし、[DOM 内テンプレート解析の注意点](https://ja.vuejs.org/guide/essentials/component-basics.html#in-dom-template-parsing-caveats)で説明したように、ネイティブ要素を Vue コンポーネントに置き換えるためには Vue が必要になる場合があります。`is` 属性の値の前に `vue:` を付けると、Vue はその要素を Vue コンポーネントとしてレンダリングします:\n\n ```html\n <table>\n <tr is=\"vue:my-row-component\"></tr>\n </table>\n ```\n\n- **参照**\n\n - [ビルトインの特別な要素 - `<component>`](https://ja.vuejs.org/api/built-in-special-elements.html#component)\n - [動的コンポーネント](https://ja.vuejs.org/guide/essentials/component-basics.html#dynamic-components)\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/built-in-special-attributes.html#is" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/built-in-special-attributes.html#is" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/built-in-special-attributes.html#is" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/built-in-special-attributes.html#is" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/built-in-special-attributes.html#is" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/built-in-special-attributes.html#is" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/built-in-special-attributes.html#is" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/built-in-special-attributes.html#is" + }, + { + name: "it", + url: "https://it.vuejs.org/api/built-in-special-attributes.html#is" + } + ] + } +]; +var require$$6 = { + version: version$e, + tags: tags$7, + globalAttributes: globalAttributes$e +}; + +const version$d = 1.1; +const tags$6 = [ + { + name: "template", + attributes: [ + { + name: "src", + description: { + kind: "markdown", + value: "\nSe preferisci suddividere i tuoi componenti `*.vue` in file multipli, puoi utilizzare l'attributo `src` per importare un file esterno per un blocco di linguaggio:\n\n```vue\n<template src=\"./template.html\"></template>\n<style src=\"./style.css\"></style>\n<script src=\"./script.js\"></script>\n```\n\nTieni presente che gli import `src` seguono le stesse regole di risoluzione del percorso delle richieste dei moduli webpack, il che significa:\n\n- I percorsi relativi devono iniziare con `./`\n- Puoi importare risorse tramite dipendenze npm:\n\n```vue\n<!-- importa un file dal pacchetto npm \"todomvc-app-css\" installato -->\n<style src=\"todomvc-app-css/index.css\" />\n```\n\nGli import `src` funzionano anche con blocchi custom, per esempio:\n\n```vue\n<unit-test src=\"./unit-test.js\">\n</unit-test>\n```\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#src-imports" + } + ] + }, + { + name: "lang", + description: { + kind: "markdown", + value: "\nI blocchi possono dichiarare linguaggi di pre-processore utilizzando l'attributo `lang`. Il caso più comune è l'utilizzo di TypeScript per il blocco `<script>`:\n\n```html\n<script lang=\"ts\">\n // use TypeScript\n</script>\n```\n\n`lang` può essere applicato su ogni blocco - per esempio possiamo usare `<style>` con [Sass](https://sass-lang.com/) e `<template>` con [Pug](https://pugjs.org/api/getting-started.html):\n\n```html\n<template lang=\"pug\">\np {{ msg }}\n</template>\n\n<style lang=\"scss\">\n $primary-color: #333;\n body {\n color: $primary-color;\n }\n</style>\n```\n\nTieni presente che l'integrazione con diversi pre-processori può variare in base alla catena di strumenti utilizzata. Consulta la rispettiva documentazione per ulteriori esempi:\n\n- [Vite](https://vitejs.dev/guide/features.html#css-pre-processors)\n- [Vue CLI](https://cli.vuejs.org/guide/css.html#pre-processors)\n- [webpack + vue-loader](https://vue-loader.vuejs.org/guide/pre-processors.html#using-pre-processors)\n" + }, + values: [ + { + name: "html" + }, + { + name: "pug" + } + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#pre-processors" + } + ] + } + ], + description: { + kind: "markdown", + value: "\n- Ogni file `*.vue` può contenere massimo un blocco `<template>`.\n\n- I suoi contenuti verranno estratti e passati al `@vue/compiler-dom`, pre-compilati in render function di JavaScript, e collegati al componente esportato come sua opzione`render`.\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#template" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#template" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#template" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#template" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#template" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#template" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#template" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#template" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#template" + } + ] + }, + { + name: "script", + attributes: [ + { + name: "src", + description: { + kind: "markdown", + value: "\nSe preferisci suddividere i tuoi componenti `*.vue` in file multipli, puoi utilizzare l'attributo `src` per importare un file esterno per un blocco di linguaggio:\n\n```vue\n<template src=\"./template.html\"></template>\n<style src=\"./style.css\"></style>\n<script src=\"./script.js\"></script>\n```\n\nTieni presente che gli import `src` seguono le stesse regole di risoluzione del percorso delle richieste dei moduli webpack, il che significa:\n\n- I percorsi relativi devono iniziare con `./`\n- Puoi importare risorse tramite dipendenze npm:\n\n```vue\n<!-- importa un file dal pacchetto npm \"todomvc-app-css\" installato -->\n<style src=\"todomvc-app-css/index.css\" />\n```\n\nGli import `src` funzionano anche con blocchi custom, per esempio:\n\n```vue\n<unit-test src=\"./unit-test.js\">\n</unit-test>\n```\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#src-imports" + } + ] + }, + { + name: "lang", + description: { + kind: "markdown", + value: "\nI blocchi possono dichiarare linguaggi di pre-processore utilizzando l'attributo `lang`. Il caso più comune è l'utilizzo di TypeScript per il blocco `<script>`:\n\n```html\n<script lang=\"ts\">\n // use TypeScript\n</script>\n```\n\n`lang` può essere applicato su ogni blocco - per esempio possiamo usare `<style>` con [Sass](https://sass-lang.com/) e `<template>` con [Pug](https://pugjs.org/api/getting-started.html):\n\n```html\n<template lang=\"pug\">\np {{ msg }}\n</template>\n\n<style lang=\"scss\">\n $primary-color: #333;\n body {\n color: $primary-color;\n }\n</style>\n```\n\nTieni presente che l'integrazione con diversi pre-processori può variare in base alla catena di strumenti utilizzata. Consulta la rispettiva documentazione per ulteriori esempi:\n\n- [Vite](https://vitejs.dev/guide/features.html#css-pre-processors)\n- [Vue CLI](https://cli.vuejs.org/guide/css.html#pre-processors)\n- [webpack + vue-loader](https://vue-loader.vuejs.org/guide/pre-processors.html#using-pre-processors)\n" + }, + values: [ + { + name: "ts" + }, + { + name: "js" + }, + { + name: "tsx" + }, + { + name: "jsx" + } + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#pre-processors" + } + ] + }, + { + name: "generic" + }, + { + name: "setup", + valueSet: "v", + description: { + kind: "markdown", + value: "\n- Ogni file `*.vue` può contenere al massimo un blocco `<script setup>` (escludendo lo `<script>` classico).\n\n- Lo script viene pre-processato e utilizzato come la funzione `setup()` del componente, il che significa che verrà eseguito **per ogni istanza del componente**. Le associazioni al livello superiore in `<script setup>` vengono automaticamente esposte al template. Per ulteriori dettagli, consulta la [documentazione dedicata a `<script setup>`](https://it.vuejs.org/api/sfc-script-setup.html).\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#script-setup" + } + ] + } + ], + description: { + kind: "markdown", + value: "\n- Ogni file `*.vue` può contenere al massimo un blocco `<script>` (escludendo [`<script setup>`](https://it.vuejs.org/api/sfc-script-setup.html)).\n\n- Lo script viene eseguito come un ES Module.\n\n- Il **default export** dovrebbe essere un oggetto di opzioni del componente Vue, sia come oggetto semplice che come valore restituito da [defineComponent](https://it.vuejs.org/api/general.html#definecomponent).\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#script" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#script" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#script" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#script" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#script" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#script" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#script" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#script" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#script" + } + ] + }, + { + name: "script setup", + attributes: [ + ], + description: { + kind: "markdown", + value: "\n- Ogni file `*.vue` può contenere al massimo un blocco `<script setup>` (escludendo lo `<script>` classico).\n\n- Lo script viene pre-processato e utilizzato come la funzione `setup()` del componente, il che significa che verrà eseguito **per ogni istanza del componente**. Le associazioni al livello superiore in `<script setup>` vengono automaticamente esposte al template. Per ulteriori dettagli, consulta la [documentazione dedicata a `<script setup>`](https://it.vuejs.org/api/sfc-script-setup.html).\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#script-setup" + } + ] + }, + { + name: "style", + attributes: [ + { + name: "src", + description: { + kind: "markdown", + value: "\nSe preferisci suddividere i tuoi componenti `*.vue` in file multipli, puoi utilizzare l'attributo `src` per importare un file esterno per un blocco di linguaggio:\n\n```vue\n<template src=\"./template.html\"></template>\n<style src=\"./style.css\"></style>\n<script src=\"./script.js\"></script>\n```\n\nTieni presente che gli import `src` seguono le stesse regole di risoluzione del percorso delle richieste dei moduli webpack, il che significa:\n\n- I percorsi relativi devono iniziare con `./`\n- Puoi importare risorse tramite dipendenze npm:\n\n```vue\n<!-- importa un file dal pacchetto npm \"todomvc-app-css\" installato -->\n<style src=\"todomvc-app-css/index.css\" />\n```\n\nGli import `src` funzionano anche con blocchi custom, per esempio:\n\n```vue\n<unit-test src=\"./unit-test.js\">\n</unit-test>\n```\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#src-imports" + } + ] + }, + { + name: "lang", + description: { + kind: "markdown", + value: "\nI blocchi possono dichiarare linguaggi di pre-processore utilizzando l'attributo `lang`. Il caso più comune è l'utilizzo di TypeScript per il blocco `<script>`:\n\n```html\n<script lang=\"ts\">\n // use TypeScript\n</script>\n```\n\n`lang` può essere applicato su ogni blocco - per esempio possiamo usare `<style>` con [Sass](https://sass-lang.com/) e `<template>` con [Pug](https://pugjs.org/api/getting-started.html):\n\n```html\n<template lang=\"pug\">\np {{ msg }}\n</template>\n\n<style lang=\"scss\">\n $primary-color: #333;\n body {\n color: $primary-color;\n }\n</style>\n```\n\nTieni presente che l'integrazione con diversi pre-processori può variare in base alla catena di strumenti utilizzata. Consulta la rispettiva documentazione per ulteriori esempi:\n\n- [Vite](https://vitejs.dev/guide/features.html#css-pre-processors)\n- [Vue CLI](https://cli.vuejs.org/guide/css.html#pre-processors)\n- [webpack + vue-loader](https://vue-loader.vuejs.org/guide/pre-processors.html#using-pre-processors)\n" + }, + values: [ + { + name: "css" + }, + { + name: "scss" + }, + { + name: "less" + }, + { + name: "stylus" + }, + { + name: "postcss" + }, + { + name: "sass" + } + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#pre-processors" + } + ] + }, + { + name: "scoped", + valueSet: "v", + description: { + kind: "markdown", + value: "\nQuando un tag `<style>` ha l'attributo `scoped`, il suo CSS verrà applicato solo agli elementi del componente corrente. Questo è simile all'incapsulamento dello stile presente in Shadow DOM. Ha alcune limitazioni, ma non richiede alcun polyfill. Ciò è ottenuto utilizzando PostCSS per trasformare quanto segue:\n\n```vue\n<style scoped>\n.example {\n color: red;\n}\n</style>\n\n<template>\n <div class=\"example\">ciao</div>\n</template>\n```\n\nIn questo:\n\n```vue\n<style>\n.example[data-v-f3f3eg9] {\n color: red;\n}\n</style>\n\n<template>\n <div class=\"example\" data-v-f3f3eg9>ciao</div>\n</template>\n```\n\n### Elementi Root dei componenti figli \n\nCon l'attributo `scoped`, gli stili del componente genitore non si propagheranno nei componenti figlio. Tuttavia, il nodo radice di un componente figlio sarà influenzato sia dagli stili scoped del genitore che da quelli del figlio. Questo è progettato in modo che il genitore possa stilizzare l'elemento radice del figlio per scopi di layout.\n\n### Selettori in profondità \n\nSe desideri che un selettore negli stili `scoped` abbia effetto anche sui componenti figlio, puoi utilizzare la pseudo-classe `:deep()`:\n\n```vue\n<style scoped>\n.a :deep(.b) {\n /* ... */\n}\n</style>\n```\n\nIl codice sopra verrà compilato in:\n\n```css\n.a[data-v-f3f3eg9] .b {\n /* ... */\n}\n```\n\n:::tip\nIl contenuto DOM creato con `v-html` non è influenzato dagli stili scoped, ma puoi comunque stilizzarlo utilizzando i selettori deep.\n:::\n\n### Selettori degli slot \n\nPer impostazione predefinita, gli stili scoped non influenzano il contenuto renderizzato da `<slot/>`, poiché sono considerati di proprietà del componente genitore che li passa. Per puntare in modo esplicito al contenuto dello slot, utilizza la pseudo-classe `:slotted`:\n\n```vue\n<style scoped>\n:slotted(div) {\n color: red;\n}\n</style>\n```\n\n### Selettori globali \n\nSe vuoi applicare una regola globalmente, puoi utilizzare la pseudo-classe `:global` anziché creare un altro blocco `<style>` (vedi sotto):\n\n```vue\n<style scoped>\n:global(.red) {\n color: red;\n}\n</style>\n```\n\n### Mixare stili locali e globali \n\nPuoi anche includere stili sia scoped che non scoped nello stesso componente:\n\n```vue\n<style>\n/* global styles */\n</style>\n\n<style scoped>\n/* local styles */\n</style>\n```\n\n### Tips per lo style scoped \n\n- **Gli stili scoped non eliminano la necessità delle classi.**. A causa del modo in cui i browser interpretano i diversi selettori CSS, `p { color: red }` sarà molto più lento quando è scoped (ossia quando è combinato con un selettore di attributo). Se invece usi classi o id, come ad esempio `.example { color: red }`, eliminerai praticamente questo impatto sulle prestazioni.\n\n- **Fai attenzione ai selettori discendenti nei componenti ricorsivi!** Per una regola CSS con il selettore `.a .b`, se l'elemento che corrisponde a `.a` contiene un componente figlio ricorsivo, allora a tutti i `.b` in quel componente figlio verrà applicata quella regola.\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-css-features.html#scoped-css" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-css-features.html#scoped-css" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-css-features.html#scoped-css" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-css-features.html#scoped-css" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-css-features.html#scoped-css" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-css-features.html#scoped-css" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-css-features.html#scoped-css" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-css-features.html#scoped-css" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-css-features.html#scoped-css" + } + ] + }, + { + name: "module", + valueSet: "v", + description: { + kind: "markdown", + value: "\nUn tag `<style module>` viene compilato come [moduli CSS](https://github.com/css-modules/css-modules) ed espone le classi CSS risultanti al componente come un oggetto con chiave `$style`:\n\n```vue\n<template>\n <p :class=\"$style.red\">Questo dovrebbe essere rosso</p>\n</template>\n\n<style module>\n.red {\n color: red;\n}\n</style>\n```\n\nLe classi risultanti sono hashate per evitare collisioni, ottenendo lo stesso effetto di delimitazione degli stili CSS per il solo componente corrente.\n\nFai riferimento alle [spec dei moduli CSS](https://github.com/css-modules/css-modules) per ulteriori dettagli come le [eccezioni globali](https://github.com/css-modules/css-modules#exceptions) e [composition](https://github.com/css-modules/css-modules#composition).\n\n### Nome Personalizzato per Inject \n\nPuoi personalizzare la chiave di proprietà dell'oggetto delle classi iniettate assegnando un valore all'attributo `module`:\n\n```vue\n<template>\n <p :class=\"classes.red\">rosso</p>\n</template>\n\n<style module=\"classes\">\n.red {\n color: red;\n}\n</style>\n```\n\n### Utilizzo con Composition API \n\nPuoi avere accesso alle classi iniettate in `setup()` e `<script setup>` via l'API `useCssModule`. Per i blocchi `<style module>` con nomi di iniezione custom, `useCssModule` accetta il valore corrispondente dell'attributo `module` come primo argomento:\n\n```js\nimport { useCssModule } from 'vue'\n\n// dentro lo scope setup()...\n// default, ritorna classi per <style module>\nuseCssModule()\n\n// nominate, ritorna classi per <style module=\"classes\">\nuseCssModule('classes')\n```\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-css-features.html#css-modules" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-css-features.html#css-modules" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-css-features.html#css-modules" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-css-features.html#css-modules" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-css-features.html#css-modules" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-css-features.html#css-modules" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-css-features.html#css-modules" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-css-features.html#css-modules" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-css-features.html#css-modules" + } + ] + } + ], + description: { + kind: "markdown", + value: "\n- Un singolo file `*.vue` può contenere più tag `<style>`.\n\n- Un tag `<style>` può avere gli attributi `scoped` o `module` (guarda [Funzionalità CSS dei SFC](https://it.vuejs.org/api/sfc-css-features.html) per maggiori dettagli) per aiutare ad incapsulare gli stili all'interno del componente corrente. È possibile mescolare più tag `<style>` con diverse modalità di incapsulamento nello stesso componente.\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#style" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#style" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#style" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#style" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#style" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#style" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#style" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#style" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#style" + } + ] + }, + { + name: "Blocchi custom", + attributes: [ + { + name: "src", + description: { + kind: "markdown", + value: "\nSe preferisci suddividere i tuoi componenti `*.vue` in file multipli, puoi utilizzare l'attributo `src` per importare un file esterno per un blocco di linguaggio:\n\n```vue\n<template src=\"./template.html\"></template>\n<style src=\"./style.css\"></style>\n<script src=\"./script.js\"></script>\n```\n\nTieni presente che gli import `src` seguono le stesse regole di risoluzione del percorso delle richieste dei moduli webpack, il che significa:\n\n- I percorsi relativi devono iniziare con `./`\n- Puoi importare risorse tramite dipendenze npm:\n\n```vue\n<!-- importa un file dal pacchetto npm \"todomvc-app-css\" installato -->\n<style src=\"todomvc-app-css/index.css\" />\n```\n\nGli import `src` funzionano anche con blocchi custom, per esempio:\n\n```vue\n<unit-test src=\"./unit-test.js\">\n</unit-test>\n```\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#src-imports" + } + ] + } + ], + description: { + kind: "markdown", + value: "\nBlocchi personalizzati aggiuntivi possono essere inclusi in un file `*.vue` per soddisfare esigenze specifiche del progetto, ad esempio un blocco `<docs>`. Alcuni esempi concreti di blocchi personalizzati includono:\n\n- [Gridsome: `<page-query>`](https://gridsome.org/docs/querying-data/)\n- [vite-plugin-vue-gql: `<gql>`](https://github.com/wheatjs/vite-plugin-vue-gql)\n- [vue-i18n: `<i18n>`](https://github.com/intlify/bundle-tools/tree/main/packages/vite-plugin-vue-i18n#i18n-custom-block)\n\nLa gestione dei blocchi personalizzati dipenderà dagli strumenti utilizzati. Se desideri creare le tue integrazioni personalizzate per i blocchi, consulta la [sezione degli strumenti per integrazioni di blocchi personalizzati negli SFC](https://it.vuejs.org/guide/scaling-up/tooling.html#sfc-custom-block-integrations) per ulteriori dettagli.\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#blocchi-custom" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#blocchi-custom" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#blocchi-custom" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#blocchi-custom" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#blocchi-custom" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#blocchi-custom" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#blocchi-custom" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#blocchi-custom" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#blocchi-custom" + } + ] + } +]; +const globalAttributes$d = [ + { + name: "lang", + description: { + kind: "markdown", + value: "\nI blocchi possono dichiarare linguaggi di pre-processore utilizzando l'attributo `lang`. Il caso più comune è l'utilizzo di TypeScript per il blocco `<script>`:\n\n```html\n<script lang=\"ts\">\n // use TypeScript\n</script>\n```\n\n`lang` può essere applicato su ogni blocco - per esempio possiamo usare `<style>` con [Sass](https://sass-lang.com/) e `<template>` con [Pug](https://pugjs.org/api/getting-started.html):\n\n```html\n<template lang=\"pug\">\np {{ msg }}\n</template>\n\n<style lang=\"scss\">\n $primary-color: #333;\n body {\n color: $primary-color;\n }\n</style>\n```\n\nTieni presente che l'integrazione con diversi pre-processori può variare in base alla catena di strumenti utilizzata. Consulta la rispettiva documentazione per ulteriori esempi:\n\n- [Vite](https://vitejs.dev/guide/features.html#css-pre-processors)\n- [Vue CLI](https://cli.vuejs.org/guide/css.html#pre-processors)\n- [webpack + vue-loader](https://vue-loader.vuejs.org/guide/pre-processors.html#using-pre-processors)\n" + }, + values: [ + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#pre-processors" + } + ] + }, + { + name: "src", + description: { + kind: "markdown", + value: "\nSe preferisci suddividere i tuoi componenti `*.vue` in file multipli, puoi utilizzare l'attributo `src` per importare un file esterno per un blocco di linguaggio:\n\n```vue\n<template src=\"./template.html\"></template>\n<style src=\"./style.css\"></style>\n<script src=\"./script.js\"></script>\n```\n\nTieni presente che gli import `src` seguono le stesse regole di risoluzione del percorso delle richieste dei moduli webpack, il che significa:\n\n- I percorsi relativi devono iniziare con `./`\n- Puoi importare risorse tramite dipendenze npm:\n\n```vue\n<!-- importa un file dal pacchetto npm \"todomvc-app-css\" installato -->\n<style src=\"todomvc-app-css/index.css\" />\n```\n\nGli import `src` funzionano anche con blocchi custom, per esempio:\n\n```vue\n<unit-test src=\"./unit-test.js\">\n</unit-test>\n```\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#src-imports" + } + ] + } +]; +var require$$7 = { + version: version$d, + tags: tags$6, + globalAttributes: globalAttributes$d +}; + +const version$c = 1.1; +const tags$5 = [ + { + name: "template", + attributes: [ + { + name: "src", + description: { + kind: "markdown", + value: "\n如果你更喜欢将 `*.vue` 组件分散到多个文件中,可以为一个语块使用 `src` 这个 attribute 来导入一个外部文件:\n\n```vue\n<template src=\"./template.html\"></template>\n<style src=\"./style.css\"></style>\n<script src=\"./script.js\"></script>\n```\n\n请注意 `src` 导入和 JS 模块导入遵循相同的路径解析规则,这意味着:\n\n- 相对路径需要以 `./` 开头\n- 你也可以从 npm 依赖中导入资源\n\n```vue\n<!-- 从所安装的 \"todomvc-app-css\" npm 包中导入一个文件 -->\n<style src=\"todomvc-app-css/index.css\" />\n```\n\n`src` 导入对自定义语块也同样适用:\n\n```vue\n<unit-test src=\"./unit-test.js\">\n</unit-test>\n```\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#src-imports" + } + ] + }, + { + name: "lang", + description: { + kind: "markdown", + value: "\n代码块可以使用 `lang` 这个 attribute 来声明预处理器语言,最常见的用例就是在 `<script>` 中使用 TypeScript:\n\n```html\n<script lang=\"ts\">\n // use TypeScript\n</script>\n```\n\n`lang` 在任意块上都能使用,比如我们可以在 `<style>` 标签中使用 [Sass](https://sass-lang.com/) 或是 `<template>` 中使用 [Pug](https://pugjs.org/api/getting-started.html):\n\n```html\n<template lang=\"pug\">\np {{ msg }}\n</template>\n\n<style lang=\"scss\">\n $primary-color: #333;\n body {\n color: $primary-color;\n }\n</style>\n```\n\n注意对不同预处理器的集成会根据你所使用的工具链而有所不同,具体细节请查看相应的工具链文档来确认:\n\n- [Vite](https://cn.vitejs.dev/guide/features.html#css-pre-processors)\n- [Vue CLI](https://cli.vuejs.org/zh/guide/css.html#%E9%A2%84%E5%A4%84%E7%90%86%E5%99%A8)\n- [webpack + vue-loader](https://vue-loader.vuejs.org/zh/guide/pre-processors.html#%E4%BD%BF%E7%94%A8%E9%A2%84%E5%A4%84%E7%90%86%E5%99%A8)\n" + }, + values: [ + { + name: "html" + }, + { + name: "pug" + } + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#pre-processors" + } + ] + } + ], + description: { + kind: "markdown", + value: "\n- 每个 `*.vue` 文件最多可以包含一个顶层 `<template>` 块。\n\n- 语块包裹的内容将会被提取、传递给 `@vue/compiler-dom`,预编译为 JavaScript 渲染函数,并附在导出的组件上作为其 `render` 选项。\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#template" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#template" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#template" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#template" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#template" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#template" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#template" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#template" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#template" + } + ] + }, + { + name: "script", + attributes: [ + { + name: "src", + description: { + kind: "markdown", + value: "\n如果你更喜欢将 `*.vue` 组件分散到多个文件中,可以为一个语块使用 `src` 这个 attribute 来导入一个外部文件:\n\n```vue\n<template src=\"./template.html\"></template>\n<style src=\"./style.css\"></style>\n<script src=\"./script.js\"></script>\n```\n\n请注意 `src` 导入和 JS 模块导入遵循相同的路径解析规则,这意味着:\n\n- 相对路径需要以 `./` 开头\n- 你也可以从 npm 依赖中导入资源\n\n```vue\n<!-- 从所安装的 \"todomvc-app-css\" npm 包中导入一个文件 -->\n<style src=\"todomvc-app-css/index.css\" />\n```\n\n`src` 导入对自定义语块也同样适用:\n\n```vue\n<unit-test src=\"./unit-test.js\">\n</unit-test>\n```\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#src-imports" + } + ] + }, + { + name: "lang", + description: { + kind: "markdown", + value: "\n代码块可以使用 `lang` 这个 attribute 来声明预处理器语言,最常见的用例就是在 `<script>` 中使用 TypeScript:\n\n```html\n<script lang=\"ts\">\n // use TypeScript\n</script>\n```\n\n`lang` 在任意块上都能使用,比如我们可以在 `<style>` 标签中使用 [Sass](https://sass-lang.com/) 或是 `<template>` 中使用 [Pug](https://pugjs.org/api/getting-started.html):\n\n```html\n<template lang=\"pug\">\np {{ msg }}\n</template>\n\n<style lang=\"scss\">\n $primary-color: #333;\n body {\n color: $primary-color;\n }\n</style>\n```\n\n注意对不同预处理器的集成会根据你所使用的工具链而有所不同,具体细节请查看相应的工具链文档来确认:\n\n- [Vite](https://cn.vitejs.dev/guide/features.html#css-pre-processors)\n- [Vue CLI](https://cli.vuejs.org/zh/guide/css.html#%E9%A2%84%E5%A4%84%E7%90%86%E5%99%A8)\n- [webpack + vue-loader](https://vue-loader.vuejs.org/zh/guide/pre-processors.html#%E4%BD%BF%E7%94%A8%E9%A2%84%E5%A4%84%E7%90%86%E5%99%A8)\n" + }, + values: [ + { + name: "ts" + }, + { + name: "js" + }, + { + name: "tsx" + }, + { + name: "jsx" + } + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#pre-processors" + } + ] + }, + { + name: "generic" + }, + { + name: "setup", + valueSet: "v", + description: { + kind: "markdown", + value: "\n- 每个 `*.vue` 文件最多可以包含一个 `<script setup>`。(不包括一般的 `<script>`)\n\n- 这个脚本块将被预处理为组件的 `setup()` 函数,这意味着它将**为每一个组件实例**都执行。`<script setup>` 中的顶层绑定都将自动暴露给模板。要了解更多细节,请看 [`<script setup>` 的专门文档](https://cn.vuejs.org/api/sfc-script-setup.html)。\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#script-setup" + } + ] + } + ], + description: { + kind: "markdown", + value: "\n- 每个 `*.vue` 文件最多可以包含一个 `<script>` 块。(使用 [`<script setup>`](https://cn.vuejs.org/api/sfc-script-setup.html) 的情况除外)\n\n- 这个脚本代码块将作为 ES 模块执行。\n\n- **默认导出**应该是 Vue 的组件选项对象,可以是一个对象字面量或是 [defineComponent](https://cn.vuejs.org/api/general.html#definecomponent) 函数的返回值。\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#script" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#script" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#script" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#script" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#script" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#script" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#script" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#script" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#script" + } + ] + }, + { + name: "script setup", + attributes: [ + ], + description: { + kind: "markdown", + value: "\n- 每个 `*.vue` 文件最多可以包含一个 `<script setup>`。(不包括一般的 `<script>`)\n\n- 这个脚本块将被预处理为组件的 `setup()` 函数,这意味着它将**为每一个组件实例**都执行。`<script setup>` 中的顶层绑定都将自动暴露给模板。要了解更多细节,请看 [`<script setup>` 的专门文档](https://cn.vuejs.org/api/sfc-script-setup.html)。\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#script-setup" + } + ] + }, + { + name: "style", + attributes: [ + { + name: "src", + description: { + kind: "markdown", + value: "\n如果你更喜欢将 `*.vue` 组件分散到多个文件中,可以为一个语块使用 `src` 这个 attribute 来导入一个外部文件:\n\n```vue\n<template src=\"./template.html\"></template>\n<style src=\"./style.css\"></style>\n<script src=\"./script.js\"></script>\n```\n\n请注意 `src` 导入和 JS 模块导入遵循相同的路径解析规则,这意味着:\n\n- 相对路径需要以 `./` 开头\n- 你也可以从 npm 依赖中导入资源\n\n```vue\n<!-- 从所安装的 \"todomvc-app-css\" npm 包中导入一个文件 -->\n<style src=\"todomvc-app-css/index.css\" />\n```\n\n`src` 导入对自定义语块也同样适用:\n\n```vue\n<unit-test src=\"./unit-test.js\">\n</unit-test>\n```\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#src-imports" + } + ] + }, + { + name: "lang", + description: { + kind: "markdown", + value: "\n代码块可以使用 `lang` 这个 attribute 来声明预处理器语言,最常见的用例就是在 `<script>` 中使用 TypeScript:\n\n```html\n<script lang=\"ts\">\n // use TypeScript\n</script>\n```\n\n`lang` 在任意块上都能使用,比如我们可以在 `<style>` 标签中使用 [Sass](https://sass-lang.com/) 或是 `<template>` 中使用 [Pug](https://pugjs.org/api/getting-started.html):\n\n```html\n<template lang=\"pug\">\np {{ msg }}\n</template>\n\n<style lang=\"scss\">\n $primary-color: #333;\n body {\n color: $primary-color;\n }\n</style>\n```\n\n注意对不同预处理器的集成会根据你所使用的工具链而有所不同,具体细节请查看相应的工具链文档来确认:\n\n- [Vite](https://cn.vitejs.dev/guide/features.html#css-pre-processors)\n- [Vue CLI](https://cli.vuejs.org/zh/guide/css.html#%E9%A2%84%E5%A4%84%E7%90%86%E5%99%A8)\n- [webpack + vue-loader](https://vue-loader.vuejs.org/zh/guide/pre-processors.html#%E4%BD%BF%E7%94%A8%E9%A2%84%E5%A4%84%E7%90%86%E5%99%A8)\n" + }, + values: [ + { + name: "css" + }, + { + name: "scss" + }, + { + name: "less" + }, + { + name: "stylus" + }, + { + name: "postcss" + }, + { + name: "sass" + } + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#pre-processors" + } + ] + }, + { + name: "scoped", + valueSet: "v", + description: { + kind: "markdown", + value: "\n当 `<style>` 标签带有 `scoped` attribute 的时候,它的 CSS 只会影响当前组件的元素,和 Shadow DOM 中的样式封装类似。使用时有一些注意事项,不过好处是不需要任何的 polyfill。它的实现方式是通过 PostCSS 将以下内容:\n\n```vue\n<style scoped>\n.example {\n color: red;\n}\n</style>\n\n<template>\n <div class=\"example\">hi</div>\n</template>\n```\n\n转换为:\n\n```vue\n<style>\n.example[data-v-f3f3eg9] {\n color: red;\n}\n</style>\n\n<template>\n <div class=\"example\" data-v-f3f3eg9>hi</div>\n</template>\n```\n\n### 子组件的根元素 \n\n使用 `scoped` 后,父组件的样式将不会渗透到子组件中。不过,子组件的根节点会同时被父组件的作用域样式和子组件的作用域样式影响。这样设计是为了让父组件可以从布局的角度出发,调整其子组件根元素的样式。\n\n### 深度选择器 \n\n处于 `scoped` 样式中的选择器如果想要做更“深度”的选择,也即:影响到子组件,可以使用 `:deep()` 这个伪类:\n\n```vue\n<style scoped>\n.a :deep(.b) {\n /* ... */\n}\n</style>\n```\n\n上面的代码会被编译成:\n\n```css\n.a[data-v-f3f3eg9] .b {\n /* ... */\n}\n```\n\n:::tip\n通过 `v-html` 创建的 DOM 内容不会被作用域样式影响,但你仍然可以使用深度选择器来设置其样式。\n:::\n\n### 插槽选择器 \n\n默认情况下,作用域样式不会影响到 `<slot/>` 渲染出来的内容,因为它们被认为是父组件所持有并传递进来的。使用 `:slotted` 伪类以明确地将插槽内容作为选择器的目标:\n\n```vue\n<style scoped>\n:slotted(div) {\n color: red;\n}\n</style>\n```\n\n### 全局选择器 \n\n如果想让其中一个样式规则应用到全局,比起另外创建一个 `<style>`,可以使用 `:global` 伪类来实现 (看下面的代码):\n\n```vue\n<style scoped>\n:global(.red) {\n color: red;\n}\n</style>\n```\n\n### 混合使用局部与全局样式 \n\n你也可以在同一个组件中同时包含作用域样式和非作用域样式:\n\n```vue\n<style>\n/* 全局样式 */\n</style>\n\n<style scoped>\n/* 局部样式 */\n</style>\n```\n\n### 作用域样式须知 \n\n- **作用域样式并没有消除对 class 的需求**。由于浏览器渲染各种各样 CSS 选择器的方式,`p { color: red }` 结合作用域样式使用时 (即当与 attribute 选择器组合的时候) 会慢很多倍。如果你使用 class 或者 id 来替代,例如 `.example { color: red }`,那你几乎就可以避免性能的损失。\n\n- **小心递归组件中的后代选择器**!对于一个使用了 `.a .b` 选择器的样式规则来说,如果匹配到 `.a` 的元素包含了一个递归的子组件,那么所有的在那个子组件中的 `.b` 都会匹配到这条样式规则。\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-css-features.html#scoped-css" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-css-features.html#scoped-css" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-css-features.html#scoped-css" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-css-features.html#scoped-css" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-css-features.html#scoped-css" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-css-features.html#scoped-css" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-css-features.html#scoped-css" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-css-features.html#scoped-css" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-css-features.html#scoped-css" + } + ] + }, + { + name: "module", + valueSet: "v", + description: { + kind: "markdown", + value: "\n一个 `<style module>` 标签会被编译为 [CSS Modules](https://github.com/css-modules/css-modules) 并且将生成的 CSS class 作为 `$style` 对象暴露给组件:\n\n```vue\n<template>\n <p :class=\"$style.red\">This should be red</p>\n</template>\n\n<style module>\n.red {\n color: red;\n}\n</style>\n```\n\n得出的 class 将被哈希化以避免冲突,实现了同样的将 CSS 仅作用于当前组件的效果。\n\n参考 [CSS Modules spec](https://github.com/css-modules/css-modules) 以查看更多详情,例如 [global exceptions](https://github.com/css-modules/css-modules#exceptions) 和 [composition](https://github.com/css-modules/css-modules#composition)。\n\n### 自定义注入名称 \n\n你可以通过给 `module` attribute 一个值来自定义注入 class 对象的属性名:\n\n```vue\n<template>\n <p :class=\"classes.red\">red</p>\n</template>\n\n<style module=\"classes\">\n.red {\n color: red;\n}\n</style>\n```\n\n### 与组合式 API 一同使用 \n\n可以通过 `useCssModule` API 在 `setup()` 和 `<script setup>` 中访问注入的 class。对于使用了自定义注入名称的 `<style module>` 块,`useCssModule` 接收一个匹配的 `module` attribute 值作为第一个参数:\n\n```js\nimport { useCssModule } from 'vue'\n\n// 在 setup() 作用域中...\n// 默认情况下, 返回 <style module> 的 class\nuseCssModule()\n\n// 具名情况下, 返回 <style module=\"classes\"> 的 class\nuseCssModule('classes')\n```\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-css-features.html#css-modules" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-css-features.html#css-modules" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-css-features.html#css-modules" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-css-features.html#css-modules" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-css-features.html#css-modules" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-css-features.html#css-modules" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-css-features.html#css-modules" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-css-features.html#css-modules" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-css-features.html#css-modules" + } + ] + } + ], + description: { + kind: "markdown", + value: "\n- 每个 `*.vue` 文件可以包含多个 `<style>` 标签。\n\n- 一个 `<style>` 标签可以使用 `scoped` 或 `module` attribute (查看 [SFC 样式功能](https://cn.vuejs.org/api/sfc-css-features.html)了解更多细节) 来帮助封装当前组件的样式。使用了不同封装模式的多个 `<style>` 标签可以被混合入同一个组件。\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#style" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#style" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#style" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#style" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#style" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#style" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#style" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#style" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#style" + } + ] + }, + { + name: "自定义块", + attributes: [ + { + name: "src", + description: { + kind: "markdown", + value: "\n如果你更喜欢将 `*.vue` 组件分散到多个文件中,可以为一个语块使用 `src` 这个 attribute 来导入一个外部文件:\n\n```vue\n<template src=\"./template.html\"></template>\n<style src=\"./style.css\"></style>\n<script src=\"./script.js\"></script>\n```\n\n请注意 `src` 导入和 JS 模块导入遵循相同的路径解析规则,这意味着:\n\n- 相对路径需要以 `./` 开头\n- 你也可以从 npm 依赖中导入资源\n\n```vue\n<!-- 从所安装的 \"todomvc-app-css\" npm 包中导入一个文件 -->\n<style src=\"todomvc-app-css/index.css\" />\n```\n\n`src` 导入对自定义语块也同样适用:\n\n```vue\n<unit-test src=\"./unit-test.js\">\n</unit-test>\n```\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#src-imports" + } + ] + } + ], + description: { + kind: "markdown", + value: "\n在一个 `*.vue` 文件中可以为任何项目特定需求使用额外的自定义块。举例来说,一个用作写文档的 `<docs>` 块。这里是一些自定义块的真实用例:\n\n- [Gridsome:`<page-query>`](https://gridsome.org/docs/querying-data/)\n- [vite-plugin-vue-gql:`<gql>`](https://github.com/wheatjs/vite-plugin-vue-gql)\n- [vue-i18n:`<i18n>`](https://github.com/intlify/bundle-tools/tree/main/packages/vite-plugin-vue-i18n#i18n-custom-block)\n\n自定义块的处理需要依赖工具链。如果你想要在构建中集成你的自定义语块,请参见 [SFC 自定义块集成工具链指南](https://cn.vuejs.org/guide/scaling-up/tooling.html#sfc-custom-block-integrations)获取更多细节。\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#自定义块" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#自定义块" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#自定义块" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#自定义块" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#自定义块" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#自定义块" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#自定义块" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#自定义块" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#自定义块" + } + ] + } +]; +const globalAttributes$c = [ + { + name: "lang", + description: { + kind: "markdown", + value: "\n代码块可以使用 `lang` 这个 attribute 来声明预处理器语言,最常见的用例就是在 `<script>` 中使用 TypeScript:\n\n```html\n<script lang=\"ts\">\n // use TypeScript\n</script>\n```\n\n`lang` 在任意块上都能使用,比如我们可以在 `<style>` 标签中使用 [Sass](https://sass-lang.com/) 或是 `<template>` 中使用 [Pug](https://pugjs.org/api/getting-started.html):\n\n```html\n<template lang=\"pug\">\np {{ msg }}\n</template>\n\n<style lang=\"scss\">\n $primary-color: #333;\n body {\n color: $primary-color;\n }\n</style>\n```\n\n注意对不同预处理器的集成会根据你所使用的工具链而有所不同,具体细节请查看相应的工具链文档来确认:\n\n- [Vite](https://cn.vitejs.dev/guide/features.html#css-pre-processors)\n- [Vue CLI](https://cli.vuejs.org/zh/guide/css.html#%E9%A2%84%E5%A4%84%E7%90%86%E5%99%A8)\n- [webpack + vue-loader](https://vue-loader.vuejs.org/zh/guide/pre-processors.html#%E4%BD%BF%E7%94%A8%E9%A2%84%E5%A4%84%E7%90%86%E5%99%A8)\n" + }, + values: [ + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#pre-processors" + } + ] + }, + { + name: "src", + description: { + kind: "markdown", + value: "\n如果你更喜欢将 `*.vue` 组件分散到多个文件中,可以为一个语块使用 `src` 这个 attribute 来导入一个外部文件:\n\n```vue\n<template src=\"./template.html\"></template>\n<style src=\"./style.css\"></style>\n<script src=\"./script.js\"></script>\n```\n\n请注意 `src` 导入和 JS 模块导入遵循相同的路径解析规则,这意味着:\n\n- 相对路径需要以 `./` 开头\n- 你也可以从 npm 依赖中导入资源\n\n```vue\n<!-- 从所安装的 \"todomvc-app-css\" npm 包中导入一个文件 -->\n<style src=\"todomvc-app-css/index.css\" />\n```\n\n`src` 导入对自定义语块也同样适用:\n\n```vue\n<unit-test src=\"./unit-test.js\">\n</unit-test>\n```\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#src-imports" + } + ] + } +]; +var require$$8 = { + version: version$c, + tags: tags$5, + globalAttributes: globalAttributes$c +}; + +const version$b = 1.1; +const tags$4 = [ + { + name: "template", + attributes: [ + { + name: "src", + description: { + kind: "markdown", + value: "\nSe preferirmos separar os nossos componentes `*.vue` em vários ficheiros, podemos usar o atributo `src` para importar um ficheiro externo para um bloco de linguagem:\n\n```vue\n<template src=\"./template.html\"></template>\n<style src=\"./style.css\"></style>\n<script src=\"./script.js\"></script>\n```\n\nDevemos estar ciente de que as importações de `src` seguem as mesmas regras de resolução de caminho que as requisições de módulo da Webpack, o que significa que:\n\n- Os caminhos relativos precisam começar com `./`\n- Nós podemos importar recursos a partir das dependências do npm:\n\n```vue\n<!-- importar um ficheiro dum pacote \"todomvc-app-css\" instalado -->\n<style src=\"todomvc-app-css/index.css\" />\n```\n\nAs importações de `src` também funcionam com os blocos personalizados, por exemplo:\n\n```vue\n<unit-test src=\"./unit-test.js\">\n</unit-test>\n```\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#src-imports" + } + ] + }, + { + name: "lang", + description: { + kind: "markdown", + value: "\nOs blocos podem declarar linguagens pré-processadoras usando o atributo `lang`. O caso mais comum é usar TypeScript para o bloco `<script>`:\n\n\n```html\n<script lang=\"ts\">\n // usar TypeScript\n</script>\n```\n\n`lang` pode ser aplicado à qualquer bloco - por exemplo, podemos usar o `<style>` com a [Sass](https://sass-docs-pt.netlify.app/) e o `<template>` com a [Pug](https://pugjs.org/api/getting-started.html):\n\n```html\n<template lang=\"pug\">\np {{ msg }}\n</template>\n\n<style lang=\"scss\">\n $primary-color: #333;\n body {\n color: $primary-color;\n }\n</style>\n```\n\nNota que a integração com os vários pré-processadores pode diferir conforme a cadeia de ferramenta. Consulte a respetiva documentação por exemplos:\n\n- [Vite](https://pt.vitejs.dev/guide/features#css-pre-processors)\n- [Vue CLI](https://cli.vuejs.org/guide/css.html#pre-processors)\n- [webpack + vue-loader](https://vue-loader.vuejs.org/guide/pre-processors.html#using-pre-processors)\n" + }, + values: [ + { + name: "html" + }, + { + name: "pug" + } + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#pre-processors" + } + ] + } + ], + description: { + kind: "markdown", + value: "\n- Cada ficheiro `*.vue` pode conter no máximo um bloco `<template>` de alto nível.\n\n- O conteúdo será extraído e passado ao `@vuw/compiler-dom`, pré-compilado dentro de funções de interpretação de JavaScript, e anexado ao componente exportado como sua opção `render`.\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#template" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#template" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#template" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#template" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#template" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#template" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#template" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#template" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#template" + } + ] + }, + { + name: "script", + attributes: [ + { + name: "src", + description: { + kind: "markdown", + value: "\nSe preferirmos separar os nossos componentes `*.vue` em vários ficheiros, podemos usar o atributo `src` para importar um ficheiro externo para um bloco de linguagem:\n\n```vue\n<template src=\"./template.html\"></template>\n<style src=\"./style.css\"></style>\n<script src=\"./script.js\"></script>\n```\n\nDevemos estar ciente de que as importações de `src` seguem as mesmas regras de resolução de caminho que as requisições de módulo da Webpack, o que significa que:\n\n- Os caminhos relativos precisam começar com `./`\n- Nós podemos importar recursos a partir das dependências do npm:\n\n```vue\n<!-- importar um ficheiro dum pacote \"todomvc-app-css\" instalado -->\n<style src=\"todomvc-app-css/index.css\" />\n```\n\nAs importações de `src` também funcionam com os blocos personalizados, por exemplo:\n\n```vue\n<unit-test src=\"./unit-test.js\">\n</unit-test>\n```\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#src-imports" + } + ] + }, + { + name: "lang", + description: { + kind: "markdown", + value: "\nOs blocos podem declarar linguagens pré-processadoras usando o atributo `lang`. O caso mais comum é usar TypeScript para o bloco `<script>`:\n\n\n```html\n<script lang=\"ts\">\n // usar TypeScript\n</script>\n```\n\n`lang` pode ser aplicado à qualquer bloco - por exemplo, podemos usar o `<style>` com a [Sass](https://sass-docs-pt.netlify.app/) e o `<template>` com a [Pug](https://pugjs.org/api/getting-started.html):\n\n```html\n<template lang=\"pug\">\np {{ msg }}\n</template>\n\n<style lang=\"scss\">\n $primary-color: #333;\n body {\n color: $primary-color;\n }\n</style>\n```\n\nNota que a integração com os vários pré-processadores pode diferir conforme a cadeia de ferramenta. Consulte a respetiva documentação por exemplos:\n\n- [Vite](https://pt.vitejs.dev/guide/features#css-pre-processors)\n- [Vue CLI](https://cli.vuejs.org/guide/css.html#pre-processors)\n- [webpack + vue-loader](https://vue-loader.vuejs.org/guide/pre-processors.html#using-pre-processors)\n" + }, + values: [ + { + name: "ts" + }, + { + name: "js" + }, + { + name: "tsx" + }, + { + name: "jsx" + } + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#pre-processors" + } + ] + }, + { + name: "generic" + }, + { + name: "setup", + valueSet: "v", + description: { + kind: "markdown", + value: "\n- Cada ficheiro `*.vue` pode conter no máximo um bloco `<script setup>` (excluindo o `<script>` normal).\n\n- O programa é pré-processado e usado como a função `setup()` do componente, o que significa que será executado **para cada instância do componente**. Os vínculos de alto nível no `<script setup>` são automaticamente expostos ao modelo de marcação. Para mais detalhes, consulte a [documentação dedicada ao `<script setup>`](https://pt.vuejs.org/api/sfc-script-setup.html).\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#script-setup" + } + ] + } + ], + description: { + kind: "markdown", + value: "\n- Cada ficheiro `*.vue` poder conter no máximo um bloco `<script>` de alto nível (excluindo [`<script setup>`](https://pt.vuejs.org/api/sfc-script-setup.html)).\n\n- O programa é executado como um módulo de ECMAScript.\n\n- A **exportação padrão** deve ser um objeto de opções de componente da Vue, ou como um objeto simples ou como valor de retorno da [`defineComponent`](https://pt.vuejs.org/api/general.html#definecomponent).\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#script" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#script" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#script" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#script" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#script" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#script" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#script" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#script" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#script" + } + ] + }, + { + name: "script setup", + attributes: [ + ], + description: { + kind: "markdown", + value: "\n- Cada ficheiro `*.vue` pode conter no máximo um bloco `<script setup>` (excluindo o `<script>` normal).\n\n- O programa é pré-processado e usado como a função `setup()` do componente, o que significa que será executado **para cada instância do componente**. Os vínculos de alto nível no `<script setup>` são automaticamente expostos ao modelo de marcação. Para mais detalhes, consulte a [documentação dedicada ao `<script setup>`](https://pt.vuejs.org/api/sfc-script-setup.html).\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#script-setup" + } + ] + }, + { + name: "style", + attributes: [ + { + name: "src", + description: { + kind: "markdown", + value: "\nSe preferirmos separar os nossos componentes `*.vue` em vários ficheiros, podemos usar o atributo `src` para importar um ficheiro externo para um bloco de linguagem:\n\n```vue\n<template src=\"./template.html\"></template>\n<style src=\"./style.css\"></style>\n<script src=\"./script.js\"></script>\n```\n\nDevemos estar ciente de que as importações de `src` seguem as mesmas regras de resolução de caminho que as requisições de módulo da Webpack, o que significa que:\n\n- Os caminhos relativos precisam começar com `./`\n- Nós podemos importar recursos a partir das dependências do npm:\n\n```vue\n<!-- importar um ficheiro dum pacote \"todomvc-app-css\" instalado -->\n<style src=\"todomvc-app-css/index.css\" />\n```\n\nAs importações de `src` também funcionam com os blocos personalizados, por exemplo:\n\n```vue\n<unit-test src=\"./unit-test.js\">\n</unit-test>\n```\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#src-imports" + } + ] + }, + { + name: "lang", + description: { + kind: "markdown", + value: "\nOs blocos podem declarar linguagens pré-processadoras usando o atributo `lang`. O caso mais comum é usar TypeScript para o bloco `<script>`:\n\n\n```html\n<script lang=\"ts\">\n // usar TypeScript\n</script>\n```\n\n`lang` pode ser aplicado à qualquer bloco - por exemplo, podemos usar o `<style>` com a [Sass](https://sass-docs-pt.netlify.app/) e o `<template>` com a [Pug](https://pugjs.org/api/getting-started.html):\n\n```html\n<template lang=\"pug\">\np {{ msg }}\n</template>\n\n<style lang=\"scss\">\n $primary-color: #333;\n body {\n color: $primary-color;\n }\n</style>\n```\n\nNota que a integração com os vários pré-processadores pode diferir conforme a cadeia de ferramenta. Consulte a respetiva documentação por exemplos:\n\n- [Vite](https://pt.vitejs.dev/guide/features#css-pre-processors)\n- [Vue CLI](https://cli.vuejs.org/guide/css.html#pre-processors)\n- [webpack + vue-loader](https://vue-loader.vuejs.org/guide/pre-processors.html#using-pre-processors)\n" + }, + values: [ + { + name: "css" + }, + { + name: "scss" + }, + { + name: "less" + }, + { + name: "stylus" + }, + { + name: "postcss" + }, + { + name: "sass" + } + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#pre-processors" + } + ] + }, + { + name: "scoped", + valueSet: "v", + description: { + kind: "markdown", + value: "\nQuando um marcador `<style>` tiver o atributo `scoped`, o seu CSS apenas aplicar-se-á aos elementos do componente atual. Isto é semelhante ao encapsulamento de estilo encontrado no DOM de Sombra. Ele vem com algumas advertências, mas não exige quaisquer preenchimento de funcionalidade. Ele é alcançado usando PostCSS para transformar o seguinte:\n\n```vue\n<style scoped>\n.example {\n color: red;\n}\n</style>\n\n<template>\n <div class=\"example\">hi</div>\n</template>\n```\n\nNo seguinte:\n\n```vue\n<style>\n.example[data-v-f3f3eg9] {\n color: red;\n}\n</style>\n\n<template>\n <div class=\"example\" data-v-f3f3eg9>hi</div>\n</template>\n```\n\n### Elementos de Raiz do Componente Filho \n\nCom `scoped`, os estilos do componente pai não passarão para os componentes filhos. No entanto, um nó de raiz do componente filho será afetado por ambas CSS isolada do pai e a CSS isolada do filho. Isto é de propósito para que o pai possa estilizar o elemento de raiz filho para fins de disposição.\n\n### Seletores Profundos \n\nSe quisermos que um seletor nos estilos `scoped` torne-se \"profundo\", ou seja, afete componentes filho, podemos usar a pseudo-classe `:deep()`:\n\n```vue\n<style scoped>\n.a :deep(.b) {\n /* ... */\n}\n</style>\n```\n\nO código acima será compilado para:\n\n```css\n.a[data-v-f3f3eg9] .b {\n /* ... */\n}\n```\n\n:::tip DICA\nOs conteúdos do DOM criados com `v-html` não são afetados pelos estilos isolados, mas ainda podemos estilizá-los usando seletores profundos.\n:::\n\n### Seletores Inseridos \n\nPor padrão, os estilos isolados não afetam os conteúdos interpretados pelo `<slot/>`, uma vez que são considerados ser propriedade do componente pai que está a passá-los. Para explicitamente atingir o conteúdo da ranhura, usamos a pseudo-classe `:slotted`:\n\n```vue\n<style scoped>\n:slotted(div) {\n color: red;\n}\n</style>\n```\n\n### Seletores Globais \n\nSe quisermos que apenas uma regra aplique-se globalmente, podemos usar a pseudo-classe `:global` ao invés de criar um outro `<style>` (consulte o exemplo abaixo):\n\n```vue\n<style scoped>\n:global(.red) {\n color: red;\n}\n</style>\n```\n\n### Misturando Estilos Locais e Globais \n\nNós também podemos incluir ambos estilos isolados e não isolados no mesmo componente:\n\n```vue\n<style>\n/* estilos globais */\n</style>\n\n<style scoped>\n/* estilos locais */\n</style>\n```\n\n### Dicas de Estilo Isolado \n\n- **Os estilos isolados não eliminam a necessidade de classes**. Por causa da maneira que os navegadores interpretam os vários seletores de CSS, `p { color: red }` será muitas vezes mais lento quando isolado (ou seja, quando combinado com um seletor de atributo). Se usarmos as classes (por exemplo, `.class-name`) ou identificadores (por exemplo, `#id-name`), tal como em `.example { color: red }`, então eliminamos virtualmente este impacto de desempenho.\n\n- **Temos que ter cuidado com os seletores de descendentes nos componentes recursivos!** Para um regara de CSS com o seletor `.a .b`, se o elemento que corresponde `.a` contiver um componente filho recursivo, então todos os `.b` neste componente filho serão correspondidos pela regra.\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-css-features.html#scoped-css" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-css-features.html#scoped-css" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-css-features.html#scoped-css" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-css-features.html#scoped-css" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-css-features.html#scoped-css" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-css-features.html#scoped-css" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-css-features.html#scoped-css" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-css-features.html#scoped-css" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-css-features.html#scoped-css" + } + ] + }, + { + name: "module", + valueSet: "v", + description: { + kind: "markdown", + value: "\nUm marcador `<style module>` é compilado como [Módulos de CSS](https://github.com/css-modules/css-modules) e expõe as classes de CSS resultantes ao componente como um objeto sob a chave de `$style`:\n\n```vue\n<template>\n <p :class=\"$style.red\">This should be red</p>\n</template>\n\n<style module>\n.red {\n color: red;\n}\n</style>\n```\n\nAs classes resultantes têm o seu nome gerados com caracteres embaralhados para evitar colisões, alcançando o mesmo efeito de isolar o CSS apenas ao componente atual.\n\nConsulte a [especificação dos Módulos de CSS](https://github.com/css-modules/css-modules) por mais detalhes, tais como [exceções globais](https://github.com/css-modules/css-modules#exceptions) e [composição](https://github.com/css-modules/css-modules#composition).\n\n### Nome de Injeção Personalizado \n\nNós podemos personalizar a chave da propriedade do objeto de classes injetadas dando ao atributo `module` um valor:\n\n```vue\n<template>\n <p :class=\"classes.red\">red</p>\n</template>\n\n<style module=\"classes\">\n.red {\n color: red;\n}\n</style>\n```\n\n### Uso com API de Composição \n\nAs classes injetadas podem ser acessadas na `setup()` e no `<script setup>` através da API `useCssModule`. Para os blocos `<style module>` com nomes de injeção personalizados, `useCssModule` aceita o valor do atributo `module` correspondente como primeiro argumento:\n\n```js\nimport { useCssModule } from 'vue'\n\n// dentro do âmbito de setup()...\n// padrão, retorna as classes do marcador `<style module>`\nuseCssModule()\n\n// personalizado, retorna as classes do marcador `<style module=\"classes\">`\nuseCssModule('classes')\n```\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-css-features.html#css-modules" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-css-features.html#css-modules" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-css-features.html#css-modules" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-css-features.html#css-modules" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-css-features.html#css-modules" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-css-features.html#css-modules" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-css-features.html#css-modules" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-css-features.html#css-modules" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-css-features.html#css-modules" + } + ] + } + ], + description: { + kind: "markdown", + value: "\n- Um único ficheiro `*.vue` pode conter vários marcadores de `<style>`.\n\n- Um marcador `<style>` pode ter os atributos `scoped` ou `module` (consulte [Funcionalidades de Estilo do Componente de Ficheiro Único](https://pt.vuejs.org/api/sfc-css-features.html) por mais detalhes) para ajudar a encapsular os estilos ao componente atual. Vários marcadores de `<style>` com diferentes modos de encapsulamento podem ser misturados no mesmo componente.\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#style" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#style" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#style" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#style" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#style" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#style" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#style" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#style" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#style" + } + ] + }, + { + name: "Blocos Personalizados", + attributes: [ + { + name: "src", + description: { + kind: "markdown", + value: "\nSe preferirmos separar os nossos componentes `*.vue` em vários ficheiros, podemos usar o atributo `src` para importar um ficheiro externo para um bloco de linguagem:\n\n```vue\n<template src=\"./template.html\"></template>\n<style src=\"./style.css\"></style>\n<script src=\"./script.js\"></script>\n```\n\nDevemos estar ciente de que as importações de `src` seguem as mesmas regras de resolução de caminho que as requisições de módulo da Webpack, o que significa que:\n\n- Os caminhos relativos precisam começar com `./`\n- Nós podemos importar recursos a partir das dependências do npm:\n\n```vue\n<!-- importar um ficheiro dum pacote \"todomvc-app-css\" instalado -->\n<style src=\"todomvc-app-css/index.css\" />\n```\n\nAs importações de `src` também funcionam com os blocos personalizados, por exemplo:\n\n```vue\n<unit-test src=\"./unit-test.js\">\n</unit-test>\n```\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#src-imports" + } + ] + } + ], + description: { + kind: "markdown", + value: "\nOs blocos personalizados podem ser incluídos num ficheiro `*.vue` por qualquer necessidade específica do projeto, por exemplo um bloco `<docs>`. Alguns exemplos do mundo real de blocos personalizados incluem:\n\n- [Gridsome: `<page-query>`](https://gridsome.org/docs/querying-data/)\n- [vite-plugin-vue-gql: `<gql>`](https://github.com/wheatjs/vite-plugin-vue-gql)\n- [vue-i18n: `<i18n>`](https://github.com/intlify/bundle-tools/tree/main/packages/vite-plugin-vue-i18n#i18n-custom-block)\n\nA manipulação dos blocos personalizados dependerá do ferramental - se quisermos construir as nossas próprias integrações de bloco personalizado, podemos consultar a [seção de ferramental de integrações de bloco personalizado do Componente de Ficheiro Único](https://pt.vuejs.org/guide/scaling-up/tooling.html#sfc-custom-block-integrations) por mais detalhes.\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#blocos-personalizados" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#blocos-personalizados" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#blocos-personalizados" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#blocos-personalizados" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#blocos-personalizados" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#blocos-personalizados" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#blocos-personalizados" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#blocos-personalizados" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#blocos-personalizados" + } + ] + } +]; +const globalAttributes$b = [ + { + name: "lang", + description: { + kind: "markdown", + value: "\nOs blocos podem declarar linguagens pré-processadoras usando o atributo `lang`. O caso mais comum é usar TypeScript para o bloco `<script>`:\n\n\n```html\n<script lang=\"ts\">\n // usar TypeScript\n</script>\n```\n\n`lang` pode ser aplicado à qualquer bloco - por exemplo, podemos usar o `<style>` com a [Sass](https://sass-docs-pt.netlify.app/) e o `<template>` com a [Pug](https://pugjs.org/api/getting-started.html):\n\n```html\n<template lang=\"pug\">\np {{ msg }}\n</template>\n\n<style lang=\"scss\">\n $primary-color: #333;\n body {\n color: $primary-color;\n }\n</style>\n```\n\nNota que a integração com os vários pré-processadores pode diferir conforme a cadeia de ferramenta. Consulte a respetiva documentação por exemplos:\n\n- [Vite](https://pt.vitejs.dev/guide/features#css-pre-processors)\n- [Vue CLI](https://cli.vuejs.org/guide/css.html#pre-processors)\n- [webpack + vue-loader](https://vue-loader.vuejs.org/guide/pre-processors.html#using-pre-processors)\n" + }, + values: [ + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#pre-processors" + } + ] + }, + { + name: "src", + description: { + kind: "markdown", + value: "\nSe preferirmos separar os nossos componentes `*.vue` em vários ficheiros, podemos usar o atributo `src` para importar um ficheiro externo para um bloco de linguagem:\n\n```vue\n<template src=\"./template.html\"></template>\n<style src=\"./style.css\"></style>\n<script src=\"./script.js\"></script>\n```\n\nDevemos estar ciente de que as importações de `src` seguem as mesmas regras de resolução de caminho que as requisições de módulo da Webpack, o que significa que:\n\n- Os caminhos relativos precisam começar com `./`\n- Nós podemos importar recursos a partir das dependências do npm:\n\n```vue\n<!-- importar um ficheiro dum pacote \"todomvc-app-css\" instalado -->\n<style src=\"todomvc-app-css/index.css\" />\n```\n\nAs importações de `src` também funcionam com os blocos personalizados, por exemplo:\n\n```vue\n<unit-test src=\"./unit-test.js\">\n</unit-test>\n```\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#src-imports" + } + ] + } +]; +var require$$9 = { + version: version$b, + tags: tags$4, + globalAttributes: globalAttributes$b +}; + +const version$a = 1.1; +const tags$3 = [ + { + name: "template", + attributes: [ + { + name: "src", + description: { + kind: "markdown", + value: "\n`*.vue` 컴포넌트를 여러 파일로 분할하는 것을 선호하는 경우,\n`src` 속성을 사용하여 언어 블록에서 외부 파일을 가져올 수 있습니다:\n\n```vue\n<template src=\"./template.html\"></template>\n<style src=\"./style.css\"></style>\n<script src=\"./script.js\"></script>\n```\n\n`src` 가져오기는 웹팩 모듈 요청과 동일한 경로 확인 규칙을 따릅니다.\n즉, 다음을 의미합니다:\n\n- 상대 경로는 `./`로 시작해야 함.\n- npm 의존성에서 리소스를 가져올 수 있음.\n\n```vue\n<!-- 설치된 \"todomvc-app-css\" npm 패키지에서 파일 가져오기 -->\n<style src=\"todomvc-app-css/index.css\" />\n```\n\n`src` 가져오기는 커스텀 블록에서도 작동합니다. 예를들어:\n\n```vue\n<unit-test src=\"./unit-test.js\">\n</unit-test>\n```\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#src-imports" + } + ] + }, + { + name: "lang", + description: { + kind: "markdown", + value: "\n블록은 `lang` 속성을 사용하여 전처리기 언어를 선언할 수 있습니다.\n가장 일반적인 경우는 `<script>` 블록에 TypeScript를 사용하는 것입니다:\n\n```html\n<script lang=\"ts\">\n // TypeScript 사용\n</script>\n```\n\n`lang`은 모든 블록에 적용할 수 있습니다.\n예를 들어 `<style>`에서는 [Sass](https://sass-lang.com/)를, `<template>`에서는 [Pug](https://pugjs.org/api/getting-started)를 사용할 수 있습니다:\n\n```html\n<template lang=\"pug\">\np {{ msg }}\n</template>\n\n<style lang=\"scss\">\n $primary-color: #333;\n body {\n color: $primary-color;\n }\n</style>\n```\n\n다양한 전처리기와의 통합은 툴체인에 따라 다를 수 있습니다.\n예제를 보려면 해당 문서를 확인하십시오:\n\n- [Vite](https://vitejs.dev/guide/features#css-pre-processors)\n- [Vue CLI](https://cli.vuejs.org/guide/css#pre-processors)\n- [webpack + vue-loader](https://vue-loader.vuejs.org/guide/pre-processors#using-pre-processors)\n" + }, + values: [ + { + name: "html" + }, + { + name: "pug" + } + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#pre-processors" + } + ] + } + ], + description: { + kind: "markdown", + value: "\n- 각 `*.vue` 파일은 최상위 `<template>` 블록을 하나만 포함할 수 있습니다.\n\n- 컨텐츠는 추출되어 `@vue/compiler-dom`으로 전달되고,\n JavaScript 렌더 함수로 사전 컴파일되며,\n 내보낸 컴포넌트에 `render` 옵션으로 첨부됩니다.\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#template" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#template" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#template" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#template" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#template" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#template" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#template" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#template" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#template" + } + ] + }, + { + name: "script", + attributes: [ + { + name: "src", + description: { + kind: "markdown", + value: "\n`*.vue` 컴포넌트를 여러 파일로 분할하는 것을 선호하는 경우,\n`src` 속성을 사용하여 언어 블록에서 외부 파일을 가져올 수 있습니다:\n\n```vue\n<template src=\"./template.html\"></template>\n<style src=\"./style.css\"></style>\n<script src=\"./script.js\"></script>\n```\n\n`src` 가져오기는 웹팩 모듈 요청과 동일한 경로 확인 규칙을 따릅니다.\n즉, 다음을 의미합니다:\n\n- 상대 경로는 `./`로 시작해야 함.\n- npm 의존성에서 리소스를 가져올 수 있음.\n\n```vue\n<!-- 설치된 \"todomvc-app-css\" npm 패키지에서 파일 가져오기 -->\n<style src=\"todomvc-app-css/index.css\" />\n```\n\n`src` 가져오기는 커스텀 블록에서도 작동합니다. 예를들어:\n\n```vue\n<unit-test src=\"./unit-test.js\">\n</unit-test>\n```\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#src-imports" + } + ] + }, + { + name: "lang", + description: { + kind: "markdown", + value: "\n블록은 `lang` 속성을 사용하여 전처리기 언어를 선언할 수 있습니다.\n가장 일반적인 경우는 `<script>` 블록에 TypeScript를 사용하는 것입니다:\n\n```html\n<script lang=\"ts\">\n // TypeScript 사용\n</script>\n```\n\n`lang`은 모든 블록에 적용할 수 있습니다.\n예를 들어 `<style>`에서는 [Sass](https://sass-lang.com/)를, `<template>`에서는 [Pug](https://pugjs.org/api/getting-started)를 사용할 수 있습니다:\n\n```html\n<template lang=\"pug\">\np {{ msg }}\n</template>\n\n<style lang=\"scss\">\n $primary-color: #333;\n body {\n color: $primary-color;\n }\n</style>\n```\n\n다양한 전처리기와의 통합은 툴체인에 따라 다를 수 있습니다.\n예제를 보려면 해당 문서를 확인하십시오:\n\n- [Vite](https://vitejs.dev/guide/features#css-pre-processors)\n- [Vue CLI](https://cli.vuejs.org/guide/css#pre-processors)\n- [webpack + vue-loader](https://vue-loader.vuejs.org/guide/pre-processors#using-pre-processors)\n" + }, + values: [ + { + name: "ts" + }, + { + name: "js" + }, + { + name: "tsx" + }, + { + name: "jsx" + } + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#pre-processors" + } + ] + }, + { + name: "generic" + }, + { + name: "setup", + valueSet: "v", + description: { + kind: "markdown", + value: "\n- 각 `*.vue` 파일은 하나의 `<script setup>` 블록만 포함할 수 있습니다(일반 `<script>` 제외).\n\n- 스크립트는 전처리되어 컴포넌트의 `setup()` 함수로 사용됩니다.\n 즉, **컴포넌트의 각 인스턴스**에 대해 실행됩니다.\n `<script setup>` 내에 최상위 바인딩은 템플릿에 자동으로 노출됩니다.\n 자세한 내용은 [`<script setup>` 전용 문서](https://ko.vuejs.org/api/sfc-script-setup.html)를 참고하십시오.\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#script-setup" + } + ] + } + ], + description: { + kind: "markdown", + value: "\n- 각 `*.vue` 파일은 하나의 `<script>` 블록만 포함할 수 있습니다([`<script setup>`](https://ko.vuejs.org/api/sfc-script-setup.html) 제외).\n\n- 스크립트는 ES 모듈로 실행됩니다.\n\n- **기본 내보내기**는 일반 객체 또는 [defineComponent](https://ko.vuejs.org/api/general.html#definecomponent)의 반환 값으로 Vue 컴포넌트 옵션 객체여야 합니다.\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#script" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#script" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#script" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#script" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#script" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#script" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#script" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#script" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#script" + } + ] + }, + { + name: "script setup", + attributes: [ + ], + description: { + kind: "markdown", + value: "\n- 각 `*.vue` 파일은 하나의 `<script setup>` 블록만 포함할 수 있습니다(일반 `<script>` 제외).\n\n- 스크립트는 전처리되어 컴포넌트의 `setup()` 함수로 사용됩니다.\n 즉, **컴포넌트의 각 인스턴스**에 대해 실행됩니다.\n `<script setup>` 내에 최상위 바인딩은 템플릿에 자동으로 노출됩니다.\n 자세한 내용은 [`<script setup>` 전용 문서](https://ko.vuejs.org/api/sfc-script-setup.html)를 참고하십시오.\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#script-setup" + } + ] + }, + { + name: "style", + attributes: [ + { + name: "src", + description: { + kind: "markdown", + value: "\n`*.vue` 컴포넌트를 여러 파일로 분할하는 것을 선호하는 경우,\n`src` 속성을 사용하여 언어 블록에서 외부 파일을 가져올 수 있습니다:\n\n```vue\n<template src=\"./template.html\"></template>\n<style src=\"./style.css\"></style>\n<script src=\"./script.js\"></script>\n```\n\n`src` 가져오기는 웹팩 모듈 요청과 동일한 경로 확인 규칙을 따릅니다.\n즉, 다음을 의미합니다:\n\n- 상대 경로는 `./`로 시작해야 함.\n- npm 의존성에서 리소스를 가져올 수 있음.\n\n```vue\n<!-- 설치된 \"todomvc-app-css\" npm 패키지에서 파일 가져오기 -->\n<style src=\"todomvc-app-css/index.css\" />\n```\n\n`src` 가져오기는 커스텀 블록에서도 작동합니다. 예를들어:\n\n```vue\n<unit-test src=\"./unit-test.js\">\n</unit-test>\n```\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#src-imports" + } + ] + }, + { + name: "lang", + description: { + kind: "markdown", + value: "\n블록은 `lang` 속성을 사용하여 전처리기 언어를 선언할 수 있습니다.\n가장 일반적인 경우는 `<script>` 블록에 TypeScript를 사용하는 것입니다:\n\n```html\n<script lang=\"ts\">\n // TypeScript 사용\n</script>\n```\n\n`lang`은 모든 블록에 적용할 수 있습니다.\n예를 들어 `<style>`에서는 [Sass](https://sass-lang.com/)를, `<template>`에서는 [Pug](https://pugjs.org/api/getting-started)를 사용할 수 있습니다:\n\n```html\n<template lang=\"pug\">\np {{ msg }}\n</template>\n\n<style lang=\"scss\">\n $primary-color: #333;\n body {\n color: $primary-color;\n }\n</style>\n```\n\n다양한 전처리기와의 통합은 툴체인에 따라 다를 수 있습니다.\n예제를 보려면 해당 문서를 확인하십시오:\n\n- [Vite](https://vitejs.dev/guide/features#css-pre-processors)\n- [Vue CLI](https://cli.vuejs.org/guide/css#pre-processors)\n- [webpack + vue-loader](https://vue-loader.vuejs.org/guide/pre-processors#using-pre-processors)\n" + }, + values: [ + { + name: "css" + }, + { + name: "scss" + }, + { + name: "less" + }, + { + name: "stylus" + }, + { + name: "postcss" + }, + { + name: "sass" + } + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#pre-processors" + } + ] + }, + { + name: "scoped", + valueSet: "v", + description: { + kind: "markdown", + value: "\n`<style>` 태그에 `scoped` 속성이 있으면,\n해당 CSS는 현재 컴포넌트의 엘리먼트에만 적용됩니다.\n이것은 Shadow DOM에서 발견되는 스타일 캡슐화와 유사합니다.\n몇 가지 주의 사항이 있지만,\n폴리필이 필요하지 않습니다.\nPostCSS를 사용하여 다음을 변환함으로써 달성됩니다:\n\n```vue\n<style scoped>\n.example {\n color: red;\n}\n</style>\n\n<template>\n <div class=\"example\">안녕!</div>\n</template>\n```\n\n다음으로:\n\n```vue\n<style>\n.example[data-v-f3f3eg9] {\n color: red;\n}\n</style>\n\n<template>\n <div class=\"example\" data-v-f3f3eg9>안녕!</div>\n</template>\n```\n\n### 자식 컴포넌트 루트 엘리먼트 \n\n`scoped`를 사용하면 부모 컴포넌트의 스타일이 자식 컴포넌트로 누출되지 않습니다.\n그러나 자식 컴포넌트의 루트 노드는 부모의 범위가 지정된 CSS와 자식의 범위가 지정된 CSS 모두의 영향을 받습니다.\n이것은 부모가 레이아웃 목적으로 자식 루트 엘리먼트의 스타일을 지정할 수 있도록 의도적으로 설계된 것입니다:\n\n### 깊은 셀렉터 \n\n`scoped` 스타일의 셀렉터를 \"깊게\"(즉, 자식 컴포넌트에 영향을 미치게 하려면) `:deep()` 의사 클래스를 사용할 수 있습니다:\n\n```vue\n<style scoped>\n.a :deep(.b) {\n /* ... */\n}\n</style>\n```\n\n위의 내용은 다음과 같이 컴파일됩니다:\n\n```css\n.a[data-v-f3f3eg9] .b {\n /* ... */\n}\n```\n\n:::tip\n`v-html`로 만든 DOM 컨텐츠는 범위가 지정된 스타일의 영향을 받지 않지만,\n깊은 셀렉터를 사용하여 스타일을 지정할 수 있습니다.\n:::\n\n### 슬롯형 셀렉터 \n\n기본적으로 범위가 지정된 스타일은 `<slot/>`에 의해 렌더링된 컨텐츠에 영향을 미치지 않습니다.\n스타일을 전달하는 부모 컴포넌트가 소유한 것으로 간주되기 때문입니다.\n슬롯 컨텐츠를 명시적으로 대상으로 지정하려면,\n`:slotted` 의사 클래스를 사용해야 합니다:\n\n```vue\n<style scoped>\n:slotted(div) {\n color: red;\n}\n</style>\n```\n\n### 전역 셀렉터 \n\n하나의 규칙만 전역적으로 적용하려면,\n다른 `<style>`을 만드는 대신 `:global` 의사 클래스를 사용할 수 있습니다(아래 참고):\n\n```vue\n<style scoped>\n:global(.red) {\n color: red;\n}\n</style>\n```\n\n### 로컬 및 전역 스타일 혼합 \n\n동일한 컴포넌트에 범위가 지정된 스타일과 범위가 지정되지 않은 스타일을 모두 포함할 수도 있습니다:\n\n```vue\n<style>\n/* 전역 스타일 */\n</style>\n\n<style scoped>\n/* 로컬 스타일 */\n</style>\n```\n\n### 범위가 지정된 스타일 팁 \n\n- **범위가 지정된 스타일은 클래스의 필요성을 제거하지 않습니다**.\n 브라우저가 다양한 CSS 셀렉터를 렌더링하는 방식 때문에,\n `p { color: red }`처럼 범위를 지정할 때(즉, 속성 셀렉터와 결합될 때) 속도가 몇 배 느려집니다.\n `.example { color: red }`와 같이 클래스나 ID를 사용하면,\n 성능 저하를 거의 제거할 수 있습니다.\n\n- **재귀적 컴포넌트의 자손 셀렉터에 주의해야 합니다!**\n 셀렉터가 `.a .b`인 CSS 규칙의 경우,\n `.a`와 일치하는 엘리먼트가 재귀적인 자식 컴포넌트를 포함한다면,\n 해당 자식 컴포넌트의 모든 `.b`는 규칙과 일치하게 됩니다.\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-css-features.html#scoped-css" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-css-features.html#scoped-css" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-css-features.html#scoped-css" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-css-features.html#scoped-css" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-css-features.html#scoped-css" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-css-features.html#scoped-css" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-css-features.html#scoped-css" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-css-features.html#scoped-css" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-css-features.html#scoped-css" + } + ] + }, + { + name: "module", + valueSet: "v", + description: { + kind: "markdown", + value: "\n`<style module>` 태그는 [CSS 모듈](https://github.com/css-modules/css-modules)로 컴파일되고,\n결과적으로 CSS 클래스를 `$style` 키(key) 내부에 객체로 컴포넌트에 노출합니다:\n\n```vue\n<template>\n <p :class=\"$style.red\">이것은 빨간색이어야 합니다.</p>\n</template>\n\n<style module>\n.red {\n color: red;\n}\n</style>\n```\n\n결과적인 클래스는 충돌을 피하기 위해 해시되어,\nCSS 범위를 현재 컴포넌트로만 지정하는 것과 동일한 효과를 얻습니다.\n\n[전역 예외](https://github.com/css-modules/css-modules#exceptions), [구성](https://github.com/css-modules/css-modules#composition) 등의 자세한 사항은 [CSS 모듈 스팩](https://github.com/css-modules/css-modules)을 참고하십시오.\n\n### 커스텀 이름 삽입 \n\n`module` 속성에 값을 지정하여,\n주입된 클래스 객체의 속성 키를 커스텀할 수 있습니다:\n\n```vue\n<template>\n <p :class=\"classes.red\">red</p>\n</template>\n\n<style module=\"classes\">\n.red {\n color: red;\n}\n</style>\n```\n\n### 컴포지션 API와 함께 사용 \n\n주입된 클래스는 `useCssModule` API를 통해 `setup()` 및 `<script setup>`에서 접근할 수 있습니다.\n커스텀 주입 이름이 있는 `<style module>` 블록의 경우 `useCssModule`은 일치하는 `module` 속성 값을 첫 번째 인자로 받습니다:\n\n```js\nimport { useCssModule } from 'vue'\n\n// setup() 내부에서...\n// 기본값은, <style module>의 클래스 반환\nuseCssModule()\n\n// 이름을 지정한 경우, <style module=\"classes\">의 클래스 반환\nuseCssModule('classes')\n```\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-css-features.html#css-modules" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-css-features.html#css-modules" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-css-features.html#css-modules" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-css-features.html#css-modules" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-css-features.html#css-modules" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-css-features.html#css-modules" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-css-features.html#css-modules" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-css-features.html#css-modules" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-css-features.html#css-modules" + } + ] + } + ], + description: { + kind: "markdown", + value: "\n- `*.vue` 파일에는 여러 `<style>` 태그가 포함될 수 있습니다.\n\n- `<style>` 태그는 현재 컴포넌트에 스타일을 캡슐화하는 데 도움이 되도록,\n `scoped` 또는 `module` 속성(자세한 내용은 [SFC 스타일 특징](https://ko.vuejs.org/api/sfc-css-features.html) 참고)을 가질 수 있습니다.\n 캡슐화 모드가 다른 여러 `<style>` 태그를 동일한 컴포넌트에 혼합할 수 있습니다.\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#style" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#style" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#style" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#style" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#style" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#style" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#style" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#style" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#style" + } + ] + }, + { + name: "커스텀 블럭", + attributes: [ + { + name: "src", + description: { + kind: "markdown", + value: "\n`*.vue` 컴포넌트를 여러 파일로 분할하는 것을 선호하는 경우,\n`src` 속성을 사용하여 언어 블록에서 외부 파일을 가져올 수 있습니다:\n\n```vue\n<template src=\"./template.html\"></template>\n<style src=\"./style.css\"></style>\n<script src=\"./script.js\"></script>\n```\n\n`src` 가져오기는 웹팩 모듈 요청과 동일한 경로 확인 규칙을 따릅니다.\n즉, 다음을 의미합니다:\n\n- 상대 경로는 `./`로 시작해야 함.\n- npm 의존성에서 리소스를 가져올 수 있음.\n\n```vue\n<!-- 설치된 \"todomvc-app-css\" npm 패키지에서 파일 가져오기 -->\n<style src=\"todomvc-app-css/index.css\" />\n```\n\n`src` 가져오기는 커스텀 블록에서도 작동합니다. 예를들어:\n\n```vue\n<unit-test src=\"./unit-test.js\">\n</unit-test>\n```\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#src-imports" + } + ] + } + ], + description: { + kind: "markdown", + value: "\n프로젝트별 요구 사항에 따라 `*.vue` 파일에 추가 커스텀 블록을 포함할 수 있습니다(예: `<docs>` 블록).\n커스텀 블록의 실제 예는 다음과 같습니다:\n\n- [Gridsome: `<page-query>`](https://gridsome.org/docs/querying-data/)\n- [vite-plugin-vue-gql: `<gql>`](https://github.com/wheatjs/vite-plugin-vue-gql)\n- [vue-i18n: `<i18n>`](https://github.com/intlify/bundle-tools/tree/main/packages/vite-plugin-vue-i18n#i18n-custom-block)\n\n커스텀 블록 처리는 도구에 따라 다릅니다.\n자체 커스텀 블록 통합을 구축하려는 경우 자세한 내용은 [SFC 커스텀 블록 통합 도구 섹션](https://ko.vuejs.org/guide/scaling-up/tooling.html#sfc-custom-block-integrations)을 참고하십시오.\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#커스텀-블럭" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#커스텀-블럭" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#커스텀-블럭" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#커스텀-블럭" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#커스텀-블럭" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#커스텀-블럭" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#커스텀-블럭" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#커스텀-블럭" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#커스텀-블럭" + } + ] + } +]; +const globalAttributes$a = [ + { + name: "lang", + description: { + kind: "markdown", + value: "\n블록은 `lang` 속성을 사용하여 전처리기 언어를 선언할 수 있습니다.\n가장 일반적인 경우는 `<script>` 블록에 TypeScript를 사용하는 것입니다:\n\n```html\n<script lang=\"ts\">\n // TypeScript 사용\n</script>\n```\n\n`lang`은 모든 블록에 적용할 수 있습니다.\n예를 들어 `<style>`에서는 [Sass](https://sass-lang.com/)를, `<template>`에서는 [Pug](https://pugjs.org/api/getting-started)를 사용할 수 있습니다:\n\n```html\n<template lang=\"pug\">\np {{ msg }}\n</template>\n\n<style lang=\"scss\">\n $primary-color: #333;\n body {\n color: $primary-color;\n }\n</style>\n```\n\n다양한 전처리기와의 통합은 툴체인에 따라 다를 수 있습니다.\n예제를 보려면 해당 문서를 확인하십시오:\n\n- [Vite](https://vitejs.dev/guide/features#css-pre-processors)\n- [Vue CLI](https://cli.vuejs.org/guide/css#pre-processors)\n- [webpack + vue-loader](https://vue-loader.vuejs.org/guide/pre-processors#using-pre-processors)\n" + }, + values: [ + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#pre-processors" + } + ] + }, + { + name: "src", + description: { + kind: "markdown", + value: "\n`*.vue` 컴포넌트를 여러 파일로 분할하는 것을 선호하는 경우,\n`src` 속성을 사용하여 언어 블록에서 외부 파일을 가져올 수 있습니다:\n\n```vue\n<template src=\"./template.html\"></template>\n<style src=\"./style.css\"></style>\n<script src=\"./script.js\"></script>\n```\n\n`src` 가져오기는 웹팩 모듈 요청과 동일한 경로 확인 규칙을 따릅니다.\n즉, 다음을 의미합니다:\n\n- 상대 경로는 `./`로 시작해야 함.\n- npm 의존성에서 리소스를 가져올 수 있음.\n\n```vue\n<!-- 설치된 \"todomvc-app-css\" npm 패키지에서 파일 가져오기 -->\n<style src=\"todomvc-app-css/index.css\" />\n```\n\n`src` 가져오기는 커스텀 블록에서도 작동합니다. 예를들어:\n\n```vue\n<unit-test src=\"./unit-test.js\">\n</unit-test>\n```\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#src-imports" + } + ] + } +]; +var require$$10 = { + version: version$a, + tags: tags$3, + globalAttributes: globalAttributes$a +}; + +const version$9 = 1.1; +const tags$2 = [ + { + name: "template", + attributes: [ + { + name: "src", + description: { + kind: "markdown", + value: "\nSi vous préférez séparer vos composants `*.vue` en plusieurs fichiers, vous pouvez utiliser l'attribut `src` pour importer un fichier externe pour un bloc de langage :\n\n```vue\n<template src=\"./template.html\"></template>\n<style src=\"./style.css\"></style>\n<script src=\"./script.js\"></script>\n```\n\nAttention, les importations `src` suivent les mêmes règles de résolution de chemin que les requêtes de modules de webpack, ce qui signifie que :\n\n- Les chemins relatifs doivent commencer par `./`.\n- Vous pouvez importer des ressources à partir des dépendances npm :\n\n```vue\n<!-- importe un fichier depuis le paquet npm installé \"todomvc-app-css\" -->\n<style src=\"todomvc-app-css/index.css\" />\n```\n\nLes importations `src` fonctionnent également avec des blocs personnalisés, par exemple :\n\n```vue\n<unit-test src=\"./unit-test.js\">\n</unit-test>\n```\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#src-imports" + } + ] + }, + { + name: "lang", + description: { + kind: "markdown", + value: "\nLes blocs peuvent déclarer des langages de pré-processeur en utilisant l'attribut `lang`. Le cas le plus courant est l'utilisation de TypeScript pour le bloc `<script>` :\n\n```html\n<script lang=\"ts\">\n // use TypeScript\n</script>\n```\n\n`lang` peut être appliqué à n'importe quel bloc - par exemple, nous pouvons utiliser `<style>` avec [Sass](https://sass-lang.com/) et `<template>` avec [Pug](https://pugjs.org/api/getting-started.html) :\n\n```html\n<template lang=\"pug\">\np {{ msg }}\n</template>\n\n<style lang=\"scss\">\n $primary-color: #333;\n body {\n color: $primary-color;\n }\n</style>\n```\n\nNotez que l'intégration avec divers pré-processeurs peut différer selon les outils utilisés. Consultez la documentation correspondante pour des exemples :\n\n- [Vite](https://vitejs.dev/guide/features.html#css-pre-processors)\n- [Vue CLI](https://cli.vuejs.org/guide/css.html#pre-processors)\n- [webpack + vue-loader](https://vue-loader.vuejs.org/guide/pre-processors.html#using-pre-processors)\n" + }, + values: [ + { + name: "html" + }, + { + name: "pug" + } + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#pre-processors" + } + ] + } + ], + description: { + kind: "markdown", + value: "\n- Chaque fichier `*.vue` peut contenir au maximum un bloc de haut niveau `<template>` à la fois.\n\n- Le contenu sera extrait et transmis à `@vue/compiler-dom`, pré-compilé en fonctions de rendu JavaScript, et attaché au composant exporté en tant que son option `render`.\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#template" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#template" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#template" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#template" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#template" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#template" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#template" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#template" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#template" + } + ] + }, + { + name: "script", + attributes: [ + { + name: "src", + description: { + kind: "markdown", + value: "\nSi vous préférez séparer vos composants `*.vue` en plusieurs fichiers, vous pouvez utiliser l'attribut `src` pour importer un fichier externe pour un bloc de langage :\n\n```vue\n<template src=\"./template.html\"></template>\n<style src=\"./style.css\"></style>\n<script src=\"./script.js\"></script>\n```\n\nAttention, les importations `src` suivent les mêmes règles de résolution de chemin que les requêtes de modules de webpack, ce qui signifie que :\n\n- Les chemins relatifs doivent commencer par `./`.\n- Vous pouvez importer des ressources à partir des dépendances npm :\n\n```vue\n<!-- importe un fichier depuis le paquet npm installé \"todomvc-app-css\" -->\n<style src=\"todomvc-app-css/index.css\" />\n```\n\nLes importations `src` fonctionnent également avec des blocs personnalisés, par exemple :\n\n```vue\n<unit-test src=\"./unit-test.js\">\n</unit-test>\n```\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#src-imports" + } + ] + }, + { + name: "lang", + description: { + kind: "markdown", + value: "\nLes blocs peuvent déclarer des langages de pré-processeur en utilisant l'attribut `lang`. Le cas le plus courant est l'utilisation de TypeScript pour le bloc `<script>` :\n\n```html\n<script lang=\"ts\">\n // use TypeScript\n</script>\n```\n\n`lang` peut être appliqué à n'importe quel bloc - par exemple, nous pouvons utiliser `<style>` avec [Sass](https://sass-lang.com/) et `<template>` avec [Pug](https://pugjs.org/api/getting-started.html) :\n\n```html\n<template lang=\"pug\">\np {{ msg }}\n</template>\n\n<style lang=\"scss\">\n $primary-color: #333;\n body {\n color: $primary-color;\n }\n</style>\n```\n\nNotez que l'intégration avec divers pré-processeurs peut différer selon les outils utilisés. Consultez la documentation correspondante pour des exemples :\n\n- [Vite](https://vitejs.dev/guide/features.html#css-pre-processors)\n- [Vue CLI](https://cli.vuejs.org/guide/css.html#pre-processors)\n- [webpack + vue-loader](https://vue-loader.vuejs.org/guide/pre-processors.html#using-pre-processors)\n" + }, + values: [ + { + name: "ts" + }, + { + name: "js" + }, + { + name: "tsx" + }, + { + name: "jsx" + } + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#pre-processors" + } + ] + }, + { + name: "generic" + }, + { + name: "setup", + valueSet: "v", + description: { + kind: "markdown", + value: "\n- Chaque fichier `*.vue` peut contenir au maximum un bloc `<script setup>` à la fois (à l'exclusion des `<script>` normaux).\n\n- Le script est pré-traité et utilisé comme fonction `setup()` du composant, ce qui signifie qu'il sera exécuté **pour chaque instance du composant**. Les liaisons de haut niveau dans `<script setup>` sont automatiquement exposées au template. Pour plus de détails, voir la [documentation dédiée à `<script setup>`](https://fr.vuejs.org/api/sfc-script-setup.html).\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#script-setup" + } + ] + } + ], + description: { + kind: "markdown", + value: "\n- Chaque fichier `*.vue` peut contenir au maximum un bloc `<script>` à la fois (sauf [`<script setup>`](https://fr.vuejs.org/api/sfc-script-setup.html)).\n\n- Le script est exécuté comme un module ES.\n\n- L'**export par défaut** doit être un objet composé d'options de composant Vue, soit en tant qu'objet simple, soit en tant que valeur de retour de [defineComponent](https://fr.vuejs.org/api/general.html#definecomponent).\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#script" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#script" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#script" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#script" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#script" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#script" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#script" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#script" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#script" + } + ] + }, + { + name: "script setup", + attributes: [ + ], + description: { + kind: "markdown", + value: "\n- Chaque fichier `*.vue` peut contenir au maximum un bloc `<script setup>` à la fois (à l'exclusion des `<script>` normaux).\n\n- Le script est pré-traité et utilisé comme fonction `setup()` du composant, ce qui signifie qu'il sera exécuté **pour chaque instance du composant**. Les liaisons de haut niveau dans `<script setup>` sont automatiquement exposées au template. Pour plus de détails, voir la [documentation dédiée à `<script setup>`](https://fr.vuejs.org/api/sfc-script-setup.html).\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#script-setup" + } + ] + }, + { + name: "style", + attributes: [ + { + name: "src", + description: { + kind: "markdown", + value: "\nSi vous préférez séparer vos composants `*.vue` en plusieurs fichiers, vous pouvez utiliser l'attribut `src` pour importer un fichier externe pour un bloc de langage :\n\n```vue\n<template src=\"./template.html\"></template>\n<style src=\"./style.css\"></style>\n<script src=\"./script.js\"></script>\n```\n\nAttention, les importations `src` suivent les mêmes règles de résolution de chemin que les requêtes de modules de webpack, ce qui signifie que :\n\n- Les chemins relatifs doivent commencer par `./`.\n- Vous pouvez importer des ressources à partir des dépendances npm :\n\n```vue\n<!-- importe un fichier depuis le paquet npm installé \"todomvc-app-css\" -->\n<style src=\"todomvc-app-css/index.css\" />\n```\n\nLes importations `src` fonctionnent également avec des blocs personnalisés, par exemple :\n\n```vue\n<unit-test src=\"./unit-test.js\">\n</unit-test>\n```\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#src-imports" + } + ] + }, + { + name: "lang", + description: { + kind: "markdown", + value: "\nLes blocs peuvent déclarer des langages de pré-processeur en utilisant l'attribut `lang`. Le cas le plus courant est l'utilisation de TypeScript pour le bloc `<script>` :\n\n```html\n<script lang=\"ts\">\n // use TypeScript\n</script>\n```\n\n`lang` peut être appliqué à n'importe quel bloc - par exemple, nous pouvons utiliser `<style>` avec [Sass](https://sass-lang.com/) et `<template>` avec [Pug](https://pugjs.org/api/getting-started.html) :\n\n```html\n<template lang=\"pug\">\np {{ msg }}\n</template>\n\n<style lang=\"scss\">\n $primary-color: #333;\n body {\n color: $primary-color;\n }\n</style>\n```\n\nNotez que l'intégration avec divers pré-processeurs peut différer selon les outils utilisés. Consultez la documentation correspondante pour des exemples :\n\n- [Vite](https://vitejs.dev/guide/features.html#css-pre-processors)\n- [Vue CLI](https://cli.vuejs.org/guide/css.html#pre-processors)\n- [webpack + vue-loader](https://vue-loader.vuejs.org/guide/pre-processors.html#using-pre-processors)\n" + }, + values: [ + { + name: "css" + }, + { + name: "scss" + }, + { + name: "less" + }, + { + name: "stylus" + }, + { + name: "postcss" + }, + { + name: "sass" + } + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#pre-processors" + } + ] + }, + { + name: "scoped", + valueSet: "v", + description: { + kind: "markdown", + value: "\nLorsqu'une balise `<style>` possède l'attribut `scoped`, son CSS s'appliquera uniquement aux éléments du composant actuel. Cela est comparable à l'encapsulation des styles que l'on trouve dans le Shadow DOM. Il y a cependant quelques mises en gardes, mais cela ne nécessite aucun polyfill. PostCSS est utilisé pour transformer les éléments suivants :\n\n```vue\n<style scoped>\n.example {\n color: red;\n}\n</style>\n\n<template>\n <div class=\"example\">hi</div>\n</template>\n```\n\nEn ce qui suit :\n\n```vue\n<style>\n.example[data-v-f3f3eg9] {\n color: red;\n}\n</style>\n\n<template>\n <div class=\"example\" data-v-f3f3eg9>hi</div>\n</template>\n```\n\n### Éléments racines du composant enfant \n\nAvec `scoped`, les styles du composant parent ne ruisselleront pas dans les composants enfants. Toutefois, le nœud racine d'un composant enfant sera affecté à la fois par le CSS à portée limitée du parent et par le CSS à portée limitée de l'enfant. Cela a été conçu afin que le parent puisse donner un style à l'élément racine de l'enfant à des fins de mise en page.\n\n### Sélecteurs profonds \n\nSi vous voulez qu'un sélecteur dans les styles `scoped` soit \"profond\", c'est-à-dire qu'il affecte les composants enfants, vous pouvez utiliser la pseudo-classe `:deep()` :\n\n```vue\n<style scoped>\n.a :deep(.b) {\n /* ... */\n}\n</style>\n```\n\nLe code ci-dessus sera compilé en :\n\n```css\n.a[data-v-f3f3eg9] .b {\n /* ... */\n}\n```\n\n:::tip\nLes contenus du DOM créés avec `v-html` ne sont pas affectés par les styles à portée limitée, mais vous pouvez tout de même les styliser en utilisant des sélecteurs profonds.\n:::\n\n### Sélecteurs de slots \n\nPar défaut, les styles à portée limitée n'affectent pas les contenus rendus par `<slot/>`, car ils sont considérés comme appartenant au composant parent qui les transmet. Pour cibler explicitement le contenu des slots, utilisez la pseudo-classe `:slotted` :\n\n```vue\n<style scoped>\n:slotted(div) {\n color: red;\n}\n</style>\n```\n\n### Sélecteurs globaux \n\nSi vous voulez qu'une seule règle s'applique de manière globale, vous pouvez utiliser la pseudo-classe `:global` plutôt que de créer un autre `<style>` (voir ci-dessous) :\n\n```vue\n<style scoped>\n:global(.red) {\n color: red;\n}\n</style>\n```\n\n### Mélanger les styles locaux et globaux \n\nVous pouvez également inclure des styles généraux et d'autres à portée limitée dans le même composant :\n\n```vue\n<style>\n/* styles globaux */\n</style>\n\n<style scoped>\n/* styles locaux */\n</style>\n```\n\n### Conseils concernant les styles à portée limitée \n\n- **Les styles à portée limitée ne rendent pas les classes inutiles**. En raison de la façon dont les navigateurs rendent les différents sélecteurs CSS, `p { color : red }` sera bien plus lent lorsqu'il a une portée limitée (c'est-à-dire lorsqu'il est combiné avec un sélecteur d'attribut). Si vous utilisez des classes ou des identifiants à la place, comme dans `.example { color : red }`, vous éliminez en grande partie ce problème de performances.\n\n- **Faites attention aux sélecteurs descendants dans les composants récursifs!** Pour une règle CSS avec le sélecteur `.a .b`, si l'élément qui correspond à `.a` contient un composant enfant récursif, alors tous les `.b` de ce composant enfant seront pris en compte par la règle.\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-css-features.html#scoped-css" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-css-features.html#scoped-css" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-css-features.html#scoped-css" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-css-features.html#scoped-css" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-css-features.html#scoped-css" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-css-features.html#scoped-css" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-css-features.html#scoped-css" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-css-features.html#scoped-css" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-css-features.html#scoped-css" + } + ] + }, + { + name: "module", + valueSet: "v", + description: { + kind: "markdown", + value: "\nUne balise `<style module>` est compilée en tant que [modules CSS](https://github.com/css-modules/css-modules) et expose les classes CSS résultantes au composant en tant qu'objet via la clé `$style` :\n\n```vue\n<template>\n <p :class=\"$style.red\">This should be red</p>\n</template>\n\n<style module>\n.red {\n color: red;\n}\n</style>\n```\n\nLes classes qui en résultent sont hachées pour éviter les collisions, ce qui permet d'obtenir le même effet que de limiter la portée du CSS au seul composant actuel.\n\nConsultez la [spécification des modules CSS](https://github.com/css-modules/css-modules) pour plus de détails, notamment les parties sur les [exceptions globales](https://github.com/css-modules/css-modules#exceptions) et la [composition](https://github.com/css-modules/css-modules#composition).\n\n### Nom d'injection personnalisé \n\nVous pouvez personnaliser la clé de propriété de l'objet de classes injectées en donnant une valeur à l'attribut `module` :\n\n```vue\n<template>\n <p :class=\"classes.red\">red</p>\n</template>\n\n<style module=\"classes\">\n.red {\n color: red;\n}\n</style>\n```\n\n### Utilisation avec la Composition API \n\nLes classes injectées sont accessibles dans `setup()` et `<script setup>` via l'API `useCssModule`. Pour les blocs `<style module>` avec des noms d'injection personnalisés, `useCssModule` accepte la valeur de l'attribut `module` correspondant comme premier argument :\n\n```js\nimport { useCssModule } from 'vue'\n\n// à l'intérieur de setup()...\n// par défaut, renvoie les classes pour <style module>\nuseCssModule()\n\n// nommé, renvoie les classes pour <style module=\"classes\">\nuseCssModule('classes')\n```\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-css-features.html#css-modules" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-css-features.html#css-modules" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-css-features.html#css-modules" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-css-features.html#css-modules" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-css-features.html#css-modules" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-css-features.html#css-modules" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-css-features.html#css-modules" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-css-features.html#css-modules" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-css-features.html#css-modules" + } + ] + } + ], + description: { + kind: "markdown", + value: "\n- Un seul fichier `*.vue` peut contenir plusieurs balises `<style>`.\n\n- Une balise `<style>` peut avoir des attributs `scoped` ou `module` (voir [les fonctionnalités de style pour les composants monofichiers](https://fr.vuejs.org/api/sfc-css-features.html) pour plus de détails) pour aider à encapsuler les styles dans le composant actuel. Plusieurs balises `<style>` avec différents modes d'encapsulation peuvent coexister dans le même composant.\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#style" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#style" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#style" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#style" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#style" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#style" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#style" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#style" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#style" + } + ] + }, + { + name: "Blocs personnalisés", + attributes: [ + { + name: "src", + description: { + kind: "markdown", + value: "\nSi vous préférez séparer vos composants `*.vue` en plusieurs fichiers, vous pouvez utiliser l'attribut `src` pour importer un fichier externe pour un bloc de langage :\n\n```vue\n<template src=\"./template.html\"></template>\n<style src=\"./style.css\"></style>\n<script src=\"./script.js\"></script>\n```\n\nAttention, les importations `src` suivent les mêmes règles de résolution de chemin que les requêtes de modules de webpack, ce qui signifie que :\n\n- Les chemins relatifs doivent commencer par `./`.\n- Vous pouvez importer des ressources à partir des dépendances npm :\n\n```vue\n<!-- importe un fichier depuis le paquet npm installé \"todomvc-app-css\" -->\n<style src=\"todomvc-app-css/index.css\" />\n```\n\nLes importations `src` fonctionnent également avec des blocs personnalisés, par exemple :\n\n```vue\n<unit-test src=\"./unit-test.js\">\n</unit-test>\n```\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#src-imports" + } + ] + } + ], + description: { + kind: "markdown", + value: "\nDes blocs personnalisés supplémentaires peuvent être inclus dans un fichier `*.vue` pour tout besoin spécifique au projet, par exemple un bloc `<docs>`. Voici quelques exemples concrets de blocs personnalisés :\n\n- [Gridsome: `<page-query>`](https://gridsome.org/docs/querying-data/)\n- [vite-plugin-vue-gql: `<gql>`](https://github.com/wheatjs/vite-plugin-vue-gql)\n- [vue-i18n: `<i18n>`](https://github.com/intlify/bundle-tools/tree/main/packages/vite-plugin-vue-i18n#i18n-custom-block)\n\nLa gestion des blocs personnalisés dépendra des outils utilisés - si vous souhaitez créer vos propres intégrations de blocs personnalisés, consultez [la section dédiée aux outils](https://fr.vuejs.org/guide/scaling-up/tooling.html#sfc-custom-block-integrations) pour plus de détails.\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#blocs-personnalisés" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#blocs-personnalisés" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#blocs-personnalisés" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#blocs-personnalisés" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#blocs-personnalisés" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#blocs-personnalisés" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#blocs-personnalisés" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#blocs-personnalisés" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#blocs-personnalisés" + } + ] + } +]; +const globalAttributes$9 = [ + { + name: "lang", + description: { + kind: "markdown", + value: "\nLes blocs peuvent déclarer des langages de pré-processeur en utilisant l'attribut `lang`. Le cas le plus courant est l'utilisation de TypeScript pour le bloc `<script>` :\n\n```html\n<script lang=\"ts\">\n // use TypeScript\n</script>\n```\n\n`lang` peut être appliqué à n'importe quel bloc - par exemple, nous pouvons utiliser `<style>` avec [Sass](https://sass-lang.com/) et `<template>` avec [Pug](https://pugjs.org/api/getting-started.html) :\n\n```html\n<template lang=\"pug\">\np {{ msg }}\n</template>\n\n<style lang=\"scss\">\n $primary-color: #333;\n body {\n color: $primary-color;\n }\n</style>\n```\n\nNotez que l'intégration avec divers pré-processeurs peut différer selon les outils utilisés. Consultez la documentation correspondante pour des exemples :\n\n- [Vite](https://vitejs.dev/guide/features.html#css-pre-processors)\n- [Vue CLI](https://cli.vuejs.org/guide/css.html#pre-processors)\n- [webpack + vue-loader](https://vue-loader.vuejs.org/guide/pre-processors.html#using-pre-processors)\n" + }, + values: [ + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#pre-processors" + } + ] + }, + { + name: "src", + description: { + kind: "markdown", + value: "\nSi vous préférez séparer vos composants `*.vue` en plusieurs fichiers, vous pouvez utiliser l'attribut `src` pour importer un fichier externe pour un bloc de langage :\n\n```vue\n<template src=\"./template.html\"></template>\n<style src=\"./style.css\"></style>\n<script src=\"./script.js\"></script>\n```\n\nAttention, les importations `src` suivent les mêmes règles de résolution de chemin que les requêtes de modules de webpack, ce qui signifie que :\n\n- Les chemins relatifs doivent commencer par `./`.\n- Vous pouvez importer des ressources à partir des dépendances npm :\n\n```vue\n<!-- importe un fichier depuis le paquet npm installé \"todomvc-app-css\" -->\n<style src=\"todomvc-app-css/index.css\" />\n```\n\nLes importations `src` fonctionnent également avec des blocs personnalisés, par exemple :\n\n```vue\n<unit-test src=\"./unit-test.js\">\n</unit-test>\n```\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#src-imports" + } + ] + } +]; +var require$$11 = { + version: version$9, + tags: tags$2, + globalAttributes: globalAttributes$9 +}; + +const version$8 = 1.1; +const tags$1 = [ + { + name: "template", + attributes: [ + { + name: "src", + description: { + kind: "markdown", + value: "\n`*.vue` コンポーネントを複数のファイルに分割したい場合は、`src` 属性を使用して言語ブロックに外部ファイルをインポートできます:\n\n```vue\n<template src=\"./template.html\"></template>\n<style src=\"./style.css\"></style>\n<script src=\"./script.js\"></script>\n```\n\n`src` でのインポートは webpack のモジュールリクエストと同じパス解決ルールに従うので注意してください。つまり:\n\n- 相対パスは `./` で始める必要があります\n- npm の依存関係からリソースをインポートできます:\n\n```vue\n<!-- インストール済みの \"todomvc-app-css\" npm パッケージからファイルをインポート -->\n<style src=\"todomvc-app-css/index.css\" />\n```\n\n`src` でのインポートは、カスタムブロックでも動作します。例:\n\n```vue\n<unit-test src=\"./unit-test.js\">\n</unit-test>\n```\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#src-imports" + } + ] + }, + { + name: "lang", + description: { + kind: "markdown", + value: "\nブロックに `lang` 属性を使ってプリプロセッサーの言語を宣言できます。最も一般的なケースは、`<script>` ブロックでの TypeScript の使用です:\n\n```html\n<script lang=\"ts\">\n // TypeScript を使う\n</script>\n```\n\n`lang` はどのブロックにも適用できます - 例えば、`<style>` で [Sass](https://sass-lang.com/) を使用したり、`<template>` で [Pug](https://pugjs.org/api/getting-started.html) を使用できます:\n\n```html\n<template lang=\"pug\">\np {{ msg }}\n</template>\n\n<style lang=\"scss\">\n $primary-color: #333;\n body {\n color: $primary-color;\n }\n</style>\n```\n\nなお、各種プリプロセッサーとの統合はツールチェーンによって異なる場合があることに注意してください。例については、それぞれのドキュメントを参照してください:\n\n- [Vite](https://ja.vitejs.dev/guide/features.html#css-%E3%83%97%E3%83%AA%E3%83%97%E3%83%AD%E3%82%BB%E3%83%83%E3%82%B5)\n- [Vue CLI](https://cli.vuejs.org/guide/css.html#pre-processors)\n- [webpack + vue-loader](https://vue-loader.vuejs.org/guide/pre-processors.html#using-pre-processors)\n" + }, + values: [ + { + name: "html" + }, + { + name: "pug" + } + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#pre-processors" + } + ] + } + ], + description: { + kind: "markdown", + value: "\n- 各 `*.vue` ファイルには、最大 1 つのトップレベル `<template>` ブロックを含めることができます。\n\n- コンテンツは抽出されて `@vue/compiler-dom` に渡され、JavaScript のレンダー関数に事前コンパイルされ、エクスポートされたコンポーネントに `render` オプションとしてアタッチされます。\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#template" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#template" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#template" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#template" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#template" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#template" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#template" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#template" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#template" + } + ] + }, + { + name: "script", + attributes: [ + { + name: "src", + description: { + kind: "markdown", + value: "\n`*.vue` コンポーネントを複数のファイルに分割したい場合は、`src` 属性を使用して言語ブロックに外部ファイルをインポートできます:\n\n```vue\n<template src=\"./template.html\"></template>\n<style src=\"./style.css\"></style>\n<script src=\"./script.js\"></script>\n```\n\n`src` でのインポートは webpack のモジュールリクエストと同じパス解決ルールに従うので注意してください。つまり:\n\n- 相対パスは `./` で始める必要があります\n- npm の依存関係からリソースをインポートできます:\n\n```vue\n<!-- インストール済みの \"todomvc-app-css\" npm パッケージからファイルをインポート -->\n<style src=\"todomvc-app-css/index.css\" />\n```\n\n`src` でのインポートは、カスタムブロックでも動作します。例:\n\n```vue\n<unit-test src=\"./unit-test.js\">\n</unit-test>\n```\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#src-imports" + } + ] + }, + { + name: "lang", + description: { + kind: "markdown", + value: "\nブロックに `lang` 属性を使ってプリプロセッサーの言語を宣言できます。最も一般的なケースは、`<script>` ブロックでの TypeScript の使用です:\n\n```html\n<script lang=\"ts\">\n // TypeScript を使う\n</script>\n```\n\n`lang` はどのブロックにも適用できます - 例えば、`<style>` で [Sass](https://sass-lang.com/) を使用したり、`<template>` で [Pug](https://pugjs.org/api/getting-started.html) を使用できます:\n\n```html\n<template lang=\"pug\">\np {{ msg }}\n</template>\n\n<style lang=\"scss\">\n $primary-color: #333;\n body {\n color: $primary-color;\n }\n</style>\n```\n\nなお、各種プリプロセッサーとの統合はツールチェーンによって異なる場合があることに注意してください。例については、それぞれのドキュメントを参照してください:\n\n- [Vite](https://ja.vitejs.dev/guide/features.html#css-%E3%83%97%E3%83%AA%E3%83%97%E3%83%AD%E3%82%BB%E3%83%83%E3%82%B5)\n- [Vue CLI](https://cli.vuejs.org/guide/css.html#pre-processors)\n- [webpack + vue-loader](https://vue-loader.vuejs.org/guide/pre-processors.html#using-pre-processors)\n" + }, + values: [ + { + name: "ts" + }, + { + name: "js" + }, + { + name: "tsx" + }, + { + name: "jsx" + } + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#pre-processors" + } + ] + }, + { + name: "generic" + }, + { + name: "setup", + valueSet: "v", + description: { + kind: "markdown", + value: "\n- 各 `*.vue` ファイルには、最大 1 つの `<script setup>` ブロックを含めることができます(通常の `<script>` は除く)。\n\n- スクリプトは前処理され、コンポーネントの `setup()` 関数として使用されます。これは、**コンポーネントの各インスタンスに対して**実行されることを意味します。`<script setup>` のトップレベルのバインディングは、自動的にテンプレートに公開されます。詳細は [`<script setup>` に関する専用のドキュメント](https://ja.vuejs.org/api/sfc-script-setup.html)を参照してください。\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#script-setup" + } + ] + } + ], + description: { + kind: "markdown", + value: "\n- 各 `*.vue` ファイルには、最大 1 つの `<script>` ブロックを含めることができます([`<script setup>`](https://ja.vuejs.org/api/sfc-script-setup.html) は除く)。\n\n- スクリプトは、ES モジュールとして実行されます。\n\n- **default export** は、プレーンオブジェクトか [defineComponent](https://ja.vuejs.org/api/general.html#definecomponent) の戻り値のどちらかで、Vue のコンポーネントオプションオブジェクトになっている必要があります。\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#script" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#script" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#script" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#script" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#script" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#script" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#script" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#script" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#script" + } + ] + }, + { + name: "script setup", + attributes: [ + ], + description: { + kind: "markdown", + value: "\n- 各 `*.vue` ファイルには、最大 1 つの `<script setup>` ブロックを含めることができます(通常の `<script>` は除く)。\n\n- スクリプトは前処理され、コンポーネントの `setup()` 関数として使用されます。これは、**コンポーネントの各インスタンスに対して**実行されることを意味します。`<script setup>` のトップレベルのバインディングは、自動的にテンプレートに公開されます。詳細は [`<script setup>` に関する専用のドキュメント](https://ja.vuejs.org/api/sfc-script-setup.html)を参照してください。\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#script-setup" + } + ] + }, + { + name: "style", + attributes: [ + { + name: "src", + description: { + kind: "markdown", + value: "\n`*.vue` コンポーネントを複数のファイルに分割したい場合は、`src` 属性を使用して言語ブロックに外部ファイルをインポートできます:\n\n```vue\n<template src=\"./template.html\"></template>\n<style src=\"./style.css\"></style>\n<script src=\"./script.js\"></script>\n```\n\n`src` でのインポートは webpack のモジュールリクエストと同じパス解決ルールに従うので注意してください。つまり:\n\n- 相対パスは `./` で始める必要があります\n- npm の依存関係からリソースをインポートできます:\n\n```vue\n<!-- インストール済みの \"todomvc-app-css\" npm パッケージからファイルをインポート -->\n<style src=\"todomvc-app-css/index.css\" />\n```\n\n`src` でのインポートは、カスタムブロックでも動作します。例:\n\n```vue\n<unit-test src=\"./unit-test.js\">\n</unit-test>\n```\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#src-imports" + } + ] + }, + { + name: "lang", + description: { + kind: "markdown", + value: "\nブロックに `lang` 属性を使ってプリプロセッサーの言語を宣言できます。最も一般的なケースは、`<script>` ブロックでの TypeScript の使用です:\n\n```html\n<script lang=\"ts\">\n // TypeScript を使う\n</script>\n```\n\n`lang` はどのブロックにも適用できます - 例えば、`<style>` で [Sass](https://sass-lang.com/) を使用したり、`<template>` で [Pug](https://pugjs.org/api/getting-started.html) を使用できます:\n\n```html\n<template lang=\"pug\">\np {{ msg }}\n</template>\n\n<style lang=\"scss\">\n $primary-color: #333;\n body {\n color: $primary-color;\n }\n</style>\n```\n\nなお、各種プリプロセッサーとの統合はツールチェーンによって異なる場合があることに注意してください。例については、それぞれのドキュメントを参照してください:\n\n- [Vite](https://ja.vitejs.dev/guide/features.html#css-%E3%83%97%E3%83%AA%E3%83%97%E3%83%AD%E3%82%BB%E3%83%83%E3%82%B5)\n- [Vue CLI](https://cli.vuejs.org/guide/css.html#pre-processors)\n- [webpack + vue-loader](https://vue-loader.vuejs.org/guide/pre-processors.html#using-pre-processors)\n" + }, + values: [ + { + name: "css" + }, + { + name: "scss" + }, + { + name: "less" + }, + { + name: "stylus" + }, + { + name: "postcss" + }, + { + name: "sass" + } + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#pre-processors" + } + ] + }, + { + name: "scoped", + valueSet: "v", + description: { + kind: "markdown", + value: "\n`<style>` タグに `scoped` 属性が指定されている場合、その CSS は現在のコンポーネントの要素のみに適用されます。これは、Shadow DOM に見られるスタイルのカプセル化に似ています。これはいくつかの注意点がありますが、ポリフィルは必要ありません。これは、PostCSS を使って変換することで実現されます。次のコードは:\n\n```vue\n<style scoped>\n.example {\n color: red;\n}\n</style>\n\n<template>\n <div class=\"example\">hi</div>\n</template>\n```\n\n以下のように変換されます:\n\n```vue\n<style>\n.example[data-v-f3f3eg9] {\n color: red;\n}\n</style>\n\n<template>\n <div class=\"example\" data-v-f3f3eg9>hi</div>\n</template>\n```\n\n### 子コンポーネントのルート要素 \n\n`scoped` を使用すると、親コンポーネントのスタイルが子コンポーネントに漏れることはありません。しかし、子コンポーネントのルートノードは親のスコープ付き CSS と子のスコープ付き CSS の両方の影響を受けることになります。これは、親コンポーネントがレイアウトのために子コンポーネントのルート要素のスタイルを設定できるようにするための設計です。\n\n### deep セレクター \n\n`scoped` スタイルのセレクターを \"deep\" にしたい場合、つまり子コンポーネントに影響を与えたい場合は、`:deep()` 擬似クラスを使用できます:\n\n```vue\n<style scoped>\n.a :deep(.b) {\n /* ... */\n}\n</style>\n```\n\n上記は次のようにコンパイルされます:\n\n```css\n.a[data-v-f3f3eg9] .b {\n /* ... */\n}\n```\n\n:::tip\n`v-html` で作成された DOM コンテンツは、スコープ付きスタイルの影響を受けませんが、deep セレクターを使用してスタイルを設定可能です。\n:::\n\n### slotted セレクター \n\n`<slot/>` によってレンダリングされるコンテンツは、デフォルトでは親コンポーネントによって所有されていると見なされるため、スコープ付きスタイルの影響を受けません。明示的にスロットのコンテンツをターゲットにするには、`:slotted` 疑似クラスを使用します:\n\n```vue\n<style scoped>\n:slotted(div) {\n color: red;\n}\n</style>\n```\n\n### global セレクター \n\nもし 1 つのルールだけをグローバルに適用したい場合は、別の `<style>` を作成するかわりに、`:global` 疑似クラスを使用できます(以下を参照):\n\n```vue\n<style scoped>\n:global(.red) {\n color: red;\n}\n</style>\n```\n\n### ローカルスタイルとグローバルスタイルの混在 \n\nスコープ付きスタイルとスコープなしスタイルの両方を同じコンポーネントに含めることもできます:\n\n```vue\n<style>\n/* グローバルスタイル */\n</style>\n\n<style scoped>\n/* ローカルスタイル */\n</style>\n```\n\n### スコープ付きスタイルのヒント \n\n- **スコープ付きスタイルでクラスが不要になるわけではありません**。ブラウザーの様々な CSS セレクターのレンダリング方法により、`p { color: red }` をスコープ付きにした場合(つまり属性セレクターと組み合わせた場合)、何倍も遅くなります。その代わり、`.example { color: red }` のようにクラスや ID を使用すれば、このパフォーマンス低下をほぼ排除できます。\n\n- **再帰的コンポーネントでの子孫セレクターに注意!** `.a .b` というセレクターがある CSS ルールにおいて、`.a` にマッチする要素が再帰的な子コンポーネントを含む場合、その子コンポーネントのすべての `.b` がルールにマッチされます。\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-css-features.html#scoped-css" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-css-features.html#scoped-css" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-css-features.html#scoped-css" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-css-features.html#scoped-css" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-css-features.html#scoped-css" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-css-features.html#scoped-css" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-css-features.html#scoped-css" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-css-features.html#scoped-css" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-css-features.html#scoped-css" + } + ] + }, + { + name: "module", + valueSet: "v", + description: { + kind: "markdown", + value: "\n`<style module>` タグは [CSS モジュール](https://github.com/css-modules/css-modules)としてコンパイルされ、結果として得られる CSS クラスを `$style` というキーの下にオブジェクトとしてコンポーネントに公開します:\n\n```vue\n<template>\n <p :class=\"$style.red\">This should be red</p>\n</template>\n\n<style module>\n.red {\n color: red;\n}\n</style>\n```\n\n生成されたクラスは衝突を避けるためにハッシュ化され、CSS を現在のコンポーネントのみにスコープするのと同じ効果を得ることができます。\n\n[グローバルの例外](https://github.com/css-modules/css-modules#exceptions)や[コンポジション](https://github.com/css-modules/css-modules#composition)などの詳細は、[CSS モジュールの仕様](https://github.com/css-modules/css-modules)を参照してください。\n\n### カスタム注入名 \n\n`module` 属性に値を与えることで、注入されるクラスオブジェクトのプロパティキーをカスタマイズできます:\n\n```vue\n<template>\n <p :class=\"classes.red\">red</p>\n</template>\n\n<style module=\"classes\">\n.red {\n color: red;\n}\n</style>\n```\n\n### Composition API での使用 \n\n注入されたクラスは、`useCssModule` API を介して `setup()` や `<script setup>` の中でアクセスできます。カスタム注入名を持つ `<style module>` ブロックの場合、`useCssModule` は最初の引数としてマッチする `module` 属性の値を受け取ります:\n\n```js\nimport { useCssModule } from 'vue'\n\n// setup() スコープの内側...\n// デフォルトでは <style module> のクラスを返します\nuseCssModule()\n\n// 名前付きの例、<style module=\"classes\"> のクラスを返します\nuseCssModule('classes')\n```\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-css-features.html#css-modules" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-css-features.html#css-modules" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-css-features.html#css-modules" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-css-features.html#css-modules" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-css-features.html#css-modules" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-css-features.html#css-modules" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-css-features.html#css-modules" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-css-features.html#css-modules" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-css-features.html#css-modules" + } + ] + } + ], + description: { + kind: "markdown", + value: "\n- 1 つの `*.vue` ファイルに複数の `<style>` タグを含めることができます。\n\n- スタイルを現在のコンポーネントにカプセル化するため、`<style>` タグに `scoped` または `module` 属性を指定できます(詳細は [SFC スタイル機能](https://ja.vuejs.org/api/sfc-css-features.html)を参照)。同じコンポーネント内に、異なるカプセル化モードを持つ複数の `<style>` タグを混在させることができます。\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#style" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#style" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#style" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#style" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#style" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#style" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#style" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#style" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#style" + } + ] + }, + { + name: "カスタムブロック", + attributes: [ + { + name: "src", + description: { + kind: "markdown", + value: "\n`*.vue` コンポーネントを複数のファイルに分割したい場合は、`src` 属性を使用して言語ブロックに外部ファイルをインポートできます:\n\n```vue\n<template src=\"./template.html\"></template>\n<style src=\"./style.css\"></style>\n<script src=\"./script.js\"></script>\n```\n\n`src` でのインポートは webpack のモジュールリクエストと同じパス解決ルールに従うので注意してください。つまり:\n\n- 相対パスは `./` で始める必要があります\n- npm の依存関係からリソースをインポートできます:\n\n```vue\n<!-- インストール済みの \"todomvc-app-css\" npm パッケージからファイルをインポート -->\n<style src=\"todomvc-app-css/index.css\" />\n```\n\n`src` でのインポートは、カスタムブロックでも動作します。例:\n\n```vue\n<unit-test src=\"./unit-test.js\">\n</unit-test>\n```\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#src-imports" + } + ] + } + ], + description: { + kind: "markdown", + value: "\nプロジェクト固有のニーズに応じて、`*.vue` ファイルに `<docs>` ブロックのような追加のカスタムブロックを含めることができます。カスタムブロックの実際の例としては、以下のようなものがあります:\n\n- [Gridsome: `<page-query>`](https://gridsome.org/docs/querying-data/)\n- [vite-plugin-vue-gql: `<gql>`](https://github.com/wheatjs/vite-plugin-vue-gql)\n- [vue-i18n: `<i18n>`](https://github.com/intlify/bundle-tools/tree/main/packages/vite-plugin-vue-i18n#i18n-custom-block)\n\nカスタムブロックの扱いはツールに依存します - 独自のカスタムブロック統合を構築したい場合は、[SFC カスタムブロック統合ツールのセクション](https://ja.vuejs.org/guide/scaling-up/tooling.html#sfc-custom-block-integrations)で詳細を確認してください。\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#カスタムブロック" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#カスタムブロック" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#カスタムブロック" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#カスタムブロック" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#カスタムブロック" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#カスタムブロック" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#カスタムブロック" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#カスタムブロック" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#カスタムブロック" + } + ] + } +]; +const globalAttributes$8 = [ + { + name: "lang", + description: { + kind: "markdown", + value: "\nブロックに `lang` 属性を使ってプリプロセッサーの言語を宣言できます。最も一般的なケースは、`<script>` ブロックでの TypeScript の使用です:\n\n```html\n<script lang=\"ts\">\n // TypeScript を使う\n</script>\n```\n\n`lang` はどのブロックにも適用できます - 例えば、`<style>` で [Sass](https://sass-lang.com/) を使用したり、`<template>` で [Pug](https://pugjs.org/api/getting-started.html) を使用できます:\n\n```html\n<template lang=\"pug\">\np {{ msg }}\n</template>\n\n<style lang=\"scss\">\n $primary-color: #333;\n body {\n color: $primary-color;\n }\n</style>\n```\n\nなお、各種プリプロセッサーとの統合はツールチェーンによって異なる場合があることに注意してください。例については、それぞれのドキュメントを参照してください:\n\n- [Vite](https://ja.vitejs.dev/guide/features.html#css-%E3%83%97%E3%83%AA%E3%83%97%E3%83%AD%E3%82%BB%E3%83%83%E3%82%B5)\n- [Vue CLI](https://cli.vuejs.org/guide/css.html#pre-processors)\n- [webpack + vue-loader](https://vue-loader.vuejs.org/guide/pre-processors.html#using-pre-processors)\n" + }, + values: [ + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#pre-processors" + } + ] + }, + { + name: "src", + description: { + kind: "markdown", + value: "\n`*.vue` コンポーネントを複数のファイルに分割したい場合は、`src` 属性を使用して言語ブロックに外部ファイルをインポートできます:\n\n```vue\n<template src=\"./template.html\"></template>\n<style src=\"./style.css\"></style>\n<script src=\"./script.js\"></script>\n```\n\n`src` でのインポートは webpack のモジュールリクエストと同じパス解決ルールに従うので注意してください。つまり:\n\n- 相対パスは `./` で始める必要があります\n- npm の依存関係からリソースをインポートできます:\n\n```vue\n<!-- インストール済みの \"todomvc-app-css\" npm パッケージからファイルをインポート -->\n<style src=\"todomvc-app-css/index.css\" />\n```\n\n`src` でのインポートは、カスタムブロックでも動作します。例:\n\n```vue\n<unit-test src=\"./unit-test.js\">\n</unit-test>\n```\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#src-imports" + } + ] + } +]; +var require$$12 = { + version: version$8, + tags: tags$1, + globalAttributes: globalAttributes$8 +}; + +const version$7 = 1.1; +const tags = [ + { + name: "template", + attributes: [ + { + name: "src", + description: { + kind: "markdown", + value: "\nIf you prefer splitting up your `*.vue` components into multiple files, you can use the `src` attribute to import an external file for a language block:\n\n```vue\n<template src=\"./template.html\"></template>\n<style src=\"./style.css\"></style>\n<script src=\"./script.js\"></script>\n```\n\nBeware that `src` imports follow the same path resolution rules as webpack module requests, which means:\n\n- Relative paths need to start with `./`\n- You can import resources from npm dependencies:\n\n```vue\n<!-- import a file from the installed \"todomvc-app-css\" npm package -->\n<style src=\"todomvc-app-css/index.css\" />\n```\n\n`src` imports also work with custom blocks, e.g.:\n\n```vue\n<unit-test src=\"./unit-test.js\">\n</unit-test>\n```\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#src-imports" + } + ] + }, + { + name: "lang", + description: { + kind: "markdown", + value: "\nBlocks can declare pre-processor languages using the `lang` attribute. The most common case is using TypeScript for the `<script>` block:\n\n```html\n<script lang=\"ts\">\n // use TypeScript\n</script>\n```\n\n`lang` can be applied to any block - for example we can use `<style>` with [Sass](https://sass-lang.com/) and `<template>` with [Pug](https://pugjs.org/api/getting-started.html):\n\n```html\n<template lang=\"pug\">\np {{ msg }}\n</template>\n\n<style lang=\"scss\">\n $primary-color: #333;\n body {\n color: $primary-color;\n }\n</style>\n```\n\nNote that integration with various pre-processors may differ by toolchain. Check out the respective documentation for examples:\n\n- [Vite](https://vitejs.dev/guide/features.html#css-pre-processors)\n- [Vue CLI](https://cli.vuejs.org/guide/css.html#pre-processors)\n- [webpack + vue-loader](https://vue-loader.vuejs.org/guide/pre-processors.html#using-pre-processors)\n" + }, + values: [ + { + name: "html" + }, + { + name: "pug" + } + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#pre-processors" + } + ] + } + ], + description: { + kind: "markdown", + value: "\n- Each `*.vue` file can contain at most one top-level `<template>` block.\n\n- Contents will be extracted and passed on to `@vue/compiler-dom`, pre-compiled into JavaScript render functions, and attached to the exported component as its `render` option.\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#template" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#template" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#template" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#template" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#template" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#template" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#template" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#template" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#template" + } + ] + }, + { + name: "script", + attributes: [ + { + name: "src", + description: { + kind: "markdown", + value: "\nIf you prefer splitting up your `*.vue` components into multiple files, you can use the `src` attribute to import an external file for a language block:\n\n```vue\n<template src=\"./template.html\"></template>\n<style src=\"./style.css\"></style>\n<script src=\"./script.js\"></script>\n```\n\nBeware that `src` imports follow the same path resolution rules as webpack module requests, which means:\n\n- Relative paths need to start with `./`\n- You can import resources from npm dependencies:\n\n```vue\n<!-- import a file from the installed \"todomvc-app-css\" npm package -->\n<style src=\"todomvc-app-css/index.css\" />\n```\n\n`src` imports also work with custom blocks, e.g.:\n\n```vue\n<unit-test src=\"./unit-test.js\">\n</unit-test>\n```\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#src-imports" + } + ] + }, + { + name: "lang", + description: { + kind: "markdown", + value: "\nBlocks can declare pre-processor languages using the `lang` attribute. The most common case is using TypeScript for the `<script>` block:\n\n```html\n<script lang=\"ts\">\n // use TypeScript\n</script>\n```\n\n`lang` can be applied to any block - for example we can use `<style>` with [Sass](https://sass-lang.com/) and `<template>` with [Pug](https://pugjs.org/api/getting-started.html):\n\n```html\n<template lang=\"pug\">\np {{ msg }}\n</template>\n\n<style lang=\"scss\">\n $primary-color: #333;\n body {\n color: $primary-color;\n }\n</style>\n```\n\nNote that integration with various pre-processors may differ by toolchain. Check out the respective documentation for examples:\n\n- [Vite](https://vitejs.dev/guide/features.html#css-pre-processors)\n- [Vue CLI](https://cli.vuejs.org/guide/css.html#pre-processors)\n- [webpack + vue-loader](https://vue-loader.vuejs.org/guide/pre-processors.html#using-pre-processors)\n" + }, + values: [ + { + name: "ts" + }, + { + name: "js" + }, + { + name: "tsx" + }, + { + name: "jsx" + } + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#pre-processors" + } + ] + }, + { + name: "generic" + }, + { + name: "setup", + valueSet: "v", + description: { + kind: "markdown", + value: "\n- Each `*.vue` file can contain at most one `<script setup>` block (excluding normal `<script>`).\n\n- The script is pre-processed and used as the component's `setup()` function, which means it will be executed **for each instance of the component**. Top-level bindings in `<script setup>` are automatically exposed to the template. For more details, see [dedicated documentation on `<script setup>`](https://vuejs.org/api/sfc-script-setup.html).\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#script-setup" + } + ] + } + ], + description: { + kind: "markdown", + value: "\n- Each `*.vue` file can contain at most one `<script>` block (excluding [`<script setup>`](https://vuejs.org/api/sfc-script-setup.html)).\n\n- The script is executed as an ES Module.\n\n- The **default export** should be a Vue component options object, either as a plain object or as the return value of [defineComponent](https://vuejs.org/api/general.html#definecomponent).\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#script" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#script" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#script" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#script" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#script" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#script" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#script" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#script" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#script" + } + ] + }, + { + name: "script setup", + attributes: [ + ], + description: { + kind: "markdown", + value: "\n- Each `*.vue` file can contain at most one `<script setup>` block (excluding normal `<script>`).\n\n- The script is pre-processed and used as the component's `setup()` function, which means it will be executed **for each instance of the component**. Top-level bindings in `<script setup>` are automatically exposed to the template. For more details, see [dedicated documentation on `<script setup>`](https://vuejs.org/api/sfc-script-setup.html).\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#script-setup" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#script-setup" + } + ] + }, + { + name: "style", + attributes: [ + { + name: "src", + description: { + kind: "markdown", + value: "\nIf you prefer splitting up your `*.vue` components into multiple files, you can use the `src` attribute to import an external file for a language block:\n\n```vue\n<template src=\"./template.html\"></template>\n<style src=\"./style.css\"></style>\n<script src=\"./script.js\"></script>\n```\n\nBeware that `src` imports follow the same path resolution rules as webpack module requests, which means:\n\n- Relative paths need to start with `./`\n- You can import resources from npm dependencies:\n\n```vue\n<!-- import a file from the installed \"todomvc-app-css\" npm package -->\n<style src=\"todomvc-app-css/index.css\" />\n```\n\n`src` imports also work with custom blocks, e.g.:\n\n```vue\n<unit-test src=\"./unit-test.js\">\n</unit-test>\n```\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#src-imports" + } + ] + }, + { + name: "lang", + description: { + kind: "markdown", + value: "\nBlocks can declare pre-processor languages using the `lang` attribute. The most common case is using TypeScript for the `<script>` block:\n\n```html\n<script lang=\"ts\">\n // use TypeScript\n</script>\n```\n\n`lang` can be applied to any block - for example we can use `<style>` with [Sass](https://sass-lang.com/) and `<template>` with [Pug](https://pugjs.org/api/getting-started.html):\n\n```html\n<template lang=\"pug\">\np {{ msg }}\n</template>\n\n<style lang=\"scss\">\n $primary-color: #333;\n body {\n color: $primary-color;\n }\n</style>\n```\n\nNote that integration with various pre-processors may differ by toolchain. Check out the respective documentation for examples:\n\n- [Vite](https://vitejs.dev/guide/features.html#css-pre-processors)\n- [Vue CLI](https://cli.vuejs.org/guide/css.html#pre-processors)\n- [webpack + vue-loader](https://vue-loader.vuejs.org/guide/pre-processors.html#using-pre-processors)\n" + }, + values: [ + { + name: "css" + }, + { + name: "scss" + }, + { + name: "less" + }, + { + name: "stylus" + }, + { + name: "postcss" + }, + { + name: "sass" + } + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#pre-processors" + } + ] + }, + { + name: "scoped", + valueSet: "v", + description: { + kind: "markdown", + value: "\nWhen a `<style>` tag has the `scoped` attribute, its CSS will apply to elements of the current component only. This is similar to the style encapsulation found in Shadow DOM. It comes with some caveats, but doesn't require any polyfills. It is achieved by using PostCSS to transform the following:\n\n```vue\n<style scoped>\n.example {\n color: red;\n}\n</style>\n\n<template>\n <div class=\"example\">hi</div>\n</template>\n```\n\nInto the following:\n\n```vue\n<style>\n.example[data-v-f3f3eg9] {\n color: red;\n}\n</style>\n\n<template>\n <div class=\"example\" data-v-f3f3eg9>hi</div>\n</template>\n```\n\n### Child Component Root Elements \n\nWith `scoped`, the parent component's styles will not leak into child components. However, a child component's root node will be affected by both the parent's scoped CSS and the child's scoped CSS. This is by design so that the parent can style the child root element for layout purposes.\n\n### Deep Selectors \n\nIf you want a selector in `scoped` styles to be \"deep\", i.e. affecting child components, you can use the `:deep()` pseudo-class:\n\n```vue\n<style scoped>\n.a :deep(.b) {\n /* ... */\n}\n</style>\n```\n\nThe above will be compiled into:\n\n```css\n.a[data-v-f3f3eg9] .b {\n /* ... */\n}\n```\n\n:::tip\nDOM content created with `v-html` are not affected by scoped styles, but you can still style them using deep selectors.\n:::\n\n### Slotted Selectors \n\nBy default, scoped styles do not affect contents rendered by `<slot/>`, as they are considered to be owned by the parent component passing them in. To explicitly target slot content, use the `:slotted` pseudo-class:\n\n```vue\n<style scoped>\n:slotted(div) {\n color: red;\n}\n</style>\n```\n\n### Global Selectors \n\nIf you want just one rule to apply globally, you can use the `:global` pseudo-class rather than creating another `<style>` (see below):\n\n```vue\n<style scoped>\n:global(.red) {\n color: red;\n}\n</style>\n```\n\n### Mixing Local and Global Styles \n\nYou can also include both scoped and non-scoped styles in the same component:\n\n```vue\n<style>\n/* global styles */\n</style>\n\n<style scoped>\n/* local styles */\n</style>\n```\n\n### Scoped Style Tips \n\n- **Scoped styles do not eliminate the need for classes**. Due to the way browsers render various CSS selectors, `p { color: red }` will be many times slower when scoped (i.e. when combined with an attribute selector). If you use classes or ids instead, such as in `.example { color: red }`, then you virtually eliminate that performance hit.\n\n- **Be careful with descendant selectors in recursive components!** For a CSS rule with the selector `.a .b`, if the element that matches `.a` contains a recursive child component, then all `.b` in that child component will be matched by the rule.\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-css-features.html#scoped-css" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-css-features.html#scoped-css" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-css-features.html#scoped-css" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-css-features.html#scoped-css" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-css-features.html#scoped-css" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-css-features.html#scoped-css" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-css-features.html#scoped-css" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-css-features.html#scoped-css" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-css-features.html#scoped-css" + } + ] + }, + { + name: "module", + valueSet: "v", + description: { + kind: "markdown", + value: "\nA `<style module>` tag is compiled as [CSS Modules](https://github.com/css-modules/css-modules) and exposes the resulting CSS classes to the component as an object under the key of `$style`:\n\n```vue\n<template>\n <p :class=\"$style.red\">This should be red</p>\n</template>\n\n<style module>\n.red {\n color: red;\n}\n</style>\n```\n\nThe resulting classes are hashed to avoid collision, achieving the same effect of scoping the CSS to the current component only.\n\nRefer to the [CSS Modules spec](https://github.com/css-modules/css-modules) for more details such as [global exceptions](https://github.com/css-modules/css-modules#exceptions) and [composition](https://github.com/css-modules/css-modules#composition).\n\n### Custom Inject Name \n\nYou can customize the property key of the injected classes object by giving the `module` attribute a value:\n\n```vue\n<template>\n <p :class=\"classes.red\">red</p>\n</template>\n\n<style module=\"classes\">\n.red {\n color: red;\n}\n</style>\n```\n\n### Usage with Composition API \n\nThe injected classes can be accessed in `setup()` and `<script setup>` via the `useCssModule` API. For `<style module>` blocks with custom injection names, `useCssModule` accepts the matching `module` attribute value as the first argument:\n\n```js\nimport { useCssModule } from 'vue'\n\n// inside setup() scope...\n// default, returns classes for <style module>\nuseCssModule()\n\n// named, returns classes for <style module=\"classes\">\nuseCssModule('classes')\n```\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-css-features.html#css-modules" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-css-features.html#css-modules" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-css-features.html#css-modules" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-css-features.html#css-modules" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-css-features.html#css-modules" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-css-features.html#css-modules" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-css-features.html#css-modules" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-css-features.html#css-modules" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-css-features.html#css-modules" + } + ] + } + ], + description: { + kind: "markdown", + value: "\n- A single `*.vue` file can contain multiple `<style>` tags.\n\n- A `<style>` tag can have `scoped` or `module` attributes (see [SFC Style Features](https://vuejs.org/api/sfc-css-features.html) for more details) to help encapsulate the styles to the current component. Multiple `<style>` tags with different encapsulation modes can be mixed in the same component.\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#style" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#style" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#style" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#style" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#style" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#style" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#style" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#style" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#style" + } + ] + }, + { + name: "Custom Blocks", + attributes: [ + { + name: "src", + description: { + kind: "markdown", + value: "\nIf you prefer splitting up your `*.vue` components into multiple files, you can use the `src` attribute to import an external file for a language block:\n\n```vue\n<template src=\"./template.html\"></template>\n<style src=\"./style.css\"></style>\n<script src=\"./script.js\"></script>\n```\n\nBeware that `src` imports follow the same path resolution rules as webpack module requests, which means:\n\n- Relative paths need to start with `./`\n- You can import resources from npm dependencies:\n\n```vue\n<!-- import a file from the installed \"todomvc-app-css\" npm package -->\n<style src=\"todomvc-app-css/index.css\" />\n```\n\n`src` imports also work with custom blocks, e.g.:\n\n```vue\n<unit-test src=\"./unit-test.js\">\n</unit-test>\n```\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#src-imports" + } + ] + } + ], + description: { + kind: "markdown", + value: "\nAdditional custom blocks can be included in a `*.vue` file for any project-specific needs, for example a `<docs>` block. Some real-world examples of custom blocks include:\n\n- [Gridsome: `<page-query>`](https://gridsome.org/docs/querying-data/)\n- [vite-plugin-vue-gql: `<gql>`](https://github.com/wheatjs/vite-plugin-vue-gql)\n- [vue-i18n: `<i18n>`](https://github.com/intlify/bundle-tools/tree/main/packages/vite-plugin-vue-i18n#i18n-custom-block)\n\nHandling of Custom Blocks will depend on tooling - if you want to build your own custom block integrations, see the [SFC custom block integrations tooling section](https://vuejs.org/guide/scaling-up/tooling.html#sfc-custom-block-integrations) for more details.\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#custom-blocks" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#custom-blocks" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#custom-blocks" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#custom-blocks" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#custom-blocks" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#custom-blocks" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#custom-blocks" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#custom-blocks" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#custom-blocks" + } + ] + } +]; +const globalAttributes$7 = [ + { + name: "lang", + description: { + kind: "markdown", + value: "\nBlocks can declare pre-processor languages using the `lang` attribute. The most common case is using TypeScript for the `<script>` block:\n\n```html\n<script lang=\"ts\">\n // use TypeScript\n</script>\n```\n\n`lang` can be applied to any block - for example we can use `<style>` with [Sass](https://sass-lang.com/) and `<template>` with [Pug](https://pugjs.org/api/getting-started.html):\n\n```html\n<template lang=\"pug\">\np {{ msg }}\n</template>\n\n<style lang=\"scss\">\n $primary-color: #333;\n body {\n color: $primary-color;\n }\n</style>\n```\n\nNote that integration with various pre-processors may differ by toolchain. Check out the respective documentation for examples:\n\n- [Vite](https://vitejs.dev/guide/features.html#css-pre-processors)\n- [Vue CLI](https://cli.vuejs.org/guide/css.html#pre-processors)\n- [webpack + vue-loader](https://vue-loader.vuejs.org/guide/pre-processors.html#using-pre-processors)\n" + }, + values: [ + ], + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#pre-processors" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#pre-processors" + } + ] + }, + { + name: "src", + description: { + kind: "markdown", + value: "\nIf you prefer splitting up your `*.vue` components into multiple files, you can use the `src` attribute to import an external file for a language block:\n\n```vue\n<template src=\"./template.html\"></template>\n<style src=\"./style.css\"></style>\n<script src=\"./script.js\"></script>\n```\n\nBeware that `src` imports follow the same path resolution rules as webpack module requests, which means:\n\n- Relative paths need to start with `./`\n- You can import resources from npm dependencies:\n\n```vue\n<!-- import a file from the installed \"todomvc-app-css\" npm package -->\n<style src=\"todomvc-app-css/index.css\" />\n```\n\n`src` imports also work with custom blocks, e.g.:\n\n```vue\n<unit-test src=\"./unit-test.js\">\n</unit-test>\n```\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ja", + url: "https://ja.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ua", + url: "https://ua.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "fr", + url: "https://fr.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "ko", + url: "https://ko.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "pt", + url: "https://pt.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "bn", + url: "https://bn.vuejs.org/api/sfc-spec.html#src-imports" + }, + { + name: "it", + url: "https://it.vuejs.org/api/sfc-spec.html#src-imports" + } + ] + } +]; +var require$$13 = { + version: version$7, + tags: tags, + globalAttributes: globalAttributes$7 +}; + +const version$6 = 1.1; +const globalAttributes$6 = [ + { + name: "lazy", + description: { + kind: "markdown", + value: "\nDi default, `v-model` sincronizza l'input con i dati dopo ogni evento `input` (con l'eccezione della composizione IME come [indicato sopra](#vmodel-ime-tip)). Aggiungendo il modificatore `lazy`, la sincronizzazione avviene dopo gli eventi `change`, anziché dopo ogni evento `input`:\n\n```html\n<!-- Sincronizzati dopo \"change\" al posto di \"input\" -->\n<input v-model.lazy=\"msg\" />\n```\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/guide/essentials/forms.html#lazy" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/guide/essentials/forms.html#lazy" + }, + { + name: "ja", + url: "https://ja.vuejs.org/guide/essentials/forms.html#lazy" + }, + { + name: "ua", + url: "https://ua.vuejs.org/guide/essentials/forms.html#lazy" + }, + { + name: "fr", + url: "https://fr.vuejs.org/guide/essentials/forms.html#lazy" + }, + { + name: "ko", + url: "https://ko.vuejs.org/guide/essentials/forms.html#lazy" + }, + { + name: "pt", + url: "https://pt.vuejs.org/guide/essentials/forms.html#lazy" + }, + { + name: "bn", + url: "https://bn.vuejs.org/guide/essentials/forms.html#lazy" + }, + { + name: "it", + url: "https://it.vuejs.org/guide/essentials/forms.html#lazy" + } + ] + }, + { + name: "number", + description: { + kind: "markdown", + value: "\nSe desideri che l'input dell'utente venga automaticamente convertito in un numero, puoi aggiungere il modificatore `number` agli input gestiti da `v-model`:\n\n```html\n<input v-model.number=\"age\" />\n```\n\nSe il valore non può essere interpretato con `parseFloat()`, verrà allora utilizzato il valore originale.\n\nIl modificatore `number` viene applicato automaticamente se l'input ha `type=\"number\"`.\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/guide/essentials/forms.html#number" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/guide/essentials/forms.html#number" + }, + { + name: "ja", + url: "https://ja.vuejs.org/guide/essentials/forms.html#number" + }, + { + name: "ua", + url: "https://ua.vuejs.org/guide/essentials/forms.html#number" + }, + { + name: "fr", + url: "https://fr.vuejs.org/guide/essentials/forms.html#number" + }, + { + name: "ko", + url: "https://ko.vuejs.org/guide/essentials/forms.html#number" + }, + { + name: "pt", + url: "https://pt.vuejs.org/guide/essentials/forms.html#number" + }, + { + name: "bn", + url: "https://bn.vuejs.org/guide/essentials/forms.html#number" + }, + { + name: "it", + url: "https://it.vuejs.org/guide/essentials/forms.html#number" + } + ] + }, + { + name: "trim", + description: { + kind: "markdown", + value: "\nSe vuoi che gli spazi bianchi inseriti dall'utente vengano rimossi automaticamente, puoi aggiungere il modificatore `trim` agli input gestiti da `v-model`:\n\n```html\n<input v-model.trim=\"msg\" />\n```\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/guide/essentials/forms.html#trim" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/guide/essentials/forms.html#trim" + }, + { + name: "ja", + url: "https://ja.vuejs.org/guide/essentials/forms.html#trim" + }, + { + name: "ua", + url: "https://ua.vuejs.org/guide/essentials/forms.html#trim" + }, + { + name: "fr", + url: "https://fr.vuejs.org/guide/essentials/forms.html#trim" + }, + { + name: "ko", + url: "https://ko.vuejs.org/guide/essentials/forms.html#trim" + }, + { + name: "pt", + url: "https://pt.vuejs.org/guide/essentials/forms.html#trim" + }, + { + name: "bn", + url: "https://bn.vuejs.org/guide/essentials/forms.html#trim" + }, + { + name: "it", + url: "https://it.vuejs.org/guide/essentials/forms.html#trim" + } + ] + } +]; +var require$$14 = { + version: version$6, + globalAttributes: globalAttributes$6 +}; + +const version$5 = 1.1; +const globalAttributes$5 = [ + { + name: "lazy", + description: { + kind: "markdown", + value: "\n默认情况下,`v-model` 会在每次 `input` 事件后更新数据 ([IME 拼字阶段的状态](#vmodel-ime-tip)例外)。你可以添加 `lazy` 修饰符来改为在每次 `change` 事件后更新数据:\n\n```html\n<!-- 在 \"change\" 事件后同步更新而不是 \"input\" -->\n<input v-model.lazy=\"msg\" />\n```\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/guide/essentials/forms.html#lazy" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/guide/essentials/forms.html#lazy" + }, + { + name: "ja", + url: "https://ja.vuejs.org/guide/essentials/forms.html#lazy" + }, + { + name: "ua", + url: "https://ua.vuejs.org/guide/essentials/forms.html#lazy" + }, + { + name: "fr", + url: "https://fr.vuejs.org/guide/essentials/forms.html#lazy" + }, + { + name: "ko", + url: "https://ko.vuejs.org/guide/essentials/forms.html#lazy" + }, + { + name: "pt", + url: "https://pt.vuejs.org/guide/essentials/forms.html#lazy" + }, + { + name: "bn", + url: "https://bn.vuejs.org/guide/essentials/forms.html#lazy" + }, + { + name: "it", + url: "https://it.vuejs.org/guide/essentials/forms.html#lazy" + } + ] + }, + { + name: "number", + description: { + kind: "markdown", + value: "\n如果你想让用户输入自动转换为数字,你可以在 `v-model` 后添加 `.number` 修饰符来管理输入:\n\n```html\n<input v-model.number=\"age\" />\n```\n\n如果该值无法被 `parseFloat()` 处理,那么将返回原始值。\n\n`number` 修饰符会在输入框有 `type=\"number\"` 时自动启用。\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/guide/essentials/forms.html#number" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/guide/essentials/forms.html#number" + }, + { + name: "ja", + url: "https://ja.vuejs.org/guide/essentials/forms.html#number" + }, + { + name: "ua", + url: "https://ua.vuejs.org/guide/essentials/forms.html#number" + }, + { + name: "fr", + url: "https://fr.vuejs.org/guide/essentials/forms.html#number" + }, + { + name: "ko", + url: "https://ko.vuejs.org/guide/essentials/forms.html#number" + }, + { + name: "pt", + url: "https://pt.vuejs.org/guide/essentials/forms.html#number" + }, + { + name: "bn", + url: "https://bn.vuejs.org/guide/essentials/forms.html#number" + }, + { + name: "it", + url: "https://it.vuejs.org/guide/essentials/forms.html#number" + } + ] + }, + { + name: "trim", + description: { + kind: "markdown", + value: "\n如果你想要默认自动去除用户输入内容中两端的空格,你可以在 `v-model` 后添加 `.trim` 修饰符:\n\n```html\n<input v-model.trim=\"msg\" />\n```\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/guide/essentials/forms.html#trim" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/guide/essentials/forms.html#trim" + }, + { + name: "ja", + url: "https://ja.vuejs.org/guide/essentials/forms.html#trim" + }, + { + name: "ua", + url: "https://ua.vuejs.org/guide/essentials/forms.html#trim" + }, + { + name: "fr", + url: "https://fr.vuejs.org/guide/essentials/forms.html#trim" + }, + { + name: "ko", + url: "https://ko.vuejs.org/guide/essentials/forms.html#trim" + }, + { + name: "pt", + url: "https://pt.vuejs.org/guide/essentials/forms.html#trim" + }, + { + name: "bn", + url: "https://bn.vuejs.org/guide/essentials/forms.html#trim" + }, + { + name: "it", + url: "https://it.vuejs.org/guide/essentials/forms.html#trim" + } + ] + } +]; +var require$$15 = { + version: version$5, + globalAttributes: globalAttributes$5 +}; + +const version$4 = 1.1; +const globalAttributes$4 = [ + { + name: "lazy", + description: { + kind: "markdown", + value: "\nPor padrão, a `v-model` sincroniza a entrada com o dado depois de cada evento de `input` (com a exceção da composição de IME como [especificada acima](#vmodel-ime-tip)). Tu podes adicionar o modificador `lazy` no lugar de sincronizar depois dos eventos `change`:\n\n```html\n<!-- sincronizado depois de \"change\" no lugar de \"input\" -->\n<input v-model.lazy=\"msg\" />\n```\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/guide/essentials/forms.html#lazy" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/guide/essentials/forms.html#lazy" + }, + { + name: "ja", + url: "https://ja.vuejs.org/guide/essentials/forms.html#lazy" + }, + { + name: "ua", + url: "https://ua.vuejs.org/guide/essentials/forms.html#lazy" + }, + { + name: "fr", + url: "https://fr.vuejs.org/guide/essentials/forms.html#lazy" + }, + { + name: "ko", + url: "https://ko.vuejs.org/guide/essentials/forms.html#lazy" + }, + { + name: "pt", + url: "https://pt.vuejs.org/guide/essentials/forms.html#lazy" + }, + { + name: "bn", + url: "https://bn.vuejs.org/guide/essentials/forms.html#lazy" + }, + { + name: "it", + url: "https://it.vuejs.org/guide/essentials/forms.html#lazy" + } + ] + }, + { + name: "number", + description: { + kind: "markdown", + value: "\nSe quiseres que a entrada do utilizador seja automaticamente tratada como um número, podes adicionar o modificador `number` as tuas entradas geridas pela `v-model`:\n\n```html\n<input v-model.number=\"age\" />\n```\n\nSe o valor não puder ser analisado com `parseFloat()`, então o valor original é utilizado no lugar.\n\nO modificador `number` é aplicado automaticamente se a entrada tiver o `type=\"number\"`.\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/guide/essentials/forms.html#number" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/guide/essentials/forms.html#number" + }, + { + name: "ja", + url: "https://ja.vuejs.org/guide/essentials/forms.html#number" + }, + { + name: "ua", + url: "https://ua.vuejs.org/guide/essentials/forms.html#number" + }, + { + name: "fr", + url: "https://fr.vuejs.org/guide/essentials/forms.html#number" + }, + { + name: "ko", + url: "https://ko.vuejs.org/guide/essentials/forms.html#number" + }, + { + name: "pt", + url: "https://pt.vuejs.org/guide/essentials/forms.html#number" + }, + { + name: "bn", + url: "https://bn.vuejs.org/guide/essentials/forms.html#number" + }, + { + name: "it", + url: "https://it.vuejs.org/guide/essentials/forms.html#number" + } + ] + }, + { + name: "trim", + description: { + kind: "markdown", + value: "\nSe quiseres que espaços em branco da entrada do utilizador sejam cortados automaticamente, podes adicionar o modificador `trim` as tuas entradas geridas pela `v-model`:\n\n```html\n<input v-model.trim=\"msg\" />\n```\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/guide/essentials/forms.html#trim" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/guide/essentials/forms.html#trim" + }, + { + name: "ja", + url: "https://ja.vuejs.org/guide/essentials/forms.html#trim" + }, + { + name: "ua", + url: "https://ua.vuejs.org/guide/essentials/forms.html#trim" + }, + { + name: "fr", + url: "https://fr.vuejs.org/guide/essentials/forms.html#trim" + }, + { + name: "ko", + url: "https://ko.vuejs.org/guide/essentials/forms.html#trim" + }, + { + name: "pt", + url: "https://pt.vuejs.org/guide/essentials/forms.html#trim" + }, + { + name: "bn", + url: "https://bn.vuejs.org/guide/essentials/forms.html#trim" + }, + { + name: "it", + url: "https://it.vuejs.org/guide/essentials/forms.html#trim" + } + ] + } +]; +var require$$16 = { + version: version$4, + globalAttributes: globalAttributes$4 +}; + +const version$3 = 1.1; +const globalAttributes$3 = [ + { + name: "lazy", + description: { + kind: "markdown", + value: "\n기본적으로 `v-model`은 각 `input` 이벤트 이후 데이터와 입력을 동기화합니다([위에 언급된 IME 구성 제외](#vmodel-ime-tip)).\n대신 `change` 이벤트 이후에 동기화하기 위해 `.lazy` 수식어를 추가할 수 있습니다.\n\n```html\n<!-- \"input\" 대신 \"change\" 이벤트 후에 동기화됨 -->\n<input v-model.lazy=\"msg\" />\n```\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/guide/essentials/forms.html#lazy" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/guide/essentials/forms.html#lazy" + }, + { + name: "ja", + url: "https://ja.vuejs.org/guide/essentials/forms.html#lazy" + }, + { + name: "ua", + url: "https://ua.vuejs.org/guide/essentials/forms.html#lazy" + }, + { + name: "fr", + url: "https://fr.vuejs.org/guide/essentials/forms.html#lazy" + }, + { + name: "ko", + url: "https://ko.vuejs.org/guide/essentials/forms.html#lazy" + }, + { + name: "pt", + url: "https://pt.vuejs.org/guide/essentials/forms.html#lazy" + }, + { + name: "bn", + url: "https://bn.vuejs.org/guide/essentials/forms.html#lazy" + }, + { + name: "it", + url: "https://it.vuejs.org/guide/essentials/forms.html#lazy" + } + ] + }, + { + name: "number", + description: { + kind: "markdown", + value: "\n사용자 입력이 자동으로 숫자로 유형 변환되도록 하려면, `v-model` 수식어로 `.number`를 추가하면 됩니다:\n\n```html\n<input v-model.number=\"age\" />\n```\n\n값을 `parseFloat()`로 파싱할 수 없으면 원래 값이 대신 사용됩니다.\n\n인풋에 `type=\"number\"`가 있으면 `.number` 수식어가 자동으로 적용됩니다.\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/guide/essentials/forms.html#number" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/guide/essentials/forms.html#number" + }, + { + name: "ja", + url: "https://ja.vuejs.org/guide/essentials/forms.html#number" + }, + { + name: "ua", + url: "https://ua.vuejs.org/guide/essentials/forms.html#number" + }, + { + name: "fr", + url: "https://fr.vuejs.org/guide/essentials/forms.html#number" + }, + { + name: "ko", + url: "https://ko.vuejs.org/guide/essentials/forms.html#number" + }, + { + name: "pt", + url: "https://pt.vuejs.org/guide/essentials/forms.html#number" + }, + { + name: "bn", + url: "https://bn.vuejs.org/guide/essentials/forms.html#number" + }, + { + name: "it", + url: "https://it.vuejs.org/guide/essentials/forms.html#number" + } + ] + }, + { + name: "trim", + description: { + kind: "markdown", + value: "\n사용자 입력의 공백이 자동으로 트리밍되도록 하려면 `v-model` 수식어로 `.trim`을 추가하면 됩니다:\n\n```html\n<input v-model.trim=\"msg\" />\n```\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/guide/essentials/forms.html#trim" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/guide/essentials/forms.html#trim" + }, + { + name: "ja", + url: "https://ja.vuejs.org/guide/essentials/forms.html#trim" + }, + { + name: "ua", + url: "https://ua.vuejs.org/guide/essentials/forms.html#trim" + }, + { + name: "fr", + url: "https://fr.vuejs.org/guide/essentials/forms.html#trim" + }, + { + name: "ko", + url: "https://ko.vuejs.org/guide/essentials/forms.html#trim" + }, + { + name: "pt", + url: "https://pt.vuejs.org/guide/essentials/forms.html#trim" + }, + { + name: "bn", + url: "https://bn.vuejs.org/guide/essentials/forms.html#trim" + }, + { + name: "it", + url: "https://it.vuejs.org/guide/essentials/forms.html#trim" + } + ] + } +]; +var require$$17 = { + version: version$3, + globalAttributes: globalAttributes$3 +}; + +const version$2 = 1.1; +const globalAttributes$2 = [ + { + name: "lazy", + description: { + kind: "markdown", + value: "\nPar défaut, `v-model` synchronise l'entrée avec les données après chaque événement `input` (à l'exception de la composition IME comme [indiqué ci-dessus](#vmodel-ime-tip)). Vous pouvez ajouter le modificateur `lazy` pour enclencher la synchronisation après les événements `change` :\n\n```html\n<!-- synchronisé après \"change\" au lieu de \"input\" -->\n<input v-model.lazy=\"msg\" />\n```\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/guide/essentials/forms.html#lazy" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/guide/essentials/forms.html#lazy" + }, + { + name: "ja", + url: "https://ja.vuejs.org/guide/essentials/forms.html#lazy" + }, + { + name: "ua", + url: "https://ua.vuejs.org/guide/essentials/forms.html#lazy" + }, + { + name: "fr", + url: "https://fr.vuejs.org/guide/essentials/forms.html#lazy" + }, + { + name: "ko", + url: "https://ko.vuejs.org/guide/essentials/forms.html#lazy" + }, + { + name: "pt", + url: "https://pt.vuejs.org/guide/essentials/forms.html#lazy" + }, + { + name: "bn", + url: "https://bn.vuejs.org/guide/essentials/forms.html#lazy" + }, + { + name: "it", + url: "https://it.vuejs.org/guide/essentials/forms.html#lazy" + } + ] + }, + { + name: "number", + description: { + kind: "markdown", + value: "\nSi vous voulez que l'entrée de l'utilisateur soit automatiquement typée comme un nombre, vous pouvez ajouter le modificateur `number` à vos entrées gérées par `v-model` :\n\n```html\n<input v-model.number=\"age\" />\n```\n\nSi la valeur ne peut pas être analysée avec `parseFloat()`, alors la valeur originale est utilisée à la place.\n\nLe modificateur `number` est appliqué automatiquement si l'entrée possède `type=\"number\"`.\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/guide/essentials/forms.html#number" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/guide/essentials/forms.html#number" + }, + { + name: "ja", + url: "https://ja.vuejs.org/guide/essentials/forms.html#number" + }, + { + name: "ua", + url: "https://ua.vuejs.org/guide/essentials/forms.html#number" + }, + { + name: "fr", + url: "https://fr.vuejs.org/guide/essentials/forms.html#number" + }, + { + name: "ko", + url: "https://ko.vuejs.org/guide/essentials/forms.html#number" + }, + { + name: "pt", + url: "https://pt.vuejs.org/guide/essentials/forms.html#number" + }, + { + name: "bn", + url: "https://bn.vuejs.org/guide/essentials/forms.html#number" + }, + { + name: "it", + url: "https://it.vuejs.org/guide/essentials/forms.html#number" + } + ] + }, + { + name: "trim", + description: { + kind: "markdown", + value: "\nSi vous voulez que les espaces blancs des entrées utilisateur soient automatiquement supprimés, vous pouvez ajouter le modificateur `trim` à vos entrées gérées par `v-model` :\n\n```html\n<input v-model.trim=\"msg\" />\n```\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/guide/essentials/forms.html#trim" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/guide/essentials/forms.html#trim" + }, + { + name: "ja", + url: "https://ja.vuejs.org/guide/essentials/forms.html#trim" + }, + { + name: "ua", + url: "https://ua.vuejs.org/guide/essentials/forms.html#trim" + }, + { + name: "fr", + url: "https://fr.vuejs.org/guide/essentials/forms.html#trim" + }, + { + name: "ko", + url: "https://ko.vuejs.org/guide/essentials/forms.html#trim" + }, + { + name: "pt", + url: "https://pt.vuejs.org/guide/essentials/forms.html#trim" + }, + { + name: "bn", + url: "https://bn.vuejs.org/guide/essentials/forms.html#trim" + }, + { + name: "it", + url: "https://it.vuejs.org/guide/essentials/forms.html#trim" + } + ] + } +]; +var require$$18 = { + version: version$2, + globalAttributes: globalAttributes$2 +}; + +const version$1 = 1.1; +const globalAttributes$1 = [ + { + name: "lazy", + description: { + kind: "markdown", + value: "\nデフォルトでは、 `v-model` は各 `input` イベントの後に、入力とデータを同期します ([上記](#vmodel-ime-tip) の IME による入力は例外とします)。 代わりに `change` イベント後に同期する `lazy` 修飾子を追加することができます。\n\n```html\n<!-- \"input\" の代わりに \"change\" イベント後に同期されます -->\n<input v-model.lazy=\"msg\" />\n```\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/guide/essentials/forms.html#lazy" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/guide/essentials/forms.html#lazy" + }, + { + name: "ja", + url: "https://ja.vuejs.org/guide/essentials/forms.html#lazy" + }, + { + name: "ua", + url: "https://ua.vuejs.org/guide/essentials/forms.html#lazy" + }, + { + name: "fr", + url: "https://fr.vuejs.org/guide/essentials/forms.html#lazy" + }, + { + name: "ko", + url: "https://ko.vuejs.org/guide/essentials/forms.html#lazy" + }, + { + name: "pt", + url: "https://pt.vuejs.org/guide/essentials/forms.html#lazy" + }, + { + name: "bn", + url: "https://bn.vuejs.org/guide/essentials/forms.html#lazy" + }, + { + name: "it", + url: "https://it.vuejs.org/guide/essentials/forms.html#lazy" + } + ] + }, + { + name: "number", + description: { + kind: "markdown", + value: "\nユーザー入力を自動で数値として型変換したい場合、 `v-model` で管理している入力に `number` 修飾子を追加することができます。\n\n```html\n<input v-model.number=\"age\" />\n```\n\nもし値が `parseFloat()` で解析できない場合は、代わりに元の値が使用されます。\n\ninput が `type=\"number\"` を持つ場合は `number` 修飾子が自動で適用されます。\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/guide/essentials/forms.html#number" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/guide/essentials/forms.html#number" + }, + { + name: "ja", + url: "https://ja.vuejs.org/guide/essentials/forms.html#number" + }, + { + name: "ua", + url: "https://ua.vuejs.org/guide/essentials/forms.html#number" + }, + { + name: "fr", + url: "https://fr.vuejs.org/guide/essentials/forms.html#number" + }, + { + name: "ko", + url: "https://ko.vuejs.org/guide/essentials/forms.html#number" + }, + { + name: "pt", + url: "https://pt.vuejs.org/guide/essentials/forms.html#number" + }, + { + name: "bn", + url: "https://bn.vuejs.org/guide/essentials/forms.html#number" + }, + { + name: "it", + url: "https://it.vuejs.org/guide/essentials/forms.html#number" + } + ] + }, + { + name: "trim", + description: { + kind: "markdown", + value: "\nユーザー入力から自動で空白を取り除きたい場合、 `v-model` で管理している入力に `trim` 修飾子を追加することができます。\n\n```html\n<input v-model.trim=\"msg\" />\n```\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/guide/essentials/forms.html#trim" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/guide/essentials/forms.html#trim" + }, + { + name: "ja", + url: "https://ja.vuejs.org/guide/essentials/forms.html#trim" + }, + { + name: "ua", + url: "https://ua.vuejs.org/guide/essentials/forms.html#trim" + }, + { + name: "fr", + url: "https://fr.vuejs.org/guide/essentials/forms.html#trim" + }, + { + name: "ko", + url: "https://ko.vuejs.org/guide/essentials/forms.html#trim" + }, + { + name: "pt", + url: "https://pt.vuejs.org/guide/essentials/forms.html#trim" + }, + { + name: "bn", + url: "https://bn.vuejs.org/guide/essentials/forms.html#trim" + }, + { + name: "it", + url: "https://it.vuejs.org/guide/essentials/forms.html#trim" + } + ] + } +]; +var require$$19 = { + version: version$1, + globalAttributes: globalAttributes$1 +}; + +const version = 1.1; +const globalAttributes = [ + { + name: "lazy", + description: { + kind: "markdown", + value: "\nBy default, `v-model` syncs the input with the data after each `input` event (with the exception of IME composition as [stated above](#vmodel-ime-tip)). You can add the `lazy` modifier to instead sync after `change` events:\n\n```html\n<!-- synced after \"change\" instead of \"input\" -->\n<input v-model.lazy=\"msg\" />\n```\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/guide/essentials/forms.html#lazy" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/guide/essentials/forms.html#lazy" + }, + { + name: "ja", + url: "https://ja.vuejs.org/guide/essentials/forms.html#lazy" + }, + { + name: "ua", + url: "https://ua.vuejs.org/guide/essentials/forms.html#lazy" + }, + { + name: "fr", + url: "https://fr.vuejs.org/guide/essentials/forms.html#lazy" + }, + { + name: "ko", + url: "https://ko.vuejs.org/guide/essentials/forms.html#lazy" + }, + { + name: "pt", + url: "https://pt.vuejs.org/guide/essentials/forms.html#lazy" + }, + { + name: "bn", + url: "https://bn.vuejs.org/guide/essentials/forms.html#lazy" + }, + { + name: "it", + url: "https://it.vuejs.org/guide/essentials/forms.html#lazy" + } + ] + }, + { + name: "number", + description: { + kind: "markdown", + value: "\nIf you want user input to be automatically typecast as a number, you can add the `number` modifier to your `v-model` managed inputs:\n\n```html\n<input v-model.number=\"age\" />\n```\n\nIf the value cannot be parsed with `parseFloat()`, then the original value is used instead.\n\nThe `number` modifier is applied automatically if the input has `type=\"number\"`.\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/guide/essentials/forms.html#number" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/guide/essentials/forms.html#number" + }, + { + name: "ja", + url: "https://ja.vuejs.org/guide/essentials/forms.html#number" + }, + { + name: "ua", + url: "https://ua.vuejs.org/guide/essentials/forms.html#number" + }, + { + name: "fr", + url: "https://fr.vuejs.org/guide/essentials/forms.html#number" + }, + { + name: "ko", + url: "https://ko.vuejs.org/guide/essentials/forms.html#number" + }, + { + name: "pt", + url: "https://pt.vuejs.org/guide/essentials/forms.html#number" + }, + { + name: "bn", + url: "https://bn.vuejs.org/guide/essentials/forms.html#number" + }, + { + name: "it", + url: "https://it.vuejs.org/guide/essentials/forms.html#number" + } + ] + }, + { + name: "trim", + description: { + kind: "markdown", + value: "\nIf you want whitespace from user input to be trimmed automatically, you can add the `trim` modifier to your `v-model`-managed inputs:\n\n```html\n<input v-model.trim=\"msg\" />\n```\n" + }, + references: [ + { + name: "en", + url: "https://vuejs.org/guide/essentials/forms.html#trim" + }, + { + name: "zh-cn", + url: "https://cn.vuejs.org/guide/essentials/forms.html#trim" + }, + { + name: "ja", + url: "https://ja.vuejs.org/guide/essentials/forms.html#trim" + }, + { + name: "ua", + url: "https://ua.vuejs.org/guide/essentials/forms.html#trim" + }, + { + name: "fr", + url: "https://fr.vuejs.org/guide/essentials/forms.html#trim" + }, + { + name: "ko", + url: "https://ko.vuejs.org/guide/essentials/forms.html#trim" + }, + { + name: "pt", + url: "https://pt.vuejs.org/guide/essentials/forms.html#trim" + }, + { + name: "bn", + url: "https://bn.vuejs.org/guide/essentials/forms.html#trim" + }, + { + name: "it", + url: "https://it.vuejs.org/guide/essentials/forms.html#trim" + } + ] + } +]; +var require$$20 = { + version: version, + globalAttributes: globalAttributes +}; + +Object.defineProperty(data, "__esModule", { value: true }); +data.loadModelModifiersData = data.loadLanguageBlocks = data.loadTemplateData = void 0; +function loadTemplateData(lang) { + lang = lang.toLowerCase(); + let data; + if (lang === 'ja') { + data = require$$6; + } + else if (lang === 'fr') { + data = require$$5; + } + else if (lang === 'ko') { + data = require$$4; + } + else if (lang === 'pt-br') { + data = require$$3; + } + else if (lang === 'zh-cn') { + data = require$$2; + } + else if (lang === 'it') { + data = require$$1; + } + else { + data = require$$0; + } + for (const attr of [...data.globalAttributes ?? []]) { + if (!attr.name.startsWith('v-')) { + data.globalAttributes?.push({ ...attr, name: `:${attr.name}` }); + } + } + const vOn = data.globalAttributes?.find(d => d.name === 'v-on'); + const vSlot = data.globalAttributes?.find(d => d.name === 'v-slot'); + const vBind = data.globalAttributes?.find(d => d.name === 'v-bind'); + if (vOn) + data.globalAttributes?.push({ ...vOn, name: '@' }); + if (vSlot) + data.globalAttributes?.push({ ...vSlot, name: '#' }); + if (vBind) + data.globalAttributes?.push({ ...vBind, name: ':' }); + return data; +} +data.loadTemplateData = loadTemplateData; +function loadLanguageBlocks(lang) { + lang = lang.toLowerCase(); + if (lang === 'ja') { + return require$$12; + } + else if (lang === 'fr') { + return require$$11; + } + else if (lang === 'ko') { + return require$$10; + } + else if (lang === 'pt-br') { + return require$$9; + } + else if (lang === 'zh-cn') { + return require$$8; + } + else if (lang === 'it') { + return require$$7; + } + return require$$13; +} +data.loadLanguageBlocks = loadLanguageBlocks; +function loadModelModifiersData(lang) { + lang = lang.toLowerCase(); + if (lang === 'ja') { + return require$$19; + } + else if (lang === 'fr') { + return require$$18; + } + else if (lang === 'ko') { + return require$$17; + } + else if (lang === 'pt-br') { + return require$$16; + } + else if (lang === 'zh-cn') { + return require$$15; + } + else if (lang === 'it') { + return require$$14; + } + return require$$20; +} +data.loadModelModifiersData = loadModelModifiersData; + +Object.defineProperty(vue$2, "__esModule", { value: true }); +vue$2.create = void 0; +const html$1 = require$$2$1; +const volar_service_html_1 = out$5; +const vue$1 = out$8; +const data_1$1 = data; +let sfcDataProvider; +const create$9 = () => (context, modules) => { + const htmlPlugin = (0, volar_service_html_1.default)({ languageId: 'vue', useCustomDataProviders: false })(context, modules); + if (!context) + return htmlPlugin; + sfcDataProvider ??= html$1.newHTMLDataProvider('vue', (0, data_1$1.loadLanguageBlocks)(context.env.locale ?? 'en')); + htmlPlugin.provide['html/languageService']().setDataProviders(false, [sfcDataProvider]); + return { + ...htmlPlugin, + provide: { + 'vue/vueFile': document => { + return worker(document, (vueFile) => { + return vueFile; + }); + }, + }, + provideSemanticDiagnostics(document) { + return worker(document, (vueSourceFile) => { + const result = []; + const sfc = vueSourceFile.sfc; + const program = context.inject('typescript/languageService').getProgram(); + if (program && !program.getSourceFile(vueSourceFile.mainScriptName)) { + for (const script of [sfc.script, sfc.scriptSetup]) { + if (!script || script.content === '') + continue; + const error = { + range: { + start: document.positionAt(script.start), + end: document.positionAt(script.startTagEnd), + }, + message: `Virtual script ${JSON.stringify(vueSourceFile.mainScriptName)} not found, may missing <script lang="ts"> / "allowJs": true / jsconfig.json.`, + severity: 3, + source: 'vue', + }; + result.push(error); + } + } + return result; + }); + }, + provideDocumentLinks: undefined, + provideDocumentSymbols(document) { + return worker(document, (vueSourceFile) => { + const result = []; + const descriptor = vueSourceFile.sfc; + if (descriptor.template) { + result.push({ + name: 'template', + kind: 2, + range: { + start: document.positionAt(descriptor.template.start), + end: document.positionAt(descriptor.template.end), + }, + selectionRange: { + start: document.positionAt(descriptor.template.start), + end: document.positionAt(descriptor.template.startTagEnd), + }, + }); + } + if (descriptor.script) { + result.push({ + name: 'script', + kind: 2, + range: { + start: document.positionAt(descriptor.script.start), + end: document.positionAt(descriptor.script.end), + }, + selectionRange: { + start: document.positionAt(descriptor.script.start), + end: document.positionAt(descriptor.script.startTagEnd), + }, + }); + } + if (descriptor.scriptSetup) { + result.push({ + name: 'script setup', + kind: 2, + range: { + start: document.positionAt(descriptor.scriptSetup.start), + end: document.positionAt(descriptor.scriptSetup.end), + }, + selectionRange: { + start: document.positionAt(descriptor.scriptSetup.start), + end: document.positionAt(descriptor.scriptSetup.startTagEnd), + }, + }); + } + for (const style of descriptor.styles) { + let name = 'style'; + if (style.scoped) + name += ' scoped'; + if (style.module) + name += ' module'; + result.push({ + name, + kind: 2, + range: { + start: document.positionAt(style.start), + end: document.positionAt(style.end), + }, + selectionRange: { + start: document.positionAt(style.start), + end: document.positionAt(style.startTagEnd), + }, + }); + } + for (const customBlock of descriptor.customBlocks) { + result.push({ + name: `${customBlock.type}`, + kind: 2, + range: { + start: document.positionAt(customBlock.start), + end: document.positionAt(customBlock.end), + }, + selectionRange: { + start: document.positionAt(customBlock.start), + end: document.positionAt(customBlock.startTagEnd), + }, + }); + } + return result; + }); + }, + provideDocumentFormattingEdits(document) { + return worker(document, (vueSourceFile) => { + const blocks = [ + vueSourceFile.sfc.script, + vueSourceFile.sfc.scriptSetup, + vueSourceFile.sfc.template, + ...vueSourceFile.sfc.styles, + ...vueSourceFile.sfc.customBlocks, + ].filter((block) => !!block) + .sort((a, b) => b.start - a.start); + const edits = []; + for (const block of blocks) { + const startPos = document.positionAt(block.start); + if (startPos.character !== 0) { + edits.push({ + range: { + start: { + line: startPos.line, + character: 0, + }, + end: startPos, + }, + newText: '', + }); + } + } + return edits; + }); + }, + }; + function worker(document, callback) { + const [vueFile] = context.documents.getVirtualFileByUri(document.uri); + if (vueFile instanceof vue$1.VueFile) { + return callback(vueFile); + } + } +}; +vue$2.create = create$9; + +var vueAutoinsertDotvalue = {}; + +Object.defineProperty(vueAutoinsertDotvalue, "__esModule", { value: true }); +vueAutoinsertDotvalue.isBlacklistNode = vueAutoinsertDotvalue.isCharacterTyping = vueAutoinsertDotvalue.create = void 0; +const language_core_1$4 = out$8; +const plugin$5 = (context, modules) => { + if (!modules?.typescript) + return {}; + const ts = modules.typescript; + return { + async provideAutoInsertionEdit(document, position, insertContext) { + if (!isTsDocument(document)) + return; + if (!isCharacterTyping(document, insertContext)) + return; + const enabled = await context.env.getConfiguration?.('vue.autoInsert.dotValue') ?? true; + if (!enabled) + return; + const program = context.inject('typescript/languageService').getProgram(); + if (!program) + return; + const sourceFile = program.getSourceFile(context.env.uriToFileName(document.uri)); + if (!sourceFile) + return; + if (isBlacklistNode(ts, sourceFile, document.offsetAt(position), false)) + return; + const node = findPositionIdentifier(sourceFile, sourceFile, document.offsetAt(position)); + if (!node) + return; + const token = context.inject('typescript/languageServiceHost').getCancellationToken?.(); + if (token) { + context.inject('typescript/languageService').getQuickInfoAtPosition(context.env.uriToFileName(document.uri), node.end); + if (token?.isCancellationRequested()) { + return; // check cancel here because type checker do not use cancel token + } + } + const checker = program.getTypeChecker(); + const type = checker.getTypeAtLocation(node); + const props = type.getProperties(); + if (props.some(prop => prop.name === 'value')) { + return '${1:.value}'; + } + function findPositionIdentifier(sourceFile, node, offset) { + let result; + node.forEachChild(child => { + if (!result) { + if (child.end === offset && ts.isIdentifier(child)) { + result = child; + } + else if (child.end >= offset && child.getStart(sourceFile) < offset) { + result = findPositionIdentifier(sourceFile, child, offset); + } + } + }); + return result; + } + }, + }; +}; +const create$8 = () => plugin$5; +vueAutoinsertDotvalue.create = create$8; +function isTsDocument(document) { + return document.languageId === 'javascript' || + document.languageId === 'typescript' || + document.languageId === 'javascriptreact' || + document.languageId === 'typescriptreact'; +} +const charReg = /\w/; +function isCharacterTyping(document, options) { + const lastCharacter = options.lastChange.text[options.lastChange.text.length - 1]; + const rangeStart = options.lastChange.range.start; + const position = { + line: rangeStart.line, + character: rangeStart.character + options.lastChange.text.length, + }; + const nextCharacter = document.getText({ + start: position, + end: { line: position.line, character: position.character + 1 }, + }); + if (lastCharacter === undefined) { // delete text + return false; + } + if (options.lastChange.text.indexOf('\n') >= 0) { // multi-line change + return false; + } + return charReg.test(lastCharacter) && !charReg.test(nextCharacter); +} +vueAutoinsertDotvalue.isCharacterTyping = isCharacterTyping; +function isBlacklistNode(ts, node, pos, allowAccessDotValue) { + if (ts.isVariableDeclaration(node) && pos >= node.name.getFullStart() && pos <= node.name.getEnd()) { + return true; + } + else if (ts.isFunctionDeclaration(node) && node.name && pos >= node.name.getFullStart() && pos <= node.name.getEnd()) { + return true; + } + else if (ts.isParameter(node) && pos >= node.name.getFullStart() && pos <= node.name.getEnd()) { + return true; + } + else if (ts.isPropertyAssignment(node) && pos >= node.name.getFullStart() && pos <= node.name.getEnd()) { + return true; + } + else if (ts.isShorthandPropertyAssignment(node)) { + return true; + } + else if (ts.isImportDeclaration(node)) { + return true; + } + else if (ts.isLiteralTypeNode(node)) { + return true; + } + else if (ts.isTypeReferenceNode(node)) { + return true; + } + else if (!allowAccessDotValue && ts.isPropertyAccessExpression(node) && node.expression.end === pos && node.name.text === 'value') { + return true; + } + else if (ts.isCallExpression(node) + && ts.isIdentifier(node.expression) + && isWatchOrUseFunction(node.expression.text) + && isTopLevelArgOrArrayTopLevelItemItem(node)) { + return true; + } + else { + let _isBlacklistNode = false; + node.forEachChild(node => { + if (_isBlacklistNode) + return; + if (pos >= node.getFullStart() && pos <= node.getEnd()) { + if (isBlacklistNode(ts, node, pos, allowAccessDotValue)) { + _isBlacklistNode = true; + } + } + }); + return _isBlacklistNode; + } + function isWatchOrUseFunction(fnName) { + return fnName === 'watch' + || fnName === 'unref' + || fnName === 'triggerRef' + || fnName === 'isRef' + || (0, language_core_1$4.hyphenateAttr)(fnName).startsWith('use-'); + } + function isTopLevelArgOrArrayTopLevelItemItem(node) { + for (const arg of node.arguments) { + if (pos >= arg.getFullStart() && pos <= arg.getEnd()) { + if (ts.isIdentifier(arg)) { + return true; + } + if (ts.isArrayLiteralExpression(arg)) { + for (const el of arg.elements) { + if (pos >= el.getFullStart() && pos <= el.getEnd()) { + return ts.isIdentifier(el); + } + } + } + return false; + } + } + } +} +vueAutoinsertDotvalue.isBlacklistNode = isBlacklistNode; + +var vueAutoinsertParentheses = {}; + +Object.defineProperty(vueAutoinsertParentheses, "__esModule", { value: true }); +vueAutoinsertParentheses.create = void 0; +const vue_autoinsert_dotvalue_1 = vueAutoinsertDotvalue; +const plugin$4 = (context, modules) => { + if (!context) { + return {}; + } + if (!modules?.typescript) { + return {}; + } + const ts = modules.typescript; + return { + async provideAutoInsertionEdit(document, position, options_2) { + const enabled = await context.env.getConfiguration?.('vue.autoInsert.parentheses') ?? false; + if (!enabled) + return; + if (!(0, vue_autoinsert_dotvalue_1.isCharacterTyping)(document, options_2)) + return; + const [virtualFile] = context.documents.getVirtualFileByUri(document.uri); + if (!virtualFile?.fileName.endsWith('.template_format.ts')) + return; + const offset = document.offsetAt(position); + for (const mappedRange of virtualFile.mappings) { + if (mappedRange.generatedRange[1] === offset) { + const text = document.getText().substring(mappedRange.generatedRange[0], mappedRange.generatedRange[1]); + const ast = ts.createSourceFile(virtualFile.fileName, text, ts.ScriptTarget.Latest); + if (ast.statements.length === 1) { + const statement = ast.statements[0]; + if (ts.isExpressionStatement(statement) + && ((ts.isAsExpression(statement.expression) + && ts.isTypeReferenceNode(statement.expression.type) + && ts.isIdentifier(statement.expression.type.typeName) + && statement.expression.type.typeName.text) + || (ts.isBinaryExpression(statement.expression) + && statement.expression.right.getText(ast) + && statement.expression.operatorToken.kind === ts.SyntaxKind.InstanceOfKeyword) + || (ts.isTypeOfExpression(statement.expression) + && statement.expression.expression.getText(ast)))) { + // https://code.visualstudio.com/docs/editor/userdefinedsnippets#_grammar + const escapedText = text + .replaceAll('\\', '\\\\') + .replaceAll('$', '\\$') + .replaceAll('}', '\\}'); + return { + range: { + start: document.positionAt(mappedRange.generatedRange[0]), + end: document.positionAt(mappedRange.generatedRange[1]), + }, + newText: '(' + escapedText + '$0' + ')', + }; + } + } + } + } + }, + }; +}; +const create$7 = () => plugin$4; +vueAutoinsertParentheses.create = create$7; + +var vueAutoinsertSpace = {}; + +Object.defineProperty(vueAutoinsertSpace, "__esModule", { value: true }); +vueAutoinsertSpace.create = void 0; +const plugin$3 = (context) => { + if (!context) + return {}; + return { + async provideAutoInsertionEdit(document, _, { lastChange }) { + if (document.languageId === 'html' || document.languageId === 'jade') { + const enabled = await context.env.getConfiguration?.('vue.autoInsert.bracketSpacing') ?? true; + if (!enabled) + return; + if (lastChange.text === '{}' + && document.getText({ + start: { line: lastChange.range.start.line, character: lastChange.range.start.character - 1 }, + end: { line: lastChange.range.start.line, character: lastChange.range.start.character + 3 } + }) === '{{}}') { + return { + newText: ` $0 `, + range: { + start: { line: lastChange.range.start.line, character: lastChange.range.start.character + 1 }, + end: { line: lastChange.range.start.line, character: lastChange.range.start.character + 1 } + }, + }; + } + } + }, + }; +}; +const create$6 = () => plugin$3; +vueAutoinsertSpace.create = create$6; + +var vueCodelensReferences = {}; + +Object.defineProperty(vueCodelensReferences, "__esModule", { value: true }); +vueCodelensReferences.create = void 0; +const language_core_1$3 = out$8; +const create$5 = function () { + return (context) => { + if (!context) + return {}; + return { + provideReferencesCodeLensRanges(document) { + return worker(document.uri, async () => { + const result = []; + for (const [_, map] of context.documents.getMapsBySourceFileUri(document.uri)?.maps ?? []) { + for (const mapping of map.map.mappings) { + if (!mapping.data.referencesCodeLens) + continue; + result.push({ + start: document.positionAt(mapping.sourceRange[0]), + end: document.positionAt(mapping.sourceRange[1]), + }); + } + } + return result; + }); + }, + async resolveReferencesCodeLensLocations(document, range, references) { + await worker(document.uri, async (vueFile) => { + const document = context.documents.getDocumentByFileName(vueFile.snapshot, vueFile.fileName); + const offset = document.offsetAt(range.start); + const blocks = [ + vueFile.sfc.script, + vueFile.sfc.scriptSetup, + vueFile.sfc.template, + ...vueFile.sfc.styles, + ...vueFile.sfc.customBlocks, + ]; + const sourceBlock = blocks.find(block => block && offset >= block.startTagEnd && offset <= block.endTagStart); + references = references.filter(reference => reference.uri !== document.uri // different file + || sourceBlock !== blocks.find(block => block && document.offsetAt(reference.range.start) >= block.startTagEnd && document.offsetAt(reference.range.end) <= block.endTagStart) // different block + ); + }); + return references; + }, + }; + function worker(uri, callback) { + const [virtualFile] = context.documents.getVirtualFileByUri(uri); + if (!(virtualFile instanceof language_core_1$3.VueFile)) + return; + return callback(virtualFile); + } + }; +}; +vueCodelensReferences.create = create$5; + +var vueDirectiveComments = {}; + +Object.defineProperty(vueDirectiveComments, "__esModule", { value: true }); +vueDirectiveComments.create = void 0; +const cmds = [ + 'vue-ignore', + 'vue-skip', + 'vue-expect-error', +]; +const directiveCommentReg = /<!--\s*@/; +const plugin$2 = () => { + return { + triggerCharacters: ['@'], + provideCompletionItems(document, position) { + if (document.languageId !== 'html') + return; + const line = document.getText({ start: { line: position.line, character: 0 }, end: position }); + const cmdStart = line.match(directiveCommentReg); + if (!cmdStart) + return; + const startIndex = cmdStart.index + cmdStart[0].length; + const remainText = line.substring(startIndex); + const result = []; + for (const cmd of cmds) { + let match = true; + for (let i = 0; i < remainText.length; i++) { + if (remainText[i] !== cmd[i]) { + console.log(JSON.stringify(remainText[i]), JSON.stringify(cmd[i])); + match = false; + break; + } + } + if (match) { + result.push({ + label: '@' + cmd, + textEdit: { + range: { + start: { + line: position.line, + character: startIndex - 1, + }, + end: position, + }, + newText: '@' + cmd, + }, + }); + } + } + return { + isIncomplete: false, + items: result, + }; + }, + }; +}; +const create$4 = () => plugin$2; +vueDirectiveComments.create = create$4; + +var vueTemplate = {}; + +Object.defineProperty(vueTemplate, "__esModule", { value: true }); +vueTemplate.create = void 0; +const language_core_1$2 = out$8; +const shared_1$1 = require$$1$1; +const html = require$$2$1; +const helpers_1 = helpers; +const nameCasing_1$1 = nameCasing; +const types_1$1 = types; +const data_1 = data; +let builtInData; +let modelData; +const create$3 = (options) => (_context, modules) => { + const htmlOrPugService = options.baseService(_context, modules); + const triggerCharacters = [ + ...htmlOrPugService.triggerCharacters ?? [], + '@', // vue event shorthand + ]; + if (!_context || !modules?.typescript) + return { triggerCharacters }; + builtInData ??= (0, data_1.loadTemplateData)(_context.env.locale ?? 'en'); + modelData ??= (0, data_1.loadModelModifiersData)(_context.env.locale ?? 'en'); + // https://vuejs.org/api/built-in-directives.html#v-on + // https://vuejs.org/api/built-in-directives.html#v-bind + const eventModifiers = {}; + const propModifiers = {}; + const vOn = builtInData.globalAttributes?.find(x => x.name === 'v-on'); + const vBind = builtInData.globalAttributes?.find(x => x.name === 'v-bind'); + if (vOn) { + const markdown = (typeof vOn.description === 'string' ? vOn.description : vOn.description?.value) ?? ''; + const modifiers = markdown + .split('\n- ')[4] + .split('\n').slice(2, -1); + for (let text of modifiers) { + text = text.substring(' - `.'.length); + const [name, disc] = text.split('` - '); + eventModifiers[name] = disc; + } + } + if (vBind) { + const markdown = (typeof vBind.description === 'string' ? vBind.description : vBind.description?.value) ?? ''; + const modifiers = markdown + .split('\n- ')[4] + .split('\n').slice(2, -1); + for (let text of modifiers) { + text = text.substring(' - `.'.length); + const [name, disc] = text.split('` - '); + propModifiers[name] = disc; + } + } + const ts = modules.typescript; + return { + ...htmlOrPugService, + triggerCharacters, + async provideCompletionItems(document, position, context, token) { + if (!options.isSupportedDocument(document)) + return; + for (const [_, map] of _context.documents.getMapsByVirtualFileUri(document.uri)) { + const virtualFile = _context.documents.getSourceByUri(map.sourceFileDocument.uri)?.root; + if (virtualFile && virtualFile instanceof language_core_1$2.VueFile) { + await provideHtmlData(map, virtualFile); + } + } + const htmlComplete = await htmlOrPugService.provideCompletionItems?.(document, position, context, token); + if (!htmlComplete) + return; + for (const [_, map] of _context.documents.getMapsByVirtualFileUri(document.uri)) { + const virtualFile = _context.documents.getSourceByUri(map.sourceFileDocument.uri)?.root; + if (virtualFile && virtualFile instanceof language_core_1$2.VueFile) { + afterHtmlCompletion(htmlComplete, map, virtualFile); + } + } + return htmlComplete; + }, + async provideInlayHints(document) { + if (!options.isSupportedDocument(document)) + return; + const enabled = await _context.env.getConfiguration?.('vue.inlayHints.missingProps') ?? false; + if (!enabled) + return; + const languageService = _context.inject('typescript/languageService'); + const result = []; + for (const [_, map] of _context.documents.getMapsByVirtualFileUri(document.uri)) { + const virtualFile = _context.documents.getSourceByUri(map.sourceFileDocument.uri)?.root; + const scanner = options.getScanner(htmlOrPugService, document); + if (virtualFile && virtualFile instanceof language_core_1$2.VueFile && scanner) { + // visualize missing required props + const casing = await (0, nameCasing_1$1.getNameCasing)(ts, _context, map.sourceFileDocument.uri, options.vueCompilerOptions); + const components = (0, helpers_1.getComponentNames)(ts, languageService, virtualFile, options.vueCompilerOptions); + const componentProps = {}; + let token; + let current; + while ((token = scanner.scan()) !== html.TokenType.EOS) { + if (token === html.TokenType.StartTag) { + const tagName = scanner.getTokenText(); + const component = tagName.indexOf('.') >= 0 + ? components.find(component => component === tagName.split('.')[0]) + : components.find(component => component === tagName || (0, language_core_1$2.hyphenateTag)(component) === tagName); + const checkTag = tagName.indexOf('.') >= 0 ? tagName : component; + if (checkTag) { + componentProps[checkTag] ??= (0, helpers_1.getPropsByTag)(ts, languageService, virtualFile, checkTag, options.vueCompilerOptions, true); + current = { + unburnedRequiredProps: [...componentProps[checkTag]], + labelOffset: scanner.getTokenOffset() + scanner.getTokenLength(), + insertOffset: scanner.getTokenOffset() + scanner.getTokenLength(), + }; + } + } + else if (token === html.TokenType.AttributeName) { + if (current) { + let attrText = scanner.getTokenText(); + if (attrText === 'v-bind') { + current.unburnedRequiredProps = []; + } + else { + // remove modifiers + if (attrText.indexOf('.') >= 0) { + attrText = attrText.split('.')[0]; + } + // normalize + if (attrText.startsWith('v-bind:')) { + attrText = attrText.substring('v-bind:'.length); + } + else if (attrText.startsWith(':')) { + attrText = attrText.substring(':'.length); + } + else if (attrText.startsWith('v-model:')) { + attrText = attrText.substring('v-model:'.length); + } + else if (attrText === 'v-model') { + attrText = options.vueCompilerOptions.target >= 3 ? 'modelValue' : 'value'; // TODO: support for experimentalModelPropName? + } + else if (attrText.startsWith('@')) { + attrText = 'on-' + (0, language_core_1$2.hyphenateAttr)(attrText.substring('@'.length)); + } + current.unburnedRequiredProps = current.unburnedRequiredProps.filter(propName => { + return attrText !== propName + && attrText !== (0, language_core_1$2.hyphenateAttr)(propName); + }); + } + } + } + else if (token === html.TokenType.StartTagSelfClose || token === html.TokenType.StartTagClose) { + if (current) { + for (const requiredProp of current.unburnedRequiredProps) { + result.push({ + label: `${requiredProp}!`, + paddingLeft: true, + position: document.positionAt(current.labelOffset), + kind: 2, + textEdits: [{ + range: { + start: document.positionAt(current.insertOffset), + end: document.positionAt(current.insertOffset), + }, + newText: ` :${casing.attr === types_1$1.AttrNameCasing.Kebab ? (0, language_core_1$2.hyphenateAttr)(requiredProp) : requiredProp}=`, + }], + }); + } + current = undefined; + } + } + if (token === html.TokenType.AttributeName || token === html.TokenType.AttributeValue) { + if (current) { + current.insertOffset = scanner.getTokenOffset() + scanner.getTokenLength(); + } + } + } + } + } + return result; + }, + provideHover(document, position, token) { + if (!options.isSupportedDocument(document)) + return; + if (_context.documents.isVirtualFileUri(document.uri)) + options.updateCustomData(htmlOrPugService, []); + return htmlOrPugService.provideHover?.(document, position, token); + }, + async provideDiagnostics(document, token) { + if (!options.isSupportedDocument(document)) + return; + const originalResult = await htmlOrPugService.provideDiagnostics?.(document, token); + for (const [_, map] of _context.documents.getMapsByVirtualFileUri(document.uri)) { + const virtualFile = _context.documents.getSourceByUri(map.sourceFileDocument.uri)?.root; + if (!virtualFile || !(virtualFile instanceof language_core_1$2.VueFile)) + continue; + const templateErrors = []; + const { template } = virtualFile.sfc; + if (template) { + for (const error of template.errors) { + onCompilerError(error, 1); + } + for (const warning of template.warnings) { + onCompilerError(warning, 2); + } + function onCompilerError(error, severity) { + const templateHtmlRange = { + start: error.loc?.start.offset ?? 0, + end: error.loc?.end.offset ?? 0, + }; + let errorMessage = error.message; + templateErrors.push({ + range: { + start: document.positionAt(templateHtmlRange.start), + end: document.positionAt(templateHtmlRange.end), + }, + severity, + code: error.code, + source: 'vue', + message: errorMessage, + }); + } + } + return [ + ...originalResult ?? [], + ...templateErrors, + ]; + } + }, + async provideDocumentSemanticTokens(document, range, legend, token) { + if (!options.isSupportedDocument(document)) + return; + const result = await htmlOrPugService.provideDocumentSemanticTokens?.(document, range, legend, token) ?? []; + const scanner = options.getScanner(htmlOrPugService, document); + if (!scanner) + return; + const languageService = _context.inject('typescript/languageService'); + for (const [_, map] of _context.documents.getMapsByVirtualFileUri(document.uri)) { + const virtualFile = _context.documents.getSourceByUri(map.sourceFileDocument.uri)?.root; + if (!virtualFile || !(virtualFile instanceof language_core_1$2.VueFile)) + continue; + const templateScriptData = (0, helpers_1.getComponentNames)(ts, languageService, virtualFile, options.vueCompilerOptions); + const components = new Set([ + ...templateScriptData, + ...templateScriptData.map(language_core_1$2.hyphenateTag), + ]); + const offsetRange = { + start: document.offsetAt(range.start), + end: document.offsetAt(range.end), + }; + let token = scanner.scan(); + while (token !== html.TokenType.EOS) { + const tokenOffset = scanner.getTokenOffset(); + // TODO: fix source map perf and break in while condition + if (tokenOffset > offsetRange.end) + break; + if (tokenOffset >= offsetRange.start && (token === html.TokenType.StartTag || token === html.TokenType.EndTag)) { + const tokenText = scanner.getTokenText(); + if (components.has(tokenText) || tokenText.indexOf('.') >= 0) { + const tokenLength = scanner.getTokenLength(); + const tokenPosition = document.positionAt(tokenOffset); + if (components.has(tokenText)) { + let tokenType = legend.tokenTypes.indexOf('component'); + if (tokenType === -1) { + tokenType = legend.tokenTypes.indexOf('class'); + } + result.push([tokenPosition.line, tokenPosition.character, tokenLength, tokenType, 0]); + } + } + } + token = scanner.scan(); + } + } + return result; + }, + }; + async function provideHtmlData(map, vueSourceFile) { + const languageService = _context.inject('typescript/languageService'); + const languageServiceHost = _context.inject('typescript/languageServiceHost'); + const casing = await (0, nameCasing_1$1.getNameCasing)(ts, _context, map.sourceFileDocument.uri, options.vueCompilerOptions); + if (builtInData.tags) { + for (const tag of builtInData.tags) { + if (tag.name === 'slot') + continue; + if (tag.name === 'component') + continue; + if (tag.name === 'template') + continue; + if (casing.tag === types_1$1.TagNameCasing.Kebab) { + tag.name = (0, language_core_1$2.hyphenateTag)(tag.name); + } + else { + tag.name = (0, shared_1$1.camelize)((0, shared_1$1.capitalize)(tag.name)); + } + } + } + options.updateCustomData(htmlOrPugService, [ + html.newHTMLDataProvider('vue-template-built-in', builtInData), + { + getId: () => 'vue-template', + isApplicable: () => true, + provideTags: () => { + const components = (0, helpers_1.getComponentNames)(ts, languageService, vueSourceFile, options.vueCompilerOptions) + .filter(name => name !== 'Transition' + && name !== 'TransitionGroup' + && name !== 'KeepAlive' + && name !== 'Suspense' + && name !== 'Teleport'); + const scriptSetupRanges = vueSourceFile.sfc.scriptSetup ? (0, language_core_1$2.parseScriptSetupRanges)(ts, vueSourceFile.sfc.scriptSetup.ast, options.vueCompilerOptions) : undefined; + const names = new Set(); + const tags = []; + for (const tag of components) { + if (casing.tag === types_1$1.TagNameCasing.Kebab) { + names.add((0, language_core_1$2.hyphenateTag)(tag)); + } + else if (casing.tag === types_1$1.TagNameCasing.Pascal) { + names.add(tag); + } + } + for (const binding of scriptSetupRanges?.bindings ?? []) { + const name = vueSourceFile.sfc.scriptSetup.content.substring(binding.start, binding.end); + if (casing.tag === types_1$1.TagNameCasing.Kebab) { + names.add((0, language_core_1$2.hyphenateTag)(name)); + } + else if (casing.tag === types_1$1.TagNameCasing.Pascal) { + names.add(name); + } + } + for (const name of names) { + tags.push({ + name: name, + attributes: [], + }); + } + return tags; + }, + provideAttributes: (tag) => { + const attrs = (0, helpers_1.getElementAttrs)(ts, languageService, languageServiceHost, tag); + const props = new Set((0, helpers_1.getPropsByTag)(ts, languageService, vueSourceFile, tag, options.vueCompilerOptions)); + const events = (0, helpers_1.getEventsOfTag)(ts, languageService, vueSourceFile, tag, options.vueCompilerOptions); + const attributes = []; + const _tsCodegen = language_core_1$2.tsCodegen.get(vueSourceFile.sfc); + if (_tsCodegen) { + let ctxVars = [ + ..._tsCodegen.scriptRanges()?.bindings.map(binding => vueSourceFile.sfc.script.content.substring(binding.start, binding.end)) ?? [], + ..._tsCodegen.scriptSetupRanges()?.bindings.map(binding => vueSourceFile.sfc.scriptSetup.content.substring(binding.start, binding.end)) ?? [], + ...(0, helpers_1.getTemplateCtx)(ts, languageService, vueSourceFile) ?? [], + ]; + ctxVars = [...new Set(ctxVars)]; + const dirs = ctxVars.map(language_core_1$2.hyphenateAttr).filter(v => v.startsWith('v-')); + for (const dir of dirs) { + attributes.push({ + name: dir, + }); + } + } + for (const prop of [...props, ...attrs]) { + const isGlobal = !props.has(prop); + const name = casing.attr === types_1$1.AttrNameCasing.Camel ? prop : (0, language_core_1$2.hyphenateAttr)(prop); + if ((0, language_core_1$2.hyphenateAttr)(name).startsWith('on-')) { + const propNameBase = name.startsWith('on-') + ? name.slice('on-'.length) + : (name['on'.length].toLowerCase() + name.slice('onX'.length)); + const propKey = createInternalItemId('componentEvent', [isGlobal ? '*' : tag, propNameBase]); + attributes.push({ + name: 'v-on:' + propNameBase, + description: propKey, + }, { + name: '@' + propNameBase, + description: propKey, + }); + } + { + const propName = name; + const propKey = createInternalItemId('componentProp', [isGlobal ? '*' : tag, propName]); + attributes.push({ + name: propName, + description: propKey, + }, { + name: ':' + propName, + description: propKey, + }, { + name: 'v-bind:' + propName, + description: propKey, + }); + } + } + for (const event of events) { + const name = casing.attr === types_1$1.AttrNameCasing.Camel ? event : (0, language_core_1$2.hyphenateAttr)(event); + const propKey = createInternalItemId('componentEvent', [tag, name]); + attributes.push({ + name: 'v-on:' + name, + description: propKey, + }); + attributes.push({ + name: '@' + name, + description: propKey, + }); + } + const models = []; + for (const prop of [...props, ...attrs]) { + if (prop.startsWith('onUpdate:')) { + const isGlobal = !props.has(prop); + models.push([isGlobal, prop.substring('onUpdate:'.length)]); + } + } + for (const event of events) { + if (event.startsWith('update:')) { + models.push([false, event.substring('update:'.length)]); + } + } + for (const [isGlobal, model] of models) { + const name = casing.attr === types_1$1.AttrNameCasing.Camel ? model : (0, language_core_1$2.hyphenateAttr)(model); + const propKey = createInternalItemId('componentProp', [isGlobal ? '*' : tag, name]); + attributes.push({ + name: 'v-model:' + name, + description: propKey, + }); + if (model === 'modelValue') { + attributes.push({ + name: 'v-model', + description: propKey, + }); + } + } + return attributes; + }, + provideValues: () => [], + }, + ]); + } + function afterHtmlCompletion(completionList, map, vueSourceFile) { + const languageService = _context.inject('typescript/languageService'); + const replacement = getReplacement(completionList, map.sourceFileDocument); + const componentNames = new Set((0, helpers_1.getComponentNames)(ts, languageService, vueSourceFile, options.vueCompilerOptions).map(language_core_1$2.hyphenateTag)); + if (replacement) { + const isEvent = replacement.text.startsWith('v-on:') || replacement.text.startsWith('@'); + const isProp = replacement.text.startsWith('v-bind:') || replacement.text.startsWith(':'); + const isModel = replacement.text.startsWith('v-model:') || replacement.text.split('.')[0] === 'v-model'; + const hasModifier = replacement.text.includes('.'); + const validModifiers = isEvent ? eventModifiers + : isProp ? propModifiers + : undefined; + const modifiers = replacement.text.split('.').slice(1); + const textWithoutModifier = replacement.text.split('.')[0]; + if (validModifiers && hasModifier) { + for (const modifier in validModifiers) { + if (modifiers.includes(modifier)) + continue; + const modifierDes = validModifiers[modifier]; + const insertText = textWithoutModifier + modifiers.slice(0, -1).map(m => '.' + m).join('') + '.' + modifier; + const newItem = { + label: modifier, + filterText: insertText, + documentation: { + kind: 'markdown', + value: modifierDes, + }, + textEdit: { + range: replacement.textEdit.range, + newText: insertText, + }, + kind: 20, + }; + completionList.items.push(newItem); + } + } + else if (hasModifier && isModel) { + for (const modifier of modelData.globalAttributes ?? []) { + if (modifiers.includes(modifier.name)) + continue; + const insertText = textWithoutModifier + modifiers.slice(0, -1).map(m => '.' + m).join('') + '.' + modifier.name; + const newItem = { + label: modifier.name, + filterText: insertText, + documentation: { + kind: 'markdown', + value: (typeof modifier.description === 'object' ? modifier.description.value : modifier.description) + + '\n\n' + modifier.references?.map(ref => `[${ref.name}](${ref.url})`).join(' | '), + }, + textEdit: { + range: replacement.textEdit.range, + newText: insertText, + }, + kind: 20, + }; + completionList.items.push(newItem); + } + } + } + for (const item of completionList.items) { + const itemIdKey = typeof item.documentation === 'string' ? item.documentation : item.documentation?.value; + const itemId = itemIdKey ? readInternalItemId(itemIdKey) : undefined; + if (itemId) { + item.documentation = undefined; + } + if (item.kind === 10 && componentNames.has((0, language_core_1$2.hyphenateTag)(item.label))) { + item.kind = 6; + item.sortText = '\u0000' + (item.sortText ?? item.label); + } + else if (itemId && (itemId.type === 'componentProp' || itemId.type === 'componentEvent')) { + const [componentName] = itemId.args; + if (componentName !== '*') { + item.sortText = '\u0000' + (item.sortText ?? item.label); + } + if (itemId.type === 'componentProp') { + if (componentName !== '*') { + item.kind = 5; + } + } + else { + item.kind = componentName !== '*' ? 3 : 23; + } + } + else if (item.label === 'v-if' + || item.label === 'v-else-if' + || item.label === 'v-else' + || item.label === 'v-for') { + item.kind = 14; + item.sortText = '\u0003' + (item.sortText ?? item.label); + } + else if (item.label.startsWith('v-')) { + item.kind = 3; + item.sortText = '\u0002' + (item.sortText ?? item.label); + } + else { + item.sortText = '\u0001' + (item.sortText ?? item.label); + } + } + options.updateCustomData(htmlOrPugService, []); + } +}; +vueTemplate.create = create$3; +function createInternalItemId(type, args) { + return '__VLS_::' + type + '::' + args.join(','); +} +function readInternalItemId(key) { + if (key.startsWith('__VLS_::')) { + const strs = key.split('::'); + return { + type: strs[1], + args: strs[2].split(','), + }; + } +} +function getReplacement(list, doc) { + for (const item of list.items) { + if (item.textEdit && 'range' in item.textEdit) { + return { + item: item, + textEdit: item.textEdit, + text: doc.getText(item.textEdit.range) + }; + } + } +} + +var vueToggleVBindCodeaction = {}; + +Object.defineProperty(vueToggleVBindCodeaction, "__esModule", { value: true }); +vueToggleVBindCodeaction.create = void 0; +const language_core_1$1 = out$8; +const create$2 = function () { + return (ctx, modules) => { + if (!modules?.typescript) + return {}; + const ts = modules.typescript; + return { + provideCodeActions(document, range, _context) { + const startOffset = document.offsetAt(range.start); + const endOffset = document.offsetAt(range.end); + const [vueFile] = ctx.documents.getVirtualFileByUri(document.uri); + if (!vueFile || !(vueFile instanceof language_core_1$1.VueFile)) { + return; + } + const { template } = vueFile.sfc; + if (!template?.ast) + return; + const templateStartOffset = template.startTagEnd; + const result = []; + (0, language_core_1$1.walkElementNodes)(template.ast, node => { + if (startOffset > templateStartOffset + node.loc.end.offset || endOffset < templateStartOffset + node.loc.start.offset) { + return; + } + for (const prop of node.props) { + if (startOffset - templateStartOffset >= prop.loc.start.offset + && endOffset - templateStartOffset <= prop.loc.end.offset) { + if (prop.type === 7 && prop.exp) { + const sourceFile = ts.createSourceFile('/a.ts', prop.exp.loc.source, ts.ScriptTarget.Latest, true); + const firstStatement = sourceFile.statements[0]; + if (sourceFile.statements.length === 1 && ts.isExpressionStatement(firstStatement) && ts.isStringLiteralLike(firstStatement.expression)) { + const stringNode = sourceFile.statements[0]; + const removeTextRanges = [ + [prop.loc.start.offset, prop.loc.start.offset + 1], + // Work correctly with trivias for cases like <input :type=" 'password' " /> + [prop.exp.loc.start.offset, prop.exp.loc.start.offset + stringNode.pos + stringNode.getLeadingTriviaWidth() + 1], + [prop.exp.loc.start.offset + stringNode.end - 1, prop.exp.loc.end.offset], + ]; + result.push({ + title: 'Remove v-bind from attribute', + kind: 'refactor.rewrite.removeVBind', + edit: { + changes: { + [document.uri]: removeTextRanges.map(range => ({ + newText: '', + range: { + start: document.positionAt(templateStartOffset + range[0]), + end: document.positionAt(templateStartOffset + range[1]), + } + })) + }, + }, + }); + } + } + if (prop.type === 6) { + const edits = []; + const addVBindPos = document.positionAt(templateStartOffset + prop.loc.start.offset); + edits.push({ + newText: ':', + range: { + start: addVBindPos, + end: addVBindPos, + }, + }); + let newPosition; + if (prop.value) { + const valueStart = document.positionAt(templateStartOffset + prop.value.loc.start.offset); + const valueEnd = document.positionAt(templateStartOffset + prop.value.loc.end.offset); + if (prop.value.loc.end.offset - prop.value.loc.start.offset !== prop.value.content.length) { + valueStart.character++; + valueEnd.character--; + } + edits.push({ + newText: "'", + range: { + start: valueStart, + end: valueStart, + }, + }); + edits.push({ + newText: "'", + range: { + start: valueEnd, + end: valueEnd, + }, + }); + } + else { + const addValuePos = document.positionAt(templateStartOffset + prop.loc.end.offset); + newPosition = { + line: addValuePos.line, + character: addValuePos.character + ':'.length + '="'.length, + }; + edits.push({ + newText: '=""', + range: { + start: addValuePos, + end: addValuePos + }, + }); + } + result.push({ + title: 'Add v-bind to attribute', + kind: 'refactor.rewrite.addVBind', + edit: { + changes: { [document.uri]: edits }, + }, + command: newPosition ? ctx?.commands.setSelection.create(newPosition) : undefined, + }); + } + } + } + }); + return result; + }, + transformCodeAction(item) { + return item; // ignore mapping + }, + }; + }; +}; +vueToggleVBindCodeaction.create = create$2; + +var vueTwoslashQueries = {}; + +Object.defineProperty(vueTwoslashQueries, "__esModule", { value: true }); +vueTwoslashQueries.create = void 0; +const language_service_1$1 = languageService$2; +const vue = out$8; +const twoslashReg = /<!--\s*\^\?\s*-->/g; +const plugin$1 = (context, modules) => { + if (!context || !modules?.typescript) + return {}; + const ts = modules.typescript; + return { + provideInlayHints(document, range) { + return worker(document.uri, (vueFile) => { + const hoverOffsets = []; + const inlayHints = []; + const languageService = context.inject('typescript/languageService'); + for (const pointer of document.getText(range).matchAll(twoslashReg)) { + const offset = pointer.index + pointer[0].indexOf('^?') + document.offsetAt(range.start); + const position = document.positionAt(offset); + hoverOffsets.push([position, document.offsetAt({ + line: position.line - 1, + character: position.character, + })]); + } + (0, language_service_1$1.forEachEmbeddedFile)(vueFile, (embedded) => { + if (embedded.kind === language_service_1$1.FileKind.TypeScriptHostFile) { + for (const [_, map] of context.documents.getMapsByVirtualFileName(embedded.fileName)) { + for (const [pointerPosition, hoverOffset] of hoverOffsets) { + for (const [tsOffset, mapping] of map.map.toGeneratedOffsets(hoverOffset)) { + if (mapping.data.hover) { + const quickInfo = languageService.getQuickInfoAtPosition(embedded.fileName, tsOffset); + if (quickInfo) { + inlayHints.push({ + position: { line: pointerPosition.line, character: pointerPosition.character + 2 }, + label: ts.displayPartsToString(quickInfo.displayParts), + paddingLeft: true, + paddingRight: false, + }); + } + break; + } + } + } + } + } + }); + return inlayHints; + }); + }, + }; + function worker(uri, callback) { + const [virtualFile] = context.documents.getVirtualFileByUri(uri); + if (!(virtualFile instanceof vue.VueFile)) + return; + return callback(virtualFile); + } +}; +const create$1 = () => plugin$1; +vueTwoslashQueries.create = create$1; + +var vueVisualizeHiddenCallbackParam = {}; + +Object.defineProperty(vueVisualizeHiddenCallbackParam, "__esModule", { value: true }); +vueVisualizeHiddenCallbackParam.create = void 0; +const plugin = (context) => { + if (!context) + return {}; + return { + async provideInlayHints(document, range) { + const settings = {}; + const result = []; + const [file] = context.documents.getVirtualFileByUri(document.uri); + if (file) { + const start = document.offsetAt(range.start); + const end = document.offsetAt(range.end); + for (const mapping of file.mappings) { + const hint = mapping.data.__hint; + if (mapping.generatedRange[0] >= start + && mapping.generatedRange[1] <= end + && hint) { + settings[hint.setting] ??= await context.env.getConfiguration?.(hint.setting) ?? false; + if (!settings[hint.setting]) + continue; + result.push({ + label: hint.label, + paddingRight: hint.paddingRight, + paddingLeft: hint.paddingLeft, + position: document.positionAt(mapping.generatedRange[0]), + kind: 2, + tooltip: { + kind: 'markdown', + value: hint.tooltip, + }, + }); + } + } + } + return result; + }, + }; +}; +const create = () => plugin; +vueVisualizeHiddenCallbackParam.create = create; + +Object.defineProperty(languageService$1, "__esModule", { value: true }); +languageService$1.resolveConfig = void 0; +const language_core_1 = out$8; +const shared_1 = require$$1$1; +const nameCasing_1 = nameCasing; +const types_1 = types; +// volar services +const CssService = out$6; +const EmmetService = empty$1; +const HtmlService = out$5; +const JsonService = out$4; +const PugService = empty; +const PugFormatService = out$3; +const TsService = out$2; +const TsTqService = out; +// our services +const VueService = vue$2; +const AutoDotValueService = vueAutoinsertDotvalue; +const AutoWrapParenthesesService = vueAutoinsertParentheses; +const AutoAddSpaceService = vueAutoinsertSpace; +const ReferencesCodeLensService = vueCodelensReferences; +const DirectiveCommentsService = vueDirectiveComments; +const ExtractComponentService = vueExtractFile; +const VueTemplateLanguageService = vueTemplate; +const ToggleVBindService = vueToggleVBindCodeaction; +const VueTqService = vueTwoslashQueries; +const VisualizeHiddenCallbackParamService = vueVisualizeHiddenCallbackParam; +function resolveConfig(ts, config, compilerOptions = {}, vueCompilerOptions = {}, codegenStack = false) { + const resolvedVueCompilerOptions = (0, language_core_1.resolveVueCompilerOptions)(vueCompilerOptions); + const vueLanguageModules = (0, language_core_1.createLanguages)(ts, compilerOptions, resolvedVueCompilerOptions, codegenStack); + config.languages = Object.assign({}, vueLanguageModules, config.languages); + config.services = resolvePlugins(config.services, resolvedVueCompilerOptions); + return config; +} +languageService$1.resolveConfig = resolveConfig; +function resolvePlugins(services, vueCompilerOptions) { + const originalTsPlugin = services?.typescript ?? TsService.create(); + services ??= {}; + services.typescript = (ctx, modules) => { + const base = typeof originalTsPlugin === 'function' ? originalTsPlugin(ctx, modules) : originalTsPlugin; + if (!ctx || !modules?.typescript) + return base; + const ts = modules.typescript; + return { + ...base, + async provideCompletionItems(document, position, context, item) { + const result = await base.provideCompletionItems?.(document, position, context, item); + if (result) { + // filter __VLS_ + result.items = result.items.filter(item => item.label.indexOf('__VLS_') === -1 + && (!item.labelDetails?.description || item.labelDetails.description.indexOf('__VLS_') === -1)); + // handle component auto-import patch + let casing; + for (const [_, map] of ctx.documents.getMapsByVirtualFileUri(document.uri)) { + const virtualFile = ctx.documents.getSourceByUri(map.sourceFileDocument.uri)?.root; + if (virtualFile instanceof language_core_1.VueFile) { + const isAutoImport = !!map.toSourcePosition(position, data => typeof data.completion === 'object' && !!data.completion.autoImportOnly); + if (isAutoImport) { + const source = ctx.documents.getVirtualFileByUri(document.uri)[1]; + for (const item of result.items) { + item.data.__isComponentAutoImport = true; + } + // fix #2458 + if (source) { + casing ??= await (0, nameCasing_1.getNameCasing)(ts, ctx, ctx.env.fileNameToUri(source.fileName), vueCompilerOptions); + if (casing.tag === types_1.TagNameCasing.Kebab) { + for (const item of result.items) { + item.filterText = (0, language_core_1.hyphenateTag)(item.filterText ?? item.label); + } + } + } + } + } + } + } + return result; + }, + async resolveCompletionItem(item, token) { + item = await base.resolveCompletionItem?.(item, token) ?? item; + const itemData = item.data; + let newName; + if (itemData?.uri && item.additionalTextEdits) { + patchAdditionalTextEdits(itemData.uri, item.additionalTextEdits); + } + for (const ext of vueCompilerOptions.extensions) { + const suffix = (0, shared_1.capitalize)(ext.substring('.'.length)); // .vue -> Vue + if (itemData?.uri + && item.textEdit?.newText.endsWith(suffix) + && item.additionalTextEdits?.length === 1 && item.additionalTextEdits[0].newText.indexOf('import ' + item.textEdit.newText + ' from ') >= 0 + && (await ctx.env.getConfiguration?.('vue.complete.normalizeComponentImportName') ?? true)) { + newName = item.textEdit.newText.slice(0, -suffix.length); + newName = newName[0].toUpperCase() + newName.substring(1); + if (newName === 'Index') { + const tsItem = item.data.originalItem; + if (tsItem.source) { + const dirs = tsItem.source.split('/'); + if (dirs.length >= 3) { + newName = dirs[dirs.length - 2]; + newName = newName[0].toUpperCase() + newName.substring(1); + } + } + } + item.additionalTextEdits[0].newText = item.additionalTextEdits[0].newText.replace('import ' + item.textEdit.newText + ' from ', 'import ' + newName + ' from '); + item.textEdit.newText = newName; + const source = ctx.documents.getVirtualFileByUri(itemData.uri)[1]; + if (source) { + const casing = await (0, nameCasing_1.getNameCasing)(ts, ctx, ctx.env.fileNameToUri(source.fileName), vueCompilerOptions); + if (casing.tag === types_1.TagNameCasing.Kebab) { + item.textEdit.newText = (0, language_core_1.hyphenateTag)(item.textEdit.newText); + } + } + } + else if (item.textEdit?.newText && new RegExp(`import \\w*${suffix}\\$1 from [\\S\\s]*`).test(item.textEdit.newText)) { + // https://github.com/vuejs/language-tools/issues/2286 + item.textEdit.newText = item.textEdit.newText.replace(`${suffix}$1`, '$1'); + } + } + const data = item.data; + if (item.data?.__isComponentAutoImport && data && item.additionalTextEdits?.length && item.textEdit && itemData?.uri) { + const fileName = ctx.env.uriToFileName(itemData.uri); + const langaugeService = ctx.inject('typescript/languageService'); + const [virtualFile] = ctx.virtualFiles.getVirtualFile(fileName); + const ast = langaugeService.getProgram()?.getSourceFile(fileName); + const exportDefault = ast ? language_core_1.scriptRanges.parseScriptRanges(ts, ast, false, true).exportDefault : undefined; + if (virtualFile && ast && exportDefault) { + const componentName = newName ?? item.textEdit.newText; + const optionEdit = ExtractComponentService.createAddComponentToOptionEdit(ts, ast, componentName); + if (optionEdit) { + const textDoc = ctx.documents.getDocumentByFileName(virtualFile.snapshot, virtualFile.fileName); + item.additionalTextEdits.push({ + range: { + start: textDoc.positionAt(optionEdit.range.start), + end: textDoc.positionAt(optionEdit.range.end), + }, + newText: optionEdit.newText, + }); + } + } + } + return item; + }, + async provideCodeActions(document, range, context, token) { + const result = await base.provideCodeActions?.(document, range, context, token); + return result?.filter(codeAction => codeAction.title.indexOf('__VLS_') === -1); + }, + async resolveCodeAction(item, token) { + const result = await base.resolveCodeAction?.(item, token) ?? item; + if (result?.edit?.changes) { + for (const uri in result.edit.changes) { + const edits = result.edit.changes[uri]; + if (edits) { + patchAdditionalTextEdits(uri, edits); + } + } + } + if (result?.edit?.documentChanges) { + for (const documentChange of result.edit.documentChanges) { + if ('textDocument' in documentChange) { + patchAdditionalTextEdits(documentChange.textDocument.uri, documentChange.edits); + } + } + } + return result; + }, + async provideSemanticDiagnostics(document, token) { + const result = await base.provideSemanticDiagnostics?.(document, token); + return result?.map(diagnostic => { + if (diagnostic.source === 'ts' + && diagnostic.code === 2578 /* Unused '@ts-expect-error' directive. */ + && document.getText(diagnostic.range) === '// @ts-expect-error __VLS_TS_EXPECT_ERROR') { + diagnostic.source = 'vue'; + diagnostic.code = 'ts-2578'; + diagnostic.message = diagnostic.message.replace(/@ts-expect-error/g, '@vue-expect-error'); + } + return diagnostic; + }); + }, + }; + }; + services.html ??= VueTemplateLanguageService.create({ + baseService: HtmlService.create(), + getScanner: (htmlService, document) => { + return htmlService.provide['html/languageService']().createScanner(document.getText()); + }, + updateCustomData(htmlService, extraData) { + htmlService.provide['html/updateCustomData'](extraData); + }, + isSupportedDocument: (document) => document.languageId === 'html', + vueCompilerOptions, + }); + services.pug ??= VueTemplateLanguageService.create({ + baseService: PugService.create(), + getScanner: (pugService, document) => { + const pugDocument = pugService.provide['pug/pugDocument'](document); + if (pugDocument) { + return pugService.provide['pug/languageService']().createScanner(pugDocument); + } + }, + updateCustomData(pugService, extraData) { + pugService.provide['pug/updateCustomData'](extraData); + }, + isSupportedDocument: (document) => document.languageId === 'jade', + vueCompilerOptions, + }); + services.vue ??= VueService.create(); + services.css ??= CssService.create(); + services['pug-beautify'] ??= PugFormatService.create(); + services.json ??= JsonService.create(); + services['typescript/twoslash-queries'] ??= TsTqService.create(); + services['vue/referencesCodeLens'] ??= ReferencesCodeLensService.create(); + services['vue/autoInsertDotValue'] ??= AutoDotValueService.create(); + services['vue/twoslash-queries'] ??= VueTqService.create(); + services['vue/autoInsertParentheses'] ??= AutoWrapParenthesesService.create(); + services['vue/autoInsertSpaces'] ??= AutoAddSpaceService.create(); + services['vue/visualizeHiddenCallbackParam'] ??= VisualizeHiddenCallbackParamService.create(); + services['vue/directiveComments'] ??= DirectiveCommentsService.create(); + services['vue/extractComponent'] ??= ExtractComponentService.create(); + services['vue/toggleVBind'] ??= ToggleVBindService.create(); + services.emmet ??= EmmetService.create(); + return services; +} +// fix https://github.com/vuejs/language-tools/issues/916 +function patchAdditionalTextEdits(uri, edits) { + if (uri.endsWith('.vue.js') + || uri.endsWith('.vue.ts') + || uri.endsWith('.vue.jsx') + || uri.endsWith('.vue.tsx')) { + for (const edit of edits) { + if (edit.range.start.line === 0 + && edit.range.start.character === 0 + && edit.range.end.line === 0 + && edit.range.end.character === 0) { + edit.newText = '\n' + edit.newText; + } + } + } +} + +(function (exports) { + var __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); + }) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; + })); + var __exportStar = (commonjsGlobal && commonjsGlobal.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.AttrNameCasing = exports.TagNameCasing = void 0; + __exportStar(languageService$2, exports); + __exportStar(out$8, exports); + __exportStar(nameCasing, exports); + __exportStar(dragImport, exports); + __exportStar(languageService$1, exports); + var types_1 = types; + Object.defineProperty(exports, "TagNameCasing", { enumerable: true, get: function () { return types_1.TagNameCasing; } }); + Object.defineProperty(exports, "AttrNameCasing", { enumerable: true, get: function () { return types_1.AttrNameCasing; } }); + +} (out$a)); + +var worker = {}; + +Object.defineProperty(worker, "__esModule", { value: true }); +var createLanguageService_1 = worker.createLanguageService = createLanguageHost_1 = worker.createLanguageHost = createServiceEnvironment_1 = worker.createServiceEnvironment = void 0; +const language_service_1 = languageService$2; +const vscode_uri_1 = umdExports; +function createServiceEnvironment() { + return { + uriToFileName: uri => vscode_uri_1.URI.parse(uri).fsPath.replace(/\\/g, '/'), + fileNameToUri: fileName => vscode_uri_1.URI.file(fileName).toString(), + workspaceUri: vscode_uri_1.URI.file('/'), + rootUri: vscode_uri_1.URI.file('/'), + console, + }; +} +var createServiceEnvironment_1 = worker.createServiceEnvironment = createServiceEnvironment; +function createLanguageHost(getMirrorModels, env, rootPath, compilerOptions = {}) { + let projectVersion = 0; + const modelSnapshot = new WeakMap(); + const modelVersions = new Map(); + const host = { + workspacePath: rootPath, + rootPath: rootPath, + getProjectVersion() { + const models = getMirrorModels(); + if (modelVersions.size === getMirrorModels().length) { + if (models.every(model => modelVersions.get(model) === model.version)) { + return projectVersion.toString(); + } + } + modelVersions.clear(); + for (const model of getMirrorModels()) { + modelVersions.set(model, model.version); + } + projectVersion++; + return projectVersion.toString(); + }, + getScriptFileNames() { + const models = getMirrorModels(); + return models.map(model => env.uriToFileName(model.uri.toString(true))); + }, + getScriptSnapshot(fileName) { + const uri = env.fileNameToUri(fileName); + const model = getMirrorModels().find(model => model.uri.toString(true) === uri); + if (model) { + const cache = modelSnapshot.get(model); + if (cache && cache[0] === model.version) { + return cache[1]; + } + const text = model.getValue(); + modelSnapshot.set(model, [model.version, { + getText: (start, end) => text.substring(start, end), + getLength: () => text.length, + getChangeRange: () => undefined, + }]); + return modelSnapshot.get(model)?.[1]; + } + }, + getCompilationSettings() { + return compilerOptions; + }, + }; + return host; +} +var createLanguageHost_1 = worker.createLanguageHost = createLanguageHost; +function createLanguageService(modules, env, config, host, extraApis = {}) { + const languageService = (0, language_service_1.createLanguageService)(modules, env, config, host); + class InnocentRabbit { + } + for (const api in languageService) { + const isFunction = typeof languageService[api] === 'function'; + if (isFunction) { + InnocentRabbit.prototype[api] = languageService[api]; + } + } + for (const api in extraApis) { + const isFunction = typeof extraApis[api] === 'function'; + if (isFunction) { + InnocentRabbit.prototype[api] = extraApis[api]; + } + } + return new InnocentRabbit(); +} +createLanguageService_1 = worker.createLanguageService = createLanguageService; + +let locale; +let ts; +let tsLocalized; +self.onmessage = async (msg) => { + if (msg.data?.event === "init") { + if (msg.data.tsLocale) { + locale = msg.data.tsLocale; + } + [ts, tsLocalized] = await Promise.all([ + importTsFromCdn(msg.data.tsVersion), + locale && fetchJson( + `https://cdn.jsdelivr.net/npm/typescript@${msg.data.tsVersion}/lib/${locale}/diagnosticMessages.generated.json` + ) + ]); + self.postMessage("inited"); + return; + } + initialize( + (ctx, { tsconfig, dependencies }) => { + const { options: compilerOptions } = ts.convertCompilerOptionsFromJson( + tsconfig?.compilerOptions || {}, + "" + ); + const env = createServiceEnvironment_1(); + const host = createLanguageHost_1( + ctx.getMirrorModels, + env, + "/src", + compilerOptions + ); + const jsDelivrFs = cdn.createJsDelivrFs(ctx.host.onFetchCdnFile); + const jsDelivrUriResolver = cdn.createJsDelivrUriResolver( + "/node_modules", + dependencies + ); + if (locale) { + env.locale = locale; + } + if (tsLocalized) { + host.getLocalizedDiagnosticMessages = () => tsLocalized; + } + cdn.decorateServiceEnvironment(env, jsDelivrUriResolver, jsDelivrFs); + return createLanguageService_1( + { typescript: ts }, + env, + out$a.resolveConfig( + ts, + {}, + compilerOptions, + tsconfig.vueCompilerOptions || {} + ), + host + ); + } + ); +}; +async function importTsFromCdn(tsVersion) { + const _module = globalThis.module; + globalThis.module = { exports: {} }; + const tsUrl = `https://cdn.jsdelivr.net/npm/typescript@${tsVersion}/lib/typescript.js`; + await import( + /* @vite-ignore */ + tsUrl + ); + const ts2 = globalThis.module.exports; + globalThis.module = _module; + return ts2; +} +async function fetchJson(url) { + try { + const res = await fetch(url); + if (res.status === 200) { + return await res.json(); + } + } catch { + } +} diff --git a/playground/index.html b/playground/index.html new file mode 100644 index 00000000..1ab67bff --- /dev/null +++ b/playground/index.html @@ -0,0 +1,19 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="UTF-8" /> + <meta http-equiv="X-UA-Compatible" content="IE=edge" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <link rel="icon" type="image/svg+xml" href="https://fastly.jsdelivr.net/npm/@vant/assets/logo.png" /> + <title>Vant Playground + + + + + +
+ + diff --git a/vant-weapp/0.x/index.html b/vant-weapp/0.x/index.html new file mode 100644 index 00000000..645ca254 --- /dev/null +++ b/vant-weapp/0.x/index.html @@ -0,0 +1,27 @@ + + + + + + + + + + Vant Weapp - 轻量、可靠的小程序 UI 组件库 + + + + + +
+ + + diff --git a/vant-weapp/0.x/preview.html b/vant-weapp/0.x/preview.html new file mode 100644 index 00000000..bdd5bc59 --- /dev/null +++ b/vant-weapp/0.x/preview.html @@ -0,0 +1,27 @@ + + + + + + + + + + Vant Weapp - 轻量、可靠的小程序 UI 组件库 + + + + + +
+ + + diff --git a/vant-weapp/index.html b/vant-weapp/index.html new file mode 100644 index 00000000..b54caaf3 --- /dev/null +++ b/vant-weapp/index.html @@ -0,0 +1 @@ +Vant Weapp - 轻量、可靠的小程序 UI 组件库
\ No newline at end of file diff --git a/vant-weapp/mobile.html b/vant-weapp/mobile.html new file mode 100644 index 00000000..0c853b03 --- /dev/null +++ b/vant-weapp/mobile.html @@ -0,0 +1 @@ +Vant Weapp - 轻量、可靠的小程序 UI 组件库
\ No newline at end of file diff --git a/vant-weapp/static/css/2209.5797d790.css b/vant-weapp/static/css/2209.5797d790.css new file mode 100644 index 00000000..378d7cb8 --- /dev/null +++ b/vant-weapp/static/css/2209.5797d790.css @@ -0,0 +1 @@ +.van-doc-nav{background-color:var(--van-doc-background-2);bottom:0;left:0;max-width:var(--van-doc-nav-width);min-width:var(--van-doc-nav-width);overflow-y:scroll;padding:8px 0;position:absolute;top:var(--van-doc-header-top-height);z-index:1}@media(min-width:var(--van-doc-row-max-width)){.van-doc-nav{left:50%;margin-left:calc(-.5*var(--van-doc-row-max-width))}}.van-doc-nav.van-doc-nav-fixed{position:fixed;top:0}.van-doc-nav::-webkit-scrollbar{background-color:initial;height:6px;width:6px}.van-doc-nav::-webkit-scrollbar-thumb{background-color:initial;border-radius:6px}.van-doc-nav:hover::-webkit-scrollbar-thumb{background-color:rgba(69,90,100,.2)}.van-doc-nav__group{margin-bottom:16px;padding-left:6px}.van-doc-nav__title{color:var(--van-doc-text-color-2);font-size:16px;font-weight:600;line-height:28px;padding:24px 0 0 var(--van-doc-padding)}.van-doc-nav__item a{color:var(--van-doc-text-color-3);display:block;font-size:14px;line-height:20px;margin:4px 0;padding:6px 0 6px var(--van-doc-padding);transition:color.2s}.van-doc-nav__item a.active,.van-doc-nav__item a:hover{color:var(--van-doc-link-color)}.van-doc-nav__item a.active{font-weight:600}.van-doc-nav__item a span{font-size:13px}@media(max-width:1300px){.van-doc-nav__item a{font-size:13px}.van-doc-nav__item:active{font-size:14px}}.van-doc-header{background-color:var(--van-doc-header-background);position:relative;-webkit-user-select:none;user-select:none;width:100%;z-index:2}.van-doc-header__top{align-items:center;display:flex;height:var(--van-doc-header-top-height);padding:0 var(--van-doc-padding)}.van-doc-header__top-nav{flex:1;font-size:0;text-align:right}.van-doc-header__top-nav>li{display:inline-block;position:relative;vertical-align:middle}.van-doc-header__top-nav-item{margin-left:16px}.van-doc-header__top-nav-title{display:block;font-size:15px}.van-doc-header__cube{background:#f7f8fa;border:1px solid rgba(255,255,255,.7);border-radius:20px;color:#001938;cursor:pointer;display:block;font-size:14px;line-height:30px;padding:0 12px;position:relative;text-align:center;transition:.3s ease-in-out}.van-doc-header__version{padding-right:20px}.van-doc-header__version:after{border-color:transparent transparent currentcolor currentcolor;border-style:solid;border-width:1px;color:#001938;content:"";height:5px;position:absolute;right:9px;top:10px;transform:rotate(315deg);width:5px}.van-doc-header__version-pop{background-color:#fff;border-radius:8px;box-shadow:0 4px 12px#ebedf0;color:#333;left:0;line-height:36px;overflow:hidden;position:absolute;text-align:left;top:34px;transform-origin:top;transition:.2s cubic-bezier(.215,.61,.355,1);width:100%;z-index:99}.van-doc-header__version-pop-item{padding-left:12px;transition:.2s}.van-doc-header__version-pop-item:hover{background-color:#f7f8fa;color:var(--van-doc-link-color)}.van-doc-header__logo{display:block}.van-doc-header__logo img{display:inline-block;margin-right:12px;vertical-align:middle;width:28px}.van-doc-header__title{color:#fff;display:inline-block;font-size:22px;vertical-align:middle}.van-doc-header__subtitle{color:#999;display:inline-block;font-size:13px;margin-left:4px;vertical-align:-4px}.van-doc-header__link{cursor:pointer}.van-doc-header__link span{color:#fff;font-size:16px}.van-doc-header__link img{display:block;height:30px;transition:.3s cubic-bezier(.175,.885,.32,1.275);width:30px}.van-doc-header__link img:hover{transform:scale(1.2)}.van-doc-dropdown-enter,.van-doc-dropdown-leave-active{opacity:0;transform:scaley(0)}.van-doc-card{background-color:var(--van-doc-background-2);border-radius:var(--van-doc-border-radius);margin-bottom:var(--van-doc-padding);overflow:auto;padding:28px 28px 32px}.van-doc-card>pre code{overflow:initial;padding-right:30px;pointer-events:none;position:relative}.van-doc-card>pre:hover code:before{background-image:url(data:image/png;base64,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);background-position:50%;background-size:contain;content:"";cursor:pointer;display:block;height:20px;pointer-events:auto;position:absolute;right:14px;top:11px;width:20px;z-index:9}.van-doc-card>pre .code-copy-success:after{animation:code-copy-animation.2s ease-out;animation-fill-mode:forwards;content:"Copied!";display:block;position:absolute;right:-4px;top:0;z-index:9}@keyframes code-copy-animation{0%{opacity:0;top:0}to{opacity:1;top:-20px}}.van-doc-card>blockquote a,.van-doc-card>p a,.van-doc-card>table a,.van-doc-card>ul a{-webkit-font-smoothing:auto;color:var(--van-doc-link-color);margin:0 1px}.van-doc-card>blockquote a:hover,.van-doc-card>p a:hover,.van-doc-card>table a:hover,.van-doc-card>ul a:hover{opacity:.8}.van-doc-card>blockquote a:active,.van-doc-card>p a:active,.van-doc-card>table a:active,.van-doc-card>ul a:active{opacity:.6}.van-doc-card>h3,.van-doc-card>h4,.van-doc-card>h5,.van-doc-card>h6{font-weight:400;line-height:1.6}.van-doc-card>h3[id],.van-doc-card>h4[id],.van-doc-card>h5[id],.van-doc-card>h6[id]{cursor:pointer}.van-doc-card>h3{font-size:20px;font-weight:600;margin-bottom:16px}.van-doc-card>h4{font-size:18px}.van-doc-card>h4,.van-doc-card>h5{font-weight:600;margin:24px 0 12px}.van-doc-card>h5{font-size:16px}.van-doc-card>p{color:var(--van-doc-text-color-3);font-size:15px;line-height:26px;margin-top:16px}.van-doc-card>p strong{color:var(--van-doc-text-color-1)}.van-doc-card>table{border-collapse:collapse;color:var(--van-doc-text-color-3);font-size:14px;line-height:1.5;margin-top:12px;width:100%}.van-doc-card>table th{font-weight:600;padding:8px 10px;text-align:left}.van-doc-card>table th:first-child{padding-left:0}.van-doc-card>table th:last-child{padding-right:0}.van-doc-card>table td{border-top:1px solid var(--van-doc-border-color);padding:8px}.van-doc-card>table td:first-child{padding-left:0}.van-doc-card>table td:first-child code{background-color:rgba(25,137,250,.15);border-radius:20px;color:var(--van-doc-blue);font-size:11px;font-weight:600;margin:0;padding:2px 6px}.van-doc-card>table td:last-child{padding-right:0}.van-doc-card>table em{-webkit-font-smoothing:auto;color:var(--van-doc-green);display:inline-block;font-family:var(--van-doc-code-font-family);font-size:14px;font-style:normal;max-width:300px}.van-doc-card>ul{margin:16px 0 0}.van-doc-card>ol li,.van-doc-card>ul li{color:var(--van-doc-text-color-3);font-size:15px;line-height:26px;margin:5px 0 5px 10px;padding-left:15px;position:relative}.van-doc-card>ol li:before,.van-doc-card>ul li:before{border:1px solid;border-radius:50%;box-sizing:border-box;content:"";height:6px;left:0;margin-top:10px;position:absolute;top:0;width:6px}.van-doc-card>hr{border:0;border-top:1px solid#eee;margin:30px 0}.van-doc-card>ol code,.van-doc-card>p code,.van-doc-card>table code,.van-doc-card>ul code{-webkit-font-smoothing:auto;border-radius:6px;display:inline;font-family:var(--van-doc-code-font-family);font-size:14px;margin:0 2px;padding:3px 7px;word-break:keep-all}.van-doc-card>blockquote{background-color:var(--van-doc-blockquote-background);border-radius:var(--van-doc-border-radius);color:var(--van-doc-blockquote-color);font-size:15px;line-height:26px;margin:16px 0 0;padding:16px}.van-doc-card>img,.van-doc-card>p img{border-radius:var(--van-doc-border-radius);margin:16px 0 0;width:100%}.van-doc-content{flex:1;padding:0 0 75px;position:relative}.van-doc-content .van-doc-markdown-body{overflow:hidden;padding:var(--van-doc-padding)}.van-doc-content .van-doc-markdown-body h1,.van-doc-content .van-doc-markdown-body h2{font-weight:400;line-height:1.5}.van-doc-content .van-doc-markdown-body h1[id],.van-doc-content .van-doc-markdown-body h2[id]{cursor:pointer}.van-doc-content .van-doc-markdown-body h1{cursor:default;font-size:34px;margin:0 0 30px}.van-doc-content .van-doc-markdown-body h2{font-size:26px;margin:52px 0 20px}.van-doc-content--changelog strong{display:block;font-size:15px;font-weight:600;margin:24px 0 12px}.van-doc-content--changelog h3+p code{margin:0}.van-doc-content--changelog h3 a{color:inherit;font-size:20px}.van-doc-container{box-sizing:border-box;overflow:hidden;padding-left:var(--van-doc-nav-width)}.van-doc-container--with-simulator{padding-right:calc(var(--van-doc-simulator-width) + var(--van-doc-padding))}@media(max-width:1100px){.van-doc-container--with-simulator{padding-right:calc(-8px + var(--van-doc-simulator-width))}}.van-doc-simulator{background:var(--van-doc-background-2);border-radius:var(--van-doc-border-radius);box-sizing:border-box;min-width:var(--van-doc-simulator-width);overflow:hidden;position:absolute;right:var(--van-doc-padding);top:calc(var(--van-doc-padding) + var(--van-doc-header-top-height));width:var(--van-doc-simulator-width);z-index:1}@media(max-width:1100px){.van-doc-simulator{left:750px;right:auto}}@media(min-width:var(--van-doc-row-max-width)){.van-doc-simulator{margin-right:calc(24px + -.5*var(--van-doc-row-max-width));right:50%}}.van-doc-simulator-fixed{position:fixed;top:var(--van-doc-padding)}.van-doc-simulator iframe{display:block;width:100%}:host,:root{--van-doc-black:#000;--van-doc-white:#fff;--van-doc-gray-1:#f7f8fa;--van-doc-gray-2:#f2f3f5;--van-doc-gray-3:#ebedf0;--van-doc-gray-4:#dcdee0;--van-doc-gray-5:#c8c9cc;--van-doc-gray-6:#969799;--van-doc-gray-7:#646566;--van-doc-gray-8:#323233;--van-doc-blue:#1989fa;--van-doc-green:#07c160;--van-doc-purple:#8e69d3;--van-doc-padding:32px;--van-doc-row-max-width:1680px;--van-doc-nav-width:220px;--van-doc-border-radius:20px;--van-doc-simulator-width:360px;--van-doc-simulator-height:620px;--van-doc-header-top-height:64px;--van-doc-code-font-family:"Menlo","Source Code Pro","Monaco","Inconsolata",monospace}.van-doc-theme-light{--van-doc-text-color-1:var(--van-doc-black);--van-doc-text-color-2:var(--van-doc-gray-8);--van-doc-text-color-3:#34495e;--van-doc-text-color-4:var(--van-doc-gray-6);--van-doc-link-color:var(--van-doc-blue);--van-doc-background:#eff2f5;--van-doc-background-2:var(--van-doc-white);--van-doc-background-3:var(--van-doc-white);--van-doc-header-background:#011f3c;--van-doc-border-color:var(--van-doc-gray-2);--van-doc-code-color:#58727e;--van-doc-code-comment-color:var(--van-doc-gray-6);--van-doc-code-background:var(--van-doc-gray-1);--van-doc-blockquote-color:#2f85da;--van-doc-blockquote-background:#ecf9ff}.van-doc-theme-dark{--van-doc-text-color-1:var(--van-doc-white);--van-doc-text-color-2:hsla(0,0%,100%,.9);--van-doc-text-color-3:hsla(0,0%,100%,.75);--van-doc-text-color-4:hsla(0,0%,100%,.6);--van-doc-link-color:#1bb5fe;--van-doc-background:#202124;--van-doc-background-2:hsla(0,0%,100%,.06);--van-doc-background-3:hsla(0,0%,100%,.1);--van-doc-header-background:rgba(1,31,60,.3);--van-doc-border-color:#3a3a3c;--van-doc-code-color:hsla(0,0%,78%,.85);--van-doc-code-comment-color:var(--van-doc-gray-7);--van-doc-code-background:rgba(0,0,0,.24);--van-doc-blockquote-color:#bae6fd;--van-doc-blockquote-background:rgba(7,89,133,.25)}body{-webkit-font-smoothing:antialiased;background-color:var(--van-doc-background);color:var(--van-doc-text-color-2);font-family:Open Sans,-apple-system,BlinkMacSystemFont,Helvetica Neue,Helvetica,Segoe UI,Arial,Roboto,PingFang SC,miui,Hiragino Sans GB,Microsoft Yahei,sans-serif;font-size:16px;min-width:1100px;overflow-x:auto}body,p{margin:0}h1,h2,h3,h4,h5,h6{font-size:inherit;margin:0}ol,ul{list-style:none;margin:0;padding:0}a{text-decoration:none}.van-doc-row{width:100%}@media(min-width:var(--van-doc-row-max-width)){.van-doc-row{margin:0 auto;width:var(--van-doc-row-max-width)}}code{word-wrap:break-word;-webkit-font-smoothing:auto;background-color:var(--van-doc-code-background);border-radius:var(--van-doc-border-radius);color:var(--van-doc-code-color);display:block;font-family:var(--van-doc-code-font-family);font-size:14px;font-weight:400;line-height:26px;overflow-x:auto;padding:16px 20px;position:relative;white-space:pre-wrap}p code{display:inline-flex;padding:4px 10px}pre{margin:20px 0 0}pre+p{margin-top:20px!important}.hljs{background:#fff;display:block;overflow-x:auto;padding:.5em}.hljs-subst{color:var(--van-doc-code-color)}.hljs-addition,.hljs-meta,.hljs-string,.hljs-symbol,.hljs-template-tag,.hljs-template-variable{color:var(--van-doc-green)}.hljs-comment,.hljs-quote{color:var(--van-doc-code-comment-color)}.hljs-attribute,.hljs-keyword,.hljs-params{color:var(--van-doc-purple)}.hljs-bullet,.hljs-deletion,.hljs-link,.hljs-literal,.hljs-number,.hljs-regexp,.hljs-variable{color:#eb6f6f}.hljs-attr,.hljs-built_in,.hljs-doctag,.hljs-name,.hljs-section,.hljs-selector-class,.hljs-selector-id,.hljs-selector-tag,.hljs-strong,.hljs-title,.hljs-type{color:#4994df}.hljs-emphasis{font-style:italic}.van-doc-intro{padding-top:20px;text-align:center}.van-doc-intro p{margin-bottom:20px}.demo-playground[data-v-4fd78de2]{background-color:#fff;border:1px solid#ebedf1;border-radius:1px;margin:24px 0}.demo-playground.transform[data-v-4fd78de2]{transform:translate(0)}.demo-playground--previewer[data-v-4fd78de2]{border-bottom:1px solid#ebedf1;padding:40px 24px}.demo-playground--previewer.compact[data-v-4fd78de2]{padding:0}.demo-playground--code--actions[data-v-4fd78de2]{align-items:center;display:flex;height:40px;padding:0 1em}.demo-playground--code--actions>a[data-v-4fd78de2]:not(:last-child),.demo-playground--code--actions>button[data-v-4fd78de2]:not(:last-child){margin-right:8px}.demo-playground--code--actions>a[data-v-4fd78de2]{display:flex}.demo-playground--code--actions button[data-v-4fd78de2]{border:0;box-sizing:border-box;cursor:pointer;display:inline-block;height:16px;opacity:.6;outline:none;padding:0;position:relative;transition:opacity.2s,background.2s;width:16px}.demo-playground--code--actions button[data-v-4fd78de2]:after{bottom:-8px;content:"";left:-8px;position:absolute;right:-8px;top:-8px}.demo-playground--code--actions button[data-v-4fd78de2]:hover{opacity:.8}.demo-playground--code--actions button[data-v-4fd78de2]:active{opacity:.9}.demo-playground--code--actions button[data-v-4fd78de2]:disabled{cursor:not-allowed;opacity:.2}.demo-playground--code--actions button[role=codesandbox][data-v-4fd78de2]{background-position:-18px 0}.demo-playground--code--actions button[role=codepen][data-v-4fd78de2]{background-position:-36px 0}.demo-playground--code--actions button[role=source][data-v-4fd78de2]{background-position:-72px 0}.demo-playground--code--actions button[role=change-jsx][data-v-4fd78de2]{background-position:-90px 0}.demo-playground--code--actions button[role=change-tsx][data-v-4fd78de2]{background-position:-108px 0}.demo-playground--code--actions button[role=open-demo][data-v-4fd78de2]{background-position:-126px 0}.demo-playground--code--actions button[role=motions][data-v-4fd78de2]{background-position:-162px 0}.demo-playground--code--actions button[role=sketch-component][data-v-4fd78de2]{background-position:-182px 0}.demo-playground--code--actions button[role=sketch-group][data-v-4fd78de2]{background-position:-200px 0}.demo-playground--code--actions button[role=copy][data-status=ready][data-v-4fd78de2]{background-position:-54px 0}.demo-playground--code--actions button[role=copy][data-status=copied][data-v-4fd78de2]{background-position:-54px -16px;pointer-events:none}.demo-playground--code--actions button[role=refresh][data-v-4fd78de2]{background-position-x:-144px}.demo-playground--code--actions>span[data-v-4fd78de2]{display:inline-block;flex:1}.demo-playground--code--content[data-v-4fd78de2]{border-top:1px dashed#ebedf1}.demo-playground--code--content[data-v-4fd78de2] pre{margin:0}.demo-playground--code--content[data-v-4fd78de2] .language-html{border-radius:0}.action-icon[data-v-4fd78de2]{background:url(data:image/png;base64,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)no-repeat 0 0/230px auto} \ No newline at end of file diff --git a/vant-weapp/static/css/mobile.b007b6a0.css b/vant-weapp/static/css/mobile.b007b6a0.css new file mode 100644 index 00000000..e0e8cc60 --- /dev/null +++ b/vant-weapp/static/css/mobile.b007b6a0.css @@ -0,0 +1 @@ +.van-doc-demo-block__title{color:var(--van-doc-text-color-4);font-size:14px;font-weight:400;line-height:16px;margin:0;padding:32px 16px 16px}.van-doc-demo-block__card{border-radius:8px;margin:12px 12px 0;overflow:hidden}.van-doc-demo-block__title+.van-doc-demo-block__card{margin-top:0}.van-doc-demo-block:first-of-type .van-doc-demo-block__title{padding-top:20px}.van-doc-demo-section{box-sizing:border-box;min-height:calc(100vh - 56px);padding-bottom:20px}.demo-home-nav__title{color:var(--van-doc-text-color-4);font-size:14px;margin:24px 0 8px 16px}.demo-home-nav__block{background-color:var(--van-doc-background-3);border-radius:99px;color:var(--van-doc-text-color-3);display:flex;font-size:14px;font-weight:600;line-height:40px;margin:0 0 12px;padding-left:20px;position:relative;transition:opacity.3s}.demo-home-nav__block:hover{opacity:.8}.demo-home-nav__block:active{opacity:.6}.demo-home-nav__icon{height:16px;margin-top:-8px;position:absolute;right:16px;top:50%;width:16px}.demo-home{box-sizing:border-box;min-height:100vh;padding:46px 20px 20px;width:100%}.demo-home__desc,.demo-home__title{font-weight:400;line-height:1;padding-left:16px;-webkit-user-select:none;user-select:none}.demo-home__title{font-size:32px;margin:0 0 16px}.demo-home__title img,.demo-home__title span{display:inline-block;vertical-align:middle}.demo-home__title img{width:32px}.demo-home__title span{margin-left:16px}.demo-home__title--small{font-size:24px}.demo-home__desc{color:var(--van-doc-text-color-4);font-size:14px;line-height:1.6;margin:0 0 40px}.demo-nav{align-items:center;background-color:var(--van-doc-background-3);display:flex;height:56px;justify-content:center;position:relative}.demo-nav__title{font-size:17px;font-weight:600;text-transform:capitalize}.demo-nav__back{cursor:pointer;height:24px;left:16px;position:absolute;top:16px;width:24px}:host,:root{--van-doc-black:#000;--van-doc-white:#fff;--van-doc-gray-1:#f7f8fa;--van-doc-gray-2:#f2f3f5;--van-doc-gray-3:#ebedf0;--van-doc-gray-4:#dcdee0;--van-doc-gray-5:#c8c9cc;--van-doc-gray-6:#969799;--van-doc-gray-7:#646566;--van-doc-gray-8:#323233;--van-doc-blue:#1989fa;--van-doc-green:#07c160;--van-doc-purple:#8e69d3;--van-doc-padding:32px;--van-doc-row-max-width:1680px;--van-doc-nav-width:220px;--van-doc-border-radius:20px;--van-doc-simulator-width:360px;--van-doc-simulator-height:620px;--van-doc-header-top-height:64px;--van-doc-code-font-family:"Menlo","Source Code Pro","Monaco","Inconsolata",monospace}.van-doc-theme-light{--van-doc-text-color-1:var(--van-doc-black);--van-doc-text-color-2:var(--van-doc-gray-8);--van-doc-text-color-3:#34495e;--van-doc-text-color-4:var(--van-doc-gray-6);--van-doc-link-color:var(--van-doc-blue);--van-doc-background:#eff2f5;--van-doc-background-2:var(--van-doc-white);--van-doc-background-3:var(--van-doc-white);--van-doc-header-background:#011f3c;--van-doc-border-color:var(--van-doc-gray-2);--van-doc-code-color:#58727e;--van-doc-code-comment-color:var(--van-doc-gray-6);--van-doc-code-background:var(--van-doc-gray-1);--van-doc-blockquote-color:#2f85da;--van-doc-blockquote-background:#ecf9ff}.van-doc-theme-dark{--van-doc-text-color-1:var(--van-doc-white);--van-doc-text-color-2:hsla(0,0%,100%,.9);--van-doc-text-color-3:hsla(0,0%,100%,.75);--van-doc-text-color-4:hsla(0,0%,100%,.6);--van-doc-link-color:#1bb5fe;--van-doc-background:#202124;--van-doc-background-2:hsla(0,0%,100%,.06);--van-doc-background-3:hsla(0,0%,100%,.1);--van-doc-header-background:rgba(1,31,60,.3);--van-doc-border-color:#3a3a3c;--van-doc-code-color:hsla(0,0%,78%,.85);--van-doc-code-comment-color:var(--van-doc-gray-7);--van-doc-code-background:rgba(0,0,0,.24);--van-doc-blockquote-color:#bae6fd;--van-doc-blockquote-background:rgba(7,89,133,.25)}body{-webkit-font-smoothing:antialiased;background-color:var(--van-doc-background);color:var(--van-doc-text-color-2);font-family:Open Sans,-apple-system,BlinkMacSystemFont,Helvetica Neue,Helvetica,Segoe UI,Arial,Roboto,PingFang SC,miui,Hiragino Sans GB,Microsoft Yahei,sans-serif;font-size:16px;min-width:1100px;overflow-x:auto}body,p{margin:0}h1,h2,h3,h4,h5,h6{font-size:inherit;margin:0}ol,ul{list-style:none;margin:0;padding:0}a{text-decoration:none}.van-doc-row{width:100%}@media(min-width:var(--van-doc-row-max-width)){.van-doc-row{margin:0 auto;width:var(--van-doc-row-max-width)}}body{background-color:inherit;min-width:100vw}.van-doc-theme-light{background-color:var(--van-doc-gray-1)}.van-doc-theme-dark{background-color:var(--van-doc-black)}::-webkit-scrollbar{background:transparent;width:0} \ No newline at end of file diff --git a/vant-weapp/static/js/1845.d6519ae3.js b/vant-weapp/static/js/1845.d6519ae3.js new file mode 100644 index 00000000..119daa5d --- /dev/null +++ b/vant-weapp/static/js/1845.d6519ae3.js @@ -0,0 +1,6 @@ +(self.webpackChunk=self.webpackChunk||[]).push([["1845"],{2703:function(t,e,n){"use strict";n.d(e,{De:function(){return a},b$:function(){return o},vc:function(){return i}});let i={name:"vant-weapp",build:{srcDir:"packages",site:{publicPath:"/vant-weapp/"}},site:{versions:[{label:"0.x",link:"/vant-weapp/0.x"}],title:"Vant Weapp",description:"\u8F7B\u91CF\u3001\u53EF\u9760\u7684\u5C0F\u7A0B\u5E8F UI \u7EC4\u4EF6\u5E93",logo:"https://img.yzcdn.cn/vant/logo.png",simulator:{url:"/vant/v2/mobile.html?weapp=1",routeMapper:t=>`/zh-CN${({"/common":"/style","/transition":"/style"})[t]||t}`,syncPathFromSimulator:!1},icpLicense:{text:"\u6D59ICP\u59072021036118\u53F7",link:"https://beian.miit.gov.cn/"},headHtml:` +`,links:[{logo:"https://img.yzcdn.cn/vant/vant-o.svg",url:"/vant/"},{logo:"https://b.yzcdn.cn/vant/logo/github.svg",url:"https://github.com/youzan/vant-weapp"}],baiduAnalytics:{seed:"af5d41bc4e446e76665dbe3ec18d55c3"},nav:[{title:"\u5F00\u53D1\u6307\u5357",items:[{path:"home",title:"\u4ECB\u7ECD"},{path:"quickstart",title:"\u5FEB\u901F\u4E0A\u624B"},{path:"changelog",title:"\u66F4\u65B0\u65E5\u5FD7"},{path:"custom-style",title:"\u6837\u5F0F\u8986\u76D6"},{path:"theme",title:"\u5B9A\u5236\u4E3B\u9898"}]},{title:"\u57FA\u7840\u7EC4\u4EF6",items:[{path:"button",title:"Button \u6309\u94AE"},{path:"cell",title:"Cell \u5355\u5143\u683C"},{path:"config-provider",title:"ConfigProvider \u5168\u5C40\u914D\u7F6E"},{path:"icon",title:"Icon \u56FE\u6807"},{path:"image",title:"Image \u56FE\u7247"},{path:"col",title:"Layout \u5E03\u5C40"},{path:"popup",title:"Popup \u5F39\u51FA\u5C42"},{path:"common",title:"Style \u5185\u7F6E\u6837\u5F0F"},{path:"toast",title:"Toast \u8F7B\u63D0\u793A"},{path:"transition",title:"transition \u52A8\u753B"}]},{title:"\u8868\u5355\u7EC4\u4EF6",items:[{path:"calendar",title:"Calendar \u65E5\u5386"},{path:"cascader",title:"Cascader \u7EA7\u8054\u9009\u62E9"},{path:"checkbox",title:"Checkbox \u590D\u9009\u6846"},{path:"datetime-picker",title:"DatetimePicker \u65F6\u95F4\u9009\u62E9"},{path:"field",title:"Field \u8F93\u5165\u6846"},{path:"picker",title:"Picker \u9009\u62E9\u5668"},{path:"radio",title:"Radio \u5355\u9009\u6846"},{path:"rate",title:"Rate \u8BC4\u5206"},{path:"search",title:"Search \u641C\u7D22"},{path:"slider",title:"Slider \u6ED1\u5757"},{path:"stepper",title:"Stepper \u6B65\u8FDB\u5668"},{path:"switch",title:"Switch \u5F00\u5173"},{path:"uploader",title:"Uploader \u6587\u4EF6\u4E0A\u4F20"}]},{title:"\u53CD\u9988\u7EC4\u4EF6",items:[{path:"action-sheet",title:"ActionSheet \u52A8\u4F5C\u9762\u677F"},{path:"dialog",title:"Dialog \u5F39\u51FA\u6846"},{path:"dropdown-menu",title:"DropdownMenu \u4E0B\u62C9\u83DC\u5355"},{path:"loading",title:"Loading \u52A0\u8F7D"},{path:"notify",title:"Notify \u6D88\u606F\u901A\u77E5"},{path:"overlay",title:"Overlay \u906E\u7F69\u5C42"},{path:"share-sheet",title:"ShareSheet \u5206\u4EAB\u9762\u677F"},{path:"swipe-cell",title:"SwipeCell \u6ED1\u52A8\u5355\u5143\u683C"}]},{title:"\u5C55\u793A\u7EC4\u4EF6",items:[{path:"circle",title:"Circle \u73AF\u5F62\u8FDB\u5EA6\u6761"},{path:"collapse",title:"Collapse \u6298\u53E0\u9762\u677F"},{path:"count-down",title:"CountDown \u5012\u8BA1\u65F6"},{path:"divider",title:"Divider \u5206\u5272\u7EBF"},{path:"empty",title:"Empty \u7A7A\u72B6\u6001"},{path:"notice-bar",title:"NoticeBar \u901A\u77E5\u680F"},{path:"progress",title:"Progress \u8FDB\u5EA6\u6761"},{path:"skeleton",title:"Skeleton \u9AA8\u67B6\u5C4F"},{path:"steps",title:"Steps \u6B65\u9AA4\u6761"},{path:"sticky",title:"Sticky \u7C98\u6027\u5E03\u5C40"},{path:"tag",title:"Tag \u6807\u7B7E"}]},{title:"\u5BFC\u822A\u7EC4\u4EF6",items:[{path:"grid",title:"Grid \u5BAB\u683C"},{path:"index-bar",title:"IndexBar \u7D22\u5F15\u680F"},{path:"nav-bar",title:"NavBar \u5BFC\u822A\u680F"},{path:"sidebar",title:"Sidebar \u4FA7\u8FB9\u5BFC\u822A"},{path:"tab",title:"Tab \u6807\u7B7E\u9875"},{path:"tabbar",title:"Tabbar \u6807\u7B7E\u680F"},{path:"tree-select",title:"TreeSelect \u5206\u7C7B\u9009\u62E9"}]},{title:"\u4E1A\u52A1\u7EC4\u4EF6",items:[{path:"area",title:"Area \u7701\u5E02\u533A\u9009\u62E9"},{path:"card",title:"Card \u5546\u54C1\u5361\u7247"},{path:"submit-bar",title:"SubmitBar \u63D0\u4EA4\u8BA2\u5355\u680F"},{path:"goods-action",title:"GoodsAction \u5546\u54C1\u5BFC\u822A"}]},{title:"\u5E9F\u5F03",items:[{path:"panel",title:"Panel \u9762\u677F"}]}]}},a={Changelog:()=>n.e("2474").then(n.bind(n,"6546")),CustomStyle:()=>n.e("9188").then(n.bind(n,"3910")),Home:()=>n.e("6888").then(n.bind(n,"9995")),Quickstart:()=>n.e("7318").then(n.bind(n,"550")),Theme:()=>n.e("4122").then(n.bind(n,"2328")),ActionSheet:()=>n.e("5092").then(n.bind(n,"3730")),Area:()=>n.e("8838").then(n.bind(n,"9658")),Button:()=>n.e("7969").then(n.bind(n,"4872")),Calendar:()=>n.e("381").then(n.bind(n,"4143")),Card:()=>n.e("1978").then(n.bind(n,"1485")),Cascader:()=>n.e("5246").then(n.bind(n,"1138")),Cell:()=>n.e("3294").then(n.bind(n,"2659")),Checkbox:()=>n.e("2665").then(n.bind(n,"2018")),Circle:()=>n.e("8960").then(n.bind(n,"648")),Col:()=>n.e("8311").then(n.bind(n,"2097")),Collapse:()=>n.e("3615").then(n.bind(n,"6846")),Common:()=>n.e("663").then(n.bind(n,"5307")),ConfigProvider:()=>n.e("1852").then(n.bind(n,"495")),CountDown:()=>n.e("9245").then(n.bind(n,"7487")),DatetimePicker:()=>n.e("9346").then(n.bind(n,"5520")),Dialog:()=>n.e("6712").then(n.bind(n,"8032")),Divider:()=>n.e("1042").then(n.bind(n,"1417")),DropdownMenu:()=>n.e("5467").then(n.bind(n,"2059")),Empty:()=>n.e("4026").then(n.bind(n,"7859")),Field:()=>n.e("709").then(n.bind(n,"1227")),GoodsAction:()=>n.e("8887").then(n.bind(n,"2942")),Grid:()=>n.e("906").then(n.bind(n,"2377")),Icon:()=>n.e("2475").then(n.bind(n,"3769")),Image:()=>n.e("6592").then(n.bind(n,"3249")),IndexBar:()=>n.e("594").then(n.bind(n,"3223")),Loading:()=>n.e("6545").then(n.bind(n,"5534")),NavBar:()=>n.e("4335").then(n.bind(n,"5323")),NoticeBar:()=>n.e("6838").then(n.bind(n,"3063")),Notify:()=>n.e("5864").then(n.bind(n,"6444")),Overlay:()=>n.e("1557").then(n.bind(n,"8501")),Panel:()=>n.e("2435").then(n.bind(n,"3864")),Picker:()=>n.e("348").then(n.bind(n,"1511")),Popup:()=>n.e("2647").then(n.bind(n,"7309")),Progress:()=>n.e("7368").then(n.bind(n,"3006")),Radio:()=>n.e("7932").then(n.bind(n,"8356")),Rate:()=>n.e("3532").then(n.bind(n,"6719")),Search:()=>n.e("32").then(n.bind(n,"8454")),ShareSheet:()=>n.e("3931").then(n.bind(n,"9085")),Sidebar:()=>n.e("6877").then(n.bind(n,"6229")),Skeleton:()=>n.e("4711").then(n.bind(n,"9583")),Slider:()=>n.e("6628").then(n.bind(n,"9367")),Stepper:()=>n.e("2313").then(n.bind(n,"7491")),Steps:()=>n.e("3245").then(n.bind(n,"9155")),Sticky:()=>n.e("8270").then(n.bind(n,"3471")),SubmitBar:()=>n.e("3520").then(n.bind(n,"5152")),SwipeCell:()=>n.e("8626").then(n.bind(n,"8735")),Switch:()=>n.e("9737").then(n.bind(n,"8254")),Tab:()=>n.e("4693").then(n.bind(n,"4863")),Tabbar:()=>n.e("6702").then(n.bind(n,"7763")),Tag:()=>n.e("841").then(n.bind(n,"8289")),Toast:()=>n.e("1903").then(n.bind(n,"3404")),Transition:()=>n.e("775").then(n.bind(n,"7397")),TreeSelect:()=>n.e("4786").then(n.bind(n,"9979")),Uploader:()=>n.e("1360").then(n.bind(n,"4399"))},o="1.11.6"},6145:function(t,e,n){"use strict";if(n.d(e,{Dl:function(){return d},Vx:function(){return u},Xw:function(){return s},nC:function(){return p},yt:function(){return c},z3:function(){return b}}),2980!=n.j)var i=n("9633");var a=n("2703");let o=[],r=!1;function l(t){r?t():o.push(t)}function h(){let{path:t}=window.vueRouter.currentRoute.value;return a.vc.site.simulator?.routeMapper?a.vc.site.simulator?.routeMapper(t):t}function d(){window.top.postMessage({type:"replacePath",value:h()},"*")}function p(){let t=document.querySelector("iframe");t&&l(()=>{t.contentWindow.postMessage({type:"replacePath",value:h()},"*")})}function c(t){let e=document.querySelector("iframe");e&&l(()=>{e.contentWindow.postMessage({type:"updateTheme",value:t},"*")})}function u(){let t=window.localStorage.getItem("vantTheme");return t?t:window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}function s(){let t=(0,i.iH)(u());return window.addEventListener("message",e=>{if(e.data?.type!=="updateTheme")return;let n=e.data?.value||"";t.value=n}),t}function b(t){window.addEventListener("message",e=>{if(e.data?.type!=="replacePath")return;let n=e.data?.value||"";t.currentRoute.value.path!==n&&t.replace(n).catch(()=>{})})}window.top===window?window.addEventListener("message",t=>{"iframeReady"===t.data.type&&(r=!0,o.forEach(t=>t()),o=[])}):window.top.postMessage({type:"iframeReady"},"*")},2753:function(t,e,n){"use strict";n.d(e,{Y8:function(){return o},tq:function(){return a},vQ:function(){return r}});let i=navigator.userAgent.toLowerCase(),a=/ios|iphone|ipod|ipad|android/.test(i);function o(t,e="-"){return t.replace(/([a-z\d])([A-Z])/g,"$1"+e+"$2").replace(/([A-Z])([A-Z][a-z\d]+)/g,"$1"+e+"$2").toLowerCase()}function r(t){let e=document.createElement("textarea");e.value=t,e.setAttribute("readonly",""),e.style.position="absolute",e.style.left="-9999px",document.body.appendChild(e);let n=document.getSelection();if(!n)return;let i=n.rangeCount>0&&n.getRangeAt(0);e.select(),document.execCommand("copy"),document.body.removeChild(e),i&&(n.removeAllRanges(),n.addRange(i))}},6481:function(t,e,n){"use strict";n.d(e,{GO:function(){return h},VQ:function(){return r},Wg:function(){return l}});let i="zh-CN",a="vant-cli-lang",o=i;function r(){return o}function l(t){o=t,localStorage.setItem(a,t)}function h(t){let e=localStorage.getItem(a);if(e){o=e;return}if(navigator.language&&-1!==navigator.language.indexOf("zh-")){o=i;return}o=t||"en-US"}}}]); \ No newline at end of file diff --git a/vant-weapp/static/js/2050.24d88172.js b/vant-weapp/static/js/2050.24d88172.js new file mode 100644 index 00000000..0fc07267 --- /dev/null +++ b/vant-weapp/static/js/2050.24d88172.js @@ -0,0 +1 @@ +(self.webpackChunk=self.webpackChunk||[]).push([["2050"],{3869:function(t,e,n){"use strict";n.d(e,{D:function(){return o},v:function(){return i}}),n("2502");let o={},i={name:"vant-weapp",build:{srcDir:"packages",site:{publicPath:"/vant-weapp/"}},site:{versions:[{label:"0.x",link:"/vant-weapp/0.x"}],title:"Vant Weapp",description:"\u8F7B\u91CF\u3001\u53EF\u9760\u7684\u5C0F\u7A0B\u5E8F UI \u7EC4\u4EF6\u5E93",logo:"https://img.yzcdn.cn/vant/logo.png",simulator:{url:"/vant/v2/mobile.html?weapp=1",syncPathFromSimulator:!1},icpLicense:{text:"\u6D59ICP\u59072021036118\u53F7",link:"https://beian.miit.gov.cn/"},headHtml:" + + + diff --git a/vant/1.x/mobile.html b/vant/1.x/mobile.html new file mode 100644 index 00000000..84afabf5 --- /dev/null +++ b/vant/1.x/mobile.html @@ -0,0 +1,16 @@ + + + + + + + + + + Vant - 轻量、可靠的移动端组件库 + + + + diff --git a/vant/index.html b/vant/index.html new file mode 100644 index 00000000..b0040cdd --- /dev/null +++ b/vant/index.html @@ -0,0 +1 @@ +Vant 4 - A lightweight, customizable Vue UI library for mobile web apps.
\ No newline at end of file diff --git a/vant/mobile.html b/vant/mobile.html new file mode 100644 index 00000000..a3ba5a09 --- /dev/null +++ b/vant/mobile.html @@ -0,0 +1 @@ +Vant 4 - A lightweight, customizable Vue UI library for mobile web apps.
\ No newline at end of file diff --git a/vant/next/index.html b/vant/next/index.html new file mode 100644 index 00000000..6309a1e7 --- /dev/null +++ b/vant/next/index.html @@ -0,0 +1,16 @@ + + + + + + + + + + Vant - Mobile UI Components built on Vue + + + + diff --git a/vant/next/mobile.html b/vant/next/mobile.html new file mode 100644 index 00000000..6309a1e7 --- /dev/null +++ b/vant/next/mobile.html @@ -0,0 +1,16 @@ + + + + + + + + + + Vant - Mobile UI Components built on Vue + + + + diff --git a/vant/static/css/9106.6e97ff1c.css b/vant/static/css/9106.6e97ff1c.css new file mode 100644 index 00000000..e292b4d0 --- /dev/null +++ b/vant/static/css/9106.6e97ff1c.css @@ -0,0 +1,6 @@ +:root,:host{--van-black:#000;--van-white:#fff;--van-gray-1:#f7f8fa;--van-gray-2:#f2f3f5;--van-gray-3:#ebedf0;--van-gray-4:#dcdee0;--van-gray-5:#c8c9cc;--van-gray-6:#969799;--van-gray-7:#646566;--van-gray-8:#323233;--van-red:#ee0a24;--van-blue:#1989fa;--van-orange:#ff976a;--van-orange-dark:#ed6a0c;--van-orange-light:#fffbe8;--van-green:#07c160;--van-gradient-red:linear-gradient(to right, #ff6034, #ee0a24);--van-gradient-orange:linear-gradient(to right, #ffd01e, #ff8917);--van-primary-color:var(--van-blue);--van-success-color:var(--van-green);--van-danger-color:var(--van-red);--van-warning-color:var(--van-orange);--van-text-color:var(--van-gray-8);--van-text-color-2:var(--van-gray-6);--van-text-color-3:var(--van-gray-5);--van-active-color:var(--van-gray-2);--van-active-opacity:0.6;--van-disabled-opacity:0.5;--van-background:var(--van-gray-1);--van-background-2:var(--van-white);--van-background-3:var(--van-white);--van-padding-base:4px;--van-padding-xs:8px;--van-padding-sm:12px;--van-padding-md:16px;--van-padding-lg:24px;--van-padding-xl:32px;--van-font-bold:600;--van-font-size-xs:10px;--van-font-size-sm:12px;--van-font-size-md:14px;--van-font-size-lg:16px;--van-line-height-xs:14px;--van-line-height-sm:18px;--van-line-height-md:20px;--van-line-height-lg:22px;--van-base-font:-apple-system, BlinkMacSystemFont, 'Helvetica Neue', + Helvetica, Segoe UI, Arial, Roboto, 'PingFang SC', 'miui', + 'Hiragino Sans GB', 'Microsoft Yahei', sans-serif;--van-price-font:avenir-heavy, 'PingFang SC', helvetica neue, arial, + sans-serif;--van-duration-base:0.3s;--van-duration-fast:0.2s;--van-ease-out:ease-out;--van-ease-in:ease-in;--van-border-color:var(--van-gray-3);--van-border-width:1px;--van-radius-sm:2px;--van-radius-md:4px;--van-radius-lg:8px;--van-radius-max:999px}.van-theme-dark{--van-text-color:#f5f5f5;--van-text-color-2:#707070;--van-text-color-3:#4d4d4d;--van-border-color:#3a3a3c;--van-active-color:#3a3a3c;--van-background:#000;--van-background-2:#1c1c1e;--van-background-3:#37363b}html{-webkit-tap-highlight-color:transparent}body{margin:0;font-family:var(--van-base-font)}a{text-decoration:none}input,button,textarea{color:inherit;font:inherit}a:focus,input:focus,button:focus,textarea:focus,[class*=van-]:focus{outline:none}ol,ul{margin:0;padding:0;list-style:none}@keyframes van-slide-up-enter{0%{transform:translate3d(0,100%,0)}}@keyframes van-slide-up-leave{to{transform:translate3d(0,100%,0)}}@keyframes van-slide-down-enter{0%{transform:translate3d(0,-100%,0)}}@keyframes van-slide-down-leave{to{transform:translate3d(0,-100%,0)}}@keyframes van-slide-left-enter{0%{transform:translate3d(-100%,0,0)}}@keyframes van-slide-left-leave{to{transform:translate3d(-100%,0,0)}}@keyframes van-slide-right-enter{0%{transform:translate3d(100%,0,0)}}@keyframes van-slide-right-leave{to{transform:translate3d(100%,0,0)}}@keyframes van-fade-in{0%{opacity:0}to{opacity:1}}@keyframes van-fade-out{0%{opacity:1}to{opacity:0}}@keyframes van-rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.van-fade-enter-active{animation:var(--van-duration-base)van-fade-in both var(--van-ease-out)}.van-fade-leave-active{animation:var(--van-duration-base)van-fade-out both var(--van-ease-in)}.van-slide-up-enter-active{animation:van-slide-up-enter var(--van-duration-base)both var(--van-ease-out)}.van-slide-up-leave-active{animation:van-slide-up-leave var(--van-duration-base)both var(--van-ease-in)}.van-slide-down-enter-active{animation:van-slide-down-enter var(--van-duration-base)both var(--van-ease-out)}.van-slide-down-leave-active{animation:van-slide-down-leave var(--van-duration-base)both var(--van-ease-in)}.van-slide-left-enter-active{animation:van-slide-left-enter var(--van-duration-base)both var(--van-ease-out)}.van-slide-left-leave-active{animation:van-slide-left-leave var(--van-duration-base)both var(--van-ease-in)}.van-slide-right-enter-active{animation:van-slide-right-enter var(--van-duration-base)both var(--van-ease-out)}.van-slide-right-leave-active{animation:van-slide-right-leave var(--van-duration-base)both var(--van-ease-in)}.van-clearfix:after{display:table;clear:both;content:""}.van-ellipsis{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.van-multi-ellipsis--l2{display:-webkit-box;overflow:hidden;text-overflow:ellipsis;-webkit-line-clamp:2;line-break:anywhere;-webkit-box-orient:vertical}.van-multi-ellipsis--l3{display:-webkit-box;overflow:hidden;text-overflow:ellipsis;-webkit-line-clamp:3;line-break:anywhere;-webkit-box-orient:vertical}.van-safe-area-top{padding-top:constant(safe-area-inset-top);padding-top:env(safe-area-inset-top)}.van-safe-area-bottom{padding-bottom:constant(safe-area-inset-bottom);padding-bottom:env(safe-area-inset-bottom)}.van-haptics-feedback{cursor:pointer}.van-haptics-feedback:active{opacity:var(--van-active-opacity)}[class*=van-hairline]:after{position:absolute;box-sizing:border-box;content:" ";pointer-events:none;top:-50%;right:-50%;bottom:-50%;left:-50%;border:0 solid var(--van-border-color);transform:scale(.5)}.van-hairline,.van-hairline--top,.van-hairline--left,.van-hairline--right,.van-hairline--bottom,.van-hairline--surround,.van-hairline--top-bottom{position:relative}.van-hairline--top:after{border-top-width:var(--van-border-width)}.van-hairline--left:after{border-left-width:var(--van-border-width)}.van-hairline--right:after{border-right-width:var(--van-border-width)}.van-hairline--bottom:after{border-bottom-width:var(--van-border-width)}.van-hairline--top-bottom:after,.van-hairline-unset--top-bottom:after{border-width:var(--van-border-width)0 var(--van-border-width)}.van-hairline--surround:after{border-width:var(--van-border-width)}:root,:host{--van-action-bar-background:var(--van-background-2);--van-action-bar-height:50px}.van-action-bar{position:fixed;right:0;bottom:0;left:0;display:flex;align-items:center;box-sizing:content-box;height:var(--van-action-bar-height);background:var(--van-action-bar-background)}:root,:host{--van-badge-size:16px;--van-badge-color:var(--van-white);--van-badge-padding:0 3px;--van-badge-font-size:var(--van-font-size-sm);--van-badge-font-weight:var(--van-font-bold);--van-badge-border-width:var(--van-border-width);--van-badge-background:var(--van-danger-color);--van-badge-dot-color:var(--van-danger-color);--van-badge-dot-size:8px;--van-badge-font:-apple-system-font, helvetica neue, arial, sans-serif}.van-badge{display:inline-block;box-sizing:border-box;min-width:var(--van-badge-size);padding:var(--van-badge-padding);color:var(--van-badge-color);font-weight:var(--van-badge-font-weight);font-size:var(--van-badge-font-size);font-family:var(--van-badge-font);line-height:1.2;text-align:center;background:var(--van-badge-background);border:var(--van-badge-border-width)solid var(--van-background-2);border-radius:var(--van-radius-max)}.van-badge--fixed{position:absolute;transform-origin:100%}.van-badge--top-left{top:0;left:0;transform:translate(-50%,-50%)}.van-badge--top-right{top:0;right:0;transform:translate(50%,-50%)}.van-badge--bottom-left{bottom:0;left:0;transform:translate(-50%,50%)}.van-badge--bottom-right{bottom:0;right:0;transform:translate(50%,50%)}.van-badge--dot{width:var(--van-badge-dot-size);min-width:0;height:var(--van-badge-dot-size);background:var(--van-badge-dot-color);border-radius:100%;border:none;padding:0}.van-badge__wrapper{position:relative;display:inline-block}.van-icon{position:relative;display:inline-block;font:normal normal normal 14px/1 "vant-icon";font:normal normal normal 14px/1 var(--van-icon-font-family,"vant-icon");font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased}.van-icon:before{display:inline-block}.van-icon-arrow-double-left:before{content:""}.van-icon-arrow-double-right:before{content:""}.van-icon-contact:before{content:""}.van-icon-notes:before{content:""}.van-icon-records:before{content:""}.van-icon-cash-back-record:before{content:""}.van-icon-newspaper:before{content:""}.van-icon-discount:before{content:""}.van-icon-completed:before{content:""}.van-icon-user:before{content:""}.van-icon-description:before{content:""}.van-icon-list-switch:before{content:""}.van-icon-list-switching:before{content:""}.van-icon-link-o:before{content:""}.van-icon-miniprogram-o:before{content:""}.van-icon-qq:before{content:""}.van-icon-wechat-moments:before{content:""}.van-icon-weibo:before{content:""}.van-icon-cash-o:before{content:""}.van-icon-guide-o:before{content:""}.van-icon-invitation:before{content:""}.van-icon-shield-o:before{content:""}.van-icon-exchange:before{content:""}.van-icon-eye:before{content:""}.van-icon-enlarge:before{content:""}.van-icon-expand-o:before{content:""}.van-icon-eye-o:before{content:""}.van-icon-expand:before{content:""}.van-icon-filter-o:before{content:""}.van-icon-fire:before{content:""}.van-icon-fail:before{content:""}.van-icon-failure:before{content:""}.van-icon-fire-o:before{content:""}.van-icon-flag-o:before{content:""}.van-icon-font:before{content:""}.van-icon-font-o:before{content:""}.van-icon-gem-o:before{content:""}.van-icon-flower-o:before{content:""}.van-icon-gem:before{content:""}.van-icon-gift-card:before{content:""}.van-icon-friends:before{content:""}.van-icon-friends-o:before{content:""}.van-icon-gold-coin:before{content:""}.van-icon-gold-coin-o:before{content:""}.van-icon-good-job-o:before{content:""}.van-icon-gift:before{content:""}.van-icon-gift-o:before{content:""}.van-icon-gift-card-o:before{content:""}.van-icon-good-job:before{content:""}.van-icon-home-o:before{content:""}.van-icon-goods-collect:before{content:""}.van-icon-graphic:before{content:""}.van-icon-goods-collect-o:before{content:""}.van-icon-hot-o:before{content:""}.van-icon-info:before{content:""}.van-icon-hotel-o:before{content:""}.van-icon-info-o:before{content:""}.van-icon-hot-sale-o:before{content:""}.van-icon-hot:before{content:""}.van-icon-like:before{content:""}.van-icon-idcard:before{content:""}.van-icon-like-o:before{content:""}.van-icon-hot-sale:before{content:""}.van-icon-location-o:before{content:""}.van-icon-location:before{content:""}.van-icon-label:before{content:""}.van-icon-lock:before{content:""}.van-icon-label-o:before{content:""}.van-icon-map-marked:before{content:""}.van-icon-logistics:before{content:""}.van-icon-manager:before{content:""}.van-icon-more:before{content:""}.van-icon-live:before{content:""}.van-icon-manager-o:before{content:""}.van-icon-medal:before{content:""}.van-icon-more-o:before{content:""}.van-icon-music-o:before{content:""}.van-icon-music:before{content:""}.van-icon-new-arrival-o:before{content:""}.van-icon-medal-o:before{content:""}.van-icon-new-o:before{content:""}.van-icon-free-postage:before{content:""}.van-icon-newspaper-o:before{content:""}.van-icon-new-arrival:before{content:""}.van-icon-minus:before{content:""}.van-icon-orders-o:before{content:""}.van-icon-new:before{content:""}.van-icon-paid:before{content:""}.van-icon-notes-o:before{content:""}.van-icon-other-pay:before{content:""}.van-icon-pause-circle:before{content:""}.van-icon-pause:before{content:""}.van-icon-pause-circle-o:before{content:""}.van-icon-peer-pay:before{content:""}.van-icon-pending-payment:before{content:""}.van-icon-passed:before{content:""}.van-icon-plus:before{content:""}.van-icon-phone-circle-o:before{content:""}.van-icon-phone-o:before{content:""}.van-icon-printer:before{content:""}.van-icon-photo-fail:before{content:""}.van-icon-phone:before{content:""}.van-icon-photo-o:before{content:""}.van-icon-play-circle:before{content:""}.van-icon-play:before{content:""}.van-icon-phone-circle:before{content:""}.van-icon-point-gift-o:before{content:""}.van-icon-point-gift:before{content:""}.van-icon-play-circle-o:before{content:""}.van-icon-shrink:before{content:""}.van-icon-photo:before{content:""}.van-icon-qr:before{content:""}.van-icon-qr-invalid:before{content:""}.van-icon-question-o:before{content:""}.van-icon-revoke:before{content:""}.van-icon-replay:before{content:""}.van-icon-service:before{content:""}.van-icon-question:before{content:""}.van-icon-search:before{content:""}.van-icon-refund-o:before{content:""}.van-icon-service-o:before{content:""}.van-icon-scan:before{content:""}.van-icon-share:before{content:""}.van-icon-send-gift-o:before{content:""}.van-icon-share-o:before{content:""}.van-icon-setting:before{content:""}.van-icon-points:before{content:""}.van-icon-photograph:before{content:""}.van-icon-shop:before{content:""}.van-icon-shop-o:before{content:""}.van-icon-shop-collect-o:before{content:""}.van-icon-shop-collect:before{content:""}.van-icon-smile:before{content:""}.van-icon-shopping-cart-o:before{content:""}.van-icon-sign:before{content:""}.van-icon-sort:before{content:""}.van-icon-star-o:before{content:""}.van-icon-smile-comment-o:before{content:""}.van-icon-stop:before{content:""}.van-icon-stop-circle-o:before{content:""}.van-icon-smile-o:before{content:""}.van-icon-star:before{content:""}.van-icon-success:before{content:""}.van-icon-stop-circle:before{content:""}.van-icon-records-o:before{content:""}.van-icon-shopping-cart:before{content:""}.van-icon-tosend:before{content:""}.van-icon-todo-list:before{content:""}.van-icon-thumb-circle-o:before{content:""}.van-icon-thumb-circle:before{content:""}.van-icon-umbrella-circle:before{content:""}.van-icon-underway:before{content:""}.van-icon-upgrade:before{content:""}.van-icon-todo-list-o:before{content:""}.van-icon-tv-o:before{content:""}.van-icon-underway-o:before{content:""}.van-icon-user-o:before{content:""}.van-icon-vip-card-o:before{content:""}.van-icon-vip-card:before{content:""}.van-icon-send-gift:before{content:""}.van-icon-wap-home:before{content:""}.van-icon-wap-nav:before{content:""}.van-icon-volume-o:before{content:""}.van-icon-video:before{content:""}.van-icon-wap-home-o:before{content:""}.van-icon-volume:before{content:""}.van-icon-warning:before{content:""}.van-icon-weapp-nav:before{content:""}.van-icon-wechat-pay:before{content:""}.van-icon-warning-o:before{content:""}.van-icon-wechat:before{content:""}.van-icon-setting-o:before{content:""}.van-icon-youzan-shield:before{content:""}.van-icon-warn-o:before{content:""}.van-icon-smile-comment:before{content:""}.van-icon-user-circle-o:before{content:""}.van-icon-video-o:before{content:""}.van-icon-add-square:before{content:""}.van-icon-add:before{content:""}.van-icon-arrow-down:before{content:""}.van-icon-arrow-up:before{content:""}.van-icon-arrow:before{content:""}.van-icon-after-sale:before{content:""}.van-icon-add-o:before{content:""}.van-icon-alipay:before{content:""}.van-icon-ascending:before{content:""}.van-icon-apps-o:before{content:""}.van-icon-aim:before{content:""}.van-icon-award:before{content:""}.van-icon-arrow-left:before{content:""}.van-icon-award-o:before{content:""}.van-icon-audio:before{content:""}.van-icon-bag-o:before{content:""}.van-icon-balance-list:before{content:""}.van-icon-back-top:before{content:""}.van-icon-bag:before{content:""}.van-icon-balance-pay:before{content:""}.van-icon-balance-o:before{content:""}.van-icon-bar-chart-o:before{content:""}.van-icon-bars:before{content:""}.van-icon-balance-list-o:before{content:""}.van-icon-birthday-cake-o:before{content:""}.van-icon-bookmark:before{content:""}.van-icon-bill:before{content:""}.van-icon-bell:before{content:""}.van-icon-browsing-history-o:before{content:""}.van-icon-browsing-history:before{content:""}.van-icon-bookmark-o:before{content:""}.van-icon-bulb-o:before{content:""}.van-icon-bullhorn-o:before{content:""}.van-icon-bill-o:before{content:""}.van-icon-calendar-o:before{content:""}.van-icon-brush-o:before{content:""}.van-icon-card:before{content:""}.van-icon-cart-o:before{content:""}.van-icon-cart-circle:before{content:""}.van-icon-cart-circle-o:before{content:""}.van-icon-cart:before{content:""}.van-icon-cash-on-deliver:before{content:""}.van-icon-cash-back-record-o:before{content:""}.van-icon-cashier-o:before{content:""}.van-icon-chart-trending-o:before{content:""}.van-icon-certificate:before{content:""}.van-icon-chat:before{content:""}.van-icon-clear:before{content:""}.van-icon-chat-o:before{content:""}.van-icon-checked:before{content:""}.van-icon-clock:before{content:""}.van-icon-clock-o:before{content:""}.van-icon-close:before{content:""}.van-icon-closed-eye:before{content:""}.van-icon-circle:before{content:""}.van-icon-cluster-o:before{content:""}.van-icon-column:before{content:""}.van-icon-comment-circle-o:before{content:""}.van-icon-cluster:before{content:""}.van-icon-comment:before{content:""}.van-icon-comment-o:before{content:""}.van-icon-comment-circle:before{content:""}.van-icon-completed-o:before{content:""}.van-icon-credit-pay:before{content:""}.van-icon-coupon:before{content:""}.van-icon-debit-pay:before{content:""}.van-icon-coupon-o:before{content:""}.van-icon-contact-o:before{content:""}.van-icon-descending:before{content:""}.van-icon-desktop-o:before{content:""}.van-icon-diamond-o:before{content:""}.van-icon-description-o:before{content:""}.van-icon-delete:before{content:""}.van-icon-diamond:before{content:""}.van-icon-delete-o:before{content:""}.van-icon-cross:before{content:""}.van-icon-edit:before{content:""}.van-icon-ellipsis:before{content:""}.van-icon-down:before{content:""}.van-icon-discount-o:before{content:""}.van-icon-ecard-pay:before{content:""}.van-icon-envelop-o:before{content:""}@font-face{font-weight:400;font-family:"vant-icon";font-style:normal;font-display:auto;src:url(data:font/woff2;charset=utf-8;base64,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)format("woff2"),url(//at.alicdn.com/t/c/font_2553510_ciljc7axaw7.woff?t=1705587463221)format("woff")}.van-icon__image{display:block;width:1em;height:1em;object-fit:contain}:root,:host{--van-skeleton-image-size:96px;--van-skeleton-image-radius:24px}.van-skeleton-image{display:flex;width:var(--van-skeleton-image-size);height:var(--van-skeleton-image-size);align-items:center;justify-content:center;background:var(--van-active-color)}.van-skeleton-image--round{border-radius:var(--van-skeleton-image-radius)}.van-skeleton-image__icon{width:calc(.5*var(--van-skeleton-image-size));height:calc(.5*var(--van-skeleton-image-size));font-size:calc(.5*var(--van-skeleton-image-size));color:var(--van-gray-5)}:root,:host{--van-rate-icon-size:20px;--van-rate-icon-gutter:var(--van-padding-base);--van-rate-icon-void-color:var(--van-gray-5);--van-rate-icon-full-color:var(--van-danger-color);--van-rate-icon-disabled-color:var(--van-gray-5)}.van-rate{display:inline-flex;cursor:pointer;-webkit-user-select:none;user-select:none;flex-wrap:wrap}.van-rate__item{position:relative}.van-rate__item:not(:last-child){padding-right:var(--van-rate-icon-gutter)}.van-rate__icon{display:block;width:1em;color:var(--van-rate-icon-void-color);font-size:var(--van-rate-icon-size)}.van-rate__icon--half{position:absolute;top:0;left:0;overflow:hidden;pointer-events:none}.van-rate__icon--full{color:var(--van-rate-icon-full-color)}.van-rate__icon--disabled{color:var(--van-rate-icon-disabled-color)}.van-rate--disabled{cursor:not-allowed}.van-rate--readonly{cursor:default}:root,:host{--van-notice-bar-height:40px;--van-notice-bar-padding:0 var(--van-padding-md);--van-notice-bar-wrapable-padding:var(--van-padding-xs) var(--van-padding-md);--van-notice-bar-text-color:var(--van-orange-dark);--van-notice-bar-font-size:var(--van-font-size-md);--van-notice-bar-line-height:24px;--van-notice-bar-background:var(--van-orange-light);--van-notice-bar-icon-size:16px;--van-notice-bar-icon-min-width:24px}.van-notice-bar{position:relative;display:flex;align-items:center;height:var(--van-notice-bar-height);padding:var(--van-notice-bar-padding);color:var(--van-notice-bar-text-color);font-size:var(--van-notice-bar-font-size);line-height:var(--van-notice-bar-line-height);background:var(--van-notice-bar-background)}.van-notice-bar__left-icon,.van-notice-bar__right-icon{min-width:var(--van-notice-bar-icon-min-width);font-size:var(--van-notice-bar-icon-size)}.van-notice-bar__right-icon{text-align:right;cursor:pointer}.van-notice-bar__wrap{position:relative;display:flex;flex:1;align-items:center;height:100%;overflow:hidden}.van-notice-bar__content{position:absolute;white-space:nowrap;transition-timing-function:linear}.van-notice-bar__content.van-ellipsis{max-width:100%}.van-notice-bar--wrapable{height:auto;padding:var(--van-notice-bar-wrapable-padding)}.van-notice-bar--wrapable .van-notice-bar__wrap{height:auto}.van-notice-bar--wrapable .van-notice-bar__content{position:relative;white-space:normal;word-wrap:break-word}:root,:host{--van-nav-bar-height:46px;--van-nav-bar-background:var(--van-background-2);--van-nav-bar-arrow-size:16px;--van-nav-bar-icon-color:var(--van-primary-color);--van-nav-bar-text-color:var(--van-primary-color);--van-nav-bar-title-font-size:var(--van-font-size-lg);--van-nav-bar-title-text-color:var(--van-text-color);--van-nav-bar-z-index:1;--van-nav-bar-disabled-opacity:var(--van-disabled-opacity)}.van-nav-bar{position:relative;z-index:var(--van-nav-bar-z-index);line-height:var(--van-line-height-lg);text-align:center;background:var(--van-nav-bar-background);-webkit-user-select:none;user-select:none}.van-nav-bar--fixed{position:fixed;top:0;left:0;width:100%}.van-nav-bar--safe-area-inset-top{padding-top:constant(safe-area-inset-top);padding-top:env(safe-area-inset-top)}.van-nav-bar .van-icon{color:var(--van-nav-bar-icon-color)}.van-nav-bar__content{position:relative;display:flex;align-items:center;height:var(--van-nav-bar-height)}.van-nav-bar__arrow{margin-right:var(--van-padding-base);font-size:var(--van-nav-bar-arrow-size)}.van-nav-bar__title{max-width:60%;margin:0 auto;color:var(--van-nav-bar-title-text-color);font-weight:var(--van-font-bold);font-size:var(--van-nav-bar-title-font-size)}.van-nav-bar__left,.van-nav-bar__right{position:absolute;top:0;bottom:0;display:flex;align-items:center;padding:0 var(--van-padding-md);font-size:var(--van-font-size-md)}.van-nav-bar__left--disabled,.van-nav-bar__right--disabled{cursor:not-allowed;opacity:var(--van-nav-bar-disabled-opacity)}.van-nav-bar__left{left:0}.van-nav-bar__right{right:0}.van-nav-bar__text{color:var(--van-nav-bar-text-color)}:root,:host{--van-floating-bubble-size:48px;--van-floating-bubble-initial-gap:24px;--van-floating-bubble-icon-size:28px;--van-floating-bubble-background:var(--van-primary-color);--van-floating-bubble-color:var(--van-background-2);--van-floating-bubble-z-index:999;--van-floating-bubble-border-radius:var(--van-radius-max)}.van-floating-bubble{position:fixed;left:0;top:0;right:var(--van-floating-bubble-initial-gap);bottom:var(--van-floating-bubble-initial-gap);width:var(--van-floating-bubble-size);height:var(--van-floating-bubble-size);box-sizing:border-box;display:flex;justify-content:center;align-items:center;overflow:hidden;cursor:pointer;-webkit-user-select:none;user-select:none;touch-action:none;background:var(--van-floating-bubble-background);color:var(--van-floating-bubble-color);border-radius:var(--van-floating-bubble-border-radius);z-index:var(--van-floating-bubble-z-index);transition:transform var(--van-duration-base)}.van-floating-bubble:active{opacity:.8}.van-floating-bubble__icon{font-size:var(--van-floating-bubble-icon-size)}:root,:host{--van-image-placeholder-text-color:var(--van-text-color-2);--van-image-placeholder-font-size:var(--van-font-size-md);--van-image-placeholder-background:var(--van-background);--van-image-loading-icon-size:32px;--van-image-loading-icon-color:var(--van-gray-4);--van-image-error-icon-size:32px;--van-image-error-icon-color:var(--van-gray-4)}.van-image{position:relative;display:inline-block}.van-image--round{overflow:hidden;border-radius:var(--van-radius-max)}.van-image--round .van-image__img{border-radius:inherit}.van-image--block{display:block}.van-image__img,.van-image__error,.van-image__loading{display:block;width:100%;height:100%}.van-image__error,.van-image__loading{position:absolute;top:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--van-image-placeholder-text-color);font-size:var(--van-image-placeholder-font-size);background:var(--van-image-placeholder-background)}.van-image__loading-icon{color:var(--van-image-loading-icon-color);font-size:var(--van-image-loading-icon-size)}.van-image__error-icon{color:var(--van-image-error-icon-color);font-size:var(--van-image-error-icon-size)}:root,:host{--van-back-top-size:40px;--van-back-top-right:30px;--van-back-top-bottom:40px;--van-back-top-z-index:100;--van-back-top-icon-size:20px;--van-back-top-text-color:#fff;--van-back-top-background:var(--van-blue)}.van-back-top{position:fixed;display:flex;align-items:center;justify-content:center;width:var(--van-back-top-size);height:var(--van-back-top-size);right:var(--van-back-top-right);bottom:var(--van-back-top-bottom);z-index:var(--van-back-top-z-index);cursor:pointer;color:var(--van-back-top-text-color);border-radius:var(--van-radius-max);box-shadow:0 2px 8px 0 rgba(0,0,0,.12);transform:scale(0);transition:var(--van-duration-base)cubic-bezier(.25,.8,.5,1);background-color:var(--van-back-top-background)}.van-back-top:active{opacity:var(--van-active-opacity)}.van-back-top__placeholder{display:none}.van-back-top--active{transform:scale(1)}.van-back-top__icon{font-size:var(--van-back-top-icon-size);font-weight:var(--van-font-bold)}:root,:host{--van-tag-padding:0 var(--van-padding-base);--van-tag-text-color:var(--van-white);--van-tag-font-size:var(--van-font-size-sm);--van-tag-radius:2px;--van-tag-line-height:16px;--van-tag-medium-padding:2px 6px;--van-tag-large-padding:var(--van-padding-base) var(--van-padding-xs);--van-tag-large-radius:var(--van-radius-md);--van-tag-large-font-size:var(--van-font-size-md);--van-tag-round-radius:var(--van-radius-max);--van-tag-danger-color:var(--van-danger-color);--van-tag-primary-color:var(--van-primary-color);--van-tag-success-color:var(--van-success-color);--van-tag-warning-color:var(--van-warning-color);--van-tag-default-color:var(--van-gray-6);--van-tag-plain-background:var(--van-background-2)}.van-tag{position:relative;display:inline-flex;align-items:center;padding:var(--van-tag-padding);color:var(--van-tag-text-color);font-size:var(--van-tag-font-size);line-height:var(--van-tag-line-height);border-radius:var(--van-tag-radius)}.van-tag--default{background:var(--van-tag-default-color)}.van-tag--default.van-tag--plain{color:var(--van-tag-default-color)}.van-tag--danger{background:var(--van-tag-danger-color)}.van-tag--danger.van-tag--plain{color:var(--van-tag-danger-color)}.van-tag--primary{background:var(--van-tag-primary-color)}.van-tag--primary.van-tag--plain{color:var(--van-tag-primary-color)}.van-tag--success{background:var(--van-tag-success-color)}.van-tag--success.van-tag--plain{color:var(--van-tag-success-color)}.van-tag--warning{background:var(--van-tag-warning-color)}.van-tag--warning.van-tag--plain{color:var(--van-tag-warning-color)}.van-tag--plain{background:var(--van-tag-plain-background);border-color:currentColor}.van-tag--plain:before{position:absolute;top:0;right:0;bottom:0;left:0;border:1px solid;border-color:inherit;border-radius:inherit;content:"";pointer-events:none}.van-tag--medium{padding:var(--van-tag-medium-padding)}.van-tag--large{padding:var(--van-tag-large-padding);font-size:var(--van-tag-large-font-size);border-radius:var(--van-tag-large-radius)}.van-tag--mark{border-radius:0 var(--van-tag-round-radius)var(--van-tag-round-radius)0}.van-tag--mark:after{display:block;width:2px;content:""}.van-tag--round{border-radius:var(--van-tag-round-radius)}.van-tag__close{margin-left:2px}:root,:host{--van-card-padding:var(--van-padding-xs) var(--van-padding-md);--van-card-font-size:var(--van-font-size-sm);--van-card-text-color:var(--van-text-color);--van-card-background:var(--van-background);--van-card-thumb-size:88px;--van-card-thumb-radius:var(--van-radius-lg);--van-card-title-line-height:16px;--van-card-desc-color:var(--van-text-color-2);--van-card-desc-line-height:var(--van-line-height-md);--van-card-price-color:var(--van-text-color);--van-card-origin-price-color:var(--van-text-color-2);--van-card-num-color:var(--van-text-color-2);--van-card-origin-price-font-size:var(--van-font-size-xs);--van-card-price-font-size:var(--van-font-size-sm);--van-card-price-integer-font-size:var(--van-font-size-lg);--van-card-price-font:var(--van-price-font)}.van-card{position:relative;box-sizing:border-box;padding:var(--van-card-padding);color:var(--van-card-text-color);font-size:var(--van-card-font-size);background:var(--van-card-background)}.van-card:not(:first-child){margin-top:var(--van-padding-xs)}.van-card__header{display:flex}.van-card__thumb{position:relative;flex:none;width:var(--van-card-thumb-size);height:var(--van-card-thumb-size);margin-right:var(--van-padding-xs)}.van-card__thumb img{border-radius:var(--van-card-thumb-radius)}.van-card__content{position:relative;display:flex;flex:1;flex-direction:column;justify-content:space-between;min-width:0;min-height:var(--van-card-thumb-size)}.van-card__content--centered{justify-content:center}.van-card__title,.van-card__desc{word-wrap:break-word}.van-card__title{max-height:32px;font-weight:var(--van-font-bold);line-height:var(--van-card-title-line-height)}.van-card__desc{max-height:var(--van-card-desc-line-height);color:var(--van-card-desc-color);line-height:var(--van-card-desc-line-height)}.van-card__bottom{line-height:var(--van-line-height-md)}.van-card__price{display:inline-block;color:var(--van-card-price-color);font-weight:var(--van-font-bold);font-size:var(--van-card-price-font-size)}.van-card__price-integer{font-size:var(--van-card-price-integer-font-size);font-family:var(--van-card-price-font)}.van-card__price-decimal{font-family:var(--van-card-price-font)}.van-card__origin-price{display:inline-block;margin-left:5px;color:var(--van-card-origin-price-color);font-size:var(--van-card-origin-price-font-size);text-decoration:line-through}.van-card__num{float:right;color:var(--van-card-num-color)}.van-card__tag{position:absolute;top:2px;left:0}.van-card__footer{flex:none;text-align:right}.van-card__footer .van-button{margin-left:5px}:root,:host{--van-cell-font-size:var(--van-font-size-md);--van-cell-line-height:24px;--van-cell-vertical-padding:10px;--van-cell-horizontal-padding:var(--van-padding-md);--van-cell-text-color:var(--van-text-color);--van-cell-background:var(--van-background-2);--van-cell-border-color:var(--van-border-color);--van-cell-active-color:var(--van-active-color);--van-cell-required-color:var(--van-danger-color);--van-cell-label-color:var(--van-text-color-2);--van-cell-label-font-size:var(--van-font-size-sm);--van-cell-label-line-height:var(--van-line-height-sm);--van-cell-label-margin-top:var(--van-padding-base);--van-cell-value-color:var(--van-text-color-2);--van-cell-value-font-size:inherit;--van-cell-icon-size:16px;--van-cell-right-icon-color:var(--van-gray-6);--van-cell-large-vertical-padding:var(--van-padding-sm);--van-cell-large-title-font-size:var(--van-font-size-lg);--van-cell-large-label-font-size:var(--van-font-size-md);--van-cell-large-value-font-size:inherit}.van-cell{position:relative;display:flex;box-sizing:border-box;width:100%;padding:var(--van-cell-vertical-padding)var(--van-cell-horizontal-padding);overflow:hidden;color:var(--van-cell-text-color);font-size:var(--van-cell-font-size);line-height:var(--van-cell-line-height);background:var(--van-cell-background)}.van-cell:after{position:absolute;box-sizing:border-box;content:" ";pointer-events:none;right:var(--van-padding-md);bottom:0;left:var(--van-padding-md);border-bottom:1px solid var(--van-cell-border-color);transform:scaley(.5)}.van-cell:last-child:after,.van-cell--borderless:after{display:none}.van-cell__label{margin-top:var(--van-cell-label-margin-top);color:var(--van-cell-label-color);font-size:var(--van-cell-label-font-size);line-height:var(--van-cell-label-line-height)}.van-cell__title,.van-cell__value{flex:1}.van-cell__value{position:relative;overflow:hidden;color:var(--van-cell-value-color);font-size:var(--van-cell-value-font-size);text-align:right;vertical-align:middle;word-wrap:break-word}.van-cell__left-icon,.van-cell__right-icon{height:var(--van-cell-line-height);font-size:var(--van-cell-icon-size);line-height:var(--van-cell-line-height)}.van-cell__left-icon{margin-right:var(--van-padding-base)}.van-cell__right-icon{margin-left:var(--van-padding-base);color:var(--van-cell-right-icon-color)}.van-cell--clickable{cursor:pointer}.van-cell--clickable:active{background-color:var(--van-cell-active-color)}.van-cell--required{overflow:visible}.van-cell--required:before{position:absolute;left:var(--van-padding-xs);color:var(--van-cell-required-color);font-size:var(--van-cell-font-size);content:"*"}.van-cell--center{align-items:center}.van-cell--large{padding-top:var(--van-cell-large-vertical-padding);padding-bottom:var(--van-cell-large-vertical-padding)}.van-cell--large .van-cell__title{font-size:var(--van-cell-large-title-font-size)}.van-cell--large .van-cell__label{font-size:var(--van-cell-large-label-font-size)}.van-cell--large .van-cell__value{font-size:var(--van-cell-large-value-font-size)}:root,:host{--van-coupon-cell-selected-text-color:var(--van-text-color)}.van-coupon-cell__value--selected{color:var(--van-coupon-cell-selected-text-color)}:root,:host{--van-contact-card-padding:var(--van-padding-md);--van-contact-card-add-icon-size:40px;--van-contact-card-add-icon-color:var(--van-primary-color);--van-contact-card-title-line-height:var(--van-line-height-md)}.van-contact-card{padding:var(--van-contact-card-padding)}.van-contact-card__title{margin-left:5px;line-height:var(--van-contact-card-title-line-height)}.van-contact-card--add .van-contact-card__value{line-height:var(--van-contact-card-add-icon-size)}.van-contact-card--add .van-cell__left-icon{color:var(--van-contact-card-add-icon-color);font-size:var(--van-contact-card-add-icon-size)}.van-contact-card:before{position:absolute;right:0;bottom:0;left:0;height:2px;background:repeating-linear-gradient(315deg,var(--van-warning-color)0,var(--van-warning-color)20%,transparent 0,transparent 25%,var(--van-primary-color)0,var(--van-primary-color)45%,transparent 0,transparent 50%);background-size:80px;content:""}:root,:host{--van-collapse-item-duration:var(--van-duration-base);--van-collapse-item-content-padding:var(--van-padding-sm) var(--van-padding-md);--van-collapse-item-content-font-size:var(--van-font-size-md);--van-collapse-item-content-line-height:1.5;--van-collapse-item-content-text-color:var(--van-text-color-2);--van-collapse-item-content-background:var(--van-background-2);--van-collapse-item-title-disabled-color:var(--van-text-color-3)}.van-collapse-item{position:relative}.van-collapse-item--border:after{position:absolute;box-sizing:border-box;content:" ";pointer-events:none;top:0;right:var(--van-padding-md);left:var(--van-padding-md);border-top:1px solid var(--van-border-color);transform:scaley(.5)}.van-collapse-item__title .van-cell__right-icon:before{transform:rotate(90deg)translatez(0);transition:transform var(--van-collapse-item-duration)}.van-collapse-item__title:after{right:var(--van-padding-md);display:none}.van-collapse-item__title--expanded .van-cell__right-icon:before{transform:rotate(270deg)}.van-collapse-item__title--expanded:after{display:block}.van-collapse-item__title--borderless:after{display:none}.van-collapse-item__title--disabled{cursor:not-allowed}.van-collapse-item__title--disabled,.van-collapse-item__title--disabled .van-cell__right-icon{color:var(--van-collapse-item-title-disabled-color)}.van-collapse-item__wrapper{overflow:hidden;transition:height var(--van-collapse-item-duration)ease-in-out;will-change:height}.van-collapse-item__content{padding:var(--van-collapse-item-content-padding);color:var(--van-collapse-item-content-text-color);font-size:var(--van-collapse-item-content-font-size);line-height:var(--van-collapse-item-content-line-height);background:var(--van-collapse-item-content-background)}:root,:host{--van-field-label-width:6.2em;--van-field-label-color:var(--van-text-color);--van-field-label-margin-right:var(--van-padding-sm);--van-field-input-text-color:var(--van-text-color);--van-field-input-error-text-color:var(--van-danger-color);--van-field-input-disabled-text-color:var(--van-text-color-3);--van-field-placeholder-text-color:var(--van-text-color-3);--van-field-icon-size:18px;--van-field-clear-icon-size:18px;--van-field-clear-icon-color:var(--van-gray-5);--van-field-right-icon-color:var(--van-gray-6);--van-field-error-message-color:var(--van-danger-color);--van-field-error-message-font-size:12px;--van-field-text-area-min-height:60px;--van-field-word-limit-color:var(--van-gray-7);--van-field-word-limit-font-size:var(--van-font-size-sm);--van-field-word-limit-line-height:16px;--van-field-disabled-text-color:var(--van-text-color-3);--van-field-required-mark-color:var(--van-red)}.van-field{flex-wrap:wrap}.van-field__label{flex:none;box-sizing:border-box;width:var(--van-field-label-width);margin-right:var(--van-field-label-margin-right);color:var(--van-field-label-color);text-align:left;word-wrap:break-word}.van-field__label--center{text-align:center}.van-field__label--right{text-align:right}.van-field__label--top{display:flex;width:100%;text-align:left;margin-bottom:var(--van-padding-base);overflow-wrap:break-word}.van-field__label--required:before{margin-right:2px;color:var(--van-field-required-mark-color);content:"*"}.van-field--disabled .van-field__label{color:var(--van-field-disabled-text-color)}.van-field__value{overflow:visible}.van-field__body{display:flex;align-items:center}.van-field__control{display:block;box-sizing:border-box;width:100%;min-width:0;margin:0;padding:0;color:var(--van-field-input-text-color);line-height:inherit;text-align:left;background-color:transparent;border:0;resize:none;-webkit-user-select:auto;user-select:auto}.van-field__control::-webkit-input-placeholder{color:var(--van-field-placeholder-text-color)}.van-field__control::placeholder{color:var(--van-field-placeholder-text-color)}.van-field__control:read-only{cursor:default}.van-field__control:disabled{color:var(--van-field-input-disabled-text-color);cursor:not-allowed;opacity:1;-webkit-text-fill-color:var(--van-field-input-disabled-text-color)}.van-field__control--center{justify-content:center;text-align:center}.van-field__control--right{justify-content:flex-end;text-align:right}.van-field__control--custom{display:flex;align-items:center;min-height:var(--van-cell-line-height)}.van-field__control--error::-webkit-input-placeholder{color:var(--van-field-input-error-text-color);-webkit-text-fill-color:currentColor}.van-field__control--error,.van-field__control--error::placeholder{color:var(--van-field-input-error-text-color);-webkit-text-fill-color:currentColor}.van-field__control--min-height{min-height:var(--van-field-text-area-min-height)}.van-field__control[type=date],.van-field__control[type=time],.van-field__control[type=datetime-local]{min-height:var(--van-cell-line-height)}.van-field__control[type=search]{-webkit-appearance:none}.van-field__clear,.van-field__icon,.van-field__button,.van-field__right-icon{flex-shrink:0}.van-field__clear,.van-field__right-icon{margin-right:calc(-1*var(--van-padding-xs));padding:0 var(--van-padding-xs);line-height:inherit}.van-field__clear{color:var(--van-field-clear-icon-color);font-size:var(--van-field-clear-icon-size);cursor:pointer}.van-field__left-icon .van-icon,.van-field__right-icon .van-icon{display:block;font-size:var(--van-field-icon-size);line-height:inherit}.van-field__left-icon{margin-right:var(--van-padding-base)}.van-field__right-icon{color:var(--van-field-right-icon-color)}.van-field__button{padding-left:var(--van-padding-xs)}.van-field__error-message{color:var(--van-field-error-message-color);font-size:var(--van-field-error-message-font-size);text-align:left}.van-field__error-message--center{text-align:center}.van-field__error-message--right{text-align:right}.van-field__word-limit{margin-top:var(--van-padding-base);color:var(--van-field-word-limit-color);font-size:var(--van-field-word-limit-font-size);line-height:var(--van-field-word-limit-line-height);text-align:right}:root,:host{--van-search-padding:10px var(--van-padding-sm);--van-search-background:var(--van-background-2);--van-search-content-background:var(--van-background);--van-search-input-height:34px;--van-search-label-padding:0 5px;--van-search-label-color:var(--van-text-color);--van-search-label-font-size:var(--van-font-size-md);--van-search-left-icon-color:var(--van-gray-6);--van-search-action-padding:0 var(--van-padding-xs);--van-search-action-text-color:var(--van-text-color);--van-search-action-font-size:var(--van-font-size-md)}.van-search{display:flex;align-items:center;box-sizing:border-box;padding:var(--van-search-padding);background:var(--van-search-background)}.van-search__content{display:flex;flex:1;padding-left:var(--van-padding-sm);background:var(--van-search-content-background);border-radius:var(--van-radius-sm)}.van-search__content--round{border-radius:var(--van-radius-max)}.van-search__label{padding:var(--van-search-label-padding);color:var(--van-search-label-color);font-size:var(--van-search-label-font-size);line-height:var(--van-search-input-height)}.van-search__field{flex:1;align-items:center;padding:0 var(--van-padding-xs)0 0;height:var(--van-search-input-height);background-color:transparent}.van-search__field .van-field__left-icon{color:var(--van-search-left-icon-color)}.van-search__field--with-message{height:auto;align-items:flex-start;padding-top:5px;padding-bottom:5px}.van-search--show-action{padding-right:0}.van-search input::-webkit-search-decoration,.van-search input::-webkit-search-cancel-button,.van-search input::-webkit-search-results-button,.van-search input::-webkit-search-results-decoration{display:none}.van-search__action{padding:var(--van-search-action-padding);color:var(--van-search-action-text-color);font-size:var(--van-search-action-font-size);line-height:var(--van-search-input-height);cursor:pointer;-webkit-user-select:none;user-select:none}.van-search__action:active{background-color:var(--van-active-color)}:root,:host{--van-action-bar-icon-width:48px;--van-action-bar-icon-height:100%;--van-action-bar-icon-color:var(--van-text-color);--van-action-bar-icon-size:18px;--van-action-bar-icon-font-size:var(--van-font-size-xs);--van-action-bar-icon-active-color:var(--van-active-color);--van-action-bar-icon-text-color:var(--van-text-color);--van-action-bar-icon-background:var(--van-background-2)}.van-action-bar-icon{display:flex;flex-direction:column;justify-content:center;min-width:var(--van-action-bar-icon-width);height:var(--van-action-bar-icon-height);color:var(--van-action-bar-icon-text-color);font-size:var(--van-action-bar-icon-font-size);line-height:1;text-align:center;background:var(--van-action-bar-icon-background);cursor:pointer}.van-action-bar-icon:active{background-color:var(--van-action-bar-icon-active-color)}.van-action-bar-icon__icon{margin:0 auto var(--van-padding-base);color:var(--van-action-bar-icon-color);font-size:var(--van-action-bar-icon-size)}:root,:host{--van-loading-text-color:var(--van-text-color-2);--van-loading-text-font-size:var(--van-font-size-md);--van-loading-spinner-color:var(--van-gray-5);--van-loading-spinner-size:30px;--van-loading-spinner-duration:0.8s}.van-loading{position:relative;color:var(--van-loading-spinner-color);font-size:0;vertical-align:middle}.van-loading__spinner{position:relative;display:inline-block;width:var(--van-loading-spinner-size);max-width:100%;height:var(--van-loading-spinner-size);max-height:100%;vertical-align:middle;animation:van-rotate var(--van-loading-spinner-duration)linear infinite}.van-loading__spinner--spinner{animation-timing-function:steps(12)}.van-loading__spinner--circular{animation-duration:2s}.van-loading__line{position:absolute;top:0;left:0;width:100%;height:100%}.van-loading__line:before{display:block;width:2px;height:25%;margin:0 auto;background-color:currentColor;border-radius:40%;content:" "}.van-loading__circular{display:block;width:100%;height:100%}.van-loading__circular circle{animation:van-circular 1.5s ease-in-out infinite;stroke:currentColor;stroke-width:3;stroke-linecap:round}.van-loading__text{display:inline-block;margin-left:var(--van-padding-xs);color:var(--van-loading-text-color);font-size:var(--van-loading-text-font-size);vertical-align:middle}.van-loading--vertical{display:flex;flex-direction:column;align-items:center}.van-loading--vertical .van-loading__text{margin:var(--van-padding-xs)0 0}@keyframes van-circular{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40}to{stroke-dasharray:90,150;stroke-dashoffset:-120}}.van-loading__line--1{transform:rotate(30deg);opacity:1}.van-loading__line--2{transform:rotate(60deg);opacity:.9375}.van-loading__line--3{transform:rotate(90deg);opacity:.875}.van-loading__line--4{transform:rotate(120deg);opacity:.8125}.van-loading__line--5{transform:rotate(150deg);opacity:.75}.van-loading__line--6{transform:rotate(180deg);opacity:.6875}.van-loading__line--7{transform:rotate(210deg);opacity:.625}.van-loading__line--8{transform:rotate(240deg);opacity:.5625}.van-loading__line--9{transform:rotate(270deg);opacity:.5}.van-loading__line--10{transform:rotate(300deg);opacity:.4375}.van-loading__line--11{transform:rotate(330deg);opacity:.375}.van-loading__line--12{transform:rotate(0);opacity:.3125}:root,:host{--van-pull-refresh-head-height:50px;--van-pull-refresh-head-font-size:var(--van-font-size-md);--van-pull-refresh-head-text-color:var(--van-text-color-2);--van-pull-refresh-loading-icon-size:16px}.van-pull-refresh{overflow:hidden}.van-pull-refresh__track{position:relative;height:100%;transition-property:transform}.van-pull-refresh__head{position:absolute;left:0;width:100%;height:var(--van-pull-refresh-head-height);overflow:hidden;color:var(--van-pull-refresh-head-text-color);font-size:var(--van-pull-refresh-head-font-size);line-height:var(--van-pull-refresh-head-height);text-align:center;transform:translatey(-100%)}.van-pull-refresh__loading .van-loading__spinner{width:var(--van-pull-refresh-loading-icon-size);height:var(--van-pull-refresh-loading-icon-size)}:root,:host{--van-number-keyboard-background:var(--van-gray-2);--van-number-keyboard-key-height:48px;--van-number-keyboard-key-font-size:28px;--van-number-keyboard-key-active-color:var(--van-gray-3);--van-number-keyboard-key-background:var(--van-background-2);--van-number-keyboard-delete-font-size:var(--van-font-size-lg);--van-number-keyboard-title-color:var(--van-gray-7);--van-number-keyboard-title-height:34px;--van-number-keyboard-title-font-size:var(--van-font-size-lg);--van-number-keyboard-close-padding:0 var(--van-padding-md);--van-number-keyboard-close-color:var(--van-primary-color);--van-number-keyboard-close-font-size:var(--van-font-size-md);--van-number-keyboard-button-text-color:var(--van-white);--van-number-keyboard-button-background:var(--van-primary-color);--van-number-keyboard-z-index:100}.van-theme-dark{--van-number-keyboard-background:var(--van-gray-8);--van-number-keyboard-key-background:var(--van-gray-7);--van-number-keyboard-key-active-color:var(--van-gray-6)}.van-number-keyboard{position:fixed;bottom:0;left:0;z-index:var(--van-number-keyboard-z-index);width:100%;padding-bottom:22px;background:var(--van-number-keyboard-background);-webkit-user-select:none;user-select:none}.van-number-keyboard--with-title{border-radius:20px 20px 0 0}.van-number-keyboard__header{position:relative;display:flex;align-items:center;justify-content:center;box-sizing:content-box;height:var(--van-number-keyboard-title-height);padding-top:6px;color:var(--van-number-keyboard-title-color);font-size:var(--van-number-keyboard-title-font-size)}.van-number-keyboard__title{display:inline-block;font-weight:400}.van-number-keyboard__title-left{position:absolute;left:0}.van-number-keyboard__body{display:flex;padding:6px 0 0 6px}.van-number-keyboard__keys{display:flex;flex:3;flex-wrap:wrap}.van-number-keyboard__close{position:absolute;right:0;height:100%;padding:var(--van-number-keyboard-close-padding);color:var(--van-number-keyboard-close-color);font-size:var(--van-number-keyboard-close-font-size);background-color:transparent;border:none}.van-number-keyboard__sidebar{display:flex;flex:1;flex-direction:column}.van-number-keyboard--unfit{padding-bottom:0}.van-key{display:flex;align-items:center;justify-content:center;height:var(--van-number-keyboard-key-height);font-size:var(--van-number-keyboard-key-font-size);line-height:1.5;background:var(--van-number-keyboard-key-background);border-radius:var(--van-radius-lg);cursor:pointer}.van-key--large{position:absolute;top:0;right:6px;bottom:6px;left:0;height:auto}.van-key--blue,.van-key--delete{font-size:var(--van-number-keyboard-delete-font-size)}.van-key--active{background-color:var(--van-number-keyboard-key-active-color)}.van-key--blue{color:var(--van-number-keyboard-button-text-color);background:var(--van-number-keyboard-button-background)}.van-key--blue.van-key--active{opacity:var(--van-active-opacity)}.van-key__wrapper{position:relative;flex:1;flex-basis:33%;box-sizing:border-box;padding:0 6px 6px 0}.van-key__wrapper--wider{flex-basis:66%}.van-key__delete-icon{width:32px;height:22px}.van-key__collapse-icon{width:30px;height:24px}.van-key__loading-icon{color:var(--van-number-keyboard-button-text-color)}:root,:host{--van-list-text-color:var(--van-text-color-2);--van-list-text-font-size:var(--van-font-size-md);--van-list-text-line-height:50px;--van-list-loading-icon-size:16px}.van-list__loading,.van-list__finished-text,.van-list__error-text{color:var(--van-list-text-color);font-size:var(--van-list-text-font-size);line-height:var(--van-list-text-line-height);text-align:center}.van-list__placeholder{height:0;pointer-events:none}.van-list__loading-icon .van-loading__spinner{width:var(--van-list-loading-icon-size);height:var(--van-list-loading-icon-size)}:root,:host{--van-switch-size:26px;--van-switch-width:calc(1.8em + 4px);--van-switch-height:calc(1em + 4px);--van-switch-node-size:1em;--van-switch-node-background:var(--van-white);--van-switch-node-shadow:0 3px 1px 0 rgba(0, 0, 0, 0.05);--van-switch-background:rgba(120, 120, 128, 0.16);--van-switch-on-background:var(--van-primary-color);--van-switch-duration:var(--van-duration-base);--van-switch-disabled-opacity:var(--van-disabled-opacity)}.van-theme-dark{--van-switch-background:rgba(120, 120, 128, 0.32)}.van-switch{position:relative;display:inline-block;box-sizing:content-box;width:var(--van-switch-width);height:var(--van-switch-height);font-size:var(--van-switch-size);background:var(--van-switch-background);border-radius:var(--van-switch-node-size);cursor:pointer;transition:background-color var(--van-switch-duration)}.van-switch__node{position:absolute;top:2px;left:2px;width:var(--van-switch-node-size);height:var(--van-switch-node-size);font-size:inherit;background:var(--van-switch-node-background);border-radius:100%;box-shadow:var(--van-switch-node-shadow);transition:transform var(--van-switch-duration)cubic-bezier(.3,1.05,.4,1.05)}.van-switch__loading{top:25%;left:25%;width:50%;height:50%;line-height:1}.van-switch--on{background:var(--van-switch-on-background)}.van-switch--on .van-switch__node{transform:translatex(calc(-4px + var(--van-switch-width) - var(--van-switch-node-size)))}.van-switch--on .van-switch__loading{color:var(--van-switch-on-background)}.van-switch--disabled{cursor:not-allowed;opacity:var(--van-switch-disabled-opacity)}.van-switch--loading{cursor:default}:root,:host{--van-button-mini-height:24px;--van-button-mini-padding:0 var(--van-padding-base);--van-button-mini-font-size:var(--van-font-size-xs);--van-button-small-height:32px;--van-button-small-padding:0 var(--van-padding-xs);--van-button-small-font-size:var(--van-font-size-sm);--van-button-normal-padding:0 15px;--van-button-normal-font-size:var(--van-font-size-md);--van-button-large-height:50px;--van-button-default-height:44px;--van-button-default-line-height:1.2;--van-button-default-font-size:var(--van-font-size-lg);--van-button-default-color:var(--van-text-color);--van-button-default-background:var(--van-background-2);--van-button-default-border-color:var(--van-gray-4);--van-button-primary-color:var(--van-white);--van-button-primary-background:var(--van-primary-color);--van-button-primary-border-color:var(--van-primary-color);--van-button-success-color:var(--van-white);--van-button-success-background:var(--van-success-color);--van-button-success-border-color:var(--van-success-color);--van-button-danger-color:var(--van-white);--van-button-danger-background:var(--van-danger-color);--van-button-danger-border-color:var(--van-danger-color);--van-button-warning-color:var(--van-white);--van-button-warning-background:var(--van-warning-color);--van-button-warning-border-color:var(--van-warning-color);--van-button-border-width:var(--van-border-width);--van-button-radius:var(--van-radius-md);--van-button-round-radius:var(--van-radius-max);--van-button-plain-background:var(--van-white);--van-button-disabled-opacity:var(--van-disabled-opacity);--van-button-icon-size:1.2em;--van-button-loading-icon-size:20px}.van-theme-dark{--van-button-plain-background:transparent}.van-button{position:relative;display:inline-block;box-sizing:border-box;height:var(--van-button-default-height);margin:0;padding:0;font-size:var(--van-button-default-font-size);line-height:var(--van-button-default-line-height);text-align:center;border-radius:var(--van-button-radius);cursor:pointer;transition:opacity var(--van-duration-fast);-webkit-appearance:none;-webkit-font-smoothing:auto}.van-button:before{position:absolute;top:50%;left:50%;width:100%;height:100%;background:var(--van-black);border:inherit;border-color:var(--van-black);border-radius:inherit;transform:translate(-50%,-50%);opacity:0;content:" "}.van-button:active:before{opacity:.1}.van-button--loading:before,.van-button--disabled:before{display:none}.van-button--default{color:var(--van-button-default-color);background:var(--van-button-default-background);border:var(--van-button-border-width)solid var(--van-button-default-border-color)}.van-button--primary{color:var(--van-button-primary-color);background:var(--van-button-primary-background);border:var(--van-button-border-width)solid var(--van-button-primary-border-color)}.van-button--success{color:var(--van-button-success-color);background:var(--van-button-success-background);border:var(--van-button-border-width)solid var(--van-button-success-border-color)}.van-button--danger{color:var(--van-button-danger-color);background:var(--van-button-danger-background);border:var(--van-button-border-width)solid var(--van-button-danger-border-color)}.van-button--warning{color:var(--van-button-warning-color);background:var(--van-button-warning-background);border:var(--van-button-border-width)solid var(--van-button-warning-border-color)}.van-button--plain{background:var(--van-button-plain-background)}.van-button--plain.van-button--primary{color:var(--van-button-primary-background)}.van-button--plain.van-button--success{color:var(--van-button-success-background)}.van-button--plain.van-button--danger{color:var(--van-button-danger-background)}.van-button--plain.van-button--warning{color:var(--van-button-warning-background)}.van-button--large{width:100%;height:var(--van-button-large-height)}.van-button--normal{padding:var(--van-button-normal-padding);font-size:var(--van-button-normal-font-size)}.van-button--small{height:var(--van-button-small-height);padding:var(--van-button-small-padding);font-size:var(--van-button-small-font-size)}.van-button__loading{color:inherit;font-size:inherit}.van-button__loading .van-loading__spinner{color:currentColor;width:var(--van-button-loading-icon-size);height:var(--van-button-loading-icon-size)}.van-button--mini{height:var(--van-button-mini-height);padding:var(--van-button-mini-padding);font-size:var(--van-button-mini-font-size)}.van-button--mini+.van-button--mini{margin-left:var(--van-padding-base)}.van-button--block{display:block;width:100%}.van-button--disabled{cursor:not-allowed;opacity:var(--van-button-disabled-opacity)}.van-button--loading{cursor:default}.van-button--round{border-radius:var(--van-button-round-radius)}.van-button--square{border-radius:0}.van-button__content{display:flex;align-items:center;justify-content:center;height:100%}.van-button__content:before{content:" "}.van-button__icon{font-size:var(--van-button-icon-size);line-height:inherit}.van-button__icon+.van-button__text,.van-button__loading+.van-button__text,.van-button__text+.van-button__icon,.van-button__text+.van-button__loading{margin-left:var(--van-padding-base)}.van-button--hairline{border-width:0}.van-button--hairline:after{border-color:inherit;border-radius:calc(2*var(--van-button-radius))}.van-button--hairline.van-button--round:after{border-radius:var(--van-button-round-radius)}.van-button--hairline.van-button--square:after{border-radius:0}:root,:host{--van-submit-bar-height:50px;--van-submit-bar-z-index:100;--van-submit-bar-background:var(--van-background-2);--van-submit-bar-button-width:110px;--van-submit-bar-price-color:var(--van-danger-color);--van-submit-bar-price-font-size:var(--van-font-size-sm);--van-submit-bar-price-integer-font-size:20px;--van-submit-bar-price-font:var(--van-price-font);--van-submit-bar-text-color:var(--van-text-color);--van-submit-bar-text-font-size:var(--van-font-size-md);--van-submit-bar-tip-padding:var(--van-padding-xs) var(--van-padding-sm);--van-submit-bar-tip-font-size:var(--van-font-size-sm);--van-submit-bar-tip-line-height:1.5;--van-submit-bar-tip-color:var(--van-orange-dark);--van-submit-bar-tip-background:var(--van-orange-light);--van-submit-bar-tip-icon-size:12px;--van-submit-bar-button-height:40px;--van-submit-bar-padding:0 var(--van-padding-md)}.van-submit-bar{position:fixed;bottom:0;left:0;z-index:var(--van-submit-bar-z-index);width:100%;background:var(--van-submit-bar-background);-webkit-user-select:none;user-select:none}.van-submit-bar__tip{padding:var(--van-submit-bar-tip-padding);color:var(--van-submit-bar-tip-color);font-size:var(--van-submit-bar-tip-font-size);line-height:var(--van-submit-bar-tip-line-height);background:var(--van-submit-bar-tip-background)}.van-submit-bar__tip-icon{margin-right:var(--van-padding-base);font-size:var(--van-submit-bar-tip-icon-size);vertical-align:middle}.van-submit-bar__tip-text{vertical-align:middle}.van-submit-bar__bar{display:flex;align-items:center;justify-content:flex-end;height:var(--van-submit-bar-height);padding:var(--van-submit-bar-padding);font-size:var(--van-submit-bar-text-font-size)}.van-submit-bar__text{flex:1;padding-right:var(--van-padding-sm);color:var(--van-submit-bar-text-color);text-align:right}.van-submit-bar__text span{display:inline-block}.van-submit-bar__suffix-label{margin-left:var(--van-padding-base);font-weight:var(--van-font-bold)}.van-submit-bar__price{color:var(--van-submit-bar-price-color);font-weight:var(--van-font-bold);font-size:var(--van-submit-bar-price-font-size);margin-left:var(--van-padding-base)}.van-submit-bar__price-integer{font-size:var(--van-submit-bar-price-integer-font-size);font-family:var(--van-submit-bar-price-font)}.van-submit-bar__button{width:var(--van-submit-bar-button-width);height:var(--van-submit-bar-button-height);font-weight:var(--van-font-bold);border:none}.van-submit-bar__button--danger{background:var(--van-gradient-red)}:root,:host{--van-signature-padding:var(--van-padding-xs);--van-signature-content-height:200px;--van-signature-content-background:var(--van-background-2);--van-signature-content-border:1px dotted #dadada}.van-signature{padding:var(--van-signature-padding)}.van-signature__content{display:flex;justify-content:center;align-items:center;height:var(--van-signature-content-height);background-color:var(--van-signature-content-background);border:var(--van-signature-content-border);border-radius:var(--van-radius-lg);overflow:hidden}.van-signature__content canvas{width:100%;height:100%}.van-signature__footer{display:flex;justify-content:flex-end}.van-signature__footer .van-button{padding:0 var(--van-padding-md);margin-top:var(--van-padding-xs);margin-left:var(--van-padding-xs)}:root,:host{--van-contact-edit-padding:var(--van-padding-md);--van-contact-edit-fields-radius:var(--van-radius-md);--van-contact-edit-buttons-padding:var(--van-padding-xl) 0;--van-contact-edit-button-margin-bottom:var(--van-padding-sm);--van-contact-edit-button-font-size:var(--van-font-size-lg);--van-contact-edit-field-label-width:4.1em}.van-contact-edit{padding:var(--van-contact-edit-padding)}.van-contact-edit__fields{overflow:hidden;border-radius:var(--van-contact-edit-fields-radius)}.van-contact-edit__fields .van-field__label{width:var(--van-contact-edit-field-label-width)}.van-contact-edit__switch-cell{margin-top:10px;padding-top:9px;padding-bottom:9px;border-radius:var(--van-contact-edit-fields-radius)}.van-contact-edit__buttons{padding:var(--van-contact-edit-buttons-padding)}.van-contact-edit__button{margin-bottom:var(--van-contact-edit-button-margin-bottom);font-size:var(--van-contact-edit-button-font-size)}:root,:host{--van-action-bar-button-height:40px;--van-action-bar-button-warning-color:var(--van-gradient-orange);--van-action-bar-button-danger-color:var(--van-gradient-red)}.van-action-bar-button{flex:1;height:var(--van-action-bar-button-height);font-weight:var(--van-font-bold);font-size:var(--van-font-size-md);border:none;border-radius:0}.van-action-bar-button--first{margin-left:5px;border-top-left-radius:var(--van-radius-max);border-bottom-left-radius:var(--van-radius-max)}.van-action-bar-button--last{margin-right:5px;border-top-right-radius:var(--van-radius-max);border-bottom-right-radius:var(--van-radius-max)}.van-action-bar-button--warning{background:var(--van-action-bar-button-warning-color)}.van-action-bar-button--danger{background:var(--van-action-bar-button-danger-color)}@media(max-width:321px){.van-action-bar-button{font-size:13px}}:root,:host{--van-overlay-z-index:1;--van-overlay-background:rgba(0, 0, 0, 0.7)}.van-overlay{position:fixed;top:0;left:0;z-index:var(--van-overlay-z-index);width:100%;height:100%;background:var(--van-overlay-background)}:root,:host{--van-popup-background:var(--van-background-2);--van-popup-transition:transform var(--van-duration-base);--van-popup-round-radius:16px;--van-popup-close-icon-size:22px;--van-popup-close-icon-color:var(--van-gray-5);--van-popup-close-icon-margin:16px;--van-popup-close-icon-z-index:1}.van-overflow-hidden{overflow:hidden!important}.van-popup{position:fixed;max-height:100%;overflow-y:auto;box-sizing:border-box;background:var(--van-popup-background);transition:var(--van-popup-transition);-webkit-overflow-scrolling:touch}.van-popup--center{top:50%;left:0;right:0;width:-webkit-fit-content;width:fit-content;max-width:calc(100vw - 2*var(--van-padding-md));margin:0 auto;transform:translatey(-50%)}.van-popup--center.van-popup--round{border-radius:var(--van-popup-round-radius)}.van-popup--top{top:0;left:0;width:100%}.van-popup--top.van-popup--round{border-radius:0 0 var(--van-popup-round-radius)var(--van-popup-round-radius)}.van-popup--right{top:50%;right:0;transform:translate3d(0,-50%,0)}.van-popup--right.van-popup--round{border-radius:var(--van-popup-round-radius)0 0 var(--van-popup-round-radius)}.van-popup--bottom{bottom:0;left:0;width:100%}.van-popup--bottom.van-popup--round{border-radius:var(--van-popup-round-radius)var(--van-popup-round-radius)0 0}.van-popup--left{top:50%;left:0;transform:translate3d(0,-50%,0)}.van-popup--left.van-popup--round{border-radius:0 var(--van-popup-round-radius)var(--van-popup-round-radius)0}.van-popup-slide-top-enter-active,.van-popup-slide-left-enter-active,.van-popup-slide-right-enter-active,.van-popup-slide-bottom-enter-active{transition-timing-function:var(--van-ease-out)}.van-popup-slide-top-leave-active,.van-popup-slide-left-leave-active,.van-popup-slide-right-leave-active,.van-popup-slide-bottom-leave-active{transition-timing-function:var(--van-ease-in)}.van-popup-slide-top-enter-from,.van-popup-slide-top-leave-active{transform:translate3d(0,-100%,0)}.van-popup-slide-right-enter-from,.van-popup-slide-right-leave-active{transform:translate3d(100%,-50%,0)}.van-popup-slide-bottom-enter-from,.van-popup-slide-bottom-leave-active{transform:translate3d(0,100%,0)}.van-popup-slide-left-enter-from,.van-popup-slide-left-leave-active{transform:translate3d(-100%,-50%,0)}.van-popup__close-icon{position:absolute;z-index:var(--van-popup-close-icon-z-index);color:var(--van-popup-close-icon-color);font-size:var(--van-popup-close-icon-size)}.van-popup__close-icon--top-left{top:var(--van-popup-close-icon-margin);left:var(--van-popup-close-icon-margin)}.van-popup__close-icon--top-right{top:var(--van-popup-close-icon-margin);right:var(--van-popup-close-icon-margin)}.van-popup__close-icon--bottom-left{bottom:var(--van-popup-close-icon-margin);left:var(--van-popup-close-icon-margin)}.van-popup__close-icon--bottom-right{right:var(--van-popup-close-icon-margin);bottom:var(--van-popup-close-icon-margin)}:root,:host{--van-share-sheet-header-padding:var(--van-padding-sm) var(--van-padding-md);--van-share-sheet-title-color:var(--van-text-color);--van-share-sheet-title-font-size:var(--van-font-size-md);--van-share-sheet-title-line-height:var(--van-line-height-md);--van-share-sheet-description-color:var(--van-text-color-2);--van-share-sheet-description-font-size:var(--van-font-size-sm);--van-share-sheet-description-line-height:16px;--van-share-sheet-icon-size:48px;--van-share-sheet-option-name-color:var(--van-gray-7);--van-share-sheet-option-name-font-size:var(--van-font-size-sm);--van-share-sheet-option-description-color:var(--van-text-color-3);--van-share-sheet-option-description-font-size:var(--van-font-size-sm);--van-share-sheet-cancel-button-font-size:var(--van-font-size-lg);--van-share-sheet-cancel-button-height:48px;--van-share-sheet-cancel-button-background:var(--van-background-2)}.van-share-sheet__header{padding:var(--van-share-sheet-header-padding);text-align:center}.van-share-sheet__title{margin-top:var(--van-padding-xs);color:var(--van-share-sheet-title-color);font-weight:400;font-size:var(--van-share-sheet-title-font-size);line-height:var(--van-share-sheet-title-line-height)}.van-share-sheet__description{display:block;margin-top:var(--van-padding-xs);color:var(--van-share-sheet-description-color);font-size:var(--van-share-sheet-description-font-size);line-height:var(--van-share-sheet-description-line-height)}.van-share-sheet__options{position:relative;display:flex;padding:var(--van-padding-md)0 var(--van-padding-md)var(--van-padding-xs);overflow-x:auto;overflow-y:visible;-webkit-overflow-scrolling:touch}.van-share-sheet__options--border:before{position:absolute;box-sizing:border-box;content:" ";pointer-events:none;top:0;right:0;left:var(--van-padding-md);border-top:1px solid var(--van-border-color);transform:scaley(.5)}.van-share-sheet__options::-webkit-scrollbar{height:0}.van-share-sheet__option{display:flex;flex-direction:column;align-items:center;-webkit-user-select:none;user-select:none}.van-share-sheet__icon,.van-share-sheet__image-icon{width:var(--van-share-sheet-icon-size);height:var(--van-share-sheet-icon-size);margin:0 var(--van-padding-md)}.van-share-sheet__icon{display:flex;align-items:center;justify-content:center;color:var(--van-gray-7);border-radius:100%;background-color:var(--van-gray-2)}.van-share-sheet__icon--link,.van-share-sheet__icon--poster,.van-share-sheet__icon--qrcode{font-size:26px}.van-share-sheet__icon--weapp-qrcode{font-size:28px}.van-share-sheet__icon--qq,.van-share-sheet__icon--weibo,.van-share-sheet__icon--wechat,.van-share-sheet__icon--wechat-moments{font-size:30px;color:var(--van-white)}.van-share-sheet__icon--qq{background-color:#38b9fa}.van-share-sheet__icon--wechat{background-color:#0bc15f}.van-share-sheet__icon--weibo{background-color:#ee575e}.van-share-sheet__icon--wechat-moments{background-color:#7bc845}.van-share-sheet__name{margin-top:var(--van-padding-xs);padding:0 var(--van-padding-base);color:var(--van-share-sheet-option-name-color);font-size:var(--van-share-sheet-option-name-font-size)}.van-share-sheet__option-description{padding:0 var(--van-padding-base);color:var(--van-share-sheet-option-description-color);font-size:var(--van-share-sheet-option-description-font-size)}.van-share-sheet__cancel{display:block;width:100%;padding:0;font-size:var(--van-share-sheet-cancel-button-font-size);line-height:var(--van-share-sheet-cancel-button-height);text-align:center;background:var(--van-share-sheet-cancel-button-background);border:none;cursor:pointer}.van-share-sheet__cancel:before{display:block;height:var(--van-padding-xs);background-color:var(--van-background);content:" "}.van-share-sheet__cancel:active{background-color:var(--van-active-color)}:root,:host{--van-popover-arrow-size:6px;--van-popover-radius:var(--van-radius-lg);--van-popover-action-width:128px;--van-popover-action-height:44px;--van-popover-action-font-size:var(--van-font-size-md);--van-popover-action-line-height:var(--van-line-height-md);--van-popover-action-icon-size:20px;--van-popover-horizontal-action-height:34px;--van-popover-horizontal-action-icon-size:16px;--van-popover-light-text-color:var(--van-text-color);--van-popover-light-background:var(--van-background-2);--van-popover-light-action-disabled-text-color:var(--van-text-color-3);--van-popover-dark-text-color:var(--van-white);--van-popover-dark-background:#4a4a4a;--van-popover-dark-action-disabled-text-color:var(--van-text-color-2)}.van-popover{position:absolute;overflow:visible;background-color:transparent;transition:opacity.15s,transform.15s}.van-popover__wrapper{display:inline-block}.van-popover__arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid;border-width:var(--van-popover-arrow-size)}.van-popover__content{overflow:hidden;border-radius:var(--van-popover-radius)}.van-popover__content--horizontal{display:flex;width:-webkit-max-content;width:max-content}.van-popover__content--horizontal .van-popover__action{flex:none;width:auto;height:var(--van-popover-horizontal-action-height);padding:0 var(--van-padding-sm)}.van-popover__content--horizontal .van-popover__action:last-child:after{display:none}.van-popover__content--horizontal .van-popover__action-icon{margin-right:var(--van-padding-base);font-size:var(--van-popover-horizontal-action-icon-size)}.van-popover__action{position:relative;display:flex;align-items:center;box-sizing:border-box;width:var(--van-popover-action-width);height:var(--van-popover-action-height);padding:0 var(--van-padding-md);font-size:var(--van-popover-action-font-size);line-height:var(--van-line-height-md);cursor:pointer}.van-popover__action:last-child .van-popover__action-text:after{display:none}.van-popover__action-text{display:flex;flex:1;align-items:center;justify-content:center;height:100%}.van-popover__action-icon{margin-right:var(--van-padding-xs);font-size:var(--van-popover-action-icon-size)}.van-popover__action--with-icon .van-popover__action-text{justify-content:flex-start}.van-popover[data-popper-placement^=top] .van-popover__arrow{bottom:0;border-top-color:currentColor;border-bottom-width:0;margin-bottom:calc(-1*var(--van-popover-arrow-size))}.van-popover[data-popper-placement=top]{transform-origin:50%100%}.van-popover[data-popper-placement=top] .van-popover__arrow{left:50%;transform:translatex(-50%)}.van-popover[data-popper-placement=top-start]{transform-origin:0 100%}.van-popover[data-popper-placement=top-start] .van-popover__arrow{left:var(--van-padding-md)}.van-popover[data-popper-placement=top-end]{transform-origin:100%100%}.van-popover[data-popper-placement=top-end] .van-popover__arrow{right:var(--van-padding-md)}.van-popover[data-popper-placement^=left] .van-popover__arrow{right:0;border-right-width:0;border-left-color:currentColor;margin-right:calc(-1*var(--van-popover-arrow-size))}.van-popover[data-popper-placement=left]{transform-origin:100%50%}.van-popover[data-popper-placement=left] .van-popover__arrow{top:50%;transform:translatey(-50%)}.van-popover[data-popper-placement=left-start]{transform-origin:100%0}.van-popover[data-popper-placement=left-start] .van-popover__arrow{top:var(--van-padding-md)}.van-popover[data-popper-placement=left-end]{transform-origin:100%100%}.van-popover[data-popper-placement=left-end] .van-popover__arrow{bottom:var(--van-padding-md)}.van-popover[data-popper-placement^=right] .van-popover__arrow{left:0;border-right-color:currentColor;border-left-width:0;margin-left:calc(-1*var(--van-popover-arrow-size))}.van-popover[data-popper-placement=right]{transform-origin:0 50%}.van-popover[data-popper-placement=right] .van-popover__arrow{top:50%;transform:translatey(-50%)}.van-popover[data-popper-placement=right-start]{transform-origin:0 0}.van-popover[data-popper-placement=right-start] .van-popover__arrow{top:var(--van-padding-md)}.van-popover[data-popper-placement=right-end]{transform-origin:0 100%}.van-popover[data-popper-placement=right-end] .van-popover__arrow{bottom:var(--van-padding-md)}.van-popover[data-popper-placement^=bottom] .van-popover__arrow{top:0;border-top-width:0;border-bottom-color:currentColor;margin-top:calc(-1*var(--van-popover-arrow-size))}.van-popover[data-popper-placement=bottom]{transform-origin:50%0}.van-popover[data-popper-placement=bottom] .van-popover__arrow{left:50%;transform:translatex(-50%)}.van-popover[data-popper-placement=bottom-start]{transform-origin:0 0}.van-popover[data-popper-placement=bottom-start] .van-popover__arrow{left:var(--van-padding-md)}.van-popover[data-popper-placement=bottom-end]{transform-origin:100%0}.van-popover[data-popper-placement=bottom-end] .van-popover__arrow{right:var(--van-padding-md)}.van-popover--light{color:var(--van-popover-light-text-color)}.van-popover--light .van-popover__content{background:var(--van-popover-light-background);box-shadow:0 2px 12px rgba(50,50,51,.12)}.van-popover--light .van-popover__arrow{color:var(--van-popover-light-background)}.van-popover--light .van-popover__action:active{background-color:var(--van-active-color)}.van-popover--light .van-popover__action--disabled{color:var(--van-popover-light-action-disabled-text-color);cursor:not-allowed}.van-popover--light .van-popover__action--disabled:active{background-color:transparent}.van-popover--dark{color:var(--van-popover-dark-text-color)}.van-popover--dark .van-popover__content{background:var(--van-popover-dark-background)}.van-popover--dark .van-popover__arrow{color:var(--van-popover-dark-background)}.van-popover--dark .van-popover__action:active{background-color:rgba(0,0,0,.2)}.van-popover--dark .van-popover__action--disabled{color:var(--van-popover-dark-action-disabled-text-color)}.van-popover--dark .van-popover__action--disabled:active{background-color:transparent}.van-popover--dark .van-popover__action-text:after{border-color:var(--van-gray-7)}.van-popover-zoom-enter-from,.van-popover-zoom-leave-active{transform:scale(.8);opacity:0}.van-popover-zoom-enter-active{transition-timing-function:var(--van-ease-out)}.van-popover-zoom-leave-active{transition-timing-function:var(--van-ease-in)}:root,:host{--van-notify-text-color:var(--van-white);--van-notify-padding:var(--van-padding-xs) var(--van-padding-md);--van-notify-font-size:var(--van-font-size-md);--van-notify-line-height:var(--van-line-height-md);--van-notify-primary-background:var(--van-primary-color);--van-notify-success-background:var(--van-success-color);--van-notify-danger-background:var(--van-danger-color);--van-notify-warning-background:var(--van-warning-color)}.van-notify{display:flex;align-items:center;justify-content:center;box-sizing:border-box;padding:var(--van-notify-padding);color:var(--van-notify-text-color);font-size:var(--van-notify-font-size);line-height:var(--van-notify-line-height);white-space:pre-wrap;text-align:center;word-wrap:break-word}.van-notify--primary{background:var(--van-notify-primary-background)}.van-notify--success{background:var(--van-notify-success-background)}.van-notify--danger{background:var(--van-notify-danger-background)}.van-notify--warning{background:var(--van-notify-warning-background)}:root,:host{--van-dialog-width:320px;--van-dialog-small-screen-width:90%;--van-dialog-font-size:var(--van-font-size-lg);--van-dialog-transition:var(--van-duration-base);--van-dialog-radius:16px;--van-dialog-background:var(--van-background-2);--van-dialog-header-font-weight:var(--van-font-bold);--van-dialog-header-line-height:24px;--van-dialog-header-padding-top:26px;--van-dialog-header-isolated-padding:var(--van-padding-lg) 0;--van-dialog-message-padding:var(--van-padding-lg);--van-dialog-message-font-size:var(--van-font-size-md);--van-dialog-message-line-height:var(--van-line-height-md);--van-dialog-message-max-height:60vh;--van-dialog-has-title-message-text-color:var(--van-gray-7);--van-dialog-has-title-message-padding-top:var(--van-padding-xs);--van-dialog-button-height:48px;--van-dialog-round-button-height:36px;--van-dialog-confirm-button-text-color:var(--van-primary-color)}.van-dialog{top:45%;width:var(--van-dialog-width);overflow:hidden;font-size:var(--van-dialog-font-size);background:var(--van-dialog-background);border-radius:var(--van-dialog-radius);-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:var(--van-dialog-transition);transition-property:transform,opacity}@media(max-width:321px){.van-dialog{width:var(--van-dialog-small-screen-width)}}.van-dialog__header{color:var(--van-text-color);padding-top:var(--van-dialog-header-padding-top);font-weight:var(--van-dialog-header-font-weight);line-height:var(--van-dialog-header-line-height);text-align:center}.van-dialog__header--isolated{padding:var(--van-dialog-header-isolated-padding)}.van-dialog__content--isolated{display:flex;align-items:center;min-height:104px}.van-dialog__message{color:var(--van-text-color);flex:1;max-height:var(--van-dialog-message-max-height);padding:26px var(--van-dialog-message-padding);overflow-y:auto;font-size:var(--van-dialog-message-font-size);line-height:var(--van-dialog-message-line-height);white-space:pre-wrap;text-align:center;word-wrap:break-word;-webkit-overflow-scrolling:touch}.van-dialog__message--has-title{padding-top:var(--van-dialog-has-title-message-padding-top);color:var(--van-dialog-has-title-message-text-color)}.van-dialog__message--left{text-align:left}.van-dialog__message--right{text-align:right}.van-dialog__message--justify{text-align:justify}.van-dialog__footer{display:flex;overflow:hidden;-webkit-user-select:none;user-select:none}.van-dialog__confirm,.van-dialog__cancel{flex:1;height:var(--van-dialog-button-height);margin:0;border:0;border-radius:0}.van-dialog__confirm,.van-dialog__confirm:active{color:var(--van-dialog-confirm-button-text-color)}.van-dialog--round-button .van-dialog__footer{position:relative;height:auto;padding:var(--van-padding-xs)var(--van-padding-lg)var(--van-padding-md)}.van-dialog--round-button .van-dialog__message{padding-bottom:var(--van-padding-md);color:var(--van-text-color)}.van-dialog--round-button .van-dialog__confirm,.van-dialog--round-button .van-dialog__cancel{height:var(--van-dialog-round-button-height)}.van-dialog--round-button .van-dialog__confirm{color:var(--van-white)}.van-dialog--round-button .van-action-bar-button--first{border-top-left-radius:var(--van-radius-max);border-bottom-left-radius:var(--van-radius-max)}.van-dialog--round-button .van-action-bar-button--last{border-top-right-radius:var(--van-radius-max);border-bottom-right-radius:var(--van-radius-max)}.van-dialog-bounce-enter-from{transform:translate3d(0,-50%,0)scale(.7);opacity:0}.van-dialog-bounce-leave-active{transform:translate3d(0,-50%,0)scale(.9);opacity:0}:root,:host{--van-toast-max-width:70%;--van-toast-font-size:var(--van-font-size-md);--van-toast-text-color:var(--van-white);--van-toast-loading-icon-color:var(--van-white);--van-toast-line-height:var(--van-line-height-md);--van-toast-radius:var(--van-radius-lg);--van-toast-background:rgba(0, 0, 0, 0.7);--van-toast-icon-size:36px;--van-toast-text-min-width:96px;--van-toast-text-padding:var(--van-padding-xs) var(--van-padding-sm);--van-toast-default-padding:var(--van-padding-md);--van-toast-default-width:88px;--van-toast-default-min-height:88px;--van-toast-position-top-distance:20%;--van-toast-position-bottom-distance:20%}.van-toast{display:flex;flex-direction:column;align-items:center;justify-content:center;box-sizing:content-box;transition:all var(--van-duration-fast);width:var(--van-toast-default-width);max-width:var(--van-toast-max-width);min-height:var(--van-toast-default-min-height);padding:var(--van-toast-default-padding);color:var(--van-toast-text-color);font-size:var(--van-toast-font-size);line-height:var(--van-toast-line-height);white-space:pre-wrap;word-break:break-all;text-align:center;background:var(--van-toast-background);border-radius:var(--van-toast-radius)}.van-toast--break-normal{word-break:normal;word-wrap:normal}.van-toast--break-word{word-break:normal;word-wrap:break-word}.van-toast--unclickable{overflow:hidden;cursor:not-allowed}.van-toast--unclickable *{pointer-events:none}.van-toast--text,.van-toast--html{width:-webkit-fit-content;width:fit-content;min-width:var(--van-toast-text-min-width);min-height:0;padding:var(--van-toast-text-padding)}.van-toast--text .van-toast__text,.van-toast--html .van-toast__text{margin-top:0}.van-toast--top{top:var(--van-toast-position-top-distance)}.van-toast--bottom{top:auto;bottom:var(--van-toast-position-bottom-distance)}.van-toast__icon{font-size:var(--van-toast-icon-size)}.van-toast__loading{padding:var(--van-padding-base);color:var(--van-toast-loading-icon-color)}.van-toast__text{margin-top:var(--van-padding-xs)}:root,:host{--van-action-sheet-max-height:80%;--van-action-sheet-header-height:48px;--van-action-sheet-header-font-size:var(--van-font-size-lg);--van-action-sheet-description-color:var(--van-text-color-2);--van-action-sheet-description-font-size:var(--van-font-size-md);--van-action-sheet-description-line-height:var(--van-line-height-md);--van-action-sheet-item-background:var(--van-background-2);--van-action-sheet-item-font-size:var(--van-font-size-lg);--van-action-sheet-item-line-height:var(--van-line-height-lg);--van-action-sheet-item-text-color:var(--van-text-color);--van-action-sheet-item-disabled-text-color:var(--van-text-color-3);--van-action-sheet-item-icon-size:18px;--van-action-sheet-item-icon-margin-right:var(--van-padding-xs);--van-action-sheet-subname-color:var(--van-text-color-2);--van-action-sheet-subname-font-size:var(--van-font-size-sm);--van-action-sheet-subname-line-height:var(--van-line-height-sm);--van-action-sheet-close-icon-size:22px;--van-action-sheet-close-icon-color:var(--van-gray-5);--van-action-sheet-close-icon-padding:0 var(--van-padding-md);--van-action-sheet-cancel-text-color:var(--van-gray-7);--van-action-sheet-cancel-padding-top:var(--van-padding-xs);--van-action-sheet-cancel-padding-color:var(--van-background);--van-action-sheet-loading-icon-size:22px}.van-action-sheet{display:flex;flex-direction:column;max-height:var(--van-action-sheet-max-height);overflow:hidden;color:var(--van-action-sheet-item-text-color)}.van-action-sheet__content{flex:1 auto;overflow-y:auto;-webkit-overflow-scrolling:touch}.van-action-sheet__item,.van-action-sheet__cancel{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;width:100%;padding:14px var(--van-padding-md);font-size:var(--van-action-sheet-item-font-size);background:var(--van-action-sheet-item-background);border:none;cursor:pointer}.van-action-sheet__item:active,.van-action-sheet__cancel:active{background-color:var(--van-active-color)}.van-action-sheet__item{line-height:var(--van-action-sheet-item-line-height)}.van-action-sheet__item--loading,.van-action-sheet__item--disabled{color:var(--van-action-sheet-item-disabled-text-color)}.van-action-sheet__item--loading:active,.van-action-sheet__item--disabled:active{background-color:var(--van-action-sheet-item-background)}.van-action-sheet__item--disabled{cursor:not-allowed}.van-action-sheet__item--loading{cursor:default}.van-action-sheet__item-icon{font-size:var(--van-action-sheet-item-icon-size);margin-right:var(--van-action-sheet-item-icon-margin-right)}.van-action-sheet__cancel{flex-shrink:0;box-sizing:border-box;color:var(--van-action-sheet-cancel-text-color)}.van-action-sheet__subname{width:100%;margin-top:var(--van-padding-xs);color:var(--van-action-sheet-subname-color);font-size:var(--van-action-sheet-subname-font-size);line-height:var(--van-action-sheet-subname-line-height);overflow-wrap:break-word}.van-action-sheet__gap{display:block;height:var(--van-action-sheet-cancel-padding-top);background:var(--van-action-sheet-cancel-padding-color)}.van-action-sheet__header{flex-shrink:0;font-weight:var(--van-font-bold);font-size:var(--van-action-sheet-header-font-size);line-height:var(--van-action-sheet-header-height);text-align:center}.van-action-sheet__description{position:relative;flex-shrink:0;padding:20px var(--van-padding-md);color:var(--van-action-sheet-description-color);font-size:var(--van-action-sheet-description-font-size);line-height:var(--van-action-sheet-description-line-height);text-align:center}.van-action-sheet__description:after{position:absolute;box-sizing:border-box;content:" ";pointer-events:none;right:var(--van-padding-md);bottom:0;left:var(--van-padding-md);border-bottom:1px solid var(--van-border-color);transform:scaley(.5)}.van-action-sheet__loading-icon .van-loading__spinner{width:var(--van-action-sheet-loading-icon-size);height:var(--van-action-sheet-loading-icon-size)}.van-action-sheet__close{position:absolute;top:0;right:0;z-index:1;padding:var(--van-action-sheet-close-icon-padding);color:var(--van-action-sheet-close-icon-color);font-size:var(--van-action-sheet-close-icon-size);line-height:inherit}:root,:host{--van-sticky-z-index:99}.van-sticky--fixed{position:fixed;z-index:var(--van-sticky-z-index)}:root,:host{--van-swipe-indicator-size:6px;--van-swipe-indicator-margin:var(--van-padding-sm);--van-swipe-indicator-active-opacity:1;--van-swipe-indicator-inactive-opacity:0.3;--van-swipe-indicator-active-background:var(--van-primary-color);--van-swipe-indicator-inactive-background:var(--van-border-color)}.van-swipe{position:relative;overflow:hidden;transform:translatez(0);cursor:-webkit-grab;cursor:grab;-webkit-user-select:none;user-select:none}.van-swipe__track{display:flex;height:100%;transition-property:transform}.van-swipe__track--vertical{flex-direction:column}.van-swipe__indicators{position:absolute;bottom:var(--van-swipe-indicator-margin);left:50%;display:flex;transform:translatex(-50%)}.van-swipe__indicators--vertical{top:50%;bottom:auto;left:var(--van-swipe-indicator-margin);flex-direction:column;transform:translatey(-50%)}.van-swipe__indicators--vertical .van-swipe__indicator:not(:last-child){margin-bottom:var(--van-swipe-indicator-size)}.van-swipe__indicator{width:var(--van-swipe-indicator-size);height:var(--van-swipe-indicator-size);background-color:var(--van-swipe-indicator-inactive-background);border-radius:100%;opacity:var(--van-swipe-indicator-inactive-opacity);transition:opacity var(--van-duration-fast),background-color var(--van-duration-fast)}.van-swipe__indicator:not(:last-child){margin-right:var(--van-swipe-indicator-size)}.van-swipe__indicator--active{background-color:var(--van-swipe-indicator-active-background);opacity:var(--van-swipe-indicator-active-opacity)}.van-swipe-item{position:relative;flex-shrink:0;width:100%;height:100%}:root,:host{--van-image-preview-index-text-color:var(--van-white);--van-image-preview-index-font-size:var(--van-font-size-md);--van-image-preview-index-line-height:var(--van-line-height-md);--van-image-preview-index-text-shadow:0 1px 1px var(--van-gray-8);--van-image-preview-overlay-background:rgba(0, 0, 0, 0.9);--van-image-preview-close-icon-size:22px;--van-image-preview-close-icon-color:var(--van-gray-5);--van-image-preview-close-icon-margin:var(--van-padding-md);--van-image-preview-close-icon-z-index:1}.van-image-preview{position:fixed;top:0;left:0;width:100%;height:100%;max-width:none;background-color:transparent;transform:none}.van-image-preview__swipe{height:100%}.van-image-preview__swipe-item{display:flex;align-items:center;justify-content:center;overflow:hidden}.van-image-preview__cover{position:absolute;top:0;left:0}.van-image-preview__image,.van-image-preview__image-wrap{width:100%;transition-property:transform}.van-image-preview__image--vertical,.van-image-preview__image-wrap--vertical{width:auto;height:100%}.van-image-preview__image img,.van-image-preview__image-wrap img,.van-image-preview__image video,.van-image-preview__image-wrap video{-webkit-user-drag:none}.van-image-preview__image .van-image__error,.van-image-preview__image-wrap .van-image__error{top:30%;height:40%}.van-image-preview__image .van-image__error-icon,.van-image-preview__image-wrap .van-image__error-icon{font-size:36px}.van-image-preview__image .van-image__loading,.van-image-preview__image-wrap .van-image__loading{background-color:transparent}.van-image-preview__index{position:absolute;top:var(--van-padding-md);left:50%;color:var(--van-image-preview-index-text-color);font-size:var(--van-image-preview-index-font-size);line-height:var(--van-image-preview-index-line-height);text-shadow:var(--van-image-preview-index-text-shadow);transform:translate(-50%)}.van-image-preview__overlay{background:var(--van-image-preview-overlay-background)}.van-image-preview__close-icon{position:absolute;z-index:var(--van-image-preview-close-icon-z-index);color:var(--van-image-preview-close-icon-color);font-size:var(--van-image-preview-close-icon-size)}.van-image-preview__close-icon--top-left{top:var(--van-image-preview-close-icon-margin);left:var(--van-image-preview-close-icon-margin)}.van-image-preview__close-icon--top-right{top:var(--van-image-preview-close-icon-margin);right:var(--van-image-preview-close-icon-margin)}.van-image-preview__close-icon--bottom-left{bottom:var(--van-image-preview-close-icon-margin);left:var(--van-image-preview-close-icon-margin)}.van-image-preview__close-icon--bottom-right{right:var(--van-image-preview-close-icon-margin);bottom:var(--van-image-preview-close-icon-margin)}:root,:host{--van-uploader-size:80px;--van-uploader-icon-size:24px;--van-uploader-icon-color:var(--van-gray-4);--van-uploader-text-color:var(--van-text-color-2);--van-uploader-text-font-size:var(--van-font-size-sm);--van-uploader-upload-background:var(--van-gray-1);--van-uploader-upload-active-color:var(--van-active-color);--van-uploader-delete-color:var(--van-white);--van-uploader-delete-icon-size:14px;--van-uploader-delete-background:rgba(0, 0, 0, 0.7);--van-uploader-file-background:var(--van-background);--van-uploader-file-icon-size:20px;--van-uploader-file-icon-color:var(--van-gray-7);--van-uploader-file-name-padding:0 var(--van-padding-base);--van-uploader-file-name-margin-top:var(--van-padding-xs);--van-uploader-file-name-font-size:var(--van-font-size-sm);--van-uploader-file-name-text-color:var(--van-gray-7);--van-uploader-mask-text-color:var(--van-white);--van-uploader-mask-background:rgba(50, 50, 51, 0.88);--van-uploader-mask-icon-size:22px;--van-uploader-mask-message-font-size:var(--van-font-size-sm);--van-uploader-mask-message-line-height:var(--van-line-height-xs);--van-uploader-loading-icon-size:22px;--van-uploader-loading-icon-color:var(--van-white);--van-uploader-disabled-opacity:var(--van-disabled-opacity);--van-uploader-border-radius:0px}.van-uploader{position:relative;display:inline-block}.van-uploader__wrapper{display:flex;flex-wrap:wrap}.van-uploader__wrapper--disabled{opacity:var(--van-uploader-disabled-opacity)}.van-uploader__input{position:absolute;top:0;left:0;width:100%;height:100%;overflow:hidden;cursor:pointer;opacity:0}.van-uploader__input-wrapper{position:relative}.van-uploader__input:disabled{cursor:not-allowed}.van-uploader__upload{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;box-sizing:border-box;width:var(--van-uploader-size);height:var(--van-uploader-size);margin:0 var(--van-padding-xs)var(--van-padding-xs)0;background:var(--van-uploader-upload-background);border-radius:var(--van-uploader-border-radius)}.van-uploader__upload:active{background-color:var(--van-uploader-upload-active-color)}.van-uploader__upload--readonly:active{background-color:var(--van-uploader-upload-background)}.van-uploader__upload-icon{color:var(--van-uploader-icon-color);font-size:var(--van-uploader-icon-size)}.van-uploader__upload-text{margin-top:var(--van-padding-xs);color:var(--van-uploader-text-color);font-size:var(--van-uploader-text-font-size)}.van-uploader__preview{position:relative;margin:0 var(--van-padding-xs)var(--van-padding-xs)0;cursor:pointer}.van-uploader__preview-image{display:block;width:var(--van-uploader-size);height:var(--van-uploader-size);overflow:hidden;border-radius:var(--van-uploader-border-radius)}.van-uploader__preview-delete{position:absolute;top:0;right:0}.van-uploader__preview-delete--shadow{width:var(--van-uploader-delete-icon-size);height:var(--van-uploader-delete-icon-size);background:var(--van-uploader-delete-background);border-radius:0 0 0 12px}.van-uploader__preview-delete-icon{position:absolute;top:0;right:0;color:var(--van-uploader-delete-color);font-size:var(--van-uploader-delete-icon-size);transform:scale(.7)translate(10%,-10%)}.van-uploader__preview-cover{position:absolute;top:0;right:0;bottom:0;left:0}.van-uploader__mask{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--van-uploader-mask-text-color);background:var(--van-uploader-mask-background);border-radius:var(--van-uploader-border-radius)}.van-uploader__mask-icon{font-size:var(--van-uploader-mask-icon-size)}.van-uploader__mask-message{margin-top:6px;padding:0 var(--van-padding-base);font-size:var(--van-uploader-mask-message-font-size);line-height:var(--van-uploader-mask-message-line-height)}.van-uploader__loading{width:var(--van-uploader-loading-icon-size);height:var(--van-uploader-loading-icon-size);color:var(--van-uploader-loading-icon-color)}.van-uploader__file{display:flex;flex-direction:column;align-items:center;justify-content:center;width:var(--van-uploader-size);height:var(--van-uploader-size);background:var(--van-uploader-file-background)}.van-uploader__file-icon{color:var(--van-uploader-file-icon-color);font-size:var(--van-uploader-file-icon-size)}.van-uploader__file-name{box-sizing:border-box;width:100%;margin-top:var(--van-uploader-file-name-margin-top);padding:var(--van-uploader-file-name-padding);color:var(--van-uploader-file-name-text-color);font-size:var(--van-uploader-file-name-font-size);text-align:center}:root,:host{--van-tab-text-color:var(--van-gray-7);--van-tab-active-text-color:var(--van-text-color);--van-tab-disabled-text-color:var(--van-text-color-3);--van-tab-font-size:var(--van-font-size-md);--van-tab-line-height:var(--van-line-height-md);--van-tabs-default-color:var(--van-primary-color);--van-tabs-line-height:44px;--van-tabs-card-height:30px;--van-tabs-nav-background:var(--van-background-2);--van-tabs-bottom-bar-width:40px;--van-tabs-bottom-bar-height:3px;--van-tabs-bottom-bar-color:var(--van-primary-color)}.van-tab{position:relative;display:flex;flex:1;align-items:center;justify-content:center;box-sizing:border-box;padding:0 var(--van-padding-base);color:var(--van-tab-text-color);font-size:var(--van-tab-font-size);line-height:var(--van-tab-line-height);cursor:pointer}.van-tab--active{color:var(--van-tab-active-text-color);font-weight:var(--van-font-bold)}.van-tab--disabled{color:var(--van-tab-disabled-text-color);cursor:not-allowed}.van-tab--grow{flex:1 0 auto;padding:0 var(--van-padding-sm)}.van-tab--shrink{flex:none;padding:0 var(--van-padding-xs)}.van-tab--card{color:var(--van-tabs-default-color);border-right:var(--van-border-width)solid var(--van-tabs-default-color)}.van-tab--card:last-child{border-right:none}.van-tab--card.van-tab--active{color:var(--van-white);background-color:var(--van-tabs-default-color)}.van-tab--card.van-tab--disabled{color:var(--van-tab-disabled-text-color)}.van-tab__text--ellipsis{display:-webkit-box;overflow:hidden;-webkit-line-clamp:1;-webkit-box-orient:vertical}.van-tabs{position:relative}.van-tabs__wrap{overflow:hidden}.van-tabs__wrap--page-top{position:fixed}.van-tabs__wrap--content-bottom{top:auto;bottom:0}.van-tabs__nav{position:relative;display:flex;background:var(--van-tabs-nav-background);-webkit-user-select:none;user-select:none}.van-tabs__nav--complete{overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch}.van-tabs__nav--complete::-webkit-scrollbar{display:none}.van-tabs__nav--line{box-sizing:content-box;height:100%;padding-bottom:15px}.van-tabs__nav--line.van-tabs__nav--shrink,.van-tabs__nav--line.van-tabs__nav--complete{padding-right:var(--van-padding-xs);padding-left:var(--van-padding-xs)}.van-tabs__nav--card{box-sizing:border-box;height:var(--van-tabs-card-height);margin:0 var(--van-padding-md);border:var(--van-border-width)solid var(--van-tabs-default-color);border-radius:var(--van-radius-sm)}.van-tabs__nav--card.van-tabs__nav--shrink{display:inline-flex}.van-tabs__line{position:absolute;bottom:15px;left:0;z-index:1;width:var(--van-tabs-bottom-bar-width);height:var(--van-tabs-bottom-bar-height);background:var(--van-tabs-bottom-bar-color);border-radius:var(--van-tabs-bottom-bar-height)}.van-tabs__track{position:relative;display:flex;width:100%;height:100%;will-change:left}.van-tabs__content--animated{overflow:hidden}.van-tabs--line .van-tabs__wrap{height:var(--van-tabs-line-height)}.van-tabs--card>.van-tabs__wrap{height:var(--van-tabs-card-height)}.van-tab__panel,.van-tab__panel-wrapper{flex-shrink:0;box-sizing:border-box;width:100%}.van-tab__panel-wrapper--inactive{height:0;overflow:visible}:root,:host{--van-cascader-header-height:48px;--van-cascader-header-padding:0 var(--van-padding-md);--van-cascader-title-font-size:var(--van-font-size-lg);--van-cascader-title-line-height:20px;--van-cascader-close-icon-size:22px;--van-cascader-close-icon-color:var(--van-gray-5);--van-cascader-selected-icon-size:18px;--van-cascader-tabs-height:48px;--van-cascader-active-color:var(--van-primary-color);--van-cascader-options-height:384px;--van-cascader-option-disabled-color:var(--van-text-color-3);--van-cascader-tab-color:var(--van-text-color);--van-cascader-unselected-tab-color:var(--van-text-color-2)}.van-cascader__header{display:flex;align-items:center;justify-content:space-between;height:var(--van-cascader-header-height);padding:var(--van-cascader-header-padding)}.van-cascader__title{font-weight:var(--van-font-bold);font-size:var(--van-cascader-title-font-size);line-height:var(--van-cascader-title-line-height)}.van-cascader__close-icon{color:var(--van-cascader-close-icon-color);font-size:var(--van-cascader-close-icon-size)}.van-cascader__tabs.van-tabs--line .van-tabs__wrap{height:var(--van-cascader-tabs-height)}.van-cascader__tab{color:var(--van-cascader-tab-color);font-weight:var(--van-font-bold)}.van-cascader__tab--unselected{color:var(--van-cascader-unselected-tab-color);font-weight:400}.van-cascader__option{display:flex;align-items:center;justify-content:space-between;padding:10px var(--van-padding-md);font-size:var(--van-font-size-md);line-height:var(--van-line-height-md);cursor:pointer}.van-cascader__option:active{background-color:var(--van-active-color)}.van-cascader__option--selected{color:var(--van-cascader-active-color);font-weight:var(--van-font-bold)}.van-cascader__option--disabled{color:var(--van-cascader-option-disabled-color);cursor:not-allowed}.van-cascader__option--disabled:active{background-color:transparent}.van-cascader__selected-icon{font-size:var(--van-cascader-selected-icon-size)}.van-cascader__options{box-sizing:border-box;height:var(--van-cascader-options-height);padding-top:6px;overflow-y:auto;-webkit-overflow-scrolling:touch}:root,:host{--van-picker-background:var(--van-background-2);--van-picker-toolbar-height:44px;--van-picker-title-font-size:var(--van-font-size-lg);--van-picker-title-line-height:var(--van-line-height-md);--van-picker-action-padding:0 var(--van-padding-md);--van-picker-action-font-size:var(--van-font-size-md);--van-picker-confirm-action-color:var(--van-primary-color);--van-picker-cancel-action-color:var(--van-text-color-2);--van-picker-option-font-size:var(--van-font-size-lg);--van-picker-option-padding:0 var(--van-padding-base);--van-picker-option-text-color:var(--van-text-color);--van-picker-option-disabled-opacity:0.3;--van-picker-loading-icon-color:var(--van-primary-color);--van-picker-loading-mask-color:rgba(255, 255, 255, 0.9);--van-picker-mask-color:linear-gradient(180deg, rgba(255, 255, 255, 0.9), rgba(255, 255, 255, 0.4)), + linear-gradient(0deg, rgba(255, 255, 255, 0.9), rgba(255, 255, 255, 0.4))}.van-theme-dark{--van-picker-loading-mask-color:rgba(0, 0, 0, 0.6);--van-picker-mask-color:linear-gradient(180deg, rgba(0, 0, 0, 0.6), rgba(0, 0, 0, 0.1)), + linear-gradient(0deg, rgba(0, 0, 0, 0.6), rgba(0, 0, 0, 0.1))}.van-picker{position:relative;background:var(--van-picker-background);-webkit-user-select:none;user-select:none}.van-picker__toolbar{position:relative;display:flex;align-items:center;justify-content:space-between;height:var(--van-picker-toolbar-height)}.van-picker__cancel,.van-picker__confirm{height:100%;padding:var(--van-picker-action-padding);font-size:var(--van-picker-action-font-size);background-color:transparent;border:none}.van-picker__confirm{color:var(--van-picker-confirm-action-color)}.van-picker__cancel{color:var(--van-picker-cancel-action-color)}.van-picker__title{position:absolute;left:50%;color:var(--van-text-color);max-width:50%;font-weight:var(--van-font-bold);font-size:var(--van-picker-title-font-size);line-height:var(--van-picker-title-line-height);text-align:center;transform:translatex(-50%)}.van-picker__columns{position:relative;display:flex;cursor:-webkit-grab;cursor:grab}.van-picker__loading{position:absolute;top:0;right:0;bottom:0;left:0;z-index:3;display:flex;align-items:center;justify-content:center;color:var(--van-picker-loading-icon-color);background:var(--van-picker-loading-mask-color)}.van-picker__frame{position:absolute;top:50%;right:var(--van-padding-md);left:var(--van-padding-md);z-index:2;transform:translatey(-50%);pointer-events:none}.van-picker__mask{position:absolute;top:0;left:0;z-index:1;width:100%;height:100%;background-image:var(--van-picker-mask-color);background-repeat:no-repeat;background-position:top,bottom;transform:translatez(0);pointer-events:none}.van-picker-column{flex:1;overflow:hidden;font-size:var(--van-picker-option-font-size)}.van-picker-column__wrapper{transition-timing-function:cubic-bezier(.23,1,.68,1)}.van-picker-column__item{display:flex;align-items:center;justify-content:center;padding:var(--van-picker-option-padding);color:var(--van-picker-option-text-color)}.van-picker-column__item--disabled{cursor:not-allowed;opacity:var(--van-picker-option-disabled-opacity)}:root,:host{--van-picker-group-background:var(--van-background-2)}.van-picker-group{background:var(--van-picker-group-background)}.van-picker-group__tabs{margin-top:var(--van-padding-base)}.van-picker-group__tab-title{margin-right:16px}:root,:host{--van-calendar-background:var(--van-background-2);--van-calendar-popup-height:80%;--van-calendar-header-shadow:0 2px 10px rgba(125, 126, 128, 0.16);--van-calendar-header-title-height:44px;--van-calendar-header-title-font-size:var(--van-font-size-lg);--van-calendar-header-subtitle-font-size:var(--van-font-size-md);--van-calendar-header-action-width:28px;--van-calendar-header-action-color:var(--van-text-color);--van-calendar-header-action-disabled-color:var(--van-text-color-3);--van-calendar-weekdays-height:30px;--van-calendar-weekdays-font-size:var(--van-font-size-sm);--van-calendar-month-title-font-size:var(--van-font-size-md);--van-calendar-month-mark-color:rgba(242, 243, 245, 0.8);--van-calendar-month-mark-font-size:160px;--van-calendar-day-height:64px;--van-calendar-day-font-size:var(--van-font-size-lg);--van-calendar-day-margin-bottom:4px;--van-calendar-range-edge-color:var(--van-white);--van-calendar-range-edge-background:var(--van-primary-color);--van-calendar-range-middle-color:var(--van-primary-color);--van-calendar-range-middle-background-opacity:0.1;--van-calendar-selected-day-size:54px;--van-calendar-selected-day-color:var(--van-white);--van-calendar-info-font-size:var(--van-font-size-xs);--van-calendar-info-line-height:var(--van-line-height-xs);--van-calendar-selected-day-background:var(--van-primary-color);--van-calendar-day-disabled-color:var(--van-text-color-3);--van-calendar-confirm-button-height:36px;--van-calendar-confirm-button-margin:7px 0}.van-theme-dark{--van-calendar-month-mark-color:rgba(100, 101, 102, 0.2);--van-calendar-day-disabled-color:var(--van-gray-7)}.van-calendar{display:flex;flex-direction:column;height:100%;background:var(--van-calendar-background)}.van-calendar__popup.van-popup--top,.van-calendar__popup.van-popup--bottom{height:var(--van-calendar-popup-height)}.van-calendar__popup.van-popup--left,.van-calendar__popup.van-popup--right{height:100%}.van-calendar__popup .van-popup__close-icon{top:11px}.van-calendar__header{flex-shrink:0;box-shadow:var(--van-calendar-header-shadow)}.van-calendar__month-title,.van-calendar__header-title,.van-calendar__header-subtitle{color:var(--van-text-color);height:var(--van-calendar-header-title-height);font-weight:var(--van-font-bold);line-height:var(--van-calendar-header-title-height);text-align:center}.van-calendar__header-title{font-size:var(--van-calendar-header-title-font-size)}.van-calendar__header-subtitle{font-size:var(--van-calendar-header-subtitle-font-size)}.van-calendar__header-subtitle--with-swicth{display:flex;align-items:center;padding:0 var(--van-padding-base)}.van-calendar__header-subtitle-text{flex:1}.van-calendar__header-action{display:flex;align-items:center;justify-content:center;min-width:var(--van-calendar-header-action-width);height:100%;color:var(--van-calendar-header-action-color);cursor:pointer}.van-calendar__header-action--disabled{color:var(--van-calendar-header-action-disabled-color);cursor:not-allowed}.van-calendar__month-title{font-size:var(--van-calendar-month-title-font-size)}.van-calendar__weekdays{display:flex}.van-calendar__weekday{flex:1;font-size:var(--van-calendar-weekdays-font-size);line-height:var(--van-calendar-weekdays-height);text-align:center}.van-calendar__body{flex:1;overflow:auto;-webkit-overflow-scrolling:touch}.van-calendar__days{position:relative;display:flex;flex-wrap:wrap;-webkit-user-select:none;user-select:none}.van-calendar__month-mark{position:absolute;top:50%;left:50%;z-index:0;color:var(--van-calendar-month-mark-color);font-size:var(--van-calendar-month-mark-font-size);transform:translate(-50%,-50%);pointer-events:none}.van-calendar__day,.van-calendar__selected-day{display:flex;align-items:center;justify-content:center;text-align:center}.van-calendar__day{position:relative;width:14.285%;height:var(--van-calendar-day-height);font-size:var(--van-calendar-day-font-size);margin-bottom:var(--van-calendar-day-margin-bottom);cursor:pointer}.van-calendar__day--end,.van-calendar__day--start,.van-calendar__day--start-end,.van-calendar__day--multiple-middle,.van-calendar__day--multiple-selected{color:var(--van-calendar-range-edge-color);background:var(--van-calendar-range-edge-background)}.van-calendar__day--start{border-radius:var(--van-radius-md)0 0 var(--van-radius-md)}.van-calendar__day--end{border-radius:0 var(--van-radius-md)var(--van-radius-md)0}.van-calendar__day--start-end,.van-calendar__day--multiple-selected{border-radius:var(--van-radius-md)}.van-calendar__day--middle{color:var(--van-calendar-range-middle-color)}.van-calendar__day--middle:after{position:absolute;top:0;right:0;bottom:0;left:0;background-color:currentColor;opacity:var(--van-calendar-range-middle-background-opacity);content:""}.van-calendar__day--disabled{color:var(--van-calendar-day-disabled-color);cursor:default}.van-calendar__top-info,.van-calendar__bottom-info{position:absolute;right:0;left:0;font-size:var(--van-calendar-info-font-size);line-height:var(--van-calendar-info-line-height)}@media(max-width:350px){.van-calendar__top-info,.van-calendar__bottom-info{font-size:9px}}.van-calendar__top-info{top:6px}.van-calendar__bottom-info{bottom:6px}.van-calendar__selected-day{width:var(--van-calendar-selected-day-size);height:var(--van-calendar-selected-day-size);color:var(--van-calendar-selected-day-color);background:var(--van-calendar-selected-day-background);border-radius:var(--van-radius-md)}.van-calendar__footer{flex-shrink:0;padding-left:var(--van-padding-md);padding-right:var(--van-padding-md)}.van-calendar__confirm{height:var(--van-calendar-confirm-button-height);margin:var(--van-calendar-confirm-button-margin)}:root,:host{--van-address-edit-padding:var(--van-padding-sm);--van-address-edit-buttons-padding:var(--van-padding-xl) var(--van-padding-base);--van-address-edit-button-margin-bottom:var(--van-padding-sm);--van-address-edit-button-font-size:var(--van-font-size-lg)}.van-address-edit{padding:var(--van-address-edit-padding)}.van-address-edit__fields{overflow:hidden;border-radius:var(--van-padding-xs)}.van-address-edit__fields .van-field__label{width:4.1em}.van-address-edit__default{margin-top:var(--van-padding-sm);overflow:hidden;border-radius:var(--van-padding-xs)}.van-address-edit__buttons{padding:var(--van-address-edit-buttons-padding)}.van-address-edit__button{margin-bottom:var(--van-address-edit-button-margin-bottom);font-size:var(--van-address-edit-button-font-size)}.van-address-edit-detail__search-item{background:var(--van-gray-2)}.van-radio-group--horizontal,.van-checkbox-group--horizontal{display:flex;flex-wrap:wrap}:root,:host{--van-checkbox-size:20px;--van-checkbox-border-color:var(--van-gray-5);--van-checkbox-duration:var(--van-duration-fast);--van-checkbox-label-margin:var(--van-padding-xs);--van-checkbox-label-color:var(--van-text-color);--van-checkbox-checked-icon-color:var(--van-primary-color);--van-checkbox-disabled-icon-color:var(--van-gray-5);--van-checkbox-disabled-label-color:var(--van-text-color-3);--van-checkbox-disabled-background:var(--van-border-color)}.van-checkbox{display:flex;align-items:center;overflow:hidden;cursor:pointer;-webkit-user-select:none;user-select:none}.van-checkbox--disabled{cursor:not-allowed}.van-checkbox--label-disabled{cursor:default}.van-checkbox--horizontal{margin-right:var(--van-padding-sm)}.van-checkbox__icon{flex:none;height:1em;font-size:var(--van-checkbox-size);line-height:1em;cursor:pointer}.van-checkbox__icon .van-icon{display:block;box-sizing:border-box;width:1.25em;height:1.25em;color:transparent;font-size:.8em;line-height:1.25;text-align:center;border:1px solid var(--van-checkbox-border-color);transition-duration:var(--van-checkbox-duration);transition-property:color,border-color,background-color}.van-checkbox__icon--round .van-icon{border-radius:100%}.van-checkbox__icon--indeterminate .van-icon{display:flex;align-items:center;justify-content:center;color:var(--van-white);border-color:var(--van-checkbox-checked-icon-color);background-color:var(--van-checkbox-checked-icon-color)}.van-checkbox__icon--checked .van-icon{color:var(--van-white);background-color:var(--van-checkbox-checked-icon-color);border-color:var(--van-checkbox-checked-icon-color)}.van-checkbox__icon--disabled{cursor:not-allowed}.van-checkbox__icon--disabled .van-icon{background-color:var(--van-checkbox-disabled-background);border-color:var(--van-checkbox-disabled-icon-color)}.van-checkbox__icon--disabled.van-checkbox__icon--checked .van-icon{color:var(--van-checkbox-disabled-icon-color)}.van-checkbox__label{margin-left:var(--van-checkbox-label-margin);color:var(--van-checkbox-label-color);line-height:var(--van-checkbox-size)}.van-checkbox__label--left{margin:0 var(--van-checkbox-label-margin)0 0}.van-checkbox__label--disabled{color:var(--van-checkbox-disabled-label-color)}:root,:host{--van-coupon-margin:0 var(--van-padding-sm) var(--van-padding-sm);--van-coupon-content-height:84px;--van-coupon-content-padding:14px 0;--van-coupon-content-text-color:var(--van-text-color);--van-coupon-background:var(--van-background-2);--van-coupon-active-background:var(--van-active-color);--van-coupon-radius:var(--van-radius-lg);--van-coupon-shadow:0 0 4px rgba(0, 0, 0, 0.1);--van-coupon-head-width:96px;--van-coupon-amount-color:var(--van-primary-color);--van-coupon-amount-font-size:30px;--van-coupon-currency-font-size:40%;--van-coupon-name-font-size:var(--van-font-size-md);--van-coupon-disabled-text-color:var(--van-text-color-2);--van-coupon-description-padding:var(--van-padding-xs) var(--van-padding-md);--van-coupon-description-border-color:var(--van-border-color);--van-coupon-checkbox-color:var(--van-primary-color)}.van-coupon{margin:var(--van-coupon-margin);overflow:hidden;background:var(--van-coupon-background);border-radius:var(--van-coupon-radius);box-shadow:var(--van-coupon-shadow)}.van-coupon:active{background-color:var(--van-coupon-active-background)}.van-coupon__content{display:flex;align-items:center;box-sizing:border-box;min-height:var(--van-coupon-content-height);padding:var(--van-coupon-content-padding);color:var(--van-coupon-content-text-color)}.van-coupon__head{position:relative;min-width:var(--van-coupon-head-width);padding:0 var(--van-padding-xs);color:var(--van-coupon-amount-color);text-align:center}.van-coupon__amount,.van-coupon__condition,.van-coupon__name,.van-coupon__valid{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.van-coupon__amount{margin-bottom:6px;font-weight:var(--van-font-bold);font-size:var(--van-coupon-amount-font-size);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.van-coupon__amount span{font-size:var(--van-coupon-currency-font-size)}.van-coupon__amount span:not(:empty){margin-left:2px}.van-coupon__condition{font-size:var(--van-font-size-sm);line-height:16px;white-space:pre-wrap}.van-coupon__body{position:relative;flex:1}.van-coupon__name{margin-bottom:10px;font-weight:var(--van-font-bold);font-size:var(--van-coupon-name-font-size);line-height:var(--van-line-height-md)}.van-coupon__valid{font-size:var(--van-font-size-sm)}.van-coupon__corner{position:absolute;top:0;right:var(--van-padding-md);bottom:0}.van-coupon__corner .van-checkbox__icon--checked .van-icon{background-color:var(--van-coupon-checkbox-color);border-color:var(--van-coupon-checkbox-color)}.van-coupon__description{padding:var(--van-coupon-description-padding);font-size:var(--van-font-size-sm);border-top:1px dashed var(--van-coupon-description-border-color)}.van-coupon--disabled:active{background-color:var(--van-coupon-background)}.van-coupon--disabled .van-coupon-item__content{height:calc(-10px + var(--van-coupon-content-height))}.van-coupon--disabled .van-coupon__head{color:inherit}:root,:host{--van-radio-size:20px;--van-radio-dot-size:8px;--van-radio-border-color:var(--van-gray-5);--van-radio-duration:var(--van-duration-fast);--van-radio-label-margin:var(--van-padding-xs);--van-radio-label-color:var(--van-text-color);--van-radio-checked-icon-color:var(--van-primary-color);--van-radio-disabled-icon-color:var(--van-gray-5);--van-radio-disabled-label-color:var(--van-text-color-3);--van-radio-disabled-background:var(--van-border-color)}.van-radio{display:flex;align-items:center;overflow:hidden;cursor:pointer;-webkit-user-select:none;user-select:none}.van-radio--disabled{cursor:not-allowed}.van-radio--label-disabled{cursor:default}.van-radio--horizontal{margin-right:var(--van-padding-sm)}.van-radio__icon{flex:none;height:1em;font-size:var(--van-radio-size);line-height:1em;cursor:pointer}.van-radio__icon .van-icon{display:block;box-sizing:border-box;width:1.25em;height:1.25em;color:transparent;font-size:.8em;line-height:1.25;text-align:center;border:1px solid var(--van-radio-border-color);transition-duration:var(--van-radio-duration);transition-property:color,border-color,background-color}.van-radio__icon--round .van-icon{border-radius:100%}.van-radio__icon--dot{position:relative;border-radius:100%;box-sizing:border-box;width:var(--van-radio-size);height:var(--van-radio-size);border:1px solid var(--van-radio-border-color);transition-duration:var(--van-radio-duration);transition-property:border-color}.van-radio__icon--dot__icon{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);border-radius:100%;height:calc(100% - var(--van-radio-dot-size));width:calc(100% - var(--van-radio-dot-size));transition-duration:var(--van-radio-duration);transition-property:background-color}.van-radio__icon--checked .van-icon{color:var(--van-white);background-color:var(--van-radio-checked-icon-color);border-color:var(--van-radio-checked-icon-color)}.van-radio__icon--checked.van-radio__icon--dot{border-color:var(--van-radio-checked-icon-color)}.van-radio__icon--checked.van-radio__icon--dot .van-radio__icon--dot__icon{background:var(--van-radio-checked-icon-color)}.van-radio__icon--disabled{cursor:not-allowed}.van-radio__icon--disabled .van-icon{background-color:var(--van-radio-disabled-background);border-color:var(--van-radio-disabled-icon-color)}.van-radio__icon--disabled.van-radio__icon--checked .van-icon{color:var(--van-radio-disabled-icon-color)}.van-radio__label{margin-left:var(--van-radio-label-margin);color:var(--van-radio-label-color);line-height:var(--van-radio-size)}.van-radio__label--left{margin:0 var(--van-radio-label-margin)0 0}.van-radio__label--disabled{color:var(--van-radio-disabled-label-color)}:root,:host{--van-contact-list-padding:var(--van-padding-sm) var(--van-padding-sm) 80px;--van-contact-list-edit-icon-size:16px;--van-contact-list-add-button-z-index:999;--van-contact-list-radio-color:var(--van-primary-color);--van-contact-list-item-padding:var(--van-padding-md)}.van-contact-list{box-sizing:border-box;height:100%;padding:var(--van-contact-list-padding)}.van-contact-list__item{padding:var(--van-contact-list-item-padding)}.van-contact-list__item-title{display:flex;align-items:center;padding-right:var(--van-padding-xl);padding-left:var(--van-padding-xs)}.van-contact-list__item-tag{flex:none;margin-left:var(--van-padding-xs);padding-top:0;padding-bottom:0;line-height:1.4em}.van-contact-list__group{box-sizing:border-box;height:100%;overflow-y:scroll;-webkit-overflow-scrolling:touch;border-radius:var(--van-radius-lg)}.van-contact-list__edit{font-size:var(--van-contact-list-edit-icon-size)}.van-contact-list__radio .van-radio__icon--checked .van-icon{background-color:var(--van-contact-list-radio-color);border-color:var(--van-contact-list-radio-color)}.van-contact-list__bottom{position:fixed;right:0;bottom:0;left:0;z-index:var(--van-contact-list-add-button-z-index);padding-left:var(--van-padding-md);padding-right:var(--van-padding-md);background-color:var(--van-background-2)}.van-contact-list__add{height:40px;margin:5px 0}:root,:host{--van-address-list-padding:var(--van-padding-sm) var(--van-padding-sm) 80px;--van-address-list-disabled-text-color:var(--van-text-color-2);--van-address-list-disabled-text-padding:calc(var(--van-padding-base) * 5) 0;--van-address-list-disabled-text-font-size:var(--van-font-size-md);--van-address-list-disabled-text-line-height:var(--van-line-height-md);--van-address-list-add-button-z-index:999;--van-address-list-item-padding:var(--van-padding-sm);--van-address-list-item-text-color:var(--van-text-color);--van-address-list-item-disabled-text-color:var(--van-text-color-3);--van-address-list-item-font-size:13px;--van-address-list-item-line-height:var(--van-line-height-sm);--van-address-list-radio-color:var(--van-primary-color);--van-address-list-edit-icon-size:20px}.van-address-list{box-sizing:border-box;height:100%;padding:var(--van-address-list-padding)}.van-address-list__bottom{position:fixed;bottom:0;left:0;z-index:var(--van-address-list-add-button-z-index);box-sizing:border-box;width:100%;padding-left:var(--van-padding-md);padding-right:var(--van-padding-md);background-color:var(--van-background-2)}.van-address-list__add{height:40px;margin:5px 0}.van-address-list__disabled-text{padding:var(--van-address-list-disabled-text-padding);color:var(--van-address-list-disabled-text-color);font-size:var(--van-address-list-disabled-text-font-size);line-height:var(--van-address-list-disabled-text-line-height)}.van-address-item{padding:var(--van-address-list-item-padding);background-color:var(--van-background-2);border-radius:var(--van-radius-lg)}.van-address-item:not(:last-child){margin-bottom:var(--van-padding-sm)}.van-address-item__title{padding-right:44px}.van-address-item__name{display:flex;align-items:center;margin-bottom:var(--van-padding-xs);font-size:var(--van-font-size-lg);line-height:var(--van-line-height-lg)}.van-address-item__tag{flex:none;margin-left:var(--van-padding-xs);padding-top:0;padding-bottom:0;line-height:1.4em}.van-address-item__address{color:var(--van-address-list-item-text-color);font-size:var(--van-address-list-item-font-size);line-height:var(--van-address-list-item-line-height)}.van-address-item--disabled .van-address-item__name,.van-address-item--disabled .van-address-item__address{color:var(--van-address-list-item-disabled-text-color)}.van-address-item__edit{position:absolute;top:50%;right:var(--van-padding-md);color:var(--van-gray-6);font-size:var(--van-address-list-edit-icon-size);transform:translatey(-50%)}.van-address-item .van-cell{padding:0}.van-address-item .van-radio__label{margin-left:var(--van-padding-sm)}.van-address-item .van-radio__icon--checked .van-icon{background-color:var(--van-address-list-radio-color);border-color:var(--van-address-list-radio-color)}:root,:host{--van-barrage-font-size:16px;--van-barrage-space:10px;--van-barrage-font:inherit;--van-barrage-color:var(--van-white)}.van-barrage{position:relative;overflow:hidden}.van-barrage__item{position:absolute;top:0;right:0;z-index:99;padding-bottom:var(--van-barrage-space);opacity:.75;line-height:1;font-size:var(--van-barrage-font-size);font-family:var(--van-barrage-font);font-weight:700;white-space:nowrap;color:var(--van-barrage-color);text-shadow:1px 0 1px#000,0 1px 1px#000,0 -1px 1px#000,-1px 0 1px#000;-webkit-user-select:none;user-select:none;will-change:transform;transform:translatex(110%)}@keyframes van-barrage{0%{transform:translatex(110%)}to{transform:translatex(var(--move-distance))}}:root,:host{--van-cell-group-background:var(--van-background-2);--van-cell-group-title-color:var(--van-text-color-2);--van-cell-group-title-padding:var(--van-padding-md) var(--van-padding-md);--van-cell-group-title-font-size:var(--van-font-size-md);--van-cell-group-title-line-height:16px;--van-cell-group-inset-padding:0 var(--van-padding-md);--van-cell-group-inset-radius:var(--van-radius-lg);--van-cell-group-inset-title-padding:var(--van-padding-md) var(--van-padding-md)}.van-cell-group{background:var(--van-cell-group-background)}.van-cell-group--inset{margin:var(--van-cell-group-inset-padding);border-radius:var(--van-cell-group-inset-radius);overflow:hidden}.van-cell-group__title{padding:var(--van-cell-group-title-padding);color:var(--van-cell-group-title-color);font-size:var(--van-cell-group-title-font-size);line-height:var(--van-cell-group-title-line-height)}.van-cell-group__title--inset{padding:var(--van-cell-group-inset-title-padding)}:root,:host{--van-circle-size:100px;--van-circle-color:var(--van-primary-color);--van-circle-layer-color:var(--van-white);--van-circle-text-color:var(--van-text-color);--van-circle-text-font-weight:var(--van-font-bold);--van-circle-text-font-size:var(--van-font-size-md);--van-circle-text-line-height:var(--van-line-height-md)}.van-circle{position:relative;display:inline-block;width:var(--van-circle-size);height:var(--van-circle-size);text-align:center}.van-circle svg{position:absolute;top:0;left:0;width:100%;height:100%}.van-circle__layer{stroke:var(--van-circle-layer-color)}.van-circle__hover{fill:none;stroke:var(--van-circle-color);stroke-linecap:round}.van-circle__text{position:absolute;top:50%;left:0;box-sizing:border-box;width:100%;padding:0 var(--van-padding-base);color:var(--van-circle-text-color);font-weight:var(--van-circle-text-font-weight);font-size:var(--van-circle-text-font-size);line-height:var(--van-circle-text-line-height);transform:translatey(-50%)}.van-row{display:flex;flex-wrap:wrap}.van-row--nowrap{flex-wrap:nowrap}.van-row--justify-center{justify-content:center}.van-row--justify-end{justify-content:flex-end}.van-row--justify-space-between{justify-content:space-between}.van-row--justify-space-around{justify-content:space-around}.van-row--align-center{align-items:center}.van-row--align-bottom{align-items:flex-end}.van-col{display:block;box-sizing:border-box;min-height:1px}.van-col--1{flex:0 0 4.16666667%;max-width:4.16666667%}.van-col--offset-1{margin-left:4.16666667%}.van-col--2{flex:0 0 8.33333333%;max-width:8.33333333%}.van-col--offset-2{margin-left:8.33333333%}.van-col--3{flex:0 0 12.5%;max-width:12.5%}.van-col--offset-3{margin-left:12.5%}.van-col--4{flex:0 0 16.66666667%;max-width:16.66666667%}.van-col--offset-4{margin-left:16.66666667%}.van-col--5{flex:0 0 20.83333333%;max-width:20.83333333%}.van-col--offset-5{margin-left:20.83333333%}.van-col--6{flex:0 0 25%;max-width:25%}.van-col--offset-6{margin-left:25%}.van-col--7{flex:0 0 29.16666667%;max-width:29.16666667%}.van-col--offset-7{margin-left:29.16666667%}.van-col--8{flex:0 0 33.33333333%;max-width:33.33333333%}.van-col--offset-8{margin-left:33.33333333%}.van-col--9{flex:0 0 37.5%;max-width:37.5%}.van-col--offset-9{margin-left:37.5%}.van-col--10{flex:0 0 41.66666667%;max-width:41.66666667%}.van-col--offset-10{margin-left:41.66666667%}.van-col--11{flex:0 0 45.83333333%;max-width:45.83333333%}.van-col--offset-11{margin-left:45.83333333%}.van-col--12{flex:0 0 50%;max-width:50%}.van-col--offset-12{margin-left:50%}.van-col--13{flex:0 0 54.16666667%;max-width:54.16666667%}.van-col--offset-13{margin-left:54.16666667%}.van-col--14{flex:0 0 58.33333333%;max-width:58.33333333%}.van-col--offset-14{margin-left:58.33333333%}.van-col--15{flex:0 0 62.5%;max-width:62.5%}.van-col--offset-15{margin-left:62.5%}.van-col--16{flex:0 0 66.66666667%;max-width:66.66666667%}.van-col--offset-16{margin-left:66.66666667%}.van-col--17{flex:0 0 70.83333333%;max-width:70.83333333%}.van-col--offset-17{margin-left:70.83333333%}.van-col--18{flex:0 0 75%;max-width:75%}.van-col--offset-18{margin-left:75%}.van-col--19{flex:0 0 79.16666667%;max-width:79.16666667%}.van-col--offset-19{margin-left:79.16666667%}.van-col--20{flex:0 0 83.33333333%;max-width:83.33333333%}.van-col--offset-20{margin-left:83.33333333%}.van-col--21{flex:0 0 87.5%;max-width:87.5%}.van-col--offset-21{margin-left:87.5%}.van-col--22{flex:0 0 91.66666667%;max-width:91.66666667%}.van-col--offset-22{margin-left:91.66666667%}.van-col--23{flex:0 0 95.83333333%;max-width:95.83333333%}.van-col--offset-23{margin-left:95.83333333%}.van-col--24{flex:0 0 100%;max-width:100%}.van-col--offset-24{margin-left:100%}:root,:host{--van-count-down-text-color:var(--van-text-color);--van-count-down-font-size:var(--van-font-size-md);--van-count-down-line-height:var(--van-line-height-md)}.van-count-down{color:var(--van-count-down-text-color);font-size:var(--van-count-down-font-size);line-height:var(--van-count-down-line-height)}:root,:host{--van-empty-padding:var(--van-padding-xl) 0;--van-empty-image-size:160px;--van-empty-description-margin-top:var(--van-padding-md);--van-empty-description-padding:0 60px;--van-empty-description-color:var(--van-text-color-2);--van-empty-description-font-size:var(--van-font-size-md);--van-empty-description-line-height:var(--van-line-height-md);--van-empty-bottom-margin-top:24px}.van-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;box-sizing:border-box;padding:var(--van-empty-padding)}.van-empty__image{width:var(--van-empty-image-size);height:var(--van-empty-image-size)}.van-empty__image img{width:100%;height:100%}.van-empty__description{margin-top:var(--van-empty-description-margin-top);padding:var(--van-empty-description-padding);color:var(--van-empty-description-color);font-size:var(--van-empty-description-font-size);line-height:var(--van-empty-description-line-height)}.van-empty__bottom{margin-top:var(--van-empty-bottom-margin-top)}.van-theme-dark .van-empty{opacity:.5}:root,:host{--van-coupon-list-background:var(--van-background);--van-coupon-list-field-padding:5px 0 5px var(--van-padding-md);--van-coupon-list-exchange-button-height:32px;--van-coupon-list-close-button-height:40px;--van-coupon-list-empty-tip-color:var(--van-text-color-2);--van-coupon-list-empty-tip-font-size:var(--van-font-size-md);--van-coupon-list-empty-tip-line-height:var(--van-line-height-md)}.van-coupon-list{position:relative;height:100%;background:var(--van-coupon-list-background)}.van-coupon-list__field{padding:var(--van-coupon-list-field-padding)}.van-coupon-list__field .van-field__body{height:34px;padding-left:var(--van-padding-sm);line-height:34px;background:var(--van-background);border-radius:var(--van-radius-max)}.van-coupon-list__field .van-field__body::-webkit-input-placeholder{color:var(--van-text-color-3)}.van-coupon-list__field .van-field__body::placeholder{color:var(--van-text-color-3)}.van-coupon-list__field .van-field__clear{margin-right:0}.van-coupon-list__exchange-bar{display:flex;align-items:center;background-color:var(--van-background-2)}.van-coupon-list__exchange{flex:none;height:var(--van-coupon-list-exchange-button-height);font-size:var(--van-font-size-lg);line-height:calc(-2px + var(--van-coupon-list-exchange-button-height));border:0}.van-coupon-list .van-tabs__wrap{box-shadow:0 6px 12px -12px var(--van-gray-6)}.van-coupon-list__list{box-sizing:border-box;padding:var(--van-padding-md)0 var(--van-padding-lg);overflow-y:auto;-webkit-overflow-scrolling:touch}.van-coupon-list__list--with-bottom{padding-bottom:50px}.van-coupon-list__bottom{position:absolute;bottom:0;left:0;z-index:999;box-sizing:border-box;width:100%;padding:5px var(--van-padding-md);font-weight:var(--van-font-bold);background-color:var(--van-background-2)}.van-coupon-list__close{height:var(--van-coupon-list-close-button-height)}.van-coupon-list__empty-tip{color:var(--van-coupon-list-empty-tip-color);font-size:var(--van-coupon-list-empty-tip-font-size);line-height:var(--van-coupon-list-empty-tip-line-height)}:root,:host{--van-divider-margin:var(--van-padding-md) 0;--van-divider-vertical-margin:0 var(--van-padding-xs);--van-divider-text-color:var(--van-text-color-2);--van-divider-font-size:var(--van-font-size-md);--van-divider-line-height:24px;--van-divider-border-color:var(--van-border-color);--van-divider-content-padding:var(--van-padding-md);--van-divider-content-left-width:10%;--van-divider-content-right-width:10%}.van-divider{display:flex;align-items:center;margin:var(--van-divider-margin);color:var(--van-divider-text-color);font-size:var(--van-divider-font-size);line-height:var(--van-divider-line-height);border-color:var(--van-divider-border-color);border-style:solid;border-width:0}.van-divider:before,.van-divider:after{display:block;flex:1;box-sizing:border-box;height:1px;border-color:inherit;border-style:inherit;border-width:var(--van-border-width)0 0}.van-divider:before{content:""}.van-divider--hairline:before,.van-divider--hairline:after{transform:scaley(.5)}.van-divider--dashed{border-style:dashed}.van-divider--content-center:before,.van-divider--content-left:before,.van-divider--content-right:before{margin-right:var(--van-divider-content-padding)}.van-divider--content-center:after,.van-divider--content-left:after,.van-divider--content-right:after{margin-left:var(--van-divider-content-padding);content:""}.van-divider--content-left:before{max-width:var(--van-divider-content-left-width)}.van-divider--content-right:after{max-width:var(--van-divider-content-right-width)}.van-divider--vertical{display:inline-block;width:var(--van-border-width);height:1em;margin:var(--van-divider-vertical-margin);vertical-align:middle}.van-divider--vertical:before{height:100%;border-width:0 0 0 var(--van-border-width)}.van-divider--vertical:after{display:none}.van-divider--vertical.van-divider--hairline:before{transform:scalex(.5)}:root,:host{--van-dropdown-menu-height:48px;--van-dropdown-menu-background:var(--van-background-2);--van-dropdown-menu-shadow:0 2px 12px rgba(100, 101, 102, 0.12);--van-dropdown-menu-title-font-size:15px;--van-dropdown-menu-title-text-color:var(--van-text-color);--van-dropdown-menu-title-active-text-color:var(--van-primary-color);--van-dropdown-menu-title-disabled-text-color:var(--van-text-color-2);--van-dropdown-menu-title-padding:0 var(--van-padding-xs);--van-dropdown-menu-title-line-height:var(--van-line-height-lg);--van-dropdown-menu-option-active-color:var(--van-primary-color);--van-dropdown-menu-option-disabled-color:var(--van-text-color-3);--van-dropdown-menu-content-max-height:80%}.van-dropdown-menu{-webkit-user-select:none;user-select:none}.van-dropdown-menu__bar{position:relative;display:flex;height:var(--van-dropdown-menu-height);background:var(--van-dropdown-menu-background);box-shadow:var(--van-dropdown-menu-shadow)}.van-dropdown-menu__bar--opened{z-index:calc(1 + var(--van-dropdown-item-z-index))}.van-dropdown-menu__bar--scrollable{padding-left:var(--van-padding-base);padding-right:var(--van-padding-xs);overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch}.van-dropdown-menu__bar--scrollable::-webkit-scrollbar{display:none}.van-dropdown-menu__item{display:flex;flex:1;align-items:center;justify-content:center;min-width:0}.van-dropdown-menu__item--disabled .van-dropdown-menu__title{color:var(--van-dropdown-menu-title-disabled-text-color)}.van-dropdown-menu__item--grow{flex:1 0 auto;padding-left:var(--van-padding-base);padding-right:var(--van-padding-sm)}.van-dropdown-menu__title{position:relative;box-sizing:border-box;max-width:100%;padding:var(--van-dropdown-menu-title-padding);color:var(--van-dropdown-menu-title-text-color);font-size:var(--van-dropdown-menu-title-font-size);line-height:var(--van-dropdown-menu-title-line-height)}.van-dropdown-menu__title:after{position:absolute;top:50%;right:-4px;margin-top:-5px;border:3px solid;border-color:transparent transparent var(--van-gray-4)var(--van-gray-4);transform:rotate(315deg);opacity:.8;content:""}.van-dropdown-menu__title--active{color:var(--van-dropdown-menu-title-active-text-color)}.van-dropdown-menu__title--active:after{border-color:transparent transparent currentColor currentColor}.van-dropdown-menu__title--down:after{margin-top:-1px;transform:rotate(135deg)}:root,:host{--van-dropdown-item-z-index:10}.van-dropdown-item{position:fixed;right:0;left:0;z-index:var(--van-dropdown-item-z-index);overflow:hidden}.van-dropdown-item__icon{display:block;line-height:inherit}.van-dropdown-item__option{text-align:left}.van-dropdown-item__option--active,.van-dropdown-item__option--active .van-dropdown-item__icon{color:var(--van-dropdown-menu-option-active-color)}.van-dropdown-item__option--disabled,.van-dropdown-item__option--disabled .van-dropdown-item__icon{color:var(--van-dropdown-menu-option-disabled-color)}.van-dropdown-item--up{top:0}.van-dropdown-item--down{bottom:0}.van-dropdown-item__content{position:absolute;max-height:var(--van-dropdown-menu-content-max-height)}:root,:host{--van-floating-panel-border-radius:16px;--van-floating-panel-header-height:30px;--van-floating-panel-z-index:999;--van-floating-panel-background:var(--van-background-2);--van-floating-panel-bar-width:20px;--van-floating-panel-bar-height:3px;--van-floating-panel-bar-color:var(--van-gray-5)}.van-floating-panel{position:fixed;left:0;bottom:0;width:100vw;z-index:var(--van-floating-panel-z-index);display:flex;flex-direction:column;touch-action:none;border-top-left-radius:var(--van-floating-panel-border-radius);border-top-right-radius:var(--van-floating-panel-border-radius);background:var(--van-floating-panel-background);will-change:transform}.van-floating-panel:after{content:"";display:block;position:absolute;bottom:-100vh;height:100vh;width:100vw;background-color:inherit}.van-floating-panel__header{height:var(--van-floating-panel-header-height);display:flex;justify-content:center;align-items:center;cursor:-webkit-grab;cursor:grab;-webkit-user-select:none;user-select:none}.van-floating-panel__header-bar{height:var(--van-floating-panel-bar-height);width:var(--van-floating-panel-bar-width);border-radius:var(--van-radius-md);background:var(--van-floating-panel-bar-color)}.van-floating-panel__content{flex:1;overflow-y:auto;background-color:var(--van-floating-panel-background)}.van-grid{display:flex;flex-wrap:wrap}:root,:host{--van-grid-item-content-padding:var(--van-padding-md) var(--van-padding-xs);--van-grid-item-content-background:var(--van-background-2);--van-grid-item-content-active-color:var(--van-active-color);--van-grid-item-icon-size:28px;--van-grid-item-text-color:var(--van-text-color);--van-grid-item-text-font-size:var(--van-font-size-sm)}.van-grid-item{position:relative;box-sizing:border-box}.van-grid-item--square{height:0}.van-grid-item__icon{font-size:var(--van-grid-item-icon-size)}.van-grid-item__text{color:var(--van-grid-item-text-color);font-size:var(--van-grid-item-text-font-size);line-height:1.5;word-break:break-all}.van-grid-item__icon+.van-grid-item__text{margin-top:var(--van-padding-xs)}.van-grid-item__content{display:flex;flex-direction:column;box-sizing:border-box;height:100%;padding:var(--van-grid-item-content-padding);background:var(--van-grid-item-content-background)}.van-grid-item__content:after{z-index:1;border-width:0 var(--van-border-width)var(--van-border-width)0}.van-grid-item__content--square{position:absolute;top:0;right:0;left:0}.van-grid-item__content--center{align-items:center;justify-content:center}.van-grid-item__content--horizontal{flex-direction:row}.van-grid-item__content--horizontal .van-grid-item__text{margin:0 0 0 var(--van-padding-xs)}.van-grid-item__content--reverse{flex-direction:column-reverse}.van-grid-item__content--reverse .van-grid-item__text{margin:0 0 var(--van-padding-xs)}.van-grid-item__content--horizontal.van-grid-item__content--reverse{flex-direction:row-reverse}.van-grid-item__content--horizontal.van-grid-item__content--reverse .van-grid-item__text{margin:0 var(--van-padding-xs)0 0}.van-grid-item__content--surround:after{border-width:var(--van-border-width)}.van-grid-item__content--clickable{cursor:pointer}.van-grid-item__content--clickable:active{background-color:var(--van-grid-item-content-active-color)}:root,:host{--van-highlight-tag-color:var(--van-primary-color)}.van-highlight__tag{color:var(--van-highlight-tag-color)}:root,:host{--van-index-bar-sidebar-z-index:2;--van-index-bar-index-font-size:var(--van-font-size-xs);--van-index-bar-index-line-height:var(--van-line-height-xs);--van-index-bar-index-active-color:var(--van-primary-color)}.van-index-bar__sidebar{position:fixed;top:50%;right:0;z-index:var(--van-index-bar-sidebar-z-index);display:flex;flex-direction:column;text-align:center;transform:translatey(-50%);cursor:pointer;-webkit-user-select:none;user-select:none}.van-index-bar__index{padding:0 var(--van-padding-xs)0 var(--van-padding-md);font-weight:var(--van-font-bold);font-size:var(--van-index-bar-index-font-size);line-height:var(--van-index-bar-index-line-height)}.van-index-bar__index--active{color:var(--van-index-bar-index-active-color);font-weight:700}:root,:host{--van-index-anchor-z-index:1;--van-index-anchor-padding:0 var(--van-padding-md);--van-index-anchor-text-color:var(--van-text-color);--van-index-anchor-font-weight:var(--van-font-bold);--van-index-anchor-font-size:var(--van-font-size-md);--van-index-anchor-line-height:32px;--van-index-anchor-background:transparent;--van-index-anchor-sticky-text-color:var(--van-primary-color);--van-index-anchor-sticky-background:var(--van-background-2)}.van-index-anchor{z-index:var(--van-index-anchor-z-index);box-sizing:border-box;padding:var(--van-index-anchor-padding);color:var(--van-index-anchor-text-color);font-weight:var(--van-index-anchor-font-weight);font-size:var(--van-index-anchor-font-size);line-height:var(--van-index-anchor-line-height);background:var(--van-index-anchor-background)}.van-index-anchor--sticky{position:fixed;top:0;right:0;left:0;color:var(--van-index-anchor-sticky-text-color);background:var(--van-index-anchor-sticky-background)}:root,:host{--van-pagination-height:40px;--van-pagination-font-size:var(--van-font-size-md);--van-pagination-item-width:36px;--van-pagination-item-default-color:var(--van-primary-color);--van-pagination-item-disabled-color:var(--van-gray-7);--van-pagination-item-disabled-background:var(--van-background);--van-pagination-background:var(--van-background-2);--van-pagination-desc-color:var(--van-gray-7);--van-pagination-disabled-opacity:var(--van-disabled-opacity)}.van-pagination{font-size:var(--van-pagination-font-size)}.van-pagination__items{display:flex}.van-pagination__item,.van-pagination__page-desc{display:flex;align-items:center;justify-content:center}.van-pagination__item{flex:1;box-sizing:border-box;min-width:var(--van-pagination-item-width);height:var(--van-pagination-height);color:var(--van-pagination-item-default-color);background:var(--van-pagination-background);cursor:pointer;-webkit-user-select:none;user-select:none}.van-pagination__item button{flex:1;height:100%;border:none;padding:0;background:transparent}.van-pagination__item button[disabled]{cursor:not-allowed}.van-pagination__item:active{color:var(--van-white);background-color:var(--van-pagination-item-default-color)}.van-pagination__item:not(:last-child):after{border-right-width:0}.van-pagination__item--active{color:var(--van-white);background-color:var(--van-pagination-item-default-color)}.van-pagination__item--page{flex-grow:0}.van-pagination__item--prev,.van-pagination__item--next{padding:0 var(--van-padding-base);cursor:pointer}.van-pagination__item--border:first-child:after{border-right-width:var(--van-border-width)}.van-pagination__item--disabled,.van-pagination__item--disabled:active{color:var(--van-pagination-item-disabled-color);background-color:var(--van-pagination-item-disabled-background);opacity:var(--van-pagination-disabled-opacity)}.van-pagination__page-desc{flex:1;height:var(--van-pagination-height);color:var(--van-pagination-desc-color)}:root,:host{--van-password-input-height:50px;--van-password-input-margin:0 var(--van-padding-md);--van-password-input-font-size:20px;--van-password-input-radius:6px;--van-password-input-background:var(--van-background-2);--van-password-input-info-color:var(--van-text-color-2);--van-password-input-info-font-size:var(--van-font-size-md);--van-password-input-error-info-color:var(--van-danger-color);--van-password-input-dot-size:10px;--van-password-input-dot-color:var(--van-text-color);--van-password-input-text-color:var(--van-text-color);--van-password-input-cursor-color:var(--van-text-color);--van-password-input-cursor-width:1px;--van-password-input-cursor-height:40%;--van-password-input-cursor-duration:1s}.van-password-input{position:relative;margin:var(--van-password-input-margin);-webkit-user-select:none;user-select:none}.van-password-input__info,.van-password-input__error-info{margin-top:var(--van-padding-md);font-size:var(--van-password-input-info-font-size);text-align:center}.van-password-input__info{color:var(--van-password-input-info-color)}.van-password-input__error-info{color:var(--van-password-input-error-info-color)}.van-password-input__security{display:flex;width:100%;height:var(--van-password-input-height);cursor:pointer}.van-password-input__security:after{border-radius:var(--van-password-input-radius)}.van-password-input__security li{position:relative;display:flex;flex:1;align-items:center;justify-content:center;height:100%;color:var(--van-password-input-text-color);font-size:var(--van-password-input-font-size);line-height:1.2;background:var(--van-password-input-background)}.van-password-input__security i{position:absolute;top:50%;left:50%;width:var(--van-password-input-dot-size);height:var(--van-password-input-dot-size);background:var(--van-password-input-dot-color);border-radius:100%;transform:translate(-50%,-50%);visibility:hidden}.van-password-input__cursor{position:absolute;top:50%;left:50%;width:var(--van-password-input-cursor-width);height:var(--van-password-input-cursor-height);background:var(--van-password-input-cursor-color);transform:translate(-50%,-50%);animation:var(--van-password-input-cursor-duration)van-cursor-flicker infinite}@keyframes van-cursor-flicker{0%{opacity:0}50%{opacity:1}to{opacity:0}}:root,:host{--van-progress-height:4px;--van-progress-color:var(--van-primary-color);--van-progress-inactive-color:var(--van-gray-5);--van-progress-background:var(--van-gray-3);--van-progress-pivot-padding:0 5px;--van-progress-pivot-text-color:var(--van-white);--van-progress-pivot-font-size:var(--van-font-size-xs);--van-progress-pivot-line-height:1.6;--van-progress-pivot-background:var(--van-primary-color)}.van-progress{position:relative;height:var(--van-progress-height);background:var(--van-progress-background);border-radius:var(--van-progress-height)}.van-progress__portion{position:absolute;left:0;width:100%;height:100%;background:var(--van-progress-color);border-radius:inherit;transform-origin:0;transition:all var(--van-duration-base)var(--van-ease-out)}.van-progress__portion--inactive{background:var(--van-progress-inactive-color)}.van-progress__pivot{position:absolute;top:50%;box-sizing:border-box;min-width:3.6em;padding:var(--van-progress-pivot-padding);color:var(--van-progress-pivot-text-color);font-size:var(--van-progress-pivot-font-size);line-height:var(--van-progress-pivot-line-height);text-align:center;word-break:keep-all;background:var(--van-progress-pivot-background);border-radius:1em;transition:all var(--van-duration-base)var(--van-ease-out)}.van-progress__pivot--inactive{background:var(--van-progress-inactive-color)}:root,:host{--van-rolling-text-background:inherit;--van-rolling-text-color:var(--van-text-color);--van-rolling-text-font-size:var(--van-font-size-md);--van-rolling-text-gap:0px;--van-rolling-text-item-width:15px;--van-rolling-text-item-border-radius:0px}.van-rolling-text{display:inline-flex;justify-content:center;align-items:center;font-size:var(--van-rolling-text-font-size);color:var(--van-rolling-text-color)}.van-rolling-text-item{margin-right:var(--van-rolling-text-gap);width:var(--van-rolling-text-item-width);border-radius:var(--van-rolling-text-item-border-radius);background:var(--van-rolling-text-background);overflow:hidden}.van-rolling-text-item:last-child{margin-right:0}.van-rolling-text-item__box{overflow:hidden}.van-rolling-text-item__box--animate{animation:van-up var(--van-duration)ease-in-out var(--van-delay);animation-iteration-count:1;animation-fill-mode:both}.van-rolling-text-item__item{text-align:center}.van-rolling-text-item--down .van-rolling-text-item__box{transform:translatey(var(--van-translate))}.van-rolling-text-item--down .van-rolling-text-item__box--animate{animation-name:van-down}@keyframes van-down{0%{transform:translatey(var(--van-translate))}to{transform:translatey(0)}}@keyframes van-up{0%{transform:translatey(0)}to{transform:translatey(var(--van-translate))}}:root,:host{--van-sidebar-width:80px}.van-sidebar{width:var(--van-sidebar-width);overflow-y:auto;-webkit-overflow-scrolling:touch}:root,:host{--van-sidebar-font-size:var(--van-font-size-md);--van-sidebar-line-height:var(--van-line-height-md);--van-sidebar-text-color:var(--van-text-color);--van-sidebar-disabled-text-color:var(--van-text-color-3);--van-sidebar-padding:20px var(--van-padding-sm);--van-sidebar-active-color:var(--van-active-color);--van-sidebar-background:var(--van-background);--van-sidebar-selected-font-weight:var(--van-font-bold);--van-sidebar-selected-text-color:var(--van-text-color);--van-sidebar-selected-border-width:4px;--van-sidebar-selected-border-height:16px;--van-sidebar-selected-border-color:var(--van-primary-color);--van-sidebar-selected-background:var(--van-background-2)}.van-sidebar-item{position:relative;display:block;box-sizing:border-box;padding:var(--van-sidebar-padding);overflow:hidden;color:var(--van-sidebar-text-color);font-size:var(--van-sidebar-font-size);line-height:var(--van-sidebar-line-height);background:var(--van-sidebar-background);cursor:pointer;-webkit-user-select:none;user-select:none}.van-sidebar-item:active{background-color:var(--van-sidebar-active-color)}.van-sidebar-item:not(:last-child):after{border-bottom-width:1px}.van-sidebar-item__text{word-break:break-all}.van-sidebar-item--select{color:var(--van-sidebar-selected-text-color);font-weight:var(--van-sidebar-selected-font-weight)}.van-sidebar-item--select,.van-sidebar-item--select:active{background-color:var(--van-sidebar-selected-background)}.van-sidebar-item--select:before{position:absolute;top:50%;left:0;width:var(--van-sidebar-selected-border-width);height:var(--van-sidebar-selected-border-height);background-color:var(--van-sidebar-selected-border-color);transform:translatey(-50%);content:""}.van-sidebar-item--disabled{color:var(--van-sidebar-disabled-text-color);cursor:not-allowed}.van-sidebar-item--disabled:active{background-color:var(--van-sidebar-background)}:root,:host{--van-tree-select-font-size:var(--van-font-size-md);--van-tree-select-nav-background:var(--van-background);--van-tree-select-content-background:var(--van-background-2);--van-tree-select-nav-item-padding:14px var(--van-padding-sm);--van-tree-select-item-height:48px;--van-tree-select-item-active-color:var(--van-primary-color);--van-tree-select-item-disabled-color:var(--van-gray-5);--van-tree-select-item-selected-size:16px}.van-tree-select{position:relative;display:flex;font-size:var(--van-tree-select-font-size)}.van-tree-select__nav{flex:1;overflow-y:auto;background:var(--van-tree-select-nav-background);-webkit-overflow-scrolling:touch}.van-tree-select__nav-item{padding:var(--van-tree-select-nav-item-padding)}.van-tree-select__content{flex:2;overflow-y:auto;background:var(--van-tree-select-content-background);-webkit-overflow-scrolling:touch}.van-tree-select__item{position:relative;padding:0 32px 0 var(--van-padding-md);font-weight:var(--van-font-bold);line-height:var(--van-tree-select-item-height);-webkit-user-select:none;user-select:none;cursor:pointer}.van-tree-select__item--active{color:var(--van-tree-select-item-active-color)}.van-tree-select__item:active{background-color:var(--van-active-color)}.van-tree-select__item--disabled{color:var(--van-tree-select-item-disabled-color);cursor:not-allowed}.van-tree-select__item--disabled:active{background-color:transparent}.van-tree-select__selected{position:absolute;top:50%;right:var(--van-padding-md);margin-top:calc(-1*var(--van-padding-xs));font-size:var(--van-tree-select-item-selected-size)}:root,:host{--van-skeleton-title-width:40%}.van-skeleton-title{height:var(--van-skeleton-paragraph-height);background:var(--van-skeleton-paragraph-background)}.van-skeleton-title--round{border-radius:var(--van-radius-max)}.van-skeleton-title{width:var(--van-skeleton-title-width);margin:0}.van-skeleton-title+.van-skeleton-paragraph{margin-top:20px}:root,:host{--van-skeleton-avatar-size:32px;--van-skeleton-avatar-background:var(--van-active-color)}.van-skeleton-avatar{flex-shrink:0;width:var(--van-skeleton-avatar-size);height:var(--van-skeleton-avatar-size);margin-right:var(--van-padding-md);background:var(--van-skeleton-avatar-background)}.van-skeleton-avatar--round{border-radius:var(--van-radius-max)}.van-skeleton-avatar+.van-skeleton__content{padding-top:var(--van-padding-xs)}:root,:host{--van-skeleton-paragraph-height:16px;--van-skeleton-paragraph-background:var(--van-active-color);--van-skeleton-paragraph-margin-top:var(--van-padding-sm)}.van-skeleton-paragraph{height:var(--van-skeleton-paragraph-height);background:var(--van-skeleton-paragraph-background)}.van-skeleton-paragraph--round{border-radius:var(--van-radius-max)}.van-skeleton-paragraph:not(:first-child){margin-top:var(--van-skeleton-paragraph-margin-top)}:root,:host{--van-skeleton-duration:1.2s}.van-skeleton{display:flex;padding:0 var(--van-padding-md)}.van-skeleton__content{width:100%}.van-skeleton--animate{animation:van-skeleton-blink var(--van-skeleton-duration)ease-in-out infinite}@keyframes van-skeleton-blink{50%{opacity:.6}}:root,:host{--van-slider-active-background:var(--van-primary-color);--van-slider-inactive-background:var(--van-gray-3);--van-slider-disabled-opacity:var(--van-disabled-opacity);--van-slider-bar-height:2px;--van-slider-button-width:24px;--van-slider-button-height:24px;--van-slider-button-radius:50%;--van-slider-button-background:var(--van-white);--van-slider-button-shadow:0 1px 2px rgba(0, 0, 0, 0.5)}.van-theme-dark{--van-slider-inactive-background:var(--van-background-3)}.van-slider{position:relative;width:100%;height:var(--van-slider-bar-height);background:var(--van-slider-inactive-background);border-radius:var(--van-radius-max);cursor:pointer}.van-slider:before{position:absolute;top:calc(-1*var(--van-padding-xs));right:0;bottom:calc(-1*var(--van-padding-xs));left:0;content:""}.van-slider__bar{position:absolute;width:100%;height:100%;background:var(--van-slider-active-background);border-radius:inherit;transition:all var(--van-duration-fast)}.van-slider__button{width:var(--van-slider-button-width);height:var(--van-slider-button-height);background:var(--van-slider-button-background);border-radius:var(--van-slider-button-radius);box-shadow:var(--van-slider-button-shadow)}.van-slider__button-wrapper{position:absolute;cursor:-webkit-grab;cursor:grab;top:50%}.van-slider__button-wrapper--right{right:0;transform:translate3d(50%,-50%,0)}.van-slider__button-wrapper--left{left:0;transform:translate3d(-50%,-50%,0)}.van-slider--disabled{cursor:not-allowed;opacity:var(--van-slider-disabled-opacity)}.van-slider--disabled .van-slider__button-wrapper{cursor:not-allowed}.van-slider--vertical{display:inline-block;width:var(--van-slider-bar-height);height:100%}.van-slider--vertical .van-slider__button-wrapper--right{top:auto;right:50%;bottom:0;transform:translate3d(50%,50%,0)}.van-slider--vertical .van-slider__button-wrapper--left{top:0;right:50%;left:auto;transform:translate3d(50%,-50%,0)}.van-slider--vertical:before{top:0;right:calc(-1*var(--van-padding-xs));bottom:0;left:calc(-1*var(--van-padding-xs))}.van-space{display:inline-flex}.van-space--horizontal .van-space-item{display:flex;align-items:center}.van-space--vertical{flex-direction:column}.van-space--align-baseline{align-items:baseline}.van-space--align-start{align-items:flex-start}.van-space--align-end{align-items:flex-end}.van-space--align-center{align-items:center}.van-space--wrap{flex-wrap:wrap}.van-space--fill{display:flex}:root,:host{--van-steps-background:var(--van-background-2)}.van-steps{overflow:hidden;background-color:var(--van-steps-background)}.van-steps--horizontal{padding:10px 10px 0}.van-steps--horizontal .van-steps__items{position:relative;display:flex;margin:0 0 10px;padding-bottom:22px}.van-steps--vertical{padding:0 0 0 var(--van-padding-xl)}:root,:host{--van-step-text-color:var(--van-text-color-2);--van-step-active-color:var(--van-primary-color);--van-step-process-text-color:var(--van-text-color);--van-step-font-size:var(--van-font-size-md);--van-step-line-color:var(--van-border-color);--van-step-finish-line-color:var(--van-primary-color);--van-step-finish-text-color:var(--van-text-color);--van-step-icon-size:12px;--van-step-circle-size:5px;--van-step-circle-color:var(--van-gray-6);--van-step-horizontal-title-font-size:var(--van-font-size-sm)}.van-step{position:relative;flex:1;color:var(--van-step-text-color);font-size:var(--van-step-font-size)}.van-step__circle{display:block;width:var(--van-step-circle-size);height:var(--van-step-circle-size);background-color:var(--van-step-circle-color);border-radius:50%}.van-step__line{position:absolute;background-color:var(--van-step-line-color);transition:background-color var(--van-duration-base)}.van-step--horizontal{float:left}.van-step--horizontal:first-child .van-step__title{margin-left:0;transform:none}.van-step--horizontal:last-child:not(:first-child){position:absolute;right:1px;width:auto}.van-step--horizontal:last-child:not(:first-child) .van-step__title{margin-left:0;transform:none}.van-step--horizontal:last-child:not(:first-child) .van-step__circle-container{right:-9px;left:auto}.van-step--horizontal .van-step__circle-container{position:absolute;top:30px;left:calc(-1*var(--van-padding-xs));z-index:1;padding:0 var(--van-padding-xs);background-color:var(--van-background-2);transform:translatey(-50%)}.van-step--horizontal .van-step__title{display:inline-block;margin-left:3px;font-size:var(--van-step-horizontal-title-font-size);transform:translatex(-50%)}.van-step--horizontal .van-step__line{top:30px;left:0;width:100%;height:1px}.van-step--horizontal .van-step__icon{display:block;font-size:var(--van-step-icon-size)}.van-step--horizontal .van-step--process{color:var(--van-step-process-text-color)}.van-step--vertical{display:block;float:none;padding:10px 10px 10px 0;line-height:var(--van-line-height-sm)}.van-step--vertical:not(:last-child):after{border-bottom-width:1px}.van-step--vertical .van-step__circle-container{position:absolute;top:19px;left:-15px;z-index:1;font-size:var(--van-step-icon-size);line-height:1;transform:translate(-50%,-50%)}.van-step--vertical .van-step__line{top:16px;left:-15px;width:1px;height:100%}.van-step:last-child .van-step__line{width:0}.van-step--finish{color:var(--van-step-finish-text-color)}.van-step--finish .van-step__circle,.van-step--finish .van-step__line{background-color:var(--van-step-finish-line-color)}.van-step__icon,.van-step__title{transition:color var(--van-duration-base)}.van-step__icon--active,.van-step__title--active,.van-step__icon--finish,.van-step__title--finish{color:var(--van-step-active-color)}:root,:host{--van-stepper-background:var(--van-active-color);--van-stepper-button-icon-color:var(--van-text-color);--van-stepper-button-disabled-color:var(--van-background);--van-stepper-button-disabled-icon-color:var(--van-gray-5);--van-stepper-button-round-theme-color:var(--van-primary-color);--van-stepper-input-width:32px;--van-stepper-input-height:28px;--van-stepper-input-font-size:var(--van-font-size-md);--van-stepper-input-line-height:normal;--van-stepper-input-text-color:var(--van-text-color);--van-stepper-input-disabled-text-color:var(--van-text-color-3);--van-stepper-input-disabled-background:var(--van-active-color);--van-stepper-radius:var(--van-radius-md)}.van-stepper{display:inline-block;-webkit-user-select:none;user-select:none}.van-stepper__minus,.van-stepper__plus{position:relative;box-sizing:border-box;width:var(--van-stepper-input-height);height:var(--van-stepper-input-height);margin:0;padding:0;color:var(--van-stepper-button-icon-color);vertical-align:middle;background:var(--van-stepper-background);border:0}.van-stepper__minus:before,.van-stepper__plus:before{width:50%;height:1px}.van-stepper__minus:after,.van-stepper__plus:after{width:1px;height:50%}.van-stepper__minus:before,.van-stepper__plus:before,.van-stepper__minus:after,.van-stepper__plus:after{position:absolute;top:50%;left:50%;background-color:currentColor;transform:translate(-50%,-50%);content:""}.van-stepper__minus--disabled,.van-stepper__plus--disabled{color:var(--van-stepper-button-disabled-icon-color);background-color:var(--van-stepper-button-disabled-color);cursor:not-allowed}.van-stepper__minus{border-radius:var(--van-stepper-radius)0 0 var(--van-stepper-radius)}.van-stepper__minus:after{display:none}.van-stepper__plus{border-radius:0 var(--van-stepper-radius)var(--van-stepper-radius)0}.van-stepper__input{box-sizing:border-box;width:var(--van-stepper-input-width);height:var(--van-stepper-input-height);margin:0 2px;padding:0;color:var(--van-stepper-input-text-color);font-size:var(--van-stepper-input-font-size);line-height:var(--van-stepper-input-line-height);text-align:center;vertical-align:middle;background:var(--van-stepper-background);border:0;border-width:1px 0;border-radius:0;-webkit-appearance:none}.van-stepper__input:disabled{color:var(--van-stepper-input-disabled-text-color);background-color:var(--van-stepper-input-disabled-background);-webkit-text-fill-color:var(--van-stepper-input-disabled-text-color);opacity:1}.van-stepper__input:read-only{cursor:default}.van-stepper--round .van-stepper__input{background-color:transparent}.van-stepper--round .van-stepper__plus,.van-stepper--round .van-stepper__minus{border-radius:100%}.van-stepper--round .van-stepper__plus--disabled,.van-stepper--round .van-stepper__minus--disabled{opacity:.3;cursor:not-allowed}.van-stepper--round .van-stepper__plus{color:var(--van-white);background:var(--van-stepper-button-round-theme-color)}.van-stepper--round .van-stepper__minus{color:var(--van-stepper-button-round-theme-color);background-color:var(--van-background-2);border:1px solid var(--van-stepper-button-round-theme-color)}.van-swipe-cell{position:relative;overflow:hidden;cursor:-webkit-grab;cursor:grab}.van-swipe-cell__wrapper{transition-timing-function:cubic-bezier(.18,.89,.32,1);transition-property:transform}.van-swipe-cell__left,.van-swipe-cell__right{position:absolute;top:0;height:100%}.van-swipe-cell__left{left:0;transform:translate3d(-100%,0,0)}.van-swipe-cell__right{right:0;transform:translate3d(100%,0,0)}:root,:host{--van-tabbar-height:50px;--van-tabbar-z-index:1;--van-tabbar-background:var(--van-background-2)}.van-tabbar{z-index:var(--van-tabbar-z-index);display:flex;box-sizing:content-box;width:100%;height:var(--van-tabbar-height);background:var(--van-tabbar-background)}.van-tabbar--fixed{position:fixed;bottom:0;left:0}:root,:host{--van-tabbar-item-font-size:var(--van-font-size-sm);--van-tabbar-item-text-color:var(--van-text-color);--van-tabbar-item-active-color:var(--van-primary-color);--van-tabbar-item-active-background:var(--van-background-2);--van-tabbar-item-line-height:1;--van-tabbar-item-icon-size:22px;--van-tabbar-item-icon-margin-bottom:var(--van-padding-base)}.van-tabbar-item{display:flex;flex:1;flex-direction:column;align-items:center;justify-content:center;color:var(--van-tabbar-item-text-color);font-size:var(--van-tabbar-item-font-size);line-height:var(--van-tabbar-item-line-height);cursor:pointer}.van-tabbar-item__icon{margin-bottom:var(--van-tabbar-item-icon-margin-bottom);font-size:var(--van-tabbar-item-icon-size)}.van-tabbar-item__icon .van-icon{display:block}.van-tabbar-item__icon .van-badge{margin-top:var(--van-padding-base)}.van-tabbar-item__icon img{display:block;height:20px}.van-tabbar-item--active{color:var(--van-tabbar-item-active-color);background-color:var(--van-tabbar-item-active-background)}:root,:host{--van-text-ellipsis-line-height:1.6;--van-text-ellipsis-action-color:var(--van-blue)}.van-text-ellipsis{line-height:var(--van-text-ellipsis-line-height);white-space:pre-wrap;overflow-wrap:break-word}.van-text-ellipsis__action{cursor:pointer;color:var(--van-text-ellipsis-action-color)}.van-text-ellipsis__action:active{opacity:var(--van-active-opacity)}:root,:host{--van-watermark-z-index:100}.van-watermark{position:absolute;height:100%;width:100%;left:0;top:0;z-index:var(--van-watermark-z-index);background-repeat:repeat;pointer-events:none}.van-watermark__wrapper{display:none}.van-watermark--full{position:fixed} \ No newline at end of file diff --git a/vant/static/css/async/1009.9fa81bb0.css b/vant/static/css/async/1009.9fa81bb0.css new file mode 100644 index 00000000..03775b85 --- /dev/null +++ b/vant/static/css/async/1009.9fa81bb0.css @@ -0,0 +1 @@ +.demo-text-ellipsis{font-size:15px;background-color:var(--van-background-2)}.demo-text-ellipsis .van-text-ellipsis{padding:0 16px} \ No newline at end of file diff --git a/vant/static/css/async/1074.119e5a94.css b/vant/static/css/async/1074.119e5a94.css new file mode 100644 index 00000000..614a3b47 --- /dev/null +++ b/vant/static/css/async/1074.119e5a94.css @@ -0,0 +1 @@ +.demo-rolling-text .van-button,.demo-rolling-text .van-rolling-text{margin-left:var(--van-padding-md)}.demo-rolling-text .my-rolling-text{--van-rolling-text-background:#1989fa;--van-rolling-text-color:white;--van-rolling-text-font-size:24px;--van-rolling-text-gap:6px;--van-rolling-text-item-border-radius:5px;--van-rolling-text-item-width:40px} \ No newline at end of file diff --git a/vant/static/css/async/1201.14986eaf.css b/vant/static/css/async/1201.14986eaf.css new file mode 100644 index 00000000..5351eb9c --- /dev/null +++ b/vant/static/css/async/1201.14986eaf.css @@ -0,0 +1 @@ +.demo-col .van-doc-demo-block{padding:0 var(--van-padding-md)}.demo-col .van-doc-demo-block__title{padding-left:0}.demo-col .van-col{margin-bottom:10px;color:var(--van-white);font-size:13px;line-height:30px;text-align:center;background-clip:content-box}.demo-col .van-col:nth-child(odd){background-color:#39a9ed}.demo-col .van-col:nth-child(2n){background-color:#66c6f2}.demo-vertical-space .van-col{margin-bottom:0} \ No newline at end of file diff --git a/vant/static/css/async/1223.1d1a4b4a.css b/vant/static/css/async/1223.1d1a4b4a.css new file mode 100644 index 00000000..29d12e66 --- /dev/null +++ b/vant/static/css/async/1223.1d1a4b4a.css @@ -0,0 +1 @@ +.demo-notice-bar .van-notice-bar:not(:first-of-type){margin-top:4px}.demo-notice-bar .van-doc-demo-block__title{padding-top:24px}.demo-notice-bar .notice-swipe{height:40px;line-height:40px} \ No newline at end of file diff --git a/vant/static/css/async/1587.cb53b54a.css b/vant/static/css/async/1587.cb53b54a.css new file mode 100644 index 00000000..e300f6d8 --- /dev/null +++ b/vant/static/css/async/1587.cb53b54a.css @@ -0,0 +1 @@ +.demo-pull-refresh{background-color:var(--van-background-2)}.demo-pull-refresh .van-pull-refresh{height:calc(100vh - 50px)}.demo-pull-refresh .doge{width:140px;height:72px;margin-top:8px;border-radius:4px}.demo-pull-refresh p{margin:0;padding:var(--van-padding-md)0 0 var(--van-padding-md)} \ No newline at end of file diff --git a/vant/static/css/async/1654.b0b46cc4.css b/vant/static/css/async/1654.b0b46cc4.css new file mode 100644 index 00000000..68e0f712 --- /dev/null +++ b/vant/static/css/async/1654.b0b46cc4.css @@ -0,0 +1 @@ +.demo-number-keyboard{padding-bottom:300px}.demo-number-keyboard .van-button{margin-left:var(--van-padding-md)} \ No newline at end of file diff --git a/vant/static/css/async/1674.81eaa9ee.css b/vant/static/css/async/1674.81eaa9ee.css new file mode 100644 index 00000000..30ca6659 --- /dev/null +++ b/vant/static/css/async/1674.81eaa9ee.css @@ -0,0 +1 @@ +.demo-button .van-button--large{margin-bottom:var(--van-padding-md)}.demo-button .van-button--small,.demo-button .van-button--normal:not(:last-child){margin-right:var(--van-padding-md)}.demo-button .van-doc-demo-block{padding:0 var(--van-padding-md)}.demo-button .van-doc-demo-block__title{padding-left:0}.demo-button-row{margin-bottom:var(--van-padding-sm)}.demo-button .notice-swipe{height:40px;line-height:40px} \ No newline at end of file diff --git a/vant/static/css/async/1936.cf5432f2.css b/vant/static/css/async/1936.cf5432f2.css new file mode 100644 index 00000000..d900767f --- /dev/null +++ b/vant/static/css/async/1936.cf5432f2.css @@ -0,0 +1 @@ +.demo-overlay .wrapper{display:flex;align-items:center;justify-content:center;height:100%}.demo-overlay .block{width:120px;height:120px;background-color:var(--van-background-2);border-radius:4px} \ No newline at end of file diff --git a/vant/static/css/async/2307.6c2fe9d1.css b/vant/static/css/async/2307.6c2fe9d1.css new file mode 100644 index 00000000..15a7ed8a --- /dev/null +++ b/vant/static/css/async/2307.6c2fe9d1.css @@ -0,0 +1 @@ +.demo-checkbox .van-checkbox{margin:0 0 8px 20px}.demo-checkbox .van-cell .van-checkbox{margin:0}.demo-checkbox img{height:20px}.demo-checkbox-buttons{margin-top:var(--van-padding-md)}.demo-checkbox-buttons .van-button{margin-left:var(--van-padding-md)}.demo-checkbox .van-doc-demo-block__title{margin-top:-8px}.divider{margin:20px;height:1px;background:#ccc} \ No newline at end of file diff --git a/vant/static/css/async/2450.bbe907f5.css b/vant/static/css/async/2450.bbe907f5.css new file mode 100644 index 00000000..bf9f1c9f --- /dev/null +++ b/vant/static/css/async/2450.bbe907f5.css @@ -0,0 +1 @@ +.demo-switch .van-switch{margin-left:var(--van-padding-md)}.demo-switch .icon-wrapper{display:flex;width:100%;justify-content:center;font-size:18px}.demo-switch .icon-wrapper .van-icon{line-height:32px}.demo-switch .icon-wrapper .van-icon-success{color:var(--van-blue)}.demo-switch .icon-wrapper .van-icon-cross{color:var(--van-gray-5)} \ No newline at end of file diff --git a/vant/static/css/async/2451.1eb8214f.css b/vant/static/css/async/2451.1eb8214f.css new file mode 100644 index 00000000..2b1e6ec8 --- /dev/null +++ b/vant/static/css/async/2451.1eb8214f.css @@ -0,0 +1 @@ +.demo-sidebar{background-color:var(--van-background-2)}.demo-sidebar .van-sidebar{margin-left:var(--van-padding-md)}.demo-sidebar-title{margin-bottom:16px;color:var(--van-text-color-2);font-weight:400;font-size:14px} \ No newline at end of file diff --git a/vant/static/css/async/2763.c24d145f.css b/vant/static/css/async/2763.c24d145f.css new file mode 100644 index 00000000..144e0c22 --- /dev/null +++ b/vant/static/css/async/2763.c24d145f.css @@ -0,0 +1 @@ +.demo-dialog img{box-sizing:border-box;width:100%;padding:25px 20px 0} \ No newline at end of file diff --git a/vant/static/css/async/2804.18df849e.css b/vant/static/css/async/2804.18df849e.css new file mode 100644 index 00000000..ae9da4b3 --- /dev/null +++ b/vant/static/css/async/2804.18df849e.css @@ -0,0 +1 @@ +.demo-rate{padding-bottom:20px;background-color:var(--van-background-2)}.demo-rate .van-rate{margin-left:var(--van-padding-md)} \ No newline at end of file diff --git a/vant/static/css/async/2848.83c09fcc.css b/vant/static/css/async/2848.83c09fcc.css new file mode 100644 index 00000000..1e36689a --- /dev/null +++ b/vant/static/css/async/2848.83c09fcc.css @@ -0,0 +1 @@ +.demo-contact-list .van-doc-demo-block__title{padding-bottom:0} \ No newline at end of file diff --git a/vant/static/css/async/2917.62dc93f9.css b/vant/static/css/async/2917.62dc93f9.css new file mode 100644 index 00000000..b1072185 --- /dev/null +++ b/vant/static/css/async/2917.62dc93f9.css @@ -0,0 +1 @@ +.demo-lazyload{padding-right:var(--van-padding-md);padding-left:var(--van-padding-md)}.demo-lazyload img,.demo-lazyload div[lazy]{box-sizing:border-box;width:100%;height:250px;margin-bottom:var(--van-padding-md);padding:var(--van-padding-md);background-color:white;background-repeat:no-repeat;background-size:100%100%;border-radius:12px}.demo-lazyload .van-doc-demo-block__title,.demo-lazyload .van-doc-demo-section__title{padding-left:0} \ No newline at end of file diff --git a/vant/static/css/async/297.93efd6dd.css b/vant/static/css/async/297.93efd6dd.css new file mode 100644 index 00000000..d5703367 --- /dev/null +++ b/vant/static/css/async/297.93efd6dd.css @@ -0,0 +1 @@ +.demo-tag .van-tag+.van-tag{margin-left:var(--van-padding-xs)} \ No newline at end of file diff --git a/vant/static/css/async/2997.2e2c777d.css b/vant/static/css/async/2997.2e2c777d.css new file mode 100644 index 00000000..c203c56f --- /dev/null +++ b/vant/static/css/async/2997.2e2c777d.css @@ -0,0 +1 @@ +.demo-popover-refer{width:60px;height:60px;background-color:var(--van-blue);border-radius:8px}.demo-popover .van-popover__wrapper{margin-left:var(--van-padding-md)}.demo-popover .van-field{width:auto;margin:0 12px;overflow:hidden;border-radius:8px}.demo-popover-box{display:flex;justify-content:center;margin:110px 0}.demo-popover-box .van-popover__wrapper{margin-left:0} \ No newline at end of file diff --git a/vant/static/css/async/3042.934cb3a6.css b/vant/static/css/async/3042.934cb3a6.css new file mode 100644 index 00000000..77a6ea2d --- /dev/null +++ b/vant/static/css/async/3042.934cb3a6.css @@ -0,0 +1 @@ +.demo-loading .van-loading{display:inline-block;margin:5px 0 5px 20px}.demo-loading .van-loading--vertical{display:inline-flex} \ No newline at end of file diff --git a/vant/static/css/async/3175.185927d4.css b/vant/static/css/async/3175.185927d4.css new file mode 100644 index 00000000..0605a4be --- /dev/null +++ b/vant/static/css/async/3175.185927d4.css @@ -0,0 +1 @@ +.demo-radio-group{padding:0 16px}.demo-radio-group .van-radio{margin-bottom:8px}.demo-radio img{height:20px}.demo-radio .van-doc-demo-block__title{margin-top:-8px} \ No newline at end of file diff --git a/vant/static/css/async/3181.3cd173b6.css b/vant/static/css/async/3181.3cd173b6.css new file mode 100644 index 00000000..626476e4 --- /dev/null +++ b/vant/static/css/async/3181.3cd173b6.css @@ -0,0 +1 @@ +.demo-space{background:var(--van-background-2)}.demo-space .van-doc-demo-block{padding:0 var(--van-padding-md)}.demo-space .van-doc-demo-block__title{padding-left:0} \ No newline at end of file diff --git a/vant/static/css/async/3293.c4d7d7d9.css b/vant/static/css/async/3293.c4d7d7d9.css new file mode 100644 index 00000000..69c9df5a --- /dev/null +++ b/vant/static/css/async/3293.c4d7d7d9.css @@ -0,0 +1 @@ +.demo-count-down{background-color:var(--van-background-2)}.demo-count-down .van-count-down{margin-left:var(--van-padding-md)}.demo-count-down .colon{display:inline-block;margin:0 4px;color:var(--van-primary-color)}.demo-count-down .block{display:inline-block;width:22px;color:#fff;font-size:12px;text-align:center;background-color:var(--van-primary-color);border-radius:4px}.demo-count-down .van-grid{margin-top:10px} \ No newline at end of file diff --git a/vant/static/css/async/3294.de00c0d3.css b/vant/static/css/async/3294.de00c0d3.css new file mode 100644 index 00000000..1f887bfb --- /dev/null +++ b/vant/static/css/async/3294.de00c0d3.css @@ -0,0 +1 @@ +.demo-sticky{height:200vh}.demo-sticky .van-button{margin-left:var(--van-padding-md)} \ No newline at end of file diff --git a/vant/static/css/async/3382.b4e51945.css b/vant/static/css/async/3382.b4e51945.css new file mode 100644 index 00000000..13359c7c --- /dev/null +++ b/vant/static/css/async/3382.b4e51945.css @@ -0,0 +1 @@ +.demo-address-edit .van-doc-demo-block__title{padding-bottom:0} \ No newline at end of file diff --git a/vant/static/css/async/3421.393a3235.css b/vant/static/css/async/3421.393a3235.css new file mode 100644 index 00000000..294efaf4 --- /dev/null +++ b/vant/static/css/async/3421.393a3235.css @@ -0,0 +1 @@ +.demo-tab{margin-bottom:80vh}.demo-tab .van-tab .van-icon{margin-right:5px;vertical-align:-2px}.demo-tab .van-tab__panel{padding:24px 20px;background:var(--van-background-2)}.demo-tab .van-tabs--card .van-tab__panel{background:transparent} \ No newline at end of file diff --git a/vant/static/css/async/4429.baef7cb5.css b/vant/static/css/async/4429.baef7cb5.css new file mode 100644 index 00000000..44421d25 --- /dev/null +++ b/vant/static/css/async/4429.baef7cb5.css @@ -0,0 +1 @@ +.demo-swipe{padding-bottom:30px}.demo-swipe .van-swipe-item{color:var(--van-white);font-size:20px;line-height:150px;text-align:center}.demo-swipe .van-swipe-item:nth-child(2n){background-color:#39a9ed}.demo-swipe .van-swipe-item:nth-child(odd){background-color:#66c6f2}.demo-swipe .van-swipe img{display:block;box-sizing:border-box;width:100%;height:240px;padding:30px 60px;background-color:var(--van-white);pointer-events:none}.demo-swipe--vertical .van-swipe-item{line-height:200px}.demo-swipe .custom-indicator{position:absolute;right:5px;bottom:5px;padding:2px 5px;color:var(--van-white);font-size:12px;background:rgba(0,0,0,.1)} \ No newline at end of file diff --git a/vant/static/css/async/4480.29ff6f46.css b/vant/static/css/async/4480.29ff6f46.css new file mode 100644 index 00000000..81c1ba43 --- /dev/null +++ b/vant/static/css/async/4480.29ff6f46.css @@ -0,0 +1 @@ +.demo-submit-bar .van-submit-bar{position:relative;padding-bottom:0}.demo-submit-bar .edit-address{color:var(--van-blue)}.demo-submit-bar .van-checkbox{margin-right:var(--van-padding-sm)} \ No newline at end of file diff --git a/vant/static/css/async/4539.6ebeb688.css b/vant/static/css/async/4539.6ebeb688.css new file mode 100644 index 00000000..4f07f7a6 --- /dev/null +++ b/vant/static/css/async/4539.6ebeb688.css @@ -0,0 +1 @@ +.demo-progress .van-progress{margin:20px 16px}.demo-progress .van-progress:first-of-type{margin-top:5px}.demo-progress .van-button{margin:var(--van-padding-md)0 0 10px}.demo-progress .van-button:first-of-type{margin-left:var(--van-padding-md)} \ No newline at end of file diff --git a/vant/static/css/async/5.1755ad72.css b/vant/static/css/async/5.1755ad72.css new file mode 100644 index 00000000..49f888c7 --- /dev/null +++ b/vant/static/css/async/5.1755ad72.css @@ -0,0 +1 @@ +.demo-slider{-webkit-user-select:none;user-select:none}.demo-slider .van-doc-demo-block{padding:0 var(--van-padding-md)20px}.demo-slider .van-doc-demo-block__title{padding-left:0}.demo-slider .custom-button{width:26px;color:#fff;font-size:10px;line-height:18px;text-align:center;background-color:var(--van-primary-color);border-radius:100px} \ No newline at end of file diff --git a/vant/static/css/async/514.772c13ed.css b/vant/static/css/async/514.772c13ed.css new file mode 100644 index 00000000..534192c5 --- /dev/null +++ b/vant/static/css/async/514.772c13ed.css @@ -0,0 +1 @@ +.demo-popup .van-row{margin-bottom:var(--van-padding-md)}.demo-popup .van-button{margin-left:var(--van-padding-md)} \ No newline at end of file diff --git a/vant/static/css/async/5245.9299807f.css b/vant/static/css/async/5245.9299807f.css new file mode 100644 index 00000000..d66d1263 --- /dev/null +++ b/vant/static/css/async/5245.9299807f.css @@ -0,0 +1 @@ +.demo-divider{background-color:var(--van-background-2)}.demo-divider .van-doc-demo-block__title{padding-top:var(--van-padding-md)}.demo-divider .content{padding:0 var(--van-padding-md);color:var(--van-text-color-2);font-size:var(--van-font-size-md)} \ No newline at end of file diff --git a/vant/static/css/async/5271.e69abae4.css b/vant/static/css/async/5271.e69abae4.css new file mode 100644 index 00000000..a641f1cc --- /dev/null +++ b/vant/static/css/async/5271.e69abae4.css @@ -0,0 +1 @@ +.demo-highlight{background:var(--van-background-2)}.demo-highlight .van-highlight{padding:0 16px}.demo-highlight .custom-class{color:red} \ No newline at end of file diff --git a/vant/static/css/async/5273.775eb8ae.css b/vant/static/css/async/5273.775eb8ae.css new file mode 100644 index 00000000..f0e76f61 --- /dev/null +++ b/vant/static/css/async/5273.775eb8ae.css @@ -0,0 +1 @@ +.demo-contact-edit .van-doc-demo-block__title{padding-bottom:0} \ No newline at end of file diff --git a/vant/static/css/async/5283.888114ad.css b/vant/static/css/async/5283.888114ad.css new file mode 100644 index 00000000..4ba75994 --- /dev/null +++ b/vant/static/css/async/5283.888114ad.css @@ -0,0 +1 @@ +.demo-barrage{padding:var(--van-padding-sm);background-color:var(--van-background-2)}.demo-barrage .video{background-color:var(--van-gray-2);width:100%;height:150px} \ No newline at end of file diff --git a/vant/static/css/async/541.bfaf5b6f.css b/vant/static/css/async/541.bfaf5b6f.css new file mode 100644 index 00000000..65d8d6be --- /dev/null +++ b/vant/static/css/async/541.bfaf5b6f.css @@ -0,0 +1 @@ +.back-top-wrapper{height:60vh;overflow:auto}.custom-back-top{width:80px;font-size:14px;text-align:center} \ No newline at end of file diff --git a/vant/static/css/async/5807.b9cbeb4d.css b/vant/static/css/async/5807.b9cbeb4d.css new file mode 100644 index 00000000..f956f2b0 --- /dev/null +++ b/vant/static/css/async/5807.b9cbeb4d.css @@ -0,0 +1 @@ +.demo-circle .van-circle{margin-left:var(--van-padding-md)}.demo-circle .van-button{margin:var(--van-padding-md)0 0 10px}.demo-circle .van-button:first-of-type{margin-left:var(--van-padding-md)} \ No newline at end of file diff --git a/vant/static/css/async/6167.ea6e86e9.css b/vant/static/css/async/6167.ea6e86e9.css new file mode 100644 index 00000000..aea77186 --- /dev/null +++ b/vant/static/css/async/6167.ea6e86e9.css @@ -0,0 +1 @@ +.demo-swipe-cell{-webkit-user-select:none;user-select:none}.demo-swipe-cell .van-card{margin:0;background-color:var(--van-background-2)}.demo-swipe-cell .delete-button{height:100%} \ No newline at end of file diff --git a/vant/static/css/async/6215.4defcc63.css b/vant/static/css/async/6215.4defcc63.css new file mode 100644 index 00000000..849c4ea9 --- /dev/null +++ b/vant/static/css/async/6215.4defcc63.css @@ -0,0 +1 @@ +.demo-uploader{background-color:var(--van-background-2)}.demo-uploader .van-uploader{margin-left:var(--van-padding-md)}.demo-uploader .preview-cover{position:absolute;bottom:0;box-sizing:border-box;width:100%;padding:4px;color:#fff;font-size:12px;text-align:center;background:rgba(0,0,0,.3)} \ No newline at end of file diff --git a/vant/static/css/async/6302.dff57eb6.css b/vant/static/css/async/6302.dff57eb6.css new file mode 100644 index 00000000..d383aea4 --- /dev/null +++ b/vant/static/css/async/6302.dff57eb6.css @@ -0,0 +1 @@ +.demo-badge{background-color:var(--van-background-2)}.demo-badge .van-badge__wrapper{margin-left:var(--van-padding-md)}.demo-badge .child{width:40px;height:40px;background:var(--van-gray-2);border-radius:4px}.demo-badge .badge-icon{display:block;margin-left:0;font-size:10px;line-height:16px} \ No newline at end of file diff --git a/vant/static/css/async/6361.470ae81a.css b/vant/static/css/async/6361.470ae81a.css new file mode 100644 index 00000000..fdad963e --- /dev/null +++ b/vant/static/css/async/6361.470ae81a.css @@ -0,0 +1 @@ +.demo-style .van-ellipsis,.demo-style .van-multi-ellipsis--l2{max-width:300px;margin-left:var(--van-padding-md);font-size:14px;line-height:18px}.demo-style .van-ellipsis{margin-bottom:var(--van-padding-md)}.demo-style .van-hairline--top{height:30px;background-color:var(--van-background-2)}.demo-style .van-hairline--top:after{top:5px}.demo-style .demo-animate-block{position:fixed;top:50%;left:50%;width:100px;height:100px;margin:-50px 0 0 -50px;background-color:var(--van-blue);border-radius:8px} \ No newline at end of file diff --git a/vant/static/css/async/6473.99dabc7e.css b/vant/static/css/async/6473.99dabc7e.css new file mode 100644 index 00000000..930d44fc --- /dev/null +++ b/vant/static/css/async/6473.99dabc7e.css @@ -0,0 +1 @@ +.demo-cell .custom-title{margin-right:4px;vertical-align:middle}.demo-cell .search-icon{font-size:16px;line-height:inherit} \ No newline at end of file diff --git a/vant/static/css/async/6955.5ea48073.css b/vant/static/css/async/6955.5ea48073.css new file mode 100644 index 00000000..07043c89 --- /dev/null +++ b/vant/static/css/async/6955.5ea48073.css @@ -0,0 +1 @@ +.demo-action-sheet-content{padding:var(--van-padding-md)var(--van-padding-md)calc(10*var(--van-padding-md))} \ No newline at end of file diff --git a/vant/static/css/async/712.b55eee6a.css b/vant/static/css/async/712.b55eee6a.css new file mode 100644 index 00000000..10325558 --- /dev/null +++ b/vant/static/css/async/712.b55eee6a.css @@ -0,0 +1 @@ +.demo-collapse .van-icon-question-o{margin-left:5px;color:var(--van-blue);font-size:15px;vertical-align:-3px}.demo-collapse-buttons{margin-top:var(--van-padding-md)}.demo-collapse-buttons .van-button{margin-left:var(--van-padding-md)} \ No newline at end of file diff --git a/vant/static/css/async/7275.e2d1bdbc.css b/vant/static/css/async/7275.e2d1bdbc.css new file mode 100644 index 00000000..3b1fde8d --- /dev/null +++ b/vant/static/css/async/7275.e2d1bdbc.css @@ -0,0 +1 @@ +.demo-address-list .van-doc-demo-block__title{padding-bottom:0} \ No newline at end of file diff --git a/vant/static/css/async/7301.a6c6cddb.css b/vant/static/css/async/7301.a6c6cddb.css new file mode 100644 index 00000000..aa9bef18 --- /dev/null +++ b/vant/static/css/async/7301.a6c6cddb.css @@ -0,0 +1 @@ +.demo-card{background-color:var(--van-background-2)} \ No newline at end of file diff --git a/vant/static/css/async/7546.61be4fbc.css b/vant/static/css/async/7546.61be4fbc.css new file mode 100644 index 00000000..005ef80b --- /dev/null +++ b/vant/static/css/async/7546.61be4fbc.css @@ -0,0 +1 @@ +.demo-empty{background:var(--van-background-2)}.demo-empty .bottom-button{width:160px;height:40px} \ No newline at end of file diff --git a/vant/static/css/async/8026.9bbd9a89.css b/vant/static/css/async/8026.9bbd9a89.css new file mode 100644 index 00000000..d0003847 --- /dev/null +++ b/vant/static/css/async/8026.9bbd9a89.css @@ -0,0 +1 @@ +.demo-pagination .van-pagination{width:100%;margin:5px 0}.demo-pagination .van-doc-demo-block{padding:0 var(--van-padding-md)}.demo-pagination .van-doc-demo-block__title{padding-left:0} \ No newline at end of file diff --git a/vant/static/css/async/8043.5926d3a9.css b/vant/static/css/async/8043.5926d3a9.css new file mode 100644 index 00000000..df88ea2f --- /dev/null +++ b/vant/static/css/async/8043.5926d3a9.css @@ -0,0 +1 @@ +.demo-action-bar .van-action-bar{position:relative;padding-bottom:0} \ No newline at end of file diff --git a/vant/static/css/async/8203.60008a67.css b/vant/static/css/async/8203.60008a67.css new file mode 100644 index 00000000..31ce4638 --- /dev/null +++ b/vant/static/css/async/8203.60008a67.css @@ -0,0 +1 @@ +.text{text-align:center;padding:100px 20px;font-size:14px} \ No newline at end of file diff --git a/vant/static/css/async/8440.bcbc3a91.css b/vant/static/css/async/8440.bcbc3a91.css new file mode 100644 index 00000000..71d3d749 --- /dev/null +++ b/vant/static/css/async/8440.bcbc3a91.css @@ -0,0 +1 @@ +.demo-image{overflow-x:hidden;background-color:var(--van-background-2)}.demo-image .van-row{padding:0 var(--van-padding-md)}.demo-image .van-col{margin-bottom:20px}.demo-image .text{margin-top:5px;color:var(--van-gray-7);font-size:14px;text-align:center} \ No newline at end of file diff --git a/vant/static/css/async/8545.e2287b58.css b/vant/static/css/async/8545.e2287b58.css new file mode 100644 index 00000000..aadcd20a --- /dev/null +++ b/vant/static/css/async/8545.e2287b58.css @@ -0,0 +1 @@ +.demo-skeleton{background-color:var(--van-background-2)}.demo-skeleton .van-switch{margin:0 var(--van-padding-md)var(--van-padding-xs)}.demo-skeleton .demo-preview{display:flex;padding:0 var(--van-padding-md)}.demo-skeleton .demo-preview .demo-content{padding-top:6px}.demo-skeleton .demo-preview .demo-content h3{margin:0;font-size:18px;line-height:20px}.demo-skeleton .demo-preview .demo-content p{margin:13px 0 0;font-size:14px;line-height:20px}.demo-skeleton .demo-preview img{flex-shrink:0;width:32px;height:32px;margin-right:var(--van-padding-md)} \ No newline at end of file diff --git a/vant/static/css/async/8855.845d41a6.css b/vant/static/css/async/8855.845d41a6.css new file mode 100644 index 00000000..8e952ab7 --- /dev/null +++ b/vant/static/css/async/8855.845d41a6.css @@ -0,0 +1 @@ +.demo-list .van-cell{text-align:center}.demo-list .page-desc{margin:0;padding:5px 0;color:var(--van-gray-7);font-size:14px;text-align:center}.demo-list .page-desc--text{margin:0}.demo-list .page-desc--option{margin:12px}.demo-list .van-checkbox__label{color:var(--van-gray-7)} \ No newline at end of file diff --git a/vant/static/css/async/8867.9fa111b6.css b/vant/static/css/async/8867.9fa111b6.css new file mode 100644 index 00000000..fc93e54e --- /dev/null +++ b/vant/static/css/async/8867.9fa111b6.css @@ -0,0 +1 @@ +.current-level{font-size:14px;padding:16px 16px 0;color:var(--van-gray-6)} \ No newline at end of file diff --git a/vant/static/css/async/8967.19072963.css b/vant/static/css/async/8967.19072963.css new file mode 100644 index 00000000..8c9ec2f7 --- /dev/null +++ b/vant/static/css/async/8967.19072963.css @@ -0,0 +1 @@ +.demo-steps .van-button{margin:var(--van-padding-md)0 0 var(--van-padding-md)}.demo-steps p,.demo-steps h3{font-weight:400;font-size:inherit} \ No newline at end of file diff --git a/vant/static/css/async/905.003c13df.css b/vant/static/css/async/905.003c13df.css new file mode 100644 index 00000000..9cf28f90 --- /dev/null +++ b/vant/static/css/async/905.003c13df.css @@ -0,0 +1 @@ +.demo-password-input{min-height:150vh} \ No newline at end of file diff --git a/vant/static/css/async/9423.f4684f97.css b/vant/static/css/async/9423.f4684f97.css new file mode 100644 index 00000000..57fe8115 --- /dev/null +++ b/vant/static/css/async/9423.f4684f97.css @@ -0,0 +1 @@ +.demo-collapse .van-icon-question-o{margin-left:5px;color:var(--van-blue);font-size:15px;vertical-align:-3px} \ No newline at end of file diff --git a/vant/static/css/async/9553.827fba32.css b/vant/static/css/async/9553.827fba32.css new file mode 100644 index 00000000..f88e3b2b --- /dev/null +++ b/vant/static/css/async/9553.827fba32.css @@ -0,0 +1 @@ +.demo-watermark-wrapper{position:relative;height:150px;background-color:var(--van-background-2);padding:var(--van-padding-md)} \ No newline at end of file diff --git a/vant/static/css/async/9790.8b68035a.css b/vant/static/css/async/9790.8b68035a.css new file mode 100644 index 00000000..fab08bb1 --- /dev/null +++ b/vant/static/css/async/9790.8b68035a.css @@ -0,0 +1 @@ +.demo-tabbar .van-tabbar{position:relative;padding-bottom:0} \ No newline at end of file diff --git a/vant/static/css/async/994.dcf055c3.css b/vant/static/css/async/994.dcf055c3.css new file mode 100644 index 00000000..a3e5910d --- /dev/null +++ b/vant/static/css/async/994.dcf055c3.css @@ -0,0 +1 @@ +.demo-icon{font-size:0}.demo-icon-notify{font-size:13px}.demo-icon-tab-panel{width:auto;margin:20px;background-color:var(--van-background-2);border-radius:12px}.demo-icon .van-col{display:inline-block;float:none;text-align:center;vertical-align:middle;cursor:pointer}.demo-icon .van-col span{display:block;height:36px;margin:-4px 0 4px;padding:0 5px;color:var(--van-text-color);font-size:12px;line-height:18px}.demo-icon .van-col:active{background-color:var(--van-active-color)}.demo-icon .van-icon{margin:16px 0;color:var(--van-text-color);font-size:32px} \ No newline at end of file diff --git a/vant/static/css/index.0206b51c.css b/vant/static/css/index.0206b51c.css new file mode 100644 index 00000000..764f9202 --- /dev/null +++ b/vant/static/css/index.0206b51c.css @@ -0,0 +1,2 @@ +.van-doc-nav{position:absolute;left:0;top:var(--van-doc-header-top-height);bottom:0;z-index:1;min-width:var(--van-doc-nav-width);max-width:var(--van-doc-nav-width);padding:8px 0;overflow-y:scroll;background-color:var(--van-doc-background-2)}@media(min-width: var(--van-doc-row-max-width)){.van-doc-nav{left:50%;margin-left:calc(-.5*var(--van-doc-row-max-width))}}.van-doc-nav.van-doc-nav-fixed{position:fixed;top:0}.van-doc-nav::-webkit-scrollbar{width:6px;height:6px;background-color:transparent}.van-doc-nav::-webkit-scrollbar-thumb{background-color:transparent;border-radius:6px}.van-doc-nav:hover::-webkit-scrollbar-thumb{background-color:rgba(69,90,100,.2)}.van-doc-nav__group{margin-bottom:16px;padding-left:6px}.van-doc-nav__title{padding:24px 0 0 var(--van-doc-padding);color:var(--van-doc-text-color-2);font-weight:600;font-size:16px;line-height:28px}.van-doc-nav__item a{display:block;margin:4px 0;padding:6px 0 6px var(--van-doc-padding);color:var(--van-doc-text-color-3);font-size:14px;line-height:20px;transition:color.2s}.van-doc-nav__item a:hover,.van-doc-nav__item a.active{color:var(--van-doc-link-color)}.van-doc-nav__item a.active{font-weight:600}.van-doc-nav__item a span{font-size:13px}@media(max-width:1300px){.van-doc-nav__item a{font-size:13px}.van-doc-nav__item:active{font-size:14px}}.van-doc-header{width:100%;background-color:var(--van-doc-header-background);-webkit-user-select:none;user-select:none;position:relative;z-index:2}.van-doc-header__top{display:flex;align-items:center;height:var(--van-doc-header-top-height);padding:0 var(--van-doc-padding)}.van-doc-header__top-nav{flex:1;font-size:0;text-align:right}.van-doc-header__top-nav>li{position:relative;display:inline-block;vertical-align:middle}.van-doc-header__top-nav-item{margin-left:16px}.van-doc-header__top-nav-title{display:block;font-size:15px}.van-doc-header__cube{position:relative;display:block;padding:0 12px;color:#001938;background:#f7f8fa;font-size:14px;line-height:30px;text-align:center;border:1px solid rgba(255,255,255,.7);border-radius:20px;cursor:pointer;transition:.3s ease-in-out}.van-doc-header__version{padding-right:20px}.van-doc-header__version:after{position:absolute;top:10px;right:9px;width:5px;height:5px;color:#001938;border:1px solid;border-color:transparent transparent currentColor currentColor;transform:rotate(315deg);content:""}.van-doc-header__version-pop{position:absolute;top:34px;left:0;width:100%;z-index:99;color:#333;line-height:36px;text-align:left;overflow:hidden;background-color:#fff;border-radius:8px;box-shadow:0 4px 12px#ebedf0;transform-origin:top;transition:.2s cubic-bezier(.215,.61,.355,1)}.van-doc-header__version-pop-item{padding-left:12px;transition:.2s}.van-doc-header__version-pop-item:hover{color:var(--van-doc-link-color);background-color:#f7f8fa}.van-doc-header__logo{display:block}.van-doc-header__logo img{display:inline-block;width:28px;margin-right:12px;vertical-align:middle}.van-doc-header__title{display:inline-block;color:#fff;font-size:22px;vertical-align:middle}.van-doc-header__subtitle{display:inline-block;color:#999;margin-left:4px;vertical-align:-4px;font-size:13px}.van-doc-header__link{cursor:pointer}.van-doc-header__link span{color:#fff;font-size:16px}.van-doc-header__link img{display:block;width:30px;height:30px;transition:.3s cubic-bezier(.175,.885,.32,1.275)}.van-doc-header__link img:hover{transform:scale(1.2)}.van-doc-dropdown-enter,.van-doc-dropdown-leave-active{transform:scaley(0);opacity:0}.van-doc-card{margin-bottom:var(--van-doc-padding);padding:28px 28px 32px;background-color:var(--van-doc-background-2);border-radius:var(--van-doc-border-radius);overflow:auto}.van-doc-card>pre code{position:relative;padding-right:30px;pointer-events:none;overflow:initial}.van-doc-card>pre:hover code:before{position:absolute;z-index:9;right:14px;top:11px;width:20px;height:20px;background-position:center;background-size:contain;background-image:url(data:image/png;base64,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);cursor:pointer;content:"";display:block;pointer-events:auto}.van-doc-card>pre .code-copy-success:after{content:"Copied!";display:block;position:absolute;z-index:9;right:-4px;top:0;animation:ease-out code-copy-animation.2s;animation-fill-mode:forwards}@keyframes code-copy-animation{0%{top:0;opacity:0}to{top:-20px;opacity:1}}.van-doc-card>p a,.van-doc-card>ul a,.van-doc-card>table a,.van-doc-card>blockquote a{margin:0 1px;color:var(--van-doc-link-color);-webkit-font-smoothing:auto}.van-doc-card>p a:hover,.van-doc-card>ul a:hover,.van-doc-card>table a:hover,.van-doc-card>blockquote a:hover{opacity:.8}.van-doc-card>p a:active,.van-doc-card>ul a:active,.van-doc-card>table a:active,.van-doc-card>blockquote a:active{opacity:.6}.van-doc-card>h3,.van-doc-card>h4,.van-doc-card>h5,.van-doc-card>h6{font-weight:400;line-height:1.6}.van-doc-card>h3[id],.van-doc-card>h4[id],.van-doc-card>h5[id],.van-doc-card>h6[id]{cursor:pointer}.van-doc-card>h3{margin-bottom:16px;font-weight:600;font-size:20px}.van-doc-card>h4{margin:24px 0 12px;font-weight:600;font-size:18px}.van-doc-card>h5{margin:24px 0 12px;font-weight:600;font-size:16px}.van-doc-card>p{margin-top:16px;color:var(--van-doc-text-color-3);font-size:15px;line-height:26px}.van-doc-card>p strong{color:var(--van-doc-text-color-1)}.van-doc-card>table{width:100%;margin-top:12px;color:var(--van-doc-text-color-3);font-size:14px;line-height:1.5;border-collapse:collapse}.van-doc-card>table th{padding:8px 10px;font-weight:600;text-align:left}.van-doc-card>table th:first-child{padding-left:0}.van-doc-card>table th:last-child{padding-right:0}.van-doc-card>table td{padding:8px;border-top:1px solid var(--van-doc-border-color)}.van-doc-card>table td:first-child{padding-left:0}.van-doc-card>table td:first-child code{margin:0;padding:2px 6px;color:var(--van-doc-blue);font-weight:600;font-size:11px;background-color:rgba(25,137,250,.15);border-radius:20px}.van-doc-card>table td:last-child{padding-right:0}.van-doc-card>table em{display:inline-block;color:var(--van-doc-green);font-size:14px;font-family:var(--van-doc-code-font-family);font-style:normal;max-width:300px;-webkit-font-smoothing:auto}.van-doc-card>ul{margin:16px 0 0}.van-doc-card>ul li,.van-doc-card>ol li{position:relative;margin:5px 0 5px 10px;padding-left:15px;color:var(--van-doc-text-color-3);font-size:15px;line-height:26px}.van-doc-card>ul li:before,.van-doc-card>ol li:before{position:absolute;top:0;left:0;box-sizing:border-box;width:6px;height:6px;margin-top:10px;border:1px solid currentColor;border-radius:50%;content:""}.van-doc-card>hr{margin:30px 0;border:0 none;border-top:1px solid#eee}.van-doc-card>p code,.van-doc-card>ul code,.van-doc-card>ol code,.van-doc-card>table code{display:inline;margin:0 2px;padding:3px 7px;font-size:14px;word-break:keep-all;border-radius:6px;-webkit-font-smoothing:auto;font-family:var(--van-doc-code-font-family)}.van-doc-card>blockquote{margin:16px 0 0;padding:16px;font-size:15px;line-height:26px;color:var(--van-doc-blockquote-color);background-color:var(--van-doc-blockquote-background);border-radius:var(--van-doc-border-radius)}.van-doc-card>img,.van-doc-card>p img{width:100%;margin:16px 0 0;border-radius:var(--van-doc-border-radius)}.van-doc-content{position:relative;flex:1;padding:0 0 75px}.van-doc-content .van-doc-markdown-body{padding:var(--van-doc-padding);overflow:hidden}.van-doc-content .van-doc-markdown-body h1,.van-doc-content .van-doc-markdown-body h2{font-weight:400;line-height:1.5}.van-doc-content .van-doc-markdown-body h1[id],.van-doc-content .van-doc-markdown-body h2[id]{cursor:pointer}.van-doc-content .van-doc-markdown-body h1{margin:0 0 30px;font-size:34px;cursor:default}.van-doc-content .van-doc-markdown-body h2{margin:52px 0 20px;font-size:26px}.van-doc-content--changelog strong{display:block;margin:24px 0 12px;font-weight:600;font-size:15px}.van-doc-content--changelog h3+p code{margin:0}.van-doc-content--changelog h3 a{color:inherit;font-size:20px}.van-doc-container{box-sizing:border-box;padding-left:var(--van-doc-nav-width);overflow:hidden}.van-doc-container--with-simulator{padding-right:calc(var(--van-doc-simulator-width) + var(--van-doc-padding))}@media(max-width:1100px){.van-doc-container--with-simulator{padding-right:calc(-8px + var(--van-doc-simulator-width))}}.van-doc-simulator{position:absolute;top:calc(var(--van-doc-padding) + var(--van-doc-header-top-height));right:var(--van-doc-padding);z-index:1;box-sizing:border-box;width:var(--van-doc-simulator-width);min-width:var(--van-doc-simulator-width);overflow:hidden;background:var(--van-doc-background-2);border-radius:var(--van-doc-border-radius)}@media(max-width:1100px){.van-doc-simulator{right:auto;left:750px}}@media(min-width: var(--van-doc-row-max-width)){.van-doc-simulator{right:50%;margin-right:calc(24px + -.5*var(--van-doc-row-max-width))}}.van-doc-simulator-fixed{position:fixed;top:var(--van-doc-padding)}.van-doc-simulator iframe{display:block;width:100%}:root,:host{--van-doc-black:#000;--van-doc-white:#fff;--van-doc-gray-1:#f7f8fa;--van-doc-gray-2:#f2f3f5;--van-doc-gray-3:#ebedf0;--van-doc-gray-4:#dcdee0;--van-doc-gray-5:#c8c9cc;--van-doc-gray-6:#969799;--van-doc-gray-7:#646566;--van-doc-gray-8:#323233;--van-doc-blue:#1989fa;--van-doc-green:#07c160;--van-doc-purple:#8e69d3;--van-doc-padding:32px;--van-doc-row-max-width:1680px;--van-doc-nav-width:220px;--van-doc-border-radius:20px;--van-doc-simulator-width:360px;--van-doc-simulator-height:620px;--van-doc-header-top-height:64px;--van-doc-code-font-family:'Menlo', 'Source Code Pro', 'Monaco', + 'Inconsolata', monospace}.van-doc-theme-light{--van-doc-text-color-1:var(--van-doc-black);--van-doc-text-color-2:var(--van-doc-gray-8);--van-doc-text-color-3:#34495e;--van-doc-text-color-4:var(--van-doc-gray-6);--van-doc-link-color:var(--van-doc-blue);--van-doc-background:#eff2f5;--van-doc-background-2:var(--van-doc-white);--van-doc-background-3:var(--van-doc-white);--van-doc-header-background:#011f3c;--van-doc-border-color:var(--van-doc-gray-2);--van-doc-code-color:#58727e;--van-doc-code-comment-color:var(--van-doc-gray-6);--van-doc-code-background:var(--van-doc-gray-1);--van-doc-blockquote-color:#2f85da;--van-doc-blockquote-background:#ecf9ff}.van-doc-theme-dark{--van-doc-text-color-1:var(--van-doc-white);--van-doc-text-color-2:rgba(255, 255, 255, 0.9);--van-doc-text-color-3:rgba(255, 255, 255, 0.75);--van-doc-text-color-4:rgba(255, 255, 255, 0.6);--van-doc-link-color:#1bb5fe;--van-doc-background:#202124;--van-doc-background-2:rgba(255, 255, 255, 0.06);--van-doc-background-3:rgba(255, 255, 255, 0.1);--van-doc-header-background:rgba(1, 31, 60, 0.3);--van-doc-border-color:#3a3a3c;--van-doc-code-color:rgba(200, 200, 200, 0.85);--van-doc-code-comment-color:var(--van-doc-gray-7);--van-doc-code-background:rgba(0, 0, 0, 0.24);--van-doc-blockquote-color:#bae6fd;--van-doc-blockquote-background:rgba(7, 89, 133, 0.25)}body{min-width:1100px;margin:0;overflow-x:auto;color:var(--van-doc-text-color-2);font-size:16px;font-family:"Open Sans",-apple-system,BlinkMacSystemFont,"Helvetica Neue",Helvetica,Segoe UI,Arial,Roboto,"PingFang SC","miui","Hiragino Sans GB","Microsoft Yahei",sans-serif;background-color:var(--van-doc-background);-webkit-font-smoothing:antialiased}p{margin:0}h1,h2,h3,h4,h5,h6{margin:0;font-size:inherit}ul,ol{margin:0;padding:0;list-style:none}a{text-decoration:none}.van-doc-row{width:100%}@media(min-width: var(--van-doc-row-max-width)){.van-doc-row{width:var(--van-doc-row-max-width);margin:0 auto}}code{position:relative;display:block;padding:16px 20px;overflow-x:auto;color:var(--van-doc-code-color);font-weight:400;font-size:14px;font-family:var(--van-doc-code-font-family);line-height:26px;white-space:pre-wrap;word-wrap:break-word;-webkit-font-smoothing:auto;background-color:var(--van-doc-code-background);border-radius:var(--van-doc-border-radius)}p code{display:inline-flex;padding:4px 10px}pre{margin:20px 0 0}pre+p{margin-top:20px!important}.hljs{display:block;padding:.5em;overflow-x:auto;background:#fff}.hljs-subst{color:var(--van-doc-code-color)}.hljs-string,.hljs-meta,.hljs-symbol,.hljs-template-tag,.hljs-template-variable,.hljs-addition{color:var(--van-doc-green)}.hljs-comment,.hljs-quote{color:var(--van-doc-code-comment-color)}.hljs-params,.hljs-keyword,.hljs-attribute{color:var(--van-doc-purple)}.hljs-deletion,.hljs-variable,.hljs-number,.hljs-regexp,.hljs-literal,.hljs-bullet,.hljs-link{color:#eb6f6f}.hljs-attr,.hljs-selector-tag,.hljs-title,.hljs-section,.hljs-built_in,.hljs-doctag,.hljs-type,.hljs-name,.hljs-selector-id,.hljs-selector-class,.hljs-strong{color:#4994df}.hljs-emphasis{font-style:italic}.van-doc-intro{padding-top:20px;text-align:center}.van-doc-intro p{margin-bottom:20px}.van-doc-icp{font-size:14px;text-align:center}.van-doc-icp a{color:#bbb}.demo-playground[data-v-4fd78de2]{background-color:#fff;border:1px solid#ebedf1;border-radius:1px;margin:24px 0}.demo-playground.transform[data-v-4fd78de2]{transform:translate(0)}.demo-playground--previewer[data-v-4fd78de2]{padding:40px 24px;border-bottom:1px solid#ebedf1}.demo-playground--previewer.compact[data-v-4fd78de2]{padding:0}.demo-playground--code--actions[data-v-4fd78de2]{display:flex;height:40px;padding:0 1em;align-items:center}.demo-playground--code--actions>a[data-v-4fd78de2]:not(:last-child),.demo-playground--code--actions>button[data-v-4fd78de2]:not(:last-child){margin-right:8px}.demo-playground--code--actions>a[data-v-4fd78de2]{display:flex}.demo-playground--code--actions button[data-v-4fd78de2]{position:relative;display:inline-block;width:16px;height:16px;padding:0;border:0;box-sizing:border-box;cursor:pointer;opacity:.6;outline:none;transition:opacity.2s,background.2s}.demo-playground--code--actions button[data-v-4fd78de2]:after{content:"";position:absolute;top:-8px;left:-8px;right:-8px;bottom:-8px}.demo-playground--code--actions button[data-v-4fd78de2]:hover{opacity:.8}.demo-playground--code--actions button[data-v-4fd78de2]:active{opacity:.9}.demo-playground--code--actions button[data-v-4fd78de2]:disabled{opacity:.2;cursor:not-allowed}.demo-playground--code--actions button[role=codesandbox][data-v-4fd78de2]{background-position:-18px 0}.demo-playground--code--actions button[role=codepen][data-v-4fd78de2]{background-position:-36px 0}.demo-playground--code--actions button[role=source][data-v-4fd78de2]{background-position:-72px 0}.demo-playground--code--actions button[role=change-jsx][data-v-4fd78de2]{background-position:-90px 0}.demo-playground--code--actions button[role=change-tsx][data-v-4fd78de2]{background-position:-108px 0}.demo-playground--code--actions button[role=open-demo][data-v-4fd78de2]{background-position:-126px 0}.demo-playground--code--actions button[role=motions][data-v-4fd78de2]{background-position:-162px 0}.demo-playground--code--actions button[role=sketch-component][data-v-4fd78de2]{background-position:-182px 0}.demo-playground--code--actions button[role=sketch-group][data-v-4fd78de2]{background-position:-200px 0}.demo-playground--code--actions button[role=copy][data-status=ready][data-v-4fd78de2]{background-position:-54px 0}.demo-playground--code--actions button[role=copy][data-status=copied][data-v-4fd78de2]{pointer-events:none;background-position:-54px -16px}.demo-playground--code--actions button[role=refresh][data-v-4fd78de2]{background-position-x:-144px}.demo-playground--code--actions>span[data-v-4fd78de2]{flex:1;display:inline-block}.demo-playground--code--content[data-v-4fd78de2]{border-top:1px dashed#ebedf1}.demo-playground--code--content[data-v-4fd78de2] pre{margin:0}.demo-playground--code--content[data-v-4fd78de2] .language-html{border-radius:0}.action-icon[data-v-4fd78de2]{background:url(data:image/png;base64,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)no-repeat 0 0/230px auto} \ No newline at end of file diff --git a/vant/static/css/mobile.c83a2900.css b/vant/static/css/mobile.c83a2900.css new file mode 100644 index 00000000..e53e7677 --- /dev/null +++ b/vant/static/css/mobile.c83a2900.css @@ -0,0 +1,2 @@ +.van-doc-demo-block__title{margin:0;padding:32px 16px 16px;color:var(--van-doc-text-color-4);font-weight:400;font-size:14px;line-height:16px}.van-doc-demo-block__card{margin:12px 12px 0;overflow:hidden;border-radius:8px}.van-doc-demo-block__title+.van-doc-demo-block__card{margin-top:0}.van-doc-demo-block:first-of-type .van-doc-demo-block__title{padding-top:20px}.van-doc-demo-section{box-sizing:border-box;min-height:calc(100vh - 56px);padding-bottom:20px}.demo-home-nav__title{margin:24px 0 8px 16px;color:var(--van-doc-text-color-4);font-size:14px}.demo-home-nav__block{position:relative;display:flex;margin:0 0 12px;padding-left:20px;color:var(--van-doc-text-color-3);font-weight:600;font-size:14px;line-height:40px;background-color:var(--van-doc-background-3);border-radius:99px;transition:opacity.3s}.demo-home-nav__block:hover{opacity:.8}.demo-home-nav__block:active{opacity:.6}.demo-home-nav__icon{position:absolute;top:50%;right:16px;width:16px;height:16px;margin-top:-8px}.demo-home{box-sizing:border-box;width:100%;min-height:100vh;padding:46px 20px 20px}.demo-home__title,.demo-home__desc{padding-left:16px;font-weight:400;line-height:1;-webkit-user-select:none;user-select:none}.demo-home__title{margin:0 0 16px;font-size:32px}.demo-home__title img,.demo-home__title span{display:inline-block;vertical-align:middle}.demo-home__title img{width:32px}.demo-home__title span{margin-left:16px}.demo-home__title--small{font-size:24px}.demo-home__desc{margin:0 0 40px;color:var(--van-doc-text-color-4);font-size:14px;line-height:1.6}.demo-nav{position:relative;display:flex;align-items:center;justify-content:center;height:56px;background-color:var(--van-doc-background-3)}.demo-nav__title{font-weight:600;font-size:17px;text-transform:capitalize}.demo-nav__back{position:absolute;top:16px;left:16px;width:24px;height:24px;cursor:pointer}:root,:host{--van-doc-black:#000;--van-doc-white:#fff;--van-doc-gray-1:#f7f8fa;--van-doc-gray-2:#f2f3f5;--van-doc-gray-3:#ebedf0;--van-doc-gray-4:#dcdee0;--van-doc-gray-5:#c8c9cc;--van-doc-gray-6:#969799;--van-doc-gray-7:#646566;--van-doc-gray-8:#323233;--van-doc-blue:#1989fa;--van-doc-green:#07c160;--van-doc-purple:#8e69d3;--van-doc-padding:32px;--van-doc-row-max-width:1680px;--van-doc-nav-width:220px;--van-doc-border-radius:20px;--van-doc-simulator-width:360px;--van-doc-simulator-height:620px;--van-doc-header-top-height:64px;--van-doc-code-font-family:'Menlo', 'Source Code Pro', 'Monaco', + 'Inconsolata', monospace}.van-doc-theme-light{--van-doc-text-color-1:var(--van-doc-black);--van-doc-text-color-2:var(--van-doc-gray-8);--van-doc-text-color-3:#34495e;--van-doc-text-color-4:var(--van-doc-gray-6);--van-doc-link-color:var(--van-doc-blue);--van-doc-background:#eff2f5;--van-doc-background-2:var(--van-doc-white);--van-doc-background-3:var(--van-doc-white);--van-doc-header-background:#011f3c;--van-doc-border-color:var(--van-doc-gray-2);--van-doc-code-color:#58727e;--van-doc-code-comment-color:var(--van-doc-gray-6);--van-doc-code-background:var(--van-doc-gray-1);--van-doc-blockquote-color:#2f85da;--van-doc-blockquote-background:#ecf9ff}.van-doc-theme-dark{--van-doc-text-color-1:var(--van-doc-white);--van-doc-text-color-2:rgba(255, 255, 255, 0.9);--van-doc-text-color-3:rgba(255, 255, 255, 0.75);--van-doc-text-color-4:rgba(255, 255, 255, 0.6);--van-doc-link-color:#1bb5fe;--van-doc-background:#202124;--van-doc-background-2:rgba(255, 255, 255, 0.06);--van-doc-background-3:rgba(255, 255, 255, 0.1);--van-doc-header-background:rgba(1, 31, 60, 0.3);--van-doc-border-color:#3a3a3c;--van-doc-code-color:rgba(200, 200, 200, 0.85);--van-doc-code-comment-color:var(--van-doc-gray-7);--van-doc-code-background:rgba(0, 0, 0, 0.24);--van-doc-blockquote-color:#bae6fd;--van-doc-blockquote-background:rgba(7, 89, 133, 0.25)}body{min-width:1100px;margin:0;overflow-x:auto;color:var(--van-doc-text-color-2);font-size:16px;font-family:"Open Sans",-apple-system,BlinkMacSystemFont,"Helvetica Neue",Helvetica,Segoe UI,Arial,Roboto,"PingFang SC","miui","Hiragino Sans GB","Microsoft Yahei",sans-serif;background-color:var(--van-doc-background);-webkit-font-smoothing:antialiased}p{margin:0}h1,h2,h3,h4,h5,h6{margin:0;font-size:inherit}ul,ol{margin:0;padding:0;list-style:none}a{text-decoration:none}.van-doc-row{width:100%}@media(min-width: var(--van-doc-row-max-width)){.van-doc-row{width:var(--van-doc-row-max-width);margin:0 auto}}body{min-width:100vw;background-color:inherit}.van-doc-theme-light{background-color:var(--van-doc-gray-1)}.van-doc-theme-dark{background-color:var(--van-doc-black)}::-webkit-scrollbar{width:0;background:transparent} \ No newline at end of file diff --git a/vant/static/js/7063.d88b0a2d.js b/vant/static/js/7063.d88b0a2d.js new file mode 100644 index 00000000..4b992b1b --- /dev/null +++ b/vant/static/js/7063.d88b0a2d.js @@ -0,0 +1,6 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([["7063"],{91771:function(e,t,i){i.d(t,{De:function(){return a},b$:function(){return h},vc:function(){return n}});let n={name:"vant",build:{srcDir:"src",tagPrefix:"van-",namedExport:!0,skipInstall:["lazyload"],packageManager:"pnpm",extensions:{esm:".mjs"},site:{publicPath:"undefined"==typeof window&&process.env.PUBLIC_PATH||"/vant/"},vetur:{tagPrefix:"van-"},css:{removeSourceFile:!0}},site:{defaultLang:"en-US",darkModeClass:"van-theme-dark",lightModeClass:"van-theme-light",enableVConsole:!1,versions:[{label:"v1",link:"/vant/v1/"},{label:"v2",link:"/vant/v2/"},{label:"v3",link:"/vant/v3/"}],baiduAnalytics:{seed:"af5d41bc4e446e76665dbe3ec18d55c3"},icpLicense:{text:"\u6D59ICP\u59072021036118\u53F7",link:"https://beian.miit.gov.cn/"},headHtml:` +`,locales:{"zh-CN":{title:"Vant 4",subtitle:"\uFF08\u9002\u7528\u4E8E Vue 3\uFF09",description:"\u8F7B\u91CF\u3001\u53EF\u5B9A\u5236\u7684\u79FB\u52A8\u7AEF\u7EC4\u4EF6\u5E93",logo:"https://fastly.jsdelivr.net/npm/@vant/assets/logo.png",langLabel:"\u4E2D",links:[{logo:"https://fastly.jsdelivr.net/npm/@vant/assets/weapp.svg",url:"/vant-weapp/"},{logo:"https://fastly.jsdelivr.net/npm/@vant/assets/github.svg",url:"https://github.com/vant-ui/vant"}],nav:[{title:"\u5F00\u53D1\u6307\u5357",items:[{path:"home",title:"\u4ECB\u7ECD"},{path:"quickstart",title:"\u5FEB\u901F\u4E0A\u624B"},{path:"advanced-usage",title:"\u8FDB\u9636\u7528\u6CD5"},{path:"faq",title:"\u5E38\u89C1\u95EE\u9898"},{path:"changelog",title:"\u66F4\u65B0\u65E5\u5FD7"},{path:"release-note-v4",title:"4.0 \u66F4\u65B0\u4ECB\u7ECD"},{path:"migrate-from-v2",title:"\u4ECE v2 \u5347\u7EA7\u5230 v3"},{path:"migrate-from-v3",title:"\u4ECE v3 \u5347\u7EA7\u5230 v4"},{path:"contribution",title:"\u8D21\u732E\u6307\u5357"},{path:"design",title:"\u8BBE\u8BA1\u8D44\u6E90"},{path:"locale",title:"\u56FD\u9645\u5316"}]},{title:"\u57FA\u7840\u7EC4\u4EF6",items:[{path:"button",title:"Button \u6309\u94AE"},{path:"cell",title:"Cell \u5355\u5143\u683C"},{path:"config-provider",title:"ConfigProvider \u5168\u5C40\u914D\u7F6E"},{path:"icon",title:"Icon \u56FE\u6807"},{path:"image",title:"Image \u56FE\u7247"},{path:"col",title:"Layout \u5E03\u5C40"},{path:"popup",title:"Popup \u5F39\u51FA\u5C42"},{path:"space",title:"Space \u95F4\u8DDD"},{path:"style",title:"Style \u5185\u7F6E\u6837\u5F0F"},{path:"toast",title:"Toast \u8F7B\u63D0\u793A"}]},{title:"\u8868\u5355\u7EC4\u4EF6",items:[{path:"calendar",title:"Calendar \u65E5\u5386"},{path:"cascader",title:"Cascader \u7EA7\u8054\u9009\u62E9"},{path:"checkbox",title:"Checkbox \u590D\u9009\u6846"},{path:"date-picker",title:"DatePicker \u65E5\u671F\u9009\u62E9"},{path:"field",title:"Field \u8F93\u5165\u6846"},{path:"form",title:"Form \u8868\u5355"},{path:"number-keyboard",title:"NumberKeyboard \u6570\u5B57\u952E\u76D8"},{path:"password-input",title:"PasswordInput \u5BC6\u7801\u8F93\u5165\u6846"},{path:"picker",title:"Picker \u9009\u62E9\u5668"},{path:"picker-group",title:"PickerGroup \u9009\u62E9\u5668\u7EC4"},{path:"radio",title:"Radio \u5355\u9009\u6846"},{path:"rate",title:"Rate \u8BC4\u5206"},{path:"search",title:"Search \u641C\u7D22"},{path:"slider",title:"Slider \u6ED1\u5757"},{path:"signature",title:"Signature \u7B7E\u540D"},{path:"stepper",title:"Stepper \u6B65\u8FDB\u5668"},{path:"switch",title:"Switch \u5F00\u5173"},{path:"time-picker",title:"TimePicker \u65F6\u95F4\u9009\u62E9"},{path:"uploader",title:"Uploader \u6587\u4EF6\u4E0A\u4F20"}]},{title:"\u53CD\u9988\u7EC4\u4EF6",items:[{path:"action-sheet",title:"ActionSheet \u52A8\u4F5C\u9762\u677F"},{path:"barrage",title:"Barrage \u5F39\u5E55"},{path:"dialog",title:"Dialog \u5F39\u51FA\u6846"},{path:"dropdown-menu",title:"DropdownMenu \u4E0B\u62C9\u83DC\u5355"},{path:"floating-panel",title:"FloatingPanel \u6D6E\u52A8\u9762\u677F"},{path:"floating-bubble",title:"FloatingBubble \u6D6E\u52A8\u6C14\u6CE1"},{path:"loading",title:"Loading \u52A0\u8F7D"},{path:"notify",title:"Notify \u6D88\u606F\u901A\u77E5"},{path:"overlay",title:"Overlay \u906E\u7F69\u5C42"},{path:"pull-refresh",title:"PullRefresh \u4E0B\u62C9\u5237\u65B0"},{path:"share-sheet",title:"ShareSheet \u5206\u4EAB\u9762\u677F"},{path:"swipe-cell",title:"SwipeCell \u6ED1\u52A8\u5355\u5143\u683C"}]},{title:"\u5C55\u793A\u7EC4\u4EF6",items:[{path:"badge",title:"Badge \u5FBD\u6807"},{path:"circle",title:"Circle \u73AF\u5F62\u8FDB\u5EA6\u6761"},{path:"collapse",title:"Collapse \u6298\u53E0\u9762\u677F"},{path:"count-down",title:"CountDown \u5012\u8BA1\u65F6"},{path:"divider",title:"Divider \u5206\u5272\u7EBF"},{path:"empty",title:"Empty \u7A7A\u72B6\u6001"},{path:"highlight",title:"Highlight \u9AD8\u4EAE\u6587\u672C"},{path:"image-preview",title:"ImagePreview \u56FE\u7247\u9884\u89C8"},{path:"lazyload",title:"Lazyload \u61D2\u52A0\u8F7D"},{path:"list",title:"List \u5217\u8868"},{path:"notice-bar",title:"NoticeBar \u901A\u77E5\u680F"},{path:"popover",title:"Popover \u6C14\u6CE1\u5F39\u51FA\u6846"},{path:"progress",title:"Progress \u8FDB\u5EA6\u6761"},{path:"rolling-text",title:"RollingText \u7FFB\u6EDA\u6587\u672C"},{path:"skeleton",title:"Skeleton \u9AA8\u67B6\u5C4F"},{path:"steps",title:"Steps \u6B65\u9AA4\u6761"},{path:"sticky",title:"Sticky \u7C98\u6027\u5E03\u5C40"},{path:"swipe",title:"Swipe \u8F6E\u64AD"},{path:"tag",title:"Tag \u6807\u7B7E"},{path:"text-ellipsis",title:"TextEllipsis \u6587\u672C\u7701\u7565"},{path:"watermark",title:"Watermark \u6C34\u5370"}]},{title:"\u5BFC\u822A\u7EC4\u4EF6",items:[{path:"action-bar",title:"ActionBar \u52A8\u4F5C\u680F"},{path:"back-top",title:"BackTop \u56DE\u5230\u9876\u90E8"},{path:"grid",title:"Grid \u5BAB\u683C"},{path:"index-bar",title:"IndexBar \u7D22\u5F15\u680F"},{path:"nav-bar",title:"NavBar \u5BFC\u822A\u680F"},{path:"pagination",title:"Pagination \u5206\u9875"},{path:"sidebar",title:"Sidebar \u4FA7\u8FB9\u5BFC\u822A"},{path:"tab",title:"Tab \u6807\u7B7E\u9875"},{path:"tabbar",title:"Tabbar \u6807\u7B7E\u680F"},{path:"tree-select",title:"TreeSelect \u5206\u7C7B\u9009\u62E9"}]},{title:"\u4E1A\u52A1\u7EC4\u4EF6",items:[{path:"address-edit",title:"AddressEdit \u5730\u5740\u7F16\u8F91"},{path:"address-list",title:"AddressList \u5730\u5740\u5217\u8868"},{path:"area",title:"Area \u7701\u5E02\u533A\u9009\u62E9"},{path:"card",title:"Card \u5546\u54C1\u5361\u7247"},{path:"contact-card",title:"ContactCard \u8054\u7CFB\u4EBA\u5361\u7247"},{path:"contact-edit",title:"ContactEdit \u8054\u7CFB\u4EBA\u7F16\u8F91"},{path:"contact-list",title:"ContactList \u8054\u7CFB\u4EBA\u5217\u8868"},{path:"coupon-list",title:"Coupon \u4F18\u60E0\u5238"},{path:"submit-bar",title:"SubmitBar \u63D0\u4EA4\u8BA2\u5355\u680F"}]},{title:"\u7EC4\u5408\u5F0F API",items:[{path:"vant-use-intro",title:"\u4ECB\u7ECD"},{path:"use-click-away",title:"useClickAway"},{path:"use-count-down",title:"useCountDown"},{path:"use-custom-field-value",title:"useCustomFieldValue"},{path:"use-event-listener",title:"useEventListener"},{path:"use-page-visibility",title:"usePageVisibility"},{path:"use-rect",title:"useRect"},{path:"use-relation",title:"useRelation"},{path:"use-scroll-parent",title:"useScrollParent"},{path:"use-toggle",title:"useToggle"},{path:"use-window-size",title:"useWindowSize"},{path:"use-raf",title:"useRaf"}]}]},"en-US":{title:"Vant 4",subtitle:" (for Vue 3)",description:"A lightweight, customizable Vue UI library for mobile web apps.",logo:"https://fastly.jsdelivr.net/npm/@vant/assets/logo.png",langLabel:"EN",links:[{logo:"https://fastly.jsdelivr.net/npm/@vant/assets/github.svg",url:"https://github.com/vant-ui/vant"}],nav:[{title:"Essentials",items:[{path:"home",title:"Introduction"},{path:"quickstart",title:"Quickstart"},{path:"advanced-usage",title:"Advanced Usage"},{path:"faq",title:"FAQ"},{path:"changelog",title:"Changelog"},{path:"release-note-v4",title:"4.0 Release Note"},{path:"migrate-from-v2",title:"Upgrade from v2 to v3"},{path:"migrate-from-v3",title:"Upgrade from v3 to v4"},{path:"contribution",title:"Contribution Guide"},{path:"design",title:"Design Resources"},{path:"locale",title:"Internationalization"}]},{title:"Basic Components",items:[{path:"button",title:"Button"},{path:"cell",title:"Cell"},{path:"config-provider",title:"ConfigProvider"},{path:"icon",title:"Icon"},{path:"image",title:"Image"},{path:"col",title:"Layout"},{path:"popup",title:"Popup"},{path:"space",title:"Space"},{path:"style",title:"Built-in style"},{path:"toast",title:"Toast"}]},{title:"Form Components",items:[{path:"calendar",title:"Calendar"},{path:"cascader",title:"Cascader"},{path:"checkbox",title:"Checkbox"},{path:"date-picker",title:"DatePicker"},{path:"field",title:"Field"},{path:"form",title:"Form"},{path:"number-keyboard",title:"NumberKeyboard"},{path:"password-input",title:"PasswordInput"},{path:"picker",title:"Picker"},{path:"picker-group",title:"PickerGroup"},{path:"radio",title:"Radio"},{path:"rate",title:"Rate"},{path:"search",title:"Search"},{path:"slider",title:"Slider"},{path:"signature",title:"Signature"},{path:"stepper",title:"Stepper"},{path:"switch",title:"Switch"},{path:"time-picker",title:"TimePicker"},{path:"uploader",title:"Uploader"}]},{title:"Action Components",items:[{path:"action-sheet",title:"ActionSheet"},{path:"barrage",title:"Barrage"},{path:"dialog",title:"Dialog"},{path:"dropdown-menu",title:"DropdownMenu"},{path:"floating-panel",title:"FloatingPanel"},{path:"floating-bubble",title:"FloatingBubble"},{path:"loading",title:"Loading"},{path:"notify",title:"Notify"},{path:"overlay",title:"Overlay"},{path:"pull-refresh",title:"PullRefresh"},{path:"share-sheet",title:"ShareSheet"},{path:"swipe-cell",title:"SwipeCell"}]},{title:"Display Components",items:[{path:"badge",title:"Badge"},{path:"circle",title:"Circle"},{path:"collapse",title:"Collapse"},{path:"count-down",title:"CountDown"},{path:"divider",title:"Divider"},{path:"empty",title:"Empty"},{path:"highlight",title:"Highlight"},{path:"image-preview",title:"ImagePreview"},{path:"lazyload",title:"Lazyload"},{path:"list",title:"List"},{path:"notice-bar",title:"NoticeBar"},{path:"popover",title:"Popover"},{path:"progress",title:"Progress"},{path:"rolling-text",title:"RollingText"},{path:"skeleton",title:"Skeleton"},{path:"steps",title:"Steps"},{path:"sticky",title:"Sticky"},{path:"swipe",title:"Swipe"},{path:"tag",title:"Tag"},{path:"text-ellipsis",title:"TextEllipsis"},{path:"watermark",title:"Watermark"}]},{title:"Navigation Components",items:[{path:"action-bar",title:"ActionBar"},{path:"back-top",title:"BackTop"},{path:"grid",title:"Grid"},{path:"index-bar",title:"IndexBar"},{path:"nav-bar",title:"NavBar"},{path:"pagination",title:"Pagination"},{path:"sidebar",title:"Sidebar"},{path:"tab",title:"Tab"},{path:"tabbar",title:"Tabbar"},{path:"tree-select",title:"TreeSelect"}]},{title:"Business Components",items:[{path:"address-edit",title:"AddressEdit"},{path:"address-list",title:"AddressList"},{path:"area",title:"Area"},{path:"card",title:"Card"},{path:"contact-card",title:"ContactCard"},{path:"contact-edit",title:"ContactEdit"},{path:"contact-list",title:"ContactList"},{path:"coupon-list",title:"Coupon"},{path:"submit-bar",title:"SubmitBar"}]},{title:"Composables",items:[{path:"vant-use-intro",title:"Intro"},{path:"use-click-away",title:"useClickAway"},{path:"use-count-down",title:"useCountDown"},{path:"use-custom-field-value",title:"useCustomFieldValue"},{path:"use-event-listener",title:"useEventListener"},{path:"use-page-visibility",title:"usePageVisibility"},{path:"use-rect",title:"useRect"},{path:"use-relation",title:"useRelation"},{path:"use-scroll-parent",title:"useScrollParent"},{path:"use-toggle",title:"useToggle"},{path:"use-window-size",title:"useWindowSize"},{path:"use-raf",title:"useRaf"}]}]}}}},a={AdvancedUsage_en_US:()=>i.e("1994").then(i.bind(i,"17170")),AdvancedUsage_zh_CN:()=>i.e("671").then(i.bind(i,"16121")),Changelog_en_US:()=>i.e("5734").then(i.bind(i,"45382")),Changelog_zh_CN:()=>i.e("4495").then(i.bind(i,"96343")),Contribution_en_US:()=>i.e("262").then(i.bind(i,"51362")),Contribution_zh_CN:()=>i.e("2956").then(i.bind(i,"81202")),Design_en_US:()=>i.e("2625").then(i.bind(i,"22660")),Design_zh_CN:()=>i.e("8841").then(i.bind(i,"82905")),Faq_en_US:()=>i.e("5088").then(i.bind(i,"16622")),Faq_zh_CN:()=>i.e("3289").then(i.bind(i,"36905")),Home_en_US:()=>i.e("9847").then(i.bind(i,"99098")),Home_zh_CN:()=>i.e("8814").then(i.bind(i,"986")),MigrateFromV2_en_US:()=>i.e("7302").then(i.bind(i,"47046")),MigrateFromV2_zh_CN:()=>i.e("9094").then(i.bind(i,"64280")),MigrateFromV3_en_US:()=>i.e("1828").then(i.bind(i,"98671")),MigrateFromV3_zh_CN:()=>i.e("9603").then(i.bind(i,"67927")),Quickstart_en_US:()=>i.e("9558").then(i.bind(i,"30081")),Quickstart_zh_CN:()=>i.e("5892").then(i.bind(i,"8362")),ReleaseNoteV4_en_US:()=>i.e("2532").then(i.bind(i,"71717")),ReleaseNoteV4_zh_CN:()=>i.e("3567").then(i.bind(i,"21144")),UseClickAway_en_US:()=>i.e("4973").then(i.bind(i,"12818")),UseClickAway_zh_CN:()=>i.e("1397").then(i.bind(i,"53990")),UseCountDown_en_US:()=>i.e("9456").then(i.bind(i,"52238")),UseCountDown_zh_CN:()=>i.e("3178").then(i.bind(i,"44123")),UseCustomFieldValue_en_US:()=>i.e("4558").then(i.bind(i,"54250")),UseCustomFieldValue_zh_CN:()=>i.e("2535").then(i.bind(i,"84256")),UseEventListener_en_US:()=>i.e("3364").then(i.bind(i,"17531")),UseEventListener_zh_CN:()=>i.e("3198").then(i.bind(i,"10055")),UsePageVisibility_en_US:()=>i.e("9007").then(i.bind(i,"45885")),UsePageVisibility_zh_CN:()=>i.e("5180").then(i.bind(i,"66721")),UseRaf_en_US:()=>i.e("3255").then(i.bind(i,"64250")),UseRaf_zh_CN:()=>i.e("1515").then(i.bind(i,"57307")),UseRect_en_US:()=>i.e("9160").then(i.bind(i,"17786")),UseRect_zh_CN:()=>i.e("6920").then(i.bind(i,"72155")),UseRelation_en_US:()=>i.e("6289").then(i.bind(i,"53301")),UseRelation_zh_CN:()=>i.e("3004").then(i.bind(i,"17169")),UseScrollParent_en_US:()=>i.e("1076").then(i.bind(i,"7517")),UseScrollParent_zh_CN:()=>i.e("4061").then(i.bind(i,"60699")),UseToggle_en_US:()=>i.e("6143").then(i.bind(i,"82693")),UseToggle_zh_CN:()=>i.e("5801").then(i.bind(i,"80602")),UseWindowSize_en_US:()=>i.e("9364").then(i.bind(i,"97746")),UseWindowSize_zh_CN:()=>i.e("8723").then(i.bind(i,"40542")),VantUseIntro_en_US:()=>i.e("182").then(i.bind(i,"16197")),VantUseIntro_zh_CN:()=>i.e("641").then(i.bind(i,"85232")),ActionBar_zh_CN:()=>i.e("5508").then(i.bind(i,"2134")),ActionSheet_zh_CN:()=>i.e("5211").then(i.bind(i,"7149")),AddressEdit_zh_CN:()=>i.e("4670").then(i.bind(i,"64701")),AddressList_zh_CN:()=>i.e("1987").then(i.bind(i,"35546")),Area_zh_CN:()=>i.e("6163").then(i.bind(i,"50191")),BackTop_zh_CN:()=>i.e("4234").then(i.bind(i,"43864")),Badge_zh_CN:()=>i.e("6915").then(i.bind(i,"57164")),Barrage_zh_CN:()=>i.e("695").then(i.bind(i,"65882")),Button_zh_CN:()=>i.e("3085").then(i.bind(i,"98781")),Calendar_zh_CN:()=>i.e("2469").then(i.bind(i,"81564")),Card_zh_CN:()=>i.e("4764").then(i.bind(i,"29820")),Cascader_zh_CN:()=>i.e("6683").then(i.bind(i,"7985")),Cell_zh_CN:()=>i.e("7914").then(i.bind(i,"83072")),Checkbox_zh_CN:()=>i.e("5573").then(i.bind(i,"66470")),Circle_zh_CN:()=>i.e("793").then(i.bind(i,"92877")),Col_zh_CN:()=>i.e("650").then(i.bind(i,"57320")),Collapse_zh_CN:()=>i.e("3460").then(i.bind(i,"33031")),ConfigProvider_zh_CN:()=>i.e("4629").then(i.bind(i,"40963")),ContactCard_zh_CN:()=>i.e("3091").then(i.bind(i,"89161")),ContactEdit_zh_CN:()=>i.e("8342").then(i.bind(i,"17222")),ContactList_zh_CN:()=>i.e("1113").then(i.bind(i,"4721")),CountDown_zh_CN:()=>i.e("5395").then(i.bind(i,"66440")),CouponList_zh_CN:()=>i.e("5325").then(i.bind(i,"36021")),DatePicker_zh_CN:()=>i.e("6382").then(i.bind(i,"75090")),Dialog_zh_CN:()=>i.e("2493").then(i.bind(i,"8596")),Divider_zh_CN:()=>i.e("1247").then(i.bind(i,"20364")),DropdownMenu_zh_CN:()=>i.e("3718").then(i.bind(i,"70430")),Empty_zh_CN:()=>i.e("7838").then(i.bind(i,"73753")),Field_zh_CN:()=>i.e("8057").then(i.bind(i,"69086")),FloatingBubble_zh_CN:()=>i.e("7900").then(i.bind(i,"86161")),FloatingPanel_zh_CN:()=>i.e("9970").then(i.bind(i,"48255")),Form_zh_CN:()=>i.e("6462").then(i.bind(i,"95339")),Grid_zh_CN:()=>i.e("8789").then(i.bind(i,"61738")),Highlight_zh_CN:()=>i.e("3654").then(i.bind(i,"45214")),Icon_zh_CN:()=>i.e("5696").then(i.bind(i,"53488")),Image_zh_CN:()=>i.e("7029").then(i.bind(i,"10613")),ImagePreview_zh_CN:()=>i.e("133").then(i.bind(i,"7210")),IndexBar_zh_CN:()=>i.e("3113").then(i.bind(i,"89199")),Lazyload_zh_CN:()=>i.e("2738").then(i.bind(i,"94451")),List_zh_CN:()=>i.e("7230").then(i.bind(i,"57143")),Loading_zh_CN:()=>i.e("7776").then(i.bind(i,"60531")),Locale_zh_CN:()=>i.e("4689").then(i.bind(i,"41025")),NavBar_zh_CN:()=>i.e("2151").then(i.bind(i,"37387")),NoticeBar_zh_CN:()=>i.e("3833").then(i.bind(i,"75803")),Notify_zh_CN:()=>i.e("1021").then(i.bind(i,"63590")),NumberKeyboard_zh_CN:()=>i.e("8577").then(i.bind(i,"26110")),Overlay_zh_CN:()=>i.e("6446").then(i.bind(i,"60485")),Pagination_zh_CN:()=>i.e("8959").then(i.bind(i,"91008")),PasswordInput_zh_CN:()=>i.e("43").then(i.bind(i,"78569")),Picker_zh_CN:()=>i.e("467").then(i.bind(i,"35909")),PickerGroup_zh_CN:()=>i.e("2357").then(i.bind(i,"96188")),Popover_zh_CN:()=>i.e("4663").then(i.bind(i,"22088")),Popup_zh_CN:()=>i.e("9393").then(i.bind(i,"47399")),Progress_zh_CN:()=>i.e("5393").then(i.bind(i,"21014")),PullRefresh_zh_CN:()=>i.e("5962").then(i.bind(i,"56985")),Radio_zh_CN:()=>i.e("8050").then(i.bind(i,"38580")),Rate_zh_CN:()=>i.e("1542").then(i.bind(i,"96503")),RollingText_zh_CN:()=>i.e("3270").then(i.bind(i,"50712")),Search_zh_CN:()=>i.e("7062").then(i.bind(i,"51673")),ShareSheet_zh_CN:()=>i.e("9791").then(i.bind(i,"4071")),Sidebar_zh_CN:()=>i.e("5766").then(i.bind(i,"45890")),Signature_zh_CN:()=>i.e("7074").then(i.bind(i,"37868")),Skeleton_zh_CN:()=>i.e("4995").then(i.bind(i,"35173")),Slider_zh_CN:()=>i.e("4630").then(i.bind(i,"40323")),Space_zh_CN:()=>i.e("8284").then(i.bind(i,"89306")),Stepper_zh_CN:()=>i.e("9121").then(i.bind(i,"47601")),Steps_zh_CN:()=>i.e("4943").then(i.bind(i,"94161")),Sticky_zh_CN:()=>i.e("2641").then(i.bind(i,"60261")),Style_zh_CN:()=>i.e("1829").then(i.bind(i,"22169")),SubmitBar_zh_CN:()=>i.e("398").then(i.bind(i,"18504")),Swipe_zh_CN:()=>i.e("75").then(i.bind(i,"2681")),SwipeCell_zh_CN:()=>i.e("9217").then(i.bind(i,"68534")),Switch_zh_CN:()=>i.e("8724").then(i.bind(i,"35213")),Tab_zh_CN:()=>i.e("2495").then(i.bind(i,"92395")),Tabbar_zh_CN:()=>i.e("2428").then(i.bind(i,"92291")),Tag_zh_CN:()=>i.e("6535").then(i.bind(i,"36533")),TextEllipsis_zh_CN:()=>i.e("7691").then(i.bind(i,"4115")),TimePicker_zh_CN:()=>i.e("139").then(i.bind(i,"27870")),Toast_zh_CN:()=>i.e("3687").then(i.bind(i,"88454")),TreeSelect_zh_CN:()=>i.e("1771").then(i.bind(i,"66432")),Uploader_zh_CN:()=>i.e("2689").then(i.bind(i,"1171")),Watermark_zh_CN:()=>i.e("545").then(i.bind(i,"92410")),ActionBar_en_US:()=>i.e("3860").then(i.bind(i,"75245")),ActionSheet_en_US:()=>i.e("4788").then(i.bind(i,"75030")),AddressEdit_en_US:()=>i.e("9727").then(i.bind(i,"39368")),AddressList_en_US:()=>i.e("6442").then(i.bind(i,"10931")),Area_en_US:()=>i.e("8389").then(i.bind(i,"17666")),BackTop_en_US:()=>i.e("9728").then(i.bind(i,"39297")),Badge_en_US:()=>i.e("3624").then(i.bind(i,"20874")),Barrage_en_US:()=>i.e("1722").then(i.bind(i,"82726")),Button_en_US:()=>i.e("7858").then(i.bind(i,"66112")),Calendar_en_US:()=>i.e("8201").then(i.bind(i,"49871")),Card_en_US:()=>i.e("6635").then(i.bind(i,"77186")),Cascader_en_US:()=>i.e("1348").then(i.bind(i,"95579")),Cell_en_US:()=>i.e("4628").then(i.bind(i,"31793")),Checkbox_en_US:()=>i.e("8853").then(i.bind(i,"59620")),Circle_en_US:()=>i.e("7563").then(i.bind(i,"83533")),Col_en_US:()=>i.e("979").then(i.bind(i,"38642")),Collapse_en_US:()=>i.e("6715").then(i.bind(i,"64426")),ConfigProvider_en_US:()=>i.e("9862").then(i.bind(i,"70353")),ContactCard_en_US:()=>i.e("6900").then(i.bind(i,"21451")),ContactEdit_en_US:()=>i.e("1878").then(i.bind(i,"31525")),ContactList_en_US:()=>i.e("7340").then(i.bind(i,"22839")),CountDown_en_US:()=>i.e("2512").then(i.bind(i,"1560")),CouponList_en_US:()=>i.e("8443").then(i.bind(i,"24433")),DatePicker_en_US:()=>i.e("4206").then(i.bind(i,"88515")),Dialog_en_US:()=>i.e("5803").then(i.bind(i,"73911")),Divider_en_US:()=>i.e("7839").then(i.bind(i,"82458")),DropdownMenu_en_US:()=>i.e("2442").then(i.bind(i,"45355")),Empty_en_US:()=>i.e("6138").then(i.bind(i,"7052")),Field_en_US:()=>i.e("29").then(i.bind(i,"46390")),FloatingBubble_en_US:()=>i.e("128").then(i.bind(i,"77979")),FloatingPanel_en_US:()=>i.e("7558").then(i.bind(i,"71175")),Form_en_US:()=>i.e("4150").then(i.bind(i,"40732")),Grid_en_US:()=>i.e("3358").then(i.bind(i,"65688")),Highlight_en_US:()=>i.e("3514").then(i.bind(i,"98868")),Icon_en_US:()=>i.e("1817").then(i.bind(i,"97261")),Image_en_US:()=>i.e("3139").then(i.bind(i,"68171")),ImagePreview_en_US:()=>i.e("6689").then(i.bind(i,"20908")),IndexBar_en_US:()=>i.e("7681").then(i.bind(i,"64400")),Lazyload_en_US:()=>i.e("8409").then(i.bind(i,"70561")),List_en_US:()=>i.e("9018").then(i.bind(i,"3214")),Loading_en_US:()=>i.e("7046").then(i.bind(i,"90258")),Locale_en_US:()=>i.e("8384").then(i.bind(i,"84689")),NavBar_en_US:()=>i.e("9345").then(i.bind(i,"57672")),NoticeBar_en_US:()=>i.e("5770").then(i.bind(i,"12398")),Notify_en_US:()=>i.e("1312").then(i.bind(i,"39228")),NumberKeyboard_en_US:()=>i.e("9963").then(i.bind(i,"41643")),Overlay_en_US:()=>i.e("3101").then(i.bind(i,"37317")),Pagination_en_US:()=>i.e("902").then(i.bind(i,"67206")),PasswordInput_en_US:()=>i.e("2597").then(i.bind(i,"23010")),Picker_en_US:()=>i.e("6517").then(i.bind(i,"51562")),PickerGroup_en_US:()=>i.e("1897").then(i.bind(i,"19719")),Popover_en_US:()=>i.e("5412").then(i.bind(i,"96237")),Popup_en_US:()=>i.e("5080").then(i.bind(i,"56175")),Progress_en_US:()=>i.e("4618").then(i.bind(i,"73113")),PullRefresh_en_US:()=>i.e("7995").then(i.bind(i,"28398")),Radio_en_US:()=>i.e("9563").then(i.bind(i,"44343")),Rate_en_US:()=>i.e("6865").then(i.bind(i,"78365")),RollingText_en_US:()=>i.e("4315").then(i.bind(i,"77597")),Search_en_US:()=>i.e("5206").then(i.bind(i,"11696")),ShareSheet_en_US:()=>i.e("5023").then(i.bind(i,"6836")),Sidebar_en_US:()=>i.e("9949").then(i.bind(i,"60055")),Signature_en_US:()=>i.e("9950").then(i.bind(i,"20558")),Skeleton_en_US:()=>i.e("478").then(i.bind(i,"87528")),SkeletonAvatar_en_US:()=>i.e("9419").then(i.bind(i,"40294")),SkeletonImage_en_US:()=>i.e("5711").then(i.bind(i,"686")),SkeletonParagraph_en_US:()=>i.e("4914").then(i.bind(i,"28868")),SkeletonTitle_en_US:()=>i.e("5725").then(i.bind(i,"4089")),Slider_en_US:()=>i.e("8796").then(i.bind(i,"50244")),Space_en_US:()=>i.e("692").then(i.bind(i,"31722")),Stepper_en_US:()=>i.e("8611").then(i.bind(i,"49166")),Steps_en_US:()=>i.e("5964").then(i.bind(i,"67661")),Sticky_en_US:()=>i.e("8507").then(i.bind(i,"74434")),Style_en_US:()=>i.e("409").then(i.bind(i,"84322")),SubmitBar_en_US:()=>i.e("3888").then(i.bind(i,"20684")),Swipe_en_US:()=>i.e("6386").then(i.bind(i,"48176")),SwipeCell_en_US:()=>i.e("7606").then(i.bind(i,"93932")),Switch_en_US:()=>i.e("5302").then(i.bind(i,"46898")),Tab_en_US:()=>i.e("7297").then(i.bind(i,"87076")),Tabbar_en_US:()=>i.e("4624").then(i.bind(i,"75363")),Tag_en_US:()=>i.e("5132").then(i.bind(i,"86063")),TextEllipsis_en_US:()=>i.e("3683").then(i.bind(i,"94621")),TimePicker_en_US:()=>i.e("5532").then(i.bind(i,"24030")),Toast_en_US:()=>i.e("4127").then(i.bind(i,"54467")),TreeSelect_en_US:()=>i.e("8300").then(i.bind(i,"33117")),Uploader_en_US:()=>i.e("4729").then(i.bind(i,"80136")),Watermark_en_US:()=>i.e("6822").then(i.bind(i,"39534"))},h="4.9.1"}}]); \ No newline at end of file diff --git a/vant/static/js/9106.4d813cfb.js b/vant/static/js/9106.4d813cfb.js new file mode 100644 index 00000000..e0e7abb1 --- /dev/null +++ b/vant/static/js/9106.4d813cfb.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([["9106"],{14703:function(){},91231:function(e,t,i){i.d(t,{D:function(){return a},v:function(){return l}}),i("14703");let a={ActionBar:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("7106"),i.e("8043")]).then(i.bind(i,"1428")),ActionSheet:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("7106"),i.e("6955")]).then(i.bind(i,"36624")),AddressEdit:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("7106"),i.e("8081"),i.e("9241"),i.e("5889"),i.e("1802"),i.e("3382")]).then(i.bind(i,"61819")),AddressList:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("7106"),i.e("7275")]).then(i.bind(i,"40200")),Area:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("8081"),i.e("5889"),i.e("1802"),i.e("6288")]).then(i.bind(i,"9724")),BackTop:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("8081"),i.e("541")]).then(i.bind(i,"32218")),Badge:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("6302")]).then(i.bind(i,"17769")),Barrage:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("9757"),i.e("5283")]).then(i.bind(i,"70892")),Button:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("1674")]).then(i.bind(i,"26002")),Calendar:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("7106"),i.e("8081"),i.e("5889"),i.e("7023"),i.e("3826")]).then(i.bind(i,"23901")),Card:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("7301")]).then(i.bind(i,"97087")),Cascader:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("7106"),i.e("8081"),i.e("9241"),i.e("1802"),i.e("8867")]).then(i.bind(i,"22832")),Cell:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("6473")]).then(i.bind(i,"21025")),Checkbox:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("2307")]).then(i.bind(i,"25814")),Circle:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("5807")]).then(i.bind(i,"96592")),Col:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("1201")]).then(i.bind(i,"60798")),Collapse:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("712")]).then(i.bind(i,"39154")),ConfigProvider:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("9241"),i.e("9423")]).then(i.bind(i,"46624")),ContactCard:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("7106"),i.e("56")]).then(i.bind(i,"68979")),ContactEdit:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("7106"),i.e("9241"),i.e("5273")]).then(i.bind(i,"66174")),ContactList:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("7106"),i.e("2848")]).then(i.bind(i,"68010")),CountDown:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("7106"),i.e("3293")]).then(i.bind(i,"6200")),CouponList:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("7106"),i.e("8081"),i.e("9241"),i.e("515"),i.e("3393")]).then(i.bind(i,"86604")),DatePicker:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("8081"),i.e("5889"),i.e("9772")]).then(i.bind(i,"96916")),Dialog:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("7106"),i.e("1105"),i.e("2763")]).then(i.bind(i,"72537")),Divider:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("5245")]).then(i.bind(i,"71706")),DropdownMenu:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("7106"),i.e("7729")]).then(i.bind(i,"33659")),Empty:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("8081"),i.e("515"),i.e("7546")]).then(i.bind(i,"41167")),Field:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("9241"),i.e("966")]).then(i.bind(i,"3427")),FloatingBubble:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("7106"),i.e("8081"),i.e("8203")]).then(i.bind(i,"97038")),FloatingPanel:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("8081"),i.e("6604")]).then(i.bind(i,"63627")),Form:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("7106"),i.e("8081"),i.e("9241"),i.e("5889"),i.e("1802"),i.e("4394"),i.e("7023"),i.e("4745")]).then(i.bind(i,"70605")),Grid:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("4513")]).then(i.bind(i,"37716")),Highlight:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("5271")]).then(i.bind(i,"58798")),Icon:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("7106"),i.e("8081"),i.e("994")]).then(i.bind(i,"16497")),Image:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("8440")]).then(i.bind(i,"95083")),ImagePreview:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("7106"),i.e("4394"),i.e("8874")]).then(i.bind(i,"88193")),IndexBar:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("8081"),i.e("1216")]).then(i.bind(i,"2650")),Lazyload:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("2917")]).then(i.bind(i,"73785")),List:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("8081"),i.e("8855")]).then(i.bind(i,"26939")),Loading:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("3042")]).then(i.bind(i,"74660")),NavBar:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("7106"),i.e("4946")]).then(i.bind(i,"81770")),NoticeBar:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("1223")]).then(i.bind(i,"14937")),Notify:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("7106"),i.e("6086")]).then(i.bind(i,"88822")),NumberKeyboard:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("7106"),i.e("9241"),i.e("1654")]).then(i.bind(i,"72248")),Overlay:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("1936")]).then(i.bind(i,"35990")),Pagination:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("8026")]).then(i.bind(i,"7249")),PasswordInput:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("905")]).then(i.bind(i,"30454")),Picker:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("7106"),i.e("8081"),i.e("9241"),i.e("5889"),i.e("1033")]).then(i.bind(i,"42099")),PickerGroup:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("7106"),i.e("8081"),i.e("5889"),i.e("6479")]).then(i.bind(i,"85651")),Popover:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("7106"),i.e("8081"),i.e("9241"),i.e("5889"),i.e("2997")]).then(i.bind(i,"50449")),Popup:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("7106"),i.e("514")]).then(i.bind(i,"43442")),Progress:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("4539")]).then(i.bind(i,"60168")),PullRefresh:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("7106"),i.e("8081"),i.e("1587")]).then(i.bind(i,"44656")),Radio:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("3175")]).then(i.bind(i,"41731")),Rate:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("7106"),i.e("2804")]).then(i.bind(i,"42576")),RollingText:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("1074")]).then(i.bind(i,"90025")),Search:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("7106"),i.e("9241"),i.e("3543")]).then(i.bind(i,"7761")),ShareSheet:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("7106"),i.e("8387")]).then(i.bind(i,"15887")),Sidebar:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("7106"),i.e("2451")]).then(i.bind(i,"39518")),Signature:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("7106"),i.e("2715")]).then(i.bind(i,"80050")),Skeleton:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("8545")]).then(i.bind(i,"28885")),Slider:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("7106"),i.e("5")]).then(i.bind(i,"63658")),Space:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("9757"),i.e("3181")]).then(i.bind(i,"19468")),Stepper:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("7106"),i.e("1371")]).then(i.bind(i,"17867")),Steps:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("8967")]).then(i.bind(i,"41138")),Sticky:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("3294")]).then(i.bind(i,"89998")),Style:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("6361")]).then(i.bind(i,"58380")),SubmitBar:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("7106"),i.e("4480")]).then(i.bind(i,"48917")),Swipe:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("7106"),i.e("4429")]).then(i.bind(i,"38822")),SwipeCell:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("7106"),i.e("1105"),i.e("6167")]).then(i.bind(i,"79695")),Switch:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("7106"),i.e("1105"),i.e("2450")]).then(i.bind(i,"83458")),Tab:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("7106"),i.e("8081"),i.e("3421")]).then(i.bind(i,"18249")),Tabbar:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("7106"),i.e("9790")]).then(i.bind(i,"57827")),Tag:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("297")]).then(i.bind(i,"19770")),TextEllipsis:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("1009")]).then(i.bind(i,"46002")),TimePicker:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("8081"),i.e("5889"),i.e("2608")]).then(i.bind(i,"33094")),Toast:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("7106"),i.e("2630")]).then(i.bind(i,"39598")),TreeSelect:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("3825")]).then(i.bind(i,"90593")),Uploader:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("7106"),i.e("4394"),i.e("6215")]).then(i.bind(i,"5938")),Watermark:()=>Promise.all([i.e("2126"),i.e("6516"),i.e("9553")]).then(i.bind(i,"39976"))},l={name:"vant",build:{srcDir:"src",tagPrefix:"van-",namedExport:!0,skipInstall:["lazyload"],packageManager:"pnpm",extensions:{esm:".mjs"},site:{publicPath:"/vant/"},vetur:{tagPrefix:"van-"},css:{removeSourceFile:!0}},site:{defaultLang:"en-US",darkModeClass:"van-theme-dark",lightModeClass:"van-theme-light",enableVConsole:!1,versions:[{label:"v1",link:"/vant/v1/"},{label:"v2",link:"/vant/v2/"},{label:"v3",link:"/vant/v3/"}],baiduAnalytics:{seed:"af5d41bc4e446e76665dbe3ec18d55c3"},icpLicense:{text:"\u6D59ICP\u59072021036118\u53F7",link:"https://beian.miit.gov.cn/"},headHtml:" + + + + +
+ + + diff --git a/vant/v1/mobile.html b/vant/v1/mobile.html new file mode 100644 index 00000000..c9b8f68d --- /dev/null +++ b/vant/v1/mobile.html @@ -0,0 +1,18 @@ + + + + + + + + + + Vant - 轻量、可靠的移动端 Vue 组件库 + + + + +
+ + + diff --git a/vant/v1/vant-docs.f270944e.js b/vant/v1/vant-docs.f270944e.js new file mode 100644 index 00000000..3ad697b2 --- /dev/null +++ b/vant/v1/vant-docs.f270944e.js @@ -0,0 +1,18 @@ +!function(t){function e(e){for(var n,r,o=e[0],a=e[1],s=0,l=[];s1?i-1:0),o=1;o=0&&Math.floor(e)===e&&isFinite(t)}function f(t){return o(t)&&"function"==typeof t.then&&"function"==typeof t.catch}function p(t){return null==t?"":Array.isArray(t)||u(t)&&t.toString===l?JSON.stringify(t,null,2):String(t)}function v(t){var e=parseFloat(t);return isNaN(e)?t:e}function m(t,e){for(var n=Object.create(null),i=t.split(","),r=0;r-1)return t.splice(n,1)}}var y=Object.prototype.hasOwnProperty;function x(t,e){return y.call(t,e)}function k(t){var e=Object.create(null);return function(n){return e[n]||(e[n]=t(n))}}var w=/-(\w)/g,C=k(function(t){return t.replace(w,function(t,e){return e?e.toUpperCase():""})}),S=k(function(t){return t.charAt(0).toUpperCase()+t.slice(1)}),_=/\B([A-Z])/g,O=k(function(t){return t.replace(_,"-$1").toLowerCase()});var $=Function.prototype.bind?function(t,e){return t.bind(e)}:function(t,e){function n(n){var i=arguments.length;return i?i>1?t.apply(e,arguments):t.call(e,n):t.call(e)}return n._length=t.length,n};function T(t,e){e=e||0;for(var n=t.length-e,i=new Array(n);n--;)i[n]=t[n+e];return i}function j(t,e){for(var n in e)t[n]=e[n];return t}function A(t){for(var e={},n=0;n0,J=K&&K.indexOf("edge/")>0,Z=(K&&K.indexOf("android"),K&&/iphone|ipad|ipod|ios/.test(K)||"ios"===X),tt=(K&&/chrome\/\d+/.test(K),K&&/phantomjs/.test(K),K&&K.match(/firefox\/(\d+)/)),et={}.watch,nt=!1;if(W)try{var it={};Object.defineProperty(it,"passive",{get:function(){nt=!0}}),window.addEventListener("test-passive",null,it)}catch(t){}var rt=function(){return void 0===H&&(H=!W&&!Y&&void 0!==t&&(t.process&&"server"===t.process.env.VUE_ENV)),H},ot=W&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function at(t){return"function"==typeof t&&/native code/.test(t.toString())}var st,ct="undefined"!=typeof Symbol&&at(Symbol)&&"undefined"!=typeof Reflect&&at(Reflect.ownKeys);st="undefined"!=typeof Set&&at(Set)?Set:function(){function t(){this.set=Object.create(null)}return t.prototype.has=function(t){return!0===this.set[t]},t.prototype.add=function(t){this.set[t]=!0},t.prototype.clear=function(){this.set=Object.create(null)},t}();var lt=E,ut=0,dt=function(){this.id=ut++,this.subs=[]};dt.prototype.addSub=function(t){this.subs.push(t)},dt.prototype.removeSub=function(t){b(this.subs,t)},dt.prototype.depend=function(){dt.target&&dt.target.addDep(this)},dt.prototype.notify=function(){var t=this.subs.slice();for(var e=0,n=t.length;e-1)if(o&&!x(r,"default"))a=!1;else if(""===a||a===O(t)){var c=Rt(String,r.type);(c<0||s0&&(ue((l=t(l,(n||"")+"_"+c))[0])&&ue(d)&&(i[u]=bt(d.text+l[0].text),l.shift()),i.push.apply(i,l)):s(l)?ue(d)?i[u]=bt(d.text+l):""!==l&&i.push(bt(l)):ue(l)&&ue(d)?i[u]=bt(d.text+l.text):(a(e._isVList)&&o(l.tag)&&r(l.key)&&o(n)&&(l.key="__vlist"+n+"_"+c+"__"),i.push(l)));return i}(t):void 0}function ue(t){return o(t)&&o(t.text)&&!1===t.isComment}function de(t,e){if(t){for(var n=Object.create(null),i=ct?Reflect.ownKeys(t):Object.keys(t),r=0;r0,a=t?!!t.$stable:!o,s=t&&t.$key;if(t){if(t._normalized)return t._normalized;if(a&&n&&n!==i&&s===n.$key&&!o&&!n.$hasNormal)return n;for(var c in r={},t)t[c]&&"$"!==c[0]&&(r[c]=ve(e,c,t[c]))}else r={};for(var l in e)l in r||(r[l]=me(e,l));return t&&Object.isExtensible(t)&&(t._normalized=r),U(r,"$stable",a),U(r,"$key",s),U(r,"$hasNormal",o),r}function ve(t,e,n){var i=function(){var t=arguments.length?n.apply(null,arguments):n({});return(t=t&&"object"==typeof t&&!Array.isArray(t)?[t]:le(t))&&(0===t.length||1===t.length&&t[0].isComment)?void 0:t};return n.proxy&&Object.defineProperty(t,e,{get:i,enumerable:!0,configurable:!0}),i}function me(t,e){return function(){return t[e]}}function ge(t,e){var n,i,r,a,s;if(Array.isArray(t)||"string"==typeof t)for(n=new Array(t.length),i=0,r=t.length;idocument.createEvent("Event").timeStamp&&(un=function(){return dn.now()})}function hn(){var t,e;for(ln=un(),sn=!0,nn.sort(function(t,e){return t.id-e.id}),cn=0;cncn&&nn[n].id>t.id;)n--;nn.splice(n+1,0,t)}else nn.push(t);an||(an=!0,ee(hn))}}(this)},pn.prototype.run=function(){if(this.active){var t=this.get();if(t!==this.value||c(t)||this.deep){var e=this.value;if(this.value=t,this.user)try{this.cb.call(this.vm,t,e)}catch(t){Ut(t,this.vm,'callback for watcher "'+this.expression+'"')}else this.cb.call(this.vm,t,e)}}},pn.prototype.evaluate=function(){this.value=this.get(),this.dirty=!1},pn.prototype.depend=function(){for(var t=this.deps.length;t--;)this.deps[t].depend()},pn.prototype.teardown=function(){if(this.active){this.vm._isBeingDestroyed||b(this.vm._watchers,this);for(var t=this.deps.length;t--;)this.deps[t].removeSub(this);this.active=!1}};var vn={enumerable:!0,configurable:!0,get:E,set:E};function mn(t,e,n){vn.get=function(){return this[e][n]},vn.set=function(t){this[e][n]=t},Object.defineProperty(t,n,vn)}function gn(t){t._watchers=[];var e=t.$options;e.props&&function(t,e){var n=t.$options.propsData||{},i=t._props={},r=t.$options._propKeys=[];t.$parent&&St(!1);var o=function(o){r.push(o);var a=Mt(o,e,n,t);$t(i,o,a),o in t||mn(t,"_props",o)};for(var a in e)o(a);St(!0)}(t,e.props),e.methods&&function(t,e){t.$options.props;for(var n in e)t[n]="function"!=typeof e[n]?E:$(e[n],t)}(t,e.methods),e.data?function(t){var e=t.$options.data;u(e=t._data="function"==typeof e?function(t,e){ft();try{return t.call(e,e)}catch(t){return Ut(t,e,"data()"),{}}finally{pt()}}(e,t):e||{})||(e={});var n=Object.keys(e),i=t.$options.props,r=(t.$options.methods,n.length);for(;r--;){var o=n[r];0,i&&x(i,o)||(a=void 0,36!==(a=(o+"").charCodeAt(0))&&95!==a&&mn(t,"_data",o))}var a;Ot(e,!0)}(t):Ot(t._data={},!0),e.computed&&function(t,e){var n=t._computedWatchers=Object.create(null),i=rt();for(var r in e){var o=e[r],a="function"==typeof o?o:o.get;0,i||(n[r]=new pn(t,a||E,E,bn)),r in t||yn(t,r,o)}}(t,e.computed),e.watch&&e.watch!==et&&function(t,e){for(var n in e){var i=e[n];if(Array.isArray(i))for(var r=0;r-1:"string"==typeof t?t.split(",").indexOf(e)>-1:!!d(t)&&t.test(e)}function jn(t,e){var n=t.cache,i=t.keys,r=t._vnode;for(var o in n){var a=n[o];if(a){var s=$n(a.componentOptions);s&&!e(s)&&An(n,o,i,r)}}}function An(t,e,n,i){var r=t[e];!r||i&&r.tag===i.tag||r.componentInstance.$destroy(),t[e]=null,b(n,e)}!function(t){t.prototype._init=function(t){var e=this;e._uid=Cn++,e._isVue=!0,t&&t._isComponent?function(t,e){var n=t.$options=Object.create(t.constructor.options),i=e._parentVnode;n.parent=e.parent,n._parentVnode=i;var r=i.componentOptions;n.propsData=r.propsData,n._parentListeners=r.listeners,n._renderChildren=r.children,n._componentTag=r.tag,e.render&&(n.render=e.render,n.staticRenderFns=e.staticRenderFns)}(e,t):e.$options=Lt(Sn(e.constructor),t||{},e),e._renderProxy=e,e._self=e,function(t){var e=t.$options,n=e.parent;if(n&&!e.abstract){for(;n.$options.abstract&&n.$parent;)n=n.$parent;n.$children.push(t)}t.$parent=n,t.$root=n?n.$root:t,t.$children=[],t.$refs={},t._watcher=null,t._inactive=null,t._directInactive=!1,t._isMounted=!1,t._isDestroyed=!1,t._isBeingDestroyed=!1}(e),function(t){t._events=Object.create(null),t._hasHookEvent=!1;var e=t.$options._parentListeners;e&&Qe(t,e)}(e),function(t){t._vnode=null,t._staticTrees=null;var e=t.$options,n=t.$vnode=e._parentVnode,r=n&&n.context;t.$slots=he(e._renderChildren,r),t.$scopedSlots=i,t._c=function(e,n,i,r){return Re(t,e,n,i,r,!1)},t.$createElement=function(e,n,i,r){return Re(t,e,n,i,r,!0)};var o=n&&n.data;$t(t,"$attrs",o&&o.attrs||i,null,!0),$t(t,"$listeners",e._parentListeners||i,null,!0)}(e),en(e,"beforeCreate"),function(t){var e=de(t.$options.inject,t);e&&(St(!1),Object.keys(e).forEach(function(n){$t(t,n,e[n])}),St(!0))}(e),gn(e),function(t){var e=t.$options.provide;e&&(t._provided="function"==typeof e?e.call(t):e)}(e),en(e,"created"),e.$options.el&&e.$mount(e.$options.el)}}(_n),function(t){var e={get:function(){return this._data}},n={get:function(){return this._props}};Object.defineProperty(t.prototype,"$data",e),Object.defineProperty(t.prototype,"$props",n),t.prototype.$set=Tt,t.prototype.$delete=jt,t.prototype.$watch=function(t,e,n){if(u(e))return wn(this,t,e,n);(n=n||{}).user=!0;var i=new pn(this,t,e,n);if(n.immediate)try{e.call(this,i.value)}catch(t){Ut(t,this,'callback for immediate watcher "'+i.expression+'"')}return function(){i.teardown()}}}(_n),function(t){var e=/^hook:/;t.prototype.$on=function(t,n){var i=this;if(Array.isArray(t))for(var r=0,o=t.length;r1?T(e):e;for(var n=T(arguments,1),i='event handler for "'+t+'"',r=0,o=e.length;rparseInt(this.max)&&An(a,s[0],s,this._vnode)),e.data.keepAlive=!0}return e||t&&t[0]}}};!function(t){var e={get:function(){return F}};Object.defineProperty(t,"config",e),t.util={warn:lt,extend:j,mergeOptions:Lt,defineReactive:$t},t.set=Tt,t.delete=jt,t.nextTick=ee,t.observable=function(t){return Ot(t),t},t.options=Object.create(null),M.forEach(function(e){t.options[e+"s"]=Object.create(null)}),t.options._base=t,j(t.options.components,Nn),function(t){t.use=function(t){var e=this._installedPlugins||(this._installedPlugins=[]);if(e.indexOf(t)>-1)return this;var n=T(arguments,1);return n.unshift(this),"function"==typeof t.install?t.install.apply(t,n):"function"==typeof t&&t.apply(null,n),e.push(t),this}}(t),function(t){t.mixin=function(t){return this.options=Lt(this.options,t),this}}(t),On(t),function(t){M.forEach(function(e){t[e]=function(t,n){return n?("component"===e&&u(n)&&(n.name=n.name||t,n=this.options._base.extend(n)),"directive"===e&&"function"==typeof n&&(n={bind:n,update:n}),this.options[e+"s"][t]=n,n):this.options[e+"s"][t]}})}(t)}(_n),Object.defineProperty(_n.prototype,"$isServer",{get:rt}),Object.defineProperty(_n.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(_n,"FunctionalRenderContext",{value:Ne}),_n.version="2.6.10";var In=m("style,class"),zn=m("input,textarea,option,select,progress"),Bn=m("contenteditable,draggable,spellcheck"),Ln=m("events,caret,typing,plaintext-only"),Dn=function(t,e){return Un(e)||"false"===e?"false":"contenteditable"===t&&Ln(e)?e:"true"},Mn=m("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,translate,truespeed,typemustmatch,visible"),Pn="http://www.w3.org/1999/xlink",Fn=function(t){return":"===t.charAt(5)&&"xlink"===t.slice(0,5)},Rn=function(t){return Fn(t)?t.slice(6,t.length):""},Un=function(t){return null==t||!1===t};function Vn(t){for(var e=t.data,n=t,i=t;o(i.componentInstance);)(i=i.componentInstance._vnode)&&i.data&&(e=Hn(i.data,e));for(;o(n=n.parent);)n&&n.data&&(e=Hn(e,n.data));return function(t,e){if(o(t)||o(e))return qn(t,Wn(e));return""}(e.staticClass,e.class)}function Hn(t,e){return{staticClass:qn(t.staticClass,e.staticClass),class:o(t.class)?[t.class,e.class]:e.class}}function qn(t,e){return t?e?t+" "+e:t:e||""}function Wn(t){return Array.isArray(t)?function(t){for(var e,n="",i=0,r=t.length;i-1?vi(t,e,n):Mn(e)?Un(n)?t.removeAttribute(e):(n="allowfullscreen"===e&&"EMBED"===t.tagName?"true":e,t.setAttribute(e,n)):Bn(e)?t.setAttribute(e,Dn(e,n)):Fn(e)?Un(n)?t.removeAttributeNS(Pn,Rn(e)):t.setAttributeNS(Pn,e,n):vi(t,e,n)}function vi(t,e,n){if(Un(n))t.removeAttribute(e);else{if(Q&&!G&&"TEXTAREA"===t.tagName&&"placeholder"===e&&""!==n&&!t.__ieph){var i=function(e){e.stopImmediatePropagation(),t.removeEventListener("input",i)};t.addEventListener("input",i),t.__ieph=!0}t.setAttribute(e,n)}}var mi={create:fi,update:fi};function gi(t,e){var n=e.elm,i=e.data,a=t.data;if(!(r(i.staticClass)&&r(i.class)&&(r(a)||r(a.staticClass)&&r(a.class)))){var s=Vn(e),c=n._transitionClasses;o(c)&&(s=qn(s,Wn(c))),s!==n._prevClass&&(n.setAttribute("class",s),n._prevClass=s)}}var bi,yi={create:gi,update:gi},xi="__r",ki="__c";function wi(t,e,n){var i=bi;return function r(){null!==e.apply(null,arguments)&&_i(t,r,n,i)}}var Ci=Yt&&!(tt&&Number(tt[1])<=53);function Si(t,e,n,i){if(Ci){var r=ln,o=e;e=o._wrapper=function(t){if(t.target===t.currentTarget||t.timeStamp>=r||t.timeStamp<=0||t.target.ownerDocument!==document)return o.apply(this,arguments)}}bi.addEventListener(t,e,nt?{capture:n,passive:i}:n)}function _i(t,e,n,i){(i||bi).removeEventListener(t,e._wrapper||e,n)}function Oi(t,e){if(!r(t.data.on)||!r(e.data.on)){var n=e.data.on||{},i=t.data.on||{};bi=e.elm,function(t){if(o(t[xi])){var e=Q?"change":"input";t[e]=[].concat(t[xi],t[e]||[]),delete t[xi]}o(t[ki])&&(t.change=[].concat(t[ki],t.change||[]),delete t[ki])}(n),ae(n,i,Si,_i,wi,e.context),bi=void 0}}var $i,Ti={create:Oi,update:Oi};function ji(t,e){if(!r(t.data.domProps)||!r(e.data.domProps)){var n,i,a=e.elm,s=t.data.domProps||{},c=e.data.domProps||{};for(n in o(c.__ob__)&&(c=e.data.domProps=j({},c)),s)n in c||(a[n]="");for(n in c){if(i=c[n],"textContent"===n||"innerHTML"===n){if(e.children&&(e.children.length=0),i===s[n])continue;1===a.childNodes.length&&a.removeChild(a.childNodes[0])}if("value"===n&&"PROGRESS"!==a.tagName){a._value=i;var l=r(i)?"":String(i);Ai(a,l)&&(a.value=l)}else if("innerHTML"===n&&Kn(a.tagName)&&r(a.innerHTML)){($i=$i||document.createElement("div")).innerHTML=""+i+"";for(var u=$i.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;u.firstChild;)a.appendChild(u.firstChild)}else if(i!==s[n])try{a[n]=i}catch(t){}}}}function Ai(t,e){return!t.composing&&("OPTION"===t.tagName||function(t,e){var n=!0;try{n=document.activeElement!==t}catch(t){}return n&&t.value!==e}(t,e)||function(t,e){var n=t.value,i=t._vModifiers;if(o(i)){if(i.number)return v(n)!==v(e);if(i.trim)return n.trim()!==e.trim()}return n!==e}(t,e))}var Ei={create:ji,update:ji},Ni=k(function(t){var e={},n=/:(.+)/;return t.split(/;(?![^(]*\))/g).forEach(function(t){if(t){var i=t.split(n);i.length>1&&(e[i[0].trim()]=i[1].trim())}}),e});function Ii(t){var e=zi(t.style);return t.staticStyle?j(t.staticStyle,e):e}function zi(t){return Array.isArray(t)?A(t):"string"==typeof t?Ni(t):t}var Bi,Li=/^--/,Di=/\s*!important$/,Mi=function(t,e,n){if(Li.test(e))t.style.setProperty(e,n);else if(Di.test(n))t.style.setProperty(O(e),n.replace(Di,""),"important");else{var i=Fi(e);if(Array.isArray(n))for(var r=0,o=n.length;r-1?e.split(Vi).forEach(function(e){return t.classList.add(e)}):t.classList.add(e);else{var n=" "+(t.getAttribute("class")||"")+" ";n.indexOf(" "+e+" ")<0&&t.setAttribute("class",(n+e).trim())}}function qi(t,e){if(e&&(e=e.trim()))if(t.classList)e.indexOf(" ")>-1?e.split(Vi).forEach(function(e){return t.classList.remove(e)}):t.classList.remove(e),t.classList.length||t.removeAttribute("class");else{for(var n=" "+(t.getAttribute("class")||"")+" ",i=" "+e+" ";n.indexOf(i)>=0;)n=n.replace(i," ");(n=n.trim())?t.setAttribute("class",n):t.removeAttribute("class")}}function Wi(t){if(t){if("object"==typeof t){var e={};return!1!==t.css&&j(e,Yi(t.name||"v")),j(e,t),e}return"string"==typeof t?Yi(t):void 0}}var Yi=k(function(t){return{enterClass:t+"-enter",enterToClass:t+"-enter-to",enterActiveClass:t+"-enter-active",leaveClass:t+"-leave",leaveToClass:t+"-leave-to",leaveActiveClass:t+"-leave-active"}}),Xi=W&&!G,Ki="transition",Qi="animation",Gi="transition",Ji="transitionend",Zi="animation",tr="animationend";Xi&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(Gi="WebkitTransition",Ji="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(Zi="WebkitAnimation",tr="webkitAnimationEnd"));var er=W?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(t){return t()};function nr(t){er(function(){er(t)})}function ir(t,e){var n=t._transitionClasses||(t._transitionClasses=[]);n.indexOf(e)<0&&(n.push(e),Hi(t,e))}function rr(t,e){t._transitionClasses&&b(t._transitionClasses,e),qi(t,e)}function or(t,e,n){var i=sr(t,e),r=i.type,o=i.timeout,a=i.propCount;if(!r)return n();var s=r===Ki?Ji:tr,c=0,l=function(){t.removeEventListener(s,u),n()},u=function(e){e.target===t&&++c>=a&&l()};setTimeout(function(){c0&&(n=Ki,u=a,d=o.length):e===Qi?l>0&&(n=Qi,u=l,d=c.length):d=(n=(u=Math.max(a,l))>0?a>l?Ki:Qi:null)?n===Ki?o.length:c.length:0,{type:n,timeout:u,propCount:d,hasTransform:n===Ki&&ar.test(i[Gi+"Property"])}}function cr(t,e){for(;t.length1}function pr(t,e){!0!==e.data.show&&ur(e)}var vr=function(t){var e,n,i={},c=t.modules,l=t.nodeOps;for(e=0;ep?y(t,r(n[g+1])?null:n[g+1].elm,n,f,g,i):f>g&&k(0,e,h,p)}(h,m,g,n,u):o(g)?(o(t.text)&&l.setTextContent(h,""),y(h,null,g,0,g.length-1,n)):o(m)?k(0,m,0,m.length-1):o(t.text)&&l.setTextContent(h,""):t.text!==e.text&&l.setTextContent(h,e.text),o(p)&&o(f=p.hook)&&o(f=f.postpatch)&&f(t,e)}}}function _(t,e,n){if(a(n)&&o(t.parent))t.parent.data.pendingInsert=e;else for(var i=0;i-1,a.selected!==o&&(a.selected=o);else if(z(xr(a),i))return void(t.selectedIndex!==s&&(t.selectedIndex=s));r||(t.selectedIndex=-1)}}function yr(t,e){return e.every(function(e){return!z(e,t)})}function xr(t){return"_value"in t?t._value:t.value}function kr(t){t.target.composing=!0}function wr(t){t.target.composing&&(t.target.composing=!1,Cr(t.target,"input"))}function Cr(t,e){var n=document.createEvent("HTMLEvents");n.initEvent(e,!0,!0),t.dispatchEvent(n)}function Sr(t){return!t.componentInstance||t.data&&t.data.transition?t:Sr(t.componentInstance._vnode)}var _r={model:mr,show:{bind:function(t,e,n){var i=e.value,r=(n=Sr(n)).data&&n.data.transition,o=t.__vOriginalDisplay="none"===t.style.display?"":t.style.display;i&&r?(n.data.show=!0,ur(n,function(){t.style.display=o})):t.style.display=i?o:"none"},update:function(t,e,n){var i=e.value;!i!=!e.oldValue&&((n=Sr(n)).data&&n.data.transition?(n.data.show=!0,i?ur(n,function(){t.style.display=t.__vOriginalDisplay}):dr(n,function(){t.style.display="none"})):t.style.display=i?t.__vOriginalDisplay:"none")},unbind:function(t,e,n,i,r){r||(t.style.display=t.__vOriginalDisplay)}}},Or={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function $r(t){var e=t&&t.componentOptions;return e&&e.Ctor.options.abstract?$r(We(e.children)):t}function Tr(t){var e={},n=t.$options;for(var i in n.propsData)e[i]=t[i];var r=n._parentListeners;for(var o in r)e[C(o)]=r[o];return e}function jr(t,e){if(/\d-keep-alive$/.test(e.tag))return t("keep-alive",{props:e.componentOptions.propsData})}var Ar=function(t){return t.tag||qe(t)},Er=function(t){return"show"===t.name},Nr={name:"transition",props:Or,abstract:!0,render:function(t){var e=this,n=this.$slots.default;if(n&&(n=n.filter(Ar)).length){0;var i=this.mode;0;var r=n[0];if(function(t){for(;t=t.parent;)if(t.data.transition)return!0}(this.$vnode))return r;var o=$r(r);if(!o)return r;if(this._leaving)return jr(t,r);var a="__transition-"+this._uid+"-";o.key=null==o.key?o.isComment?a+"comment":a+o.tag:s(o.key)?0===String(o.key).indexOf(a)?o.key:a+o.key:o.key;var c=(o.data||(o.data={})).transition=Tr(this),l=this._vnode,u=$r(l);if(o.data.directives&&o.data.directives.some(Er)&&(o.data.show=!0),u&&u.data&&!function(t,e){return e.key===t.key&&e.tag===t.tag}(o,u)&&!qe(u)&&(!u.componentInstance||!u.componentInstance._vnode.isComment)){var d=u.data.transition=j({},c);if("out-in"===i)return this._leaving=!0,se(d,"afterLeave",function(){e._leaving=!1,e.$forceUpdate()}),jr(t,r);if("in-out"===i){if(qe(o))return l;var h,f=function(){h()};se(c,"afterEnter",f),se(c,"enterCancelled",f),se(d,"delayLeave",function(t){h=t})}}return r}}},Ir=j({tag:String,moveClass:String},Or);function zr(t){t.elm._moveCb&&t.elm._moveCb(),t.elm._enterCb&&t.elm._enterCb()}function Br(t){t.data.newPos=t.elm.getBoundingClientRect()}function Lr(t){var e=t.data.pos,n=t.data.newPos,i=e.left-n.left,r=e.top-n.top;if(i||r){t.data.moved=!0;var o=t.elm.style;o.transform=o.WebkitTransform="translate("+i+"px,"+r+"px)",o.transitionDuration="0s"}}delete Ir.mode;var Dr={Transition:Nr,TransitionGroup:{props:Ir,beforeMount:function(){var t=this,e=this._update;this._update=function(n,i){var r=Je(t);t.__patch__(t._vnode,t.kept,!1,!0),t._vnode=t.kept,r(),e.call(t,n,i)}},render:function(t){for(var e=this.tag||this.$vnode.data.tag||"span",n=Object.create(null),i=this.prevChildren=this.children,r=this.$slots.default||[],o=this.children=[],a=Tr(this),s=0;s-1?Gn[t]=e.constructor===window.HTMLUnknownElement||e.constructor===window.HTMLElement:Gn[t]=/HTMLUnknownElement/.test(e.toString())},j(_n.options.directives,_r),j(_n.options.components,Dr),_n.prototype.__patch__=W?vr:E,_n.prototype.$mount=function(t,e){return function(t,e,n){var i;return t.$el=e,t.$options.render||(t.$options.render=gt),en(t,"beforeMount"),i=function(){t._update(t._render(),n)},new pn(t,i,E,{before:function(){t._isMounted&&!t._isDestroyed&&en(t,"beforeUpdate")}},!0),n=!1,null==t.$vnode&&(t._isMounted=!0,en(t,"mounted")),t}(this,t=t&&W?function(t){if("string"==typeof t){var e=document.querySelector(t);return e||document.createElement("div")}return t}(t):void 0,e)},W&&setTimeout(function(){F.devtools&&ot&&ot.emit("init",_n)},0),e.default=_n}.call(this,n(15),n(26).setImmediate)},function(t,e,n){"use strict";n.d(e,"d",function(){return i}),n.d(e,"a",function(){return r}),n.d(e,"c",function(){return o}),n.d(e,"e",function(){return a}),n.d(e,"b",function(){return s});var i="#f44",r="#1989fa",o="#07c160",a="#fff",s="#969799"},function(t,e,n){"use strict";n.d(e,"a",function(){return i}),n.d(e,"b",function(){return r});var i={QUOTA_LIMIT:0,STOCK_LIMIT:1},r="";e.c={LIMIT_TYPE:i,UNSELECTED_SKU_VALUE_ID:r}},function(t,e,n){"use strict";(function(t){n.d(e,"b",function(){return c}),n.d(e,"a",function(){return l});var i=n(0),r=Date.now();var o=i.h?t:window,a=o.requestAnimationFrame||function(t){var e=Date.now(),n=Math.max(0,16-(e-r)),i=setTimeout(t,n);return r=e+n,i},s=o.cancelAnimationFrame||o.clearTimeout;function c(t){return a.call(o,t)}function l(t){s.call(o,t)}}).call(this,n(15))},function(t,e,n){"use strict";function i(t,e,n,i,r,o,a,s){var c,l="function"==typeof t?t.options:t;if(e&&(l.render=e,l.staticRenderFns=n,l._compiled=!0),i&&(l.functional=!0),o&&(l._scopeId="data-v-"+o),a?(c=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),r&&r.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(a)},l._ssrRegister=c):r&&(c=s?function(){r.call(this,this.$root.$options.shadowRoot)}:r),c)if(l.functional){l._injectStyles=c;var u=l.render;l.render=function(t,e){return c.call(e),u(t,e)}}else{var d=l.beforeCreate;l.beforeCreate=d?[].concat(d,c):[c]}return{exports:t,options:l}}n.d(e,"a",function(){return i})},function(t,e,n){"use strict";var i=n(3),r=n(19),o=n(20),a=i.default.prototype,s=i.default.util.defineReactive;s(a,"$vantLang","zh-CN"),s(a,"$vantMessages",{"zh-CN":o.a}),e.a={messages:function(){return a.$vantMessages[a.$vantLang]},use:function(t,e){var n;a.$vantLang=t,this.add(((n={})[t]=e,n))},add:function(t){void 0===t&&(t={}),Object(r.a)(a.$vantMessages,t)}}},function(t,e,n){t.exports=function(t){var e={};function n(i){if(e[i])return e[i].exports;var r=e[i]={i:i,l:!1,exports:{}};return t[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=t,n.c=e,n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:i})},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="dist/",n(n.s=3)}([function(t,e){t.exports=function(t){var e=[];return e.toString=function(){return this.map(function(e){var n=function(t,e){var n=t[1]||"",i=t[3];if(!i)return n;if(e&&"function"==typeof btoa){var r=(a=i,"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(a))))+" */"),o=i.sources.map(function(t){return"/*# sourceURL="+i.sourceRoot+t+" */"});return[n].concat(o).concat([r]).join("\n")}var a;return[n].join("\n")}(e,t);return e[2]?"@media "+e[2]+"{"+n+"}":n}).join("")},e.i=function(t,n){"string"==typeof t&&(t=[[null,t,""]]);for(var i={},r=0;rn.parts.length&&(i.parts.length=n.parts.length)}else{var a=[];for(r=0;r"+t.slice(1).join(" ")+""}}},u={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.item.path?n("router-link",{attrs:{"active-class":"active",to:t.base+t.item.path},domProps:{innerHTML:t._s(t.itemName)}}):t.item.link?n("a",{attrs:{href:t.item.link},domProps:{innerHTML:t._s(t.itemName)}}):n("a",{domProps:{innerHTML:t._s(t.itemName)}})},staticRenderFns:[]},d=n(1)(l,u,!1,null,null,null).exports,h={name:"van-doc-nav",components:(s={},s[d.name]=d,s),props:{navConfig:Array,base:{type:String,default:""}},data:function(){return{top:60,bottom:0}},computed:{style:function(){return{top:this.top+"px",bottom:this.bottom+"px"}}},created:function(){window.addEventListener("scroll",this.onScroll),this.onScroll()},methods:{onScroll:function(){var t=window.pageYOffset;this.top=Math.max(0,60-t)}}},f={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"van-doc-nav",style:t.style},t._l(t.navConfig,function(e,i){return n("div",{key:i,staticClass:"van-doc-nav__item"},[n("van-doc-nav-link",{attrs:{item:e,base:t.base}}),t._v(" "),e.children?n("div",t._l(e.children,function(e,i){return n("div",{key:i,staticClass:"nav-item"},[n("van-doc-nav-link",{attrs:{item:e,base:t.base}})],1)})):t._e(),t._v(" "),t._l(e.groups,function(i,r){return e.groups?n("div",{key:r},[n("div",{staticClass:"van-doc-nav__group-title"},[t._v(t._s(i.groupName))]),t._v(" "),n("div",t._l(i.list,function(e,i){return e.disabled?t._e():n("div",{key:i,staticClass:"van-doc-nav__subitem"},[n("van-doc-nav-link",{attrs:{item:e,base:t.base}})],1)}))]):t._e()})],2)}))},staticRenderFns:[]};var p=n(1)(h,f,!1,function(t){n(8)},null,null).exports,v={render:function(){var t=this.$createElement;return(this._self._c||t)("div",{staticClass:"van-doc-block"},[this._t("default")],2)},staticRenderFns:[]};var m=n(1)({name:"van-doc-block"},v,!1,function(t){n(10)},null,null).exports,g={name:"van-doc-header",props:{config:Object,active:String},methods:{onSwitchLang:function(t){this.$router.push(this.$route.path.replace(t.from,t.to))}}},b={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"van-doc-header"},[n("div",{staticClass:"van-doc-row"},[n("div",{staticClass:"van-doc-header__top"},[n("a",{staticClass:"van-doc-header__logo",attrs:{href:t.config.logo.href}},[n("img",{attrs:{src:t.config.logo.image}}),t._v(" "),n("span",[t._v(t._s(t.config.logo.title))]),t._v(" "),t.config.logo.version?n("span",{staticClass:"van-doc-header__version"},[t._v("v"+t._s(t.config.logo.version))]):t._e()]),t._v(" "),n("ul",{staticClass:"van-doc-header__top-nav"},t._l(t.config.nav,function(e,i){return n("li",{staticClass:"van-doc-header__top-nav-item",class:{active:i===t.active}},[n("a",{staticClass:"van-doc-header__top-nav-title",class:{active:i===t.active,link:"string"==typeof e&&"github"!==i},attrs:{href:"string"==typeof e?e:"javascript:;",target:"github"===i?"_blank":""}},["github"===i?n("svg",{staticClass:"octicon octicon-mark-github",attrs:{height:"28",width:"28",viewBox:"0 0 16 16",version:"1.1","aria-hidden":"true"}},[n("path",{attrs:{"fill-rule":"evenodd",d:"M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z"}})]):"lang"===i?n("span",{staticClass:"van-doc-header__top-nav-lang",on:{click:function(n){t.onSwitchLang(e)}}},[t._v(t._s(e.text))]):n("span",[t._v(t._s(i))])])])}))])])])},staticRenderFns:[]};var y=n(1)(g,b,!1,function(t){n(12)},null,null).exports,x={name:"van-doc-footer",props:{config:Object}},k={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"van-doc-footer"},[n("ul",t._l(t.config.nav,function(e,i){return n("li",{key:i,staticClass:"van-doc-footer__item"},[n("a",{attrs:{href:e,target:"_blank"}},[t._v(t._s(i))])])})),t._v(" "),t.config.github?n("a",{staticClass:"github-corner",attrs:{href:t.config.github,target:"_blank","aria-label":"View source on Github"}},[n("svg",{attrs:{width:"100",height:"100",viewBox:"0 0 250 250","aria-hidden":"true"}},[n("path",{staticClass:"octo-arm",staticStyle:{"transform-origin":"130px 106px"},attrs:{d:"M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2",fill:"currentColor"}}),t._v(" "),n("path",{staticClass:"octo-body",attrs:{d:"M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z",fill:"currentColor"}})])]):t._e()])},staticRenderFns:[]};var w=n(1)(x,k,!1,function(t){n(14)},null,null).exports,C={render:function(){var t=this.$createElement;return(this._self._c||t)("div",{class:["van-doc-content","van-doc-content--"+this.currentPage]},[this._t("default")],2)},staticRenderFns:[]};var S=n(1)({name:"van-doc-content",computed:{currentPage:function(){var t=this.$route.path;return t?t.split("/").slice(-1)[0]:this.$route.name}}},C,!1,function(t){n(16)},null,null).exports,_={name:"van-doc-container",props:{hasSimulator:Boolean}},O={render:function(){var t=this.$createElement;return(this._self._c||t)("div",{staticClass:"van-doc-container van-doc-row",class:{"van-doc-container--with-simulator":this.hasSimulator}},[this._t("default")],2)},staticRenderFns:[]};var $=n(1)(_,O,!1,function(t){n(18)},null,null).exports,T={name:"van-doc-simulator",props:{src:String},data:function(){return{scrollTop:window.scrollY,windowHeight:window.innerHeight}},mounted:function(){var t=this;window.addEventListener("scroll",function(){t.scrollTop=window.scrollY}),window.addEventListener("resize",function(){t.windowHeight=window.innerHeight})},computed:{isFixed:function(){return this.scrollTop>60},simulatorStyle:function(){return{height:Math.min(640,this.windowHeight-90)+"px"}}}},j={render:function(){var t=this.$createElement,e=this._self._c||t;return e("div",{class:["van-doc-simulator",{"van-doc-simulator-fixed":this.isFixed}]},[e("iframe",{ref:"iframe",style:this.simulatorStyle,attrs:{src:this.src,frameborder:"0"}})])},staticRenderFns:[]};var A=n(1)(T,j,!1,function(t){n(20)},null,null).exports,E={name:"van-doc-demo-block",props:{title:String}},N={render:function(){var t=this.$createElement,e=this._self._c||t;return e("section",{staticClass:"van-doc-demo-block"},[e("h2",{staticClass:"van-doc-demo-block__title"},[this._v(this._s(this.title))]),this._v(" "),this._t("default")],2)},staticRenderFns:[]};var I=n(1)(E,N,!1,function(t){n(22)},null,null).exports,z={name:"van-doc-demo-section",props:{name:String,title:String,background:String},computed:{demoName:function(){return this.name||this.getParentName()},style:function(){return{background:this.background}}},methods:{getParentName:function(){var t=this.$parent;if(t&&t.$options.name)return t.$options.name.replace("demo-","")}}},B={render:function(){var t=this.$createElement;return(this._self._c||t)("section",{staticClass:"van-doc-demo-section",class:"demo-"+this.demoName,style:this.style},[this._t("default")],2)},staticRenderFns:[]};var L=n(1)(z,B,!1,function(t){n(24)},null,null).exports,D=n(26),M=n.n(D);n(27);e.default=function(){P.map(function(t){r.a.component(t.name,t)})},n.d(e,"Nav",function(){return p}),n.d(e,"Header",function(){return y}),n.d(e,"Footer",function(){return w}),n.d(e,"VanDoc",function(){return c}),n.d(e,"Block",function(){return m}),n.d(e,"Content",function(){return S}),n.d(e,"Container",function(){return $}),n.d(e,"Simulator",function(){return A}),n.d(e,"DemoBlock",function(){return I}),n.d(e,"DemoSection",function(){return L}),n.d(e,"progress",function(){return M.a});var P=[p,y,w,c,m,S,$,A,I,L]},function(t,e){t.exports=n(3)},function(t,e,n){var i=n(6);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals);n(2)("4ea92526",i,!0)},function(t,e,n){(t.exports=n(0)(void 0)).push([t.i,'body{color:#333;font-size:16px;min-width:1100px;overflow-x:auto;background-color:#fff;-webkit-font-smoothing:antialiased;font-family:PingFang SC,Helvetica Neue,Arial,sans-serif}body,p{margin:0}h1,h2,h3,h4,h5,h6{margin:0;font-size:inherit}ol,ul{margin:0;padding:0;list-style:none}a{text-decoration:none}.van-doc-row{width:100%}@media (min-width:1440px){.van-doc-row{width:1440px;margin:0 auto}}code{display:block;font-size:13px;overflow-x:auto;font-weight:400;line-height:22px;border-radius:3px;margin-bottom:25px;position:relative;word-break:break-all;white-space:pre-wrap;color:#455a64;padding:18px 10px 18px 20px;background-color:#f1f4f8;font-family:Source Code Pro,Monaco,Inconsolata,monospace}code:after{top:5px;right:10px;position:absolute;color:#ccc;font-size:12px}pre{margin:0}pre+pre{margin-top:-10px}code.language-html:after{content:"HTML"}code.language-javascript:after{content:"JS"}code.language-css:after{content:"CSS"}.hljs{display:block;overflow-x:auto;padding:.5em;background:#fff}.hljs-subst{color:#455a64}.hljs-addition,.hljs-meta,.hljs-string,.hljs-symbol,.hljs-template-tag,.hljs-template-variable{color:#5758bb}.hljs-comment,.hljs-quote{color:#999}.hljs-bullet,.hljs-link,.hljs-literal,.hljs-number,.hljs-regexp{color:#32a973}.hljs-deletion,.hljs-variable{color:#88f}.hljs-built_in,.hljs-doctag,.hljs-keyword,.hljs-name,.hljs-section,.hljs-selector-class,.hljs-selector-id,.hljs-selector-tag,.hljs-strong,.hljs-tag,.hljs-title,.hljs-type{color:#0079f3}.hljs-emphasis{font-style:italic}.hljs-attribute{color:#e6550d}',""])},function(t,e){t.exports=function(t,e){for(var n=[],i={},r=0;ra{font-weight:700}.van-doc-nav__subitem a{font-size:14px}.van-doc-nav__subitem a:hover{color:#0079f3}.van-doc-nav__subitem span{opacity:.6;font-size:13px}.van-doc-nav__group-title{font-size:12px;line-height:40px;padding-left:40px;color:rgba(69,90,100,.6)}@media (max-width:1300px){.van-doc-nav{min-width:220px;max-width:220px}.van-doc-nav__item a,.van-doc-nav__subitem a{line-height:22px}.van-doc-nav__subitem a{font-size:13px}}",""])},function(t,e,n){var i=n(11);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals);n(2)("2cefc454",i,!0)},function(t,e,n){(t.exports=n(0)(void 0)).push([t.i,".van-doc-block{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:20px}.van-doc-block .highlight{-webkit-box-flex:1;-ms-flex:1;flex:1;-webkit-box-sizing:border-box;box-sizing:border-box}.van-doc-block .highlight pre{word-break:break-all}",""])},function(t,e,n){var i=n(13);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals);n(2)("25593cb0",i,!0)},function(t,e,n){(t.exports=n(0)(void 0)).push([t.i,'.van-doc-header{width:100%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border-bottom:1px solid #f1f4f8}.van-doc-header__top{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:#fff;padding:0 40px;height:60px;line-height:60px}.van-doc-header__top-nav{-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:right}.van-doc-header__top-nav>li{display:inline-block;position:relative;vertical-align:middle}.van-doc-header__top-nav-lang{padding:0 7px;font-size:14px;line-height:24px;display:block;border-radius:3px;text-align:center;color:#455a64;border:1px solid currentColor;font-family:Helvetica Neue,Arial,sans-serif;-webkit-transition:.3s ease-in-out;transition:.3s ease-in-out}.van-doc-header__top-nav-lang:hover{color:#0079f3}.van-doc-header__top-nav-item{margin:0 15px}.van-doc-header__top-nav-title{display:block;font-size:15px}.van-doc-header__top-nav-title svg{fill:#455a64;display:block;vertical-align:middle;-webkit-transition:.3s ease-in-out;transition:.3s ease-in-out}.van-doc-header__top-nav-title svg:hover{fill:#0079f3}.van-doc-header__top-nav-title.link{color:#34495e;border-bottom:1px solid transparent;-webkit-transition:.3s ease-in-out;transition:.3s ease-in-out}.van-doc-header__top-nav-title.link.active,.van-doc-header__top-nav-title.link:hover{color:#0079f3;border-bottom-color:#19b5fe}.van-doc-header__top-nav .van-doc-header__arrow:hover{color:#34495e}.van-doc-header__top-nav .van-doc-header__arrow:after{content:"";display:inline-block;vertical-align:middle;margin-top:-1px;margin-left:1px;margin-right:-4px;width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid #ccc;pointer-events:none}.van-doc-header__logo{display:block}.van-doc-header__logo img,.van-doc-header__logo span{display:inline-block;vertical-align:middle}.van-doc-header__logo img{width:24px;margin-right:5px}.van-doc-header__logo span{font-size:22px;color:#333;font-family:Dosis,Source Sans Pro,Helvetica Neue,Arial,sans-serif}.van-doc-header__logo .van-doc-header__version{font-size:90%;padding-top:7px;opacity:.7;margin-left:3px;line-height:1}.van-doc-header__bottom{height:50px;line-height:50px}.van-doc-header__bottom-nav{text-align:center}.van-doc-header__bottom-nav li{display:inline-block}.van-doc-header__bottom-nav a{color:#fff;opacity:.8;display:block;padding:0 20px;font-size:14px}.van-doc-header__bottom-nav a.active{background-color:hsla(0,0%,100%,.1)}.van-doc-header__bottom-nav a.active,.van-doc-header__bottom-nav a:hover{opacity:1}',""])},function(t,e,n){var i=n(15);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals);n(2)("71d7b96b",i,!0)},function(t,e,n){(t.exports=n(0)(void 0)).push([t.i,".van-doc-footer{position:relative;background-color:#061a2a}.van-doc-footer ul{text-align:center}.van-doc-footer__item{margin-right:45px;display:inline-block}.van-doc-footer__item a{color:#b3b3b3;display:block;font-size:13px;line-height:72px;-webkit-transition:color .3s ease-in-out;transition:color .3s ease-in-out}.van-doc-footer__item a:hover{color:#fff}.github-corner{position:absolute;top:-50px;right:61px;height:50px;width:40px;overflow:hidden}.github-corner svg{fill:transparent;color:#fff;position:absolute;border:0;right:-29px;opacity:.9;-webkit-transition:.3s;transition:.3s;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.github-corner svg:hover{opacity:1;-webkit-transform:rotate(-45deg) scale(1.15)!important;transform:rotate(-45deg) scale(1.15)!important}.github-corner .octo-arm{-webkit-animation:octocat-wave 3s ease-in-out infinite;animation:octocat-wave 3s ease-in-out infinite}@-webkit-keyframes octocat-wave{0%,to{-webkit-transform:rotate(0);transform:rotate(0)}20%,60%{-webkit-transform:rotate(-25deg);transform:rotate(-25deg)}40%,80%{-webkit-transform:rotate(10deg);transform:rotate(10deg)}}@keyframes octocat-wave{0%,to{-webkit-transform:rotate(0);transform:rotate(0)}20%,60%{-webkit-transform:rotate(-25deg);transform:rotate(-25deg)}40%,80%{-webkit-transform:rotate(10deg);transform:rotate(10deg)}}",""])},function(t,e,n){var i=n(17);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals);n(2)("279782d6",i,!0)},function(t,e,n){(t.exports=n(0)(void 0)).push([t.i,'.van-doc-content{-webkit-box-flex:1;-ms-flex:1;flex:1;position:relative;padding:0 0 75px}.van-doc-content a{color:#0079f3}.van-doc-content section{padding:13px 40px;overflow:hidden}.van-doc-content section>h1,.van-doc-content section>h2,.van-doc-content section>h3,.van-doc-content section>h4,.van-doc-content section>h5,.van-doc-content section>h6{line-height:1.5;font-weight:400;margin:20px 0 10px;color:#333}.van-doc-content section>h1{font-size:36px}.van-doc-content section>h2{font-size:30px;margin-bottom:25px}.van-doc-content section>h3{font-size:22px;margin-top:45px}.van-doc-content section>h2+h3{margin-top:25px}.van-doc-content section>h4{font-size:16px;margin-bottom:15px}.van-doc-content section>h5{font-size:14px}.van-doc-content section>h6{font-size:14px;color:#666}.van-doc-content section>p{margin:15px 0;font-size:14px;line-height:26px;color:#34495e}.van-doc-content section>ol li,.van-doc-content section>ul li{color:#34495e;font-size:14px;line-height:22px;margin:5px 0 5px 10px;padding-left:15px;position:relative}.van-doc-content section>ol li:before,.van-doc-content section>ul li:before{content:"";position:absolute;top:0;left:0;width:6px;height:6px;margin-top:8px;border-radius:50%;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid #666}.van-doc-content section>ol li li,.van-doc-content section>ul li li{margin-left:0}.van-doc-content section>hr{border:0 none;border-top:1px solid #eee}.van-doc-content section li>code,.van-doc-content section p>code,.van-doc-content section table code{margin:2px;padding:2px 7px;display:inline}.van-doc-content blockquote{padding:16px;margin:20px 0;font-size:14px;border-radius:4px;background-color:#ecf9ff;color:rgba(52,73,94,.8);border-left:5px solid #50bfff}.van-doc-content table{width:100%;font-size:13px;line-height:1.5;margin-bottom:45px;background-color:#fff;border-collapse:collapse;color:#34495e}.van-doc-content table th{padding:8px 10px;text-align:left;font-weight:400;background-color:#f1f4f8}.van-doc-content table th:first-child{padding-left:10px}.van-doc-content table td{padding:8px;border-bottom:1px solid #f1f4f8}.van-doc-content table code{font-size:13px;padding:0 8px;font-family:inherit;word-break:keep-all}.van-doc-content--changelog strong{font-size:16px;font-weight:500}.van-doc-content--changelog section{padding-bottom:30px}.van-doc-content--changelog section>h2{margin-top:50px;margin-bottom:10px}.van-doc-content--changelog section>h2+p,.van-doc-content--changelog section>h2+p code{margin:0}.van-doc-content--changelog section>h2 a{color:inherit;font-size:24px;-webkit-font-smoothing:auto}.van-doc-content--changelog section>h2:first-child,.van-doc-content--changelog section>h2:nth-child(2){margin-top:20px}',""])},function(t,e,n){var i=n(19);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals);n(2)("62581546",i,!0)},function(t,e,n){(t.exports=n(0)(void 0)).push([t.i,".van-doc-container{overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;background-color:#fff;padding-left:240px}.van-doc-container--with-simulator{padding-right:400px}@media (max-width:1300px){.van-doc-container--with-simulator{padding-right:360px}}",""])},function(t,e,n){var i=n(21);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals);n(2)("f4085a02",i,!0)},function(t,e,n){(t.exports=n(0)(void 0)).push([t.i,".van-doc-simulator{z-index:1;overflow:hidden;position:absolute;border-radius:6px;background:#fafafa;-webkit-box-sizing:border-box;box-sizing:border-box;right:40px;width:360px;min-width:360px;top:100px;-webkit-box-shadow:#ebedf0 0 4px 12px;box-shadow:0 4px 12px #ebedf0}@media (max-width:1300px){.van-doc-simulator{width:320px;min-width:320px}}@media (max-width:1100px){.van-doc-simulator{left:750px;right:auto}}@media (min-width:1440px){.van-doc-simulator{right:50%;margin-right:-680px}}.van-doc-simulator-fixed{position:fixed;top:40px}.van-doc-simulator iframe{width:100%;display:block}",""])},function(t,e,n){var i=n(23);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals);n(2)("4f1c5121",i,!0)},function(t,e,n){(t.exports=n(0)(void 0)).push([t.i,".van-doc-demo-block__title{margin:0;font-weight:400;font-size:14px;color:rgba(69,90,100,.6);padding:35px 15px 15px}.van-doc-demo-block:first-of-type .van-doc-demo-block__title{padding-top:20px}",""])},function(t,e,n){var i=n(25);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals);n(2)("9caa41b0",i,!0)},function(t,e,n){(t.exports=n(0)(void 0)).push([t.i,".van-doc-demo-section{min-height:100vh;padding-bottom:20px;-webkit-box-sizing:border-box;box-sizing:border-box}.van-doc-demo-section__title{margin:0;padding:15px;font-size:16px;line-height:1.5;font-weight:400;text-transform:capitalize}.van-doc-demo-section__title+.van-doc-demo-block .van-doc-demo-block__title{padding-top:0}",""])},function(t,e,n){var i,r;"function"==typeof Symbol&&Symbol.iterator;void 0===(r="function"==typeof(i=function(){var t,e,n={version:"0.2.0"},i=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'
'};function r(t,e,n){return tn?n:t}function o(t){return 100*(-1+t)}n.configure=function(t){var e,n;for(e in t)void 0!==(n=t[e])&&t.hasOwnProperty(e)&&(i[e]=n);return this},n.status=null,n.set=function(t){var e=n.isStarted();t=r(t,i.minimum,1),n.status=1===t?null:t;var c=n.render(!e),l=c.querySelector(i.barSelector),u=i.speed,d=i.easing;return c.offsetWidth,a(function(e){""===i.positionUsing&&(i.positionUsing=n.getPositioningCSS()),s(l,function(t,e,n){var r;return(r="translate3d"===i.positionUsing?{transform:"translate3d("+o(t)+"%,0,0)"}:"translate"===i.positionUsing?{transform:"translate("+o(t)+"%,0)"}:{"margin-left":o(t)+"%"}).transition="all "+e+"ms "+n,r}(t,u,d)),1===t?(s(c,{transition:"none",opacity:1}),c.offsetWidth,setTimeout(function(){s(c,{transition:"all "+u+"ms linear",opacity:0}),setTimeout(function(){n.remove(),e()},u)},u)):setTimeout(e,u)}),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){return n.status||n.set(0),i.trickle&&function t(){setTimeout(function(){n.status&&(n.trickle(),t())},i.trickleSpeed)}(),this},n.done=function(t){return t||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(t){var e=n.status;return e?("number"!=typeof t&&(t=(1-e)*r(Math.random()*e,.1,.95)),e=r(e+t,0,.994),n.set(e)):n.start()},n.trickle=function(){return n.inc(Math.random()*i.trickleRate)},t=0,e=0,n.promise=function(i){return i&&"resolved"!==i.state()?(0===e&&n.start(),t++,e++,i.always(function(){0==--e?(t=0,n.done()):n.set((t-e)/t)}),this):this},n.render=function(t){if(n.isRendered())return document.getElementById("nprogress");l(document.documentElement,"nprogress-busy");var e=document.createElement("div");e.id="nprogress",e.innerHTML=i.template;var r,a=e.querySelector(i.barSelector),c=t?"-100":o(n.status||0),u=document.querySelector(i.parent);return s(a,{transition:"all 0 linear",transform:"translate3d("+c+"%,0,0)"}),i.showSpinner||(r=e.querySelector(i.spinnerSelector))&&h(r),u!=document.body&&l(u,"nprogress-custom-parent"),u.appendChild(e),e},n.remove=function(){u(document.documentElement,"nprogress-busy"),u(document.querySelector(i.parent),"nprogress-custom-parent");var t=document.getElementById("nprogress");t&&h(t)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var t=document.body.style,e="WebkitTransform"in t?"Webkit":"MozTransform"in t?"Moz":"msTransform"in t?"ms":"OTransform"in t?"O":"";return e+"Perspective"in t?"translate3d":e+"Transform"in t?"translate":"margin"};var a=function(){var t=[];function e(){var n=t.shift();n&&n(e)}return function(n){t.push(n),1==t.length&&e()}}(),s=function(){var t=["Webkit","O","Moz","ms"],e={};function n(n){return n=n.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,function(t,e){return e.toUpperCase()}),e[n]||(e[n]=function(e){var n=document.body.style;if(e in n)return e;for(var i,r=t.length,o=e.charAt(0).toUpperCase()+e.slice(1);r--;)if((i=t[r]+o)in n)return i;return e}(n))}function i(t,e,i){e=n(e),t.style[e]=i}return function(t,e){var n,r,o=arguments;if(2==o.length)for(n in e)void 0!==(r=e[n])&&e.hasOwnProperty(n)&&i(t,n,r);else i(t,o[1],o[2])}}();function c(t,e){var n="string"==typeof t?t:d(t);return n.indexOf(" "+e+" ")>=0}function l(t,e){var n=d(t),i=n+e;c(n,e)||(t.className=i.substring(1))}function u(t,e){var n,i=d(t);c(t,e)&&(n=i.replace(" "+e+" "," "),t.className=n.substring(1,n.length-1))}function d(t){return(" "+(t.className||"")+" ").replace(/\s+/gi," ")}function h(t){t&&t.parentNode&&t.parentNode.removeChild(t)}return n})?i.call(e,n,e,t):i)||(t.exports=r)},function(t,e,n){var i=n(28);"string"==typeof i&&(i=[[t.i,i,""]]);var r={hmr:!0,transform:void 0,insertInto:void 0};n(29)(i,r);i.locals&&(t.exports=i.locals)},function(t,e,n){(t.exports=n(0)(void 0)).push([t.i,"/* Make clicks pass-through */\n#nprogress {\n pointer-events: none;\n}\n#nprogress .bar {\n background: rgba(52, 152, 219, .7);\n\n position: fixed;\n z-index: 1031;\n top: 0;\n left: 0;\n\n width: 100%;\n height: 2px;\n}\n/* Fancy blur effect */\n#nprogress .peg {\n display: block;\n position: absolute;\n right: 0px;\n width: 100px;\n height: 100%;\n -webkit-box-shadow: 0 0 5px rgba(52, 152, 219, .7), 0 0 2px rgba(52, 152, 219, .7);\n box-shadow: 0 0 5px rgba(52, 152, 219, .7), 0 0 2px rgba(52, 152, 219, .7);\n opacity: 1.0;\n\n -webkit-transform: rotate(3deg) translate(0px, -4px);\n transform: rotate(3deg) translate(0px, -4px);\n}\n/* Remove these to get rid of the spinner */\n#nprogress .spinner {\n display: block;\n position: fixed;\n z-index: 1031;\n top: 15px;\n right: 15px;\n}\n#nprogress .spinner-icon {\n display: none;\n width: 12px;\n height: 12px;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n\n border: solid 2px transparent;\n border-top-color: rgba(52, 152, 219, .7);\n border-left-color: rgba(52, 152, 219, .7);\n border-radius: 50%;\n\n -webkit-animation: nprogress-spinner 400ms linear infinite;\n animation: nprogress-spinner 400ms linear infinite;\n}\n.nprogress-custom-parent {\n overflow: hidden;\n position: relative;\n}\n.nprogress-custom-parent #nprogress .spinner, .nprogress-custom-parent #nprogress .bar {\n position: absolute;\n}\n@-webkit-keyframes nprogress-spinner {\n 0% { -webkit-transform: rotate(0deg); }\n 100% { -webkit-transform: rotate(360deg); }\n}\n@keyframes nprogress-spinner {\n 0% { -webkit-transform: rotate(0deg); transform: rotate(0deg); }\n 100% { -webkit-transform: rotate(360deg); transform: rotate(360deg); }\n}\n\n",""])},function(t,e,n){var i,r,o={},a=(i=function(){return window&&document&&document.all&&!window.atob},function(){return void 0===r&&(r=i.apply(this,arguments)),r}),s=function(t){var e={};return function(t,n){if("function"==typeof t)return t();if(void 0===e[t]){var i=function(t,e){return e?e.querySelector(t):document.querySelector(t)}.call(this,t,n);if(window.HTMLIFrameElement&&i instanceof window.HTMLIFrameElement)try{i=i.contentDocument.head}catch(t){i=null}e[t]=i}return e[t]}}(),c=null,l=0,u=[],d=n(30);function h(t,e){for(var n=0;n=0&&u.splice(e,1)}function m(t){var e=document.createElement("style");if(void 0===t.attrs.type&&(t.attrs.type="text/css"),void 0===t.attrs.nonce){const e=function(){0;return n.nc}();e&&(t.attrs.nonce=e)}return g(e,t.attrs),p(t,e),e}function g(t,e){Object.keys(e).forEach(function(n){t.setAttribute(n,e[n])})}function b(t,e){var n,i,r,o;if(e.transform&&t.css){if(!(o=e.transform(t.css)))return function(){};t.css=o}if(e.singleton){var a=l++;n=c||(c=m(e)),i=k.bind(null,n,a,!1),r=k.bind(null,n,a,!0)}else t.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(n=function(t){var e=document.createElement("link");return void 0===t.attrs.type&&(t.attrs.type="text/css"),t.attrs.rel="stylesheet",g(e,t.attrs),p(t,e),e}(e),i=function(t,e,n){var i=n.css,r=n.sourceMap,o=void 0===e.convertToAbsoluteUrls&&r;(e.convertToAbsoluteUrls||o)&&(i=d(i));r&&(i+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(r))))+" */");var a=new Blob([i],{type:"text/css"}),s=t.href;t.href=URL.createObjectURL(a),s&&URL.revokeObjectURL(s)}.bind(null,n,e),r=function(){v(n),n.href&&URL.revokeObjectURL(n.href)}):(n=m(e),i=function(t,e){var n=e.css,i=e.media;i&&t.setAttribute("media",i);if(t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}.bind(null,n),r=function(){v(n)});return i(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;i(t=e)}else r()}}t.exports=function(t,e){if("undefined"!=typeof DEBUG&&DEBUG&&"object"!=typeof document)throw new Error("The style-loader cannot be used in a non-browser environment");(e=e||{}).attrs="object"==typeof e.attrs?e.attrs:{},e.singleton||"boolean"==typeof e.singleton||(e.singleton=a()),e.insertInto||(e.insertInto="head"),e.insertAt||(e.insertAt="bottom");var n=f(t,e);return h(n,e),function(t){for(var i=[],r=0;r2?n-2:0),r=2;rn&&e>p?"horizontal":n>e&&n>p?"vertical":"")},resetTouchStatus:function(){this.direction="",this.deltaX=0,this.deltaY=0,this.offsetX=0,this.offsetY=0}}},m=!1;if(!a.h)try{var g={};Object.defineProperty(g,"passive",{get:function(){m=!0}}),window.addEventListener("test-passive",null,g)}catch(t){}function b(t,e,n,i){void 0===i&&(i=!1),a.h||t.addEventListener(e,n,!!m&&{capture:!1,passive:i})}function y(t,e,n){a.h||t.removeEventListener(e,n)}function x(t){t.stopPropagation()}function k(t,e){("boolean"!=typeof t.cancelable||t.cancelable)&&t.preventDefault(),e&&x(t)}var w=Object(a.k)("overlay"),C=w[0],S=w[1];function _(t,e,n,r){var a=Object(i.a)({zIndex:e.zIndex},e.customStyle);return t("transition",{attrs:{name:"van-fade"}},[t("div",o()([{directives:[{name:"show",value:e.visible}],style:a,class:[S(),e.className],on:{touchmove:function(t){k(t,!0)}}},u(r,!0)]))])}_.props={zIndex:Number,className:null,visible:Boolean,customStyle:Object};var O,$=C(_),T={className:"",customStyle:{}};function j(){if(f.top){var t=f.top.vm;t.$emit("click-overlay"),t.closeOnClickOverlay&&(t.onClickOverlay?t.onClickOverlay():t.close())}}function A(){if(O||(O=h($,{on:{click:j}})),f.top){var t=f.top,e=t.vm,n=t.config,r=e.$el,o=r&&r.parentNode?r.parentNode:document.body;o&&o.appendChild(O.$el),Object(i.a)(O,T,n,{visible:!0})}else O.visible=!1}function E(t){var e=f.stack;e.length&&(f.top.vm===t?(e.pop(),A()):f.stack=e.filter(function(e){return e.vm!==t}))}function N(t,e){void 0===e&&(e=window);for(var n=t;n&&"HTML"!==n.tagName&&"BODY"!==n.tagName&&1===n.nodeType&&n!==e;){var i=window.getComputedStyle(n).overflowY;if("scroll"===i||"auto"===i)return n;n=n.parentNode}return e}function I(t){return"scrollTop"in t?t.scrollTop:t.pageYOffset}function z(t){return(t===window?0:t.getBoundingClientRect().top)+I(window)}function B(t){return t===window?t.innerHeight:t.getBoundingClientRect().height}var L={mixins:[v],props:{value:Boolean,overlay:Boolean,overlayStyle:Object,overlayClass:String,closeOnClickOverlay:Boolean,zIndex:[String,Number],getContainer:[String,Function],lockScroll:{type:Boolean,default:!0},lazyRender:{type:Boolean,default:!0}},data:function(){return{inited:this.value}},computed:{shouldRender:function(){return this.inited||!this.lazyRender}},watch:{value:function(t){var e=t?"open":"close";this.inited=this.inited||this.value,this[e](),this.$emit(e)},getContainer:function(){this.move()},overlay:function(){this.renderOverlay()}},mounted:function(){this.getContainer&&this.move(),this.value&&this.open()},activated:function(){this.value&&this.open()},beforeDestroy:function(){this.close(),this.getContainer&&this.$parent&&this.$parent.$el&&this.$parent.$el.appendChild(this.$el)},deactivated:function(){this.close()},methods:{open:function(){this.$isServer||this.opened||(void 0!==this.zIndex&&(f.zIndex=this.zIndex),this.opened=!0,this.renderOverlay(),this.lockScroll&&(b(document,"touchstart",this.touchStart),b(document,"touchmove",this.onTouchMove),f.lockCount||document.body.classList.add("van-overflow-hidden"),f.lockCount++))},close:function(){this.opened&&(this.lockScroll&&(f.lockCount--,y(document,"touchstart",this.touchStart),y(document,"touchmove",this.onTouchMove),f.lockCount||document.body.classList.remove("van-overflow-hidden")),this.opened=!1,E(this),this.$emit("input",!1))},move:function(){var t,e=this.getContainer;e?t="string"==typeof e?document.querySelector(e):e():this.$parent&&(t=this.$parent.$el),t&&t!==this.$el.parentNode&&t.appendChild(this.$el),this.overlay&&A()},onTouchMove:function(t){this.touchMove(t);var e=this.deltaY>0?"10":"01",n=N(t.target,this.$el),i=n.scrollHeight,r=n.offsetHeight,o=n.scrollTop,a="11";0===o?a=r>=i?"00":"01":o+r>=i&&(a="10"),"11"===a||"vertical"!==this.direction||parseInt(a,2)&parseInt(e,2)||k(t,!0)},renderOverlay:function(){var t,e;!this.$isServer&&this.value&&(this.overlay?(t=this,e={zIndex:f.zIndex++,className:this.overlayClass,customStyle:this.overlayStyle},f.stack.some(function(e){return e.vm===t})||(f.stack.push({vm:t,config:e}),A())):E(this),this.updateZIndex())},updateZIndex:function(){var t=this;this.$nextTick(function(){t.$el.style.zIndex=f.zIndex++})}}},D=Object(a.k)("info"),M=D[0],P=D[1];function F(t,e,n,i){if(Object(a.d)(e.info)&&""!==e.info)return t("div",o()([{class:P()},u(i,!0)]),[e.info])}F.props={info:[String,Number]};var R=M(F),U=Object(a.k)("icon")[0];function V(t,e,n,i){var r,a=!!(r=e.name)&&-1!==r.indexOf("/");return t(e.tag,o()([{class:[e.classPrefix,a?"van-icon--image":e.classPrefix+"-"+e.name],style:{color:e.color,fontSize:e.size}},u(i,!0)]),[n.default&&n.default(),a&&t("img",{attrs:{src:e.name}}),t(R,{attrs:{info:e.info}})])}V.props={name:String,size:String,color:String,info:[String,Number],tag:{type:String,default:"i"},classPrefix:{type:String,default:"van-icon"}};var H=U(V),q=Object(a.k)("loading"),W=q[0],Y=q[1],X="#c9c9c9";function K(t,e,n,i){var r=e.color,a=e.size,s=e.type,c="white"===r||"black"===r?r:"",l={color:"black"===r?X:r,width:a,height:a},d=[];if("spinner"===s)for(var h=0;h<12;h++)d.push(t("i"));var f="circular"===s&&t("svg",{class:Y("circular"),attrs:{viewBox:"25 25 50 50"}},[t("circle",{attrs:{cx:"50",cy:"50",r:"20",fill:"none"}})]);return t("div",o()([{class:Y([s,c]),style:l},u(i,!0)]),[t("span",{class:Y("spinner",s)},[d,f])])}K.props={size:String,type:{type:String,default:"circular"},color:{type:String,default:X}};var Q=W(K),G=Object(a.k)("popup"),J=G[0],Z=G[1],tt=J({mixins:[L],props:{position:String,transition:String,overlay:{type:Boolean,default:!0},closeOnClickOverlay:{type:Boolean,default:!0}},render:function(t){var e,n=this;if(this.shouldRender){var i=this.position,r=function(t){return function(){return n.$emit(t)}};return t("transition",{attrs:{name:this.transition||(i?"van-popup-slide-"+i:"van-fade")},on:{afterEnter:r("opened"),afterLeave:r("closed")}},[t("div",{directives:[{name:"show",value:this.value}],class:Z((e={},e[i]=i,e))},[this.slots()])])}}}),et=Object(a.k)("actionsheet"),nt=et[0],it=et[1];function rt(t,e,n,i){var r=e.title,a=e.cancelText,s=function(){d(i,"input",!1),d(i,"cancel")};return t(tt,o()([{class:it({"safe-area-inset-bottom":e.safeAreaInsetBottom}),attrs:{value:e.value,position:"bottom",overlay:e.overlay,lazyRender:e.lazyRender,getContainer:e.getContainer,closeOnClickOverlay:e.closeOnClickOverlay},on:{input:function(t){d(i,"input",t)}}},u(i)]),[r?t("div",{class:[it("header"),"van-hairline--top-bottom"]},[r,t(H,{attrs:{name:"close"},class:it("close"),on:{click:s}})]):e.actions.map(function(e,n){return t("div",{class:[it("item",{disabled:e.disabled||e.loading}),e.className,"van-hairline--top"],on:{click:function(t){t.stopPropagation(),e.disabled||e.loading||(e.callback&&e.callback(e),d(i,"select",e,n))}}},[e.loading?t(Q,{class:it("loading"),attrs:{size:"20px"}}):[t("span",{class:it("name")},[e.name]),e.subname&&t("span",{class:it("subname")},[e.subname])]])}),n.default&&t("div",{class:it("content")},[n.default()]),a&&t("div",{class:it("cancel"),on:{click:s}},[a])])}rt.props=Object(i.a)({},L.props,{title:String,actions:Array,cancelText:String,safeAreaInsetBottom:Boolean,overlay:{type:Boolean,default:!0},closeOnClickOverlay:{type:Boolean,default:!0}});var ot=nt(rt);function at(t){return t=t.replace(/[^-|\d]/g,""),/^((\+86)|(86))?(1)\d{10}$/.test(t)||/^0[0-9-]{10,13}$/.test(t)}var st=n(19);function ct(t){return Array.isArray(t)?t.map(function(t){return ct(t)}):"object"==typeof t?Object(st.a)({},t):t}var lt={title:String,loading:Boolean,showToolbar:Boolean,cancelButtonText:String,confirmButtonText:String,visibleItemCount:{type:Number,default:5},itemHeight:{type:Number,default:44}},ut=Object(a.k)("picker-column"),dt=ut[0],ht=ut[1],ft=dt({props:{valueKey:String,className:String,itemHeight:Number,defaultIndex:Number,initialOptions:Array,visibleItemCount:Number},data:function(){return{startY:0,offset:0,duration:0,startOffset:0,options:ct(this.initialOptions),currentIndex:this.defaultIndex}},created:function(){this.$parent.children&&this.$parent.children.push(this),this.setIndex(this.currentIndex)},destroyed:function(){var t=this.$parent.children;t&&t.splice(t.indexOf(this),1)},watch:{defaultIndex:function(){this.setIndex(this.defaultIndex)}},computed:{count:function(){return this.options.length}},methods:{onTouchStart:function(t){this.startY=t.touches[0].clientY,this.startOffset=this.offset,this.duration=0},onTouchMove:function(t){k(t);var e=t.touches[0].clientY-this.startY;this.offset=Object(a.j)(this.startOffset+e,-this.count*this.itemHeight,this.itemHeight)},onTouchEnd:function(){if(this.offset!==this.startOffset){this.duration=200;var t=Object(a.j)(Math.round(-this.offset/this.itemHeight),0,this.count-1);this.setIndex(t,!0)}},adjustIndex:function(t){for(var e=t=Object(a.j)(t,0,this.count);e=0;n--)if(!this.isDisabled(this.options[n]))return n},isDisabled:function(t){return Object(a.g)(t)&&t.disabled},getOptionText:function(t){return Object(a.g)(t)&&this.valueKey in t?t[this.valueKey]:t},setIndex:function(t,e){t=this.adjustIndex(t)||0,this.offset=-t*this.itemHeight,t!==this.currentIndex&&(this.currentIndex=t,e&&this.$emit("change",t))},setValue:function(t){for(var e=this.options,n=0;nn&&(e=e.slice(0,n),t.value=e),e},onInput:function(t){this.$emit("input",this.format(t.target))},onFocus:function(t){this.focused=!0,this.$emit("focus",t),this.readonly&&this.blur()},onBlur:function(t){this.focused=!1,this.$emit("blur",t),Object(a.e)()&&window.scrollTo(0,window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0)},onClickLeftIcon:function(){this.$emit("click-left-icon")},onClickRightIcon:function(){this.$emit("click-icon"),this.$emit("click-right-icon"),this.onIconClick&&this.onIconClick()},onClear:function(t){k(t),this.$emit("input",""),this.$emit("clear")},onKeypress:function(t){if("number"===this.type){var e=t.keyCode,n=-1===String(this.value).indexOf(".");e>=48&&e<=57||46===e&&n||45===e||k(t)}"search"===this.type&&13===t.keyCode&&this.blur(),this.$emit("keypress",t)},adjustSize:function(){var t=this.$refs.input;if("textarea"===this.type&&this.autosize&&t){t.style.height="auto";var e=t.scrollHeight;if(Object(a.g)(this.autosize)){var n=this.autosize,i=n.maxHeight,r=n.minHeight;i&&(e=Math.min(e,i)),r&&(e=Math.max(e,r))}e&&(t.style.height=e+"px")}},renderInput:function(){var t=this.$createElement,e={ref:"input",class:Bt("control",this.inputAlign),domProps:{value:this.value},attrs:Object(i.a)({},this.$attrs,{readonly:this.readonly}),on:this.listeners};return"textarea"===this.type?t("textarea",o()([{},e])):t("input",o()([{attrs:{type:this.type}},e]))},renderLeftIcon:function(){var t=this.$createElement;if(this.slots("left-icon")||this.leftIcon)return t("div",{class:Bt("left-icon"),on:{click:this.onClickLeftIcon}},[this.slots("left-icon")||t(H,{attrs:{name:this.leftIcon}})])},renderRightIcon:function(){var t=this.$createElement,e=this.slots;if(e("right-icon")||e("icon")||this.rightIcon||this.icon)return t("div",{class:Bt("right-icon"),on:{click:this.onClickRightIcon}},[e("right-icon")||e("icon")||t(H,{attrs:{name:this.rightIcon||this.icon}})])}},render:function(t){var e,n=this.slots,i=this.labelAlign,r={icon:this.renderLeftIcon};return n("label")&&(r.title=function(){return n("label")}),t(Et,{attrs:{icon:this.leftIcon,size:this.size,title:this.label,center:this.center,border:this.border,isLink:this.isLink,required:this.required,titleStyle:this.labelStyle,titleClass:Bt("label",i)},class:Bt((e={error:this.error,disabled:this.$attrs.disabled},e["label-"+i]=i,e["min-height"]="textarea"===this.type&&!this.autosize,e)),scopedSlots:r},[t("div",{class:Bt("body")},[this.renderInput(),this.showClear&&t(H,{attrs:{name:"clear"},class:Bt("clear"),on:{touchstart:this.onClear}}),this.renderRightIcon(),n("button")&&t("div",{class:Bt("button")},[n("button")])]),this.errorMessage&&t("div",{class:Bt("error-message",this.errorMessageAlign)},[this.errorMessage])])}}),Dt=Object(a.k)("toast"),Mt=Dt[0],Pt=Dt[1],Ft=["success","fail","loading"],Rt=Mt({mixins:[L],props:{className:null,forbidClick:Boolean,message:[String,Number],type:{type:String,default:"text"},loadingType:{type:String,default:"circular"},position:{type:String,default:"middle"},lockScroll:{type:Boolean,default:!1}},data:function(){return{clickable:!1}},mounted:function(){this.toggleClickale()},destroyed:function(){this.toggleClickale()},watch:{value:function(){this.toggleClickale()},forbidClick:function(){this.toggleClickale()}},methods:{toggleClickale:function(){var t=this.value&&this.forbidClick;if(this.clickable!==t){this.clickable=t;var e=t?"add":"remove";document.body.classList[e]("van-toast--unclickable")}}},render:function(t){var e=this,n=this.type,i=this.message,r=-1!==Ft.indexOf(n)?"default":n;return t("transition",{attrs:{name:"van-fade"}},[t("div",{directives:[{name:"show",value:this.value}],class:[Pt([r,this.position]),this.className]},[function(){switch(r){case"text":return t("div",[i]);case"html":return t("div",{domProps:{innerHTML:i}});default:return["loading"===n?t(Q,{attrs:{color:"white",type:e.loadingType}}):t(H,{class:Pt("icon"),attrs:{name:n}}),Object(a.d)(i)&&t("div",{class:Pt("text")},[i])]}}()])])}}),Ut={type:"text",mask:!1,value:!0,message:"",className:"",onClose:null,duration:3e3,position:"middle",forbidClick:!1,loadingType:"circular",getContainer:"body",overlayStyle:null},Vt=function(t){return Object(a.g)(t)?t:{message:t}},Ht=[],qt=!1,Wt=Object(i.a)({},Ut);function Yt(t){void 0===t&&(t={});var e=function(){if(a.h)return{};if(!Ht.length||qt){var t=new(s.default.extend(Rt))({el:document.createElement("div")});Ht.push(t)}return Ht[Ht.length-1]}();return e.value&&e.updateZIndex(),t=Object(i.a)({},Wt,Vt(t),{clear:function(){if(e.value=!1,t.onClose&&t.onClose(),qt&&!a.h){clearTimeout(e.timer),Ht=Ht.filter(function(t){return t!==e});var n=e.$el.parentNode;n&&n.removeChild(e.$el),e.$destroy()}}}),Object(i.a)(e,function(t){return t.overlay=t.mask,t}(t)),clearTimeout(e.timer),t.duration>0&&(e.timer=setTimeout(function(){e.clear()},t.duration)),e}["loading","success","fail"].forEach(function(t){var e;Yt[t]=(e=t,function(t){return Yt(Object(i.a)({type:e},Vt(t)))})}),Yt.clear=function(t){Ht.length&&(t?(Ht.forEach(function(t){t.clear()}),Ht=[]):qt?Ht.shift().clear():Ht[0].clear())},Yt.setDefaultOptions=function(t){Object(i.a)(Wt,t)},Yt.resetDefaultOptions=function(){Wt=Object(i.a)({},Ut)},Yt.allowMultiple=function(t){void 0===t&&(t=!0),qt=t},Yt.install=function(){s.default.use(Rt)},s.default.prototype.$toast=Yt;var Xt=Yt,Kt=Object(a.k)("button"),Qt=Kt[0],Gt=Kt[1];function Jt(t,e,n,i){var r=e.tag,a=e.type,s=e.disabled,c=e.loading,l=e.hairline,h=e.loadingText,f=[Gt([a,e.size,{loading:c,disabled:s,hairline:l,block:e.block,plain:e.plain,round:e.round,square:e.square,"bottom-action":e.bottomAction}]),{"van-hairline--surround":l}];return t(r,o()([{class:f,attrs:{type:e.nativeType,disabled:s},on:{click:function(t){c||s||(d(i,"click",t),_t(i))},touchstart:function(t){d(i,"touchstart",t)}}},u(i)]),[c?[t(Q,{attrs:{size:e.loadingSize,color:"default"===a?void 0:""}}),h&&t("span",{class:Gt("loading-text")},[h])]:t("span",{class:Gt("text")},[n.default?n.default():e.text])])}Jt.props=Object(i.a)({},Ot,{text:String,block:Boolean,plain:Boolean,round:Boolean,square:Boolean,loading:Boolean,hairline:Boolean,disabled:Boolean,nativeType:String,loadingText:String,bottomAction:Boolean,tag:{type:String,default:"button"},type:{type:String,default:"default"},size:{type:String,default:"normal"},loadingSize:{type:String,default:"20px"}});var Zt,te=Qt(Jt),ee=Object(a.k)("dialog"),ne=ee[0],ie=ee[1],re=ee[2],oe=ne({mixins:[L],props:{title:String,message:String,className:null,callback:Function,beforeClose:Function,messageAlign:String,cancelButtonText:String,cancelButtonColor:String,confirmButtonText:String,confirmButtonColor:String,showCancelButton:Boolean,showConfirmButton:{type:Boolean,default:!0},overlay:{type:Boolean,default:!0},closeOnClickOverlay:{type:Boolean,default:!1}},data:function(){return{loading:{confirm:!1,cancel:!1}}},methods:{onClickOverlay:function(){this.handleAction("overlay")},handleAction:function(t){var e=this;this.$emit(t),this.beforeClose?(this.loading[t]=!0,this.beforeClose(t,function(n){!1!==n&&e.onClose(t),e.loading[t]=!1})):this.onClose(t)},onClose:function(t){this.close(),this.callback&&this.callback(t)}},render:function(t){var e,n=this;if(this.shouldRender){var i=this.title,r=this.message,o=this.messageAlign,a=this.slots(),s=i&&t("div",{class:ie("header",{isolated:!r&&!a})},[i]),c=(a||r)&&t("div",{class:ie("content")},[a||t("div",{domProps:{innerHTML:r},class:ie("message",(e={"has-title":i},e[o]=o,e))})]),l=this.showCancelButton&&this.showConfirmButton,u=t("div",{class:["van-hairline--top",ie("footer",{buttons:l})]},[this.showCancelButton&&t(te,{attrs:{size:"large",loading:this.loading.cancel,text:this.cancelButtonText||re("cancel")},class:ie("cancel"),style:{color:this.cancelButtonColor},on:{click:function(){n.handleAction("cancel")}}}),this.showConfirmButton&&t(te,{attrs:{size:"large",loading:this.loading.confirm,text:this.confirmButtonText||re("confirm")},class:[ie("confirm"),{"van-hairline--left":l}],style:{color:this.confirmButtonColor},on:{click:function(){n.handleAction("confirm")}}})]);return t("transition",{attrs:{name:"van-dialog-bounce"}},[t("div",{directives:[{name:"show",value:this.value}],class:[ie(),this.className]},[s,c,u])])}}});function ae(t){return a.h?Promise.resolve():new Promise(function(e,n){Zt&&Object(a.f)(Zt.$el)||(Zt&&Zt.$destroy(),(Zt=new(s.default.extend(oe))({el:document.createElement("div"),propsData:{lazyRender:!1}})).$on("input",function(t){Zt.value=t})),Object(i.a)(Zt,ae.currentOptions,t,{resolve:e,reject:n})})}ae.defaultOptions={value:!0,title:"",message:"",overlay:!0,className:"",lockScroll:!0,beforeClose:null,messageAlign:"",getContainer:"body",cancelButtonText:"",cancelButtonColor:null,confirmButtonText:"",confirmButtonColor:null,showConfirmButton:!0,showCancelButton:!1,closeOnClickOverlay:!1,callback:function(t){Zt["confirm"===t?"resolve":"reject"](t)}},ae.alert=ae,ae.confirm=function(t){return ae(Object(i.a)({showCancelButton:!0},t))},ae.close=function(){Zt&&(Zt.value=!1)},ae.setDefaultOptions=function(t){Object(i.a)(ae.currentOptions,t)},ae.resetDefaultOptions=function(){ae.currentOptions=Object(i.a)({},ae.defaultOptions)},ae.resetDefaultOptions(),ae.install=function(){s.default.use(oe)},s.default.prototype.$dialog=ae;var se=ae,ce=Object(a.k)("address-edit-detail"),le=ce[0],ue=ce[1],de=ce[2],he=Object(a.c)(),fe=le({props:{value:String,error:Boolean,focused:Boolean,detailRows:Number,searchResult:Array,showSearchResult:Boolean},methods:{onSelect:function(t){this.$emit("select-search",t),this.$emit("input",((t.address||"")+" "+(t.name||"")).trim())},onFinish:function(){this.$refs.field.blur()},renderFinish:function(){var t=this.$createElement;if(this.value&&this.focused&&he)return t("div",{class:ue("finish"),on:{click:this.onFinish}},[de("complete")])},renderSearchResult:function(){var t=this,e=this.$createElement,n=this.searchResult;if(this.focused&&n&&this.showSearchResult)return n.map(function(n){return e(Et,{key:n.name+n.address,attrs:{title:n.name,label:n.address,icon:"location-o",clickable:!0},on:{click:function(){t.onSelect(n)}}})})}},render:function(t){return t(Et,{class:ue()},[t(Lt,{attrs:{autosize:!0,rows:this.detailRows,clearable:!he,type:"textarea",maxlength:"200",value:this.value,error:this.error,label:de("label"),placeholder:de("placeholder")},ref:"field",scopedSlots:{icon:this.renderFinish},on:Object(i.a)({},this.$listeners)}),this.renderSearchResult()])}}),pe={value:null,loading:Boolean,disabled:Boolean,activeColor:String,inactiveColor:String,activeValue:{type:null,default:!0},inactiveValue:{type:null,default:!1},size:{type:String,default:"30px"}},ve=Object(a.k)("switch"),me=ve[0],ge=ve[1];function be(t,e,n,i){var r=e.value,a=e.loading,s=e.disabled,c=e.activeValue,l=e.inactiveValue,h=r===c,f={fontSize:e.size,backgroundColor:h?e.activeColor:e.inactiveColor};return t("div",o()([{class:ge({on:h,disabled:s}),style:f,on:{click:function(){if(!s&&!a){var t=h?l:c;d(i,"input",t),d(i,"change",t)}}}},u(i)]),[t("div",{class:ge("node")},[a&&t(Q,{class:ge("loading")})])])}be.props=pe;var ye=me(be),xe=Object(a.k)("switch-cell"),ke=xe[0],we=xe[1];function Ce(t,e,n,r){return t(Et,o()([{attrs:{center:!0,title:e.title,border:e.border},class:we()},u(r)]),[t(ye,{props:Object(i.a)({},e),on:Object(i.a)({},r.listeners)})])}Ce.props=Object(i.a)({},pe,{title:String,border:Boolean,size:{type:String,default:"24px"}});var Se=ke(Ce),_e=Object(a.k)("address-edit"),Oe=_e[0],$e=_e[1],Te=_e[2],je={name:"",tel:"",country:"",province:"",city:"",county:"",areaCode:"",postalCode:"",addressDetail:"",isDefault:!1},Ae=Oe({props:{areaList:Object,isSaving:Boolean,isDeleting:Boolean,validator:Function,showDelete:Boolean,showPostal:Boolean,searchResult:Array,showSetDefault:Boolean,showSearchResult:Boolean,saveButtonText:String,deleteButtonText:String,showArea:{type:Boolean,default:!0},showDetail:{type:Boolean,default:!0},detailRows:{type:Number,default:1},addressInfo:{type:Object,default:function(){return Object(i.a)({},je)}},telValidator:{type:Function,default:at},areaColumnsPlaceholder:{type:Array,default:function(){return[]}}},data:function(){return{data:{},showAreaPopup:!1,detailFocused:!1,errorInfo:{tel:!1,name:!1,postalCode:!1,addressDetail:!1}}},computed:{areaListLoaded:function(){return Object(a.g)(this.areaList)&&Object.keys(this.areaList).length},areaText:function(){var t=this.data,e=t.country,n=t.province,i=t.city,r=t.county;if(t.areaCode){var o=[e,n,i,r];return n&&n===i&&o.splice(1,1),o.filter(function(t){return t}).join("/")}return""}},watch:{addressInfo:{handler:function(t){this.data=Object(i.a)({},je,t),this.setAreaCode(t.areaCode)},deep:!0,immediate:!0},areaList:function(){this.setAreaCode(this.data.areaCode)}},methods:{onFocus:function(t){this.errorInfo[t]=!1,this.detailFocused="addressDetail"===t,this.$emit("focus",t)},onChangeDetail:function(t){this.data.addressDetail=t,this.$emit("change-detail",t)},onAreaConfirm:function(t){t.some(function(t){return!t.code})?Xt(Te("areaEmpty")):(this.showAreaPopup=!1,this.assignAreaValues(),this.$emit("change-area",t))},assignAreaValues:function(){var t=this.$refs.area;if(t){var e=t.getArea();e.areaCode=e.code,delete e.code,Object(i.a)(this.data,e)}},onSave:function(){var t=this,e=["name","tel","areaCode","addressDetail"];this.showPostal&&e.push("postalCode"),e.every(function(e){var n=t.getErrorMessage(e);return n&&(t.errorInfo[e]=!0,Xt(n)),!n})&&!this.isSaving&&this.$emit("save",this.data)},getErrorMessage:function(t){var e=String(this.data[t]||"").trim();if(this.validator){var n=this.validator(t,e);if(n)return n}switch(t){case"name":return e?"":Te("nameEmpty");case"tel":return this.telValidator(e)?"":Te("telInvalid");case"areaCode":return e?"":Te("areaEmpty");case"addressDetail":return e?"":Te("addressEmpty");case"postalCode":return e&&!/^\d{6}$/.test(e)?Te("postalEmpty"):""}},onDelete:function(){var t=this;se.confirm({title:Te("confirmDelete")}).then(function(){t.$emit("delete",t.data)}).catch(function(){t.$emit("cancel-delete",t.data)})},getArea:function(){return this.$refs.area?this.$refs.area.getValues():[]},setAreaCode:function(t){this.data.areaCode=t||"",t&&this.$nextTick(this.assignAreaValues)},setAddressDetail:function(t){this.data.addressDetail=t},onDetailBlur:function(){var t=this;setTimeout(function(){t.detailFocused=!1})}},render:function(t){var e=this,n=this.data,i=this.errorInfo,r=function(t){return function(){return e.onFocus(t)}},o=this.searchResult.length&&this.detailFocused;return t("div",{class:$e()},[t(Lt,{attrs:{clearable:!0,label:Te("name"),placeholder:Te("namePlaceholder"),error:i.name},on:{focus:r("name")},model:{value:n.name,callback:function(t){n.name=t}}}),t(Lt,{attrs:{clearable:!0,type:"tel",label:Te("tel"),placeholder:Te("telPlaceholder"),error:i.tel},on:{focus:r("tel")},model:{value:n.tel,callback:function(t){n.tel=t}}}),t(Lt,{directives:[{name:"show",value:this.showArea}],attrs:{readonly:!0,label:Te("area"),placeholder:Te("areaPlaceholder"),value:this.areaText},on:{click:function(){e.showAreaPopup=!0}}}),t(fe,{directives:[{name:"show",value:this.showDetail}],attrs:{focused:this.detailFocused,value:n.addressDetail,error:i.addressDetail,detailRows:this.detailRows,searchResult:this.searchResult,showSearchResult:this.showSearchResult},on:{focus:r("addressDetail"),blur:this.onDetailBlur,input:this.onChangeDetail,"select-search":function(t){e.$emit("select-search",t)}}}),this.showPostal&&t(Lt,{directives:[{name:"show",value:!o}],attrs:{type:"tel",maxlength:"6",label:Te("postal"),placeholder:Te("postal"),error:i.postalCode},on:{focus:r("postalCode")},model:{value:n.postalCode,callback:function(t){n.postalCode=t}}}),this.slots(),this.showSetDefault&&t(Se,{directives:[{name:"show",value:!o}],attrs:{title:Te("defaultAddress")},on:{change:function(t){e.$emit("change-default",t)}},model:{value:n.isDefault,callback:function(t){n.isDefault=t}}}),t("div",{directives:[{name:"show",value:!o}],class:$e("buttons")},[t(te,{attrs:{block:!0,loading:this.isSaving,type:"danger",text:this.saveButtonText||Te("save")},on:{click:this.onSave}}),this.showDelete&&t(te,{attrs:{block:!0,loading:this.isDeleting,text:this.deleteButtonText||Te("delete")},on:{click:this.onDelete}})]),t(tt,{attrs:{position:"bottom",lazyRender:!1,getContainer:"body"},model:{value:e.showAreaPopup,callback:function(t){e.showAreaPopup=t}}},[t(wt,{ref:"area",attrs:{loading:!this.areaListLoaded,value:n.areaCode,areaList:this.areaList,columnsPlaceholder:this.areaColumnsPlaceholder},on:{confirm:this.onAreaConfirm,cancel:function(){e.showAreaPopup=!1}}})])])}}),Ee=Object(a.k)("radio-group"),Ne=Ee[0],Ie=Ee[1],ze=Ne({props:{value:null,disabled:Boolean},watch:{value:function(t){this.$emit("change",t)}},render:function(t){return t("div",{class:Ie()},[this.slots()])}}),Be={data:function(){return{parent:null}},methods:{findParent:function(t){for(var e=this.$parent;e;){if(e.$options.name===t){this.parent=e;break}e=e.$parent}}}},Le=function(t,e){return{mixins:[Be],props:{name:null,value:null,disabled:Boolean,checkedColor:String,labelPosition:String,labelDisabled:Boolean,shape:{type:String,default:"round"},bindGroup:{type:Boolean,default:!0}},created:function(){this.bindGroup&&this.findParent(t)},computed:{isDisabled:function(){return this.parent&&this.parent.disabled||this.disabled},iconStyle:function(){var t=this.checkedColor;if(t&&this.checked&&!this.isDisabled)return{borderColor:t,backgroundColor:t}}},render:function(){var t=this,n=arguments[0],i=this.slots,r=this.checked,o=i("icon",{checked:r})||n(H,{attrs:{name:"success"},style:this.iconStyle}),a=i()&&n("span",{class:e("label",[this.labelPosition,{disabled:this.isDisabled}]),on:{click:this.onClickLabel}},[i()]);return n("div",{class:e(),on:{click:function(e){t.$emit("click",e)}}},[n("div",{class:e("icon",[this.shape,{disabled:this.isDisabled,checked:r}]),on:{click:this.onClickIcon}},[o]),a])}}},De=Object(a.k)("radio"),Me=(0,De[0])({mixins:[Le("van-radio-group",De[1])],computed:{currentValue:{get:function(){return this.parent?this.parent.value:this.value},set:function(t){(this.parent||this).$emit("input",t)}},checked:function(){return this.currentValue===this.name}},methods:{onClickIcon:function(){this.isDisabled||(this.currentValue=this.name)},onClickLabel:function(){this.isDisabled||this.labelDisabled||(this.currentValue=this.name)}}}),Pe=Object(a.k)("address-item"),Fe=Pe[0],Re=Pe[1];function Ue(t,e,n,i){var r=e.disabled,a=e.switchable;return t(Et,o()([{class:Re({disabled:r,unswitchable:!a}),attrs:{valueClass:Re("value"),clickable:a&&!r},scopedSlots:{default:function(){var n=e.data,i=[t("div",{class:Re("name")},[n.name+","+n.tel]),t("div",{class:Re("address")},[n.address])];return a&&!r?t(Me,{attrs:{name:n.id}},[i]):i},"right-icon":function(){return t(H,{attrs:{name:"edit"},class:Re("edit"),on:{click:function(t){t.stopPropagation(),d(i,"edit")}}})}},on:{click:function(){a&&d(i,"select")}}},u(i)]))}Ue.props={data:Object,disabled:Boolean,switchable:Boolean};var Ve=Fe(Ue),He=Object(a.k)("address-list"),qe=He[0],We=He[1],Ye=He[2];function Xe(t,e,n,i){var r=function(n,r){return n.map(function(n,o){return t(Ve,{attrs:{data:n,disabled:r,switchable:e.switchable},key:n.id,on:{select:function(){d(i,r?"select-disabled":"select",n,o)},edit:function(){d(i,r?"edit-disabled":"edit",n,o)}}})})},a=r(e.list),s=r(e.disabledList,!0);return t("div",o()([{class:We()},u(i)]),[n.top&&n.top(),t(ze,{attrs:{value:e.value},on:{input:function(t){d(i,"input",t)}}},[a]),e.disabledText&&t("div",{class:We("disabled-text")},[e.disabledText]),s,n.default&&n.default(),t(te,{attrs:{square:!0,size:"large",type:"danger",text:e.addButtonText||Ye("add")},class:We("add"),on:{click:function(){d(i,"add")}}})])}Xe.props={list:Array,disabledList:Array,disabledText:String,addButtonText:String,value:[String,Number],switchable:{type:Boolean,default:!0}};var Ke=qe(Xe),Qe=Object(a.k)("badge"),Ge=Qe[0],Je=Qe[1],Ze=Ge({props:{url:String,info:[String,Number],title:String},inject:["vanBadgeGroup"],created:function(){this.parent.badges.push(this)},beforeDestroy:function(){var t=this;this.parent.badges=this.parent.badges.filter(function(e){return e!==t})},computed:{parent:function(){return this.vanBadgeGroup},select:function(){return this.parent.badges.indexOf(this)===+this.parent.activeKey}},methods:{onClick:function(){var t=this.parent.badges.indexOf(this);this.$emit("click",t),this.parent.$emit("change",t)}},render:function(t){return t("a",{attrs:{href:this.url},class:[Je({select:this.select}),"van-hairline"],on:{click:this.onClick}},[t("div",{class:Je("text")},[this.title,t(R,{attrs:{info:this.info},class:Je("info")})])])}}),tn=Object(a.k)("badge-group"),en=tn[0],nn=tn[1],rn=en({props:{activeKey:{type:[Number,String],default:0}},provide:function(){return{vanBadgeGroup:this}},data:function(){return{badges:[]}},render:function(t){return t("div",{class:[nn(),"van-hairline--top-bottom"]},[this.slots()])}}),on=n(4),an=Object(a.k)("tag"),sn=an[0],cn=an[1],ln={danger:on.d,primary:on.a,success:on.c};function un(t,e,n,i){var r,a=e.type,s=e.mark,c=e.plain,l=e.round,d=e.size,h=e.color||a&&ln[a]||on.b,f=((r={})[c?"color":"backgroundColor"]=h,r);e.textColor&&(f.color=e.textColor);var p={mark:s,plain:c,round:l};return d&&(p[d]=d),t("span",o()([{style:f,class:[cn(p),{"van-hairline--surround":c}]},u(i,!0)]),[n.default&&n.default()])}un.props={size:String,type:String,mark:Boolean,color:String,plain:Boolean,round:Boolean,textColor:String};var dn=sn(un),hn=Object(a.k)("card"),fn=hn[0],pn=hn[1];function vn(t,e,n,i){var r=e.thumb,s=n.thumb||r,c=n.tag||e.tag,l=n.num||Object(a.d)(e.num),h=n.price||Object(a.d)(e.price),f=n["origin-price"]||Object(a.d)(e.originPrice),p=l||h||f,v=s&&t("a",{attrs:{href:e.thumbLink},class:pn("thumb"),on:{click:function(){d(i,"click-thumb")}}},[n.thumb?n.thumb():e.lazyLoad?t("img",{class:pn("img"),directives:[{name:"lazy",value:r}]}):t("img",{class:pn("img"),attrs:{src:r}}),c&&t("div",{class:pn("tag")},[n.tag?n.tag():t(dn,{attrs:{mark:!0,type:"danger"}},[e.tag])])]),m=n.title?n.title():e.title&&t("div",{class:pn("title")},[e.title]),g=n.desc?n.desc():e.desc&&t("div",{class:[pn("desc"),"van-ellipsis"]},[e.desc]),b=h&&t("div",{class:pn("price")},[n.price?n.price():e.currency+" "+e.price]),y=f&&t("div",{class:pn("origin-price")},[n["origin-price"]?n["origin-price"]():e.currency+" "+e.originPrice]),x=l&&t("div",{class:pn("num")},[n.num?n.num():"x "+e.num]),k=n.footer&&t("div",{class:pn("footer")},[n.footer()]);return t("div",o()([{class:pn()},u(i,!0)]),[t("div",{class:pn("header")},[v,t("div",{class:pn("content",{centered:e.centered})},[m,g,n.tags&&n.tags(),p&&t("div",{class:"van-card__bottom"},[b,y,x,n.bottom&&n.bottom()])])]),k])}vn.props={tag:String,desc:String,thumb:String,title:String,centered:Boolean,lazyLoad:Boolean,thumbLink:String,num:[Number,String],price:[Number,String],originPrice:[Number,String],currency:{type:String,default:"¥"}};var mn=fn(vn),gn=Object(a.k)("cell-group"),bn=gn[0],yn=gn[1];function xn(t,e,n,i){var r=t("div",o()([{class:[yn(),{"van-hairline--top-bottom":e.border}]},u(i,!0)]),[n.default&&n.default()]);return e.title?t("div",[t("div",{class:yn("title")},[e.title]),r]):r}xn.props={title:String,border:{type:Boolean,default:!0}};var kn=bn(xn),wn=Object(a.k)("checkbox"),Cn=(0,wn[0])({mixins:[Le("van-checkbox-group",wn[1])],computed:{checked:{get:function(){return this.parent?-1!==this.parent.value.indexOf(this.name):this.value},set:function(t){this.parent?this.setParentValue(t):this.$emit("input",t)}}},watch:{value:function(t){this.$emit("change",t)}},methods:{toggle:function(){var t=this,e=!this.checked;clearTimeout(this.toggleTask),this.toggleTask=setTimeout(function(){t.checked=e})},onClickIcon:function(){this.isDisabled||this.toggle()},onClickLabel:function(){this.isDisabled||this.labelDisabled||this.toggle()},setParentValue:function(t){var e=this.parent,n=e.value.slice();if(t){if(e.max&&n.length>=e.max)return;-1===n.indexOf(this.name)&&(n.push(this.name),e.$emit("input",n))}else{var i=n.indexOf(this.name);-1!==i&&(n.splice(i,1),e.$emit("input",n))}}}}),Sn=Object(a.k)("checkbox-group"),_n=Sn[0],On=Sn[1],$n=_n({props:{max:Number,value:Array,disabled:Boolean},watch:{value:function(t){this.$emit("change",t)}},render:function(t){return t("div",{class:On()},[this.slots()])}}),Tn=n(6),jn=Object(a.k)("circle"),An=jn[0],En=jn[1],Nn="M 530 530 m -500, 0 a 500, 500 0 1, 1 1000, 0 a 500, 500 0 1, 1 -1000, 0";function In(t){return Math.min(Math.max(t,0),100)}var zn=An({props:{text:String,value:Number,speed:Number,size:{type:String,default:"100px"},fill:{type:String,default:"none"},rate:{type:Number,default:100},layerColor:{type:String,default:on.e},color:{type:String,default:on.a},strokeWidth:{type:Number,default:40},clockwise:{type:Boolean,default:!0}},computed:{style:function(){return{width:this.size,height:this.size}},layerStyle:function(){var t=3140*(100-this.value)/100;return t=this.clockwise?t:6280-t,{stroke:""+this.color,strokeDashoffset:t+"px",strokeWidth:this.strokeWidth+1+"px"}},hoverStyle:function(){return{fill:""+this.fill,stroke:""+this.layerColor,strokeWidth:this.strokeWidth+"px"}}},watch:{rate:{handler:function(){this.startTime=Date.now(),this.startRate=this.value,this.endRate=In(this.rate),this.increase=this.endRate>this.startRate,this.duration=Math.abs(1e3*(this.startRate-this.endRate)/this.speed),this.speed?(Object(Tn.a)(this.rafId),this.rafId=Object(Tn.b)(this.animate)):this.$emit("input",this.endRate)},immediate:!0}},methods:{animate:function(){var t=Date.now(),e=Math.min((t-this.startTime)/this.duration,1)*(this.endRate-this.startRate)+this.startRate;this.$emit("input",In(parseFloat(e.toFixed(1)))),(this.increase?ethis.endRate)&&(this.rafId=Object(Tn.b)(this.animate))}},render:function(t){return t("div",{class:En(),style:this.style},[t("svg",{attrs:{viewBox:"0 0 1060 1060"}},[t("path",{class:En("hover"),style:this.hoverStyle,attrs:{d:Nn}}),t("path",{class:En("layer"),style:this.layerStyle,attrs:{d:Nn}})]),this.slots()||this.text&&t("div",{class:En("text")},[this.text])])}}),Bn=Object(a.k)("col"),Ln=Bn[0],Dn=Bn[1],Mn=Ln({props:{span:[Number,String],offset:[Number,String],tag:{type:String,default:"div"}},computed:{gutter:function(){return this.$parent&&Number(this.$parent.gutter)||0},style:function(){var t=this.gutter/2+"px";return this.gutter?{paddingLeft:t,paddingRight:t}:{}}},render:function(t){var e,n=this.span,i=this.offset;return t(this.tag,{class:Dn((e={},e[n]=n,e["offset-"+i]=i,e)),style:this.style},[this.slots()])}}),Pn=Object(a.k)("collapse"),Fn=Pn[0],Rn=Pn[1],Un=Fn({props:{accordion:Boolean,value:[String,Number,Array],border:{type:Boolean,default:!0}},data:function(){return{items:[]}},methods:{switch:function(t,e){this.accordion||(t=e?this.value.concat(t):this.value.filter(function(e){return e!==t})),this.$emit("change",t),this.$emit("input",t)}},render:function(t){return t("div",{class:[Rn(),{"van-hairline--top-bottom":this.border}]},[this.slots()])}}),Vn=Object(a.k)("collapse-item"),Hn=Vn[0],qn=Vn[1],Wn=["title","icon","right-icon"],Yn=Hn({mixins:[Be],props:Object(i.a)({},Ct,{name:[String,Number],disabled:Boolean,isLink:{type:Boolean,default:!0}}),data:function(){return{show:null,inited:null}},computed:{items:function(){return this.parent.items},index:function(){return this.items.indexOf(this)},currentName:function(){return Object(a.d)(this.name)?this.name:this.index},expanded:function(){var t=this;if(!this.parent)return null;var e=this.parent.value;return this.parent.accordion?e===this.currentName:e.some(function(e){return e===t.currentName})}},created:function(){this.findParent("van-collapse"),this.items.push(this),this.show=this.expanded,this.inited=this.expanded},destroyed:function(){this.items.splice(this.index,1)},watch:{expanded:function(t,e){var n=this;null!==e&&(t&&(this.show=!0,this.inited=!0),Object(Tn.b)(function(){var e=n.$refs,i=e.content,r=e.wrapper;if(i&&r){var o=i.clientHeight;if(o){var a=o+"px";r.style.height=t?0:a,Object(Tn.b)(function(){r.style.height=t?a:0})}else n.onTransitionEnd()}}))}},methods:{onClick:function(){if(!this.disabled){var t=this.parent,e=t.accordion&&this.currentName===t.value?"":this.currentName,n=!this.expanded;this.parent.switch(e,n)}},onTransitionEnd:function(){this.expanded?this.$refs.wrapper.style.height=null:this.show=!1}},render:function(t){var e=this,n=Wn.reduce(function(t,n){return e.slots(n)&&(t[n]=function(){return e.slots(n)}),t},{});this.slots("value")&&(n.default=function(){return e.slots("value")});var r=t(Et,{class:qn("title",{disabled:this.disabled,expanded:this.expanded}),on:{click:this.onClick},scopedSlots:n,props:Object(i.a)({},this.$props)}),o=this.inited&&t("div",{directives:[{name:"show",value:this.show}],ref:"wrapper",class:qn("wrapper"),on:{transitionend:this.onTransitionEnd}},[t("div",{ref:"content",class:qn("content")},[this.slots()])]);return t("div",{class:[qn(),{"van-hairline--top":this.index}]},[r,o])}}),Xn=Object(a.k)("contact-card"),Kn=Xn[0],Qn=Xn[1],Gn=Xn[2];function Jn(t,e,n,i){var r=e.type,a=e.editable;return t(Et,o()([{attrs:{center:!0,border:!1,isLink:a,valueClass:Qn("value"),icon:"edit"===r?"contact":"add-square"},class:Qn([r]),on:{click:function(t){a&&d(i,"click",t)}}},u(i)]),["add"===r?e.addText||Gn("addText"):[t("div",[Gn("name")+":"+e.name]),t("div",[Gn("tel")+":"+e.tel])]])}Jn.props={tel:String,name:String,addText:String,editable:{type:Boolean,default:!0},type:{type:String,default:"add"}};var Zn=Kn(Jn),ti=Object(a.k)("contact-edit"),ei=ti[0],ni=ti[1],ii=ti[2],ri={tel:"",name:""},oi=ei({props:{isEdit:Boolean,isSaving:Boolean,isDeleting:Boolean,contactInfo:{type:Object,default:function(){return Object(i.a)({},ri)}},telValidator:{type:Function,default:at}},data:function(){return{data:Object(i.a)({},ri,this.contactInfo),errorInfo:{name:!1,tel:!1}}},watch:{contactInfo:function(t){this.data=Object(i.a)({},ri,t)}},methods:{onFocus:function(t){this.errorInfo[t]=!1},getErrorMessageByKey:function(t){var e=this.data[t].trim();switch(t){case"name":return e?"":ii("nameEmpty");case"tel":return this.telValidator(e)?"":ii("telInvalid")}},onSave:function(){var t=this;["name","tel"].every(function(e){var n=t.getErrorMessageByKey(e);return n&&(t.errorInfo[e]=!0,Xt(n)),!n})&&!this.isSaving&&this.$emit("save",this.data)},onDelete:function(){var t=this;se.confirm({message:ii("confirmDelete")}).then(function(){t.$emit("delete",t.data)})}},render:function(t){var e=this,n=this.data,i=this.errorInfo,r=function(t){return function(){return e.onFocus(t)}};return t("div",{class:ni()},[t(Lt,{attrs:{clearable:!0,maxlength:"30",label:ii("name"),placeholder:ii("nameEmpty"),error:i.name},on:{focus:r("name")},model:{value:n.name,callback:function(t){n.name=t}}}),t(Lt,{attrs:{clearable:!0,type:"tel",label:ii("tel"),placeholder:ii("telEmpty"),error:i.tel},on:{focus:r("tel")},model:{value:n.tel,callback:function(t){n.tel=t}}}),t("div",{class:ni("buttons")},[t(te,{attrs:{block:!0,type:"danger",text:ii("save"),loading:this.isSaving},on:{click:this.onSave}}),this.isEdit&&t(te,{attrs:{block:!0,text:ii("delete"),loading:this.isDeleting},on:{click:this.onDelete}})])])}}),ai=Object(a.k)("contact-list"),si=ai[0],ci=ai[1],li=ai[2];function ui(t,e,n,i){var r=e.list.map(function(e,n){var r=function(){d(i,"input",e.id),d(i,"select",e,n)};return t(Et,{key:e.id,attrs:{isLink:!0,valueClass:ci("item-value")},class:ci("item"),scopedSlots:{default:function(){return t(Me,{attrs:{name:e.id},on:{click:r}},[t("div",{class:ci("name")},[e.name+","+e.tel])])},"right-icon":function(){return t(H,{attrs:{name:"edit"},class:ci("edit"),on:{click:function(t){t.stopPropagation(),d(i,"edit",e,n)}}})}},on:{click:r}})});return t("div",o()([{class:ci()},u(i)]),[t(ze,{attrs:{value:e.value},class:ci("group")},[r]),t(te,{attrs:{square:!0,size:"large",type:"danger",text:e.addText||li("addText")},class:ci("add"),on:{click:function(){d(i,"add")}}})])}ui.props={value:null,list:Array,addText:String};var di=si(ui),hi=Object(a.k)("coupon"),fi=hi[0],pi=hi[1],vi=hi[2];function mi(t){return(t<10?"0":"")+t}function gi(t){var e=new Date(1e3*t);return e.getFullYear()+"."+mi(e.getMonth()+1)+"."+mi(e.getDate())}var bi=fi({props:{coupon:Object,chosen:Boolean,disabled:Boolean,currency:{type:String,default:"¥"}},computed:{validPeriod:function(){return vi("valid")+":"+gi(this.coupon.startAt)+" - "+gi(this.coupon.endAt)},faceAmount:function(){var t,e,n=this.coupon;return n.valueDesc?n.valueDesc+""+(n.unitDesc||"")+"":n.denominations?""+this.currency+" "+((e=this.coupon.denominations)/100).toFixed(e%100==0?0:e%10==0?1:2):n.discount?vi("discount",((t=this.coupon.discount)/10).toFixed(t%10==0?0:1)):""},conditionMessage:function(){var t=this.coupon.originCondition;return 0===(t=t%100==0?Math.round(t/100):(t/100).toFixed(2))?vi("unlimited"):vi("condition",t)}},render:function(t){var e=this.coupon,n=this.disabled,i=n&&e.reason||e.description;return t("div",{class:pi({disabled:n})},[t("div",{class:pi("content")},[t("div",{class:pi("head")},[t("h2",{domProps:{innerHTML:this.faceAmount}}),t("p",[this.coupon.condition||this.conditionMessage])]),t("div",{class:pi("body")},[t("h2",[e.name]),t("p",[this.validPeriod]),this.chosen&&t(Cn,{attrs:{value:!0},class:pi("corner")})])]),i&&t("p",{class:pi("description")},[i])])}}),yi=Object(a.k)("coupon-cell"),xi=yi[0],ki=yi[1],wi=yi[2];function Ci(t,e,n,i){var r=e.coupons[e.chosenCoupon]?"van-coupon-cell--selected":"",a=function(t){var e=t.coupons,n=t.chosenCoupon,i=t.currency,r=e[n];return r?"-"+i+((r.denominations||r.value)/100).toFixed(2):0===e.length?wi("tips"):wi("count",e.length)}(e);return t(Et,o()([{class:ki(),attrs:{value:a,title:e.title||wi("title"),border:e.border,isLink:e.editable,valueClass:r}},u(i,!0)]))}Ci.model={prop:"chosenCoupon"},Ci.props={title:String,coupons:Array,currency:{type:String,default:"¥"},border:{type:Boolean,default:!0},editable:{type:Boolean,default:!0},chosenCoupon:{type:Number,default:-1}};var Si=xi(Ci),_i=Object(a.k)("tab"),Oi=_i[0],$i=_i[1],Ti=Oi({mixins:[Be],props:{title:String,disabled:Boolean},data:function(){return{inited:!1}},computed:{index:function(){return this.parent.tabs.indexOf(this)},selected:function(){return this.index===this.parent.curActive}},watch:{"parent.curActive":function(){this.inited=this.inited||this.selected},title:function(){this.parent.setLine()}},created:function(){this.findParent("van-tabs")},mounted:function(){var t=this.parent.tabs,e=this.parent.slots().indexOf(this.$vnode);t.splice(-1===e?t.length:e,0,this),this.slots("title")&&this.parent.renderTitle(this.$refs.title,this.index)},beforeDestroy:function(){this.parent.tabs.splice(this.index,1)},render:function(t){var e=this.slots,n=this.inited||!this.parent.lazyRender;return t("div",{directives:[{name:"show",value:this.selected||this.parent.animated}],class:$i("pane")},[n?e():t(),e("title")&&t("div",{ref:"title"},[e("title")])])}}),ji=Object(a.k)("tabs"),Ai=ji[0],Ei=ji[1],Ni=Object(a.k)("tab")[1],Ii=Ai({mixins:[v],model:{prop:"active"},props:{color:String,sticky:Boolean,animated:Boolean,offsetTop:Number,swipeable:Boolean,background:String,titleActiveColor:String,titleInactiveColor:String,ellipsis:{type:Boolean,default:!0},lazyRender:{type:Boolean,default:!0},lineWidth:{type:Number,default:null},lineHeight:{type:Number,default:null},active:{type:[Number,String],default:0},type:{type:String,default:"line"},duration:{type:Number,default:.3},swipeThreshold:{type:Number,default:4}},data:function(){return{tabs:[],position:"",curActive:null,lineStyle:{backgroundColor:this.color},events:{resize:!1,sticky:!1,swipeable:!1}}},computed:{scrollable:function(){return this.tabs.length>this.swipeThreshold||!this.ellipsis},wrapStyle:function(){switch(this.position){case"top":return{top:this.offsetTop+"px",position:"fixed"};case"bottom":return{top:"auto",bottom:0};default:return null}},navStyle:function(){return{borderColor:this.color,background:this.background}},trackStyle:function(){if(this.animated)return{left:-1*this.curActive*100+"%",transitionDuration:this.duration+"s"}}},watch:{active:function(t){t!==this.curActive&&this.correctActive(t)},color:function(){this.setLine()},tabs:function(){this.correctActive(this.curActive||this.active),this.scrollIntoView(),this.setLine()},curActive:function(){var t,e;this.scrollIntoView(),this.setLine(),"top"!==this.position&&"bottom"!==this.position||(t=window,e=z(this.$el)-this.offsetTop,"scrollTop"in t?t.scrollTop=e:t.scrollTo(t.scrollX,e))},sticky:function(){this.handlers(!0)},swipeable:function(){this.handlers(!0)}},mounted:function(){this.onShow()},activated:function(){this.onShow(),this.setLine()},deactivated:function(){this.handlers(!1)},beforeDestroy:function(){this.handlers(!1)},methods:{onShow:function(){var t=this;this.$nextTick(function(){t.inited=!0,t.handlers(!0),t.scrollIntoView(!0)})},handlers:function(t){var e=this.events,n=this.sticky&&t,i=this.swipeable&&t;if(e.resize!==t&&(e.resize=t,(t?b:y)(window,"resize",this.setLine,!0)),e.sticky!==n&&(e.sticky=n,this.scrollEl=this.scrollEl||N(this.$el),(n?b:y)(this.scrollEl,"scroll",this.onScroll,!0),this.onScroll()),e.swipeable!==i){e.swipeable=i;var r=this.$refs.content,o=i?b:y;o(r,"touchstart",this.touchStart),o(r,"touchmove",this.touchMove),o(r,"touchend",this.onTouchEnd),o(r,"touchcancel",this.onTouchEnd)}},onTouchEnd:function(){var t=this.direction,e=this.deltaX,n=this.curActive;"horizontal"===t&&this.offsetX>=50&&(e>0&&0!==n?this.setCurActive(n-1):e<0&&n!==this.tabs.length-1&&this.setCurActive(n+1))},onScroll:function(){var t=I(window)+this.offsetTop,e=z(this.$el),n=e+this.$el.offsetHeight-this.$refs.wrap.offsetHeight;this.position=t>n?"bottom":t>e?"top":"";var i={scrollTop:t,isFixed:"top"===this.position};this.$emit("scroll",i)},setLine:function(){var t=this,e=this.inited;this.$nextTick(function(){var n=t.$refs.tabs;if(n&&n[t.curActive]&&"line"===t.type){var i=n[t.curActive],r=t.lineWidth,o=t.lineHeight,s=Object(a.d)(r)?r:i.offsetWidth/2,c=i.offsetLeft+(i.offsetWidth-s)/2,l={width:s+"px",backgroundColor:t.color,transform:"translateX("+c+"px)"};if(e&&(l.transitionDuration=t.duration+"s"),Object(a.d)(o)){var u=o+"px";l.height=u,l.borderRadius=u}t.lineStyle=l}})},correctActive:function(t){t=+t;var e=this.tabs.some(function(e){return e.index===t}),n=(this.tabs[0]||{}).index||0;this.setCurActive(e?t:n)},setCurActive:function(t){t=this.findAvailableTab(t,t=0&&i10?n:"0"+n)+":00"}if(!e){var i=t.split(":"),r=i[0],o=i[1];return(r=Fi(Object(a.j)(r,this.minHour,this.maxHour)))+":"+(o=Fi(Object(a.j)(o,this.minMinute,this.maxMinute)))}return t=Math.max(t,this.minDate.getTime()),t=Math.min(t,this.maxDate.getTime()),new Date(t)},getBoundary:function(t,e){var n,i=this[t+"Date"],r=i.getFullYear(),o=1,a=1,s=0,c=0;return"max"===t&&(o=12,a=Ui(e.getFullYear(),e.getMonth()+1),s=23,c=59),e.getFullYear()===r&&(o=i.getMonth()+1,e.getMonth()+1===o&&(a=i.getDate(),e.getDate()===a&&(s=i.getHours(),e.getHours()===s&&(c=i.getMinutes())))),(n={})[t+"Year"]=r,n[t+"Month"]=o,n[t+"Date"]=a,n[t+"Hour"]=s,n[t+"Minute"]=c,n},onConfirm:function(){this.$emit("confirm",this.innerValue)},onChange:function(t){var e,n=this;if("time"===this.type){var i=t.getIndexes();e=i[0]+this.minHour+":"+(i[1]+this.minMinute)}else{var r=t.getValues(),o=Ri(r[0]),a=Ri(r[1]),s=Ui(o,a),c=Ri(r[2]);"year-month"===this.type&&(c=1),c=c>s?s:c;var l=0,u=0;"datetime"===this.type&&(l=Ri(r[3]),u=Ri(r[4])),e=new Date(o,a-1,c,l,u)}this.innerValue=this.correctValue(e),this.$nextTick(function(){n.$nextTick(function(){n.$emit("change",t)})})},updateColumnValue:function(t){var e=this,n=[],i=this.formatter;if("time"===this.type){var r=t.split(":");n=[i("hour",r[0]),i("minute",r[1])]}else n=[i("year",""+t.getFullYear()),i("month",Fi(t.getMonth()+1)),i("day",Fi(t.getDate()))],"datetime"===this.type&&n.push(i("hour",Fi(t.getHours())),i("minute",Fi(t.getMinutes()))),"year-month"===this.type&&(n=n.slice(0,2));this.$nextTick(function(){e.$refs.picker.setValues(n)})}},render:function(t){var e=this,n={};return Object.keys(lt).forEach(function(t){n[t]=e[t]}),t(bt,{class:qi(),ref:"picker",attrs:{columns:this.columns},on:{change:this.onChange,confirm:this.onConfirm,cancel:function(){e.$emit("cancel")}},props:Object(i.a)({},n)})}}),Xi=Object(a.k)("goods-action"),Ki=Xi[0],Qi=Xi[1];function Gi(t,e,n,i){return t("div",o()([{class:Qi({"safe-area-inset-bottom":e.safeAreaInsetBottom})},u(i,!0)]),[n.default&&n.default()])}Gi.props={safeAreaInsetBottom:Boolean};var Ji=Ki(Gi),Zi=Object(a.k)("goods-action-big-btn"),tr=Zi[0],er=Zi[1];function nr(t,e,n,i){return t(te,o()([{attrs:{square:!0,size:"large",loading:e.loading,disabled:e.disabled,type:e.primary?"danger":"warning"},class:er(),on:{click:function(t){d(i,"click",t),_t(i)}}},u(i)]),[n.default?n.default():e.text])}nr.props=Object(i.a)({},Ot,{text:String,primary:Boolean,loading:Boolean,disabled:Boolean});var ir=tr(nr),rr=Object(a.k)("goods-action-mini-btn"),or=rr[0],ar=rr[1];function sr(t,e,n,i){return t("div",o()([{class:[ar(),"van-hairline"],on:{click:function(t){d(i,"click",t),_t(i)}}},u(i)]),[t(H,{class:[ar("icon"),e.iconClass],attrs:{tag:"div",info:e.info,name:e.icon}}),n.default?n.default():e.text])}sr.props=Object(i.a)({},Ot,{text:String,icon:String,info:[String,Number],iconClass:null});var cr=or(sr),lr=Object(a.k)("swipe"),ur=lr[0],dr=lr[1],hr=ur({mixins:[v],props:{width:Number,height:Number,autoplay:Number,vertical:Boolean,initialSwipe:Number,indicatorColor:String,loop:{type:Boolean,default:!0},touchable:{type:Boolean,default:!0},showIndicators:{type:Boolean,default:!0},duration:{type:Number,default:500}},data:function(){return{computedWidth:0,computedHeight:0,offset:0,active:0,deltaX:0,deltaY:0,swipes:[],swiping:!1}},mounted:function(){this.initialize(),this.$isServer||b(window,"resize",this.onResize,!0)},activated:function(){this.rendered&&this.initialize(),this.rendered=!0},destroyed:function(){this.clear(),this.$isServer||y(window,"resize",this.onResize)},watch:{swipes:function(){this.initialize()},initialSwipe:function(){this.initialize()},autoplay:function(t){t?this.autoPlay():this.clear()}},computed:{count:function(){return this.swipes.length},delta:function(){return this.vertical?this.deltaY:this.deltaX},size:function(){return this[this.vertical?"computedHeight":"computedWidth"]},trackSize:function(){return this.count*this.size},activeIndicator:function(){return(this.active+this.count)%this.count},isCorrectDirection:function(){var t=this.vertical?"vertical":"horizontal";return this.direction===t},trackStyle:function(){var t,e=this.vertical?"height":"width",n=this.vertical?"width":"height";return(t={})[e]=this.trackSize+"px",t[n]=this[n]?this[n]+"px":"",t.transitionDuration=(this.swiping?0:this.duration)+"ms",t.transform="translate"+(this.vertical?"Y":"X")+"("+this.offset+"px)",t},indicatorStyle:function(){return{backgroundColor:this.indicatorColor}}},methods:{initialize:function(t){if(void 0===t&&(t=this.initialSwipe),clearTimeout(this.timer),this.$el){var e=this.$el.getBoundingClientRect();this.computedWidth=this.width||e.width,this.computedHeight=this.height||e.height}this.swiping=!0,this.active=t,this.offset=this.count>1?-this.size*this.active:0,this.swipes.forEach(function(t){t.offset=0}),this.autoPlay()},onResize:function(){this.initialize(this.activeIndicator)},onTouchStart:function(t){this.touchable&&(this.clear(),this.swiping=!0,this.touchStart(t),this.correctPosition())},onTouchMove:function(t){this.touchable&&this.swiping&&(this.touchMove(t),this.isCorrectDirection&&(k(t,!0),this.move({offset:Math.min(Math.max(this.delta,-this.size),this.size)})))},onTouchEnd:function(){if(this.touchable&&this.swiping){if(this.delta&&this.isCorrectDirection){var t=this.vertical?this.offsetY:this.offsetX;this.move({pace:t>0?this.delta>0?-1:1:0,emitChange:!0})}this.swiping=!1,this.autoPlay()}},move:function(t){var e=t.pace,n=void 0===e?0:e,i=t.offset,r=void 0===i?0:i,o=t.emitChange,a=this.delta,s=this.active,c=this.count,l=this.swipes,u=this.trackSize,d=0===s,h=s===c-1;!this.loop&&(d&&(r>0||n<0)||h&&(r<0||n>0))||c<=1||(l[0]&&(l[0].offset=h&&(a<0||n>0)?u:0),l[c-1]&&(l[c-1].offset=d&&(a>0||n<0)?-u:0),n&&s+n>=-1&&s+n<=c&&(this.active+=n,o&&this.$emit("change",this.activeIndicator)),this.offset=Math.round(r-this.active*this.size))},swipeTo:function(t){var e=this;this.swiping=!0,this.resetTouchStatus(),this.correctPosition(),setTimeout(function(){e.swiping=!1,e.move({pace:t%e.count-e.active,emitChange:!0})},30)},correctPosition:function(){this.active<=-1&&this.move({pace:this.count}),this.active>=this.count&&this.move({pace:-this.count})},clear:function(){clearTimeout(this.timer)},autoPlay:function(){var t=this,e=this.autoplay;e&&this.count>1&&(this.clear(),this.timer=setTimeout(function(){t.swiping=!0,t.resetTouchStatus(),t.correctPosition(),setTimeout(function(){t.swiping=!1,t.move({pace:1,emitChange:!0}),t.autoPlay()},30)},e))}},render:function(t){var e=this,n=this.count,i=this.activeIndicator,r=this.slots("indicator")||this.showIndicators&&n>1&&t("div",{class:dr("indicators",{vertical:this.vertical})},[Array.apply(void 0,Array(n)).map(function(n,r){return t("i",{class:dr("indicator",{active:r===i}),style:r===i?e.indicatorStyle:null})})]);return t("div",{class:dr()},[t("div",{ref:"track",style:this.trackStyle,class:dr("track"),on:{touchstart:this.onTouchStart,touchmove:this.onTouchMove,touchend:this.onTouchEnd,touchcancel:this.onTouchEnd}},[this.slots()]),r])}}),fr=Object(a.k)("swipe-item"),pr=fr[0],vr=fr[1],mr=pr({data:function(){return{offset:0}},beforeCreate:function(){this.$parent.swipes.push(this)},destroyed:function(){this.$parent.swipes.splice(this.$parent.swipes.indexOf(this),1)},render:function(t){var e=this.$parent,n=e.vertical,r=e.computedWidth,o=e.computedHeight,a={width:r+"px",height:n?o+"px":"100%",transform:"translate"+(n?"Y":"X")+"("+this.offset+"px)"};return t("div",{class:vr(),style:a,on:Object(i.a)({},this.$listeners)},[this.slots()])}}),gr=Object(a.k)("image-preview"),br=gr[0],yr=gr[1];function xr(t){return Math.sqrt(Math.abs((t[0].clientX-t[1].clientX)*(t[0].clientY-t[1].clientY)))}var kr,wr=br({mixins:[L,v],props:{images:Array,className:null,lazyLoad:Boolean,asyncClose:Boolean,startPosition:Number,showIndicators:Boolean,loop:{type:Boolean,default:!0},overlay:{type:Boolean,default:!0},showIndex:{type:Boolean,default:!0},minZoom:{type:Number,default:1/3},maxZoom:{type:Number,default:3},overlayClass:{type:String,default:"van-image-preview__overlay"},closeOnClickOverlay:{type:Boolean,default:!0}},data:function(){return{scale:1,moveX:0,moveY:0,moving:!1,zooming:!1,active:0}},computed:{imageStyle:function(){var t=this.scale,e={transition:this.zooming||this.moving?"":".3s all"};return 1!==t&&(e.transform="scale3d("+t+", "+t+", 1) translate("+this.moveX/t+"px, "+this.moveY/t+"px)"),e}},watch:{value:function(){this.active=this.startPosition},startPosition:function(t){this.active=t}},methods:{onWrapperTouchStart:function(){this.touchStartTime=new Date},onWrapperTouchEnd:function(t){k(t);var e=new Date-this.touchStartTime,n=this.$refs.swipe||{},i=n.offsetX,r=void 0===i?0:i,o=n.offsetY;if(e<300&&r<10&&(void 0===o?0:o)<10){var a=this.active;this.resetScale(),this.$emit("close",{index:a,url:this.images[a]}),this.asyncClose||this.$emit("input",!1)}},startMove:function(t){var e=t.currentTarget.getBoundingClientRect(),n=window.innerWidth,i=window.innerHeight;this.touchStart(t),this.moving=!0,this.startMoveX=this.moveX,this.startMoveY=this.moveY,this.maxMoveX=Math.max(0,(e.width-n)/2),this.maxMoveY=Math.max(0,(e.height-i)/2)},startZoom:function(t){this.moving=!1,this.zooming=!0,this.startScale=this.scale,this.startDistance=xr(t.touches)},onTouchStart:function(t){var e=t.touches,n=(this.$refs.swipe||{}).offsetX,i=void 0===n?0:n;1===e.length&&1!==this.scale?this.startMove(t):2!==e.length||i||this.startZoom(t)},onTouchMove:function(t){var e=t.touches;if((this.moving||this.zooming)&&k(t,!0),this.moving){this.touchMove(t);var n=this.deltaX+this.startMoveX,i=this.deltaY+this.startMoveY;this.moveX=Object(a.j)(n,-this.maxMoveX,this.maxMoveX),this.moveY=Object(a.j)(i,-this.maxMoveY,this.maxMoveY)}if(this.zooming&&2===e.length){var r=xr(e),o=this.startScale*r/this.startDistance;this.scale=Object(a.j)(o,this.minZoom,this.maxZoom)}},onTouchEnd:function(t){if(this.moving||this.zooming){var e=!0;this.moving&&this.startMoveX===this.moveX&&this.startMoveY===this.moveY&&(e=!1),t.touches.length||(this.moving=!1,this.zooming=!1,this.startMoveX=0,this.startMoveY=0,this.startScale=1,this.scale<1&&this.resetScale()),e&&k(t,!0)}},onChange:function(t){this.resetScale(),this.active=t,this.$emit("change",t)},resetScale:function(){this.scale=1,this.moveX=0,this.moveY=0}},render:function(t){var e=this;if(this.value){var n=this.active,i=this.images,r=this.showIndex&&t("div",{class:yr("index")},[this.slots("index")||n+1+"/"+i.length]),a=t(hr,{ref:"swipe",attrs:{loop:this.loop,indicatorColor:"white",initialSwipe:this.startPosition,showIndicators:this.showIndicators},on:{change:this.onChange}},[i.map(function(i,r){var a={class:yr("image"),style:r===n?e.imageStyle:null,on:{touchstart:e.onTouchStart,touchmove:e.onTouchMove,touchend:e.onTouchEnd,touchcancel:e.onTouchEnd}};return t(mr,[e.lazyLoad?t("img",o()([{directives:[{name:"lazy",value:i}]},a])):t("img",o()([{attrs:{src:i}},a]))])})]);return t("transition",{attrs:{name:"van-fade"}},[t("div",{class:[yr(),this.className],on:{touchstart:this.onWrapperTouchStart,touchend:this.onWrapperTouchEnd,touchcancel:this.onWrapperTouchEnd}},[r,a])])}}}),Cr={images:[],loop:!0,value:!0,minZoom:1/3,maxZoom:3,className:"",lazyLoad:!1,showIndex:!0,asyncClose:!1,startPosition:0,showIndicators:!1},Sr=function(t,e){if(void 0===e&&(e=0),!a.h){kr||(kr=new(s.default.extend(wr))({el:document.createElement("div")}),document.body.appendChild(kr.$el));var n=Array.isArray(t)?{images:t,startPosition:e}:t;return Object(i.a)(kr,Cr,n),kr.$once("input",function(t){kr.value=t}),n.onClose&&kr.$once("close",n.onClose),kr}};Sr.install=function(){s.default.use(wr)};var _r=Sr,Or=n(22),$r=n.n(Or).a,Tr=Object(a.k)("list"),jr=Tr[0],Ar=Tr[1],Er=Tr[2],Nr=jr({model:{prop:"loading"},props:{error:Boolean,loading:Boolean,finished:Boolean,errorText:String,loadingText:String,finishedText:String,immediateCheck:{type:Boolean,default:!0},offset:{type:Number,default:300},direction:{type:String,default:"down"}},mounted:function(){this.scroller=N(this.$el),this.handler(!0),this.immediateCheck&&this.$nextTick(this.check)},destroyed:function(){this.handler(!1)},activated:function(){this.handler(!0)},deactivated:function(){this.handler(!1)},watch:{loading:function(){this.$nextTick(this.check)},finished:function(){this.$nextTick(this.check)}},methods:{check:function(){if(!(this.loading||this.finished||this.error)){var t=this.$el,e=this.scroller,n=B(e);if(n&&"none"!==window.getComputedStyle(t).display&&null!==t.offsetParent){var i=this.offset,r=this.direction;(function(){if(t===e){var o=I(t);if("up"===r)return o<=i;var a=o+n;return e.scrollHeight-a<=i}return"up"===r?I(e)-z(t)<=i:z(t)+B(t)-z(e)-n<=i})()&&(this.$emit("input",!0),this.$emit("load"))}}},clickErrorText:function(){this.$emit("update:error",!1),this.$nextTick(this.check)},handler:function(t){this.binded!==t&&(this.binded=t,(t?b:y)(this.scroller,"scroll",this.check))}},render:function(t){return t("div",{class:Ar()},["down"===this.direction&&this.slots(),this.loading&&t("div",{class:Ar("loading"),key:"loading"},[this.slots("loading")||[t(Q,{class:Ar("loading-icon")}),t("span",{class:Ar("loading-text")},[this.loadingText||Er("loading")])]]),this.finished&&this.finishedText&&t("div",{class:Ar("finished-text")},[this.finishedText]),this.error&&this.errorText&&t("div",{on:{click:this.clickErrorText},class:Ar("error-text")},[this.errorText]),"up"===this.direction&&this.slots()])}}),Ir=n(8),zr=Object(a.k)("nav-bar"),Br=zr[0],Lr=zr[1];function Dr(t,e,n,i){return t("div",o()([{class:[Lr({fixed:e.fixed}),{"van-hairline--bottom":e.border}],style:{zIndex:e.zIndex}},u(i)]),[t("div",{class:Lr("left"),on:{click:i.listeners["click-left"]||a.i}},[n.left?n.left():[e.leftArrow&&t(H,{class:Lr("arrow"),attrs:{name:"arrow-left"}}),e.leftText&&t("span",{class:Lr("text")},[e.leftText])]]),t("div",{class:[Lr("title"),"van-ellipsis"]},[n.title?n.title():e.title]),t("div",{class:Lr("right"),on:{click:i.listeners["click-right"]||a.i}},[n.right?n.right():e.rightText&&t("span",{class:Lr("text")},[e.rightText])])])}Dr.props={title:String,fixed:Boolean,leftText:String,rightText:String,leftArrow:Boolean,border:{type:Boolean,default:!0},zIndex:{type:Number,default:1}};var Mr=Br(Dr),Pr=Object(a.k)("notice-bar"),Fr=Pr[0],Rr=Pr[1],Ur=Fr({props:{text:String,mode:String,color:String,leftIcon:String,wrapable:Boolean,background:String,delay:{type:[String,Number],default:1},scrollable:{type:Boolean,default:!0},speed:{type:Number,default:50}},data:function(){return{wrapWidth:0,firstRound:!0,duration:0,offsetWidth:0,showNoticeBar:!0,animationClass:""}},watch:{text:{handler:function(){var t=this;this.$nextTick(function(){var e=t.$refs,n=e.wrap,i=e.content;if(n&&i){var r=n.getBoundingClientRect().width,o=i.getBoundingClientRect().width;t.scrollable&&o>r&&(t.wrapWidth=r,t.offsetWidth=o,t.duration=o/t.speed,t.animationClass=Rr("play"))}})},immediate:!0}},methods:{onClickIcon:function(){"closeable"===this.mode&&(this.showNoticeBar=!1,this.$emit("close"))},onAnimationEnd:function(){var t=this;this.firstRound=!1,this.$nextTick(function(){t.duration=(t.offsetWidth+t.wrapWidth)/t.speed,t.animationClass=Rr("play--infinite")})}},render:function(t){var e=this,n=this.mode,i="closeable"===n?"cross":"link"===n?"arrow":"",r={color:this.color,background:this.background},o={paddingLeft:this.firstRound?0:this.wrapWidth+"px",animationDelay:(this.firstRound?this.delay:0)+"s",animationDuration:this.duration+"s"};return t("div",{directives:[{name:"show",value:this.showNoticeBar}],class:Rr({withicon:n,wrapable:this.wrapable}),style:r,on:{click:function(){e.$emit("click")}}},[this.leftIcon&&t(H,{class:Rr("left-icon"),attrs:{name:this.leftIcon}}),t("div",{ref:"wrap",class:Rr("wrap")},[t("div",{ref:"content",class:[Rr("content"),this.animationClass,{"van-ellipsis":!this.scrollable&&!this.wrapable}],style:o,on:{animationend:this.onAnimationEnd,webkitAnimationEnd:this.onAnimationEnd}},[this.slots()||this.text])]),i&&t(H,{class:Rr("right-icon"),attrs:{name:i},on:{click:this.onClickIcon}})])}}),Vr=Object(a.k)("notify"),Hr=Vr[0],qr=Vr[1];function Wr(t,e,n,i){var r={color:e.color,background:e.background};return t(tt,o()([{attrs:{value:e.value,position:"top",overlay:!1,lockScroll:!1},style:r,class:[qr(),e.className],on:{input:function(t){d(i,"input",t)}}},u(i)]),[e.message])}Wr.props=Object(i.a)({},L.props,{className:null,message:[String,Number],color:{type:String,default:on.e},background:{type:String,default:on.d},duration:{type:Number,default:3e3}});var Yr,Xr,Kr=Hr(Wr);function Qr(t){var e;if(!a.h)return Xr||(Xr=h(Kr)),t=Object(i.a)({},Qr.currentOptions,(e=t,Object(a.g)(e)?e:{message:e})),Object(i.a)(Xr,t),clearTimeout(Yr),t.duration&&t.duration>0&&(Yr=setTimeout(Qr.clear,t.duration)),Xr}function Gr(){return{value:!0,message:"",color:on.e,background:on.d,duration:3e3,className:""}}Qr.clear=function(){Xr&&(Xr.value=!1)},Qr.currentOptions=Gr(),Qr.setDefaultOptions=function(t){Object(i.a)(Qr.currentOptions,t)},Qr.resetDefaultOptions=function(){Qr.currentOptions=Gr()},Qr.install=function(){s.default.use(Kr)},s.default.prototype.$notify=Qr;var Jr=Qr,Zr=Object(a.k)("key"),to=Zr[0],eo=Zr[1],no=to({props:{type:Array,text:[String,Number]},data:function(){return{active:!1}},computed:{className:function(){var t=this.type.slice(0);return this.active&&t.push("active"),eo(t)}},methods:{onFocus:function(){this.active=!0,this.$emit("press",this.text)},onBlur:function(t){k(t,!0),this.active=!1}},render:function(t){var e=this.onBlur;return t("i",{class:["van-hairline",this.className],on:{touchstart:this.onFocus,touchmove:e,touchend:e,touchcancel:e}},[this.text])}}),io=Object(a.k)("number-keyboard"),ro=io[0],oo=io[1],ao=io[2],so=["blue","big"],co=["delete","big","gray"],lo=ro({props:{show:Boolean,title:String,closeButtonText:String,deleteButtonText:String,safeAreaInsetBottom:Boolean,theme:{type:String,default:"default"},extraKey:{type:String,default:""},zIndex:{type:Number,default:100},transition:{type:Boolean,default:!0},showDeleteKey:{type:Boolean,default:!0},hideOnClickOutside:{type:Boolean,default:!0}},mounted:function(){this.handler(!0)},destroyed:function(){this.handler(!1)},activated:function(){this.handler(!0)},deactivated:function(){this.handler(!1)},watch:{show:function(){this.transition||this.$emit(this.show?"show":"hide")}},computed:{keys:function(){for(var t=[],e=1;e<=9;e++)t.push({text:e});switch(this.theme){case"default":t.push({text:this.extraKey,type:["gray"]},{text:0},{text:this.deleteText,type:["gray","delete"]});break;case"custom":t.push({text:0,type:["middle"]},{text:this.extraKey})}return t},deleteText:function(){return this.deleteButtonText||ao("delete")}},methods:{handler:function(t){this.$isServer||t!==this.handlerStatus&&this.hideOnClickOutside&&(this.handlerStatus=t,document.body[(t?"add":"remove")+"EventListener"]("touchstart",this.onBlur))},onBlur:function(){this.$emit("blur")},onClose:function(){this.$emit("close"),this.onBlur()},onAnimationEnd:function(){this.$emit(this.show?"show":"hide")},onPress:function(t){""!==t&&(t===this.deleteText?this.$emit("delete"):t===this.closeButtonText?this.onClose():this.$emit("input",t))}},render:function(t){var e=this.title,n=this.theme,i=this.onPress,r=this.closeButtonText,o=this.slots("title-left"),a=r&&"default"===n,s=e||a||o;return t("transition",{attrs:{name:this.transition?"van-slide-up":""}},[t("div",{directives:[{name:"show",value:this.show}],style:{zIndex:this.zIndex},class:oo([n,{"safe-area-inset-bottom":this.safeAreaInsetBottom}]),on:{touchstart:x,animationend:this.onAnimationEnd,webkitAnimationEnd:this.onAnimationEnd}},[s&&t("div",{class:[oo("title"),"van-hairline--top"]},[o&&t("span",{class:oo("title-left")},[o]),e&&t("span",[e]),a&&t("span",{class:oo("close"),on:{click:this.onClose}},[r])]),t("div",{class:oo("body")},[this.keys.map(function(e){return t(no,{key:e.text,attrs:{text:e.text,type:e.type},on:{press:i}})})]),"custom"===n&&t("div",{class:oo("sidebar")},[t(no,{attrs:{text:this.deleteText,type:co},on:{press:i}}),t(no,{attrs:{text:r,type:so},on:{press:i}})])])])}}),uo=Object(a.k)("pagination"),ho=uo[0],fo=uo[1],po=uo[2];function vo(t,e,n){return{number:t,text:e,active:n}}var mo=ho({props:{value:Number,prevText:String,nextText:String,pageCount:Number,totalItems:Number,forceEllipses:Boolean,mode:{type:String,default:"multi"},itemsPerPage:{type:Number,default:10},showPageSize:{type:Number,default:5}},computed:{count:function(){var t=this.pageCount||Math.ceil(this.totalItems/this.itemsPerPage);return Math.max(1,t)},pages:function(){var t=[],e=this.count;if("multi"!==this.mode)return t;var n=1,i=e,r=void 0!==this.showPageSize&&this.showPageSizee&&(n=(i=e)-this.showPageSize+1);for(var o=n;o<=i;o++){var a=vo(o,o,o===this.value);t.push(a)}if(r&&this.showPageSize>0&&this.forceEllipses){if(n>1){var s=vo(n-1,"...",!1);t.unshift(s)}if(i=0&&t<=100}},showPivot:{type:Boolean,default:!0},color:{type:String,default:on.a},textColor:{type:String,default:on.e}},data:function(){return{pivotWidth:0,progressWidth:0}},mounted:function(){this.getWidth()},watch:{showPivot:function(){this.getWidth()},pivotText:function(){this.getWidth()}},methods:{getWidth:function(){var t=this;this.$nextTick(function(){t.progressWidth=t.$el.offsetWidth,t.pivotWidth=t.$refs.pivot?t.$refs.pivot.offsetWidth:0})}},render:function(t){var e=this.pivotText,n=this.percentage,i=Object(a.d)(e)?e:n+"%",r=this.showPivot&&i,o=this.inactive?"#cacaca":this.color,s={color:this.textColor,background:this.pivotColor||o},c={background:o,width:(this.progressWidth-this.pivotWidth)*n/100+"px"};return t("div",{class:jo()},[t("span",{class:jo("portion",{"with-pivot":r}),style:c},[r&&t("span",{ref:"pivot",style:s,class:jo("pivot")},[i])])])}}),Eo=Object(a.k)("pull-refresh"),No=Eo[0],Io=Eo[1],zo=Eo[2],Bo=["pulling","loosing","success"],Lo=No({mixins:[v],props:{disabled:Boolean,successText:String,pullingText:String,loosingText:String,loadingText:String,value:{type:Boolean,required:!0},successDuration:{type:Number,default:500},animationDuration:{type:Number,default:300},headHeight:{type:Number,default:50}},data:function(){return{status:"normal",height:0,duration:0}},computed:{untouchable:function(){return"loading"===this.status||"success"===this.status||this.disabled}},watch:{value:function(t){var e=this;this.duration=this.animationDuration,!t&&this.successText?(this.status="success",setTimeout(function(){e.setStatus(0)},this.successDuration)):this.setStatus(t?this.headHeight:0,t)}},mounted:function(){this.scrollEl=N(this.$el)},methods:{onTouchStart:function(t){!this.untouchable&&this.getCeiling()&&(this.duration=0,this.touchStart(t))},onTouchMove:function(t){this.untouchable||(this.touchMove(t),!this.ceiling&&this.getCeiling()&&(this.duration=0,this.startY=t.touches[0].clientY,this.deltaY=0),this.ceiling&&this.deltaY>=0&&"vertical"===this.direction&&(this.setStatus(this.ease(this.deltaY)),k(t)))},onTouchEnd:function(){!this.untouchable&&this.ceiling&&this.deltaY&&(this.duration=this.animationDuration,"loosing"===this.status?(this.setStatus(this.headHeight,!0),this.$emit("input",!0),this.$emit("refresh")):this.setStatus(0))},getCeiling:function(){return this.ceiling=0===I(this.scrollEl),this.ceiling},ease:function(t){var e=this.headHeight;return t=a?"full":r+.5>=a&&s?"half":"void"));function x(t){v||p||(d(i,"input",t),d(i,"change",t))}return t("div",o()([{class:Po()},u(i),{on:{touchmove:function(t){if(!p&&!v&&document.elementFromPoint){k(t);var e=t.touches[0],n=e.clientX,i=e.clientY,r=document.elementFromPoint(n,i);if(r&&r.dataset){var o=r.dataset.score;o&&x(+o)}}}}}]),[b.map(function(n,i){return function(n,i){var r="full"===n,o="void"===n;return t("div",{key:i,class:Po("item")},[t(H,{attrs:{name:r?c:f,size:l+"px","data-score":i+1,color:v?g:r?h:m},class:Po("icon"),on:{click:function(){x(i+1)}}}),e.allowHalf&&t(H,{attrs:{name:o?f:c,size:l+"px","data-score":i+.5,color:v?g:o?m:h},class:Po("icon","half"),on:{click:function(){x(i+.5)}}})])}(n,i)})])}Fo.props={value:Number,readonly:Boolean,disabled:Boolean,allowHalf:Boolean,size:{type:Number,default:20},icon:{type:String,default:"star"},voidIcon:{type:String,default:"star-o"},color:{type:String,default:"#ffd21e"},voidColor:{type:String,default:"#c7c7c7"},disabledColor:{type:String,default:"#bdbdbd"},count:{type:Number,default:5}};var Ro=Mo(Fo),Uo=Object(a.k)("row"),Vo=Uo[0],Ho=Uo[1],qo=Vo({props:{type:String,align:String,justify:String,tag:{type:String,default:"div"},gutter:{type:[Number,String],default:0}},render:function(t){var e,n=this.align,i=this.justify,r="flex"===this.type,o="-"+Number(this.gutter)/2+"px",a=this.gutter?{marginLeft:o,marginRight:o}:{};return t(this.tag,{style:a,class:Ho((e={flex:r},e["align-"+n]=r&&n,e["justify-"+i]=r&&i,e))},[this.slots()])}}),Wo=Object(a.k)("search"),Yo=Wo[0],Xo=Wo[1],Ko=Wo[2];function Qo(t,e,n,r){var a={attrs:r.data.attrs,on:Object(i.a)({},r.listeners,{input:function(t){d(r,"input",t)},keypress:function(t){13===t.keyCode&&(k(t),d(r,"search",e.value)),d(r,"keypress",t)}})},s=u(r);return delete s.attrs,t("div",o()([{class:Xo({"show-action":e.showAction}),style:{background:e.background}},s]),[t("div",{class:Xo("content",e.shape)},[n.label||e.label?t("div",{class:Xo("label")},[n.label?n.label():e.label]):null,t(Lt,o()([{attrs:{clearable:!0,type:"search",value:e.value,border:!1,leftIcon:"search"},scopedSlots:{"left-icon":n["left-icon"]}},a]))]),function(){if(!e.showAction)return null;return t("div",{class:Xo("action")},[n.action?n.action():t("div",{on:{click:function(){d(r,"input",""),d(r,"cancel")}}},[Ko("cancel")])])}()])}Qo.props={value:String,label:String,showAction:Boolean,shape:{type:String,default:"square"},background:{type:String,default:"#fff"}};var Go=Yo(Qo),Jo=Object(a.k)("sku-header"),Zo=Jo[0],ta=Jo[1];function ea(t,e,n,i){var r=e.sku,a=e.goods,s=e.skuEventBus,c=function(t,e){var n=e.s1;if(n){var i=t.tree.filter(function(t){return"s1"===t.k_s})[0]||{};if(i.v){var r=i.v.filter(function(t){return t.id===n})[0];if(r)return r.imgUrl||r.img_url}}}(r,e.selectedSku)||a.picture;return t("div",o()([{class:[ta(),"van-hairline--bottom"]},u(i)]),[t("div",{class:ta("img-wrap"),on:{click:function(){s.$emit("sku:previewImage",c)}}},[t("img",{attrs:{src:c}})]),t("div",{class:ta("goods-info")},[t("div",{class:"van-sku__goods-name van-ellipsis"},[a.title]),n.default&&n.default(),t(H,{attrs:{name:"close"},class:"van-sku__close-icon",on:{click:function(){s.$emit("sku:close")}}})])])}ea.props={sku:Object,goods:Object,skuEventBus:Object,selectedSku:Object};var na=Zo(ea),ia=Object(a.k)("sku-row"),ra=ia[0],oa=ia[1];function aa(t,e,n,i){return t("div",o()([{class:oa()},u(i)]),[t("div",{class:oa("title")},[e.skuRow.k,":"]),n.default&&n.default()])}aa.props={skuRow:Object};var sa=ra(aa),ca=n(5),la=function(t){var e={};return t.forEach(function(t){e[t.k_s]=t.v}),e},ua=function(t,e){var n=Object.keys(e).filter(function(t){return e[t]!==ca.b});return t.length===n.length},da=function(t,e){return t.filter(function(t){return Object.keys(e).every(function(n){return String(t[n])===String(e[n])})})[0]},ha=function(t,e){var n=la(t);return Object.keys(e).reduce(function(t,i){var r=n[i],o=e[i];if(o!==ca.b){var a=r.filter(function(t){return t.id===o})[0];a&&t.push(a)}return t},[])},fa=function(t,e,n){var r,o=n.key,a=n.valueId,s=Object(i.a)({},e,((r={})[o]=a,r)),c=Object.keys(s).filter(function(t){return s[t]!==ca.b});return t.filter(function(t){return c.every(function(e){return String(s[e])===String(t[e])})}).reduce(function(t,e){return t+=e.stock_num},0)>0},pa={normalizeSkuTree:la,getSkuComb:da,getSelectedSkuValues:ha,isAllSelected:ua,isSkuChoosable:fa},va=(0,Object(a.k)("sku-row-item")[0])({props:{skuList:Array,skuValue:Object,skuKeyStr:String,skuEventBus:Object,selectedSku:Object},computed:{choosable:function(){return fa(this.skuList,this.selectedSku,{key:this.skuKeyStr,valueId:this.skuValue.id})}},methods:{onSelect:function(){this.choosable&&this.skuEventBus.$emit("sku:select",Object(i.a)({},this.skuValue,{skuKeyStr:this.skuKeyStr}))}},render:function(t){return t("span",{class:["van-sku-row__item",{"van-sku-row__item--active":this.skuValue.id===this.selectedSku[this.skuKeyStr],"van-sku-row__item--disabled":!this.choosable}],on:{click:this.onSelect}},[this.skuValue.name])}}),ma=Object(a.k)("stepper"),ga=ma[0],ba=ma[1],ya=ga({props:{value:null,integer:Boolean,disabled:Boolean,inputWidth:String,asyncChange:Boolean,disableInput:Boolean,min:{type:[String,Number],default:1},max:{type:[String,Number],default:1/0},step:{type:[String,Number],default:1},defaultValue:{type:[String,Number],default:1}},data:function(){var t=this.range(Object(a.d)(this.value)?this.value:this.defaultValue);return t!==+this.value&&this.$emit("input",t),{currentValue:t}},computed:{minusDisabled:function(){return this.disabled||this.currentValue<=this.min},plusDisabled:function(){return this.disabled||this.currentValue>=this.max}},watch:{value:function(t){t!==this.currentValue&&(this.currentValue=this.format(t))},currentValue:function(t){this.$emit("input",t),this.$emit("change",t)}},methods:{format:function(t){return""===(t=String(t).replace(/[^0-9.-]/g,""))?0:this.integer?Math.floor(t):+t},range:function(t){return Math.max(Math.min(this.max,this.format(t)),this.min)},onInput:function(t){var e=t.target.value,n=this.format(e);this.asyncChange?(t.target.value=this.currentValue,this.$emit("input",n),this.$emit("change",n)):(+e!==n&&(t.target.value=n),this.currentValue=n)},onChange:function(t){if(this[t+"Disabled"])this.$emit("overlimit",t);else{var e="minus"===t?-this.step:+this.step,n=Math.round(100*(this.currentValue+e))/100;this.asyncChange?(this.$emit("input",n),this.$emit("change",n)):this.currentValue=this.range(n),this.$emit(t)}},onFocus:function(t){this.$emit("focus",t)},onBlur:function(t){this.currentValue=this.range(this.currentValue),this.$emit("blur",t),0===this.currentValue&&(t.target.value=this.currentValue)}},render:function(t){var e=this,n=function(t){return function(){e.onChange(t)}};return t("div",{class:ba()},[t("button",{class:ba("minus",{disabled:this.minusDisabled}),on:{click:n("minus")}}),t("input",{attrs:{type:"number",disabled:this.disabled||this.disableInput},class:ba("input"),domProps:{value:this.currentValue},style:{width:this.inputWidth},on:{input:this.onInput,focus:this.onFocus,blur:this.onBlur}}),t("button",{class:ba("plus",{disabled:this.plusDisabled}),on:{click:n("plus")}})])}}),xa=Object(a.k)("sku-stepper")[0],ka=ca.a.QUOTA_LIMIT,wa=ca.a.STOCK_LIMIT,Ca=xa({props:{quota:Number,quotaUsed:Number,hideStock:Boolean,skuEventBus:Object,skuStockNum:Number,selectedSku:Object,selectedNum:Number,stepperTitle:String,hideQuotaText:Boolean,selectedSkuComb:Object,disableStepperInput:Boolean,customStepperConfig:Object},data:function(){return{currentNum:this.selectedNum,limitType:wa}},watch:{currentNum:function(t){this.skuEventBus.$emit("sku:numChange",t)},stepperLimit:function(t){t0&&(n="每人限购"+this.quota+"件"),n},stepperLimit:function(){var t,e=this.quota-this.quotaUsed;return this.quota>0&&e<=this.stock?(t=e<0?0:e,this.limitType=ka):(t=this.stock,this.limitType=wa),t}},methods:{setCurrentNum:function(t){this.currentNum=t},onOverLimit:function(t){this.skuEventBus.$emit("sku:overLimit",{action:t,limitType:this.limitType,quota:this.quota,quotaUsed:this.quotaUsed})},onChange:function(t){var e=this.customStepperConfig.handleStepperChange;e&&e(t),this.$emit("change",t)}},render:function(t){var e=this;return t("div",{class:"van-sku-stepper-stock"},[t("div",{class:"van-sku-stepper-container"},[t("div",{class:"van-sku__stepper-title"},[this.stepperTitle||"购买数量",":"]),t(ya,{class:"van-sku__stepper",attrs:{max:this.stepperLimit,disableInput:this.disableStepperInput},on:{overlimit:this.onOverLimit,change:this.onChange},model:{value:e.currentNum,callback:function(t){e.currentNum=t}}})]),!this.hideStock&&t("div",{class:"van-sku__stock"},[this.stockText]),!this.hideQuotaText&&this.quotaText&&t("div",{class:"van-sku__quota"},[this.quotaText])])}});function Sa(t){return/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i.test(t)}var _a=Object(a.k)("uploader"),Oa=_a[0],$a=_a[1],Ta=Oa({inheritAttrs:!1,props:{disabled:Boolean,beforeRead:Function,afterRead:Function,accept:{type:String,default:"image/*"},resultType:{type:String,default:"dataUrl"},maxSize:{type:Number,default:Number.MAX_VALUE}},computed:{detail:function(){return{name:this.$attrs.name||""}}},methods:{onChange:function(t){var e=this,n=t.target.files;!this.disabled&&n.length&&(!(n=1===n.length?n[0]:[].slice.call(n,0))||this.beforeRead&&!this.beforeRead(n,this.detail)?this.resetInput():Array.isArray(n)?Promise.all(n.map(this.readFile)).then(function(t){var i=!1,r=n.map(function(r,o){return r.size>e.maxSize&&(i=!0),{file:n[o],content:t[o]}});e.onAfterRead(r,i)}):this.readFile(n).then(function(t){e.onAfterRead({file:n,content:t},n.size>e.maxSize)}))},readFile:function(t){var e=this;return new Promise(function(n){var i=new FileReader;i.onload=function(t){n(t.target.result)},"dataUrl"===e.resultType?i.readAsDataURL(t):"text"===e.resultType&&i.readAsText(t)})},onAfterRead:function(t,e){e?this.$emit("oversize",t):this.afterRead&&this.afterRead(t,this.detail),this.resetInput()},resetInput:function(){this.$refs.input&&(this.$refs.input.value="")}},render:function(t){var e=this.accept,n=this.disabled;return t("div",{class:$a()},[this.slots(),t("input",{attrs:Object(i.a)({},this.$attrs,{type:"file",accept:e,disabled:n}),ref:"input",class:$a("input"),on:{change:this.onChange}})])}}),ja=Object(a.k)("sku-img-uploader"),Aa=ja[0],Ea=ja[1],Na=Aa({props:{value:String,uploadImg:Function,maxSize:{type:Number,default:6}},data:function(){return{paddingImg:""}},computed:{imgList:function(){return this.value&&!this.paddingImg?[this.value]:[]}},methods:{afterReadFile:function(t){var e=this;this.paddingImg=t.content,this.uploadImg(t.file,t.content).then(function(t){e.$emit("input",t),e.$nextTick(function(){e.paddingImg=""})}).catch(function(){e.paddingImg=""})},onOversize:function(){this.$toast("最大可上传图片为"+this.maxSize+"MB,请尝试压缩图片尺寸")}},render:function(t){var e=this,n=this.imgList,i=this.paddingImg,r=(i||n.length>0)&&t("div",{class:"van-clearfix"},[n.map(function(n){return t("div",{class:Ea("img")},[t("img",{attrs:{src:n}}),t(H,{attrs:{name:"clear"},class:Ea("delete"),on:{click:function(){e.$emit("input","")}}})])}),i&&t("div",{class:Ea("img")},[t("img",{attrs:{src:i}}),t(Q,{attrs:{type:"spinner"},class:Ea("uploading")})])]);return t("div",{class:Ea()},[t(Ta,{attrs:{disabled:!!i,afterRead:this.afterReadFile,maxSize:1024*this.maxSize*1024},on:{oversize:this.onOversize}},[t("div",{class:Ea("header")},[i?t("div",["正在上传..."]):[t(H,{attrs:{name:"photograph"}}),t("span",{class:"label"},[this.value?"重拍":"拍照"," 或 "]),t(H,{attrs:{name:"photo"}}),t("span",{class:"label"},[this.value?"重新选择照片":"选择照片"])]])]),r])}}),Ia=Object(a.k)("sku-messages"),za=Ia[0],Ba=Ia[1],La={id_no:"输入身份证号码",text:"输入文本",tel:"输入数字",email:"输入邮箱",date:"点击选择日期",time:"点击选择时间",textarea:"点击填写段落文本",mobile:"输入手机号码"},Da=za({props:{messages:Array,messageConfig:Object,goodsId:[Number,String]},data:function(){return{messageValues:this.resetMessageValues(this.messages)}},watch:{messages:function(t){this.messageValues=this.resetMessageValues(t)}},methods:{resetMessageValues:function(t){return(t||[]).map(function(){return{value:""}})},getType:function(t){return 1==+t.multiple?"textarea":"id_no"===t.type?"text":t.datetime>0?"datetime-local":t.type},getMessages:function(){var t=this,e={};return this.messageValues.forEach(function(n,i){var r=n.value;t.messages[i].datetime>0&&(r=r.replace(/T/g," ")),e["message_"+i]=r}),e},getCartMessages:function(){var t=this,e={};return this.messageValues.forEach(function(n,i){var r=n.value,o=t.messages[i];o.datetime>0&&(r=r.replace(/T/g," ")),e[o.name]=r}),e},getPlaceholder:function(t){var e=1==+t.multiple?"textarea":t.type;return(this.messageConfig.placeholderMap||{})[e]||La[e]},validateMessages:function(){for(var t=this.messageValues,e=0;e18))return"请填写正确的身份证号码"}}}},render:function(t){var e=this;return t(kn,{class:Ba()},[this.messages.map(function(n,i){return"image"===n.type?t(Et,{class:Ba("image-cell"),attrs:{label:"仅限一张",title:n.name,required:"1"===String(n.required)},key:e.goodsId+"-"+i},[t(Na,{attrs:{uploadImg:e.messageConfig.uploadImg,maxSize:e.messageConfig.uploadMaxSize},model:{value:e.messageValues[i].value,callback:function(t){e.messageValues[i].value=t}}})]):t(Lt,{attrs:{maxlength:"200",label:n.name,required:"1"===String(n.required),placeholder:e.getPlaceholder(n),type:e.getType(n)},key:e.goodsId+"-"+i,model:{value:e.messageValues[i].value,callback:function(t){e.messageValues[i].value=t}}})})])}}),Ma=Object(a.k)("sku-actions"),Pa=Ma[0],Fa=Ma[1];function Ra(t,e,n,i){var r=function(t){return function(){e.skuEventBus.$emit(t)}};return t("div",o()([{class:Fa()},u(i)]),[e.showAddCartBtn&&t(te,{attrs:{bottomAction:!0,text:"加入购物车"},on:{click:r("sku:addCart")}}),t(te,{attrs:{type:"primary",bottomAction:!0,text:e.buyText||"立即购买"},on:{click:r("sku:buy")}})])}Ra.props={buyText:String,skuEventBus:Object,showAddCartBtn:Boolean};var Ua=Pa(Ra),Va=Object(a.k)("sku")[0],Ha=ca.a.QUOTA_LIMIT,qa=Va({props:{sku:Object,goods:Object,quota:Number,value:Boolean,buyText:String,quotaUsed:Number,goodsId:[Number,String],hideStock:Boolean,hideQuotaText:Boolean,stepperTitle:String,getContainer:Function,customSkuValidator:Function,closeOnClickOverlay:Boolean,disableStepperInput:Boolean,resetStepperOnHide:Boolean,resetSelectedSkuOnHide:Boolean,initialSku:{type:Object,default:function(){return{}}},showSoldoutSku:{type:Boolean,default:!0},showAddCartBtn:{type:Boolean,default:!0},bodyOffsetTop:{type:Number,default:200},messageConfig:{type:Object,default:function(){return{placeholderMap:{},uploadImg:function(){return Promise.resolve()},uploadMaxSize:5}}},customStepperConfig:{type:Object,default:function(){return{}}}},data:function(){return{selectedSku:{},selectedNum:1,show:this.value}},watch:{show:function(t){if(this.$emit("input",t),!t){var e=ha(this.sku.tree,this.selectedSku);this.$emit("sku-close",{selectedSkuValues:e,selectedNum:this.selectedNum,selectedSkuComb:this.selectedSkuComb}),this.resetStepperOnHide&&this.resetStepper(),this.resetSelectedSkuOnHide&&this.resetSelectedSku(this.skuTree)}},value:function(t){this.show=t},skuTree:function(t){this.resetSelectedSku(t)}},computed:{skuGroupClass:function(){return["van-sku-group-container","van-hairline--bottom",{"van-sku-group-container--hide-soldout":!this.showSoldoutSku}]},bodyStyle:function(){if(!this.$isServer)return{maxHeight:window.innerHeight-this.bodyOffsetTop+"px"}},isSkuCombSelected:function(){return ua(this.sku.tree,this.selectedSku)},isSkuEmpty:function(){return 0===Object.keys(this.sku).length},hasSku:function(){return!this.sku.none_sku},selectedSkuComb:function(){return this.hasSku?this.isSkuCombSelected?da(this.sku.list,this.selectedSku):null:{id:this.sku.collection_id,price:Math.round(100*this.sku.price),stock_num:this.sku.stock_num}},price:function(){return this.selectedSkuComb?(this.selectedSkuComb.price/100).toFixed(2):this.sku.price},skuTree:function(){return this.sku.tree||[]},imageList:function(){var t=[this.goods.picture];if(this.skuTree.length>0){var e=this.skuTree.filter(function(t){return"s1"===t.k_s})[0]||{};if(!e.v)return;e.v.forEach(function(e){var n=e.imgUrl||e.img_url;n&&t.push(n)})}return t}},created:function(){var t=new s.default;this.skuEventBus=t,t.$on("sku:close",this.onClose),t.$on("sku:select",this.onSelect),t.$on("sku:numChange",this.onNumChange),t.$on("sku:previewImage",this.onPreviewImage),t.$on("sku:overLimit",this.onOverLimit),t.$on("sku:addCart",this.onAddCart),t.$on("sku:buy",this.onBuy),this.resetStepper(),this.resetSelectedSku(this.skuTree),this.$emit("after-sku-create",t)},methods:{resetStepper:function(){var t=this.$refs.skuStepper,e=this.initialSku.selectedNum,n=Object(a.d)(e)?e:1;t?t.setCurrentNum(n):this.selectedNum=n},resetSelectedSku:function(t){var e=this;this.selectedSku={},t.forEach(function(t){e.selectedSku[t.k_s]=e.initialSku[t.k_s]||ca.b}),t.forEach(function(t){var n=t.k_s,i=t.v[0].id;1===t.v.length&&fa(e.sku.list,e.selectedSku,{key:n,valueId:i})&&(e.selectedSku[n]=i)})},getSkuMessages:function(){return this.$refs.skuMessages?this.$refs.skuMessages.getMessages():{}},getSkuCartMessages:function(){return this.$refs.skuMessages?this.$refs.skuMessages.getCartMessages():{}},validateSkuMessages:function(){return this.$refs.skuMessages?this.$refs.skuMessages.validateMessages():""},validateSku:function(){if(0===this.selectedNum)return"商品已经无法购买啦";if(this.isSkuCombSelected)return this.validateSkuMessages();if(this.customSkuValidator){var t=this.customSkuValidator(this);if(t)return t}return"请先选择商品规格"},onClose:function(){this.show=!1},onSelect:function(t){var e,n;this.selectedSku=this.selectedSku[t.skuKeyStr]===t.id?Object(i.a)({},this.selectedSku,((e={})[t.skuKeyStr]=ca.b,e)):Object(i.a)({},this.selectedSku,((n={})[t.skuKeyStr]=t.id,n)),this.$emit("sku-selected",{skuValue:t,selectedSku:this.selectedSku,selectedSkuComb:this.selectedSkuComb})},onNumChange:function(t){this.selectedNum=t},onPreviewImage:function(t){var e=this,n=this.imageList.findIndex(function(e){return e===t}),i={index:n,imageList:this.imageList,indexImage:t};this.$emit("preview-on",i),_r({images:this.imageList,startPosition:n,onClose:function(){e.$emit("preview-close",i)}})},onOverLimit:function(t){var e=t.action,n=t.limitType,i=t.quota,r=t.quotaUsed,o=this.customStepperConfig.handleOverLimit;if(o)o(t);else if("minus"===e)Xt("至少选择一件");else if("plus"===e)if(n===Ha){var a="限购"+i+"件";r>0&&(a+=",你已购买"+r+"件"),Xt(a)}else Xt("库存不足")},onAddCart:function(){this.onBuyOrAddCart("add-cart")},onBuy:function(){this.onBuyOrAddCart("buy-clicked")},onBuyOrAddCart:function(t){var e=this.validateSku();e?Xt(e):this.$emit(t,this.getSkuData())},getSkuData:function(){return{goodsId:this.goodsId,selectedNum:this.selectedNum,selectedSkuComb:this.selectedSkuComb,messages:this.getSkuMessages(),cartMessages:this.getSkuCartMessages()}}},render:function(t){var e=this;if(!this.isSkuEmpty){var n=this.sku,i=this.goods,r=this.price,o=this.skuEventBus,a=this.selectedSku,s=this.selectedNum,c=this.stepperTitle,l=this.hideQuotaText,u=this.selectedSkuComb,d={price:r,selectedNum:s,skuEventBus:o,selectedSku:a,selectedSkuComb:u},h=function(t){return e.slots(t,d)},f=h("sku-header")||t(na,{attrs:{sku:n,goods:i,skuEventBus:o,selectedSku:a}},[h("sku-header-price")||t("div",{class:"van-sku__goods-price"},[t("span",{class:"van-sku__price-symbol"},["¥"]),t("span",{class:"van-sku__price-num"},[r])])]),p=h("sku-group")||this.hasSku&&t("div",{class:this.skuGroupClass},[this.skuTree.map(function(e){return t(sa,{attrs:{skuRow:e}},[e.v.map(function(i){return t(va,{attrs:{skuList:n.list,skuValue:i,selectedSku:a,skuEventBus:o,skuKeyStr:e.k_s}})})])})]),v=h("sku-stepper")||t(Ca,{ref:"skuStepper",attrs:{quota:this.quota,hideStock:this.hideStock,quotaUsed:this.quotaUsed,skuEventBus:o,selectedNum:s,selectedSku:a,stepperTitle:c,skuStockNum:n.stock_num,hideQuotaText:l,selectedSkuComb:u,disableStepperInput:this.disableStepperInput,customStepperConfig:this.customStepperConfig},on:{change:function(t){e.$emit("stepper-change",t)}}}),m=h("sku-messages")||t(Da,{ref:"skuMessages",attrs:{goodsId:this.goodsId,messageConfig:this.messageConfig,messages:n.messages}}),g=h("sku-actions")||t(Ua,{attrs:{buyText:this.buyText,skuEventBus:o,showAddCartBtn:this.showAddCartBtn}});return t(tt,{attrs:{position:"bottom",getContainer:this.getContainer,closeOnClickOverlay:this.closeOnClickOverlay},class:"van-sku-container",model:{value:e.show,callback:function(t){e.show=t}}},[f,t("div",{class:"van-sku-body",style:this.bodyStyle},[h("sku-body-top"),p,h("extra-sku-group"),v,m]),g])}}});qa.SkuActions=Ua,qa.SkuHeader=na,qa.SkuMessages=Da,qa.SkuStepper=Ca,qa.SkuRow=sa,qa.SkuRowItem=va,qa.skuHelper=pa,qa.skuConstants=ca.c;var Wa=qa,Ya=Object(a.k)("slider"),Xa=Ya[0],Ka=Ya[1],Qa=Xa({mixins:[v],props:{min:Number,value:Number,disabled:Boolean,vertical:Boolean,activeColor:String,inactiveColor:String,max:{type:Number,default:100},step:{type:Number,default:1},barHeight:{type:String,default:"2px"}},methods:{onTouchStart:function(t){this.disabled||(this.touchStart(t),this.startValue=this.format(this.value))},onTouchMove:function(t){if(k(t,!0),!this.disabled){this.touchMove(t);var e=this.$el.getBoundingClientRect(),n=(this.vertical?this.deltaY:this.deltaX)/(this.vertical?e.height:e.width)*100;this.newValue=this.startValue+n,this.updateValue(this.newValue)}},onTouchEnd:function(){this.disabled||this.updateValue(this.newValue,!0)},onClick:function(t){if(t.stopPropagation(),!this.disabled){var e=this.$el.getBoundingClientRect(),n=(this.vertical?t.clientY-e.top:t.clientX-e.left)/(this.vertical?e.height:e.width)*100;this.updateValue(n,!0)}},updateValue:function(t,e){t=this.format(t),this.$emit("input",t),e&&this.$emit("change",t)},format:function(t){return Math.round(Math.max(this.min,Math.min(t,this.max))/this.step)*this.step}},render:function(t){var e,n=this.vertical,i={background:this.inactiveColor},r=n?"width":"height",o=((e={})[n?"height":"width"]=this.format(this.value)+"%",e[r]=this.barHeight,e.background=this.activeColor,e);return t("div",{style:i,class:Ka({disabled:this.disabled,vertical:n}),on:{click:this.onClick}},[t("div",{class:Ka("bar"),style:o},[t("div",{class:Ka("button-wrapper"),on:{touchstart:this.onTouchStart,touchmove:this.onTouchMove,touchend:this.onTouchEnd,touchcancel:this.onTouchEnd}},[this.slots("button")||t("div",{class:Ka("button")})])])])}}),Ga=Object(a.k)("step"),Ja=Ga[0],Za=Ga[1],ts=Ja({beforeCreate:function(){var t=this.$parent.steps,e=this.$parent.slots().indexOf(this.$vnode);t.splice(-1===e?t.length:e,0,this)},beforeDestroy:function(){var t=this.$parent.steps.indexOf(this);t>-1&&this.$parent.steps.splice(t,1)},computed:{status:function(){var t=this.$parent.steps.indexOf(this),e=this.$parent.active;return ti*r&&i>0?this.open("right"):"left"===t&&e>n*r&&n>0?this.open("left"):this.swipeMove(0)},startDrag:function(t){this.disabled||(this.dragging=!0,this.startOffset=this.offset,this.touchStart(t))},onDrag:function(t){this.disabled||(this.touchMove(t),"horizontal"===this.direction&&(k(t),this.swipeMove(this.deltaX+this.startOffset)))},endDrag:function(){this.disabled||(this.dragging=!1,this.swiping&&this.swipeLeaveTransition(this.offset>0?"left":"right"))},onClick:function(t){void 0===t&&(t="outside"),this.$emit("click",t),this.offset&&(this.onClose?this.onClose(t,this):this.swipeMove(0))}},render:function(t){var e=this,n=function(t,n){return function(i){n&&i.stopPropagation(),e.onClick(t)}},i={transform:"translate3d("+this.offset+"px, 0, 0)",transition:this.dragging?"none":".6s cubic-bezier(0.18, 0.89, 0.32, 1)"};return t("div",{class:ps(),on:{click:n("cell"),touchstart:this.startDrag,touchmove:this.onDrag,touchend:this.endDrag,touchcancel:this.endDrag}},[t("div",{class:ps("wrapper"),style:i,on:{transitionend:function(){e.swiping=!1}}},[this.leftWidth?t("div",{class:ps("left"),on:{click:n("left",!0)}},[this.slots("left")]):null,this.slots(),this.rightWidth?t("div",{class:ps("right"),on:{click:n("right",!0)}},[this.slots("right")]):null])])}}),ms=Object(a.k)("tabbar"),gs=ms[0],bs=ms[1],ys=gs({data:function(){return{items:[]}},props:{value:Number,activeColor:String,safeAreaInsetBottom:Boolean,fixed:{type:Boolean,default:!0},zIndex:{type:Number,default:1}},watch:{items:function(){this.setActiveItem()},value:function(){this.setActiveItem()}},methods:{setActiveItem:function(){var t=this;this.items.forEach(function(e,n){e.active=n===t.value})},onChange:function(t){t!==this.value&&(this.$emit("input",t),this.$emit("change",t))}},render:function(t){return t("div",{style:{zIndex:this.zIndex},class:["van-hairline--top-bottom",bs({fixed:this.fixed,"safe-area-inset-bottom":this.safeAreaInsetBottom})]},[this.slots()])}}),xs=Object(a.k)("tabbar-item"),ks=xs[0],ws=xs[1],Cs=ks({props:Object(i.a)({},Ot,{icon:String,dot:Boolean,info:[String,Number]}),data:function(){return{active:!1}},beforeCreate:function(){this.$parent.items.push(this)},destroyed:function(){this.$parent.items.splice(this.$parent.items.indexOf(this),1)},methods:{onClick:function(t){this.$parent.onChange(this.$parent.items.indexOf(this)),this.$emit("click",t),St(this.$router,this)}},render:function(t){var e=this.icon,n=this.slots,i=this.active,r=i?{color:this.$parent.activeColor}:null;return t("div",{class:ws({active:i}),style:r,on:{click:this.onClick}},[t("div",{class:ws("icon",{dot:this.dot})},[n("icon",{active:i})||e&&t(H,{attrs:{name:e}}),t(R,{attrs:{info:this.info}})]),t("div",{class:ws("text")},[n("default",{active:i})])])}}),Ss=Object(a.k)("tree-select"),_s=Ss[0],Os=Ss[1];function $s(t,e,n,i){var r=e.height,a=e.items,s=e.mainActiveIndex,c=e.activeId,l=(a[s]||{}).children||[];return t("div",o()([{class:Os(),style:{height:r+"px"}},u(i)]),[t("div",{class:Os("nav")},[a.map(function(e,n){return t("div",{key:n,class:["van-ellipsis",Os("nitem",{active:s===n,disabled:e.disabled})],on:{click:function(){e.disabled||d(i,"navclick",n)}}},[e.text])})]),t("div",{class:Os("content")},[l.map(function(e){return t("div",{key:e.id,class:["van-ellipsis",Os("item",{active:c===e.id,disabled:e.disabled})],on:{click:function(){e.disabled||d(i,"itemclick",e)}}},[e.text,c===e.id&&t(H,{attrs:{name:"checked",size:"16px"},class:Os("selected")})])})])])}$s.props={items:Array,mainActiveIndex:Number,activeId:{type:[Number,String],default:0},height:{type:Number,default:300}};var Ts=_s($s),js="@@Waterfall",As=300;function Es(){var t=this;if(!this.el[js].binded){this.el[js].binded=!0,this.scrollEventListener=function(){var t=this.el,e=this.scrollEventTarget;if(!this.disabled){var n=I(e),i=B(e),r=n+i;if(i){(t===e?e.scrollHeight-r0)&&this.cb.upper&&this.cb.upper({target:e,top:n})}}}.bind(this),this.scrollEventTarget=N(this.el);var e=this.el.getAttribute("waterfall-disabled"),n=!1;e&&(this.vm.$watch(e,function(e){t.disabled=e,t.scrollEventListener()}),n=Boolean(this.vm[e])),this.disabled=n;var i=this.el.getAttribute("waterfall-offset");this.offset=Number(i)||As,b(this.scrollEventTarget,"scroll",this.scrollEventListener,!0),this.scrollEventListener()}}function Ns(t){t[js].vm.$nextTick(function(){Es.call(t[js])})}var Is=function(t){return{bind:function(e,n,i){e[js]||(e[js]={el:e,vm:i.context,cb:{}}),e[js].cb[t]=n.value,function(t){var e=t[js];e.vm._isMounted?Ns(t):e.vm.$on("hook:mounted",function(){Ns(t)})}(e)},update:function(t){var e=t[js];e.scrollEventListener&&e.scrollEventListener()},unbind:function(t){var e=t[js];e.scrollEventTarget&&y(e.scrollEventTarget,"scroll",e.scrollEventListener)}}};Is.install=function(t){t.directive("WaterfallLower",Is("lower")),t.directive("WaterfallUpper",Is("upper"))};var zs=Is;n.d(e,"a",function(){return _r}),n.d(e,"b",function(){return $r}),n.d(e,"c",function(){return Ir.a}),n.d(e,"d",function(){return zs});var Bs=[ot,Ae,Ke,wt,Ze,rn,te,mn,Et,kn,Cn,$n,zn,Mn,Un,Yn,Zn,oi,di,bi,Si,Mi,Yi,se,Lt,Ji,ir,cr,H,_r,R,Nr,Q,Mr,Ur,Jr,lo,$,mo,ko,Oo,bt,tt,Ao,Lo,Me,ze,Ro,qo,Go,Wa,Qa,ts,ya,rs,ds,hr,vs,mr,ye,Se,Ti,ys,Cs,Ii,dn,Xt,Ts,Ta],Ls=function(t){Bs.forEach(function(e){t.use(e)})};"undefined"!=typeof window&&window.Vue&&Ls(window.Vue);e.e={install:Ls,version:"1.6.28"}},function(t,e,n){var i=n(29).version;t.exports={"zh-CN":{header:{logo:{image:"https://img.yzcdn.cn/public_files/2017/12/18/fd78cf6bb5d12e2a119d0576bedfd230.png",title:"Vant",version:i,href:"#/"},nav:{"Vue 组件":"https://vant-ui.github.io/vant/v1/","小程序组件":"https://vant-ui.github.io/vant-weapp/",lang:{text:"En",from:"zh-CN",to:"en-US"},github:"https://github.com/youzan/vant"}},nav:[{name:"开发指南",groups:[{list:[{path:"/intro",title:"介绍"},{path:"/quickstart",title:"快速上手"},{path:"/changelog",title:"更新日志"},{path:"/style",title:"内置样式"},{path:"/theme",title:"定制主题"},{path:"/contribution",title:"开发指南"},{path:"/design",title:"设计资源"},{path:"/style-guide",title:"风格指南"},{path:"/demo",title:"示例页面"},{path:"/locale",title:"国际化"}]}]},{name:"组件",showInMobile:!0,groups:[{groupName:"基础组件",icon:"https://img.yzcdn.cn/vant/basic-0401.svg",list:[{path:"/button",title:"Button 按钮"},{path:"/cell",title:"Cell 单元格"},{path:"/icon",title:"Icon 图标"},{path:"/col",title:"Layout 布局"},{path:"/popup",title:"Popup 弹出层"}]},{groupName:"表单组件",icon:"https://img.yzcdn.cn/vant/form-0401.svg",list:[{path:"/checkbox",title:"Checkbox 复选框"},{path:"/datetime-picker",title:"DatetimePicker 时间选择"},{path:"/field",title:"Field 输入框"},{path:"/number-keyboard",title:"NumberKeyboard 数字键盘"},{path:"/password-input",title:"PasswordInput 密码输入框"},{path:"/picker",title:"Picker 选择器"},{path:"/radio",title:"Radio 单选框"},{path:"/rate",title:"Rate 评分"},{path:"/search",title:"Search 搜索"},{path:"/slider",title:"Slider 滑块"},{path:"/stepper",title:"Stepper 步进器"},{path:"/switch",title:"Switch 开关"},{path:"/switch-cell",title:"SwitchCell 开关单元格"},{path:"/uploader",title:"Uploader 图片上传"}]},{groupName:"反馈组件",icon:"passed",list:[{path:"/actionsheet",title:"Actionsheet 上拉菜单"},{path:"/dialog",title:"Dialog 弹出框"},{path:"/loading",title:"Loading 加载"},{path:"/notify",title:"Notify 消息通知"},{path:"/pull-refresh",title:"PullRefresh 下拉刷新"},{path:"/swipe-cell",title:"SwipeCell 滑动单元格"},{path:"/toast",title:"Toast 轻提示"}]},{groupName:"展示组件",icon:"photo-o",list:[{path:"/circle",title:"Circle 环形进度条"},{path:"/collapse",title:"Collapse 折叠面板"},{path:"/image-preview",title:"ImagePreview 图片预览"},{path:"/lazyload",title:"Lazyload 图片懒加载"},{path:"/list",title:"List 列表"},{path:"/notice-bar",title:"NoticeBar 通告栏"},{path:"/panel",title:"Panel 面板"},{path:"/progress",title:"Progress 进度条"},{path:"/steps",title:"Steps 步骤条"},{path:"/swipe",title:"Swipe 轮播"},{path:"/tag",title:"Tag 标记"}]},{groupName:"导航组件",icon:"https://img.yzcdn.cn/vant/nav-0401.svg",list:[{path:"/badge",title:"Badge 徽章"},{path:"/nav-bar",title:"NavBar 导航栏"},{path:"/pagination",title:"Pagination 分页"},{path:"/tab",title:"Tab 标签页"},{path:"/tabbar",title:"Tabbar 标签栏"},{path:"/tree-select",title:"TreeSelect 分类选择"}]},{groupName:"业务组件",icon:"ellipsis",list:[{path:"/address-edit",title:"AddressEdit 地址编辑"},{path:"/address-list",title:"AddressList 地址列表"},{path:"/area",title:"Area 省市区选择"},{path:"/card",title:"Card 商品卡片"},{path:"/contact-card",title:"Contact 联系人"},{path:"/coupon-list",title:"Coupon 优惠券"},{path:"/goods-action",title:"GoodsAction 商品导航"},{path:"/submit-bar",title:"SubmitBar 提交订单栏"},{path:"/sku",title:"Sku 商品规格"}]}]}]},"en-US":{header:{logo:{image:"https://img.yzcdn.cn/public_files/2017/12/18/fd78cf6bb5d12e2a119d0576bedfd230.png",title:"Vant",version:i,href:"#/"},nav:{lang:{text:"中文",from:"en-US",to:"zh-CN"},github:"https://github.com/youzan/vant"}},nav:[{name:"Essentials",groups:[{list:[{path:"/intro",title:"Introduction"},{path:"/quickstart",title:"Quickstart"},{path:"/changelog",title:"Changelog"},{path:"/style",title:"Built-in style"},{path:"/theme",title:"Custom Theme"},{path:"/demo",title:"Demo pages"},{path:"/locale",title:"Internationalization"}]}]},{name:"Components",showInMobile:!0,groups:[{groupName:"Basic Components",icon:"https://img.yzcdn.cn/vant/basic-0401.svg",list:[{path:"/button",title:"Button"},{path:"/cell",title:"Cell"},{path:"/icon",title:"Icon"},{path:"/col",title:"Layout"},{path:"/popup",title:"Popup"}]},{groupName:"Form Components",icon:"https://img.yzcdn.cn/vant/form-0401.svg",list:[{path:"/checkbox",title:"Checkbox"},{path:"/datetime-picker",title:"DatetimePicker"},{path:"/field",title:"Field"},{path:"/number-keyboard",title:"NumberKeyboard"},{path:"/password-input",title:"PasswordInput"},{path:"/picker",title:"Picker"},{path:"/radio",title:"Radio"},{path:"/rate",title:"Rate"},{path:"/search",title:"Search"},{path:"/slider",title:"Slider"},{path:"/stepper",title:"Stepper"},{path:"/switch",title:"Switch"},{path:"/switch-cell",title:"SwitchCell"},{path:"/uploader",title:"Uploader"}]},{groupName:"Action Components",icon:"passed",list:[{path:"/actionsheet",title:"Actionsheet"},{path:"/dialog",title:"Dialog"},{path:"/loading",title:"Loading"},{path:"/notify",title:"Notify"},{path:"/pull-refresh",title:"PullRefresh"},{path:"/swipe-cell",title:"SwipeCell"},{path:"/toast",title:"Toast"}]},{groupName:"Display Components",icon:"photo-o",list:[{path:"/circle",title:"Circle"},{path:"/collapse",title:"Collapse"},{path:"/image-preview",title:"ImagePreview"},{path:"/lazyload",title:"Lazyload"},{path:"/list",title:"List"},{path:"/notice-bar",title:"NoticeBar"},{path:"/panel",title:"Panel"},{path:"/progress",title:"Progress"},{path:"/steps",title:"Steps"},{path:"/swipe",title:"Swipe"},{path:"/tag",title:"Tag"}]},{groupName:"Navigation Components",icon:"https://img.yzcdn.cn/vant/nav-0401.svg",list:[{path:"/badge",title:"Badge"},{path:"/nav-bar",title:"NavBar"},{path:"/pagination",title:"Pagination"},{path:"/tab",title:"Tab"},{path:"/tabbar",title:"Tabbar"},{path:"/tree-select",title:"TreeSelect"}]},{groupName:"Business Components",icon:"ellipsis",list:[{path:"/address-edit",title:"AddressEdit"},{path:"/address-list",title:"AddressList"},{path:"/area",title:"Area"},{path:"/card",title:"Card"},{path:"/contact-card",title:"Contact"},{path:"/coupon-list",title:"Coupon"},{path:"/goods-action",title:"GoodsAction"},{path:"/submit-bar",title:"SubmitBar"},{path:"/sku",title:"Sku"}]}]}]}}},function(t,e,n){"use strict";t.exports=function(t){var e=[];return e.toString=function(){return this.map(function(e){var n=function(t,e){var n=t[1]||"",i=t[3];if(!i)return n;if(e&&"function"==typeof btoa){var r=(a=i,"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(a))))+" */"),o=i.sources.map(function(t){return"/*# sourceURL="+i.sourceRoot+t+" */"});return[n].concat(o).concat([r]).join("\n")}var a;return[n].join("\n")}(e,t);return e[2]?"@media "+e[2]+"{"+n+"}":n}).join("")},e.i=function(t,n){"string"==typeof t&&(t=[[null,t,""]]);for(var i={},r=0;r=0&&u.splice(e,1)}function m(t){var e=document.createElement("style");if(void 0===t.attrs.type&&(t.attrs.type="text/css"),void 0===t.attrs.nonce){var i=function(){0;return n.nc}();i&&(t.attrs.nonce=i)}return g(e,t.attrs),p(t,e),e}function g(t,e){Object.keys(e).forEach(function(n){t.setAttribute(n,e[n])})}function b(t,e){var n,i,r,o;if(e.transform&&t.css){if(!(o="function"==typeof e.transform?e.transform(t.css):e.transform.default(t.css)))return function(){};t.css=o}if(e.singleton){var a=l++;n=c||(c=m(e)),i=k.bind(null,n,a,!1),r=k.bind(null,n,a,!0)}else t.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(n=function(t){var e=document.createElement("link");return void 0===t.attrs.type&&(t.attrs.type="text/css"),t.attrs.rel="stylesheet",g(e,t.attrs),p(t,e),e}(e),i=function(t,e,n){var i=n.css,r=n.sourceMap,o=void 0===e.convertToAbsoluteUrls&&r;(e.convertToAbsoluteUrls||o)&&(i=d(i));r&&(i+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(r))))+" */");var a=new Blob([i],{type:"text/css"}),s=t.href;t.href=URL.createObjectURL(a),s&&URL.revokeObjectURL(s)}.bind(null,n,e),r=function(){v(n),n.href&&URL.revokeObjectURL(n.href)}):(n=m(e),i=function(t,e){var n=e.css,i=e.media;i&&t.setAttribute("media",i);if(t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}.bind(null,n),r=function(){v(n)});return i(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;i(t=e)}else r()}}t.exports=function(t,e){if("undefined"!=typeof DEBUG&&DEBUG&&"object"!=typeof document)throw new Error("The style-loader cannot be used in a non-browser environment");(e=e||{}).attrs="object"==typeof e.attrs?e.attrs:{},e.singleton||"boolean"==typeof e.singleton||(e.singleton=a()),e.insertInto||(e.insertInto="head"),e.insertAt||(e.insertAt="bottom");var n=f(t,e);return h(n,e),function(t){for(var i=[],r=0;r-1}function r(t,e){for(var n in e)t[n]=e[n];return t}var o={name:"RouterView",functional:!0,props:{name:{type:String,default:"default"}},render:function(t,e){var n=e.props,i=e.children,o=e.parent,a=e.data;a.routerView=!0;for(var s=o.$createElement,c=n.name,l=o.$route,u=o._routerViewCache||(o._routerViewCache={}),d=0,h=!1;o&&o._routerRoot!==o;){var f=o.$vnode&&o.$vnode.data;f&&(f.routerView&&d++,f.keepAlive&&o._inactive&&(h=!0)),o=o.$parent}if(a.routerViewDepth=d,h)return s(u[c],a,i);var p=l.matched[d];if(!p)return u[c]=null,s();var v=u[c]=p.components[c];a.registerRouteInstance=function(t,e){var n=p.instances[c];(e&&n!==t||!e&&n===t)&&(p.instances[c]=e)},(a.hook||(a.hook={})).prepatch=function(t,e){p.instances[c]=e.componentInstance},a.hook.init=function(t){t.data.keepAlive&&t.componentInstance&&t.componentInstance!==p.instances[c]&&(p.instances[c]=t.componentInstance)};var m=a.props=function(t,e){switch(typeof e){case"undefined":return;case"object":return e;case"function":return e(t);case"boolean":return e?t.params:void 0;default:0}}(l,p.props&&p.props[c]);if(m){m=a.props=r({},m);var g=a.attrs=a.attrs||{};for(var b in m)v.props&&b in v.props||(g[b]=m[b],delete m[b])}return s(v,a,i)}};var a=/[!'()*]/g,s=function(t){return"%"+t.charCodeAt(0).toString(16)},c=/%2C/g,l=function(t){return encodeURIComponent(t).replace(a,s).replace(c,",")},u=decodeURIComponent;function d(t){var e={};return(t=t.trim().replace(/^(\?|#|&)/,""))?(t.split("&").forEach(function(t){var n=t.replace(/\+/g," ").split("="),i=u(n.shift()),r=n.length>0?u(n.join("=")):null;void 0===e[i]?e[i]=r:Array.isArray(e[i])?e[i].push(r):e[i]=[e[i],r]}),e):e}function h(t){var e=t?Object.keys(t).map(function(e){var n=t[e];if(void 0===n)return"";if(null===n)return l(e);if(Array.isArray(n)){var i=[];return n.forEach(function(t){void 0!==t&&(null===t?i.push(l(e)):i.push(l(e)+"="+l(t)))}),i.join("&")}return l(e)+"="+l(n)}).filter(function(t){return t.length>0}).join("&"):null;return e?"?"+e:""}var f=/\/?$/;function p(t,e,n,i){var r=i&&i.options.stringifyQuery,o=e.query||{};try{o=v(o)}catch(t){}var a={name:e.name||t&&t.name,meta:t&&t.meta||{},path:e.path||"/",hash:e.hash||"",query:o,params:e.params||{},fullPath:b(e,r),matched:t?g(t):[]};return n&&(a.redirectedFrom=b(n,r)),Object.freeze(a)}function v(t){if(Array.isArray(t))return t.map(v);if(t&&"object"==typeof t){var e={};for(var n in t)e[n]=v(t[n]);return e}return t}var m=p(null,{path:"/"});function g(t){for(var e=[];t;)e.unshift(t),t=t.parent;return e}function b(t,e){var n=t.path,i=t.query;void 0===i&&(i={});var r=t.hash;return void 0===r&&(r=""),(n||"/")+(e||h)(i)+r}function y(t,e){return e===m?t===e:!!e&&(t.path&&e.path?t.path.replace(f,"")===e.path.replace(f,"")&&t.hash===e.hash&&x(t.query,e.query):!(!t.name||!e.name)&&(t.name===e.name&&t.hash===e.hash&&x(t.query,e.query)&&x(t.params,e.params)))}function x(t,e){if(void 0===t&&(t={}),void 0===e&&(e={}),!t||!e)return t===e;var n=Object.keys(t),i=Object.keys(e);return n.length===i.length&&n.every(function(n){var i=t[n],r=e[n];return"object"==typeof i&&"object"==typeof r?x(i,r):String(i)===String(r)})}var k,w=[String,Object],C=[String,Array],S={name:"RouterLink",props:{to:{type:w,required:!0},tag:{type:String,default:"a"},exact:Boolean,append:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,event:{type:C,default:"click"}},render:function(t){var e=this,n=this.$router,i=this.$route,o=n.resolve(this.to,i,this.append),a=o.location,s=o.route,c=o.href,l={},u=n.options.linkActiveClass,d=n.options.linkExactActiveClass,h=null==u?"router-link-active":u,v=null==d?"router-link-exact-active":d,m=null==this.activeClass?h:this.activeClass,g=null==this.exactActiveClass?v:this.exactActiveClass,b=a.path?p(null,a,null,n):s;l[g]=y(i,b),l[m]=this.exact?l[g]:function(t,e){return 0===t.path.replace(f,"/").indexOf(e.path.replace(f,"/"))&&(!e.hash||t.hash===e.hash)&&function(t,e){for(var n in e)if(!(n in t))return!1;return!0}(t.query,e.query)}(i,b);var x=function(t){_(t)&&(e.replace?n.replace(a):n.push(a))},k={click:_};Array.isArray(this.event)?this.event.forEach(function(t){k[t]=x}):k[this.event]=x;var w={class:l};if("a"===this.tag)w.on=k,w.attrs={href:c};else{var C=function t(e){if(e)for(var n,i=0;i=0&&(e=t.slice(i),t=t.slice(0,i));var r=t.indexOf("?");return r>=0&&(n=t.slice(r+1),t=t.slice(0,r)),{path:t,query:n,hash:e}}(o.path||""),l=e&&e.path||"/",u=c.path?$(c.path,l,n||o.append):l,h=function(t,e,n){void 0===e&&(e={});var i,r=n||d;try{i=r(t||"")}catch(t){i={}}for(var o in e)i[o]=e[o];return i}(c.query,o.query,i&&i.options.parseQuery),f=o.hash||c.hash;return f&&"#"!==f.charAt(0)&&(f="#"+f),{_normalized:!0,path:u,query:h,hash:f}}function Q(t,e){var n=Y(t),i=n.pathList,r=n.pathMap,o=n.nameMap;function a(t,n,a){var s=K(t,n,!1,e),l=s.name;if(l){var u=o[l];if(!u)return c(null,s);var d=u.regex.keys.filter(function(t){return!t.optional}).map(function(t){return t.name});if("object"!=typeof s.params&&(s.params={}),n&&"object"==typeof n.params)for(var h in n.params)!(h in s.params)&&d.indexOf(h)>-1&&(s.params[h]=n.params[h]);if(u)return s.path=W(u.path,s.params),c(u,s,a)}else if(s.path){s.params={};for(var f=0;f=t.length?n():t[r]?e(t[r],function(){i(r+1)}):i(r+1)};i(0)}function vt(t){return function(e,n,r){var o=!1,a=0,s=null;mt(t,function(t,e,n,c){if("function"==typeof t&&void 0===t.cid){o=!0,a++;var l,u=yt(function(e){var i;((i=e).__esModule||bt&&"Module"===i[Symbol.toStringTag])&&(e=e.default),t.resolved="function"==typeof e?e:k.extend(e),n.components[c]=e,--a<=0&&r()}),d=yt(function(t){var e="Failed to resolve async component "+c+": "+t;s||(s=i(t)?t:new Error(e),r(s))});try{l=t(u,d)}catch(t){d(t)}if(l)if("function"==typeof l.then)l.then(u,d);else{var h=l.component;h&&"function"==typeof h.then&&h.then(u,d)}}}),o||r()}}function mt(t,e){return gt(t.map(function(t){return Object.keys(t.components).map(function(n){return e(t.components[n],t.instances[n],t,n)})}))}function gt(t){return Array.prototype.concat.apply([],t)}var bt="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag;function yt(t){var e=!1;return function(){for(var n=[],i=arguments.length;i--;)n[i]=arguments[i];if(!e)return e=!0,t.apply(this,n)}}var xt=function(t,e){this.router=t,this.base=function(t){if(!t)if(O){var e=document.querySelector("base");t=(t=e&&e.getAttribute("href")||"/").replace(/^https?:\/\/[^\/]+/,"")}else t="/";"/"!==t.charAt(0)&&(t="/"+t);return t.replace(/\/$/,"")}(e),this.current=m,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[]};function kt(t,e,n,i){var r=mt(t,function(t,i,r,o){var a=function(t,e){"function"!=typeof t&&(t=k.extend(t));return t.options[e]}(t,e);if(a)return Array.isArray(a)?a.map(function(t){return n(t,i,r,o)}):n(a,i,r,o)});return gt(i?r.reverse():r)}function wt(t,e){if(e)return function(){return t.apply(e,arguments)}}xt.prototype.listen=function(t){this.cb=t},xt.prototype.onReady=function(t,e){this.ready?t():(this.readyCbs.push(t),e&&this.readyErrorCbs.push(e))},xt.prototype.onError=function(t){this.errorCbs.push(t)},xt.prototype.transitionTo=function(t,e,n){var i=this,r=this.router.match(t,this.current);this.confirmTransition(r,function(){i.updateRoute(r),e&&e(r),i.ensureURL(),i.ready||(i.ready=!0,i.readyCbs.forEach(function(t){t(r)}))},function(t){n&&n(t),t&&!i.ready&&(i.ready=!0,i.readyErrorCbs.forEach(function(e){e(t)}))})},xt.prototype.confirmTransition=function(t,e,n){var r=this,o=this.current,a=function(t){i(t)&&(r.errorCbs.length?r.errorCbs.forEach(function(e){e(t)}):console.error(t)),n&&n(t)};if(y(t,o)&&t.matched.length===o.matched.length)return this.ensureURL(),a();var s=function(t,e){var n,i=Math.max(t.length,e.length);for(n=0;n-1?decodeURI(t.slice(0,i))+t.slice(i):decodeURI(t)}else n>-1&&(t=decodeURI(t.slice(0,n))+t.slice(n));return t}function Tt(t){var e=window.location.href,n=e.indexOf("#");return(n>=0?e.slice(0,n):e)+"#"+t}function jt(t){st?ht(Tt(t)):window.location.hash=t}function At(t){st?ft(Tt(t)):window.location.replace(Tt(t))}var Et=function(t){function e(e,n){t.call(this,e,n),this.stack=[],this.index=-1}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.push=function(t,e,n){var i=this;this.transitionTo(t,function(t){i.stack=i.stack.slice(0,i.index+1).concat(t),i.index++,e&&e(t)},n)},e.prototype.replace=function(t,e,n){var i=this;this.transitionTo(t,function(t){i.stack=i.stack.slice(0,i.index).concat(t),e&&e(t)},n)},e.prototype.go=function(t){var e=this,n=this.index+t;if(!(n<0||n>=this.stack.length)){var i=this.stack[n];this.confirmTransition(i,function(){e.index=n,e.updateRoute(i)})}},e.prototype.getCurrentLocation=function(){var t=this.stack[this.stack.length-1];return t?t.fullPath:"/"},e.prototype.ensureURL=function(){},e}(xt),Nt=function(t){void 0===t&&(t={}),this.app=null,this.apps=[],this.options=t,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=Q(t.routes||[],this);var e=t.mode||"hash";switch(this.fallback="history"===e&&!st&&!1!==t.fallback,this.fallback&&(e="hash"),O||(e="abstract"),this.mode=e,e){case"history":this.history=new Ct(this,t.base);break;case"hash":this.history=new _t(this,t.base,this.fallback);break;case"abstract":this.history=new Et(this,t.base);break;default:0}},It={currentRoute:{configurable:!0}};function zt(t,e){return t.push(e),function(){var n=t.indexOf(e);n>-1&&t.splice(n,1)}}Nt.prototype.match=function(t,e,n){return this.matcher.match(t,e,n)},It.currentRoute.get=function(){return this.history&&this.history.current},Nt.prototype.init=function(t){var e=this;if(this.apps.push(t),t.$once("hook:destroyed",function(){var n=e.apps.indexOf(t);n>-1&&e.apps.splice(n,1),e.app===t&&(e.app=e.apps[0]||null)}),!this.app){this.app=t;var n=this.history;if(n instanceof Ct)n.transitionTo(n.getCurrentLocation());else if(n instanceof _t){var i=function(){n.setupListeners()};n.transitionTo(n.getCurrentLocation(),i,i)}n.listen(function(t){e.apps.forEach(function(e){e._route=t})})}},Nt.prototype.beforeEach=function(t){return zt(this.beforeHooks,t)},Nt.prototype.beforeResolve=function(t){return zt(this.resolveHooks,t)},Nt.prototype.afterEach=function(t){return zt(this.afterHooks,t)},Nt.prototype.onReady=function(t,e){this.history.onReady(t,e)},Nt.prototype.onError=function(t){this.history.onError(t)},Nt.prototype.push=function(t,e,n){this.history.push(t,e,n)},Nt.prototype.replace=function(t,e,n){this.history.replace(t,e,n)},Nt.prototype.go=function(t){this.history.go(t)},Nt.prototype.back=function(){this.go(-1)},Nt.prototype.forward=function(){this.go(1)},Nt.prototype.getMatchedComponents=function(t){var e=t?t.matched?t:this.resolve(t).route:this.currentRoute;return e?[].concat.apply([],e.matched.map(function(t){return Object.keys(t.components).map(function(e){return t.components[e]})})):[]},Nt.prototype.resolve=function(t,e,n){var i=K(t,e=e||this.history.current,n,this),r=this.match(i,e),o=r.redirectedFrom||r.fullPath;return{location:i,route:r,href:function(t,e,n){var i="hash"===n?"#"+e:e;return t?T(t+"/"+i):i}(this.history.base,o,this.mode),normalizedTo:i,resolved:r}},Nt.prototype.addRoutes=function(t){this.matcher.addRoutes(t),this.history.current!==m&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(Nt.prototype,It),Nt.install=function t(e){if(!t.installed||k!==e){t.installed=!0,k=e;var n=function(t){return void 0!==t},i=function(t,e){var i=t.$options._parentVnode;n(i)&&n(i=i.data)&&n(i=i.registerRouteInstance)&&i(t,e)};e.mixin({beforeCreate:function(){n(this.$options.router)?(this._routerRoot=this,this._router=this.$options.router,this._router.init(this),e.util.defineReactive(this,"_route",this._router.history.current)):this._routerRoot=this.$parent&&this.$parent._routerRoot||this,i(this,this)},destroyed:function(){i(this)}}),Object.defineProperty(e.prototype,"$router",{get:function(){return this._routerRoot._router}}),Object.defineProperty(e.prototype,"$route",{get:function(){return this._routerRoot._route}}),e.component("RouterView",o),e.component("RouterLink",S);var r=e.config.optionMergeStrategies;r.beforeRouteEnter=r.beforeRouteLeave=r.beforeRouteUpdate=r.created}},Nt.version="3.0.6",O&&window.Vue&&window.Vue.use(Nt),e.a=Nt},function(t,e){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(t){"object"==typeof window&&(n=window)}t.exports=n},function(t,e,n){var i=n(32);"string"==typeof i&&(i=[[t.i,i,""]]);var r={hmr:!0,transform:void 0,insertInto:void 0};n(13)(i,r);i.locals&&(t.exports=i.locals)},function(t,e,n){var i=n(34);"string"==typeof i&&(i=[[t.i,i,""]]);var r={hmr:!0,transform:void 0,insertInto:void 0};n(13)(i,r);i.locals&&(t.exports=i.locals)},function(t,e,n){var i=n(36);"string"==typeof i&&(i=[[t.i,i,""]]);var r={hmr:!0,transform:void 0,insertInto:void 0};n(13)(i,r);i.locals&&(t.exports=i.locals)},function(t,e,n){"use strict";n.d(e,"a",function(){return o});var i=n(0),r=Object.prototype.hasOwnProperty;function o(t,e){return Object.keys(e).forEach(function(n){!function(t,e,n){var a=e[n];Object(i.d)(a)&&(r.call(t,n)&&Object(i.g)(a)?t[n]=o(Object(t[n]),e[n]):t[n]=a)}(t,e,n)}),t}},function(t,e,n){"use strict";e.a={name:"姓名",tel:"电话",save:"保存",confirm:"确认",cancel:"取消",delete:"删除",complete:"完成",loading:"加载中...",telEmpty:"请填写电话",nameEmpty:"请填写姓名",confirmDelete:"确定要删除么",telInvalid:"请填写正确的电话",vanContactCard:{addText:"添加联系人"},vanContactList:{addText:"新建联系人"},vanPagination:{prev:"上一页",next:"下一页"},vanPullRefresh:{pulling:"下拉即可刷新...",loosing:"释放即可刷新..."},vanSubmitBar:{label:"合计:"},vanCoupon:{valid:"有效期",unlimited:"无使用门槛",discount:function(t){return t+"折"},condition:function(t){return"满"+t+"元可用"}},vanCouponCell:{title:"优惠券",tips:"使用优惠",count:function(t){return t+"张可用"}},vanCouponList:{empty:"暂无优惠券",exchange:"兑换",close:"不使用优惠",enable:"可使用优惠券",disabled:"不可使用优惠券",placeholder:"请输入优惠码"},vanAddressEdit:{area:"地区",postal:"邮政编码",areaEmpty:"请选择地区",addressEmpty:"请填写详细地址",postalEmpty:"邮政编码格式不正确",defaultAddress:"设为默认收货地址",telPlaceholder:"收货人手机号",namePlaceholder:"收货人姓名",areaPlaceholder:"选择省 / 市 / 区"},vanAddressEditDetail:{label:"详细地址",placeholder:"街道门牌、楼层房间号等信息"},vanAddressList:{add:"新增地址"}}},function(t,e,n){"use strict";function i(t,e){var n=function n(){t.contentWindow.changePath?e():setTimeout(function(){n()},50)};"complete"===(t.contentDocument||t.contentWindow.document).readyState?n():t.onload=n}n.d(e,"b",function(){return o}),n.d(e,"a",function(){return i});var r=navigator.userAgent.toLowerCase(),o=/ios|iphone|ipod|ipad|android/.test(r)},function(t,e,n){ +/*! + * Vue-Lazyload.js v1.2.3 + * (c) 2018 Awe + * Released under the MIT License. + */ +t.exports=function(){"use strict";function t(t){t=t||{};var i=arguments.length,r=0;if(1===i)return t;for(;++r-1?t.splice(n,1):void 0}}function o(t,e){if("IMG"===t.tagName&&t.getAttribute("data-srcset")){var n=t.getAttribute("data-srcset"),i=[],r=t.parentNode,o=r.offsetWidth*e,a=void 0,s=void 0,c=void 0;(n=n.trim().split(",")).map(function(t){t=t.trim(),-1===(a=t.lastIndexOf(" "))?(s=t,c=999998):(s=t.substr(0,a),c=parseInt(t.substr(a+1,t.length-a-2),10)),i.push([c,s])}),i.sort(function(t,e){if(t[0]e[0])return 1;if(t[0]===e[0]){if(-1!==e[1].indexOf(".webp",e[1].length-5))return 1;if(-1!==t[1].indexOf(".webp",t[1].length-5))return-1}return 0});for(var l="",u=void 0,d=i.length,h=0;h=o){l=u[1];break}return l}}function a(t,e){for(var n=void 0,i=0,r=t.length;i0&&void 0!==arguments[0]?arguments[0]:1;return g&&window.devicePixelRatio||t},w=function(){if(g){var t=!1;try{var e=Object.defineProperty({},"passive",{get:function(){t=!0}});window.addEventListener("test",null,e)}catch(t){}return t}}(),C={on:function(t,e,n){var i=arguments.length>3&&void 0!==arguments[3]&&arguments[3];w?t.addEventListener(e,n,{capture:i,passive:!0}):t.addEventListener(e,n,i)},off:function(t,e,n){var i=arguments.length>3&&void 0!==arguments[3]&&arguments[3];t.removeEventListener(e,n,i)}},S=function(t,e,n){var i=new Image;i.src=t.src,i.onload=function(){e({naturalHeight:i.naturalHeight,naturalWidth:i.naturalWidth,src:i.src})},i.onerror=function(t){n(t)}},_=function(t,e){return"undefined"!=typeof getComputedStyle?getComputedStyle(t,null).getPropertyValue(e):t.style[e]},O=function(t){return _(t,"overflow")+_(t,"overflow-y")+_(t,"overflow-x")},$={},T=function(){function t(e){var n=e.el,i=e.src,r=e.error,o=e.loading,a=e.bindType,s=e.$parent,c=e.options,l=e.elRenderer;u(this,t),this.el=n,this.src=i,this.error=r,this.loading=o,this.bindType=a,this.attempt=0,this.naturalHeight=0,this.naturalWidth=0,this.options=c,this.rect=null,this.$parent=s,this.elRenderer=l,this.performanceData={init:Date.now(),loadStart:0,loadEnd:0},this.filter(),this.initState(),this.render("loading",!1)}return d(t,[{key:"initState",value:function(){this.el.dataset.src=this.src,this.state={error:!1,loaded:!1,rendered:!1}}},{key:"record",value:function(t){this.performanceData[t]=Date.now()}},{key:"update",value:function(t){var e=t.src,n=t.loading,i=t.error,r=this.src;this.src=e,this.loading=n,this.error=i,this.filter(),r!==this.src&&(this.attempt=0,this.initState())}},{key:"getRect",value:function(){this.rect=this.el.getBoundingClientRect()}},{key:"checkInView",value:function(){return this.getRect(),this.rect.topthis.options.preLoadTop&&this.rect.left0}},{key:"filter",value:function(){var t=this;(function(t){if(!(t instanceof Object))return[];if(Object.keys)return Object.keys(t);var e=[];for(var n in t)t.hasOwnProperty(n)&&e.push(n);return e})(this.options.filter).map(function(e){t.options.filter[e](t,t.options)})}},{key:"renderLoading",value:function(t){var e=this;S({src:this.loading},function(n){e.render("loading",!1),t()},function(){t(),e.options.silent||console.warn("VueLazyload log: load failed with loading image("+e.loading+")")})}},{key:"load",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:c;return this.attempt>this.options.attempt-1&&this.state.error?(this.options.silent||console.log("VueLazyload log: "+this.src+" tried too more than "+this.options.attempt+" times"),void e()):this.state.loaded||$[this.src]?(this.state.loaded=!0,e(),this.render("loaded",!0)):void this.renderLoading(function(){t.attempt++,t.record("loadStart"),S({src:t.src},function(n){t.naturalHeight=n.naturalHeight,t.naturalWidth=n.naturalWidth,t.state.loaded=!0,t.state.error=!1,t.record("loadEnd"),t.render("loaded",!1),$[t.src]=1,e()},function(e){!t.options.silent&&console.error(e),t.state.error=!0,t.state.loaded=!1,t.render("error",!1)})})}},{key:"render",value:function(t,e){this.elRenderer(this,t,e)}},{key:"performance",value:function(){var t="loading",e=0;return this.state.loaded&&(t="loaded",e=(this.performanceData.loadEnd-this.performanceData.loadStart)/1e3),this.state.error&&(t="error"),{src:this.src,state:t,time:e}}},{key:"destroy",value:function(){this.el=null,this.src=null,this.error=null,this.loading=null,this.bindType=null,this.attempt=0}}]),t}(),j="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",A=["scroll","wheel","mousewheel","resize","animationend","transitionend","touchmove"],E={rootMargin:"0px",threshold:0},N=function(t){return function(){function e(t){var n=t.preLoad,i=t.error,r=t.throttleWait,o=t.preLoadTop,a=t.dispatchEvent,c=t.loading,l=t.attempt,d=t.silent,h=void 0===d||d,f=t.scale,p=t.listenEvents,v=(t.hasbind,t.filter),m=t.adapter,g=t.observer,b=t.observerOptions;u(this,e),this.version="1.2.3",this.mode=y.event,this.ListenerQueue=[],this.TargetIndex=0,this.TargetQueue=[],this.options={silent:h,dispatchEvent:!!a,throttleWait:r||200,preLoad:n||1.3,preLoadTop:o||0,error:i||j,loading:c||j,attempt:l||3,scale:f||k(f),ListenEvents:p||A,hasbind:!1,supportWebp:s(),filter:v||{},adapter:m||{},observer:!!g,observerOptions:b||E},this._initEvent(),this.lazyLoadHandler=function(t,e){var n=null,i=0;return function(){if(!n){var r=Date.now()-i,o=this,a=arguments,s=function(){i=Date.now(),n=!1,t.apply(o,a)};r>=e?s():n=setTimeout(s,e)}}}(this._lazyLoadHandler.bind(this),this.options.throttleWait),this.setMode(this.options.observer?y.observer:y.event)}return d(e,[{key:"config",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};m(this.options,t)}},{key:"performance",value:function(){var t=[];return this.ListenerQueue.map(function(e){t.push(e.performance())}),t}},{key:"addLazyBox",value:function(t){this.ListenerQueue.push(t),g&&(this._addListenerTarget(window),this._observer&&this._observer.observe(t.el),t.$el&&t.$el.parentNode&&this._addListenerTarget(t.$el.parentNode))}},{key:"add",value:function(e,n,i){var r=this;if(function(t,e){for(var n=!1,i=0,r=t.length;i1&&void 0!==arguments[1]?arguments[1]:{},n=N(t),i=new n(e),r=new I({lazy:i}),o="2"===t.version.split(".")[0];t.prototype.$Lazyload=i,e.lazyComponent&&t.component("lazy-component",function(t){return{props:{tag:{type:String,default:"div"}},render:function(t){return!1===this.show?t(this.tag):t(this.tag,null,this.$slots.default)},data:function(){return{el:null,state:{loaded:!1},rect:{},show:!1}},mounted:function(){this.el=this.$el,t.addLazyBox(this),t.lazyLoadHandler()},beforeDestroy:function(){t.removeComponent(this)},methods:{getRect:function(){this.rect=this.$el.getBoundingClientRect()},checkInView:function(){return this.getRect(),g&&this.rect.top0&&this.rect.left0},load:function(){this.show=!0,this.state.loaded=!0,this.$emit("show",this)}}}}(i)),o?(t.directive("lazy",{bind:i.add.bind(i),update:i.update.bind(i),componentUpdated:i.lazyLoadHandler.bind(i),unbind:i.remove.bind(i)}),t.directive("lazy-container",{bind:r.bind.bind(r),update:r.update.bind(r),unbind:r.unbind.bind(r)})):(t.directive("lazy",{bind:i.lazyLoadHandler.bind(i),update:function(t,e){m(this.vm.$refs,this.vm.$els),i.add(this.el,{modifiers:this.modifiers||{},arg:this.arg,value:t,oldValue:e},{context:this.vm})},unbind:function(){i.remove(this.el)}}),t.directive("lazy-container",{update:function(t,e){r.update(this.el,{modifiers:this.modifiers||{},arg:this.arg,value:t,oldValue:e},{context:this.vm})},unbind:function(){r.unbind(this.el)}}))}}}()},function(t,e,n){"use strict";var i=n(3),r=n(11),o=n.n(r),a={props:{base:String,group:Object},data:function(){return{active:[]}}},s=(n(31),n(7)),c=Object(s.a)(a,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("van-collapse",{staticClass:"mobile-nav",attrs:{border:!1},model:{value:t.active,callback:function(e){t.active=e},expression:"active"}},[n("van-collapse-item",{staticClass:"mobile-nav__item",attrs:{title:t.group.groupName,name:t.group.groupName}},[n("van-icon",{staticClass:"mobile-nav__icon",attrs:{slot:"right-icon",name:t.group.icon},slot:"right-icon"}),t._l(t.group.list,function(e,i){return[e.disabled?t._e():n("van-cell",{key:i,attrs:{to:"/"+t.base+e.path,title:e.title,"is-link":""}})]})],2)],1)},[],!1,null,null,null).exports,l=n(8),u={"en-US":{title:"Vant - Mobile UI Components built on Vue",messages:{name:"Name",tel:"Phone",save:"Save",confirm:"Confirm",cancel:"Cancel",delete:"Delete",complete:"Complete",loading:"Loading...",telEmpty:"Please fill in the tel",nameEmpty:"Please fill in the name",confirmDelete:"Are you sure you want to delete?",telInvalid:"Malformed phone number",vanContactCard:{addText:"Add contact info"},vanContactList:{addText:"Add new contact"},vanPagination:{prev:"Previous",next:"Next"},vanPullRefresh:{pulling:"Pull to refresh...",loosing:"Loose to refresh..."},vanSubmitBar:{label:"Total:"},vanCoupon:{valid:"Valid",unlimited:"Unlimited",discount:function(t){return 10*t+"% off"},condition:function(t){return"At least "+t}},vanCouponCell:{title:"Coupon",tips:"Select coupon",count:function(t){return"You have "+t+" coupons"}},vanCouponList:{empty:"No coupons",exchange:"Exchange",close:"Close",enable:"Available",disabled:"Unavailable",placeholder:"Coupon code"},vanAddressEdit:{area:"Area",postal:"Postal",areaEmpty:"Please select a receiving area",addressEmpty:"Address can not be empty",postalEmpty:"Wrong postal code",defaultAddress:"Set as the default address",telPlaceholder:"Phone",namePlaceholder:"Name",areaPlaceholder:"Area"},vanAddressEditDetail:{label:"Address",placeholder:"Address"},vanAddressList:{add:"Add new address"}}},"zh-CN":{title:"Vant - 轻量、可靠的移动端 Vue 组件库",messages:n(20).a}},d="";function h(t){d!==t&&(d=t,window.localStorage&&localStorage.setItem("VANT_LANGUAGE",t),l.a.use(t,u[t].messages),document.title=u[t].title)}h(function(){for(var t=Object.keys(u),e=location.hash,n=0;n1?r-1:0),a=1;a=0&&(t._idleTimeoutId=setTimeout(function(){t._onTimeout&&t._onTimeout()},e))},n(27),e.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==t&&t.setImmediate||this&&this.setImmediate,e.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==t&&t.clearImmediate||this&&this.clearImmediate}).call(this,n(15))},function(t,e,n){(function(t,e){!function(t,n){"use strict";if(!t.setImmediate){var i,r,o,a,s,c=1,l={},u=!1,d=t.document,h=Object.getPrototypeOf&&Object.getPrototypeOf(t);h=h&&h.setTimeout?h:t,"[object process]"==={}.toString.call(t.process)?i=function(t){e.nextTick(function(){p(t)})}:!function(){if(t.postMessage&&!t.importScripts){var e=!0,n=t.onmessage;return t.onmessage=function(){e=!1},t.postMessage("","*"),t.onmessage=n,e}}()?t.MessageChannel?((o=new MessageChannel).port1.onmessage=function(t){p(t.data)},i=function(t){o.port2.postMessage(t)}):d&&"onreadystatechange"in d.createElement("script")?(r=d.documentElement,i=function(t){var e=d.createElement("script");e.onreadystatechange=function(){p(t),e.onreadystatechange=null,r.removeChild(e),e=null},r.appendChild(e)}):i=function(t){setTimeout(p,0,t)}:(a="setImmediate$"+Math.random()+"$",s=function(e){e.source===t&&"string"==typeof e.data&&0===e.data.indexOf(a)&&p(+e.data.slice(a.length))},t.addEventListener?t.addEventListener("message",s,!1):t.attachEvent("onmessage",s),i=function(e){t.postMessage(a+e,"*")}),h.setImmediate=function(t){"function"!=typeof t&&(t=new Function(""+t));for(var e=new Array(arguments.length-1),n=0;n1)for(var n=1;n= 2.5.0"},devDependencies:{"@babel/core":"^7.4.3","@babel/plugin-syntax-dynamic-import":"^7.0.0","@babel/plugin-syntax-jsx":"^7.2.0","@babel/plugin-transform-object-assign":"^7.0.0","@babel/plugin-transform-runtime":"^7.4.3","@babel/polyfill":"^7.4.3","@babel/preset-env":"^7.4.3","@babel/preset-typescript":"^7.3.3","@types/jest":"^24.0.11","@vant/doc":"^1.0.25","@vant/eslint-config":"^1.1.2","@vant/markdown-loader":"^1.0.3","@vue/babel-preset-jsx":"^1.0.0-beta.3","@vue/server-test-utils":"^1.0.0-beta.29","@vue/test-utils":"^1.0.0-beta.29",autoprefixer:"^9.5.1","babel-jest":"^24.7.1","babel-loader":"^8.0.4",codecov:"^3.3.0","cross-env":"^5.2.0","css-loader":"^2.1.1","dependency-tree":"^7.0.2",eslint:"^5.16.0","fast-glob":"^2.2.4","gh-pages":"^2.0.1",gulp:"3.9.1","gulp-csso":"^3.0.1","gulp-less":"^4.0.1","gulp-postcss":"^8.0.0","html-webpack-plugin":"3.2.0",husky:"^1.2.1",jest:"^24.7.1","jest-serializer-vue":"^2.0.2",less:"^3.8.1","less-loader":"^4.1.0","lint-staged":"^8.1.5","markdown-vetur":"0.0.5",postcss:"^7.0.14","postcss-loader":"^3.0.0","progress-bar-webpack-plugin":"^1.12.1",rimraf:"^2.5.4",shelljs:"^0.8.3",signale:"^1.4.0","style-loader":"^0.23.1",stylelint:"^10.0.1","stylelint-config-standard":"^18.3.0","ts-jest":"^24.0.2",typescript:"^3.4.4",uppercamelcase:"^3.0.0","url-loader":"^1.1.2",vue:"2.6.10","vue-jest":"4.0.0-beta.1","vue-loader":"^15.7.0","vue-router":"^3.0.6","vue-server-renderer":"^2.6.10","vue-template-compiler":"2.6.10","vue-template-es2015-compiler":"^1.9.1",webpack:"^4.30.0","webpack-cli":"^3.3.2","webpack-dev-server":"^3.3.1"},vetur:{tags:"vetur/tags.json",attributes:"vetur/attributes.json"}}},function(t,e){t.exports=function(t){var e="undefined"!=typeof window&&window.location;if(!e)throw new Error("fixUrls requires window.location");if(!t||"string"!=typeof t)return t;var n=e.protocol+"//"+e.host,i=n+e.pathname.replace(/\/[^\/]*$/,"/");return t.replace(/url\s*\(((?:[^)(]|\((?:[^)(]+|\([^)(]*\))*\))*)\)/gi,function(t,e){var r,o=e.trim().replace(/^"(.*)"$/,function(t,e){return e}).replace(/^'(.*)'$/,function(t,e){return e});return/^(#|data:|http:\/\/|https:\/\/|file:\/\/\/|\s*$)/i.test(o)?t:(r=0===o.indexOf("//")?o:0===o.indexOf("/")?n+o:i+o.replace(/^\.\//,""),"url("+JSON.stringify(r)+")")})}},function(t,e,n){"use strict";var i=n(16);n.n(i).a},function(t,e,n){(t.exports=n(12)(!1)).push([t.i,".mobile-nav__item {\n margin-bottom: 16px;\n}\n.mobile-nav__icon {\n font-size: 24px;\n}\n.mobile-nav__icon img {\n width: 100%;\n}\n.mobile-nav .van-collapse-item__content {\n padding: 0;\n}\n.mobile-nav .van-collapse-item__title {\n font-size: 16px;\n font-weight: 500;\n line-height: 40px;\n -webkit-box-align: center;\n -webkit-align-items: center;\n align-items: center;\n border-radius: 2px;\n}\n",""])},function(t,e,n){"use strict";var i=n(17);n.n(i).a},function(t,e,n){(t.exports=n(12)(!1)).push([t.i,".side-nav {\n width: 100%;\n box-sizing: border-box;\n padding: 64px 20px 20px;\n}\n.side-nav .vant-title,\n.side-nav .vant-desc {\n font-weight: normal;\n -webkit-user-select: none;\n user-select: none;\n padding-left: 15px;\n}\n.side-nav .vant-title {\n margin: 0 0 15px;\n}\n.side-nav .vant-title img,\n.side-nav .vant-title span {\n display: inline-block;\n vertical-align: middle;\n}\n.side-nav .vant-title img {\n width: 36px;\n}\n.side-nav .vant-title span {\n font-size: 36px;\n font-weight: 500;\n margin-left: 15px;\n}\n.side-nav .vant-desc {\n font-size: 14px;\n color: #7d7e80;\n margin: 0 0 40px;\n}\n.mobile-switch-lang {\n position: absolute;\n top: 24px;\n right: 24px;\n color: #1989fa;\n font-size: 12px;\n cursor: pointer;\n overflow: hidden;\n}\n.mobile-switch-lang span {\n color: #969799;\n width: 48px;\n line-height: 22px;\n text-align: center;\n display: inline-block;\n border: 1px solid #dcdee0;\n background-color: #f7f8fa;\n}\n.mobile-switch-lang span:first-child {\n border-right: none;\n border-radius: 3px 0 0 3px;\n}\n.mobile-switch-lang span:last-child {\n border-left: none;\n border-radius: 0 3px 3px 0;\n}\n.mobile-switch-lang span.active {\n color: #fff;\n border-color: #1989fa;\n background-color: #1989fa;\n}\n",""])},function(t,e,n){"use strict";var i=n(18);n.n(i).a},function(t,e,n){(t.exports=n(12)(!1)).push([t.i,".van-doc-demo-pages__gallery {\n margin-top: 30px;\n}\n.van-doc-demo-pages__item {\n width: 28%;\n text-align: center;\n margin-bottom: 40px;\n display: inline-block;\n}\n.van-doc-demo-pages__item:nth-child(3n+1),\n.van-doc-demo-pages__item:nth-child(3n+2) {\n margin-right: 4%;\n}\n.van-doc-demo-pages__item h4 {\n font-size: 14px;\n line-height: 20px;\n font-weight: normal;\n}\n.van-doc-demo-pages__item img {\n width: 100%;\n cursor: pointer;\n border-radius: 3px;\n background-color: #f8f8f8;\n box-shadow: 0 2px 3px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1);\n}\n.van-doc-demo-pages__item a {\n font-size: 12px;\n margin: 4px 0 7px;\n display: inline-block;\n}\n.van-doc-demo-pages__item--active img {\n box-shadow: 0 1px 4px rgba(51, 136, 255, 0.4), 0 0 0 1px rgba(51, 136, 255, 0.4);\n}\n",""])},function(t,e,n){"use strict";var i=n(24);n.n(i).a},function(t,e,n){(t.exports=n(12)(!1)).push([t.i,'.van-doc-intro {\n padding-top: 40px;\n text-align: center;\n font-family: "Dosis", "Source Sans Pro", "Helvetica Neue", Arial, sans-serif;\n}\n.van-doc-intro__youzan {\n width: 32px;\n height: 32px;\n display: block;\n margin: 25px 0 0;\n}\n.van-doc-intro__logo {\n width: 120px;\n height: 120px;\n}\n.van-doc-intro h2 {\n font-size: 36px;\n line-height: 60px;\n font-weight: normal;\n}\n.van-doc-intro p {\n font-size: 15px;\n color: #455a64;\n}\n',""])},,,,,,function(t,e,n){"use strict";n.r(e);var i=n(3),r=n(14),o=n(9),a=n.n(o),s=n(11),c=n.n(s),l={data:function(){return{simulators:["mobile.html"+location.hash],demoURL:""}},computed:{base:function(){return"/"+this.$vantLang},config:function(){return c.a[this.$vantLang]},currentSimulator:function(){var t=this.$route.name;return t&&-1!==t.indexOf("demo")?1:0}},methods:{onChangeDemoURL:function(t){this.simulators=[this.simulators[0],t]}}},u=(n(37),n(7)),d=Object(u.a)(l,function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"app"},[e("van-doc",{attrs:{base:this.base,config:this.config,active:"Vue 组件",simulators:this.simulators,"current-simulator":this.currentSimulator}},[e("router-view",{on:{changeDemoURL:this.onChangeDemoURL}})],1)],1)},[],!1,null,null,null).exports,h=n(23),f=n(21);i.default.use(r.a).use(a.a);var p=new r.a({mode:"hash",routes:Object(h.a)()});p.beforeEach(function(t,e,n){f.b&&location.replace("mobile.html"+location.hash),o.progress.start(),document.title=t.meta.title||document.title,n()}),p.afterEach(function(){o.progress.done(),window.scrollTo(0,0),i.default.nextTick(function(){return window.syncPath()})}),window.vueRouter=p,new i.default({el:"#app",render:function(t){return t(d)},router:p})}]); \ No newline at end of file diff --git a/vant/v1/vant-mobile.f270944e.js b/vant/v1/vant-mobile.f270944e.js new file mode 100644 index 00000000..d027dbd9 --- /dev/null +++ b/vant/v1/vant-mobile.f270944e.js @@ -0,0 +1,18 @@ +!function(n){function t(t){for(var e,o,r=t[0],a=t[1],s=0,l=[];s1?i-1:0),r=1;r=0&&Math.floor(t)===t&&isFinite(n)}function h(n){return r(n)&&"function"==typeof n.then&&"function"==typeof n.catch}function p(n){return null==n?"":Array.isArray(n)||u(n)&&n.toString===l?JSON.stringify(n,null,2):String(n)}function v(n){var t=parseFloat(n);return isNaN(t)?n:t}function b(n,t){for(var e=Object.create(null),i=n.split(","),o=0;o-1)return n.splice(e,1)}}var y=Object.prototype.hasOwnProperty;function x(n,t){return y.call(n,t)}function k(n){var t=Object.create(null);return function(e){return t[e]||(t[e]=n(e))}}var w=/-(\w)/g,_=k(function(n){return n.replace(w,function(n,t){return t?t.toUpperCase():""})}),C=k(function(n){return n.charAt(0).toUpperCase()+n.slice(1)}),S=/\B([A-Z])/g,O=k(function(n){return n.replace(S,"-$1").toLowerCase()});var $=Function.prototype.bind?function(n,t){return n.bind(t)}:function(n,t){function e(e){var i=arguments.length;return i?i>1?n.apply(t,arguments):n.call(t,e):n.call(t)}return e._length=n.length,e};function z(n,t){t=t||0;for(var e=n.length-t,i=new Array(e);e--;)i[e]=n[e+t];return i}function j(n,t){for(var e in t)n[e]=t[e];return n}function T(n){for(var t={},e=0;e0,J=K&&K.indexOf("edge/")>0,Z=(K&&K.indexOf("android"),K&&/iphone|ipad|ipod|ios/.test(K)||"ios"===X),nn=(K&&/chrome\/\d+/.test(K),K&&/phantomjs/.test(K),K&&K.match(/firefox\/(\d+)/)),tn={}.watch,en=!1;if(W)try{var on={};Object.defineProperty(on,"passive",{get:function(){en=!0}}),window.addEventListener("test-passive",null,on)}catch(n){}var rn=function(){return void 0===H&&(H=!W&&!Y&&void 0!==n&&(n.process&&"server"===n.process.env.VUE_ENV)),H},an=W&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function sn(n){return"function"==typeof n&&/native code/.test(n.toString())}var cn,ln="undefined"!=typeof Symbol&&sn(Symbol)&&"undefined"!=typeof Reflect&&sn(Reflect.ownKeys);cn="undefined"!=typeof Set&&sn(Set)?Set:function(){function n(){this.set=Object.create(null)}return n.prototype.has=function(n){return!0===this.set[n]},n.prototype.add=function(n){this.set[n]=!0},n.prototype.clear=function(){this.set=Object.create(null)},n}();var un=A,dn=0,fn=function(){this.id=dn++,this.subs=[]};fn.prototype.addSub=function(n){this.subs.push(n)},fn.prototype.removeSub=function(n){g(this.subs,n)},fn.prototype.depend=function(){fn.target&&fn.target.addDep(this)},fn.prototype.notify=function(){var n=this.subs.slice();for(var t=0,e=n.length;t-1)if(r&&!x(o,"default"))a=!1;else if(""===a||a===O(n)){var c=Un(String,o.type);(c<0||s0&&(dt((l=n(l,(e||"")+"_"+c))[0])&&dt(d)&&(i[u]=yn(d.text+l[0].text),l.shift()),i.push.apply(i,l)):s(l)?dt(d)?i[u]=yn(d.text+l):""!==l&&i.push(yn(l)):dt(l)&&dt(d)?i[u]=yn(d.text+l.text):(a(t._isVList)&&r(l.tag)&&o(l.key)&&r(e)&&(l.key="__vlist"+e+"_"+c+"__"),i.push(l)));return i}(n):void 0}function dt(n){return r(n)&&r(n.text)&&!1===n.isComment}function ft(n,t){if(n){for(var e=Object.create(null),i=ln?Reflect.ownKeys(n):Object.keys(n),o=0;o0,a=n?!!n.$stable:!r,s=n&&n.$key;if(n){if(n._normalized)return n._normalized;if(a&&e&&e!==i&&s===e.$key&&!r&&!e.$hasNormal)return e;for(var c in o={},n)n[c]&&"$"!==c[0]&&(o[c]=bt(t,c,n[c]))}else o={};for(var l in t)l in o||(o[l]=mt(t,l));return n&&Object.isExtensible(n)&&(n._normalized=o),U(o,"$stable",a),U(o,"$key",s),U(o,"$hasNormal",r),o}function bt(n,t,e){var i=function(){var n=arguments.length?e.apply(null,arguments):e({});return(n=n&&"object"==typeof n&&!Array.isArray(n)?[n]:ut(n))&&(0===n.length||1===n.length&&n[0].isComment)?void 0:n};return e.proxy&&Object.defineProperty(n,t,{get:i,enumerable:!0,configurable:!0}),i}function mt(n,t){return function(){return n[t]}}function gt(n,t){var e,i,o,a,s;if(Array.isArray(n)||"string"==typeof n)for(e=new Array(n.length),i=0,o=n.length;idocument.createEvent("Event").timeStamp&&(ue=function(){return de.now()})}function fe(){var n,t;for(le=ue(),se=!0,ie.sort(function(n,t){return n.id-t.id}),ce=0;cece&&ie[e].id>n.id;)e--;ie.splice(e+1,0,n)}else ie.push(n);ae||(ae=!0,et(fe))}}(this)},pe.prototype.run=function(){if(this.active){var n=this.get();if(n!==this.value||c(n)||this.deep){var t=this.value;if(this.value=n,this.user)try{this.cb.call(this.vm,n,t)}catch(n){Vn(n,this.vm,'callback for watcher "'+this.expression+'"')}else this.cb.call(this.vm,n,t)}}},pe.prototype.evaluate=function(){this.value=this.get(),this.dirty=!1},pe.prototype.depend=function(){for(var n=this.deps.length;n--;)this.deps[n].depend()},pe.prototype.teardown=function(){if(this.active){this.vm._isBeingDestroyed||g(this.vm._watchers,this);for(var n=this.deps.length;n--;)this.deps[n].removeSub(this);this.active=!1}};var ve={enumerable:!0,configurable:!0,get:A,set:A};function be(n,t,e){ve.get=function(){return this[t][e]},ve.set=function(n){this[t][e]=n},Object.defineProperty(n,e,ve)}function me(n){n._watchers=[];var t=n.$options;t.props&&function(n,t){var e=n.$options.propsData||{},i=n._props={},o=n.$options._propKeys=[];n.$parent&&Sn(!1);var r=function(r){o.push(r);var a=Mn(r,t,e,n);zn(i,r,a),r in n||be(n,"_props",r)};for(var a in t)r(a);Sn(!0)}(n,t.props),t.methods&&function(n,t){n.$options.props;for(var e in t)n[e]="function"!=typeof t[e]?A:$(t[e],n)}(n,t.methods),t.data?function(n){var t=n.$options.data;u(t=n._data="function"==typeof t?function(n,t){pn();try{return n.call(t,t)}catch(n){return Vn(n,t,"data()"),{}}finally{vn()}}(t,n):t||{})||(t={});var e=Object.keys(t),i=n.$options.props,o=(n.$options.methods,e.length);for(;o--;){var r=e[o];0,i&&x(i,r)||(a=void 0,36!==(a=(r+"").charCodeAt(0))&&95!==a&&be(n,"_data",r))}var a;$n(t,!0)}(n):$n(n._data={},!0),t.computed&&function(n,t){var e=n._computedWatchers=Object.create(null),i=rn();for(var o in t){var r=t[o],a="function"==typeof r?r:r.get;0,i||(e[o]=new pe(n,a||A,A,ge)),o in n||ye(n,o,r)}}(n,t.computed),t.watch&&t.watch!==tn&&function(n,t){for(var e in t){var i=t[e];if(Array.isArray(i))for(var o=0;o-1:"string"==typeof n?n.split(",").indexOf(t)>-1:!!d(n)&&n.test(t)}function je(n,t){var e=n.cache,i=n.keys,o=n._vnode;for(var r in e){var a=e[r];if(a){var s=$e(a.componentOptions);s&&!t(s)&&Te(e,r,i,o)}}}function Te(n,t,e,i){var o=n[t];!o||i&&o.tag===i.tag||o.componentInstance.$destroy(),n[t]=null,g(e,t)}!function(n){n.prototype._init=function(n){var t=this;t._uid=_e++,t._isVue=!0,n&&n._isComponent?function(n,t){var e=n.$options=Object.create(n.constructor.options),i=t._parentVnode;e.parent=t.parent,e._parentVnode=i;var o=i.componentOptions;e.propsData=o.propsData,e._parentListeners=o.listeners,e._renderChildren=o.children,e._componentTag=o.tag,t.render&&(e.render=t.render,e.staticRenderFns=t.staticRenderFns)}(t,n):t.$options=Ln(Ce(t.constructor),n||{},t),t._renderProxy=t,t._self=t,function(n){var t=n.$options,e=t.parent;if(e&&!t.abstract){for(;e.$options.abstract&&e.$parent;)e=e.$parent;e.$children.push(n)}n.$parent=e,n.$root=e?e.$root:n,n.$children=[],n.$refs={},n._watcher=null,n._inactive=null,n._directInactive=!1,n._isMounted=!1,n._isDestroyed=!1,n._isBeingDestroyed=!1}(t),function(n){n._events=Object.create(null),n._hasHookEvent=!1;var t=n.$options._parentListeners;t&&Gt(n,t)}(t),function(n){n._vnode=null,n._staticTrees=null;var t=n.$options,e=n.$vnode=t._parentVnode,o=e&&e.context;n.$slots=ht(t._renderChildren,o),n.$scopedSlots=i,n._c=function(t,e,i,o){return Ut(n,t,e,i,o,!1)},n.$createElement=function(t,e,i,o){return Ut(n,t,e,i,o,!0)};var r=e&&e.data;zn(n,"$attrs",r&&r.attrs||i,null,!0),zn(n,"$listeners",t._parentListeners||i,null,!0)}(t),ee(t,"beforeCreate"),function(n){var t=ft(n.$options.inject,n);t&&(Sn(!1),Object.keys(t).forEach(function(e){zn(n,e,t[e])}),Sn(!0))}(t),me(t),function(n){var t=n.$options.provide;t&&(n._provided="function"==typeof t?t.call(n):t)}(t),ee(t,"created"),t.$options.el&&t.$mount(t.$options.el)}}(Se),function(n){var t={get:function(){return this._data}},e={get:function(){return this._props}};Object.defineProperty(n.prototype,"$data",t),Object.defineProperty(n.prototype,"$props",e),n.prototype.$set=jn,n.prototype.$delete=Tn,n.prototype.$watch=function(n,t,e){if(u(t))return we(this,n,t,e);(e=e||{}).user=!0;var i=new pe(this,n,t,e);if(e.immediate)try{t.call(this,i.value)}catch(n){Vn(n,this,'callback for immediate watcher "'+i.expression+'"')}return function(){i.teardown()}}}(Se),function(n){var t=/^hook:/;n.prototype.$on=function(n,e){var i=this;if(Array.isArray(n))for(var o=0,r=n.length;o1?z(t):t;for(var e=z(arguments,1),i='event handler for "'+n+'"',o=0,r=t.length;oparseInt(this.max)&&Te(a,s[0],s,this._vnode)),t.data.keepAlive=!0}return t||n&&n[0]}}};!function(n){var t={get:function(){return P}};Object.defineProperty(n,"config",t),n.util={warn:un,extend:j,mergeOptions:Ln,defineReactive:zn},n.set=jn,n.delete=Tn,n.nextTick=et,n.observable=function(n){return $n(n),n},n.options=Object.create(null),D.forEach(function(t){n.options[t+"s"]=Object.create(null)}),n.options._base=n,j(n.options.components,Fe),function(n){n.use=function(n){var t=this._installedPlugins||(this._installedPlugins=[]);if(t.indexOf(n)>-1)return this;var e=z(arguments,1);return e.unshift(this),"function"==typeof n.install?n.install.apply(n,e):"function"==typeof n&&n.apply(null,e),t.push(n),this}}(n),function(n){n.mixin=function(n){return this.options=Ln(this.options,n),this}}(n),Oe(n),function(n){D.forEach(function(t){n[t]=function(n,e){return e?("component"===t&&u(e)&&(e.name=e.name||n,e=this.options._base.extend(e)),"directive"===t&&"function"==typeof e&&(e={bind:e,update:e}),this.options[t+"s"][n]=e,e):this.options[t+"s"][n]}})}(n)}(Se),Object.defineProperty(Se.prototype,"$isServer",{get:rn}),Object.defineProperty(Se.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(Se,"FunctionalRenderContext",{value:Et}),Se.version="2.6.10";var Ee=b("style,class"),Ne=b("input,textarea,option,select,progress"),Ie=b("contenteditable,draggable,spellcheck"),Be=b("events,caret,typing,plaintext-only"),Le=function(n,t){return Ue(t)||"false"===t?"false":"contenteditable"===n&&Be(t)?t:"true"},De=b("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,translate,truespeed,typemustmatch,visible"),Me="http://www.w3.org/1999/xlink",Pe=function(n){return":"===n.charAt(5)&&"xlink"===n.slice(0,5)},Re=function(n){return Pe(n)?n.slice(6,n.length):""},Ue=function(n){return null==n||!1===n};function Ve(n){for(var t=n.data,e=n,i=n;r(i.componentInstance);)(i=i.componentInstance._vnode)&&i.data&&(t=He(i.data,t));for(;r(e=e.parent);)e&&e.data&&(t=He(t,e.data));return function(n,t){if(r(n)||r(t))return qe(n,We(t));return""}(t.staticClass,t.class)}function He(n,t){return{staticClass:qe(n.staticClass,t.staticClass),class:r(n.class)?[n.class,t.class]:t.class}}function qe(n,t){return n?t?n+" "+t:n:t||""}function We(n){return Array.isArray(n)?function(n){for(var t,e="",i=0,o=n.length;i-1?vi(n,t,e):De(t)?Ue(e)?n.removeAttribute(t):(e="allowfullscreen"===t&&"EMBED"===n.tagName?"true":t,n.setAttribute(t,e)):Ie(t)?n.setAttribute(t,Le(t,e)):Pe(t)?Ue(e)?n.removeAttributeNS(Me,Re(t)):n.setAttributeNS(Me,t,e):vi(n,t,e)}function vi(n,t,e){if(Ue(e))n.removeAttribute(t);else{if(Q&&!G&&"TEXTAREA"===n.tagName&&"placeholder"===t&&""!==e&&!n.__ieph){var i=function(t){t.stopImmediatePropagation(),n.removeEventListener("input",i)};n.addEventListener("input",i),n.__ieph=!0}n.setAttribute(t,e)}}var bi={create:hi,update:hi};function mi(n,t){var e=t.elm,i=t.data,a=n.data;if(!(o(i.staticClass)&&o(i.class)&&(o(a)||o(a.staticClass)&&o(a.class)))){var s=Ve(t),c=e._transitionClasses;r(c)&&(s=qe(s,We(c))),s!==e._prevClass&&(e.setAttribute("class",s),e._prevClass=s)}}var gi,yi={create:mi,update:mi},xi="__r",ki="__c";function wi(n,t,e){var i=gi;return function o(){null!==t.apply(null,arguments)&&Si(n,o,e,i)}}var _i=Xn&&!(nn&&Number(nn[1])<=53);function Ci(n,t,e,i){if(_i){var o=le,r=t;t=r._wrapper=function(n){if(n.target===n.currentTarget||n.timeStamp>=o||n.timeStamp<=0||n.target.ownerDocument!==document)return r.apply(this,arguments)}}gi.addEventListener(n,t,en?{capture:e,passive:i}:e)}function Si(n,t,e,i){(i||gi).removeEventListener(n,t._wrapper||t,e)}function Oi(n,t){if(!o(n.data.on)||!o(t.data.on)){var e=t.data.on||{},i=n.data.on||{};gi=t.elm,function(n){if(r(n[xi])){var t=Q?"change":"input";n[t]=[].concat(n[xi],n[t]||[]),delete n[xi]}r(n[ki])&&(n.change=[].concat(n[ki],n.change||[]),delete n[ki])}(e),st(e,i,Ci,Si,wi,t.context),gi=void 0}}var $i,zi={create:Oi,update:Oi};function ji(n,t){if(!o(n.data.domProps)||!o(t.data.domProps)){var e,i,a=t.elm,s=n.data.domProps||{},c=t.data.domProps||{};for(e in r(c.__ob__)&&(c=t.data.domProps=j({},c)),s)e in c||(a[e]="");for(e in c){if(i=c[e],"textContent"===e||"innerHTML"===e){if(t.children&&(t.children.length=0),i===s[e])continue;1===a.childNodes.length&&a.removeChild(a.childNodes[0])}if("value"===e&&"PROGRESS"!==a.tagName){a._value=i;var l=o(i)?"":String(i);Ti(a,l)&&(a.value=l)}else if("innerHTML"===e&&Ke(a.tagName)&&o(a.innerHTML)){($i=$i||document.createElement("div")).innerHTML=""+i+"";for(var u=$i.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;u.firstChild;)a.appendChild(u.firstChild)}else if(i!==s[e])try{a[e]=i}catch(n){}}}}function Ti(n,t){return!n.composing&&("OPTION"===n.tagName||function(n,t){var e=!0;try{e=document.activeElement!==n}catch(n){}return e&&n.value!==t}(n,t)||function(n,t){var e=n.value,i=n._vModifiers;if(r(i)){if(i.number)return v(e)!==v(t);if(i.trim)return e.trim()!==t.trim()}return e!==t}(n,t))}var Ai={create:ji,update:ji},Fi=k(function(n){var t={},e=/:(.+)/;return n.split(/;(?![^(]*\))/g).forEach(function(n){if(n){var i=n.split(e);i.length>1&&(t[i[0].trim()]=i[1].trim())}}),t});function Ei(n){var t=Ni(n.style);return n.staticStyle?j(n.staticStyle,t):t}function Ni(n){return Array.isArray(n)?T(n):"string"==typeof n?Fi(n):n}var Ii,Bi=/^--/,Li=/\s*!important$/,Di=function(n,t,e){if(Bi.test(t))n.style.setProperty(t,e);else if(Li.test(e))n.style.setProperty(O(t),e.replace(Li,""),"important");else{var i=Pi(t);if(Array.isArray(e))for(var o=0,r=e.length;o-1?t.split(Vi).forEach(function(t){return n.classList.add(t)}):n.classList.add(t);else{var e=" "+(n.getAttribute("class")||"")+" ";e.indexOf(" "+t+" ")<0&&n.setAttribute("class",(e+t).trim())}}function qi(n,t){if(t&&(t=t.trim()))if(n.classList)t.indexOf(" ")>-1?t.split(Vi).forEach(function(t){return n.classList.remove(t)}):n.classList.remove(t),n.classList.length||n.removeAttribute("class");else{for(var e=" "+(n.getAttribute("class")||"")+" ",i=" "+t+" ";e.indexOf(i)>=0;)e=e.replace(i," ");(e=e.trim())?n.setAttribute("class",e):n.removeAttribute("class")}}function Wi(n){if(n){if("object"==typeof n){var t={};return!1!==n.css&&j(t,Yi(n.name||"v")),j(t,n),t}return"string"==typeof n?Yi(n):void 0}}var Yi=k(function(n){return{enterClass:n+"-enter",enterToClass:n+"-enter-to",enterActiveClass:n+"-enter-active",leaveClass:n+"-leave",leaveToClass:n+"-leave-to",leaveActiveClass:n+"-leave-active"}}),Xi=W&&!G,Ki="transition",Qi="animation",Gi="transition",Ji="transitionend",Zi="animation",no="animationend";Xi&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(Gi="WebkitTransition",Ji="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(Zi="WebkitAnimation",no="webkitAnimationEnd"));var to=W?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(n){return n()};function eo(n){to(function(){to(n)})}function io(n,t){var e=n._transitionClasses||(n._transitionClasses=[]);e.indexOf(t)<0&&(e.push(t),Hi(n,t))}function oo(n,t){n._transitionClasses&&g(n._transitionClasses,t),qi(n,t)}function ro(n,t,e){var i=so(n,t),o=i.type,r=i.timeout,a=i.propCount;if(!o)return e();var s=o===Ki?Ji:no,c=0,l=function(){n.removeEventListener(s,u),e()},u=function(t){t.target===n&&++c>=a&&l()};setTimeout(function(){c0&&(e=Ki,u=a,d=r.length):t===Qi?l>0&&(e=Qi,u=l,d=c.length):d=(e=(u=Math.max(a,l))>0?a>l?Ki:Qi:null)?e===Ki?r.length:c.length:0,{type:e,timeout:u,propCount:d,hasTransform:e===Ki&&ao.test(i[Gi+"Property"])}}function co(n,t){for(;n.length1}function vo(n,t){!0!==t.data.show&&uo(t)}var bo=function(n){var t,e,i={},c=n.modules,l=n.nodeOps;for(t=0;tp?y(n,o(e[m+1])?null:e[m+1].elm,e,h,m,i):h>m&&k(0,t,f,p)}(f,b,m,e,u):r(m)?(r(n.text)&&l.setTextContent(f,""),y(f,null,m,0,m.length-1,e)):r(b)?k(0,b,0,b.length-1):r(n.text)&&l.setTextContent(f,""):n.text!==t.text&&l.setTextContent(f,t.text),r(p)&&r(h=p.hook)&&r(h=h.postpatch)&&h(n,t)}}}function S(n,t,e){if(a(e)&&r(n.parent))n.parent.data.pendingInsert=t;else for(var i=0;i-1,a.selected!==r&&(a.selected=r);else if(N(ko(a),i))return void(n.selectedIndex!==s&&(n.selectedIndex=s));o||(n.selectedIndex=-1)}}function xo(n,t){return t.every(function(t){return!N(t,n)})}function ko(n){return"_value"in n?n._value:n.value}function wo(n){n.target.composing=!0}function _o(n){n.target.composing&&(n.target.composing=!1,Co(n.target,"input"))}function Co(n,t){var e=document.createEvent("HTMLEvents");e.initEvent(t,!0,!0),n.dispatchEvent(e)}function So(n){return!n.componentInstance||n.data&&n.data.transition?n:So(n.componentInstance._vnode)}var Oo={model:mo,show:{bind:function(n,t,e){var i=t.value,o=(e=So(e)).data&&e.data.transition,r=n.__vOriginalDisplay="none"===n.style.display?"":n.style.display;i&&o?(e.data.show=!0,uo(e,function(){n.style.display=r})):n.style.display=i?r:"none"},update:function(n,t,e){var i=t.value;!i!=!t.oldValue&&((e=So(e)).data&&e.data.transition?(e.data.show=!0,i?uo(e,function(){n.style.display=n.__vOriginalDisplay}):fo(e,function(){n.style.display="none"})):n.style.display=i?n.__vOriginalDisplay:"none")},unbind:function(n,t,e,i,o){o||(n.style.display=n.__vOriginalDisplay)}}},$o={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function zo(n){var t=n&&n.componentOptions;return t&&t.Ctor.options.abstract?zo(Yt(t.children)):n}function jo(n){var t={},e=n.$options;for(var i in e.propsData)t[i]=n[i];var o=e._parentListeners;for(var r in o)t[_(r)]=o[r];return t}function To(n,t){if(/\d-keep-alive$/.test(t.tag))return n("keep-alive",{props:t.componentOptions.propsData})}var Ao=function(n){return n.tag||Wt(n)},Fo=function(n){return"show"===n.name},Eo={name:"transition",props:$o,abstract:!0,render:function(n){var t=this,e=this.$slots.default;if(e&&(e=e.filter(Ao)).length){0;var i=this.mode;0;var o=e[0];if(function(n){for(;n=n.parent;)if(n.data.transition)return!0}(this.$vnode))return o;var r=zo(o);if(!r)return o;if(this._leaving)return To(n,o);var a="__transition-"+this._uid+"-";r.key=null==r.key?r.isComment?a+"comment":a+r.tag:s(r.key)?0===String(r.key).indexOf(a)?r.key:a+r.key:r.key;var c=(r.data||(r.data={})).transition=jo(this),l=this._vnode,u=zo(l);if(r.data.directives&&r.data.directives.some(Fo)&&(r.data.show=!0),u&&u.data&&!function(n,t){return t.key===n.key&&t.tag===n.tag}(r,u)&&!Wt(u)&&(!u.componentInstance||!u.componentInstance._vnode.isComment)){var d=u.data.transition=j({},c);if("out-in"===i)return this._leaving=!0,ct(d,"afterLeave",function(){t._leaving=!1,t.$forceUpdate()}),To(n,o);if("in-out"===i){if(Wt(r))return l;var f,h=function(){f()};ct(c,"afterEnter",h),ct(c,"enterCancelled",h),ct(d,"delayLeave",function(n){f=n})}}return o}}},No=j({tag:String,moveClass:String},$o);function Io(n){n.elm._moveCb&&n.elm._moveCb(),n.elm._enterCb&&n.elm._enterCb()}function Bo(n){n.data.newPos=n.elm.getBoundingClientRect()}function Lo(n){var t=n.data.pos,e=n.data.newPos,i=t.left-e.left,o=t.top-e.top;if(i||o){n.data.moved=!0;var r=n.elm.style;r.transform=r.WebkitTransform="translate("+i+"px,"+o+"px)",r.transitionDuration="0s"}}delete No.mode;var Do={Transition:Eo,TransitionGroup:{props:No,beforeMount:function(){var n=this,t=this._update;this._update=function(e,i){var o=Zt(n);n.__patch__(n._vnode,n.kept,!1,!0),n._vnode=n.kept,o(),t.call(n,e,i)}},render:function(n){for(var t=this.tag||this.$vnode.data.tag||"span",e=Object.create(null),i=this.prevChildren=this.children,o=this.$slots.default||[],r=this.children=[],a=jo(this),s=0;s-1?Ge[n]=t.constructor===window.HTMLUnknownElement||t.constructor===window.HTMLElement:Ge[n]=/HTMLUnknownElement/.test(t.toString())},j(Se.options.directives,Oo),j(Se.options.components,Do),Se.prototype.__patch__=W?bo:A,Se.prototype.$mount=function(n,t){return function(n,t,e){var i;return n.$el=t,n.$options.render||(n.$options.render=gn),ee(n,"beforeMount"),i=function(){n._update(n._render(),e)},new pe(n,i,A,{before:function(){n._isMounted&&!n._isDestroyed&&ee(n,"beforeUpdate")}},!0),e=!1,null==n.$vnode&&(n._isMounted=!0,ee(n,"mounted")),n}(this,n=n&&W?function(n){if("string"==typeof n){var t=document.querySelector(n);return t||document.createElement("div")}return n}(n):void 0,t)},W&&setTimeout(function(){P.devtools&&an&&an.emit("init",Se)},0),t.default=Se}.call(this,e(15),e(26).setImmediate)},function(n,t,e){"use strict";e.d(t,"d",function(){return i}),e.d(t,"a",function(){return o}),e.d(t,"c",function(){return r}),e.d(t,"e",function(){return a}),e.d(t,"b",function(){return s});var i="#f44",o="#1989fa",r="#07c160",a="#fff",s="#969799"},function(n,t,e){"use strict";e.d(t,"a",function(){return i}),e.d(t,"b",function(){return o});var i={QUOTA_LIMIT:0,STOCK_LIMIT:1},o="";t.c={LIMIT_TYPE:i,UNSELECTED_SKU_VALUE_ID:o}},function(n,t,e){"use strict";(function(n){e.d(t,"b",function(){return c}),e.d(t,"a",function(){return l});var i=e(0),o=Date.now();var r=i.h?n:window,a=r.requestAnimationFrame||function(n){var t=Date.now(),e=Math.max(0,16-(t-o)),i=setTimeout(n,e);return o=t+e,i},s=r.cancelAnimationFrame||r.clearTimeout;function c(n){return a.call(r,n)}function l(n){s.call(r,n)}}).call(this,e(15))},function(n,t,e){"use strict";function i(n,t,e,i,o,r,a,s){var c,l="function"==typeof n?n.options:n;if(t&&(l.render=t,l.staticRenderFns=e,l._compiled=!0),i&&(l.functional=!0),r&&(l._scopeId="data-v-"+r),a?(c=function(n){(n=n||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(n=__VUE_SSR_CONTEXT__),o&&o.call(this,n),n&&n._registeredComponents&&n._registeredComponents.add(a)},l._ssrRegister=c):o&&(c=s?function(){o.call(this,this.$root.$options.shadowRoot)}:o),c)if(l.functional){l._injectStyles=c;var u=l.render;l.render=function(n,t){return c.call(t),u(n,t)}}else{var d=l.beforeCreate;l.beforeCreate=d?[].concat(d,c):[c]}return{exports:n,options:l}}e.d(t,"a",function(){return i})},function(n,t,e){"use strict";var i=e(3),o=e(19),r=e(20),a=i.default.prototype,s=i.default.util.defineReactive;s(a,"$vantLang","zh-CN"),s(a,"$vantMessages",{"zh-CN":r.a}),t.a={messages:function(){return a.$vantMessages[a.$vantLang]},use:function(n,t){var e;a.$vantLang=n,this.add(((e={})[n]=t,e))},add:function(n){void 0===n&&(n={}),Object(o.a)(a.$vantMessages,n)}}},function(n,t,e){n.exports=function(n){var t={};function e(i){if(t[i])return t[i].exports;var o=t[i]={i:i,l:!1,exports:{}};return n[i].call(o.exports,o,o.exports,e),o.l=!0,o.exports}return e.m=n,e.c=t,e.d=function(n,t,i){e.o(n,t)||Object.defineProperty(n,t,{configurable:!1,enumerable:!0,get:i})},e.n=function(n){var t=n&&n.__esModule?function(){return n.default}:function(){return n};return e.d(t,"a",t),t},e.o=function(n,t){return Object.prototype.hasOwnProperty.call(n,t)},e.p="dist/",e(e.s=3)}([function(n,t){n.exports=function(n){var t=[];return t.toString=function(){return this.map(function(t){var e=function(n,t){var e=n[1]||"",i=n[3];if(!i)return e;if(t&&"function"==typeof btoa){var o=(a=i,"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(a))))+" */"),r=i.sources.map(function(n){return"/*# sourceURL="+i.sourceRoot+n+" */"});return[e].concat(r).concat([o]).join("\n")}var a;return[e].join("\n")}(t,n);return t[2]?"@media "+t[2]+"{"+e+"}":e}).join("")},t.i=function(n,e){"string"==typeof n&&(n=[[null,n,""]]);for(var i={},o=0;oe.parts.length&&(i.parts.length=e.parts.length)}else{var a=[];for(o=0;o"+n.slice(1).join(" ")+""}}},u={render:function(){var n=this,t=n.$createElement,e=n._self._c||t;return n.item.path?e("router-link",{attrs:{"active-class":"active",to:n.base+n.item.path},domProps:{innerHTML:n._s(n.itemName)}}):n.item.link?e("a",{attrs:{href:n.item.link},domProps:{innerHTML:n._s(n.itemName)}}):e("a",{domProps:{innerHTML:n._s(n.itemName)}})},staticRenderFns:[]},d=e(1)(l,u,!1,null,null,null).exports,f={name:"van-doc-nav",components:(s={},s[d.name]=d,s),props:{navConfig:Array,base:{type:String,default:""}},data:function(){return{top:60,bottom:0}},computed:{style:function(){return{top:this.top+"px",bottom:this.bottom+"px"}}},created:function(){window.addEventListener("scroll",this.onScroll),this.onScroll()},methods:{onScroll:function(){var n=window.pageYOffset;this.top=Math.max(0,60-n)}}},h={render:function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{staticClass:"van-doc-nav",style:n.style},n._l(n.navConfig,function(t,i){return e("div",{key:i,staticClass:"van-doc-nav__item"},[e("van-doc-nav-link",{attrs:{item:t,base:n.base}}),n._v(" "),t.children?e("div",n._l(t.children,function(t,i){return e("div",{key:i,staticClass:"nav-item"},[e("van-doc-nav-link",{attrs:{item:t,base:n.base}})],1)})):n._e(),n._v(" "),n._l(t.groups,function(i,o){return t.groups?e("div",{key:o},[e("div",{staticClass:"van-doc-nav__group-title"},[n._v(n._s(i.groupName))]),n._v(" "),e("div",n._l(i.list,function(t,i){return t.disabled?n._e():e("div",{key:i,staticClass:"van-doc-nav__subitem"},[e("van-doc-nav-link",{attrs:{item:t,base:n.base}})],1)}))]):n._e()})],2)}))},staticRenderFns:[]};var p=e(1)(f,h,!1,function(n){e(8)},null,null).exports,v={render:function(){var n=this.$createElement;return(this._self._c||n)("div",{staticClass:"van-doc-block"},[this._t("default")],2)},staticRenderFns:[]};var b=e(1)({name:"van-doc-block"},v,!1,function(n){e(10)},null,null).exports,m={name:"van-doc-header",props:{config:Object,active:String},methods:{onSwitchLang:function(n){this.$router.push(this.$route.path.replace(n.from,n.to))}}},g={render:function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{staticClass:"van-doc-header"},[e("div",{staticClass:"van-doc-row"},[e("div",{staticClass:"van-doc-header__top"},[e("a",{staticClass:"van-doc-header__logo",attrs:{href:n.config.logo.href}},[e("img",{attrs:{src:n.config.logo.image}}),n._v(" "),e("span",[n._v(n._s(n.config.logo.title))]),n._v(" "),n.config.logo.version?e("span",{staticClass:"van-doc-header__version"},[n._v("v"+n._s(n.config.logo.version))]):n._e()]),n._v(" "),e("ul",{staticClass:"van-doc-header__top-nav"},n._l(n.config.nav,function(t,i){return e("li",{staticClass:"van-doc-header__top-nav-item",class:{active:i===n.active}},[e("a",{staticClass:"van-doc-header__top-nav-title",class:{active:i===n.active,link:"string"==typeof t&&"github"!==i},attrs:{href:"string"==typeof t?t:"javascript:;",target:"github"===i?"_blank":""}},["github"===i?e("svg",{staticClass:"octicon octicon-mark-github",attrs:{height:"28",width:"28",viewBox:"0 0 16 16",version:"1.1","aria-hidden":"true"}},[e("path",{attrs:{"fill-rule":"evenodd",d:"M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z"}})]):"lang"===i?e("span",{staticClass:"van-doc-header__top-nav-lang",on:{click:function(e){n.onSwitchLang(t)}}},[n._v(n._s(t.text))]):e("span",[n._v(n._s(i))])])])}))])])])},staticRenderFns:[]};var y=e(1)(m,g,!1,function(n){e(12)},null,null).exports,x={name:"van-doc-footer",props:{config:Object}},k={render:function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{staticClass:"van-doc-footer"},[e("ul",n._l(n.config.nav,function(t,i){return e("li",{key:i,staticClass:"van-doc-footer__item"},[e("a",{attrs:{href:t,target:"_blank"}},[n._v(n._s(i))])])})),n._v(" "),n.config.github?e("a",{staticClass:"github-corner",attrs:{href:n.config.github,target:"_blank","aria-label":"View source on Github"}},[e("svg",{attrs:{width:"100",height:"100",viewBox:"0 0 250 250","aria-hidden":"true"}},[e("path",{staticClass:"octo-arm",staticStyle:{"transform-origin":"130px 106px"},attrs:{d:"M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2",fill:"currentColor"}}),n._v(" "),e("path",{staticClass:"octo-body",attrs:{d:"M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z",fill:"currentColor"}})])]):n._e()])},staticRenderFns:[]};var w=e(1)(x,k,!1,function(n){e(14)},null,null).exports,_={render:function(){var n=this.$createElement;return(this._self._c||n)("div",{class:["van-doc-content","van-doc-content--"+this.currentPage]},[this._t("default")],2)},staticRenderFns:[]};var C=e(1)({name:"van-doc-content",computed:{currentPage:function(){var n=this.$route.path;return n?n.split("/").slice(-1)[0]:this.$route.name}}},_,!1,function(n){e(16)},null,null).exports,S={name:"van-doc-container",props:{hasSimulator:Boolean}},O={render:function(){var n=this.$createElement;return(this._self._c||n)("div",{staticClass:"van-doc-container van-doc-row",class:{"van-doc-container--with-simulator":this.hasSimulator}},[this._t("default")],2)},staticRenderFns:[]};var $=e(1)(S,O,!1,function(n){e(18)},null,null).exports,z={name:"van-doc-simulator",props:{src:String},data:function(){return{scrollTop:window.scrollY,windowHeight:window.innerHeight}},mounted:function(){var n=this;window.addEventListener("scroll",function(){n.scrollTop=window.scrollY}),window.addEventListener("resize",function(){n.windowHeight=window.innerHeight})},computed:{isFixed:function(){return this.scrollTop>60},simulatorStyle:function(){return{height:Math.min(640,this.windowHeight-90)+"px"}}}},j={render:function(){var n=this.$createElement,t=this._self._c||n;return t("div",{class:["van-doc-simulator",{"van-doc-simulator-fixed":this.isFixed}]},[t("iframe",{ref:"iframe",style:this.simulatorStyle,attrs:{src:this.src,frameborder:"0"}})])},staticRenderFns:[]};var T=e(1)(z,j,!1,function(n){e(20)},null,null).exports,A={name:"van-doc-demo-block",props:{title:String}},F={render:function(){var n=this.$createElement,t=this._self._c||n;return t("section",{staticClass:"van-doc-demo-block"},[t("h2",{staticClass:"van-doc-demo-block__title"},[this._v(this._s(this.title))]),this._v(" "),this._t("default")],2)},staticRenderFns:[]};var E=e(1)(A,F,!1,function(n){e(22)},null,null).exports,N={name:"van-doc-demo-section",props:{name:String,title:String,background:String},computed:{demoName:function(){return this.name||this.getParentName()},style:function(){return{background:this.background}}},methods:{getParentName:function(){var n=this.$parent;if(n&&n.$options.name)return n.$options.name.replace("demo-","")}}},I={render:function(){var n=this.$createElement;return(this._self._c||n)("section",{staticClass:"van-doc-demo-section",class:"demo-"+this.demoName,style:this.style},[this._t("default")],2)},staticRenderFns:[]};var B=e(1)(N,I,!1,function(n){e(24)},null,null).exports,L=e(26),D=e.n(L);e(27);t.default=function(){M.map(function(n){o.a.component(n.name,n)})},e.d(t,"Nav",function(){return p}),e.d(t,"Header",function(){return y}),e.d(t,"Footer",function(){return w}),e.d(t,"VanDoc",function(){return c}),e.d(t,"Block",function(){return b}),e.d(t,"Content",function(){return C}),e.d(t,"Container",function(){return $}),e.d(t,"Simulator",function(){return T}),e.d(t,"DemoBlock",function(){return E}),e.d(t,"DemoSection",function(){return B}),e.d(t,"progress",function(){return D.a});var M=[p,y,w,c,b,C,$,T,E,B]},function(n,t){n.exports=e(3)},function(n,t,e){var i=e(6);"string"==typeof i&&(i=[[n.i,i,""]]),i.locals&&(n.exports=i.locals);e(2)("4ea92526",i,!0)},function(n,t,e){(n.exports=e(0)(void 0)).push([n.i,'body{color:#333;font-size:16px;min-width:1100px;overflow-x:auto;background-color:#fff;-webkit-font-smoothing:antialiased;font-family:PingFang SC,Helvetica Neue,Arial,sans-serif}body,p{margin:0}h1,h2,h3,h4,h5,h6{margin:0;font-size:inherit}ol,ul{margin:0;padding:0;list-style:none}a{text-decoration:none}.van-doc-row{width:100%}@media (min-width:1440px){.van-doc-row{width:1440px;margin:0 auto}}code{display:block;font-size:13px;overflow-x:auto;font-weight:400;line-height:22px;border-radius:3px;margin-bottom:25px;position:relative;word-break:break-all;white-space:pre-wrap;color:#455a64;padding:18px 10px 18px 20px;background-color:#f1f4f8;font-family:Source Code Pro,Monaco,Inconsolata,monospace}code:after{top:5px;right:10px;position:absolute;color:#ccc;font-size:12px}pre{margin:0}pre+pre{margin-top:-10px}code.language-html:after{content:"HTML"}code.language-javascript:after{content:"JS"}code.language-css:after{content:"CSS"}.hljs{display:block;overflow-x:auto;padding:.5em;background:#fff}.hljs-subst{color:#455a64}.hljs-addition,.hljs-meta,.hljs-string,.hljs-symbol,.hljs-template-tag,.hljs-template-variable{color:#5758bb}.hljs-comment,.hljs-quote{color:#999}.hljs-bullet,.hljs-link,.hljs-literal,.hljs-number,.hljs-regexp{color:#32a973}.hljs-deletion,.hljs-variable{color:#88f}.hljs-built_in,.hljs-doctag,.hljs-keyword,.hljs-name,.hljs-section,.hljs-selector-class,.hljs-selector-id,.hljs-selector-tag,.hljs-strong,.hljs-tag,.hljs-title,.hljs-type{color:#0079f3}.hljs-emphasis{font-style:italic}.hljs-attribute{color:#e6550d}',""])},function(n,t){n.exports=function(n,t){for(var e=[],i={},o=0;oa{font-weight:700}.van-doc-nav__subitem a{font-size:14px}.van-doc-nav__subitem a:hover{color:#0079f3}.van-doc-nav__subitem span{opacity:.6;font-size:13px}.van-doc-nav__group-title{font-size:12px;line-height:40px;padding-left:40px;color:rgba(69,90,100,.6)}@media (max-width:1300px){.van-doc-nav{min-width:220px;max-width:220px}.van-doc-nav__item a,.van-doc-nav__subitem a{line-height:22px}.van-doc-nav__subitem a{font-size:13px}}",""])},function(n,t,e){var i=e(11);"string"==typeof i&&(i=[[n.i,i,""]]),i.locals&&(n.exports=i.locals);e(2)("2cefc454",i,!0)},function(n,t,e){(n.exports=e(0)(void 0)).push([n.i,".van-doc-block{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:20px}.van-doc-block .highlight{-webkit-box-flex:1;-ms-flex:1;flex:1;-webkit-box-sizing:border-box;box-sizing:border-box}.van-doc-block .highlight pre{word-break:break-all}",""])},function(n,t,e){var i=e(13);"string"==typeof i&&(i=[[n.i,i,""]]),i.locals&&(n.exports=i.locals);e(2)("25593cb0",i,!0)},function(n,t,e){(n.exports=e(0)(void 0)).push([n.i,'.van-doc-header{width:100%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border-bottom:1px solid #f1f4f8}.van-doc-header__top{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:#fff;padding:0 40px;height:60px;line-height:60px}.van-doc-header__top-nav{-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:right}.van-doc-header__top-nav>li{display:inline-block;position:relative;vertical-align:middle}.van-doc-header__top-nav-lang{padding:0 7px;font-size:14px;line-height:24px;display:block;border-radius:3px;text-align:center;color:#455a64;border:1px solid currentColor;font-family:Helvetica Neue,Arial,sans-serif;-webkit-transition:.3s ease-in-out;transition:.3s ease-in-out}.van-doc-header__top-nav-lang:hover{color:#0079f3}.van-doc-header__top-nav-item{margin:0 15px}.van-doc-header__top-nav-title{display:block;font-size:15px}.van-doc-header__top-nav-title svg{fill:#455a64;display:block;vertical-align:middle;-webkit-transition:.3s ease-in-out;transition:.3s ease-in-out}.van-doc-header__top-nav-title svg:hover{fill:#0079f3}.van-doc-header__top-nav-title.link{color:#34495e;border-bottom:1px solid transparent;-webkit-transition:.3s ease-in-out;transition:.3s ease-in-out}.van-doc-header__top-nav-title.link.active,.van-doc-header__top-nav-title.link:hover{color:#0079f3;border-bottom-color:#19b5fe}.van-doc-header__top-nav .van-doc-header__arrow:hover{color:#34495e}.van-doc-header__top-nav .van-doc-header__arrow:after{content:"";display:inline-block;vertical-align:middle;margin-top:-1px;margin-left:1px;margin-right:-4px;width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid #ccc;pointer-events:none}.van-doc-header__logo{display:block}.van-doc-header__logo img,.van-doc-header__logo span{display:inline-block;vertical-align:middle}.van-doc-header__logo img{width:24px;margin-right:5px}.van-doc-header__logo span{font-size:22px;color:#333;font-family:Dosis,Source Sans Pro,Helvetica Neue,Arial,sans-serif}.van-doc-header__logo .van-doc-header__version{font-size:90%;padding-top:7px;opacity:.7;margin-left:3px;line-height:1}.van-doc-header__bottom{height:50px;line-height:50px}.van-doc-header__bottom-nav{text-align:center}.van-doc-header__bottom-nav li{display:inline-block}.van-doc-header__bottom-nav a{color:#fff;opacity:.8;display:block;padding:0 20px;font-size:14px}.van-doc-header__bottom-nav a.active{background-color:hsla(0,0%,100%,.1)}.van-doc-header__bottom-nav a.active,.van-doc-header__bottom-nav a:hover{opacity:1}',""])},function(n,t,e){var i=e(15);"string"==typeof i&&(i=[[n.i,i,""]]),i.locals&&(n.exports=i.locals);e(2)("71d7b96b",i,!0)},function(n,t,e){(n.exports=e(0)(void 0)).push([n.i,".van-doc-footer{position:relative;background-color:#061a2a}.van-doc-footer ul{text-align:center}.van-doc-footer__item{margin-right:45px;display:inline-block}.van-doc-footer__item a{color:#b3b3b3;display:block;font-size:13px;line-height:72px;-webkit-transition:color .3s ease-in-out;transition:color .3s ease-in-out}.van-doc-footer__item a:hover{color:#fff}.github-corner{position:absolute;top:-50px;right:61px;height:50px;width:40px;overflow:hidden}.github-corner svg{fill:transparent;color:#fff;position:absolute;border:0;right:-29px;opacity:.9;-webkit-transition:.3s;transition:.3s;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.github-corner svg:hover{opacity:1;-webkit-transform:rotate(-45deg) scale(1.15)!important;transform:rotate(-45deg) scale(1.15)!important}.github-corner .octo-arm{-webkit-animation:octocat-wave 3s ease-in-out infinite;animation:octocat-wave 3s ease-in-out infinite}@-webkit-keyframes octocat-wave{0%,to{-webkit-transform:rotate(0);transform:rotate(0)}20%,60%{-webkit-transform:rotate(-25deg);transform:rotate(-25deg)}40%,80%{-webkit-transform:rotate(10deg);transform:rotate(10deg)}}@keyframes octocat-wave{0%,to{-webkit-transform:rotate(0);transform:rotate(0)}20%,60%{-webkit-transform:rotate(-25deg);transform:rotate(-25deg)}40%,80%{-webkit-transform:rotate(10deg);transform:rotate(10deg)}}",""])},function(n,t,e){var i=e(17);"string"==typeof i&&(i=[[n.i,i,""]]),i.locals&&(n.exports=i.locals);e(2)("279782d6",i,!0)},function(n,t,e){(n.exports=e(0)(void 0)).push([n.i,'.van-doc-content{-webkit-box-flex:1;-ms-flex:1;flex:1;position:relative;padding:0 0 75px}.van-doc-content a{color:#0079f3}.van-doc-content section{padding:13px 40px;overflow:hidden}.van-doc-content section>h1,.van-doc-content section>h2,.van-doc-content section>h3,.van-doc-content section>h4,.van-doc-content section>h5,.van-doc-content section>h6{line-height:1.5;font-weight:400;margin:20px 0 10px;color:#333}.van-doc-content section>h1{font-size:36px}.van-doc-content section>h2{font-size:30px;margin-bottom:25px}.van-doc-content section>h3{font-size:22px;margin-top:45px}.van-doc-content section>h2+h3{margin-top:25px}.van-doc-content section>h4{font-size:16px;margin-bottom:15px}.van-doc-content section>h5{font-size:14px}.van-doc-content section>h6{font-size:14px;color:#666}.van-doc-content section>p{margin:15px 0;font-size:14px;line-height:26px;color:#34495e}.van-doc-content section>ol li,.van-doc-content section>ul li{color:#34495e;font-size:14px;line-height:22px;margin:5px 0 5px 10px;padding-left:15px;position:relative}.van-doc-content section>ol li:before,.van-doc-content section>ul li:before{content:"";position:absolute;top:0;left:0;width:6px;height:6px;margin-top:8px;border-radius:50%;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid #666}.van-doc-content section>ol li li,.van-doc-content section>ul li li{margin-left:0}.van-doc-content section>hr{border:0 none;border-top:1px solid #eee}.van-doc-content section li>code,.van-doc-content section p>code,.van-doc-content section table code{margin:2px;padding:2px 7px;display:inline}.van-doc-content blockquote{padding:16px;margin:20px 0;font-size:14px;border-radius:4px;background-color:#ecf9ff;color:rgba(52,73,94,.8);border-left:5px solid #50bfff}.van-doc-content table{width:100%;font-size:13px;line-height:1.5;margin-bottom:45px;background-color:#fff;border-collapse:collapse;color:#34495e}.van-doc-content table th{padding:8px 10px;text-align:left;font-weight:400;background-color:#f1f4f8}.van-doc-content table th:first-child{padding-left:10px}.van-doc-content table td{padding:8px;border-bottom:1px solid #f1f4f8}.van-doc-content table code{font-size:13px;padding:0 8px;font-family:inherit;word-break:keep-all}.van-doc-content--changelog strong{font-size:16px;font-weight:500}.van-doc-content--changelog section{padding-bottom:30px}.van-doc-content--changelog section>h2{margin-top:50px;margin-bottom:10px}.van-doc-content--changelog section>h2+p,.van-doc-content--changelog section>h2+p code{margin:0}.van-doc-content--changelog section>h2 a{color:inherit;font-size:24px;-webkit-font-smoothing:auto}.van-doc-content--changelog section>h2:first-child,.van-doc-content--changelog section>h2:nth-child(2){margin-top:20px}',""])},function(n,t,e){var i=e(19);"string"==typeof i&&(i=[[n.i,i,""]]),i.locals&&(n.exports=i.locals);e(2)("62581546",i,!0)},function(n,t,e){(n.exports=e(0)(void 0)).push([n.i,".van-doc-container{overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;background-color:#fff;padding-left:240px}.van-doc-container--with-simulator{padding-right:400px}@media (max-width:1300px){.van-doc-container--with-simulator{padding-right:360px}}",""])},function(n,t,e){var i=e(21);"string"==typeof i&&(i=[[n.i,i,""]]),i.locals&&(n.exports=i.locals);e(2)("f4085a02",i,!0)},function(n,t,e){(n.exports=e(0)(void 0)).push([n.i,".van-doc-simulator{z-index:1;overflow:hidden;position:absolute;border-radius:6px;background:#fafafa;-webkit-box-sizing:border-box;box-sizing:border-box;right:40px;width:360px;min-width:360px;top:100px;-webkit-box-shadow:#ebedf0 0 4px 12px;box-shadow:0 4px 12px #ebedf0}@media (max-width:1300px){.van-doc-simulator{width:320px;min-width:320px}}@media (max-width:1100px){.van-doc-simulator{left:750px;right:auto}}@media (min-width:1440px){.van-doc-simulator{right:50%;margin-right:-680px}}.van-doc-simulator-fixed{position:fixed;top:40px}.van-doc-simulator iframe{width:100%;display:block}",""])},function(n,t,e){var i=e(23);"string"==typeof i&&(i=[[n.i,i,""]]),i.locals&&(n.exports=i.locals);e(2)("4f1c5121",i,!0)},function(n,t,e){(n.exports=e(0)(void 0)).push([n.i,".van-doc-demo-block__title{margin:0;font-weight:400;font-size:14px;color:rgba(69,90,100,.6);padding:35px 15px 15px}.van-doc-demo-block:first-of-type .van-doc-demo-block__title{padding-top:20px}",""])},function(n,t,e){var i=e(25);"string"==typeof i&&(i=[[n.i,i,""]]),i.locals&&(n.exports=i.locals);e(2)("9caa41b0",i,!0)},function(n,t,e){(n.exports=e(0)(void 0)).push([n.i,".van-doc-demo-section{min-height:100vh;padding-bottom:20px;-webkit-box-sizing:border-box;box-sizing:border-box}.van-doc-demo-section__title{margin:0;padding:15px;font-size:16px;line-height:1.5;font-weight:400;text-transform:capitalize}.van-doc-demo-section__title+.van-doc-demo-block .van-doc-demo-block__title{padding-top:0}",""])},function(n,t,e){var i,o;"function"==typeof Symbol&&Symbol.iterator;void 0===(o="function"==typeof(i=function(){var n,t,e={version:"0.2.0"},i=e.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'
'};function o(n,t,e){return ne?e:n}function r(n){return 100*(-1+n)}e.configure=function(n){var t,e;for(t in n)void 0!==(e=n[t])&&n.hasOwnProperty(t)&&(i[t]=e);return this},e.status=null,e.set=function(n){var t=e.isStarted();n=o(n,i.minimum,1),e.status=1===n?null:n;var c=e.render(!t),l=c.querySelector(i.barSelector),u=i.speed,d=i.easing;return c.offsetWidth,a(function(t){""===i.positionUsing&&(i.positionUsing=e.getPositioningCSS()),s(l,function(n,t,e){var o;return(o="translate3d"===i.positionUsing?{transform:"translate3d("+r(n)+"%,0,0)"}:"translate"===i.positionUsing?{transform:"translate("+r(n)+"%,0)"}:{"margin-left":r(n)+"%"}).transition="all "+t+"ms "+e,o}(n,u,d)),1===n?(s(c,{transition:"none",opacity:1}),c.offsetWidth,setTimeout(function(){s(c,{transition:"all "+u+"ms linear",opacity:0}),setTimeout(function(){e.remove(),t()},u)},u)):setTimeout(t,u)}),this},e.isStarted=function(){return"number"==typeof e.status},e.start=function(){return e.status||e.set(0),i.trickle&&function n(){setTimeout(function(){e.status&&(e.trickle(),n())},i.trickleSpeed)}(),this},e.done=function(n){return n||e.status?e.inc(.3+.5*Math.random()).set(1):this},e.inc=function(n){var t=e.status;return t?("number"!=typeof n&&(n=(1-t)*o(Math.random()*t,.1,.95)),t=o(t+n,0,.994),e.set(t)):e.start()},e.trickle=function(){return e.inc(Math.random()*i.trickleRate)},n=0,t=0,e.promise=function(i){return i&&"resolved"!==i.state()?(0===t&&e.start(),n++,t++,i.always(function(){0==--t?(n=0,e.done()):e.set((n-t)/n)}),this):this},e.render=function(n){if(e.isRendered())return document.getElementById("nprogress");l(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=i.template;var o,a=t.querySelector(i.barSelector),c=n?"-100":r(e.status||0),u=document.querySelector(i.parent);return s(a,{transition:"all 0 linear",transform:"translate3d("+c+"%,0,0)"}),i.showSpinner||(o=t.querySelector(i.spinnerSelector))&&f(o),u!=document.body&&l(u,"nprogress-custom-parent"),u.appendChild(t),t},e.remove=function(){u(document.documentElement,"nprogress-busy"),u(document.querySelector(i.parent),"nprogress-custom-parent");var n=document.getElementById("nprogress");n&&f(n)},e.isRendered=function(){return!!document.getElementById("nprogress")},e.getPositioningCSS=function(){var n=document.body.style,t="WebkitTransform"in n?"Webkit":"MozTransform"in n?"Moz":"msTransform"in n?"ms":"OTransform"in n?"O":"";return t+"Perspective"in n?"translate3d":t+"Transform"in n?"translate":"margin"};var a=function(){var n=[];function t(){var e=n.shift();e&&e(t)}return function(e){n.push(e),1==n.length&&t()}}(),s=function(){var n=["Webkit","O","Moz","ms"],t={};function e(e){return e=e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,function(n,t){return t.toUpperCase()}),t[e]||(t[e]=function(t){var e=document.body.style;if(t in e)return t;for(var i,o=n.length,r=t.charAt(0).toUpperCase()+t.slice(1);o--;)if((i=n[o]+r)in e)return i;return t}(e))}function i(n,t,i){t=e(t),n.style[t]=i}return function(n,t){var e,o,r=arguments;if(2==r.length)for(e in t)void 0!==(o=t[e])&&t.hasOwnProperty(e)&&i(n,e,o);else i(n,r[1],r[2])}}();function c(n,t){var e="string"==typeof n?n:d(n);return e.indexOf(" "+t+" ")>=0}function l(n,t){var e=d(n),i=e+t;c(e,t)||(n.className=i.substring(1))}function u(n,t){var e,i=d(n);c(n,t)&&(e=i.replace(" "+t+" "," "),n.className=e.substring(1,e.length-1))}function d(n){return(" "+(n.className||"")+" ").replace(/\s+/gi," ")}function f(n){n&&n.parentNode&&n.parentNode.removeChild(n)}return e})?i.call(t,e,t,n):i)||(n.exports=o)},function(n,t,e){var i=e(28);"string"==typeof i&&(i=[[n.i,i,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};e(29)(i,o);i.locals&&(n.exports=i.locals)},function(n,t,e){(n.exports=e(0)(void 0)).push([n.i,"/* Make clicks pass-through */\n#nprogress {\n pointer-events: none;\n}\n#nprogress .bar {\n background: rgba(52, 152, 219, .7);\n\n position: fixed;\n z-index: 1031;\n top: 0;\n left: 0;\n\n width: 100%;\n height: 2px;\n}\n/* Fancy blur effect */\n#nprogress .peg {\n display: block;\n position: absolute;\n right: 0px;\n width: 100px;\n height: 100%;\n -webkit-box-shadow: 0 0 5px rgba(52, 152, 219, .7), 0 0 2px rgba(52, 152, 219, .7);\n box-shadow: 0 0 5px rgba(52, 152, 219, .7), 0 0 2px rgba(52, 152, 219, .7);\n opacity: 1.0;\n\n -webkit-transform: rotate(3deg) translate(0px, -4px);\n transform: rotate(3deg) translate(0px, -4px);\n}\n/* Remove these to get rid of the spinner */\n#nprogress .spinner {\n display: block;\n position: fixed;\n z-index: 1031;\n top: 15px;\n right: 15px;\n}\n#nprogress .spinner-icon {\n display: none;\n width: 12px;\n height: 12px;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n\n border: solid 2px transparent;\n border-top-color: rgba(52, 152, 219, .7);\n border-left-color: rgba(52, 152, 219, .7);\n border-radius: 50%;\n\n -webkit-animation: nprogress-spinner 400ms linear infinite;\n animation: nprogress-spinner 400ms linear infinite;\n}\n.nprogress-custom-parent {\n overflow: hidden;\n position: relative;\n}\n.nprogress-custom-parent #nprogress .spinner, .nprogress-custom-parent #nprogress .bar {\n position: absolute;\n}\n@-webkit-keyframes nprogress-spinner {\n 0% { -webkit-transform: rotate(0deg); }\n 100% { -webkit-transform: rotate(360deg); }\n}\n@keyframes nprogress-spinner {\n 0% { -webkit-transform: rotate(0deg); transform: rotate(0deg); }\n 100% { -webkit-transform: rotate(360deg); transform: rotate(360deg); }\n}\n\n",""])},function(n,t,e){var i,o,r={},a=(i=function(){return window&&document&&document.all&&!window.atob},function(){return void 0===o&&(o=i.apply(this,arguments)),o}),s=function(n){var t={};return function(n,e){if("function"==typeof n)return n();if(void 0===t[n]){var i=function(n,t){return t?t.querySelector(n):document.querySelector(n)}.call(this,n,e);if(window.HTMLIFrameElement&&i instanceof window.HTMLIFrameElement)try{i=i.contentDocument.head}catch(n){i=null}t[n]=i}return t[n]}}(),c=null,l=0,u=[],d=e(30);function f(n,t){for(var e=0;e=0&&u.splice(t,1)}function b(n){var t=document.createElement("style");if(void 0===n.attrs.type&&(n.attrs.type="text/css"),void 0===n.attrs.nonce){const t=function(){0;return e.nc}();t&&(n.attrs.nonce=t)}return m(t,n.attrs),p(n,t),t}function m(n,t){Object.keys(t).forEach(function(e){n.setAttribute(e,t[e])})}function g(n,t){var e,i,o,r;if(t.transform&&n.css){if(!(r=t.transform(n.css)))return function(){};n.css=r}if(t.singleton){var a=l++;e=c||(c=b(t)),i=k.bind(null,e,a,!1),o=k.bind(null,e,a,!0)}else n.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(e=function(n){var t=document.createElement("link");return void 0===n.attrs.type&&(n.attrs.type="text/css"),n.attrs.rel="stylesheet",m(t,n.attrs),p(n,t),t}(t),i=function(n,t,e){var i=e.css,o=e.sourceMap,r=void 0===t.convertToAbsoluteUrls&&o;(t.convertToAbsoluteUrls||r)&&(i=d(i));o&&(i+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(o))))+" */");var a=new Blob([i],{type:"text/css"}),s=n.href;n.href=URL.createObjectURL(a),s&&URL.revokeObjectURL(s)}.bind(null,e,t),o=function(){v(e),e.href&&URL.revokeObjectURL(e.href)}):(e=b(t),i=function(n,t){var e=t.css,i=t.media;i&&n.setAttribute("media",i);if(n.styleSheet)n.styleSheet.cssText=e;else{for(;n.firstChild;)n.removeChild(n.firstChild);n.appendChild(document.createTextNode(e))}}.bind(null,e),o=function(){v(e)});return i(n),function(t){if(t){if(t.css===n.css&&t.media===n.media&&t.sourceMap===n.sourceMap)return;i(n=t)}else o()}}n.exports=function(n,t){if("undefined"!=typeof DEBUG&&DEBUG&&"object"!=typeof document)throw new Error("The style-loader cannot be used in a non-browser environment");(t=t||{}).attrs="object"==typeof t.attrs?t.attrs:{},t.singleton||"boolean"==typeof t.singleton||(t.singleton=a()),t.insertInto||(t.insertInto="head"),t.insertAt||(t.insertAt="bottom");var e=h(n,t);return f(e,t),function(n){for(var i=[],o=0;o2?e-2:0),o=2;oe&&t>p?"horizontal":e>t&&e>p?"vertical":"")},resetTouchStatus:function(){this.direction="",this.deltaX=0,this.deltaY=0,this.offsetX=0,this.offsetY=0}}},b=!1;if(!a.h)try{var m={};Object.defineProperty(m,"passive",{get:function(){b=!0}}),window.addEventListener("test-passive",null,m)}catch(n){}function g(n,t,e,i){void 0===i&&(i=!1),a.h||n.addEventListener(t,e,!!b&&{capture:!1,passive:i})}function y(n,t,e){a.h||n.removeEventListener(t,e)}function x(n){n.stopPropagation()}function k(n,t){("boolean"!=typeof n.cancelable||n.cancelable)&&n.preventDefault(),t&&x(n)}var w=Object(a.k)("overlay"),_=w[0],C=w[1];function S(n,t,e,o){var a=Object(i.a)({zIndex:t.zIndex},t.customStyle);return n("transition",{attrs:{name:"van-fade"}},[n("div",r()([{directives:[{name:"show",value:t.visible}],style:a,class:[C(),t.className],on:{touchmove:function(n){k(n,!0)}}},u(o,!0)]))])}S.props={zIndex:Number,className:null,visible:Boolean,customStyle:Object};var O,$=_(S),z={className:"",customStyle:{}};function j(){if(h.top){var n=h.top.vm;n.$emit("click-overlay"),n.closeOnClickOverlay&&(n.onClickOverlay?n.onClickOverlay():n.close())}}function T(){if(O||(O=f($,{on:{click:j}})),h.top){var n=h.top,t=n.vm,e=n.config,o=t.$el,r=o&&o.parentNode?o.parentNode:document.body;r&&r.appendChild(O.$el),Object(i.a)(O,z,e,{visible:!0})}else O.visible=!1}function A(n){var t=h.stack;t.length&&(h.top.vm===n?(t.pop(),T()):h.stack=t.filter(function(t){return t.vm!==n}))}function F(n,t){void 0===t&&(t=window);for(var e=n;e&&"HTML"!==e.tagName&&"BODY"!==e.tagName&&1===e.nodeType&&e!==t;){var i=window.getComputedStyle(e).overflowY;if("scroll"===i||"auto"===i)return e;e=e.parentNode}return t}function E(n){return"scrollTop"in n?n.scrollTop:n.pageYOffset}function N(n){return(n===window?0:n.getBoundingClientRect().top)+E(window)}function I(n){return n===window?n.innerHeight:n.getBoundingClientRect().height}var B={mixins:[v],props:{value:Boolean,overlay:Boolean,overlayStyle:Object,overlayClass:String,closeOnClickOverlay:Boolean,zIndex:[String,Number],getContainer:[String,Function],lockScroll:{type:Boolean,default:!0},lazyRender:{type:Boolean,default:!0}},data:function(){return{inited:this.value}},computed:{shouldRender:function(){return this.inited||!this.lazyRender}},watch:{value:function(n){var t=n?"open":"close";this.inited=this.inited||this.value,this[t](),this.$emit(t)},getContainer:function(){this.move()},overlay:function(){this.renderOverlay()}},mounted:function(){this.getContainer&&this.move(),this.value&&this.open()},activated:function(){this.value&&this.open()},beforeDestroy:function(){this.close(),this.getContainer&&this.$parent&&this.$parent.$el&&this.$parent.$el.appendChild(this.$el)},deactivated:function(){this.close()},methods:{open:function(){this.$isServer||this.opened||(void 0!==this.zIndex&&(h.zIndex=this.zIndex),this.opened=!0,this.renderOverlay(),this.lockScroll&&(g(document,"touchstart",this.touchStart),g(document,"touchmove",this.onTouchMove),h.lockCount||document.body.classList.add("van-overflow-hidden"),h.lockCount++))},close:function(){this.opened&&(this.lockScroll&&(h.lockCount--,y(document,"touchstart",this.touchStart),y(document,"touchmove",this.onTouchMove),h.lockCount||document.body.classList.remove("van-overflow-hidden")),this.opened=!1,A(this),this.$emit("input",!1))},move:function(){var n,t=this.getContainer;t?n="string"==typeof t?document.querySelector(t):t():this.$parent&&(n=this.$parent.$el),n&&n!==this.$el.parentNode&&n.appendChild(this.$el),this.overlay&&T()},onTouchMove:function(n){this.touchMove(n);var t=this.deltaY>0?"10":"01",e=F(n.target,this.$el),i=e.scrollHeight,o=e.offsetHeight,r=e.scrollTop,a="11";0===r?a=o>=i?"00":"01":r+o>=i&&(a="10"),"11"===a||"vertical"!==this.direction||parseInt(a,2)&parseInt(t,2)||k(n,!0)},renderOverlay:function(){var n,t;!this.$isServer&&this.value&&(this.overlay?(n=this,t={zIndex:h.zIndex++,className:this.overlayClass,customStyle:this.overlayStyle},h.stack.some(function(t){return t.vm===n})||(h.stack.push({vm:n,config:t}),T())):A(this),this.updateZIndex())},updateZIndex:function(){var n=this;this.$nextTick(function(){n.$el.style.zIndex=h.zIndex++})}}},L=Object(a.k)("info"),D=L[0],M=L[1];function P(n,t,e,i){if(Object(a.d)(t.info)&&""!==t.info)return n("div",r()([{class:M()},u(i,!0)]),[t.info])}P.props={info:[String,Number]};var R=D(P),U=Object(a.k)("icon")[0];function V(n,t,e,i){var o,a=!!(o=t.name)&&-1!==o.indexOf("/");return n(t.tag,r()([{class:[t.classPrefix,a?"van-icon--image":t.classPrefix+"-"+t.name],style:{color:t.color,fontSize:t.size}},u(i,!0)]),[e.default&&e.default(),a&&n("img",{attrs:{src:t.name}}),n(R,{attrs:{info:t.info}})])}V.props={name:String,size:String,color:String,info:[String,Number],tag:{type:String,default:"i"},classPrefix:{type:String,default:"van-icon"}};var H=U(V),q=Object(a.k)("loading"),W=q[0],Y=q[1],X="#c9c9c9";function K(n,t,e,i){var o=t.color,a=t.size,s=t.type,c="white"===o||"black"===o?o:"",l={color:"black"===o?X:o,width:a,height:a},d=[];if("spinner"===s)for(var f=0;f<12;f++)d.push(n("i"));var h="circular"===s&&n("svg",{class:Y("circular"),attrs:{viewBox:"25 25 50 50"}},[n("circle",{attrs:{cx:"50",cy:"50",r:"20",fill:"none"}})]);return n("div",r()([{class:Y([s,c]),style:l},u(i,!0)]),[n("span",{class:Y("spinner",s)},[d,h])])}K.props={size:String,type:{type:String,default:"circular"},color:{type:String,default:X}};var Q=W(K),G=Object(a.k)("popup"),J=G[0],Z=G[1],nn=J({mixins:[B],props:{position:String,transition:String,overlay:{type:Boolean,default:!0},closeOnClickOverlay:{type:Boolean,default:!0}},render:function(n){var t,e=this;if(this.shouldRender){var i=this.position,o=function(n){return function(){return e.$emit(n)}};return n("transition",{attrs:{name:this.transition||(i?"van-popup-slide-"+i:"van-fade")},on:{afterEnter:o("opened"),afterLeave:o("closed")}},[n("div",{directives:[{name:"show",value:this.value}],class:Z((t={},t[i]=i,t))},[this.slots()])])}}}),tn=Object(a.k)("actionsheet"),en=tn[0],on=tn[1];function rn(n,t,e,i){var o=t.title,a=t.cancelText,s=function(){d(i,"input",!1),d(i,"cancel")};return n(nn,r()([{class:on({"safe-area-inset-bottom":t.safeAreaInsetBottom}),attrs:{value:t.value,position:"bottom",overlay:t.overlay,lazyRender:t.lazyRender,getContainer:t.getContainer,closeOnClickOverlay:t.closeOnClickOverlay},on:{input:function(n){d(i,"input",n)}}},u(i)]),[o?n("div",{class:[on("header"),"van-hairline--top-bottom"]},[o,n(H,{attrs:{name:"close"},class:on("close"),on:{click:s}})]):t.actions.map(function(t,e){return n("div",{class:[on("item",{disabled:t.disabled||t.loading}),t.className,"van-hairline--top"],on:{click:function(n){n.stopPropagation(),t.disabled||t.loading||(t.callback&&t.callback(t),d(i,"select",t,e))}}},[t.loading?n(Q,{class:on("loading"),attrs:{size:"20px"}}):[n("span",{class:on("name")},[t.name]),t.subname&&n("span",{class:on("subname")},[t.subname])]])}),e.default&&n("div",{class:on("content")},[e.default()]),a&&n("div",{class:on("cancel"),on:{click:s}},[a])])}rn.props=Object(i.a)({},B.props,{title:String,actions:Array,cancelText:String,safeAreaInsetBottom:Boolean,overlay:{type:Boolean,default:!0},closeOnClickOverlay:{type:Boolean,default:!0}});var an=en(rn);function sn(n){return n=n.replace(/[^-|\d]/g,""),/^((\+86)|(86))?(1)\d{10}$/.test(n)||/^0[0-9-]{10,13}$/.test(n)}var cn=e(19);function ln(n){return Array.isArray(n)?n.map(function(n){return ln(n)}):"object"==typeof n?Object(cn.a)({},n):n}var un={title:String,loading:Boolean,showToolbar:Boolean,cancelButtonText:String,confirmButtonText:String,visibleItemCount:{type:Number,default:5},itemHeight:{type:Number,default:44}},dn=Object(a.k)("picker-column"),fn=dn[0],hn=dn[1],pn=fn({props:{valueKey:String,className:String,itemHeight:Number,defaultIndex:Number,initialOptions:Array,visibleItemCount:Number},data:function(){return{startY:0,offset:0,duration:0,startOffset:0,options:ln(this.initialOptions),currentIndex:this.defaultIndex}},created:function(){this.$parent.children&&this.$parent.children.push(this),this.setIndex(this.currentIndex)},destroyed:function(){var n=this.$parent.children;n&&n.splice(n.indexOf(this),1)},watch:{defaultIndex:function(){this.setIndex(this.defaultIndex)}},computed:{count:function(){return this.options.length}},methods:{onTouchStart:function(n){this.startY=n.touches[0].clientY,this.startOffset=this.offset,this.duration=0},onTouchMove:function(n){k(n);var t=n.touches[0].clientY-this.startY;this.offset=Object(a.j)(this.startOffset+t,-this.count*this.itemHeight,this.itemHeight)},onTouchEnd:function(){if(this.offset!==this.startOffset){this.duration=200;var n=Object(a.j)(Math.round(-this.offset/this.itemHeight),0,this.count-1);this.setIndex(n,!0)}},adjustIndex:function(n){for(var t=n=Object(a.j)(n,0,this.count);t=0;e--)if(!this.isDisabled(this.options[e]))return e},isDisabled:function(n){return Object(a.g)(n)&&n.disabled},getOptionText:function(n){return Object(a.g)(n)&&this.valueKey in n?n[this.valueKey]:n},setIndex:function(n,t){n=this.adjustIndex(n)||0,this.offset=-n*this.itemHeight,n!==this.currentIndex&&(this.currentIndex=n,t&&this.$emit("change",n))},setValue:function(n){for(var t=this.options,e=0;ee&&(t=t.slice(0,e),n.value=t),t},onInput:function(n){this.$emit("input",this.format(n.target))},onFocus:function(n){this.focused=!0,this.$emit("focus",n),this.readonly&&this.blur()},onBlur:function(n){this.focused=!1,this.$emit("blur",n),Object(a.e)()&&window.scrollTo(0,window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0)},onClickLeftIcon:function(){this.$emit("click-left-icon")},onClickRightIcon:function(){this.$emit("click-icon"),this.$emit("click-right-icon"),this.onIconClick&&this.onIconClick()},onClear:function(n){k(n),this.$emit("input",""),this.$emit("clear")},onKeypress:function(n){if("number"===this.type){var t=n.keyCode,e=-1===String(this.value).indexOf(".");t>=48&&t<=57||46===t&&e||45===t||k(n)}"search"===this.type&&13===n.keyCode&&this.blur(),this.$emit("keypress",n)},adjustSize:function(){var n=this.$refs.input;if("textarea"===this.type&&this.autosize&&n){n.style.height="auto";var t=n.scrollHeight;if(Object(a.g)(this.autosize)){var e=this.autosize,i=e.maxHeight,o=e.minHeight;i&&(t=Math.min(t,i)),o&&(t=Math.max(t,o))}t&&(n.style.height=t+"px")}},renderInput:function(){var n=this.$createElement,t={ref:"input",class:Bn("control",this.inputAlign),domProps:{value:this.value},attrs:Object(i.a)({},this.$attrs,{readonly:this.readonly}),on:this.listeners};return"textarea"===this.type?n("textarea",r()([{},t])):n("input",r()([{attrs:{type:this.type}},t]))},renderLeftIcon:function(){var n=this.$createElement;if(this.slots("left-icon")||this.leftIcon)return n("div",{class:Bn("left-icon"),on:{click:this.onClickLeftIcon}},[this.slots("left-icon")||n(H,{attrs:{name:this.leftIcon}})])},renderRightIcon:function(){var n=this.$createElement,t=this.slots;if(t("right-icon")||t("icon")||this.rightIcon||this.icon)return n("div",{class:Bn("right-icon"),on:{click:this.onClickRightIcon}},[t("right-icon")||t("icon")||n(H,{attrs:{name:this.rightIcon||this.icon}})])}},render:function(n){var t,e=this.slots,i=this.labelAlign,o={icon:this.renderLeftIcon};return e("label")&&(o.title=function(){return e("label")}),n(Fn,{attrs:{icon:this.leftIcon,size:this.size,title:this.label,center:this.center,border:this.border,isLink:this.isLink,required:this.required,titleStyle:this.labelStyle,titleClass:Bn("label",i)},class:Bn((t={error:this.error,disabled:this.$attrs.disabled},t["label-"+i]=i,t["min-height"]="textarea"===this.type&&!this.autosize,t)),scopedSlots:o},[n("div",{class:Bn("body")},[this.renderInput(),this.showClear&&n(H,{attrs:{name:"clear"},class:Bn("clear"),on:{touchstart:this.onClear}}),this.renderRightIcon(),e("button")&&n("div",{class:Bn("button")},[e("button")])]),this.errorMessage&&n("div",{class:Bn("error-message",this.errorMessageAlign)},[this.errorMessage])])}}),Dn=Object(a.k)("toast"),Mn=Dn[0],Pn=Dn[1],Rn=["success","fail","loading"],Un=Mn({mixins:[B],props:{className:null,forbidClick:Boolean,message:[String,Number],type:{type:String,default:"text"},loadingType:{type:String,default:"circular"},position:{type:String,default:"middle"},lockScroll:{type:Boolean,default:!1}},data:function(){return{clickable:!1}},mounted:function(){this.toggleClickale()},destroyed:function(){this.toggleClickale()},watch:{value:function(){this.toggleClickale()},forbidClick:function(){this.toggleClickale()}},methods:{toggleClickale:function(){var n=this.value&&this.forbidClick;if(this.clickable!==n){this.clickable=n;var t=n?"add":"remove";document.body.classList[t]("van-toast--unclickable")}}},render:function(n){var t=this,e=this.type,i=this.message,o=-1!==Rn.indexOf(e)?"default":e;return n("transition",{attrs:{name:"van-fade"}},[n("div",{directives:[{name:"show",value:this.value}],class:[Pn([o,this.position]),this.className]},[function(){switch(o){case"text":return n("div",[i]);case"html":return n("div",{domProps:{innerHTML:i}});default:return["loading"===e?n(Q,{attrs:{color:"white",type:t.loadingType}}):n(H,{class:Pn("icon"),attrs:{name:e}}),Object(a.d)(i)&&n("div",{class:Pn("text")},[i])]}}()])])}}),Vn={type:"text",mask:!1,value:!0,message:"",className:"",onClose:null,duration:3e3,position:"middle",forbidClick:!1,loadingType:"circular",getContainer:"body",overlayStyle:null},Hn=function(n){return Object(a.g)(n)?n:{message:n}},qn=[],Wn=!1,Yn=Object(i.a)({},Vn);function Xn(n){void 0===n&&(n={});var t=function(){if(a.h)return{};if(!qn.length||Wn){var n=new(s.default.extend(Un))({el:document.createElement("div")});qn.push(n)}return qn[qn.length-1]}();return t.value&&t.updateZIndex(),n=Object(i.a)({},Yn,Hn(n),{clear:function(){if(t.value=!1,n.onClose&&n.onClose(),Wn&&!a.h){clearTimeout(t.timer),qn=qn.filter(function(n){return n!==t});var e=t.$el.parentNode;e&&e.removeChild(t.$el),t.$destroy()}}}),Object(i.a)(t,function(n){return n.overlay=n.mask,n}(n)),clearTimeout(t.timer),n.duration>0&&(t.timer=setTimeout(function(){t.clear()},n.duration)),t}["loading","success","fail"].forEach(function(n){var t;Xn[n]=(t=n,function(n){return Xn(Object(i.a)({type:t},Hn(n)))})}),Xn.clear=function(n){qn.length&&(n?(qn.forEach(function(n){n.clear()}),qn=[]):Wn?qn.shift().clear():qn[0].clear())},Xn.setDefaultOptions=function(n){Object(i.a)(Yn,n)},Xn.resetDefaultOptions=function(){Yn=Object(i.a)({},Vn)},Xn.allowMultiple=function(n){void 0===n&&(n=!0),Wn=n},Xn.install=function(){s.default.use(Un)},s.default.prototype.$toast=Xn;var Kn=Xn,Qn=Object(a.k)("button"),Gn=Qn[0],Jn=Qn[1];function Zn(n,t,e,i){var o=t.tag,a=t.type,s=t.disabled,c=t.loading,l=t.hairline,f=t.loadingText,h=[Jn([a,t.size,{loading:c,disabled:s,hairline:l,block:t.block,plain:t.plain,round:t.round,square:t.square,"bottom-action":t.bottomAction}]),{"van-hairline--surround":l}];return n(o,r()([{class:h,attrs:{type:t.nativeType,disabled:s},on:{click:function(n){c||s||(d(i,"click",n),On(i))},touchstart:function(n){d(i,"touchstart",n)}}},u(i)]),[c?[n(Q,{attrs:{size:t.loadingSize,color:"default"===a?void 0:""}}),f&&n("span",{class:Jn("loading-text")},[f])]:n("span",{class:Jn("text")},[e.default?e.default():t.text])])}Zn.props=Object(i.a)({},$n,{text:String,block:Boolean,plain:Boolean,round:Boolean,square:Boolean,loading:Boolean,hairline:Boolean,disabled:Boolean,nativeType:String,loadingText:String,bottomAction:Boolean,tag:{type:String,default:"button"},type:{type:String,default:"default"},size:{type:String,default:"normal"},loadingSize:{type:String,default:"20px"}});var nt,tt=Gn(Zn),et=Object(a.k)("dialog"),it=et[0],ot=et[1],rt=et[2],at=it({mixins:[B],props:{title:String,message:String,className:null,callback:Function,beforeClose:Function,messageAlign:String,cancelButtonText:String,cancelButtonColor:String,confirmButtonText:String,confirmButtonColor:String,showCancelButton:Boolean,showConfirmButton:{type:Boolean,default:!0},overlay:{type:Boolean,default:!0},closeOnClickOverlay:{type:Boolean,default:!1}},data:function(){return{loading:{confirm:!1,cancel:!1}}},methods:{onClickOverlay:function(){this.handleAction("overlay")},handleAction:function(n){var t=this;this.$emit(n),this.beforeClose?(this.loading[n]=!0,this.beforeClose(n,function(e){!1!==e&&t.onClose(n),t.loading[n]=!1})):this.onClose(n)},onClose:function(n){this.close(),this.callback&&this.callback(n)}},render:function(n){var t,e=this;if(this.shouldRender){var i=this.title,o=this.message,r=this.messageAlign,a=this.slots(),s=i&&n("div",{class:ot("header",{isolated:!o&&!a})},[i]),c=(a||o)&&n("div",{class:ot("content")},[a||n("div",{domProps:{innerHTML:o},class:ot("message",(t={"has-title":i},t[r]=r,t))})]),l=this.showCancelButton&&this.showConfirmButton,u=n("div",{class:["van-hairline--top",ot("footer",{buttons:l})]},[this.showCancelButton&&n(tt,{attrs:{size:"large",loading:this.loading.cancel,text:this.cancelButtonText||rt("cancel")},class:ot("cancel"),style:{color:this.cancelButtonColor},on:{click:function(){e.handleAction("cancel")}}}),this.showConfirmButton&&n(tt,{attrs:{size:"large",loading:this.loading.confirm,text:this.confirmButtonText||rt("confirm")},class:[ot("confirm"),{"van-hairline--left":l}],style:{color:this.confirmButtonColor},on:{click:function(){e.handleAction("confirm")}}})]);return n("transition",{attrs:{name:"van-dialog-bounce"}},[n("div",{directives:[{name:"show",value:this.value}],class:[ot(),this.className]},[s,c,u])])}}});function st(n){return a.h?Promise.resolve():new Promise(function(t,e){nt&&Object(a.f)(nt.$el)||(nt&&nt.$destroy(),(nt=new(s.default.extend(at))({el:document.createElement("div"),propsData:{lazyRender:!1}})).$on("input",function(n){nt.value=n})),Object(i.a)(nt,st.currentOptions,n,{resolve:t,reject:e})})}st.defaultOptions={value:!0,title:"",message:"",overlay:!0,className:"",lockScroll:!0,beforeClose:null,messageAlign:"",getContainer:"body",cancelButtonText:"",cancelButtonColor:null,confirmButtonText:"",confirmButtonColor:null,showConfirmButton:!0,showCancelButton:!1,closeOnClickOverlay:!1,callback:function(n){nt["confirm"===n?"resolve":"reject"](n)}},st.alert=st,st.confirm=function(n){return st(Object(i.a)({showCancelButton:!0},n))},st.close=function(){nt&&(nt.value=!1)},st.setDefaultOptions=function(n){Object(i.a)(st.currentOptions,n)},st.resetDefaultOptions=function(){st.currentOptions=Object(i.a)({},st.defaultOptions)},st.resetDefaultOptions(),st.install=function(){s.default.use(at)},s.default.prototype.$dialog=st;var ct=st,lt=Object(a.k)("address-edit-detail"),ut=lt[0],dt=lt[1],ft=lt[2],ht=Object(a.c)(),pt=ut({props:{value:String,error:Boolean,focused:Boolean,detailRows:Number,searchResult:Array,showSearchResult:Boolean},methods:{onSelect:function(n){this.$emit("select-search",n),this.$emit("input",((n.address||"")+" "+(n.name||"")).trim())},onFinish:function(){this.$refs.field.blur()},renderFinish:function(){var n=this.$createElement;if(this.value&&this.focused&&ht)return n("div",{class:dt("finish"),on:{click:this.onFinish}},[ft("complete")])},renderSearchResult:function(){var n=this,t=this.$createElement,e=this.searchResult;if(this.focused&&e&&this.showSearchResult)return e.map(function(e){return t(Fn,{key:e.name+e.address,attrs:{title:e.name,label:e.address,icon:"location-o",clickable:!0},on:{click:function(){n.onSelect(e)}}})})}},render:function(n){return n(Fn,{class:dt()},[n(Ln,{attrs:{autosize:!0,rows:this.detailRows,clearable:!ht,type:"textarea",maxlength:"200",value:this.value,error:this.error,label:ft("label"),placeholder:ft("placeholder")},ref:"field",scopedSlots:{icon:this.renderFinish},on:Object(i.a)({},this.$listeners)}),this.renderSearchResult()])}}),vt={value:null,loading:Boolean,disabled:Boolean,activeColor:String,inactiveColor:String,activeValue:{type:null,default:!0},inactiveValue:{type:null,default:!1},size:{type:String,default:"30px"}},bt=Object(a.k)("switch"),mt=bt[0],gt=bt[1];function yt(n,t,e,i){var o=t.value,a=t.loading,s=t.disabled,c=t.activeValue,l=t.inactiveValue,f=o===c,h={fontSize:t.size,backgroundColor:f?t.activeColor:t.inactiveColor};return n("div",r()([{class:gt({on:f,disabled:s}),style:h,on:{click:function(){if(!s&&!a){var n=f?l:c;d(i,"input",n),d(i,"change",n)}}}},u(i)]),[n("div",{class:gt("node")},[a&&n(Q,{class:gt("loading")})])])}yt.props=vt;var xt=mt(yt),kt=Object(a.k)("switch-cell"),wt=kt[0],_t=kt[1];function Ct(n,t,e,o){return n(Fn,r()([{attrs:{center:!0,title:t.title,border:t.border},class:_t()},u(o)]),[n(xt,{props:Object(i.a)({},t),on:Object(i.a)({},o.listeners)})])}Ct.props=Object(i.a)({},vt,{title:String,border:Boolean,size:{type:String,default:"24px"}});var St=wt(Ct),Ot=Object(a.k)("address-edit"),$t=Ot[0],zt=Ot[1],jt=Ot[2],Tt={name:"",tel:"",country:"",province:"",city:"",county:"",areaCode:"",postalCode:"",addressDetail:"",isDefault:!1},At=$t({props:{areaList:Object,isSaving:Boolean,isDeleting:Boolean,validator:Function,showDelete:Boolean,showPostal:Boolean,searchResult:Array,showSetDefault:Boolean,showSearchResult:Boolean,saveButtonText:String,deleteButtonText:String,showArea:{type:Boolean,default:!0},showDetail:{type:Boolean,default:!0},detailRows:{type:Number,default:1},addressInfo:{type:Object,default:function(){return Object(i.a)({},Tt)}},telValidator:{type:Function,default:sn},areaColumnsPlaceholder:{type:Array,default:function(){return[]}}},data:function(){return{data:{},showAreaPopup:!1,detailFocused:!1,errorInfo:{tel:!1,name:!1,postalCode:!1,addressDetail:!1}}},computed:{areaListLoaded:function(){return Object(a.g)(this.areaList)&&Object.keys(this.areaList).length},areaText:function(){var n=this.data,t=n.country,e=n.province,i=n.city,o=n.county;if(n.areaCode){var r=[t,e,i,o];return e&&e===i&&r.splice(1,1),r.filter(function(n){return n}).join("/")}return""}},watch:{addressInfo:{handler:function(n){this.data=Object(i.a)({},Tt,n),this.setAreaCode(n.areaCode)},deep:!0,immediate:!0},areaList:function(){this.setAreaCode(this.data.areaCode)}},methods:{onFocus:function(n){this.errorInfo[n]=!1,this.detailFocused="addressDetail"===n,this.$emit("focus",n)},onChangeDetail:function(n){this.data.addressDetail=n,this.$emit("change-detail",n)},onAreaConfirm:function(n){n.some(function(n){return!n.code})?Kn(jt("areaEmpty")):(this.showAreaPopup=!1,this.assignAreaValues(),this.$emit("change-area",n))},assignAreaValues:function(){var n=this.$refs.area;if(n){var t=n.getArea();t.areaCode=t.code,delete t.code,Object(i.a)(this.data,t)}},onSave:function(){var n=this,t=["name","tel","areaCode","addressDetail"];this.showPostal&&t.push("postalCode"),t.every(function(t){var e=n.getErrorMessage(t);return e&&(n.errorInfo[t]=!0,Kn(e)),!e})&&!this.isSaving&&this.$emit("save",this.data)},getErrorMessage:function(n){var t=String(this.data[n]||"").trim();if(this.validator){var e=this.validator(n,t);if(e)return e}switch(n){case"name":return t?"":jt("nameEmpty");case"tel":return this.telValidator(t)?"":jt("telInvalid");case"areaCode":return t?"":jt("areaEmpty");case"addressDetail":return t?"":jt("addressEmpty");case"postalCode":return t&&!/^\d{6}$/.test(t)?jt("postalEmpty"):""}},onDelete:function(){var n=this;ct.confirm({title:jt("confirmDelete")}).then(function(){n.$emit("delete",n.data)}).catch(function(){n.$emit("cancel-delete",n.data)})},getArea:function(){return this.$refs.area?this.$refs.area.getValues():[]},setAreaCode:function(n){this.data.areaCode=n||"",n&&this.$nextTick(this.assignAreaValues)},setAddressDetail:function(n){this.data.addressDetail=n},onDetailBlur:function(){var n=this;setTimeout(function(){n.detailFocused=!1})}},render:function(n){var t=this,e=this.data,i=this.errorInfo,o=function(n){return function(){return t.onFocus(n)}},r=this.searchResult.length&&this.detailFocused;return n("div",{class:zt()},[n(Ln,{attrs:{clearable:!0,label:jt("name"),placeholder:jt("namePlaceholder"),error:i.name},on:{focus:o("name")},model:{value:e.name,callback:function(n){e.name=n}}}),n(Ln,{attrs:{clearable:!0,type:"tel",label:jt("tel"),placeholder:jt("telPlaceholder"),error:i.tel},on:{focus:o("tel")},model:{value:e.tel,callback:function(n){e.tel=n}}}),n(Ln,{directives:[{name:"show",value:this.showArea}],attrs:{readonly:!0,label:jt("area"),placeholder:jt("areaPlaceholder"),value:this.areaText},on:{click:function(){t.showAreaPopup=!0}}}),n(pt,{directives:[{name:"show",value:this.showDetail}],attrs:{focused:this.detailFocused,value:e.addressDetail,error:i.addressDetail,detailRows:this.detailRows,searchResult:this.searchResult,showSearchResult:this.showSearchResult},on:{focus:o("addressDetail"),blur:this.onDetailBlur,input:this.onChangeDetail,"select-search":function(n){t.$emit("select-search",n)}}}),this.showPostal&&n(Ln,{directives:[{name:"show",value:!r}],attrs:{type:"tel",maxlength:"6",label:jt("postal"),placeholder:jt("postal"),error:i.postalCode},on:{focus:o("postalCode")},model:{value:e.postalCode,callback:function(n){e.postalCode=n}}}),this.slots(),this.showSetDefault&&n(St,{directives:[{name:"show",value:!r}],attrs:{title:jt("defaultAddress")},on:{change:function(n){t.$emit("change-default",n)}},model:{value:e.isDefault,callback:function(n){e.isDefault=n}}}),n("div",{directives:[{name:"show",value:!r}],class:zt("buttons")},[n(tt,{attrs:{block:!0,loading:this.isSaving,type:"danger",text:this.saveButtonText||jt("save")},on:{click:this.onSave}}),this.showDelete&&n(tt,{attrs:{block:!0,loading:this.isDeleting,text:this.deleteButtonText||jt("delete")},on:{click:this.onDelete}})]),n(nn,{attrs:{position:"bottom",lazyRender:!1,getContainer:"body"},model:{value:t.showAreaPopup,callback:function(n){t.showAreaPopup=n}}},[n(_n,{ref:"area",attrs:{loading:!this.areaListLoaded,value:e.areaCode,areaList:this.areaList,columnsPlaceholder:this.areaColumnsPlaceholder},on:{confirm:this.onAreaConfirm,cancel:function(){t.showAreaPopup=!1}}})])])}}),Ft=Object(a.k)("radio-group"),Et=Ft[0],Nt=Ft[1],It=Et({props:{value:null,disabled:Boolean},watch:{value:function(n){this.$emit("change",n)}},render:function(n){return n("div",{class:Nt()},[this.slots()])}}),Bt={data:function(){return{parent:null}},methods:{findParent:function(n){for(var t=this.$parent;t;){if(t.$options.name===n){this.parent=t;break}t=t.$parent}}}},Lt=function(n,t){return{mixins:[Bt],props:{name:null,value:null,disabled:Boolean,checkedColor:String,labelPosition:String,labelDisabled:Boolean,shape:{type:String,default:"round"},bindGroup:{type:Boolean,default:!0}},created:function(){this.bindGroup&&this.findParent(n)},computed:{isDisabled:function(){return this.parent&&this.parent.disabled||this.disabled},iconStyle:function(){var n=this.checkedColor;if(n&&this.checked&&!this.isDisabled)return{borderColor:n,backgroundColor:n}}},render:function(){var n=this,e=arguments[0],i=this.slots,o=this.checked,r=i("icon",{checked:o})||e(H,{attrs:{name:"success"},style:this.iconStyle}),a=i()&&e("span",{class:t("label",[this.labelPosition,{disabled:this.isDisabled}]),on:{click:this.onClickLabel}},[i()]);return e("div",{class:t(),on:{click:function(t){n.$emit("click",t)}}},[e("div",{class:t("icon",[this.shape,{disabled:this.isDisabled,checked:o}]),on:{click:this.onClickIcon}},[r]),a])}}},Dt=Object(a.k)("radio"),Mt=(0,Dt[0])({mixins:[Lt("van-radio-group",Dt[1])],computed:{currentValue:{get:function(){return this.parent?this.parent.value:this.value},set:function(n){(this.parent||this).$emit("input",n)}},checked:function(){return this.currentValue===this.name}},methods:{onClickIcon:function(){this.isDisabled||(this.currentValue=this.name)},onClickLabel:function(){this.isDisabled||this.labelDisabled||(this.currentValue=this.name)}}}),Pt=Object(a.k)("address-item"),Rt=Pt[0],Ut=Pt[1];function Vt(n,t,e,i){var o=t.disabled,a=t.switchable;return n(Fn,r()([{class:Ut({disabled:o,unswitchable:!a}),attrs:{valueClass:Ut("value"),clickable:a&&!o},scopedSlots:{default:function(){var e=t.data,i=[n("div",{class:Ut("name")},[e.name+","+e.tel]),n("div",{class:Ut("address")},[e.address])];return a&&!o?n(Mt,{attrs:{name:e.id}},[i]):i},"right-icon":function(){return n(H,{attrs:{name:"edit"},class:Ut("edit"),on:{click:function(n){n.stopPropagation(),d(i,"edit")}}})}},on:{click:function(){a&&d(i,"select")}}},u(i)]))}Vt.props={data:Object,disabled:Boolean,switchable:Boolean};var Ht=Rt(Vt),qt=Object(a.k)("address-list"),Wt=qt[0],Yt=qt[1],Xt=qt[2];function Kt(n,t,e,i){var o=function(e,o){return e.map(function(e,r){return n(Ht,{attrs:{data:e,disabled:o,switchable:t.switchable},key:e.id,on:{select:function(){d(i,o?"select-disabled":"select",e,r)},edit:function(){d(i,o?"edit-disabled":"edit",e,r)}}})})},a=o(t.list),s=o(t.disabledList,!0);return n("div",r()([{class:Yt()},u(i)]),[e.top&&e.top(),n(It,{attrs:{value:t.value},on:{input:function(n){d(i,"input",n)}}},[a]),t.disabledText&&n("div",{class:Yt("disabled-text")},[t.disabledText]),s,e.default&&e.default(),n(tt,{attrs:{square:!0,size:"large",type:"danger",text:t.addButtonText||Xt("add")},class:Yt("add"),on:{click:function(){d(i,"add")}}})])}Kt.props={list:Array,disabledList:Array,disabledText:String,addButtonText:String,value:[String,Number],switchable:{type:Boolean,default:!0}};var Qt=Wt(Kt),Gt=Object(a.k)("badge"),Jt=Gt[0],Zt=Gt[1],ne=Jt({props:{url:String,info:[String,Number],title:String},inject:["vanBadgeGroup"],created:function(){this.parent.badges.push(this)},beforeDestroy:function(){var n=this;this.parent.badges=this.parent.badges.filter(function(t){return t!==n})},computed:{parent:function(){return this.vanBadgeGroup},select:function(){return this.parent.badges.indexOf(this)===+this.parent.activeKey}},methods:{onClick:function(){var n=this.parent.badges.indexOf(this);this.$emit("click",n),this.parent.$emit("change",n)}},render:function(n){return n("a",{attrs:{href:this.url},class:[Zt({select:this.select}),"van-hairline"],on:{click:this.onClick}},[n("div",{class:Zt("text")},[this.title,n(R,{attrs:{info:this.info},class:Zt("info")})])])}}),te=Object(a.k)("badge-group"),ee=te[0],ie=te[1],oe=ee({props:{activeKey:{type:[Number,String],default:0}},provide:function(){return{vanBadgeGroup:this}},data:function(){return{badges:[]}},render:function(n){return n("div",{class:[ie(),"van-hairline--top-bottom"]},[this.slots()])}}),re=e(4),ae=Object(a.k)("tag"),se=ae[0],ce=ae[1],le={danger:re.d,primary:re.a,success:re.c};function ue(n,t,e,i){var o,a=t.type,s=t.mark,c=t.plain,l=t.round,d=t.size,f=t.color||a&&le[a]||re.b,h=((o={})[c?"color":"backgroundColor"]=f,o);t.textColor&&(h.color=t.textColor);var p={mark:s,plain:c,round:l};return d&&(p[d]=d),n("span",r()([{style:h,class:[ce(p),{"van-hairline--surround":c}]},u(i,!0)]),[e.default&&e.default()])}ue.props={size:String,type:String,mark:Boolean,color:String,plain:Boolean,round:Boolean,textColor:String};var de=se(ue),fe=Object(a.k)("card"),he=fe[0],pe=fe[1];function ve(n,t,e,i){var o=t.thumb,s=e.thumb||o,c=e.tag||t.tag,l=e.num||Object(a.d)(t.num),f=e.price||Object(a.d)(t.price),h=e["origin-price"]||Object(a.d)(t.originPrice),p=l||f||h,v=s&&n("a",{attrs:{href:t.thumbLink},class:pe("thumb"),on:{click:function(){d(i,"click-thumb")}}},[e.thumb?e.thumb():t.lazyLoad?n("img",{class:pe("img"),directives:[{name:"lazy",value:o}]}):n("img",{class:pe("img"),attrs:{src:o}}),c&&n("div",{class:pe("tag")},[e.tag?e.tag():n(de,{attrs:{mark:!0,type:"danger"}},[t.tag])])]),b=e.title?e.title():t.title&&n("div",{class:pe("title")},[t.title]),m=e.desc?e.desc():t.desc&&n("div",{class:[pe("desc"),"van-ellipsis"]},[t.desc]),g=f&&n("div",{class:pe("price")},[e.price?e.price():t.currency+" "+t.price]),y=h&&n("div",{class:pe("origin-price")},[e["origin-price"]?e["origin-price"]():t.currency+" "+t.originPrice]),x=l&&n("div",{class:pe("num")},[e.num?e.num():"x "+t.num]),k=e.footer&&n("div",{class:pe("footer")},[e.footer()]);return n("div",r()([{class:pe()},u(i,!0)]),[n("div",{class:pe("header")},[v,n("div",{class:pe("content",{centered:t.centered})},[b,m,e.tags&&e.tags(),p&&n("div",{class:"van-card__bottom"},[g,y,x,e.bottom&&e.bottom()])])]),k])}ve.props={tag:String,desc:String,thumb:String,title:String,centered:Boolean,lazyLoad:Boolean,thumbLink:String,num:[Number,String],price:[Number,String],originPrice:[Number,String],currency:{type:String,default:"¥"}};var be=he(ve),me=Object(a.k)("cell-group"),ge=me[0],ye=me[1];function xe(n,t,e,i){var o=n("div",r()([{class:[ye(),{"van-hairline--top-bottom":t.border}]},u(i,!0)]),[e.default&&e.default()]);return t.title?n("div",[n("div",{class:ye("title")},[t.title]),o]):o}xe.props={title:String,border:{type:Boolean,default:!0}};var ke=ge(xe),we=Object(a.k)("checkbox"),_e=(0,we[0])({mixins:[Lt("van-checkbox-group",we[1])],computed:{checked:{get:function(){return this.parent?-1!==this.parent.value.indexOf(this.name):this.value},set:function(n){this.parent?this.setParentValue(n):this.$emit("input",n)}}},watch:{value:function(n){this.$emit("change",n)}},methods:{toggle:function(){var n=this,t=!this.checked;clearTimeout(this.toggleTask),this.toggleTask=setTimeout(function(){n.checked=t})},onClickIcon:function(){this.isDisabled||this.toggle()},onClickLabel:function(){this.isDisabled||this.labelDisabled||this.toggle()},setParentValue:function(n){var t=this.parent,e=t.value.slice();if(n){if(t.max&&e.length>=t.max)return;-1===e.indexOf(this.name)&&(e.push(this.name),t.$emit("input",e))}else{var i=e.indexOf(this.name);-1!==i&&(e.splice(i,1),t.$emit("input",e))}}}}),Ce=Object(a.k)("checkbox-group"),Se=Ce[0],Oe=Ce[1],$e=Se({props:{max:Number,value:Array,disabled:Boolean},watch:{value:function(n){this.$emit("change",n)}},render:function(n){return n("div",{class:Oe()},[this.slots()])}}),ze=e(6),je=Object(a.k)("circle"),Te=je[0],Ae=je[1],Fe="M 530 530 m -500, 0 a 500, 500 0 1, 1 1000, 0 a 500, 500 0 1, 1 -1000, 0";function Ee(n){return Math.min(Math.max(n,0),100)}var Ne=Te({props:{text:String,value:Number,speed:Number,size:{type:String,default:"100px"},fill:{type:String,default:"none"},rate:{type:Number,default:100},layerColor:{type:String,default:re.e},color:{type:String,default:re.a},strokeWidth:{type:Number,default:40},clockwise:{type:Boolean,default:!0}},computed:{style:function(){return{width:this.size,height:this.size}},layerStyle:function(){var n=3140*(100-this.value)/100;return n=this.clockwise?n:6280-n,{stroke:""+this.color,strokeDashoffset:n+"px",strokeWidth:this.strokeWidth+1+"px"}},hoverStyle:function(){return{fill:""+this.fill,stroke:""+this.layerColor,strokeWidth:this.strokeWidth+"px"}}},watch:{rate:{handler:function(){this.startTime=Date.now(),this.startRate=this.value,this.endRate=Ee(this.rate),this.increase=this.endRate>this.startRate,this.duration=Math.abs(1e3*(this.startRate-this.endRate)/this.speed),this.speed?(Object(ze.a)(this.rafId),this.rafId=Object(ze.b)(this.animate)):this.$emit("input",this.endRate)},immediate:!0}},methods:{animate:function(){var n=Date.now(),t=Math.min((n-this.startTime)/this.duration,1)*(this.endRate-this.startRate)+this.startRate;this.$emit("input",Ee(parseFloat(t.toFixed(1)))),(this.increase?tthis.endRate)&&(this.rafId=Object(ze.b)(this.animate))}},render:function(n){return n("div",{class:Ae(),style:this.style},[n("svg",{attrs:{viewBox:"0 0 1060 1060"}},[n("path",{class:Ae("hover"),style:this.hoverStyle,attrs:{d:Fe}}),n("path",{class:Ae("layer"),style:this.layerStyle,attrs:{d:Fe}})]),this.slots()||this.text&&n("div",{class:Ae("text")},[this.text])])}}),Ie=Object(a.k)("col"),Be=Ie[0],Le=Ie[1],De=Be({props:{span:[Number,String],offset:[Number,String],tag:{type:String,default:"div"}},computed:{gutter:function(){return this.$parent&&Number(this.$parent.gutter)||0},style:function(){var n=this.gutter/2+"px";return this.gutter?{paddingLeft:n,paddingRight:n}:{}}},render:function(n){var t,e=this.span,i=this.offset;return n(this.tag,{class:Le((t={},t[e]=e,t["offset-"+i]=i,t)),style:this.style},[this.slots()])}}),Me=Object(a.k)("collapse"),Pe=Me[0],Re=Me[1],Ue=Pe({props:{accordion:Boolean,value:[String,Number,Array],border:{type:Boolean,default:!0}},data:function(){return{items:[]}},methods:{switch:function(n,t){this.accordion||(n=t?this.value.concat(n):this.value.filter(function(t){return t!==n})),this.$emit("change",n),this.$emit("input",n)}},render:function(n){return n("div",{class:[Re(),{"van-hairline--top-bottom":this.border}]},[this.slots()])}}),Ve=Object(a.k)("collapse-item"),He=Ve[0],qe=Ve[1],We=["title","icon","right-icon"],Ye=He({mixins:[Bt],props:Object(i.a)({},Cn,{name:[String,Number],disabled:Boolean,isLink:{type:Boolean,default:!0}}),data:function(){return{show:null,inited:null}},computed:{items:function(){return this.parent.items},index:function(){return this.items.indexOf(this)},currentName:function(){return Object(a.d)(this.name)?this.name:this.index},expanded:function(){var n=this;if(!this.parent)return null;var t=this.parent.value;return this.parent.accordion?t===this.currentName:t.some(function(t){return t===n.currentName})}},created:function(){this.findParent("van-collapse"),this.items.push(this),this.show=this.expanded,this.inited=this.expanded},destroyed:function(){this.items.splice(this.index,1)},watch:{expanded:function(n,t){var e=this;null!==t&&(n&&(this.show=!0,this.inited=!0),Object(ze.b)(function(){var t=e.$refs,i=t.content,o=t.wrapper;if(i&&o){var r=i.clientHeight;if(r){var a=r+"px";o.style.height=n?0:a,Object(ze.b)(function(){o.style.height=n?a:0})}else e.onTransitionEnd()}}))}},methods:{onClick:function(){if(!this.disabled){var n=this.parent,t=n.accordion&&this.currentName===n.value?"":this.currentName,e=!this.expanded;this.parent.switch(t,e)}},onTransitionEnd:function(){this.expanded?this.$refs.wrapper.style.height=null:this.show=!1}},render:function(n){var t=this,e=We.reduce(function(n,e){return t.slots(e)&&(n[e]=function(){return t.slots(e)}),n},{});this.slots("value")&&(e.default=function(){return t.slots("value")});var o=n(Fn,{class:qe("title",{disabled:this.disabled,expanded:this.expanded}),on:{click:this.onClick},scopedSlots:e,props:Object(i.a)({},this.$props)}),r=this.inited&&n("div",{directives:[{name:"show",value:this.show}],ref:"wrapper",class:qe("wrapper"),on:{transitionend:this.onTransitionEnd}},[n("div",{ref:"content",class:qe("content")},[this.slots()])]);return n("div",{class:[qe(),{"van-hairline--top":this.index}]},[o,r])}}),Xe=Object(a.k)("contact-card"),Ke=Xe[0],Qe=Xe[1],Ge=Xe[2];function Je(n,t,e,i){var o=t.type,a=t.editable;return n(Fn,r()([{attrs:{center:!0,border:!1,isLink:a,valueClass:Qe("value"),icon:"edit"===o?"contact":"add-square"},class:Qe([o]),on:{click:function(n){a&&d(i,"click",n)}}},u(i)]),["add"===o?t.addText||Ge("addText"):[n("div",[Ge("name")+":"+t.name]),n("div",[Ge("tel")+":"+t.tel])]])}Je.props={tel:String,name:String,addText:String,editable:{type:Boolean,default:!0},type:{type:String,default:"add"}};var Ze=Ke(Je),ni=Object(a.k)("contact-edit"),ti=ni[0],ei=ni[1],ii=ni[2],oi={tel:"",name:""},ri=ti({props:{isEdit:Boolean,isSaving:Boolean,isDeleting:Boolean,contactInfo:{type:Object,default:function(){return Object(i.a)({},oi)}},telValidator:{type:Function,default:sn}},data:function(){return{data:Object(i.a)({},oi,this.contactInfo),errorInfo:{name:!1,tel:!1}}},watch:{contactInfo:function(n){this.data=Object(i.a)({},oi,n)}},methods:{onFocus:function(n){this.errorInfo[n]=!1},getErrorMessageByKey:function(n){var t=this.data[n].trim();switch(n){case"name":return t?"":ii("nameEmpty");case"tel":return this.telValidator(t)?"":ii("telInvalid")}},onSave:function(){var n=this;["name","tel"].every(function(t){var e=n.getErrorMessageByKey(t);return e&&(n.errorInfo[t]=!0,Kn(e)),!e})&&!this.isSaving&&this.$emit("save",this.data)},onDelete:function(){var n=this;ct.confirm({message:ii("confirmDelete")}).then(function(){n.$emit("delete",n.data)})}},render:function(n){var t=this,e=this.data,i=this.errorInfo,o=function(n){return function(){return t.onFocus(n)}};return n("div",{class:ei()},[n(Ln,{attrs:{clearable:!0,maxlength:"30",label:ii("name"),placeholder:ii("nameEmpty"),error:i.name},on:{focus:o("name")},model:{value:e.name,callback:function(n){e.name=n}}}),n(Ln,{attrs:{clearable:!0,type:"tel",label:ii("tel"),placeholder:ii("telEmpty"),error:i.tel},on:{focus:o("tel")},model:{value:e.tel,callback:function(n){e.tel=n}}}),n("div",{class:ei("buttons")},[n(tt,{attrs:{block:!0,type:"danger",text:ii("save"),loading:this.isSaving},on:{click:this.onSave}}),this.isEdit&&n(tt,{attrs:{block:!0,text:ii("delete"),loading:this.isDeleting},on:{click:this.onDelete}})])])}}),ai=Object(a.k)("contact-list"),si=ai[0],ci=ai[1],li=ai[2];function ui(n,t,e,i){var o=t.list.map(function(t,e){var o=function(){d(i,"input",t.id),d(i,"select",t,e)};return n(Fn,{key:t.id,attrs:{isLink:!0,valueClass:ci("item-value")},class:ci("item"),scopedSlots:{default:function(){return n(Mt,{attrs:{name:t.id},on:{click:o}},[n("div",{class:ci("name")},[t.name+","+t.tel])])},"right-icon":function(){return n(H,{attrs:{name:"edit"},class:ci("edit"),on:{click:function(n){n.stopPropagation(),d(i,"edit",t,e)}}})}},on:{click:o}})});return n("div",r()([{class:ci()},u(i)]),[n(It,{attrs:{value:t.value},class:ci("group")},[o]),n(tt,{attrs:{square:!0,size:"large",type:"danger",text:t.addText||li("addText")},class:ci("add"),on:{click:function(){d(i,"add")}}})])}ui.props={value:null,list:Array,addText:String};var di=si(ui),fi=Object(a.k)("coupon"),hi=fi[0],pi=fi[1],vi=fi[2];function bi(n){return(n<10?"0":"")+n}function mi(n){var t=new Date(1e3*n);return t.getFullYear()+"."+bi(t.getMonth()+1)+"."+bi(t.getDate())}var gi=hi({props:{coupon:Object,chosen:Boolean,disabled:Boolean,currency:{type:String,default:"¥"}},computed:{validPeriod:function(){return vi("valid")+":"+mi(this.coupon.startAt)+" - "+mi(this.coupon.endAt)},faceAmount:function(){var n,t,e=this.coupon;return e.valueDesc?e.valueDesc+""+(e.unitDesc||"")+"":e.denominations?""+this.currency+" "+((t=this.coupon.denominations)/100).toFixed(t%100==0?0:t%10==0?1:2):e.discount?vi("discount",((n=this.coupon.discount)/10).toFixed(n%10==0?0:1)):""},conditionMessage:function(){var n=this.coupon.originCondition;return 0===(n=n%100==0?Math.round(n/100):(n/100).toFixed(2))?vi("unlimited"):vi("condition",n)}},render:function(n){var t=this.coupon,e=this.disabled,i=e&&t.reason||t.description;return n("div",{class:pi({disabled:e})},[n("div",{class:pi("content")},[n("div",{class:pi("head")},[n("h2",{domProps:{innerHTML:this.faceAmount}}),n("p",[this.coupon.condition||this.conditionMessage])]),n("div",{class:pi("body")},[n("h2",[t.name]),n("p",[this.validPeriod]),this.chosen&&n(_e,{attrs:{value:!0},class:pi("corner")})])]),i&&n("p",{class:pi("description")},[i])])}}),yi=Object(a.k)("coupon-cell"),xi=yi[0],ki=yi[1],wi=yi[2];function _i(n,t,e,i){var o=t.coupons[t.chosenCoupon]?"van-coupon-cell--selected":"",a=function(n){var t=n.coupons,e=n.chosenCoupon,i=n.currency,o=t[e];return o?"-"+i+((o.denominations||o.value)/100).toFixed(2):0===t.length?wi("tips"):wi("count",t.length)}(t);return n(Fn,r()([{class:ki(),attrs:{value:a,title:t.title||wi("title"),border:t.border,isLink:t.editable,valueClass:o}},u(i,!0)]))}_i.model={prop:"chosenCoupon"},_i.props={title:String,coupons:Array,currency:{type:String,default:"¥"},border:{type:Boolean,default:!0},editable:{type:Boolean,default:!0},chosenCoupon:{type:Number,default:-1}};var Ci=xi(_i),Si=Object(a.k)("tab"),Oi=Si[0],$i=Si[1],zi=Oi({mixins:[Bt],props:{title:String,disabled:Boolean},data:function(){return{inited:!1}},computed:{index:function(){return this.parent.tabs.indexOf(this)},selected:function(){return this.index===this.parent.curActive}},watch:{"parent.curActive":function(){this.inited=this.inited||this.selected},title:function(){this.parent.setLine()}},created:function(){this.findParent("van-tabs")},mounted:function(){var n=this.parent.tabs,t=this.parent.slots().indexOf(this.$vnode);n.splice(-1===t?n.length:t,0,this),this.slots("title")&&this.parent.renderTitle(this.$refs.title,this.index)},beforeDestroy:function(){this.parent.tabs.splice(this.index,1)},render:function(n){var t=this.slots,e=this.inited||!this.parent.lazyRender;return n("div",{directives:[{name:"show",value:this.selected||this.parent.animated}],class:$i("pane")},[e?t():n(),t("title")&&n("div",{ref:"title"},[t("title")])])}}),ji=Object(a.k)("tabs"),Ti=ji[0],Ai=ji[1],Fi=Object(a.k)("tab")[1],Ei=Ti({mixins:[v],model:{prop:"active"},props:{color:String,sticky:Boolean,animated:Boolean,offsetTop:Number,swipeable:Boolean,background:String,titleActiveColor:String,titleInactiveColor:String,ellipsis:{type:Boolean,default:!0},lazyRender:{type:Boolean,default:!0},lineWidth:{type:Number,default:null},lineHeight:{type:Number,default:null},active:{type:[Number,String],default:0},type:{type:String,default:"line"},duration:{type:Number,default:.3},swipeThreshold:{type:Number,default:4}},data:function(){return{tabs:[],position:"",curActive:null,lineStyle:{backgroundColor:this.color},events:{resize:!1,sticky:!1,swipeable:!1}}},computed:{scrollable:function(){return this.tabs.length>this.swipeThreshold||!this.ellipsis},wrapStyle:function(){switch(this.position){case"top":return{top:this.offsetTop+"px",position:"fixed"};case"bottom":return{top:"auto",bottom:0};default:return null}},navStyle:function(){return{borderColor:this.color,background:this.background}},trackStyle:function(){if(this.animated)return{left:-1*this.curActive*100+"%",transitionDuration:this.duration+"s"}}},watch:{active:function(n){n!==this.curActive&&this.correctActive(n)},color:function(){this.setLine()},tabs:function(){this.correctActive(this.curActive||this.active),this.scrollIntoView(),this.setLine()},curActive:function(){var n,t;this.scrollIntoView(),this.setLine(),"top"!==this.position&&"bottom"!==this.position||(n=window,t=N(this.$el)-this.offsetTop,"scrollTop"in n?n.scrollTop=t:n.scrollTo(n.scrollX,t))},sticky:function(){this.handlers(!0)},swipeable:function(){this.handlers(!0)}},mounted:function(){this.onShow()},activated:function(){this.onShow(),this.setLine()},deactivated:function(){this.handlers(!1)},beforeDestroy:function(){this.handlers(!1)},methods:{onShow:function(){var n=this;this.$nextTick(function(){n.inited=!0,n.handlers(!0),n.scrollIntoView(!0)})},handlers:function(n){var t=this.events,e=this.sticky&&n,i=this.swipeable&&n;if(t.resize!==n&&(t.resize=n,(n?g:y)(window,"resize",this.setLine,!0)),t.sticky!==e&&(t.sticky=e,this.scrollEl=this.scrollEl||F(this.$el),(e?g:y)(this.scrollEl,"scroll",this.onScroll,!0),this.onScroll()),t.swipeable!==i){t.swipeable=i;var o=this.$refs.content,r=i?g:y;r(o,"touchstart",this.touchStart),r(o,"touchmove",this.touchMove),r(o,"touchend",this.onTouchEnd),r(o,"touchcancel",this.onTouchEnd)}},onTouchEnd:function(){var n=this.direction,t=this.deltaX,e=this.curActive;"horizontal"===n&&this.offsetX>=50&&(t>0&&0!==e?this.setCurActive(e-1):t<0&&e!==this.tabs.length-1&&this.setCurActive(e+1))},onScroll:function(){var n=E(window)+this.offsetTop,t=N(this.$el),e=t+this.$el.offsetHeight-this.$refs.wrap.offsetHeight;this.position=n>e?"bottom":n>t?"top":"";var i={scrollTop:n,isFixed:"top"===this.position};this.$emit("scroll",i)},setLine:function(){var n=this,t=this.inited;this.$nextTick(function(){var e=n.$refs.tabs;if(e&&e[n.curActive]&&"line"===n.type){var i=e[n.curActive],o=n.lineWidth,r=n.lineHeight,s=Object(a.d)(o)?o:i.offsetWidth/2,c=i.offsetLeft+(i.offsetWidth-s)/2,l={width:s+"px",backgroundColor:n.color,transform:"translateX("+c+"px)"};if(t&&(l.transitionDuration=n.duration+"s"),Object(a.d)(r)){var u=r+"px";l.height=u,l.borderRadius=u}n.lineStyle=l}})},correctActive:function(n){n=+n;var t=this.tabs.some(function(t){return t.index===n}),e=(this.tabs[0]||{}).index||0;this.setCurActive(t?n:e)},setCurActive:function(n){n=this.findAvailableTab(n,n=0&&i10?e:"0"+e)+":00"}if(!t){var i=n.split(":"),o=i[0],r=i[1];return(o=Pi(Object(a.j)(o,this.minHour,this.maxHour)))+":"+(r=Pi(Object(a.j)(r,this.minMinute,this.maxMinute)))}return n=Math.max(n,this.minDate.getTime()),n=Math.min(n,this.maxDate.getTime()),new Date(n)},getBoundary:function(n,t){var e,i=this[n+"Date"],o=i.getFullYear(),r=1,a=1,s=0,c=0;return"max"===n&&(r=12,a=Ui(t.getFullYear(),t.getMonth()+1),s=23,c=59),t.getFullYear()===o&&(r=i.getMonth()+1,t.getMonth()+1===r&&(a=i.getDate(),t.getDate()===a&&(s=i.getHours(),t.getHours()===s&&(c=i.getMinutes())))),(e={})[n+"Year"]=o,e[n+"Month"]=r,e[n+"Date"]=a,e[n+"Hour"]=s,e[n+"Minute"]=c,e},onConfirm:function(){this.$emit("confirm",this.innerValue)},onChange:function(n){var t,e=this;if("time"===this.type){var i=n.getIndexes();t=i[0]+this.minHour+":"+(i[1]+this.minMinute)}else{var o=n.getValues(),r=Ri(o[0]),a=Ri(o[1]),s=Ui(r,a),c=Ri(o[2]);"year-month"===this.type&&(c=1),c=c>s?s:c;var l=0,u=0;"datetime"===this.type&&(l=Ri(o[3]),u=Ri(o[4])),t=new Date(r,a-1,c,l,u)}this.innerValue=this.correctValue(t),this.$nextTick(function(){e.$nextTick(function(){e.$emit("change",n)})})},updateColumnValue:function(n){var t=this,e=[],i=this.formatter;if("time"===this.type){var o=n.split(":");e=[i("hour",o[0]),i("minute",o[1])]}else e=[i("year",""+n.getFullYear()),i("month",Pi(n.getMonth()+1)),i("day",Pi(n.getDate()))],"datetime"===this.type&&e.push(i("hour",Pi(n.getHours())),i("minute",Pi(n.getMinutes()))),"year-month"===this.type&&(e=e.slice(0,2));this.$nextTick(function(){t.$refs.picker.setValues(e)})}},render:function(n){var t=this,e={};return Object.keys(un).forEach(function(n){e[n]=t[n]}),n(yn,{class:qi(),ref:"picker",attrs:{columns:this.columns},on:{change:this.onChange,confirm:this.onConfirm,cancel:function(){t.$emit("cancel")}},props:Object(i.a)({},e)})}}),Xi=Object(a.k)("goods-action"),Ki=Xi[0],Qi=Xi[1];function Gi(n,t,e,i){return n("div",r()([{class:Qi({"safe-area-inset-bottom":t.safeAreaInsetBottom})},u(i,!0)]),[e.default&&e.default()])}Gi.props={safeAreaInsetBottom:Boolean};var Ji=Ki(Gi),Zi=Object(a.k)("goods-action-big-btn"),no=Zi[0],to=Zi[1];function eo(n,t,e,i){return n(tt,r()([{attrs:{square:!0,size:"large",loading:t.loading,disabled:t.disabled,type:t.primary?"danger":"warning"},class:to(),on:{click:function(n){d(i,"click",n),On(i)}}},u(i)]),[e.default?e.default():t.text])}eo.props=Object(i.a)({},$n,{text:String,primary:Boolean,loading:Boolean,disabled:Boolean});var io=no(eo),oo=Object(a.k)("goods-action-mini-btn"),ro=oo[0],ao=oo[1];function so(n,t,e,i){return n("div",r()([{class:[ao(),"van-hairline"],on:{click:function(n){d(i,"click",n),On(i)}}},u(i)]),[n(H,{class:[ao("icon"),t.iconClass],attrs:{tag:"div",info:t.info,name:t.icon}}),e.default?e.default():t.text])}so.props=Object(i.a)({},$n,{text:String,icon:String,info:[String,Number],iconClass:null});var co=ro(so),lo=Object(a.k)("swipe"),uo=lo[0],fo=lo[1],ho=uo({mixins:[v],props:{width:Number,height:Number,autoplay:Number,vertical:Boolean,initialSwipe:Number,indicatorColor:String,loop:{type:Boolean,default:!0},touchable:{type:Boolean,default:!0},showIndicators:{type:Boolean,default:!0},duration:{type:Number,default:500}},data:function(){return{computedWidth:0,computedHeight:0,offset:0,active:0,deltaX:0,deltaY:0,swipes:[],swiping:!1}},mounted:function(){this.initialize(),this.$isServer||g(window,"resize",this.onResize,!0)},activated:function(){this.rendered&&this.initialize(),this.rendered=!0},destroyed:function(){this.clear(),this.$isServer||y(window,"resize",this.onResize)},watch:{swipes:function(){this.initialize()},initialSwipe:function(){this.initialize()},autoplay:function(n){n?this.autoPlay():this.clear()}},computed:{count:function(){return this.swipes.length},delta:function(){return this.vertical?this.deltaY:this.deltaX},size:function(){return this[this.vertical?"computedHeight":"computedWidth"]},trackSize:function(){return this.count*this.size},activeIndicator:function(){return(this.active+this.count)%this.count},isCorrectDirection:function(){var n=this.vertical?"vertical":"horizontal";return this.direction===n},trackStyle:function(){var n,t=this.vertical?"height":"width",e=this.vertical?"width":"height";return(n={})[t]=this.trackSize+"px",n[e]=this[e]?this[e]+"px":"",n.transitionDuration=(this.swiping?0:this.duration)+"ms",n.transform="translate"+(this.vertical?"Y":"X")+"("+this.offset+"px)",n},indicatorStyle:function(){return{backgroundColor:this.indicatorColor}}},methods:{initialize:function(n){if(void 0===n&&(n=this.initialSwipe),clearTimeout(this.timer),this.$el){var t=this.$el.getBoundingClientRect();this.computedWidth=this.width||t.width,this.computedHeight=this.height||t.height}this.swiping=!0,this.active=n,this.offset=this.count>1?-this.size*this.active:0,this.swipes.forEach(function(n){n.offset=0}),this.autoPlay()},onResize:function(){this.initialize(this.activeIndicator)},onTouchStart:function(n){this.touchable&&(this.clear(),this.swiping=!0,this.touchStart(n),this.correctPosition())},onTouchMove:function(n){this.touchable&&this.swiping&&(this.touchMove(n),this.isCorrectDirection&&(k(n,!0),this.move({offset:Math.min(Math.max(this.delta,-this.size),this.size)})))},onTouchEnd:function(){if(this.touchable&&this.swiping){if(this.delta&&this.isCorrectDirection){var n=this.vertical?this.offsetY:this.offsetX;this.move({pace:n>0?this.delta>0?-1:1:0,emitChange:!0})}this.swiping=!1,this.autoPlay()}},move:function(n){var t=n.pace,e=void 0===t?0:t,i=n.offset,o=void 0===i?0:i,r=n.emitChange,a=this.delta,s=this.active,c=this.count,l=this.swipes,u=this.trackSize,d=0===s,f=s===c-1;!this.loop&&(d&&(o>0||e<0)||f&&(o<0||e>0))||c<=1||(l[0]&&(l[0].offset=f&&(a<0||e>0)?u:0),l[c-1]&&(l[c-1].offset=d&&(a>0||e<0)?-u:0),e&&s+e>=-1&&s+e<=c&&(this.active+=e,r&&this.$emit("change",this.activeIndicator)),this.offset=Math.round(o-this.active*this.size))},swipeTo:function(n){var t=this;this.swiping=!0,this.resetTouchStatus(),this.correctPosition(),setTimeout(function(){t.swiping=!1,t.move({pace:n%t.count-t.active,emitChange:!0})},30)},correctPosition:function(){this.active<=-1&&this.move({pace:this.count}),this.active>=this.count&&this.move({pace:-this.count})},clear:function(){clearTimeout(this.timer)},autoPlay:function(){var n=this,t=this.autoplay;t&&this.count>1&&(this.clear(),this.timer=setTimeout(function(){n.swiping=!0,n.resetTouchStatus(),n.correctPosition(),setTimeout(function(){n.swiping=!1,n.move({pace:1,emitChange:!0}),n.autoPlay()},30)},t))}},render:function(n){var t=this,e=this.count,i=this.activeIndicator,o=this.slots("indicator")||this.showIndicators&&e>1&&n("div",{class:fo("indicators",{vertical:this.vertical})},[Array.apply(void 0,Array(e)).map(function(e,o){return n("i",{class:fo("indicator",{active:o===i}),style:o===i?t.indicatorStyle:null})})]);return n("div",{class:fo()},[n("div",{ref:"track",style:this.trackStyle,class:fo("track"),on:{touchstart:this.onTouchStart,touchmove:this.onTouchMove,touchend:this.onTouchEnd,touchcancel:this.onTouchEnd}},[this.slots()]),o])}}),po=Object(a.k)("swipe-item"),vo=po[0],bo=po[1],mo=vo({data:function(){return{offset:0}},beforeCreate:function(){this.$parent.swipes.push(this)},destroyed:function(){this.$parent.swipes.splice(this.$parent.swipes.indexOf(this),1)},render:function(n){var t=this.$parent,e=t.vertical,o=t.computedWidth,r=t.computedHeight,a={width:o+"px",height:e?r+"px":"100%",transform:"translate"+(e?"Y":"X")+"("+this.offset+"px)"};return n("div",{class:bo(),style:a,on:Object(i.a)({},this.$listeners)},[this.slots()])}}),go=Object(a.k)("image-preview"),yo=go[0],xo=go[1];function ko(n){return Math.sqrt(Math.abs((n[0].clientX-n[1].clientX)*(n[0].clientY-n[1].clientY)))}var wo,_o=yo({mixins:[B,v],props:{images:Array,className:null,lazyLoad:Boolean,asyncClose:Boolean,startPosition:Number,showIndicators:Boolean,loop:{type:Boolean,default:!0},overlay:{type:Boolean,default:!0},showIndex:{type:Boolean,default:!0},minZoom:{type:Number,default:1/3},maxZoom:{type:Number,default:3},overlayClass:{type:String,default:"van-image-preview__overlay"},closeOnClickOverlay:{type:Boolean,default:!0}},data:function(){return{scale:1,moveX:0,moveY:0,moving:!1,zooming:!1,active:0}},computed:{imageStyle:function(){var n=this.scale,t={transition:this.zooming||this.moving?"":".3s all"};return 1!==n&&(t.transform="scale3d("+n+", "+n+", 1) translate("+this.moveX/n+"px, "+this.moveY/n+"px)"),t}},watch:{value:function(){this.active=this.startPosition},startPosition:function(n){this.active=n}},methods:{onWrapperTouchStart:function(){this.touchStartTime=new Date},onWrapperTouchEnd:function(n){k(n);var t=new Date-this.touchStartTime,e=this.$refs.swipe||{},i=e.offsetX,o=void 0===i?0:i,r=e.offsetY;if(t<300&&o<10&&(void 0===r?0:r)<10){var a=this.active;this.resetScale(),this.$emit("close",{index:a,url:this.images[a]}),this.asyncClose||this.$emit("input",!1)}},startMove:function(n){var t=n.currentTarget.getBoundingClientRect(),e=window.innerWidth,i=window.innerHeight;this.touchStart(n),this.moving=!0,this.startMoveX=this.moveX,this.startMoveY=this.moveY,this.maxMoveX=Math.max(0,(t.width-e)/2),this.maxMoveY=Math.max(0,(t.height-i)/2)},startZoom:function(n){this.moving=!1,this.zooming=!0,this.startScale=this.scale,this.startDistance=ko(n.touches)},onTouchStart:function(n){var t=n.touches,e=(this.$refs.swipe||{}).offsetX,i=void 0===e?0:e;1===t.length&&1!==this.scale?this.startMove(n):2!==t.length||i||this.startZoom(n)},onTouchMove:function(n){var t=n.touches;if((this.moving||this.zooming)&&k(n,!0),this.moving){this.touchMove(n);var e=this.deltaX+this.startMoveX,i=this.deltaY+this.startMoveY;this.moveX=Object(a.j)(e,-this.maxMoveX,this.maxMoveX),this.moveY=Object(a.j)(i,-this.maxMoveY,this.maxMoveY)}if(this.zooming&&2===t.length){var o=ko(t),r=this.startScale*o/this.startDistance;this.scale=Object(a.j)(r,this.minZoom,this.maxZoom)}},onTouchEnd:function(n){if(this.moving||this.zooming){var t=!0;this.moving&&this.startMoveX===this.moveX&&this.startMoveY===this.moveY&&(t=!1),n.touches.length||(this.moving=!1,this.zooming=!1,this.startMoveX=0,this.startMoveY=0,this.startScale=1,this.scale<1&&this.resetScale()),t&&k(n,!0)}},onChange:function(n){this.resetScale(),this.active=n,this.$emit("change",n)},resetScale:function(){this.scale=1,this.moveX=0,this.moveY=0}},render:function(n){var t=this;if(this.value){var e=this.active,i=this.images,o=this.showIndex&&n("div",{class:xo("index")},[this.slots("index")||e+1+"/"+i.length]),a=n(ho,{ref:"swipe",attrs:{loop:this.loop,indicatorColor:"white",initialSwipe:this.startPosition,showIndicators:this.showIndicators},on:{change:this.onChange}},[i.map(function(i,o){var a={class:xo("image"),style:o===e?t.imageStyle:null,on:{touchstart:t.onTouchStart,touchmove:t.onTouchMove,touchend:t.onTouchEnd,touchcancel:t.onTouchEnd}};return n(mo,[t.lazyLoad?n("img",r()([{directives:[{name:"lazy",value:i}]},a])):n("img",r()([{attrs:{src:i}},a]))])})]);return n("transition",{attrs:{name:"van-fade"}},[n("div",{class:[xo(),this.className],on:{touchstart:this.onWrapperTouchStart,touchend:this.onWrapperTouchEnd,touchcancel:this.onWrapperTouchEnd}},[o,a])])}}}),Co={images:[],loop:!0,value:!0,minZoom:1/3,maxZoom:3,className:"",lazyLoad:!1,showIndex:!0,asyncClose:!1,startPosition:0,showIndicators:!1},So=function(n,t){if(void 0===t&&(t=0),!a.h){wo||(wo=new(s.default.extend(_o))({el:document.createElement("div")}),document.body.appendChild(wo.$el));var e=Array.isArray(n)?{images:n,startPosition:t}:n;return Object(i.a)(wo,Co,e),wo.$once("input",function(n){wo.value=n}),e.onClose&&wo.$once("close",e.onClose),wo}};So.install=function(){s.default.use(_o)};var Oo=So,$o=e(22),zo=e.n($o).a,jo=Object(a.k)("list"),To=jo[0],Ao=jo[1],Fo=jo[2],Eo=To({model:{prop:"loading"},props:{error:Boolean,loading:Boolean,finished:Boolean,errorText:String,loadingText:String,finishedText:String,immediateCheck:{type:Boolean,default:!0},offset:{type:Number,default:300},direction:{type:String,default:"down"}},mounted:function(){this.scroller=F(this.$el),this.handler(!0),this.immediateCheck&&this.$nextTick(this.check)},destroyed:function(){this.handler(!1)},activated:function(){this.handler(!0)},deactivated:function(){this.handler(!1)},watch:{loading:function(){this.$nextTick(this.check)},finished:function(){this.$nextTick(this.check)}},methods:{check:function(){if(!(this.loading||this.finished||this.error)){var n=this.$el,t=this.scroller,e=I(t);if(e&&"none"!==window.getComputedStyle(n).display&&null!==n.offsetParent){var i=this.offset,o=this.direction;(function(){if(n===t){var r=E(n);if("up"===o)return r<=i;var a=r+e;return t.scrollHeight-a<=i}return"up"===o?E(t)-N(n)<=i:N(n)+I(n)-N(t)-e<=i})()&&(this.$emit("input",!0),this.$emit("load"))}}},clickErrorText:function(){this.$emit("update:error",!1),this.$nextTick(this.check)},handler:function(n){this.binded!==n&&(this.binded=n,(n?g:y)(this.scroller,"scroll",this.check))}},render:function(n){return n("div",{class:Ao()},["down"===this.direction&&this.slots(),this.loading&&n("div",{class:Ao("loading"),key:"loading"},[this.slots("loading")||[n(Q,{class:Ao("loading-icon")}),n("span",{class:Ao("loading-text")},[this.loadingText||Fo("loading")])]]),this.finished&&this.finishedText&&n("div",{class:Ao("finished-text")},[this.finishedText]),this.error&&this.errorText&&n("div",{on:{click:this.clickErrorText},class:Ao("error-text")},[this.errorText]),"up"===this.direction&&this.slots()])}}),No=e(8),Io=Object(a.k)("nav-bar"),Bo=Io[0],Lo=Io[1];function Do(n,t,e,i){return n("div",r()([{class:[Lo({fixed:t.fixed}),{"van-hairline--bottom":t.border}],style:{zIndex:t.zIndex}},u(i)]),[n("div",{class:Lo("left"),on:{click:i.listeners["click-left"]||a.i}},[e.left?e.left():[t.leftArrow&&n(H,{class:Lo("arrow"),attrs:{name:"arrow-left"}}),t.leftText&&n("span",{class:Lo("text")},[t.leftText])]]),n("div",{class:[Lo("title"),"van-ellipsis"]},[e.title?e.title():t.title]),n("div",{class:Lo("right"),on:{click:i.listeners["click-right"]||a.i}},[e.right?e.right():t.rightText&&n("span",{class:Lo("text")},[t.rightText])])])}Do.props={title:String,fixed:Boolean,leftText:String,rightText:String,leftArrow:Boolean,border:{type:Boolean,default:!0},zIndex:{type:Number,default:1}};var Mo=Bo(Do),Po=Object(a.k)("notice-bar"),Ro=Po[0],Uo=Po[1],Vo=Ro({props:{text:String,mode:String,color:String,leftIcon:String,wrapable:Boolean,background:String,delay:{type:[String,Number],default:1},scrollable:{type:Boolean,default:!0},speed:{type:Number,default:50}},data:function(){return{wrapWidth:0,firstRound:!0,duration:0,offsetWidth:0,showNoticeBar:!0,animationClass:""}},watch:{text:{handler:function(){var n=this;this.$nextTick(function(){var t=n.$refs,e=t.wrap,i=t.content;if(e&&i){var o=e.getBoundingClientRect().width,r=i.getBoundingClientRect().width;n.scrollable&&r>o&&(n.wrapWidth=o,n.offsetWidth=r,n.duration=r/n.speed,n.animationClass=Uo("play"))}})},immediate:!0}},methods:{onClickIcon:function(){"closeable"===this.mode&&(this.showNoticeBar=!1,this.$emit("close"))},onAnimationEnd:function(){var n=this;this.firstRound=!1,this.$nextTick(function(){n.duration=(n.offsetWidth+n.wrapWidth)/n.speed,n.animationClass=Uo("play--infinite")})}},render:function(n){var t=this,e=this.mode,i="closeable"===e?"cross":"link"===e?"arrow":"",o={color:this.color,background:this.background},r={paddingLeft:this.firstRound?0:this.wrapWidth+"px",animationDelay:(this.firstRound?this.delay:0)+"s",animationDuration:this.duration+"s"};return n("div",{directives:[{name:"show",value:this.showNoticeBar}],class:Uo({withicon:e,wrapable:this.wrapable}),style:o,on:{click:function(){t.$emit("click")}}},[this.leftIcon&&n(H,{class:Uo("left-icon"),attrs:{name:this.leftIcon}}),n("div",{ref:"wrap",class:Uo("wrap")},[n("div",{ref:"content",class:[Uo("content"),this.animationClass,{"van-ellipsis":!this.scrollable&&!this.wrapable}],style:r,on:{animationend:this.onAnimationEnd,webkitAnimationEnd:this.onAnimationEnd}},[this.slots()||this.text])]),i&&n(H,{class:Uo("right-icon"),attrs:{name:i},on:{click:this.onClickIcon}})])}}),Ho=Object(a.k)("notify"),qo=Ho[0],Wo=Ho[1];function Yo(n,t,e,i){var o={color:t.color,background:t.background};return n(nn,r()([{attrs:{value:t.value,position:"top",overlay:!1,lockScroll:!1},style:o,class:[Wo(),t.className],on:{input:function(n){d(i,"input",n)}}},u(i)]),[t.message])}Yo.props=Object(i.a)({},B.props,{className:null,message:[String,Number],color:{type:String,default:re.e},background:{type:String,default:re.d},duration:{type:Number,default:3e3}});var Xo,Ko,Qo=qo(Yo);function Go(n){var t;if(!a.h)return Ko||(Ko=f(Qo)),n=Object(i.a)({},Go.currentOptions,(t=n,Object(a.g)(t)?t:{message:t})),Object(i.a)(Ko,n),clearTimeout(Xo),n.duration&&n.duration>0&&(Xo=setTimeout(Go.clear,n.duration)),Ko}function Jo(){return{value:!0,message:"",color:re.e,background:re.d,duration:3e3,className:""}}Go.clear=function(){Ko&&(Ko.value=!1)},Go.currentOptions=Jo(),Go.setDefaultOptions=function(n){Object(i.a)(Go.currentOptions,n)},Go.resetDefaultOptions=function(){Go.currentOptions=Jo()},Go.install=function(){s.default.use(Qo)},s.default.prototype.$notify=Go;var Zo=Go,nr=Object(a.k)("key"),tr=nr[0],er=nr[1],ir=tr({props:{type:Array,text:[String,Number]},data:function(){return{active:!1}},computed:{className:function(){var n=this.type.slice(0);return this.active&&n.push("active"),er(n)}},methods:{onFocus:function(){this.active=!0,this.$emit("press",this.text)},onBlur:function(n){k(n,!0),this.active=!1}},render:function(n){var t=this.onBlur;return n("i",{class:["van-hairline",this.className],on:{touchstart:this.onFocus,touchmove:t,touchend:t,touchcancel:t}},[this.text])}}),or=Object(a.k)("number-keyboard"),rr=or[0],ar=or[1],sr=or[2],cr=["blue","big"],lr=["delete","big","gray"],ur=rr({props:{show:Boolean,title:String,closeButtonText:String,deleteButtonText:String,safeAreaInsetBottom:Boolean,theme:{type:String,default:"default"},extraKey:{type:String,default:""},zIndex:{type:Number,default:100},transition:{type:Boolean,default:!0},showDeleteKey:{type:Boolean,default:!0},hideOnClickOutside:{type:Boolean,default:!0}},mounted:function(){this.handler(!0)},destroyed:function(){this.handler(!1)},activated:function(){this.handler(!0)},deactivated:function(){this.handler(!1)},watch:{show:function(){this.transition||this.$emit(this.show?"show":"hide")}},computed:{keys:function(){for(var n=[],t=1;t<=9;t++)n.push({text:t});switch(this.theme){case"default":n.push({text:this.extraKey,type:["gray"]},{text:0},{text:this.deleteText,type:["gray","delete"]});break;case"custom":n.push({text:0,type:["middle"]},{text:this.extraKey})}return n},deleteText:function(){return this.deleteButtonText||sr("delete")}},methods:{handler:function(n){this.$isServer||n!==this.handlerStatus&&this.hideOnClickOutside&&(this.handlerStatus=n,document.body[(n?"add":"remove")+"EventListener"]("touchstart",this.onBlur))},onBlur:function(){this.$emit("blur")},onClose:function(){this.$emit("close"),this.onBlur()},onAnimationEnd:function(){this.$emit(this.show?"show":"hide")},onPress:function(n){""!==n&&(n===this.deleteText?this.$emit("delete"):n===this.closeButtonText?this.onClose():this.$emit("input",n))}},render:function(n){var t=this.title,e=this.theme,i=this.onPress,o=this.closeButtonText,r=this.slots("title-left"),a=o&&"default"===e,s=t||a||r;return n("transition",{attrs:{name:this.transition?"van-slide-up":""}},[n("div",{directives:[{name:"show",value:this.show}],style:{zIndex:this.zIndex},class:ar([e,{"safe-area-inset-bottom":this.safeAreaInsetBottom}]),on:{touchstart:x,animationend:this.onAnimationEnd,webkitAnimationEnd:this.onAnimationEnd}},[s&&n("div",{class:[ar("title"),"van-hairline--top"]},[r&&n("span",{class:ar("title-left")},[r]),t&&n("span",[t]),a&&n("span",{class:ar("close"),on:{click:this.onClose}},[o])]),n("div",{class:ar("body")},[this.keys.map(function(t){return n(ir,{key:t.text,attrs:{text:t.text,type:t.type},on:{press:i}})})]),"custom"===e&&n("div",{class:ar("sidebar")},[n(ir,{attrs:{text:this.deleteText,type:lr},on:{press:i}}),n(ir,{attrs:{text:o,type:cr},on:{press:i}})])])])}}),dr=Object(a.k)("pagination"),fr=dr[0],hr=dr[1],pr=dr[2];function vr(n,t,e){return{number:n,text:t,active:e}}var br=fr({props:{value:Number,prevText:String,nextText:String,pageCount:Number,totalItems:Number,forceEllipses:Boolean,mode:{type:String,default:"multi"},itemsPerPage:{type:Number,default:10},showPageSize:{type:Number,default:5}},computed:{count:function(){var n=this.pageCount||Math.ceil(this.totalItems/this.itemsPerPage);return Math.max(1,n)},pages:function(){var n=[],t=this.count;if("multi"!==this.mode)return n;var e=1,i=t,o=void 0!==this.showPageSize&&this.showPageSizet&&(e=(i=t)-this.showPageSize+1);for(var r=e;r<=i;r++){var a=vr(r,r,r===this.value);n.push(a)}if(o&&this.showPageSize>0&&this.forceEllipses){if(e>1){var s=vr(e-1,"...",!1);n.unshift(s)}if(i=0&&n<=100}},showPivot:{type:Boolean,default:!0},color:{type:String,default:re.a},textColor:{type:String,default:re.e}},data:function(){return{pivotWidth:0,progressWidth:0}},mounted:function(){this.getWidth()},watch:{showPivot:function(){this.getWidth()},pivotText:function(){this.getWidth()}},methods:{getWidth:function(){var n=this;this.$nextTick(function(){n.progressWidth=n.$el.offsetWidth,n.pivotWidth=n.$refs.pivot?n.$refs.pivot.offsetWidth:0})}},render:function(n){var t=this.pivotText,e=this.percentage,i=Object(a.d)(t)?t:e+"%",o=this.showPivot&&i,r=this.inactive?"#cacaca":this.color,s={color:this.textColor,background:this.pivotColor||r},c={background:r,width:(this.progressWidth-this.pivotWidth)*e/100+"px"};return n("div",{class:jr()},[n("span",{class:jr("portion",{"with-pivot":o}),style:c},[o&&n("span",{ref:"pivot",style:s,class:jr("pivot")},[i])])])}}),Ar=Object(a.k)("pull-refresh"),Fr=Ar[0],Er=Ar[1],Nr=Ar[2],Ir=["pulling","loosing","success"],Br=Fr({mixins:[v],props:{disabled:Boolean,successText:String,pullingText:String,loosingText:String,loadingText:String,value:{type:Boolean,required:!0},successDuration:{type:Number,default:500},animationDuration:{type:Number,default:300},headHeight:{type:Number,default:50}},data:function(){return{status:"normal",height:0,duration:0}},computed:{untouchable:function(){return"loading"===this.status||"success"===this.status||this.disabled}},watch:{value:function(n){var t=this;this.duration=this.animationDuration,!n&&this.successText?(this.status="success",setTimeout(function(){t.setStatus(0)},this.successDuration)):this.setStatus(n?this.headHeight:0,n)}},mounted:function(){this.scrollEl=F(this.$el)},methods:{onTouchStart:function(n){!this.untouchable&&this.getCeiling()&&(this.duration=0,this.touchStart(n))},onTouchMove:function(n){this.untouchable||(this.touchMove(n),!this.ceiling&&this.getCeiling()&&(this.duration=0,this.startY=n.touches[0].clientY,this.deltaY=0),this.ceiling&&this.deltaY>=0&&"vertical"===this.direction&&(this.setStatus(this.ease(this.deltaY)),k(n)))},onTouchEnd:function(){!this.untouchable&&this.ceiling&&this.deltaY&&(this.duration=this.animationDuration,"loosing"===this.status?(this.setStatus(this.headHeight,!0),this.$emit("input",!0),this.$emit("refresh")):this.setStatus(0))},getCeiling:function(){return this.ceiling=0===E(this.scrollEl),this.ceiling},ease:function(n){var t=this.headHeight;return n=a?"full":o+.5>=a&&s?"half":"void"));function x(n){v||p||(d(i,"input",n),d(i,"change",n))}return n("div",r()([{class:Mr()},u(i),{on:{touchmove:function(n){if(!p&&!v&&document.elementFromPoint){k(n);var t=n.touches[0],e=t.clientX,i=t.clientY,o=document.elementFromPoint(e,i);if(o&&o.dataset){var r=o.dataset.score;r&&x(+r)}}}}}]),[g.map(function(e,i){return function(e,i){var o="full"===e,r="void"===e;return n("div",{key:i,class:Mr("item")},[n(H,{attrs:{name:o?c:h,size:l+"px","data-score":i+1,color:v?m:o?f:b},class:Mr("icon"),on:{click:function(){x(i+1)}}}),t.allowHalf&&n(H,{attrs:{name:r?h:c,size:l+"px","data-score":i+.5,color:v?m:r?b:f},class:Mr("icon","half"),on:{click:function(){x(i+.5)}}})])}(e,i)})])}Pr.props={value:Number,readonly:Boolean,disabled:Boolean,allowHalf:Boolean,size:{type:Number,default:20},icon:{type:String,default:"star"},voidIcon:{type:String,default:"star-o"},color:{type:String,default:"#ffd21e"},voidColor:{type:String,default:"#c7c7c7"},disabledColor:{type:String,default:"#bdbdbd"},count:{type:Number,default:5}};var Rr=Dr(Pr),Ur=Object(a.k)("row"),Vr=Ur[0],Hr=Ur[1],qr=Vr({props:{type:String,align:String,justify:String,tag:{type:String,default:"div"},gutter:{type:[Number,String],default:0}},render:function(n){var t,e=this.align,i=this.justify,o="flex"===this.type,r="-"+Number(this.gutter)/2+"px",a=this.gutter?{marginLeft:r,marginRight:r}:{};return n(this.tag,{style:a,class:Hr((t={flex:o},t["align-"+e]=o&&e,t["justify-"+i]=o&&i,t))},[this.slots()])}}),Wr=Object(a.k)("search"),Yr=Wr[0],Xr=Wr[1],Kr=Wr[2];function Qr(n,t,e,o){var a={attrs:o.data.attrs,on:Object(i.a)({},o.listeners,{input:function(n){d(o,"input",n)},keypress:function(n){13===n.keyCode&&(k(n),d(o,"search",t.value)),d(o,"keypress",n)}})},s=u(o);return delete s.attrs,n("div",r()([{class:Xr({"show-action":t.showAction}),style:{background:t.background}},s]),[n("div",{class:Xr("content",t.shape)},[e.label||t.label?n("div",{class:Xr("label")},[e.label?e.label():t.label]):null,n(Ln,r()([{attrs:{clearable:!0,type:"search",value:t.value,border:!1,leftIcon:"search"},scopedSlots:{"left-icon":e["left-icon"]}},a]))]),function(){if(!t.showAction)return null;return n("div",{class:Xr("action")},[e.action?e.action():n("div",{on:{click:function(){d(o,"input",""),d(o,"cancel")}}},[Kr("cancel")])])}()])}Qr.props={value:String,label:String,showAction:Boolean,shape:{type:String,default:"square"},background:{type:String,default:"#fff"}};var Gr=Yr(Qr),Jr=Object(a.k)("sku-header"),Zr=Jr[0],na=Jr[1];function ta(n,t,e,i){var o=t.sku,a=t.goods,s=t.skuEventBus,c=function(n,t){var e=t.s1;if(e){var i=n.tree.filter(function(n){return"s1"===n.k_s})[0]||{};if(i.v){var o=i.v.filter(function(n){return n.id===e})[0];if(o)return o.imgUrl||o.img_url}}}(o,t.selectedSku)||a.picture;return n("div",r()([{class:[na(),"van-hairline--bottom"]},u(i)]),[n("div",{class:na("img-wrap"),on:{click:function(){s.$emit("sku:previewImage",c)}}},[n("img",{attrs:{src:c}})]),n("div",{class:na("goods-info")},[n("div",{class:"van-sku__goods-name van-ellipsis"},[a.title]),e.default&&e.default(),n(H,{attrs:{name:"close"},class:"van-sku__close-icon",on:{click:function(){s.$emit("sku:close")}}})])])}ta.props={sku:Object,goods:Object,skuEventBus:Object,selectedSku:Object};var ea=Zr(ta),ia=Object(a.k)("sku-row"),oa=ia[0],ra=ia[1];function aa(n,t,e,i){return n("div",r()([{class:ra()},u(i)]),[n("div",{class:ra("title")},[t.skuRow.k,":"]),e.default&&e.default()])}aa.props={skuRow:Object};var sa=oa(aa),ca=e(5),la=function(n){var t={};return n.forEach(function(n){t[n.k_s]=n.v}),t},ua=function(n,t){var e=Object.keys(t).filter(function(n){return t[n]!==ca.b});return n.length===e.length},da=function(n,t){return n.filter(function(n){return Object.keys(t).every(function(e){return String(n[e])===String(t[e])})})[0]},fa=function(n,t){var e=la(n);return Object.keys(t).reduce(function(n,i){var o=e[i],r=t[i];if(r!==ca.b){var a=o.filter(function(n){return n.id===r})[0];a&&n.push(a)}return n},[])},ha=function(n,t,e){var o,r=e.key,a=e.valueId,s=Object(i.a)({},t,((o={})[r]=a,o)),c=Object.keys(s).filter(function(n){return s[n]!==ca.b});return n.filter(function(n){return c.every(function(t){return String(s[t])===String(n[t])})}).reduce(function(n,t){return n+=t.stock_num},0)>0},pa={normalizeSkuTree:la,getSkuComb:da,getSelectedSkuValues:fa,isAllSelected:ua,isSkuChoosable:ha},va=(0,Object(a.k)("sku-row-item")[0])({props:{skuList:Array,skuValue:Object,skuKeyStr:String,skuEventBus:Object,selectedSku:Object},computed:{choosable:function(){return ha(this.skuList,this.selectedSku,{key:this.skuKeyStr,valueId:this.skuValue.id})}},methods:{onSelect:function(){this.choosable&&this.skuEventBus.$emit("sku:select",Object(i.a)({},this.skuValue,{skuKeyStr:this.skuKeyStr}))}},render:function(n){return n("span",{class:["van-sku-row__item",{"van-sku-row__item--active":this.skuValue.id===this.selectedSku[this.skuKeyStr],"van-sku-row__item--disabled":!this.choosable}],on:{click:this.onSelect}},[this.skuValue.name])}}),ba=Object(a.k)("stepper"),ma=ba[0],ga=ba[1],ya=ma({props:{value:null,integer:Boolean,disabled:Boolean,inputWidth:String,asyncChange:Boolean,disableInput:Boolean,min:{type:[String,Number],default:1},max:{type:[String,Number],default:1/0},step:{type:[String,Number],default:1},defaultValue:{type:[String,Number],default:1}},data:function(){var n=this.range(Object(a.d)(this.value)?this.value:this.defaultValue);return n!==+this.value&&this.$emit("input",n),{currentValue:n}},computed:{minusDisabled:function(){return this.disabled||this.currentValue<=this.min},plusDisabled:function(){return this.disabled||this.currentValue>=this.max}},watch:{value:function(n){n!==this.currentValue&&(this.currentValue=this.format(n))},currentValue:function(n){this.$emit("input",n),this.$emit("change",n)}},methods:{format:function(n){return""===(n=String(n).replace(/[^0-9.-]/g,""))?0:this.integer?Math.floor(n):+n},range:function(n){return Math.max(Math.min(this.max,this.format(n)),this.min)},onInput:function(n){var t=n.target.value,e=this.format(t);this.asyncChange?(n.target.value=this.currentValue,this.$emit("input",e),this.$emit("change",e)):(+t!==e&&(n.target.value=e),this.currentValue=e)},onChange:function(n){if(this[n+"Disabled"])this.$emit("overlimit",n);else{var t="minus"===n?-this.step:+this.step,e=Math.round(100*(this.currentValue+t))/100;this.asyncChange?(this.$emit("input",e),this.$emit("change",e)):this.currentValue=this.range(e),this.$emit(n)}},onFocus:function(n){this.$emit("focus",n)},onBlur:function(n){this.currentValue=this.range(this.currentValue),this.$emit("blur",n),0===this.currentValue&&(n.target.value=this.currentValue)}},render:function(n){var t=this,e=function(n){return function(){t.onChange(n)}};return n("div",{class:ga()},[n("button",{class:ga("minus",{disabled:this.minusDisabled}),on:{click:e("minus")}}),n("input",{attrs:{type:"number",disabled:this.disabled||this.disableInput},class:ga("input"),domProps:{value:this.currentValue},style:{width:this.inputWidth},on:{input:this.onInput,focus:this.onFocus,blur:this.onBlur}}),n("button",{class:ga("plus",{disabled:this.plusDisabled}),on:{click:e("plus")}})])}}),xa=Object(a.k)("sku-stepper")[0],ka=ca.a.QUOTA_LIMIT,wa=ca.a.STOCK_LIMIT,_a=xa({props:{quota:Number,quotaUsed:Number,hideStock:Boolean,skuEventBus:Object,skuStockNum:Number,selectedSku:Object,selectedNum:Number,stepperTitle:String,hideQuotaText:Boolean,selectedSkuComb:Object,disableStepperInput:Boolean,customStepperConfig:Object},data:function(){return{currentNum:this.selectedNum,limitType:wa}},watch:{currentNum:function(n){this.skuEventBus.$emit("sku:numChange",n)},stepperLimit:function(n){n0&&(e="每人限购"+this.quota+"件"),e},stepperLimit:function(){var n,t=this.quota-this.quotaUsed;return this.quota>0&&t<=this.stock?(n=t<0?0:t,this.limitType=ka):(n=this.stock,this.limitType=wa),n}},methods:{setCurrentNum:function(n){this.currentNum=n},onOverLimit:function(n){this.skuEventBus.$emit("sku:overLimit",{action:n,limitType:this.limitType,quota:this.quota,quotaUsed:this.quotaUsed})},onChange:function(n){var t=this.customStepperConfig.handleStepperChange;t&&t(n),this.$emit("change",n)}},render:function(n){var t=this;return n("div",{class:"van-sku-stepper-stock"},[n("div",{class:"van-sku-stepper-container"},[n("div",{class:"van-sku__stepper-title"},[this.stepperTitle||"购买数量",":"]),n(ya,{class:"van-sku__stepper",attrs:{max:this.stepperLimit,disableInput:this.disableStepperInput},on:{overlimit:this.onOverLimit,change:this.onChange},model:{value:t.currentNum,callback:function(n){t.currentNum=n}}})]),!this.hideStock&&n("div",{class:"van-sku__stock"},[this.stockText]),!this.hideQuotaText&&this.quotaText&&n("div",{class:"van-sku__quota"},[this.quotaText])])}});function Ca(n){return/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i.test(n)}var Sa=Object(a.k)("uploader"),Oa=Sa[0],$a=Sa[1],za=Oa({inheritAttrs:!1,props:{disabled:Boolean,beforeRead:Function,afterRead:Function,accept:{type:String,default:"image/*"},resultType:{type:String,default:"dataUrl"},maxSize:{type:Number,default:Number.MAX_VALUE}},computed:{detail:function(){return{name:this.$attrs.name||""}}},methods:{onChange:function(n){var t=this,e=n.target.files;!this.disabled&&e.length&&(!(e=1===e.length?e[0]:[].slice.call(e,0))||this.beforeRead&&!this.beforeRead(e,this.detail)?this.resetInput():Array.isArray(e)?Promise.all(e.map(this.readFile)).then(function(n){var i=!1,o=e.map(function(o,r){return o.size>t.maxSize&&(i=!0),{file:e[r],content:n[r]}});t.onAfterRead(o,i)}):this.readFile(e).then(function(n){t.onAfterRead({file:e,content:n},e.size>t.maxSize)}))},readFile:function(n){var t=this;return new Promise(function(e){var i=new FileReader;i.onload=function(n){e(n.target.result)},"dataUrl"===t.resultType?i.readAsDataURL(n):"text"===t.resultType&&i.readAsText(n)})},onAfterRead:function(n,t){t?this.$emit("oversize",n):this.afterRead&&this.afterRead(n,this.detail),this.resetInput()},resetInput:function(){this.$refs.input&&(this.$refs.input.value="")}},render:function(n){var t=this.accept,e=this.disabled;return n("div",{class:$a()},[this.slots(),n("input",{attrs:Object(i.a)({},this.$attrs,{type:"file",accept:t,disabled:e}),ref:"input",class:$a("input"),on:{change:this.onChange}})])}}),ja=Object(a.k)("sku-img-uploader"),Ta=ja[0],Aa=ja[1],Fa=Ta({props:{value:String,uploadImg:Function,maxSize:{type:Number,default:6}},data:function(){return{paddingImg:""}},computed:{imgList:function(){return this.value&&!this.paddingImg?[this.value]:[]}},methods:{afterReadFile:function(n){var t=this;this.paddingImg=n.content,this.uploadImg(n.file,n.content).then(function(n){t.$emit("input",n),t.$nextTick(function(){t.paddingImg=""})}).catch(function(){t.paddingImg=""})},onOversize:function(){this.$toast("最大可上传图片为"+this.maxSize+"MB,请尝试压缩图片尺寸")}},render:function(n){var t=this,e=this.imgList,i=this.paddingImg,o=(i||e.length>0)&&n("div",{class:"van-clearfix"},[e.map(function(e){return n("div",{class:Aa("img")},[n("img",{attrs:{src:e}}),n(H,{attrs:{name:"clear"},class:Aa("delete"),on:{click:function(){t.$emit("input","")}}})])}),i&&n("div",{class:Aa("img")},[n("img",{attrs:{src:i}}),n(Q,{attrs:{type:"spinner"},class:Aa("uploading")})])]);return n("div",{class:Aa()},[n(za,{attrs:{disabled:!!i,afterRead:this.afterReadFile,maxSize:1024*this.maxSize*1024},on:{oversize:this.onOversize}},[n("div",{class:Aa("header")},[i?n("div",["正在上传..."]):[n(H,{attrs:{name:"photograph"}}),n("span",{class:"label"},[this.value?"重拍":"拍照"," 或 "]),n(H,{attrs:{name:"photo"}}),n("span",{class:"label"},[this.value?"重新选择照片":"选择照片"])]])]),o])}}),Ea=Object(a.k)("sku-messages"),Na=Ea[0],Ia=Ea[1],Ba={id_no:"输入身份证号码",text:"输入文本",tel:"输入数字",email:"输入邮箱",date:"点击选择日期",time:"点击选择时间",textarea:"点击填写段落文本",mobile:"输入手机号码"},La=Na({props:{messages:Array,messageConfig:Object,goodsId:[Number,String]},data:function(){return{messageValues:this.resetMessageValues(this.messages)}},watch:{messages:function(n){this.messageValues=this.resetMessageValues(n)}},methods:{resetMessageValues:function(n){return(n||[]).map(function(){return{value:""}})},getType:function(n){return 1==+n.multiple?"textarea":"id_no"===n.type?"text":n.datetime>0?"datetime-local":n.type},getMessages:function(){var n=this,t={};return this.messageValues.forEach(function(e,i){var o=e.value;n.messages[i].datetime>0&&(o=o.replace(/T/g," ")),t["message_"+i]=o}),t},getCartMessages:function(){var n=this,t={};return this.messageValues.forEach(function(e,i){var o=e.value,r=n.messages[i];r.datetime>0&&(o=o.replace(/T/g," ")),t[r.name]=o}),t},getPlaceholder:function(n){var t=1==+n.multiple?"textarea":n.type;return(this.messageConfig.placeholderMap||{})[t]||Ba[t]},validateMessages:function(){for(var n=this.messageValues,t=0;t18))return"请填写正确的身份证号码"}}}},render:function(n){var t=this;return n(ke,{class:Ia()},[this.messages.map(function(e,i){return"image"===e.type?n(Fn,{class:Ia("image-cell"),attrs:{label:"仅限一张",title:e.name,required:"1"===String(e.required)},key:t.goodsId+"-"+i},[n(Fa,{attrs:{uploadImg:t.messageConfig.uploadImg,maxSize:t.messageConfig.uploadMaxSize},model:{value:t.messageValues[i].value,callback:function(n){t.messageValues[i].value=n}}})]):n(Ln,{attrs:{maxlength:"200",label:e.name,required:"1"===String(e.required),placeholder:t.getPlaceholder(e),type:t.getType(e)},key:t.goodsId+"-"+i,model:{value:t.messageValues[i].value,callback:function(n){t.messageValues[i].value=n}}})})])}}),Da=Object(a.k)("sku-actions"),Ma=Da[0],Pa=Da[1];function Ra(n,t,e,i){var o=function(n){return function(){t.skuEventBus.$emit(n)}};return n("div",r()([{class:Pa()},u(i)]),[t.showAddCartBtn&&n(tt,{attrs:{bottomAction:!0,text:"加入购物车"},on:{click:o("sku:addCart")}}),n(tt,{attrs:{type:"primary",bottomAction:!0,text:t.buyText||"立即购买"},on:{click:o("sku:buy")}})])}Ra.props={buyText:String,skuEventBus:Object,showAddCartBtn:Boolean};var Ua=Ma(Ra),Va=Object(a.k)("sku")[0],Ha=ca.a.QUOTA_LIMIT,qa=Va({props:{sku:Object,goods:Object,quota:Number,value:Boolean,buyText:String,quotaUsed:Number,goodsId:[Number,String],hideStock:Boolean,hideQuotaText:Boolean,stepperTitle:String,getContainer:Function,customSkuValidator:Function,closeOnClickOverlay:Boolean,disableStepperInput:Boolean,resetStepperOnHide:Boolean,resetSelectedSkuOnHide:Boolean,initialSku:{type:Object,default:function(){return{}}},showSoldoutSku:{type:Boolean,default:!0},showAddCartBtn:{type:Boolean,default:!0},bodyOffsetTop:{type:Number,default:200},messageConfig:{type:Object,default:function(){return{placeholderMap:{},uploadImg:function(){return Promise.resolve()},uploadMaxSize:5}}},customStepperConfig:{type:Object,default:function(){return{}}}},data:function(){return{selectedSku:{},selectedNum:1,show:this.value}},watch:{show:function(n){if(this.$emit("input",n),!n){var t=fa(this.sku.tree,this.selectedSku);this.$emit("sku-close",{selectedSkuValues:t,selectedNum:this.selectedNum,selectedSkuComb:this.selectedSkuComb}),this.resetStepperOnHide&&this.resetStepper(),this.resetSelectedSkuOnHide&&this.resetSelectedSku(this.skuTree)}},value:function(n){this.show=n},skuTree:function(n){this.resetSelectedSku(n)}},computed:{skuGroupClass:function(){return["van-sku-group-container","van-hairline--bottom",{"van-sku-group-container--hide-soldout":!this.showSoldoutSku}]},bodyStyle:function(){if(!this.$isServer)return{maxHeight:window.innerHeight-this.bodyOffsetTop+"px"}},isSkuCombSelected:function(){return ua(this.sku.tree,this.selectedSku)},isSkuEmpty:function(){return 0===Object.keys(this.sku).length},hasSku:function(){return!this.sku.none_sku},selectedSkuComb:function(){return this.hasSku?this.isSkuCombSelected?da(this.sku.list,this.selectedSku):null:{id:this.sku.collection_id,price:Math.round(100*this.sku.price),stock_num:this.sku.stock_num}},price:function(){return this.selectedSkuComb?(this.selectedSkuComb.price/100).toFixed(2):this.sku.price},skuTree:function(){return this.sku.tree||[]},imageList:function(){var n=[this.goods.picture];if(this.skuTree.length>0){var t=this.skuTree.filter(function(n){return"s1"===n.k_s})[0]||{};if(!t.v)return;t.v.forEach(function(t){var e=t.imgUrl||t.img_url;e&&n.push(e)})}return n}},created:function(){var n=new s.default;this.skuEventBus=n,n.$on("sku:close",this.onClose),n.$on("sku:select",this.onSelect),n.$on("sku:numChange",this.onNumChange),n.$on("sku:previewImage",this.onPreviewImage),n.$on("sku:overLimit",this.onOverLimit),n.$on("sku:addCart",this.onAddCart),n.$on("sku:buy",this.onBuy),this.resetStepper(),this.resetSelectedSku(this.skuTree),this.$emit("after-sku-create",n)},methods:{resetStepper:function(){var n=this.$refs.skuStepper,t=this.initialSku.selectedNum,e=Object(a.d)(t)?t:1;n?n.setCurrentNum(e):this.selectedNum=e},resetSelectedSku:function(n){var t=this;this.selectedSku={},n.forEach(function(n){t.selectedSku[n.k_s]=t.initialSku[n.k_s]||ca.b}),n.forEach(function(n){var e=n.k_s,i=n.v[0].id;1===n.v.length&&ha(t.sku.list,t.selectedSku,{key:e,valueId:i})&&(t.selectedSku[e]=i)})},getSkuMessages:function(){return this.$refs.skuMessages?this.$refs.skuMessages.getMessages():{}},getSkuCartMessages:function(){return this.$refs.skuMessages?this.$refs.skuMessages.getCartMessages():{}},validateSkuMessages:function(){return this.$refs.skuMessages?this.$refs.skuMessages.validateMessages():""},validateSku:function(){if(0===this.selectedNum)return"商品已经无法购买啦";if(this.isSkuCombSelected)return this.validateSkuMessages();if(this.customSkuValidator){var n=this.customSkuValidator(this);if(n)return n}return"请先选择商品规格"},onClose:function(){this.show=!1},onSelect:function(n){var t,e;this.selectedSku=this.selectedSku[n.skuKeyStr]===n.id?Object(i.a)({},this.selectedSku,((t={})[n.skuKeyStr]=ca.b,t)):Object(i.a)({},this.selectedSku,((e={})[n.skuKeyStr]=n.id,e)),this.$emit("sku-selected",{skuValue:n,selectedSku:this.selectedSku,selectedSkuComb:this.selectedSkuComb})},onNumChange:function(n){this.selectedNum=n},onPreviewImage:function(n){var t=this,e=this.imageList.findIndex(function(t){return t===n}),i={index:e,imageList:this.imageList,indexImage:n};this.$emit("preview-on",i),Oo({images:this.imageList,startPosition:e,onClose:function(){t.$emit("preview-close",i)}})},onOverLimit:function(n){var t=n.action,e=n.limitType,i=n.quota,o=n.quotaUsed,r=this.customStepperConfig.handleOverLimit;if(r)r(n);else if("minus"===t)Kn("至少选择一件");else if("plus"===t)if(e===Ha){var a="限购"+i+"件";o>0&&(a+=",你已购买"+o+"件"),Kn(a)}else Kn("库存不足")},onAddCart:function(){this.onBuyOrAddCart("add-cart")},onBuy:function(){this.onBuyOrAddCart("buy-clicked")},onBuyOrAddCart:function(n){var t=this.validateSku();t?Kn(t):this.$emit(n,this.getSkuData())},getSkuData:function(){return{goodsId:this.goodsId,selectedNum:this.selectedNum,selectedSkuComb:this.selectedSkuComb,messages:this.getSkuMessages(),cartMessages:this.getSkuCartMessages()}}},render:function(n){var t=this;if(!this.isSkuEmpty){var e=this.sku,i=this.goods,o=this.price,r=this.skuEventBus,a=this.selectedSku,s=this.selectedNum,c=this.stepperTitle,l=this.hideQuotaText,u=this.selectedSkuComb,d={price:o,selectedNum:s,skuEventBus:r,selectedSku:a,selectedSkuComb:u},f=function(n){return t.slots(n,d)},h=f("sku-header")||n(ea,{attrs:{sku:e,goods:i,skuEventBus:r,selectedSku:a}},[f("sku-header-price")||n("div",{class:"van-sku__goods-price"},[n("span",{class:"van-sku__price-symbol"},["¥"]),n("span",{class:"van-sku__price-num"},[o])])]),p=f("sku-group")||this.hasSku&&n("div",{class:this.skuGroupClass},[this.skuTree.map(function(t){return n(sa,{attrs:{skuRow:t}},[t.v.map(function(i){return n(va,{attrs:{skuList:e.list,skuValue:i,selectedSku:a,skuEventBus:r,skuKeyStr:t.k_s}})})])})]),v=f("sku-stepper")||n(_a,{ref:"skuStepper",attrs:{quota:this.quota,hideStock:this.hideStock,quotaUsed:this.quotaUsed,skuEventBus:r,selectedNum:s,selectedSku:a,stepperTitle:c,skuStockNum:e.stock_num,hideQuotaText:l,selectedSkuComb:u,disableStepperInput:this.disableStepperInput,customStepperConfig:this.customStepperConfig},on:{change:function(n){t.$emit("stepper-change",n)}}}),b=f("sku-messages")||n(La,{ref:"skuMessages",attrs:{goodsId:this.goodsId,messageConfig:this.messageConfig,messages:e.messages}}),m=f("sku-actions")||n(Ua,{attrs:{buyText:this.buyText,skuEventBus:r,showAddCartBtn:this.showAddCartBtn}});return n(nn,{attrs:{position:"bottom",getContainer:this.getContainer,closeOnClickOverlay:this.closeOnClickOverlay},class:"van-sku-container",model:{value:t.show,callback:function(n){t.show=n}}},[h,n("div",{class:"van-sku-body",style:this.bodyStyle},[f("sku-body-top"),p,f("extra-sku-group"),v,b]),m])}}});qa.SkuActions=Ua,qa.SkuHeader=ea,qa.SkuMessages=La,qa.SkuStepper=_a,qa.SkuRow=sa,qa.SkuRowItem=va,qa.skuHelper=pa,qa.skuConstants=ca.c;var Wa=qa,Ya=Object(a.k)("slider"),Xa=Ya[0],Ka=Ya[1],Qa=Xa({mixins:[v],props:{min:Number,value:Number,disabled:Boolean,vertical:Boolean,activeColor:String,inactiveColor:String,max:{type:Number,default:100},step:{type:Number,default:1},barHeight:{type:String,default:"2px"}},methods:{onTouchStart:function(n){this.disabled||(this.touchStart(n),this.startValue=this.format(this.value))},onTouchMove:function(n){if(k(n,!0),!this.disabled){this.touchMove(n);var t=this.$el.getBoundingClientRect(),e=(this.vertical?this.deltaY:this.deltaX)/(this.vertical?t.height:t.width)*100;this.newValue=this.startValue+e,this.updateValue(this.newValue)}},onTouchEnd:function(){this.disabled||this.updateValue(this.newValue,!0)},onClick:function(n){if(n.stopPropagation(),!this.disabled){var t=this.$el.getBoundingClientRect(),e=(this.vertical?n.clientY-t.top:n.clientX-t.left)/(this.vertical?t.height:t.width)*100;this.updateValue(e,!0)}},updateValue:function(n,t){n=this.format(n),this.$emit("input",n),t&&this.$emit("change",n)},format:function(n){return Math.round(Math.max(this.min,Math.min(n,this.max))/this.step)*this.step}},render:function(n){var t,e=this.vertical,i={background:this.inactiveColor},o=e?"width":"height",r=((t={})[e?"height":"width"]=this.format(this.value)+"%",t[o]=this.barHeight,t.background=this.activeColor,t);return n("div",{style:i,class:Ka({disabled:this.disabled,vertical:e}),on:{click:this.onClick}},[n("div",{class:Ka("bar"),style:r},[n("div",{class:Ka("button-wrapper"),on:{touchstart:this.onTouchStart,touchmove:this.onTouchMove,touchend:this.onTouchEnd,touchcancel:this.onTouchEnd}},[this.slots("button")||n("div",{class:Ka("button")})])])])}}),Ga=Object(a.k)("step"),Ja=Ga[0],Za=Ga[1],ns=Ja({beforeCreate:function(){var n=this.$parent.steps,t=this.$parent.slots().indexOf(this.$vnode);n.splice(-1===t?n.length:t,0,this)},beforeDestroy:function(){var n=this.$parent.steps.indexOf(this);n>-1&&this.$parent.steps.splice(n,1)},computed:{status:function(){var n=this.$parent.steps.indexOf(this),t=this.$parent.active;return ni*o&&i>0?this.open("right"):"left"===n&&t>e*o&&e>0?this.open("left"):this.swipeMove(0)},startDrag:function(n){this.disabled||(this.dragging=!0,this.startOffset=this.offset,this.touchStart(n))},onDrag:function(n){this.disabled||(this.touchMove(n),"horizontal"===this.direction&&(k(n),this.swipeMove(this.deltaX+this.startOffset)))},endDrag:function(){this.disabled||(this.dragging=!1,this.swiping&&this.swipeLeaveTransition(this.offset>0?"left":"right"))},onClick:function(n){void 0===n&&(n="outside"),this.$emit("click",n),this.offset&&(this.onClose?this.onClose(n,this):this.swipeMove(0))}},render:function(n){var t=this,e=function(n,e){return function(i){e&&i.stopPropagation(),t.onClick(n)}},i={transform:"translate3d("+this.offset+"px, 0, 0)",transition:this.dragging?"none":".6s cubic-bezier(0.18, 0.89, 0.32, 1)"};return n("div",{class:ps(),on:{click:e("cell"),touchstart:this.startDrag,touchmove:this.onDrag,touchend:this.endDrag,touchcancel:this.endDrag}},[n("div",{class:ps("wrapper"),style:i,on:{transitionend:function(){t.swiping=!1}}},[this.leftWidth?n("div",{class:ps("left"),on:{click:e("left",!0)}},[this.slots("left")]):null,this.slots(),this.rightWidth?n("div",{class:ps("right"),on:{click:e("right",!0)}},[this.slots("right")]):null])])}}),bs=Object(a.k)("tabbar"),ms=bs[0],gs=bs[1],ys=ms({data:function(){return{items:[]}},props:{value:Number,activeColor:String,safeAreaInsetBottom:Boolean,fixed:{type:Boolean,default:!0},zIndex:{type:Number,default:1}},watch:{items:function(){this.setActiveItem()},value:function(){this.setActiveItem()}},methods:{setActiveItem:function(){var n=this;this.items.forEach(function(t,e){t.active=e===n.value})},onChange:function(n){n!==this.value&&(this.$emit("input",n),this.$emit("change",n))}},render:function(n){return n("div",{style:{zIndex:this.zIndex},class:["van-hairline--top-bottom",gs({fixed:this.fixed,"safe-area-inset-bottom":this.safeAreaInsetBottom})]},[this.slots()])}}),xs=Object(a.k)("tabbar-item"),ks=xs[0],ws=xs[1],_s=ks({props:Object(i.a)({},$n,{icon:String,dot:Boolean,info:[String,Number]}),data:function(){return{active:!1}},beforeCreate:function(){this.$parent.items.push(this)},destroyed:function(){this.$parent.items.splice(this.$parent.items.indexOf(this),1)},methods:{onClick:function(n){this.$parent.onChange(this.$parent.items.indexOf(this)),this.$emit("click",n),Sn(this.$router,this)}},render:function(n){var t=this.icon,e=this.slots,i=this.active,o=i?{color:this.$parent.activeColor}:null;return n("div",{class:ws({active:i}),style:o,on:{click:this.onClick}},[n("div",{class:ws("icon",{dot:this.dot})},[e("icon",{active:i})||t&&n(H,{attrs:{name:t}}),n(R,{attrs:{info:this.info}})]),n("div",{class:ws("text")},[e("default",{active:i})])])}}),Cs=Object(a.k)("tree-select"),Ss=Cs[0],Os=Cs[1];function $s(n,t,e,i){var o=t.height,a=t.items,s=t.mainActiveIndex,c=t.activeId,l=(a[s]||{}).children||[];return n("div",r()([{class:Os(),style:{height:o+"px"}},u(i)]),[n("div",{class:Os("nav")},[a.map(function(t,e){return n("div",{key:e,class:["van-ellipsis",Os("nitem",{active:s===e,disabled:t.disabled})],on:{click:function(){t.disabled||d(i,"navclick",e)}}},[t.text])})]),n("div",{class:Os("content")},[l.map(function(t){return n("div",{key:t.id,class:["van-ellipsis",Os("item",{active:c===t.id,disabled:t.disabled})],on:{click:function(){t.disabled||d(i,"itemclick",t)}}},[t.text,c===t.id&&n(H,{attrs:{name:"checked",size:"16px"},class:Os("selected")})])})])])}$s.props={items:Array,mainActiveIndex:Number,activeId:{type:[Number,String],default:0},height:{type:Number,default:300}};var zs=Ss($s),js="@@Waterfall",Ts=300;function As(){var n=this;if(!this.el[js].binded){this.el[js].binded=!0,this.scrollEventListener=function(){var n=this.el,t=this.scrollEventTarget;if(!this.disabled){var e=E(t),i=I(t),o=e+i;if(i){(n===t?t.scrollHeight-o0)&&this.cb.upper&&this.cb.upper({target:t,top:e})}}}.bind(this),this.scrollEventTarget=F(this.el);var t=this.el.getAttribute("waterfall-disabled"),e=!1;t&&(this.vm.$watch(t,function(t){n.disabled=t,n.scrollEventListener()}),e=Boolean(this.vm[t])),this.disabled=e;var i=this.el.getAttribute("waterfall-offset");this.offset=Number(i)||Ts,g(this.scrollEventTarget,"scroll",this.scrollEventListener,!0),this.scrollEventListener()}}function Fs(n){n[js].vm.$nextTick(function(){As.call(n[js])})}var Es=function(n){return{bind:function(t,e,i){t[js]||(t[js]={el:t,vm:i.context,cb:{}}),t[js].cb[n]=e.value,function(n){var t=n[js];t.vm._isMounted?Fs(n):t.vm.$on("hook:mounted",function(){Fs(n)})}(t)},update:function(n){var t=n[js];t.scrollEventListener&&t.scrollEventListener()},unbind:function(n){var t=n[js];t.scrollEventTarget&&y(t.scrollEventTarget,"scroll",t.scrollEventListener)}}};Es.install=function(n){n.directive("WaterfallLower",Es("lower")),n.directive("WaterfallUpper",Es("upper"))};var Ns=Es;e.d(t,"a",function(){return Oo}),e.d(t,"b",function(){return zo}),e.d(t,"c",function(){return No.a}),e.d(t,"d",function(){return Ns});var Is=[an,At,Qt,_n,ne,oe,tt,be,Fn,ke,_e,$e,Ne,De,Ue,Ye,Ze,ri,di,gi,Ci,Di,Yi,ct,Ln,Ji,io,co,H,Oo,R,Eo,Q,Mo,Vo,Zo,ur,$,br,kr,Or,yn,nn,Tr,Br,Mt,It,Rr,qr,Gr,Wa,Qa,ns,ya,os,ds,ho,vs,mo,xt,St,zi,ys,_s,Ei,de,Kn,zs,za],Bs=function(n){Is.forEach(function(t){n.use(t)})};"undefined"!=typeof window&&window.Vue&&Bs(window.Vue);t.e={install:Bs,version:"1.6.28"}},function(n,t,e){var i=e(29).version;n.exports={"zh-CN":{header:{logo:{image:"https://img.yzcdn.cn/public_files/2017/12/18/fd78cf6bb5d12e2a119d0576bedfd230.png",title:"Vant",version:i,href:"#/"},nav:{"Vue 组件":"https://vant-ui.github.io/vant/v1/","小程序组件":"https://vant-ui.github.io/vant-weapp/",lang:{text:"En",from:"zh-CN",to:"en-US"},github:"https://github.com/youzan/vant"}},nav:[{name:"开发指南",groups:[{list:[{path:"/intro",title:"介绍"},{path:"/quickstart",title:"快速上手"},{path:"/changelog",title:"更新日志"},{path:"/style",title:"内置样式"},{path:"/theme",title:"定制主题"},{path:"/contribution",title:"开发指南"},{path:"/design",title:"设计资源"},{path:"/style-guide",title:"风格指南"},{path:"/demo",title:"示例页面"},{path:"/locale",title:"国际化"}]}]},{name:"组件",showInMobile:!0,groups:[{groupName:"基础组件",icon:"https://img.yzcdn.cn/vant/basic-0401.svg",list:[{path:"/button",title:"Button 按钮"},{path:"/cell",title:"Cell 单元格"},{path:"/icon",title:"Icon 图标"},{path:"/col",title:"Layout 布局"},{path:"/popup",title:"Popup 弹出层"}]},{groupName:"表单组件",icon:"https://img.yzcdn.cn/vant/form-0401.svg",list:[{path:"/checkbox",title:"Checkbox 复选框"},{path:"/datetime-picker",title:"DatetimePicker 时间选择"},{path:"/field",title:"Field 输入框"},{path:"/number-keyboard",title:"NumberKeyboard 数字键盘"},{path:"/password-input",title:"PasswordInput 密码输入框"},{path:"/picker",title:"Picker 选择器"},{path:"/radio",title:"Radio 单选框"},{path:"/rate",title:"Rate 评分"},{path:"/search",title:"Search 搜索"},{path:"/slider",title:"Slider 滑块"},{path:"/stepper",title:"Stepper 步进器"},{path:"/switch",title:"Switch 开关"},{path:"/switch-cell",title:"SwitchCell 开关单元格"},{path:"/uploader",title:"Uploader 图片上传"}]},{groupName:"反馈组件",icon:"passed",list:[{path:"/actionsheet",title:"Actionsheet 上拉菜单"},{path:"/dialog",title:"Dialog 弹出框"},{path:"/loading",title:"Loading 加载"},{path:"/notify",title:"Notify 消息通知"},{path:"/pull-refresh",title:"PullRefresh 下拉刷新"},{path:"/swipe-cell",title:"SwipeCell 滑动单元格"},{path:"/toast",title:"Toast 轻提示"}]},{groupName:"展示组件",icon:"photo-o",list:[{path:"/circle",title:"Circle 环形进度条"},{path:"/collapse",title:"Collapse 折叠面板"},{path:"/image-preview",title:"ImagePreview 图片预览"},{path:"/lazyload",title:"Lazyload 图片懒加载"},{path:"/list",title:"List 列表"},{path:"/notice-bar",title:"NoticeBar 通告栏"},{path:"/panel",title:"Panel 面板"},{path:"/progress",title:"Progress 进度条"},{path:"/steps",title:"Steps 步骤条"},{path:"/swipe",title:"Swipe 轮播"},{path:"/tag",title:"Tag 标记"}]},{groupName:"导航组件",icon:"https://img.yzcdn.cn/vant/nav-0401.svg",list:[{path:"/badge",title:"Badge 徽章"},{path:"/nav-bar",title:"NavBar 导航栏"},{path:"/pagination",title:"Pagination 分页"},{path:"/tab",title:"Tab 标签页"},{path:"/tabbar",title:"Tabbar 标签栏"},{path:"/tree-select",title:"TreeSelect 分类选择"}]},{groupName:"业务组件",icon:"ellipsis",list:[{path:"/address-edit",title:"AddressEdit 地址编辑"},{path:"/address-list",title:"AddressList 地址列表"},{path:"/area",title:"Area 省市区选择"},{path:"/card",title:"Card 商品卡片"},{path:"/contact-card",title:"Contact 联系人"},{path:"/coupon-list",title:"Coupon 优惠券"},{path:"/goods-action",title:"GoodsAction 商品导航"},{path:"/submit-bar",title:"SubmitBar 提交订单栏"},{path:"/sku",title:"Sku 商品规格"}]}]}]},"en-US":{header:{logo:{image:"https://img.yzcdn.cn/public_files/2017/12/18/fd78cf6bb5d12e2a119d0576bedfd230.png",title:"Vant",version:i,href:"#/"},nav:{lang:{text:"中文",from:"en-US",to:"zh-CN"},github:"https://github.com/youzan/vant"}},nav:[{name:"Essentials",groups:[{list:[{path:"/intro",title:"Introduction"},{path:"/quickstart",title:"Quickstart"},{path:"/changelog",title:"Changelog"},{path:"/style",title:"Built-in style"},{path:"/theme",title:"Custom Theme"},{path:"/demo",title:"Demo pages"},{path:"/locale",title:"Internationalization"}]}]},{name:"Components",showInMobile:!0,groups:[{groupName:"Basic Components",icon:"https://img.yzcdn.cn/vant/basic-0401.svg",list:[{path:"/button",title:"Button"},{path:"/cell",title:"Cell"},{path:"/icon",title:"Icon"},{path:"/col",title:"Layout"},{path:"/popup",title:"Popup"}]},{groupName:"Form Components",icon:"https://img.yzcdn.cn/vant/form-0401.svg",list:[{path:"/checkbox",title:"Checkbox"},{path:"/datetime-picker",title:"DatetimePicker"},{path:"/field",title:"Field"},{path:"/number-keyboard",title:"NumberKeyboard"},{path:"/password-input",title:"PasswordInput"},{path:"/picker",title:"Picker"},{path:"/radio",title:"Radio"},{path:"/rate",title:"Rate"},{path:"/search",title:"Search"},{path:"/slider",title:"Slider"},{path:"/stepper",title:"Stepper"},{path:"/switch",title:"Switch"},{path:"/switch-cell",title:"SwitchCell"},{path:"/uploader",title:"Uploader"}]},{groupName:"Action Components",icon:"passed",list:[{path:"/actionsheet",title:"Actionsheet"},{path:"/dialog",title:"Dialog"},{path:"/loading",title:"Loading"},{path:"/notify",title:"Notify"},{path:"/pull-refresh",title:"PullRefresh"},{path:"/swipe-cell",title:"SwipeCell"},{path:"/toast",title:"Toast"}]},{groupName:"Display Components",icon:"photo-o",list:[{path:"/circle",title:"Circle"},{path:"/collapse",title:"Collapse"},{path:"/image-preview",title:"ImagePreview"},{path:"/lazyload",title:"Lazyload"},{path:"/list",title:"List"},{path:"/notice-bar",title:"NoticeBar"},{path:"/panel",title:"Panel"},{path:"/progress",title:"Progress"},{path:"/steps",title:"Steps"},{path:"/swipe",title:"Swipe"},{path:"/tag",title:"Tag"}]},{groupName:"Navigation Components",icon:"https://img.yzcdn.cn/vant/nav-0401.svg",list:[{path:"/badge",title:"Badge"},{path:"/nav-bar",title:"NavBar"},{path:"/pagination",title:"Pagination"},{path:"/tab",title:"Tab"},{path:"/tabbar",title:"Tabbar"},{path:"/tree-select",title:"TreeSelect"}]},{groupName:"Business Components",icon:"ellipsis",list:[{path:"/address-edit",title:"AddressEdit"},{path:"/address-list",title:"AddressList"},{path:"/area",title:"Area"},{path:"/card",title:"Card"},{path:"/contact-card",title:"Contact"},{path:"/coupon-list",title:"Coupon"},{path:"/goods-action",title:"GoodsAction"},{path:"/submit-bar",title:"SubmitBar"},{path:"/sku",title:"Sku"}]}]}]}}},function(n,t,e){"use strict";n.exports=function(n){var t=[];return t.toString=function(){return this.map(function(t){var e=function(n,t){var e=n[1]||"",i=n[3];if(!i)return e;if(t&&"function"==typeof btoa){var o=(a=i,"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(a))))+" */"),r=i.sources.map(function(n){return"/*# sourceURL="+i.sourceRoot+n+" */"});return[e].concat(r).concat([o]).join("\n")}var a;return[e].join("\n")}(t,n);return t[2]?"@media "+t[2]+"{"+e+"}":e}).join("")},t.i=function(n,e){"string"==typeof n&&(n=[[null,n,""]]);for(var i={},o=0;o=0&&u.splice(t,1)}function b(n){var t=document.createElement("style");if(void 0===n.attrs.type&&(n.attrs.type="text/css"),void 0===n.attrs.nonce){var i=function(){0;return e.nc}();i&&(n.attrs.nonce=i)}return m(t,n.attrs),p(n,t),t}function m(n,t){Object.keys(t).forEach(function(e){n.setAttribute(e,t[e])})}function g(n,t){var e,i,o,r;if(t.transform&&n.css){if(!(r="function"==typeof t.transform?t.transform(n.css):t.transform.default(n.css)))return function(){};n.css=r}if(t.singleton){var a=l++;e=c||(c=b(t)),i=k.bind(null,e,a,!1),o=k.bind(null,e,a,!0)}else n.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(e=function(n){var t=document.createElement("link");return void 0===n.attrs.type&&(n.attrs.type="text/css"),n.attrs.rel="stylesheet",m(t,n.attrs),p(n,t),t}(t),i=function(n,t,e){var i=e.css,o=e.sourceMap,r=void 0===t.convertToAbsoluteUrls&&o;(t.convertToAbsoluteUrls||r)&&(i=d(i));o&&(i+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(o))))+" */");var a=new Blob([i],{type:"text/css"}),s=n.href;n.href=URL.createObjectURL(a),s&&URL.revokeObjectURL(s)}.bind(null,e,t),o=function(){v(e),e.href&&URL.revokeObjectURL(e.href)}):(e=b(t),i=function(n,t){var e=t.css,i=t.media;i&&n.setAttribute("media",i);if(n.styleSheet)n.styleSheet.cssText=e;else{for(;n.firstChild;)n.removeChild(n.firstChild);n.appendChild(document.createTextNode(e))}}.bind(null,e),o=function(){v(e)});return i(n),function(t){if(t){if(t.css===n.css&&t.media===n.media&&t.sourceMap===n.sourceMap)return;i(n=t)}else o()}}n.exports=function(n,t){if("undefined"!=typeof DEBUG&&DEBUG&&"object"!=typeof document)throw new Error("The style-loader cannot be used in a non-browser environment");(t=t||{}).attrs="object"==typeof t.attrs?t.attrs:{},t.singleton||"boolean"==typeof t.singleton||(t.singleton=a()),t.insertInto||(t.insertInto="head"),t.insertAt||(t.insertAt="bottom");var e=h(n,t);return f(e,t),function(n){for(var i=[],o=0;o-1}function o(n,t){for(var e in t)n[e]=t[e];return n}var r={name:"RouterView",functional:!0,props:{name:{type:String,default:"default"}},render:function(n,t){var e=t.props,i=t.children,r=t.parent,a=t.data;a.routerView=!0;for(var s=r.$createElement,c=e.name,l=r.$route,u=r._routerViewCache||(r._routerViewCache={}),d=0,f=!1;r&&r._routerRoot!==r;){var h=r.$vnode&&r.$vnode.data;h&&(h.routerView&&d++,h.keepAlive&&r._inactive&&(f=!0)),r=r.$parent}if(a.routerViewDepth=d,f)return s(u[c],a,i);var p=l.matched[d];if(!p)return u[c]=null,s();var v=u[c]=p.components[c];a.registerRouteInstance=function(n,t){var e=p.instances[c];(t&&e!==n||!t&&e===n)&&(p.instances[c]=t)},(a.hook||(a.hook={})).prepatch=function(n,t){p.instances[c]=t.componentInstance},a.hook.init=function(n){n.data.keepAlive&&n.componentInstance&&n.componentInstance!==p.instances[c]&&(p.instances[c]=n.componentInstance)};var b=a.props=function(n,t){switch(typeof t){case"undefined":return;case"object":return t;case"function":return t(n);case"boolean":return t?n.params:void 0;default:0}}(l,p.props&&p.props[c]);if(b){b=a.props=o({},b);var m=a.attrs=a.attrs||{};for(var g in b)v.props&&g in v.props||(m[g]=b[g],delete b[g])}return s(v,a,i)}};var a=/[!'()*]/g,s=function(n){return"%"+n.charCodeAt(0).toString(16)},c=/%2C/g,l=function(n){return encodeURIComponent(n).replace(a,s).replace(c,",")},u=decodeURIComponent;function d(n){var t={};return(n=n.trim().replace(/^(\?|#|&)/,""))?(n.split("&").forEach(function(n){var e=n.replace(/\+/g," ").split("="),i=u(e.shift()),o=e.length>0?u(e.join("=")):null;void 0===t[i]?t[i]=o:Array.isArray(t[i])?t[i].push(o):t[i]=[t[i],o]}),t):t}function f(n){var t=n?Object.keys(n).map(function(t){var e=n[t];if(void 0===e)return"";if(null===e)return l(t);if(Array.isArray(e)){var i=[];return e.forEach(function(n){void 0!==n&&(null===n?i.push(l(t)):i.push(l(t)+"="+l(n)))}),i.join("&")}return l(t)+"="+l(e)}).filter(function(n){return n.length>0}).join("&"):null;return t?"?"+t:""}var h=/\/?$/;function p(n,t,e,i){var o=i&&i.options.stringifyQuery,r=t.query||{};try{r=v(r)}catch(n){}var a={name:t.name||n&&n.name,meta:n&&n.meta||{},path:t.path||"/",hash:t.hash||"",query:r,params:t.params||{},fullPath:g(t,o),matched:n?m(n):[]};return e&&(a.redirectedFrom=g(e,o)),Object.freeze(a)}function v(n){if(Array.isArray(n))return n.map(v);if(n&&"object"==typeof n){var t={};for(var e in n)t[e]=v(n[e]);return t}return n}var b=p(null,{path:"/"});function m(n){for(var t=[];n;)t.unshift(n),n=n.parent;return t}function g(n,t){var e=n.path,i=n.query;void 0===i&&(i={});var o=n.hash;return void 0===o&&(o=""),(e||"/")+(t||f)(i)+o}function y(n,t){return t===b?n===t:!!t&&(n.path&&t.path?n.path.replace(h,"")===t.path.replace(h,"")&&n.hash===t.hash&&x(n.query,t.query):!(!n.name||!t.name)&&(n.name===t.name&&n.hash===t.hash&&x(n.query,t.query)&&x(n.params,t.params)))}function x(n,t){if(void 0===n&&(n={}),void 0===t&&(t={}),!n||!t)return n===t;var e=Object.keys(n),i=Object.keys(t);return e.length===i.length&&e.every(function(e){var i=n[e],o=t[e];return"object"==typeof i&&"object"==typeof o?x(i,o):String(i)===String(o)})}var k,w=[String,Object],_=[String,Array],C={name:"RouterLink",props:{to:{type:w,required:!0},tag:{type:String,default:"a"},exact:Boolean,append:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,event:{type:_,default:"click"}},render:function(n){var t=this,e=this.$router,i=this.$route,r=e.resolve(this.to,i,this.append),a=r.location,s=r.route,c=r.href,l={},u=e.options.linkActiveClass,d=e.options.linkExactActiveClass,f=null==u?"router-link-active":u,v=null==d?"router-link-exact-active":d,b=null==this.activeClass?f:this.activeClass,m=null==this.exactActiveClass?v:this.exactActiveClass,g=a.path?p(null,a,null,e):s;l[m]=y(i,g),l[b]=this.exact?l[m]:function(n,t){return 0===n.path.replace(h,"/").indexOf(t.path.replace(h,"/"))&&(!t.hash||n.hash===t.hash)&&function(n,t){for(var e in t)if(!(e in n))return!1;return!0}(n.query,t.query)}(i,g);var x=function(n){S(n)&&(t.replace?e.replace(a):e.push(a))},k={click:S};Array.isArray(this.event)?this.event.forEach(function(n){k[n]=x}):k[this.event]=x;var w={class:l};if("a"===this.tag)w.on=k,w.attrs={href:c};else{var _=function n(t){if(t)for(var e,i=0;i=0&&(t=n.slice(i),n=n.slice(0,i));var o=n.indexOf("?");return o>=0&&(e=n.slice(o+1),n=n.slice(0,o)),{path:n,query:e,hash:t}}(r.path||""),l=t&&t.path||"/",u=c.path?$(c.path,l,e||r.append):l,f=function(n,t,e){void 0===t&&(t={});var i,o=e||d;try{i=o(n||"")}catch(n){i={}}for(var r in t)i[r]=t[r];return i}(c.query,r.query,i&&i.options.parseQuery),h=r.hash||c.hash;return h&&"#"!==h.charAt(0)&&(h="#"+h),{_normalized:!0,path:u,query:f,hash:h}}function Q(n,t){var e=Y(n),i=e.pathList,o=e.pathMap,r=e.nameMap;function a(n,e,a){var s=K(n,e,!1,t),l=s.name;if(l){var u=r[l];if(!u)return c(null,s);var d=u.regex.keys.filter(function(n){return!n.optional}).map(function(n){return n.name});if("object"!=typeof s.params&&(s.params={}),e&&"object"==typeof e.params)for(var f in e.params)!(f in s.params)&&d.indexOf(f)>-1&&(s.params[f]=e.params[f]);if(u)return s.path=W(u.path,s.params),c(u,s,a)}else if(s.path){s.params={};for(var h=0;h=n.length?e():n[o]?t(n[o],function(){i(o+1)}):i(o+1)};i(0)}function bn(n){return function(t,e,o){var r=!1,a=0,s=null;mn(n,function(n,t,e,c){if("function"==typeof n&&void 0===n.cid){r=!0,a++;var l,u=xn(function(t){var i;((i=t).__esModule||yn&&"Module"===i[Symbol.toStringTag])&&(t=t.default),n.resolved="function"==typeof t?t:k.extend(t),e.components[c]=t,--a<=0&&o()}),d=xn(function(n){var t="Failed to resolve async component "+c+": "+n;s||(s=i(n)?n:new Error(t),o(s))});try{l=n(u,d)}catch(n){d(n)}if(l)if("function"==typeof l.then)l.then(u,d);else{var f=l.component;f&&"function"==typeof f.then&&f.then(u,d)}}}),r||o()}}function mn(n,t){return gn(n.map(function(n){return Object.keys(n.components).map(function(e){return t(n.components[e],n.instances[e],n,e)})}))}function gn(n){return Array.prototype.concat.apply([],n)}var yn="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag;function xn(n){var t=!1;return function(){for(var e=[],i=arguments.length;i--;)e[i]=arguments[i];if(!t)return t=!0,n.apply(this,e)}}var kn=function(n,t){this.router=n,this.base=function(n){if(!n)if(O){var t=document.querySelector("base");n=(n=t&&t.getAttribute("href")||"/").replace(/^https?:\/\/[^\/]+/,"")}else n="/";"/"!==n.charAt(0)&&(n="/"+n);return n.replace(/\/$/,"")}(t),this.current=b,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[]};function wn(n,t,e,i){var o=mn(n,function(n,i,o,r){var a=function(n,t){"function"!=typeof n&&(n=k.extend(n));return n.options[t]}(n,t);if(a)return Array.isArray(a)?a.map(function(n){return e(n,i,o,r)}):e(a,i,o,r)});return gn(i?o.reverse():o)}function _n(n,t){if(t)return function(){return n.apply(t,arguments)}}kn.prototype.listen=function(n){this.cb=n},kn.prototype.onReady=function(n,t){this.ready?n():(this.readyCbs.push(n),t&&this.readyErrorCbs.push(t))},kn.prototype.onError=function(n){this.errorCbs.push(n)},kn.prototype.transitionTo=function(n,t,e){var i=this,o=this.router.match(n,this.current);this.confirmTransition(o,function(){i.updateRoute(o),t&&t(o),i.ensureURL(),i.ready||(i.ready=!0,i.readyCbs.forEach(function(n){n(o)}))},function(n){e&&e(n),n&&!i.ready&&(i.ready=!0,i.readyErrorCbs.forEach(function(t){t(n)}))})},kn.prototype.confirmTransition=function(n,t,e){var o=this,r=this.current,a=function(n){i(n)&&(o.errorCbs.length?o.errorCbs.forEach(function(t){t(n)}):console.error(n)),e&&e(n)};if(y(n,r)&&n.matched.length===r.matched.length)return this.ensureURL(),a();var s=function(n,t){var e,i=Math.max(n.length,t.length);for(e=0;e-1?decodeURI(n.slice(0,i))+n.slice(i):decodeURI(n)}else e>-1&&(n=decodeURI(n.slice(0,e))+n.slice(e));return n}function jn(n){var t=window.location.href,e=t.indexOf("#");return(e>=0?t.slice(0,e):t)+"#"+n}function Tn(n){cn?hn(jn(n)):window.location.hash=n}function An(n){cn?pn(jn(n)):window.location.replace(jn(n))}var Fn=function(n){function t(t,e){n.call(this,t,e),this.stack=[],this.index=-1}return n&&(t.__proto__=n),t.prototype=Object.create(n&&n.prototype),t.prototype.constructor=t,t.prototype.push=function(n,t,e){var i=this;this.transitionTo(n,function(n){i.stack=i.stack.slice(0,i.index+1).concat(n),i.index++,t&&t(n)},e)},t.prototype.replace=function(n,t,e){var i=this;this.transitionTo(n,function(n){i.stack=i.stack.slice(0,i.index).concat(n),t&&t(n)},e)},t.prototype.go=function(n){var t=this,e=this.index+n;if(!(e<0||e>=this.stack.length)){var i=this.stack[e];this.confirmTransition(i,function(){t.index=e,t.updateRoute(i)})}},t.prototype.getCurrentLocation=function(){var n=this.stack[this.stack.length-1];return n?n.fullPath:"/"},t.prototype.ensureURL=function(){},t}(kn),En=function(n){void 0===n&&(n={}),this.app=null,this.apps=[],this.options=n,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=Q(n.routes||[],this);var t=n.mode||"hash";switch(this.fallback="history"===t&&!cn&&!1!==n.fallback,this.fallback&&(t="hash"),O||(t="abstract"),this.mode=t,t){case"history":this.history=new Cn(this,n.base);break;case"hash":this.history=new On(this,n.base,this.fallback);break;case"abstract":this.history=new Fn(this,n.base);break;default:0}},Nn={currentRoute:{configurable:!0}};function In(n,t){return n.push(t),function(){var e=n.indexOf(t);e>-1&&n.splice(e,1)}}En.prototype.match=function(n,t,e){return this.matcher.match(n,t,e)},Nn.currentRoute.get=function(){return this.history&&this.history.current},En.prototype.init=function(n){var t=this;if(this.apps.push(n),n.$once("hook:destroyed",function(){var e=t.apps.indexOf(n);e>-1&&t.apps.splice(e,1),t.app===n&&(t.app=t.apps[0]||null)}),!this.app){this.app=n;var e=this.history;if(e instanceof Cn)e.transitionTo(e.getCurrentLocation());else if(e instanceof On){var i=function(){e.setupListeners()};e.transitionTo(e.getCurrentLocation(),i,i)}e.listen(function(n){t.apps.forEach(function(t){t._route=n})})}},En.prototype.beforeEach=function(n){return In(this.beforeHooks,n)},En.prototype.beforeResolve=function(n){return In(this.resolveHooks,n)},En.prototype.afterEach=function(n){return In(this.afterHooks,n)},En.prototype.onReady=function(n,t){this.history.onReady(n,t)},En.prototype.onError=function(n){this.history.onError(n)},En.prototype.push=function(n,t,e){this.history.push(n,t,e)},En.prototype.replace=function(n,t,e){this.history.replace(n,t,e)},En.prototype.go=function(n){this.history.go(n)},En.prototype.back=function(){this.go(-1)},En.prototype.forward=function(){this.go(1)},En.prototype.getMatchedComponents=function(n){var t=n?n.matched?n:this.resolve(n).route:this.currentRoute;return t?[].concat.apply([],t.matched.map(function(n){return Object.keys(n.components).map(function(t){return n.components[t]})})):[]},En.prototype.resolve=function(n,t,e){var i=K(n,t=t||this.history.current,e,this),o=this.match(i,t),r=o.redirectedFrom||o.fullPath;return{location:i,route:o,href:function(n,t,e){var i="hash"===e?"#"+t:t;return n?z(n+"/"+i):i}(this.history.base,r,this.mode),normalizedTo:i,resolved:o}},En.prototype.addRoutes=function(n){this.matcher.addRoutes(n),this.history.current!==b&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(En.prototype,Nn),En.install=function n(t){if(!n.installed||k!==t){n.installed=!0,k=t;var e=function(n){return void 0!==n},i=function(n,t){var i=n.$options._parentVnode;e(i)&&e(i=i.data)&&e(i=i.registerRouteInstance)&&i(n,t)};t.mixin({beforeCreate:function(){e(this.$options.router)?(this._routerRoot=this,this._router=this.$options.router,this._router.init(this),t.util.defineReactive(this,"_route",this._router.history.current)):this._routerRoot=this.$parent&&this.$parent._routerRoot||this,i(this,this)},destroyed:function(){i(this)}}),Object.defineProperty(t.prototype,"$router",{get:function(){return this._routerRoot._router}}),Object.defineProperty(t.prototype,"$route",{get:function(){return this._routerRoot._route}}),t.component("RouterView",r),t.component("RouterLink",C);var o=t.config.optionMergeStrategies;o.beforeRouteEnter=o.beforeRouteLeave=o.beforeRouteUpdate=o.created}},En.version="3.0.6",O&&window.Vue&&window.Vue.use(En),t.a=En},function(n,t){var e;e=function(){return this}();try{e=e||new Function("return this")()}catch(n){"object"==typeof window&&(e=window)}n.exports=e},function(n,t,e){var i=e(32);"string"==typeof i&&(i=[[n.i,i,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};e(13)(i,o);i.locals&&(n.exports=i.locals)},function(n,t,e){var i=e(34);"string"==typeof i&&(i=[[n.i,i,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};e(13)(i,o);i.locals&&(n.exports=i.locals)},function(n,t,e){var i=e(36);"string"==typeof i&&(i=[[n.i,i,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};e(13)(i,o);i.locals&&(n.exports=i.locals)},function(n,t,e){"use strict";e.d(t,"a",function(){return r});var i=e(0),o=Object.prototype.hasOwnProperty;function r(n,t){return Object.keys(t).forEach(function(e){!function(n,t,e){var a=t[e];Object(i.d)(a)&&(o.call(n,e)&&Object(i.g)(a)?n[e]=r(Object(n[e]),t[e]):n[e]=a)}(n,t,e)}),n}},function(n,t,e){"use strict";t.a={name:"姓名",tel:"电话",save:"保存",confirm:"确认",cancel:"取消",delete:"删除",complete:"完成",loading:"加载中...",telEmpty:"请填写电话",nameEmpty:"请填写姓名",confirmDelete:"确定要删除么",telInvalid:"请填写正确的电话",vanContactCard:{addText:"添加联系人"},vanContactList:{addText:"新建联系人"},vanPagination:{prev:"上一页",next:"下一页"},vanPullRefresh:{pulling:"下拉即可刷新...",loosing:"释放即可刷新..."},vanSubmitBar:{label:"合计:"},vanCoupon:{valid:"有效期",unlimited:"无使用门槛",discount:function(n){return n+"折"},condition:function(n){return"满"+n+"元可用"}},vanCouponCell:{title:"优惠券",tips:"使用优惠",count:function(n){return n+"张可用"}},vanCouponList:{empty:"暂无优惠券",exchange:"兑换",close:"不使用优惠",enable:"可使用优惠券",disabled:"不可使用优惠券",placeholder:"请输入优惠码"},vanAddressEdit:{area:"地区",postal:"邮政编码",areaEmpty:"请选择地区",addressEmpty:"请填写详细地址",postalEmpty:"邮政编码格式不正确",defaultAddress:"设为默认收货地址",telPlaceholder:"收货人手机号",namePlaceholder:"收货人姓名",areaPlaceholder:"选择省 / 市 / 区"},vanAddressEditDetail:{label:"详细地址",placeholder:"街道门牌、楼层房间号等信息"},vanAddressList:{add:"新增地址"}}},function(n,t,e){"use strict";function i(n,t){var e=function e(){n.contentWindow.changePath?t():setTimeout(function(){e()},50)};"complete"===(n.contentDocument||n.contentWindow.document).readyState?e():n.onload=e}e.d(t,"b",function(){return r}),e.d(t,"a",function(){return i});var o=navigator.userAgent.toLowerCase(),r=/ios|iphone|ipod|ipad|android/.test(o)},function(n,t,e){ +/*! + * Vue-Lazyload.js v1.2.3 + * (c) 2018 Awe + * Released under the MIT License. + */ +n.exports=function(){"use strict";function n(n){n=n||{};var i=arguments.length,o=0;if(1===i)return n;for(;++o-1?n.splice(e,1):void 0}}function r(n,t){if("IMG"===n.tagName&&n.getAttribute("data-srcset")){var e=n.getAttribute("data-srcset"),i=[],o=n.parentNode,r=o.offsetWidth*t,a=void 0,s=void 0,c=void 0;(e=e.trim().split(",")).map(function(n){n=n.trim(),-1===(a=n.lastIndexOf(" "))?(s=n,c=999998):(s=n.substr(0,a),c=parseInt(n.substr(a+1,n.length-a-2),10)),i.push([c,s])}),i.sort(function(n,t){if(n[0]t[0])return 1;if(n[0]===t[0]){if(-1!==t[1].indexOf(".webp",t[1].length-5))return 1;if(-1!==n[1].indexOf(".webp",n[1].length-5))return-1}return 0});for(var l="",u=void 0,d=i.length,f=0;f=r){l=u[1];break}return l}}function a(n,t){for(var e=void 0,i=0,o=n.length;i0&&void 0!==arguments[0]?arguments[0]:1;return m&&window.devicePixelRatio||n},w=function(){if(m){var n=!1;try{var t=Object.defineProperty({},"passive",{get:function(){n=!0}});window.addEventListener("test",null,t)}catch(n){}return n}}(),_={on:function(n,t,e){var i=arguments.length>3&&void 0!==arguments[3]&&arguments[3];w?n.addEventListener(t,e,{capture:i,passive:!0}):n.addEventListener(t,e,i)},off:function(n,t,e){var i=arguments.length>3&&void 0!==arguments[3]&&arguments[3];n.removeEventListener(t,e,i)}},C=function(n,t,e){var i=new Image;i.src=n.src,i.onload=function(){t({naturalHeight:i.naturalHeight,naturalWidth:i.naturalWidth,src:i.src})},i.onerror=function(n){e(n)}},S=function(n,t){return"undefined"!=typeof getComputedStyle?getComputedStyle(n,null).getPropertyValue(t):n.style[t]},O=function(n){return S(n,"overflow")+S(n,"overflow-y")+S(n,"overflow-x")},$={},z=function(){function n(t){var e=t.el,i=t.src,o=t.error,r=t.loading,a=t.bindType,s=t.$parent,c=t.options,l=t.elRenderer;u(this,n),this.el=e,this.src=i,this.error=o,this.loading=r,this.bindType=a,this.attempt=0,this.naturalHeight=0,this.naturalWidth=0,this.options=c,this.rect=null,this.$parent=s,this.elRenderer=l,this.performanceData={init:Date.now(),loadStart:0,loadEnd:0},this.filter(),this.initState(),this.render("loading",!1)}return d(n,[{key:"initState",value:function(){this.el.dataset.src=this.src,this.state={error:!1,loaded:!1,rendered:!1}}},{key:"record",value:function(n){this.performanceData[n]=Date.now()}},{key:"update",value:function(n){var t=n.src,e=n.loading,i=n.error,o=this.src;this.src=t,this.loading=e,this.error=i,this.filter(),o!==this.src&&(this.attempt=0,this.initState())}},{key:"getRect",value:function(){this.rect=this.el.getBoundingClientRect()}},{key:"checkInView",value:function(){return this.getRect(),this.rect.topthis.options.preLoadTop&&this.rect.left0}},{key:"filter",value:function(){var n=this;(function(n){if(!(n instanceof Object))return[];if(Object.keys)return Object.keys(n);var t=[];for(var e in n)n.hasOwnProperty(e)&&t.push(e);return t})(this.options.filter).map(function(t){n.options.filter[t](n,n.options)})}},{key:"renderLoading",value:function(n){var t=this;C({src:this.loading},function(e){t.render("loading",!1),n()},function(){n(),t.options.silent||console.warn("VueLazyload log: load failed with loading image("+t.loading+")")})}},{key:"load",value:function(){var n=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:c;return this.attempt>this.options.attempt-1&&this.state.error?(this.options.silent||console.log("VueLazyload log: "+this.src+" tried too more than "+this.options.attempt+" times"),void t()):this.state.loaded||$[this.src]?(this.state.loaded=!0,t(),this.render("loaded",!0)):void this.renderLoading(function(){n.attempt++,n.record("loadStart"),C({src:n.src},function(e){n.naturalHeight=e.naturalHeight,n.naturalWidth=e.naturalWidth,n.state.loaded=!0,n.state.error=!1,n.record("loadEnd"),n.render("loaded",!1),$[n.src]=1,t()},function(t){!n.options.silent&&console.error(t),n.state.error=!0,n.state.loaded=!1,n.render("error",!1)})})}},{key:"render",value:function(n,t){this.elRenderer(this,n,t)}},{key:"performance",value:function(){var n="loading",t=0;return this.state.loaded&&(n="loaded",t=(this.performanceData.loadEnd-this.performanceData.loadStart)/1e3),this.state.error&&(n="error"),{src:this.src,state:n,time:t}}},{key:"destroy",value:function(){this.el=null,this.src=null,this.error=null,this.loading=null,this.bindType=null,this.attempt=0}}]),n}(),j="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",T=["scroll","wheel","mousewheel","resize","animationend","transitionend","touchmove"],A={rootMargin:"0px",threshold:0},F=function(n){return function(){function t(n){var e=n.preLoad,i=n.error,o=n.throttleWait,r=n.preLoadTop,a=n.dispatchEvent,c=n.loading,l=n.attempt,d=n.silent,f=void 0===d||d,h=n.scale,p=n.listenEvents,v=(n.hasbind,n.filter),b=n.adapter,m=n.observer,g=n.observerOptions;u(this,t),this.version="1.2.3",this.mode=y.event,this.ListenerQueue=[],this.TargetIndex=0,this.TargetQueue=[],this.options={silent:f,dispatchEvent:!!a,throttleWait:o||200,preLoad:e||1.3,preLoadTop:r||0,error:i||j,loading:c||j,attempt:l||3,scale:h||k(h),ListenEvents:p||T,hasbind:!1,supportWebp:s(),filter:v||{},adapter:b||{},observer:!!m,observerOptions:g||A},this._initEvent(),this.lazyLoadHandler=function(n,t){var e=null,i=0;return function(){if(!e){var o=Date.now()-i,r=this,a=arguments,s=function(){i=Date.now(),e=!1,n.apply(r,a)};o>=t?s():e=setTimeout(s,t)}}}(this._lazyLoadHandler.bind(this),this.options.throttleWait),this.setMode(this.options.observer?y.observer:y.event)}return d(t,[{key:"config",value:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};b(this.options,n)}},{key:"performance",value:function(){var n=[];return this.ListenerQueue.map(function(t){n.push(t.performance())}),n}},{key:"addLazyBox",value:function(n){this.ListenerQueue.push(n),m&&(this._addListenerTarget(window),this._observer&&this._observer.observe(n.el),n.$el&&n.$el.parentNode&&this._addListenerTarget(n.$el.parentNode))}},{key:"add",value:function(t,e,i){var o=this;if(function(n,t){for(var e=!1,i=0,o=n.length;i1&&void 0!==arguments[1]?arguments[1]:{},e=F(n),i=new e(t),o=new E({lazy:i}),r="2"===n.version.split(".")[0];n.prototype.$Lazyload=i,t.lazyComponent&&n.component("lazy-component",function(n){return{props:{tag:{type:String,default:"div"}},render:function(n){return!1===this.show?n(this.tag):n(this.tag,null,this.$slots.default)},data:function(){return{el:null,state:{loaded:!1},rect:{},show:!1}},mounted:function(){this.el=this.$el,n.addLazyBox(this),n.lazyLoadHandler()},beforeDestroy:function(){n.removeComponent(this)},methods:{getRect:function(){this.rect=this.$el.getBoundingClientRect()},checkInView:function(){return this.getRect(),m&&this.rect.top0&&this.rect.left0},load:function(){this.show=!0,this.state.loaded=!0,this.$emit("show",this)}}}}(i)),r?(n.directive("lazy",{bind:i.add.bind(i),update:i.update.bind(i),componentUpdated:i.lazyLoadHandler.bind(i),unbind:i.remove.bind(i)}),n.directive("lazy-container",{bind:o.bind.bind(o),update:o.update.bind(o),unbind:o.unbind.bind(o)})):(n.directive("lazy",{bind:i.lazyLoadHandler.bind(i),update:function(n,t){b(this.vm.$refs,this.vm.$els),i.add(this.el,{modifiers:this.modifiers||{},arg:this.arg,value:n,oldValue:t},{context:this.vm})},unbind:function(){i.remove(this.el)}}),n.directive("lazy-container",{update:function(n,t){o.update(this.el,{modifiers:this.modifiers||{},arg:this.arg,value:n,oldValue:t},{context:this.vm})},unbind:function(){o.unbind(this.el)}}))}}}()},function(n,t,e){"use strict";var i=e(3),o=e(11),r=e.n(o),a={props:{base:String,group:Object},data:function(){return{active:[]}}},s=(e(31),e(7)),c=Object(s.a)(a,function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("van-collapse",{staticClass:"mobile-nav",attrs:{border:!1},model:{value:n.active,callback:function(t){n.active=t},expression:"active"}},[e("van-collapse-item",{staticClass:"mobile-nav__item",attrs:{title:n.group.groupName,name:n.group.groupName}},[e("van-icon",{staticClass:"mobile-nav__icon",attrs:{slot:"right-icon",name:n.group.icon},slot:"right-icon"}),n._l(n.group.list,function(t,i){return[t.disabled?n._e():e("van-cell",{key:i,attrs:{to:"/"+n.base+t.path,title:t.title,"is-link":""}})]})],2)],1)},[],!1,null,null,null).exports,l=e(8),u={"en-US":{title:"Vant - Mobile UI Components built on Vue",messages:{name:"Name",tel:"Phone",save:"Save",confirm:"Confirm",cancel:"Cancel",delete:"Delete",complete:"Complete",loading:"Loading...",telEmpty:"Please fill in the tel",nameEmpty:"Please fill in the name",confirmDelete:"Are you sure you want to delete?",telInvalid:"Malformed phone number",vanContactCard:{addText:"Add contact info"},vanContactList:{addText:"Add new contact"},vanPagination:{prev:"Previous",next:"Next"},vanPullRefresh:{pulling:"Pull to refresh...",loosing:"Loose to refresh..."},vanSubmitBar:{label:"Total:"},vanCoupon:{valid:"Valid",unlimited:"Unlimited",discount:function(n){return 10*n+"% off"},condition:function(n){return"At least "+n}},vanCouponCell:{title:"Coupon",tips:"Select coupon",count:function(n){return"You have "+n+" coupons"}},vanCouponList:{empty:"No coupons",exchange:"Exchange",close:"Close",enable:"Available",disabled:"Unavailable",placeholder:"Coupon code"},vanAddressEdit:{area:"Area",postal:"Postal",areaEmpty:"Please select a receiving area",addressEmpty:"Address can not be empty",postalEmpty:"Wrong postal code",defaultAddress:"Set as the default address",telPlaceholder:"Phone",namePlaceholder:"Name",areaPlaceholder:"Area"},vanAddressEditDetail:{label:"Address",placeholder:"Address"},vanAddressList:{add:"Add new address"}}},"zh-CN":{title:"Vant - 轻量、可靠的移动端 Vue 组件库",messages:e(20).a}},d="";function f(n){d!==n&&(d=n,window.localStorage&&localStorage.setItem("VANT_LANGUAGE",n),l.a.use(n,u[n].messages),document.title=u[n].title)}f(function(){for(var n=Object.keys(u),t=location.hash,e=0;e1?o-1:0),a=1;a=0&&(n._idleTimeoutId=setTimeout(function(){n._onTimeout&&n._onTimeout()},t))},e(27),t.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==n&&n.setImmediate||this&&this.setImmediate,t.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==n&&n.clearImmediate||this&&this.clearImmediate}).call(this,e(15))},function(n,t,e){(function(n,t){!function(n,e){"use strict";if(!n.setImmediate){var i,o,r,a,s,c=1,l={},u=!1,d=n.document,f=Object.getPrototypeOf&&Object.getPrototypeOf(n);f=f&&f.setTimeout?f:n,"[object process]"==={}.toString.call(n.process)?i=function(n){t.nextTick(function(){p(n)})}:!function(){if(n.postMessage&&!n.importScripts){var t=!0,e=n.onmessage;return n.onmessage=function(){t=!1},n.postMessage("","*"),n.onmessage=e,t}}()?n.MessageChannel?((r=new MessageChannel).port1.onmessage=function(n){p(n.data)},i=function(n){r.port2.postMessage(n)}):d&&"onreadystatechange"in d.createElement("script")?(o=d.documentElement,i=function(n){var t=d.createElement("script");t.onreadystatechange=function(){p(n),t.onreadystatechange=null,o.removeChild(t),t=null},o.appendChild(t)}):i=function(n){setTimeout(p,0,n)}:(a="setImmediate$"+Math.random()+"$",s=function(t){t.source===n&&"string"==typeof t.data&&0===t.data.indexOf(a)&&p(+t.data.slice(a.length))},n.addEventListener?n.addEventListener("message",s,!1):n.attachEvent("onmessage",s),i=function(t){n.postMessage(a+t,"*")}),f.setImmediate=function(n){"function"!=typeof n&&(n=new Function(""+n));for(var t=new Array(arguments.length-1),e=0;e1)for(var e=1;e= 2.5.0"},devDependencies:{"@babel/core":"^7.4.3","@babel/plugin-syntax-dynamic-import":"^7.0.0","@babel/plugin-syntax-jsx":"^7.2.0","@babel/plugin-transform-object-assign":"^7.0.0","@babel/plugin-transform-runtime":"^7.4.3","@babel/polyfill":"^7.4.3","@babel/preset-env":"^7.4.3","@babel/preset-typescript":"^7.3.3","@types/jest":"^24.0.11","@vant/doc":"^1.0.25","@vant/eslint-config":"^1.1.2","@vant/markdown-loader":"^1.0.3","@vue/babel-preset-jsx":"^1.0.0-beta.3","@vue/server-test-utils":"^1.0.0-beta.29","@vue/test-utils":"^1.0.0-beta.29",autoprefixer:"^9.5.1","babel-jest":"^24.7.1","babel-loader":"^8.0.4",codecov:"^3.3.0","cross-env":"^5.2.0","css-loader":"^2.1.1","dependency-tree":"^7.0.2",eslint:"^5.16.0","fast-glob":"^2.2.4","gh-pages":"^2.0.1",gulp:"3.9.1","gulp-csso":"^3.0.1","gulp-less":"^4.0.1","gulp-postcss":"^8.0.0","html-webpack-plugin":"3.2.0",husky:"^1.2.1",jest:"^24.7.1","jest-serializer-vue":"^2.0.2",less:"^3.8.1","less-loader":"^4.1.0","lint-staged":"^8.1.5","markdown-vetur":"0.0.5",postcss:"^7.0.14","postcss-loader":"^3.0.0","progress-bar-webpack-plugin":"^1.12.1",rimraf:"^2.5.4",shelljs:"^0.8.3",signale:"^1.4.0","style-loader":"^0.23.1",stylelint:"^10.0.1","stylelint-config-standard":"^18.3.0","ts-jest":"^24.0.2",typescript:"^3.4.4",uppercamelcase:"^3.0.0","url-loader":"^1.1.2",vue:"2.6.10","vue-jest":"4.0.0-beta.1","vue-loader":"^15.7.0","vue-router":"^3.0.6","vue-server-renderer":"^2.6.10","vue-template-compiler":"2.6.10","vue-template-es2015-compiler":"^1.9.1",webpack:"^4.30.0","webpack-cli":"^3.3.2","webpack-dev-server":"^3.3.1"},vetur:{tags:"vetur/tags.json",attributes:"vetur/attributes.json"}}},function(n,t){n.exports=function(n){var t="undefined"!=typeof window&&window.location;if(!t)throw new Error("fixUrls requires window.location");if(!n||"string"!=typeof n)return n;var e=t.protocol+"//"+t.host,i=e+t.pathname.replace(/\/[^\/]*$/,"/");return n.replace(/url\s*\(((?:[^)(]|\((?:[^)(]+|\([^)(]*\))*\))*)\)/gi,function(n,t){var o,r=t.trim().replace(/^"(.*)"$/,function(n,t){return t}).replace(/^'(.*)'$/,function(n,t){return t});return/^(#|data:|http:\/\/|https:\/\/|file:\/\/\/|\s*$)/i.test(r)?n:(o=0===r.indexOf("//")?r:0===r.indexOf("/")?e+r:i+r.replace(/^\.\//,""),"url("+JSON.stringify(o)+")")})}},function(n,t,e){"use strict";var i=e(16);e.n(i).a},function(n,t,e){(n.exports=e(12)(!1)).push([n.i,".mobile-nav__item {\n margin-bottom: 16px;\n}\n.mobile-nav__icon {\n font-size: 24px;\n}\n.mobile-nav__icon img {\n width: 100%;\n}\n.mobile-nav .van-collapse-item__content {\n padding: 0;\n}\n.mobile-nav .van-collapse-item__title {\n font-size: 16px;\n font-weight: 500;\n line-height: 40px;\n -webkit-box-align: center;\n -webkit-align-items: center;\n align-items: center;\n border-radius: 2px;\n}\n",""])},function(n,t,e){"use strict";var i=e(17);e.n(i).a},function(n,t,e){(n.exports=e(12)(!1)).push([n.i,".side-nav {\n width: 100%;\n box-sizing: border-box;\n padding: 64px 20px 20px;\n}\n.side-nav .vant-title,\n.side-nav .vant-desc {\n font-weight: normal;\n -webkit-user-select: none;\n user-select: none;\n padding-left: 15px;\n}\n.side-nav .vant-title {\n margin: 0 0 15px;\n}\n.side-nav .vant-title img,\n.side-nav .vant-title span {\n display: inline-block;\n vertical-align: middle;\n}\n.side-nav .vant-title img {\n width: 36px;\n}\n.side-nav .vant-title span {\n font-size: 36px;\n font-weight: 500;\n margin-left: 15px;\n}\n.side-nav .vant-desc {\n font-size: 14px;\n color: #7d7e80;\n margin: 0 0 40px;\n}\n.mobile-switch-lang {\n position: absolute;\n top: 24px;\n right: 24px;\n color: #1989fa;\n font-size: 12px;\n cursor: pointer;\n overflow: hidden;\n}\n.mobile-switch-lang span {\n color: #969799;\n width: 48px;\n line-height: 22px;\n text-align: center;\n display: inline-block;\n border: 1px solid #dcdee0;\n background-color: #f7f8fa;\n}\n.mobile-switch-lang span:first-child {\n border-right: none;\n border-radius: 3px 0 0 3px;\n}\n.mobile-switch-lang span:last-child {\n border-left: none;\n border-radius: 0 3px 3px 0;\n}\n.mobile-switch-lang span.active {\n color: #fff;\n border-color: #1989fa;\n background-color: #1989fa;\n}\n",""])},function(n,t,e){"use strict";var i=e(18);e.n(i).a},function(n,t,e){(n.exports=e(12)(!1)).push([n.i,".van-doc-demo-pages__gallery {\n margin-top: 30px;\n}\n.van-doc-demo-pages__item {\n width: 28%;\n text-align: center;\n margin-bottom: 40px;\n display: inline-block;\n}\n.van-doc-demo-pages__item:nth-child(3n+1),\n.van-doc-demo-pages__item:nth-child(3n+2) {\n margin-right: 4%;\n}\n.van-doc-demo-pages__item h4 {\n font-size: 14px;\n line-height: 20px;\n font-weight: normal;\n}\n.van-doc-demo-pages__item img {\n width: 100%;\n cursor: pointer;\n border-radius: 3px;\n background-color: #f8f8f8;\n box-shadow: 0 2px 3px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1);\n}\n.van-doc-demo-pages__item a {\n font-size: 12px;\n margin: 4px 0 7px;\n display: inline-block;\n}\n.van-doc-demo-pages__item--active img {\n box-shadow: 0 1px 4px rgba(51, 136, 255, 0.4), 0 0 0 1px rgba(51, 136, 255, 0.4);\n}\n",""])},,,function(n,t,e){var i=e(40);"string"==typeof i&&(i=[[n.i,i,""]]);var o={hmr:!0,transform:void 0,insertInto:void 0};e(13)(i,o);i.locals&&(n.exports=i.locals)},function(n,t,e){(n.exports=e(12)(!1)).push([n.i,'/**\n * Entry of all component\'s style\n */\n/* base */\n/**\n * Entry of basic styles\n */\n/**\n * 基本样式入口\n */\nhtml {\n -webkit-tap-highlight-color: transparent;\n}\nbody {\n margin: 0;\n}\na {\n text-decoration: none;\n}\na:focus,\ninput:focus,\nbutton:focus,\ntextarea:focus {\n outline: none;\n}\nol,\nul {\n margin: 0;\n padding: 0;\n list-style: none;\n}\ninput,\nbutton,\ntextarea {\n font: inherit;\n color: inherit;\n}\n.van-ellipsis {\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.van-clearfix::after {\n content: \'\';\n display: table;\n clear: both;\n}\n[class*=\'van-hairline\'] {\n position: relative;\n}\n[class*=\'van-hairline\']::after {\n content: \' \';\n position: absolute;\n pointer-events: none;\n box-sizing: border-box;\n top: -50%;\n left: -50%;\n right: -50%;\n bottom: -50%;\n -webkit-transform: scale(0.5);\n transform: scale(0.5);\n border: 0 solid #ebedf0;\n}\n.van-hairline--top::after {\n border-top-width: 1px;\n}\n.van-hairline--left::after {\n border-left-width: 1px;\n}\n.van-hairline--right::after {\n border-right-width: 1px;\n}\n.van-hairline--bottom::after {\n border-bottom-width: 1px;\n}\n.van-hairline--top-bottom::after {\n border-width: 1px 0;\n}\n.van-hairline--surround::after {\n border-width: 1px;\n}\n@-webkit-keyframes van-slide-up-enter {\n from {\n -webkit-transform: translate3d(0, 100%, 0);\n transform: translate3d(0, 100%, 0);\n }\n}\n@keyframes van-slide-up-enter {\n from {\n -webkit-transform: translate3d(0, 100%, 0);\n transform: translate3d(0, 100%, 0);\n }\n}\n@-webkit-keyframes van-slide-up-leave {\n to {\n -webkit-transform: translate3d(0, 100%, 0);\n transform: translate3d(0, 100%, 0);\n }\n}\n@keyframes van-slide-up-leave {\n to {\n -webkit-transform: translate3d(0, 100%, 0);\n transform: translate3d(0, 100%, 0);\n }\n}\n@-webkit-keyframes van-slide-down-enter {\n from {\n -webkit-transform: translate3d(0, -100%, 0);\n transform: translate3d(0, -100%, 0);\n }\n}\n@keyframes van-slide-down-enter {\n from {\n -webkit-transform: translate3d(0, -100%, 0);\n transform: translate3d(0, -100%, 0);\n }\n}\n@-webkit-keyframes van-slide-down-leave {\n to {\n -webkit-transform: translate3d(0, -100%, 0);\n transform: translate3d(0, -100%, 0);\n }\n}\n@keyframes van-slide-down-leave {\n to {\n -webkit-transform: translate3d(0, -100%, 0);\n transform: translate3d(0, -100%, 0);\n }\n}\n@-webkit-keyframes van-slide-left-enter {\n from {\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n }\n}\n@keyframes van-slide-left-enter {\n from {\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n }\n}\n@-webkit-keyframes van-slide-left-leave {\n to {\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n }\n}\n@keyframes van-slide-left-leave {\n to {\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n }\n}\n@-webkit-keyframes van-slide-right-enter {\n from {\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n }\n}\n@keyframes van-slide-right-enter {\n from {\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n }\n}\n@-webkit-keyframes van-slide-right-leave {\n to {\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n }\n}\n@keyframes van-slide-right-leave {\n to {\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n }\n}\n@-webkit-keyframes van-fade-in {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n@keyframes van-fade-in {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n@-webkit-keyframes van-fade-out {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n@keyframes van-fade-out {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n@-webkit-keyframes van-rotate {\n from {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n to {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n@keyframes van-rotate {\n from {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n to {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n.van-fade-enter-active {\n -webkit-animation: 0.3s van-fade-in;\n animation: 0.3s van-fade-in;\n}\n.van-fade-leave-active {\n -webkit-animation: 0.3s van-fade-out;\n animation: 0.3s van-fade-out;\n}\n.van-slide-up-enter-active {\n -webkit-animation: van-slide-up-enter 0.3s both ease;\n animation: van-slide-up-enter 0.3s both ease;\n}\n.van-slide-up-leave-active {\n -webkit-animation: van-slide-up-leave 0.3s both ease;\n animation: van-slide-up-leave 0.3s both ease;\n}\n.van-slide-down-enter-active {\n -webkit-animation: van-slide-down-enter 0.3s both ease;\n animation: van-slide-down-enter 0.3s both ease;\n}\n.van-slide-down-leave-active {\n -webkit-animation: van-slide-down-leave 0.3s both ease;\n animation: van-slide-down-leave 0.3s both ease;\n}\n.van-slide-left-enter-active {\n -webkit-animation: van-slide-left-enter 0.3s both ease;\n animation: van-slide-left-enter 0.3s both ease;\n}\n.van-slide-left-leave-active {\n -webkit-animation: van-slide-left-leave 0.3s both ease;\n animation: van-slide-left-leave 0.3s both ease;\n}\n.van-slide-right-enter-active {\n -webkit-animation: van-slide-right-enter 0.3s both ease;\n animation: van-slide-right-enter 0.3s both ease;\n}\n.van-slide-right-leave-active {\n -webkit-animation: van-slide-right-leave 0.3s both ease;\n animation: van-slide-right-leave 0.3s both ease;\n}\n.van-info {\n position: absolute;\n right: 0;\n top: -8px;\n color: #fff;\n font-size: 12px;\n font-weight: 500;\n font-family: PingFang SC, Helvetica Neue, Arial, sans-serif;\n text-align: center;\n box-sizing: border-box;\n padding: 0 3px;\n min-width: 16px;\n line-height: 14px;\n border: 1px solid #fff;\n border-radius: 16px;\n background-color: #f44;\n -webkit-transform: translateX(50%);\n transform: translateX(50%);\n -webkit-transform-origin: 100%;\n transform-origin: 100%;\n}\n@font-face {\n font-style: normal;\n font-weight: normal;\n font-family: \'vant-icon\';\n src: url(\'https://img.yzcdn.cn/vant/vant-icon-839a51.woff2\') format(\'woff2\'), url(\'https://img.yzcdn.cn/vant/vant-icon-839a51.woff\') format(\'woff\'), url(\'https://img.yzcdn.cn/vant/vant-icon-839a51.ttf\') format(\'truetype\');\n}\n.van-icon {\n position: relative;\n display: inline-block;\n font: normal normal normal 14px/1 "vant-icon";\n font-size: inherit;\n text-rendering: auto;\n -webkit-font-smoothing: antialiased;\n}\n.van-icon::before {\n display: inline-block;\n}\n.van-icon-add-o:before {\n content: "\\F000";\n}\n.van-icon-add-square:before {\n content: "\\F001";\n}\n.van-icon-add:before {\n content: "\\F002";\n}\n.van-icon-after-sale:before {\n content: "\\F003";\n}\n.van-icon-aim:before {\n content: "\\F004";\n}\n.van-icon-alipay:before {\n content: "\\F005";\n}\n.van-icon-apps-o:before {\n content: "\\F006";\n}\n.van-icon-arrow-down:before {\n content: "\\F007";\n}\n.van-icon-arrow-left:before {\n content: "\\F008";\n}\n.van-icon-arrow-up:before {\n content: "\\F009";\n}\n.van-icon-arrow:before {\n content: "\\F00A";\n}\n.van-icon-ascending:before {\n content: "\\F00B";\n}\n.van-icon-audio:before {\n content: "\\F00C";\n}\n.van-icon-award-o:before {\n content: "\\F00D";\n}\n.van-icon-award:before {\n content: "\\F00E";\n}\n.van-icon-bag-o:before {\n content: "\\F00F";\n}\n.van-icon-bag:before {\n content: "\\F010";\n}\n.van-icon-balance-list-o:before {\n content: "\\F011";\n}\n.van-icon-balance-list:before {\n content: "\\F012";\n}\n.van-icon-balance-o:before {\n content: "\\F013";\n}\n.van-icon-balance-pay:before {\n content: "\\F014";\n}\n.van-icon-bar-chart-o:before {\n content: "\\F015";\n}\n.van-icon-bars:before {\n content: "\\F016";\n}\n.van-icon-bell:before {\n content: "\\F017";\n}\n.van-icon-bill-o:before {\n content: "\\F018";\n}\n.van-icon-bill:before {\n content: "\\F019";\n}\n.van-icon-birthday-cake-o:before {\n content: "\\F01A";\n}\n.van-icon-bookmark-o:before {\n content: "\\F01B";\n}\n.van-icon-bookmark:before {\n content: "\\F01C";\n}\n.van-icon-browsing-history-o:before {\n content: "\\F01D";\n}\n.van-icon-browsing-history:before {\n content: "\\F01E";\n}\n.van-icon-brush-o:before {\n content: "\\F01F";\n}\n.van-icon-bulb-o:before {\n content: "\\F020";\n}\n.van-icon-bullhorn-o:before {\n content: "\\F021";\n}\n.van-icon-calender-o:before {\n content: "\\F022";\n}\n.van-icon-card:before {\n content: "\\F023";\n}\n.van-icon-cart-circle-o:before {\n content: "\\F024";\n}\n.van-icon-cart-circle:before {\n content: "\\F025";\n}\n.van-icon-cart-o:before {\n content: "\\F026";\n}\n.van-icon-cart:before {\n content: "\\F027";\n}\n.van-icon-cash-back-record:before {\n content: "\\F028";\n}\n.van-icon-cash-on-deliver:before {\n content: "\\F029";\n}\n.van-icon-cashier-o:before {\n content: "\\F02A";\n}\n.van-icon-certificate:before {\n content: "\\F02B";\n}\n.van-icon-chart-trending-o:before {\n content: "\\F02C";\n}\n.van-icon-chat-o:before {\n content: "\\F02D";\n}\n.van-icon-chat:before {\n content: "\\F02E";\n}\n.van-icon-checked:before {\n content: "\\F02F";\n}\n.van-icon-circle:before {\n content: "\\F030";\n}\n.van-icon-clear:before {\n content: "\\F031";\n}\n.van-icon-clock-o:before {\n content: "\\F032";\n}\n.van-icon-clock:before {\n content: "\\F033";\n}\n.van-icon-close:before {\n content: "\\F034";\n}\n.van-icon-closed-eye:before {\n content: "\\F035";\n}\n.van-icon-cluster-o:before {\n content: "\\F036";\n}\n.van-icon-cluster:before {\n content: "\\F037";\n}\n.van-icon-column:before {\n content: "\\F038";\n}\n.van-icon-comment-circle-o:before {\n content: "\\F039";\n}\n.van-icon-comment-o:before {\n content: "\\F03A";\n}\n.van-icon-comment:before {\n content: "\\F03B";\n}\n.van-icon-completed:before {\n content: "\\F03C";\n}\n.van-icon-contact:before {\n content: "\\F03D";\n}\n.van-icon-coupon-o:before {\n content: "\\F03E";\n}\n.van-icon-coupon:before {\n content: "\\F03F";\n}\n.van-icon-credit-pay:before {\n content: "\\F040";\n}\n.van-icon-cross:before {\n content: "\\F041";\n}\n.van-icon-debit-pay:before {\n content: "\\F042";\n}\n.van-icon-delete:before {\n content: "\\F043";\n}\n.van-icon-descending:before {\n content: "\\F044";\n}\n.van-icon-description:before {\n content: "\\F045";\n}\n.van-icon-desktop-o:before {\n content: "\\F046";\n}\n.van-icon-diamond-o:before {\n content: "\\F047";\n}\n.van-icon-diamond:before {\n content: "\\F048";\n}\n.van-icon-discount:before {\n content: "\\F049";\n}\n.van-icon-ecard-pay:before {\n content: "\\F04A";\n}\n.van-icon-edit:before {\n content: "\\F04B";\n}\n.van-icon-ellipsis:before {\n content: "\\F04C";\n}\n.van-icon-empty:before {\n content: "\\F04D";\n}\n.van-icon-envelop-o:before {\n content: "\\F04E";\n}\n.van-icon-exchange:before {\n content: "\\F04F";\n}\n.van-icon-expand-o:before {\n content: "\\F050";\n}\n.van-icon-expand:before {\n content: "\\F051";\n}\n.van-icon-eye-o:before {\n content: "\\F052";\n}\n.van-icon-eye:before {\n content: "\\F053";\n}\n.van-icon-fail:before {\n content: "\\F054";\n}\n.van-icon-failure:before {\n content: "\\F055";\n}\n.van-icon-filter-o:before {\n content: "\\F056";\n}\n.van-icon-fire-o:before {\n content: "\\F057";\n}\n.van-icon-fire:before {\n content: "\\F058";\n}\n.van-icon-flag-o:before {\n content: "\\F059";\n}\n.van-icon-flower-o:before {\n content: "\\F05A";\n}\n.van-icon-free-postage:before {\n content: "\\F05B";\n}\n.van-icon-friends-o:before {\n content: "\\F05C";\n}\n.van-icon-friends:before {\n content: "\\F05D";\n}\n.van-icon-gem-o:before {\n content: "\\F05E";\n}\n.van-icon-gem:before {\n content: "\\F05F";\n}\n.van-icon-gift-card-o:before {\n content: "\\F060";\n}\n.van-icon-gift-card:before {\n content: "\\F061";\n}\n.van-icon-gift-o:before {\n content: "\\F062";\n}\n.van-icon-gift:before {\n content: "\\F063";\n}\n.van-icon-gold-coin-o:before {\n content: "\\F064";\n}\n.van-icon-gold-coin:before {\n content: "\\F065";\n}\n.van-icon-goods-collect-o:before {\n content: "\\F066";\n}\n.van-icon-goods-collect:before {\n content: "\\F067";\n}\n.van-icon-graphic:before {\n content: "\\F068";\n}\n.van-icon-home-o:before {\n content: "\\F069";\n}\n.van-icon-hot-o:before {\n content: "\\F06A";\n}\n.van-icon-hot-sale-o:before {\n content: "\\F06B";\n}\n.van-icon-hot-sale:before {\n content: "\\F06C";\n}\n.van-icon-hot:before {\n content: "\\F06D";\n}\n.van-icon-hotel-o:before {\n content: "\\F06E";\n}\n.van-icon-idcard:before {\n content: "\\F06F";\n}\n.van-icon-info-o:before {\n content: "\\F070";\n}\n.van-icon-info:before {\n content: "\\F071";\n}\n.van-icon-invition:before {\n content: "\\F072";\n}\n.van-icon-label-o:before {\n content: "\\F073";\n}\n.van-icon-label:before {\n content: "\\F074";\n}\n.van-icon-like-o:before {\n content: "\\F075";\n}\n.van-icon-like:before {\n content: "\\F076";\n}\n.van-icon-live:before {\n content: "\\F077";\n}\n.van-icon-location-o:before {\n content: "\\F078";\n}\n.van-icon-location:before {\n content: "\\F079";\n}\n.van-icon-lock:before {\n content: "\\F07A";\n}\n.van-icon-logistics:before {\n content: "\\F07B";\n}\n.van-icon-manager-o:before {\n content: "\\F07C";\n}\n.van-icon-manager:before {\n content: "\\F07D";\n}\n.van-icon-map-marked:before {\n content: "\\F07E";\n}\n.van-icon-medel-o:before {\n content: "\\F07F";\n}\n.van-icon-medel:before {\n content: "\\F080";\n}\n.van-icon-more-o:before {\n content: "\\F081";\n}\n.van-icon-more:before {\n content: "\\F082";\n}\n.van-icon-music-o:before {\n content: "\\F083";\n}\n.van-icon-new-arrival-o:before {\n content: "\\F084";\n}\n.van-icon-new-arrival:before {\n content: "\\F085";\n}\n.van-icon-new-o:before {\n content: "\\F086";\n}\n.van-icon-new:before {\n content: "\\F087";\n}\n.van-icon-newspaper-o:before {\n content: "\\F088";\n}\n.van-icon-notes-o:before {\n content: "\\F089";\n}\n.van-icon-orders-o:before {\n content: "\\F08A";\n}\n.van-icon-other-pay:before {\n content: "\\F08B";\n}\n.van-icon-paid:before {\n content: "\\F08C";\n}\n.van-icon-passed:before {\n content: "\\F08D";\n}\n.van-icon-pause-circle-o:before {\n content: "\\F08E";\n}\n.van-icon-pause-circle:before {\n content: "\\F08F";\n}\n.van-icon-pause:before {\n content: "\\F090";\n}\n.van-icon-peer-pay:before {\n content: "\\F091";\n}\n.van-icon-pending-payment:before {\n content: "\\F092";\n}\n.van-icon-phone-circle-o:before {\n content: "\\F093";\n}\n.van-icon-phone-o:before {\n content: "\\F094";\n}\n.van-icon-phone:before {\n content: "\\F095";\n}\n.van-icon-photo-o:before {\n content: "\\F096";\n}\n.van-icon-photo:before {\n content: "\\F097";\n}\n.van-icon-photograph:before {\n content: "\\F098";\n}\n.van-icon-play-circle-o:before {\n content: "\\F099";\n}\n.van-icon-play-circle:before {\n content: "\\F09A";\n}\n.van-icon-play:before {\n content: "\\F09B";\n}\n.van-icon-plus:before {\n content: "\\F09C";\n}\n.van-icon-point-gift-o:before {\n content: "\\F09D";\n}\n.van-icon-point-gift:before {\n content: "\\F09E";\n}\n.van-icon-points:before {\n content: "\\F09F";\n}\n.van-icon-printer:before {\n content: "\\F0A0";\n}\n.van-icon-qr-invalid:before {\n content: "\\F0A1";\n}\n.van-icon-qr:before {\n content: "\\F0A2";\n}\n.van-icon-question-o:before {\n content: "\\F0A3";\n}\n.van-icon-question:before {\n content: "\\F0A4";\n}\n.van-icon-records:before {\n content: "\\F0A5";\n}\n.van-icon-refund-o:before {\n content: "\\F0A6";\n}\n.van-icon-replay:before {\n content: "\\F0A7";\n}\n.van-icon-scan:before {\n content: "\\F0A8";\n}\n.van-icon-search:before {\n content: "\\F0A9";\n}\n.van-icon-send-gift-o:before {\n content: "\\F0AA";\n}\n.van-icon-send-gift:before {\n content: "\\F0AB";\n}\n.van-icon-service-o:before {\n content: "\\F0AC";\n}\n.van-icon-service:before {\n content: "\\F0AD";\n}\n.van-icon-setting-o:before {\n content: "\\F0AE";\n}\n.van-icon-setting:before {\n content: "\\F0AF";\n}\n.van-icon-share:before {\n content: "\\F0B0";\n}\n.van-icon-shop-collect-o:before {\n content: "\\F0B1";\n}\n.van-icon-shop-collect:before {\n content: "\\F0B2";\n}\n.van-icon-shop-o:before {\n content: "\\F0B3";\n}\n.van-icon-shop:before {\n content: "\\F0B4";\n}\n.van-icon-shopping-cart-o:before {\n content: "\\F0B5";\n}\n.van-icon-shopping-cart:before {\n content: "\\F0B6";\n}\n.van-icon-shrink:before {\n content: "\\F0B7";\n}\n.van-icon-sign:before {\n content: "\\F0B8";\n}\n.van-icon-smile-comment-o:before {\n content: "\\F0B9";\n}\n.van-icon-smile-comment:before {\n content: "\\F0BA";\n}\n.van-icon-smile-o:before {\n content: "\\F0BB";\n}\n.van-icon-star-o:before {\n content: "\\F0BC";\n}\n.van-icon-star:before {\n content: "\\F0BD";\n}\n.van-icon-stop-circle-o:before {\n content: "\\F0BE";\n}\n.van-icon-stop-circle:before {\n content: "\\F0BF";\n}\n.van-icon-stop:before {\n content: "\\F0C0";\n}\n.van-icon-success:before {\n content: "\\F0C1";\n}\n.van-icon-thumb-circle-o:before {\n content: "\\F0C2";\n}\n.van-icon-todo-list-o:before {\n content: "\\F0C3";\n}\n.van-icon-todo-list:before {\n content: "\\F0C4";\n}\n.van-icon-tosend:before {\n content: "\\F0C5";\n}\n.van-icon-tv-o:before {\n content: "\\F0C6";\n}\n.van-icon-umbrella-circle:before {\n content: "\\F0C7";\n}\n.van-icon-underway-o:before {\n content: "\\F0C8";\n}\n.van-icon-underway:before {\n content: "\\F0C9";\n}\n.van-icon-upgrade:before {\n content: "\\F0CA";\n}\n.van-icon-user-circle-o:before {\n content: "\\F0CB";\n}\n.van-icon-user-o:before {\n content: "\\F0CC";\n}\n.van-icon-video-o:before {\n content: "\\F0CD";\n}\n.van-icon-video:before {\n content: "\\F0CE";\n}\n.van-icon-vip-card-o:before {\n content: "\\F0CF";\n}\n.van-icon-vip-card:before {\n content: "\\F0D0";\n}\n.van-icon-volume-o:before {\n content: "\\F0D1";\n}\n.van-icon-volume:before {\n content: "\\F0D2";\n}\n.van-icon-wap-home:before {\n content: "\\F0D3";\n}\n.van-icon-wap-nav:before {\n content: "\\F0D4";\n}\n.van-icon-warn-o:before {\n content: "\\F0D5";\n}\n.van-icon-warning-o:before {\n content: "\\F0D6";\n}\n.van-icon-weapp-nav:before {\n content: "\\F0D7";\n}\n.van-icon-wechat:before {\n content: "\\F0D8";\n}\n.van-icon-youzan-shield:before {\n content: "\\F0D9";\n}\n.van-icon--image {\n width: 1em;\n height: 1em;\n}\n.van-icon--image img {\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n margin: auto;\n max-width: 100%;\n max-height: 100%;\n position: absolute;\n}\n.van-loading {\n width: 30px;\n height: 30px;\n z-index: 0;\n font-size: 0;\n line-height: 0;\n position: relative;\n vertical-align: middle;\n}\n.van-loading--circle {\n width: 16px;\n height: 16px;\n}\n.van-loading__spinner {\n z-index: -1;\n width: 100%;\n height: 100%;\n position: relative;\n display: inline-block;\n box-sizing: border-box;\n -webkit-animation: van-rotate 0.8s linear infinite;\n animation: van-rotate 0.8s linear infinite;\n}\n.van-loading__spinner--circle {\n border-radius: 100%;\n border: 3px solid transparent;\n border-color: #c8c9cc;\n border-top-color: #7d7e80;\n}\n.van-loading__spinner--gradient-circle {\n background-size: contain;\n background-image: url(\'https://img.yzcdn.cn/vant/gradient-circle-black.png\');\n}\n.van-loading__spinner--spinner {\n -webkit-animation-timing-function: steps(12);\n animation-timing-function: steps(12);\n}\n.van-loading__spinner--spinner i {\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n position: absolute;\n}\n.van-loading__spinner--spinner i::before {\n width: 2px;\n height: 25%;\n content: \' \';\n display: block;\n margin: 0 auto;\n border-radius: 40%;\n background-color: currentColor;\n}\n.van-loading__spinner--circular {\n -webkit-animation-duration: 2s;\n animation-duration: 2s;\n}\n.van-loading__circular {\n width: 100%;\n height: 100%;\n}\n.van-loading__circular circle {\n stroke: currentColor;\n stroke-width: 3;\n stroke-linecap: round;\n -webkit-animation: van-circular 1.5s ease-in-out infinite;\n animation: van-circular 1.5s ease-in-out infinite;\n}\n.van-loading--white .van-loading__spinner--circle {\n border-color: rgba(0, 0, 0, 0.1);\n border-top-color: rgba(255, 255, 255, 0.7);\n}\n.van-loading--white .van-loading__spinner--gradient-circle {\n background-image: url(\'https://img.yzcdn.cn/vant/gradient-circle-white.png\');\n}\n@-webkit-keyframes van-circular {\n 0% {\n stroke-dasharray: 1, 200;\n stroke-dashoffset: 0;\n }\n 50% {\n stroke-dasharray: 90, 150;\n stroke-dashoffset: -40;\n }\n 100% {\n stroke-dasharray: 90, 150;\n stroke-dashoffset: -120;\n }\n}\n@keyframes van-circular {\n 0% {\n stroke-dasharray: 1, 200;\n stroke-dashoffset: 0;\n }\n 50% {\n stroke-dasharray: 90, 150;\n stroke-dashoffset: -40;\n }\n 100% {\n stroke-dasharray: 90, 150;\n stroke-dashoffset: -120;\n }\n}\n.van-loading__spinner--spinner i:nth-of-type(1) {\n opacity: 1;\n -webkit-transform: rotate(30deg);\n transform: rotate(30deg);\n}\n.van-loading__spinner--spinner i:nth-of-type(2) {\n opacity: 0.9375;\n -webkit-transform: rotate(60deg);\n transform: rotate(60deg);\n}\n.van-loading__spinner--spinner i:nth-of-type(3) {\n opacity: 0.875;\n -webkit-transform: rotate(90deg);\n transform: rotate(90deg);\n}\n.van-loading__spinner--spinner i:nth-of-type(4) {\n opacity: 0.8125;\n -webkit-transform: rotate(120deg);\n transform: rotate(120deg);\n}\n.van-loading__spinner--spinner i:nth-of-type(5) {\n opacity: 0.75;\n -webkit-transform: rotate(150deg);\n transform: rotate(150deg);\n}\n.van-loading__spinner--spinner i:nth-of-type(6) {\n opacity: 0.6875;\n -webkit-transform: rotate(180deg);\n transform: rotate(180deg);\n}\n.van-loading__spinner--spinner i:nth-of-type(7) {\n opacity: 0.625;\n -webkit-transform: rotate(210deg);\n transform: rotate(210deg);\n}\n.van-loading__spinner--spinner i:nth-of-type(8) {\n opacity: 0.5625;\n -webkit-transform: rotate(240deg);\n transform: rotate(240deg);\n}\n.van-loading__spinner--spinner i:nth-of-type(9) {\n opacity: 0.5;\n -webkit-transform: rotate(270deg);\n transform: rotate(270deg);\n}\n.van-loading__spinner--spinner i:nth-of-type(10) {\n opacity: 0.4375;\n -webkit-transform: rotate(300deg);\n transform: rotate(300deg);\n}\n.van-loading__spinner--spinner i:nth-of-type(11) {\n opacity: 0.375;\n -webkit-transform: rotate(330deg);\n transform: rotate(330deg);\n}\n.van-loading__spinner--spinner i:nth-of-type(12) {\n opacity: 0.3125;\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n}\n.van-button {\n display: inline-block;\n position: relative;\n padding: 0;\n height: 44px;\n line-height: 42px;\n font-size: 16px;\n border-radius: 2px;\n text-align: center;\n box-sizing: border-box;\n -webkit-appearance: none;\n -webkit-text-size-adjust: 100%;\n}\n.van-button::before {\n content: " ";\n position: absolute;\n top: 50%;\n left: 50%;\n opacity: 0;\n width: 100%;\n height: 100%;\n border: inherit;\n border-color: #000;\n background-color: #000;\n border-radius: inherit;\n /* inherit parent\'s border radius */\n -webkit-transform: translate(-50%, -50%);\n transform: translate(-50%, -50%);\n}\n.van-button:active::before {\n opacity: 0.1;\n}\n.van-button--loading::before,\n.van-button--disabled::before {\n display: none;\n}\n.van-button--default {\n color: #323233;\n background-color: #fff;\n border: 1px solid #ebedf0;\n}\n.van-button--primary {\n color: #fff;\n background-color: #07c160;\n border: 1px solid #07c160;\n}\n.van-button--info {\n color: #fff;\n background-color: #1989fa;\n border: 1px solid #1989fa;\n}\n.van-button--danger {\n color: #fff;\n background-color: #f44;\n border: 1px solid #f44;\n}\n.van-button--warning {\n color: #fff;\n background-color: #ff976a;\n border: 1px solid #ff976a;\n}\n.van-button--plain {\n background-color: #fff;\n}\n.van-button--plain.van-button--primary {\n color: #07c160;\n}\n.van-button--plain.van-button--info {\n color: #1989fa;\n}\n.van-button--plain.van-button--danger {\n color: #f44;\n}\n.van-button--plain.van-button--warning {\n color: #ff976a;\n}\n.van-button--large {\n width: 100%;\n height: 50px;\n line-height: 48px;\n}\n.van-button--normal {\n padding: 0 15px;\n font-size: 14px;\n}\n.van-button--small {\n padding: 0 8px;\n height: 30px;\n min-width: 60px;\n font-size: 12px;\n line-height: 28px;\n}\n.van-button--loading .van-loading {\n display: inline-block;\n}\n.van-button--mini {\n display: inline-block;\n height: 22px;\n min-width: 50px;\n font-size: 10px;\n line-height: 20px;\n}\n.van-button--mini + .van-button--mini {\n margin-left: 5px;\n}\n.van-button--block {\n width: 100%;\n display: block;\n}\n.van-button--bottom-action {\n border: 0;\n width: 100%;\n height: 50px;\n font-size: 16px;\n line-height: 50px;\n border-radius: 0;\n color: #fff;\n background-color: #ff976a;\n}\n.van-button--bottom-action.van-button--primary {\n background-color: #f44;\n}\n.van-button--disabled {\n opacity: 0.5;\n}\n.van-button--round {\n border-radius: 10em;\n}\n.van-button--square {\n border-radius: 0;\n}\n.van-button__loading-text {\n margin-left: 5px;\n display: inline-block;\n vertical-align: middle;\n}\n.van-button--hairline {\n border-width: 0;\n}\n.van-button--hairline::after {\n border-color: inherit;\n border-radius: 4px;\n}\n.van-button--hairline.van-button--round::after {\n border-radius: 10em;\n}\n.van-button--hairline.van-button--square::after {\n border-radius: 0;\n}\n.van-cell {\n position: relative;\n display: -webkit-box;\n display: -webkit-flex;\n display: flex;\n width: 100%;\n overflow: hidden;\n box-sizing: border-box;\n color: #323233;\n font-size: 14px;\n line-height: 24px;\n background-color: #fff;\n padding: 10px 15px;\n}\n.van-cell:not(:last-child)::after {\n content: \' \';\n position: absolute;\n pointer-events: none;\n box-sizing: border-box;\n left: 15px;\n right: 0;\n bottom: 0;\n -webkit-transform: scaleY(0.5);\n transform: scaleY(0.5);\n border-bottom: 1px solid #ebedf0;\n}\n.van-cell--borderless::after {\n display: none;\n}\n.van-cell__label {\n color: #969799;\n font-size: 12px;\n margin-top: 3px;\n line-height: 18px;\n}\n.van-cell__title,\n.van-cell__value {\n -webkit-box-flex: 1;\n -webkit-flex: 1;\n flex: 1;\n}\n.van-cell__value {\n color: #969799;\n overflow: hidden;\n text-align: right;\n position: relative;\n vertical-align: middle;\n}\n.van-cell__value--alone {\n color: #323233;\n text-align: left;\n}\n.van-cell__left-icon,\n.van-cell__right-icon {\n min-width: 1em;\n height: 24px;\n font-size: 16px;\n line-height: 24px;\n}\n.van-cell__left-icon {\n margin-right: 5px;\n}\n.van-cell__right-icon {\n margin-left: 5px;\n color: #969799;\n}\n.van-cell--clickable:active {\n background-color: #f2f3f5;\n}\n.van-cell--required {\n overflow: visible;\n}\n.van-cell--required::before {\n content: \'*\';\n position: absolute;\n left: 7px;\n font-size: 14px;\n color: #f44;\n}\n.van-cell--center {\n -webkit-box-align: center;\n -webkit-align-items: center;\n align-items: center;\n}\n.van-cell--large {\n padding-top: 12px;\n padding-bottom: 12px;\n}\n.van-cell--large .van-cell__title {\n font-size: 16px;\n}\n.van-cell--large .van-cell__label {\n font-size: 14px;\n}\n.van-cell-group {\n background-color: #fff;\n}\n.van-cell-group__title {\n color: #969799;\n padding: 15px 15px 5px;\n font-size: 14px;\n line-height: 16px;\n}\n/* common components */\n.van-col {\n float: left;\n min-height: 1px;\n box-sizing: border-box;\n}\n.van-col--1 {\n width: 4.16666667%;\n}\n.van-col--offset-1 {\n margin-left: 4.16666667%;\n}\n.van-col--2 {\n width: 8.33333333%;\n}\n.van-col--offset-2 {\n margin-left: 8.33333333%;\n}\n.van-col--3 {\n width: 12.5%;\n}\n.van-col--offset-3 {\n margin-left: 12.5%;\n}\n.van-col--4 {\n width: 16.66666667%;\n}\n.van-col--offset-4 {\n margin-left: 16.66666667%;\n}\n.van-col--5 {\n width: 20.83333333%;\n}\n.van-col--offset-5 {\n margin-left: 20.83333333%;\n}\n.van-col--6 {\n width: 25%;\n}\n.van-col--offset-6 {\n margin-left: 25%;\n}\n.van-col--7 {\n width: 29.16666667%;\n}\n.van-col--offset-7 {\n margin-left: 29.16666667%;\n}\n.van-col--8 {\n width: 33.33333333%;\n}\n.van-col--offset-8 {\n margin-left: 33.33333333%;\n}\n.van-col--9 {\n width: 37.5%;\n}\n.van-col--offset-9 {\n margin-left: 37.5%;\n}\n.van-col--10 {\n width: 41.66666667%;\n}\n.van-col--offset-10 {\n margin-left: 41.66666667%;\n}\n.van-col--11 {\n width: 45.83333333%;\n}\n.van-col--offset-11 {\n margin-left: 45.83333333%;\n}\n.van-col--12 {\n width: 50%;\n}\n.van-col--offset-12 {\n margin-left: 50%;\n}\n.van-col--13 {\n width: 54.16666667%;\n}\n.van-col--offset-13 {\n margin-left: 54.16666667%;\n}\n.van-col--14 {\n width: 58.33333333%;\n}\n.van-col--offset-14 {\n margin-left: 58.33333333%;\n}\n.van-col--15 {\n width: 62.5%;\n}\n.van-col--offset-15 {\n margin-left: 62.5%;\n}\n.van-col--16 {\n width: 66.66666667%;\n}\n.van-col--offset-16 {\n margin-left: 66.66666667%;\n}\n.van-col--17 {\n width: 70.83333333%;\n}\n.van-col--offset-17 {\n margin-left: 70.83333333%;\n}\n.van-col--18 {\n width: 75%;\n}\n.van-col--offset-18 {\n margin-left: 75%;\n}\n.van-col--19 {\n width: 79.16666667%;\n}\n.van-col--offset-19 {\n margin-left: 79.16666667%;\n}\n.van-col--20 {\n width: 83.33333333%;\n}\n.van-col--offset-20 {\n margin-left: 83.33333333%;\n}\n.van-col--21 {\n width: 87.5%;\n}\n.van-col--offset-21 {\n margin-left: 87.5%;\n}\n.van-col--22 {\n width: 91.66666667%;\n}\n.van-col--offset-22 {\n margin-left: 91.66666667%;\n}\n.van-col--23 {\n width: 95.83333333%;\n}\n.van-col--offset-23 {\n margin-left: 95.83333333%;\n}\n.van-col--24 {\n width: 100%;\n}\n.van-col--offset-24 {\n margin-left: 100%;\n}\n.van-row::after {\n content: "";\n display: table;\n clear: both;\n}\n.van-row--flex {\n display: -webkit-box;\n display: -webkit-flex;\n display: flex;\n}\n.van-row--flex::after {\n display: none;\n}\n.van-row--justify-center {\n -webkit-box-pack: center;\n -webkit-justify-content: center;\n justify-content: center;\n}\n.van-row--justify-end {\n -webkit-box-pack: end;\n -webkit-justify-content: flex-end;\n justify-content: flex-end;\n}\n.van-row--justify-space-between {\n -webkit-box-pack: justify;\n -webkit-justify-content: space-between;\n justify-content: space-between;\n}\n.van-row--justify-space-around {\n -webkit-justify-content: space-around;\n justify-content: space-around;\n}\n.van-row--align-center {\n -webkit-box-align: center;\n -webkit-align-items: center;\n align-items: center;\n}\n.van-row--align-bottom {\n -webkit-box-align: end;\n -webkit-align-items: flex-end;\n align-items: flex-end;\n}\n.van-badge {\n display: block;\n overflow: hidden;\n -webkit-user-select: none;\n user-select: none;\n word-break: break-all;\n box-sizing: border-box;\n color: #7d7e80;\n padding: 20px 12px 20px 9px;\n font-size: 14px;\n line-height: 1.4;\n background-color: #f8f8f8;\n border-left: 3px solid transparent;\n}\n.van-badge__text {\n position: relative;\n}\n.van-badge:active {\n background-color: #f2f3f5;\n}\n.van-badge:not(:last-child)::after {\n border-bottom-width: 1px;\n}\n.van-badge--select {\n color: #323233;\n font-weight: 500;\n border-color: #f44;\n}\n.van-badge--select::after {\n border-right-width: 1px;\n}\n.van-badge--select,\n.van-badge--select:active {\n background-color: #fff;\n}\n.van-badge .van-info {\n right: 4px;\n}\n.badge-group {\n width: 85px;\n}\n.van-circle {\n position: relative;\n text-align: center;\n display: inline-block;\n}\n.van-circle svg {\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n position: absolute;\n}\n.van-circle__layer {\n fill: none;\n stroke-linecap: round;\n stroke-dasharray: 3140;\n stroke-dashoffset: 3140;\n -webkit-transform: rotate(90deg);\n transform: rotate(90deg);\n -webkit-transform-origin: 530px 530px;\n transform-origin: 530px 530px;\n}\n.van-circle__text {\n top: 50%;\n left: 0;\n width: 100%;\n color: #323233;\n position: absolute;\n -webkit-transform: translateY(-50%);\n transform: translateY(-50%);\n}\n.van-collapse-item__title .van-cell__right-icon::before {\n -webkit-transform: rotate(90deg);\n transform: rotate(90deg);\n -webkit-transition: 0.3s;\n transition: 0.3s;\n}\n.van-collapse-item__title::after {\n visibility: hidden;\n}\n.van-collapse-item__title--expanded .van-cell__right-icon::before {\n -webkit-transform: rotate(-90deg);\n transform: rotate(-90deg);\n}\n.van-collapse-item__title--expanded::after {\n visibility: visible;\n}\n.van-collapse-item__title--disabled,\n.van-collapse-item__title--disabled .van-cell__right-icon {\n color: #c8c9cc;\n}\n.van-collapse-item__title--disabled:active {\n background-color: #fff;\n}\n.van-collapse-item__wrapper {\n overflow: hidden;\n will-change: height;\n -webkit-transition: height 0.3s ease-in-out;\n transition: height 0.3s ease-in-out;\n}\n.van-collapse-item__content {\n color: #969799;\n padding: 15px;\n font-size: 13px;\n line-height: 1.5;\n background-color: #fff;\n}\n.van-list__loading-text,\n.van-list__finished-text,\n.van-list__error-text {\n color: #969799;\n font-size: 13px;\n line-height: 50px;\n text-align: center;\n}\n.van-list__loading {\n text-align: center;\n}\n.van-list__loading-icon,\n.van-list__loading-text {\n display: inline-block;\n vertical-align: middle;\n}\n.van-list__loading-icon {\n width: 16px;\n height: 16px;\n margin-right: 5px;\n}\n.van-nav-bar {\n position: relative;\n -webkit-user-select: none;\n user-select: none;\n text-align: center;\n height: 46px;\n line-height: 46px;\n background-color: #fff;\n}\n.van-nav-bar .van-icon {\n color: #1989fa;\n vertical-align: middle;\n}\n.van-nav-bar__arrow {\n min-width: 1em;\n font-size: 16px;\n}\n.van-nav-bar__arrow + .van-nav-bar__text {\n margin-left: -20px;\n padding-left: 25px;\n}\n.van-nav-bar--fixed {\n top: 0;\n left: 0;\n width: 100%;\n position: fixed;\n}\n.van-nav-bar__title {\n margin: 0 auto;\n max-width: 60%;\n color: #323233;\n font-size: 16px;\n font-weight: 500;\n}\n.van-nav-bar__left,\n.van-nav-bar__right {\n bottom: 0;\n font-size: 14px;\n position: absolute;\n}\n.van-nav-bar__left {\n left: 15px;\n}\n.van-nav-bar__right {\n right: 15px;\n}\n.van-nav-bar__text {\n color: #1989fa;\n margin: 0 -15px;\n padding: 0 15px;\n display: inline-block;\n vertical-align: middle;\n}\n.van-nav-bar__text:active {\n background-color: #f2f3f5;\n}\n.van-notice-bar {\n display: -webkit-box;\n display: -webkit-flex;\n display: flex;\n height: 40px;\n padding: 0 15px;\n font-size: 14px;\n line-height: 24px;\n position: relative;\n -webkit-box-align: center;\n -webkit-align-items: center;\n align-items: center;\n color: #ed6a0c;\n background-color: #fffbe8;\n}\n.van-notice-bar__left-icon {\n font-size: 16px;\n min-width: 22px;\n}\n.van-notice-bar__right-icon {\n top: 50%;\n right: 15px;\n font-size: 16px;\n position: absolute;\n margin-top: -0.5em;\n}\n.van-notice-bar__wrap {\n -webkit-box-flex: 1;\n -webkit-flex: 1;\n flex: 1;\n height: 24px;\n overflow: hidden;\n position: relative;\n}\n.van-notice-bar__content {\n position: absolute;\n white-space: nowrap;\n}\n.van-notice-bar__content.van-ellipsis {\n max-width: 100%;\n}\n.van-notice-bar__play {\n -webkit-animation: van-notice-bar-play linear both;\n animation: van-notice-bar-play linear both;\n}\n.van-notice-bar__play--infinite {\n -webkit-animation: van-notice-bar-play-infinite linear infinite both;\n animation: van-notice-bar-play-infinite linear infinite both;\n}\n.van-notice-bar--wrapable {\n height: auto;\n padding: 8px 15px;\n}\n.van-notice-bar--wrapable .van-notice-bar__wrap {\n height: auto;\n}\n.van-notice-bar--wrapable .van-notice-bar__content {\n position: relative;\n white-space: normal;\n}\n.van-notice-bar--withicon {\n position: relative;\n padding-right: 40px;\n}\n/**\n * Declare two same keyframes\n * In case that some mobile browsers can continue animation when className changed\n */\n@-webkit-keyframes van-notice-bar-play {\n to {\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n }\n}\n@keyframes van-notice-bar-play {\n to {\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n }\n}\n@-webkit-keyframes van-notice-bar-play-infinite {\n to {\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n }\n}\n@keyframes van-notice-bar-play-infinite {\n to {\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n }\n}\n.van-overlay {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.7);\n}\n.van-overflow-hidden {\n overflow: hidden !important;\n}\n.van-popup {\n position: fixed;\n top: 50%;\n left: 50%;\n max-height: 100%;\n overflow-y: auto;\n background-color: #fff;\n -webkit-transition: 0.3s ease-out;\n transition: 0.3s ease-out;\n -webkit-overflow-scrolling: touch;\n -webkit-transform: translate3d(-50%, -50%, 0);\n transform: translate3d(-50%, -50%, 0);\n}\n.van-popup--top {\n width: 100%;\n top: 0;\n right: auto;\n bottom: auto;\n left: 50%;\n -webkit-transform: translate3d(-50%, 0, 0);\n transform: translate3d(-50%, 0, 0);\n}\n.van-popup--right {\n top: 50%;\n right: 0;\n bottom: auto;\n left: auto;\n -webkit-transform: translate3d(0, -50%, 0);\n transform: translate3d(0, -50%, 0);\n}\n.van-popup--bottom {\n width: 100%;\n top: auto;\n bottom: 0;\n right: auto;\n left: 50%;\n -webkit-transform: translate3d(-50%, 0, 0);\n transform: translate3d(-50%, 0, 0);\n}\n.van-popup--left {\n top: 50%;\n right: auto;\n bottom: auto;\n left: 0;\n -webkit-transform: translate3d(0, -50%, 0);\n transform: translate3d(0, -50%, 0);\n}\n.van-popup-slide-top-enter,\n.van-popup-slide-top-leave-active {\n -webkit-transform: translate3d(-50%, -100%, 0);\n transform: translate3d(-50%, -100%, 0);\n}\n.van-popup-slide-right-enter,\n.van-popup-slide-right-leave-active {\n -webkit-transform: translate3d(100%, -50%, 0);\n transform: translate3d(100%, -50%, 0);\n}\n.van-popup-slide-bottom-enter,\n.van-popup-slide-bottom-leave-active {\n -webkit-transform: translate3d(-50%, 100%, 0);\n transform: translate3d(-50%, 100%, 0);\n}\n.van-popup-slide-left-enter,\n.van-popup-slide-left-leave-active {\n -webkit-transform: translate3d(-100%, -50%, 0);\n transform: translate3d(-100%, -50%, 0);\n}\n.van-search {\n display: -webkit-box;\n display: -webkit-flex;\n display: flex;\n padding: 10px 16px;\n -webkit-box-align: center;\n -webkit-align-items: center;\n align-items: center;\n box-sizing: border-box;\n}\n.van-search__content {\n display: -webkit-box;\n display: -webkit-flex;\n display: flex;\n -webkit-box-flex: 1;\n -webkit-flex: 1;\n flex: 1;\n background-color: #f7f8fA;\n border-radius: 2px;\n padding-left: 10px;\n}\n.van-search__content--round {\n border-radius: 17px;\n}\n.van-search__label {\n font-size: 14px;\n color: #323233;\n line-height: 34px;\n padding: 0 5px;\n}\n.van-search .van-cell {\n -webkit-box-flex: 1;\n -webkit-flex: 1;\n flex: 1;\n padding: 5px 10px 5px 0;\n background-color: transparent;\n}\n.van-search .van-cell__left-icon {\n color: #969799;\n}\n.van-search--show-action {\n padding-right: 0;\n}\n.van-search input::-webkit-search-decoration,\n.van-search input::-webkit-search-cancel-button,\n.van-search input::-webkit-search-results-button,\n.van-search input::-webkit-search-results-decoration {\n display: none;\n}\n.van-search__action {\n padding: 0 10px;\n font-size: 14px;\n line-height: 34px;\n color: #323233;\n}\n.van-search__action:active {\n background-color: #f2f3f5;\n}\n.van-pagination {\n display: -webkit-box;\n display: -webkit-flex;\n display: flex;\n text-align: center;\n line-height: 40px;\n font-size: 14px;\n}\n.van-pagination__item {\n -webkit-box-flex: 1;\n -webkit-flex: 1;\n flex: 1;\n color: #1989fa;\n height: 40px;\n min-width: 36px;\n background-color: #fff;\n box-sizing: border-box;\n -webkit-user-select: none;\n user-select: none;\n}\n.van-pagination__item:active {\n color: #fff;\n background-color: #1989fa;\n}\n.van-pagination__item::after {\n border-width: 1px 0 1px 1px;\n}\n.van-pagination__item:last-child::after {\n border-right-width: 1px;\n}\n.van-pagination__item--disabled,\n.van-pagination__item--disabled:active {\n background-color: #f8f8f8;\n color: #7d7e80;\n opacity: 0.6;\n}\n.van-pagination__item--active {\n color: #fff;\n background-color: #1989fa;\n}\n.van-pagination__prev,\n.van-pagination__next {\n padding: 0 5px;\n}\n.van-pagination__page {\n -webkit-box-flex: 0;\n -webkit-flex-grow: 0;\n flex-grow: 0;\n}\n.van-pagination__page-desc {\n -webkit-box-flex: 1;\n -webkit-flex: 1;\n flex: 1;\n height: 40px;\n color: #7d7e80;\n}\n.van-pagination--simple .van-pagination__prev::after,\n.van-pagination--simple .van-pagination__next::after {\n border-width: 1px;\n}\n.van-panel {\n background: #fff;\n}\n.van-panel__header-value {\n color: #f44;\n}\n.van-panel__footer {\n padding: 10px 15px;\n}\n.van-rate {\n -webkit-user-select: none;\n user-select: none;\n}\n.van-rate__item {\n display: inline-block;\n position: relative;\n padding: 0 2px;\n}\n.van-rate__icon {\n width: 1em;\n}\n.van-rate__icon--half {\n position: absolute;\n top: 0;\n left: 2px;\n width: 0.5em;\n overflow: hidden;\n}\n.van-steps {\n overflow: hidden;\n background-color: #fff;\n}\n.van-steps--horizontal {\n padding: 0 10px;\n}\n.van-steps--horizontal .van-steps__items {\n display: -webkit-box;\n display: -webkit-flex;\n display: flex;\n margin: 0 0 10px;\n position: relative;\n padding-bottom: 22px;\n}\n.van-steps--horizontal .van-steps__items.van-steps__items--alone {\n padding-top: 10px;\n}\n.van-steps--vertical {\n padding: 0 0 0 35px;\n}\n.van-steps__icon {\n float: left;\n margin-right: 10px;\n}\n.van-steps .van-icon {\n font-size: 40px;\n}\n.van-steps__message {\n height: 40px;\n margin: 15px 0;\n}\n.van-steps__title {\n font-size: 14px;\n color: #323233;\n padding-top: 4px;\n}\n.van-steps__desc {\n font-size: 12px;\n line-height: 1.5;\n color: #969799;\n}\n.van-step {\n -webkit-box-flex: 1;\n -webkit-flex: 1;\n flex: 1;\n font-size: 14px;\n position: relative;\n color: #969799;\n}\n.van-step__circle {\n display: block;\n width: 5px;\n height: 5px;\n border-radius: 50%;\n background-color: #969799;\n}\n.van-step--horizontal {\n float: left;\n}\n.van-step--horizontal:first-child .van-step__title {\n -webkit-transform: none;\n transform: none;\n margin-left: 0;\n}\n.van-step--horizontal:last-child {\n position: absolute;\n right: 1px;\n width: auto;\n}\n.van-step--horizontal:last-child .van-step__title {\n -webkit-transform: none;\n transform: none;\n margin-left: 0;\n}\n.van-step--horizontal:last-child .van-step__circle-container {\n left: auto;\n right: -9px;\n}\n.van-step--horizontal .van-step__circle-container {\n position: absolute;\n top: 28px;\n left: -8px;\n padding: 0 8px;\n background-color: #fff;\n z-index: 1;\n}\n.van-step--horizontal .van-step__title {\n font-size: 12px;\n -webkit-transform: translate3d(-50%, 0, 0);\n transform: translate3d(-50%, 0, 0);\n display: inline-block;\n margin-left: 3px;\n}\n@media (max-width: 321px) {\n .van-step--horizontal .van-step__title {\n font-size: 11px;\n }\n}\n.van-step--horizontal .van-step__line {\n position: absolute;\n left: 0;\n top: 30px;\n width: 100%;\n height: 1px;\n background-color: #ebedf0;\n}\n.van-step--horizontal.van-step--process {\n color: #323233;\n}\n.van-step--horizontal.van-step--process .van-step__circle-container {\n top: 24px;\n}\n.van-step--horizontal.van-step--process .van-icon {\n font-size: 12px;\n color: #07c160;\n display: block;\n}\n.van-step--vertical {\n float: none;\n display: block;\n font-size: 14px;\n line-height: 18px;\n padding: 10px 10px 10px 0;\n}\n.van-step--vertical:not(:last-child)::after {\n border-bottom-width: 1px;\n}\n.van-step--vertical:first-child::before {\n content: \'\';\n position: absolute;\n width: 1px;\n height: 20px;\n background-color: #fff;\n top: 0;\n left: -15px;\n z-index: 1;\n}\n.van-step--vertical .van-step__circle-container > i {\n position: absolute;\n z-index: 2;\n}\n.van-step--vertical .van-step__circle {\n top: 16px;\n left: -17px;\n}\n.van-step--vertical .van-step__line {\n position: absolute;\n top: 16px;\n left: -15px;\n width: 1px;\n height: 100%;\n background-color: #ebedf0;\n}\n.van-step--vertical.van-step--process .van-icon {\n top: 12px;\n left: -20px;\n line-height: 1;\n font-size: 12px;\n}\n.van-step:last-child .van-step__line {\n width: 0;\n}\n.van-step--finish {\n color: #323233;\n}\n.van-step--finish .van-step__circle,\n.van-step--finish .van-step__line {\n background-color: #07c160;\n}\n.van-tag {\n color: #fff;\n font-size: 10px;\n padding: 0.2em 0.5em;\n line-height: normal;\n border-radius: 0.2em;\n display: inline-block;\n}\n.van-tag::after {\n border-color: currentColor;\n border-radius: 0.4em;\n}\n.van-tag--mark {\n padding-right: 0.6em;\n border-radius: 0 0.8em 0.8em 0;\n}\n.van-tag--mark::after {\n border-radius: 0 1.6em 1.6em 0;\n}\n.van-tag--round {\n border-radius: 0.8em;\n}\n.van-tag--round::after {\n border-radius: 1.6em;\n}\n.van-tag--medium {\n font-size: 12px;\n}\n.van-tag--large {\n font-size: 14px;\n}\n.van-tab {\n -webkit-box-flex: 1;\n -webkit-flex: 1;\n flex: 1;\n cursor: pointer;\n min-width: 0;\n padding: 0 5px;\n font-size: 14px;\n position: relative;\n color: #7d7e80;\n line-height: 44px;\n text-align: center;\n box-sizing: border-box;\n}\n.van-tab span {\n display: block;\n}\n.van-tab--active {\n font-weight: 500;\n color: #323233;\n}\n.van-tab--disabled {\n color: #c8c9cc;\n}\n.van-tabs {\n position: relative;\n}\n.van-tabs__wrap {\n top: 0;\n left: 0;\n right: 0;\n z-index: 99;\n overflow: hidden;\n position: absolute;\n}\n.van-tabs__wrap--page-top {\n position: fixed;\n}\n.van-tabs__wrap--content-bottom {\n top: auto;\n bottom: 0;\n}\n.van-tabs__wrap--scrollable .van-tab {\n -webkit-box-flex: 0;\n -webkit-flex: 0 0 22%;\n flex: 0 0 22%;\n}\n.van-tabs__wrap--scrollable .van-tab--complete {\n -webkit-box-flex: 1;\n -webkit-flex: 1 0 auto;\n flex: 1 0 auto;\n}\n.van-tabs__wrap--scrollable .van-tabs__nav {\n overflow: hidden;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n}\n.van-tabs__wrap--scrollable .van-tabs__nav::-webkit-scrollbar {\n display: none;\n}\n.van-tabs__nav {\n display: -webkit-box;\n display: -webkit-flex;\n display: flex;\n -webkit-user-select: none;\n user-select: none;\n position: relative;\n background-color: #fff;\n}\n.van-tabs__nav--line {\n height: 100%;\n padding-bottom: 15px;\n /* 15px padding to hide scrollbar in mobile safari */\n box-sizing: content-box;\n}\n.van-tabs__nav--card {\n margin: 0 15px;\n border-radius: 2px;\n box-sizing: border-box;\n border: 1px solid #f44;\n height: 30px;\n}\n.van-tabs__nav--card .van-tab {\n color: #f44;\n border-right: 1px solid #f44;\n line-height: 28px;\n}\n.van-tabs__nav--card .van-tab:last-child {\n border-right: none;\n}\n.van-tabs__nav--card .van-tab.van-tab--active {\n color: #fff;\n background-color: #f44;\n}\n.van-tabs__nav--card .van-tab--disabled {\n color: #c8c9cc;\n}\n.van-tabs__line {\n z-index: 1;\n left: 0;\n bottom: 15px;\n height: 3px;\n position: absolute;\n border-radius: 3px;\n background-color: #f44;\n}\n.van-tabs__content--animated {\n overflow: hidden;\n}\n.van-tabs__track {\n position: relative;\n display: -webkit-box;\n display: -webkit-flex;\n display: flex;\n width: 100%;\n height: 100%;\n will-change: left;\n}\n.van-tabs--line {\n padding-top: 44px;\n}\n.van-tabs--line .van-tabs__wrap {\n height: 44px;\n}\n.van-tabs--card {\n padding-top: 30px;\n}\n.van-tabs--card > .van-tabs__wrap {\n height: 30px;\n}\n.van-tabs .van-tab__pane {\n width: 100%;\n -webkit-flex-shrink: 0;\n flex-shrink: 0;\n box-sizing: border-box;\n}\n.van-tabbar {\n display: -webkit-box;\n display: -webkit-flex;\n display: flex;\n width: 100%;\n height: 50px;\n background-color: #fff;\n}\n.van-tabbar--fixed {\n left: 0;\n bottom: 0;\n position: fixed;\n}\n.van-tabbar--safe-area-inset-bottom {\n padding-bottom: constant(safe-area-inset-bottom);\n padding-bottom: env(safe-area-inset-bottom);\n}\n.van-tabbar-item {\n -webkit-box-flex: 1;\n -webkit-flex: 1;\n flex: 1;\n display: -webkit-box;\n display: -webkit-flex;\n display: flex;\n color: #7d7e80;\n font-size: 12px;\n line-height: 1;\n -webkit-box-align: center;\n -webkit-align-items: center;\n align-items: center;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -webkit-flex-direction: column;\n flex-direction: column;\n -webkit-box-pack: center;\n -webkit-justify-content: center;\n justify-content: center;\n}\n.van-tabbar-item__icon {\n position: relative;\n font-size: 18px;\n margin-bottom: 5px;\n}\n.van-tabbar-item__icon .van-icon {\n display: block;\n min-width: 1em;\n}\n.van-tabbar-item__icon--dot::after {\n top: 0;\n right: -8px;\n width: 8px;\n height: 8px;\n content: \' \';\n position: absolute;\n border-radius: 100%;\n background-color: #f44;\n}\n.van-tabbar-item__icon img {\n display: block;\n height: 18px;\n}\n.van-tabbar-item--active {\n color: #1989fa;\n}\n.van-tabbar-item .van-info {\n margin-top: 2px;\n}\n.van-image-preview {\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n position: fixed;\n}\n.van-image-preview__image {\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n margin: auto;\n max-width: 100%;\n max-height: 100%;\n position: absolute;\n}\n.van-image-preview__index {\n position: absolute;\n top: 10px;\n left: 50%;\n color: #fff;\n font-size: 14px;\n letter-spacing: 2px;\n -webkit-transform: translate(-50%, 0);\n transform: translate(-50%, 0);\n}\n.van-image-preview__overlay {\n background-color: rgba(0, 0, 0, 0.9);\n}\n.van-image-preview .van-swipe {\n height: 100%;\n}\n.van-stepper {\n font-size: 0;\n}\n.van-stepper__minus,\n.van-stepper__plus {\n width: 28px;\n height: 28px;\n box-sizing: border-box;\n background-color: #f2f3f5;\n border: 0;\n margin: 1px;\n position: relative;\n padding: 5px;\n vertical-align: middle;\n}\n.van-stepper__minus::before,\n.van-stepper__plus::before {\n width: 9px;\n height: 1px;\n}\n.van-stepper__minus::after,\n.van-stepper__plus::after {\n width: 1px;\n height: 9px;\n}\n.van-stepper__minus::before,\n.van-stepper__plus::before,\n.van-stepper__minus::after,\n.van-stepper__plus::after {\n content: \'\';\n position: absolute;\n margin: auto;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: #323233;\n}\n.van-stepper__minus:active,\n.van-stepper__plus:active {\n background-color: #e8e8e8;\n}\n.van-stepper__minus--disabled,\n.van-stepper__plus--disabled {\n background-color: #f7f8fa;\n}\n.van-stepper__minus--disabled::before,\n.van-stepper__plus--disabled::before,\n.van-stepper__minus--disabled::after,\n.van-stepper__plus--disabled::after {\n background-color: #c8c9cc;\n}\n.van-stepper__minus--disabled:active,\n.van-stepper__plus--disabled:active {\n background-color: #f7f8fa;\n}\n.van-stepper__minus {\n border-radius: 4px 0 0 4px;\n}\n.van-stepper__minus::after {\n display: none;\n}\n.van-stepper__plus {\n border-radius: 0 4px 4px 0;\n}\n.van-stepper__input {\n width: 30px;\n height: 26px;\n padding: 1px;\n border: 0;\n margin: 1px;\n background-color: #f2f3f5;\n border-width: 1px 0;\n border-radius: 0;\n box-sizing: content-box;\n color: #323233;\n font-size: 14px;\n vertical-align: middle;\n text-align: center;\n -webkit-appearance: none;\n}\n.van-stepper__input[disabled] {\n color: #c8c9cc;\n background-color: #f2f3f5;\n}\n.van-stepper input[type="number"]::-webkit-inner-spin-button,\n.van-stepper input[type="number"]::-webkit-outer-spin-button {\n -webkit-appearance: none;\n margin: 0;\n}\n.van-progress {\n height: 4px;\n position: relative;\n border-radius: 4px;\n background: #e5e5e5;\n}\n.van-progress__portion {\n left: 0;\n height: 100%;\n position: absolute;\n border-radius: inherit;\n}\n.van-progress__portion--with-pivot {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.van-progress__pivot {\n top: 50%;\n right: 0;\n min-width: 2em;\n padding: 0 5px;\n font-size: 10px;\n position: absolute;\n line-height: 1.6;\n text-align: center;\n border-radius: 1em;\n word-break: keep-all;\n box-sizing: border-box;\n background-color: #e5e5e5;\n -webkit-transform: translate(100%, -50%);\n transform: translate(100%, -50%);\n}\n.van-swipe {\n overflow: hidden;\n position: relative;\n -webkit-user-select: none;\n user-select: none;\n}\n.van-swipe__track {\n height: 100%;\n}\n.van-swipe__indicators {\n display: -webkit-box;\n display: -webkit-flex;\n display: flex;\n position: absolute;\n left: 50%;\n bottom: 10px;\n -webkit-transform: translateX(-50%);\n transform: translateX(-50%);\n}\n.van-swipe__indicators--vertical {\n left: 10px;\n top: 50%;\n bottom: auto;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -webkit-flex-direction: column;\n flex-direction: column;\n -webkit-transform: translateY(-50%);\n transform: translateY(-50%);\n}\n.van-swipe__indicators--vertical .van-swipe__indicator:not(:last-child) {\n margin-bottom: 6px;\n}\n.van-swipe__indicator {\n border-radius: 100%;\n opacity: 0.3;\n width: 6px;\n height: 6px;\n background-color: #ebedf0;\n -webkit-transition: opacity 0.2s;\n transition: opacity 0.2s;\n}\n.van-swipe__indicator:not(:last-child) {\n margin-right: 6px;\n}\n.van-swipe__indicator--active {\n opacity: 1;\n background-color: #1989fa;\n}\n.van-swipe-item {\n float: left;\n height: 100%;\n}\n.van-slider {\n position: relative;\n border-radius: 999px;\n background-color: #e5e5e5;\n}\n.van-slider__bar {\n position: relative;\n border-radius: inherit;\n background-color: #1989fa;\n}\n.van-slider__button {\n width: 20px;\n height: 20px;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.5);\n border-radius: 50%;\n background-color: #fff;\n}\n.van-slider__button-wrapper {\n position: absolute;\n top: 50%;\n right: 0;\n -webkit-transform: translate3d(50%, -50%, 0);\n transform: translate3d(50%, -50%, 0);\n /* use pseudo element to expand touch area */\n}\n.van-slider__button-wrapper::after {\n content: \'\';\n position: absolute;\n width: 200%;\n height: 200%;\n top: -50%;\n left: -50%;\n}\n.van-slider--disabled {\n opacity: 0.3;\n}\n.van-slider--vertical {\n height: 100%;\n display: inline-block;\n}\n.van-slider--vertical .van-slider__button-wrapper {\n top: auto;\n bottom: 0;\n -webkit-transform: translate3d(50%, 50%, 0);\n transform: translate3d(50%, 50%, 0);\n}\n/* form components */\n.van-checkbox {\n overflow: hidden;\n -webkit-user-select: none;\n user-select: none;\n}\n.van-checkbox__icon,\n.van-checkbox__label {\n display: inline-block;\n vertical-align: middle;\n line-height: 20px;\n}\n.van-checkbox__icon {\n height: 20px;\n}\n.van-checkbox__icon .van-icon {\n font-size: 14px;\n color: transparent;\n text-align: center;\n line-height: inherit;\n width: 20px;\n height: 20px;\n box-sizing: border-box;\n border: 1px solid #e5e5e5;\n -webkit-transition: 0.2s;\n transition: 0.2s;\n}\n.van-checkbox__icon--round .van-icon {\n border-radius: 100%;\n}\n.van-checkbox__icon--checked .van-icon {\n color: #fff;\n border-color: #1989fa;\n background-color: #1989fa;\n}\n.van-checkbox__icon--disabled .van-icon {\n border-color: #c8c9cc;\n background-color: #ebedf0;\n}\n.van-checkbox__icon--disabled.van-checkbox__icon--checked .van-icon {\n color: #c8c9cc;\n}\n.van-checkbox__label {\n color: #323233;\n margin-left: 10px;\n}\n.van-checkbox__label--left {\n float: left;\n margin: 0 10px 0 0;\n}\n.van-checkbox__label--disabled {\n color: #c8c9cc;\n}\n.van-field__label {\n max-width: 90px;\n}\n.van-field__label--center {\n text-align: center;\n}\n.van-field__label--right {\n text-align: right;\n}\n.van-field__body {\n display: -webkit-box;\n display: -webkit-flex;\n display: flex;\n -webkit-box-align: center;\n -webkit-align-items: center;\n align-items: center;\n}\n.van-field__control {\n border: 0;\n margin: 0;\n padding: 0;\n width: 100%;\n resize: none;\n display: block;\n color: #323233;\n box-sizing: border-box;\n background-color: transparent;\n /* for ios wechat */\n}\n.van-field__control::-webkit-input-placeholder {\n color: #969799;\n}\n.van-field__control::placeholder {\n color: #969799;\n}\n.van-field__control:disabled {\n opacity: 1;\n color: #969799;\n background-color: transparent;\n}\n.van-field__control--center {\n text-align: center;\n}\n.van-field__control--right {\n text-align: right;\n}\n.van-field__control[type="date"],\n.van-field__control[type="time"],\n.van-field__control[type="datetime-local"] {\n min-height: 24px;\n}\n.van-field__clear,\n.van-field__icon,\n.van-field__button,\n.van-field__right-icon {\n -webkit-flex-shrink: 0;\n flex-shrink: 0;\n}\n.van-field__clear,\n.van-field__right-icon {\n padding: 0 10px;\n line-height: inherit;\n margin-right: -10px;\n}\n.van-field__clear {\n color: #c8c9cc;\n font-size: 16px;\n}\n.van-field__left-icon .van-icon,\n.van-field__right-icon .van-icon {\n display: block;\n min-width: 1em;\n font-size: 16px;\n line-height: inherit;\n}\n.van-field__left-icon {\n margin-right: 5px;\n}\n.van-field__right-icon {\n color: #969799;\n}\n.van-field__button {\n padding-left: 10px;\n}\n.van-field__error-message {\n color: #f44;\n font-size: 12px;\n text-align: left;\n}\n.van-field__error-message--center {\n text-align: center;\n}\n.van-field__error-message--right {\n text-align: right;\n}\n.van-field--disabled .van-field__control {\n color: #969799;\n}\n.van-field--error .van-field__control,\n.van-field--error .van-field__control::-webkit-input-placeholder {\n color: #f44;\n}\n.van-field--error .van-field__control,\n.van-field--error .van-field__control::placeholder {\n color: #f44;\n}\n.van-field--min-height .van-field__control {\n min-height: 60px;\n}\n.van-radio {\n overflow: hidden;\n -webkit-user-select: none;\n user-select: none;\n}\n.van-radio__icon,\n.van-radio__label {\n display: inline-block;\n vertical-align: middle;\n line-height: 20px;\n}\n.van-radio__icon {\n height: 20px;\n}\n.van-radio__icon .van-icon {\n font-size: 14px;\n color: transparent;\n text-align: center;\n line-height: inherit;\n width: 20px;\n height: 20px;\n box-sizing: border-box;\n border: 1px solid #e5e5e5;\n -webkit-transition: 0.2s;\n transition: 0.2s;\n}\n.van-radio__icon--round .van-icon {\n border-radius: 100%;\n}\n.van-radio__icon--checked .van-icon {\n color: #fff;\n border-color: #1989fa;\n background-color: #1989fa;\n}\n.van-radio__icon--disabled .van-icon {\n border-color: #c8c9cc;\n background-color: #ebedf0;\n}\n.van-radio__icon--disabled.van-radio__icon--checked .van-icon {\n color: #c8c9cc;\n}\n.van-radio__label {\n color: #323233;\n margin-left: 10px;\n}\n.van-radio__label--left {\n float: left;\n margin: 0 10px 0 0;\n}\n.van-radio__label--disabled {\n color: #c8c9cc;\n}\n.van-switch {\n display: inline-block;\n position: relative;\n width: 2em;\n height: 1em;\n border: 1px solid rgba(0, 0, 0, 0.1);\n border-radius: 1em;\n box-sizing: content-box;\n background-color: #fff;\n -webkit-transition: background-color 0.3s;\n transition: background-color 0.3s;\n}\n.van-switch__node {\n top: 0;\n left: 0;\n position: absolute;\n border-radius: 100%;\n width: 1em;\n height: 1em;\n z-index: 1;\n -webkit-transition: 0.3s;\n transition: 0.3s;\n box-shadow: 0 3px 1px 0 rgba(0, 0, 0, 0.05), 0 2px 2px 0 rgba(0, 0, 0, 0.1), 0 3px 3px 0 rgba(0, 0, 0, 0.05);\n background-color: #fff;\n}\n.van-switch__loading {\n top: 25%;\n left: 25%;\n width: 50%;\n height: 50%;\n}\n.van-switch--on {\n background-color: #1989fa;\n}\n.van-switch--on .van-switch__node {\n -webkit-transform: translateX(1em);\n transform: translateX(1em);\n}\n.van-switch--disabled {\n opacity: 0.4;\n}\n.van-uploader {\n position: relative;\n display: inline-block;\n}\n.van-uploader__input {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n opacity: 0;\n cursor: pointer;\n overflow: hidden;\n}\n.van-password-input {\n margin: 0 15px;\n -webkit-user-select: none;\n user-select: none;\n position: relative;\n}\n.van-password-input:focus {\n outline: none;\n}\n.van-password-input__info,\n.van-password-input__error-info {\n font-size: 14px;\n margin-top: 15px;\n text-align: center;\n}\n.van-password-input__info {\n color: #969799;\n}\n.van-password-input__error-info {\n color: #f44;\n}\n.van-password-input__security {\n width: 100%;\n height: 50px;\n display: -webkit-box;\n display: -webkit-flex;\n display: flex;\n background-color: #fff;\n}\n.van-password-input__security::after {\n border-radius: 6px;\n}\n.van-password-input__security li {\n -webkit-box-flex: 1;\n -webkit-flex: 1;\n flex: 1;\n height: 100%;\n position: relative;\n font-size: 20px;\n line-height: 50px;\n text-align: center;\n}\n.van-password-input__security li:not(:first-of-type)::after {\n border-left-width: 1px;\n}\n.van-password-input__security i {\n position: absolute;\n left: 50%;\n top: 50%;\n width: 10px;\n height: 10px;\n margin: -5px 0 0 -5px;\n visibility: hidden;\n border-radius: 100%;\n background-color: #000;\n}\n.van-number-keyboard {\n left: 0;\n bottom: 0;\n width: 100%;\n position: fixed;\n -webkit-user-select: none;\n user-select: none;\n background-color: #fff;\n -webkit-animation-timing-function: ease-out;\n animation-timing-function: ease-out;\n}\n.van-number-keyboard__title {\n height: 30px;\n font-size: 14px;\n line-height: 30px;\n text-align: center;\n position: relative;\n color: #7d7e80;\n}\n.van-number-keyboard__title-left {\n left: 0;\n position: absolute;\n}\n.van-number-keyboard__body {\n box-sizing: border-box;\n}\n.van-number-keyboard__close {\n right: 0;\n color: #1989fa;\n font-size: 14px;\n padding: 0 15px;\n position: absolute;\n}\n.van-number-keyboard__close:active {\n background-color: #f2f3f5;\n}\n.van-number-keyboard__sidebar {\n top: 0;\n right: 0;\n width: 25%;\n position: absolute;\n height: 216px;\n}\n.van-number-keyboard--custom .van-number-keyboard__body {\n padding-right: 25%;\n}\n.van-number-keyboard--safe-area-inset-bottom {\n padding-bottom: constant(safe-area-inset-bottom);\n padding-bottom: env(safe-area-inset-bottom);\n}\n.van-key {\n width: 33.33333333%;\n font-size: 24px;\n font-style: normal;\n text-align: center;\n display: inline-block;\n vertical-align: middle;\n height: 54px;\n line-height: 54px;\n}\n.van-key::after {\n border-width: 1px 1px 0 0;\n}\n.van-key--middle {\n width: 66.66666667%;\n}\n.van-key--big {\n width: 100%;\n height: 108px;\n line-height: 108px;\n}\n.van-key--blue,\n.van-key--delete {\n font-size: 16px;\n}\n.van-key--blue {\n color: #fff;\n background-color: #1989fa;\n}\n.van-key--blue.van-key--active {\n background-color: #1989fa;\n}\n.van-key--blue::after {\n border-color: #1989fa;\n}\n.van-key--gray {\n background-color: #ebedf0;\n}\n.van-key--active {\n background-color: #f2f3f5;\n}\n/* action components */\n.van-actionsheet {\n color: #323233;\n max-height: 90%;\n}\n.van-actionsheet__item,\n.van-actionsheet__cancel {\n text-align: center;\n font-size: 16px;\n line-height: 50px;\n background-color: #fff;\n}\n.van-actionsheet__item:active,\n.van-actionsheet__cancel:active {\n background-color: #f2f3f5;\n}\n.van-actionsheet__item {\n height: 50px;\n}\n.van-actionsheet__item--disabled {\n color: #c8c9cc;\n}\n.van-actionsheet__item--disabled:active {\n background-color: #fff;\n}\n.van-actionsheet__subname {\n color: #7d7e80;\n font-size: 12px;\n margin-left: 5px;\n}\n.van-actionsheet__loading {\n display: inline-block;\n}\n.van-actionsheet__cancel::before {\n content: \' \';\n display: block;\n height: 10px;\n background-color: #f8f8f8;\n}\n.van-actionsheet__header {\n font-size: 16px;\n line-height: 44px;\n text-align: center;\n}\n.van-actionsheet__close {\n top: 0;\n right: 0;\n padding: 0 15px;\n position: absolute;\n line-height: inherit;\n color: #969799;\n font-size: 18px;\n}\n.van-actionsheet--safe-area-inset-bottom {\n padding-bottom: constant(safe-area-inset-bottom);\n padding-bottom: env(safe-area-inset-bottom);\n}\n.van-dialog {\n position: fixed;\n top: 50%;\n left: 50%;\n overflow: hidden;\n width: 85%;\n font-size: 16px;\n -webkit-transition: 0.3s;\n transition: 0.3s;\n border-radius: 4px;\n background-color: #fff;\n -webkit-transform: translate3d(-50%, -50%, 0);\n transform: translate3d(-50%, -50%, 0);\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n}\n.van-dialog__header {\n text-align: center;\n font-weight: 500;\n padding-top: 25px;\n}\n.van-dialog__header--isolated {\n padding: 25px 0;\n}\n.van-dialog__message {\n padding: 25px;\n font-size: 14px;\n line-height: 1.5;\n max-height: 60vh;\n overflow-y: auto;\n text-align: center;\n -webkit-overflow-scrolling: touch;\n white-space: pre-wrap;\n}\n.van-dialog__message--has-title {\n color: #7d7e80;\n padding-top: 12px;\n}\n.van-dialog__message--left {\n text-align: left;\n}\n.van-dialog__message--right {\n text-align: right;\n}\n.van-dialog__footer {\n overflow: hidden;\n -webkit-user-select: none;\n user-select: none;\n}\n.van-dialog__footer--buttons {\n display: -webkit-box;\n display: -webkit-flex;\n display: flex;\n}\n.van-dialog__footer--buttons .van-button {\n -webkit-box-flex: 1;\n -webkit-flex: 1;\n flex: 1;\n}\n.van-dialog .van-button {\n border: 0;\n}\n.van-dialog__confirm,\n.van-dialog__confirm:active {\n color: #1989fa;\n}\n.van-dialog-bounce-enter {\n opacity: 0;\n -webkit-transform: translate3d(-50%, -50%, 0) scale(0.7);\n transform: translate3d(-50%, -50%, 0) scale(0.7);\n}\n.van-dialog-bounce-leave-active {\n opacity: 0;\n -webkit-transform: translate3d(-50%, -50%, 0) scale(0.9);\n transform: translate3d(-50%, -50%, 0) scale(0.9);\n}\n.van-picker {\n overflow: hidden;\n -webkit-user-select: none;\n user-select: none;\n position: relative;\n background-color: #fff;\n -webkit-text-size-adjust: 100%;\n /* avoid iOS text size adjust */\n}\n.van-picker__toolbar {\n display: -webkit-box;\n display: -webkit-flex;\n display: flex;\n height: 44px;\n line-height: 44px;\n -webkit-box-pack: justify;\n -webkit-justify-content: space-between;\n justify-content: space-between;\n}\n.van-picker__cancel,\n.van-picker__confirm {\n color: #1989fa;\n padding: 0 15px;\n font-size: 14px;\n}\n.van-picker__cancel:active,\n.van-picker__confirm:active {\n background-color: #f2f3f5;\n}\n.van-picker__title {\n max-width: 50%;\n font-size: 16px;\n font-weight: 500;\n text-align: center;\n}\n.van-picker__columns {\n display: -webkit-box;\n display: -webkit-flex;\n display: flex;\n position: relative;\n}\n.van-picker__loading {\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 2;\n position: absolute;\n background-color: rgba(255, 255, 255, 0.9);\n}\n.van-picker__loading circle {\n stroke: #1989fa;\n}\n.van-picker__loading .van-loading,\n.van-picker__frame {\n top: 50%;\n left: 0;\n width: 100%;\n z-index: 1;\n position: absolute;\n pointer-events: none;\n -webkit-transform: translateY(-50%);\n transform: translateY(-50%);\n}\n.van-picker-column {\n -webkit-box-flex: 1;\n -webkit-flex: 1;\n flex: 1;\n overflow: hidden;\n font-size: 16px;\n text-align: center;\n}\n.van-picker-column__item {\n padding: 0 5px;\n color: #969799;\n}\n.van-picker-column__item--selected {\n font-weight: 500;\n color: #323233;\n}\n.van-picker-column__item--disabled {\n opacity: 0.3;\n}\n.van-pull-refresh {\n -webkit-user-select: none;\n user-select: none;\n overflow: hidden;\n}\n.van-pull-refresh__track {\n position: relative;\n}\n.van-pull-refresh__head {\n width: 100%;\n height: 50px;\n left: 0;\n overflow: hidden;\n position: absolute;\n text-align: center;\n top: -50px;\n font-size: 14px;\n color: #969799;\n line-height: 50px;\n}\n.van-pull-refresh__loading .van-loading {\n width: 16px;\n height: 16px;\n margin-right: 5px;\n}\n.van-pull-refresh__loading span,\n.van-pull-refresh__loading .van-loading {\n vertical-align: middle;\n display: inline-block;\n}\n.van-notify {\n text-align: center;\n box-sizing: border-box;\n padding: 6px 15px;\n font-size: 14px;\n line-height: 20px;\n white-space: pre-wrap;\n}\n.van-toast {\n position: fixed;\n top: 50%;\n left: 50%;\n display: -webkit-box;\n display: -webkit-flex;\n display: flex;\n color: #fff;\n max-width: 70%;\n font-size: 14px;\n line-height: 20px;\n border-radius: 4px;\n word-break: break-all;\n -webkit-box-align: center;\n -webkit-align-items: center;\n align-items: center;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -webkit-flex-direction: column;\n flex-direction: column;\n -webkit-box-pack: center;\n -webkit-justify-content: center;\n justify-content: center;\n box-sizing: content-box;\n -webkit-transform: translate3d(-50%, -50%, 0);\n transform: translate3d(-50%, -50%, 0);\n background-color: rgba(50, 50, 51, 0.88);\n width: -webkit-fit-content;\n width: fit-content;\n white-space: pre-wrap;\n}\n.van-toast--unclickable * {\n pointer-events: none;\n}\n.van-toast--text {\n padding: 8px 12px;\n min-width: 96px;\n}\n.van-toast--default {\n width: 90px;\n padding: 15px;\n min-height: 90px;\n}\n.van-toast--default .van-toast__icon {\n font-size: 48px;\n}\n.van-toast--default .van-loading {\n margin: 10px 0;\n}\n.van-toast--default .van-toast__text {\n padding-top: 5px;\n}\n.van-toast--top {\n top: 50px;\n}\n.van-toast--bottom {\n top: auto;\n bottom: 50px;\n}\n/* high order components */\n.van-swipe-cell {\n overflow: hidden;\n position: relative;\n}\n.van-swipe-cell__left,\n.van-swipe-cell__right {\n top: 0;\n height: 100%;\n position: absolute;\n}\n.van-swipe-cell__left {\n left: 0;\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n}\n.van-swipe-cell__right {\n right: 0;\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n}\n.van-switch-cell {\n padding-top: 9px;\n padding-bottom: 9px;\n}\n.van-switch-cell .van-switch {\n float: right;\n}\n.van-tree-select {\n -webkit-user-select: none;\n user-select: none;\n font-size: 14px;\n position: relative;\n}\n.van-tree-select__nav {\n width: 35%;\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n min-width: 120px;\n overflow: scroll;\n background-color: #fafafa;\n -webkit-overflow-scrolling: touch;\n}\n.van-tree-select__nitem {\n position: relative;\n line-height: 44px;\n padding: 0 9px 0 15px;\n}\n.van-tree-select__nitem--active::after {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n width: 3.6px;\n background-color: #f44;\n content: \'\';\n}\n.van-tree-select__nitem--active {\n font-weight: bold;\n background-color: #fff;\n}\n.van-tree-select__nitem--disabled {\n color: #969799;\n}\n.van-tree-select__nitem--disabled:active::after {\n display: none;\n}\n.van-tree-select__content {\n width: 65%;\n height: 100%;\n padding-left: 15px;\n margin-left: 35%;\n overflow: scroll;\n -webkit-overflow-scrolling: touch;\n background-color: #fff;\n box-sizing: border-box;\n}\n.van-tree-select__item {\n position: relative;\n font-weight: bold;\n line-height: 44px;\n}\n.van-tree-select__item--active {\n color: #f44;\n}\n.van-tree-select__item--disabled,\n.van-tree-select__item--disabled:active {\n color: #c8c9cc;\n}\n.van-tree-select__selected {\n position: absolute;\n top: 0;\n right: 15px;\n bottom: 0;\n height: 24px;\n margin: auto 0;\n line-height: 24px;\n}\n/* business components */\n.van-address-edit__buttons {\n padding: 30px 15px;\n}\n.van-address-edit__buttons .van-button {\n margin-bottom: 15px;\n}\n.van-address-edit-detail {\n padding: 0;\n}\n.van-address-edit-detail__finish {\n color: #1989fa;\n font-size: 12px;\n}\n.van-address-list {\n height: 100%;\n padding-bottom: 100px;\n box-sizing: border-box;\n}\n.van-address-list__add {\n position: fixed;\n left: 0;\n bottom: 0;\n z-index: 9999;\n}\n.van-address-list__disabled-text {\n color: #969799;\n padding: 0 15px;\n font-size: 12px;\n line-height: 30px;\n}\n.van-address-item {\n padding: 15px;\n}\n.van-address-item__value {\n color: #323233;\n padding-right: 34px;\n position: relative;\n}\n.van-address-item .van-radio__label {\n width: 100%;\n margin-left: 0;\n padding-left: 27px;\n box-sizing: border-box;\n}\n.van-address-item .van-radio__icon {\n top: 50%;\n left: 0;\n height: 16px;\n position: absolute;\n line-height: 16px;\n -webkit-transform: translate(0, -50%);\n transform: translate(0, -50%);\n}\n.van-address-item .van-radio__icon .van-icon {\n width: 16px;\n height: 16px;\n font-size: 12px;\n}\n.van-address-item .van-radio__icon--checked .van-icon {\n border-color: #f44;\n background-color: #f44;\n}\n.van-address-item__name {\n font-size: 14px;\n font-weight: 500;\n line-height: 20px;\n margin-bottom: 5px;\n}\n.van-address-item__address {\n font-size: 12px;\n line-height: 16px;\n color: #7d7e80;\n}\n.van-address-item--unswitchable .van-radio__label {\n padding-left: 0;\n}\n.van-address-item--disabled .van-address-item__name,\n.van-address-item--disabled .van-address-item__address {\n color: #969799;\n}\n.van-address-item__edit {\n position: absolute;\n top: 50%;\n right: 15px;\n font-size: 16px;\n -webkit-transform: translate(0, -50%);\n transform: translate(0, -50%);\n}\n.van-card {\n position: relative;\n color: #323233;\n padding: 5px 15px;\n font-size: 12px;\n box-sizing: border-box;\n background-color: #fafafa;\n}\n.van-card:not(:first-child) {\n margin-top: 10px;\n}\n.van-card__header {\n display: -webkit-box;\n display: -webkit-flex;\n display: flex;\n}\n.van-card__thumb {\n display: -webkit-box;\n display: -webkit-flex;\n display: flex;\n position: relative;\n width: 90px;\n height: 90px;\n margin-right: 10px;\n -webkit-box-flex: 0;\n -webkit-flex: none;\n flex: none;\n -webkit-box-align: center;\n -webkit-align-items: center;\n align-items: center;\n -webkit-box-pack: center;\n -webkit-justify-content: center;\n justify-content: center;\n}\n.van-card__thumb img {\n border: none;\n max-width: 100%;\n max-height: 100%;\n}\n.van-card__content {\n position: relative;\n display: -webkit-box;\n display: -webkit-flex;\n display: flex;\n -webkit-box-flex: 1;\n -webkit-flex: 1;\n flex: 1;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -webkit-flex-direction: column;\n flex-direction: column;\n min-width: 0;\n /* hack for flex box ellipsis */\n min-height: 90px;\n}\n.van-card__content--centered {\n -webkit-box-pack: center;\n -webkit-justify-content: center;\n justify-content: center;\n}\n.van-card__title,\n.van-card__desc {\n word-break: break-all;\n}\n.van-card__title {\n line-height: 16px;\n max-height: 32px;\n font-weight: 500;\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n /* autoprefixer: ignore next */\n -webkit-box-orient: vertical;\n}\n.van-card__desc {\n color: #7d7e80;\n max-height: 20px;\n line-height: 20px;\n}\n.van-card__bottom {\n line-height: 20px;\n}\n.van-card__price {\n display: inline-block;\n color: #f44;\n font-weight: 500;\n}\n.van-card__origin-price {\n display: inline-block;\n margin-left: 5px;\n color: #7d7e80;\n font-size: 10px;\n text-decoration: line-through;\n}\n.van-card__num {\n float: right;\n}\n.van-card__tag {\n position: absolute;\n top: 2px;\n left: 0;\n}\n.van-card__footer {\n text-align: right;\n -webkit-box-flex: 0;\n -webkit-flex: none;\n flex: none;\n}\n.van-card__footer .van-button {\n margin-left: 5px;\n}\n.van-contact-card {\n padding: 15px;\n}\n.van-contact-card__value {\n margin-left: 5px;\n line-height: 20px;\n display: inline-block;\n vertical-align: middle;\n}\n.van-contact-card--add .van-contact-card__value {\n line-height: 40px;\n}\n.van-contact-card--add .van-cell__left-icon {\n color: #1989fa;\n font-size: 40px;\n}\n.van-contact-card::before {\n content: \'\';\n left: 0;\n right: 0;\n bottom: 0;\n height: 2px;\n position: absolute;\n background: -webkit-repeating-linear-gradient(135deg, #ff6c6c 0, #ff6c6c 20%, transparent 0, transparent 25%, #1989fa 0, #1989fa 45%, transparent 0, transparent 50%);\n background: repeating-linear-gradient(-45deg, #ff6c6c 0, #ff6c6c 20%, transparent 0, transparent 25%, #1989fa 0, #1989fa 45%, transparent 0, transparent 50%);\n background-size: 80px;\n}\n.van-contact-list {\n height: 100%;\n padding-bottom: 50px;\n box-sizing: border-box;\n}\n.van-contact-list__item {\n padding: 15px;\n}\n.van-contact-list__item-value {\n color: #323233;\n padding-right: 34px;\n position: relative;\n}\n.van-contact-list .van-radio__label {\n margin-left: 27px;\n}\n.van-contact-list .van-radio__icon {\n top: 50%;\n left: 0;\n height: 16px;\n position: absolute;\n line-height: 16px;\n -webkit-transform: translate(0, -50%);\n transform: translate(0, -50%);\n}\n.van-contact-list .van-radio__icon .van-icon {\n width: 16px;\n height: 16px;\n font-size: 12px;\n}\n.van-contact-list .van-radio__icon--checked .van-icon {\n border-color: #f44;\n background-color: #f44;\n}\n.van-contact-list__group {\n height: 100%;\n overflow-y: scroll;\n box-sizing: border-box;\n -webkit-overflow-scrolling: touch;\n}\n.van-contact-list__name {\n font-size: 14px;\n font-weight: 500;\n line-height: 20px;\n}\n.van-contact-list__edit {\n position: absolute;\n top: 50%;\n right: 15px;\n font-size: 16px;\n -webkit-transform: translate(0, -50%);\n transform: translate(0, -50%);\n}\n.van-contact-list__add {\n position: fixed;\n left: 0;\n bottom: 0;\n z-index: 9999;\n}\n.van-contact-edit__buttons {\n padding: 30px 15px;\n}\n.van-contact-edit .van-cell__title {\n max-width: 65px;\n}\n.van-contact-edit .van-button {\n margin-bottom: 15px;\n}\n.van-coupon {\n overflow: hidden;\n border-radius: 4px;\n margin: 0 15px 15px;\n background-color: #fff;\n box-shadow: 0 0 4px rgba(0, 0, 0, 0.1);\n}\n.van-coupon:active {\n background-color: #f2f3f5;\n}\n.van-coupon__content {\n display: -webkit-box;\n display: -webkit-flex;\n display: flex;\n height: 100px;\n padding: 24px 0 0 15px;\n box-sizing: border-box;\n}\n.van-coupon p,\n.van-coupon h2 {\n margin: 0;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.van-coupon h2 {\n height: 34px;\n font-weight: 500;\n line-height: 34px;\n}\n.van-coupon p {\n font-size: 12px;\n line-height: 16px;\n color: #969799;\n}\n.van-coupon__head {\n position: relative;\n min-width: 85px;\n padding-right: 10px;\n}\n.van-coupon__head h2 {\n color: #f44;\n font-size: 24px;\n}\n.van-coupon__head h2 span {\n font-size: 50%;\n}\n.van-coupon__head h2 span:not(:empty) {\n margin-left: 2px;\n}\n.van-coupon__head p {\n white-space: pre-wrap;\n}\n.van-coupon__body {\n -webkit-box-flex: 1;\n -webkit-flex: 1;\n flex: 1;\n position: relative;\n border-radius: 0 4px 4px 0;\n}\n.van-coupon__body h2 {\n font-size: 16px;\n}\n.van-coupon__corner {\n top: 16px;\n right: 15px;\n position: absolute;\n}\n.van-coupon__corner .van-icon {\n border-color: #f44;\n background-color: #f44;\n}\n.van-coupon__description {\n padding: 7px 15px;\n border-top: 1px dashed #ebedf0;\n background-color: #fafafa;\n}\n.van-coupon--disabled:active {\n background-color: #fff;\n}\n.van-coupon--disabled .van-coupon-item__content {\n height: 90px;\n}\n.van-coupon--disabled p,\n.van-coupon--disabled h2,\n.van-coupon--disabled span {\n color: #969799;\n}\n.van-coupon-cell--selected {\n color: #323233;\n}\n.van-coupon-list {\n height: 100%;\n position: relative;\n background-color: #f8f8f8;\n}\n.van-coupon-list__field {\n padding: 7px 15px;\n}\n.van-coupon-list__exchange {\n height: 32px;\n line-height: 30px;\n}\n.van-coupon-list__list {\n overflow-y: auto;\n padding: 15px 0;\n box-sizing: border-box;\n -webkit-overflow-scrolling: touch;\n}\n.van-coupon-list__close {\n left: 0;\n bottom: 0;\n position: absolute;\n font-weight: 500;\n}\n.van-coupon-list__empty {\n padding-top: 60px;\n text-align: center;\n}\n.van-coupon-list__empty p {\n color: #969799;\n margin: 15px 0;\n font-size: 14px;\n line-height: 20px;\n}\n.van-coupon-list__empty img {\n width: 200px;\n height: 200px;\n}\n.van-goods-action {\n left: 0;\n right: 0;\n bottom: 0;\n display: -webkit-box;\n display: -webkit-flex;\n display: flex;\n position: fixed;\n background-color: #fff;\n}\n.van-goods-action--safe-area-inset-bottom {\n padding-bottom: constant(safe-area-inset-bottom);\n padding-bottom: env(safe-area-inset-bottom);\n}\n.van-goods-action-big-btn {\n -webkit-box-flex: 1;\n -webkit-flex: 1;\n flex: 1;\n padding: 0;\n}\n@media (max-width: 321px) {\n .van-goods-action-big-btn {\n font-size: 15px;\n }\n}\n.van-goods-action-mini-btn {\n color: #7d7e80;\n display: -webkit-box;\n display: -webkit-flex;\n display: flex;\n height: 50px;\n font-size: 10px;\n min-width: 15%;\n line-height: 1;\n text-align: center;\n background-color: #fff;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -webkit-flex-direction: column;\n flex-direction: column;\n -webkit-box-pack: center;\n -webkit-justify-content: center;\n justify-content: center;\n}\n.van-goods-action-mini-btn:not(:first-child)::after {\n border-left-width: 1px;\n}\n.van-goods-action-mini-btn:active {\n background-color: #f2f3f5;\n}\n.van-goods-action-mini-btn__icon {\n width: 1em;\n font-size: 20px;\n margin: 0 auto 5px;\n}\n.van-submit-bar {\n left: 0;\n bottom: 0;\n width: 100%;\n z-index: 100;\n position: fixed;\n -webkit-user-select: none;\n user-select: none;\n background-color: #fff;\n}\n.van-submit-bar__tip {\n color: #f56723;\n padding: 10px;\n font-size: 12px;\n line-height: 18px;\n background-color: #fff7cc;\n}\n.van-submit-bar__bar {\n height: 50px;\n display: -webkit-box;\n display: -webkit-flex;\n display: flex;\n font-size: 14px;\n -webkit-box-align: center;\n -webkit-align-items: center;\n align-items: center;\n}\n.van-submit-bar__text {\n -webkit-box-flex: 1;\n -webkit-flex: 1;\n flex: 1;\n font-weight: 500;\n text-align: right;\n color: #323233;\n padding-right: 12px;\n}\n.van-submit-bar__text span {\n display: inline-block;\n}\n.van-submit-bar__price {\n color: #f44;\n font-size: 18px;\n}\n.van-submit-bar__price::first-letter {\n font-size: 14px;\n}\n.van-submit-bar .van-button {\n width: 110px;\n}\n.van-submit-bar--safe-area-inset-bottom {\n padding-bottom: constant(safe-area-inset-bottom);\n padding-bottom: env(safe-area-inset-bottom);\n}\n.van-sku {\n /* sku header */\n /* sku row */\n /* sku stepper */\n /* sku actions */\n}\n.van-sku-container {\n font-size: 14px;\n background: #fff;\n overflow-y: visible;\n max-height: -webkit-max-content;\n max-height: max-content;\n /* avoid androiod keyboard cover fields */\n}\n.van-sku-body {\n max-height: 350px;\n overflow-y: scroll;\n -webkit-overflow-scrolling: touch;\n}\n.van-sku-body::-webkit-scrollbar {\n display: none;\n}\n.van-sku-header {\n margin-left: 15px;\n}\n.van-sku-header__img-wrap {\n position: relative;\n float: left;\n margin-top: -10px;\n width: 80px;\n height: 80px;\n background: #f8f8f8;\n border-radius: 2px;\n}\n.van-sku-header__img-wrap img {\n position: absolute;\n margin: auto;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n max-width: 100%;\n max-height: 100%;\n}\n.van-sku-header__goods-info {\n padding: 10px 60px 10px 10px;\n min-height: 82px;\n overflow: hidden;\n box-sizing: border-box;\n}\n.van-sku__goods-name {\n font-size: 12px;\n}\n.van-sku__price-symbol {\n vertical-align: middle;\n}\n.van-sku__price-num {\n font-size: 16px;\n vertical-align: middle;\n}\n.van-sku__goods-price {\n color: #f44;\n margin-top: 10px;\n vertical-align: middle;\n}\n.van-sku__close-icon {\n top: 10px;\n right: 15px;\n font-size: 20px;\n color: #969799;\n position: absolute;\n text-align: center;\n}\n.van-sku-group-container {\n margin-left: 15px;\n padding: 12px 0 2px;\n}\n.van-sku-group-container--hide-soldout .van-sku-row__item--disabled {\n display: none;\n}\n.van-sku-row {\n margin: 0 15px 10px 0;\n}\n.van-sku-row:last-child {\n margin-bottom: 0;\n}\n.van-sku-row__title {\n padding-bottom: 10px;\n}\n.van-sku-row__item {\n display: inline-block;\n padding: 5px 9px;\n margin: 0 10px 10px 0;\n height: 28px;\n min-width: 52px;\n line-height: 16px;\n font-size: 12px;\n color: #323233;\n text-align: center;\n border: 1px solid #969799;\n border-radius: 3px;\n box-sizing: border-box;\n}\n.van-sku-row__item--active {\n color: #fff;\n border-color: #f44;\n background: #f44;\n}\n.van-sku-row__item--disabled {\n background: #f2f3f5;\n border-color: #ebedf0;\n color: #c8c9cc;\n}\n.van-sku-stepper-stock {\n padding: 12px 0;\n margin-left: 15px;\n}\n.van-sku-stepper-container {\n height: 30px;\n margin-right: 20px;\n}\n.van-sku__stepper {\n float: right;\n}\n.van-sku__stepper-title {\n float: left;\n line-height: 30px;\n}\n.van-sku__stock {\n display: inline-block;\n margin-right: 10px;\n color: #969799;\n font-size: 12px;\n}\n.van-sku__quota {\n display: inline-block;\n color: #f44;\n font-size: 12px;\n}\n.van-sku-messages {\n padding-bottom: 10px;\n background: #f8f8f8;\n}\n.van-sku-messages__image-cell .van-cell__title {\n max-width: 90px;\n}\n.van-sku-messages__image-cell .van-cell__value {\n text-align: left;\n}\n.van-sku-img-uploader {\n display: inline-block;\n}\n.van-sku-img-uploader__header {\n color: #323233;\n padding: 0 10px;\n font-size: 12px;\n line-height: 24px;\n border-radius: 3px;\n border: 1px solid #ebedf0;\n}\n.van-sku-img-uploader__header .van-icon {\n top: 3px;\n margin-right: 5px;\n font-size: 14px;\n}\n.van-sku-img-uploader__img {\n height: 60px;\n width: 60px;\n float: left;\n margin: 10px 10px 0 0;\n position: relative;\n border: 1px solid #ebedf0;\n}\n.van-sku-img-uploader__img img {\n max-width: 100%;\n max-height: 100%;\n top: 50%;\n position: relative;\n -webkit-transform: translateY(-50%);\n transform: translateY(-50%);\n}\n.van-sku-img-uploader__delete {\n position: absolute;\n color: #f44;\n top: -12px;\n right: -14px;\n z-index: 1;\n padding: 6px;\n}\n.van-sku-img-uploader__delete::before {\n border-radius: 14px;\n background-color: #fff;\n}\n.van-sku-img-uploader__uploading {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n margin: auto;\n width: 20px;\n height: 20px;\n}\n.van-sku-actions {\n display: -webkit-box;\n display: -webkit-flex;\n display: flex;\n}\n',""])},function(n,t,e){"use strict";var i=e(25);e.n(i).a},function(n,t,e){(n.exports=e(12)(!1)).push([n.i,"body {\n line-height: 1;\n color: #323233;\n background-color: #f2f3f5;\n font-family: 'PingFang SC', Helvetica, 'STHeiti STXihei', 'Microsoft YaHei', Tohoma, Arial, sans-serif;\n -webkit-font-smoothing: antialiased;\n}\n.van-doc-nav-bar {\n height: 56px;\n line-height: 56px;\n}\n.van-doc-nav-bar .van-nav-bar__title {\n font-size: 17px;\n text-transform: capitalize;\n}\n.van-doc-nav-bar .van-icon {\n font-size: 24px;\n cursor: pointer;\n color: #969799;\n}\n.van-doc-demo-section {\n margin-top: -56px;\n padding-top: 56px;\n}\n",""])},function(n,t){var e;document.createTouch||(document.createTouch=function(n,t,e,o,r,a,s){return new i(t,e,{pageX:o,pageY:r,screenX:a,screenY:s,clientX:o-window.pageXOffset,clientY:r-window.pageYOffset},0,0)}),document.createTouchList||(document.createTouchList=function(){for(var n=o(),t=0;t2?e-2:0),o=2;o=0&&Math.floor(n)===n&&isFinite(t)}function h(t){return r(t)&&"function"==typeof t.then&&"function"==typeof t.catch}function p(t){return null==t?"":Array.isArray(t)||u(t)&&t.toString===l?JSON.stringify(t,null,2):String(t)}function v(t){var n=parseFloat(t);return isNaN(n)?t:n}function b(t,n){for(var e=Object.create(null),i=t.split(","),o=0;o-1)return t.splice(e,1)}}var y=Object.prototype.hasOwnProperty;function x(t,n){return y.call(t,n)}function w(t){var n=Object.create(null);return function(e){return n[e]||(n[e]=t(e))}}var k=/-(\w)/g,_=w((function(t){return t.replace(k,(function(t,n){return n?n.toUpperCase():""}))})),S=w((function(t){return t.charAt(0).toUpperCase()+t.slice(1)})),O=/\B([A-Z])/g,C=w((function(t){return t.replace(O,"-$1").toLowerCase()}));var j=Function.prototype.bind?function(t,n){return t.bind(n)}:function(t,n){function e(e){var i=arguments.length;return i?i>1?t.apply(n,arguments):t.call(n,e):t.call(n)}return e._length=t.length,e};function T(t,n){n=n||0;for(var e=t.length-n,i=new Array(e);e--;)i[e]=t[e+n];return i}function A(t,n){for(var e in n)t[e]=n[e];return t}function z(t){for(var n={},e=0;e0,Z=K&&K.indexOf("edge/")>0,G=(K&&K.indexOf("android"),K&&/iphone|ipad|ipod|ios/.test(K)||"ios"===W),Q=(K&&/chrome\/\d+/.test(K),K&&/phantomjs/.test(K),K&&K.match(/firefox\/(\d+)/)),tt={}.watch,nt=!1;if(Y)try{var et={};Object.defineProperty(et,"passive",{get:function(){nt=!0}}),window.addEventListener("test-passive",null,et)}catch(t){}var it=function(){return void 0===H&&(H=!Y&&!U&&void 0!==t&&(t.process&&"server"===t.process.env.VUE_ENV)),H},ot=Y&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function rt(t){return"function"==typeof t&&/native code/.test(t.toString())}var at,st="undefined"!=typeof Symbol&&rt(Symbol)&&"undefined"!=typeof Reflect&&rt(Reflect.ownKeys);at="undefined"!=typeof Set&&rt(Set)?Set:function(){function t(){this.set=Object.create(null)}return t.prototype.has=function(t){return!0===this.set[t]},t.prototype.add=function(t){this.set[t]=!0},t.prototype.clear=function(){this.set=Object.create(null)},t}();var ct=B,lt=0,ut=function(){this.id=lt++,this.subs=[]};ut.prototype.addSub=function(t){this.subs.push(t)},ut.prototype.removeSub=function(t){g(this.subs,t)},ut.prototype.depend=function(){ut.target&&ut.target.addDep(this)},ut.prototype.notify=function(){var t=this.subs.slice();for(var n=0,e=t.length;n-1)if(r&&!x(o,"default"))a=!1;else if(""===a||a===C(t)){var c=Vt(String,o.type);(c<0||s0&&(dn((c=t(c,(e||"")+"_"+i))[0])&&dn(u)&&(d[l]=mt(u.text+c[0].text),c.shift()),d.push.apply(d,c)):s(c)?dn(u)?d[l]=mt(u.text+c):""!==c&&d.push(mt(c)):dn(c)&&dn(u)?d[l]=mt(u.text+c.text):(a(n._isVList)&&r(c.tag)&&o(c.key)&&r(e)&&(c.key="__vlist"+e+"_"+i+"__"),d.push(c)));return d}(t):void 0}function dn(t){return r(t)&&r(t.text)&&!1===t.isComment}function fn(t,n){if(t){for(var e=Object.create(null),i=st?Reflect.ownKeys(t):Object.keys(t),o=0;o0,a=t?!!t.$stable:!r,s=t&&t.$key;if(t){if(t._normalized)return t._normalized;if(a&&e&&e!==i&&s===e.$key&&!r&&!e.$hasNormal)return e;for(var c in o={},t)t[c]&&"$"!==c[0]&&(o[c]=bn(n,c,t[c]))}else o={};for(var l in n)l in o||(o[l]=mn(n,l));return t&&Object.isExtensible(t)&&(t._normalized=o),V(o,"$stable",a),V(o,"$key",s),V(o,"$hasNormal",r),o}function bn(t,n,e){var i=function(){var t=arguments.length?e.apply(null,arguments):e({});return(t=t&&"object"==typeof t&&!Array.isArray(t)?[t]:un(t))&&(0===t.length||1===t.length&&t[0].isComment)?void 0:t};return e.proxy&&Object.defineProperty(t,n,{get:i,enumerable:!0,configurable:!0}),i}function mn(t,n){return function(){return t[n]}}function gn(t,n){var e,i,o,a,s;if(Array.isArray(t)||"string"==typeof t)for(e=new Array(t.length),i=0,o=t.length;idocument.createEvent("Event").timeStamp&&(ce=function(){return le.now()})}function ue(){var t,n;for(se=ce(),re=!0,ne.sort((function(t,n){return t.id-n.id})),ae=0;aeae&&ne[e].id>t.id;)e--;ne.splice(e+1,0,t)}else ne.push(t);oe||(oe=!0,nn(ue))}}(this)},fe.prototype.run=function(){if(this.active){var t=this.get();if(t!==this.value||c(t)||this.deep){var n=this.value;if(this.value=t,this.user)try{this.cb.call(this.vm,t,n)}catch(t){Ft(t,this.vm,'callback for watcher "'+this.expression+'"')}else this.cb.call(this.vm,t,n)}}},fe.prototype.evaluate=function(){this.value=this.get(),this.dirty=!1},fe.prototype.depend=function(){for(var t=this.deps.length;t--;)this.deps[t].depend()},fe.prototype.teardown=function(){if(this.active){this.vm._isBeingDestroyed||g(this.vm._watchers,this);for(var t=this.deps.length;t--;)this.deps[t].removeSub(this);this.active=!1}};var he={enumerable:!0,configurable:!0,get:B,set:B};function pe(t,n,e){he.get=function(){return this[n][e]},he.set=function(t){this[n][e]=t},Object.defineProperty(t,e,he)}function ve(t){t._watchers=[];var n=t.$options;n.props&&function(t,n){var e=t.$options.propsData||{},i=t._props={},o=t.$options._propKeys=[];t.$parent&&_t(!1);var r=function(r){o.push(r);var a=Mt(r,n,e,t);Ct(i,r,a),r in t||pe(t,"_props",r)};for(var a in n)r(a);_t(!0)}(t,n.props),n.methods&&function(t,n){t.$options.props;for(var e in n)t[e]="function"!=typeof n[e]?B:j(n[e],t)}(t,n.methods),n.data?function(t){var n=t.$options.data;u(n=t._data="function"==typeof n?function(t,n){ft();try{return t.call(n,n)}catch(t){return Ft(t,n,"data()"),{}}finally{ht()}}(n,t):n||{})||(n={});var e=Object.keys(n),i=t.$options.props,o=(t.$options.methods,e.length);for(;o--;){var r=e[o];0,i&&x(i,r)||(a=void 0,36!==(a=(r+"").charCodeAt(0))&&95!==a&&pe(t,"_data",r))}var a;Ot(n,!0)}(t):Ot(t._data={},!0),n.computed&&function(t,n){var e=t._computedWatchers=Object.create(null),i=it();for(var o in n){var r=n[o],a="function"==typeof r?r:r.get;0,i||(e[o]=new fe(t,a||B,B,be)),o in t||me(t,o,r)}}(t,n.computed),n.watch&&n.watch!==tt&&function(t,n){for(var e in n){var i=n[e];if(Array.isArray(i))for(var o=0;o-1:"string"==typeof t?t.split(",").indexOf(n)>-1:!!d(t)&&t.test(n)}function je(t,n){var e=t.cache,i=t.keys,o=t._vnode;for(var r in e){var a=e[r];if(a){var s=Oe(a.componentOptions);s&&!n(s)&&Te(e,r,i,o)}}}function Te(t,n,e,i){var o=t[n];!o||i&&o.tag===i.tag||o.componentInstance.$destroy(),t[n]=null,g(e,n)}!function(t){t.prototype._init=function(t){var n=this;n._uid=we++,n._isVue=!0,t&&t._isComponent?function(t,n){var e=t.$options=Object.create(t.constructor.options),i=n._parentVnode;e.parent=n.parent,e._parentVnode=i;var o=i.componentOptions;e.propsData=o.propsData,e._parentListeners=o.listeners,e._renderChildren=o.children,e._componentTag=o.tag,n.render&&(e.render=n.render,e.staticRenderFns=n.staticRenderFns)}(n,t):n.$options=Dt(ke(n.constructor),t||{},n),n._renderProxy=n,n._self=n,function(t){var n=t.$options,e=n.parent;if(e&&!n.abstract){for(;e.$options.abstract&&e.$parent;)e=e.$parent;e.$children.push(t)}t.$parent=e,t.$root=e?e.$root:t,t.$children=[],t.$refs={},t._watcher=null,t._inactive=null,t._directInactive=!1,t._isMounted=!1,t._isDestroyed=!1,t._isBeingDestroyed=!1}(n),function(t){t._events=Object.create(null),t._hasHookEvent=!1;var n=t.$options._parentListeners;n&&Xn(t,n)}(n),function(t){t._vnode=null,t._staticTrees=null;var n=t.$options,e=t.$vnode=n._parentVnode,o=e&&e.context;t.$slots=hn(n._renderChildren,o),t.$scopedSlots=i,t._c=function(n,e,i,o){return $n(t,n,e,i,o,!1)},t.$createElement=function(n,e,i,o){return $n(t,n,e,i,o,!0)};var r=e&&e.data;Ct(t,"$attrs",r&&r.attrs||i,null,!0),Ct(t,"$listeners",n._parentListeners||i,null,!0)}(n),te(n,"beforeCreate"),function(t){var n=fn(t.$options.inject,t);n&&(_t(!1),Object.keys(n).forEach((function(e){Ct(t,e,n[e])})),_t(!0))}(n),ve(n),function(t){var n=t.$options.provide;n&&(t._provided="function"==typeof n?n.call(t):n)}(n),te(n,"created"),n.$options.el&&n.$mount(n.$options.el)}}(_e),function(t){var n={get:function(){return this._data}},e={get:function(){return this._props}};Object.defineProperty(t.prototype,"$data",n),Object.defineProperty(t.prototype,"$props",e),t.prototype.$set=jt,t.prototype.$delete=Tt,t.prototype.$watch=function(t,n,e){if(u(n))return xe(this,t,n,e);(e=e||{}).user=!0;var i=new fe(this,t,n,e);if(e.immediate)try{n.call(this,i.value)}catch(t){Ft(t,this,'callback for immediate watcher "'+i.expression+'"')}return function(){i.teardown()}}}(_e),function(t){var n=/^hook:/;t.prototype.$on=function(t,e){var i=this;if(Array.isArray(t))for(var o=0,r=t.length;o1?T(e):e;for(var i=T(arguments,1),o='event handler for "'+t+'"',r=0,a=e.length;rparseInt(this.max)&&Te(a,s[0],s,this._vnode)),n.data.keepAlive=!0}return n||t&&t[0]}}};!function(t){var n={get:function(){return R}};Object.defineProperty(t,"config",n),t.util={warn:ct,extend:A,mergeOptions:Dt,defineReactive:Ct},t.set=jt,t.delete=Tt,t.nextTick=nn,t.observable=function(t){return Ot(t),t},t.options=Object.create(null),N.forEach((function(n){t.options[n+"s"]=Object.create(null)})),t.options._base=t,A(t.options.components,ze),function(t){t.use=function(t){var n=this._installedPlugins||(this._installedPlugins=[]);if(n.indexOf(t)>-1)return this;var e=T(arguments,1);return e.unshift(this),"function"==typeof t.install?t.install.apply(t,e):"function"==typeof t&&t.apply(null,e),n.push(t),this}}(t),function(t){t.mixin=function(t){return this.options=Dt(this.options,t),this}}(t),Se(t),function(t){N.forEach((function(n){t[n]=function(t,e){return e?("component"===n&&u(e)&&(e.name=e.name||t,e=this.options._base.extend(e)),"directive"===n&&"function"==typeof e&&(e={bind:e,update:e}),this.options[n+"s"][t]=e,e):this.options[n+"s"][t]}}))}(t)}(_e),Object.defineProperty(_e.prototype,"$isServer",{get:it}),Object.defineProperty(_e.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(_e,"FunctionalRenderContext",{value:En}),_e.version="2.6.12";var Be=b("style,class"),Ie=b("input,textarea,option,select,progress"),Ee=b("contenteditable,draggable,spellcheck"),Pe=b("events,caret,typing,plaintext-only"),Le=b("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,translate,truespeed,typemustmatch,visible"),De="http://www.w3.org/1999/xlink",Ne=function(t){return":"===t.charAt(5)&&"xlink"===t.slice(0,5)},Me=function(t){return Ne(t)?t.slice(6,t.length):""},Re=function(t){return null==t||!1===t};function $e(t){for(var n=t.data,e=t,i=t;r(i.componentInstance);)(i=i.componentInstance._vnode)&&i.data&&(n=Ve(i.data,n));for(;r(e=e.parent);)e&&e.data&&(n=Ve(n,e.data));return function(t,n){if(r(t)||r(n))return Fe(t,He(n));return""}(n.staticClass,n.class)}function Ve(t,n){return{staticClass:Fe(t.staticClass,n.staticClass),class:r(t.class)?[t.class,n.class]:n.class}}function Fe(t,n){return t?n?t+" "+n:t:n||""}function He(t){return Array.isArray(t)?function(t){for(var n,e="",i=0,o=t.length;i-1?fi(t,n,e):Le(n)?Re(e)?t.removeAttribute(n):(e="allowfullscreen"===n&&"EMBED"===t.tagName?"true":n,t.setAttribute(n,e)):Ee(n)?t.setAttribute(n,function(t,n){return Re(n)||"false"===n?"false":"contenteditable"===t&&Pe(n)?n:"true"}(n,e)):Ne(n)?Re(e)?t.removeAttributeNS(De,Me(n)):t.setAttributeNS(De,n,e):fi(t,n,e)}function fi(t,n,e){if(Re(e))t.removeAttribute(n);else{if(X&&!J&&"TEXTAREA"===t.tagName&&"placeholder"===n&&""!==e&&!t.__ieph){t.addEventListener("input",(function n(e){e.stopImmediatePropagation(),t.removeEventListener("input",n)})),t.__ieph=!0}t.setAttribute(n,e)}}var hi={create:ui,update:ui};function pi(t,n){var e=n.elm,i=n.data,a=t.data;if(!(o(i.staticClass)&&o(i.class)&&(o(a)||o(a.staticClass)&&o(a.class)))){var s=$e(n),c=e._transitionClasses;r(c)&&(s=Fe(s,He(c))),s!==e._prevClass&&(e.setAttribute("class",s),e._prevClass=s)}}var vi,bi={create:pi,update:pi};function mi(t,n,e){var i=vi;return function o(){var r=n.apply(null,arguments);null!==r&&xi(t,o,e,i)}}var gi=Wt&&!(Q&&Number(Q[1])<=53);function yi(t,n,e,i){if(gi){var o=se,r=n;n=r._wrapper=function(t){if(t.target===t.currentTarget||t.timeStamp>=o||t.timeStamp<=0||t.target.ownerDocument!==document)return r.apply(this,arguments)}}vi.addEventListener(t,n,nt?{capture:e,passive:i}:e)}function xi(t,n,e,i){(i||vi).removeEventListener(t,n._wrapper||n,e)}function wi(t,n){if(!o(t.data.on)||!o(n.data.on)){var e=n.data.on||{},i=t.data.on||{};vi=n.elm,function(t){if(r(t.__r)){var n=X?"change":"input";t[n]=[].concat(t.__r,t[n]||[]),delete t.__r}r(t.__c)&&(t.change=[].concat(t.__c,t.change||[]),delete t.__c)}(e),sn(e,i,yi,xi,mi,n.context),vi=void 0}}var ki,_i={create:wi,update:wi};function Si(t,n){if(!o(t.data.domProps)||!o(n.data.domProps)){var e,i,a=n.elm,s=t.data.domProps||{},c=n.data.domProps||{};for(e in r(c.__ob__)&&(c=n.data.domProps=A({},c)),s)e in c||(a[e]="");for(e in c){if(i=c[e],"textContent"===e||"innerHTML"===e){if(n.children&&(n.children.length=0),i===s[e])continue;1===a.childNodes.length&&a.removeChild(a.childNodes[0])}if("value"===e&&"PROGRESS"!==a.tagName){a._value=i;var l=o(i)?"":String(i);Oi(a,l)&&(a.value=l)}else if("innerHTML"===e&&Ue(a.tagName)&&o(a.innerHTML)){(ki=ki||document.createElement("div")).innerHTML=""+i+"";for(var u=ki.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;u.firstChild;)a.appendChild(u.firstChild)}else if(i!==s[e])try{a[e]=i}catch(t){}}}}function Oi(t,n){return!t.composing&&("OPTION"===t.tagName||function(t,n){var e=!0;try{e=document.activeElement!==t}catch(t){}return e&&t.value!==n}(t,n)||function(t,n){var e=t.value,i=t._vModifiers;if(r(i)){if(i.number)return v(e)!==v(n);if(i.trim)return e.trim()!==n.trim()}return e!==n}(t,n))}var Ci={create:Si,update:Si},ji=w((function(t){var n={},e=/:(.+)/;return t.split(/;(?![^(]*\))/g).forEach((function(t){if(t){var i=t.split(e);i.length>1&&(n[i[0].trim()]=i[1].trim())}})),n}));function Ti(t){var n=Ai(t.style);return t.staticStyle?A(t.staticStyle,n):n}function Ai(t){return Array.isArray(t)?z(t):"string"==typeof t?ji(t):t}var zi,Bi=/^--/,Ii=/\s*!important$/,Ei=function(t,n,e){if(Bi.test(n))t.style.setProperty(n,e);else if(Ii.test(e))t.style.setProperty(C(n),e.replace(Ii,""),"important");else{var i=Li(n);if(Array.isArray(e))for(var o=0,r=e.length;o-1?n.split(Mi).forEach((function(n){return t.classList.add(n)})):t.classList.add(n);else{var e=" "+(t.getAttribute("class")||"")+" ";e.indexOf(" "+n+" ")<0&&t.setAttribute("class",(e+n).trim())}}function $i(t,n){if(n&&(n=n.trim()))if(t.classList)n.indexOf(" ")>-1?n.split(Mi).forEach((function(n){return t.classList.remove(n)})):t.classList.remove(n),t.classList.length||t.removeAttribute("class");else{for(var e=" "+(t.getAttribute("class")||"")+" ",i=" "+n+" ";e.indexOf(i)>=0;)e=e.replace(i," ");(e=e.trim())?t.setAttribute("class",e):t.removeAttribute("class")}}function Vi(t){if(t){if("object"==typeof t){var n={};return!1!==t.css&&A(n,Fi(t.name||"v")),A(n,t),n}return"string"==typeof t?Fi(t):void 0}}var Fi=w((function(t){return{enterClass:t+"-enter",enterToClass:t+"-enter-to",enterActiveClass:t+"-enter-active",leaveClass:t+"-leave",leaveToClass:t+"-leave-to",leaveActiveClass:t+"-leave-active"}})),Hi=Y&&!J,qi="transition",Yi="transitionend",Ui="animation",Wi="animationend";Hi&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(qi="WebkitTransition",Yi="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(Ui="WebkitAnimation",Wi="webkitAnimationEnd"));var Ki=Y?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(t){return t()};function Xi(t){Ki((function(){Ki(t)}))}function Ji(t,n){var e=t._transitionClasses||(t._transitionClasses=[]);e.indexOf(n)<0&&(e.push(n),Ri(t,n))}function Zi(t,n){t._transitionClasses&&g(t._transitionClasses,n),$i(t,n)}function Gi(t,n,e){var i=to(t,n),o=i.type,r=i.timeout,a=i.propCount;if(!o)return e();var s="transition"===o?Yi:Wi,c=0,l=function(){t.removeEventListener(s,u),e()},u=function(n){n.target===t&&++c>=a&&l()};setTimeout((function(){c0&&(e="transition",u=a,d=r.length):"animation"===n?l>0&&(e="animation",u=l,d=c.length):d=(e=(u=Math.max(a,l))>0?a>l?"transition":"animation":null)?"transition"===e?r.length:c.length:0,{type:e,timeout:u,propCount:d,hasTransform:"transition"===e&&Qi.test(i[qi+"Property"])}}function no(t,n){for(;t.length1}function so(t,n){!0!==n.data.show&&io(n)}var co=function(t){var n,e,i={},c=t.modules,l=t.nodeOps;for(n=0;np?y(t,o(e[m+1])?null:e[m+1].elm,e,h,m,i):h>m&&w(n,f,p)}(f,b,m,e,u):r(m)?(r(t.text)&&l.setTextContent(f,""),y(f,null,m,0,m.length-1,e)):r(b)?w(b,0,b.length-1):r(t.text)&&l.setTextContent(f,""):t.text!==n.text&&l.setTextContent(f,n.text),r(p)&&r(h=p.hook)&&r(h=h.postpatch)&&h(t,n)}}}function O(t,n,e){if(a(e)&&r(t.parent))t.parent.data.pendingInsert=n;else for(var i=0;i-1,a.selected!==r&&(a.selected=r);else if(P(po(a),i))return void(t.selectedIndex!==s&&(t.selectedIndex=s));o||(t.selectedIndex=-1)}}function ho(t,n){return n.every((function(n){return!P(n,t)}))}function po(t){return"_value"in t?t._value:t.value}function vo(t){t.target.composing=!0}function bo(t){t.target.composing&&(t.target.composing=!1,mo(t.target,"input"))}function mo(t,n){var e=document.createEvent("HTMLEvents");e.initEvent(n,!0,!0),t.dispatchEvent(e)}function go(t){return!t.componentInstance||t.data&&t.data.transition?t:go(t.componentInstance._vnode)}var yo={model:lo,show:{bind:function(t,n,e){var i=n.value,o=(e=go(e)).data&&e.data.transition,r=t.__vOriginalDisplay="none"===t.style.display?"":t.style.display;i&&o?(e.data.show=!0,io(e,(function(){t.style.display=r}))):t.style.display=i?r:"none"},update:function(t,n,e){var i=n.value;!i!=!n.oldValue&&((e=go(e)).data&&e.data.transition?(e.data.show=!0,i?io(e,(function(){t.style.display=t.__vOriginalDisplay})):oo(e,(function(){t.style.display="none"}))):t.style.display=i?t.__vOriginalDisplay:"none")},unbind:function(t,n,e,i,o){o||(t.style.display=t.__vOriginalDisplay)}}},xo={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function wo(t){var n=t&&t.componentOptions;return n&&n.Ctor.options.abstract?wo(Yn(n.children)):t}function ko(t){var n={},e=t.$options;for(var i in e.propsData)n[i]=t[i];var o=e._parentListeners;for(var r in o)n[_(r)]=o[r];return n}function _o(t,n){if(/\d-keep-alive$/.test(n.tag))return t("keep-alive",{props:n.componentOptions.propsData})}var So=function(t){return t.tag||qn(t)},Oo=function(t){return"show"===t.name},Co={name:"transition",props:xo,abstract:!0,render:function(t){var n=this,e=this.$slots.default;if(e&&(e=e.filter(So)).length){0;var i=this.mode;0;var o=e[0];if(function(t){for(;t=t.parent;)if(t.data.transition)return!0}(this.$vnode))return o;var r=wo(o);if(!r)return o;if(this._leaving)return _o(t,o);var a="__transition-"+this._uid+"-";r.key=null==r.key?r.isComment?a+"comment":a+r.tag:s(r.key)?0===String(r.key).indexOf(a)?r.key:a+r.key:r.key;var c=(r.data||(r.data={})).transition=ko(this),l=this._vnode,u=wo(l);if(r.data.directives&&r.data.directives.some(Oo)&&(r.data.show=!0),u&&u.data&&!function(t,n){return n.key===t.key&&n.tag===t.tag}(r,u)&&!qn(u)&&(!u.componentInstance||!u.componentInstance._vnode.isComment)){var d=u.data.transition=A({},c);if("out-in"===i)return this._leaving=!0,cn(d,"afterLeave",(function(){n._leaving=!1,n.$forceUpdate()})),_o(t,o);if("in-out"===i){if(qn(r))return l;var f,h=function(){f()};cn(c,"afterEnter",h),cn(c,"enterCancelled",h),cn(d,"delayLeave",(function(t){f=t}))}}return o}}},jo=A({tag:String,moveClass:String},xo);function To(t){t.elm._moveCb&&t.elm._moveCb(),t.elm._enterCb&&t.elm._enterCb()}function Ao(t){t.data.newPos=t.elm.getBoundingClientRect()}function zo(t){var n=t.data.pos,e=t.data.newPos,i=n.left-e.left,o=n.top-e.top;if(i||o){t.data.moved=!0;var r=t.elm.style;r.transform=r.WebkitTransform="translate("+i+"px,"+o+"px)",r.transitionDuration="0s"}}delete jo.mode;var Bo={Transition:Co,TransitionGroup:{props:jo,beforeMount:function(){var t=this,n=this._update;this._update=function(e,i){var o=Zn(t);t.__patch__(t._vnode,t.kept,!1,!0),t._vnode=t.kept,o(),n.call(t,e,i)}},render:function(t){for(var n=this.tag||this.$vnode.data.tag||"span",e=Object.create(null),i=this.prevChildren=this.children,o=this.$slots.default||[],r=this.children=[],a=ko(this),s=0;s-1?Ke[t]=n.constructor===window.HTMLUnknownElement||n.constructor===window.HTMLElement:Ke[t]=/HTMLUnknownElement/.test(n.toString())},A(_e.options.directives,yo),A(_e.options.components,Bo),_e.prototype.__patch__=Y?co:B,_e.prototype.$mount=function(t,n){return function(t,n,e){var i;return t.$el=n,t.$options.render||(t.$options.render=bt),te(t,"beforeMount"),i=function(){t._update(t._render(),e)},new fe(t,i,B,{before:function(){t._isMounted&&!t._isDestroyed&&te(t,"beforeUpdate")}},!0),e=!1,null==t.$vnode&&(t._isMounted=!0,te(t,"mounted")),t}(this,t=t&&Y?function(t){if("string"==typeof t){var n=document.querySelector(t);return n||document.createElement("div")}return t}(t):void 0,n)},Y&&setTimeout((function(){R.devtools&&ot&&ot.emit("init",_e)}),0),n.a=_e}).call(this,e(40),e(131).setImmediate)},function(t,n,e){"use strict";function i(t){return t===window}e.d(n,"d",(function(){return r})),e.d(n,"c",(function(){return a})),e.d(n,"h",(function(){return s})),e.d(n,"b",(function(){return c})),e.d(n,"g",(function(){return l})),e.d(n,"a",(function(){return u})),e.d(n,"e",(function(){return d})),e.d(n,"f",(function(){return f}));var o=/scroll|auto|overlay/i;function r(t,n){void 0===n&&(n=window);for(var e=t;e&&"HTML"!==e.tagName&&"BODY"!==e.tagName&&1===e.nodeType&&e!==n;){var i=window.getComputedStyle(e).overflowY;if(o.test(i))return e;e=e.parentNode}return n}function a(t){var n="scrollTop"in t?t.scrollTop:t.pageYOffset;return Math.max(n,0)}function s(t,n){"scrollTop"in t?t.scrollTop=n:t.scrollTo(t.scrollX,n)}function c(){return window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0}function l(t){s(window,t),s(document.body,t)}function u(t,n){if(i(t))return 0;var e=n?a(n):c();return t.getBoundingClientRect().top+e}function d(t){return i(t)?t.innerHeight:t.getBoundingClientRect().height}function f(t){return i(t)?0:t.getBoundingClientRect().top}},function(t,n,e){"use strict";e.d(n,"a",(function(){return o})),e.d(n,"b",(function(){return r}));var i=/-(\w)/g;function o(t){return t.replace(i,(function(t,n){return n.toUpperCase()}))}function r(t,n){void 0===n&&(n=2);for(var e=t+"";e.lengthi?"horizontal":i>e?"vertical":""))},resetTouchStatus:function(){this.direction="",this.deltaX=0,this.deltaY=0,this.offsetX=0,this.offsetY=0},bindTouchEvent:function(t){var n=this.onTouchStart,e=this.onTouchMove,o=this.onTouchEnd;Object(i.b)(t,"touchstart",n),Object(i.b)(t,"touchmove",e),o&&(Object(i.b)(t,"touchend",o),Object(i.b)(t,"touchcancel",o))}}}},function(t,n,e){"use strict";var i=e(4),o=e.n(i),r=e(30),a=e(23),s=e(3),c=Object(r.a)("loading"),l=c[0],u=c[1];function d(t,n){if("spinner"===n.type){for(var e=[],i=0;i<12;i++)e.push(t("i"));return e}return t("svg",{class:u("circular"),attrs:{viewBox:"25 25 50 50"}},[t("circle",{attrs:{cx:"50",cy:"50",r:"20",fill:"none"}})])}function f(t,n,e){if(e.default){var i,o={fontSize:Object(a.a)(n.textSize),color:null!=(i=n.textColor)?i:n.color};return t("span",{class:u("text"),style:o},[e.default()])}}function h(t,n,e,i){var r=n.color,c=n.size,l=n.type,h={color:r};if(c){var p=Object(a.a)(c);h.width=p,h.height=p}return t("div",o()([{class:u([l,{vertical:n.vertical}])},Object(s.b)(i,!0)]),[t("span",{class:u("spinner",l),style:h},[d(t,n)]),f(t,n,e)])}h.props={color:String,size:[Number,String],vertical:Boolean,textSize:[Number,String],textColor:String,type:{type:String,default:"circular"}},n.a=l(h)},function(t,n,e){"use strict";e.d(n,"a",(function(){return r}));var i=e(8),o=0;function r(t){var n="binded_"+o++;function e(){this[n]||(t.call(this,i.b,!0),this[n]=!0)}function r(){this[n]&&(t.call(this,i.a,!1),this[n]=!1)}return{mounted:e,activated:e,deactivated:r,beforeDestroy:r}}},function(t,n,e){"use strict";var i=e(2),o=e(11),r=e(30),a=e(1),s=0;var c=e(22),l=e(7),u=e(17),d=Object(r.a)("toast"),f=d[0],h=d[1],p=f({mixins:[Object(c.a)()],props:{icon:String,className:null,iconPrefix:String,loadingType:String,forbidClick:Boolean,closeOnClick:Boolean,message:[Number,String],type:{type:String,default:"text"},position:{type:String,default:"middle"},transition:{type:String,default:"van-fade"},lockScroll:{type:Boolean,default:!1}},data:function(){return{clickable:!1}},mounted:function(){this.toggleClickable()},destroyed:function(){this.toggleClickable()},watch:{value:"toggleClickable",forbidClick:"toggleClickable"},methods:{onClick:function(){this.closeOnClick&&this.close()},toggleClickable:function(){var t=this.value&&this.forbidClick;this.clickable!==t&&(this.clickable=t,t?(s||document.body.classList.add("van-toast--unclickable"),s++):--s||document.body.classList.remove("van-toast--unclickable"))},onAfterEnter:function(){this.$emit("opened"),this.onOpened&&this.onOpened()},onAfterLeave:function(){this.$emit("closed")},genIcon:function(){var t=this.$createElement,n=this.icon,e=this.type,i=this.iconPrefix,o=this.loadingType;return n||"success"===e||"fail"===e?t(l.a,{class:h("icon"),attrs:{classPrefix:i,name:n||e}}):"loading"===e?t(u.a,{class:h("loading"),attrs:{type:o}}):void 0},genMessage:function(){var t=this.$createElement,n=this.type,e=this.message;if(Object(a.c)(e)&&""!==e)return"html"===n?t("div",{class:h("text"),domProps:{innerHTML:e}}):t("div",{class:h("text")},[e])}},render:function(){var t,n=arguments[0];return n("transition",{attrs:{name:this.transition},on:{afterEnter:this.onAfterEnter,afterLeave:this.onAfterLeave}},[n("div",{directives:[{name:"show",value:this.value}],class:[h([this.position,(t={},t[this.type]=!this.icon,t)]),this.className],on:{click:this.onClick}},[this.genIcon(),this.genMessage()])])}}),v=e(34),b={icon:"",type:"text",mask:!1,value:!0,message:"",className:"",overlay:!1,onClose:null,onOpened:null,duration:2e3,iconPrefix:void 0,position:"middle",transition:"van-fade",forbidClick:!1,loadingType:void 0,getContainer:"body",overlayStyle:null,closeOnClick:!1,closeOnClickOverlay:!1},m={},g=[],y=!1,x=Object(i.a)({},b);function w(t){return Object(a.f)(t)?t:{message:t}}function k(){if(a.h)return{};if(!(g=g.filter((function(t){return!t.$el.parentNode||(n=t.$el,document.body.contains(n));var n}))).length||y){var t=new(o.a.extend(p))({el:document.createElement("div")});t.$on("input",(function(n){t.value=n})),g.push(t)}return g[g.length-1]}function _(t){void 0===t&&(t={});var n=k();return n.value&&n.updateZIndex(),t=w(t),(t=Object(i.a)({},x,m[t.type||x.type],t)).clear=function(){n.value=!1,t.onClose&&(t.onClose(),t.onClose=null),y&&!a.h&&n.$on("closed",(function(){clearTimeout(n.timer),g=g.filter((function(t){return t!==n})),Object(v.a)(n.$el),n.$destroy()}))},Object(i.a)(n,function(t){return Object(i.a)({},t,{overlay:t.mask||t.overlay,mask:void 0,duration:void 0})}(t)),clearTimeout(n.timer),t.duration>0&&(n.timer=setTimeout((function(){n.clear()}),t.duration)),n}["loading","success","fail"].forEach((function(t){var n;_[t]=(n=t,function(t){return _(Object(i.a)({type:n},w(t)))})})),_.clear=function(t){g.length&&(t?(g.forEach((function(t){t.clear()})),g=[]):y?g.shift().clear():g[0].clear())},_.setDefaultOptions=function(t,n){"string"==typeof t?m[t]=n:Object(i.a)(x,t)},_.resetDefaultOptions=function(t){"string"==typeof t?m[t]=null:(x=Object(i.a)({},b),m={})},_.allowMultiple=function(t){void 0===t&&(t=!0),y=t},_.install=function(){o.a.use(p)},o.a.prototype.$toast=_;n.a=_},function(t,n,e){"use strict";e.d(n,"a",(function(){return i})),e.d(n,"b",(function(){return o}));var i={QUOTA_LIMIT:0,STOCK_LIMIT:1},o="";n.c={LIMIT_TYPE:i,UNSELECTED_SKU_VALUE_ID:o}},function(t,n,e){"use strict";var i=e(4),o=e.n(i),r=e(30),a=e(1),s=e(3),c=Object(r.a)("info"),l=c[0],u=c[1];function d(t,n,e,i){var r=n.dot,c=n.info,l=Object(a.c)(c)&&""!==c;if(r||l)return t("div",o()([{class:u({dot:r})},Object(s.b)(i,!0)]),[r?"":n.info])}d.props={dot:Boolean,info:[Number,String]},n.a=l(d)},function(t,n,e){"use strict";e.d(n,"b",(function(){return g})),e.d(n,"a",(function(){return y}));var i={zIndex:2e3,lockCount:0,stack:[],find:function(t){return this.stack.filter((function(n){return n.vm===t}))[0]},remove:function(t){var n=this.find(t);if(n){n.vm=null,n.overlay=null;var e=this.stack.indexOf(n);this.stack.splice(e,1)}}},o=e(2),r=e(37),a=e(3),s=e(34),c={className:"",customStyle:{}};function l(t){var n=i.find(t);if(n){var e=t.$el,r=n.config,a=n.overlay;e&&e.parentNode&&e.parentNode.insertBefore(a.$el,e),Object(o.a)(a,c,r,{show:!0})}}function u(t,n){var e=i.find(t);if(e)e.config=n;else{var o=function(t){return Object(a.c)(r.a,{on:{click:function(){t.$emit("click-overlay"),t.closeOnClickOverlay&&(t.onClickOverlay?t.onClickOverlay():t.close())}}})}(t);i.stack.push({vm:t,config:n,overlay:o})}l(t)}function d(t){var n=i.find(t);n&&(n.overlay.show=!1)}var f=e(8),h=e(12),p=e(16),v=e(33),b=e(18),m={mixins:[Object(b.a)((function(t,n){this.handlePopstate(n&&this.closeOnPopstate)}))],props:{closeOnPopstate:Boolean},data:function(){return{bindStatus:!1}},watch:{closeOnPopstate:function(t){this.handlePopstate(t)}},methods:{onPopstate:function(){this.close(),this.shouldReopen=!1},handlePopstate:function(t){this.$isServer||this.bindStatus!==t&&(this.bindStatus=t,(t?f.b:f.a)(window,"popstate",this.onPopstate))}}},g={transitionAppear:Boolean,value:Boolean,overlay:Boolean,overlayStyle:Object,overlayClass:String,closeOnClickOverlay:Boolean,zIndex:[Number,String],lockScroll:{type:Boolean,default:!0},lazyRender:{type:Boolean,default:!0}};function y(t){return void 0===t&&(t={}),{mixins:[p.a,m,Object(v.a)({afterPortal:function(){this.overlay&&l()}})],provide:function(){return{vanPopup:this}},props:g,data:function(){return this.onReopenCallback=[],{inited:this.value}},computed:{shouldRender:function(){return this.inited||!this.lazyRender}},watch:{value:function(n){var e=n?"open":"close";this.inited=this.inited||this.value,this[e](),t.skipToggleEvent||this.$emit(e)},overlay:"renderOverlay"},mounted:function(){this.value&&this.open()},activated:function(){this.shouldReopen&&(this.$emit("input",!0),this.shouldReopen=!1)},beforeDestroy:function(){var t,n;t=this,(n=i.find(t))&&(Object(s.a)(n.overlay.$el),i.remove(t)),this.opened&&this.removeLock(),this.getContainer&&Object(s.a)(this.$el)},deactivated:function(){this.value&&(this.close(),this.shouldReopen=!0)},methods:{open:function(){this.$isServer||this.opened||(void 0!==this.zIndex&&(i.zIndex=this.zIndex),this.opened=!0,this.renderOverlay(),this.addLock(),this.onReopenCallback.forEach((function(t){t()})))},addLock:function(){this.lockScroll&&(Object(f.b)(document,"touchstart",this.touchStart),Object(f.b)(document,"touchmove",this.onTouchMove),i.lockCount||document.body.classList.add("van-overflow-hidden"),i.lockCount++)},removeLock:function(){this.lockScroll&&i.lockCount&&(i.lockCount--,Object(f.a)(document,"touchstart",this.touchStart),Object(f.a)(document,"touchmove",this.onTouchMove),i.lockCount||document.body.classList.remove("van-overflow-hidden"))},close:function(){this.opened&&(d(this),this.opened=!1,this.removeLock(),this.$emit("input",!1))},onTouchMove:function(t){this.touchMove(t);var n=this.deltaY>0?"10":"01",e=Object(h.d)(t.target,this.$el),i=e.scrollHeight,o=e.offsetHeight,r=e.scrollTop,a="11";0===r?a=o>=i?"00":"01":r+o>=i&&(a="10"),"11"===a||"vertical"!==this.direction||parseInt(a,2)&parseInt(n,2)||Object(f.c)(t,!0)},renderOverlay:function(){var t=this;!this.$isServer&&this.value&&this.$nextTick((function(){t.updateZIndex(t.overlay?1:0),t.overlay?u(t,{zIndex:i.zIndex++,duration:t.duration,className:t.overlayClass,customStyle:t.overlayStyle}):d(t)}))},updateZIndex:function(t){void 0===t&&(t=0),this.$el.style.zIndex=++i.zIndex+t},onReopen:function(t){this.onReopenCallback.push(t)}}}}},function(t,n,e){"use strict";e.d(n,"a",(function(){return a})),e.d(n,"b",(function(){return c}));var i,o=e(1),r=e(26);function a(t){if(Object(o.c)(t))return t=String(t),Object(r.b)(t)?t+"px":t}function s(t){return+(t=t.replace(/rem/g,""))*function(){if(!i){var t=document.documentElement,n=t.style.fontSize||window.getComputedStyle(t).fontSize;i=parseFloat(n)}return i}()}function c(t){if("number"==typeof t)return t;if(o.b){if(-1!==t.indexOf("rem"))return s(t);if(-1!==t.indexOf("vw"))return function(t){return+(t=t.replace(/vw/g,""))*window.innerWidth/100}(t);if(-1!==t.indexOf("vh"))return function(t){return+(t=t.replace(/vh/g,""))*window.innerHeight/100}(t)}return parseFloat(t)}},function(t,n,e){"use strict";var i=e(4),o=e.n(i),r=e(30),a=e(1),s=e(23),c=e(7),l=Object(r.a)("image"),u=l[0],d=l[1];n.a=u({props:{src:String,fit:String,alt:String,round:Boolean,width:[Number,String],height:[Number,String],radius:[Number,String],lazyLoad:Boolean,iconPrefix:String,showError:{type:Boolean,default:!0},showLoading:{type:Boolean,default:!0},errorIcon:{type:String,default:"photo-fail"},loadingIcon:{type:String,default:"photo"}},data:function(){return{loading:!0,error:!1}},watch:{src:function(){this.loading=!0,this.error=!1}},computed:{style:function(){var t={};return Object(a.c)(this.width)&&(t.width=Object(s.a)(this.width)),Object(a.c)(this.height)&&(t.height=Object(s.a)(this.height)),Object(a.c)(this.radius)&&(t.overflow="hidden",t.borderRadius=Object(s.a)(this.radius)),t}},created:function(){var t=this.$Lazyload;t&&a.b&&(t.$on("loaded",this.onLazyLoaded),t.$on("error",this.onLazyLoadError))},beforeDestroy:function(){var t=this.$Lazyload;t&&(t.$off("loaded",this.onLazyLoaded),t.$off("error",this.onLazyLoadError))},methods:{onLoad:function(t){this.loading=!1,this.$emit("load",t)},onLazyLoaded:function(t){t.el===this.$refs.image&&this.loading&&this.onLoad()},onLazyLoadError:function(t){t.el!==this.$refs.image||this.error||this.onError()},onError:function(t){this.error=!0,this.loading=!1,this.$emit("error",t)},onClick:function(t){this.$emit("click",t)},genPlaceholder:function(){var t=this.$createElement;return this.loading&&this.showLoading?t("div",{class:d("loading")},[this.slots("loading")||t(c.a,{attrs:{name:this.loadingIcon,classPrefix:this.iconPrefix},class:d("loading-icon")})]):this.error&&this.showError?t("div",{class:d("error")},[this.slots("error")||t(c.a,{attrs:{name:this.errorIcon,classPrefix:this.iconPrefix},class:d("error-icon")})]):void 0},genImage:function(){var t=this.$createElement,n={class:d("img"),attrs:{alt:this.alt},style:{objectFit:this.fit}};if(!this.error)return this.lazyLoad?t("img",o()([{ref:"image",directives:[{name:"lazy",value:this.src}]},n])):t("img",o()([{attrs:{src:this.src},on:{load:this.onLoad,error:this.onError}},n]))}},render:function(){var t=arguments[0];return t("div",{class:d({round:this.round}),style:this.style,on:{click:this.onClick}},[this.genImage(),this.genPlaceholder(),this.slots()])}})},function(t,n,e){"use strict";var i=e(11),o=e(1),r=Object.prototype.hasOwnProperty;function a(t,n){return Object.keys(n).forEach((function(e){!function(t,n,e){var i=n[e];Object(o.c)(i)&&(r.call(t,e)&&Object(o.f)(i)?t[e]=a(Object(t[e]),n[e]):t[e]=i)}(t,n,e)})),t}var s=i.a.prototype,c=i.a.util.defineReactive;c(s,"$vantLang","zh-CN"),c(s,"$vantMessages",{"zh-CN":{name:"姓名",tel:"电话",save:"保存",confirm:"确认",cancel:"取消",delete:"删除",complete:"完成",loading:"加载中...",telEmpty:"请填写电话",nameEmpty:"请填写姓名",nameInvalid:"请输入正确的姓名",confirmDelete:"确定要删除吗",telInvalid:"请输入正确的手机号",vanCalendar:{end:"结束",start:"开始",title:"日期选择",confirm:"确定",startEnd:"开始/结束",weekdays:["日","一","二","三","四","五","六"],monthTitle:function(t,n){return t+"年"+n+"月"},rangePrompt:function(t){return"选择天数不能超过 "+t+" 天"}},vanCascader:{select:"请选择"},vanContactCard:{addText:"添加联系人"},vanContactList:{addText:"新建联系人"},vanPagination:{prev:"上一页",next:"下一页"},vanPullRefresh:{pulling:"下拉即可刷新...",loosing:"释放即可刷新..."},vanSubmitBar:{label:"合计:"},vanCoupon:{unlimited:"无使用门槛",discount:function(t){return t+"折"},condition:function(t){return"满"+t+"元可用"}},vanCouponCell:{title:"优惠券",tips:"暂无可用",count:function(t){return t+"张可用"}},vanCouponList:{empty:"暂无优惠券",exchange:"兑换",close:"不使用优惠券",enable:"可用",disabled:"不可用",placeholder:"请输入优惠码"},vanAddressEdit:{area:"地区",postal:"邮政编码",areaEmpty:"请选择地区",addressEmpty:"请填写详细地址",postalEmpty:"邮政编码格式不正确",defaultAddress:"设为默认收货地址",telPlaceholder:"收货人手机号",namePlaceholder:"收货人姓名",areaPlaceholder:"选择省 / 市 / 区"},vanAddressEditDetail:{label:"详细地址",placeholder:"街道门牌、楼层房间号等信息"},vanAddressList:{add:"新增地址"}}});n.a={messages:function(){return s.$vantMessages[s.$vantLang]},use:function(t,n){var e;s.$vantLang=t,this.add(((e={})[t]=n,e))},add:function(t){void 0===t&&(t={}),a(s.$vantMessages,t)}}},function(t,n,e){"use strict";function i(t){return/^\d+(\.\d+)?$/.test(t)}function o(t){return Number.isNaN?Number.isNaN(t):t!=t}e.d(n,"b",(function(){return i})),e.d(n,"a",(function(){return o}))},function(t,n,e){"use strict";function i(t){var n=window.getComputedStyle(t),e="none"===n.display,i=null===t.offsetParent&&"fixed"!==n.position;return e||i}e.d(n,"a",(function(){return i}))},function(t,n,e){"use strict";var i=e(2),o=e(11),r=e(30),a=Object(r.a)("image-preview"),s=a[0],c=a[1],l=e(22),u=e(16),d=e(18),f=e(7),h=e(38),p=e(14),v=e(8),b=e(24),m=e(17),g=e(39);function y(t){return Math.sqrt(Math.pow(t[0].clientX-t[1].clientX,2)+Math.pow(t[0].clientY-t[1].clientY,2))}var x,w={mixins:[u.a],props:{src:String,show:Boolean,active:Number,minZoom:[Number,String],maxZoom:[Number,String],rootWidth:Number,rootHeight:Number},data:function(){return{scale:1,moveX:0,moveY:0,moving:!1,zooming:!1,imageRatio:0,displayWidth:0,displayHeight:0}},computed:{vertical:function(){var t=this.rootWidth,n=this.rootHeight/t;return this.imageRatio>n},imageStyle:function(){var t=this.scale,n={transitionDuration:this.zooming||this.moving?"0s":".3s"};if(1!==t){var e=this.moveX/t,i=this.moveY/t;n.transform="scale("+t+", "+t+") translate("+e+"px, "+i+"px)"}return n},maxMoveX:function(){if(this.imageRatio){var t=this.vertical?this.rootHeight/this.imageRatio:this.rootWidth;return Math.max(0,(this.scale*t-this.rootWidth)/2)}return 0},maxMoveY:function(){if(this.imageRatio){var t=this.vertical?this.rootHeight:this.rootWidth*this.imageRatio;return Math.max(0,(this.scale*t-this.rootHeight)/2)}return 0}},watch:{active:"resetScale",show:function(t){t||this.resetScale()}},mounted:function(){this.bindTouchEvent(this.$el)},methods:{resetScale:function(){this.setScale(1),this.moveX=0,this.moveY=0},setScale:function(t){(t=Object(p.c)(t,+this.minZoom,+this.maxZoom))!==this.scale&&(this.scale=t,this.$emit("scale",{scale:this.scale,index:this.active}))},toggleScale:function(){var t=this.scale>1?1:2;this.setScale(t),this.moveX=0,this.moveY=0},onTouchStart:function(t){var n=t.touches,e=this.offsetX,i=void 0===e?0:e;this.touchStart(t),this.touchStartTime=new Date,this.fingerNum=n.length,this.startMoveX=this.moveX,this.startMoveY=this.moveY,this.moving=1===this.fingerNum&&1!==this.scale,this.zooming=2===this.fingerNum&&!i,this.zooming&&(this.startScale=this.scale,this.startDistance=y(t.touches))},onTouchMove:function(t){var n=t.touches;if(this.touchMove(t),(this.moving||this.zooming)&&Object(v.c)(t,!0),this.moving){var e=this.deltaX+this.startMoveX,i=this.deltaY+this.startMoveY;this.moveX=Object(p.c)(e,-this.maxMoveX,this.maxMoveX),this.moveY=Object(p.c)(i,-this.maxMoveY,this.maxMoveY)}if(this.zooming&&2===n.length){var o=y(n),r=this.startScale*o/this.startDistance;this.setScale(r)}},onTouchEnd:function(t){var n=!1;(this.moving||this.zooming)&&(n=!0,this.moving&&this.startMoveX===this.moveX&&this.startMoveY===this.moveY&&(n=!1),t.touches.length||(this.zooming&&(this.moveX=Object(p.c)(this.moveX,-this.maxMoveX,this.maxMoveX),this.moveY=Object(p.c)(this.moveY,-this.maxMoveY,this.maxMoveY),this.zooming=!1),this.moving=!1,this.startMoveX=0,this.startMoveY=0,this.startScale=1,this.scale<1&&this.resetScale())),Object(v.c)(t,n),this.checkTap(),this.resetTouchStatus()},checkTap:function(){var t=this;if(!(this.fingerNum>1)){var n=this.offsetX,e=void 0===n?0:n,i=this.offsetY,o=void 0===i?0:i,r=new Date-this.touchStartTime;e<5&&o<5&&r<250&&(this.doubleTapTimer?(clearTimeout(this.doubleTapTimer),this.doubleTapTimer=null,this.toggleScale()):this.doubleTapTimer=setTimeout((function(){t.$emit("close"),t.doubleTapTimer=null}),250))}},onLoad:function(t){var n=t.target,e=n.naturalWidth,i=n.naturalHeight;this.imageRatio=i/e}},render:function(){var t=arguments[0],n={loading:function(){return t(m.a,{attrs:{type:"spinner"}})}};return t(g.a,{class:c("swipe-item")},[t(b.a,{attrs:{src:this.src,fit:"contain"},class:c("image",{vertical:this.vertical}),style:this.imageStyle,scopedSlots:n,on:{load:this.onLoad}})])}},k=s({mixins:[u.a,Object(l.a)({skipToggleEvent:!0}),Object(d.a)((function(t){t(window,"resize",this.resize,!0),t(window,"orientationchange",this.resize,!0)}))],props:{className:null,closeable:Boolean,asyncClose:Boolean,overlayStyle:Object,showIndicators:Boolean,images:{type:Array,default:function(){return[]}},loop:{type:Boolean,default:!0},overlay:{type:Boolean,default:!0},minZoom:{type:[Number,String],default:1/3},maxZoom:{type:[Number,String],default:3},transition:{type:String,default:"van-fade"},showIndex:{type:Boolean,default:!0},swipeDuration:{type:[Number,String],default:300},startPosition:{type:[Number,String],default:0},overlayClass:{type:String,default:c("overlay")},closeIcon:{type:String,default:"clear"},closeOnPopstate:{type:Boolean,default:!0},closeIconPosition:{type:String,default:"top-right"}},data:function(){return{active:0,rootWidth:0,rootHeight:0,doubleClickTimer:null}},mounted:function(){this.resize()},watch:{startPosition:"setActive",value:function(t){var n=this;t?(this.setActive(+this.startPosition),this.$nextTick((function(){n.resize(),n.$refs.swipe.swipeTo(+n.startPosition,{immediate:!0})}))):this.$emit("close",{index:this.active,url:this.images[this.active]})}},methods:{resize:function(){if(this.$el&&this.$el.getBoundingClientRect){var t=this.$el.getBoundingClientRect();this.rootWidth=t.width,this.rootHeight=t.height}},emitClose:function(){this.asyncClose||this.$emit("input",!1)},emitScale:function(t){this.$emit("scale",t)},setActive:function(t){t!==this.active&&(this.active=t,this.$emit("change",t))},genIndex:function(){var t=this.$createElement;if(this.showIndex)return t("div",{class:c("index")},[this.slots("index",{index:this.active})||this.active+1+" / "+this.images.length])},genCover:function(){var t=this.$createElement,n=this.slots("cover");if(n)return t("div",{class:c("cover")},[n])},genImages:function(){var t=this,n=this.$createElement;return n(h.a,{ref:"swipe",attrs:{lazyRender:!0,loop:this.loop,duration:this.swipeDuration,initialSwipe:this.startPosition,showIndicators:this.showIndicators,indicatorColor:"white"},class:c("swipe"),on:{change:this.setActive}},[this.images.map((function(e){return n(w,{attrs:{src:e,show:t.value,active:t.active,maxZoom:t.maxZoom,minZoom:t.minZoom,rootWidth:t.rootWidth,rootHeight:t.rootHeight},on:{scale:t.emitScale,close:t.emitClose}})}))])},genClose:function(){var t=this.$createElement;if(this.closeable)return t(f.a,{attrs:{role:"button",name:this.closeIcon},class:c("close-icon",this.closeIconPosition),on:{click:this.emitClose}})},onClosed:function(){this.$emit("closed")},swipeTo:function(t,n){this.$refs.swipe&&this.$refs.swipe.swipeTo(t,n)}},render:function(){var t=arguments[0];return t("transition",{attrs:{name:this.transition},on:{afterLeave:this.onClosed}},[this.shouldRender?t("div",{directives:[{name:"show",value:this.value}],class:[c(),this.className]},[this.genClose(),this.genImages(),this.genIndex(),this.genCover()]):null])}}),_=e(1),S={loop:!0,value:!0,images:[],maxZoom:3,minZoom:1/3,onClose:null,onChange:null,className:"",showIndex:!0,closeable:!1,closeIcon:"clear",asyncClose:!1,transition:"van-fade",getContainer:"body",overlayStyle:null,startPosition:0,swipeDuration:300,showIndicators:!1,closeOnPopstate:!0,closeIconPosition:"top-right"},O=function(t,n){if(void 0===n&&(n=0),!_.h){x||(x=new(o.a.extend(k))({el:document.createElement("div")}),document.body.appendChild(x.$el),x.$on("change",(function(t){x.onChange&&x.onChange(t)})),x.$on("scale",(function(t){x.onScale&&x.onScale(t)})));var e=Array.isArray(t)?{images:t,startPosition:n}:t;return Object(i.a)(x,S,e),x.$once("input",(function(t){x.value=t})),x.$once("closed",(function(){x.images=[]})),e.onClose&&(x.$off("close"),x.$once("close",e.onClose)),x}};O.Component=k,O.install=function(){o.a.use(k)};n.a=O},function(t,n,e){"use strict";e.d(n,"a",(function(){return o}));var i=e(1);function o(t){if(!Object(i.c)(t))return t;if(Array.isArray(t))return t.map((function(t){return o(t)}));if("object"==typeof t){var n={};return Object.keys(t).forEach((function(e){n[e]=o(t[e])})),n}return t}},function(t,n,e){"use strict";function i(t){return function(n,e){return n&&"string"!=typeof n&&(e=n,n=""),""+(n=n?t+"__"+n:t)+function t(n,e){return e?"string"==typeof e?" "+n+"--"+e:Array.isArray(e)?e.reduce((function(e,i){return e+t(n,i)}),""):Object.keys(e).reduce((function(i,o){return i+(e[o]?t(n,o):"")}),""):""}(n,e)}}e.d(n,"a",(function(){return f}));var o=e(1),r=e(13),a={methods:{slots:function(t,n){void 0===t&&(t="default");var e=this.$slots,i=this.$scopedSlots[t];return i?i(n):e[t]}}};function s(t){var n=this.name;t.component(n,this),t.component(Object(r.a)("-"+n),this)}function c(t){return{functional:!0,props:t.props,model:t.model,render:function(n,e){return t(n,e.props,function(t){var n=t.scopedSlots||t.data.scopedSlots||{},e=t.slots();return Object.keys(e).forEach((function(t){n[t]||(n[t]=function(){return e[t]})})),n}(e),e)}}}function l(t){return function(n){return Object(o.e)(n)&&(n=c(n)),n.functional||(n.mixins=n.mixins||[],n.mixins.push(a)),n.name=t,n.install=s,n}}var u=e(25);function d(t){var n=Object(r.a)(t)+".";return function(t){for(var e=u.a.messages(),i=Object(o.a)(e,n+t)||Object(o.a)(e,t),r=arguments.length,a=new Array(r>1?r-1:0),s=1;s-1}function o(t,n){return i(t)&&t._isRouter&&(null==n||t.type===n)}function r(t,n){for(var e in n)t[e]=n[e];return t}var a={name:"RouterView",functional:!0,props:{name:{type:String,default:"default"}},render:function(t,n){var e=n.props,i=n.children,o=n.parent,a=n.data;a.routerView=!0;for(var c=o.$createElement,l=e.name,u=o.$route,d=o._routerViewCache||(o._routerViewCache={}),f=0,h=!1;o&&o._routerRoot!==o;){var p=o.$vnode?o.$vnode.data:{};p.routerView&&f++,p.keepAlive&&o._directInactive&&o._inactive&&(h=!0),o=o.$parent}if(a.routerViewDepth=f,h){var v=d[l],b=v&&v.component;return b?(v.configProps&&s(b,a,v.route,v.configProps),c(b,a,i)):c()}var m=u.matched[f],g=m&&m.components[l];if(!m||!g)return d[l]=null,c();d[l]={component:g},a.registerRouteInstance=function(t,n){var e=m.instances[l];(n&&e!==t||!n&&e===t)&&(m.instances[l]=n)},(a.hook||(a.hook={})).prepatch=function(t,n){m.instances[l]=n.componentInstance},a.hook.init=function(t){t.data.keepAlive&&t.componentInstance&&t.componentInstance!==m.instances[l]&&(m.instances[l]=t.componentInstance)};var y=m.props&&m.props[l];return y&&(r(d[l],{route:u,configProps:y}),s(g,a,u,y)),c(g,a,i)}};function s(t,n,e,i){var o=n.props=function(t,n){switch(typeof n){case"undefined":return;case"object":return n;case"function":return n(t);case"boolean":return n?t.params:void 0;default:0}}(e,i);if(o){o=n.props=r({},o);var a=n.attrs=n.attrs||{};for(var s in o)t.props&&s in t.props||(a[s]=o[s],delete o[s])}}var c=/[!'()*]/g,l=function(t){return"%"+t.charCodeAt(0).toString(16)},u=/%2C/g,d=function(t){return encodeURIComponent(t).replace(c,l).replace(u,",")},f=decodeURIComponent;function h(t){var n={};return(t=t.trim().replace(/^(\?|#|&)/,""))?(t.split("&").forEach((function(t){var e=t.replace(/\+/g," ").split("="),i=f(e.shift()),o=e.length>0?f(e.join("=")):null;void 0===n[i]?n[i]=o:Array.isArray(n[i])?n[i].push(o):n[i]=[n[i],o]})),n):n}function p(t){var n=t?Object.keys(t).map((function(n){var e=t[n];if(void 0===e)return"";if(null===e)return d(n);if(Array.isArray(e)){var i=[];return e.forEach((function(t){void 0!==t&&(null===t?i.push(d(n)):i.push(d(n)+"="+d(t)))})),i.join("&")}return d(n)+"="+d(e)})).filter((function(t){return t.length>0})).join("&"):null;return n?"?"+n:""}var v=/\/?$/;function b(t,n,e,i){var o=i&&i.options.stringifyQuery,r=n.query||{};try{r=m(r)}catch(t){}var a={name:n.name||t&&t.name,meta:t&&t.meta||{},path:n.path||"/",hash:n.hash||"",query:r,params:n.params||{},fullPath:x(n,o),matched:t?y(t):[]};return e&&(a.redirectedFrom=x(e,o)),Object.freeze(a)}function m(t){if(Array.isArray(t))return t.map(m);if(t&&"object"==typeof t){var n={};for(var e in t)n[e]=m(t[e]);return n}return t}var g=b(null,{path:"/"});function y(t){for(var n=[];t;)n.unshift(t),t=t.parent;return n}function x(t,n){var e=t.path,i=t.query;void 0===i&&(i={});var o=t.hash;return void 0===o&&(o=""),(e||"/")+(n||p)(i)+o}function w(t,n){return n===g?t===n:!!n&&(t.path&&n.path?t.path.replace(v,"")===n.path.replace(v,"")&&t.hash===n.hash&&k(t.query,n.query):!(!t.name||!n.name)&&(t.name===n.name&&t.hash===n.hash&&k(t.query,n.query)&&k(t.params,n.params)))}function k(t,n){if(void 0===t&&(t={}),void 0===n&&(n={}),!t||!n)return t===n;var e=Object.keys(t),i=Object.keys(n);return e.length===i.length&&e.every((function(e){var i=t[e],o=n[e];return"object"==typeof i&&"object"==typeof o?k(i,o):String(i)===String(o)}))}function _(t,n,e){var i=t.charAt(0);if("/"===i)return t;if("?"===i||"#"===i)return n+t;var o=n.split("/");e&&o[o.length-1]||o.pop();for(var r=t.replace(/^\//,"").split("/"),a=0;a=0&&(n=t.slice(i),t=t.slice(0,i));var o=t.indexOf("?");return o>=0&&(e=t.slice(o+1),t=t.slice(0,o)),{path:t,query:e,hash:n}}(o.path||""),u=n&&n.path||"/",d=l.path?_(l.path,u,e||o.append):u,f=function(t,n,e){void 0===n&&(n={});var i,o=e||h;try{i=o(t||"")}catch(t){i={}}for(var r in n)i[r]=n[r];return i}(l.query,o.query,i&&i.options.parseQuery),p=o.hash||l.hash;return p&&"#"!==p.charAt(0)&&(p="#"+p),{_normalized:!0,path:d,query:f,hash:p}}var q,Y=function(){},U={name:"RouterLink",props:{to:{type:[String,Object],required:!0},tag:{type:String,default:"a"},exact:Boolean,append:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,ariaCurrentValue:{type:String,default:"page"},event:{type:[String,Array],default:"click"}},render:function(t){var n=this,e=this.$router,i=this.$route,o=e.resolve(this.to,i,this.append),a=o.location,s=o.route,c=o.href,l={},u=e.options.linkActiveClass,d=e.options.linkExactActiveClass,f=null==u?"router-link-active":u,h=null==d?"router-link-exact-active":d,p=null==this.activeClass?f:this.activeClass,m=null==this.exactActiveClass?h:this.exactActiveClass,g=s.redirectedFrom?b(null,H(s.redirectedFrom),null,e):s;l[m]=w(i,g),l[p]=this.exact?l[m]:function(t,n){return 0===t.path.replace(v,"/").indexOf(n.path.replace(v,"/"))&&(!n.hash||t.hash===n.hash)&&function(t,n){for(var e in n)if(!(e in t))return!1;return!0}(t.query,n.query)}(i,g);var y=l[m]?this.ariaCurrentValue:null,x=function(t){W(t)&&(n.replace?e.replace(a,Y):e.push(a,Y))},k={click:W};Array.isArray(this.event)?this.event.forEach((function(t){k[t]=x})):k[this.event]=x;var _={class:l},S=!this.$scopedSlots.$hasNormal&&this.$scopedSlots.default&&this.$scopedSlots.default({href:c,route:s,navigate:x,isActive:l[p],isExactActive:l[m]});if(S){if(1===S.length)return S[0];if(S.length>1||!S.length)return 0===S.length?t():t("span",{},S)}if("a"===this.tag)_.on=k,_.attrs={href:c,"aria-current":y};else{var O=function t(n){var e;if(n)for(var i=0;i-1&&(s.params[f]=e.params[f]);return s.path=F(u.path,s.params),c(u,s,a)}if(s.path){s.params={};for(var h=0;h=t.length?e():t[o]?n(t[o],(function(){i(o+1)})):i(o+1)}(0)}function yt(t){return function(n,e,o){var r=!1,a=0,s=null;xt(t,(function(t,n,e,c){if("function"==typeof t&&void 0===t.cid){r=!0,a++;var l,u=_t((function(n){var i;((i=n).__esModule||kt&&"Module"===i[Symbol.toStringTag])&&(n=n.default),t.resolved="function"==typeof n?n:q.extend(n),e.components[c]=n,--a<=0&&o()})),d=_t((function(t){var n="Failed to resolve async component "+c+": "+t;s||(s=i(t)?t:new Error(n),o(s))}));try{l=t(u,d)}catch(t){d(t)}if(l)if("function"==typeof l.then)l.then(u,d);else{var f=l.component;f&&"function"==typeof f.then&&f.then(u,d)}}})),r||o()}}function xt(t,n){return wt(t.map((function(t){return Object.keys(t.components).map((function(e){return n(t.components[e],t.instances[e],t,e)}))})))}function wt(t){return Array.prototype.concat.apply([],t)}var kt="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag;function _t(t){var n=!1;return function(){for(var e=[],i=arguments.length;i--;)e[i]=arguments[i];if(!n)return n=!0,t.apply(this,e)}}var St=1,Ot=2,Ct=3,jt=4;function Tt(t,n){return zt(t,n,St,'Redirected when going from "'+t.fullPath+'" to "'+function(t){if("string"==typeof t)return t;if("path"in t)return t.path;var n={};return Bt.forEach((function(e){e in t&&(n[e]=t[e])})),JSON.stringify(n,null,2)}(n)+'" via a navigation guard.')}function At(t,n){return zt(t,n,Ct,'Navigation cancelled from "'+t.fullPath+'" to "'+n.fullPath+'" with a new navigation.')}function zt(t,n,e,i){var o=new Error(i);return o._isRouter=!0,o.from=t,o.to=n,o.type=e,o}var Bt=["params","query","hash"];var It=function(t,n){this.router=t,this.base=function(t){if(!t)if(K){var n=document.querySelector("base");t=(t=n&&n.getAttribute("href")||"/").replace(/^https?:\/\/[^\/]+/,"")}else t="/";"/"!==t.charAt(0)&&(t="/"+t);return t.replace(/\/$/,"")}(n),this.current=g,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[],this.listeners=[]};function Et(t,n,e,i){var o=xt(t,(function(t,i,o,r){var a=function(t,n){"function"!=typeof t&&(t=q.extend(t));return t.options[n]}(t,n);if(a)return Array.isArray(a)?a.map((function(t){return e(t,i,o,r)})):e(a,i,o,r)}));return wt(i?o.reverse():o)}function Pt(t,n){if(n)return function(){return t.apply(n,arguments)}}It.prototype.listen=function(t){this.cb=t},It.prototype.onReady=function(t,n){this.ready?t():(this.readyCbs.push(t),n&&this.readyErrorCbs.push(n))},It.prototype.onError=function(t){this.errorCbs.push(t)},It.prototype.transitionTo=function(t,n,e){var i=this,r=this.router.match(t,this.current);this.confirmTransition(r,(function(){var t=i.current;i.updateRoute(r),n&&n(r),i.ensureURL(),i.router.afterHooks.forEach((function(n){n&&n(r,t)})),i.ready||(i.ready=!0,i.readyCbs.forEach((function(t){t(r)})))}),(function(t){e&&e(t),t&&!i.ready&&(i.ready=!0,o(t,St)?i.readyCbs.forEach((function(t){t(r)})):i.readyErrorCbs.forEach((function(n){n(t)})))}))},It.prototype.confirmTransition=function(t,n,e){var r,a=this,s=this.current,c=function(t){!o(t)&&i(t)&&(a.errorCbs.length?a.errorCbs.forEach((function(n){n(t)})):console.error(t)),e&&e(t)},l=t.matched.length-1,u=s.matched.length-1;if(w(t,s)&&l===u&&t.matched[l]===s.matched[u])return this.ensureURL(),c(zt(r=s,t,jt,'Avoided redundant navigation to current location: "'+r.fullPath+'".'));var d=function(t,n){var e,i=Math.max(t.length,n.length);for(e=0;e0)){var n=this.router,e=n.options.scrollBehavior,i=vt&&e;i&&this.listeners.push(rt());var o=function(){var e=t.current,o=Dt(t.base);t.current===g&&o===t._startLocation||t.transitionTo(o,(function(t){i&&at(n,t,e,!0)}))};window.addEventListener("popstate",o),this.listeners.push((function(){window.removeEventListener("popstate",o)}))}},n.prototype.go=function(t){window.history.go(t)},n.prototype.push=function(t,n,e){var i=this,o=this.current;this.transitionTo(t,(function(t){bt(S(i.base+t.fullPath)),at(i.router,t,o,!1),n&&n(t)}),e)},n.prototype.replace=function(t,n,e){var i=this,o=this.current;this.transitionTo(t,(function(t){mt(S(i.base+t.fullPath)),at(i.router,t,o,!1),n&&n(t)}),e)},n.prototype.ensureURL=function(t){if(Dt(this.base)!==this.current.fullPath){var n=S(this.base+this.current.fullPath);t?bt(n):mt(n)}},n.prototype.getCurrentLocation=function(){return Dt(this.base)},n}(It);function Dt(t){var n=decodeURI(window.location.pathname);return t&&0===n.toLowerCase().indexOf(t.toLowerCase())&&(n=n.slice(t.length)),(n||"/")+window.location.search+window.location.hash}var Nt=function(t){function n(n,e,i){t.call(this,n,e),i&&function(t){var n=Dt(t);if(!/^\/#/.test(n))return window.location.replace(S(t+"/#"+n)),!0}(this.base)||Mt()}return t&&(n.__proto__=t),n.prototype=Object.create(t&&t.prototype),n.prototype.constructor=n,n.prototype.setupListeners=function(){var t=this;if(!(this.listeners.length>0)){var n=this.router.options.scrollBehavior,e=vt&&n;e&&this.listeners.push(rt());var i=function(){var n=t.current;Mt()&&t.transitionTo(Rt(),(function(i){e&&at(t.router,i,n,!0),vt||Ft(i.fullPath)}))},o=vt?"popstate":"hashchange";window.addEventListener(o,i),this.listeners.push((function(){window.removeEventListener(o,i)}))}},n.prototype.push=function(t,n,e){var i=this,o=this.current;this.transitionTo(t,(function(t){Vt(t.fullPath),at(i.router,t,o,!1),n&&n(t)}),e)},n.prototype.replace=function(t,n,e){var i=this,o=this.current;this.transitionTo(t,(function(t){Ft(t.fullPath),at(i.router,t,o,!1),n&&n(t)}),e)},n.prototype.go=function(t){window.history.go(t)},n.prototype.ensureURL=function(t){var n=this.current.fullPath;Rt()!==n&&(t?Vt(n):Ft(n))},n.prototype.getCurrentLocation=function(){return Rt()},n}(It);function Mt(){var t=Rt();return"/"===t.charAt(0)||(Ft("/"+t),!1)}function Rt(){var t=window.location.href,n=t.indexOf("#");if(n<0)return"";var e=(t=t.slice(n+1)).indexOf("?");if(e<0){var i=t.indexOf("#");t=i>-1?decodeURI(t.slice(0,i))+t.slice(i):decodeURI(t)}else t=decodeURI(t.slice(0,e))+t.slice(e);return t}function $t(t){var n=window.location.href,e=n.indexOf("#");return(e>=0?n.slice(0,e):n)+"#"+t}function Vt(t){vt?bt($t(t)):window.location.hash=t}function Ft(t){vt?mt($t(t)):window.location.replace($t(t))}var Ht=function(t){function n(n,e){t.call(this,n,e),this.stack=[],this.index=-1}return t&&(n.__proto__=t),n.prototype=Object.create(t&&t.prototype),n.prototype.constructor=n,n.prototype.push=function(t,n,e){var i=this;this.transitionTo(t,(function(t){i.stack=i.stack.slice(0,i.index+1).concat(t),i.index++,n&&n(t)}),e)},n.prototype.replace=function(t,n,e){var i=this;this.transitionTo(t,(function(t){i.stack=i.stack.slice(0,i.index).concat(t),n&&n(t)}),e)},n.prototype.go=function(t){var n=this,e=this.index+t;if(!(e<0||e>=this.stack.length)){var i=this.stack[e];this.confirmTransition(i,(function(){n.index=e,n.updateRoute(i)}),(function(t){o(t,jt)&&(n.index=e)}))}},n.prototype.getCurrentLocation=function(){var t=this.stack[this.stack.length-1];return t?t.fullPath:"/"},n.prototype.ensureURL=function(){},n}(It),qt=function(t){void 0===t&&(t={}),this.app=null,this.apps=[],this.options=t,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=Z(t.routes||[],this);var n=t.mode||"hash";switch(this.fallback="history"===n&&!vt&&!1!==t.fallback,this.fallback&&(n="hash"),K||(n="abstract"),this.mode=n,n){case"history":this.history=new Lt(this,t.base);break;case"hash":this.history=new Nt(this,t.base,this.fallback);break;case"abstract":this.history=new Ht(this,t.base);break;default:0}},Yt={currentRoute:{configurable:!0}};function Ut(t,n){return t.push(n),function(){var e=t.indexOf(n);e>-1&&t.splice(e,1)}}qt.prototype.match=function(t,n,e){return this.matcher.match(t,n,e)},Yt.currentRoute.get=function(){return this.history&&this.history.current},qt.prototype.init=function(t){var n=this;if(this.apps.push(t),t.$once("hook:destroyed",(function(){var e=n.apps.indexOf(t);e>-1&&n.apps.splice(e,1),n.app===t&&(n.app=n.apps[0]||null),n.app||n.history.teardownListeners()})),!this.app){this.app=t;var e=this.history;if(e instanceof Lt||e instanceof Nt){var i=function(){e.setupListeners()};e.transitionTo(e.getCurrentLocation(),i,i)}e.listen((function(t){n.apps.forEach((function(n){n._route=t}))}))}},qt.prototype.beforeEach=function(t){return Ut(this.beforeHooks,t)},qt.prototype.beforeResolve=function(t){return Ut(this.resolveHooks,t)},qt.prototype.afterEach=function(t){return Ut(this.afterHooks,t)},qt.prototype.onReady=function(t,n){this.history.onReady(t,n)},qt.prototype.onError=function(t){this.history.onError(t)},qt.prototype.push=function(t,n,e){var i=this;if(!n&&!e&&"undefined"!=typeof Promise)return new Promise((function(n,e){i.history.push(t,n,e)}));this.history.push(t,n,e)},qt.prototype.replace=function(t,n,e){var i=this;if(!n&&!e&&"undefined"!=typeof Promise)return new Promise((function(n,e){i.history.replace(t,n,e)}));this.history.replace(t,n,e)},qt.prototype.go=function(t){this.history.go(t)},qt.prototype.back=function(){this.go(-1)},qt.prototype.forward=function(){this.go(1)},qt.prototype.getMatchedComponents=function(t){var n=t?t.matched?t:this.resolve(t).route:this.currentRoute;return n?[].concat.apply([],n.matched.map((function(t){return Object.keys(t.components).map((function(n){return t.components[n]}))}))):[]},qt.prototype.resolve=function(t,n,e){var i=H(t,n=n||this.history.current,e,this),o=this.match(i,n),r=o.redirectedFrom||o.fullPath;return{location:i,route:o,href:function(t,n,e){var i="hash"===e?"#"+n:n;return t?S(t+"/"+i):i}(this.history.base,r,this.mode),normalizedTo:i,resolved:o}},qt.prototype.addRoutes=function(t){this.matcher.addRoutes(t),this.history.current!==g&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(qt.prototype,Yt),qt.install=function t(n){if(!t.installed||q!==n){t.installed=!0,q=n;var e=function(t){return void 0!==t},i=function(t,n){var i=t.$options._parentVnode;e(i)&&e(i=i.data)&&e(i=i.registerRouteInstance)&&i(t,n)};n.mixin({beforeCreate:function(){e(this.$options.router)?(this._routerRoot=this,this._router=this.$options.router,this._router.init(this),n.util.defineReactive(this,"_route",this._router.history.current)):this._routerRoot=this.$parent&&this.$parent._routerRoot||this,i(this,this)},destroyed:function(){i(this)}}),Object.defineProperty(n.prototype,"$router",{get:function(){return this._routerRoot._router}}),Object.defineProperty(n.prototype,"$route",{get:function(){return this._routerRoot._route}}),n.component("RouterView",a),n.component("RouterLink",U);var o=n.config.optionMergeStrategies;o.beforeRouteEnter=o.beforeRouteLeave=o.beforeRouteUpdate=o.created}},qt.version="3.3.4",K&&window.Vue&&window.Vue.use(qt),n.a=qt},function(t,n,e){"use strict";var i=e(4),o=e.n(i),r=e(2),a=e(30),s=e(1),c=e(3),l=e(8),u=Object(a.a)("overlay"),d=u[0],f=u[1];function h(t){Object(l.c)(t,!0)}function p(t,n,e,i){var a=Object(r.a)({zIndex:n.zIndex},n.customStyle);return Object(s.c)(n.duration)&&(a.animationDuration=n.duration+"s"),t("transition",{attrs:{name:"van-fade"}},[t("div",o()([{directives:[{name:"show",value:n.show}],style:a,class:[f(),n.className],on:{touchmove:n.lockScroll?h:s.i}},Object(c.b)(i,!0)]),[null==e.default?void 0:e.default()])])}p.props={show:Boolean,zIndex:[Number,String],duration:[Number,String],className:null,customStyle:Object,lockScroll:{type:Boolean,default:!0}},n.a=d(p)},function(t,n,e){"use strict";var i=e(30),o=e(27),r=e(8),a=e(15),s=e(14),c=e(16),l=e(9),u=e(18),d=Object(i.a)("swipe"),f=d[0],h=d[1];n.a=f({mixins:[c.a,Object(l.b)("vanSwipe"),Object(u.a)((function(t,n){t(window,"resize",this.resize,!0),t(window,"orientationchange",this.resize,!0),t(window,"visibilitychange",this.onVisibilityChange),n?this.initialize():this.clear()}))],props:{width:[Number,String],height:[Number,String],autoplay:[Number,String],vertical:Boolean,lazyRender:Boolean,indicatorColor:String,loop:{type:Boolean,default:!0},duration:{type:[Number,String],default:500},touchable:{type:Boolean,default:!0},initialSwipe:{type:[Number,String],default:0},showIndicators:{type:Boolean,default:!0},stopPropagation:{type:Boolean,default:!0}},data:function(){return{rect:null,offset:0,active:0,deltaX:0,deltaY:0,swiping:!1,computedWidth:0,computedHeight:0}},watch:{children:function(){this.initialize()},initialSwipe:function(){this.initialize()},autoplay:function(t){t>0?this.autoPlay():this.clear()}},computed:{count:function(){return this.children.length},maxCount:function(){return Math.ceil(Math.abs(this.minOffset)/this.size)},delta:function(){return this.vertical?this.deltaY:this.deltaX},size:function(){return this[this.vertical?"computedHeight":"computedWidth"]},trackSize:function(){return this.count*this.size},activeIndicator:function(){return(this.active+this.count)%this.count},isCorrectDirection:function(){var t=this.vertical?"vertical":"horizontal";return this.direction===t},trackStyle:function(){var t={transitionDuration:(this.swiping?0:this.duration)+"ms",transform:"translate"+(this.vertical?"Y":"X")+"("+this.offset+"px)"};if(this.size){var n=this.vertical?"height":"width",e=this.vertical?"width":"height";t[n]=this.trackSize+"px",t[e]=this[e]?this[e]+"px":""}return t},indicatorStyle:function(){return{backgroundColor:this.indicatorColor}},minOffset:function(){return(this.vertical?this.rect.height:this.rect.width)-this.size*this.count}},mounted:function(){this.bindTouchEvent(this.$refs.track)},methods:{initialize:function(t){if(void 0===t&&(t=+this.initialSwipe),this.$el&&!Object(o.a)(this.$el)){clearTimeout(this.timer);var n={width:this.$el.offsetWidth,height:this.$el.offsetHeight};this.rect=n,this.swiping=!0,this.active=t,this.computedWidth=+this.width||n.width,this.computedHeight=+this.height||n.height,this.offset=this.getTargetOffset(t),this.children.forEach((function(t){t.offset=0})),this.autoPlay()}},resize:function(){this.initialize(this.activeIndicator)},onVisibilityChange:function(){document.hidden?this.clear():this.autoPlay()},onTouchStart:function(t){this.touchable&&(this.clear(),this.touchStartTime=Date.now(),this.touchStart(t),this.correctPosition())},onTouchMove:function(t){this.touchable&&this.swiping&&(this.touchMove(t),this.isCorrectDirection&&(Object(r.c)(t,this.stopPropagation),this.move({offset:this.delta})))},onTouchEnd:function(){if(this.touchable&&this.swiping){var t=this.size,n=this.delta,e=n/(Date.now()-this.touchStartTime);if((Math.abs(e)>.25||Math.abs(n)>t/2)&&this.isCorrectDirection){var i=this.vertical?this.offsetY:this.offsetX,o=0;o=this.loop?i>0?n>0?-1:1:0:-Math[n>0?"ceil":"floor"](n/t),this.move({pace:o,emitChange:!0})}else n&&this.move({pace:0});this.swiping=!1,this.autoPlay()}},getTargetActive:function(t){var n=this.active,e=this.count,i=this.maxCount;return t?this.loop?Object(s.c)(n+t,-1,e):Object(s.c)(n+t,0,i):n},getTargetOffset:function(t,n){void 0===n&&(n=0);var e=t*this.size;this.loop||(e=Math.min(e,-this.minOffset));var i=n-e;return this.loop||(i=Object(s.c)(i,this.minOffset,0)),i},move:function(t){var n=t.pace,e=void 0===n?0:n,i=t.offset,o=void 0===i?0:i,r=t.emitChange,a=this.loop,s=this.count,c=this.active,l=this.children,u=this.trackSize,d=this.minOffset;if(!(s<=1)){var f=this.getTargetActive(e),h=this.getTargetOffset(f,o);if(a){if(l[0]&&h!==d){var p=h0;l[s-1].offset=v?-u:0}}this.active=f,this.offset=h,r&&f!==c&&this.$emit("change",this.activeIndicator)}},prev:function(){var t=this;this.correctPosition(),this.resetTouchStatus(),Object(a.b)((function(){t.swiping=!1,t.move({pace:-1,emitChange:!0})}))},next:function(){var t=this;this.correctPosition(),this.resetTouchStatus(),Object(a.b)((function(){t.swiping=!1,t.move({pace:1,emitChange:!0})}))},swipeTo:function(t,n){var e=this;void 0===n&&(n={}),this.correctPosition(),this.resetTouchStatus(),Object(a.b)((function(){var i;i=e.loop&&t===e.count?0===e.active?0:t:t%e.count,n.immediate?Object(a.b)((function(){e.swiping=!1})):e.swiping=!1,e.move({pace:i-e.active,emitChange:!0})}))},correctPosition:function(){this.swiping=!0,this.active<=-1&&this.move({pace:this.count}),this.active>=this.count&&this.move({pace:-this.count})},clear:function(){clearTimeout(this.timer)},autoPlay:function(){var t=this,n=this.autoplay;n>0&&this.count>1&&(this.clear(),this.timer=setTimeout((function(){t.next(),t.autoPlay()}),n))},genIndicator:function(){var t=this,n=this.$createElement,e=this.count,i=this.activeIndicator,o=this.slots("indicator");return o||(this.showIndicators&&e>1?n("div",{class:h("indicators",{vertical:this.vertical})},[Array.apply(void 0,Array(e)).map((function(e,o){return n("i",{class:h("indicator",{active:o===i}),style:o===i?t.indicatorStyle:null})}))]):void 0)}},render:function(){var t=arguments[0];return t("div",{class:h()},[t("div",{ref:"track",style:this.trackStyle,class:h("track",{vertical:this.vertical})},[this.slots()]),this.genIndicator()])}})},function(t,n,e){"use strict";var i=e(2),o=e(30),r=e(9),a=Object(o.a)("swipe-item"),s=a[0],c=a[1];n.a=s({mixins:[Object(r.a)("vanSwipe")],data:function(){return{offset:0,inited:!1,mounted:!1}},mounted:function(){var t=this;this.$nextTick((function(){t.mounted=!0}))},computed:{style:function(){var t={},n=this.parent,e=n.size,i=n.vertical;return e&&(t[i?"height":"width"]=e+"px"),this.offset&&(t.transform="translate"+(i?"Y":"X")+"("+this.offset+"px)"),t},shouldRender:function(){var t=this.index,n=this.inited,e=this.parent,i=this.mounted;if(!e.lazyRender||n)return!0;if(!i)return!1;var o=e.activeIndicator,r=e.count-1,a=0===o&&e.loop?r:o-1,s=o===r&&e.loop?0:o+1,c=t===o||t===a||t===s;return c&&(this.inited=!0),c}},render:function(){var t=arguments[0];return t("div",{class:c(),style:this.style,on:Object(i.a)({},this.$listeners)},[this.shouldRender&&this.slots()])}})},function(t,n){var e;e=function(){return this}();try{e=e||new Function("return this")()}catch(t){"object"==typeof window&&(e=window)}t.exports=e},,,,,,,,,,function(t,n,e){"use strict";var i=e(115),o=e.n(i);n.a=o.a},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(t,n,e){"use strict";function i(t,n){var e=n.$vnode.componentOptions;if(e&&e.children){var i=function(t){var n=[];return function t(e){e.forEach((function(e){n.push(e),e.componentInstance&&t(e.componentInstance.$children.map((function(t){return t.$vnode}))),e.children&&t(e.children)}))}(t),n}(e.children);t.sort((function(t,n){return i.indexOf(t.$vnode)-i.indexOf(n.$vnode)}))}}e.d(n,"a",(function(){return i}))},function(t,n,e){"use strict";var i=e(2),o=e(4),r=e.n(o),a=e(11),s=e(30),c=e(3),l=e(22),u=e(7),d=e(1),f=Object(s.a)("popup"),h=f[0],p=f[1],v=h({mixins:[Object(l.a)()],props:{round:Boolean,duration:[Number,String],closeable:Boolean,transition:String,safeAreaInsetBottom:Boolean,closeIcon:{type:String,default:"cross"},closeIconPosition:{type:String,default:"top-right"},position:{type:String,default:"center"},overlay:{type:Boolean,default:!0},closeOnClickOverlay:{type:Boolean,default:!0}},beforeCreate:function(){var t=this,n=function(n){return function(e){return t.$emit(n,e)}};this.onClick=n("click"),this.onOpened=n("opened"),this.onClosed=n("closed")},methods:{onClickCloseIcon:function(t){this.$emit("click-close-icon",t),this.close()}},render:function(){var t,n=arguments[0];if(this.shouldRender){var e=this.round,i=this.position,o=this.duration,r="center"===i,a=this.transition||(r?"van-fade":"van-popup-slide-"+i),s={};if(Object(d.c)(o)){var c=r?"animationDuration":"transitionDuration";s[c]=o+"s"}return n("transition",{attrs:{appear:this.transitionAppear,name:a},on:{afterEnter:this.onOpened,afterLeave:this.onClosed}},[n("div",{directives:[{name:"show",value:this.value}],style:s,class:p((t={round:e},t[i]=i,t["safe-area-inset-bottom"]=this.safeAreaInsetBottom,t)),on:{click:this.onClick}},[this.slots(),this.closeable&&n(u.a,{attrs:{role:"button",tabindex:"0",name:this.closeIcon},class:p("close-icon",this.closeIconPosition),on:{click:this.onClickCloseIcon}})])])}}}),b=e(17),m=Object(s.a)("action-sheet"),g=m[0],y=m[1];function x(t,n,e,i){var o=n.title,s=n.cancelText,l=n.closeable;function d(){Object(c.a)(i,"input",!1),Object(c.a)(i,"cancel")}return t(v,r()([{class:y(),attrs:{position:"bottom",round:n.round,value:n.value,overlay:n.overlay,duration:n.duration,lazyRender:n.lazyRender,lockScroll:n.lockScroll,getContainer:n.getContainer,closeOnPopstate:n.closeOnPopstate,closeOnClickOverlay:n.closeOnClickOverlay,safeAreaInsetBottom:n.safeAreaInsetBottom}},Object(c.b)(i,!0)]),[function(){if(o)return t("div",{class:y("header")},[o,l&&t(u.a,{attrs:{name:n.closeIcon},class:y("close"),on:{click:d}})])}(),function(){var i=(null==e.description?void 0:e.description())||n.description;if(i)return t("div",{class:y("description")},[i])}(),t("div",{class:y("content")},[n.actions&&n.actions.map((function(e,o){var r=e.disabled,s=e.loading,l=e.callback;return t("button",{attrs:{type:"button"},class:[y("item",{disabled:r,loading:s}),e.className],style:{color:e.color},on:{click:function(t){t.stopPropagation(),r||s||(l&&l(e),n.closeOnClickAction&&Object(c.a)(i,"input",!1),a.a.nextTick((function(){Object(c.a)(i,"select",e,o)})))}}},[s?t(b.a,{class:y("loading-icon")}):[t("span",{class:y("name")},[e.name]),e.subname&&t("div",{class:y("subname")},[e.subname])]])})),null==e.default?void 0:e.default()]),function(){if(s)return[t("div",{class:y("gap")}),t("button",{attrs:{type:"button"},class:y("cancel"),on:{click:d}},[s])]}()])}x.props=Object(i.a)({},l.b,{title:String,actions:Array,duration:[Number,String],cancelText:String,description:String,getContainer:[String,Function],closeOnPopstate:Boolean,closeOnClickAction:Boolean,round:{type:Boolean,default:!0},closeable:{type:Boolean,default:!0},closeIcon:{type:String,default:"cross"},safeAreaInsetBottom:{type:Boolean,default:!0},overlay:{type:Boolean,default:!0},closeOnClickOverlay:{type:Boolean,default:!0}});var w=g(x);function k(t){return t=t.replace(/[^-|\d]/g,""),/^((\+86)|(86))?(1)\d{10}$/.test(t)||/^0[0-9-]{10,13}$/.test(t)}var _={title:String,loading:Boolean,readonly:Boolean,itemHeight:[Number,String],showToolbar:Boolean,cancelButtonText:String,confirmButtonText:String,allowHtml:{type:Boolean,default:!0},visibleItemCount:{type:[Number,String],default:6},swipeDuration:{type:[Number,String],default:1e3}},S=e(8),O=e(10),C=e(23),j=e(29),T=e(14),A=e(16),z=Object(s.a)("picker-column"),B=z[0],I=z[1];function E(t){var n=window.getComputedStyle(t),e=n.transform||n.webkitTransform,i=e.slice(7,e.length-1).split(", ")[5];return Number(i)}function P(t){return Object(d.f)(t)&&t.disabled}var L=d.b&&"onwheel"in window,D=null,N=B({mixins:[A.a],props:{valueKey:String,readonly:Boolean,allowHtml:Boolean,className:String,itemHeight:Number,defaultIndex:Number,swipeDuration:[Number,String],visibleItemCount:[Number,String],initialOptions:{type:Array,default:function(){return[]}}},data:function(){return{offset:0,duration:0,options:Object(j.a)(this.initialOptions),currentIndex:this.defaultIndex}},created:function(){this.$parent.children&&this.$parent.children.push(this),this.setIndex(this.currentIndex)},mounted:function(){this.bindTouchEvent(this.$el),L&&Object(S.b)(this.$el,"wheel",this.onMouseWheel,!1)},destroyed:function(){var t=this.$parent.children;t&&t.splice(t.indexOf(this),1),L&&Object(S.a)(this.$el,"wheel")},watch:{initialOptions:"setOptions",defaultIndex:function(t){this.setIndex(t)}},computed:{count:function(){return this.options.length},baseOffset:function(){return this.itemHeight*(this.visibleItemCount-1)/2}},methods:{setOptions:function(t){JSON.stringify(t)!==JSON.stringify(this.options)&&(this.options=Object(j.a)(t),this.setIndex(this.defaultIndex))},onTouchStart:function(t){if(!this.readonly){if(this.touchStart(t),this.moving){var n=E(this.$refs.wrapper);this.offset=Math.min(0,n-this.baseOffset),this.startOffset=this.offset}else this.startOffset=this.offset;this.duration=0,this.transitionEndTrigger=null,this.touchStartTime=Date.now(),this.momentumOffset=this.startOffset}},onTouchMove:function(t){if(!this.readonly){this.touchMove(t),"vertical"===this.direction&&(this.moving=!0,Object(S.c)(t,!0)),this.offset=Object(T.c)(this.startOffset+this.deltaY,-this.count*this.itemHeight,this.itemHeight);var n=Date.now();n-this.touchStartTime>300&&(this.touchStartTime=n,this.momentumOffset=this.offset)}},onTouchEnd:function(){var t=this;if(!this.readonly){var n=this.offset-this.momentumOffset,e=Date.now()-this.touchStartTime;if(e<300&&Math.abs(n)>15)this.momentum(n,e);else{var i=this.getIndexByOffset(this.offset);this.duration=200,this.setIndex(i,!0),setTimeout((function(){t.moving=!1}),0)}}},onMouseWheel:function(t){var n=this;if(!this.readonly){Object(S.c)(t,!0);var e=E(this.$refs.wrapper);this.startOffset=Math.min(0,e-this.baseOffset),this.momentumOffset=this.startOffset,this.transitionEndTrigger=null;var i=t.deltaY;if(!(0===this.startOffset&&i<0)){var o=this.itemHeight*(i>0?-1:1);this.offset=Object(T.c)(this.startOffset+o,-this.count*this.itemHeight,this.itemHeight),D&&clearTimeout(D),D=setTimeout((function(){n.onTouchEnd(),n.touchStartTime=0}),300)}}},onTransitionEnd:function(){this.stopMomentum()},onClickItem:function(t){this.moving||this.readonly||(this.transitionEndTrigger=null,this.duration=200,this.setIndex(t,!0))},adjustIndex:function(t){for(var n=t=Object(T.c)(t,0,this.count);n=0;e--)if(!P(this.options[e]))return e},getOptionText:function(t){return Object(d.f)(t)&&this.valueKey in t?t[this.valueKey]:t},setIndex:function(t,n){var e=this,i=-(t=this.adjustIndex(t)||0)*this.itemHeight,o=function(){t!==e.currentIndex&&(e.currentIndex=t,n&&e.$emit("change",t))};this.moving&&i!==this.offset?this.transitionEndTrigger=o:o(),this.offset=i},setValue:function(t){for(var n=this.options,e=0;ee&&(t=this.value&&this.value.length===+e?this.value:t.slice(0,e)),"number"===this.type||"digit"===this.type){var i="number"===this.type;t=Object(T.b)(t,i,i)}this.formatter&&n===this.formatTrigger&&(t=this.formatter(t));var o=this.$refs.input;o&&t!==o.value&&(o.value=t),t!==this.value&&this.$emit("input",t)},onInput:function(t){t.target.composing||this.updateValue(t.target.value)},onFocus:function(t){this.focused=!0,this.$emit("focus",t),this.$nextTick(this.adjustSize),this.getProp("readonly")&&this.blur()},onBlur:function(t){this.getProp("readonly")||(this.focused=!1,this.updateValue(this.value,"onBlur"),this.$emit("blur",t),this.validateWithTrigger("onBlur"),this.$nextTick(this.adjustSize),rt())},onClick:function(t){this.$emit("click",t)},onClickInput:function(t){this.$emit("click-input",t)},onClickLeftIcon:function(t){this.$emit("click-left-icon",t)},onClickRightIcon:function(t){this.$emit("click-right-icon",t)},onClear:function(t){Object(S.c)(t),this.$emit("input",""),this.$emit("clear",t)},onKeypress:function(t){13===t.keyCode&&(this.getProp("submitOnEnter")||"textarea"===this.type||Object(S.c)(t),"search"===this.type&&this.blur());this.$emit("keypress",t)},adjustSize:function(){var t=this.$refs.input;if("textarea"===this.type&&this.autosize&&t){var n=Object(it.b)();t.style.height="auto";var e=t.scrollHeight;if(Object(d.f)(this.autosize)){var i=this.autosize,o=i.maxHeight,r=i.minHeight;o&&(e=Math.min(e,o)),r&&(e=Math.max(e,r))}e&&(t.style.height=e+"px",Object(it.g)(n))}},genInput:function(){var t=this.$createElement,n=this.type,e=this.getProp("disabled"),o=this.getProp("readonly"),a=this.slots("input"),s=this.getProp("inputAlign");if(a)return t("div",{class:ct("control",[s,"custom"]),on:{click:this.onClickInput}},[a]);var c={ref:"input",class:ct("control",s),domProps:{value:this.value},attrs:Object(i.a)({},this.$attrs,{name:this.name,disabled:e,readonly:o,placeholder:this.placeholder}),on:this.listeners,directives:[{name:"model",value:this.value}]};if("textarea"===n)return t("textarea",r()([{},c]));var l,u=n;return"number"===n&&(u="text",l="decimal"),"digit"===n&&(u="tel",l="numeric"),t("input",r()([{attrs:{type:u,inputmode:l}},c]))},genLeftIcon:function(){var t=this.$createElement;if(this.slots("left-icon")||this.leftIcon)return t("div",{class:ct("left-icon"),on:{click:this.onClickLeftIcon}},[this.slots("left-icon")||t(u.a,{attrs:{name:this.leftIcon,classPrefix:this.iconPrefix}})])},genRightIcon:function(){var t=this.$createElement,n=this.slots;if(n("right-icon")||this.rightIcon)return t("div",{class:ct("right-icon"),on:{click:this.onClickRightIcon}},[n("right-icon")||t(u.a,{attrs:{name:this.rightIcon,classPrefix:this.iconPrefix}})])},genWordLimit:function(){var t=this.$createElement;if(this.showWordLimit&&this.maxlength){var n=(this.value||"").length;return t("div",{class:ct("word-limit")},[t("span",{class:ct("word-num")},[n]),"/",this.maxlength])}},genMessage:function(){var t=this.$createElement;if(!this.vanForm||!1!==this.vanForm.showErrorMessage){var n=this.errorMessage||this.validateMessage;if(n){var e=this.getProp("errorMessageAlign");return t("div",{class:ct("error-message",e)},[n])}}},getProp:function(t){return Object(d.c)(this[t])?this[t]:this.vanForm&&Object(d.c)(this.vanForm[t])?this.vanForm[t]:void 0},genLabel:function(){var t=this.$createElement,n=this.getProp("colon")?":":"";return this.slots("label")?[this.slots("label"),n]:this.label?t("span",[this.label+n]):void 0}},render:function(){var t,n=arguments[0],e=this.slots,i=this.getProp("disabled"),o=this.getProp("labelAlign"),r={icon:this.genLeftIcon},a=this.genLabel();a&&(r.title=function(){return a});var s=this.slots("extra");return s&&(r.extra=function(){return s}),n(et,{attrs:{icon:this.leftIcon,size:this.size,center:this.center,border:this.border,isLink:this.isLink,required:this.required,clickable:this.clickable,titleStyle:this.labelStyle,valueClass:ct("value"),titleClass:[ct("label",o),this.labelClass],arrowDirection:this.arrowDirection},scopedSlots:r,class:ct((t={error:this.showError,disabled:i},t["label-"+o]=o,t["min-height"]="textarea"===this.type&&!this.autosize,t)),on:{click:this.onClick}},[n("div",{class:ct("body")},[this.genInput(),this.showClear&&n(u.a,{attrs:{name:"clear"},class:ct("clear"),on:{touchstart:this.onClear}}),this.genRightIcon(),e("button")&&n("div",{class:ct("button")},[e("button")])]),this.genWordLimit(),this.genMessage()])}}),ut=e(19),dt=Object(s.a)("button"),ft=dt[0],ht=dt[1];function pt(t,n,e,i){var o,a=n.tag,s=n.icon,l=n.type,d=n.color,f=n.plain,h=n.disabled,p=n.loading,v=n.hairline,m=n.loadingText,g=n.iconPosition,y={};d&&(y.color=f?d:"white",f||(y.background=d),-1!==d.indexOf("gradient")?y.border=0:y.borderColor=d);var x,w,k=[ht([l,n.size,{plain:f,loading:p,disabled:h,hairline:v,block:n.block,round:n.round,square:n.square}]),(o={},o[O.d]=v,o)];function _(){return p?e.loading?e.loading():t(b.a,{class:ht("loading"),attrs:{size:n.loadingSize,type:n.loadingType,color:"currentColor"}}):e.icon?t("div",{class:ht("icon")},[e.icon()]):s?t(u.a,{attrs:{name:s,classPrefix:n.iconPrefix},class:ht("icon")}):void 0}return t(a,r()([{style:y,class:k,attrs:{type:n.nativeType,disabled:h},on:{click:function(t){n.loading&&t.preventDefault(),p||h||(Object(c.a)(i,"click",t),X(i))},touchstart:function(t){Object(c.a)(i,"touchstart",t)}}},Object(c.b)(i)]),[t("div",{class:ht("content")},[(w=[],"left"===g&&w.push(_()),(x=p?m:e.default?e.default():n.text)&&w.push(t("span",{class:ht("text")},[x])),"right"===g&&w.push(_()),w)])])}pt.props=Object(i.a)({},J,{text:String,icon:String,color:String,block:Boolean,plain:Boolean,round:Boolean,square:Boolean,loading:Boolean,hairline:Boolean,disabled:Boolean,iconPrefix:String,nativeType:String,loadingText:String,loadingType:String,tag:{type:String,default:"button"},type:{type:String,default:"default"},size:{type:String,default:"normal"},loadingSize:{type:String,default:"20px"},iconPosition:{type:String,default:"left"}});var vt,bt=ft(pt),mt=e(9),gt=Object(s.a)("goods-action"),yt=gt[0],xt=gt[1],wt=yt({mixins:[Object(mt.b)("vanGoodsAction")],props:{safeAreaInsetBottom:{type:Boolean,default:!0}},render:function(){var t=arguments[0];return t("div",{class:xt({unfit:!this.safeAreaInsetBottom})},[this.slots()])}}),kt=Object(s.a)("goods-action-button"),_t=kt[0],St=kt[1],Ot=_t({mixins:[Object(mt.a)("vanGoodsAction")],props:Object(i.a)({},J,{type:String,text:String,icon:String,color:String,loading:Boolean,disabled:Boolean}),computed:{isFirst:function(){var t=this.parent&&this.parent.children[this.index-1];return!t||t.$options.name!==this.$options.name},isLast:function(){var t=this.parent&&this.parent.children[this.index+1];return!t||t.$options.name!==this.$options.name}},methods:{onClick:function(t){this.$emit("click",t),K(this.$router,this)}},render:function(){var t=arguments[0];return t(bt,{class:St([{first:this.isFirst,last:this.isLast},this.type]),attrs:{size:"large",type:this.type,icon:this.icon,color:this.color,loading:this.loading,disabled:this.disabled},on:{click:this.onClick}},[this.slots()||this.text])}}),Ct=Object(s.a)("dialog"),jt=Ct[0],Tt=Ct[1],At=Ct[2],zt=jt({mixins:[Object(l.a)()],props:{title:String,theme:String,width:[Number,String],message:String,className:null,callback:Function,beforeClose:Function,messageAlign:String,cancelButtonText:String,cancelButtonColor:String,confirmButtonText:String,confirmButtonColor:String,showCancelButton:Boolean,overlay:{type:Boolean,default:!0},allowHtml:{type:Boolean,default:!0},transition:{type:String,default:"van-dialog-bounce"},showConfirmButton:{type:Boolean,default:!0},closeOnPopstate:{type:Boolean,default:!0},closeOnClickOverlay:{type:Boolean,default:!1}},data:function(){return{loading:{confirm:!1,cancel:!1}}},methods:{onClickOverlay:function(){this.handleAction("overlay")},handleAction:function(t){var n=this;this.$emit(t),this.value&&(this.beforeClose?(this.loading[t]=!0,this.beforeClose(t,(function(e){!1!==e&&n.loading[t]&&n.onClose(t),n.loading.confirm=!1,n.loading.cancel=!1}))):this.onClose(t))},onClose:function(t){this.close(),this.callback&&this.callback(t)},onOpened:function(){var t=this;this.$emit("opened"),this.$nextTick((function(){var n;null==(n=t.$refs.dialog)||n.focus()}))},onClosed:function(){this.$emit("closed")},onKeydown:function(t){var n=this;if("Escape"===t.key||"Enter"===t.key){if(t.target!==this.$refs.dialog)return;({Enter:this.showConfirmButton?function(){return n.handleAction("confirm")}:d.i,Escape:this.showCancelButton?function(){return n.handleAction("cancel")}:d.i})[t.key](),this.$emit("keydown",t)}},genRoundButtons:function(){var t=this,n=this.$createElement;return n(wt,{class:Tt("footer")},[this.showCancelButton&&n(Ot,{attrs:{size:"large",type:"warning",text:this.cancelButtonText||At("cancel"),color:this.cancelButtonColor,loading:this.loading.cancel},class:Tt("cancel"),on:{click:function(){t.handleAction("cancel")}}}),this.showConfirmButton&&n(Ot,{attrs:{size:"large",type:"danger",text:this.confirmButtonText||At("confirm"),color:this.confirmButtonColor,loading:this.loading.confirm},class:Tt("confirm"),on:{click:function(){t.handleAction("confirm")}}})])},genButtons:function(){var t,n=this,e=this.$createElement,i=this.showCancelButton&&this.showConfirmButton;return e("div",{class:[O.e,Tt("footer")]},[this.showCancelButton&&e(bt,{attrs:{size:"large",loading:this.loading.cancel,text:this.cancelButtonText||At("cancel"),nativeType:"button"},class:Tt("cancel"),style:{color:this.cancelButtonColor},on:{click:function(){n.handleAction("cancel")}}}),this.showConfirmButton&&e(bt,{attrs:{size:"large",loading:this.loading.confirm,text:this.confirmButtonText||At("confirm"),nativeType:"button"},class:[Tt("confirm"),(t={},t[O.c]=i,t)],style:{color:this.confirmButtonColor},on:{click:function(){n.handleAction("confirm")}}})])},genContent:function(t,n){var e=this.$createElement;if(n)return e("div",{class:Tt("content")},[n]);var i=this.message,o=this.messageAlign;if(i){var a,s,c={class:Tt("message",(a={"has-title":t},a[o]=o,a)),domProps:(s={},s[this.allowHtml?"innerHTML":"textContent"]=i,s)};return e("div",{class:Tt("content",{isolated:!t})},[e("div",r()([{},c]))])}}},render:function(){var t=arguments[0];if(this.shouldRender){var n=this.message,e=this.slots(),i=this.slots("title")||this.title,o=i&&t("div",{class:Tt("header",{isolated:!n&&!e})},[i]);return t("transition",{attrs:{name:this.transition},on:{afterEnter:this.onOpened,afterLeave:this.onClosed}},[t("div",{directives:[{name:"show",value:this.value}],attrs:{role:"dialog","aria-labelledby":this.title||n,tabIndex:0},class:[Tt([this.theme]),this.className],style:{width:Object(C.a)(this.width)},ref:"dialog",on:{keydown:this.onKeydown}},[o,this.genContent(i,e),"round-button"===this.theme?this.genRoundButtons():this.genButtons()])])}}});function Bt(t){return d.h?Promise.resolve():new Promise((function(n,e){var o;vt&&(o=vt.$el,document.body.contains(o))||(vt&&vt.$destroy(),(vt=new(a.a.extend(zt))({el:document.createElement("div"),propsData:{lazyRender:!1}})).$on("input",(function(t){vt.value=t}))),Object(i.a)(vt,Bt.currentOptions,t,{resolve:n,reject:e})}))}Bt.defaultOptions={value:!0,title:"",width:"",theme:null,message:"",overlay:!0,className:"",allowHtml:!0,lockScroll:!0,transition:"van-dialog-bounce",beforeClose:null,overlayClass:"",overlayStyle:null,messageAlign:"",getContainer:"body",cancelButtonText:"",cancelButtonColor:null,confirmButtonText:"",confirmButtonColor:null,showConfirmButton:!0,showCancelButton:!1,closeOnPopstate:!0,closeOnClickOverlay:!1,callback:function(t){vt["confirm"===t?"resolve":"reject"](t)}},Bt.alert=Bt,Bt.confirm=function(t){return Bt(Object(i.a)({showCancelButton:!0},t))},Bt.close=function(){vt&&(vt.value=!1)},Bt.setDefaultOptions=function(t){Object(i.a)(Bt.currentOptions,t)},Bt.resetDefaultOptions=function(){Bt.currentOptions=Object(i.a)({},Bt.defaultOptions)},Bt.resetDefaultOptions(),Bt.install=function(){a.a.use(zt)},Bt.Component=zt,a.a.prototype.$dialog=Bt;var It=Bt,Et=Object(s.a)("address-edit-detail"),Pt=Et[0],Lt=Et[1],Dt=Et[2],Nt=!d.h&&/android/.test(navigator.userAgent.toLowerCase()),Mt=Pt({props:{value:String,errorMessage:String,focused:Boolean,detailRows:[Number,String],searchResult:Array,detailMaxlength:[Number,String],showSearchResult:Boolean},computed:{shouldShowSearchResult:function(){return this.focused&&this.searchResult&&this.showSearchResult}},methods:{onSelect:function(t){this.$emit("select-search",t),this.$emit("input",((t.address||"")+" "+(t.name||"")).trim())},onFinish:function(){this.$refs.field.blur()},genFinish:function(){var t=this.$createElement;if(this.value&&this.focused&&Nt)return t("div",{class:Lt("finish"),on:{click:this.onFinish}},[Dt("complete")])},genSearchResult:function(){var t=this,n=this.$createElement,e=this.value,i=this.shouldShowSearchResult,o=this.searchResult;if(i)return o.map((function(i){return n(et,{key:i.name+i.address,attrs:{clickable:!0,border:!1,icon:"location-o",label:i.address},class:Lt("search-item"),on:{click:function(){t.onSelect(i)}},scopedSlots:{title:function(){if(i.name){var t=i.name.replace(e,""+e+"");return n("div",{domProps:{innerHTML:t}})}}}})}))}},render:function(){var t=arguments[0];return t(et,{class:Lt()},[t(lt,{attrs:{autosize:!0,rows:this.detailRows,clearable:!Nt,type:"textarea",value:this.value,errorMessage:this.errorMessage,border:!this.shouldShowSearchResult,label:Dt("label"),maxlength:this.detailMaxlength,placeholder:Dt("placeholder")},ref:"field",scopedSlots:{icon:this.genFinish},on:Object(i.a)({},this.$listeners)}),this.genSearchResult()])}}),Rt={size:[Number,String],value:null,loading:Boolean,disabled:Boolean,activeColor:String,inactiveColor:String,activeValue:{type:null,default:!0},inactiveValue:{type:null,default:!1}},$t={inject:{vanField:{default:null}},watch:{value:function(){var t=this.vanField;t&&(t.resetValidation(),t.validateWithTrigger("onChange"))}},created:function(){var t=this.vanField;t&&!t.children&&(t.children=this)}},Vt=Object(s.a)("switch"),Ft=Vt[0],Ht=Vt[1],qt=Ft({mixins:[$t],props:Rt,computed:{checked:function(){return this.value===this.activeValue},style:function(){return{fontSize:Object(C.a)(this.size),backgroundColor:this.checked?this.activeColor:this.inactiveColor}}},methods:{onClick:function(t){if(this.$emit("click",t),!this.disabled&&!this.loading){var n=this.checked?this.inactiveValue:this.activeValue;this.$emit("input",n),this.$emit("change",n)}},genLoading:function(){var t=this.$createElement;if(this.loading){var n=this.checked?this.activeColor:this.inactiveColor;return t(b.a,{class:Ht("loading"),attrs:{color:n}})}}},render:function(){var t=arguments[0],n=this.checked,e=this.loading,i=this.disabled;return t("div",{class:Ht({on:n,loading:e,disabled:i}),attrs:{role:"switch","aria-checked":String(n)},style:this.style,on:{click:this.onClick}},[t("div",{class:Ht("node")},[this.genLoading()])])}}),Yt=Object(s.a)("address-edit"),Ut=Yt[0],Wt=Yt[1],Kt=Yt[2],Xt={name:"",tel:"",country:"",province:"",city:"",county:"",areaCode:"",postalCode:"",addressDetail:"",isDefault:!1};var Jt=Ut({props:{areaList:Object,isSaving:Boolean,isDeleting:Boolean,validator:Function,showDelete:Boolean,showPostal:Boolean,searchResult:Array,telMaxlength:[Number,String],showSetDefault:Boolean,saveButtonText:String,areaPlaceholder:String,deleteButtonText:String,showSearchResult:Boolean,showArea:{type:Boolean,default:!0},showDetail:{type:Boolean,default:!0},disableArea:Boolean,detailRows:{type:[Number,String],default:1},detailMaxlength:{type:[Number,String],default:200},addressInfo:{type:Object,default:function(){return Object(i.a)({},Xt)}},telValidator:{type:Function,default:k},postalValidator:{type:Function,default:function(t){return/^\d{6}$/.test(t)}},areaColumnsPlaceholder:{type:Array,default:function(){return[]}}},data:function(){return{data:{},showAreaPopup:!1,detailFocused:!1,errorInfo:{tel:"",name:"",areaCode:"",postalCode:"",addressDetail:""}}},computed:{areaListLoaded:function(){return Object(d.f)(this.areaList)&&Object.keys(this.areaList).length},areaText:function(){var t=this.data,n=t.country,e=t.province,i=t.city,o=t.county;if(t.areaCode){var r=[n,e,i,o];return e&&e===i&&r.splice(1,1),r.filter((function(t){return t})).join("/")}return""},hideBottomFields:function(){var t=this.searchResult;return t&&t.length&&this.detailFocused}},watch:{addressInfo:{handler:function(t){this.data=Object(i.a)({},Xt,t),this.setAreaCode(t.areaCode)},deep:!0,immediate:!0},areaList:function(){this.setAreaCode(this.data.areaCode)}},methods:{onFocus:function(t){this.errorInfo[t]="",this.detailFocused="addressDetail"===t,this.$emit("focus",t)},onChangeDetail:function(t){this.data.addressDetail=t,this.$emit("change-detail",t)},onAreaConfirm:function(t){(t=t.filter((function(t){return!!t}))).some((function(t){return!t.code}))?Object(ut.a)(Kt("areaEmpty")):(this.showAreaPopup=!1,this.assignAreaValues(),this.$emit("change-area",t))},assignAreaValues:function(){var t=this.$refs.area;if(t){var n=t.getArea();n.areaCode=n.code,delete n.code,Object(i.a)(this.data,n)}},onSave:function(){var t=this,n=["name","tel"];this.showArea&&n.push("areaCode"),this.showDetail&&n.push("addressDetail"),this.showPostal&&n.push("postalCode"),n.every((function(n){var e=t.getErrorMessage(n);return e&&(t.errorInfo[n]=e),!e}))&&!this.isSaving&&this.$emit("save",this.data)},getErrorMessage:function(t){var n=String(this.data[t]||"").trim();if(this.validator){var e=this.validator(t,n);if(e)return e}switch(t){case"name":return n?"":Kt("nameEmpty");case"tel":return this.telValidator(n)?"":Kt("telInvalid");case"areaCode":return n?"":Kt("areaEmpty");case"addressDetail":return n?"":Kt("addressEmpty");case"postalCode":return n&&!this.postalValidator(n)?Kt("postalEmpty"):""}},onDelete:function(){var t=this;It.confirm({title:Kt("confirmDelete")}).then((function(){t.$emit("delete",t.data)})).catch((function(){t.$emit("cancel-delete",t.data)}))},getArea:function(){return this.$refs.area?this.$refs.area.getValues():[]},setAreaCode:function(t){this.data.areaCode=t||"",t&&this.$nextTick(this.assignAreaValues)},setAddressDetail:function(t){this.data.addressDetail=t},onDetailBlur:function(){var t=this;setTimeout((function(){t.detailFocused=!1}))},genSetDefaultCell:function(t){var n=this;if(this.showSetDefault){var e={"right-icon":function(){return t(qt,{attrs:{size:"24"},on:{change:function(t){n.$emit("change-default",t)}},model:{value:n.data.isDefault,callback:function(t){n.$set(n.data,"isDefault",t)}}})}};return t(et,{directives:[{name:"show",value:!this.hideBottomFields}],attrs:{center:!0,title:Kt("defaultAddress")},class:Wt("default"),scopedSlots:e})}return t()}},render:function(t){var n=this,e=this.data,i=this.errorInfo,o=this.disableArea,r=this.hideBottomFields,a=function(t){return function(){return n.onFocus(t)}};return t("div",{class:Wt()},[t("div",{class:Wt("fields")},[t(lt,{attrs:{clearable:!0,label:Kt("name"),placeholder:Kt("namePlaceholder"),errorMessage:i.name},on:{focus:a("name")},model:{value:e.name,callback:function(t){n.$set(e,"name",t)}}}),t(lt,{attrs:{clearable:!0,type:"tel",label:Kt("tel"),maxlength:this.telMaxlength,placeholder:Kt("telPlaceholder"),errorMessage:i.tel},on:{focus:a("tel")},model:{value:e.tel,callback:function(t){n.$set(e,"tel",t)}}}),t(lt,{directives:[{name:"show",value:this.showArea}],attrs:{readonly:!0,clickable:!o,label:Kt("area"),placeholder:this.areaPlaceholder||Kt("areaPlaceholder"),errorMessage:i.areaCode,rightIcon:o?null:"arrow",value:this.areaText},on:{focus:a("areaCode"),click:function(){n.$emit("click-area"),n.showAreaPopup=!o}}}),t(Mt,{directives:[{name:"show",value:this.showDetail}],attrs:{focused:this.detailFocused,value:e.addressDetail,errorMessage:i.addressDetail,detailRows:this.detailRows,detailMaxlength:this.detailMaxlength,searchResult:this.searchResult,showSearchResult:this.showSearchResult},on:{focus:a("addressDetail"),blur:this.onDetailBlur,input:this.onChangeDetail,"select-search":function(t){n.$emit("select-search",t)}}}),this.showPostal&&t(lt,{directives:[{name:"show",value:!r}],attrs:{type:"tel",maxlength:"6",label:Kt("postal"),placeholder:Kt("postal"),errorMessage:i.postalCode},on:{focus:a("postalCode")},model:{value:e.postalCode,callback:function(t){n.$set(e,"postalCode",t)}}}),this.slots()]),this.genSetDefaultCell(t),t("div",{directives:[{name:"show",value:!r}],class:Wt("buttons")},[t(bt,{attrs:{block:!0,round:!0,loading:this.isSaving,type:"danger",text:this.saveButtonText||Kt("save")},on:{click:this.onSave}}),this.showDelete&&t(bt,{attrs:{block:!0,round:!0,loading:this.isDeleting,text:this.deleteButtonText||Kt("delete")},on:{click:this.onDelete}})]),t(v,{attrs:{round:!0,position:"bottom",lazyRender:!1,getContainer:"body"},model:{value:n.showAreaPopup,callback:function(t){n.showAreaPopup=t}}},[t(W,{ref:"area",attrs:{value:e.areaCode,loading:!this.areaListLoaded,areaList:this.areaList,columnsPlaceholder:this.areaColumnsPlaceholder},on:{confirm:this.onAreaConfirm,cancel:function(){n.showAreaPopup=!1}}})])])}}),Zt=Object(s.a)("radio-group"),Gt=Zt[0],Qt=Zt[1],tn=Gt({mixins:[Object(mt.b)("vanRadio"),$t],props:{value:null,disabled:Boolean,direction:String,checkedColor:String,iconSize:[Number,String]},watch:{value:function(t){this.$emit("change",t)}},render:function(){var t=arguments[0];return t("div",{class:Qt([this.direction]),attrs:{role:"radiogroup"}},[this.slots()])}}),nn=Object(s.a)("tag"),en=nn[0],on=nn[1];function rn(t,n,e,i){var o,a=n.type,s=n.mark,l=n.plain,d=n.color,f=n.round,h=n.size,p=n.textColor,v=((o={})[l?"color":"backgroundColor"]=d,o);l?(v.color=p||d,v.borderColor=d):(v.color=p,v.background=d);var b={mark:s,plain:l,round:f};h&&(b[h]=h);var m=n.closeable&&t(u.a,{attrs:{name:"cross"},class:on("close"),on:{click:function(t){t.stopPropagation(),Object(c.a)(i,"close")}}});return t("transition",{attrs:{name:n.closeable?"van-fade":null}},[t("span",r()([{key:"content",style:v,class:on([b,a])},Object(c.b)(i,!0)]),[null==e.default?void 0:e.default(),m])])}rn.props={size:String,mark:Boolean,color:String,plain:Boolean,round:Boolean,textColor:String,closeable:Boolean,type:{type:String,default:"default"}};var an=en(rn),sn=function(t){var n=t.parent,e=t.bem,i=t.role;return{mixins:[Object(mt.a)(n),$t],props:{name:null,value:null,disabled:Boolean,iconSize:[Number,String],checkedColor:String,labelPosition:String,labelDisabled:Boolean,shape:{type:String,default:"round"},bindGroup:{type:Boolean,default:!0}},computed:{disableBindRelation:function(){return!this.bindGroup},isDisabled:function(){return this.parent&&this.parent.disabled||this.disabled},direction:function(){return this.parent&&this.parent.direction||null},iconStyle:function(){var t=this.checkedColor||this.parent&&this.parent.checkedColor;if(t&&this.checked&&!this.isDisabled)return{borderColor:t,backgroundColor:t}},tabindex:function(){return this.isDisabled||"radio"===i&&!this.checked?-1:0}},methods:{onClick:function(t){var n=this,e=t.target,i=this.$refs.icon,o=i===e||(null==i?void 0:i.contains(e));this.isDisabled||!o&&this.labelDisabled?this.$emit("click",t):(this.toggle(),setTimeout((function(){n.$emit("click",t)})))},genIcon:function(){var t=this.$createElement,n=this.checked,i=this.iconSize||this.parent&&this.parent.iconSize;return t("div",{ref:"icon",class:e("icon",[this.shape,{disabled:this.isDisabled,checked:n}]),style:{fontSize:Object(C.a)(i)}},[this.slots("icon",{checked:n})||t(u.a,{attrs:{name:"success"},style:this.iconStyle})])},genLabel:function(){var t=this.$createElement,n=this.slots();if(n)return t("span",{class:e("label",[this.labelPosition,{disabled:this.isDisabled}])},[n])}},render:function(){var t=arguments[0],n=[this.genIcon()];return"left"===this.labelPosition?n.unshift(this.genLabel()):n.push(this.genLabel()),t("div",{attrs:{role:i,tabindex:this.tabindex,"aria-checked":String(this.checked)},class:e([{disabled:this.isDisabled,"label-disabled":this.labelDisabled},this.direction]),on:{click:this.onClick}},[n])}}},cn=Object(s.a)("radio"),ln=(0,cn[0])({mixins:[sn({bem:cn[1],role:"radio",parent:"vanRadio"})],computed:{currentValue:{get:function(){return this.parent?this.parent.value:this.value},set:function(t){(this.parent||this).$emit("input",t)}},checked:function(){return this.currentValue===this.name}},methods:{toggle:function(){this.currentValue=this.name}}}),un=Object(s.a)("address-item"),dn=un[0],fn=un[1];function hn(t,n,e,o){var a=n.disabled,s=n.switchable;return t("div",{class:fn({disabled:a}),on:{click:function(){s&&Object(c.a)(o,"select"),Object(c.a)(o,"click")}}},[t(et,r()([{attrs:{border:!1,valueClass:fn("value")},scopedSlots:{default:function(){var o=n.data,r=[t("div",{class:fn("name")},[o.name+" "+o.tel,e.tag?e.tag(Object(i.a)({},n.data)):n.data.isDefault&&n.defaultTagText?t(an,{attrs:{type:"danger",round:!0},class:fn("tag")},[n.defaultTagText]):void 0]),t("div",{class:fn("address")},[o.address])];return s&&!a?t(ln,{attrs:{name:o.id,iconSize:18}},[r]):r},"right-icon":function(){return t(u.a,{attrs:{name:"edit"},class:fn("edit"),on:{click:function(t){t.stopPropagation(),Object(c.a)(o,"edit"),Object(c.a)(o,"click")}}})}}},Object(c.b)(o)])),null==e.bottom?void 0:e.bottom(Object(i.a)({},n.data,{disabled:a}))])}hn.props={data:Object,disabled:Boolean,switchable:Boolean,defaultTagText:String};var pn=dn(hn),vn=Object(s.a)("address-list"),bn=vn[0],mn=vn[1],gn=vn[2];function yn(t,n,e,i){function o(o,r){if(o)return o.map((function(o,a){return t(pn,{attrs:{data:o,disabled:r,switchable:n.switchable,defaultTagText:n.defaultTagText},key:o.id,scopedSlots:{bottom:e["item-bottom"],tag:e.tag},on:{select:function(){Object(c.a)(i,r?"select-disabled":"select",o,a),r||Object(c.a)(i,"input",o.id)},edit:function(){Object(c.a)(i,r?"edit-disabled":"edit",o,a)},click:function(){Object(c.a)(i,"click-item",o,a)}}})}))}var a=o(n.list),s=o(n.disabledList,!0);return t("div",r()([{class:mn()},Object(c.b)(i)]),[null==e.top?void 0:e.top(),t(tn,{attrs:{value:n.value}},[a]),n.disabledText&&t("div",{class:mn("disabled-text")},[n.disabledText]),s,null==e.default?void 0:e.default(),t("div",{class:mn("bottom")},[t(bt,{attrs:{round:!0,block:!0,type:"danger",text:n.addButtonText||gn("add")},class:mn("add"),on:{click:function(){Object(c.a)(i,"add")}}})])])}yn.props={list:Array,value:[Number,String],disabledList:Array,disabledText:String,addButtonText:String,defaultTagText:String,switchable:{type:Boolean,default:!0}};var xn=bn(yn),wn=e(26),kn=Object(s.a)("badge"),_n=kn[0],Sn=kn[1],On=_n({props:{dot:Boolean,max:[Number,String],color:String,content:[Number,String],tag:{type:String,default:"div"}},methods:{hasContent:function(){return!!(this.$scopedSlots.content||Object(d.c)(this.content)&&""!==this.content)},renderContent:function(){var t=this.dot,n=this.max,e=this.content;if(!t&&this.hasContent())return this.$scopedSlots.content?this.$scopedSlots.content():Object(d.c)(n)&&Object(wn.b)(e)&&+e>n?n+"+":e},renderBadge:function(){var t=this.$createElement;if(this.hasContent()||this.dot)return t("div",{class:Sn({dot:this.dot,fixed:!!this.$scopedSlots.default}),style:{background:this.color}},[this.renderContent()])}},render:function(){var t=arguments[0];if(this.$scopedSlots.default){var n=this.tag;return t(n,{class:Sn("wrapper")},[this.$scopedSlots.default(),this.renderBadge()])}return this.renderBadge()}}),Cn=e(15);function jn(t){return"[object Date]"===Object.prototype.toString.call(t)&&!Object(wn.a)(t.getTime())}var Tn=Object(s.a)("calendar"),An=Tn[0],zn=Tn[1],Bn=Tn[2];function In(t,n){var e=t.getFullYear(),i=n.getFullYear(),o=t.getMonth(),r=n.getMonth();return e===i?o===r?0:o>r?1:-1:e>i?1:-1}function En(t,n){var e=In(t,n);if(0===e){var i=t.getDate(),o=n.getDate();return i===o?0:i>o?1:-1}return e}function Pn(t,n){return(t=new Date(t)).setDate(t.getDate()+n),t}function Ln(t){return Pn(t,1)}function Dn(t){return new Date(t)}function Nn(t){return Array.isArray(t)?t.map((function(t){return null===t?t:Dn(t)})):Dn(t)}function Mn(t){if(!t)return 0;for(;Object(wn.a)(parseInt(t,10));){if(!(t.length>1))return 0;t=t.slice(1)}return parseInt(t,10)}function Rn(t,n){return 32-new Date(t,n-1,32).getDate()}var $n=(0,Object(s.a)("calendar-month")[0])({props:{date:Date,type:String,color:String,minDate:Date,maxDate:Date,showMark:Boolean,rowHeight:[Number,String],formatter:Function,lazyRender:Boolean,currentDate:[Date,Array],allowSameDay:Boolean,showSubtitle:Boolean,showMonthTitle:Boolean,firstDayOfWeek:Number},data:function(){return{visible:!1}},computed:{title:function(){return t=this.date,Bn("monthTitle",t.getFullYear(),t.getMonth()+1);var t},rowHeightWithUnit:function(){return Object(C.a)(this.rowHeight)},offset:function(){var t=this.firstDayOfWeek,n=this.date.getDay();return t?(n+7-this.firstDayOfWeek)%7:n},totalDay:function(){return Rn(this.date.getFullYear(),this.date.getMonth()+1)},shouldRender:function(){return this.visible||!this.lazyRender},placeholders:function(){for(var t=[],n=Math.ceil((this.totalDay+this.offset)/7),e=1;e<=n;e++)t.push({type:"placeholder"});return t},days:function(){for(var t=[],n=this.date.getFullYear(),e=this.date.getMonth(),i=1;i<=this.totalDay;i++){var o=new Date(n,e,i),r=this.getDayType(o),a={date:o,type:r,text:i,bottomInfo:this.getBottomInfo(r)};this.formatter&&(a=this.formatter(a)),t.push(a)}return t}},methods:{getHeight:function(){var t;return(null==(t=this.$el)?void 0:t.getBoundingClientRect().height)||0},scrollIntoView:function(t){var n=this.$refs,e=n.days,i=n.month,o=(this.showSubtitle?e:i).getBoundingClientRect().top-t.getBoundingClientRect().top+t.scrollTop;Object(it.h)(t,o)},getMultipleDayType:function(t){var n=this,e=function(t){return n.currentDate.some((function(n){return 0===En(n,t)}))};if(e(t)){var i=Pn(t,-1),o=Ln(t),r=e(i),a=e(o);return r&&a?"multiple-middle":r?"end":a?"start":"multiple-selected"}return""},getRangeDayType:function(t){var n=this.currentDate,e=n[0],i=n[1];if(!e)return"";var o=En(t,e);if(!i)return 0===o?"start":"";var r=En(t,i);return 0===o&&0===r&&this.allowSameDay?"start-end":0===o?"start":0===r?"end":o>0&&r<0?"middle":void 0},getDayType:function(t){var n=this.type,e=this.minDate,i=this.maxDate,o=this.currentDate;return En(t,e)<0||En(t,i)>0?"disabled":null!==o?"single"===n?0===En(t,o)?"selected":"":"multiple"===n?this.getMultipleDayType(t):"range"===n?this.getRangeDayType(t):void 0:void 0},getBottomInfo:function(t){if("range"===this.type){if("start"===t||"end"===t)return Bn(t);if("start-end"===t)return Bn("startEnd")}},getDayStyle:function(t,n){var e={height:this.rowHeightWithUnit};return"placeholder"===t?(e.width="100%",e):(0===n&&(e.marginLeft=100*this.offset/7+"%"),this.color&&("start"===t||"end"===t||"start-end"===t||"multiple-selected"===t||"multiple-middle"===t?e.background=this.color:"middle"===t&&(e.color=this.color)),e)},genTitle:function(){var t=this.$createElement;if(this.showMonthTitle)return t("div",{class:zn("month-title")},[this.title])},genMark:function(){var t=this.$createElement;if(this.showMark&&this.shouldRender)return t("div",{class:zn("month-mark")},[this.date.getMonth()+1])},genDays:function(){var t=this.$createElement,n=this.shouldRender?this.days:this.placeholders;return t("div",{ref:"days",attrs:{role:"grid"},class:zn("days")},[this.genMark(),n.map(this.genDay)])},genTopInfo:function(t){var n=this.$createElement,e=this.$scopedSlots["top-info"];if(t.topInfo||e)return n("div",{class:zn("top-info")},[e?e(t):t.topInfo])},genBottomInfo:function(t){var n=this.$createElement,e=this.$scopedSlots["bottom-info"];if(t.bottomInfo||e)return n("div",{class:zn("bottom-info")},[e?e(t):t.bottomInfo])},genDay:function(t,n){var e=this,i=this.$createElement,o=t.type,r=this.getDayStyle(o,n),a="disabled"===o,s=function(){a||e.$emit("click",t)};return"selected"===o?i("div",{attrs:{role:"gridcell",tabindex:-1},style:r,class:[zn("day"),t.className],on:{click:s}},[i("div",{class:zn("selected-day"),style:{width:this.rowHeightWithUnit,height:this.rowHeightWithUnit,background:this.color}},[this.genTopInfo(t),t.text,this.genBottomInfo(t)])]):i("div",{attrs:{role:"gridcell",tabindex:a?null:-1},style:r,class:[zn("day",o),t.className],on:{click:s}},[this.genTopInfo(t),t.text,this.genBottomInfo(t)])}},render:function(){var t=arguments[0];return t("div",{class:zn("month"),ref:"month"},[this.genTitle(),this.genDays()])}}),Vn=(0,Object(s.a)("calendar-header")[0])({props:{title:String,subtitle:String,showTitle:Boolean,showSubtitle:Boolean,firstDayOfWeek:Number},methods:{genTitle:function(){var t=this.$createElement;if(this.showTitle){var n=this.slots("title")||this.title||Bn("title");return t("div",{class:zn("header-title")},[n])}},genSubtitle:function(){var t=this.$createElement;if(this.showSubtitle)return t("div",{class:zn("header-subtitle")},[this.subtitle])},genWeekDays:function(){var t=this.$createElement,n=Bn("weekdays"),e=this.firstDayOfWeek,i=[].concat(n.slice(e,7),n.slice(0,e));return t("div",{class:zn("weekdays")},[i.map((function(n){return t("span",{class:zn("weekday")},[n])}))])}},render:function(){var t=arguments[0];return t("div",{class:zn("header")},[this.genTitle(),this.genSubtitle(),this.genWeekDays()])}}),Fn=An({props:{title:String,color:String,value:Boolean,readonly:Boolean,formatter:Function,rowHeight:[Number,String],confirmText:String,rangePrompt:String,defaultDate:[Date,Array],getContainer:[String,Function],allowSameDay:Boolean,confirmDisabledText:String,type:{type:String,default:"single"},round:{type:Boolean,default:!0},position:{type:String,default:"bottom"},poppable:{type:Boolean,default:!0},maxRange:{type:[Number,String],default:null},lazyRender:{type:Boolean,default:!0},showMark:{type:Boolean,default:!0},showTitle:{type:Boolean,default:!0},showConfirm:{type:Boolean,default:!0},showSubtitle:{type:Boolean,default:!0},closeOnPopstate:{type:Boolean,default:!0},closeOnClickOverlay:{type:Boolean,default:!0},safeAreaInsetBottom:{type:Boolean,default:!0},minDate:{type:Date,validator:jn,default:function(){return new Date}},maxDate:{type:Date,validator:jn,default:function(){var t=new Date;return new Date(t.getFullYear(),t.getMonth()+6,t.getDate())}},firstDayOfWeek:{type:[Number,String],default:0,validator:function(t){return t>=0&&t<=6}}},inject:{vanPopup:{default:null}},data:function(){return{subtitle:"",currentDate:this.getInitialDate()}},computed:{months:function(){var t=[],n=new Date(this.minDate);n.setDate(1);do{t.push(new Date(n)),n.setMonth(n.getMonth()+1)}while(1!==In(n,this.maxDate));return t},buttonDisabled:function(){var t=this.type,n=this.currentDate;if(n){if("range"===t)return!n[0]||!n[1];if("multiple"===t)return!n.length}return!n},dayOffset:function(){return this.firstDayOfWeek?this.firstDayOfWeek%7:0}},watch:{value:"init",type:function(){this.reset()},defaultDate:function(t){this.currentDate=t,this.scrollIntoView()}},mounted:function(){var t;(this.init(),this.poppable)||(null==(t=this.vanPopup)||t.$on("opened",this.onScroll))},activated:function(){this.init()},methods:{reset:function(t){void 0===t&&(t=this.getInitialDate()),this.currentDate=t,this.scrollIntoView()},init:function(){var t=this;this.poppable&&!this.value||this.$nextTick((function(){t.bodyHeight=Math.floor(t.$refs.body.getBoundingClientRect().height),t.onScroll(),t.scrollIntoView()}))},scrollToDate:function(t){var n=this;Object(Cn.c)((function(){var e=n.value||!n.poppable;t&&e&&(n.months.some((function(e,i){if(0===In(e,t)){var o=n.$refs,r=o.body;return o.months[i].scrollIntoView(r),!0}return!1})),n.onScroll())}))},scrollIntoView:function(){var t=this.currentDate;if(t){var n="single"===this.type?t:t[0];this.scrollToDate(n)}},getInitialDate:function(){var t=this.type,n=this.minDate,e=this.maxDate,i=this.defaultDate;if(null===i)return i;var o=new Date;if(-1===En(o,n)?o=n:1===En(o,e)&&(o=e),"range"===t){var r=i||[];return[r[0]||o,r[1]||Ln(o)]}return"multiple"===t?i||[o]:i||o},onScroll:function(){var t=this.$refs,n=t.body,e=t.months,i=Object(it.c)(n),o=i+this.bodyHeight,r=e.map((function(t){return t.getHeight()}));if(!(o>r.reduce((function(t,n){return t+n}),0)&&i>0)){for(var a,s=0,c=[-1,-1],l=0;l=i&&(c[1]=l,a||(a=e[l],c[0]=l),e[l].showed||(e[l].showed=!0,this.$emit("month-show",{date:e[l].date,title:e[l].title}))),s+=r[l]}e.forEach((function(t,n){t.visible=n>=c[0]-1&&n<=c[1]+1})),a&&(this.subtitle=a.title)}},onClickDay:function(t){if(!this.readonly){var n=t.date,e=this.type,i=this.currentDate;if("range"===e){if(!i)return void this.select([n,null]);var o=i[0],r=i[1];if(o&&!r){var a=En(n,o);1===a?this.select([o,n],!0):-1===a?this.select([n,null]):this.allowSameDay&&this.select([n,n],!0)}else this.select([n,null])}else if("multiple"===e){if(!i)return void this.select([n]);var s;if(this.currentDate.some((function(t,e){var i=0===En(t,n);return i&&(s=e),i}))){var c=i.splice(s,1)[0];this.$emit("unselect",Dn(c))}else this.maxRange&&i.length>=this.maxRange?Object(ut.a)(this.rangePrompt||Bn("rangePrompt",this.maxRange)):this.select([].concat(i,[n]))}else this.select(n,!0)}},togglePopup:function(t){this.$emit("input",t)},select:function(t,n){var e=this,i=function(t){e.currentDate=t,e.$emit("select",Nn(e.currentDate))};if(n&&"range"===this.type&&!this.checkRange(t))return void(this.showConfirm?i([t[0],Pn(t[0],this.maxRange-1)]):i(t));i(t),n&&!this.showConfirm&&this.onConfirm()},checkRange:function(t){var n=this.maxRange,e=this.rangePrompt;return!(n&&function(t){var n=t[0].getTime();return(t[1].getTime()-n)/864e5+1}(t)>n)||(Object(ut.a)(e||Bn("rangePrompt",n)),!1)},onConfirm:function(){this.$emit("confirm",Nn(this.currentDate))},genMonth:function(t,n){var e=this.$createElement,i=0!==n||!this.showSubtitle;return e($n,{ref:"months",refInFor:!0,attrs:{date:t,type:this.type,color:this.color,minDate:this.minDate,maxDate:this.maxDate,showMark:this.showMark,formatter:this.formatter,rowHeight:this.rowHeight,lazyRender:this.lazyRender,currentDate:this.currentDate,showSubtitle:this.showSubtitle,allowSameDay:this.allowSameDay,showMonthTitle:i,firstDayOfWeek:this.dayOffset},scopedSlots:{"top-info":this.$scopedSlots["top-info"],"bottom-info":this.$scopedSlots["bottom-info"]},on:{click:this.onClickDay}})},genFooterContent:function(){var t=this.$createElement,n=this.slots("footer");if(n)return n;if(this.showConfirm){var e=this.buttonDisabled?this.confirmDisabledText:this.confirmText;return t(bt,{attrs:{round:!0,block:!0,type:"danger",color:this.color,disabled:this.buttonDisabled,nativeType:"button"},class:zn("confirm"),on:{click:this.onConfirm}},[e||Bn("confirm")])}},genFooter:function(){return(0,this.$createElement)("div",{class:zn("footer",{unfit:!this.safeAreaInsetBottom})},[this.genFooterContent()])},genCalendar:function(){var t=this,n=this.$createElement;return n("div",{class:zn()},[n(Vn,{attrs:{title:this.title,showTitle:this.showTitle,subtitle:this.subtitle,showSubtitle:this.showSubtitle,firstDayOfWeek:this.dayOffset},scopedSlots:{title:function(){return t.slots("title")}}}),n("div",{ref:"body",class:zn("body"),on:{scroll:this.onScroll}},[this.months.map(this.genMonth)]),this.genFooter()])}},render:function(){var t=this,n=arguments[0];if(this.poppable){var e,i=function(n){return function(){return t.$emit(n)}};return n(v,{attrs:(e={round:!0,value:this.value},e.round=this.round,e.position=this.position,e.closeable=this.showTitle||this.showSubtitle,e.getContainer=this.getContainer,e.closeOnPopstate=this.closeOnPopstate,e.closeOnClickOverlay=this.closeOnClickOverlay,e),class:zn("popup"),on:{input:this.togglePopup,open:i("open"),opened:i("opened"),close:i("close"),closed:i("closed")}},[this.genCalendar()])}return this.genCalendar()}}),Hn=e(24),qn=Object(s.a)("card"),Yn=qn[0],Un=qn[1];function Wn(t,n,e,i){var o,a=n.thumb,s=e.num||Object(d.c)(n.num),l=e.price||Object(d.c)(n.price),u=e["origin-price"]||Object(d.c)(n.originPrice),f=s||l||u||e.bottom;function h(t){Object(c.a)(i,"click-thumb",t)}function p(){if(e.tag||n.tag)return t("div",{class:Un("tag")},[e.tag?e.tag():t(an,{attrs:{mark:!0,type:"danger"}},[n.tag])])}return t("div",r()([{class:Un()},Object(c.b)(i,!0)]),[t("div",{class:Un("header")},[function(){if(e.thumb||a)return t("a",{attrs:{href:n.thumbLink},class:Un("thumb"),on:{click:h}},[e.thumb?e.thumb():t(Hn.a,{attrs:{src:a,width:"100%",height:"100%",fit:"cover","lazy-load":n.lazyLoad}}),p()])}(),t("div",{class:Un("content",{centered:n.centered})},[t("div",[e.title?e.title():n.title?t("div",{class:[Un("title"),"van-multi-ellipsis--l2"]},[n.title]):void 0,e.desc?e.desc():n.desc?t("div",{class:[Un("desc"),"van-ellipsis"]},[n.desc]):void 0,null==e.tags?void 0:e.tags()]),f&&t("div",{class:"van-card__bottom"},[null==(o=e["price-top"])?void 0:o.call(e),function(){if(l)return t("div",{class:Un("price")},[e.price?e.price():(i=n.price.toString().split("."),t("div",[t("span",{class:Un("price-currency")},[n.currency]),t("span",{class:Un("price-integer")},[i[0]]),".",t("span",{class:Un("price-decimal")},[i[1]])]))]);var i}(),function(){if(u){var i=e["origin-price"];return t("div",{class:Un("origin-price")},[i?i():n.currency+" "+n.originPrice])}}(),function(){if(s)return t("div",{class:Un("num")},[e.num?e.num():"x"+n.num])}(),null==e.bottom?void 0:e.bottom()])])]),function(){if(e.footer)return t("div",{class:Un("footer")},[e.footer()])}()])}Wn.props={tag:String,desc:String,thumb:String,title:String,centered:Boolean,lazyLoad:Boolean,thumbLink:String,num:[Number,String],price:[Number,String],originPrice:[Number,String],currency:{type:String,default:"¥"}};var Kn=Yn(Wn),Xn=Object(s.a)("tab"),Jn=Xn[0],Zn=Xn[1],Gn=Jn({mixins:[Object(mt.a)("vanTabs")],props:Object(i.a)({},J,{dot:Boolean,name:[Number,String],info:[Number,String],badge:[Number,String],title:String,titleStyle:null,titleClass:null,disabled:Boolean}),data:function(){return{inited:!1}},computed:{computedName:function(){var t;return null!=(t=this.name)?t:this.index},isActive:function(){var t=this.computedName===this.parent.currentName;return t&&(this.inited=!0),t}},watch:{title:function(){this.parent.setLine(),this.parent.scrollIntoView()},inited:function(t){var n=this;this.parent.lazyRender&&t&&this.$nextTick((function(){n.parent.$emit("rendered",n.computedName,n.title)}))}},render:function(t){var n=this.slots,e=this.parent,i=this.isActive,o=n();if(o||e.animated){var r=e.scrollspy||i,a=this.inited||e.scrollspy||!e.lazyRender?o:t();return e.animated?t("div",{attrs:{role:"tabpanel","aria-hidden":!i},class:Zn("pane-wrapper",{inactive:!i})},[t("div",{class:Zn("pane")},[a])]):t("div",{directives:[{name:"show",value:r}],attrs:{role:"tabpanel"},class:Zn("pane")},[a])}}});var Qn=e(27);function te(t){var n=t.interceptor,e=t.args,i=t.done;if(n){var o=n.apply(void 0,e);Object(d.g)(o)?o.then((function(t){t&&i()})).catch(d.i):o&&i()}else i()}var ne=e(18),ee=e(21),ie=Object(s.a)("tab"),oe=ie[0],re=ie[1],ae=oe({props:{dot:Boolean,type:String,info:[Number,String],color:String,title:String,isActive:Boolean,disabled:Boolean,scrollable:Boolean,activeColor:String,inactiveColor:String},computed:{style:function(){var t={},n=this.color,e=this.isActive,i="card"===this.type;n&&i&&(t.borderColor=n,this.disabled||(e?t.backgroundColor=n:t.color=n));var o=e?this.activeColor:this.inactiveColor;return o&&(t.color=o),t}},methods:{onClick:function(){this.$emit("click")},genText:function(){var t=this.$createElement,n=t("span",{class:re("text",{ellipsis:!this.scrollable})},[this.slots()||this.title]);return this.dot||Object(d.c)(this.info)&&""!==this.info?t("span",{class:re("text-wrapper")},[n,t(ee.a,{attrs:{dot:this.dot,info:this.info}})]):n}},render:function(){var t=arguments[0];return t("div",{attrs:{role:"tab","aria-selected":this.isActive},class:[re({active:this.isActive,disabled:this.disabled})],style:this.style,on:{click:this.onClick}},[this.genText()])}}),se=Object(s.a)("sticky"),ce=se[0],le=se[1],ue=ce({mixins:[Object(ne.a)((function(t,n){if(this.scroller||(this.scroller=Object(it.d)(this.$el)),this.observer){var e=n?"observe":"unobserve";this.observer[e](this.$el)}t(this.scroller,"scroll",this.onScroll,!0),this.onScroll()}))],props:{zIndex:[Number,String],container:null,offsetTop:{type:[Number,String],default:0}},data:function(){return{fixed:!1,height:0,transform:0}},computed:{offsetTopPx:function(){return Object(C.b)(this.offsetTop)},style:function(){if(this.fixed){var t={};return Object(d.c)(this.zIndex)&&(t.zIndex=this.zIndex),this.offsetTopPx&&this.fixed&&(t.top=this.offsetTopPx+"px"),this.transform&&(t.transform="translate3d(0, "+this.transform+"px, 0)"),t}}},watch:{fixed:function(t){this.$emit("change",t)}},created:function(){var t=this;!d.h&&window.IntersectionObserver&&(this.observer=new IntersectionObserver((function(n){n[0].intersectionRatio>0&&t.onScroll()}),{root:document.body}))},methods:{onScroll:function(){var t=this;if(!Object(Qn.a)(this.$el)){this.height=this.$el.offsetHeight;var n=this.container,e=this.offsetTopPx,i=Object(it.c)(window),o=Object(it.a)(this.$el),r=function(){t.$emit("scroll",{scrollTop:i,isFixed:t.fixed})};if(n){var a=o+n.offsetHeight;if(i+e+this.height>a){var s=this.height+i-a;return so?(this.fixed=!0,this.transform=0):this.fixed=!1,r()}}},render:function(){var t=arguments[0],n=this.fixed,e={height:n?this.height+"px":null};return t("div",{style:e},[t("div",{class:le({fixed:n}),style:this.style},[this.slots()])])}}),de=Object(s.a)("tabs"),fe=de[0],he=de[1],pe=fe({mixins:[A.a],props:{count:Number,duration:[Number,String],animated:Boolean,swipeable:Boolean,currentIndex:Number},computed:{style:function(){if(this.animated)return{transform:"translate3d("+-1*this.currentIndex*100+"%, 0, 0)",transitionDuration:this.duration+"s"}},listeners:function(){if(this.swipeable)return{touchstart:this.touchStart,touchmove:this.touchMove,touchend:this.onTouchEnd,touchcancel:this.onTouchEnd}}},methods:{onTouchEnd:function(){var t=this.direction,n=this.deltaX,e=this.currentIndex;"horizontal"===t&&this.offsetX>=50&&(n>0&&0!==e?this.$emit("change",e-1):n<0&&e!==this.count-1&&this.$emit("change",e+1))},genChildren:function(){var t=this.$createElement;return this.animated?t("div",{class:he("track"),style:this.style},[this.slots()]):this.slots()}},render:function(){var t=arguments[0];return t("div",{class:he("content",{animated:this.animated}),on:Object(i.a)({},this.listeners)},[this.genChildren()])}}),ve=Object(s.a)("tabs"),be=ve[0],me=ve[1],ge=be({mixins:[Object(mt.b)("vanTabs"),Object(ne.a)((function(t){this.scroller||(this.scroller=Object(it.d)(this.$el)),t(window,"resize",this.resize,!0),this.scrollspy&&t(this.scroller,"scroll",this.onScroll,!0)}))],inject:{vanPopup:{default:null}},model:{prop:"active"},props:{color:String,border:Boolean,sticky:Boolean,animated:Boolean,swipeable:Boolean,scrollspy:Boolean,background:String,lineWidth:[Number,String],lineHeight:[Number,String],beforeChange:Function,titleActiveColor:String,titleInactiveColor:String,type:{type:String,default:"line"},active:{type:[Number,String],default:0},ellipsis:{type:Boolean,default:!0},duration:{type:[Number,String],default:.3},offsetTop:{type:[Number,String],default:0},lazyRender:{type:Boolean,default:!0},swipeThreshold:{type:[Number,String],default:5}},data:function(){return{position:"",currentIndex:null,lineStyle:{backgroundColor:this.color}}},computed:{scrollable:function(){return this.children.length>this.swipeThreshold||!this.ellipsis},navStyle:function(){return{borderColor:this.color,background:this.background}},currentName:function(){var t=this.children[this.currentIndex];if(t)return t.computedName},offsetTopPx:function(){return Object(C.b)(this.offsetTop)},scrollOffset:function(){return this.sticky?this.offsetTopPx+this.tabHeight:0}},watch:{color:"setLine",active:function(t){t!==this.currentName&&this.setCurrentIndexByName(t)},children:function(){var t=this;this.setCurrentIndexByName(this.active),this.setLine(),this.$nextTick((function(){t.scrollIntoView(!0)}))},currentIndex:function(){this.scrollIntoView(),this.setLine(),this.stickyFixed&&!this.scrollspy&&Object(it.g)(Math.ceil(Object(it.a)(this.$el)-this.offsetTopPx))},scrollspy:function(t){t?Object(S.b)(this.scroller,"scroll",this.onScroll,!0):Object(S.a)(this.scroller,"scroll",this.onScroll)}},mounted:function(){var t=this;this.init(),this.vanPopup&&this.vanPopup.onReopen((function(){t.setLine()}))},activated:function(){this.init(),this.setLine()},methods:{resize:function(){this.setLine()},init:function(){var t=this;this.$nextTick((function(){t.inited=!0,t.tabHeight=Object(it.e)(t.$refs.wrap),t.scrollIntoView(!0)}))},setLine:function(){var t=this,n=this.inited;this.$nextTick((function(){var e=t.$refs.titles;if(e&&e[t.currentIndex]&&"line"===t.type&&!Object(Qn.a)(t.$el)){var i=e[t.currentIndex].$el,o=t.lineWidth,r=t.lineHeight,a=i.offsetLeft+i.offsetWidth/2,s={width:Object(C.a)(o),backgroundColor:t.color,transform:"translateX("+a+"px) translateX(-50%)"};if(n&&(s.transitionDuration=t.duration+"s"),Object(d.c)(r)){var c=Object(C.a)(r);s.height=c,s.borderRadius=c}t.lineStyle=s}}))},setCurrentIndexByName:function(t){var n=this.children.filter((function(n){return n.computedName===t})),e=(this.children[0]||{}).index||0;this.setCurrentIndex(n.length?n[0].index:e)},setCurrentIndex:function(t){var n=this.findAvailableTab(t);if(Object(d.c)(n)){var e=this.children[n],i=e.computedName,o=null!==this.currentIndex;this.currentIndex=n,i!==this.active&&(this.$emit("input",i),o&&this.$emit("change",i,e.title))}},findAvailableTab:function(t){for(var n=t=0&&tn||!r&&on?Object(Cn.c)(e):i&&Object(Cn.c)(i)}()}(this.scroller,o,t?0:+this.duration,(function(){n.lockScroll=!1}))}}},onScroll:function(){if(this.scrollspy&&!this.lockScroll){var t=this.getCurrentIndexOnScroll();this.setCurrentIndex(t)}},getCurrentIndexOnScroll:function(){for(var t=this.children,n=0;nthis.scrollOffset)return 0===n?0:n-1}return t.length-1}},render:function(){var t,n=this,e=arguments[0],i=this.type,o=this.animated,r=this.scrollable,a=this.children.map((function(t,o){var a;return e(ae,{ref:"titles",refInFor:!0,attrs:{type:i,dot:t.dot,info:null!=(a=t.badge)?a:t.info,title:t.title,color:n.color,isActive:o===n.currentIndex,disabled:t.disabled,scrollable:r,activeColor:n.titleActiveColor,inactiveColor:n.titleInactiveColor},style:t.titleStyle,class:t.titleClass,scopedSlots:{default:function(){return t.slots("title")}},on:{click:function(){n.onClick(t,o)}}})})),s=e("div",{ref:"wrap",class:[me("wrap",{scrollable:r}),(t={},t[O.f]="line"===i&&this.border,t)]},[e("div",{ref:"nav",attrs:{role:"tablist"},class:me("nav",[i,{complete:this.scrollable}]),style:this.navStyle},[this.slots("nav-left"),a,"line"===i&&e("div",{class:me("line"),style:this.lineStyle}),this.slots("nav-right")])]);return e("div",{class:me([i])},[this.sticky?e(ue,{attrs:{container:this.$el,offsetTop:this.offsetTop},on:{scroll:this.onSticktScroll}},[s]):s,e(pe,{attrs:{count:this.children.length,animated:o,duration:this.duration,swipeable:this.swipeable,currentIndex:this.currentIndex},on:{change:this.setCurrentIndex}},[this.slots()])])}}),ye=Object(s.a)("cascader"),xe=ye[0],we=ye[1],ke=ye[2],_e=xe({props:{title:String,value:[Number,String],fieldNames:Object,placeholder:String,activeColor:String,options:{type:Array,default:function(){return[]}},closeable:{type:Boolean,default:!0},showHeader:{type:Boolean,default:!0}},data:function(){return{tabs:[],activeTab:0}},computed:{textKey:function(){var t;return(null==(t=this.fieldNames)?void 0:t.text)||"text"},valueKey:function(){var t;return(null==(t=this.fieldNames)?void 0:t.value)||"value"},childrenKey:function(){var t;return(null==(t=this.fieldNames)?void 0:t.children)||"children"}},watch:{options:{deep:!0,handler:"updateTabs"},value:function(t){var n=this;if((t||0===t)&&-1!==this.tabs.map((function(t){var e;return null==(e=t.selectedOption)?void 0:e[n.valueKey]})).indexOf(t))return;this.updateTabs()}},created:function(){this.updateTabs()},methods:{getSelectedOptionsByValue:function(t,n){for(var e=0;en+1&&(this.tabs=this.tabs.slice(0,n+1)),t[this.childrenKey]){var i={options:t[this.childrenKey],selectedOption:null};this.tabs[n+1]?this.$set(this.tabs,n+1,i):this.tabs.push(i),this.$nextTick((function(){e.activeTab++}))}var o=this.tabs.map((function(t){return t.selectedOption})).filter((function(t){return!!t})),r={value:t[this.valueKey],tabIndex:n,selectedOptions:o};this.$emit("input",t[this.valueKey]),this.$emit("change",r),t[this.childrenKey]||this.$emit("finish",r)},onClose:function(){this.$emit("close")},renderHeader:function(){var t=this.$createElement;if(this.showHeader)return t("div",{class:we("header")},[t("h2",{class:we("title")},[this.slots("title")||this.title]),this.closeable?t(u.a,{attrs:{name:"cross"},class:we("close-icon"),on:{click:this.onClose}}):null])},renderOptions:function(t,n,e){var i=this,o=this.$createElement;return o("ul",{class:we("options")},[t.map((function(t){var r=n&&t[i.valueKey]===n[i.valueKey],a=i.slots("option",{option:t,selected:r})||o("span",[t[i.textKey]]);return o("li",{class:we("option",{selected:r}),style:{color:r?i.activeColor:null},on:{click:function(){i.onSelect(t,e)}}},[a,r?o(u.a,{attrs:{name:"success"},class:we("selected-icon")}):null])}))])},renderTab:function(t,n){var e=this.$createElement,i=t.options,o=t.selectedOption,r=o?o[this.textKey]:this.placeholder||ke("select");return e(Gn,{attrs:{title:r,titleClass:we("tab",{unselected:!o})}},[this.renderOptions(i,o,n)])},renderTabs:function(){var t=this;return(0,this.$createElement)(ge,{attrs:{animated:!0,swipeable:!0,swipeThreshold:0,color:this.activeColor},class:we("tabs"),model:{value:t.activeTab,callback:function(n){t.activeTab=n}}},[this.tabs.map(this.renderTab)])}},render:function(){var t=arguments[0];return t("div",{class:we()},[this.renderHeader(),this.renderTabs()])}}),Se=Object(s.a)("cell-group"),Oe=Se[0],Ce=Se[1];function je(t,n,e,i){var o,a=t("div",r()([{class:[Ce({inset:n.inset}),(o={},o[O.f]=n.border,o)]},Object(c.b)(i,!0)]),[null==e.default?void 0:e.default()]);return n.title||e.title?t("div",{key:i.data.key},[t("div",{class:Ce("title",{inset:n.inset})},[e.title?e.title():n.title]),a]):a}je.props={title:String,inset:Boolean,border:{type:Boolean,default:!0}};var Te=Oe(je),Ae=Object(s.a)("checkbox"),ze=(0,Ae[0])({mixins:[sn({bem:Ae[1],role:"checkbox",parent:"vanCheckbox"})],computed:{checked:{get:function(){return this.parent?-1!==this.parent.value.indexOf(this.name):this.value},set:function(t){this.parent?this.setParentValue(t):this.$emit("input",t)}}},watch:{value:function(t){this.$emit("change",t)}},methods:{toggle:function(t){var n=this;void 0===t&&(t=!this.checked),clearTimeout(this.toggleTask),this.toggleTask=setTimeout((function(){n.checked=t}))},setParentValue:function(t){var n=this.parent,e=n.value.slice();if(t){if(n.max&&e.length>=n.max)return;-1===e.indexOf(this.name)&&(e.push(this.name),n.$emit("input",e))}else{var i=e.indexOf(this.name);-1!==i&&(e.splice(i,1),n.$emit("input",e))}}}}),Be=Object(s.a)("checkbox-group"),Ie=Be[0],Ee=Be[1],Pe=Ie({mixins:[Object(mt.b)("vanCheckbox"),$t],props:{max:[Number,String],disabled:Boolean,direction:String,iconSize:[Number,String],checkedColor:String,value:{type:Array,default:function(){return[]}}},watch:{value:function(t){this.$emit("change",t)}},methods:{toggleAll:function(t){void 0===t&&(t={}),"boolean"==typeof t&&(t={checked:t});var n=t,e=n.checked,i=n.skipDisabled,o=this.children.filter((function(t){return t.disabled&&i?t.checked:null!=e?e:!t.checked})).map((function(t){return t.name}));this.$emit("input",o)}},render:function(){var t=arguments[0];return t("div",{class:Ee([this.direction])},[this.slots()])}}),Le=Object(s.a)("circle"),De=Le[0],Ne=Le[1],Me=0;function Re(t){return Math.min(Math.max(t,0),100)}var $e=De({props:{text:String,size:[Number,String],color:[String,Object],layerColor:String,strokeLinecap:String,value:{type:Number,default:0},speed:{type:[Number,String],default:0},fill:{type:String,default:"none"},rate:{type:[Number,String],default:100},strokeWidth:{type:[Number,String],default:40},clockwise:{type:Boolean,default:!0}},beforeCreate:function(){this.uid="van-circle-gradient-"+Me++},computed:{style:function(){var t=Object(C.a)(this.size);return{width:t,height:t}},path:function(){return t=this.clockwise,"M "+(n=this.viewBoxSize)/2+" "+n/2+" m 0, -500 a 500, 500 0 1, "+(e=t?1:0)+" 0, 1000 a 500, 500 0 1, "+e+" 0, -1000";var t,n,e},viewBoxSize:function(){return+this.strokeWidth+1e3},layerStyle:function(){return{fill:""+this.fill,stroke:""+this.layerColor,strokeWidth:this.strokeWidth+"px"}},hoverStyle:function(){var t=3140*this.value/100;return{stroke:""+(this.gradient?"url(#"+this.uid+")":this.color),strokeWidth:+this.strokeWidth+1+"px",strokeLinecap:this.strokeLinecap,strokeDasharray:t+"px 3140px"}},gradient:function(){return Object(d.f)(this.color)},LinearGradient:function(){var t=this,n=this.$createElement;if(this.gradient){var e=Object.keys(this.color).sort((function(t,n){return parseFloat(t)-parseFloat(n)})).map((function(e,i){return n("stop",{key:i,attrs:{offset:e,"stop-color":t.color[e]}})}));return n("defs",[n("linearGradient",{attrs:{id:this.uid,x1:"100%",y1:"0%",x2:"0%",y2:"0%"}},[e])])}}},watch:{rate:{handler:function(t){this.startTime=Date.now(),this.startRate=this.value,this.endRate=Re(t),this.increase=this.endRate>this.startRate,this.duration=Math.abs(1e3*(this.startRate-this.endRate)/this.speed),this.speed?(Object(Cn.a)(this.rafId),this.rafId=Object(Cn.c)(this.animate)):this.$emit("input",this.endRate)},immediate:!0}},methods:{animate:function(){var t=Date.now(),n=Math.min((t-this.startTime)/this.duration,1)*(this.endRate-this.startRate)+this.startRate;this.$emit("input",Re(parseFloat(n.toFixed(1)))),(this.increase?nthis.endRate)&&(this.rafId=Object(Cn.c)(this.animate))}},render:function(){var t=arguments[0];return t("div",{class:Ne(),style:this.style},[t("svg",{attrs:{viewBox:"0 0 "+this.viewBoxSize+" "+this.viewBoxSize}},[this.LinearGradient,t("path",{class:Ne("layer"),style:this.layerStyle,attrs:{d:this.path}}),t("path",{attrs:{d:this.path},class:Ne("hover"),style:this.hoverStyle})]),this.slots()||this.text&&t("div",{class:Ne("text")},[this.text])])}}),Ve=Object(s.a)("col"),Fe=Ve[0],He=Ve[1],qe=Fe({mixins:[Object(mt.a)("vanRow")],props:{span:[Number,String],offset:[Number,String],tag:{type:String,default:"div"}},computed:{style:function(){var t=this.index,n=(this.parent||{}).spaces;if(n&&n[t]){var e=n[t],i=e.left,o=e.right;return{paddingLeft:i?i+"px":null,paddingRight:o?o+"px":null}}}},methods:{onClick:function(t){this.$emit("click",t)}},render:function(){var t,n=arguments[0],e=this.span,i=this.offset;return n(this.tag,{style:this.style,class:He((t={},t[e]=e,t["offset-"+i]=i,t)),on:{click:this.onClick}},[this.slots()])}}),Ye=Object(s.a)("collapse"),Ue=Ye[0],We=Ye[1],Ke=Ue({mixins:[Object(mt.b)("vanCollapse")],props:{accordion:Boolean,value:[String,Number,Array],border:{type:Boolean,default:!0}},methods:{switch:function(t,n){this.accordion||(t=n?this.value.concat(t):this.value.filter((function(n){return n!==t}))),this.$emit("change",t),this.$emit("input",t)}},render:function(){var t,n=arguments[0];return n("div",{class:[We(),(t={},t[O.f]=this.border,t)]},[this.slots()])}}),Xe=Object(s.a)("collapse-item"),Je=Xe[0],Ze=Xe[1],Ge=["title","icon","right-icon"],Qe=Je({mixins:[Object(mt.a)("vanCollapse")],props:Object(i.a)({},Z,{name:[Number,String],disabled:Boolean,lazyRender:{type:Boolean,default:!0},isLink:{type:Boolean,default:!0}}),data:function(){return{show:null,inited:null}},computed:{currentName:function(){var t;return null!=(t=this.name)?t:this.index},expanded:function(){var t=this;if(!this.parent)return null;var n=this.parent,e=n.value;return n.accordion?e===this.currentName:e.some((function(n){return n===t.currentName}))}},created:function(){this.show=this.expanded,this.inited=this.expanded},watch:{expanded:function(t,n){var e=this;null!==n&&(t&&(this.show=!0,this.inited=!0),(t?this.$nextTick:Cn.c)((function(){var n=e.$refs,i=n.content,o=n.wrapper;if(i&&o){var r=i.offsetHeight;if(r){var a=r+"px";o.style.height=t?0:a,Object(Cn.b)((function(){o.style.height=t?a:0}))}else e.onTransitionEnd()}})))}},methods:{onClick:function(){this.disabled||this.toggle()},toggle:function(t){void 0===t&&(t=!this.expanded);var n=this.parent,e=this.currentName,i=n.accordion&&e===n.value?"":e;this.parent.switch(i,t)},onTransitionEnd:function(){this.expanded?this.$refs.wrapper.style.height="":this.show=!1},genTitle:function(){var t=this,n=this.$createElement,e=this.border,o=this.disabled,r=this.expanded,a=Ge.reduce((function(n,e){return t.slots(e)&&(n[e]=function(){return t.slots(e)}),n}),{});return this.slots("value")&&(a.default=function(){return t.slots("value")}),n(et,{attrs:{role:"button",tabindex:o?-1:0,"aria-expanded":String(r)},class:Ze("title",{disabled:o,expanded:r,borderless:!e}),on:{click:this.onClick},scopedSlots:a,props:Object(i.a)({},this.$props)})},genContent:function(){var t=this.$createElement;if(this.inited||!this.lazyRender)return t("div",{directives:[{name:"show",value:this.show}],ref:"wrapper",class:Ze("wrapper"),on:{transitionend:this.onTransitionEnd}},[t("div",{ref:"content",class:Ze("content")},[this.slots()])])}},render:function(){var t=arguments[0];return t("div",{class:[Ze({border:this.index&&this.border})]},[this.genTitle(),this.genContent()])}}),ti=Object(s.a)("contact-card"),ni=ti[0],ei=ti[1],ii=ti[2];function oi(t,n,e,i){var o=n.type,a=n.editable;return t(et,r()([{attrs:{center:!0,border:!1,isLink:a,valueClass:ei("value"),icon:"edit"===o?"contact":"add-square"},class:ei([o]),on:{click:function(t){a&&Object(c.a)(i,"click",t)}}},Object(c.b)(i)]),["add"===o?n.addText||ii("addText"):[t("div",[ii("name")+":"+n.name]),t("div",[ii("tel")+":"+n.tel])]])}oi.props={tel:String,name:String,addText:String,editable:{type:Boolean,default:!0},type:{type:String,default:"add"}};var ri=ni(oi),ai=Object(s.a)("contact-edit"),si=ai[0],ci=ai[1],li=ai[2],ui={tel:"",name:""},di=si({props:{isEdit:Boolean,isSaving:Boolean,isDeleting:Boolean,showSetDefault:Boolean,setDefaultLabel:String,contactInfo:{type:Object,default:function(){return Object(i.a)({},ui)}},telValidator:{type:Function,default:k}},data:function(){return{data:Object(i.a)({},ui,this.contactInfo),errorInfo:{name:"",tel:""}}},watch:{contactInfo:function(t){this.data=Object(i.a)({},ui,t)}},methods:{onFocus:function(t){this.errorInfo[t]=""},getErrorMessageByKey:function(t){var n=this.data[t].trim();switch(t){case"name":return n?"":li("nameInvalid");case"tel":return this.telValidator(n)?"":li("telInvalid")}},onSave:function(){var t=this;["name","tel"].every((function(n){var e=t.getErrorMessageByKey(n);return e&&(t.errorInfo[n]=e),!e}))&&!this.isSaving&&this.$emit("save",this.data)},onDelete:function(){var t=this;It.confirm({title:li("confirmDelete")}).then((function(){t.$emit("delete",t.data)}))}},render:function(){var t=this,n=arguments[0],e=this.data,i=this.errorInfo,o=function(n){return function(){return t.onFocus(n)}};return n("div",{class:ci()},[n("div",{class:ci("fields")},[n(lt,{attrs:{clearable:!0,maxlength:"30",label:li("name"),placeholder:li("nameEmpty"),errorMessage:i.name},on:{focus:o("name")},model:{value:e.name,callback:function(n){t.$set(e,"name",n)}}}),n(lt,{attrs:{clearable:!0,type:"tel",label:li("tel"),placeholder:li("telEmpty"),errorMessage:i.tel},on:{focus:o("tel")},model:{value:e.tel,callback:function(n){t.$set(e,"tel",n)}}})]),this.showSetDefault&&n(et,{attrs:{title:this.setDefaultLabel,border:!1},class:ci("switch-cell")},[n(qt,{attrs:{size:24},slot:"right-icon",on:{change:function(n){t.$emit("change-default",n)}},model:{value:e.isDefault,callback:function(n){t.$set(e,"isDefault",n)}}})]),n("div",{class:ci("buttons")},[n(bt,{attrs:{block:!0,round:!0,type:"danger",text:li("save"),loading:this.isSaving},on:{click:this.onSave}}),this.isEdit&&n(bt,{attrs:{block:!0,round:!0,text:li("delete"),loading:this.isDeleting},on:{click:this.onDelete}})])])}}),fi=Object(s.a)("contact-list"),hi=fi[0],pi=fi[1],vi=fi[2];function bi(t,n,e,i){var o=n.list&&n.list.map((function(e,o){function r(){Object(c.a)(i,"input",e.id),Object(c.a)(i,"select",e,o)}return t(et,{key:e.id,attrs:{isLink:!0,center:!0,valueClass:pi("item-value")},class:pi("item"),scopedSlots:{icon:function(){return t(u.a,{attrs:{name:"edit"},class:pi("edit"),on:{click:function(t){t.stopPropagation(),Object(c.a)(i,"edit",e,o)}}})},default:function(){var i=[e.name+","+e.tel];return e.isDefault&&n.defaultTagText&&i.push(t(an,{attrs:{type:"danger",round:!0},class:pi("item-tag")},[n.defaultTagText])),i},"right-icon":function(){return t(ln,{attrs:{name:e.id,iconSize:16,checkedColor:O.h},on:{click:r}})}},on:{click:r}})}));return t("div",r()([{class:pi()},Object(c.b)(i)]),[t(tn,{attrs:{value:n.value},class:pi("group")},[o]),t("div",{class:pi("bottom")},[t(bt,{attrs:{round:!0,block:!0,type:"danger",text:n.addText||vi("addText")},class:pi("add"),on:{click:function(){Object(c.a)(i,"add")}}})])])}bi.props={value:null,list:Array,addText:String,defaultTagText:String};var mi=hi(bi),gi=e(13);var yi=Object(s.a)("count-down"),xi=yi[0],wi=yi[1],ki=xi({props:{millisecond:Boolean,time:{type:[Number,String],default:0},format:{type:String,default:"HH:mm:ss"},autoStart:{type:Boolean,default:!0}},data:function(){return{remain:0}},computed:{timeData:function(){return t=this.remain,{days:Math.floor(t/864e5),hours:Math.floor(t%864e5/36e5),minutes:Math.floor(t%36e5/6e4),seconds:Math.floor(t%6e4/1e3),milliseconds:Math.floor(t%1e3)};var t},formattedTime:function(){return function(t,n){var e=n.days,i=n.hours,o=n.minutes,r=n.seconds,a=n.milliseconds;if(-1===t.indexOf("DD")?i+=24*e:t=t.replace("DD",Object(gi.b)(e)),-1===t.indexOf("HH")?o+=60*i:t=t.replace("HH",Object(gi.b)(i)),-1===t.indexOf("mm")?r+=60*o:t=t.replace("mm",Object(gi.b)(o)),-1===t.indexOf("ss")?a+=1e3*r:t=t.replace("ss",Object(gi.b)(r)),-1!==t.indexOf("S")){var s=Object(gi.b)(a,3);t=-1!==t.indexOf("SSS")?t.replace("SSS",s):-1!==t.indexOf("SS")?t.replace("SS",s.slice(0,2)):t.replace("S",s.charAt(0))}return t}(this.format,this.timeData)}},watch:{time:{immediate:!0,handler:"reset"}},activated:function(){this.keepAlivePaused&&(this.counting=!0,this.keepAlivePaused=!1,this.tick())},deactivated:function(){this.counting&&(this.pause(),this.keepAlivePaused=!0)},beforeDestroy:function(){this.pause()},methods:{start:function(){this.counting||(this.counting=!0,this.endTime=Date.now()+this.remain,this.tick())},pause:function(){this.counting=!1,Object(Cn.a)(this.rafId)},reset:function(){this.pause(),this.remain=+this.time,this.autoStart&&this.start()},tick:function(){d.b&&(this.millisecond?this.microTick():this.macroTick())},microTick:function(){var t=this;this.rafId=Object(Cn.c)((function(){t.counting&&(t.setRemain(t.getRemain()),t.remain>0&&t.microTick())}))},macroTick:function(){var t=this;this.rafId=Object(Cn.c)((function(){if(t.counting){var n,e,i=t.getRemain();n=i,e=t.remain,(Math.floor(n/1e3)!==Math.floor(e/1e3)||0===i)&&t.setRemain(i),t.remain>0&&t.macroTick()}}))},getRemain:function(){return Math.max(this.endTime-Date.now(),0)},setRemain:function(t){this.remain=t,this.$emit("change",this.timeData),0===t&&(this.pause(),this.$emit("finish"))}},render:function(){var t=arguments[0];return t("div",{class:wi()},[this.slots("default",this.timeData)||this.formattedTime])}}),_i=Object(s.a)("coupon"),Si=_i[0],Oi=_i[1],Ci=_i[2];function ji(t){var n=new Date(function(t){return t"+(n.unitDesc||"")+"";if(n.denominations){var e=Ti(n.denominations);return""+this.currency+" "+e}return n.discount?Ci("discount",((t=n.discount)/10).toFixed(t%10==0?0:1)):""},conditionMessage:function(){var t=Ti(this.coupon.originCondition);return"0"===t?Ci("unlimited"):Ci("condition",t)}},render:function(){var t=arguments[0],n=this.coupon,e=this.disabled,i=e&&n.reason||n.description;return t("div",{class:Oi({disabled:e})},[t("div",{class:Oi("content")},[t("div",{class:Oi("head")},[t("h2",{class:Oi("amount"),domProps:{innerHTML:this.faceAmount}}),t("p",{class:Oi("condition")},[this.coupon.condition||this.conditionMessage])]),t("div",{class:Oi("body")},[t("p",{class:Oi("name")},[n.name]),t("p",{class:Oi("valid")},[this.validPeriod]),!this.disabled&&t(ze,{attrs:{size:18,value:this.chosen,checkedColor:O.h},class:Oi("corner")})])]),i&&t("p",{class:Oi("description")},[i])])}}),zi=Object(s.a)("coupon-cell"),Bi=zi[0],Ii=zi[1],Ei=zi[2];function Pi(t,n,e,i){var o=n.coupons[+n.chosenCoupon],a=function(t){var n=t.coupons,e=t.chosenCoupon,i=t.currency,o=n[+e];if(o){var r=0;return Object(d.c)(o.value)?r=o.value:Object(d.c)(o.denominations)&&(r=o.denominations),"-"+i+" "+(r/100).toFixed(2)}return 0===n.length?Ei("tips"):Ei("count",n.length)}(n);return t(et,r()([{class:Ii(),attrs:{value:a,title:n.title||Ei("title"),border:n.border,isLink:n.editable,valueClass:Ii("value",{selected:o})}},Object(c.b)(i,!0)]))}Pi.model={prop:"chosenCoupon"},Pi.props={title:String,coupons:{type:Array,default:function(){return[]}},currency:{type:String,default:"¥"},border:{type:Boolean,default:!0},editable:{type:Boolean,default:!0},chosenCoupon:{type:[Number,String],default:-1}};var Li=Bi(Pi),Di=Object(s.a)("coupon-list"),Ni=Di[0],Mi=Di[1],Ri=Di[2],$i=Ni({model:{prop:"code"},props:{code:String,closeButtonText:String,inputPlaceholder:String,enabledTitle:String,disabledTitle:String,exchangeButtonText:String,exchangeButtonLoading:Boolean,exchangeButtonDisabled:Boolean,exchangeMinLength:{type:Number,default:1},chosenCoupon:{type:Number,default:-1},coupons:{type:Array,default:function(){return[]}},disabledCoupons:{type:Array,default:function(){return[]}},displayedCouponIndex:{type:Number,default:-1},showExchangeBar:{type:Boolean,default:!0},showCloseButton:{type:Boolean,default:!0},showCount:{type:Boolean,default:!0},currency:{type:String,default:"¥"},emptyImage:{type:String,default:"https://img01.yzcdn.cn/vant/coupon-empty.png"}},data:function(){return{tab:0,winHeight:window.innerHeight,currentCode:this.code||""}},computed:{buttonDisabled:function(){return!this.exchangeButtonLoading&&(this.exchangeButtonDisabled||!this.currentCode||this.currentCode.length=t?(this.innerValue=this.formatValue(t+":"+i),this.updateColumnValue()):this.updateInnerValue()},minMinute:"updateInnerValue",maxMinute:function(t){var n=this.innerValue.split(":"),e=n[0];n[1]>=t?(this.innerValue=this.formatValue(e+":"+t),this.updateColumnValue()):this.updateInnerValue()},value:function(t){(t=this.formatValue(t))!==this.innerValue&&(this.innerValue=t,this.updateColumnValue())}},methods:{formatValue:function(t){t||(t=Object(gi.b)(this.minHour)+":"+Object(gi.b)(this.minMinute));var n=t.split(":"),e=n[0],i=n[1];return(e=Object(gi.b)(Object(T.c)(e,this.minHour,this.maxHour)))+":"+(i=Object(gi.b)(Object(T.c)(i,this.minMinute,this.maxMinute)))},updateInnerValue:function(){var t=this.getPicker().getIndexes(),n=t[0],e=t[1],i=this.originColumns,o=i[0],r=i[1],a=o.values[n]||o.values[0],s=r.values[e]||r.values[0];this.innerValue=this.formatValue(a+":"+s),this.updateColumnValue()},onChange:function(t){var n=this;this.updateInnerValue(),this.$nextTick((function(){n.$nextTick((function(){n.updateInnerValue(),n.$emit("change",t)}))}))},updateColumnValue:function(){var t=this,n=this.formatter,e=this.innerValue.split(":"),i=[n("hour",e[0]),n("minute",e[1])];this.$nextTick((function(){t.getPicker().setValues(i)}))}}});function qi(t,n){return(qi=Object.setPrototypeOf||function(t,n){return t.__proto__=n,t})(t,n)}function Yi(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function Ui(t,n,e){return(Ui=Yi()?Reflect.construct:function(t,n,e){var i=[null];i.push.apply(i,n);var o=new(Function.bind.apply(t,i));return e&&qi(o,e.prototype),o}).apply(null,arguments)}var Wi=(new Date).getFullYear(),Ki=(0,Object(s.a)("date-picker")[0])({mixins:[Fi],props:Object(i.a)({},Vi,{type:{type:String,default:"datetime"},minDate:{type:Date,default:function(){return new Date(Wi-10,0,1)},validator:jn},maxDate:{type:Date,default:function(){return new Date(Wi+10,11,31)},validator:jn}}),watch:{filter:"updateInnerValue",minDate:function(){var t=this;this.$nextTick((function(){t.updateInnerValue()}))},maxDate:function(t){this.innerValue.valueOf()>=t.valueOf()?this.innerValue=t:this.updateInnerValue()},value:function(t){(t=this.formatValue(t))&&t.valueOf()!==this.innerValue.valueOf()&&(this.innerValue=t)}},computed:{ranges:function(){var t=this.getBoundary("max",this.innerValue?this.innerValue:this.minDate),n=t.maxYear,e=t.maxDate,i=t.maxMonth,o=t.maxHour,r=t.maxMinute,a=this.getBoundary("min",this.innerValue?this.innerValue:this.minDate),s=a.minYear,c=a.minDate,l=[{type:"year",range:[s,n]},{type:"month",range:[a.minMonth,i]},{type:"day",range:[c,e]},{type:"hour",range:[a.minHour,o]},{type:"minute",range:[a.minMinute,r]}];switch(this.type){case"date":l=l.slice(0,3);break;case"year-month":l=l.slice(0,2);break;case"month-day":l=l.slice(1,3);break;case"datehour":l=l.slice(0,4)}if(this.columnsOrder){var u=this.columnsOrder.concat(l.map((function(t){return t.type})));l.sort((function(t,n){return u.indexOf(t.type)-u.indexOf(n.type)}))}return l}},methods:{formatValue:function(t){var n=this;if(!jn(t))return null;var e=new Date(this.minDate),i=new Date(this.maxDate),o={year:"getFullYear",month:"getMonth",day:"getDate",hour:"getHours",minute:"getMinutes"};if(this.originColumns){var r=this.originColumns.map((function(t,r){var a=t.type,s=t.values,c=n.ranges[r].range,l=e[o[a]](),u=i[o[a]](),d="month"===a?+s[0]-1:+s[0],f="month"===a?+s[s.length-1]-1:+s[s.length-1];return{type:a,values:[lc[1]?Math.min(u,f):f||u]}}));if("month-day"===this.type){var a=(this.innerValue||this.minDate).getFullYear();r.unshift({type:"year",values:[a,a]})}var s=Object.keys(o).map((function(t){var n;return null==(n=r.filter((function(n){return n.type===t}))[0])?void 0:n.values})).filter((function(t){return t}));e=Ui(Date,s.map((function(t){return Mn(t[0])}))),i=Ui(Date,s.map((function(t){return Mn(t[1])})))}return t=Math.max(t,e.getTime()),t=Math.min(t,i.getTime()),new Date(t)},getBoundary:function(t,n){var e,i=this[t+"Date"],o=i.getFullYear(),r=1,a=1,s=0,c=0;return"max"===t&&(r=12,a=Rn(n.getFullYear(),n.getMonth()+1),s=23,c=59),n.getFullYear()===o&&(r=i.getMonth()+1,n.getMonth()+1===r&&(a=i.getDate(),n.getDate()===a&&(s=i.getHours(),n.getHours()===s&&(c=i.getMinutes())))),(e={})[t+"Year"]=o,e[t+"Month"]=r,e[t+"Date"]=a,e[t+"Hour"]=s,e[t+"Minute"]=c,e},updateInnerValue:function(){var t,n,e,i=this,o=this.type,r=this.getPicker().getIndexes(),a=function(t){var n=0;return i.originColumns.forEach((function(e,i){t===e.type&&(n=i)})),Mn(i.originColumns[n].values[r[n]])};"month-day"===o?(t=(this.innerValue||this.minDate).getFullYear(),n=a("month"),e=a("day")):(t=a("year"),n=a("month"),e="year-month"===o?1:a("day"));var s=Rn(t,n);e=e>s?s:e;var c=0,l=0;"datehour"===o&&(c=a("hour")),"datetime"===o&&(c=a("hour"),l=a("minute"));var u=new Date(t,n-1,e,c,l);this.innerValue=this.formatValue(u)},onChange:function(t){var n=this;this.updateInnerValue(),this.$nextTick((function(){n.$nextTick((function(){n.updateInnerValue(),n.$emit("change",t)}))}))},updateColumnValue:function(){var t=this,n=this.innerValue?this.innerValue:this.minDate,e=this.formatter,i=this.originColumns.map((function(t){switch(t.type){case"year":return e("year",""+n.getFullYear());case"month":return e("month",Object(gi.b)(n.getMonth()+1));case"day":return e("day",Object(gi.b)(n.getDate()));case"hour":return e("hour",Object(gi.b)(n.getHours()));case"minute":return e("minute",Object(gi.b)(n.getMinutes()));default:return null}}));this.$nextTick((function(){t.getPicker().setValues(i)}))}}}),Xi=Object(s.a)("datetime-picker"),Ji=Xi[0],Zi=Xi[1],Gi=Ji({props:Object(i.a)({},Hi.props,Ki.props),methods:{getPicker:function(){return this.$refs.root.getProxiedPicker()}},render:function(){var t=arguments[0],n="time"===this.type?Hi:Ki;return t(n,{ref:"root",class:Zi(),scopedSlots:this.$scopedSlots,props:Object(i.a)({},this.$props),on:Object(i.a)({},this.$listeners)})}}),Qi=Object(s.a)("divider"),to=Qi[0],no=Qi[1];function eo(t,n,e,i){var o;return t("div",r()([{attrs:{role:"separator"},style:{borderColor:n.borderColor},class:no((o={dashed:n.dashed,hairline:n.hairline},o["content-"+n.contentPosition]=e.default,o))},Object(c.b)(i,!0)]),[e.default&&e.default()])}eo.props={dashed:Boolean,hairline:{type:Boolean,default:!0},contentPosition:{type:String,default:"center"}};var io=to(eo),oo=e(33),ro=Object(s.a)("dropdown-item"),ao=ro[0],so=ro[1],co=ao({mixins:[Object(oo.a)({ref:"wrapper"}),Object(mt.a)("vanDropdownMenu")],props:{value:null,title:String,disabled:Boolean,titleClass:String,options:{type:Array,default:function(){return[]}},lazyRender:{type:Boolean,default:!0}},data:function(){return{transition:!0,showPopup:!1,showWrapper:!1}},computed:{displayTitle:function(){var t=this;if(this.title)return this.title;var n=this.options.filter((function(n){return n.value===t.value}));return n.length?n[0].text:""}},watch:{showPopup:function(t){this.bindScroll(t)}},beforeCreate:function(){var t=this,n=function(n){return function(){return t.$emit(n)}};this.onOpen=n("open"),this.onClose=n("close"),this.onOpened=n("opened")},methods:{toggle:function(t,n){void 0===t&&(t=!this.showPopup),void 0===n&&(n={}),t!==this.showPopup&&(this.transition=!n.immediate,this.showPopup=t,t&&(this.parent.updateOffset(),this.showWrapper=!0))},bindScroll:function(t){var n=this.parent.scroller;(t?S.b:S.a)(n,"scroll",this.onScroll,!0)},onScroll:function(){this.parent.updateOffset()},onClickWrapper:function(t){this.getContainer&&t.stopPropagation()}},render:function(){var t=this,n=arguments[0],e=this.parent,i=e.zIndex,o=e.offset,r=e.overlay,a=e.duration,s=e.direction,c=e.activeColor,l=e.closeOnClickOverlay,d=this.options.map((function(e){var i=e.value===t.value;return n(et,{attrs:{clickable:!0,icon:e.icon,title:e.text},key:e.value,class:so("option",{active:i}),style:{color:i?c:""},on:{click:function(){t.showPopup=!1,e.value!==t.value&&(t.$emit("input",e.value),t.$emit("change",e.value))}}},[i&&n(u.a,{class:so("icon"),attrs:{color:c,name:"success"}})])})),f={zIndex:i};return"down"===s?f.top=o+"px":f.bottom=o+"px",n("div",[n("div",{directives:[{name:"show",value:this.showWrapper}],ref:"wrapper",style:f,class:so([s]),on:{click:this.onClickWrapper}},[n(v,{attrs:{overlay:r,position:"down"===s?"top":"bottom",duration:this.transition?a:0,lazyRender:this.lazyRender,overlayStyle:{position:"absolute"},closeOnClickOverlay:l},class:so("content"),on:{open:this.onOpen,close:this.onClose,opened:this.onOpened,closed:function(){t.showWrapper=!1,t.$emit("closed")}},model:{value:t.showPopup,callback:function(n){t.showPopup=n}}},[d,this.slots("default")])])])}}),lo=function(t){return{props:{closeOnClickOutside:{type:Boolean,default:!0}},data:function(){var n=this;return{clickOutsideHandler:function(e){n.closeOnClickOutside&&!n.$el.contains(e.target)&&n[t.method]()}}},mounted:function(){Object(S.b)(document,t.event,this.clickOutsideHandler)},beforeDestroy:function(){Object(S.a)(document,t.event,this.clickOutsideHandler)}}},uo=Object(s.a)("dropdown-menu"),fo=uo[0],ho=uo[1],po=fo({mixins:[Object(mt.b)("vanDropdownMenu"),lo({event:"click",method:"onClickOutside"})],props:{zIndex:[Number,String],activeColor:String,overlay:{type:Boolean,default:!0},duration:{type:[Number,String],default:.2},direction:{type:String,default:"down"},closeOnClickOverlay:{type:Boolean,default:!0}},data:function(){return{offset:0}},computed:{scroller:function(){return Object(it.d)(this.$el)},opened:function(){return this.children.some((function(t){return t.showWrapper}))},barStyle:function(){if(this.opened&&Object(d.c)(this.zIndex))return{zIndex:1+this.zIndex}}},methods:{updateOffset:function(){if(this.$refs.bar){var t=this.$refs.bar.getBoundingClientRect();"down"===this.direction?this.offset=t.bottom:this.offset=window.innerHeight-t.top}},toggleItem:function(t){this.children.forEach((function(n,e){e===t?n.toggle():n.showPopup&&n.toggle(!1,{immediate:!0})}))},onClickOutside:function(){this.children.forEach((function(t){t.toggle(!1)}))}},render:function(){var t=this,n=arguments[0],e=this.children.map((function(e,i){return n("div",{attrs:{role:"button",tabindex:e.disabled?-1:0},class:ho("item",{disabled:e.disabled}),on:{click:function(){e.disabled||t.toggleItem(i)}}},[n("span",{class:[ho("title",{active:e.showPopup,down:e.showPopup===("down"===t.direction)}),e.titleClass],style:{color:e.showPopup?t.activeColor:""}},[n("div",{class:"van-ellipsis"},[e.slots("title")||e.displayTitle])])])}));return n("div",{class:ho()},[n("div",{ref:"bar",style:this.barStyle,class:ho("bar",{opened:this.opened})},[e]),this.slots("default")])}}),vo="van-empty-network-",bo={render:function(){var t=arguments[0],n=function(n,e,i){return t("stop",{attrs:{"stop-color":n,offset:e+"%","stop-opacity":i}})};return t("svg",{attrs:{viewBox:"0 0 160 160",xmlns:"http://www.w3.org/2000/svg"}},[t("defs",[t("linearGradient",{attrs:{id:vo+"1",x1:"64.022%",y1:"100%",x2:"64.022%",y2:"0%"}},[n("#FFF",0,.5),n("#F2F3F5",100)]),t("linearGradient",{attrs:{id:vo+"2",x1:"50%",y1:"0%",x2:"50%",y2:"84.459%"}},[n("#EBEDF0",0),n("#DCDEE0",100,0)]),t("linearGradient",{attrs:{id:vo+"3",x1:"100%",y1:"0%",x2:"100%",y2:"100%"}},[n("#EAEDF0",0),n("#DCDEE0",100)]),t("linearGradient",{attrs:{id:vo+"4",x1:"100%",y1:"100%",x2:"100%",y2:"0%"}},[n("#EAEDF0",0),n("#DCDEE0",100)]),t("linearGradient",{attrs:{id:vo+"5",x1:"0%",y1:"43.982%",x2:"100%",y2:"54.703%"}},[n("#EAEDF0",0),n("#DCDEE0",100)]),t("linearGradient",{attrs:{id:vo+"6",x1:"94.535%",y1:"43.837%",x2:"5.465%",y2:"54.948%"}},[n("#EAEDF0",0),n("#DCDEE0",100)]),t("radialGradient",{attrs:{id:vo+"7",cx:"50%",cy:"0%",fx:"50%",fy:"0%",r:"100%",gradientTransform:"matrix(0 1 -.54835 0 .5 -.5)"}},[n("#EBEDF0",0),n("#FFF",100,0)])]),t("g",{attrs:{fill:"none","fill-rule":"evenodd"}},[t("g",{attrs:{opacity:".8"}},[t("path",{attrs:{d:"M0 124V46h20v20h14v58H0z",fill:"url(#"+vo+"1)",transform:"matrix(-1 0 0 1 36 7)"}}),t("path",{attrs:{d:"M121 8h22.231v14H152v77.37h-31V8z",fill:"url(#"+vo+"1)",transform:"translate(2 7)"}})]),t("path",{attrs:{fill:"url(#"+vo+"7)",d:"M0 139h160v21H0z"}}),t("path",{attrs:{d:"M37 18a7 7 0 013 13.326v26.742c0 1.23-.997 2.227-2.227 2.227h-1.546A2.227 2.227 0 0134 58.068V31.326A7 7 0 0137 18z",fill:"url(#"+vo+"2)","fill-rule":"nonzero",transform:"translate(43 36)"}}),t("g",{attrs:{opacity:".6","stroke-linecap":"round","stroke-width":"7"}},[t("path",{attrs:{d:"M20.875 11.136a18.868 18.868 0 00-5.284 13.121c0 5.094 2.012 9.718 5.284 13.12",stroke:"url(#"+vo+"3)",transform:"translate(43 36)"}}),t("path",{attrs:{d:"M9.849 0C3.756 6.225 0 14.747 0 24.146c0 9.398 3.756 17.92 9.849 24.145",stroke:"url(#"+vo+"3)",transform:"translate(43 36)"}}),t("path",{attrs:{d:"M57.625 11.136a18.868 18.868 0 00-5.284 13.121c0 5.094 2.012 9.718 5.284 13.12",stroke:"url(#"+vo+"4)",transform:"rotate(-180 76.483 42.257)"}}),t("path",{attrs:{d:"M73.216 0c-6.093 6.225-9.849 14.747-9.849 24.146 0 9.398 3.756 17.92 9.849 24.145",stroke:"url(#"+vo+"4)",transform:"rotate(-180 89.791 42.146)"}})]),t("g",{attrs:{transform:"translate(31 105)","fill-rule":"nonzero"}},[t("rect",{attrs:{fill:"url(#"+vo+"5)",width:"98",height:"34",rx:"2"}}),t("rect",{attrs:{fill:"#FFF",x:"9",y:"8",width:"80",height:"18",rx:"1.114"}}),t("rect",{attrs:{fill:"url(#"+vo+"6)",x:"15",y:"12",width:"18",height:"6",rx:"1.114"}})])])])}},mo=Object(s.a)("empty"),go=mo[0],yo=mo[1],xo=["error","search","default"],wo=go({props:{imageSize:[Number,String],description:String,image:{type:String,default:"default"}},methods:{genImageContent:function(){var t=this.$createElement,n=this.slots("image");if(n)return n;if("network"===this.image)return t(bo);var e=this.image;return-1!==xo.indexOf(e)&&(e="https://img01.yzcdn.cn/vant/empty-image-"+e+".png"),t("img",{attrs:{src:e}})},genImage:function(){var t=this.$createElement,n={width:Object(C.a)(this.imageSize),height:Object(C.a)(this.imageSize)};return t("div",{class:yo("image"),style:n},[this.genImageContent()])},genDescription:function(){var t=this.$createElement,n=this.slots("description")||this.description;if(n)return t("p",{class:yo("description")},[n])},genBottom:function(){var t=this.$createElement,n=this.slots();if(n)return t("div",{class:yo("bottom")},[n])}},render:function(){var t=arguments[0];return t("div",{class:yo()},[this.genImage(),this.genDescription(),this.genBottom()])}}),ko=e(109),_o=Object(s.a)("form"),So=_o[0],Oo=_o[1],Co=So({props:{colon:Boolean,disabled:Boolean,readonly:Boolean,labelWidth:[Number,String],labelAlign:String,inputAlign:String,scrollToError:Boolean,validateFirst:Boolean,errorMessageAlign:String,submitOnEnter:{type:Boolean,default:!0},validateTrigger:{type:String,default:"onBlur"},showError:{type:Boolean,default:!0},showErrorMessage:{type:Boolean,default:!0}},provide:function(){return{vanForm:this}},data:function(){return{fields:[]}},methods:{getFieldsByNames:function(t){return t?this.fields.filter((function(n){return-1!==t.indexOf(n.name)})):this.fields},validateSeq:function(t){var n=this;return new Promise((function(e,i){var o=[];n.getFieldsByNames(t).reduce((function(t,n){return t.then((function(){if(!o.length)return n.validate().then((function(t){t&&o.push(t)}))}))}),Promise.resolve()).then((function(){o.length?i(o):e()}))}))},validateFields:function(t){var n=this;return new Promise((function(e,i){var o=n.getFieldsByNames(t);Promise.all(o.map((function(t){return t.validate()}))).then((function(t){(t=t.filter((function(t){return t}))).length?i(t):e()}))}))},validate:function(t){return t&&!Array.isArray(t)?this.validateField(t):this.validateFirst?this.validateSeq(t):this.validateFields(t)},validateField:function(t){var n=this.fields.filter((function(n){return n.name===t}));return n.length?new Promise((function(t,e){n[0].validate().then((function(n){n?e(n):t()}))})):Promise.reject()},resetValidation:function(t){t&&!Array.isArray(t)&&(t=[t]),this.getFieldsByNames(t).forEach((function(t){t.resetValidation()}))},scrollToField:function(t,n){this.fields.some((function(e){return e.name===t&&(e.$el.scrollIntoView(n),!0)}))},addField:function(t){this.fields.push(t),Object(ko.a)(this.fields,this)},removeField:function(t){this.fields=this.fields.filter((function(n){return n!==t}))},getValues:function(){return this.fields.reduce((function(t,n){return t[n.name]=n.formValue,t}),{})},onSubmit:function(t){t.preventDefault(),this.submit()},submit:function(){var t=this,n=this.getValues();this.validate().then((function(){t.$emit("submit",n)})).catch((function(e){t.$emit("failed",{values:n,errors:e}),t.scrollToError&&t.scrollToField(e[0].name)}))}},render:function(){var t=arguments[0];return t("form",{class:Oo(),on:{submit:this.onSubmit}},[this.slots()])}}),jo=Object(s.a)("goods-action-icon"),To=jo[0],Ao=jo[1],zo=To({mixins:[Object(mt.a)("vanGoodsAction")],props:Object(i.a)({},J,{dot:Boolean,text:String,icon:String,color:String,info:[Number,String],badge:[Number,String],iconClass:null}),methods:{onClick:function(t){this.$emit("click",t),K(this.$router,this)},genIcon:function(){var t,n=this.$createElement,e=this.slots("icon"),i=null!=(t=this.badge)?t:this.info;return e?n("div",{class:Ao("icon")},[e,n(ee.a,{attrs:{dot:this.dot,info:i}})]):n(u.a,{class:[Ao("icon"),this.iconClass],attrs:{tag:"div",dot:this.dot,name:this.icon,badge:i,color:this.color}})}},render:function(){var t=arguments[0];return t("div",{attrs:{role:"button",tabindex:"0"},class:Ao(),on:{click:this.onClick}},[this.genIcon(),this.slots()||this.text])}}),Bo=Object(s.a)("grid"),Io=Bo[0],Eo=Bo[1],Po=Io({mixins:[Object(mt.b)("vanGrid")],props:{square:Boolean,gutter:[Number,String],iconSize:[Number,String],direction:String,clickable:Boolean,columnNum:{type:[Number,String],default:4},center:{type:Boolean,default:!0},border:{type:Boolean,default:!0}},computed:{style:function(){var t=this.gutter;if(t)return{paddingLeft:Object(C.a)(t)}}},render:function(){var t,n=arguments[0];return n("div",{style:this.style,class:[Eo(),(t={},t[O.e]=this.border&&!this.gutter,t)]},[this.slots()])}}),Lo=Object(s.a)("grid-item"),Do=Lo[0],No=Lo[1],Mo=Do({mixins:[Object(mt.a)("vanGrid")],props:Object(i.a)({},J,{dot:Boolean,text:String,icon:String,iconPrefix:String,info:[Number,String],badge:[Number,String]}),computed:{style:function(){var t=this.parent,n=t.square,e=t.gutter,i=t.columnNum,o=100/i+"%",r={flexBasis:o};if(n)r.paddingTop=o;else if(e){var a=Object(C.a)(e);r.paddingRight=a,this.index>=i&&(r.marginTop=a)}return r},contentStyle:function(){var t=this.parent,n=t.square,e=t.gutter;if(n&&e){var i=Object(C.a)(e);return{right:i,bottom:i,height:"auto"}}}},methods:{onClick:function(t){this.$emit("click",t),K(this.$router,this)},genIcon:function(){var t,n=this.$createElement,e=this.slots("icon"),i=null!=(t=this.badge)?t:this.info;return e?n("div",{class:No("icon-wrapper")},[e,n(ee.a,{attrs:{dot:this.dot,info:i}})]):this.icon?n(u.a,{attrs:{name:this.icon,dot:this.dot,badge:i,size:this.parent.iconSize,classPrefix:this.iconPrefix},class:No("icon")}):void 0},getText:function(){var t=this.$createElement,n=this.slots("text");return n||(this.text?t("span",{class:No("text")},[this.text]):void 0)},genContent:function(){var t=this.slots();return t||[this.genIcon(),this.getText()]}},render:function(){var t,n=arguments[0],e=this.parent,i=e.center,o=e.border,r=e.square,a=e.gutter,s=e.direction,c=e.clickable;return n("div",{class:[No({square:r})],style:this.style},[n("div",{style:this.contentStyle,attrs:{role:c?"button":null,tabindex:c?0:null},class:[No("content",[s,{center:i,square:r,clickable:c,surround:o&&a}]),(t={},t[O.a]=o,t)],on:{click:this.onClick}},[this.genContent()])])}}),Ro=e(28),$o=Object(s.a)("index-anchor"),Vo=$o[0],Fo=$o[1],Ho=Vo({mixins:[Object(mt.a)("vanIndexBar",{indexKey:"childrenIndex"})],props:{index:[Number,String]},data:function(){return{top:0,left:null,rect:{top:0,height:0},width:null,active:!1}},computed:{sticky:function(){return this.active&&this.parent.sticky},anchorStyle:function(){if(this.sticky)return{zIndex:""+this.parent.zIndex,left:this.left?this.left+"px":null,width:this.width?this.width+"px":null,transform:"translate3d(0, "+this.top+"px, 0)",color:this.parent.highlightColor}}},mounted:function(){var t=this.$el.getBoundingClientRect();this.rect.height=t.height},methods:{scrollIntoView:function(){this.$el.scrollIntoView()},getRect:function(t,n){var e=this.$el.getBoundingClientRect();return this.rect.height=e.height,t===window||t===document.body?this.rect.top=e.top+Object(it.b)():this.rect.top=e.top+Object(it.c)(t)-n.top,this.rect}},render:function(){var t,n=arguments[0],e=this.sticky;return n("div",{style:{height:e?this.rect.height+"px":null}},[n("div",{style:this.anchorStyle,class:[Fo({sticky:e}),(t={},t[O.b]=e,t)]},[this.slots("default")||this.index])])}});var qo=Object(s.a)("index-bar"),Yo=qo[0],Uo=qo[1],Wo=Yo({mixins:[A.a,Object(mt.b)("vanIndexBar"),Object(ne.a)((function(t){this.scroller||(this.scroller=Object(it.d)(this.$el)),t(this.scroller,"scroll",this.onScroll)}))],props:{zIndex:[Number,String],highlightColor:String,sticky:{type:Boolean,default:!0},stickyOffsetTop:{type:Number,default:0},indexList:{type:Array,default:function(){for(var t=[],n="A".charCodeAt(0),e=0;e<26;e++)t.push(String.fromCharCode(n+e));return t}}},data:function(){return{activeAnchorIndex:null}},computed:{sidebarStyle:function(){if(Object(d.c)(this.zIndex))return{zIndex:this.zIndex+1}},highlightStyle:function(){var t=this.highlightColor;if(t)return{color:t}}},watch:{indexList:function(){this.$nextTick(this.onScroll)},activeAnchorIndex:function(t){t&&this.$emit("change",t)}},methods:{onScroll:function(){var t=this;if(!Object(Qn.a)(this.$el)){var n=Object(it.c)(this.scroller),e=this.getScrollerRect(),i=this.children.map((function(n){return n.getRect(t.scroller,e)})),o=this.getActiveAnchorIndex(n,i);this.activeAnchorIndex=this.indexList[o],this.sticky&&this.children.forEach((function(r,a){if(a===o||a===o-1){var s=r.$el.getBoundingClientRect();r.left=s.left,r.width=s.width}else r.left=null,r.width=null;if(a===o)r.active=!0,r.top=Math.max(t.stickyOffsetTop,i[a].top-n)+e.top;else if(a===o-1){var c=i[o].top-n;r.active=c>0,r.top=c+e.top-i[a].height}else r.active=!1}))}},getScrollerRect:function(){return this.scroller.getBoundingClientRect?this.scroller.getBoundingClientRect():{top:0,left:0}},getActiveAnchorIndex:function(t,n){for(var e=this.children.length-1;e>=0;e--){var i=e>0?n[e-1].height:0;if(t+(this.sticky?i+this.stickyOffsetTop:0)>=n[e].top)return e}return-1},onClick:function(t){this.scrollToElement(t.target)},onTouchMove:function(t){if(this.touchMove(t),"vertical"===this.direction){Object(S.c)(t);var n=t.touches[0],e=n.clientX,i=n.clientY,o=document.elementFromPoint(e,i);if(o){var r=o.dataset.index;this.touchActiveIndex!==r&&(this.touchActiveIndex=r,this.scrollToElement(o))}}},scrollTo:function(t){var n=this.children.filter((function(n){return String(n.index)===t}));n[0]&&(n[0].scrollIntoView(),this.sticky&&this.stickyOffsetTop&&Object(it.g)(Object(it.b)()-this.stickyOffsetTop),this.$emit("select",n[0].index))},scrollToElement:function(t){var n=t.dataset.index;this.scrollTo(n)},onTouchEnd:function(){this.active=null}},render:function(){var t=this,n=arguments[0],e=this.indexList.map((function(e){var i=e===t.activeAnchorIndex;return n("span",{class:Uo("index",{active:i}),style:i?t.highlightStyle:null,attrs:{"data-index":e}},[e])}));return n("div",{class:Uo()},[n("div",{class:Uo("sidebar"),style:this.sidebarStyle,on:{click:this.onClick,touchstart:this.touchStart,touchmove:this.onTouchMove,touchend:this.onTouchEnd,touchcancel:this.onTouchEnd}},[e]),this.slots("default")])}}),Ko=Object(s.a)("list"),Xo=Ko[0],Jo=Ko[1],Zo=Ko[2],Go=Xo({mixins:[Object(ne.a)((function(t){this.scroller||(this.scroller=Object(it.d)(this.$el)),t(this.scroller,"scroll",this.check)}))],model:{prop:"loading"},props:{error:Boolean,loading:Boolean,finished:Boolean,errorText:String,loadingText:String,finishedText:String,immediateCheck:{type:Boolean,default:!0},offset:{type:[Number,String],default:300},direction:{type:String,default:"down"}},data:function(){return{innerLoading:this.loading}},updated:function(){this.innerLoading=this.loading},mounted:function(){this.immediateCheck&&this.check()},watch:{loading:"check",finished:"check"},methods:{check:function(){var t=this;this.$nextTick((function(){if(!(t.innerLoading||t.finished||t.error)){var n,e=t.$el,i=t.scroller,o=t.offset,r=t.direction;if(!((n=i.getBoundingClientRect?i.getBoundingClientRect():{top:0,bottom:i.innerHeight}).bottom-n.top)||Object(Qn.a)(e))return!1;var a=t.$refs.placeholder.getBoundingClientRect();("up"===r?n.top-a.top<=o:a.bottom-n.bottom<=o)&&(t.innerLoading=!0,t.$emit("input",!0),t.$emit("load"))}}))},clickErrorText:function(){this.$emit("update:error",!1),this.check()},genLoading:function(){var t=this.$createElement;if(this.innerLoading&&!this.finished)return t("div",{key:"loading",class:Jo("loading")},[this.slots("loading")||t(b.a,{attrs:{size:"16"}},[this.loadingText||Zo("loading")])])},genFinishedText:function(){var t=this.$createElement;if(this.finished){var n=this.slots("finished")||this.finishedText;if(n)return t("div",{class:Jo("finished-text")},[n])}},genErrorText:function(){var t=this.$createElement;if(this.error){var n=this.slots("error")||this.errorText;if(n)return t("div",{on:{click:this.clickErrorText},class:Jo("error-text")},[n])}}},render:function(){var t=arguments[0],n=t("div",{ref:"placeholder",key:"placeholder",class:Jo("placeholder")});return t("div",{class:Jo(),attrs:{role:"feed","aria-busy":this.innerLoading}},["down"===this.direction?this.slots():n,this.genLoading(),this.genFinishedText(),this.genErrorText(),"up"===this.direction?this.slots():n])}}),Qo=e(25),tr=Object(s.a)("nav-bar"),nr=tr[0],er=tr[1],ir=nr({props:{title:String,fixed:Boolean,zIndex:[Number,String],leftText:String,rightText:String,leftArrow:Boolean,placeholder:Boolean,safeAreaInsetTop:Boolean,border:{type:Boolean,default:!0}},data:function(){return{height:null}},mounted:function(){var t=this;if(this.placeholder&&this.fixed){var n=function(){t.height=t.$refs.navBar.getBoundingClientRect().height};n(),setTimeout(n,100)}},methods:{genLeft:function(){var t=this.$createElement,n=this.slots("left");return n||[this.leftArrow&&t(u.a,{class:er("arrow"),attrs:{name:"arrow-left"}}),this.leftText&&t("span",{class:er("text")},[this.leftText])]},genRight:function(){var t=this.$createElement,n=this.slots("right");return n||(this.rightText?t("span",{class:er("text")},[this.rightText]):void 0)},genNavBar:function(){var t,n=this.$createElement;return n("div",{ref:"navBar",style:{zIndex:this.zIndex},class:[er({fixed:this.fixed,"safe-area-inset-top":this.safeAreaInsetTop}),(t={},t[O.b]=this.border,t)]},[n("div",{class:er("content")},[this.hasLeft()&&n("div",{class:er("left"),on:{click:this.onClickLeft}},[this.genLeft()]),n("div",{class:[er("title"),"van-ellipsis"]},[this.slots("title")||this.title]),this.hasRight()&&n("div",{class:er("right"),on:{click:this.onClickRight}},[this.genRight()])])])},hasLeft:function(){return this.leftArrow||this.leftText||this.slots("left")},hasRight:function(){return this.rightText||this.slots("right")},onClickLeft:function(t){this.$emit("click-left",t)},onClickRight:function(t){this.$emit("click-right",t)}},render:function(){var t=arguments[0];return this.placeholder&&this.fixed?t("div",{class:er("placeholder"),style:{height:this.height+"px"}},[this.genNavBar()]):this.genNavBar()}}),or=Object(s.a)("notice-bar"),rr=or[0],ar=or[1],sr=rr({mixins:[Object(ne.a)((function(t){t(window,"pageshow",this.reset)}))],inject:{vanPopup:{default:null}},props:{text:String,mode:String,color:String,leftIcon:String,wrapable:Boolean,background:String,scrollable:{type:Boolean,default:null},delay:{type:[Number,String],default:1},speed:{type:[Number,String],default:60}},data:function(){return{show:!0,offset:0,duration:0,wrapWidth:0,contentWidth:0}},watch:{scrollable:"reset",text:{handler:"reset",immediate:!0}},created:function(){this.vanPopup&&this.vanPopup.onReopen(this.reset)},activated:function(){this.reset()},methods:{onClickIcon:function(t){"closeable"===this.mode&&(this.show=!1,this.$emit("close",t))},onTransitionEnd:function(){var t=this;this.offset=this.wrapWidth,this.duration=0,Object(Cn.c)((function(){Object(Cn.b)((function(){t.offset=-t.contentWidth,t.duration=(t.contentWidth+t.wrapWidth)/t.speed,t.$emit("replay")}))}))},start:function(){this.reset()},reset:function(){var t=this,n=Object(d.c)(this.delay)?1e3*this.delay:0;this.offset=0,this.duration=0,this.wrapWidth=0,this.contentWidth=0,clearTimeout(this.startTimer),this.startTimer=setTimeout((function(){var n=t.$refs,e=n.wrap,i=n.content;if(e&&i&&!1!==t.scrollable){var o=e.getBoundingClientRect().width,r=i.getBoundingClientRect().width;(t.scrollable||r>o)&&Object(Cn.b)((function(){t.offset=-r,t.duration=r/t.speed,t.wrapWidth=o,t.contentWidth=r}))}}),n)}},render:function(){var t=this,n=arguments[0],e=this.slots,i=this.mode,o=this.leftIcon,r=this.onClickIcon,a={color:this.color,background:this.background},s={transform:this.offset?"translateX("+this.offset+"px)":"",transitionDuration:this.duration+"s"};function c(){var t=e("left-icon");return t||(o?n(u.a,{class:ar("left-icon"),attrs:{name:o}}):void 0)}function l(){var t,o=e("right-icon");return o||("closeable"===i?t="cross":"link"===i&&(t="arrow"),t?n(u.a,{class:ar("right-icon"),attrs:{name:t},on:{click:r}}):void 0)}return n("div",{attrs:{role:"alert"},directives:[{name:"show",value:this.show}],class:ar({wrapable:this.wrapable}),style:a,on:{click:function(n){t.$emit("click",n)}}},[c(),n("div",{ref:"wrap",class:ar("wrap"),attrs:{role:"marquee"}},[n("div",{ref:"content",class:[ar("content"),{"van-ellipsis":!1===this.scrollable&&!this.wrapable}],style:s,on:{transitionend:this.onTransitionEnd}},[this.slots()||this.text])]),l()])}}),cr=Object(s.a)("notify"),lr=cr[0],ur=cr[1];function dr(t,n,e,i){var o={color:n.color,background:n.background};return t(v,r()([{attrs:{value:n.value,position:"top",overlay:!1,duration:.2,lockScroll:!1},style:o,class:[ur([n.type]),n.className]},Object(c.b)(i,!0)]),[(null==e.default?void 0:e.default())||n.message])}dr.props=Object(i.a)({},l.b,{color:String,message:[Number,String],duration:[Number,String],className:null,background:String,getContainer:[String,Function],type:{type:String,default:"danger"}});var fr,hr,pr=lr(dr);function vr(t){var n;if(!d.h)return hr||(hr=Object(c.c)(pr,{on:{click:function(t){hr.onClick&&hr.onClick(t)},close:function(){hr.onClose&&hr.onClose()},opened:function(){hr.onOpened&&hr.onOpened()}}})),t=Object(i.a)({},vr.currentOptions,(n=t,Object(d.f)(n)?n:{message:n})),Object(i.a)(hr,t),clearTimeout(fr),t.duration&&t.duration>0&&(fr=setTimeout(vr.clear,t.duration)),hr}vr.clear=function(){hr&&(hr.value=!1)},vr.currentOptions={type:"danger",value:!0,message:"",color:void 0,background:void 0,duration:3e3,className:"",onClose:null,onClick:null,onOpened:null},vr.setDefaultOptions=function(t){Object(i.a)(vr.currentOptions,t)},vr.resetDefaultOptions=function(){vr.currentOptions={type:"danger",value:!0,message:"",color:void 0,background:void 0,duration:3e3,className:"",onClose:null,onClick:null,onOpened:null}},vr.install=function(){a.a.use(pr)},vr.Component=pr,a.a.prototype.$notify=vr;var br=vr,mr={render:function(){var t=arguments[0];return t("svg",{attrs:{viewBox:"0 0 32 22",xmlns:"http://www.w3.org/2000/svg"}},[t("path",{attrs:{d:"M28.016 0A3.991 3.991 0 0132 3.987v14.026c0 2.2-1.787 3.987-3.98 3.987H10.382c-.509 0-.996-.206-1.374-.585L.89 13.09C.33 12.62 0 11.84 0 11.006c0-.86.325-1.62.887-2.08L9.01.585A1.936 1.936 0 0110.383 0zm0 1.947H10.368L2.24 10.28c-.224.226-.312.432-.312.73 0 .287.094.51.312.729l8.128 8.333h17.648a2.041 2.041 0 002.037-2.04V3.987c0-1.127-.915-2.04-2.037-2.04zM23.028 6a.96.96 0 01.678.292.95.95 0 01-.003 1.377l-3.342 3.348 3.326 3.333c.189.188.292.43.292.679 0 .248-.103.49-.292.679a.96.96 0 01-.678.292.959.959 0 01-.677-.292L18.99 12.36l-3.343 3.345a.96.96 0 01-.677.292.96.96 0 01-.678-.292.962.962 0 01-.292-.68c0-.248.104-.49.292-.679l3.342-3.348-3.342-3.348A.963.963 0 0114 6.971c0-.248.104-.49.292-.679A.96.96 0 0114.97 6a.96.96 0 01.677.292l3.358 3.348 3.345-3.348A.96.96 0 0123.028 6z",fill:"currentColor"}})])}},gr={render:function(){var t=arguments[0];return t("svg",{attrs:{viewBox:"0 0 30 24",xmlns:"http://www.w3.org/2000/svg"}},[t("path",{attrs:{d:"M25.877 12.843h-1.502c-.188 0-.188 0-.188.19v1.512c0 .188 0 .188.188.188h1.5c.187 0 .187 0 .187-.188v-1.511c0-.19 0-.191-.185-.191zM17.999 10.2c0 .188 0 .188.188.188h1.687c.188 0 .188 0 .188-.188V8.688c0-.187.004-.187-.186-.19h-1.69c-.187 0-.187 0-.187.19V10.2zm2.25-3.967h1.5c.188 0 .188 0 .188-.188v-1.7c0-.19 0-.19-.188-.19h-1.5c-.189 0-.189 0-.189.19v1.7c0 .188 0 .188.19.188zm2.063 4.157h3.563c.187 0 .187 0 .187-.189V4.346c0-.19.004-.19-.185-.19h-1.69c-.187 0-.187 0-.187.188v4.155h-1.688c-.187 0-.187 0-.187.189v1.514c0 .19 0 .19.187.19zM14.812 24l2.812-3.4H12l2.813 3.4zm-9-11.157H4.31c-.188 0-.188 0-.188.19v1.512c0 .188 0 .188.188.188h1.502c.187 0 .187 0 .187-.188v-1.511c0-.19.01-.191-.189-.191zm15.937 0H8.25c-.188 0-.188 0-.188.19v1.512c0 .188 0 .188.188.188h13.5c.188 0 .188 0 .188-.188v-1.511c0-.19 0-.191-.188-.191zm-11.438-2.454h1.5c.188 0 .188 0 .188-.188V8.688c0-.187 0-.187-.188-.189h-1.5c-.187 0-.187 0-.187.189V10.2c0 .188 0 .188.187.188zM27.94 0c.563 0 .917.21 1.313.567.518.466.748.757.748 1.51v14.92c0 .567-.188 1.134-.562 1.512-.376.378-.938.566-1.313.566H2.063c-.563 0-.938-.188-1.313-.566-.562-.378-.75-.945-.75-1.511V2.078C0 1.51.188.944.562.567.938.189 1.5 0 1.875 0zm-.062 2H2v14.92h25.877V2zM5.81 4.157c.19 0 .19 0 .19.189v1.762c-.003.126-.024.126-.188.126H4.249c-.126-.003-.126-.023-.126-.188v-1.7c-.187-.19 0-.19.188-.19zm10.5 2.077h1.503c.187 0 .187 0 .187-.188v-1.7c0-.19 0-.19-.187-.19h-1.502c-.188 0-.188.001-.188.19v1.7c0 .188 0 .188.188.188zM7.875 8.5c.187 0 .187.002.187.189V10.2c0 .188 0 .188-.187.188H4.249c-.126-.002-.126-.023-.126-.188V8.625c.003-.126.024-.126.188-.126zm7.875 0c.19.002.19.002.19.189v1.575c-.003.126-.024.126-.19.126h-1.563c-.126-.002-.126-.023-.126-.188V8.625c.002-.126.023-.126.189-.126zm-6-4.342c.187 0 .187 0 .187.189v1.7c0 .188 0 .188-.187.188H8.187c-.126-.003-.126-.023-.126-.188V4.283c.003-.126.024-.126.188-.126zm3.94 0c.185 0 .372 0 .372.189v1.762c-.002.126-.023.126-.187.126h-1.75C12 6.231 12 6.211 12 6.046v-1.7c0-.19.187-.19.187-.19z",fill:"currentColor"}})])}},yr=Object(s.a)("key"),xr=yr[0],wr=yr[1],kr=xr({mixins:[A.a],props:{type:String,text:[Number,String],color:String,wider:Boolean,large:Boolean,loading:Boolean},data:function(){return{active:!1}},mounted:function(){this.bindTouchEvent(this.$el)},methods:{onTouchStart:function(t){t.stopPropagation(),this.touchStart(t),this.active=!0},onTouchMove:function(t){this.touchMove(t),this.direction&&(this.active=!1)},onTouchEnd:function(t){this.active&&(this.slots("default")||t.preventDefault(),this.active=!1,this.$emit("press",this.text,this.type))},genContent:function(){var t=this.$createElement,n="extra"===this.type,e="delete"===this.type,i=this.slots("default")||this.text;return this.loading?t(b.a,{class:wr("loading-icon")}):e?i||t(mr,{class:wr("delete-icon")}):n?i||t(gr,{class:wr("collapse-icon")}):i}},render:function(){var t=arguments[0];return t("div",{class:wr("wrapper",{wider:this.wider})},[t("div",{attrs:{role:"button",tabindex:"0"},class:wr([this.color,{large:this.large,active:this.active,delete:"delete"===this.type}])},[this.genContent()])])}}),_r=Object(s.a)("number-keyboard"),Sr=_r[0],Or=_r[1],Cr=Sr({mixins:[Object(oo.a)(),Object(ne.a)((function(t){this.hideOnClickOutside&&t(document.body,"touchstart",this.onBlur)}))],model:{event:"update:value"},props:{show:Boolean,title:String,zIndex:[Number,String],randomKeyOrder:Boolean,closeButtonText:String,deleteButtonText:String,closeButtonLoading:Boolean,theme:{type:String,default:"default"},value:{type:String,default:""},extraKey:{type:[String,Array],default:""},maxlength:{type:[Number,String],default:Number.MAX_VALUE},transition:{type:Boolean,default:!0},showDeleteKey:{type:Boolean,default:!0},hideOnClickOutside:{type:Boolean,default:!0},safeAreaInsetBottom:{type:Boolean,default:!0}},watch:{show:function(t){this.transition||this.$emit(t?"show":"hide")}},computed:{keys:function(){return"custom"===this.theme?this.genCustomKeys():this.genDefaultKeys()}},methods:{genBasicKeys:function(){for(var t=[],n=1;n<=9;n++)t.push({text:n});return this.randomKeyOrder&&t.sort((function(){return Math.random()>.5?1:-1})),t},genDefaultKeys:function(){return[].concat(this.genBasicKeys(),[{text:this.extraKey,type:"extra"},{text:0},{text:this.showDeleteKey?this.deleteButtonText:"",type:this.showDeleteKey?"delete":""}])},genCustomKeys:function(){var t=this.genBasicKeys(),n=this.extraKey,e=Array.isArray(n)?n:[n];return 1===e.length?t.push({text:0,wider:!0},{text:e[0],type:"extra"}):2===e.length&&t.push({text:e[0],type:"extra"},{text:0},{text:e[1],type:"extra"}),t},onBlur:function(){this.show&&this.$emit("blur")},onClose:function(){this.$emit("close"),this.onBlur()},onAnimationEnd:function(){this.$emit(this.show?"show":"hide")},onPress:function(t,n){if(""!==t){var e=this.value;"delete"===n?(this.$emit("delete"),this.$emit("update:value",e.slice(0,e.length-1))):"close"===n?this.onClose():e.lengthn&&(i=(o=n)-e+1);for(var a=i;a<=o;a++){var s=Ir(a,a,a===this.value);t.push(s)}if(r&&e>0&&this.forceEllipses){if(i>1){var c=Ir(i-1,"...",!1);t.unshift(c)}if(o=0?n.ownerDocument.body:Kr(n)&&Gr(n)?n:t(ta(n))}(t),o=i===(null==(e=t.ownerDocument)?void 0:e.body),r=Yr(i),a=o?[r].concat(r.visualViewport||[],Gr(i)?i:[]):i,s=n.concat(a);return o?s:s.concat(na(ta(a)))}function ea(t){return["table","td","th"].indexOf(Xr(t))>=0}function ia(t){return Kr(t)&&"fixed"!==Zr(t).position?t.offsetParent:null}function oa(t){for(var n=Yr(t),e=ia(t);e&&ea(e)&&"static"===Zr(e).position;)e=ia(e);return e&&("html"===Xr(e)||"body"===Xr(e)&&"static"===Zr(e).position)?n:e||function(t){var n=-1!==navigator.userAgent.toLowerCase().indexOf("firefox");if(-1!==navigator.userAgent.indexOf("Trident")&&Kr(t)&&"fixed"===Zr(t).position)return null;for(var e=ta(t);Kr(e)&&["html","body"].indexOf(Xr(e))<0;){var i=Zr(e);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||n&&"filter"===i.willChange||n&&i.filter&&"none"!==i.filter)return e;e=e.parentNode}return null}(t)||n}var ra="top",aa="right",sa="left",ca=[].concat([ra,"bottom",aa,sa],["auto"]).reduce((function(t,n){return t.concat([n,n+"-start",n+"-end"])}),[]),la=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function ua(t){var n=new Map,e=new Set,i=[];return t.forEach((function(t){n.set(t.name,t)})),t.forEach((function(t){e.has(t.name)||function t(o){e.add(o.name),[].concat(o.requires||[],o.requiresIfExists||[]).forEach((function(i){if(!e.has(i)){var o=n.get(i);o&&t(o)}})),i.push(o)}(t)})),i}function da(t){return t.split("-")[0]}var fa=Math.round;var ha={placement:"bottom",modifiers:[],strategy:"absolute"};function pa(){for(var t=arguments.length,n=new Array(t),e=0;e=0?"x":"y"}(r):null;if(null!=l){var u="y"===l?"height":"width";switch(a){case"start":n[l]=n[l]-(e[u]/2-i[u]/2);break;case"end":n[l]=n[l]+(e[u]/2-i[u]/2)}}return n}({reference:n.rects.reference,element:n.rects.popper,strategy:"absolute",placement:n.placement})},data:{}},{name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var n=t.state,e=t.options,o=e.gpuAcceleration,r=void 0===o||o,a=e.adaptive,s=void 0===a||a,c=e.roundOffsets,l=void 0===c||c,u={placement:da(n.placement),popper:n.elements.popper,popperRect:n.rects.popper,gpuAcceleration:r};null!=n.modifiersData.popperOffsets&&(n.styles.popper=Object(i.a)({},n.styles.popper,ga(Object(i.a)({},u,{offsets:n.modifiersData.popperOffsets,position:n.options.strategy,adaptive:s,roundOffsets:l})))),null!=n.modifiersData.arrow&&(n.styles.arrow=Object(i.a)({},n.styles.arrow,ga(Object(i.a)({},u,{offsets:n.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),n.attributes.popper=Object(i.a)({},n.attributes.popper,{"data-popper-placement":n.placement})},data:{}},{name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var n=t.state;Object.keys(n.elements).forEach((function(t){var e=n.styles[t]||{},o=n.attributes[t]||{},r=n.elements[t];Kr(r)&&Xr(r)&&(Object(i.a)(r.style,e),Object.keys(o).forEach((function(t){var n=o[t];!1===n?r.removeAttribute(t):r.setAttribute(t,!0===n?"":n)})))}))},effect:function(t){var n=t.state,e={popper:{position:n.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object(i.a)(n.elements.popper.style,e.popper),n.styles=e,n.elements.arrow&&Object(i.a)(n.elements.arrow.style,e.arrow),function(){Object.keys(n.elements).forEach((function(t){var o=n.elements[t],r=n.attributes[t]||{},a=Object.keys(n.styles.hasOwnProperty(t)?n.styles[t]:e[t]).reduce((function(t,n){return t[n]="",t}),{});Kr(o)&&Xr(o)&&(Object(i.a)(o.style,a),Object.keys(r).forEach((function(t){o.removeAttribute(t)})))}))}},requires:["computeStyles"]}]});var xa={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var n=t.state,e=t.options,o=t.name,r=e.offset,a=void 0===r?[0,0]:r,s=ca.reduce((function(t,e){return t[e]=function(t,n,e){var o=da(t),r=[sa,ra].indexOf(o)>=0?-1:1,a="function"==typeof e?e(Object(i.a)({},n,{placement:t})):e,s=a[0],c=a[1];return s=s||0,c=(c||0)*r,[sa,aa].indexOf(o)>=0?{x:c,y:s}:{x:s,y:c}}(e,n.rects,a),t}),{}),c=s[n.placement],l=c.x,u=c.y;null!=n.modifiersData.popperOffsets&&(n.modifiersData.popperOffsets.x+=l,n.modifiersData.popperOffsets.y+=u),n.modifiersData[o]=s}},wa=Object(s.a)("popover"),ka=wa[0],_a=wa[1],Sa=ka({mixins:[lo({event:"touchstart",method:"onClickOutside"})],props:{value:Boolean,trigger:String,overlay:Boolean,offset:{type:Array,default:function(){return[0,8]}},theme:{type:String,default:"light"},actions:{type:Array,default:function(){return[]}},placement:{type:String,default:"bottom"},getContainer:{type:[String,Function],default:"body"},closeOnClickAction:{type:Boolean,default:!0}},watch:{value:"updateLocation",placement:"updateLocation"},mounted:function(){this.updateLocation()},beforeDestroy:function(){this.popper&&(d.h||(window.removeEventListener("animationend",this.updateLocation),window.removeEventListener("transitionend",this.updateLocation)),this.popper.destroy(),this.popper=null)},methods:{createPopper:function(){var t=ya(this.$refs.wrapper,this.$refs.popover.$el,{placement:this.placement,modifiers:[{name:"computeStyles",options:{adaptive:!1,gpuAcceleration:!1}},Object(i.a)({},xa,{options:{offset:this.offset}})]});return d.h||(window.addEventListener("animationend",this.updateLocation),window.addEventListener("transitionend",this.updateLocation)),t},updateLocation:function(){var t=this;this.$nextTick((function(){t.value&&(t.popper?t.popper.setOptions({placement:t.placement}):t.popper=t.createPopper())}))},renderAction:function(t,n){var e=this,i=this.$createElement,o=t.icon,r=t.text,a=t.disabled,s=t.className;return i("div",{attrs:{role:"menuitem"},class:[_a("action",{disabled:a,"with-icon":o}),s],on:{click:function(){return e.onClickAction(t,n)}}},[o&&i(u.a,{attrs:{name:o},class:_a("action-icon")}),i("div",{class:[_a("action-text"),O.b]},[r])])},onToggle:function(t){this.$emit("input",t)},onClickWrapper:function(){"click"===this.trigger&&this.onToggle(!this.value)},onTouchstart:function(t){t.stopPropagation(),this.$emit("touchstart",t)},onClickAction:function(t,n){t.disabled||(this.$emit("select",t,n),this.closeOnClickAction&&this.$emit("input",!1))},onClickOutside:function(){this.$emit("input",!1)},onOpen:function(){this.$emit("open")},onOpened:function(){this.$emit("opened")},onClose:function(){this.$emit("close")},onClosed:function(){this.$emit("closed")}},render:function(){var t=arguments[0];return t("span",{ref:"wrapper",class:_a("wrapper"),on:{click:this.onClickWrapper}},[t(v,{ref:"popover",attrs:{value:this.value,overlay:this.overlay,position:null,transition:"van-popover-zoom",lockScroll:!1,getContainer:this.getContainer},class:_a([this.theme]),on:{open:this.onOpen,close:this.onClose,input:this.onToggle,opened:this.onOpened,closed:this.onClosed},nativeOn:{touchstart:this.onTouchstart}},[t("div",{class:_a("arrow")}),t("div",{class:_a("content"),attrs:{role:"menu"}},[this.slots("default")||this.actions.map(this.renderAction)])]),this.slots("reference")])}}),Oa=Object(s.a)("progress"),Ca=Oa[0],ja=Oa[1],Ta=Ca({mixins:[Object(ne.a)((function(t){t(window,"resize",this.resize,!0),t(window,"orientationchange",this.resize,!0)}))],props:{color:String,inactive:Boolean,pivotText:String,textColor:String,pivotColor:String,trackColor:String,strokeWidth:[Number,String],percentage:{type:[Number,String],required:!0,validator:function(t){return t>=0&&t<=100}},showPivot:{type:Boolean,default:!0}},data:function(){return{pivotWidth:0,progressWidth:0}},mounted:function(){this.resize()},watch:{showPivot:"resize",pivotText:"resize"},methods:{resize:function(){var t=this;this.$nextTick((function(){t.progressWidth=t.$el.offsetWidth,t.pivotWidth=t.$refs.pivot?t.$refs.pivot.offsetWidth:0}))}},render:function(){var t=arguments[0],n=this.pivotText,e=this.percentage,i=null!=n?n:e+"%",o=this.showPivot&&i,r=this.inactive?"#cacaca":this.color,a={color:this.textColor,left:(this.progressWidth-this.pivotWidth)*e/100+"px",background:this.pivotColor||r},s={background:r,width:this.progressWidth*e/100+"px"},c={background:this.trackColor,height:Object(C.a)(this.strokeWidth)};return t("div",{class:ja(),style:c},[t("span",{class:ja("portion"),style:s},[o&&t("span",{ref:"pivot",style:a,class:ja("pivot")},[i])])])}}),Aa=Object(s.a)("pull-refresh"),za=Aa[0],Ba=Aa[1],Ia=Aa[2],Ea=["pulling","loosing","success"],Pa=za({mixins:[A.a],props:{disabled:Boolean,successText:String,pullingText:String,loosingText:String,loadingText:String,pullDistance:[Number,String],value:{type:Boolean,required:!0},successDuration:{type:[Number,String],default:500},animationDuration:{type:[Number,String],default:300},headHeight:{type:[Number,String],default:50}},data:function(){return{status:"normal",distance:0,duration:0}},computed:{touchable:function(){return"loading"!==this.status&&"success"!==this.status&&!this.disabled},headStyle:function(){if(50!==this.headHeight)return{height:this.headHeight+"px"}}},watch:{value:function(t){this.duration=this.animationDuration,t?this.setStatus(+this.headHeight,!0):this.slots("success")||this.successText?this.showSuccessTip():this.setStatus(0,!1)}},mounted:function(){this.bindTouchEvent(this.$refs.track),this.scrollEl=Object(it.d)(this.$el)},methods:{checkPullStart:function(t){this.ceiling=0===Object(it.c)(this.scrollEl),this.ceiling&&(this.duration=0,this.touchStart(t))},onTouchStart:function(t){this.touchable&&this.checkPullStart(t)},onTouchMove:function(t){this.touchable&&(this.ceiling||this.checkPullStart(t),this.touchMove(t),this.ceiling&&this.deltaY>=0&&"vertical"===this.direction&&(Object(S.c)(t),this.setStatus(this.ease(this.deltaY))))},onTouchEnd:function(){var t=this;this.touchable&&this.ceiling&&this.deltaY&&(this.duration=this.animationDuration,"loosing"===this.status?(this.setStatus(+this.headHeight,!0),this.$emit("input",!0),this.$nextTick((function(){t.$emit("refresh")}))):this.setStatus(0))},ease:function(t){var n=+(this.pullDistance||this.headHeight);return t>n&&(t=t<2*n?n+(t-n)/2:1.5*n+(t-2*n)/4),Math.round(t)},setStatus:function(t,n){var e;e=n?"loading":0===t?"normal":t<(this.pullDistance||this.headHeight)?"pulling":"loosing",this.distance=t,e!==this.status&&(this.status=e)},genStatus:function(){var t=this.$createElement,n=this.status,e=this.distance,i=this.slots(n,{distance:e});if(i)return i;var o=[],r=this[n+"Text"]||Ia(n);return-1!==Ea.indexOf(n)&&o.push(t("div",{class:Ba("text")},[r])),"loading"===n&&o.push(t(b.a,{attrs:{size:"16"}},[r])),o},showSuccessTip:function(){var t=this;this.status="success",setTimeout((function(){t.setStatus(0)}),this.successDuration)}},render:function(){var t=arguments[0],n={transitionDuration:this.duration+"ms",transform:this.distance?"translate3d(0,"+this.distance+"px, 0)":""};return t("div",{class:Ba()},[t("div",{ref:"track",class:Ba("track"),style:n},[t("div",{class:Ba("head"),style:this.headStyle},[this.genStatus()]),this.slots()])])}}),La=Object(s.a)("rate"),Da=La[0],Na=La[1];var Ma=Da({mixins:[A.a,$t],props:{size:[Number,String],color:String,gutter:[Number,String],readonly:Boolean,disabled:Boolean,allowHalf:Boolean,voidColor:String,iconPrefix:String,disabledColor:String,value:{type:Number,default:0},icon:{type:String,default:"star"},voidIcon:{type:String,default:"star-o"},count:{type:[Number,String],default:5},touchable:{type:Boolean,default:!0}},computed:{list:function(){for(var t,n,e,i=[],o=1;o<=this.count;o++)i.push((t=this.value,n=o,e=this.allowHalf,t>=n?"full":t+.5>=n&&e?"half":"void"));return i},sizeWithUnit:function(){return Object(C.a)(this.size)},gutterWithUnit:function(){return Object(C.a)(this.gutter)}},mounted:function(){this.bindTouchEvent(this.$el)},methods:{select:function(t){this.disabled||this.readonly||t===this.value||(this.$emit("input",t),this.$emit("change",t))},onTouchStart:function(t){var n=this;if(!this.readonly&&!this.disabled&&this.touchable){this.touchStart(t);var e=this.$refs.items.map((function(t){return t.getBoundingClientRect()})),i=[];e.forEach((function(t,e){n.allowHalf?i.push({score:e+.5,left:t.left},{score:e+1,left:t.left+t.width/2}):i.push({score:e+1,left:t.left})})),this.ranges=i}},onTouchMove:function(t){if(!this.readonly&&!this.disabled&&this.touchable&&(this.touchMove(t),"horizontal"===this.direction)){Object(S.c)(t);var n=t.touches[0].clientX;this.select(this.getScoreByPosition(n))}},getScoreByPosition:function(t){for(var n=this.ranges.length-1;n>0;n--)if(t>this.ranges[n].left)return this.ranges[n].score;return this.allowHalf?.5:1},genStar:function(t,n){var e,i=this,o=this.$createElement,r=this.icon,a=this.color,s=this.count,c=this.voidIcon,l=this.disabled,d=this.voidColor,f=this.disabledColor,h=n+1,p="full"===t,v="void"===t;return this.gutterWithUnit&&h!==+s&&(e={paddingRight:this.gutterWithUnit}),o("div",{ref:"items",refInFor:!0,key:n,attrs:{role:"radio",tabindex:"0","aria-setsize":s,"aria-posinset":h,"aria-checked":String(!v)},style:e,class:Na("item")},[o(u.a,{attrs:{size:this.sizeWithUnit,name:p?r:c,color:l?f:p?a:d,classPrefix:this.iconPrefix,"data-score":h},class:Na("icon",{disabled:l,full:p}),on:{click:function(){i.select(h)}}}),this.allowHalf&&o(u.a,{attrs:{size:this.sizeWithUnit,name:v?c:r,color:l?f:v?d:a,classPrefix:this.iconPrefix,"data-score":h-.5},class:Na("icon",["half",{disabled:l,full:!v}]),on:{click:function(){i.select(h-.5)}}})])}},render:function(){var t=this,n=arguments[0];return n("div",{class:Na({readonly:this.readonly,disabled:this.disabled}),attrs:{tabindex:"0",role:"radiogroup"}},[this.list.map((function(n,e){return t.genStar(n,e)}))])}}),Ra=Object(s.a)("row"),$a=Ra[0],Va=Ra[1],Fa=$a({mixins:[Object(mt.b)("vanRow")],props:{type:String,align:String,justify:String,tag:{type:String,default:"div"},gutter:{type:[Number,String],default:0}},computed:{spaces:function(){var t=Number(this.gutter);if(t){var n=[],e=[[]],i=0;return this.children.forEach((function(t,n){(i+=Number(t.span))>24?(e.push([n]),i-=24):e[e.length-1].push(n)})),e.forEach((function(e){var i=t*(e.length-1)/e.length;e.forEach((function(e,o){if(0===o)n.push({right:i});else{var r=t-n[e-1].right,a=i-r;n.push({left:r,right:a})}}))})),n}}},methods:{onClick:function(t){this.$emit("click",t)}},render:function(){var t,n=arguments[0],e=this.align,i=this.justify,o="flex"===this.type;return n(this.tag,{class:Va((t={flex:o},t["align-"+e]=o&&e,t["justify-"+i]=o&&i,t)),on:{click:this.onClick}},[this.slots()])}}),Ha=Object(s.a)("search"),qa=Ha[0],Ya=Ha[1],Ua=Ha[2];function Wa(t,n,e,o){var a={attrs:o.data.attrs,on:Object(i.a)({},o.listeners,{keypress:function(t){13===t.keyCode&&(Object(S.c)(t),Object(c.a)(o,"search",n.value)),Object(c.a)(o,"keypress",t)}})},s=Object(c.b)(o);return s.attrs=void 0,t("div",r()([{class:Ya({"show-action":n.showAction}),style:{background:n.background}},s]),[null==e.left?void 0:e.left(),t("div",{class:Ya("content",n.shape)},[function(){if(e.label||n.label)return t("div",{class:Ya("label")},[e.label?e.label():n.label])}(),t(lt,r()([{attrs:{type:"search",border:!1,value:n.value,leftIcon:n.leftIcon,rightIcon:n.rightIcon,clearable:n.clearable,clearTrigger:n.clearTrigger},scopedSlots:{"left-icon":e["left-icon"],"right-icon":e["right-icon"]}},a]))]),function(){if(n.showAction)return t("div",{class:Ya("action"),attrs:{role:"button",tabindex:"0"},on:{click:function(){e.action||(Object(c.a)(o,"input",""),Object(c.a)(o,"cancel"))}}},[e.action?e.action():n.actionText||Ua("cancel")])}()])}Wa.props={value:String,label:String,rightIcon:String,actionText:String,background:String,showAction:Boolean,clearTrigger:String,shape:{type:String,default:"square"},clearable:{type:Boolean,default:!0},leftIcon:{type:String,default:"search"}};var Ka=qa(Wa),Xa=["qq","link","weibo","wechat","poster","qrcode","weapp-qrcode","wechat-moments"],Ja=Object(s.a)("share-sheet"),Za=Ja[0],Ga=Ja[1],Qa=Ja[2],ts=Za({props:Object(i.a)({},l.b,{title:String,duration:String,cancelText:String,description:String,getContainer:[String,Function],options:{type:Array,default:function(){return[]}},overlay:{type:Boolean,default:!0},closeOnPopstate:{type:Boolean,default:!0},safeAreaInsetBottom:{type:Boolean,default:!0},closeOnClickOverlay:{type:Boolean,default:!0}}),methods:{onCancel:function(){this.toggle(!1),this.$emit("cancel")},onSelect:function(t,n){this.$emit("select",t,n)},toggle:function(t){this.$emit("input",t)},getIconURL:function(t){return-1!==Xa.indexOf(t)?"https://img01.yzcdn.cn/vant/share-sheet-"+t+".png":t},genHeader:function(){var t=this.$createElement,n=this.slots("title")||this.title,e=this.slots("description")||this.description;if(n||e)return t("div",{class:Ga("header")},[n&&t("h2",{class:Ga("title")},[n]),e&&t("span",{class:Ga("description")},[e])])},genOptions:function(t,n){var e=this,i=this.$createElement;return i("div",{class:Ga("options",{border:n})},[t.map((function(t,n){return i("div",{attrs:{role:"button",tabindex:"0"},class:[Ga("option"),t.className],on:{click:function(){e.onSelect(t,n)}}},[i("img",{attrs:{src:e.getIconURL(t.icon)},class:Ga("icon")}),t.name&&i("span",{class:Ga("name")},[t.name]),t.description&&i("span",{class:Ga("option-description")},[t.description])])}))])},genRows:function(){var t=this,n=this.options;return Array.isArray(n[0])?n.map((function(n,e){return t.genOptions(n,0!==e)})):this.genOptions(n)},genCancelText:function(){var t,n=this.$createElement,e=null!=(t=this.cancelText)?t:Qa("cancel");if(e)return n("button",{attrs:{type:"button"},class:Ga("cancel"),on:{click:this.onCancel}},[e])},onClickOverlay:function(){this.$emit("click-overlay")}},render:function(){var t=arguments[0];return t(v,{attrs:{round:!0,value:this.value,position:"bottom",overlay:this.overlay,duration:this.duration,lazyRender:this.lazyRender,lockScroll:this.lockScroll,getContainer:this.getContainer,closeOnPopstate:this.closeOnPopstate,closeOnClickOverlay:this.closeOnClickOverlay,safeAreaInsetBottom:this.safeAreaInsetBottom},class:Ga(),on:{input:this.toggle,"click-overlay":this.onClickOverlay}},[this.genHeader(),this.genRows(),this.genCancelText()])}}),ns=Object(s.a)("sidebar"),es=ns[0],is=ns[1],os=es({mixins:[Object(mt.b)("vanSidebar")],model:{prop:"activeKey"},props:{activeKey:{type:[Number,String],default:0}},data:function(){return{index:+this.activeKey}},watch:{activeKey:function(){this.setIndex(+this.activeKey)}},methods:{setIndex:function(t){t!==this.index&&(this.index=t,this.$emit("change",t))}},render:function(){var t=arguments[0];return t("div",{class:is()},[this.slots()])}}),rs=Object(s.a)("sidebar-item"),as=rs[0],ss=rs[1],cs=as({mixins:[Object(mt.a)("vanSidebar")],props:Object(i.a)({},J,{dot:Boolean,info:[Number,String],badge:[Number,String],title:String,disabled:Boolean}),computed:{select:function(){return this.index===+this.parent.activeKey}},methods:{onClick:function(){this.disabled||(this.$emit("click",this.index),this.parent.$emit("input",this.index),this.parent.setIndex(this.index),K(this.$router,this))}},render:function(){var t,n,e=arguments[0];return e("a",{class:ss({select:this.select,disabled:this.disabled}),on:{click:this.onClick}},[e("div",{class:ss("text")},[null!=(t=this.slots("title"))?t:this.title,e(ee.a,{attrs:{dot:this.dot,info:null!=(n=this.badge)?n:this.info},class:ss("info")})])])}}),ls=Object(s.a)("skeleton"),us=ls[0],ds=ls[1];function fs(t,n,e,i){if(!n.loading)return e.default&&e.default();return t("div",r()([{class:ds({animate:n.animate,round:n.round})},Object(c.b)(i)]),[function(){if(n.avatar){var e=Object(C.a)(n.avatarSize);return t("div",{class:ds("avatar",n.avatarShape),style:{width:e,height:e}})}}(),t("div",{class:ds("content")},[function(){if(n.title)return t("h3",{class:ds("title"),style:{width:Object(C.a)(n.titleWidth)}})}(),function(){for(var e,i=[],o=n.rowWidth,r=0;r0){var a=o.filter((function(t){return t.id===r}))[0];a&&t.push(a)}return t}),[])},ys=function(t,n,e){var o,r=e.key,a=e.valueId,s=Object(i.a)({},n,((o={})[r]=a,o)),c=Object.keys(s).filter((function(t){return s[t]!==ps.b}));return t.filter((function(t){return c.every((function(n){return String(s[n])===String(t[n])}))})).reduce((function(t,n){return t+=n.stock_num}),0)>0},xs=function(t,n){var e=function(t){var n={};return t.forEach((function(t){var e={};t.v.forEach((function(t){e[t.id]=t})),n[t.k_id]=e})),n}(t);return Object.keys(n).reduce((function(t,o){return n[o].forEach((function(n){t.push(Object(i.a)({},e[o][n]))})),t}),[])},ws=function(t,n){var e=[];return(t||[]).forEach((function(t){if(n[t.k_id]&&n[t.k_id].length>0){var o=[];t.v.forEach((function(e){n[t.k_id].indexOf(e.id)>-1&&o.push(Object(i.a)({},e))})),e.push(Object(i.a)({},t,{v:o}))}})),e},ks={normalizeSkuTree:vs,getSkuComb:ms,getSelectedSkuValues:gs,isAllSelected:bs,isSkuChoosable:ys,getSelectedPropValues:xs,getSelectedProperties:ws},_s=Object(s.a)("sku-header"),Ss=_s[0],Os=_s[1];function Cs(t,n,e,o){var a,s=n.sku,l=n.goods,u=n.skuEventBus,d=n.selectedSku,f=n.showHeaderImage,h=void 0===f||f,p=function(t,n){var e;return t.tree.some((function(t){var o=n[t.k_s];if(o&&t.v){var r=t.v.filter((function(t){return t.id===o}))[0]||{},a=r.previewImgUrl||r.imgUrl||r.img_url;if(a)return e=Object(i.a)({},r,{ks:t.k_s,imgUrl:a}),!0}return!1})),e}(s,d),v=p?p.imgUrl:l.picture;return t("div",r()([{class:[Os(),O.b]},Object(c.b)(o)]),[h&&t(Hn.a,{attrs:{fit:"cover",src:v},class:Os("img-wrap"),on:{click:function(){u.$emit("sku:previewImage",p)}}},[null==(a=e["sku-header-image-extra"])?void 0:a.call(e)]),t("div",{class:Os("goods-info")},[null==e.default?void 0:e.default()])])}Cs.props={sku:Object,goods:Object,skuEventBus:Object,selectedSku:Object,showHeaderImage:Boolean};var js=Ss(Cs),Ts=Object(s.a)("sku-header-item"),As=Ts[0],zs=Ts[1];var Bs=As((function(t,n,e,i){return t("div",r()([{class:zs()},Object(c.b)(i)]),[e.default&&e.default()])})),Is=Object(s.a)("sku-row"),Es=Is[0],Ps=Is[1],Ls=Is[2],Ds=Es({mixins:[Object(mt.b)("vanSkuRows"),Object(ne.a)((function(t){this.scrollable&&this.$refs.scroller&&t(this.$refs.scroller,"scroll",this.onScroll)}))],props:{skuRow:Object},data:function(){return{progress:0}},computed:{scrollable:function(){return this.skuRow.largeImageMode&&this.skuRow.v.length>6}},methods:{onScroll:function(){var t=this.$refs,n=t.scroller,e=t.row.offsetWidth-n.offsetWidth;this.progress=n.scrollLeft/e},genTitle:function(){var t=this.$createElement;return t("div",{class:Ps("title")},[this.skuRow.k,this.skuRow.is_multiple&&t("span",{class:Ps("title-multiple")},["(",Ls("multiple"),")"])])},genIndicator:function(){var t=this.$createElement;if(this.scrollable){var n={transform:"translate3d("+20*this.progress+"px, 0, 0)"};return t("div",{class:Ps("indicator-wrapper")},[t("div",{class:Ps("indicator")},[t("div",{class:Ps("indicator-slider"),style:n})])])}},genContent:function(){var t=this.$createElement,n=this.slots();if(this.skuRow.largeImageMode){var e=[],i=[];return n.forEach((function(t,n){(Math.floor(n/3)%2==0?e:i).push(t)})),t("div",{class:Ps("scroller"),ref:"scroller"},[t("div",{class:Ps("row"),ref:"row"},[e]),i.length?t("div",{class:Ps("row")},[i]):null])}return n},centerItem:function(t){if(this.skuRow.largeImageMode&&t){var n=this.children,e=void 0===n?[]:n,i=this.$refs,o=i.scroller,r=i.row,a=e.find((function(n){return+n.skuValue.id==+t}));if(o&&r&&a&&a.$el){var s=a.$el,c=s.offsetLeft-(o.offsetWidth-s.offsetWidth)/2;o.scrollLeft=c}}}},render:function(){var t=arguments[0];return t("div",{class:[Ps(),O.b]},[this.genTitle(),this.genContent(),this.genIndicator()])}}),Ns=(0,Object(s.a)("sku-row-item")[0])({mixins:[Object(mt.a)("vanSkuRows")],props:{lazyLoad:Boolean,skuValue:Object,skuKeyStr:String,skuEventBus:Object,selectedSku:Object,largeImageMode:Boolean,disableSoldoutSku:Boolean,skuList:{type:Array,default:function(){return[]}}},computed:{imgUrl:function(){var t=this.skuValue.imgUrl||this.skuValue.img_url;return this.largeImageMode?t||"https://img01.yzcdn.cn/upload_files/2020/06/24/FmKWDg0bN9rMcTp9ne8MXiQWGtLn.png":t},choosable:function(){return!this.disableSoldoutSku||ys(this.skuList,this.selectedSku,{key:this.skuKeyStr,valueId:this.skuValue.id})}},methods:{onSelect:function(){this.choosable&&this.skuEventBus.$emit("sku:select",Object(i.a)({},this.skuValue,{skuKeyStr:this.skuKeyStr}))},onPreviewImg:function(t){t.stopPropagation();var n=this.skuValue,e=this.skuKeyStr;this.skuEventBus.$emit("sku:previewImage",Object(i.a)({},n,{ks:e,imgUrl:n.imgUrl||n.img_url}))},genImage:function(t){var n=this.$createElement;if(this.imgUrl)return n(Hn.a,{attrs:{fit:"cover",src:this.imgUrl,lazyLoad:this.lazyLoad},class:t+"-img"})}},render:function(){var t=arguments[0],n=this.skuValue.id===this.selectedSku[this.skuKeyStr],e=this.largeImageMode?Ps("image-item"):Ps("item");return t("span",{class:[e,n?e+"--active":"",this.choosable?"":e+"--disabled"],on:{click:this.onSelect}},[this.genImage(e),t("div",{class:e+"-name"},[this.largeImageMode?t("span",{class:{"van-multi-ellipsis--l2":this.largeImageMode}},[this.skuValue.name]):this.skuValue.name]),this.largeImageMode&&t(u.a,{attrs:{name:"enlarge"},class:e+"-img-icon",on:{click:this.onPreviewImg}})])}}),Ms=(0,Object(s.a)("sku-row-prop-item")[0])({props:{skuValue:Object,skuKeyStr:String,skuEventBus:Object,selectedProp:Object,multiple:Boolean,disabled:Boolean},computed:{choosed:function(){var t=this.selectedProp,n=this.skuKeyStr,e=this.skuValue;return!(!t||!t[n])&&t[n].indexOf(e.id)>-1}},methods:{onSelect:function(){this.disabled||this.skuEventBus.$emit("sku:propSelect",Object(i.a)({},this.skuValue,{skuKeyStr:this.skuKeyStr,multiple:this.multiple}))}},render:function(){var t=arguments[0];return t("span",{class:["van-sku-row__item",{"van-sku-row__item--active":this.choosed},{"van-sku-row__item--disabled":this.disabled}],on:{click:this.onSelect}},[t("span",{class:"van-sku-row__item-name"},[this.skuValue.name])])}}),Rs=Object(s.a)("stepper"),$s=Rs[0],Vs=Rs[1];function Fs(t,n){return String(t)===String(n)}var Hs=$s({mixins:[$t],props:{value:null,theme:String,integer:Boolean,disabled:Boolean,allowEmpty:Boolean,inputWidth:[Number,String],buttonSize:[Number,String],asyncChange:Boolean,placeholder:String,disablePlus:Boolean,disableMinus:Boolean,disableInput:Boolean,decimalLength:[Number,String],name:{type:[Number,String],default:""},min:{type:[Number,String],default:1},max:{type:[Number,String],default:1/0},step:{type:[Number,String],default:1},defaultValue:{type:[Number,String],default:1},showPlus:{type:Boolean,default:!0},showMinus:{type:Boolean,default:!0},showInput:{type:Boolean,default:!0},longPress:{type:Boolean,default:!0}},data:function(){var t,n=null!=(t=this.value)?t:this.defaultValue,e=this.format(n);return Fs(e,this.value)||this.$emit("input",e),{currentValue:e}},computed:{minusDisabled:function(){return this.disabled||this.disableMinus||this.currentValue<=+this.min},plusDisabled:function(){return this.disabled||this.disablePlus||this.currentValue>=+this.max},inputStyle:function(){var t={};return this.inputWidth&&(t.width=Object(C.a)(this.inputWidth)),this.buttonSize&&(t.height=Object(C.a)(this.buttonSize)),t},buttonStyle:function(){if(this.buttonSize){var t=Object(C.a)(this.buttonSize);return{width:t,height:t}}}},watch:{max:"check",min:"check",integer:"check",decimalLength:"check",value:function(t){Fs(t,this.currentValue)||(this.currentValue=this.format(t))},currentValue:function(t){this.$emit("input",t),this.$emit("change",t,{name:this.name})}},methods:{check:function(){var t=this.format(this.currentValue);Fs(t,this.currentValue)||(this.currentValue=t)},formatNumber:function(t){return Object(T.b)(String(t),!this.integer)},format:function(t){return this.allowEmpty&&""===t||(t=""===(t=this.formatNumber(t))?0:+t,t=Object(wn.a)(t)?this.min:t,t=Math.max(Math.min(this.max,t),this.min),Object(d.c)(this.decimalLength)&&(t=t.toFixed(this.decimalLength))),t},onInput:function(t){var n=t.target.value,e=this.formatNumber(n);if(Object(d.c)(this.decimalLength)&&-1!==e.indexOf(".")){var i=e.split(".");e=i[0]+"."+i[1].slice(0,this.decimalLength)}Fs(n,e)||(t.target.value=e),e===String(+e)&&(e=+e),this.emitChange(e)},emitChange:function(t){this.asyncChange?(this.$emit("input",t),this.$emit("change",t,{name:this.name})):this.currentValue=t},onChange:function(){var t=this.type;if(this[t+"Disabled"])this.$emit("overlimit",t);else{var n="minus"===t?-this.step:+this.step,e=this.format(Object(T.a)(+this.currentValue,n));this.emitChange(e),this.$emit(t)}},onFocus:function(t){this.disableInput&&this.$refs.input?this.$refs.input.blur():this.$emit("focus",t)},onBlur:function(t){var n=this.format(t.target.value);t.target.value=n,this.emitChange(n),this.$emit("blur",t),rt()},longPressStep:function(){var t=this;this.longPressTimer=setTimeout((function(){t.onChange(),t.longPressStep(t.type)}),200)},onTouchStart:function(){var t=this;this.longPress&&(clearTimeout(this.longPressTimer),this.isLongPress=!1,this.longPressTimer=setTimeout((function(){t.isLongPress=!0,t.onChange(),t.longPressStep()}),600))},onTouchEnd:function(t){this.longPress&&(clearTimeout(this.longPressTimer),this.isLongPress&&Object(S.c)(t))},onMousedown:function(t){this.disableInput&&t.preventDefault()}},render:function(){var t=this,n=arguments[0],e=function(n){return{on:{click:function(e){e.preventDefault(),t.type=n,t.onChange()},touchstart:function(){t.type=n,t.onTouchStart()},touchend:t.onTouchEnd,touchcancel:t.onTouchEnd}}};return n("div",{class:Vs([this.theme])},[n("button",r()([{directives:[{name:"show",value:this.showMinus}],attrs:{type:"button"},style:this.buttonStyle,class:Vs("minus",{disabled:this.minusDisabled})},e("minus")])),n("input",{directives:[{name:"show",value:this.showInput}],ref:"input",attrs:{type:this.integer?"tel":"text",role:"spinbutton",disabled:this.disabled,readonly:this.disableInput,inputmode:this.integer?"numeric":"decimal",placeholder:this.placeholder,"aria-valuemax":this.max,"aria-valuemin":this.min,"aria-valuenow":this.currentValue},class:Vs("input"),domProps:{value:this.currentValue},style:this.inputStyle,on:{input:this.onInput,focus:this.onFocus,blur:this.onBlur,mousedown:this.onMousedown}}),n("button",r()([{directives:[{name:"show",value:this.showPlus}],attrs:{type:"button"},style:this.buttonStyle,class:Vs("plus",{disabled:this.plusDisabled})},e("plus")]))])}}),qs=Object(s.a)("sku-stepper"),Ys=qs[0],Us=qs[2],Ws=ps.a.QUOTA_LIMIT,Ks=ps.a.STOCK_LIMIT,Xs=Ys({props:{stock:Number,skuEventBus:Object,skuStockNum:Number,selectedNum:Number,stepperTitle:String,disableStepperInput:Boolean,customStepperConfig:Object,hideQuotaText:Boolean,quota:{type:Number,default:0},quotaUsed:{type:Number,default:0},startSaleNum:{type:Number,default:1}},data:function(){return{currentNum:this.selectedNum,limitType:Ks}},watch:{currentNum:function(t){var n=parseInt(t,10);n>=this.stepperMinLimit&&n<=this.stepperLimit&&this.skuEventBus.$emit("sku:numChange",n)},stepperLimit:function(t){tthis.currentNum||t>this.stepperLimit)&&(this.currentNum=t),this.checkState(t,this.stepperLimit)}},computed:{stepperLimit:function(){var t,n=this.quota-this.quotaUsed;return this.quota>0&&n<=this.stock?(t=n<0?0:n,this.limitType=Ws):(t=this.stock,this.limitType=Ks),t},stepperMinLimit:function(){return this.startSaleNum<1?1:this.startSaleNum},quotaText:function(){var t=this.customStepperConfig,n=t.quotaText;if(t.hideQuotaText)return"";var e="";if(n)e=n;else{var i=[];this.startSaleNum>1&&i.push(Us("quotaStart",this.startSaleNum)),this.quota>0&&i.push(Us("quotaLimit",this.quota)),e=i.join(Us("comma"))}return e}},created:function(){this.checkState(this.stepperMinLimit,this.stepperLimit)},methods:{setCurrentNum:function(t){this.currentNum=t,this.checkState(this.stepperMinLimit,this.stepperLimit)},onOverLimit:function(t){this.skuEventBus.$emit("sku:overLimit",{action:t,limitType:this.limitType,quota:this.quota,quotaUsed:this.quotaUsed,startSaleNum:this.startSaleNum})},onChange:function(t){var n=parseInt(t,10),e=this.customStepperConfig.handleStepperChange;e&&e(n),this.$emit("change",n)},checkState:function(t,n){this.currentNumn?this.currentNum=t:this.currentNum>n&&(this.currentNum=n),this.skuEventBus.$emit("sku:stepperState",{valid:t<=n,min:t,max:n,limitType:this.limitType,quota:this.quota,quotaUsed:this.quotaUsed,startSaleNum:this.startSaleNum})}},render:function(){var t=this,n=arguments[0];return n("div",{class:"van-sku-stepper-stock"},[n("div",{class:"van-sku__stepper-title"},[this.stepperTitle||Us("num")]),n(Hs,{attrs:{integer:!0,min:this.stepperMinLimit,max:this.stepperLimit,disableInput:this.disableStepperInput},class:"van-sku__stepper",on:{overlimit:this.onOverLimit,change:this.onChange},model:{value:t.currentNum,callback:function(n){t.currentNum=n}}}),!this.hideQuotaText&&this.quotaText&&n("span",{class:"van-sku__stepper-quota"},["(",this.quotaText,")"])])}});function Js(t){return/^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$/.test(t.trim())}function Zs(t){return Array.isArray(t)?t:[t]}function Gs(t,n){return new Promise((function(e){if("file"!==n){var i=new FileReader;i.onload=function(t){e(t.target.result)},"dataUrl"===n?i.readAsDataURL(t):"text"===n&&i.readAsText(t)}else e(null)}))}function Qs(t,n){return Zs(t).some((function(t){return!!t&&(Object(d.e)(n)?n(t):t.size>n)}))}var tc=/\.(jpeg|jpg|gif|png|svg|webp|jfif|bmp|dpg)/i;function nc(t){return!!t.isImage||(t.file&&t.file.type?0===t.file.type.indexOf("image"):t.url?(n=t.url,tc.test(n)):!!t.content&&0===t.content.indexOf("data:image"));var n}var ec=Object(s.a)("uploader"),ic=ec[0],oc=ec[1],rc=ic({inheritAttrs:!1,mixins:[$t],model:{prop:"fileList"},props:{disabled:Boolean,readonly:Boolean,lazyLoad:Boolean,uploadText:String,afterRead:Function,beforeRead:Function,beforeDelete:Function,previewSize:[Number,String],previewOptions:Object,name:{type:[Number,String],default:""},accept:{type:String,default:"image/*"},fileList:{type:Array,default:function(){return[]}},maxSize:{type:[Number,String,Function],default:Number.MAX_VALUE},maxCount:{type:[Number,String],default:Number.MAX_VALUE},deletable:{type:Boolean,default:!0},showUpload:{type:Boolean,default:!0},previewImage:{type:Boolean,default:!0},previewFullImage:{type:Boolean,default:!0},imageFit:{type:String,default:"cover"},resultType:{type:String,default:"dataUrl"},uploadIcon:{type:String,default:"photograph"}},computed:{previewSizeWithUnit:function(){return Object(C.a)(this.previewSize)},value:function(){return this.fileList}},created:function(){this.urls=[]},beforeDestroy:function(){this.urls.forEach((function(t){return URL.revokeObjectURL(t)}))},methods:{getDetail:function(t){return void 0===t&&(t=this.fileList.length),{name:this.name,index:t}},onChange:function(t){var n=this,e=t.target.files;if(!this.disabled&&e.length){if(e=1===e.length?e[0]:[].slice.call(e),this.beforeRead){var i=this.beforeRead(e,this.getDetail());if(!i)return void this.resetInput();if(Object(d.g)(i))return void i.then((function(t){t?n.readFile(t):n.readFile(e)})).catch(this.resetInput)}this.readFile(e)}},readFile:function(t){var n=this,e=Qs(t,this.maxSize);if(Array.isArray(t)){var i=this.maxCount-this.fileList.length;t.length>i&&(t=t.slice(0,i)),Promise.all(t.map((function(t){return Gs(t,n.resultType)}))).then((function(i){var o=t.map((function(t,n){var e={file:t,status:"",message:""};return i[n]&&(e.content=i[n]),e}));n.onAfterRead(o,e)}))}else Gs(t,this.resultType).then((function(i){var o={file:t,status:"",message:""};i&&(o.content=i),n.onAfterRead(o,e)}))},onAfterRead:function(t,n){var e=this;this.resetInput();var i=t;if(n){var o=t;Array.isArray(t)?(o=[],i=[],t.forEach((function(t){t.file&&(Qs(t.file,e.maxSize)?o.push(t):i.push(t))}))):i=null,this.$emit("oversize",o,this.getDetail())}(Array.isArray(i)?Boolean(i.length):Boolean(i))&&(this.$emit("input",[].concat(this.fileList,Zs(i))),this.afterRead&&this.afterRead(i,this.getDetail()))},onDelete:function(t,n){var e,i=this,o=null!=(e=t.beforeDelete)?e:this.beforeDelete;if(o){var r=o(t,this.getDetail(n));if(!r)return;if(Object(d.g)(r))return void r.then((function(){i.deleteFile(t,n)})).catch(d.i)}this.deleteFile(t,n)},deleteFile:function(t,n){var e=this.fileList.slice(0);e.splice(n,1),this.$emit("input",e),this.$emit("delete",t,this.getDetail(n))},resetInput:function(){this.$refs.input&&(this.$refs.input.value="")},onClickUpload:function(t){this.$emit("click-upload",t)},onPreviewImage:function(t){var n=this;if(this.previewFullImage){var e=this.fileList.filter((function(t){return nc(t)})),o=e.map((function(t){return t.file&&!t.url&&"failed"!==t.status&&(t.url=URL.createObjectURL(t.file),n.urls.push(t.url)),t.url}));this.imagePreview=Object(Ro.a)(Object(i.a)({images:o,startPosition:e.indexOf(t),onClose:function(){n.$emit("close-preview")}},this.previewOptions))}},closeImagePreview:function(){this.imagePreview&&this.imagePreview.close()},chooseFile:function(){this.disabled||this.$refs.input&&this.$refs.input.click()},genPreviewMask:function(t){var n=this.$createElement,e=t.status,i=t.message;if("uploading"===e||"failed"===e){var o="failed"===e?n(u.a,{attrs:{name:"close"},class:oc("mask-icon")}):n(b.a,{class:oc("loading")}),r=Object(d.c)(i)&&""!==i;return n("div",{class:oc("mask")},[o,r&&n("div",{class:oc("mask-message")},[i])])}},genPreviewItem:function(t,n){var e,o,r,a=this,s=this.$createElement,c=null!=(e=t.deletable)?e:this.deletable,l="uploading"!==t.status&&c&&s("div",{class:oc("preview-delete"),on:{click:function(e){e.stopPropagation(),a.onDelete(t,n)}}},[s(u.a,{attrs:{name:"cross"},class:oc("preview-delete-icon")})]),d=this.slots("preview-cover",Object(i.a)({index:n},t)),f=d&&s("div",{class:oc("preview-cover")},[d]),h=null!=(o=t.previewSize)?o:this.previewSize,p=null!=(r=t.imageFit)?r:this.imageFit,v=nc(t)?s(Hn.a,{attrs:{fit:p,src:t.content||t.url,width:h,height:h,lazyLoad:this.lazyLoad},class:oc("preview-image"),on:{click:function(){a.onPreviewImage(t)}}},[f]):s("div",{class:oc("file"),style:{width:this.previewSizeWithUnit,height:this.previewSizeWithUnit}},[s(u.a,{class:oc("file-icon"),attrs:{name:"description"}}),s("div",{class:[oc("file-name"),"van-ellipsis"]},[t.file?t.file.name:t.url]),f]);return s("div",{class:oc("preview"),on:{click:function(){a.$emit("click-preview",t,a.getDetail(n))}}},[v,this.genPreviewMask(t),l])},genPreviewList:function(){if(this.previewImage)return this.fileList.map(this.genPreviewItem)},genUpload:function(){var t=this.$createElement;if(!(this.fileList.length>=this.maxCount)){var n,e=this.slots(),o=this.readonly?null:t("input",{attrs:Object(i.a)({},this.$attrs,{type:"file",accept:this.accept,disabled:this.disabled}),ref:"input",class:oc("input"),on:{change:this.onChange}});if(e)return t("div",{class:oc("input-wrapper"),key:"input-wrapper",on:{click:this.onClickUpload}},[e,o]);if(this.previewSize){var r=this.previewSizeWithUnit;n={width:r,height:r}}return t("div",{directives:[{name:"show",value:this.showUpload}],class:oc("upload",{readonly:this.readonly}),style:n,on:{click:this.onClickUpload}},[t(u.a,{attrs:{name:this.uploadIcon},class:oc("upload-icon")}),this.uploadText&&t("span",{class:oc("upload-text")},[this.uploadText]),o])}}},render:function(){var t=arguments[0];return t("div",{class:oc()},[t("div",{class:oc("wrapper",{disabled:this.disabled})},[this.genPreviewList(),this.genUpload()])])}}),ac=Object(s.a)("sku-img-uploader"),sc=ac[0],cc=ac[2],lc=sc({props:{value:String,uploadImg:Function,customUpload:Function,maxSize:{type:Number,default:6}},data:function(){return{fileList:[]}},watch:{value:function(t){this.fileList=t?[{url:t,isImage:!0}]:[]}},methods:{afterReadFile:function(t){var n=this;t.status="uploading",t.message=cc("uploading"),this.uploadImg(t.file,t.content).then((function(e){t.status="done",n.$emit("input",e)})).catch((function(){t.status="failed",t.message=cc("fail")}))},onOversize:function(){this.$toast(cc("oversize",this.maxSize))},onDelete:function(){this.$emit("input","")},onClickUpload:function(){var t=this;this.customUpload&&this.customUpload().then((function(n){t.fileList.push({url:n}),t.$emit("input",n)}))}},render:function(){var t=this,n=arguments[0];return n(rc,{attrs:{maxCount:1,readonly:!!this.customUpload,maxSize:1024*this.maxSize*1024,afterRead:this.afterReadFile},on:{oversize:this.onOversize,delete:this.onDelete,"click-upload":this.onClickUpload},model:{value:t.fileList,callback:function(n){t.fileList=n}}})}});var uc=Object(s.a)("sku-datetime-field"),dc=uc[0],fc=uc[2],hc=dc({props:{value:String,label:String,required:Boolean,placeholder:String,type:{type:String,default:"date"}},data:function(){return{showDatePicker:!1,currentDate:"time"===this.type?"":new Date,minDate:new Date((new Date).getFullYear()-60,0,1)}},watch:{value:function(t){switch(this.type){case"time":this.currentDate=t;break;case"date":case"datetime":this.currentDate=((n=t)?new Date(n.replace(/-/g,"/")):null)||new Date}var n}},computed:{title:function(){return fc("title."+this.type)}},methods:{onClick:function(){this.showDatePicker=!0},onConfirm:function(t){var n=t;"time"!==this.type&&(n=function(t,n){if(void 0===n&&(n="date"),!t)return"";var e=t.getFullYear(),i=t.getMonth()+1,o=t.getDate(),r=e+"-"+Object(gi.b)(i)+"-"+Object(gi.b)(o);if("datetime"===n){var a=t.getHours(),s=t.getMinutes();r+=" "+Object(gi.b)(a)+":"+Object(gi.b)(s)}return r}(t,this.type)),this.$emit("input",n),this.showDatePicker=!1},onCancel:function(){this.showDatePicker=!1},formatter:function(t,n){return""+n+fc("format."+t)}},render:function(){var t=this,n=arguments[0];return n(lt,{attrs:{readonly:!0,"is-link":!0,center:!0,value:this.value,label:this.label,required:this.required,placeholder:this.placeholder},on:{click:this.onClick}},[n(v,{attrs:{round:!0,position:"bottom",getContainer:"body"},slot:"extra",model:{value:t.showDatePicker,callback:function(n){t.showDatePicker=n}}},[n(Gi,{attrs:{type:this.type,title:this.title,value:this.currentDate,minDate:this.minDate,formatter:this.formatter},on:{cancel:this.onCancel,confirm:this.onConfirm}})])])}}),pc=Object(s.a)("sku-messages"),vc=pc[0],bc=pc[1],mc=pc[2],gc=vc({props:{messageConfig:Object,goodsId:[Number,String],messages:{type:Array,default:function(){return[]}}},data:function(){return{messageValues:this.resetMessageValues(this.messages)}},watch:{messages:function(t){this.messageValues=this.resetMessageValues(t)}},methods:{resetMessageValues:function(t){var n=this.messageConfig.initialMessages,e=void 0===n?{}:n;return(t||[]).map((function(t){return{value:e[t.name]||""}}))},getType:function(t){return 1==+t.multiple?"textarea":"id_no"===t.type?"text":t.datetime>0?"datetime":t.type},getMessages:function(){var t={};return this.messageValues.forEach((function(n,e){t["message_"+e]=n.value})),t},getCartMessages:function(){var t=this,n={};return this.messageValues.forEach((function(e,i){var o=t.messages[i];n[o.name]=e.value})),n},getPlaceholder:function(t){var n=1==+t.multiple?"textarea":t.type,e=this.messageConfig.placeholderMap||{};return t.placeholder||e[n]||mc("placeholder."+n)},validateMessages:function(){for(var t=this.messageValues,n=0;n18))return mc("invalid.id_no")}}},getFormatter:function(t){return function(n){return"mobile"===t.type||"tel"===t.type?n.replace(/[^\d.]/g,""):n}},getExtraDesc:function(t){var n=this.$createElement,e=t.extraDesc;if(e)return n("div",{class:bc("extra-message")},[e])},genMessage:function(t,n){var e=this,i=this.$createElement;return"image"===t.type?i(et,{key:this.goodsId+"-"+n,attrs:{title:t.name,required:"1"===String(t.required),valueClass:bc("image-cell-value")},class:bc("image-cell")},[i(lc,{attrs:{maxSize:this.messageConfig.uploadMaxSize,uploadImg:this.messageConfig.uploadImg,customUpload:this.messageConfig.customUpload},model:{value:e.messageValues[n].value,callback:function(t){e.$set(e.messageValues[n],"value",t)}}}),i("div",{class:bc("image-cell-label")},[mc("imageLabel")])]):["date","time"].indexOf(t.type)>-1?i(hc,{attrs:{label:t.name,required:"1"===String(t.required),placeholder:this.getPlaceholder(t),type:this.getType(t)},key:this.goodsId+"-"+n,model:{value:e.messageValues[n].value,callback:function(t){e.$set(e.messageValues[n],"value",t)}}}):i("div",{class:bc("cell-block")},[i(lt,{attrs:{maxlength:"200",center:!t.multiple,label:t.name,required:"1"===String(t.required),placeholder:this.getPlaceholder(t),type:this.getType(t),formatter:this.getFormatter(t),border:!1},key:this.goodsId+"-"+n,model:{value:e.messageValues[n].value,callback:function(t){e.$set(e.messageValues[n],"value",t)}}}),this.getExtraDesc(t)])}},render:function(){var t=arguments[0];return t("div",{class:bc()},[this.messages.map(this.genMessage)])}}),yc=Object(s.a)("sku-actions"),xc=yc[0],wc=yc[1],kc=yc[2];function _c(t,n,e,i){var o=function(t){return function(){n.skuEventBus.$emit(t)}};return t("div",r()([{class:wc()},Object(c.b)(i)]),[n.showAddCartBtn&&t(bt,{attrs:{size:"large",type:"warning",text:n.addCartText||kc("addCart")},on:{click:o("sku:addCart")}}),t(bt,{attrs:{size:"large",type:"danger",text:n.buyText||kc("buy")},on:{click:o("sku:buy")}})])}_c.props={buyText:String,addCartText:String,skuEventBus:Object,showAddCartBtn:Boolean};var Sc=xc(_c),Oc=Object(s.a)("sku"),Cc=Oc[0],jc=Oc[1],Tc=Oc[2],Ac=ps.a.QUOTA_LIMIT,zc=Cc({props:{sku:Object,goods:Object,value:Boolean,buyText:String,goodsId:[Number,String],priceTag:String,lazyLoad:Boolean,hideStock:Boolean,properties:Array,addCartText:String,stepperTitle:String,getContainer:[String,Function],hideQuotaText:Boolean,hideSelectedText:Boolean,resetStepperOnHide:Boolean,customSkuValidator:Function,disableStepperInput:Boolean,resetSelectedSkuOnHide:Boolean,quota:{type:Number,default:0},quotaUsed:{type:Number,default:0},startSaleNum:{type:Number,default:1},initialSku:{type:Object,default:function(){return{}}},stockThreshold:{type:Number,default:50},showSoldoutSku:{type:Boolean,default:!0},showAddCartBtn:{type:Boolean,default:!0},disableSoldoutSku:{type:Boolean,default:!0},customStepperConfig:{type:Object,default:function(){return{}}},showHeaderImage:{type:Boolean,default:!0},previewOnClickImage:{type:Boolean,default:!0},safeAreaInsetBottom:{type:Boolean,default:!0},closeOnClickOverlay:{type:Boolean,default:!0},bodyOffsetTop:{type:Number,default:200},messageConfig:{type:Object,default:function(){return{initialMessages:{},placeholderMap:{},uploadImg:function(){return Promise.resolve()},uploadMaxSize:5}}}},data:function(){return{selectedSku:{},selectedProp:{},selectedNum:1,show:this.value}},watch:{show:function(t){this.$emit("input",t),t||(this.$emit("sku-close",{selectedSkuValues:this.selectedSkuValues,selectedNum:this.selectedNum,selectedSkuComb:this.selectedSkuComb}),this.resetStepperOnHide&&this.resetStepper(),this.resetSelectedSkuOnHide&&this.resetSelectedSku())},value:function(t){this.show=t},skuTree:"resetSelectedSku",initialSku:function(){this.resetStepper(),this.resetSelectedSku()}},computed:{skuGroupClass:function(){return["van-sku-group-container",{"van-sku-group-container--hide-soldout":!this.showSoldoutSku}]},bodyStyle:function(){if(!this.$isServer)return{maxHeight:window.innerHeight-this.bodyOffsetTop+"px"}},isSkuCombSelected:function(){var t=this;return!(this.hasSku&&!bs(this.skuTree,this.selectedSku))&&!this.propList.filter((function(t){return!1!==t.is_necessary})).some((function(n){return 0===(t.selectedProp[n.k_id]||[]).length}))},isSkuEmpty:function(){return 0===Object.keys(this.sku).length},hasSku:function(){return!this.sku.none_sku},hasSkuOrAttr:function(){return this.hasSku||this.propList.length>0},selectedSkuComb:function(){var t=null;return this.isSkuCombSelected&&(t=this.hasSku?ms(this.skuList,this.selectedSku):{id:this.sku.collection_id,price:Math.round(100*this.sku.price),stock_num:this.sku.stock_num})&&(t.properties=ws(this.propList,this.selectedProp),t.property_price=this.selectedPropValues.reduce((function(t,n){return t+(n.price||0)}),0)),t},selectedSkuValues:function(){return gs(this.skuTree,this.selectedSku)},selectedPropValues:function(){return xs(this.propList,this.selectedProp)},price:function(){return this.selectedSkuComb?((this.selectedSkuComb.price+this.selectedSkuComb.property_price)/100).toFixed(2):this.sku.price},originPrice:function(){return this.selectedSkuComb&&this.selectedSkuComb.origin_price?((this.selectedSkuComb.origin_price+this.selectedSkuComb.property_price)/100).toFixed(2):this.sku.origin_price},skuTree:function(){return this.sku.tree||[]},skuList:function(){return this.sku.list||[]},propList:function(){return this.properties||[]},imageList:function(){var t=[this.goods.picture];return this.skuTree.length>0&&this.skuTree.forEach((function(n){n.v&&n.v.forEach((function(n){var e=n.previewImgUrl||n.imgUrl||n.img_url;e&&-1===t.indexOf(e)&&t.push(e)}))})),t},stock:function(){var t=this.customStepperConfig.stockNum;return void 0!==t?t:this.selectedSkuComb?this.selectedSkuComb.stock_num:this.sku.stock_num},stockText:function(){var t=this.$createElement,n=this.customStepperConfig.stockFormatter;return n?n(this.stock):[Tc("stock")+" ",t("span",{class:jc("stock-num",{highlight:this.stock0&&this.$nextTick((function(){t.$emit("sku-selected",{skuValue:n[n.length-1],selectedSku:t.selectedSku,selectedSkuComb:t.selectedSkuComb})})),this.selectedProp={};var e=this.initialSku.selectedProp,i=void 0===e?{}:e;this.propList.forEach((function(n){i[n.k_id]&&(t.selectedProp[n.k_id]=i[n.k_id])})),Object(d.d)(this.selectedProp)&&this.propList.forEach((function(n){var e;if((null==n||null==(e=n.v)?void 0:e.length)>0){var i=n.v,o=n.k_id;if(!i.some((function(t){return 0!=+t.price}))){var r=i.find((function(t){return 0!==t.text_status}));r&&(t.selectedProp[o]=[r.id])}}}));var o=this.selectedPropValues;o.length>0&&this.$emit("sku-prop-selected",{propValue:o[o.length-1],selectedProp:this.selectedProp,selectedSkuComb:this.selectedSkuComb}),this.$emit("sku-reset",{selectedSku:this.selectedSku,selectedProp:this.selectedProp,selectedSkuComb:this.selectedSkuComb}),this.centerInitialSku()},getSkuMessages:function(){return this.$refs.skuMessages?this.$refs.skuMessages.getMessages():{}},getSkuCartMessages:function(){return this.$refs.skuMessages?this.$refs.skuMessages.getCartMessages():{}},validateSkuMessages:function(){return this.$refs.skuMessages?this.$refs.skuMessages.validateMessages():""},validateSku:function(){if(0===this.selectedNum)return Tc("unavailable");if(this.isSkuCombSelected)return this.validateSkuMessages();if(this.customSkuValidator){var t=this.customSkuValidator(this);if(t)return t}return Tc("selectSku")},onSelect:function(t){var n,e;this.selectedSku=this.selectedSku[t.skuKeyStr]===t.id?Object(i.a)({},this.selectedSku,((n={})[t.skuKeyStr]=ps.b,n)):Object(i.a)({},this.selectedSku,((e={})[t.skuKeyStr]=t.id,e)),this.$emit("sku-selected",{skuValue:t,selectedSku:this.selectedSku,selectedSkuComb:this.selectedSkuComb})},onPropSelect:function(t){var n,e=this.selectedProp[t.skuKeyStr]||[],o=e.indexOf(t.id);o>-1?e.splice(o,1):t.multiple?e.push(t.id):e.splice(0,1,t.id),this.selectedProp=Object(i.a)({},this.selectedProp,((n={})[t.skuKeyStr]=e,n)),this.$emit("sku-prop-selected",{propValue:t,selectedProp:this.selectedProp,selectedSkuComb:this.selectedSkuComb})},onNumChange:function(t){this.selectedNum=t},onPreviewImage:function(t){var n=this,e=this.imageList,o=0,r=e[0];t&&t.imgUrl&&(this.imageList.some((function(n,e){return n===t.imgUrl&&(o=e,!0)})),r=t.imgUrl);var a=Object(i.a)({},t,{index:o,imageList:this.imageList,indexImage:r});this.$emit("open-preview",a),this.previewOnClickImage&&Object(Ro.a)({images:this.imageList,startPosition:o,onClose:function(){n.$emit("close-preview",a)}})},onOverLimit:function(t){var n=t.action,e=t.limitType,i=t.quota,o=t.quotaUsed,r=this.customStepperConfig.handleOverLimit;r?r(t):"minus"===n?this.startSaleNum>1?Object(ut.a)(Tc("minusStartTip",this.startSaleNum)):Object(ut.a)(Tc("minusTip")):"plus"===n&&(e===Ac?o>0?Object(ut.a)(Tc("quotaUsedTip",i,o)):Object(ut.a)(Tc("quotaTip",i)):Object(ut.a)(Tc("soldout")))},onStepperState:function(t){this.stepperError=t.valid?null:Object(i.a)({},t,{action:"plus"})},onAddCart:function(){this.onBuyOrAddCart("add-cart")},onBuy:function(){this.onBuyOrAddCart("buy-clicked")},onBuyOrAddCart:function(t){if(this.stepperError)return this.onOverLimit(this.stepperError);var n=this.validateSku();n?Object(ut.a)(n):this.$emit(t,this.getSkuData())},getSkuData:function(){return{goodsId:this.goodsId,messages:this.getSkuMessages(),selectedNum:this.selectedNum,cartMessages:this.getSkuCartMessages(),selectedSkuComb:this.selectedSkuComb}},onOpened:function(){this.centerInitialSku()},centerInitialSku:function(){var t=this;(this.$refs.skuRows||[]).forEach((function(n){var e=(n.skuRow||{}).k_s;n.centerItem(t.initialSku[e])}))}},render:function(){var t=this,n=arguments[0];if(!this.isSkuEmpty){var e=this.sku,i=this.skuList,o=this.goods,r=this.price,a=this.lazyLoad,s=this.originPrice,c=this.skuEventBus,l=this.selectedSku,u=this.selectedProp,d=this.selectedNum,f=this.stepperTitle,h=this.selectedSkuComb,p=this.showHeaderImage,b=this.disableSoldoutSku,m={price:r,originPrice:s,selectedNum:d,skuEventBus:c,selectedSku:l,selectedSkuComb:h},g=function(n){return t.slots(n,m)},y=g("sku-header")||n(js,{attrs:{sku:e,goods:o,skuEventBus:c,selectedSku:l,showHeaderImage:p}},[n("template",{slot:"sku-header-image-extra"},[g("sku-header-image-extra")]),g("sku-header-price")||n("div",{class:"van-sku__goods-price"},[n("span",{class:"van-sku__price-symbol"},["¥"]),n("span",{class:"van-sku__price-num"},[r]),this.priceTag&&n("span",{class:"van-sku__price-tag"},[this.priceTag])]),g("sku-header-origin-price")||s&&n(Bs,[Tc("originPrice")," ¥",s]),!this.hideStock&&n(Bs,[n("span",{class:"van-sku__stock"},[this.stockText])]),this.hasSkuOrAttr&&!this.hideSelectedText&&n(Bs,[this.selectedText]),g("sku-header-extra")]),x=g("sku-group")||this.hasSkuOrAttr&&n("div",{class:this.skuGroupClass},[this.skuTree.map((function(t){return n(Ds,{attrs:{skuRow:t},ref:"skuRows",refInFor:!0},[t.v.map((function(e){return n(Ns,{attrs:{skuList:i,lazyLoad:a,skuValue:e,skuKeyStr:t.k_s,selectedSku:l,skuEventBus:c,disableSoldoutSku:b,largeImageMode:t.largeImageMode}})}))])})),this.propList.map((function(t){return n(Ds,{attrs:{skuRow:t}},[t.v.map((function(e){return n(Ms,{attrs:{skuValue:e,skuKeyStr:t.k_id+"",selectedProp:u,skuEventBus:c,multiple:t.is_multiple,disabled:0===e.text_status}})}))])}))]),w=g("sku-stepper")||n(Xs,{ref:"skuStepper",attrs:{stock:this.stock,quota:this.quota,quotaUsed:this.quotaUsed,startSaleNum:this.startSaleNum,skuEventBus:c,selectedNum:d,stepperTitle:f,skuStockNum:e.stock_num,disableStepperInput:this.disableStepperInput,customStepperConfig:this.customStepperConfig,hideQuotaText:this.hideQuotaText},on:{change:function(n){t.$emit("stepper-change",n)}}}),k=g("sku-messages")||n(gc,{ref:"skuMessages",attrs:{goodsId:this.goodsId,messageConfig:this.messageConfig,messages:e.messages}}),_=g("sku-actions")||n(Sc,{attrs:{buyText:this.buyText,skuEventBus:c,addCartText:this.addCartText,showAddCartBtn:this.showAddCartBtn}});return n(v,{attrs:{round:!0,closeable:!0,position:"bottom",getContainer:this.getContainer,closeOnClickOverlay:this.closeOnClickOverlay,safeAreaInsetBottom:this.safeAreaInsetBottom},class:"van-sku-container",on:{opened:this.onOpened},model:{value:t.show,callback:function(n){t.show=n}}},[y,n("div",{class:"van-sku-body",style:this.bodyStyle},[g("sku-body-top"),x,g("extra-sku-group"),w,g("before-sku-messages"),k,g("after-sku-messages")]),g("sku-actions-top"),_])}}});Qo.a.add({"zh-CN":{vanSku:{select:"请选择",selected:"已选",selectSku:"请先选择商品规格",soldout:"库存不足",originPrice:"原价",minusTip:"至少选择一件",minusStartTip:function(t){return t+"件起售"},unavailable:"商品已经无法购买啦",stock:"剩余",stockUnit:"件",quotaTip:function(t){return"每人限购"+t+"件"},quotaUsedTip:function(t,n){return"每人限购"+t+"件,你已购买"+n+"件"}},vanSkuActions:{buy:"立即购买",addCart:"加入购物车"},vanSkuImgUploader:{oversize:function(t){return"最大可上传图片为"+t+"MB,请尝试压缩图片尺寸"},fail:"上传失败",uploading:"上传中..."},vanSkuStepper:{quotaLimit:function(t){return"限购"+t+"件"},quotaStart:function(t){return t+"件起售"},comma:",",num:"购买数量"},vanSkuMessages:{fill:"请填写",upload:"请上传",imageLabel:"仅限一张",invalid:{tel:"请填写正确的数字格式留言",mobile:"手机号长度为6-20位数字",email:"请填写正确的邮箱",id_no:"请填写正确的身份证号码"},placeholder:{id_no:"请填写身份证号",text:"请填写留言",tel:"请填写数字",email:"请填写邮箱",date:"请选择日期",time:"请选择时间",textarea:"请填写留言",mobile:"请填写手机号"}},vanSkuRow:{multiple:"可多选"},vanSkuDatetimeField:{title:{date:"选择年月日",time:"选择时间",datetime:"选择日期时间"},format:{year:"年",month:"月",day:"日",hour:"时",minute:"分"}}}}),zc.SkuActions=Sc,zc.SkuHeader=js,zc.SkuHeaderItem=Bs,zc.SkuMessages=gc,zc.SkuStepper=Xs,zc.SkuRow=Ds,zc.SkuRowItem=Ns,zc.SkuRowPropItem=Ms,zc.skuHelper=ks,zc.skuConstants=ps.c;var Bc=zc,Ic=Object(s.a)("slider"),Ec=Ic[0],Pc=Ic[1],Lc=function(t,n){return JSON.stringify(t)===JSON.stringify(n)},Dc=Ec({mixins:[A.a,$t],props:{disabled:Boolean,vertical:Boolean,range:Boolean,barHeight:[Number,String],buttonSize:[Number,String],activeColor:String,inactiveColor:String,min:{type:[Number,String],default:0},max:{type:[Number,String],default:100},step:{type:[Number,String],default:1},value:{type:[Number,Array],default:0}},data:function(){return{dragStatus:""}},computed:{scope:function(){return this.max-this.min},buttonStyle:function(){if(this.buttonSize){var t=Object(C.a)(this.buttonSize);return{width:t,height:t}}}},created:function(){this.updateValue(this.value)},mounted:function(){this.range?(this.bindTouchEvent(this.$refs.wrapper0),this.bindTouchEvent(this.$refs.wrapper1)):this.bindTouchEvent(this.$refs.wrapper)},methods:{onTouchStart:function(t){this.disabled||(this.touchStart(t),this.currentValue=this.value,this.range?this.startValue=this.value.map(this.format):this.startValue=this.format(this.value),this.dragStatus="start")},onTouchMove:function(t){if(!this.disabled){"start"===this.dragStatus&&this.$emit("drag-start"),Object(S.c)(t,!0),this.touchMove(t),this.dragStatus="draging";var n=this.$el.getBoundingClientRect(),e=(this.vertical?this.deltaY:this.deltaX)/(this.vertical?n.height:n.width)*this.scope;this.range?this.currentValue[this.index]=this.startValue[this.index]+e:this.currentValue=this.startValue+e,this.updateValue(this.currentValue)}},onTouchEnd:function(){this.disabled||("draging"===this.dragStatus&&(this.updateValue(this.currentValue,!0),this.$emit("drag-end")),this.dragStatus="")},onClick:function(t){if(t.stopPropagation(),!this.disabled){var n=this.$el.getBoundingClientRect(),e=this.vertical?t.clientY-n.top:t.clientX-n.left,i=this.vertical?n.height:n.width,o=+this.min+e/i*this.scope;if(this.range){var r=this.value,a=r[0],s=r[1];o<=(a+s)/2?a=o:s=o,o=[a,s]}this.startValue=this.value,this.updateValue(o,!0)}},handleOverlap:function(t){return t[0]>t[1]?(t=Object(j.a)(t)).reverse():t},updateValue:function(t,n){t=this.range?this.handleOverlap(t).map(this.format):this.format(t),Lc(t,this.value)||this.$emit("input",t),n&&!Lc(t,this.startValue)&&this.$emit("change",t)},format:function(t){var n=+this.min,e=+this.max,i=+this.step;t=Object(T.c)(t,n,e);var o=Math.round((t-n)/i)*i;return Object(T.a)(n,o)}},render:function(){var t,n,e=this,i=arguments[0],o=this.vertical,r=o?"height":"width",a=o?"width":"height",s=((t={background:this.inactiveColor})[a]=Object(C.a)(this.barHeight),t),c=function(){var t=e.value,n=e.min,i=e.range,o=e.scope;return i?100*(t[1]-t[0])/o+"%":100*(t-n)/o+"%"},l=function(){var t=e.value,n=e.min,i=e.range,o=e.scope;return i?100*(t[0]-n)/o+"%":null},u=((n={})[r]=c(),n.left=this.vertical?null:l(),n.top=this.vertical?l():null,n.background=this.activeColor,n);this.dragStatus&&(u.transition="none");var d=function(t){var n=["left","right"],o="number"==typeof t,r=o?e.value[t]:e.value;return i("div",{ref:o?"wrapper"+t:"wrapper",attrs:{role:"slider",tabindex:e.disabled?-1:0,"aria-valuemin":e.min,"aria-valuenow":e.value,"aria-valuemax":e.max,"aria-orientation":e.vertical?"vertical":"horizontal"},class:Pc(o?"button-wrapper-"+n[t]:"button-wrapper"),on:{touchstart:function(){o&&(e.index=t)},click:function(t){return t.stopPropagation()}}},[function(){if(o){var n=e.slots(0===t?"left-button":"right-button",{value:r});if(n)return n}return e.slots("button")?e.slots("button"):i("div",{class:Pc("button"),style:e.buttonStyle})}()])};return i("div",{style:s,class:Pc({disabled:this.disabled,vertical:o}),on:{click:this.onClick}},[i("div",{class:Pc("bar"),style:u},[this.range?[d(0),d(1)]:d()])])}}),Nc=Object(s.a)("step"),Mc=Nc[0],Rc=Nc[1],$c=Mc({mixins:[Object(mt.a)("vanSteps")],computed:{status:function(){return this.index0?"left":"right"),this.dragging=!1,setTimeout((function(){t.lockClick=!1}),0))},toggle:function(t){var n=Math.abs(this.offset),e=this.opened?.85:.15,i=this.computedLeftWidth,o=this.computedRightWidth;o&&"right"===t&&n>o*e?this.open("right"):i&&"left"===t&&n>i*e?this.open("left"):this.close()},onClick:function(t){void 0===t&&(t="outside"),this.$emit("click",t),this.opened&&!this.lockClick&&(this.beforeClose?this.beforeClose({position:t,name:this.name,instance:this}):this.onClose?this.onClose(t,this,{name:this.name}):this.close(t))},getClickHandler:function(t,n){var e=this;return function(i){n&&i.stopPropagation(),e.onClick(t)}},genLeftPart:function(){var t=this.$createElement,n=this.slots("left");if(n)return t("div",{ref:"left",class:tl("left"),on:{click:this.getClickHandler("left",!0)}},[n])},genRightPart:function(){var t=this.$createElement,n=this.slots("right");if(n)return t("div",{ref:"right",class:tl("right"),on:{click:this.getClickHandler("right",!0)}},[n])}},render:function(){var t=arguments[0],n={transform:"translate3d("+this.offset+"px, 0, 0)",transitionDuration:this.dragging?"0s":".6s"};return t("div",{class:tl(),on:{click:this.getClickHandler("cell")}},[t("div",{class:tl("wrapper"),style:n},[this.genLeftPart(),this.slots(),this.genRightPart()])])}}),el=e(39),il=Object(s.a)("switch-cell"),ol=il[0],rl=il[1];function al(t,n,e,o){return t(et,r()([{attrs:{center:!0,size:n.cellSize,title:n.title,border:n.border},class:rl([n.cellSize])},Object(c.b)(o)]),[t(qt,{props:Object(i.a)({},n),on:Object(i.a)({},o.listeners)})])}al.props=Object(i.a)({},Rt,{title:String,cellSize:String,border:{type:Boolean,default:!0},size:{type:String,default:"24px"}});var sl=ol(al),cl=Object(s.a)("tabbar"),ll=cl[0],ul=cl[1],dl=ll({mixins:[Object(mt.b)("vanTabbar")],props:{route:Boolean,zIndex:[Number,String],placeholder:Boolean,activeColor:String,beforeChange:Function,inactiveColor:String,value:{type:[Number,String],default:0},border:{type:Boolean,default:!0},fixed:{type:Boolean,default:!0},safeAreaInsetBottom:{type:Boolean,default:null}},data:function(){return{height:null}},computed:{fit:function(){return null!==this.safeAreaInsetBottom?this.safeAreaInsetBottom:this.fixed}},watch:{value:"setActiveItem",children:"setActiveItem"},mounted:function(){var t=this;if(this.placeholder&&this.fixed){var n=function(){t.height=t.$refs.tabbar.getBoundingClientRect().height};n(),setTimeout(n,100)}},methods:{setActiveItem:function(){var t=this;this.children.forEach((function(n,e){n.nameMatched=n.name===t.value||e===t.value}))},triggerChange:function(t,n){var e=this;te({interceptor:this.beforeChange,args:[t],done:function(){e.$emit("input",t),e.$emit("change",t),n()}})},genTabbar:function(){var t;return(0,this.$createElement)("div",{ref:"tabbar",style:{zIndex:this.zIndex},class:[(t={},t[O.f]=this.border,t),ul({unfit:!this.fit,fixed:this.fixed})]},[this.slots()])}},render:function(){var t=arguments[0];return this.placeholder&&this.fixed?t("div",{class:ul("placeholder"),style:{height:this.height+"px"}},[this.genTabbar()]):this.genTabbar()}}),fl=Object(s.a)("tabbar-item"),hl=fl[0],pl=fl[1],vl=hl({mixins:[Object(mt.a)("vanTabbar")],props:Object(i.a)({},J,{dot:Boolean,icon:String,name:[Number,String],info:[Number,String],badge:[Number,String],iconPrefix:String}),data:function(){return{nameMatched:!1}},computed:{active:function(){if(this.parent.route&&"$route"in this){var t=this.to,n=this.$route,e=Object(d.f)(t)?t:{path:t};return!!n.matched.find((function(t){var n=""===t.path?"/":t.path,i=e.path===n,o=Object(d.c)(e.name)&&e.name===t.name;return i||o}))}return this.nameMatched}},methods:{onClick:function(t){var n=this;this.active||this.parent.triggerChange(this.name||this.index,(function(){K(n.$router,n)})),this.$emit("click",t)},genIcon:function(){var t=this.$createElement,n=this.slots("icon",{active:this.active});return n||(this.icon?t(u.a,{attrs:{name:this.icon,classPrefix:this.iconPrefix}}):void 0)}},render:function(){var t,n=arguments[0],e=this.active,i=this.parent[e?"activeColor":"inactiveColor"];return n("div",{class:pl({active:e}),style:{color:i},on:{click:this.onClick}},[n("div",{class:pl("icon")},[this.genIcon(),n(ee.a,{attrs:{dot:this.dot,info:null!=(t=this.badge)?t:this.info}})]),n("div",{class:pl("text")},[this.slots("default",{active:e})])])}}),bl=Object(s.a)("tree-select"),ml=bl[0],gl=bl[1];function yl(t,n,e,i){var o=n.items,a=n.height,s=n.activeId,l=n.selectedIcon,d=n.mainActiveIndex;var f=(o[+d]||{}).children||[],h=Array.isArray(s);function p(t){return h?-1!==s.indexOf(t):s===t}var v=o.map((function(n){var e;return t(cs,{attrs:{dot:n.dot,info:null!=(e=n.badge)?e:n.info,title:n.text,disabled:n.disabled},class:[gl("nav-item"),n.className]})}));return t("div",r()([{class:gl(),style:{height:Object(C.a)(a)}},Object(c.b)(i)]),[t(os,{class:gl("nav"),attrs:{activeKey:d},on:{change:function(t){Object(c.a)(i,"update:main-active-index",t),Object(c.a)(i,"click-nav",t),Object(c.a)(i,"navclick",t)}}},[v]),t("div",{class:gl("content")},[e.content?e.content():f.map((function(e){return t("div",{key:e.id,class:["van-ellipsis",gl("item",{active:p(e.id),disabled:e.disabled})],on:{click:function(){if(!e.disabled){var t=e.id;if(h){var o=(t=s.slice()).indexOf(e.id);-1!==o?t.splice(o,1):t.length1)for(var e=1;e1?e-1:0),s=1;s + * Released under the MIT License. + */ +t.exports=function(){"use strict";function t(t){t=t||{};var i=arguments.length,o=0;if(1===i)return t;for(;++o-1?t.splice(e,1):void 0}}function r(t,n){if("IMG"===t.tagName&&t.getAttribute("data-srcset")){var e=t.getAttribute("data-srcset"),i=[],o=t.parentNode.offsetWidth*n,r=void 0,a=void 0,s=void 0;(e=e.trim().split(",")).map((function(t){t=t.trim(),-1===(r=t.lastIndexOf(" "))?(a=t,s=999998):(a=t.substr(0,r),s=parseInt(t.substr(r+1,t.length-r-2),10)),i.push([s,a])})),i.sort((function(t,n){if(t[0]n[0])return 1;if(t[0]===n[0]){if(-1!==n[1].indexOf(".webp",n[1].length-5))return 1;if(-1!==t[1].indexOf(".webp",t[1].length-5))return-1}return 0}));for(var c="",l=void 0,u=i.length,d=0;d=o){c=l[1];break}return c}}function a(t,n){for(var e=void 0,i=0,o=t.length;i0&&void 0!==arguments[0]?arguments[0]:1;return m&&window.devicePixelRatio||t},_=function(){if(m){var t=!1;try{var n=Object.defineProperty({},"passive",{get:function(){t=!0}});window.addEventListener("test",null,n)}catch(t){}return t}}(),S={on:function(t,n,e){var i=arguments.length>3&&void 0!==arguments[3]&&arguments[3];_?t.addEventListener(n,e,{capture:i,passive:!0}):t.addEventListener(n,e,i)},off:function(t,n,e){var i=arguments.length>3&&void 0!==arguments[3]&&arguments[3];t.removeEventListener(n,e,i)}},O=function(t,n,e){var i=new Image;i.src=t.src,i.onload=function(){n({naturalHeight:i.naturalHeight,naturalWidth:i.naturalWidth,src:i.src})},i.onerror=function(t){e(t)}},C=function(t,n){return"undefined"!=typeof getComputedStyle?getComputedStyle(t,null).getPropertyValue(n):t.style[n]},j=function(t){return C(t,"overflow")+C(t,"overflow-y")+C(t,"overflow-x")},T={},A=function(){function t(n){var e=n.el,i=n.src,o=n.error,r=n.loading,a=n.bindType,s=n.$parent,c=n.options,l=n.elRenderer;u(this,t),this.el=e,this.src=i,this.error=o,this.loading=r,this.bindType=a,this.attempt=0,this.naturalHeight=0,this.naturalWidth=0,this.options=c,this.rect=null,this.$parent=s,this.elRenderer=l,this.performanceData={init:Date.now(),loadStart:0,loadEnd:0},this.filter(),this.initState(),this.render("loading",!1)}return d(t,[{key:"initState",value:function(){this.el.dataset.src=this.src,this.state={error:!1,loaded:!1,rendered:!1}}},{key:"record",value:function(t){this.performanceData[t]=Date.now()}},{key:"update",value:function(t){var n=t.src,e=t.loading,i=t.error,o=this.src;this.src=n,this.loading=e,this.error=i,this.filter(),o!==this.src&&(this.attempt=0,this.initState())}},{key:"getRect",value:function(){this.rect=this.el.getBoundingClientRect()}},{key:"checkInView",value:function(){return this.getRect(),this.rect.topthis.options.preLoadTop&&this.rect.left0}},{key:"filter",value:function(){var t=this;(function(t){if(!(t instanceof Object))return[];if(Object.keys)return Object.keys(t);var n=[];for(var e in t)t.hasOwnProperty(e)&&n.push(e);return n})(this.options.filter).map((function(n){t.options.filter[n](t,t.options)}))}},{key:"renderLoading",value:function(t){var n=this;O({src:this.loading},(function(e){n.render("loading",!1),t()}),(function(){t(),n.options.silent||console.warn("VueLazyload log: load failed with loading image("+n.loading+")")}))}},{key:"load",value:function(){var t=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:c;return this.attempt>this.options.attempt-1&&this.state.error?(this.options.silent||console.log("VueLazyload log: "+this.src+" tried too more than "+this.options.attempt+" times"),void n()):this.state.loaded||T[this.src]?(this.state.loaded=!0,n(),this.render("loaded",!0)):void this.renderLoading((function(){t.attempt++,t.record("loadStart"),O({src:t.src},(function(e){t.naturalHeight=e.naturalHeight,t.naturalWidth=e.naturalWidth,t.state.loaded=!0,t.state.error=!1,t.record("loadEnd"),t.render("loaded",!1),T[t.src]=1,n()}),(function(n){!t.options.silent&&console.error(n),t.state.error=!0,t.state.loaded=!1,t.render("error",!1)}))}))}},{key:"render",value:function(t,n){this.elRenderer(this,t,n)}},{key:"performance",value:function(){var t="loading",n=0;return this.state.loaded&&(t="loaded",n=(this.performanceData.loadEnd-this.performanceData.loadStart)/1e3),this.state.error&&(t="error"),{src:this.src,state:t,time:n}}},{key:"destroy",value:function(){this.el=null,this.src=null,this.error=null,this.loading=null,this.bindType=null,this.attempt=0}}]),t}(),z="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",B=["scroll","wheel","mousewheel","resize","animationend","transitionend","touchmove"],I={rootMargin:"0px",threshold:0},E=function(t){return function(){function n(t){var e=t.preLoad,i=t.error,o=t.throttleWait,r=t.preLoadTop,a=t.dispatchEvent,c=t.loading,l=t.attempt,d=t.silent,f=void 0===d||d,h=t.scale,p=t.listenEvents,v=(t.hasbind,t.filter),b=t.adapter,m=t.observer,g=t.observerOptions;u(this,n),this.version="1.2.3",this.mode=y,this.ListenerQueue=[],this.TargetIndex=0,this.TargetQueue=[],this.options={silent:f,dispatchEvent:!!a,throttleWait:o||200,preLoad:e||1.3,preLoadTop:r||0,error:i||z,loading:c||z,attempt:l||3,scale:h||k(h),ListenEvents:p||B,hasbind:!1,supportWebp:s(),filter:v||{},adapter:b||{},observer:!!m,observerOptions:g||I},this._initEvent(),this.lazyLoadHandler=function(t,n){var e=null,i=0;return function(){if(!e){var o=Date.now()-i,r=this,a=arguments,s=function(){i=Date.now(),e=!1,t.apply(r,a)};o>=n?s():e=setTimeout(s,n)}}}(this._lazyLoadHandler.bind(this),this.options.throttleWait),this.setMode(this.options.observer?x:y)}return d(n,[{key:"config",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};b(this.options,t)}},{key:"performance",value:function(){var t=[];return this.ListenerQueue.map((function(n){t.push(n.performance())})),t}},{key:"addLazyBox",value:function(t){this.ListenerQueue.push(t),m&&(this._addListenerTarget(window),this._observer&&this._observer.observe(t.el),t.$el&&t.$el.parentNode&&this._addListenerTarget(t.$el.parentNode))}},{key:"add",value:function(n,e,i){var o=this;if(function(t,n){for(var e=!1,i=0,o=t.length;i0&&this.rect.left0},load:function(){this.show=!0,this.state.loaded=!0,this.$emit("show",this)}}}},L=function(){function t(n){var e=n.lazy;u(this,t),this.lazy=e,e.lazyContainerMananger=this,this._queue=[]}return d(t,[{key:"bind",value:function(t,n,e){var i=new N({el:t,binding:n,vnode:e,lazy:this.lazy});this._queue.push(i)}},{key:"update",value:function(t,n,e){var i=a(this._queue,(function(n){return n.el===t}));i&&i.update({el:t,binding:n,vnode:e})}},{key:"unbind",value:function(t,n,e){var i=a(this._queue,(function(n){return n.el===t}));i&&(i.clear(),o(this._queue,i))}}]),t}(),D={selector:"img"},N=function(){function t(n){var e=n.el,i=n.binding,o=n.vnode,r=n.lazy;u(this,t),this.el=null,this.vnode=o,this.binding=i,this.options={},this.lazy=r,this._queue=[],this.update({el:e,binding:i})}return d(t,[{key:"update",value:function(t){var n=this,e=t.el,i=t.binding;this.el=e,this.options=b({},D,i.value),this.getImgs().forEach((function(t){n.lazy.add(t,b({},n.binding,{value:{src:t.dataset.src,error:t.dataset.error,loading:t.dataset.loading}}),n.vnode)}))}},{key:"getImgs",value:function(){return function(t){for(var n=t.length,e=[],i=0;i1&&void 0!==arguments[1]?arguments[1]:{},e=E(t),i=new e(n),o=new L({lazy:i}),r="2"===t.version.split(".")[0];t.prototype.$Lazyload=i,n.lazyComponent&&t.component("lazy-component",P(i)),r?(t.directive("lazy",{bind:i.add.bind(i),update:i.update.bind(i),componentUpdated:i.lazyLoadHandler.bind(i),unbind:i.remove.bind(i)}),t.directive("lazy-container",{bind:o.bind.bind(o),update:o.update.bind(o),unbind:o.unbind.bind(o)})):(t.directive("lazy",{bind:i.lazyLoadHandler.bind(i),update:function(t,n){b(this.vm.$refs,this.vm.$els),i.add(this.el,{modifiers:this.modifiers||{},arg:this.arg,value:t,oldValue:n},{context:this.vm})},unbind:function(){i.remove(this.el)}}),t.directive("lazy-container",{update:function(t,n){o.update(this.el,{modifiers:this.modifiers||{},arg:this.arg,value:t,oldValue:n},{context:this.vm})},unbind:function(){o.unbind(this.el)}}))}}}()},,,,,,,,,,,,,,,,function(t,n,e){(function(t){var i=void 0!==t&&t||"undefined"!=typeof self&&self||window,o=Function.prototype.apply;function r(t,n){this._id=t,this._clearFn=n}n.setTimeout=function(){return new r(o.call(setTimeout,i,arguments),clearTimeout)},n.setInterval=function(){return new r(o.call(setInterval,i,arguments),clearInterval)},n.clearTimeout=n.clearInterval=function(t){t&&t.close()},r.prototype.unref=r.prototype.ref=function(){},r.prototype.close=function(){this._clearFn.call(i,this._id)},n.enroll=function(t,n){clearTimeout(t._idleTimeoutId),t._idleTimeout=n},n.unenroll=function(t){clearTimeout(t._idleTimeoutId),t._idleTimeout=-1},n._unrefActive=n.active=function(t){clearTimeout(t._idleTimeoutId);var n=t._idleTimeout;n>=0&&(t._idleTimeoutId=setTimeout((function(){t._onTimeout&&t._onTimeout()}),n))},e(132),n.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==t&&t.setImmediate||this&&this.setImmediate,n.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==t&&t.clearImmediate||this&&this.clearImmediate}).call(this,e(40))},function(t,n,e){(function(t,n){!function(t,e){"use strict";if(!t.setImmediate){var i,o,r,a,s,c=1,l={},u=!1,d=t.document,f=Object.getPrototypeOf&&Object.getPrototypeOf(t);f=f&&f.setTimeout?f:t,"[object process]"==={}.toString.call(t.process)?i=function(t){n.nextTick((function(){p(t)}))}:!function(){if(t.postMessage&&!t.importScripts){var n=!0,e=t.onmessage;return t.onmessage=function(){n=!1},t.postMessage("","*"),t.onmessage=e,n}}()?t.MessageChannel?((r=new MessageChannel).port1.onmessage=function(t){p(t.data)},i=function(t){r.port2.postMessage(t)}):d&&"onreadystatechange"in d.createElement("script")?(o=d.documentElement,i=function(t){var n=d.createElement("script");n.onreadystatechange=function(){p(t),n.onreadystatechange=null,o.removeChild(n),n=null},o.appendChild(n)}):i=function(t){setTimeout(p,0,t)}:(a="setImmediate$"+Math.random()+"$",s=function(n){n.source===t&&"string"==typeof n.data&&0===n.data.indexOf(a)&&p(+n.data.slice(a.length))},t.addEventListener?t.addEventListener("message",s,!1):t.attachEvent("onmessage",s),i=function(n){t.postMessage(a+n,"*")}),f.setImmediate=function(t){"function"!=typeof t&&(t=new Function(""+t));for(var n=new Array(arguments.length-1),e=0;e